summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/rsc/letsencrypt/vendor/golang.org
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/rsc/letsencrypt/vendor/golang.org')
-rw-r--r--vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/crypto/.gitattributes10
-rw-r--r--vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/crypto/.gitignore2
-rw-r--r--vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/crypto/AUTHORS3
-rw-r--r--vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/crypto/CONTRIBUTING.md31
-rw-r--r--vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/crypto/CONTRIBUTORS3
-rw-r--r--vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/crypto/LICENSE27
-rw-r--r--vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/crypto/PATENTS22
-rw-r--r--vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/crypto/README3
-rw-r--r--vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/crypto/codereview.cfg1
-rw-r--r--vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/crypto/ocsp/ocsp.go778
-rw-r--r--vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/crypto/ocsp/ocsp_test.go875
-rw-r--r--vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/.gitattributes10
-rw-r--r--vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/.gitignore2
-rw-r--r--vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/AUTHORS3
-rw-r--r--vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/CONTRIBUTING.md31
-rw-r--r--vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/CONTRIBUTORS3
-rw-r--r--vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/LICENSE27
-rw-r--r--vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/PATENTS22
-rw-r--r--vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/README3
-rw-r--r--vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/codereview.cfg1
-rw-r--r--vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/context/context.go156
-rw-r--r--vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/context/context_test.go583
-rw-r--r--vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/context/go17.go72
-rw-r--r--vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/context/pre_go17.go300
-rw-r--r--vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/context/withtimeout_test.go26
-rw-r--r--vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/publicsuffix/gen.go713
-rw-r--r--vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/publicsuffix/list.go135
-rw-r--r--vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/publicsuffix/list_test.go416
-rw-r--r--vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/publicsuffix/table.go9253
-rw-r--r--vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/publicsuffix/table_test.go16474
-rw-r--r--vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/time/AUTHORS3
-rw-r--r--vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/time/CONTRIBUTING.md31
-rw-r--r--vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/time/CONTRIBUTORS3
-rw-r--r--vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/time/LICENSE27
-rw-r--r--vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/time/PATENTS22
-rw-r--r--vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/time/README1
-rw-r--r--vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/time/rate/rate.go380
-rw-r--r--vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/time/rate/rate_go16.go21
-rw-r--r--vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/time/rate/rate_go17.go21
-rw-r--r--vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/time/rate/rate_test.go449
40 files changed, 30943 insertions, 0 deletions
diff --git a/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/crypto/.gitattributes b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/crypto/.gitattributes
new file mode 100644
index 000000000..d2f212e5d
--- /dev/null
+++ b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/crypto/.gitattributes
@@ -0,0 +1,10 @@
+# Treat all files in this repo as binary, with no git magic updating
+# line endings. Windows users contributing to Go will need to use a
+# modern version of git and editors capable of LF line endings.
+#
+# We'll prevent accidental CRLF line endings from entering the repo
+# via the git-review gofmt checks.
+#
+# See golang.org/issue/9281
+
+* -text
diff --git a/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/crypto/.gitignore b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/crypto/.gitignore
new file mode 100644
index 000000000..8339fd61d
--- /dev/null
+++ b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/crypto/.gitignore
@@ -0,0 +1,2 @@
+# Add no patterns to .hgignore except for files generated by the build.
+last-change
diff --git a/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/crypto/AUTHORS b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/crypto/AUTHORS
new file mode 100644
index 000000000..15167cd74
--- /dev/null
+++ b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/crypto/AUTHORS
@@ -0,0 +1,3 @@
+# This source code refers to The Go Authors for copyright purposes.
+# The master list of authors is in the main Go distribution,
+# visible at http://tip.golang.org/AUTHORS.
diff --git a/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/crypto/CONTRIBUTING.md b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/crypto/CONTRIBUTING.md
new file mode 100644
index 000000000..88dff59bc
--- /dev/null
+++ b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/crypto/CONTRIBUTING.md
@@ -0,0 +1,31 @@
+# Contributing to Go
+
+Go is an open source project.
+
+It is the work of hundreds of contributors. We appreciate your help!
+
+
+## Filing issues
+
+When [filing an issue](https://golang.org/issue/new), make sure to answer these five questions:
+
+1. What version of Go are you using (`go version`)?
+2. What operating system and processor architecture are you using?
+3. What did you do?
+4. What did you expect to see?
+5. What did you see instead?
+
+General questions should go to the [golang-nuts mailing list](https://groups.google.com/group/golang-nuts) instead of the issue tracker.
+The gophers there will answer or ask you to file an issue if you've tripped over a bug.
+
+## Contributing code
+
+Please read the [Contribution Guidelines](https://golang.org/doc/contribute.html)
+before sending patches.
+
+**We do not accept GitHub pull requests**
+(we use [Gerrit](https://code.google.com/p/gerrit/) instead for code review).
+
+Unless otherwise noted, the Go source files are distributed under
+the BSD-style license found in the LICENSE file.
+
diff --git a/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/crypto/CONTRIBUTORS b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/crypto/CONTRIBUTORS
new file mode 100644
index 000000000..1c4577e96
--- /dev/null
+++ b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/crypto/CONTRIBUTORS
@@ -0,0 +1,3 @@
+# This source code was written by the Go contributors.
+# The master list of contributors is in the main Go distribution,
+# visible at http://tip.golang.org/CONTRIBUTORS.
diff --git a/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/crypto/LICENSE b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/crypto/LICENSE
new file mode 100644
index 000000000..6a66aea5e
--- /dev/null
+++ b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/crypto/LICENSE
@@ -0,0 +1,27 @@
+Copyright (c) 2009 The Go Authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+ * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/crypto/PATENTS b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/crypto/PATENTS
new file mode 100644
index 000000000..733099041
--- /dev/null
+++ b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/crypto/PATENTS
@@ -0,0 +1,22 @@
+Additional IP Rights Grant (Patents)
+
+"This implementation" means the copyrightable works distributed by
+Google as part of the Go project.
+
+Google hereby grants to You a perpetual, worldwide, non-exclusive,
+no-charge, royalty-free, irrevocable (except as stated in this section)
+patent license to make, have made, use, offer to sell, sell, import,
+transfer and otherwise run, modify and propagate the contents of this
+implementation of Go, where such license applies only to those patent
+claims, both currently owned or controlled by Google and acquired in
+the future, licensable by Google that are necessarily infringed by this
+implementation of Go. This grant does not include claims that would be
+infringed only as a consequence of further modification of this
+implementation. If you or your agent or exclusive licensee institute or
+order or agree to the institution of patent litigation against any
+entity (including a cross-claim or counterclaim in a lawsuit) alleging
+that this implementation of Go or any code incorporated within this
+implementation of Go constitutes direct or contributory patent
+infringement, or inducement of patent infringement, then any patent
+rights granted to you under this License for this implementation of Go
+shall terminate as of the date such litigation is filed.
diff --git a/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/crypto/README b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/crypto/README
new file mode 100644
index 000000000..f1e0cbf94
--- /dev/null
+++ b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/crypto/README
@@ -0,0 +1,3 @@
+This repository holds supplementary Go cryptography libraries.
+
+To submit changes to this repository, see http://golang.org/doc/contribute.html.
diff --git a/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/crypto/codereview.cfg b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/crypto/codereview.cfg
new file mode 100644
index 000000000..3f8b14b64
--- /dev/null
+++ b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/crypto/codereview.cfg
@@ -0,0 +1 @@
+issuerepo: golang/go
diff --git a/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/crypto/ocsp/ocsp.go b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/crypto/ocsp/ocsp.go
new file mode 100644
index 000000000..6bd347e28
--- /dev/null
+++ b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/crypto/ocsp/ocsp.go
@@ -0,0 +1,778 @@
+// Copyright 2013 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Package ocsp parses OCSP responses as specified in RFC 2560. OCSP responses
+// are signed messages attesting to the validity of a certificate for a small
+// period of time. This is used to manage revocation for X.509 certificates.
+package ocsp // import "golang.org/x/crypto/ocsp"
+
+import (
+ "crypto"
+ "crypto/ecdsa"
+ "crypto/elliptic"
+ "crypto/rand"
+ "crypto/rsa"
+ _ "crypto/sha1"
+ _ "crypto/sha256"
+ _ "crypto/sha512"
+ "crypto/x509"
+ "crypto/x509/pkix"
+ "encoding/asn1"
+ "errors"
+ "fmt"
+ "math/big"
+ "strconv"
+ "time"
+)
+
+var idPKIXOCSPBasic = asn1.ObjectIdentifier([]int{1, 3, 6, 1, 5, 5, 7, 48, 1, 1})
+
+// ResponseStatus contains the result of an OCSP request. See
+// https://tools.ietf.org/html/rfc6960#section-2.3
+type ResponseStatus int
+
+const (
+ Success ResponseStatus = 0
+ Malformed ResponseStatus = 1
+ InternalError ResponseStatus = 2
+ TryLater ResponseStatus = 3
+ // Status code four is unused in OCSP. See
+ // https://tools.ietf.org/html/rfc6960#section-4.2.1
+ SignatureRequired ResponseStatus = 5
+ Unauthorized ResponseStatus = 6
+)
+
+func (r ResponseStatus) String() string {
+ switch r {
+ case Success:
+ return "success"
+ case Malformed:
+ return "malformed"
+ case InternalError:
+ return "internal error"
+ case TryLater:
+ return "try later"
+ case SignatureRequired:
+ return "signature required"
+ case Unauthorized:
+ return "unauthorized"
+ default:
+ return "unknown OCSP status: " + strconv.Itoa(int(r))
+ }
+}
+
+// ResponseError is an error that may be returned by ParseResponse to indicate
+// that the response itself is an error, not just that its indicating that a
+// certificate is revoked, unknown, etc.
+type ResponseError struct {
+ Status ResponseStatus
+}
+
+func (r ResponseError) Error() string {
+ return "ocsp: error from server: " + r.Status.String()
+}
+
+// These are internal structures that reflect the ASN.1 structure of an OCSP
+// response. See RFC 2560, section 4.2.
+
+type certID struct {
+ HashAlgorithm pkix.AlgorithmIdentifier
+ NameHash []byte
+ IssuerKeyHash []byte
+ SerialNumber *big.Int
+}
+
+// https://tools.ietf.org/html/rfc2560#section-4.1.1
+type ocspRequest struct {
+ TBSRequest tbsRequest
+}
+
+type tbsRequest struct {
+ Version int `asn1:"explicit,tag:0,default:0,optional"`
+ RequestorName pkix.RDNSequence `asn1:"explicit,tag:1,optional"`
+ RequestList []request
+}
+
+type request struct {
+ Cert certID
+}
+
+type responseASN1 struct {
+ Status asn1.Enumerated
+ Response responseBytes `asn1:"explicit,tag:0,optional"`
+}
+
+type responseBytes struct {
+ ResponseType asn1.ObjectIdentifier
+ Response []byte
+}
+
+type basicResponse struct {
+ TBSResponseData responseData
+ SignatureAlgorithm pkix.AlgorithmIdentifier
+ Signature asn1.BitString
+ Certificates []asn1.RawValue `asn1:"explicit,tag:0,optional"`
+}
+
+type responseData struct {
+ Raw asn1.RawContent
+ Version int `asn1:"optional,default:0,explicit,tag:0"`
+ RawResponderID asn1.RawValue
+ ProducedAt time.Time `asn1:"generalized"`
+ Responses []singleResponse
+}
+
+type singleResponse struct {
+ CertID certID
+ Good asn1.Flag `asn1:"tag:0,optional"`
+ Revoked revokedInfo `asn1:"tag:1,optional"`
+ Unknown asn1.Flag `asn1:"tag:2,optional"`
+ ThisUpdate time.Time `asn1:"generalized"`
+ NextUpdate time.Time `asn1:"generalized,explicit,tag:0,optional"`
+ SingleExtensions []pkix.Extension `asn1:"explicit,tag:1,optional"`
+}
+
+type revokedInfo struct {
+ RevocationTime time.Time `asn1:"generalized"`
+ Reason asn1.Enumerated `asn1:"explicit,tag:0,optional"`
+}
+
+var (
+ oidSignatureMD2WithRSA = asn1.ObjectIdentifier{1, 2, 840, 113549, 1, 1, 2}
+ oidSignatureMD5WithRSA = asn1.ObjectIdentifier{1, 2, 840, 113549, 1, 1, 4}
+ oidSignatureSHA1WithRSA = asn1.ObjectIdentifier{1, 2, 840, 113549, 1, 1, 5}
+ oidSignatureSHA256WithRSA = asn1.ObjectIdentifier{1, 2, 840, 113549, 1, 1, 11}
+ oidSignatureSHA384WithRSA = asn1.ObjectIdentifier{1, 2, 840, 113549, 1, 1, 12}
+ oidSignatureSHA512WithRSA = asn1.ObjectIdentifier{1, 2, 840, 113549, 1, 1, 13}
+ oidSignatureDSAWithSHA1 = asn1.ObjectIdentifier{1, 2, 840, 10040, 4, 3}
+ oidSignatureDSAWithSHA256 = asn1.ObjectIdentifier{2, 16, 840, 1, 101, 3, 4, 3, 2}
+ oidSignatureECDSAWithSHA1 = asn1.ObjectIdentifier{1, 2, 840, 10045, 4, 1}
+ oidSignatureECDSAWithSHA256 = asn1.ObjectIdentifier{1, 2, 840, 10045, 4, 3, 2}
+ oidSignatureECDSAWithSHA384 = asn1.ObjectIdentifier{1, 2, 840, 10045, 4, 3, 3}
+ oidSignatureECDSAWithSHA512 = asn1.ObjectIdentifier{1, 2, 840, 10045, 4, 3, 4}
+)
+
+var hashOIDs = map[crypto.Hash]asn1.ObjectIdentifier{
+ crypto.SHA1: asn1.ObjectIdentifier([]int{1, 3, 14, 3, 2, 26}),
+ crypto.SHA256: asn1.ObjectIdentifier([]int{2, 16, 840, 1, 101, 3, 4, 2, 1}),
+ crypto.SHA384: asn1.ObjectIdentifier([]int{2, 16, 840, 1, 101, 3, 4, 2, 2}),
+ crypto.SHA512: asn1.ObjectIdentifier([]int{2, 16, 840, 1, 101, 3, 4, 2, 3}),
+}
+
+// TODO(rlb): This is also from crypto/x509, so same comment as AGL's below
+var signatureAlgorithmDetails = []struct {
+ algo x509.SignatureAlgorithm
+ oid asn1.ObjectIdentifier
+ pubKeyAlgo x509.PublicKeyAlgorithm
+ hash crypto.Hash
+}{
+ {x509.MD2WithRSA, oidSignatureMD2WithRSA, x509.RSA, crypto.Hash(0) /* no value for MD2 */},
+ {x509.MD5WithRSA, oidSignatureMD5WithRSA, x509.RSA, crypto.MD5},
+ {x509.SHA1WithRSA, oidSignatureSHA1WithRSA, x509.RSA, crypto.SHA1},
+ {x509.SHA256WithRSA, oidSignatureSHA256WithRSA, x509.RSA, crypto.SHA256},
+ {x509.SHA384WithRSA, oidSignatureSHA384WithRSA, x509.RSA, crypto.SHA384},
+ {x509.SHA512WithRSA, oidSignatureSHA512WithRSA, x509.RSA, crypto.SHA512},
+ {x509.DSAWithSHA1, oidSignatureDSAWithSHA1, x509.DSA, crypto.SHA1},
+ {x509.DSAWithSHA256, oidSignatureDSAWithSHA256, x509.DSA, crypto.SHA256},
+ {x509.ECDSAWithSHA1, oidSignatureECDSAWithSHA1, x509.ECDSA, crypto.SHA1},
+ {x509.ECDSAWithSHA256, oidSignatureECDSAWithSHA256, x509.ECDSA, crypto.SHA256},
+ {x509.ECDSAWithSHA384, oidSignatureECDSAWithSHA384, x509.ECDSA, crypto.SHA384},
+ {x509.ECDSAWithSHA512, oidSignatureECDSAWithSHA512, x509.ECDSA, crypto.SHA512},
+}
+
+// TODO(rlb): This is also from crypto/x509, so same comment as AGL's below
+func signingParamsForPublicKey(pub interface{}, requestedSigAlgo x509.SignatureAlgorithm) (hashFunc crypto.Hash, sigAlgo pkix.AlgorithmIdentifier, err error) {
+ var pubType x509.PublicKeyAlgorithm
+
+ switch pub := pub.(type) {
+ case *rsa.PublicKey:
+ pubType = x509.RSA
+ hashFunc = crypto.SHA256
+ sigAlgo.Algorithm = oidSignatureSHA256WithRSA
+ sigAlgo.Parameters = asn1.RawValue{
+ Tag: 5,
+ }
+
+ case *ecdsa.PublicKey:
+ pubType = x509.ECDSA
+
+ switch pub.Curve {
+ case elliptic.P224(), elliptic.P256():
+ hashFunc = crypto.SHA256
+ sigAlgo.Algorithm = oidSignatureECDSAWithSHA256
+ case elliptic.P384():
+ hashFunc = crypto.SHA384
+ sigAlgo.Algorithm = oidSignatureECDSAWithSHA384
+ case elliptic.P521():
+ hashFunc = crypto.SHA512
+ sigAlgo.Algorithm = oidSignatureECDSAWithSHA512
+ default:
+ err = errors.New("x509: unknown elliptic curve")
+ }
+
+ default:
+ err = errors.New("x509: only RSA and ECDSA keys supported")
+ }
+
+ if err != nil {
+ return
+ }
+
+ if requestedSigAlgo == 0 {
+ return
+ }
+
+ found := false
+ for _, details := range signatureAlgorithmDetails {
+ if details.algo == requestedSigAlgo {
+ if details.pubKeyAlgo != pubType {
+ err = errors.New("x509: requested SignatureAlgorithm does not match private key type")
+ return
+ }
+ sigAlgo.Algorithm, hashFunc = details.oid, details.hash
+ if hashFunc == 0 {
+ err = errors.New("x509: cannot sign with hash function requested")
+ return
+ }
+ found = true
+ break
+ }
+ }
+
+ if !found {
+ err = errors.New("x509: unknown SignatureAlgorithm")
+ }
+
+ return
+}
+
+// TODO(agl): this is taken from crypto/x509 and so should probably be exported
+// from crypto/x509 or crypto/x509/pkix.
+func getSignatureAlgorithmFromOID(oid asn1.ObjectIdentifier) x509.SignatureAlgorithm {
+ for _, details := range signatureAlgorithmDetails {
+ if oid.Equal(details.oid) {
+ return details.algo
+ }
+ }
+ return x509.UnknownSignatureAlgorithm
+}
+
+// TODO(rlb): This is not taken from crypto/x509, but it's of the same general form.
+func getHashAlgorithmFromOID(target asn1.ObjectIdentifier) crypto.Hash {
+ for hash, oid := range hashOIDs {
+ if oid.Equal(target) {
+ return hash
+ }
+ }
+ return crypto.Hash(0)
+}
+
+func getOIDFromHashAlgorithm(target crypto.Hash) asn1.ObjectIdentifier {
+ for hash, oid := range hashOIDs {
+ if hash == target {
+ return oid
+ }
+ }
+ return nil
+}
+
+// This is the exposed reflection of the internal OCSP structures.
+
+// The status values that can be expressed in OCSP. See RFC 6960.
+const (
+ // Good means that the certificate is valid.
+ Good = iota
+ // Revoked means that the certificate has been deliberately revoked.
+ Revoked
+ // Unknown means that the OCSP responder doesn't know about the certificate.
+ Unknown
+ // ServerFailed is unused and was never used (see
+ // https://go-review.googlesource.com/#/c/18944). ParseResponse will
+ // return a ResponseError when an error response is parsed.
+ ServerFailed
+)
+
+// The enumerated reasons for revoking a certificate. See RFC 5280.
+const (
+ Unspecified = iota
+ KeyCompromise = iota
+ CACompromise = iota
+ AffiliationChanged = iota
+ Superseded = iota
+ CessationOfOperation = iota
+ CertificateHold = iota
+ _ = iota
+ RemoveFromCRL = iota
+ PrivilegeWithdrawn = iota
+ AACompromise = iota
+)
+
+// Request represents an OCSP request. See RFC 6960.
+type Request struct {
+ HashAlgorithm crypto.Hash
+ IssuerNameHash []byte
+ IssuerKeyHash []byte
+ SerialNumber *big.Int
+}
+
+// Marshal marshals the OCSP request to ASN.1 DER encoded form.
+func (req *Request) Marshal() ([]byte, error) {
+ hashAlg := getOIDFromHashAlgorithm(req.HashAlgorithm)
+ if hashAlg == nil {
+ return nil, errors.New("Unknown hash algorithm")
+ }
+ return asn1.Marshal(ocspRequest{
+ tbsRequest{
+ Version: 0,
+ RequestList: []request{
+ {
+ Cert: certID{
+ pkix.AlgorithmIdentifier{
+ Algorithm: hashAlg,
+ Parameters: asn1.RawValue{Tag: 5 /* ASN.1 NULL */},
+ },
+ req.IssuerNameHash,
+ req.IssuerKeyHash,
+ req.SerialNumber,
+ },
+ },
+ },
+ },
+ })
+}
+
+// Response represents an OCSP response containing a single SingleResponse. See
+// RFC 6960.
+type Response struct {
+ // Status is one of {Good, Revoked, Unknown}
+ Status int
+ SerialNumber *big.Int
+ ProducedAt, ThisUpdate, NextUpdate, RevokedAt time.Time
+ RevocationReason int
+ Certificate *x509.Certificate
+ // TBSResponseData contains the raw bytes of the signed response. If
+ // Certificate is nil then this can be used to verify Signature.
+ TBSResponseData []byte
+ Signature []byte
+ SignatureAlgorithm x509.SignatureAlgorithm
+
+ // IssuerHash is the hash used to compute the IssuerNameHash and IssuerKeyHash.
+ // Valid values are crypto.SHA1, crypto.SHA256, crypto.SHA384, and crypto.SHA512.
+ // If zero, the default is crypto.SHA1.
+ IssuerHash crypto.Hash
+
+ // RawResponderName optionally contains the DER-encoded subject of the
+ // responder certificate. Exactly one of RawResponderName and
+ // ResponderKeyHash is set.
+ RawResponderName []byte
+ // ResponderKeyHash optionally contains the SHA-1 hash of the
+ // responder's public key. Exactly one of RawResponderName and
+ // ResponderKeyHash is set.
+ ResponderKeyHash []byte
+
+ // Extensions contains raw X.509 extensions from the singleExtensions field
+ // of the OCSP response. When parsing certificates, this can be used to
+ // extract non-critical extensions that are not parsed by this package. When
+ // marshaling OCSP responses, the Extensions field is ignored, see
+ // ExtraExtensions.
+ Extensions []pkix.Extension
+
+ // ExtraExtensions contains extensions to be copied, raw, into any marshaled
+ // OCSP response (in the singleExtensions field). Values override any
+ // extensions that would otherwise be produced based on the other fields. The
+ // ExtraExtensions field is not populated when parsing certificates, see
+ // Extensions.
+ ExtraExtensions []pkix.Extension
+}
+
+// These are pre-serialized error responses for the various non-success codes
+// defined by OCSP. The Unauthorized code in particular can be used by an OCSP
+// responder that supports only pre-signed responses as a response to requests
+// for certificates with unknown status. See RFC 5019.
+var (
+ MalformedRequestErrorResponse = []byte{0x30, 0x03, 0x0A, 0x01, 0x01}
+ InternalErrorErrorResponse = []byte{0x30, 0x03, 0x0A, 0x01, 0x02}
+ TryLaterErrorResponse = []byte{0x30, 0x03, 0x0A, 0x01, 0x03}
+ SigRequredErrorResponse = []byte{0x30, 0x03, 0x0A, 0x01, 0x05}
+ UnauthorizedErrorResponse = []byte{0x30, 0x03, 0x0A, 0x01, 0x06}
+)
+
+// CheckSignatureFrom checks that the signature in resp is a valid signature
+// from issuer. This should only be used if resp.Certificate is nil. Otherwise,
+// the OCSP response contained an intermediate certificate that created the
+// signature. That signature is checked by ParseResponse and only
+// resp.Certificate remains to be validated.
+func (resp *Response) CheckSignatureFrom(issuer *x509.Certificate) error {
+ return issuer.CheckSignature(resp.SignatureAlgorithm, resp.TBSResponseData, resp.Signature)
+}
+
+// ParseError results from an invalid OCSP response.
+type ParseError string
+
+func (p ParseError) Error() string {
+ return string(p)
+}
+
+// ParseRequest parses an OCSP request in DER form. It only supports
+// requests for a single certificate. Signed requests are not supported.
+// If a request includes a signature, it will result in a ParseError.
+func ParseRequest(bytes []byte) (*Request, error) {
+ var req ocspRequest
+ rest, err := asn1.Unmarshal(bytes, &req)
+ if err != nil {
+ return nil, err
+ }
+ if len(rest) > 0 {
+ return nil, ParseError("trailing data in OCSP request")
+ }
+
+ if len(req.TBSRequest.RequestList) == 0 {
+ return nil, ParseError("OCSP request contains no request body")
+ }
+ innerRequest := req.TBSRequest.RequestList[0]
+
+ hashFunc := getHashAlgorithmFromOID(innerRequest.Cert.HashAlgorithm.Algorithm)
+ if hashFunc == crypto.Hash(0) {
+ return nil, ParseError("OCSP request uses unknown hash function")
+ }
+
+ return &Request{
+ HashAlgorithm: hashFunc,
+ IssuerNameHash: innerRequest.Cert.NameHash,
+ IssuerKeyHash: innerRequest.Cert.IssuerKeyHash,
+ SerialNumber: innerRequest.Cert.SerialNumber,
+ }, nil
+}
+
+// ParseResponse parses an OCSP response in DER form. It only supports
+// responses for a single certificate. If the response contains a certificate
+// then the signature over the response is checked. If issuer is not nil then
+// it will be used to validate the signature or embedded certificate.
+//
+// Invalid responses and parse failures will result in a ParseError.
+// Error responses will result in a ResponseError.
+func ParseResponse(bytes []byte, issuer *x509.Certificate) (*Response, error) {
+ return ParseResponseForCert(bytes, nil, issuer)
+}
+
+// ParseResponseForCert parses an OCSP response in DER form and searches for a
+// Response relating to cert. If such a Response is found and the OCSP response
+// contains a certificate then the signature over the response is checked. If
+// issuer is not nil then it will be used to validate the signature or embedded
+// certificate.
+//
+// Invalid responses and parse failures will result in a ParseError.
+// Error responses will result in a ResponseError.
+func ParseResponseForCert(bytes []byte, cert, issuer *x509.Certificate) (*Response, error) {
+ var resp responseASN1
+ rest, err := asn1.Unmarshal(bytes, &resp)
+ if err != nil {
+ return nil, err
+ }
+ if len(rest) > 0 {
+ return nil, ParseError("trailing data in OCSP response")
+ }
+
+ if status := ResponseStatus(resp.Status); status != Success {
+ return nil, ResponseError{status}
+ }
+
+ if !resp.Response.ResponseType.Equal(idPKIXOCSPBasic) {
+ return nil, ParseError("bad OCSP response type")
+ }
+
+ var basicResp basicResponse
+ rest, err = asn1.Unmarshal(resp.Response.Response, &basicResp)
+ if err != nil {
+ return nil, err
+ }
+
+ if len(basicResp.Certificates) > 1 {
+ return nil, ParseError("OCSP response contains bad number of certificates")
+ }
+
+ if n := len(basicResp.TBSResponseData.Responses); n == 0 || cert == nil && n > 1 {
+ return nil, ParseError("OCSP response contains bad number of responses")
+ }
+
+ var singleResp singleResponse
+ if cert == nil {
+ singleResp = basicResp.TBSResponseData.Responses[0]
+ } else {
+ match := false
+ for _, resp := range basicResp.TBSResponseData.Responses {
+ if cert == nil || cert.SerialNumber.Cmp(resp.CertID.SerialNumber) == 0 {
+ singleResp = resp
+ match = true
+ break
+ }
+ }
+ if !match {
+ return nil, ParseError("no response matching the supplied certificate")
+ }
+ }
+
+ ret := &Response{
+ TBSResponseData: basicResp.TBSResponseData.Raw,
+ Signature: basicResp.Signature.RightAlign(),
+ SignatureAlgorithm: getSignatureAlgorithmFromOID(basicResp.SignatureAlgorithm.Algorithm),
+ Extensions: singleResp.SingleExtensions,
+ SerialNumber: singleResp.CertID.SerialNumber,
+ ProducedAt: basicResp.TBSResponseData.ProducedAt,
+ ThisUpdate: singleResp.ThisUpdate,
+ NextUpdate: singleResp.NextUpdate,
+ }
+
+ // Handle the ResponderID CHOICE tag. ResponderID can be flattened into
+ // TBSResponseData once https://go-review.googlesource.com/34503 has been
+ // released.
+ rawResponderID := basicResp.TBSResponseData.RawResponderID
+ switch rawResponderID.Tag {
+ case 1: // Name
+ var rdn pkix.RDNSequence
+ if rest, err := asn1.Unmarshal(rawResponderID.Bytes, &rdn); err != nil || len(rest) != 0 {
+ return nil, ParseError("invalid responder name")
+ }
+ ret.RawResponderName = rawResponderID.Bytes
+ case 2: // KeyHash
+ if rest, err := asn1.Unmarshal(rawResponderID.Bytes, &ret.ResponderKeyHash); err != nil || len(rest) != 0 {
+ return nil, ParseError("invalid responder key hash")
+ }
+ default:
+ return nil, ParseError("invalid responder id tag")
+ }
+
+ if len(basicResp.Certificates) > 0 {
+ ret.Certificate, err = x509.ParseCertificate(basicResp.Certificates[0].FullBytes)
+ if err != nil {
+ return nil, err
+ }
+
+ if err := ret.CheckSignatureFrom(ret.Certificate); err != nil {
+ return nil, ParseError("bad signature on embedded certificate: " + err.Error())
+ }
+
+ if issuer != nil {
+ if err := issuer.CheckSignature(ret.Certificate.SignatureAlgorithm, ret.Certificate.RawTBSCertificate, ret.Certificate.Signature); err != nil {
+ return nil, ParseError("bad OCSP signature: " + err.Error())
+ }
+ }
+ } else if issuer != nil {
+ if err := ret.CheckSignatureFrom(issuer); err != nil {
+ return nil, ParseError("bad OCSP signature: " + err.Error())
+ }
+ }
+
+ for _, ext := range singleResp.SingleExtensions {
+ if ext.Critical {
+ return nil, ParseError("unsupported critical extension")
+ }
+ }
+
+ for h, oid := range hashOIDs {
+ if singleResp.CertID.HashAlgorithm.Algorithm.Equal(oid) {
+ ret.IssuerHash = h
+ break
+ }
+ }
+ if ret.IssuerHash == 0 {
+ return nil, ParseError("unsupported issuer hash algorithm")
+ }
+
+ switch {
+ case bool(singleResp.Good):
+ ret.Status = Good
+ case bool(singleResp.Unknown):
+ ret.Status = Unknown
+ default:
+ ret.Status = Revoked
+ ret.RevokedAt = singleResp.Revoked.RevocationTime
+ ret.RevocationReason = int(singleResp.Revoked.Reason)
+ }
+
+ return ret, nil
+}
+
+// RequestOptions contains options for constructing OCSP requests.
+type RequestOptions struct {
+ // Hash contains the hash function that should be used when
+ // constructing the OCSP request. If zero, SHA-1 will be used.
+ Hash crypto.Hash
+}
+
+func (opts *RequestOptions) hash() crypto.Hash {
+ if opts == nil || opts.Hash == 0 {
+ // SHA-1 is nearly universally used in OCSP.
+ return crypto.SHA1
+ }
+ return opts.Hash
+}
+
+// CreateRequest returns a DER-encoded, OCSP request for the status of cert. If
+// opts is nil then sensible defaults are used.
+func CreateRequest(cert, issuer *x509.Certificate, opts *RequestOptions) ([]byte, error) {
+ hashFunc := opts.hash()
+
+ // OCSP seems to be the only place where these raw hash identifiers are
+ // used. I took the following from
+ // http://msdn.microsoft.com/en-us/library/ff635603.aspx
+ _, ok := hashOIDs[hashFunc]
+ if !ok {
+ return nil, x509.ErrUnsupportedAlgorithm
+ }
+
+ if !hashFunc.Available() {
+ return nil, x509.ErrUnsupportedAlgorithm
+ }
+ h := opts.hash().New()
+
+ var publicKeyInfo struct {
+ Algorithm pkix.AlgorithmIdentifier
+ PublicKey asn1.BitString
+ }
+ if _, err := asn1.Unmarshal(issuer.RawSubjectPublicKeyInfo, &publicKeyInfo); err != nil {
+ return nil, err
+ }
+
+ h.Write(publicKeyInfo.PublicKey.RightAlign())
+ issuerKeyHash := h.Sum(nil)
+
+ h.Reset()
+ h.Write(issuer.RawSubject)
+ issuerNameHash := h.Sum(nil)
+
+ req := &Request{
+ HashAlgorithm: hashFunc,
+ IssuerNameHash: issuerNameHash,
+ IssuerKeyHash: issuerKeyHash,
+ SerialNumber: cert.SerialNumber,
+ }
+ return req.Marshal()
+}
+
+// CreateResponse returns a DER-encoded OCSP response with the specified contents.
+// The fields in the response are populated as follows:
+//
+// The responder cert is used to populate the responder's name field, and the
+// certificate itself is provided alongside the OCSP response signature.
+//
+// The issuer cert is used to puplate the IssuerNameHash and IssuerKeyHash fields.
+//
+// The template is used to populate the SerialNumber, RevocationStatus, RevokedAt,
+// RevocationReason, ThisUpdate, and NextUpdate fields.
+//
+// If template.IssuerHash is not set, SHA1 will be used.
+//
+// The ProducedAt date is automatically set to the current date, to the nearest minute.
+func CreateResponse(issuer, responderCert *x509.Certificate, template Response, priv crypto.Signer) ([]byte, error) {
+ var publicKeyInfo struct {
+ Algorithm pkix.AlgorithmIdentifier
+ PublicKey asn1.BitString
+ }
+ if _, err := asn1.Unmarshal(issuer.RawSubjectPublicKeyInfo, &publicKeyInfo); err != nil {
+ return nil, err
+ }
+
+ if template.IssuerHash == 0 {
+ template.IssuerHash = crypto.SHA1
+ }
+ hashOID := getOIDFromHashAlgorithm(template.IssuerHash)
+ if hashOID == nil {
+ return nil, errors.New("unsupported issuer hash algorithm")
+ }
+
+ if !template.IssuerHash.Available() {
+ return nil, fmt.Errorf("issuer hash algorithm %v not linked into binary", template.IssuerHash)
+ }
+ h := template.IssuerHash.New()
+ h.Write(publicKeyInfo.PublicKey.RightAlign())
+ issuerKeyHash := h.Sum(nil)
+
+ h.Reset()
+ h.Write(issuer.RawSubject)
+ issuerNameHash := h.Sum(nil)
+
+ innerResponse := singleResponse{
+ CertID: certID{
+ HashAlgorithm: pkix.AlgorithmIdentifier{
+ Algorithm: hashOID,
+ Parameters: asn1.RawValue{Tag: 5 /* ASN.1 NULL */},
+ },
+ NameHash: issuerNameHash,
+ IssuerKeyHash: issuerKeyHash,
+ SerialNumber: template.SerialNumber,
+ },
+ ThisUpdate: template.ThisUpdate.UTC(),
+ NextUpdate: template.NextUpdate.UTC(),
+ SingleExtensions: template.ExtraExtensions,
+ }
+
+ switch template.Status {
+ case Good:
+ innerResponse.Good = true
+ case Unknown:
+ innerResponse.Unknown = true
+ case Revoked:
+ innerResponse.Revoked = revokedInfo{
+ RevocationTime: template.RevokedAt.UTC(),
+ Reason: asn1.Enumerated(template.RevocationReason),
+ }
+ }
+
+ rawResponderID := asn1.RawValue{
+ Class: 2, // context-specific
+ Tag: 1, // Name (explicit tag)
+ IsCompound: true,
+ Bytes: responderCert.RawSubject,
+ }
+ tbsResponseData := responseData{
+ Version: 0,
+ RawResponderID: rawResponderID,
+ ProducedAt: time.Now().Truncate(time.Minute).UTC(),
+ Responses: []singleResponse{innerResponse},
+ }
+
+ tbsResponseDataDER, err := asn1.Marshal(tbsResponseData)
+ if err != nil {
+ return nil, err
+ }
+
+ hashFunc, signatureAlgorithm, err := signingParamsForPublicKey(priv.Public(), template.SignatureAlgorithm)
+ if err != nil {
+ return nil, err
+ }
+
+ responseHash := hashFunc.New()
+ responseHash.Write(tbsResponseDataDER)
+ signature, err := priv.Sign(rand.Reader, responseHash.Sum(nil), hashFunc)
+ if err != nil {
+ return nil, err
+ }
+
+ response := basicResponse{
+ TBSResponseData: tbsResponseData,
+ SignatureAlgorithm: signatureAlgorithm,
+ Signature: asn1.BitString{
+ Bytes: signature,
+ BitLength: 8 * len(signature),
+ },
+ }
+ if template.Certificate != nil {
+ response.Certificates = []asn1.RawValue{
+ asn1.RawValue{FullBytes: template.Certificate.Raw},
+ }
+ }
+ responseDER, err := asn1.Marshal(response)
+ if err != nil {
+ return nil, err
+ }
+
+ return asn1.Marshal(responseASN1{
+ Status: asn1.Enumerated(Success),
+ Response: responseBytes{
+ ResponseType: idPKIXOCSPBasic,
+ Response: responseDER,
+ },
+ })
+}
diff --git a/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/crypto/ocsp/ocsp_test.go b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/crypto/ocsp/ocsp_test.go
new file mode 100644
index 000000000..df674b374
--- /dev/null
+++ b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/crypto/ocsp/ocsp_test.go
@@ -0,0 +1,875 @@
+// Copyright 2013 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build go1.7
+
+package ocsp
+
+import (
+ "bytes"
+ "crypto"
+ "crypto/sha1"
+ "crypto/x509"
+ "crypto/x509/pkix"
+ "encoding/asn1"
+ "encoding/hex"
+ "math/big"
+ "reflect"
+ "testing"
+ "time"
+)
+
+func TestOCSPDecode(t *testing.T) {
+ responseBytes, _ := hex.DecodeString(ocspResponseHex)
+ resp, err := ParseResponse(responseBytes, nil)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ responderCert, _ := hex.DecodeString(startComResponderCertHex)
+ responder, err := x509.ParseCertificate(responderCert)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ expected := Response{
+ Status: Good,
+ SerialNumber: big.NewInt(0x1d0fa),
+ RevocationReason: Unspecified,
+ ThisUpdate: time.Date(2010, 7, 7, 15, 1, 5, 0, time.UTC),
+ NextUpdate: time.Date(2010, 7, 7, 18, 35, 17, 0, time.UTC),
+ RawResponderName: responder.RawSubject,
+ }
+
+ if !reflect.DeepEqual(resp.ThisUpdate, expected.ThisUpdate) {
+ t.Errorf("resp.ThisUpdate: got %d, want %d", resp.ThisUpdate, expected.ThisUpdate)
+ }
+
+ if !reflect.DeepEqual(resp.NextUpdate, expected.NextUpdate) {
+ t.Errorf("resp.NextUpdate: got %d, want %d", resp.NextUpdate, expected.NextUpdate)
+ }
+
+ if resp.Status != expected.Status {
+ t.Errorf("resp.Status: got %d, want %d", resp.Status, expected.Status)
+ }
+
+ if resp.SerialNumber.Cmp(expected.SerialNumber) != 0 {
+ t.Errorf("resp.SerialNumber: got %x, want %x", resp.SerialNumber, expected.SerialNumber)
+ }
+
+ if resp.RevocationReason != expected.RevocationReason {
+ t.Errorf("resp.RevocationReason: got %d, want %d", resp.RevocationReason, expected.RevocationReason)
+ }
+
+ if !bytes.Equal(resp.RawResponderName, expected.RawResponderName) {
+ t.Errorf("resp.RawResponderName: got %x, want %x", resp.RawResponderName, expected.RawResponderName)
+ }
+
+ if !bytes.Equal(resp.ResponderKeyHash, expected.ResponderKeyHash) {
+ t.Errorf("resp.ResponderKeyHash: got %x, want %x", resp.ResponderKeyHash, expected.ResponderKeyHash)
+ }
+}
+
+func TestOCSPDecodeWithoutCert(t *testing.T) {
+ responseBytes, _ := hex.DecodeString(ocspResponseWithoutCertHex)
+ _, err := ParseResponse(responseBytes, nil)
+ if err != nil {
+ t.Error(err)
+ }
+}
+
+func TestOCSPDecodeWithExtensions(t *testing.T) {
+ responseBytes, _ := hex.DecodeString(ocspResponseWithCriticalExtensionHex)
+ _, err := ParseResponse(responseBytes, nil)
+ if err == nil {
+ t.Error(err)
+ }
+
+ responseBytes, _ = hex.DecodeString(ocspResponseWithExtensionHex)
+ response, err := ParseResponse(responseBytes, nil)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ if len(response.Extensions) != 1 {
+ t.Errorf("len(response.Extensions): got %v, want %v", len(response.Extensions), 1)
+ }
+
+ extensionBytes := response.Extensions[0].Value
+ expectedBytes, _ := hex.DecodeString(ocspExtensionValueHex)
+ if !bytes.Equal(extensionBytes, expectedBytes) {
+ t.Errorf("response.Extensions[0]: got %x, want %x", extensionBytes, expectedBytes)
+ }
+}
+
+func TestOCSPSignature(t *testing.T) {
+ issuerCert, _ := hex.DecodeString(startComHex)
+ issuer, err := x509.ParseCertificate(issuerCert)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ response, _ := hex.DecodeString(ocspResponseHex)
+ if _, err := ParseResponse(response, issuer); err != nil {
+ t.Error(err)
+ }
+}
+
+func TestOCSPRequest(t *testing.T) {
+ leafCert, _ := hex.DecodeString(leafCertHex)
+ cert, err := x509.ParseCertificate(leafCert)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ issuerCert, _ := hex.DecodeString(issuerCertHex)
+ issuer, err := x509.ParseCertificate(issuerCert)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ request, err := CreateRequest(cert, issuer, nil)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ expectedBytes, _ := hex.DecodeString(ocspRequestHex)
+ if !bytes.Equal(request, expectedBytes) {
+ t.Errorf("request: got %x, wanted %x", request, expectedBytes)
+ }
+
+ decodedRequest, err := ParseRequest(expectedBytes)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ if decodedRequest.HashAlgorithm != crypto.SHA1 {
+ t.Errorf("request.HashAlgorithm: got %v, want %v", decodedRequest.HashAlgorithm, crypto.SHA1)
+ }
+
+ var publicKeyInfo struct {
+ Algorithm pkix.AlgorithmIdentifier
+ PublicKey asn1.BitString
+ }
+ _, err = asn1.Unmarshal(issuer.RawSubjectPublicKeyInfo, &publicKeyInfo)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ h := sha1.New()
+ h.Write(publicKeyInfo.PublicKey.RightAlign())
+ issuerKeyHash := h.Sum(nil)
+
+ h.Reset()
+ h.Write(issuer.RawSubject)
+ issuerNameHash := h.Sum(nil)
+
+ if got := decodedRequest.IssuerKeyHash; !bytes.Equal(got, issuerKeyHash) {
+ t.Errorf("request.IssuerKeyHash: got %x, want %x", got, issuerKeyHash)
+ }
+
+ if got := decodedRequest.IssuerNameHash; !bytes.Equal(got, issuerNameHash) {
+ t.Errorf("request.IssuerKeyHash: got %x, want %x", got, issuerNameHash)
+ }
+
+ if got := decodedRequest.SerialNumber; got.Cmp(cert.SerialNumber) != 0 {
+ t.Errorf("request.SerialNumber: got %x, want %x", got, cert.SerialNumber)
+ }
+
+ marshaledRequest, err := decodedRequest.Marshal()
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ if bytes.Compare(expectedBytes, marshaledRequest) != 0 {
+ t.Errorf(
+ "Marshaled request doesn't match expected: wanted %x, got %x",
+ expectedBytes,
+ marshaledRequest,
+ )
+ }
+}
+
+func TestOCSPResponse(t *testing.T) {
+ leafCert, _ := hex.DecodeString(leafCertHex)
+ leaf, err := x509.ParseCertificate(leafCert)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ issuerCert, _ := hex.DecodeString(issuerCertHex)
+ issuer, err := x509.ParseCertificate(issuerCert)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ responderCert, _ := hex.DecodeString(responderCertHex)
+ responder, err := x509.ParseCertificate(responderCert)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ responderPrivateKeyDER, _ := hex.DecodeString(responderPrivateKeyHex)
+ responderPrivateKey, err := x509.ParsePKCS1PrivateKey(responderPrivateKeyDER)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ extensionBytes, _ := hex.DecodeString(ocspExtensionValueHex)
+ extensions := []pkix.Extension{
+ pkix.Extension{
+ Id: ocspExtensionOID,
+ Critical: false,
+ Value: extensionBytes,
+ },
+ }
+
+ thisUpdate := time.Date(2010, 7, 7, 15, 1, 5, 0, time.UTC)
+ nextUpdate := time.Date(2010, 7, 7, 18, 35, 17, 0, time.UTC)
+ template := Response{
+ Status: Revoked,
+ SerialNumber: leaf.SerialNumber,
+ ThisUpdate: thisUpdate,
+ NextUpdate: nextUpdate,
+ RevokedAt: thisUpdate,
+ RevocationReason: KeyCompromise,
+ Certificate: responder,
+ ExtraExtensions: extensions,
+ }
+
+ template.IssuerHash = crypto.MD5
+ _, err = CreateResponse(issuer, responder, template, responderPrivateKey)
+ if err == nil {
+ t.Fatal("CreateResponse didn't fail with non-valid template.IssuerHash value crypto.MD5")
+ }
+
+ testCases := []struct {
+ name string
+ issuerHash crypto.Hash
+ }{
+ {"Zero value", 0},
+ {"crypto.SHA1", crypto.SHA1},
+ {"crypto.SHA256", crypto.SHA256},
+ {"crypto.SHA384", crypto.SHA384},
+ {"crypto.SHA512", crypto.SHA512},
+ }
+ for _, tc := range testCases {
+ t.Run(tc.name, func(t *testing.T) {
+ template.IssuerHash = tc.issuerHash
+ responseBytes, err := CreateResponse(issuer, responder, template, responderPrivateKey)
+ if err != nil {
+ t.Fatalf("CreateResponse failed: %s", err)
+ }
+
+ resp, err := ParseResponse(responseBytes, nil)
+ if err != nil {
+ t.Fatalf("ParseResponse failed: %s", err)
+ }
+
+ if !reflect.DeepEqual(resp.ThisUpdate, template.ThisUpdate) {
+ t.Errorf("resp.ThisUpdate: got %d, want %d", resp.ThisUpdate, template.ThisUpdate)
+ }
+
+ if !reflect.DeepEqual(resp.NextUpdate, template.NextUpdate) {
+ t.Errorf("resp.NextUpdate: got %d, want %d", resp.NextUpdate, template.NextUpdate)
+ }
+
+ if !reflect.DeepEqual(resp.RevokedAt, template.RevokedAt) {
+ t.Errorf("resp.RevokedAt: got %d, want %d", resp.RevokedAt, template.RevokedAt)
+ }
+
+ if !reflect.DeepEqual(resp.Extensions, template.ExtraExtensions) {
+ t.Errorf("resp.Extensions: got %v, want %v", resp.Extensions, template.ExtraExtensions)
+ }
+
+ delay := time.Since(resp.ProducedAt)
+ if delay < -time.Hour || delay > time.Hour {
+ t.Errorf("resp.ProducedAt: got %s, want close to current time (%s)", resp.ProducedAt, time.Now())
+ }
+
+ if resp.Status != template.Status {
+ t.Errorf("resp.Status: got %d, want %d", resp.Status, template.Status)
+ }
+
+ if resp.SerialNumber.Cmp(template.SerialNumber) != 0 {
+ t.Errorf("resp.SerialNumber: got %x, want %x", resp.SerialNumber, template.SerialNumber)
+ }
+
+ if resp.RevocationReason != template.RevocationReason {
+ t.Errorf("resp.RevocationReason: got %d, want %d", resp.RevocationReason, template.RevocationReason)
+ }
+
+ expectedHash := tc.issuerHash
+ if tc.issuerHash == 0 {
+ expectedHash = crypto.SHA1
+ }
+
+ if resp.IssuerHash != expectedHash {
+ t.Errorf("resp.IssuerHash: got %d, want %d", resp.IssuerHash, expectedHash)
+ }
+ })
+ }
+}
+
+func TestErrorResponse(t *testing.T) {
+ responseBytes, _ := hex.DecodeString(errorResponseHex)
+ _, err := ParseResponse(responseBytes, nil)
+
+ respErr, ok := err.(ResponseError)
+ if !ok {
+ t.Fatalf("expected ResponseError from ParseResponse but got %#v", err)
+ }
+ if respErr.Status != Malformed {
+ t.Fatalf("expected Malformed status from ParseResponse but got %d", respErr.Status)
+ }
+}
+
+func TestOCSPDecodeMultiResponse(t *testing.T) {
+ inclCert, _ := hex.DecodeString(ocspMultiResponseCertHex)
+ cert, err := x509.ParseCertificate(inclCert)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ responseBytes, _ := hex.DecodeString(ocspMultiResponseHex)
+ resp, err := ParseResponseForCert(responseBytes, cert, nil)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ if resp.SerialNumber.Cmp(cert.SerialNumber) != 0 {
+ t.Errorf("resp.SerialNumber: got %x, want %x", resp.SerialNumber, cert.SerialNumber)
+ }
+}
+
+func TestOCSPDecodeMultiResponseWithoutMatchingCert(t *testing.T) {
+ wrongCert, _ := hex.DecodeString(startComHex)
+ cert, err := x509.ParseCertificate(wrongCert)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ responseBytes, _ := hex.DecodeString(ocspMultiResponseHex)
+ _, err = ParseResponseForCert(responseBytes, cert, nil)
+ want := ParseError("no response matching the supplied certificate")
+ if err != want {
+ t.Errorf("err: got %q, want %q", err, want)
+ }
+}
+
+// This OCSP response was taken from Thawte's public OCSP responder.
+// To recreate:
+// $ openssl s_client -tls1 -showcerts -servername www.google.com -connect www.google.com:443
+// Copy and paste the first certificate into /tmp/cert.crt and the second into
+// /tmp/intermediate.crt
+// $ openssl ocsp -issuer /tmp/intermediate.crt -cert /tmp/cert.crt -url http://ocsp.thawte.com -resp_text -respout /tmp/ocsp.der
+// Then hex encode the result:
+// $ python -c 'print file("/tmp/ocsp.der", "r").read().encode("hex")'
+
+const ocspResponseHex = "308206bc0a0100a08206b5308206b106092b0601050507300101048206a23082069e3081" +
+ "c9a14e304c310b300906035504061302494c31163014060355040a130d5374617274436f" +
+ "6d204c74642e312530230603550403131c5374617274436f6d20436c6173732031204f43" +
+ "5350205369676e6572180f32303130303730373137333531375a30663064303c30090605" +
+ "2b0e03021a050004146568874f40750f016a3475625e1f5c93e5a26d580414eb4234d098" +
+ "b0ab9ff41b6b08f7cc642eef0e2c45020301d0fa8000180f323031303037303731353031" +
+ "30355aa011180f32303130303730373138333531375a300d06092a864886f70d01010505" +
+ "000382010100ab557ff070d1d7cebbb5f0ec91a15c3fed22eb2e1b8244f1b84545f013a4" +
+ "fb46214c5e3fbfbebb8a56acc2b9db19f68fd3c3201046b3824d5ba689f99864328710cb" +
+ "467195eb37d84f539e49f859316b32964dc3e47e36814ce94d6c56dd02733b1d0802f7ff" +
+ "4eebdbbd2927dcf580f16cbc290f91e81b53cb365e7223f1d6e20a88ea064104875e0145" +
+ "672b20fc14829d51ca122f5f5d77d3ad6c83889c55c7dc43680ba2fe3cef8b05dbcabdc0" +
+ "d3e09aaf9725597f8c858c2fa38c0d6aed2e6318194420dd1a1137445d13e1c97ab47896" +
+ "17a4e08925f46f867b72e3a4dc1f08cb870b2b0717f7207faa0ac512e628a029aba7457a" +
+ "e63dcf3281e2162d9349a08204ba308204b6308204b23082039aa003020102020101300d" +
+ "06092a864886f70d010105050030818c310b300906035504061302494c31163014060355" +
+ "040a130d5374617274436f6d204c74642e312b3029060355040b13225365637572652044" +
+ "69676974616c204365727469666963617465205369676e696e6731383036060355040313" +
+ "2f5374617274436f6d20436c6173732031205072696d61727920496e7465726d65646961" +
+ "746520536572766572204341301e170d3037313032353030323330365a170d3132313032" +
+ "333030323330365a304c310b300906035504061302494c31163014060355040a130d5374" +
+ "617274436f6d204c74642e312530230603550403131c5374617274436f6d20436c617373" +
+ "2031204f435350205369676e657230820122300d06092a864886f70d0101010500038201" +
+ "0f003082010a0282010100b9561b4c45318717178084e96e178df2255e18ed8d8ecc7c2b" +
+ "7b51a6c1c2e6bf0aa3603066f132fe10ae97b50e99fa24b83fc53dd2777496387d14e1c3" +
+ "a9b6a4933e2ac12413d085570a95b8147414a0bc007c7bcf222446ef7f1a156d7ea1c577" +
+ "fc5f0facdfd42eb0f5974990cb2f5cefebceef4d1bdc7ae5c1075c5a99a93171f2b0845b" +
+ "4ff0864e973fcfe32f9d7511ff87a3e943410c90a4493a306b6944359340a9ca96f02b66" +
+ "ce67f028df2980a6aaee8d5d5d452b8b0eb93f923cc1e23fcccbdbe7ffcb114d08fa7a6a" +
+ "3c404f825d1a0e715935cf623a8c7b59670014ed0622f6089a9447a7a19010f7fe58f841" +
+ "29a2765ea367824d1c3bb2fda308530203010001a382015c30820158300c0603551d1301" +
+ "01ff04023000300b0603551d0f0404030203a8301e0603551d250417301506082b060105" +
+ "0507030906092b0601050507300105301d0603551d0e0416041445e0a36695414c5dd449" +
+ "bc00e33cdcdbd2343e173081a80603551d230481a030819d8014eb4234d098b0ab9ff41b" +
+ "6b08f7cc642eef0e2c45a18181a47f307d310b300906035504061302494c311630140603" +
+ "55040a130d5374617274436f6d204c74642e312b3029060355040b132253656375726520" +
+ "4469676974616c204365727469666963617465205369676e696e67312930270603550403" +
+ "13205374617274436f6d2043657274696669636174696f6e20417574686f726974798201" +
+ "0a30230603551d12041c301a8618687474703a2f2f7777772e737461727473736c2e636f" +
+ "6d2f302c06096086480186f842010d041f161d5374617274436f6d205265766f63617469" +
+ "6f6e20417574686f72697479300d06092a864886f70d01010505000382010100182d2215" +
+ "8f0fc0291324fa8574c49bb8ff2835085adcbf7b7fc4191c397ab6951328253fffe1e5ec" +
+ "2a7da0d50fca1a404e6968481366939e666c0a6209073eca57973e2fefa9ed1718e8176f" +
+ "1d85527ff522c08db702e3b2b180f1cbff05d98128252cf0f450f7dd2772f4188047f19d" +
+ "c85317366f94bc52d60f453a550af58e308aaab00ced33040b62bf37f5b1ab2a4f7f0f80" +
+ "f763bf4d707bc8841d7ad9385ee2a4244469260b6f2bf085977af9074796048ecc2f9d48" +
+ "a1d24ce16e41a9941568fec5b42771e118f16c106a54ccc339a4b02166445a167902e75e" +
+ "6d8620b0825dcd18a069b90fd851d10fa8effd409deec02860d26d8d833f304b10669b42"
+
+const startComResponderCertHex = "308204b23082039aa003020102020101300d06092a864886f70d010105050030818c310b" +
+ "300906035504061302494c31163014060355040a130d5374617274436f6d204c74642e31" +
+ "2b3029060355040b1322536563757265204469676974616c204365727469666963617465" +
+ "205369676e696e67313830360603550403132f5374617274436f6d20436c617373203120" +
+ "5072696d61727920496e7465726d65646961746520536572766572204341301e170d3037" +
+ "313032353030323330365a170d3132313032333030323330365a304c310b300906035504" +
+ "061302494c31163014060355040a130d5374617274436f6d204c74642e31253023060355" +
+ "0403131c5374617274436f6d20436c6173732031204f435350205369676e657230820122" +
+ "300d06092a864886f70d01010105000382010f003082010a0282010100b9561b4c453187" +
+ "17178084e96e178df2255e18ed8d8ecc7c2b7b51a6c1c2e6bf0aa3603066f132fe10ae97" +
+ "b50e99fa24b83fc53dd2777496387d14e1c3a9b6a4933e2ac12413d085570a95b8147414" +
+ "a0bc007c7bcf222446ef7f1a156d7ea1c577fc5f0facdfd42eb0f5974990cb2f5cefebce" +
+ "ef4d1bdc7ae5c1075c5a99a93171f2b0845b4ff0864e973fcfe32f9d7511ff87a3e94341" +
+ "0c90a4493a306b6944359340a9ca96f02b66ce67f028df2980a6aaee8d5d5d452b8b0eb9" +
+ "3f923cc1e23fcccbdbe7ffcb114d08fa7a6a3c404f825d1a0e715935cf623a8c7b596700" +
+ "14ed0622f6089a9447a7a19010f7fe58f84129a2765ea367824d1c3bb2fda30853020301" +
+ "0001a382015c30820158300c0603551d130101ff04023000300b0603551d0f0404030203" +
+ "a8301e0603551d250417301506082b0601050507030906092b0601050507300105301d06" +
+ "03551d0e0416041445e0a36695414c5dd449bc00e33cdcdbd2343e173081a80603551d23" +
+ "0481a030819d8014eb4234d098b0ab9ff41b6b08f7cc642eef0e2c45a18181a47f307d31" +
+ "0b300906035504061302494c31163014060355040a130d5374617274436f6d204c74642e" +
+ "312b3029060355040b1322536563757265204469676974616c2043657274696669636174" +
+ "65205369676e696e6731293027060355040313205374617274436f6d2043657274696669" +
+ "636174696f6e20417574686f7269747982010a30230603551d12041c301a861868747470" +
+ "3a2f2f7777772e737461727473736c2e636f6d2f302c06096086480186f842010d041f16" +
+ "1d5374617274436f6d205265766f636174696f6e20417574686f72697479300d06092a86" +
+ "4886f70d01010505000382010100182d22158f0fc0291324fa8574c49bb8ff2835085adc" +
+ "bf7b7fc4191c397ab6951328253fffe1e5ec2a7da0d50fca1a404e6968481366939e666c" +
+ "0a6209073eca57973e2fefa9ed1718e8176f1d85527ff522c08db702e3b2b180f1cbff05" +
+ "d98128252cf0f450f7dd2772f4188047f19dc85317366f94bc52d60f453a550af58e308a" +
+ "aab00ced33040b62bf37f5b1ab2a4f7f0f80f763bf4d707bc8841d7ad9385ee2a4244469" +
+ "260b6f2bf085977af9074796048ecc2f9d48a1d24ce16e41a9941568fec5b42771e118f1" +
+ "6c106a54ccc339a4b02166445a167902e75e6d8620b0825dcd18a069b90fd851d10fa8ef" +
+ "fd409deec02860d26d8d833f304b10669b42"
+
+const startComHex = "308206343082041ca003020102020118300d06092a864886f70d0101050500307d310b30" +
+ "0906035504061302494c31163014060355040a130d5374617274436f6d204c74642e312b" +
+ "3029060355040b1322536563757265204469676974616c20436572746966696361746520" +
+ "5369676e696e6731293027060355040313205374617274436f6d20436572746966696361" +
+ "74696f6e20417574686f72697479301e170d3037313032343230353431375a170d313731" +
+ "3032343230353431375a30818c310b300906035504061302494c31163014060355040a13" +
+ "0d5374617274436f6d204c74642e312b3029060355040b13225365637572652044696769" +
+ "74616c204365727469666963617465205369676e696e67313830360603550403132f5374" +
+ "617274436f6d20436c6173732031205072696d61727920496e7465726d65646961746520" +
+ "53657276657220434130820122300d06092a864886f70d01010105000382010f00308201" +
+ "0a0282010100b689c6acef09527807ac9263d0f44418188480561f91aee187fa3250b4d3" +
+ "4706f0e6075f700e10f71dc0ce103634855a0f92ac83c6ac58523fba38e8fce7a724e240" +
+ "a60876c0926e9e2a6d4d3f6e61200adb59ded27d63b33e46fefa215118d7cd30a6ed076e" +
+ "3b7087b4f9faebee823c056f92f7a4dc0a301e9373fe07cad75f809d225852ae06da8b87" +
+ "2369b0e42ad8ea83d2bdf371db705a280faf5a387045123f304dcd3baf17e50fcba0a95d" +
+ "48aab16150cb34cd3c5cc30be810c08c9bf0030362feb26c3e720eee1c432ac9480e5739" +
+ "c43121c810c12c87fe5495521f523c31129b7fe7c0a0a559d5e28f3ef0d5a8e1d77031a9" +
+ "c4b3cfaf6d532f06f4a70203010001a38201ad308201a9300f0603551d130101ff040530" +
+ "030101ff300e0603551d0f0101ff040403020106301d0603551d0e04160414eb4234d098" +
+ "b0ab9ff41b6b08f7cc642eef0e2c45301f0603551d230418301680144e0bef1aa4405ba5" +
+ "17698730ca346843d041aef2306606082b06010505070101045a3058302706082b060105" +
+ "05073001861b687474703a2f2f6f6373702e737461727473736c2e636f6d2f6361302d06" +
+ "082b060105050730028621687474703a2f2f7777772e737461727473736c2e636f6d2f73" +
+ "667363612e637274305b0603551d1f045430523027a025a0238621687474703a2f2f7777" +
+ "772e737461727473736c2e636f6d2f73667363612e63726c3027a025a023862168747470" +
+ "3a2f2f63726c2e737461727473736c2e636f6d2f73667363612e63726c3081800603551d" +
+ "20047930773075060b2b0601040181b5370102013066302e06082b060105050702011622" +
+ "687474703a2f2f7777772e737461727473736c2e636f6d2f706f6c6963792e7064663034" +
+ "06082b060105050702011628687474703a2f2f7777772e737461727473736c2e636f6d2f" +
+ "696e7465726d6564696174652e706466300d06092a864886f70d01010505000382020100" +
+ "2109493ea5886ee00b8b48da314d8ff75657a2e1d36257e9b556f38545753be5501f048b" +
+ "e6a05a3ee700ae85d0fbff200364cbad02e1c69172f8a34dd6dee8cc3fa18aa2e37c37a7" +
+ "c64f8f35d6f4d66e067bdd21d9cf56ffcb302249fe8904f385e5aaf1e71fe875904dddf9" +
+ "46f74234f745580c110d84b0c6da5d3ef9019ee7e1da5595be741c7bfc4d144fac7e5547" +
+ "7d7bf4a50d491e95e8f712c1ccff76a62547d0f37535be97b75816ebaa5c786fec5330af" +
+ "ea044dcca902e3f0b60412f630b1113d904e5664d7dc3c435f7339ef4baf87ebf6fe6888" +
+ "4472ead207c669b0c1a18bef1749d761b145485f3b2021e95bb2ccf4d7e931f50b15613b" +
+ "7a94e3ebd9bc7f94ae6ae3626296a8647cb887f399327e92a252bebbf865cfc9f230fc8b" +
+ "c1c2a696d75f89e15c3480f58f47072fb491bfb1a27e5f4b5ad05b9f248605515a690365" +
+ "434971c5e06f94346bf61bd8a9b04c7e53eb8f48dfca33b548fa364a1a53a6330cd089cd" +
+ "4915cd89313c90c072d7654b52358a461144b93d8e2865a63e799e5c084429adb035112e" +
+ "214eb8d2e7103e5d8483b3c3c2e4d2c6fd094b7409ddf1b3d3193e800da20b19f038e7c5" +
+ "c2afe223db61e29d5c6e2089492e236ab262c145b49faf8ba7f1223bf87de290d07a19fb" +
+ "4a4ce3d27d5f4a8303ed27d6239e6b8db459a2d9ef6c8229dd75193c3f4c108defbb7527" +
+ "d2ae83a7a8ce5ba7"
+
+const ocspResponseWithoutCertHex = "308201d40a0100a08201cd308201c906092b0601050507300101048201ba3082" +
+ "01b630819fa2160414884451ff502a695e2d88f421bad90cf2cecbea7c180f3230313330" +
+ "3631383037323434335a30743072304a300906052b0e03021a0500041448b60d38238df8" +
+ "456e4ee5843ea394111802979f0414884451ff502a695e2d88f421bad90cf2cecbea7c02" +
+ "1100f78b13b946fc9635d8ab49de9d2148218000180f3230313330363138303732343433" +
+ "5aa011180f32303133303632323037323434335a300d06092a864886f70d010105050003" +
+ "82010100103e18b3d297a5e7a6c07a4fc52ac46a15c0eba96f3be17f0ffe84de5b8c8e05" +
+ "5a8f577586a849dc4abd6440eb6fedde4622451e2823c1cbf3558b4e8184959c9fe96eff" +
+ "8bc5f95866c58c6d087519faabfdae37e11d9874f1bc0db292208f645dd848185e4dd38b" +
+ "6a8547dfa7b74d514a8470015719064d35476b95bebb03d4d2845c5ca15202d2784878f2" +
+ "0f904c24f09736f044609e9c271381713400e563023d212db422236440c6f377bbf24b2b" +
+ "9e7dec8698e36a8df68b7592ad3489fb2937afb90eb85d2aa96b81c94c25057dbd4759d9" +
+ "20a1a65c7f0b6427a224b3c98edd96b9b61f706099951188b0289555ad30a216fb774651" +
+ "5a35fca2e054dfa8"
+
+// PKIX nonce extension
+var ocspExtensionOID = asn1.ObjectIdentifier{1, 3, 6, 1, 5, 5, 7, 48, 1, 2}
+var ocspExtensionValueHex = "0403000000"
+
+const ocspResponseWithCriticalExtensionHex = "308204fe0a0100a08204f7308204f306092b0601050507300101048204e4308204e03081" +
+ "dba003020100a11b3019311730150603550403130e4f43535020526573706f6e64657218" +
+ "0f32303136303130343137303130305a3081a53081a23049300906052b0e03021a050004" +
+ "14c0fe0278fc99188891b3f212e9c7e1b21ab7bfc004140dfc1df0a9e0f01ce7f2b21317" +
+ "7e6f8d157cd4f60210017f77deb3bcbb235d44ccc7dba62e72a116180f32303130303730" +
+ "373135303130355aa0030a0101180f32303130303730373135303130355aa011180f3230" +
+ "3130303730373138333531375aa1193017301506092b06010505073001020101ff040504" +
+ "03000000300d06092a864886f70d01010b0500038201010031c730ca60a7a0d92d8e4010" +
+ "911b469de95b4d27e89de6537552436237967694f76f701cf6b45c932bd308bca4a8d092" +
+ "5c604ba94796903091d9e6c000178e72c1f0a24a277dd262835af5d17d3f9d7869606c9f" +
+ "e7c8e708a41645699895beee38bfa63bb46296683761c5d1d65439b8ab868dc3017c9eeb" +
+ "b70b82dbf3a31c55b457d48bb9e82b335ed49f445042eaf606b06a3e0639824924c89c63" +
+ "eccddfe85e6694314138b2536f5e15e07085d0f6e26d4b2f8244bab0d70de07283ac6384" +
+ "a0501fc3dea7cf0adfd4c7f34871080900e252ddc403e3f0265f2a704af905d3727504ed" +
+ "28f3214a219d898a022463c78439799ca81c8cbafdbcec34ea937cd6a08202ea308202e6" +
+ "308202e2308201caa003020102020101300d06092a864886f70d01010b05003019311730" +
+ "150603550403130e4f43535020526573706f6e646572301e170d31353031333031353530" +
+ "33335a170d3136303133303135353033335a3019311730150603550403130e4f43535020" +
+ "526573706f6e64657230820122300d06092a864886f70d01010105000382010f00308201" +
+ "0a0282010100e8155f2d3e6f2e8d14c62a788bd462f9f844e7a6977c83ef1099f0f6616e" +
+ "c5265b56f356e62c5400f0b06a2e7945a82752c636df32a895152d6074df1701dc6ccfbc" +
+ "bec75a70bd2b55ae2be7e6cad3b5fd4cd5b7790ab401a436d3f5f346074ffde8a99d5b72" +
+ "3350f0a112076614b12ef79c78991b119453445acf2416ab0046b540db14c9fc0f27b898" +
+ "9ad0f63aa4b8aefc91aa8a72160c36307c60fec78a93d3fddf4259902aa77e7332971c7d" +
+ "285b6a04f648993c6922a3e9da9adf5f81508c3228791843e5d49f24db2f1290bafd97e6" +
+ "55b1049a199f652cd603c4fafa330c390b0da78fbbc67e8fa021cbd74eb96222b12ace31" +
+ "a77dcf920334dc94581b0203010001a3353033300e0603551d0f0101ff04040302078030" +
+ "130603551d25040c300a06082b06010505070309300c0603551d130101ff04023000300d" +
+ "06092a864886f70d01010b05000382010100718012761b5063e18f0dc44644d8e6ab8612" +
+ "31c15fd5357805425d82aec1de85bf6d3e30fce205e3e3b8b795bbe52e40a439286d2288" +
+ "9064f4aeeb150359b9425f1da51b3a5c939018555d13ac42c565a0603786a919328f3267" +
+ "09dce52c22ad958ecb7873b9771d1148b1c4be2efe80ba868919fc9f68b6090c2f33c156" +
+ "d67156e42766a50b5d51e79637b7e58af74c2a951b1e642fa7741fec982cc937de37eff5" +
+ "9e2005d5939bfc031589ca143e6e8ab83f40ee08cc20a6b4a95a318352c28d18528dcaf9" +
+ "66705de17afa19d6e8ae91ddf33179d16ebb6ac2c69cae8373d408ebf8c55308be6c04d9" +
+ "3a25439a94299a65a709756c7a3e568be049d5c38839"
+
+const ocspResponseWithExtensionHex = "308204fb0a0100a08204f4308204f006092b0601050507300101048204e1308204dd3081" +
+ "d8a003020100a11b3019311730150603550403130e4f43535020526573706f6e64657218" +
+ "0f32303136303130343136353930305a3081a230819f3049300906052b0e03021a050004" +
+ "14c0fe0278fc99188891b3f212e9c7e1b21ab7bfc004140dfc1df0a9e0f01ce7f2b21317" +
+ "7e6f8d157cd4f60210017f77deb3bcbb235d44ccc7dba62e72a116180f32303130303730" +
+ "373135303130355aa0030a0101180f32303130303730373135303130355aa011180f3230" +
+ "3130303730373138333531375aa1163014301206092b0601050507300102040504030000" +
+ "00300d06092a864886f70d01010b05000382010100c09a33e0b2324c852421bb83f85ac9" +
+ "9113f5426012bd2d2279a8166e9241d18a33c870894250622ffc7ed0c4601b16d624f90b" +
+ "779265442cdb6868cf40ab304ab4b66e7315ed02cf663b1601d1d4751772b31bc299db23" +
+ "9aebac78ed6797c06ed815a7a8d18d63cfbb609cafb47ec2e89e37db255216eb09307848" +
+ "d01be0a3e943653c78212b96ff524b74c9ec456b17cdfb950cc97645c577b2e09ff41dde" +
+ "b03afb3adaa381cc0f7c1d95663ef22a0f72f2c45613ae8e2b2d1efc96e8463c7d1d8a1d" +
+ "7e3b35df8fe73a301fc3f804b942b2b3afa337ff105fc1462b7b1c1d75eb4566c8665e59" +
+ "f80393b0adbf8004ff6c3327ed34f007cb4a3348a7d55e06e3a08202ea308202e6308202" +
+ "e2308201caa003020102020101300d06092a864886f70d01010b05003019311730150603" +
+ "550403130e4f43535020526573706f6e646572301e170d3135303133303135353033335a" +
+ "170d3136303133303135353033335a3019311730150603550403130e4f43535020526573" +
+ "706f6e64657230820122300d06092a864886f70d01010105000382010f003082010a0282" +
+ "010100e8155f2d3e6f2e8d14c62a788bd462f9f844e7a6977c83ef1099f0f6616ec5265b" +
+ "56f356e62c5400f0b06a2e7945a82752c636df32a895152d6074df1701dc6ccfbcbec75a" +
+ "70bd2b55ae2be7e6cad3b5fd4cd5b7790ab401a436d3f5f346074ffde8a99d5b723350f0" +
+ "a112076614b12ef79c78991b119453445acf2416ab0046b540db14c9fc0f27b8989ad0f6" +
+ "3aa4b8aefc91aa8a72160c36307c60fec78a93d3fddf4259902aa77e7332971c7d285b6a" +
+ "04f648993c6922a3e9da9adf5f81508c3228791843e5d49f24db2f1290bafd97e655b104" +
+ "9a199f652cd603c4fafa330c390b0da78fbbc67e8fa021cbd74eb96222b12ace31a77dcf" +
+ "920334dc94581b0203010001a3353033300e0603551d0f0101ff04040302078030130603" +
+ "551d25040c300a06082b06010505070309300c0603551d130101ff04023000300d06092a" +
+ "864886f70d01010b05000382010100718012761b5063e18f0dc44644d8e6ab861231c15f" +
+ "d5357805425d82aec1de85bf6d3e30fce205e3e3b8b795bbe52e40a439286d22889064f4" +
+ "aeeb150359b9425f1da51b3a5c939018555d13ac42c565a0603786a919328f326709dce5" +
+ "2c22ad958ecb7873b9771d1148b1c4be2efe80ba868919fc9f68b6090c2f33c156d67156" +
+ "e42766a50b5d51e79637b7e58af74c2a951b1e642fa7741fec982cc937de37eff59e2005" +
+ "d5939bfc031589ca143e6e8ab83f40ee08cc20a6b4a95a318352c28d18528dcaf966705d" +
+ "e17afa19d6e8ae91ddf33179d16ebb6ac2c69cae8373d408ebf8c55308be6c04d93a2543" +
+ "9a94299a65a709756c7a3e568be049d5c38839"
+
+const ocspMultiResponseHex = "30820ee60a0100a0820edf30820edb06092b060105050730010104820ecc30820ec83082" +
+ "0839a216041445ac2ecd75f53f1cf6e4c51d3de0047ad0aa7465180f3230313530363032" +
+ "3130303033305a3082080c3065303d300906052b0e03021a05000414f7452a0080601527" +
+ "72e4a135e76e9e52fde0f1580414edd8f2ee977252853a330b297a18f5c993853b3f0204" +
+ "5456656a8000180f32303135303630323039303230375aa011180f323031353036303331" +
+ "30303033305a3065303d300906052b0e03021a05000414f7452a008060152772e4a135e7" +
+ "6e9e52fde0f1580414edd8f2ee977252853a330b297a18f5c993853b3f02045456656b80" +
+ "00180f32303135303630323039303230375aa011180f3230313530363033313030303330" +
+ "5a3065303d300906052b0e03021a05000414f7452a008060152772e4a135e76e9e52fde0" +
+ "f1580414edd8f2ee977252853a330b297a18f5c993853b3f02045456656c8000180f3230" +
+ "3135303630323039303230375aa011180f32303135303630333130303033305a3065303d" +
+ "300906052b0e03021a05000414f7452a008060152772e4a135e76e9e52fde0f1580414ed" +
+ "d8f2ee977252853a330b297a18f5c993853b3f02045456656d8000180f32303135303630" +
+ "323039303230375aa011180f32303135303630333130303033305a3065303d300906052b" +
+ "0e03021a05000414f7452a008060152772e4a135e76e9e52fde0f1580414edd8f2ee9772" +
+ "52853a330b297a18f5c993853b3f02045456656e8000180f323031353036303230393032" +
+ "30375aa011180f32303135303630333130303033305a3065303d300906052b0e03021a05" +
+ "000414f7452a008060152772e4a135e76e9e52fde0f1580414edd8f2ee977252853a330b" +
+ "297a18f5c993853b3f02045456656f8000180f32303135303630323039303230375aa011" +
+ "180f32303135303630333130303033305a3065303d300906052b0e03021a05000414f745" +
+ "2a008060152772e4a135e76e9e52fde0f1580414edd8f2ee977252853a330b297a18f5c9" +
+ "93853b3f0204545665708000180f32303135303630323039303230375aa011180f323031" +
+ "35303630333130303033305a3065303d300906052b0e03021a05000414f7452a00806015" +
+ "2772e4a135e76e9e52fde0f1580414edd8f2ee977252853a330b297a18f5c993853b3f02" +
+ "04545665718000180f32303135303630323039303230375aa011180f3230313530363033" +
+ "3130303033305a3065303d300906052b0e03021a05000414f7452a008060152772e4a135" +
+ "e76e9e52fde0f1580414edd8f2ee977252853a330b297a18f5c993853b3f020454566572" +
+ "8000180f32303135303630323039303230375aa011180f32303135303630333130303033" +
+ "305a3065303d300906052b0e03021a05000414f7452a008060152772e4a135e76e9e52fd" +
+ "e0f1580414edd8f2ee977252853a330b297a18f5c993853b3f0204545665738000180f32" +
+ "303135303630323039303230375aa011180f32303135303630333130303033305a306530" +
+ "3d300906052b0e03021a05000414f7452a008060152772e4a135e76e9e52fde0f1580414" +
+ "edd8f2ee977252853a330b297a18f5c993853b3f0204545665748000180f323031353036" +
+ "30323039303230375aa011180f32303135303630333130303033305a3065303d30090605" +
+ "2b0e03021a05000414f7452a008060152772e4a135e76e9e52fde0f1580414edd8f2ee97" +
+ "7252853a330b297a18f5c993853b3f0204545665758000180f3230313530363032303930" +
+ "3230375aa011180f32303135303630333130303033305a3065303d300906052b0e03021a" +
+ "05000414f7452a008060152772e4a135e76e9e52fde0f1580414edd8f2ee977252853a33" +
+ "0b297a18f5c993853b3f0204545665768000180f32303135303630323039303230375aa0" +
+ "11180f32303135303630333130303033305a3065303d300906052b0e03021a05000414f7" +
+ "452a008060152772e4a135e76e9e52fde0f1580414edd8f2ee977252853a330b297a18f5" +
+ "c993853b3f0204545665778000180f32303135303630323039303230375aa011180f3230" +
+ "3135303630333130303033305a3065303d300906052b0e03021a05000414f7452a008060" +
+ "152772e4a135e76e9e52fde0f1580414edd8f2ee977252853a330b297a18f5c993853b3f" +
+ "0204545665788000180f32303135303630323039303230375aa011180f32303135303630" +
+ "333130303033305a3065303d300906052b0e03021a05000414f7452a008060152772e4a1" +
+ "35e76e9e52fde0f1580414edd8f2ee977252853a330b297a18f5c993853b3f0204545665" +
+ "798000180f32303135303630323039303230375aa011180f323031353036303331303030" +
+ "33305a3065303d300906052b0e03021a05000414f7452a008060152772e4a135e76e9e52" +
+ "fde0f1580414edd8f2ee977252853a330b297a18f5c993853b3f02045456657a8000180f" +
+ "32303135303630323039303230375aa011180f32303135303630333130303033305a3065" +
+ "303d300906052b0e03021a05000414f7452a008060152772e4a135e76e9e52fde0f15804" +
+ "14edd8f2ee977252853a330b297a18f5c993853b3f02045456657b8000180f3230313530" +
+ "3630323039303230375aa011180f32303135303630333130303033305a3065303d300906" +
+ "052b0e03021a05000414f7452a008060152772e4a135e76e9e52fde0f1580414edd8f2ee" +
+ "977252853a330b297a18f5c993853b3f02045456657c8000180f32303135303630323039" +
+ "303230375aa011180f32303135303630333130303033305a3065303d300906052b0e0302" +
+ "1a05000414f7452a008060152772e4a135e76e9e52fde0f1580414edd8f2ee977252853a" +
+ "330b297a18f5c993853b3f02045456657d8000180f32303135303630323039303230375a" +
+ "a011180f32303135303630333130303033305a300d06092a864886f70d01010505000382" +
+ "01010016b73b92859979f27d15eb018cf069eed39c3d280213565f3026de11ba15bdb94d" +
+ "764cf2d0fdd204ef926c588d7b183483c8a2b1995079c7ed04dcefcc650c1965be4b6832" +
+ "a8839e832f7f60f638425eccdf9bc3a81fbe700fda426ddf4f06c29bee431bbbe81effda" +
+ "a60b7da5b378f199af2f3c8380be7ba6c21c8e27124f8a4d8989926aea19055700848d33" +
+ "799e833512945fd75364edbd2dd18b783c1e96e332266b17979a0b88c35b43f47c87c493" +
+ "19155056ad8dbbae5ff2afad3c0e1c69ed111206ffda49875e8e4efc0926264823bc4423" +
+ "c8a002f34288c4bc22516f98f54fc609943721f590ddd8d24f989457526b599b0eb75cb5" +
+ "a80da1ad93a621a08205733082056f3082056b30820453a0030201020204545638c4300d" +
+ "06092a864886f70d01010b0500308182310b300906035504061302555331183016060355" +
+ "040a130f552e532e20476f7665726e6d656e7431233021060355040b131a446570617274" +
+ "6d656e74206f662074686520547265617375727931223020060355040b13194365727469" +
+ "6669636174696f6e20417574686f7269746965733110300e060355040b13074f43494f20" +
+ "4341301e170d3135303332303131353531335a170d3135303633303034303030305a3081" +
+ "98310b300906035504061302555331183016060355040a130f552e532e20476f7665726e" +
+ "6d656e7431233021060355040b131a4465706172746d656e74206f662074686520547265" +
+ "617375727931223020060355040b131943657274696669636174696f6e20417574686f72" +
+ "69746965733110300e060355040b13074f43494f204341311430120603550403130b4f43" +
+ "5350205369676e657230820122300d06092a864886f70d01010105000382010f00308201" +
+ "0a0282010100c1b6fe1ba1ad50bb98c855811acbd67fe68057f48b8e08d3800e7f2c51b7" +
+ "9e20551934971fd92b9c9e6c49453097927cba83a94c0b2fea7124ba5ac442b38e37dba6" +
+ "7303d4962dd7d92b22a04b0e0e182e9ea67620b1c6ce09ee607c19e0e6e3adae81151db1" +
+ "2bb7f706149349a292e21c1eb28565b6839df055e1a838a772ff34b5a1452618e2c26042" +
+ "705d53f0af4b57aae6163f58216af12f3887813fe44b0321827b3a0c52b0e47d0aab94a2" +
+ "f768ab0ba3901d22f8bb263823090b0e37a7f8856db4b0d165c42f3aa7e94f5f6ce1855e" +
+ "98dc57adea0ae98ad39f67ecdec00b88685566e9e8d69f6cefb6ddced53015d0d3b862bc" +
+ "be21f3d72251eefcec730203010001a38201cf308201cb300e0603551d0f0101ff040403" +
+ "020780306b0603551d2004643062300c060a60864801650302010502300c060a60864801" +
+ "650302010503300c060a60864801650302010504300c060a60864801650302010507300c" +
+ "060a60864801650302010508300c060a6086480165030201030d300c060a608648016503" +
+ "020103113081e506082b060105050701010481d83081d5303006082b0601050507300286" +
+ "24687474703a2f2f706b692e74726561732e676f762f746f63615f65655f6169612e7037" +
+ "633081a006082b060105050730028681936c6461703a2f2f6c6461702e74726561732e67" +
+ "6f762f6f753d4f43494f25323043412c6f753d43657274696669636174696f6e25323041" +
+ "7574686f7269746965732c6f753d4465706172746d656e742532306f6625323074686525" +
+ "323054726561737572792c6f3d552e532e253230476f7665726e6d656e742c633d55533f" +
+ "634143657274696669636174653b62696e61727930130603551d25040c300a06082b0601" +
+ "0505070309300f06092b060105050730010504020500301f0603551d23041830168014a2" +
+ "13a8e5c607546c243d4eb72b27a2a7711ab5af301d0603551d0e0416041451f98046818a" +
+ "e46d953ac90c210ccfaa1a06980c300d06092a864886f70d01010b050003820101003a37" +
+ "0b301d14ffdeb370883639bec5ae6f572dcbddadd672af16ee2a8303316b14e1fbdca8c2" +
+ "8f4bad9c7b1410250e149c14e9830ca6f17370a8d13151205d956e28c141cc0500379596" +
+ "c5b9239fcfa3d2de8f1d4f1a2b1bf2d1851bed1c86012ee8135bdc395cd4496ce69fadd0" +
+ "3b682b90350ca7b4f458190b7a0ab5c33a04cf1347a77d541877a380a4c94988c5658908" +
+ "44fdc22637a72b9fa410333e2caf969477f9fe07f50e3681c204fb3bf073b9da01cd8d91" +
+ "8044c40b1159955af12a3263ab1d34119d7f59bfa6cae88ed058addc4e08250263f8f836" +
+ "2f5bdffd45636fea7474c60a55c535954477b2f286e1b2535f0dd12c162f1b353c370e08" +
+ "be67"
+
+const ocspMultiResponseCertHex = "308207943082067ca003020102020454566573300d06092a864886f70d01010b05003081" +
+ "82310b300906035504061302555331183016060355040a130f552e532e20476f7665726e" +
+ "6d656e7431233021060355040b131a4465706172746d656e74206f662074686520547265" +
+ "617375727931223020060355040b131943657274696669636174696f6e20417574686f72" +
+ "69746965733110300e060355040b13074f43494f204341301e170d313530343130313535" +
+ "3733385a170d3138303431303136323733385a30819d310b300906035504061302555331" +
+ "183016060355040a130f552e532e20476f7665726e6d656e7431233021060355040b131a" +
+ "4465706172746d656e74206f662074686520547265617375727931253023060355040b13" +
+ "1c427572656175206f66207468652046697363616c20536572766963653110300e060355" +
+ "040b130744657669636573311630140603550403130d706b692e74726561732e676f7630" +
+ "820122300d06092a864886f70d01010105000382010f003082010a0282010100c7273623" +
+ "8c49c48bf501515a2490ef6e5ae0c06e0ad2aa9a6bb77f3d0370d846b2571581ebf38fd3" +
+ "1948daad3dec7a4da095f1dcbe9654e65bcf7acdfd4ee802421dad9b90536c721d2bca58" +
+ "8413e6bfd739a72470560bb7d64f9a09284f90ff8af1d5a3c5c84d0f95a00f9c6d988dd0" +
+ "d87f1d0d3344580901c955139f54d09de0acdbd3322b758cb0c58881bf04913243401f44" +
+ "013fd9f6d8348044cc8bb0a71978ad93366b2a4687a5274b2ee07d0fb40225453eb244ed" +
+ "b20152251ac77c59455260ff07eeceb3cb3c60fb8121cf92afd3daa2a4650e1942ccb555" +
+ "de10b3d481feb299838ef05d0fd1810b146753472ae80da65dd34da25ca1f89971f10039" +
+ "0203010001a38203f3308203ef300e0603551d0f0101ff0404030205a030170603551d20" +
+ "0410300e300c060a60864801650302010503301106096086480186f84201010404030206" +
+ "4030130603551d25040c300a06082b060105050703013082010806082b06010505070101" +
+ "0481fb3081f8303006082b060105050730028624687474703a2f2f706b692e7472656173" +
+ "2e676f762f746f63615f65655f6169612e7037633081a006082b06010505073002868193" +
+ "6c6461703a2f2f6c6461702e74726561732e676f762f6f753d4f43494f25323043412c6f" +
+ "753d43657274696669636174696f6e253230417574686f7269746965732c6f753d446570" +
+ "6172746d656e742532306f6625323074686525323054726561737572792c6f3d552e532e" +
+ "253230476f7665726e6d656e742c633d55533f634143657274696669636174653b62696e" +
+ "617279302106082b060105050730018615687474703a2f2f6f6373702e74726561732e67" +
+ "6f76307b0603551d1104743072811c6373612d7465616d4066697363616c2e7472656173" +
+ "7572792e676f768210706b692e74726561737572792e676f768210706b692e64696d632e" +
+ "6468732e676f76820d706b692e74726561732e676f76811f6563622d686f7374696e6740" +
+ "66697363616c2e74726561737572792e676f76308201890603551d1f048201803082017c" +
+ "3027a025a0238621687474703a2f2f706b692e74726561732e676f762f4f43494f5f4341" +
+ "332e63726c3082014fa082014ba0820147a48197308194310b3009060355040613025553" +
+ "31183016060355040a130f552e532e20476f7665726e6d656e7431233021060355040b13" +
+ "1a4465706172746d656e74206f662074686520547265617375727931223020060355040b" +
+ "131943657274696669636174696f6e20417574686f7269746965733110300e060355040b" +
+ "13074f43494f2043413110300e0603550403130743524c313430398681aa6c6461703a2f" +
+ "2f6c6461702e74726561732e676f762f636e3d43524c313430392c6f753d4f43494f2532" +
+ "3043412c6f753d43657274696669636174696f6e253230417574686f7269746965732c6f" +
+ "753d4465706172746d656e742532306f6625323074686525323054726561737572792c6f" +
+ "3d552e532e253230476f7665726e6d656e742c633d55533f636572746966696361746552" +
+ "65766f636174696f6e4c6973743b62696e617279302b0603551d1004243022800f323031" +
+ "35303431303135353733385a810f32303138303431303136323733385a301f0603551d23" +
+ "041830168014a213a8e5c607546c243d4eb72b27a2a7711ab5af301d0603551d0e041604" +
+ "14b0869c12c293914cd460e33ed43e6c5a26e0d68f301906092a864886f67d074100040c" +
+ "300a1b0456382e31030203a8300d06092a864886f70d01010b050003820101004968d182" +
+ "8f9efdc147e747bb5dda15536a42a079b32d3d7f87e619b483aeee70b7e26bda393c6028" +
+ "7c733ecb468fe8b8b11bf809ff76add6b90eb25ad8d3a1052e43ee281e48a3a1ebe7efb5" +
+ "9e2c4a48765dedeb23f5346242145786cc988c762d230d28dd33bf4c2405d80cbb2cb1d6" +
+ "4c8f10ba130d50cb174f6ffb9cfc12808297a2cefba385f4fad170f39b51ebd87c12abf9" +
+ "3c51fc000af90d8aaba78f48923908804a5eb35f617ccf71d201e3708a559e6d16f9f13e" +
+ "074361eb9007e28d86bb4e0bfa13aad0e9ddd9124e84519de60e2fc6040b18d9fd602b02" +
+ "684b4c071c3019fc842197d00c120c41654bcbfbc4a096a1c637b79112b81ce1fa3899f9"
+
+const ocspRequestHex = "3051304f304d304b3049300906052b0e03021a05000414c0fe0278fc99188891b3f212e9" +
+ "c7e1b21ab7bfc004140dfc1df0a9e0f01ce7f2b213177e6f8d157cd4f60210017f77deb3" +
+ "bcbb235d44ccc7dba62e72"
+
+const leafCertHex = "308203c830820331a0030201020210017f77deb3bcbb235d44ccc7dba62e72300d06092a" +
+ "864886f70d01010505003081ba311f301d060355040a1316566572695369676e20547275" +
+ "7374204e6574776f726b31173015060355040b130e566572695369676e2c20496e632e31" +
+ "333031060355040b132a566572695369676e20496e7465726e6174696f6e616c20536572" +
+ "766572204341202d20436c617373203331493047060355040b13407777772e7665726973" +
+ "69676e2e636f6d2f43505320496e636f72702e6279205265662e204c494142494c495459" +
+ "204c54442e286329393720566572695369676e301e170d3132303632313030303030305a" +
+ "170d3133313233313233353935395a3068310b3009060355040613025553311330110603" +
+ "550408130a43616c69666f726e6961311230100603550407130950616c6f20416c746f31" +
+ "173015060355040a130e46616365626f6f6b2c20496e632e311730150603550403140e2a" +
+ "2e66616365626f6f6b2e636f6d30819f300d06092a864886f70d010101050003818d0030" +
+ "818902818100ae94b171e2deccc1693e051063240102e0689ae83c39b6b3e74b97d48d7b" +
+ "23689100b0b496ee62f0e6d356bcf4aa0f50643402f5d1766aa972835a7564723f39bbef" +
+ "5290ded9bcdbf9d3d55dfad23aa03dc604c54d29cf1d4b3bdbd1a809cfae47b44c7eae17" +
+ "c5109bee24a9cf4a8d911bb0fd0415ae4c3f430aa12a557e2ae10203010001a382011e30" +
+ "82011a30090603551d130402300030440603551d20043d303b3039060b6086480186f845" +
+ "01071703302a302806082b06010505070201161c68747470733a2f2f7777772e76657269" +
+ "7369676e2e636f6d2f727061303c0603551d1f043530333031a02fa02d862b687474703a" +
+ "2f2f535652496e746c2d63726c2e766572697369676e2e636f6d2f535652496e746c2e63" +
+ "726c301d0603551d250416301406082b0601050507030106082b06010505070302300b06" +
+ "03551d0f0404030205a0303406082b0601050507010104283026302406082b0601050507" +
+ "30018618687474703a2f2f6f6373702e766572697369676e2e636f6d30270603551d1104" +
+ "20301e820e2a2e66616365626f6f6b2e636f6d820c66616365626f6f6b2e636f6d300d06" +
+ "092a864886f70d0101050500038181005b6c2b75f8ed30aa51aad36aba595e555141951f" +
+ "81a53b447910ac1f76ff78fc2781616b58f3122afc1c87010425e9ed43df1a7ba6498060" +
+ "67e2688af03db58c7df4ee03309a6afc247ccb134dc33e54c6bc1d5133a532a73273b1d7" +
+ "9cadc08e7e1a83116d34523340b0305427a21742827c98916698ee7eaf8c3bdd71700817"
+
+const issuerCertHex = "30820383308202eca003020102021046fcebbab4d02f0f926098233f93078f300d06092a" +
+ "864886f70d0101050500305f310b300906035504061302555331173015060355040a130e" +
+ "566572695369676e2c20496e632e31373035060355040b132e436c617373203320507562" +
+ "6c6963205072696d6172792043657274696669636174696f6e20417574686f7269747930" +
+ "1e170d3937303431373030303030305a170d3136313032343233353935395a3081ba311f" +
+ "301d060355040a1316566572695369676e205472757374204e6574776f726b3117301506" +
+ "0355040b130e566572695369676e2c20496e632e31333031060355040b132a5665726953" +
+ "69676e20496e7465726e6174696f6e616c20536572766572204341202d20436c61737320" +
+ "3331493047060355040b13407777772e766572697369676e2e636f6d2f43505320496e63" +
+ "6f72702e6279205265662e204c494142494c495459204c54442e28632939372056657269" +
+ "5369676e30819f300d06092a864886f70d010101050003818d0030818902818100d88280" +
+ "e8d619027d1f85183925a2652be1bfd405d3bce6363baaf04c6c5bb6e7aa3c734555b2f1" +
+ "bdea9742ed9a340a15d4a95cf54025ddd907c132b2756cc4cabba3fe56277143aa63f530" +
+ "3e9328e5faf1093bf3b74d4e39f75c495ab8c11dd3b28afe70309542cbfe2b518b5a3c3a" +
+ "f9224f90b202a7539c4f34e7ab04b27b6f0203010001a381e33081e0300f0603551d1304" +
+ "0830060101ff02010030440603551d20043d303b3039060b6086480186f8450107010130" +
+ "2a302806082b06010505070201161c68747470733a2f2f7777772e766572697369676e2e" +
+ "636f6d2f43505330340603551d25042d302b06082b0601050507030106082b0601050507" +
+ "030206096086480186f8420401060a6086480186f845010801300b0603551d0f04040302" +
+ "0106301106096086480186f842010104040302010630310603551d1f042a30283026a024" +
+ "a0228620687474703a2f2f63726c2e766572697369676e2e636f6d2f706361332e63726c" +
+ "300d06092a864886f70d010105050003818100408e4997968a73dd8e4def3e61b7caa062" +
+ "adf40e0abb753de26ed82cc7bff4b98c369bcaa2d09c724639f6a682036511c4bcbf2da6" +
+ "f5d93b0ab598fab378b91ef22b4c62d5fdb27a1ddf33fd73f9a5d82d8c2aead1fcb028b6" +
+ "e94948134b838a1b487b24f738de6f4154b8ab576b06dfc7a2d4a9f6f136628088f28b75" +
+ "d68071"
+
+// Key and certificate for the OCSP responder were not taken from the Thawte
+// responder, since CreateResponse requires that we have the private key.
+// Instead, they were generated randomly.
+const responderPrivateKeyHex = "308204a40201000282010100e8155f2d3e6f2e8d14c62a788bd462f9f844e7a6977c83ef" +
+ "1099f0f6616ec5265b56f356e62c5400f0b06a2e7945a82752c636df32a895152d6074df" +
+ "1701dc6ccfbcbec75a70bd2b55ae2be7e6cad3b5fd4cd5b7790ab401a436d3f5f346074f" +
+ "fde8a99d5b723350f0a112076614b12ef79c78991b119453445acf2416ab0046b540db14" +
+ "c9fc0f27b8989ad0f63aa4b8aefc91aa8a72160c36307c60fec78a93d3fddf4259902aa7" +
+ "7e7332971c7d285b6a04f648993c6922a3e9da9adf5f81508c3228791843e5d49f24db2f" +
+ "1290bafd97e655b1049a199f652cd603c4fafa330c390b0da78fbbc67e8fa021cbd74eb9" +
+ "6222b12ace31a77dcf920334dc94581b02030100010282010100bcf0b93d7238bda329a8" +
+ "72e7149f61bcb37c154330ccb3f42a85c9002c2e2bdea039d77d8581cd19bed94078794e" +
+ "56293d601547fc4bf6a2f9002fe5772b92b21b254403b403585e3130cc99ccf08f0ef81a" +
+ "575b38f597ba4660448b54f44bfbb97072b5a2bf043bfeca828cf7741d13698e3f38162b" +
+ "679faa646b82abd9a72c5c7d722c5fc577a76d2c2daac588accad18516d1bbad10b0dfa2" +
+ "05cfe246b59e28608a43942e1b71b0c80498075121de5b900d727c31c42c78cf1db5c0aa" +
+ "5b491e10ea4ed5c0962aaf2ae025dd81fa4ce490d9d6b4a4465411d8e542fc88617e5695" +
+ "1aa4fc8ea166f2b4d0eb89ef17f2b206bd5f1014bf8fe0e71fe62f2cccf102818100f2dc" +
+ "ddf878d553286daad68bac4070a82ffec3dc4666a2750f47879eec913f91836f1d976b60" +
+ "daf9356e078446dafab5bd2e489e5d64f8572ba24a4ba4f3729b5e106c4dd831cc2497a7" +
+ "e6c7507df05cb64aeb1bbc81c1e340d58b5964cf39cff84ea30c29ec5d3f005ee1362698" +
+ "07395037955955655292c3e85f6187fa1f9502818100f4a33c102630840705f8c778a47b" +
+ "87e8da31e68809af981ac5e5999cf1551685d761cdf0d6520361b99aebd5777a940fa64d" +
+ "327c09fa63746fbb3247ec73a86edf115f1fe5c83598db803881ade71c33c6e956118345" +
+ "497b98b5e07bb5be75971465ec78f2f9467e1b74956ca9d4c7c3e314e742a72d8b33889c" +
+ "6c093a466cef0281801d3df0d02124766dd0be98349b19eb36a508c4e679e793ba0a8bef" +
+ "4d786888c1e9947078b1ea28938716677b4ad8c5052af12eb73ac194915264a913709a0b" +
+ "7b9f98d4a18edd781a13d49899f91c20dbd8eb2e61d991ba19b5cdc08893f5cb9d39e5a6" +
+ "0629ea16d426244673b1b3ee72bd30e41fac8395acac40077403de5efd028180050731dd" +
+ "d71b1a2b96c8d538ba90bb6b62c8b1c74c03aae9a9f59d21a7a82b0d572ef06fa9c807bf" +
+ "c373d6b30d809c7871df96510c577421d9860c7383fda0919ece19996b3ca13562159193" +
+ "c0c246471e287f975e8e57034e5136aaf44254e2650def3d51292474c515b1588969112e" +
+ "0a85cc77073e9d64d2c2fc497844284b02818100d71d63eabf416cf677401ebf965f8314" +
+ "120b568a57dd3bd9116c629c40dc0c6948bab3a13cc544c31c7da40e76132ef5dd3f7534" +
+ "45a635930c74326ae3df0edd1bfb1523e3aa259873ac7cf1ac31151ec8f37b528c275622" +
+ "48f99b8bed59fd4da2576aa6ee20d93a684900bf907e80c66d6e2261ae15e55284b4ed9d" +
+ "6bdaa059"
+
+const responderCertHex = "308202e2308201caa003020102020101300d06092a864886f70d01010b05003019311730" +
+ "150603550403130e4f43535020526573706f6e646572301e170d31353031333031353530" +
+ "33335a170d3136303133303135353033335a3019311730150603550403130e4f43535020" +
+ "526573706f6e64657230820122300d06092a864886f70d01010105000382010f00308201" +
+ "0a0282010100e8155f2d3e6f2e8d14c62a788bd462f9f844e7a6977c83ef1099f0f6616e" +
+ "c5265b56f356e62c5400f0b06a2e7945a82752c636df32a895152d6074df1701dc6ccfbc" +
+ "bec75a70bd2b55ae2be7e6cad3b5fd4cd5b7790ab401a436d3f5f346074ffde8a99d5b72" +
+ "3350f0a112076614b12ef79c78991b119453445acf2416ab0046b540db14c9fc0f27b898" +
+ "9ad0f63aa4b8aefc91aa8a72160c36307c60fec78a93d3fddf4259902aa77e7332971c7d" +
+ "285b6a04f648993c6922a3e9da9adf5f81508c3228791843e5d49f24db2f1290bafd97e6" +
+ "55b1049a199f652cd603c4fafa330c390b0da78fbbc67e8fa021cbd74eb96222b12ace31" +
+ "a77dcf920334dc94581b0203010001a3353033300e0603551d0f0101ff04040302078030" +
+ "130603551d25040c300a06082b06010505070309300c0603551d130101ff04023000300d" +
+ "06092a864886f70d01010b05000382010100718012761b5063e18f0dc44644d8e6ab8612" +
+ "31c15fd5357805425d82aec1de85bf6d3e30fce205e3e3b8b795bbe52e40a439286d2288" +
+ "9064f4aeeb150359b9425f1da51b3a5c939018555d13ac42c565a0603786a919328f3267" +
+ "09dce52c22ad958ecb7873b9771d1148b1c4be2efe80ba868919fc9f68b6090c2f33c156" +
+ "d67156e42766a50b5d51e79637b7e58af74c2a951b1e642fa7741fec982cc937de37eff5" +
+ "9e2005d5939bfc031589ca143e6e8ab83f40ee08cc20a6b4a95a318352c28d18528dcaf9" +
+ "66705de17afa19d6e8ae91ddf33179d16ebb6ac2c69cae8373d408ebf8c55308be6c04d9" +
+ "3a25439a94299a65a709756c7a3e568be049d5c38839"
+
+const errorResponseHex = "30030a0101"
diff --git a/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/.gitattributes b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/.gitattributes
new file mode 100644
index 000000000..d2f212e5d
--- /dev/null
+++ b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/.gitattributes
@@ -0,0 +1,10 @@
+# Treat all files in this repo as binary, with no git magic updating
+# line endings. Windows users contributing to Go will need to use a
+# modern version of git and editors capable of LF line endings.
+#
+# We'll prevent accidental CRLF line endings from entering the repo
+# via the git-review gofmt checks.
+#
+# See golang.org/issue/9281
+
+* -text
diff --git a/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/.gitignore b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/.gitignore
new file mode 100644
index 000000000..8339fd61d
--- /dev/null
+++ b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/.gitignore
@@ -0,0 +1,2 @@
+# Add no patterns to .hgignore except for files generated by the build.
+last-change
diff --git a/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/AUTHORS b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/AUTHORS
new file mode 100644
index 000000000..15167cd74
--- /dev/null
+++ b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/AUTHORS
@@ -0,0 +1,3 @@
+# This source code refers to The Go Authors for copyright purposes.
+# The master list of authors is in the main Go distribution,
+# visible at http://tip.golang.org/AUTHORS.
diff --git a/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/CONTRIBUTING.md b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/CONTRIBUTING.md
new file mode 100644
index 000000000..88dff59bc
--- /dev/null
+++ b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/CONTRIBUTING.md
@@ -0,0 +1,31 @@
+# Contributing to Go
+
+Go is an open source project.
+
+It is the work of hundreds of contributors. We appreciate your help!
+
+
+## Filing issues
+
+When [filing an issue](https://golang.org/issue/new), make sure to answer these five questions:
+
+1. What version of Go are you using (`go version`)?
+2. What operating system and processor architecture are you using?
+3. What did you do?
+4. What did you expect to see?
+5. What did you see instead?
+
+General questions should go to the [golang-nuts mailing list](https://groups.google.com/group/golang-nuts) instead of the issue tracker.
+The gophers there will answer or ask you to file an issue if you've tripped over a bug.
+
+## Contributing code
+
+Please read the [Contribution Guidelines](https://golang.org/doc/contribute.html)
+before sending patches.
+
+**We do not accept GitHub pull requests**
+(we use [Gerrit](https://code.google.com/p/gerrit/) instead for code review).
+
+Unless otherwise noted, the Go source files are distributed under
+the BSD-style license found in the LICENSE file.
+
diff --git a/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/CONTRIBUTORS b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/CONTRIBUTORS
new file mode 100644
index 000000000..1c4577e96
--- /dev/null
+++ b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/CONTRIBUTORS
@@ -0,0 +1,3 @@
+# This source code was written by the Go contributors.
+# The master list of contributors is in the main Go distribution,
+# visible at http://tip.golang.org/CONTRIBUTORS.
diff --git a/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/LICENSE b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/LICENSE
new file mode 100644
index 000000000..6a66aea5e
--- /dev/null
+++ b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/LICENSE
@@ -0,0 +1,27 @@
+Copyright (c) 2009 The Go Authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+ * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/PATENTS b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/PATENTS
new file mode 100644
index 000000000..733099041
--- /dev/null
+++ b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/PATENTS
@@ -0,0 +1,22 @@
+Additional IP Rights Grant (Patents)
+
+"This implementation" means the copyrightable works distributed by
+Google as part of the Go project.
+
+Google hereby grants to You a perpetual, worldwide, non-exclusive,
+no-charge, royalty-free, irrevocable (except as stated in this section)
+patent license to make, have made, use, offer to sell, sell, import,
+transfer and otherwise run, modify and propagate the contents of this
+implementation of Go, where such license applies only to those patent
+claims, both currently owned or controlled by Google and acquired in
+the future, licensable by Google that are necessarily infringed by this
+implementation of Go. This grant does not include claims that would be
+infringed only as a consequence of further modification of this
+implementation. If you or your agent or exclusive licensee institute or
+order or agree to the institution of patent litigation against any
+entity (including a cross-claim or counterclaim in a lawsuit) alleging
+that this implementation of Go or any code incorporated within this
+implementation of Go constitutes direct or contributory patent
+infringement, or inducement of patent infringement, then any patent
+rights granted to you under this License for this implementation of Go
+shall terminate as of the date such litigation is filed.
diff --git a/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/README b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/README
new file mode 100644
index 000000000..6b13d8e50
--- /dev/null
+++ b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/README
@@ -0,0 +1,3 @@
+This repository holds supplementary Go networking libraries.
+
+To submit changes to this repository, see http://golang.org/doc/contribute.html.
diff --git a/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/codereview.cfg b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/codereview.cfg
new file mode 100644
index 000000000..3f8b14b64
--- /dev/null
+++ b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/codereview.cfg
@@ -0,0 +1 @@
+issuerepo: golang/go
diff --git a/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/context/context.go b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/context/context.go
new file mode 100644
index 000000000..f143ed6a1
--- /dev/null
+++ b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/context/context.go
@@ -0,0 +1,156 @@
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Package context defines the Context type, which carries deadlines,
+// cancelation signals, and other request-scoped values across API boundaries
+// and between processes.
+//
+// Incoming requests to a server should create a Context, and outgoing calls to
+// servers should accept a Context. The chain of function calls between must
+// propagate the Context, optionally replacing it with a modified copy created
+// using WithDeadline, WithTimeout, WithCancel, or WithValue.
+//
+// Programs that use Contexts should follow these rules to keep interfaces
+// consistent across packages and enable static analysis tools to check context
+// propagation:
+//
+// Do not store Contexts inside a struct type; instead, pass a Context
+// explicitly to each function that needs it. The Context should be the first
+// parameter, typically named ctx:
+//
+// func DoSomething(ctx context.Context, arg Arg) error {
+// // ... use ctx ...
+// }
+//
+// Do not pass a nil Context, even if a function permits it. Pass context.TODO
+// if you are unsure about which Context to use.
+//
+// Use context Values only for request-scoped data that transits processes and
+// APIs, not for passing optional parameters to functions.
+//
+// The same Context may be passed to functions running in different goroutines;
+// Contexts are safe for simultaneous use by multiple goroutines.
+//
+// See http://blog.golang.org/context for example code for a server that uses
+// Contexts.
+package context // import "golang.org/x/net/context"
+
+import "time"
+
+// A Context carries a deadline, a cancelation signal, and other values across
+// API boundaries.
+//
+// Context's methods may be called by multiple goroutines simultaneously.
+type Context interface {
+ // Deadline returns the time when work done on behalf of this context
+ // should be canceled. Deadline returns ok==false when no deadline is
+ // set. Successive calls to Deadline return the same results.
+ Deadline() (deadline time.Time, ok bool)
+
+ // Done returns a channel that's closed when work done on behalf of this
+ // context should be canceled. Done may return nil if this context can
+ // never be canceled. Successive calls to Done return the same value.
+ //
+ // WithCancel arranges for Done to be closed when cancel is called;
+ // WithDeadline arranges for Done to be closed when the deadline
+ // expires; WithTimeout arranges for Done to be closed when the timeout
+ // elapses.
+ //
+ // Done is provided for use in select statements:
+ //
+ // // Stream generates values with DoSomething and sends them to out
+ // // until DoSomething returns an error or ctx.Done is closed.
+ // func Stream(ctx context.Context, out chan<- Value) error {
+ // for {
+ // v, err := DoSomething(ctx)
+ // if err != nil {
+ // return err
+ // }
+ // select {
+ // case <-ctx.Done():
+ // return ctx.Err()
+ // case out <- v:
+ // }
+ // }
+ // }
+ //
+ // See http://blog.golang.org/pipelines for more examples of how to use
+ // a Done channel for cancelation.
+ Done() <-chan struct{}
+
+ // Err returns a non-nil error value after Done is closed. Err returns
+ // Canceled if the context was canceled or DeadlineExceeded if the
+ // context's deadline passed. No other values for Err are defined.
+ // After Done is closed, successive calls to Err return the same value.
+ Err() error
+
+ // Value returns the value associated with this context for key, or nil
+ // if no value is associated with key. Successive calls to Value with
+ // the same key returns the same result.
+ //
+ // Use context values only for request-scoped data that transits
+ // processes and API boundaries, not for passing optional parameters to
+ // functions.
+ //
+ // A key identifies a specific value in a Context. Functions that wish
+ // to store values in Context typically allocate a key in a global
+ // variable then use that key as the argument to context.WithValue and
+ // Context.Value. A key can be any type that supports equality;
+ // packages should define keys as an unexported type to avoid
+ // collisions.
+ //
+ // Packages that define a Context key should provide type-safe accessors
+ // for the values stores using that key:
+ //
+ // // Package user defines a User type that's stored in Contexts.
+ // package user
+ //
+ // import "golang.org/x/net/context"
+ //
+ // // User is the type of value stored in the Contexts.
+ // type User struct {...}
+ //
+ // // key is an unexported type for keys defined in this package.
+ // // This prevents collisions with keys defined in other packages.
+ // type key int
+ //
+ // // userKey is the key for user.User values in Contexts. It is
+ // // unexported; clients use user.NewContext and user.FromContext
+ // // instead of using this key directly.
+ // var userKey key = 0
+ //
+ // // NewContext returns a new Context that carries value u.
+ // func NewContext(ctx context.Context, u *User) context.Context {
+ // return context.WithValue(ctx, userKey, u)
+ // }
+ //
+ // // FromContext returns the User value stored in ctx, if any.
+ // func FromContext(ctx context.Context) (*User, bool) {
+ // u, ok := ctx.Value(userKey).(*User)
+ // return u, ok
+ // }
+ Value(key interface{}) interface{}
+}
+
+// Background returns a non-nil, empty Context. It is never canceled, has no
+// values, and has no deadline. It is typically used by the main function,
+// initialization, and tests, and as the top-level Context for incoming
+// requests.
+func Background() Context {
+ return background
+}
+
+// TODO returns a non-nil, empty Context. Code should use context.TODO when
+// it's unclear which Context to use or it is not yet available (because the
+// surrounding function has not yet been extended to accept a Context
+// parameter). TODO is recognized by static analysis tools that determine
+// whether Contexts are propagated correctly in a program.
+func TODO() Context {
+ return todo
+}
+
+// A CancelFunc tells an operation to abandon its work.
+// A CancelFunc does not wait for the work to stop.
+// After the first call, subsequent calls to a CancelFunc do nothing.
+type CancelFunc func()
diff --git a/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/context/context_test.go b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/context/context_test.go
new file mode 100644
index 000000000..62844131b
--- /dev/null
+++ b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/context/context_test.go
@@ -0,0 +1,583 @@
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build !go1.7
+
+package context
+
+import (
+ "fmt"
+ "math/rand"
+ "runtime"
+ "strings"
+ "sync"
+ "testing"
+ "time"
+)
+
+// otherContext is a Context that's not one of the types defined in context.go.
+// This lets us test code paths that differ based on the underlying type of the
+// Context.
+type otherContext struct {
+ Context
+}
+
+func TestBackground(t *testing.T) {
+ c := Background()
+ if c == nil {
+ t.Fatalf("Background returned nil")
+ }
+ select {
+ case x := <-c.Done():
+ t.Errorf("<-c.Done() == %v want nothing (it should block)", x)
+ default:
+ }
+ if got, want := fmt.Sprint(c), "context.Background"; got != want {
+ t.Errorf("Background().String() = %q want %q", got, want)
+ }
+}
+
+func TestTODO(t *testing.T) {
+ c := TODO()
+ if c == nil {
+ t.Fatalf("TODO returned nil")
+ }
+ select {
+ case x := <-c.Done():
+ t.Errorf("<-c.Done() == %v want nothing (it should block)", x)
+ default:
+ }
+ if got, want := fmt.Sprint(c), "context.TODO"; got != want {
+ t.Errorf("TODO().String() = %q want %q", got, want)
+ }
+}
+
+func TestWithCancel(t *testing.T) {
+ c1, cancel := WithCancel(Background())
+
+ if got, want := fmt.Sprint(c1), "context.Background.WithCancel"; got != want {
+ t.Errorf("c1.String() = %q want %q", got, want)
+ }
+
+ o := otherContext{c1}
+ c2, _ := WithCancel(o)
+ contexts := []Context{c1, o, c2}
+
+ for i, c := range contexts {
+ if d := c.Done(); d == nil {
+ t.Errorf("c[%d].Done() == %v want non-nil", i, d)
+ }
+ if e := c.Err(); e != nil {
+ t.Errorf("c[%d].Err() == %v want nil", i, e)
+ }
+
+ select {
+ case x := <-c.Done():
+ t.Errorf("<-c.Done() == %v want nothing (it should block)", x)
+ default:
+ }
+ }
+
+ cancel()
+ time.Sleep(100 * time.Millisecond) // let cancelation propagate
+
+ for i, c := range contexts {
+ select {
+ case <-c.Done():
+ default:
+ t.Errorf("<-c[%d].Done() blocked, but shouldn't have", i)
+ }
+ if e := c.Err(); e != Canceled {
+ t.Errorf("c[%d].Err() == %v want %v", i, e, Canceled)
+ }
+ }
+}
+
+func TestParentFinishesChild(t *testing.T) {
+ // Context tree:
+ // parent -> cancelChild
+ // parent -> valueChild -> timerChild
+ parent, cancel := WithCancel(Background())
+ cancelChild, stop := WithCancel(parent)
+ defer stop()
+ valueChild := WithValue(parent, "key", "value")
+ timerChild, stop := WithTimeout(valueChild, 10000*time.Hour)
+ defer stop()
+
+ select {
+ case x := <-parent.Done():
+ t.Errorf("<-parent.Done() == %v want nothing (it should block)", x)
+ case x := <-cancelChild.Done():
+ t.Errorf("<-cancelChild.Done() == %v want nothing (it should block)", x)
+ case x := <-timerChild.Done():
+ t.Errorf("<-timerChild.Done() == %v want nothing (it should block)", x)
+ case x := <-valueChild.Done():
+ t.Errorf("<-valueChild.Done() == %v want nothing (it should block)", x)
+ default:
+ }
+
+ // The parent's children should contain the two cancelable children.
+ pc := parent.(*cancelCtx)
+ cc := cancelChild.(*cancelCtx)
+ tc := timerChild.(*timerCtx)
+ pc.mu.Lock()
+ if len(pc.children) != 2 || !pc.children[cc] || !pc.children[tc] {
+ t.Errorf("bad linkage: pc.children = %v, want %v and %v",
+ pc.children, cc, tc)
+ }
+ pc.mu.Unlock()
+
+ if p, ok := parentCancelCtx(cc.Context); !ok || p != pc {
+ t.Errorf("bad linkage: parentCancelCtx(cancelChild.Context) = %v, %v want %v, true", p, ok, pc)
+ }
+ if p, ok := parentCancelCtx(tc.Context); !ok || p != pc {
+ t.Errorf("bad linkage: parentCancelCtx(timerChild.Context) = %v, %v want %v, true", p, ok, pc)
+ }
+
+ cancel()
+
+ pc.mu.Lock()
+ if len(pc.children) != 0 {
+ t.Errorf("pc.cancel didn't clear pc.children = %v", pc.children)
+ }
+ pc.mu.Unlock()
+
+ // parent and children should all be finished.
+ check := func(ctx Context, name string) {
+ select {
+ case <-ctx.Done():
+ default:
+ t.Errorf("<-%s.Done() blocked, but shouldn't have", name)
+ }
+ if e := ctx.Err(); e != Canceled {
+ t.Errorf("%s.Err() == %v want %v", name, e, Canceled)
+ }
+ }
+ check(parent, "parent")
+ check(cancelChild, "cancelChild")
+ check(valueChild, "valueChild")
+ check(timerChild, "timerChild")
+
+ // WithCancel should return a canceled context on a canceled parent.
+ precanceledChild := WithValue(parent, "key", "value")
+ select {
+ case <-precanceledChild.Done():
+ default:
+ t.Errorf("<-precanceledChild.Done() blocked, but shouldn't have")
+ }
+ if e := precanceledChild.Err(); e != Canceled {
+ t.Errorf("precanceledChild.Err() == %v want %v", e, Canceled)
+ }
+}
+
+func TestChildFinishesFirst(t *testing.T) {
+ cancelable, stop := WithCancel(Background())
+ defer stop()
+ for _, parent := range []Context{Background(), cancelable} {
+ child, cancel := WithCancel(parent)
+
+ select {
+ case x := <-parent.Done():
+ t.Errorf("<-parent.Done() == %v want nothing (it should block)", x)
+ case x := <-child.Done():
+ t.Errorf("<-child.Done() == %v want nothing (it should block)", x)
+ default:
+ }
+
+ cc := child.(*cancelCtx)
+ pc, pcok := parent.(*cancelCtx) // pcok == false when parent == Background()
+ if p, ok := parentCancelCtx(cc.Context); ok != pcok || (ok && pc != p) {
+ t.Errorf("bad linkage: parentCancelCtx(cc.Context) = %v, %v want %v, %v", p, ok, pc, pcok)
+ }
+
+ if pcok {
+ pc.mu.Lock()
+ if len(pc.children) != 1 || !pc.children[cc] {
+ t.Errorf("bad linkage: pc.children = %v, cc = %v", pc.children, cc)
+ }
+ pc.mu.Unlock()
+ }
+
+ cancel()
+
+ if pcok {
+ pc.mu.Lock()
+ if len(pc.children) != 0 {
+ t.Errorf("child's cancel didn't remove self from pc.children = %v", pc.children)
+ }
+ pc.mu.Unlock()
+ }
+
+ // child should be finished.
+ select {
+ case <-child.Done():
+ default:
+ t.Errorf("<-child.Done() blocked, but shouldn't have")
+ }
+ if e := child.Err(); e != Canceled {
+ t.Errorf("child.Err() == %v want %v", e, Canceled)
+ }
+
+ // parent should not be finished.
+ select {
+ case x := <-parent.Done():
+ t.Errorf("<-parent.Done() == %v want nothing (it should block)", x)
+ default:
+ }
+ if e := parent.Err(); e != nil {
+ t.Errorf("parent.Err() == %v want nil", e)
+ }
+ }
+}
+
+func testDeadline(c Context, wait time.Duration, t *testing.T) {
+ select {
+ case <-time.After(wait):
+ t.Fatalf("context should have timed out")
+ case <-c.Done():
+ }
+ if e := c.Err(); e != DeadlineExceeded {
+ t.Errorf("c.Err() == %v want %v", e, DeadlineExceeded)
+ }
+}
+
+func TestDeadline(t *testing.T) {
+ t.Parallel()
+ const timeUnit = 500 * time.Millisecond
+ c, _ := WithDeadline(Background(), time.Now().Add(1*timeUnit))
+ if got, prefix := fmt.Sprint(c), "context.Background.WithDeadline("; !strings.HasPrefix(got, prefix) {
+ t.Errorf("c.String() = %q want prefix %q", got, prefix)
+ }
+ testDeadline(c, 2*timeUnit, t)
+
+ c, _ = WithDeadline(Background(), time.Now().Add(1*timeUnit))
+ o := otherContext{c}
+ testDeadline(o, 2*timeUnit, t)
+
+ c, _ = WithDeadline(Background(), time.Now().Add(1*timeUnit))
+ o = otherContext{c}
+ c, _ = WithDeadline(o, time.Now().Add(3*timeUnit))
+ testDeadline(c, 2*timeUnit, t)
+}
+
+func TestTimeout(t *testing.T) {
+ t.Parallel()
+ const timeUnit = 500 * time.Millisecond
+ c, _ := WithTimeout(Background(), 1*timeUnit)
+ if got, prefix := fmt.Sprint(c), "context.Background.WithDeadline("; !strings.HasPrefix(got, prefix) {
+ t.Errorf("c.String() = %q want prefix %q", got, prefix)
+ }
+ testDeadline(c, 2*timeUnit, t)
+
+ c, _ = WithTimeout(Background(), 1*timeUnit)
+ o := otherContext{c}
+ testDeadline(o, 2*timeUnit, t)
+
+ c, _ = WithTimeout(Background(), 1*timeUnit)
+ o = otherContext{c}
+ c, _ = WithTimeout(o, 3*timeUnit)
+ testDeadline(c, 2*timeUnit, t)
+}
+
+func TestCanceledTimeout(t *testing.T) {
+ t.Parallel()
+ const timeUnit = 500 * time.Millisecond
+ c, _ := WithTimeout(Background(), 2*timeUnit)
+ o := otherContext{c}
+ c, cancel := WithTimeout(o, 4*timeUnit)
+ cancel()
+ time.Sleep(1 * timeUnit) // let cancelation propagate
+ select {
+ case <-c.Done():
+ default:
+ t.Errorf("<-c.Done() blocked, but shouldn't have")
+ }
+ if e := c.Err(); e != Canceled {
+ t.Errorf("c.Err() == %v want %v", e, Canceled)
+ }
+}
+
+type key1 int
+type key2 int
+
+var k1 = key1(1)
+var k2 = key2(1) // same int as k1, different type
+var k3 = key2(3) // same type as k2, different int
+
+func TestValues(t *testing.T) {
+ check := func(c Context, nm, v1, v2, v3 string) {
+ if v, ok := c.Value(k1).(string); ok == (len(v1) == 0) || v != v1 {
+ t.Errorf(`%s.Value(k1).(string) = %q, %t want %q, %t`, nm, v, ok, v1, len(v1) != 0)
+ }
+ if v, ok := c.Value(k2).(string); ok == (len(v2) == 0) || v != v2 {
+ t.Errorf(`%s.Value(k2).(string) = %q, %t want %q, %t`, nm, v, ok, v2, len(v2) != 0)
+ }
+ if v, ok := c.Value(k3).(string); ok == (len(v3) == 0) || v != v3 {
+ t.Errorf(`%s.Value(k3).(string) = %q, %t want %q, %t`, nm, v, ok, v3, len(v3) != 0)
+ }
+ }
+
+ c0 := Background()
+ check(c0, "c0", "", "", "")
+
+ c1 := WithValue(Background(), k1, "c1k1")
+ check(c1, "c1", "c1k1", "", "")
+
+ if got, want := fmt.Sprint(c1), `context.Background.WithValue(1, "c1k1")`; got != want {
+ t.Errorf("c.String() = %q want %q", got, want)
+ }
+
+ c2 := WithValue(c1, k2, "c2k2")
+ check(c2, "c2", "c1k1", "c2k2", "")
+
+ c3 := WithValue(c2, k3, "c3k3")
+ check(c3, "c2", "c1k1", "c2k2", "c3k3")
+
+ c4 := WithValue(c3, k1, nil)
+ check(c4, "c4", "", "c2k2", "c3k3")
+
+ o0 := otherContext{Background()}
+ check(o0, "o0", "", "", "")
+
+ o1 := otherContext{WithValue(Background(), k1, "c1k1")}
+ check(o1, "o1", "c1k1", "", "")
+
+ o2 := WithValue(o1, k2, "o2k2")
+ check(o2, "o2", "c1k1", "o2k2", "")
+
+ o3 := otherContext{c4}
+ check(o3, "o3", "", "c2k2", "c3k3")
+
+ o4 := WithValue(o3, k3, nil)
+ check(o4, "o4", "", "c2k2", "")
+}
+
+func TestAllocs(t *testing.T) {
+ bg := Background()
+ for _, test := range []struct {
+ desc string
+ f func()
+ limit float64
+ gccgoLimit float64
+ }{
+ {
+ desc: "Background()",
+ f: func() { Background() },
+ limit: 0,
+ gccgoLimit: 0,
+ },
+ {
+ desc: fmt.Sprintf("WithValue(bg, %v, nil)", k1),
+ f: func() {
+ c := WithValue(bg, k1, nil)
+ c.Value(k1)
+ },
+ limit: 3,
+ gccgoLimit: 3,
+ },
+ {
+ desc: "WithTimeout(bg, 15*time.Millisecond)",
+ f: func() {
+ c, _ := WithTimeout(bg, 15*time.Millisecond)
+ <-c.Done()
+ },
+ limit: 8,
+ gccgoLimit: 16,
+ },
+ {
+ desc: "WithCancel(bg)",
+ f: func() {
+ c, cancel := WithCancel(bg)
+ cancel()
+ <-c.Done()
+ },
+ limit: 5,
+ gccgoLimit: 8,
+ },
+ {
+ desc: "WithTimeout(bg, 100*time.Millisecond)",
+ f: func() {
+ c, cancel := WithTimeout(bg, 100*time.Millisecond)
+ cancel()
+ <-c.Done()
+ },
+ limit: 8,
+ gccgoLimit: 25,
+ },
+ } {
+ limit := test.limit
+ if runtime.Compiler == "gccgo" {
+ // gccgo does not yet do escape analysis.
+ // TODO(iant): Remove this when gccgo does do escape analysis.
+ limit = test.gccgoLimit
+ }
+ if n := testing.AllocsPerRun(100, test.f); n > limit {
+ t.Errorf("%s allocs = %f want %d", test.desc, n, int(limit))
+ }
+ }
+}
+
+func TestSimultaneousCancels(t *testing.T) {
+ root, cancel := WithCancel(Background())
+ m := map[Context]CancelFunc{root: cancel}
+ q := []Context{root}
+ // Create a tree of contexts.
+ for len(q) != 0 && len(m) < 100 {
+ parent := q[0]
+ q = q[1:]
+ for i := 0; i < 4; i++ {
+ ctx, cancel := WithCancel(parent)
+ m[ctx] = cancel
+ q = append(q, ctx)
+ }
+ }
+ // Start all the cancels in a random order.
+ var wg sync.WaitGroup
+ wg.Add(len(m))
+ for _, cancel := range m {
+ go func(cancel CancelFunc) {
+ cancel()
+ wg.Done()
+ }(cancel)
+ }
+ // Wait on all the contexts in a random order.
+ for ctx := range m {
+ select {
+ case <-ctx.Done():
+ case <-time.After(1 * time.Second):
+ buf := make([]byte, 10<<10)
+ n := runtime.Stack(buf, true)
+ t.Fatalf("timed out waiting for <-ctx.Done(); stacks:\n%s", buf[:n])
+ }
+ }
+ // Wait for all the cancel functions to return.
+ done := make(chan struct{})
+ go func() {
+ wg.Wait()
+ close(done)
+ }()
+ select {
+ case <-done:
+ case <-time.After(1 * time.Second):
+ buf := make([]byte, 10<<10)
+ n := runtime.Stack(buf, true)
+ t.Fatalf("timed out waiting for cancel functions; stacks:\n%s", buf[:n])
+ }
+}
+
+func TestInterlockedCancels(t *testing.T) {
+ parent, cancelParent := WithCancel(Background())
+ child, cancelChild := WithCancel(parent)
+ go func() {
+ parent.Done()
+ cancelChild()
+ }()
+ cancelParent()
+ select {
+ case <-child.Done():
+ case <-time.After(1 * time.Second):
+ buf := make([]byte, 10<<10)
+ n := runtime.Stack(buf, true)
+ t.Fatalf("timed out waiting for child.Done(); stacks:\n%s", buf[:n])
+ }
+}
+
+func TestLayersCancel(t *testing.T) {
+ testLayers(t, time.Now().UnixNano(), false)
+}
+
+func TestLayersTimeout(t *testing.T) {
+ testLayers(t, time.Now().UnixNano(), true)
+}
+
+func testLayers(t *testing.T, seed int64, testTimeout bool) {
+ rand.Seed(seed)
+ errorf := func(format string, a ...interface{}) {
+ t.Errorf(fmt.Sprintf("seed=%d: %s", seed, format), a...)
+ }
+ const (
+ timeout = 200 * time.Millisecond
+ minLayers = 30
+ )
+ type value int
+ var (
+ vals []*value
+ cancels []CancelFunc
+ numTimers int
+ ctx = Background()
+ )
+ for i := 0; i < minLayers || numTimers == 0 || len(cancels) == 0 || len(vals) == 0; i++ {
+ switch rand.Intn(3) {
+ case 0:
+ v := new(value)
+ ctx = WithValue(ctx, v, v)
+ vals = append(vals, v)
+ case 1:
+ var cancel CancelFunc
+ ctx, cancel = WithCancel(ctx)
+ cancels = append(cancels, cancel)
+ case 2:
+ var cancel CancelFunc
+ ctx, cancel = WithTimeout(ctx, timeout)
+ cancels = append(cancels, cancel)
+ numTimers++
+ }
+ }
+ checkValues := func(when string) {
+ for _, key := range vals {
+ if val := ctx.Value(key).(*value); key != val {
+ errorf("%s: ctx.Value(%p) = %p want %p", when, key, val, key)
+ }
+ }
+ }
+ select {
+ case <-ctx.Done():
+ errorf("ctx should not be canceled yet")
+ default:
+ }
+ if s, prefix := fmt.Sprint(ctx), "context.Background."; !strings.HasPrefix(s, prefix) {
+ t.Errorf("ctx.String() = %q want prefix %q", s, prefix)
+ }
+ t.Log(ctx)
+ checkValues("before cancel")
+ if testTimeout {
+ select {
+ case <-ctx.Done():
+ case <-time.After(timeout + 100*time.Millisecond):
+ errorf("ctx should have timed out")
+ }
+ checkValues("after timeout")
+ } else {
+ cancel := cancels[rand.Intn(len(cancels))]
+ cancel()
+ select {
+ case <-ctx.Done():
+ default:
+ errorf("ctx should be canceled")
+ }
+ checkValues("after cancel")
+ }
+}
+
+func TestCancelRemoves(t *testing.T) {
+ checkChildren := func(when string, ctx Context, want int) {
+ if got := len(ctx.(*cancelCtx).children); got != want {
+ t.Errorf("%s: context has %d children, want %d", when, got, want)
+ }
+ }
+
+ ctx, _ := WithCancel(Background())
+ checkChildren("after creation", ctx, 0)
+ _, cancel := WithCancel(ctx)
+ checkChildren("with WithCancel child ", ctx, 1)
+ cancel()
+ checkChildren("after cancelling WithCancel child", ctx, 0)
+
+ ctx, _ = WithCancel(Background())
+ checkChildren("after creation", ctx, 0)
+ _, cancel = WithTimeout(ctx, 60*time.Minute)
+ checkChildren("with WithTimeout child ", ctx, 1)
+ cancel()
+ checkChildren("after cancelling WithTimeout child", ctx, 0)
+}
diff --git a/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/context/go17.go b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/context/go17.go
new file mode 100644
index 000000000..d20f52b7d
--- /dev/null
+++ b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/context/go17.go
@@ -0,0 +1,72 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build go1.7
+
+package context
+
+import (
+ "context" // standard library's context, as of Go 1.7
+ "time"
+)
+
+var (
+ todo = context.TODO()
+ background = context.Background()
+)
+
+// Canceled is the error returned by Context.Err when the context is canceled.
+var Canceled = context.Canceled
+
+// DeadlineExceeded is the error returned by Context.Err when the context's
+// deadline passes.
+var DeadlineExceeded = context.DeadlineExceeded
+
+// WithCancel returns a copy of parent with a new Done channel. The returned
+// context's Done channel is closed when the returned cancel function is called
+// or when the parent context's Done channel is closed, whichever happens first.
+//
+// Canceling this context releases resources associated with it, so code should
+// call cancel as soon as the operations running in this Context complete.
+func WithCancel(parent Context) (ctx Context, cancel CancelFunc) {
+ ctx, f := context.WithCancel(parent)
+ return ctx, CancelFunc(f)
+}
+
+// WithDeadline returns a copy of the parent context with the deadline adjusted
+// to be no later than d. If the parent's deadline is already earlier than d,
+// WithDeadline(parent, d) is semantically equivalent to parent. The returned
+// context's Done channel is closed when the deadline expires, when the returned
+// cancel function is called, or when the parent context's Done channel is
+// closed, whichever happens first.
+//
+// Canceling this context releases resources associated with it, so code should
+// call cancel as soon as the operations running in this Context complete.
+func WithDeadline(parent Context, deadline time.Time) (Context, CancelFunc) {
+ ctx, f := context.WithDeadline(parent, deadline)
+ return ctx, CancelFunc(f)
+}
+
+// WithTimeout returns WithDeadline(parent, time.Now().Add(timeout)).
+//
+// Canceling this context releases resources associated with it, so code should
+// call cancel as soon as the operations running in this Context complete:
+//
+// func slowOperationWithTimeout(ctx context.Context) (Result, error) {
+// ctx, cancel := context.WithTimeout(ctx, 100*time.Millisecond)
+// defer cancel() // releases resources if slowOperation completes before timeout elapses
+// return slowOperation(ctx)
+// }
+func WithTimeout(parent Context, timeout time.Duration) (Context, CancelFunc) {
+ return WithDeadline(parent, time.Now().Add(timeout))
+}
+
+// WithValue returns a copy of parent in which the value associated with key is
+// val.
+//
+// Use context Values only for request-scoped data that transits processes and
+// APIs, not for passing optional parameters to functions.
+func WithValue(parent Context, key interface{}, val interface{}) Context {
+ return context.WithValue(parent, key, val)
+}
diff --git a/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/context/pre_go17.go b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/context/pre_go17.go
new file mode 100644
index 000000000..0f35592df
--- /dev/null
+++ b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/context/pre_go17.go
@@ -0,0 +1,300 @@
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build !go1.7
+
+package context
+
+import (
+ "errors"
+ "fmt"
+ "sync"
+ "time"
+)
+
+// An emptyCtx is never canceled, has no values, and has no deadline. It is not
+// struct{}, since vars of this type must have distinct addresses.
+type emptyCtx int
+
+func (*emptyCtx) Deadline() (deadline time.Time, ok bool) {
+ return
+}
+
+func (*emptyCtx) Done() <-chan struct{} {
+ return nil
+}
+
+func (*emptyCtx) Err() error {
+ return nil
+}
+
+func (*emptyCtx) Value(key interface{}) interface{} {
+ return nil
+}
+
+func (e *emptyCtx) String() string {
+ switch e {
+ case background:
+ return "context.Background"
+ case todo:
+ return "context.TODO"
+ }
+ return "unknown empty Context"
+}
+
+var (
+ background = new(emptyCtx)
+ todo = new(emptyCtx)
+)
+
+// Canceled is the error returned by Context.Err when the context is canceled.
+var Canceled = errors.New("context canceled")
+
+// DeadlineExceeded is the error returned by Context.Err when the context's
+// deadline passes.
+var DeadlineExceeded = errors.New("context deadline exceeded")
+
+// WithCancel returns a copy of parent with a new Done channel. The returned
+// context's Done channel is closed when the returned cancel function is called
+// or when the parent context's Done channel is closed, whichever happens first.
+//
+// Canceling this context releases resources associated with it, so code should
+// call cancel as soon as the operations running in this Context complete.
+func WithCancel(parent Context) (ctx Context, cancel CancelFunc) {
+ c := newCancelCtx(parent)
+ propagateCancel(parent, c)
+ return c, func() { c.cancel(true, Canceled) }
+}
+
+// newCancelCtx returns an initialized cancelCtx.
+func newCancelCtx(parent Context) *cancelCtx {
+ return &cancelCtx{
+ Context: parent,
+ done: make(chan struct{}),
+ }
+}
+
+// propagateCancel arranges for child to be canceled when parent is.
+func propagateCancel(parent Context, child canceler) {
+ if parent.Done() == nil {
+ return // parent is never canceled
+ }
+ if p, ok := parentCancelCtx(parent); ok {
+ p.mu.Lock()
+ if p.err != nil {
+ // parent has already been canceled
+ child.cancel(false, p.err)
+ } else {
+ if p.children == nil {
+ p.children = make(map[canceler]bool)
+ }
+ p.children[child] = true
+ }
+ p.mu.Unlock()
+ } else {
+ go func() {
+ select {
+ case <-parent.Done():
+ child.cancel(false, parent.Err())
+ case <-child.Done():
+ }
+ }()
+ }
+}
+
+// parentCancelCtx follows a chain of parent references until it finds a
+// *cancelCtx. This function understands how each of the concrete types in this
+// package represents its parent.
+func parentCancelCtx(parent Context) (*cancelCtx, bool) {
+ for {
+ switch c := parent.(type) {
+ case *cancelCtx:
+ return c, true
+ case *timerCtx:
+ return c.cancelCtx, true
+ case *valueCtx:
+ parent = c.Context
+ default:
+ return nil, false
+ }
+ }
+}
+
+// removeChild removes a context from its parent.
+func removeChild(parent Context, child canceler) {
+ p, ok := parentCancelCtx(parent)
+ if !ok {
+ return
+ }
+ p.mu.Lock()
+ if p.children != nil {
+ delete(p.children, child)
+ }
+ p.mu.Unlock()
+}
+
+// A canceler is a context type that can be canceled directly. The
+// implementations are *cancelCtx and *timerCtx.
+type canceler interface {
+ cancel(removeFromParent bool, err error)
+ Done() <-chan struct{}
+}
+
+// A cancelCtx can be canceled. When canceled, it also cancels any children
+// that implement canceler.
+type cancelCtx struct {
+ Context
+
+ done chan struct{} // closed by the first cancel call.
+
+ mu sync.Mutex
+ children map[canceler]bool // set to nil by the first cancel call
+ err error // set to non-nil by the first cancel call
+}
+
+func (c *cancelCtx) Done() <-chan struct{} {
+ return c.done
+}
+
+func (c *cancelCtx) Err() error {
+ c.mu.Lock()
+ defer c.mu.Unlock()
+ return c.err
+}
+
+func (c *cancelCtx) String() string {
+ return fmt.Sprintf("%v.WithCancel", c.Context)
+}
+
+// cancel closes c.done, cancels each of c's children, and, if
+// removeFromParent is true, removes c from its parent's children.
+func (c *cancelCtx) cancel(removeFromParent bool, err error) {
+ if err == nil {
+ panic("context: internal error: missing cancel error")
+ }
+ c.mu.Lock()
+ if c.err != nil {
+ c.mu.Unlock()
+ return // already canceled
+ }
+ c.err = err
+ close(c.done)
+ for child := range c.children {
+ // NOTE: acquiring the child's lock while holding parent's lock.
+ child.cancel(false, err)
+ }
+ c.children = nil
+ c.mu.Unlock()
+
+ if removeFromParent {
+ removeChild(c.Context, c)
+ }
+}
+
+// WithDeadline returns a copy of the parent context with the deadline adjusted
+// to be no later than d. If the parent's deadline is already earlier than d,
+// WithDeadline(parent, d) is semantically equivalent to parent. The returned
+// context's Done channel is closed when the deadline expires, when the returned
+// cancel function is called, or when the parent context's Done channel is
+// closed, whichever happens first.
+//
+// Canceling this context releases resources associated with it, so code should
+// call cancel as soon as the operations running in this Context complete.
+func WithDeadline(parent Context, deadline time.Time) (Context, CancelFunc) {
+ if cur, ok := parent.Deadline(); ok && cur.Before(deadline) {
+ // The current deadline is already sooner than the new one.
+ return WithCancel(parent)
+ }
+ c := &timerCtx{
+ cancelCtx: newCancelCtx(parent),
+ deadline: deadline,
+ }
+ propagateCancel(parent, c)
+ d := deadline.Sub(time.Now())
+ if d <= 0 {
+ c.cancel(true, DeadlineExceeded) // deadline has already passed
+ return c, func() { c.cancel(true, Canceled) }
+ }
+ c.mu.Lock()
+ defer c.mu.Unlock()
+ if c.err == nil {
+ c.timer = time.AfterFunc(d, func() {
+ c.cancel(true, DeadlineExceeded)
+ })
+ }
+ return c, func() { c.cancel(true, Canceled) }
+}
+
+// A timerCtx carries a timer and a deadline. It embeds a cancelCtx to
+// implement Done and Err. It implements cancel by stopping its timer then
+// delegating to cancelCtx.cancel.
+type timerCtx struct {
+ *cancelCtx
+ timer *time.Timer // Under cancelCtx.mu.
+
+ deadline time.Time
+}
+
+func (c *timerCtx) Deadline() (deadline time.Time, ok bool) {
+ return c.deadline, true
+}
+
+func (c *timerCtx) String() string {
+ return fmt.Sprintf("%v.WithDeadline(%s [%s])", c.cancelCtx.Context, c.deadline, c.deadline.Sub(time.Now()))
+}
+
+func (c *timerCtx) cancel(removeFromParent bool, err error) {
+ c.cancelCtx.cancel(false, err)
+ if removeFromParent {
+ // Remove this timerCtx from its parent cancelCtx's children.
+ removeChild(c.cancelCtx.Context, c)
+ }
+ c.mu.Lock()
+ if c.timer != nil {
+ c.timer.Stop()
+ c.timer = nil
+ }
+ c.mu.Unlock()
+}
+
+// WithTimeout returns WithDeadline(parent, time.Now().Add(timeout)).
+//
+// Canceling this context releases resources associated with it, so code should
+// call cancel as soon as the operations running in this Context complete:
+//
+// func slowOperationWithTimeout(ctx context.Context) (Result, error) {
+// ctx, cancel := context.WithTimeout(ctx, 100*time.Millisecond)
+// defer cancel() // releases resources if slowOperation completes before timeout elapses
+// return slowOperation(ctx)
+// }
+func WithTimeout(parent Context, timeout time.Duration) (Context, CancelFunc) {
+ return WithDeadline(parent, time.Now().Add(timeout))
+}
+
+// WithValue returns a copy of parent in which the value associated with key is
+// val.
+//
+// Use context Values only for request-scoped data that transits processes and
+// APIs, not for passing optional parameters to functions.
+func WithValue(parent Context, key interface{}, val interface{}) Context {
+ return &valueCtx{parent, key, val}
+}
+
+// A valueCtx carries a key-value pair. It implements Value for that key and
+// delegates all other calls to the embedded Context.
+type valueCtx struct {
+ Context
+ key, val interface{}
+}
+
+func (c *valueCtx) String() string {
+ return fmt.Sprintf("%v.WithValue(%#v, %#v)", c.Context, c.key, c.val)
+}
+
+func (c *valueCtx) Value(key interface{}) interface{} {
+ if c.key == key {
+ return c.val
+ }
+ return c.Context.Value(key)
+}
diff --git a/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/context/withtimeout_test.go b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/context/withtimeout_test.go
new file mode 100644
index 000000000..a6754dc36
--- /dev/null
+++ b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/context/withtimeout_test.go
@@ -0,0 +1,26 @@
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package context_test
+
+import (
+ "fmt"
+ "time"
+
+ "golang.org/x/net/context"
+)
+
+func ExampleWithTimeout() {
+ // Pass a context with a timeout to tell a blocking function that it
+ // should abandon its work after the timeout elapses.
+ ctx, _ := context.WithTimeout(context.Background(), 100*time.Millisecond)
+ select {
+ case <-time.After(200 * time.Millisecond):
+ fmt.Println("overslept")
+ case <-ctx.Done():
+ fmt.Println(ctx.Err()) // prints "context deadline exceeded"
+ }
+ // Output:
+ // context deadline exceeded
+}
diff --git a/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/publicsuffix/gen.go b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/publicsuffix/gen.go
new file mode 100644
index 000000000..a2d499529
--- /dev/null
+++ b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/publicsuffix/gen.go
@@ -0,0 +1,713 @@
+// Copyright 2012 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build ignore
+
+package main
+
+// This program generates table.go and table_test.go based on the authoritative
+// public suffix list at https://publicsuffix.org/list/effective_tld_names.dat
+//
+// The version is derived from
+// https://api.github.com/repos/publicsuffix/list/commits?path=public_suffix_list.dat
+// and a human-readable form is at
+// https://github.com/publicsuffix/list/commits/master/public_suffix_list.dat
+//
+// To fetch a particular git revision, such as 5c70ccd250, pass
+// -url "https://raw.githubusercontent.com/publicsuffix/list/5c70ccd250/public_suffix_list.dat"
+// and -version "an explicit version string".
+
+import (
+ "bufio"
+ "bytes"
+ "flag"
+ "fmt"
+ "go/format"
+ "io"
+ "io/ioutil"
+ "net/http"
+ "os"
+ "regexp"
+ "sort"
+ "strings"
+
+ "golang.org/x/net/idna"
+)
+
+const (
+ // These sum of these four values must be no greater than 32.
+ nodesBitsChildren = 9
+ nodesBitsICANN = 1
+ nodesBitsTextOffset = 15
+ nodesBitsTextLength = 6
+
+ // These sum of these four values must be no greater than 32.
+ childrenBitsWildcard = 1
+ childrenBitsNodeType = 2
+ childrenBitsHi = 14
+ childrenBitsLo = 14
+)
+
+var (
+ maxChildren int
+ maxTextOffset int
+ maxTextLength int
+ maxHi uint32
+ maxLo uint32
+)
+
+func max(a, b int) int {
+ if a < b {
+ return b
+ }
+ return a
+}
+
+func u32max(a, b uint32) uint32 {
+ if a < b {
+ return b
+ }
+ return a
+}
+
+const (
+ nodeTypeNormal = 0
+ nodeTypeException = 1
+ nodeTypeParentOnly = 2
+ numNodeType = 3
+)
+
+func nodeTypeStr(n int) string {
+ switch n {
+ case nodeTypeNormal:
+ return "+"
+ case nodeTypeException:
+ return "!"
+ case nodeTypeParentOnly:
+ return "o"
+ }
+ panic("unreachable")
+}
+
+const (
+ defaultURL = "https://publicsuffix.org/list/effective_tld_names.dat"
+ gitCommitURL = "https://api.github.com/repos/publicsuffix/list/commits?path=public_suffix_list.dat"
+)
+
+var (
+ labelEncoding = map[string]uint32{}
+ labelsList = []string{}
+ labelsMap = map[string]bool{}
+ rules = []string{}
+
+ // validSuffixRE is used to check that the entries in the public suffix
+ // list are in canonical form (after Punycode encoding). Specifically,
+ // capital letters are not allowed.
+ validSuffixRE = regexp.MustCompile(`^[a-z0-9_\!\*\-\.]+$`)
+
+ shaRE = regexp.MustCompile(`"sha":"([^"]+)"`)
+ dateRE = regexp.MustCompile(`"committer":{[^{]+"date":"([^"]+)"`)
+
+ comments = flag.Bool("comments", false, "generate table.go comments, for debugging")
+ subset = flag.Bool("subset", false, "generate only a subset of the full table, for debugging")
+ url = flag.String("url", defaultURL, "URL of the publicsuffix.org list. If empty, stdin is read instead")
+ v = flag.Bool("v", false, "verbose output (to stderr)")
+ version = flag.String("version", "", "the effective_tld_names.dat version")
+)
+
+func main() {
+ if err := main1(); err != nil {
+ fmt.Fprintln(os.Stderr, err)
+ os.Exit(1)
+ }
+}
+
+func main1() error {
+ flag.Parse()
+ if nodesBitsTextLength+nodesBitsTextOffset+nodesBitsICANN+nodesBitsChildren > 32 {
+ return fmt.Errorf("not enough bits to encode the nodes table")
+ }
+ if childrenBitsLo+childrenBitsHi+childrenBitsNodeType+childrenBitsWildcard > 32 {
+ return fmt.Errorf("not enough bits to encode the children table")
+ }
+ if *version == "" {
+ if *url != defaultURL {
+ return fmt.Errorf("-version was not specified, and the -url is not the default one")
+ }
+ sha, date, err := gitCommit()
+ if err != nil {
+ return err
+ }
+ *version = fmt.Sprintf("publicsuffix.org's public_suffix_list.dat, git revision %s (%s)", sha, date)
+ }
+ var r io.Reader = os.Stdin
+ if *url != "" {
+ res, err := http.Get(*url)
+ if err != nil {
+ return err
+ }
+ if res.StatusCode != http.StatusOK {
+ return fmt.Errorf("bad GET status for %s: %d", *url, res.Status)
+ }
+ r = res.Body
+ defer res.Body.Close()
+ }
+
+ var root node
+ icann := false
+ br := bufio.NewReader(r)
+ for {
+ s, err := br.ReadString('\n')
+ if err != nil {
+ if err == io.EOF {
+ break
+ }
+ return err
+ }
+ s = strings.TrimSpace(s)
+ if strings.Contains(s, "BEGIN ICANN DOMAINS") {
+ icann = true
+ continue
+ }
+ if strings.Contains(s, "END ICANN DOMAINS") {
+ icann = false
+ continue
+ }
+ if s == "" || strings.HasPrefix(s, "//") {
+ continue
+ }
+ s, err = idna.ToASCII(s)
+ if err != nil {
+ return err
+ }
+ if !validSuffixRE.MatchString(s) {
+ return fmt.Errorf("bad publicsuffix.org list data: %q", s)
+ }
+
+ if *subset {
+ switch {
+ case s == "ac.jp" || strings.HasSuffix(s, ".ac.jp"):
+ case s == "ak.us" || strings.HasSuffix(s, ".ak.us"):
+ case s == "ao" || strings.HasSuffix(s, ".ao"):
+ case s == "ar" || strings.HasSuffix(s, ".ar"):
+ case s == "arpa" || strings.HasSuffix(s, ".arpa"):
+ case s == "cy" || strings.HasSuffix(s, ".cy"):
+ case s == "dyndns.org" || strings.HasSuffix(s, ".dyndns.org"):
+ case s == "jp":
+ case s == "kobe.jp" || strings.HasSuffix(s, ".kobe.jp"):
+ case s == "kyoto.jp" || strings.HasSuffix(s, ".kyoto.jp"):
+ case s == "om" || strings.HasSuffix(s, ".om"):
+ case s == "uk" || strings.HasSuffix(s, ".uk"):
+ case s == "uk.com" || strings.HasSuffix(s, ".uk.com"):
+ case s == "tw" || strings.HasSuffix(s, ".tw"):
+ case s == "zw" || strings.HasSuffix(s, ".zw"):
+ case s == "xn--p1ai" || strings.HasSuffix(s, ".xn--p1ai"):
+ // xn--p1ai is Russian-Cyrillic "рф".
+ default:
+ continue
+ }
+ }
+
+ rules = append(rules, s)
+
+ nt, wildcard := nodeTypeNormal, false
+ switch {
+ case strings.HasPrefix(s, "*."):
+ s, nt = s[2:], nodeTypeParentOnly
+ wildcard = true
+ case strings.HasPrefix(s, "!"):
+ s, nt = s[1:], nodeTypeException
+ }
+ labels := strings.Split(s, ".")
+ for n, i := &root, len(labels)-1; i >= 0; i-- {
+ label := labels[i]
+ n = n.child(label)
+ if i == 0 {
+ if nt != nodeTypeParentOnly && n.nodeType == nodeTypeParentOnly {
+ n.nodeType = nt
+ }
+ n.icann = n.icann && icann
+ n.wildcard = n.wildcard || wildcard
+ }
+ labelsMap[label] = true
+ }
+ }
+ labelsList = make([]string, 0, len(labelsMap))
+ for label := range labelsMap {
+ labelsList = append(labelsList, label)
+ }
+ sort.Strings(labelsList)
+
+ if err := generate(printReal, &root, "table.go"); err != nil {
+ return err
+ }
+ if err := generate(printTest, &root, "table_test.go"); err != nil {
+ return err
+ }
+ return nil
+}
+
+func generate(p func(io.Writer, *node) error, root *node, filename string) error {
+ buf := new(bytes.Buffer)
+ if err := p(buf, root); err != nil {
+ return err
+ }
+ b, err := format.Source(buf.Bytes())
+ if err != nil {
+ return err
+ }
+ return ioutil.WriteFile(filename, b, 0644)
+}
+
+func gitCommit() (sha, date string, retErr error) {
+ res, err := http.Get(gitCommitURL)
+ if err != nil {
+ return "", "", err
+ }
+ if res.StatusCode != http.StatusOK {
+ return "", "", fmt.Errorf("bad GET status for %s: %d", gitCommitURL, res.Status)
+ }
+ defer res.Body.Close()
+ b, err := ioutil.ReadAll(res.Body)
+ if err != nil {
+ return "", "", err
+ }
+ if m := shaRE.FindSubmatch(b); m != nil {
+ sha = string(m[1])
+ }
+ if m := dateRE.FindSubmatch(b); m != nil {
+ date = string(m[1])
+ }
+ if sha == "" || date == "" {
+ retErr = fmt.Errorf("could not find commit SHA and date in %s", gitCommitURL)
+ }
+ return sha, date, retErr
+}
+
+func printTest(w io.Writer, n *node) error {
+ fmt.Fprintf(w, "// generated by go run gen.go; DO NOT EDIT\n\n")
+ fmt.Fprintf(w, "package publicsuffix\n\nvar rules = [...]string{\n")
+ for _, rule := range rules {
+ fmt.Fprintf(w, "%q,\n", rule)
+ }
+ fmt.Fprintf(w, "}\n\nvar nodeLabels = [...]string{\n")
+ if err := n.walk(w, printNodeLabel); err != nil {
+ return err
+ }
+ fmt.Fprintf(w, "}\n")
+ return nil
+}
+
+func printReal(w io.Writer, n *node) error {
+ const header = `// generated by go run gen.go; DO NOT EDIT
+
+package publicsuffix
+
+const version = %q
+
+const (
+ nodesBitsChildren = %d
+ nodesBitsICANN = %d
+ nodesBitsTextOffset = %d
+ nodesBitsTextLength = %d
+
+ childrenBitsWildcard = %d
+ childrenBitsNodeType = %d
+ childrenBitsHi = %d
+ childrenBitsLo = %d
+)
+
+const (
+ nodeTypeNormal = %d
+ nodeTypeException = %d
+ nodeTypeParentOnly = %d
+)
+
+// numTLD is the number of top level domains.
+const numTLD = %d
+
+`
+ fmt.Fprintf(w, header, *version,
+ nodesBitsChildren, nodesBitsICANN, nodesBitsTextOffset, nodesBitsTextLength,
+ childrenBitsWildcard, childrenBitsNodeType, childrenBitsHi, childrenBitsLo,
+ nodeTypeNormal, nodeTypeException, nodeTypeParentOnly, len(n.children))
+
+ text := combineText(labelsList)
+ if text == "" {
+ return fmt.Errorf("internal error: makeText returned no text")
+ }
+ for _, label := range labelsList {
+ offset, length := strings.Index(text, label), len(label)
+ if offset < 0 {
+ return fmt.Errorf("internal error: could not find %q in text %q", label, text)
+ }
+ maxTextOffset, maxTextLength = max(maxTextOffset, offset), max(maxTextLength, length)
+ if offset >= 1<<nodesBitsTextOffset {
+ return fmt.Errorf("text offset %d is too large, or nodeBitsTextOffset is too small", offset)
+ }
+ if length >= 1<<nodesBitsTextLength {
+ return fmt.Errorf("text length %d is too large, or nodeBitsTextLength is too small", length)
+ }
+ labelEncoding[label] = uint32(offset)<<nodesBitsTextLength | uint32(length)
+ }
+ fmt.Fprintf(w, "// Text is the combined text of all labels.\nconst text = ")
+ for len(text) > 0 {
+ n, plus := len(text), ""
+ if n > 64 {
+ n, plus = 64, " +"
+ }
+ fmt.Fprintf(w, "%q%s\n", text[:n], plus)
+ text = text[n:]
+ }
+
+ if err := n.walk(w, assignIndexes); err != nil {
+ return err
+ }
+
+ fmt.Fprintf(w, `
+
+// nodes is the list of nodes. Each node is represented as a uint32, which
+// encodes the node's children, wildcard bit and node type (as an index into
+// the children array), ICANN bit and text.
+//
+// If the table was generated with the -comments flag, there is a //-comment
+// after each node's data. In it is the nodes-array indexes of the children,
+// formatted as (n0x1234-n0x1256), with * denoting the wildcard bit. The
+// nodeType is printed as + for normal, ! for exception, and o for parent-only
+// nodes that have children but don't match a domain label in their own right.
+// An I denotes an ICANN domain.
+//
+// The layout within the uint32, from MSB to LSB, is:
+// [%2d bits] unused
+// [%2d bits] children index
+// [%2d bits] ICANN bit
+// [%2d bits] text index
+// [%2d bits] text length
+var nodes = [...]uint32{
+`,
+ 32-nodesBitsChildren-nodesBitsICANN-nodesBitsTextOffset-nodesBitsTextLength,
+ nodesBitsChildren, nodesBitsICANN, nodesBitsTextOffset, nodesBitsTextLength)
+ if err := n.walk(w, printNode); err != nil {
+ return err
+ }
+ fmt.Fprintf(w, `}
+
+// children is the list of nodes' children, the parent's wildcard bit and the
+// parent's node type. If a node has no children then their children index
+// will be in the range [0, 6), depending on the wildcard bit and node type.
+//
+// The layout within the uint32, from MSB to LSB, is:
+// [%2d bits] unused
+// [%2d bits] wildcard bit
+// [%2d bits] node type
+// [%2d bits] high nodes index (exclusive) of children
+// [%2d bits] low nodes index (inclusive) of children
+var children=[...]uint32{
+`,
+ 32-childrenBitsWildcard-childrenBitsNodeType-childrenBitsHi-childrenBitsLo,
+ childrenBitsWildcard, childrenBitsNodeType, childrenBitsHi, childrenBitsLo)
+ for i, c := range childrenEncoding {
+ s := "---------------"
+ lo := c & (1<<childrenBitsLo - 1)
+ hi := (c >> childrenBitsLo) & (1<<childrenBitsHi - 1)
+ if lo != hi {
+ s = fmt.Sprintf("n0x%04x-n0x%04x", lo, hi)
+ }
+ nodeType := int(c>>(childrenBitsLo+childrenBitsHi)) & (1<<childrenBitsNodeType - 1)
+ wildcard := c>>(childrenBitsLo+childrenBitsHi+childrenBitsNodeType) != 0
+ if *comments {
+ fmt.Fprintf(w, "0x%08x, // c0x%04x (%s)%s %s\n",
+ c, i, s, wildcardStr(wildcard), nodeTypeStr(nodeType))
+ } else {
+ fmt.Fprintf(w, "0x%x,\n", c)
+ }
+ }
+ fmt.Fprintf(w, "}\n\n")
+ fmt.Fprintf(w, "// max children %d (capacity %d)\n", maxChildren, 1<<nodesBitsChildren-1)
+ fmt.Fprintf(w, "// max text offset %d (capacity %d)\n", maxTextOffset, 1<<nodesBitsTextOffset-1)
+ fmt.Fprintf(w, "// max text length %d (capacity %d)\n", maxTextLength, 1<<nodesBitsTextLength-1)
+ fmt.Fprintf(w, "// max hi %d (capacity %d)\n", maxHi, 1<<childrenBitsHi-1)
+ fmt.Fprintf(w, "// max lo %d (capacity %d)\n", maxLo, 1<<childrenBitsLo-1)
+ return nil
+}
+
+type node struct {
+ label string
+ nodeType int
+ icann bool
+ wildcard bool
+ // nodesIndex and childrenIndex are the index of this node in the nodes
+ // and the index of its children offset/length in the children arrays.
+ nodesIndex, childrenIndex int
+ // firstChild is the index of this node's first child, or zero if this
+ // node has no children.
+ firstChild int
+ // children are the node's children, in strictly increasing node label order.
+ children []*node
+}
+
+func (n *node) walk(w io.Writer, f func(w1 io.Writer, n1 *node) error) error {
+ if err := f(w, n); err != nil {
+ return err
+ }
+ for _, c := range n.children {
+ if err := c.walk(w, f); err != nil {
+ return err
+ }
+ }
+ return nil
+}
+
+// child returns the child of n with the given label. The child is created if
+// it did not exist beforehand.
+func (n *node) child(label string) *node {
+ for _, c := range n.children {
+ if c.label == label {
+ return c
+ }
+ }
+ c := &node{
+ label: label,
+ nodeType: nodeTypeParentOnly,
+ icann: true,
+ }
+ n.children = append(n.children, c)
+ sort.Sort(byLabel(n.children))
+ return c
+}
+
+type byLabel []*node
+
+func (b byLabel) Len() int { return len(b) }
+func (b byLabel) Swap(i, j int) { b[i], b[j] = b[j], b[i] }
+func (b byLabel) Less(i, j int) bool { return b[i].label < b[j].label }
+
+var nextNodesIndex int
+
+// childrenEncoding are the encoded entries in the generated children array.
+// All these pre-defined entries have no children.
+var childrenEncoding = []uint32{
+ 0 << (childrenBitsLo + childrenBitsHi), // Without wildcard bit, nodeTypeNormal.
+ 1 << (childrenBitsLo + childrenBitsHi), // Without wildcard bit, nodeTypeException.
+ 2 << (childrenBitsLo + childrenBitsHi), // Without wildcard bit, nodeTypeParentOnly.
+ 4 << (childrenBitsLo + childrenBitsHi), // With wildcard bit, nodeTypeNormal.
+ 5 << (childrenBitsLo + childrenBitsHi), // With wildcard bit, nodeTypeException.
+ 6 << (childrenBitsLo + childrenBitsHi), // With wildcard bit, nodeTypeParentOnly.
+}
+
+var firstCallToAssignIndexes = true
+
+func assignIndexes(w io.Writer, n *node) error {
+ if len(n.children) != 0 {
+ // Assign nodesIndex.
+ n.firstChild = nextNodesIndex
+ for _, c := range n.children {
+ c.nodesIndex = nextNodesIndex
+ nextNodesIndex++
+ }
+
+ // The root node's children is implicit.
+ if firstCallToAssignIndexes {
+ firstCallToAssignIndexes = false
+ return nil
+ }
+
+ // Assign childrenIndex.
+ maxChildren = max(maxChildren, len(childrenEncoding))
+ if len(childrenEncoding) >= 1<<nodesBitsChildren {
+ return fmt.Errorf("children table size %d is too large, or nodeBitsChildren is too small", len(childrenEncoding))
+ }
+ n.childrenIndex = len(childrenEncoding)
+ lo := uint32(n.firstChild)
+ hi := lo + uint32(len(n.children))
+ maxLo, maxHi = u32max(maxLo, lo), u32max(maxHi, hi)
+ if lo >= 1<<childrenBitsLo {
+ return fmt.Errorf("children lo %d is too large, or childrenBitsLo is too small", lo)
+ }
+ if hi >= 1<<childrenBitsHi {
+ return fmt.Errorf("children hi %d is too large, or childrenBitsHi is too small", hi)
+ }
+ enc := hi<<childrenBitsLo | lo
+ enc |= uint32(n.nodeType) << (childrenBitsLo + childrenBitsHi)
+ if n.wildcard {
+ enc |= 1 << (childrenBitsLo + childrenBitsHi + childrenBitsNodeType)
+ }
+ childrenEncoding = append(childrenEncoding, enc)
+ } else {
+ n.childrenIndex = n.nodeType
+ if n.wildcard {
+ n.childrenIndex += numNodeType
+ }
+ }
+ return nil
+}
+
+func printNode(w io.Writer, n *node) error {
+ for _, c := range n.children {
+ s := "---------------"
+ if len(c.children) != 0 {
+ s = fmt.Sprintf("n0x%04x-n0x%04x", c.firstChild, c.firstChild+len(c.children))
+ }
+ encoding := labelEncoding[c.label]
+ if c.icann {
+ encoding |= 1 << (nodesBitsTextLength + nodesBitsTextOffset)
+ }
+ encoding |= uint32(c.childrenIndex) << (nodesBitsTextLength + nodesBitsTextOffset + nodesBitsICANN)
+ if *comments {
+ fmt.Fprintf(w, "0x%08x, // n0x%04x c0x%04x (%s)%s %s %s %s\n",
+ encoding, c.nodesIndex, c.childrenIndex, s, wildcardStr(c.wildcard),
+ nodeTypeStr(c.nodeType), icannStr(c.icann), c.label,
+ )
+ } else {
+ fmt.Fprintf(w, "0x%x,\n", encoding)
+ }
+ }
+ return nil
+}
+
+func printNodeLabel(w io.Writer, n *node) error {
+ for _, c := range n.children {
+ fmt.Fprintf(w, "%q,\n", c.label)
+ }
+ return nil
+}
+
+func icannStr(icann bool) string {
+ if icann {
+ return "I"
+ }
+ return " "
+}
+
+func wildcardStr(wildcard bool) string {
+ if wildcard {
+ return "*"
+ }
+ return " "
+}
+
+// combineText combines all the strings in labelsList to form one giant string.
+// Overlapping strings will be merged: "arpa" and "parliament" could yield
+// "arparliament".
+func combineText(labelsList []string) string {
+ beforeLength := 0
+ for _, s := range labelsList {
+ beforeLength += len(s)
+ }
+
+ text := crush(removeSubstrings(labelsList))
+ if *v {
+ fmt.Fprintf(os.Stderr, "crushed %d bytes to become %d bytes\n", beforeLength, len(text))
+ }
+ return text
+}
+
+type byLength []string
+
+func (s byLength) Len() int { return len(s) }
+func (s byLength) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
+func (s byLength) Less(i, j int) bool { return len(s[i]) < len(s[j]) }
+
+// removeSubstrings returns a copy of its input with any strings removed
+// that are substrings of other provided strings.
+func removeSubstrings(input []string) []string {
+ // Make a copy of input.
+ ss := append(make([]string, 0, len(input)), input...)
+ sort.Sort(byLength(ss))
+
+ for i, shortString := range ss {
+ // For each string, only consider strings higher than it in sort order, i.e.
+ // of equal length or greater.
+ for _, longString := range ss[i+1:] {
+ if strings.Contains(longString, shortString) {
+ ss[i] = ""
+ break
+ }
+ }
+ }
+
+ // Remove the empty strings.
+ sort.Strings(ss)
+ for len(ss) > 0 && ss[0] == "" {
+ ss = ss[1:]
+ }
+ return ss
+}
+
+// crush combines a list of strings, taking advantage of overlaps. It returns a
+// single string that contains each input string as a substring.
+func crush(ss []string) string {
+ maxLabelLen := 0
+ for _, s := range ss {
+ if maxLabelLen < len(s) {
+ maxLabelLen = len(s)
+ }
+ }
+
+ for prefixLen := maxLabelLen; prefixLen > 0; prefixLen-- {
+ prefixes := makePrefixMap(ss, prefixLen)
+ for i, s := range ss {
+ if len(s) <= prefixLen {
+ continue
+ }
+ mergeLabel(ss, i, prefixLen, prefixes)
+ }
+ }
+
+ return strings.Join(ss, "")
+}
+
+// mergeLabel merges the label at ss[i] with the first available matching label
+// in prefixMap, where the last "prefixLen" characters in ss[i] match the first
+// "prefixLen" characters in the matching label.
+// It will merge ss[i] repeatedly until no more matches are available.
+// All matching labels merged into ss[i] are replaced by "".
+func mergeLabel(ss []string, i, prefixLen int, prefixes prefixMap) {
+ s := ss[i]
+ suffix := s[len(s)-prefixLen:]
+ for _, j := range prefixes[suffix] {
+ // Empty strings mean "already used." Also avoid merging with self.
+ if ss[j] == "" || i == j {
+ continue
+ }
+ if *v {
+ fmt.Fprintf(os.Stderr, "%d-length overlap at (%4d,%4d): %q and %q share %q\n",
+ prefixLen, i, j, ss[i], ss[j], suffix)
+ }
+ ss[i] += ss[j][prefixLen:]
+ ss[j] = ""
+ // ss[i] has a new suffix, so merge again if possible.
+ // Note: we only have to merge again at the same prefix length. Shorter
+ // prefix lengths will be handled in the next iteration of crush's for loop.
+ // Can there be matches for longer prefix lengths, introduced by the merge?
+ // I believe that any such matches would by necessity have been eliminated
+ // during substring removal or merged at a higher prefix length. For
+ // instance, in crush("abc", "cde", "bcdef"), combining "abc" and "cde"
+ // would yield "abcde", which could be merged with "bcdef." However, in
+ // practice "cde" would already have been elimintated by removeSubstrings.
+ mergeLabel(ss, i, prefixLen, prefixes)
+ return
+ }
+}
+
+// prefixMap maps from a prefix to a list of strings containing that prefix. The
+// list of strings is represented as indexes into a slice of strings stored
+// elsewhere.
+type prefixMap map[string][]int
+
+// makePrefixMap constructs a prefixMap from a slice of strings.
+func makePrefixMap(ss []string, prefixLen int) prefixMap {
+ prefixes := make(prefixMap)
+ for i, s := range ss {
+ // We use < rather than <= because if a label matches on a prefix equal to
+ // its full length, that's actually a substring match handled by
+ // removeSubstrings.
+ if prefixLen < len(s) {
+ prefix := s[:prefixLen]
+ prefixes[prefix] = append(prefixes[prefix], i)
+ }
+ }
+
+ return prefixes
+}
diff --git a/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/publicsuffix/list.go b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/publicsuffix/list.go
new file mode 100644
index 000000000..8bbf3bcd7
--- /dev/null
+++ b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/publicsuffix/list.go
@@ -0,0 +1,135 @@
+// Copyright 2012 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+//go:generate go run gen.go
+
+// Package publicsuffix provides a public suffix list based on data from
+// http://publicsuffix.org/. A public suffix is one under which Internet users
+// can directly register names.
+package publicsuffix // import "golang.org/x/net/publicsuffix"
+
+// TODO: specify case sensitivity and leading/trailing dot behavior for
+// func PublicSuffix and func EffectiveTLDPlusOne.
+
+import (
+ "fmt"
+ "net/http/cookiejar"
+ "strings"
+)
+
+// List implements the cookiejar.PublicSuffixList interface by calling the
+// PublicSuffix function.
+var List cookiejar.PublicSuffixList = list{}
+
+type list struct{}
+
+func (list) PublicSuffix(domain string) string {
+ ps, _ := PublicSuffix(domain)
+ return ps
+}
+
+func (list) String() string {
+ return version
+}
+
+// PublicSuffix returns the public suffix of the domain using a copy of the
+// publicsuffix.org database compiled into the library.
+//
+// icann is whether the public suffix is managed by the Internet Corporation
+// for Assigned Names and Numbers. If not, the public suffix is privately
+// managed. For example, foo.org and foo.co.uk are ICANN domains,
+// foo.dyndns.org and foo.blogspot.co.uk are private domains.
+//
+// Use cases for distinguishing ICANN domains like foo.com from private
+// domains like foo.appspot.com can be found at
+// https://wiki.mozilla.org/Public_Suffix_List/Use_Cases
+func PublicSuffix(domain string) (publicSuffix string, icann bool) {
+ lo, hi := uint32(0), uint32(numTLD)
+ s, suffix, wildcard := domain, len(domain), false
+loop:
+ for {
+ dot := strings.LastIndex(s, ".")
+ if wildcard {
+ suffix = 1 + dot
+ }
+ if lo == hi {
+ break
+ }
+ f := find(s[1+dot:], lo, hi)
+ if f == notFound {
+ break
+ }
+
+ u := nodes[f] >> (nodesBitsTextOffset + nodesBitsTextLength)
+ icann = u&(1<<nodesBitsICANN-1) != 0
+ u >>= nodesBitsICANN
+ u = children[u&(1<<nodesBitsChildren-1)]
+ lo = u & (1<<childrenBitsLo - 1)
+ u >>= childrenBitsLo
+ hi = u & (1<<childrenBitsHi - 1)
+ u >>= childrenBitsHi
+ switch u & (1<<childrenBitsNodeType - 1) {
+ case nodeTypeNormal:
+ suffix = 1 + dot
+ case nodeTypeException:
+ suffix = 1 + len(s)
+ break loop
+ }
+ u >>= childrenBitsNodeType
+ wildcard = u&(1<<childrenBitsWildcard-1) != 0
+
+ if dot == -1 {
+ break
+ }
+ s = s[:dot]
+ }
+ if suffix == len(domain) {
+ // If no rules match, the prevailing rule is "*".
+ return domain[1+strings.LastIndex(domain, "."):], icann
+ }
+ return domain[suffix:], icann
+}
+
+const notFound uint32 = 1<<32 - 1
+
+// find returns the index of the node in the range [lo, hi) whose label equals
+// label, or notFound if there is no such node. The range is assumed to be in
+// strictly increasing node label order.
+func find(label string, lo, hi uint32) uint32 {
+ for lo < hi {
+ mid := lo + (hi-lo)/2
+ s := nodeLabel(mid)
+ if s < label {
+ lo = mid + 1
+ } else if s == label {
+ return mid
+ } else {
+ hi = mid
+ }
+ }
+ return notFound
+}
+
+// nodeLabel returns the label for the i'th node.
+func nodeLabel(i uint32) string {
+ x := nodes[i]
+ length := x & (1<<nodesBitsTextLength - 1)
+ x >>= nodesBitsTextLength
+ offset := x & (1<<nodesBitsTextOffset - 1)
+ return text[offset : offset+length]
+}
+
+// EffectiveTLDPlusOne returns the effective top level domain plus one more
+// label. For example, the eTLD+1 for "foo.bar.golang.org" is "golang.org".
+func EffectiveTLDPlusOne(domain string) (string, error) {
+ suffix, _ := PublicSuffix(domain)
+ if len(domain) <= len(suffix) {
+ return "", fmt.Errorf("publicsuffix: cannot derive eTLD+1 for domain %q", domain)
+ }
+ i := len(domain) - len(suffix) - 1
+ if domain[i] != '.' {
+ return "", fmt.Errorf("publicsuffix: invalid public suffix %q for domain %q", suffix, domain)
+ }
+ return domain[1+strings.LastIndex(domain[:i], "."):], nil
+}
diff --git a/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/publicsuffix/list_test.go b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/publicsuffix/list_test.go
new file mode 100644
index 000000000..42d79cc43
--- /dev/null
+++ b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/publicsuffix/list_test.go
@@ -0,0 +1,416 @@
+// Copyright 2012 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package publicsuffix
+
+import (
+ "sort"
+ "strings"
+ "testing"
+)
+
+func TestNodeLabel(t *testing.T) {
+ for i, want := range nodeLabels {
+ got := nodeLabel(uint32(i))
+ if got != want {
+ t.Errorf("%d: got %q, want %q", i, got, want)
+ }
+ }
+}
+
+func TestFind(t *testing.T) {
+ testCases := []string{
+ "",
+ "a",
+ "a0",
+ "aaaa",
+ "ao",
+ "ap",
+ "ar",
+ "aro",
+ "arp",
+ "arpa",
+ "arpaa",
+ "arpb",
+ "az",
+ "b",
+ "b0",
+ "ba",
+ "z",
+ "zu",
+ "zv",
+ "zw",
+ "zx",
+ "zy",
+ "zz",
+ "zzzz",
+ }
+ for _, tc := range testCases {
+ got := find(tc, 0, numTLD)
+ want := notFound
+ for i := uint32(0); i < numTLD; i++ {
+ if tc == nodeLabel(i) {
+ want = i
+ break
+ }
+ }
+ if got != want {
+ t.Errorf("%q: got %d, want %d", tc, got, want)
+ }
+ }
+}
+
+func TestICANN(t *testing.T) {
+ testCases := map[string]bool{
+ "foo.org": true,
+ "foo.co.uk": true,
+ "foo.dyndns.org": false,
+ "foo.go.dyndns.org": false,
+ "foo.blogspot.co.uk": false,
+ "foo.intranet": false,
+ }
+ for domain, want := range testCases {
+ _, got := PublicSuffix(domain)
+ if got != want {
+ t.Errorf("%q: got %v, want %v", domain, got, want)
+ }
+ }
+}
+
+var publicSuffixTestCases = []struct {
+ domain, want string
+}{
+ // Empty string.
+ {"", ""},
+
+ // The .ao rules are:
+ // ao
+ // ed.ao
+ // gv.ao
+ // og.ao
+ // co.ao
+ // pb.ao
+ // it.ao
+ {"ao", "ao"},
+ {"www.ao", "ao"},
+ {"pb.ao", "pb.ao"},
+ {"www.pb.ao", "pb.ao"},
+ {"www.xxx.yyy.zzz.pb.ao", "pb.ao"},
+
+ // The .ar rules are:
+ // ar
+ // com.ar
+ // edu.ar
+ // gob.ar
+ // gov.ar
+ // int.ar
+ // mil.ar
+ // net.ar
+ // org.ar
+ // tur.ar
+ // blogspot.com.ar
+ {"ar", "ar"},
+ {"www.ar", "ar"},
+ {"nic.ar", "ar"},
+ {"www.nic.ar", "ar"},
+ {"com.ar", "com.ar"},
+ {"www.com.ar", "com.ar"},
+ {"blogspot.com.ar", "blogspot.com.ar"},
+ {"www.blogspot.com.ar", "blogspot.com.ar"},
+ {"www.xxx.yyy.zzz.blogspot.com.ar", "blogspot.com.ar"},
+ {"logspot.com.ar", "com.ar"},
+ {"zlogspot.com.ar", "com.ar"},
+ {"zblogspot.com.ar", "com.ar"},
+
+ // The .arpa rules are:
+ // arpa
+ // e164.arpa
+ // in-addr.arpa
+ // ip6.arpa
+ // iris.arpa
+ // uri.arpa
+ // urn.arpa
+ {"arpa", "arpa"},
+ {"www.arpa", "arpa"},
+ {"urn.arpa", "urn.arpa"},
+ {"www.urn.arpa", "urn.arpa"},
+ {"www.xxx.yyy.zzz.urn.arpa", "urn.arpa"},
+
+ // The relevant {kobe,kyoto}.jp rules are:
+ // jp
+ // *.kobe.jp
+ // !city.kobe.jp
+ // kyoto.jp
+ // ide.kyoto.jp
+ {"jp", "jp"},
+ {"kobe.jp", "jp"},
+ {"c.kobe.jp", "c.kobe.jp"},
+ {"b.c.kobe.jp", "c.kobe.jp"},
+ {"a.b.c.kobe.jp", "c.kobe.jp"},
+ {"city.kobe.jp", "kobe.jp"},
+ {"www.city.kobe.jp", "kobe.jp"},
+ {"kyoto.jp", "kyoto.jp"},
+ {"test.kyoto.jp", "kyoto.jp"},
+ {"ide.kyoto.jp", "ide.kyoto.jp"},
+ {"b.ide.kyoto.jp", "ide.kyoto.jp"},
+ {"a.b.ide.kyoto.jp", "ide.kyoto.jp"},
+
+ // The .tw rules are:
+ // tw
+ // edu.tw
+ // gov.tw
+ // mil.tw
+ // com.tw
+ // net.tw
+ // org.tw
+ // idv.tw
+ // game.tw
+ // ebiz.tw
+ // club.tw
+ // 網路.tw (xn--zf0ao64a.tw)
+ // 組織.tw (xn--uc0atv.tw)
+ // 商業.tw (xn--czrw28b.tw)
+ // blogspot.tw
+ {"tw", "tw"},
+ {"aaa.tw", "tw"},
+ {"www.aaa.tw", "tw"},
+ {"xn--czrw28b.aaa.tw", "tw"},
+ {"edu.tw", "edu.tw"},
+ {"www.edu.tw", "edu.tw"},
+ {"xn--czrw28b.edu.tw", "edu.tw"},
+ {"xn--czrw28b.tw", "xn--czrw28b.tw"},
+ {"www.xn--czrw28b.tw", "xn--czrw28b.tw"},
+ {"xn--uc0atv.xn--czrw28b.tw", "xn--czrw28b.tw"},
+ {"xn--kpry57d.tw", "tw"},
+
+ // The .uk rules are:
+ // uk
+ // ac.uk
+ // co.uk
+ // gov.uk
+ // ltd.uk
+ // me.uk
+ // net.uk
+ // nhs.uk
+ // org.uk
+ // plc.uk
+ // police.uk
+ // *.sch.uk
+ // blogspot.co.uk
+ {"uk", "uk"},
+ {"aaa.uk", "uk"},
+ {"www.aaa.uk", "uk"},
+ {"mod.uk", "uk"},
+ {"www.mod.uk", "uk"},
+ {"sch.uk", "uk"},
+ {"mod.sch.uk", "mod.sch.uk"},
+ {"www.sch.uk", "www.sch.uk"},
+ {"blogspot.co.uk", "blogspot.co.uk"},
+ {"blogspot.nic.uk", "uk"},
+ {"blogspot.sch.uk", "blogspot.sch.uk"},
+
+ // The .рф rules are
+ // рф (xn--p1ai)
+ {"xn--p1ai", "xn--p1ai"},
+ {"aaa.xn--p1ai", "xn--p1ai"},
+ {"www.xxx.yyy.xn--p1ai", "xn--p1ai"},
+
+ // The .bd rules are:
+ // *.bd
+ {"bd", "bd"},
+ {"www.bd", "www.bd"},
+ {"zzz.bd", "zzz.bd"},
+ {"www.zzz.bd", "zzz.bd"},
+ {"www.xxx.yyy.zzz.bd", "zzz.bd"},
+
+ // There are no .nosuchtld rules.
+ {"nosuchtld", "nosuchtld"},
+ {"foo.nosuchtld", "nosuchtld"},
+ {"bar.foo.nosuchtld", "nosuchtld"},
+}
+
+func BenchmarkPublicSuffix(b *testing.B) {
+ for i := 0; i < b.N; i++ {
+ for _, tc := range publicSuffixTestCases {
+ List.PublicSuffix(tc.domain)
+ }
+ }
+}
+
+func TestPublicSuffix(t *testing.T) {
+ for _, tc := range publicSuffixTestCases {
+ got := List.PublicSuffix(tc.domain)
+ if got != tc.want {
+ t.Errorf("%q: got %q, want %q", tc.domain, got, tc.want)
+ }
+ }
+}
+
+func TestSlowPublicSuffix(t *testing.T) {
+ for _, tc := range publicSuffixTestCases {
+ got := slowPublicSuffix(tc.domain)
+ if got != tc.want {
+ t.Errorf("%q: got %q, want %q", tc.domain, got, tc.want)
+ }
+ }
+}
+
+// slowPublicSuffix implements the canonical (but O(number of rules)) public
+// suffix algorithm described at http://publicsuffix.org/list/.
+//
+// 1. Match domain against all rules and take note of the matching ones.
+// 2. If no rules match, the prevailing rule is "*".
+// 3. If more than one rule matches, the prevailing rule is the one which is an exception rule.
+// 4. If there is no matching exception rule, the prevailing rule is the one with the most labels.
+// 5. If the prevailing rule is a exception rule, modify it by removing the leftmost label.
+// 6. The public suffix is the set of labels from the domain which directly match the labels of the prevailing rule (joined by dots).
+// 7. The registered or registrable domain is the public suffix plus one additional label.
+//
+// This function returns the public suffix, not the registrable domain, and so
+// it stops after step 6.
+func slowPublicSuffix(domain string) string {
+ match := func(rulePart, domainPart string) bool {
+ switch rulePart[0] {
+ case '*':
+ return true
+ case '!':
+ return rulePart[1:] == domainPart
+ }
+ return rulePart == domainPart
+ }
+
+ domainParts := strings.Split(domain, ".")
+ var matchingRules [][]string
+
+loop:
+ for _, rule := range rules {
+ ruleParts := strings.Split(rule, ".")
+ if len(domainParts) < len(ruleParts) {
+ continue
+ }
+ for i := range ruleParts {
+ rulePart := ruleParts[len(ruleParts)-1-i]
+ domainPart := domainParts[len(domainParts)-1-i]
+ if !match(rulePart, domainPart) {
+ continue loop
+ }
+ }
+ matchingRules = append(matchingRules, ruleParts)
+ }
+ if len(matchingRules) == 0 {
+ matchingRules = append(matchingRules, []string{"*"})
+ } else {
+ sort.Sort(byPriority(matchingRules))
+ }
+ prevailing := matchingRules[0]
+ if prevailing[0][0] == '!' {
+ prevailing = prevailing[1:]
+ }
+ if prevailing[0][0] == '*' {
+ replaced := domainParts[len(domainParts)-len(prevailing)]
+ prevailing = append([]string{replaced}, prevailing[1:]...)
+ }
+ return strings.Join(prevailing, ".")
+}
+
+type byPriority [][]string
+
+func (b byPriority) Len() int { return len(b) }
+func (b byPriority) Swap(i, j int) { b[i], b[j] = b[j], b[i] }
+func (b byPriority) Less(i, j int) bool {
+ if b[i][0][0] == '!' {
+ return true
+ }
+ if b[j][0][0] == '!' {
+ return false
+ }
+ return len(b[i]) > len(b[j])
+}
+
+// eTLDPlusOneTestCases come from
+// https://github.com/publicsuffix/list/blob/master/tests/test_psl.txt
+var eTLDPlusOneTestCases = []struct {
+ domain, want string
+}{
+ // Empty input.
+ {"", ""},
+ // Unlisted TLD.
+ {"example", ""},
+ {"example.example", "example.example"},
+ {"b.example.example", "example.example"},
+ {"a.b.example.example", "example.example"},
+ // TLD with only 1 rule.
+ {"biz", ""},
+ {"domain.biz", "domain.biz"},
+ {"b.domain.biz", "domain.biz"},
+ {"a.b.domain.biz", "domain.biz"},
+ // TLD with some 2-level rules.
+ {"com", ""},
+ {"example.com", "example.com"},
+ {"b.example.com", "example.com"},
+ {"a.b.example.com", "example.com"},
+ {"uk.com", ""},
+ {"example.uk.com", "example.uk.com"},
+ {"b.example.uk.com", "example.uk.com"},
+ {"a.b.example.uk.com", "example.uk.com"},
+ {"test.ac", "test.ac"},
+ // TLD with only 1 (wildcard) rule.
+ {"mm", ""},
+ {"c.mm", ""},
+ {"b.c.mm", "b.c.mm"},
+ {"a.b.c.mm", "b.c.mm"},
+ // More complex TLD.
+ {"jp", ""},
+ {"test.jp", "test.jp"},
+ {"www.test.jp", "test.jp"},
+ {"ac.jp", ""},
+ {"test.ac.jp", "test.ac.jp"},
+ {"www.test.ac.jp", "test.ac.jp"},
+ {"kyoto.jp", ""},
+ {"test.kyoto.jp", "test.kyoto.jp"},
+ {"ide.kyoto.jp", ""},
+ {"b.ide.kyoto.jp", "b.ide.kyoto.jp"},
+ {"a.b.ide.kyoto.jp", "b.ide.kyoto.jp"},
+ {"c.kobe.jp", ""},
+ {"b.c.kobe.jp", "b.c.kobe.jp"},
+ {"a.b.c.kobe.jp", "b.c.kobe.jp"},
+ {"city.kobe.jp", "city.kobe.jp"},
+ {"www.city.kobe.jp", "city.kobe.jp"},
+ // TLD with a wildcard rule and exceptions.
+ {"ck", ""},
+ {"test.ck", ""},
+ {"b.test.ck", "b.test.ck"},
+ {"a.b.test.ck", "b.test.ck"},
+ {"www.ck", "www.ck"},
+ {"www.www.ck", "www.ck"},
+ // US K12.
+ {"us", ""},
+ {"test.us", "test.us"},
+ {"www.test.us", "test.us"},
+ {"ak.us", ""},
+ {"test.ak.us", "test.ak.us"},
+ {"www.test.ak.us", "test.ak.us"},
+ {"k12.ak.us", ""},
+ {"test.k12.ak.us", "test.k12.ak.us"},
+ {"www.test.k12.ak.us", "test.k12.ak.us"},
+ // Punycoded IDN labels
+ {"xn--85x722f.com.cn", "xn--85x722f.com.cn"},
+ {"xn--85x722f.xn--55qx5d.cn", "xn--85x722f.xn--55qx5d.cn"},
+ {"www.xn--85x722f.xn--55qx5d.cn", "xn--85x722f.xn--55qx5d.cn"},
+ {"shishi.xn--55qx5d.cn", "shishi.xn--55qx5d.cn"},
+ {"xn--55qx5d.cn", ""},
+ {"xn--85x722f.xn--fiqs8s", "xn--85x722f.xn--fiqs8s"},
+ {"www.xn--85x722f.xn--fiqs8s", "xn--85x722f.xn--fiqs8s"},
+ {"shishi.xn--fiqs8s", "shishi.xn--fiqs8s"},
+ {"xn--fiqs8s", ""},
+}
+
+func TestEffectiveTLDPlusOne(t *testing.T) {
+ for _, tc := range eTLDPlusOneTestCases {
+ got, _ := EffectiveTLDPlusOne(tc.domain)
+ if got != tc.want {
+ t.Errorf("%q: got %q, want %q", tc.domain, got, tc.want)
+ }
+ }
+}
diff --git a/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/publicsuffix/table.go b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/publicsuffix/table.go
new file mode 100644
index 000000000..50f070a92
--- /dev/null
+++ b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/publicsuffix/table.go
@@ -0,0 +1,9253 @@
+// generated by go run gen.go; DO NOT EDIT
+
+package publicsuffix
+
+const version = "publicsuffix.org's public_suffix_list.dat, git revision f47d806df99585862c8426c3e064a50eb5a278f5 (2017-06-14T11:49:01Z)"
+
+const (
+ nodesBitsChildren = 9
+ nodesBitsICANN = 1
+ nodesBitsTextOffset = 15
+ nodesBitsTextLength = 6
+
+ childrenBitsWildcard = 1
+ childrenBitsNodeType = 2
+ childrenBitsHi = 14
+ childrenBitsLo = 14
+)
+
+const (
+ nodeTypeNormal = 0
+ nodeTypeException = 1
+ nodeTypeParentOnly = 2
+)
+
+// numTLD is the number of top level domains.
+const numTLD = 1549
+
+// Text is the combined text of all labels.
+const text = "bifukagawalterbihorologybikedagestangeorgeorgiaxasnesoddenmarkha" +
+ "ngelskjakdnepropetrovskiervaapsteiermarkaragandabruzzoologicalvi" +
+ "nklein-addrammenuernberggfarmerseine12bilbaogakidsmynasushiobara" +
+ "gusartsalangeninohekinannestadray-dnsiskinkyotobetsumidatlantica" +
+ "tholicheltenham-radio-opencraftranagatorodoybillustrationinomiya" +
+ "konojosoyrorosalondonetskarpaczeladzjavald-aostarnbergladegreevj" +
+ "e-og-hornnesaltdalimitedraydnsupdaternopilawabioceanographiquebi" +
+ "rdartcenterprisesakikuchikuseikarugamvikaruizawabirkenesoddtange" +
+ "novaraumalopolskanlandrivelandrobaknoluoktachikawakembuchikumaga" +
+ "yagawakkanaibetsubamericanfamilydscloudcontrolledekafjordrudunsa" +
+ "lvadordalibabalatinord-aurdalvdalaskanittedallasalleasinglesuran" +
+ "certmgretagajobojinzais-a-candidatebirthplacebjarkoybjerkreimbal" +
+ "sfjordgcahcesuolocus-1bjugnirasakis-a-catererblockbustermezlglas" +
+ "sassinationalheritagematsubarakawagoebloombergbauernishiazais-a-" +
+ "celticsfanishigoddabloxcmsalzburgliwicebluedancebmoattachmentsam" +
+ "egawabmsamnangerbmwegroweibolzanordkappgafanquannefrankfurtjmaxx" +
+ "xboxenapponazure-mobilebnpparibaselburglobalashovhachinohedmarka" +
+ "rumaifarmsteadupontariomutashinais-a-chefarsundurbanamexnethnolo" +
+ "gybnrweirbonnishiharabookinglobodoes-itvedestrandurhamburglogowf" +
+ "ashionishiizunazukis-a-conservativefsnillfjordvrcambridgestonexu" +
+ "s-2bootsamsclubindalimoliserniaboschaefflerdalindashorokanaiebos" +
+ "tikasaokaminokawanishiaizubangebostonakijinsekikogentingloppenza" +
+ "ogashimadachicagoboatsamsungmbhartiffanybotanicalgardenishikatak" +
+ "ayamatta-varjjatjometlifeinsurancebotanicgardenishikatsuragithub" +
+ "usercontentjxfinitybotanybouncemerckmsdnipropetrovskjervoyagebou" +
+ "nty-fullensakerrypropertiesandvikcoromantovalle-d-aostatic-acces" +
+ "sanfranciscofreakunemurorangeiseiyoichippubetsubetsugaruhrboutiq" +
+ "uebecngminakamichiharabozentsujiiebplacedogawarabikomaezakirunor" +
+ "dlandvrdnsangoppdalindesnesanjournalismailillesandefjordyndns-at" +
+ "-workinggroupaleobrandywinevalleybrasiliabresciabrindisibenikebr" +
+ "istoloslocalhistorybritishcolumbialowiezachpomorskienishikawazuk" +
+ "amitondabayashiogamagoriziabroadcastlegallocalhostrodawaravennag" +
+ "asukebroadwaybroke-itkmaxxjaworznowtvalled-aostavangerbrokerbron" +
+ "noysundyndns-blogdnsannanishimerabrothermesaverdeatnurembergmode" +
+ "nakasatsunais-a-cpadualstackspace-to-rentalstomakomaibarabrowser" +
+ "safetymarketsannohelplfinancialivornobrumunddalombardiamondsanok" +
+ "ashibatakashimaseratis-a-cubicle-slavellinotteroybrunelasticbean" +
+ "stalkashiharabrusselsantabarbarabruxellesantacruzsantafedjeffers" +
+ "onishinomiyashironobryanskleppalermomahachijorpelandyndns-freebo" +
+ "x-ostrowwlkpmgmxn--0trq7p7nnishinoomotegobrynewhollandyndns-home" +
+ "dnsanukis-a-democratmpalmspringsakerbuskerudinewmexicodyn-vpnplu" +
+ "sterbuzenishinoshimattelefonicarbonia-iglesias-carboniaiglesiasc" +
+ "arboniabuzzpamperedchefastlylbaltimore-og-romsdalwaysdatabasebal" +
+ "langenoamishirasatochigiessensiositelemarkarateu-1bwhalingrimsta" +
+ "dyndns-ipirangaulardalombardynamisches-dnsaotomemergencyachtsapo" +
+ "dlasiellaktyubinskiptveterinairealtorlandyndns-mailomzaporizhzhe" +
+ "guris-a-designerimarumorimachidabzhitomirumalselvendrellorenskog" +
+ "ripescaravantaacondoshichinohealth-carereformitakeharaconference" +
+ "constructionconsuladoesntexistanbullensvanguardyndns1consultanth" +
+ "ropologyconsultingvolluroycontactoyotsukaidownloadynnsaskatchewa" +
+ "ncontemporaryarteducationalchikugodoharuovatoyouracontractorsken" +
+ "conventureshinodesashibetsuikinderoycookingchannelblagdenesnaase" +
+ "ralingenkainanaejrietisalatinabenonichernivtsiciliacoolkuszczytn" +
+ "ore-og-uvdalutskasuyameldaluxembourgrpanamacooperaunitenrightath" +
+ "omeftpanasonichernovtsykkylvenetogakushimotoganewspapercopenhage" +
+ "ncyclopedichirurgiens-dentistes-en-francecorsicagliaridagawarsza" +
+ "washingtondclkaszubycorvettevadsoccertificationcosenzagancosidns" +
+ "dojoetsuwanouchikujogaszkoladbrokesassaris-a-huntercostumedio-ca" +
+ "mpidano-mediocampidanomediocouchpotatofriesatxn--11b4c3dynv6coun" +
+ "ciluxurycouponsaudacoursesauheradynvpnchiryukyuragifuchungbukhar" +
+ "acq-acranbrookuwanalyticsavannahgacreditcardyroyrvikingruecredit" +
+ "unioncremonashgabadaddjambyluzerncrewiiheyakagecricketrzyncrimea" +
+ "st-kazakhstanangercrotonextdirectoystre-slidrettozawacrownprovid" +
+ "ercrsvparaglidinguitarsaves-the-whalessandria-trani-barletta-and" +
+ "riatranibarlettaandriacruisesavonaplesaxocryptonomichigangwoncui" +
+ "sinellahppiacenzakopanerairguardiannakadomarinebraskaunjargalsac" +
+ "eoculturalcentertainmentozsdeltaitogliattiresbschokoladencuneocu" +
+ "pcakecxn--12c1fe0bradescorporationcyberlevagangaviikanonjis-a-kn" +
+ "ightpointtokaizukamikitayamatsuris-a-landscapercymrussiacyonabar" +
+ "ulvikatowicecyouthdfcbankatsushikabeeldengeluidfidonnakamurataji" +
+ "mibuildingulenfieldfiguerestaurantraniandriabarlettatraniandriaf" +
+ "ilateliafilegearthachiojiyahoofilminamidaitomangotsukisosakitaga" +
+ "wafinalfinancefineartschwarzgwangjuifminamiechizenfinlandfinnoyf" +
+ "irebaseapparisor-fronfirenzefirestonefirmdaleirvikaufenfishingol" +
+ "ffanschweizwildlifedorainfracloudfrontdoorfitjarmeniafitnessettl" +
+ "ementranoyfjalerflesbergunmarburguovdageaidnuslivinghistoryflick" +
+ "ragerotikakamigaharaflightsciencecentersciencehistoryflirflogint" +
+ "ogurafloraflorencefloridavvesiidazaifudaigojomedizinhistorisches" +
+ "cientistoragefloripaderbornfloristanohatakahamangyshlakasamatsud" +
+ "ontexisteingeekautokeinoflorogerscjohnsonflowerscotlandflynnhuba" +
+ "mblefrakkestadiscountysnes3-sa-east-1fndfoodnetworkshoppingushik" +
+ "amifuranortonsbergxn--12co0c3b4evalleaostatoilfor-ourfor-someetn" +
+ "edalfor-theaterforexrothachirogatakahatakaishimogosenforgotdnscr" +
+ "apper-siteforli-cesena-forlicesenaforlikescandynamic-dnscrapping" +
+ "forsaleitungsenforsandasuolodingenfortmissoulair-traffic-control" +
+ "leyfortworthadanosegawaforuminamifuranofosneserveftparliamentran" +
+ "sportransurlfotaruis-a-lawyerfoxfordedyn-ip24freeboxoservegame-s" +
+ "erversailleservehalflifestylefreemasonryfreetlservehttparmafreib" +
+ "urgfreightcminamiiselectrapaniimimatakatoris-a-liberalfresenius-" +
+ "3fribourgfriuli-v-giuliafriuli-ve-giuliafriuli-vegiuliafriuli-ve" +
+ "nezia-giuliafriuli-veneziagiuliafriuli-vgiuliafriuliv-giuliafriu" +
+ "live-giuliafriulivegiuliafriulivenezia-giuliafriuliveneziagiulia" +
+ "friulivgiuliafrlfroganservehumourfrognfrolandfrom-akrehamnfrom-a" +
+ "lfrom-arqhadselfiparocherkasyno-dserveirchitachinakagawassamukaw" +
+ "ataricohdatsunanjoburgriwataraidyndns-office-on-the-webcampobass" +
+ "ociatesapporofrom-azfrom-capebretonamiastapleserveminecraftravel" +
+ "channelfrom-collectionfrom-ctravelersinsurancefrom-dchitosetogit" +
+ "suldalotenkawafrom-defenseljordfrom-flanderservemp3from-gausdalf" +
+ "rom-higashiagatsumagoizumizakirkeneservep2parservepicservequakef" +
+ "rom-iafrom-idfrom-ilfrom-incheonfrom-kservesarcasmatartanddesign" +
+ "from-kyowariasahikawafrom-lajollamericanexpressexyfrom-maniwakur" +
+ "atextileksvikazofrom-mdfrom-megurokunohealthcareerservicesettsur" +
+ "geonshalloffamemorialfrom-microsoftbankazunofrom-mnfrom-modellin" +
+ "gfrom-msevastopolefrom-mtnfrom-nchloefrom-ndfrom-nefrom-nhktrdfr" +
+ "om-njcbnlfrom-nminamiizukamisatokamachintaifun-dnsaliasdaburfrom" +
+ "-nvalledaostavernfrom-nyfrom-ohkurafrom-oketohmannorth-kazakhsta" +
+ "nfrom-orfrom-padovaksdalfrom-pratohnoshoooshikamaishimodatefrom-" +
+ "rivnefrom-schoenbrunnfrom-sdfrom-tnfrom-txn--1ck2e1bananarepubli" +
+ "caseihichisobetsuitainairforcechirealminamiawajikibmdiscoveryomb" +
+ "ondishakotanavigationavoiitatebayashiibahcavuotnagaraholtaleniwa" +
+ "izumiotsukumiyamazonawsadodgemologicallyngenvironmentalconservat" +
+ "ionavuotnaklodzkodairassnasabaerobaticketselinogradultashkentata" +
+ "motors3-ap-northeast-2from-utazuerichardlillehammerfeste-ipartis" +
+ "-a-libertarianfrom-val-daostavalleyfrom-vtrentino-a-adigefrom-wa" +
+ "from-wielunnerfrom-wvallee-aosteroyfrom-wyfrosinonefrostalowa-wo" +
+ "lawafroyahikobeardubaiduckdnsevenassisicilyfstcgroupartnersewill" +
+ "iamhillfujiiderafujikawaguchikonefujiminohtawaramotoineppubologn" +
+ "akanotoddenfujinomiyadafujiokayamansionsfranziskanerdpolicefujis" +
+ "atoshonairtelecityeatsharis-a-linux-useranishiaritabashijonawate" +
+ "fujisawafujishiroishidakabiratoridefinimakanegasakindlegokasells" +
+ "-for-lessharpartshawaiijimarugame-hostrolekameokameyamatotakadaf" +
+ "ujitsurugashimaritimekeepingfujixeroxn--1ctwolominamatakkokamino" +
+ "yamaxunusualpersonfujiyoshidafukayabeatshellaspeziafukuchiyamada" +
+ "fukudominichocolatemasekashiwazakiyosatokashikiyosemitefukuis-a-" +
+ "llamarylandfukumitsubishigakirovogradoyfukuokazakiryuohaebarumin" +
+ "amimakis-a-musicianfukuroishikarikaturindalfukusakisarazurewebsi" +
+ "teshikagamiishibukawafukuyamagatakaharustkanoyakumoldeloittexasc" +
+ "olipicenoipifonynysaarlandfunabashiriuchinadafunagatakahashimama" +
+ "kishiwadafunahashikamiamakusatsumasendaisennangonohejis-a-nascar" +
+ "fanfundaciofuoiskujukuriyamanxn--1lqs03nfuosskoczowinbarcelonaga" +
+ "sakijobserverisignieznord-frontiereviewskrakowedeployomitanobihi" +
+ "rosakikamijimastronomy-gatewaybomloans3-ap-south-1furnituredston" +
+ "efurubiraquarelleborkangerfurudonostiaarpartyfurukawairtrafficho" +
+ "funatoriginsurecifedexhibitionishiokoppegardyndns-picsardegnamss" +
+ "koganeis-a-doctorayfusodegaurafussaikisofukushimaoris-a-nurserve" +
+ "bbshimojis-a-painteractivegarsheis-a-patsfanfutabayamaguchinomig" +
+ "awafutboldlygoingnowhere-for-moregontrailroadfuttsurugimperiafut" +
+ "urehostingfuturemailingfvgfyis-a-personaltrainerfylkesbiblackfri" +
+ "dayfyresdalhangoutsystemscloudfunctionshimokawahannanmokuizumode" +
+ "rnhannotaireshimokitayamahanyuzenhapmirhareidsbergenharstadharve" +
+ "stcelebrationhasamarcheapassagenshimonitayanagitlaborhasaminami-" +
+ "alpssells-itrentino-aadigehashbanghasudahasura-appassenger-assoc" +
+ "iationhasvikddielddanuorrikuzentakataiwanairlinedre-eikerhatogay" +
+ "aitakamoriokalmykiahatoyamazakitahiroshimarnardalhatsukaichikais" +
+ "eis-a-republicancerresearchaeologicaliforniahattfjelldalhayashim" +
+ "amotobungotakadapliernewjerseyhazuminobusellsyourhomegoodshimono" +
+ "sekikawahboehringerikehelsinkitakamiizumisanofidelitysvardollshi" +
+ "mosuwalkis-a-rockstarachowicehembygdsforbundhemneshimotsukehemse" +
+ "dalhepforgeherokussldheroyhgtvalleeaosteigenhigashichichibunkyon" +
+ "anaoshimageandsoundandvisionhigashihiroshimanehigashiizumozakita" +
+ "katakanabeautydalhigashikagawahigashikagurasoedahigashikawakitaa" +
+ "ikitakyushuaiahigashikurumeiwamarriottrentino-alto-adigehigashim" +
+ "atsushimarshallstatebankfhappouhigashimatsuyamakitaakitadaitoiga" +
+ "wahigashimurayamamotorcycleshimotsumahigashinarusembokukitamidor" +
+ "is-a-socialistmein-vigorgehigashinehigashiomihachimanchesterhiga" +
+ "shiosakasayamanakakogawahigashishirakawamatakanezawahigashisumiy" +
+ "oshikawaminamiaikitamotosumitakagildeskaliszhigashitsunotogawahi" +
+ "gashiurausukitanakagusukumoduminamiminowahigashiyamatokoriyamana" +
+ "shifteditchyouripaviancarrierhigashiyodogawahigashiyoshinogaris-" +
+ "a-soxfanhiraizumisatohobby-sitehirakatashinagawahiranais-a-stude" +
+ "ntalhirarahiratsukagawahirayaizuwakamatsubushikusakadogawahistor" +
+ "ichouseshinichinanhitachiomiyaginankokubunjis-a-teacherkassymant" +
+ "echnologyhitachiotagooglecodespotrentino-altoadigehitraeumtgerad" +
+ "elmenhorstalbanshinjournalistjohnhjartdalhjelmelandholeckobierzy" +
+ "ceholidayhomeipfizerhomelinkhakassiahomelinuxn--1lqs71dhomeoffic" +
+ "ehomesecuritymaceratakaokaluganskolevangerhomesecuritypccwindmil" +
+ "lhomesenseminehomeunixn--1qqw23ahondahoneywellbeingzonehongopocz" +
+ "northwesternmutualhonjyoitakarazukamakurazakitashiobarahornindal" +
+ "horseoulminamiogunicomcastresistancehortendofinternet-dnshinjuku" +
+ "manohospitalhoteleshinkamigotoyohashimotoshimahotmailhoyangerhoy" +
+ "landetroitskydivinghumanitieshinshinotsurgeryhurdalhurumajis-a-t" +
+ "echietis-a-therapistoiahyllestadhyogoris-an-accountantshinshiroh" +
+ "yugawarahyundaiwafunehzchoseiroumuenchenishitosashimizunaminamia" +
+ "shigarajfkhmelnitskiyamashikejgorajlchoyodobashichikashukujitawa" +
+ "rajlljmpharmacienshiojirishirifujiedajnjcpgfoggiajoyokaichibahcc" +
+ "avuotnagareyamalborkdalpha-myqnapcloudapplebesbyglandjpmorganjpn" +
+ "jprshioyanaizujuniperjurkoshimizumakis-an-engineeringkoshunantok" +
+ "igawakosugekotohiradomainshirakofuefukihaboromskoguchikuzenkotou" +
+ "rakouhokutamakis-an-entertainerkounosupplieshiranukamogawakouyam" +
+ "ashikokuchuokouzushimasoykozagawakozakis-bykpnkppspdnshiraois-ce" +
+ "rtifieducatorahimeshimamateramochizukirakrasnodarkredirectmelhus" +
+ "cultureggio-calabriakristiansandcatshiraokanagawakristiansundkro" +
+ "dsheradkrokstadelvaldaostarostwodzislawindowshiratakahagivestbyk" +
+ "ryminamisanrikubetsupportrentino-sued-tirolkumatorinokumejimasud" +
+ "akumenanyokkaichiropractichristmasakikugawatchandclockasukabedzi" +
+ "n-the-bandaikawachinaganoharamcoachampionshiphoptobishimaizurugb" +
+ "ydgoszczecinemakeupowiathletajimabariakeisenbahnishiwakis-a-fina" +
+ "ncialadvisor-aurdalottokonamegatakasugais-a-geekgalaxykunisakis-" +
+ "foundationkunitachiarailwaykunitomigusukumamotoyamassa-carrara-m" +
+ "assacarraramassabusinessebytomaritimobarakunneppulawykunstsammlu" +
+ "ngkunstunddesignkuokgrouphdkureggio-emilia-romagnakatsugawakurga" +
+ "nkurobelaudiblebtimnetzkurogimilanokuroisoftwarendalenugkuromats" +
+ "unais-gonekurotakikawasakis-into-animelbournekushirogawakustanai" +
+ "s-into-carshintomikasaharakusupplykutchanelkutnokuzumakis-into-c" +
+ "artoonshinyoshitomiokamitsuekvafjordkvalsundkvamfamberkeleykvana" +
+ "ngenkvinesdalkvinnheradkviteseidskogkvitsoykwpspiegelkzmissilewi" +
+ "smillermisugitokorozawamitourismolancastermitoyoakemiuramiyazumi" +
+ "yotamanomjondalenmlbfanmonmouthagebostadmonstermonticellolmontre" +
+ "alestatefarmequipmentrentino-suedtirolmonza-brianzaporizhzhiamon" +
+ "za-e-della-brianzapposhishikuis-not-certifiedunetbankharkovanylv" +
+ "enicemonzabrianzaptokuyamatsusakahoginowaniihamatamakawajimaphil" +
+ "adelphiaareadmyblogsitemonzaebrianzaramonzaedellabrianzamoonscal" +
+ "exusdecorativeartshisognemoparachutingmordoviajessheiminamitanem" +
+ "oriyamatsushigemoriyoshimilitarymormoneymoroyamatsuuramortgagemo" +
+ "scowinnershisuifuelveruminamiuonumatsumotofukemoseushistorymosjo" +
+ "enmoskeneshitaramamosshizukuishimofusaitamatsukuris-savedmosvikn" +
+ "x-serveronakatombetsunndalmoteginozawaonsenmoviemovistargardmtpc" +
+ "hromedicaltanissettairamtranbymuenstermugithubcloudusercontentre" +
+ "ntinoa-adigemuikamishihoronobeauxartsandcraftshizuokananporovigo" +
+ "tpantheonsitemukochikushinonsenergymulhouservebeermunakatanemunc" +
+ "ieszynmuosattemuphilatelymurmanskolobrzegersundmurotorcraftrenti" +
+ "noaadigemusashimurayamatsuzakis-slickhersonmusashinoharamuseetre" +
+ "ntinoalto-adigemuseumverenigingmusicargodaddynaliascoli-picenogi" +
+ "ftshoujis-uberleetrentino-stirolmutsuzawamy-vigorlicemy-wanggouv" +
+ "icenzamyactivedirectorymyasustor-elvdalmycdn77-securechtrainingm" +
+ "ydissentrentinoaltoadigemydrobofagemydshowamyeffectrentinos-tiro" +
+ "lmyfirewallonieruchomoscienceandindustrynmyfritzmyftpaccesshowti" +
+ "meteorapphilipsynology-diskstationmyfusionmyhome-serverrankoshig" +
+ "ayanagawamykolaivaporcloudmymailermymediapchryslermyokohamamatsu" +
+ "damypepsongdalenviknakanojohanamakinoharamypetshriramlidlugoleka" +
+ "gaminoduminamiyamashirokawanabelembroideryggeelvincklabudhabikin" +
+ "okawabarthagakhanamigawamyphotoshibajddarchaeologyeongnamegawalb" +
+ "rzycharternidmypsxn--30rr7ymysecuritycamerakermyshopblocksienara" +
+ "shinomytis-a-bookkeeperugiamyvnchungnamdalseidfjordyndns-remotew" +
+ "dyndns-serverdalouvreggioemiliaromagnakayamatsumaebashikshacknet" +
+ "oyookanmakiwakunigamidsundyndns-weberlincolnissandnessjoenissayo" +
+ "koshibahikariwanumatakazakis-a-greenissedalowiczest-le-patrondhe" +
+ "immobilienisshingugepicturesilkomaganepiemontepilotsimple-urlpim" +
+ "ientaketomisatolgapinkomakiyosumy-routerpioneerpippuphonefossigd" +
+ "alpiszpittsburghofauskedsmokorsetagayasells-for-unzenpiwatepizza" +
+ "pkomatsushimashikizunokunimihoboleslawiechristiansburgroks-thisa" +
+ "yamanobeokakudamatsueplanetariuminanoplantationplantsirdalplatfo" +
+ "rmshangrilanciaplaystationplazaplchurchaseljeepostfoldnavyplumbi" +
+ "ngopmnpodzonepohlpoivronpokerpokrovskomforbarclays3-us-gov-west-" +
+ "1politiendapolkowicepoltavalle-aostathellezajskommunalforbundpom" +
+ "orzeszowioslingpordenonepornporsangerporsanguidellogliastradingp" +
+ "orsgrunnanpoznanpraxis-a-bruinsfanprdpreservationpresidioprgmrpr" +
+ "imeloyalistockholmestrandprincipeprivatizehealthinsuranceprochow" +
+ "iceproductionslupskommuneprofbsbxn--12cfi8ixb8lvivano-frankivska" +
+ "tsuyamasfjordenprogressivegasiapromombetsurfbx-oscholarshipschoo" +
+ "lpropertyprotectionprotonetrentinosud-tirolprudentialpruszkowitd" +
+ "komonoprzeworskogptplusgardenpvtrentinosudtirolpwcirclegnicafede" +
+ "rationiyodogawapzqldqponqslgbtrentinosued-tirolquicksytesnoasait" +
+ "omobellevuelosangelesjaguarchitecturealtychyattorneyagawalesundq" +
+ "uipelementsokanazawaqvcircustomerstuff-4-salestufftoread-booksne" +
+ "solognestuttgartritonsusakis-very-evillagesusonosuzakaneyamazoes" +
+ "uzukaniepcesuzukis-very-goodhandsonsvalbardunloppacificitadelive" +
+ "rysveiosvelvikongsbergsvizzeraswedenswidnicartierswiebodzindiana" +
+ "polis-a-bloggerswiftcoversicherungswinoujscienceandhistoryswissh" +
+ "ikis-very-nicesynology-dsolundbeckomorotsukamiokamikoaniikappugl" +
+ "iatushuissier-justicetuvalle-daostaticsomatuxfamilytwmailvennesl" +
+ "askerrylogisticsomnaritakurashikis-very-badajozoravestfoldvestne" +
+ "soovestre-slidreamhostersopotrentinosuedtirolvestre-totennishiaw" +
+ "akuravestvagoyvevelstadvibo-valentiavibovalentiavideovillaskimit" +
+ "subatamicable-modembetsukuis-very-sweetpeppervinnicartoonartdeco" +
+ "ffeedbackplaneappspotagervinnytsiavipsinaappiagetmyiphoenixn--32" +
+ "vp30haibarakitahatakamatsukawavirginiavirtualvirtueeldomeindianm" +
+ "arketingvirtuelvisakegawavistaprinternationalfirearmsor-odalvite" +
+ "rboltrogstadvivoldavixn--3bst00minnesotaketakatsukis-into-gamess" +
+ "inatsukigatakasagotembaixadavlaanderenvladikavkazimierz-dolnyvla" +
+ "dimirvlogoipictetrentinostirolvolkswagentsor-varangervologdansko" +
+ "ninjamisonvolvolkenkundenvolyngdalvossevangenvotevotingvotoyonak" +
+ "agyokutoursorfoldwloclawekonskowolayangroupharmacyshirahamatonbe" +
+ "tsurnadalwmflabsorreisahayakawakamiichikawamisatotalworldworse-t" +
+ "handawowithgoogleapisa-hockeynutsiracusakatakinouewritesthisblog" +
+ "sytewroclawithyoutubeneventoeidsvollwtcitichernigovernmentoyonow" +
+ "tfbxoschulewuozuwwwiwatsukiyonowruzhgorodeowzmiuwajimaxn--45brj9" +
+ "civilaviationxn--45q11civilisationxn--4gbriminingxn--4it168dxn--" +
+ "4it797konyveloftrentino-sudtirolxn--4pvxs4allxn--54b7fta0ccivili" +
+ "zationxn--55qw42gxn--55qx5dxn--5js045dxn--5rtp49civilwarmanageme" +
+ "ntoyosatoyakokonoexn--5rtq34kooris-an-anarchistoricalsocietyxn--" +
+ "5su34j936bgsgxn--5tzm5gxn--6btw5axn--6frz82gxn--6orx2rxn--6qq986" +
+ "b3xlxn--7t0a264claimsarlucaniaxn--80adxhksortlandxn--80ao21axn--" +
+ "80aqecdr1axn--80asehdbarreauctionflfanfshostrowiecasertaipeiheij" +
+ "iiyamanouchikuhokuryugasakitaurayasudaukraanghkeymachineustarhub" +
+ "alsanagochihayaakasakawaharanzanpachigasakicks-assedicasadelamon" +
+ "edatingjemnes3-ap-southeast-2xn--80aswgxn--80audnedalnxn--8ltr62" +
+ "kopervikhmelnytskyivaolbia-tempio-olbiatempioolbialystokkepnogat" +
+ "aijis-an-actresshintokushimaxn--8pvr4uxn--8y0a063axn--90a3academ" +
+ "y-firewall-gatewayxn--90aishobaraomoriguchiharahkkeravjuedisches" +
+ "apeakebayernrtromsakakinokiaxn--90azhytomyrxn--9dbhblg6dietcimdb" +
+ "arrel-of-knowledgeologyonagoyaurskog-holandroverhalla-speziaerop" +
+ "ortalaheadjudaicaaarborteaches-yogasawaracingroks-theatree164xn-" +
+ "-9dbq2axn--9et52uxn--9krt00axn--andy-iraxn--aroport-byandexn--3d" +
+ "s443gxn--asky-iraxn--aurskog-hland-jnbarrell-of-knowledgeometre-" +
+ "experts-comptables3-us-west-1xn--avery-yuasakuhokkaidoomdnshome-" +
+ "webservercellikes-piedmontblancomeeresorumincommbankmpspbarclayc" +
+ "ards3-us-east-2xn--b-5gaxn--b4w605ferdxn--bck1b9a5dre4cldmailucc" +
+ "apitalonewportlligatoyotaris-a-gurulsandoyxn--bdddj-mrabdxn--bea" +
+ "ralvhki-y4axn--berlevg-jxaxn--bhcavuotna-s4axn--bhccavuotna-k7ax" +
+ "n--bidr-5nachikatsuuraxn--bievt-0qa2xn--bjarky-fyaotsurreyxn--bj" +
+ "ddar-ptamayufuettertdasnetzxn--blt-elabourxn--bmlo-graingerxn--b" +
+ "od-2naroyxn--brnny-wuaccident-investigation-aptibleaseating-orga" +
+ "nicbcn-north-1xn--brnnysund-m8accident-prevention-webhopenairbus" +
+ "antiquest-a-la-maisondre-landebudapest-a-la-masionionjukudoyamag" +
+ "entositelekommunikationthewifiat-band-campaniaxn--brum-voagatrom" +
+ "sojampagefrontapphotographysioxn--btsfjord-9zaxn--c1avgxn--c2br7" +
+ "gxn--c3s14mintelligencexn--cck2b3barsyonlinewhampshirebungoonord" +
+ "-odalazioceanographics3-us-west-2xn--cg4bkis-with-thebandovre-ei" +
+ "kerxn--ciqpnxn--clchc0ea0b2g2a9gcdn77-sslattumisakis-leetrentino" +
+ "-s-tirollagrigentomologyeongbukharkivgucciprianiigataishinomakim" +
+ "obetsuliguriaxn--comunicaes-v6a2oxn--correios-e-telecomunicaes-g" +
+ "hc29axn--czr694bashkiriaustevollarvikarasjohkamiminers3-ca-centr" +
+ "al-1xn--czrs0trusteexn--czru2dxn--czrw28basilicataniaustinnatura" +
+ "lsciencesnaturelles3-eu-central-1xn--d1acj3basketballfinanzgorau" +
+ "straliaisondriodejaneirochesterepbodynathomebuiltatarantottoribe" +
+ "staddnskingjerdrumckinseyokosukanzakiwienaturbruksgymnaturhistor" +
+ "isches3-eu-west-1xn--d1alfaromeoxn--d1atrvarggatroandinosaureise" +
+ "nxn--d5qv7z876clickasumigaurawa-mazowszextraspacekitagatajirissa" +
+ "gamiharaxn--davvenjrga-y4axn--djrs72d6uyxn--djty4koryokamikawane" +
+ "honbetsurutaharaxn--dnna-grajewolterskluwerxn--drbak-wuaxn--dyry" +
+ "-iraxn--e1a4clinichernihivanovodkagoshimalvikashiwaraxn--eckvdtc" +
+ "9dxn--efvn9southcarolinazawaxn--efvy88hair-surveillancexn--ehqz5" +
+ "6nxn--elqq16hakatanoshiroomuraxn--estv75gxn--eveni-0qa01gaxn--f6" +
+ "qx53axn--fct429kosaigawaxn--fhbeiarnxn--finny-yuaxn--fiq228c5hso" +
+ "uthwestfalenxn--fiq64batodayonaguniversityoriikariyaltakasakiyok" +
+ "awaraustrheimatunduhrennesoyokoteastcoastaldefencebinagisochildr" +
+ "ensgardenatuurwetenschappenaumburgjerstadotsuruokakegawaetnagaha" +
+ "maroygardenebakkeshibechambagriculturennebudejjudygarlandd-dnsfo" +
+ "r-better-thanawawdev-myqnapcloudcontrolapplinzi234xn--fiqs8sowax" +
+ "n--fiqz9spjelkavikomvuxn--2m4a15exn--fjord-lraxn--fjq720axn--fl-" +
+ "ziaxn--flor-jraxn--flw351exn--fpcrj9c3dxn--frde-grandrapidspread" +
+ "bettingxn--frna-woaraisaijotrysiljanxn--frya-hraxn--fzc2c9e2clin" +
+ "iquenoharaxn--fzys8d69uvgmailxn--g2xx48clintonoshoesarpsborgrond" +
+ "arxn--gckr3f0fedorapeopleirfjordxn--gecrj9clothingrongaxn--ggavi" +
+ "ika-8ya47hakodatexn--gildeskl-g0axn--givuotna-8yasakaiminatoyone" +
+ "zawaxn--gjvik-wuaxn--gk3at1exn--gls-elacaixaxn--gmq050isleofmand" +
+ "alxn--gmqw5axn--h-2failxn--h1aeghakonexn--h2brj9cnsarufutsunomiy" +
+ "awakasaikaitakoelnxn--h3cuzk1digitalxn--hbmer-xqaxn--hcesuolo-7y" +
+ "a35batsfjordivtasvuodnakaiwamizawauthordalandroiddnss3-eu-west-2" +
+ "xn--hery-iraxn--hgebostad-g3axn--hmmrfeasta-s4acctulangevagrarbo" +
+ "retumbriaxn--hnefoss-q1axn--hobl-iraxn--holtlen-hxaxn--hpmir-xqa" +
+ "xn--hxt814exn--hyanger-q1axn--hylandet-54axn--i1b6b1a6a2exn--imr" +
+ "513nxn--indery-fyasugissmarterthanyouxn--io0a7iwchoshibuyachiyod" +
+ "avvenjargapartmentsardiniaxn--j1aefedoraprojectrani-andria-barle" +
+ "tta-trani-andriaxn--j1amhakubaghdadxn--j6w193gxn--jlq61u9w7bauha" +
+ "usposts-and-telecommunicationsncfdivttasvuotnakamagayahababyklec" +
+ "lercasinordre-landiyoshiokaracoldwarmiamihamadautomotivecoalipay" +
+ "okozebinorfolkebibleikangereportateshinanomachimkentateyamagroce" +
+ "rybnikahokutobamaintenancebetsukubank12xn--jlster-byasuokanraxn-" +
+ "-jrpeland-54axn--jvr189misasaguris-lostre-toteneis-an-actorxn--k" +
+ "7yn95exn--karmy-yuaxn--kbrq7oxn--kcrx77d1x4axn--kfjord-iuaxn--kl" +
+ "bu-woaxn--klt787dxn--kltp7dxn--kltx9axn--klty5xn--3e0b707exn--ko" +
+ "luokta-7ya57hakuis-a-photographerokuappasadenamsosnowiechonanbui" +
+ "lderschmidtre-gauldalottexn--kprw13dxn--kpry57dxn--kpu716fermoda" +
+ "lenxn--kput3ixn--krager-gyatomitamamuraxn--kranghke-b0axn--krdsh" +
+ "erad-m8axn--krehamn-dxaxn--krjohka-hwab49jeonnamerikawauexn--ksn" +
+ "es-uuaxn--kvfjord-nxaxn--kvitsy-fyatsukanumazuryxn--kvnangen-k0a" +
+ "xn--l-1fairwindspydebergxn--l1accentureklamborghiniizaxn--lahead" +
+ "ju-7yatsushiroxn--langevg-jxaxn--lcvr32dxn--ldingen-q1axn--leaga" +
+ "viika-52bbcateringebugattipschlesisches3-website-ap-northeast-1x" +
+ "n--lesund-huaxn--lgbbat1ad8jetztrentino-sud-tirolxn--lgrd-poacnt" +
+ "oyotomiyazakis-a-hard-workerxn--lhppi-xqaxn--linds-pramericanart" +
+ "unesolutionsokndalxn--lns-qlansrlxn--loabt-0qaxn--lrdal-sraxn--l" +
+ "renskog-54axn--lt-liacolonialwilliamsburgrossetouchijiwadell-ogl" +
+ "iastraderxn--lten-granexn--lury-iraxn--m3ch0j3axn--mely-iraxn--m" +
+ "erker-kuaxn--mgb2ddesrtrentoyokawaxn--mgb9awbferraraxn--mgba3a3e" +
+ "jtunkongsvingerxn--mgba3a4f16axn--mgba3a4franamizuholdingsmilelx" +
+ "n--mgba7c0bbn0axn--mgbaakc7dvferrarittogoldpoint2thisamitsukexn-" +
+ "-mgbaam7a8hakusandiegoodyearxn--mgbab2bdxn--mgbai9a5eva00bbtatto" +
+ "olsztynsettlers3-website-ap-southeast-1xn--mgbai9azgqp6jevnakers" +
+ "huscountryestateofdelawarezzoologyxn--mgbayh7gpagespeedmobilizer" +
+ "oxn--mgbb9fbpobanazawaxn--mgbbh1a71exn--mgbc0a9azcgxn--mgbca7dzd" +
+ "oxn--mgberp4a5d4a87gxn--mgberp4a5d4arxn--mgbi4ecexposedxn--mgbpl" +
+ "2fhskodjejuegoshikiminokamoenairportland-4-salernoboribetsucksrv" +
+ "areserveblogspotrevisohughesolarssonxn--mgbqly7c0a67fbcoloradopl" +
+ "ateaudioxn--mgbqly7cvafredrikstadtvstordalxn--mgbt3dhdxn--mgbtf8" +
+ "flatangerxn--mgbtx2bbvacationswatch-and-clockerhcloudns3-website" +
+ "-ap-southeast-2xn--mgbx4cd0abbotturystykannamifunexn--mix082ferr" +
+ "eroticanonoichinomiyakexn--mix891fetsundxn--mjndalen-64axn--mk0a" +
+ "xindustriesteambulancexn--mk1bu44columbusheyxn--mkru45ixn--mlatv" +
+ "uopmi-s4axn--mli-tlanxesstorehabmerxn--mlselv-iuaxn--moreke-juax" +
+ "n--mori-qsakuragawaxn--mosjen-eyawaraxn--mot-tlapyatigorskypexn-" +
+ "-mre-og-romsdal-qqbentleyukinfinitintuitaxihuanhlfanhs3-website-" +
+ "eu-west-1xn--msy-ula0haldenxn--mtta-vrjjat-k7afamilycompanycommu" +
+ "nitysfjordyndns-wikinkobayashikaoirminamibosogndalucernexn--muos" +
+ "t-0qaxn--mxtq1misawaxn--ngbc5azdxn--ngbe9e0axn--ngbrxn--3oq18vl8" +
+ "pn36axn--nit225kosakaerodromegallupinbarefootballooningjovikarat" +
+ "suginamikatagamiharuconnectatsunobiraugustowadaegubs3-ap-southea" +
+ "st-1xn--nmesjevuemie-tcbalestrandabergamoarekexn--nnx388axn--nod" +
+ "exn--nqv7fs00emaxn--nry-yla5gxn--ntso0iqx3axn--ntsq17gxn--nttery" +
+ "-byaeservecounterstrikexn--nvuotna-hwaxn--nyqy26axn--o1achattano" +
+ "oganordreisa-geekoseis-an-artisteinkjerusalemrxn--o3cw4halsaintl" +
+ "ouis-a-anarchistoiredumbrellanbibaidarxn--o3cyx2axn--od0algxn--o" +
+ "d0aq3beppublishproxyzgorzeleccolognewyorkshirecipesaro-urbino-pe" +
+ "sarourbinopesaromasvuotnaharimamurogawatches3-website-sa-east-1x" +
+ "n--ogbpf8flekkefjordxn--oppegrd-ixaxn--ostery-fyawatahamaxn--osy" +
+ "ro-wuaxn--p1acfgujolsterxn--p1aixn--pbt977comobilyxn--pgbs0dhlxn" +
+ "--porsgu-sta26fhvalerxn--pssu33lxn--pssy2uxn--q9jyb4comparemarke" +
+ "rryhotelsasayamaxn--qcka1pmcdonaldstorfjordxn--qqqt11misconfused" +
+ "xn--qxamuneuestorjelenia-goraxn--rady-iraxn--rdal-poaxn--rde-ula" +
+ "quilancashireggiocalabriaxn--rdy-0nabarixn--rennesy-v1axn--rhkke" +
+ "rvju-01aflakstadaokagakibichuoxn--rholt-mragowoodsidexn--rhqv96g" +
+ "xn--rht27zxn--rht3dxn--rht61exn--risa-5narusawaxn--risr-iraxn--r" +
+ "land-uuaxn--rlingen-mxaxn--rmskog-byaxn--rny31hammarfeastafricap" +
+ "etownnews-stagingxn--rovu88bernuorockartuzyukuhashimoichinosekig" +
+ "aharautoscanadaejeonbukarasjokarasuyamarylhurstjordalshalsenaust" +
+ "dalavagiskebizenakaniikawatanaguramusementarnobrzegyptianaturalh" +
+ "istorymuseumcenterepaircraftarumizusawabogadocscbgdyniabkhaziama" +
+ "llamagazineat-url-o-g-i-nativeamericanantiques3-ap-northeast-1ka" +
+ "ppchizippodhaleangaviikadenadexetereit3l3p0rtargets-itargiving12" +
+ "000emmafanconagawakayamadridvagsoyericssonyoursidealerimo-i-rana" +
+ "amesjevuemielno-ip6xn--rros-granvindafjordxn--rskog-uuaxn--rst-0" +
+ "narutokyotangovtuscanyxn--rsta-francaiseharaxn--ryken-vuaxn--ryr" +
+ "vik-byaxn--s-1faithruherecreationxn--s9brj9compute-1xn--sandness" +
+ "jen-ogbizxn--sandy-yuaxn--seral-lraxn--ses554gxn--sgne-gratangen" +
+ "xn--skierv-utazaskoyabearalvahkihokumakogengerdalcestpetersburgx" +
+ "n--skjervy-v1axn--skjk-soaxn--sknit-yqaxn--sknland-fxaxn--slat-5" +
+ "narviikamisunagawaxn--slt-elabbvieeexn--smla-hraxn--smna-gratis-" +
+ "a-bulls-fanxn--snase-nraxn--sndre-land-0cbremangerxn--snes-poaxn" +
+ "--snsa-roaxn--sr-aurdal-l8axn--sr-fron-q1axn--sr-odal-q1axn--sr-" +
+ "varanger-ggbeskidyn-o-saurlandes3-website-us-east-1xn--srfold-by" +
+ "axn--srreisa-q1axn--srum-grazxn--stfold-9xaxn--stjrdal-s1axn--st" +
+ "jrdalshalsen-sqbestbuyshouses3-website-us-west-1xn--stre-toten-z" +
+ "cbstreamsterdamnserverbaniaxn--t60b56axn--tckweatherchannelxn--t" +
+ "iq49xqyjewelryxn--tjme-hraxn--tn0agrinet-freakstudioxn--tnsberg-" +
+ "q1axn--tor131oxn--trany-yuaxn--trgstad-r1axn--trna-woaxn--troms-" +
+ "zuaxn--tysvr-vraxn--uc0atvaroyxn--uc0ay4axn--uist22hamurakamigor" +
+ "is-a-playerxn--uisz3gxn--unjrga-rtaobaokinawashirosatochiokinosh" +
+ "imalatvuopmiasakuchinotsuchiurakawakuyabukievenestudyndns-at-hom" +
+ "edepotenzamamicrolightingxn--unup4yxn--uuwu58axn--vads-jraxn--va" +
+ "rd-jraxn--vegrshei-c0axn--vermgensberater-ctbetainaboxfusejnyuri" +
+ "honjoyentgoryusuharaveroykenglandds3-external-1xn--vermgensberat" +
+ "ung-pwbieigersundnpalaceu-3utilitiesquare7xn--vestvgy-ixa6oxn--v" +
+ "g-yiabcgxn--vgan-qoaxn--vgsy-qoa0jewishartgalleryxn--vgu402compu" +
+ "terhistoryofscience-fictionxn--vhquvbargainstitutelevisionayorov" +
+ "nobninskarelianceu-2xn--vler-qoaxn--vre-eiker-k8axn--vrggt-xqadx" +
+ "n--vry-yla5gxn--vuq861bielawalmartjeldsundrangedalillyusuisserve" +
+ "exchangevents3-website-us-west-2xn--w4r85el8fhu5dnraxn--w4rs40lx" +
+ "n--wcvs22dxn--wgbh1comsecuritytacticsaseboknowsitallukowhoswhokk" +
+ "sundyndns-workisboringroundhandlingroznyxn--wgbl6axn--xhq521biel" +
+ "laakesvuemielecceverbankarlsoyuufcfanikinuyamashinashikitchenikk" +
+ "oebenhavnikolaevennodessagaeroclubmedecincinnationwidealstahauge" +
+ "sunderseaportsinfolldalabamagasakishimabarackmazerbaijan-mayendo" +
+ "ftheinternetflixilovecollegefantasyleaguernseyuzawavocatanzarowe" +
+ "ddingjesdalavangenaval-d-aosta-valleyolasitehimejibigawaskvolloa" +
+ "bathsbc66xn--xkc2al3hye2axn--xkc2dl3a5ee0hangglidingxn--y9a3aqua" +
+ "riumishimatsunoxn--yer-znarvikosherbrookegawaxn--yfro4i67oxn--yg" +
+ "arden-p1axn--ygbi2ammxn--3pxu8konsulatrobeepilepsydneyxn--ystre-" +
+ "slidre-ujbieszczadygeyachimataikikonaioirasebastopologyeonggieht" +
+ "avuoatnagaivuotnagaokakyotambabia-goracleaningatlantabuseekloges" +
+ "t-mon-blogueurovisionikonantankarmoyxn--zbx025dxn--zf0ao64axn--z" +
+ "f0avxn--42c2d9axn--zfr164bievatmallorcadaquesakurainvestmentsaky" +
+ "otanabellunorddalimanowarudavoues3-fips-us-gov-west-1xperiaxz"
+
+// nodes is the list of nodes. Each node is represented as a uint32, which
+// encodes the node's children, wildcard bit and node type (as an index into
+// the children array), ICANN bit and text.
+//
+// If the table was generated with the -comments flag, there is a //-comment
+// after each node's data. In it is the nodes-array indexes of the children,
+// formatted as (n0x1234-n0x1256), with * denoting the wildcard bit. The
+// nodeType is printed as + for normal, ! for exception, and o for parent-only
+// nodes that have children but don't match a domain label in their own right.
+// An I denotes an ICANN domain.
+//
+// The layout within the uint32, from MSB to LSB, is:
+// [ 1 bits] unused
+// [ 9 bits] children index
+// [ 1 bits] ICANN bit
+// [15 bits] text index
+// [ 6 bits] text length
+var nodes = [...]uint32{
+ 0x31a403,
+ 0x284944,
+ 0x2dd106,
+ 0x3706c3,
+ 0x3706c6,
+ 0x398706,
+ 0x3a8103,
+ 0x2fe244,
+ 0x38e987,
+ 0x2dcd48,
+ 0x1a05702,
+ 0x316e87,
+ 0x35c789,
+ 0x2abb0a,
+ 0x2abb0b,
+ 0x22f383,
+ 0x287506,
+ 0x232dc5,
+ 0x1e021c2,
+ 0x2161c4,
+ 0x238743,
+ 0x26fc45,
+ 0x2214902,
+ 0x347743,
+ 0x266f744,
+ 0x33ddc5,
+ 0x2a04702,
+ 0x376b4e,
+ 0x24c4c3,
+ 0x38ae46,
+ 0x2e00142,
+ 0x2dd287,
+ 0x236f46,
+ 0x3209282,
+ 0x229d83,
+ 0x24d9c4,
+ 0x325e86,
+ 0x26c588,
+ 0x2761c6,
+ 0x2011c4,
+ 0x3600242,
+ 0x3335c9,
+ 0x20a1c7,
+ 0x351e86,
+ 0x330c89,
+ 0x298308,
+ 0x26e904,
+ 0x241ec6,
+ 0x222a46,
+ 0x3a022c2,
+ 0x26480f,
+ 0x20948e,
+ 0x211d04,
+ 0x2c2b85,
+ 0x2fe145,
+ 0x39e189,
+ 0x23c409,
+ 0x349a87,
+ 0x20fa86,
+ 0x275a83,
+ 0x3e02a82,
+ 0x315503,
+ 0x34e24a,
+ 0x20f903,
+ 0x2af985,
+ 0x284202,
+ 0x284209,
+ 0x4200ec2,
+ 0x212484,
+ 0x2b9686,
+ 0x2f3645,
+ 0x3552c4,
+ 0x4a05644,
+ 0x2030c3,
+ 0x232344,
+ 0x4e00c02,
+ 0x268d44,
+ 0x52ef6c4,
+ 0x25ef4a,
+ 0x5603dc2,
+ 0x2ba587,
+ 0x2f3b08,
+ 0x6208142,
+ 0x311687,
+ 0x2bf204,
+ 0x2bf207,
+ 0x36e0c5,
+ 0x34ffc7,
+ 0x349846,
+ 0x24f3c4,
+ 0x38c105,
+ 0x29e447,
+ 0x72001c2,
+ 0x26e503,
+ 0x200b82,
+ 0x200b83,
+ 0x760de02,
+ 0x2102c5,
+ 0x7a02a42,
+ 0x350e04,
+ 0x2734c5,
+ 0x211c47,
+ 0x26bcce,
+ 0x2b9184,
+ 0x245544,
+ 0x202f03,
+ 0x281d49,
+ 0x31ee0b,
+ 0x2e9a88,
+ 0x379948,
+ 0x3a9908,
+ 0x22ae48,
+ 0x330aca,
+ 0x34fec7,
+ 0x318186,
+ 0x7e87002,
+ 0x35e203,
+ 0x367e43,
+ 0x36f4c4,
+ 0x3a8143,
+ 0x3250c3,
+ 0x1720b82,
+ 0x8202502,
+ 0x27a8c5,
+ 0x296206,
+ 0x2d1b84,
+ 0x375487,
+ 0x2e1886,
+ 0x331f84,
+ 0x39d3c7,
+ 0x203bc3,
+ 0x86c54c2,
+ 0x8b0f242,
+ 0x8e16742,
+ 0x216746,
+ 0x9200002,
+ 0x3523c5,
+ 0x3220c3,
+ 0x200604,
+ 0x2e8f84,
+ 0x2e8f85,
+ 0x206b43,
+ 0x978d2c3,
+ 0x9a0bb42,
+ 0x289e05,
+ 0x289e0b,
+ 0x31e686,
+ 0x20cb4b,
+ 0x221344,
+ 0x20d949,
+ 0x20e9c4,
+ 0x9e0ec02,
+ 0x20f143,
+ 0x20f403,
+ 0x16105c2,
+ 0x268183,
+ 0x2105ca,
+ 0xa20b382,
+ 0x216445,
+ 0x29224a,
+ 0x2d7744,
+ 0x283783,
+ 0x26cfc4,
+ 0x212543,
+ 0x212544,
+ 0x212547,
+ 0x2140c5,
+ 0x2147c5,
+ 0x214f46,
+ 0x2157c6,
+ 0x216a03,
+ 0x21ae88,
+ 0x210043,
+ 0xa601c02,
+ 0x243448,
+ 0x213ccb,
+ 0x220148,
+ 0x220d86,
+ 0x221847,
+ 0x225348,
+ 0xb642b42,
+ 0xbabf3c2,
+ 0x326788,
+ 0x35e4c7,
+ 0x246085,
+ 0x357f48,
+ 0x2bd408,
+ 0x34dd83,
+ 0x22a1c4,
+ 0x36f502,
+ 0xbe2bc82,
+ 0xc238482,
+ 0xca2e802,
+ 0x22e803,
+ 0xce01ec2,
+ 0x2fe203,
+ 0x2f1e84,
+ 0x201ec3,
+ 0x26e8c4,
+ 0x201ecb,
+ 0x213c03,
+ 0x2de946,
+ 0x239f84,
+ 0x29034e,
+ 0x371145,
+ 0x38af48,
+ 0x31ffc7,
+ 0x31ffca,
+ 0x229743,
+ 0x22f147,
+ 0x31efc5,
+ 0x22f8c4,
+ 0x265b06,
+ 0x265b07,
+ 0x2c11c4,
+ 0x2f7a87,
+ 0x313d44,
+ 0x26c004,
+ 0x26c006,
+ 0x387184,
+ 0x3510c6,
+ 0x203f83,
+ 0x35e288,
+ 0x203f88,
+ 0x245503,
+ 0x268143,
+ 0x399a04,
+ 0x39e003,
+ 0xd219f02,
+ 0xd6d6a42,
+ 0x20bac3,
+ 0x207146,
+ 0x241fc3,
+ 0x377cc4,
+ 0xdaee982,
+ 0x3af843,
+ 0x3507c3,
+ 0x217a02,
+ 0xde04142,
+ 0x2c1946,
+ 0x233ac7,
+ 0x2e8945,
+ 0x37de04,
+ 0x28c505,
+ 0x268907,
+ 0x267805,
+ 0x2b8649,
+ 0x2cefc6,
+ 0x2daa88,
+ 0x2e8846,
+ 0xe21a1c2,
+ 0x32ca08,
+ 0x2f1c46,
+ 0x21a1c5,
+ 0x2f6d87,
+ 0x309984,
+ 0x309985,
+ 0x276384,
+ 0x276388,
+ 0xe60cc02,
+ 0xea09882,
+ 0x3103c6,
+ 0x3b8988,
+ 0x334385,
+ 0x337306,
+ 0x342f08,
+ 0x344a88,
+ 0xee09885,
+ 0xf2142c4,
+ 0x3b0787,
+ 0xf60e5c2,
+ 0xfa1b102,
+ 0x10a099c2,
+ 0x2b9785,
+ 0x2a2645,
+ 0x2fef86,
+ 0x3b2547,
+ 0x380747,
+ 0x112a84c3,
+ 0x2a84c7,
+ 0x31eb08,
+ 0x376ec9,
+ 0x376d07,
+ 0x384d07,
+ 0x3a8ec8,
+ 0x3ad4c6,
+ 0x22f3c6,
+ 0x23000c,
+ 0x23120a,
+ 0x231687,
+ 0x232c8b,
+ 0x233907,
+ 0x23390e,
+ 0x234cc4,
+ 0x235ac4,
+ 0x237a47,
+ 0x3690c7,
+ 0x23b206,
+ 0x23b207,
+ 0x23b4c7,
+ 0x19604682,
+ 0x23c886,
+ 0x23c88a,
+ 0x23ce8b,
+ 0x23dbc7,
+ 0x23ed45,
+ 0x23f083,
+ 0x240586,
+ 0x240587,
+ 0x38eb43,
+ 0x19a0c442,
+ 0x240f4a,
+ 0x19f5d882,
+ 0x1a2a5e02,
+ 0x1a643142,
+ 0x1aa2cd82,
+ 0x244bc5,
+ 0x245304,
+ 0x1b205742,
+ 0x268dc5,
+ 0x23d483,
+ 0x20eac5,
+ 0x22ad44,
+ 0x206804,
+ 0x314046,
+ 0x25e206,
+ 0x28a003,
+ 0x238284,
+ 0x3a6803,
+ 0x1b600dc2,
+ 0x391c04,
+ 0x391c06,
+ 0x3b0d05,
+ 0x205e06,
+ 0x2f6e88,
+ 0x266e84,
+ 0x27ed08,
+ 0x2426c5,
+ 0x228308,
+ 0x29ff86,
+ 0x237587,
+ 0x22e204,
+ 0x22e206,
+ 0x33f443,
+ 0x383ec3,
+ 0x223d08,
+ 0x318dc4,
+ 0x348747,
+ 0x23e6c6,
+ 0x2d6389,
+ 0x250348,
+ 0x26cd08,
+ 0x26d084,
+ 0x351443,
+ 0x225e02,
+ 0x1c60f882,
+ 0x1ca10e82,
+ 0x3a7403,
+ 0x1ce04a42,
+ 0x38eac4,
+ 0x2862c6,
+ 0x26e605,
+ 0x21ba03,
+ 0x232884,
+ 0x2b14c7,
+ 0x33da03,
+ 0x231a88,
+ 0x208545,
+ 0x36e803,
+ 0x273445,
+ 0x273584,
+ 0x2f6a86,
+ 0x209ec4,
+ 0x211346,
+ 0x211b86,
+ 0x3916c4,
+ 0x213b43,
+ 0x1d205882,
+ 0x247345,
+ 0x221c03,
+ 0x1d61b0c2,
+ 0x22ffc3,
+ 0x209bc5,
+ 0x232403,
+ 0x232409,
+ 0x1da05f02,
+ 0x1e205e42,
+ 0x2893c5,
+ 0x218786,
+ 0x2d1746,
+ 0x2b0a88,
+ 0x2b0a8b,
+ 0x20718b,
+ 0x2e8b45,
+ 0x2db145,
+ 0x2c6309,
+ 0x1600302,
+ 0x391888,
+ 0x20dc44,
+ 0x1ea007c2,
+ 0x3a7883,
+ 0x1f2c6086,
+ 0x20ae88,
+ 0x1f601402,
+ 0x2344c8,
+ 0x1fa2bb82,
+ 0x3b92ca,
+ 0x1feccc43,
+ 0x3ac1c6,
+ 0x3af408,
+ 0x3ac008,
+ 0x31d006,
+ 0x36bc07,
+ 0x264a07,
+ 0x3349ca,
+ 0x2d77c4,
+ 0x3474c4,
+ 0x35c1c9,
+ 0x20794385,
+ 0x209686,
+ 0x20e1c3,
+ 0x24a044,
+ 0x20a02644,
+ 0x202647,
+ 0x212fc7,
+ 0x22a584,
+ 0x285445,
+ 0x2ff048,
+ 0x366747,
+ 0x370f07,
+ 0x20e18342,
+ 0x327704,
+ 0x292b48,
+ 0x245bc4,
+ 0x247784,
+ 0x248085,
+ 0x2481c7,
+ 0x223589,
+ 0x248fc4,
+ 0x249709,
+ 0x249948,
+ 0x249dc4,
+ 0x249dc7,
+ 0x2124aa83,
+ 0x24ad47,
+ 0x1609d02,
+ 0x16ad202,
+ 0x24bec6,
+ 0x24c507,
+ 0x24cd44,
+ 0x24e6c7,
+ 0x24fa47,
+ 0x24fdc3,
+ 0x248902,
+ 0x229642,
+ 0x250a03,
+ 0x250a04,
+ 0x250a0b,
+ 0x379a48,
+ 0x256804,
+ 0x2523c5,
+ 0x254007,
+ 0x2555c5,
+ 0x2bc00a,
+ 0x256743,
+ 0x2160fc82,
+ 0x226e84,
+ 0x258d89,
+ 0x25c343,
+ 0x25c407,
+ 0x24a849,
+ 0x282688,
+ 0x204743,
+ 0x278fc7,
+ 0x279709,
+ 0x268ac3,
+ 0x2810c4,
+ 0x283c89,
+ 0x2880c6,
+ 0x289683,
+ 0x200182,
+ 0x21f983,
+ 0x3a8a87,
+ 0x21f985,
+ 0x379746,
+ 0x256e84,
+ 0x302e85,
+ 0x2e4403,
+ 0x216c46,
+ 0x20db42,
+ 0x395144,
+ 0x221402,
+ 0x221403,
+ 0x21a00782,
+ 0x247303,
+ 0x215c44,
+ 0x215c47,
+ 0x200906,
+ 0x202602,
+ 0x21e025c2,
+ 0x2dca84,
+ 0x22235e82,
+ 0x22600b02,
+ 0x2d4f84,
+ 0x2d4f85,
+ 0x2b6dc5,
+ 0x390e06,
+ 0x22a05d42,
+ 0x205d45,
+ 0x20cf05,
+ 0x20ae03,
+ 0x210986,
+ 0x2126c5,
+ 0x2166c2,
+ 0x343605,
+ 0x2166c4,
+ 0x221ec3,
+ 0x227343,
+ 0x22e0c642,
+ 0x2d4987,
+ 0x3669c4,
+ 0x3669c9,
+ 0x249f44,
+ 0x291d43,
+ 0x2f6609,
+ 0x367508,
+ 0x232a24c4,
+ 0x2a24c6,
+ 0x21c303,
+ 0x247bc3,
+ 0x2e9dc3,
+ 0x236eb382,
+ 0x368cc2,
+ 0x23a05e82,
+ 0x323cc8,
+ 0x32a388,
+ 0x398e46,
+ 0x2e27c5,
+ 0x22efc5,
+ 0x352ec7,
+ 0x21d205,
+ 0x228782,
+ 0x23e38182,
+ 0x1603002,
+ 0x2416c8,
+ 0x32c945,
+ 0x2e3404,
+ 0x2ebac5,
+ 0x23f407,
+ 0x3207c4,
+ 0x240e42,
+ 0x24200582,
+ 0x338984,
+ 0x212cc7,
+ 0x28a2c7,
+ 0x34ff84,
+ 0x292203,
+ 0x245444,
+ 0x245448,
+ 0x22f706,
+ 0x26598a,
+ 0x223444,
+ 0x292588,
+ 0x288504,
+ 0x221946,
+ 0x294684,
+ 0x2b9a86,
+ 0x366c89,
+ 0x25da47,
+ 0x3375c3,
+ 0x24667e42,
+ 0x267e43,
+ 0x20ee02,
+ 0x24a11ec2,
+ 0x3085c6,
+ 0x365c88,
+ 0x2a4087,
+ 0x3a3f49,
+ 0x291c49,
+ 0x2a5045,
+ 0x2a6049,
+ 0x2a6805,
+ 0x2a6949,
+ 0x2a8005,
+ 0x2a9108,
+ 0x21fb84,
+ 0x24e890c7,
+ 0x2a9303,
+ 0x2a9307,
+ 0x3850c6,
+ 0x2a9b87,
+ 0x2a1085,
+ 0x2935c3,
+ 0x2521ae02,
+ 0x3b40c4,
+ 0x2562ce82,
+ 0x258203,
+ 0x25a17f42,
+ 0x36d586,
+ 0x2f3a85,
+ 0x2ac207,
+ 0x26cc43,
+ 0x325044,
+ 0x20e903,
+ 0x33e783,
+ 0x25e02bc2,
+ 0x266015c2,
+ 0x398804,
+ 0x2488c3,
+ 0x243c85,
+ 0x26a029c2,
+ 0x27206482,
+ 0x2b4506,
+ 0x318f04,
+ 0x2e3004,
+ 0x2e300a,
+ 0x27a01fc2,
+ 0x37204a,
+ 0x3756c8,
+ 0x27fb1384,
+ 0x20ad83,
+ 0x201fc3,
+ 0x3a9a49,
+ 0x217649,
+ 0x285246,
+ 0x28244183,
+ 0x3292c5,
+ 0x30180d,
+ 0x375886,
+ 0x3bac8b,
+ 0x28602e82,
+ 0x22c1c8,
+ 0x29206e82,
+ 0x29606fc2,
+ 0x2ae585,
+ 0x29a03942,
+ 0x258447,
+ 0x21c907,
+ 0x21e003,
+ 0x2306c8,
+ 0x29e06502,
+ 0x312684,
+ 0x212943,
+ 0x351d45,
+ 0x34db83,
+ 0x2f3546,
+ 0x205904,
+ 0x268103,
+ 0x2ae9c3,
+ 0x2a205fc2,
+ 0x2e8ac4,
+ 0x35f6c5,
+ 0x39f1c7,
+ 0x275643,
+ 0x2ad883,
+ 0x2ae083,
+ 0x160fec2,
+ 0x2ae143,
+ 0x2ae943,
+ 0x2a605102,
+ 0x282104,
+ 0x25e406,
+ 0x342643,
+ 0x2aec43,
+ 0x2aaafd42,
+ 0x2afd48,
+ 0x2b0004,
+ 0x36c246,
+ 0x2b0387,
+ 0x249c46,
+ 0x28e2c4,
+ 0x38600682,
+ 0x384f8b,
+ 0x2fb08e,
+ 0x21930f,
+ 0x2985c3,
+ 0x38ebbbc2,
+ 0x1600f42,
+ 0x39201582,
+ 0x28f403,
+ 0x2fdec3,
+ 0x233706,
+ 0x277c46,
+ 0x3afd87,
+ 0x3328c4,
+ 0x396188c2,
+ 0x39a08882,
+ 0x348345,
+ 0x2e6047,
+ 0x3b5746,
+ 0x39e27282,
+ 0x227284,
+ 0x2b3ac3,
+ 0x3a20be02,
+ 0x3a759ec3,
+ 0x2b4c44,
+ 0x2be409,
+ 0x16c3ac2,
+ 0x3aa03a82,
+ 0x203a85,
+ 0x3aec3d42,
+ 0x3b203202,
+ 0x346947,
+ 0x239689,
+ 0x35ca0b,
+ 0x2647c5,
+ 0x2c4849,
+ 0x2e8246,
+ 0x31e6c7,
+ 0x3b608484,
+ 0x3199c9,
+ 0x373487,
+ 0x20ab47,
+ 0x20a383,
+ 0x20a386,
+ 0x3b68c7,
+ 0x206a43,
+ 0x2565c6,
+ 0x3be02a02,
+ 0x3c232682,
+ 0x385803,
+ 0x324c45,
+ 0x350f47,
+ 0x250086,
+ 0x21f905,
+ 0x277d44,
+ 0x2c9fc5,
+ 0x2f2684,
+ 0x3c6040c2,
+ 0x331107,
+ 0x2dbd44,
+ 0x217544,
+ 0x21754d,
+ 0x257509,
+ 0x3a4448,
+ 0x253944,
+ 0x3abc45,
+ 0x206447,
+ 0x2144c4,
+ 0x2e1947,
+ 0x21c485,
+ 0x3caa4604,
+ 0x2d92c5,
+ 0x25b004,
+ 0x24bb86,
+ 0x3b2345,
+ 0x3ce250c2,
+ 0x283844,
+ 0x283845,
+ 0x36fa46,
+ 0x20c3c5,
+ 0x30c304,
+ 0x2c5dc3,
+ 0x2053c6,
+ 0x358505,
+ 0x2bb485,
+ 0x3b2444,
+ 0x2234c3,
+ 0x2234cc,
+ 0x3d288a02,
+ 0x3d6010c2,
+ 0x3da00282,
+ 0x206343,
+ 0x206344,
+ 0x3de04bc2,
+ 0x2f9688,
+ 0x379805,
+ 0x235684,
+ 0x23b086,
+ 0x3e201f42,
+ 0x3e609782,
+ 0x3ea00e82,
+ 0x306b85,
+ 0x391586,
+ 0x211084,
+ 0x3263c6,
+ 0x2ba346,
+ 0x219943,
+ 0x3ef0de0a,
+ 0x247b05,
+ 0x2c8e83,
+ 0x223186,
+ 0x300fc9,
+ 0x223187,
+ 0x297788,
+ 0x2981c9,
+ 0x224348,
+ 0x229486,
+ 0x20bf03,
+ 0x3f2a8542,
+ 0x385683,
+ 0x385689,
+ 0x332448,
+ 0x3f649a02,
+ 0x3fa02342,
+ 0x227f83,
+ 0x2da905,
+ 0x251ec4,
+ 0x2c0909,
+ 0x22cb84,
+ 0x266348,
+ 0x202343,
+ 0x202344,
+ 0x278b03,
+ 0x2187c8,
+ 0x217487,
+ 0x4020b102,
+ 0x274082,
+ 0x351905,
+ 0x266689,
+ 0x209703,
+ 0x27b184,
+ 0x329284,
+ 0x2064c3,
+ 0x27c3ca,
+ 0x40752bc2,
+ 0x40a83802,
+ 0x2c5443,
+ 0x3739c3,
+ 0x1602302,
+ 0x38ac03,
+ 0x40e0f242,
+ 0x4120ec42,
+ 0x41610444,
+ 0x210446,
+ 0x383b06,
+ 0x26ad44,
+ 0x36c643,
+ 0x38bcc3,
+ 0x226883,
+ 0x23d206,
+ 0x2cb8c5,
+ 0x2c5a07,
+ 0x31e589,
+ 0x2ca645,
+ 0x2cb806,
+ 0x2cbd88,
+ 0x2cbf86,
+ 0x236a04,
+ 0x29944b,
+ 0x2ceac3,
+ 0x2ceac5,
+ 0x2cec08,
+ 0x228502,
+ 0x346c42,
+ 0x41a44c42,
+ 0x41e0e602,
+ 0x218903,
+ 0x422675c2,
+ 0x2675c3,
+ 0x2cef04,
+ 0x2cf5c3,
+ 0x42a115c2,
+ 0x42ed43c6,
+ 0x2a7306,
+ 0x43207902,
+ 0x4360f442,
+ 0x43a27382,
+ 0x43e02c82,
+ 0x4422dd02,
+ 0x44602d02,
+ 0x234703,
+ 0x390685,
+ 0x319606,
+ 0x44a11cc4,
+ 0x3b0b0a,
+ 0x32fe86,
+ 0x2e8d84,
+ 0x281d03,
+ 0x45604642,
+ 0x200c82,
+ 0x25fd03,
+ 0x45a05503,
+ 0x2c7b87,
+ 0x3b2247,
+ 0x47250b07,
+ 0x312d87,
+ 0x227b03,
+ 0x227b0a,
+ 0x236b84,
+ 0x23e5c4,
+ 0x23e5ca,
+ 0x213f05,
+ 0x47609642,
+ 0x24e683,
+ 0x47a008c2,
+ 0x21c2c3,
+ 0x267e03,
+ 0x48203342,
+ 0x2a8444,
+ 0x21de84,
+ 0x3b9505,
+ 0x305005,
+ 0x2e1ac6,
+ 0x2e1e46,
+ 0x48608442,
+ 0x48a033c2,
+ 0x3185c5,
+ 0x2a7012,
+ 0x2511c6,
+ 0x220803,
+ 0x30a746,
+ 0x220805,
+ 0x1610602,
+ 0x50e120c2,
+ 0x353e83,
+ 0x2120c3,
+ 0x2441c3,
+ 0x512023c2,
+ 0x376e43,
+ 0x5160b482,
+ 0x210483,
+ 0x282148,
+ 0x25e983,
+ 0x25e986,
+ 0x3a2987,
+ 0x306806,
+ 0x30680b,
+ 0x2e8cc7,
+ 0x3b3ec4,
+ 0x51e04ec2,
+ 0x379685,
+ 0x522054c3,
+ 0x2a6e03,
+ 0x326c05,
+ 0x329983,
+ 0x52729986,
+ 0x391a0a,
+ 0x26a9c3,
+ 0x204584,
+ 0x3b88c6,
+ 0x21a5c6,
+ 0x52a00983,
+ 0x324f07,
+ 0x285147,
+ 0x29b0c5,
+ 0x2318c6,
+ 0x224a83,
+ 0x54a10bc3,
+ 0x54e056c2,
+ 0x328144,
+ 0x22a2cc,
+ 0x236149,
+ 0x2414c7,
+ 0x249245,
+ 0x262a84,
+ 0x273cc8,
+ 0x278305,
+ 0x55284a05,
+ 0x28c609,
+ 0x351f43,
+ 0x2a5d84,
+ 0x556013c2,
+ 0x2013c3,
+ 0x55a94142,
+ 0x2a4386,
+ 0x160f982,
+ 0x55e06e02,
+ 0x306a88,
+ 0x2be603,
+ 0x2d9207,
+ 0x2e4d05,
+ 0x2dd685,
+ 0x32840b,
+ 0x2dd686,
+ 0x328606,
+ 0x2ffac6,
+ 0x262c84,
+ 0x3042c6,
+ 0x2e3508,
+ 0x23a043,
+ 0x250dc3,
+ 0x250dc4,
+ 0x2e4484,
+ 0x2e4a07,
+ 0x2e5ec5,
+ 0x562e6002,
+ 0x5660ba02,
+ 0x20ba05,
+ 0x2e83c4,
+ 0x2e83cb,
+ 0x2e8e88,
+ 0x228f44,
+ 0x2272c2,
+ 0x56e28ec2,
+ 0x23b903,
+ 0x2e9344,
+ 0x2e9605,
+ 0x2ea047,
+ 0x2eb604,
+ 0x2e8b84,
+ 0x57201302,
+ 0x360cc9,
+ 0x2ec405,
+ 0x264a85,
+ 0x2ecf85,
+ 0x57601303,
+ 0x2ee0c4,
+ 0x2ee0cb,
+ 0x2ee644,
+ 0x2ef3cb,
+ 0x2ef7c5,
+ 0x21944a,
+ 0x2f0048,
+ 0x2f024a,
+ 0x2f0ac3,
+ 0x2f0aca,
+ 0x57a01742,
+ 0x57e2d4c2,
+ 0x21aa03,
+ 0x582f1bc2,
+ 0x2f1bc3,
+ 0x5875c402,
+ 0x58b22842,
+ 0x2f2504,
+ 0x21afc6,
+ 0x326105,
+ 0x2f4503,
+ 0x31a9c6,
+ 0x204405,
+ 0x25e704,
+ 0x58e05ec2,
+ 0x2c9244,
+ 0x2c5f8a,
+ 0x22d787,
+ 0x2f38c6,
+ 0x380b07,
+ 0x22a403,
+ 0x283e48,
+ 0x37f48b,
+ 0x3736c5,
+ 0x333ec5,
+ 0x333ec6,
+ 0x390884,
+ 0x3aa248,
+ 0x222943,
+ 0x222944,
+ 0x222947,
+ 0x38e446,
+ 0x352686,
+ 0x29018a,
+ 0x246604,
+ 0x24660a,
+ 0x59282846,
+ 0x282847,
+ 0x252447,
+ 0x270844,
+ 0x270849,
+ 0x25e0c5,
+ 0x235e0b,
+ 0x2e81c3,
+ 0x211503,
+ 0x22f003,
+ 0x22fac4,
+ 0x59600482,
+ 0x25d4c6,
+ 0x293345,
+ 0x30a985,
+ 0x24f6c6,
+ 0x3395c4,
+ 0x59a02782,
+ 0x23f0c4,
+ 0x59e01c42,
+ 0x2b9f05,
+ 0x21ad84,
+ 0x21bec3,
+ 0x5a612102,
+ 0x212103,
+ 0x23ba46,
+ 0x5aa03082,
+ 0x27f488,
+ 0x223004,
+ 0x223006,
+ 0x374246,
+ 0x2540c4,
+ 0x205345,
+ 0x2141c8,
+ 0x216547,
+ 0x219687,
+ 0x21968f,
+ 0x292a46,
+ 0x22cf03,
+ 0x22cf04,
+ 0x310504,
+ 0x20d003,
+ 0x221a84,
+ 0x240944,
+ 0x5ae42b02,
+ 0x289d43,
+ 0x242b03,
+ 0x5b209842,
+ 0x229f83,
+ 0x38eb83,
+ 0x21484a,
+ 0x358107,
+ 0x2efc0c,
+ 0x2efec6,
+ 0x30a146,
+ 0x248547,
+ 0x5b64c687,
+ 0x24f809,
+ 0x243584,
+ 0x24fbc4,
+ 0x5ba18942,
+ 0x5be027c2,
+ 0x290546,
+ 0x324d04,
+ 0x2d6bc6,
+ 0x2a5148,
+ 0x3b8dc4,
+ 0x258486,
+ 0x2d1705,
+ 0x265c88,
+ 0x207383,
+ 0x273705,
+ 0x273e83,
+ 0x264b83,
+ 0x264b84,
+ 0x2759c3,
+ 0x5c2ec082,
+ 0x5c602e02,
+ 0x2e8089,
+ 0x278205,
+ 0x278404,
+ 0x27a9c5,
+ 0x20dd44,
+ 0x2e0d07,
+ 0x343bc5,
+ 0x250cc4,
+ 0x250cc8,
+ 0x2d5086,
+ 0x2d7984,
+ 0x2d8e88,
+ 0x2dbb87,
+ 0x5ca03902,
+ 0x2e36c4,
+ 0x20d0c4,
+ 0x20ad47,
+ 0x5ce2b804,
+ 0x2ccf42,
+ 0x5d201102,
+ 0x201543,
+ 0x203984,
+ 0x2aa283,
+ 0x374e05,
+ 0x5d61e182,
+ 0x2eb285,
+ 0x202c42,
+ 0x34d5c5,
+ 0x365e45,
+ 0x5da00c42,
+ 0x350744,
+ 0x5de00d02,
+ 0x2387c6,
+ 0x29a146,
+ 0x2667c8,
+ 0x2bfa08,
+ 0x36d504,
+ 0x36d6c5,
+ 0x3610c9,
+ 0x2db1c4,
+ 0x3919c4,
+ 0x205183,
+ 0x5e222705,
+ 0x2c3b87,
+ 0x2a2744,
+ 0x341e8d,
+ 0x361782,
+ 0x361783,
+ 0x364503,
+ 0x5e600802,
+ 0x388305,
+ 0x25f9c7,
+ 0x205b44,
+ 0x312e47,
+ 0x2983c9,
+ 0x2c60c9,
+ 0x2519c7,
+ 0x273b03,
+ 0x273b08,
+ 0x2ed249,
+ 0x24e187,
+ 0x373605,
+ 0x39e086,
+ 0x39fb86,
+ 0x3a3c05,
+ 0x257605,
+ 0x5ea02d82,
+ 0x36ce45,
+ 0x2b2908,
+ 0x2c1706,
+ 0x5eeb7487,
+ 0x2efa04,
+ 0x2aa987,
+ 0x2f62c6,
+ 0x5f230982,
+ 0x36f746,
+ 0x2f83ca,
+ 0x2f8e85,
+ 0x5f6de402,
+ 0x5fa36542,
+ 0x3b6c06,
+ 0x2a1e88,
+ 0x5fe8a487,
+ 0x60234e42,
+ 0x2255c3,
+ 0x311d86,
+ 0x225044,
+ 0x3a2846,
+ 0x390b06,
+ 0x26ff0a,
+ 0x331c05,
+ 0x367ec6,
+ 0x3759c3,
+ 0x3759c4,
+ 0x207102,
+ 0x309943,
+ 0x60606382,
+ 0x2f0f83,
+ 0x3722c4,
+ 0x2a1fc4,
+ 0x2a1fca,
+ 0x229543,
+ 0x276288,
+ 0x22954a,
+ 0x27b447,
+ 0x2fcd86,
+ 0x238684,
+ 0x290bc2,
+ 0x2a2e82,
+ 0x60a04002,
+ 0x245403,
+ 0x252207,
+ 0x31ac87,
+ 0x2848c4,
+ 0x26f8c7,
+ 0x2ea146,
+ 0x216847,
+ 0x35e604,
+ 0x242a05,
+ 0x2b7985,
+ 0x60e0fe82,
+ 0x20fe86,
+ 0x218283,
+ 0x220502,
+ 0x220506,
+ 0x61203e02,
+ 0x6160b0c2,
+ 0x3ba785,
+ 0x61a21c82,
+ 0x61e03b42,
+ 0x33b5c5,
+ 0x393105,
+ 0x367f85,
+ 0x267303,
+ 0x286385,
+ 0x2dd747,
+ 0x307bc5,
+ 0x306185,
+ 0x38b044,
+ 0x3204c6,
+ 0x23e804,
+ 0x62201442,
+ 0x62f630c5,
+ 0x2ebe07,
+ 0x2d6dc8,
+ 0x25fe86,
+ 0x25fe8d,
+ 0x260709,
+ 0x260712,
+ 0x32f345,
+ 0x3339c3,
+ 0x6320a9c2,
+ 0x309444,
+ 0x375903,
+ 0x360fc5,
+ 0x2fa085,
+ 0x63612982,
+ 0x36e843,
+ 0x63a50b82,
+ 0x642bf542,
+ 0x6460fb42,
+ 0x353805,
+ 0x37ac43,
+ 0x37a4c8,
+ 0x64a07842,
+ 0x64e000c2,
+ 0x2a8406,
+ 0x33b80a,
+ 0x21bf03,
+ 0x20c343,
+ 0x2ee3c3,
+ 0x65a02dc2,
+ 0x73e35482,
+ 0x74601c82,
+ 0x201682,
+ 0x36f549,
+ 0x2c2f04,
+ 0x2309c8,
+ 0x74af4542,
+ 0x74e08602,
+ 0x2ef605,
+ 0x2330c8,
+ 0x282288,
+ 0x2f858c,
+ 0x22d543,
+ 0x25a9c2,
+ 0x75201f82,
+ 0x2caac6,
+ 0x2fdc05,
+ 0x26d343,
+ 0x23cc46,
+ 0x2fdd46,
+ 0x201f83,
+ 0x2ff883,
+ 0x300786,
+ 0x3013c4,
+ 0x295586,
+ 0x2cec85,
+ 0x30164a,
+ 0x2eebc4,
+ 0x302304,
+ 0x30370a,
+ 0x7566b082,
+ 0x337745,
+ 0x30478a,
+ 0x305285,
+ 0x305b44,
+ 0x305c46,
+ 0x305dc4,
+ 0x218dc6,
+ 0x75a6dac2,
+ 0x2f3206,
+ 0x2f3dc5,
+ 0x3ab6c7,
+ 0x200206,
+ 0x248744,
+ 0x2d5e07,
+ 0x30dd46,
+ 0x2b8a45,
+ 0x381947,
+ 0x39eb47,
+ 0x39eb4e,
+ 0x25ed06,
+ 0x2e1805,
+ 0x27dec7,
+ 0x282b43,
+ 0x3b2f87,
+ 0x20f5c5,
+ 0x212144,
+ 0x212f82,
+ 0x3addc7,
+ 0x332944,
+ 0x377404,
+ 0x273f0b,
+ 0x21d5c3,
+ 0x2b6987,
+ 0x21d5c4,
+ 0x2cc0c7,
+ 0x228bc3,
+ 0x33678d,
+ 0x388b48,
+ 0x21d044,
+ 0x250bc5,
+ 0x307d05,
+ 0x308143,
+ 0x75e22f02,
+ 0x309903,
+ 0x309fc3,
+ 0x210004,
+ 0x279805,
+ 0x218307,
+ 0x375a46,
+ 0x372003,
+ 0x23ab4b,
+ 0x26ba4b,
+ 0x2a654b,
+ 0x2de44a,
+ 0x30254b,
+ 0x31be8b,
+ 0x356b8c,
+ 0x378d11,
+ 0x3b654a,
+ 0x3ba10b,
+ 0x30ad8b,
+ 0x30b34a,
+ 0x30b88a,
+ 0x30cb4e,
+ 0x30d18b,
+ 0x30d44a,
+ 0x30ef11,
+ 0x30f34a,
+ 0x30f84b,
+ 0x30fd8e,
+ 0x31078c,
+ 0x310c4b,
+ 0x310f0e,
+ 0x31128c,
+ 0x31474a,
+ 0x31698c,
+ 0x76316c8a,
+ 0x317489,
+ 0x31af4a,
+ 0x31b1ca,
+ 0x31b44b,
+ 0x31f60e,
+ 0x31f991,
+ 0x328b89,
+ 0x328dca,
+ 0x3295cb,
+ 0x32a84a,
+ 0x32b316,
+ 0x32e14b,
+ 0x32f10a,
+ 0x32f50a,
+ 0x33084b,
+ 0x333449,
+ 0x337109,
+ 0x337d4d,
+ 0x33870b,
+ 0x33978b,
+ 0x33a14b,
+ 0x33a609,
+ 0x33ac4e,
+ 0x33b30a,
+ 0x33fc8a,
+ 0x33ffca,
+ 0x340b8b,
+ 0x3413cb,
+ 0x34168d,
+ 0x342c0d,
+ 0x343290,
+ 0x34374b,
+ 0x34408c,
+ 0x34480b,
+ 0x34644b,
+ 0x34798b,
+ 0x34c00b,
+ 0x34ca8f,
+ 0x34ce4b,
+ 0x34d94a,
+ 0x34e689,
+ 0x34f409,
+ 0x34f8cb,
+ 0x34fb8e,
+ 0x35434b,
+ 0x35574f,
+ 0x35864b,
+ 0x35890b,
+ 0x358bcb,
+ 0x3590ca,
+ 0x35c609,
+ 0x35f34f,
+ 0x36424c,
+ 0x36488c,
+ 0x364d0e,
+ 0x3653cf,
+ 0x36578e,
+ 0x365fd0,
+ 0x3663cf,
+ 0x366f4e,
+ 0x36770c,
+ 0x367a12,
+ 0x3689d1,
+ 0x36988e,
+ 0x36a04e,
+ 0x36a58e,
+ 0x36a90f,
+ 0x36acce,
+ 0x36b053,
+ 0x36b511,
+ 0x36b94e,
+ 0x36bdcc,
+ 0x36d913,
+ 0x36e210,
+ 0x36ea8c,
+ 0x36ed8c,
+ 0x36f24b,
+ 0x3703ce,
+ 0x370c8b,
+ 0x3715cb,
+ 0x37258c,
+ 0x37814a,
+ 0x37850c,
+ 0x37880c,
+ 0x378b09,
+ 0x37bb8b,
+ 0x37be48,
+ 0x37c049,
+ 0x37c04f,
+ 0x37d98b,
+ 0x7677eb8a,
+ 0x381fcc,
+ 0x383189,
+ 0x383608,
+ 0x38380b,
+ 0x383c8b,
+ 0x38480a,
+ 0x384a8b,
+ 0x38540c,
+ 0x386008,
+ 0x388d4b,
+ 0x38b44b,
+ 0x39484b,
+ 0x3958cb,
+ 0x39e6cb,
+ 0x39e989,
+ 0x39eecd,
+ 0x3a464a,
+ 0x3a5597,
+ 0x3a6bd8,
+ 0x3a96c9,
+ 0x3ab30b,
+ 0x3ac814,
+ 0x3acd0b,
+ 0x3ad28a,
+ 0x3aea0a,
+ 0x3aec8b,
+ 0x3b4250,
+ 0x3b4651,
+ 0x3b4d0a,
+ 0x3b5b4d,
+ 0x3b624d,
+ 0x3ba3cb,
+ 0x3bbd46,
+ 0x20ff83,
+ 0x76b80483,
+ 0x22cdc6,
+ 0x247645,
+ 0x27a007,
+ 0x31bd46,
+ 0x1656682,
+ 0x2ad9c9,
+ 0x31a7c4,
+ 0x2dacc8,
+ 0x232b43,
+ 0x309387,
+ 0x234f42,
+ 0x2ac243,
+ 0x76e07b02,
+ 0x2c7406,
+ 0x2c9884,
+ 0x369f44,
+ 0x390143,
+ 0x390145,
+ 0x776c3d82,
+ 0x77aa6cc4,
+ 0x270787,
+ 0x77e4a282,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x209703,
+ 0x205503,
+ 0x200983,
+ 0x204e83,
+ 0x205702,
+ 0x16d208,
+ 0x2099c2,
+ 0x2e9dc3,
+ 0x209703,
+ 0x205503,
+ 0x200983,
+ 0x214843,
+ 0x324556,
+ 0x325793,
+ 0x26f749,
+ 0x3b0688,
+ 0x379509,
+ 0x304906,
+ 0x3389d0,
+ 0x254b53,
+ 0x38e508,
+ 0x28ea47,
+ 0x36c747,
+ 0x284d0a,
+ 0x372349,
+ 0x38d849,
+ 0x28decb,
+ 0x349846,
+ 0x379b4a,
+ 0x220d86,
+ 0x31a3c3,
+ 0x2d48c5,
+ 0x35e288,
+ 0x23888d,
+ 0x2b984c,
+ 0x2de0c7,
+ 0x30b00d,
+ 0x2142c4,
+ 0x22fd8a,
+ 0x230d4a,
+ 0x23120a,
+ 0x2099c7,
+ 0x23af07,
+ 0x23d844,
+ 0x22e206,
+ 0x20c144,
+ 0x2b4148,
+ 0x22cbc9,
+ 0x2b0a86,
+ 0x2b0a88,
+ 0x2422cd,
+ 0x2c6309,
+ 0x3ac008,
+ 0x264a07,
+ 0x2f1f0a,
+ 0x24c506,
+ 0x2580c7,
+ 0x2cc3c4,
+ 0x23f287,
+ 0x309c0a,
+ 0x3ae54e,
+ 0x21d205,
+ 0x3b4a4b,
+ 0x331a09,
+ 0x217649,
+ 0x21c747,
+ 0x2a34ca,
+ 0x20ac87,
+ 0x2fb1c9,
+ 0x38f0c8,
+ 0x3533cb,
+ 0x2da905,
+ 0x3a430a,
+ 0x266e09,
+ 0x26d2ca,
+ 0x2ca6cb,
+ 0x23f18b,
+ 0x28dc55,
+ 0x2e3b85,
+ 0x264a85,
+ 0x2ee0ca,
+ 0x3945ca,
+ 0x331787,
+ 0x21da83,
+ 0x2904c8,
+ 0x2d2c4a,
+ 0x223006,
+ 0x24dfc9,
+ 0x265c88,
+ 0x2d7984,
+ 0x2aa289,
+ 0x2bfa08,
+ 0x29fec7,
+ 0x3630c6,
+ 0x2ebe07,
+ 0x289a47,
+ 0x23d005,
+ 0x21d04c,
+ 0x250bc5,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x2099c2,
+ 0x2a84c3,
+ 0x205503,
+ 0x204e83,
+ 0x200983,
+ 0x2a84c3,
+ 0x205503,
+ 0x25e983,
+ 0x200983,
+ 0x16d208,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x209703,
+ 0x205503,
+ 0x200983,
+ 0x16d208,
+ 0x2099c2,
+ 0x2006c2,
+ 0x231442,
+ 0x206502,
+ 0x200542,
+ 0x2decc2,
+ 0x46a84c3,
+ 0x232403,
+ 0x2163c3,
+ 0x2e9dc3,
+ 0x244183,
+ 0x209703,
+ 0x2d47c6,
+ 0x205503,
+ 0x200983,
+ 0x233183,
+ 0x16d208,
+ 0x31ae44,
+ 0x202107,
+ 0x392403,
+ 0x2ae584,
+ 0x22e043,
+ 0x21c7c3,
+ 0x2e9dc3,
+ 0x16fc07,
+ 0x205702,
+ 0x18d2c3,
+ 0x5a099c2,
+ 0x88f4d,
+ 0x8928d,
+ 0x231442,
+ 0x1b1384,
+ 0x200442,
+ 0x5fb1288,
+ 0xed844,
+ 0x16d208,
+ 0x1411d82,
+ 0x15054c6,
+ 0x231783,
+ 0x200c03,
+ 0x66a84c3,
+ 0x22fd84,
+ 0x6a32403,
+ 0x6ee9dc3,
+ 0x202bc2,
+ 0x3b1384,
+ 0x205503,
+ 0x2f78c3,
+ 0x203ec2,
+ 0x200983,
+ 0x21b5c2,
+ 0x2f2443,
+ 0x203082,
+ 0x211643,
+ 0x265d43,
+ 0x200202,
+ 0x16d208,
+ 0x231783,
+ 0x2f78c3,
+ 0x203ec2,
+ 0x2f2443,
+ 0x203082,
+ 0x211643,
+ 0x265d43,
+ 0x200202,
+ 0x2f2443,
+ 0x203082,
+ 0x211643,
+ 0x265d43,
+ 0x200202,
+ 0x2a84c3,
+ 0x38d2c3,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x3b1384,
+ 0x244183,
+ 0x209703,
+ 0x211cc4,
+ 0x205503,
+ 0x200983,
+ 0x20f942,
+ 0x201303,
+ 0x16d208,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x209703,
+ 0x205503,
+ 0x200983,
+ 0x38d2c3,
+ 0x2099c2,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x3b1384,
+ 0x205503,
+ 0x200983,
+ 0x373605,
+ 0x212982,
+ 0x205702,
+ 0x16d208,
+ 0x1456108,
+ 0x2e9dc3,
+ 0x2274c1,
+ 0x202901,
+ 0x202941,
+ 0x23ad81,
+ 0x23ad01,
+ 0x30aec1,
+ 0x23aec1,
+ 0x2275c1,
+ 0x2eea41,
+ 0x30afc1,
+ 0x200141,
+ 0x200001,
+ 0x129845,
+ 0x16d208,
+ 0x201ec1,
+ 0x200701,
+ 0x200301,
+ 0x200081,
+ 0x200181,
+ 0x200401,
+ 0x200041,
+ 0x201181,
+ 0x200101,
+ 0x200281,
+ 0x200e81,
+ 0x2008c1,
+ 0x200441,
+ 0x201301,
+ 0x206ec1,
+ 0x200341,
+ 0x200801,
+ 0x2002c1,
+ 0x2000c1,
+ 0x201501,
+ 0x200201,
+ 0x200bc1,
+ 0x2005c1,
+ 0x201cc1,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x2099c2,
+ 0x2a84c3,
+ 0x232403,
+ 0x200442,
+ 0x200983,
+ 0x16fc07,
+ 0x9807,
+ 0x1cdc6,
+ 0x13ef8a,
+ 0x88648,
+ 0x51d48,
+ 0x52107,
+ 0x191106,
+ 0xd8c05,
+ 0x192345,
+ 0x5d306,
+ 0x125c86,
+ 0x25ef44,
+ 0x311547,
+ 0x16d208,
+ 0x2d5f04,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x2a84c3,
+ 0x232403,
+ 0x2163c3,
+ 0x2e9dc3,
+ 0x244183,
+ 0x209703,
+ 0x205503,
+ 0x200983,
+ 0x212982,
+ 0x2c5983,
+ 0x2bb143,
+ 0x32c243,
+ 0x2022c2,
+ 0x25d183,
+ 0x2030c3,
+ 0x204903,
+ 0x200001,
+ 0x2dc745,
+ 0x206b43,
+ 0x221344,
+ 0x26cc83,
+ 0x318ec3,
+ 0x21b103,
+ 0x35ff43,
+ 0xaaa84c3,
+ 0x235ac4,
+ 0x23dbc3,
+ 0x21cc43,
+ 0x21b0c3,
+ 0x22ffc3,
+ 0x232403,
+ 0x232143,
+ 0x2459c3,
+ 0x2a2703,
+ 0x318e43,
+ 0x2344c3,
+ 0x202643,
+ 0x24ce44,
+ 0x24e347,
+ 0x248902,
+ 0x250943,
+ 0x256303,
+ 0x273ac3,
+ 0x390f43,
+ 0x2025c3,
+ 0xaee9dc3,
+ 0x20bec3,
+ 0x2143c3,
+ 0x24a5c3,
+ 0x328085,
+ 0x209d43,
+ 0x2fa383,
+ 0xb21f903,
+ 0x365f03,
+ 0x20d543,
+ 0x227f83,
+ 0x209703,
+ 0x228502,
+ 0x27d2c3,
+ 0x205503,
+ 0x1604e83,
+ 0x224a43,
+ 0x209a43,
+ 0x204a03,
+ 0x200983,
+ 0x35fe83,
+ 0x20f943,
+ 0x201303,
+ 0x2efe83,
+ 0x2ff903,
+ 0x2f2603,
+ 0x204405,
+ 0x23e743,
+ 0x285346,
+ 0x2f2643,
+ 0x36cf43,
+ 0x3759c4,
+ 0x2d9083,
+ 0x2284c3,
+ 0x267ec3,
+ 0x233183,
+ 0x212982,
+ 0x22d543,
+ 0x3024c3,
+ 0x304144,
+ 0x377404,
+ 0x20ce83,
+ 0x16d208,
+ 0x205702,
+ 0x200242,
+ 0x2022c2,
+ 0x201702,
+ 0x202a42,
+ 0x206c02,
+ 0x245482,
+ 0x2007c2,
+ 0x20d882,
+ 0x200e82,
+ 0x20b102,
+ 0x20e602,
+ 0x2675c2,
+ 0x2056c2,
+ 0x2decc2,
+ 0x2013c2,
+ 0x2069c2,
+ 0x201302,
+ 0x2172c2,
+ 0x202482,
+ 0x200482,
+ 0x219382,
+ 0x202782,
+ 0x209842,
+ 0x2027c2,
+ 0x222702,
+ 0x203b42,
+ 0x5702,
+ 0x242,
+ 0x22c2,
+ 0x1702,
+ 0x2a42,
+ 0x6c02,
+ 0x45482,
+ 0x7c2,
+ 0xd882,
+ 0xe82,
+ 0xb102,
+ 0xe602,
+ 0x675c2,
+ 0x56c2,
+ 0xdecc2,
+ 0x13c2,
+ 0x69c2,
+ 0x1302,
+ 0x172c2,
+ 0x2482,
+ 0x482,
+ 0x19382,
+ 0x2782,
+ 0x9842,
+ 0x27c2,
+ 0x22702,
+ 0x3b42,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x2099c2,
+ 0x200983,
+ 0xc6a84c3,
+ 0x2e9dc3,
+ 0x209703,
+ 0x21a2c2,
+ 0x16d208,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x7b02,
+ 0x201bc2,
+ 0x153f3c5,
+ 0x25ed82,
+ 0x16d208,
+ 0x99c2,
+ 0x20c182,
+ 0x208d02,
+ 0x2024c2,
+ 0x209642,
+ 0x208442,
+ 0x192345,
+ 0x2038c2,
+ 0x203ec2,
+ 0x2023c2,
+ 0x204dc2,
+ 0x2013c2,
+ 0x385502,
+ 0x201102,
+ 0x236582,
+ 0x16fc07,
+ 0x1b270d,
+ 0xd8c89,
+ 0x56e8b,
+ 0xdd608,
+ 0x53dc9,
+ 0xfacc6,
+ 0x2e9dc3,
+ 0x16d208,
+ 0x16d208,
+ 0x52e06,
+ 0x1a78c7,
+ 0x205702,
+ 0x25ef44,
+ 0x2099c2,
+ 0x2a84c3,
+ 0x2006c2,
+ 0x232403,
+ 0x20d882,
+ 0x2d5f04,
+ 0x244183,
+ 0x249a02,
+ 0x205503,
+ 0x200442,
+ 0x200983,
+ 0x264a86,
+ 0x31ba0f,
+ 0x70a403,
+ 0x16d208,
+ 0x2099c2,
+ 0x2163c3,
+ 0x2e9dc3,
+ 0x209703,
+ 0x1526f4b,
+ 0xd9888,
+ 0x142b68a,
+ 0x14fa807,
+ 0xda405,
+ 0x16fc07,
+ 0x2099c2,
+ 0x2a84c3,
+ 0x2e9dc3,
+ 0x205503,
+ 0x205702,
+ 0x20c202,
+ 0x20bb42,
+ 0xfea84c3,
+ 0x23c042,
+ 0x232403,
+ 0x209d02,
+ 0x221402,
+ 0x2e9dc3,
+ 0x228782,
+ 0x251442,
+ 0x2a6c82,
+ 0x200f82,
+ 0x28d742,
+ 0x203442,
+ 0x202e42,
+ 0x267e42,
+ 0x24ecc2,
+ 0x211ec2,
+ 0x2ad882,
+ 0x2eab02,
+ 0x2182c2,
+ 0x2ad342,
+ 0x209703,
+ 0x20ec42,
+ 0x205503,
+ 0x200e42,
+ 0x281702,
+ 0x200983,
+ 0x25d202,
+ 0x209842,
+ 0x218942,
+ 0x202e02,
+ 0x200c42,
+ 0x2de402,
+ 0x20fe82,
+ 0x250b82,
+ 0x220642,
+ 0x30d44a,
+ 0x34d94a,
+ 0x37fc4a,
+ 0x3bbec2,
+ 0x202cc2,
+ 0x2058c2,
+ 0x1026e389,
+ 0x1072510a,
+ 0x1594ac7,
+ 0x1410843,
+ 0x24d50,
+ 0x50642,
+ 0x2030c4,
+ 0x10ea84c3,
+ 0x232403,
+ 0x249944,
+ 0x2e9dc3,
+ 0x3b1384,
+ 0x244183,
+ 0x209703,
+ 0x205503,
+ 0xdc105,
+ 0x204e83,
+ 0x200983,
+ 0x23e743,
+ 0x25ed03,
+ 0x16d208,
+ 0x1591084,
+ 0x18ff45,
+ 0x1a768a,
+ 0x116902,
+ 0x18ae46,
+ 0xaf551,
+ 0x1166e389,
+ 0x18ffc8,
+ 0x13f9c8,
+ 0xff387,
+ 0xec2,
+ 0x12984b,
+ 0x1a5b0a,
+ 0x21347,
+ 0x16d208,
+ 0x108f08,
+ 0xe4c7,
+ 0x17818f4b,
+ 0x1b887,
+ 0x1c02,
+ 0x6c707,
+ 0x1a1ca,
+ 0x13f6cf,
+ 0x988f,
+ 0x1b102,
+ 0x99c2,
+ 0xa2648,
+ 0x19e30a,
+ 0x1320c8,
+ 0xdc2,
+ 0x13f44f,
+ 0x9e18b,
+ 0x68bc8,
+ 0x38f47,
+ 0x388a,
+ 0x304cb,
+ 0x4efc9,
+ 0x11dd07,
+ 0xfc34c,
+ 0x2c07,
+ 0x19b40a,
+ 0xd4ac8,
+ 0x1a3cce,
+ 0x1cdce,
+ 0x2118b,
+ 0x26ccb,
+ 0x27d4b,
+ 0x2c009,
+ 0x2da0b,
+ 0x5e7cd,
+ 0x85acb,
+ 0xdfc8d,
+ 0xe000d,
+ 0xe164a,
+ 0x17724b,
+ 0x1ae0cb,
+ 0x31c45,
+ 0x1424d50,
+ 0x12618f,
+ 0x1268cf,
+ 0xe2c0d,
+ 0x1b8f90,
+ 0x2bb82,
+ 0x17fb0388,
+ 0x9688,
+ 0x182ee705,
+ 0x48fcb,
+ 0x117090,
+ 0x4fdc8,
+ 0x26e8a,
+ 0x56b49,
+ 0x5cb47,
+ 0x5ce87,
+ 0x5d047,
+ 0x5f507,
+ 0x60587,
+ 0x60b87,
+ 0x61387,
+ 0x617c7,
+ 0x61cc7,
+ 0x61fc7,
+ 0x62fc7,
+ 0x63187,
+ 0x63347,
+ 0x63507,
+ 0x63807,
+ 0x64007,
+ 0x64c87,
+ 0x65407,
+ 0x66547,
+ 0x66b07,
+ 0x66cc7,
+ 0x67047,
+ 0x67487,
+ 0x67687,
+ 0x67947,
+ 0x67b07,
+ 0x67cc7,
+ 0x67f87,
+ 0x68247,
+ 0x68f07,
+ 0x69607,
+ 0x698c7,
+ 0x6a047,
+ 0x6a207,
+ 0x6a607,
+ 0x6aec7,
+ 0x6b147,
+ 0x6b547,
+ 0x6b707,
+ 0x6b8c7,
+ 0x70587,
+ 0x71387,
+ 0x718c7,
+ 0x71e47,
+ 0x72007,
+ 0x72387,
+ 0x728c7,
+ 0xdb42,
+ 0xbbb0a,
+ 0xffb87,
+ 0x184cfa0b,
+ 0x14cfa16,
+ 0x17e91,
+ 0x1082ca,
+ 0xa24ca,
+ 0x52e06,
+ 0xd0f8b,
+ 0x5e82,
+ 0x2f711,
+ 0x157789,
+ 0x942c9,
+ 0x67e42,
+ 0x9f54a,
+ 0xa4909,
+ 0xa504f,
+ 0xa5a8e,
+ 0xa6388,
+ 0x17f42,
+ 0x18ef09,
+ 0x17f08e,
+ 0xf80cc,
+ 0xdf20f,
+ 0x198f4e,
+ 0xc84c,
+ 0x11809,
+ 0x13491,
+ 0x222c8,
+ 0x24512,
+ 0x281cd,
+ 0x2e0cd,
+ 0x8618b,
+ 0xbadd5,
+ 0xbb9c9,
+ 0xe268a,
+ 0x120689,
+ 0x160310,
+ 0x39a0b,
+ 0x4480f,
+ 0x5648b,
+ 0x58a8c,
+ 0x70f90,
+ 0x7beca,
+ 0x7d18d,
+ 0x80d4e,
+ 0x86cca,
+ 0x8720c,
+ 0x89714,
+ 0x157411,
+ 0x1a200b,
+ 0x9004f,
+ 0x9320d,
+ 0x9a00e,
+ 0x9fd8c,
+ 0xa1acc,
+ 0xaae8b,
+ 0xab18e,
+ 0xab990,
+ 0x154c0b,
+ 0x1160cd,
+ 0x10e80f,
+ 0x17e50c,
+ 0xb090e,
+ 0xb2391,
+ 0xb3ecc,
+ 0xc00c7,
+ 0xc064d,
+ 0xc0fcc,
+ 0xc1dd0,
+ 0x102c8d,
+ 0x12bc87,
+ 0xc7750,
+ 0xd3748,
+ 0xd51cb,
+ 0x12aa8f,
+ 0x17e248,
+ 0x1084cd,
+ 0x14d550,
+ 0x18ba60c6,
+ 0xaff43,
+ 0xbe02,
+ 0x11e309,
+ 0x5394a,
+ 0x104186,
+ 0x18cd9009,
+ 0x11d43,
+ 0xd6191,
+ 0xd65c9,
+ 0xd7607,
+ 0xaf6cb,
+ 0xde6d0,
+ 0xdeb8c,
+ 0xdf6c5,
+ 0x18f248,
+ 0x19f94a,
+ 0x111947,
+ 0x33c2,
+ 0x124a4a,
+ 0x127549,
+ 0x35b4a,
+ 0x8a3cf,
+ 0x3edcb,
+ 0x12814c,
+ 0x169b92,
+ 0xaea45,
+ 0x166aca,
+ 0x192ece45,
+ 0x18020c,
+ 0x122843,
+ 0x185502,
+ 0xf2bca,
+ 0x14f3fcc,
+ 0x1b1a48,
+ 0xdfe48,
+ 0x16fb87,
+ 0x1c42,
+ 0x3082,
+ 0x3f590,
+ 0x27c2,
+ 0x1ad58f,
+ 0x5d306,
+ 0x77ece,
+ 0xe598b,
+ 0x86ec8,
+ 0xd1a49,
+ 0x17d152,
+ 0x1abecd,
+ 0x55b08,
+ 0x56d49,
+ 0x572cd,
+ 0x57b89,
+ 0x5c58b,
+ 0x5d848,
+ 0x61ac8,
+ 0x628c8,
+ 0x62b49,
+ 0x62d4a,
+ 0x6398c,
+ 0xe3cca,
+ 0xff947,
+ 0x2270d,
+ 0xf4b4b,
+ 0x11a5cc,
+ 0x18b050,
+ 0xc2,
+ 0x7a14d,
+ 0x2dc2,
+ 0x35482,
+ 0xff88a,
+ 0x1081ca,
+ 0x10928b,
+ 0x1ae28c,
+ 0x108c8e,
+ 0x100cd,
+ 0x1b3908,
+ 0x7b02,
+ 0x11b5ec4e,
+ 0x1227020e,
+ 0x12a83a0a,
+ 0x1336864e,
+ 0x13b143ce,
+ 0x1432ee0c,
+ 0x1594ac7,
+ 0x1594ac9,
+ 0x1410843,
+ 0x14b3054c,
+ 0x15333209,
+ 0x15b49dc9,
+ 0x50642,
+ 0x18fb51,
+ 0x70151,
+ 0x8394d,
+ 0x17acd1,
+ 0x114311,
+ 0x12ed4f,
+ 0x13048f,
+ 0x13314c,
+ 0x149d0c,
+ 0x1a688d,
+ 0x1bb815,
+ 0x5064c,
+ 0x11f0cc,
+ 0xe9c50,
+ 0x11d44c,
+ 0x12a54c,
+ 0x15e999,
+ 0x168399,
+ 0x16fd99,
+ 0x175d54,
+ 0x181ad4,
+ 0x19b7d4,
+ 0x19d714,
+ 0x1ac314,
+ 0x16250709,
+ 0x1699ba89,
+ 0x1731f189,
+ 0x11e224c9,
+ 0x50642,
+ 0x126224c9,
+ 0x50642,
+ 0x15e98a,
+ 0x50642,
+ 0x12e224c9,
+ 0x50642,
+ 0x15e98a,
+ 0x50642,
+ 0x136224c9,
+ 0x50642,
+ 0x13e224c9,
+ 0x50642,
+ 0x146224c9,
+ 0x50642,
+ 0x15e98a,
+ 0x50642,
+ 0x14e224c9,
+ 0x50642,
+ 0x15e98a,
+ 0x50642,
+ 0x156224c9,
+ 0x50642,
+ 0x15e224c9,
+ 0x50642,
+ 0x15e98a,
+ 0x50642,
+ 0x166224c9,
+ 0x50642,
+ 0x16e224c9,
+ 0x50642,
+ 0x176224c9,
+ 0x50642,
+ 0x15e98a,
+ 0x50642,
+ 0xaf545,
+ 0x1a5b04,
+ 0x2bb84,
+ 0x1aa404,
+ 0x1a75c4,
+ 0xc484,
+ 0x13fc4,
+ 0x58f44,
+ 0xff384,
+ 0x14ab3c3,
+ 0x143e603,
+ 0xfb244,
+ 0x1547c03,
+ 0x2bb82,
+ 0x100c3,
+ 0x205702,
+ 0x2099c2,
+ 0x2006c2,
+ 0x218342,
+ 0x20d882,
+ 0x200442,
+ 0x203082,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x24a5c3,
+ 0x205503,
+ 0x200983,
+ 0x16d208,
+ 0x2a84c3,
+ 0x232403,
+ 0x205503,
+ 0x200983,
+ 0x3fc3,
+ 0x2e9dc3,
+ 0x205702,
+ 0x38d2c3,
+ 0x1aea84c3,
+ 0x3b8e47,
+ 0x2e9dc3,
+ 0x206343,
+ 0x211cc4,
+ 0x205503,
+ 0x200983,
+ 0x255cca,
+ 0x264a85,
+ 0x201303,
+ 0x20b0c2,
+ 0x16d208,
+ 0x16d208,
+ 0x99c2,
+ 0x11fd02,
+ 0x6c845,
+ 0x129845,
+ 0x16d208,
+ 0x1b887,
+ 0xa84c3,
+ 0x1ba38e47,
+ 0x13ee06,
+ 0x1bd49c05,
+ 0x11de07,
+ 0x66ca,
+ 0x3748,
+ 0x65c7,
+ 0x56948,
+ 0x28d87,
+ 0x2c6cf,
+ 0x30b87,
+ 0x3b806,
+ 0x117090,
+ 0x12330f,
+ 0x104204,
+ 0x1c11dece,
+ 0xa8b4c,
+ 0x4f14a,
+ 0x9a2c7,
+ 0x112b8a,
+ 0x18f409,
+ 0xbf34a,
+ 0x5414a,
+ 0x104186,
+ 0x9a38a,
+ 0x8350a,
+ 0xe47c9,
+ 0xd5a48,
+ 0xd5d46,
+ 0xd9a8d,
+ 0xb3c45,
+ 0x1a78c7,
+ 0x5d6c7,
+ 0xd9394,
+ 0xf938b,
+ 0x68a0a,
+ 0xa2d0d,
+ 0x1cdc3,
+ 0x1cdc3,
+ 0x1cdc6,
+ 0x1cdc3,
+ 0x18d2c3,
+ 0x16d208,
+ 0x99c2,
+ 0x49944,
+ 0x887c3,
+ 0x173605,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x2030c3,
+ 0x2a84c3,
+ 0x232403,
+ 0x2163c3,
+ 0x2e9dc3,
+ 0x209703,
+ 0x205503,
+ 0x200983,
+ 0x294483,
+ 0x25ed03,
+ 0x2030c3,
+ 0x25ef44,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x2082c3,
+ 0x2a84c3,
+ 0x232403,
+ 0x218343,
+ 0x2163c3,
+ 0x2e9dc3,
+ 0x3b1384,
+ 0x353903,
+ 0x227f83,
+ 0x209703,
+ 0x205503,
+ 0x200983,
+ 0x201303,
+ 0x311dc3,
+ 0x1dea84c3,
+ 0x232403,
+ 0x246383,
+ 0x2e9dc3,
+ 0x20a203,
+ 0x227f83,
+ 0x200983,
+ 0x2072c3,
+ 0x33bac4,
+ 0x16d208,
+ 0x1e6a84c3,
+ 0x232403,
+ 0x2a6443,
+ 0x2e9dc3,
+ 0x209703,
+ 0x211cc4,
+ 0x205503,
+ 0x200983,
+ 0x21db03,
+ 0x16d208,
+ 0x1eea84c3,
+ 0x232403,
+ 0x2163c3,
+ 0x204e83,
+ 0x200983,
+ 0x16d208,
+ 0x1594ac7,
+ 0x38d2c3,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x3b1384,
+ 0x211cc4,
+ 0x205503,
+ 0x200983,
+ 0x129845,
+ 0x16fc07,
+ 0xd95cb,
+ 0xd69c4,
+ 0xb3c45,
+ 0x1456108,
+ 0xa6a8d,
+ 0x20284a05,
+ 0x18004,
+ 0x169c3,
+ 0x186345,
+ 0x349a05,
+ 0x16d208,
+ 0x1cdc2,
+ 0x336c3,
+ 0xf1446,
+ 0x319ec8,
+ 0x313bc7,
+ 0x25ef44,
+ 0x3b2c86,
+ 0x3bb6c6,
+ 0x16d208,
+ 0x30ce43,
+ 0x33e589,
+ 0x237295,
+ 0x3729f,
+ 0x2a84c3,
+ 0x31d012,
+ 0xefac6,
+ 0x10a045,
+ 0x26e8a,
+ 0x56b49,
+ 0x31cdcf,
+ 0x2d5f04,
+ 0x20b145,
+ 0x2fa150,
+ 0x3b0887,
+ 0x204e83,
+ 0x28b148,
+ 0x125bc6,
+ 0x2ae1ca,
+ 0x256044,
+ 0x2ec883,
+ 0x264a86,
+ 0x20b0c2,
+ 0x22d54b,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x209703,
+ 0x205503,
+ 0x200983,
+ 0x2f1743,
+ 0x2099c2,
+ 0x2cd83,
+ 0x205503,
+ 0x200983,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x209703,
+ 0x200983,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x206343,
+ 0x221f03,
+ 0x200983,
+ 0x2099c2,
+ 0x2a84c3,
+ 0x232403,
+ 0x205503,
+ 0x200983,
+ 0x205702,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x9885,
+ 0x25ef44,
+ 0x2a84c3,
+ 0x232403,
+ 0x210444,
+ 0x205503,
+ 0x200983,
+ 0x16d208,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x2a84c3,
+ 0x232403,
+ 0x2163c3,
+ 0x2143c3,
+ 0x209703,
+ 0x205503,
+ 0x200983,
+ 0x2099c2,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x16d208,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x391683,
+ 0x63643,
+ 0x6343,
+ 0x205503,
+ 0x200983,
+ 0x30d44a,
+ 0x32b0c9,
+ 0x346b0b,
+ 0x34708a,
+ 0x34d94a,
+ 0x35d74b,
+ 0x371e0a,
+ 0x37814a,
+ 0x37fc4a,
+ 0x37fecb,
+ 0x39f689,
+ 0x3a140a,
+ 0x3a178b,
+ 0x3acfcb,
+ 0x3b9eca,
+ 0x2a84c3,
+ 0x232403,
+ 0x2163c3,
+ 0x209703,
+ 0x205503,
+ 0x200983,
+ 0x4589,
+ 0x16d208,
+ 0x2a84c3,
+ 0x25cb44,
+ 0x207ac2,
+ 0x211cc4,
+ 0x26fc45,
+ 0x2030c3,
+ 0x25ef44,
+ 0x2a84c3,
+ 0x235ac4,
+ 0x232403,
+ 0x249944,
+ 0x2d5f04,
+ 0x3b1384,
+ 0x227f83,
+ 0x205503,
+ 0x200983,
+ 0x27a305,
+ 0x2082c3,
+ 0x201303,
+ 0x22ed03,
+ 0x250cc4,
+ 0x390fc4,
+ 0x34ae45,
+ 0x16d208,
+ 0x302044,
+ 0x3510c6,
+ 0x276384,
+ 0x2099c2,
+ 0x371007,
+ 0x24c0c7,
+ 0x247784,
+ 0x2555c5,
+ 0x302e85,
+ 0x2a9305,
+ 0x3b1384,
+ 0x3b8ac8,
+ 0x239486,
+ 0x30c188,
+ 0x24ed05,
+ 0x2da905,
+ 0x236b84,
+ 0x200983,
+ 0x2ed844,
+ 0x35c946,
+ 0x264b83,
+ 0x250cc4,
+ 0x256005,
+ 0x32d104,
+ 0x334944,
+ 0x20b0c2,
+ 0x2425c6,
+ 0x3962c6,
+ 0x2fdc05,
+ 0x205702,
+ 0x38d2c3,
+ 0x262099c2,
+ 0x2333c4,
+ 0x20d882,
+ 0x209703,
+ 0x202c82,
+ 0x205503,
+ 0x200442,
+ 0x214843,
+ 0x25ed03,
+ 0x16d208,
+ 0x16d208,
+ 0x2e9dc3,
+ 0x205702,
+ 0x26e099c2,
+ 0x2e9dc3,
+ 0x245b43,
+ 0x353903,
+ 0x327344,
+ 0x205503,
+ 0x200983,
+ 0x16d208,
+ 0x205702,
+ 0x276099c2,
+ 0x2a84c3,
+ 0x205503,
+ 0x200983,
+ 0x482,
+ 0x20a9c2,
+ 0x212982,
+ 0x206343,
+ 0x2e87c3,
+ 0x205702,
+ 0x129845,
+ 0x16d208,
+ 0x16fc07,
+ 0x2099c2,
+ 0x232403,
+ 0x249944,
+ 0x2032c3,
+ 0x2e9dc3,
+ 0x2143c3,
+ 0x209703,
+ 0x205503,
+ 0x216b03,
+ 0x200983,
+ 0x21da83,
+ 0x118fd3,
+ 0x11c954,
+ 0x16fc07,
+ 0x13b46,
+ 0x53b4b,
+ 0x1cdc6,
+ 0x51b87,
+ 0x11ab09,
+ 0xe6d4a,
+ 0x8850d,
+ 0x1b240c,
+ 0x1ada8a,
+ 0x192345,
+ 0x6708,
+ 0x5d306,
+ 0x125c86,
+ 0x22bb82,
+ 0xff14c,
+ 0x1a5cc7,
+ 0x22e51,
+ 0x2a84c3,
+ 0x568c5,
+ 0x77848,
+ 0x9e04,
+ 0x288347c6,
+ 0x17e86,
+ 0x8cb46,
+ 0x8da0a,
+ 0xac543,
+ 0x28e54b04,
+ 0x11aac5,
+ 0xde283,
+ 0xdc105,
+ 0xd104c,
+ 0xf04c8,
+ 0xb5708,
+ 0x9e009,
+ 0x134b08,
+ 0x141e046,
+ 0xda40a,
+ 0x82b48,
+ 0xf4648,
+ 0xff384,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x209703,
+ 0x205503,
+ 0x200983,
+ 0x205702,
+ 0x2099c2,
+ 0x2e9dc3,
+ 0x202bc2,
+ 0x205503,
+ 0x200983,
+ 0x214843,
+ 0x3653cf,
+ 0x36578e,
+ 0x16d208,
+ 0x2a84c3,
+ 0x42f87,
+ 0x232403,
+ 0x2e9dc3,
+ 0x244183,
+ 0x205503,
+ 0x200983,
+ 0x201bc3,
+ 0x201bc7,
+ 0x200142,
+ 0x32c249,
+ 0x200242,
+ 0x23f88b,
+ 0x297b8a,
+ 0x2a2a49,
+ 0x200882,
+ 0x391206,
+ 0x34ed15,
+ 0x23f9d5,
+ 0x246993,
+ 0x23ff53,
+ 0x202a82,
+ 0x205ac5,
+ 0x3b364c,
+ 0x27160b,
+ 0x2726c5,
+ 0x201702,
+ 0x284202,
+ 0x386fc6,
+ 0x200ec2,
+ 0x3695c6,
+ 0x2d4c4d,
+ 0x27ef4c,
+ 0x224dc4,
+ 0x203dc2,
+ 0x205942,
+ 0x2248c8,
+ 0x202a42,
+ 0x312fc6,
+ 0x2ba844,
+ 0x34eed5,
+ 0x246b13,
+ 0x210783,
+ 0x32fa0a,
+ 0x3bb147,
+ 0x3094c9,
+ 0x37b887,
+ 0x30f242,
+ 0x200002,
+ 0x3aef06,
+ 0x20cb42,
+ 0x16d208,
+ 0x2105c2,
+ 0x20b382,
+ 0x274e87,
+ 0x20f687,
+ 0x21b585,
+ 0x201c02,
+ 0x21da47,
+ 0x21dc08,
+ 0x242b42,
+ 0x2bf3c2,
+ 0x22e802,
+ 0x201ec2,
+ 0x237b88,
+ 0x201ec3,
+ 0x2b5308,
+ 0x2cf1cd,
+ 0x213c03,
+ 0x327988,
+ 0x239f8f,
+ 0x23a34e,
+ 0x25edca,
+ 0x229751,
+ 0x229bd0,
+ 0x2bcdcd,
+ 0x2bd10c,
+ 0x311c47,
+ 0x32fb87,
+ 0x3b2d49,
+ 0x224ec2,
+ 0x206c02,
+ 0x25340c,
+ 0x25370b,
+ 0x204142,
+ 0x2ab046,
+ 0x21a1c2,
+ 0x209882,
+ 0x21b102,
+ 0x2099c2,
+ 0x383a84,
+ 0x238bc7,
+ 0x204682,
+ 0x23d147,
+ 0x23e487,
+ 0x20e142,
+ 0x2301c2,
+ 0x242e45,
+ 0x205742,
+ 0x362e0e,
+ 0x2ebb8d,
+ 0x232403,
+ 0x2be90e,
+ 0x2e064d,
+ 0x37eac3,
+ 0x200e02,
+ 0x21fec4,
+ 0x2454c2,
+ 0x2175c2,
+ 0x358e45,
+ 0x364b47,
+ 0x383382,
+ 0x218342,
+ 0x249547,
+ 0x24d288,
+ 0x248902,
+ 0x2aeac6,
+ 0x25328c,
+ 0x2535cb,
+ 0x20fc82,
+ 0x25924f,
+ 0x259610,
+ 0x259a0f,
+ 0x259dd5,
+ 0x25a314,
+ 0x25a80e,
+ 0x25ab8e,
+ 0x25af0f,
+ 0x25b2ce,
+ 0x25b654,
+ 0x25bb53,
+ 0x25c00d,
+ 0x272a89,
+ 0x2895c3,
+ 0x200782,
+ 0x22b0c5,
+ 0x207f86,
+ 0x20d882,
+ 0x21f507,
+ 0x2e9dc3,
+ 0x205e82,
+ 0x362a08,
+ 0x229991,
+ 0x229dd0,
+ 0x206482,
+ 0x288d87,
+ 0x203942,
+ 0x214607,
+ 0x20be02,
+ 0x319cc9,
+ 0x386f87,
+ 0x27aac8,
+ 0x234606,
+ 0x2e86c3,
+ 0x32a105,
+ 0x232682,
+ 0x202082,
+ 0x3af305,
+ 0x380685,
+ 0x2040c2,
+ 0x24c543,
+ 0x32d187,
+ 0x223787,
+ 0x200502,
+ 0x254684,
+ 0x223b83,
+ 0x223b89,
+ 0x22c548,
+ 0x200282,
+ 0x204bc2,
+ 0x3105c7,
+ 0x31ff05,
+ 0x2a5348,
+ 0x219947,
+ 0x200e83,
+ 0x28c446,
+ 0x2bcc4d,
+ 0x2bcfcc,
+ 0x2b45c6,
+ 0x208d02,
+ 0x2a8542,
+ 0x202342,
+ 0x239e0f,
+ 0x23a20e,
+ 0x302f07,
+ 0x203d02,
+ 0x2bf745,
+ 0x2bf746,
+ 0x20f242,
+ 0x20ec42,
+ 0x221f06,
+ 0x214543,
+ 0x214546,
+ 0x2c6985,
+ 0x2c698d,
+ 0x2c6f55,
+ 0x2c814c,
+ 0x2c95cd,
+ 0x2c9992,
+ 0x20e602,
+ 0x2675c2,
+ 0x202d02,
+ 0x240806,
+ 0x2f7f86,
+ 0x2033c2,
+ 0x208006,
+ 0x2023c2,
+ 0x38b785,
+ 0x200542,
+ 0x2ebc89,
+ 0x31554c,
+ 0x31588b,
+ 0x200442,
+ 0x24e748,
+ 0x203b02,
+ 0x2056c2,
+ 0x26a346,
+ 0x222445,
+ 0x226747,
+ 0x257d85,
+ 0x29e405,
+ 0x243002,
+ 0x2067c2,
+ 0x2013c2,
+ 0x2df507,
+ 0x380c0d,
+ 0x380f8c,
+ 0x22f087,
+ 0x20f982,
+ 0x2069c2,
+ 0x241248,
+ 0x31e488,
+ 0x2e3988,
+ 0x308484,
+ 0x2ab407,
+ 0x2e90c3,
+ 0x228ec2,
+ 0x2082c2,
+ 0x2eb3c9,
+ 0x3a40c7,
+ 0x201302,
+ 0x26a745,
+ 0x22d4c2,
+ 0x21aa02,
+ 0x2f9f03,
+ 0x2f9f06,
+ 0x2f1742,
+ 0x2f23c2,
+ 0x201a42,
+ 0x202f86,
+ 0x21fe07,
+ 0x213bc2,
+ 0x205ec2,
+ 0x2b514f,
+ 0x2be74d,
+ 0x3872ce,
+ 0x2e04cc,
+ 0x2009c2,
+ 0x207302,
+ 0x234445,
+ 0x30ba46,
+ 0x2018c2,
+ 0x202482,
+ 0x200482,
+ 0x2198c4,
+ 0x2cf044,
+ 0x2d0e86,
+ 0x203082,
+ 0x36cac7,
+ 0x203083,
+ 0x285d48,
+ 0x34e488,
+ 0x239887,
+ 0x240706,
+ 0x203902,
+ 0x234b03,
+ 0x234b07,
+ 0x273946,
+ 0x2dee45,
+ 0x308808,
+ 0x200d02,
+ 0x331207,
+ 0x222702,
+ 0x361782,
+ 0x20cfc2,
+ 0x2c6749,
+ 0x230982,
+ 0x200842,
+ 0x22f303,
+ 0x331c87,
+ 0x2002c2,
+ 0x3156cc,
+ 0x3159cb,
+ 0x2b4646,
+ 0x2de1c5,
+ 0x221c82,
+ 0x203b42,
+ 0x2b7bc6,
+ 0x260dc3,
+ 0x38c187,
+ 0x236102,
+ 0x201442,
+ 0x34eb95,
+ 0x23fb95,
+ 0x246853,
+ 0x2400d3,
+ 0x2585c7,
+ 0x271a48,
+ 0x271a50,
+ 0x28d2cf,
+ 0x297953,
+ 0x2a2812,
+ 0x32be10,
+ 0x2d544f,
+ 0x35f7d2,
+ 0x30c3d1,
+ 0x2b7613,
+ 0x2c6512,
+ 0x2cff4f,
+ 0x2d2e8e,
+ 0x2d3f52,
+ 0x2d71d1,
+ 0x2d7c8f,
+ 0x30440e,
+ 0x2f0691,
+ 0x2f17d0,
+ 0x2f2752,
+ 0x2fc711,
+ 0x364586,
+ 0x36d3c7,
+ 0x372187,
+ 0x203142,
+ 0x27d8c5,
+ 0x3933c7,
+ 0x212982,
+ 0x209942,
+ 0x228a85,
+ 0x21e743,
+ 0x34b0c6,
+ 0x380dcd,
+ 0x38110c,
+ 0x201682,
+ 0x3b34cb,
+ 0x2714ca,
+ 0x20598a,
+ 0x2b6449,
+ 0x2ea64b,
+ 0x219a8d,
+ 0x2fa5cc,
+ 0x25180a,
+ 0x22090c,
+ 0x26908b,
+ 0x27250c,
+ 0x29474b,
+ 0x3154c3,
+ 0x36cfc6,
+ 0x3a98c2,
+ 0x2f4542,
+ 0x20a743,
+ 0x208602,
+ 0x21fe83,
+ 0x2366c6,
+ 0x259f87,
+ 0x2c7fc6,
+ 0x39e4c8,
+ 0x31e188,
+ 0x2ce146,
+ 0x201f82,
+ 0x2fd5cd,
+ 0x2fd90c,
+ 0x2d5fc7,
+ 0x301f07,
+ 0x213b82,
+ 0x201502,
+ 0x234a82,
+ 0x24d642,
+ 0x2099c2,
+ 0x205503,
+ 0x200983,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x209703,
+ 0x211cc4,
+ 0x205503,
+ 0x200983,
+ 0x214843,
+ 0x205702,
+ 0x2021c2,
+ 0x2ae8fdc5,
+ 0x2b247e45,
+ 0x2b717806,
+ 0x16d208,
+ 0x2baaee05,
+ 0x2099c2,
+ 0x2006c2,
+ 0x2bfb3ac5,
+ 0x2c27bdc5,
+ 0x2c67c9c7,
+ 0x2ca86a09,
+ 0x2ce3bc44,
+ 0x20d882,
+ 0x205e82,
+ 0x2d24b5c5,
+ 0x2d68f849,
+ 0x2db1db88,
+ 0x2deab805,
+ 0x2e300187,
+ 0x2e61ed48,
+ 0x2eae5d85,
+ 0x2ee00106,
+ 0x2f337809,
+ 0x2f6b5a48,
+ 0x2fac0488,
+ 0x2fe9704a,
+ 0x302732c4,
+ 0x306d13c5,
+ 0x30abc9c8,
+ 0x30e03a85,
+ 0x20cec2,
+ 0x31248a43,
+ 0x316a1686,
+ 0x31b60148,
+ 0x31eb94c6,
+ 0x32281f08,
+ 0x32719606,
+ 0x32adef04,
+ 0x200c82,
+ 0x32f2cb87,
+ 0x332a75c4,
+ 0x336756c7,
+ 0x33ba2987,
+ 0x200442,
+ 0x33e9b0c5,
+ 0x34334f84,
+ 0x346cd907,
+ 0x34a5f187,
+ 0x34e80886,
+ 0x3527c585,
+ 0x356959c7,
+ 0x35ad0b48,
+ 0x35e2b447,
+ 0x363164c9,
+ 0x36793105,
+ 0x36b31dc7,
+ 0x36e8f546,
+ 0x37391408,
+ 0x2273cd,
+ 0x279909,
+ 0x28174b,
+ 0x2a4b0b,
+ 0x34058b,
+ 0x2ffe8b,
+ 0x30bc4b,
+ 0x30bf0b,
+ 0x30c809,
+ 0x30d6cb,
+ 0x30d98b,
+ 0x30e48b,
+ 0x30f5ca,
+ 0x30fb0a,
+ 0x31010c,
+ 0x314d8b,
+ 0x31670a,
+ 0x32904a,
+ 0x33404e,
+ 0x33568e,
+ 0x335a0a,
+ 0x33808a,
+ 0x338dcb,
+ 0x33908b,
+ 0x339e8b,
+ 0x354ecb,
+ 0x3554ca,
+ 0x35618b,
+ 0x35644a,
+ 0x3566ca,
+ 0x35694a,
+ 0x372b0b,
+ 0x37914b,
+ 0x37c74e,
+ 0x37cacb,
+ 0x38454b,
+ 0x385acb,
+ 0x38900a,
+ 0x389289,
+ 0x3894ca,
+ 0x38a94a,
+ 0x3a00cb,
+ 0x3a1a4b,
+ 0x3a22ca,
+ 0x3a48cb,
+ 0x3a8c4b,
+ 0x3b990b,
+ 0x3767e648,
+ 0x37a87c89,
+ 0x37e9de89,
+ 0x382dacc8,
+ 0x342505,
+ 0x217083,
+ 0x21c6c4,
+ 0x220005,
+ 0x23b986,
+ 0x25da05,
+ 0x2864c4,
+ 0x21f408,
+ 0x308005,
+ 0x291784,
+ 0x203447,
+ 0x29cf8a,
+ 0x3712ca,
+ 0x338547,
+ 0x3af9c7,
+ 0x2f8f07,
+ 0x264e87,
+ 0x2f60c5,
+ 0x33bb86,
+ 0x2bb847,
+ 0x2b4904,
+ 0x2e4646,
+ 0x2e4546,
+ 0x3b9585,
+ 0x26d1c4,
+ 0x3519c6,
+ 0x29bf47,
+ 0x285746,
+ 0x2e3247,
+ 0x25e443,
+ 0x2b1c06,
+ 0x2328c5,
+ 0x27cac7,
+ 0x2641ca,
+ 0x260e44,
+ 0x217c08,
+ 0x2abd89,
+ 0x2cd247,
+ 0x336286,
+ 0x24e9c8,
+ 0x2b9c09,
+ 0x309684,
+ 0x366944,
+ 0x244245,
+ 0x2bb548,
+ 0x2c4b07,
+ 0x2a9709,
+ 0x364688,
+ 0x345e86,
+ 0x3204c6,
+ 0x298048,
+ 0x359646,
+ 0x247e45,
+ 0x280946,
+ 0x275ec8,
+ 0x24da46,
+ 0x2525cb,
+ 0x298646,
+ 0x29994d,
+ 0x3a6005,
+ 0x2a7486,
+ 0x208b45,
+ 0x2f9bc9,
+ 0x2f9a87,
+ 0x37a208,
+ 0x266986,
+ 0x298bc9,
+ 0x3793c6,
+ 0x264145,
+ 0x268686,
+ 0x2cae46,
+ 0x2cb3c9,
+ 0x3530c6,
+ 0x339487,
+ 0x26ad85,
+ 0x202ac3,
+ 0x252745,
+ 0x299c07,
+ 0x33c6c6,
+ 0x3a5f09,
+ 0x317806,
+ 0x280b86,
+ 0x210c49,
+ 0x280349,
+ 0x29fc07,
+ 0x282f88,
+ 0x28c989,
+ 0x27d548,
+ 0x378386,
+ 0x2d5805,
+ 0x2418ca,
+ 0x280c06,
+ 0x3b7986,
+ 0x2c8985,
+ 0x265808,
+ 0x223307,
+ 0x22f50a,
+ 0x249e46,
+ 0x279d45,
+ 0x37aa46,
+ 0x21ac47,
+ 0x336147,
+ 0x21bbc5,
+ 0x264305,
+ 0x357dc6,
+ 0x2ac5c6,
+ 0x34dc06,
+ 0x2b3204,
+ 0x27f689,
+ 0x288b46,
+ 0x2dd38a,
+ 0x21b388,
+ 0x3078c8,
+ 0x3712ca,
+ 0x20b445,
+ 0x29be85,
+ 0x350b88,
+ 0x2b2c88,
+ 0x27b5c7,
+ 0x258946,
+ 0x322388,
+ 0x2fdec7,
+ 0x27dc48,
+ 0x2b3846,
+ 0x281408,
+ 0x294f06,
+ 0x24ee87,
+ 0x299ec6,
+ 0x3519c6,
+ 0x3778ca,
+ 0x2bd8c6,
+ 0x2d5809,
+ 0x26dbc6,
+ 0x2af14a,
+ 0x2def09,
+ 0x2fb486,
+ 0x2b4b04,
+ 0x22b18d,
+ 0x287f07,
+ 0x326cc6,
+ 0x2c0345,
+ 0x379445,
+ 0x374246,
+ 0x2cd749,
+ 0x2b1647,
+ 0x277306,
+ 0x2cc246,
+ 0x286549,
+ 0x247d84,
+ 0x3482c4,
+ 0x352cc8,
+ 0x236a86,
+ 0x26a808,
+ 0x2e41c8,
+ 0x312747,
+ 0x3b7549,
+ 0x34de07,
+ 0x2aecca,
+ 0x2e1f8f,
+ 0x23188a,
+ 0x234245,
+ 0x276105,
+ 0x216e85,
+ 0x2ba787,
+ 0x21a803,
+ 0x283188,
+ 0x396786,
+ 0x396889,
+ 0x2b87c6,
+ 0x3b5207,
+ 0x298989,
+ 0x37a108,
+ 0x2c8a47,
+ 0x30a343,
+ 0x342585,
+ 0x21a785,
+ 0x2b304b,
+ 0x203b44,
+ 0x2c2084,
+ 0x274646,
+ 0x30abc7,
+ 0x382bca,
+ 0x248ac7,
+ 0x311e87,
+ 0x27bdc5,
+ 0x200645,
+ 0x2eef89,
+ 0x3519c6,
+ 0x24894d,
+ 0x353305,
+ 0x2b1383,
+ 0x205043,
+ 0x26f685,
+ 0x345c45,
+ 0x24e9c8,
+ 0x2790c7,
+ 0x348046,
+ 0x29db06,
+ 0x229105,
+ 0x2326c7,
+ 0x312247,
+ 0x239347,
+ 0x2d144a,
+ 0x2b1cc8,
+ 0x2b3204,
+ 0x24d7c7,
+ 0x27acc7,
+ 0x339306,
+ 0x262107,
+ 0x2dc4c8,
+ 0x2e6f08,
+ 0x268506,
+ 0x303008,
+ 0x2c87c4,
+ 0x2bb846,
+ 0x2353c6,
+ 0x33bfc6,
+ 0x2ba986,
+ 0x286004,
+ 0x264f46,
+ 0x2bf5c6,
+ 0x297546,
+ 0x247846,
+ 0x204f06,
+ 0x26e2c6,
+ 0x347f48,
+ 0x2b0748,
+ 0x2d1c88,
+ 0x25dc08,
+ 0x350b06,
+ 0x20dcc5,
+ 0x315ec6,
+ 0x2ab885,
+ 0x388447,
+ 0x215305,
+ 0x2125c3,
+ 0x211585,
+ 0x344cc4,
+ 0x205045,
+ 0x203b03,
+ 0x33a447,
+ 0x354648,
+ 0x2e3306,
+ 0x2c218d,
+ 0x2760c6,
+ 0x296ac5,
+ 0x2b7843,
+ 0x2bc389,
+ 0x247f06,
+ 0x28e7c6,
+ 0x29f4c4,
+ 0x231807,
+ 0x233606,
+ 0x2b1905,
+ 0x203cc3,
+ 0x3abd84,
+ 0x27ae86,
+ 0x2354c4,
+ 0x2da048,
+ 0x38ba89,
+ 0x215589,
+ 0x29f2ca,
+ 0x2a070d,
+ 0x313447,
+ 0x2b9186,
+ 0x206804,
+ 0x286a09,
+ 0x284688,
+ 0x287b06,
+ 0x33f286,
+ 0x262107,
+ 0x2b6b46,
+ 0x226346,
+ 0x26d606,
+ 0x3a2a0a,
+ 0x21ed48,
+ 0x2bacc5,
+ 0x262549,
+ 0x27e14a,
+ 0x2f5d08,
+ 0x29b908,
+ 0x295f08,
+ 0x2a7acc,
+ 0x30e705,
+ 0x29dd88,
+ 0x2e6586,
+ 0x37a386,
+ 0x3b50c7,
+ 0x2489c5,
+ 0x280ac5,
+ 0x215449,
+ 0x20e247,
+ 0x396845,
+ 0x227887,
+ 0x205043,
+ 0x2c5045,
+ 0x20ef48,
+ 0x252ac7,
+ 0x29b7c9,
+ 0x2d7985,
+ 0x2fa984,
+ 0x2a03c8,
+ 0x32ccc7,
+ 0x2c8c08,
+ 0x38d688,
+ 0x354b05,
+ 0x3a3946,
+ 0x278cc6,
+ 0x244609,
+ 0x2b01c7,
+ 0x2ac006,
+ 0x313787,
+ 0x210103,
+ 0x23bc44,
+ 0x2a1785,
+ 0x232804,
+ 0x3833c4,
+ 0x27fdc7,
+ 0x26c147,
+ 0x22e704,
+ 0x29b610,
+ 0x3b3c47,
+ 0x200645,
+ 0x24c20c,
+ 0x20a8c4,
+ 0x2c1488,
+ 0x24ed89,
+ 0x35acc6,
+ 0x334c48,
+ 0x215244,
+ 0x36c4c8,
+ 0x22fb06,
+ 0x2accc8,
+ 0x29c506,
+ 0x2bec0b,
+ 0x202ac5,
+ 0x2c8748,
+ 0x215ac4,
+ 0x38beca,
+ 0x29b7c9,
+ 0x245f06,
+ 0x216f48,
+ 0x256385,
+ 0x2b0f44,
+ 0x2c1386,
+ 0x239208,
+ 0x27e648,
+ 0x322c06,
+ 0x3a9ec4,
+ 0x241846,
+ 0x34de87,
+ 0x2755c7,
+ 0x26210f,
+ 0x207347,
+ 0x2fb547,
+ 0x3709c5,
+ 0x353e05,
+ 0x29f8c9,
+ 0x2dd046,
+ 0x27cc05,
+ 0x280647,
+ 0x2e0bc8,
+ 0x297645,
+ 0x299ec6,
+ 0x21b1c8,
+ 0x2b94ca,
+ 0x2db4c8,
+ 0x28ac87,
+ 0x2e23c6,
+ 0x262506,
+ 0x21a5c3,
+ 0x216a43,
+ 0x27e309,
+ 0x28c809,
+ 0x2c1286,
+ 0x2d7985,
+ 0x33bd48,
+ 0x216f48,
+ 0x3597c8,
+ 0x26d68b,
+ 0x2c23c7,
+ 0x30a589,
+ 0x262388,
+ 0x343084,
+ 0x3514c8,
+ 0x28cd89,
+ 0x2ac305,
+ 0x2ba687,
+ 0x23bcc5,
+ 0x27e548,
+ 0x28fc4b,
+ 0x295710,
+ 0x2a6dc5,
+ 0x215a0c,
+ 0x348205,
+ 0x27be43,
+ 0x2a8f86,
+ 0x2be6c4,
+ 0x335086,
+ 0x29bf47,
+ 0x21b244,
+ 0x240b88,
+ 0x28304d,
+ 0x302945,
+ 0x29b104,
+ 0x2243c4,
+ 0x276949,
+ 0x2a11c8,
+ 0x317687,
+ 0x22fb88,
+ 0x27f748,
+ 0x277605,
+ 0x209287,
+ 0x277587,
+ 0x33e347,
+ 0x264309,
+ 0x233489,
+ 0x214c46,
+ 0x2bd306,
+ 0x262346,
+ 0x37f785,
+ 0x3a7184,
+ 0x200006,
+ 0x200386,
+ 0x277648,
+ 0x21a90b,
+ 0x260d07,
+ 0x206804,
+ 0x353646,
+ 0x2fe447,
+ 0x26dec5,
+ 0x391d05,
+ 0x219644,
+ 0x233406,
+ 0x200088,
+ 0x286a09,
+ 0x2510c6,
+ 0x284048,
+ 0x2b19c6,
+ 0x345248,
+ 0x306dcc,
+ 0x2774c6,
+ 0x29678d,
+ 0x296c0b,
+ 0x339545,
+ 0x312387,
+ 0x3531c6,
+ 0x336008,
+ 0x214cc9,
+ 0x2d0588,
+ 0x200645,
+ 0x277987,
+ 0x27d648,
+ 0x349649,
+ 0x28e946,
+ 0x250fca,
+ 0x335d88,
+ 0x2d03cb,
+ 0x39818c,
+ 0x36c5c8,
+ 0x27a7c6,
+ 0x208c88,
+ 0x3b77c7,
+ 0x32cf49,
+ 0x28f74d,
+ 0x299dc6,
+ 0x27b808,
+ 0x2b0609,
+ 0x2bda48,
+ 0x281508,
+ 0x2bfe0c,
+ 0x2c0b47,
+ 0x2c1887,
+ 0x264145,
+ 0x2ad587,
+ 0x2e0a88,
+ 0x2c1406,
+ 0x2556cc,
+ 0x2ef888,
+ 0x2ccb88,
+ 0x25dec6,
+ 0x21a507,
+ 0x214e44,
+ 0x25dc08,
+ 0x22200c,
+ 0x2ce24c,
+ 0x2342c5,
+ 0x2d0d47,
+ 0x3a9e46,
+ 0x21a486,
+ 0x2f9d88,
+ 0x3af904,
+ 0x28574b,
+ 0x36cc0b,
+ 0x2e23c6,
+ 0x282ec7,
+ 0x37a805,
+ 0x269a05,
+ 0x285886,
+ 0x256345,
+ 0x203b05,
+ 0x2cc9c7,
+ 0x274c49,
+ 0x2ac784,
+ 0x2fbb45,
+ 0x2e4bc5,
+ 0x2d9dc8,
+ 0x329d05,
+ 0x2b72c9,
+ 0x2ae5c7,
+ 0x2ae5cb,
+ 0x381306,
+ 0x347c89,
+ 0x26d108,
+ 0x276545,
+ 0x33e448,
+ 0x2334c8,
+ 0x245747,
+ 0x3776c7,
+ 0x27fe49,
+ 0x2acc07,
+ 0x28a989,
+ 0x2aa70c,
+ 0x3163c8,
+ 0x2b2ac9,
+ 0x2b3d47,
+ 0x27f809,
+ 0x26c287,
+ 0x398288,
+ 0x3b7705,
+ 0x2bb7c6,
+ 0x2c0388,
+ 0x308a88,
+ 0x27e009,
+ 0x203b47,
+ 0x269ac5,
+ 0x222b09,
+ 0x2bd6c6,
+ 0x28f544,
+ 0x30e1c6,
+ 0x35ffc8,
+ 0x232ac7,
+ 0x21ab08,
+ 0x3030c9,
+ 0x3a3707,
+ 0x29d146,
+ 0x312444,
+ 0x211609,
+ 0x209108,
+ 0x25dd87,
+ 0x27eb46,
+ 0x21a846,
+ 0x3b7904,
+ 0x2241c6,
+ 0x204fc3,
+ 0x3b1649,
+ 0x202a86,
+ 0x303345,
+ 0x29db06,
+ 0x26cac5,
+ 0x27dac8,
+ 0x36c307,
+ 0x381646,
+ 0x3b3b06,
+ 0x3078c8,
+ 0x29fa47,
+ 0x299e05,
+ 0x29b408,
+ 0x3a1e48,
+ 0x335d88,
+ 0x3480c5,
+ 0x2bb846,
+ 0x215349,
+ 0x244484,
+ 0x26c94b,
+ 0x22604b,
+ 0x2babc9,
+ 0x205043,
+ 0x254485,
+ 0x2214c6,
+ 0x385208,
+ 0x2e1f04,
+ 0x2e3306,
+ 0x2d1589,
+ 0x2ca445,
+ 0x2cc906,
+ 0x32ccc6,
+ 0x216f44,
+ 0x2a764a,
+ 0x303288,
+ 0x308a86,
+ 0x3b8645,
+ 0x37a687,
+ 0x2e0fc7,
+ 0x3a3944,
+ 0x226287,
+ 0x2aecc4,
+ 0x33bf46,
+ 0x2096c3,
+ 0x264305,
+ 0x32ad45,
+ 0x207588,
+ 0x24d985,
+ 0x277209,
+ 0x25da47,
+ 0x25da4b,
+ 0x2a148c,
+ 0x2a224a,
+ 0x300187,
+ 0x203503,
+ 0x3afc08,
+ 0x348285,
+ 0x2976c5,
+ 0x205104,
+ 0x398186,
+ 0x24ed86,
+ 0x224207,
+ 0x33448b,
+ 0x286004,
+ 0x2e6684,
+ 0x21f044,
+ 0x2cafc6,
+ 0x21b244,
+ 0x2bb648,
+ 0x342445,
+ 0x21ba45,
+ 0x359707,
+ 0x312489,
+ 0x345c45,
+ 0x37424a,
+ 0x26ac89,
+ 0x2996ca,
+ 0x3a2b49,
+ 0x33fec4,
+ 0x2cc305,
+ 0x2b6c48,
+ 0x2cd9cb,
+ 0x244245,
+ 0x2f2fc6,
+ 0x213e84,
+ 0x277746,
+ 0x3a3589,
+ 0x353707,
+ 0x3179c8,
+ 0x2a0a86,
+ 0x34de07,
+ 0x27e648,
+ 0x3747c6,
+ 0x375604,
+ 0x365ac7,
+ 0x357305,
+ 0x367287,
+ 0x200104,
+ 0x353146,
+ 0x2f4308,
+ 0x296dc8,
+ 0x2e6047,
+ 0x274fc8,
+ 0x294fc5,
+ 0x204e84,
+ 0x3711c8,
+ 0x2750c4,
+ 0x216e05,
+ 0x2f5fc4,
+ 0x2fdfc7,
+ 0x288c07,
+ 0x27f948,
+ 0x2c8d86,
+ 0x24d905,
+ 0x277008,
+ 0x2db6c8,
+ 0x29f209,
+ 0x226346,
+ 0x22f588,
+ 0x38bd4a,
+ 0x26df48,
+ 0x2e5d85,
+ 0x20b306,
+ 0x26ab48,
+ 0x277a4a,
+ 0x210f87,
+ 0x284c45,
+ 0x292708,
+ 0x2ade04,
+ 0x265886,
+ 0x2c1c08,
+ 0x204f06,
+ 0x38e7c8,
+ 0x28f187,
+ 0x203346,
+ 0x2b4b04,
+ 0x284fc7,
+ 0x2b0d84,
+ 0x3a3547,
+ 0x28e60d,
+ 0x27b645,
+ 0x2cd54b,
+ 0x29c606,
+ 0x24e848,
+ 0x240b44,
+ 0x350d06,
+ 0x27ae86,
+ 0x208fc7,
+ 0x29644d,
+ 0x243cc7,
+ 0x2b12c8,
+ 0x269b85,
+ 0x278648,
+ 0x2c4a86,
+ 0x295048,
+ 0x228086,
+ 0x33d987,
+ 0x300449,
+ 0x343ac7,
+ 0x287dc8,
+ 0x2706c5,
+ 0x21b608,
+ 0x21a3c5,
+ 0x3a4245,
+ 0x3a2dc5,
+ 0x234543,
+ 0x2809c4,
+ 0x262545,
+ 0x337809,
+ 0x27ea46,
+ 0x2dc5c8,
+ 0x377485,
+ 0x2b2e87,
+ 0x2a78ca,
+ 0x2cc849,
+ 0x2cad4a,
+ 0x2d1d08,
+ 0x2276cc,
+ 0x2806cd,
+ 0x2fc003,
+ 0x38e6c8,
+ 0x3abd45,
+ 0x2b9286,
+ 0x379f86,
+ 0x2e58c5,
+ 0x313889,
+ 0x33cc45,
+ 0x277008,
+ 0x2552c6,
+ 0x347806,
+ 0x2a0289,
+ 0x393947,
+ 0x28ff06,
+ 0x2a7848,
+ 0x33bec8,
+ 0x2daec7,
+ 0x2ace4e,
+ 0x2c4cc5,
+ 0x349545,
+ 0x204e08,
+ 0x21fcc7,
+ 0x21a882,
+ 0x2bf984,
+ 0x334f8a,
+ 0x25de48,
+ 0x2fe546,
+ 0x298ac8,
+ 0x278cc6,
+ 0x332608,
+ 0x2ac008,
+ 0x3a4204,
+ 0x2b33c5,
+ 0x676384,
+ 0x676384,
+ 0x676384,
+ 0x202b43,
+ 0x21a6c6,
+ 0x2774c6,
+ 0x29cb0c,
+ 0x203383,
+ 0x27e146,
+ 0x2151c4,
+ 0x247e88,
+ 0x2d13c5,
+ 0x335086,
+ 0x2bcac8,
+ 0x2d2bc6,
+ 0x3815c6,
+ 0x245d08,
+ 0x2a1807,
+ 0x2ac9c9,
+ 0x2f214a,
+ 0x22b484,
+ 0x215305,
+ 0x2a96c5,
+ 0x247c06,
+ 0x313486,
+ 0x29d546,
+ 0x2f5546,
+ 0x2acb04,
+ 0x2acb0b,
+ 0x231804,
+ 0x29ccc5,
+ 0x2aad85,
+ 0x312806,
+ 0x3a6308,
+ 0x280587,
+ 0x317784,
+ 0x236203,
+ 0x2ad905,
+ 0x306047,
+ 0x28048b,
+ 0x207487,
+ 0x2bc9c8,
+ 0x2e62c7,
+ 0x370b06,
+ 0x279bc8,
+ 0x2a820b,
+ 0x21ff46,
+ 0x212309,
+ 0x2a8385,
+ 0x30a343,
+ 0x2cc906,
+ 0x28f088,
+ 0x213403,
+ 0x24f403,
+ 0x27e646,
+ 0x278cc6,
+ 0x35d10a,
+ 0x27a805,
+ 0x27accb,
+ 0x29da4b,
+ 0x23ef83,
+ 0x202843,
+ 0x2aec44,
+ 0x278a87,
+ 0x28f104,
+ 0x244504,
+ 0x2e6404,
+ 0x26e248,
+ 0x3b8588,
+ 0x3baf89,
+ 0x393188,
+ 0x2b9dc7,
+ 0x247846,
+ 0x2dc20f,
+ 0x2c4e06,
+ 0x2d1344,
+ 0x3b83ca,
+ 0x305f47,
+ 0x3b9606,
+ 0x28f589,
+ 0x3baf05,
+ 0x2076c5,
+ 0x3bb046,
+ 0x21b743,
+ 0x2ade49,
+ 0x21eec6,
+ 0x3afa89,
+ 0x382bc6,
+ 0x264305,
+ 0x2346c5,
+ 0x207343,
+ 0x278bc8,
+ 0x20d787,
+ 0x396784,
+ 0x247d08,
+ 0x2e1244,
+ 0x2f1006,
+ 0x2a8f86,
+ 0x23c346,
+ 0x2c8609,
+ 0x297645,
+ 0x3519c6,
+ 0x2582c9,
+ 0x2c41c6,
+ 0x26e2c6,
+ 0x387886,
+ 0x2160c5,
+ 0x2f5fc6,
+ 0x33d984,
+ 0x3b7705,
+ 0x2c0384,
+ 0x2b2246,
+ 0x3532c4,
+ 0x203c43,
+ 0x284745,
+ 0x2331c8,
+ 0x25e607,
+ 0x2b8209,
+ 0x284b48,
+ 0x297e11,
+ 0x32cd4a,
+ 0x2e2307,
+ 0x2e7246,
+ 0x2151c4,
+ 0x2c0488,
+ 0x22e448,
+ 0x297fca,
+ 0x2b708d,
+ 0x268686,
+ 0x245e06,
+ 0x285086,
+ 0x21ba47,
+ 0x2b1385,
+ 0x3912c7,
+ 0x247dc5,
+ 0x2ae704,
+ 0x2a6206,
+ 0x224047,
+ 0x2adb4d,
+ 0x26aa87,
+ 0x21f308,
+ 0x277309,
+ 0x20b206,
+ 0x28e8c5,
+ 0x22cb04,
+ 0x3600c6,
+ 0x3a3846,
+ 0x25dfc6,
+ 0x299348,
+ 0x215f83,
+ 0x208fc3,
+ 0x352105,
+ 0x277dc6,
+ 0x2abfc5,
+ 0x2a0c88,
+ 0x29c10a,
+ 0x282084,
+ 0x247e88,
+ 0x295f08,
+ 0x312647,
+ 0x377549,
+ 0x2bc6c8,
+ 0x286a87,
+ 0x2587c6,
+ 0x204f0a,
+ 0x360148,
+ 0x2f98c9,
+ 0x2a1288,
+ 0x221609,
+ 0x2e7107,
+ 0x2f2f05,
+ 0x26d886,
+ 0x2c1288,
+ 0x27e7c8,
+ 0x296088,
+ 0x2e24c8,
+ 0x29ccc5,
+ 0x208a84,
+ 0x20d488,
+ 0x23e2c4,
+ 0x3a2944,
+ 0x264305,
+ 0x2917c7,
+ 0x312249,
+ 0x208dc7,
+ 0x210cc5,
+ 0x274846,
+ 0x34f606,
+ 0x212444,
+ 0x2a05c6,
+ 0x24d744,
+ 0x278546,
+ 0x312006,
+ 0x213246,
+ 0x200645,
+ 0x2a0b47,
+ 0x203503,
+ 0x2079c9,
+ 0x3076c8,
+ 0x247d04,
+ 0x28690d,
+ 0x296ec8,
+ 0x2e3788,
+ 0x2f9846,
+ 0x300549,
+ 0x2cc849,
+ 0x3a3285,
+ 0x29c20a,
+ 0x27cf4a,
+ 0x29d74c,
+ 0x29d8c6,
+ 0x275446,
+ 0x2c4f86,
+ 0x2b4749,
+ 0x2b94c6,
+ 0x29fa86,
+ 0x33cd06,
+ 0x25dc08,
+ 0x274fc6,
+ 0x2ce80b,
+ 0x291945,
+ 0x21ba45,
+ 0x2756c5,
+ 0x352a46,
+ 0x204ec3,
+ 0x23c2c6,
+ 0x26aa07,
+ 0x2c0345,
+ 0x320585,
+ 0x379445,
+ 0x318446,
+ 0x31da84,
+ 0x31da86,
+ 0x292f49,
+ 0x3528cc,
+ 0x2ae448,
+ 0x239184,
+ 0x2f5c06,
+ 0x29c706,
+ 0x28f088,
+ 0x216f48,
+ 0x3527c9,
+ 0x37a687,
+ 0x2367c9,
+ 0x24cfc6,
+ 0x22e904,
+ 0x20ea44,
+ 0x280144,
+ 0x27e648,
+ 0x31208a,
+ 0x345bc6,
+ 0x353cc7,
+ 0x362c47,
+ 0x347d85,
+ 0x2a9684,
+ 0x28cd46,
+ 0x2b13c6,
+ 0x2336c3,
+ 0x307507,
+ 0x38d588,
+ 0x3a33ca,
+ 0x2cbb88,
+ 0x281f08,
+ 0x353305,
+ 0x339645,
+ 0x260e05,
+ 0x348146,
+ 0x3ad906,
+ 0x26c085,
+ 0x3b1889,
+ 0x2a948c,
+ 0x260ec7,
+ 0x298048,
+ 0x2e5c05,
+ 0x676384,
+ 0x320944,
+ 0x252c04,
+ 0x22df86,
+ 0x29eb0e,
+ 0x207747,
+ 0x21bc45,
+ 0x24440c,
+ 0x2e1107,
+ 0x223fc7,
+ 0x225109,
+ 0x217cc9,
+ 0x284c45,
+ 0x3076c8,
+ 0x215349,
+ 0x335c45,
+ 0x2c0288,
+ 0x2c2586,
+ 0x371446,
+ 0x2def04,
+ 0x2553c8,
+ 0x20b3c3,
+ 0x2af8c4,
+ 0x2ad985,
+ 0x3bab07,
+ 0x21c245,
+ 0x38bc09,
+ 0x28b30d,
+ 0x2a33c6,
+ 0x225fc4,
+ 0x2588c8,
+ 0x274a8a,
+ 0x2611c7,
+ 0x235d45,
+ 0x23b403,
+ 0x29dc0e,
+ 0x278ccc,
+ 0x2f5e07,
+ 0x29ecc7,
+ 0x200143,
+ 0x2b9505,
+ 0x252c05,
+ 0x298e88,
+ 0x295d49,
+ 0x239086,
+ 0x28f104,
+ 0x2e2246,
+ 0x27b5cb,
+ 0x2cc5cc,
+ 0x366d87,
+ 0x2d0305,
+ 0x3a1d48,
+ 0x2dac85,
+ 0x3b83c7,
+ 0x32cb87,
+ 0x247585,
+ 0x204ec3,
+ 0x26e584,
+ 0x21c685,
+ 0x2ac685,
+ 0x2ac686,
+ 0x292008,
+ 0x224047,
+ 0x37a286,
+ 0x26c486,
+ 0x3a2d06,
+ 0x268789,
+ 0x209387,
+ 0x25e286,
+ 0x2cc746,
+ 0x2731c6,
+ 0x2a7585,
+ 0x3b2b46,
+ 0x380145,
+ 0x329d88,
+ 0x29114b,
+ 0x28c346,
+ 0x362c84,
+ 0x2b4389,
+ 0x25da44,
+ 0x2c2508,
+ 0x30e2c7,
+ 0x281404,
+ 0x2bbd88,
+ 0x2c1684,
+ 0x2a75c4,
+ 0x286845,
+ 0x302986,
+ 0x26e187,
+ 0x203043,
+ 0x29d205,
+ 0x323284,
+ 0x349586,
+ 0x3a3308,
+ 0x38d2c5,
+ 0x290e09,
+ 0x222d05,
+ 0x2dbf88,
+ 0x215087,
+ 0x388588,
+ 0x2b8047,
+ 0x2fb609,
+ 0x264dc6,
+ 0x32bb46,
+ 0x28cac4,
+ 0x258705,
+ 0x2fce4c,
+ 0x2756c7,
+ 0x275fc7,
+ 0x362b08,
+ 0x2a33c6,
+ 0x26a944,
+ 0x328004,
+ 0x27fcc9,
+ 0x2c5086,
+ 0x298a07,
+ 0x208c04,
+ 0x23da46,
+ 0x33b785,
+ 0x2c88c7,
+ 0x2ce786,
+ 0x250e89,
+ 0x27cd87,
+ 0x262107,
+ 0x2a0106,
+ 0x23d985,
+ 0x27c548,
+ 0x21ed48,
+ 0x247a46,
+ 0x38d305,
+ 0x390586,
+ 0x2034c3,
+ 0x298d09,
+ 0x29d2ce,
+ 0x2b7d48,
+ 0x2e1348,
+ 0x24784b,
+ 0x291046,
+ 0x313104,
+ 0x2802c4,
+ 0x29d3ca,
+ 0x215907,
+ 0x25e345,
+ 0x212309,
+ 0x2bf685,
+ 0x3a2987,
+ 0x245c84,
+ 0x287087,
+ 0x2e40c8,
+ 0x2cd306,
+ 0x27b989,
+ 0x2bc7ca,
+ 0x215886,
+ 0x296a06,
+ 0x2aad05,
+ 0x37d085,
+ 0x282d07,
+ 0x244e48,
+ 0x33b6c8,
+ 0x3a4206,
+ 0x234745,
+ 0x31320e,
+ 0x2b3204,
+ 0x2479c5,
+ 0x2741c9,
+ 0x2dce48,
+ 0x28abc6,
+ 0x29af0c,
+ 0x29bd10,
+ 0x29e74f,
+ 0x29f7c8,
+ 0x300187,
+ 0x200645,
+ 0x262545,
+ 0x26e009,
+ 0x292909,
+ 0x241946,
+ 0x2442c7,
+ 0x2d0cc5,
+ 0x337b09,
+ 0x339386,
+ 0x2b930d,
+ 0x280009,
+ 0x244504,
+ 0x2b7ac8,
+ 0x20d549,
+ 0x345d86,
+ 0x274945,
+ 0x32bb46,
+ 0x317889,
+ 0x2f3c48,
+ 0x20dcc5,
+ 0x2553c4,
+ 0x29b0cb,
+ 0x345c45,
+ 0x29b206,
+ 0x280a06,
+ 0x265e46,
+ 0x276d4b,
+ 0x290f09,
+ 0x26c3c5,
+ 0x388347,
+ 0x32ccc6,
+ 0x334dc6,
+ 0x252988,
+ 0x302a89,
+ 0x21f0cc,
+ 0x305e48,
+ 0x309e46,
+ 0x322c03,
+ 0x2ba886,
+ 0x276b85,
+ 0x27b008,
+ 0x234146,
+ 0x2c8b08,
+ 0x248b45,
+ 0x279305,
+ 0x32eb08,
+ 0x332787,
+ 0x379ec7,
+ 0x224207,
+ 0x334c48,
+ 0x3002c8,
+ 0x2ad486,
+ 0x2b2087,
+ 0x23bb07,
+ 0x276a4a,
+ 0x201e03,
+ 0x352a46,
+ 0x2392c5,
+ 0x334f84,
+ 0x277309,
+ 0x2fb584,
+ 0x25e684,
+ 0x29c584,
+ 0x29eccb,
+ 0x20d6c7,
+ 0x313445,
+ 0x294cc8,
+ 0x274846,
+ 0x274848,
+ 0x27a746,
+ 0x28b085,
+ 0x28b645,
+ 0x28d886,
+ 0x28ee48,
+ 0x28f4c8,
+ 0x2774c6,
+ 0x294b0f,
+ 0x2987d0,
+ 0x3a6005,
+ 0x203503,
+ 0x22e9c5,
+ 0x30a4c8,
+ 0x292809,
+ 0x335d88,
+ 0x268608,
+ 0x2b8d48,
+ 0x20d787,
+ 0x274509,
+ 0x2c8d08,
+ 0x265304,
+ 0x29c408,
+ 0x2d9e89,
+ 0x2b27c7,
+ 0x299d44,
+ 0x208e88,
+ 0x2a090a,
+ 0x2e77c6,
+ 0x268686,
+ 0x226209,
+ 0x29bf47,
+ 0x2cba08,
+ 0x204848,
+ 0x2ddd88,
+ 0x35cc45,
+ 0x37e005,
+ 0x21ba45,
+ 0x252bc5,
+ 0x3b5987,
+ 0x204ec5,
+ 0x2c0345,
+ 0x313686,
+ 0x335cc7,
+ 0x2cd907,
+ 0x2a0c06,
+ 0x2d2245,
+ 0x29b206,
+ 0x27ba85,
+ 0x2b58c8,
+ 0x2f4284,
+ 0x2c4246,
+ 0x33b5c4,
+ 0x2b0f48,
+ 0x2c434a,
+ 0x2790cc,
+ 0x334685,
+ 0x21bb06,
+ 0x21f286,
+ 0x351fc6,
+ 0x309ec4,
+ 0x33ba45,
+ 0x27a587,
+ 0x29bfc9,
+ 0x2cb4c7,
+ 0x676384,
+ 0x676384,
+ 0x317605,
+ 0x37b944,
+ 0x29a8ca,
+ 0x2746c6,
+ 0x279e04,
+ 0x3b9585,
+ 0x37e405,
+ 0x2b12c4,
+ 0x280647,
+ 0x222c87,
+ 0x2cafc8,
+ 0x33de88,
+ 0x20dcc9,
+ 0x29cd88,
+ 0x29aa8b,
+ 0x2318c4,
+ 0x366885,
+ 0x27cc85,
+ 0x224189,
+ 0x302a89,
+ 0x2b4288,
+ 0x30e048,
+ 0x2d6604,
+ 0x29c745,
+ 0x217083,
+ 0x247bc5,
+ 0x351a46,
+ 0x295b8c,
+ 0x208b06,
+ 0x36c3c6,
+ 0x28ae45,
+ 0x3184c8,
+ 0x2b7ec6,
+ 0x2e73c6,
+ 0x268686,
+ 0x22920c,
+ 0x25e184,
+ 0x3a2e4a,
+ 0x28ad88,
+ 0x2959c7,
+ 0x323186,
+ 0x239147,
+ 0x2ec145,
+ 0x27eb46,
+ 0x34d406,
+ 0x35b847,
+ 0x25e6c4,
+ 0x2fe0c5,
+ 0x2741c4,
+ 0x2ae787,
+ 0x274408,
+ 0x2752ca,
+ 0x27d4c7,
+ 0x303407,
+ 0x300107,
+ 0x2dadc9,
+ 0x295b8a,
+ 0x21f083,
+ 0x25e5c5,
+ 0x213283,
+ 0x2e6449,
+ 0x33dc08,
+ 0x3709c7,
+ 0x335e89,
+ 0x21ee46,
+ 0x2b88c8,
+ 0x33a3c5,
+ 0x2db7ca,
+ 0x2d3549,
+ 0x2683c9,
+ 0x3b50c7,
+ 0x22e549,
+ 0x213148,
+ 0x35ba06,
+ 0x21bcc8,
+ 0x2160c7,
+ 0x2acc07,
+ 0x26ac87,
+ 0x2d0b48,
+ 0x2f5a86,
+ 0x2a06c5,
+ 0x27a587,
+ 0x296508,
+ 0x33b544,
+ 0x2dd244,
+ 0x28fe07,
+ 0x2ac387,
+ 0x2151ca,
+ 0x35b986,
+ 0x38c74a,
+ 0x2bf8c7,
+ 0x2b2fc7,
+ 0x246004,
+ 0x28aa44,
+ 0x2ce686,
+ 0x202d04,
+ 0x202d0c,
+ 0x3aff05,
+ 0x216d89,
+ 0x2d4f04,
+ 0x2b1385,
+ 0x274a08,
+ 0x279fc5,
+ 0x374246,
+ 0x223ec4,
+ 0x293c4a,
+ 0x2b00c6,
+ 0x29ba8a,
+ 0x22b447,
+ 0x21ac45,
+ 0x21b745,
+ 0x347dca,
+ 0x28efc5,
+ 0x26dfc6,
+ 0x23e2c4,
+ 0x2aedc6,
+ 0x282dc5,
+ 0x234206,
+ 0x2e604c,
+ 0x2cb14a,
+ 0x2587c4,
+ 0x247846,
+ 0x29bf47,
+ 0x2cf984,
+ 0x25dc08,
+ 0x393006,
+ 0x313089,
+ 0x2c7549,
+ 0x3164c9,
+ 0x26cb06,
+ 0x2161c6,
+ 0x21be07,
+ 0x3b17c8,
+ 0x215fc9,
+ 0x20d6c7,
+ 0x294e46,
+ 0x34de87,
+ 0x284f45,
+ 0x2b3204,
+ 0x21b9c7,
+ 0x23bcc5,
+ 0x286785,
+ 0x226987,
+ 0x247448,
+ 0x3a1cc6,
+ 0x29738d,
+ 0x29908f,
+ 0x29da4d,
+ 0x210d04,
+ 0x2332c6,
+ 0x2d3c08,
+ 0x33ccc5,
+ 0x276c08,
+ 0x24560a,
+ 0x244504,
+ 0x27bb46,
+ 0x26f3c7,
+ 0x286007,
+ 0x2a18c9,
+ 0x21bc85,
+ 0x2b12c4,
+ 0x2b330a,
+ 0x2bc289,
+ 0x22e647,
+ 0x265706,
+ 0x345d86,
+ 0x29c686,
+ 0x365b86,
+ 0x2d320f,
+ 0x2d3ac9,
+ 0x274fc6,
+ 0x22e346,
+ 0x31a809,
+ 0x2b2187,
+ 0x217443,
+ 0x229386,
+ 0x216a43,
+ 0x2e5788,
+ 0x34dcc7,
+ 0x29f9c9,
+ 0x2a8e08,
+ 0x37a008,
+ 0x203c86,
+ 0x208a49,
+ 0x242785,
+ 0x2b2244,
+ 0x2a99c7,
+ 0x2b47c5,
+ 0x210d04,
+ 0x313508,
+ 0x215bc4,
+ 0x2b1ec7,
+ 0x3545c6,
+ 0x357e85,
+ 0x2a1288,
+ 0x345c4b,
+ 0x331dc7,
+ 0x348046,
+ 0x2c4e84,
+ 0x319586,
+ 0x264305,
+ 0x23bcc5,
+ 0x27c2c9,
+ 0x280249,
+ 0x2acc44,
+ 0x2acc85,
+ 0x247885,
+ 0x2db646,
+ 0x3077c8,
+ 0x2bf046,
+ 0x38d3cb,
+ 0x35ab4a,
+ 0x2b0e85,
+ 0x28b6c6,
+ 0x396485,
+ 0x2cf485,
+ 0x2a54c7,
+ 0x352cc8,
+ 0x2367c4,
+ 0x25f806,
+ 0x28f546,
+ 0x213307,
+ 0x30a304,
+ 0x27ae86,
+ 0x237cc5,
+ 0x237cc9,
+ 0x2163c4,
+ 0x2a9809,
+ 0x2774c6,
+ 0x2c0c08,
+ 0x247885,
+ 0x362d45,
+ 0x234206,
+ 0x21efc9,
+ 0x217cc9,
+ 0x36c446,
+ 0x2dcf48,
+ 0x244508,
+ 0x396444,
+ 0x2b3644,
+ 0x2b3648,
+ 0x326dc8,
+ 0x2368c9,
+ 0x3519c6,
+ 0x268686,
+ 0x32224d,
+ 0x2e3306,
+ 0x306c89,
+ 0x315fc5,
+ 0x3bb046,
+ 0x391408,
+ 0x31d9c5,
+ 0x23bb44,
+ 0x264305,
+ 0x27fb48,
+ 0x29a689,
+ 0x274284,
+ 0x353146,
+ 0x279e8a,
+ 0x2f5d08,
+ 0x215349,
+ 0x38174a,
+ 0x335e06,
+ 0x299248,
+ 0x3b8185,
+ 0x2e0908,
+ 0x2b8145,
+ 0x21ed09,
+ 0x36a349,
+ 0x20d8c2,
+ 0x2a8385,
+ 0x269746,
+ 0x277407,
+ 0x3b05c5,
+ 0x308986,
+ 0x301448,
+ 0x2a33c6,
+ 0x2b6b09,
+ 0x2760c6,
+ 0x252808,
+ 0x2a89c5,
+ 0x23ebc6,
+ 0x33da88,
+ 0x27e648,
+ 0x2e7008,
+ 0x345f08,
+ 0x3b2b44,
+ 0x22a183,
+ 0x2b6d44,
+ 0x27d6c6,
+ 0x284f84,
+ 0x2e1287,
+ 0x2e72c9,
+ 0x2c45c5,
+ 0x204846,
+ 0x229386,
+ 0x291e4b,
+ 0x2b0dc6,
+ 0x3b8cc6,
+ 0x2c8488,
+ 0x3204c6,
+ 0x21aa43,
+ 0x3af743,
+ 0x2b3204,
+ 0x22f485,
+ 0x2b1807,
+ 0x274408,
+ 0x27440f,
+ 0x27a48b,
+ 0x3075c8,
+ 0x3531c6,
+ 0x3078ce,
+ 0x2319c3,
+ 0x2b1784,
+ 0x2b0d45,
+ 0x2b1146,
+ 0x28ce4b,
+ 0x291886,
+ 0x21b249,
+ 0x357e85,
+ 0x3899c8,
+ 0x20c688,
+ 0x217b8c,
+ 0x29ed06,
+ 0x247c06,
+ 0x2d7985,
+ 0x287b88,
+ 0x2790c5,
+ 0x343088,
+ 0x29b28a,
+ 0x29de89,
+ 0x676384,
+ 0x38a099c2,
+ 0x16d208,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x209703,
+ 0x205503,
+ 0x200983,
+ 0x38d2c3,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x3b1384,
+ 0x205503,
+ 0x200983,
+ 0x20cf83,
+ 0x25ef44,
+ 0x2a84c3,
+ 0x235ac4,
+ 0x232403,
+ 0x2d5f04,
+ 0x2e9dc3,
+ 0x3b0887,
+ 0x209703,
+ 0x204e83,
+ 0x28b148,
+ 0x200983,
+ 0x2ae1cb,
+ 0x2ec883,
+ 0x264a86,
+ 0x20b0c2,
+ 0x22d54b,
+ 0x232403,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x200983,
+ 0x26be43,
+ 0x204783,
+ 0x205702,
+ 0x16d208,
+ 0x325f45,
+ 0x23bd48,
+ 0x2df7c8,
+ 0x2099c2,
+ 0x37ab45,
+ 0x38c347,
+ 0x2007c2,
+ 0x240d87,
+ 0x20d882,
+ 0x248707,
+ 0x32c589,
+ 0x3b7d48,
+ 0x2ddc09,
+ 0x23e202,
+ 0x263647,
+ 0x36c1c4,
+ 0x38c407,
+ 0x35aa47,
+ 0x2bbbc2,
+ 0x209703,
+ 0x20e602,
+ 0x200c82,
+ 0x200442,
+ 0x2013c2,
+ 0x205ec2,
+ 0x209842,
+ 0x2a80c5,
+ 0x320885,
+ 0x99c2,
+ 0x32403,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x209703,
+ 0x205503,
+ 0x200983,
+ 0x12083,
+ 0x1ec1,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x3b1384,
+ 0x244183,
+ 0x205503,
+ 0x200983,
+ 0x219503,
+ 0x3b819d06,
+ 0x13f443,
+ 0x7df85,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x2099c2,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x4a82,
+ 0x16d208,
+ 0x44e04,
+ 0xdb085,
+ 0x205702,
+ 0x26f544,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x2358c3,
+ 0x2a9305,
+ 0x244183,
+ 0x206343,
+ 0x205503,
+ 0x21c2c3,
+ 0x200983,
+ 0x214843,
+ 0x2387c3,
+ 0x25ed03,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x2099c2,
+ 0x200983,
+ 0x16d208,
+ 0x2e9dc3,
+ 0x16d208,
+ 0x200c03,
+ 0x2a84c3,
+ 0x22fd84,
+ 0x232403,
+ 0x2e9dc3,
+ 0x202bc2,
+ 0x209703,
+ 0x205503,
+ 0x200983,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x202bc2,
+ 0x227f83,
+ 0x205503,
+ 0x200983,
+ 0x2e87c3,
+ 0x214843,
+ 0x205702,
+ 0x2099c2,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x264a85,
+ 0xe4886,
+ 0x25ef44,
+ 0x20b0c2,
+ 0x16d208,
+ 0x205702,
+ 0x1d848,
+ 0x1b4183,
+ 0x2099c2,
+ 0x3fc91386,
+ 0x1320c4,
+ 0xd95cb,
+ 0x13eec6,
+ 0x9807,
+ 0x232403,
+ 0x47208,
+ 0x2e9dc3,
+ 0xb9b45,
+ 0x13fb84,
+ 0x260f83,
+ 0x4ce87,
+ 0xd78c4,
+ 0x205503,
+ 0x7f1c4,
+ 0x200983,
+ 0x2ed844,
+ 0xd9388,
+ 0x125c86,
+ 0x82b48,
+ 0x6cf05,
+ 0x1fa49,
+ 0x2099c2,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x209703,
+ 0x204e83,
+ 0x200983,
+ 0x2ec883,
+ 0x20b0c2,
+ 0x16d208,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x24a5c3,
+ 0x211cc4,
+ 0x205503,
+ 0x200983,
+ 0x2a84c3,
+ 0x232403,
+ 0x2d5f04,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x264a86,
+ 0x232403,
+ 0x2e9dc3,
+ 0x176e43,
+ 0x200983,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x9807,
+ 0x16d208,
+ 0x2e9dc3,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x426a84c3,
+ 0x232403,
+ 0x205503,
+ 0x200983,
+ 0x16d208,
+ 0x205702,
+ 0x2099c2,
+ 0x2a84c3,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200442,
+ 0x200983,
+ 0x316e87,
+ 0x33e6cb,
+ 0x22d703,
+ 0x241608,
+ 0x3b1547,
+ 0x20a7c6,
+ 0x2c2c45,
+ 0x372349,
+ 0x209488,
+ 0x360d49,
+ 0x38f790,
+ 0x360d4b,
+ 0x39e189,
+ 0x201b03,
+ 0x20fb89,
+ 0x230f06,
+ 0x230f0c,
+ 0x326008,
+ 0x3b4f08,
+ 0x34af09,
+ 0x2905ce,
+ 0x2dd9cb,
+ 0x2f364c,
+ 0x2030c3,
+ 0x263d0c,
+ 0x207089,
+ 0x2fee47,
+ 0x23234c,
+ 0x3a89ca,
+ 0x2030c4,
+ 0x2d084d,
+ 0x263bc8,
+ 0x20cf8d,
+ 0x273846,
+ 0x28decb,
+ 0x283349,
+ 0x3b8b87,
+ 0x32fd06,
+ 0x330f89,
+ 0x351b8a,
+ 0x30b148,
+ 0x2ec484,
+ 0x2fba07,
+ 0x34f707,
+ 0x2bab04,
+ 0x37b5c4,
+ 0x22a749,
+ 0x281d49,
+ 0x22ae48,
+ 0x210785,
+ 0x3b4005,
+ 0x20db86,
+ 0x2d0709,
+ 0x24588d,
+ 0x2f30c8,
+ 0x20da87,
+ 0x2c2cc8,
+ 0x2e1886,
+ 0x38b6c4,
+ 0x3523c5,
+ 0x202986,
+ 0x204b04,
+ 0x206f87,
+ 0x20b8ca,
+ 0x212244,
+ 0x2157c6,
+ 0x216a09,
+ 0x216a0f,
+ 0x21788d,
+ 0x2184c6,
+ 0x21d450,
+ 0x21d846,
+ 0x21df87,
+ 0x21e4c7,
+ 0x21e4cf,
+ 0x21f6c9,
+ 0x224c46,
+ 0x225347,
+ 0x225348,
+ 0x225809,
+ 0x246088,
+ 0x2e52c7,
+ 0x20cc83,
+ 0x372986,
+ 0x3ba948,
+ 0x29088a,
+ 0x213c09,
+ 0x2095c3,
+ 0x38c246,
+ 0x25f64a,
+ 0x29e587,
+ 0x2fec8a,
+ 0x313d4e,
+ 0x21f806,
+ 0x2a8587,
+ 0x20e006,
+ 0x207146,
+ 0x37de0b,
+ 0x20414a,
+ 0x317f0d,
+ 0x216287,
+ 0x33ce88,
+ 0x33ce89,
+ 0x33ce8f,
+ 0x2b838c,
+ 0x27b289,
+ 0x2e6a0e,
+ 0x3b098a,
+ 0x2ba246,
+ 0x2f4586,
+ 0x30b58c,
+ 0x30ce8c,
+ 0x30dc08,
+ 0x3439c7,
+ 0x2b8c45,
+ 0x351e04,
+ 0x33c90e,
+ 0x228d04,
+ 0x351747,
+ 0x26030a,
+ 0x362554,
+ 0x36dd8f,
+ 0x21e688,
+ 0x372848,
+ 0x35040d,
+ 0x35040e,
+ 0x376ec9,
+ 0x3a8ec8,
+ 0x3a8ecf,
+ 0x23204c,
+ 0x23204f,
+ 0x233007,
+ 0x236dca,
+ 0x2435cb,
+ 0x238508,
+ 0x239cc7,
+ 0x3690cd,
+ 0x250406,
+ 0x2d0a06,
+ 0x23c149,
+ 0x394648,
+ 0x242088,
+ 0x24208e,
+ 0x2b5007,
+ 0x243885,
+ 0x244bc5,
+ 0x2063c4,
+ 0x20aa86,
+ 0x22ad48,
+ 0x202203,
+ 0x2ca10e,
+ 0x369488,
+ 0x2a2fcb,
+ 0x200dc7,
+ 0x3a4045,
+ 0x22e206,
+ 0x2aa0c7,
+ 0x333d08,
+ 0x26cd09,
+ 0x292e45,
+ 0x284788,
+ 0x212c06,
+ 0x38ad4a,
+ 0x33c809,
+ 0x232409,
+ 0x23240b,
+ 0x38dc48,
+ 0x2ba9c9,
+ 0x210846,
+ 0x22eb8a,
+ 0x2dc80a,
+ 0x236fcc,
+ 0x3a6687,
+ 0x32c38a,
+ 0x26ea8b,
+ 0x26ea99,
+ 0x3b6a88,
+ 0x264b05,
+ 0x2c6086,
+ 0x211e49,
+ 0x390746,
+ 0x28550a,
+ 0x209686,
+ 0x202644,
+ 0x2c620d,
+ 0x202647,
+ 0x211149,
+ 0x246385,
+ 0x2464c8,
+ 0x246fc9,
+ 0x247784,
+ 0x248387,
+ 0x248388,
+ 0x248c87,
+ 0x261908,
+ 0x24d487,
+ 0x26c645,
+ 0x25488c,
+ 0x2550c9,
+ 0x2bc00a,
+ 0x3937c9,
+ 0x20fc89,
+ 0x275a0c,
+ 0x25774b,
+ 0x257ec8,
+ 0x259048,
+ 0x25c404,
+ 0x2810c8,
+ 0x283c89,
+ 0x3a8a87,
+ 0x216c46,
+ 0x2835c7,
+ 0x2dcac9,
+ 0x26e6cb,
+ 0x319407,
+ 0x200a07,
+ 0x22b587,
+ 0x20cf04,
+ 0x20cf05,
+ 0x29a545,
+ 0x341c0b,
+ 0x39c644,
+ 0x3b2988,
+ 0x26614a,
+ 0x212cc7,
+ 0x2f6707,
+ 0x28bed2,
+ 0x278446,
+ 0x22f706,
+ 0x33c24e,
+ 0x27aa06,
+ 0x292588,
+ 0x29374f,
+ 0x20d348,
+ 0x37f308,
+ 0x30eaca,
+ 0x30ead1,
+ 0x2a0e8e,
+ 0x24dd0a,
+ 0x24dd0c,
+ 0x21e307,
+ 0x3a90d0,
+ 0x200408,
+ 0x2a1085,
+ 0x2aa4ca,
+ 0x204b4c,
+ 0x29518d,
+ 0x2f7e46,
+ 0x2f7e47,
+ 0x2f7e4c,
+ 0x300e4c,
+ 0x3292cc,
+ 0x2873cb,
+ 0x284184,
+ 0x226384,
+ 0x346d89,
+ 0x3050c7,
+ 0x225e49,
+ 0x37e909,
+ 0x39f1c7,
+ 0x3a8846,
+ 0x3a8849,
+ 0x2ad1c3,
+ 0x21c74a,
+ 0x31a287,
+ 0x33eb8b,
+ 0x317d8a,
+ 0x248844,
+ 0x22ba46,
+ 0x27d749,
+ 0x202b84,
+ 0x3affca,
+ 0x348345,
+ 0x2bdd45,
+ 0x2bdd4d,
+ 0x2be08e,
+ 0x28cc05,
+ 0x323906,
+ 0x264687,
+ 0x3870ca,
+ 0x39b686,
+ 0x3616c4,
+ 0x36d747,
+ 0x2c3f0b,
+ 0x2e1947,
+ 0x33fa84,
+ 0x24bb86,
+ 0x24bb8d,
+ 0x21e1cc,
+ 0x2053c6,
+ 0x2f32ca,
+ 0x2e03c6,
+ 0x2ed0c8,
+ 0x377c47,
+ 0x23568a,
+ 0x23d6c6,
+ 0x216183,
+ 0x391586,
+ 0x3ba7c8,
+ 0x29ac8a,
+ 0x275807,
+ 0x275808,
+ 0x281684,
+ 0x24b687,
+ 0x279348,
+ 0x2bd748,
+ 0x27c0c8,
+ 0x38c94a,
+ 0x2da905,
+ 0x2cf0c7,
+ 0x24db53,
+ 0x31e806,
+ 0x266348,
+ 0x221a09,
+ 0x240c48,
+ 0x203d0b,
+ 0x2cb608,
+ 0x2a5f44,
+ 0x32ec06,
+ 0x30bac6,
+ 0x3027c9,
+ 0x2c3dc7,
+ 0x254988,
+ 0x28af06,
+ 0x226884,
+ 0x2cb8c5,
+ 0x2c55c8,
+ 0x2c5bca,
+ 0x2c5e88,
+ 0x2cbf86,
+ 0x29944a,
+ 0x2ac808,
+ 0x2cf788,
+ 0x2d18c8,
+ 0x2d1f06,
+ 0x2d3e06,
+ 0x38e18c,
+ 0x2d43d0,
+ 0x27d2c5,
+ 0x20d148,
+ 0x301950,
+ 0x20d150,
+ 0x38f60e,
+ 0x38de0e,
+ 0x38de14,
+ 0x32fe8f,
+ 0x330246,
+ 0x332d51,
+ 0x33d213,
+ 0x33d688,
+ 0x3b3445,
+ 0x241b48,
+ 0x386245,
+ 0x329a8c,
+ 0x291549,
+ 0x228b49,
+ 0x3201c7,
+ 0x236b89,
+ 0x380887,
+ 0x2f6146,
+ 0x3521c7,
+ 0x269c45,
+ 0x2120c3,
+ 0x2023c9,
+ 0x221cc9,
+ 0x376e43,
+ 0x27f384,
+ 0x32a20d,
+ 0x206bcf,
+ 0x2268c5,
+ 0x329986,
+ 0x211407,
+ 0x325d87,
+ 0x288786,
+ 0x28878b,
+ 0x2a2405,
+ 0x256786,
+ 0x2f6c07,
+ 0x24e489,
+ 0x3a7486,
+ 0x21d305,
+ 0x22854b,
+ 0x235946,
+ 0x249245,
+ 0x357988,
+ 0x306a88,
+ 0x2c8f0c,
+ 0x2c8f10,
+ 0x2d2409,
+ 0x2ffd07,
+ 0x32840b,
+ 0x2e3b86,
+ 0x2e518a,
+ 0x2e754b,
+ 0x2e794a,
+ 0x2e7bc6,
+ 0x2e8685,
+ 0x319fc6,
+ 0x36c808,
+ 0x32028a,
+ 0x35009c,
+ 0x2ec94c,
+ 0x2ecc48,
+ 0x264a85,
+ 0x34ea07,
+ 0x26bec6,
+ 0x274e05,
+ 0x21afc6,
+ 0x288948,
+ 0x2bc507,
+ 0x2904c8,
+ 0x2a868a,
+ 0x33130c,
+ 0x331589,
+ 0x38b847,
+ 0x2198c4,
+ 0x244c86,
+ 0x37ee8a,
+ 0x37ea05,
+ 0x209f8c,
+ 0x20e648,
+ 0x367388,
+ 0x21a00c,
+ 0x22550c,
+ 0x225a09,
+ 0x225c47,
+ 0x231d4c,
+ 0x23aa84,
+ 0x23c60a,
+ 0x35e6cc,
+ 0x26b28b,
+ 0x242b8b,
+ 0x2efec6,
+ 0x24a107,
+ 0x24c687,
+ 0x3a930f,
+ 0x2f8a51,
+ 0x2d8592,
+ 0x24c68d,
+ 0x24c68e,
+ 0x24c9ce,
+ 0x330048,
+ 0x330052,
+ 0x24fbc8,
+ 0x3b1187,
+ 0x24aeca,
+ 0x3681c8,
+ 0x27a9c5,
+ 0x3b57ca,
+ 0x21dd87,
+ 0x2e36c4,
+ 0x201543,
+ 0x2a57c5,
+ 0x30ed47,
+ 0x2f5007,
+ 0x29538e,
+ 0x3382cd,
+ 0x33af89,
+ 0x222705,
+ 0x35c3c3,
+ 0x3a78c6,
+ 0x36e745,
+ 0x2a3208,
+ 0x205b49,
+ 0x2983c5,
+ 0x3692cf,
+ 0x2d96c7,
+ 0x372285,
+ 0x20178a,
+ 0x2a36c6,
+ 0x2ed249,
+ 0x396ccc,
+ 0x2f51c9,
+ 0x3abdc6,
+ 0x265f4c,
+ 0x322d06,
+ 0x2f7588,
+ 0x2f7786,
+ 0x3b6c06,
+ 0x3b96c4,
+ 0x258243,
+ 0x2a1fca,
+ 0x327191,
+ 0x3a9c0a,
+ 0x27ee85,
+ 0x265047,
+ 0x252207,
+ 0x279444,
+ 0x27944b,
+ 0x3b7bc8,
+ 0x2b7bc6,
+ 0x362b85,
+ 0x38b044,
+ 0x255f09,
+ 0x31ad84,
+ 0x254f07,
+ 0x32f345,
+ 0x32f347,
+ 0x33c485,
+ 0x2a8183,
+ 0x3b1048,
+ 0x33b80a,
+ 0x203043,
+ 0x325f8a,
+ 0x203046,
+ 0x36904f,
+ 0x2b4f89,
+ 0x2ca090,
+ 0x2f1548,
+ 0x2ccc89,
+ 0x2971c7,
+ 0x24bb0f,
+ 0x336244,
+ 0x2d5f84,
+ 0x21d6c6,
+ 0x22f246,
+ 0x25708a,
+ 0x23cc46,
+ 0x2f58c7,
+ 0x300788,
+ 0x300987,
+ 0x301207,
+ 0x30370a,
+ 0x30534b,
+ 0x2f3dc5,
+ 0x2d81c8,
+ 0x21bb03,
+ 0x23800c,
+ 0x36f78f,
+ 0x2b8a4d,
+ 0x2a7147,
+ 0x33b0c9,
+ 0x22bcc7,
+ 0x24a2c8,
+ 0x36274c,
+ 0x2a5e48,
+ 0x250bc8,
+ 0x318ace,
+ 0x32d354,
+ 0x32d864,
+ 0x3475ca,
+ 0x36148b,
+ 0x380944,
+ 0x380949,
+ 0x27bbc8,
+ 0x245345,
+ 0x201d0a,
+ 0x3696c7,
+ 0x26f744,
+ 0x38d2c3,
+ 0x2a84c3,
+ 0x235ac4,
+ 0x232403,
+ 0x2e9dc3,
+ 0x3b1384,
+ 0x244183,
+ 0x209703,
+ 0x2d43c6,
+ 0x211cc4,
+ 0x205503,
+ 0x200983,
+ 0x201303,
+ 0x205702,
+ 0x38d2c3,
+ 0x2099c2,
+ 0x2a84c3,
+ 0x235ac4,
+ 0x232403,
+ 0x2e9dc3,
+ 0x244183,
+ 0x2d43c6,
+ 0x205503,
+ 0x200983,
+ 0x16d208,
+ 0x2a84c3,
+ 0x232403,
+ 0x2163c3,
+ 0x205503,
+ 0x200983,
+ 0x16d208,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x209703,
+ 0x211cc4,
+ 0x205503,
+ 0x200983,
+ 0x205702,
+ 0x2bb143,
+ 0x2099c2,
+ 0x232403,
+ 0x2e9dc3,
+ 0x209703,
+ 0x205503,
+ 0x200983,
+ 0x201ec2,
+ 0x219f02,
+ 0x2099c2,
+ 0x2a84c3,
+ 0x202242,
+ 0x201fc2,
+ 0x3b1384,
+ 0x210444,
+ 0x227382,
+ 0x211cc4,
+ 0x200442,
+ 0x200983,
+ 0x201303,
+ 0x2efec6,
+ 0x212982,
+ 0x202dc2,
+ 0x222f02,
+ 0x44e0d343,
+ 0x4521e303,
+ 0x52d46,
+ 0x52d46,
+ 0x25ef44,
+ 0x204e83,
+ 0x142abca,
+ 0x12778c,
+ 0x102cc,
+ 0x7dd8d,
+ 0x129845,
+ 0x21347,
+ 0x18648,
+ 0x1b887,
+ 0x20348,
+ 0x19d4ca,
+ 0x45ed6a45,
+ 0x12b809,
+ 0xaf848,
+ 0x4a70a,
+ 0x8a64e,
+ 0x1440a4b,
+ 0x1320c4,
+ 0x77848,
+ 0x68bc8,
+ 0x38f47,
+ 0x12807,
+ 0x4efc9,
+ 0x2c07,
+ 0xd4ac8,
+ 0x1318c9,
+ 0x3adc5,
+ 0x124d4e,
+ 0xa8a0d,
+ 0x9688,
+ 0x4622a586,
+ 0x46c2a588,
+ 0x70cc8,
+ 0x117090,
+ 0x5f347,
+ 0x601c7,
+ 0x64547,
+ 0x69447,
+ 0xdb42,
+ 0x190bc7,
+ 0x430c,
+ 0x35fc7,
+ 0xa4246,
+ 0xa4909,
+ 0xa6388,
+ 0x17f42,
+ 0x1fc2,
+ 0xb8fcb,
+ 0x7f247,
+ 0x11809,
+ 0xbb9c9,
+ 0x17e248,
+ 0xafd42,
+ 0x113a49,
+ 0xcdf8a,
+ 0xc9e09,
+ 0xd6fc9,
+ 0xd7ac8,
+ 0xd8a47,
+ 0xda889,
+ 0xde345,
+ 0xde6d0,
+ 0x175b86,
+ 0x192345,
+ 0x5e98d,
+ 0xf986,
+ 0xe9187,
+ 0xed858,
+ 0x1b1a48,
+ 0xb4c8a,
+ 0x1c42,
+ 0x52f4d,
+ 0x27c2,
+ 0x5d306,
+ 0x8d108,
+ 0x86ec8,
+ 0x16d0c9,
+ 0x55b08,
+ 0x5fb4e,
+ 0x1a78c7,
+ 0x19d0d,
+ 0xf2d05,
+ 0x190948,
+ 0x194448,
+ 0xfacc6,
+ 0xc2,
+ 0x125c86,
+ 0x7b02,
+ 0x341,
+ 0x57a07,
+ 0xc8e83,
+ 0x466ee0c4,
+ 0x46a94443,
+ 0x141,
+ 0x10986,
+ 0x141,
+ 0x1,
+ 0x10986,
+ 0xc8e83,
+ 0x1596bc5,
+ 0x2030c4,
+ 0x2a84c3,
+ 0x249944,
+ 0x3b1384,
+ 0x205503,
+ 0x2218c5,
+ 0x219503,
+ 0x23e743,
+ 0x373605,
+ 0x25ed03,
+ 0x47ea84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x200041,
+ 0x209703,
+ 0x210444,
+ 0x211cc4,
+ 0x205503,
+ 0x200983,
+ 0x214843,
+ 0x16d208,
+ 0x205702,
+ 0x38d2c3,
+ 0x2099c2,
+ 0x2a84c3,
+ 0x232403,
+ 0x2163c3,
+ 0x201fc2,
+ 0x3b1384,
+ 0x244183,
+ 0x209703,
+ 0x205503,
+ 0x204e83,
+ 0x200983,
+ 0x25ed03,
+ 0x16d208,
+ 0x36f502,
+ 0x99c2,
+ 0x1456108,
+ 0x100b4e,
+ 0x48e016c2,
+ 0x31a448,
+ 0x234386,
+ 0x209cc6,
+ 0x233d07,
+ 0x4920c202,
+ 0x49768ec8,
+ 0x20884a,
+ 0x25cc88,
+ 0x200242,
+ 0x31a0c9,
+ 0x2f3e07,
+ 0x216bc6,
+ 0x3b0d89,
+ 0x2cf204,
+ 0x20a6c6,
+ 0x2dbcc4,
+ 0x26ffc4,
+ 0x2544c9,
+ 0x326686,
+ 0x320945,
+ 0x22c445,
+ 0x384e07,
+ 0x2bfb47,
+ 0x28fa44,
+ 0x233f46,
+ 0x2fb005,
+ 0x2fde45,
+ 0x3963c5,
+ 0x3b3dc7,
+ 0x200c05,
+ 0x314b49,
+ 0x312945,
+ 0x333e44,
+ 0x39b5c7,
+ 0x31974e,
+ 0x32e5c9,
+ 0x33c109,
+ 0x3a64c6,
+ 0x23d408,
+ 0x26d98b,
+ 0x2aeecc,
+ 0x37f806,
+ 0x2dd887,
+ 0x20a305,
+ 0x37b5ca,
+ 0x22af49,
+ 0x20bf49,
+ 0x24ff86,
+ 0x2f69c5,
+ 0x27ce45,
+ 0x3490c9,
+ 0x39654b,
+ 0x273346,
+ 0x33a786,
+ 0x202504,
+ 0x28bb86,
+ 0x243908,
+ 0x3ba646,
+ 0x214386,
+ 0x207c08,
+ 0x20bb47,
+ 0x20bd09,
+ 0x20c585,
+ 0x16d208,
+ 0x212784,
+ 0x3ada04,
+ 0x283785,
+ 0x399a49,
+ 0x220f07,
+ 0x220f0b,
+ 0x22394a,
+ 0x227a45,
+ 0x49a08d42,
+ 0x33ea47,
+ 0x49e28908,
+ 0x2afb87,
+ 0x350e85,
+ 0x20c1ca,
+ 0x99c2,
+ 0x34dfcb,
+ 0x24d5ca,
+ 0x221bc6,
+ 0x282bc3,
+ 0x28e34d,
+ 0x3492cc,
+ 0x35084d,
+ 0x245c45,
+ 0x32ae05,
+ 0x202247,
+ 0x3aba49,
+ 0x208746,
+ 0x23cac5,
+ 0x2d29c8,
+ 0x28ba83,
+ 0x2dfac8,
+ 0x28ba88,
+ 0x2c3747,
+ 0x309708,
+ 0x3a7209,
+ 0x2cc447,
+ 0x33e247,
+ 0x396a48,
+ 0x251f44,
+ 0x251f47,
+ 0x273748,
+ 0x3a3ac6,
+ 0x205f4f,
+ 0x211a07,
+ 0x2e5446,
+ 0x225d85,
+ 0x223083,
+ 0x371847,
+ 0x36c043,
+ 0x248e46,
+ 0x24aa86,
+ 0x24b286,
+ 0x290c05,
+ 0x261903,
+ 0x388208,
+ 0x36f009,
+ 0x38224b,
+ 0x24b408,
+ 0x24d145,
+ 0x24f605,
+ 0x4a248902,
+ 0x352289,
+ 0x3b1407,
+ 0x256805,
+ 0x2543c7,
+ 0x2559c6,
+ 0x365a45,
+ 0x36e58b,
+ 0x257ec4,
+ 0x25c845,
+ 0x25c987,
+ 0x272cc6,
+ 0x273105,
+ 0x2812c7,
+ 0x281a07,
+ 0x2cd884,
+ 0x289c0a,
+ 0x28a0c8,
+ 0x3b8209,
+ 0x241e85,
+ 0x207886,
+ 0x243aca,
+ 0x22c346,
+ 0x261e07,
+ 0x3b7ecd,
+ 0x29c809,
+ 0x38d185,
+ 0x314187,
+ 0x332288,
+ 0x33d848,
+ 0x3b3107,
+ 0x379d86,
+ 0x215dc7,
+ 0x249f43,
+ 0x341c04,
+ 0x363485,
+ 0x392707,
+ 0x395dc9,
+ 0x22be48,
+ 0x344c45,
+ 0x23cd84,
+ 0x246245,
+ 0x24b80d,
+ 0x200f82,
+ 0x373746,
+ 0x25d246,
+ 0x2c578a,
+ 0x376546,
+ 0x37edc5,
+ 0x33df85,
+ 0x33df87,
+ 0x38ab8c,
+ 0x270b4a,
+ 0x28b846,
+ 0x2b9645,
+ 0x28b9c6,
+ 0x28bd07,
+ 0x28e186,
+ 0x290b0c,
+ 0x3b0ec9,
+ 0x4a610e07,
+ 0x293b05,
+ 0x293b06,
+ 0x293ec8,
+ 0x23b705,
+ 0x2a2c85,
+ 0x2a3848,
+ 0x2a3a4a,
+ 0x4aa4ecc2,
+ 0x4ae0ee02,
+ 0x2e6705,
+ 0x284f83,
+ 0x3adf08,
+ 0x204043,
+ 0x2a3cc4,
+ 0x2ed38b,
+ 0x26dd48,
+ 0x2e4d48,
+ 0x4b349909,
+ 0x2a7dc9,
+ 0x2a8906,
+ 0x2a9d48,
+ 0x2a9f49,
+ 0x2aab46,
+ 0x2aacc5,
+ 0x3843c6,
+ 0x2ab5c9,
+ 0x331f47,
+ 0x23ea86,
+ 0x233747,
+ 0x2085c7,
+ 0x32c8c4,
+ 0x4b7b1d49,
+ 0x2cab88,
+ 0x368dc8,
+ 0x383447,
+ 0x2c5246,
+ 0x226ac9,
+ 0x209c87,
+ 0x32e90a,
+ 0x38c588,
+ 0x3af5c7,
+ 0x3b9786,
+ 0x24f38a,
+ 0x262708,
+ 0x2dccc5,
+ 0x226645,
+ 0x2ee487,
+ 0x2f7349,
+ 0x36510b,
+ 0x315008,
+ 0x3129c9,
+ 0x24bfc7,
+ 0x2b550c,
+ 0x2b5c4c,
+ 0x2b5f4a,
+ 0x2b61cc,
+ 0x2c2708,
+ 0x2c2908,
+ 0x2c2b04,
+ 0x2c2ec9,
+ 0x2c3109,
+ 0x2c334a,
+ 0x2c35c9,
+ 0x2c3907,
+ 0x3af00c,
+ 0x241146,
+ 0x34acc8,
+ 0x22c406,
+ 0x32e7c6,
+ 0x38d087,
+ 0x3b3288,
+ 0x39034b,
+ 0x2afa47,
+ 0x352489,
+ 0x3445c9,
+ 0x249ac7,
+ 0x278a04,
+ 0x265187,
+ 0x2db346,
+ 0x214a06,
+ 0x2f3485,
+ 0x2a5888,
+ 0x291444,
+ 0x291446,
+ 0x270a0b,
+ 0x21ca49,
+ 0x214b46,
+ 0x21c489,
+ 0x3b3f46,
+ 0x254688,
+ 0x223b83,
+ 0x2f6b45,
+ 0x22edc9,
+ 0x261145,
+ 0x2f9684,
+ 0x272206,
+ 0x231545,
+ 0x228f86,
+ 0x3056c7,
+ 0x26e986,
+ 0x3a304b,
+ 0x22ea87,
+ 0x3379c6,
+ 0x346f06,
+ 0x384ec6,
+ 0x28fa09,
+ 0x2ef14a,
+ 0x2b3505,
+ 0x2170cd,
+ 0x2a3b46,
+ 0x235546,
+ 0x2b4e86,
+ 0x2ed045,
+ 0x2de9c7,
+ 0x2e14c7,
+ 0x3581ce,
+ 0x209703,
+ 0x2c5209,
+ 0x391dc9,
+ 0x37b9c7,
+ 0x358f07,
+ 0x29d645,
+ 0x27ec45,
+ 0x4ba2a88f,
+ 0x2ccec7,
+ 0x2cd088,
+ 0x2cd484,
+ 0x2cde46,
+ 0x4be44c42,
+ 0x2d2186,
+ 0x2d43c6,
+ 0x391f8e,
+ 0x2df90a,
+ 0x357b06,
+ 0x285eca,
+ 0x203549,
+ 0x324105,
+ 0x398008,
+ 0x3b5606,
+ 0x38cec8,
+ 0x26f088,
+ 0x28eb8b,
+ 0x233e05,
+ 0x200c88,
+ 0x207d4c,
+ 0x2bd507,
+ 0x24ae06,
+ 0x2e28c8,
+ 0x20a948,
+ 0x4c208442,
+ 0x20a48b,
+ 0x282549,
+ 0x329f09,
+ 0x3bb287,
+ 0x20f7c8,
+ 0x4c61bf48,
+ 0x3511cb,
+ 0x37e0c9,
+ 0x234fcd,
+ 0x2750c8,
+ 0x224a48,
+ 0x4ca03ec2,
+ 0x20e3c4,
+ 0x4ce1a2c2,
+ 0x2f4ec6,
+ 0x4d2004c2,
+ 0x3813ca,
+ 0x21c346,
+ 0x285908,
+ 0x284488,
+ 0x2af446,
+ 0x22d8c6,
+ 0x2f12c6,
+ 0x2a3185,
+ 0x238c04,
+ 0x4d61e144,
+ 0x205146,
+ 0x272707,
+ 0x4dae8bc7,
+ 0x35490b,
+ 0x319b09,
+ 0x32ae4a,
+ 0x391804,
+ 0x33e0c8,
+ 0x23e84d,
+ 0x2eb709,
+ 0x2eb948,
+ 0x2ebfc9,
+ 0x2ed844,
+ 0x243484,
+ 0x27c885,
+ 0x317b4b,
+ 0x26dcc6,
+ 0x3424c5,
+ 0x250149,
+ 0x234008,
+ 0x2047c4,
+ 0x37b749,
+ 0x208105,
+ 0x2bfb88,
+ 0x33e907,
+ 0x33c508,
+ 0x27d946,
+ 0x35e387,
+ 0x292349,
+ 0x2286c9,
+ 0x2492c5,
+ 0x334ec5,
+ 0x4de2d902,
+ 0x333c04,
+ 0x2049c5,
+ 0x32c146,
+ 0x318385,
+ 0x2b1ac7,
+ 0x205245,
+ 0x272d04,
+ 0x3a6586,
+ 0x23cb47,
+ 0x232986,
+ 0x2dca05,
+ 0x203188,
+ 0x234585,
+ 0x2062c7,
+ 0x20f1c9,
+ 0x21cb8a,
+ 0x2e1b87,
+ 0x2e1b8c,
+ 0x320906,
+ 0x343cc9,
+ 0x23b385,
+ 0x23b648,
+ 0x210803,
+ 0x210805,
+ 0x2e8a05,
+ 0x261607,
+ 0x4e20c002,
+ 0x22d0c7,
+ 0x2e4f06,
+ 0x342786,
+ 0x2e7d06,
+ 0x20a886,
+ 0x208388,
+ 0x241c85,
+ 0x2e5507,
+ 0x2e550d,
+ 0x201543,
+ 0x21ec05,
+ 0x201547,
+ 0x22d408,
+ 0x201105,
+ 0x218c88,
+ 0x36c0c6,
+ 0x32b9c7,
+ 0x2c4785,
+ 0x233e86,
+ 0x26f5c5,
+ 0x21390a,
+ 0x2f2e06,
+ 0x377ac7,
+ 0x2ca505,
+ 0x3612c7,
+ 0x36d6c4,
+ 0x2f9606,
+ 0x2fb3c5,
+ 0x32648b,
+ 0x2db1c9,
+ 0x2bb24a,
+ 0x249348,
+ 0x301d08,
+ 0x304a4c,
+ 0x306287,
+ 0x3073c8,
+ 0x310a48,
+ 0x31e945,
+ 0x34020a,
+ 0x35c3c9,
+ 0x4e600802,
+ 0x200806,
+ 0x219d04,
+ 0x2ea849,
+ 0x220b49,
+ 0x269287,
+ 0x294947,
+ 0x37e789,
+ 0x38cb48,
+ 0x38cb4f,
+ 0x315d06,
+ 0x2d670b,
+ 0x36e8c5,
+ 0x36e8c7,
+ 0x385889,
+ 0x212ac6,
+ 0x37b6c7,
+ 0x2d8905,
+ 0x2303c4,
+ 0x261006,
+ 0x211ac4,
+ 0x2ce4c7,
+ 0x307048,
+ 0x4eaf68c8,
+ 0x2f7085,
+ 0x2f71c7,
+ 0x236549,
+ 0x23e284,
+ 0x23e288,
+ 0x4ee2b888,
+ 0x279444,
+ 0x231388,
+ 0x32fdc4,
+ 0x3ab849,
+ 0x2173c5,
+ 0x4f20b0c2,
+ 0x315d45,
+ 0x2e4345,
+ 0x251288,
+ 0x232e47,
+ 0x4f601442,
+ 0x204785,
+ 0x2cf606,
+ 0x24b106,
+ 0x333bc8,
+ 0x302108,
+ 0x318346,
+ 0x327f06,
+ 0x2e2e49,
+ 0x3426c6,
+ 0x21298b,
+ 0x296305,
+ 0x368106,
+ 0x377088,
+ 0x250506,
+ 0x292cc6,
+ 0x21914a,
+ 0x23084a,
+ 0x245005,
+ 0x241d47,
+ 0x308786,
+ 0x4fa01682,
+ 0x201687,
+ 0x238705,
+ 0x243a44,
+ 0x243a45,
+ 0x391706,
+ 0x26a447,
+ 0x219a85,
+ 0x220c04,
+ 0x2c7e88,
+ 0x292d85,
+ 0x333a47,
+ 0x3a1645,
+ 0x213845,
+ 0x256e04,
+ 0x287609,
+ 0x2fae48,
+ 0x2e0286,
+ 0x2d9d06,
+ 0x2b6e46,
+ 0x4fefbc88,
+ 0x2fbe87,
+ 0x2fc0cd,
+ 0x2fcb4c,
+ 0x2fd149,
+ 0x2fd389,
+ 0x5035b2c2,
+ 0x3a8603,
+ 0x207943,
+ 0x2db405,
+ 0x39280a,
+ 0x327dc6,
+ 0x302385,
+ 0x305884,
+ 0x30588b,
+ 0x31b70c,
+ 0x31c14c,
+ 0x31c455,
+ 0x31d74d,
+ 0x320a8f,
+ 0x320e52,
+ 0x3212cf,
+ 0x321692,
+ 0x321b13,
+ 0x321fcd,
+ 0x32258d,
+ 0x32290e,
+ 0x322e8e,
+ 0x3236cc,
+ 0x323a8c,
+ 0x323ecb,
+ 0x32424e,
+ 0x325392,
+ 0x327b8c,
+ 0x328790,
+ 0x335212,
+ 0x33640c,
+ 0x336acd,
+ 0x336e0c,
+ 0x339a51,
+ 0x33a90d,
+ 0x34084d,
+ 0x340e4a,
+ 0x3410cc,
+ 0x3419cc,
+ 0x3421cc,
+ 0x34290c,
+ 0x344dd3,
+ 0x345450,
+ 0x345850,
+ 0x34610d,
+ 0x34670c,
+ 0x347309,
+ 0x34890d,
+ 0x348c53,
+ 0x34a311,
+ 0x34a753,
+ 0x34b24f,
+ 0x34b60c,
+ 0x34b90f,
+ 0x34bccd,
+ 0x34c2cf,
+ 0x34c690,
+ 0x34d10e,
+ 0x3539ce,
+ 0x353f50,
+ 0x35518d,
+ 0x355b0e,
+ 0x355e8c,
+ 0x356e93,
+ 0x35934e,
+ 0x3599d0,
+ 0x359dd1,
+ 0x35a20f,
+ 0x35a5d3,
+ 0x35ae4d,
+ 0x35b18f,
+ 0x35b54e,
+ 0x35bc10,
+ 0x35c009,
+ 0x35cd90,
+ 0x35d38f,
+ 0x35da0f,
+ 0x35ddd2,
+ 0x35efce,
+ 0x35fc4d,
+ 0x36070d,
+ 0x360a4d,
+ 0x36184d,
+ 0x361b8d,
+ 0x361ed0,
+ 0x3622cb,
+ 0x36324c,
+ 0x3635cc,
+ 0x363bcc,
+ 0x363ece,
+ 0x371a10,
+ 0x372dd2,
+ 0x37324b,
+ 0x3738ce,
+ 0x373c4e,
+ 0x3744ce,
+ 0x37494b,
+ 0x50774f56,
+ 0x37624d,
+ 0x3766d4,
+ 0x377e0d,
+ 0x37b115,
+ 0x37c40d,
+ 0x37cd8f,
+ 0x37d5cf,
+ 0x38250f,
+ 0x3828ce,
+ 0x382e4d,
+ 0x383f91,
+ 0x38674c,
+ 0x386a4c,
+ 0x386d4b,
+ 0x38764c,
+ 0x387a0f,
+ 0x387dd2,
+ 0x38878d,
+ 0x38974c,
+ 0x389bcc,
+ 0x389ecd,
+ 0x38a20f,
+ 0x38a5ce,
+ 0x3924cc,
+ 0x392a8d,
+ 0x392dcb,
+ 0x39358c,
+ 0x393b0d,
+ 0x393e4e,
+ 0x3941c9,
+ 0x394d13,
+ 0x39524d,
+ 0x39558d,
+ 0x395b8c,
+ 0x39600e,
+ 0x396fcf,
+ 0x39738c,
+ 0x39768d,
+ 0x3979cf,
+ 0x397d8c,
+ 0x39848c,
+ 0x39890c,
+ 0x398c0c,
+ 0x3992cd,
+ 0x399612,
+ 0x399c8c,
+ 0x399f8c,
+ 0x39a291,
+ 0x39a6cf,
+ 0x39aa8f,
+ 0x39ae53,
+ 0x39bcce,
+ 0x39c04f,
+ 0x39c40c,
+ 0x50b9c74e,
+ 0x39cacf,
+ 0x39ce96,
+ 0x39dc12,
+ 0x39f38c,
+ 0x39fd0f,
+ 0x3a038d,
+ 0x3a06cf,
+ 0x3a0a8c,
+ 0x3a0d8d,
+ 0x3a10cd,
+ 0x3a254e,
+ 0x3a4b8c,
+ 0x3a4e8c,
+ 0x3a5190,
+ 0x3a7a91,
+ 0x3a7ecb,
+ 0x3a820c,
+ 0x3a850e,
+ 0x3aa811,
+ 0x3aac4e,
+ 0x3aafcd,
+ 0x3b53cb,
+ 0x3b5e8f,
+ 0x3b6d94,
+ 0x228782,
+ 0x228782,
+ 0x200c83,
+ 0x228782,
+ 0x200c83,
+ 0x228782,
+ 0x205142,
+ 0x384405,
+ 0x3aa50c,
+ 0x228782,
+ 0x228782,
+ 0x205142,
+ 0x228782,
+ 0x294545,
+ 0x21cb85,
+ 0x228782,
+ 0x228782,
+ 0x20b382,
+ 0x294545,
+ 0x31f3c9,
+ 0x34a00c,
+ 0x228782,
+ 0x228782,
+ 0x228782,
+ 0x228782,
+ 0x384405,
+ 0x228782,
+ 0x228782,
+ 0x228782,
+ 0x228782,
+ 0x20b382,
+ 0x31f3c9,
+ 0x228782,
+ 0x228782,
+ 0x228782,
+ 0x21cb85,
+ 0x228782,
+ 0x21cb85,
+ 0x34a00c,
+ 0x3aa50c,
+ 0x38d2c3,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x3b1384,
+ 0x205503,
+ 0x200983,
+ 0x2708,
+ 0x5fc84,
+ 0xe0e08,
+ 0x205702,
+ 0x51a099c2,
+ 0x23dbc3,
+ 0x24f2c4,
+ 0x2032c3,
+ 0x393304,
+ 0x22f706,
+ 0x20e883,
+ 0x3328c4,
+ 0x286bc5,
+ 0x209703,
+ 0x205503,
+ 0x200983,
+ 0x255cca,
+ 0x2efec6,
+ 0x373fcc,
+ 0x16d208,
+ 0x2099c2,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x227f83,
+ 0x2d43c6,
+ 0x205503,
+ 0x200983,
+ 0x201303,
+ 0xa4508,
+ 0x129845,
+ 0x14902,
+ 0x52f86185,
+ 0x21347,
+ 0xc93c8,
+ 0xec0e,
+ 0x88192,
+ 0xfe20b,
+ 0x532d6a45,
+ 0x536d6a4c,
+ 0xb007,
+ 0x16fc07,
+ 0x1b254a,
+ 0x3a6d0,
+ 0x149c05,
+ 0xd95cb,
+ 0x68bc8,
+ 0x38f47,
+ 0x304cb,
+ 0x4efc9,
+ 0x11dd07,
+ 0x2c07,
+ 0x73587,
+ 0x1c106,
+ 0xd4ac8,
+ 0x53c1cdc6,
+ 0xa8a0d,
+ 0x1b1f10,
+ 0x5402bb82,
+ 0x9688,
+ 0x4a450,
+ 0x14434c,
+ 0x5474e88d,
+ 0x655c7,
+ 0x78749,
+ 0x52e06,
+ 0x940c8,
+ 0x67e42,
+ 0x9f54a,
+ 0x27f07,
+ 0x35fc7,
+ 0xa4909,
+ 0xa6388,
+ 0xb9b45,
+ 0xec50e,
+ 0xb54e,
+ 0xdecf,
+ 0x11809,
+ 0xbb9c9,
+ 0x43e4b,
+ 0x7664f,
+ 0x8780c,
+ 0x9ef4b,
+ 0xbbf48,
+ 0x154807,
+ 0xcdc48,
+ 0xfb80b,
+ 0xf568c,
+ 0xf640c,
+ 0xf908c,
+ 0xfe68d,
+ 0x17e248,
+ 0xeab02,
+ 0x113a49,
+ 0x185d4b,
+ 0xc5446,
+ 0x116fcb,
+ 0xd804a,
+ 0xd8c05,
+ 0xde6d0,
+ 0x111806,
+ 0x192345,
+ 0xe3f48,
+ 0xe9187,
+ 0xe9447,
+ 0xff487,
+ 0xf4d0a,
+ 0xc924a,
+ 0x5d306,
+ 0x91a0d,
+ 0x86ec8,
+ 0x55b08,
+ 0x56d49,
+ 0xb3c45,
+ 0xf484c,
+ 0xfe88b,
+ 0x165044,
+ 0xfaa89,
+ 0xfacc6,
+ 0x1af7c6,
+ 0x2dc2,
+ 0x125c86,
+ 0x107247,
+ 0x7b02,
+ 0xc83c5,
+ 0x29544,
+ 0x1ec1,
+ 0x4c983,
+ 0x53a85146,
+ 0x94443,
+ 0xd882,
+ 0x27f04,
+ 0x242,
+ 0x5ef44,
+ 0x3dc2,
+ 0x8142,
+ 0x2502,
+ 0x10f242,
+ 0x1ec2,
+ 0xd6a42,
+ 0x4142,
+ 0x1b102,
+ 0x2cd82,
+ 0x5742,
+ 0xdc2,
+ 0xf882,
+ 0x32403,
+ 0x5f02,
+ 0x7c2,
+ 0x18342,
+ 0xfc82,
+ 0x5e82,
+ 0x1ae02,
+ 0x17f42,
+ 0x15c2,
+ 0x29c2,
+ 0x1fc2,
+ 0x44183,
+ 0x3942,
+ 0x6502,
+ 0xafd42,
+ 0xbe02,
+ 0x282,
+ 0x4bc2,
+ 0x1f42,
+ 0xa8542,
+ 0x2342,
+ 0x152bc2,
+ 0x675c2,
+ 0x2c82,
+ 0x5503,
+ 0x8c2,
+ 0x8442,
+ 0x33c2,
+ 0xb482,
+ 0x49245,
+ 0xba02,
+ 0x2d4c2,
+ 0x3c083,
+ 0x482,
+ 0x1c42,
+ 0x27c2,
+ 0x3902,
+ 0x1102,
+ 0x1442,
+ 0xc2,
+ 0x2dc2,
+ 0x9885,
+ 0x75c47,
+ 0x212503,
+ 0x205702,
+ 0x2a84c3,
+ 0x232403,
+ 0x2163c3,
+ 0x20ad83,
+ 0x227f83,
+ 0x205503,
+ 0x204e83,
+ 0x200983,
+ 0x294483,
+ 0x169c3,
+ 0x16d208,
+ 0x2a84c3,
+ 0x232403,
+ 0x2163c3,
+ 0x209703,
+ 0x205503,
+ 0x204e83,
+ 0x200983,
+ 0x2a84c3,
+ 0x232403,
+ 0x200983,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x200041,
+ 0x209703,
+ 0x205503,
+ 0x21c2c3,
+ 0x200983,
+ 0x38d2c3,
+ 0x2a84c3,
+ 0x232403,
+ 0x209683,
+ 0x2163c3,
+ 0x277dc3,
+ 0x280b83,
+ 0x21c303,
+ 0x252c03,
+ 0x2e9dc3,
+ 0x3b1384,
+ 0x205503,
+ 0x200983,
+ 0x25ed03,
+ 0x352e84,
+ 0x231a03,
+ 0x30c3,
+ 0x228483,
+ 0x37a908,
+ 0x24f3c4,
+ 0x3b870a,
+ 0x2b8ec6,
+ 0x1b6a04,
+ 0x39b2c7,
+ 0x21e7ca,
+ 0x315bc9,
+ 0x3ab587,
+ 0x3b724a,
+ 0x38d2c3,
+ 0x2e678b,
+ 0x2b9fc9,
+ 0x2bd645,
+ 0x2d1fc7,
+ 0x99c2,
+ 0x2a84c3,
+ 0x205747,
+ 0x2e2b85,
+ 0x2dbdc9,
+ 0x232403,
+ 0x233c06,
+ 0x2c1a43,
+ 0xdb283,
+ 0x104e46,
+ 0x18ec46,
+ 0xe807,
+ 0x212e46,
+ 0x21b185,
+ 0x282407,
+ 0x2d5b87,
+ 0x56ae9dc3,
+ 0x336647,
+ 0x365e03,
+ 0x206a05,
+ 0x3b1384,
+ 0x220688,
+ 0x38644c,
+ 0x2ad745,
+ 0x29c986,
+ 0x205607,
+ 0x38b907,
+ 0x238347,
+ 0x245108,
+ 0x303b8f,
+ 0x315e05,
+ 0x23dcc7,
+ 0x26f287,
+ 0x2a3e0a,
+ 0x2d2809,
+ 0x304f85,
+ 0x30664a,
+ 0x82a06,
+ 0x2c1ac5,
+ 0x374b84,
+ 0x2843c6,
+ 0x2f1d47,
+ 0x2eaa07,
+ 0x3bb408,
+ 0x22dc85,
+ 0x2e2a86,
+ 0x214305,
+ 0x3adcc5,
+ 0x21c984,
+ 0x2af347,
+ 0x2081ca,
+ 0x334808,
+ 0x35ba86,
+ 0x27f83,
+ 0x2da905,
+ 0x25f906,
+ 0x3af246,
+ 0x392246,
+ 0x209703,
+ 0x388a07,
+ 0x26f205,
+ 0x205503,
+ 0x2d830d,
+ 0x204e83,
+ 0x3bb508,
+ 0x27f404,
+ 0x272fc5,
+ 0x2a3d06,
+ 0x234d46,
+ 0x368007,
+ 0x2a6ec7,
+ 0x267345,
+ 0x200983,
+ 0x21fbc7,
+ 0x2788c9,
+ 0x311a49,
+ 0x22708a,
+ 0x243002,
+ 0x2069c4,
+ 0x2e5084,
+ 0x390207,
+ 0x22cf88,
+ 0x2ea2c9,
+ 0x21eac9,
+ 0x2eaf47,
+ 0x2ba486,
+ 0xec286,
+ 0x2ed844,
+ 0x2ede4a,
+ 0x2f0d48,
+ 0x2f1189,
+ 0x2bdbc6,
+ 0x2b1445,
+ 0x3346c8,
+ 0x2c5f8a,
+ 0x22ed03,
+ 0x353006,
+ 0x2eb047,
+ 0x223ec5,
+ 0x3a5e05,
+ 0x264b83,
+ 0x250cc4,
+ 0x226605,
+ 0x281b07,
+ 0x2faf85,
+ 0x2ee346,
+ 0xfc605,
+ 0x247d83,
+ 0x357bc9,
+ 0x272d8c,
+ 0x29344c,
+ 0x2ced08,
+ 0x293087,
+ 0x2f7908,
+ 0x2f7c4a,
+ 0x2f888b,
+ 0x2ba108,
+ 0x234e48,
+ 0x239586,
+ 0x390d45,
+ 0x38da4a,
+ 0x3a6205,
+ 0x20b0c2,
+ 0x2c4647,
+ 0x25fe86,
+ 0x35c8c5,
+ 0x370809,
+ 0x2f39c5,
+ 0x27e985,
+ 0x2ddf09,
+ 0x351846,
+ 0x237e88,
+ 0x33f383,
+ 0x20f486,
+ 0x272146,
+ 0x306445,
+ 0x306449,
+ 0x2b6789,
+ 0x279ac7,
+ 0x109104,
+ 0x309107,
+ 0x21e9c9,
+ 0x238d05,
+ 0x413c8,
+ 0x3b2e85,
+ 0x330e85,
+ 0x380509,
+ 0x201702,
+ 0x25e544,
+ 0x201e82,
+ 0x203942,
+ 0x31ecc5,
+ 0x3b6788,
+ 0x2b3b85,
+ 0x2c3ac3,
+ 0x2c3ac5,
+ 0x2d2383,
+ 0x20f442,
+ 0x377804,
+ 0x2ac783,
+ 0x2056c2,
+ 0x379884,
+ 0x2e5d43,
+ 0x2082c2,
+ 0x2b3c03,
+ 0x28d084,
+ 0x2e4c83,
+ 0x248684,
+ 0x203082,
+ 0x218943,
+ 0x22ef03,
+ 0x200d02,
+ 0x361782,
+ 0x2b65c9,
+ 0x207842,
+ 0x288d04,
+ 0x203cc2,
+ 0x334544,
+ 0x2ba444,
+ 0x2b74c4,
+ 0x202dc2,
+ 0x2391c2,
+ 0x225bc3,
+ 0x2f8403,
+ 0x23d904,
+ 0x281c84,
+ 0x2eb1c4,
+ 0x2f0f04,
+ 0x30a483,
+ 0x26e543,
+ 0x282984,
+ 0x30a2c4,
+ 0x30aac6,
+ 0x22a282,
+ 0x2099c2,
+ 0x232403,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x205702,
+ 0x38d2c3,
+ 0x2a84c3,
+ 0x232403,
+ 0x2007c3,
+ 0x2e9dc3,
+ 0x3b1384,
+ 0x2b6884,
+ 0x211cc4,
+ 0x205503,
+ 0x200983,
+ 0x201303,
+ 0x2ee644,
+ 0x31a403,
+ 0x2bd0c3,
+ 0x34ab84,
+ 0x3b2c86,
+ 0x202f03,
+ 0x16fc07,
+ 0x222403,
+ 0x2459c3,
+ 0x2b0543,
+ 0x206a43,
+ 0x227f83,
+ 0x2d6cc5,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x282c43,
+ 0x2a5143,
+ 0x16d208,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x244183,
+ 0x205503,
+ 0x23a504,
+ 0x200983,
+ 0x26bec4,
+ 0x2bf145,
+ 0x16fc07,
+ 0x2099c2,
+ 0x2006c2,
+ 0x20d882,
+ 0x200c82,
+ 0x200442,
+ 0x2a84c3,
+ 0x235ac4,
+ 0x232403,
+ 0x2e9dc3,
+ 0x209703,
+ 0x205503,
+ 0x200983,
+ 0x16d208,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x209703,
+ 0x211cc4,
+ 0x205503,
+ 0x200983,
+ 0x214843,
+ 0x25ef44,
+ 0x16d208,
+ 0x2a84c3,
+ 0x204e83,
+ 0x169c3,
+ 0x2030c4,
+ 0x16d208,
+ 0x2a84c3,
+ 0x249944,
+ 0x3b1384,
+ 0x204e83,
+ 0x203ec2,
+ 0x200983,
+ 0x23e743,
+ 0x50cc4,
+ 0x373605,
+ 0x20b0c2,
+ 0x30a403,
+ 0x205702,
+ 0x16d208,
+ 0x2099c2,
+ 0x232403,
+ 0x2e9dc3,
+ 0x201fc2,
+ 0x200983,
+ 0x205702,
+ 0x1b7407,
+ 0x12e3c9,
+ 0x6f83,
+ 0x16d208,
+ 0x18ebc3,
+ 0x5a31fd87,
+ 0xa84c3,
+ 0x708,
+ 0x232403,
+ 0x2e9dc3,
+ 0x1ae886,
+ 0x244183,
+ 0x8f2c8,
+ 0xc0e08,
+ 0x41a46,
+ 0x209703,
+ 0xca988,
+ 0xb1b43,
+ 0xdf145,
+ 0x32607,
+ 0x8003,
+ 0x174c0a,
+ 0x11ed83,
+ 0x308d44,
+ 0x10398b,
+ 0x103f48,
+ 0x8d742,
+ 0x205702,
+ 0x2099c2,
+ 0x2a84c3,
+ 0x232403,
+ 0x2d5f04,
+ 0x2e9dc3,
+ 0x244183,
+ 0x209703,
+ 0x205503,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x227f83,
+ 0x205503,
+ 0x200983,
+ 0x21aa03,
+ 0x214843,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x169c3,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x3b1384,
+ 0x227f83,
+ 0x205503,
+ 0x200983,
+ 0x212982,
+ 0x200141,
+ 0x205702,
+ 0x200001,
+ 0x320b82,
+ 0x16d208,
+ 0x21d445,
+ 0x201ec1,
+ 0xa84c3,
+ 0x200701,
+ 0x200301,
+ 0x200081,
+ 0x298602,
+ 0x36c044,
+ 0x384383,
+ 0x200181,
+ 0x200401,
+ 0x200041,
+ 0x200101,
+ 0x2e9907,
+ 0x2eab8f,
+ 0x340446,
+ 0x200281,
+ 0x37f6c6,
+ 0x200e81,
+ 0x2008c1,
+ 0x332a0e,
+ 0x200441,
+ 0x200983,
+ 0x201301,
+ 0x270e85,
+ 0x20f942,
+ 0x264a85,
+ 0x200341,
+ 0x200801,
+ 0x2002c1,
+ 0x20b0c2,
+ 0x2000c1,
+ 0x200201,
+ 0x200bc1,
+ 0x2005c1,
+ 0x201cc1,
+ 0x16d208,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x219503,
+ 0x2a84c3,
+ 0x2e9dc3,
+ 0x8d688,
+ 0x209703,
+ 0x205503,
+ 0x20803,
+ 0x200983,
+ 0x14e7e88,
+ 0x16d208,
+ 0x44e04,
+ 0x14e7e8a,
+ 0x16d208,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x205503,
+ 0x200983,
+ 0x2030c3,
+ 0x16d208,
+ 0x2a84c3,
+ 0x232403,
+ 0x2d5f04,
+ 0x200983,
+ 0x27a305,
+ 0x33b804,
+ 0x2a84c3,
+ 0x205503,
+ 0x200983,
+ 0x225ca,
+ 0xd5284,
+ 0x10c9c6,
+ 0x2099c2,
+ 0x2a84c3,
+ 0x230309,
+ 0x232403,
+ 0x3034c9,
+ 0x2e9dc3,
+ 0x209703,
+ 0x205503,
+ 0x200983,
+ 0x2ed648,
+ 0x22ca47,
+ 0x373605,
+ 0x18ed88,
+ 0x1b7407,
+ 0x2d20a,
+ 0xecb,
+ 0x4ab87,
+ 0x3d2c8,
+ 0x1b1b8a,
+ 0x10a48,
+ 0x12e3c9,
+ 0x264c7,
+ 0x3be87,
+ 0x152b08,
+ 0x708,
+ 0x3df8f,
+ 0x11d85,
+ 0xa07,
+ 0x1ae886,
+ 0x137607,
+ 0x3d586,
+ 0x8f2c8,
+ 0xa5606,
+ 0x151647,
+ 0x19c9,
+ 0x1aa1c7,
+ 0xa46c9,
+ 0xb4a09,
+ 0xbeec6,
+ 0xc0e08,
+ 0xbfcc5,
+ 0x4eb4a,
+ 0xca988,
+ 0xb1b43,
+ 0xd2648,
+ 0x32607,
+ 0x6d505,
+ 0x69c50,
+ 0x8003,
+ 0x1aa047,
+ 0x15ec5,
+ 0xe9748,
+ 0x13ce05,
+ 0x11ed83,
+ 0x6fd48,
+ 0xcd46,
+ 0x42849,
+ 0xaa147,
+ 0x6fa0b,
+ 0x14ac44,
+ 0xfa544,
+ 0x10398b,
+ 0x103f48,
+ 0x104d47,
+ 0x129845,
+ 0x2a84c3,
+ 0x232403,
+ 0x2163c3,
+ 0x200983,
+ 0x22a403,
+ 0x2e9dc3,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x209703,
+ 0x205503,
+ 0x200983,
+ 0x43f8b,
+ 0x205702,
+ 0x2099c2,
+ 0x200983,
+ 0x16d208,
+ 0x205702,
+ 0x2099c2,
+ 0x20d882,
+ 0x201fc2,
+ 0x203d02,
+ 0x205503,
+ 0x200442,
+ 0x205702,
+ 0x38d2c3,
+ 0x2099c2,
+ 0x2a84c3,
+ 0x232403,
+ 0x20d882,
+ 0x2e9dc3,
+ 0x244183,
+ 0x209703,
+ 0x211cc4,
+ 0x205503,
+ 0x216b03,
+ 0x200983,
+ 0x308d44,
+ 0x25ed03,
+ 0x2e9dc3,
+ 0x2099c2,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x209703,
+ 0x205503,
+ 0x204e83,
+ 0x200983,
+ 0x39f847,
+ 0x2a84c3,
+ 0x2614c7,
+ 0x2c7ac6,
+ 0x219203,
+ 0x218343,
+ 0x2e9dc3,
+ 0x2143c3,
+ 0x3b1384,
+ 0x37ef04,
+ 0x31ea46,
+ 0x20d143,
+ 0x205503,
+ 0x200983,
+ 0x27a305,
+ 0x318284,
+ 0x3b2a43,
+ 0x38b743,
+ 0x2c4647,
+ 0x33e885,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x209703,
+ 0x205503,
+ 0x200983,
+ 0x28e87,
+ 0x205942,
+ 0x287003,
+ 0x2bf143,
+ 0x38d2c3,
+ 0x626a84c3,
+ 0x202242,
+ 0x232403,
+ 0x2032c3,
+ 0x2e9dc3,
+ 0x3b1384,
+ 0x353903,
+ 0x315e03,
+ 0x209703,
+ 0x211cc4,
+ 0x62a04642,
+ 0x205503,
+ 0x200983,
+ 0x2082c3,
+ 0x229543,
+ 0x212982,
+ 0x25ed03,
+ 0x16d208,
+ 0x2e9dc3,
+ 0x169c3,
+ 0x26f744,
+ 0x38d2c3,
+ 0x2099c2,
+ 0x2a84c3,
+ 0x235ac4,
+ 0x232403,
+ 0x2e9dc3,
+ 0x3b1384,
+ 0x244183,
+ 0x282104,
+ 0x210444,
+ 0x2d43c6,
+ 0x211cc4,
+ 0x205503,
+ 0x200983,
+ 0x201303,
+ 0x25fe86,
+ 0x13f08b,
+ 0x1cdc6,
+ 0x5eb4a,
+ 0x107e4a,
+ 0x16d208,
+ 0x2142c4,
+ 0x63ea84c3,
+ 0x38d284,
+ 0x232403,
+ 0x256e84,
+ 0x2e9dc3,
+ 0x391683,
+ 0x209703,
+ 0x205503,
+ 0x200983,
+ 0x56243,
+ 0x32f78b,
+ 0x3a140a,
+ 0x3b9bcc,
+ 0xda688,
+ 0x205702,
+ 0x2099c2,
+ 0x20d882,
+ 0x2a9305,
+ 0x3b1384,
+ 0x202342,
+ 0x209703,
+ 0x210444,
+ 0x200c82,
+ 0x200442,
+ 0x209842,
+ 0x212982,
+ 0x18d2c3,
+ 0x19f02,
+ 0x2a1cc9,
+ 0x25d548,
+ 0x309a89,
+ 0x337449,
+ 0x23490a,
+ 0x23634a,
+ 0x20cc02,
+ 0x21b102,
+ 0x99c2,
+ 0x2a84c3,
+ 0x204682,
+ 0x23de86,
+ 0x35d882,
+ 0x201242,
+ 0x20124e,
+ 0x21898e,
+ 0x27b107,
+ 0x205487,
+ 0x275d02,
+ 0x232403,
+ 0x2e9dc3,
+ 0x200042,
+ 0x201fc2,
+ 0x4a5c3,
+ 0x2eec0f,
+ 0x200f42,
+ 0x32c787,
+ 0x2c7d07,
+ 0x2d3907,
+ 0x2ad24c,
+ 0x3151cc,
+ 0x3a3a44,
+ 0x27c6ca,
+ 0x2188c2,
+ 0x20be02,
+ 0x2b6fc4,
+ 0x2226c2,
+ 0x2c2702,
+ 0x315404,
+ 0x20cec2,
+ 0x200282,
+ 0x6343,
+ 0x2a5687,
+ 0x2352c5,
+ 0x201f42,
+ 0x2eeb84,
+ 0x352bc2,
+ 0x2da248,
+ 0x205503,
+ 0x3b0208,
+ 0x200d42,
+ 0x233385,
+ 0x3b04c6,
+ 0x200983,
+ 0x20ba02,
+ 0x2ea507,
+ 0xf942,
+ 0x26b005,
+ 0x3a9f45,
+ 0x201642,
+ 0x242b02,
+ 0x3b7a8a,
+ 0x2671ca,
+ 0x202c42,
+ 0x2e4744,
+ 0x2002c2,
+ 0x206888,
+ 0x201c82,
+ 0x30a848,
+ 0x2feb47,
+ 0x2ff649,
+ 0x26b082,
+ 0x305645,
+ 0x33bc85,
+ 0x22dd4b,
+ 0x2c6c4c,
+ 0x22e848,
+ 0x3188c8,
+ 0x22a282,
+ 0x35f782,
+ 0x205702,
+ 0x16d208,
+ 0x2099c2,
+ 0x2a84c3,
+ 0x20d882,
+ 0x200c82,
+ 0x200442,
+ 0x200983,
+ 0x209842,
+ 0x205702,
+ 0x652099c2,
+ 0x656e9dc3,
+ 0x206343,
+ 0x202342,
+ 0x205503,
+ 0x375cc3,
+ 0x200983,
+ 0x2e87c3,
+ 0x275d46,
+ 0x1614843,
+ 0x16d208,
+ 0x192345,
+ 0xa6a8d,
+ 0xa4dca,
+ 0x65c87,
+ 0x65e011c2,
+ 0x66200242,
+ 0x66600ec2,
+ 0x66a00c02,
+ 0x66e0de02,
+ 0x67201ec2,
+ 0x16fc07,
+ 0x676099c2,
+ 0x67a301c2,
+ 0x67e09982,
+ 0x68200dc2,
+ 0x218983,
+ 0x9e04,
+ 0x225d83,
+ 0x686149c2,
+ 0x68a00182,
+ 0x49f47,
+ 0x68e03002,
+ 0x69202e42,
+ 0x69600b42,
+ 0x69a02bc2,
+ 0x69e029c2,
+ 0x6a201fc2,
+ 0xb3985,
+ 0x234543,
+ 0x202b84,
+ 0x6a6226c2,
+ 0x6aa03a82,
+ 0x6ae03202,
+ 0x16c90b,
+ 0x6b200e82,
+ 0x6ba49a02,
+ 0x6be02342,
+ 0x6c203d02,
+ 0x6c60f242,
+ 0x6ca0ec42,
+ 0x6ce0e602,
+ 0x6d2675c2,
+ 0x6d604642,
+ 0x6da01b42,
+ 0x6de00c82,
+ 0x6e2042c2,
+ 0x6e61c702,
+ 0x6ea00e42,
+ 0x7f1c4,
+ 0x350703,
+ 0x6ee33082,
+ 0x6f216982,
+ 0x6f603402,
+ 0x6fa089c2,
+ 0x6fe00442,
+ 0x702056c2,
+ 0x44107,
+ 0x70601302,
+ 0x70a07302,
+ 0x70e09842,
+ 0x71218942,
+ 0xf484c,
+ 0x71621c82,
+ 0x71a3ab02,
+ 0x71e11602,
+ 0x72201682,
+ 0x72601f82,
+ 0x72a34a82,
+ 0x72e00202,
+ 0x7320e8c2,
+ 0x736724c2,
+ 0x73a56642,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0xa203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x6b753903,
+ 0x20a203,
+ 0x2d6d44,
+ 0x25d446,
+ 0x2f1743,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x219f02,
+ 0x219f02,
+ 0x353903,
+ 0x20a203,
+ 0x742a84c3,
+ 0x232403,
+ 0x37ac03,
+ 0x209703,
+ 0x205503,
+ 0x200983,
+ 0x16d208,
+ 0x2099c2,
+ 0x2a84c3,
+ 0x205503,
+ 0x200983,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x209703,
+ 0x205503,
+ 0x200983,
+ 0x2030c4,
+ 0x2099c2,
+ 0x2a84c3,
+ 0x2028c3,
+ 0x232403,
+ 0x249944,
+ 0x2163c3,
+ 0x2e9dc3,
+ 0x3b1384,
+ 0x244183,
+ 0x209703,
+ 0x205503,
+ 0x200983,
+ 0x23e743,
+ 0x373605,
+ 0x2a1fc3,
+ 0x25ed03,
+ 0x2099c2,
+ 0x2a84c3,
+ 0x353903,
+ 0x205503,
+ 0x200983,
+ 0x205702,
+ 0x38d2c3,
+ 0x16d208,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x22f706,
+ 0x3b1384,
+ 0x244183,
+ 0x211cc4,
+ 0x205503,
+ 0x200983,
+ 0x201303,
+ 0x2a84c3,
+ 0x232403,
+ 0x205503,
+ 0x200983,
+ 0x14bb147,
+ 0x2a84c3,
+ 0x1cdc6,
+ 0x232403,
+ 0x2e9dc3,
+ 0xdba46,
+ 0x205503,
+ 0x200983,
+ 0x3149c8,
+ 0x318709,
+ 0x328b89,
+ 0x333808,
+ 0x37dc48,
+ 0x37dc49,
+ 0x24318d,
+ 0x2ee80f,
+ 0x251490,
+ 0x34848d,
+ 0x3638cc,
+ 0x37f98b,
+ 0x98605,
+ 0x205702,
+ 0x33e6c5,
+ 0x200243,
+ 0x772099c2,
+ 0x232403,
+ 0x2e9dc3,
+ 0x343ec7,
+ 0x206a43,
+ 0x209703,
+ 0x205503,
+ 0x21c2c3,
+ 0x20dcc3,
+ 0x204e83,
+ 0x200983,
+ 0x2efec6,
+ 0x20b0c2,
+ 0x25ed03,
+ 0x16d208,
+ 0x205702,
+ 0x38d2c3,
+ 0x2099c2,
+ 0x2a84c3,
+ 0x232403,
+ 0x2e9dc3,
+ 0x3b1384,
+ 0x209703,
+ 0x205503,
+ 0x200983,
+ 0x214843,
+ 0x14f53c6,
+ 0x205702,
+ 0x2099c2,
+ 0x2e9dc3,
+ 0x209703,
+ 0x200983,
+}
+
+// children is the list of nodes' children, the parent's wildcard bit and the
+// parent's node type. If a node has no children then their children index
+// will be in the range [0, 6), depending on the wildcard bit and node type.
+//
+// The layout within the uint32, from MSB to LSB, is:
+// [ 1 bits] unused
+// [ 1 bits] wildcard bit
+// [ 2 bits] node type
+// [14 bits] high nodes index (exclusive) of children
+// [14 bits] low nodes index (inclusive) of children
+var children = [...]uint32{
+ 0x0,
+ 0x10000000,
+ 0x20000000,
+ 0x40000000,
+ 0x50000000,
+ 0x60000000,
+ 0x184c60d,
+ 0x1850613,
+ 0x1870614,
+ 0x19cc61c,
+ 0x19e0673,
+ 0x19f4678,
+ 0x1a0467d,
+ 0x1a20681,
+ 0x1a24688,
+ 0x1a3c689,
+ 0x1a6468f,
+ 0x1a68699,
+ 0x1a8069a,
+ 0x1a846a0,
+ 0x1a886a1,
+ 0x1ab06a2,
+ 0x1ab46ac,
+ 0x21abc6ad,
+ 0x1b046af,
+ 0x1b086c1,
+ 0x1b286c2,
+ 0x1b3c6ca,
+ 0x1b406cf,
+ 0x1b706d0,
+ 0x1b8c6dc,
+ 0x1bb46e3,
+ 0x1bc06ed,
+ 0x1bc46f0,
+ 0x1c5c6f1,
+ 0x1c70717,
+ 0x1c8471c,
+ 0x1cb4721,
+ 0x1cc472d,
+ 0x1cd8731,
+ 0x1cfc736,
+ 0x1e3473f,
+ 0x1e3878d,
+ 0x1ea478e,
+ 0x1f107a9,
+ 0x1f247c4,
+ 0x1f387c9,
+ 0x1f407ce,
+ 0x1f507d0,
+ 0x1f547d4,
+ 0x1f6c7d5,
+ 0x1fb87db,
+ 0x1fd47ee,
+ 0x1fd87f5,
+ 0x1fdc7f6,
+ 0x1fe87f7,
+ 0x20247fa,
+ 0x62028809,
+ 0x203c80a,
+ 0x205080f,
+ 0x2054814,
+ 0x2064815,
+ 0x2114819,
+ 0x2118845,
+ 0x22124846,
+ 0x2212c849,
+ 0x216484b,
+ 0x2168859,
+ 0x25b885a,
+ 0x2265896e,
+ 0x2265c996,
+ 0x22660997,
+ 0x2266c998,
+ 0x2267099b,
+ 0x2267c99c,
+ 0x2268099f,
+ 0x226849a0,
+ 0x226889a1,
+ 0x2268c9a2,
+ 0x226909a3,
+ 0x2269c9a4,
+ 0x226a09a7,
+ 0x226ac9a8,
+ 0x226b09ab,
+ 0x226b49ac,
+ 0x226b89ad,
+ 0x226c49ae,
+ 0x226c89b1,
+ 0x226cc9b2,
+ 0x226d09b3,
+ 0x26d49b4,
+ 0x226d89b5,
+ 0x226e49b6,
+ 0x226e89b9,
+ 0x26f09ba,
+ 0x227089bc,
+ 0x2270c9c2,
+ 0x27189c3,
+ 0x2271c9c6,
+ 0x27209c7,
+ 0x227249c8,
+ 0x27409c9,
+ 0x27589d0,
+ 0x275c9d6,
+ 0x276c9d7,
+ 0x27749db,
+ 0x27a89dd,
+ 0x27ac9ea,
+ 0x27bc9eb,
+ 0x28609ef,
+ 0x22864a18,
+ 0x286ca19,
+ 0x2870a1b,
+ 0x2888a1c,
+ 0x289ca22,
+ 0x28c4a27,
+ 0x28e4a31,
+ 0x2914a39,
+ 0x293ca45,
+ 0x2940a4f,
+ 0x2964a50,
+ 0x2968a59,
+ 0x297ca5a,
+ 0x2980a5f,
+ 0x2984a60,
+ 0x29a4a61,
+ 0x29c0a69,
+ 0x29c4a70,
+ 0x229c8a71,
+ 0x29cca72,
+ 0x29d0a73,
+ 0x29e0a74,
+ 0x29e4a78,
+ 0x2a5ca79,
+ 0x2a78a97,
+ 0x2a88a9e,
+ 0x2a9caa2,
+ 0x2ab4aa7,
+ 0x2ac8aad,
+ 0x2ae0ab2,
+ 0x2ae4ab8,
+ 0x2afcab9,
+ 0x2b14abf,
+ 0x2b30ac5,
+ 0x2b48acc,
+ 0x2ba8ad2,
+ 0x2bc0aea,
+ 0x2bc4af0,
+ 0x2bd8af1,
+ 0x2c1caf6,
+ 0x2c9cb07,
+ 0x2cc8b27,
+ 0x2cccb32,
+ 0x2cd4b33,
+ 0x2cf4b35,
+ 0x2cf8b3d,
+ 0x2d18b3e,
+ 0x2d20b46,
+ 0x2d5cb48,
+ 0x2d9cb57,
+ 0x2da0b67,
+ 0x2e00b68,
+ 0x2e04b80,
+ 0x22e08b81,
+ 0x2e20b82,
+ 0x2e44b88,
+ 0x2e64b91,
+ 0x3428b99,
+ 0x3434d0a,
+ 0x3454d0d,
+ 0x3610d15,
+ 0x36e0d84,
+ 0x3750db8,
+ 0x37a8dd4,
+ 0x3890dea,
+ 0x38e8e24,
+ 0x3924e3a,
+ 0x3a20e49,
+ 0x3aece88,
+ 0x3b84ebb,
+ 0x3c14ee1,
+ 0x3c78f05,
+ 0x3eb0f1e,
+ 0x3f68fac,
+ 0x4034fda,
+ 0x408100d,
+ 0x4109020,
+ 0x4145042,
+ 0x4195051,
+ 0x420d065,
+ 0x64211083,
+ 0x64215084,
+ 0x64219085,
+ 0x4295086,
+ 0x42f10a5,
+ 0x436d0bc,
+ 0x43e50db,
+ 0x44650f9,
+ 0x44d1119,
+ 0x45fd134,
+ 0x465517f,
+ 0x64659195,
+ 0x46f1196,
+ 0x47791bc,
+ 0x47c51de,
+ 0x482d1f1,
+ 0x48d520b,
+ 0x499d235,
+ 0x4a05267,
+ 0x4b19281,
+ 0x64b1d2c6,
+ 0x64b212c7,
+ 0x4b7d2c8,
+ 0x4bd92df,
+ 0x4c692f6,
+ 0x4ce531a,
+ 0x4d29339,
+ 0x4e0d34a,
+ 0x4e41383,
+ 0x4ea1390,
+ 0x4f153a8,
+ 0x4f9d3c5,
+ 0x4fdd3e7,
+ 0x504d3f7,
+ 0x65051413,
+ 0x65055414,
+ 0x25059415,
+ 0x5071416,
+ 0x508d41c,
+ 0x50d1423,
+ 0x50e1434,
+ 0x50f9438,
+ 0x517143e,
+ 0x517945c,
+ 0x518d45e,
+ 0x51a5463,
+ 0x51cd469,
+ 0x51d1473,
+ 0x51d9474,
+ 0x51ed476,
+ 0x520947b,
+ 0x520d482,
+ 0x5215483,
+ 0x5251485,
+ 0x5265494,
+ 0x526d499,
+ 0x527549b,
+ 0x527949d,
+ 0x529d49e,
+ 0x52c14a7,
+ 0x52d94b0,
+ 0x52dd4b6,
+ 0x52e54b7,
+ 0x52e94b9,
+ 0x534d4ba,
+ 0x53514d3,
+ 0x53754d4,
+ 0x53954dd,
+ 0x53b14e5,
+ 0x53c14ec,
+ 0x53d54f0,
+ 0x53d94f5,
+ 0x53e14f6,
+ 0x53f54f8,
+ 0x54054fd,
+ 0x5409501,
+ 0x5425502,
+ 0x5cb5509,
+ 0x5ced72d,
+ 0x5d1973b,
+ 0x5d31746,
+ 0x5d5174c,
+ 0x5d71754,
+ 0x5db575c,
+ 0x5dbd76d,
+ 0x25dc176f,
+ 0x25dc5770,
+ 0x5dcd771,
+ 0x5f29773,
+ 0x25f2d7ca,
+ 0x25f3d7cb,
+ 0x25f457cf,
+ 0x25f517d1,
+ 0x5f557d4,
+ 0x5f597d5,
+ 0x5f817d6,
+ 0x5fa97e0,
+ 0x5fad7ea,
+ 0x5fe57eb,
+ 0x5ff97f9,
+ 0x6b517fe,
+ 0x6b55ad4,
+ 0x6b59ad5,
+ 0x26b5dad6,
+ 0x6b61ad7,
+ 0x26b65ad8,
+ 0x6b69ad9,
+ 0x26b75ada,
+ 0x6b79add,
+ 0x6b7dade,
+ 0x26b81adf,
+ 0x6b85ae0,
+ 0x26b8dae1,
+ 0x6b91ae3,
+ 0x6b95ae4,
+ 0x26ba5ae5,
+ 0x6ba9ae9,
+ 0x6badaea,
+ 0x6bb1aeb,
+ 0x6bb5aec,
+ 0x26bb9aed,
+ 0x6bbdaee,
+ 0x6bc1aef,
+ 0x6bc5af0,
+ 0x6bc9af1,
+ 0x26bd1af2,
+ 0x6bd5af4,
+ 0x6bd9af5,
+ 0x6bddaf6,
+ 0x26be1af7,
+ 0x6be5af8,
+ 0x26bedaf9,
+ 0x26bf1afb,
+ 0x6c0dafc,
+ 0x6c19b03,
+ 0x6c59b06,
+ 0x6c5db16,
+ 0x6c81b17,
+ 0x6c85b20,
+ 0x6c89b21,
+ 0x6e01b22,
+ 0x26e05b80,
+ 0x26e0db81,
+ 0x26e11b83,
+ 0x26e15b84,
+ 0x6e1db85,
+ 0x6ef9b87,
+ 0x26efdbbe,
+ 0x6f01bbf,
+ 0x6f2dbc0,
+ 0x6f31bcb,
+ 0x6f51bcc,
+ 0x6f5dbd4,
+ 0x6f7dbd7,
+ 0x6fb5bdf,
+ 0x724dbed,
+ 0x7309c93,
+ 0x731dcc2,
+ 0x7351cc7,
+ 0x7381cd4,
+ 0x739dce0,
+ 0x73c1ce7,
+ 0x73ddcf0,
+ 0x73f9cf7,
+ 0x741dcfe,
+ 0x742dd07,
+ 0x7431d0b,
+ 0x7465d0c,
+ 0x7481d19,
+ 0x74edd20,
+ 0x274f1d3b,
+ 0x7515d3c,
+ 0x7535d45,
+ 0x7549d4d,
+ 0x755dd52,
+ 0x7561d57,
+ 0x7581d58,
+ 0x7625d60,
+ 0x7641d89,
+ 0x7661d90,
+ 0x7665d98,
+ 0x766dd99,
+ 0x7671d9b,
+ 0x7685d9c,
+ 0x76a5da1,
+ 0x76b1da9,
+ 0x76bddac,
+ 0x76eddaf,
+ 0x77bddbb,
+ 0x77c1def,
+ 0x77d5df0,
+ 0x77d9df5,
+ 0x77f1df6,
+ 0x77f5dfc,
+ 0x7801dfd,
+ 0x7805e00,
+ 0x7821e01,
+ 0x785de08,
+ 0x7861e17,
+ 0x7881e18,
+ 0x78d1e20,
+ 0x78ede34,
+ 0x7941e3b,
+ 0x7945e50,
+ 0x7949e51,
+ 0x794de52,
+ 0x7991e53,
+ 0x79a1e64,
+ 0x79dde68,
+ 0x79e1e77,
+ 0x7a11e78,
+ 0x7b59e84,
+ 0x7b7ded6,
+ 0x7ba9edf,
+ 0x7bb5eea,
+ 0x7bbdeed,
+ 0x7ccdeef,
+ 0x7cd9f33,
+ 0x7ce5f36,
+ 0x7cf1f39,
+ 0x7cfdf3c,
+ 0x7d09f3f,
+ 0x7d15f42,
+ 0x7d21f45,
+ 0x7d2df48,
+ 0x7d39f4b,
+ 0x7d45f4e,
+ 0x7d51f51,
+ 0x7d5df54,
+ 0x7d69f57,
+ 0x7d71f5a,
+ 0x7d7df5c,
+ 0x7d89f5f,
+ 0x7d95f62,
+ 0x7da1f65,
+ 0x7dadf68,
+ 0x7db9f6b,
+ 0x7dc5f6e,
+ 0x7dd1f71,
+ 0x7dddf74,
+ 0x7de9f77,
+ 0x7df5f7a,
+ 0x7e01f7d,
+ 0x7e0df80,
+ 0x7e19f83,
+ 0x7e25f86,
+ 0x7e31f89,
+ 0x7e3df8c,
+ 0x7e45f8f,
+ 0x7e51f91,
+ 0x7e5df94,
+ 0x7e69f97,
+ 0x7e75f9a,
+ 0x7e81f9d,
+ 0x7e8dfa0,
+ 0x7e99fa3,
+ 0x7ea5fa6,
+ 0x7eb1fa9,
+ 0x7ebdfac,
+ 0x7ec9faf,
+ 0x7ed5fb2,
+ 0x7ee1fb5,
+ 0x7ee9fb8,
+ 0x7ef5fba,
+ 0x7f01fbd,
+ 0x7f0dfc0,
+ 0x7f19fc3,
+ 0x7f25fc6,
+ 0x7f31fc9,
+ 0x7f3dfcc,
+ 0x7f49fcf,
+ 0x7f4dfd2,
+ 0x7f59fd3,
+ 0x7f71fd6,
+ 0x7f75fdc,
+ 0x7f85fdd,
+ 0x7f9dfe1,
+ 0x7fe1fe7,
+ 0x7ff5ff8,
+ 0x8029ffd,
+ 0x803a00a,
+ 0x805a00e,
+ 0x8072016,
+ 0x808a01c,
+ 0x808e022,
+ 0x280d2023,
+ 0x80d6034,
+ 0x8102035,
+ 0x8106040,
+ 0x811a041,
+}
+
+// max children 479 (capacity 511)
+// max text offset 28411 (capacity 32767)
+// max text length 36 (capacity 63)
+// max hi 8262 (capacity 16383)
+// max lo 8257 (capacity 16383)
diff --git a/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/publicsuffix/table_test.go b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/publicsuffix/table_test.go
new file mode 100644
index 000000000..416512cb9
--- /dev/null
+++ b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/net/publicsuffix/table_test.go
@@ -0,0 +1,16474 @@
+// generated by go run gen.go; DO NOT EDIT
+
+package publicsuffix
+
+var rules = [...]string{
+ "ac",
+ "com.ac",
+ "edu.ac",
+ "gov.ac",
+ "net.ac",
+ "mil.ac",
+ "org.ac",
+ "ad",
+ "nom.ad",
+ "ae",
+ "co.ae",
+ "net.ae",
+ "org.ae",
+ "sch.ae",
+ "ac.ae",
+ "gov.ae",
+ "mil.ae",
+ "aero",
+ "accident-investigation.aero",
+ "accident-prevention.aero",
+ "aerobatic.aero",
+ "aeroclub.aero",
+ "aerodrome.aero",
+ "agents.aero",
+ "aircraft.aero",
+ "airline.aero",
+ "airport.aero",
+ "air-surveillance.aero",
+ "airtraffic.aero",
+ "air-traffic-control.aero",
+ "ambulance.aero",
+ "amusement.aero",
+ "association.aero",
+ "author.aero",
+ "ballooning.aero",
+ "broker.aero",
+ "caa.aero",
+ "cargo.aero",
+ "catering.aero",
+ "certification.aero",
+ "championship.aero",
+ "charter.aero",
+ "civilaviation.aero",
+ "club.aero",
+ "conference.aero",
+ "consultant.aero",
+ "consulting.aero",
+ "control.aero",
+ "council.aero",
+ "crew.aero",
+ "design.aero",
+ "dgca.aero",
+ "educator.aero",
+ "emergency.aero",
+ "engine.aero",
+ "engineer.aero",
+ "entertainment.aero",
+ "equipment.aero",
+ "exchange.aero",
+ "express.aero",
+ "federation.aero",
+ "flight.aero",
+ "freight.aero",
+ "fuel.aero",
+ "gliding.aero",
+ "government.aero",
+ "groundhandling.aero",
+ "group.aero",
+ "hanggliding.aero",
+ "homebuilt.aero",
+ "insurance.aero",
+ "journal.aero",
+ "journalist.aero",
+ "leasing.aero",
+ "logistics.aero",
+ "magazine.aero",
+ "maintenance.aero",
+ "media.aero",
+ "microlight.aero",
+ "modelling.aero",
+ "navigation.aero",
+ "parachuting.aero",
+ "paragliding.aero",
+ "passenger-association.aero",
+ "pilot.aero",
+ "press.aero",
+ "production.aero",
+ "recreation.aero",
+ "repbody.aero",
+ "res.aero",
+ "research.aero",
+ "rotorcraft.aero",
+ "safety.aero",
+ "scientist.aero",
+ "services.aero",
+ "show.aero",
+ "skydiving.aero",
+ "software.aero",
+ "student.aero",
+ "trader.aero",
+ "trading.aero",
+ "trainer.aero",
+ "union.aero",
+ "workinggroup.aero",
+ "works.aero",
+ "af",
+ "gov.af",
+ "com.af",
+ "org.af",
+ "net.af",
+ "edu.af",
+ "ag",
+ "com.ag",
+ "org.ag",
+ "net.ag",
+ "co.ag",
+ "nom.ag",
+ "ai",
+ "off.ai",
+ "com.ai",
+ "net.ai",
+ "org.ai",
+ "al",
+ "com.al",
+ "edu.al",
+ "gov.al",
+ "mil.al",
+ "net.al",
+ "org.al",
+ "am",
+ "ao",
+ "ed.ao",
+ "gv.ao",
+ "og.ao",
+ "co.ao",
+ "pb.ao",
+ "it.ao",
+ "aq",
+ "ar",
+ "com.ar",
+ "edu.ar",
+ "gob.ar",
+ "gov.ar",
+ "int.ar",
+ "mil.ar",
+ "musica.ar",
+ "net.ar",
+ "org.ar",
+ "tur.ar",
+ "arpa",
+ "e164.arpa",
+ "in-addr.arpa",
+ "ip6.arpa",
+ "iris.arpa",
+ "uri.arpa",
+ "urn.arpa",
+ "as",
+ "gov.as",
+ "asia",
+ "at",
+ "ac.at",
+ "co.at",
+ "gv.at",
+ "or.at",
+ "au",
+ "com.au",
+ "net.au",
+ "org.au",
+ "edu.au",
+ "gov.au",
+ "asn.au",
+ "id.au",
+ "info.au",
+ "conf.au",
+ "oz.au",
+ "act.au",
+ "nsw.au",
+ "nt.au",
+ "qld.au",
+ "sa.au",
+ "tas.au",
+ "vic.au",
+ "wa.au",
+ "act.edu.au",
+ "nsw.edu.au",
+ "nt.edu.au",
+ "qld.edu.au",
+ "sa.edu.au",
+ "tas.edu.au",
+ "vic.edu.au",
+ "wa.edu.au",
+ "qld.gov.au",
+ "sa.gov.au",
+ "tas.gov.au",
+ "vic.gov.au",
+ "wa.gov.au",
+ "aw",
+ "com.aw",
+ "ax",
+ "az",
+ "com.az",
+ "net.az",
+ "int.az",
+ "gov.az",
+ "org.az",
+ "edu.az",
+ "info.az",
+ "pp.az",
+ "mil.az",
+ "name.az",
+ "pro.az",
+ "biz.az",
+ "ba",
+ "com.ba",
+ "edu.ba",
+ "gov.ba",
+ "mil.ba",
+ "net.ba",
+ "org.ba",
+ "bb",
+ "biz.bb",
+ "co.bb",
+ "com.bb",
+ "edu.bb",
+ "gov.bb",
+ "info.bb",
+ "net.bb",
+ "org.bb",
+ "store.bb",
+ "tv.bb",
+ "*.bd",
+ "be",
+ "ac.be",
+ "bf",
+ "gov.bf",
+ "bg",
+ "a.bg",
+ "b.bg",
+ "c.bg",
+ "d.bg",
+ "e.bg",
+ "f.bg",
+ "g.bg",
+ "h.bg",
+ "i.bg",
+ "j.bg",
+ "k.bg",
+ "l.bg",
+ "m.bg",
+ "n.bg",
+ "o.bg",
+ "p.bg",
+ "q.bg",
+ "r.bg",
+ "s.bg",
+ "t.bg",
+ "u.bg",
+ "v.bg",
+ "w.bg",
+ "x.bg",
+ "y.bg",
+ "z.bg",
+ "0.bg",
+ "1.bg",
+ "2.bg",
+ "3.bg",
+ "4.bg",
+ "5.bg",
+ "6.bg",
+ "7.bg",
+ "8.bg",
+ "9.bg",
+ "bh",
+ "com.bh",
+ "edu.bh",
+ "net.bh",
+ "org.bh",
+ "gov.bh",
+ "bi",
+ "co.bi",
+ "com.bi",
+ "edu.bi",
+ "or.bi",
+ "org.bi",
+ "biz",
+ "bj",
+ "asso.bj",
+ "barreau.bj",
+ "gouv.bj",
+ "bm",
+ "com.bm",
+ "edu.bm",
+ "gov.bm",
+ "net.bm",
+ "org.bm",
+ "*.bn",
+ "bo",
+ "com.bo",
+ "edu.bo",
+ "gov.bo",
+ "gob.bo",
+ "int.bo",
+ "org.bo",
+ "net.bo",
+ "mil.bo",
+ "tv.bo",
+ "br",
+ "adm.br",
+ "adv.br",
+ "agr.br",
+ "am.br",
+ "arq.br",
+ "art.br",
+ "ato.br",
+ "b.br",
+ "belem.br",
+ "bio.br",
+ "blog.br",
+ "bmd.br",
+ "cim.br",
+ "cng.br",
+ "cnt.br",
+ "com.br",
+ "coop.br",
+ "cri.br",
+ "def.br",
+ "ecn.br",
+ "eco.br",
+ "edu.br",
+ "emp.br",
+ "eng.br",
+ "esp.br",
+ "etc.br",
+ "eti.br",
+ "far.br",
+ "flog.br",
+ "floripa.br",
+ "fm.br",
+ "fnd.br",
+ "fot.br",
+ "fst.br",
+ "g12.br",
+ "ggf.br",
+ "gov.br",
+ "ac.gov.br",
+ "al.gov.br",
+ "am.gov.br",
+ "ap.gov.br",
+ "ba.gov.br",
+ "ce.gov.br",
+ "df.gov.br",
+ "es.gov.br",
+ "go.gov.br",
+ "ma.gov.br",
+ "mg.gov.br",
+ "ms.gov.br",
+ "mt.gov.br",
+ "pa.gov.br",
+ "pb.gov.br",
+ "pe.gov.br",
+ "pi.gov.br",
+ "pr.gov.br",
+ "rj.gov.br",
+ "rn.gov.br",
+ "ro.gov.br",
+ "rr.gov.br",
+ "rs.gov.br",
+ "sc.gov.br",
+ "se.gov.br",
+ "sp.gov.br",
+ "to.gov.br",
+ "imb.br",
+ "ind.br",
+ "inf.br",
+ "jampa.br",
+ "jor.br",
+ "jus.br",
+ "leg.br",
+ "lel.br",
+ "mat.br",
+ "med.br",
+ "mil.br",
+ "mp.br",
+ "mus.br",
+ "net.br",
+ "*.nom.br",
+ "not.br",
+ "ntr.br",
+ "odo.br",
+ "org.br",
+ "poa.br",
+ "ppg.br",
+ "pro.br",
+ "psc.br",
+ "psi.br",
+ "qsl.br",
+ "radio.br",
+ "rec.br",
+ "recife.br",
+ "slg.br",
+ "srv.br",
+ "taxi.br",
+ "teo.br",
+ "tmp.br",
+ "trd.br",
+ "tur.br",
+ "tv.br",
+ "vet.br",
+ "vix.br",
+ "vlog.br",
+ "wiki.br",
+ "zlg.br",
+ "bs",
+ "com.bs",
+ "net.bs",
+ "org.bs",
+ "edu.bs",
+ "gov.bs",
+ "bt",
+ "com.bt",
+ "edu.bt",
+ "gov.bt",
+ "net.bt",
+ "org.bt",
+ "bv",
+ "bw",
+ "co.bw",
+ "org.bw",
+ "by",
+ "gov.by",
+ "mil.by",
+ "com.by",
+ "of.by",
+ "bz",
+ "com.bz",
+ "net.bz",
+ "org.bz",
+ "edu.bz",
+ "gov.bz",
+ "ca",
+ "ab.ca",
+ "bc.ca",
+ "mb.ca",
+ "nb.ca",
+ "nf.ca",
+ "nl.ca",
+ "ns.ca",
+ "nt.ca",
+ "nu.ca",
+ "on.ca",
+ "pe.ca",
+ "qc.ca",
+ "sk.ca",
+ "yk.ca",
+ "gc.ca",
+ "cat",
+ "cc",
+ "cd",
+ "gov.cd",
+ "cf",
+ "cg",
+ "ch",
+ "ci",
+ "org.ci",
+ "or.ci",
+ "com.ci",
+ "co.ci",
+ "edu.ci",
+ "ed.ci",
+ "ac.ci",
+ "net.ci",
+ "go.ci",
+ "asso.ci",
+ "xn--aroport-bya.ci",
+ "int.ci",
+ "presse.ci",
+ "md.ci",
+ "gouv.ci",
+ "*.ck",
+ "!www.ck",
+ "cl",
+ "gov.cl",
+ "gob.cl",
+ "co.cl",
+ "mil.cl",
+ "cm",
+ "co.cm",
+ "com.cm",
+ "gov.cm",
+ "net.cm",
+ "cn",
+ "ac.cn",
+ "com.cn",
+ "edu.cn",
+ "gov.cn",
+ "net.cn",
+ "org.cn",
+ "mil.cn",
+ "xn--55qx5d.cn",
+ "xn--io0a7i.cn",
+ "xn--od0alg.cn",
+ "ah.cn",
+ "bj.cn",
+ "cq.cn",
+ "fj.cn",
+ "gd.cn",
+ "gs.cn",
+ "gz.cn",
+ "gx.cn",
+ "ha.cn",
+ "hb.cn",
+ "he.cn",
+ "hi.cn",
+ "hl.cn",
+ "hn.cn",
+ "jl.cn",
+ "js.cn",
+ "jx.cn",
+ "ln.cn",
+ "nm.cn",
+ "nx.cn",
+ "qh.cn",
+ "sc.cn",
+ "sd.cn",
+ "sh.cn",
+ "sn.cn",
+ "sx.cn",
+ "tj.cn",
+ "xj.cn",
+ "xz.cn",
+ "yn.cn",
+ "zj.cn",
+ "hk.cn",
+ "mo.cn",
+ "tw.cn",
+ "co",
+ "arts.co",
+ "com.co",
+ "edu.co",
+ "firm.co",
+ "gov.co",
+ "info.co",
+ "int.co",
+ "mil.co",
+ "net.co",
+ "nom.co",
+ "org.co",
+ "rec.co",
+ "web.co",
+ "com",
+ "coop",
+ "cr",
+ "ac.cr",
+ "co.cr",
+ "ed.cr",
+ "fi.cr",
+ "go.cr",
+ "or.cr",
+ "sa.cr",
+ "cu",
+ "com.cu",
+ "edu.cu",
+ "org.cu",
+ "net.cu",
+ "gov.cu",
+ "inf.cu",
+ "cv",
+ "cw",
+ "com.cw",
+ "edu.cw",
+ "net.cw",
+ "org.cw",
+ "cx",
+ "gov.cx",
+ "cy",
+ "ac.cy",
+ "biz.cy",
+ "com.cy",
+ "ekloges.cy",
+ "gov.cy",
+ "ltd.cy",
+ "name.cy",
+ "net.cy",
+ "org.cy",
+ "parliament.cy",
+ "press.cy",
+ "pro.cy",
+ "tm.cy",
+ "cz",
+ "de",
+ "dj",
+ "dk",
+ "dm",
+ "com.dm",
+ "net.dm",
+ "org.dm",
+ "edu.dm",
+ "gov.dm",
+ "do",
+ "art.do",
+ "com.do",
+ "edu.do",
+ "gob.do",
+ "gov.do",
+ "mil.do",
+ "net.do",
+ "org.do",
+ "sld.do",
+ "web.do",
+ "dz",
+ "com.dz",
+ "org.dz",
+ "net.dz",
+ "gov.dz",
+ "edu.dz",
+ "asso.dz",
+ "pol.dz",
+ "art.dz",
+ "ec",
+ "com.ec",
+ "info.ec",
+ "net.ec",
+ "fin.ec",
+ "k12.ec",
+ "med.ec",
+ "pro.ec",
+ "org.ec",
+ "edu.ec",
+ "gov.ec",
+ "gob.ec",
+ "mil.ec",
+ "edu",
+ "ee",
+ "edu.ee",
+ "gov.ee",
+ "riik.ee",
+ "lib.ee",
+ "med.ee",
+ "com.ee",
+ "pri.ee",
+ "aip.ee",
+ "org.ee",
+ "fie.ee",
+ "eg",
+ "com.eg",
+ "edu.eg",
+ "eun.eg",
+ "gov.eg",
+ "mil.eg",
+ "name.eg",
+ "net.eg",
+ "org.eg",
+ "sci.eg",
+ "*.er",
+ "es",
+ "com.es",
+ "nom.es",
+ "org.es",
+ "gob.es",
+ "edu.es",
+ "et",
+ "com.et",
+ "gov.et",
+ "org.et",
+ "edu.et",
+ "biz.et",
+ "name.et",
+ "info.et",
+ "net.et",
+ "eu",
+ "fi",
+ "aland.fi",
+ "*.fj",
+ "*.fk",
+ "fm",
+ "fo",
+ "fr",
+ "com.fr",
+ "asso.fr",
+ "nom.fr",
+ "prd.fr",
+ "presse.fr",
+ "tm.fr",
+ "aeroport.fr",
+ "assedic.fr",
+ "avocat.fr",
+ "avoues.fr",
+ "cci.fr",
+ "chambagri.fr",
+ "chirurgiens-dentistes.fr",
+ "experts-comptables.fr",
+ "geometre-expert.fr",
+ "gouv.fr",
+ "greta.fr",
+ "huissier-justice.fr",
+ "medecin.fr",
+ "notaires.fr",
+ "pharmacien.fr",
+ "port.fr",
+ "veterinaire.fr",
+ "ga",
+ "gb",
+ "gd",
+ "ge",
+ "com.ge",
+ "edu.ge",
+ "gov.ge",
+ "org.ge",
+ "mil.ge",
+ "net.ge",
+ "pvt.ge",
+ "gf",
+ "gg",
+ "co.gg",
+ "net.gg",
+ "org.gg",
+ "gh",
+ "com.gh",
+ "edu.gh",
+ "gov.gh",
+ "org.gh",
+ "mil.gh",
+ "gi",
+ "com.gi",
+ "ltd.gi",
+ "gov.gi",
+ "mod.gi",
+ "edu.gi",
+ "org.gi",
+ "gl",
+ "co.gl",
+ "com.gl",
+ "edu.gl",
+ "net.gl",
+ "org.gl",
+ "gm",
+ "gn",
+ "ac.gn",
+ "com.gn",
+ "edu.gn",
+ "gov.gn",
+ "org.gn",
+ "net.gn",
+ "gov",
+ "gp",
+ "com.gp",
+ "net.gp",
+ "mobi.gp",
+ "edu.gp",
+ "org.gp",
+ "asso.gp",
+ "gq",
+ "gr",
+ "com.gr",
+ "edu.gr",
+ "net.gr",
+ "org.gr",
+ "gov.gr",
+ "gs",
+ "gt",
+ "com.gt",
+ "edu.gt",
+ "gob.gt",
+ "ind.gt",
+ "mil.gt",
+ "net.gt",
+ "org.gt",
+ "*.gu",
+ "gw",
+ "gy",
+ "co.gy",
+ "com.gy",
+ "edu.gy",
+ "gov.gy",
+ "net.gy",
+ "org.gy",
+ "hk",
+ "com.hk",
+ "edu.hk",
+ "gov.hk",
+ "idv.hk",
+ "net.hk",
+ "org.hk",
+ "xn--55qx5d.hk",
+ "xn--wcvs22d.hk",
+ "xn--lcvr32d.hk",
+ "xn--mxtq1m.hk",
+ "xn--gmqw5a.hk",
+ "xn--ciqpn.hk",
+ "xn--gmq050i.hk",
+ "xn--zf0avx.hk",
+ "xn--io0a7i.hk",
+ "xn--mk0axi.hk",
+ "xn--od0alg.hk",
+ "xn--od0aq3b.hk",
+ "xn--tn0ag.hk",
+ "xn--uc0atv.hk",
+ "xn--uc0ay4a.hk",
+ "hm",
+ "hn",
+ "com.hn",
+ "edu.hn",
+ "org.hn",
+ "net.hn",
+ "mil.hn",
+ "gob.hn",
+ "hr",
+ "iz.hr",
+ "from.hr",
+ "name.hr",
+ "com.hr",
+ "ht",
+ "com.ht",
+ "shop.ht",
+ "firm.ht",
+ "info.ht",
+ "adult.ht",
+ "net.ht",
+ "pro.ht",
+ "org.ht",
+ "med.ht",
+ "art.ht",
+ "coop.ht",
+ "pol.ht",
+ "asso.ht",
+ "edu.ht",
+ "rel.ht",
+ "gouv.ht",
+ "perso.ht",
+ "hu",
+ "co.hu",
+ "info.hu",
+ "org.hu",
+ "priv.hu",
+ "sport.hu",
+ "tm.hu",
+ "2000.hu",
+ "agrar.hu",
+ "bolt.hu",
+ "casino.hu",
+ "city.hu",
+ "erotica.hu",
+ "erotika.hu",
+ "film.hu",
+ "forum.hu",
+ "games.hu",
+ "hotel.hu",
+ "ingatlan.hu",
+ "jogasz.hu",
+ "konyvelo.hu",
+ "lakas.hu",
+ "media.hu",
+ "news.hu",
+ "reklam.hu",
+ "sex.hu",
+ "shop.hu",
+ "suli.hu",
+ "szex.hu",
+ "tozsde.hu",
+ "utazas.hu",
+ "video.hu",
+ "id",
+ "ac.id",
+ "biz.id",
+ "co.id",
+ "desa.id",
+ "go.id",
+ "mil.id",
+ "my.id",
+ "net.id",
+ "or.id",
+ "sch.id",
+ "web.id",
+ "ie",
+ "gov.ie",
+ "il",
+ "ac.il",
+ "co.il",
+ "gov.il",
+ "idf.il",
+ "k12.il",
+ "muni.il",
+ "net.il",
+ "org.il",
+ "im",
+ "ac.im",
+ "co.im",
+ "com.im",
+ "ltd.co.im",
+ "net.im",
+ "org.im",
+ "plc.co.im",
+ "tt.im",
+ "tv.im",
+ "in",
+ "co.in",
+ "firm.in",
+ "net.in",
+ "org.in",
+ "gen.in",
+ "ind.in",
+ "nic.in",
+ "ac.in",
+ "edu.in",
+ "res.in",
+ "gov.in",
+ "mil.in",
+ "info",
+ "int",
+ "eu.int",
+ "io",
+ "com.io",
+ "iq",
+ "gov.iq",
+ "edu.iq",
+ "mil.iq",
+ "com.iq",
+ "org.iq",
+ "net.iq",
+ "ir",
+ "ac.ir",
+ "co.ir",
+ "gov.ir",
+ "id.ir",
+ "net.ir",
+ "org.ir",
+ "sch.ir",
+ "xn--mgba3a4f16a.ir",
+ "xn--mgba3a4fra.ir",
+ "is",
+ "net.is",
+ "com.is",
+ "edu.is",
+ "gov.is",
+ "org.is",
+ "int.is",
+ "it",
+ "gov.it",
+ "edu.it",
+ "abr.it",
+ "abruzzo.it",
+ "aosta-valley.it",
+ "aostavalley.it",
+ "bas.it",
+ "basilicata.it",
+ "cal.it",
+ "calabria.it",
+ "cam.it",
+ "campania.it",
+ "emilia-romagna.it",
+ "emiliaromagna.it",
+ "emr.it",
+ "friuli-v-giulia.it",
+ "friuli-ve-giulia.it",
+ "friuli-vegiulia.it",
+ "friuli-venezia-giulia.it",
+ "friuli-veneziagiulia.it",
+ "friuli-vgiulia.it",
+ "friuliv-giulia.it",
+ "friulive-giulia.it",
+ "friulivegiulia.it",
+ "friulivenezia-giulia.it",
+ "friuliveneziagiulia.it",
+ "friulivgiulia.it",
+ "fvg.it",
+ "laz.it",
+ "lazio.it",
+ "lig.it",
+ "liguria.it",
+ "lom.it",
+ "lombardia.it",
+ "lombardy.it",
+ "lucania.it",
+ "mar.it",
+ "marche.it",
+ "mol.it",
+ "molise.it",
+ "piedmont.it",
+ "piemonte.it",
+ "pmn.it",
+ "pug.it",
+ "puglia.it",
+ "sar.it",
+ "sardegna.it",
+ "sardinia.it",
+ "sic.it",
+ "sicilia.it",
+ "sicily.it",
+ "taa.it",
+ "tos.it",
+ "toscana.it",
+ "trentino-a-adige.it",
+ "trentino-aadige.it",
+ "trentino-alto-adige.it",
+ "trentino-altoadige.it",
+ "trentino-s-tirol.it",
+ "trentino-stirol.it",
+ "trentino-sud-tirol.it",
+ "trentino-sudtirol.it",
+ "trentino-sued-tirol.it",
+ "trentino-suedtirol.it",
+ "trentinoa-adige.it",
+ "trentinoaadige.it",
+ "trentinoalto-adige.it",
+ "trentinoaltoadige.it",
+ "trentinos-tirol.it",
+ "trentinostirol.it",
+ "trentinosud-tirol.it",
+ "trentinosudtirol.it",
+ "trentinosued-tirol.it",
+ "trentinosuedtirol.it",
+ "tuscany.it",
+ "umb.it",
+ "umbria.it",
+ "val-d-aosta.it",
+ "val-daosta.it",
+ "vald-aosta.it",
+ "valdaosta.it",
+ "valle-aosta.it",
+ "valle-d-aosta.it",
+ "valle-daosta.it",
+ "valleaosta.it",
+ "valled-aosta.it",
+ "valledaosta.it",
+ "vallee-aoste.it",
+ "valleeaoste.it",
+ "vao.it",
+ "vda.it",
+ "ven.it",
+ "veneto.it",
+ "ag.it",
+ "agrigento.it",
+ "al.it",
+ "alessandria.it",
+ "alto-adige.it",
+ "altoadige.it",
+ "an.it",
+ "ancona.it",
+ "andria-barletta-trani.it",
+ "andria-trani-barletta.it",
+ "andriabarlettatrani.it",
+ "andriatranibarletta.it",
+ "ao.it",
+ "aosta.it",
+ "aoste.it",
+ "ap.it",
+ "aq.it",
+ "aquila.it",
+ "ar.it",
+ "arezzo.it",
+ "ascoli-piceno.it",
+ "ascolipiceno.it",
+ "asti.it",
+ "at.it",
+ "av.it",
+ "avellino.it",
+ "ba.it",
+ "balsan.it",
+ "bari.it",
+ "barletta-trani-andria.it",
+ "barlettatraniandria.it",
+ "belluno.it",
+ "benevento.it",
+ "bergamo.it",
+ "bg.it",
+ "bi.it",
+ "biella.it",
+ "bl.it",
+ "bn.it",
+ "bo.it",
+ "bologna.it",
+ "bolzano.it",
+ "bozen.it",
+ "br.it",
+ "brescia.it",
+ "brindisi.it",
+ "bs.it",
+ "bt.it",
+ "bz.it",
+ "ca.it",
+ "cagliari.it",
+ "caltanissetta.it",
+ "campidano-medio.it",
+ "campidanomedio.it",
+ "campobasso.it",
+ "carbonia-iglesias.it",
+ "carboniaiglesias.it",
+ "carrara-massa.it",
+ "carraramassa.it",
+ "caserta.it",
+ "catania.it",
+ "catanzaro.it",
+ "cb.it",
+ "ce.it",
+ "cesena-forli.it",
+ "cesenaforli.it",
+ "ch.it",
+ "chieti.it",
+ "ci.it",
+ "cl.it",
+ "cn.it",
+ "co.it",
+ "como.it",
+ "cosenza.it",
+ "cr.it",
+ "cremona.it",
+ "crotone.it",
+ "cs.it",
+ "ct.it",
+ "cuneo.it",
+ "cz.it",
+ "dell-ogliastra.it",
+ "dellogliastra.it",
+ "en.it",
+ "enna.it",
+ "fc.it",
+ "fe.it",
+ "fermo.it",
+ "ferrara.it",
+ "fg.it",
+ "fi.it",
+ "firenze.it",
+ "florence.it",
+ "fm.it",
+ "foggia.it",
+ "forli-cesena.it",
+ "forlicesena.it",
+ "fr.it",
+ "frosinone.it",
+ "ge.it",
+ "genoa.it",
+ "genova.it",
+ "go.it",
+ "gorizia.it",
+ "gr.it",
+ "grosseto.it",
+ "iglesias-carbonia.it",
+ "iglesiascarbonia.it",
+ "im.it",
+ "imperia.it",
+ "is.it",
+ "isernia.it",
+ "kr.it",
+ "la-spezia.it",
+ "laquila.it",
+ "laspezia.it",
+ "latina.it",
+ "lc.it",
+ "le.it",
+ "lecce.it",
+ "lecco.it",
+ "li.it",
+ "livorno.it",
+ "lo.it",
+ "lodi.it",
+ "lt.it",
+ "lu.it",
+ "lucca.it",
+ "macerata.it",
+ "mantova.it",
+ "massa-carrara.it",
+ "massacarrara.it",
+ "matera.it",
+ "mb.it",
+ "mc.it",
+ "me.it",
+ "medio-campidano.it",
+ "mediocampidano.it",
+ "messina.it",
+ "mi.it",
+ "milan.it",
+ "milano.it",
+ "mn.it",
+ "mo.it",
+ "modena.it",
+ "monza-brianza.it",
+ "monza-e-della-brianza.it",
+ "monza.it",
+ "monzabrianza.it",
+ "monzaebrianza.it",
+ "monzaedellabrianza.it",
+ "ms.it",
+ "mt.it",
+ "na.it",
+ "naples.it",
+ "napoli.it",
+ "no.it",
+ "novara.it",
+ "nu.it",
+ "nuoro.it",
+ "og.it",
+ "ogliastra.it",
+ "olbia-tempio.it",
+ "olbiatempio.it",
+ "or.it",
+ "oristano.it",
+ "ot.it",
+ "pa.it",
+ "padova.it",
+ "padua.it",
+ "palermo.it",
+ "parma.it",
+ "pavia.it",
+ "pc.it",
+ "pd.it",
+ "pe.it",
+ "perugia.it",
+ "pesaro-urbino.it",
+ "pesarourbino.it",
+ "pescara.it",
+ "pg.it",
+ "pi.it",
+ "piacenza.it",
+ "pisa.it",
+ "pistoia.it",
+ "pn.it",
+ "po.it",
+ "pordenone.it",
+ "potenza.it",
+ "pr.it",
+ "prato.it",
+ "pt.it",
+ "pu.it",
+ "pv.it",
+ "pz.it",
+ "ra.it",
+ "ragusa.it",
+ "ravenna.it",
+ "rc.it",
+ "re.it",
+ "reggio-calabria.it",
+ "reggio-emilia.it",
+ "reggiocalabria.it",
+ "reggioemilia.it",
+ "rg.it",
+ "ri.it",
+ "rieti.it",
+ "rimini.it",
+ "rm.it",
+ "rn.it",
+ "ro.it",
+ "roma.it",
+ "rome.it",
+ "rovigo.it",
+ "sa.it",
+ "salerno.it",
+ "sassari.it",
+ "savona.it",
+ "si.it",
+ "siena.it",
+ "siracusa.it",
+ "so.it",
+ "sondrio.it",
+ "sp.it",
+ "sr.it",
+ "ss.it",
+ "suedtirol.it",
+ "sv.it",
+ "ta.it",
+ "taranto.it",
+ "te.it",
+ "tempio-olbia.it",
+ "tempioolbia.it",
+ "teramo.it",
+ "terni.it",
+ "tn.it",
+ "to.it",
+ "torino.it",
+ "tp.it",
+ "tr.it",
+ "trani-andria-barletta.it",
+ "trani-barletta-andria.it",
+ "traniandriabarletta.it",
+ "tranibarlettaandria.it",
+ "trapani.it",
+ "trentino.it",
+ "trento.it",
+ "treviso.it",
+ "trieste.it",
+ "ts.it",
+ "turin.it",
+ "tv.it",
+ "ud.it",
+ "udine.it",
+ "urbino-pesaro.it",
+ "urbinopesaro.it",
+ "va.it",
+ "varese.it",
+ "vb.it",
+ "vc.it",
+ "ve.it",
+ "venezia.it",
+ "venice.it",
+ "verbania.it",
+ "vercelli.it",
+ "verona.it",
+ "vi.it",
+ "vibo-valentia.it",
+ "vibovalentia.it",
+ "vicenza.it",
+ "viterbo.it",
+ "vr.it",
+ "vs.it",
+ "vt.it",
+ "vv.it",
+ "je",
+ "co.je",
+ "net.je",
+ "org.je",
+ "*.jm",
+ "jo",
+ "com.jo",
+ "org.jo",
+ "net.jo",
+ "edu.jo",
+ "sch.jo",
+ "gov.jo",
+ "mil.jo",
+ "name.jo",
+ "jobs",
+ "jp",
+ "ac.jp",
+ "ad.jp",
+ "co.jp",
+ "ed.jp",
+ "go.jp",
+ "gr.jp",
+ "lg.jp",
+ "ne.jp",
+ "or.jp",
+ "aichi.jp",
+ "akita.jp",
+ "aomori.jp",
+ "chiba.jp",
+ "ehime.jp",
+ "fukui.jp",
+ "fukuoka.jp",
+ "fukushima.jp",
+ "gifu.jp",
+ "gunma.jp",
+ "hiroshima.jp",
+ "hokkaido.jp",
+ "hyogo.jp",
+ "ibaraki.jp",
+ "ishikawa.jp",
+ "iwate.jp",
+ "kagawa.jp",
+ "kagoshima.jp",
+ "kanagawa.jp",
+ "kochi.jp",
+ "kumamoto.jp",
+ "kyoto.jp",
+ "mie.jp",
+ "miyagi.jp",
+ "miyazaki.jp",
+ "nagano.jp",
+ "nagasaki.jp",
+ "nara.jp",
+ "niigata.jp",
+ "oita.jp",
+ "okayama.jp",
+ "okinawa.jp",
+ "osaka.jp",
+ "saga.jp",
+ "saitama.jp",
+ "shiga.jp",
+ "shimane.jp",
+ "shizuoka.jp",
+ "tochigi.jp",
+ "tokushima.jp",
+ "tokyo.jp",
+ "tottori.jp",
+ "toyama.jp",
+ "wakayama.jp",
+ "yamagata.jp",
+ "yamaguchi.jp",
+ "yamanashi.jp",
+ "xn--4pvxs.jp",
+ "xn--vgu402c.jp",
+ "xn--c3s14m.jp",
+ "xn--f6qx53a.jp",
+ "xn--8pvr4u.jp",
+ "xn--uist22h.jp",
+ "xn--djrs72d6uy.jp",
+ "xn--mkru45i.jp",
+ "xn--0trq7p7nn.jp",
+ "xn--8ltr62k.jp",
+ "xn--2m4a15e.jp",
+ "xn--efvn9s.jp",
+ "xn--32vp30h.jp",
+ "xn--4it797k.jp",
+ "xn--1lqs71d.jp",
+ "xn--5rtp49c.jp",
+ "xn--5js045d.jp",
+ "xn--ehqz56n.jp",
+ "xn--1lqs03n.jp",
+ "xn--qqqt11m.jp",
+ "xn--kbrq7o.jp",
+ "xn--pssu33l.jp",
+ "xn--ntsq17g.jp",
+ "xn--uisz3g.jp",
+ "xn--6btw5a.jp",
+ "xn--1ctwo.jp",
+ "xn--6orx2r.jp",
+ "xn--rht61e.jp",
+ "xn--rht27z.jp",
+ "xn--djty4k.jp",
+ "xn--nit225k.jp",
+ "xn--rht3d.jp",
+ "xn--klty5x.jp",
+ "xn--kltx9a.jp",
+ "xn--kltp7d.jp",
+ "xn--uuwu58a.jp",
+ "xn--zbx025d.jp",
+ "xn--ntso0iqx3a.jp",
+ "xn--elqq16h.jp",
+ "xn--4it168d.jp",
+ "xn--klt787d.jp",
+ "xn--rny31h.jp",
+ "xn--7t0a264c.jp",
+ "xn--5rtq34k.jp",
+ "xn--k7yn95e.jp",
+ "xn--tor131o.jp",
+ "xn--d5qv7z876c.jp",
+ "*.kawasaki.jp",
+ "*.kitakyushu.jp",
+ "*.kobe.jp",
+ "*.nagoya.jp",
+ "*.sapporo.jp",
+ "*.sendai.jp",
+ "*.yokohama.jp",
+ "!city.kawasaki.jp",
+ "!city.kitakyushu.jp",
+ "!city.kobe.jp",
+ "!city.nagoya.jp",
+ "!city.sapporo.jp",
+ "!city.sendai.jp",
+ "!city.yokohama.jp",
+ "aisai.aichi.jp",
+ "ama.aichi.jp",
+ "anjo.aichi.jp",
+ "asuke.aichi.jp",
+ "chiryu.aichi.jp",
+ "chita.aichi.jp",
+ "fuso.aichi.jp",
+ "gamagori.aichi.jp",
+ "handa.aichi.jp",
+ "hazu.aichi.jp",
+ "hekinan.aichi.jp",
+ "higashiura.aichi.jp",
+ "ichinomiya.aichi.jp",
+ "inazawa.aichi.jp",
+ "inuyama.aichi.jp",
+ "isshiki.aichi.jp",
+ "iwakura.aichi.jp",
+ "kanie.aichi.jp",
+ "kariya.aichi.jp",
+ "kasugai.aichi.jp",
+ "kira.aichi.jp",
+ "kiyosu.aichi.jp",
+ "komaki.aichi.jp",
+ "konan.aichi.jp",
+ "kota.aichi.jp",
+ "mihama.aichi.jp",
+ "miyoshi.aichi.jp",
+ "nishio.aichi.jp",
+ "nisshin.aichi.jp",
+ "obu.aichi.jp",
+ "oguchi.aichi.jp",
+ "oharu.aichi.jp",
+ "okazaki.aichi.jp",
+ "owariasahi.aichi.jp",
+ "seto.aichi.jp",
+ "shikatsu.aichi.jp",
+ "shinshiro.aichi.jp",
+ "shitara.aichi.jp",
+ "tahara.aichi.jp",
+ "takahama.aichi.jp",
+ "tobishima.aichi.jp",
+ "toei.aichi.jp",
+ "togo.aichi.jp",
+ "tokai.aichi.jp",
+ "tokoname.aichi.jp",
+ "toyoake.aichi.jp",
+ "toyohashi.aichi.jp",
+ "toyokawa.aichi.jp",
+ "toyone.aichi.jp",
+ "toyota.aichi.jp",
+ "tsushima.aichi.jp",
+ "yatomi.aichi.jp",
+ "akita.akita.jp",
+ "daisen.akita.jp",
+ "fujisato.akita.jp",
+ "gojome.akita.jp",
+ "hachirogata.akita.jp",
+ "happou.akita.jp",
+ "higashinaruse.akita.jp",
+ "honjo.akita.jp",
+ "honjyo.akita.jp",
+ "ikawa.akita.jp",
+ "kamikoani.akita.jp",
+ "kamioka.akita.jp",
+ "katagami.akita.jp",
+ "kazuno.akita.jp",
+ "kitaakita.akita.jp",
+ "kosaka.akita.jp",
+ "kyowa.akita.jp",
+ "misato.akita.jp",
+ "mitane.akita.jp",
+ "moriyoshi.akita.jp",
+ "nikaho.akita.jp",
+ "noshiro.akita.jp",
+ "odate.akita.jp",
+ "oga.akita.jp",
+ "ogata.akita.jp",
+ "semboku.akita.jp",
+ "yokote.akita.jp",
+ "yurihonjo.akita.jp",
+ "aomori.aomori.jp",
+ "gonohe.aomori.jp",
+ "hachinohe.aomori.jp",
+ "hashikami.aomori.jp",
+ "hiranai.aomori.jp",
+ "hirosaki.aomori.jp",
+ "itayanagi.aomori.jp",
+ "kuroishi.aomori.jp",
+ "misawa.aomori.jp",
+ "mutsu.aomori.jp",
+ "nakadomari.aomori.jp",
+ "noheji.aomori.jp",
+ "oirase.aomori.jp",
+ "owani.aomori.jp",
+ "rokunohe.aomori.jp",
+ "sannohe.aomori.jp",
+ "shichinohe.aomori.jp",
+ "shingo.aomori.jp",
+ "takko.aomori.jp",
+ "towada.aomori.jp",
+ "tsugaru.aomori.jp",
+ "tsuruta.aomori.jp",
+ "abiko.chiba.jp",
+ "asahi.chiba.jp",
+ "chonan.chiba.jp",
+ "chosei.chiba.jp",
+ "choshi.chiba.jp",
+ "chuo.chiba.jp",
+ "funabashi.chiba.jp",
+ "futtsu.chiba.jp",
+ "hanamigawa.chiba.jp",
+ "ichihara.chiba.jp",
+ "ichikawa.chiba.jp",
+ "ichinomiya.chiba.jp",
+ "inzai.chiba.jp",
+ "isumi.chiba.jp",
+ "kamagaya.chiba.jp",
+ "kamogawa.chiba.jp",
+ "kashiwa.chiba.jp",
+ "katori.chiba.jp",
+ "katsuura.chiba.jp",
+ "kimitsu.chiba.jp",
+ "kisarazu.chiba.jp",
+ "kozaki.chiba.jp",
+ "kujukuri.chiba.jp",
+ "kyonan.chiba.jp",
+ "matsudo.chiba.jp",
+ "midori.chiba.jp",
+ "mihama.chiba.jp",
+ "minamiboso.chiba.jp",
+ "mobara.chiba.jp",
+ "mutsuzawa.chiba.jp",
+ "nagara.chiba.jp",
+ "nagareyama.chiba.jp",
+ "narashino.chiba.jp",
+ "narita.chiba.jp",
+ "noda.chiba.jp",
+ "oamishirasato.chiba.jp",
+ "omigawa.chiba.jp",
+ "onjuku.chiba.jp",
+ "otaki.chiba.jp",
+ "sakae.chiba.jp",
+ "sakura.chiba.jp",
+ "shimofusa.chiba.jp",
+ "shirako.chiba.jp",
+ "shiroi.chiba.jp",
+ "shisui.chiba.jp",
+ "sodegaura.chiba.jp",
+ "sosa.chiba.jp",
+ "tako.chiba.jp",
+ "tateyama.chiba.jp",
+ "togane.chiba.jp",
+ "tohnosho.chiba.jp",
+ "tomisato.chiba.jp",
+ "urayasu.chiba.jp",
+ "yachimata.chiba.jp",
+ "yachiyo.chiba.jp",
+ "yokaichiba.chiba.jp",
+ "yokoshibahikari.chiba.jp",
+ "yotsukaido.chiba.jp",
+ "ainan.ehime.jp",
+ "honai.ehime.jp",
+ "ikata.ehime.jp",
+ "imabari.ehime.jp",
+ "iyo.ehime.jp",
+ "kamijima.ehime.jp",
+ "kihoku.ehime.jp",
+ "kumakogen.ehime.jp",
+ "masaki.ehime.jp",
+ "matsuno.ehime.jp",
+ "matsuyama.ehime.jp",
+ "namikata.ehime.jp",
+ "niihama.ehime.jp",
+ "ozu.ehime.jp",
+ "saijo.ehime.jp",
+ "seiyo.ehime.jp",
+ "shikokuchuo.ehime.jp",
+ "tobe.ehime.jp",
+ "toon.ehime.jp",
+ "uchiko.ehime.jp",
+ "uwajima.ehime.jp",
+ "yawatahama.ehime.jp",
+ "echizen.fukui.jp",
+ "eiheiji.fukui.jp",
+ "fukui.fukui.jp",
+ "ikeda.fukui.jp",
+ "katsuyama.fukui.jp",
+ "mihama.fukui.jp",
+ "minamiechizen.fukui.jp",
+ "obama.fukui.jp",
+ "ohi.fukui.jp",
+ "ono.fukui.jp",
+ "sabae.fukui.jp",
+ "sakai.fukui.jp",
+ "takahama.fukui.jp",
+ "tsuruga.fukui.jp",
+ "wakasa.fukui.jp",
+ "ashiya.fukuoka.jp",
+ "buzen.fukuoka.jp",
+ "chikugo.fukuoka.jp",
+ "chikuho.fukuoka.jp",
+ "chikujo.fukuoka.jp",
+ "chikushino.fukuoka.jp",
+ "chikuzen.fukuoka.jp",
+ "chuo.fukuoka.jp",
+ "dazaifu.fukuoka.jp",
+ "fukuchi.fukuoka.jp",
+ "hakata.fukuoka.jp",
+ "higashi.fukuoka.jp",
+ "hirokawa.fukuoka.jp",
+ "hisayama.fukuoka.jp",
+ "iizuka.fukuoka.jp",
+ "inatsuki.fukuoka.jp",
+ "kaho.fukuoka.jp",
+ "kasuga.fukuoka.jp",
+ "kasuya.fukuoka.jp",
+ "kawara.fukuoka.jp",
+ "keisen.fukuoka.jp",
+ "koga.fukuoka.jp",
+ "kurate.fukuoka.jp",
+ "kurogi.fukuoka.jp",
+ "kurume.fukuoka.jp",
+ "minami.fukuoka.jp",
+ "miyako.fukuoka.jp",
+ "miyama.fukuoka.jp",
+ "miyawaka.fukuoka.jp",
+ "mizumaki.fukuoka.jp",
+ "munakata.fukuoka.jp",
+ "nakagawa.fukuoka.jp",
+ "nakama.fukuoka.jp",
+ "nishi.fukuoka.jp",
+ "nogata.fukuoka.jp",
+ "ogori.fukuoka.jp",
+ "okagaki.fukuoka.jp",
+ "okawa.fukuoka.jp",
+ "oki.fukuoka.jp",
+ "omuta.fukuoka.jp",
+ "onga.fukuoka.jp",
+ "onojo.fukuoka.jp",
+ "oto.fukuoka.jp",
+ "saigawa.fukuoka.jp",
+ "sasaguri.fukuoka.jp",
+ "shingu.fukuoka.jp",
+ "shinyoshitomi.fukuoka.jp",
+ "shonai.fukuoka.jp",
+ "soeda.fukuoka.jp",
+ "sue.fukuoka.jp",
+ "tachiarai.fukuoka.jp",
+ "tagawa.fukuoka.jp",
+ "takata.fukuoka.jp",
+ "toho.fukuoka.jp",
+ "toyotsu.fukuoka.jp",
+ "tsuiki.fukuoka.jp",
+ "ukiha.fukuoka.jp",
+ "umi.fukuoka.jp",
+ "usui.fukuoka.jp",
+ "yamada.fukuoka.jp",
+ "yame.fukuoka.jp",
+ "yanagawa.fukuoka.jp",
+ "yukuhashi.fukuoka.jp",
+ "aizubange.fukushima.jp",
+ "aizumisato.fukushima.jp",
+ "aizuwakamatsu.fukushima.jp",
+ "asakawa.fukushima.jp",
+ "bandai.fukushima.jp",
+ "date.fukushima.jp",
+ "fukushima.fukushima.jp",
+ "furudono.fukushima.jp",
+ "futaba.fukushima.jp",
+ "hanawa.fukushima.jp",
+ "higashi.fukushima.jp",
+ "hirata.fukushima.jp",
+ "hirono.fukushima.jp",
+ "iitate.fukushima.jp",
+ "inawashiro.fukushima.jp",
+ "ishikawa.fukushima.jp",
+ "iwaki.fukushima.jp",
+ "izumizaki.fukushima.jp",
+ "kagamiishi.fukushima.jp",
+ "kaneyama.fukushima.jp",
+ "kawamata.fukushima.jp",
+ "kitakata.fukushima.jp",
+ "kitashiobara.fukushima.jp",
+ "koori.fukushima.jp",
+ "koriyama.fukushima.jp",
+ "kunimi.fukushima.jp",
+ "miharu.fukushima.jp",
+ "mishima.fukushima.jp",
+ "namie.fukushima.jp",
+ "nango.fukushima.jp",
+ "nishiaizu.fukushima.jp",
+ "nishigo.fukushima.jp",
+ "okuma.fukushima.jp",
+ "omotego.fukushima.jp",
+ "ono.fukushima.jp",
+ "otama.fukushima.jp",
+ "samegawa.fukushima.jp",
+ "shimogo.fukushima.jp",
+ "shirakawa.fukushima.jp",
+ "showa.fukushima.jp",
+ "soma.fukushima.jp",
+ "sukagawa.fukushima.jp",
+ "taishin.fukushima.jp",
+ "tamakawa.fukushima.jp",
+ "tanagura.fukushima.jp",
+ "tenei.fukushima.jp",
+ "yabuki.fukushima.jp",
+ "yamato.fukushima.jp",
+ "yamatsuri.fukushima.jp",
+ "yanaizu.fukushima.jp",
+ "yugawa.fukushima.jp",
+ "anpachi.gifu.jp",
+ "ena.gifu.jp",
+ "gifu.gifu.jp",
+ "ginan.gifu.jp",
+ "godo.gifu.jp",
+ "gujo.gifu.jp",
+ "hashima.gifu.jp",
+ "hichiso.gifu.jp",
+ "hida.gifu.jp",
+ "higashishirakawa.gifu.jp",
+ "ibigawa.gifu.jp",
+ "ikeda.gifu.jp",
+ "kakamigahara.gifu.jp",
+ "kani.gifu.jp",
+ "kasahara.gifu.jp",
+ "kasamatsu.gifu.jp",
+ "kawaue.gifu.jp",
+ "kitagata.gifu.jp",
+ "mino.gifu.jp",
+ "minokamo.gifu.jp",
+ "mitake.gifu.jp",
+ "mizunami.gifu.jp",
+ "motosu.gifu.jp",
+ "nakatsugawa.gifu.jp",
+ "ogaki.gifu.jp",
+ "sakahogi.gifu.jp",
+ "seki.gifu.jp",
+ "sekigahara.gifu.jp",
+ "shirakawa.gifu.jp",
+ "tajimi.gifu.jp",
+ "takayama.gifu.jp",
+ "tarui.gifu.jp",
+ "toki.gifu.jp",
+ "tomika.gifu.jp",
+ "wanouchi.gifu.jp",
+ "yamagata.gifu.jp",
+ "yaotsu.gifu.jp",
+ "yoro.gifu.jp",
+ "annaka.gunma.jp",
+ "chiyoda.gunma.jp",
+ "fujioka.gunma.jp",
+ "higashiagatsuma.gunma.jp",
+ "isesaki.gunma.jp",
+ "itakura.gunma.jp",
+ "kanna.gunma.jp",
+ "kanra.gunma.jp",
+ "katashina.gunma.jp",
+ "kawaba.gunma.jp",
+ "kiryu.gunma.jp",
+ "kusatsu.gunma.jp",
+ "maebashi.gunma.jp",
+ "meiwa.gunma.jp",
+ "midori.gunma.jp",
+ "minakami.gunma.jp",
+ "naganohara.gunma.jp",
+ "nakanojo.gunma.jp",
+ "nanmoku.gunma.jp",
+ "numata.gunma.jp",
+ "oizumi.gunma.jp",
+ "ora.gunma.jp",
+ "ota.gunma.jp",
+ "shibukawa.gunma.jp",
+ "shimonita.gunma.jp",
+ "shinto.gunma.jp",
+ "showa.gunma.jp",
+ "takasaki.gunma.jp",
+ "takayama.gunma.jp",
+ "tamamura.gunma.jp",
+ "tatebayashi.gunma.jp",
+ "tomioka.gunma.jp",
+ "tsukiyono.gunma.jp",
+ "tsumagoi.gunma.jp",
+ "ueno.gunma.jp",
+ "yoshioka.gunma.jp",
+ "asaminami.hiroshima.jp",
+ "daiwa.hiroshima.jp",
+ "etajima.hiroshima.jp",
+ "fuchu.hiroshima.jp",
+ "fukuyama.hiroshima.jp",
+ "hatsukaichi.hiroshima.jp",
+ "higashihiroshima.hiroshima.jp",
+ "hongo.hiroshima.jp",
+ "jinsekikogen.hiroshima.jp",
+ "kaita.hiroshima.jp",
+ "kui.hiroshima.jp",
+ "kumano.hiroshima.jp",
+ "kure.hiroshima.jp",
+ "mihara.hiroshima.jp",
+ "miyoshi.hiroshima.jp",
+ "naka.hiroshima.jp",
+ "onomichi.hiroshima.jp",
+ "osakikamijima.hiroshima.jp",
+ "otake.hiroshima.jp",
+ "saka.hiroshima.jp",
+ "sera.hiroshima.jp",
+ "seranishi.hiroshima.jp",
+ "shinichi.hiroshima.jp",
+ "shobara.hiroshima.jp",
+ "takehara.hiroshima.jp",
+ "abashiri.hokkaido.jp",
+ "abira.hokkaido.jp",
+ "aibetsu.hokkaido.jp",
+ "akabira.hokkaido.jp",
+ "akkeshi.hokkaido.jp",
+ "asahikawa.hokkaido.jp",
+ "ashibetsu.hokkaido.jp",
+ "ashoro.hokkaido.jp",
+ "assabu.hokkaido.jp",
+ "atsuma.hokkaido.jp",
+ "bibai.hokkaido.jp",
+ "biei.hokkaido.jp",
+ "bifuka.hokkaido.jp",
+ "bihoro.hokkaido.jp",
+ "biratori.hokkaido.jp",
+ "chippubetsu.hokkaido.jp",
+ "chitose.hokkaido.jp",
+ "date.hokkaido.jp",
+ "ebetsu.hokkaido.jp",
+ "embetsu.hokkaido.jp",
+ "eniwa.hokkaido.jp",
+ "erimo.hokkaido.jp",
+ "esan.hokkaido.jp",
+ "esashi.hokkaido.jp",
+ "fukagawa.hokkaido.jp",
+ "fukushima.hokkaido.jp",
+ "furano.hokkaido.jp",
+ "furubira.hokkaido.jp",
+ "haboro.hokkaido.jp",
+ "hakodate.hokkaido.jp",
+ "hamatonbetsu.hokkaido.jp",
+ "hidaka.hokkaido.jp",
+ "higashikagura.hokkaido.jp",
+ "higashikawa.hokkaido.jp",
+ "hiroo.hokkaido.jp",
+ "hokuryu.hokkaido.jp",
+ "hokuto.hokkaido.jp",
+ "honbetsu.hokkaido.jp",
+ "horokanai.hokkaido.jp",
+ "horonobe.hokkaido.jp",
+ "ikeda.hokkaido.jp",
+ "imakane.hokkaido.jp",
+ "ishikari.hokkaido.jp",
+ "iwamizawa.hokkaido.jp",
+ "iwanai.hokkaido.jp",
+ "kamifurano.hokkaido.jp",
+ "kamikawa.hokkaido.jp",
+ "kamishihoro.hokkaido.jp",
+ "kamisunagawa.hokkaido.jp",
+ "kamoenai.hokkaido.jp",
+ "kayabe.hokkaido.jp",
+ "kembuchi.hokkaido.jp",
+ "kikonai.hokkaido.jp",
+ "kimobetsu.hokkaido.jp",
+ "kitahiroshima.hokkaido.jp",
+ "kitami.hokkaido.jp",
+ "kiyosato.hokkaido.jp",
+ "koshimizu.hokkaido.jp",
+ "kunneppu.hokkaido.jp",
+ "kuriyama.hokkaido.jp",
+ "kuromatsunai.hokkaido.jp",
+ "kushiro.hokkaido.jp",
+ "kutchan.hokkaido.jp",
+ "kyowa.hokkaido.jp",
+ "mashike.hokkaido.jp",
+ "matsumae.hokkaido.jp",
+ "mikasa.hokkaido.jp",
+ "minamifurano.hokkaido.jp",
+ "mombetsu.hokkaido.jp",
+ "moseushi.hokkaido.jp",
+ "mukawa.hokkaido.jp",
+ "muroran.hokkaido.jp",
+ "naie.hokkaido.jp",
+ "nakagawa.hokkaido.jp",
+ "nakasatsunai.hokkaido.jp",
+ "nakatombetsu.hokkaido.jp",
+ "nanae.hokkaido.jp",
+ "nanporo.hokkaido.jp",
+ "nayoro.hokkaido.jp",
+ "nemuro.hokkaido.jp",
+ "niikappu.hokkaido.jp",
+ "niki.hokkaido.jp",
+ "nishiokoppe.hokkaido.jp",
+ "noboribetsu.hokkaido.jp",
+ "numata.hokkaido.jp",
+ "obihiro.hokkaido.jp",
+ "obira.hokkaido.jp",
+ "oketo.hokkaido.jp",
+ "okoppe.hokkaido.jp",
+ "otaru.hokkaido.jp",
+ "otobe.hokkaido.jp",
+ "otofuke.hokkaido.jp",
+ "otoineppu.hokkaido.jp",
+ "oumu.hokkaido.jp",
+ "ozora.hokkaido.jp",
+ "pippu.hokkaido.jp",
+ "rankoshi.hokkaido.jp",
+ "rebun.hokkaido.jp",
+ "rikubetsu.hokkaido.jp",
+ "rishiri.hokkaido.jp",
+ "rishirifuji.hokkaido.jp",
+ "saroma.hokkaido.jp",
+ "sarufutsu.hokkaido.jp",
+ "shakotan.hokkaido.jp",
+ "shari.hokkaido.jp",
+ "shibecha.hokkaido.jp",
+ "shibetsu.hokkaido.jp",
+ "shikabe.hokkaido.jp",
+ "shikaoi.hokkaido.jp",
+ "shimamaki.hokkaido.jp",
+ "shimizu.hokkaido.jp",
+ "shimokawa.hokkaido.jp",
+ "shinshinotsu.hokkaido.jp",
+ "shintoku.hokkaido.jp",
+ "shiranuka.hokkaido.jp",
+ "shiraoi.hokkaido.jp",
+ "shiriuchi.hokkaido.jp",
+ "sobetsu.hokkaido.jp",
+ "sunagawa.hokkaido.jp",
+ "taiki.hokkaido.jp",
+ "takasu.hokkaido.jp",
+ "takikawa.hokkaido.jp",
+ "takinoue.hokkaido.jp",
+ "teshikaga.hokkaido.jp",
+ "tobetsu.hokkaido.jp",
+ "tohma.hokkaido.jp",
+ "tomakomai.hokkaido.jp",
+ "tomari.hokkaido.jp",
+ "toya.hokkaido.jp",
+ "toyako.hokkaido.jp",
+ "toyotomi.hokkaido.jp",
+ "toyoura.hokkaido.jp",
+ "tsubetsu.hokkaido.jp",
+ "tsukigata.hokkaido.jp",
+ "urakawa.hokkaido.jp",
+ "urausu.hokkaido.jp",
+ "uryu.hokkaido.jp",
+ "utashinai.hokkaido.jp",
+ "wakkanai.hokkaido.jp",
+ "wassamu.hokkaido.jp",
+ "yakumo.hokkaido.jp",
+ "yoichi.hokkaido.jp",
+ "aioi.hyogo.jp",
+ "akashi.hyogo.jp",
+ "ako.hyogo.jp",
+ "amagasaki.hyogo.jp",
+ "aogaki.hyogo.jp",
+ "asago.hyogo.jp",
+ "ashiya.hyogo.jp",
+ "awaji.hyogo.jp",
+ "fukusaki.hyogo.jp",
+ "goshiki.hyogo.jp",
+ "harima.hyogo.jp",
+ "himeji.hyogo.jp",
+ "ichikawa.hyogo.jp",
+ "inagawa.hyogo.jp",
+ "itami.hyogo.jp",
+ "kakogawa.hyogo.jp",
+ "kamigori.hyogo.jp",
+ "kamikawa.hyogo.jp",
+ "kasai.hyogo.jp",
+ "kasuga.hyogo.jp",
+ "kawanishi.hyogo.jp",
+ "miki.hyogo.jp",
+ "minamiawaji.hyogo.jp",
+ "nishinomiya.hyogo.jp",
+ "nishiwaki.hyogo.jp",
+ "ono.hyogo.jp",
+ "sanda.hyogo.jp",
+ "sannan.hyogo.jp",
+ "sasayama.hyogo.jp",
+ "sayo.hyogo.jp",
+ "shingu.hyogo.jp",
+ "shinonsen.hyogo.jp",
+ "shiso.hyogo.jp",
+ "sumoto.hyogo.jp",
+ "taishi.hyogo.jp",
+ "taka.hyogo.jp",
+ "takarazuka.hyogo.jp",
+ "takasago.hyogo.jp",
+ "takino.hyogo.jp",
+ "tamba.hyogo.jp",
+ "tatsuno.hyogo.jp",
+ "toyooka.hyogo.jp",
+ "yabu.hyogo.jp",
+ "yashiro.hyogo.jp",
+ "yoka.hyogo.jp",
+ "yokawa.hyogo.jp",
+ "ami.ibaraki.jp",
+ "asahi.ibaraki.jp",
+ "bando.ibaraki.jp",
+ "chikusei.ibaraki.jp",
+ "daigo.ibaraki.jp",
+ "fujishiro.ibaraki.jp",
+ "hitachi.ibaraki.jp",
+ "hitachinaka.ibaraki.jp",
+ "hitachiomiya.ibaraki.jp",
+ "hitachiota.ibaraki.jp",
+ "ibaraki.ibaraki.jp",
+ "ina.ibaraki.jp",
+ "inashiki.ibaraki.jp",
+ "itako.ibaraki.jp",
+ "iwama.ibaraki.jp",
+ "joso.ibaraki.jp",
+ "kamisu.ibaraki.jp",
+ "kasama.ibaraki.jp",
+ "kashima.ibaraki.jp",
+ "kasumigaura.ibaraki.jp",
+ "koga.ibaraki.jp",
+ "miho.ibaraki.jp",
+ "mito.ibaraki.jp",
+ "moriya.ibaraki.jp",
+ "naka.ibaraki.jp",
+ "namegata.ibaraki.jp",
+ "oarai.ibaraki.jp",
+ "ogawa.ibaraki.jp",
+ "omitama.ibaraki.jp",
+ "ryugasaki.ibaraki.jp",
+ "sakai.ibaraki.jp",
+ "sakuragawa.ibaraki.jp",
+ "shimodate.ibaraki.jp",
+ "shimotsuma.ibaraki.jp",
+ "shirosato.ibaraki.jp",
+ "sowa.ibaraki.jp",
+ "suifu.ibaraki.jp",
+ "takahagi.ibaraki.jp",
+ "tamatsukuri.ibaraki.jp",
+ "tokai.ibaraki.jp",
+ "tomobe.ibaraki.jp",
+ "tone.ibaraki.jp",
+ "toride.ibaraki.jp",
+ "tsuchiura.ibaraki.jp",
+ "tsukuba.ibaraki.jp",
+ "uchihara.ibaraki.jp",
+ "ushiku.ibaraki.jp",
+ "yachiyo.ibaraki.jp",
+ "yamagata.ibaraki.jp",
+ "yawara.ibaraki.jp",
+ "yuki.ibaraki.jp",
+ "anamizu.ishikawa.jp",
+ "hakui.ishikawa.jp",
+ "hakusan.ishikawa.jp",
+ "kaga.ishikawa.jp",
+ "kahoku.ishikawa.jp",
+ "kanazawa.ishikawa.jp",
+ "kawakita.ishikawa.jp",
+ "komatsu.ishikawa.jp",
+ "nakanoto.ishikawa.jp",
+ "nanao.ishikawa.jp",
+ "nomi.ishikawa.jp",
+ "nonoichi.ishikawa.jp",
+ "noto.ishikawa.jp",
+ "shika.ishikawa.jp",
+ "suzu.ishikawa.jp",
+ "tsubata.ishikawa.jp",
+ "tsurugi.ishikawa.jp",
+ "uchinada.ishikawa.jp",
+ "wajima.ishikawa.jp",
+ "fudai.iwate.jp",
+ "fujisawa.iwate.jp",
+ "hanamaki.iwate.jp",
+ "hiraizumi.iwate.jp",
+ "hirono.iwate.jp",
+ "ichinohe.iwate.jp",
+ "ichinoseki.iwate.jp",
+ "iwaizumi.iwate.jp",
+ "iwate.iwate.jp",
+ "joboji.iwate.jp",
+ "kamaishi.iwate.jp",
+ "kanegasaki.iwate.jp",
+ "karumai.iwate.jp",
+ "kawai.iwate.jp",
+ "kitakami.iwate.jp",
+ "kuji.iwate.jp",
+ "kunohe.iwate.jp",
+ "kuzumaki.iwate.jp",
+ "miyako.iwate.jp",
+ "mizusawa.iwate.jp",
+ "morioka.iwate.jp",
+ "ninohe.iwate.jp",
+ "noda.iwate.jp",
+ "ofunato.iwate.jp",
+ "oshu.iwate.jp",
+ "otsuchi.iwate.jp",
+ "rikuzentakata.iwate.jp",
+ "shiwa.iwate.jp",
+ "shizukuishi.iwate.jp",
+ "sumita.iwate.jp",
+ "tanohata.iwate.jp",
+ "tono.iwate.jp",
+ "yahaba.iwate.jp",
+ "yamada.iwate.jp",
+ "ayagawa.kagawa.jp",
+ "higashikagawa.kagawa.jp",
+ "kanonji.kagawa.jp",
+ "kotohira.kagawa.jp",
+ "manno.kagawa.jp",
+ "marugame.kagawa.jp",
+ "mitoyo.kagawa.jp",
+ "naoshima.kagawa.jp",
+ "sanuki.kagawa.jp",
+ "tadotsu.kagawa.jp",
+ "takamatsu.kagawa.jp",
+ "tonosho.kagawa.jp",
+ "uchinomi.kagawa.jp",
+ "utazu.kagawa.jp",
+ "zentsuji.kagawa.jp",
+ "akune.kagoshima.jp",
+ "amami.kagoshima.jp",
+ "hioki.kagoshima.jp",
+ "isa.kagoshima.jp",
+ "isen.kagoshima.jp",
+ "izumi.kagoshima.jp",
+ "kagoshima.kagoshima.jp",
+ "kanoya.kagoshima.jp",
+ "kawanabe.kagoshima.jp",
+ "kinko.kagoshima.jp",
+ "kouyama.kagoshima.jp",
+ "makurazaki.kagoshima.jp",
+ "matsumoto.kagoshima.jp",
+ "minamitane.kagoshima.jp",
+ "nakatane.kagoshima.jp",
+ "nishinoomote.kagoshima.jp",
+ "satsumasendai.kagoshima.jp",
+ "soo.kagoshima.jp",
+ "tarumizu.kagoshima.jp",
+ "yusui.kagoshima.jp",
+ "aikawa.kanagawa.jp",
+ "atsugi.kanagawa.jp",
+ "ayase.kanagawa.jp",
+ "chigasaki.kanagawa.jp",
+ "ebina.kanagawa.jp",
+ "fujisawa.kanagawa.jp",
+ "hadano.kanagawa.jp",
+ "hakone.kanagawa.jp",
+ "hiratsuka.kanagawa.jp",
+ "isehara.kanagawa.jp",
+ "kaisei.kanagawa.jp",
+ "kamakura.kanagawa.jp",
+ "kiyokawa.kanagawa.jp",
+ "matsuda.kanagawa.jp",
+ "minamiashigara.kanagawa.jp",
+ "miura.kanagawa.jp",
+ "nakai.kanagawa.jp",
+ "ninomiya.kanagawa.jp",
+ "odawara.kanagawa.jp",
+ "oi.kanagawa.jp",
+ "oiso.kanagawa.jp",
+ "sagamihara.kanagawa.jp",
+ "samukawa.kanagawa.jp",
+ "tsukui.kanagawa.jp",
+ "yamakita.kanagawa.jp",
+ "yamato.kanagawa.jp",
+ "yokosuka.kanagawa.jp",
+ "yugawara.kanagawa.jp",
+ "zama.kanagawa.jp",
+ "zushi.kanagawa.jp",
+ "aki.kochi.jp",
+ "geisei.kochi.jp",
+ "hidaka.kochi.jp",
+ "higashitsuno.kochi.jp",
+ "ino.kochi.jp",
+ "kagami.kochi.jp",
+ "kami.kochi.jp",
+ "kitagawa.kochi.jp",
+ "kochi.kochi.jp",
+ "mihara.kochi.jp",
+ "motoyama.kochi.jp",
+ "muroto.kochi.jp",
+ "nahari.kochi.jp",
+ "nakamura.kochi.jp",
+ "nankoku.kochi.jp",
+ "nishitosa.kochi.jp",
+ "niyodogawa.kochi.jp",
+ "ochi.kochi.jp",
+ "okawa.kochi.jp",
+ "otoyo.kochi.jp",
+ "otsuki.kochi.jp",
+ "sakawa.kochi.jp",
+ "sukumo.kochi.jp",
+ "susaki.kochi.jp",
+ "tosa.kochi.jp",
+ "tosashimizu.kochi.jp",
+ "toyo.kochi.jp",
+ "tsuno.kochi.jp",
+ "umaji.kochi.jp",
+ "yasuda.kochi.jp",
+ "yusuhara.kochi.jp",
+ "amakusa.kumamoto.jp",
+ "arao.kumamoto.jp",
+ "aso.kumamoto.jp",
+ "choyo.kumamoto.jp",
+ "gyokuto.kumamoto.jp",
+ "kamiamakusa.kumamoto.jp",
+ "kikuchi.kumamoto.jp",
+ "kumamoto.kumamoto.jp",
+ "mashiki.kumamoto.jp",
+ "mifune.kumamoto.jp",
+ "minamata.kumamoto.jp",
+ "minamioguni.kumamoto.jp",
+ "nagasu.kumamoto.jp",
+ "nishihara.kumamoto.jp",
+ "oguni.kumamoto.jp",
+ "ozu.kumamoto.jp",
+ "sumoto.kumamoto.jp",
+ "takamori.kumamoto.jp",
+ "uki.kumamoto.jp",
+ "uto.kumamoto.jp",
+ "yamaga.kumamoto.jp",
+ "yamato.kumamoto.jp",
+ "yatsushiro.kumamoto.jp",
+ "ayabe.kyoto.jp",
+ "fukuchiyama.kyoto.jp",
+ "higashiyama.kyoto.jp",
+ "ide.kyoto.jp",
+ "ine.kyoto.jp",
+ "joyo.kyoto.jp",
+ "kameoka.kyoto.jp",
+ "kamo.kyoto.jp",
+ "kita.kyoto.jp",
+ "kizu.kyoto.jp",
+ "kumiyama.kyoto.jp",
+ "kyotamba.kyoto.jp",
+ "kyotanabe.kyoto.jp",
+ "kyotango.kyoto.jp",
+ "maizuru.kyoto.jp",
+ "minami.kyoto.jp",
+ "minamiyamashiro.kyoto.jp",
+ "miyazu.kyoto.jp",
+ "muko.kyoto.jp",
+ "nagaokakyo.kyoto.jp",
+ "nakagyo.kyoto.jp",
+ "nantan.kyoto.jp",
+ "oyamazaki.kyoto.jp",
+ "sakyo.kyoto.jp",
+ "seika.kyoto.jp",
+ "tanabe.kyoto.jp",
+ "uji.kyoto.jp",
+ "ujitawara.kyoto.jp",
+ "wazuka.kyoto.jp",
+ "yamashina.kyoto.jp",
+ "yawata.kyoto.jp",
+ "asahi.mie.jp",
+ "inabe.mie.jp",
+ "ise.mie.jp",
+ "kameyama.mie.jp",
+ "kawagoe.mie.jp",
+ "kiho.mie.jp",
+ "kisosaki.mie.jp",
+ "kiwa.mie.jp",
+ "komono.mie.jp",
+ "kumano.mie.jp",
+ "kuwana.mie.jp",
+ "matsusaka.mie.jp",
+ "meiwa.mie.jp",
+ "mihama.mie.jp",
+ "minamiise.mie.jp",
+ "misugi.mie.jp",
+ "miyama.mie.jp",
+ "nabari.mie.jp",
+ "shima.mie.jp",
+ "suzuka.mie.jp",
+ "tado.mie.jp",
+ "taiki.mie.jp",
+ "taki.mie.jp",
+ "tamaki.mie.jp",
+ "toba.mie.jp",
+ "tsu.mie.jp",
+ "udono.mie.jp",
+ "ureshino.mie.jp",
+ "watarai.mie.jp",
+ "yokkaichi.mie.jp",
+ "furukawa.miyagi.jp",
+ "higashimatsushima.miyagi.jp",
+ "ishinomaki.miyagi.jp",
+ "iwanuma.miyagi.jp",
+ "kakuda.miyagi.jp",
+ "kami.miyagi.jp",
+ "kawasaki.miyagi.jp",
+ "marumori.miyagi.jp",
+ "matsushima.miyagi.jp",
+ "minamisanriku.miyagi.jp",
+ "misato.miyagi.jp",
+ "murata.miyagi.jp",
+ "natori.miyagi.jp",
+ "ogawara.miyagi.jp",
+ "ohira.miyagi.jp",
+ "onagawa.miyagi.jp",
+ "osaki.miyagi.jp",
+ "rifu.miyagi.jp",
+ "semine.miyagi.jp",
+ "shibata.miyagi.jp",
+ "shichikashuku.miyagi.jp",
+ "shikama.miyagi.jp",
+ "shiogama.miyagi.jp",
+ "shiroishi.miyagi.jp",
+ "tagajo.miyagi.jp",
+ "taiwa.miyagi.jp",
+ "tome.miyagi.jp",
+ "tomiya.miyagi.jp",
+ "wakuya.miyagi.jp",
+ "watari.miyagi.jp",
+ "yamamoto.miyagi.jp",
+ "zao.miyagi.jp",
+ "aya.miyazaki.jp",
+ "ebino.miyazaki.jp",
+ "gokase.miyazaki.jp",
+ "hyuga.miyazaki.jp",
+ "kadogawa.miyazaki.jp",
+ "kawaminami.miyazaki.jp",
+ "kijo.miyazaki.jp",
+ "kitagawa.miyazaki.jp",
+ "kitakata.miyazaki.jp",
+ "kitaura.miyazaki.jp",
+ "kobayashi.miyazaki.jp",
+ "kunitomi.miyazaki.jp",
+ "kushima.miyazaki.jp",
+ "mimata.miyazaki.jp",
+ "miyakonojo.miyazaki.jp",
+ "miyazaki.miyazaki.jp",
+ "morotsuka.miyazaki.jp",
+ "nichinan.miyazaki.jp",
+ "nishimera.miyazaki.jp",
+ "nobeoka.miyazaki.jp",
+ "saito.miyazaki.jp",
+ "shiiba.miyazaki.jp",
+ "shintomi.miyazaki.jp",
+ "takaharu.miyazaki.jp",
+ "takanabe.miyazaki.jp",
+ "takazaki.miyazaki.jp",
+ "tsuno.miyazaki.jp",
+ "achi.nagano.jp",
+ "agematsu.nagano.jp",
+ "anan.nagano.jp",
+ "aoki.nagano.jp",
+ "asahi.nagano.jp",
+ "azumino.nagano.jp",
+ "chikuhoku.nagano.jp",
+ "chikuma.nagano.jp",
+ "chino.nagano.jp",
+ "fujimi.nagano.jp",
+ "hakuba.nagano.jp",
+ "hara.nagano.jp",
+ "hiraya.nagano.jp",
+ "iida.nagano.jp",
+ "iijima.nagano.jp",
+ "iiyama.nagano.jp",
+ "iizuna.nagano.jp",
+ "ikeda.nagano.jp",
+ "ikusaka.nagano.jp",
+ "ina.nagano.jp",
+ "karuizawa.nagano.jp",
+ "kawakami.nagano.jp",
+ "kiso.nagano.jp",
+ "kisofukushima.nagano.jp",
+ "kitaaiki.nagano.jp",
+ "komagane.nagano.jp",
+ "komoro.nagano.jp",
+ "matsukawa.nagano.jp",
+ "matsumoto.nagano.jp",
+ "miasa.nagano.jp",
+ "minamiaiki.nagano.jp",
+ "minamimaki.nagano.jp",
+ "minamiminowa.nagano.jp",
+ "minowa.nagano.jp",
+ "miyada.nagano.jp",
+ "miyota.nagano.jp",
+ "mochizuki.nagano.jp",
+ "nagano.nagano.jp",
+ "nagawa.nagano.jp",
+ "nagiso.nagano.jp",
+ "nakagawa.nagano.jp",
+ "nakano.nagano.jp",
+ "nozawaonsen.nagano.jp",
+ "obuse.nagano.jp",
+ "ogawa.nagano.jp",
+ "okaya.nagano.jp",
+ "omachi.nagano.jp",
+ "omi.nagano.jp",
+ "ookuwa.nagano.jp",
+ "ooshika.nagano.jp",
+ "otaki.nagano.jp",
+ "otari.nagano.jp",
+ "sakae.nagano.jp",
+ "sakaki.nagano.jp",
+ "saku.nagano.jp",
+ "sakuho.nagano.jp",
+ "shimosuwa.nagano.jp",
+ "shinanomachi.nagano.jp",
+ "shiojiri.nagano.jp",
+ "suwa.nagano.jp",
+ "suzaka.nagano.jp",
+ "takagi.nagano.jp",
+ "takamori.nagano.jp",
+ "takayama.nagano.jp",
+ "tateshina.nagano.jp",
+ "tatsuno.nagano.jp",
+ "togakushi.nagano.jp",
+ "togura.nagano.jp",
+ "tomi.nagano.jp",
+ "ueda.nagano.jp",
+ "wada.nagano.jp",
+ "yamagata.nagano.jp",
+ "yamanouchi.nagano.jp",
+ "yasaka.nagano.jp",
+ "yasuoka.nagano.jp",
+ "chijiwa.nagasaki.jp",
+ "futsu.nagasaki.jp",
+ "goto.nagasaki.jp",
+ "hasami.nagasaki.jp",
+ "hirado.nagasaki.jp",
+ "iki.nagasaki.jp",
+ "isahaya.nagasaki.jp",
+ "kawatana.nagasaki.jp",
+ "kuchinotsu.nagasaki.jp",
+ "matsuura.nagasaki.jp",
+ "nagasaki.nagasaki.jp",
+ "obama.nagasaki.jp",
+ "omura.nagasaki.jp",
+ "oseto.nagasaki.jp",
+ "saikai.nagasaki.jp",
+ "sasebo.nagasaki.jp",
+ "seihi.nagasaki.jp",
+ "shimabara.nagasaki.jp",
+ "shinkamigoto.nagasaki.jp",
+ "togitsu.nagasaki.jp",
+ "tsushima.nagasaki.jp",
+ "unzen.nagasaki.jp",
+ "ando.nara.jp",
+ "gose.nara.jp",
+ "heguri.nara.jp",
+ "higashiyoshino.nara.jp",
+ "ikaruga.nara.jp",
+ "ikoma.nara.jp",
+ "kamikitayama.nara.jp",
+ "kanmaki.nara.jp",
+ "kashiba.nara.jp",
+ "kashihara.nara.jp",
+ "katsuragi.nara.jp",
+ "kawai.nara.jp",
+ "kawakami.nara.jp",
+ "kawanishi.nara.jp",
+ "koryo.nara.jp",
+ "kurotaki.nara.jp",
+ "mitsue.nara.jp",
+ "miyake.nara.jp",
+ "nara.nara.jp",
+ "nosegawa.nara.jp",
+ "oji.nara.jp",
+ "ouda.nara.jp",
+ "oyodo.nara.jp",
+ "sakurai.nara.jp",
+ "sango.nara.jp",
+ "shimoichi.nara.jp",
+ "shimokitayama.nara.jp",
+ "shinjo.nara.jp",
+ "soni.nara.jp",
+ "takatori.nara.jp",
+ "tawaramoto.nara.jp",
+ "tenkawa.nara.jp",
+ "tenri.nara.jp",
+ "uda.nara.jp",
+ "yamatokoriyama.nara.jp",
+ "yamatotakada.nara.jp",
+ "yamazoe.nara.jp",
+ "yoshino.nara.jp",
+ "aga.niigata.jp",
+ "agano.niigata.jp",
+ "gosen.niigata.jp",
+ "itoigawa.niigata.jp",
+ "izumozaki.niigata.jp",
+ "joetsu.niigata.jp",
+ "kamo.niigata.jp",
+ "kariwa.niigata.jp",
+ "kashiwazaki.niigata.jp",
+ "minamiuonuma.niigata.jp",
+ "mitsuke.niigata.jp",
+ "muika.niigata.jp",
+ "murakami.niigata.jp",
+ "myoko.niigata.jp",
+ "nagaoka.niigata.jp",
+ "niigata.niigata.jp",
+ "ojiya.niigata.jp",
+ "omi.niigata.jp",
+ "sado.niigata.jp",
+ "sanjo.niigata.jp",
+ "seiro.niigata.jp",
+ "seirou.niigata.jp",
+ "sekikawa.niigata.jp",
+ "shibata.niigata.jp",
+ "tagami.niigata.jp",
+ "tainai.niigata.jp",
+ "tochio.niigata.jp",
+ "tokamachi.niigata.jp",
+ "tsubame.niigata.jp",
+ "tsunan.niigata.jp",
+ "uonuma.niigata.jp",
+ "yahiko.niigata.jp",
+ "yoita.niigata.jp",
+ "yuzawa.niigata.jp",
+ "beppu.oita.jp",
+ "bungoono.oita.jp",
+ "bungotakada.oita.jp",
+ "hasama.oita.jp",
+ "hiji.oita.jp",
+ "himeshima.oita.jp",
+ "hita.oita.jp",
+ "kamitsue.oita.jp",
+ "kokonoe.oita.jp",
+ "kuju.oita.jp",
+ "kunisaki.oita.jp",
+ "kusu.oita.jp",
+ "oita.oita.jp",
+ "saiki.oita.jp",
+ "taketa.oita.jp",
+ "tsukumi.oita.jp",
+ "usa.oita.jp",
+ "usuki.oita.jp",
+ "yufu.oita.jp",
+ "akaiwa.okayama.jp",
+ "asakuchi.okayama.jp",
+ "bizen.okayama.jp",
+ "hayashima.okayama.jp",
+ "ibara.okayama.jp",
+ "kagamino.okayama.jp",
+ "kasaoka.okayama.jp",
+ "kibichuo.okayama.jp",
+ "kumenan.okayama.jp",
+ "kurashiki.okayama.jp",
+ "maniwa.okayama.jp",
+ "misaki.okayama.jp",
+ "nagi.okayama.jp",
+ "niimi.okayama.jp",
+ "nishiawakura.okayama.jp",
+ "okayama.okayama.jp",
+ "satosho.okayama.jp",
+ "setouchi.okayama.jp",
+ "shinjo.okayama.jp",
+ "shoo.okayama.jp",
+ "soja.okayama.jp",
+ "takahashi.okayama.jp",
+ "tamano.okayama.jp",
+ "tsuyama.okayama.jp",
+ "wake.okayama.jp",
+ "yakage.okayama.jp",
+ "aguni.okinawa.jp",
+ "ginowan.okinawa.jp",
+ "ginoza.okinawa.jp",
+ "gushikami.okinawa.jp",
+ "haebaru.okinawa.jp",
+ "higashi.okinawa.jp",
+ "hirara.okinawa.jp",
+ "iheya.okinawa.jp",
+ "ishigaki.okinawa.jp",
+ "ishikawa.okinawa.jp",
+ "itoman.okinawa.jp",
+ "izena.okinawa.jp",
+ "kadena.okinawa.jp",
+ "kin.okinawa.jp",
+ "kitadaito.okinawa.jp",
+ "kitanakagusuku.okinawa.jp",
+ "kumejima.okinawa.jp",
+ "kunigami.okinawa.jp",
+ "minamidaito.okinawa.jp",
+ "motobu.okinawa.jp",
+ "nago.okinawa.jp",
+ "naha.okinawa.jp",
+ "nakagusuku.okinawa.jp",
+ "nakijin.okinawa.jp",
+ "nanjo.okinawa.jp",
+ "nishihara.okinawa.jp",
+ "ogimi.okinawa.jp",
+ "okinawa.okinawa.jp",
+ "onna.okinawa.jp",
+ "shimoji.okinawa.jp",
+ "taketomi.okinawa.jp",
+ "tarama.okinawa.jp",
+ "tokashiki.okinawa.jp",
+ "tomigusuku.okinawa.jp",
+ "tonaki.okinawa.jp",
+ "urasoe.okinawa.jp",
+ "uruma.okinawa.jp",
+ "yaese.okinawa.jp",
+ "yomitan.okinawa.jp",
+ "yonabaru.okinawa.jp",
+ "yonaguni.okinawa.jp",
+ "zamami.okinawa.jp",
+ "abeno.osaka.jp",
+ "chihayaakasaka.osaka.jp",
+ "chuo.osaka.jp",
+ "daito.osaka.jp",
+ "fujiidera.osaka.jp",
+ "habikino.osaka.jp",
+ "hannan.osaka.jp",
+ "higashiosaka.osaka.jp",
+ "higashisumiyoshi.osaka.jp",
+ "higashiyodogawa.osaka.jp",
+ "hirakata.osaka.jp",
+ "ibaraki.osaka.jp",
+ "ikeda.osaka.jp",
+ "izumi.osaka.jp",
+ "izumiotsu.osaka.jp",
+ "izumisano.osaka.jp",
+ "kadoma.osaka.jp",
+ "kaizuka.osaka.jp",
+ "kanan.osaka.jp",
+ "kashiwara.osaka.jp",
+ "katano.osaka.jp",
+ "kawachinagano.osaka.jp",
+ "kishiwada.osaka.jp",
+ "kita.osaka.jp",
+ "kumatori.osaka.jp",
+ "matsubara.osaka.jp",
+ "minato.osaka.jp",
+ "minoh.osaka.jp",
+ "misaki.osaka.jp",
+ "moriguchi.osaka.jp",
+ "neyagawa.osaka.jp",
+ "nishi.osaka.jp",
+ "nose.osaka.jp",
+ "osakasayama.osaka.jp",
+ "sakai.osaka.jp",
+ "sayama.osaka.jp",
+ "sennan.osaka.jp",
+ "settsu.osaka.jp",
+ "shijonawate.osaka.jp",
+ "shimamoto.osaka.jp",
+ "suita.osaka.jp",
+ "tadaoka.osaka.jp",
+ "taishi.osaka.jp",
+ "tajiri.osaka.jp",
+ "takaishi.osaka.jp",
+ "takatsuki.osaka.jp",
+ "tondabayashi.osaka.jp",
+ "toyonaka.osaka.jp",
+ "toyono.osaka.jp",
+ "yao.osaka.jp",
+ "ariake.saga.jp",
+ "arita.saga.jp",
+ "fukudomi.saga.jp",
+ "genkai.saga.jp",
+ "hamatama.saga.jp",
+ "hizen.saga.jp",
+ "imari.saga.jp",
+ "kamimine.saga.jp",
+ "kanzaki.saga.jp",
+ "karatsu.saga.jp",
+ "kashima.saga.jp",
+ "kitagata.saga.jp",
+ "kitahata.saga.jp",
+ "kiyama.saga.jp",
+ "kouhoku.saga.jp",
+ "kyuragi.saga.jp",
+ "nishiarita.saga.jp",
+ "ogi.saga.jp",
+ "omachi.saga.jp",
+ "ouchi.saga.jp",
+ "saga.saga.jp",
+ "shiroishi.saga.jp",
+ "taku.saga.jp",
+ "tara.saga.jp",
+ "tosu.saga.jp",
+ "yoshinogari.saga.jp",
+ "arakawa.saitama.jp",
+ "asaka.saitama.jp",
+ "chichibu.saitama.jp",
+ "fujimi.saitama.jp",
+ "fujimino.saitama.jp",
+ "fukaya.saitama.jp",
+ "hanno.saitama.jp",
+ "hanyu.saitama.jp",
+ "hasuda.saitama.jp",
+ "hatogaya.saitama.jp",
+ "hatoyama.saitama.jp",
+ "hidaka.saitama.jp",
+ "higashichichibu.saitama.jp",
+ "higashimatsuyama.saitama.jp",
+ "honjo.saitama.jp",
+ "ina.saitama.jp",
+ "iruma.saitama.jp",
+ "iwatsuki.saitama.jp",
+ "kamiizumi.saitama.jp",
+ "kamikawa.saitama.jp",
+ "kamisato.saitama.jp",
+ "kasukabe.saitama.jp",
+ "kawagoe.saitama.jp",
+ "kawaguchi.saitama.jp",
+ "kawajima.saitama.jp",
+ "kazo.saitama.jp",
+ "kitamoto.saitama.jp",
+ "koshigaya.saitama.jp",
+ "kounosu.saitama.jp",
+ "kuki.saitama.jp",
+ "kumagaya.saitama.jp",
+ "matsubushi.saitama.jp",
+ "minano.saitama.jp",
+ "misato.saitama.jp",
+ "miyashiro.saitama.jp",
+ "miyoshi.saitama.jp",
+ "moroyama.saitama.jp",
+ "nagatoro.saitama.jp",
+ "namegawa.saitama.jp",
+ "niiza.saitama.jp",
+ "ogano.saitama.jp",
+ "ogawa.saitama.jp",
+ "ogose.saitama.jp",
+ "okegawa.saitama.jp",
+ "omiya.saitama.jp",
+ "otaki.saitama.jp",
+ "ranzan.saitama.jp",
+ "ryokami.saitama.jp",
+ "saitama.saitama.jp",
+ "sakado.saitama.jp",
+ "satte.saitama.jp",
+ "sayama.saitama.jp",
+ "shiki.saitama.jp",
+ "shiraoka.saitama.jp",
+ "soka.saitama.jp",
+ "sugito.saitama.jp",
+ "toda.saitama.jp",
+ "tokigawa.saitama.jp",
+ "tokorozawa.saitama.jp",
+ "tsurugashima.saitama.jp",
+ "urawa.saitama.jp",
+ "warabi.saitama.jp",
+ "yashio.saitama.jp",
+ "yokoze.saitama.jp",
+ "yono.saitama.jp",
+ "yorii.saitama.jp",
+ "yoshida.saitama.jp",
+ "yoshikawa.saitama.jp",
+ "yoshimi.saitama.jp",
+ "aisho.shiga.jp",
+ "gamo.shiga.jp",
+ "higashiomi.shiga.jp",
+ "hikone.shiga.jp",
+ "koka.shiga.jp",
+ "konan.shiga.jp",
+ "kosei.shiga.jp",
+ "koto.shiga.jp",
+ "kusatsu.shiga.jp",
+ "maibara.shiga.jp",
+ "moriyama.shiga.jp",
+ "nagahama.shiga.jp",
+ "nishiazai.shiga.jp",
+ "notogawa.shiga.jp",
+ "omihachiman.shiga.jp",
+ "otsu.shiga.jp",
+ "ritto.shiga.jp",
+ "ryuoh.shiga.jp",
+ "takashima.shiga.jp",
+ "takatsuki.shiga.jp",
+ "torahime.shiga.jp",
+ "toyosato.shiga.jp",
+ "yasu.shiga.jp",
+ "akagi.shimane.jp",
+ "ama.shimane.jp",
+ "gotsu.shimane.jp",
+ "hamada.shimane.jp",
+ "higashiizumo.shimane.jp",
+ "hikawa.shimane.jp",
+ "hikimi.shimane.jp",
+ "izumo.shimane.jp",
+ "kakinoki.shimane.jp",
+ "masuda.shimane.jp",
+ "matsue.shimane.jp",
+ "misato.shimane.jp",
+ "nishinoshima.shimane.jp",
+ "ohda.shimane.jp",
+ "okinoshima.shimane.jp",
+ "okuizumo.shimane.jp",
+ "shimane.shimane.jp",
+ "tamayu.shimane.jp",
+ "tsuwano.shimane.jp",
+ "unnan.shimane.jp",
+ "yakumo.shimane.jp",
+ "yasugi.shimane.jp",
+ "yatsuka.shimane.jp",
+ "arai.shizuoka.jp",
+ "atami.shizuoka.jp",
+ "fuji.shizuoka.jp",
+ "fujieda.shizuoka.jp",
+ "fujikawa.shizuoka.jp",
+ "fujinomiya.shizuoka.jp",
+ "fukuroi.shizuoka.jp",
+ "gotemba.shizuoka.jp",
+ "haibara.shizuoka.jp",
+ "hamamatsu.shizuoka.jp",
+ "higashiizu.shizuoka.jp",
+ "ito.shizuoka.jp",
+ "iwata.shizuoka.jp",
+ "izu.shizuoka.jp",
+ "izunokuni.shizuoka.jp",
+ "kakegawa.shizuoka.jp",
+ "kannami.shizuoka.jp",
+ "kawanehon.shizuoka.jp",
+ "kawazu.shizuoka.jp",
+ "kikugawa.shizuoka.jp",
+ "kosai.shizuoka.jp",
+ "makinohara.shizuoka.jp",
+ "matsuzaki.shizuoka.jp",
+ "minamiizu.shizuoka.jp",
+ "mishima.shizuoka.jp",
+ "morimachi.shizuoka.jp",
+ "nishiizu.shizuoka.jp",
+ "numazu.shizuoka.jp",
+ "omaezaki.shizuoka.jp",
+ "shimada.shizuoka.jp",
+ "shimizu.shizuoka.jp",
+ "shimoda.shizuoka.jp",
+ "shizuoka.shizuoka.jp",
+ "susono.shizuoka.jp",
+ "yaizu.shizuoka.jp",
+ "yoshida.shizuoka.jp",
+ "ashikaga.tochigi.jp",
+ "bato.tochigi.jp",
+ "haga.tochigi.jp",
+ "ichikai.tochigi.jp",
+ "iwafune.tochigi.jp",
+ "kaminokawa.tochigi.jp",
+ "kanuma.tochigi.jp",
+ "karasuyama.tochigi.jp",
+ "kuroiso.tochigi.jp",
+ "mashiko.tochigi.jp",
+ "mibu.tochigi.jp",
+ "moka.tochigi.jp",
+ "motegi.tochigi.jp",
+ "nasu.tochigi.jp",
+ "nasushiobara.tochigi.jp",
+ "nikko.tochigi.jp",
+ "nishikata.tochigi.jp",
+ "nogi.tochigi.jp",
+ "ohira.tochigi.jp",
+ "ohtawara.tochigi.jp",
+ "oyama.tochigi.jp",
+ "sakura.tochigi.jp",
+ "sano.tochigi.jp",
+ "shimotsuke.tochigi.jp",
+ "shioya.tochigi.jp",
+ "takanezawa.tochigi.jp",
+ "tochigi.tochigi.jp",
+ "tsuga.tochigi.jp",
+ "ujiie.tochigi.jp",
+ "utsunomiya.tochigi.jp",
+ "yaita.tochigi.jp",
+ "aizumi.tokushima.jp",
+ "anan.tokushima.jp",
+ "ichiba.tokushima.jp",
+ "itano.tokushima.jp",
+ "kainan.tokushima.jp",
+ "komatsushima.tokushima.jp",
+ "matsushige.tokushima.jp",
+ "mima.tokushima.jp",
+ "minami.tokushima.jp",
+ "miyoshi.tokushima.jp",
+ "mugi.tokushima.jp",
+ "nakagawa.tokushima.jp",
+ "naruto.tokushima.jp",
+ "sanagochi.tokushima.jp",
+ "shishikui.tokushima.jp",
+ "tokushima.tokushima.jp",
+ "wajiki.tokushima.jp",
+ "adachi.tokyo.jp",
+ "akiruno.tokyo.jp",
+ "akishima.tokyo.jp",
+ "aogashima.tokyo.jp",
+ "arakawa.tokyo.jp",
+ "bunkyo.tokyo.jp",
+ "chiyoda.tokyo.jp",
+ "chofu.tokyo.jp",
+ "chuo.tokyo.jp",
+ "edogawa.tokyo.jp",
+ "fuchu.tokyo.jp",
+ "fussa.tokyo.jp",
+ "hachijo.tokyo.jp",
+ "hachioji.tokyo.jp",
+ "hamura.tokyo.jp",
+ "higashikurume.tokyo.jp",
+ "higashimurayama.tokyo.jp",
+ "higashiyamato.tokyo.jp",
+ "hino.tokyo.jp",
+ "hinode.tokyo.jp",
+ "hinohara.tokyo.jp",
+ "inagi.tokyo.jp",
+ "itabashi.tokyo.jp",
+ "katsushika.tokyo.jp",
+ "kita.tokyo.jp",
+ "kiyose.tokyo.jp",
+ "kodaira.tokyo.jp",
+ "koganei.tokyo.jp",
+ "kokubunji.tokyo.jp",
+ "komae.tokyo.jp",
+ "koto.tokyo.jp",
+ "kouzushima.tokyo.jp",
+ "kunitachi.tokyo.jp",
+ "machida.tokyo.jp",
+ "meguro.tokyo.jp",
+ "minato.tokyo.jp",
+ "mitaka.tokyo.jp",
+ "mizuho.tokyo.jp",
+ "musashimurayama.tokyo.jp",
+ "musashino.tokyo.jp",
+ "nakano.tokyo.jp",
+ "nerima.tokyo.jp",
+ "ogasawara.tokyo.jp",
+ "okutama.tokyo.jp",
+ "ome.tokyo.jp",
+ "oshima.tokyo.jp",
+ "ota.tokyo.jp",
+ "setagaya.tokyo.jp",
+ "shibuya.tokyo.jp",
+ "shinagawa.tokyo.jp",
+ "shinjuku.tokyo.jp",
+ "suginami.tokyo.jp",
+ "sumida.tokyo.jp",
+ "tachikawa.tokyo.jp",
+ "taito.tokyo.jp",
+ "tama.tokyo.jp",
+ "toshima.tokyo.jp",
+ "chizu.tottori.jp",
+ "hino.tottori.jp",
+ "kawahara.tottori.jp",
+ "koge.tottori.jp",
+ "kotoura.tottori.jp",
+ "misasa.tottori.jp",
+ "nanbu.tottori.jp",
+ "nichinan.tottori.jp",
+ "sakaiminato.tottori.jp",
+ "tottori.tottori.jp",
+ "wakasa.tottori.jp",
+ "yazu.tottori.jp",
+ "yonago.tottori.jp",
+ "asahi.toyama.jp",
+ "fuchu.toyama.jp",
+ "fukumitsu.toyama.jp",
+ "funahashi.toyama.jp",
+ "himi.toyama.jp",
+ "imizu.toyama.jp",
+ "inami.toyama.jp",
+ "johana.toyama.jp",
+ "kamiichi.toyama.jp",
+ "kurobe.toyama.jp",
+ "nakaniikawa.toyama.jp",
+ "namerikawa.toyama.jp",
+ "nanto.toyama.jp",
+ "nyuzen.toyama.jp",
+ "oyabe.toyama.jp",
+ "taira.toyama.jp",
+ "takaoka.toyama.jp",
+ "tateyama.toyama.jp",
+ "toga.toyama.jp",
+ "tonami.toyama.jp",
+ "toyama.toyama.jp",
+ "unazuki.toyama.jp",
+ "uozu.toyama.jp",
+ "yamada.toyama.jp",
+ "arida.wakayama.jp",
+ "aridagawa.wakayama.jp",
+ "gobo.wakayama.jp",
+ "hashimoto.wakayama.jp",
+ "hidaka.wakayama.jp",
+ "hirogawa.wakayama.jp",
+ "inami.wakayama.jp",
+ "iwade.wakayama.jp",
+ "kainan.wakayama.jp",
+ "kamitonda.wakayama.jp",
+ "katsuragi.wakayama.jp",
+ "kimino.wakayama.jp",
+ "kinokawa.wakayama.jp",
+ "kitayama.wakayama.jp",
+ "koya.wakayama.jp",
+ "koza.wakayama.jp",
+ "kozagawa.wakayama.jp",
+ "kudoyama.wakayama.jp",
+ "kushimoto.wakayama.jp",
+ "mihama.wakayama.jp",
+ "misato.wakayama.jp",
+ "nachikatsuura.wakayama.jp",
+ "shingu.wakayama.jp",
+ "shirahama.wakayama.jp",
+ "taiji.wakayama.jp",
+ "tanabe.wakayama.jp",
+ "wakayama.wakayama.jp",
+ "yuasa.wakayama.jp",
+ "yura.wakayama.jp",
+ "asahi.yamagata.jp",
+ "funagata.yamagata.jp",
+ "higashine.yamagata.jp",
+ "iide.yamagata.jp",
+ "kahoku.yamagata.jp",
+ "kaminoyama.yamagata.jp",
+ "kaneyama.yamagata.jp",
+ "kawanishi.yamagata.jp",
+ "mamurogawa.yamagata.jp",
+ "mikawa.yamagata.jp",
+ "murayama.yamagata.jp",
+ "nagai.yamagata.jp",
+ "nakayama.yamagata.jp",
+ "nanyo.yamagata.jp",
+ "nishikawa.yamagata.jp",
+ "obanazawa.yamagata.jp",
+ "oe.yamagata.jp",
+ "oguni.yamagata.jp",
+ "ohkura.yamagata.jp",
+ "oishida.yamagata.jp",
+ "sagae.yamagata.jp",
+ "sakata.yamagata.jp",
+ "sakegawa.yamagata.jp",
+ "shinjo.yamagata.jp",
+ "shirataka.yamagata.jp",
+ "shonai.yamagata.jp",
+ "takahata.yamagata.jp",
+ "tendo.yamagata.jp",
+ "tozawa.yamagata.jp",
+ "tsuruoka.yamagata.jp",
+ "yamagata.yamagata.jp",
+ "yamanobe.yamagata.jp",
+ "yonezawa.yamagata.jp",
+ "yuza.yamagata.jp",
+ "abu.yamaguchi.jp",
+ "hagi.yamaguchi.jp",
+ "hikari.yamaguchi.jp",
+ "hofu.yamaguchi.jp",
+ "iwakuni.yamaguchi.jp",
+ "kudamatsu.yamaguchi.jp",
+ "mitou.yamaguchi.jp",
+ "nagato.yamaguchi.jp",
+ "oshima.yamaguchi.jp",
+ "shimonoseki.yamaguchi.jp",
+ "shunan.yamaguchi.jp",
+ "tabuse.yamaguchi.jp",
+ "tokuyama.yamaguchi.jp",
+ "toyota.yamaguchi.jp",
+ "ube.yamaguchi.jp",
+ "yuu.yamaguchi.jp",
+ "chuo.yamanashi.jp",
+ "doshi.yamanashi.jp",
+ "fuefuki.yamanashi.jp",
+ "fujikawa.yamanashi.jp",
+ "fujikawaguchiko.yamanashi.jp",
+ "fujiyoshida.yamanashi.jp",
+ "hayakawa.yamanashi.jp",
+ "hokuto.yamanashi.jp",
+ "ichikawamisato.yamanashi.jp",
+ "kai.yamanashi.jp",
+ "kofu.yamanashi.jp",
+ "koshu.yamanashi.jp",
+ "kosuge.yamanashi.jp",
+ "minami-alps.yamanashi.jp",
+ "minobu.yamanashi.jp",
+ "nakamichi.yamanashi.jp",
+ "nanbu.yamanashi.jp",
+ "narusawa.yamanashi.jp",
+ "nirasaki.yamanashi.jp",
+ "nishikatsura.yamanashi.jp",
+ "oshino.yamanashi.jp",
+ "otsuki.yamanashi.jp",
+ "showa.yamanashi.jp",
+ "tabayama.yamanashi.jp",
+ "tsuru.yamanashi.jp",
+ "uenohara.yamanashi.jp",
+ "yamanakako.yamanashi.jp",
+ "yamanashi.yamanashi.jp",
+ "*.ke",
+ "kg",
+ "org.kg",
+ "net.kg",
+ "com.kg",
+ "edu.kg",
+ "gov.kg",
+ "mil.kg",
+ "*.kh",
+ "ki",
+ "edu.ki",
+ "biz.ki",
+ "net.ki",
+ "org.ki",
+ "gov.ki",
+ "info.ki",
+ "com.ki",
+ "km",
+ "org.km",
+ "nom.km",
+ "gov.km",
+ "prd.km",
+ "tm.km",
+ "edu.km",
+ "mil.km",
+ "ass.km",
+ "com.km",
+ "coop.km",
+ "asso.km",
+ "presse.km",
+ "medecin.km",
+ "notaires.km",
+ "pharmaciens.km",
+ "veterinaire.km",
+ "gouv.km",
+ "kn",
+ "net.kn",
+ "org.kn",
+ "edu.kn",
+ "gov.kn",
+ "kp",
+ "com.kp",
+ "edu.kp",
+ "gov.kp",
+ "org.kp",
+ "rep.kp",
+ "tra.kp",
+ "kr",
+ "ac.kr",
+ "co.kr",
+ "es.kr",
+ "go.kr",
+ "hs.kr",
+ "kg.kr",
+ "mil.kr",
+ "ms.kr",
+ "ne.kr",
+ "or.kr",
+ "pe.kr",
+ "re.kr",
+ "sc.kr",
+ "busan.kr",
+ "chungbuk.kr",
+ "chungnam.kr",
+ "daegu.kr",
+ "daejeon.kr",
+ "gangwon.kr",
+ "gwangju.kr",
+ "gyeongbuk.kr",
+ "gyeonggi.kr",
+ "gyeongnam.kr",
+ "incheon.kr",
+ "jeju.kr",
+ "jeonbuk.kr",
+ "jeonnam.kr",
+ "seoul.kr",
+ "ulsan.kr",
+ "*.kw",
+ "ky",
+ "edu.ky",
+ "gov.ky",
+ "com.ky",
+ "org.ky",
+ "net.ky",
+ "kz",
+ "org.kz",
+ "edu.kz",
+ "net.kz",
+ "gov.kz",
+ "mil.kz",
+ "com.kz",
+ "la",
+ "int.la",
+ "net.la",
+ "info.la",
+ "edu.la",
+ "gov.la",
+ "per.la",
+ "com.la",
+ "org.la",
+ "lb",
+ "com.lb",
+ "edu.lb",
+ "gov.lb",
+ "net.lb",
+ "org.lb",
+ "lc",
+ "com.lc",
+ "net.lc",
+ "co.lc",
+ "org.lc",
+ "edu.lc",
+ "gov.lc",
+ "li",
+ "lk",
+ "gov.lk",
+ "sch.lk",
+ "net.lk",
+ "int.lk",
+ "com.lk",
+ "org.lk",
+ "edu.lk",
+ "ngo.lk",
+ "soc.lk",
+ "web.lk",
+ "ltd.lk",
+ "assn.lk",
+ "grp.lk",
+ "hotel.lk",
+ "ac.lk",
+ "lr",
+ "com.lr",
+ "edu.lr",
+ "gov.lr",
+ "org.lr",
+ "net.lr",
+ "ls",
+ "co.ls",
+ "org.ls",
+ "lt",
+ "gov.lt",
+ "lu",
+ "lv",
+ "com.lv",
+ "edu.lv",
+ "gov.lv",
+ "org.lv",
+ "mil.lv",
+ "id.lv",
+ "net.lv",
+ "asn.lv",
+ "conf.lv",
+ "ly",
+ "com.ly",
+ "net.ly",
+ "gov.ly",
+ "plc.ly",
+ "edu.ly",
+ "sch.ly",
+ "med.ly",
+ "org.ly",
+ "id.ly",
+ "ma",
+ "co.ma",
+ "net.ma",
+ "gov.ma",
+ "org.ma",
+ "ac.ma",
+ "press.ma",
+ "mc",
+ "tm.mc",
+ "asso.mc",
+ "md",
+ "me",
+ "co.me",
+ "net.me",
+ "org.me",
+ "edu.me",
+ "ac.me",
+ "gov.me",
+ "its.me",
+ "priv.me",
+ "mg",
+ "org.mg",
+ "nom.mg",
+ "gov.mg",
+ "prd.mg",
+ "tm.mg",
+ "edu.mg",
+ "mil.mg",
+ "com.mg",
+ "co.mg",
+ "mh",
+ "mil",
+ "mk",
+ "com.mk",
+ "org.mk",
+ "net.mk",
+ "edu.mk",
+ "gov.mk",
+ "inf.mk",
+ "name.mk",
+ "ml",
+ "com.ml",
+ "edu.ml",
+ "gouv.ml",
+ "gov.ml",
+ "net.ml",
+ "org.ml",
+ "presse.ml",
+ "*.mm",
+ "mn",
+ "gov.mn",
+ "edu.mn",
+ "org.mn",
+ "mo",
+ "com.mo",
+ "net.mo",
+ "org.mo",
+ "edu.mo",
+ "gov.mo",
+ "mobi",
+ "mp",
+ "mq",
+ "mr",
+ "gov.mr",
+ "ms",
+ "com.ms",
+ "edu.ms",
+ "gov.ms",
+ "net.ms",
+ "org.ms",
+ "mt",
+ "com.mt",
+ "edu.mt",
+ "net.mt",
+ "org.mt",
+ "mu",
+ "com.mu",
+ "net.mu",
+ "org.mu",
+ "gov.mu",
+ "ac.mu",
+ "co.mu",
+ "or.mu",
+ "museum",
+ "academy.museum",
+ "agriculture.museum",
+ "air.museum",
+ "airguard.museum",
+ "alabama.museum",
+ "alaska.museum",
+ "amber.museum",
+ "ambulance.museum",
+ "american.museum",
+ "americana.museum",
+ "americanantiques.museum",
+ "americanart.museum",
+ "amsterdam.museum",
+ "and.museum",
+ "annefrank.museum",
+ "anthro.museum",
+ "anthropology.museum",
+ "antiques.museum",
+ "aquarium.museum",
+ "arboretum.museum",
+ "archaeological.museum",
+ "archaeology.museum",
+ "architecture.museum",
+ "art.museum",
+ "artanddesign.museum",
+ "artcenter.museum",
+ "artdeco.museum",
+ "arteducation.museum",
+ "artgallery.museum",
+ "arts.museum",
+ "artsandcrafts.museum",
+ "asmatart.museum",
+ "assassination.museum",
+ "assisi.museum",
+ "association.museum",
+ "astronomy.museum",
+ "atlanta.museum",
+ "austin.museum",
+ "australia.museum",
+ "automotive.museum",
+ "aviation.museum",
+ "axis.museum",
+ "badajoz.museum",
+ "baghdad.museum",
+ "bahn.museum",
+ "bale.museum",
+ "baltimore.museum",
+ "barcelona.museum",
+ "baseball.museum",
+ "basel.museum",
+ "baths.museum",
+ "bauern.museum",
+ "beauxarts.museum",
+ "beeldengeluid.museum",
+ "bellevue.museum",
+ "bergbau.museum",
+ "berkeley.museum",
+ "berlin.museum",
+ "bern.museum",
+ "bible.museum",
+ "bilbao.museum",
+ "bill.museum",
+ "birdart.museum",
+ "birthplace.museum",
+ "bonn.museum",
+ "boston.museum",
+ "botanical.museum",
+ "botanicalgarden.museum",
+ "botanicgarden.museum",
+ "botany.museum",
+ "brandywinevalley.museum",
+ "brasil.museum",
+ "bristol.museum",
+ "british.museum",
+ "britishcolumbia.museum",
+ "broadcast.museum",
+ "brunel.museum",
+ "brussel.museum",
+ "brussels.museum",
+ "bruxelles.museum",
+ "building.museum",
+ "burghof.museum",
+ "bus.museum",
+ "bushey.museum",
+ "cadaques.museum",
+ "california.museum",
+ "cambridge.museum",
+ "can.museum",
+ "canada.museum",
+ "capebreton.museum",
+ "carrier.museum",
+ "cartoonart.museum",
+ "casadelamoneda.museum",
+ "castle.museum",
+ "castres.museum",
+ "celtic.museum",
+ "center.museum",
+ "chattanooga.museum",
+ "cheltenham.museum",
+ "chesapeakebay.museum",
+ "chicago.museum",
+ "children.museum",
+ "childrens.museum",
+ "childrensgarden.museum",
+ "chiropractic.museum",
+ "chocolate.museum",
+ "christiansburg.museum",
+ "cincinnati.museum",
+ "cinema.museum",
+ "circus.museum",
+ "civilisation.museum",
+ "civilization.museum",
+ "civilwar.museum",
+ "clinton.museum",
+ "clock.museum",
+ "coal.museum",
+ "coastaldefence.museum",
+ "cody.museum",
+ "coldwar.museum",
+ "collection.museum",
+ "colonialwilliamsburg.museum",
+ "coloradoplateau.museum",
+ "columbia.museum",
+ "columbus.museum",
+ "communication.museum",
+ "communications.museum",
+ "community.museum",
+ "computer.museum",
+ "computerhistory.museum",
+ "xn--comunicaes-v6a2o.museum",
+ "contemporary.museum",
+ "contemporaryart.museum",
+ "convent.museum",
+ "copenhagen.museum",
+ "corporation.museum",
+ "xn--correios-e-telecomunicaes-ghc29a.museum",
+ "corvette.museum",
+ "costume.museum",
+ "countryestate.museum",
+ "county.museum",
+ "crafts.museum",
+ "cranbrook.museum",
+ "creation.museum",
+ "cultural.museum",
+ "culturalcenter.museum",
+ "culture.museum",
+ "cyber.museum",
+ "cymru.museum",
+ "dali.museum",
+ "dallas.museum",
+ "database.museum",
+ "ddr.museum",
+ "decorativearts.museum",
+ "delaware.museum",
+ "delmenhorst.museum",
+ "denmark.museum",
+ "depot.museum",
+ "design.museum",
+ "detroit.museum",
+ "dinosaur.museum",
+ "discovery.museum",
+ "dolls.museum",
+ "donostia.museum",
+ "durham.museum",
+ "eastafrica.museum",
+ "eastcoast.museum",
+ "education.museum",
+ "educational.museum",
+ "egyptian.museum",
+ "eisenbahn.museum",
+ "elburg.museum",
+ "elvendrell.museum",
+ "embroidery.museum",
+ "encyclopedic.museum",
+ "england.museum",
+ "entomology.museum",
+ "environment.museum",
+ "environmentalconservation.museum",
+ "epilepsy.museum",
+ "essex.museum",
+ "estate.museum",
+ "ethnology.museum",
+ "exeter.museum",
+ "exhibition.museum",
+ "family.museum",
+ "farm.museum",
+ "farmequipment.museum",
+ "farmers.museum",
+ "farmstead.museum",
+ "field.museum",
+ "figueres.museum",
+ "filatelia.museum",
+ "film.museum",
+ "fineart.museum",
+ "finearts.museum",
+ "finland.museum",
+ "flanders.museum",
+ "florida.museum",
+ "force.museum",
+ "fortmissoula.museum",
+ "fortworth.museum",
+ "foundation.museum",
+ "francaise.museum",
+ "frankfurt.museum",
+ "franziskaner.museum",
+ "freemasonry.museum",
+ "freiburg.museum",
+ "fribourg.museum",
+ "frog.museum",
+ "fundacio.museum",
+ "furniture.museum",
+ "gallery.museum",
+ "garden.museum",
+ "gateway.museum",
+ "geelvinck.museum",
+ "gemological.museum",
+ "geology.museum",
+ "georgia.museum",
+ "giessen.museum",
+ "glas.museum",
+ "glass.museum",
+ "gorge.museum",
+ "grandrapids.museum",
+ "graz.museum",
+ "guernsey.museum",
+ "halloffame.museum",
+ "hamburg.museum",
+ "handson.museum",
+ "harvestcelebration.museum",
+ "hawaii.museum",
+ "health.museum",
+ "heimatunduhren.museum",
+ "hellas.museum",
+ "helsinki.museum",
+ "hembygdsforbund.museum",
+ "heritage.museum",
+ "histoire.museum",
+ "historical.museum",
+ "historicalsociety.museum",
+ "historichouses.museum",
+ "historisch.museum",
+ "historisches.museum",
+ "history.museum",
+ "historyofscience.museum",
+ "horology.museum",
+ "house.museum",
+ "humanities.museum",
+ "illustration.museum",
+ "imageandsound.museum",
+ "indian.museum",
+ "indiana.museum",
+ "indianapolis.museum",
+ "indianmarket.museum",
+ "intelligence.museum",
+ "interactive.museum",
+ "iraq.museum",
+ "iron.museum",
+ "isleofman.museum",
+ "jamison.museum",
+ "jefferson.museum",
+ "jerusalem.museum",
+ "jewelry.museum",
+ "jewish.museum",
+ "jewishart.museum",
+ "jfk.museum",
+ "journalism.museum",
+ "judaica.museum",
+ "judygarland.museum",
+ "juedisches.museum",
+ "juif.museum",
+ "karate.museum",
+ "karikatur.museum",
+ "kids.museum",
+ "koebenhavn.museum",
+ "koeln.museum",
+ "kunst.museum",
+ "kunstsammlung.museum",
+ "kunstunddesign.museum",
+ "labor.museum",
+ "labour.museum",
+ "lajolla.museum",
+ "lancashire.museum",
+ "landes.museum",
+ "lans.museum",
+ "xn--lns-qla.museum",
+ "larsson.museum",
+ "lewismiller.museum",
+ "lincoln.museum",
+ "linz.museum",
+ "living.museum",
+ "livinghistory.museum",
+ "localhistory.museum",
+ "london.museum",
+ "losangeles.museum",
+ "louvre.museum",
+ "loyalist.museum",
+ "lucerne.museum",
+ "luxembourg.museum",
+ "luzern.museum",
+ "mad.museum",
+ "madrid.museum",
+ "mallorca.museum",
+ "manchester.museum",
+ "mansion.museum",
+ "mansions.museum",
+ "manx.museum",
+ "marburg.museum",
+ "maritime.museum",
+ "maritimo.museum",
+ "maryland.museum",
+ "marylhurst.museum",
+ "media.museum",
+ "medical.museum",
+ "medizinhistorisches.museum",
+ "meeres.museum",
+ "memorial.museum",
+ "mesaverde.museum",
+ "michigan.museum",
+ "midatlantic.museum",
+ "military.museum",
+ "mill.museum",
+ "miners.museum",
+ "mining.museum",
+ "minnesota.museum",
+ "missile.museum",
+ "missoula.museum",
+ "modern.museum",
+ "moma.museum",
+ "money.museum",
+ "monmouth.museum",
+ "monticello.museum",
+ "montreal.museum",
+ "moscow.museum",
+ "motorcycle.museum",
+ "muenchen.museum",
+ "muenster.museum",
+ "mulhouse.museum",
+ "muncie.museum",
+ "museet.museum",
+ "museumcenter.museum",
+ "museumvereniging.museum",
+ "music.museum",
+ "national.museum",
+ "nationalfirearms.museum",
+ "nationalheritage.museum",
+ "nativeamerican.museum",
+ "naturalhistory.museum",
+ "naturalhistorymuseum.museum",
+ "naturalsciences.museum",
+ "nature.museum",
+ "naturhistorisches.museum",
+ "natuurwetenschappen.museum",
+ "naumburg.museum",
+ "naval.museum",
+ "nebraska.museum",
+ "neues.museum",
+ "newhampshire.museum",
+ "newjersey.museum",
+ "newmexico.museum",
+ "newport.museum",
+ "newspaper.museum",
+ "newyork.museum",
+ "niepce.museum",
+ "norfolk.museum",
+ "north.museum",
+ "nrw.museum",
+ "nuernberg.museum",
+ "nuremberg.museum",
+ "nyc.museum",
+ "nyny.museum",
+ "oceanographic.museum",
+ "oceanographique.museum",
+ "omaha.museum",
+ "online.museum",
+ "ontario.museum",
+ "openair.museum",
+ "oregon.museum",
+ "oregontrail.museum",
+ "otago.museum",
+ "oxford.museum",
+ "pacific.museum",
+ "paderborn.museum",
+ "palace.museum",
+ "paleo.museum",
+ "palmsprings.museum",
+ "panama.museum",
+ "paris.museum",
+ "pasadena.museum",
+ "pharmacy.museum",
+ "philadelphia.museum",
+ "philadelphiaarea.museum",
+ "philately.museum",
+ "phoenix.museum",
+ "photography.museum",
+ "pilots.museum",
+ "pittsburgh.museum",
+ "planetarium.museum",
+ "plantation.museum",
+ "plants.museum",
+ "plaza.museum",
+ "portal.museum",
+ "portland.museum",
+ "portlligat.museum",
+ "posts-and-telecommunications.museum",
+ "preservation.museum",
+ "presidio.museum",
+ "press.museum",
+ "project.museum",
+ "public.museum",
+ "pubol.museum",
+ "quebec.museum",
+ "railroad.museum",
+ "railway.museum",
+ "research.museum",
+ "resistance.museum",
+ "riodejaneiro.museum",
+ "rochester.museum",
+ "rockart.museum",
+ "roma.museum",
+ "russia.museum",
+ "saintlouis.museum",
+ "salem.museum",
+ "salvadordali.museum",
+ "salzburg.museum",
+ "sandiego.museum",
+ "sanfrancisco.museum",
+ "santabarbara.museum",
+ "santacruz.museum",
+ "santafe.museum",
+ "saskatchewan.museum",
+ "satx.museum",
+ "savannahga.museum",
+ "schlesisches.museum",
+ "schoenbrunn.museum",
+ "schokoladen.museum",
+ "school.museum",
+ "schweiz.museum",
+ "science.museum",
+ "scienceandhistory.museum",
+ "scienceandindustry.museum",
+ "sciencecenter.museum",
+ "sciencecenters.museum",
+ "science-fiction.museum",
+ "sciencehistory.museum",
+ "sciences.museum",
+ "sciencesnaturelles.museum",
+ "scotland.museum",
+ "seaport.museum",
+ "settlement.museum",
+ "settlers.museum",
+ "shell.museum",
+ "sherbrooke.museum",
+ "sibenik.museum",
+ "silk.museum",
+ "ski.museum",
+ "skole.museum",
+ "society.museum",
+ "sologne.museum",
+ "soundandvision.museum",
+ "southcarolina.museum",
+ "southwest.museum",
+ "space.museum",
+ "spy.museum",
+ "square.museum",
+ "stadt.museum",
+ "stalbans.museum",
+ "starnberg.museum",
+ "state.museum",
+ "stateofdelaware.museum",
+ "station.museum",
+ "steam.museum",
+ "steiermark.museum",
+ "stjohn.museum",
+ "stockholm.museum",
+ "stpetersburg.museum",
+ "stuttgart.museum",
+ "suisse.museum",
+ "surgeonshall.museum",
+ "surrey.museum",
+ "svizzera.museum",
+ "sweden.museum",
+ "sydney.museum",
+ "tank.museum",
+ "tcm.museum",
+ "technology.museum",
+ "telekommunikation.museum",
+ "television.museum",
+ "texas.museum",
+ "textile.museum",
+ "theater.museum",
+ "time.museum",
+ "timekeeping.museum",
+ "topology.museum",
+ "torino.museum",
+ "touch.museum",
+ "town.museum",
+ "transport.museum",
+ "tree.museum",
+ "trolley.museum",
+ "trust.museum",
+ "trustee.museum",
+ "uhren.museum",
+ "ulm.museum",
+ "undersea.museum",
+ "university.museum",
+ "usa.museum",
+ "usantiques.museum",
+ "usarts.museum",
+ "uscountryestate.museum",
+ "usculture.museum",
+ "usdecorativearts.museum",
+ "usgarden.museum",
+ "ushistory.museum",
+ "ushuaia.museum",
+ "uslivinghistory.museum",
+ "utah.museum",
+ "uvic.museum",
+ "valley.museum",
+ "vantaa.museum",
+ "versailles.museum",
+ "viking.museum",
+ "village.museum",
+ "virginia.museum",
+ "virtual.museum",
+ "virtuel.museum",
+ "vlaanderen.museum",
+ "volkenkunde.museum",
+ "wales.museum",
+ "wallonie.museum",
+ "war.museum",
+ "washingtondc.museum",
+ "watchandclock.museum",
+ "watch-and-clock.museum",
+ "western.museum",
+ "westfalen.museum",
+ "whaling.museum",
+ "wildlife.museum",
+ "williamsburg.museum",
+ "windmill.museum",
+ "workshop.museum",
+ "york.museum",
+ "yorkshire.museum",
+ "yosemite.museum",
+ "youth.museum",
+ "zoological.museum",
+ "zoology.museum",
+ "xn--9dbhblg6di.museum",
+ "xn--h1aegh.museum",
+ "mv",
+ "aero.mv",
+ "biz.mv",
+ "com.mv",
+ "coop.mv",
+ "edu.mv",
+ "gov.mv",
+ "info.mv",
+ "int.mv",
+ "mil.mv",
+ "museum.mv",
+ "name.mv",
+ "net.mv",
+ "org.mv",
+ "pro.mv",
+ "mw",
+ "ac.mw",
+ "biz.mw",
+ "co.mw",
+ "com.mw",
+ "coop.mw",
+ "edu.mw",
+ "gov.mw",
+ "int.mw",
+ "museum.mw",
+ "net.mw",
+ "org.mw",
+ "mx",
+ "com.mx",
+ "org.mx",
+ "gob.mx",
+ "edu.mx",
+ "net.mx",
+ "my",
+ "com.my",
+ "net.my",
+ "org.my",
+ "gov.my",
+ "edu.my",
+ "mil.my",
+ "name.my",
+ "mz",
+ "ac.mz",
+ "adv.mz",
+ "co.mz",
+ "edu.mz",
+ "gov.mz",
+ "mil.mz",
+ "net.mz",
+ "org.mz",
+ "na",
+ "info.na",
+ "pro.na",
+ "name.na",
+ "school.na",
+ "or.na",
+ "dr.na",
+ "us.na",
+ "mx.na",
+ "ca.na",
+ "in.na",
+ "cc.na",
+ "tv.na",
+ "ws.na",
+ "mobi.na",
+ "co.na",
+ "com.na",
+ "org.na",
+ "name",
+ "nc",
+ "asso.nc",
+ "nom.nc",
+ "ne",
+ "net",
+ "nf",
+ "com.nf",
+ "net.nf",
+ "per.nf",
+ "rec.nf",
+ "web.nf",
+ "arts.nf",
+ "firm.nf",
+ "info.nf",
+ "other.nf",
+ "store.nf",
+ "ng",
+ "com.ng",
+ "edu.ng",
+ "gov.ng",
+ "i.ng",
+ "mil.ng",
+ "mobi.ng",
+ "name.ng",
+ "net.ng",
+ "org.ng",
+ "sch.ng",
+ "ni",
+ "ac.ni",
+ "biz.ni",
+ "co.ni",
+ "com.ni",
+ "edu.ni",
+ "gob.ni",
+ "in.ni",
+ "info.ni",
+ "int.ni",
+ "mil.ni",
+ "net.ni",
+ "nom.ni",
+ "org.ni",
+ "web.ni",
+ "nl",
+ "bv.nl",
+ "no",
+ "fhs.no",
+ "vgs.no",
+ "fylkesbibl.no",
+ "folkebibl.no",
+ "museum.no",
+ "idrett.no",
+ "priv.no",
+ "mil.no",
+ "stat.no",
+ "dep.no",
+ "kommune.no",
+ "herad.no",
+ "aa.no",
+ "ah.no",
+ "bu.no",
+ "fm.no",
+ "hl.no",
+ "hm.no",
+ "jan-mayen.no",
+ "mr.no",
+ "nl.no",
+ "nt.no",
+ "of.no",
+ "ol.no",
+ "oslo.no",
+ "rl.no",
+ "sf.no",
+ "st.no",
+ "svalbard.no",
+ "tm.no",
+ "tr.no",
+ "va.no",
+ "vf.no",
+ "gs.aa.no",
+ "gs.ah.no",
+ "gs.bu.no",
+ "gs.fm.no",
+ "gs.hl.no",
+ "gs.hm.no",
+ "gs.jan-mayen.no",
+ "gs.mr.no",
+ "gs.nl.no",
+ "gs.nt.no",
+ "gs.of.no",
+ "gs.ol.no",
+ "gs.oslo.no",
+ "gs.rl.no",
+ "gs.sf.no",
+ "gs.st.no",
+ "gs.svalbard.no",
+ "gs.tm.no",
+ "gs.tr.no",
+ "gs.va.no",
+ "gs.vf.no",
+ "akrehamn.no",
+ "xn--krehamn-dxa.no",
+ "algard.no",
+ "xn--lgrd-poac.no",
+ "arna.no",
+ "brumunddal.no",
+ "bryne.no",
+ "bronnoysund.no",
+ "xn--brnnysund-m8ac.no",
+ "drobak.no",
+ "xn--drbak-wua.no",
+ "egersund.no",
+ "fetsund.no",
+ "floro.no",
+ "xn--flor-jra.no",
+ "fredrikstad.no",
+ "hokksund.no",
+ "honefoss.no",
+ "xn--hnefoss-q1a.no",
+ "jessheim.no",
+ "jorpeland.no",
+ "xn--jrpeland-54a.no",
+ "kirkenes.no",
+ "kopervik.no",
+ "krokstadelva.no",
+ "langevag.no",
+ "xn--langevg-jxa.no",
+ "leirvik.no",
+ "mjondalen.no",
+ "xn--mjndalen-64a.no",
+ "mo-i-rana.no",
+ "mosjoen.no",
+ "xn--mosjen-eya.no",
+ "nesoddtangen.no",
+ "orkanger.no",
+ "osoyro.no",
+ "xn--osyro-wua.no",
+ "raholt.no",
+ "xn--rholt-mra.no",
+ "sandnessjoen.no",
+ "xn--sandnessjen-ogb.no",
+ "skedsmokorset.no",
+ "slattum.no",
+ "spjelkavik.no",
+ "stathelle.no",
+ "stavern.no",
+ "stjordalshalsen.no",
+ "xn--stjrdalshalsen-sqb.no",
+ "tananger.no",
+ "tranby.no",
+ "vossevangen.no",
+ "afjord.no",
+ "xn--fjord-lra.no",
+ "agdenes.no",
+ "al.no",
+ "xn--l-1fa.no",
+ "alesund.no",
+ "xn--lesund-hua.no",
+ "alstahaug.no",
+ "alta.no",
+ "xn--lt-liac.no",
+ "alaheadju.no",
+ "xn--laheadju-7ya.no",
+ "alvdal.no",
+ "amli.no",
+ "xn--mli-tla.no",
+ "amot.no",
+ "xn--mot-tla.no",
+ "andebu.no",
+ "andoy.no",
+ "xn--andy-ira.no",
+ "andasuolo.no",
+ "ardal.no",
+ "xn--rdal-poa.no",
+ "aremark.no",
+ "arendal.no",
+ "xn--s-1fa.no",
+ "aseral.no",
+ "xn--seral-lra.no",
+ "asker.no",
+ "askim.no",
+ "askvoll.no",
+ "askoy.no",
+ "xn--asky-ira.no",
+ "asnes.no",
+ "xn--snes-poa.no",
+ "audnedaln.no",
+ "aukra.no",
+ "aure.no",
+ "aurland.no",
+ "aurskog-holand.no",
+ "xn--aurskog-hland-jnb.no",
+ "austevoll.no",
+ "austrheim.no",
+ "averoy.no",
+ "xn--avery-yua.no",
+ "balestrand.no",
+ "ballangen.no",
+ "balat.no",
+ "xn--blt-elab.no",
+ "balsfjord.no",
+ "bahccavuotna.no",
+ "xn--bhccavuotna-k7a.no",
+ "bamble.no",
+ "bardu.no",
+ "beardu.no",
+ "beiarn.no",
+ "bajddar.no",
+ "xn--bjddar-pta.no",
+ "baidar.no",
+ "xn--bidr-5nac.no",
+ "berg.no",
+ "bergen.no",
+ "berlevag.no",
+ "xn--berlevg-jxa.no",
+ "bearalvahki.no",
+ "xn--bearalvhki-y4a.no",
+ "bindal.no",
+ "birkenes.no",
+ "bjarkoy.no",
+ "xn--bjarky-fya.no",
+ "bjerkreim.no",
+ "bjugn.no",
+ "bodo.no",
+ "xn--bod-2na.no",
+ "badaddja.no",
+ "xn--bdddj-mrabd.no",
+ "budejju.no",
+ "bokn.no",
+ "bremanger.no",
+ "bronnoy.no",
+ "xn--brnny-wuac.no",
+ "bygland.no",
+ "bykle.no",
+ "barum.no",
+ "xn--brum-voa.no",
+ "bo.telemark.no",
+ "xn--b-5ga.telemark.no",
+ "bo.nordland.no",
+ "xn--b-5ga.nordland.no",
+ "bievat.no",
+ "xn--bievt-0qa.no",
+ "bomlo.no",
+ "xn--bmlo-gra.no",
+ "batsfjord.no",
+ "xn--btsfjord-9za.no",
+ "bahcavuotna.no",
+ "xn--bhcavuotna-s4a.no",
+ "dovre.no",
+ "drammen.no",
+ "drangedal.no",
+ "dyroy.no",
+ "xn--dyry-ira.no",
+ "donna.no",
+ "xn--dnna-gra.no",
+ "eid.no",
+ "eidfjord.no",
+ "eidsberg.no",
+ "eidskog.no",
+ "eidsvoll.no",
+ "eigersund.no",
+ "elverum.no",
+ "enebakk.no",
+ "engerdal.no",
+ "etne.no",
+ "etnedal.no",
+ "evenes.no",
+ "evenassi.no",
+ "xn--eveni-0qa01ga.no",
+ "evje-og-hornnes.no",
+ "farsund.no",
+ "fauske.no",
+ "fuossko.no",
+ "fuoisku.no",
+ "fedje.no",
+ "fet.no",
+ "finnoy.no",
+ "xn--finny-yua.no",
+ "fitjar.no",
+ "fjaler.no",
+ "fjell.no",
+ "flakstad.no",
+ "flatanger.no",
+ "flekkefjord.no",
+ "flesberg.no",
+ "flora.no",
+ "fla.no",
+ "xn--fl-zia.no",
+ "folldal.no",
+ "forsand.no",
+ "fosnes.no",
+ "frei.no",
+ "frogn.no",
+ "froland.no",
+ "frosta.no",
+ "frana.no",
+ "xn--frna-woa.no",
+ "froya.no",
+ "xn--frya-hra.no",
+ "fusa.no",
+ "fyresdal.no",
+ "forde.no",
+ "xn--frde-gra.no",
+ "gamvik.no",
+ "gangaviika.no",
+ "xn--ggaviika-8ya47h.no",
+ "gaular.no",
+ "gausdal.no",
+ "gildeskal.no",
+ "xn--gildeskl-g0a.no",
+ "giske.no",
+ "gjemnes.no",
+ "gjerdrum.no",
+ "gjerstad.no",
+ "gjesdal.no",
+ "gjovik.no",
+ "xn--gjvik-wua.no",
+ "gloppen.no",
+ "gol.no",
+ "gran.no",
+ "grane.no",
+ "granvin.no",
+ "gratangen.no",
+ "grimstad.no",
+ "grong.no",
+ "kraanghke.no",
+ "xn--kranghke-b0a.no",
+ "grue.no",
+ "gulen.no",
+ "hadsel.no",
+ "halden.no",
+ "halsa.no",
+ "hamar.no",
+ "hamaroy.no",
+ "habmer.no",
+ "xn--hbmer-xqa.no",
+ "hapmir.no",
+ "xn--hpmir-xqa.no",
+ "hammerfest.no",
+ "hammarfeasta.no",
+ "xn--hmmrfeasta-s4ac.no",
+ "haram.no",
+ "hareid.no",
+ "harstad.no",
+ "hasvik.no",
+ "aknoluokta.no",
+ "xn--koluokta-7ya57h.no",
+ "hattfjelldal.no",
+ "aarborte.no",
+ "haugesund.no",
+ "hemne.no",
+ "hemnes.no",
+ "hemsedal.no",
+ "heroy.more-og-romsdal.no",
+ "xn--hery-ira.xn--mre-og-romsdal-qqb.no",
+ "heroy.nordland.no",
+ "xn--hery-ira.nordland.no",
+ "hitra.no",
+ "hjartdal.no",
+ "hjelmeland.no",
+ "hobol.no",
+ "xn--hobl-ira.no",
+ "hof.no",
+ "hol.no",
+ "hole.no",
+ "holmestrand.no",
+ "holtalen.no",
+ "xn--holtlen-hxa.no",
+ "hornindal.no",
+ "horten.no",
+ "hurdal.no",
+ "hurum.no",
+ "hvaler.no",
+ "hyllestad.no",
+ "hagebostad.no",
+ "xn--hgebostad-g3a.no",
+ "hoyanger.no",
+ "xn--hyanger-q1a.no",
+ "hoylandet.no",
+ "xn--hylandet-54a.no",
+ "ha.no",
+ "xn--h-2fa.no",
+ "ibestad.no",
+ "inderoy.no",
+ "xn--indery-fya.no",
+ "iveland.no",
+ "jevnaker.no",
+ "jondal.no",
+ "jolster.no",
+ "xn--jlster-bya.no",
+ "karasjok.no",
+ "karasjohka.no",
+ "xn--krjohka-hwab49j.no",
+ "karlsoy.no",
+ "galsa.no",
+ "xn--gls-elac.no",
+ "karmoy.no",
+ "xn--karmy-yua.no",
+ "kautokeino.no",
+ "guovdageaidnu.no",
+ "klepp.no",
+ "klabu.no",
+ "xn--klbu-woa.no",
+ "kongsberg.no",
+ "kongsvinger.no",
+ "kragero.no",
+ "xn--krager-gya.no",
+ "kristiansand.no",
+ "kristiansund.no",
+ "krodsherad.no",
+ "xn--krdsherad-m8a.no",
+ "kvalsund.no",
+ "rahkkeravju.no",
+ "xn--rhkkervju-01af.no",
+ "kvam.no",
+ "kvinesdal.no",
+ "kvinnherad.no",
+ "kviteseid.no",
+ "kvitsoy.no",
+ "xn--kvitsy-fya.no",
+ "kvafjord.no",
+ "xn--kvfjord-nxa.no",
+ "giehtavuoatna.no",
+ "kvanangen.no",
+ "xn--kvnangen-k0a.no",
+ "navuotna.no",
+ "xn--nvuotna-hwa.no",
+ "kafjord.no",
+ "xn--kfjord-iua.no",
+ "gaivuotna.no",
+ "xn--givuotna-8ya.no",
+ "larvik.no",
+ "lavangen.no",
+ "lavagis.no",
+ "loabat.no",
+ "xn--loabt-0qa.no",
+ "lebesby.no",
+ "davvesiida.no",
+ "leikanger.no",
+ "leirfjord.no",
+ "leka.no",
+ "leksvik.no",
+ "lenvik.no",
+ "leangaviika.no",
+ "xn--leagaviika-52b.no",
+ "lesja.no",
+ "levanger.no",
+ "lier.no",
+ "lierne.no",
+ "lillehammer.no",
+ "lillesand.no",
+ "lindesnes.no",
+ "lindas.no",
+ "xn--linds-pra.no",
+ "lom.no",
+ "loppa.no",
+ "lahppi.no",
+ "xn--lhppi-xqa.no",
+ "lund.no",
+ "lunner.no",
+ "luroy.no",
+ "xn--lury-ira.no",
+ "luster.no",
+ "lyngdal.no",
+ "lyngen.no",
+ "ivgu.no",
+ "lardal.no",
+ "lerdal.no",
+ "xn--lrdal-sra.no",
+ "lodingen.no",
+ "xn--ldingen-q1a.no",
+ "lorenskog.no",
+ "xn--lrenskog-54a.no",
+ "loten.no",
+ "xn--lten-gra.no",
+ "malvik.no",
+ "masoy.no",
+ "xn--msy-ula0h.no",
+ "muosat.no",
+ "xn--muost-0qa.no",
+ "mandal.no",
+ "marker.no",
+ "marnardal.no",
+ "masfjorden.no",
+ "meland.no",
+ "meldal.no",
+ "melhus.no",
+ "meloy.no",
+ "xn--mely-ira.no",
+ "meraker.no",
+ "xn--merker-kua.no",
+ "moareke.no",
+ "xn--moreke-jua.no",
+ "midsund.no",
+ "midtre-gauldal.no",
+ "modalen.no",
+ "modum.no",
+ "molde.no",
+ "moskenes.no",
+ "moss.no",
+ "mosvik.no",
+ "malselv.no",
+ "xn--mlselv-iua.no",
+ "malatvuopmi.no",
+ "xn--mlatvuopmi-s4a.no",
+ "namdalseid.no",
+ "aejrie.no",
+ "namsos.no",
+ "namsskogan.no",
+ "naamesjevuemie.no",
+ "xn--nmesjevuemie-tcba.no",
+ "laakesvuemie.no",
+ "nannestad.no",
+ "narvik.no",
+ "narviika.no",
+ "naustdal.no",
+ "nedre-eiker.no",
+ "nes.akershus.no",
+ "nes.buskerud.no",
+ "nesna.no",
+ "nesodden.no",
+ "nesseby.no",
+ "unjarga.no",
+ "xn--unjrga-rta.no",
+ "nesset.no",
+ "nissedal.no",
+ "nittedal.no",
+ "nord-aurdal.no",
+ "nord-fron.no",
+ "nord-odal.no",
+ "norddal.no",
+ "nordkapp.no",
+ "davvenjarga.no",
+ "xn--davvenjrga-y4a.no",
+ "nordre-land.no",
+ "nordreisa.no",
+ "raisa.no",
+ "xn--risa-5na.no",
+ "nore-og-uvdal.no",
+ "notodden.no",
+ "naroy.no",
+ "xn--nry-yla5g.no",
+ "notteroy.no",
+ "xn--nttery-byae.no",
+ "odda.no",
+ "oksnes.no",
+ "xn--ksnes-uua.no",
+ "oppdal.no",
+ "oppegard.no",
+ "xn--oppegrd-ixa.no",
+ "orkdal.no",
+ "orland.no",
+ "xn--rland-uua.no",
+ "orskog.no",
+ "xn--rskog-uua.no",
+ "orsta.no",
+ "xn--rsta-fra.no",
+ "os.hedmark.no",
+ "os.hordaland.no",
+ "osen.no",
+ "osteroy.no",
+ "xn--ostery-fya.no",
+ "ostre-toten.no",
+ "xn--stre-toten-zcb.no",
+ "overhalla.no",
+ "ovre-eiker.no",
+ "xn--vre-eiker-k8a.no",
+ "oyer.no",
+ "xn--yer-zna.no",
+ "oygarden.no",
+ "xn--ygarden-p1a.no",
+ "oystre-slidre.no",
+ "xn--ystre-slidre-ujb.no",
+ "porsanger.no",
+ "porsangu.no",
+ "xn--porsgu-sta26f.no",
+ "porsgrunn.no",
+ "radoy.no",
+ "xn--rady-ira.no",
+ "rakkestad.no",
+ "rana.no",
+ "ruovat.no",
+ "randaberg.no",
+ "rauma.no",
+ "rendalen.no",
+ "rennebu.no",
+ "rennesoy.no",
+ "xn--rennesy-v1a.no",
+ "rindal.no",
+ "ringebu.no",
+ "ringerike.no",
+ "ringsaker.no",
+ "rissa.no",
+ "risor.no",
+ "xn--risr-ira.no",
+ "roan.no",
+ "rollag.no",
+ "rygge.no",
+ "ralingen.no",
+ "xn--rlingen-mxa.no",
+ "rodoy.no",
+ "xn--rdy-0nab.no",
+ "romskog.no",
+ "xn--rmskog-bya.no",
+ "roros.no",
+ "xn--rros-gra.no",
+ "rost.no",
+ "xn--rst-0na.no",
+ "royken.no",
+ "xn--ryken-vua.no",
+ "royrvik.no",
+ "xn--ryrvik-bya.no",
+ "rade.no",
+ "xn--rde-ula.no",
+ "salangen.no",
+ "siellak.no",
+ "saltdal.no",
+ "salat.no",
+ "xn--slt-elab.no",
+ "xn--slat-5na.no",
+ "samnanger.no",
+ "sande.more-og-romsdal.no",
+ "sande.xn--mre-og-romsdal-qqb.no",
+ "sande.vestfold.no",
+ "sandefjord.no",
+ "sandnes.no",
+ "sandoy.no",
+ "xn--sandy-yua.no",
+ "sarpsborg.no",
+ "sauda.no",
+ "sauherad.no",
+ "sel.no",
+ "selbu.no",
+ "selje.no",
+ "seljord.no",
+ "sigdal.no",
+ "siljan.no",
+ "sirdal.no",
+ "skaun.no",
+ "skedsmo.no",
+ "ski.no",
+ "skien.no",
+ "skiptvet.no",
+ "skjervoy.no",
+ "xn--skjervy-v1a.no",
+ "skierva.no",
+ "xn--skierv-uta.no",
+ "skjak.no",
+ "xn--skjk-soa.no",
+ "skodje.no",
+ "skanland.no",
+ "xn--sknland-fxa.no",
+ "skanit.no",
+ "xn--sknit-yqa.no",
+ "smola.no",
+ "xn--smla-hra.no",
+ "snillfjord.no",
+ "snasa.no",
+ "xn--snsa-roa.no",
+ "snoasa.no",
+ "snaase.no",
+ "xn--snase-nra.no",
+ "sogndal.no",
+ "sokndal.no",
+ "sola.no",
+ "solund.no",
+ "songdalen.no",
+ "sortland.no",
+ "spydeberg.no",
+ "stange.no",
+ "stavanger.no",
+ "steigen.no",
+ "steinkjer.no",
+ "stjordal.no",
+ "xn--stjrdal-s1a.no",
+ "stokke.no",
+ "stor-elvdal.no",
+ "stord.no",
+ "stordal.no",
+ "storfjord.no",
+ "omasvuotna.no",
+ "strand.no",
+ "stranda.no",
+ "stryn.no",
+ "sula.no",
+ "suldal.no",
+ "sund.no",
+ "sunndal.no",
+ "surnadal.no",
+ "sveio.no",
+ "svelvik.no",
+ "sykkylven.no",
+ "sogne.no",
+ "xn--sgne-gra.no",
+ "somna.no",
+ "xn--smna-gra.no",
+ "sondre-land.no",
+ "xn--sndre-land-0cb.no",
+ "sor-aurdal.no",
+ "xn--sr-aurdal-l8a.no",
+ "sor-fron.no",
+ "xn--sr-fron-q1a.no",
+ "sor-odal.no",
+ "xn--sr-odal-q1a.no",
+ "sor-varanger.no",
+ "xn--sr-varanger-ggb.no",
+ "matta-varjjat.no",
+ "xn--mtta-vrjjat-k7af.no",
+ "sorfold.no",
+ "xn--srfold-bya.no",
+ "sorreisa.no",
+ "xn--srreisa-q1a.no",
+ "sorum.no",
+ "xn--srum-gra.no",
+ "tana.no",
+ "deatnu.no",
+ "time.no",
+ "tingvoll.no",
+ "tinn.no",
+ "tjeldsund.no",
+ "dielddanuorri.no",
+ "tjome.no",
+ "xn--tjme-hra.no",
+ "tokke.no",
+ "tolga.no",
+ "torsken.no",
+ "tranoy.no",
+ "xn--trany-yua.no",
+ "tromso.no",
+ "xn--troms-zua.no",
+ "tromsa.no",
+ "romsa.no",
+ "trondheim.no",
+ "troandin.no",
+ "trysil.no",
+ "trana.no",
+ "xn--trna-woa.no",
+ "trogstad.no",
+ "xn--trgstad-r1a.no",
+ "tvedestrand.no",
+ "tydal.no",
+ "tynset.no",
+ "tysfjord.no",
+ "divtasvuodna.no",
+ "divttasvuotna.no",
+ "tysnes.no",
+ "tysvar.no",
+ "xn--tysvr-vra.no",
+ "tonsberg.no",
+ "xn--tnsberg-q1a.no",
+ "ullensaker.no",
+ "ullensvang.no",
+ "ulvik.no",
+ "utsira.no",
+ "vadso.no",
+ "xn--vads-jra.no",
+ "cahcesuolo.no",
+ "xn--hcesuolo-7ya35b.no",
+ "vaksdal.no",
+ "valle.no",
+ "vang.no",
+ "vanylven.no",
+ "vardo.no",
+ "xn--vard-jra.no",
+ "varggat.no",
+ "xn--vrggt-xqad.no",
+ "vefsn.no",
+ "vaapste.no",
+ "vega.no",
+ "vegarshei.no",
+ "xn--vegrshei-c0a.no",
+ "vennesla.no",
+ "verdal.no",
+ "verran.no",
+ "vestby.no",
+ "vestnes.no",
+ "vestre-slidre.no",
+ "vestre-toten.no",
+ "vestvagoy.no",
+ "xn--vestvgy-ixa6o.no",
+ "vevelstad.no",
+ "vik.no",
+ "vikna.no",
+ "vindafjord.no",
+ "volda.no",
+ "voss.no",
+ "varoy.no",
+ "xn--vry-yla5g.no",
+ "vagan.no",
+ "xn--vgan-qoa.no",
+ "voagat.no",
+ "vagsoy.no",
+ "xn--vgsy-qoa0j.no",
+ "vaga.no",
+ "xn--vg-yiab.no",
+ "valer.ostfold.no",
+ "xn--vler-qoa.xn--stfold-9xa.no",
+ "valer.hedmark.no",
+ "xn--vler-qoa.hedmark.no",
+ "*.np",
+ "nr",
+ "biz.nr",
+ "info.nr",
+ "gov.nr",
+ "edu.nr",
+ "org.nr",
+ "net.nr",
+ "com.nr",
+ "nu",
+ "nz",
+ "ac.nz",
+ "co.nz",
+ "cri.nz",
+ "geek.nz",
+ "gen.nz",
+ "govt.nz",
+ "health.nz",
+ "iwi.nz",
+ "kiwi.nz",
+ "maori.nz",
+ "mil.nz",
+ "xn--mori-qsa.nz",
+ "net.nz",
+ "org.nz",
+ "parliament.nz",
+ "school.nz",
+ "om",
+ "co.om",
+ "com.om",
+ "edu.om",
+ "gov.om",
+ "med.om",
+ "museum.om",
+ "net.om",
+ "org.om",
+ "pro.om",
+ "onion",
+ "org",
+ "pa",
+ "ac.pa",
+ "gob.pa",
+ "com.pa",
+ "org.pa",
+ "sld.pa",
+ "edu.pa",
+ "net.pa",
+ "ing.pa",
+ "abo.pa",
+ "med.pa",
+ "nom.pa",
+ "pe",
+ "edu.pe",
+ "gob.pe",
+ "nom.pe",
+ "mil.pe",
+ "org.pe",
+ "com.pe",
+ "net.pe",
+ "pf",
+ "com.pf",
+ "org.pf",
+ "edu.pf",
+ "*.pg",
+ "ph",
+ "com.ph",
+ "net.ph",
+ "org.ph",
+ "gov.ph",
+ "edu.ph",
+ "ngo.ph",
+ "mil.ph",
+ "i.ph",
+ "pk",
+ "com.pk",
+ "net.pk",
+ "edu.pk",
+ "org.pk",
+ "fam.pk",
+ "biz.pk",
+ "web.pk",
+ "gov.pk",
+ "gob.pk",
+ "gok.pk",
+ "gon.pk",
+ "gop.pk",
+ "gos.pk",
+ "info.pk",
+ "pl",
+ "com.pl",
+ "net.pl",
+ "org.pl",
+ "aid.pl",
+ "agro.pl",
+ "atm.pl",
+ "auto.pl",
+ "biz.pl",
+ "edu.pl",
+ "gmina.pl",
+ "gsm.pl",
+ "info.pl",
+ "mail.pl",
+ "miasta.pl",
+ "media.pl",
+ "mil.pl",
+ "nieruchomosci.pl",
+ "nom.pl",
+ "pc.pl",
+ "powiat.pl",
+ "priv.pl",
+ "realestate.pl",
+ "rel.pl",
+ "sex.pl",
+ "shop.pl",
+ "sklep.pl",
+ "sos.pl",
+ "szkola.pl",
+ "targi.pl",
+ "tm.pl",
+ "tourism.pl",
+ "travel.pl",
+ "turystyka.pl",
+ "gov.pl",
+ "ap.gov.pl",
+ "ic.gov.pl",
+ "is.gov.pl",
+ "us.gov.pl",
+ "kmpsp.gov.pl",
+ "kppsp.gov.pl",
+ "kwpsp.gov.pl",
+ "psp.gov.pl",
+ "wskr.gov.pl",
+ "kwp.gov.pl",
+ "mw.gov.pl",
+ "ug.gov.pl",
+ "um.gov.pl",
+ "umig.gov.pl",
+ "ugim.gov.pl",
+ "upow.gov.pl",
+ "uw.gov.pl",
+ "starostwo.gov.pl",
+ "pa.gov.pl",
+ "po.gov.pl",
+ "psse.gov.pl",
+ "pup.gov.pl",
+ "rzgw.gov.pl",
+ "sa.gov.pl",
+ "so.gov.pl",
+ "sr.gov.pl",
+ "wsa.gov.pl",
+ "sko.gov.pl",
+ "uzs.gov.pl",
+ "wiih.gov.pl",
+ "winb.gov.pl",
+ "pinb.gov.pl",
+ "wios.gov.pl",
+ "witd.gov.pl",
+ "wzmiuw.gov.pl",
+ "piw.gov.pl",
+ "wiw.gov.pl",
+ "griw.gov.pl",
+ "wif.gov.pl",
+ "oum.gov.pl",
+ "sdn.gov.pl",
+ "zp.gov.pl",
+ "uppo.gov.pl",
+ "mup.gov.pl",
+ "wuoz.gov.pl",
+ "konsulat.gov.pl",
+ "oirm.gov.pl",
+ "augustow.pl",
+ "babia-gora.pl",
+ "bedzin.pl",
+ "beskidy.pl",
+ "bialowieza.pl",
+ "bialystok.pl",
+ "bielawa.pl",
+ "bieszczady.pl",
+ "boleslawiec.pl",
+ "bydgoszcz.pl",
+ "bytom.pl",
+ "cieszyn.pl",
+ "czeladz.pl",
+ "czest.pl",
+ "dlugoleka.pl",
+ "elblag.pl",
+ "elk.pl",
+ "glogow.pl",
+ "gniezno.pl",
+ "gorlice.pl",
+ "grajewo.pl",
+ "ilawa.pl",
+ "jaworzno.pl",
+ "jelenia-gora.pl",
+ "jgora.pl",
+ "kalisz.pl",
+ "kazimierz-dolny.pl",
+ "karpacz.pl",
+ "kartuzy.pl",
+ "kaszuby.pl",
+ "katowice.pl",
+ "kepno.pl",
+ "ketrzyn.pl",
+ "klodzko.pl",
+ "kobierzyce.pl",
+ "kolobrzeg.pl",
+ "konin.pl",
+ "konskowola.pl",
+ "kutno.pl",
+ "lapy.pl",
+ "lebork.pl",
+ "legnica.pl",
+ "lezajsk.pl",
+ "limanowa.pl",
+ "lomza.pl",
+ "lowicz.pl",
+ "lubin.pl",
+ "lukow.pl",
+ "malbork.pl",
+ "malopolska.pl",
+ "mazowsze.pl",
+ "mazury.pl",
+ "mielec.pl",
+ "mielno.pl",
+ "mragowo.pl",
+ "naklo.pl",
+ "nowaruda.pl",
+ "nysa.pl",
+ "olawa.pl",
+ "olecko.pl",
+ "olkusz.pl",
+ "olsztyn.pl",
+ "opoczno.pl",
+ "opole.pl",
+ "ostroda.pl",
+ "ostroleka.pl",
+ "ostrowiec.pl",
+ "ostrowwlkp.pl",
+ "pila.pl",
+ "pisz.pl",
+ "podhale.pl",
+ "podlasie.pl",
+ "polkowice.pl",
+ "pomorze.pl",
+ "pomorskie.pl",
+ "prochowice.pl",
+ "pruszkow.pl",
+ "przeworsk.pl",
+ "pulawy.pl",
+ "radom.pl",
+ "rawa-maz.pl",
+ "rybnik.pl",
+ "rzeszow.pl",
+ "sanok.pl",
+ "sejny.pl",
+ "slask.pl",
+ "slupsk.pl",
+ "sosnowiec.pl",
+ "stalowa-wola.pl",
+ "skoczow.pl",
+ "starachowice.pl",
+ "stargard.pl",
+ "suwalki.pl",
+ "swidnica.pl",
+ "swiebodzin.pl",
+ "swinoujscie.pl",
+ "szczecin.pl",
+ "szczytno.pl",
+ "tarnobrzeg.pl",
+ "tgory.pl",
+ "turek.pl",
+ "tychy.pl",
+ "ustka.pl",
+ "walbrzych.pl",
+ "warmia.pl",
+ "warszawa.pl",
+ "waw.pl",
+ "wegrow.pl",
+ "wielun.pl",
+ "wlocl.pl",
+ "wloclawek.pl",
+ "wodzislaw.pl",
+ "wolomin.pl",
+ "wroclaw.pl",
+ "zachpomor.pl",
+ "zagan.pl",
+ "zarow.pl",
+ "zgora.pl",
+ "zgorzelec.pl",
+ "pm",
+ "pn",
+ "gov.pn",
+ "co.pn",
+ "org.pn",
+ "edu.pn",
+ "net.pn",
+ "post",
+ "pr",
+ "com.pr",
+ "net.pr",
+ "org.pr",
+ "gov.pr",
+ "edu.pr",
+ "isla.pr",
+ "pro.pr",
+ "biz.pr",
+ "info.pr",
+ "name.pr",
+ "est.pr",
+ "prof.pr",
+ "ac.pr",
+ "pro",
+ "aaa.pro",
+ "aca.pro",
+ "acct.pro",
+ "avocat.pro",
+ "bar.pro",
+ "cpa.pro",
+ "eng.pro",
+ "jur.pro",
+ "law.pro",
+ "med.pro",
+ "recht.pro",
+ "ps",
+ "edu.ps",
+ "gov.ps",
+ "sec.ps",
+ "plo.ps",
+ "com.ps",
+ "org.ps",
+ "net.ps",
+ "pt",
+ "net.pt",
+ "gov.pt",
+ "org.pt",
+ "edu.pt",
+ "int.pt",
+ "publ.pt",
+ "com.pt",
+ "nome.pt",
+ "pw",
+ "co.pw",
+ "ne.pw",
+ "or.pw",
+ "ed.pw",
+ "go.pw",
+ "belau.pw",
+ "py",
+ "com.py",
+ "coop.py",
+ "edu.py",
+ "gov.py",
+ "mil.py",
+ "net.py",
+ "org.py",
+ "qa",
+ "com.qa",
+ "edu.qa",
+ "gov.qa",
+ "mil.qa",
+ "name.qa",
+ "net.qa",
+ "org.qa",
+ "sch.qa",
+ "re",
+ "asso.re",
+ "com.re",
+ "nom.re",
+ "ro",
+ "arts.ro",
+ "com.ro",
+ "firm.ro",
+ "info.ro",
+ "nom.ro",
+ "nt.ro",
+ "org.ro",
+ "rec.ro",
+ "store.ro",
+ "tm.ro",
+ "www.ro",
+ "rs",
+ "ac.rs",
+ "co.rs",
+ "edu.rs",
+ "gov.rs",
+ "in.rs",
+ "org.rs",
+ "ru",
+ "ac.ru",
+ "edu.ru",
+ "gov.ru",
+ "int.ru",
+ "mil.ru",
+ "test.ru",
+ "rw",
+ "gov.rw",
+ "net.rw",
+ "edu.rw",
+ "ac.rw",
+ "com.rw",
+ "co.rw",
+ "int.rw",
+ "mil.rw",
+ "gouv.rw",
+ "sa",
+ "com.sa",
+ "net.sa",
+ "org.sa",
+ "gov.sa",
+ "med.sa",
+ "pub.sa",
+ "edu.sa",
+ "sch.sa",
+ "sb",
+ "com.sb",
+ "edu.sb",
+ "gov.sb",
+ "net.sb",
+ "org.sb",
+ "sc",
+ "com.sc",
+ "gov.sc",
+ "net.sc",
+ "org.sc",
+ "edu.sc",
+ "sd",
+ "com.sd",
+ "net.sd",
+ "org.sd",
+ "edu.sd",
+ "med.sd",
+ "tv.sd",
+ "gov.sd",
+ "info.sd",
+ "se",
+ "a.se",
+ "ac.se",
+ "b.se",
+ "bd.se",
+ "brand.se",
+ "c.se",
+ "d.se",
+ "e.se",
+ "f.se",
+ "fh.se",
+ "fhsk.se",
+ "fhv.se",
+ "g.se",
+ "h.se",
+ "i.se",
+ "k.se",
+ "komforb.se",
+ "kommunalforbund.se",
+ "komvux.se",
+ "l.se",
+ "lanbib.se",
+ "m.se",
+ "n.se",
+ "naturbruksgymn.se",
+ "o.se",
+ "org.se",
+ "p.se",
+ "parti.se",
+ "pp.se",
+ "press.se",
+ "r.se",
+ "s.se",
+ "t.se",
+ "tm.se",
+ "u.se",
+ "w.se",
+ "x.se",
+ "y.se",
+ "z.se",
+ "sg",
+ "com.sg",
+ "net.sg",
+ "org.sg",
+ "gov.sg",
+ "edu.sg",
+ "per.sg",
+ "sh",
+ "com.sh",
+ "net.sh",
+ "gov.sh",
+ "org.sh",
+ "mil.sh",
+ "si",
+ "sj",
+ "sk",
+ "sl",
+ "com.sl",
+ "net.sl",
+ "edu.sl",
+ "gov.sl",
+ "org.sl",
+ "sm",
+ "sn",
+ "art.sn",
+ "com.sn",
+ "edu.sn",
+ "gouv.sn",
+ "org.sn",
+ "perso.sn",
+ "univ.sn",
+ "so",
+ "com.so",
+ "net.so",
+ "org.so",
+ "sr",
+ "st",
+ "co.st",
+ "com.st",
+ "consulado.st",
+ "edu.st",
+ "embaixada.st",
+ "gov.st",
+ "mil.st",
+ "net.st",
+ "org.st",
+ "principe.st",
+ "saotome.st",
+ "store.st",
+ "su",
+ "sv",
+ "com.sv",
+ "edu.sv",
+ "gob.sv",
+ "org.sv",
+ "red.sv",
+ "sx",
+ "gov.sx",
+ "sy",
+ "edu.sy",
+ "gov.sy",
+ "net.sy",
+ "mil.sy",
+ "com.sy",
+ "org.sy",
+ "sz",
+ "co.sz",
+ "ac.sz",
+ "org.sz",
+ "tc",
+ "td",
+ "tel",
+ "tf",
+ "tg",
+ "th",
+ "ac.th",
+ "co.th",
+ "go.th",
+ "in.th",
+ "mi.th",
+ "net.th",
+ "or.th",
+ "tj",
+ "ac.tj",
+ "biz.tj",
+ "co.tj",
+ "com.tj",
+ "edu.tj",
+ "go.tj",
+ "gov.tj",
+ "int.tj",
+ "mil.tj",
+ "name.tj",
+ "net.tj",
+ "nic.tj",
+ "org.tj",
+ "test.tj",
+ "web.tj",
+ "tk",
+ "tl",
+ "gov.tl",
+ "tm",
+ "com.tm",
+ "co.tm",
+ "org.tm",
+ "net.tm",
+ "nom.tm",
+ "gov.tm",
+ "mil.tm",
+ "edu.tm",
+ "tn",
+ "com.tn",
+ "ens.tn",
+ "fin.tn",
+ "gov.tn",
+ "ind.tn",
+ "intl.tn",
+ "nat.tn",
+ "net.tn",
+ "org.tn",
+ "info.tn",
+ "perso.tn",
+ "tourism.tn",
+ "edunet.tn",
+ "rnrt.tn",
+ "rns.tn",
+ "rnu.tn",
+ "mincom.tn",
+ "agrinet.tn",
+ "defense.tn",
+ "turen.tn",
+ "to",
+ "com.to",
+ "gov.to",
+ "net.to",
+ "org.to",
+ "edu.to",
+ "mil.to",
+ "tr",
+ "com.tr",
+ "info.tr",
+ "biz.tr",
+ "net.tr",
+ "org.tr",
+ "web.tr",
+ "gen.tr",
+ "tv.tr",
+ "av.tr",
+ "dr.tr",
+ "bbs.tr",
+ "name.tr",
+ "tel.tr",
+ "gov.tr",
+ "bel.tr",
+ "pol.tr",
+ "mil.tr",
+ "k12.tr",
+ "edu.tr",
+ "kep.tr",
+ "nc.tr",
+ "gov.nc.tr",
+ "travel",
+ "tt",
+ "co.tt",
+ "com.tt",
+ "org.tt",
+ "net.tt",
+ "biz.tt",
+ "info.tt",
+ "pro.tt",
+ "int.tt",
+ "coop.tt",
+ "jobs.tt",
+ "mobi.tt",
+ "travel.tt",
+ "museum.tt",
+ "aero.tt",
+ "name.tt",
+ "gov.tt",
+ "edu.tt",
+ "tv",
+ "tw",
+ "edu.tw",
+ "gov.tw",
+ "mil.tw",
+ "com.tw",
+ "net.tw",
+ "org.tw",
+ "idv.tw",
+ "game.tw",
+ "ebiz.tw",
+ "club.tw",
+ "xn--zf0ao64a.tw",
+ "xn--uc0atv.tw",
+ "xn--czrw28b.tw",
+ "tz",
+ "ac.tz",
+ "co.tz",
+ "go.tz",
+ "hotel.tz",
+ "info.tz",
+ "me.tz",
+ "mil.tz",
+ "mobi.tz",
+ "ne.tz",
+ "or.tz",
+ "sc.tz",
+ "tv.tz",
+ "ua",
+ "com.ua",
+ "edu.ua",
+ "gov.ua",
+ "in.ua",
+ "net.ua",
+ "org.ua",
+ "cherkassy.ua",
+ "cherkasy.ua",
+ "chernigov.ua",
+ "chernihiv.ua",
+ "chernivtsi.ua",
+ "chernovtsy.ua",
+ "ck.ua",
+ "cn.ua",
+ "cr.ua",
+ "crimea.ua",
+ "cv.ua",
+ "dn.ua",
+ "dnepropetrovsk.ua",
+ "dnipropetrovsk.ua",
+ "dominic.ua",
+ "donetsk.ua",
+ "dp.ua",
+ "if.ua",
+ "ivano-frankivsk.ua",
+ "kh.ua",
+ "kharkiv.ua",
+ "kharkov.ua",
+ "kherson.ua",
+ "khmelnitskiy.ua",
+ "khmelnytskyi.ua",
+ "kiev.ua",
+ "kirovograd.ua",
+ "km.ua",
+ "kr.ua",
+ "krym.ua",
+ "ks.ua",
+ "kv.ua",
+ "kyiv.ua",
+ "lg.ua",
+ "lt.ua",
+ "lugansk.ua",
+ "lutsk.ua",
+ "lv.ua",
+ "lviv.ua",
+ "mk.ua",
+ "mykolaiv.ua",
+ "nikolaev.ua",
+ "od.ua",
+ "odesa.ua",
+ "odessa.ua",
+ "pl.ua",
+ "poltava.ua",
+ "rivne.ua",
+ "rovno.ua",
+ "rv.ua",
+ "sb.ua",
+ "sebastopol.ua",
+ "sevastopol.ua",
+ "sm.ua",
+ "sumy.ua",
+ "te.ua",
+ "ternopil.ua",
+ "uz.ua",
+ "uzhgorod.ua",
+ "vinnica.ua",
+ "vinnytsia.ua",
+ "vn.ua",
+ "volyn.ua",
+ "yalta.ua",
+ "zaporizhzhe.ua",
+ "zaporizhzhia.ua",
+ "zhitomir.ua",
+ "zhytomyr.ua",
+ "zp.ua",
+ "zt.ua",
+ "ug",
+ "co.ug",
+ "or.ug",
+ "ac.ug",
+ "sc.ug",
+ "go.ug",
+ "ne.ug",
+ "com.ug",
+ "org.ug",
+ "uk",
+ "ac.uk",
+ "co.uk",
+ "gov.uk",
+ "ltd.uk",
+ "me.uk",
+ "net.uk",
+ "nhs.uk",
+ "org.uk",
+ "plc.uk",
+ "police.uk",
+ "*.sch.uk",
+ "us",
+ "dni.us",
+ "fed.us",
+ "isa.us",
+ "kids.us",
+ "nsn.us",
+ "ak.us",
+ "al.us",
+ "ar.us",
+ "as.us",
+ "az.us",
+ "ca.us",
+ "co.us",
+ "ct.us",
+ "dc.us",
+ "de.us",
+ "fl.us",
+ "ga.us",
+ "gu.us",
+ "hi.us",
+ "ia.us",
+ "id.us",
+ "il.us",
+ "in.us",
+ "ks.us",
+ "ky.us",
+ "la.us",
+ "ma.us",
+ "md.us",
+ "me.us",
+ "mi.us",
+ "mn.us",
+ "mo.us",
+ "ms.us",
+ "mt.us",
+ "nc.us",
+ "nd.us",
+ "ne.us",
+ "nh.us",
+ "nj.us",
+ "nm.us",
+ "nv.us",
+ "ny.us",
+ "oh.us",
+ "ok.us",
+ "or.us",
+ "pa.us",
+ "pr.us",
+ "ri.us",
+ "sc.us",
+ "sd.us",
+ "tn.us",
+ "tx.us",
+ "ut.us",
+ "vi.us",
+ "vt.us",
+ "va.us",
+ "wa.us",
+ "wi.us",
+ "wv.us",
+ "wy.us",
+ "k12.ak.us",
+ "k12.al.us",
+ "k12.ar.us",
+ "k12.as.us",
+ "k12.az.us",
+ "k12.ca.us",
+ "k12.co.us",
+ "k12.ct.us",
+ "k12.dc.us",
+ "k12.de.us",
+ "k12.fl.us",
+ "k12.ga.us",
+ "k12.gu.us",
+ "k12.ia.us",
+ "k12.id.us",
+ "k12.il.us",
+ "k12.in.us",
+ "k12.ks.us",
+ "k12.ky.us",
+ "k12.la.us",
+ "k12.ma.us",
+ "k12.md.us",
+ "k12.me.us",
+ "k12.mi.us",
+ "k12.mn.us",
+ "k12.mo.us",
+ "k12.ms.us",
+ "k12.mt.us",
+ "k12.nc.us",
+ "k12.ne.us",
+ "k12.nh.us",
+ "k12.nj.us",
+ "k12.nm.us",
+ "k12.nv.us",
+ "k12.ny.us",
+ "k12.oh.us",
+ "k12.ok.us",
+ "k12.or.us",
+ "k12.pa.us",
+ "k12.pr.us",
+ "k12.ri.us",
+ "k12.sc.us",
+ "k12.tn.us",
+ "k12.tx.us",
+ "k12.ut.us",
+ "k12.vi.us",
+ "k12.vt.us",
+ "k12.va.us",
+ "k12.wa.us",
+ "k12.wi.us",
+ "k12.wy.us",
+ "cc.ak.us",
+ "cc.al.us",
+ "cc.ar.us",
+ "cc.as.us",
+ "cc.az.us",
+ "cc.ca.us",
+ "cc.co.us",
+ "cc.ct.us",
+ "cc.dc.us",
+ "cc.de.us",
+ "cc.fl.us",
+ "cc.ga.us",
+ "cc.gu.us",
+ "cc.hi.us",
+ "cc.ia.us",
+ "cc.id.us",
+ "cc.il.us",
+ "cc.in.us",
+ "cc.ks.us",
+ "cc.ky.us",
+ "cc.la.us",
+ "cc.ma.us",
+ "cc.md.us",
+ "cc.me.us",
+ "cc.mi.us",
+ "cc.mn.us",
+ "cc.mo.us",
+ "cc.ms.us",
+ "cc.mt.us",
+ "cc.nc.us",
+ "cc.nd.us",
+ "cc.ne.us",
+ "cc.nh.us",
+ "cc.nj.us",
+ "cc.nm.us",
+ "cc.nv.us",
+ "cc.ny.us",
+ "cc.oh.us",
+ "cc.ok.us",
+ "cc.or.us",
+ "cc.pa.us",
+ "cc.pr.us",
+ "cc.ri.us",
+ "cc.sc.us",
+ "cc.sd.us",
+ "cc.tn.us",
+ "cc.tx.us",
+ "cc.ut.us",
+ "cc.vi.us",
+ "cc.vt.us",
+ "cc.va.us",
+ "cc.wa.us",
+ "cc.wi.us",
+ "cc.wv.us",
+ "cc.wy.us",
+ "lib.ak.us",
+ "lib.al.us",
+ "lib.ar.us",
+ "lib.as.us",
+ "lib.az.us",
+ "lib.ca.us",
+ "lib.co.us",
+ "lib.ct.us",
+ "lib.dc.us",
+ "lib.fl.us",
+ "lib.ga.us",
+ "lib.gu.us",
+ "lib.hi.us",
+ "lib.ia.us",
+ "lib.id.us",
+ "lib.il.us",
+ "lib.in.us",
+ "lib.ks.us",
+ "lib.ky.us",
+ "lib.la.us",
+ "lib.ma.us",
+ "lib.md.us",
+ "lib.me.us",
+ "lib.mi.us",
+ "lib.mn.us",
+ "lib.mo.us",
+ "lib.ms.us",
+ "lib.mt.us",
+ "lib.nc.us",
+ "lib.nd.us",
+ "lib.ne.us",
+ "lib.nh.us",
+ "lib.nj.us",
+ "lib.nm.us",
+ "lib.nv.us",
+ "lib.ny.us",
+ "lib.oh.us",
+ "lib.ok.us",
+ "lib.or.us",
+ "lib.pa.us",
+ "lib.pr.us",
+ "lib.ri.us",
+ "lib.sc.us",
+ "lib.sd.us",
+ "lib.tn.us",
+ "lib.tx.us",
+ "lib.ut.us",
+ "lib.vi.us",
+ "lib.vt.us",
+ "lib.va.us",
+ "lib.wa.us",
+ "lib.wi.us",
+ "lib.wy.us",
+ "pvt.k12.ma.us",
+ "chtr.k12.ma.us",
+ "paroch.k12.ma.us",
+ "uy",
+ "com.uy",
+ "edu.uy",
+ "gub.uy",
+ "mil.uy",
+ "net.uy",
+ "org.uy",
+ "uz",
+ "co.uz",
+ "com.uz",
+ "net.uz",
+ "org.uz",
+ "va",
+ "vc",
+ "com.vc",
+ "net.vc",
+ "org.vc",
+ "gov.vc",
+ "mil.vc",
+ "edu.vc",
+ "ve",
+ "arts.ve",
+ "co.ve",
+ "com.ve",
+ "e12.ve",
+ "edu.ve",
+ "firm.ve",
+ "gob.ve",
+ "gov.ve",
+ "info.ve",
+ "int.ve",
+ "mil.ve",
+ "net.ve",
+ "org.ve",
+ "rec.ve",
+ "store.ve",
+ "tec.ve",
+ "web.ve",
+ "vg",
+ "vi",
+ "co.vi",
+ "com.vi",
+ "k12.vi",
+ "net.vi",
+ "org.vi",
+ "vn",
+ "com.vn",
+ "net.vn",
+ "org.vn",
+ "edu.vn",
+ "gov.vn",
+ "int.vn",
+ "ac.vn",
+ "biz.vn",
+ "info.vn",
+ "name.vn",
+ "pro.vn",
+ "health.vn",
+ "vu",
+ "com.vu",
+ "edu.vu",
+ "net.vu",
+ "org.vu",
+ "wf",
+ "ws",
+ "com.ws",
+ "net.ws",
+ "org.ws",
+ "gov.ws",
+ "edu.ws",
+ "yt",
+ "xn--mgbaam7a8h",
+ "xn--y9a3aq",
+ "xn--54b7fta0cc",
+ "xn--90ais",
+ "xn--fiqs8s",
+ "xn--fiqz9s",
+ "xn--lgbbat1ad8j",
+ "xn--wgbh1c",
+ "xn--e1a4c",
+ "xn--node",
+ "xn--qxam",
+ "xn--j6w193g",
+ "xn--h2brj9c",
+ "xn--mgbbh1a71e",
+ "xn--fpcrj9c3d",
+ "xn--gecrj9c",
+ "xn--s9brj9c",
+ "xn--45brj9c",
+ "xn--xkc2dl3a5ee0h",
+ "xn--mgba3a4f16a",
+ "xn--mgba3a4fra",
+ "xn--mgbtx2b",
+ "xn--mgbayh7gpa",
+ "xn--3e0b707e",
+ "xn--80ao21a",
+ "xn--fzc2c9e2c",
+ "xn--xkc2al3hye2a",
+ "xn--mgbc0a9azcg",
+ "xn--d1alf",
+ "xn--l1acc",
+ "xn--mix891f",
+ "xn--mix082f",
+ "xn--mgbx4cd0ab",
+ "xn--mgb9awbf",
+ "xn--mgbai9azgqp6j",
+ "xn--mgbai9a5eva00b",
+ "xn--ygbi2ammx",
+ "xn--90a3ac",
+ "xn--o1ac.xn--90a3ac",
+ "xn--c1avg.xn--90a3ac",
+ "xn--90azh.xn--90a3ac",
+ "xn--d1at.xn--90a3ac",
+ "xn--o1ach.xn--90a3ac",
+ "xn--80au.xn--90a3ac",
+ "xn--p1ai",
+ "xn--wgbl6a",
+ "xn--mgberp4a5d4ar",
+ "xn--mgberp4a5d4a87g",
+ "xn--mgbqly7c0a67fbc",
+ "xn--mgbqly7cvafr",
+ "xn--mgbpl2fh",
+ "xn--yfro4i67o",
+ "xn--clchc0ea0b2g2a9gcd",
+ "xn--ogbpf8fl",
+ "xn--mgbtf8fl",
+ "xn--o3cw4h",
+ "xn--12c1fe0br.xn--o3cw4h",
+ "xn--12co0c3b4eva.xn--o3cw4h",
+ "xn--h3cuzk1di.xn--o3cw4h",
+ "xn--o3cyx2a.xn--o3cw4h",
+ "xn--m3ch0j3a.xn--o3cw4h",
+ "xn--12cfi8ixb8l.xn--o3cw4h",
+ "xn--pgbs0dh",
+ "xn--kpry57d",
+ "xn--kprw13d",
+ "xn--nnx388a",
+ "xn--j1amh",
+ "xn--mgb2ddes",
+ "xxx",
+ "*.ye",
+ "ac.za",
+ "agric.za",
+ "alt.za",
+ "co.za",
+ "edu.za",
+ "gov.za",
+ "grondar.za",
+ "law.za",
+ "mil.za",
+ "net.za",
+ "ngo.za",
+ "nis.za",
+ "nom.za",
+ "org.za",
+ "school.za",
+ "tm.za",
+ "web.za",
+ "zm",
+ "ac.zm",
+ "biz.zm",
+ "co.zm",
+ "com.zm",
+ "edu.zm",
+ "gov.zm",
+ "info.zm",
+ "mil.zm",
+ "net.zm",
+ "org.zm",
+ "sch.zm",
+ "zw",
+ "ac.zw",
+ "co.zw",
+ "gov.zw",
+ "mil.zw",
+ "org.zw",
+ "aaa",
+ "aarp",
+ "abarth",
+ "abb",
+ "abbott",
+ "abbvie",
+ "abc",
+ "able",
+ "abogado",
+ "abudhabi",
+ "academy",
+ "accenture",
+ "accountant",
+ "accountants",
+ "aco",
+ "active",
+ "actor",
+ "adac",
+ "ads",
+ "adult",
+ "aeg",
+ "aetna",
+ "afamilycompany",
+ "afl",
+ "africa",
+ "agakhan",
+ "agency",
+ "aig",
+ "aigo",
+ "airbus",
+ "airforce",
+ "airtel",
+ "akdn",
+ "alfaromeo",
+ "alibaba",
+ "alipay",
+ "allfinanz",
+ "allstate",
+ "ally",
+ "alsace",
+ "alstom",
+ "americanexpress",
+ "americanfamily",
+ "amex",
+ "amfam",
+ "amica",
+ "amsterdam",
+ "analytics",
+ "android",
+ "anquan",
+ "anz",
+ "aol",
+ "apartments",
+ "app",
+ "apple",
+ "aquarelle",
+ "arab",
+ "aramco",
+ "archi",
+ "army",
+ "art",
+ "arte",
+ "asda",
+ "associates",
+ "athleta",
+ "attorney",
+ "auction",
+ "audi",
+ "audible",
+ "audio",
+ "auspost",
+ "author",
+ "auto",
+ "autos",
+ "avianca",
+ "aws",
+ "axa",
+ "azure",
+ "baby",
+ "baidu",
+ "banamex",
+ "bananarepublic",
+ "band",
+ "bank",
+ "bar",
+ "barcelona",
+ "barclaycard",
+ "barclays",
+ "barefoot",
+ "bargains",
+ "baseball",
+ "basketball",
+ "bauhaus",
+ "bayern",
+ "bbc",
+ "bbt",
+ "bbva",
+ "bcg",
+ "bcn",
+ "beats",
+ "beauty",
+ "beer",
+ "bentley",
+ "berlin",
+ "best",
+ "bestbuy",
+ "bet",
+ "bharti",
+ "bible",
+ "bid",
+ "bike",
+ "bing",
+ "bingo",
+ "bio",
+ "black",
+ "blackfriday",
+ "blanco",
+ "blockbuster",
+ "blog",
+ "bloomberg",
+ "blue",
+ "bms",
+ "bmw",
+ "bnl",
+ "bnpparibas",
+ "boats",
+ "boehringer",
+ "bofa",
+ "bom",
+ "bond",
+ "boo",
+ "book",
+ "booking",
+ "boots",
+ "bosch",
+ "bostik",
+ "boston",
+ "bot",
+ "boutique",
+ "box",
+ "bradesco",
+ "bridgestone",
+ "broadway",
+ "broker",
+ "brother",
+ "brussels",
+ "budapest",
+ "bugatti",
+ "build",
+ "builders",
+ "business",
+ "buy",
+ "buzz",
+ "bzh",
+ "cab",
+ "cafe",
+ "cal",
+ "call",
+ "calvinklein",
+ "cam",
+ "camera",
+ "camp",
+ "cancerresearch",
+ "canon",
+ "capetown",
+ "capital",
+ "capitalone",
+ "car",
+ "caravan",
+ "cards",
+ "care",
+ "career",
+ "careers",
+ "cars",
+ "cartier",
+ "casa",
+ "case",
+ "caseih",
+ "cash",
+ "casino",
+ "catering",
+ "catholic",
+ "cba",
+ "cbn",
+ "cbre",
+ "cbs",
+ "ceb",
+ "center",
+ "ceo",
+ "cern",
+ "cfa",
+ "cfd",
+ "chanel",
+ "channel",
+ "chase",
+ "chat",
+ "cheap",
+ "chintai",
+ "chloe",
+ "christmas",
+ "chrome",
+ "chrysler",
+ "church",
+ "cipriani",
+ "circle",
+ "cisco",
+ "citadel",
+ "citi",
+ "citic",
+ "city",
+ "cityeats",
+ "claims",
+ "cleaning",
+ "click",
+ "clinic",
+ "clinique",
+ "clothing",
+ "cloud",
+ "club",
+ "clubmed",
+ "coach",
+ "codes",
+ "coffee",
+ "college",
+ "cologne",
+ "comcast",
+ "commbank",
+ "community",
+ "company",
+ "compare",
+ "computer",
+ "comsec",
+ "condos",
+ "construction",
+ "consulting",
+ "contact",
+ "contractors",
+ "cooking",
+ "cookingchannel",
+ "cool",
+ "corsica",
+ "country",
+ "coupon",
+ "coupons",
+ "courses",
+ "credit",
+ "creditcard",
+ "creditunion",
+ "cricket",
+ "crown",
+ "crs",
+ "cruise",
+ "cruises",
+ "csc",
+ "cuisinella",
+ "cymru",
+ "cyou",
+ "dabur",
+ "dad",
+ "dance",
+ "data",
+ "date",
+ "dating",
+ "datsun",
+ "day",
+ "dclk",
+ "dds",
+ "deal",
+ "dealer",
+ "deals",
+ "degree",
+ "delivery",
+ "dell",
+ "deloitte",
+ "delta",
+ "democrat",
+ "dental",
+ "dentist",
+ "desi",
+ "design",
+ "dev",
+ "dhl",
+ "diamonds",
+ "diet",
+ "digital",
+ "direct",
+ "directory",
+ "discount",
+ "discover",
+ "dish",
+ "diy",
+ "dnp",
+ "docs",
+ "doctor",
+ "dodge",
+ "dog",
+ "doha",
+ "domains",
+ "dot",
+ "download",
+ "drive",
+ "dtv",
+ "dubai",
+ "duck",
+ "dunlop",
+ "duns",
+ "dupont",
+ "durban",
+ "dvag",
+ "dvr",
+ "earth",
+ "eat",
+ "eco",
+ "edeka",
+ "education",
+ "email",
+ "emerck",
+ "energy",
+ "engineer",
+ "engineering",
+ "enterprises",
+ "epost",
+ "epson",
+ "equipment",
+ "ericsson",
+ "erni",
+ "esq",
+ "estate",
+ "esurance",
+ "etisalat",
+ "eurovision",
+ "eus",
+ "events",
+ "everbank",
+ "exchange",
+ "expert",
+ "exposed",
+ "express",
+ "extraspace",
+ "fage",
+ "fail",
+ "fairwinds",
+ "faith",
+ "family",
+ "fan",
+ "fans",
+ "farm",
+ "farmers",
+ "fashion",
+ "fast",
+ "fedex",
+ "feedback",
+ "ferrari",
+ "ferrero",
+ "fiat",
+ "fidelity",
+ "fido",
+ "film",
+ "final",
+ "finance",
+ "financial",
+ "fire",
+ "firestone",
+ "firmdale",
+ "fish",
+ "fishing",
+ "fit",
+ "fitness",
+ "flickr",
+ "flights",
+ "flir",
+ "florist",
+ "flowers",
+ "fly",
+ "foo",
+ "food",
+ "foodnetwork",
+ "football",
+ "ford",
+ "forex",
+ "forsale",
+ "forum",
+ "foundation",
+ "fox",
+ "free",
+ "fresenius",
+ "frl",
+ "frogans",
+ "frontdoor",
+ "frontier",
+ "ftr",
+ "fujitsu",
+ "fujixerox",
+ "fun",
+ "fund",
+ "furniture",
+ "futbol",
+ "fyi",
+ "gal",
+ "gallery",
+ "gallo",
+ "gallup",
+ "game",
+ "games",
+ "gap",
+ "garden",
+ "gbiz",
+ "gdn",
+ "gea",
+ "gent",
+ "genting",
+ "george",
+ "ggee",
+ "gift",
+ "gifts",
+ "gives",
+ "giving",
+ "glade",
+ "glass",
+ "gle",
+ "global",
+ "globo",
+ "gmail",
+ "gmbh",
+ "gmo",
+ "gmx",
+ "godaddy",
+ "gold",
+ "goldpoint",
+ "golf",
+ "goo",
+ "goodhands",
+ "goodyear",
+ "goog",
+ "google",
+ "gop",
+ "got",
+ "grainger",
+ "graphics",
+ "gratis",
+ "green",
+ "gripe",
+ "grocery",
+ "group",
+ "guardian",
+ "gucci",
+ "guge",
+ "guide",
+ "guitars",
+ "guru",
+ "hair",
+ "hamburg",
+ "hangout",
+ "haus",
+ "hbo",
+ "hdfc",
+ "hdfcbank",
+ "health",
+ "healthcare",
+ "help",
+ "helsinki",
+ "here",
+ "hermes",
+ "hgtv",
+ "hiphop",
+ "hisamitsu",
+ "hitachi",
+ "hiv",
+ "hkt",
+ "hockey",
+ "holdings",
+ "holiday",
+ "homedepot",
+ "homegoods",
+ "homes",
+ "homesense",
+ "honda",
+ "honeywell",
+ "horse",
+ "hospital",
+ "host",
+ "hosting",
+ "hot",
+ "hoteles",
+ "hotels",
+ "hotmail",
+ "house",
+ "how",
+ "hsbc",
+ "htc",
+ "hughes",
+ "hyatt",
+ "hyundai",
+ "ibm",
+ "icbc",
+ "ice",
+ "icu",
+ "ieee",
+ "ifm",
+ "ikano",
+ "imamat",
+ "imdb",
+ "immo",
+ "immobilien",
+ "industries",
+ "infiniti",
+ "ing",
+ "ink",
+ "institute",
+ "insurance",
+ "insure",
+ "intel",
+ "international",
+ "intuit",
+ "investments",
+ "ipiranga",
+ "irish",
+ "iselect",
+ "ismaili",
+ "ist",
+ "istanbul",
+ "itau",
+ "itv",
+ "iveco",
+ "iwc",
+ "jaguar",
+ "java",
+ "jcb",
+ "jcp",
+ "jeep",
+ "jetzt",
+ "jewelry",
+ "jio",
+ "jlc",
+ "jll",
+ "jmp",
+ "jnj",
+ "joburg",
+ "jot",
+ "joy",
+ "jpmorgan",
+ "jprs",
+ "juegos",
+ "juniper",
+ "kaufen",
+ "kddi",
+ "kerryhotels",
+ "kerrylogistics",
+ "kerryproperties",
+ "kfh",
+ "kia",
+ "kim",
+ "kinder",
+ "kindle",
+ "kitchen",
+ "kiwi",
+ "koeln",
+ "komatsu",
+ "kosher",
+ "kpmg",
+ "kpn",
+ "krd",
+ "kred",
+ "kuokgroup",
+ "kyoto",
+ "lacaixa",
+ "ladbrokes",
+ "lamborghini",
+ "lamer",
+ "lancaster",
+ "lancia",
+ "lancome",
+ "land",
+ "landrover",
+ "lanxess",
+ "lasalle",
+ "lat",
+ "latino",
+ "latrobe",
+ "law",
+ "lawyer",
+ "lds",
+ "lease",
+ "leclerc",
+ "lefrak",
+ "legal",
+ "lego",
+ "lexus",
+ "lgbt",
+ "liaison",
+ "lidl",
+ "life",
+ "lifeinsurance",
+ "lifestyle",
+ "lighting",
+ "like",
+ "lilly",
+ "limited",
+ "limo",
+ "lincoln",
+ "linde",
+ "link",
+ "lipsy",
+ "live",
+ "living",
+ "lixil",
+ "loan",
+ "loans",
+ "locker",
+ "locus",
+ "loft",
+ "lol",
+ "london",
+ "lotte",
+ "lotto",
+ "love",
+ "lpl",
+ "lplfinancial",
+ "ltd",
+ "ltda",
+ "lundbeck",
+ "lupin",
+ "luxe",
+ "luxury",
+ "macys",
+ "madrid",
+ "maif",
+ "maison",
+ "makeup",
+ "man",
+ "management",
+ "mango",
+ "map",
+ "market",
+ "marketing",
+ "markets",
+ "marriott",
+ "marshalls",
+ "maserati",
+ "mattel",
+ "mba",
+ "mcd",
+ "mcdonalds",
+ "mckinsey",
+ "med",
+ "media",
+ "meet",
+ "melbourne",
+ "meme",
+ "memorial",
+ "men",
+ "menu",
+ "meo",
+ "merckmsd",
+ "metlife",
+ "miami",
+ "microsoft",
+ "mini",
+ "mint",
+ "mit",
+ "mitsubishi",
+ "mlb",
+ "mls",
+ "mma",
+ "mobile",
+ "mobily",
+ "moda",
+ "moe",
+ "moi",
+ "mom",
+ "monash",
+ "money",
+ "monster",
+ "montblanc",
+ "mopar",
+ "mormon",
+ "mortgage",
+ "moscow",
+ "moto",
+ "motorcycles",
+ "mov",
+ "movie",
+ "movistar",
+ "msd",
+ "mtn",
+ "mtpc",
+ "mtr",
+ "mutual",
+ "nab",
+ "nadex",
+ "nagoya",
+ "nationwide",
+ "natura",
+ "navy",
+ "nba",
+ "nec",
+ "netbank",
+ "netflix",
+ "network",
+ "neustar",
+ "new",
+ "newholland",
+ "news",
+ "next",
+ "nextdirect",
+ "nexus",
+ "nfl",
+ "ngo",
+ "nhk",
+ "nico",
+ "nike",
+ "nikon",
+ "ninja",
+ "nissan",
+ "nissay",
+ "nokia",
+ "northwesternmutual",
+ "norton",
+ "now",
+ "nowruz",
+ "nowtv",
+ "nra",
+ "nrw",
+ "ntt",
+ "nyc",
+ "obi",
+ "observer",
+ "off",
+ "office",
+ "okinawa",
+ "olayan",
+ "olayangroup",
+ "oldnavy",
+ "ollo",
+ "omega",
+ "one",
+ "ong",
+ "onl",
+ "online",
+ "onyourside",
+ "ooo",
+ "open",
+ "oracle",
+ "orange",
+ "organic",
+ "origins",
+ "osaka",
+ "otsuka",
+ "ott",
+ "ovh",
+ "page",
+ "pamperedchef",
+ "panasonic",
+ "panerai",
+ "paris",
+ "pars",
+ "partners",
+ "parts",
+ "party",
+ "passagens",
+ "pay",
+ "pccw",
+ "pet",
+ "pfizer",
+ "pharmacy",
+ "phd",
+ "philips",
+ "phone",
+ "photo",
+ "photography",
+ "photos",
+ "physio",
+ "piaget",
+ "pics",
+ "pictet",
+ "pictures",
+ "pid",
+ "pin",
+ "ping",
+ "pink",
+ "pioneer",
+ "pizza",
+ "place",
+ "play",
+ "playstation",
+ "plumbing",
+ "plus",
+ "pnc",
+ "pohl",
+ "poker",
+ "politie",
+ "porn",
+ "pramerica",
+ "praxi",
+ "press",
+ "prime",
+ "prod",
+ "productions",
+ "prof",
+ "progressive",
+ "promo",
+ "properties",
+ "property",
+ "protection",
+ "pru",
+ "prudential",
+ "pub",
+ "pwc",
+ "qpon",
+ "quebec",
+ "quest",
+ "qvc",
+ "racing",
+ "radio",
+ "raid",
+ "read",
+ "realestate",
+ "realtor",
+ "realty",
+ "recipes",
+ "red",
+ "redstone",
+ "redumbrella",
+ "rehab",
+ "reise",
+ "reisen",
+ "reit",
+ "reliance",
+ "ren",
+ "rent",
+ "rentals",
+ "repair",
+ "report",
+ "republican",
+ "rest",
+ "restaurant",
+ "review",
+ "reviews",
+ "rexroth",
+ "rich",
+ "richardli",
+ "ricoh",
+ "rightathome",
+ "ril",
+ "rio",
+ "rip",
+ "rmit",
+ "rocher",
+ "rocks",
+ "rodeo",
+ "rogers",
+ "room",
+ "rsvp",
+ "rugby",
+ "ruhr",
+ "run",
+ "rwe",
+ "ryukyu",
+ "saarland",
+ "safe",
+ "safety",
+ "sakura",
+ "sale",
+ "salon",
+ "samsclub",
+ "samsung",
+ "sandvik",
+ "sandvikcoromant",
+ "sanofi",
+ "sap",
+ "sapo",
+ "sarl",
+ "sas",
+ "save",
+ "saxo",
+ "sbi",
+ "sbs",
+ "sca",
+ "scb",
+ "schaeffler",
+ "schmidt",
+ "scholarships",
+ "school",
+ "schule",
+ "schwarz",
+ "science",
+ "scjohnson",
+ "scor",
+ "scot",
+ "search",
+ "seat",
+ "secure",
+ "security",
+ "seek",
+ "select",
+ "sener",
+ "services",
+ "ses",
+ "seven",
+ "sew",
+ "sex",
+ "sexy",
+ "sfr",
+ "shangrila",
+ "sharp",
+ "shaw",
+ "shell",
+ "shia",
+ "shiksha",
+ "shoes",
+ "shop",
+ "shopping",
+ "shouji",
+ "show",
+ "showtime",
+ "shriram",
+ "silk",
+ "sina",
+ "singles",
+ "site",
+ "ski",
+ "skin",
+ "sky",
+ "skype",
+ "sling",
+ "smart",
+ "smile",
+ "sncf",
+ "soccer",
+ "social",
+ "softbank",
+ "software",
+ "sohu",
+ "solar",
+ "solutions",
+ "song",
+ "sony",
+ "soy",
+ "space",
+ "spiegel",
+ "spot",
+ "spreadbetting",
+ "srl",
+ "srt",
+ "stada",
+ "staples",
+ "star",
+ "starhub",
+ "statebank",
+ "statefarm",
+ "statoil",
+ "stc",
+ "stcgroup",
+ "stockholm",
+ "storage",
+ "store",
+ "stream",
+ "studio",
+ "study",
+ "style",
+ "sucks",
+ "supplies",
+ "supply",
+ "support",
+ "surf",
+ "surgery",
+ "suzuki",
+ "swatch",
+ "swiftcover",
+ "swiss",
+ "sydney",
+ "symantec",
+ "systems",
+ "tab",
+ "taipei",
+ "talk",
+ "taobao",
+ "target",
+ "tatamotors",
+ "tatar",
+ "tattoo",
+ "tax",
+ "taxi",
+ "tci",
+ "tdk",
+ "team",
+ "tech",
+ "technology",
+ "telecity",
+ "telefonica",
+ "temasek",
+ "tennis",
+ "teva",
+ "thd",
+ "theater",
+ "theatre",
+ "tiaa",
+ "tickets",
+ "tienda",
+ "tiffany",
+ "tips",
+ "tires",
+ "tirol",
+ "tjmaxx",
+ "tjx",
+ "tkmaxx",
+ "tmall",
+ "today",
+ "tokyo",
+ "tools",
+ "top",
+ "toray",
+ "toshiba",
+ "total",
+ "tours",
+ "town",
+ "toyota",
+ "toys",
+ "trade",
+ "trading",
+ "training",
+ "travelchannel",
+ "travelers",
+ "travelersinsurance",
+ "trust",
+ "trv",
+ "tube",
+ "tui",
+ "tunes",
+ "tushu",
+ "tvs",
+ "ubank",
+ "ubs",
+ "uconnect",
+ "unicom",
+ "university",
+ "uno",
+ "uol",
+ "ups",
+ "vacations",
+ "vana",
+ "vanguard",
+ "vegas",
+ "ventures",
+ "verisign",
+ "versicherung",
+ "vet",
+ "viajes",
+ "video",
+ "vig",
+ "viking",
+ "villas",
+ "vin",
+ "vip",
+ "virgin",
+ "visa",
+ "vision",
+ "vista",
+ "vistaprint",
+ "viva",
+ "vivo",
+ "vlaanderen",
+ "vodka",
+ "volkswagen",
+ "volvo",
+ "vote",
+ "voting",
+ "voto",
+ "voyage",
+ "vuelos",
+ "wales",
+ "walmart",
+ "walter",
+ "wang",
+ "wanggou",
+ "warman",
+ "watch",
+ "watches",
+ "weather",
+ "weatherchannel",
+ "webcam",
+ "weber",
+ "website",
+ "wed",
+ "wedding",
+ "weibo",
+ "weir",
+ "whoswho",
+ "wien",
+ "wiki",
+ "williamhill",
+ "win",
+ "windows",
+ "wine",
+ "winners",
+ "wme",
+ "wolterskluwer",
+ "woodside",
+ "work",
+ "works",
+ "world",
+ "wow",
+ "wtc",
+ "wtf",
+ "xbox",
+ "xerox",
+ "xfinity",
+ "xihuan",
+ "xin",
+ "xn--11b4c3d",
+ "xn--1ck2e1b",
+ "xn--1qqw23a",
+ "xn--30rr7y",
+ "xn--3bst00m",
+ "xn--3ds443g",
+ "xn--3oq18vl8pn36a",
+ "xn--3pxu8k",
+ "xn--42c2d9a",
+ "xn--45q11c",
+ "xn--4gbrim",
+ "xn--55qw42g",
+ "xn--55qx5d",
+ "xn--5su34j936bgsg",
+ "xn--5tzm5g",
+ "xn--6frz82g",
+ "xn--6qq986b3xl",
+ "xn--80adxhks",
+ "xn--80aqecdr1a",
+ "xn--80asehdb",
+ "xn--80aswg",
+ "xn--8y0a063a",
+ "xn--9dbq2a",
+ "xn--9et52u",
+ "xn--9krt00a",
+ "xn--b4w605ferd",
+ "xn--bck1b9a5dre4c",
+ "xn--c1avg",
+ "xn--c2br7g",
+ "xn--cck2b3b",
+ "xn--cg4bki",
+ "xn--czr694b",
+ "xn--czrs0t",
+ "xn--czru2d",
+ "xn--d1acj3b",
+ "xn--eckvdtc9d",
+ "xn--efvy88h",
+ "xn--estv75g",
+ "xn--fct429k",
+ "xn--fhbei",
+ "xn--fiq228c5hs",
+ "xn--fiq64b",
+ "xn--fjq720a",
+ "xn--flw351e",
+ "xn--fzys8d69uvgm",
+ "xn--g2xx48c",
+ "xn--gckr3f0f",
+ "xn--gk3at1e",
+ "xn--hxt814e",
+ "xn--i1b6b1a6a2e",
+ "xn--imr513n",
+ "xn--io0a7i",
+ "xn--j1aef",
+ "xn--jlq61u9w7b",
+ "xn--jvr189m",
+ "xn--kcrx77d1x4a",
+ "xn--kpu716f",
+ "xn--kput3i",
+ "xn--mgba3a3ejt",
+ "xn--mgba7c0bbn0a",
+ "xn--mgbaakc7dvf",
+ "xn--mgbab2bd",
+ "xn--mgbb9fbpob",
+ "xn--mgbca7dzdo",
+ "xn--mgbi4ecexp",
+ "xn--mgbt3dhd",
+ "xn--mk1bu44c",
+ "xn--mxtq1m",
+ "xn--ngbc5azd",
+ "xn--ngbe9e0a",
+ "xn--ngbrx",
+ "xn--nqv7f",
+ "xn--nqv7fs00ema",
+ "xn--nyqy26a",
+ "xn--p1acf",
+ "xn--pbt977c",
+ "xn--pssy2u",
+ "xn--q9jyb4c",
+ "xn--qcka1pmc",
+ "xn--rhqv96g",
+ "xn--rovu88b",
+ "xn--ses554g",
+ "xn--t60b56a",
+ "xn--tckwe",
+ "xn--tiq49xqyj",
+ "xn--unup4y",
+ "xn--vermgensberater-ctb",
+ "xn--vermgensberatung-pwb",
+ "xn--vhquv",
+ "xn--vuq861b",
+ "xn--w4r85el8fhu5dnra",
+ "xn--w4rs40l",
+ "xn--xhq521b",
+ "xn--zfr164b",
+ "xperia",
+ "xyz",
+ "yachts",
+ "yahoo",
+ "yamaxun",
+ "yandex",
+ "yodobashi",
+ "yoga",
+ "yokohama",
+ "you",
+ "youtube",
+ "yun",
+ "zappos",
+ "zara",
+ "zero",
+ "zip",
+ "zippo",
+ "zone",
+ "zuerich",
+ "cc.ua",
+ "inf.ua",
+ "ltd.ua",
+ "beep.pl",
+ "*.compute.estate",
+ "*.alces.network",
+ "*.alwaysdata.net",
+ "cloudfront.net",
+ "*.compute.amazonaws.com",
+ "*.compute-1.amazonaws.com",
+ "*.compute.amazonaws.com.cn",
+ "us-east-1.amazonaws.com",
+ "elasticbeanstalk.cn-north-1.amazonaws.com.cn",
+ "*.elasticbeanstalk.com",
+ "*.elb.amazonaws.com",
+ "*.elb.amazonaws.com.cn",
+ "s3.amazonaws.com",
+ "s3-ap-northeast-1.amazonaws.com",
+ "s3-ap-northeast-2.amazonaws.com",
+ "s3-ap-south-1.amazonaws.com",
+ "s3-ap-southeast-1.amazonaws.com",
+ "s3-ap-southeast-2.amazonaws.com",
+ "s3-ca-central-1.amazonaws.com",
+ "s3-eu-central-1.amazonaws.com",
+ "s3-eu-west-1.amazonaws.com",
+ "s3-eu-west-2.amazonaws.com",
+ "s3-external-1.amazonaws.com",
+ "s3-fips-us-gov-west-1.amazonaws.com",
+ "s3-sa-east-1.amazonaws.com",
+ "s3-us-gov-west-1.amazonaws.com",
+ "s3-us-east-2.amazonaws.com",
+ "s3-us-west-1.amazonaws.com",
+ "s3-us-west-2.amazonaws.com",
+ "s3.ap-northeast-2.amazonaws.com",
+ "s3.ap-south-1.amazonaws.com",
+ "s3.cn-north-1.amazonaws.com.cn",
+ "s3.ca-central-1.amazonaws.com",
+ "s3.eu-central-1.amazonaws.com",
+ "s3.eu-west-2.amazonaws.com",
+ "s3.us-east-2.amazonaws.com",
+ "s3.dualstack.ap-northeast-1.amazonaws.com",
+ "s3.dualstack.ap-northeast-2.amazonaws.com",
+ "s3.dualstack.ap-south-1.amazonaws.com",
+ "s3.dualstack.ap-southeast-1.amazonaws.com",
+ "s3.dualstack.ap-southeast-2.amazonaws.com",
+ "s3.dualstack.ca-central-1.amazonaws.com",
+ "s3.dualstack.eu-central-1.amazonaws.com",
+ "s3.dualstack.eu-west-1.amazonaws.com",
+ "s3.dualstack.eu-west-2.amazonaws.com",
+ "s3.dualstack.sa-east-1.amazonaws.com",
+ "s3.dualstack.us-east-1.amazonaws.com",
+ "s3.dualstack.us-east-2.amazonaws.com",
+ "s3-website-us-east-1.amazonaws.com",
+ "s3-website-us-west-1.amazonaws.com",
+ "s3-website-us-west-2.amazonaws.com",
+ "s3-website-ap-northeast-1.amazonaws.com",
+ "s3-website-ap-southeast-1.amazonaws.com",
+ "s3-website-ap-southeast-2.amazonaws.com",
+ "s3-website-eu-west-1.amazonaws.com",
+ "s3-website-sa-east-1.amazonaws.com",
+ "s3-website.ap-northeast-2.amazonaws.com",
+ "s3-website.ap-south-1.amazonaws.com",
+ "s3-website.ca-central-1.amazonaws.com",
+ "s3-website.eu-central-1.amazonaws.com",
+ "s3-website.eu-west-2.amazonaws.com",
+ "s3-website.us-east-2.amazonaws.com",
+ "t3l3p0rt.net",
+ "tele.amune.org",
+ "on-aptible.com",
+ "user.party.eus",
+ "pimienta.org",
+ "poivron.org",
+ "potager.org",
+ "sweetpepper.org",
+ "myasustor.com",
+ "myfritz.net",
+ "*.awdev.ca",
+ "*.advisor.ws",
+ "backplaneapp.io",
+ "betainabox.com",
+ "bnr.la",
+ "boxfuse.io",
+ "square7.ch",
+ "bplaced.com",
+ "bplaced.de",
+ "square7.de",
+ "bplaced.net",
+ "square7.net",
+ "browsersafetymark.io",
+ "mycd.eu",
+ "ae.org",
+ "ar.com",
+ "br.com",
+ "cn.com",
+ "com.de",
+ "com.se",
+ "de.com",
+ "eu.com",
+ "gb.com",
+ "gb.net",
+ "hu.com",
+ "hu.net",
+ "jp.net",
+ "jpn.com",
+ "kr.com",
+ "mex.com",
+ "no.com",
+ "qc.com",
+ "ru.com",
+ "sa.com",
+ "se.com",
+ "se.net",
+ "uk.com",
+ "uk.net",
+ "us.com",
+ "uy.com",
+ "za.bz",
+ "za.com",
+ "africa.com",
+ "gr.com",
+ "in.net",
+ "us.org",
+ "co.com",
+ "c.la",
+ "certmgr.org",
+ "xenapponazure.com",
+ "virtueeldomein.nl",
+ "c66.me",
+ "cloudcontrolled.com",
+ "cloudcontrolapp.com",
+ "co.ca",
+ "co.cz",
+ "c.cdn77.org",
+ "cdn77-ssl.net",
+ "r.cdn77.net",
+ "rsc.cdn77.org",
+ "ssl.origin.cdn77-secure.org",
+ "cloudns.asia",
+ "cloudns.biz",
+ "cloudns.club",
+ "cloudns.cc",
+ "cloudns.eu",
+ "cloudns.in",
+ "cloudns.info",
+ "cloudns.org",
+ "cloudns.pro",
+ "cloudns.pw",
+ "cloudns.us",
+ "co.nl",
+ "co.no",
+ "dyn.cosidns.de",
+ "dynamisches-dns.de",
+ "dnsupdater.de",
+ "internet-dns.de",
+ "l-o-g-i-n.de",
+ "dynamic-dns.info",
+ "feste-ip.net",
+ "knx-server.net",
+ "static-access.net",
+ "realm.cz",
+ "*.cryptonomic.net",
+ "cupcake.is",
+ "cyon.link",
+ "cyon.site",
+ "daplie.me",
+ "localhost.daplie.me",
+ "biz.dk",
+ "co.dk",
+ "firm.dk",
+ "reg.dk",
+ "store.dk",
+ "dedyn.io",
+ "dnshome.de",
+ "dreamhosters.com",
+ "mydrobo.com",
+ "drud.io",
+ "drud.us",
+ "duckdns.org",
+ "dy.fi",
+ "tunk.org",
+ "dyndns-at-home.com",
+ "dyndns-at-work.com",
+ "dyndns-blog.com",
+ "dyndns-free.com",
+ "dyndns-home.com",
+ "dyndns-ip.com",
+ "dyndns-mail.com",
+ "dyndns-office.com",
+ "dyndns-pics.com",
+ "dyndns-remote.com",
+ "dyndns-server.com",
+ "dyndns-web.com",
+ "dyndns-wiki.com",
+ "dyndns-work.com",
+ "dyndns.biz",
+ "dyndns.info",
+ "dyndns.org",
+ "dyndns.tv",
+ "at-band-camp.net",
+ "ath.cx",
+ "barrel-of-knowledge.info",
+ "barrell-of-knowledge.info",
+ "better-than.tv",
+ "blogdns.com",
+ "blogdns.net",
+ "blogdns.org",
+ "blogsite.org",
+ "boldlygoingnowhere.org",
+ "broke-it.net",
+ "buyshouses.net",
+ "cechire.com",
+ "dnsalias.com",
+ "dnsalias.net",
+ "dnsalias.org",
+ "dnsdojo.com",
+ "dnsdojo.net",
+ "dnsdojo.org",
+ "does-it.net",
+ "doesntexist.com",
+ "doesntexist.org",
+ "dontexist.com",
+ "dontexist.net",
+ "dontexist.org",
+ "doomdns.com",
+ "doomdns.org",
+ "dvrdns.org",
+ "dyn-o-saur.com",
+ "dynalias.com",
+ "dynalias.net",
+ "dynalias.org",
+ "dynathome.net",
+ "dyndns.ws",
+ "endofinternet.net",
+ "endofinternet.org",
+ "endoftheinternet.org",
+ "est-a-la-maison.com",
+ "est-a-la-masion.com",
+ "est-le-patron.com",
+ "est-mon-blogueur.com",
+ "for-better.biz",
+ "for-more.biz",
+ "for-our.info",
+ "for-some.biz",
+ "for-the.biz",
+ "forgot.her.name",
+ "forgot.his.name",
+ "from-ak.com",
+ "from-al.com",
+ "from-ar.com",
+ "from-az.net",
+ "from-ca.com",
+ "from-co.net",
+ "from-ct.com",
+ "from-dc.com",
+ "from-de.com",
+ "from-fl.com",
+ "from-ga.com",
+ "from-hi.com",
+ "from-ia.com",
+ "from-id.com",
+ "from-il.com",
+ "from-in.com",
+ "from-ks.com",
+ "from-ky.com",
+ "from-la.net",
+ "from-ma.com",
+ "from-md.com",
+ "from-me.org",
+ "from-mi.com",
+ "from-mn.com",
+ "from-mo.com",
+ "from-ms.com",
+ "from-mt.com",
+ "from-nc.com",
+ "from-nd.com",
+ "from-ne.com",
+ "from-nh.com",
+ "from-nj.com",
+ "from-nm.com",
+ "from-nv.com",
+ "from-ny.net",
+ "from-oh.com",
+ "from-ok.com",
+ "from-or.com",
+ "from-pa.com",
+ "from-pr.com",
+ "from-ri.com",
+ "from-sc.com",
+ "from-sd.com",
+ "from-tn.com",
+ "from-tx.com",
+ "from-ut.com",
+ "from-va.com",
+ "from-vt.com",
+ "from-wa.com",
+ "from-wi.com",
+ "from-wv.com",
+ "from-wy.com",
+ "ftpaccess.cc",
+ "fuettertdasnetz.de",
+ "game-host.org",
+ "game-server.cc",
+ "getmyip.com",
+ "gets-it.net",
+ "go.dyndns.org",
+ "gotdns.com",
+ "gotdns.org",
+ "groks-the.info",
+ "groks-this.info",
+ "ham-radio-op.net",
+ "here-for-more.info",
+ "hobby-site.com",
+ "hobby-site.org",
+ "home.dyndns.org",
+ "homedns.org",
+ "homeftp.net",
+ "homeftp.org",
+ "homeip.net",
+ "homelinux.com",
+ "homelinux.net",
+ "homelinux.org",
+ "homeunix.com",
+ "homeunix.net",
+ "homeunix.org",
+ "iamallama.com",
+ "in-the-band.net",
+ "is-a-anarchist.com",
+ "is-a-blogger.com",
+ "is-a-bookkeeper.com",
+ "is-a-bruinsfan.org",
+ "is-a-bulls-fan.com",
+ "is-a-candidate.org",
+ "is-a-caterer.com",
+ "is-a-celticsfan.org",
+ "is-a-chef.com",
+ "is-a-chef.net",
+ "is-a-chef.org",
+ "is-a-conservative.com",
+ "is-a-cpa.com",
+ "is-a-cubicle-slave.com",
+ "is-a-democrat.com",
+ "is-a-designer.com",
+ "is-a-doctor.com",
+ "is-a-financialadvisor.com",
+ "is-a-geek.com",
+ "is-a-geek.net",
+ "is-a-geek.org",
+ "is-a-green.com",
+ "is-a-guru.com",
+ "is-a-hard-worker.com",
+ "is-a-hunter.com",
+ "is-a-knight.org",
+ "is-a-landscaper.com",
+ "is-a-lawyer.com",
+ "is-a-liberal.com",
+ "is-a-libertarian.com",
+ "is-a-linux-user.org",
+ "is-a-llama.com",
+ "is-a-musician.com",
+ "is-a-nascarfan.com",
+ "is-a-nurse.com",
+ "is-a-painter.com",
+ "is-a-patsfan.org",
+ "is-a-personaltrainer.com",
+ "is-a-photographer.com",
+ "is-a-player.com",
+ "is-a-republican.com",
+ "is-a-rockstar.com",
+ "is-a-socialist.com",
+ "is-a-soxfan.org",
+ "is-a-student.com",
+ "is-a-teacher.com",
+ "is-a-techie.com",
+ "is-a-therapist.com",
+ "is-an-accountant.com",
+ "is-an-actor.com",
+ "is-an-actress.com",
+ "is-an-anarchist.com",
+ "is-an-artist.com",
+ "is-an-engineer.com",
+ "is-an-entertainer.com",
+ "is-by.us",
+ "is-certified.com",
+ "is-found.org",
+ "is-gone.com",
+ "is-into-anime.com",
+ "is-into-cars.com",
+ "is-into-cartoons.com",
+ "is-into-games.com",
+ "is-leet.com",
+ "is-lost.org",
+ "is-not-certified.com",
+ "is-saved.org",
+ "is-slick.com",
+ "is-uberleet.com",
+ "is-very-bad.org",
+ "is-very-evil.org",
+ "is-very-good.org",
+ "is-very-nice.org",
+ "is-very-sweet.org",
+ "is-with-theband.com",
+ "isa-geek.com",
+ "isa-geek.net",
+ "isa-geek.org",
+ "isa-hockeynut.com",
+ "issmarterthanyou.com",
+ "isteingeek.de",
+ "istmein.de",
+ "kicks-ass.net",
+ "kicks-ass.org",
+ "knowsitall.info",
+ "land-4-sale.us",
+ "lebtimnetz.de",
+ "leitungsen.de",
+ "likes-pie.com",
+ "likescandy.com",
+ "merseine.nu",
+ "mine.nu",
+ "misconfused.org",
+ "mypets.ws",
+ "myphotos.cc",
+ "neat-url.com",
+ "office-on-the.net",
+ "on-the-web.tv",
+ "podzone.net",
+ "podzone.org",
+ "readmyblog.org",
+ "saves-the-whales.com",
+ "scrapper-site.net",
+ "scrapping.cc",
+ "selfip.biz",
+ "selfip.com",
+ "selfip.info",
+ "selfip.net",
+ "selfip.org",
+ "sells-for-less.com",
+ "sells-for-u.com",
+ "sells-it.net",
+ "sellsyourhome.org",
+ "servebbs.com",
+ "servebbs.net",
+ "servebbs.org",
+ "serveftp.net",
+ "serveftp.org",
+ "servegame.org",
+ "shacknet.nu",
+ "simple-url.com",
+ "space-to-rent.com",
+ "stuff-4-sale.org",
+ "stuff-4-sale.us",
+ "teaches-yoga.com",
+ "thruhere.net",
+ "traeumtgerade.de",
+ "webhop.biz",
+ "webhop.info",
+ "webhop.net",
+ "webhop.org",
+ "worse-than.tv",
+ "writesthisblog.com",
+ "ddnss.de",
+ "dyn.ddnss.de",
+ "dyndns.ddnss.de",
+ "dyndns1.de",
+ "dyn-ip24.de",
+ "home-webserver.de",
+ "dyn.home-webserver.de",
+ "myhome-server.de",
+ "ddnss.org",
+ "definima.net",
+ "definima.io",
+ "dynv6.net",
+ "e4.cz",
+ "enonic.io",
+ "customer.enonic.io",
+ "eu.org",
+ "al.eu.org",
+ "asso.eu.org",
+ "at.eu.org",
+ "au.eu.org",
+ "be.eu.org",
+ "bg.eu.org",
+ "ca.eu.org",
+ "cd.eu.org",
+ "ch.eu.org",
+ "cn.eu.org",
+ "cy.eu.org",
+ "cz.eu.org",
+ "de.eu.org",
+ "dk.eu.org",
+ "edu.eu.org",
+ "ee.eu.org",
+ "es.eu.org",
+ "fi.eu.org",
+ "fr.eu.org",
+ "gr.eu.org",
+ "hr.eu.org",
+ "hu.eu.org",
+ "ie.eu.org",
+ "il.eu.org",
+ "in.eu.org",
+ "int.eu.org",
+ "is.eu.org",
+ "it.eu.org",
+ "jp.eu.org",
+ "kr.eu.org",
+ "lt.eu.org",
+ "lu.eu.org",
+ "lv.eu.org",
+ "mc.eu.org",
+ "me.eu.org",
+ "mk.eu.org",
+ "mt.eu.org",
+ "my.eu.org",
+ "net.eu.org",
+ "ng.eu.org",
+ "nl.eu.org",
+ "no.eu.org",
+ "nz.eu.org",
+ "paris.eu.org",
+ "pl.eu.org",
+ "pt.eu.org",
+ "q-a.eu.org",
+ "ro.eu.org",
+ "ru.eu.org",
+ "se.eu.org",
+ "si.eu.org",
+ "sk.eu.org",
+ "tr.eu.org",
+ "uk.eu.org",
+ "us.eu.org",
+ "eu-1.evennode.com",
+ "eu-2.evennode.com",
+ "eu-3.evennode.com",
+ "us-1.evennode.com",
+ "us-2.evennode.com",
+ "us-3.evennode.com",
+ "twmail.cc",
+ "twmail.net",
+ "twmail.org",
+ "mymailer.com.tw",
+ "url.tw",
+ "apps.fbsbx.com",
+ "ru.net",
+ "adygeya.ru",
+ "bashkiria.ru",
+ "bir.ru",
+ "cbg.ru",
+ "com.ru",
+ "dagestan.ru",
+ "grozny.ru",
+ "kalmykia.ru",
+ "kustanai.ru",
+ "marine.ru",
+ "mordovia.ru",
+ "msk.ru",
+ "mytis.ru",
+ "nalchik.ru",
+ "nov.ru",
+ "pyatigorsk.ru",
+ "spb.ru",
+ "vladikavkaz.ru",
+ "vladimir.ru",
+ "abkhazia.su",
+ "adygeya.su",
+ "aktyubinsk.su",
+ "arkhangelsk.su",
+ "armenia.su",
+ "ashgabad.su",
+ "azerbaijan.su",
+ "balashov.su",
+ "bashkiria.su",
+ "bryansk.su",
+ "bukhara.su",
+ "chimkent.su",
+ "dagestan.su",
+ "east-kazakhstan.su",
+ "exnet.su",
+ "georgia.su",
+ "grozny.su",
+ "ivanovo.su",
+ "jambyl.su",
+ "kalmykia.su",
+ "kaluga.su",
+ "karacol.su",
+ "karaganda.su",
+ "karelia.su",
+ "khakassia.su",
+ "krasnodar.su",
+ "kurgan.su",
+ "kustanai.su",
+ "lenug.su",
+ "mangyshlak.su",
+ "mordovia.su",
+ "msk.su",
+ "murmansk.su",
+ "nalchik.su",
+ "navoi.su",
+ "north-kazakhstan.su",
+ "nov.su",
+ "obninsk.su",
+ "penza.su",
+ "pokrovsk.su",
+ "sochi.su",
+ "spb.su",
+ "tashkent.su",
+ "termez.su",
+ "togliatti.su",
+ "troitsk.su",
+ "tselinograd.su",
+ "tula.su",
+ "tuva.su",
+ "vladikavkaz.su",
+ "vladimir.su",
+ "vologda.su",
+ "fastlylb.net",
+ "map.fastlylb.net",
+ "freetls.fastly.net",
+ "map.fastly.net",
+ "a.prod.fastly.net",
+ "global.prod.fastly.net",
+ "a.ssl.fastly.net",
+ "b.ssl.fastly.net",
+ "global.ssl.fastly.net",
+ "fhapp.xyz",
+ "fedorainfracloud.org",
+ "fedorapeople.org",
+ "cloud.fedoraproject.org",
+ "filegear.me",
+ "firebaseapp.com",
+ "flynnhub.com",
+ "freebox-os.com",
+ "freeboxos.com",
+ "fbx-os.fr",
+ "fbxos.fr",
+ "freebox-os.fr",
+ "freeboxos.fr",
+ "myfusion.cloud",
+ "futurehosting.at",
+ "futuremailing.at",
+ "*.ex.ortsinfo.at",
+ "*.kunden.ortsinfo.at",
+ "*.statics.cloud",
+ "service.gov.uk",
+ "github.io",
+ "githubusercontent.com",
+ "githubcloud.com",
+ "*.api.githubcloud.com",
+ "*.ext.githubcloud.com",
+ "gist.githubcloud.com",
+ "*.githubcloudusercontent.com",
+ "gitlab.io",
+ "homeoffice.gov.uk",
+ "ro.im",
+ "shop.ro",
+ "goip.de",
+ "*.0emm.com",
+ "appspot.com",
+ "blogspot.ae",
+ "blogspot.al",
+ "blogspot.am",
+ "blogspot.ba",
+ "blogspot.be",
+ "blogspot.bg",
+ "blogspot.bj",
+ "blogspot.ca",
+ "blogspot.cf",
+ "blogspot.ch",
+ "blogspot.cl",
+ "blogspot.co.at",
+ "blogspot.co.id",
+ "blogspot.co.il",
+ "blogspot.co.ke",
+ "blogspot.co.nz",
+ "blogspot.co.uk",
+ "blogspot.co.za",
+ "blogspot.com",
+ "blogspot.com.ar",
+ "blogspot.com.au",
+ "blogspot.com.br",
+ "blogspot.com.by",
+ "blogspot.com.co",
+ "blogspot.com.cy",
+ "blogspot.com.ee",
+ "blogspot.com.eg",
+ "blogspot.com.es",
+ "blogspot.com.mt",
+ "blogspot.com.ng",
+ "blogspot.com.tr",
+ "blogspot.com.uy",
+ "blogspot.cv",
+ "blogspot.cz",
+ "blogspot.de",
+ "blogspot.dk",
+ "blogspot.fi",
+ "blogspot.fr",
+ "blogspot.gr",
+ "blogspot.hk",
+ "blogspot.hr",
+ "blogspot.hu",
+ "blogspot.ie",
+ "blogspot.in",
+ "blogspot.is",
+ "blogspot.it",
+ "blogspot.jp",
+ "blogspot.kr",
+ "blogspot.li",
+ "blogspot.lt",
+ "blogspot.lu",
+ "blogspot.md",
+ "blogspot.mk",
+ "blogspot.mr",
+ "blogspot.mx",
+ "blogspot.my",
+ "blogspot.nl",
+ "blogspot.no",
+ "blogspot.pe",
+ "blogspot.pt",
+ "blogspot.qa",
+ "blogspot.re",
+ "blogspot.ro",
+ "blogspot.rs",
+ "blogspot.ru",
+ "blogspot.se",
+ "blogspot.sg",
+ "blogspot.si",
+ "blogspot.sk",
+ "blogspot.sn",
+ "blogspot.td",
+ "blogspot.tw",
+ "blogspot.ug",
+ "blogspot.vn",
+ "cloudfunctions.net",
+ "cloud.goog",
+ "codespot.com",
+ "googleapis.com",
+ "googlecode.com",
+ "pagespeedmobilizer.com",
+ "publishproxy.com",
+ "withgoogle.com",
+ "withyoutube.com",
+ "hashbang.sh",
+ "hasura-app.io",
+ "hepforge.org",
+ "herokuapp.com",
+ "herokussl.com",
+ "moonscale.net",
+ "iki.fi",
+ "biz.at",
+ "info.at",
+ "ac.leg.br",
+ "al.leg.br",
+ "am.leg.br",
+ "ap.leg.br",
+ "ba.leg.br",
+ "ce.leg.br",
+ "df.leg.br",
+ "es.leg.br",
+ "go.leg.br",
+ "ma.leg.br",
+ "mg.leg.br",
+ "ms.leg.br",
+ "mt.leg.br",
+ "pa.leg.br",
+ "pb.leg.br",
+ "pe.leg.br",
+ "pi.leg.br",
+ "pr.leg.br",
+ "rj.leg.br",
+ "rn.leg.br",
+ "ro.leg.br",
+ "rr.leg.br",
+ "rs.leg.br",
+ "sc.leg.br",
+ "se.leg.br",
+ "sp.leg.br",
+ "to.leg.br",
+ "ipifony.net",
+ "*.triton.zone",
+ "*.cns.joyent.com",
+ "js.org",
+ "keymachine.de",
+ "knightpoint.systems",
+ "co.krd",
+ "edu.krd",
+ "barsy.bg",
+ "barsyonline.com",
+ "barsy.de",
+ "barsy.eu",
+ "barsy.in",
+ "barsy.net",
+ "barsy.online",
+ "barsy.support",
+ "*.magentosite.cloud",
+ "hb.cldmail.ru",
+ "meteorapp.com",
+ "eu.meteorapp.com",
+ "co.pl",
+ "azurewebsites.net",
+ "azure-mobile.net",
+ "cloudapp.net",
+ "bmoattachments.org",
+ "4u.com",
+ "ngrok.io",
+ "nfshost.com",
+ "nsupdate.info",
+ "nerdpol.ovh",
+ "blogsyte.com",
+ "brasilia.me",
+ "cable-modem.org",
+ "ciscofreak.com",
+ "collegefan.org",
+ "couchpotatofries.org",
+ "damnserver.com",
+ "ddns.me",
+ "ditchyourip.com",
+ "dnsfor.me",
+ "dnsiskinky.com",
+ "dvrcam.info",
+ "dynns.com",
+ "eating-organic.net",
+ "fantasyleague.cc",
+ "geekgalaxy.com",
+ "golffan.us",
+ "health-carereform.com",
+ "homesecuritymac.com",
+ "homesecuritypc.com",
+ "hopto.me",
+ "ilovecollege.info",
+ "loginto.me",
+ "mlbfan.org",
+ "mmafan.biz",
+ "myactivedirectory.com",
+ "mydissent.net",
+ "myeffect.net",
+ "mymediapc.net",
+ "mypsx.net",
+ "mysecuritycamera.com",
+ "mysecuritycamera.net",
+ "mysecuritycamera.org",
+ "net-freaks.com",
+ "nflfan.org",
+ "nhlfan.net",
+ "no-ip.ca",
+ "no-ip.co.uk",
+ "no-ip.net",
+ "noip.us",
+ "onthewifi.com",
+ "pgafan.net",
+ "point2this.com",
+ "pointto.us",
+ "privatizehealthinsurance.net",
+ "quicksytes.com",
+ "read-books.org",
+ "securitytactics.com",
+ "serveexchange.com",
+ "servehumour.com",
+ "servep2p.com",
+ "servesarcasm.com",
+ "stufftoread.com",
+ "ufcfan.org",
+ "unusualperson.com",
+ "workisboring.com",
+ "3utilities.com",
+ "bounceme.net",
+ "ddns.net",
+ "ddnsking.com",
+ "gotdns.ch",
+ "hopto.org",
+ "myftp.biz",
+ "myftp.org",
+ "myvnc.com",
+ "no-ip.biz",
+ "no-ip.info",
+ "no-ip.org",
+ "noip.me",
+ "redirectme.net",
+ "servebeer.com",
+ "serveblog.net",
+ "servecounterstrike.com",
+ "serveftp.com",
+ "servegame.com",
+ "servehalflife.com",
+ "servehttp.com",
+ "serveirc.com",
+ "serveminecraft.net",
+ "servemp3.com",
+ "servepics.com",
+ "servequake.com",
+ "sytes.net",
+ "webhop.me",
+ "zapto.org",
+ "nodum.co",
+ "nodum.io",
+ "nyc.mn",
+ "cya.gg",
+ "nid.io",
+ "opencraft.hosting",
+ "operaunite.com",
+ "outsystemscloud.com",
+ "ownprovider.com",
+ "oy.lc",
+ "pgfog.com",
+ "pagefrontapp.com",
+ "art.pl",
+ "gliwice.pl",
+ "krakow.pl",
+ "poznan.pl",
+ "wroc.pl",
+ "zakopane.pl",
+ "pantheonsite.io",
+ "gotpantheon.com",
+ "mypep.link",
+ "on-web.fr",
+ "*.platform.sh",
+ "*.platformsh.site",
+ "xen.prgmr.com",
+ "priv.at",
+ "protonet.io",
+ "chirurgiens-dentistes-en-france.fr",
+ "qa2.com",
+ "dev-myqnapcloud.com",
+ "alpha-myqnapcloud.com",
+ "myqnapcloud.com",
+ "*.quipelements.com",
+ "vapor.cloud",
+ "vaporcloud.io",
+ "rackmaze.com",
+ "rackmaze.net",
+ "rhcloud.com",
+ "hzc.io",
+ "wellbeingzone.eu",
+ "ptplus.fit",
+ "wellbeingzone.co.uk",
+ "sandcats.io",
+ "logoip.de",
+ "logoip.com",
+ "firewall-gateway.com",
+ "firewall-gateway.de",
+ "my-gateway.de",
+ "my-router.de",
+ "spdns.de",
+ "spdns.eu",
+ "firewall-gateway.net",
+ "my-firewall.org",
+ "myfirewall.org",
+ "spdns.org",
+ "*.sensiosite.cloud",
+ "biz.ua",
+ "co.ua",
+ "pp.ua",
+ "shiftedit.io",
+ "myshopblocks.com",
+ "1kapp.com",
+ "appchizi.com",
+ "applinzi.com",
+ "sinaapp.com",
+ "vipsinaapp.com",
+ "bounty-full.com",
+ "alpha.bounty-full.com",
+ "beta.bounty-full.com",
+ "static.land",
+ "dev.static.land",
+ "sites.static.land",
+ "apps.lair.io",
+ "*.stolos.io",
+ "spacekit.io",
+ "stackspace.space",
+ "storj.farm",
+ "diskstation.me",
+ "dscloud.biz",
+ "dscloud.me",
+ "dscloud.mobi",
+ "dsmynas.com",
+ "dsmynas.net",
+ "dsmynas.org",
+ "familyds.com",
+ "familyds.net",
+ "familyds.org",
+ "i234.me",
+ "myds.me",
+ "synology.me",
+ "vpnplus.to",
+ "taifun-dns.de",
+ "gda.pl",
+ "gdansk.pl",
+ "gdynia.pl",
+ "med.pl",
+ "sopot.pl",
+ "bloxcms.com",
+ "townnews-staging.com",
+ "*.transurl.be",
+ "*.transurl.eu",
+ "*.transurl.nl",
+ "tuxfamily.org",
+ "dd-dns.de",
+ "diskstation.eu",
+ "diskstation.org",
+ "dray-dns.de",
+ "draydns.de",
+ "dyn-vpn.de",
+ "dynvpn.de",
+ "mein-vigor.de",
+ "my-vigor.de",
+ "my-wan.de",
+ "syno-ds.de",
+ "synology-diskstation.de",
+ "synology-ds.de",
+ "uber.space",
+ "hk.com",
+ "hk.org",
+ "ltd.hk",
+ "inc.hk",
+ "lib.de.us",
+ "router.management",
+ "wedeploy.io",
+ "wedeploy.me",
+ "remotewd.com",
+ "wmflabs.org",
+ "xs4all.space",
+ "yolasite.com",
+ "ybo.faith",
+ "yombo.me",
+ "homelink.one",
+ "ybo.party",
+ "ybo.review",
+ "ybo.science",
+ "ybo.trade",
+ "za.net",
+ "za.org",
+ "now.sh",
+}
+
+var nodeLabels = [...]string{
+ "aaa",
+ "aarp",
+ "abarth",
+ "abb",
+ "abbott",
+ "abbvie",
+ "abc",
+ "able",
+ "abogado",
+ "abudhabi",
+ "ac",
+ "academy",
+ "accenture",
+ "accountant",
+ "accountants",
+ "aco",
+ "active",
+ "actor",
+ "ad",
+ "adac",
+ "ads",
+ "adult",
+ "ae",
+ "aeg",
+ "aero",
+ "aetna",
+ "af",
+ "afamilycompany",
+ "afl",
+ "africa",
+ "ag",
+ "agakhan",
+ "agency",
+ "ai",
+ "aig",
+ "aigo",
+ "airbus",
+ "airforce",
+ "airtel",
+ "akdn",
+ "al",
+ "alfaromeo",
+ "alibaba",
+ "alipay",
+ "allfinanz",
+ "allstate",
+ "ally",
+ "alsace",
+ "alstom",
+ "am",
+ "americanexpress",
+ "americanfamily",
+ "amex",
+ "amfam",
+ "amica",
+ "amsterdam",
+ "analytics",
+ "android",
+ "anquan",
+ "anz",
+ "ao",
+ "aol",
+ "apartments",
+ "app",
+ "apple",
+ "aq",
+ "aquarelle",
+ "ar",
+ "arab",
+ "aramco",
+ "archi",
+ "army",
+ "arpa",
+ "art",
+ "arte",
+ "as",
+ "asda",
+ "asia",
+ "associates",
+ "at",
+ "athleta",
+ "attorney",
+ "au",
+ "auction",
+ "audi",
+ "audible",
+ "audio",
+ "auspost",
+ "author",
+ "auto",
+ "autos",
+ "avianca",
+ "aw",
+ "aws",
+ "ax",
+ "axa",
+ "az",
+ "azure",
+ "ba",
+ "baby",
+ "baidu",
+ "banamex",
+ "bananarepublic",
+ "band",
+ "bank",
+ "bar",
+ "barcelona",
+ "barclaycard",
+ "barclays",
+ "barefoot",
+ "bargains",
+ "baseball",
+ "basketball",
+ "bauhaus",
+ "bayern",
+ "bb",
+ "bbc",
+ "bbt",
+ "bbva",
+ "bcg",
+ "bcn",
+ "bd",
+ "be",
+ "beats",
+ "beauty",
+ "beer",
+ "bentley",
+ "berlin",
+ "best",
+ "bestbuy",
+ "bet",
+ "bf",
+ "bg",
+ "bh",
+ "bharti",
+ "bi",
+ "bible",
+ "bid",
+ "bike",
+ "bing",
+ "bingo",
+ "bio",
+ "biz",
+ "bj",
+ "black",
+ "blackfriday",
+ "blanco",
+ "blockbuster",
+ "blog",
+ "bloomberg",
+ "blue",
+ "bm",
+ "bms",
+ "bmw",
+ "bn",
+ "bnl",
+ "bnpparibas",
+ "bo",
+ "boats",
+ "boehringer",
+ "bofa",
+ "bom",
+ "bond",
+ "boo",
+ "book",
+ "booking",
+ "boots",
+ "bosch",
+ "bostik",
+ "boston",
+ "bot",
+ "boutique",
+ "box",
+ "br",
+ "bradesco",
+ "bridgestone",
+ "broadway",
+ "broker",
+ "brother",
+ "brussels",
+ "bs",
+ "bt",
+ "budapest",
+ "bugatti",
+ "build",
+ "builders",
+ "business",
+ "buy",
+ "buzz",
+ "bv",
+ "bw",
+ "by",
+ "bz",
+ "bzh",
+ "ca",
+ "cab",
+ "cafe",
+ "cal",
+ "call",
+ "calvinklein",
+ "cam",
+ "camera",
+ "camp",
+ "cancerresearch",
+ "canon",
+ "capetown",
+ "capital",
+ "capitalone",
+ "car",
+ "caravan",
+ "cards",
+ "care",
+ "career",
+ "careers",
+ "cars",
+ "cartier",
+ "casa",
+ "case",
+ "caseih",
+ "cash",
+ "casino",
+ "cat",
+ "catering",
+ "catholic",
+ "cba",
+ "cbn",
+ "cbre",
+ "cbs",
+ "cc",
+ "cd",
+ "ceb",
+ "center",
+ "ceo",
+ "cern",
+ "cf",
+ "cfa",
+ "cfd",
+ "cg",
+ "ch",
+ "chanel",
+ "channel",
+ "chase",
+ "chat",
+ "cheap",
+ "chintai",
+ "chloe",
+ "christmas",
+ "chrome",
+ "chrysler",
+ "church",
+ "ci",
+ "cipriani",
+ "circle",
+ "cisco",
+ "citadel",
+ "citi",
+ "citic",
+ "city",
+ "cityeats",
+ "ck",
+ "cl",
+ "claims",
+ "cleaning",
+ "click",
+ "clinic",
+ "clinique",
+ "clothing",
+ "cloud",
+ "club",
+ "clubmed",
+ "cm",
+ "cn",
+ "co",
+ "coach",
+ "codes",
+ "coffee",
+ "college",
+ "cologne",
+ "com",
+ "comcast",
+ "commbank",
+ "community",
+ "company",
+ "compare",
+ "computer",
+ "comsec",
+ "condos",
+ "construction",
+ "consulting",
+ "contact",
+ "contractors",
+ "cooking",
+ "cookingchannel",
+ "cool",
+ "coop",
+ "corsica",
+ "country",
+ "coupon",
+ "coupons",
+ "courses",
+ "cr",
+ "credit",
+ "creditcard",
+ "creditunion",
+ "cricket",
+ "crown",
+ "crs",
+ "cruise",
+ "cruises",
+ "csc",
+ "cu",
+ "cuisinella",
+ "cv",
+ "cw",
+ "cx",
+ "cy",
+ "cymru",
+ "cyou",
+ "cz",
+ "dabur",
+ "dad",
+ "dance",
+ "data",
+ "date",
+ "dating",
+ "datsun",
+ "day",
+ "dclk",
+ "dds",
+ "de",
+ "deal",
+ "dealer",
+ "deals",
+ "degree",
+ "delivery",
+ "dell",
+ "deloitte",
+ "delta",
+ "democrat",
+ "dental",
+ "dentist",
+ "desi",
+ "design",
+ "dev",
+ "dhl",
+ "diamonds",
+ "diet",
+ "digital",
+ "direct",
+ "directory",
+ "discount",
+ "discover",
+ "dish",
+ "diy",
+ "dj",
+ "dk",
+ "dm",
+ "dnp",
+ "do",
+ "docs",
+ "doctor",
+ "dodge",
+ "dog",
+ "doha",
+ "domains",
+ "dot",
+ "download",
+ "drive",
+ "dtv",
+ "dubai",
+ "duck",
+ "dunlop",
+ "duns",
+ "dupont",
+ "durban",
+ "dvag",
+ "dvr",
+ "dz",
+ "earth",
+ "eat",
+ "ec",
+ "eco",
+ "edeka",
+ "edu",
+ "education",
+ "ee",
+ "eg",
+ "email",
+ "emerck",
+ "energy",
+ "engineer",
+ "engineering",
+ "enterprises",
+ "epost",
+ "epson",
+ "equipment",
+ "er",
+ "ericsson",
+ "erni",
+ "es",
+ "esq",
+ "estate",
+ "esurance",
+ "et",
+ "etisalat",
+ "eu",
+ "eurovision",
+ "eus",
+ "events",
+ "everbank",
+ "exchange",
+ "expert",
+ "exposed",
+ "express",
+ "extraspace",
+ "fage",
+ "fail",
+ "fairwinds",
+ "faith",
+ "family",
+ "fan",
+ "fans",
+ "farm",
+ "farmers",
+ "fashion",
+ "fast",
+ "fedex",
+ "feedback",
+ "ferrari",
+ "ferrero",
+ "fi",
+ "fiat",
+ "fidelity",
+ "fido",
+ "film",
+ "final",
+ "finance",
+ "financial",
+ "fire",
+ "firestone",
+ "firmdale",
+ "fish",
+ "fishing",
+ "fit",
+ "fitness",
+ "fj",
+ "fk",
+ "flickr",
+ "flights",
+ "flir",
+ "florist",
+ "flowers",
+ "fly",
+ "fm",
+ "fo",
+ "foo",
+ "food",
+ "foodnetwork",
+ "football",
+ "ford",
+ "forex",
+ "forsale",
+ "forum",
+ "foundation",
+ "fox",
+ "fr",
+ "free",
+ "fresenius",
+ "frl",
+ "frogans",
+ "frontdoor",
+ "frontier",
+ "ftr",
+ "fujitsu",
+ "fujixerox",
+ "fun",
+ "fund",
+ "furniture",
+ "futbol",
+ "fyi",
+ "ga",
+ "gal",
+ "gallery",
+ "gallo",
+ "gallup",
+ "game",
+ "games",
+ "gap",
+ "garden",
+ "gb",
+ "gbiz",
+ "gd",
+ "gdn",
+ "ge",
+ "gea",
+ "gent",
+ "genting",
+ "george",
+ "gf",
+ "gg",
+ "ggee",
+ "gh",
+ "gi",
+ "gift",
+ "gifts",
+ "gives",
+ "giving",
+ "gl",
+ "glade",
+ "glass",
+ "gle",
+ "global",
+ "globo",
+ "gm",
+ "gmail",
+ "gmbh",
+ "gmo",
+ "gmx",
+ "gn",
+ "godaddy",
+ "gold",
+ "goldpoint",
+ "golf",
+ "goo",
+ "goodhands",
+ "goodyear",
+ "goog",
+ "google",
+ "gop",
+ "got",
+ "gov",
+ "gp",
+ "gq",
+ "gr",
+ "grainger",
+ "graphics",
+ "gratis",
+ "green",
+ "gripe",
+ "grocery",
+ "group",
+ "gs",
+ "gt",
+ "gu",
+ "guardian",
+ "gucci",
+ "guge",
+ "guide",
+ "guitars",
+ "guru",
+ "gw",
+ "gy",
+ "hair",
+ "hamburg",
+ "hangout",
+ "haus",
+ "hbo",
+ "hdfc",
+ "hdfcbank",
+ "health",
+ "healthcare",
+ "help",
+ "helsinki",
+ "here",
+ "hermes",
+ "hgtv",
+ "hiphop",
+ "hisamitsu",
+ "hitachi",
+ "hiv",
+ "hk",
+ "hkt",
+ "hm",
+ "hn",
+ "hockey",
+ "holdings",
+ "holiday",
+ "homedepot",
+ "homegoods",
+ "homes",
+ "homesense",
+ "honda",
+ "honeywell",
+ "horse",
+ "hospital",
+ "host",
+ "hosting",
+ "hot",
+ "hoteles",
+ "hotels",
+ "hotmail",
+ "house",
+ "how",
+ "hr",
+ "hsbc",
+ "ht",
+ "htc",
+ "hu",
+ "hughes",
+ "hyatt",
+ "hyundai",
+ "ibm",
+ "icbc",
+ "ice",
+ "icu",
+ "id",
+ "ie",
+ "ieee",
+ "ifm",
+ "ikano",
+ "il",
+ "im",
+ "imamat",
+ "imdb",
+ "immo",
+ "immobilien",
+ "in",
+ "industries",
+ "infiniti",
+ "info",
+ "ing",
+ "ink",
+ "institute",
+ "insurance",
+ "insure",
+ "int",
+ "intel",
+ "international",
+ "intuit",
+ "investments",
+ "io",
+ "ipiranga",
+ "iq",
+ "ir",
+ "irish",
+ "is",
+ "iselect",
+ "ismaili",
+ "ist",
+ "istanbul",
+ "it",
+ "itau",
+ "itv",
+ "iveco",
+ "iwc",
+ "jaguar",
+ "java",
+ "jcb",
+ "jcp",
+ "je",
+ "jeep",
+ "jetzt",
+ "jewelry",
+ "jio",
+ "jlc",
+ "jll",
+ "jm",
+ "jmp",
+ "jnj",
+ "jo",
+ "jobs",
+ "joburg",
+ "jot",
+ "joy",
+ "jp",
+ "jpmorgan",
+ "jprs",
+ "juegos",
+ "juniper",
+ "kaufen",
+ "kddi",
+ "ke",
+ "kerryhotels",
+ "kerrylogistics",
+ "kerryproperties",
+ "kfh",
+ "kg",
+ "kh",
+ "ki",
+ "kia",
+ "kim",
+ "kinder",
+ "kindle",
+ "kitchen",
+ "kiwi",
+ "km",
+ "kn",
+ "koeln",
+ "komatsu",
+ "kosher",
+ "kp",
+ "kpmg",
+ "kpn",
+ "kr",
+ "krd",
+ "kred",
+ "kuokgroup",
+ "kw",
+ "ky",
+ "kyoto",
+ "kz",
+ "la",
+ "lacaixa",
+ "ladbrokes",
+ "lamborghini",
+ "lamer",
+ "lancaster",
+ "lancia",
+ "lancome",
+ "land",
+ "landrover",
+ "lanxess",
+ "lasalle",
+ "lat",
+ "latino",
+ "latrobe",
+ "law",
+ "lawyer",
+ "lb",
+ "lc",
+ "lds",
+ "lease",
+ "leclerc",
+ "lefrak",
+ "legal",
+ "lego",
+ "lexus",
+ "lgbt",
+ "li",
+ "liaison",
+ "lidl",
+ "life",
+ "lifeinsurance",
+ "lifestyle",
+ "lighting",
+ "like",
+ "lilly",
+ "limited",
+ "limo",
+ "lincoln",
+ "linde",
+ "link",
+ "lipsy",
+ "live",
+ "living",
+ "lixil",
+ "lk",
+ "loan",
+ "loans",
+ "locker",
+ "locus",
+ "loft",
+ "lol",
+ "london",
+ "lotte",
+ "lotto",
+ "love",
+ "lpl",
+ "lplfinancial",
+ "lr",
+ "ls",
+ "lt",
+ "ltd",
+ "ltda",
+ "lu",
+ "lundbeck",
+ "lupin",
+ "luxe",
+ "luxury",
+ "lv",
+ "ly",
+ "ma",
+ "macys",
+ "madrid",
+ "maif",
+ "maison",
+ "makeup",
+ "man",
+ "management",
+ "mango",
+ "map",
+ "market",
+ "marketing",
+ "markets",
+ "marriott",
+ "marshalls",
+ "maserati",
+ "mattel",
+ "mba",
+ "mc",
+ "mcd",
+ "mcdonalds",
+ "mckinsey",
+ "md",
+ "me",
+ "med",
+ "media",
+ "meet",
+ "melbourne",
+ "meme",
+ "memorial",
+ "men",
+ "menu",
+ "meo",
+ "merckmsd",
+ "metlife",
+ "mg",
+ "mh",
+ "miami",
+ "microsoft",
+ "mil",
+ "mini",
+ "mint",
+ "mit",
+ "mitsubishi",
+ "mk",
+ "ml",
+ "mlb",
+ "mls",
+ "mm",
+ "mma",
+ "mn",
+ "mo",
+ "mobi",
+ "mobile",
+ "mobily",
+ "moda",
+ "moe",
+ "moi",
+ "mom",
+ "monash",
+ "money",
+ "monster",
+ "montblanc",
+ "mopar",
+ "mormon",
+ "mortgage",
+ "moscow",
+ "moto",
+ "motorcycles",
+ "mov",
+ "movie",
+ "movistar",
+ "mp",
+ "mq",
+ "mr",
+ "ms",
+ "msd",
+ "mt",
+ "mtn",
+ "mtpc",
+ "mtr",
+ "mu",
+ "museum",
+ "mutual",
+ "mv",
+ "mw",
+ "mx",
+ "my",
+ "mz",
+ "na",
+ "nab",
+ "nadex",
+ "nagoya",
+ "name",
+ "nationwide",
+ "natura",
+ "navy",
+ "nba",
+ "nc",
+ "ne",
+ "nec",
+ "net",
+ "netbank",
+ "netflix",
+ "network",
+ "neustar",
+ "new",
+ "newholland",
+ "news",
+ "next",
+ "nextdirect",
+ "nexus",
+ "nf",
+ "nfl",
+ "ng",
+ "ngo",
+ "nhk",
+ "ni",
+ "nico",
+ "nike",
+ "nikon",
+ "ninja",
+ "nissan",
+ "nissay",
+ "nl",
+ "no",
+ "nokia",
+ "northwesternmutual",
+ "norton",
+ "now",
+ "nowruz",
+ "nowtv",
+ "np",
+ "nr",
+ "nra",
+ "nrw",
+ "ntt",
+ "nu",
+ "nyc",
+ "nz",
+ "obi",
+ "observer",
+ "off",
+ "office",
+ "okinawa",
+ "olayan",
+ "olayangroup",
+ "oldnavy",
+ "ollo",
+ "om",
+ "omega",
+ "one",
+ "ong",
+ "onion",
+ "onl",
+ "online",
+ "onyourside",
+ "ooo",
+ "open",
+ "oracle",
+ "orange",
+ "org",
+ "organic",
+ "origins",
+ "osaka",
+ "otsuka",
+ "ott",
+ "ovh",
+ "pa",
+ "page",
+ "pamperedchef",
+ "panasonic",
+ "panerai",
+ "paris",
+ "pars",
+ "partners",
+ "parts",
+ "party",
+ "passagens",
+ "pay",
+ "pccw",
+ "pe",
+ "pet",
+ "pf",
+ "pfizer",
+ "pg",
+ "ph",
+ "pharmacy",
+ "phd",
+ "philips",
+ "phone",
+ "photo",
+ "photography",
+ "photos",
+ "physio",
+ "piaget",
+ "pics",
+ "pictet",
+ "pictures",
+ "pid",
+ "pin",
+ "ping",
+ "pink",
+ "pioneer",
+ "pizza",
+ "pk",
+ "pl",
+ "place",
+ "play",
+ "playstation",
+ "plumbing",
+ "plus",
+ "pm",
+ "pn",
+ "pnc",
+ "pohl",
+ "poker",
+ "politie",
+ "porn",
+ "post",
+ "pr",
+ "pramerica",
+ "praxi",
+ "press",
+ "prime",
+ "pro",
+ "prod",
+ "productions",
+ "prof",
+ "progressive",
+ "promo",
+ "properties",
+ "property",
+ "protection",
+ "pru",
+ "prudential",
+ "ps",
+ "pt",
+ "pub",
+ "pw",
+ "pwc",
+ "py",
+ "qa",
+ "qpon",
+ "quebec",
+ "quest",
+ "qvc",
+ "racing",
+ "radio",
+ "raid",
+ "re",
+ "read",
+ "realestate",
+ "realtor",
+ "realty",
+ "recipes",
+ "red",
+ "redstone",
+ "redumbrella",
+ "rehab",
+ "reise",
+ "reisen",
+ "reit",
+ "reliance",
+ "ren",
+ "rent",
+ "rentals",
+ "repair",
+ "report",
+ "republican",
+ "rest",
+ "restaurant",
+ "review",
+ "reviews",
+ "rexroth",
+ "rich",
+ "richardli",
+ "ricoh",
+ "rightathome",
+ "ril",
+ "rio",
+ "rip",
+ "rmit",
+ "ro",
+ "rocher",
+ "rocks",
+ "rodeo",
+ "rogers",
+ "room",
+ "rs",
+ "rsvp",
+ "ru",
+ "rugby",
+ "ruhr",
+ "run",
+ "rw",
+ "rwe",
+ "ryukyu",
+ "sa",
+ "saarland",
+ "safe",
+ "safety",
+ "sakura",
+ "sale",
+ "salon",
+ "samsclub",
+ "samsung",
+ "sandvik",
+ "sandvikcoromant",
+ "sanofi",
+ "sap",
+ "sapo",
+ "sarl",
+ "sas",
+ "save",
+ "saxo",
+ "sb",
+ "sbi",
+ "sbs",
+ "sc",
+ "sca",
+ "scb",
+ "schaeffler",
+ "schmidt",
+ "scholarships",
+ "school",
+ "schule",
+ "schwarz",
+ "science",
+ "scjohnson",
+ "scor",
+ "scot",
+ "sd",
+ "se",
+ "search",
+ "seat",
+ "secure",
+ "security",
+ "seek",
+ "select",
+ "sener",
+ "services",
+ "ses",
+ "seven",
+ "sew",
+ "sex",
+ "sexy",
+ "sfr",
+ "sg",
+ "sh",
+ "shangrila",
+ "sharp",
+ "shaw",
+ "shell",
+ "shia",
+ "shiksha",
+ "shoes",
+ "shop",
+ "shopping",
+ "shouji",
+ "show",
+ "showtime",
+ "shriram",
+ "si",
+ "silk",
+ "sina",
+ "singles",
+ "site",
+ "sj",
+ "sk",
+ "ski",
+ "skin",
+ "sky",
+ "skype",
+ "sl",
+ "sling",
+ "sm",
+ "smart",
+ "smile",
+ "sn",
+ "sncf",
+ "so",
+ "soccer",
+ "social",
+ "softbank",
+ "software",
+ "sohu",
+ "solar",
+ "solutions",
+ "song",
+ "sony",
+ "soy",
+ "space",
+ "spiegel",
+ "spot",
+ "spreadbetting",
+ "sr",
+ "srl",
+ "srt",
+ "st",
+ "stada",
+ "staples",
+ "star",
+ "starhub",
+ "statebank",
+ "statefarm",
+ "statoil",
+ "stc",
+ "stcgroup",
+ "stockholm",
+ "storage",
+ "store",
+ "stream",
+ "studio",
+ "study",
+ "style",
+ "su",
+ "sucks",
+ "supplies",
+ "supply",
+ "support",
+ "surf",
+ "surgery",
+ "suzuki",
+ "sv",
+ "swatch",
+ "swiftcover",
+ "swiss",
+ "sx",
+ "sy",
+ "sydney",
+ "symantec",
+ "systems",
+ "sz",
+ "tab",
+ "taipei",
+ "talk",
+ "taobao",
+ "target",
+ "tatamotors",
+ "tatar",
+ "tattoo",
+ "tax",
+ "taxi",
+ "tc",
+ "tci",
+ "td",
+ "tdk",
+ "team",
+ "tech",
+ "technology",
+ "tel",
+ "telecity",
+ "telefonica",
+ "temasek",
+ "tennis",
+ "teva",
+ "tf",
+ "tg",
+ "th",
+ "thd",
+ "theater",
+ "theatre",
+ "tiaa",
+ "tickets",
+ "tienda",
+ "tiffany",
+ "tips",
+ "tires",
+ "tirol",
+ "tj",
+ "tjmaxx",
+ "tjx",
+ "tk",
+ "tkmaxx",
+ "tl",
+ "tm",
+ "tmall",
+ "tn",
+ "to",
+ "today",
+ "tokyo",
+ "tools",
+ "top",
+ "toray",
+ "toshiba",
+ "total",
+ "tours",
+ "town",
+ "toyota",
+ "toys",
+ "tr",
+ "trade",
+ "trading",
+ "training",
+ "travel",
+ "travelchannel",
+ "travelers",
+ "travelersinsurance",
+ "trust",
+ "trv",
+ "tt",
+ "tube",
+ "tui",
+ "tunes",
+ "tushu",
+ "tv",
+ "tvs",
+ "tw",
+ "tz",
+ "ua",
+ "ubank",
+ "ubs",
+ "uconnect",
+ "ug",
+ "uk",
+ "unicom",
+ "university",
+ "uno",
+ "uol",
+ "ups",
+ "us",
+ "uy",
+ "uz",
+ "va",
+ "vacations",
+ "vana",
+ "vanguard",
+ "vc",
+ "ve",
+ "vegas",
+ "ventures",
+ "verisign",
+ "versicherung",
+ "vet",
+ "vg",
+ "vi",
+ "viajes",
+ "video",
+ "vig",
+ "viking",
+ "villas",
+ "vin",
+ "vip",
+ "virgin",
+ "visa",
+ "vision",
+ "vista",
+ "vistaprint",
+ "viva",
+ "vivo",
+ "vlaanderen",
+ "vn",
+ "vodka",
+ "volkswagen",
+ "volvo",
+ "vote",
+ "voting",
+ "voto",
+ "voyage",
+ "vu",
+ "vuelos",
+ "wales",
+ "walmart",
+ "walter",
+ "wang",
+ "wanggou",
+ "warman",
+ "watch",
+ "watches",
+ "weather",
+ "weatherchannel",
+ "webcam",
+ "weber",
+ "website",
+ "wed",
+ "wedding",
+ "weibo",
+ "weir",
+ "wf",
+ "whoswho",
+ "wien",
+ "wiki",
+ "williamhill",
+ "win",
+ "windows",
+ "wine",
+ "winners",
+ "wme",
+ "wolterskluwer",
+ "woodside",
+ "work",
+ "works",
+ "world",
+ "wow",
+ "ws",
+ "wtc",
+ "wtf",
+ "xbox",
+ "xerox",
+ "xfinity",
+ "xihuan",
+ "xin",
+ "xn--11b4c3d",
+ "xn--1ck2e1b",
+ "xn--1qqw23a",
+ "xn--30rr7y",
+ "xn--3bst00m",
+ "xn--3ds443g",
+ "xn--3e0b707e",
+ "xn--3oq18vl8pn36a",
+ "xn--3pxu8k",
+ "xn--42c2d9a",
+ "xn--45brj9c",
+ "xn--45q11c",
+ "xn--4gbrim",
+ "xn--54b7fta0cc",
+ "xn--55qw42g",
+ "xn--55qx5d",
+ "xn--5su34j936bgsg",
+ "xn--5tzm5g",
+ "xn--6frz82g",
+ "xn--6qq986b3xl",
+ "xn--80adxhks",
+ "xn--80ao21a",
+ "xn--80aqecdr1a",
+ "xn--80asehdb",
+ "xn--80aswg",
+ "xn--8y0a063a",
+ "xn--90a3ac",
+ "xn--90ais",
+ "xn--9dbq2a",
+ "xn--9et52u",
+ "xn--9krt00a",
+ "xn--b4w605ferd",
+ "xn--bck1b9a5dre4c",
+ "xn--c1avg",
+ "xn--c2br7g",
+ "xn--cck2b3b",
+ "xn--cg4bki",
+ "xn--clchc0ea0b2g2a9gcd",
+ "xn--czr694b",
+ "xn--czrs0t",
+ "xn--czru2d",
+ "xn--d1acj3b",
+ "xn--d1alf",
+ "xn--e1a4c",
+ "xn--eckvdtc9d",
+ "xn--efvy88h",
+ "xn--estv75g",
+ "xn--fct429k",
+ "xn--fhbei",
+ "xn--fiq228c5hs",
+ "xn--fiq64b",
+ "xn--fiqs8s",
+ "xn--fiqz9s",
+ "xn--fjq720a",
+ "xn--flw351e",
+ "xn--fpcrj9c3d",
+ "xn--fzc2c9e2c",
+ "xn--fzys8d69uvgm",
+ "xn--g2xx48c",
+ "xn--gckr3f0f",
+ "xn--gecrj9c",
+ "xn--gk3at1e",
+ "xn--h2brj9c",
+ "xn--hxt814e",
+ "xn--i1b6b1a6a2e",
+ "xn--imr513n",
+ "xn--io0a7i",
+ "xn--j1aef",
+ "xn--j1amh",
+ "xn--j6w193g",
+ "xn--jlq61u9w7b",
+ "xn--jvr189m",
+ "xn--kcrx77d1x4a",
+ "xn--kprw13d",
+ "xn--kpry57d",
+ "xn--kpu716f",
+ "xn--kput3i",
+ "xn--l1acc",
+ "xn--lgbbat1ad8j",
+ "xn--mgb2ddes",
+ "xn--mgb9awbf",
+ "xn--mgba3a3ejt",
+ "xn--mgba3a4f16a",
+ "xn--mgba3a4fra",
+ "xn--mgba7c0bbn0a",
+ "xn--mgbaakc7dvf",
+ "xn--mgbaam7a8h",
+ "xn--mgbab2bd",
+ "xn--mgbai9a5eva00b",
+ "xn--mgbai9azgqp6j",
+ "xn--mgbayh7gpa",
+ "xn--mgbb9fbpob",
+ "xn--mgbbh1a71e",
+ "xn--mgbc0a9azcg",
+ "xn--mgbca7dzdo",
+ "xn--mgberp4a5d4a87g",
+ "xn--mgberp4a5d4ar",
+ "xn--mgbi4ecexp",
+ "xn--mgbpl2fh",
+ "xn--mgbqly7c0a67fbc",
+ "xn--mgbqly7cvafr",
+ "xn--mgbt3dhd",
+ "xn--mgbtf8fl",
+ "xn--mgbtx2b",
+ "xn--mgbx4cd0ab",
+ "xn--mix082f",
+ "xn--mix891f",
+ "xn--mk1bu44c",
+ "xn--mxtq1m",
+ "xn--ngbc5azd",
+ "xn--ngbe9e0a",
+ "xn--ngbrx",
+ "xn--nnx388a",
+ "xn--node",
+ "xn--nqv7f",
+ "xn--nqv7fs00ema",
+ "xn--nyqy26a",
+ "xn--o3cw4h",
+ "xn--ogbpf8fl",
+ "xn--p1acf",
+ "xn--p1ai",
+ "xn--pbt977c",
+ "xn--pgbs0dh",
+ "xn--pssy2u",
+ "xn--q9jyb4c",
+ "xn--qcka1pmc",
+ "xn--qxam",
+ "xn--rhqv96g",
+ "xn--rovu88b",
+ "xn--s9brj9c",
+ "xn--ses554g",
+ "xn--t60b56a",
+ "xn--tckwe",
+ "xn--tiq49xqyj",
+ "xn--unup4y",
+ "xn--vermgensberater-ctb",
+ "xn--vermgensberatung-pwb",
+ "xn--vhquv",
+ "xn--vuq861b",
+ "xn--w4r85el8fhu5dnra",
+ "xn--w4rs40l",
+ "xn--wgbh1c",
+ "xn--wgbl6a",
+ "xn--xhq521b",
+ "xn--xkc2al3hye2a",
+ "xn--xkc2dl3a5ee0h",
+ "xn--y9a3aq",
+ "xn--yfro4i67o",
+ "xn--ygbi2ammx",
+ "xn--zfr164b",
+ "xperia",
+ "xxx",
+ "xyz",
+ "yachts",
+ "yahoo",
+ "yamaxun",
+ "yandex",
+ "ye",
+ "yodobashi",
+ "yoga",
+ "yokohama",
+ "you",
+ "youtube",
+ "yt",
+ "yun",
+ "za",
+ "zappos",
+ "zara",
+ "zero",
+ "zip",
+ "zippo",
+ "zm",
+ "zone",
+ "zuerich",
+ "zw",
+ "com",
+ "edu",
+ "gov",
+ "mil",
+ "net",
+ "org",
+ "nom",
+ "ac",
+ "blogspot",
+ "co",
+ "gov",
+ "mil",
+ "net",
+ "org",
+ "sch",
+ "accident-investigation",
+ "accident-prevention",
+ "aerobatic",
+ "aeroclub",
+ "aerodrome",
+ "agents",
+ "air-surveillance",
+ "air-traffic-control",
+ "aircraft",
+ "airline",
+ "airport",
+ "airtraffic",
+ "ambulance",
+ "amusement",
+ "association",
+ "author",
+ "ballooning",
+ "broker",
+ "caa",
+ "cargo",
+ "catering",
+ "certification",
+ "championship",
+ "charter",
+ "civilaviation",
+ "club",
+ "conference",
+ "consultant",
+ "consulting",
+ "control",
+ "council",
+ "crew",
+ "design",
+ "dgca",
+ "educator",
+ "emergency",
+ "engine",
+ "engineer",
+ "entertainment",
+ "equipment",
+ "exchange",
+ "express",
+ "federation",
+ "flight",
+ "freight",
+ "fuel",
+ "gliding",
+ "government",
+ "groundhandling",
+ "group",
+ "hanggliding",
+ "homebuilt",
+ "insurance",
+ "journal",
+ "journalist",
+ "leasing",
+ "logistics",
+ "magazine",
+ "maintenance",
+ "media",
+ "microlight",
+ "modelling",
+ "navigation",
+ "parachuting",
+ "paragliding",
+ "passenger-association",
+ "pilot",
+ "press",
+ "production",
+ "recreation",
+ "repbody",
+ "res",
+ "research",
+ "rotorcraft",
+ "safety",
+ "scientist",
+ "services",
+ "show",
+ "skydiving",
+ "software",
+ "student",
+ "trader",
+ "trading",
+ "trainer",
+ "union",
+ "workinggroup",
+ "works",
+ "com",
+ "edu",
+ "gov",
+ "net",
+ "org",
+ "co",
+ "com",
+ "net",
+ "nom",
+ "org",
+ "com",
+ "net",
+ "off",
+ "org",
+ "blogspot",
+ "com",
+ "edu",
+ "gov",
+ "mil",
+ "net",
+ "org",
+ "blogspot",
+ "co",
+ "ed",
+ "gv",
+ "it",
+ "og",
+ "pb",
+ "com",
+ "edu",
+ "gob",
+ "gov",
+ "int",
+ "mil",
+ "musica",
+ "net",
+ "org",
+ "tur",
+ "blogspot",
+ "e164",
+ "in-addr",
+ "ip6",
+ "iris",
+ "uri",
+ "urn",
+ "gov",
+ "cloudns",
+ "ac",
+ "biz",
+ "co",
+ "futurehosting",
+ "futuremailing",
+ "gv",
+ "info",
+ "or",
+ "ortsinfo",
+ "priv",
+ "blogspot",
+ "ex",
+ "kunden",
+ "act",
+ "asn",
+ "com",
+ "conf",
+ "edu",
+ "gov",
+ "id",
+ "info",
+ "net",
+ "nsw",
+ "nt",
+ "org",
+ "oz",
+ "qld",
+ "sa",
+ "tas",
+ "vic",
+ "wa",
+ "blogspot",
+ "act",
+ "nsw",
+ "nt",
+ "qld",
+ "sa",
+ "tas",
+ "vic",
+ "wa",
+ "qld",
+ "sa",
+ "tas",
+ "vic",
+ "wa",
+ "com",
+ "biz",
+ "com",
+ "edu",
+ "gov",
+ "info",
+ "int",
+ "mil",
+ "name",
+ "net",
+ "org",
+ "pp",
+ "pro",
+ "blogspot",
+ "com",
+ "edu",
+ "gov",
+ "mil",
+ "net",
+ "org",
+ "biz",
+ "co",
+ "com",
+ "edu",
+ "gov",
+ "info",
+ "net",
+ "org",
+ "store",
+ "tv",
+ "ac",
+ "blogspot",
+ "transurl",
+ "gov",
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9",
+ "a",
+ "b",
+ "barsy",
+ "blogspot",
+ "c",
+ "d",
+ "e",
+ "f",
+ "g",
+ "h",
+ "i",
+ "j",
+ "k",
+ "l",
+ "m",
+ "n",
+ "o",
+ "p",
+ "q",
+ "r",
+ "s",
+ "t",
+ "u",
+ "v",
+ "w",
+ "x",
+ "y",
+ "z",
+ "com",
+ "edu",
+ "gov",
+ "net",
+ "org",
+ "co",
+ "com",
+ "edu",
+ "or",
+ "org",
+ "cloudns",
+ "dscloud",
+ "dyndns",
+ "for-better",
+ "for-more",
+ "for-some",
+ "for-the",
+ "mmafan",
+ "myftp",
+ "no-ip",
+ "selfip",
+ "webhop",
+ "asso",
+ "barreau",
+ "blogspot",
+ "gouv",
+ "com",
+ "edu",
+ "gov",
+ "net",
+ "org",
+ "com",
+ "edu",
+ "gob",
+ "gov",
+ "int",
+ "mil",
+ "net",
+ "org",
+ "tv",
+ "adm",
+ "adv",
+ "agr",
+ "am",
+ "arq",
+ "art",
+ "ato",
+ "b",
+ "belem",
+ "bio",
+ "blog",
+ "bmd",
+ "cim",
+ "cng",
+ "cnt",
+ "com",
+ "coop",
+ "cri",
+ "def",
+ "ecn",
+ "eco",
+ "edu",
+ "emp",
+ "eng",
+ "esp",
+ "etc",
+ "eti",
+ "far",
+ "flog",
+ "floripa",
+ "fm",
+ "fnd",
+ "fot",
+ "fst",
+ "g12",
+ "ggf",
+ "gov",
+ "imb",
+ "ind",
+ "inf",
+ "jampa",
+ "jor",
+ "jus",
+ "leg",
+ "lel",
+ "mat",
+ "med",
+ "mil",
+ "mp",
+ "mus",
+ "net",
+ "nom",
+ "not",
+ "ntr",
+ "odo",
+ "org",
+ "poa",
+ "ppg",
+ "pro",
+ "psc",
+ "psi",
+ "qsl",
+ "radio",
+ "rec",
+ "recife",
+ "slg",
+ "srv",
+ "taxi",
+ "teo",
+ "tmp",
+ "trd",
+ "tur",
+ "tv",
+ "vet",
+ "vix",
+ "vlog",
+ "wiki",
+ "zlg",
+ "blogspot",
+ "ac",
+ "al",
+ "am",
+ "ap",
+ "ba",
+ "ce",
+ "df",
+ "es",
+ "go",
+ "ma",
+ "mg",
+ "ms",
+ "mt",
+ "pa",
+ "pb",
+ "pe",
+ "pi",
+ "pr",
+ "rj",
+ "rn",
+ "ro",
+ "rr",
+ "rs",
+ "sc",
+ "se",
+ "sp",
+ "to",
+ "ac",
+ "al",
+ "am",
+ "ap",
+ "ba",
+ "ce",
+ "df",
+ "es",
+ "go",
+ "ma",
+ "mg",
+ "ms",
+ "mt",
+ "pa",
+ "pb",
+ "pe",
+ "pi",
+ "pr",
+ "rj",
+ "rn",
+ "ro",
+ "rr",
+ "rs",
+ "sc",
+ "se",
+ "sp",
+ "to",
+ "com",
+ "edu",
+ "gov",
+ "net",
+ "org",
+ "com",
+ "edu",
+ "gov",
+ "net",
+ "org",
+ "co",
+ "org",
+ "com",
+ "gov",
+ "mil",
+ "of",
+ "blogspot",
+ "com",
+ "edu",
+ "gov",
+ "net",
+ "org",
+ "za",
+ "ab",
+ "awdev",
+ "bc",
+ "blogspot",
+ "co",
+ "gc",
+ "mb",
+ "nb",
+ "nf",
+ "nl",
+ "no-ip",
+ "ns",
+ "nt",
+ "nu",
+ "on",
+ "pe",
+ "qc",
+ "sk",
+ "yk",
+ "cloudns",
+ "fantasyleague",
+ "ftpaccess",
+ "game-server",
+ "myphotos",
+ "scrapping",
+ "twmail",
+ "gov",
+ "blogspot",
+ "blogspot",
+ "gotdns",
+ "square7",
+ "ac",
+ "asso",
+ "co",
+ "com",
+ "ed",
+ "edu",
+ "go",
+ "gouv",
+ "int",
+ "md",
+ "net",
+ "or",
+ "org",
+ "presse",
+ "xn--aroport-bya",
+ "www",
+ "blogspot",
+ "co",
+ "gob",
+ "gov",
+ "mil",
+ "magentosite",
+ "myfusion",
+ "sensiosite",
+ "statics",
+ "vapor",
+ "cloudns",
+ "co",
+ "com",
+ "gov",
+ "net",
+ "ac",
+ "ah",
+ "bj",
+ "com",
+ "cq",
+ "edu",
+ "fj",
+ "gd",
+ "gov",
+ "gs",
+ "gx",
+ "gz",
+ "ha",
+ "hb",
+ "he",
+ "hi",
+ "hk",
+ "hl",
+ "hn",
+ "jl",
+ "js",
+ "jx",
+ "ln",
+ "mil",
+ "mo",
+ "net",
+ "nm",
+ "nx",
+ "org",
+ "qh",
+ "sc",
+ "sd",
+ "sh",
+ "sn",
+ "sx",
+ "tj",
+ "tw",
+ "xj",
+ "xn--55qx5d",
+ "xn--io0a7i",
+ "xn--od0alg",
+ "xz",
+ "yn",
+ "zj",
+ "amazonaws",
+ "cn-north-1",
+ "compute",
+ "elb",
+ "elasticbeanstalk",
+ "s3",
+ "arts",
+ "com",
+ "edu",
+ "firm",
+ "gov",
+ "info",
+ "int",
+ "mil",
+ "net",
+ "nodum",
+ "nom",
+ "org",
+ "rec",
+ "web",
+ "blogspot",
+ "0emm",
+ "1kapp",
+ "3utilities",
+ "4u",
+ "africa",
+ "alpha-myqnapcloud",
+ "amazonaws",
+ "appchizi",
+ "applinzi",
+ "appspot",
+ "ar",
+ "barsyonline",
+ "betainabox",
+ "blogdns",
+ "blogspot",
+ "blogsyte",
+ "bloxcms",
+ "bounty-full",
+ "bplaced",
+ "br",
+ "cechire",
+ "ciscofreak",
+ "cloudcontrolapp",
+ "cloudcontrolled",
+ "cn",
+ "co",
+ "codespot",
+ "damnserver",
+ "ddnsking",
+ "de",
+ "dev-myqnapcloud",
+ "ditchyourip",
+ "dnsalias",
+ "dnsdojo",
+ "dnsiskinky",
+ "doesntexist",
+ "dontexist",
+ "doomdns",
+ "dreamhosters",
+ "dsmynas",
+ "dyn-o-saur",
+ "dynalias",
+ "dyndns-at-home",
+ "dyndns-at-work",
+ "dyndns-blog",
+ "dyndns-free",
+ "dyndns-home",
+ "dyndns-ip",
+ "dyndns-mail",
+ "dyndns-office",
+ "dyndns-pics",
+ "dyndns-remote",
+ "dyndns-server",
+ "dyndns-web",
+ "dyndns-wiki",
+ "dyndns-work",
+ "dynns",
+ "elasticbeanstalk",
+ "est-a-la-maison",
+ "est-a-la-masion",
+ "est-le-patron",
+ "est-mon-blogueur",
+ "eu",
+ "evennode",
+ "familyds",
+ "fbsbx",
+ "firebaseapp",
+ "firewall-gateway",
+ "flynnhub",
+ "freebox-os",
+ "freeboxos",
+ "from-ak",
+ "from-al",
+ "from-ar",
+ "from-ca",
+ "from-ct",
+ "from-dc",
+ "from-de",
+ "from-fl",
+ "from-ga",
+ "from-hi",
+ "from-ia",
+ "from-id",
+ "from-il",
+ "from-in",
+ "from-ks",
+ "from-ky",
+ "from-ma",
+ "from-md",
+ "from-mi",
+ "from-mn",
+ "from-mo",
+ "from-ms",
+ "from-mt",
+ "from-nc",
+ "from-nd",
+ "from-ne",
+ "from-nh",
+ "from-nj",
+ "from-nm",
+ "from-nv",
+ "from-oh",
+ "from-ok",
+ "from-or",
+ "from-pa",
+ "from-pr",
+ "from-ri",
+ "from-sc",
+ "from-sd",
+ "from-tn",
+ "from-tx",
+ "from-ut",
+ "from-va",
+ "from-vt",
+ "from-wa",
+ "from-wi",
+ "from-wv",
+ "from-wy",
+ "gb",
+ "geekgalaxy",
+ "getmyip",
+ "githubcloud",
+ "githubcloudusercontent",
+ "githubusercontent",
+ "googleapis",
+ "googlecode",
+ "gotdns",
+ "gotpantheon",
+ "gr",
+ "health-carereform",
+ "herokuapp",
+ "herokussl",
+ "hk",
+ "hobby-site",
+ "homelinux",
+ "homesecuritymac",
+ "homesecuritypc",
+ "homeunix",
+ "hu",
+ "iamallama",
+ "is-a-anarchist",
+ "is-a-blogger",
+ "is-a-bookkeeper",
+ "is-a-bulls-fan",
+ "is-a-caterer",
+ "is-a-chef",
+ "is-a-conservative",
+ "is-a-cpa",
+ "is-a-cubicle-slave",
+ "is-a-democrat",
+ "is-a-designer",
+ "is-a-doctor",
+ "is-a-financialadvisor",
+ "is-a-geek",
+ "is-a-green",
+ "is-a-guru",
+ "is-a-hard-worker",
+ "is-a-hunter",
+ "is-a-landscaper",
+ "is-a-lawyer",
+ "is-a-liberal",
+ "is-a-libertarian",
+ "is-a-llama",
+ "is-a-musician",
+ "is-a-nascarfan",
+ "is-a-nurse",
+ "is-a-painter",
+ "is-a-personaltrainer",
+ "is-a-photographer",
+ "is-a-player",
+ "is-a-republican",
+ "is-a-rockstar",
+ "is-a-socialist",
+ "is-a-student",
+ "is-a-teacher",
+ "is-a-techie",
+ "is-a-therapist",
+ "is-an-accountant",
+ "is-an-actor",
+ "is-an-actress",
+ "is-an-anarchist",
+ "is-an-artist",
+ "is-an-engineer",
+ "is-an-entertainer",
+ "is-certified",
+ "is-gone",
+ "is-into-anime",
+ "is-into-cars",
+ "is-into-cartoons",
+ "is-into-games",
+ "is-leet",
+ "is-not-certified",
+ "is-slick",
+ "is-uberleet",
+ "is-with-theband",
+ "isa-geek",
+ "isa-hockeynut",
+ "issmarterthanyou",
+ "joyent",
+ "jpn",
+ "kr",
+ "likes-pie",
+ "likescandy",
+ "logoip",
+ "meteorapp",
+ "mex",
+ "myactivedirectory",
+ "myasustor",
+ "mydrobo",
+ "myqnapcloud",
+ "mysecuritycamera",
+ "myshopblocks",
+ "myvnc",
+ "neat-url",
+ "net-freaks",
+ "nfshost",
+ "no",
+ "on-aptible",
+ "onthewifi",
+ "operaunite",
+ "outsystemscloud",
+ "ownprovider",
+ "pagefrontapp",
+ "pagespeedmobilizer",
+ "pgfog",
+ "point2this",
+ "prgmr",
+ "publishproxy",
+ "qa2",
+ "qc",
+ "quicksytes",
+ "quipelements",
+ "rackmaze",
+ "remotewd",
+ "rhcloud",
+ "ru",
+ "sa",
+ "saves-the-whales",
+ "se",
+ "securitytactics",
+ "selfip",
+ "sells-for-less",
+ "sells-for-u",
+ "servebbs",
+ "servebeer",
+ "servecounterstrike",
+ "serveexchange",
+ "serveftp",
+ "servegame",
+ "servehalflife",
+ "servehttp",
+ "servehumour",
+ "serveirc",
+ "servemp3",
+ "servep2p",
+ "servepics",
+ "servequake",
+ "servesarcasm",
+ "simple-url",
+ "sinaapp",
+ "space-to-rent",
+ "stufftoread",
+ "teaches-yoga",
+ "townnews-staging",
+ "uk",
+ "unusualperson",
+ "us",
+ "uy",
+ "vipsinaapp",
+ "withgoogle",
+ "withyoutube",
+ "workisboring",
+ "writesthisblog",
+ "xenapponazure",
+ "yolasite",
+ "za",
+ "ap-northeast-1",
+ "ap-northeast-2",
+ "ap-south-1",
+ "ap-southeast-1",
+ "ap-southeast-2",
+ "ca-central-1",
+ "compute",
+ "compute-1",
+ "elb",
+ "eu-central-1",
+ "eu-west-1",
+ "eu-west-2",
+ "s3",
+ "s3-ap-northeast-1",
+ "s3-ap-northeast-2",
+ "s3-ap-south-1",
+ "s3-ap-southeast-1",
+ "s3-ap-southeast-2",
+ "s3-ca-central-1",
+ "s3-eu-central-1",
+ "s3-eu-west-1",
+ "s3-eu-west-2",
+ "s3-external-1",
+ "s3-fips-us-gov-west-1",
+ "s3-sa-east-1",
+ "s3-us-east-2",
+ "s3-us-gov-west-1",
+ "s3-us-west-1",
+ "s3-us-west-2",
+ "s3-website-ap-northeast-1",
+ "s3-website-ap-southeast-1",
+ "s3-website-ap-southeast-2",
+ "s3-website-eu-west-1",
+ "s3-website-sa-east-1",
+ "s3-website-us-east-1",
+ "s3-website-us-west-1",
+ "s3-website-us-west-2",
+ "sa-east-1",
+ "us-east-1",
+ "us-east-2",
+ "dualstack",
+ "s3",
+ "dualstack",
+ "s3",
+ "s3-website",
+ "s3",
+ "dualstack",
+ "s3",
+ "s3-website",
+ "s3",
+ "dualstack",
+ "s3",
+ "dualstack",
+ "s3",
+ "dualstack",
+ "s3",
+ "s3-website",
+ "s3",
+ "dualstack",
+ "s3",
+ "s3-website",
+ "s3",
+ "dualstack",
+ "s3",
+ "dualstack",
+ "s3",
+ "s3-website",
+ "s3",
+ "dualstack",
+ "s3",
+ "dualstack",
+ "s3",
+ "dualstack",
+ "s3",
+ "s3-website",
+ "s3",
+ "alpha",
+ "beta",
+ "eu-1",
+ "eu-2",
+ "eu-3",
+ "us-1",
+ "us-2",
+ "us-3",
+ "apps",
+ "api",
+ "ext",
+ "gist",
+ "cns",
+ "eu",
+ "xen",
+ "ac",
+ "co",
+ "ed",
+ "fi",
+ "go",
+ "or",
+ "sa",
+ "com",
+ "edu",
+ "gov",
+ "inf",
+ "net",
+ "org",
+ "blogspot",
+ "com",
+ "edu",
+ "net",
+ "org",
+ "ath",
+ "gov",
+ "ac",
+ "biz",
+ "com",
+ "ekloges",
+ "gov",
+ "ltd",
+ "name",
+ "net",
+ "org",
+ "parliament",
+ "press",
+ "pro",
+ "tm",
+ "blogspot",
+ "blogspot",
+ "co",
+ "e4",
+ "realm",
+ "barsy",
+ "blogspot",
+ "bplaced",
+ "com",
+ "cosidns",
+ "dd-dns",
+ "ddnss",
+ "dnshome",
+ "dnsupdater",
+ "dray-dns",
+ "draydns",
+ "dyn-ip24",
+ "dyn-vpn",
+ "dynamisches-dns",
+ "dyndns1",
+ "dynvpn",
+ "firewall-gateway",
+ "fuettertdasnetz",
+ "goip",
+ "home-webserver",
+ "internet-dns",
+ "isteingeek",
+ "istmein",
+ "keymachine",
+ "l-o-g-i-n",
+ "lebtimnetz",
+ "leitungsen",
+ "logoip",
+ "mein-vigor",
+ "my-gateway",
+ "my-router",
+ "my-vigor",
+ "my-wan",
+ "myhome-server",
+ "spdns",
+ "square7",
+ "syno-ds",
+ "synology-diskstation",
+ "synology-ds",
+ "taifun-dns",
+ "traeumtgerade",
+ "dyn",
+ "dyn",
+ "dyndns",
+ "dyn",
+ "biz",
+ "blogspot",
+ "co",
+ "firm",
+ "reg",
+ "store",
+ "com",
+ "edu",
+ "gov",
+ "net",
+ "org",
+ "art",
+ "com",
+ "edu",
+ "gob",
+ "gov",
+ "mil",
+ "net",
+ "org",
+ "sld",
+ "web",
+ "art",
+ "asso",
+ "com",
+ "edu",
+ "gov",
+ "net",
+ "org",
+ "pol",
+ "com",
+ "edu",
+ "fin",
+ "gob",
+ "gov",
+ "info",
+ "k12",
+ "med",
+ "mil",
+ "net",
+ "org",
+ "pro",
+ "aip",
+ "com",
+ "edu",
+ "fie",
+ "gov",
+ "lib",
+ "med",
+ "org",
+ "pri",
+ "riik",
+ "blogspot",
+ "com",
+ "edu",
+ "eun",
+ "gov",
+ "mil",
+ "name",
+ "net",
+ "org",
+ "sci",
+ "blogspot",
+ "com",
+ "edu",
+ "gob",
+ "nom",
+ "org",
+ "blogspot",
+ "compute",
+ "biz",
+ "com",
+ "edu",
+ "gov",
+ "info",
+ "name",
+ "net",
+ "org",
+ "barsy",
+ "cloudns",
+ "diskstation",
+ "mycd",
+ "spdns",
+ "transurl",
+ "wellbeingzone",
+ "party",
+ "user",
+ "ybo",
+ "storj",
+ "aland",
+ "blogspot",
+ "dy",
+ "iki",
+ "ptplus",
+ "aeroport",
+ "assedic",
+ "asso",
+ "avocat",
+ "avoues",
+ "blogspot",
+ "cci",
+ "chambagri",
+ "chirurgiens-dentistes",
+ "chirurgiens-dentistes-en-france",
+ "com",
+ "experts-comptables",
+ "fbx-os",
+ "fbxos",
+ "freebox-os",
+ "freeboxos",
+ "geometre-expert",
+ "gouv",
+ "greta",
+ "huissier-justice",
+ "medecin",
+ "nom",
+ "notaires",
+ "on-web",
+ "pharmacien",
+ "port",
+ "prd",
+ "presse",
+ "tm",
+ "veterinaire",
+ "com",
+ "edu",
+ "gov",
+ "mil",
+ "net",
+ "org",
+ "pvt",
+ "co",
+ "cya",
+ "net",
+ "org",
+ "com",
+ "edu",
+ "gov",
+ "mil",
+ "org",
+ "com",
+ "edu",
+ "gov",
+ "ltd",
+ "mod",
+ "org",
+ "co",
+ "com",
+ "edu",
+ "net",
+ "org",
+ "ac",
+ "com",
+ "edu",
+ "gov",
+ "net",
+ "org",
+ "cloud",
+ "asso",
+ "com",
+ "edu",
+ "mobi",
+ "net",
+ "org",
+ "blogspot",
+ "com",
+ "edu",
+ "gov",
+ "net",
+ "org",
+ "com",
+ "edu",
+ "gob",
+ "ind",
+ "mil",
+ "net",
+ "org",
+ "co",
+ "com",
+ "edu",
+ "gov",
+ "net",
+ "org",
+ "blogspot",
+ "com",
+ "edu",
+ "gov",
+ "idv",
+ "inc",
+ "ltd",
+ "net",
+ "org",
+ "xn--55qx5d",
+ "xn--ciqpn",
+ "xn--gmq050i",
+ "xn--gmqw5a",
+ "xn--io0a7i",
+ "xn--lcvr32d",
+ "xn--mk0axi",
+ "xn--mxtq1m",
+ "xn--od0alg",
+ "xn--od0aq3b",
+ "xn--tn0ag",
+ "xn--uc0atv",
+ "xn--uc0ay4a",
+ "xn--wcvs22d",
+ "xn--zf0avx",
+ "com",
+ "edu",
+ "gob",
+ "mil",
+ "net",
+ "org",
+ "opencraft",
+ "blogspot",
+ "com",
+ "from",
+ "iz",
+ "name",
+ "adult",
+ "art",
+ "asso",
+ "com",
+ "coop",
+ "edu",
+ "firm",
+ "gouv",
+ "info",
+ "med",
+ "net",
+ "org",
+ "perso",
+ "pol",
+ "pro",
+ "rel",
+ "shop",
+ "2000",
+ "agrar",
+ "blogspot",
+ "bolt",
+ "casino",
+ "city",
+ "co",
+ "erotica",
+ "erotika",
+ "film",
+ "forum",
+ "games",
+ "hotel",
+ "info",
+ "ingatlan",
+ "jogasz",
+ "konyvelo",
+ "lakas",
+ "media",
+ "news",
+ "org",
+ "priv",
+ "reklam",
+ "sex",
+ "shop",
+ "sport",
+ "suli",
+ "szex",
+ "tm",
+ "tozsde",
+ "utazas",
+ "video",
+ "ac",
+ "biz",
+ "co",
+ "desa",
+ "go",
+ "mil",
+ "my",
+ "net",
+ "or",
+ "sch",
+ "web",
+ "blogspot",
+ "blogspot",
+ "gov",
+ "ac",
+ "co",
+ "gov",
+ "idf",
+ "k12",
+ "muni",
+ "net",
+ "org",
+ "blogspot",
+ "ac",
+ "co",
+ "com",
+ "net",
+ "org",
+ "ro",
+ "tt",
+ "tv",
+ "ltd",
+ "plc",
+ "ac",
+ "barsy",
+ "blogspot",
+ "cloudns",
+ "co",
+ "edu",
+ "firm",
+ "gen",
+ "gov",
+ "ind",
+ "mil",
+ "net",
+ "nic",
+ "org",
+ "res",
+ "barrel-of-knowledge",
+ "barrell-of-knowledge",
+ "cloudns",
+ "dvrcam",
+ "dynamic-dns",
+ "dyndns",
+ "for-our",
+ "groks-the",
+ "groks-this",
+ "here-for-more",
+ "ilovecollege",
+ "knowsitall",
+ "no-ip",
+ "nsupdate",
+ "selfip",
+ "webhop",
+ "eu",
+ "backplaneapp",
+ "boxfuse",
+ "browsersafetymark",
+ "com",
+ "dedyn",
+ "definima",
+ "drud",
+ "enonic",
+ "github",
+ "gitlab",
+ "hasura-app",
+ "hzc",
+ "lair",
+ "ngrok",
+ "nid",
+ "nodum",
+ "pantheonsite",
+ "protonet",
+ "sandcats",
+ "shiftedit",
+ "spacekit",
+ "stolos",
+ "vaporcloud",
+ "wedeploy",
+ "customer",
+ "apps",
+ "com",
+ "edu",
+ "gov",
+ "mil",
+ "net",
+ "org",
+ "ac",
+ "co",
+ "gov",
+ "id",
+ "net",
+ "org",
+ "sch",
+ "xn--mgba3a4f16a",
+ "xn--mgba3a4fra",
+ "blogspot",
+ "com",
+ "cupcake",
+ "edu",
+ "gov",
+ "int",
+ "net",
+ "org",
+ "abr",
+ "abruzzo",
+ "ag",
+ "agrigento",
+ "al",
+ "alessandria",
+ "alto-adige",
+ "altoadige",
+ "an",
+ "ancona",
+ "andria-barletta-trani",
+ "andria-trani-barletta",
+ "andriabarlettatrani",
+ "andriatranibarletta",
+ "ao",
+ "aosta",
+ "aosta-valley",
+ "aostavalley",
+ "aoste",
+ "ap",
+ "aq",
+ "aquila",
+ "ar",
+ "arezzo",
+ "ascoli-piceno",
+ "ascolipiceno",
+ "asti",
+ "at",
+ "av",
+ "avellino",
+ "ba",
+ "balsan",
+ "bari",
+ "barletta-trani-andria",
+ "barlettatraniandria",
+ "bas",
+ "basilicata",
+ "belluno",
+ "benevento",
+ "bergamo",
+ "bg",
+ "bi",
+ "biella",
+ "bl",
+ "blogspot",
+ "bn",
+ "bo",
+ "bologna",
+ "bolzano",
+ "bozen",
+ "br",
+ "brescia",
+ "brindisi",
+ "bs",
+ "bt",
+ "bz",
+ "ca",
+ "cagliari",
+ "cal",
+ "calabria",
+ "caltanissetta",
+ "cam",
+ "campania",
+ "campidano-medio",
+ "campidanomedio",
+ "campobasso",
+ "carbonia-iglesias",
+ "carboniaiglesias",
+ "carrara-massa",
+ "carraramassa",
+ "caserta",
+ "catania",
+ "catanzaro",
+ "cb",
+ "ce",
+ "cesena-forli",
+ "cesenaforli",
+ "ch",
+ "chieti",
+ "ci",
+ "cl",
+ "cn",
+ "co",
+ "como",
+ "cosenza",
+ "cr",
+ "cremona",
+ "crotone",
+ "cs",
+ "ct",
+ "cuneo",
+ "cz",
+ "dell-ogliastra",
+ "dellogliastra",
+ "edu",
+ "emilia-romagna",
+ "emiliaromagna",
+ "emr",
+ "en",
+ "enna",
+ "fc",
+ "fe",
+ "fermo",
+ "ferrara",
+ "fg",
+ "fi",
+ "firenze",
+ "florence",
+ "fm",
+ "foggia",
+ "forli-cesena",
+ "forlicesena",
+ "fr",
+ "friuli-v-giulia",
+ "friuli-ve-giulia",
+ "friuli-vegiulia",
+ "friuli-venezia-giulia",
+ "friuli-veneziagiulia",
+ "friuli-vgiulia",
+ "friuliv-giulia",
+ "friulive-giulia",
+ "friulivegiulia",
+ "friulivenezia-giulia",
+ "friuliveneziagiulia",
+ "friulivgiulia",
+ "frosinone",
+ "fvg",
+ "ge",
+ "genoa",
+ "genova",
+ "go",
+ "gorizia",
+ "gov",
+ "gr",
+ "grosseto",
+ "iglesias-carbonia",
+ "iglesiascarbonia",
+ "im",
+ "imperia",
+ "is",
+ "isernia",
+ "kr",
+ "la-spezia",
+ "laquila",
+ "laspezia",
+ "latina",
+ "laz",
+ "lazio",
+ "lc",
+ "le",
+ "lecce",
+ "lecco",
+ "li",
+ "lig",
+ "liguria",
+ "livorno",
+ "lo",
+ "lodi",
+ "lom",
+ "lombardia",
+ "lombardy",
+ "lt",
+ "lu",
+ "lucania",
+ "lucca",
+ "macerata",
+ "mantova",
+ "mar",
+ "marche",
+ "massa-carrara",
+ "massacarrara",
+ "matera",
+ "mb",
+ "mc",
+ "me",
+ "medio-campidano",
+ "mediocampidano",
+ "messina",
+ "mi",
+ "milan",
+ "milano",
+ "mn",
+ "mo",
+ "modena",
+ "mol",
+ "molise",
+ "monza",
+ "monza-brianza",
+ "monza-e-della-brianza",
+ "monzabrianza",
+ "monzaebrianza",
+ "monzaedellabrianza",
+ "ms",
+ "mt",
+ "na",
+ "naples",
+ "napoli",
+ "no",
+ "novara",
+ "nu",
+ "nuoro",
+ "og",
+ "ogliastra",
+ "olbia-tempio",
+ "olbiatempio",
+ "or",
+ "oristano",
+ "ot",
+ "pa",
+ "padova",
+ "padua",
+ "palermo",
+ "parma",
+ "pavia",
+ "pc",
+ "pd",
+ "pe",
+ "perugia",
+ "pesaro-urbino",
+ "pesarourbino",
+ "pescara",
+ "pg",
+ "pi",
+ "piacenza",
+ "piedmont",
+ "piemonte",
+ "pisa",
+ "pistoia",
+ "pmn",
+ "pn",
+ "po",
+ "pordenone",
+ "potenza",
+ "pr",
+ "prato",
+ "pt",
+ "pu",
+ "pug",
+ "puglia",
+ "pv",
+ "pz",
+ "ra",
+ "ragusa",
+ "ravenna",
+ "rc",
+ "re",
+ "reggio-calabria",
+ "reggio-emilia",
+ "reggiocalabria",
+ "reggioemilia",
+ "rg",
+ "ri",
+ "rieti",
+ "rimini",
+ "rm",
+ "rn",
+ "ro",
+ "roma",
+ "rome",
+ "rovigo",
+ "sa",
+ "salerno",
+ "sar",
+ "sardegna",
+ "sardinia",
+ "sassari",
+ "savona",
+ "si",
+ "sic",
+ "sicilia",
+ "sicily",
+ "siena",
+ "siracusa",
+ "so",
+ "sondrio",
+ "sp",
+ "sr",
+ "ss",
+ "suedtirol",
+ "sv",
+ "ta",
+ "taa",
+ "taranto",
+ "te",
+ "tempio-olbia",
+ "tempioolbia",
+ "teramo",
+ "terni",
+ "tn",
+ "to",
+ "torino",
+ "tos",
+ "toscana",
+ "tp",
+ "tr",
+ "trani-andria-barletta",
+ "trani-barletta-andria",
+ "traniandriabarletta",
+ "tranibarlettaandria",
+ "trapani",
+ "trentino",
+ "trentino-a-adige",
+ "trentino-aadige",
+ "trentino-alto-adige",
+ "trentino-altoadige",
+ "trentino-s-tirol",
+ "trentino-stirol",
+ "trentino-sud-tirol",
+ "trentino-sudtirol",
+ "trentino-sued-tirol",
+ "trentino-suedtirol",
+ "trentinoa-adige",
+ "trentinoaadige",
+ "trentinoalto-adige",
+ "trentinoaltoadige",
+ "trentinos-tirol",
+ "trentinostirol",
+ "trentinosud-tirol",
+ "trentinosudtirol",
+ "trentinosued-tirol",
+ "trentinosuedtirol",
+ "trento",
+ "treviso",
+ "trieste",
+ "ts",
+ "turin",
+ "tuscany",
+ "tv",
+ "ud",
+ "udine",
+ "umb",
+ "umbria",
+ "urbino-pesaro",
+ "urbinopesaro",
+ "va",
+ "val-d-aosta",
+ "val-daosta",
+ "vald-aosta",
+ "valdaosta",
+ "valle-aosta",
+ "valle-d-aosta",
+ "valle-daosta",
+ "valleaosta",
+ "valled-aosta",
+ "valledaosta",
+ "vallee-aoste",
+ "valleeaoste",
+ "vao",
+ "varese",
+ "vb",
+ "vc",
+ "vda",
+ "ve",
+ "ven",
+ "veneto",
+ "venezia",
+ "venice",
+ "verbania",
+ "vercelli",
+ "verona",
+ "vi",
+ "vibo-valentia",
+ "vibovalentia",
+ "vicenza",
+ "viterbo",
+ "vr",
+ "vs",
+ "vt",
+ "vv",
+ "co",
+ "net",
+ "org",
+ "com",
+ "edu",
+ "gov",
+ "mil",
+ "name",
+ "net",
+ "org",
+ "sch",
+ "ac",
+ "ad",
+ "aichi",
+ "akita",
+ "aomori",
+ "blogspot",
+ "chiba",
+ "co",
+ "ed",
+ "ehime",
+ "fukui",
+ "fukuoka",
+ "fukushima",
+ "gifu",
+ "go",
+ "gr",
+ "gunma",
+ "hiroshima",
+ "hokkaido",
+ "hyogo",
+ "ibaraki",
+ "ishikawa",
+ "iwate",
+ "kagawa",
+ "kagoshima",
+ "kanagawa",
+ "kawasaki",
+ "kitakyushu",
+ "kobe",
+ "kochi",
+ "kumamoto",
+ "kyoto",
+ "lg",
+ "mie",
+ "miyagi",
+ "miyazaki",
+ "nagano",
+ "nagasaki",
+ "nagoya",
+ "nara",
+ "ne",
+ "niigata",
+ "oita",
+ "okayama",
+ "okinawa",
+ "or",
+ "osaka",
+ "saga",
+ "saitama",
+ "sapporo",
+ "sendai",
+ "shiga",
+ "shimane",
+ "shizuoka",
+ "tochigi",
+ "tokushima",
+ "tokyo",
+ "tottori",
+ "toyama",
+ "wakayama",
+ "xn--0trq7p7nn",
+ "xn--1ctwo",
+ "xn--1lqs03n",
+ "xn--1lqs71d",
+ "xn--2m4a15e",
+ "xn--32vp30h",
+ "xn--4it168d",
+ "xn--4it797k",
+ "xn--4pvxs",
+ "xn--5js045d",
+ "xn--5rtp49c",
+ "xn--5rtq34k",
+ "xn--6btw5a",
+ "xn--6orx2r",
+ "xn--7t0a264c",
+ "xn--8ltr62k",
+ "xn--8pvr4u",
+ "xn--c3s14m",
+ "xn--d5qv7z876c",
+ "xn--djrs72d6uy",
+ "xn--djty4k",
+ "xn--efvn9s",
+ "xn--ehqz56n",
+ "xn--elqq16h",
+ "xn--f6qx53a",
+ "xn--k7yn95e",
+ "xn--kbrq7o",
+ "xn--klt787d",
+ "xn--kltp7d",
+ "xn--kltx9a",
+ "xn--klty5x",
+ "xn--mkru45i",
+ "xn--nit225k",
+ "xn--ntso0iqx3a",
+ "xn--ntsq17g",
+ "xn--pssu33l",
+ "xn--qqqt11m",
+ "xn--rht27z",
+ "xn--rht3d",
+ "xn--rht61e",
+ "xn--rny31h",
+ "xn--tor131o",
+ "xn--uist22h",
+ "xn--uisz3g",
+ "xn--uuwu58a",
+ "xn--vgu402c",
+ "xn--zbx025d",
+ "yamagata",
+ "yamaguchi",
+ "yamanashi",
+ "yokohama",
+ "aisai",
+ "ama",
+ "anjo",
+ "asuke",
+ "chiryu",
+ "chita",
+ "fuso",
+ "gamagori",
+ "handa",
+ "hazu",
+ "hekinan",
+ "higashiura",
+ "ichinomiya",
+ "inazawa",
+ "inuyama",
+ "isshiki",
+ "iwakura",
+ "kanie",
+ "kariya",
+ "kasugai",
+ "kira",
+ "kiyosu",
+ "komaki",
+ "konan",
+ "kota",
+ "mihama",
+ "miyoshi",
+ "nishio",
+ "nisshin",
+ "obu",
+ "oguchi",
+ "oharu",
+ "okazaki",
+ "owariasahi",
+ "seto",
+ "shikatsu",
+ "shinshiro",
+ "shitara",
+ "tahara",
+ "takahama",
+ "tobishima",
+ "toei",
+ "togo",
+ "tokai",
+ "tokoname",
+ "toyoake",
+ "toyohashi",
+ "toyokawa",
+ "toyone",
+ "toyota",
+ "tsushima",
+ "yatomi",
+ "akita",
+ "daisen",
+ "fujisato",
+ "gojome",
+ "hachirogata",
+ "happou",
+ "higashinaruse",
+ "honjo",
+ "honjyo",
+ "ikawa",
+ "kamikoani",
+ "kamioka",
+ "katagami",
+ "kazuno",
+ "kitaakita",
+ "kosaka",
+ "kyowa",
+ "misato",
+ "mitane",
+ "moriyoshi",
+ "nikaho",
+ "noshiro",
+ "odate",
+ "oga",
+ "ogata",
+ "semboku",
+ "yokote",
+ "yurihonjo",
+ "aomori",
+ "gonohe",
+ "hachinohe",
+ "hashikami",
+ "hiranai",
+ "hirosaki",
+ "itayanagi",
+ "kuroishi",
+ "misawa",
+ "mutsu",
+ "nakadomari",
+ "noheji",
+ "oirase",
+ "owani",
+ "rokunohe",
+ "sannohe",
+ "shichinohe",
+ "shingo",
+ "takko",
+ "towada",
+ "tsugaru",
+ "tsuruta",
+ "abiko",
+ "asahi",
+ "chonan",
+ "chosei",
+ "choshi",
+ "chuo",
+ "funabashi",
+ "futtsu",
+ "hanamigawa",
+ "ichihara",
+ "ichikawa",
+ "ichinomiya",
+ "inzai",
+ "isumi",
+ "kamagaya",
+ "kamogawa",
+ "kashiwa",
+ "katori",
+ "katsuura",
+ "kimitsu",
+ "kisarazu",
+ "kozaki",
+ "kujukuri",
+ "kyonan",
+ "matsudo",
+ "midori",
+ "mihama",
+ "minamiboso",
+ "mobara",
+ "mutsuzawa",
+ "nagara",
+ "nagareyama",
+ "narashino",
+ "narita",
+ "noda",
+ "oamishirasato",
+ "omigawa",
+ "onjuku",
+ "otaki",
+ "sakae",
+ "sakura",
+ "shimofusa",
+ "shirako",
+ "shiroi",
+ "shisui",
+ "sodegaura",
+ "sosa",
+ "tako",
+ "tateyama",
+ "togane",
+ "tohnosho",
+ "tomisato",
+ "urayasu",
+ "yachimata",
+ "yachiyo",
+ "yokaichiba",
+ "yokoshibahikari",
+ "yotsukaido",
+ "ainan",
+ "honai",
+ "ikata",
+ "imabari",
+ "iyo",
+ "kamijima",
+ "kihoku",
+ "kumakogen",
+ "masaki",
+ "matsuno",
+ "matsuyama",
+ "namikata",
+ "niihama",
+ "ozu",
+ "saijo",
+ "seiyo",
+ "shikokuchuo",
+ "tobe",
+ "toon",
+ "uchiko",
+ "uwajima",
+ "yawatahama",
+ "echizen",
+ "eiheiji",
+ "fukui",
+ "ikeda",
+ "katsuyama",
+ "mihama",
+ "minamiechizen",
+ "obama",
+ "ohi",
+ "ono",
+ "sabae",
+ "sakai",
+ "takahama",
+ "tsuruga",
+ "wakasa",
+ "ashiya",
+ "buzen",
+ "chikugo",
+ "chikuho",
+ "chikujo",
+ "chikushino",
+ "chikuzen",
+ "chuo",
+ "dazaifu",
+ "fukuchi",
+ "hakata",
+ "higashi",
+ "hirokawa",
+ "hisayama",
+ "iizuka",
+ "inatsuki",
+ "kaho",
+ "kasuga",
+ "kasuya",
+ "kawara",
+ "keisen",
+ "koga",
+ "kurate",
+ "kurogi",
+ "kurume",
+ "minami",
+ "miyako",
+ "miyama",
+ "miyawaka",
+ "mizumaki",
+ "munakata",
+ "nakagawa",
+ "nakama",
+ "nishi",
+ "nogata",
+ "ogori",
+ "okagaki",
+ "okawa",
+ "oki",
+ "omuta",
+ "onga",
+ "onojo",
+ "oto",
+ "saigawa",
+ "sasaguri",
+ "shingu",
+ "shinyoshitomi",
+ "shonai",
+ "soeda",
+ "sue",
+ "tachiarai",
+ "tagawa",
+ "takata",
+ "toho",
+ "toyotsu",
+ "tsuiki",
+ "ukiha",
+ "umi",
+ "usui",
+ "yamada",
+ "yame",
+ "yanagawa",
+ "yukuhashi",
+ "aizubange",
+ "aizumisato",
+ "aizuwakamatsu",
+ "asakawa",
+ "bandai",
+ "date",
+ "fukushima",
+ "furudono",
+ "futaba",
+ "hanawa",
+ "higashi",
+ "hirata",
+ "hirono",
+ "iitate",
+ "inawashiro",
+ "ishikawa",
+ "iwaki",
+ "izumizaki",
+ "kagamiishi",
+ "kaneyama",
+ "kawamata",
+ "kitakata",
+ "kitashiobara",
+ "koori",
+ "koriyama",
+ "kunimi",
+ "miharu",
+ "mishima",
+ "namie",
+ "nango",
+ "nishiaizu",
+ "nishigo",
+ "okuma",
+ "omotego",
+ "ono",
+ "otama",
+ "samegawa",
+ "shimogo",
+ "shirakawa",
+ "showa",
+ "soma",
+ "sukagawa",
+ "taishin",
+ "tamakawa",
+ "tanagura",
+ "tenei",
+ "yabuki",
+ "yamato",
+ "yamatsuri",
+ "yanaizu",
+ "yugawa",
+ "anpachi",
+ "ena",
+ "gifu",
+ "ginan",
+ "godo",
+ "gujo",
+ "hashima",
+ "hichiso",
+ "hida",
+ "higashishirakawa",
+ "ibigawa",
+ "ikeda",
+ "kakamigahara",
+ "kani",
+ "kasahara",
+ "kasamatsu",
+ "kawaue",
+ "kitagata",
+ "mino",
+ "minokamo",
+ "mitake",
+ "mizunami",
+ "motosu",
+ "nakatsugawa",
+ "ogaki",
+ "sakahogi",
+ "seki",
+ "sekigahara",
+ "shirakawa",
+ "tajimi",
+ "takayama",
+ "tarui",
+ "toki",
+ "tomika",
+ "wanouchi",
+ "yamagata",
+ "yaotsu",
+ "yoro",
+ "annaka",
+ "chiyoda",
+ "fujioka",
+ "higashiagatsuma",
+ "isesaki",
+ "itakura",
+ "kanna",
+ "kanra",
+ "katashina",
+ "kawaba",
+ "kiryu",
+ "kusatsu",
+ "maebashi",
+ "meiwa",
+ "midori",
+ "minakami",
+ "naganohara",
+ "nakanojo",
+ "nanmoku",
+ "numata",
+ "oizumi",
+ "ora",
+ "ota",
+ "shibukawa",
+ "shimonita",
+ "shinto",
+ "showa",
+ "takasaki",
+ "takayama",
+ "tamamura",
+ "tatebayashi",
+ "tomioka",
+ "tsukiyono",
+ "tsumagoi",
+ "ueno",
+ "yoshioka",
+ "asaminami",
+ "daiwa",
+ "etajima",
+ "fuchu",
+ "fukuyama",
+ "hatsukaichi",
+ "higashihiroshima",
+ "hongo",
+ "jinsekikogen",
+ "kaita",
+ "kui",
+ "kumano",
+ "kure",
+ "mihara",
+ "miyoshi",
+ "naka",
+ "onomichi",
+ "osakikamijima",
+ "otake",
+ "saka",
+ "sera",
+ "seranishi",
+ "shinichi",
+ "shobara",
+ "takehara",
+ "abashiri",
+ "abira",
+ "aibetsu",
+ "akabira",
+ "akkeshi",
+ "asahikawa",
+ "ashibetsu",
+ "ashoro",
+ "assabu",
+ "atsuma",
+ "bibai",
+ "biei",
+ "bifuka",
+ "bihoro",
+ "biratori",
+ "chippubetsu",
+ "chitose",
+ "date",
+ "ebetsu",
+ "embetsu",
+ "eniwa",
+ "erimo",
+ "esan",
+ "esashi",
+ "fukagawa",
+ "fukushima",
+ "furano",
+ "furubira",
+ "haboro",
+ "hakodate",
+ "hamatonbetsu",
+ "hidaka",
+ "higashikagura",
+ "higashikawa",
+ "hiroo",
+ "hokuryu",
+ "hokuto",
+ "honbetsu",
+ "horokanai",
+ "horonobe",
+ "ikeda",
+ "imakane",
+ "ishikari",
+ "iwamizawa",
+ "iwanai",
+ "kamifurano",
+ "kamikawa",
+ "kamishihoro",
+ "kamisunagawa",
+ "kamoenai",
+ "kayabe",
+ "kembuchi",
+ "kikonai",
+ "kimobetsu",
+ "kitahiroshima",
+ "kitami",
+ "kiyosato",
+ "koshimizu",
+ "kunneppu",
+ "kuriyama",
+ "kuromatsunai",
+ "kushiro",
+ "kutchan",
+ "kyowa",
+ "mashike",
+ "matsumae",
+ "mikasa",
+ "minamifurano",
+ "mombetsu",
+ "moseushi",
+ "mukawa",
+ "muroran",
+ "naie",
+ "nakagawa",
+ "nakasatsunai",
+ "nakatombetsu",
+ "nanae",
+ "nanporo",
+ "nayoro",
+ "nemuro",
+ "niikappu",
+ "niki",
+ "nishiokoppe",
+ "noboribetsu",
+ "numata",
+ "obihiro",
+ "obira",
+ "oketo",
+ "okoppe",
+ "otaru",
+ "otobe",
+ "otofuke",
+ "otoineppu",
+ "oumu",
+ "ozora",
+ "pippu",
+ "rankoshi",
+ "rebun",
+ "rikubetsu",
+ "rishiri",
+ "rishirifuji",
+ "saroma",
+ "sarufutsu",
+ "shakotan",
+ "shari",
+ "shibecha",
+ "shibetsu",
+ "shikabe",
+ "shikaoi",
+ "shimamaki",
+ "shimizu",
+ "shimokawa",
+ "shinshinotsu",
+ "shintoku",
+ "shiranuka",
+ "shiraoi",
+ "shiriuchi",
+ "sobetsu",
+ "sunagawa",
+ "taiki",
+ "takasu",
+ "takikawa",
+ "takinoue",
+ "teshikaga",
+ "tobetsu",
+ "tohma",
+ "tomakomai",
+ "tomari",
+ "toya",
+ "toyako",
+ "toyotomi",
+ "toyoura",
+ "tsubetsu",
+ "tsukigata",
+ "urakawa",
+ "urausu",
+ "uryu",
+ "utashinai",
+ "wakkanai",
+ "wassamu",
+ "yakumo",
+ "yoichi",
+ "aioi",
+ "akashi",
+ "ako",
+ "amagasaki",
+ "aogaki",
+ "asago",
+ "ashiya",
+ "awaji",
+ "fukusaki",
+ "goshiki",
+ "harima",
+ "himeji",
+ "ichikawa",
+ "inagawa",
+ "itami",
+ "kakogawa",
+ "kamigori",
+ "kamikawa",
+ "kasai",
+ "kasuga",
+ "kawanishi",
+ "miki",
+ "minamiawaji",
+ "nishinomiya",
+ "nishiwaki",
+ "ono",
+ "sanda",
+ "sannan",
+ "sasayama",
+ "sayo",
+ "shingu",
+ "shinonsen",
+ "shiso",
+ "sumoto",
+ "taishi",
+ "taka",
+ "takarazuka",
+ "takasago",
+ "takino",
+ "tamba",
+ "tatsuno",
+ "toyooka",
+ "yabu",
+ "yashiro",
+ "yoka",
+ "yokawa",
+ "ami",
+ "asahi",
+ "bando",
+ "chikusei",
+ "daigo",
+ "fujishiro",
+ "hitachi",
+ "hitachinaka",
+ "hitachiomiya",
+ "hitachiota",
+ "ibaraki",
+ "ina",
+ "inashiki",
+ "itako",
+ "iwama",
+ "joso",
+ "kamisu",
+ "kasama",
+ "kashima",
+ "kasumigaura",
+ "koga",
+ "miho",
+ "mito",
+ "moriya",
+ "naka",
+ "namegata",
+ "oarai",
+ "ogawa",
+ "omitama",
+ "ryugasaki",
+ "sakai",
+ "sakuragawa",
+ "shimodate",
+ "shimotsuma",
+ "shirosato",
+ "sowa",
+ "suifu",
+ "takahagi",
+ "tamatsukuri",
+ "tokai",
+ "tomobe",
+ "tone",
+ "toride",
+ "tsuchiura",
+ "tsukuba",
+ "uchihara",
+ "ushiku",
+ "yachiyo",
+ "yamagata",
+ "yawara",
+ "yuki",
+ "anamizu",
+ "hakui",
+ "hakusan",
+ "kaga",
+ "kahoku",
+ "kanazawa",
+ "kawakita",
+ "komatsu",
+ "nakanoto",
+ "nanao",
+ "nomi",
+ "nonoichi",
+ "noto",
+ "shika",
+ "suzu",
+ "tsubata",
+ "tsurugi",
+ "uchinada",
+ "wajima",
+ "fudai",
+ "fujisawa",
+ "hanamaki",
+ "hiraizumi",
+ "hirono",
+ "ichinohe",
+ "ichinoseki",
+ "iwaizumi",
+ "iwate",
+ "joboji",
+ "kamaishi",
+ "kanegasaki",
+ "karumai",
+ "kawai",
+ "kitakami",
+ "kuji",
+ "kunohe",
+ "kuzumaki",
+ "miyako",
+ "mizusawa",
+ "morioka",
+ "ninohe",
+ "noda",
+ "ofunato",
+ "oshu",
+ "otsuchi",
+ "rikuzentakata",
+ "shiwa",
+ "shizukuishi",
+ "sumita",
+ "tanohata",
+ "tono",
+ "yahaba",
+ "yamada",
+ "ayagawa",
+ "higashikagawa",
+ "kanonji",
+ "kotohira",
+ "manno",
+ "marugame",
+ "mitoyo",
+ "naoshima",
+ "sanuki",
+ "tadotsu",
+ "takamatsu",
+ "tonosho",
+ "uchinomi",
+ "utazu",
+ "zentsuji",
+ "akune",
+ "amami",
+ "hioki",
+ "isa",
+ "isen",
+ "izumi",
+ "kagoshima",
+ "kanoya",
+ "kawanabe",
+ "kinko",
+ "kouyama",
+ "makurazaki",
+ "matsumoto",
+ "minamitane",
+ "nakatane",
+ "nishinoomote",
+ "satsumasendai",
+ "soo",
+ "tarumizu",
+ "yusui",
+ "aikawa",
+ "atsugi",
+ "ayase",
+ "chigasaki",
+ "ebina",
+ "fujisawa",
+ "hadano",
+ "hakone",
+ "hiratsuka",
+ "isehara",
+ "kaisei",
+ "kamakura",
+ "kiyokawa",
+ "matsuda",
+ "minamiashigara",
+ "miura",
+ "nakai",
+ "ninomiya",
+ "odawara",
+ "oi",
+ "oiso",
+ "sagamihara",
+ "samukawa",
+ "tsukui",
+ "yamakita",
+ "yamato",
+ "yokosuka",
+ "yugawara",
+ "zama",
+ "zushi",
+ "city",
+ "city",
+ "city",
+ "aki",
+ "geisei",
+ "hidaka",
+ "higashitsuno",
+ "ino",
+ "kagami",
+ "kami",
+ "kitagawa",
+ "kochi",
+ "mihara",
+ "motoyama",
+ "muroto",
+ "nahari",
+ "nakamura",
+ "nankoku",
+ "nishitosa",
+ "niyodogawa",
+ "ochi",
+ "okawa",
+ "otoyo",
+ "otsuki",
+ "sakawa",
+ "sukumo",
+ "susaki",
+ "tosa",
+ "tosashimizu",
+ "toyo",
+ "tsuno",
+ "umaji",
+ "yasuda",
+ "yusuhara",
+ "amakusa",
+ "arao",
+ "aso",
+ "choyo",
+ "gyokuto",
+ "kamiamakusa",
+ "kikuchi",
+ "kumamoto",
+ "mashiki",
+ "mifune",
+ "minamata",
+ "minamioguni",
+ "nagasu",
+ "nishihara",
+ "oguni",
+ "ozu",
+ "sumoto",
+ "takamori",
+ "uki",
+ "uto",
+ "yamaga",
+ "yamato",
+ "yatsushiro",
+ "ayabe",
+ "fukuchiyama",
+ "higashiyama",
+ "ide",
+ "ine",
+ "joyo",
+ "kameoka",
+ "kamo",
+ "kita",
+ "kizu",
+ "kumiyama",
+ "kyotamba",
+ "kyotanabe",
+ "kyotango",
+ "maizuru",
+ "minami",
+ "minamiyamashiro",
+ "miyazu",
+ "muko",
+ "nagaokakyo",
+ "nakagyo",
+ "nantan",
+ "oyamazaki",
+ "sakyo",
+ "seika",
+ "tanabe",
+ "uji",
+ "ujitawara",
+ "wazuka",
+ "yamashina",
+ "yawata",
+ "asahi",
+ "inabe",
+ "ise",
+ "kameyama",
+ "kawagoe",
+ "kiho",
+ "kisosaki",
+ "kiwa",
+ "komono",
+ "kumano",
+ "kuwana",
+ "matsusaka",
+ "meiwa",
+ "mihama",
+ "minamiise",
+ "misugi",
+ "miyama",
+ "nabari",
+ "shima",
+ "suzuka",
+ "tado",
+ "taiki",
+ "taki",
+ "tamaki",
+ "toba",
+ "tsu",
+ "udono",
+ "ureshino",
+ "watarai",
+ "yokkaichi",
+ "furukawa",
+ "higashimatsushima",
+ "ishinomaki",
+ "iwanuma",
+ "kakuda",
+ "kami",
+ "kawasaki",
+ "marumori",
+ "matsushima",
+ "minamisanriku",
+ "misato",
+ "murata",
+ "natori",
+ "ogawara",
+ "ohira",
+ "onagawa",
+ "osaki",
+ "rifu",
+ "semine",
+ "shibata",
+ "shichikashuku",
+ "shikama",
+ "shiogama",
+ "shiroishi",
+ "tagajo",
+ "taiwa",
+ "tome",
+ "tomiya",
+ "wakuya",
+ "watari",
+ "yamamoto",
+ "zao",
+ "aya",
+ "ebino",
+ "gokase",
+ "hyuga",
+ "kadogawa",
+ "kawaminami",
+ "kijo",
+ "kitagawa",
+ "kitakata",
+ "kitaura",
+ "kobayashi",
+ "kunitomi",
+ "kushima",
+ "mimata",
+ "miyakonojo",
+ "miyazaki",
+ "morotsuka",
+ "nichinan",
+ "nishimera",
+ "nobeoka",
+ "saito",
+ "shiiba",
+ "shintomi",
+ "takaharu",
+ "takanabe",
+ "takazaki",
+ "tsuno",
+ "achi",
+ "agematsu",
+ "anan",
+ "aoki",
+ "asahi",
+ "azumino",
+ "chikuhoku",
+ "chikuma",
+ "chino",
+ "fujimi",
+ "hakuba",
+ "hara",
+ "hiraya",
+ "iida",
+ "iijima",
+ "iiyama",
+ "iizuna",
+ "ikeda",
+ "ikusaka",
+ "ina",
+ "karuizawa",
+ "kawakami",
+ "kiso",
+ "kisofukushima",
+ "kitaaiki",
+ "komagane",
+ "komoro",
+ "matsukawa",
+ "matsumoto",
+ "miasa",
+ "minamiaiki",
+ "minamimaki",
+ "minamiminowa",
+ "minowa",
+ "miyada",
+ "miyota",
+ "mochizuki",
+ "nagano",
+ "nagawa",
+ "nagiso",
+ "nakagawa",
+ "nakano",
+ "nozawaonsen",
+ "obuse",
+ "ogawa",
+ "okaya",
+ "omachi",
+ "omi",
+ "ookuwa",
+ "ooshika",
+ "otaki",
+ "otari",
+ "sakae",
+ "sakaki",
+ "saku",
+ "sakuho",
+ "shimosuwa",
+ "shinanomachi",
+ "shiojiri",
+ "suwa",
+ "suzaka",
+ "takagi",
+ "takamori",
+ "takayama",
+ "tateshina",
+ "tatsuno",
+ "togakushi",
+ "togura",
+ "tomi",
+ "ueda",
+ "wada",
+ "yamagata",
+ "yamanouchi",
+ "yasaka",
+ "yasuoka",
+ "chijiwa",
+ "futsu",
+ "goto",
+ "hasami",
+ "hirado",
+ "iki",
+ "isahaya",
+ "kawatana",
+ "kuchinotsu",
+ "matsuura",
+ "nagasaki",
+ "obama",
+ "omura",
+ "oseto",
+ "saikai",
+ "sasebo",
+ "seihi",
+ "shimabara",
+ "shinkamigoto",
+ "togitsu",
+ "tsushima",
+ "unzen",
+ "city",
+ "ando",
+ "gose",
+ "heguri",
+ "higashiyoshino",
+ "ikaruga",
+ "ikoma",
+ "kamikitayama",
+ "kanmaki",
+ "kashiba",
+ "kashihara",
+ "katsuragi",
+ "kawai",
+ "kawakami",
+ "kawanishi",
+ "koryo",
+ "kurotaki",
+ "mitsue",
+ "miyake",
+ "nara",
+ "nosegawa",
+ "oji",
+ "ouda",
+ "oyodo",
+ "sakurai",
+ "sango",
+ "shimoichi",
+ "shimokitayama",
+ "shinjo",
+ "soni",
+ "takatori",
+ "tawaramoto",
+ "tenkawa",
+ "tenri",
+ "uda",
+ "yamatokoriyama",
+ "yamatotakada",
+ "yamazoe",
+ "yoshino",
+ "aga",
+ "agano",
+ "gosen",
+ "itoigawa",
+ "izumozaki",
+ "joetsu",
+ "kamo",
+ "kariwa",
+ "kashiwazaki",
+ "minamiuonuma",
+ "mitsuke",
+ "muika",
+ "murakami",
+ "myoko",
+ "nagaoka",
+ "niigata",
+ "ojiya",
+ "omi",
+ "sado",
+ "sanjo",
+ "seiro",
+ "seirou",
+ "sekikawa",
+ "shibata",
+ "tagami",
+ "tainai",
+ "tochio",
+ "tokamachi",
+ "tsubame",
+ "tsunan",
+ "uonuma",
+ "yahiko",
+ "yoita",
+ "yuzawa",
+ "beppu",
+ "bungoono",
+ "bungotakada",
+ "hasama",
+ "hiji",
+ "himeshima",
+ "hita",
+ "kamitsue",
+ "kokonoe",
+ "kuju",
+ "kunisaki",
+ "kusu",
+ "oita",
+ "saiki",
+ "taketa",
+ "tsukumi",
+ "usa",
+ "usuki",
+ "yufu",
+ "akaiwa",
+ "asakuchi",
+ "bizen",
+ "hayashima",
+ "ibara",
+ "kagamino",
+ "kasaoka",
+ "kibichuo",
+ "kumenan",
+ "kurashiki",
+ "maniwa",
+ "misaki",
+ "nagi",
+ "niimi",
+ "nishiawakura",
+ "okayama",
+ "satosho",
+ "setouchi",
+ "shinjo",
+ "shoo",
+ "soja",
+ "takahashi",
+ "tamano",
+ "tsuyama",
+ "wake",
+ "yakage",
+ "aguni",
+ "ginowan",
+ "ginoza",
+ "gushikami",
+ "haebaru",
+ "higashi",
+ "hirara",
+ "iheya",
+ "ishigaki",
+ "ishikawa",
+ "itoman",
+ "izena",
+ "kadena",
+ "kin",
+ "kitadaito",
+ "kitanakagusuku",
+ "kumejima",
+ "kunigami",
+ "minamidaito",
+ "motobu",
+ "nago",
+ "naha",
+ "nakagusuku",
+ "nakijin",
+ "nanjo",
+ "nishihara",
+ "ogimi",
+ "okinawa",
+ "onna",
+ "shimoji",
+ "taketomi",
+ "tarama",
+ "tokashiki",
+ "tomigusuku",
+ "tonaki",
+ "urasoe",
+ "uruma",
+ "yaese",
+ "yomitan",
+ "yonabaru",
+ "yonaguni",
+ "zamami",
+ "abeno",
+ "chihayaakasaka",
+ "chuo",
+ "daito",
+ "fujiidera",
+ "habikino",
+ "hannan",
+ "higashiosaka",
+ "higashisumiyoshi",
+ "higashiyodogawa",
+ "hirakata",
+ "ibaraki",
+ "ikeda",
+ "izumi",
+ "izumiotsu",
+ "izumisano",
+ "kadoma",
+ "kaizuka",
+ "kanan",
+ "kashiwara",
+ "katano",
+ "kawachinagano",
+ "kishiwada",
+ "kita",
+ "kumatori",
+ "matsubara",
+ "minato",
+ "minoh",
+ "misaki",
+ "moriguchi",
+ "neyagawa",
+ "nishi",
+ "nose",
+ "osakasayama",
+ "sakai",
+ "sayama",
+ "sennan",
+ "settsu",
+ "shijonawate",
+ "shimamoto",
+ "suita",
+ "tadaoka",
+ "taishi",
+ "tajiri",
+ "takaishi",
+ "takatsuki",
+ "tondabayashi",
+ "toyonaka",
+ "toyono",
+ "yao",
+ "ariake",
+ "arita",
+ "fukudomi",
+ "genkai",
+ "hamatama",
+ "hizen",
+ "imari",
+ "kamimine",
+ "kanzaki",
+ "karatsu",
+ "kashima",
+ "kitagata",
+ "kitahata",
+ "kiyama",
+ "kouhoku",
+ "kyuragi",
+ "nishiarita",
+ "ogi",
+ "omachi",
+ "ouchi",
+ "saga",
+ "shiroishi",
+ "taku",
+ "tara",
+ "tosu",
+ "yoshinogari",
+ "arakawa",
+ "asaka",
+ "chichibu",
+ "fujimi",
+ "fujimino",
+ "fukaya",
+ "hanno",
+ "hanyu",
+ "hasuda",
+ "hatogaya",
+ "hatoyama",
+ "hidaka",
+ "higashichichibu",
+ "higashimatsuyama",
+ "honjo",
+ "ina",
+ "iruma",
+ "iwatsuki",
+ "kamiizumi",
+ "kamikawa",
+ "kamisato",
+ "kasukabe",
+ "kawagoe",
+ "kawaguchi",
+ "kawajima",
+ "kazo",
+ "kitamoto",
+ "koshigaya",
+ "kounosu",
+ "kuki",
+ "kumagaya",
+ "matsubushi",
+ "minano",
+ "misato",
+ "miyashiro",
+ "miyoshi",
+ "moroyama",
+ "nagatoro",
+ "namegawa",
+ "niiza",
+ "ogano",
+ "ogawa",
+ "ogose",
+ "okegawa",
+ "omiya",
+ "otaki",
+ "ranzan",
+ "ryokami",
+ "saitama",
+ "sakado",
+ "satte",
+ "sayama",
+ "shiki",
+ "shiraoka",
+ "soka",
+ "sugito",
+ "toda",
+ "tokigawa",
+ "tokorozawa",
+ "tsurugashima",
+ "urawa",
+ "warabi",
+ "yashio",
+ "yokoze",
+ "yono",
+ "yorii",
+ "yoshida",
+ "yoshikawa",
+ "yoshimi",
+ "city",
+ "city",
+ "aisho",
+ "gamo",
+ "higashiomi",
+ "hikone",
+ "koka",
+ "konan",
+ "kosei",
+ "koto",
+ "kusatsu",
+ "maibara",
+ "moriyama",
+ "nagahama",
+ "nishiazai",
+ "notogawa",
+ "omihachiman",
+ "otsu",
+ "ritto",
+ "ryuoh",
+ "takashima",
+ "takatsuki",
+ "torahime",
+ "toyosato",
+ "yasu",
+ "akagi",
+ "ama",
+ "gotsu",
+ "hamada",
+ "higashiizumo",
+ "hikawa",
+ "hikimi",
+ "izumo",
+ "kakinoki",
+ "masuda",
+ "matsue",
+ "misato",
+ "nishinoshima",
+ "ohda",
+ "okinoshima",
+ "okuizumo",
+ "shimane",
+ "tamayu",
+ "tsuwano",
+ "unnan",
+ "yakumo",
+ "yasugi",
+ "yatsuka",
+ "arai",
+ "atami",
+ "fuji",
+ "fujieda",
+ "fujikawa",
+ "fujinomiya",
+ "fukuroi",
+ "gotemba",
+ "haibara",
+ "hamamatsu",
+ "higashiizu",
+ "ito",
+ "iwata",
+ "izu",
+ "izunokuni",
+ "kakegawa",
+ "kannami",
+ "kawanehon",
+ "kawazu",
+ "kikugawa",
+ "kosai",
+ "makinohara",
+ "matsuzaki",
+ "minamiizu",
+ "mishima",
+ "morimachi",
+ "nishiizu",
+ "numazu",
+ "omaezaki",
+ "shimada",
+ "shimizu",
+ "shimoda",
+ "shizuoka",
+ "susono",
+ "yaizu",
+ "yoshida",
+ "ashikaga",
+ "bato",
+ "haga",
+ "ichikai",
+ "iwafune",
+ "kaminokawa",
+ "kanuma",
+ "karasuyama",
+ "kuroiso",
+ "mashiko",
+ "mibu",
+ "moka",
+ "motegi",
+ "nasu",
+ "nasushiobara",
+ "nikko",
+ "nishikata",
+ "nogi",
+ "ohira",
+ "ohtawara",
+ "oyama",
+ "sakura",
+ "sano",
+ "shimotsuke",
+ "shioya",
+ "takanezawa",
+ "tochigi",
+ "tsuga",
+ "ujiie",
+ "utsunomiya",
+ "yaita",
+ "aizumi",
+ "anan",
+ "ichiba",
+ "itano",
+ "kainan",
+ "komatsushima",
+ "matsushige",
+ "mima",
+ "minami",
+ "miyoshi",
+ "mugi",
+ "nakagawa",
+ "naruto",
+ "sanagochi",
+ "shishikui",
+ "tokushima",
+ "wajiki",
+ "adachi",
+ "akiruno",
+ "akishima",
+ "aogashima",
+ "arakawa",
+ "bunkyo",
+ "chiyoda",
+ "chofu",
+ "chuo",
+ "edogawa",
+ "fuchu",
+ "fussa",
+ "hachijo",
+ "hachioji",
+ "hamura",
+ "higashikurume",
+ "higashimurayama",
+ "higashiyamato",
+ "hino",
+ "hinode",
+ "hinohara",
+ "inagi",
+ "itabashi",
+ "katsushika",
+ "kita",
+ "kiyose",
+ "kodaira",
+ "koganei",
+ "kokubunji",
+ "komae",
+ "koto",
+ "kouzushima",
+ "kunitachi",
+ "machida",
+ "meguro",
+ "minato",
+ "mitaka",
+ "mizuho",
+ "musashimurayama",
+ "musashino",
+ "nakano",
+ "nerima",
+ "ogasawara",
+ "okutama",
+ "ome",
+ "oshima",
+ "ota",
+ "setagaya",
+ "shibuya",
+ "shinagawa",
+ "shinjuku",
+ "suginami",
+ "sumida",
+ "tachikawa",
+ "taito",
+ "tama",
+ "toshima",
+ "chizu",
+ "hino",
+ "kawahara",
+ "koge",
+ "kotoura",
+ "misasa",
+ "nanbu",
+ "nichinan",
+ "sakaiminato",
+ "tottori",
+ "wakasa",
+ "yazu",
+ "yonago",
+ "asahi",
+ "fuchu",
+ "fukumitsu",
+ "funahashi",
+ "himi",
+ "imizu",
+ "inami",
+ "johana",
+ "kamiichi",
+ "kurobe",
+ "nakaniikawa",
+ "namerikawa",
+ "nanto",
+ "nyuzen",
+ "oyabe",
+ "taira",
+ "takaoka",
+ "tateyama",
+ "toga",
+ "tonami",
+ "toyama",
+ "unazuki",
+ "uozu",
+ "yamada",
+ "arida",
+ "aridagawa",
+ "gobo",
+ "hashimoto",
+ "hidaka",
+ "hirogawa",
+ "inami",
+ "iwade",
+ "kainan",
+ "kamitonda",
+ "katsuragi",
+ "kimino",
+ "kinokawa",
+ "kitayama",
+ "koya",
+ "koza",
+ "kozagawa",
+ "kudoyama",
+ "kushimoto",
+ "mihama",
+ "misato",
+ "nachikatsuura",
+ "shingu",
+ "shirahama",
+ "taiji",
+ "tanabe",
+ "wakayama",
+ "yuasa",
+ "yura",
+ "asahi",
+ "funagata",
+ "higashine",
+ "iide",
+ "kahoku",
+ "kaminoyama",
+ "kaneyama",
+ "kawanishi",
+ "mamurogawa",
+ "mikawa",
+ "murayama",
+ "nagai",
+ "nakayama",
+ "nanyo",
+ "nishikawa",
+ "obanazawa",
+ "oe",
+ "oguni",
+ "ohkura",
+ "oishida",
+ "sagae",
+ "sakata",
+ "sakegawa",
+ "shinjo",
+ "shirataka",
+ "shonai",
+ "takahata",
+ "tendo",
+ "tozawa",
+ "tsuruoka",
+ "yamagata",
+ "yamanobe",
+ "yonezawa",
+ "yuza",
+ "abu",
+ "hagi",
+ "hikari",
+ "hofu",
+ "iwakuni",
+ "kudamatsu",
+ "mitou",
+ "nagato",
+ "oshima",
+ "shimonoseki",
+ "shunan",
+ "tabuse",
+ "tokuyama",
+ "toyota",
+ "ube",
+ "yuu",
+ "chuo",
+ "doshi",
+ "fuefuki",
+ "fujikawa",
+ "fujikawaguchiko",
+ "fujiyoshida",
+ "hayakawa",
+ "hokuto",
+ "ichikawamisato",
+ "kai",
+ "kofu",
+ "koshu",
+ "kosuge",
+ "minami-alps",
+ "minobu",
+ "nakamichi",
+ "nanbu",
+ "narusawa",
+ "nirasaki",
+ "nishikatsura",
+ "oshino",
+ "otsuki",
+ "showa",
+ "tabayama",
+ "tsuru",
+ "uenohara",
+ "yamanakako",
+ "yamanashi",
+ "city",
+ "co",
+ "blogspot",
+ "com",
+ "edu",
+ "gov",
+ "mil",
+ "net",
+ "org",
+ "biz",
+ "com",
+ "edu",
+ "gov",
+ "info",
+ "net",
+ "org",
+ "ass",
+ "asso",
+ "com",
+ "coop",
+ "edu",
+ "gouv",
+ "gov",
+ "medecin",
+ "mil",
+ "nom",
+ "notaires",
+ "org",
+ "pharmaciens",
+ "prd",
+ "presse",
+ "tm",
+ "veterinaire",
+ "edu",
+ "gov",
+ "net",
+ "org",
+ "com",
+ "edu",
+ "gov",
+ "org",
+ "rep",
+ "tra",
+ "ac",
+ "blogspot",
+ "busan",
+ "chungbuk",
+ "chungnam",
+ "co",
+ "daegu",
+ "daejeon",
+ "es",
+ "gangwon",
+ "go",
+ "gwangju",
+ "gyeongbuk",
+ "gyeonggi",
+ "gyeongnam",
+ "hs",
+ "incheon",
+ "jeju",
+ "jeonbuk",
+ "jeonnam",
+ "kg",
+ "mil",
+ "ms",
+ "ne",
+ "or",
+ "pe",
+ "re",
+ "sc",
+ "seoul",
+ "ulsan",
+ "co",
+ "edu",
+ "com",
+ "edu",
+ "gov",
+ "net",
+ "org",
+ "com",
+ "edu",
+ "gov",
+ "mil",
+ "net",
+ "org",
+ "bnr",
+ "c",
+ "com",
+ "edu",
+ "gov",
+ "info",
+ "int",
+ "net",
+ "org",
+ "per",
+ "static",
+ "dev",
+ "sites",
+ "com",
+ "edu",
+ "gov",
+ "net",
+ "org",
+ "co",
+ "com",
+ "edu",
+ "gov",
+ "net",
+ "org",
+ "oy",
+ "blogspot",
+ "cyon",
+ "mypep",
+ "ac",
+ "assn",
+ "com",
+ "edu",
+ "gov",
+ "grp",
+ "hotel",
+ "int",
+ "ltd",
+ "net",
+ "ngo",
+ "org",
+ "sch",
+ "soc",
+ "web",
+ "com",
+ "edu",
+ "gov",
+ "net",
+ "org",
+ "co",
+ "org",
+ "blogspot",
+ "gov",
+ "blogspot",
+ "asn",
+ "com",
+ "conf",
+ "edu",
+ "gov",
+ "id",
+ "mil",
+ "net",
+ "org",
+ "com",
+ "edu",
+ "gov",
+ "id",
+ "med",
+ "net",
+ "org",
+ "plc",
+ "sch",
+ "ac",
+ "co",
+ "gov",
+ "net",
+ "org",
+ "press",
+ "router",
+ "asso",
+ "tm",
+ "blogspot",
+ "ac",
+ "brasilia",
+ "c66",
+ "co",
+ "daplie",
+ "ddns",
+ "diskstation",
+ "dnsfor",
+ "dscloud",
+ "edu",
+ "filegear",
+ "gov",
+ "hopto",
+ "i234",
+ "its",
+ "loginto",
+ "myds",
+ "net",
+ "noip",
+ "org",
+ "priv",
+ "synology",
+ "webhop",
+ "wedeploy",
+ "yombo",
+ "localhost",
+ "co",
+ "com",
+ "edu",
+ "gov",
+ "mil",
+ "nom",
+ "org",
+ "prd",
+ "tm",
+ "blogspot",
+ "com",
+ "edu",
+ "gov",
+ "inf",
+ "name",
+ "net",
+ "org",
+ "com",
+ "edu",
+ "gouv",
+ "gov",
+ "net",
+ "org",
+ "presse",
+ "edu",
+ "gov",
+ "nyc",
+ "org",
+ "com",
+ "edu",
+ "gov",
+ "net",
+ "org",
+ "dscloud",
+ "blogspot",
+ "gov",
+ "com",
+ "edu",
+ "gov",
+ "net",
+ "org",
+ "com",
+ "edu",
+ "net",
+ "org",
+ "blogspot",
+ "ac",
+ "co",
+ "com",
+ "gov",
+ "net",
+ "or",
+ "org",
+ "academy",
+ "agriculture",
+ "air",
+ "airguard",
+ "alabama",
+ "alaska",
+ "amber",
+ "ambulance",
+ "american",
+ "americana",
+ "americanantiques",
+ "americanart",
+ "amsterdam",
+ "and",
+ "annefrank",
+ "anthro",
+ "anthropology",
+ "antiques",
+ "aquarium",
+ "arboretum",
+ "archaeological",
+ "archaeology",
+ "architecture",
+ "art",
+ "artanddesign",
+ "artcenter",
+ "artdeco",
+ "arteducation",
+ "artgallery",
+ "arts",
+ "artsandcrafts",
+ "asmatart",
+ "assassination",
+ "assisi",
+ "association",
+ "astronomy",
+ "atlanta",
+ "austin",
+ "australia",
+ "automotive",
+ "aviation",
+ "axis",
+ "badajoz",
+ "baghdad",
+ "bahn",
+ "bale",
+ "baltimore",
+ "barcelona",
+ "baseball",
+ "basel",
+ "baths",
+ "bauern",
+ "beauxarts",
+ "beeldengeluid",
+ "bellevue",
+ "bergbau",
+ "berkeley",
+ "berlin",
+ "bern",
+ "bible",
+ "bilbao",
+ "bill",
+ "birdart",
+ "birthplace",
+ "bonn",
+ "boston",
+ "botanical",
+ "botanicalgarden",
+ "botanicgarden",
+ "botany",
+ "brandywinevalley",
+ "brasil",
+ "bristol",
+ "british",
+ "britishcolumbia",
+ "broadcast",
+ "brunel",
+ "brussel",
+ "brussels",
+ "bruxelles",
+ "building",
+ "burghof",
+ "bus",
+ "bushey",
+ "cadaques",
+ "california",
+ "cambridge",
+ "can",
+ "canada",
+ "capebreton",
+ "carrier",
+ "cartoonart",
+ "casadelamoneda",
+ "castle",
+ "castres",
+ "celtic",
+ "center",
+ "chattanooga",
+ "cheltenham",
+ "chesapeakebay",
+ "chicago",
+ "children",
+ "childrens",
+ "childrensgarden",
+ "chiropractic",
+ "chocolate",
+ "christiansburg",
+ "cincinnati",
+ "cinema",
+ "circus",
+ "civilisation",
+ "civilization",
+ "civilwar",
+ "clinton",
+ "clock",
+ "coal",
+ "coastaldefence",
+ "cody",
+ "coldwar",
+ "collection",
+ "colonialwilliamsburg",
+ "coloradoplateau",
+ "columbia",
+ "columbus",
+ "communication",
+ "communications",
+ "community",
+ "computer",
+ "computerhistory",
+ "contemporary",
+ "contemporaryart",
+ "convent",
+ "copenhagen",
+ "corporation",
+ "corvette",
+ "costume",
+ "countryestate",
+ "county",
+ "crafts",
+ "cranbrook",
+ "creation",
+ "cultural",
+ "culturalcenter",
+ "culture",
+ "cyber",
+ "cymru",
+ "dali",
+ "dallas",
+ "database",
+ "ddr",
+ "decorativearts",
+ "delaware",
+ "delmenhorst",
+ "denmark",
+ "depot",
+ "design",
+ "detroit",
+ "dinosaur",
+ "discovery",
+ "dolls",
+ "donostia",
+ "durham",
+ "eastafrica",
+ "eastcoast",
+ "education",
+ "educational",
+ "egyptian",
+ "eisenbahn",
+ "elburg",
+ "elvendrell",
+ "embroidery",
+ "encyclopedic",
+ "england",
+ "entomology",
+ "environment",
+ "environmentalconservation",
+ "epilepsy",
+ "essex",
+ "estate",
+ "ethnology",
+ "exeter",
+ "exhibition",
+ "family",
+ "farm",
+ "farmequipment",
+ "farmers",
+ "farmstead",
+ "field",
+ "figueres",
+ "filatelia",
+ "film",
+ "fineart",
+ "finearts",
+ "finland",
+ "flanders",
+ "florida",
+ "force",
+ "fortmissoula",
+ "fortworth",
+ "foundation",
+ "francaise",
+ "frankfurt",
+ "franziskaner",
+ "freemasonry",
+ "freiburg",
+ "fribourg",
+ "frog",
+ "fundacio",
+ "furniture",
+ "gallery",
+ "garden",
+ "gateway",
+ "geelvinck",
+ "gemological",
+ "geology",
+ "georgia",
+ "giessen",
+ "glas",
+ "glass",
+ "gorge",
+ "grandrapids",
+ "graz",
+ "guernsey",
+ "halloffame",
+ "hamburg",
+ "handson",
+ "harvestcelebration",
+ "hawaii",
+ "health",
+ "heimatunduhren",
+ "hellas",
+ "helsinki",
+ "hembygdsforbund",
+ "heritage",
+ "histoire",
+ "historical",
+ "historicalsociety",
+ "historichouses",
+ "historisch",
+ "historisches",
+ "history",
+ "historyofscience",
+ "horology",
+ "house",
+ "humanities",
+ "illustration",
+ "imageandsound",
+ "indian",
+ "indiana",
+ "indianapolis",
+ "indianmarket",
+ "intelligence",
+ "interactive",
+ "iraq",
+ "iron",
+ "isleofman",
+ "jamison",
+ "jefferson",
+ "jerusalem",
+ "jewelry",
+ "jewish",
+ "jewishart",
+ "jfk",
+ "journalism",
+ "judaica",
+ "judygarland",
+ "juedisches",
+ "juif",
+ "karate",
+ "karikatur",
+ "kids",
+ "koebenhavn",
+ "koeln",
+ "kunst",
+ "kunstsammlung",
+ "kunstunddesign",
+ "labor",
+ "labour",
+ "lajolla",
+ "lancashire",
+ "landes",
+ "lans",
+ "larsson",
+ "lewismiller",
+ "lincoln",
+ "linz",
+ "living",
+ "livinghistory",
+ "localhistory",
+ "london",
+ "losangeles",
+ "louvre",
+ "loyalist",
+ "lucerne",
+ "luxembourg",
+ "luzern",
+ "mad",
+ "madrid",
+ "mallorca",
+ "manchester",
+ "mansion",
+ "mansions",
+ "manx",
+ "marburg",
+ "maritime",
+ "maritimo",
+ "maryland",
+ "marylhurst",
+ "media",
+ "medical",
+ "medizinhistorisches",
+ "meeres",
+ "memorial",
+ "mesaverde",
+ "michigan",
+ "midatlantic",
+ "military",
+ "mill",
+ "miners",
+ "mining",
+ "minnesota",
+ "missile",
+ "missoula",
+ "modern",
+ "moma",
+ "money",
+ "monmouth",
+ "monticello",
+ "montreal",
+ "moscow",
+ "motorcycle",
+ "muenchen",
+ "muenster",
+ "mulhouse",
+ "muncie",
+ "museet",
+ "museumcenter",
+ "museumvereniging",
+ "music",
+ "national",
+ "nationalfirearms",
+ "nationalheritage",
+ "nativeamerican",
+ "naturalhistory",
+ "naturalhistorymuseum",
+ "naturalsciences",
+ "nature",
+ "naturhistorisches",
+ "natuurwetenschappen",
+ "naumburg",
+ "naval",
+ "nebraska",
+ "neues",
+ "newhampshire",
+ "newjersey",
+ "newmexico",
+ "newport",
+ "newspaper",
+ "newyork",
+ "niepce",
+ "norfolk",
+ "north",
+ "nrw",
+ "nuernberg",
+ "nuremberg",
+ "nyc",
+ "nyny",
+ "oceanographic",
+ "oceanographique",
+ "omaha",
+ "online",
+ "ontario",
+ "openair",
+ "oregon",
+ "oregontrail",
+ "otago",
+ "oxford",
+ "pacific",
+ "paderborn",
+ "palace",
+ "paleo",
+ "palmsprings",
+ "panama",
+ "paris",
+ "pasadena",
+ "pharmacy",
+ "philadelphia",
+ "philadelphiaarea",
+ "philately",
+ "phoenix",
+ "photography",
+ "pilots",
+ "pittsburgh",
+ "planetarium",
+ "plantation",
+ "plants",
+ "plaza",
+ "portal",
+ "portland",
+ "portlligat",
+ "posts-and-telecommunications",
+ "preservation",
+ "presidio",
+ "press",
+ "project",
+ "public",
+ "pubol",
+ "quebec",
+ "railroad",
+ "railway",
+ "research",
+ "resistance",
+ "riodejaneiro",
+ "rochester",
+ "rockart",
+ "roma",
+ "russia",
+ "saintlouis",
+ "salem",
+ "salvadordali",
+ "salzburg",
+ "sandiego",
+ "sanfrancisco",
+ "santabarbara",
+ "santacruz",
+ "santafe",
+ "saskatchewan",
+ "satx",
+ "savannahga",
+ "schlesisches",
+ "schoenbrunn",
+ "schokoladen",
+ "school",
+ "schweiz",
+ "science",
+ "science-fiction",
+ "scienceandhistory",
+ "scienceandindustry",
+ "sciencecenter",
+ "sciencecenters",
+ "sciencehistory",
+ "sciences",
+ "sciencesnaturelles",
+ "scotland",
+ "seaport",
+ "settlement",
+ "settlers",
+ "shell",
+ "sherbrooke",
+ "sibenik",
+ "silk",
+ "ski",
+ "skole",
+ "society",
+ "sologne",
+ "soundandvision",
+ "southcarolina",
+ "southwest",
+ "space",
+ "spy",
+ "square",
+ "stadt",
+ "stalbans",
+ "starnberg",
+ "state",
+ "stateofdelaware",
+ "station",
+ "steam",
+ "steiermark",
+ "stjohn",
+ "stockholm",
+ "stpetersburg",
+ "stuttgart",
+ "suisse",
+ "surgeonshall",
+ "surrey",
+ "svizzera",
+ "sweden",
+ "sydney",
+ "tank",
+ "tcm",
+ "technology",
+ "telekommunikation",
+ "television",
+ "texas",
+ "textile",
+ "theater",
+ "time",
+ "timekeeping",
+ "topology",
+ "torino",
+ "touch",
+ "town",
+ "transport",
+ "tree",
+ "trolley",
+ "trust",
+ "trustee",
+ "uhren",
+ "ulm",
+ "undersea",
+ "university",
+ "usa",
+ "usantiques",
+ "usarts",
+ "uscountryestate",
+ "usculture",
+ "usdecorativearts",
+ "usgarden",
+ "ushistory",
+ "ushuaia",
+ "uslivinghistory",
+ "utah",
+ "uvic",
+ "valley",
+ "vantaa",
+ "versailles",
+ "viking",
+ "village",
+ "virginia",
+ "virtual",
+ "virtuel",
+ "vlaanderen",
+ "volkenkunde",
+ "wales",
+ "wallonie",
+ "war",
+ "washingtondc",
+ "watch-and-clock",
+ "watchandclock",
+ "western",
+ "westfalen",
+ "whaling",
+ "wildlife",
+ "williamsburg",
+ "windmill",
+ "workshop",
+ "xn--9dbhblg6di",
+ "xn--comunicaes-v6a2o",
+ "xn--correios-e-telecomunicaes-ghc29a",
+ "xn--h1aegh",
+ "xn--lns-qla",
+ "york",
+ "yorkshire",
+ "yosemite",
+ "youth",
+ "zoological",
+ "zoology",
+ "aero",
+ "biz",
+ "com",
+ "coop",
+ "edu",
+ "gov",
+ "info",
+ "int",
+ "mil",
+ "museum",
+ "name",
+ "net",
+ "org",
+ "pro",
+ "ac",
+ "biz",
+ "co",
+ "com",
+ "coop",
+ "edu",
+ "gov",
+ "int",
+ "museum",
+ "net",
+ "org",
+ "blogspot",
+ "com",
+ "edu",
+ "gob",
+ "net",
+ "org",
+ "blogspot",
+ "com",
+ "edu",
+ "gov",
+ "mil",
+ "name",
+ "net",
+ "org",
+ "ac",
+ "adv",
+ "co",
+ "edu",
+ "gov",
+ "mil",
+ "net",
+ "org",
+ "ca",
+ "cc",
+ "co",
+ "com",
+ "dr",
+ "in",
+ "info",
+ "mobi",
+ "mx",
+ "name",
+ "or",
+ "org",
+ "pro",
+ "school",
+ "tv",
+ "us",
+ "ws",
+ "her",
+ "his",
+ "forgot",
+ "forgot",
+ "asso",
+ "nom",
+ "alwaysdata",
+ "at-band-camp",
+ "azure-mobile",
+ "azurewebsites",
+ "barsy",
+ "blogdns",
+ "bounceme",
+ "bplaced",
+ "broke-it",
+ "buyshouses",
+ "cdn77",
+ "cdn77-ssl",
+ "cloudapp",
+ "cloudfront",
+ "cloudfunctions",
+ "cryptonomic",
+ "ddns",
+ "definima",
+ "dnsalias",
+ "dnsdojo",
+ "does-it",
+ "dontexist",
+ "dsmynas",
+ "dynalias",
+ "dynathome",
+ "dynv6",
+ "eating-organic",
+ "endofinternet",
+ "familyds",
+ "fastly",
+ "fastlylb",
+ "feste-ip",
+ "firewall-gateway",
+ "from-az",
+ "from-co",
+ "from-la",
+ "from-ny",
+ "gb",
+ "gets-it",
+ "ham-radio-op",
+ "homeftp",
+ "homeip",
+ "homelinux",
+ "homeunix",
+ "hu",
+ "in",
+ "in-the-band",
+ "ipifony",
+ "is-a-chef",
+ "is-a-geek",
+ "isa-geek",
+ "jp",
+ "kicks-ass",
+ "knx-server",
+ "moonscale",
+ "mydissent",
+ "myeffect",
+ "myfritz",
+ "mymediapc",
+ "mypsx",
+ "mysecuritycamera",
+ "nhlfan",
+ "no-ip",
+ "office-on-the",
+ "pgafan",
+ "podzone",
+ "privatizehealthinsurance",
+ "rackmaze",
+ "redirectme",
+ "ru",
+ "scrapper-site",
+ "se",
+ "selfip",
+ "sells-it",
+ "servebbs",
+ "serveblog",
+ "serveftp",
+ "serveminecraft",
+ "square7",
+ "static-access",
+ "sytes",
+ "t3l3p0rt",
+ "thruhere",
+ "twmail",
+ "uk",
+ "webhop",
+ "za",
+ "r",
+ "freetls",
+ "map",
+ "prod",
+ "ssl",
+ "a",
+ "global",
+ "a",
+ "b",
+ "global",
+ "map",
+ "alces",
+ "arts",
+ "com",
+ "firm",
+ "info",
+ "net",
+ "other",
+ "per",
+ "rec",
+ "store",
+ "web",
+ "com",
+ "edu",
+ "gov",
+ "i",
+ "mil",
+ "mobi",
+ "name",
+ "net",
+ "org",
+ "sch",
+ "blogspot",
+ "ac",
+ "biz",
+ "co",
+ "com",
+ "edu",
+ "gob",
+ "in",
+ "info",
+ "int",
+ "mil",
+ "net",
+ "nom",
+ "org",
+ "web",
+ "blogspot",
+ "bv",
+ "co",
+ "transurl",
+ "virtueeldomein",
+ "aa",
+ "aarborte",
+ "aejrie",
+ "afjord",
+ "agdenes",
+ "ah",
+ "akershus",
+ "aknoluokta",
+ "akrehamn",
+ "al",
+ "alaheadju",
+ "alesund",
+ "algard",
+ "alstahaug",
+ "alta",
+ "alvdal",
+ "amli",
+ "amot",
+ "andasuolo",
+ "andebu",
+ "andoy",
+ "ardal",
+ "aremark",
+ "arendal",
+ "arna",
+ "aseral",
+ "asker",
+ "askim",
+ "askoy",
+ "askvoll",
+ "asnes",
+ "audnedaln",
+ "aukra",
+ "aure",
+ "aurland",
+ "aurskog-holand",
+ "austevoll",
+ "austrheim",
+ "averoy",
+ "badaddja",
+ "bahcavuotna",
+ "bahccavuotna",
+ "baidar",
+ "bajddar",
+ "balat",
+ "balestrand",
+ "ballangen",
+ "balsfjord",
+ "bamble",
+ "bardu",
+ "barum",
+ "batsfjord",
+ "bearalvahki",
+ "beardu",
+ "beiarn",
+ "berg",
+ "bergen",
+ "berlevag",
+ "bievat",
+ "bindal",
+ "birkenes",
+ "bjarkoy",
+ "bjerkreim",
+ "bjugn",
+ "blogspot",
+ "bodo",
+ "bokn",
+ "bomlo",
+ "bremanger",
+ "bronnoy",
+ "bronnoysund",
+ "brumunddal",
+ "bryne",
+ "bu",
+ "budejju",
+ "buskerud",
+ "bygland",
+ "bykle",
+ "cahcesuolo",
+ "co",
+ "davvenjarga",
+ "davvesiida",
+ "deatnu",
+ "dep",
+ "dielddanuorri",
+ "divtasvuodna",
+ "divttasvuotna",
+ "donna",
+ "dovre",
+ "drammen",
+ "drangedal",
+ "drobak",
+ "dyroy",
+ "egersund",
+ "eid",
+ "eidfjord",
+ "eidsberg",
+ "eidskog",
+ "eidsvoll",
+ "eigersund",
+ "elverum",
+ "enebakk",
+ "engerdal",
+ "etne",
+ "etnedal",
+ "evenassi",
+ "evenes",
+ "evje-og-hornnes",
+ "farsund",
+ "fauske",
+ "fedje",
+ "fet",
+ "fetsund",
+ "fhs",
+ "finnoy",
+ "fitjar",
+ "fjaler",
+ "fjell",
+ "fla",
+ "flakstad",
+ "flatanger",
+ "flekkefjord",
+ "flesberg",
+ "flora",
+ "floro",
+ "fm",
+ "folkebibl",
+ "folldal",
+ "forde",
+ "forsand",
+ "fosnes",
+ "frana",
+ "fredrikstad",
+ "frei",
+ "frogn",
+ "froland",
+ "frosta",
+ "froya",
+ "fuoisku",
+ "fuossko",
+ "fusa",
+ "fylkesbibl",
+ "fyresdal",
+ "gaivuotna",
+ "galsa",
+ "gamvik",
+ "gangaviika",
+ "gaular",
+ "gausdal",
+ "giehtavuoatna",
+ "gildeskal",
+ "giske",
+ "gjemnes",
+ "gjerdrum",
+ "gjerstad",
+ "gjesdal",
+ "gjovik",
+ "gloppen",
+ "gol",
+ "gran",
+ "grane",
+ "granvin",
+ "gratangen",
+ "grimstad",
+ "grong",
+ "grue",
+ "gulen",
+ "guovdageaidnu",
+ "ha",
+ "habmer",
+ "hadsel",
+ "hagebostad",
+ "halden",
+ "halsa",
+ "hamar",
+ "hamaroy",
+ "hammarfeasta",
+ "hammerfest",
+ "hapmir",
+ "haram",
+ "hareid",
+ "harstad",
+ "hasvik",
+ "hattfjelldal",
+ "haugesund",
+ "hedmark",
+ "hemne",
+ "hemnes",
+ "hemsedal",
+ "herad",
+ "hitra",
+ "hjartdal",
+ "hjelmeland",
+ "hl",
+ "hm",
+ "hobol",
+ "hof",
+ "hokksund",
+ "hol",
+ "hole",
+ "holmestrand",
+ "holtalen",
+ "honefoss",
+ "hordaland",
+ "hornindal",
+ "horten",
+ "hoyanger",
+ "hoylandet",
+ "hurdal",
+ "hurum",
+ "hvaler",
+ "hyllestad",
+ "ibestad",
+ "idrett",
+ "inderoy",
+ "iveland",
+ "ivgu",
+ "jan-mayen",
+ "jessheim",
+ "jevnaker",
+ "jolster",
+ "jondal",
+ "jorpeland",
+ "kafjord",
+ "karasjohka",
+ "karasjok",
+ "karlsoy",
+ "karmoy",
+ "kautokeino",
+ "kirkenes",
+ "klabu",
+ "klepp",
+ "kommune",
+ "kongsberg",
+ "kongsvinger",
+ "kopervik",
+ "kraanghke",
+ "kragero",
+ "kristiansand",
+ "kristiansund",
+ "krodsherad",
+ "krokstadelva",
+ "kvafjord",
+ "kvalsund",
+ "kvam",
+ "kvanangen",
+ "kvinesdal",
+ "kvinnherad",
+ "kviteseid",
+ "kvitsoy",
+ "laakesvuemie",
+ "lahppi",
+ "langevag",
+ "lardal",
+ "larvik",
+ "lavagis",
+ "lavangen",
+ "leangaviika",
+ "lebesby",
+ "leikanger",
+ "leirfjord",
+ "leirvik",
+ "leka",
+ "leksvik",
+ "lenvik",
+ "lerdal",
+ "lesja",
+ "levanger",
+ "lier",
+ "lierne",
+ "lillehammer",
+ "lillesand",
+ "lindas",
+ "lindesnes",
+ "loabat",
+ "lodingen",
+ "lom",
+ "loppa",
+ "lorenskog",
+ "loten",
+ "lund",
+ "lunner",
+ "luroy",
+ "luster",
+ "lyngdal",
+ "lyngen",
+ "malatvuopmi",
+ "malselv",
+ "malvik",
+ "mandal",
+ "marker",
+ "marnardal",
+ "masfjorden",
+ "masoy",
+ "matta-varjjat",
+ "meland",
+ "meldal",
+ "melhus",
+ "meloy",
+ "meraker",
+ "midsund",
+ "midtre-gauldal",
+ "mil",
+ "mjondalen",
+ "mo-i-rana",
+ "moareke",
+ "modalen",
+ "modum",
+ "molde",
+ "more-og-romsdal",
+ "mosjoen",
+ "moskenes",
+ "moss",
+ "mosvik",
+ "mr",
+ "muosat",
+ "museum",
+ "naamesjevuemie",
+ "namdalseid",
+ "namsos",
+ "namsskogan",
+ "nannestad",
+ "naroy",
+ "narviika",
+ "narvik",
+ "naustdal",
+ "navuotna",
+ "nedre-eiker",
+ "nesna",
+ "nesodden",
+ "nesoddtangen",
+ "nesseby",
+ "nesset",
+ "nissedal",
+ "nittedal",
+ "nl",
+ "nord-aurdal",
+ "nord-fron",
+ "nord-odal",
+ "norddal",
+ "nordkapp",
+ "nordland",
+ "nordre-land",
+ "nordreisa",
+ "nore-og-uvdal",
+ "notodden",
+ "notteroy",
+ "nt",
+ "odda",
+ "of",
+ "oksnes",
+ "ol",
+ "omasvuotna",
+ "oppdal",
+ "oppegard",
+ "orkanger",
+ "orkdal",
+ "orland",
+ "orskog",
+ "orsta",
+ "osen",
+ "oslo",
+ "osoyro",
+ "osteroy",
+ "ostfold",
+ "ostre-toten",
+ "overhalla",
+ "ovre-eiker",
+ "oyer",
+ "oygarden",
+ "oystre-slidre",
+ "porsanger",
+ "porsangu",
+ "porsgrunn",
+ "priv",
+ "rade",
+ "radoy",
+ "rahkkeravju",
+ "raholt",
+ "raisa",
+ "rakkestad",
+ "ralingen",
+ "rana",
+ "randaberg",
+ "rauma",
+ "rendalen",
+ "rennebu",
+ "rennesoy",
+ "rindal",
+ "ringebu",
+ "ringerike",
+ "ringsaker",
+ "risor",
+ "rissa",
+ "rl",
+ "roan",
+ "rodoy",
+ "rollag",
+ "romsa",
+ "romskog",
+ "roros",
+ "rost",
+ "royken",
+ "royrvik",
+ "ruovat",
+ "rygge",
+ "salangen",
+ "salat",
+ "saltdal",
+ "samnanger",
+ "sandefjord",
+ "sandnes",
+ "sandnessjoen",
+ "sandoy",
+ "sarpsborg",
+ "sauda",
+ "sauherad",
+ "sel",
+ "selbu",
+ "selje",
+ "seljord",
+ "sf",
+ "siellak",
+ "sigdal",
+ "siljan",
+ "sirdal",
+ "skanit",
+ "skanland",
+ "skaun",
+ "skedsmo",
+ "skedsmokorset",
+ "ski",
+ "skien",
+ "skierva",
+ "skiptvet",
+ "skjak",
+ "skjervoy",
+ "skodje",
+ "slattum",
+ "smola",
+ "snaase",
+ "snasa",
+ "snillfjord",
+ "snoasa",
+ "sogndal",
+ "sogne",
+ "sokndal",
+ "sola",
+ "solund",
+ "somna",
+ "sondre-land",
+ "songdalen",
+ "sor-aurdal",
+ "sor-fron",
+ "sor-odal",
+ "sor-varanger",
+ "sorfold",
+ "sorreisa",
+ "sortland",
+ "sorum",
+ "spjelkavik",
+ "spydeberg",
+ "st",
+ "stange",
+ "stat",
+ "stathelle",
+ "stavanger",
+ "stavern",
+ "steigen",
+ "steinkjer",
+ "stjordal",
+ "stjordalshalsen",
+ "stokke",
+ "stor-elvdal",
+ "stord",
+ "stordal",
+ "storfjord",
+ "strand",
+ "stranda",
+ "stryn",
+ "sula",
+ "suldal",
+ "sund",
+ "sunndal",
+ "surnadal",
+ "svalbard",
+ "sveio",
+ "svelvik",
+ "sykkylven",
+ "tana",
+ "tananger",
+ "telemark",
+ "time",
+ "tingvoll",
+ "tinn",
+ "tjeldsund",
+ "tjome",
+ "tm",
+ "tokke",
+ "tolga",
+ "tonsberg",
+ "torsken",
+ "tr",
+ "trana",
+ "tranby",
+ "tranoy",
+ "troandin",
+ "trogstad",
+ "tromsa",
+ "tromso",
+ "trondheim",
+ "trysil",
+ "tvedestrand",
+ "tydal",
+ "tynset",
+ "tysfjord",
+ "tysnes",
+ "tysvar",
+ "ullensaker",
+ "ullensvang",
+ "ulvik",
+ "unjarga",
+ "utsira",
+ "va",
+ "vaapste",
+ "vadso",
+ "vaga",
+ "vagan",
+ "vagsoy",
+ "vaksdal",
+ "valle",
+ "vang",
+ "vanylven",
+ "vardo",
+ "varggat",
+ "varoy",
+ "vefsn",
+ "vega",
+ "vegarshei",
+ "vennesla",
+ "verdal",
+ "verran",
+ "vestby",
+ "vestfold",
+ "vestnes",
+ "vestre-slidre",
+ "vestre-toten",
+ "vestvagoy",
+ "vevelstad",
+ "vf",
+ "vgs",
+ "vik",
+ "vikna",
+ "vindafjord",
+ "voagat",
+ "volda",
+ "voss",
+ "vossevangen",
+ "xn--andy-ira",
+ "xn--asky-ira",
+ "xn--aurskog-hland-jnb",
+ "xn--avery-yua",
+ "xn--bdddj-mrabd",
+ "xn--bearalvhki-y4a",
+ "xn--berlevg-jxa",
+ "xn--bhcavuotna-s4a",
+ "xn--bhccavuotna-k7a",
+ "xn--bidr-5nac",
+ "xn--bievt-0qa",
+ "xn--bjarky-fya",
+ "xn--bjddar-pta",
+ "xn--blt-elab",
+ "xn--bmlo-gra",
+ "xn--bod-2na",
+ "xn--brnny-wuac",
+ "xn--brnnysund-m8ac",
+ "xn--brum-voa",
+ "xn--btsfjord-9za",
+ "xn--davvenjrga-y4a",
+ "xn--dnna-gra",
+ "xn--drbak-wua",
+ "xn--dyry-ira",
+ "xn--eveni-0qa01ga",
+ "xn--finny-yua",
+ "xn--fjord-lra",
+ "xn--fl-zia",
+ "xn--flor-jra",
+ "xn--frde-gra",
+ "xn--frna-woa",
+ "xn--frya-hra",
+ "xn--ggaviika-8ya47h",
+ "xn--gildeskl-g0a",
+ "xn--givuotna-8ya",
+ "xn--gjvik-wua",
+ "xn--gls-elac",
+ "xn--h-2fa",
+ "xn--hbmer-xqa",
+ "xn--hcesuolo-7ya35b",
+ "xn--hgebostad-g3a",
+ "xn--hmmrfeasta-s4ac",
+ "xn--hnefoss-q1a",
+ "xn--hobl-ira",
+ "xn--holtlen-hxa",
+ "xn--hpmir-xqa",
+ "xn--hyanger-q1a",
+ "xn--hylandet-54a",
+ "xn--indery-fya",
+ "xn--jlster-bya",
+ "xn--jrpeland-54a",
+ "xn--karmy-yua",
+ "xn--kfjord-iua",
+ "xn--klbu-woa",
+ "xn--koluokta-7ya57h",
+ "xn--krager-gya",
+ "xn--kranghke-b0a",
+ "xn--krdsherad-m8a",
+ "xn--krehamn-dxa",
+ "xn--krjohka-hwab49j",
+ "xn--ksnes-uua",
+ "xn--kvfjord-nxa",
+ "xn--kvitsy-fya",
+ "xn--kvnangen-k0a",
+ "xn--l-1fa",
+ "xn--laheadju-7ya",
+ "xn--langevg-jxa",
+ "xn--ldingen-q1a",
+ "xn--leagaviika-52b",
+ "xn--lesund-hua",
+ "xn--lgrd-poac",
+ "xn--lhppi-xqa",
+ "xn--linds-pra",
+ "xn--loabt-0qa",
+ "xn--lrdal-sra",
+ "xn--lrenskog-54a",
+ "xn--lt-liac",
+ "xn--lten-gra",
+ "xn--lury-ira",
+ "xn--mely-ira",
+ "xn--merker-kua",
+ "xn--mjndalen-64a",
+ "xn--mlatvuopmi-s4a",
+ "xn--mli-tla",
+ "xn--mlselv-iua",
+ "xn--moreke-jua",
+ "xn--mosjen-eya",
+ "xn--mot-tla",
+ "xn--mre-og-romsdal-qqb",
+ "xn--msy-ula0h",
+ "xn--mtta-vrjjat-k7af",
+ "xn--muost-0qa",
+ "xn--nmesjevuemie-tcba",
+ "xn--nry-yla5g",
+ "xn--nttery-byae",
+ "xn--nvuotna-hwa",
+ "xn--oppegrd-ixa",
+ "xn--ostery-fya",
+ "xn--osyro-wua",
+ "xn--porsgu-sta26f",
+ "xn--rady-ira",
+ "xn--rdal-poa",
+ "xn--rde-ula",
+ "xn--rdy-0nab",
+ "xn--rennesy-v1a",
+ "xn--rhkkervju-01af",
+ "xn--rholt-mra",
+ "xn--risa-5na",
+ "xn--risr-ira",
+ "xn--rland-uua",
+ "xn--rlingen-mxa",
+ "xn--rmskog-bya",
+ "xn--rros-gra",
+ "xn--rskog-uua",
+ "xn--rst-0na",
+ "xn--rsta-fra",
+ "xn--ryken-vua",
+ "xn--ryrvik-bya",
+ "xn--s-1fa",
+ "xn--sandnessjen-ogb",
+ "xn--sandy-yua",
+ "xn--seral-lra",
+ "xn--sgne-gra",
+ "xn--skierv-uta",
+ "xn--skjervy-v1a",
+ "xn--skjk-soa",
+ "xn--sknit-yqa",
+ "xn--sknland-fxa",
+ "xn--slat-5na",
+ "xn--slt-elab",
+ "xn--smla-hra",
+ "xn--smna-gra",
+ "xn--snase-nra",
+ "xn--sndre-land-0cb",
+ "xn--snes-poa",
+ "xn--snsa-roa",
+ "xn--sr-aurdal-l8a",
+ "xn--sr-fron-q1a",
+ "xn--sr-odal-q1a",
+ "xn--sr-varanger-ggb",
+ "xn--srfold-bya",
+ "xn--srreisa-q1a",
+ "xn--srum-gra",
+ "xn--stfold-9xa",
+ "xn--stjrdal-s1a",
+ "xn--stjrdalshalsen-sqb",
+ "xn--stre-toten-zcb",
+ "xn--tjme-hra",
+ "xn--tnsberg-q1a",
+ "xn--trany-yua",
+ "xn--trgstad-r1a",
+ "xn--trna-woa",
+ "xn--troms-zua",
+ "xn--tysvr-vra",
+ "xn--unjrga-rta",
+ "xn--vads-jra",
+ "xn--vard-jra",
+ "xn--vegrshei-c0a",
+ "xn--vestvgy-ixa6o",
+ "xn--vg-yiab",
+ "xn--vgan-qoa",
+ "xn--vgsy-qoa0j",
+ "xn--vre-eiker-k8a",
+ "xn--vrggt-xqad",
+ "xn--vry-yla5g",
+ "xn--yer-zna",
+ "xn--ygarden-p1a",
+ "xn--ystre-slidre-ujb",
+ "gs",
+ "gs",
+ "nes",
+ "gs",
+ "nes",
+ "gs",
+ "os",
+ "valer",
+ "xn--vler-qoa",
+ "gs",
+ "gs",
+ "os",
+ "gs",
+ "heroy",
+ "sande",
+ "gs",
+ "gs",
+ "bo",
+ "heroy",
+ "xn--b-5ga",
+ "xn--hery-ira",
+ "gs",
+ "gs",
+ "gs",
+ "gs",
+ "valer",
+ "gs",
+ "gs",
+ "gs",
+ "gs",
+ "bo",
+ "xn--b-5ga",
+ "gs",
+ "gs",
+ "gs",
+ "sande",
+ "gs",
+ "sande",
+ "xn--hery-ira",
+ "xn--vler-qoa",
+ "biz",
+ "com",
+ "edu",
+ "gov",
+ "info",
+ "net",
+ "org",
+ "merseine",
+ "mine",
+ "shacknet",
+ "ac",
+ "co",
+ "cri",
+ "geek",
+ "gen",
+ "govt",
+ "health",
+ "iwi",
+ "kiwi",
+ "maori",
+ "mil",
+ "net",
+ "org",
+ "parliament",
+ "school",
+ "xn--mori-qsa",
+ "blogspot",
+ "co",
+ "com",
+ "edu",
+ "gov",
+ "med",
+ "museum",
+ "net",
+ "org",
+ "pro",
+ "homelink",
+ "barsy",
+ "ae",
+ "amune",
+ "blogdns",
+ "blogsite",
+ "bmoattachments",
+ "boldlygoingnowhere",
+ "cable-modem",
+ "cdn77",
+ "cdn77-secure",
+ "certmgr",
+ "cloudns",
+ "collegefan",
+ "couchpotatofries",
+ "ddnss",
+ "diskstation",
+ "dnsalias",
+ "dnsdojo",
+ "doesntexist",
+ "dontexist",
+ "doomdns",
+ "dsmynas",
+ "duckdns",
+ "dvrdns",
+ "dynalias",
+ "dyndns",
+ "endofinternet",
+ "endoftheinternet",
+ "eu",
+ "familyds",
+ "fedorainfracloud",
+ "fedorapeople",
+ "fedoraproject",
+ "from-me",
+ "game-host",
+ "gotdns",
+ "hepforge",
+ "hk",
+ "hobby-site",
+ "homedns",
+ "homeftp",
+ "homelinux",
+ "homeunix",
+ "hopto",
+ "is-a-bruinsfan",
+ "is-a-candidate",
+ "is-a-celticsfan",
+ "is-a-chef",
+ "is-a-geek",
+ "is-a-knight",
+ "is-a-linux-user",
+ "is-a-patsfan",
+ "is-a-soxfan",
+ "is-found",
+ "is-lost",
+ "is-saved",
+ "is-very-bad",
+ "is-very-evil",
+ "is-very-good",
+ "is-very-nice",
+ "is-very-sweet",
+ "isa-geek",
+ "js",
+ "kicks-ass",
+ "misconfused",
+ "mlbfan",
+ "my-firewall",
+ "myfirewall",
+ "myftp",
+ "mysecuritycamera",
+ "nflfan",
+ "no-ip",
+ "pimienta",
+ "podzone",
+ "poivron",
+ "potager",
+ "read-books",
+ "readmyblog",
+ "selfip",
+ "sellsyourhome",
+ "servebbs",
+ "serveftp",
+ "servegame",
+ "spdns",
+ "stuff-4-sale",
+ "sweetpepper",
+ "tunk",
+ "tuxfamily",
+ "twmail",
+ "ufcfan",
+ "us",
+ "webhop",
+ "wmflabs",
+ "za",
+ "zapto",
+ "tele",
+ "c",
+ "rsc",
+ "origin",
+ "ssl",
+ "go",
+ "home",
+ "al",
+ "asso",
+ "at",
+ "au",
+ "be",
+ "bg",
+ "ca",
+ "cd",
+ "ch",
+ "cn",
+ "cy",
+ "cz",
+ "de",
+ "dk",
+ "edu",
+ "ee",
+ "es",
+ "fi",
+ "fr",
+ "gr",
+ "hr",
+ "hu",
+ "ie",
+ "il",
+ "in",
+ "int",
+ "is",
+ "it",
+ "jp",
+ "kr",
+ "lt",
+ "lu",
+ "lv",
+ "mc",
+ "me",
+ "mk",
+ "mt",
+ "my",
+ "net",
+ "ng",
+ "nl",
+ "no",
+ "nz",
+ "paris",
+ "pl",
+ "pt",
+ "q-a",
+ "ro",
+ "ru",
+ "se",
+ "si",
+ "sk",
+ "tr",
+ "uk",
+ "us",
+ "cloud",
+ "nerdpol",
+ "abo",
+ "ac",
+ "com",
+ "edu",
+ "gob",
+ "ing",
+ "med",
+ "net",
+ "nom",
+ "org",
+ "sld",
+ "ybo",
+ "blogspot",
+ "com",
+ "edu",
+ "gob",
+ "mil",
+ "net",
+ "nom",
+ "org",
+ "com",
+ "edu",
+ "org",
+ "com",
+ "edu",
+ "gov",
+ "i",
+ "mil",
+ "net",
+ "ngo",
+ "org",
+ "biz",
+ "com",
+ "edu",
+ "fam",
+ "gob",
+ "gok",
+ "gon",
+ "gop",
+ "gos",
+ "gov",
+ "info",
+ "net",
+ "org",
+ "web",
+ "agro",
+ "aid",
+ "art",
+ "atm",
+ "augustow",
+ "auto",
+ "babia-gora",
+ "bedzin",
+ "beep",
+ "beskidy",
+ "bialowieza",
+ "bialystok",
+ "bielawa",
+ "bieszczady",
+ "biz",
+ "boleslawiec",
+ "bydgoszcz",
+ "bytom",
+ "cieszyn",
+ "co",
+ "com",
+ "czeladz",
+ "czest",
+ "dlugoleka",
+ "edu",
+ "elblag",
+ "elk",
+ "gda",
+ "gdansk",
+ "gdynia",
+ "gliwice",
+ "glogow",
+ "gmina",
+ "gniezno",
+ "gorlice",
+ "gov",
+ "grajewo",
+ "gsm",
+ "ilawa",
+ "info",
+ "jaworzno",
+ "jelenia-gora",
+ "jgora",
+ "kalisz",
+ "karpacz",
+ "kartuzy",
+ "kaszuby",
+ "katowice",
+ "kazimierz-dolny",
+ "kepno",
+ "ketrzyn",
+ "klodzko",
+ "kobierzyce",
+ "kolobrzeg",
+ "konin",
+ "konskowola",
+ "krakow",
+ "kutno",
+ "lapy",
+ "lebork",
+ "legnica",
+ "lezajsk",
+ "limanowa",
+ "lomza",
+ "lowicz",
+ "lubin",
+ "lukow",
+ "mail",
+ "malbork",
+ "malopolska",
+ "mazowsze",
+ "mazury",
+ "med",
+ "media",
+ "miasta",
+ "mielec",
+ "mielno",
+ "mil",
+ "mragowo",
+ "naklo",
+ "net",
+ "nieruchomosci",
+ "nom",
+ "nowaruda",
+ "nysa",
+ "olawa",
+ "olecko",
+ "olkusz",
+ "olsztyn",
+ "opoczno",
+ "opole",
+ "org",
+ "ostroda",
+ "ostroleka",
+ "ostrowiec",
+ "ostrowwlkp",
+ "pc",
+ "pila",
+ "pisz",
+ "podhale",
+ "podlasie",
+ "polkowice",
+ "pomorskie",
+ "pomorze",
+ "powiat",
+ "poznan",
+ "priv",
+ "prochowice",
+ "pruszkow",
+ "przeworsk",
+ "pulawy",
+ "radom",
+ "rawa-maz",
+ "realestate",
+ "rel",
+ "rybnik",
+ "rzeszow",
+ "sanok",
+ "sejny",
+ "sex",
+ "shop",
+ "sklep",
+ "skoczow",
+ "slask",
+ "slupsk",
+ "sopot",
+ "sos",
+ "sosnowiec",
+ "stalowa-wola",
+ "starachowice",
+ "stargard",
+ "suwalki",
+ "swidnica",
+ "swiebodzin",
+ "swinoujscie",
+ "szczecin",
+ "szczytno",
+ "szkola",
+ "targi",
+ "tarnobrzeg",
+ "tgory",
+ "tm",
+ "tourism",
+ "travel",
+ "turek",
+ "turystyka",
+ "tychy",
+ "ustka",
+ "walbrzych",
+ "warmia",
+ "warszawa",
+ "waw",
+ "wegrow",
+ "wielun",
+ "wlocl",
+ "wloclawek",
+ "wodzislaw",
+ "wolomin",
+ "wroc",
+ "wroclaw",
+ "zachpomor",
+ "zagan",
+ "zakopane",
+ "zarow",
+ "zgora",
+ "zgorzelec",
+ "ap",
+ "griw",
+ "ic",
+ "is",
+ "kmpsp",
+ "konsulat",
+ "kppsp",
+ "kwp",
+ "kwpsp",
+ "mup",
+ "mw",
+ "oirm",
+ "oum",
+ "pa",
+ "pinb",
+ "piw",
+ "po",
+ "psp",
+ "psse",
+ "pup",
+ "rzgw",
+ "sa",
+ "sdn",
+ "sko",
+ "so",
+ "sr",
+ "starostwo",
+ "ug",
+ "ugim",
+ "um",
+ "umig",
+ "upow",
+ "uppo",
+ "us",
+ "uw",
+ "uzs",
+ "wif",
+ "wiih",
+ "winb",
+ "wios",
+ "witd",
+ "wiw",
+ "wsa",
+ "wskr",
+ "wuoz",
+ "wzmiuw",
+ "zp",
+ "co",
+ "edu",
+ "gov",
+ "net",
+ "org",
+ "ac",
+ "biz",
+ "com",
+ "edu",
+ "est",
+ "gov",
+ "info",
+ "isla",
+ "name",
+ "net",
+ "org",
+ "pro",
+ "prof",
+ "aaa",
+ "aca",
+ "acct",
+ "avocat",
+ "bar",
+ "cloudns",
+ "cpa",
+ "eng",
+ "jur",
+ "law",
+ "med",
+ "recht",
+ "com",
+ "edu",
+ "gov",
+ "net",
+ "org",
+ "plo",
+ "sec",
+ "blogspot",
+ "com",
+ "edu",
+ "gov",
+ "int",
+ "net",
+ "nome",
+ "org",
+ "publ",
+ "belau",
+ "cloudns",
+ "co",
+ "ed",
+ "go",
+ "ne",
+ "or",
+ "com",
+ "coop",
+ "edu",
+ "gov",
+ "mil",
+ "net",
+ "org",
+ "blogspot",
+ "com",
+ "edu",
+ "gov",
+ "mil",
+ "name",
+ "net",
+ "org",
+ "sch",
+ "asso",
+ "blogspot",
+ "com",
+ "nom",
+ "ybo",
+ "arts",
+ "blogspot",
+ "com",
+ "firm",
+ "info",
+ "nom",
+ "nt",
+ "org",
+ "rec",
+ "shop",
+ "store",
+ "tm",
+ "www",
+ "ac",
+ "blogspot",
+ "co",
+ "edu",
+ "gov",
+ "in",
+ "org",
+ "ac",
+ "adygeya",
+ "bashkiria",
+ "bir",
+ "blogspot",
+ "cbg",
+ "cldmail",
+ "com",
+ "dagestan",
+ "edu",
+ "gov",
+ "grozny",
+ "int",
+ "kalmykia",
+ "kustanai",
+ "marine",
+ "mil",
+ "mordovia",
+ "msk",
+ "mytis",
+ "nalchik",
+ "nov",
+ "pyatigorsk",
+ "spb",
+ "test",
+ "vladikavkaz",
+ "vladimir",
+ "hb",
+ "ac",
+ "co",
+ "com",
+ "edu",
+ "gouv",
+ "gov",
+ "int",
+ "mil",
+ "net",
+ "com",
+ "edu",
+ "gov",
+ "med",
+ "net",
+ "org",
+ "pub",
+ "sch",
+ "com",
+ "edu",
+ "gov",
+ "net",
+ "org",
+ "com",
+ "edu",
+ "gov",
+ "net",
+ "org",
+ "ybo",
+ "com",
+ "edu",
+ "gov",
+ "info",
+ "med",
+ "net",
+ "org",
+ "tv",
+ "a",
+ "ac",
+ "b",
+ "bd",
+ "blogspot",
+ "brand",
+ "c",
+ "com",
+ "d",
+ "e",
+ "f",
+ "fh",
+ "fhsk",
+ "fhv",
+ "g",
+ "h",
+ "i",
+ "k",
+ "komforb",
+ "kommunalforbund",
+ "komvux",
+ "l",
+ "lanbib",
+ "m",
+ "n",
+ "naturbruksgymn",
+ "o",
+ "org",
+ "p",
+ "parti",
+ "pp",
+ "press",
+ "r",
+ "s",
+ "t",
+ "tm",
+ "u",
+ "w",
+ "x",
+ "y",
+ "z",
+ "blogspot",
+ "com",
+ "edu",
+ "gov",
+ "net",
+ "org",
+ "per",
+ "com",
+ "gov",
+ "hashbang",
+ "mil",
+ "net",
+ "now",
+ "org",
+ "platform",
+ "blogspot",
+ "cyon",
+ "platformsh",
+ "blogspot",
+ "com",
+ "edu",
+ "gov",
+ "net",
+ "org",
+ "art",
+ "blogspot",
+ "com",
+ "edu",
+ "gouv",
+ "org",
+ "perso",
+ "univ",
+ "com",
+ "net",
+ "org",
+ "stackspace",
+ "uber",
+ "xs4all",
+ "co",
+ "com",
+ "consulado",
+ "edu",
+ "embaixada",
+ "gov",
+ "mil",
+ "net",
+ "org",
+ "principe",
+ "saotome",
+ "store",
+ "abkhazia",
+ "adygeya",
+ "aktyubinsk",
+ "arkhangelsk",
+ "armenia",
+ "ashgabad",
+ "azerbaijan",
+ "balashov",
+ "bashkiria",
+ "bryansk",
+ "bukhara",
+ "chimkent",
+ "dagestan",
+ "east-kazakhstan",
+ "exnet",
+ "georgia",
+ "grozny",
+ "ivanovo",
+ "jambyl",
+ "kalmykia",
+ "kaluga",
+ "karacol",
+ "karaganda",
+ "karelia",
+ "khakassia",
+ "krasnodar",
+ "kurgan",
+ "kustanai",
+ "lenug",
+ "mangyshlak",
+ "mordovia",
+ "msk",
+ "murmansk",
+ "nalchik",
+ "navoi",
+ "north-kazakhstan",
+ "nov",
+ "obninsk",
+ "penza",
+ "pokrovsk",
+ "sochi",
+ "spb",
+ "tashkent",
+ "termez",
+ "togliatti",
+ "troitsk",
+ "tselinograd",
+ "tula",
+ "tuva",
+ "vladikavkaz",
+ "vladimir",
+ "vologda",
+ "barsy",
+ "com",
+ "edu",
+ "gob",
+ "org",
+ "red",
+ "gov",
+ "com",
+ "edu",
+ "gov",
+ "mil",
+ "net",
+ "org",
+ "knightpoint",
+ "ac",
+ "co",
+ "org",
+ "blogspot",
+ "ac",
+ "co",
+ "go",
+ "in",
+ "mi",
+ "net",
+ "or",
+ "ac",
+ "biz",
+ "co",
+ "com",
+ "edu",
+ "go",
+ "gov",
+ "int",
+ "mil",
+ "name",
+ "net",
+ "nic",
+ "org",
+ "test",
+ "web",
+ "gov",
+ "co",
+ "com",
+ "edu",
+ "gov",
+ "mil",
+ "net",
+ "nom",
+ "org",
+ "agrinet",
+ "com",
+ "defense",
+ "edunet",
+ "ens",
+ "fin",
+ "gov",
+ "ind",
+ "info",
+ "intl",
+ "mincom",
+ "nat",
+ "net",
+ "org",
+ "perso",
+ "rnrt",
+ "rns",
+ "rnu",
+ "tourism",
+ "turen",
+ "com",
+ "edu",
+ "gov",
+ "mil",
+ "net",
+ "org",
+ "vpnplus",
+ "av",
+ "bbs",
+ "bel",
+ "biz",
+ "com",
+ "dr",
+ "edu",
+ "gen",
+ "gov",
+ "info",
+ "k12",
+ "kep",
+ "mil",
+ "name",
+ "nc",
+ "net",
+ "org",
+ "pol",
+ "tel",
+ "tv",
+ "web",
+ "blogspot",
+ "gov",
+ "ybo",
+ "aero",
+ "biz",
+ "co",
+ "com",
+ "coop",
+ "edu",
+ "gov",
+ "info",
+ "int",
+ "jobs",
+ "mobi",
+ "museum",
+ "name",
+ "net",
+ "org",
+ "pro",
+ "travel",
+ "better-than",
+ "dyndns",
+ "on-the-web",
+ "worse-than",
+ "blogspot",
+ "club",
+ "com",
+ "ebiz",
+ "edu",
+ "game",
+ "gov",
+ "idv",
+ "mil",
+ "net",
+ "org",
+ "url",
+ "xn--czrw28b",
+ "xn--uc0atv",
+ "xn--zf0ao64a",
+ "mymailer",
+ "ac",
+ "co",
+ "go",
+ "hotel",
+ "info",
+ "me",
+ "mil",
+ "mobi",
+ "ne",
+ "or",
+ "sc",
+ "tv",
+ "biz",
+ "cc",
+ "cherkassy",
+ "cherkasy",
+ "chernigov",
+ "chernihiv",
+ "chernivtsi",
+ "chernovtsy",
+ "ck",
+ "cn",
+ "co",
+ "com",
+ "cr",
+ "crimea",
+ "cv",
+ "dn",
+ "dnepropetrovsk",
+ "dnipropetrovsk",
+ "dominic",
+ "donetsk",
+ "dp",
+ "edu",
+ "gov",
+ "if",
+ "in",
+ "inf",
+ "ivano-frankivsk",
+ "kh",
+ "kharkiv",
+ "kharkov",
+ "kherson",
+ "khmelnitskiy",
+ "khmelnytskyi",
+ "kiev",
+ "kirovograd",
+ "km",
+ "kr",
+ "krym",
+ "ks",
+ "kv",
+ "kyiv",
+ "lg",
+ "lt",
+ "ltd",
+ "lugansk",
+ "lutsk",
+ "lv",
+ "lviv",
+ "mk",
+ "mykolaiv",
+ "net",
+ "nikolaev",
+ "od",
+ "odesa",
+ "odessa",
+ "org",
+ "pl",
+ "poltava",
+ "pp",
+ "rivne",
+ "rovno",
+ "rv",
+ "sb",
+ "sebastopol",
+ "sevastopol",
+ "sm",
+ "sumy",
+ "te",
+ "ternopil",
+ "uz",
+ "uzhgorod",
+ "vinnica",
+ "vinnytsia",
+ "vn",
+ "volyn",
+ "yalta",
+ "zaporizhzhe",
+ "zaporizhzhia",
+ "zhitomir",
+ "zhytomyr",
+ "zp",
+ "zt",
+ "ac",
+ "blogspot",
+ "co",
+ "com",
+ "go",
+ "ne",
+ "or",
+ "org",
+ "sc",
+ "ac",
+ "co",
+ "gov",
+ "ltd",
+ "me",
+ "net",
+ "nhs",
+ "org",
+ "plc",
+ "police",
+ "sch",
+ "blogspot",
+ "no-ip",
+ "wellbeingzone",
+ "homeoffice",
+ "service",
+ "ak",
+ "al",
+ "ar",
+ "as",
+ "az",
+ "ca",
+ "cloudns",
+ "co",
+ "ct",
+ "dc",
+ "de",
+ "dni",
+ "drud",
+ "fed",
+ "fl",
+ "ga",
+ "golffan",
+ "gu",
+ "hi",
+ "ia",
+ "id",
+ "il",
+ "in",
+ "is-by",
+ "isa",
+ "kids",
+ "ks",
+ "ky",
+ "la",
+ "land-4-sale",
+ "ma",
+ "md",
+ "me",
+ "mi",
+ "mn",
+ "mo",
+ "ms",
+ "mt",
+ "nc",
+ "nd",
+ "ne",
+ "nh",
+ "nj",
+ "nm",
+ "noip",
+ "nsn",
+ "nv",
+ "ny",
+ "oh",
+ "ok",
+ "or",
+ "pa",
+ "pointto",
+ "pr",
+ "ri",
+ "sc",
+ "sd",
+ "stuff-4-sale",
+ "tn",
+ "tx",
+ "ut",
+ "va",
+ "vi",
+ "vt",
+ "wa",
+ "wi",
+ "wv",
+ "wy",
+ "cc",
+ "k12",
+ "lib",
+ "cc",
+ "k12",
+ "lib",
+ "cc",
+ "k12",
+ "lib",
+ "cc",
+ "k12",
+ "lib",
+ "cc",
+ "k12",
+ "lib",
+ "cc",
+ "k12",
+ "lib",
+ "cc",
+ "k12",
+ "lib",
+ "cc",
+ "k12",
+ "lib",
+ "cc",
+ "k12",
+ "lib",
+ "cc",
+ "k12",
+ "lib",
+ "cc",
+ "k12",
+ "lib",
+ "cc",
+ "k12",
+ "lib",
+ "cc",
+ "k12",
+ "lib",
+ "cc",
+ "lib",
+ "cc",
+ "k12",
+ "lib",
+ "cc",
+ "k12",
+ "lib",
+ "cc",
+ "k12",
+ "lib",
+ "cc",
+ "k12",
+ "lib",
+ "cc",
+ "k12",
+ "lib",
+ "cc",
+ "k12",
+ "lib",
+ "cc",
+ "k12",
+ "lib",
+ "cc",
+ "k12",
+ "lib",
+ "chtr",
+ "paroch",
+ "pvt",
+ "cc",
+ "k12",
+ "lib",
+ "cc",
+ "k12",
+ "lib",
+ "cc",
+ "k12",
+ "lib",
+ "cc",
+ "k12",
+ "lib",
+ "cc",
+ "k12",
+ "lib",
+ "cc",
+ "k12",
+ "lib",
+ "cc",
+ "k12",
+ "lib",
+ "cc",
+ "k12",
+ "lib",
+ "cc",
+ "lib",
+ "cc",
+ "k12",
+ "lib",
+ "cc",
+ "k12",
+ "lib",
+ "cc",
+ "k12",
+ "lib",
+ "cc",
+ "k12",
+ "lib",
+ "cc",
+ "k12",
+ "lib",
+ "cc",
+ "k12",
+ "lib",
+ "cc",
+ "k12",
+ "lib",
+ "cc",
+ "k12",
+ "lib",
+ "cc",
+ "k12",
+ "lib",
+ "cc",
+ "k12",
+ "lib",
+ "cc",
+ "k12",
+ "lib",
+ "cc",
+ "k12",
+ "lib",
+ "cc",
+ "k12",
+ "lib",
+ "cc",
+ "lib",
+ "cc",
+ "k12",
+ "lib",
+ "cc",
+ "k12",
+ "lib",
+ "cc",
+ "k12",
+ "lib",
+ "cc",
+ "k12",
+ "lib",
+ "cc",
+ "k12",
+ "lib",
+ "cc",
+ "k12",
+ "lib",
+ "cc",
+ "k12",
+ "lib",
+ "cc",
+ "k12",
+ "lib",
+ "cc",
+ "cc",
+ "k12",
+ "lib",
+ "com",
+ "edu",
+ "gub",
+ "mil",
+ "net",
+ "org",
+ "blogspot",
+ "co",
+ "com",
+ "net",
+ "org",
+ "com",
+ "edu",
+ "gov",
+ "mil",
+ "net",
+ "org",
+ "arts",
+ "co",
+ "com",
+ "e12",
+ "edu",
+ "firm",
+ "gob",
+ "gov",
+ "info",
+ "int",
+ "mil",
+ "net",
+ "org",
+ "rec",
+ "store",
+ "tec",
+ "web",
+ "co",
+ "com",
+ "k12",
+ "net",
+ "org",
+ "ac",
+ "biz",
+ "blogspot",
+ "com",
+ "edu",
+ "gov",
+ "health",
+ "info",
+ "int",
+ "name",
+ "net",
+ "org",
+ "pro",
+ "com",
+ "edu",
+ "net",
+ "org",
+ "advisor",
+ "com",
+ "dyndns",
+ "edu",
+ "gov",
+ "mypets",
+ "net",
+ "org",
+ "xn--80au",
+ "xn--90azh",
+ "xn--c1avg",
+ "xn--d1at",
+ "xn--o1ac",
+ "xn--o1ach",
+ "xn--12c1fe0br",
+ "xn--12cfi8ixb8l",
+ "xn--12co0c3b4eva",
+ "xn--h3cuzk1di",
+ "xn--m3ch0j3a",
+ "xn--o3cyx2a",
+ "fhapp",
+ "ac",
+ "agric",
+ "alt",
+ "co",
+ "edu",
+ "gov",
+ "grondar",
+ "law",
+ "mil",
+ "net",
+ "ngo",
+ "nis",
+ "nom",
+ "org",
+ "school",
+ "tm",
+ "web",
+ "blogspot",
+ "ac",
+ "biz",
+ "co",
+ "com",
+ "edu",
+ "gov",
+ "info",
+ "mil",
+ "net",
+ "org",
+ "sch",
+ "triton",
+ "ac",
+ "co",
+ "gov",
+ "mil",
+ "org",
+}
diff --git a/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/time/AUTHORS b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/time/AUTHORS
new file mode 100644
index 000000000..15167cd74
--- /dev/null
+++ b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/time/AUTHORS
@@ -0,0 +1,3 @@
+# This source code refers to The Go Authors for copyright purposes.
+# The master list of authors is in the main Go distribution,
+# visible at http://tip.golang.org/AUTHORS.
diff --git a/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/time/CONTRIBUTING.md b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/time/CONTRIBUTING.md
new file mode 100644
index 000000000..88dff59bc
--- /dev/null
+++ b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/time/CONTRIBUTING.md
@@ -0,0 +1,31 @@
+# Contributing to Go
+
+Go is an open source project.
+
+It is the work of hundreds of contributors. We appreciate your help!
+
+
+## Filing issues
+
+When [filing an issue](https://golang.org/issue/new), make sure to answer these five questions:
+
+1. What version of Go are you using (`go version`)?
+2. What operating system and processor architecture are you using?
+3. What did you do?
+4. What did you expect to see?
+5. What did you see instead?
+
+General questions should go to the [golang-nuts mailing list](https://groups.google.com/group/golang-nuts) instead of the issue tracker.
+The gophers there will answer or ask you to file an issue if you've tripped over a bug.
+
+## Contributing code
+
+Please read the [Contribution Guidelines](https://golang.org/doc/contribute.html)
+before sending patches.
+
+**We do not accept GitHub pull requests**
+(we use [Gerrit](https://code.google.com/p/gerrit/) instead for code review).
+
+Unless otherwise noted, the Go source files are distributed under
+the BSD-style license found in the LICENSE file.
+
diff --git a/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/time/CONTRIBUTORS b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/time/CONTRIBUTORS
new file mode 100644
index 000000000..1c4577e96
--- /dev/null
+++ b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/time/CONTRIBUTORS
@@ -0,0 +1,3 @@
+# This source code was written by the Go contributors.
+# The master list of contributors is in the main Go distribution,
+# visible at http://tip.golang.org/CONTRIBUTORS.
diff --git a/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/time/LICENSE b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/time/LICENSE
new file mode 100644
index 000000000..6a66aea5e
--- /dev/null
+++ b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/time/LICENSE
@@ -0,0 +1,27 @@
+Copyright (c) 2009 The Go Authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+ * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/time/PATENTS b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/time/PATENTS
new file mode 100644
index 000000000..733099041
--- /dev/null
+++ b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/time/PATENTS
@@ -0,0 +1,22 @@
+Additional IP Rights Grant (Patents)
+
+"This implementation" means the copyrightable works distributed by
+Google as part of the Go project.
+
+Google hereby grants to You a perpetual, worldwide, non-exclusive,
+no-charge, royalty-free, irrevocable (except as stated in this section)
+patent license to make, have made, use, offer to sell, sell, import,
+transfer and otherwise run, modify and propagate the contents of this
+implementation of Go, where such license applies only to those patent
+claims, both currently owned or controlled by Google and acquired in
+the future, licensable by Google that are necessarily infringed by this
+implementation of Go. This grant does not include claims that would be
+infringed only as a consequence of further modification of this
+implementation. If you or your agent or exclusive licensee institute or
+order or agree to the institution of patent litigation against any
+entity (including a cross-claim or counterclaim in a lawsuit) alleging
+that this implementation of Go or any code incorporated within this
+implementation of Go constitutes direct or contributory patent
+infringement, or inducement of patent infringement, then any patent
+rights granted to you under this License for this implementation of Go
+shall terminate as of the date such litigation is filed.
diff --git a/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/time/README b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/time/README
new file mode 100644
index 000000000..144e347b4
--- /dev/null
+++ b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/time/README
@@ -0,0 +1 @@
+This repository provides supplementary Go time packages.
diff --git a/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/time/rate/rate.go b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/time/rate/rate.go
new file mode 100644
index 000000000..eabcd1147
--- /dev/null
+++ b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/time/rate/rate.go
@@ -0,0 +1,380 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Package rate provides a rate limiter.
+package rate
+
+import (
+ "fmt"
+ "math"
+ "sync"
+ "time"
+)
+
+// Limit defines the maximum frequency of some events.
+// Limit is represented as number of events per second.
+// A zero Limit allows no events.
+type Limit float64
+
+// Inf is the infinite rate limit; it allows all events (even if burst is zero).
+const Inf = Limit(math.MaxFloat64)
+
+// Every converts a minimum time interval between events to a Limit.
+func Every(interval time.Duration) Limit {
+ if interval <= 0 {
+ return Inf
+ }
+ return 1 / Limit(interval.Seconds())
+}
+
+// A Limiter controls how frequently events are allowed to happen.
+// It implements a "token bucket" of size b, initially full and refilled
+// at rate r tokens per second.
+// Informally, in any large enough time interval, the Limiter limits the
+// rate to r tokens per second, with a maximum burst size of b events.
+// As a special case, if r == Inf (the infinite rate), b is ignored.
+// See https://en.wikipedia.org/wiki/Token_bucket for more about token buckets.
+//
+// The zero value is a valid Limiter, but it will reject all events.
+// Use NewLimiter to create non-zero Limiters.
+//
+// Limiter has three main methods, Allow, Reserve, and Wait.
+// Most callers should use Wait.
+//
+// Each of the three methods consumes a single token.
+// They differ in their behavior when no token is available.
+// If no token is available, Allow returns false.
+// If no token is available, Reserve returns a reservation for a future token
+// and the amount of time the caller must wait before using it.
+// If no token is available, Wait blocks until one can be obtained
+// or its associated context.Context is canceled.
+//
+// The methods AllowN, ReserveN, and WaitN consume n tokens.
+type Limiter struct {
+ limit Limit
+ burst int
+
+ mu sync.Mutex
+ tokens float64
+ // last is the last time the limiter's tokens field was updated
+ last time.Time
+ // lastEvent is the latest time of a rate-limited event (past or future)
+ lastEvent time.Time
+}
+
+// Limit returns the maximum overall event rate.
+func (lim *Limiter) Limit() Limit {
+ lim.mu.Lock()
+ defer lim.mu.Unlock()
+ return lim.limit
+}
+
+// Burst returns the maximum burst size. Burst is the maximum number of tokens
+// that can be consumed in a single call to Allow, Reserve, or Wait, so higher
+// Burst values allow more events to happen at once.
+// A zero Burst allows no events, unless limit == Inf.
+func (lim *Limiter) Burst() int {
+ return lim.burst
+}
+
+// NewLimiter returns a new Limiter that allows events up to rate r and permits
+// bursts of at most b tokens.
+func NewLimiter(r Limit, b int) *Limiter {
+ return &Limiter{
+ limit: r,
+ burst: b,
+ }
+}
+
+// Allow is shorthand for AllowN(time.Now(), 1).
+func (lim *Limiter) Allow() bool {
+ return lim.AllowN(time.Now(), 1)
+}
+
+// AllowN reports whether n events may happen at time now.
+// Use this method if you intend to drop / skip events that exceed the rate limit.
+// Otherwise use Reserve or Wait.
+func (lim *Limiter) AllowN(now time.Time, n int) bool {
+ return lim.reserveN(now, n, 0).ok
+}
+
+// A Reservation holds information about events that are permitted by a Limiter to happen after a delay.
+// A Reservation may be canceled, which may enable the Limiter to permit additional events.
+type Reservation struct {
+ ok bool
+ lim *Limiter
+ tokens int
+ timeToAct time.Time
+ // This is the Limit at reservation time, it can change later.
+ limit Limit
+}
+
+// OK returns whether the limiter can provide the requested number of tokens
+// within the maximum wait time. If OK is false, Delay returns InfDuration, and
+// Cancel does nothing.
+func (r *Reservation) OK() bool {
+ return r.ok
+}
+
+// Delay is shorthand for DelayFrom(time.Now()).
+func (r *Reservation) Delay() time.Duration {
+ return r.DelayFrom(time.Now())
+}
+
+// InfDuration is the duration returned by Delay when a Reservation is not OK.
+const InfDuration = time.Duration(1<<63 - 1)
+
+// DelayFrom returns the duration for which the reservation holder must wait
+// before taking the reserved action. Zero duration means act immediately.
+// InfDuration means the limiter cannot grant the tokens requested in this
+// Reservation within the maximum wait time.
+func (r *Reservation) DelayFrom(now time.Time) time.Duration {
+ if !r.ok {
+ return InfDuration
+ }
+ delay := r.timeToAct.Sub(now)
+ if delay < 0 {
+ return 0
+ }
+ return delay
+}
+
+// Cancel is shorthand for CancelAt(time.Now()).
+func (r *Reservation) Cancel() {
+ r.CancelAt(time.Now())
+ return
+}
+
+// CancelAt indicates that the reservation holder will not perform the reserved action
+// and reverses the effects of this Reservation on the rate limit as much as possible,
+// considering that other reservations may have already been made.
+func (r *Reservation) CancelAt(now time.Time) {
+ if !r.ok {
+ return
+ }
+
+ r.lim.mu.Lock()
+ defer r.lim.mu.Unlock()
+
+ if r.lim.limit == Inf || r.tokens == 0 || r.timeToAct.Before(now) {
+ return
+ }
+
+ // calculate tokens to restore
+ // The duration between lim.lastEvent and r.timeToAct tells us how many tokens were reserved
+ // after r was obtained. These tokens should not be restored.
+ restoreTokens := float64(r.tokens) - r.limit.tokensFromDuration(r.lim.lastEvent.Sub(r.timeToAct))
+ if restoreTokens <= 0 {
+ return
+ }
+ // advance time to now
+ now, _, tokens := r.lim.advance(now)
+ // calculate new number of tokens
+ tokens += restoreTokens
+ if burst := float64(r.lim.burst); tokens > burst {
+ tokens = burst
+ }
+ // update state
+ r.lim.last = now
+ r.lim.tokens = tokens
+ if r.timeToAct == r.lim.lastEvent {
+ prevEvent := r.timeToAct.Add(r.limit.durationFromTokens(float64(-r.tokens)))
+ if !prevEvent.Before(now) {
+ r.lim.lastEvent = prevEvent
+ }
+ }
+
+ return
+}
+
+// Reserve is shorthand for ReserveN(time.Now(), 1).
+func (lim *Limiter) Reserve() *Reservation {
+ return lim.ReserveN(time.Now(), 1)
+}
+
+// ReserveN returns a Reservation that indicates how long the caller must wait before n events happen.
+// The Limiter takes this Reservation into account when allowing future events.
+// ReserveN returns false if n exceeds the Limiter's burst size.
+// Usage example:
+// r := lim.ReserveN(time.Now(), 1)
+// if !r.OK() {
+// // Not allowed to act! Did you remember to set lim.burst to be > 0 ?
+// return
+// }
+// time.Sleep(r.Delay())
+// Act()
+// Use this method if you wish to wait and slow down in accordance with the rate limit without dropping events.
+// If you need to respect a deadline or cancel the delay, use Wait instead.
+// To drop or skip events exceeding rate limit, use Allow instead.
+func (lim *Limiter) ReserveN(now time.Time, n int) *Reservation {
+ r := lim.reserveN(now, n, InfDuration)
+ return &r
+}
+
+// contextContext is a temporary(?) copy of the context.Context type
+// to support both Go 1.6 using golang.org/x/net/context and Go 1.7+
+// with the built-in context package. If people ever stop using Go 1.6
+// we can remove this.
+type contextContext interface {
+ Deadline() (deadline time.Time, ok bool)
+ Done() <-chan struct{}
+ Err() error
+ Value(key interface{}) interface{}
+}
+
+// Wait is shorthand for WaitN(ctx, 1).
+func (lim *Limiter) wait(ctx contextContext) (err error) {
+ return lim.WaitN(ctx, 1)
+}
+
+// WaitN blocks until lim permits n events to happen.
+// It returns an error if n exceeds the Limiter's burst size, the Context is
+// canceled, or the expected wait time exceeds the Context's Deadline.
+// The burst limit is ignored if the rate limit is Inf.
+func (lim *Limiter) waitN(ctx contextContext, n int) (err error) {
+ if n > lim.burst && lim.limit != Inf {
+ return fmt.Errorf("rate: Wait(n=%d) exceeds limiter's burst %d", n, lim.burst)
+ }
+ // Check if ctx is already cancelled
+ select {
+ case <-ctx.Done():
+ return ctx.Err()
+ default:
+ }
+ // Determine wait limit
+ now := time.Now()
+ waitLimit := InfDuration
+ if deadline, ok := ctx.Deadline(); ok {
+ waitLimit = deadline.Sub(now)
+ }
+ // Reserve
+ r := lim.reserveN(now, n, waitLimit)
+ if !r.ok {
+ return fmt.Errorf("rate: Wait(n=%d) would exceed context deadline", n)
+ }
+ // Wait
+ t := time.NewTimer(r.DelayFrom(now))
+ defer t.Stop()
+ select {
+ case <-t.C:
+ // We can proceed.
+ return nil
+ case <-ctx.Done():
+ // Context was canceled before we could proceed. Cancel the
+ // reservation, which may permit other events to proceed sooner.
+ r.Cancel()
+ return ctx.Err()
+ }
+}
+
+// SetLimit is shorthand for SetLimitAt(time.Now(), newLimit).
+func (lim *Limiter) SetLimit(newLimit Limit) {
+ lim.SetLimitAt(time.Now(), newLimit)
+}
+
+// SetLimitAt sets a new Limit for the limiter. The new Limit, and Burst, may be violated
+// or underutilized by those which reserved (using Reserve or Wait) but did not yet act
+// before SetLimitAt was called.
+func (lim *Limiter) SetLimitAt(now time.Time, newLimit Limit) {
+ lim.mu.Lock()
+ defer lim.mu.Unlock()
+
+ now, _, tokens := lim.advance(now)
+
+ lim.last = now
+ lim.tokens = tokens
+ lim.limit = newLimit
+}
+
+// reserveN is a helper method for AllowN, ReserveN, and WaitN.
+// maxFutureReserve specifies the maximum reservation wait duration allowed.
+// reserveN returns Reservation, not *Reservation, to avoid allocation in AllowN and WaitN.
+func (lim *Limiter) reserveN(now time.Time, n int, maxFutureReserve time.Duration) Reservation {
+ lim.mu.Lock()
+
+ if lim.limit == Inf {
+ lim.mu.Unlock()
+ return Reservation{
+ ok: true,
+ lim: lim,
+ tokens: n,
+ timeToAct: now,
+ }
+ }
+
+ now, last, tokens := lim.advance(now)
+
+ // Calculate the remaining number of tokens resulting from the request.
+ tokens -= float64(n)
+
+ // Calculate the wait duration
+ var waitDuration time.Duration
+ if tokens < 0 {
+ waitDuration = lim.limit.durationFromTokens(-tokens)
+ }
+
+ // Decide result
+ ok := n <= lim.burst && waitDuration <= maxFutureReserve
+
+ // Prepare reservation
+ r := Reservation{
+ ok: ok,
+ lim: lim,
+ limit: lim.limit,
+ }
+ if ok {
+ r.tokens = n
+ r.timeToAct = now.Add(waitDuration)
+ }
+
+ // Update state
+ if ok {
+ lim.last = now
+ lim.tokens = tokens
+ lim.lastEvent = r.timeToAct
+ } else {
+ lim.last = last
+ }
+
+ lim.mu.Unlock()
+ return r
+}
+
+// advance calculates and returns an updated state for lim resulting from the passage of time.
+// lim is not changed.
+func (lim *Limiter) advance(now time.Time) (newNow time.Time, newLast time.Time, newTokens float64) {
+ last := lim.last
+ if now.Before(last) {
+ last = now
+ }
+
+ // Avoid making delta overflow below when last is very old.
+ maxElapsed := lim.limit.durationFromTokens(float64(lim.burst) - lim.tokens)
+ elapsed := now.Sub(last)
+ if elapsed > maxElapsed {
+ elapsed = maxElapsed
+ }
+
+ // Calculate the new number of tokens, due to time that passed.
+ delta := lim.limit.tokensFromDuration(elapsed)
+ tokens := lim.tokens + delta
+ if burst := float64(lim.burst); tokens > burst {
+ tokens = burst
+ }
+
+ return now, last, tokens
+}
+
+// durationFromTokens is a unit conversion function from the number of tokens to the duration
+// of time it takes to accumulate them at a rate of limit tokens per second.
+func (limit Limit) durationFromTokens(tokens float64) time.Duration {
+ seconds := tokens / float64(limit)
+ return time.Nanosecond * time.Duration(1e9*seconds)
+}
+
+// tokensFromDuration is a unit conversion function from a time duration to the number of tokens
+// which could be accumulated during that duration at a rate of limit tokens per second.
+func (limit Limit) tokensFromDuration(d time.Duration) float64 {
+ return d.Seconds() * float64(limit)
+}
diff --git a/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/time/rate/rate_go16.go b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/time/rate/rate_go16.go
new file mode 100644
index 000000000..6bab1850f
--- /dev/null
+++ b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/time/rate/rate_go16.go
@@ -0,0 +1,21 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build !go1.7
+
+package rate
+
+import "golang.org/x/net/context"
+
+// Wait is shorthand for WaitN(ctx, 1).
+func (lim *Limiter) Wait(ctx context.Context) (err error) {
+ return lim.waitN(ctx, 1)
+}
+
+// WaitN blocks until lim permits n events to happen.
+// It returns an error if n exceeds the Limiter's burst size, the Context is
+// canceled, or the expected wait time exceeds the Context's Deadline.
+func (lim *Limiter) WaitN(ctx context.Context, n int) (err error) {
+ return lim.waitN(ctx, n)
+}
diff --git a/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/time/rate/rate_go17.go b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/time/rate/rate_go17.go
new file mode 100644
index 000000000..f90d85f51
--- /dev/null
+++ b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/time/rate/rate_go17.go
@@ -0,0 +1,21 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build go1.7
+
+package rate
+
+import "context"
+
+// Wait is shorthand for WaitN(ctx, 1).
+func (lim *Limiter) Wait(ctx context.Context) (err error) {
+ return lim.waitN(ctx, 1)
+}
+
+// WaitN blocks until lim permits n events to happen.
+// It returns an error if n exceeds the Limiter's burst size, the Context is
+// canceled, or the expected wait time exceeds the Context's Deadline.
+func (lim *Limiter) WaitN(ctx context.Context, n int) (err error) {
+ return lim.waitN(ctx, n)
+}
diff --git a/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/time/rate/rate_test.go b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/time/rate/rate_test.go
new file mode 100644
index 000000000..e8add694f
--- /dev/null
+++ b/vendor/github.com/rsc/letsencrypt/vendor/golang.org/x/time/rate/rate_test.go
@@ -0,0 +1,449 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build go1.7
+
+package rate
+
+import (
+ "context"
+ "math"
+ "runtime"
+ "sync"
+ "sync/atomic"
+ "testing"
+ "time"
+)
+
+func TestLimit(t *testing.T) {
+ if Limit(10) == Inf {
+ t.Errorf("Limit(10) == Inf should be false")
+ }
+}
+
+func closeEnough(a, b Limit) bool {
+ return (math.Abs(float64(a)/float64(b)) - 1.0) < 1e-9
+}
+
+func TestEvery(t *testing.T) {
+ cases := []struct {
+ interval time.Duration
+ lim Limit
+ }{
+ {0, Inf},
+ {-1, Inf},
+ {1 * time.Nanosecond, Limit(1e9)},
+ {1 * time.Microsecond, Limit(1e6)},
+ {1 * time.Millisecond, Limit(1e3)},
+ {10 * time.Millisecond, Limit(100)},
+ {100 * time.Millisecond, Limit(10)},
+ {1 * time.Second, Limit(1)},
+ {2 * time.Second, Limit(0.5)},
+ {time.Duration(2.5 * float64(time.Second)), Limit(0.4)},
+ {4 * time.Second, Limit(0.25)},
+ {10 * time.Second, Limit(0.1)},
+ {time.Duration(math.MaxInt64), Limit(1e9 / float64(math.MaxInt64))},
+ }
+ for _, tc := range cases {
+ lim := Every(tc.interval)
+ if !closeEnough(lim, tc.lim) {
+ t.Errorf("Every(%v) = %v want %v", tc.interval, lim, tc.lim)
+ }
+ }
+}
+
+const (
+ d = 100 * time.Millisecond
+)
+
+var (
+ t0 = time.Now()
+ t1 = t0.Add(time.Duration(1) * d)
+ t2 = t0.Add(time.Duration(2) * d)
+ t3 = t0.Add(time.Duration(3) * d)
+ t4 = t0.Add(time.Duration(4) * d)
+ t5 = t0.Add(time.Duration(5) * d)
+ t9 = t0.Add(time.Duration(9) * d)
+)
+
+type allow struct {
+ t time.Time
+ n int
+ ok bool
+}
+
+func run(t *testing.T, lim *Limiter, allows []allow) {
+ for i, allow := range allows {
+ ok := lim.AllowN(allow.t, allow.n)
+ if ok != allow.ok {
+ t.Errorf("step %d: lim.AllowN(%v, %v) = %v want %v",
+ i, allow.t, allow.n, ok, allow.ok)
+ }
+ }
+}
+
+func TestLimiterBurst1(t *testing.T) {
+ run(t, NewLimiter(10, 1), []allow{
+ {t0, 1, true},
+ {t0, 1, false},
+ {t0, 1, false},
+ {t1, 1, true},
+ {t1, 1, false},
+ {t1, 1, false},
+ {t2, 2, false}, // burst size is 1, so n=2 always fails
+ {t2, 1, true},
+ {t2, 1, false},
+ })
+}
+
+func TestLimiterBurst3(t *testing.T) {
+ run(t, NewLimiter(10, 3), []allow{
+ {t0, 2, true},
+ {t0, 2, false},
+ {t0, 1, true},
+ {t0, 1, false},
+ {t1, 4, false},
+ {t2, 1, true},
+ {t3, 1, true},
+ {t4, 1, true},
+ {t4, 1, true},
+ {t4, 1, false},
+ {t4, 1, false},
+ {t9, 3, true},
+ {t9, 0, true},
+ })
+}
+
+func TestLimiterJumpBackwards(t *testing.T) {
+ run(t, NewLimiter(10, 3), []allow{
+ {t1, 1, true}, // start at t1
+ {t0, 1, true}, // jump back to t0, two tokens remain
+ {t0, 1, true},
+ {t0, 1, false},
+ {t0, 1, false},
+ {t1, 1, true}, // got a token
+ {t1, 1, false},
+ {t1, 1, false},
+ {t2, 1, true}, // got another token
+ {t2, 1, false},
+ {t2, 1, false},
+ })
+}
+
+func TestSimultaneousRequests(t *testing.T) {
+ const (
+ limit = 1
+ burst = 5
+ numRequests = 15
+ )
+ var (
+ wg sync.WaitGroup
+ numOK = uint32(0)
+ )
+
+ // Very slow replenishing bucket.
+ lim := NewLimiter(limit, burst)
+
+ // Tries to take a token, atomically updates the counter and decreases the wait
+ // group counter.
+ f := func() {
+ defer wg.Done()
+ if ok := lim.Allow(); ok {
+ atomic.AddUint32(&numOK, 1)
+ }
+ }
+
+ wg.Add(numRequests)
+ for i := 0; i < numRequests; i++ {
+ go f()
+ }
+ wg.Wait()
+ if numOK != burst {
+ t.Errorf("numOK = %d, want %d", numOK, burst)
+ }
+}
+
+func TestLongRunningQPS(t *testing.T) {
+ if testing.Short() {
+ t.Skip("skipping in short mode")
+ }
+ if runtime.GOOS == "openbsd" {
+ t.Skip("low resolution time.Sleep invalidates test (golang.org/issue/14183)")
+ return
+ }
+
+ // The test runs for a few seconds executing many requests and then checks
+ // that overall number of requests is reasonable.
+ const (
+ limit = 100
+ burst = 100
+ )
+ var numOK = int32(0)
+
+ lim := NewLimiter(limit, burst)
+
+ var wg sync.WaitGroup
+ f := func() {
+ if ok := lim.Allow(); ok {
+ atomic.AddInt32(&numOK, 1)
+ }
+ wg.Done()
+ }
+
+ start := time.Now()
+ end := start.Add(5 * time.Second)
+ for time.Now().Before(end) {
+ wg.Add(1)
+ go f()
+
+ // This will still offer ~500 requests per second, but won't consume
+ // outrageous amount of CPU.
+ time.Sleep(2 * time.Millisecond)
+ }
+ wg.Wait()
+ elapsed := time.Since(start)
+ ideal := burst + (limit * float64(elapsed) / float64(time.Second))
+
+ // We should never get more requests than allowed.
+ if want := int32(ideal + 1); numOK > want {
+ t.Errorf("numOK = %d, want %d (ideal %f)", numOK, want, ideal)
+ }
+ // We should get very close to the number of requests allowed.
+ if want := int32(0.999 * ideal); numOK < want {
+ t.Errorf("numOK = %d, want %d (ideal %f)", numOK, want, ideal)
+ }
+}
+
+type request struct {
+ t time.Time
+ n int
+ act time.Time
+ ok bool
+}
+
+// dFromDuration converts a duration to a multiple of the global constant d
+func dFromDuration(dur time.Duration) int {
+ // Adding a millisecond to be swallowed by the integer division
+ // because we don't care about small inaccuracies
+ return int((dur + time.Millisecond) / d)
+}
+
+// dSince returns multiples of d since t0
+func dSince(t time.Time) int {
+ return dFromDuration(t.Sub(t0))
+}
+
+func runReserve(t *testing.T, lim *Limiter, req request) *Reservation {
+ return runReserveMax(t, lim, req, InfDuration)
+}
+
+func runReserveMax(t *testing.T, lim *Limiter, req request, maxReserve time.Duration) *Reservation {
+ r := lim.reserveN(req.t, req.n, maxReserve)
+ if r.ok && (dSince(r.timeToAct) != dSince(req.act)) || r.ok != req.ok {
+ t.Errorf("lim.reserveN(t%d, %v, %v) = (t%d, %v) want (t%d, %v)",
+ dSince(req.t), req.n, maxReserve, dSince(r.timeToAct), r.ok, dSince(req.act), req.ok)
+ }
+ return &r
+}
+
+func TestSimpleReserve(t *testing.T) {
+ lim := NewLimiter(10, 2)
+
+ runReserve(t, lim, request{t0, 2, t0, true})
+ runReserve(t, lim, request{t0, 2, t2, true})
+ runReserve(t, lim, request{t3, 2, t4, true})
+}
+
+func TestMix(t *testing.T) {
+ lim := NewLimiter(10, 2)
+
+ runReserve(t, lim, request{t0, 3, t1, false}) // should return false because n > Burst
+ runReserve(t, lim, request{t0, 2, t0, true})
+ run(t, lim, []allow{{t1, 2, false}}) // not enought tokens - don't allow
+ runReserve(t, lim, request{t1, 2, t2, true})
+ run(t, lim, []allow{{t1, 1, false}}) // negative tokens - don't allow
+ run(t, lim, []allow{{t3, 1, true}})
+}
+
+func TestCancelInvalid(t *testing.T) {
+ lim := NewLimiter(10, 2)
+
+ runReserve(t, lim, request{t0, 2, t0, true})
+ r := runReserve(t, lim, request{t0, 3, t3, false})
+ r.CancelAt(t0) // should have no effect
+ runReserve(t, lim, request{t0, 2, t2, true}) // did not get extra tokens
+}
+
+func TestCancelLast(t *testing.T) {
+ lim := NewLimiter(10, 2)
+
+ runReserve(t, lim, request{t0, 2, t0, true})
+ r := runReserve(t, lim, request{t0, 2, t2, true})
+ r.CancelAt(t1) // got 2 tokens back
+ runReserve(t, lim, request{t1, 2, t2, true})
+}
+
+func TestCancelTooLate(t *testing.T) {
+ lim := NewLimiter(10, 2)
+
+ runReserve(t, lim, request{t0, 2, t0, true})
+ r := runReserve(t, lim, request{t0, 2, t2, true})
+ r.CancelAt(t3) // too late to cancel - should have no effect
+ runReserve(t, lim, request{t3, 2, t4, true})
+}
+
+func TestCancel0Tokens(t *testing.T) {
+ lim := NewLimiter(10, 2)
+
+ runReserve(t, lim, request{t0, 2, t0, true})
+ r := runReserve(t, lim, request{t0, 1, t1, true})
+ runReserve(t, lim, request{t0, 1, t2, true})
+ r.CancelAt(t0) // got 0 tokens back
+ runReserve(t, lim, request{t0, 1, t3, true})
+}
+
+func TestCancel1Token(t *testing.T) {
+ lim := NewLimiter(10, 2)
+
+ runReserve(t, lim, request{t0, 2, t0, true})
+ r := runReserve(t, lim, request{t0, 2, t2, true})
+ runReserve(t, lim, request{t0, 1, t3, true})
+ r.CancelAt(t2) // got 1 token back
+ runReserve(t, lim, request{t2, 2, t4, true})
+}
+
+func TestCancelMulti(t *testing.T) {
+ lim := NewLimiter(10, 4)
+
+ runReserve(t, lim, request{t0, 4, t0, true})
+ rA := runReserve(t, lim, request{t0, 3, t3, true})
+ runReserve(t, lim, request{t0, 1, t4, true})
+ rC := runReserve(t, lim, request{t0, 1, t5, true})
+ rC.CancelAt(t1) // get 1 token back
+ rA.CancelAt(t1) // get 2 tokens back, as if C was never reserved
+ runReserve(t, lim, request{t1, 3, t5, true})
+}
+
+func TestReserveJumpBack(t *testing.T) {
+ lim := NewLimiter(10, 2)
+
+ runReserve(t, lim, request{t1, 2, t1, true}) // start at t1
+ runReserve(t, lim, request{t0, 1, t1, true}) // should violate Limit,Burst
+ runReserve(t, lim, request{t2, 2, t3, true})
+}
+
+func TestReserveJumpBackCancel(t *testing.T) {
+ lim := NewLimiter(10, 2)
+
+ runReserve(t, lim, request{t1, 2, t1, true}) // start at t1
+ r := runReserve(t, lim, request{t1, 2, t3, true})
+ runReserve(t, lim, request{t1, 1, t4, true})
+ r.CancelAt(t0) // cancel at t0, get 1 token back
+ runReserve(t, lim, request{t1, 2, t4, true}) // should violate Limit,Burst
+}
+
+func TestReserveSetLimit(t *testing.T) {
+ lim := NewLimiter(5, 2)
+
+ runReserve(t, lim, request{t0, 2, t0, true})
+ runReserve(t, lim, request{t0, 2, t4, true})
+ lim.SetLimitAt(t2, 10)
+ runReserve(t, lim, request{t2, 1, t4, true}) // violates Limit and Burst
+}
+
+func TestReserveSetLimitCancel(t *testing.T) {
+ lim := NewLimiter(5, 2)
+
+ runReserve(t, lim, request{t0, 2, t0, true})
+ r := runReserve(t, lim, request{t0, 2, t4, true})
+ lim.SetLimitAt(t2, 10)
+ r.CancelAt(t2) // 2 tokens back
+ runReserve(t, lim, request{t2, 2, t3, true})
+}
+
+func TestReserveMax(t *testing.T) {
+ lim := NewLimiter(10, 2)
+ maxT := d
+
+ runReserveMax(t, lim, request{t0, 2, t0, true}, maxT)
+ runReserveMax(t, lim, request{t0, 1, t1, true}, maxT) // reserve for close future
+ runReserveMax(t, lim, request{t0, 1, t2, false}, maxT) // time to act too far in the future
+}
+
+type wait struct {
+ name string
+ ctx context.Context
+ n int
+ delay int // in multiples of d
+ nilErr bool
+}
+
+func runWait(t *testing.T, lim *Limiter, w wait) {
+ start := time.Now()
+ err := lim.WaitN(w.ctx, w.n)
+ delay := time.Now().Sub(start)
+ if (w.nilErr && err != nil) || (!w.nilErr && err == nil) || w.delay != dFromDuration(delay) {
+ errString := "<nil>"
+ if !w.nilErr {
+ errString = "<non-nil error>"
+ }
+ t.Errorf("lim.WaitN(%v, lim, %v) = %v with delay %v ; want %v with delay %v",
+ w.name, w.n, err, delay, errString, d*time.Duration(w.delay))
+ }
+}
+
+func TestWaitSimple(t *testing.T) {
+ lim := NewLimiter(10, 3)
+
+ ctx, cancel := context.WithCancel(context.Background())
+ cancel()
+ runWait(t, lim, wait{"already-cancelled", ctx, 1, 0, false})
+
+ runWait(t, lim, wait{"exceed-burst-error", context.Background(), 4, 0, false})
+
+ runWait(t, lim, wait{"act-now", context.Background(), 2, 0, true})
+ runWait(t, lim, wait{"act-later", context.Background(), 3, 2, true})
+}
+
+func TestWaitCancel(t *testing.T) {
+ lim := NewLimiter(10, 3)
+
+ ctx, cancel := context.WithCancel(context.Background())
+ runWait(t, lim, wait{"act-now", ctx, 2, 0, true}) // after this lim.tokens = 1
+ go func() {
+ time.Sleep(d)
+ cancel()
+ }()
+ runWait(t, lim, wait{"will-cancel", ctx, 3, 1, false})
+ // should get 3 tokens back, and have lim.tokens = 2
+ t.Logf("tokens:%v last:%v lastEvent:%v", lim.tokens, lim.last, lim.lastEvent)
+ runWait(t, lim, wait{"act-now-after-cancel", context.Background(), 2, 0, true})
+}
+
+func TestWaitTimeout(t *testing.T) {
+ lim := NewLimiter(10, 3)
+
+ ctx, cancel := context.WithTimeout(context.Background(), d)
+ defer cancel()
+ runWait(t, lim, wait{"act-now", ctx, 2, 0, true})
+ runWait(t, lim, wait{"w-timeout-err", ctx, 3, 0, false})
+}
+
+func TestWaitInf(t *testing.T) {
+ lim := NewLimiter(Inf, 0)
+
+ runWait(t, lim, wait{"exceed-burst-no-error", context.Background(), 3, 0, true})
+}
+
+func BenchmarkAllowN(b *testing.B) {
+ lim := NewLimiter(Every(1*time.Second), 1)
+ now := time.Now()
+ b.ReportAllocs()
+ b.ResetTimer()
+ b.RunParallel(func(pb *testing.PB) {
+ for pb.Next() {
+ lim.AllowN(now, 1)
+ }
+ })
+}