From dc7bdae99d99fd3f44b978d7d8cb06eed65659ee Mon Sep 17 00:00:00 2001 From: StasonJatham Date: Tue, 22 Sep 2026 17:12:30 +0200 Subject: [PATCH] over-engineering audit: remove dead code, speculative config, duplicate queues - delete embedded community resolver snapshot (6,760 lines) + EmbeddedServers + DNS_SERVERS=fresh; curated resolvers are the default. Simplify Warm (no sampling). - one generic internal/sample.Queue[T] replaces three near-identical random-sample queues (probe, pipeline, discover). - delete unreachable index.listOpenSearch (OpenSearch is never listable). - delete classifyCloudFront (its match is always discarded, !ResourceSpecific). - delete probe.Probe wrapper + Describe; tests use ProbeDetailed. - delete store.Pool(), model.SourceDNSAlias, discover.QueueLen. - drop dead config/no-op knobs: pipeline DirectWorkers, discover MaxPerDomain, discover S3/GCS/DO flags, BUCKET_SCAN_DO. ~-7,000 lines (mostly the resolver snapshot), 0 deps removed, tests green. --- .env.example | 2 - README.md | 27 +- cmd/ctcloud/main.go | 14 +- internal/classify/aws.go | 19 - internal/classify/classify.go | 2 - internal/classify/classify_test.go | 1 - internal/config/config.go | 2 - internal/discover/discover.go | 116 +- internal/discover/discover_test.go | 22 +- internal/dns/pool.go | 47 +- internal/dns/pool_test.go | 11 +- internal/dns/resolvers.txt | 6760 ---------------------------- internal/index/index.go | 32 - internal/index/index_test.go | 13 - internal/model/model.go | 3 - internal/pipeline/dnsqueue.go | 71 - internal/pipeline/pipeline.go | 25 +- internal/pipeline/pipeline_test.go | 2 +- internal/probe/probe.go | 74 +- internal/probe/probe_test.go | 30 +- internal/sample/queue.go | 77 + internal/store/store.go | 2 - 22 files changed, 150 insertions(+), 7202 deletions(-) delete mode 100644 internal/dns/resolvers.txt delete mode 100644 internal/pipeline/dnsqueue.go create mode 100644 internal/sample/queue.go diff --git a/.env.example b/.env.example index 0822c33..822a1dd 100644 --- a/.env.example +++ b/.env.example @@ -11,7 +11,6 @@ DATABASE_URL=postgres://ctcloud:change-me-strong@postgres:5432/ctcloud?sslmode=d # DATABASE_URL=postgres://user:pass@db.example.com:5432/ctcloud?sslmode=verify-full # DNS_SERVERS unset = ~20 curated public resolvers. Options: -# DNS_SERVERS=fresh curated + compiled-in Fresh-Resolvers (sampled) # DNS_SERVERS=system use the OS resolver # DNS_SERVERS=1.1.1.1,8.8.8.8 your own comma-separated list # DNS_SERVERS=system @@ -34,4 +33,3 @@ BUCKET_SCAN_ENABLED=true BUCKET_SCAN_QPS=50 BUCKET_SCAN_WORKERS=16 BUCKET_SCAN_QUEUE=65536 -BUCKET_SCAN_DO=false diff --git a/README.md b/README.md index ca16036..efdac84 100644 --- a/README.md +++ b/README.md @@ -131,7 +131,6 @@ Environment variables only; no config files, no runtime pattern files. | `BUCKET_SCAN_QPS` | `50` | global cap on outbound discovery requests | | `BUCKET_SCAN_WORKERS` | `16` | discovery probe workers | | `BUCKET_SCAN_QUEUE` | `65536` | sampled domain backlog | -| `BUCKET_SCAN_DO` | `false` | also test DigitalOcean Spaces regions | | `DEDUP_TTL` | `1h` | hostname/finding dedup window | | `METRICS_ADDR` | `:9090` | metrics/health/UI listener | | `UI_USER` / `UI_PASS` | *(unset)* | optional HTTP basic auth for the web UI | @@ -318,11 +317,10 @@ engine that: 1. takes the names that actually occur in the hostname — the subdomain label and the registrable-domain label (`assets.example.com` → `assets`, - `example`). No names are fabricated, permuted, or drawn from a wordlist; -2. tests anonymous listing per provider — - `https://.s3.amazonaws.com/?list-type=2` (AWS), - `https://.storage.googleapis.com` (GCS), - `https://..digitaloceanspaces.com` (DO, optional); + `example`). No names are fabricated or drawn from a wordlist; +2. tests anonymous listing — + `https://.s3.amazonaws.com/?list-type=2` (AWS) and + `https://.storage.googleapis.com` (GCS); 3. indexes every bucket that returns 200 (keys/sizes/dates only). It is aggressively bounded: a global `BUCKET_SCAN_QPS` limit, a 12h per-name @@ -343,22 +341,7 @@ healthy resolver and fails over to at most two others; each attempt is bounded answers (NXDOMAIN) return immediately rather than being retried on every server, so negative lookups do not multiply DNS traffic. -Set `DNS_SERVERS=fresh` to add a compiled-in snapshot of -[proabiral/Fresh-Resolvers](https://github.com/proabiral/Fresh-Resolvers) -(6,760 entries) on top of the curated set. It validates a random sample of 256 at -startup and cools down the rest on failure. Refresh the snapshot with: - -```sh -curl -sL https://raw.githubusercontent.com/proabiral/Fresh-Resolvers/master/resolvers.txt \ - -o internal/dns/resolvers.txt -``` - -> Probing or using thousands of community resolvers at once can saturate the -> container's own DNS and break unrelated lookups, which is why `fresh` is -> opt-in and sampled. These resolvers are also untrusted: they can observe and, -> in principle, forge DNS answers. That only affects enrichment (which endpoints -> are looked up), never the classifier. For sensitive deployments set -> `DNS_SERVERS` to your own resolvers, or `DNS_SERVERS=system`. +> For sensitive deployments set `DNS_SERVERS` to your own resolvers, or `DNS_SERVERS=system`. > These community resolvers are untrusted: they can observe and, in principle, > forge DNS answers. That only affects enrichment (which endpoints are looked diff --git a/cmd/ctcloud/main.go b/cmd/ctcloud/main.go index cd73453..d6afc55 100644 --- a/cmd/ctcloud/main.go +++ b/cmd/ctcloud/main.go @@ -108,15 +108,9 @@ func run() error { // of costing a timeout on every random pick. resolver = dns.NewServerPool(dns.CuratedServers()) warmCtx, cancel := context.WithTimeout(ctx, 8*time.Second) - healthy := resolver.Warm(warmCtx, "example.com", 16, 64) + healthy := resolver.Warm(warmCtx, "example.com", 16) cancel() slog.Info("dns resolvers configured", "count", resolver.Len(), "healthy", healthy, "set", "curated") - case len(dnsServers) == 1 && dnsServers[0] == "fresh": - resolver = dns.NewServerPool(append(dns.CuratedServers(), dns.EmbeddedServers()...)) - warmCtx, cancel := context.WithTimeout(ctx, 10*time.Second) - healthy := resolver.Warm(warmCtx, "example.com", 32, 256) - cancel() - slog.Info("dns resolvers warmed", "total", resolver.Len(), "healthy", healthy, "set", "fresh") default: resolver = dns.NewServerPool(dnsServers) slog.Info("dns resolvers configured", "count", resolver.Len(), "set", "custom") @@ -150,9 +144,7 @@ func run() error { if cfg.BucketScanEnabled { discoverer = discover.New(discover.Config{ QPS: cfg.BucketScanQPS, Workers: cfg.BucketScanWorkers, Queue: cfg.BucketScanQueue, - S3: true, GCS: true, DOSpaces: cfg.BucketScanDO, - DORegions: []string{"nyc3", "sfo3", "fra1", "ams3", "sgp1"}, - Indexer: indexer, Metrics: m, + Indexer: indexer, Metrics: m, OnOpen: func(uctx context.Context, c model.Candidate, detail string, entries []model.Entry) { if _, err := st.EnsureAsset(uctx, c); err != nil { return @@ -168,7 +160,7 @@ func run() error { }) discoverer.Start(ctx) slog.Info("bucket name discovery enabled", "event", "startup", - "qps", cfg.BucketScanQPS, "workers", cfg.BucketScanWorkers, "do_spaces", cfg.BucketScanDO) + "qps", cfg.BucketScanQPS, "workers", cfg.BucketScanWorkers) } var prober *probe.Prober diff --git a/internal/classify/aws.go b/internal/classify/aws.go index 3c94297..2924660 100644 --- a/internal/classify/aws.go +++ b/internal/classify/aws.go @@ -17,25 +17,6 @@ func aws(p model.Provider, s model.Service, sem model.PublicSemantic, resource, } } -// classifyCloudFront matches .cloudfront.net. Custom domains -// almost always CNAME to a CloudFront distribution, so this is how CDN-hosted -// static sites get discovered via DNS enrichment. -func classifyCloudFront(s *scanner) (model.Match, bool) { - n := s.n - if n != 3 || s.label(n-1) != "net" || s.label(n-2) != "cloudfront" { - return model.Match{}, false - } - // CloudFront distributions are CDN endpoints, not buckets or databases, so - // they are identified but not stored as findings. - return model.Match{ - Provider: model.ProviderAWS, - Service: model.ServiceWebApp, - ResourceSpecific: false, - PublicSemantic: model.PublicSemanticPublicEndpoint, - Resource: s.label(0), - }, true -} - func classifyAWS(s *scanner) (model.Match, bool) { n := s.n if n < 4 || s.label(n-1) != "com" || s.label(n-2) != "amazonaws" { diff --git a/internal/classify/classify.go b/internal/classify/classify.go index 49839a8..4849acf 100644 --- a/internal/classify/classify.go +++ b/internal/classify/classify.go @@ -114,8 +114,6 @@ func Classify(host string) (model.Match, bool) { switch { case strings.HasSuffix(host, ".amazonaws.com"): return classifyAWS(&s) - case strings.HasSuffix(host, ".cloudfront.net"): - return classifyCloudFront(&s) case strings.HasSuffix(host, ".core.windows.net"): return classifyAzureCore(&s) case strings.HasSuffix(host, ".database.windows.net"): diff --git a/internal/classify/classify_test.go b/internal/classify/classify_test.go index 41f00b8..12d0dfa 100644 --- a/internal/classify/classify_test.go +++ b/internal/classify/classify_test.go @@ -93,7 +93,6 @@ func TestClassifyMatches(t *testing.T) { {"project.firebaseio.com", want{model.ProviderGCP, model.ServiceFirebaseDB, "project", "", true, 0}}, {"project.europe-west1.firebasedatabase.app", want{model.ProviderGCP, model.ServiceFirebaseDB, "project", "europe-west1", true, 0}}, {"myproject.appspot.com", want{model.ProviderGCP, model.ServiceWebApp, "myproject", "", true, 0}}, - {"d111111abcdef8.cloudfront.net", want{model.ProviderAWS, model.ServiceWebApp, "d111111abcdef8", "", false, model.PublicSemanticPublicEndpoint}}, // Cloudflare {"acct.r2.cloudflarestorage.com", want{model.ProviderCloudflare, model.ServiceObjectStorage, "acct", "", true, 0}}, {"mybucket.r2.dev", want{model.ProviderCloudflare, model.ServiceObjectStorage, "mybucket", "", true, model.PublicSemanticPublicURL}}, diff --git a/internal/config/config.go b/internal/config/config.go index 993bc20..b06fe64 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -43,7 +43,6 @@ type Config struct { BucketScanQPS int BucketScanWorkers int BucketScanQueue int - BucketScanDO bool MetricsAddr string UIUser string @@ -89,7 +88,6 @@ func Load() (*Config, error) { BucketScanQPS: envInt("BUCKET_SCAN_QPS", 50), BucketScanWorkers: envInt("BUCKET_SCAN_WORKERS", 16), BucketScanQueue: envInt("BUCKET_SCAN_QUEUE", 65536), - BucketScanDO: envBool("BUCKET_SCAN_DO", false), MetricsAddr: envString("METRICS_ADDR", ":9090"), UIUser: envString("UI_USER", ""), UIPass: envString("UI_PASS", ""), diff --git a/internal/discover/discover.go b/internal/discover/discover.go index 433a9a2..173ada2 100644 --- a/internal/discover/discover.go +++ b/internal/discover/discover.go @@ -12,7 +12,6 @@ package discover import ( "context" "io" - "math/rand/v2" "net/http" "strings" "sync" @@ -22,18 +21,13 @@ import ( "tea.karlcom.de/karl/bucketeer/internal/index" "tea.karlcom.de/karl/bucketeer/internal/metrics" "tea.karlcom.de/karl/bucketeer/internal/model" + "tea.karlcom.de/karl/bucketeer/internal/sample" ) type Config struct { - QPS int // global outbound request rate - Workers int // concurrent candidate probes - Queue int // sampled domain backlog - S3 bool - GCS bool - DOSpaces bool - DORegions []string - MaxPerDomain int // cap candidates generated per domain - + QPS int // global outbound request rate + Workers int // concurrent candidate probes + Queue int // sampled domain backlog Indexer *index.Indexer Metrics *metrics.Metrics // OnOpen is called for every anonymously listable bucket with its metadata @@ -44,7 +38,7 @@ type Config struct { type Discoverer struct { cfg Config client *http.Client - q *domainQueue + q *sample.Queue[string] tokens chan struct{} seen *dns.TTLCache[bool] // candidate names already tested stop chan struct{} @@ -61,13 +55,10 @@ func New(cfg Config) *Discoverer { if cfg.Queue <= 0 { cfg.Queue = 65536 } - if cfg.MaxPerDomain <= 0 { - cfg.MaxPerDomain = 48 - } return &Discoverer{ cfg: cfg, client: &http.Client{Timeout: 6 * time.Second}, - q: newDomainQueue(cfg.Queue), + q: sample.New[string](cfg.Queue), tokens: make(chan struct{}, max(cfg.QPS, 1)), seen: dns.NewTTLCache[bool](1<<20, 64), stop: make(chan struct{}), @@ -77,7 +68,7 @@ func New(cfg Config) *Discoverer { // Submit offers a hostname to the discovery engine. Duplicate registrable // domains and already-tested candidate names are dropped cheaply. func (d *Discoverer) Submit(host string) { - d.q.push(host) + d.q.Push(host) } func (d *Discoverer) Start(ctx context.Context) { @@ -92,7 +83,6 @@ func (d *Discoverer) Close() { close(d.stop) } func (d *Discoverer) Wait() { d.wg.Wait() } // QueueLen reports the sampled domain backlog. -func (d *Discoverer) QueueLen() int { return d.q.len() } func (d *Discoverer) refill(ctx context.Context) { period := time.Second / time.Duration(d.cfg.QPS) @@ -135,10 +125,10 @@ func (d *Discoverer) worker(ctx context.Context) { return case <-d.stop: return - case <-d.q.notify: + case <-d.q.Notify(): } for { - host, ok := d.q.pop() + host, ok := d.q.Pop() if !ok { break } @@ -148,7 +138,7 @@ func (d *Discoverer) worker(ctx context.Context) { } func (d *Discoverer) scanDomain(ctx context.Context, host string) { - for _, name := range candidates(host, d.cfg.MaxPerDomain) { + for _, name := range candidates(host) { if ctx.Err() != nil { return } @@ -183,35 +173,21 @@ type Target struct { } func (d *Discoverer) targets(name string) []Target { - var out []Target - if d.cfg.S3 { - out = append(out, Target{ + return []Target{ + { Name: name, Provider: model.ProviderAWS, Service: model.ServiceS3, Hostname: name + ".s3.amazonaws.com", URL: "https://" + name + ".s3.amazonaws.com/?list-type=2&max-keys=1", - }) - } - if d.cfg.GCS { - // Use the virtual-host form so each bucket has a unique hostname (the - // path form makes every bucket share storage.googleapis.com and collide - // on the cloud_assets unique key). - out = append(out, Target{ + }, + { + // Virtual-host form so each bucket has a unique hostname (the path + // form makes every bucket share storage.googleapis.com and collide + // on the cloud_assets unique key). Name: name, Provider: model.ProviderGCP, Service: model.ServiceObjectStorage, Hostname: name + ".storage.googleapis.com", URL: "https://storage.googleapis.com/" + name + "?max-keys=1", - }) + }, } - if d.cfg.DOSpaces { - for _, region := range d.cfg.DORegions { - host := name + "." + region + ".digitaloceanspaces.com" - out = append(out, Target{ - Name: name, Provider: model.ProviderDigitalOcean, Service: model.ServiceObjectStorage, - Hostname: host, Region: region, - URL: "https://" + host + "/?list-type=2&max-keys=1", - }) - } - } - return out } func (d *Discoverer) test(ctx context.Context, t Target) { @@ -286,13 +262,7 @@ var skipLabel = map[string]bool{ "ns": true, "mx": true, "localhost": true, } -func candidates(host string, max int) []string { - out := baseLabels(host) - if max > 0 && len(out) > max { - out = out[:max] - } - return out -} +func candidates(host string) []string { return baseLabels(host) } func validLabel(s string) bool { if len(s) < 3 || len(s) > 40 { @@ -319,51 +289,3 @@ func validBucketName(s string) bool { } return s[0] != '-' && s[0] != '.' && s[len(s)-1] != '-' && s[len(s)-1] != '.' } - -// --- sampled domain queue --- - -type domainQueue struct { - mu sync.Mutex - items []string - cap int - notify chan struct{} -} - -func newDomainQueue(capacity int) *domainQueue { - return &domainQueue{cap: capacity, notify: make(chan struct{}, 1)} -} - -func (q *domainQueue) push(s string) { - q.mu.Lock() - if len(q.items) < q.cap { - q.items = append(q.items, s) - } else { - q.items[rand.IntN(len(q.items))] = s - } - q.mu.Unlock() - select { - case q.notify <- struct{}{}: - default: - } -} - -func (q *domainQueue) pop() (string, bool) { - q.mu.Lock() - n := len(q.items) - if n == 0 { - q.mu.Unlock() - return "", false - } - i := rand.IntN(n) - s := q.items[i] - q.items[i] = q.items[n-1] - q.items = q.items[:n-1] - q.mu.Unlock() - return s, true -} - -func (q *domainQueue) len() int { - q.mu.Lock() - defer q.mu.Unlock() - return len(q.items) -} diff --git a/internal/discover/discover_test.go b/internal/discover/discover_test.go index 989f937..4fe0b7f 100644 --- a/internal/discover/discover_test.go +++ b/internal/discover/discover_test.go @@ -6,7 +6,7 @@ import ( ) func TestCandidatesAreExactLabelsOnly(t *testing.T) { - got := candidates("assets.example.com", 200) + got := candidates("assets.example.com") if len(got) != 2 || got[0] != "assets" || got[1] != "example" { t.Fatalf("candidates = %v, want [assets example] (no fabricated names)", got) } @@ -28,29 +28,21 @@ func TestBaseLabelsSkipsNoise(t *testing.T) { } func TestTargets(t *testing.T) { - d := New(Config{S3: true, GCS: true, DOSpaces: true, DORegions: []string{"nyc3"}}) + d := New(Config{}) ts := d.targets("example") - if len(ts) != 3 { - t.Fatalf("got %d targets, want 3", len(ts)) + if len(ts) != 2 { + t.Fatalf("got %d targets, want 2", len(ts)) } - var s3, gcs, do bool + var s3, gcs bool for _, tg := range ts { switch { case strings.Contains(tg.URL, "example.s3.amazonaws.com/?list-type=2"): s3 = true case strings.Contains(tg.URL, "storage.googleapis.com/example"): gcs = true - case strings.Contains(tg.URL, "example.nyc3.digitaloceanspaces.com/?list-type=2"): - do = true } } - if !s3 || !gcs || !do { - t.Fatalf("missing targets: s3=%v gcs=%v do=%v (%v)", s3, gcs, do, ts) - } -} - -func TestMaxPerDomain(t *testing.T) { - if got := candidates("example.com", 5); len(got) > 5 { - t.Fatalf("MaxPerDomain not honored: got %d", len(got)) + if !s3 || !gcs { + t.Fatalf("missing targets: s3=%v gcs=%v (%v)", s3, gcs, ts) } } diff --git a/internal/dns/pool.go b/internal/dns/pool.go index bd0c549..48fd22b 100644 --- a/internal/dns/pool.go +++ b/internal/dns/pool.go @@ -2,7 +2,6 @@ package dns import ( "context" - _ "embed" "errors" mathrand "math/rand/v2" "net" @@ -12,30 +11,7 @@ import ( "time" ) -//go:embed resolvers.txt -var embeddedResolvers string - -// EmbeddedServers returns the compiled-in public resolver list (a snapshot of -// proabiral/Fresh-Resolvers). Refresh it with: -// -// curl -sL https://raw.githubusercontent.com/proabiral/Fresh-Resolvers/master/resolvers.txt -o internal/dns/resolvers.txt -// -// These are untrusted third-party resolvers: they can observe and, in theory, -// forge DNS answers. Use DNS_SERVERS with your own resolvers for sensitive -// deployments. A circuit breaker skips ones that stop responding. -func EmbeddedServers() []string { - lines := strings.Split(embeddedResolvers, "\n") - out := make([]string, 0, len(lines)) - for _, l := range lines { - if l = strings.TrimSpace(l); l != "" { - out = append(out, l) - } - } - return out -} - -// CuratedServers are well-known, reliable public resolvers. They are always -// included (ahead of the community list) so a mostly-dead list still works. +// CuratedServers are well-known, reliable public resolvers used by default. func CuratedServers() []string { return []string{ "1.1.1.1", "1.0.0.1", // Cloudflare @@ -118,28 +94,13 @@ func NewServerPool(servers []string) *ServerPool { // Len reports how many resolvers are in the pool. func (p *ServerPool) Len() int { return len(p.servers) } -// Warm probes up to maxProbe randomly chosen resolvers and puts non-responders -// into cooldown, so a large, partly-stale public list converges on a working -// subset. It deliberately samples instead of probing the whole list: firing -// thousands of concurrent DNS queries can overwhelm the host/container -// resolver and break unrelated lookups. maxProbe <= 0 means all. Returns the -// healthy count. -func (p *ServerPool) Warm(ctx context.Context, probeHost string, workers, maxProbe int) int { +// Warm probes every resolver and puts non-responders into cooldown, so the +// pool starts on the working subset. Returns the healthy count. +func (p *ServerPool) Warm(ctx context.Context, probeHost string, workers int) int { if workers <= 0 { workers = 32 } servers := p.servers - if maxProbe > 0 && maxProbe < len(servers) { - order := make([]int, len(servers)) - for i := range order { - order[i] = i - } - mathrand.Shuffle(len(order), func(i, j int) { order[i], order[j] = order[j], order[i] }) - servers = make([]*server, maxProbe) - for i := range servers { - servers[i] = p.servers[order[i]] - } - } probeTimeout := time.Second if p.attemptTimeout > 0 && p.attemptTimeout < probeTimeout { probeTimeout = p.attemptTimeout diff --git a/internal/dns/pool_test.go b/internal/dns/pool_test.go index 6821e60..37a93e4 100644 --- a/internal/dns/pool_test.go +++ b/internal/dns/pool_test.go @@ -30,15 +30,6 @@ func (f *fakeLookup) LookupIP(ctx context.Context, host string) ([]net.IP, error return []net.IP{net.ParseIP("1.2.3.4")}, nil } -func TestEmbeddedServers(t *testing.T) { - if n := len(EmbeddedServers()); n < 1000 { - t.Fatalf("embedded resolver list has %d entries, want thousands", n) - } - if n := len(CuratedServers()); n < 10 { - t.Fatalf("curated resolver list has %d entries, want at least 10", n) - } -} - func TestServerCooldown(t *testing.T) { s := &server{} now := time.Now().UnixNano() @@ -86,7 +77,7 @@ func TestWarmDisablesDeadResolvers(t *testing.T) { dead := &fakeLookup{ipErr: &net.DNSError{Err: "timeout", IsTimeout: true}} deadServer := &server{r: dead} p := &ServerPool{servers: []*server{deadServer, {r: good}}} - healthy := p.Warm(context.Background(), "example.com", 4, 0) + healthy := p.Warm(context.Background(), "example.com", 4) if healthy != 1 { t.Fatalf("healthy = %d, want 1", healthy) } diff --git a/internal/dns/resolvers.txt b/internal/dns/resolvers.txt deleted file mode 100644 index 61a1f2e..0000000 --- a/internal/dns/resolvers.txt +++ /dev/null @@ -1,6760 +0,0 @@ -1.0.0.19 -1.0.0.2 -1.0.0.3 -101.110.40.25 -101.255.119.209 -1.0.160.161 -1.0.160.202 -1.0.162.243 -102.135.217.69 -102.141.234.6 -102.214.14.4 -102.216.223.14 -102.218.172.222 -102.219.209.155 -102.22.123.142 -102.33.45.152 -102.33.47.78 -102.68.154.33 -102.68.79.77 -103.102.136.102 -103.102.250.102 -103.102.250.127 -103.105.212.98 -103.105.64.163 -103.105.78.207 -103.109.154.138 -103.109.239.243 -103.109.39.79 -103.110.4.31 -103.112.204.37 -103.119.146.46 -103.119.228.139 -103.121.228.5 -103.122.32.114 -103.12.31.83 -103.125.163.241 -103.126.201.1 -103.126.201.129 -103.129.211.13 -103.130.113.129 -103.13.123.16 -103.132.242.59 -103.132.52.31 -103.132.52.32 -103.137.10.193 -103.137.156.3 -103.138.51.141 -103.140.24.102 -103.140.24.105 -103.140.24.115 -103.140.24.125 -103.140.24.130 -103.140.24.14 -103.140.24.158 -103.140.24.175 -103.140.24.201 -103.140.24.209 -103.140.24.244 -103.140.24.248 -103.140.24.75 -103.140.24.95 -103.140.25.100 -103.140.25.115 -103.140.25.121 -103.140.25.191 -103.140.25.223 -103.140.25.36 -103.140.25.43 -103.140.25.69 -103.141.149.67 -103.141.200.12 -103.141.200.75 -103.141.200.97 -103.141.200.98 -103.143.139.225 -103.143.236.105 -103.143.236.142 -103.143.236.181 -103.143.236.200 -103.143.236.203 -103.143.236.219 -103.143.236.37 -103.143.236.89 -103.143.236.96 -103.143.237.10 -103.143.237.136 -103.143.237.140 -103.143.237.172 -103.143.237.206 -103.143.237.40 -103.143.237.82 -103.143.237.85 -103.143.237.9 -103.144.146.19 -103.145.164.113 -103.145.164.14 -103.145.164.141 -103.145.164.153 -103.145.164.162 -103.145.164.18 -103.145.164.186 -103.145.164.203 -103.145.164.206 -103.145.164.218 -103.145.164.221 -103.145.164.226 -103.145.164.231 -103.145.164.234 -103.145.164.239 -103.145.164.247 -103.145.164.32 -103.145.164.39 -103.145.164.5 -103.145.164.51 -103.145.164.52 -103.145.164.70 -103.145.164.77 -103.145.164.81 -103.145.164.85 -103.145.164.94 -103.145.164.99 -103.145.165.116 -103.145.165.155 -103.145.165.172 -103.145.165.196 -103.145.165.206 -103.145.165.213 -103.145.165.226 -103.145.165.233 -103.145.165.235 -103.145.165.42 -103.145.165.59 -103.145.165.91 -103.145.36.151 -103.146.54.0 -103.146.54.104 -103.146.54.112 -103.146.54.121 -103.146.54.131 -103.146.54.146 -103.146.54.156 -103.146.54.168 -103.146.54.172 -103.146.54.177 -103.146.54.182 -103.146.54.185 -103.146.54.189 -103.146.54.206 -103.146.54.217 -103.146.54.218 -103.146.54.230 -103.146.54.233 -103.146.54.236 -103.146.54.24 -103.146.54.244 -103.146.54.247 -103.146.54.25 -103.146.54.255 -103.146.54.46 -103.146.54.72 -103.146.54.90 -103.146.54.91 -103.146.55.108 -103.146.55.124 -103.146.55.133 -103.146.55.137 -103.146.55.14 -103.146.55.142 -103.146.55.153 -103.146.55.157 -103.146.55.171 -103.146.55.243 -103.146.55.247 -103.146.55.250 -103.146.55.27 -103.146.55.48 -103.146.55.53 -103.146.55.61 -103.146.55.67 -103.146.55.82 -103.152.180.122 -103.153.191.42 -103.153.48.16 -103.153.48.17 -103.153.48.174 -103.153.48.222 -103.153.48.227 -103.153.48.231 -103.153.48.234 -103.153.48.240 -103.153.48.37 -103.153.48.38 -103.153.48.8 -103.153.48.83 -103.153.49.82 -103.154.16.101 -103.154.16.128 -103.154.16.136 -103.154.16.148 -103.154.16.177 -103.154.16.208 -103.154.16.217 -103.154.16.228 -103.154.16.238 -103.154.16.25 -103.154.16.255 -103.154.16.30 -103.154.16.32 -103.154.16.34 -103.154.16.5 -103.154.16.58 -103.155.174.113 -103.155.174.144 -103.155.174.156 -103.155.174.50 -103.155.174.52 -103.155.174.85 -103.155.174.87 -103.156.75.132 -103.156.86.29 -103.156.86.78 -103.157.193.17 -103.157.237.147 -103.157.237.156 -103.157.237.157 -103.157.237.172 -103.157.237.178 -103.157.237.197 -103.157.237.214 -103.157.237.229 -103.157.237.50 -103.157.237.82 -103.157.237.84 -103.157.237.88 -103.160.202.218 -103.161.108.98 -103.161.42.2 -103.163.117.223 -103.165.154.1 -103.165.162.166 -103.165.162.229 -103.166.8.228 -103.168.181.177 -103.169.135.27 -103.170.172.111 -103.170.172.138 -103.170.172.148 -103.170.172.163 -103.170.172.164 -103.170.172.175 -103.170.172.185 -103.170.172.203 -103.170.172.220 -103.170.172.221 -103.170.172.232 -103.170.172.249 -103.170.172.252 -103.170.172.254 -103.170.172.3 -103.170.172.38 -103.170.172.50 -103.170.172.79 -103.17.176.115 -103.17.176.117 -103.17.176.128 -103.17.176.133 -103.17.176.146 -103.17.176.173 -103.17.176.175 -103.17.176.181 -103.17.176.182 -103.17.176.214 -103.17.176.215 -103.17.176.231 -103.17.176.240 -103.17.176.251 -103.17.176.3 -103.17.176.31 -103.17.176.32 -103.17.176.73 -103.17.176.81 -103.17.176.84 -103.172.172.51 -103.173.106.0 -103.173.106.143 -103.173.106.176 -103.173.106.181 -103.173.106.182 -103.173.106.187 -103.173.106.19 -103.173.106.191 -103.173.106.195 -103.173.106.196 -103.173.106.197 -103.173.106.208 -103.173.106.231 -103.173.106.233 -103.173.106.242 -103.173.106.245 -103.173.106.246 -103.173.106.47 -103.173.106.59 -103.173.106.7 -103.173.106.70 -103.173.106.86 -103.173.106.90 -103.173.106.98 -103.174.102.61 -103.174.151.208 -103.175.232.251 -103.175.238.154 -103.175.238.25 -103.178.194.131 -103.178.72.151 -103.178.72.161 -103.178.72.172 -103.178.72.183 -103.178.72.190 -103.178.72.203 -103.178.72.238 -103.178.72.47 -103.180.52.115 -103.180.52.129 -103.180.52.131 -103.180.52.132 -103.180.52.135 -103.180.52.136 -103.180.52.179 -103.180.52.18 -103.180.52.184 -103.180.52.202 -103.180.52.218 -103.180.52.234 -103.180.52.244 -103.180.52.60 -103.18.138.20 -103.183.68.113 -103.183.68.115 -103.183.68.134 -103.183.68.158 -103.183.68.16 -103.183.68.162 -103.183.68.172 -103.183.68.216 -103.183.68.225 -103.183.68.228 -103.183.68.26 -103.183.68.45 -103.183.68.66 -103.183.68.74 -103.183.68.8 -103.183.68.83 -103.184.180.109 -103.185.225.49 -103.186.252.218 -103.186.252.29 -103.189.106.185 -103.194.2.33 -103.196.38.38 -103.196.38.8 -103.198.19.2 -103.20.152.11 -103.204.68.85 -103.211.153.41 -103.213.202.166 -103.215.16.230 -103.225.36.226 -103.225.36.238 -103.228.35.43 -103.230.182.14 -103.230.182.16 -103.230.182.17 -103.230.182.196 -103.230.182.5 -103.230.182.56 -103.230.182.8 -103.239.32.36 -103.239.32.81 -103.241.181.28 -103.246.244.143 -103.25.202.2 -103.26.170.103 -103.48.207.78 -103.48.78.156 -103.48.78.157 -103.49.200.35 -103.51.139.51 -103.51.144.212 -103.51.144.214 -103.51.144.216 -103.5.148.100 -103.5.148.99 -103.59.52.3 -103.65.227.102 -103.65.227.161 -103.65.227.168 -103.65.227.243 -103.67.152.193 -103.7.172.8 -103.74.11.135 -103.74.230.143 -103.74.230.32 -103.79.74.1 -103.80.1.193 -103.82.172.21 -103.83.33.13 -103.84.119.192 -103.84.119.226 -103.84.252.44 -103.89.24.211 -103.89.27.28 -103.92.204.128 -103.92.204.139 -103.92.206.130 -103.92.206.255 -103.92.206.63 -103.92.207.1 -103.95.148.6 -103.97.160.60 -103.98.34.13 -103.9.88.154 -103.99.150.10 -104.248.141.40 -104.60.85.131 -105.243.178.87 -105.243.179.28 -105.243.201.46 -105.243.213.211 -105.243.213.57 -105.244.179.225 -105.247.182.102 -105.30.247.93 -107.130.51.137 -107.144.121.130 -107.241.236.106 -107.80.230.178 -109.105.40.34 -109.110.238.65 -109.110.40.214 -109.110.40.41 -109.110.44.12 -109.111.112.58 -109.111.229.198 -109.111.8.0 -109.160.96.238 -109.163.232.228 -109.168.65.86 -109.197.71.34 -109.199.77.76 -109.202.11.6 -109.202.22.209 -109.203.100.192 -109.207.215.14 -109.226.199.197 -109.228.0.238 -109.228.1.132 -109.241.142.194 -109.248.157.118 -109.248.157.46 -109.248.212.9 -109.5.33.66 -109.61.113.35 -109.68.15.212 -109.73.42.171 -109.92.133.78 -1.10.10.10 -110.142.40.60 -110.143.148.183 -110.143.3.83 -110.15.182.99 -110.164.139.186 -110.164.193.206 -110.164.241.236 -110.164.71.170 -110.49.11.170 -110.49.144.179 -110.77.149.172 -110.78.18.44 -1.1.1.1 -111.118.147.236 -111.118.223.243 -111.125.217.229 -111.125.217.251 -1.1.1.2 -1.11.251.105 -1.1.1.3 -111.68.108.200 -111.68.108.215 -111.92.106.148 -111.92.189.105 -111.92.63.57 -111.92.8.187 -111.92.85.233 -112.133.114.222 -1.12.13.53 -112.172.7.207 -112.197.52.17 -112.199.115.40 -112.216.138.50 -112.76.132.49 -113.149.254.97 -113.160.117.38 -113.160.155.57 -113.160.216.200 -113.160.226.179 -113.160.232.172 -113.161.163.169 -113.161.180.214 -113.161.230.19 -113.161.71.132 -113.163.222.44 -113.164.80.4 -113.176.101.209 -113.176.7.202 -113.190.253.229 -113.212.111.66 -113.22.113.64 -113.255.5.34 -113.28.67.105 -113.28.67.147 -113.28.71.243 -113.42.99.133 -113.52.201.122 -114.114.114.114 -114.114.115.115 -114.143.32.92 -114.143.34.228 -114.201.226.122 -114.33.53.151 -114.34.176.73 -114.7.120.14 -115.126.20.15 -115.146.169.105 -115.146.174.102 -115.146.192.218 -115.146.192.90 -115.146.199.242 -115.146.249.49 -115.146.250.193 -115.146.254.38 -115.147.51.17 -115.147.62.56 -115.23.219.218 -115.243.102.142 -115.31.133.178 -115.42.210.81 -115.42.222.113 -115.79.48.236 -115.85.71.134 -116.100.88.123 -116.118.119.167 -116.12.172.241 -116.12.215.137 -116.125.157.67 -116.193.64.16 -116.203.32.217 -116.50.180.210 -116.50.230.138 -1.165.161.82 -1.165.169.138 -116.58.187.189 -116.68.126.100 -116.90.176.115 -116.93.118.42 -117.103.228.101 -117.121.215.99 -117.16.191.7 -117.20.54.245 -117.206.156.235 -117.2.18.50 -117.239.157.244 -117.2.80.119 -1.175.100.228 -1.176.59.222 -1.179.166.229 -1.179.228.10 -118.103.239.9 -118.140.142.222 -118.163.151.102 -118.163.40.163 -118.173.197.174 -118.179.84.158 -118.201.211.82 -118.201.53.209 -118.201.56.26 -118.201.80.227 -118.218.6.137 -118.238.11.132 -118.3.227.163 -118.46.89.19 -118.69.109.45 -118.69.126.44 -118.69.134.83 -118.69.157.184 -118.69.246.104 -118.69.65.41 -118.70.177.223 -118.70.179.56 -118.70.203.68 -118.91.129.65 -118.99.210.36 -119.10.181.138 -119.110.212.115 -119.156.24.134 -119.201.108.71 -119.59.113.138 -119.73.138.17 -119.92.117.102 -119.92.163.10 -119.92.192.241 -119.92.197.6 -119.92.65.97 -119.93.121.146 -119.93.198.69 -120.50.42.142 -120.57.113.146 -120.72.106.125 -120.72.85.167 -120.72.85.169 -1.209.148.129 -1.21.10.81 -121.133.171.50 -121.139.218.165 -121.146.2.10 -121.151.111.5 -121.152.181.152 -121.153.88.212 -121.155.94.225 -121.166.237.204 -121.166.237.218 -121.174.253.216 -121.181.11.82 -121.182.199.17 -121.184.236.110 -121.187.165.74 -121.202.148.156 -121.50.200.15 -121.58.203.1 -121.58.203.4 -121.58.248.195 -12.171.191.58 -12.186.153.128 -12.200.123.164 -122.116.8.109 -122.117.187.15 -1.221.232.82 -122.1.33.1 -12.215.221.197 -122.154.98.158 -122.155.37.109 -122.18.242.92 -122.185.112.188 -122.185.113.244 -122.185.99.78 -12.219.149.241 -122.210.62.171 -122.211.89.209 -12.221.3.59 -122.214.1.141 -122.222.113.62 -122.2.29.66 -122.252.222.157 -122.252.241.166 -122.2.5.42 -122.2.65.202 -122.2.76.81 -122.3.232.38 -1.224.253.87 -1.225.165.101 -122.52.117.51 -122.52.251.163 -122.53.148.193 -122.53.148.218 -122.53.179.133 -122.53.184.177 -122.53.190.38 -122.53.213.74 -122.53.214.65 -122.53.95.126 -122.53.95.26 -122.54.221.215 -122.54.62.137 -122.54.69.130 -122.54.69.14 -122.54.78.230 -122.54.86.1 -122.54.86.193 -122.55.111.98 -122.55.142.126 -122.55.142.154 -122.55.142.178 -122.55.143.170 -122.55.145.178 -122.55.158.162 -122.55.158.66 -122.55.159.150 -122.55.216.174 -122.55.236.166 -122.55.242.174 -122.55.34.214 -1.226.167.221 -1.226.190.17 -1.226.193.136 -1.226.38.108 -1.227.135.95 -1.227.136.162 -1.227.4.73 -1.227.9.73 -1.228.224.139 -1.228.224.47 -1.228.32.93 -1.228.42.28 -1.228.92.61 -1.229.136.136 -1.229.71.72 -1.229.87.138 -1.229.87.167 -123.176.31.226 -123.176.98.140 -123.200.11.90 -123.205.156.16 -123.241.252.251 -123.243.55.86 -123.252.214.220 -123.252.254.22 -123.252.254.26 -123.252.254.74 -123.30.27.24 -1.234.31.2 -1.234.79.82 -123.51.244.77 -1.236.11.121 -1.237.229.208 -12.40.39.5 -124.105.150.94 -124.105.151.86 -124.105.154.90 -124.105.157.110 -124.105.209.234 -124.105.212.146 -124.105.212.158 -124.105.214.110 -124.105.214.174 -124.105.217.50 -124.105.217.62 -124.105.217.78 -124.105.219.106 -124.105.219.198 -124.106.123.241 -124.106.151.65 -124.106.234.45 -124.106.99.238 -124.107.126.1 -124.107.141.122 -1.241.255.203 -124.146.185.97 -124.155.197.234 -124.248.191.83 -124.32.115.205 -124.33.8.69 -124.35.115.150 -124.35.154.159 -1.246.201.38 -1.246.201.53 -1.246.219.171 -124.66.128.198 -1.247.120.139 -1.247.209.5 -1.247.32.84 -124.82.2.186 -124.83.34.156 -124.83.72.92 -1.249.186.136 -1.249.200.229 -1.249.207.225 -1.249.43.20 -1.249.45.197 -1.250.154.15 -1.250.193.34 -1.250.66.91 -125.134.180.69 -125.17.173.65 -125.18.241.103 -125.19.19.84 -125.209.101.172 -125.209.80.106 -125.212.237.1 -125.227.208.223 -125.227.35.90 -125.227.77.87 -125.227.89.44 -125.228.169.101 -125.229.101.233 -125.229.59.173 -1.253.140.3 -1.255.134.74 -125.53.77.150 -126.249.167.161 -126.249.167.193 -126.249.64.222 -126.249.83.70 -128.106.52.161 -128.127.90.39 -128.134.135.200 -128.238.2.38 -128.92.222.227 -128.92.36.51 -128.92.65.181 -129.126.119.238 -129.126.63.122 -129.126.84.102 -129.250.35.250 -129.250.35.251 -12.97.172.197 -130.255.145.195 -130.61.69.123 -130.93.184.27 -131.148.181.242 -132.148.83.193 -1.33.199.57 -134.122.23.38 -134.17.4.251 -134.195.4.2 -134.236.245.30 -134.255.247.23 -1.34.29.58 -1.34.58.188 -134.75.122.2 -134.75.195.7 -134.90.140.29 -136.228.168.10 -137.103.64.198 -137.184.216.0 -13.76.130.172 -137.66.16.204 -137.74.226.27 -138.0.120.199 -138.0.207.117 -138.121.113.163 -138.128.168.61 -138.219.249.221 -138.219.50.74 -1.38.3.168 -138.68.74.166 -138.91.252.187 -138.94.56.4 -138.97.202.110 -138.99.205.1 -139.134.5.51 -139.162.33.25 -139.64.162.129 -14.0.20.65 -140.227.38.198 -141.1.1.1 -141.1.27.249 -141.136.112.107 -141.170.141.189 -141.195.95.131 -14.128.21.30 -14.140.206.30 -14.160.87.86 -14.161.47.108 -141.85.161.17 -14.186.101.11 -141.95.65.106 -14.198.168.140 -142.11.200.36 -142.11.217.5 -142.190.83.129 -14.224.129.15 -14.225.246.17 -14.241.236.220 -143.233.233.142 -14.33.27.229 -14.33.27.240 -14.33.27.243 -144.129.45.42 -144.139.0.65 -14.41.60.10 -14.41.60.11 -144.202.20.89 -144.48.109.239 -144.48.115.72 -14.47.217.72 -144.91.122.26 -144.91.123.182 -14.50.118.125 -145.236.190.166 -145.255.31.145 -145.255.5.183 -14.56.77.168 -146.0.23.67 -146.112.41.2 -146.112.41.4 -146.112.41.5 -146.155.226.12 -146.158.30.143 -146.71.76.129 -146.88.38.231 -147.135.131.46 -147.135.207.73 -147.50.47.181 -147.50.47.185 -147.50.47.189 -148.102.51.97 -148.240.22.102 -148.243.126.229 -148.244.211.136 -148.244.89.212 -148.76.114.50 -149.106.172.178 -149.112.112.10 -149.112.112.11 -149.112.112.112 -149.112.112.12 -149.112.112.9 -149.112.121.10 -149.112.122.10 -149.112.122.20 -149.112.122.30 -149.202.145.242 -149.202.81.7 -150.140.189.210 -151.11.24.15 -151.1.165.85 -151.192.44.238 -151.192.60.134 -151.192.63.2 -151.80.19.146 -151.80.238.97 -151.80.25.178 -15.204.157.214 -152.117.254.193 -152.149.40.2 -152.158.36.48 -152.200.186.94 -152.230.112.34 -153.120.88.148 -153.150.154.214 -153.156.219.109 -153.19.89.41 -153.246.37.6 -154.0.172.204 -154.10.6.11 -154.44.130.160 -154.63.11.0 -154.66.140.224 -155.33.195.106 -156.154.70.1 -156.154.70.10 -156.154.70.11 -156.154.70.16 -156.154.70.22 -156.154.70.26 -156.154.70.5 -156.154.70.60 -156.154.70.7 -156.154.71.1 -156.154.71.2 -156.154.71.20 -156.154.71.25 -156.154.71.26 -156.154.71.46 -156.200.116.74 -157.100.63.48 -157.185.70.98 -157.245.139.171 -157.25.58.57 -157.55.83.218 -158.247.210.85 -158.51.134.53 -159.192.104.150 -159.192.139.224 -159.196.50.130 -159.203.125.234 -159.255.187.250 -159.69.114.157 -160.16.111.164 -160.19.99.98 -160.72.33.26 -160.86.109.33 -161.11.226.170 -161.200.96.9 -161.49.226.52 -161.97.138.173 -161.97.149.103 -162.142.105.146 -162.142.28.10 -162.142.63.110 -162.159.24.69 -162.159.27.162 -162.159.36.1 -162.159.36.110 -162.159.36.114 -162.159.36.123 -162.159.36.126 -162.159.36.139 -162.159.36.141 -162.159.36.152 -162.159.36.158 -162.159.36.175 -162.159.36.181 -162.159.36.185 -162.159.36.190 -162.159.36.199 -162.159.36.216 -162.159.36.220 -162.159.36.224 -162.159.36.227 -162.159.36.230 -162.159.36.240 -162.159.36.247 -162.159.36.249 -162.159.36.25 -162.159.36.252 -162.159.36.253 -162.159.36.36 -162.159.36.46 -162.159.36.58 -162.159.36.6 -162.159.36.61 -162.159.36.64 -162.159.36.7 -162.159.36.86 -162.159.36.96 -162.159.46.0 -162.159.46.1 -162.159.46.115 -162.159.46.117 -162.159.46.119 -162.159.46.120 -162.159.46.147 -162.159.46.15 -162.159.46.151 -162.159.46.161 -162.159.46.166 -162.159.46.172 -162.159.46.175 -162.159.46.177 -162.159.46.18 -162.159.46.182 -162.159.46.185 -162.159.46.190 -162.159.46.197 -162.159.46.202 -162.159.46.214 -162.159.46.218 -162.159.46.219 -162.159.46.221 -162.159.46.223 -162.159.46.224 -162.159.46.23 -162.159.46.232 -162.159.46.239 -162.159.46.247 -162.159.46.249 -162.159.46.250 -162.159.46.28 -162.159.46.38 -162.159.46.42 -162.159.46.48 -162.159.46.51 -162.159.46.55 -162.159.46.56 -162.159.46.70 -162.159.46.71 -162.159.46.73 -162.159.46.8 -162.159.46.90 -162.159.50.115 -162.159.50.12 -162.159.50.134 -162.159.50.138 -162.159.50.248 -162.159.50.27 -162.159.50.3 -162.159.50.4 -162.159.50.79 -162.159.50.83 -162.159.50.88 -162.159.56.104 -162.159.56.165 -162.159.56.18 -162.159.56.43 -162.159.56.59 -162.159.56.75 -162.159.56.84 -162.159.56.86 -162.159.57.36 -162.19.58.10 -162.210.104.17 -162.212.4.20 -162.241.132.129 -162.246.127.108 -162.251.146.91 -162.251.158.88 -162.251.184.3 -163.172.31.111 -163.44.49.226 -163.47.202.150 -164.124.107.9 -164.163.133.21 -165.140.185.34 -165.16.58.124 -165.166.159.147 -165.16.68.129 -165.21.13.90 -165.246.10.2 -165.73.224.83 -165.87.13.129 -165.87.201.242 -165.87.201.244 -166.113.5.10 -166.146.42.193 -166.200.113.122 -167.172.60.99 -167.224.127.198 -167.235.59.243 -167.249.249.250 -167.86.109.163 -167.98.161.41 -167.98.161.42 -167.98.171.242 -167.98.174.81 -167.98.253.194 -167.98.87.164 -168.100.172.1 -168.121.97.36 -168.121.97.42 -168.126.63.2 -168.154.160.4 -168.154.160.5 -168.181.247.100 -168.181.247.115 -168.181.247.124 -168.181.247.2 -168.181.247.20 -168.181.247.27 -168.181.247.29 -168.181.247.33 -168.181.247.54 -168.181.247.76 -168.181.247.94 -168.187.161.250 -168.195.135.67 -168.195.135.71 -168.197.201.34 -168.205.228.68 -168.215.165.186 -168.227.102.42 -168.228.51.197 -168.232.38.50 -168.9.36.114 -168.95.1.1 -168.95.192.1 -169.237.229.88 -169.239.80.214 -169.47.157.77 -170.0.15.49 -170.150.222.243 -170.239.204.148 -170.239.204.156 -170.239.204.168 -170.239.204.175 -170.239.204.181 -170.239.204.230 -170.239.204.231 -170.239.204.239 -170.239.204.247 -170.239.206.125 -170.239.206.88 -170.239.207.211 -170.246.105.242 -170.254.231.77 -170.39.180.34 -170.81.9.4 -170.84.108.11 -172.104.57.181 -172.105.218.63 -172.109.128.250 -172.64.36.0 -172.64.36.1 -172.64.36.100 -172.64.36.101 -172.64.36.102 -172.64.36.103 -172.64.36.104 -172.64.36.107 -172.64.36.11 -172.64.36.112 -172.64.36.114 -172.64.36.116 -172.64.36.117 -172.64.36.118 -172.64.36.119 -172.64.36.12 -172.64.36.120 -172.64.36.121 -172.64.36.123 -172.64.36.126 -172.64.36.127 -172.64.36.128 -172.64.36.129 -172.64.36.13 -172.64.36.131 -172.64.36.133 -172.64.36.135 -172.64.36.136 -172.64.36.137 -172.64.36.138 -172.64.36.14 -172.64.36.140 -172.64.36.143 -172.64.36.147 -172.64.36.148 -172.64.36.149 -172.64.36.151 -172.64.36.152 -172.64.36.153 -172.64.36.155 -172.64.36.157 -172.64.36.158 -172.64.36.159 -172.64.36.16 -172.64.36.160 -172.64.36.161 -172.64.36.162 -172.64.36.163 -172.64.36.165 -172.64.36.166 -172.64.36.167 -172.64.36.168 -172.64.36.169 -172.64.36.17 -172.64.36.170 -172.64.36.172 -172.64.36.173 -172.64.36.174 -172.64.36.175 -172.64.36.176 -172.64.36.177 -172.64.36.178 -172.64.36.179 -172.64.36.182 -172.64.36.183 -172.64.36.184 -172.64.36.185 -172.64.36.186 -172.64.36.187 -172.64.36.188 -172.64.36.193 -172.64.36.195 -172.64.36.196 -172.64.36.197 -172.64.36.198 -172.64.36.200 -172.64.36.201 -172.64.36.202 -172.64.36.203 -172.64.36.204 -172.64.36.205 -172.64.36.206 -172.64.36.207 -172.64.36.208 -172.64.36.209 -172.64.36.21 -172.64.36.210 -172.64.36.211 -172.64.36.213 -172.64.36.214 -172.64.36.215 -172.64.36.216 -172.64.36.217 -172.64.36.218 -172.64.36.219 -172.64.36.22 -172.64.36.221 -172.64.36.222 -172.64.36.223 -172.64.36.224 -172.64.36.225 -172.64.36.227 -172.64.36.229 -172.64.36.23 -172.64.36.230 -172.64.36.233 -172.64.36.235 -172.64.36.236 -172.64.36.239 -172.64.36.240 -172.64.36.241 -172.64.36.244 -172.64.36.245 -172.64.36.246 -172.64.36.247 -172.64.36.249 -172.64.36.25 -172.64.36.251 -172.64.36.252 -172.64.36.253 -172.64.36.254 -172.64.36.255 -172.64.36.26 -172.64.36.28 -172.64.36.29 -172.64.36.30 -172.64.36.31 -172.64.36.34 -172.64.36.35 -172.64.36.36 -172.64.36.38 -172.64.36.41 -172.64.36.42 -172.64.36.43 -172.64.36.44 -172.64.36.45 -172.64.36.46 -172.64.36.47 -172.64.36.50 -172.64.36.51 -172.64.36.52 -172.64.36.53 -172.64.36.54 -172.64.36.56 -172.64.36.57 -172.64.36.58 -172.64.36.59 -172.64.36.6 -172.64.36.60 -172.64.36.61 -172.64.36.62 -172.64.36.63 -172.64.36.64 -172.64.36.65 -172.64.36.66 -172.64.36.67 -172.64.36.68 -172.64.36.69 -172.64.36.7 -172.64.36.70 -172.64.36.71 -172.64.36.72 -172.64.36.74 -172.64.36.75 -172.64.36.76 -172.64.36.77 -172.64.36.78 -172.64.36.79 -172.64.36.8 -172.64.36.80 -172.64.36.81 -172.64.36.82 -172.64.36.83 -172.64.36.84 -172.64.36.85 -172.64.36.86 -172.64.36.87 -172.64.36.89 -172.64.36.9 -172.64.36.90 -172.64.36.91 -172.64.36.92 -172.64.36.93 -172.64.36.94 -172.64.36.95 -172.64.36.96 -172.64.36.97 -172.64.36.98 -172.64.36.99 -172.64.37.0 -172.64.37.1 -172.64.37.10 -172.64.37.100 -172.64.37.101 -172.64.37.102 -172.64.37.104 -172.64.37.105 -172.64.37.106 -172.64.37.107 -172.64.37.108 -172.64.37.109 -172.64.37.110 -172.64.37.111 -172.64.37.112 -172.64.37.113 -172.64.37.114 -172.64.37.115 -172.64.37.116 -172.64.37.119 -172.64.37.12 -172.64.37.120 -172.64.37.122 -172.64.37.123 -172.64.37.124 -172.64.37.125 -172.64.37.126 -172.64.37.127 -172.64.37.128 -172.64.37.129 -172.64.37.130 -172.64.37.131 -172.64.37.132 -172.64.37.133 -172.64.37.134 -172.64.37.136 -172.64.37.137 -172.64.37.138 -172.64.37.139 -172.64.37.14 -172.64.37.140 -172.64.37.141 -172.64.37.142 -172.64.37.144 -172.64.37.145 -172.64.37.146 -172.64.37.147 -172.64.37.148 -172.64.37.149 -172.64.37.15 -172.64.37.150 -172.64.37.151 -172.64.37.152 -172.64.37.154 -172.64.37.155 -172.64.37.156 -172.64.37.157 -172.64.37.159 -172.64.37.16 -172.64.37.160 -172.64.37.161 -172.64.37.162 -172.64.37.163 -172.64.37.164 -172.64.37.165 -172.64.37.166 -172.64.37.167 -172.64.37.168 -172.64.37.169 -172.64.37.17 -172.64.37.170 -172.64.37.173 -172.64.37.175 -172.64.37.176 -172.64.37.177 -172.64.37.178 -172.64.37.179 -172.64.37.18 -172.64.37.180 -172.64.37.181 -172.64.37.182 -172.64.37.184 -172.64.37.185 -172.64.37.187 -172.64.37.188 -172.64.37.189 -172.64.37.19 -172.64.37.190 -172.64.37.191 -172.64.37.193 -172.64.37.194 -172.64.37.197 -172.64.37.198 -172.64.37.199 -172.64.37.2 -172.64.37.20 -172.64.37.200 -172.64.37.201 -172.64.37.203 -172.64.37.205 -172.64.37.206 -172.64.37.207 -172.64.37.208 -172.64.37.209 -172.64.37.21 -172.64.37.210 -172.64.37.211 -172.64.37.212 -172.64.37.213 -172.64.37.214 -172.64.37.215 -172.64.37.216 -172.64.37.217 -172.64.37.218 -172.64.37.22 -172.64.37.220 -172.64.37.222 -172.64.37.223 -172.64.37.224 -172.64.37.225 -172.64.37.226 -172.64.37.227 -172.64.37.228 -172.64.37.230 -172.64.37.231 -172.64.37.232 -172.64.37.234 -172.64.37.235 -172.64.37.236 -172.64.37.237 -172.64.37.238 -172.64.37.239 -172.64.37.24 -172.64.37.240 -172.64.37.241 -172.64.37.242 -172.64.37.243 -172.64.37.246 -172.64.37.247 -172.64.37.248 -172.64.37.249 -172.64.37.250 -172.64.37.251 -172.64.37.252 -172.64.37.253 -172.64.37.254 -172.64.37.27 -172.64.37.3 -172.64.37.30 -172.64.37.34 -172.64.37.35 -172.64.37.38 -172.64.37.39 -172.64.37.4 -172.64.37.40 -172.64.37.41 -172.64.37.42 -172.64.37.43 -172.64.37.44 -172.64.37.45 -172.64.37.46 -172.64.37.47 -172.64.37.48 -172.64.37.49 -172.64.37.5 -172.64.37.50 -172.64.37.51 -172.64.37.52 -172.64.37.53 -172.64.37.54 -172.64.37.55 -172.64.37.56 -172.64.37.57 -172.64.37.58 -172.64.37.6 -172.64.37.60 -172.64.37.61 -172.64.37.63 -172.64.37.64 -172.64.37.65 -172.64.37.66 -172.64.37.68 -172.64.37.69 -172.64.37.7 -172.64.37.70 -172.64.37.71 -172.64.37.72 -172.64.37.74 -172.64.37.75 -172.64.37.76 -172.64.37.78 -172.64.37.79 -172.64.37.8 -172.64.37.80 -172.64.37.82 -172.64.37.83 -172.64.37.84 -172.64.37.85 -172.64.37.86 -172.64.37.87 -172.64.37.88 -172.64.37.89 -172.64.37.9 -172.64.37.90 -172.64.37.91 -172.64.37.92 -172.64.37.93 -172.64.37.94 -172.64.37.95 -172.64.37.96 -172.64.37.97 -172.64.37.98 -172.64.46.103 -172.64.46.106 -172.64.46.109 -172.64.46.111 -172.64.46.124 -172.64.46.13 -172.64.46.142 -172.64.46.144 -172.64.46.159 -172.64.46.160 -172.64.46.161 -172.64.46.17 -172.64.46.173 -172.64.46.176 -172.64.46.177 -172.64.46.179 -172.64.46.191 -172.64.46.192 -172.64.46.198 -172.64.46.200 -172.64.46.202 -172.64.46.203 -172.64.46.209 -172.64.46.211 -172.64.46.213 -172.64.46.217 -172.64.46.22 -172.64.46.227 -172.64.46.229 -172.64.46.230 -172.64.46.236 -172.64.46.243 -172.64.46.252 -172.64.46.253 -172.64.46.255 -172.64.46.27 -172.64.46.28 -172.64.46.29 -172.64.46.31 -172.64.46.34 -172.64.46.35 -172.64.46.36 -172.64.46.42 -172.64.46.45 -172.64.46.46 -172.64.46.47 -172.64.46.50 -172.64.46.52 -172.64.46.53 -172.64.46.62 -172.64.46.66 -172.64.46.72 -172.64.46.80 -172.64.46.83 -172.64.46.84 -172.64.46.9 -172.64.47.10 -172.64.47.102 -172.64.47.103 -172.64.47.104 -172.64.47.106 -172.64.47.107 -172.64.47.110 -172.64.47.113 -172.64.47.12 -172.64.47.124 -172.64.47.133 -172.64.47.143 -172.64.47.147 -172.64.47.153 -172.64.47.154 -172.64.47.158 -172.64.47.166 -172.64.47.167 -172.64.47.168 -172.64.47.170 -172.64.47.171 -172.64.47.174 -172.64.47.178 -172.64.47.18 -172.64.47.180 -172.64.47.181 -172.64.47.186 -172.64.47.195 -172.64.47.200 -172.64.47.204 -172.64.47.210 -172.64.47.221 -172.64.47.224 -172.64.47.226 -172.64.47.227 -172.64.47.242 -172.64.47.250 -172.64.47.254 -172.64.47.29 -172.64.47.44 -172.64.47.45 -172.64.47.50 -172.64.47.67 -172.64.47.75 -172.64.47.85 -172.64.47.9 -172.64.47.91 -172.64.47.93 -173.11.131.1 -173.161.248.250 -173.196.48.146 -173.197.161.35 -173.223.100.10 -173.223.100.50 -173.223.100.9 -173.223.101.46 -173.223.101.9 -173.223.98.112 -173.223.98.117 -173.223.98.118 -173.223.98.137 -173.223.98.168 -173.223.98.180 -173.223.98.181 -173.223.98.191 -173.223.98.205 -173.223.98.213 -173.223.98.29 -173.223.98.53 -173.223.99.103 -173.223.99.112 -173.223.99.115 -173.223.99.168 -173.223.99.226 -173.223.99.230 -173.223.99.250 -173.223.99.26 -173.223.99.56 -173.223.99.81 -173.235.98.137 -173.239.57.92 -173.246.249.1 -173.246.51.165 -173.9.160.113 -174.138.185.110 -174.141.212.61 -174.69.42.64 -175.101.132.109 -175.101.18.20 -175.143.98.42 -175.199.73.192 -175.208.229.187 -175.209.22.21 -175.213.132.85 -175.45.16.252 -175.45.16.253 -176.102.128.154 -176.102.137.49 -176.103.68.25 -176.103.72.103 -176.105.207.93 -176.107.118.206 -176.107.131.32 -176.114.228.63 -176.118.26.2 -176.120.203.38 -176.12.122.226 -176.121.9.144 -176.122.21.137 -176.122.24.201 -176.192.123.190 -176.192.123.222 -176.193.75.13 -176.196.95.186 -176.211.30.237 -176.235.135.204 -176.53.10.136 -176.58.113.172 -176.62.79.18 -176.65.63.119 -176.9.1.117 -176.96.240.86 -176.98.95.132 -176.9.93.198 -177.10.162.82 -177.104.64.2 -177.105.208.17 -177.128.24.188 -177.131.18.34 -177.135.203.136 -177.139.163.26 -177.144.128.64 -177.152.104.139 -177.152.93.246 -177.184.176.5 -177.190.222.139 -177.200.196.85 -177.200.69.231 -177.20.235.230 -177.220.149.10 -177.221.41.221 -177.223.147.176 -177.223.147.36 -177.223.147.47 -177.223.147.88 -177.223.234.119 -177.22.38.165 -177.229.223.74 -177.234.132.8 -177.234.212.94 -177.234.226.92 -177.234.245.105 -177.240.8.182 -177.241.245.222 -177.43.102.34 -177.52.247.201 -177.66.0.46 -177.75.74.0 -177.84.120.203 -177.91.75.139 -177.92.18.202 -177.99.206.131 -178.128.46.208 -178.134.155.82 -178.134.27.51 -178.134.36.178 -178.158.234.89 -178.16.32.129 -178.170.166.98 -178.183.141.231 -178.210.129.42 -178.212.222.102 -178.213.114.193 -178.219.149.47 -178.219.173.190 -178.219.174.3 -178.220.230.54 -178.22.173.166 -178.222.249.245 -178.222.250.29 -178.239.225.58 -178.248.211.174 -178.254.1.232 -178.255.191.166 -178.33.45.223 -178.46.159.220 -178.46.160.85 -178.49.184.32 -178.54.198.71 -178.62.197.147 -178.70.70.151 -178.73.210.182 -178.73.51.106 -179.184.102.46 -179.27.64.34 -179.51.237.31 -179.60.232.10 -180.149.232.47 -180.149.232.56 -180.150.105.246 -180.193.170.33 -180.193.177.121 -180.193.179.138 -180.193.179.26 -180.193.184.97 -180.193.187.209 -180.193.221.81 -180.211.159.178 -180.232.81.98 -180.42.15.9 -180.69.75.37 -181.10.155.250 -181.10.181.102 -181.10.18.243 -181.105.120.94 -181.112.60.126 -181.114.118.242 -181.114.212.34 -181.115.184.75 -181.115.203.138 -181.118.148.189 -181.12.158.108 -181.129.117.226 -181.129.121.42 -181.129.183.19 -181.129.42.138 -181.129.57.146 -181.129.69.226 -181.129.70.106 -181.129.74.58 -181.143.102.218 -181.143.196.83 -181.143.20.10 -181.143.204.98 -181.143.215.50 -181.143.27.98 -181.143.37.202 -181.188.148.18 -181.204.147.243 -181.204.15.250 -181.204.185.18 -181.204.20.138 -181.204.232.2 -181.204.36.42 -181.204.80.106 -181.205.142.178 -181.205.146.74 -181.205.204.163 -181.205.206.162 -181.205.219.202 -181.205.241.34 -181.205.252.242 -181.205.28.162 -181.205.34.122 -181.205.47.219 -181.205.60.162 -181.205.61.122 -181.209.104.234 -181.209.119.114 -181.209.125.66 -181.209.125.70 -181.209.86.250 -181.212.39.92 -181.229.1.116 -181.40.92.86 -181.48.195.159 -181.48.196.182 -181.48.92.218 -181.49.102.254 -181.49.214.236 -181.57.149.82 -181.57.198.138 -18.163.103.200 -181.67.191.133 -181.94.246.48 -181.94.247.163 -182.156.152.119 -182.156.152.94 -182.156.153.39 -182.156.155.142 -182.156.155.193 -182.156.242.178 -182.156.93.102 -182.160.110.202 -182.171.231.25 -182.171.70.161 -182.176.111.188 -182.19.95.34 -182.19.95.98 -182.211.210.55 -182.237.16.7 -18.254.96.167 -182.71.145.153 -182.71.61.207 -182.72.232.135 -182.73.54.193 -182.76.239.237 -182.78.137.21 -182.93.25.100 -182.93.25.98 -183.107.106.231 -183.178.58.215 -183.98.206.162 -183.98.206.253 -184.164.96.251 -184.183.89.198 -184.184.114.202 -185.106.131.141 -185.109.169.66 -185.112.224.247 -185.121.110.228 -185.123.188.23 -185.130.153.92 -185.130.44.20 -185.133.208.32 -185.135.180.60 -185.14.214.60 -185.144.201.195 -185.145.126.191 -185.147.71.84 -185.150.99.255 -185.15.191.31 -185.153.92.140 -185.153.92.199 -185.165.96.225 -185.170.32.31 -185.170.35.60 -185.170.35.69 -185.171.208.153 -185.181.61.24 -185.182.107.236 -185.18.7.7 -185.188.218.86 -185.189.103.195 -185.190.40.87 -185.192.244.202 -185.195.111.30 -185.222.222.222 -185.22.235.137 -185.229.100.191 -185.230.6.220 -185.234.52.80 -185.24.122.178 -185.244.217.202 -185.246.188.51 -185.246.205.10 -185.247.225.17 -185.24.81.66 -185.249.92.4 -185.254.7.169 -185.30.45.241 -185.31.160.26 -185.3.69.37 -185.43.135.1 -185.45.244.221 -185.46.222.110 -185.47.209.34 -185.49.108.48 -185.49.111.249 -185.51.10.213 -185.52.46.209 -185.55.65.48 -185.60.178.253 -185.61.93.2 -185.65.175.161 -185.74.5.5 -185.78.232.172 -185.81.9.44 -185.84.19.115 -185.90.73.17 -185.93.180.131 -185.93.240.188 -185.95.67.151 -186.0.171.147 -186.103.167.190 -186.103.175.74 -186.116.6.75 -186.148.175.6 -186.150.201.138 -186.151.152.210 -186.159.15.86 -186.177.194.152 -186.182.51.17 -186.190.228.83 -186.190.236.11 -186.194.160.118 -186.200.32.84 -186.208.112.202 -186.209.55.244 -186.215.137.186 -186.225.10.4 -186.238.18.99 -186.248.66.34 -186.250.118.34 -186.4.206.188 -186.4.212.236 -186.67.172.51 -186.96.11.240 -186.96.145.231 -186.97.130.130 -186.97.194.162 -186.97.208.18 -186.97.218.42 -187.0.207.126 -187.103.15.117 -187.108.43.1 -187.111.31.78 -187.11.242.42 -187.1.163.30 -187.120.173.2 -187.141.169.250 -187.141.176.81 -187.157.46.210 -187.174.213.18 -187.188.150.41 -187.188.199.38 -187.19.101.65 -187.216.100.162 -187.216.86.65 -187.217.225.181 -187.28.39.146 -187.32.90.61 -187.44.0.18 -187.44.188.134 -187.45.101.123 -187.45.127.228 -187.60.217.204 -187.92.139.86 -187.93.105.85 -187.93.73.138 -187.95.112.36 -187.95.184.142 -187.95.18.51 -188.0.166.185 -188.0.167.35 -188.0.190.35 -188.117.137.71 -188.117.137.81 -188.117.137.97 -188.122.212.56 -188.122.24.142 -188.124.226.58 -188.166.123.73 -188.168.21.24 -188.170.248.157 -188.191.165.58 -188.207.12.98 -188.226.64.126 -188.227.135.6 -188.227.14.138 -188.254.49.206 -188.27.139.114 -188.36.126.131 -188.43.239.146 -188.6.164.43 -188.6.165.9 -188.69.130.183 -188.69.227.53 -188.69.227.55 -188.75.186.152 -188.75.33.210 -188.92.208.46 -188.94.227.38 -189.126.93.129 -189.16.248.21 -189.19.254.196 -189.194.86.5 -189.195.30.67 -189.196.47.87 -189.203.141.69 -189.204.240.235 -189.204.252.157 -189.204.6.253 -189.206.125.227 -189.206.218.22 -189.211.77.206 -189.223.164.81 -189.223.164.9 -189.223.164.93 -189.254.225.213 -189.254.40.179 -189.2.9.181 -189.5.129.7 -189.56.123.82 -189.7.49.85 -189.8.101.132 -189.90.114.109 -190.0.32.94 -190.0.62.118 -190.104.134.90 -190.104.168.155 -190.104.173.150 -190.105.214.36 -190.107.20.164 -190.111.207.83 -190.111.246.128 -190.11.225.2 -190.113.125.182 -190.113.190.162 -190.119.186.205 -190.121.144.48 -190.123.85.117 -190.123.85.89 -190.124.166.45 -190.124.39.34 -190.128.225.58 -190.131.249.205 -190.13.146.123 -190.14.224.45 -190.144.123.122 -190.144.90.226 -190.145.164.130 -190.145.196.114 -190.148.193.146 -190.151.104.178 -190.15.193.168 -190.152.219.135 -190.167.220.185 -190.171.26.34 -190.183.128.74 -190.186.1.46 -190.186.41.66 -190.187.243.222 -190.195.158.55 -190.210.127.98 -190.210.245.247 -190.247.213.20 -190.248.143.210 -190.248.67.206 -190.249.158.58 -190.249.168.212 -190.249.170.32 -190.4.48.3 -190.5.81.230 -190.60.81.50 -190.6.31.100 -190.71.49.122 -190.81.47.205 -190.82.70.214 -190.85.117.140 -190.85.118.18 -190.86.205.194 -190.89.142.141 -190.89.22.77 -190.92.7.76 -190.94.212.10 -191.100.20.116 -191.102.107.236 -191.102.107.237 -1.9.111.97 -191.240.254.238 -191.241.161.70 -191.241.245.108 -191.36.233.100 -191.36.233.57 -191.5.179.151 -191.6.138.137 -1.9.165.210 -191.97.47.93 -192.100.159.34 -192.12.111.30 -192.133.129.2 -192.165.252.20 -192.165.9.157 -192.182.146.202 -192.190.162.137 -192.221.176.16 -192.227.71.86 -192.3.26.101 -192.3.26.111 -192.50.109.65 -192.71.166.92 -193.104.79.138 -193.138.92.129 -193.141.116.163 -193.17.47.1 -193.19.103.4 -193.192.37.178 -193.19.64.88 -193.214.73.78 -193.216.224.131 -193.2.246.9 -193.226.61.1 -193.227.29.241 -193.230.183.201 -193.232.36.242 -193.239.254.129 -193.242.151.45 -193.242.177.92 -193.248.48.123 -193.251.1.154 -193.33.100.206 -193.39.71.3 -193.39.71.5 -193.42.159.2 -193.47.83.251 -193.56.148.228 -193.77.216.22 -193.95.221.141 -194.12.15.222 -194.135.11.210 -194.146.24.191 -194.146.249.146 -194.150.118.100 -194.158.78.137 -194.168.4.123 -194.177.199.1 -194.177.210.210 -194.186.215.150 -194.186.232.214 -194.186.44.69 -194.190.174.17 -194.190.43.87 -194.2.0.50 -194.249.67.20 -194.25.0.52 -194.25.0.60 -194.25.0.62 -194.28.9.4 -194.29.10.6 -194.30.145.73 -194.33.76.1 -194.36.144.87 -194.44.103.21 -194.44.139.88 -194.44.211.78 -194.48.151.132 -194.50.50.3 -194.53.180.252 -194.6.227.15 -194.6.227.180 -194.6.227.60 -194.67.40.47 -194.69.194.3 -194.69.195.2 -194.72.35.194 -194.74.6.42 -194.79.67.254 -194.88.54.158 -194.88.93.22 -194.93.2.70 -195.10.195.195 -195.110.24.248 -195.110.52.116 -195.11.179.142 -195.114.7.252 -195.116.52.251 -195.135.30.64 -195.138.79.162 -195.138.88.134 -195.154.31.170 -195.158.0.3 -195.158.0.5 -195.162.81.125 -195.16.47.53 -195.167.123.245 -195.178.33.46 -195.182.132.106 -195.182.136.214 -195.192.86.170 -195.192.9.141 -195.19.4.32 -195.205.9.65 -195.208.5.1 -195.21.13.234 -195.211.85.70 -195.21.54.113 -195.21.58.113 -195.216.58.16 -195.216.58.18 -195.222.45.135 -195.224.148.52 -195.224.191.221 -195.224.45.182 -195.225.48.17 -195.228.230.148 -195.228.39.166 -195.23.236.90 -195.234.79.213 -195.239.230.40 -195.239.39.250 -195.243.99.35 -195.245.237.35 -195.250.72.134 -195.251.19.1 -195.27.1.1 -195.29.76.12 -195.34.193.16 -195.34.240.235 -195.60.71.123 -195.69.217.130 -195.70.113.203 -195.88.223.73 -195.9.166.86 -195.9.190.22 -195.93.149.199 -195.96.68.226 -195.9.94.122 -195.99.66.220 -196.13.141.10 -196.13.158.51 -196.179.250.91 -196.201.228.22 -196.203.125.133 -196.21.186.253 -196.213.168.33 -196.25.155.102 -196.3.132.153 -196.3.132.154 -196.33.103.134 -196.43.199.61 -1.9.70.84 -1.9.70.93 -197.155.92.20 -197.155.92.21 -197.210.211.1 -197.214.248.66 -197.230.15.206 -197.230.174.153 -197.232.124.205 -197.232.21.96 -197.232.30.18 -197.235.15.47 -197.243.90.62 -197.248.195.135 -197.251.239.245 -197.253.36.34 -197.90.203.50 -197.90.203.87 -197.91.185.58 -198.153.192.1 -198.153.192.210 -198.153.192.40 -198.153.192.50 -198.153.194.40 -198.153.194.50 -198.180.225.180 -198.190.195.80 -198.233.215.56 -198.243.48.167 -198.54.117.10 -198.54.117.11 -198.60.22.2 -198.60.22.22 -198.99.193.1 -198.99.193.2 -199.101.48.17 -199.127.219.254 -199.166.6.2 -199.192.161.86 -199.193.74.42 -199.193.74.45 -199.193.83.137 -199.44.194.2 -199.58.81.218 -199.76.39.72 -199.85.126.10 -199.85.126.20 -199.85.126.30 -199.85.127.10 -199.85.127.20 -199.85.127.30 -199.89.55.101 -200.105.96.57 -200.106.167.196 -200.108.131.206 -200.1.104.35 -200.111.143.146 -200.111.47.43 -200.112.143.5 -200.116.231.27 -200.125.169.204 -200.125.171.170 -200.125.171.171 -200.125.171.219 -200.150.103.60 -200.195.154.122 -200.207.143.93 -200.214.186.3 -200.229.252.17 -200.229.252.196 -200.229.252.65 -200.24.159.207 -200.33.3.123 -200.37.203.90 -200.41.102.254 -200.42.203.112 -200.52.80.60 -200.54.51.6 -200.55.59.101 -200.55.59.102 -200.56.98.113 -200.56.98.145 -200.56.98.21 -200.58.180.50 -200.58.84.94 -200.5.90.102 -200.62.147.66 -200.68.46.21 -200.69.212.177 -200.70.33.250 -200.76.52.60 -200.80.203.75 -200.89.134.202 -200.89.142.74 -200.91.28.35 -200.92.202.26 -200.94.156.193 -201.101.2.38 -201.140.114.161 -201.140.157.33 -201.143.181.110 -201.148.107.14 -201.148.107.70 -201.148.17.110 -201.148.17.116 -201.150.35.124 -201.150.57.183 -201.151.40.54 -201.16.253.25 -201.164.154.202 -201.165.54.242 -201.170.249.229 -201.171.254.115 -201.174.235.68 -201.174.80.178 -201.182.66.37 -201.184.156.252 -201.184.167.2 -201.184.180.58 -201.184.187.98 -201.184.237.218 -201.184.60.178 -201.190.11.254 -201.190.184.123 -201.194.193.31 -201.218.125.251 -201.222.52.6 -201.229.68.14 -201.234.138.252 -201.234.210.179 -201.251.135.158 -201.3.14.194 -20.14.83.169 -201.48.9.4 -201.48.9.5 -201.93.94.170 -201.96.47.101 -202.125.84.197 -202.129.196.242 -202.129.206.237 -202.129.59.69 -202.131.73.38 -202.133.89.46 -202.138.73.149 -202.142.133.126 -202.142.157.146 -202.142.179.66 -202.142.189.98 -202.149.204.207 -202.149.205.59 -202.152.80.38 -202.153.110.47 -202.163.110.163 -202.175.45.2 -202.175.66.122 -202.181.233.243 -202.182.0.1 -202.183.153.140 -202.183.195.162 -202.184.80.21 -202.186.1.57 -20.220.73.158 -202.21.116.206 -202.229.255.8 -202.29.214.22 -202.29.218.138 -202.29.218.142 -202.29.219.154 -202.29.220.46 -202.29.225.26 -202.29.228.142 -202.29.239.62 -202.29.33.51 -202.29.9.46 -202.30.143.11 -202.3.229.2 -202.41.213.33 -20.242.194.111 -202.43.108.1 -202.44.52.1 -202.50.203.49 -202.61.251.55 -202.61.251.9 -202.62.222.222 -202.62.77.2 -202.63.197.114 -202.67.10.108 -202.6.96.3 -202.6.96.4 -202.70.76.13 -202.73.30.98 -202.78.224.129 -202.78.224.130 -202.80.247.34 -202.83.175.182 -202.83.175.187 -202.83.175.188 -202.84.37.100 -202.84.37.99 -202.86.149.18 -202.86.149.20 -202.91.41.234 -202.91.41.237 -203.113.148.12 -203.125.208.78 -203.129.25.39 -203.129.31.67 -203.130.152.97 -203.133.1.8 -203.135.31.114 -203.141.198.193 -203.144.13.250 -203.144.139.244 -203.150.167.27 -203.150.197.136 -203.150.199.17 -203.153.41.205 -203.154.177.8 -203.154.62.1 -203.158.15.67 -203.158.9.5 -203.160.57.11 -203.169.48.10 -203.169.48.8 -203.177.0.158 -203.177.190.130 -203.177.52.229 -203.177.84.2 -203.177.88.250 -203.178.136.36 -203.186.102.170 -203.188.242.211 -203.190.27.234 -203.190.41.158 -203.190.43.107 -203.190.44.224 -203.192.207.134 -203.198.161.89 -203.198.167.39 -203.205.50.200 -203.209.181.154 -203.213.96.4 -203.225.255.11 -203.232.148.3 -203.236.1.12 -203.236.20.11 -203.239.130.1 -203.240.193.11 -203.248.252.2 -203.249.161.2 -203.249.171.2 -203.253.64.1 -203.39.3.133 -203.47.150.176 -203.47.150.183 -203.50.2.71 -203.52.58.161 -203.52.58.169 -203.54.212.126 -20.36.30.173 -203.81.66.105 -20.38.170.198 -203.86.200.253 -203.89.132.4 -204.131.92.115 -204.132.230.6 -204.194.232.200 -204.194.234.200 -204.209.20.154 -20.44.248.67 -204.57.66.2 -20.46.112.146 -204.85.36.31 -204.9.109.57 -204.95.160.2 -204.95.160.4 -205.168.155.0 -205.169.93.95 -205.171.202.166 -205.171.3.26 -205.171.3.65 -205.171.3.66 -205.233.14.41 -206.125.134.19 -206.165.6.11 -206.165.6.12 -206.222.107.130 -206.222.107.34 -206.222.107.38 -206.222.107.70 -206.222.97.50 -206.222.97.82 -206.222.97.94 -206.246.25.10 -206.252.232.95 -206.253.33.130 -206.78.19.8 -206.84.63.62 -207.109.67.32 -207.144.227.94 -207.144.37.198 -207.159.104.10 -207.159.78.169 -207.17.190.5 -207.177.61.103 -207.191.1.10 -207.191.50.10 -207.191.50.250 -207.191.51.250 -207.195.35.143 -207.204.114.244 -207.2.105.196 -207.248.57.11 -207.53.228.67 -208.103.33.22 -208.113.128.45 -208.46.69.216 -208.46.96.168 -208.65.128.201 -208.67.220.120 -208.67.220.2 -208.67.220.220 -208.67.222.2 -208.67.222.222 -208.67.29.251 -208.72.160.67 -208.74.69.5 -208.86.63.157 -208.87.35.199 -208.87.98.94 -208.91.112.220 -208.91.112.52 -208.93.158.1 -209.10.242.245 -209.130.136.2 -209.130.139.2 -209.137.239.50 -209.159.152.77 -209.160.252.138 -209.181.232.128 -209.181.236.143 -209.201.40.112 -209.216.160.131 -209.216.160.2 -209.222.125.10 -209.232.116.6 -209.239.11.98 -209.244.0.4 -209.3.124.160 -209.37.92.138 -209.51.161.14 -209.87.64.70 -210.0.128.241 -210.0.128.242 -210.0.128.250 -210.0.128.251 -210.0.255.144 -210.0.255.251 -210.10.238.133 -210.117.242.71 -210.121.229.1 -210.14.12.22 -210.14.12.50 -210.14.13.209 -210.1.43.99 -210.163.158.224 -210.172.1.251 -210.176.210.4 -210.177.222.168 -210.178.75.16 -210.180.98.69 -210.181.1.24 -210.18.214.38 -210.1.83.201 -210.1.86.1 -210.187.25.185 -210.187.25.187 -210.187.50.146 -210.190.25.80 -210.1.94.54 -210.206.162.2 -210.206.183.39 -210.207.236.2 -210.211.20.225 -210.212.210.91 -210.213.126.161 -210.213.218.233 -210.213.242.242 -210.213.74.129 -210.213.74.41 -210.220.16.6 -210.225.153.177 -210.245.111.195 -210.5.101.242 -210.5.104.28 -210.5.111.178 -210.5.124.161 -210.5.125.6 -2.105.69.220 -210.5.89.193 -210.5.98.130 -210.61.48.168 -210.79.34.137 -210.90.197.1 -210.94.0.7 -210.94.0.73 -210.99.180.194 -210.99.77.210 -211.10.168.1 -211.105.7.5 -211.115.66.175 -211.123.77.97 -211.182.233.2 -211.182.233.3 -211.188.180.21 -211.188.180.22 -211.193.134.134 -211.194.140.3 -211.195.117.249 -211.199.149.131 -211.203.71.5 -211.21.220.171 -211.219.77.78 -211.219.86.1 -211.226.235.227 -211.23.233.180 -211.23.246.116 -211.233.62.5 -211.245.239.40 -211.35.20.27 -211.41.128.71 -211.47.188.226 -211.5.197.90 -211.59.242.36 -211.62.56.125 -211.63.64.11 -211.75.15.177 -211.75.39.209 -212.104.155.44 -212.104.43.2 -212.113.0.3 -212.116.122.201 -212.121.229.233 -212.12.14.49 -212.12.18.113 -212.122.50.26 -212.12.28.126 -212.14.18.110 -212.150.211.114 -212.160.242.185 -212.182.95.26 -212.199.114.11 -212.200.118.122 -212.224.71.71 -212.230.255.1 -212.233.125.20 -212.237.125.216 -212.237.127.127 -212.244.210.91 -212.247.176.202 -212.247.80.50 -212.251.32.202 -212.3.135.232 -212.3.223.82 -212.38.26.132 -212.39.106.154 -212.41.1.87 -212.4.121.10 -212.44.128.18 -212.48.152.160 -212.48.153.245 -212.5.128.173 -212.5.128.66 -212.5.214.213 -212.67.71.84 -212.68.34.124 -212.72.130.20 -212.72.130.21 -212.73.221.104 -212.73.221.107 -212.74.192.40 -212.92.200.165 -212.93.118.21 -212.93.121.72 -212.93.29.112 -213.111.121.178 -213.115.136.202 -213.115.136.217 -213.115.174.71 -213.124.39.21 -213.125.56.198 -213.131.40.230 -213.134.219.234 -213.136.36.155 -213.140.41.194 -213.14.11.162 -213.145.3.44 -213.149.177.25 -213.154.80.203 -213.16.110.112 -213.16.110.117 -213.170.87.116 -213.171.192.34 -213.176.242.166 -213.178.54.62 -213.191.222.21 -213.201.78.48 -213.205.80.82 -213.207.131.97 -213.207.132.189 -213.207.187.249 -213.211.33.58 -213.211.50.2 -213.212.214.58 -213.21.4.23 -213.216.64.102 -213.230.108.161 -213.230.90.54 -213.234.30.118 -213.237.31.46 -213.241.67.226 -213.251.245.15 -213.251.57.217 -213.251.61.42 -213.34.140.206 -213.4.82.7 -213.5.71.47 -213.6.20.57 -213.6.32.10 -213.73.3.164 -213.74.195.52 -213.76.114.107 -213.79.89.138 -213.81.188.1 -213.85.168.57 -213.91.143.246 -213.91.195.139 -216.120.247.231 -216.136.33.82 -216.136.82.113 -216.136.95.19 -216.136.95.2 -216.136.95.3 -216.136.95.34 -216.136.95.35 -216.136.95.67 -216.136.95.82 -216.136.95.83 -216.137.13.22 -216.146.35.35 -216.146.36.36 -216.152.244.77 -216.157.209.69 -216.160.226.49 -216.160.246.151 -216.165.129.157 -216.170.153.146 -216.194.29.204 -216.207.131.24 -216.207.227.198 -216.21.128.22 -216.21.129.22 -216.21.169.147 -216.222.134.250 -216.228.104.3 -216.229.0.25 -216.238.154.221 -216.238.98.60 -216.241.25.83 -216.250.141.137 -216.254.95.2 -216.27.175.2 -216.54.204.186 -216.80.113.2 -216.85.168.28 -217.0.43.50 -217.107.102.103 -217.109.45.177 -217.111.148.201 -217.113.195.244 -217.114.181.99 -217.116.61.153 -217.119.160.99 -217.12.214.244 -217.13.211.2 -217.14.178.67 -217.145.86.12 -217.15.146.124 -217.160.70.42 -217.164.255.35 -217.16.79.246 -217.17.41.146 -217.182.137.224 -217.182.192.218 -217.194.213.253 -217.196.23.122 -217.218.155.155 -217.23.199.77 -217.25.237.141 -217.27.219.122 -217.28.153.27 -217.33.153.162 -217.38.149.236 -217.64.148.33 -217.64.99.25 -217.73.31.10 -217.76.33.82 -217.79.18.121 -218.146.255.235 -218.146.34.200 -218.152.207.197 -218.159.112.239 -218.159.112.240 -218.161.40.163 -218.161.68.137 -218.189.82.194 -218.208.114.28 -218.208.115.68 -218.223.34.93 -218.235.251.2 -218.235.251.3 -218.236.49.18 -218.236.85.1 -218.36.68.254 -218.43.118.58 -218.44.187.8 -218.44.234.170 -218.44.251.210 -2.189.44.44 -219.118.161.57 -219.127.86.6 -219.163.11.226 -219.166.109.122 -219.166.58.130 -219.254.135.179 -219.87.164.152 -220.125.183.29 -220.130.130.141 -220.132.116.80 -220.132.88.194 -220.135.105.31 -220.135.28.237 -220.241.227.4 -220.245.192.186 -220.78.9.156 -220.83.87.2 -220.90.96.3 -221.120.200.249 -221.139.13.130 -221.143.216.58 -221.148.21.113 -221.151.144.12 -221.151.144.34 -221.159.225.51 -222.117.172.53 -222.118.225.33 -222.122.149.60 -222.122.49.6 -222.122.82.24 -222.127.151.3 -222.127.61.166 -222.151.203.57 -222.235.176.47 -222.239.110.51 -222.252.14.239 -222.253.48.106 -222.255.167.61 -222.255.206.232 -222.255.237.207 -222.98.115.219 -222.98.115.251 -223.255.176.195 -223.29.52.106 -223.5.5.0 -223.5.5.110 -223.5.5.111 -223.5.5.112 -223.5.5.123 -223.5.5.124 -223.5.5.129 -223.5.5.13 -223.5.5.136 -223.5.5.148 -223.5.5.15 -223.5.5.151 -223.5.5.157 -223.5.5.159 -223.5.5.163 -223.5.5.168 -223.5.5.17 -223.5.5.170 -223.5.5.187 -223.5.5.19 -223.5.5.190 -223.5.5.200 -223.5.5.203 -223.5.5.204 -223.5.5.219 -223.5.5.224 -223.5.5.228 -223.5.5.23 -223.5.5.231 -223.5.5.241 -223.5.5.248 -223.5.5.252 -223.5.5.31 -223.5.5.38 -223.5.5.4 -223.5.5.41 -223.5.5.45 -223.5.5.47 -223.5.5.50 -223.5.5.51 -223.5.5.59 -223.5.5.64 -223.5.5.70 -223.5.5.78 -223.5.5.79 -223.5.5.82 -223.5.5.84 -223.5.5.91 -223.5.5.93 -223.6.6.0 -223.6.6.127 -223.6.6.133 -223.6.6.139 -223.6.6.141 -223.6.6.143 -223.6.6.147 -223.6.6.150 -223.6.6.151 -223.6.6.169 -223.6.6.17 -223.6.6.170 -223.6.6.171 -223.6.6.183 -223.6.6.184 -223.6.6.191 -223.6.6.195 -223.6.6.196 -223.6.6.198 -223.6.6.199 -223.6.6.204 -223.6.6.232 -223.6.6.237 -223.6.6.241 -223.6.6.245 -223.6.6.253 -223.6.6.34 -223.6.6.41 -223.6.6.43 -223.6.6.46 -223.6.6.48 -223.6.6.56 -223.6.6.6 -223.6.6.68 -223.6.6.72 -223.6.6.81 -223.6.6.82 -23.115.125.217 -23.115.93.66 -23.145.240.37 -23.189.48.79 -23.216.52.138 -23.216.52.170 -23.216.52.183 -23.216.52.185 -23.216.52.42 -23.216.53.15 -23.216.53.194 -23.216.53.215 -23.216.53.222 -23.216.53.229 -23.216.53.230 -23.216.53.34 -23.216.53.58 -23.216.53.83 -23.239.215.98 -23.246.82.186 -23.25.183.97 -23.253.159.191 -23.56.160.116 -23.56.160.15 -23.56.160.195 -23.56.160.232 -23.56.160.252 -23.56.161.13 -23.56.161.147 -23.56.161.213 -23.56.161.23 -23.56.161.255 -23.59.248.128 -23.59.248.145 -23.59.248.171 -23.59.248.226 -23.59.248.248 -23.59.248.32 -23.59.249.226 -23.59.249.61 -23.59.249.67 -23.92.212.178 -23.95.2.103 -23.95.2.105 -23.95.2.126 -2.40.119.162 -2.40.45.218 -2.40.63.222 -24.116.92.101 -24.124.66.35 -24.152.48.66 -24.172.82.94 -24.182.14.205 -24.182.239.198 -24.216.227.74 -24.244.219.147 -24.252.237.240 -24.252.237.255 -24.37.245.42 -24.39.107.174 -24.39.127.26 -24.56.100.20 -24.56.102.20 -2.55.127.105 -2.55.72.107 -2.55.96.176 -2.56.220.2 -2.59.241.250 -2.59.241.54 -2.60.117.118 -2.60.245.18 -2.63.175.22 -27.110.139.78 -27.110.146.233 -27.110.163.162 -27.110.176.225 -27.110.185.10 -27.110.232.161 -27.110.239.50 -27.110.245.97 -27.113.241.18 -27.122.254.83 -27.124.6.225 -27.126.155.1 -27.126.155.4 -27.126.57.35 -27.147.48.26 -27.32.174.151 -27.32.252.176 -27.54.117.113 -27.72.58.161 -31.11.132.161 -31.11.204.241 -31.128.75.116 -31.146.161.194 -31.146.83.206 -31.154.3.161 -31.156.55.106 -31.15.88.144 -31.163.192.96 -31.163.200.36 -31.173.130.26 -31.173.165.18 -31.182.36.26 -31.187.77.9 -31.202.16.125 -31.210.218.84 -31.210.69.163 -31.22.0.186 -3.136.88.129 -3.139.141.82 -31.40.113.204 -31.7.37.37 -32.141.0.226 -3.214.203.108 -3.39.19.182 -34.94.84.140 -35.155.221.215 -35.163.102.41 -35.167.25.37 -36.37.181.118 -36.50.50.50 -36.67.236.161 -37.114.62.26 -37.128.95.86 -37.148.235.164 -37.18.26.2 -37.18.29.217 -37.187.133.168 -37.187.250.190 -37.18.74.136 -37.208.127.214 -37.232.70.214 -37.26.170.60 -37.32.77.102 -37.97.93.166 -38.135.49.152 -38.142.225.131 -38.242.133.215 -38.49.136.214 -38.74.61.221 -39.110.209.44 -4.0.0.53 -40.114.69.73 -40.70.19.156 -41.0.170.154 -41.139.202.86 -41.139.226.83 -41.165.19.186 -41.173.23.150 -41.174.104.223 -41.174.182.214 -41.185.21.252 -41.191.220.77 -41.203.62.146 -41.204.85.34 -41.215.248.143 -41.216.125.179 -41.216.159.6 -41.221.192.167 -41.225.101.234 -41.225.87.113 -41.228.23.137 -41.23.113.210 -41.23.114.29 -41.23.114.42 -41.23.114.62 -41.23.184.151 -41.23.184.193 -41.23.184.235 -41.23.184.250 -41.23.190.210 -41.23.216.150 -41.23.234.114 -41.23.234.129 -41.23.234.37 -41.23.240.123 -41.23.240.216 -41.23.253.31 -41.23.253.80 -41.23.99.247 -4.1.37.10 -41.57.120.177 -41.59.197.135 -41.60.129.80 -41.63.240.79 -4.1.67.145 -4.1.67.166 -41.72.155.178 -41.76.215.94 -41.84.143.137 -41.84.143.206 -42.116.255.180 -42.200.196.122 -4.2.2.1 -4.2.2.2 -4.2.2.3 -4.2.2.4 -4.2.2.5 -4.2.2.6 -42.61.107.9 -42.61.19.26 -42.61.42.249 -4.26.143.250 -4.26.145.250 -4.30.165.222 -43.225.66.101 -43.228.229.130 -43.231.234.17 -43.247.16.2 -43.249.112.98 -43.249.65.207 -43.250.81.70 -43.251.159.2 -4.34.37.186 -4.4.211.46 -45.11.45.11 -45.117.63.101 -45.117.63.105 -45.117.63.192 -45.117.63.205 -45.117.63.26 -45.117.63.42 -45.117.80.109 -45.125.208.8 -45.125.211.11 -45.126.21.60 -45.129.19.20 -45.143.120.250 -45.157.214.92 -45.159.168.100 -45.159.168.107 -45.159.168.192 -45.159.168.200 -45.159.168.203 -45.159.168.210 -45.159.168.232 -45.159.168.236 -45.159.168.240 -45.159.168.249 -45.159.168.70 -45.159.168.76 -45.159.169.102 -45.159.169.112 -45.159.169.14 -45.159.169.153 -45.159.169.166 -45.159.169.19 -45.159.169.196 -45.159.169.51 -45.159.170.117 -45.159.170.124 -45.159.170.150 -45.159.170.164 -45.159.170.215 -45.159.170.221 -45.159.170.81 -45.159.171.108 -45.159.171.119 -45.159.171.120 -45.159.171.125 -45.159.171.23 -45.159.171.49 -45.159.171.62 -45.159.171.82 -45.159.171.84 -45.159.171.92 -45.159.75.122 -45.163.220.58 -45.163.40.82 -45.167.112.2 -45.167.92.103 -45.168.133.38 -45.172.222.69 -45.173.140.190 -45.175.139.10 -45.176.175.27 -45.176.227.244 -45.178.74.107 -45.187.127.20 -45.187.127.22 -45.187.127.27 -45.224.148.188 -45.224.22.25 -45.224.96.55 -45.224.96.67 -45.228.181.248 -45.228.32.139 -45.231.221.1 -45.236.206.12 -45.249.122.82 -45.32.202.187 -45.5.57.170 -45.56.117.113 -45.58.38.166 -45.58.8.74 -45.6.136.231 -45.63.86.216 -45.65.225.202 -45.65.225.220 -45.7.228.232 -45.74.89.59 -45.76.35.187 -45.77.198.113 -45.79.154.49 -45.87.235.187 -45.87.235.67 -45.90.28.0 -45.90.28.1 -45.90.28.10 -45.90.28.100 -45.90.28.101 -45.90.28.102 -45.90.28.103 -45.90.28.104 -45.90.28.105 -45.90.28.106 -45.90.28.107 -45.90.28.108 -45.90.28.109 -45.90.28.11 -45.90.28.110 -45.90.28.111 -45.90.28.112 -45.90.28.113 -45.90.28.114 -45.90.28.115 -45.90.28.116 -45.90.28.117 -45.90.28.118 -45.90.28.119 -45.90.28.12 -45.90.28.120 -45.90.28.121 -45.90.28.122 -45.90.28.123 -45.90.28.124 -45.90.28.125 -45.90.28.126 -45.90.28.127 -45.90.28.128 -45.90.28.129 -45.90.28.13 -45.90.28.130 -45.90.28.131 -45.90.28.132 -45.90.28.133 -45.90.28.134 -45.90.28.135 -45.90.28.136 -45.90.28.137 -45.90.28.138 -45.90.28.139 -45.90.28.14 -45.90.28.140 -45.90.28.141 -45.90.28.142 -45.90.28.143 -45.90.28.144 -45.90.28.145 -45.90.28.146 -45.90.28.147 -45.90.28.148 -45.90.28.149 -45.90.28.15 -45.90.28.150 -45.90.28.151 -45.90.28.152 -45.90.28.153 -45.90.28.154 -45.90.28.155 -45.90.28.156 -45.90.28.157 -45.90.28.158 -45.90.28.159 -45.90.28.16 -45.90.28.160 -45.90.28.161 -45.90.28.162 -45.90.28.163 -45.90.28.164 -45.90.28.165 -45.90.28.166 -45.90.28.167 -45.90.28.168 -45.90.28.169 -45.90.28.17 -45.90.28.170 -45.90.28.171 -45.90.28.172 -45.90.28.173 -45.90.28.174 -45.90.28.175 -45.90.28.176 -45.90.28.177 -45.90.28.178 -45.90.28.179 -45.90.28.18 -45.90.28.180 -45.90.28.181 -45.90.28.182 -45.90.28.183 -45.90.28.184 -45.90.28.185 -45.90.28.186 -45.90.28.187 -45.90.28.188 -45.90.28.189 -45.90.28.19 -45.90.28.190 -45.90.28.191 -45.90.28.192 -45.90.28.193 -45.90.28.194 -45.90.28.195 -45.90.28.196 -45.90.28.197 -45.90.28.198 -45.90.28.199 -45.90.28.2 -45.90.28.20 -45.90.28.200 -45.90.28.201 -45.90.28.202 -45.90.28.203 -45.90.28.204 -45.90.28.206 -45.90.28.207 -45.90.28.208 -45.90.28.209 -45.90.28.21 -45.90.28.210 -45.90.28.211 -45.90.28.212 -45.90.28.213 -45.90.28.214 -45.90.28.215 -45.90.28.216 -45.90.28.217 -45.90.28.218 -45.90.28.219 -45.90.28.22 -45.90.28.220 -45.90.28.221 -45.90.28.222 -45.90.28.223 -45.90.28.224 -45.90.28.225 -45.90.28.226 -45.90.28.227 -45.90.28.228 -45.90.28.229 -45.90.28.23 -45.90.28.230 -45.90.28.231 -45.90.28.232 -45.90.28.233 -45.90.28.234 -45.90.28.235 -45.90.28.236 -45.90.28.237 -45.90.28.238 -45.90.28.239 -45.90.28.24 -45.90.28.240 -45.90.28.241 -45.90.28.242 -45.90.28.243 -45.90.28.244 -45.90.28.245 -45.90.28.246 -45.90.28.247 -45.90.28.248 -45.90.28.249 -45.90.28.25 -45.90.28.250 -45.90.28.251 -45.90.28.252 -45.90.28.253 -45.90.28.254 -45.90.28.26 -45.90.28.27 -45.90.28.28 -45.90.28.29 -45.90.28.3 -45.90.28.30 -45.90.28.31 -45.90.28.32 -45.90.28.33 -45.90.28.34 -45.90.28.35 -45.90.28.36 -45.90.28.37 -45.90.28.38 -45.90.28.39 -45.90.28.40 -45.90.28.41 -45.90.28.42 -45.90.28.43 -45.90.28.44 -45.90.28.45 -45.90.28.46 -45.90.28.47 -45.90.28.48 -45.90.28.49 -45.90.28.5 -45.90.28.50 -45.90.28.51 -45.90.28.52 -45.90.28.53 -45.90.28.54 -45.90.28.56 -45.90.28.57 -45.90.28.58 -45.90.28.59 -45.90.28.6 -45.90.28.60 -45.90.28.61 -45.90.28.62 -45.90.28.63 -45.90.28.64 -45.90.28.65 -45.90.28.66 -45.90.28.67 -45.90.28.68 -45.90.28.69 -45.90.28.7 -45.90.28.70 -45.90.28.71 -45.90.28.72 -45.90.28.73 -45.90.28.74 -45.90.28.75 -45.90.28.76 -45.90.28.77 -45.90.28.78 -45.90.28.79 -45.90.28.8 -45.90.28.80 -45.90.28.81 -45.90.28.82 -45.90.28.83 -45.90.28.84 -45.90.28.85 -45.90.28.86 -45.90.28.87 -45.90.28.88 -45.90.28.89 -45.90.28.9 -45.90.28.90 -45.90.28.91 -45.90.28.92 -45.90.28.93 -45.90.28.94 -45.90.28.95 -45.90.28.96 -45.90.28.97 -45.90.28.98 -45.90.28.99 -45.90.29.10 -45.90.29.100 -45.90.29.101 -45.90.29.103 -45.90.29.105 -45.90.29.106 -45.90.29.107 -45.90.29.108 -45.90.29.109 -45.90.29.110 -45.90.29.111 -45.90.29.112 -45.90.29.114 -45.90.29.115 -45.90.29.116 -45.90.29.117 -45.90.29.118 -45.90.29.119 -45.90.29.120 -45.90.29.121 -45.90.29.122 -45.90.29.123 -45.90.29.124 -45.90.29.125 -45.90.29.127 -45.90.29.128 -45.90.29.129 -45.90.29.130 -45.90.29.133 -45.90.29.134 -45.90.29.136 -45.90.29.137 -45.90.29.139 -45.90.29.141 -45.90.29.142 -45.90.29.144 -45.90.29.145 -45.90.29.146 -45.90.29.147 -45.90.29.148 -45.90.29.149 -45.90.29.150 -45.90.29.151 -45.90.29.152 -45.90.29.153 -45.90.29.154 -45.90.29.155 -45.90.29.156 -45.90.29.157 -45.90.29.158 -45.90.29.159 -45.90.29.160 -45.90.29.161 -45.90.29.162 -45.90.29.163 -45.90.29.165 -45.90.29.166 -45.90.29.167 -45.90.29.168 -45.90.29.170 -45.90.29.171 -45.90.29.172 -45.90.29.173 -45.90.29.174 -45.90.29.175 -45.90.29.176 -45.90.29.177 -45.90.29.178 -45.90.29.179 -45.90.29.180 -45.90.29.182 -45.90.29.183 -45.90.29.184 -45.90.29.185 -45.90.29.186 -45.90.29.187 -45.90.29.188 -45.90.29.189 -45.90.29.190 -45.90.29.191 -45.90.29.192 -45.90.29.193 -45.90.29.194 -45.90.29.195 -45.90.29.196 -45.90.29.197 -45.90.29.198 -45.90.29.199 -45.90.29.200 -45.90.29.201 -45.90.29.202 -45.90.29.203 -45.90.29.204 -45.90.29.206 -45.90.29.207 -45.90.29.208 -45.90.29.209 -45.90.29.210 -45.90.29.211 -45.90.29.212 -45.90.29.213 -45.90.29.214 -45.90.29.215 -45.90.29.216 -45.90.29.217 -45.90.29.218 -45.90.29.219 -45.90.29.22 -45.90.29.220 -45.90.29.221 -45.90.29.222 -45.90.29.223 -45.90.29.224 -45.90.29.225 -45.90.29.226 -45.90.29.227 -45.90.29.228 -45.90.29.229 -45.90.29.230 -45.90.29.231 -45.90.29.232 -45.90.29.233 -45.90.29.234 -45.90.29.235 -45.90.29.236 -45.90.29.237 -45.90.29.239 -45.90.29.240 -45.90.29.241 -45.90.29.242 -45.90.29.243 -45.90.29.244 -45.90.29.245 -45.90.29.246 -45.90.29.247 -45.90.29.248 -45.90.29.249 -45.90.29.250 -45.90.29.251 -45.90.29.252 -45.90.29.253 -45.90.29.254 -45.90.29.57 -45.90.29.58 -45.90.29.59 -45.90.29.60 -45.90.29.61 -45.90.29.62 -45.90.29.63 -45.90.29.64 -45.90.29.66 -45.90.29.67 -45.90.29.68 -45.90.29.69 -45.90.29.70 -45.90.29.71 -45.90.29.72 -45.90.29.73 -45.90.29.74 -45.90.29.75 -45.90.29.77 -45.90.29.78 -45.90.29.79 -45.90.29.80 -45.90.29.81 -45.90.29.82 -45.90.29.83 -45.90.29.84 -45.90.29.85 -45.90.29.86 -45.90.29.87 -45.90.29.88 -45.90.29.89 -45.90.29.90 -45.90.29.91 -45.90.29.93 -45.90.29.94 -45.90.29.95 -45.90.29.96 -45.90.29.97 -45.90.29.98 -45.90.29.99 -45.90.30.0 -45.90.30.1 -45.90.30.10 -45.90.30.100 -45.90.30.101 -45.90.30.102 -45.90.30.103 -45.90.30.104 -45.90.30.105 -45.90.30.106 -45.90.30.107 -45.90.30.108 -45.90.30.109 -45.90.30.11 -45.90.30.110 -45.90.30.111 -45.90.30.112 -45.90.30.113 -45.90.30.114 -45.90.30.115 -45.90.30.116 -45.90.30.117 -45.90.30.118 -45.90.30.119 -45.90.30.12 -45.90.30.120 -45.90.30.121 -45.90.30.122 -45.90.30.123 -45.90.30.124 -45.90.30.125 -45.90.30.126 -45.90.30.127 -45.90.30.128 -45.90.30.129 -45.90.30.13 -45.90.30.130 -45.90.30.131 -45.90.30.132 -45.90.30.133 -45.90.30.134 -45.90.30.135 -45.90.30.136 -45.90.30.137 -45.90.30.138 -45.90.30.139 -45.90.30.14 -45.90.30.140 -45.90.30.141 -45.90.30.142 -45.90.30.143 -45.90.30.144 -45.90.30.145 -45.90.30.146 -45.90.30.147 -45.90.30.148 -45.90.30.149 -45.90.30.15 -45.90.30.150 -45.90.30.151 -45.90.30.152 -45.90.30.153 -45.90.30.154 -45.90.30.155 -45.90.30.156 -45.90.30.157 -45.90.30.158 -45.90.30.159 -45.90.30.16 -45.90.30.160 -45.90.30.161 -45.90.30.162 -45.90.30.163 -45.90.30.164 -45.90.30.165 -45.90.30.166 -45.90.30.167 -45.90.30.168 -45.90.30.169 -45.90.30.17 -45.90.30.170 -45.90.30.171 -45.90.30.172 -45.90.30.173 -45.90.30.174 -45.90.30.175 -45.90.30.176 -45.90.30.177 -45.90.30.178 -45.90.30.179 -45.90.30.18 -45.90.30.180 -45.90.30.181 -45.90.30.182 -45.90.30.183 -45.90.30.184 -45.90.30.185 -45.90.30.186 -45.90.30.187 -45.90.30.188 -45.90.30.189 -45.90.30.19 -45.90.30.190 -45.90.30.191 -45.90.30.192 -45.90.30.193 -45.90.30.194 -45.90.30.195 -45.90.30.196 -45.90.30.197 -45.90.30.198 -45.90.30.199 -45.90.30.2 -45.90.30.20 -45.90.30.200 -45.90.30.201 -45.90.30.202 -45.90.30.203 -45.90.30.204 -45.90.30.206 -45.90.30.207 -45.90.30.208 -45.90.30.209 -45.90.30.21 -45.90.30.210 -45.90.30.211 -45.90.30.212 -45.90.30.213 -45.90.30.214 -45.90.30.215 -45.90.30.216 -45.90.30.217 -45.90.30.218 -45.90.30.219 -45.90.30.22 -45.90.30.220 -45.90.30.221 -45.90.30.222 -45.90.30.223 -45.90.30.224 -45.90.30.225 -45.90.30.226 -45.90.30.227 -45.90.30.228 -45.90.30.229 -45.90.30.23 -45.90.30.230 -45.90.30.231 -45.90.30.232 -45.90.30.233 -45.90.30.234 -45.90.30.235 -45.90.30.236 -45.90.30.237 -45.90.30.238 -45.90.30.239 -45.90.30.24 -45.90.30.240 -45.90.30.241 -45.90.30.242 -45.90.30.243 -45.90.30.244 -45.90.30.245 -45.90.30.246 -45.90.30.247 -45.90.30.248 -45.90.30.249 -45.90.30.25 -45.90.30.250 -45.90.30.251 -45.90.30.252 -45.90.30.253 -45.90.30.254 -45.90.30.26 -45.90.30.27 -45.90.30.28 -45.90.30.29 -45.90.30.3 -45.90.30.30 -45.90.30.31 -45.90.30.32 -45.90.30.33 -45.90.30.34 -45.90.30.35 -45.90.30.36 -45.90.30.37 -45.90.30.38 -45.90.30.39 -45.90.30.40 -45.90.30.41 -45.90.30.42 -45.90.30.43 -45.90.30.44 -45.90.30.45 -45.90.30.46 -45.90.30.47 -45.90.30.48 -45.90.30.49 -45.90.30.5 -45.90.30.50 -45.90.30.51 -45.90.30.52 -45.90.30.53 -45.90.30.54 -45.90.30.55 -45.90.30.56 -45.90.30.57 -45.90.30.58 -45.90.30.59 -45.90.30.6 -45.90.30.60 -45.90.30.61 -45.90.30.62 -45.90.30.63 -45.90.30.64 -45.90.30.65 -45.90.30.66 -45.90.30.67 -45.90.30.68 -45.90.30.69 -45.90.30.7 -45.90.30.70 -45.90.30.71 -45.90.30.72 -45.90.30.73 -45.90.30.74 -45.90.30.75 -45.90.30.76 -45.90.30.77 -45.90.30.78 -45.90.30.79 -45.90.30.8 -45.90.30.80 -45.90.30.81 -45.90.30.82 -45.90.30.83 -45.90.30.84 -45.90.30.85 -45.90.30.86 -45.90.30.87 -45.90.30.88 -45.90.30.89 -45.90.30.9 -45.90.30.90 -45.90.30.91 -45.90.30.92 -45.90.30.93 -45.90.30.94 -45.90.30.95 -45.90.30.96 -45.90.30.97 -45.90.30.98 -45.90.30.99 -45.90.31.1 -45.90.31.112 -45.90.31.114 -45.90.31.117 -45.90.31.124 -45.90.31.128 -45.90.31.135 -45.90.31.136 -45.90.31.137 -45.90.31.144 -45.90.31.148 -45.90.31.16 -45.90.31.163 -45.90.31.167 -45.90.31.168 -45.90.31.179 -45.90.31.182 -45.90.31.183 -45.90.31.185 -45.90.31.191 -45.90.31.194 -45.90.31.199 -45.90.31.2 -45.90.31.204 -45.90.31.217 -45.90.31.219 -45.90.31.250 -45.90.31.3 -45.90.31.4 -45.90.31.41 -45.90.31.5 -45.90.31.55 -45.90.31.6 -45.90.31.68 -45.90.31.74 -45.90.31.75 -45.90.31.82 -45.90.31.94 -46.107.228.164 -46.140.228.158 -46.148.26.231 -46.150.191.57 -46.16.226.116 -46.16.226.250 -46.167.233.65 -46.171.144.226 -46.172.192.236 -46.174.0.245 -46.182.19.48 -46.183.220.64 -46.188.3.161 -46.188.52.45 -46.196.212.8 -46.21.128.118 -46.21.250.23 -46.221.14.44 -46.229.58.57 -46.22.99.226 -46.231.72.212 -46.235.85.142 -46.242.130.233 -46.243.179.123 -46.243.181.161 -46.243.181.193 -46.245.253.5 -46.249.36.55 -46.253.140.69 -46.254.24.214 -46.29.12.142 -46.37.207.191 -46.37.4.202 -46.39.227.76 -46.40.0.5 -46.40.2.237 -46.42.19.104 -46.42.19.218 -46.55.253.26 -46.8.249.194 -46.8.33.200 -4.7.175.6 -47.180.199.94 -47.206.64.128 -47.207.31.201 -4.7.220.241 -47.253.24.2 -47.47.144.22 -47.48.67.238 -47.49.148.38 -4.79.132.219 -4.79.244.118 -49.0.5.15 -49.0.64.179 -49.0.76.72 -49.0.82.21 -49.156.53.166 -49.229.100.162 -49.229.158.131 -49.229.158.61 -49.248.102.209 -49.255.194.141 -49.255.4.22 -50.115.205.166 -50.117.0.170 -50.125.234.126 -50.170.46.89 -50.175.159.202 -50.192.13.172 -50.192.195.69 -50.204.174.58 -50.204.174.98 -50.206.226.42 -50.206.226.80 -50.207.85.66 -50.215.184.91 -50.215.49.13 -50.223.140.253 -50.223.162.29 -50.223.23.54 -50.225.71.126 -50.225.95.30 -50.226.170.222 -50.226.171.1 -50.230.4.240 -50.230.4.242 -50.234.132.241 -50.235.153.225 -50.235.228.46 -50.236.212.9 -50.237.114.76 -50.237.34.1 -50.242.231.131 -50.247.134.226 -50.249.22.169 -50.27.156.170 -50.45.183.18 -50.65.169.147 -50.77.103.165 -50.78.108.5 -50.78.224.131 -50.79.154.34 -50.86.78.84 -5.100.252.54 -5.101.76.185 -5.101.76.193 -5.101.79.57 -5.11.11.11 -5.11.11.5 -51.15.183.212 -51.178.20.235 -51.210.86.116 -51.254.5.245 -51.255.128.114 -51.255.128.119 -51.255.23.2 -51.255.43.23 -5.128.15.37 -5.128.235.12 -5.129.34.75 -5.130.61.37 -5.134.218.78 -5.135.166.77 -51.38.148.132 -5.140.233.239 -5.141.29.82 -5.149.222.186 -5.149.90.125 -5.149.90.172 -5.149.90.231 -5.149.91.199 -5.151.62.227 -5.151.63.237 -5.152.206.162 -5.154.120.75 -5.158.119.176 -5.159.114.28 -5.161.16.131 -5.1.66.255 -51.68.139.183 -51.68.227.204 -51.75.134.185 -5.178.114.78 -5.180.183.129 -5.181.210.184 -5.185.233.249 -5.185.241.212 -5.185.243.27 -5.185.252.179 -5.188.137.182 -5.188.42.199 -5.188.59.211 -5.188.65.196 -5.188.65.93 -5.189.161.18 -5.200.38.113 -5.200.42.113 -5.206.235.55 -52.119.88.204 -52.171.61.133 -5.2.196.93 -5.2.197.180 -52.24.103.199 -52.3.100.184 -5.23.97.157 -5.249.147.98 -5.252.170.127 -5.252.171.157 -5.253.146.177 -5.253.252.130 -5.254.197.224 -5.255.10.23 -5.255.12.221 -5.255.14.12 -5.255.18.233 -5.255.19.163 -5.255.21.74 -5.255.23.94 -5.255.25.80 -5.255.27.244 -5.32.132.85 -5.32.55.10 -5.32.90.30 -5.39.71.50 -5.42.213.50 -5.42.248.31 -54.37.30.59 -5.45.103.22 -5.61.203.112 -5.61.203.94 -5.61.8.20 -5.63.106.250 -5.63.111.235 -5.63.163.69 -58.103.130.4 -58.120.21.34 -58.124.34.235 -58.138.143.62 -58.143.171.216 -58.147.189.90 -58.162.206.206 -58.177.158.254 -58.177.179.58 -58.185.54.17 -58.185.89.201 -58.191.61.42 -58.229.253.16 -5.83.75.10 -58.69.174.39 -58.69.21.74 -58.69.29.58 -58.69.41.17 -58.69.78.37 -58.69.88.193 -58.69.9.25 -58.71.19.113 -58.82.148.227 -58.82.152.44 -59.125.155.62 -59.125.229.34 -59.125.246.99 -59.125.83.54 -59.127.38.136 -59.127.40.140 -59.127.80.104 -59.152.238.147 -59.1.58.227 -59.158.8.83 -59.17.120.241 -59.188.10.22 -59.190.126.235 -59.25.130.141 -59.28.197.231 -5.96.198.66 -59.9.198.232 -60.240.176.183 -60.242.246.234 -60.248.142.203 -60.248.225.123 -60.249.116.120 -60.249.174.18 -60.250.132.102 -60.250.158.126 -60.251.132.74 -60.251.238.89 -60.32.232.49 -61.108.103.134 -61.1.106.16 -61.19.40.246 -61.19.42.34 -61.199.203.240 -61.213.119.145 -61.219.84.5 -61.221.26.25 -61.238.97.254 -61.244.186.189 -61.250.162.193 -61.251.111.227 -61.255.135.199 -61.32.254.2 -61.5.134.35 -61.79.146.73 -61.82.39.88 -61.91.28.86 -61.91.5.74 -61.93.197.46 -62.105.17.234 -62.112.116.86 -62.140.239.1 -62.150.77.106 -62.152.53.218 -62.157.169.104 -62.159.231.11 -62.168.30.102 -62.171.167.67 -62.183.112.1 -62.183.54.78 -62.213.182.73 -62.217.77.45 -62.2.213.120 -62.23.170.194 -62.232.138.94 -62.28.102.188 -62.28.181.242 -62.28.68.66 -62.32.70.134 -62.36.9.107 -62.54.20.107 -62.55.249.49 -62.74.157.85 -62.74.159.221 -62.74.209.241 -62.74.227.153 -62.76.30.148 -62.76.62.76 -62.77.232.226 -62.82.138.5 -62.94.243.1 -62.96.215.140 -63.145.193.162 -63.146.216.50 -63.146.221.254 -63.149.93.185 -63.151.196.152 -63.151.67.7 -63.151.93.198 -63.156.24.246 -63.157.105.104 -63.209.139.112 -63.215.98.144 -63.218.191.114 -63.229.242.48 -63.234.229.208 -63.234.98.153 -63.237.240.226 -63.238.99.81 -63.246.224.30 -63.73.11.2 -64.107.45.5 -64.119.80.100 -64.129.104.46 -64.129.67.113 -64.132.94.250 -64.145.73.4 -64.146.142.186 -64.146.144.50 -64.156.223.254 -64.19.105.113 -64.201.233.59 -64.212.106.84 -64.212.106.85 -64.215.98.148 -64.215.98.149 -64.233.206.99 -64.233.207.16 -64.233.217.2 -64.237.68.238 -64.251.17.22 -64.31.5.1 -64.45.190.98 -64.50.242.202 -64.6.128.59 -64.6.64.6 -64.6.65.6 -64.71.24.219 -64.72.212.20 -64.81.127.2 -64.81.45.2 -64.90.83.57 -64.9.50.67 -65.108.195.182 -65.112.204.79 -65.112.207.1 -65.113.152.254 -65.123.152.22 -65.127.10.47 -65.133.11.219 -65.133.71.9 -65.141.175.23 -65.144.155.7 -65.153.234.42 -65.154.130.142 -65.154.177.78 -65.154.24.39 -65.155.105.152 -65.155.149.95 -65.155.204.95 -65.155.206.25 -65.155.222.14 -65.155.226.137 -65.155.232.151 -65.155.70.65 -65.156.49.154 -65.158.43.95 -65.18.112.106 -65.184.247.241 -65.199.61.96 -65.203.131.152 -65.255.197.147 -66.128.32.59 -66.135.47.183 -66.161.231.242 -66.162.85.79 -66.163.0.161 -66.163.0.173 -66.175.146.133 -66.175.212.65 -66.193.38.100 -66.198.193.78 -66.209.73.153 -66.223.231.66 -66.28.0.61 -66.42.33.24 -66.42.98.203 -66.60.251.26 -66.76.212.177 -66.92.159.2 -66.92.224.2 -66.92.64.2 -66.93.87.2 -67.128.146.144 -67.128.146.151 -67.128.201.121 -67.131.0.224 -67.134.102.128 -67.135.161.240 -67.17.215.132 -67.17.215.133 -67.206.161.69 -67.207.87.107 -67.210.146.50 -67.21.172.197 -67.221.176.195 -67.222.123.6 -67.227.132.89 -67.242.6.250 -67.60.177.71 -67.72.109.56 -68.188.22.22 -68.225.2.46 -68.234.119.76 -69.10.42.239 -69.11.6.154 -69.1.192.70 -69.129.221.220 -69.131.56.8 -69.13.210.208 -69.158.192.73 -69.167.171.210 -69.169.190.211 -69.179.102.1 -69.194.131.163 -69.195.132.6 -69.28.54.203 -69.60.160.196 -69.63.73.234 -70.117.56.250 -70.88.50.197 -70.90.215.209 -70.97.122.111 -71.14.165.4 -71.167.28.213 -71.41.254.5 -71.4.247.100 -71.4.247.50 -71.66.18.58 -71.67.154.107 -71.67.219.165 -71.76.82.147 -71.78.178.237 -71.86.25.4 -72.10.3.46 -72.131.206.67 -72.14.11.161 -72.167.40.133 -72.167.54.236 -72.19.3.8 -72.211.20.35 -72.211.20.43 -72.237.212.20 -72.237.212.21 -72.255.226.226 -72.255.245.68 -72.28.117.68 -72.28.117.69 -72.45.131.66 -74.113.101.251 -74.117.241.12 -74.120.249.24 -74.124.54.13 -74.202.142.162 -74.208.207.175 -74.208.38.34 -74.214.183.94 -74.219.86.186 -74.220.244.105 -74.220.250.149 -74.39.233.137 -74.50.211.90 -74.62.175.3 -74.75.115.158 -74.87.171.129 -74.87.180.6 -74.93.61.233 -75.10.57.38 -75.2.53.153 -76.144.87.168 -76.181.207.75 -76.76.10.0 -76.76.10.1 -76.76.10.155 -76.76.10.2 -76.76.10.32 -76.76.10.33 -76.76.10.34 -76.76.10.35 -76.76.10.36 -76.76.10.37 -76.76.10.38 -76.76.10.4 -76.76.10.5 -76.76.2.0 -76.76.2.1 -76.76.2.11 -76.76.2.2 -76.76.2.32 -76.76.2.33 -76.76.2.34 -76.76.2.35 -76.76.2.36 -76.76.2.37 -76.76.2.38 -76.76.2.4 -76.76.2.44 -76.76.2.5 -76.79.232.163 -76.80.221.14 -76.80.83.196 -76.81.229.73 -76.9.245.205 -77.106.201.102 -77.108.81.236 -77.109.21.186 -77.137.26.184 -77.156.224.84 -77.158.164.186 -77.158.80.50 -77.220.187.242 -77.222.170.103 -77.227.15.40 -77.230.19.121 -77.230.66.172 -77.231.171.44 -77.232.160.249 -77.232.162.90 -77.232.167.181 -77.233.10.104 -77.233.6.226 -77.235.27.18 -77.235.28.229 -77.238.129.116 -77.239.132.138 -77.242.107.110 -77.242.107.172 -77.242.138.149 -77.242.186.206 -77.242.18.69 -77.242.96.158 -77.243.4.154 -77.245.114.45 -77.246.236.114 -77.246.57.132 -77.26.196.60 -77.26.214.15 -77.34.49.120 -77.34.74.185 -77.38.204.210 -77.39.233.134 -77.39.63.143 -77.39.99.247 -77.41.155.86 -77.41.159.250 -77.41.170.50 -77.42.155.181 -77.42.220.110 -77.45.110.84 -77.45.111.51 -77.45.111.74 -77.45.125.84 -77.45.62.160 -77.46.136.160 -77.46.138.33 -77.48.176.3 -77.48.45.234 -77.50.132.62 -77.53.35.136 -77.55.208.167 -77.65.117.250 -77.65.176.110 -77.65.19.202 -77.65.46.150 -77.65.52.106 -77.66.201.215 -77.69.37.68 -77.71.54.253 -77.71.62.125 -77.71.69.6 -77.74.31.171 -77.75.8.229 -77.76.148.204 -77.76.174.200 -77.76.190.71 -77.77.215.98 -77.77.24.10 -77.78.153.198 -77.78.154.9 -77.78.196.3 -77.78.201.59 -77.79.132.7 -77.79.134.94 -77.79.184.131 -77.82.90.39 -77.83.219.111 -77.85.194.207 -77.85.195.234 -77.85.204.242 -77.87.100.52 -77.87.86.196 -77.88.105.215 -77.88.8.1 -77.88.8.2 -77.88.8.3 -77.88.8.7 -77.88.8.8 -77.88.8.88 -77.89.204.186 -77.93.193.202 -77.94.124.18 -77.94.205.70 -77.95.52.251 -78.107.235.83 -78.107.248.75 -78.107.30.33 -78.107.31.203 -78.107.31.204 -78.108.160.207 -78.108.77.75 -78.109.131.76 -78.109.191.90 -78.109.98.132 -78.110.151.199 -78.110.157.178 -78.110.160.53 -78.111.121.102 -78.111.144.27 -78.130.147.134 -78.130.231.66 -78.130.64.95 -78.131.11.248 -78.131.88.3 -78.134.63.198 -78.140.10.3 -78.140.12.87 -78.140.24.168 -78.140.4.85 -78.140.56.107 -78.140.59.25 -78.141.243.121 -78.142.233.163 -78.142.233.245 -78.142.234.254 -78.142.234.4 -78.142.234.75 -78.142.85.182 -78.152.31.133 -78.153.137.234 -78.155.252.220 -78.156.255.42 -78.157.162.147 -78.199.59.111 -78.25.126.135 -78.25.155.61 -78.25.86.148 -78.28.158.220 -78.28.209.150 -78.29.19.18 -78.30.194.13 -78.30.197.31 -78.30.217.153 -78.30.245.221 -78.31.150.6 -78.31.58.145 -78.31.59.12 -78.31.67.99 -78.31.85.18 -78.31.98.27 -78.36.4.51 -78.41.94.35 -78.85.21.175 -78.85.22.141 -78.85.33.129 -78.85.41.38 -78.88.188.206 -78.88.188.98 -79.100.162.95 -79.101.46.218 -79.106.231.170 -79.110.203.165 -79.111.113.4 -79.111.12.225 -79.116.10.46 -79.120.54.186 -79.124.50.245 -79.125.163.149 -79.129.52.33 -79.129.54.38 -79.129.58.166 -79.129.93.46 -79.133.62.62 -79.134.54.190 -79.135.61.11 -79.135.61.9 -79.136.81.111 -79.136.81.112 -79.137.181.102 -79.137.66.229 -79.137.66.85 -79.139.31.188 -79.140.180.219 -79.140.19.164 -79.140.22.126 -79.140.29.116 -79.143.148.8 -79.162.199.119 -79.170.162.238 -79.170.189.235 -79.170.252.233 -79.173.251.155 -79.174.36.83 -79.174.52.122 -79.175.7.7 -79.98.138.6 -79.98.240.118 -80.118.142.178 -80.118.230.106 -80.13.229.72 -80.13.86.74 -80.13.98.191 -80.14.67.41 -80.147.145.111 -80.147.188.162 -80.147.198.229 -80.147.95.112 -80.151.165.101 -80.15.123.60 -80.151.54.36 -80.15.18.130 -80.15.204.212 -80.154.108.233 -80.156.145.201 -80.158.47.193 -80.178.255.122 -80.179.255.238 -80.194.118.138 -80.199.160.142 -80.209.176.170 -80.209.71.197 -80.211.179.15 -80.211.21.112 -80.228.226.132 -80.229.102.130 -80.229.31.179 -80.232.219.35 -80.233.149.67 -80.233.254.181 -80.234.32.136 -80.240.26.135 -80.241.248.162 -80.242.196.55 -80.242.237.178 -80.246.23.3 -80.248.155.94 -80.248.51.229 -80.249.81.151 -80.250.174.254 -80.250.210.218 -80.252.140.198 -80.252.145.132 -80.252.145.154 -80.27.0.158 -80.27.2.223 -80.27.3.71 -8.0.41.16 -80.48.173.212 -80.54.119.66 -80.54.26.254 -80.54.51.106 -80.64.162.43 -80.65.80.230 -80.67.213.14 -80.70.64.18 -80.72.17.248 -80.72.30.129 -80.72.30.35 -80.72.64.108 -80.72.64.99 -80.73.90.54 -80.76.184.6 -80.76.229.62 -80.78.132.65 -80.80.104.7 -80.80.108.12 -80.80.127.135 -80.80.218.218 -80.80.98.68 -80.81.147.82 -80.81.232.202 -80.82.36.158 -80.82.46.240 -80.83.239.194 -80.86.230.58 -80.87.144.17 -80.87.144.80 -80.87.146.13 -80.89.145.83 -80.91.17.101 -80.91.17.200 -80.91.17.230 -80.91.22.151 -80.91.26.157 -80.92.211.80 -80.93.37.202 -80.94.225.100 -80.96.177.217 -80.96.4.194 -80.97.254.218 -81.0.220.118 -81.130.148.128 -81.133.149.153 -81.150.98.206 -81.15.133.90 -81.15.162.218 -81.16.18.228 -81.163.19.87 -81.163.56.234 -81.163.56.35 -81.169.136.222 -81.169.179.146 -81.169.226.26 -81.169.239.124 -81.169.244.26 -81.173.126.239 -81.176.226.240 -81.177.25.15 -81.177.255.67 -81.18.120.113 -81.182.246.69 -81.182.250.40 -81.183.211.172 -81.183.216.211 -81.183.223.33 -81.183.224.48 -81.183.227.40 -81.183.232.240 -81.183.233.205 -81.196.169.226 -81.198.81.165 -81.201.51.140 -81.20.203.120 -81.20.82.131 -81.20.87.21 -81.211.72.146 -81.216.9.94 -81.21.82.86 -81.219.64.202 -81.22.26.6 -81.23.124.190 -81.23.153.203 -81.23.178.14 -81.23.180.70 -81.246.95.66 -81.248.237.119 -81.250.247.144 -81.26.23.192 -81.26.23.193 -81.28.169.151 -81.28.170.84 -81.29.132.3 -81.30.177.172 -81.30.200.197 -81.30.209.107 -81.30.213.34 -81.30.217.41 -81.3.27.54 -81.4.104.170 -81.4.128.130 -81.4.149.154 -81.42.248.139 -81.45.138.117 -81.45.174.150 -81.45.78.156 -8.14.62.67 -8.14.62.69 -8.14.62.70 -8.14.63.82 -8.14.63.84 -8.14.63.85 -8.14.63.86 -8.14.63.90 -8.14.63.93 -8.14.63.94 -8.17.40.100 -8.17.40.101 -8.17.40.106 -8.17.40.108 -8.17.40.98 -81.7.89.171 -81.7.94.169 -8.18.117.10 -8.18.117.11 -8.18.4.19 -81.89.79.245 -81.9.198.118 -81.9.198.12 -81.9.198.202 -81.9.198.206 -81.9.198.217 -8.19.225.254 -81.93.71.254 -81.93.89.116 -81.95.130.202 -81.95.132.94 -81.95.207.16 -8.19.63.58 -8.20.205.196 -8.20.205.205 -8.20.205.206 -8.20.207.155 -8.20.207.156 -8.20.247.10 -8.20.247.101 -8.20.247.103 -8.20.247.106 -8.20.247.108 -8.20.247.11 -8.20.247.113 -8.20.247.115 -8.20.247.118 -8.20.247.119 -8.20.247.12 -8.20.247.120 -8.20.247.121 -8.20.247.125 -8.20.247.126 -8.20.247.127 -8.20.247.128 -8.20.247.129 -8.20.247.13 -8.20.247.132 -8.20.247.138 -8.20.247.139 -8.20.247.140 -8.20.247.141 -8.20.247.142 -8.20.247.146 -8.20.247.148 -8.20.247.149 -8.20.247.150 -8.20.247.153 -8.20.247.154 -8.20.247.155 -8.20.247.157 -8.20.247.159 -8.20.247.16 -8.20.247.161 -8.20.247.163 -8.20.247.164 -8.20.247.165 -8.20.247.166 -8.20.247.168 -8.20.247.169 -8.20.247.17 -8.20.247.170 -8.20.247.171 -8.20.247.172 -8.20.247.174 -8.20.247.175 -8.20.247.178 -8.20.247.179 -8.20.247.18 -8.20.247.182 -8.20.247.183 -8.20.247.184 -8.20.247.185 -8.20.247.187 -8.20.247.188 -8.20.247.189 -8.20.247.19 -8.20.247.190 -8.20.247.191 -8.20.247.192 -8.20.247.193 -8.20.247.196 -8.20.247.197 -8.20.247.199 -8.20.247.20 -8.20.247.200 -8.20.247.201 -8.20.247.202 -8.20.247.205 -8.20.247.207 -8.20.247.21 -8.20.247.210 -8.20.247.211 -8.20.247.212 -8.20.247.213 -8.20.247.214 -8.20.247.215 -8.20.247.217 -8.20.247.218 -8.20.247.219 -8.20.247.220 -8.20.247.221 -8.20.247.222 -8.20.247.223 -8.20.247.224 -8.20.247.225 -8.20.247.227 -8.20.247.23 -8.20.247.230 -8.20.247.231 -8.20.247.233 -8.20.247.234 -8.20.247.235 -8.20.247.236 -8.20.247.238 -8.20.247.239 -8.20.247.240 -8.20.247.241 -8.20.247.242 -8.20.247.245 -8.20.247.246 -8.20.247.247 -8.20.247.249 -8.20.247.25 -8.20.247.250 -8.20.247.254 -8.20.247.26 -8.20.247.3 -8.20.247.30 -8.20.247.31 -8.20.247.33 -8.20.247.34 -8.20.247.35 -8.20.247.36 -8.20.247.37 -8.20.247.38 -8.20.247.39 -8.20.247.4 -8.20.247.41 -8.20.247.42 -8.20.247.43 -8.20.247.45 -8.20.247.47 -8.20.247.49 -8.20.247.5 -8.20.247.52 -8.20.247.53 -8.20.247.54 -8.20.247.55 -8.20.247.56 -8.20.247.57 -8.20.247.58 -8.20.247.59 -8.20.247.60 -8.20.247.61 -8.20.247.62 -8.20.247.63 -8.20.247.65 -8.20.247.66 -8.20.247.67 -8.20.247.69 -8.20.247.7 -8.20.247.70 -8.20.247.71 -8.20.247.72 -8.20.247.74 -8.20.247.76 -8.20.247.77 -8.20.247.78 -8.20.247.79 -8.20.247.80 -8.20.247.81 -8.20.247.85 -8.20.247.86 -8.20.247.87 -8.20.247.88 -8.20.247.89 -8.20.247.9 -8.20.247.90 -8.20.247.91 -8.20.247.92 -8.20.247.93 -8.20.247.94 -8.20.247.95 -8.20.247.97 -8.20.247.98 -8.20.37.37 -8.208.2.65 -8.209.2.129 -82.102.41.117 -82.102.44.137 -82.112.189.177 -82.112.40.153 -82.112.48.182 -82.112.48.94 -82.112.49.97 -82.114.240.101 -82.114.240.112 -82.114.240.195 -82.114.240.34 -82.114.67.150 -82.114.79.146 -82.114.85.25 -82.115.76.160 -82.116.37.214 -82.116.39.182 -82.116.54.164 -82.117.201.6 -82.117.212.246 -82.117.219.138 -82.118.243.189 -82.119.154.40 -8.213.0.111 -8.213.0.112 -82.135.112.130 -82.135.137.106 -82.135.197.108 -82.135.200.100 -82.135.203.178 -82.135.255.112 -82.137.245.41 -82.137.27.130 -82.138.31.164 -82.140.114.174 -82.140.114.98 -82.142.135.213 -82.143.81.146 -82.146.40.201 -82.151.114.130 -82.151.114.180 -82.151.127.188 -82.151.66.178 -82.151.90.1 -82.151.97.230 -82.152.37.235 -82.162.17.166 -82.162.60.241 -82.163.117.181 -82.165.65.153 -82.177.14.166 -82.179.33.70 -82.192.169.38 -82.193.107.136 -82.194.19.99 -82.194.244.140 -82.195.16.13 -82.198.78.140 -82.202.215.178 -82.202.247.47 -82.204.138.46 -82.204.175.198 -82.204.197.153 -82.204.199.7 -82.204.202.66 -82.204.207.198 -82.208.137.137 -82.208.146.164 -82.209.223.144 -82.210.34.38 -82.213.32.29 -82.222.49.18 -82.223.43.222 -8.224.34.74 -8.23.82.186 -8.242.153.165 -8.242.153.170 -8.242.153.171 -8.242.6.242 -8.243.126.104 -8.243.126.18 -8.243.126.19 -8.25.184.107 -8.25.184.251 -8.25.184.252 -8.25.184.253 -82.64.108.41 -82.64.128.90 -82.64.134.25 -82.64.228.252 -82.64.35.106 -82.64.73.173 -8.26.56.10 -8.26.56.100 -8.26.56.101 -8.26.56.102 -8.26.56.103 -8.26.56.104 -8.26.56.105 -8.26.56.106 -8.26.56.107 -8.26.56.108 -8.26.56.109 -8.26.56.11 -8.26.56.110 -8.26.56.111 -8.26.56.112 -8.26.56.113 -8.26.56.114 -8.26.56.115 -8.26.56.116 -8.26.56.118 -8.26.56.119 -8.26.56.12 -8.26.56.122 -8.26.56.123 -8.26.56.124 -8.26.56.125 -8.26.56.126 -8.26.56.127 -8.26.56.129 -8.26.56.13 -8.26.56.131 -8.26.56.133 -8.26.56.134 -8.26.56.135 -8.26.56.136 -8.26.56.137 -8.26.56.139 -8.26.56.141 -8.26.56.142 -8.26.56.143 -8.26.56.144 -8.26.56.146 -8.26.56.147 -8.26.56.148 -8.26.56.149 -8.26.56.15 -8.26.56.150 -8.26.56.151 -8.26.56.153 -8.26.56.154 -8.26.56.155 -8.26.56.156 -8.26.56.157 -8.26.56.158 -8.26.56.159 -8.26.56.16 -8.26.56.160 -8.26.56.161 -8.26.56.162 -8.26.56.163 -8.26.56.164 -8.26.56.167 -8.26.56.168 -8.26.56.169 -8.26.56.17 -8.26.56.171 -8.26.56.173 -8.26.56.174 -8.26.56.175 -8.26.56.178 -8.26.56.179 -8.26.56.18 -8.26.56.180 -8.26.56.182 -8.26.56.183 -8.26.56.184 -8.26.56.186 -8.26.56.19 -8.26.56.194 -8.26.56.195 -8.26.56.196 -8.26.56.197 -8.26.56.198 -8.26.56.199 -8.26.56.20 -8.26.56.201 -8.26.56.202 -8.26.56.203 -8.26.56.204 -8.26.56.205 -8.26.56.206 -8.26.56.208 -8.26.56.209 -8.26.56.210 -8.26.56.211 -8.26.56.212 -8.26.56.213 -8.26.56.214 -8.26.56.216 -8.26.56.217 -8.26.56.218 -8.26.56.219 -8.26.56.22 -8.26.56.221 -8.26.56.222 -8.26.56.223 -8.26.56.226 -8.26.56.227 -8.26.56.228 -8.26.56.23 -8.26.56.230 -8.26.56.232 -8.26.56.233 -8.26.56.236 -8.26.56.237 -8.26.56.238 -8.26.56.24 -8.26.56.240 -8.26.56.241 -8.26.56.242 -8.26.56.243 -8.26.56.244 -8.26.56.245 -8.26.56.246 -8.26.56.247 -8.26.56.249 -8.26.56.25 -8.26.56.250 -8.26.56.252 -8.26.56.255 -8.26.56.26 -8.26.56.27 -8.26.56.28 -8.26.56.29 -8.26.56.3 -8.26.56.30 -8.26.56.31 -8.26.56.34 -8.26.56.35 -8.26.56.36 -8.26.56.37 -8.26.56.38 -8.26.56.39 -8.26.56.40 -8.26.56.41 -8.26.56.42 -8.26.56.44 -8.26.56.45 -8.26.56.46 -8.26.56.48 -8.26.56.51 -8.26.56.52 -8.26.56.53 -8.26.56.54 -8.26.56.56 -8.26.56.57 -8.26.56.58 -8.26.56.6 -8.26.56.62 -8.26.56.63 -8.26.56.64 -8.26.56.65 -8.26.56.68 -8.26.56.7 -8.26.56.70 -8.26.56.72 -8.26.56.73 -8.26.56.74 -8.26.56.77 -8.26.56.78 -8.26.56.80 -8.26.56.82 -8.26.56.83 -8.26.56.84 -8.26.56.85 -8.26.56.86 -8.26.56.87 -8.26.56.88 -8.26.56.89 -8.26.56.90 -8.26.56.93 -8.26.56.94 -8.26.56.95 -8.26.56.96 -8.26.56.97 -8.26.56.99 -82.66.112.123 -82.66.181.223 -82.66.221.168 -82.76.32.233 -82.77.100.255 -82.77.137.111 -82.77.48.243 -82.77.63.193 -8.28.109.101 -8.28.109.106 -8.28.109.109 -8.28.109.11 -8.28.109.114 -8.28.109.117 -8.28.109.123 -8.28.109.124 -8.28.109.125 -8.28.109.230 -8.28.109.231 -8.28.109.233 -8.28.109.243 -8.28.109.246 -8.28.109.247 -8.28.109.252 -8.28.109.253 -8.28.109.254 -8.28.109.4 -8.28.109.44 -8.28.109.46 -8.28.109.5 -8.28.109.59 -8.28.109.6 -8.28.109.60 -8.28.109.62 -8.28.109.69 -8.28.109.70 -8.28.109.75 -8.28.109.77 -8.28.109.82 -8.28.109.99 -8.28.113.202 -82.81.243.65 -8.29.2.132 -8.29.2.140 -8.29.3.130 -8.29.3.133 -8.29.3.138 -8.29.3.142 -8.29.3.213 -8.29.3.219 -8.29.3.222 -8.29.3.37 -82.97.19.9 -82.98.169.6 -8.30.101.118 -8.30.101.123 -8.30.101.124 -8.30.101.125 -8.30.36.94 -8.30.39.36 -8.30.39.40 -83.118.104.132 -83.118.104.154 -83.118.104.172 -83.118.104.174 -83.118.104.177 -83.118.104.182 -83.118.104.183 -83.118.104.189 -83.1.184.198 -83.1.191.242 -83.1.215.1 -83.13.214.38 -83.135.16.46 -83.137.41.8 -83.139.173.210 -83.142.126.151 -83.143.8.249 -83.145.133.2 -83.145.86.7 -83.145.86.8 -83.149.125.95 -83.149.178.26 -83.151.14.204 -83.169.217.22 -83.169.247.254 -83.171.109.44 -83.171.110.201 -83.171.113.239 -83.171.127.235 -83.171.88.30 -83.171.99.165 -83.172.30.110 -83.174.208.218 -83.174.220.149 -83.174.227.213 -83.1.88.194 -83.206.50.49 -83.220.112.28 -83.220.168.61 -83.221.223.185 -83.228.106.130 -83.229.2.224 -83.229.5.216 -83.229.82.151 -83.229.85.77 -83.235.210.35 -83.239.117.66 -83.239.20.238 -83.239.57.166 -83.239.62.214 -83.239.99.48 -83.242.104.151 -83.242.104.195 -83.242.229.162 -83.243.37.53 -83.244.182.72 -83.246.141.45 -8.33.239.235 -8.33.239.244 -8.34.34.34 -83.48.103.9 -83.48.43.148 -83.48.80.205 -8.35.35.35 -8.36.139.1 -8.36.139.129 -8.36.152.1 -83.69.193.2 -83.87.202.7 -83.96.104.7 -83.97.104.233 -83.98.38.147 -84.1.26.208 -84.14.115.173 -84.14.219.62 -84.14.48.246 -84.15.104.40 -84.17.232.22 -84.18.136.217 -84.18.156.119 -84.19.90.72 -84.199.93.50 -84.201.138.148 -84.204.40.14 -84.204.40.166 -84.204.8.164 -84.205.101.37 -84.20.68.210 -84.21.227.234 -84.22.139.104 -84.22.139.144 -84.22.158.239 -84.22.35.138 -84.22.43.190 -84.22.43.34 -84.22.46.238 -84.22.51.168 -84.232.61.2 -84.232.73.171 -84.236.142.130 -84.243.56.254 -84.247.233.18 -84.248.207.134 -84.249.85.95 -84.253.140.132 -84.254.40.4 -84.254.51.145 -84.255.173.210 -84.255.244.10 -8.42.68.81 -84.33.86.63 -84.33.97.60 -8.43.56.34 -84.38.95.223 -84.40.91.18 -84.41.105.242 -84.42.124.162 -84.42.20.150 -84.42.50.126 -84.51.65.202 -84.51.66.30 -84.53.201.130 -84.53.217.83 -84.53.239.236 -84.54.130.98 -84.54.226.50 -84.54.234.98 -84.54.64.35 -84.7.212.177 -84.79.235.2 -84.94.193.66 -84.95.207.132 -84.96.26.129 -84.96.26.139 -85.11.125.123 -85.11.126.108 -85.113.141.159 -85.113.219.162 -85.113.26.54 -85.113.30.10 -85.113.6.113 -85.113.9.73 -85.114.40.50 -85.114.55.238 -85.116.106.42 -85.116.125.177 -85.117.232.2 -85.117.36.140 -85.119.44.134 -85.12.32.49 -85.132.110.152 -85.132.110.243 -85.132.12.178 -85.132.85.85 -85.132.8.70 -85.140.127.182 -85.14.100.154 -85.14.121.2 -85.143.104.195 -85.143.177.66 -85.143.207.42 -85.143.250.146 -85.14.5.203 -85.146.204.98 -85.146.233.162 -85.15.176.243 -85.159.110.163 -85.159.211.160 -85.163.114.28 -85.163.138.114 -85.169.94.218 -85.172.104.61 -85.172.105.63 -85.172.1.34 -85.172.15.126 -85.172.189.154 -85.172.79.136 -85.173.244.123 -85.173.244.203 -85.173.245.32 -85.173.252.14 -85.173.252.16 -85.175.111.150 -85.175.227.77 -85.175.5.225 -85.175.6.25 -85.175.7.205 -85.183.150.165 -85.187.183.107 -85.187.202.45 -85.187.42.39 -85.192.134.38 -85.193.195.73 -85.194.70.174 -85.195.233.252 -85.195.248.249 -85.195.75.106 -85.206.12.136 -85.206.25.100 -85.206.27.22 -85.206.28.132 -85.206.44.77 -85.206.44.78 -85.206.69.149 -85.209.124.182 -85.209.124.82 -85.209.248.3 -85.21.235.183 -85.214.107.212 -85.214.128.36 -85.214.133.14 -85.214.163.21 -85.214.225.217 -85.214.252.174 -85.214.52.216 -85.214.86.130 -85.215.118.202 -85.215.167.110 -85.215.204.9 -85.215.212.48 -85.215.89.8 -85.217.158.4 -85.217.207.230 -85.221.162.46 -85.221.167.2 -85.221.172.30 -85.222.104.150 -85.222.111.74 -85.222.68.162 -85.22.58.63 -85.23.204.137 -85.234.10.120 -85.235.167.178 -85.235.170.130 -85.235.197.66 -85.235.237.9 -85.236.23.69 -85.237.43.89 -85.237.61.88 -85.237.62.128 -85.255.111.7 -85.255.161.120 -85.26.175.138 -85.26.204.234 -85.26.236.33 -85.26.239.136 -85.30.195.133 -85.30.214.16 -85.30.235.216 -85.30.24.11 -85.50.124.34 -85.51.13.115 -85.51.202.225 -85.51.224.115 -85.58.120.134 -85.61.75.220 -85.62.110.170 -85.62.190.161 -85.62.5.74 -85.62.89.32 -85.72.141.81 -85.72.51.13 -85.8.69.229 -85.88.213.199 -85.88.213.221 -85.90.160.69 -85.9.129.36 -85.9.129.38 -85.9.133.77 -85.93.46.25 -85.95.146.37 -85.95.153.155 -86.100.63.150 -86.101.57.229 -86.101.76.1 -86.102.124.254 -86.102.157.118 -86.102.157.34 -86.102.57.190 -86.102.89.26 -86.105.27.1 -86.107.76.135 -86.120.45.162 -86.122.185.167 -86.122.55.7 -86.122.94.69 -86.123.161.217 -86.124.61.214 -86.127.67.242 -86.32.120.133 -86.35.6.74 -86.35.6.75 -86.43.125.181 -86.47.80.38 -86.47.80.46 -86.63.124.46 -86.63.124.78 -86.63.125.7 -86.63.216.70 -86.63.69.86 -87.117.176.149 -87.117.6.229 -87.129.62.99 -87.139.53.21 -87.193.184.254 -87.193.62.211 -87.197.147.1 -87.201.133.14 -87.213.16.123 -87.213.68.130 -87.213.68.86 -87.224.37.77 -87.226.222.210 -87.229.238.241 -87.234.200.113 -87.236.233.117 -87.236.233.70 -87.237.42.29 -87.238.232.158 -87.238.232.247 -87.241.174.184 -87.242.131.238 -87.244.225.197 -87.244.225.200 -87.249.19.154 -87.249.34.186 -87.250.61.31 -87.253.77.111 -87.255.0.242 -87.255.11.36 -87.255.13.196 -87.255.27.168 -87.49.54.222 -87.54.39.142 -87.54.6.134 -87.61.108.250 -87.76.11.24 -87.97.60.156 -87.98.167.47 -87.98.254.244 -88.116.117.118 -88.116.159.130 -88.119.135.155 -88.119.136.7 -88.119.143.195 -88.119.189.110 -88.119.189.16 -88.119.203.185 -88.119.203.196 -88.119.203.210 -88.119.87.88 -88.119.95.68 -88.130.189.222 -88.146.221.211 -88.147.142.131 -88.147.146.27 -88.147.188.243 -88.147.210.10 -88.149.203.57 -88.149.203.60 -88.149.205.195 -88.156.164.210 -88.156.167.34 -88.157.103.191 -88.157.148.18 -88.157.154.134 -88.157.98.214 -88.198.92.222 -88.199.128.188 -88.200.135.94 -88.200.208.122 -88.205.172.170 -88.205.234.250 -88.208.192.73 -88.210.29.61 -88.214.176.182 -88.220.134.11 -88.220.66.252 -88.221.162.101 -88.221.162.138 -88.221.162.14 -88.221.162.146 -88.221.162.157 -88.221.162.172 -88.221.162.179 -88.221.162.191 -88.221.162.193 -88.221.162.194 -88.221.162.196 -88.221.162.199 -88.221.162.203 -88.221.162.222 -88.221.162.228 -88.221.162.229 -88.221.162.23 -88.221.162.233 -88.221.162.27 -88.221.162.28 -88.221.162.32 -88.221.162.37 -88.221.162.55 -88.221.162.66 -88.221.162.72 -88.221.162.94 -88.221.163.109 -88.221.163.120 -88.221.163.127 -88.221.163.129 -88.221.163.138 -88.221.163.156 -88.221.163.190 -88.221.163.193 -88.221.163.196 -88.221.163.200 -88.221.163.203 -88.221.163.204 -88.221.163.205 -88.221.163.22 -88.221.163.227 -88.221.163.228 -88.221.163.24 -88.221.163.28 -88.221.163.3 -88.221.163.32 -88.221.163.37 -88.221.163.39 -88.221.163.4 -88.221.163.42 -88.221.163.45 -88.221.163.52 -88.221.163.61 -88.221.163.65 -88.221.163.67 -88.221.163.79 -88.221.163.91 -88.28.201.36 -88.30.33.64 -8.8.4.4 -8.8.50.1 -88.80.113.55 -88.84.213.98 -88.86.116.45 -88.86.126.179 -88.86.80.161 -88.87.181.244 -88.87.72.153 -8.8.8.8 -88.99.201.228 -89.107.125.18 -89.107.210.249 -89.108.108.131 -89.108.109.72 -89.108.120.212 -89.108.122.128 -89.109.1.202 -89.109.22.129 -89.109.232.83 -89.109.238.209 -89.109.34.207 -89.109.41.125 -89.109.54.251 -89.109.54.73 -89.111.205.26 -89.111.245.17 -89.130.140.246 -89.133.217.137 -89.133.8.25 -89.134.183.229 -89.135.52.29 -89.143.228.230 -89.143.244.210 -89.145.240.120 -89.145.240.121 -89.147.204.226 -89.148.55.251 -89.151.133.30 -89.151.137.246 -89.151.139.149 -89.174.39.102 -89.174.71.249 -89.175.193.150 -89.175.205.42 -89.175.23.236 -89.175.5.69 -89.179.242.179 -89.179.78.108 -89.185.121.250 -89.185.93.143 -89.185.93.88 -89.185.94.144 -89.186.11.169 -89.186.9.129 -89.188.171.36 -89.188.18.103 -89.189.10.50 -89.189.152.147 -89.189.180.151 -89.190.48.201 -89.190.65.200 -89.190.66.2 -89.190.73.252 -89.191.31.6 -89.201.137.2 -89.201.3.8 -89.20.200.142 -89.202.181.139 -89.20.42.122 -89.20.45.22 -89.207.90.122 -89.208.34.12 -89.208.74.74 -89.212.51.113 -89.215.246.3 -89.216.103.191 -89.216.103.45 -89.216.107.102 -89.216.118.100 -89.216.118.84 -89.216.25.76 -89.216.40.254 -89.216.53.182 -89.216.62.4 -89.22.17.167 -89.22.182.5 -89.222.168.162 -89.22.54.136 -89.22.54.83 -89.22.55.179 -89.22.66.209 -89.22.66.217 -89.231.11.170 -89.232.144.82 -89.232.156.238 -89.234.141.66 -89.236.106.156 -89.238.255.150 -89.239.69.44 -89.24.206.253 -89.24.21.237 -89.244.135.203 -89.247.227.57 -89.24.74.55 -89.249.54.33 -89.250.197.225 -89.250.27.162 -89.250.27.165 -89.25.107.48 -89.251.146.145 -89.25.183.149 -89.25.190.186 -89.25.190.187 -89.25.83.84 -89.26.62.250 -89.28.12.62 -89.28.65.201 -89.29.229.12 -89.33.238.214 -89.35.117.216 -89.38.139.180 -89.38.58.131 -89.39.0.125 -89.40.184.9 -89.42.218.20 -89.42.218.22 -89.42.219.106 -89.42.219.139 -89.42.28.193 -89.43.16.202 -89.43.33.100 -89.45.183.165 -89.47.58.30 -89.91.15.9 -90.150.180.71 -90.150.224.94 -90.151.106.86 -90.154.124.189 -90.160.105.117 -90.161.140.133 -90.161.38.35 -90.163.132.67 -90.170.174.67 -90.183.151.106 -90.183.151.107 -90.187.169.9 -90.188.225.161 -90.188.29.55 -90.188.38.38 -90.188.45.76 -90.189.113.130 -90.189.153.250 -90.189.165.119 -90.24.152.179 -90.63.179.152 -90.63.206.134 -90.63.223.17 -90.83.29.126 -90.83.44.89 -91.103.29.245 -91.109.192.227 -91.121.114.217 -91.121.132.141 -91.121.59.147 -91.121.59.192 -91.121.62.94 -91.122.14.225 -91.122.196.243 -91.122.198.34 -91.122.35.209 -91.122.52.33 -91.122.55.119 -91.126.187.228 -91.135.7.77 -91.137.131.25 -91.142.148.198 -91.143.50.231 -91.144.22.198 -91.148.146.184 -91.150.126.174 -91.150.175.31 -91.150.92.232 -91.150.93.128 -91.187.215.35 -91.187.218.50 -91.187.218.94 -91.187.59.84 -91.189.27.242 -91.190.142.200 -91.191.251.122 -91.192.168.212 -91.192.196.131 -91.192.2.111 -91.192.68.66 -91.192.73.137 -91.193.12.196 -91.194.19.109 -91.194.22.2 -91.197.204.2 -91.197.207.50 -91.199.196.115 -91.199.93.119 -91.201.16.64 -91.201.16.81 -91.201.17.117 -91.201.17.132 -91.201.17.47 -91.201.19.242 -91.201.235.186 -91.203.10.227 -91.203.239.179 -91.203.36.75 -91.203.70.201 -91.203.82.231 -91.204.109.203 -91.205.166.15 -91.205.208.45 -91.205.208.46 -91.205.72.51 -91.206.231.155 -91.208.20.17 -91.209.174.71 -91.210.206.13 -91.210.25.81 -91.210.86.199 -91.210.87.163 -91.211.142.138 -91.213.31.40 -91.215.224.65 -91.215.227.18 -91.217.109.128 -91.217.187.1 -91.217.22.56 -91.218.221.242 -91.219.201.10 -91.219.203.237 -91.219.245.27 -91.219.7.166 -91.219.7.202 -91.220.12.161 -91.221.189.35 -91.223.106.229 -91.223.89.202 -91.224.125.219 -91.225.229.207 -91.226.172.139 -91.226.223.235 -91.227.217.230 -91.228.178.92 -91.229.59.172 -91.232.105.138 -91.232.141.157 -91.232.141.91 -91.233.172.225 -91.233.173.30 -91.233.237.201 -91.233.25.196 -91.235.195.221 -91.235.253.248 -91.236.112.226 -91.236.114.66 -91.236.140.23 -91.236.176.148 -91.236.52.154 -91.237.183.1 -91.237.183.225 -91.238.233.122 -91.238.234.26 -91.238.24.52 -91.238.28.48 -91.238.56.20 -91.238.56.251 -91.239.8.150 -91.240.211.234 -91.240.211.83 -91.240.86.14 -91.241.237.42 -91.244.113.72 -91.244.115.141 -91.244.172.167 -91.244.221.14 -91.245.157.39 -91.245.159.2 -91.246.108.44 -91.249.142.66 -91.249.242.34 -91.74.90.206 -91.90.180.140 -91.90.184.66 -91.90.190.58 -91.90.216.190 -91.93.58.175 -92.182.38.172 -92.182.5.167 -92.190.137.96 -92.198.57.34 -92.198.57.36 -92.203.123.235 -92.203.123.237 -92.204.241.140 -92.205.110.190 -92.205.63.50 -92.222.117.114 -92.222.227.224 -92.223.105.162 -92.240.251.48 -92.241.100.200 -92.241.100.47 -92.241.102.13 -92.241.15.201 -92.241.17.234 -92.241.19.26 -92.241.19.83 -92.241.86.102 -92.241.86.42 -92.241.87.74 -92.243.164.125 -92.245.109.24 -92.246.205.155 -92.249.143.119 -92.249.148.88 -92.249.219.159 -92.26.84.139 -92.27.159.59 -92.27.91.137 -92.38.133.221 -92.38.225.169 -92.39.78.230 -92.39.93.72 -92.42.209.138 -92.42.210.43 -92.43.224.1 -92.47.64.90 -92.49.159.116 -92.50.143.122 -92.50.144.154 -92.50.144.230 -92.59.185.58 -92.60.50.40 -92.61.44.7 -92.62.65.237 -92.62.73.179 -92.79.86.172 -92.86.108.170 -92.86.31.114 -92.87.237.111 -93.109.228.14 -93.109.234.70 -93.109.243.17 -93.115.136.236 -93.120.228.226 -93.120.240.98 -93.122.164.198 -93.123.186.60 -93.125.121.128 -93.125.3.22 -93.145.138.138 -93.145.22.2 -93.147.164.56 -93.150.23.67 -93.153.146.242 -93.153.170.202 -93.157.168.222 -93.157.235.27 -93.157.46.181 -93.158.35.109 -93.159.129.202 -93.159.156.82 -93.159.183.102 -93.170.114.62 -93.170.116.147 -93.170.118.123 -93.170.218.216 -93.171.10.108 -93.171.163.113 -93.171.182.249 -93.171.214.135 -93.171.79.160 -93.174.192.7 -93.174.37.17 -93.174.79.88 -93.175.204.4 -93.175.245.14 -93.177.158.73 -93.179.83.20 -93.180.179.93 -93.183.204.1 -93.186.245.247 -93.187.183.52 -93.189.145.8 -93.189.251.101 -93.190.111.55 -93.191.59.50 -93.240.174.186 -93.240.221.83 -93.240.63.136 -93.34.4.222 -93.46.163.31 -93.51.241.141 -93.55.84.115 -93.56.53.218 -93.56.53.221 -93.63.254.50 -93.86.255.186 -93.86.51.162 -93.86.62.127 -93.87.28.142 -93.87.43.226 -93.87.43.227 -93.88.136.186 -93.88.195.34 -93.90.213.45 -93.91.119.230 -93.91.153.178 -93.92.202.178 -93.92.203.96 -93.92.65.2 -93.94.217.218 -93.95.224.28 -93.95.98.79 -93.95.99.241 -94.100.56.157 -94.102.2.15 -94.103.91.65 -94.124.152.158 -94.127.107.3 -94.127.135.212 -94.127.59.11 -94.127.59.12 -94.127.59.14 -94.127.59.6 -94.127.59.8 -94.127.63.6 -94.127.63.9 -94.137.233.220 -94.139.206.143 -94.140.14.14 -94.140.14.140 -94.140.14.141 -94.140.14.49 -94.140.14.59 -94.140.15.15 -94.154.27.222 -94.154.86.60 -94.158.157.142 -94.174.238.188 -94.177.187.14 -94.177.203.192 -94.177.240.27 -94.180.252.12 -94.18.210.70 -94.190.209.180 -94.190.213.131 -94.190.214.173 -94.198.55.64 -94.199.193.138 -94.199.48.243 -94.199.79.178 -94.200.81.142 -94.20.142.202 -94.20.20.20 -94.203.136.10 -94.205.52.106 -94.206.40.206 -94.20.81.90 -94.21.228.198 -94.21.243.35 -94.21.91.189 -94.21.91.28 -94.228.187.149 -94.228.198.137 -94.230.130.111 -94.230.130.151 -94.230.140.123 -94.230.186.18 -94.230.190.34 -94.231.164.10 -94.231.212.65 -94.231.251.5 -94.23.205.212 -94.232.217.81 -94.233.27.82 -94.233.73.10 -94.23.53.47 -94.240.35.102 -94.241.90.71 -94.24.235.114 -94.243.131.250 -94.243.184.101 -94.243.61.94 -94.247.208.128 -94.247.208.90 -94.247.43.254 -94.247.62.77 -94.253.12.85 -94.253.13.38 -94.253.13.82 -94.253.9.230 -94.254.249.29 -94.26.129.214 -94.26.147.16 -94.28.26.138 -94.32.106.53 -94.41.108.33 -94.41.208.63 -94.41.86.120 -94.43.99.154 -94.46.175.93 -94.46.21.66 -94.51.107.254 -94.70.86.230 -94.72.10.94 -94.72.28.16 -94.72.3.61 -94.72.61.194 -94.73.216.61 -94.73.223.67 -94.75.110.66 -94.79.33.27 -95.104.194.108 -95.104.194.159 -95.105.89.98 -95.107.55.195 -95.110.144.85 -95.110.185.241 -95.111.226.67 -95.111.231.0 -95.111.234.149 -95.111.251.86 -95.124.242.189 -95.124.245.102 -95.128.137.166 -95.129.147.156 -95.140.203.92 -95.142.217.29 -95.142.88.177 -95.143.12.246 -95.143.13.183 -95.154.103.131 -95.154.106.156 -95.154.110.86 -95.154.145.151 -95.154.177.60 -95.154.178.63 -95.154.180.65 -95.154.66.69 -95.154.72.135 -95.154.75.70 -95.154.78.70 -95.154.79.17 -95.154.88.78 -95.156.113.114 -95.157.76.5 -95.158.129.2 -95.158.170.43 -95.160.116.34 -95.160.116.38 -95.160.116.6 -95.160.117.47 -95.160.230.148 -95.160.31.126 -95.160.31.73 -95.161.166.46 -95.161.181.66 -95.161.199.82 -95.161.228.110 -95.163.155.83 -95.164.65.243 -95.165.12.86 -95.165.171.143 -95.165.192.190 -95.165.192.206 -95.165.25.118 -95.166.140.250 -95.167.214.38 -95.168.195.130 -95.170.192.41 -95.171.11.125 -95.171.21.182 -95.172.55.54 -95.174.101.212 -95.174.111.27 -95.174.97.182 -95.179.143.35 -95.179.193.65 -95.181.131.198 -95.182.107.243 -95.182.123.112 -95.188.70.6 -95.189.104.1 -95.190.199.158 -95.213.146.181 -95.213.157.165 -95.215.19.53 -95.215.230.195 -95.22.2.114 -95.255.67.120 -95.30.250.9 -95.31.130.43 -95.31.208.124 -95.31.32.102 -95.31.52.10 -95.43.101.183 -95.43.124.241 -95.43.211.168 -95.43.223.164 -95.43.241.218 -95.45.222.78 -95.46.6.43 -95.46.6.76 -95.47.103.3 -95.47.140.179 -95.47.146.28 -95.47.148.218 -95.47.164.204 -95.47.164.83 -95.47.180.171 -95.47.59.113 -95.50.82.150 -95.54.192.158 -95.64.138.174 -95.64.141.190 -95.64.155.146 -95.64.180.2 -95.64.190.122 -95.65.9.171 -95.66.132.26 -95.66.141.250 -95.66.148.208 -95.66.164.102 -95.71.123.153 -95.71.125.191 -95.73.60.213 -95.77.96.73 -95.77.96.79 -95.77.99.62 -95.80.120.30 -95.80.93.89 -95.84.198.236 -95.85.95.85 -95.86.207.181 -95.97.113.102 -96.10.126.38 -96.10.218.162 -96.36.248.12 -96.45.45.45 -96.45.46.46 -96.65.169.149 -96.68.152.180 -96.68.207.177 -96.68.29.97 -96.70.191.213 -96.71.165.73 -96.7.136.107 -96.7.136.111 -96.7.136.114 -96.7.136.115 -96.7.136.123 -96.7.136.134 -96.7.136.140 -96.7.136.144 -96.7.136.146 -96.7.136.159 -96.7.136.160 -96.7.136.161 -96.7.136.199 -96.7.136.2 -96.7.136.216 -96.7.136.227 -96.7.136.242 -96.7.136.249 -96.7.136.254 -96.7.136.41 -96.7.136.42 -96.7.136.59 -96.7.136.77 -96.7.136.90 -96.7.136.99 -96.7.137.0 -96.7.137.137 -96.7.137.140 -96.7.137.142 -96.7.137.15 -96.7.137.150 -96.7.137.162 -96.7.137.171 -96.7.137.184 -96.7.137.204 -96.7.137.208 -96.7.137.21 -96.7.137.227 -96.7.137.250 -96.7.137.31 -96.7.137.32 -96.7.137.59 -96.7.137.63 -96.7.137.78 -96.7.137.90 -96.7.138.2 -96.7.139.1 -96.7.139.2 -96.72.81.89 -96.73.116.75 -96.74.213.233 -96.80.250.221 -96.8.17.130 -96.8.17.131 -96.8.17.139 -96.8.17.142 -96.8.17.2 -96.8.17.26 -96.8.17.29 -96.8.17.30 -96.85.69.170 -96.88.179.101 -96.89.165.138 -96.93.138.5 -96.95.146.25 -97.105.100.20 -97.105.89.2 -97.64.128.163 -97.65.200.94 -97.68.173.14 -97.68.236.229 -97.75.162.89 -97.78.189.245 -97.78.76.116 -97.79.42.154 -97.84.39.242 -97.87.21.84 -98.100.232.5 -98.101.240.164 -98.102.153.162 -98.102.248.54 -98.152.244.50 -98.153.113.3 -98.153.228.133 -98.154.21.253 -98.154.40.78 -98.175.116.85 -98.175.83.14 -98.185.37.213 -98.186.137.171 -98.191.57.131 -99.79.182.170 -99.79.50.252 -99.83.147.72 -9.9.9.10 -9.9.9.11 -9.9.9.12 -9.9.9.13 -99.92.207.51 -9.9.9.9 -99.99.99.193 diff --git a/internal/index/index.go b/internal/index/index.go index 932e9ff..69adbd6 100644 --- a/internal/index/index.go +++ b/internal/index/index.go @@ -55,8 +55,6 @@ func (x *Indexer) List(ctx context.Context, c model.Candidate) ([]model.Entry, e switch c.Service { case model.ServiceS3: return x.listS3(ctx, c.Hostname) - case model.ServiceOpenSearch: - return x.listOpenSearch(ctx, c.Hostname) } case model.ProviderGCP: switch c.Service { @@ -360,36 +358,6 @@ func (x *Indexer) listFirebase(ctx context.Context, host string) ([]model.Entry, return entries, nil } -// --- OpenSearch / Elasticsearch indices --- - -func (x *Indexer) listOpenSearch(ctx context.Context, host string) ([]model.Entry, error) { - resp, err := x.get(ctx, x.scheme+"://"+host+"/_cat/indices?format=json&h=index,health,status,docs.count,store.size") - if err != nil { - return nil, err - } - var rows []struct { - Index string `json:"index"` - Health string `json:"health"` - Status string `json:"status"` - Docs string `json:"docs.count"` - StoreSiz string `json:"store.size"` - } - err = json.NewDecoder(io.LimitReader(resp.Body, 8<<20)).Decode(&rows) - resp.Body.Close() - if err != nil { - return nil, err - } - var entries []model.Entry - for _, r := range rows { - size, _ := strconv.ParseInt(strings.TrimSuffix(r.Docs, " "), 10, 64) - entries = append(entries, model.Entry{Kind: "index", Name: r.Index, Size: size, ETag: r.StoreSiz}) - if len(entries) >= x.maxObjects { - break - } - } - return entries, nil -} - func parseTime(s string) time.Time { if s == "" { return time.Time{} diff --git a/internal/index/index_test.go b/internal/index/index_test.go index a7e201c..88fa3d7 100644 --- a/internal/index/index_test.go +++ b/internal/index/index_test.go @@ -81,19 +81,6 @@ func TestListFirebase(t *testing.T) { } } -func TestListOpenSearch(t *testing.T) { - x, host := newTestIndexer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - _, _ = w.Write([]byte(`[{"index":"logs-2024","docs.count":"100","store.size":"1.2mb"}]`)) - })) - entries, err := x.List(context.Background(), model.Candidate{Hostname: host, Provider: model.ProviderAWS, Service: model.ServiceOpenSearch}) - if err != nil { - t.Fatal(err) - } - if len(entries) != 1 || entries[0].Name != "logs-2024" || entries[0].Size != 100 { - t.Fatalf("unexpected entries: %+v", entries) - } -} - func TestListBounded(t *testing.T) { var keys strings.Builder for i := 0; i < 100; i++ { diff --git a/internal/model/model.go b/internal/model/model.go index 113e53f..b8b293e 100644 --- a/internal/model/model.go +++ b/internal/model/model.go @@ -124,7 +124,6 @@ const ( SourceUnknown Source = iota SourceDirectCT SourceCNAME - SourceDNSAlias SourceManual SourceDiscovery ) @@ -135,8 +134,6 @@ func (s Source) String() string { return "direct_ct" case SourceCNAME: return "cname" - case SourceDNSAlias: - return "dns_alias" case SourceManual: return "manual" case SourceDiscovery: diff --git a/internal/pipeline/dnsqueue.go b/internal/pipeline/dnsqueue.go deleted file mode 100644 index c6e00da..0000000 --- a/internal/pipeline/dnsqueue.go +++ /dev/null @@ -1,71 +0,0 @@ -package pipeline - -import ( - mathrand "math/rand/v2" - "sync" -) - -// stringSample is a memory-bounded queue that keeps a random sample of recent -// hostnames instead of a FIFO. A FIFO fills with the first N hostnames seen at -// startup and drops everything after, so DNS enrichment only ever sees stale -// hostnames and CNAME discovery stalls. Random replacement makes coverage -// representative at bounded memory. Not on the certificate hot path. -type stringSample struct { - mu sync.Mutex - items []string - cap int - notify chan struct{} - stop chan struct{} - once sync.Once -} - -func newStringSample(capacity int) *stringSample { - return &stringSample{ - cap: capacity, - notify: make(chan struct{}, 1), - stop: make(chan struct{}), - } -} - -func (q *stringSample) push(s string) { - q.mu.Lock() - if len(q.items) < q.cap { - q.items = append(q.items, s) - } else { - q.items[mathrand.IntN(len(q.items))] = s - } - q.mu.Unlock() - select { - case q.notify <- struct{}{}: - default: - } -} - -func (q *stringSample) pop() (string, bool) { - q.mu.Lock() - n := len(q.items) - if n == 0 { - q.mu.Unlock() - return "", false - } - i := mathrand.IntN(n) - s := q.items[i] - q.items[i] = q.items[n-1] - q.items = q.items[:n-1] - q.mu.Unlock() - return s, true -} - -func (q *stringSample) len() int { - q.mu.Lock() - defer q.mu.Unlock() - return len(q.items) -} - -func (q *stringSample) close() { - q.once.Do(func() { close(q.stop) }) - select { - case q.notify <- struct{}{}: - default: - } -} diff --git a/internal/pipeline/pipeline.go b/internal/pipeline/pipeline.go index 5ae594f..96132fa 100644 --- a/internal/pipeline/pipeline.go +++ b/internal/pipeline/pipeline.go @@ -15,6 +15,7 @@ import ( "tea.karlcom.de/karl/bucketeer/internal/dns" "tea.karlcom.de/karl/bucketeer/internal/metrics" "tea.karlcom.de/karl/bucketeer/internal/model" + "tea.karlcom.de/karl/bucketeer/internal/sample" ) // Finding is a fully enriched candidate ready to be persisted. @@ -32,7 +33,6 @@ type Config struct { DirectQueueSize int DNSQueueSize int DBQueueSize int - DirectWorkers int DNSWorkers int BatchSize int FlushInterval time.Duration @@ -54,7 +54,7 @@ type Pipeline struct { cfg Config directQ chan model.Candidate - dnsQ *stringSample + dnsQ *sample.Queue[string] dbQ chan Finding dedup *dns.TTLCache[bool] // hostnames already queued for DNS @@ -73,9 +73,6 @@ func New(cfg Config) *Pipeline { if cfg.DBQueueSize <= 0 { cfg.DBQueueSize = 8192 } - if cfg.DirectWorkers <= 0 { - cfg.DirectWorkers = 2 - } if cfg.DNSWorkers <= 0 { cfg.DNSWorkers = 16 } @@ -94,14 +91,14 @@ func New(cfg Config) *Pipeline { p := &Pipeline{ cfg: cfg, directQ: make(chan model.Candidate, cfg.DirectQueueSize), - dnsQ: newStringSample(cfg.DNSQueueSize), + dnsQ: sample.New[string](cfg.DNSQueueSize), dbQ: make(chan Finding, cfg.DBQueueSize), dedup: dns.NewTTLCache[bool](cfg.DedupSize, 64), seen: dns.NewTTLCache[bool](cfg.DedupSize, 64), } if p.cfg.Metrics != nil { p.cfg.Metrics.SetQueueDepth("direct", func() float64 { return float64(len(p.directQ)) }) - p.cfg.Metrics.SetQueueDepth("dns", func() float64 { return float64(p.dnsQ.len()) }) + p.cfg.Metrics.SetQueueDepth("dns", func() float64 { return float64(p.dnsQ.Len()) }) p.cfg.Metrics.SetQueueDepth("db", func() float64 { return float64(len(p.dbQ)) }) } return p @@ -109,7 +106,7 @@ func New(cfg Config) *Pipeline { // Start launches the worker pools. Close must be called to drain. func (p *Pipeline) Start(ctx context.Context) { - for i := 0; i < p.cfg.DirectWorkers; i++ { + for i := 0; i < 2; i++ { p.producer.Add(1) go p.directWorker(ctx) } @@ -123,14 +120,14 @@ func (p *Pipeline) Start(ctx context.Context) { // Depths reports the current length of the direct, DNS and DB queues. func (p *Pipeline) Depths() (direct, dns, db int) { - return len(p.directQ), p.dnsQ.len(), len(p.dbQ) + return len(p.directQ), p.dnsQ.Len(), len(p.dbQ) } // Close stops intake and drains all queues. It must only be called after the // CertSpotter monitor has stopped calling HandleIdentifiers. func (p *Pipeline) Close() { close(p.directQ) - p.dnsQ.close() + p.dnsQ.Close() p.producer.Wait() close(p.dbQ) p.workers.Wait() @@ -179,7 +176,7 @@ func (p *Pipeline) HandleHost(host string) { return } p.dedup.Set(host, true, p.cfg.DedupTTL) - p.dnsQ.push(host) + p.dnsQ.Push(host) if p.cfg.Discover != nil { p.cfg.Discover.Submit(host) } @@ -242,12 +239,12 @@ func (p *Pipeline) dnsWorker(ctx context.Context) { select { case <-ctx.Done(): return - case <-p.dnsQ.stop: + case <-p.dnsQ.Stop(): return - case <-p.dnsQ.notify: + case <-p.dnsQ.Notify(): } for { - host, ok := p.dnsQ.pop() + host, ok := p.dnsQ.Pop() if !ok { break } diff --git a/internal/pipeline/pipeline_test.go b/internal/pipeline/pipeline_test.go index 93e05c7..64afc6f 100644 --- a/internal/pipeline/pipeline_test.go +++ b/internal/pipeline/pipeline_test.go @@ -269,7 +269,7 @@ func TestDNSDedup(t *testing.T) { p := New(Config{DNSQueueSize: 8, Metrics: m}) p.HandleHost("files.example.com") p.HandleHost("files.example.com") - if got := p.dnsQ.len(); got != 1 { + if got := p.dnsQ.Len(); got != 1 { t.Fatalf("dns queue len = %d, want 1", got) } } diff --git a/internal/probe/probe.go b/internal/probe/probe.go index 1f8ad32..ca30bb9 100644 --- a/internal/probe/probe.go +++ b/internal/probe/probe.go @@ -21,7 +21,6 @@ import ( "errors" "fmt" "io" - mathrand "math/rand/v2" "net" "net/http" "net/url" @@ -32,6 +31,7 @@ import ( "tea.karlcom.de/karl/bucketeer/internal/index" "tea.karlcom.de/karl/bucketeer/internal/metrics" "tea.karlcom.de/karl/bucketeer/internal/model" + "tea.karlcom.de/karl/bucketeer/internal/sample" ) // Result is the outcome of probing one candidate. @@ -75,61 +75,12 @@ type Config struct { type Prober struct { cfg Config - sample *sampleQueue + sample *sample.Queue[model.Candidate] client *http.Client stop chan struct{} wg sync.WaitGroup } -// sampleQueue is a memory-bounded queue that keeps a random sample of recent -// submissions rather than a FIFO, so one high-volume hostname template cannot -// starve every other asset type. It is not on the certificate hot path. -type sampleQueue struct { - mu sync.Mutex - items []model.Candidate - cap int - notify chan struct{} -} - -func newSampleQueue(capacity int) *sampleQueue { - return &sampleQueue{cap: capacity, notify: make(chan struct{}, 1)} -} - -func (q *sampleQueue) push(c model.Candidate) { - q.mu.Lock() - if len(q.items) < q.cap { - q.items = append(q.items, c) - } else { - q.items[mathrand.IntN(len(q.items))] = c - } - q.mu.Unlock() - select { - case q.notify <- struct{}{}: - default: - } -} - -func (q *sampleQueue) len() int { - q.mu.Lock() - defer q.mu.Unlock() - return len(q.items) -} - -func (q *sampleQueue) pop() (model.Candidate, bool) { - q.mu.Lock() - n := len(q.items) - if n == 0 { - q.mu.Unlock() - return model.Candidate{}, false - } - i := mathrand.IntN(n) - c := q.items[i] - q.items[i] = q.items[n-1] - q.items = q.items[:n-1] - q.mu.Unlock() - return c, true -} - func New(cfg Config) *Prober { if cfg.Workers <= 0 { cfg.Workers = 4 @@ -142,7 +93,7 @@ func New(cfg Config) *Prober { } return &Prober{ cfg: cfg, - sample: newSampleQueue(cfg.Queue), + sample: sample.New[model.Candidate](cfg.Queue), stop: make(chan struct{}), client: &http.Client{ Timeout: cfg.Timeout, @@ -178,7 +129,7 @@ func (p *Prober) Submit(c model.Candidate) { if p.cfg.Metrics != nil { p.cfg.Metrics.ProbeAttempts.Add(1) } - p.sample.push(c) + p.sample.Push(c) } // Close stops the workers after any in-flight probe. It must be called before @@ -188,7 +139,7 @@ func (p *Prober) Close() { close(p.stop) } func (p *Prober) Wait() { p.wg.Wait() } // QueueLen reports the current probe sample depth. -func (p *Prober) QueueLen() int { return p.sample.len() } +func (p *Prober) QueueLen() int { return p.sample.Len() } func (p *Prober) worker(ctx context.Context) { defer p.wg.Done() @@ -198,10 +149,10 @@ func (p *Prober) worker(ctx context.Context) { return case <-p.stop: return - case <-p.sample.notify: + case <-p.sample.Notify(): } for { - c, ok := p.sample.pop() + c, ok := p.sample.Pop() if !ok { break } @@ -225,12 +176,6 @@ func (p *Prober) worker(ctx context.Context) { } } -// Probe is the (exposure, detail) convenience view. -func (p *Prober) Probe(ctx context.Context, c model.Candidate) (model.ExposureState, string) { - r := p.ProbeDetailed(ctx, c) - return r.Exposure, r.Detail -} - // ProbeDetailed runs the vendor-appropriate check and reports capabilities. func (p *Prober) ProbeDetailed(ctx context.Context, c model.Candidate) Result { // Deep, read-only protocol checks take precedence for database services. @@ -469,8 +414,3 @@ func classifyError(err error) (model.ExposureState, string) { } return model.ExposureUnknown, err.Error() } - -// Describe is a helper for logs/tests. -func Describe(s model.ExposureState) string { - return fmt.Sprintf("exposure=%s", s) -} diff --git a/internal/probe/probe_test.go b/internal/probe/probe_test.go index 0d01627..07d0aa6 100644 --- a/internal/probe/probe_test.go +++ b/internal/probe/probe_test.go @@ -38,11 +38,11 @@ func TestProbeStorageStatuses(t *testing.T) { for _, tc := range cases { p := New(Config{Workers: 1, Timeout: time.Second}) host := serverHost(t, statusHandler(tc.status)) - got, detail := p.Probe(context.Background(), model.Candidate{ + r := p.ProbeDetailed(context.Background(), model.Candidate{ Hostname: host, Provider: model.ProviderAWS, Service: model.ServiceS3, }) - if got != tc.want { - t.Errorf("status %d: got %s (%s), want %s", tc.status, got, detail, tc.want) + if r.Exposure != tc.want { + t.Errorf("status %d: got %s (%s), want %s", tc.status, r.Exposure, r.Detail, tc.want) } } } @@ -54,29 +54,29 @@ func TestProbeS3RegionRedirect(t *testing.T) { }) p := New(Config{Workers: 1, Timeout: time.Second}) host := serverHost(t, h) - got, detail := p.Probe(context.Background(), model.Candidate{ + r := p.ProbeDetailed(context.Background(), model.Candidate{ Hostname: host, Provider: model.ProviderAWS, Service: model.ServiceS3, }) - if got != model.ExposureReachable || !strings.Contains(detail, "eu-central-1") { - t.Fatalf("got %s (%s), want reachable with region", got, detail) + if r.Exposure != model.ExposureReachable || !strings.Contains(r.Detail, "eu-central-1") { + t.Fatalf("got %s (%s), want reachable with region", r.Exposure, r.Detail) } } func TestProbeFirebase(t *testing.T) { p := New(Config{Workers: 1, Timeout: time.Second}) host := serverHost(t, statusHandler(http.StatusUnauthorized)) - got, _ := p.Probe(context.Background(), model.Candidate{ + r := p.ProbeDetailed(context.Background(), model.Candidate{ Hostname: host, Provider: model.ProviderGCP, Service: model.ServiceFirebaseDB, }) - if got != model.ExposureAuthRequired { - t.Fatalf("got %s, want auth_required", got) + if r.Exposure != model.ExposureAuthRequired { + t.Fatalf("got %s, want auth_required", r.Exposure) } host2 := serverHost(t, statusHandler(http.StatusOK)) - got, _ = p.Probe(context.Background(), model.Candidate{ + r = p.ProbeDetailed(context.Background(), model.Candidate{ Hostname: host2, Provider: model.ProviderGCP, Service: model.ServiceFirebaseDB, }) - if got != model.ExposurePublicRead { - t.Fatalf("got %s, want public_read", got) + if r.Exposure != model.ExposurePublicRead { + t.Fatalf("got %s, want public_read", r.Exposure) } } @@ -90,11 +90,11 @@ func TestProbeAzureContainerDiscovery(t *testing.T) { }) p := New(Config{Workers: 1, Timeout: time.Second}) host := serverHost(t, h) - state, detail := p.Probe(context.Background(), model.Candidate{ + r := p.ProbeDetailed(context.Background(), model.Candidate{ Hostname: host, Resource: "acct", Provider: model.ProviderAzure, Service: model.ServiceBlobStorage, }) - if state != model.ExposurePublicRead || !strings.Contains(detail, "images") { - t.Fatalf("got %s (%s), want public_read via container 'images'", state, detail) + if r.Exposure != model.ExposurePublicRead || !strings.Contains(r.Detail, "images") { + t.Fatalf("got %s (%s), want public_read via container 'images'", r.Exposure, r.Detail) } } diff --git a/internal/sample/queue.go b/internal/sample/queue.go new file mode 100644 index 0000000..1772b73 --- /dev/null +++ b/internal/sample/queue.go @@ -0,0 +1,77 @@ +// Package sample provides a bounded queue that keeps a random sample of recent +// items instead of a FIFO. A FIFO fills with the first N items and drops the +// rest, which starves later work; random replacement gives representative +// coverage at bounded memory. Not for hot paths. +package sample + +import ( + mathrand "math/rand/v2" + "sync" +) + +type Queue[T any] struct { + mu sync.Mutex + items []T + cap int + notify chan struct{} + stop chan struct{} + once sync.Once +} + +func New[T any](capacity int) *Queue[T] { + if capacity < 1 { + capacity = 1 + } + return &Queue[T]{ + cap: capacity, + notify: make(chan struct{}, 1), + stop: make(chan struct{}), + } +} + +func (q *Queue[T]) Push(v T) { + q.mu.Lock() + if len(q.items) < q.cap { + q.items = append(q.items, v) + } else { + q.items[mathrand.IntN(len(q.items))] = v + } + q.mu.Unlock() + select { + case q.notify <- struct{}{}: + default: + } +} + +func (q *Queue[T]) Pop() (T, bool) { + q.mu.Lock() + n := len(q.items) + if n == 0 { + q.mu.Unlock() + var zero T + return zero, false + } + i := mathrand.IntN(n) + v := q.items[i] + q.items[i] = q.items[n-1] + q.items = q.items[:n-1] + q.mu.Unlock() + return v, true +} + +func (q *Queue[T]) Len() int { + q.mu.Lock() + defer q.mu.Unlock() + return len(q.items) +} + +func (q *Queue[T]) Notify() <-chan struct{} { return q.notify } +func (q *Queue[T]) Stop() <-chan struct{} { return q.stop } + +func (q *Queue[T]) Close() { + q.once.Do(func() { close(q.stop) }) + select { + case q.notify <- struct{}{}: + default: + } +} diff --git a/internal/store/store.go b/internal/store/store.go index bc44de0..0b4aaad 100644 --- a/internal/store/store.go +++ b/internal/store/store.go @@ -47,8 +47,6 @@ func (s *Store) Ping(ctx context.Context) error { return s.pool.Ping(ctx) } func (s *Store) Close() { s.pool.Close() } -func (s *Store) Pool() *pgxpool.Pool { return s.pool } - // PoolStats reports pgx pool utilization for logging/metrics. func (s *Store) PoolStats() (total, idle, acquired int32) { st := s.pool.Stat()