From af5c4c2ed1945c8d1b29694fdef3a15233b9d2e8 Mon Sep 17 00:00:00 2001 From: Joe Lanford Date: Wed, 1 Sep 2021 11:02:12 -0400 Subject: [PATCH 01/15] fix: ensure operator images are included in rendered bundles related images (#771) Signed-off-by: Joe Lanford Upstream-repository: operator-registry Upstream-commit: f5dcf40f01b8707194fdde07818c8b440ee010fa --- .../operator-registry/alpha/action/render.go | 36 ++++++ .../alpha/action/render_test.go | 108 ++++++++++++++---- .../manifests/foo.v0.2.0.csv.yaml | 22 ++++ .../foo-index-v0.2.0-declcfg/foo/index.yaml | 9 +- .../operator-registry/alpha/action/render.go | 36 ++++++ .../manifests/foo.v0.2.0.csv.yaml | 22 ++++ .../foo-index-v0.2.0-declcfg/foo/index.yaml | 9 +- 7 files changed, 218 insertions(+), 24 deletions(-) diff --git a/staging/operator-registry/alpha/action/render.go b/staging/operator-registry/alpha/action/render.go index 042fcf5646..389c8ff44c 100644 --- a/staging/operator-registry/alpha/action/render.go +++ b/staging/operator-registry/alpha/action/render.go @@ -9,6 +9,7 @@ import ( "io/ioutil" "os" "path/filepath" + "sort" "strings" "sync" @@ -76,6 +77,13 @@ func (r Render) Run(ctx context.Context) (*declcfg.DeclarativeConfig, error) { return nil, fmt.Errorf("render reference %q: %w", ref, err) } renderBundleObjects(cfg) + + for _, b := range cfg.Bundles { + sort.Slice(b.RelatedImages, func(i, j int) bool { + return b.RelatedImages[i].Image < b.RelatedImages[j].Image + }) + } + cfgs = append(cfgs, *cfg) } @@ -233,6 +241,7 @@ func sqliteToDeclcfg(ctx context.Context, dbFile string) (*declcfg.DeclarativeCo if err := populateDBRelatedImages(ctx, &cfg, db); err != nil { return nil, err } + return &cfg, nil } @@ -322,6 +331,33 @@ func getRelatedImages(b *registry.Bundle) ([]declcfg.RelatedImage, error) { if err = json.Unmarshal(*rawValue, &relatedImages); err != nil { return nil, err } + + // Keep track of the images we've already found, so that we don't add + // them multiple times. + allImages := sets.NewString() + for _, ri := range relatedImages { + allImages = allImages.Insert(ri.Image) + } + + if !allImages.Has(b.BundleImage) { + relatedImages = append(relatedImages, declcfg.RelatedImage{ + Image: b.BundleImage, + }) + } + + opImages, err := csv.GetOperatorImages() + if err != nil { + return nil, err + } + for img := range opImages { + if !allImages.Has(img) { + relatedImages = append(relatedImages, declcfg.RelatedImage{ + Image: img, + }) + } + allImages = allImages.Insert(img) + } + return relatedImages, nil } diff --git a/staging/operator-registry/alpha/action/render_test.go b/staging/operator-registry/alpha/action/render_test.go index 5a27b2c882..40cef52504 100644 --- a/staging/operator-registry/alpha/action/render_test.go +++ b/staging/operator-registry/alpha/action/render_test.go @@ -101,11 +101,11 @@ func TestRender(t *testing.T) { }, RelatedImages: []declcfg.RelatedImage{ { - Name: "operator", - Image: "test.registry/foo-operator/foo:v0.1.0", + Image: "test.registry/foo-operator/foo-bundle:v0.1.0", }, { - Image: "test.registry/foo-operator/foo-bundle:v0.1.0", + Name: "operator", + Image: "test.registry/foo-operator/foo:v0.1.0", }, }, CsvJSON: string(foov1csv), @@ -126,12 +126,25 @@ func TestRender(t *testing.T) { }, RelatedImages: []declcfg.RelatedImage{ { - Name: "operator", - Image: "test.registry/foo-operator/foo:v0.2.0", + Image: "test.registry/foo-operator/foo-2:v0.2.0", }, { Image: "test.registry/foo-operator/foo-bundle:v0.2.0", }, + { + Image: "test.registry/foo-operator/foo-init-2:v0.2.0", + }, + { + Image: "test.registry/foo-operator/foo-init:v0.2.0", + }, + { + Name: "other", + Image: "test.registry/foo-operator/foo-other:v0.2.0", + }, + { + Name: "operator", + Image: "test.registry/foo-operator/foo:v0.2.0", + }, }, CsvJSON: string(foov2csv), Objects: []string{string(foov2csv), string(foov2crd)}, @@ -180,11 +193,11 @@ func TestRender(t *testing.T) { }, RelatedImages: []declcfg.RelatedImage{ { - Name: "operator", - Image: "test.registry/foo-operator/foo:v0.1.0", + Image: "test.registry/foo-operator/foo-bundle:v0.1.0", }, { - Image: "test.registry/foo-operator/foo-bundle:v0.1.0", + Name: "operator", + Image: "test.registry/foo-operator/foo:v0.1.0", }, }, CsvJSON: string(foov1csv), @@ -205,12 +218,25 @@ func TestRender(t *testing.T) { }, RelatedImages: []declcfg.RelatedImage{ { - Name: "operator", - Image: "test.registry/foo-operator/foo:v0.2.0", + Image: "test.registry/foo-operator/foo-2:v0.2.0", }, { Image: "test.registry/foo-operator/foo-bundle:v0.2.0", }, + { + Image: "test.registry/foo-operator/foo-init-2:v0.2.0", + }, + { + Image: "test.registry/foo-operator/foo-init:v0.2.0", + }, + { + Name: "other", + Image: "test.registry/foo-operator/foo-other:v0.2.0", + }, + { + Name: "operator", + Image: "test.registry/foo-operator/foo:v0.2.0", + }, }, CsvJSON: string(foov2csv), Objects: []string{string(foov2csv), string(foov2crd)}, @@ -258,11 +284,11 @@ func TestRender(t *testing.T) { }, RelatedImages: []declcfg.RelatedImage{ { - Name: "operator", - Image: "test.registry/foo-operator/foo:v0.1.0", + Image: "test.registry/foo-operator/foo-bundle:v0.1.0", }, { - Image: "test.registry/foo-operator/foo-bundle:v0.1.0", + Name: "operator", + Image: "test.registry/foo-operator/foo:v0.1.0", }, }, CsvJSON: string(foov1csv), @@ -283,12 +309,25 @@ func TestRender(t *testing.T) { }, RelatedImages: []declcfg.RelatedImage{ { - Name: "operator", - Image: "test.registry/foo-operator/foo:v0.2.0", + Image: "test.registry/foo-operator/foo-2:v0.2.0", }, { Image: "test.registry/foo-operator/foo-bundle:v0.2.0", }, + { + Image: "test.registry/foo-operator/foo-init-2:v0.2.0", + }, + { + Image: "test.registry/foo-operator/foo-init:v0.2.0", + }, + { + Name: "other", + Image: "test.registry/foo-operator/foo-other:v0.2.0", + }, + { + Name: "operator", + Image: "test.registry/foo-operator/foo:v0.2.0", + }, }, CsvJSON: string(foov2csv), Objects: []string{string(foov2csv), string(foov2crd)}, @@ -336,11 +375,11 @@ func TestRender(t *testing.T) { }, RelatedImages: []declcfg.RelatedImage{ { - Name: "operator", - Image: "test.registry/foo-operator/foo:v0.1.0", + Image: "test.registry/foo-operator/foo-bundle:v0.1.0", }, { - Image: "test.registry/foo-operator/foo-bundle:v0.1.0", + Name: "operator", + Image: "test.registry/foo-operator/foo:v0.1.0", }, }, CsvJSON: string(foov1csv), @@ -361,12 +400,25 @@ func TestRender(t *testing.T) { }, RelatedImages: []declcfg.RelatedImage{ { - Name: "operator", - Image: "test.registry/foo-operator/foo:v0.2.0", + Image: "test.registry/foo-operator/foo-2:v0.2.0", }, { Image: "test.registry/foo-operator/foo-bundle:v0.2.0", }, + { + Image: "test.registry/foo-operator/foo-init-2:v0.2.0", + }, + { + Image: "test.registry/foo-operator/foo-init:v0.2.0", + }, + { + Name: "other", + Image: "test.registry/foo-operator/foo-other:v0.2.0", + }, + { + Name: "operator", + Image: "test.registry/foo-operator/foo:v0.2.0", + }, }, CsvJSON: string(foov2csv), Objects: []string{string(foov2csv), string(foov2crd)}, @@ -395,6 +447,22 @@ func TestRender(t *testing.T) { property.MustBuildPackageRequired("bar", "<0.1.0"), }, RelatedImages: []declcfg.RelatedImage{ + { + Image: "test.registry/foo-operator/foo-2:v0.2.0", + }, + { + Image: "test.registry/foo-operator/foo-bundle:v0.2.0", + }, + { + Image: "test.registry/foo-operator/foo-init-2:v0.2.0", + }, + { + Image: "test.registry/foo-operator/foo-init:v0.2.0", + }, + { + Name: "other", + Image: "test.registry/foo-operator/foo-other:v0.2.0", + }, { Name: "operator", Image: "test.registry/foo-operator/foo:v0.2.0", diff --git a/staging/operator-registry/alpha/action/testdata/foo-bundle-v0.2.0/manifests/foo.v0.2.0.csv.yaml b/staging/operator-registry/alpha/action/testdata/foo-bundle-v0.2.0/manifests/foo.v0.2.0.csv.yaml index d7e30bee03..823f91c0fd 100644 --- a/staging/operator-registry/alpha/action/testdata/foo-bundle-v0.2.0/manifests/foo.v0.2.0.csv.yaml +++ b/staging/operator-registry/alpha/action/testdata/foo-bundle-v0.2.0/manifests/foo.v0.2.0.csv.yaml @@ -18,6 +18,28 @@ spec: skips: - foo.v0.1.1 - foo.v0.1.2 + install: + strategy: deployment + spec: + deployments: + - name: foo-operator + spec: + template: + spec: + initContainers: + - image: test.registry/foo-operator/foo-init:v0.2.0 + containers: + - image: test.registry/foo-operator/foo:v0.2.0 + - name: foo-operator-2 + spec: + template: + spec: + initContainers: + - image: test.registry/foo-operator/foo-init-2:v0.2.0 + containers: + - image: test.registry/foo-operator/foo-2:v0.2.0 relatedImages: - name: operator image: test.registry/foo-operator/foo:v0.2.0 + - name: other + image: test.registry/foo-operator/foo-other:v0.2.0 diff --git a/staging/operator-registry/alpha/action/testdata/foo-index-v0.2.0-declcfg/foo/index.yaml b/staging/operator-registry/alpha/action/testdata/foo-index-v0.2.0-declcfg/foo/index.yaml index 900df7684e..7a126ee502 100644 --- a/staging/operator-registry/alpha/action/testdata/foo-index-v0.2.0-declcfg/foo/index.yaml +++ b/staging/operator-registry/alpha/action/testdata/foo-index-v0.2.0-declcfg/foo/index.yaml @@ -86,11 +86,16 @@ properties: versionRange: <0.1.0 - type: olm.bundle.object value: - data: eyJhcGlWZXJzaW9uIjoib3BlcmF0b3JzLmNvcmVvcy5jb20vdjFhbHBoYTEiLCJraW5kIjoiQ2x1c3RlclNlcnZpY2VWZXJzaW9uIiwibWV0YWRhdGEiOnsiYW5ub3RhdGlvbnMiOnsib2xtLnNraXBSYW5nZSI6Ilx1MDAzYzAuMi4wIn0sIm5hbWUiOiJmb28udjAuMi4wIn0sInNwZWMiOnsiY3VzdG9tcmVzb3VyY2VkZWZpbml0aW9ucyI6eyJvd25lZCI6W3siZ3JvdXAiOiJ0ZXN0LmZvbyIsImtpbmQiOiJGb28iLCJuYW1lIjoiZm9vcy50ZXN0LmZvbyIsInZlcnNpb24iOiJ2MSJ9XX0sImRpc3BsYXlOYW1lIjoiRm9vIE9wZXJhdG9yIiwicmVsYXRlZEltYWdlcyI6W3siaW1hZ2UiOiJ0ZXN0LnJlZ2lzdHJ5L2Zvby1vcGVyYXRvci9mb286djAuMi4wIiwibmFtZSI6Im9wZXJhdG9yIn1dLCJyZXBsYWNlcyI6ImZvby52MC4xLjAiLCJza2lwcyI6WyJmb28udjAuMS4xIiwiZm9vLnYwLjEuMiJdLCJ2ZXJzaW9uIjoiMC4yLjAifX0= + data: eyJhcGlWZXJzaW9uIjoib3BlcmF0b3JzLmNvcmVvcy5jb20vdjFhbHBoYTEiLCJraW5kIjoiQ2x1c3RlclNlcnZpY2VWZXJzaW9uIiwibWV0YWRhdGEiOnsiYW5ub3RhdGlvbnMiOnsib2xtLnNraXBSYW5nZSI6Ilx1MDAzYzAuMi4wIn0sIm5hbWUiOiJmb28udjAuMi4wIn0sInNwZWMiOnsiY3VzdG9tcmVzb3VyY2VkZWZpbml0aW9ucyI6eyJvd25lZCI6W3siZ3JvdXAiOiJ0ZXN0LmZvbyIsImtpbmQiOiJGb28iLCJuYW1lIjoiZm9vcy50ZXN0LmZvbyIsInZlcnNpb24iOiJ2MSJ9XX0sImRpc3BsYXlOYW1lIjoiRm9vIE9wZXJhdG9yIiwiaW5zdGFsbCI6eyJzcGVjIjp7ImRlcGxveW1lbnRzIjpbeyJuYW1lIjoiZm9vLW9wZXJhdG9yIiwic3BlYyI6eyJ0ZW1wbGF0ZSI6eyJzcGVjIjp7ImNvbnRhaW5lcnMiOlt7ImltYWdlIjoidGVzdC5yZWdpc3RyeS9mb28tb3BlcmF0b3IvZm9vOnYwLjIuMCJ9XSwiaW5pdENvbnRhaW5lcnMiOlt7ImltYWdlIjoidGVzdC5yZWdpc3RyeS9mb28tb3BlcmF0b3IvZm9vLWluaXQ6djAuMi4wIn1dfX19fSx7Im5hbWUiOiJmb28tb3BlcmF0b3ItMiIsInNwZWMiOnsidGVtcGxhdGUiOnsic3BlYyI6eyJjb250YWluZXJzIjpbeyJpbWFnZSI6InRlc3QucmVnaXN0cnkvZm9vLW9wZXJhdG9yL2Zvby0yOnYwLjIuMCJ9XSwiaW5pdENvbnRhaW5lcnMiOlt7ImltYWdlIjoidGVzdC5yZWdpc3RyeS9mb28tb3BlcmF0b3IvZm9vLWluaXQtMjp2MC4yLjAifV19fX19XX0sInN0cmF0ZWd5IjoiZGVwbG95bWVudCJ9LCJyZWxhdGVkSW1hZ2VzIjpbeyJpbWFnZSI6InRlc3QucmVnaXN0cnkvZm9vLW9wZXJhdG9yL2Zvbzp2MC4yLjAiLCJuYW1lIjoib3BlcmF0b3IifSx7ImltYWdlIjoidGVzdC5yZWdpc3RyeS9mb28tb3BlcmF0b3IvZm9vLW90aGVyOnYwLjIuMCIsIm5hbWUiOiJvdGhlciJ9XSwicmVwbGFjZXMiOiJmb28udjAuMS4wIiwic2tpcHMiOlsiZm9vLnYwLjEuMSIsImZvby52MC4xLjIiXSwidmVyc2lvbiI6IjAuMi4wIn19 - type: olm.bundle.object value: data: eyJhcGlWZXJzaW9uIjoiYXBpZXh0ZW5zaW9ucy5rOHMuaW8vdjEiLCJraW5kIjoiQ3VzdG9tUmVzb3VyY2VEZWZpbml0aW9uIiwibWV0YWRhdGEiOnsibmFtZSI6ImZvb3MudGVzdC5mb28ifSwic3BlYyI6eyJncm91cCI6InRlc3QuZm9vIiwibmFtZXMiOnsia2luZCI6IkZvbyIsInBsdXJhbCI6ImZvb3MifSwidmVyc2lvbnMiOlt7Im5hbWUiOiJ2MSJ9XX19 relatedImages: + - image: test.registry/foo-operator/foo-2:v0.2.0 + - image: test.registry/foo-operator/foo-init-2:v0.2.0 + - image: test.registry/foo-operator/foo-init:v0.2.0 + - image: test.registry/foo-operator/foo-bundle:v0.2.0 + - image: test.registry/foo-operator/foo-other:v0.2.0 + name: other - image: test.registry/foo-operator/foo:v0.2.0 name: operator - - image: test.registry/foo-operator/foo-bundle:v0.2.0 diff --git a/vendor/github.com/operator-framework/operator-registry/alpha/action/render.go b/vendor/github.com/operator-framework/operator-registry/alpha/action/render.go index 042fcf5646..389c8ff44c 100644 --- a/vendor/github.com/operator-framework/operator-registry/alpha/action/render.go +++ b/vendor/github.com/operator-framework/operator-registry/alpha/action/render.go @@ -9,6 +9,7 @@ import ( "io/ioutil" "os" "path/filepath" + "sort" "strings" "sync" @@ -76,6 +77,13 @@ func (r Render) Run(ctx context.Context) (*declcfg.DeclarativeConfig, error) { return nil, fmt.Errorf("render reference %q: %w", ref, err) } renderBundleObjects(cfg) + + for _, b := range cfg.Bundles { + sort.Slice(b.RelatedImages, func(i, j int) bool { + return b.RelatedImages[i].Image < b.RelatedImages[j].Image + }) + } + cfgs = append(cfgs, *cfg) } @@ -233,6 +241,7 @@ func sqliteToDeclcfg(ctx context.Context, dbFile string) (*declcfg.DeclarativeCo if err := populateDBRelatedImages(ctx, &cfg, db); err != nil { return nil, err } + return &cfg, nil } @@ -322,6 +331,33 @@ func getRelatedImages(b *registry.Bundle) ([]declcfg.RelatedImage, error) { if err = json.Unmarshal(*rawValue, &relatedImages); err != nil { return nil, err } + + // Keep track of the images we've already found, so that we don't add + // them multiple times. + allImages := sets.NewString() + for _, ri := range relatedImages { + allImages = allImages.Insert(ri.Image) + } + + if !allImages.Has(b.BundleImage) { + relatedImages = append(relatedImages, declcfg.RelatedImage{ + Image: b.BundleImage, + }) + } + + opImages, err := csv.GetOperatorImages() + if err != nil { + return nil, err + } + for img := range opImages { + if !allImages.Has(img) { + relatedImages = append(relatedImages, declcfg.RelatedImage{ + Image: img, + }) + } + allImages = allImages.Insert(img) + } + return relatedImages, nil } diff --git a/vendor/github.com/operator-framework/operator-registry/alpha/action/testdata/foo-bundle-v0.2.0/manifests/foo.v0.2.0.csv.yaml b/vendor/github.com/operator-framework/operator-registry/alpha/action/testdata/foo-bundle-v0.2.0/manifests/foo.v0.2.0.csv.yaml index d7e30bee03..823f91c0fd 100644 --- a/vendor/github.com/operator-framework/operator-registry/alpha/action/testdata/foo-bundle-v0.2.0/manifests/foo.v0.2.0.csv.yaml +++ b/vendor/github.com/operator-framework/operator-registry/alpha/action/testdata/foo-bundle-v0.2.0/manifests/foo.v0.2.0.csv.yaml @@ -18,6 +18,28 @@ spec: skips: - foo.v0.1.1 - foo.v0.1.2 + install: + strategy: deployment + spec: + deployments: + - name: foo-operator + spec: + template: + spec: + initContainers: + - image: test.registry/foo-operator/foo-init:v0.2.0 + containers: + - image: test.registry/foo-operator/foo:v0.2.0 + - name: foo-operator-2 + spec: + template: + spec: + initContainers: + - image: test.registry/foo-operator/foo-init-2:v0.2.0 + containers: + - image: test.registry/foo-operator/foo-2:v0.2.0 relatedImages: - name: operator image: test.registry/foo-operator/foo:v0.2.0 + - name: other + image: test.registry/foo-operator/foo-other:v0.2.0 diff --git a/vendor/github.com/operator-framework/operator-registry/alpha/action/testdata/foo-index-v0.2.0-declcfg/foo/index.yaml b/vendor/github.com/operator-framework/operator-registry/alpha/action/testdata/foo-index-v0.2.0-declcfg/foo/index.yaml index 900df7684e..7a126ee502 100644 --- a/vendor/github.com/operator-framework/operator-registry/alpha/action/testdata/foo-index-v0.2.0-declcfg/foo/index.yaml +++ b/vendor/github.com/operator-framework/operator-registry/alpha/action/testdata/foo-index-v0.2.0-declcfg/foo/index.yaml @@ -86,11 +86,16 @@ properties: versionRange: <0.1.0 - type: olm.bundle.object value: - data: eyJhcGlWZXJzaW9uIjoib3BlcmF0b3JzLmNvcmVvcy5jb20vdjFhbHBoYTEiLCJraW5kIjoiQ2x1c3RlclNlcnZpY2VWZXJzaW9uIiwibWV0YWRhdGEiOnsiYW5ub3RhdGlvbnMiOnsib2xtLnNraXBSYW5nZSI6Ilx1MDAzYzAuMi4wIn0sIm5hbWUiOiJmb28udjAuMi4wIn0sInNwZWMiOnsiY3VzdG9tcmVzb3VyY2VkZWZpbml0aW9ucyI6eyJvd25lZCI6W3siZ3JvdXAiOiJ0ZXN0LmZvbyIsImtpbmQiOiJGb28iLCJuYW1lIjoiZm9vcy50ZXN0LmZvbyIsInZlcnNpb24iOiJ2MSJ9XX0sImRpc3BsYXlOYW1lIjoiRm9vIE9wZXJhdG9yIiwicmVsYXRlZEltYWdlcyI6W3siaW1hZ2UiOiJ0ZXN0LnJlZ2lzdHJ5L2Zvby1vcGVyYXRvci9mb286djAuMi4wIiwibmFtZSI6Im9wZXJhdG9yIn1dLCJyZXBsYWNlcyI6ImZvby52MC4xLjAiLCJza2lwcyI6WyJmb28udjAuMS4xIiwiZm9vLnYwLjEuMiJdLCJ2ZXJzaW9uIjoiMC4yLjAifX0= + data: eyJhcGlWZXJzaW9uIjoib3BlcmF0b3JzLmNvcmVvcy5jb20vdjFhbHBoYTEiLCJraW5kIjoiQ2x1c3RlclNlcnZpY2VWZXJzaW9uIiwibWV0YWRhdGEiOnsiYW5ub3RhdGlvbnMiOnsib2xtLnNraXBSYW5nZSI6Ilx1MDAzYzAuMi4wIn0sIm5hbWUiOiJmb28udjAuMi4wIn0sInNwZWMiOnsiY3VzdG9tcmVzb3VyY2VkZWZpbml0aW9ucyI6eyJvd25lZCI6W3siZ3JvdXAiOiJ0ZXN0LmZvbyIsImtpbmQiOiJGb28iLCJuYW1lIjoiZm9vcy50ZXN0LmZvbyIsInZlcnNpb24iOiJ2MSJ9XX0sImRpc3BsYXlOYW1lIjoiRm9vIE9wZXJhdG9yIiwiaW5zdGFsbCI6eyJzcGVjIjp7ImRlcGxveW1lbnRzIjpbeyJuYW1lIjoiZm9vLW9wZXJhdG9yIiwic3BlYyI6eyJ0ZW1wbGF0ZSI6eyJzcGVjIjp7ImNvbnRhaW5lcnMiOlt7ImltYWdlIjoidGVzdC5yZWdpc3RyeS9mb28tb3BlcmF0b3IvZm9vOnYwLjIuMCJ9XSwiaW5pdENvbnRhaW5lcnMiOlt7ImltYWdlIjoidGVzdC5yZWdpc3RyeS9mb28tb3BlcmF0b3IvZm9vLWluaXQ6djAuMi4wIn1dfX19fSx7Im5hbWUiOiJmb28tb3BlcmF0b3ItMiIsInNwZWMiOnsidGVtcGxhdGUiOnsic3BlYyI6eyJjb250YWluZXJzIjpbeyJpbWFnZSI6InRlc3QucmVnaXN0cnkvZm9vLW9wZXJhdG9yL2Zvby0yOnYwLjIuMCJ9XSwiaW5pdENvbnRhaW5lcnMiOlt7ImltYWdlIjoidGVzdC5yZWdpc3RyeS9mb28tb3BlcmF0b3IvZm9vLWluaXQtMjp2MC4yLjAifV19fX19XX0sInN0cmF0ZWd5IjoiZGVwbG95bWVudCJ9LCJyZWxhdGVkSW1hZ2VzIjpbeyJpbWFnZSI6InRlc3QucmVnaXN0cnkvZm9vLW9wZXJhdG9yL2Zvbzp2MC4yLjAiLCJuYW1lIjoib3BlcmF0b3IifSx7ImltYWdlIjoidGVzdC5yZWdpc3RyeS9mb28tb3BlcmF0b3IvZm9vLW90aGVyOnYwLjIuMCIsIm5hbWUiOiJvdGhlciJ9XSwicmVwbGFjZXMiOiJmb28udjAuMS4wIiwic2tpcHMiOlsiZm9vLnYwLjEuMSIsImZvby52MC4xLjIiXSwidmVyc2lvbiI6IjAuMi4wIn19 - type: olm.bundle.object value: data: eyJhcGlWZXJzaW9uIjoiYXBpZXh0ZW5zaW9ucy5rOHMuaW8vdjEiLCJraW5kIjoiQ3VzdG9tUmVzb3VyY2VEZWZpbml0aW9uIiwibWV0YWRhdGEiOnsibmFtZSI6ImZvb3MudGVzdC5mb28ifSwic3BlYyI6eyJncm91cCI6InRlc3QuZm9vIiwibmFtZXMiOnsia2luZCI6IkZvbyIsInBsdXJhbCI6ImZvb3MifSwidmVyc2lvbnMiOlt7Im5hbWUiOiJ2MSJ9XX19 relatedImages: + - image: test.registry/foo-operator/foo-2:v0.2.0 + - image: test.registry/foo-operator/foo-init-2:v0.2.0 + - image: test.registry/foo-operator/foo-init:v0.2.0 + - image: test.registry/foo-operator/foo-bundle:v0.2.0 + - image: test.registry/foo-operator/foo-other:v0.2.0 + name: other - image: test.registry/foo-operator/foo:v0.2.0 name: operator - - image: test.registry/foo-operator/foo-bundle:v0.2.0 From 9f1a51d79fbedc67a85f66f56a36e307102b3f4a Mon Sep 17 00:00:00 2001 From: Ben Luddy Date: Wed, 1 Sep 2021 17:54:31 -0400 Subject: [PATCH 02/15] Reduce resolver dependencies on operator-registry and operator-lifecycle-manager. (#2337) * Remove resolver dependency on registry.CatalogKey. Signed-off-by: Ben Luddy * Remove hard resolver dependency on the gRPC registry client. The most significant change is the introduction of a new Source interface, which represents a single source of cache entries. In the existing implementation, the cache was hardcoded to fetch content from the operator-registry gRPC API on misses. This was a barrier to off-cluster tools and other applications that should be able to perform resolution without running a registry server. A number of test fixtures were affected (for the better) because it's now possible to directly configure the real Cache implementation to retrieve test content without using of test doubles. Signed-off-by: Ben Luddy Upstream-repository: operator-lifecycle-manager Upstream-commit: 9e4a778a44abb8705fb8ef95ad0bdaaebfa0ecfc --- .../controller/operators/catalog/operator.go | 3 +- .../registry/resolver/cache/cache.go | 403 +++++---- .../registry/resolver/cache/cache_test.go | 290 +++--- .../registry/resolver/cache/operators.go | 7 +- .../registry/resolver/cache/operators_test.go | 27 +- .../registry/resolver/cache/predicates.go | 5 +- .../registry/resolver/installabletypes.go | 9 +- .../resolver/instrumented_resolver.go | 5 +- .../resolver/instrumented_resolver_test.go | 7 +- .../controller/registry/resolver/resolver.go | 38 +- .../registry/resolver/resolver_test.go | 837 ++++++++---------- .../registry/resolver/source_registry.go | 109 +++ .../registry/resolver/step_resolver.go | 11 +- .../registry/resolver/step_resolver_test.go | 113 ++- .../pkg/fakes/fake_resolver.go | 14 +- .../controller/operators/catalog/operator.go | 3 +- .../registry/resolver/cache/cache.go | 403 +++++---- .../registry/resolver/cache/operators.go | 7 +- .../registry/resolver/cache/predicates.go | 5 +- .../registry/resolver/installabletypes.go | 9 +- .../resolver/instrumented_resolver.go | 5 +- .../controller/registry/resolver/resolver.go | 38 +- .../registry/resolver/source_registry.go | 109 +++ .../registry/resolver/step_resolver.go | 11 +- 24 files changed, 1225 insertions(+), 1243 deletions(-) create mode 100644 staging/operator-lifecycle-manager/pkg/controller/registry/resolver/source_registry.go create mode 100644 vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/source_registry.go diff --git a/staging/operator-lifecycle-manager/pkg/controller/operators/catalog/operator.go b/staging/operator-lifecycle-manager/pkg/controller/operators/catalog/operator.go index c91029a3a7..e83e77c282 100644 --- a/staging/operator-lifecycle-manager/pkg/controller/operators/catalog/operator.go +++ b/staging/operator-lifecycle-manager/pkg/controller/operators/catalog/operator.go @@ -55,6 +55,7 @@ import ( "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/grpc" "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/reconciler" "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver" + resolvercache "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/cache" "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/solver" "github.com/operator-framework/operator-lifecycle-manager/pkg/lib/catalogsource" "github.com/operator-framework/operator-lifecycle-manager/pkg/lib/clients" @@ -463,7 +464,7 @@ func (o *Operator) syncSourceState(state grpc.SourceState) { switch state.State { case connectivity.Ready: - o.resolver.Expire(state.Key) + o.resolver.Expire(resolvercache.SourceKey(state.Key)) if o.namespace == state.Key.Namespace { namespaces, err := index.CatalogSubscriberNamespaces(o.catalogSubscriberIndexer, state.Key.Name, state.Key.Namespace) diff --git a/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/cache.go b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/cache.go index c26f30d434..10ca6d07d8 100644 --- a/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/cache.go +++ b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/cache.go @@ -2,88 +2,140 @@ package cache import ( "context" - "encoding/json" "fmt" + "io" "sort" "sync" "time" - "k8s.io/apimachinery/pkg/util/errors" - "github.com/sirupsen/logrus" + "k8s.io/apimachinery/pkg/util/errors" "github.com/operator-framework/operator-lifecycle-manager/pkg/api/client/listers/operators/v1alpha1" - "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry" - "github.com/operator-framework/operator-registry/pkg/api" - "github.com/operator-framework/operator-registry/pkg/client" - opregistry "github.com/operator-framework/operator-registry/pkg/registry" + "github.com/operator-framework/operator-lifecycle-manager/pkg/lib/operatorlister" ) -type RegistryClientProvider interface { - ClientsForNamespaces(namespaces ...string) map[registry.CatalogKey]client.Interface +const existingOperatorKey = "@existing" + +type SourceKey struct { + Name string + Namespace string } -type DefaultRegistryClientProvider struct { - logger logrus.FieldLogger - s RegistryClientProvider +func (k *SourceKey) String() string { + return fmt.Sprintf("%s/%s", k.Name, k.Namespace) } -func NewDefaultRegistryClientProvider(log logrus.FieldLogger, store RegistryClientProvider) *DefaultRegistryClientProvider { - return &DefaultRegistryClientProvider{ - logger: log, - s: store, +func (k *SourceKey) Empty() bool { + return k.Name == "" && k.Namespace == "" +} + +func (k *SourceKey) Equal(compare SourceKey) bool { + return k.Name == compare.Name && k.Namespace == compare.Namespace +} + +// Virtual indicates if this is a "virtual" catalog representing the currently installed operators in a namespace +func (k *SourceKey) Virtual() bool { + return k.Name == existingOperatorKey && k.Namespace != "" +} + +func NewVirtualSourceKey(namespace string) SourceKey { + return SourceKey{ + Name: existingOperatorKey, + Namespace: namespace, } } -func (rcp *DefaultRegistryClientProvider) ClientsForNamespaces(namespaces ...string) map[registry.CatalogKey]client.Interface { - return rcp.s.ClientsForNamespaces(namespaces...) +type Source interface { + Snapshot(context.Context) (*Snapshot, error) +} + +type SourceProvider interface { + // TODO: namespaces parameter is an artifact of SourceStore + Sources(namespaces ...string) map[SourceKey]Source +} + +type StaticSourceProvider map[SourceKey]Source + +func (p StaticSourceProvider) Sources(namespaces ...string) map[SourceKey]Source { + result := make(map[SourceKey]Source) + for key, source := range p { + for _, namespace := range namespaces { + if key.Namespace == namespace { + result[key] = source + break + } + } + } + return result } type OperatorCacheProvider interface { Namespaced(namespaces ...string) MultiCatalogOperatorFinder - Expire(catalog registry.CatalogKey) + Expire(catalog SourceKey) } -type OperatorCache struct { - logger logrus.FieldLogger - rcp RegistryClientProvider +type Cache struct { + logger logrus.StdLogger + sp SourceProvider catsrcLister v1alpha1.CatalogSourceLister - snapshots map[registry.CatalogKey]*CatalogSnapshot + snapshots map[SourceKey]*snapshotHeader ttl time.Duration sem chan struct{} m sync.RWMutex } -const defaultCatalogSourcePriority int = 0 - type catalogSourcePriority int -var _ OperatorCacheProvider = &OperatorCache{} +var _ OperatorCacheProvider = &Cache{} + +type Option func(*Cache) + +func WithLogger(logger logrus.StdLogger) Option { + return func(c *Cache) { + c.logger = logger + } +} + +func WithCatalogSourceLister(catalogSourceLister v1alpha1.CatalogSourceLister) Option { + return func(c *Cache) { + c.catsrcLister = catalogSourceLister + } +} -func NewOperatorCache(rcp RegistryClientProvider, log logrus.FieldLogger, catsrcLister v1alpha1.CatalogSourceLister) *OperatorCache { +func New(sp SourceProvider, options ...Option) *Cache { const ( MaxConcurrentSnapshotUpdates = 4 ) - return &OperatorCache{ - logger: log, - rcp: rcp, - catsrcLister: catsrcLister, - snapshots: make(map[registry.CatalogKey]*CatalogSnapshot), + cache := Cache{ + logger: func() logrus.StdLogger { + logger := logrus.New() + logger.SetOutput(io.Discard) + return logger + }(), + sp: sp, + catsrcLister: operatorlister.NewLister().OperatorsV1alpha1().CatalogSourceLister(), + snapshots: make(map[SourceKey]*snapshotHeader), ttl: 5 * time.Minute, sem: make(chan struct{}, MaxConcurrentSnapshotUpdates), } + + for _, opt := range options { + opt(&cache) + } + + return &cache } type NamespacedOperatorCache struct { - Namespaces []string - existing *registry.CatalogKey - Snapshots map[registry.CatalogKey]*CatalogSnapshot + existing *SourceKey + snapshots map[SourceKey]*snapshotHeader } func (c *NamespacedOperatorCache) Error() error { var errs []error - for key, snapshot := range c.Snapshots { + for key, snapshot := range c.snapshots { snapshot.m.Lock() err := snapshot.err snapshot.m.Unlock() @@ -94,7 +146,7 @@ func (c *NamespacedOperatorCache) Error() error { return errors.NewAggregate(errs) } -func (c *OperatorCache) Expire(catalog registry.CatalogKey) { +func (c *Cache) Expire(catalog SourceKey) { c.m.Lock() defer c.m.Unlock() s, ok := c.snapshots[catalog] @@ -104,31 +156,30 @@ func (c *OperatorCache) Expire(catalog registry.CatalogKey) { s.expiry = time.Unix(0, 0) } -func (c *OperatorCache) Namespaced(namespaces ...string) MultiCatalogOperatorFinder { +func (c *Cache) Namespaced(namespaces ...string) MultiCatalogOperatorFinder { const ( CachePopulateTimeout = time.Minute ) now := time.Now() - clients := c.rcp.ClientsForNamespaces(namespaces...) + sources := c.sp.Sources(namespaces...) result := NamespacedOperatorCache{ - Namespaces: namespaces, - Snapshots: make(map[registry.CatalogKey]*CatalogSnapshot), + snapshots: make(map[SourceKey]*snapshotHeader), } - var misses []registry.CatalogKey + var misses []SourceKey func() { c.m.RLock() defer c.m.RUnlock() - for key := range clients { + for key := range sources { snapshot, ok := c.snapshots[key] if ok { func() { snapshot.m.RLock() defer snapshot.m.RUnlock() - if !snapshot.Expired(now) && snapshot.Operators != nil && len(snapshot.Operators) > 0 { - result.Snapshots[key] = snapshot + if snapshot.Valid(now) { + result.snapshots[key] = snapshot } else { misses = append(misses, key) } @@ -148,9 +199,9 @@ func (c *OperatorCache) Namespaced(namespaces ...string) MultiCatalogOperatorFin defer c.m.Unlock() // Take the opportunity to clear expired snapshots while holding the lock. - var expired []registry.CatalogKey + var expired []SourceKey for key, snapshot := range c.snapshots { - if snapshot.Expired(now) { + if !snapshot.Valid(now) { snapshot.Cancel() expired = append(expired, key) } @@ -162,8 +213,8 @@ func (c *OperatorCache) Namespaced(namespaces ...string) MultiCatalogOperatorFin // Check for any snapshots that were populated while waiting to acquire the lock. var found int for i := range misses { - if snapshot, ok := c.snapshots[misses[i]]; ok && !snapshot.Expired(now) && snapshot.Operators != nil && len(snapshot.Operators) > 0 { - result.Snapshots[misses[i]] = snapshot + if hdr, ok := c.snapshots[misses[i]]; ok && hdr.Valid(now) { + result.snapshots[misses[i]] = hdr misses[found], misses[i] = misses[i], misses[found] found++ } @@ -173,120 +224,49 @@ func (c *OperatorCache) Namespaced(namespaces ...string) MultiCatalogOperatorFin for _, miss := range misses { ctx, cancel := context.WithTimeout(context.Background(), CachePopulateTimeout) - catsrcPriority := defaultCatalogSourcePriority - // Ignoring error and treat catsrc priority as 0 if not found. - catsrc, err := c.catsrcLister.CatalogSources(miss.Namespace).Get(miss.Name) - if err == nil { - catsrcPriority = catsrc.Spec.Priority - } - - s := CatalogSnapshot{ - logger: c.logger.WithField("catalog", miss), - Key: miss, - expiry: now.Add(c.ttl), - pop: cancel, - Priority: catalogSourcePriority(catsrcPriority), + hdr := snapshotHeader{ + key: miss, + expiry: now.Add(c.ttl), + pop: cancel, } - s.m.Lock() - c.snapshots[miss] = &s - result.Snapshots[miss] = &s - go c.populate(ctx, &s, clients[miss]) - } - - return &result -} -func (c *OperatorCache) populate(ctx context.Context, snapshot *CatalogSnapshot, registry client.Interface) { - defer snapshot.m.Unlock() - defer func() { - // Don't cache an errorred snapshot. - if snapshot.err != nil { - snapshot.expiry = time.Time{} + // Ignoring error and treat catsrc priority as 0 if not found. + if catsrc, _ := c.catsrcLister.CatalogSources(miss.Namespace).Get(miss.Name); catsrc != nil { + hdr.priority = catsrc.Spec.Priority } - }() - c.sem <- struct{}{} - defer func() { <-c.sem }() + hdr.m.Lock() + c.snapshots[miss] = &hdr + result.snapshots[miss] = &hdr - // Fetching default channels this way makes many round trips - // -- may need to either add a new API to fetch all at once, - // or embed the information into Bundle. - defaultChannels := make(map[string]string) - - it, err := registry.ListBundles(ctx) - if err != nil { - snapshot.logger.Errorf("failed to list bundles: %s", err.Error()) - snapshot.err = err - return + go func(ctx context.Context, hdr *snapshotHeader, source Source) { + defer hdr.m.Unlock() + c.sem <- struct{}{} + defer func() { <-c.sem }() + hdr.snapshot, hdr.err = source.Snapshot(ctx) + }(ctx, &hdr, sources[miss]) } - c.logger.WithField("catalog", snapshot.Key.String()).Debug("updating cache") - var operators []*Operator - for b := it.Next(); b != nil; b = it.Next() { - defaultChannel, ok := defaultChannels[b.PackageName] - if !ok { - if p, err := registry.GetPackage(ctx, b.PackageName); err != nil { - snapshot.logger.Warnf("failed to retrieve default channel for bundle, continuing: %v", err) - continue - } else { - defaultChannels[b.PackageName] = p.DefaultChannelName - defaultChannel = p.DefaultChannelName - } - } - o, err := NewOperatorFromBundle(b, "", snapshot.Key, defaultChannel) - if err != nil { - snapshot.logger.Warnf("failed to construct operator from bundle, continuing: %v", err) - continue - } - o.ProvidedAPIs = o.ProvidedAPIs.StripPlural() - o.RequiredAPIs = o.RequiredAPIs.StripPlural() - o.Replaces = b.Replaces - EnsurePackageProperty(o, b.PackageName, b.Version) - operators = append(operators, o) - } - if err := it.Error(); err != nil { - snapshot.logger.Warnf("error encountered while listing bundles: %s", err.Error()) - snapshot.err = err - } - snapshot.Operators = operators -} -func EnsurePackageProperty(o *Operator, name, version string) { - for _, p := range o.Properties { - if p.Type == opregistry.PackageType { - return - } - } - prop := opregistry.PackageProperty{ - PackageName: name, - Version: version, - } - bytes, err := json.Marshal(prop) - if err != nil { - return - } - o.Properties = append(o.Properties, &api.Property{ - Type: opregistry.PackageType, - Value: string(bytes), - }) + return &result } -func (c *NamespacedOperatorCache) Catalog(k registry.CatalogKey) OperatorFinder { +func (c *NamespacedOperatorCache) Catalog(k SourceKey) OperatorFinder { // all catalogs match the empty catalog if k.Empty() { return c } - if snapshot, ok := c.Snapshots[k]; ok { + if snapshot, ok := c.snapshots[k]; ok { return snapshot } return EmptyOperatorFinder{} } -func (c *NamespacedOperatorCache) FindPreferred(preferred *registry.CatalogKey, p ...OperatorPredicate) []*Operator { +func (c *NamespacedOperatorCache) FindPreferred(preferred *SourceKey, preferredNamespace string, p ...OperatorPredicate) []*Operator { var result []*Operator if preferred != nil && preferred.Empty() { preferred = nil } - sorted := NewSortableSnapshots(c.existing, preferred, c.Namespaces, c.Snapshots) + sorted := newSortableSnapshots(c.existing, preferred, preferredNamespace, c.snapshots) sort.Sort(sorted) for _, snapshot := range sorted.snapshots { result = append(result, snapshot.Find(p...)...) @@ -294,65 +274,71 @@ func (c *NamespacedOperatorCache) FindPreferred(preferred *registry.CatalogKey, return result } -func (c *NamespacedOperatorCache) WithExistingOperators(snapshot *CatalogSnapshot) MultiCatalogOperatorFinder { +func (c *NamespacedOperatorCache) WithExistingOperators(snapshot *Snapshot, namespace string) MultiCatalogOperatorFinder { + key := NewVirtualSourceKey(namespace) o := &NamespacedOperatorCache{ - Namespaces: c.Namespaces, - existing: &snapshot.Key, - Snapshots: c.Snapshots, + existing: &key, + snapshots: map[SourceKey]*snapshotHeader{ + key: { + key: key, + snapshot: snapshot, + }, + }, + } + for k, v := range c.snapshots { + o.snapshots[k] = v } - o.Snapshots[snapshot.Key] = snapshot return o } func (c *NamespacedOperatorCache) Find(p ...OperatorPredicate) []*Operator { - return c.FindPreferred(nil, p...) + return c.FindPreferred(nil, "", p...) +} + +type Snapshot struct { + Entries []*Operator } -type CatalogSnapshot struct { - logger logrus.FieldLogger - Key registry.CatalogKey - expiry time.Time - Operators []*Operator - m sync.RWMutex - pop context.CancelFunc - Priority catalogSourcePriority - err error +var _ Source = &Snapshot{} + +func (s *Snapshot) Snapshot(context.Context) (*Snapshot, error) { + return s, nil } -func (s *CatalogSnapshot) Cancel() { - s.pop() +type snapshotHeader struct { + snapshot *Snapshot + + key SourceKey + expiry time.Time + m sync.RWMutex + pop context.CancelFunc + err error + priority int } -func (s *CatalogSnapshot) Expired(at time.Time) bool { - return !at.Before(s.expiry) +func (hdr *snapshotHeader) Cancel() { + hdr.pop() } -// NewRunningOperatorSnapshot creates a CatalogSnapshot that represents a set of existing installed operators -// in the cluster. -func NewRunningOperatorSnapshot(logger logrus.FieldLogger, key registry.CatalogKey, o []*Operator) *CatalogSnapshot { - return &CatalogSnapshot{ - logger: logger, - Key: key, - Operators: o, - } +func (hdr *snapshotHeader) Valid(at time.Time) bool { + hdr.m.RLock() + defer hdr.m.RUnlock() + return hdr.snapshot != nil && hdr.err == nil && at.Before(hdr.expiry) } -type SortableSnapshots struct { - snapshots []*CatalogSnapshot - namespaces map[string]int - preferred *registry.CatalogKey - existing *registry.CatalogKey +type sortableSnapshots struct { + snapshots []*snapshotHeader + preferredNamespace string + preferred *SourceKey + existing *SourceKey } -func NewSortableSnapshots(existing, preferred *registry.CatalogKey, namespaces []string, snapshots map[registry.CatalogKey]*CatalogSnapshot) SortableSnapshots { - sorted := SortableSnapshots{ - existing: existing, - preferred: preferred, - snapshots: make([]*CatalogSnapshot, 0), - namespaces: make(map[string]int, 0), - } - for i, n := range namespaces { - sorted.namespaces[n] = i +func newSortableSnapshots(existing, preferred *SourceKey, preferredNamespace string, snapshots map[SourceKey]*snapshotHeader) sortableSnapshots { + sorted := sortableSnapshots{ + existing: existing, + preferred: preferred, + snapshots: make([]*snapshotHeader, 0), + preferredNamespace: preferredNamespace, } for _, s := range snapshots { sorted.snapshots = append(sorted.snapshots, s) @@ -360,60 +346,69 @@ func NewSortableSnapshots(existing, preferred *registry.CatalogKey, namespaces [ return sorted } -var _ sort.Interface = SortableSnapshots{} +var _ sort.Interface = sortableSnapshots{} // Len is the number of elements in the collection. -func (s SortableSnapshots) Len() int { +func (s sortableSnapshots) Len() int { return len(s.snapshots) } // Less reports whether the element with // index i should sort before the element with index j. -func (s SortableSnapshots) Less(i, j int) bool { +func (s sortableSnapshots) Less(i, j int) bool { // existing operators are preferred over catalog operators if s.existing != nil && - s.snapshots[i].Key.Name == s.existing.Name && - s.snapshots[i].Key.Namespace == s.existing.Namespace { + s.snapshots[i].key.Name == s.existing.Name && + s.snapshots[i].key.Namespace == s.existing.Namespace { return true } if s.existing != nil && - s.snapshots[j].Key.Name == s.existing.Name && - s.snapshots[j].Key.Namespace == s.existing.Namespace { + s.snapshots[j].key.Name == s.existing.Name && + s.snapshots[j].key.Namespace == s.existing.Namespace { return false } // preferred catalog is less than all other catalogs if s.preferred != nil && - s.snapshots[i].Key.Name == s.preferred.Name && - s.snapshots[i].Key.Namespace == s.preferred.Namespace { + s.snapshots[i].key.Name == s.preferred.Name && + s.snapshots[i].key.Namespace == s.preferred.Namespace { return true } if s.preferred != nil && - s.snapshots[j].Key.Name == s.preferred.Name && - s.snapshots[j].Key.Namespace == s.preferred.Namespace { + s.snapshots[j].key.Name == s.preferred.Name && + s.snapshots[j].key.Namespace == s.preferred.Namespace { return false } // the rest are sorted first on priority, namespace and then by name - if s.snapshots[i].Priority != s.snapshots[j].Priority { - return s.snapshots[i].Priority > s.snapshots[j].Priority + if s.snapshots[i].priority != s.snapshots[j].priority { + return s.snapshots[i].priority > s.snapshots[j].priority } - if s.snapshots[i].Key.Namespace != s.snapshots[j].Key.Namespace { - return s.namespaces[s.snapshots[i].Key.Namespace] < s.namespaces[s.snapshots[j].Key.Namespace] + + if s.snapshots[i].key.Namespace != s.snapshots[j].key.Namespace { + if s.snapshots[i].key.Namespace == s.preferredNamespace { + return true + } + if s.snapshots[j].key.Namespace == s.preferredNamespace { + return false + } } - return s.snapshots[i].Key.Name < s.snapshots[j].Key.Name + return s.snapshots[i].key.Name < s.snapshots[j].key.Name } // Swap swaps the elements with indexes i and j. -func (s SortableSnapshots) Swap(i, j int) { +func (s sortableSnapshots) Swap(i, j int) { s.snapshots[i], s.snapshots[j] = s.snapshots[j], s.snapshots[i] } -func (s *CatalogSnapshot) Find(p ...OperatorPredicate) []*Operator { +func (s *snapshotHeader) Find(p ...OperatorPredicate) []*Operator { s.m.RLock() defer s.m.RUnlock() - return Filter(s.Operators, p...) + if s.snapshot == nil { + return nil + } + return Filter(s.snapshot.Entries, p...) } type OperatorFinder interface { @@ -421,9 +416,9 @@ type OperatorFinder interface { } type MultiCatalogOperatorFinder interface { - Catalog(registry.CatalogKey) OperatorFinder - FindPreferred(*registry.CatalogKey, ...OperatorPredicate) []*Operator - WithExistingOperators(*CatalogSnapshot) MultiCatalogOperatorFinder + Catalog(SourceKey) OperatorFinder + FindPreferred(preferred *SourceKey, preferredNamespace string, predicates ...OperatorPredicate) []*Operator + WithExistingOperators(snapshot *Snapshot, namespace string) MultiCatalogOperatorFinder Error() error OperatorFinder } diff --git a/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/cache_test.go b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/cache_test.go index ecb4f14b24..f095456456 100644 --- a/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/cache_test.go +++ b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/cache_test.go @@ -4,113 +4,37 @@ import ( "context" "errors" "fmt" - "io" "math/rand" "strconv" "testing" "time" - "github.com/sirupsen/logrus" - "github.com/sirupsen/logrus/hooks/test" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry" - "github.com/operator-framework/operator-lifecycle-manager/pkg/lib/operatorlister" "github.com/operator-framework/operator-registry/pkg/api" - "github.com/operator-framework/operator-registry/pkg/client" - opregistry "github.com/operator-framework/operator-registry/pkg/registry" ) -type BundleStreamStub struct { - Bundles []*api.Bundle -} - -func (s *BundleStreamStub) Recv() (*api.Bundle, error) { - if len(s.Bundles) == 0 { - return nil, io.EOF - } - b := s.Bundles[0] - s.Bundles = s.Bundles[1:] - return b, nil -} - -type RegistryClientStub struct { - BundleIterator *client.BundleIterator - - ListBundlesError error -} - -func (s *RegistryClientStub) Get() (client.Interface, error) { - return s, nil -} - -func (s *RegistryClientStub) GetBundle(ctx context.Context, packageName, channelName, csvName string) (*api.Bundle, error) { - return nil, nil -} - -func (s *RegistryClientStub) GetBundleInPackageChannel(ctx context.Context, packageName, channelName string) (*api.Bundle, error) { - return nil, nil -} - -func (s *RegistryClientStub) GetReplacementBundleInPackageChannel(ctx context.Context, currentName, packageName, channelName string) (*api.Bundle, error) { - return nil, nil -} - -func (s *RegistryClientStub) GetBundleThatProvides(ctx context.Context, group, version, kind string) (*api.Bundle, error) { - return nil, nil -} - -func (s *RegistryClientStub) ListBundles(ctx context.Context) (*client.BundleIterator, error) { - return s.BundleIterator, s.ListBundlesError -} - -func (s *RegistryClientStub) GetPackage(ctx context.Context, packageName string) (*api.Package, error) { - return &api.Package{Name: packageName}, nil -} - -func (s *RegistryClientStub) HealthCheck(ctx context.Context, reconnectTimeout time.Duration) (bool, error) { - return false, nil -} - -func (s *RegistryClientStub) Close() error { - return nil -} - -type RegistryClientProviderStub map[registry.CatalogKey]client.Interface - -func (s RegistryClientProviderStub) ClientsForNamespaces(namespaces ...string) map[registry.CatalogKey]client.Interface { - return s -} - func TestOperatorCacheConcurrency(t *testing.T) { const ( NWorkers = 64 ) - rcp := RegistryClientProviderStub{} - catsrcLister := operatorlister.NewLister().OperatorsV1alpha1().CatalogSourceLister() - var keys []registry.CatalogKey + + sp := make(StaticSourceProvider) + var keys []SourceKey for i := 0; i < 128; i++ { for j := 0; j < 8; j++ { - key := registry.CatalogKey{Namespace: strconv.Itoa(i), Name: strconv.Itoa(j)} + key := SourceKey{Namespace: strconv.Itoa(i), Name: strconv.Itoa(j)} keys = append(keys, key) - rcp[key] = &RegistryClientStub{ - BundleIterator: client.NewBundleIterator(&BundleStreamStub{ - Bundles: []*api.Bundle{{ - CsvName: fmt.Sprintf("%s/%s", key.Namespace, key.Name), - ProvidedApis: []*api.GroupVersionKind{{ - Group: "g", - Version: "v1", - Kind: "K", - Plural: "ks", - }}, - }}, - }), + sp[key] = &Snapshot{ + Entries: []*Operator{ + {Name: fmt.Sprintf("%s/%s", key.Namespace, key.Name)}, + }, } } } - c := NewOperatorCache(rcp, logrus.New(), catsrcLister) + c := New(sp) errs := make(chan error) for w := 0; w < NWorkers; w++ { @@ -143,56 +67,52 @@ func TestOperatorCacheConcurrency(t *testing.T) { } func TestOperatorCacheExpiration(t *testing.T) { - rcp := RegistryClientProviderStub{} - catsrcLister := operatorlister.NewLister().OperatorsV1alpha1().CatalogSourceLister() - key := registry.CatalogKey{Namespace: "dummynamespace", Name: "dummyname"} - rcp[key] = &RegistryClientStub{ - BundleIterator: client.NewBundleIterator(&BundleStreamStub{ - Bundles: []*api.Bundle{{ - CsvName: "csvname", - ProvidedApis: []*api.GroupVersionKind{{ - Group: "g", - Version: "v1", - Kind: "K", - Plural: "ks", - }}, - }}, - }), - } - - c := NewOperatorCache(rcp, logrus.New(), catsrcLister) + key := SourceKey{Namespace: "dummynamespace", Name: "dummyname"} + ssp := make(StaticSourceProvider) + c := New(ssp) c.ttl = 0 // instantly stale - require.Len(t, c.Namespaced("dummynamespace").Catalog(key).Find(CSVNamePredicate("csvname")), 1) + ssp[key] = &Snapshot{ + Entries: []*Operator{ + {Name: "v1"}, + }, + } + require.Len(t, c.Namespaced("dummynamespace").Catalog(key).Find(CSVNamePredicate("v1")), 1) + + ssp[key] = &Snapshot{ + Entries: []*Operator{ + {Name: "v2"}, + }, + } + require.Len(t, c.Namespaced("dummynamespace").Catalog(key).Find(CSVNamePredicate("v1")), 0) } func TestOperatorCacheReuse(t *testing.T) { - rcp := RegistryClientProviderStub{} - catsrcLister := operatorlister.NewLister().OperatorsV1alpha1().CatalogSourceLister() - key := registry.CatalogKey{Namespace: "dummynamespace", Name: "dummyname"} - rcp[key] = &RegistryClientStub{ - BundleIterator: client.NewBundleIterator(&BundleStreamStub{ - Bundles: []*api.Bundle{{ - CsvName: "csvname", - ProvidedApis: []*api.GroupVersionKind{{ - Group: "g", - Version: "v1", - Kind: "K", - Plural: "ks", - }}, - }}, - }), - } + key := SourceKey{Namespace: "dummynamespace", Name: "dummyname"} + ssp := make(StaticSourceProvider) + c := New(ssp) - c := NewOperatorCache(rcp, logrus.New(), catsrcLister) + ssp[key] = &Snapshot{ + Entries: []*Operator{ + {Name: "v1"}, + }, + } + require.Len(t, c.Namespaced("dummynamespace").Catalog(key).Find(CSVNamePredicate("v1")), 1) - require.Len(t, c.Namespaced("dummynamespace").Catalog(key).Find(CSVNamePredicate("csvname")), 1) + ssp[key] = &Snapshot{ + Entries: []*Operator{ + {Name: "v2"}, + }, + } + require.Len(t, c.Namespaced("dummynamespace").Catalog(key).Find(CSVNamePredicate("v1")), 1) } -func TestCatalogSnapshotExpired(t *testing.T) { +func TestCatalogSnapshotValid(t *testing.T) { type tc struct { Name string Expiry time.Time + Snapshot *Snapshot + Error error At time.Time Expected bool } @@ -201,25 +121,51 @@ func TestCatalogSnapshotExpired(t *testing.T) { { Name: "after expiry", Expiry: time.Unix(0, 1), + Snapshot: &Snapshot{}, + Error: nil, At: time.Unix(0, 2), - Expected: true, + Expected: false, }, { Name: "before expiry", Expiry: time.Unix(0, 2), + Snapshot: &Snapshot{}, + Error: nil, + At: time.Unix(0, 1), + Expected: true, + }, + { + Name: "nil snapshot", + Expiry: time.Unix(0, 2), + Snapshot: nil, + Error: errors.New(""), + At: time.Unix(0, 1), + Expected: false, + }, + { + Name: "non-nil error", + Expiry: time.Unix(0, 2), + Snapshot: &Snapshot{}, + Error: errors.New(""), At: time.Unix(0, 1), Expected: false, }, { Name: "at expiry", Expiry: time.Unix(0, 1), + Snapshot: &Snapshot{}, + Error: nil, At: time.Unix(0, 1), - Expected: true, + Expected: false, }, } { t.Run(tt.Name, func(t *testing.T) { - s := CatalogSnapshot{expiry: tt.Expiry} - assert.Equal(t, tt.Expected, s.Expired(tt.At)) + s := snapshotHeader{ + expiry: tt.Expiry, + snapshot: tt.Snapshot, + err: tt.Error, + } + assert.Equal(t, tt.Expected, s.Valid(tt.At)) }) } @@ -287,7 +233,7 @@ func TestCatalogSnapshotFind(t *testing.T) { }, } { t.Run(tt.Name, func(t *testing.T) { - s := CatalogSnapshot{Operators: tt.Operators} + s := snapshotHeader{snapshot: &Snapshot{Entries: tt.Operators}} assert.Equal(t, tt.Expected, s.Find(tt.Predicate)) }) } @@ -295,69 +241,41 @@ func TestCatalogSnapshotFind(t *testing.T) { } func TestStripPluralRequiredAndProvidedAPIKeys(t *testing.T) { - rcp := RegistryClientProviderStub{} - catsrcLister := operatorlister.NewLister().OperatorsV1alpha1().CatalogSourceLister() - key := registry.CatalogKey{Namespace: "testnamespace", Name: "testname"} - rcp[key] = &RegistryClientStub{ - BundleIterator: client.NewBundleIterator(&BundleStreamStub{ - Bundles: []*api.Bundle{{ - CsvName: fmt.Sprintf("%s/%s", key.Namespace, key.Name), - ProvidedApis: []*api.GroupVersionKind{{ - Group: "g", - Version: "v1", - Kind: "K", - Plural: "ks", - }}, - RequiredApis: []*api.GroupVersionKind{{ - Group: "g2", - Version: "v2", - Kind: "K2", - Plural: "ks2", - }}, - Properties: APISetToProperties(map[opregistry.APIKey]struct{}{ - { - Group: "g", - Version: "v1", - Kind: "K", - Plural: "ks", - }: {}, - }, nil, false), - Dependencies: APISetToDependencies(map[opregistry.APIKey]struct{}{ - { - Group: "g2", - Version: "v2", - Kind: "K2", - Plural: "ks2", - }: {}, - }, nil), - }}, - }), - } - - c := NewOperatorCache(rcp, logrus.New(), catsrcLister) + key := SourceKey{Namespace: "testnamespace", Name: "testname"} + o, err := NewOperatorFromBundle(&api.Bundle{ + CsvName: fmt.Sprintf("%s/%s", key.Namespace, key.Name), + ProvidedApis: []*api.GroupVersionKind{{ + Group: "g", + Version: "v1", + Kind: "K", + Plural: "ks", + }}, + RequiredApis: []*api.GroupVersionKind{{ + Group: "g2", + Version: "v2", + Kind: "K2", + Plural: "ks2", + }}, + }, "", key, "") - nc := c.Namespaced("testnamespace") - result, err := AtLeast(1, nc.Find(ProvidingAPIPredicate(opregistry.APIKey{Group: "g", Version: "v1", Kind: "K"}))) assert.NoError(t, err) - assert.Equal(t, 1, len(result)) - assert.Equal(t, "K.v1.g", result[0].ProvidedAPIs.String()) - assert.Equal(t, "K2.v2.g2", result[0].RequiredAPIs.String()) + assert.Equal(t, "K.v1.g", o.ProvidedAPIs.String()) + assert.Equal(t, "K2.v2.g2", o.RequiredAPIs.String()) +} + +type ErrorSource struct { + Error error +} + +func (s ErrorSource) Snapshot(context.Context) (*Snapshot, error) { + return nil, s.Error } func TestNamespaceOperatorCacheError(t *testing.T) { - rcp := RegistryClientProviderStub{} - catsrcLister := operatorlister.NewLister().OperatorsV1alpha1().CatalogSourceLister() - key := registry.CatalogKey{Namespace: "dummynamespace", Name: "dummyname"} - rcp[key] = &RegistryClientStub{ - ListBundlesError: errors.New("testing"), - } + key := SourceKey{Namespace: "dummynamespace", Name: "dummyname"} + c := New(StaticSourceProvider{ + key: ErrorSource{Error: errors.New("testing")}, + }) - logger, _ := test.NewNullLogger() - c := NewOperatorCache(rcp, logger, catsrcLister) require.EqualError(t, c.Namespaced("dummynamespace").Error(), "error using catalog dummyname (in namespace dummynamespace): testing") - if snapshot, ok := c.snapshots[key]; !ok { - t.Fatalf("cache snapshot not found") - } else { - require.Zero(t, snapshot.expiry) - } } diff --git a/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/operators.go b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/operators.go index 1df76b270d..1c43077935 100644 --- a/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/operators.go +++ b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/operators.go @@ -11,7 +11,6 @@ import ( "k8s.io/apimachinery/pkg/runtime/schema" "github.com/operator-framework/api/pkg/operators/v1alpha1" - "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry" "github.com/operator-framework/operator-registry/pkg/api" opregistry "github.com/operator-framework/operator-registry/pkg/registry" ) @@ -194,7 +193,7 @@ type OperatorSourceInfo struct { Package string Channel string StartingCSV string - Catalog registry.CatalogKey + Catalog SourceKey DefaultChannel bool Subscription *v1alpha1.Subscription } @@ -203,7 +202,7 @@ func (i *OperatorSourceInfo) String() string { return fmt.Sprintf("%s/%s in %s/%s", i.Package, i.Channel, i.Catalog.Name, i.Catalog.Namespace) } -var NoCatalog = registry.CatalogKey{Name: "", Namespace: ""} +var NoCatalog = SourceKey{Name: "", Namespace: ""} var ExistingOperator = OperatorSourceInfo{Package: "", Channel: "", StartingCSV: "", Catalog: NoCatalog, DefaultChannel: false} type Operator struct { @@ -219,7 +218,7 @@ type Operator struct { Properties []*api.Property } -func NewOperatorFromBundle(bundle *api.Bundle, startingCSV string, sourceKey registry.CatalogKey, defaultChannel string) (*Operator, error) { +func NewOperatorFromBundle(bundle *api.Bundle, startingCSV string, sourceKey SourceKey, defaultChannel string) (*Operator, error) { parsedVersion, err := semver.ParseTolerant(bundle.Version) version := &parsedVersion if err != nil { diff --git a/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/operators_test.go b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/operators_test.go index cf46ad80f0..5337a5b25d 100644 --- a/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/operators_test.go +++ b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/operators_test.go @@ -11,7 +11,6 @@ import ( opver "github.com/operator-framework/api/pkg/lib/version" "github.com/operator-framework/api/pkg/operators/v1alpha1" - "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry" "github.com/operator-framework/operator-registry/pkg/api" opregistry "github.com/operator-framework/operator-registry/pkg/registry" ) @@ -713,7 +712,7 @@ func TestCatalogKey_String(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - k := ®istry.CatalogKey{ + k := &SourceKey{ Name: tt.fields.Name, Namespace: tt.fields.Namespace, } @@ -878,7 +877,7 @@ func TestOperatorSourceInfo_String(t *testing.T) { i := &OperatorSourceInfo{ Package: tt.fields.Package, Channel: tt.fields.Channel, - Catalog: registry.CatalogKey{Name: tt.fields.CatalogSource, Namespace: tt.fields.CatalogSourceNamespace}, + Catalog: SourceKey{Name: tt.fields.CatalogSource, Namespace: tt.fields.CatalogSourceNamespace}, } if got := i.String(); got != tt.want { t.Errorf("OperatorSourceInfo.String() = %v, want %v", got, tt.want) @@ -1060,7 +1059,7 @@ func TestNewOperatorFromBundle(t *testing.T) { type args struct { bundle *api.Bundle - sourceKey registry.CatalogKey + sourceKey SourceKey replaces string defaultChannel string } @@ -1074,7 +1073,7 @@ func TestNewOperatorFromBundle(t *testing.T) { name: "BundleNoAPIs", args: args{ bundle: bundleNoAPIs, - sourceKey: registry.CatalogKey{Name: "source", Namespace: "testNamespace"}, + sourceKey: SourceKey{Name: "source", Namespace: "testNamespace"}, }, want: &Operator{ Name: "testBundle", @@ -1085,7 +1084,7 @@ func TestNewOperatorFromBundle(t *testing.T) { SourceInfo: &OperatorSourceInfo{ Package: "testPackage", Channel: "testChannel", - Catalog: registry.CatalogKey{Name: "source", Namespace: "testNamespace"}, + Catalog: SourceKey{Name: "source", Namespace: "testNamespace"}, }, }, }, @@ -1093,7 +1092,7 @@ func TestNewOperatorFromBundle(t *testing.T) { name: "BundleWithAPIs", args: args{ bundle: bundleWithAPIs, - sourceKey: registry.CatalogKey{Name: "source", Namespace: "testNamespace"}, + sourceKey: SourceKey{Name: "source", Namespace: "testNamespace"}, }, want: &Operator{ Name: "testBundle", @@ -1148,7 +1147,7 @@ func TestNewOperatorFromBundle(t *testing.T) { SourceInfo: &OperatorSourceInfo{ Package: "testPackage", Channel: "testChannel", - Catalog: registry.CatalogKey{Name: "source", Namespace: "testNamespace"}, + Catalog: SourceKey{Name: "source", Namespace: "testNamespace"}, }, }, }, @@ -1156,7 +1155,7 @@ func TestNewOperatorFromBundle(t *testing.T) { name: "BundleIgnoreCSV", args: args{ bundle: bundleWithAPIsUnextracted, - sourceKey: registry.CatalogKey{Name: "source", Namespace: "testNamespace"}, + sourceKey: SourceKey{Name: "source", Namespace: "testNamespace"}, }, want: &Operator{ Name: "testBundle", @@ -1166,7 +1165,7 @@ func TestNewOperatorFromBundle(t *testing.T) { SourceInfo: &OperatorSourceInfo{ Package: "testPackage", Channel: "testChannel", - Catalog: registry.CatalogKey{Name: "source", Namespace: "testNamespace"}, + Catalog: SourceKey{Name: "source", Namespace: "testNamespace"}, }, }, }, @@ -1174,7 +1173,7 @@ func TestNewOperatorFromBundle(t *testing.T) { name: "BundleInDefaultChannel", args: args{ bundle: bundleNoAPIs, - sourceKey: registry.CatalogKey{Name: "source", Namespace: "testNamespace"}, + sourceKey: SourceKey{Name: "source", Namespace: "testNamespace"}, defaultChannel: "testChannel", }, want: &Operator{ @@ -1186,7 +1185,7 @@ func TestNewOperatorFromBundle(t *testing.T) { SourceInfo: &OperatorSourceInfo{ Package: "testPackage", Channel: "testChannel", - Catalog: registry.CatalogKey{Name: "source", Namespace: "testNamespace"}, + Catalog: SourceKey{Name: "source", Namespace: "testNamespace"}, DefaultChannel: true, }, }, @@ -1195,7 +1194,7 @@ func TestNewOperatorFromBundle(t *testing.T) { name: "BundleWithPropertiesAndDependencies", args: args{ bundle: bundleWithPropsAndDeps, - sourceKey: registry.CatalogKey{Name: "source", Namespace: "testNamespace"}, + sourceKey: SourceKey{Name: "source", Namespace: "testNamespace"}, }, want: &Operator{ Name: "testBundle", @@ -1224,7 +1223,7 @@ func TestNewOperatorFromBundle(t *testing.T) { SourceInfo: &OperatorSourceInfo{ Package: "testPackage", Channel: "testChannel", - Catalog: registry.CatalogKey{Name: "source", Namespace: "testNamespace"}, + Catalog: SourceKey{Name: "source", Namespace: "testNamespace"}, }, }, }, diff --git a/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/predicates.go b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/predicates.go index 7e8649d5dc..292dda4805 100644 --- a/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/predicates.go +++ b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/predicates.go @@ -7,7 +7,6 @@ import ( "github.com/blang/semver/v4" - "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry" "github.com/operator-framework/operator-registry/pkg/api" opregistry "github.com/operator-framework/operator-registry/pkg/registry" ) @@ -140,10 +139,10 @@ func (l labelPredicate) String() string { } type catalogPredicate struct { - key registry.CatalogKey + key SourceKey } -func CatalogPredicate(key registry.CatalogKey) OperatorPredicate { +func CatalogPredicate(key SourceKey) OperatorPredicate { return catalogPredicate{key: key} } diff --git a/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/installabletypes.go b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/installabletypes.go index ba9cd602bf..695c2b07ab 100644 --- a/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/installabletypes.go +++ b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/installabletypes.go @@ -4,7 +4,6 @@ import ( "fmt" "strings" - "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry" "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/cache" "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/solver" operatorregistry "github.com/operator-framework/operator-registry/pkg/registry" @@ -37,13 +36,13 @@ func (i *BundleInstallable) AddConstraint(c solver.Constraint) { i.constraints = append(i.constraints, c) } -func (i *BundleInstallable) BundleSourceInfo() (string, string, registry.CatalogKey, error) { +func (i *BundleInstallable) BundleSourceInfo() (string, string, cache.SourceKey, error) { info := strings.Split(i.identifier.String(), "/") // This should be enforced by Kube naming constraints if len(info) != 4 { - return "", "", registry.CatalogKey{}, fmt.Errorf("Unable to parse identifier %s for source info", i.identifier) + return "", "", cache.SourceKey{}, fmt.Errorf("Unable to parse identifier %s for source info", i.identifier) } - catalog := registry.CatalogKey{ + catalog := cache.SourceKey{ Name: info[0], Namespace: info[1], } @@ -52,7 +51,7 @@ func (i *BundleInstallable) BundleSourceInfo() (string, string, registry.Catalog return csvName, channel, catalog, nil } -func bundleId(bundle, channel string, catalog registry.CatalogKey) solver.Identifier { +func bundleId(bundle, channel string, catalog cache.SourceKey) solver.Identifier { return solver.IdentifierFromString(fmt.Sprintf("%s/%s/%s", catalog.String(), channel, bundle)) } diff --git a/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/instrumented_resolver.go b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/instrumented_resolver.go index d8af9350cd..453ae4a0b8 100644 --- a/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/instrumented_resolver.go +++ b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/instrumented_resolver.go @@ -4,8 +4,7 @@ import ( "time" "github.com/operator-framework/api/pkg/operators/v1alpha1" - - "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry" + "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/cache" ) type InstrumentedResolver struct { @@ -35,6 +34,6 @@ func (ir *InstrumentedResolver) ResolveSteps(namespace string) ([]*v1alpha1.Step return steps, lookups, subs, err } -func (ir *InstrumentedResolver) Expire(key registry.CatalogKey) { +func (ir *InstrumentedResolver) Expire(key cache.SourceKey) { ir.resolver.Expire(key) } diff --git a/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/instrumented_resolver_test.go b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/instrumented_resolver_test.go index 4b4c57fcf0..3b0aa0d59a 100644 --- a/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/instrumented_resolver_test.go +++ b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/instrumented_resolver_test.go @@ -5,9 +5,8 @@ import ( "testing" "time" - "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry" - "github.com/operator-framework/api/pkg/operators/v1alpha1" + "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/cache" "github.com/stretchr/testify/require" ) @@ -24,14 +23,14 @@ func (r *fakeResolverWithError) ResolveSteps(namespace string) ([]*v1alpha1.Step return nil, nil, nil, errors.New("Fake error") } -func (r *fakeResolverWithError) Expire(key registry.CatalogKey) { +func (r *fakeResolverWithError) Expire(key cache.SourceKey) { } func (r *fakeResolverWithoutError) ResolveSteps(namespace string) ([]*v1alpha1.Step, []v1alpha1.BundleLookup, []*v1alpha1.Subscription, error) { return nil, nil, nil, nil } -func (r *fakeResolverWithoutError) Expire(key registry.CatalogKey) { +func (r *fakeResolverWithoutError) Expire(key cache.SourceKey) { } func newFakeResolverWithError() *fakeResolverWithError { diff --git a/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/resolver.go b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/resolver.go index 06d9c10c71..38e779acd3 100644 --- a/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/resolver.go +++ b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/resolver.go @@ -13,7 +13,6 @@ import ( "github.com/operator-framework/api/pkg/operators/v1alpha1" v1alpha1listers "github.com/operator-framework/operator-lifecycle-manager/pkg/api/client/listers/operators/v1alpha1" - "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry" "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/cache" "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/projection" "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/solver" @@ -30,10 +29,10 @@ type SatResolver struct { log logrus.FieldLogger } -func NewDefaultSatResolver(rcp cache.RegistryClientProvider, catsrcLister v1alpha1listers.CatalogSourceLister, log logrus.FieldLogger) *SatResolver { +func NewDefaultSatResolver(rcp cache.SourceProvider, catsrcLister v1alpha1listers.CatalogSourceLister, logger logrus.FieldLogger) *SatResolver { return &SatResolver{ - cache: cache.NewOperatorCache(rcp, log, catsrcLister), - log: log, + cache: cache.New(rcp, cache.WithLogger(logger), cache.WithCatalogSourceLister(catsrcLister)), + log: logger, } } @@ -61,9 +60,9 @@ func (r *SatResolver) SolveOperators(namespaces []string, csvs []*v1alpha1.Clust if err != nil { return nil, err } - namespacedCache := r.cache.Namespaced(namespaces...).WithExistingOperators(existingSnapshot) + namespacedCache := r.cache.Namespaced(namespaces...).WithExistingOperators(existingSnapshot, namespaces[0]) - _, existingInstallables, err := r.getBundleInstallables(registry.NewVirtualCatalogKey(namespaces[0]), existingSnapshot.Find(), namespacedCache, visited) + _, existingInstallables, err := r.getBundleInstallables(namespaces[0], cache.Filter(existingSnapshot.Entries, cache.True()), namespacedCache, visited) if err != nil { return nil, err } @@ -177,7 +176,7 @@ func (r *SatResolver) getSubscriptionInstallables(sub *v1alpha1.Subscription, cu var cachePredicates, channelPredicates []cache.OperatorPredicate installables := make(map[solver.Identifier]solver.Installable, 0) - catalog := registry.CatalogKey{ + catalog := cache.SourceKey{ Name: sub.Spec.CatalogSource, Namespace: sub.Spec.CatalogSourceNamespace, } @@ -259,7 +258,7 @@ func (r *SatResolver) getSubscriptionInstallables(sub *v1alpha1.Subscription, cu for _, o := range cache.Filter(sortedBundles, channelPredicates...) { predicates := append(cachePredicates, cache.CSVNamePredicate(o.Name)) stack := namespacedCache.Catalog(catalog).Find(predicates...) - id, installable, err := r.getBundleInstallables(catalog, stack, namespacedCache, visited) + id, installable, err := r.getBundleInstallables(sub.Namespace, stack, namespacedCache, visited) if err != nil { return nil, err } @@ -288,12 +287,12 @@ func (r *SatResolver) getSubscriptionInstallables(sub *v1alpha1.Subscription, cu // safe to remove this conflict if properties // annotations are made mandatory for // resolution. - c.AddConflict(bundleId(current.Name, current.Channel(), registry.NewVirtualCatalogKey(sub.GetNamespace()))) + c.AddConflict(bundleId(current.Name, current.Channel(), cache.NewVirtualSourceKey(sub.GetNamespace()))) } depIds = append(depIds, c.Identifier()) } if current != nil { - depIds = append(depIds, bundleId(current.Name, current.Channel(), registry.NewVirtualCatalogKey(sub.GetNamespace()))) + depIds = append(depIds, bundleId(current.Name, current.Channel(), cache.NewVirtualSourceKey(sub.GetNamespace()))) } // all candidates added as options for this constraint @@ -303,7 +302,7 @@ func (r *SatResolver) getSubscriptionInstallables(sub *v1alpha1.Subscription, cu return installables, nil } -func (r *SatResolver) getBundleInstallables(catalog registry.CatalogKey, bundleStack []*cache.Operator, namespacedCache cache.MultiCatalogOperatorFinder, visited map[*cache.Operator]*BundleInstallable) (map[solver.Identifier]struct{}, map[solver.Identifier]*BundleInstallable, error) { +func (r *SatResolver) getBundleInstallables(preferredNamespace string, bundleStack []*cache.Operator, namespacedCache cache.MultiCatalogOperatorFinder, visited map[*cache.Operator]*BundleInstallable) (map[solver.Identifier]struct{}, map[solver.Identifier]*BundleInstallable, error) { errs := make([]error, 0) installables := make(map[solver.Identifier]*BundleInstallable, 0) // all installables, including dependencies @@ -370,7 +369,8 @@ func (r *SatResolver) getBundleInstallables(catalog registry.CatalogKey, bundleS )) } } - sortedBundles, err := r.sortBundles(namespacedCache.FindPreferred(&bundle.SourceInfo.Catalog, sourcePredicate)) + + sortedBundles, err := r.sortBundles(namespacedCache.FindPreferred(&bundle.SourceInfo.Catalog, preferredNamespace, sourcePredicate)) if err != nil { errs = append(errs, err) continue @@ -422,7 +422,7 @@ func (r *SatResolver) inferProperties(csv *v1alpha1.ClusterServiceVersion, subs // package against catalog contents, updates to the // Subscription spec could result in a bad package // inference. - for _, entry := range r.cache.Namespaced(sub.Namespace).Catalog(registry.CatalogKey{Namespace: sub.Spec.CatalogSourceNamespace, Name: sub.Spec.CatalogSource}).Find(cache.And(cache.CSVNamePredicate(csv.Name), cache.PkgPredicate(sub.Spec.Package))) { + for _, entry := range r.cache.Namespaced(sub.Spec.CatalogSourceNamespace).Catalog(cache.SourceKey{Namespace: sub.Spec.CatalogSourceNamespace, Name: sub.Spec.CatalogSource}).Find(cache.And(cache.CSVNamePredicate(csv.Name), cache.PkgPredicate(sub.Spec.Package))) { if pkg := entry.Package(); pkg != "" { packages[pkg] = struct{}{} } @@ -455,8 +455,8 @@ func (r *SatResolver) inferProperties(csv *v1alpha1.ClusterServiceVersion, subs return properties, nil } -func (r *SatResolver) newSnapshotForNamespace(namespace string, subs []*v1alpha1.Subscription, csvs []*v1alpha1.ClusterServiceVersion) (*cache.CatalogSnapshot, error) { - existingOperatorCatalog := registry.NewVirtualCatalogKey(namespace) +func (r *SatResolver) newSnapshotForNamespace(namespace string, subs []*v1alpha1.Subscription, csvs []*v1alpha1.ClusterServiceVersion) (*cache.Snapshot, error) { + existingOperatorCatalog := cache.NewVirtualSourceKey(namespace) // build a catalog snapshot of CSVs without subscriptions csvSubscriptions := make(map[*v1alpha1.ClusterServiceVersion]*v1alpha1.Subscription) for _, sub := range subs { @@ -517,7 +517,7 @@ func (r *SatResolver) newSnapshotForNamespace(namespace string, subs []*v1alpha1 r.log.Infof("considered csvs without properties annotation during resolution: %v", names) } - return cache.NewRunningOperatorSnapshot(r.log, existingOperatorCatalog, standaloneOperators), nil + return &cache.Snapshot{Entries: standaloneOperators}, nil } func (r *SatResolver) addInvariants(namespacedCache cache.MultiCatalogOperatorFinder, installables map[solver.Identifier]solver.Installable) { @@ -579,17 +579,17 @@ func (r *SatResolver) addInvariants(namespacedCache cache.MultiCatalogOperatorFi func (r *SatResolver) sortBundles(bundles []*cache.Operator) ([]*cache.Operator, error) { // assume bundles have been passed in sorted by catalog already - catalogOrder := make([]registry.CatalogKey, 0) + catalogOrder := make([]cache.SourceKey, 0) type PackageChannel struct { Package, Channel string DefaultChannel bool } // TODO: for now channels will be sorted lexicographically - channelOrder := make(map[registry.CatalogKey][]PackageChannel) + channelOrder := make(map[cache.SourceKey][]PackageChannel) // partition by catalog -> channel -> bundle - partitionedBundles := map[registry.CatalogKey]map[PackageChannel][]*cache.Operator{} + partitionedBundles := map[cache.SourceKey]map[PackageChannel][]*cache.Operator{} for _, b := range bundles { pc := PackageChannel{ Package: b.Package(), diff --git a/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/resolver_test.go b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/resolver_test.go index a686cbdcf1..1d80b0cd13 100644 --- a/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/resolver_test.go +++ b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/resolver_test.go @@ -12,10 +12,11 @@ import ( "github.com/stretchr/testify/require" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/labels" "github.com/operator-framework/api/pkg/lib/version" "github.com/operator-framework/api/pkg/operators/v1alpha1" - "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry" + listersv1alpha1 "github.com/operator-framework/operator-lifecycle-manager/pkg/api/client/listers/operators/v1alpha1" "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/cache" "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/solver" "github.com/operator-framework/operator-registry/pkg/api" @@ -27,7 +28,7 @@ func TestSolveOperators(t *testing.T) { Provides := APISet const namespace = "test-namespace" - catalog := registry.CatalogKey{Name: "test-catalog", Namespace: namespace} + catalog := cache.SourceKey{Name: "test-catalog", Namespace: namespace} csv := existingOperator(namespace, "packageA.v1", "packageA", "alpha", "", Provides, nil, nil, nil) csvs := []*v1alpha1.ClusterServiceVersion{csv} @@ -35,20 +36,16 @@ func TestSolveOperators(t *testing.T) { newSub := newSub(namespace, "packageB", "alpha", catalog) subs := []*v1alpha1.Subscription{sub, newSub} - fakeNamespacedOperatorCache := cache.NamespacedOperatorCache{ - Snapshots: map[registry.CatalogKey]*cache.CatalogSnapshot{ - catalog: { - Key: catalog, - Operators: []*cache.Operator{ + satResolver := SatResolver{ + cache: cache.New(cache.StaticSourceProvider{ + catalog: &cache.Snapshot{ + Entries: []*cache.Operator{ genOperator("packageA.v1", "0.0.1", "", "packageA", "alpha", catalog.Name, catalog.Namespace, nil, nil, nil, "", false), genOperator("packageB.v1", "1.0.1", "", "packageB", "alpha", catalog.Name, catalog.Namespace, nil, nil, nil, "", false), }, }, - }, - } - satResolver := SatResolver{ - cache: getFakeOperatorCache(fakeNamespacedOperatorCache), - log: logrus.New(), + }), + log: logrus.New(), } operators, err := satResolver.SolveOperators([]string{namespace}, csvs, subs) @@ -62,27 +59,23 @@ func TestSolveOperators(t *testing.T) { func TestDisjointChannelGraph(t *testing.T) { const namespace = "test-namespace" - catalog := registry.CatalogKey{Name: "test-catalog", Namespace: namespace} + catalog := cache.SourceKey{Name: "test-catalog", Namespace: namespace} newSub := newSub(namespace, "packageA", "alpha", catalog) subs := []*v1alpha1.Subscription{newSub} - fakeNamespacedOperatorCache := cache.NamespacedOperatorCache{ - Snapshots: map[registry.CatalogKey]*cache.CatalogSnapshot{ - catalog: { - Key: catalog, - Operators: []*cache.Operator{ + satResolver := SatResolver{ + cache: cache.New(cache.StaticSourceProvider{ + catalog: &cache.Snapshot{ + Entries: []*cache.Operator{ genOperator("packageA.side1.v1", "0.0.1", "", "packageA", "alpha", catalog.Name, catalog.Namespace, nil, nil, nil, "", false), genOperator("packageA.side1.v2", "0.0.2", "packageA.side1.v1", "packageA", "alpha", catalog.Name, catalog.Namespace, nil, nil, nil, "", false), genOperator("packageA.side2.v1", "1.0.0", "", "packageA", "alpha", catalog.Name, catalog.Namespace, nil, nil, nil, "", false), genOperator("packageA.side2.v2", "2.0.0", "packageA.side2.v1", "packageA", "alpha", catalog.Name, catalog.Namespace, nil, nil, nil, "", false), }, }, - }, - } - satResolver := SatResolver{ - cache: getFakeOperatorCache(fakeNamespacedOperatorCache), - log: logrus.New(), + }), + log: logrus.New(), } _, err := satResolver.SolveOperators([]string{namespace}, nil, subs) @@ -93,7 +86,7 @@ func TestPropertiesAnnotationHonored(t *testing.T) { const ( namespace = "olm" ) - community := registry.CatalogKey{"community", namespace} + community := cache.SourceKey{"community", namespace} csv := existingOperator(namespace, "packageA.v1", "packageA", "alpha", "", nil, nil, nil, nil) csv.Annotations = map[string]string{"operatorframework.io/properties": `{"properties":[{"type":"olm.package","value":{"packageName":"packageA","version":"1.0.0"}}]}`} @@ -104,17 +97,13 @@ func TestPropertiesAnnotationHonored(t *testing.T) { b := genOperator("packageB.v1", "1.0.1", "", "packageB", "alpha", "community", "olm", nil, nil, []*api.Dependency{{Type: "olm.package", Value: `{"packageName":"packageA","version":"1.0.0"}`}}, "", false) - fakeNamespacedOperatorCache := cache.NamespacedOperatorCache{ - Snapshots: map[registry.CatalogKey]*cache.CatalogSnapshot{ - community: { - Key: community, - Operators: []*cache.Operator{b}, - }, - }, - } satResolver := SatResolver{ - cache: getFakeOperatorCache(fakeNamespacedOperatorCache), - log: logrus.New(), + cache: cache.New(cache.StaticSourceProvider{ + community: &cache.Snapshot{ + Entries: []*cache.Operator{b}, + }, + }), + log: logrus.New(), } operators, err := satResolver.SolveOperators([]string{"olm"}, csvs, subs) @@ -131,7 +120,7 @@ func TestSolveOperators_MultipleChannels(t *testing.T) { Provides := APISet namespace := "olm" - catalog := registry.CatalogKey{"community", namespace} + catalog := cache.SourceKey{"community", namespace} csv := existingOperator(namespace, "packageA.v1", "packageA", "alpha", "", Provides, nil, nil, nil) csvs := []*v1alpha1.ClusterServiceVersion{csv} @@ -139,21 +128,17 @@ func TestSolveOperators_MultipleChannels(t *testing.T) { newSub := newSub(namespace, "packageB", "alpha", catalog) subs := []*v1alpha1.Subscription{sub, newSub} - fakeNamespacedOperatorCache := cache.NamespacedOperatorCache{ - Snapshots: map[registry.CatalogKey]*cache.CatalogSnapshot{ - catalog: { - Key: catalog, - Operators: []*cache.Operator{ + satResolver := SatResolver{ + cache: cache.New(cache.StaticSourceProvider{ + catalog: &cache.Snapshot{ + Entries: []*cache.Operator{ genOperator("packageA.v1", "0.0.1", "", "packageA", "alpha", "community", "olm", nil, nil, nil, "", false), genOperator("packageB.v1", "1.0.0", "", "packageB", "alpha", "community", "olm", nil, nil, nil, "", false), genOperator("packageB.v1", "1.0.0", "", "packageB", "beta", "community", "olm", nil, nil, nil, "", false), }, }, - }, - } - satResolver := SatResolver{ - cache: getFakeOperatorCache(fakeNamespacedOperatorCache), - log: logrus.New(), + }), + log: logrus.New(), } operators, err := satResolver.SolveOperators([]string{"olm"}, csvs, subs) @@ -172,7 +157,7 @@ func TestSolveOperators_FindLatestVersion(t *testing.T) { Provides := APISet namespace := "olm" - catalog := registry.CatalogKey{"community", namespace} + catalog := cache.SourceKey{"community", namespace} csv := existingOperator(namespace, "packageA.v1", "packageA", "alpha", "", Provides, nil, nil, nil) csvs := []*v1alpha1.ClusterServiceVersion{csv} @@ -180,28 +165,21 @@ func TestSolveOperators_FindLatestVersion(t *testing.T) { newSub := newSub(namespace, "packageB", "alpha", catalog) subs := []*v1alpha1.Subscription{sub, newSub} - fakeNamespacedOperatorCache := cache.NamespacedOperatorCache{ - Snapshots: map[registry.CatalogKey]*cache.CatalogSnapshot{ - registry.CatalogKey{ + satResolver := SatResolver{ + cache: cache.New(cache.StaticSourceProvider{ + cache.SourceKey{ Namespace: "olm", Name: "community", - }: { - Key: registry.CatalogKey{ - Namespace: "olm", - Name: "community", - }, - Operators: []*cache.Operator{ + }: &cache.Snapshot{ + Entries: []*cache.Operator{ genOperator("packageA.v1.0.1", "1.0.1", "packageA.v1", "packageA", "alpha", "community", "olm", nil, nil, nil, "", false), genOperator("packageB.v0.9.0", "0.9.0", "", "packageB", "alpha", "community", "olm", nil, nil, nil, "", false), genOperator("packageB.v1.0.0", "1.0.0", "packageB.v0.9.0", "packageB", "alpha", "community", "olm", nil, nil, nil, "", false), genOperator("packageB.v1.0.1", "1.0.1", "packageB.v1.0.0", "packageB", "alpha", "community", "olm", nil, nil, nil, "", false), }, }, - }, - } - satResolver := SatResolver{ - cache: getFakeOperatorCache(fakeNamespacedOperatorCache), - log: logrus.New(), + }), + log: logrus.New(), } operators, err := satResolver.SolveOperators([]string{"olm"}, csvs, subs) @@ -226,7 +204,7 @@ func TestSolveOperators_FindLatestVersionWithDependencies(t *testing.T) { Provides := APISet namespace := "olm" - catalog := registry.CatalogKey{"community", namespace} + catalog := cache.SourceKey{"community", namespace} csv := existingOperator(namespace, "packageA.v1", "packageA", "alpha", "", Provides, nil, nil, nil) csvs := []*v1alpha1.ClusterServiceVersion{csv} @@ -245,17 +223,10 @@ func TestSolveOperators_FindLatestVersionWithDependencies(t *testing.T) { }, } - fakeNamespacedOperatorCache := cache.NamespacedOperatorCache{ - Snapshots: map[registry.CatalogKey]*cache.CatalogSnapshot{ - registry.CatalogKey{ - Namespace: "olm", - Name: "community", - }: { - Key: registry.CatalogKey{ - Namespace: "olm", - Name: "community", - }, - Operators: []*cache.Operator{ + satResolver := SatResolver{ + cache: cache.New(cache.StaticSourceProvider{ + catalog: &cache.Snapshot{ + Entries: []*cache.Operator{ genOperator("packageA.v1.0.1", "1.0.1", "packageA.v1", "packageA", "alpha", "community", "olm", nil, nil, nil, "", false), genOperator("packageB.v0.9.0", "0.9.0", "", "packageB", "alpha", "community", "olm", nil, nil, nil, "", false), genOperator("packageB.v1.0.0", "1.0.0", "packageB.v0.9.0", "packageB", "alpha", "community", "olm", nil, nil, nil, "", false), @@ -267,11 +238,8 @@ func TestSolveOperators_FindLatestVersionWithDependencies(t *testing.T) { genOperator("packageD.v1.0.2", "1.0.2", "packageD.v1.0.1", "packageD", "alpha", "community", "olm", nil, nil, nil, "", false), }, }, - }, - } - satResolver := SatResolver{ - cache: getFakeOperatorCache(fakeNamespacedOperatorCache), - log: logrus.New(), + }), + log: logrus.New(), } operators, err := satResolver.SolveOperators([]string{"olm"}, csvs, subs) @@ -295,7 +263,7 @@ func TestSolveOperators_FindLatestVersionWithNestedDependencies(t *testing.T) { Provides := APISet namespace := "olm" - catalog := registry.CatalogKey{"community", namespace} + catalog := cache.SourceKey{"community", namespace} csv := existingOperator(namespace, "packageA.v1", "packageA", "alpha", "", Provides, nil, nil, nil) csvs := []*v1alpha1.ClusterServiceVersion{csv} @@ -320,17 +288,10 @@ func TestSolveOperators_FindLatestVersionWithNestedDependencies(t *testing.T) { }, } - fakeNamespacedOperatorCache := cache.NamespacedOperatorCache{ - Snapshots: map[registry.CatalogKey]*cache.CatalogSnapshot{ - registry.CatalogKey{ - Namespace: "olm", - Name: "community", - }: { - Key: registry.CatalogKey{ - Namespace: "olm", - Name: "community", - }, - Operators: []*cache.Operator{ + satResolver := SatResolver{ + cache: cache.New(cache.StaticSourceProvider{ + catalog: &cache.Snapshot{ + Entries: []*cache.Operator{ genOperator("packageA.v1.0.1", "1.0.1", "packageA.v1", "packageA", "alpha", "community", "olm", nil, nil, nil, "", false), genOperator("packageB.v0.9.0", "0.9.0", "", "packageB", "alpha", "community", "olm", nil, nil, nil, "", false), genOperator("packageB.v1.0.0", "1.0.0", "packageB.v0.9.0", "packageB", "alpha", "community", "olm", nil, nil, nil, "", false), @@ -342,11 +303,8 @@ func TestSolveOperators_FindLatestVersionWithNestedDependencies(t *testing.T) { genOperator("packageE.v1.0.0", "1.0.0", "", "packageE", "alpha", "community", "olm", nil, nil, nil, "", false), }, }, - }, - } - satResolver := SatResolver{ - cache: getFakeOperatorCache(fakeNamespacedOperatorCache), - log: logrus.New(), + }), + log: logrus.New(), } operators, err := satResolver.SolveOperators([]string{"olm"}, csvs, subs) @@ -366,6 +324,40 @@ func TestSolveOperators_FindLatestVersionWithNestedDependencies(t *testing.T) { } } +type stubCatalogSourceLister struct { + catsrcs []*v1alpha1.CatalogSource + namespace string +} + +func (l *stubCatalogSourceLister) List(labels.Selector) ([]*v1alpha1.CatalogSource, error) { + if l.namespace == "" { + return l.catsrcs, nil + } + var result []*v1alpha1.CatalogSource + for _, cs := range l.catsrcs { + if cs.Namespace == l.namespace { + result = append(result, cs) + } + } + return result, nil +} + +func (l *stubCatalogSourceLister) Get(name string) (*v1alpha1.CatalogSource, error) { + for _, cs := range l.catsrcs { + if cs.Name == name { + return cs, nil + } + } + return nil, errors.New("stub not found") +} + +func (l *stubCatalogSourceLister) CatalogSources(namespace string) listersv1alpha1.CatalogSourceNamespaceLister { + return &stubCatalogSourceLister{ + catsrcs: l.catsrcs, + namespace: namespace, + } +} + func TestSolveOperators_CatsrcPrioritySorting(t *testing.T) { opToAddVersionDeps := []*api.Dependency{ { @@ -375,58 +367,45 @@ func TestSolveOperators_CatsrcPrioritySorting(t *testing.T) { } namespace := "olm" - customCatalog := registry.CatalogKey{"community", namespace} + customCatalog := cache.SourceKey{"community", namespace} newSub := newSub(namespace, "packageA", "alpha", customCatalog) subs := []*v1alpha1.Subscription{newSub} - fakeNamespacedOperatorCache := cache.NamespacedOperatorCache{ - Snapshots: map[registry.CatalogKey]*cache.CatalogSnapshot{ - registry.CatalogKey{ - Namespace: "olm", - Name: "community", - }: { - Key: registry.CatalogKey{ - Namespace: "olm", - Name: "community", - }, - Operators: []*cache.Operator{ - genOperator("packageA.v1", "0.0.1", "", "packageA", "alpha", "community", namespace, nil, - nil, opToAddVersionDeps, "", false), - }, + ssp := cache.StaticSourceProvider{ + cache.SourceKey{Namespace: "olm", Name: "community"}: &cache.Snapshot{ + Entries: []*cache.Operator{ + genOperator("packageA.v1", "0.0.1", "", "packageA", "alpha", "community", namespace, nil, + nil, opToAddVersionDeps, "", false), }, - registry.CatalogKey{ - Namespace: "olm", - Name: "community-operator", - }: { - Key: registry.CatalogKey{ - Namespace: "olm", - Name: "community-operator", - }, - Operators: []*cache.Operator{ - genOperator("packageB.v1", "0.0.1", "", "packageB", "alpha", "community-operator", - namespace, nil, nil, nil, "", false), - }, + }, + cache.SourceKey{Namespace: "olm", Name: "community-operator"}: &cache.Snapshot{ + Entries: []*cache.Operator{ + genOperator("packageB.v1", "0.0.1", "", "packageB", "alpha", "community-operator", + namespace, nil, nil, nil, "", false), }, - registry.CatalogKey{ - Namespace: "olm", - Name: "high-priority-operator", - }: { - Key: registry.CatalogKey{ - Namespace: "olm", - Name: "high-priority-operator", - }, - Priority: 100, - Operators: []*cache.Operator{ - genOperator("packageB.v1", "0.0.1", "", "packageB", "alpha", "high-priority-operator", - namespace, nil, nil, nil, "", false), - }, + }, + cache.SourceKey{Namespace: "olm", Name: "high-priority-operator"}: &cache.Snapshot{ + Entries: []*cache.Operator{ + genOperator("packageB.v1", "0.0.1", "", "packageB", "alpha", "high-priority-operator", + namespace, nil, nil, nil, "", false), }, }, } - // operators sorted by priority. satResolver := SatResolver{ - cache: getFakeOperatorCache(fakeNamespacedOperatorCache), + cache: cache.New(ssp, cache.WithCatalogSourceLister(&stubCatalogSourceLister{ + catsrcs: []*v1alpha1.CatalogSource{ + { + ObjectMeta: metav1.ObjectMeta{ + Namespace: "olm", + Name: "high-priority-operator", + }, + Spec: v1alpha1.CatalogSourceSpec{ + Priority: 100, + }, + }, + }, + })), } operators, err := satResolver.SolveOperators([]string{"olm"}, []*v1alpha1.ClusterServiceVersion{}, subs) @@ -443,23 +422,39 @@ func TestSolveOperators_CatsrcPrioritySorting(t *testing.T) { } // Catsrc with the same priority, ns, different name - fakeNamespacedOperatorCache.Snapshots[registry.CatalogKey{ + ssp[cache.SourceKey{ Namespace: "olm", Name: "community-operator", - }] = &cache.CatalogSnapshot{ - Key: registry.CatalogKey{ - Namespace: "olm", - Name: "community-operator", - }, - Priority: 100, - Operators: []*cache.Operator{ + }] = &cache.Snapshot{ + Entries: []*cache.Operator{ genOperator("packageB.v1", "0.0.1", "", "packageB", "alpha", "community-operator", namespace, nil, nil, nil, "", false), }, } satResolver = SatResolver{ - cache: getFakeOperatorCache(fakeNamespacedOperatorCache), + cache: cache.New(ssp, cache.WithCatalogSourceLister(&stubCatalogSourceLister{ + catsrcs: []*v1alpha1.CatalogSource{ + { + ObjectMeta: metav1.ObjectMeta{ + Namespace: "olm", + Name: "high-priority-operator", + }, + Spec: v1alpha1.CatalogSourceSpec{ + Priority: 100, + }, + }, + { + ObjectMeta: metav1.ObjectMeta{ + Namespace: "olm", + Name: "community-operator", + }, + Spec: v1alpha1.CatalogSourceSpec{ + Priority: 100, + }, + }, + }, + })), } operators, err = satResolver.SolveOperators([]string{"olm"}, []*v1alpha1.ClusterServiceVersion{}, subs) @@ -476,15 +471,11 @@ func TestSolveOperators_CatsrcPrioritySorting(t *testing.T) { } // operators from the same catalogs source should be prioritized. - fakeNamespacedOperatorCache.Snapshots[registry.CatalogKey{ + ssp[cache.SourceKey{ Namespace: "olm", Name: "community", - }] = &cache.CatalogSnapshot{ - Key: registry.CatalogKey{ - Namespace: "olm", - Name: "community", - }, - Operators: []*cache.Operator{ + }] = &cache.Snapshot{ + Entries: []*cache.Operator{ genOperator("packageA.v1", "0.0.1", "", "packageA", "alpha", "community", namespace, nil, nil, opToAddVersionDeps, "", false), genOperator("packageB.v1", "0.0.1", "", "packageB", "alpha", "community", @@ -493,7 +484,7 @@ func TestSolveOperators_CatsrcPrioritySorting(t *testing.T) { } satResolver = SatResolver{ - cache: getFakeOperatorCache(fakeNamespacedOperatorCache), + cache: cache.New(ssp), } operators, err = satResolver.SolveOperators([]string{"olm"}, []*v1alpha1.ClusterServiceVersion{}, subs) @@ -516,7 +507,7 @@ func TestSolveOperators_WithDependencies(t *testing.T) { Provides := APISet namespace := "olm" - catalog := registry.CatalogKey{"community", namespace} + catalog := cache.SourceKey{"community", namespace} csv := existingOperator(namespace, "packageA.v1", "packageA", "alpha", "", Provides, nil, nil, nil) csvs := []*v1alpha1.ClusterServiceVersion{csv} @@ -531,27 +522,17 @@ func TestSolveOperators_WithDependencies(t *testing.T) { }, } - fakeNamespacedOperatorCache := cache.NamespacedOperatorCache{ - Snapshots: map[registry.CatalogKey]*cache.CatalogSnapshot{ - registry.CatalogKey{ - Namespace: "olm", - Name: "community", - }: { - Key: registry.CatalogKey{ - Namespace: "olm", - Name: "community", - }, - Operators: []*cache.Operator{ + satResolver := SatResolver{ + cache: cache.New(cache.StaticSourceProvider{ + catalog: &cache.Snapshot{ + Entries: []*cache.Operator{ genOperator("packageA.v1.0.1", "1.0.1", "packageA.v1", "packageA", "alpha", "community", "olm", nil, nil, nil, "", false), genOperator("packageB.v1", "1.0.0", "", "packageB", "alpha", "community", "olm", nil, nil, opToAddVersionDeps, "", false), genOperator("packageC.v1", "0.1.0", "", "packageC", "alpha", "community", "olm", nil, nil, nil, "", false), }, }, - }, - } - satResolver := SatResolver{ - cache: getFakeOperatorCache(fakeNamespacedOperatorCache), - log: logrus.New(), + }), + log: logrus.New(), } operators, err := satResolver.SolveOperators([]string{"olm"}, csvs, subs) @@ -574,7 +555,7 @@ func TestSolveOperators_WithGVKDependencies(t *testing.T) { Provides := APISet namespace := "olm" - community := registry.CatalogKey{"community", namespace} + community := cache.SourceKey{"community", namespace} csvs := []*v1alpha1.ClusterServiceVersion{ existingOperator(namespace, "packageA.v1", "packageA", "alpha", "", nil, nil, nil, nil), @@ -591,21 +572,17 @@ func TestSolveOperators_WithGVKDependencies(t *testing.T) { }, } - fakeNamespacedOperatorCache := cache.NamespacedOperatorCache{ - Snapshots: map[registry.CatalogKey]*cache.CatalogSnapshot{ - community: { - Key: community, - Operators: []*cache.Operator{ + satResolver := SatResolver{ + cache: cache.New(cache.StaticSourceProvider{ + community: &cache.Snapshot{ + Entries: []*cache.Operator{ genOperator("packageA.v1", "0.0.1", "", "packageA", "alpha", "community", "olm", nil, nil, nil, "", false), genOperator("packageB.v1", "1.0.0", "", "packageB", "alpha", "community", "olm", Provides, nil, deps, "", false), genOperator("packageC.v1", "0.1.0", "", "packageC", "alpha", "community", "olm", nil, Provides, nil, "", false), }, }, - }, - } - satResolver := SatResolver{ - cache: getFakeOperatorCache(fakeNamespacedOperatorCache), - log: logrus.New(), + }), + log: logrus.New(), } operators, err := satResolver.SolveOperators([]string{"olm"}, csvs, subs) @@ -624,7 +601,7 @@ func TestSolveOperators_WithGVKDependencies(t *testing.T) { func TestSolveOperators_WithLabelDependencies(t *testing.T) { namespace := "olm" - catalog := registry.CatalogKey{"community", namespace} + catalog := cache.SourceKey{"community", namespace} newSub := newSub(namespace, "packageA", "alpha", catalog) subs := []*v1alpha1.Subscription{newSub} @@ -648,25 +625,15 @@ func TestSolveOperators_WithLabelDependencies(t *testing.T) { operatorBv1.Properties = append(operatorBv1.Properties, p) } - fakeNamespacedOperatorCache := cache.NamespacedOperatorCache{ - Snapshots: map[registry.CatalogKey]*cache.CatalogSnapshot{ - registry.CatalogKey{ - Namespace: "olm", - Name: "community", - }: { - Key: registry.CatalogKey{ - Namespace: "olm", - Name: "community", - }, - Operators: []*cache.Operator{ + satResolver := SatResolver{ + cache: cache.New(cache.StaticSourceProvider{ + catalog: &cache.Snapshot{ + Entries: []*cache.Operator{ genOperator("packageA", "0.0.1", "", "packageA", "alpha", "community", "olm", nil, nil, deps, "", false), operatorBv1, }, }, - }, - } - satResolver := SatResolver{ - cache: getFakeOperatorCache(fakeNamespacedOperatorCache), + }), } operators, err := satResolver.SolveOperators([]string{"olm"}, nil, subs) @@ -685,7 +652,7 @@ func TestSolveOperators_WithLabelDependencies(t *testing.T) { func TestSolveOperators_WithUnsatisfiableLabelDependencies(t *testing.T) { namespace := "olm" - catalog := registry.CatalogKey{"community", namespace} + catalog := cache.SourceKey{"community", namespace} newSub := newSub(namespace, "packageA", "alpha", catalog) subs := []*v1alpha1.Subscription{newSub} @@ -697,25 +664,15 @@ func TestSolveOperators_WithUnsatisfiableLabelDependencies(t *testing.T) { }, } - fakeNamespacedOperatorCache := cache.NamespacedOperatorCache{ - Snapshots: map[registry.CatalogKey]*cache.CatalogSnapshot{ - registry.CatalogKey{ - Namespace: "olm", - Name: "community", - }: { - Key: registry.CatalogKey{ - Namespace: "olm", - Name: "community", - }, - Operators: []*cache.Operator{ + satResolver := SatResolver{ + cache: cache.New(cache.StaticSourceProvider{ + catalog: &cache.Snapshot{ + Entries: []*cache.Operator{ genOperator("packageA", "0.0.1", "", "packageA", "alpha", "community", "olm", nil, nil, deps, "", false), genOperator("packageB.v1", "1.0.0", "", "packageB", "alpha", "community", "olm", nil, nil, nil, "", false), }, }, - }, - } - satResolver := SatResolver{ - cache: getFakeOperatorCache(fakeNamespacedOperatorCache), + }), } operators, err := satResolver.SolveOperators([]string{"olm"}, nil, subs) @@ -728,7 +685,7 @@ func TestSolveOperators_WithNestedGVKDependencies(t *testing.T) { Provides := APISet namespace := "olm" - catalog := registry.CatalogKey{"community", namespace} + catalog := cache.SourceKey{"community", namespace} csv := existingOperator(namespace, "packageA.v1", "packageA", "alpha", "", Provides, nil, nil, nil) csvs := []*v1alpha1.ClusterServiceVersion{csv} @@ -750,17 +707,13 @@ func TestSolveOperators_WithNestedGVKDependencies(t *testing.T) { }, } - fakeNamespacedOperatorCache := cache.NamespacedOperatorCache{ - Snapshots: map[registry.CatalogKey]*cache.CatalogSnapshot{ - registry.CatalogKey{ + satResolver := SatResolver{ + cache: cache.New(cache.StaticSourceProvider{ + cache.SourceKey{ Namespace: "olm", Name: "community", - }: { - Key: registry.CatalogKey{ - Namespace: "olm", - Name: "community", - }, - Operators: []*cache.Operator{ + }: &cache.Snapshot{ + Entries: []*cache.Operator{ genOperator("packageA.v1.0.1", "1.0.1", "packageA.v1", "packageA", "alpha", "community", "olm", nil, nil, nil, "", false), genOperator("packageB.v1.0.0", "1.0.0", "", "packageB", "alpha", "community", "olm", Provides, nil, deps, "", false), genOperator("packageB.v1.0.1", "1.0.1", "packageB.v1.0.0", "packageB", "alpha", "community", "olm", Provides, nil, deps, "", false), @@ -769,25 +722,18 @@ func TestSolveOperators_WithNestedGVKDependencies(t *testing.T) { genOperator("packageD.v1.0.1", "1.0.1", "", "packageD", "alpha", "community", "olm", nil, Provides2, deps2, "", false), }, }, - registry.CatalogKey{ + cache.SourceKey{ Namespace: "olm", Name: "certified", - }: { - Key: registry.CatalogKey{ - Namespace: "olm", - Name: "certified", - }, - Operators: []*cache.Operator{ + }: &cache.Snapshot{ + Entries: []*cache.Operator{ genOperator("packageC.v1.0.0", "1.0.0", "", "packageC", "alpha", "certified", "olm", Provides2, Provides, deps2, "", false), genOperator("packageC.v1.0.1", "1.0.1", "packageC.v1.0.0", "packageC", "alpha", "certified", "olm", Provides2, Provides, deps2, "", false), genOperator("packageD.v1.0.1", "1.0.1", "", "packageD", "alpha", "certified", "olm", nil, Provides2, nil, "", false), }, }, - }, - } - satResolver := SatResolver{ - cache: getFakeOperatorCache(fakeNamespacedOperatorCache), - log: logrus.New(), + }), + log: logrus.New(), } operators, err := satResolver.SolveOperators([]string{"olm"}, csvs, subs) @@ -815,7 +761,7 @@ func TestSolveOperators_IgnoreUnsatisfiableDependencies(t *testing.T) { const namespace = "olm" Provides := cache.APISet{opregistry.APIKey{Group: "g", Version: "v", Kind: "k", Plural: "ks"}: struct{}{}} - community := registry.CatalogKey{Name: "community", Namespace: namespace} + community := cache.SourceKey{Name: "community", Namespace: namespace} csvs := []*v1alpha1.ClusterServiceVersion{ existingOperator(namespace, "packageA.v1", "packageA", "alpha", "", Provides, nil, nil, nil), } @@ -837,35 +783,24 @@ func TestSolveOperators_IgnoreUnsatisfiableDependencies(t *testing.T) { }, } - fakeNamespacedOperatorCache := cache.NamespacedOperatorCache{ - Snapshots: map[registry.CatalogKey]*cache.CatalogSnapshot{ - community: { - Key: community, - Operators: []*cache.Operator{ + satResolver := SatResolver{ + cache: cache.New(cache.StaticSourceProvider{ + community: &cache.Snapshot{ + Entries: []*cache.Operator{ genOperator("packageA.v1", "0.0.1", "", "packageA", "alpha", "community", "olm", nil, nil, nil, "", false), genOperator("packageB.v1", "1.0.0", "", "packageB", "alpha", "community", "olm", nil, nil, opToAddVersionDeps, "", false), genOperator("packageC.v1", "0.1.0", "", "packageC", "alpha", "community", "olm", nil, nil, unsatisfiableVersionDeps, "", false), }, }, - { - Namespace: "olm", - Name: "certified", - }: { - Key: registry.CatalogKey{ - Namespace: "olm", - Name: "certified", - }, - Operators: []*cache.Operator{ + {Namespace: "olm", Name: "certified"}: &cache.Snapshot{ + Entries: []*cache.Operator{ genOperator("packageA.v1", "0.0.1", "", "packageA", "alpha", "certified", "olm", nil, nil, nil, "", false), genOperator("packageB.v1", "1.0.0", "", "packageB", "alpha", "certified", "olm", nil, nil, opToAddVersionDeps, "", false), genOperator("packageC.v1", "0.1.0", "", "packageC", "alpha", "certified", "olm", nil, nil, nil, "", false), }, }, - }, - } - satResolver := SatResolver{ - cache: getFakeOperatorCache(fakeNamespacedOperatorCache), - log: logrus.New(), + }), + log: logrus.New(), } operators, err := satResolver.SolveOperators([]string{"olm"}, csvs, subs) @@ -889,32 +824,28 @@ func TestSolveOperators_PreferCatalogInSameNamespace(t *testing.T) { namespace := "olm" altNamespace := "alt-olm" - catalog := registry.CatalogKey{"community", namespace} - altnsCatalog := registry.CatalogKey{"alt-community", altNamespace} + catalog := cache.SourceKey{"community", namespace} + altnsCatalog := cache.SourceKey{"alt-community", altNamespace} csv := existingOperator(namespace, "packageA.v1", "packageA", "alpha", "", Provides, nil, nil, nil) csvs := []*v1alpha1.ClusterServiceVersion{csv} sub := existingSub(namespace, "packageA.v1", "packageA", "alpha", catalog) subs := []*v1alpha1.Subscription{sub} - fakeNamespacedOperatorCache := cache.NamespacedOperatorCache{ - Snapshots: map[registry.CatalogKey]*cache.CatalogSnapshot{ - catalog: { - Operators: []*cache.Operator{ + satResolver := SatResolver{ + cache: cache.New(cache.StaticSourceProvider{ + catalog: &cache.Snapshot{ + Entries: []*cache.Operator{ genOperator("packageA.v0.0.1", "0.0.1", "packageA.v1", "packageA", "alpha", catalog.Name, catalog.Namespace, nil, Provides, nil, "", false), }, }, - altnsCatalog: { - Operators: []*cache.Operator{ + altnsCatalog: &cache.Snapshot{ + Entries: []*cache.Operator{ genOperator("packageA.v0.0.1", "0.0.1", "packageA.v1", "packageA", "alpha", altnsCatalog.Name, altnsCatalog.Namespace, nil, Provides, nil, "", false), }, }, - }, - Namespaces: []string{namespace, altNamespace}, - } - satResolver := SatResolver{ - cache: getFakeOperatorCache(fakeNamespacedOperatorCache), - log: logrus.New(), + }), + log: logrus.New(), } operators, err := satResolver.SolveOperators([]string{namespace}, csvs, subs) @@ -933,27 +864,23 @@ func TestSolveOperators_ResolveOnlyInCachedNamespaces(t *testing.T) { Provides := APISet namespace := "olm" - catalog := registry.CatalogKey{"community", namespace} - otherCatalog := registry.CatalogKey{Name: "secret", Namespace: "secret"} + catalog := cache.SourceKey{"community", namespace} + otherCatalog := cache.SourceKey{Name: "secret", Namespace: "secret"} csv := existingOperator(namespace, "packageA.v1", "packageA", "alpha", "", Provides, nil, nil, nil) csvs := []*v1alpha1.ClusterServiceVersion{csv} newSub := newSub(namespace, "packageA", "alpha", catalog) subs := []*v1alpha1.Subscription{newSub} - fakeNamespacedOperatorCache := cache.NamespacedOperatorCache{ - Snapshots: map[registry.CatalogKey]*cache.CatalogSnapshot{ - catalog: { - Operators: []*cache.Operator{ + satResolver := SatResolver{ + cache: cache.New(cache.StaticSourceProvider{ + catalog: &cache.Snapshot{ + Entries: []*cache.Operator{ genOperator("packageA.v0.0.1", "0.0.1", "packageA.v1", "packageA", "alpha", otherCatalog.Name, otherCatalog.Namespace, nil, Provides, nil, "", false), }, }, - }, - Namespaces: []string{otherCatalog.Namespace}, - } - satResolver := SatResolver{ - cache: getFakeOperatorCache(fakeNamespacedOperatorCache), - log: logrus.New(), + }), + log: logrus.New(), } operators, err := satResolver.SolveOperators([]string{namespace}, csvs, subs) @@ -968,7 +895,7 @@ func TestSolveOperators_PreferDefaultChannelInResolution(t *testing.T) { Provides := APISet namespace := "olm" - catalog := registry.CatalogKey{Name: "community", Namespace: namespace} + catalog := cache.SourceKey{Name: "community", Namespace: namespace} csvs := []*v1alpha1.ClusterServiceVersion{} @@ -977,21 +904,17 @@ func TestSolveOperators_PreferDefaultChannelInResolution(t *testing.T) { newSub := newSub(namespace, "packageA", "", catalog) subs := []*v1alpha1.Subscription{newSub} - fakeNamespacedOperatorCache := cache.NamespacedOperatorCache{ - Snapshots: map[registry.CatalogKey]*cache.CatalogSnapshot{ - catalog: { - Operators: []*cache.Operator{ + satResolver := SatResolver{ + cache: cache.New(cache.StaticSourceProvider{ + catalog: &cache.Snapshot{ + Entries: []*cache.Operator{ // Default channel is stable in this case genOperator("packageA.v0.0.2", "0.0.2", "packageA.v1", "packageA", "alpha", catalog.Name, catalog.Namespace, nil, Provides, nil, defaultChannel, false), genOperator("packageA.v0.0.1", "0.0.1", "packageA.v1", "packageA", "stable", catalog.Name, catalog.Namespace, nil, Provides, nil, defaultChannel, false), }, }, - }, - } - - satResolver := SatResolver{ - cache: getFakeOperatorCache(fakeNamespacedOperatorCache), - log: logrus.New(), + }), + log: logrus.New(), } operators, err := satResolver.SolveOperators([]string{namespace}, csvs, subs) @@ -1010,7 +933,7 @@ func TestSolveOperators_PreferDefaultChannelInResolutionForTransitiveDependencie Provides := APISet namespace := "olm" - catalog := registry.CatalogKey{Name: "community", Namespace: namespace} + catalog := cache.SourceKey{Name: "community", Namespace: namespace} csvs := []*v1alpha1.ClusterServiceVersion{} @@ -1018,21 +941,18 @@ func TestSolveOperators_PreferDefaultChannelInResolutionForTransitiveDependencie subs := []*v1alpha1.Subscription{newSub} const defaultChannel = "stable" - fakeNamespacedOperatorCache := cache.NamespacedOperatorCache{ - Snapshots: map[registry.CatalogKey]*cache.CatalogSnapshot{ - catalog: { - Operators: []*cache.Operator{ + + satResolver := SatResolver{ + cache: cache.New(cache.StaticSourceProvider{ + catalog: &cache.Snapshot{ + Entries: []*cache.Operator{ genOperator("packageA.v0.0.1", "0.0.1", "packageA.v1", "packageA", "alpha", catalog.Name, catalog.Namespace, Provides, nil, cache.APISetToDependencies(nil, Provides), defaultChannel, false), genOperator("packageB.v0.0.1", "0.0.1", "packageB.v1", "packageB", defaultChannel, catalog.Name, catalog.Namespace, nil, Provides, nil, defaultChannel, false), genOperator("packageB.v0.0.2", "0.0.2", "packageB.v0.0.1", "packageB", "alpha", catalog.Name, catalog.Namespace, nil, Provides, nil, defaultChannel, false), }, }, - }, - } - - satResolver := SatResolver{ - cache: getFakeOperatorCache(fakeNamespacedOperatorCache), - log: logrus.New(), + }), + log: logrus.New(), } operators, err := satResolver.SolveOperators([]string{namespace}, csvs, subs) @@ -1051,7 +971,7 @@ func TestSolveOperators_SubscriptionlessOperatorsSatisfyDependencies(t *testing. Provides := APISet namespace := "olm" - catalog := registry.CatalogKey{"community", namespace} + catalog := cache.SourceKey{"community", namespace} csv := existingOperator(namespace, "packageA.v1", "packageA", "alpha", "", Provides, nil, nil, nil) csvs := []*v1alpha1.ClusterServiceVersion{csv} @@ -1065,26 +985,16 @@ func TestSolveOperators_SubscriptionlessOperatorsSatisfyDependencies(t *testing. }, } - fakeNamespacedOperatorCache := cache.NamespacedOperatorCache{ - Snapshots: map[registry.CatalogKey]*cache.CatalogSnapshot{ - registry.CatalogKey{ - Namespace: "olm", - Name: "community", - }: { - Key: registry.CatalogKey{ - Namespace: "olm", - Name: "community", - }, - Operators: []*cache.Operator{ + satResolver := SatResolver{ + cache: cache.New(cache.StaticSourceProvider{ + catalog: &cache.Snapshot{ + Entries: []*cache.Operator{ genOperator("packageB.v1.0.0", "1.0.0", "", "packageB", "alpha", "community", "olm", Provides, nil, deps, "", false), genOperator("packageB.v1.0.1", "1.0.1", "packageB.v1.0.0", "packageB", "alpha", "community", "olm", Provides, nil, deps, "", false), }, }, - }, - } - satResolver := SatResolver{ - cache: getFakeOperatorCache(fakeNamespacedOperatorCache), - log: logrus.New(), + }), + log: logrus.New(), } operators, err := satResolver.SolveOperators([]string{"olm"}, csvs, subs) @@ -1104,33 +1014,23 @@ func TestSolveOperators_SubscriptionlessOperatorsCanConflict(t *testing.T) { Provides := APISet namespace := "olm" - catalog := registry.CatalogKey{"community", namespace} + catalog := cache.SourceKey{"community", namespace} csv := existingOperator(namespace, "packageA.v1", "packageA", "alpha", "", Provides, nil, nil, nil) csvs := []*v1alpha1.ClusterServiceVersion{csv} newSub := newSub(namespace, "packageB", "alpha", catalog) subs := []*v1alpha1.Subscription{newSub} - fakeNamespacedOperatorCache := cache.NamespacedOperatorCache{ - Snapshots: map[registry.CatalogKey]*cache.CatalogSnapshot{ - registry.CatalogKey{ - Namespace: "olm", - Name: "community", - }: { - Key: registry.CatalogKey{ - Namespace: "olm", - Name: "community", - }, - Operators: []*cache.Operator{ + satResolver := SatResolver{ + cache: cache.New(cache.StaticSourceProvider{ + catalog: &cache.Snapshot{ + Entries: []*cache.Operator{ genOperator("packageB.v1.0.0", "1.0.0", "", "packageB", "alpha", "community", "olm", nil, Provides, nil, "", false), genOperator("packageB.v1.0.1", "1.0.1", "packageB.v1.0.0", "packageB", "alpha", "community", "olm", nil, Provides, nil, "", false), }, }, - }, - } - satResolver := SatResolver{ - cache: getFakeOperatorCache(fakeNamespacedOperatorCache), - log: logrus.New(), + }), + log: logrus.New(), } _, err := satResolver.SolveOperators([]string{"olm"}, csvs, subs) @@ -1146,17 +1046,16 @@ func TestSolveOperators_PackageCannotSelfSatisfy(t *testing.T) { RequiresBoth := Requires1.Union(Requires2) namespace := "olm" - catalog := registry.CatalogKey{Name: "community", Namespace: namespace} - secondaryCatalog := registry.CatalogKey{Namespace: "olm", Name: "secondary"} + catalog := cache.SourceKey{Name: "community", Namespace: namespace} + secondaryCatalog := cache.SourceKey{Namespace: "olm", Name: "secondary"} newSub := newSub(namespace, "packageA", "stable", catalog) subs := []*v1alpha1.Subscription{newSub} - fakeNamespacedOperatorCache := cache.NamespacedOperatorCache{ - Snapshots: map[registry.CatalogKey]*cache.CatalogSnapshot{ - catalog: { - Key: catalog, - Operators: []*cache.Operator{ + satResolver := SatResolver{ + cache: cache.New(cache.StaticSourceProvider{ + catalog: &cache.Snapshot{ + Entries: []*cache.Operator{ genOperator("opA.v1.0.0", "1.0.0", "", "packageA", "stable", catalog.Name, catalog.Namespace, RequiresBoth, nil, nil, "", false), // Despite satisfying dependencies of opA, this is not chosen because it is in the same package genOperator("opABC.v1.0.0", "1.0.0", "", "packageA", "alpha", catalog.Name, catalog.Namespace, nil, ProvidesBoth, nil, "", false), @@ -1165,19 +1064,15 @@ func TestSolveOperators_PackageCannotSelfSatisfy(t *testing.T) { genOperator("opD.v1.0.0", "1.0.0", "", "packageB", "alpha", catalog.Name, catalog.Namespace, nil, Provides1, nil, "stable", false), }, }, - secondaryCatalog: { - Key: secondaryCatalog, - Operators: []*cache.Operator{ + secondaryCatalog: &cache.Snapshot{ + Entries: []*cache.Operator{ genOperator("opC.v1.0.0", "1.0.0", "", "packageB", "stable", secondaryCatalog.Name, secondaryCatalog.Namespace, nil, Provides2, nil, "stable", false), genOperator("opE.v1.0.0", "1.0.0", "", "packageC", "stable", secondaryCatalog.Name, secondaryCatalog.Namespace, nil, Provides2, nil, "", false), }, }, - }, - } - satResolver := SatResolver{ - cache: getFakeOperatorCache(fakeNamespacedOperatorCache), - log: logrus.New(), + }), + log: logrus.New(), } operators, err := satResolver.SolveOperators([]string{"olm"}, nil, subs) @@ -1201,18 +1096,17 @@ func TestSolveOperators_TransferApiOwnership(t *testing.T) { ProvidesBoth := Provides1.Union(Provides2) namespace := "olm" - catalog := registry.CatalogKey{Name: "community", Namespace: namespace} + catalog := cache.SourceKey{Name: "community", Namespace: namespace} phases := []struct { subs []*v1alpha1.Subscription - catalog *cache.CatalogSnapshot + catalog cache.Source expected cache.OperatorSet }{ { subs: []*v1alpha1.Subscription{newSub(namespace, "packageB", "stable", catalog)}, - catalog: &cache.CatalogSnapshot{ - Key: catalog, - Operators: []*cache.Operator{ + catalog: &cache.Snapshot{ + Entries: []*cache.Operator{ genOperator("opA.v1.0.0", "1.0.0", "", "packageA", "stable", catalog.Name, catalog.Namespace, nil, Provides1, nil, "", false), genOperator("opB.v1.0.0", "1.0.0", "", "packageB", "stable", catalog.Name, catalog.Namespace, Requires1, Provides2, nil, "stable", false), }, @@ -1228,9 +1122,8 @@ func TestSolveOperators_TransferApiOwnership(t *testing.T) { existingSub(namespace, "opA.v1.0.0", "packageA", "stable", catalog), existingSub(namespace, "opB.v1.0.0", "packageB", "stable", catalog), }, - catalog: &cache.CatalogSnapshot{ - Key: catalog, - Operators: []*cache.Operator{ + catalog: &cache.Snapshot{ + Entries: []*cache.Operator{ genOperator("opA.v1.0.0", "1.0.0", "", "packageA", "stable", catalog.Name, catalog.Namespace, nil, Provides1, nil, "", false), genOperator("opA.v1.0.1", "1.0.1", "opA.v1.0.0", "packageA", "stable", catalog.Name, catalog.Namespace, Requires1, nil, nil, "", false), genOperator("opB.v1.0.0", "1.0.0", "", "packageB", "stable", catalog.Name, catalog.Namespace, Requires1, Provides2, nil, "stable", false), @@ -1245,9 +1138,8 @@ func TestSolveOperators_TransferApiOwnership(t *testing.T) { existingSub(namespace, "opA.v1.0.0", "packageA", "stable", catalog), existingSub(namespace, "opB.v1.0.0", "packageB", "stable", catalog), }, - catalog: &cache.CatalogSnapshot{ - Key: catalog, - Operators: []*cache.Operator{ + catalog: &cache.Snapshot{ + Entries: []*cache.Operator{ genOperator("opA.v1.0.0", "1.0.0", "", "packageA", "stable", catalog.Name, catalog.Namespace, nil, Provides1, nil, "", false), genOperator("opA.v1.0.1", "1.0.1", "opA.v1.0.0", "packageA", "stable", catalog.Name, catalog.Namespace, Requires1, nil, nil, "", false), genOperator("opB.v1.0.0", "1.0.0", "", "packageB", "stable", catalog.Name, catalog.Namespace, Requires1, Provides2, nil, "stable", false), @@ -1264,14 +1156,11 @@ func TestSolveOperators_TransferApiOwnership(t *testing.T) { var operators cache.OperatorSet for i, p := range phases { t.Run(fmt.Sprintf("phase %d", i+1), func(t *testing.T) { - fakeNamespacedOperatorCache := cache.NamespacedOperatorCache{ - Snapshots: map[registry.CatalogKey]*cache.CatalogSnapshot{ - catalog: p.catalog, - }, - } satResolver := SatResolver{ - cache: getFakeOperatorCache(fakeNamespacedOperatorCache), - log: logrus.New(), + cache: cache.New(cache.StaticSourceProvider{ + catalog: p.catalog, + }), + log: logrus.New(), } csvs := make([]*v1alpha1.ClusterServiceVersion, 0) for _, o := range operators { @@ -1295,24 +1184,6 @@ func TestSolveOperators_TransferApiOwnership(t *testing.T) { } } -type FakeOperatorCache struct { - fakedNamespacedOperatorCache cache.NamespacedOperatorCache -} - -func (f *FakeOperatorCache) Namespaced(namespaces ...string) cache.MultiCatalogOperatorFinder { - return &f.fakedNamespacedOperatorCache -} - -func (f *FakeOperatorCache) Expire(key registry.CatalogKey) { - return -} - -func getFakeOperatorCache(fakedNamespacedOperatorCache cache.NamespacedOperatorCache) cache.OperatorCacheProvider { - return &FakeOperatorCache{ - fakedNamespacedOperatorCache: fakedNamespacedOperatorCache, - } -} - func genOperator(name, version, replaces, pkg, channel, catalogName, catalogNamespace string, requiredAPIs, providedAPIs cache.APISet, dependencies []*api.Dependency, defaultChannel string, deprecated bool) *cache.Operator { semversion, _ := semver.Make(version) properties := cache.APISetToProperties(providedAPIs, nil, deprecated) @@ -1341,7 +1212,7 @@ func genOperator(name, version, replaces, pkg, channel, catalogName, catalogName }, Properties: properties, SourceInfo: &cache.OperatorSourceInfo{ - Catalog: registry.CatalogKey{ + Catalog: cache.SourceKey{ Name: catalogName, Namespace: catalogNamespace, }, @@ -1352,7 +1223,7 @@ func genOperator(name, version, replaces, pkg, channel, catalogName, catalogName ProvidedAPIs: providedAPIs, RequiredAPIs: requiredAPIs, } - cache.EnsurePackageProperty(o, pkg, version) + EnsurePackageProperty(o, pkg, version) return o } @@ -1362,25 +1233,21 @@ func stripBundle(o *cache.Operator) *cache.Operator { } func TestSolveOperators_WithoutDeprecated(t *testing.T) { - catalog := registry.CatalogKey{Name: "catalog", Namespace: "namespace"} + catalog := cache.SourceKey{Name: "catalog", Namespace: "namespace"} subs := []*v1alpha1.Subscription{ newSub(catalog.Namespace, "packageA", "alpha", catalog), } - fakeNamespacedOperatorCache := cache.NamespacedOperatorCache{ - Snapshots: map[registry.CatalogKey]*cache.CatalogSnapshot{ - catalog: { - Key: catalog, - Operators: []*cache.Operator{ + satResolver := SatResolver{ + cache: cache.New(cache.StaticSourceProvider{ + catalog: &cache.Snapshot{ + Entries: []*cache.Operator{ genOperator("packageA.v1", "0.0.1", "", "packageA", "alpha", catalog.Name, catalog.Namespace, nil, nil, nil, "", true), }, }, - }, - } - satResolver := SatResolver{ - cache: getFakeOperatorCache(fakeNamespacedOperatorCache), - log: logrus.New(), + }), + log: logrus.New(), } operators, err := satResolver.SolveOperators([]string{catalog.Namespace}, nil, subs) @@ -1389,22 +1256,19 @@ func TestSolveOperators_WithoutDeprecated(t *testing.T) { } func TestSolveOperatorsWithDeprecatedInnerChannelEntry(t *testing.T) { - catalog := registry.CatalogKey{Name: "catalog", Namespace: "namespace"} + catalog := cache.SourceKey{Name: "catalog", Namespace: "namespace"} subs := []*v1alpha1.Subscription{ newSub(catalog.Namespace, "a", "c", catalog), } logger, _ := test.NewNullLogger() resolver := SatResolver{ - cache: getFakeOperatorCache(cache.NamespacedOperatorCache{ - Snapshots: map[registry.CatalogKey]*cache.CatalogSnapshot{ - catalog: { - Key: catalog, - Operators: []*cache.Operator{ - genOperator("a-1", "1.0.0", "", "a", "c", catalog.Name, catalog.Namespace, nil, nil, nil, "", false), - genOperator("a-2", "2.0.0", "a-1", "a", "c", catalog.Name, catalog.Namespace, nil, nil, nil, "", true), - genOperator("a-3", "3.0.0", "a-2", "a", "c", catalog.Name, catalog.Namespace, nil, nil, nil, "", false), - }, + cache: cache.New(cache.StaticSourceProvider{ + catalog: &cache.Snapshot{ + Entries: []*cache.Operator{ + genOperator("a-1", "1.0.0", "", "a", "c", catalog.Name, catalog.Namespace, nil, nil, nil, "", false), + genOperator("a-2", "2.0.0", "a-1", "a", "c", catalog.Name, catalog.Namespace, nil, nil, nil, "", true), + genOperator("a-3", "3.0.0", "a-2", "a", "c", catalog.Name, catalog.Namespace, nil, nil, nil, "", false), }, }, }), @@ -1422,7 +1286,7 @@ func TestSolveOperators_WithSkipsAndStartingCSV(t *testing.T) { Provides := APISet namespace := "olm" - catalog := registry.CatalogKey{"community", namespace} + catalog := cache.SourceKey{"community", namespace} newSub := newSub(namespace, "packageB", "alpha", catalog, withStartingCSV("packageB.v1")) subs := []*v1alpha1.Subscription{newSub} @@ -1446,25 +1310,15 @@ func TestSolveOperators_WithSkipsAndStartingCSV(t *testing.T) { op5.Skips = []string{"packageA.v2", "packageA.v3", "packageA.v4"} op6 := genOperator("packageA.v6", "6.0.0", "packageA.v5", "packageA", "alpha", "community", "olm", nil, Provides, nil, "", false) - fakeNamespacedOperatorCache := cache.NamespacedOperatorCache{ - Snapshots: map[registry.CatalogKey]*cache.CatalogSnapshot{ - registry.CatalogKey{ - Namespace: "olm", - Name: "community", - }: { - Key: registry.CatalogKey{ - Namespace: "olm", - Name: "community", - }, - Operators: []*cache.Operator{ + satResolver := SatResolver{ + cache: cache.New(cache.StaticSourceProvider{ + catalog: &cache.Snapshot{ + Entries: []*cache.Operator{ opB, opB2, op1, op2, op3, op4, op5, op6, }, }, - }, - } - satResolver := SatResolver{ - cache: getFakeOperatorCache(fakeNamespacedOperatorCache), - log: logrus.New(), + }), + log: logrus.New(), } operators, err := satResolver.SolveOperators([]string{"olm"}, nil, subs) @@ -1479,7 +1333,7 @@ func TestSolveOperators_WithSkipsAndStartingCSV(t *testing.T) { func TestSolveOperators_WithSkips(t *testing.T) { const namespace = "test-namespace" - catalog := registry.CatalogKey{Name: "test-catalog", Namespace: namespace} + catalog := cache.SourceKey{Name: "test-catalog", Namespace: namespace} newSub := newSub(namespace, "packageB", "alpha", catalog) subs := []*v1alpha1.Subscription{newSub} @@ -1488,19 +1342,15 @@ func TestSolveOperators_WithSkips(t *testing.T) { opB2 := genOperator("packageB.v2", "2.0.0", "", "packageB", "alpha", catalog.Name, catalog.Namespace, nil, nil, nil, "", false) opB2.Skips = []string{"packageB.v1"} - fakeNamespacedOperatorCache := cache.NamespacedOperatorCache{ - Snapshots: map[registry.CatalogKey]*cache.CatalogSnapshot{ - catalog: { - Key: catalog, - Operators: []*cache.Operator{ + satResolver := SatResolver{ + cache: cache.New(cache.StaticSourceProvider{ + catalog: &cache.Snapshot{ + Entries: []*cache.Operator{ opB, opB2, }, }, - }, - } - satResolver := SatResolver{ - cache: getFakeOperatorCache(fakeNamespacedOperatorCache), - log: logrus.New(), + }), + log: logrus.New(), } operators, err := satResolver.SolveOperators([]string{namespace}, nil, subs) @@ -1513,7 +1363,7 @@ func TestSolveOperators_WithSkips(t *testing.T) { func TestSolveOperatorsWithSkipsPreventingSelection(t *testing.T) { const namespace = "test-namespace" - catalog := registry.CatalogKey{Name: "test-catalog", Namespace: namespace} + catalog := cache.SourceKey{Name: "test-catalog", Namespace: namespace} gvks := cache.APISet{opregistry.APIKey{Group: "g", Version: "v", Kind: "k", Plural: "ks"}: struct{}{}} // Subscription candidate a-1 requires a GVK provided @@ -1528,12 +1378,9 @@ func TestSolveOperatorsWithSkipsPreventingSelection(t *testing.T) { logger, _ := test.NewNullLogger() satResolver := SatResolver{ - cache: getFakeOperatorCache(cache.NamespacedOperatorCache{ - Snapshots: map[registry.CatalogKey]*cache.CatalogSnapshot{ - catalog: { - Key: catalog, - Operators: []*cache.Operator{a1, b3, b2, b1}, - }, + cache: cache.New(cache.StaticSourceProvider{ + catalog: &cache.Snapshot{ + Entries: []*cache.Operator{a1, b3, b2, b1}, }, }), log: logger, @@ -1545,7 +1392,7 @@ func TestSolveOperatorsWithSkipsPreventingSelection(t *testing.T) { func TestSolveOperatorsWithClusterServiceVersionHavingDependency(t *testing.T) { const namespace = "test-namespace" - catalog := registry.CatalogKey{Name: "test-catalog", Namespace: namespace} + catalog := cache.SourceKey{Name: "test-catalog", Namespace: namespace} a1 := existingOperator(namespace, "a-1", "a", "default", "", nil, nil, nil, nil) a1.Annotations = map[string]string{ @@ -1564,13 +1411,10 @@ func TestSolveOperatorsWithClusterServiceVersionHavingDependency(t *testing.T) { log, _ := test.NewNullLogger() r := SatResolver{ - cache: getFakeOperatorCache(cache.NamespacedOperatorCache{ - Snapshots: map[registry.CatalogKey]*cache.CatalogSnapshot{ - catalog: { - Key: catalog, - Operators: []*cache.Operator{ - genOperator("b-2", "2.0.0", "b-1", "b", "default", catalog.Name, catalog.Namespace, nil, nil, nil, "", false), - }, + cache: cache.New(cache.StaticSourceProvider{ + catalog: &cache.Snapshot{ + Entries: []*cache.Operator{ + genOperator("b-2", "2.0.0", "b-1", "b", "default", catalog.Name, catalog.Namespace, nil, nil, nil, "", false), }, }, }), @@ -1583,11 +1427,11 @@ func TestSolveOperatorsWithClusterServiceVersionHavingDependency(t *testing.T) { } func TestInferProperties(t *testing.T) { - catalog := registry.CatalogKey{Namespace: "namespace", Name: "name"} + catalog := cache.SourceKey{Namespace: "namespace", Name: "name"} for _, tc := range []struct { Name string - Cache cache.NamespacedOperatorCache + Cache cache.StaticSourceProvider CSV *v1alpha1.ClusterServiceVersion Subscriptions []*v1alpha1.Subscription Expected []*api.Property @@ -1664,16 +1508,13 @@ func TestInferProperties(t *testing.T) { }, { Name: "one matching subscription infers package property", - Cache: cache.NamespacedOperatorCache{ - Snapshots: map[registry.CatalogKey]*cache.CatalogSnapshot{ - catalog: { - Key: catalog, - Operators: []*cache.Operator{ - { - Name: "a", - Bundle: &api.Bundle{ - PackageName: "x", - }, + Cache: cache.StaticSourceProvider{ + catalog: &cache.Snapshot{ + Entries: []*cache.Operator{ + { + Name: "a", + Bundle: &api.Bundle{ + PackageName: "x", }, }, }, @@ -1706,6 +1547,47 @@ func TestInferProperties(t *testing.T) { }, }, }, + { + Name: "one matching subscription to other-namespace catalogsource infers package property", + Cache: cache.StaticSourceProvider{ + {Namespace: "other-namespace", Name: "other-name"}: &cache.Snapshot{ + Entries: []*cache.Operator{ + { + Name: "a", + Bundle: &api.Bundle{ + PackageName: "x", + }, + }, + }, + }, + }, + CSV: &v1alpha1.ClusterServiceVersion{ + ObjectMeta: metav1.ObjectMeta{ + Name: "a", + }, + Spec: v1alpha1.ClusterServiceVersionSpec{ + Version: version.OperatorVersion{Version: semver.MustParse("1.2.3")}, + }, + }, + Subscriptions: []*v1alpha1.Subscription{ + { + Spec: &v1alpha1.SubscriptionSpec{ + Package: "x", + CatalogSource: "other-name", + CatalogSourceNamespace: "other-namespace", + }, + Status: v1alpha1.SubscriptionStatus{ + InstalledCSV: "a", + }, + }, + }, + Expected: []*api.Property{ + { + Type: "olm.package", + Value: `{"packageName":"x","version":"1.2.3"}`, + }, + }, + }, { Name: "one matching subscription without catalog entry infers no properties", CSV: &v1alpha1.ClusterServiceVersion{ @@ -1729,16 +1611,13 @@ func TestInferProperties(t *testing.T) { }, { Name: "one matching subscription infers package property without csv version", - Cache: cache.NamespacedOperatorCache{ - Snapshots: map[registry.CatalogKey]*cache.CatalogSnapshot{ - catalog: { - Key: catalog, - Operators: []*cache.Operator{ - { - Name: "a", - Bundle: &api.Bundle{ - PackageName: "x", - }, + Cache: cache.StaticSourceProvider{ + catalog: &cache.Snapshot{ + Entries: []*cache.Operator{ + { + Name: "a", + Bundle: &api.Bundle{ + PackageName: "x", }, }, }, @@ -1773,10 +1652,8 @@ func TestInferProperties(t *testing.T) { require := require.New(t) logger, _ := test.NewNullLogger() r := SatResolver{ - log: logger, - cache: &FakeOperatorCache{ - fakedNamespacedOperatorCache: tc.Cache, - }, + log: logger, + cache: cache.New(tc.Cache), } actual, err := r.inferProperties(tc.CSV, tc.Subscriptions) require.NoError(err) diff --git a/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/source_registry.go b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/source_registry.go new file mode 100644 index 0000000000..6c5c11998d --- /dev/null +++ b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/source_registry.go @@ -0,0 +1,109 @@ +package resolver + +import ( + "context" + "encoding/json" + "fmt" + + "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry" + "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/cache" + "github.com/operator-framework/operator-registry/pkg/api" + "github.com/operator-framework/operator-registry/pkg/client" + opregistry "github.com/operator-framework/operator-registry/pkg/registry" + "github.com/sirupsen/logrus" +) + +type RegistryClientProvider interface { + ClientsForNamespaces(namespaces ...string) map[registry.CatalogKey]client.Interface +} + +type registryClientAdapter struct { + rcp RegistryClientProvider + logger logrus.StdLogger +} + +func SourceProviderFromRegistryClientProvider(rcp RegistryClientProvider, logger logrus.StdLogger) cache.SourceProvider { + return ®istryClientAdapter{ + rcp: rcp, + logger: logger, + } +} + +type registrySource struct { + key cache.SourceKey + client client.Interface + logger logrus.StdLogger +} + +func (s *registrySource) Snapshot(ctx context.Context) (*cache.Snapshot, error) { + // Fetching default channels this way makes many round trips + // -- may need to either add a new API to fetch all at once, + // or embed the information into Bundle. + defaultChannels := make(map[string]string) + + it, err := s.client.ListBundles(ctx) + if err != nil { + return nil, fmt.Errorf("failed to list bundles: %w", err) + } + + var operators []*cache.Operator + for b := it.Next(); b != nil; b = it.Next() { + defaultChannel, ok := defaultChannels[b.PackageName] + if !ok { + if p, err := s.client.GetPackage(ctx, b.PackageName); err != nil { + s.logger.Printf("failed to retrieve default channel for bundle, continuing: %v", err) + continue + } else { + defaultChannels[b.PackageName] = p.DefaultChannelName + defaultChannel = p.DefaultChannelName + } + } + o, err := cache.NewOperatorFromBundle(b, "", s.key, defaultChannel) + if err != nil { + s.logger.Printf("failed to construct operator from bundle, continuing: %v", err) + continue + } + o.ProvidedAPIs = o.ProvidedAPIs.StripPlural() + o.RequiredAPIs = o.RequiredAPIs.StripPlural() + o.Replaces = b.Replaces + EnsurePackageProperty(o, b.PackageName, b.Version) + operators = append(operators, o) + } + if err := it.Error(); err != nil { + return nil, fmt.Errorf("error encountered while listing bundles: %w", err) + } + + return &cache.Snapshot{Entries: operators}, nil +} + +func (a *registryClientAdapter) Sources(namespaces ...string) map[cache.SourceKey]cache.Source { + result := make(map[cache.SourceKey]cache.Source) + for key, client := range a.rcp.ClientsForNamespaces(namespaces...) { + result[cache.SourceKey(key)] = ®istrySource{ + key: cache.SourceKey(key), + client: client, + logger: a.logger, + } + } + return result +} + +func EnsurePackageProperty(o *cache.Operator, name, version string) { + for _, p := range o.Properties { + if p.Type == opregistry.PackageType { + return + } + } + prop := opregistry.PackageProperty{ + PackageName: name, + Version: version, + } + bytes, err := json.Marshal(prop) + if err != nil { + return + } + o.Properties = append(o.Properties, &api.Property{ + Type: opregistry.PackageType, + Value: string(bytes), + }) +} diff --git a/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/step_resolver.go b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/step_resolver.go index a696dfd657..7574dda57c 100644 --- a/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/step_resolver.go +++ b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/step_resolver.go @@ -17,7 +17,6 @@ import ( "github.com/operator-framework/operator-lifecycle-manager/pkg/api/client/clientset/versioned" v1alpha1listers "github.com/operator-framework/operator-lifecycle-manager/pkg/api/client/listers/operators/v1alpha1" controllerbundle "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/bundle" - "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry" "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/cache" "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/projection" "github.com/operator-framework/operator-lifecycle-manager/pkg/lib/operatorlister" @@ -31,7 +30,7 @@ var timeNow = func() metav1.Time { return metav1.NewTime(time.Now().UTC()) } type StepResolver interface { ResolveSteps(namespace string) ([]*v1alpha1.Step, []v1alpha1.BundleLookup, []*v1alpha1.Subscription, error) - Expire(key registry.CatalogKey) + Expire(key cache.SourceKey) } type OperatorStepResolver struct { @@ -48,7 +47,7 @@ type OperatorStepResolver struct { var _ StepResolver = &OperatorStepResolver{} func NewOperatorStepResolver(lister operatorlister.OperatorLister, client versioned.Interface, kubeclient kubernetes.Interface, - globalCatalogNamespace string, provider cache.RegistryClientProvider, log logrus.FieldLogger) *OperatorStepResolver { + globalCatalogNamespace string, provider RegistryClientProvider, log logrus.FieldLogger) *OperatorStepResolver { return &OperatorStepResolver{ subLister: lister.OperatorsV1alpha1().SubscriptionLister(), csvLister: lister.OperatorsV1alpha1().ClusterServiceVersionLister(), @@ -56,12 +55,12 @@ func NewOperatorStepResolver(lister operatorlister.OperatorLister, client versio client: client, kubeclient: kubeclient, globalCatalogNamespace: globalCatalogNamespace, - satResolver: NewDefaultSatResolver(cache.NewDefaultRegistryClientProvider(log, provider), lister.OperatorsV1alpha1().CatalogSourceLister(), log), + satResolver: NewDefaultSatResolver(SourceProviderFromRegistryClientProvider(provider, log), lister.OperatorsV1alpha1().CatalogSourceLister(), log), log: log, } } -func (r *OperatorStepResolver) Expire(key registry.CatalogKey) { +func (r *OperatorStepResolver) Expire(key cache.SourceKey) { r.satResolver.cache.Expire(key) } @@ -109,7 +108,7 @@ func (r *OperatorStepResolver) ResolveSteps(namespace string) ([]*v1alpha1.Step, if sub.Spec.Channel != "" && sub.Spec.Channel != sourceInfo.Channel { continue } - subCatalogKey := registry.CatalogKey{ + subCatalogKey := cache.SourceKey{ Name: sub.Spec.CatalogSource, Namespace: sub.Spec.CatalogSourceNamespace, } diff --git a/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/step_resolver_test.go b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/step_resolver_test.go index eeed54fee1..77faa38b9c 100644 --- a/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/step_resolver_test.go +++ b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/step_resolver_test.go @@ -23,7 +23,6 @@ import ( "github.com/operator-framework/operator-lifecycle-manager/pkg/api/client/clientset/versioned/fake" "github.com/operator-framework/operator-lifecycle-manager/pkg/api/client/informers/externalversions" controllerbundle "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/bundle" - "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry" resolvercache "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/cache" "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/solver" "github.com/operator-framework/operator-lifecycle-manager/pkg/lib/operatorlister" @@ -50,7 +49,7 @@ var ( func TestResolver(t *testing.T) { const namespace = "catsrc-namespace" - catalog := registry.CatalogKey{Name: "catsrc", Namespace: namespace} + catalog := resolvercache.SourceKey{Name: "catsrc", Namespace: namespace} type resolverTestOut struct { steps [][]*v1alpha1.Step @@ -62,7 +61,7 @@ func TestResolver(t *testing.T) { type resolverTest struct { name string clusterState []runtime.Object - bundlesByCatalog map[registry.CatalogKey][]*api.Bundle + bundlesByCatalog map[resolvercache.SourceKey][]*api.Bundle out resolverTestOut } @@ -77,7 +76,7 @@ func TestResolver(t *testing.T) { clusterState: []runtime.Object{ newSub(namespace, "package", "", catalog), }, - bundlesByCatalog: map[registry.CatalogKey][]*api.Bundle{ + bundlesByCatalog: map[resolvercache.SourceKey][]*api.Bundle{ catalog: { bundle("bundle", "package", "channel", "", nil, nil, nil, nil), }, @@ -114,7 +113,7 @@ func TestResolver(t *testing.T) { clusterState: []runtime.Object{ newSub(namespace, "a", "alpha", catalog), }, - bundlesByCatalog: map[registry.CatalogKey][]*api.Bundle{ + bundlesByCatalog: map[resolvercache.SourceKey][]*api.Bundle{ catalog: { bundle("bundle", "package", "channel", "", nil, nil, nil, nil), }, @@ -137,7 +136,7 @@ func TestResolver(t *testing.T) { clusterState: []runtime.Object{ newSub(namespace, "a", "alpha", catalog), }, - bundlesByCatalog: map[registry.CatalogKey][]*api.Bundle{ + bundlesByCatalog: map[resolvercache.SourceKey][]*api.Bundle{ catalog: { bundle("bundle", "a", "channel", "", nil, nil, nil, nil), }, @@ -160,7 +159,7 @@ func TestResolver(t *testing.T) { clusterState: []runtime.Object{ newSub(namespace, "a", "alpha", catalog, withStartingCSV("notfound")), }, - bundlesByCatalog: map[registry.CatalogKey][]*api.Bundle{ + bundlesByCatalog: map[resolvercache.SourceKey][]*api.Bundle{ catalog: { bundle("bundle", "a", "alpha", "", nil, nil, nil, nil), }, @@ -183,7 +182,7 @@ func TestResolver(t *testing.T) { clusterState: []runtime.Object{ newSub(namespace, "a", "alpha", catalog), }, - bundlesByCatalog: map[registry.CatalogKey][]*api.Bundle{ + bundlesByCatalog: map[resolvercache.SourceKey][]*api.Bundle{ catalog: { bundle("a.v1", "a", "alpha", "", nil, nil, nil, nil), }, @@ -202,7 +201,7 @@ func TestResolver(t *testing.T) { clusterState: []runtime.Object{ newSub(namespace, "a", "alpha", catalog), }, - bundlesByCatalog: map[registry.CatalogKey][]*api.Bundle{ + bundlesByCatalog: map[resolvercache.SourceKey][]*api.Bundle{ catalog: { bundle("b.v1", "b", "beta", "", Provides1, nil, nil, nil), bundle("a.v1", "a", "alpha", "", nil, Requires1, nil, nil), @@ -224,7 +223,7 @@ func TestResolver(t *testing.T) { clusterState: []runtime.Object{ newSub(namespace, "a", "alpha", catalog), }, - bundlesByCatalog: map[registry.CatalogKey][]*api.Bundle{ + bundlesByCatalog: map[resolvercache.SourceKey][]*api.Bundle{ catalog: { bundle("a.v1", "a", "alpha", "", nil, Requires1, nil, nil), stripManifests(withBundlePath(bundle("b.v1", "b", "beta", "", Provides1, nil, nil, nil), "quay.io/test/bundle@sha256:abcd")), @@ -270,7 +269,7 @@ func TestResolver(t *testing.T) { clusterState: []runtime.Object{ newSub(namespace, "a", "alpha", catalog), }, - bundlesByCatalog: map[registry.CatalogKey][]*api.Bundle{ + bundlesByCatalog: map[resolvercache.SourceKey][]*api.Bundle{ catalog: { withBundleObject(bundle("b.v1", "b", "beta", "", Provides1, nil, nil, nil), u(&rbacv1.RoleBinding{TypeMeta: metav1.TypeMeta{Kind: "RoleBinding", APIVersion: "rbac.authorization.k8s.io/v1"}, ObjectMeta: metav1.ObjectMeta{Name: "test-rb"}})), bundle("a.v1", "a", "alpha", "", nil, Requires1, nil, nil), @@ -292,7 +291,7 @@ func TestResolver(t *testing.T) { clusterState: []runtime.Object{ newSub(namespace, "a", "alpha", catalog), }, - bundlesByCatalog: map[registry.CatalogKey][]*api.Bundle{ + bundlesByCatalog: map[resolvercache.SourceKey][]*api.Bundle{ catalog: { withBundleObject(bundle("b.v1", "b", "beta", "", Provides1, nil, nil, nil), u(&corev1.Service{TypeMeta: metav1.TypeMeta{Kind: "Service", APIVersion: ""}, ObjectMeta: metav1.ObjectMeta{Name: "test-service"}})), bundle("a.v1", "a", "alpha", "", nil, Requires1, nil, nil), @@ -314,7 +313,7 @@ func TestResolver(t *testing.T) { clusterState: []runtime.Object{ newSub(namespace, "a", "alpha", catalog), }, - bundlesByCatalog: map[registry.CatalogKey][]*api.Bundle{ + bundlesByCatalog: map[resolvercache.SourceKey][]*api.Bundle{ catalog: { bundle("a.v1", "a", "alpha", "", nil, Requires1, nil, nil), }, @@ -348,7 +347,7 @@ func TestResolver(t *testing.T) { existingSub(namespace, "a.v1", "a", "alpha", catalog), existingOperator(namespace, "a.v1", "a", "alpha", "", Provides1, nil, nil, nil), }, - bundlesByCatalog: map[registry.CatalogKey][]*api.Bundle{ + bundlesByCatalog: map[resolvercache.SourceKey][]*api.Bundle{ catalog: { bundle("a.v1", "a", "alpha", "", Provides1, nil, nil, nil), }, @@ -362,7 +361,7 @@ func TestResolver(t *testing.T) { existingSub(namespace, "b.v1", "b", "alpha", catalog), existingOperator(namespace, "a.v1", "a", "alpha", "", Provides1, nil, nil, nil), }, - bundlesByCatalog: map[registry.CatalogKey][]*api.Bundle{ + bundlesByCatalog: map[resolvercache.SourceKey][]*api.Bundle{ catalog: { bundle("a.v1", "a", "alpha", "", Provides1, nil, nil, nil), bundle("b.v1", "b", "alpha", "", Provides1, nil, nil, nil), @@ -380,7 +379,7 @@ func TestResolver(t *testing.T) { newSub(namespace, "a", "alpha", catalog), newSub(namespace, "a", "beta", catalog), }, - bundlesByCatalog: map[registry.CatalogKey][]*api.Bundle{ + bundlesByCatalog: map[resolvercache.SourceKey][]*api.Bundle{ catalog: { bundle("a.v1", "a", "alpha", "", Provides1, nil, nil, nil), bundle("a.v2", "a", "beta", "", Provides1, nil, nil, nil), @@ -406,7 +405,7 @@ func TestResolver(t *testing.T) { return }(), }, - bundlesByCatalog: map[registry.CatalogKey][]*api.Bundle{ + bundlesByCatalog: map[resolvercache.SourceKey][]*api.Bundle{ catalog: { bundle("a.v1", "a", "alpha", "", Provides1, nil, nil, nil), }, @@ -439,7 +438,7 @@ func TestResolver(t *testing.T) { existingSub(namespace, "a.v1", "a", "alpha", catalog), existingOperator(namespace, "a.v1", "a", "alpha", "", Provides1, nil, nil, nil), }, - bundlesByCatalog: map[registry.CatalogKey][]*api.Bundle{ + bundlesByCatalog: map[resolvercache.SourceKey][]*api.Bundle{ catalog: { bundle("a.v2", "a", "alpha", "a.v1", Provides1, nil, nil, nil), bundle("a.v1", "a", "alpha", "", Provides1, nil, nil, nil), @@ -460,7 +459,7 @@ func TestResolver(t *testing.T) { existingSub(namespace, "a.v1", "a", "alpha", catalog), existingOperator(namespace, "a.v1", "a", "alpha", "", Provides1, nil, nil, nil), }, - bundlesByCatalog: map[registry.CatalogKey][]*api.Bundle{catalog: { + bundlesByCatalog: map[resolvercache.SourceKey][]*api.Bundle{catalog: { stripManifests(withBundlePath(bundle("a.v2", "a", "alpha", "a.v1", Provides1, nil, nil, nil), "quay.io/test/bundle@sha256:abcd"))}, }, out: resolverTestOut{ @@ -501,7 +500,7 @@ func TestResolver(t *testing.T) { clusterState: []runtime.Object{ existingSub(namespace, "a.v1", "a", "alpha", catalog), }, - bundlesByCatalog: map[registry.CatalogKey][]*api.Bundle{ + bundlesByCatalog: map[resolvercache.SourceKey][]*api.Bundle{ catalog: { bundle("a.v1", "a", "alpha", "", Provides1, nil, nil, nil), }, @@ -520,7 +519,7 @@ func TestResolver(t *testing.T) { existingSub(namespace, "a.v1", "a", "alpha", catalog), existingOperator(namespace, "a.v1", "a", "alpha", "", Provides1, nil, nil, nil), }, - bundlesByCatalog: map[registry.CatalogKey][]*api.Bundle{ + bundlesByCatalog: map[resolvercache.SourceKey][]*api.Bundle{ catalog: { bundle("a.v1", "a", "alpha", "", nil, nil, nil, nil), bundle("a.v2", "a", "alpha", "a.v1", nil, Requires1, nil, nil), @@ -544,7 +543,7 @@ func TestResolver(t *testing.T) { existingSub(namespace, "a.v1", "a", "alpha", catalog), existingOperator(namespace, "a.v1", "a", "alpha", "", nil, nil, Provides1, nil), }, - bundlesByCatalog: map[registry.CatalogKey][]*api.Bundle{ + bundlesByCatalog: map[resolvercache.SourceKey][]*api.Bundle{ catalog: { bundle("a.v1", "a", "alpha", "", nil, nil, nil, nil), bundle("a.v2", "a", "alpha", "a.v1", nil, nil, nil, Requires1), @@ -569,7 +568,7 @@ func TestResolver(t *testing.T) { existingOperator(namespace, "a.v1", "a", "alpha", "", Provides1, nil, nil, nil), newSub(namespace, "b", "beta", catalog), }, - bundlesByCatalog: map[registry.CatalogKey][]*api.Bundle{ + bundlesByCatalog: map[resolvercache.SourceKey][]*api.Bundle{ catalog: { bundle("a.v1", "a", "alpha", "", nil, nil, nil, nil), bundle("a.v2", "a", "alpha", "a.v1", nil, nil, nil, nil), @@ -593,7 +592,7 @@ func TestResolver(t *testing.T) { existingSub(namespace, "a.v1", "a", "alpha", catalog), newSub(namespace, "b", "beta", catalog), }, - bundlesByCatalog: map[registry.CatalogKey][]*api.Bundle{ + bundlesByCatalog: map[resolvercache.SourceKey][]*api.Bundle{ catalog: { bundle("a.v1", "a", "alpha", "", Provides1, nil, nil, nil), bundle("b.v1", "b", "beta", "", nil, nil, nil, nil), @@ -615,7 +614,7 @@ func TestResolver(t *testing.T) { existingSub(namespace, "a.v1", "a", "alpha", catalog), newSub(namespace, "b", "beta", catalog), }, - bundlesByCatalog: map[registry.CatalogKey][]*api.Bundle{ + bundlesByCatalog: map[resolvercache.SourceKey][]*api.Bundle{ catalog: { bundle("a.v1", "a", "alpha", "", nil, nil, Provides1, nil), bundle("b.v1", "b", "beta", "", nil, nil, nil, nil), @@ -640,7 +639,7 @@ func TestResolver(t *testing.T) { existingSub(namespace, "b.v1", "b", "alpha", catalog), existingOperator(namespace, "b.v1", "b", "alpha", "", Provides2, Requires1, nil, nil), }, - bundlesByCatalog: map[registry.CatalogKey][]*api.Bundle{ + bundlesByCatalog: map[resolvercache.SourceKey][]*api.Bundle{ catalog: { bundle("a.v2", "a", "alpha", "a.v1", Provides3, Requires4, nil, nil), bundle("b.v2", "b", "alpha", "b.v1", Provides4, Requires3, nil, nil), @@ -666,7 +665,7 @@ func TestResolver(t *testing.T) { existingSub(namespace, "b.v1", "b", "alpha", catalog), existingOperator(namespace, "b.v1", "b", "alpha", "", nil, Requires1, nil, nil), }, - bundlesByCatalog: map[registry.CatalogKey][]*api.Bundle{ + bundlesByCatalog: map[resolvercache.SourceKey][]*api.Bundle{ catalog: { bundle("a.v2", "a", "alpha", "a.v1", nil, nil, nil, nil), bundle("b.v2", "b", "alpha", "b.v1", Provides1, nil, nil, nil), @@ -688,7 +687,7 @@ func TestResolver(t *testing.T) { clusterState: []runtime.Object{ newSub(namespace, "b", "alpha", catalog), }, - bundlesByCatalog: map[registry.CatalogKey][]*api.Bundle{ + bundlesByCatalog: map[resolvercache.SourceKey][]*api.Bundle{ catalog: { bundle("a.v1", "a", "alpha", "", Provides1, nil, nil, nil), bundle("a.v2", "a", "alpha", "a.v1", nil, nil, nil, nil), @@ -712,7 +711,7 @@ func TestResolver(t *testing.T) { existingSub(namespace, "a.v1", "a", "alpha", catalog), existingOperator(namespace, "a.v1", "a", "alpha", "", Provides1, nil, nil, nil), }, - bundlesByCatalog: map[registry.CatalogKey][]*api.Bundle{catalog: { + bundlesByCatalog: map[resolvercache.SourceKey][]*api.Bundle{catalog: { bundle("a.v3", "a", "alpha", "a.v2", nil, nil, nil, nil, withVersion("1.0.0"), withSkipRange("< 1.0.0")), }}, out: resolverTestOut{ @@ -732,9 +731,9 @@ func TestResolver(t *testing.T) { existingOperator(namespace, "a.v1", "a", "alpha", "", nil, Requires1, nil, nil), existingOperator(namespace, "b.v1", "b", "beta", "", Provides1, nil, nil, nil), }, - bundlesByCatalog: map[registry.CatalogKey][]*api.Bundle{ + bundlesByCatalog: map[resolvercache.SourceKey][]*api.Bundle{ catalog: { - bundle("a.v1", "a", "alpha", "", nil, nil, nil, nil), + bundle("a.v1", "a", "alpha", "", nil, Requires1, nil, nil), bundle("a.v2", "a", "alpha", "a.v1", nil, Requires1, nil, nil), bundle("b.v1", "b", "beta", "", Provides1, nil, nil, nil), bundle("b.v2", "b", "beta", "b.v1", Provides1, nil, nil, nil), @@ -757,7 +756,7 @@ func TestResolver(t *testing.T) { existingSub(namespace, "a.v1", "a", "alpha", catalog), existingOperator(namespace, "a.v1", "a", "alpha", "", Provides1, nil, nil, nil), }, - bundlesByCatalog: map[registry.CatalogKey][]*api.Bundle{catalog: { + bundlesByCatalog: map[resolvercache.SourceKey][]*api.Bundle{catalog: { bundle("a.v2", "a", "alpha", "", nil, nil, nil, nil, withVersion("1.0.0"), withSkipRange("< 1.0.0")), bundle("a.v3", "a", "alpha", "a.v2", nil, nil, nil, nil, withVersion("1.0.0"), withSkipRange("< 1.0.0")), bundle("a.v4", "a", "alpha", "a.v3", nil, nil, nil, nil, withVersion("1.0.0"), withSkipRange("< 1.0.0 !0.0.0")), @@ -776,7 +775,7 @@ func TestResolver(t *testing.T) { clusterState: []runtime.Object{ newSub(namespace, "a", "alpha", catalog, withStartingCSV("a.v2")), }, - bundlesByCatalog: map[registry.CatalogKey][]*api.Bundle{catalog: { + bundlesByCatalog: map[resolvercache.SourceKey][]*api.Bundle{catalog: { bundle("a.v1", "a", "alpha", "", nil, nil, nil, nil), bundle("a.v2", "a", "alpha", "a.v1", nil, nil, nil, nil), bundle("a.v3", "a", "alpha", "a.v2", nil, nil, nil, nil, withVersion("1.0.0"), withSkipRange("< 1.0.0")), @@ -796,7 +795,7 @@ func TestResolver(t *testing.T) { existingSub(namespace, "a.v1", "a", "alpha", catalog), existingOperator(namespace, "a.v1", "a", "alpha", "", Provides1, nil, nil, nil), }, - bundlesByCatalog: map[registry.CatalogKey][]*api.Bundle{catalog: { + bundlesByCatalog: map[resolvercache.SourceKey][]*api.Bundle{catalog: { bundle("a.v2", "a", "alpha", "", nil, nil, nil, nil, withVersion("1.0.0"), withSkips([]string{"a.v1"})), bundle("a.v3", "a", "alpha", "a.v2", nil, nil, nil, nil, withVersion("1.0.0"), withSkips([]string{"a.v1"})), }}, @@ -826,26 +825,21 @@ func TestResolver(t *testing.T) { lister.OperatorsV1alpha1().RegisterClusterServiceVersionLister(namespace, informerFactory.Operators().V1alpha1().ClusterServiceVersions().Lister()) kClientFake := k8sfake.NewSimpleClientset() - stubSnapshot := &resolvercache.CatalogSnapshot{} - for _, bundles := range tt.bundlesByCatalog { + ssp := make(resolvercache.StaticSourceProvider) + for catalog, bundles := range tt.bundlesByCatalog { + snapshot := &resolvercache.Snapshot{} for _, bundle := range bundles { op, err := resolvercache.NewOperatorFromBundle(bundle, "", catalog, "") if err != nil { t.Fatalf("unexpected error: %v", err) } - stubSnapshot.Operators = append(stubSnapshot.Operators, op) + snapshot.Entries = append(snapshot.Entries, op) } - } - stubCache := &stubOperatorCacheProvider{ - noc: &resolvercache.NamespacedOperatorCache{ - Snapshots: map[registry.CatalogKey]*resolvercache.CatalogSnapshot{ - catalog: stubSnapshot, - }, - }, + ssp[catalog] = snapshot } log := logrus.New() satresolver := &SatResolver{ - cache: stubCache, + cache: resolvercache.New(ssp), log: log, } resolver := NewOperatorStepResolver(lister, clientFake, kClientFake, "", nil, log) @@ -886,13 +880,13 @@ func (stub *stubOperatorCacheProvider) Namespaced(namespaces ...string) resolver return stub.noc } -func (stub *stubOperatorCacheProvider) Expire(key registry.CatalogKey) { +func (stub *stubOperatorCacheProvider) Expire(key resolvercache.SourceKey) { return } func TestNamespaceResolverRBAC(t *testing.T) { namespace := "catsrc-namespace" - catalog := registry.CatalogKey{"catsrc", namespace} + catalog := resolvercache.SourceKey{"catsrc", namespace} simplePermissions := []v1alpha1.StrategyDeploymentPermissions{ { @@ -978,23 +972,18 @@ func TestNamespaceResolverRBAC(t *testing.T) { lister.OperatorsV1alpha1().RegisterSubscriptionLister(namespace, informerFactory.Operators().V1alpha1().Subscriptions().Lister()) lister.OperatorsV1alpha1().RegisterClusterServiceVersionLister(namespace, informerFactory.Operators().V1alpha1().ClusterServiceVersions().Lister()) - stubSnapshot := &resolvercache.CatalogSnapshot{} + stubSnapshot := &resolvercache.Snapshot{} for _, bundle := range tt.bundlesInCatalog { op, err := resolvercache.NewOperatorFromBundle(bundle, "", catalog, "") if err != nil { t.Fatalf("unexpected error: %v", err) } - stubSnapshot.Operators = append(stubSnapshot.Operators, op) - } - stubCache := &stubOperatorCacheProvider{ - noc: &resolvercache.NamespacedOperatorCache{ - Snapshots: map[registry.CatalogKey]*resolvercache.CatalogSnapshot{ - catalog: stubSnapshot, - }, - }, + stubSnapshot.Entries = append(stubSnapshot.Entries, op) } satresolver := &SatResolver{ - cache: stubCache, + cache: resolvercache.New(resolvercache.StaticSourceProvider{ + catalog: stubSnapshot, + }), } resolver := NewOperatorStepResolver(lister, clientFake, kClientFake, "", nil, logrus.New()) resolver.satResolver = satresolver @@ -1038,7 +1027,7 @@ func withStartingCSV(name string) subOption { } } -func newSub(namespace, pkg, channel string, catalog registry.CatalogKey, option ...subOption) *v1alpha1.Subscription { +func newSub(namespace, pkg, channel string, catalog resolvercache.SourceKey, option ...subOption) *v1alpha1.Subscription { s := &v1alpha1.Subscription{ ObjectMeta: metav1.ObjectMeta{ Name: pkg + "-" + channel, @@ -1057,7 +1046,7 @@ func newSub(namespace, pkg, channel string, catalog registry.CatalogKey, option return s } -func updatedSub(namespace, currentOperatorName, installedOperatorName, pkg, channel string, catalog registry.CatalogKey, option ...subOption) *v1alpha1.Subscription { +func updatedSub(namespace, currentOperatorName, installedOperatorName, pkg, channel string, catalog resolvercache.SourceKey, option ...subOption) *v1alpha1.Subscription { s := &v1alpha1.Subscription{ ObjectMeta: metav1.ObjectMeta{ Name: pkg + "-" + channel, @@ -1080,7 +1069,7 @@ func updatedSub(namespace, currentOperatorName, installedOperatorName, pkg, chan return s } -func existingSub(namespace, operatorName, pkg, channel string, catalog registry.CatalogKey) *v1alpha1.Subscription { +func existingSub(namespace, operatorName, pkg, channel string, catalog resolvercache.SourceKey) *v1alpha1.Subscription { return &v1alpha1.Subscription{ ObjectMeta: metav1.ObjectMeta{ Name: pkg + "-" + channel, @@ -1109,7 +1098,7 @@ func existingOperator(namespace, operatorName, pkg, channel, replaces string, pr return csv } -func bundleSteps(bundle *api.Bundle, ns, replaces string, catalog registry.CatalogKey) []*v1alpha1.Step { +func bundleSteps(bundle *api.Bundle, ns, replaces string, catalog resolvercache.SourceKey) []*v1alpha1.Step { if replaces == "" { csv, _ := V1alpha1CSVFromBundle(bundle) replaces = csv.Spec.Replaces @@ -1142,7 +1131,7 @@ func withoutResourceKind(kind string, steps []*v1alpha1.Step) []*v1alpha1.Step { return filtered } -func subSteps(namespace, operatorName, pkgName, channelName string, catalog registry.CatalogKey) []*v1alpha1.Step { +func subSteps(namespace, operatorName, pkgName, channelName string, catalog resolvercache.SourceKey) []*v1alpha1.Step { sub := &v1alpha1.Subscription{ ObjectMeta: metav1.ObjectMeta{ Name: strings.Join([]string{pkgName, channelName, catalog.Name, catalog.Namespace}, "-"), diff --git a/staging/operator-lifecycle-manager/pkg/fakes/fake_resolver.go b/staging/operator-lifecycle-manager/pkg/fakes/fake_resolver.go index 07ec94e0f3..46f1ba9f8e 100644 --- a/staging/operator-lifecycle-manager/pkg/fakes/fake_resolver.go +++ b/staging/operator-lifecycle-manager/pkg/fakes/fake_resolver.go @@ -5,15 +5,15 @@ import ( "sync" "github.com/operator-framework/api/pkg/operators/v1alpha1" - "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry" "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver" + "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/cache" ) type FakeStepResolver struct { - ExpireStub func(registry.CatalogKey) + ExpireStub func(cache.SourceKey) expireMutex sync.RWMutex expireArgsForCall []struct { - arg1 registry.CatalogKey + arg1 cache.SourceKey } ResolveStepsStub func(string) ([]*v1alpha1.Step, []v1alpha1.BundleLookup, []*v1alpha1.Subscription, error) resolveStepsMutex sync.RWMutex @@ -36,10 +36,10 @@ type FakeStepResolver struct { invocationsMutex sync.RWMutex } -func (fake *FakeStepResolver) Expire(arg1 registry.CatalogKey) { +func (fake *FakeStepResolver) Expire(arg1 cache.SourceKey) { fake.expireMutex.Lock() fake.expireArgsForCall = append(fake.expireArgsForCall, struct { - arg1 registry.CatalogKey + arg1 cache.SourceKey }{arg1}) fake.recordInvocation("Expire", []interface{}{arg1}) fake.expireMutex.Unlock() @@ -54,13 +54,13 @@ func (fake *FakeStepResolver) ExpireCallCount() int { return len(fake.expireArgsForCall) } -func (fake *FakeStepResolver) ExpireCalls(stub func(registry.CatalogKey)) { +func (fake *FakeStepResolver) ExpireCalls(stub func(cache.SourceKey)) { fake.expireMutex.Lock() defer fake.expireMutex.Unlock() fake.ExpireStub = stub } -func (fake *FakeStepResolver) ExpireArgsForCall(i int) registry.CatalogKey { +func (fake *FakeStepResolver) ExpireArgsForCall(i int) cache.SourceKey { fake.expireMutex.RLock() defer fake.expireMutex.RUnlock() argsForCall := fake.expireArgsForCall[i] diff --git a/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/operators/catalog/operator.go b/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/operators/catalog/operator.go index c91029a3a7..e83e77c282 100644 --- a/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/operators/catalog/operator.go +++ b/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/operators/catalog/operator.go @@ -55,6 +55,7 @@ import ( "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/grpc" "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/reconciler" "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver" + resolvercache "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/cache" "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/solver" "github.com/operator-framework/operator-lifecycle-manager/pkg/lib/catalogsource" "github.com/operator-framework/operator-lifecycle-manager/pkg/lib/clients" @@ -463,7 +464,7 @@ func (o *Operator) syncSourceState(state grpc.SourceState) { switch state.State { case connectivity.Ready: - o.resolver.Expire(state.Key) + o.resolver.Expire(resolvercache.SourceKey(state.Key)) if o.namespace == state.Key.Namespace { namespaces, err := index.CatalogSubscriberNamespaces(o.catalogSubscriberIndexer, state.Key.Name, state.Key.Namespace) diff --git a/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/cache.go b/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/cache.go index c26f30d434..10ca6d07d8 100644 --- a/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/cache.go +++ b/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/cache.go @@ -2,88 +2,140 @@ package cache import ( "context" - "encoding/json" "fmt" + "io" "sort" "sync" "time" - "k8s.io/apimachinery/pkg/util/errors" - "github.com/sirupsen/logrus" + "k8s.io/apimachinery/pkg/util/errors" "github.com/operator-framework/operator-lifecycle-manager/pkg/api/client/listers/operators/v1alpha1" - "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry" - "github.com/operator-framework/operator-registry/pkg/api" - "github.com/operator-framework/operator-registry/pkg/client" - opregistry "github.com/operator-framework/operator-registry/pkg/registry" + "github.com/operator-framework/operator-lifecycle-manager/pkg/lib/operatorlister" ) -type RegistryClientProvider interface { - ClientsForNamespaces(namespaces ...string) map[registry.CatalogKey]client.Interface +const existingOperatorKey = "@existing" + +type SourceKey struct { + Name string + Namespace string } -type DefaultRegistryClientProvider struct { - logger logrus.FieldLogger - s RegistryClientProvider +func (k *SourceKey) String() string { + return fmt.Sprintf("%s/%s", k.Name, k.Namespace) } -func NewDefaultRegistryClientProvider(log logrus.FieldLogger, store RegistryClientProvider) *DefaultRegistryClientProvider { - return &DefaultRegistryClientProvider{ - logger: log, - s: store, +func (k *SourceKey) Empty() bool { + return k.Name == "" && k.Namespace == "" +} + +func (k *SourceKey) Equal(compare SourceKey) bool { + return k.Name == compare.Name && k.Namespace == compare.Namespace +} + +// Virtual indicates if this is a "virtual" catalog representing the currently installed operators in a namespace +func (k *SourceKey) Virtual() bool { + return k.Name == existingOperatorKey && k.Namespace != "" +} + +func NewVirtualSourceKey(namespace string) SourceKey { + return SourceKey{ + Name: existingOperatorKey, + Namespace: namespace, } } -func (rcp *DefaultRegistryClientProvider) ClientsForNamespaces(namespaces ...string) map[registry.CatalogKey]client.Interface { - return rcp.s.ClientsForNamespaces(namespaces...) +type Source interface { + Snapshot(context.Context) (*Snapshot, error) +} + +type SourceProvider interface { + // TODO: namespaces parameter is an artifact of SourceStore + Sources(namespaces ...string) map[SourceKey]Source +} + +type StaticSourceProvider map[SourceKey]Source + +func (p StaticSourceProvider) Sources(namespaces ...string) map[SourceKey]Source { + result := make(map[SourceKey]Source) + for key, source := range p { + for _, namespace := range namespaces { + if key.Namespace == namespace { + result[key] = source + break + } + } + } + return result } type OperatorCacheProvider interface { Namespaced(namespaces ...string) MultiCatalogOperatorFinder - Expire(catalog registry.CatalogKey) + Expire(catalog SourceKey) } -type OperatorCache struct { - logger logrus.FieldLogger - rcp RegistryClientProvider +type Cache struct { + logger logrus.StdLogger + sp SourceProvider catsrcLister v1alpha1.CatalogSourceLister - snapshots map[registry.CatalogKey]*CatalogSnapshot + snapshots map[SourceKey]*snapshotHeader ttl time.Duration sem chan struct{} m sync.RWMutex } -const defaultCatalogSourcePriority int = 0 - type catalogSourcePriority int -var _ OperatorCacheProvider = &OperatorCache{} +var _ OperatorCacheProvider = &Cache{} + +type Option func(*Cache) + +func WithLogger(logger logrus.StdLogger) Option { + return func(c *Cache) { + c.logger = logger + } +} + +func WithCatalogSourceLister(catalogSourceLister v1alpha1.CatalogSourceLister) Option { + return func(c *Cache) { + c.catsrcLister = catalogSourceLister + } +} -func NewOperatorCache(rcp RegistryClientProvider, log logrus.FieldLogger, catsrcLister v1alpha1.CatalogSourceLister) *OperatorCache { +func New(sp SourceProvider, options ...Option) *Cache { const ( MaxConcurrentSnapshotUpdates = 4 ) - return &OperatorCache{ - logger: log, - rcp: rcp, - catsrcLister: catsrcLister, - snapshots: make(map[registry.CatalogKey]*CatalogSnapshot), + cache := Cache{ + logger: func() logrus.StdLogger { + logger := logrus.New() + logger.SetOutput(io.Discard) + return logger + }(), + sp: sp, + catsrcLister: operatorlister.NewLister().OperatorsV1alpha1().CatalogSourceLister(), + snapshots: make(map[SourceKey]*snapshotHeader), ttl: 5 * time.Minute, sem: make(chan struct{}, MaxConcurrentSnapshotUpdates), } + + for _, opt := range options { + opt(&cache) + } + + return &cache } type NamespacedOperatorCache struct { - Namespaces []string - existing *registry.CatalogKey - Snapshots map[registry.CatalogKey]*CatalogSnapshot + existing *SourceKey + snapshots map[SourceKey]*snapshotHeader } func (c *NamespacedOperatorCache) Error() error { var errs []error - for key, snapshot := range c.Snapshots { + for key, snapshot := range c.snapshots { snapshot.m.Lock() err := snapshot.err snapshot.m.Unlock() @@ -94,7 +146,7 @@ func (c *NamespacedOperatorCache) Error() error { return errors.NewAggregate(errs) } -func (c *OperatorCache) Expire(catalog registry.CatalogKey) { +func (c *Cache) Expire(catalog SourceKey) { c.m.Lock() defer c.m.Unlock() s, ok := c.snapshots[catalog] @@ -104,31 +156,30 @@ func (c *OperatorCache) Expire(catalog registry.CatalogKey) { s.expiry = time.Unix(0, 0) } -func (c *OperatorCache) Namespaced(namespaces ...string) MultiCatalogOperatorFinder { +func (c *Cache) Namespaced(namespaces ...string) MultiCatalogOperatorFinder { const ( CachePopulateTimeout = time.Minute ) now := time.Now() - clients := c.rcp.ClientsForNamespaces(namespaces...) + sources := c.sp.Sources(namespaces...) result := NamespacedOperatorCache{ - Namespaces: namespaces, - Snapshots: make(map[registry.CatalogKey]*CatalogSnapshot), + snapshots: make(map[SourceKey]*snapshotHeader), } - var misses []registry.CatalogKey + var misses []SourceKey func() { c.m.RLock() defer c.m.RUnlock() - for key := range clients { + for key := range sources { snapshot, ok := c.snapshots[key] if ok { func() { snapshot.m.RLock() defer snapshot.m.RUnlock() - if !snapshot.Expired(now) && snapshot.Operators != nil && len(snapshot.Operators) > 0 { - result.Snapshots[key] = snapshot + if snapshot.Valid(now) { + result.snapshots[key] = snapshot } else { misses = append(misses, key) } @@ -148,9 +199,9 @@ func (c *OperatorCache) Namespaced(namespaces ...string) MultiCatalogOperatorFin defer c.m.Unlock() // Take the opportunity to clear expired snapshots while holding the lock. - var expired []registry.CatalogKey + var expired []SourceKey for key, snapshot := range c.snapshots { - if snapshot.Expired(now) { + if !snapshot.Valid(now) { snapshot.Cancel() expired = append(expired, key) } @@ -162,8 +213,8 @@ func (c *OperatorCache) Namespaced(namespaces ...string) MultiCatalogOperatorFin // Check for any snapshots that were populated while waiting to acquire the lock. var found int for i := range misses { - if snapshot, ok := c.snapshots[misses[i]]; ok && !snapshot.Expired(now) && snapshot.Operators != nil && len(snapshot.Operators) > 0 { - result.Snapshots[misses[i]] = snapshot + if hdr, ok := c.snapshots[misses[i]]; ok && hdr.Valid(now) { + result.snapshots[misses[i]] = hdr misses[found], misses[i] = misses[i], misses[found] found++ } @@ -173,120 +224,49 @@ func (c *OperatorCache) Namespaced(namespaces ...string) MultiCatalogOperatorFin for _, miss := range misses { ctx, cancel := context.WithTimeout(context.Background(), CachePopulateTimeout) - catsrcPriority := defaultCatalogSourcePriority - // Ignoring error and treat catsrc priority as 0 if not found. - catsrc, err := c.catsrcLister.CatalogSources(miss.Namespace).Get(miss.Name) - if err == nil { - catsrcPriority = catsrc.Spec.Priority - } - - s := CatalogSnapshot{ - logger: c.logger.WithField("catalog", miss), - Key: miss, - expiry: now.Add(c.ttl), - pop: cancel, - Priority: catalogSourcePriority(catsrcPriority), + hdr := snapshotHeader{ + key: miss, + expiry: now.Add(c.ttl), + pop: cancel, } - s.m.Lock() - c.snapshots[miss] = &s - result.Snapshots[miss] = &s - go c.populate(ctx, &s, clients[miss]) - } - - return &result -} -func (c *OperatorCache) populate(ctx context.Context, snapshot *CatalogSnapshot, registry client.Interface) { - defer snapshot.m.Unlock() - defer func() { - // Don't cache an errorred snapshot. - if snapshot.err != nil { - snapshot.expiry = time.Time{} + // Ignoring error and treat catsrc priority as 0 if not found. + if catsrc, _ := c.catsrcLister.CatalogSources(miss.Namespace).Get(miss.Name); catsrc != nil { + hdr.priority = catsrc.Spec.Priority } - }() - c.sem <- struct{}{} - defer func() { <-c.sem }() + hdr.m.Lock() + c.snapshots[miss] = &hdr + result.snapshots[miss] = &hdr - // Fetching default channels this way makes many round trips - // -- may need to either add a new API to fetch all at once, - // or embed the information into Bundle. - defaultChannels := make(map[string]string) - - it, err := registry.ListBundles(ctx) - if err != nil { - snapshot.logger.Errorf("failed to list bundles: %s", err.Error()) - snapshot.err = err - return + go func(ctx context.Context, hdr *snapshotHeader, source Source) { + defer hdr.m.Unlock() + c.sem <- struct{}{} + defer func() { <-c.sem }() + hdr.snapshot, hdr.err = source.Snapshot(ctx) + }(ctx, &hdr, sources[miss]) } - c.logger.WithField("catalog", snapshot.Key.String()).Debug("updating cache") - var operators []*Operator - for b := it.Next(); b != nil; b = it.Next() { - defaultChannel, ok := defaultChannels[b.PackageName] - if !ok { - if p, err := registry.GetPackage(ctx, b.PackageName); err != nil { - snapshot.logger.Warnf("failed to retrieve default channel for bundle, continuing: %v", err) - continue - } else { - defaultChannels[b.PackageName] = p.DefaultChannelName - defaultChannel = p.DefaultChannelName - } - } - o, err := NewOperatorFromBundle(b, "", snapshot.Key, defaultChannel) - if err != nil { - snapshot.logger.Warnf("failed to construct operator from bundle, continuing: %v", err) - continue - } - o.ProvidedAPIs = o.ProvidedAPIs.StripPlural() - o.RequiredAPIs = o.RequiredAPIs.StripPlural() - o.Replaces = b.Replaces - EnsurePackageProperty(o, b.PackageName, b.Version) - operators = append(operators, o) - } - if err := it.Error(); err != nil { - snapshot.logger.Warnf("error encountered while listing bundles: %s", err.Error()) - snapshot.err = err - } - snapshot.Operators = operators -} -func EnsurePackageProperty(o *Operator, name, version string) { - for _, p := range o.Properties { - if p.Type == opregistry.PackageType { - return - } - } - prop := opregistry.PackageProperty{ - PackageName: name, - Version: version, - } - bytes, err := json.Marshal(prop) - if err != nil { - return - } - o.Properties = append(o.Properties, &api.Property{ - Type: opregistry.PackageType, - Value: string(bytes), - }) + return &result } -func (c *NamespacedOperatorCache) Catalog(k registry.CatalogKey) OperatorFinder { +func (c *NamespacedOperatorCache) Catalog(k SourceKey) OperatorFinder { // all catalogs match the empty catalog if k.Empty() { return c } - if snapshot, ok := c.Snapshots[k]; ok { + if snapshot, ok := c.snapshots[k]; ok { return snapshot } return EmptyOperatorFinder{} } -func (c *NamespacedOperatorCache) FindPreferred(preferred *registry.CatalogKey, p ...OperatorPredicate) []*Operator { +func (c *NamespacedOperatorCache) FindPreferred(preferred *SourceKey, preferredNamespace string, p ...OperatorPredicate) []*Operator { var result []*Operator if preferred != nil && preferred.Empty() { preferred = nil } - sorted := NewSortableSnapshots(c.existing, preferred, c.Namespaces, c.Snapshots) + sorted := newSortableSnapshots(c.existing, preferred, preferredNamespace, c.snapshots) sort.Sort(sorted) for _, snapshot := range sorted.snapshots { result = append(result, snapshot.Find(p...)...) @@ -294,65 +274,71 @@ func (c *NamespacedOperatorCache) FindPreferred(preferred *registry.CatalogKey, return result } -func (c *NamespacedOperatorCache) WithExistingOperators(snapshot *CatalogSnapshot) MultiCatalogOperatorFinder { +func (c *NamespacedOperatorCache) WithExistingOperators(snapshot *Snapshot, namespace string) MultiCatalogOperatorFinder { + key := NewVirtualSourceKey(namespace) o := &NamespacedOperatorCache{ - Namespaces: c.Namespaces, - existing: &snapshot.Key, - Snapshots: c.Snapshots, + existing: &key, + snapshots: map[SourceKey]*snapshotHeader{ + key: { + key: key, + snapshot: snapshot, + }, + }, + } + for k, v := range c.snapshots { + o.snapshots[k] = v } - o.Snapshots[snapshot.Key] = snapshot return o } func (c *NamespacedOperatorCache) Find(p ...OperatorPredicate) []*Operator { - return c.FindPreferred(nil, p...) + return c.FindPreferred(nil, "", p...) +} + +type Snapshot struct { + Entries []*Operator } -type CatalogSnapshot struct { - logger logrus.FieldLogger - Key registry.CatalogKey - expiry time.Time - Operators []*Operator - m sync.RWMutex - pop context.CancelFunc - Priority catalogSourcePriority - err error +var _ Source = &Snapshot{} + +func (s *Snapshot) Snapshot(context.Context) (*Snapshot, error) { + return s, nil } -func (s *CatalogSnapshot) Cancel() { - s.pop() +type snapshotHeader struct { + snapshot *Snapshot + + key SourceKey + expiry time.Time + m sync.RWMutex + pop context.CancelFunc + err error + priority int } -func (s *CatalogSnapshot) Expired(at time.Time) bool { - return !at.Before(s.expiry) +func (hdr *snapshotHeader) Cancel() { + hdr.pop() } -// NewRunningOperatorSnapshot creates a CatalogSnapshot that represents a set of existing installed operators -// in the cluster. -func NewRunningOperatorSnapshot(logger logrus.FieldLogger, key registry.CatalogKey, o []*Operator) *CatalogSnapshot { - return &CatalogSnapshot{ - logger: logger, - Key: key, - Operators: o, - } +func (hdr *snapshotHeader) Valid(at time.Time) bool { + hdr.m.RLock() + defer hdr.m.RUnlock() + return hdr.snapshot != nil && hdr.err == nil && at.Before(hdr.expiry) } -type SortableSnapshots struct { - snapshots []*CatalogSnapshot - namespaces map[string]int - preferred *registry.CatalogKey - existing *registry.CatalogKey +type sortableSnapshots struct { + snapshots []*snapshotHeader + preferredNamespace string + preferred *SourceKey + existing *SourceKey } -func NewSortableSnapshots(existing, preferred *registry.CatalogKey, namespaces []string, snapshots map[registry.CatalogKey]*CatalogSnapshot) SortableSnapshots { - sorted := SortableSnapshots{ - existing: existing, - preferred: preferred, - snapshots: make([]*CatalogSnapshot, 0), - namespaces: make(map[string]int, 0), - } - for i, n := range namespaces { - sorted.namespaces[n] = i +func newSortableSnapshots(existing, preferred *SourceKey, preferredNamespace string, snapshots map[SourceKey]*snapshotHeader) sortableSnapshots { + sorted := sortableSnapshots{ + existing: existing, + preferred: preferred, + snapshots: make([]*snapshotHeader, 0), + preferredNamespace: preferredNamespace, } for _, s := range snapshots { sorted.snapshots = append(sorted.snapshots, s) @@ -360,60 +346,69 @@ func NewSortableSnapshots(existing, preferred *registry.CatalogKey, namespaces [ return sorted } -var _ sort.Interface = SortableSnapshots{} +var _ sort.Interface = sortableSnapshots{} // Len is the number of elements in the collection. -func (s SortableSnapshots) Len() int { +func (s sortableSnapshots) Len() int { return len(s.snapshots) } // Less reports whether the element with // index i should sort before the element with index j. -func (s SortableSnapshots) Less(i, j int) bool { +func (s sortableSnapshots) Less(i, j int) bool { // existing operators are preferred over catalog operators if s.existing != nil && - s.snapshots[i].Key.Name == s.existing.Name && - s.snapshots[i].Key.Namespace == s.existing.Namespace { + s.snapshots[i].key.Name == s.existing.Name && + s.snapshots[i].key.Namespace == s.existing.Namespace { return true } if s.existing != nil && - s.snapshots[j].Key.Name == s.existing.Name && - s.snapshots[j].Key.Namespace == s.existing.Namespace { + s.snapshots[j].key.Name == s.existing.Name && + s.snapshots[j].key.Namespace == s.existing.Namespace { return false } // preferred catalog is less than all other catalogs if s.preferred != nil && - s.snapshots[i].Key.Name == s.preferred.Name && - s.snapshots[i].Key.Namespace == s.preferred.Namespace { + s.snapshots[i].key.Name == s.preferred.Name && + s.snapshots[i].key.Namespace == s.preferred.Namespace { return true } if s.preferred != nil && - s.snapshots[j].Key.Name == s.preferred.Name && - s.snapshots[j].Key.Namespace == s.preferred.Namespace { + s.snapshots[j].key.Name == s.preferred.Name && + s.snapshots[j].key.Namespace == s.preferred.Namespace { return false } // the rest are sorted first on priority, namespace and then by name - if s.snapshots[i].Priority != s.snapshots[j].Priority { - return s.snapshots[i].Priority > s.snapshots[j].Priority + if s.snapshots[i].priority != s.snapshots[j].priority { + return s.snapshots[i].priority > s.snapshots[j].priority } - if s.snapshots[i].Key.Namespace != s.snapshots[j].Key.Namespace { - return s.namespaces[s.snapshots[i].Key.Namespace] < s.namespaces[s.snapshots[j].Key.Namespace] + + if s.snapshots[i].key.Namespace != s.snapshots[j].key.Namespace { + if s.snapshots[i].key.Namespace == s.preferredNamespace { + return true + } + if s.snapshots[j].key.Namespace == s.preferredNamespace { + return false + } } - return s.snapshots[i].Key.Name < s.snapshots[j].Key.Name + return s.snapshots[i].key.Name < s.snapshots[j].key.Name } // Swap swaps the elements with indexes i and j. -func (s SortableSnapshots) Swap(i, j int) { +func (s sortableSnapshots) Swap(i, j int) { s.snapshots[i], s.snapshots[j] = s.snapshots[j], s.snapshots[i] } -func (s *CatalogSnapshot) Find(p ...OperatorPredicate) []*Operator { +func (s *snapshotHeader) Find(p ...OperatorPredicate) []*Operator { s.m.RLock() defer s.m.RUnlock() - return Filter(s.Operators, p...) + if s.snapshot == nil { + return nil + } + return Filter(s.snapshot.Entries, p...) } type OperatorFinder interface { @@ -421,9 +416,9 @@ type OperatorFinder interface { } type MultiCatalogOperatorFinder interface { - Catalog(registry.CatalogKey) OperatorFinder - FindPreferred(*registry.CatalogKey, ...OperatorPredicate) []*Operator - WithExistingOperators(*CatalogSnapshot) MultiCatalogOperatorFinder + Catalog(SourceKey) OperatorFinder + FindPreferred(preferred *SourceKey, preferredNamespace string, predicates ...OperatorPredicate) []*Operator + WithExistingOperators(snapshot *Snapshot, namespace string) MultiCatalogOperatorFinder Error() error OperatorFinder } diff --git a/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/operators.go b/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/operators.go index 1df76b270d..1c43077935 100644 --- a/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/operators.go +++ b/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/operators.go @@ -11,7 +11,6 @@ import ( "k8s.io/apimachinery/pkg/runtime/schema" "github.com/operator-framework/api/pkg/operators/v1alpha1" - "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry" "github.com/operator-framework/operator-registry/pkg/api" opregistry "github.com/operator-framework/operator-registry/pkg/registry" ) @@ -194,7 +193,7 @@ type OperatorSourceInfo struct { Package string Channel string StartingCSV string - Catalog registry.CatalogKey + Catalog SourceKey DefaultChannel bool Subscription *v1alpha1.Subscription } @@ -203,7 +202,7 @@ func (i *OperatorSourceInfo) String() string { return fmt.Sprintf("%s/%s in %s/%s", i.Package, i.Channel, i.Catalog.Name, i.Catalog.Namespace) } -var NoCatalog = registry.CatalogKey{Name: "", Namespace: ""} +var NoCatalog = SourceKey{Name: "", Namespace: ""} var ExistingOperator = OperatorSourceInfo{Package: "", Channel: "", StartingCSV: "", Catalog: NoCatalog, DefaultChannel: false} type Operator struct { @@ -219,7 +218,7 @@ type Operator struct { Properties []*api.Property } -func NewOperatorFromBundle(bundle *api.Bundle, startingCSV string, sourceKey registry.CatalogKey, defaultChannel string) (*Operator, error) { +func NewOperatorFromBundle(bundle *api.Bundle, startingCSV string, sourceKey SourceKey, defaultChannel string) (*Operator, error) { parsedVersion, err := semver.ParseTolerant(bundle.Version) version := &parsedVersion if err != nil { diff --git a/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/predicates.go b/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/predicates.go index 7e8649d5dc..292dda4805 100644 --- a/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/predicates.go +++ b/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/predicates.go @@ -7,7 +7,6 @@ import ( "github.com/blang/semver/v4" - "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry" "github.com/operator-framework/operator-registry/pkg/api" opregistry "github.com/operator-framework/operator-registry/pkg/registry" ) @@ -140,10 +139,10 @@ func (l labelPredicate) String() string { } type catalogPredicate struct { - key registry.CatalogKey + key SourceKey } -func CatalogPredicate(key registry.CatalogKey) OperatorPredicate { +func CatalogPredicate(key SourceKey) OperatorPredicate { return catalogPredicate{key: key} } diff --git a/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/installabletypes.go b/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/installabletypes.go index ba9cd602bf..695c2b07ab 100644 --- a/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/installabletypes.go +++ b/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/installabletypes.go @@ -4,7 +4,6 @@ import ( "fmt" "strings" - "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry" "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/cache" "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/solver" operatorregistry "github.com/operator-framework/operator-registry/pkg/registry" @@ -37,13 +36,13 @@ func (i *BundleInstallable) AddConstraint(c solver.Constraint) { i.constraints = append(i.constraints, c) } -func (i *BundleInstallable) BundleSourceInfo() (string, string, registry.CatalogKey, error) { +func (i *BundleInstallable) BundleSourceInfo() (string, string, cache.SourceKey, error) { info := strings.Split(i.identifier.String(), "/") // This should be enforced by Kube naming constraints if len(info) != 4 { - return "", "", registry.CatalogKey{}, fmt.Errorf("Unable to parse identifier %s for source info", i.identifier) + return "", "", cache.SourceKey{}, fmt.Errorf("Unable to parse identifier %s for source info", i.identifier) } - catalog := registry.CatalogKey{ + catalog := cache.SourceKey{ Name: info[0], Namespace: info[1], } @@ -52,7 +51,7 @@ func (i *BundleInstallable) BundleSourceInfo() (string, string, registry.Catalog return csvName, channel, catalog, nil } -func bundleId(bundle, channel string, catalog registry.CatalogKey) solver.Identifier { +func bundleId(bundle, channel string, catalog cache.SourceKey) solver.Identifier { return solver.IdentifierFromString(fmt.Sprintf("%s/%s/%s", catalog.String(), channel, bundle)) } diff --git a/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/instrumented_resolver.go b/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/instrumented_resolver.go index d8af9350cd..453ae4a0b8 100644 --- a/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/instrumented_resolver.go +++ b/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/instrumented_resolver.go @@ -4,8 +4,7 @@ import ( "time" "github.com/operator-framework/api/pkg/operators/v1alpha1" - - "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry" + "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/cache" ) type InstrumentedResolver struct { @@ -35,6 +34,6 @@ func (ir *InstrumentedResolver) ResolveSteps(namespace string) ([]*v1alpha1.Step return steps, lookups, subs, err } -func (ir *InstrumentedResolver) Expire(key registry.CatalogKey) { +func (ir *InstrumentedResolver) Expire(key cache.SourceKey) { ir.resolver.Expire(key) } diff --git a/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/resolver.go b/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/resolver.go index 06d9c10c71..38e779acd3 100644 --- a/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/resolver.go +++ b/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/resolver.go @@ -13,7 +13,6 @@ import ( "github.com/operator-framework/api/pkg/operators/v1alpha1" v1alpha1listers "github.com/operator-framework/operator-lifecycle-manager/pkg/api/client/listers/operators/v1alpha1" - "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry" "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/cache" "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/projection" "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/solver" @@ -30,10 +29,10 @@ type SatResolver struct { log logrus.FieldLogger } -func NewDefaultSatResolver(rcp cache.RegistryClientProvider, catsrcLister v1alpha1listers.CatalogSourceLister, log logrus.FieldLogger) *SatResolver { +func NewDefaultSatResolver(rcp cache.SourceProvider, catsrcLister v1alpha1listers.CatalogSourceLister, logger logrus.FieldLogger) *SatResolver { return &SatResolver{ - cache: cache.NewOperatorCache(rcp, log, catsrcLister), - log: log, + cache: cache.New(rcp, cache.WithLogger(logger), cache.WithCatalogSourceLister(catsrcLister)), + log: logger, } } @@ -61,9 +60,9 @@ func (r *SatResolver) SolveOperators(namespaces []string, csvs []*v1alpha1.Clust if err != nil { return nil, err } - namespacedCache := r.cache.Namespaced(namespaces...).WithExistingOperators(existingSnapshot) + namespacedCache := r.cache.Namespaced(namespaces...).WithExistingOperators(existingSnapshot, namespaces[0]) - _, existingInstallables, err := r.getBundleInstallables(registry.NewVirtualCatalogKey(namespaces[0]), existingSnapshot.Find(), namespacedCache, visited) + _, existingInstallables, err := r.getBundleInstallables(namespaces[0], cache.Filter(existingSnapshot.Entries, cache.True()), namespacedCache, visited) if err != nil { return nil, err } @@ -177,7 +176,7 @@ func (r *SatResolver) getSubscriptionInstallables(sub *v1alpha1.Subscription, cu var cachePredicates, channelPredicates []cache.OperatorPredicate installables := make(map[solver.Identifier]solver.Installable, 0) - catalog := registry.CatalogKey{ + catalog := cache.SourceKey{ Name: sub.Spec.CatalogSource, Namespace: sub.Spec.CatalogSourceNamespace, } @@ -259,7 +258,7 @@ func (r *SatResolver) getSubscriptionInstallables(sub *v1alpha1.Subscription, cu for _, o := range cache.Filter(sortedBundles, channelPredicates...) { predicates := append(cachePredicates, cache.CSVNamePredicate(o.Name)) stack := namespacedCache.Catalog(catalog).Find(predicates...) - id, installable, err := r.getBundleInstallables(catalog, stack, namespacedCache, visited) + id, installable, err := r.getBundleInstallables(sub.Namespace, stack, namespacedCache, visited) if err != nil { return nil, err } @@ -288,12 +287,12 @@ func (r *SatResolver) getSubscriptionInstallables(sub *v1alpha1.Subscription, cu // safe to remove this conflict if properties // annotations are made mandatory for // resolution. - c.AddConflict(bundleId(current.Name, current.Channel(), registry.NewVirtualCatalogKey(sub.GetNamespace()))) + c.AddConflict(bundleId(current.Name, current.Channel(), cache.NewVirtualSourceKey(sub.GetNamespace()))) } depIds = append(depIds, c.Identifier()) } if current != nil { - depIds = append(depIds, bundleId(current.Name, current.Channel(), registry.NewVirtualCatalogKey(sub.GetNamespace()))) + depIds = append(depIds, bundleId(current.Name, current.Channel(), cache.NewVirtualSourceKey(sub.GetNamespace()))) } // all candidates added as options for this constraint @@ -303,7 +302,7 @@ func (r *SatResolver) getSubscriptionInstallables(sub *v1alpha1.Subscription, cu return installables, nil } -func (r *SatResolver) getBundleInstallables(catalog registry.CatalogKey, bundleStack []*cache.Operator, namespacedCache cache.MultiCatalogOperatorFinder, visited map[*cache.Operator]*BundleInstallable) (map[solver.Identifier]struct{}, map[solver.Identifier]*BundleInstallable, error) { +func (r *SatResolver) getBundleInstallables(preferredNamespace string, bundleStack []*cache.Operator, namespacedCache cache.MultiCatalogOperatorFinder, visited map[*cache.Operator]*BundleInstallable) (map[solver.Identifier]struct{}, map[solver.Identifier]*BundleInstallable, error) { errs := make([]error, 0) installables := make(map[solver.Identifier]*BundleInstallable, 0) // all installables, including dependencies @@ -370,7 +369,8 @@ func (r *SatResolver) getBundleInstallables(catalog registry.CatalogKey, bundleS )) } } - sortedBundles, err := r.sortBundles(namespacedCache.FindPreferred(&bundle.SourceInfo.Catalog, sourcePredicate)) + + sortedBundles, err := r.sortBundles(namespacedCache.FindPreferred(&bundle.SourceInfo.Catalog, preferredNamespace, sourcePredicate)) if err != nil { errs = append(errs, err) continue @@ -422,7 +422,7 @@ func (r *SatResolver) inferProperties(csv *v1alpha1.ClusterServiceVersion, subs // package against catalog contents, updates to the // Subscription spec could result in a bad package // inference. - for _, entry := range r.cache.Namespaced(sub.Namespace).Catalog(registry.CatalogKey{Namespace: sub.Spec.CatalogSourceNamespace, Name: sub.Spec.CatalogSource}).Find(cache.And(cache.CSVNamePredicate(csv.Name), cache.PkgPredicate(sub.Spec.Package))) { + for _, entry := range r.cache.Namespaced(sub.Spec.CatalogSourceNamespace).Catalog(cache.SourceKey{Namespace: sub.Spec.CatalogSourceNamespace, Name: sub.Spec.CatalogSource}).Find(cache.And(cache.CSVNamePredicate(csv.Name), cache.PkgPredicate(sub.Spec.Package))) { if pkg := entry.Package(); pkg != "" { packages[pkg] = struct{}{} } @@ -455,8 +455,8 @@ func (r *SatResolver) inferProperties(csv *v1alpha1.ClusterServiceVersion, subs return properties, nil } -func (r *SatResolver) newSnapshotForNamespace(namespace string, subs []*v1alpha1.Subscription, csvs []*v1alpha1.ClusterServiceVersion) (*cache.CatalogSnapshot, error) { - existingOperatorCatalog := registry.NewVirtualCatalogKey(namespace) +func (r *SatResolver) newSnapshotForNamespace(namespace string, subs []*v1alpha1.Subscription, csvs []*v1alpha1.ClusterServiceVersion) (*cache.Snapshot, error) { + existingOperatorCatalog := cache.NewVirtualSourceKey(namespace) // build a catalog snapshot of CSVs without subscriptions csvSubscriptions := make(map[*v1alpha1.ClusterServiceVersion]*v1alpha1.Subscription) for _, sub := range subs { @@ -517,7 +517,7 @@ func (r *SatResolver) newSnapshotForNamespace(namespace string, subs []*v1alpha1 r.log.Infof("considered csvs without properties annotation during resolution: %v", names) } - return cache.NewRunningOperatorSnapshot(r.log, existingOperatorCatalog, standaloneOperators), nil + return &cache.Snapshot{Entries: standaloneOperators}, nil } func (r *SatResolver) addInvariants(namespacedCache cache.MultiCatalogOperatorFinder, installables map[solver.Identifier]solver.Installable) { @@ -579,17 +579,17 @@ func (r *SatResolver) addInvariants(namespacedCache cache.MultiCatalogOperatorFi func (r *SatResolver) sortBundles(bundles []*cache.Operator) ([]*cache.Operator, error) { // assume bundles have been passed in sorted by catalog already - catalogOrder := make([]registry.CatalogKey, 0) + catalogOrder := make([]cache.SourceKey, 0) type PackageChannel struct { Package, Channel string DefaultChannel bool } // TODO: for now channels will be sorted lexicographically - channelOrder := make(map[registry.CatalogKey][]PackageChannel) + channelOrder := make(map[cache.SourceKey][]PackageChannel) // partition by catalog -> channel -> bundle - partitionedBundles := map[registry.CatalogKey]map[PackageChannel][]*cache.Operator{} + partitionedBundles := map[cache.SourceKey]map[PackageChannel][]*cache.Operator{} for _, b := range bundles { pc := PackageChannel{ Package: b.Package(), diff --git a/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/source_registry.go b/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/source_registry.go new file mode 100644 index 0000000000..6c5c11998d --- /dev/null +++ b/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/source_registry.go @@ -0,0 +1,109 @@ +package resolver + +import ( + "context" + "encoding/json" + "fmt" + + "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry" + "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/cache" + "github.com/operator-framework/operator-registry/pkg/api" + "github.com/operator-framework/operator-registry/pkg/client" + opregistry "github.com/operator-framework/operator-registry/pkg/registry" + "github.com/sirupsen/logrus" +) + +type RegistryClientProvider interface { + ClientsForNamespaces(namespaces ...string) map[registry.CatalogKey]client.Interface +} + +type registryClientAdapter struct { + rcp RegistryClientProvider + logger logrus.StdLogger +} + +func SourceProviderFromRegistryClientProvider(rcp RegistryClientProvider, logger logrus.StdLogger) cache.SourceProvider { + return ®istryClientAdapter{ + rcp: rcp, + logger: logger, + } +} + +type registrySource struct { + key cache.SourceKey + client client.Interface + logger logrus.StdLogger +} + +func (s *registrySource) Snapshot(ctx context.Context) (*cache.Snapshot, error) { + // Fetching default channels this way makes many round trips + // -- may need to either add a new API to fetch all at once, + // or embed the information into Bundle. + defaultChannels := make(map[string]string) + + it, err := s.client.ListBundles(ctx) + if err != nil { + return nil, fmt.Errorf("failed to list bundles: %w", err) + } + + var operators []*cache.Operator + for b := it.Next(); b != nil; b = it.Next() { + defaultChannel, ok := defaultChannels[b.PackageName] + if !ok { + if p, err := s.client.GetPackage(ctx, b.PackageName); err != nil { + s.logger.Printf("failed to retrieve default channel for bundle, continuing: %v", err) + continue + } else { + defaultChannels[b.PackageName] = p.DefaultChannelName + defaultChannel = p.DefaultChannelName + } + } + o, err := cache.NewOperatorFromBundle(b, "", s.key, defaultChannel) + if err != nil { + s.logger.Printf("failed to construct operator from bundle, continuing: %v", err) + continue + } + o.ProvidedAPIs = o.ProvidedAPIs.StripPlural() + o.RequiredAPIs = o.RequiredAPIs.StripPlural() + o.Replaces = b.Replaces + EnsurePackageProperty(o, b.PackageName, b.Version) + operators = append(operators, o) + } + if err := it.Error(); err != nil { + return nil, fmt.Errorf("error encountered while listing bundles: %w", err) + } + + return &cache.Snapshot{Entries: operators}, nil +} + +func (a *registryClientAdapter) Sources(namespaces ...string) map[cache.SourceKey]cache.Source { + result := make(map[cache.SourceKey]cache.Source) + for key, client := range a.rcp.ClientsForNamespaces(namespaces...) { + result[cache.SourceKey(key)] = ®istrySource{ + key: cache.SourceKey(key), + client: client, + logger: a.logger, + } + } + return result +} + +func EnsurePackageProperty(o *cache.Operator, name, version string) { + for _, p := range o.Properties { + if p.Type == opregistry.PackageType { + return + } + } + prop := opregistry.PackageProperty{ + PackageName: name, + Version: version, + } + bytes, err := json.Marshal(prop) + if err != nil { + return + } + o.Properties = append(o.Properties, &api.Property{ + Type: opregistry.PackageType, + Value: string(bytes), + }) +} diff --git a/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/step_resolver.go b/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/step_resolver.go index a696dfd657..7574dda57c 100644 --- a/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/step_resolver.go +++ b/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/step_resolver.go @@ -17,7 +17,6 @@ import ( "github.com/operator-framework/operator-lifecycle-manager/pkg/api/client/clientset/versioned" v1alpha1listers "github.com/operator-framework/operator-lifecycle-manager/pkg/api/client/listers/operators/v1alpha1" controllerbundle "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/bundle" - "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry" "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/cache" "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/projection" "github.com/operator-framework/operator-lifecycle-manager/pkg/lib/operatorlister" @@ -31,7 +30,7 @@ var timeNow = func() metav1.Time { return metav1.NewTime(time.Now().UTC()) } type StepResolver interface { ResolveSteps(namespace string) ([]*v1alpha1.Step, []v1alpha1.BundleLookup, []*v1alpha1.Subscription, error) - Expire(key registry.CatalogKey) + Expire(key cache.SourceKey) } type OperatorStepResolver struct { @@ -48,7 +47,7 @@ type OperatorStepResolver struct { var _ StepResolver = &OperatorStepResolver{} func NewOperatorStepResolver(lister operatorlister.OperatorLister, client versioned.Interface, kubeclient kubernetes.Interface, - globalCatalogNamespace string, provider cache.RegistryClientProvider, log logrus.FieldLogger) *OperatorStepResolver { + globalCatalogNamespace string, provider RegistryClientProvider, log logrus.FieldLogger) *OperatorStepResolver { return &OperatorStepResolver{ subLister: lister.OperatorsV1alpha1().SubscriptionLister(), csvLister: lister.OperatorsV1alpha1().ClusterServiceVersionLister(), @@ -56,12 +55,12 @@ func NewOperatorStepResolver(lister operatorlister.OperatorLister, client versio client: client, kubeclient: kubeclient, globalCatalogNamespace: globalCatalogNamespace, - satResolver: NewDefaultSatResolver(cache.NewDefaultRegistryClientProvider(log, provider), lister.OperatorsV1alpha1().CatalogSourceLister(), log), + satResolver: NewDefaultSatResolver(SourceProviderFromRegistryClientProvider(provider, log), lister.OperatorsV1alpha1().CatalogSourceLister(), log), log: log, } } -func (r *OperatorStepResolver) Expire(key registry.CatalogKey) { +func (r *OperatorStepResolver) Expire(key cache.SourceKey) { r.satResolver.cache.Expire(key) } @@ -109,7 +108,7 @@ func (r *OperatorStepResolver) ResolveSteps(namespace string) ([]*v1alpha1.Step, if sub.Spec.Channel != "" && sub.Spec.Channel != sourceInfo.Channel { continue } - subCatalogKey := registry.CatalogKey{ + subCatalogKey := cache.SourceKey{ Name: sub.Spec.CatalogSource, Namespace: sub.Spec.CatalogSourceNamespace, } From a46d4c87658dee281e532a3be11e6f4a6240f64a Mon Sep 17 00:00:00 2001 From: Tim Flannagan Date: Thu, 2 Sep 2021 13:07:43 -0400 Subject: [PATCH 03/15] Remove unneeded replace pin for sigs.k8s.io/structured-merge-diff (#2338) Update the root go.mod and remove the replace pin for sigs.k8s.io/structured-merge-diff. It looks like the "// pinned because no tag supports 1.18 yet" message may have also been an artifact of removing the helm replace pin that was previously in place. Signed-off-by: timflannagan Upstream-repository: operator-lifecycle-manager Upstream-commit: 3eb0d7be413d7c185441cb3fc81dadb2b67706e7 --- staging/operator-lifecycle-manager/go.mod | 3 --- 1 file changed, 3 deletions(-) diff --git a/staging/operator-lifecycle-manager/go.mod b/staging/operator-lifecycle-manager/go.mod index c96c72b6f9..39d01b89ca 100644 --- a/staging/operator-lifecycle-manager/go.mod +++ b/staging/operator-lifecycle-manager/go.mod @@ -64,7 +64,4 @@ replace ( // Patch for a race condition involving metadata-only // informers until it can be resolved upstream: sigs.k8s.io/controller-runtime v0.9.2 => github.com/benluddy/controller-runtime v0.9.3-0.20210720171926-9bcb99bd9bd3 - - // pinned because no tag supports 1.18 yet - sigs.k8s.io/structured-merge-diff => sigs.k8s.io/structured-merge-diff v1.0.1-0.20191108220359-b1b620dd3f06 ) From 5ee92ca8deee558e7663cdb48ccf5530ca6cd638 Mon Sep 17 00:00:00 2001 From: Ish Shah Date: Thu, 2 Sep 2021 10:18:44 -0700 Subject: [PATCH 04/15] Add Timestamp to Scorecard Test Results (#137) * add timestamp field Signed-off-by: Ish Shah * Add timestamp to scorecard test result Signed-off-by: Ish Shah * Change type and struct Signed-off-by: Ish Shah * Update pkg/apis/scorecard/v1alpha3/test_types.go Co-authored-by: Joe Lanford * make manifests/generate; Signed-off-by: Ish Shah * Update pkg/apis/scorecard/v1alpha3/test_types.go Co-authored-by: Joe Lanford Co-authored-by: Joe Lanford Upstream-repository: api Upstream-commit: 7d591fff8bd551160e51dedef17debbe52145019 --- staging/api/pkg/apis/scorecard/v1alpha3/test_types.go | 2 ++ .../api/pkg/apis/scorecard/v1alpha3/zz_generated.deepcopy.go | 1 + 2 files changed, 3 insertions(+) diff --git a/staging/api/pkg/apis/scorecard/v1alpha3/test_types.go b/staging/api/pkg/apis/scorecard/v1alpha3/test_types.go index cba7d3a58c..52678524d2 100644 --- a/staging/api/pkg/apis/scorecard/v1alpha3/test_types.go +++ b/staging/api/pkg/apis/scorecard/v1alpha3/test_types.go @@ -28,6 +28,8 @@ type TestResult struct { Errors []string `json:"errors,omitempty"` // Suggestions is a list of suggestions for the user to improve their score (if applicable) Suggestions []string `json:"suggestions,omitempty"` + // CreationTimestamp of the result from an individual test + CreationTimestamp metav1.Time `json:"creationTimestamp,omitempty"` } // TestStatus contains collection of testResults. diff --git a/staging/api/pkg/apis/scorecard/v1alpha3/zz_generated.deepcopy.go b/staging/api/pkg/apis/scorecard/v1alpha3/zz_generated.deepcopy.go index 8f4e5aad6a..3f60a88ba3 100644 --- a/staging/api/pkg/apis/scorecard/v1alpha3/zz_generated.deepcopy.go +++ b/staging/api/pkg/apis/scorecard/v1alpha3/zz_generated.deepcopy.go @@ -207,6 +207,7 @@ func (in *TestResult) DeepCopyInto(out *TestResult) { *out = make([]string, len(*in)) copy(*out, *in) } + in.CreationTimestamp.DeepCopyInto(&out.CreationTimestamp) } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TestResult. From 63b841586de95d0abfa6b272829e3f363b39c008 Mon Sep 17 00:00:00 2001 From: Josef Karasek Date: Fri, 3 Sep 2021 16:38:54 +0200 Subject: [PATCH 05/15] Add validation for Kind and APIVersion (#152) * Add validation for Kind and APIVersion Signed-off-by: Josef Karasek * Update pkg/validation/internal/csv.go Co-authored-by: Eric Stroczynski Co-authored-by: Eric Stroczynski Upstream-repository: api Upstream-commit: c9b1e7ef82b8081a3eb52c48d0ca9039f2e3a27e --- staging/api/pkg/validation/internal/csv.go | 14 ++++++++++++++ .../api/pkg/validation/internal/csv.go | 14 ++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/staging/api/pkg/validation/internal/csv.go b/staging/api/pkg/validation/internal/csv.go index 8da328f7ff..ea7145d078 100644 --- a/staging/api/pkg/validation/internal/csv.go +++ b/staging/api/pkg/validation/internal/csv.go @@ -48,6 +48,8 @@ func validateCSV(csv *v1alpha1.ClusterServiceVersion) errors.ManifestResult { result.Add(checkFields(*csv)...) // validate case sensitive annotation names result.Add(ValidateAnnotationNames(csv.GetAnnotations(), csv.GetName())...) + // validate Version and Kind + result.Add(validateVersionKind(csv)...) return result } @@ -194,3 +196,15 @@ func validateInstallModes(csv *v1alpha1.ClusterServiceVersion) (errs []errors.Er } return errs } + +// validateVersionKind checks presence of GroupVersionKind.Version and GroupVersionKind.Kind +func validateVersionKind(csv *v1alpha1.ClusterServiceVersion) (errs []errors.Error) { + gvk := csv.GroupVersionKind() + if gvk.Version == "" { + errs = append(errs, errors.ErrInvalidCSV("'apiVersion' is missing", csv.GetName())) + } + if gvk.Kind == "" { + errs = append(errs, errors.ErrInvalidCSV("'kind' is missing", csv.GetName())) + } + return +} diff --git a/vendor/github.com/operator-framework/api/pkg/validation/internal/csv.go b/vendor/github.com/operator-framework/api/pkg/validation/internal/csv.go index 8da328f7ff..ea7145d078 100644 --- a/vendor/github.com/operator-framework/api/pkg/validation/internal/csv.go +++ b/vendor/github.com/operator-framework/api/pkg/validation/internal/csv.go @@ -48,6 +48,8 @@ func validateCSV(csv *v1alpha1.ClusterServiceVersion) errors.ManifestResult { result.Add(checkFields(*csv)...) // validate case sensitive annotation names result.Add(ValidateAnnotationNames(csv.GetAnnotations(), csv.GetName())...) + // validate Version and Kind + result.Add(validateVersionKind(csv)...) return result } @@ -194,3 +196,15 @@ func validateInstallModes(csv *v1alpha1.ClusterServiceVersion) (errs []errors.Er } return errs } + +// validateVersionKind checks presence of GroupVersionKind.Version and GroupVersionKind.Kind +func validateVersionKind(csv *v1alpha1.ClusterServiceVersion) (errs []errors.Error) { + gvk := csv.GroupVersionKind() + if gvk.Version == "" { + errs = append(errs, errors.ErrInvalidCSV("'apiVersion' is missing", csv.GetName())) + } + if gvk.Kind == "" { + errs = append(errs, errors.ErrInvalidCSV("'kind' is missing", csv.GetName())) + } + return +} From 4314d89a7871643d0043eaf4e6838c61daa58e30 Mon Sep 17 00:00:00 2001 From: Ben Luddy Date: Tue, 7 Sep 2021 13:37:23 -0400 Subject: [PATCH 06/15] Remove hardcoded references to the registry gRPC API from the resolver packages. (#2340) * Stop using the registry's Bundle proto type for resolution. The resolver component does not care whether a given cache entry was populated by use of the registry gRPC API, so it should ultimately be possible to drop the "Bundle" field from cache entries altogether. For now, catalog-operator's "step resolver" still depends on a Bundle proto field in order to unpack inline (as opposed to image-based) packages. Signed-off-by: Ben Luddy * Remove exported resolver cache entry creation funcs. NewOperatorForBundle and NewOperatorFromV1Alpha1CSV couple the resolver cache package to the registry gRPC API and the operators/v1alpha1 CSV API, respectively. They're effectively used only by the resolver package, so they can be moved there and unexported. The remaining calls to NewOperatorFromV1Alpha1CSV can be extracted from core resolver logic into a Source implementation that is responsible for the conversion from ClusterServiceVersion to cache.Snapshot entry, and the remaining call to NewOperatorFromBundle is used only by the Source implementation based on the registry gRPC API. Signed-off-by: Ben Luddy Upstream-repository: operator-lifecycle-manager Upstream-commit: b849eb79c6fbb1c445ed3e9945e1668f6066ea6e --- .../pkg/controller/operators/olm/labeler.go | 47 +- .../controller/operators/olm/labeler_test.go | 11 +- .../pkg/controller/operators/olm/operator.go | 5 +- .../controller/operators/olm/operatorgroup.go | 8 +- .../registry/resolver/cache/cache_test.go | 25 - .../registry/resolver/cache/operators.go | 355 +--------- .../registry/resolver/cache/operators_test.go | 610 ------------------ .../registry/resolver/cache/predicates.go | 67 +- .../controller/registry/resolver/resolver.go | 203 +++++- .../registry/resolver/resolver_test.go | 345 ++++++++-- .../registry/resolver/source_registry.go | 132 +++- .../registry/resolver/source_registry_test.go | 394 +++++++++++ .../registry/resolver/step_resolver.go | 90 ++- .../registry/resolver/step_resolver_test.go | 4 +- .../controller/registry/resolver/util_test.go | 114 +++- .../pkg/controller/operators/olm/labeler.go | 47 +- .../pkg/controller/operators/olm/operator.go | 5 +- .../controller/operators/olm/operatorgroup.go | 8 +- .../registry/resolver/cache/operators.go | 355 +--------- .../registry/resolver/cache/predicates.go | 67 +- .../controller/registry/resolver/resolver.go | 203 +++++- .../registry/resolver/source_registry.go | 132 +++- .../registry/resolver/step_resolver.go | 90 ++- 23 files changed, 1645 insertions(+), 1672 deletions(-) create mode 100644 staging/operator-lifecycle-manager/pkg/controller/registry/resolver/source_registry_test.go diff --git a/staging/operator-lifecycle-manager/pkg/controller/operators/olm/labeler.go b/staging/operator-lifecycle-manager/pkg/controller/operators/olm/labeler.go index c0d003da5c..77d16234a8 100644 --- a/staging/operator-lifecycle-manager/pkg/controller/operators/olm/labeler.go +++ b/staging/operator-lifecycle-manager/pkg/controller/operators/olm/labeler.go @@ -1,8 +1,13 @@ package olm import ( + "fmt" + "strings" + + "github.com/operator-framework/api/pkg/operators/v1alpha1" "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/cache" "github.com/operator-framework/operator-registry/pkg/registry" + opregistry "github.com/operator-framework/operator-registry/pkg/registry" extv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" extv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" "k8s.io/apimachinery/pkg/labels" @@ -13,9 +18,41 @@ const ( APILabelKeyPrefix = "olm.api." ) -type operatorSurface interface { - GetProvidedAPIs() cache.APISet - GetRequiredAPIs() cache.APISet +type operatorSurface struct { + ProvidedAPIs cache.APISet + RequiredAPIs cache.APISet +} + +func apiSurfaceOfCSV(csv *v1alpha1.ClusterServiceVersion) (*operatorSurface, error) { + surface := operatorSurface{ + ProvidedAPIs: cache.EmptyAPISet(), + RequiredAPIs: cache.EmptyAPISet(), + } + + for _, crdDef := range csv.Spec.CustomResourceDefinitions.Owned { + parts := strings.SplitN(crdDef.Name, ".", 2) + if len(parts) < 2 { + return nil, fmt.Errorf("error parsing crd name: %s", crdDef.Name) + } + surface.ProvidedAPIs[opregistry.APIKey{Plural: parts[0], Group: parts[1], Version: crdDef.Version, Kind: crdDef.Kind}] = struct{}{} + } + for _, api := range csv.Spec.APIServiceDefinitions.Owned { + surface.ProvidedAPIs[opregistry.APIKey{Group: api.Group, Version: api.Version, Kind: api.Kind, Plural: api.Name}] = struct{}{} + } + + requiredAPIs := cache.EmptyAPISet() + for _, crdDef := range csv.Spec.CustomResourceDefinitions.Required { + parts := strings.SplitN(crdDef.Name, ".", 2) + if len(parts) < 2 { + return nil, fmt.Errorf("error parsing crd name: %s", crdDef.Name) + } + requiredAPIs[opregistry.APIKey{Plural: parts[0], Group: parts[1], Version: crdDef.Version, Kind: crdDef.Kind}] = struct{}{} + } + for _, api := range csv.Spec.APIServiceDefinitions.Required { + requiredAPIs[opregistry.APIKey{Group: api.Group, Version: api.Version, Kind: api.Kind, Plural: api.Name}] = struct{}{} + } + + return &surface, nil } // LabelSetsFor returns API label sets for the given object. @@ -35,14 +72,14 @@ func LabelSetsFor(obj interface{}) ([]labels.Set, error) { func labelSetsForOperatorSurface(surface operatorSurface) ([]labels.Set, error) { labelSet := labels.Set{} - for key := range surface.GetProvidedAPIs().StripPlural() { + for key := range surface.ProvidedAPIs.StripPlural() { hash, err := cache.APIKeyToGVKHash(key) if err != nil { return nil, err } labelSet[APILabelKeyPrefix+hash] = "provided" } - for key := range surface.GetRequiredAPIs().StripPlural() { + for key := range surface.RequiredAPIs.StripPlural() { hash, err := cache.APIKeyToGVKHash(key) if err != nil { return nil, err diff --git a/staging/operator-lifecycle-manager/pkg/controller/operators/olm/labeler_test.go b/staging/operator-lifecycle-manager/pkg/controller/operators/olm/labeler_test.go index ca3722e034..d662a90cae 100644 --- a/staging/operator-lifecycle-manager/pkg/controller/operators/olm/labeler_test.go +++ b/staging/operator-lifecycle-manager/pkg/controller/operators/olm/labeler_test.go @@ -3,7 +3,6 @@ package olm import ( "testing" - "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/cache" opregistry "github.com/operator-framework/operator-registry/pkg/registry" "github.com/stretchr/testify/require" "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" @@ -63,9 +62,9 @@ func TestLabelSetsFor(t *testing.T) { }, { name: "OperatorSurface/Provided", - obj: &cache.Operator{ + obj: operatorSurface{ ProvidedAPIs: map[opregistry.APIKey]struct{}{ - opregistry.APIKey{Group: "ghouls", Version: "v1alpha1", Kind: "Ghost", Plural: "Ghosts"}: {}, + {Group: "ghouls", Version: "v1alpha1", Kind: "Ghost", Plural: "Ghosts"}: {}, }, }, expected: []labels.Set{ @@ -76,12 +75,12 @@ func TestLabelSetsFor(t *testing.T) { }, { name: "OperatorSurface/ProvidedAndRequired", - obj: &cache.Operator{ + obj: operatorSurface{ ProvidedAPIs: map[opregistry.APIKey]struct{}{ - opregistry.APIKey{Group: "ghouls", Version: "v1alpha1", Kind: "Ghost", Plural: "Ghosts"}: {}, + {Group: "ghouls", Version: "v1alpha1", Kind: "Ghost", Plural: "Ghosts"}: {}, }, RequiredAPIs: map[opregistry.APIKey]struct{}{ - opregistry.APIKey{Group: "ghouls", Version: "v1alpha1", Kind: "Goblin", Plural: "Goblins"}: {}, + {Group: "ghouls", Version: "v1alpha1", Kind: "Goblin", Plural: "Goblins"}: {}, }, }, expected: []labels.Set{ diff --git a/staging/operator-lifecycle-manager/pkg/controller/operators/olm/operator.go b/staging/operator-lifecycle-manager/pkg/controller/operators/olm/operator.go index 39018ee376..4a9457b534 100644 --- a/staging/operator-lifecycle-manager/pkg/controller/operators/olm/operator.go +++ b/staging/operator-lifecycle-manager/pkg/controller/operators/olm/operator.go @@ -37,7 +37,6 @@ import ( "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/install" "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/operators/internal/pruning" "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/operators/olm/overrides" - resolvercache "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/cache" "github.com/operator-framework/operator-lifecycle-manager/pkg/lib/clients" csvutility "github.com/operator-framework/operator-lifecycle-manager/pkg/lib/csv" "github.com/operator-framework/operator-lifecycle-manager/pkg/lib/event" @@ -1364,7 +1363,7 @@ func (a *Operator) transitionCSVState(in v1alpha1.ClusterServiceVersion) (out *v out = in.DeepCopy() now := a.now() - operatorSurface, err := resolvercache.NewOperatorFromV1Alpha1CSV(out) + operatorSurface, err := apiSurfaceOfCSV(out) if err != nil { // If the resolver is unable to retrieve the operator info from the CSV the CSV requires changes, a syncError should not be returned. logger.WithError(err).Warn("Unable to retrieve operator information from CSV") @@ -1428,7 +1427,7 @@ func (a *Operator) transitionCSVState(in v1alpha1.ClusterServiceVersion) (out *v groupSurface := NewOperatorGroup(operatorGroup) otherGroupSurfaces := NewOperatorGroupSurfaces(otherGroups...) - providedAPIs := operatorSurface.GetProvidedAPIs().StripPlural() + providedAPIs := operatorSurface.ProvidedAPIs.StripPlural() switch result := a.apiReconciler.Reconcile(providedAPIs, groupSurface, otherGroupSurfaces...); { case operatorGroup.Spec.StaticProvidedAPIs && (result == AddAPIs || result == RemoveAPIs): diff --git a/staging/operator-lifecycle-manager/pkg/controller/operators/olm/operatorgroup.go b/staging/operator-lifecycle-manager/pkg/controller/operators/olm/operatorgroup.go index 8a2871a312..0bc563d020 100644 --- a/staging/operator-lifecycle-manager/pkg/controller/operators/olm/operatorgroup.go +++ b/staging/operator-lifecycle-manager/pkg/controller/operators/olm/operatorgroup.go @@ -309,12 +309,12 @@ func (a *Operator) providedAPIsFromCSVs(group *v1.OperatorGroup, logger *logrus. // TODO: Throw out CSVs that aren't members of the group due to group related failures? // Union the providedAPIsFromCSVs from existing members of the group - operatorSurface, err := cache.NewOperatorFromV1Alpha1CSV(csv) + operatorSurface, err := apiSurfaceOfCSV(csv) if err != nil { logger.WithError(err).Warn("could not create OperatorSurface from csv") continue } - for providedAPI := range operatorSurface.GetProvidedAPIs().StripPlural() { + for providedAPI := range operatorSurface.ProvidedAPIs.StripPlural() { providedAPIsFromCSVs[providedAPI] = csv } } @@ -1051,12 +1051,12 @@ func (a *Operator) findCSVsThatProvideAnyOf(provide cache.APISet) ([]*v1alpha1.C continue } - operatorSurface, err := cache.NewOperatorFromV1Alpha1CSV(csv) + operatorSurface, err := apiSurfaceOfCSV(csv) if err != nil { continue } - if len(operatorSurface.GetProvidedAPIs().StripPlural().Intersection(provide)) > 0 { + if len(operatorSurface.ProvidedAPIs.StripPlural().Intersection(provide)) > 0 { providers = append(providers, csv) } } diff --git a/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/cache_test.go b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/cache_test.go index f095456456..b5471a2f2f 100644 --- a/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/cache_test.go +++ b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/cache_test.go @@ -11,8 +11,6 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - - "github.com/operator-framework/operator-registry/pkg/api" ) func TestOperatorCacheConcurrency(t *testing.T) { @@ -240,29 +238,6 @@ func TestCatalogSnapshotFind(t *testing.T) { } -func TestStripPluralRequiredAndProvidedAPIKeys(t *testing.T) { - key := SourceKey{Namespace: "testnamespace", Name: "testname"} - o, err := NewOperatorFromBundle(&api.Bundle{ - CsvName: fmt.Sprintf("%s/%s", key.Namespace, key.Name), - ProvidedApis: []*api.GroupVersionKind{{ - Group: "g", - Version: "v1", - Kind: "K", - Plural: "ks", - }}, - RequiredApis: []*api.GroupVersionKind{{ - Group: "g2", - Version: "v2", - Kind: "K2", - Plural: "ks2", - }}, - }, "", key, "") - - assert.NoError(t, err) - assert.Equal(t, "K.v1.g", o.ProvidedAPIs.String()) - assert.Equal(t, "K2.v2.g2", o.RequiredAPIs.String()) -} - type ErrorSource struct { Error error } diff --git a/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/operators.go b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/operators.go index 1c43077935..ae71784b45 100644 --- a/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/operators.go +++ b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/operators.go @@ -1,7 +1,6 @@ package cache import ( - "encoding/json" "fmt" "hash/fnv" "sort" @@ -213,361 +212,27 @@ type Operator struct { ProvidedAPIs APISet RequiredAPIs APISet Version *semver.Version - Bundle *api.Bundle SourceInfo *OperatorSourceInfo Properties []*api.Property -} - -func NewOperatorFromBundle(bundle *api.Bundle, startingCSV string, sourceKey SourceKey, defaultChannel string) (*Operator, error) { - parsedVersion, err := semver.ParseTolerant(bundle.Version) - version := &parsedVersion - if err != nil { - version = nil - } - provided := APISet{} - for _, gvk := range bundle.ProvidedApis { - provided[opregistry.APIKey{Plural: gvk.Plural, Group: gvk.Group, Kind: gvk.Kind, Version: gvk.Version}] = struct{}{} - } - required := APISet{} - for _, gvk := range bundle.RequiredApis { - required[opregistry.APIKey{Plural: gvk.Plural, Group: gvk.Group, Kind: gvk.Kind, Version: gvk.Version}] = struct{}{} - } - sourceInfo := &OperatorSourceInfo{ - Package: bundle.PackageName, - Channel: bundle.ChannelName, - StartingCSV: startingCSV, - Catalog: sourceKey, - } - sourceInfo.DefaultChannel = sourceInfo.Channel == defaultChannel - - // legacy support - if the api doesn't contain properties/dependencies, build them from required/provided apis - properties := bundle.Properties - if len(properties) == 0 { - properties, err = providedAPIsToProperties(provided) - if err != nil { - return nil, err - } - } - if len(bundle.Dependencies) > 0 { - ps, err := LegacyDependenciesToProperties(bundle.Dependencies) - if err != nil { - return nil, fmt.Errorf("failed to translate legacy dependencies to properties: %w", err) - } - properties = append(properties, ps...) - } else { - ps, err := RequiredAPIsToProperties(required) - if err != nil { - return nil, err - } - properties = append(properties, ps...) - } - - o := &Operator{ - Name: bundle.CsvName, - Replaces: bundle.Replaces, - Version: version, - ProvidedAPIs: provided, - RequiredAPIs: required, - Bundle: bundle, - SourceInfo: sourceInfo, - Properties: properties, - Skips: bundle.Skips, - } + BundlePath string - if r, err := semver.ParseRange(o.Bundle.SkipRange); err == nil { - o.SkipRange = r - } - - if !o.Inline() { - // TODO: Extract any necessary information from the Bundle - // up-front and remove the bundle field altogether. For now, - // take the easy opportunity to save heap space by discarding - // two of the worst offenders. - bundle.CsvJson = "" - bundle.Object = nil - } - - return o, nil -} - -func NewOperatorFromV1Alpha1CSV(csv *v1alpha1.ClusterServiceVersion) (*Operator, error) { - providedAPIs := EmptyAPISet() - for _, crdDef := range csv.Spec.CustomResourceDefinitions.Owned { - parts := strings.SplitN(crdDef.Name, ".", 2) - if len(parts) < 2 { - return nil, fmt.Errorf("error parsing crd name: %s", crdDef.Name) - } - providedAPIs[opregistry.APIKey{Plural: parts[0], Group: parts[1], Version: crdDef.Version, Kind: crdDef.Kind}] = struct{}{} - } - for _, api := range csv.Spec.APIServiceDefinitions.Owned { - providedAPIs[opregistry.APIKey{Group: api.Group, Version: api.Version, Kind: api.Kind, Plural: api.Name}] = struct{}{} - } - - requiredAPIs := EmptyAPISet() - for _, crdDef := range csv.Spec.CustomResourceDefinitions.Required { - parts := strings.SplitN(crdDef.Name, ".", 2) - if len(parts) < 2 { - return nil, fmt.Errorf("error parsing crd name: %s", crdDef.Name) - } - requiredAPIs[opregistry.APIKey{Plural: parts[0], Group: parts[1], Version: crdDef.Version, Kind: crdDef.Kind}] = struct{}{} - } - for _, api := range csv.Spec.APIServiceDefinitions.Required { - requiredAPIs[opregistry.APIKey{Group: api.Group, Version: api.Version, Kind: api.Kind, Plural: api.Name}] = struct{}{} - } - - properties, err := providedAPIsToProperties(providedAPIs) - if err != nil { - return nil, err - } - dependencies, err := RequiredAPIsToProperties(requiredAPIs) - if err != nil { - return nil, err - } - properties = append(properties, dependencies...) - - return &Operator{ - Name: csv.GetName(), - Version: &csv.Spec.Version.Version, - ProvidedAPIs: providedAPIs, - RequiredAPIs: requiredAPIs, - SourceInfo: &ExistingOperator, - Properties: properties, - }, nil -} - -func (o *Operator) GetProvidedAPIs() APISet { - return o.ProvidedAPIs -} - -func (o *Operator) GetRequiredAPIs() APISet { - return o.RequiredAPIs + // Present exclusively to pipe inlined bundle + // content. Resolver components shouldn't need to read this, + // and it should eventually be possible to remove the field + // altogether. + Bundle *api.Bundle } func (o *Operator) Package() string { - if o.Bundle != nil { - return o.Bundle.PackageName + if si := o.SourceInfo; si != nil { + return si.Package } return "" } func (o *Operator) Channel() string { - if o.Bundle != nil { - return o.Bundle.ChannelName + if si := o.SourceInfo; si != nil { + return si.Channel } return "" } - -func (o *Operator) Inline() bool { - return o.Bundle != nil && o.Bundle.GetBundlePath() == "" -} - -func (o *Operator) DependencyPredicates() (predicates []OperatorPredicate, err error) { - predicates = make([]OperatorPredicate, 0) - for _, property := range o.Properties { - predicate, err := PredicateForProperty(property) - if err != nil { - return nil, err - } - if predicate == nil { - continue - } - predicates = append(predicates, predicate) - } - return -} - -func RequiredAPIsToProperties(apis APISet) (out []*api.Property, err error) { - if len(apis) == 0 { - return - } - out = make([]*api.Property, 0) - for a := range apis { - val, err := json.Marshal(struct { - Group string `json:"group"` - Version string `json:"version"` - Kind string `json:"kind"` - }{ - Group: a.Group, - Version: a.Version, - Kind: a.Kind, - }) - if err != nil { - return nil, err - } - out = append(out, &api.Property{ - Type: "olm.gvk.required", - Value: string(val), - }) - } - if len(out) > 0 { - return - } - return nil, nil -} - -func providedAPIsToProperties(apis APISet) (out []*api.Property, err error) { - out = make([]*api.Property, 0) - for a := range apis { - val, err := json.Marshal(opregistry.GVKProperty{ - Group: a.Group, - Version: a.Version, - Kind: a.Kind, - }) - if err != nil { - panic(err) - } - out = append(out, &api.Property{ - Type: opregistry.GVKType, - Value: string(val), - }) - } - if len(out) > 0 { - return - } - return nil, nil -} - -func LegacyDependenciesToProperties(dependencies []*api.Dependency) ([]*api.Property, error) { - var result []*api.Property - for _, dependency := range dependencies { - switch dependency.Type { - case "olm.gvk": - type gvk struct { - Group string `json:"group"` - Version string `json:"version"` - Kind string `json:"kind"` - } - var vfrom gvk - if err := json.Unmarshal([]byte(dependency.Value), &vfrom); err != nil { - return nil, fmt.Errorf("failed to unmarshal legacy 'olm.gvk' dependency: %w", err) - } - vto := gvk{ - Group: vfrom.Group, - Version: vfrom.Version, - Kind: vfrom.Kind, - } - vb, err := json.Marshal(&vto) - if err != nil { - return nil, fmt.Errorf("unexpected error marshaling generated 'olm.package.required' property: %w", err) - } - result = append(result, &api.Property{ - Type: "olm.gvk.required", - Value: string(vb), - }) - case "olm.package": - var vfrom struct { - PackageName string `json:"packageName"` - VersionRange string `json:"version"` - } - if err := json.Unmarshal([]byte(dependency.Value), &vfrom); err != nil { - return nil, fmt.Errorf("failed to unmarshal legacy 'olm.package' dependency: %w", err) - } - vto := struct { - PackageName string `json:"packageName"` - VersionRange string `json:"versionRange"` - }{ - PackageName: vfrom.PackageName, - VersionRange: vfrom.VersionRange, - } - vb, err := json.Marshal(&vto) - if err != nil { - return nil, fmt.Errorf("unexpected error marshaling generated 'olm.package.required' property: %w", err) - } - result = append(result, &api.Property{ - Type: "olm.package.required", - Value: string(vb), - }) - case "olm.label": - result = append(result, &api.Property{ - Type: "olm.label.required", - Value: dependency.Value, - }) - } - } - return result, nil -} - -func APISetToProperties(crds, apis APISet, deprecated bool) (out []*api.Property) { - out = make([]*api.Property, 0) - for a := range crds { - val, err := json.Marshal(opregistry.GVKProperty{ - Group: a.Group, - Kind: a.Kind, - Version: a.Version, - }) - if err != nil { - panic(err) - } - out = append(out, &api.Property{ - Type: opregistry.GVKType, - Value: string(val), - }) - } - for a := range apis { - val, err := json.Marshal(opregistry.GVKProperty{ - Group: a.Group, - Kind: a.Kind, - Version: a.Version, - }) - if err != nil { - panic(err) - } - out = append(out, &api.Property{ - Type: opregistry.GVKType, - Value: string(val), - }) - } - if deprecated { - val, err := json.Marshal(opregistry.DeprecatedProperty{}) - if err != nil { - panic(err) - } - out = append(out, &api.Property{ - Type: opregistry.DeprecatedType, - Value: string(val), - }) - } - if len(out) == 0 { - return nil - } - return -} - -func APISetToDependencies(crds, apis APISet) (out []*api.Dependency) { - if len(crds)+len(apis) == 0 { - return nil - } - out = make([]*api.Dependency, 0) - for a := range crds { - val, err := json.Marshal(opregistry.GVKDependency{ - Group: a.Group, - Kind: a.Kind, - Version: a.Version, - }) - if err != nil { - panic(err) - } - out = append(out, &api.Dependency{ - Type: opregistry.GVKType, - Value: string(val), - }) - } - for a := range apis { - val, err := json.Marshal(opregistry.GVKDependency{ - Group: a.Group, - Kind: a.Kind, - Version: a.Version, - }) - if err != nil { - panic(err) - } - out = append(out, &api.Dependency{ - Type: opregistry.GVKType, - Value: string(val), - }) - } - if len(out) == 0 { - return nil - } - return -} diff --git a/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/operators_test.go b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/operators_test.go index 5337a5b25d..cedad87f37 100644 --- a/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/operators_test.go +++ b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/operators_test.go @@ -1,17 +1,10 @@ package cache import ( - "encoding/json" "testing" - "github.com/blang/semver/v4" "github.com/stretchr/testify/require" - "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - opver "github.com/operator-framework/api/pkg/lib/version" - "github.com/operator-framework/api/pkg/operators/v1alpha1" - "github.com/operator-framework/operator-registry/pkg/api" opregistry "github.com/operator-framework/operator-registry/pkg/registry" ) @@ -885,606 +878,3 @@ func TestOperatorSourceInfo_String(t *testing.T) { }) } } - -func TestNewOperatorFromBundle(t *testing.T) { - version := opver.OperatorVersion{Version: semver.MustParse("0.1.0-abc")} - csv := v1alpha1.ClusterServiceVersion{ - TypeMeta: metav1.TypeMeta{ - Kind: v1alpha1.ClusterServiceVersionKind, - APIVersion: v1alpha1.GroupVersion, - }, - ObjectMeta: metav1.ObjectMeta{ - Name: "testCSV", - Namespace: "testNamespace", - }, - Spec: v1alpha1.ClusterServiceVersionSpec{ - Replaces: "v1", - CustomResourceDefinitions: v1alpha1.CustomResourceDefinitions{ - Owned: []v1alpha1.CRDDescription{}, - Required: []v1alpha1.CRDDescription{}, - }, - APIServiceDefinitions: v1alpha1.APIServiceDefinitions{ - Owned: []v1alpha1.APIServiceDescription{}, - Required: []v1alpha1.APIServiceDescription{}, - }, - Version: version, - }, - } - - csvJson, err := json.Marshal(csv) - require.NoError(t, err) - bundleNoAPIs := &api.Bundle{ - CsvName: "testBundle", - PackageName: "testPackage", - ChannelName: "testChannel", - Version: version.String(), - CsvJson: string(csvJson), - Object: []string{string(csvJson)}, - } - - csv.Spec.CustomResourceDefinitions.Owned = []v1alpha1.CRDDescription{ - { - Name: "owneds.crd.group.com", - Version: "v1", - Kind: "OwnedCRD", - }, - } - csv.Spec.CustomResourceDefinitions.Required = []v1alpha1.CRDDescription{ - { - Name: "requireds.crd.group.com", - Version: "v1", - Kind: "RequiredCRD", - }, - } - csv.Spec.APIServiceDefinitions.Owned = []v1alpha1.APIServiceDescription{ - { - Name: "ownedapis", - Group: "apis.group.com", - Version: "v1", - Kind: "OwnedAPI", - }, - } - csv.Spec.APIServiceDefinitions.Required = []v1alpha1.APIServiceDescription{ - { - Name: "requiredapis", - Group: "apis.group.com", - Version: "v1", - Kind: "RequiredAPI", - }, - } - - csvJsonWithApis, err := json.Marshal(csv) - require.NoError(t, err) - - crd := v1beta1.CustomResourceDefinition{ - TypeMeta: metav1.TypeMeta{ - Kind: "CustomResourceDefinition", - APIVersion: "apiextensions.k8s.io/v1beta1", - }, - ObjectMeta: metav1.ObjectMeta{ - Name: "owneds.crd.group.com", - }, - Spec: v1beta1.CustomResourceDefinitionSpec{ - Group: "crd.group.com", - Versions: []v1beta1.CustomResourceDefinitionVersion{ - { - Name: "v1", - Served: true, - Storage: true, - }, - }, - Names: v1beta1.CustomResourceDefinitionNames{ - Plural: "owneds", - Singular: "owned", - Kind: "OwnedCRD", - ListKind: "OwnedCRDList", - }, - }, - } - crdJson, err := json.Marshal(crd) - require.NoError(t, err) - - bundleWithAPIs := &api.Bundle{ - CsvName: "testBundle", - PackageName: "testPackage", - ChannelName: "testChannel", - Version: version.String(), - CsvJson: string(csvJsonWithApis), - Object: []string{string(csvJsonWithApis), string(crdJson)}, - ProvidedApis: []*api.GroupVersionKind{ - { - Group: "crd.group.com", - Version: "v1", - Kind: "OwnedCRD", - Plural: "owneds", - }, - { - Plural: "ownedapis", - Group: "apis.group.com", - Version: "v1", - Kind: "OwnedAPI", - }, - }, - RequiredApis: []*api.GroupVersionKind{ - { - Group: "crd.group.com", - Version: "v1", - Kind: "RequiredCRD", - Plural: "requireds", - }, - { - Plural: "requiredapis", - Group: "apis.group.com", - Version: "v1", - Kind: "RequiredAPI", - }, - }, - } - - bundleWithPropsAndDeps := &api.Bundle{ - CsvName: "testBundle", - PackageName: "testPackage", - ChannelName: "testChannel", - Version: version.String(), - BundlePath: "image", - Properties: []*api.Property{ - { - Type: "olm.gvk", - Value: "{\"group\":\"crd.group.com\",\"kind\":\"OwnedCRD\",\"version\":\"v1\"}", - }, - { - Type: "olm.gvk", - Value: "{\"group\":\"apis.group.com\",\"kind\":\"OwnedAPI\",\"version\":\"v1\"}", - }, - }, - Dependencies: []*api.Dependency{ - { - Type: "olm.gvk", - Value: "{\"group\":\"crd.group.com\",\"kind\":\"RequiredCRD\",\"version\":\"v1\"}", - }, - { - Type: "olm.gvk", - Value: "{\"group\":\"apis.group.com\",\"kind\":\"RequiredAPI\",\"version\":\"v1\"}", - }, - }, - } - - bundleWithAPIsUnextracted := &api.Bundle{ - CsvName: "testBundle", - PackageName: "testPackage", - ChannelName: "testChannel", - CsvJson: string(csvJsonWithApis), - Object: []string{string(csvJsonWithApis), string(crdJson)}, - } - - type args struct { - bundle *api.Bundle - sourceKey SourceKey - replaces string - defaultChannel string - } - tests := []struct { - name string - args args - want *Operator - wantErr error - }{ - { - name: "BundleNoAPIs", - args: args{ - bundle: bundleNoAPIs, - sourceKey: SourceKey{Name: "source", Namespace: "testNamespace"}, - }, - want: &Operator{ - Name: "testBundle", - Version: &version.Version, - ProvidedAPIs: EmptyAPISet(), - RequiredAPIs: EmptyAPISet(), - Bundle: bundleNoAPIs, - SourceInfo: &OperatorSourceInfo{ - Package: "testPackage", - Channel: "testChannel", - Catalog: SourceKey{Name: "source", Namespace: "testNamespace"}, - }, - }, - }, - { - name: "BundleWithAPIs", - args: args{ - bundle: bundleWithAPIs, - sourceKey: SourceKey{Name: "source", Namespace: "testNamespace"}, - }, - want: &Operator{ - Name: "testBundle", - Version: &version.Version, - ProvidedAPIs: APISet{ - opregistry.APIKey{ - Group: "crd.group.com", - Version: "v1", - Kind: "OwnedCRD", - Plural: "owneds", - }: struct{}{}, - opregistry.APIKey{ - Group: "apis.group.com", - Version: "v1", - Kind: "OwnedAPI", - Plural: "ownedapis", - }: struct{}{}, - }, - RequiredAPIs: APISet{ - opregistry.APIKey{ - Group: "crd.group.com", - Version: "v1", - Kind: "RequiredCRD", - Plural: "requireds", - }: struct{}{}, - opregistry.APIKey{ - Group: "apis.group.com", - Version: "v1", - Kind: "RequiredAPI", - Plural: "requiredapis", - }: struct{}{}, - }, - Properties: []*api.Property{ - { - Type: "olm.gvk", - Value: "{\"group\":\"crd.group.com\",\"kind\":\"OwnedCRD\",\"version\":\"v1\"}", - }, - { - Type: "olm.gvk", - Value: "{\"group\":\"apis.group.com\",\"kind\":\"OwnedAPI\",\"version\":\"v1\"}", - }, - { - Type: "olm.gvk.required", - Value: "{\"group\":\"crd.group.com\",\"kind\":\"RequiredCRD\",\"version\":\"v1\"}", - }, - { - Type: "olm.gvk.required", - Value: "{\"group\":\"apis.group.com\",\"kind\":\"RequiredAPI\",\"version\":\"v1\"}", - }, - }, - Bundle: bundleWithAPIs, - SourceInfo: &OperatorSourceInfo{ - Package: "testPackage", - Channel: "testChannel", - Catalog: SourceKey{Name: "source", Namespace: "testNamespace"}, - }, - }, - }, - { - name: "BundleIgnoreCSV", - args: args{ - bundle: bundleWithAPIsUnextracted, - sourceKey: SourceKey{Name: "source", Namespace: "testNamespace"}, - }, - want: &Operator{ - Name: "testBundle", - ProvidedAPIs: EmptyAPISet(), - RequiredAPIs: EmptyAPISet(), - Bundle: bundleWithAPIsUnextracted, - SourceInfo: &OperatorSourceInfo{ - Package: "testPackage", - Channel: "testChannel", - Catalog: SourceKey{Name: "source", Namespace: "testNamespace"}, - }, - }, - }, - { - name: "BundleInDefaultChannel", - args: args{ - bundle: bundleNoAPIs, - sourceKey: SourceKey{Name: "source", Namespace: "testNamespace"}, - defaultChannel: "testChannel", - }, - want: &Operator{ - Name: "testBundle", - Version: &version.Version, - ProvidedAPIs: EmptyAPISet(), - RequiredAPIs: EmptyAPISet(), - Bundle: bundleNoAPIs, - SourceInfo: &OperatorSourceInfo{ - Package: "testPackage", - Channel: "testChannel", - Catalog: SourceKey{Name: "source", Namespace: "testNamespace"}, - DefaultChannel: true, - }, - }, - }, - { - name: "BundleWithPropertiesAndDependencies", - args: args{ - bundle: bundleWithPropsAndDeps, - sourceKey: SourceKey{Name: "source", Namespace: "testNamespace"}, - }, - want: &Operator{ - Name: "testBundle", - Version: &version.Version, - ProvidedAPIs: EmptyAPISet(), - RequiredAPIs: EmptyAPISet(), - Properties: []*api.Property{ - { - Type: "olm.gvk", - Value: "{\"group\":\"crd.group.com\",\"kind\":\"OwnedCRD\",\"version\":\"v1\"}", - }, - { - Type: "olm.gvk", - Value: "{\"group\":\"apis.group.com\",\"kind\":\"OwnedAPI\",\"version\":\"v1\"}", - }, - { - Type: "olm.gvk.required", - Value: "{\"group\":\"crd.group.com\",\"kind\":\"RequiredCRD\",\"version\":\"v1\"}", - }, - { - Type: "olm.gvk.required", - Value: "{\"group\":\"apis.group.com\",\"kind\":\"RequiredAPI\",\"version\":\"v1\"}", - }, - }, - Bundle: bundleWithPropsAndDeps, - SourceInfo: &OperatorSourceInfo{ - Package: "testPackage", - Channel: "testChannel", - Catalog: SourceKey{Name: "source", Namespace: "testNamespace"}, - }, - }, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - got, err := NewOperatorFromBundle(tt.args.bundle, "", tt.args.sourceKey, tt.args.defaultChannel) - require.Equal(t, tt.wantErr, err) - requirePropertiesEqual(t, tt.want.Properties, got.Properties) - tt.want.Properties, got.Properties = nil, nil - require.Equal(t, tt.want, got) - }) - } -} - -func TestNewOperatorFromCSV(t *testing.T) { - version := opver.OperatorVersion{Version: semver.MustParse("0.1.0-abc")} - type args struct { - csv *v1alpha1.ClusterServiceVersion - } - tests := []struct { - name string - args args - want *Operator - wantErr error - }{ - { - name: "NoProvided/NoRequired", - args: args{ - csv: &v1alpha1.ClusterServiceVersion{ - ObjectMeta: metav1.ObjectMeta{ - Name: "operator.v1", - }, - Spec: v1alpha1.ClusterServiceVersionSpec{ - Version: version, - }, - }, - }, - want: &Operator{ - Name: "operator.v1", - ProvidedAPIs: EmptyAPISet(), - RequiredAPIs: EmptyAPISet(), - SourceInfo: &ExistingOperator, - Version: &version.Version, - }, - }, - { - name: "Provided/NoRequired", - args: args{ - csv: &v1alpha1.ClusterServiceVersion{ - ObjectMeta: metav1.ObjectMeta{ - Name: "operator.v1", - }, - Spec: v1alpha1.ClusterServiceVersionSpec{ - Version: version, - CustomResourceDefinitions: v1alpha1.CustomResourceDefinitions{ - Owned: []v1alpha1.CRDDescription{ - { - Name: "crdkinds.g", - Version: "v1", - Kind: "CRDKind", - }, - }, - }, - APIServiceDefinitions: v1alpha1.APIServiceDefinitions{ - Owned: []v1alpha1.APIServiceDescription{ - { - Name: "apikinds", - Group: "g", - Version: "v1", - Kind: "APIKind", - }, - }, - }, - }, - }, - }, - want: &Operator{ - Name: "operator.v1", - ProvidedAPIs: map[opregistry.APIKey]struct{}{ - {Group: "g", Version: "v1", Kind: "APIKind", Plural: "apikinds"}: {}, - {Group: "g", Version: "v1", Kind: "CRDKind", Plural: "crdkinds"}: {}, - }, - Properties: []*api.Property{ - { - Type: "olm.gvk", - Value: "{\"group\":\"g\",\"kind\":\"APIKind\",\"version\":\"v1\"}", - }, - { - Type: "olm.gvk", - Value: "{\"group\":\"g\",\"kind\":\"CRDKind\",\"version\":\"v1\"}", - }, - }, - RequiredAPIs: EmptyAPISet(), - SourceInfo: &ExistingOperator, - Version: &version.Version, - }, - }, - { - name: "NoProvided/Required", - args: args{ - csv: &v1alpha1.ClusterServiceVersion{ - ObjectMeta: metav1.ObjectMeta{ - Name: "operator.v1", - }, - Spec: v1alpha1.ClusterServiceVersionSpec{ - Version: version, - CustomResourceDefinitions: v1alpha1.CustomResourceDefinitions{ - Required: []v1alpha1.CRDDescription{ - { - Name: "crdkinds.g", - Version: "v1", - Kind: "CRDKind", - }, - }, - }, - APIServiceDefinitions: v1alpha1.APIServiceDefinitions{ - Required: []v1alpha1.APIServiceDescription{ - { - Name: "apikinds", - Group: "g", - Version: "v1", - Kind: "APIKind", - }, - }, - }, - }, - }, - }, - want: &Operator{ - Name: "operator.v1", - ProvidedAPIs: EmptyAPISet(), - RequiredAPIs: map[opregistry.APIKey]struct{}{ - {Group: "g", Version: "v1", Kind: "APIKind", Plural: "apikinds"}: {}, - {Group: "g", Version: "v1", Kind: "CRDKind", Plural: "crdkinds"}: {}, - }, - Properties: []*api.Property{ - { - Type: "olm.gvk.required", - Value: "{\"group\":\"g\",\"kind\":\"APIKind\",\"version\":\"v1\"}", - }, - { - Type: "olm.gvk.required", - Value: "{\"group\":\"g\",\"kind\":\"CRDKind\",\"version\":\"v1\"}", - }, - }, - SourceInfo: &ExistingOperator, - Version: &version.Version, - }, - }, - { - name: "Provided/Required", - args: args{ - csv: &v1alpha1.ClusterServiceVersion{ - ObjectMeta: metav1.ObjectMeta{ - Name: "operator.v1", - }, - Spec: v1alpha1.ClusterServiceVersionSpec{ - Version: version, - CustomResourceDefinitions: v1alpha1.CustomResourceDefinitions{ - Owned: []v1alpha1.CRDDescription{ - { - Name: "crdownedkinds.g", - Version: "v1", - Kind: "CRDOwnedKind", - }, - }, - Required: []v1alpha1.CRDDescription{ - { - Name: "crdreqkinds.g2", - Version: "v1", - Kind: "CRDReqKind", - }, - }, - }, - APIServiceDefinitions: v1alpha1.APIServiceDefinitions{ - Owned: []v1alpha1.APIServiceDescription{ - { - Name: "apiownedkinds", - Group: "g", - Version: "v1", - Kind: "APIOwnedKind", - }, - }, - Required: []v1alpha1.APIServiceDescription{ - { - Name: "apireqkinds", - Group: "g2", - Version: "v1", - Kind: "APIReqKind", - }, - }, - }, - }, - }, - }, - want: &Operator{ - Name: "operator.v1", - ProvidedAPIs: map[opregistry.APIKey]struct{}{ - {Group: "g", Version: "v1", Kind: "APIOwnedKind", Plural: "apiownedkinds"}: {}, - {Group: "g", Version: "v1", Kind: "CRDOwnedKind", Plural: "crdownedkinds"}: {}, - }, - RequiredAPIs: map[opregistry.APIKey]struct{}{ - {Group: "g2", Version: "v1", Kind: "APIReqKind", Plural: "apireqkinds"}: {}, - {Group: "g2", Version: "v1", Kind: "CRDReqKind", Plural: "crdreqkinds"}: {}, - }, - Properties: []*api.Property{ - { - Type: "olm.gvk", - Value: "{\"group\":\"g\",\"kind\":\"APIOwnedKind\",\"version\":\"v1\"}", - }, - { - Type: "olm.gvk", - Value: "{\"group\":\"g\",\"kind\":\"CRDOwnedKind\",\"version\":\"v1\"}", - }, - { - Type: "olm.gvk.required", - Value: "{\"group\":\"g2\",\"kind\":\"APIReqKind\",\"version\":\"v1\"}", - }, - { - Type: "olm.gvk.required", - Value: "{\"group\":\"g2\",\"kind\":\"CRDReqKind\",\"version\":\"v1\"}", - }, - }, - SourceInfo: &ExistingOperator, - Version: &version.Version, - }, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - got, err := NewOperatorFromV1Alpha1CSV(tt.args.csv) - require.Equal(t, tt.wantErr, err) - requirePropertiesEqual(t, tt.want.Properties, got.Properties) - tt.want.Properties, got.Properties = nil, nil - require.Equal(t, tt.want, got) - }) - } -} - -func requirePropertiesEqual(t *testing.T, a, b []*api.Property) { - type Property struct { - Type string - Value interface{} - } - nice := func(in *api.Property) Property { - var i interface{} - if err := json.Unmarshal([]byte(in.Value), &i); err != nil { - t.Fatalf("property value %q could not be unmarshaled as json: %s", in.Value, err) - } - return Property{ - Type: in.Type, - Value: i, - } - } - var l, r []Property - for _, p := range a { - l = append(l, nice(p)) - } - for _, p := range b { - r = append(r, nice(p)) - } - require.ElementsMatch(t, l, r) -} diff --git a/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/predicates.go b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/predicates.go index 292dda4805..66f1d28c5a 100644 --- a/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/predicates.go +++ b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/predicates.go @@ -7,7 +7,6 @@ import ( "github.com/blang/semver/v4" - "github.com/operator-framework/operator-registry/pkg/api" opregistry "github.com/operator-framework/operator-registry/pkg/registry" ) @@ -41,10 +40,10 @@ func (ch channelPredicate) Test(o *Operator) bool { if string(ch) == "" { return true } - if o.Bundle == nil { - return false + if si := o.SourceInfo; si != nil { + return si.Channel == string(ch) } - return o.Bundle.ChannelName == string(ch) + return false } func (ch channelPredicate) String() string { @@ -322,67 +321,11 @@ func (c countingPredicate) Test(o *Operator) bool { } return false } + func (c countingPredicate) String() string { return c.p.String() } + func CountingPredicate(p OperatorPredicate, n *int) OperatorPredicate { return countingPredicate{p: p, n: n} } - -func PredicateForProperty(property *api.Property) (OperatorPredicate, error) { - if property == nil { - return nil, nil - } - p, ok := predicates[property.Type] - if !ok { - return nil, nil - } - return p(property.Value) -} - -var predicates = map[string]func(string) (OperatorPredicate, error){ - "olm.gvk.required": predicateForRequiredGVKProperty, - "olm.package.required": predicateForRequiredPackageProperty, - "olm.label.required": predicateForRequiredLabelProperty, -} - -func predicateForRequiredGVKProperty(value string) (OperatorPredicate, error) { - var gvk struct { - Group string `json:"group"` - Version string `json:"version"` - Kind string `json:"kind"` - } - if err := json.Unmarshal([]byte(value), &gvk); err != nil { - return nil, err - } - return ProvidingAPIPredicate(opregistry.APIKey{ - Group: gvk.Group, - Version: gvk.Version, - Kind: gvk.Kind, - }), nil -} - -func predicateForRequiredPackageProperty(value string) (OperatorPredicate, error) { - var pkg struct { - PackageName string `json:"packageName"` - VersionRange string `json:"versionRange"` - } - if err := json.Unmarshal([]byte(value), &pkg); err != nil { - return nil, err - } - ver, err := semver.ParseRange(pkg.VersionRange) - if err != nil { - return nil, err - } - return And(PkgPredicate(pkg.PackageName), VersionInRangePredicate(ver, pkg.VersionRange)), nil -} - -func predicateForRequiredLabelProperty(value string) (OperatorPredicate, error) { - var label struct { - Label string `json:"label"` - } - if err := json.Unmarshal([]byte(value), &label); err != nil { - return nil, err - } - return LabelPredicate(label.Label), nil -} diff --git a/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/resolver.go b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/resolver.go index 38e779acd3..f7a5e6afeb 100644 --- a/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/resolver.go +++ b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/resolver.go @@ -76,7 +76,7 @@ func (r *SatResolver) SolveOperators(namespaces []string, csvs []*v1alpha1.Clust var current *cache.Operator for _, csv := range csvs { if csv.Name == sub.Status.InstalledCSV { - op, err := cache.NewOperatorFromV1Alpha1CSV(csv) + op, err := newOperatorFromV1Alpha1CSV(csv) if err != nil { return nil, err } @@ -181,7 +181,7 @@ func (r *SatResolver) getSubscriptionInstallables(sub *v1alpha1.Subscription, cu Namespace: sub.Spec.CatalogSourceNamespace, } - var bundles []*cache.Operator + var entries []*cache.Operator { var nall, npkg, nch, ncsv int @@ -200,7 +200,7 @@ func (r *SatResolver) getSubscriptionInstallables(sub *v1alpha1.Subscription, cu cache.CountingPredicate(cache.ChannelPredicate(sub.Spec.Channel), &nch), cache.CountingPredicate(csvPredicate, &ncsv), )) - bundles = namespacedCache.Catalog(catalog).Find(cachePredicates...) + entries = namespacedCache.Catalog(catalog).Find(cachePredicates...) var si solver.Installable switch { @@ -220,36 +220,40 @@ func (r *SatResolver) getSubscriptionInstallables(sub *v1alpha1.Subscription, cu } } - // bundles in the default channel appear first, then lexicographically order by channel name - sort.SliceStable(bundles, func(i, j int) bool { + // entries in the default channel appear first, then lexicographically order by channel name + sort.SliceStable(entries, func(i, j int) bool { var idef bool - if isrc := bundles[i].SourceInfo; isrc != nil { + var ichan string + if isrc := entries[i].SourceInfo; isrc != nil { idef = isrc.DefaultChannel + ichan = isrc.Channel } var jdef bool - if jsrc := bundles[j].SourceInfo; jsrc != nil { + var jchan string + if jsrc := entries[j].SourceInfo; jsrc != nil { jdef = jsrc.DefaultChannel + jchan = jsrc.Channel } if idef == jdef { - return bundles[i].Bundle.ChannelName < bundles[j].Bundle.ChannelName + return ichan < jchan } return idef }) var sortedBundles []*cache.Operator lastChannel, lastIndex := "", 0 - for i := 0; i <= len(bundles); i++ { - if i != len(bundles) && bundles[i].Bundle.ChannelName == lastChannel { + for i := 0; i <= len(entries); i++ { + if i != len(entries) && entries[i].Channel() == lastChannel { continue } - channel, err := sortChannel(bundles[lastIndex:i]) + channel, err := sortChannel(entries[lastIndex:i]) if err != nil { return nil, err } sortedBundles = append(sortedBundles, channel...) - if i != len(bundles) { - lastChannel = bundles[i].Bundle.ChannelName + if i != len(entries) { + lastChannel = entries[i].Channel() lastIndex = i } } @@ -333,7 +337,7 @@ func (r *SatResolver) getBundleInstallables(preferredNamespace string, bundleSta visited[bundle] = &bundleInstallable - dependencyPredicates, err := bundle.DependencyPredicates() + dependencyPredicates, err := DependencyPredicates(bundle.Properties) if err != nil { errs = append(errs, err) continue @@ -470,7 +474,7 @@ func (r *SatResolver) newSnapshotForNamespace(namespace string, subs []*v1alpha1 var csvsMissingProperties []*v1alpha1.ClusterServiceVersion standaloneOperators := make([]*cache.Operator, 0) for _, csv := range csvs { - op, err := cache.NewOperatorFromV1Alpha1CSV(csv) + op, err := newOperatorFromV1Alpha1CSV(csv) if err != nil { return nil, err } @@ -728,3 +732,172 @@ func sortChannel(bundles []*cache.Operator) ([]*cache.Operator, error) { // TODO: do we care if the channel doesn't include every bundle in the input? return chains[0], nil } + +func DependencyPredicates(properties []*api.Property) ([]cache.OperatorPredicate, error) { + var predicates []cache.OperatorPredicate + for _, property := range properties { + predicate, err := predicateForProperty(property) + if err != nil { + return nil, err + } + if predicate == nil { + continue + } + predicates = append(predicates, predicate) + } + return predicates, nil +} + +func predicateForProperty(property *api.Property) (cache.OperatorPredicate, error) { + if property == nil { + return nil, nil + } + p, ok := predicates[property.Type] + if !ok { + return nil, nil + } + return p(property.Value) +} + +var predicates = map[string]func(string) (cache.OperatorPredicate, error){ + "olm.gvk.required": predicateForRequiredGVKProperty, + "olm.package.required": predicateForRequiredPackageProperty, + "olm.label.required": predicateForRequiredLabelProperty, +} + +func predicateForRequiredGVKProperty(value string) (cache.OperatorPredicate, error) { + var gvk struct { + Group string `json:"group"` + Version string `json:"version"` + Kind string `json:"kind"` + } + if err := json.Unmarshal([]byte(value), &gvk); err != nil { + return nil, err + } + return cache.ProvidingAPIPredicate(opregistry.APIKey{ + Group: gvk.Group, + Version: gvk.Version, + Kind: gvk.Kind, + }), nil +} + +func predicateForRequiredPackageProperty(value string) (cache.OperatorPredicate, error) { + var pkg struct { + PackageName string `json:"packageName"` + VersionRange string `json:"versionRange"` + } + if err := json.Unmarshal([]byte(value), &pkg); err != nil { + return nil, err + } + ver, err := semver.ParseRange(pkg.VersionRange) + if err != nil { + return nil, err + } + return cache.And(cache.PkgPredicate(pkg.PackageName), cache.VersionInRangePredicate(ver, pkg.VersionRange)), nil +} + +func predicateForRequiredLabelProperty(value string) (cache.OperatorPredicate, error) { + var label struct { + Label string `json:"label"` + } + if err := json.Unmarshal([]byte(value), &label); err != nil { + return nil, err + } + return cache.LabelPredicate(label.Label), nil +} + +func newOperatorFromV1Alpha1CSV(csv *v1alpha1.ClusterServiceVersion) (*cache.Operator, error) { + providedAPIs := cache.EmptyAPISet() + for _, crdDef := range csv.Spec.CustomResourceDefinitions.Owned { + parts := strings.SplitN(crdDef.Name, ".", 2) + if len(parts) < 2 { + return nil, fmt.Errorf("error parsing crd name: %s", crdDef.Name) + } + providedAPIs[opregistry.APIKey{Plural: parts[0], Group: parts[1], Version: crdDef.Version, Kind: crdDef.Kind}] = struct{}{} + } + for _, api := range csv.Spec.APIServiceDefinitions.Owned { + providedAPIs[opregistry.APIKey{Group: api.Group, Version: api.Version, Kind: api.Kind, Plural: api.Name}] = struct{}{} + } + + requiredAPIs := cache.EmptyAPISet() + for _, crdDef := range csv.Spec.CustomResourceDefinitions.Required { + parts := strings.SplitN(crdDef.Name, ".", 2) + if len(parts) < 2 { + return nil, fmt.Errorf("error parsing crd name: %s", crdDef.Name) + } + requiredAPIs[opregistry.APIKey{Plural: parts[0], Group: parts[1], Version: crdDef.Version, Kind: crdDef.Kind}] = struct{}{} + } + for _, api := range csv.Spec.APIServiceDefinitions.Required { + requiredAPIs[opregistry.APIKey{Group: api.Group, Version: api.Version, Kind: api.Kind, Plural: api.Name}] = struct{}{} + } + + properties, err := providedAPIsToProperties(providedAPIs) + if err != nil { + return nil, err + } + dependencies, err := requiredAPIsToProperties(requiredAPIs) + if err != nil { + return nil, err + } + properties = append(properties, dependencies...) + + return &cache.Operator{ + Name: csv.GetName(), + Version: &csv.Spec.Version.Version, + ProvidedAPIs: providedAPIs, + RequiredAPIs: requiredAPIs, + SourceInfo: &cache.ExistingOperator, + Properties: properties, + }, nil +} + +func providedAPIsToProperties(apis cache.APISet) (out []*api.Property, err error) { + out = make([]*api.Property, 0) + for a := range apis { + val, err := json.Marshal(opregistry.GVKProperty{ + Group: a.Group, + Version: a.Version, + Kind: a.Kind, + }) + if err != nil { + panic(err) + } + out = append(out, &api.Property{ + Type: opregistry.GVKType, + Value: string(val), + }) + } + if len(out) > 0 { + return + } + return nil, nil +} + +func requiredAPIsToProperties(apis cache.APISet) (out []*api.Property, err error) { + if len(apis) == 0 { + return + } + out = make([]*api.Property, 0) + for a := range apis { + val, err := json.Marshal(struct { + Group string `json:"group"` + Version string `json:"version"` + Kind string `json:"kind"` + }{ + Group: a.Group, + Version: a.Version, + Kind: a.Kind, + }) + if err != nil { + return nil, err + } + out = append(out, &api.Property{ + Type: "olm.gvk.required", + Value: string(val), + }) + } + if len(out) > 0 { + return + } + return nil, nil +} diff --git a/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/resolver_test.go b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/resolver_test.go index 1d80b0cd13..1931d5e1f5 100644 --- a/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/resolver_test.go +++ b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/resolver_test.go @@ -15,6 +15,7 @@ import ( "k8s.io/apimachinery/pkg/labels" "github.com/operator-framework/api/pkg/lib/version" + opver "github.com/operator-framework/api/pkg/lib/version" "github.com/operator-framework/api/pkg/operators/v1alpha1" listersv1alpha1 "github.com/operator-framework/operator-lifecycle-manager/pkg/api/client/listers/operators/v1alpha1" "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/cache" @@ -946,7 +947,7 @@ func TestSolveOperators_PreferDefaultChannelInResolutionForTransitiveDependencie cache: cache.New(cache.StaticSourceProvider{ catalog: &cache.Snapshot{ Entries: []*cache.Operator{ - genOperator("packageA.v0.0.1", "0.0.1", "packageA.v1", "packageA", "alpha", catalog.Name, catalog.Namespace, Provides, nil, cache.APISetToDependencies(nil, Provides), defaultChannel, false), + genOperator("packageA.v0.0.1", "0.0.1", "packageA.v1", "packageA", "alpha", catalog.Name, catalog.Namespace, Provides, nil, apiSetToDependencies(nil, Provides), defaultChannel, false), genOperator("packageB.v0.0.1", "0.0.1", "packageB.v1", "packageB", defaultChannel, catalog.Name, catalog.Namespace, nil, Provides, nil, defaultChannel, false), genOperator("packageB.v0.0.2", "0.0.2", "packageB.v0.0.1", "packageB", "alpha", catalog.Name, catalog.Namespace, nil, Provides, nil, defaultChannel, false), }, @@ -960,7 +961,7 @@ func TestSolveOperators_PreferDefaultChannelInResolutionForTransitiveDependencie // operator should be from the default stable channel expected := cache.OperatorSet{ - "packageA.v0.0.1": genOperator("packageA.v0.0.1", "0.0.1", "packageA.v1", "packageA", "alpha", catalog.Name, catalog.Namespace, Provides, nil, cache.APISetToDependencies(nil, Provides), defaultChannel, false), + "packageA.v0.0.1": genOperator("packageA.v0.0.1", "0.0.1", "packageA.v1", "packageA", "alpha", catalog.Name, catalog.Namespace, Provides, nil, apiSetToDependencies(nil, Provides), defaultChannel, false), "packageB.v0.0.1": genOperator("packageB.v0.0.1", "0.0.1", "packageB.v1", "packageB", defaultChannel, catalog.Name, catalog.Namespace, nil, Provides, nil, defaultChannel, false), } require.EqualValues(t, expected, operators) @@ -1000,7 +1001,7 @@ func TestSolveOperators_SubscriptionlessOperatorsSatisfyDependencies(t *testing. operators, err := satResolver.SolveOperators([]string{"olm"}, csvs, subs) assert.NoError(t, err) expected := cache.OperatorSet{ - "packageB.v1.0.1": genOperator("packageB.v1.0.1", "1.0.1", "packageB.v1.0.0", "packageB", "alpha", catalog.Name, catalog.Namespace, Provides, nil, cache.APISetToDependencies(Provides, nil), "", false), + "packageB.v1.0.1": genOperator("packageB.v1.0.1", "1.0.1", "packageB.v1.0.0", "packageB", "alpha", catalog.Name, catalog.Namespace, Provides, nil, apiSetToDependencies(Provides, nil), "", false), } assert.Equal(t, len(expected), len(operators)) for k := range expected { @@ -1165,9 +1166,9 @@ func TestSolveOperators_TransferApiOwnership(t *testing.T) { csvs := make([]*v1alpha1.ClusterServiceVersion, 0) for _, o := range operators { var pkg, channel string - if b := o.Bundle; b != nil { - pkg = b.PackageName - channel = b.ChannelName + if si := o.SourceInfo; si != nil { + pkg = si.Package + channel = si.Channel } csvs = append(csvs, existingOperator(namespace, o.Name, pkg, channel, o.Replaces, o.ProvidedAPIs, o.RequiredAPIs, nil, nil)) } @@ -1186,30 +1187,24 @@ func TestSolveOperators_TransferApiOwnership(t *testing.T) { func genOperator(name, version, replaces, pkg, channel, catalogName, catalogNamespace string, requiredAPIs, providedAPIs cache.APISet, dependencies []*api.Dependency, defaultChannel string, deprecated bool) *cache.Operator { semversion, _ := semver.Make(version) - properties := cache.APISetToProperties(providedAPIs, nil, deprecated) + properties := apiSetToProperties(providedAPIs, nil, deprecated) if len(dependencies) == 0 { - ps, err := cache.RequiredAPIsToProperties(requiredAPIs) + ps, err := requiredAPIsToProperties(requiredAPIs) if err != nil { panic(err) } properties = append(properties, ps...) } else { - ps, err := cache.LegacyDependenciesToProperties(dependencies) + ps, err := legacyDependenciesToProperties(dependencies) if err != nil { panic(err) } properties = append(properties, ps...) } o := &cache.Operator{ - Name: name, - Version: &semversion, - Replaces: replaces, - Bundle: &api.Bundle{ - PackageName: pkg, - ChannelName: channel, - Dependencies: dependencies, - Properties: properties, - }, + Name: name, + Version: &semversion, + Replaces: replaces, Properties: properties, SourceInfo: &cache.OperatorSourceInfo{ Catalog: cache.SourceKey{ @@ -1227,11 +1222,6 @@ func genOperator(name, version, replaces, pkg, channel, catalogName, catalogName return o } -func stripBundle(o *cache.Operator) *cache.Operator { - o.Bundle = nil - return o -} - func TestSolveOperators_WithoutDeprecated(t *testing.T) { catalog := cache.SourceKey{Name: "catalog", Namespace: "namespace"} @@ -1513,8 +1503,8 @@ func TestInferProperties(t *testing.T) { Entries: []*cache.Operator{ { Name: "a", - Bundle: &api.Bundle{ - PackageName: "x", + SourceInfo: &cache.OperatorSourceInfo{ + Package: "x", }, }, }, @@ -1554,8 +1544,8 @@ func TestInferProperties(t *testing.T) { Entries: []*cache.Operator{ { Name: "a", - Bundle: &api.Bundle{ - PackageName: "x", + SourceInfo: &cache.OperatorSourceInfo{ + Package: "x", }, }, }, @@ -1616,8 +1606,8 @@ func TestInferProperties(t *testing.T) { Entries: []*cache.Operator{ { Name: "a", - Bundle: &api.Bundle{ - PackageName: "x", + SourceInfo: &cache.OperatorSourceInfo{ + Package: "x", }, }, }, @@ -1674,17 +1664,17 @@ func TestSortChannel(t *testing.T) { In: []*cache.Operator{ { Name: "b", - Bundle: &api.Bundle{ - PackageName: "package", - ChannelName: "channel", + SourceInfo: &cache.OperatorSourceInfo{ + Package: "package", + Channel: "channel", }, }, { Name: "a", Replaces: "b", - Bundle: &api.Bundle{ - PackageName: "package", - ChannelName: "channel", + SourceInfo: &cache.OperatorSourceInfo{ + Package: "package", + Channel: "channel", }, }, }, @@ -1692,16 +1682,16 @@ func TestSortChannel(t *testing.T) { { Name: "a", Replaces: "b", - Bundle: &api.Bundle{ - PackageName: "package", - ChannelName: "channel", + SourceInfo: &cache.OperatorSourceInfo{ + Package: "package", + Channel: "channel", }, }, { Name: "b", - Bundle: &api.Bundle{ - PackageName: "package", - ChannelName: "channel", + SourceInfo: &cache.OperatorSourceInfo{ + Package: "package", + Channel: "channel", }, }, }, @@ -1717,17 +1707,17 @@ func TestSortChannel(t *testing.T) { { Name: "a", Replaces: "b", - Bundle: &api.Bundle{ - PackageName: "package", - ChannelName: "channel", + SourceInfo: &cache.OperatorSourceInfo{ + Package: "package", + Channel: "channel", }, }, { Name: "b", Replaces: "a", - Bundle: &api.Bundle{ - PackageName: "package", - ChannelName: "channel", + SourceInfo: &cache.OperatorSourceInfo{ + Package: "package", + Channel: "channel", }, }, }, @@ -1739,25 +1729,25 @@ func TestSortChannel(t *testing.T) { { Name: "a", Replaces: "b", - Bundle: &api.Bundle{ - PackageName: "package", - ChannelName: "channel", + SourceInfo: &cache.OperatorSourceInfo{ + Package: "package", + Channel: "channel", }, }, { Name: "b", Replaces: "c", - Bundle: &api.Bundle{ - PackageName: "package", - ChannelName: "channel", + SourceInfo: &cache.OperatorSourceInfo{ + Package: "package", + Channel: "channel", }, }, { Name: "c", Replaces: "b", - Bundle: &api.Bundle{ - PackageName: "package", - ChannelName: "channel", + SourceInfo: &cache.OperatorSourceInfo{ + Package: "package", + Channel: "channel", }, }, }, @@ -1816,24 +1806,24 @@ func TestSortChannel(t *testing.T) { In: []*cache.Operator{ { Name: "a", - Bundle: &api.Bundle{ - PackageName: "package", - ChannelName: "channel", + SourceInfo: &cache.OperatorSourceInfo{ + Package: "package", + Channel: "channel", }, }, { Name: "b", Replaces: "c", - Bundle: &api.Bundle{ - PackageName: "package", - ChannelName: "channel", + SourceInfo: &cache.OperatorSourceInfo{ + Package: "package", + Channel: "channel", }, }, { Name: "c", - Bundle: &api.Bundle{ - PackageName: "package", - ChannelName: "channel", + SourceInfo: &cache.OperatorSourceInfo{ + Package: "package", + Channel: "channel", }, }, }, @@ -1852,3 +1842,228 @@ func TestSortChannel(t *testing.T) { }) } } + +func TestNewOperatorFromCSV(t *testing.T) { + version := opver.OperatorVersion{Version: semver.MustParse("0.1.0-abc")} + type args struct { + csv *v1alpha1.ClusterServiceVersion + } + tests := []struct { + name string + args args + want *cache.Operator + wantErr error + }{ + { + name: "NoProvided/NoRequired", + args: args{ + csv: &v1alpha1.ClusterServiceVersion{ + ObjectMeta: metav1.ObjectMeta{ + Name: "operator.v1", + }, + Spec: v1alpha1.ClusterServiceVersionSpec{ + Version: version, + }, + }, + }, + want: &cache.Operator{ + Name: "operator.v1", + ProvidedAPIs: cache.EmptyAPISet(), + RequiredAPIs: cache.EmptyAPISet(), + SourceInfo: &cache.ExistingOperator, + Version: &version.Version, + }, + }, + { + name: "Provided/NoRequired", + args: args{ + csv: &v1alpha1.ClusterServiceVersion{ + ObjectMeta: metav1.ObjectMeta{ + Name: "operator.v1", + }, + Spec: v1alpha1.ClusterServiceVersionSpec{ + Version: version, + CustomResourceDefinitions: v1alpha1.CustomResourceDefinitions{ + Owned: []v1alpha1.CRDDescription{ + { + Name: "crdkinds.g", + Version: "v1", + Kind: "CRDKind", + }, + }, + }, + APIServiceDefinitions: v1alpha1.APIServiceDefinitions{ + Owned: []v1alpha1.APIServiceDescription{ + { + Name: "apikinds", + Group: "g", + Version: "v1", + Kind: "APIKind", + }, + }, + }, + }, + }, + }, + want: &cache.Operator{ + Name: "operator.v1", + ProvidedAPIs: map[opregistry.APIKey]struct{}{ + {Group: "g", Version: "v1", Kind: "APIKind", Plural: "apikinds"}: {}, + {Group: "g", Version: "v1", Kind: "CRDKind", Plural: "crdkinds"}: {}, + }, + Properties: []*api.Property{ + { + Type: "olm.gvk", + Value: "{\"group\":\"g\",\"kind\":\"APIKind\",\"version\":\"v1\"}", + }, + { + Type: "olm.gvk", + Value: "{\"group\":\"g\",\"kind\":\"CRDKind\",\"version\":\"v1\"}", + }, + }, + RequiredAPIs: cache.EmptyAPISet(), + SourceInfo: &cache.ExistingOperator, + Version: &version.Version, + }, + }, + { + name: "NoProvided/Required", + args: args{ + csv: &v1alpha1.ClusterServiceVersion{ + ObjectMeta: metav1.ObjectMeta{ + Name: "operator.v1", + }, + Spec: v1alpha1.ClusterServiceVersionSpec{ + Version: version, + CustomResourceDefinitions: v1alpha1.CustomResourceDefinitions{ + Required: []v1alpha1.CRDDescription{ + { + Name: "crdkinds.g", + Version: "v1", + Kind: "CRDKind", + }, + }, + }, + APIServiceDefinitions: v1alpha1.APIServiceDefinitions{ + Required: []v1alpha1.APIServiceDescription{ + { + Name: "apikinds", + Group: "g", + Version: "v1", + Kind: "APIKind", + }, + }, + }, + }, + }, + }, + want: &cache.Operator{ + Name: "operator.v1", + ProvidedAPIs: cache.EmptyAPISet(), + RequiredAPIs: map[opregistry.APIKey]struct{}{ + {Group: "g", Version: "v1", Kind: "APIKind", Plural: "apikinds"}: {}, + {Group: "g", Version: "v1", Kind: "CRDKind", Plural: "crdkinds"}: {}, + }, + Properties: []*api.Property{ + { + Type: "olm.gvk.required", + Value: "{\"group\":\"g\",\"kind\":\"APIKind\",\"version\":\"v1\"}", + }, + { + Type: "olm.gvk.required", + Value: "{\"group\":\"g\",\"kind\":\"CRDKind\",\"version\":\"v1\"}", + }, + }, + SourceInfo: &cache.ExistingOperator, + Version: &version.Version, + }, + }, + { + name: "Provided/Required", + args: args{ + csv: &v1alpha1.ClusterServiceVersion{ + ObjectMeta: metav1.ObjectMeta{ + Name: "operator.v1", + }, + Spec: v1alpha1.ClusterServiceVersionSpec{ + Version: version, + CustomResourceDefinitions: v1alpha1.CustomResourceDefinitions{ + Owned: []v1alpha1.CRDDescription{ + { + Name: "crdownedkinds.g", + Version: "v1", + Kind: "CRDOwnedKind", + }, + }, + Required: []v1alpha1.CRDDescription{ + { + Name: "crdreqkinds.g2", + Version: "v1", + Kind: "CRDReqKind", + }, + }, + }, + APIServiceDefinitions: v1alpha1.APIServiceDefinitions{ + Owned: []v1alpha1.APIServiceDescription{ + { + Name: "apiownedkinds", + Group: "g", + Version: "v1", + Kind: "APIOwnedKind", + }, + }, + Required: []v1alpha1.APIServiceDescription{ + { + Name: "apireqkinds", + Group: "g2", + Version: "v1", + Kind: "APIReqKind", + }, + }, + }, + }, + }, + }, + want: &cache.Operator{ + Name: "operator.v1", + ProvidedAPIs: map[opregistry.APIKey]struct{}{ + {Group: "g", Version: "v1", Kind: "APIOwnedKind", Plural: "apiownedkinds"}: {}, + {Group: "g", Version: "v1", Kind: "CRDOwnedKind", Plural: "crdownedkinds"}: {}, + }, + RequiredAPIs: map[opregistry.APIKey]struct{}{ + {Group: "g2", Version: "v1", Kind: "APIReqKind", Plural: "apireqkinds"}: {}, + {Group: "g2", Version: "v1", Kind: "CRDReqKind", Plural: "crdreqkinds"}: {}, + }, + Properties: []*api.Property{ + { + Type: "olm.gvk", + Value: "{\"group\":\"g\",\"kind\":\"APIOwnedKind\",\"version\":\"v1\"}", + }, + { + Type: "olm.gvk", + Value: "{\"group\":\"g\",\"kind\":\"CRDOwnedKind\",\"version\":\"v1\"}", + }, + { + Type: "olm.gvk.required", + Value: "{\"group\":\"g2\",\"kind\":\"APIReqKind\",\"version\":\"v1\"}", + }, + { + Type: "olm.gvk.required", + Value: "{\"group\":\"g2\",\"kind\":\"CRDReqKind\",\"version\":\"v1\"}", + }, + }, + SourceInfo: &cache.ExistingOperator, + Version: &version.Version, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got, err := newOperatorFromV1Alpha1CSV(tt.args.csv) + require.Equal(t, tt.wantErr, err) + requirePropertiesEqual(t, tt.want.Properties, got.Properties) + tt.want.Properties, got.Properties = nil, nil + require.Equal(t, tt.want, got) + }) + } +} diff --git a/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/source_registry.go b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/source_registry.go index 6c5c11998d..eaea2568f9 100644 --- a/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/source_registry.go +++ b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/source_registry.go @@ -5,6 +5,7 @@ import ( "encoding/json" "fmt" + "github.com/blang/semver/v4" "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry" "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/cache" "github.com/operator-framework/operator-registry/pkg/api" @@ -58,7 +59,7 @@ func (s *registrySource) Snapshot(ctx context.Context) (*cache.Snapshot, error) defaultChannel = p.DefaultChannelName } } - o, err := cache.NewOperatorFromBundle(b, "", s.key, defaultChannel) + o, err := newOperatorFromBundle(b, "", s.key, defaultChannel) if err != nil { s.logger.Printf("failed to construct operator from bundle, continuing: %v", err) continue @@ -107,3 +108,132 @@ func EnsurePackageProperty(o *cache.Operator, name, version string) { Value: string(bytes), }) } + +func newOperatorFromBundle(bundle *api.Bundle, startingCSV string, sourceKey cache.SourceKey, defaultChannel string) (*cache.Operator, error) { + parsedVersion, err := semver.ParseTolerant(bundle.Version) + version := &parsedVersion + if err != nil { + version = nil + } + provided := cache.APISet{} + for _, gvk := range bundle.ProvidedApis { + provided[opregistry.APIKey{Plural: gvk.Plural, Group: gvk.Group, Kind: gvk.Kind, Version: gvk.Version}] = struct{}{} + } + required := cache.APISet{} + for _, gvk := range bundle.RequiredApis { + required[opregistry.APIKey{Plural: gvk.Plural, Group: gvk.Group, Kind: gvk.Kind, Version: gvk.Version}] = struct{}{} + } + sourceInfo := &cache.OperatorSourceInfo{ + Package: bundle.PackageName, + Channel: bundle.ChannelName, + StartingCSV: startingCSV, + Catalog: sourceKey, + } + sourceInfo.DefaultChannel = sourceInfo.Channel == defaultChannel + + // legacy support - if the api doesn't contain properties/dependencies, build them from required/provided apis + properties := bundle.Properties + if len(properties) == 0 { + properties, err = providedAPIsToProperties(provided) + if err != nil { + return nil, err + } + } + if len(bundle.Dependencies) > 0 { + ps, err := legacyDependenciesToProperties(bundle.Dependencies) + if err != nil { + return nil, fmt.Errorf("failed to translate legacy dependencies to properties: %w", err) + } + properties = append(properties, ps...) + } else { + ps, err := requiredAPIsToProperties(required) + if err != nil { + return nil, err + } + properties = append(properties, ps...) + } + + o := &cache.Operator{ + Name: bundle.CsvName, + Replaces: bundle.Replaces, + Version: version, + ProvidedAPIs: provided, + RequiredAPIs: required, + SourceInfo: sourceInfo, + Properties: properties, + Skips: bundle.Skips, + BundlePath: bundle.BundlePath, + } + + if r, err := semver.ParseRange(bundle.SkipRange); err == nil { + o.SkipRange = r + } + + if o.BundlePath == "" { + // This bundle's content is embedded within the Bundle + // proto message, not specified via image reference. + o.Bundle = bundle + } + + return o, nil +} + +func legacyDependenciesToProperties(dependencies []*api.Dependency) ([]*api.Property, error) { + var result []*api.Property + for _, dependency := range dependencies { + switch dependency.Type { + case "olm.gvk": + type gvk struct { + Group string `json:"group"` + Version string `json:"version"` + Kind string `json:"kind"` + } + var vfrom gvk + if err := json.Unmarshal([]byte(dependency.Value), &vfrom); err != nil { + return nil, fmt.Errorf("failed to unmarshal legacy 'olm.gvk' dependency: %w", err) + } + vto := gvk{ + Group: vfrom.Group, + Version: vfrom.Version, + Kind: vfrom.Kind, + } + vb, err := json.Marshal(&vto) + if err != nil { + return nil, fmt.Errorf("unexpected error marshaling generated 'olm.package.required' property: %w", err) + } + result = append(result, &api.Property{ + Type: "olm.gvk.required", + Value: string(vb), + }) + case "olm.package": + var vfrom struct { + PackageName string `json:"packageName"` + VersionRange string `json:"version"` + } + if err := json.Unmarshal([]byte(dependency.Value), &vfrom); err != nil { + return nil, fmt.Errorf("failed to unmarshal legacy 'olm.package' dependency: %w", err) + } + vto := struct { + PackageName string `json:"packageName"` + VersionRange string `json:"versionRange"` + }{ + PackageName: vfrom.PackageName, + VersionRange: vfrom.VersionRange, + } + vb, err := json.Marshal(&vto) + if err != nil { + return nil, fmt.Errorf("unexpected error marshaling generated 'olm.package.required' property: %w", err) + } + result = append(result, &api.Property{ + Type: "olm.package.required", + Value: string(vb), + }) + case "olm.label": + result = append(result, &api.Property{ + Type: "olm.label.required", + Value: dependency.Value, + }) + } + } + return result, nil +} diff --git a/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/source_registry_test.go b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/source_registry_test.go new file mode 100644 index 0000000000..05332ab534 --- /dev/null +++ b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/source_registry_test.go @@ -0,0 +1,394 @@ +package resolver + +import ( + "encoding/json" + "fmt" + "testing" + + "github.com/blang/semver/v4" + opver "github.com/operator-framework/api/pkg/lib/version" + "github.com/operator-framework/api/pkg/operators/v1alpha1" + "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/cache" + "github.com/operator-framework/operator-registry/pkg/api" + opregistry "github.com/operator-framework/operator-registry/pkg/registry" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +func TestNewOperatorFromBundle(t *testing.T) { + version := opver.OperatorVersion{Version: semver.MustParse("0.1.0-abc")} + csv := v1alpha1.ClusterServiceVersion{ + TypeMeta: metav1.TypeMeta{ + Kind: v1alpha1.ClusterServiceVersionKind, + APIVersion: v1alpha1.GroupVersion, + }, + ObjectMeta: metav1.ObjectMeta{ + Name: "testCSV", + Namespace: "testNamespace", + }, + Spec: v1alpha1.ClusterServiceVersionSpec{ + Replaces: "v1", + CustomResourceDefinitions: v1alpha1.CustomResourceDefinitions{ + Owned: []v1alpha1.CRDDescription{}, + Required: []v1alpha1.CRDDescription{}, + }, + APIServiceDefinitions: v1alpha1.APIServiceDefinitions{ + Owned: []v1alpha1.APIServiceDescription{}, + Required: []v1alpha1.APIServiceDescription{}, + }, + Version: version, + }, + } + + csvJson, err := json.Marshal(csv) + require.NoError(t, err) + bundleNoAPIs := &api.Bundle{ + CsvName: "testBundle", + PackageName: "testPackage", + ChannelName: "testChannel", + Version: version.String(), + CsvJson: string(csvJson), + Object: []string{string(csvJson)}, + } + + csv.Spec.CustomResourceDefinitions.Owned = []v1alpha1.CRDDescription{ + { + Name: "owneds.crd.group.com", + Version: "v1", + Kind: "OwnedCRD", + }, + } + csv.Spec.CustomResourceDefinitions.Required = []v1alpha1.CRDDescription{ + { + Name: "requireds.crd.group.com", + Version: "v1", + Kind: "RequiredCRD", + }, + } + csv.Spec.APIServiceDefinitions.Owned = []v1alpha1.APIServiceDescription{ + { + Name: "ownedapis", + Group: "apis.group.com", + Version: "v1", + Kind: "OwnedAPI", + }, + } + csv.Spec.APIServiceDefinitions.Required = []v1alpha1.APIServiceDescription{ + { + Name: "requiredapis", + Group: "apis.group.com", + Version: "v1", + Kind: "RequiredAPI", + }, + } + + csvJsonWithApis, err := json.Marshal(csv) + require.NoError(t, err) + + crd := v1beta1.CustomResourceDefinition{ + TypeMeta: metav1.TypeMeta{ + Kind: "CustomResourceDefinition", + APIVersion: "apiextensions.k8s.io/v1beta1", + }, + ObjectMeta: metav1.ObjectMeta{ + Name: "owneds.crd.group.com", + }, + Spec: v1beta1.CustomResourceDefinitionSpec{ + Group: "crd.group.com", + Versions: []v1beta1.CustomResourceDefinitionVersion{ + { + Name: "v1", + Served: true, + Storage: true, + }, + }, + Names: v1beta1.CustomResourceDefinitionNames{ + Plural: "owneds", + Singular: "owned", + Kind: "OwnedCRD", + ListKind: "OwnedCRDList", + }, + }, + } + crdJson, err := json.Marshal(crd) + require.NoError(t, err) + + bundleWithAPIs := &api.Bundle{ + CsvName: "testBundle", + PackageName: "testPackage", + ChannelName: "testChannel", + Version: version.String(), + CsvJson: string(csvJsonWithApis), + Object: []string{string(csvJsonWithApis), string(crdJson)}, + ProvidedApis: []*api.GroupVersionKind{ + { + Group: "crd.group.com", + Version: "v1", + Kind: "OwnedCRD", + Plural: "owneds", + }, + { + Plural: "ownedapis", + Group: "apis.group.com", + Version: "v1", + Kind: "OwnedAPI", + }, + }, + RequiredApis: []*api.GroupVersionKind{ + { + Group: "crd.group.com", + Version: "v1", + Kind: "RequiredCRD", + Plural: "requireds", + }, + { + Plural: "requiredapis", + Group: "apis.group.com", + Version: "v1", + Kind: "RequiredAPI", + }, + }, + } + + bundleWithPropsAndDeps := &api.Bundle{ + CsvName: "testBundle", + PackageName: "testPackage", + ChannelName: "testChannel", + Version: version.String(), + BundlePath: "image", + Properties: []*api.Property{ + { + Type: "olm.gvk", + Value: "{\"group\":\"crd.group.com\",\"kind\":\"OwnedCRD\",\"version\":\"v1\"}", + }, + { + Type: "olm.gvk", + Value: "{\"group\":\"apis.group.com\",\"kind\":\"OwnedAPI\",\"version\":\"v1\"}", + }, + }, + Dependencies: []*api.Dependency{ + { + Type: "olm.gvk", + Value: "{\"group\":\"crd.group.com\",\"kind\":\"RequiredCRD\",\"version\":\"v1\"}", + }, + { + Type: "olm.gvk", + Value: "{\"group\":\"apis.group.com\",\"kind\":\"RequiredAPI\",\"version\":\"v1\"}", + }, + }, + } + + bundleWithAPIsUnextracted := &api.Bundle{ + CsvName: "testBundle", + PackageName: "testPackage", + ChannelName: "testChannel", + CsvJson: string(csvJsonWithApis), + Object: []string{string(csvJsonWithApis), string(crdJson)}, + } + + type args struct { + bundle *api.Bundle + sourceKey cache.SourceKey + replaces string + defaultChannel string + } + tests := []struct { + name string + args args + want *cache.Operator + wantErr error + }{ + { + name: "BundleNoAPIs", + args: args{ + bundle: bundleNoAPIs, + sourceKey: cache.SourceKey{Name: "source", Namespace: "testNamespace"}, + }, + want: &cache.Operator{ + Name: "testBundle", + Version: &version.Version, + ProvidedAPIs: cache.EmptyAPISet(), + RequiredAPIs: cache.EmptyAPISet(), + Bundle: bundleNoAPIs, + SourceInfo: &cache.OperatorSourceInfo{ + Package: "testPackage", + Channel: "testChannel", + Catalog: cache.SourceKey{Name: "source", Namespace: "testNamespace"}, + }, + }, + }, + { + name: "BundleWithAPIs", + args: args{ + bundle: bundleWithAPIs, + sourceKey: cache.SourceKey{Name: "source", Namespace: "testNamespace"}, + }, + want: &cache.Operator{ + Name: "testBundle", + Version: &version.Version, + ProvidedAPIs: cache.APISet{ + opregistry.APIKey{ + Group: "crd.group.com", + Version: "v1", + Kind: "OwnedCRD", + Plural: "owneds", + }: struct{}{}, + opregistry.APIKey{ + Group: "apis.group.com", + Version: "v1", + Kind: "OwnedAPI", + Plural: "ownedapis", + }: struct{}{}, + }, + RequiredAPIs: cache.APISet{ + opregistry.APIKey{ + Group: "crd.group.com", + Version: "v1", + Kind: "RequiredCRD", + Plural: "requireds", + }: struct{}{}, + opregistry.APIKey{ + Group: "apis.group.com", + Version: "v1", + Kind: "RequiredAPI", + Plural: "requiredapis", + }: struct{}{}, + }, + Properties: []*api.Property{ + { + Type: "olm.gvk", + Value: "{\"group\":\"crd.group.com\",\"kind\":\"OwnedCRD\",\"version\":\"v1\"}", + }, + { + Type: "olm.gvk", + Value: "{\"group\":\"apis.group.com\",\"kind\":\"OwnedAPI\",\"version\":\"v1\"}", + }, + { + Type: "olm.gvk.required", + Value: "{\"group\":\"crd.group.com\",\"kind\":\"RequiredCRD\",\"version\":\"v1\"}", + }, + { + Type: "olm.gvk.required", + Value: "{\"group\":\"apis.group.com\",\"kind\":\"RequiredAPI\",\"version\":\"v1\"}", + }, + }, + Bundle: bundleWithAPIs, + SourceInfo: &cache.OperatorSourceInfo{ + Package: "testPackage", + Channel: "testChannel", + Catalog: cache.SourceKey{Name: "source", Namespace: "testNamespace"}, + }, + }, + }, + { + name: "BundleIgnoreCSV", + args: args{ + bundle: bundleWithAPIsUnextracted, + sourceKey: cache.SourceKey{Name: "source", Namespace: "testNamespace"}, + }, + want: &cache.Operator{ + Name: "testBundle", + ProvidedAPIs: cache.EmptyAPISet(), + RequiredAPIs: cache.EmptyAPISet(), + Bundle: bundleWithAPIsUnextracted, + SourceInfo: &cache.OperatorSourceInfo{ + Package: "testPackage", + Channel: "testChannel", + Catalog: cache.SourceKey{Name: "source", Namespace: "testNamespace"}, + }, + }, + }, + { + name: "BundleInDefaultChannel", + args: args{ + bundle: bundleNoAPIs, + sourceKey: cache.SourceKey{Name: "source", Namespace: "testNamespace"}, + defaultChannel: "testChannel", + }, + want: &cache.Operator{ + Name: "testBundle", + Version: &version.Version, + ProvidedAPIs: cache.EmptyAPISet(), + RequiredAPIs: cache.EmptyAPISet(), + Bundle: bundleNoAPIs, + SourceInfo: &cache.OperatorSourceInfo{ + Package: "testPackage", + Channel: "testChannel", + Catalog: cache.SourceKey{Name: "source", Namespace: "testNamespace"}, + DefaultChannel: true, + }, + }, + }, + { + name: "BundleWithPropertiesAndDependencies", + args: args{ + bundle: bundleWithPropsAndDeps, + sourceKey: cache.SourceKey{Name: "source", Namespace: "testNamespace"}, + }, + want: &cache.Operator{ + Name: "testBundle", + Version: &version.Version, + ProvidedAPIs: cache.EmptyAPISet(), + RequiredAPIs: cache.EmptyAPISet(), + Properties: []*api.Property{ + { + Type: "olm.gvk", + Value: "{\"group\":\"crd.group.com\",\"kind\":\"OwnedCRD\",\"version\":\"v1\"}", + }, + { + Type: "olm.gvk", + Value: "{\"group\":\"apis.group.com\",\"kind\":\"OwnedAPI\",\"version\":\"v1\"}", + }, + { + Type: "olm.gvk.required", + Value: "{\"group\":\"crd.group.com\",\"kind\":\"RequiredCRD\",\"version\":\"v1\"}", + }, + { + Type: "olm.gvk.required", + Value: "{\"group\":\"apis.group.com\",\"kind\":\"RequiredAPI\",\"version\":\"v1\"}", + }, + }, + BundlePath: bundleWithPropsAndDeps.BundlePath, + SourceInfo: &cache.OperatorSourceInfo{ + Package: "testPackage", + Channel: "testChannel", + Catalog: cache.SourceKey{Name: "source", Namespace: "testNamespace"}, + }, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got, err := newOperatorFromBundle(tt.args.bundle, "", tt.args.sourceKey, tt.args.defaultChannel) + require.Equal(t, tt.wantErr, err) + requirePropertiesEqual(t, tt.want.Properties, got.Properties) + tt.want.Properties, got.Properties = nil, nil + require.Equal(t, tt.want, got) + }) + } +} + +func TestNewOperatorFromBundleStripsPluralRequiredAndProvidedAPIKeys(t *testing.T) { + key := cache.SourceKey{Namespace: "testnamespace", Name: "testname"} + o, err := newOperatorFromBundle(&api.Bundle{ + CsvName: fmt.Sprintf("%s/%s", key.Namespace, key.Name), + ProvidedApis: []*api.GroupVersionKind{{ + Group: "g", + Version: "v1", + Kind: "K", + Plural: "ks", + }}, + RequiredApis: []*api.GroupVersionKind{{ + Group: "g2", + Version: "v2", + Kind: "K2", + Plural: "ks2", + }}, + }, "", key, "") + + assert.NoError(t, err) + assert.Equal(t, "K.v1.g", o.ProvidedAPIs.String()) + assert.Equal(t, "K2.v2.g2", o.RequiredAPIs.String()) +} diff --git a/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/step_resolver.go b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/step_resolver.go index 7574dda57c..079b928065 100644 --- a/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/step_resolver.go +++ b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/step_resolver.go @@ -137,57 +137,55 @@ func (r *OperatorStepResolver) ResolveSteps(namespace string) ([]*v1alpha1.Step, // add steps for any new bundle if op.Bundle != nil { - if op.Inline() { - bundleSteps, err := NewStepsFromBundle(op.Bundle, namespace, op.Replaces, op.SourceInfo.Catalog.Name, op.SourceInfo.Catalog.Namespace) - if err != nil { - return nil, nil, nil, fmt.Errorf("failed to turn bundle into steps: %s", err.Error()) - } - steps = append(steps, bundleSteps...) - } else { - lookup := v1alpha1.BundleLookup{ - Path: op.Bundle.GetBundlePath(), - Identifier: op.Name, - Replaces: op.Replaces, - CatalogSourceRef: &corev1.ObjectReference{ - Namespace: op.SourceInfo.Catalog.Namespace, - Name: op.SourceInfo.Catalog.Name, + bundleSteps, err := NewStepsFromBundle(op.Bundle, namespace, op.Replaces, op.SourceInfo.Catalog.Name, op.SourceInfo.Catalog.Namespace) + if err != nil { + return nil, nil, nil, fmt.Errorf("failed to turn bundle into steps: %s", err.Error()) + } + steps = append(steps, bundleSteps...) + } else { + lookup := v1alpha1.BundleLookup{ + Path: op.BundlePath, + Identifier: op.Name, + Replaces: op.Replaces, + CatalogSourceRef: &corev1.ObjectReference{ + Namespace: op.SourceInfo.Catalog.Namespace, + Name: op.SourceInfo.Catalog.Name, + }, + Conditions: []v1alpha1.BundleLookupCondition{ + { + Type: BundleLookupConditionPacked, + Status: corev1.ConditionTrue, + Reason: controllerbundle.NotUnpackedReason, + Message: controllerbundle.NotUnpackedMessage, }, - Conditions: []v1alpha1.BundleLookupCondition{ - { - Type: BundleLookupConditionPacked, - Status: corev1.ConditionTrue, - Reason: controllerbundle.NotUnpackedReason, - Message: controllerbundle.NotUnpackedMessage, - }, - { - Type: v1alpha1.BundleLookupPending, - Status: corev1.ConditionTrue, - Reason: controllerbundle.JobNotStartedReason, - Message: controllerbundle.JobNotStartedMessage, - }, + { + Type: v1alpha1.BundleLookupPending, + Status: corev1.ConditionTrue, + Reason: controllerbundle.JobNotStartedReason, + Message: controllerbundle.JobNotStartedMessage, }, - } - if anno, err := projection.PropertiesAnnotationFromPropertyList(op.Properties); err != nil { - return nil, nil, nil, fmt.Errorf("failed to serialize operator properties for %q: %w", op.Name, err) - } else { - lookup.Properties = anno - } - bundleLookups = append(bundleLookups, lookup) + }, } + if anno, err := projection.PropertiesAnnotationFromPropertyList(op.Properties); err != nil { + return nil, nil, nil, fmt.Errorf("failed to serialize operator properties for %q: %w", op.Name, err) + } else { + lookup.Properties = anno + } + bundleLookups = append(bundleLookups, lookup) + } - if len(existingSubscriptions) == 0 { - // explicitly track the resolved CSV as the starting CSV on the resolved subscriptions - op.SourceInfo.StartingCSV = op.Name - subStep, err := NewSubscriptionStepResource(namespace, *op.SourceInfo) - if err != nil { - return nil, nil, nil, err - } - steps = append(steps, &v1alpha1.Step{ - Resolving: name, - Resource: subStep, - Status: v1alpha1.StepStatusUnknown, - }) + if len(existingSubscriptions) == 0 { + // explicitly track the resolved CSV as the starting CSV on the resolved subscriptions + op.SourceInfo.StartingCSV = op.Name + subStep, err := NewSubscriptionStepResource(namespace, *op.SourceInfo) + if err != nil { + return nil, nil, nil, err } + steps = append(steps, &v1alpha1.Step{ + Resolving: name, + Resource: subStep, + Status: v1alpha1.StepStatusUnknown, + }) } // add steps for subscriptions for bundles that were added through resolution diff --git a/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/step_resolver_test.go b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/step_resolver_test.go index 77faa38b9c..f85056192f 100644 --- a/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/step_resolver_test.go +++ b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/step_resolver_test.go @@ -829,7 +829,7 @@ func TestResolver(t *testing.T) { for catalog, bundles := range tt.bundlesByCatalog { snapshot := &resolvercache.Snapshot{} for _, bundle := range bundles { - op, err := resolvercache.NewOperatorFromBundle(bundle, "", catalog, "") + op, err := newOperatorFromBundle(bundle, "", catalog, "") if err != nil { t.Fatalf("unexpected error: %v", err) } @@ -974,7 +974,7 @@ func TestNamespaceResolverRBAC(t *testing.T) { stubSnapshot := &resolvercache.Snapshot{} for _, bundle := range tt.bundlesInCatalog { - op, err := resolvercache.NewOperatorFromBundle(bundle, "", catalog, "") + op, err := newOperatorFromBundle(bundle, "", catalog, "") if err != nil { t.Fatalf("unexpected error: %v", err) } diff --git a/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/util_test.go b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/util_test.go index 6586277b5b..9d4016cb0c 100644 --- a/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/util_test.go +++ b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/util_test.go @@ -239,8 +239,8 @@ func bundle(name, pkg, channel, replaces string, providedCRDs, requiredCRDs, pro ProvidedApis: apiSetToGVK(providedCRDs, providedAPIServices), RequiredApis: apiSetToGVK(requiredCRDs, requiredAPIServices), Replaces: replaces, - Dependencies: cache.APISetToDependencies(requiredCRDs, requiredAPIServices), - Properties: append(cache.APISetToProperties(providedCRDs, providedAPIServices, false), + Dependencies: apiSetToDependencies(requiredCRDs, requiredAPIServices), + Properties: append(apiSetToProperties(providedCRDs, providedAPIServices, false), packageNameToProperty(pkg, "0.0.0"), ), } @@ -300,3 +300,113 @@ func withReplaces(operator *cache.Operator, replaces string) *cache.Operator { operator.Replaces = replaces return operator } + +func requirePropertiesEqual(t *testing.T, a, b []*api.Property) { + type Property struct { + Type string + Value interface{} + } + nice := func(in *api.Property) Property { + var i interface{} + if err := json.Unmarshal([]byte(in.Value), &i); err != nil { + t.Fatalf("property value %q could not be unmarshaled as json: %s", in.Value, err) + } + return Property{ + Type: in.Type, + Value: i, + } + } + var l, r []Property + for _, p := range a { + l = append(l, nice(p)) + } + for _, p := range b { + r = append(r, nice(p)) + } + require.ElementsMatch(t, l, r) +} + +func apiSetToProperties(crds, apis cache.APISet, deprecated bool) (out []*api.Property) { + out = make([]*api.Property, 0) + for a := range crds { + val, err := json.Marshal(opregistry.GVKProperty{ + Group: a.Group, + Kind: a.Kind, + Version: a.Version, + }) + if err != nil { + panic(err) + } + out = append(out, &api.Property{ + Type: opregistry.GVKType, + Value: string(val), + }) + } + for a := range apis { + val, err := json.Marshal(opregistry.GVKProperty{ + Group: a.Group, + Kind: a.Kind, + Version: a.Version, + }) + if err != nil { + panic(err) + } + out = append(out, &api.Property{ + Type: opregistry.GVKType, + Value: string(val), + }) + } + if deprecated { + val, err := json.Marshal(opregistry.DeprecatedProperty{}) + if err != nil { + panic(err) + } + out = append(out, &api.Property{ + Type: opregistry.DeprecatedType, + Value: string(val), + }) + } + if len(out) == 0 { + return nil + } + return +} + +func apiSetToDependencies(crds, apis cache.APISet) (out []*api.Dependency) { + if len(crds)+len(apis) == 0 { + return nil + } + out = make([]*api.Dependency, 0) + for a := range crds { + val, err := json.Marshal(opregistry.GVKDependency{ + Group: a.Group, + Kind: a.Kind, + Version: a.Version, + }) + if err != nil { + panic(err) + } + out = append(out, &api.Dependency{ + Type: opregistry.GVKType, + Value: string(val), + }) + } + for a := range apis { + val, err := json.Marshal(opregistry.GVKDependency{ + Group: a.Group, + Kind: a.Kind, + Version: a.Version, + }) + if err != nil { + panic(err) + } + out = append(out, &api.Dependency{ + Type: opregistry.GVKType, + Value: string(val), + }) + } + if len(out) == 0 { + return nil + } + return +} diff --git a/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/operators/olm/labeler.go b/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/operators/olm/labeler.go index c0d003da5c..77d16234a8 100644 --- a/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/operators/olm/labeler.go +++ b/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/operators/olm/labeler.go @@ -1,8 +1,13 @@ package olm import ( + "fmt" + "strings" + + "github.com/operator-framework/api/pkg/operators/v1alpha1" "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/cache" "github.com/operator-framework/operator-registry/pkg/registry" + opregistry "github.com/operator-framework/operator-registry/pkg/registry" extv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" extv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" "k8s.io/apimachinery/pkg/labels" @@ -13,9 +18,41 @@ const ( APILabelKeyPrefix = "olm.api." ) -type operatorSurface interface { - GetProvidedAPIs() cache.APISet - GetRequiredAPIs() cache.APISet +type operatorSurface struct { + ProvidedAPIs cache.APISet + RequiredAPIs cache.APISet +} + +func apiSurfaceOfCSV(csv *v1alpha1.ClusterServiceVersion) (*operatorSurface, error) { + surface := operatorSurface{ + ProvidedAPIs: cache.EmptyAPISet(), + RequiredAPIs: cache.EmptyAPISet(), + } + + for _, crdDef := range csv.Spec.CustomResourceDefinitions.Owned { + parts := strings.SplitN(crdDef.Name, ".", 2) + if len(parts) < 2 { + return nil, fmt.Errorf("error parsing crd name: %s", crdDef.Name) + } + surface.ProvidedAPIs[opregistry.APIKey{Plural: parts[0], Group: parts[1], Version: crdDef.Version, Kind: crdDef.Kind}] = struct{}{} + } + for _, api := range csv.Spec.APIServiceDefinitions.Owned { + surface.ProvidedAPIs[opregistry.APIKey{Group: api.Group, Version: api.Version, Kind: api.Kind, Plural: api.Name}] = struct{}{} + } + + requiredAPIs := cache.EmptyAPISet() + for _, crdDef := range csv.Spec.CustomResourceDefinitions.Required { + parts := strings.SplitN(crdDef.Name, ".", 2) + if len(parts) < 2 { + return nil, fmt.Errorf("error parsing crd name: %s", crdDef.Name) + } + requiredAPIs[opregistry.APIKey{Plural: parts[0], Group: parts[1], Version: crdDef.Version, Kind: crdDef.Kind}] = struct{}{} + } + for _, api := range csv.Spec.APIServiceDefinitions.Required { + requiredAPIs[opregistry.APIKey{Group: api.Group, Version: api.Version, Kind: api.Kind, Plural: api.Name}] = struct{}{} + } + + return &surface, nil } // LabelSetsFor returns API label sets for the given object. @@ -35,14 +72,14 @@ func LabelSetsFor(obj interface{}) ([]labels.Set, error) { func labelSetsForOperatorSurface(surface operatorSurface) ([]labels.Set, error) { labelSet := labels.Set{} - for key := range surface.GetProvidedAPIs().StripPlural() { + for key := range surface.ProvidedAPIs.StripPlural() { hash, err := cache.APIKeyToGVKHash(key) if err != nil { return nil, err } labelSet[APILabelKeyPrefix+hash] = "provided" } - for key := range surface.GetRequiredAPIs().StripPlural() { + for key := range surface.RequiredAPIs.StripPlural() { hash, err := cache.APIKeyToGVKHash(key) if err != nil { return nil, err diff --git a/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/operators/olm/operator.go b/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/operators/olm/operator.go index 39018ee376..4a9457b534 100644 --- a/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/operators/olm/operator.go +++ b/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/operators/olm/operator.go @@ -37,7 +37,6 @@ import ( "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/install" "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/operators/internal/pruning" "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/operators/olm/overrides" - resolvercache "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/cache" "github.com/operator-framework/operator-lifecycle-manager/pkg/lib/clients" csvutility "github.com/operator-framework/operator-lifecycle-manager/pkg/lib/csv" "github.com/operator-framework/operator-lifecycle-manager/pkg/lib/event" @@ -1364,7 +1363,7 @@ func (a *Operator) transitionCSVState(in v1alpha1.ClusterServiceVersion) (out *v out = in.DeepCopy() now := a.now() - operatorSurface, err := resolvercache.NewOperatorFromV1Alpha1CSV(out) + operatorSurface, err := apiSurfaceOfCSV(out) if err != nil { // If the resolver is unable to retrieve the operator info from the CSV the CSV requires changes, a syncError should not be returned. logger.WithError(err).Warn("Unable to retrieve operator information from CSV") @@ -1428,7 +1427,7 @@ func (a *Operator) transitionCSVState(in v1alpha1.ClusterServiceVersion) (out *v groupSurface := NewOperatorGroup(operatorGroup) otherGroupSurfaces := NewOperatorGroupSurfaces(otherGroups...) - providedAPIs := operatorSurface.GetProvidedAPIs().StripPlural() + providedAPIs := operatorSurface.ProvidedAPIs.StripPlural() switch result := a.apiReconciler.Reconcile(providedAPIs, groupSurface, otherGroupSurfaces...); { case operatorGroup.Spec.StaticProvidedAPIs && (result == AddAPIs || result == RemoveAPIs): diff --git a/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/operators/olm/operatorgroup.go b/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/operators/olm/operatorgroup.go index 8a2871a312..0bc563d020 100644 --- a/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/operators/olm/operatorgroup.go +++ b/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/operators/olm/operatorgroup.go @@ -309,12 +309,12 @@ func (a *Operator) providedAPIsFromCSVs(group *v1.OperatorGroup, logger *logrus. // TODO: Throw out CSVs that aren't members of the group due to group related failures? // Union the providedAPIsFromCSVs from existing members of the group - operatorSurface, err := cache.NewOperatorFromV1Alpha1CSV(csv) + operatorSurface, err := apiSurfaceOfCSV(csv) if err != nil { logger.WithError(err).Warn("could not create OperatorSurface from csv") continue } - for providedAPI := range operatorSurface.GetProvidedAPIs().StripPlural() { + for providedAPI := range operatorSurface.ProvidedAPIs.StripPlural() { providedAPIsFromCSVs[providedAPI] = csv } } @@ -1051,12 +1051,12 @@ func (a *Operator) findCSVsThatProvideAnyOf(provide cache.APISet) ([]*v1alpha1.C continue } - operatorSurface, err := cache.NewOperatorFromV1Alpha1CSV(csv) + operatorSurface, err := apiSurfaceOfCSV(csv) if err != nil { continue } - if len(operatorSurface.GetProvidedAPIs().StripPlural().Intersection(provide)) > 0 { + if len(operatorSurface.ProvidedAPIs.StripPlural().Intersection(provide)) > 0 { providers = append(providers, csv) } } diff --git a/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/operators.go b/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/operators.go index 1c43077935..ae71784b45 100644 --- a/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/operators.go +++ b/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/operators.go @@ -1,7 +1,6 @@ package cache import ( - "encoding/json" "fmt" "hash/fnv" "sort" @@ -213,361 +212,27 @@ type Operator struct { ProvidedAPIs APISet RequiredAPIs APISet Version *semver.Version - Bundle *api.Bundle SourceInfo *OperatorSourceInfo Properties []*api.Property -} - -func NewOperatorFromBundle(bundle *api.Bundle, startingCSV string, sourceKey SourceKey, defaultChannel string) (*Operator, error) { - parsedVersion, err := semver.ParseTolerant(bundle.Version) - version := &parsedVersion - if err != nil { - version = nil - } - provided := APISet{} - for _, gvk := range bundle.ProvidedApis { - provided[opregistry.APIKey{Plural: gvk.Plural, Group: gvk.Group, Kind: gvk.Kind, Version: gvk.Version}] = struct{}{} - } - required := APISet{} - for _, gvk := range bundle.RequiredApis { - required[opregistry.APIKey{Plural: gvk.Plural, Group: gvk.Group, Kind: gvk.Kind, Version: gvk.Version}] = struct{}{} - } - sourceInfo := &OperatorSourceInfo{ - Package: bundle.PackageName, - Channel: bundle.ChannelName, - StartingCSV: startingCSV, - Catalog: sourceKey, - } - sourceInfo.DefaultChannel = sourceInfo.Channel == defaultChannel - - // legacy support - if the api doesn't contain properties/dependencies, build them from required/provided apis - properties := bundle.Properties - if len(properties) == 0 { - properties, err = providedAPIsToProperties(provided) - if err != nil { - return nil, err - } - } - if len(bundle.Dependencies) > 0 { - ps, err := LegacyDependenciesToProperties(bundle.Dependencies) - if err != nil { - return nil, fmt.Errorf("failed to translate legacy dependencies to properties: %w", err) - } - properties = append(properties, ps...) - } else { - ps, err := RequiredAPIsToProperties(required) - if err != nil { - return nil, err - } - properties = append(properties, ps...) - } - - o := &Operator{ - Name: bundle.CsvName, - Replaces: bundle.Replaces, - Version: version, - ProvidedAPIs: provided, - RequiredAPIs: required, - Bundle: bundle, - SourceInfo: sourceInfo, - Properties: properties, - Skips: bundle.Skips, - } + BundlePath string - if r, err := semver.ParseRange(o.Bundle.SkipRange); err == nil { - o.SkipRange = r - } - - if !o.Inline() { - // TODO: Extract any necessary information from the Bundle - // up-front and remove the bundle field altogether. For now, - // take the easy opportunity to save heap space by discarding - // two of the worst offenders. - bundle.CsvJson = "" - bundle.Object = nil - } - - return o, nil -} - -func NewOperatorFromV1Alpha1CSV(csv *v1alpha1.ClusterServiceVersion) (*Operator, error) { - providedAPIs := EmptyAPISet() - for _, crdDef := range csv.Spec.CustomResourceDefinitions.Owned { - parts := strings.SplitN(crdDef.Name, ".", 2) - if len(parts) < 2 { - return nil, fmt.Errorf("error parsing crd name: %s", crdDef.Name) - } - providedAPIs[opregistry.APIKey{Plural: parts[0], Group: parts[1], Version: crdDef.Version, Kind: crdDef.Kind}] = struct{}{} - } - for _, api := range csv.Spec.APIServiceDefinitions.Owned { - providedAPIs[opregistry.APIKey{Group: api.Group, Version: api.Version, Kind: api.Kind, Plural: api.Name}] = struct{}{} - } - - requiredAPIs := EmptyAPISet() - for _, crdDef := range csv.Spec.CustomResourceDefinitions.Required { - parts := strings.SplitN(crdDef.Name, ".", 2) - if len(parts) < 2 { - return nil, fmt.Errorf("error parsing crd name: %s", crdDef.Name) - } - requiredAPIs[opregistry.APIKey{Plural: parts[0], Group: parts[1], Version: crdDef.Version, Kind: crdDef.Kind}] = struct{}{} - } - for _, api := range csv.Spec.APIServiceDefinitions.Required { - requiredAPIs[opregistry.APIKey{Group: api.Group, Version: api.Version, Kind: api.Kind, Plural: api.Name}] = struct{}{} - } - - properties, err := providedAPIsToProperties(providedAPIs) - if err != nil { - return nil, err - } - dependencies, err := RequiredAPIsToProperties(requiredAPIs) - if err != nil { - return nil, err - } - properties = append(properties, dependencies...) - - return &Operator{ - Name: csv.GetName(), - Version: &csv.Spec.Version.Version, - ProvidedAPIs: providedAPIs, - RequiredAPIs: requiredAPIs, - SourceInfo: &ExistingOperator, - Properties: properties, - }, nil -} - -func (o *Operator) GetProvidedAPIs() APISet { - return o.ProvidedAPIs -} - -func (o *Operator) GetRequiredAPIs() APISet { - return o.RequiredAPIs + // Present exclusively to pipe inlined bundle + // content. Resolver components shouldn't need to read this, + // and it should eventually be possible to remove the field + // altogether. + Bundle *api.Bundle } func (o *Operator) Package() string { - if o.Bundle != nil { - return o.Bundle.PackageName + if si := o.SourceInfo; si != nil { + return si.Package } return "" } func (o *Operator) Channel() string { - if o.Bundle != nil { - return o.Bundle.ChannelName + if si := o.SourceInfo; si != nil { + return si.Channel } return "" } - -func (o *Operator) Inline() bool { - return o.Bundle != nil && o.Bundle.GetBundlePath() == "" -} - -func (o *Operator) DependencyPredicates() (predicates []OperatorPredicate, err error) { - predicates = make([]OperatorPredicate, 0) - for _, property := range o.Properties { - predicate, err := PredicateForProperty(property) - if err != nil { - return nil, err - } - if predicate == nil { - continue - } - predicates = append(predicates, predicate) - } - return -} - -func RequiredAPIsToProperties(apis APISet) (out []*api.Property, err error) { - if len(apis) == 0 { - return - } - out = make([]*api.Property, 0) - for a := range apis { - val, err := json.Marshal(struct { - Group string `json:"group"` - Version string `json:"version"` - Kind string `json:"kind"` - }{ - Group: a.Group, - Version: a.Version, - Kind: a.Kind, - }) - if err != nil { - return nil, err - } - out = append(out, &api.Property{ - Type: "olm.gvk.required", - Value: string(val), - }) - } - if len(out) > 0 { - return - } - return nil, nil -} - -func providedAPIsToProperties(apis APISet) (out []*api.Property, err error) { - out = make([]*api.Property, 0) - for a := range apis { - val, err := json.Marshal(opregistry.GVKProperty{ - Group: a.Group, - Version: a.Version, - Kind: a.Kind, - }) - if err != nil { - panic(err) - } - out = append(out, &api.Property{ - Type: opregistry.GVKType, - Value: string(val), - }) - } - if len(out) > 0 { - return - } - return nil, nil -} - -func LegacyDependenciesToProperties(dependencies []*api.Dependency) ([]*api.Property, error) { - var result []*api.Property - for _, dependency := range dependencies { - switch dependency.Type { - case "olm.gvk": - type gvk struct { - Group string `json:"group"` - Version string `json:"version"` - Kind string `json:"kind"` - } - var vfrom gvk - if err := json.Unmarshal([]byte(dependency.Value), &vfrom); err != nil { - return nil, fmt.Errorf("failed to unmarshal legacy 'olm.gvk' dependency: %w", err) - } - vto := gvk{ - Group: vfrom.Group, - Version: vfrom.Version, - Kind: vfrom.Kind, - } - vb, err := json.Marshal(&vto) - if err != nil { - return nil, fmt.Errorf("unexpected error marshaling generated 'olm.package.required' property: %w", err) - } - result = append(result, &api.Property{ - Type: "olm.gvk.required", - Value: string(vb), - }) - case "olm.package": - var vfrom struct { - PackageName string `json:"packageName"` - VersionRange string `json:"version"` - } - if err := json.Unmarshal([]byte(dependency.Value), &vfrom); err != nil { - return nil, fmt.Errorf("failed to unmarshal legacy 'olm.package' dependency: %w", err) - } - vto := struct { - PackageName string `json:"packageName"` - VersionRange string `json:"versionRange"` - }{ - PackageName: vfrom.PackageName, - VersionRange: vfrom.VersionRange, - } - vb, err := json.Marshal(&vto) - if err != nil { - return nil, fmt.Errorf("unexpected error marshaling generated 'olm.package.required' property: %w", err) - } - result = append(result, &api.Property{ - Type: "olm.package.required", - Value: string(vb), - }) - case "olm.label": - result = append(result, &api.Property{ - Type: "olm.label.required", - Value: dependency.Value, - }) - } - } - return result, nil -} - -func APISetToProperties(crds, apis APISet, deprecated bool) (out []*api.Property) { - out = make([]*api.Property, 0) - for a := range crds { - val, err := json.Marshal(opregistry.GVKProperty{ - Group: a.Group, - Kind: a.Kind, - Version: a.Version, - }) - if err != nil { - panic(err) - } - out = append(out, &api.Property{ - Type: opregistry.GVKType, - Value: string(val), - }) - } - for a := range apis { - val, err := json.Marshal(opregistry.GVKProperty{ - Group: a.Group, - Kind: a.Kind, - Version: a.Version, - }) - if err != nil { - panic(err) - } - out = append(out, &api.Property{ - Type: opregistry.GVKType, - Value: string(val), - }) - } - if deprecated { - val, err := json.Marshal(opregistry.DeprecatedProperty{}) - if err != nil { - panic(err) - } - out = append(out, &api.Property{ - Type: opregistry.DeprecatedType, - Value: string(val), - }) - } - if len(out) == 0 { - return nil - } - return -} - -func APISetToDependencies(crds, apis APISet) (out []*api.Dependency) { - if len(crds)+len(apis) == 0 { - return nil - } - out = make([]*api.Dependency, 0) - for a := range crds { - val, err := json.Marshal(opregistry.GVKDependency{ - Group: a.Group, - Kind: a.Kind, - Version: a.Version, - }) - if err != nil { - panic(err) - } - out = append(out, &api.Dependency{ - Type: opregistry.GVKType, - Value: string(val), - }) - } - for a := range apis { - val, err := json.Marshal(opregistry.GVKDependency{ - Group: a.Group, - Kind: a.Kind, - Version: a.Version, - }) - if err != nil { - panic(err) - } - out = append(out, &api.Dependency{ - Type: opregistry.GVKType, - Value: string(val), - }) - } - if len(out) == 0 { - return nil - } - return -} diff --git a/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/predicates.go b/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/predicates.go index 292dda4805..66f1d28c5a 100644 --- a/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/predicates.go +++ b/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/cache/predicates.go @@ -7,7 +7,6 @@ import ( "github.com/blang/semver/v4" - "github.com/operator-framework/operator-registry/pkg/api" opregistry "github.com/operator-framework/operator-registry/pkg/registry" ) @@ -41,10 +40,10 @@ func (ch channelPredicate) Test(o *Operator) bool { if string(ch) == "" { return true } - if o.Bundle == nil { - return false + if si := o.SourceInfo; si != nil { + return si.Channel == string(ch) } - return o.Bundle.ChannelName == string(ch) + return false } func (ch channelPredicate) String() string { @@ -322,67 +321,11 @@ func (c countingPredicate) Test(o *Operator) bool { } return false } + func (c countingPredicate) String() string { return c.p.String() } + func CountingPredicate(p OperatorPredicate, n *int) OperatorPredicate { return countingPredicate{p: p, n: n} } - -func PredicateForProperty(property *api.Property) (OperatorPredicate, error) { - if property == nil { - return nil, nil - } - p, ok := predicates[property.Type] - if !ok { - return nil, nil - } - return p(property.Value) -} - -var predicates = map[string]func(string) (OperatorPredicate, error){ - "olm.gvk.required": predicateForRequiredGVKProperty, - "olm.package.required": predicateForRequiredPackageProperty, - "olm.label.required": predicateForRequiredLabelProperty, -} - -func predicateForRequiredGVKProperty(value string) (OperatorPredicate, error) { - var gvk struct { - Group string `json:"group"` - Version string `json:"version"` - Kind string `json:"kind"` - } - if err := json.Unmarshal([]byte(value), &gvk); err != nil { - return nil, err - } - return ProvidingAPIPredicate(opregistry.APIKey{ - Group: gvk.Group, - Version: gvk.Version, - Kind: gvk.Kind, - }), nil -} - -func predicateForRequiredPackageProperty(value string) (OperatorPredicate, error) { - var pkg struct { - PackageName string `json:"packageName"` - VersionRange string `json:"versionRange"` - } - if err := json.Unmarshal([]byte(value), &pkg); err != nil { - return nil, err - } - ver, err := semver.ParseRange(pkg.VersionRange) - if err != nil { - return nil, err - } - return And(PkgPredicate(pkg.PackageName), VersionInRangePredicate(ver, pkg.VersionRange)), nil -} - -func predicateForRequiredLabelProperty(value string) (OperatorPredicate, error) { - var label struct { - Label string `json:"label"` - } - if err := json.Unmarshal([]byte(value), &label); err != nil { - return nil, err - } - return LabelPredicate(label.Label), nil -} diff --git a/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/resolver.go b/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/resolver.go index 38e779acd3..f7a5e6afeb 100644 --- a/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/resolver.go +++ b/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/resolver.go @@ -76,7 +76,7 @@ func (r *SatResolver) SolveOperators(namespaces []string, csvs []*v1alpha1.Clust var current *cache.Operator for _, csv := range csvs { if csv.Name == sub.Status.InstalledCSV { - op, err := cache.NewOperatorFromV1Alpha1CSV(csv) + op, err := newOperatorFromV1Alpha1CSV(csv) if err != nil { return nil, err } @@ -181,7 +181,7 @@ func (r *SatResolver) getSubscriptionInstallables(sub *v1alpha1.Subscription, cu Namespace: sub.Spec.CatalogSourceNamespace, } - var bundles []*cache.Operator + var entries []*cache.Operator { var nall, npkg, nch, ncsv int @@ -200,7 +200,7 @@ func (r *SatResolver) getSubscriptionInstallables(sub *v1alpha1.Subscription, cu cache.CountingPredicate(cache.ChannelPredicate(sub.Spec.Channel), &nch), cache.CountingPredicate(csvPredicate, &ncsv), )) - bundles = namespacedCache.Catalog(catalog).Find(cachePredicates...) + entries = namespacedCache.Catalog(catalog).Find(cachePredicates...) var si solver.Installable switch { @@ -220,36 +220,40 @@ func (r *SatResolver) getSubscriptionInstallables(sub *v1alpha1.Subscription, cu } } - // bundles in the default channel appear first, then lexicographically order by channel name - sort.SliceStable(bundles, func(i, j int) bool { + // entries in the default channel appear first, then lexicographically order by channel name + sort.SliceStable(entries, func(i, j int) bool { var idef bool - if isrc := bundles[i].SourceInfo; isrc != nil { + var ichan string + if isrc := entries[i].SourceInfo; isrc != nil { idef = isrc.DefaultChannel + ichan = isrc.Channel } var jdef bool - if jsrc := bundles[j].SourceInfo; jsrc != nil { + var jchan string + if jsrc := entries[j].SourceInfo; jsrc != nil { jdef = jsrc.DefaultChannel + jchan = jsrc.Channel } if idef == jdef { - return bundles[i].Bundle.ChannelName < bundles[j].Bundle.ChannelName + return ichan < jchan } return idef }) var sortedBundles []*cache.Operator lastChannel, lastIndex := "", 0 - for i := 0; i <= len(bundles); i++ { - if i != len(bundles) && bundles[i].Bundle.ChannelName == lastChannel { + for i := 0; i <= len(entries); i++ { + if i != len(entries) && entries[i].Channel() == lastChannel { continue } - channel, err := sortChannel(bundles[lastIndex:i]) + channel, err := sortChannel(entries[lastIndex:i]) if err != nil { return nil, err } sortedBundles = append(sortedBundles, channel...) - if i != len(bundles) { - lastChannel = bundles[i].Bundle.ChannelName + if i != len(entries) { + lastChannel = entries[i].Channel() lastIndex = i } } @@ -333,7 +337,7 @@ func (r *SatResolver) getBundleInstallables(preferredNamespace string, bundleSta visited[bundle] = &bundleInstallable - dependencyPredicates, err := bundle.DependencyPredicates() + dependencyPredicates, err := DependencyPredicates(bundle.Properties) if err != nil { errs = append(errs, err) continue @@ -470,7 +474,7 @@ func (r *SatResolver) newSnapshotForNamespace(namespace string, subs []*v1alpha1 var csvsMissingProperties []*v1alpha1.ClusterServiceVersion standaloneOperators := make([]*cache.Operator, 0) for _, csv := range csvs { - op, err := cache.NewOperatorFromV1Alpha1CSV(csv) + op, err := newOperatorFromV1Alpha1CSV(csv) if err != nil { return nil, err } @@ -728,3 +732,172 @@ func sortChannel(bundles []*cache.Operator) ([]*cache.Operator, error) { // TODO: do we care if the channel doesn't include every bundle in the input? return chains[0], nil } + +func DependencyPredicates(properties []*api.Property) ([]cache.OperatorPredicate, error) { + var predicates []cache.OperatorPredicate + for _, property := range properties { + predicate, err := predicateForProperty(property) + if err != nil { + return nil, err + } + if predicate == nil { + continue + } + predicates = append(predicates, predicate) + } + return predicates, nil +} + +func predicateForProperty(property *api.Property) (cache.OperatorPredicate, error) { + if property == nil { + return nil, nil + } + p, ok := predicates[property.Type] + if !ok { + return nil, nil + } + return p(property.Value) +} + +var predicates = map[string]func(string) (cache.OperatorPredicate, error){ + "olm.gvk.required": predicateForRequiredGVKProperty, + "olm.package.required": predicateForRequiredPackageProperty, + "olm.label.required": predicateForRequiredLabelProperty, +} + +func predicateForRequiredGVKProperty(value string) (cache.OperatorPredicate, error) { + var gvk struct { + Group string `json:"group"` + Version string `json:"version"` + Kind string `json:"kind"` + } + if err := json.Unmarshal([]byte(value), &gvk); err != nil { + return nil, err + } + return cache.ProvidingAPIPredicate(opregistry.APIKey{ + Group: gvk.Group, + Version: gvk.Version, + Kind: gvk.Kind, + }), nil +} + +func predicateForRequiredPackageProperty(value string) (cache.OperatorPredicate, error) { + var pkg struct { + PackageName string `json:"packageName"` + VersionRange string `json:"versionRange"` + } + if err := json.Unmarshal([]byte(value), &pkg); err != nil { + return nil, err + } + ver, err := semver.ParseRange(pkg.VersionRange) + if err != nil { + return nil, err + } + return cache.And(cache.PkgPredicate(pkg.PackageName), cache.VersionInRangePredicate(ver, pkg.VersionRange)), nil +} + +func predicateForRequiredLabelProperty(value string) (cache.OperatorPredicate, error) { + var label struct { + Label string `json:"label"` + } + if err := json.Unmarshal([]byte(value), &label); err != nil { + return nil, err + } + return cache.LabelPredicate(label.Label), nil +} + +func newOperatorFromV1Alpha1CSV(csv *v1alpha1.ClusterServiceVersion) (*cache.Operator, error) { + providedAPIs := cache.EmptyAPISet() + for _, crdDef := range csv.Spec.CustomResourceDefinitions.Owned { + parts := strings.SplitN(crdDef.Name, ".", 2) + if len(parts) < 2 { + return nil, fmt.Errorf("error parsing crd name: %s", crdDef.Name) + } + providedAPIs[opregistry.APIKey{Plural: parts[0], Group: parts[1], Version: crdDef.Version, Kind: crdDef.Kind}] = struct{}{} + } + for _, api := range csv.Spec.APIServiceDefinitions.Owned { + providedAPIs[opregistry.APIKey{Group: api.Group, Version: api.Version, Kind: api.Kind, Plural: api.Name}] = struct{}{} + } + + requiredAPIs := cache.EmptyAPISet() + for _, crdDef := range csv.Spec.CustomResourceDefinitions.Required { + parts := strings.SplitN(crdDef.Name, ".", 2) + if len(parts) < 2 { + return nil, fmt.Errorf("error parsing crd name: %s", crdDef.Name) + } + requiredAPIs[opregistry.APIKey{Plural: parts[0], Group: parts[1], Version: crdDef.Version, Kind: crdDef.Kind}] = struct{}{} + } + for _, api := range csv.Spec.APIServiceDefinitions.Required { + requiredAPIs[opregistry.APIKey{Group: api.Group, Version: api.Version, Kind: api.Kind, Plural: api.Name}] = struct{}{} + } + + properties, err := providedAPIsToProperties(providedAPIs) + if err != nil { + return nil, err + } + dependencies, err := requiredAPIsToProperties(requiredAPIs) + if err != nil { + return nil, err + } + properties = append(properties, dependencies...) + + return &cache.Operator{ + Name: csv.GetName(), + Version: &csv.Spec.Version.Version, + ProvidedAPIs: providedAPIs, + RequiredAPIs: requiredAPIs, + SourceInfo: &cache.ExistingOperator, + Properties: properties, + }, nil +} + +func providedAPIsToProperties(apis cache.APISet) (out []*api.Property, err error) { + out = make([]*api.Property, 0) + for a := range apis { + val, err := json.Marshal(opregistry.GVKProperty{ + Group: a.Group, + Version: a.Version, + Kind: a.Kind, + }) + if err != nil { + panic(err) + } + out = append(out, &api.Property{ + Type: opregistry.GVKType, + Value: string(val), + }) + } + if len(out) > 0 { + return + } + return nil, nil +} + +func requiredAPIsToProperties(apis cache.APISet) (out []*api.Property, err error) { + if len(apis) == 0 { + return + } + out = make([]*api.Property, 0) + for a := range apis { + val, err := json.Marshal(struct { + Group string `json:"group"` + Version string `json:"version"` + Kind string `json:"kind"` + }{ + Group: a.Group, + Version: a.Version, + Kind: a.Kind, + }) + if err != nil { + return nil, err + } + out = append(out, &api.Property{ + Type: "olm.gvk.required", + Value: string(val), + }) + } + if len(out) > 0 { + return + } + return nil, nil +} diff --git a/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/source_registry.go b/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/source_registry.go index 6c5c11998d..eaea2568f9 100644 --- a/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/source_registry.go +++ b/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/source_registry.go @@ -5,6 +5,7 @@ import ( "encoding/json" "fmt" + "github.com/blang/semver/v4" "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry" "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/cache" "github.com/operator-framework/operator-registry/pkg/api" @@ -58,7 +59,7 @@ func (s *registrySource) Snapshot(ctx context.Context) (*cache.Snapshot, error) defaultChannel = p.DefaultChannelName } } - o, err := cache.NewOperatorFromBundle(b, "", s.key, defaultChannel) + o, err := newOperatorFromBundle(b, "", s.key, defaultChannel) if err != nil { s.logger.Printf("failed to construct operator from bundle, continuing: %v", err) continue @@ -107,3 +108,132 @@ func EnsurePackageProperty(o *cache.Operator, name, version string) { Value: string(bytes), }) } + +func newOperatorFromBundle(bundle *api.Bundle, startingCSV string, sourceKey cache.SourceKey, defaultChannel string) (*cache.Operator, error) { + parsedVersion, err := semver.ParseTolerant(bundle.Version) + version := &parsedVersion + if err != nil { + version = nil + } + provided := cache.APISet{} + for _, gvk := range bundle.ProvidedApis { + provided[opregistry.APIKey{Plural: gvk.Plural, Group: gvk.Group, Kind: gvk.Kind, Version: gvk.Version}] = struct{}{} + } + required := cache.APISet{} + for _, gvk := range bundle.RequiredApis { + required[opregistry.APIKey{Plural: gvk.Plural, Group: gvk.Group, Kind: gvk.Kind, Version: gvk.Version}] = struct{}{} + } + sourceInfo := &cache.OperatorSourceInfo{ + Package: bundle.PackageName, + Channel: bundle.ChannelName, + StartingCSV: startingCSV, + Catalog: sourceKey, + } + sourceInfo.DefaultChannel = sourceInfo.Channel == defaultChannel + + // legacy support - if the api doesn't contain properties/dependencies, build them from required/provided apis + properties := bundle.Properties + if len(properties) == 0 { + properties, err = providedAPIsToProperties(provided) + if err != nil { + return nil, err + } + } + if len(bundle.Dependencies) > 0 { + ps, err := legacyDependenciesToProperties(bundle.Dependencies) + if err != nil { + return nil, fmt.Errorf("failed to translate legacy dependencies to properties: %w", err) + } + properties = append(properties, ps...) + } else { + ps, err := requiredAPIsToProperties(required) + if err != nil { + return nil, err + } + properties = append(properties, ps...) + } + + o := &cache.Operator{ + Name: bundle.CsvName, + Replaces: bundle.Replaces, + Version: version, + ProvidedAPIs: provided, + RequiredAPIs: required, + SourceInfo: sourceInfo, + Properties: properties, + Skips: bundle.Skips, + BundlePath: bundle.BundlePath, + } + + if r, err := semver.ParseRange(bundle.SkipRange); err == nil { + o.SkipRange = r + } + + if o.BundlePath == "" { + // This bundle's content is embedded within the Bundle + // proto message, not specified via image reference. + o.Bundle = bundle + } + + return o, nil +} + +func legacyDependenciesToProperties(dependencies []*api.Dependency) ([]*api.Property, error) { + var result []*api.Property + for _, dependency := range dependencies { + switch dependency.Type { + case "olm.gvk": + type gvk struct { + Group string `json:"group"` + Version string `json:"version"` + Kind string `json:"kind"` + } + var vfrom gvk + if err := json.Unmarshal([]byte(dependency.Value), &vfrom); err != nil { + return nil, fmt.Errorf("failed to unmarshal legacy 'olm.gvk' dependency: %w", err) + } + vto := gvk{ + Group: vfrom.Group, + Version: vfrom.Version, + Kind: vfrom.Kind, + } + vb, err := json.Marshal(&vto) + if err != nil { + return nil, fmt.Errorf("unexpected error marshaling generated 'olm.package.required' property: %w", err) + } + result = append(result, &api.Property{ + Type: "olm.gvk.required", + Value: string(vb), + }) + case "olm.package": + var vfrom struct { + PackageName string `json:"packageName"` + VersionRange string `json:"version"` + } + if err := json.Unmarshal([]byte(dependency.Value), &vfrom); err != nil { + return nil, fmt.Errorf("failed to unmarshal legacy 'olm.package' dependency: %w", err) + } + vto := struct { + PackageName string `json:"packageName"` + VersionRange string `json:"versionRange"` + }{ + PackageName: vfrom.PackageName, + VersionRange: vfrom.VersionRange, + } + vb, err := json.Marshal(&vto) + if err != nil { + return nil, fmt.Errorf("unexpected error marshaling generated 'olm.package.required' property: %w", err) + } + result = append(result, &api.Property{ + Type: "olm.package.required", + Value: string(vb), + }) + case "olm.label": + result = append(result, &api.Property{ + Type: "olm.label.required", + Value: dependency.Value, + }) + } + } + return result, nil +} diff --git a/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/step_resolver.go b/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/step_resolver.go index 7574dda57c..079b928065 100644 --- a/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/step_resolver.go +++ b/vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver/step_resolver.go @@ -137,57 +137,55 @@ func (r *OperatorStepResolver) ResolveSteps(namespace string) ([]*v1alpha1.Step, // add steps for any new bundle if op.Bundle != nil { - if op.Inline() { - bundleSteps, err := NewStepsFromBundle(op.Bundle, namespace, op.Replaces, op.SourceInfo.Catalog.Name, op.SourceInfo.Catalog.Namespace) - if err != nil { - return nil, nil, nil, fmt.Errorf("failed to turn bundle into steps: %s", err.Error()) - } - steps = append(steps, bundleSteps...) - } else { - lookup := v1alpha1.BundleLookup{ - Path: op.Bundle.GetBundlePath(), - Identifier: op.Name, - Replaces: op.Replaces, - CatalogSourceRef: &corev1.ObjectReference{ - Namespace: op.SourceInfo.Catalog.Namespace, - Name: op.SourceInfo.Catalog.Name, + bundleSteps, err := NewStepsFromBundle(op.Bundle, namespace, op.Replaces, op.SourceInfo.Catalog.Name, op.SourceInfo.Catalog.Namespace) + if err != nil { + return nil, nil, nil, fmt.Errorf("failed to turn bundle into steps: %s", err.Error()) + } + steps = append(steps, bundleSteps...) + } else { + lookup := v1alpha1.BundleLookup{ + Path: op.BundlePath, + Identifier: op.Name, + Replaces: op.Replaces, + CatalogSourceRef: &corev1.ObjectReference{ + Namespace: op.SourceInfo.Catalog.Namespace, + Name: op.SourceInfo.Catalog.Name, + }, + Conditions: []v1alpha1.BundleLookupCondition{ + { + Type: BundleLookupConditionPacked, + Status: corev1.ConditionTrue, + Reason: controllerbundle.NotUnpackedReason, + Message: controllerbundle.NotUnpackedMessage, }, - Conditions: []v1alpha1.BundleLookupCondition{ - { - Type: BundleLookupConditionPacked, - Status: corev1.ConditionTrue, - Reason: controllerbundle.NotUnpackedReason, - Message: controllerbundle.NotUnpackedMessage, - }, - { - Type: v1alpha1.BundleLookupPending, - Status: corev1.ConditionTrue, - Reason: controllerbundle.JobNotStartedReason, - Message: controllerbundle.JobNotStartedMessage, - }, + { + Type: v1alpha1.BundleLookupPending, + Status: corev1.ConditionTrue, + Reason: controllerbundle.JobNotStartedReason, + Message: controllerbundle.JobNotStartedMessage, }, - } - if anno, err := projection.PropertiesAnnotationFromPropertyList(op.Properties); err != nil { - return nil, nil, nil, fmt.Errorf("failed to serialize operator properties for %q: %w", op.Name, err) - } else { - lookup.Properties = anno - } - bundleLookups = append(bundleLookups, lookup) + }, } + if anno, err := projection.PropertiesAnnotationFromPropertyList(op.Properties); err != nil { + return nil, nil, nil, fmt.Errorf("failed to serialize operator properties for %q: %w", op.Name, err) + } else { + lookup.Properties = anno + } + bundleLookups = append(bundleLookups, lookup) + } - if len(existingSubscriptions) == 0 { - // explicitly track the resolved CSV as the starting CSV on the resolved subscriptions - op.SourceInfo.StartingCSV = op.Name - subStep, err := NewSubscriptionStepResource(namespace, *op.SourceInfo) - if err != nil { - return nil, nil, nil, err - } - steps = append(steps, &v1alpha1.Step{ - Resolving: name, - Resource: subStep, - Status: v1alpha1.StepStatusUnknown, - }) + if len(existingSubscriptions) == 0 { + // explicitly track the resolved CSV as the starting CSV on the resolved subscriptions + op.SourceInfo.StartingCSV = op.Name + subStep, err := NewSubscriptionStepResource(namespace, *op.SourceInfo) + if err != nil { + return nil, nil, nil, err } + steps = append(steps, &v1alpha1.Step{ + Resolving: name, + Resource: subStep, + Status: v1alpha1.StepStatusUnknown, + }) } // add steps for subscriptions for bundles that were added through resolution From dcbe7701ff5c417c76650dcafa9c773c3ad178d2 Mon Sep 17 00:00:00 2001 From: Laxmikant Bhaskar Pandhare <47066536+laxmikantbpandhare@users.noreply.github.com> Date: Tue, 7 Sep 2021 19:03:20 -0700 Subject: [PATCH 07/15] modified the controller-runtime and controller-tools versions (#154) * modified the controller-runtime and controller-tools versions * ran vendor command and added files * ran make manifests Upstream-repository: api Upstream-commit: a80624eab36b2005fa5d84c9b539bb4817e44daa --- go.mod | 16 +- go.sum | 194 ++++- .../operators.coreos.com_catalogsources.yaml | 2 +- ...ors.coreos.com_clusterserviceversions.yaml | 2 +- .../operators.coreos.com_installplans.yaml | 2 +- ...erators.coreos.com_operatorconditions.yaml | 2 +- .../operators.coreos.com_operatorgroups.yaml | 2 +- .../crds/operators.coreos.com_operators.yaml | 2 +- .../operators.coreos.com_subscriptions.yaml | 2 +- staging/api/crds/zz_defs.go | 14 +- staging/api/go.mod | 14 +- staging/api/go.sum | 231 ++++- .../go/compute/metadata/metadata.go | 3 +- .../mitchellh/mapstructure/.travis.yml | 8 - .../mitchellh/mapstructure/CHANGELOG.md | 52 ++ .../mitchellh/mapstructure/decode_hooks.go | 71 +- .../github.com/mitchellh/mapstructure/go.mod | 2 + .../mitchellh/mapstructure/mapstructure.go | 479 +++++++++-- vendor/github.com/onsi/gomega/types/types.go | 69 +- .../operators.coreos.com_catalogsources.yaml | 2 +- ...ors.coreos.com_clusterserviceversions.yaml | 2 +- .../operators.coreos.com_installplans.yaml | 2 +- ...erators.coreos.com_operatorconditions.yaml | 2 +- .../operators.coreos.com_operatorgroups.yaml | 2 +- .../crds/operators.coreos.com_operators.yaml | 2 +- .../operators.coreos.com_subscriptions.yaml | 2 +- .../operator-framework/api/crds/zz_defs.go | 14 +- vendor/github.com/spf13/cobra/.travis.yml | 28 - vendor/github.com/spf13/cobra/README.md | 663 +-------------- .../spf13/cobra/bash_completions.go | 6 +- .../spf13/cobra/bash_completions.md | 2 + .../spf13/cobra/bash_completionsV2.go | 302 +++++++ vendor/github.com/spf13/cobra/command.go | 30 +- .../{custom_completions.go => completions.go} | 266 +++++- .../spf13/cobra/fish_completions.go | 178 ++-- vendor/github.com/spf13/cobra/go.mod | 5 +- vendor/github.com/spf13/cobra/go.sum | 461 ++++++++-- .../spf13/cobra/powershell_completions.go | 32 +- .../spf13/cobra/shell_completions.md | 69 +- vendor/github.com/spf13/cobra/user_guide.md | 637 ++++++++++++++ .../github.com/spf13/cobra/zsh_completions.go | 50 +- vendor/go.opencensus.io/.travis.yml | 17 - vendor/go.opencensus.io/Makefile | 27 +- vendor/go.opencensus.io/go.mod | 15 +- vendor/go.opencensus.io/go.sum | 82 +- vendor/go.opencensus.io/trace/basetypes.go | 10 + vendor/go.opencensus.io/trace/lrumap.go | 2 +- vendor/go.opencensus.io/trace/spanstore.go | 14 +- vendor/go.opencensus.io/trace/trace.go | 187 ++-- vendor/go.opencensus.io/trace/trace_api.go | 265 ++++++ vendor/go.uber.org/zap/CHANGELOG.md | 44 + vendor/go.uber.org/zap/buffer/buffer.go | 18 + vendor/go.uber.org/zap/go.mod | 2 + vendor/go.uber.org/zap/go.sum | 26 +- vendor/go.uber.org/zap/logger.go | 9 +- vendor/go.uber.org/zap/options.go | 8 + vendor/go.uber.org/zap/sugar.go | 4 +- .../zap/zapcore/buffered_write_syncer.go | 188 +++++ vendor/go.uber.org/zap/zapcore/clock.go | 50 ++ vendor/go.uber.org/zap/zapcore/entry.go | 10 +- vendor/go.uber.org/zap/zapcore/error.go | 2 +- vendor/go.uber.org/zap/zapcore/sampler.go | 14 +- vendor/golang.org/x/oauth2/README.md | 10 +- vendor/golang.org/x/oauth2/go.mod | 7 +- vendor/golang.org/x/oauth2/go.sum | 359 +++++++- .../x/oauth2/google/appengine_gen1.go | 1 + .../x/oauth2/google/appengine_gen2_flex.go | 1 + vendor/golang.org/x/oauth2/google/default.go | 14 +- vendor/golang.org/x/oauth2/google/doc.go | 43 +- vendor/golang.org/x/oauth2/google/google.go | 25 + .../google/internal/externalaccount/aws.go | 466 ++++++++++ .../externalaccount/basecredentials.go | 163 ++++ .../internal/externalaccount/clientauth.go | 41 + .../google/internal/externalaccount/err.go | 18 + .../externalaccount/filecredsource.go | 57 ++ .../internal/externalaccount/impersonate.go | 83 ++ .../internal/externalaccount/sts_exchange.go | 104 +++ .../internal/externalaccount/urlcredsource.go | 74 ++ .../x/oauth2/internal/client_appengine.go | 1 + vendor/golang.org/x/sys/unix/ifreq_linux.go | 109 +++ vendor/golang.org/x/sys/unix/ioctl_linux.go | 78 +- vendor/golang.org/x/sys/unix/mkerrors.sh | 2 - vendor/golang.org/x/sys/unix/syscall_linux.go | 17 +- .../x/sys/unix/syscall_linux_386.go | 4 +- .../x/sys/unix/syscall_linux_arm.go | 4 +- .../x/sys/unix/syscall_linux_arm64.go | 4 +- .../x/sys/unix/syscall_linux_mipsx.go | 4 +- .../x/sys/unix/syscall_linux_ppc.go | 4 +- .../golang.org/x/sys/unix/syscall_solaris.go | 240 ++++++ vendor/golang.org/x/sys/unix/syscall_unix.go | 4 + vendor/golang.org/x/sys/unix/zerrors_linux.go | 34 +- .../x/sys/unix/zerrors_linux_386.go | 1 + .../x/sys/unix/zerrors_linux_amd64.go | 1 + .../x/sys/unix/zerrors_linux_arm.go | 1 + .../x/sys/unix/zerrors_linux_arm64.go | 1 + .../x/sys/unix/zerrors_linux_mips.go | 1 + .../x/sys/unix/zerrors_linux_mips64.go | 1 + .../x/sys/unix/zerrors_linux_mips64le.go | 1 + .../x/sys/unix/zerrors_linux_mipsle.go | 1 + .../x/sys/unix/zerrors_linux_ppc.go | 1 + .../x/sys/unix/zerrors_linux_ppc64.go | 1 + .../x/sys/unix/zerrors_linux_ppc64le.go | 1 + .../x/sys/unix/zerrors_linux_riscv64.go | 1 + .../x/sys/unix/zerrors_linux_s390x.go | 1 + .../x/sys/unix/zerrors_linux_sparc64.go | 1 + .../x/sys/unix/zerrors_openbsd_386.go | 3 + .../x/sys/unix/zerrors_openbsd_arm.go | 3 + .../golang.org/x/sys/unix/zsyscall_linux.go | 12 +- .../x/sys/unix/zsyscall_solaris_amd64.go | 72 +- .../x/sys/unix/zsysnum_linux_386.go | 3 + .../x/sys/unix/zsysnum_linux_amd64.go | 711 ++++++++-------- .../x/sys/unix/zsysnum_linux_arm.go | 3 + .../x/sys/unix/zsysnum_linux_arm64.go | 601 ++++++------- .../x/sys/unix/zsysnum_linux_mips.go | 3 + .../x/sys/unix/zsysnum_linux_mips64.go | 697 +++++++-------- .../x/sys/unix/zsysnum_linux_mips64le.go | 697 +++++++-------- .../x/sys/unix/zsysnum_linux_mipsle.go | 3 + .../x/sys/unix/zsysnum_linux_ppc.go | 3 + .../x/sys/unix/zsysnum_linux_ppc64.go | 795 +++++++++--------- .../x/sys/unix/zsysnum_linux_ppc64le.go | 795 +++++++++--------- .../x/sys/unix/zsysnum_linux_riscv64.go | 599 ++++++------- .../x/sys/unix/zsysnum_linux_s390x.go | 725 ++++++++-------- .../x/sys/unix/zsysnum_linux_sparc64.go | 753 ++++++++--------- vendor/golang.org/x/sys/unix/ztypes_linux.go | 18 +- .../golang.org/x/sys/unix/ztypes_linux_386.go | 5 + .../x/sys/unix/ztypes_linux_amd64.go | 5 + .../golang.org/x/sys/unix/ztypes_linux_arm.go | 5 + .../x/sys/unix/ztypes_linux_arm64.go | 5 + .../x/sys/unix/ztypes_linux_mips.go | 5 + .../x/sys/unix/ztypes_linux_mips64.go | 5 + .../x/sys/unix/ztypes_linux_mips64le.go | 5 + .../x/sys/unix/ztypes_linux_mipsle.go | 5 + .../golang.org/x/sys/unix/ztypes_linux_ppc.go | 5 + .../x/sys/unix/ztypes_linux_ppc64.go | 5 + .../x/sys/unix/ztypes_linux_ppc64le.go | 5 + .../x/sys/unix/ztypes_linux_riscv64.go | 5 + .../x/sys/unix/ztypes_linux_s390x.go | 5 + .../x/sys/unix/ztypes_linux_sparc64.go | 5 + .../x/sys/unix/ztypes_solaris_amd64.go | 40 + .../golang.org/x/sys/windows/types_windows.go | 2 +- .../pkg/endpoints/metrics/metrics.go | 17 +- .../pkg/server/deprecated_insecure_serving.go | 3 + .../apiserver/pkg/server/secure_serving.go | 14 +- .../apiserver/pkg/storage/etcd3/store.go | 30 + vendor/k8s.io/utils/pointer/pointer.go | 18 + vendor/modules.txt | 39 +- vendor/sigs.k8s.io/controller-runtime/FAQ.md | 2 +- .../sigs.k8s.io/controller-runtime/Makefile | 2 + .../controller-runtime/OWNERS_ALIASES | 3 +- .../sigs.k8s.io/controller-runtime/README.md | 1 + .../controller-runtime/TMP-LOGGING.md | 2 +- vendor/sigs.k8s.io/controller-runtime/doc.go | 2 +- vendor/sigs.k8s.io/controller-runtime/go.mod | 22 +- vendor/sigs.k8s.io/controller-runtime/go.sum | 220 +++-- .../controller-runtime/pkg/builder/doc.go | 2 +- .../controller-runtime/pkg/cache/cache.go | 42 +- .../pkg/cache/internal/cache_reader.go | 34 +- .../pkg/cache/internal/deleg_map.go | 19 +- .../pkg/cache/internal/disabledeepcopy.go | 35 + .../pkg/cache/internal/informers_map.go | 62 +- .../pkg/client/apiutil/apimachinery.go | 29 +- .../pkg/client/fake/client.go | 22 + .../pkg/client/namespaced_client.go | 63 +- .../pkg/controller/controller.go | 4 + .../controllerutil/controllerutil.go | 2 +- .../pkg/internal/controller/controller.go | 17 +- .../pkg/internal/recorder/recorder.go | 13 +- .../pkg/leaderelection/leader_election.go | 17 +- .../controller-runtime/pkg/log/deleg.go | 2 +- .../pkg/manager/internal.go | 2 +- .../controller-runtime/pkg/manager/manager.go | 4 +- .../pkg/metrics/client_go_adapter.go | 29 +- .../pkg/webhook/conversion/conversion.go | 2 +- .../controller-runtime/pkg/webhook/server.go | 37 + .../controller-tools/pkg/loader/loader.go | 2 +- 175 files changed, 9493 insertions(+), 4832 deletions(-) delete mode 100644 vendor/github.com/mitchellh/mapstructure/.travis.yml delete mode 100644 vendor/github.com/spf13/cobra/.travis.yml create mode 100644 vendor/github.com/spf13/cobra/bash_completionsV2.go rename vendor/github.com/spf13/cobra/{custom_completions.go => completions.go} (70%) create mode 100644 vendor/github.com/spf13/cobra/user_guide.md delete mode 100644 vendor/go.opencensus.io/.travis.yml create mode 100644 vendor/go.opencensus.io/trace/trace_api.go create mode 100644 vendor/go.uber.org/zap/zapcore/buffered_write_syncer.go create mode 100644 vendor/go.uber.org/zap/zapcore/clock.go create mode 100644 vendor/golang.org/x/oauth2/google/internal/externalaccount/aws.go create mode 100644 vendor/golang.org/x/oauth2/google/internal/externalaccount/basecredentials.go create mode 100644 vendor/golang.org/x/oauth2/google/internal/externalaccount/clientauth.go create mode 100644 vendor/golang.org/x/oauth2/google/internal/externalaccount/err.go create mode 100644 vendor/golang.org/x/oauth2/google/internal/externalaccount/filecredsource.go create mode 100644 vendor/golang.org/x/oauth2/google/internal/externalaccount/impersonate.go create mode 100644 vendor/golang.org/x/oauth2/google/internal/externalaccount/sts_exchange.go create mode 100644 vendor/golang.org/x/oauth2/google/internal/externalaccount/urlcredsource.go create mode 100644 vendor/golang.org/x/sys/unix/ifreq_linux.go create mode 100644 vendor/sigs.k8s.io/controller-runtime/pkg/cache/internal/disabledeepcopy.go diff --git a/go.mod b/go.mod index df5374f961..e5f63646ef 100644 --- a/go.mod +++ b/go.mod @@ -16,20 +16,20 @@ require ( github.com/operator-framework/operator-lifecycle-manager v0.0.0-00010101000000-000000000000 github.com/operator-framework/operator-registry v1.17.5 github.com/sirupsen/logrus v1.8.1 - github.com/spf13/cobra v1.1.3 + github.com/spf13/cobra v1.2.1 github.com/stretchr/testify v1.7.0 google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0 google.golang.org/protobuf v1.27.1 gopkg.in/yaml.v2 v2.4.0 helm.sh/helm/v3 v3.6.2 - k8s.io/api v0.22.0 - k8s.io/apimachinery v0.22.0 - k8s.io/client-go v0.22.0 - k8s.io/code-generator v0.22.0 + k8s.io/api v0.22.1 + k8s.io/apimachinery v0.22.1 + k8s.io/client-go v0.22.1 + k8s.io/code-generator v0.22.1 k8s.io/kube-openapi v0.0.0-20210527164424-3c818078ee3d - k8s.io/utils v0.0.0-20210707171843-4b05e18ac7d9 - sigs.k8s.io/controller-runtime v0.9.2 - sigs.k8s.io/controller-tools v0.6.1 + k8s.io/utils v0.0.0-20210802155522-efc7438f0176 + sigs.k8s.io/controller-runtime v0.10.0 + sigs.k8s.io/controller-tools v0.6.2 ) replace ( diff --git a/go.sum b/go.sum index e472ee3b3b..e88eefbad8 100644 --- a/go.sum +++ b/go.sum @@ -10,20 +10,35 @@ cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.54.0 h1:3ithwDMr7/3vpAMXiH+ZQnYbuIsh+OPhUPMFC9enmn0= cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= +cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= +cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= +cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= +cloud.google.com/go v0.81.0 h1:at8Tk2zUz63cLPR0JPWm5vp77pEZmzxEQBEfRKn1VV8= +cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/Azure/azure-sdk-for-go v16.2.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= @@ -128,8 +143,9 @@ github.com/aws/aws-sdk-go v1.15.11/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZo github.com/aws/aws-sdk-go v1.17.7/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= -github.com/benbjohnson/clock v1.0.3 h1:vkLuvpK4fmtSCuo60+yC63p7y0BmQ8gm5ZXGuBCJyXg= github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= +github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= +github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20160804104726-4c0e84591b9a/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= @@ -139,6 +155,7 @@ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kB github.com/bitly/go-hostpool v0.0.0-20171023180738-a3a6125de932/go.mod h1:NOuUCSz6Q9T7+igc/hlvDOUdtWKryOrtFyIVABv/p7k= github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA= github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= +github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= @@ -171,6 +188,7 @@ github.com/cilium/ebpf v0.0.0-20200110133405-4032b1d8aae3/go.mod h1:MA5e5Lr8slmE github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= github.com/cockroachdb/cockroach-go v0.0.0-20181001143604-e0a95dfd547c/go.mod h1:XGLbWH/ujMcbPbhZq52Nv6UrCghb1yGn//133kEsvDk= @@ -294,6 +312,7 @@ github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4s github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= @@ -430,7 +449,6 @@ github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg78 github.com/gobuffalo/envy v1.7.0/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= github.com/gobuffalo/envy v1.7.1 h1:OQl5ys5MBea7OGCdvPbBJWRgnhC/fGona6QKfvFeau8= github.com/gobuffalo/envy v1.7.1/go.mod h1:FurDp9+EDPE4aIUS3ZLyD+7/9fpx7YRt/ukY6jIHf0w= -github.com/gobuffalo/flect v0.2.2/go.mod h1:vmkQwuZYhN5Pc4ljYQZzP+1sq+NEkK+lh20jmEmX3jc= github.com/gobuffalo/flect v0.2.3 h1:f/ZukRnSNA/DUpSNDadko7Qc0PhGvsew35p/2tu+CRY= github.com/gobuffalo/flect v0.2.3/go.mod h1:vmkQwuZYhN5Pc4ljYQZzP+1sq+NEkK+lh20jmEmX3jc= github.com/gobuffalo/here v0.6.0/go.mod h1:wAG085dHOYqUpf+Ap+WOdrPTp5IYcDAs/x7PLa8Y5fM= @@ -476,6 +494,9 @@ github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfb github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -484,6 +505,7 @@ github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5y github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= @@ -508,8 +530,11 @@ github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5a github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= @@ -520,11 +545,19 @@ github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/ github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g= github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= @@ -607,6 +640,7 @@ github.com/huandu/xstrings v1.3.1 h1:4jgBlKK6tLKFvO8u5pmYjG91cqytmDCDvGh7ECVFfFs github.com/huandu/xstrings v1.3.1/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= @@ -700,6 +734,7 @@ github.com/lithammer/dedent v1.1.0/go.mod h1:jrXYCQtgg0nJiN+StA2KgR7w6CiQNv9Fd/Z github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= @@ -760,8 +795,9 @@ github.com/mitchellh/hashstructure/v2 v2.0.2 h1:vGKWl0YJqUNxE8d+h8f6NJLcCJrgbhC4 github.com/mitchellh/hashstructure/v2 v2.0.2/go.mod h1:MG3aRVU/N29oo/V/IhBX8GR/zz4kQkprJgF2EVszyDE= github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.4.1 h1:CpVNEelQCZBooIPDn+AR3NpivK/TIKU8bDxdASFVQag= +github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/osext v0.0.0-20151018003038-5e2d6d41470f/go.mod h1:OkQIRizQZAeMln+1tSwduZz7+Af5oFlKirV/MSYes2A= github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/mitchellh/reflectwalk v1.0.1 h1:FVzMWA5RllMAKIdUSC8mdWo3XtwoecrH79BY70sEEpE= @@ -826,8 +862,10 @@ github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1Cpa github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.11.0/go.mod h1:azGKhqFUon9Vuj0YmTfLSmx0FUwqXYSTl5re8lQLTUg= -github.com/onsi/gomega v1.13.0 h1:7lLHu94wT9Ij0o6EWWclhu0aOh32VxhkwEJvzuWPeak= github.com/onsi/gomega v1.13.0/go.mod h1:lRk9szgn8TxENtWd0Tp4c3wjlRfMTMH27I+3Je41yGY= +github.com/onsi/gomega v1.14.0/go.mod h1:cIuvLEne0aoVhAgh/O6ac0Op8WWw9H6eYCriF+tEHG0= +github.com/onsi/gomega v1.15.0 h1:WjP/FQ/sk43MRmnEcT+MlDw2TFvkrXlprrPST/IudjU= +github.com/onsi/gomega v1.15.0/go.mod h1:cIuvLEne0aoVhAgh/O6ac0Op8WWw9H6eYCriF+tEHG0= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/go-digest v0.0.0-20170106003457-a6d0ee40d420/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= @@ -871,6 +909,7 @@ github.com/pbnjay/strptime v0.0.0-20140226051138-5c05b0d668c9/go.mod h1:6Hr+C/ol github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrapLU/GW4pbc= +github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= github.com/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= @@ -987,9 +1026,11 @@ github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3 github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/cobra v1.1.1/go.mod h1:WnodtKOvamDL/PwE2M4iKs8aMDBZ5Q5klgD3qfVJQMI= -github.com/spf13/cobra v1.1.3 h1:xghbfqPkxzxP3C/f3n5DdpAbdKLj4ZE4BWQI362l53M= github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= +github.com/spf13/cobra v1.2.1 h1:+KmjbUw1hriSNMF55oPrkZcb27aECyrj8V2ytv7kWDw= +github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.1-0.20171106142849-4c012f6dcd95/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= @@ -999,6 +1040,7 @@ github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= +github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= github.com/spiffe/go-spiffe/v2 v2.0.0-beta.5 h1:FKeGzmMtP079mo/7jH3UFOnBUO30j/tmsKSiPX6GcmM= github.com/spiffe/go-spiffe/v2 v2.0.0-beta.5/go.mod h1:TEfgrEcyFhuSuvqohJt6IxENUNeHfndWCCV1EX7UaVk= github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= @@ -1048,7 +1090,9 @@ github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca h1:1CFlNzQhALwjS9mBAUkycX616GzgsuYUOCHA5+HSlXI= github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43/go.mod h1:aX5oPXxHm3bOH+xeAttToC8pqch2ScQN/JoXYupl6xs= @@ -1096,8 +1140,11 @@ go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.3 h1:8sGtKOrtQqkN1bp2AtX+misvLIlOmsEsNd+9NIcPEm8= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M= +go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opentelemetry.io/contrib v0.20.0 h1:ubFQUn0VCZ0gPwIoJfBJVpeBlyRMxu8Mm/huKWYd9p0= go.opentelemetry.io/contrib v0.20.0/go.mod h1:G/EtFaa6qaN7+LxqfIAT3GiZa7Wv5DTBUzl5H4LY0Kc= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.20.0 h1:sO4WKdPAudZGKPcpZT4MJn6JaDmpyLrMPDGGyA1SttE= @@ -1138,8 +1185,9 @@ go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9i go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= -go.uber.org/zap v1.17.0 h1:MTjgFu6ZLKvY6Pvaqk97GlxNBuMpV4Hy/3P6tRGlI2U= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= +go.uber.org/zap v1.19.0 h1:mZQZefskPPCMIBCSEH0v2/iUqqLrYtaeqwD6FUGUnFE= +go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -1201,6 +1249,8 @@ golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzB golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.1-0.20200828183125-ce943fd02449/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1240,12 +1290,20 @@ golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210224082022-3d97a244fca7/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= @@ -1262,14 +1320,23 @@ golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4Iltr golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d h1:TzXSXBo42m9gQenoE3b9BGiEpg5IG2JkU5FkPIawgtw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602 h1:0Ja1LBD+yisY6RWM/BH7TJVXWsSjs2VwBSmvSX4HdBc= +golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= @@ -1329,20 +1396,30 @@ golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201112073958-5cba982894dd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1353,8 +1430,9 @@ golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210616094352-59db8d763f22 h1:RqytpXGR1iVNX7psjB3ff8y7sNFinVFvkx1c8SjBkio= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210817190340-bfb29a6856f2 h1:c8PlLMqBbOHoqtjteWm5/kbe6rNY2pbRfbIMVnepueo= +golang.org/x/sys v0.0.0-20210817190340-bfb29a6856f2/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d h1:SZxvLBoTP5yHO3Frd4z4vrF+DBX9vMVanchswa69toE= @@ -1424,16 +1502,32 @@ golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapK golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= +golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.3 h1:L69ShwSZEyCsLKoAxDKeMvLDZkumEe8gXUZAjab0tX8= golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.5 h1:ouewzE6p+/VEB31YYnTbEJdi8pFqKp4P4n85vwo3DHA= +golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1453,7 +1547,19 @@ google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsb google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= +google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= +google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= +google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= +google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= +google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= +google.golang.org/api v0.44.0/go.mod h1:EBOGZqzyhtvMDoxwS97ctnh0zUmYY6CxqXsc1AvkYD8= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -1461,6 +1567,7 @@ google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/cloud v0.0.0-20151119220103-975617b05ea8/go.mod h1:0H1ncTHf11KCFhTc/+EFRbzSCOZx+VUbRMk55Yv5MYk= @@ -1485,13 +1592,33 @@ google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvx google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200806141610-86f49bd18e98/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201110150050-8816d57aaa9a/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= google.golang.org/genproto v0.0.0-20210518161634-ec7691c0a37d/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c h1:wtujag7C+4D6KMoulW9YauvK2lgdvCMS260jsqqBXr0= google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= @@ -1510,10 +1637,15 @@ google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQ google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= +google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= @@ -1560,6 +1692,7 @@ gopkg.in/gorp.v1 v1.7.2/go.mod h1:Wo3h+DBQZIxATwftsglhdD/62zRFPhGhTiu5jUJmCaw= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8= gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= gopkg.in/op/go-logging.v1 v1.0.0-20160211212156-b2cb9fa56473 h1:6D+BvnJ/j6e222UW8s2qTSe3wGBtvo0MbVQG/c5k8RE= @@ -1604,31 +1737,40 @@ honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= k8s.io/api v0.18.0/go.mod h1:q2HRQkfDzHMBZL9l/y9rH63PkQl4vae0xRT+8prbrK8= k8s.io/api v0.21.0-rc.0/go.mod h1:Dkc/ZauWJrgZhjOjeBgW89xZQiTBJA2RaBKYHXPsi2Y= k8s.io/api v0.21.0/go.mod h1:+YbrhBBGgsxbF6o6Kj4KJPJnBmAKuXDeS3E18bgHNVU= k8s.io/api v0.21.1/go.mod h1:FstGROTmsSHBarKc8bylzXih8BLNYTiS3TZcsoEDg2s= k8s.io/api v0.21.2/go.mod h1:Lv6UGJZ1rlMI1qusN8ruAp9PUBFyBwpEHAdG24vIsiU= -k8s.io/api v0.22.0 h1:elCpMZ9UE8dLdYxr55E06TmSeji9I3KH494qH70/y+c= +k8s.io/api v0.21.3/go.mod h1:hUgeYHUbBp23Ue4qdX9tR8/ANi/g3ehylAqDn9NWVOg= k8s.io/api v0.22.0/go.mod h1:0AoXXqst47OI/L0oGKq9DG61dvGRPXs7X4/B7KyjBCU= +k8s.io/api v0.22.1 h1:ISu3tD/jRhYfSW8jI/Q1e+lRxkR7w9UwQEZ7FgslrwY= +k8s.io/api v0.22.1/go.mod h1:bh13rkTp3F1XEaLGykbyRD2QaTTzPm0e/BMd8ptFONY= k8s.io/apiextensions-apiserver v0.21.0/go.mod h1:gsQGNtGkc/YoDG9loKI0V+oLZM4ljRPjc/sql5tmvzc= k8s.io/apiextensions-apiserver v0.21.1/go.mod h1:KESQFCGjqVcVsZ9g0xX5bacMjyX5emuWcS2arzdEouA= k8s.io/apiextensions-apiserver v0.21.2/go.mod h1:+Axoz5/l3AYpGLlhJDfcVQzCerVYq3K3CvDMvw6X1RA= -k8s.io/apiextensions-apiserver v0.22.0 h1:QTuZIQggaE7N8FTjur+1zxLmEPziphK7nNm8t+VNO3g= +k8s.io/apiextensions-apiserver v0.21.3/go.mod h1:kl6dap3Gd45+21Jnh6utCx8Z2xxLm8LGDkprcd+KbsE= k8s.io/apiextensions-apiserver v0.22.0/go.mod h1:+9w/QQC/lwH2qTbpqndXXjwBgidlSmytvIUww16UACE= +k8s.io/apiextensions-apiserver v0.22.1 h1:YSJYzlFNFSfUle+yeEXX0lSQyLEoxoPJySRupepb0gE= +k8s.io/apiextensions-apiserver v0.22.1/go.mod h1:HeGmorjtRmRLE+Q8dJu6AYRoZccvCMsghwS8XTUYb2c= k8s.io/apimachinery v0.18.0/go.mod h1:9SnR/e11v5IbyPCGbvJViimtJ0SwHG4nfZFjU77ftcA= k8s.io/apimachinery v0.20.2/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= k8s.io/apimachinery v0.21.0-rc.0/go.mod h1:jbreFvJo3ov9rj7eWT7+sYiRx+qZuCYXwWT1bcDswPY= k8s.io/apimachinery v0.21.0/go.mod h1:jbreFvJo3ov9rj7eWT7+sYiRx+qZuCYXwWT1bcDswPY= k8s.io/apimachinery v0.21.1/go.mod h1:jbreFvJo3ov9rj7eWT7+sYiRx+qZuCYXwWT1bcDswPY= k8s.io/apimachinery v0.21.2/go.mod h1:CdTY8fU/BlvAbJ2z/8kBwimGki5Zp8/fbVuLY8gJumM= -k8s.io/apimachinery v0.22.0 h1:CqH/BdNAzZl+sr3tc0D3VsK3u6ARVSo3GWyLmfIjbP0= +k8s.io/apimachinery v0.21.3/go.mod h1:H/IM+5vH9kZRNJ4l3x/fXP/5bOPJaVP/guptnZPeCFI= k8s.io/apimachinery v0.22.0/go.mod h1:O3oNtNadZdeOMxHFVxOreoznohCpy0z6mocxbZr7oJ0= +k8s.io/apimachinery v0.22.1 h1:DTARnyzmdHMz7bFWFDDm22AM4pLWTQECMpRTFu2d2OM= +k8s.io/apimachinery v0.22.1/go.mod h1:O3oNtNadZdeOMxHFVxOreoznohCpy0z6mocxbZr7oJ0= k8s.io/apiserver v0.21.0/go.mod h1:w2YSn4/WIwYuxG5zJmcqtRdtqgW/J2JRgFAqps3bBpg= k8s.io/apiserver v0.21.1/go.mod h1:nLLYZvMWn35glJ4/FZRhzLG/3MPxAaZTgV4FJZdr+tY= k8s.io/apiserver v0.21.2/go.mod h1:lN4yBoGyiNT7SC1dmNk0ue6a5Wi6O3SWOIw91TsucQw= -k8s.io/apiserver v0.22.0 h1:KZh2asnRBjawLLfPOi6qiD+A2jaNt31HCnZG6AX3Qcs= +k8s.io/apiserver v0.21.3/go.mod h1:eDPWlZG6/cCCMj/JBcEpDoK+I+6i3r9GsChYBHSbAzU= k8s.io/apiserver v0.22.0/go.mod h1:04kaIEzIQrTGJ5syLppQWvpkLJXQtJECHmae+ZGc/nc= +k8s.io/apiserver v0.22.1 h1:Ul9Iv8OMB2s45h2tl5XWPpAZo1VPIJ/6N+MESeed7L8= +k8s.io/apiserver v0.22.1/go.mod h1:2mcM6dzSt+XndzVQJX21Gx0/Klo7Aen7i0Ai6tIa400= k8s.io/cli-runtime v0.21.0/go.mod h1:XoaHP93mGPF37MkLbjGVYqg3S1MnsFdKtiA/RZzzxOo= k8s.io/cli-runtime v0.22.0 h1:xM0UJ91iPKvPeooS/LS4U3sPVRAeUrUslJ0sUtE7a7Q= k8s.io/cli-runtime v0.22.0/go.mod h1:An6zELQ7udUI0GaXvkuMqyopPA14dIgNqpH8cZu1vig= @@ -1636,20 +1778,26 @@ k8s.io/client-go v0.18.0/go.mod h1:uQSYDYs4WhVZ9i6AIoEZuwUggLVEF64HOD37boKAtF8= k8s.io/client-go v0.21.0/go.mod h1:nNBytTF9qPFDEhoqgEPaarobC8QPae13bElIVHzIglA= k8s.io/client-go v0.21.1/go.mod h1:/kEw4RgW+3xnBGzvp9IWxKSNA+lXn3A7AuH3gdOAzLs= k8s.io/client-go v0.21.2/go.mod h1:HdJ9iknWpbl3vMGtib6T2PyI/VYxiZfq936WNVHBRrA= -k8s.io/client-go v0.22.0 h1:sD6o9O6tCwUKCENw8v+HFsuAbq2jCu8cWC61/ydwA50= +k8s.io/client-go v0.21.3/go.mod h1:+VPhCgTsaFmGILxR/7E1N0S+ryO010QBeNCv5JwRGYU= k8s.io/client-go v0.22.0/go.mod h1:GUjIuXR5PiEv/RVK5OODUsm6eZk7wtSWZSaSJbpFdGg= +k8s.io/client-go v0.22.1 h1:jW0ZSHi8wW260FvcXHkIa0NLxFBQszTlhiAVsU5mopw= +k8s.io/client-go v0.22.1/go.mod h1:BquC5A4UOo4qVDUtoc04/+Nxp1MeHcVc1HJm1KmG8kk= k8s.io/code-generator v0.18.0/go.mod h1:+UHX5rSbxmR8kzS+FAv7um6dtYrZokQvjHpDSYRVkTc= k8s.io/code-generator v0.21.0-rc.0/go.mod h1:hUlps5+9QaTrKx+jiM4rmq7YmH8wPOIko64uZCHDh6Q= k8s.io/code-generator v0.21.0/go.mod h1:hUlps5+9QaTrKx+jiM4rmq7YmH8wPOIko64uZCHDh6Q= k8s.io/code-generator v0.21.1/go.mod h1:hUlps5+9QaTrKx+jiM4rmq7YmH8wPOIko64uZCHDh6Q= k8s.io/code-generator v0.21.2/go.mod h1:8mXJDCB7HcRo1xiEQstcguZkbxZaqeUOrO9SsicWs3U= -k8s.io/code-generator v0.22.0 h1:wIo+6NuAEf+aP6dblF+fPJOkY/VnM6wqNHusiW/eQ3o= +k8s.io/code-generator v0.21.3/go.mod h1:K3y0Bv9Cz2cOW2vXUrNZlFbflhuPvuadW6JdnN6gGKo= k8s.io/code-generator v0.22.0/go.mod h1:eV77Y09IopzeXOJzndrDyCI88UBok2h6WxAlBwpxa+o= +k8s.io/code-generator v0.22.1 h1:zAcKpn+xe9Iyc4qtZlfg4tD0f+SO2h5+e/s4pZPOVhs= +k8s.io/code-generator v0.22.1/go.mod h1:eV77Y09IopzeXOJzndrDyCI88UBok2h6WxAlBwpxa+o= k8s.io/component-base v0.21.0/go.mod h1:qvtjz6X0USWXbgmbfXR+Agik4RZ3jv2Bgr5QnZzdPYw= k8s.io/component-base v0.21.1/go.mod h1:NgzFZ2qu4m1juby4TnrmpR8adRk6ka62YdH5DkIIyKA= k8s.io/component-base v0.21.2/go.mod h1:9lvmIThzdlrJj5Hp8Z/TOgIkdfsNARQ1pT+3PByuiuc= -k8s.io/component-base v0.22.0 h1:ZTmX8hUqH9T9gc0mM42O+KDgtwTYbVTt2MwmLP0eK8A= +k8s.io/component-base v0.21.3/go.mod h1:kkuhtfEHeZM6LkX0saqSK8PbdO7A0HigUngmhhrwfGQ= k8s.io/component-base v0.22.0/go.mod h1:SXj6Z+V6P6GsBhHZVbWCw9hFjUdUYnJerlhhPnYCBCg= +k8s.io/component-base v0.22.1 h1:SFqIXsEN3v3Kkr1bS6rstrs1wd45StJqbtgbQ4nRQdo= +k8s.io/component-base v0.22.1/go.mod h1:0D+Bl8rrnsPN9v0dyYvkqFfBeAd4u7n77ze+p8CMiPo= k8s.io/component-helpers v0.21.0/go.mod h1:tezqefP7lxfvJyR+0a+6QtVrkZ/wIkyMLK4WcQ3Cj8U= k8s.io/component-helpers v0.22.0/go.mod h1:YNIbQI59ayNiU8JHlPIxVkOUYycbKhk5Niy0pcyJOEY= k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= @@ -1683,8 +1831,9 @@ k8s.io/metrics v0.22.0/go.mod h1:eYnwafAUNLLpVmY/msoq0RKIKH5C4TzfjKnMZ0Xrt3A= k8s.io/utils v0.0.0-20200324210504-a9aa75ae1b89/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20210527160623-6fdb442a123b/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20210707171843-4b05e18ac7d9 h1:imL9YgXQ9p7xmPzHFm/vVd/cF78jad+n4wK1ABwYtMM= k8s.io/utils v0.0.0-20210707171843-4b05e18ac7d9/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20210802155522-efc7438f0176 h1:Mx0aa+SUAcNRQbs5jUzV8lkDlGFU8laZsY9jrcVX5SY= +k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/letsencrypt v0.0.3/go.mod h1:buyQKZ6IXrRnB7TdkHP0RyEybLx18HHyOSoTyoOLqNY= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= @@ -1694,11 +1843,12 @@ sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.19/go.mod h1:LEScyz sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.22 h1:fmRfl9WJ4ApJn7LxNuED4m0t18qivVQOxP6aAYG9J6c= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.22/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= sigs.k8s.io/controller-runtime v0.9.0/go.mod h1:TgkfvrhhEw3PlI0BRL/5xM+89y3/yc0ZDfdbTl84si8= -sigs.k8s.io/controller-runtime v0.9.2 h1:MnCAsopQno6+hI9SgJHKddzXpmv2wtouZz6931Eax+Q= sigs.k8s.io/controller-runtime v0.9.2/go.mod h1:TxzMCHyEUpaeuOiZx/bIdc2T81vfs/aKdvJt9wuu0zk= -sigs.k8s.io/controller-tools v0.6.0/go.mod h1:baRMVPrctU77F+rfAuH2uPqW93k6yQnZA2dhUOr7ihc= -sigs.k8s.io/controller-tools v0.6.1 h1:nODRx2YrSNcaGd+90+CVC9SGEG6ygHlz3nSJmweR5as= +sigs.k8s.io/controller-runtime v0.10.0 h1:HgyZmMpjUOrtkaFtCnfxsR1bGRuFoAczSNbn2MoKj5U= +sigs.k8s.io/controller-runtime v0.10.0/go.mod h1:GCdh6kqV6IY4LK0JLwX0Zm6g233RtVGdb/f0+KSfprg= sigs.k8s.io/controller-tools v0.6.1/go.mod h1:U6O1RF5w17iX2d+teSXELpJsdexmrTb126DMeJM8r+U= +sigs.k8s.io/controller-tools v0.6.2 h1:+Y8L0UsAugDipGRw8lrkPoAi6XqlQVZuf1DQHME3PgU= +sigs.k8s.io/controller-tools v0.6.2/go.mod h1:oaeGpjXn6+ZSEIQkUe/+3I40PNiDYp9aeawbt3xTgJ8= sigs.k8s.io/kind v0.11.1/go.mod h1:fRpgVhtqAWrtLB9ED7zQahUimpUXuG/iHT88xYqEGIA= sigs.k8s.io/kustomize/api v0.8.5/go.mod h1:M377apnKT5ZHJS++6H4rQoCHmWtt6qTpp3mbe7p6OLY= sigs.k8s.io/kustomize/api v0.8.11 h1:LzQzlq6Z023b+mBtc6v72N2mSHYmN8x7ssgbf/hv0H8= diff --git a/staging/api/crds/operators.coreos.com_catalogsources.yaml b/staging/api/crds/operators.coreos.com_catalogsources.yaml index 8464f6c8ec..4518bc3037 100644 --- a/staging/api/crds/operators.coreos.com_catalogsources.yaml +++ b/staging/api/crds/operators.coreos.com_catalogsources.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.6.0 + controller-gen.kubebuilder.io/version: v0.6.2 creationTimestamp: null name: catalogsources.operators.coreos.com spec: diff --git a/staging/api/crds/operators.coreos.com_clusterserviceversions.yaml b/staging/api/crds/operators.coreos.com_clusterserviceversions.yaml index 231df701d0..7d3a2abe33 100644 --- a/staging/api/crds/operators.coreos.com_clusterserviceversions.yaml +++ b/staging/api/crds/operators.coreos.com_clusterserviceversions.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.6.0 + controller-gen.kubebuilder.io/version: v0.6.2 creationTimestamp: null name: clusterserviceversions.operators.coreos.com spec: diff --git a/staging/api/crds/operators.coreos.com_installplans.yaml b/staging/api/crds/operators.coreos.com_installplans.yaml index 506b2b1554..616f51ba0d 100644 --- a/staging/api/crds/operators.coreos.com_installplans.yaml +++ b/staging/api/crds/operators.coreos.com_installplans.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.6.0 + controller-gen.kubebuilder.io/version: v0.6.2 creationTimestamp: null name: installplans.operators.coreos.com spec: diff --git a/staging/api/crds/operators.coreos.com_operatorconditions.yaml b/staging/api/crds/operators.coreos.com_operatorconditions.yaml index af96a5c20b..eb9a6d5a79 100644 --- a/staging/api/crds/operators.coreos.com_operatorconditions.yaml +++ b/staging/api/crds/operators.coreos.com_operatorconditions.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.6.0 + controller-gen.kubebuilder.io/version: v0.6.2 creationTimestamp: null name: operatorconditions.operators.coreos.com spec: diff --git a/staging/api/crds/operators.coreos.com_operatorgroups.yaml b/staging/api/crds/operators.coreos.com_operatorgroups.yaml index 0927d45a0e..e59131ac3a 100644 --- a/staging/api/crds/operators.coreos.com_operatorgroups.yaml +++ b/staging/api/crds/operators.coreos.com_operatorgroups.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.6.0 + controller-gen.kubebuilder.io/version: v0.6.2 creationTimestamp: null name: operatorgroups.operators.coreos.com spec: diff --git a/staging/api/crds/operators.coreos.com_operators.yaml b/staging/api/crds/operators.coreos.com_operators.yaml index 9c47bf45f3..ef206c5e7a 100644 --- a/staging/api/crds/operators.coreos.com_operators.yaml +++ b/staging/api/crds/operators.coreos.com_operators.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.6.0 + controller-gen.kubebuilder.io/version: v0.6.2 creationTimestamp: null name: operators.operators.coreos.com spec: diff --git a/staging/api/crds/operators.coreos.com_subscriptions.yaml b/staging/api/crds/operators.coreos.com_subscriptions.yaml index 4b92cac164..f4070f0878 100644 --- a/staging/api/crds/operators.coreos.com_subscriptions.yaml +++ b/staging/api/crds/operators.coreos.com_subscriptions.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.6.0 + controller-gen.kubebuilder.io/version: v0.6.2 creationTimestamp: null name: subscriptions.operators.coreos.com spec: diff --git a/staging/api/crds/zz_defs.go b/staging/api/crds/zz_defs.go index 762a868c8e..e7af33e538 100644 --- a/staging/api/crds/zz_defs.go +++ b/staging/api/crds/zz_defs.go @@ -84,7 +84,7 @@ func (fi bindataFileInfo) Sys() interface{} { return nil } -var _operatorsCoreosCom_catalogsourcesYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x5a\x6d\x73\x1b\xb7\x8f\x7f\xef\x4f\x81\xf1\xdd\x4c\xe2\x9c\xb4\x8e\x93\x4e\xae\xd5\x34\xcd\xb8\xce\xa5\xe7\x69\x9c\x78\xec\xa4\x33\x77\xb1\xef\x0a\xed\x42\x2b\xd6\x5c\x72\x4b\x72\x6d\xab\x9d\x7e\xf7\xff\x80\x0f\xbb\x7a\x5a\x49\x76\x1b\xbd\xb1\xc5\x07\x00\x04\x01\xfc\x00\x50\x58\x8b\x5f\xc8\x58\xa1\xd5\x08\xb0\x16\x74\xef\x48\xf1\x37\x9b\xdd\x7c\x6b\x33\xa1\x0f\x6f\x8f\xf6\x6e\x84\x2a\x46\x70\xd2\x58\xa7\xab\x0b\xb2\xba\x31\x39\xbd\xa5\x89\x50\xc2\x09\xad\xf6\x2a\x72\x58\xa0\xc3\xd1\x1e\x00\x2a\xa5\x1d\xf2\xb0\xe5\xaf\x00\xb9\x56\xce\x68\x29\xc9\x0c\x4b\x52\xd9\x4d\x33\xa6\x71\x23\x64\x41\xc6\x13\x4f\xac\x6f\x9f\x67\xaf\xb2\xe7\x7b\x00\xb9\x21\xbf\xfd\x93\xa8\xc8\x3a\xac\xea\x11\xa8\x46\xca\x3d\x00\x85\x15\x8d\x20\x47\x87\x52\x97\x41\x08\x9b\xe9\x9a\x0c\x3a\x6d\x6c\x96\x6b\x43\x9a\xff\x54\x7b\xb6\xa6\x9c\xb9\x97\x46\x37\xf5\x08\xd6\xae\x09\xf4\x92\x90\xe8\xa8\xd4\x46\xa4\xef\x00\x43\xd0\xb2\xf2\xff\xc7\xc3\x07\xb6\x97\x9e\xad\x1f\x97\xc2\xba\x9f\x57\xe7\xde\x0b\xeb\xfc\x7c\x2d\x1b\x83\x72\x59\x60\x3f\x65\xa7\xda\xb8\x0f\x1d\x7b\x66\x97\xa3\xb3\x26\x0f\xd3\x42\x95\x8d\x44\xb3\xb4\x77\x0f\xc0\xe6\xba\xa6\x11\xf8\xad\x35\xe6\x54\xec\x01\x44\x15\x46\x52\x43\xc0\xa2\xf0\xd7\x82\xf2\xdc\x08\xe5\xc8\x9c\x68\xd9\x54\xaa\x65\xc5\x6b\x0a\xb2\xb9\x11\xb5\xf3\xaa\xff\x34\x25\xa8\x0d\x39\x37\xf3\x2a\x01\x3d\x01\x37\xa5\xc4\xbb\xdd\x05\xf0\x9b\xd5\xea\x1c\xdd\x74\x04\x19\x6b\x38\x2b\x84\xad\x25\xce\x58\x9a\xb9\x55\xe1\x9a\xde\x86\xb9\xb9\x71\x37\x63\xd1\xad\x33\x42\x95\x9b\x44\xe1\x75\xbb\xcb\x10\x54\xf3\x69\x56\xaf\x8a\xb0\x34\xb8\x2b\xff\xba\x19\x4b\x61\xa7\x64\x76\x17\xa2\xdd\xb2\x22\xc3\xf9\x9a\x99\x1e\x41\xe6\x88\x26\x87\xca\x56\x9c\x61\x85\xc1\x71\xb9\x7a\xc6\x02\x5d\x1a\x0c\x8b\x6e\x8f\x50\xd6\x53\x3c\x8a\x83\x36\x9f\x52\x85\x9d\x3d\xe8\x9a\xd4\xf1\xf9\xe9\x2f\x2f\x2f\x97\x26\x60\x51\x3b\x0b\x76\x0e\xc2\x02\x82\xa1\x5a\x5b\xe1\xb4\x99\xb1\xb6\x4e\x2e\x7f\xb1\x03\x38\xb9\x78\x6b\x07\x80\xaa\x68\x1d\x0f\x6a\xcc\x6f\xb0\x24\x9b\xad\xc8\xaa\xc7\xbf\x51\xee\xe6\x86\x0d\xfd\xde\x08\x43\xc5\xbc\x14\xac\x9e\xa4\x93\xa5\x61\xd6\xff\xdc\x50\x6d\x98\xa7\x9b\x73\xe4\xf0\x99\x8b\x72\x0b\xe3\x4b\x27\x7c\xc2\x6a\x08\xeb\xa0\xe0\x00\x47\xd6\x9b\x40\xf4\x31\x2a\xa2\xee\x82\x69\x08\xcb\xe7\x37\x64\x49\x85\x90\xc7\xc3\xa8\xe2\x99\x32\xb8\x24\xc3\x1b\xd9\xdd\x1b\x59\x70\x24\xbc\x25\xe3\xc0\x50\xae\x4b\x25\xfe\x68\xa9\x59\x70\xda\xb3\x91\xe8\xc8\x3a\xf0\x5e\xab\x50\xc2\x2d\xca\x86\x82\x2a\x2b\x9c\x81\x21\xa6\x0b\x8d\x9a\xa3\xe0\x97\xd8\x0c\xce\xb4\x21\x10\x6a\xa2\x47\x30\x75\xae\xb6\xa3\xc3\xc3\x52\xb8\x14\xc3\x73\x5d\x55\x8d\x12\x6e\x76\xe8\xc3\xb1\x18\x37\x1c\x0e\x0f\x0b\xba\x25\x79\x68\x45\x39\x44\x93\x4f\x85\xa3\xdc\x35\x86\x0e\xb1\x16\x43\x2f\xac\xf2\x71\x3c\xab\x8a\x7f\x33\x31\xea\xdb\x27\x4b\xea\x5b\x6b\xcc\x90\xc2\xe6\x46\x5d\x73\xf0\x0c\x56\x14\xb6\x87\xb3\x74\x2a\xe5\x21\xd6\xca\xc5\x7f\x5d\x7e\x82\x24\x40\x50\x7b\xd0\x70\xb7\xd4\x76\xca\x66\x45\x09\x35\x21\x13\x56\x4e\x8c\xae\x3c\x15\x52\x45\xad\x85\x72\xc1\xa5\xa5\x20\xe5\xc0\x36\xe3\x4a\x38\xeb\x6d\x8e\xac\xe3\x7b\xc8\xe0\xc4\x43\x18\x8c\x09\x9a\x9a\x3d\xa9\xc8\xe0\x54\xc1\x09\x56\x24\x4f\xd0\xd2\x57\x57\x35\x6b\xd4\x0e\x59\x7d\xbb\x2b\x7b\x1e\x81\x57\x37\xac\xf8\x18\x40\x42\xc8\x9d\x16\xf7\x39\x25\x04\x0f\x5c\x17\x81\x61\x83\x2f\xf2\x07\x8b\xc2\x90\x5d\x33\xb1\xe2\x90\x61\x61\xb0\x93\xa9\xb6\x7c\x7f\xe8\xe0\xe3\xfb\x33\xc8\x51\x41\x63\x89\x9d\x27\xd7\x4a\xb1\x41\x38\x0d\xc8\x58\x36\xa4\x7b\x61\xbd\x01\x19\x2a\x85\x75\x66\x96\xc1\x3b\x6d\x2a\x74\x23\xf8\x3e\x0d\x0d\x3d\x39\x6d\x40\xd4\x3f\x8c\xbe\xaf\xb5\x71\x3f\xc0\x47\x25\x67\x4c\xb4\x80\xbb\x29\x29\xb8\x6c\xcf\x06\xaf\xe7\xbe\xfc\x64\xea\x3c\x83\xd3\x52\x69\x93\x56\xb2\x55\x9d\x56\x58\x12\x4c\x04\x49\x6f\xd7\x96\x5c\xb6\x7c\x83\x1b\x6f\x11\x42\xba\x34\x11\xe5\x19\xd6\x5b\x55\x73\x92\x56\x32\x2f\x66\x3f\x0f\xde\xdd\xa4\xd3\xde\x94\xf9\x48\xfc\x2f\xe6\x37\x80\x91\x4b\x85\xf5\xd0\x7a\xb7\x99\x53\xd3\x6e\x1a\x38\x49\x04\x58\x7f\xdd\xf0\x69\x8c\x5c\xd9\x43\x8f\x3d\x7f\xb2\x07\xef\xed\xd2\x90\xad\x4a\x3b\x5b\x87\x22\x3b\xf0\x10\xf9\x26\xc1\xd6\xfa\x0c\x6c\xf4\x1b\xf0\xbe\x33\x46\x4b\xaf\xbe\xe9\x11\x28\xa0\x5e\x21\xd0\xad\xfa\x16\x6c\xf1\x2f\xfe\x74\xc4\xd7\xcf\x6f\x39\x32\xf8\xb8\x12\xd9\x3f\x8a\x82\x60\x7f\xd8\x7a\x25\xc1\x6b\xd8\xbf\x55\x9b\x30\x0c\x93\x3d\xfa\xf2\x01\x85\x22\x13\xa8\xb1\x0d\x0b\x65\x1d\x2a\x27\xd0\x91\xcf\x40\xa2\x37\x47\x4b\xbe\x13\x6e\xba\xab\x15\x47\x3f\x9e\x40\x84\x91\x81\xf7\x9d\x18\x9b\x3a\x47\x16\xc1\xd1\x1f\x6c\xd4\xb5\x11\xda\x08\x37\xdb\x1e\xe5\xce\xe3\xca\xc8\x13\xad\x15\xa5\xe2\x88\x77\x47\xa2\x9c\xba\x94\x1f\xc4\x4c\x14\x12\x14\xea\xc4\x42\xfc\xc1\xc0\x48\x15\x58\x1d\xe2\xa3\x70\x3e\x3c\x8e\x89\x15\x68\x9b\x8a\x0a\x18\xcf\x3c\x8d\x82\x6a\x52\x05\xa9\x7c\xe6\x31\x55\xde\x92\xc9\xe0\xb3\xe5\x9b\x82\xff\x16\x25\xe7\xbd\x91\xa9\x50\x85\xe0\xc2\xc8\x06\x92\x1e\x4e\x97\x24\x10\x96\x55\x37\x21\xc3\x71\x50\xb3\xfa\xa5\xbe\x6b\x29\x50\xb1\xb4\xde\x42\xd1\x78\xa4\x5f\x16\xa2\x61\x3d\x64\x3e\xfd\x36\xa8\xca\x36\x8c\x25\x0d\xc6\xd4\x80\x8f\x54\xea\x80\xe9\x3e\xef\x14\xb7\x5e\x0b\x8a\x4a\xf4\xff\x8b\x10\x88\x5b\x1a\x42\xb9\x97\x2f\x02\xdd\x82\x26\xd8\x48\x17\x29\x79\xa0\x58\x3a\x0c\x5b\x0e\x34\x2a\x28\x9f\x8a\x8e\xf9\x9d\x4f\xdf\xc6\x04\xcf\x03\xa9\x75\xfb\x98\xad\xe5\x00\xbc\x28\xb2\x85\x3b\x21\x25\xef\x35\xa8\x6e\xa8\x00\x49\xf7\x22\xd7\xa5\xc1\x7a\x2a\x72\x94\x72\xe6\xdd\xb4\x00\xad\x80\x33\x11\x8e\xe1\x1b\x40\x83\x33\xc3\x72\xa1\x98\x88\x96\x96\xca\x8c\x07\x07\x4f\x4b\xb9\x21\xb7\x1d\x88\x2f\xc3\xba\x2e\xe5\x62\x78\x63\x15\x47\x02\xc1\x46\xa2\xcd\x25\xb4\xc1\x3c\x67\x47\xf2\xa6\xab\x95\xe3\x44\x6d\xa9\xa8\xca\xe0\xd4\xb1\x15\x8d\x39\xef\x75\x1a\x6e\x88\xea\x60\x69\x5c\x5e\x83\xad\x50\xca\x01\x17\xc4\x39\x01\x61\x3e\x0d\xea\x54\x14\xd1\x8c\xc0\x19\x41\x05\x4c\xb4\x01\xba\x25\x8e\x17\xf1\x6e\x48\x31\x9a\xf5\x6a\x03\x8d\x59\x28\x4e\xd3\x47\x38\xaa\x7a\xc2\xe9\x66\x35\xb6\x31\x65\xbb\x26\xbb\x58\x14\x81\x3b\x55\xbc\xb6\x6b\x2e\x3c\x80\x75\xc8\x52\x2f\x9d\x41\x47\xe5\xf6\x58\xf3\x79\x61\x79\x5b\xe5\x4c\xf5\x5d\xca\x77\x57\x9c\x9c\x03\xaf\x4d\x77\x5b\x08\x9b\xb3\xa7\x53\xc1\x49\x86\x15\x36\xdc\x29\xaa\x50\xb6\xdc\xa2\x0c\xa6\x90\x08\xd7\x5a\x4a\xef\xf2\x8d\x09\x35\x12\x57\x33\xa8\x80\xaa\x31\x15\x05\xd7\x40\x49\x94\x1e\x98\xdb\x02\xb1\xdb\x50\x30\xe1\xc3\xb9\x96\x72\x33\x8a\xf5\xb2\xd8\x85\x0d\x7f\x92\x02\xfa\x57\x2c\x43\x5f\xd2\x98\xb0\xad\xcf\x14\xe4\xc8\x54\x42\x51\x30\x0d\x51\x51\xa7\xd8\x31\xb9\x3b\x22\x05\xf9\x94\xf2\x9b\xd6\x95\x62\xd5\xb8\x74\x6b\xb1\x64\x5d\x8c\x58\x5d\x41\xae\xa5\xf4\x65\xa7\x25\x02\x31\x01\x04\x45\x77\x69\xcf\x92\x8f\xce\x05\x7b\xbc\x45\x21\x71\x2c\xc9\xa3\x66\xfb\x6d\xb0\x50\xbd\x26\x3c\xaf\x1b\x29\xa9\xf0\xf7\x5d\x5e\x9c\x9f\x80\x33\x38\x99\x88\x9c\xa7\x0a\x61\x28\x77\xe1\xc0\xbd\x47\x58\xe7\xbd\x8b\x37\xb6\xc6\x23\xac\x43\xd7\xac\xdc\xd1\x86\x0b\xde\x74\xb1\xb9\x56\xa1\x97\xb6\x3d\x3e\x5e\xb4\xa5\x68\x80\x02\xc7\xd9\x09\xfb\xc5\x62\xd7\x24\x83\x0f\xda\x51\xf0\x90\x33\xb2\x0c\xbb\x5e\x41\x17\x84\x56\xab\xb9\xe8\xca\x44\xb4\x11\xa5\x50\x28\xe3\xa1\x7c\xcd\xc9\x35\x8c\xd0\x6a\x00\x77\x53\x91\x4f\x7d\xb5\x3b\x26\xa8\x44\x69\xd0\xb5\x41\xb1\x93\x3b\xa2\x4b\xc4\xc5\x49\xc3\x45\x67\x06\xc7\x6a\xe6\xef\x7b\x42\xc8\x03\x4c\xd9\x19\x5d\x34\x39\xe7\x4b\x1c\x60\xb9\xac\xea\x88\xfc\xa3\x61\x74\x41\x6b\xfb\x27\x89\x49\x4a\xf4\x2c\x3b\x00\x0a\x69\x7d\x4c\xd7\x8a\x00\xb9\x56\x75\xad\x4d\x36\xc6\x78\xf4\x49\x0a\xf6\x60\x71\x7c\x7e\x0a\xa9\x31\x9d\xc1\x70\x38\x84\x4f\x3c\x6c\x9d\x69\x72\x8f\x2f\xec\x42\xaa\x88\x48\x11\xac\xcf\x1f\x12\x7d\xda\xe9\x8f\x01\x18\xb4\x1e\x52\xb0\x1a\xdd\x14\xb2\xa0\xf8\x6c\x4e\x15\xc0\x75\x24\xd0\x3d\x56\xb5\xb7\x7b\x0e\xdd\xef\xb4\xbe\x0c\x37\x14\x18\xfe\xe9\x0f\x7a\x78\xb8\x6c\x14\x7a\xcc\x39\x6a\x68\x8e\x07\xdb\x98\x68\xfd\xc4\x2e\x9e\x29\x4b\x9b\x7f\x56\xfa\x4e\xad\x13\xc1\xf3\x44\x43\x23\xb8\xda\x3f\x4e\x2e\x78\xb5\x3f\x80\xab\xfd\x73\xa3\x4b\xce\x5d\x85\x2a\x79\x80\x2d\xeb\x6a\xff\x2d\x95\x06\x0b\x2a\xae\xf6\x13\xe9\xff\xa8\xd1\xe5\xd3\x33\x32\x25\xfd\x4c\xb3\xd7\x9e\xe0\xc2\x54\x82\x87\xd7\x15\xaf\x69\xe7\x18\x93\x19\xb8\x5e\x73\xe1\x37\x3f\x78\x86\xf5\x02\xa1\x93\xce\x00\xbf\x5c\x57\xe4\xf0\xf6\x28\xeb\xae\xfa\xd7\xdf\xac\x56\xa3\xab\xfd\xee\x4c\x03\x5d\xb1\xc9\xd4\x6e\x76\xb5\x0f\x0b\x12\x8c\xae\xf6\xbd\x0c\x69\x3c\x09\x3d\xba\xda\x67\x6e\x3c\x6c\xb4\xd3\xe3\x66\x32\xba\xda\x1f\xcf\x1c\xd9\xc1\xd1\xc0\x50\x3d\xe0\x4c\xea\x75\xc7\xe1\x6a\xff\x57\xb8\x52\x49\x68\xed\x38\xcf\xf5\x37\x6d\xe1\xaf\xfd\x0d\x78\xbf\x01\x14\x36\x17\x77\x5c\xbd\x49\xb4\xee\x93\x41\x65\x45\x6a\xe2\xf6\x2e\xad\x42\x30\xe8\x9d\x37\x3e\x40\xf4\x4e\x07\x2b\xe9\x9d\xee\x81\xd6\x5d\x60\x6d\xf5\x0c\xfd\xf0\xb6\xe0\xdb\xab\x1b\x53\xbe\xc3\x33\x01\xd9\x62\x66\x18\xed\xc2\xb5\xab\xd9\x51\x39\xc9\x67\xff\x8f\xc1\x8f\xd3\x49\xe5\xef\x2d\x8b\xce\x3d\x4d\x69\x79\xdb\x80\x69\x54\x41\x46\xce\x38\xdd\xe8\xa8\xe6\x53\xae\x06\x8a\x0c\x18\xb2\x42\x71\x64\x41\x69\x07\x37\xec\x60\x1e\xba\x14\x34\x36\x75\x1b\xbd\x5c\x2d\x45\x0e\x2c\x21\x20\x44\x32\x1e\x05\xf3\x9c\x6a\xe7\x61\xb0\x57\x15\x5b\x4b\x6b\xfe\x4c\x62\x4b\x8a\xd3\xae\xa1\xeb\x37\x8f\x68\x1c\x3b\x2a\x3e\xae\x8e\x2d\xb3\xa6\x42\xc6\x15\x2c\x58\xde\x6e\x2e\xd4\x76\xa1\x16\x0b\xf1\x16\xc7\xba\x09\x11\xb0\xbb\x87\xa8\xea\x88\x32\x3e\x6b\xab\xdd\x2c\x1e\xeb\x6f\x1e\xbe\xc2\xfb\xf7\xa4\x4a\x37\x1d\xc1\xcb\x17\xff\xf9\xea\xdb\x9e\x85\x21\x68\x52\xf1\x13\x29\x0a\x19\xe4\x8e\x6a\x58\xdd\x38\xd7\x2f\xf6\xe7\xec\xde\x59\xca\x6e\x4d\xac\x75\xe7\xed\xf2\x0e\x7d\x33\x2f\x62\x69\x53\xb3\x5e\x18\x05\x42\x23\x22\xa7\x01\x67\x50\x6b\x89\x89\x36\xb8\xcb\x19\x1c\xbd\x18\xc0\x38\xaa\x78\x35\xac\x7f\xb9\xbf\xce\xd6\x88\x2c\x2c\x7c\x37\x58\x92\x47\x58\xe0\xab\xd2\x13\x6f\x38\xa1\xfe\x34\x14\x60\x32\x75\x0a\x56\x61\x92\x5a\x79\xb7\x5d\x5c\x5f\x95\x99\x3e\xc9\x6c\x85\x72\xaf\xbe\xe9\xbf\x5f\xa1\x44\xd5\x54\x23\x78\xde\xb3\x24\x84\xb4\x1d\x6f\x33\x2c\xee\xb2\x04\xe4\xd0\x55\x1a\xac\x38\x1f\xca\x41\x14\xa4\x9c\x98\x08\x32\xf3\xa6\xed\x7b\x01\x61\x23\xe3\xfe\x82\x16\x9f\xd8\x18\x87\xe6\x8c\xfd\x3c\x24\x41\xc6\xa3\x33\xeb\x53\x70\xbe\x3a\x17\xa0\x66\x35\x05\x6f\x08\xd5\x0d\xd0\x7d\x1d\xf2\xd8\x58\xec\xfb\x97\x1a\x42\x25\x54\x69\x23\x4b\x11\x1b\x49\x01\x8d\xef\xa6\xe4\xa1\xc7\x3f\x2a\xc5\x3d\x26\x34\x69\x44\xe1\x8b\x2a\x84\xb2\x41\x83\xca\x71\x8d\x7b\x7c\x7e\x1a\x12\xf8\xd0\xb5\xe8\x42\x1e\x76\x0f\x12\xc9\x1b\x83\xab\x86\x60\xc5\x22\xc6\x47\x0c\xef\xb1\xff\x9c\xab\x1e\x3d\x7f\xb1\xf1\xca\xdb\x75\xbd\x8b\x6a\x74\x8e\x8c\x1a\xc1\xff\x7d\x39\x1e\xfe\x2f\x0e\xff\xb8\x7e\x1a\xff\x79\x3e\xfc\xee\xff\x07\xa3\xeb\x67\x73\x5f\xaf\x0f\xde\xfc\x7b\x0f\xa5\xf5\x99\x7e\x8f\xf9\x44\x10\x49\x49\x64\xba\xd1\x81\x47\x18\x3d\x81\x4f\xa6\xa1\x01\xbc\x43\x69\x69\x00\x9f\x95\x87\x86\xbf\xa9\x34\x52\x4d\xb5\xa9\x12\x1c\xc2\x3e\x73\x5d\x9f\x7c\xb4\x4b\xbc\x48\x9b\xd7\x44\x71\x37\xd5\xb6\xbb\x29\x29\xf5\x21\xe6\x22\xcd\xdc\xc3\x97\x7f\x29\x61\x47\xd2\x59\x4c\x7f\xb3\x5c\x57\x87\x73\x0f\x63\x9c\x77\x9f\xa1\x9a\x41\x17\xd6\x42\xb2\xba\x6c\xe9\xd6\x71\x6c\xc2\xdc\x68\x6b\xdb\x97\x3d\x0b\x52\xdc\x10\x1c\x77\x45\x25\x07\xcb\x31\xe5\xe8\x13\x75\x33\x16\xce\x60\xe8\x08\xa7\xdc\xb2\x6b\x37\x4d\x1a\x09\x4f\xb9\x96\xcd\x94\x2e\x68\x35\xba\x1e\xc4\xd6\xee\x58\x48\xe1\x66\xa1\xce\xce\xb5\x9a\x48\x11\xeb\x83\xaa\xd6\xc6\xa1\x72\xb1\x09\x49\x25\xdd\x83\x70\x50\x71\xce\x49\xfe\xf9\xe9\x69\xa1\xec\xd1\xd1\x8b\x97\x97\xcd\xb8\xd0\x15\x0a\xf5\xae\x72\x87\x07\x6f\x9e\xfe\xde\xa0\xe4\xc8\x53\x7c\xc0\x8a\xde\x55\xee\xe0\x9f\x83\xc5\xa3\x57\x3b\x78\xd1\xd3\x2f\xc1\x57\xae\x9f\x7e\x19\xc6\xff\x9e\xa5\xa1\x83\x37\x4f\xaf\xb2\x8d\xf3\x07\xcf\xf8\x0c\x73\x1e\x78\xfd\x65\xd8\xb9\x5f\x76\xfd\xec\xe0\xcd\xdc\xdc\xc1\x3a\x67\xbc\x1f\xde\x34\x63\x32\x8a\x1c\xd9\x21\x57\x03\xc3\x0a\xeb\xe1\x0d\xcd\x7a\x9c\xb3\x37\x1d\x5d\x25\x14\x34\x56\x61\xdd\xff\x4e\x76\x41\x13\x32\xa4\xf2\xb5\x46\xfe\x37\x9f\x67\x14\xf6\xa4\x64\x61\xca\xff\x04\xe7\x11\x2d\x29\xc6\x9d\xd0\x86\xdb\x94\x4e\xef\x60\x2d\xbb\xe5\x8f\xaa\xe7\x61\x6c\x27\x26\xed\x39\x1f\x4d\x21\xf9\x77\xcf\xef\x2f\x76\xa6\xd3\x88\xde\x4a\x6b\xb1\xc1\x79\xfa\x36\xa4\xbe\x3e\xf4\xf8\x74\x6e\xaa\xb9\xce\x6b\x94\xf8\xbd\x21\x38\x7d\x1b\xe3\xd1\x00\x84\xca\x65\x53\x70\xa6\xf0\xf9\xf3\xe9\x5b\x2e\xee\x7f\x8c\xe1\xe6\x8e\xa0\xd0\xea\x89\x83\x8f\x1f\xde\xff\x8f\xef\x14\xf8\x15\x83\x00\xe8\xe1\xb1\x0a\xa5\x08\x3f\xdd\x48\x00\x0c\x3f\x12\xd3\x8a\x9c\x73\xac\xdb\xe6\x8a\x0f\x77\xaa\x80\x29\xc9\x9a\x13\x88\x1b\x02\xdb\x98\x28\x1d\x13\xf6\xb3\x5e\xd7\x50\x68\x0f\xdd\x25\x39\x6f\xe4\xd2\xff\x04\xe1\x31\x4a\x8b\x8f\xe2\x42\xab\x4b\xce\x02\xbf\x82\x7f\xb0\x21\x7f\x8c\x39\xab\xe7\xf1\x08\x67\xd8\xf0\x4b\x80\xad\x27\x84\xe8\x4c\x27\xe1\xa4\x5f\xdd\x93\x56\xce\xfb\x28\x8e\xa1\xd9\xe9\x9f\x3d\x2f\xb6\x34\xa7\x57\x7e\x9c\xb6\x58\x3a\x2f\xfd\x20\xcb\x37\x5e\xdb\x97\xd3\x29\x5a\x18\x13\x29\xdf\xeb\x0d\xad\x41\x52\xd1\xea\xa8\xeb\xd2\x36\xf5\xd0\xe9\x61\xb1\xfe\xf2\xb6\x68\x6e\xbb\xd6\x36\x54\xae\x0b\x67\x3b\x7e\x70\xa1\x7a\x37\x9d\xad\xd3\x81\x0d\xbd\x4e\x2e\xbc\xda\x1c\xe4\xa1\x07\xeb\x2f\x4c\x96\x5a\xbe\xbe\xb2\x88\x4d\x8d\x58\x67\xac\x8a\xc4\xd5\xe3\x42\x67\xc3\x69\xff\xd4\xb7\xd8\xf5\x7b\xb8\x8c\xe1\x9a\x2f\xc9\xdc\x8a\x47\x81\xdf\x36\xc7\xf4\xbf\x3d\xa4\xe2\xf8\xeb\xbb\x15\xa7\x5e\x8f\x66\xe2\xdb\x7f\xb9\xde\xf2\xb6\xb3\x81\x80\x0d\x1a\xec\xfb\xf9\xc8\x43\x69\x3c\x14\x2c\x43\x34\x19\x81\x33\x4d\xd2\x8e\x75\xda\xf8\xf7\xf8\xf9\xb1\x66\xdc\x26\xca\x1d\xf5\x58\x03\xc1\x9f\x7f\xed\xfd\x2b\x00\x00\xff\xff\xff\x45\x04\xba\xc8\x2d\x00\x00") +var _operatorsCoreosCom_catalogsourcesYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x5a\x6d\x73\x1b\xb7\x8f\x7f\xef\x4f\x81\xf1\xdd\x4c\xe2\x9c\xb4\x8e\x93\x4e\xae\xd5\x34\xcd\xb8\xce\xa5\xe7\x69\x9c\x78\xec\xa4\x33\x77\xb1\xef\x0a\xed\x42\x2b\xd6\x5c\x72\x4b\x72\x6d\xab\x9d\x7e\xf7\xff\x80\x0f\xbb\x7a\x5a\x49\x76\x1b\xbd\xb1\xc5\x07\x00\x04\x01\xfc\x00\x50\x58\x8b\x5f\xc8\x58\xa1\xd5\x08\xb0\x16\x74\xef\x48\xf1\x37\x9b\xdd\x7c\x6b\x33\xa1\x0f\x6f\x8f\xf6\x6e\x84\x2a\x46\x70\xd2\x58\xa7\xab\x0b\xb2\xba\x31\x39\xbd\xa5\x89\x50\xc2\x09\xad\xf6\x2a\x72\x58\xa0\xc3\xd1\x1e\x00\x2a\xa5\x1d\xf2\xb0\xe5\xaf\x00\xb9\x56\xce\x68\x29\xc9\x0c\x4b\x52\xd9\x4d\x33\xa6\x71\x23\x64\x41\xc6\x13\x4f\xac\x6f\x9f\x67\xaf\xb2\x17\x7b\x00\xb9\x21\xbf\xfd\x93\xa8\xc8\x3a\xac\xea\x11\xa8\x46\xca\x3d\x00\x85\x15\x8d\x20\x47\x87\x52\x97\x41\x08\x9b\xe9\x9a\x0c\x3a\x6d\x6c\x96\x6b\x43\x9a\xff\x54\x7b\xb6\xa6\x9c\xb9\x97\x46\x37\xf5\x08\xd6\xae\x09\xf4\x92\x90\xe8\xa8\xd4\x46\xa4\xef\x00\x43\xd0\xb2\xf2\xff\xc7\xc3\x07\xb6\x97\x9e\xad\x1f\x97\xc2\xba\x9f\x57\xe7\xde\x0b\xeb\xfc\x7c\x2d\x1b\x83\x72\x59\x60\x3f\x65\xa7\xda\xb8\x0f\x1d\x7b\x66\x97\xa3\xb3\x26\x0f\xd3\x42\x95\x8d\x44\xb3\xb4\x77\x0f\xc0\xe6\xba\xa6\x11\xf8\xad\x35\xe6\x54\xec\x01\x44\x15\x46\x52\x43\xc0\xa2\xf0\xd7\x82\xf2\xdc\x08\xe5\xc8\x9c\x68\xd9\x54\xaa\x65\xc5\x6b\x0a\xb2\xb9\x11\xb5\xf3\xaa\xff\x34\x25\xa8\x0d\x39\x37\xf3\x2a\x01\x3d\x01\x37\xa5\xc4\xbb\xdd\x05\xf0\x9b\xd5\xea\x1c\xdd\x74\x04\x19\x6b\x38\x2b\x84\xad\x25\xce\x58\x9a\xb9\x55\xe1\x9a\xde\x86\xb9\xb9\x71\x37\x63\xd1\xad\x33\x42\x95\x9b\x44\xe1\x75\xbb\xcb\x10\x54\xf3\x69\x56\xaf\x8a\xb0\x34\xb8\x2b\xff\xba\x19\x4b\x61\xa7\x64\x76\x17\xa2\xdd\xb2\x22\xc3\xf9\x9a\x99\x1e\x41\xe6\x88\x26\x87\xca\x56\x9c\x61\x85\xc1\x71\xb9\x7a\xc6\x02\x5d\x1a\x0c\x8b\x6e\x8f\x50\xd6\x53\x3c\x8a\x83\x36\x9f\x52\x85\x9d\x3d\xe8\x9a\xd4\xf1\xf9\xe9\x2f\x2f\x2f\x97\x26\x60\x51\x3b\x0b\x76\x0e\xc2\x02\x82\xa1\x5a\x5b\xe1\xb4\x99\xb1\xb6\x4e\x2e\x7f\xb1\x03\x38\xb9\x78\x6b\x07\x80\xaa\x68\x1d\x0f\x6a\xcc\x6f\xb0\x24\x9b\xad\xc8\xaa\xc7\xbf\x51\xee\xe6\x86\x0d\xfd\xde\x08\x43\xc5\xbc\x14\xac\x9e\xa4\x93\xa5\x61\xd6\xff\xdc\x50\x6d\x98\xa7\x9b\x73\xe4\xf0\x99\x8b\x72\x0b\xe3\x4b\x27\x7c\xc2\x6a\x08\xeb\xa0\xe0\x00\x47\xd6\x9b\x40\xf4\x31\x2a\xa2\xee\x82\x69\x08\xcb\xe7\x37\x64\x49\x85\x90\xc7\xc3\xa8\xe2\x99\x32\xb8\x24\xc3\x1b\xd9\xdd\x1b\x59\x70\x24\xbc\x25\xe3\xc0\x50\xae\x4b\x25\xfe\x68\xa9\x59\x70\xda\xb3\x91\xe8\xc8\x3a\xf0\x5e\xab\x50\xc2\x2d\xca\x86\x82\x2a\x2b\x9c\x81\x21\xa6\x0b\x8d\x9a\xa3\xe0\x97\xd8\x0c\xce\xb4\x21\x10\x6a\xa2\x47\x30\x75\xae\xb6\xa3\xc3\xc3\x52\xb8\x14\xc3\x73\x5d\x55\x8d\x12\x6e\x76\xe8\xc3\xb1\x18\x37\x1c\x0e\x0f\x0b\xba\x25\x79\x68\x45\x39\x44\x93\x4f\x85\xa3\xdc\x35\x86\x0e\xb1\x16\x43\x2f\xac\xf2\x71\x3c\xab\x8a\x7f\x33\x31\xea\xdb\x27\x4b\xea\x5b\x6b\xcc\x90\xc2\xe6\x46\x5d\x73\xf0\x0c\x56\x14\xb6\x87\xb3\x74\x2a\xe5\x21\xd6\xca\xc5\x7f\x5d\x7e\x82\x24\x40\x50\x7b\xd0\x70\xb7\xd4\x76\xca\x66\x45\x09\x35\x21\x13\x56\x4e\x8c\xae\x3c\x15\x52\x45\xad\x85\x72\xc1\xa5\xa5\x20\xe5\xc0\x36\xe3\x4a\x38\xeb\x6d\x8e\xac\xe3\x7b\xc8\xe0\xc4\x43\x18\x8c\x09\x9a\x9a\x3d\xa9\xc8\xe0\x54\xc1\x09\x56\x24\x4f\xd0\xd2\x57\x57\x35\x6b\xd4\x0e\x59\x7d\xbb\x2b\x7b\x1e\x81\x57\x37\xac\xf8\x18\x40\x42\xc8\x9d\x16\xf7\x39\x25\x04\x0f\x5c\x17\x81\x61\x83\x2f\xf2\x07\x8b\xc2\x90\x5d\x33\xb1\xe2\x90\x61\x61\xb0\x93\xa9\xb6\x7c\x7f\xe8\xe0\xe3\xfb\x33\xc8\x51\x41\x63\x89\x9d\x27\xd7\x4a\xb1\x41\x38\x0d\xc8\x58\x36\xa4\x7b\x61\xbd\x01\x19\x2a\x85\x75\x66\x96\xc1\x3b\x6d\x2a\x74\x23\xf8\x3e\x0d\x0d\x3d\x39\x6d\x40\xd4\x3f\x8c\xbe\xaf\xb5\x71\x3f\xc0\x47\x25\x67\x4c\xb4\x80\xbb\x29\x29\xb8\x6c\xcf\x06\xaf\xe7\xbe\xfc\x64\xea\x3c\x83\xd3\x52\x69\x93\x56\xb2\x55\x9d\x56\x58\x12\x4c\x04\x49\x6f\xd7\x96\x5c\xb6\x7c\x83\x1b\x6f\x11\x42\xba\x34\x11\xe5\x19\xd6\x5b\x55\x73\x92\x56\x32\x2f\x66\x3f\x0f\xde\xdd\xa4\xd3\xde\x94\xf9\x48\xfc\x2f\xe6\x37\x80\x91\x4b\x85\xf5\xd0\x7a\xb7\x99\x53\xd3\x6e\x1a\x38\x49\x04\x58\x7f\xdd\xf0\x69\x8c\x5c\xd9\x43\x8f\x3d\x7f\xb2\x07\xef\xed\xd2\x90\xad\x4a\x3b\x5b\x87\x22\x3b\xf0\x10\xf9\x26\xc1\xd6\xfa\x0c\x6c\xf4\x1b\xf0\xbe\x33\x46\x4b\xaf\xbe\xe9\x11\x28\xa0\x5e\x21\xd0\xad\xfa\x16\x6c\xf1\x2f\xfe\x74\xc4\xd7\xcf\x6f\x39\x32\xf8\xb8\x12\xd9\x3f\x8a\x82\x60\x7f\xd8\x7a\x25\xc1\x6b\xd8\xbf\x55\x9b\x30\x0c\x93\x3d\xfa\xf2\x01\x85\x22\x13\xa8\xb1\x0d\x0b\x65\x1d\x2a\x27\xd0\x91\xcf\x40\xa2\x37\x47\x4b\xbe\x13\x6e\xba\xab\x15\x47\x3f\x9e\x40\x84\x91\x81\xf7\x9d\x18\x9b\x3a\x47\x16\xc1\xd1\x1f\x6c\xd4\xb5\x11\xda\x08\x37\xdb\x1e\xe5\xce\xe3\xca\xc8\x13\xad\x15\xa5\xe2\x88\x77\x47\xa2\x9c\xba\x94\x1f\xc4\x4c\x14\x12\x14\xea\xc4\x42\xfc\xc1\xc0\x48\x15\x58\x1d\xe2\xa3\x70\x3e\x3c\x8e\x89\x15\x68\x9b\x8a\x0a\x18\xcf\x3c\x8d\x82\x6a\x52\x05\xa9\x7c\xe6\x31\x55\xde\x92\xc9\xe0\xb3\xe5\x9b\x82\xff\x16\x25\xe7\xbd\x91\xa9\x50\x85\xe0\xc2\xc8\x06\x92\x1e\x4e\x97\x24\x10\x96\x55\x37\x21\xc3\x71\x50\xb3\xfa\xa5\xbe\x6b\x29\x50\xb1\xb4\xde\x42\xd1\x78\xa4\x5f\x16\xa2\x61\x3d\x64\x3e\xfd\x36\xa8\xca\x36\x8c\x25\x0d\xc6\xd4\x80\x8f\x54\xea\x80\xe9\x3e\xef\x14\xb7\x5e\x0b\x8a\x4a\xf4\xff\x8b\x10\x88\x5b\x1a\x42\xb9\x97\x2f\x02\xdd\x82\x26\xd8\x48\x17\x29\x79\xa0\x58\x3a\x0c\x5b\x0e\x34\x2a\x28\x9f\x8a\x8e\xf9\x9d\x4f\xdf\xc6\x04\xcf\x03\xa9\x75\xfb\x98\xad\xe5\x00\xbc\x28\xb2\x85\x3b\x21\x25\xef\x35\xa8\x6e\xa8\x00\x49\xf7\x22\xd7\xa5\xc1\x7a\x2a\x72\x94\x72\xe6\xdd\xb4\x00\xad\x80\x33\x11\x8e\xe1\x1b\x40\x83\x33\xc3\x72\xa1\x98\x88\x96\x96\xca\x8c\x07\x07\x4f\x4b\xb9\x21\xb7\x1d\x88\x2f\xc3\xba\x2e\xe5\x62\x78\x63\x15\x47\x02\xc1\x46\xa2\xcd\x25\xb4\xc1\x3c\x67\x47\xf2\xa6\xab\x95\xe3\x44\x6d\xa9\xa8\xca\xe0\xd4\xb1\x15\x8d\x39\xef\x75\x1a\x6e\x88\xea\x60\x69\x5c\x5e\x83\xad\x50\xca\x01\x17\xc4\x39\x01\x61\x3e\x0d\xea\x54\x14\xd1\x8c\xc0\x19\x41\x05\x4c\xb4\x01\xba\x25\x8e\x17\xf1\x6e\x48\x31\x9a\xf5\x6a\x03\x8d\x59\x28\x4e\xd3\x47\x38\xaa\x7a\xc2\xe9\x66\x35\xb6\x31\x65\xbb\x26\xbb\x58\x14\x81\x3b\x55\xbc\xb6\x6b\x2e\x3c\x80\x75\xc8\x52\x2f\x9d\x41\x47\xe5\xf6\x58\xf3\x79\x61\x79\x5b\xe5\x4c\xf5\x5d\xca\x77\x57\x9c\x9c\x03\xaf\x4d\x77\x5b\x08\x9b\xb3\xa7\x53\xc1\x49\x86\x15\x36\xdc\x29\xaa\x50\xb6\xdc\xa2\x0c\xa6\x90\x08\xd7\x5a\x4a\xef\xf2\x8d\x09\x35\x12\x57\x33\xa8\x80\xaa\x31\x15\x05\xd7\x40\x49\x94\x1e\x98\xdb\x02\xb1\xdb\x50\x30\xe1\xc3\xb9\x96\x72\x33\x8a\xf5\xb2\xd8\x85\x0d\x7f\x92\x02\xfa\x57\x2c\x43\x5f\xd2\x98\xb0\xad\xcf\x14\xe4\xc8\x54\x42\x51\x30\x0d\x51\x51\xa7\xd8\x31\xb9\x3b\x22\x05\xf9\x94\xf2\x9b\xd6\x95\x62\xd5\xb8\x74\x6b\xb1\x64\x5d\x8c\x58\x5d\x41\xae\xa5\xf4\x65\xa7\x25\x02\x31\x01\x04\x45\x77\x69\xcf\x92\x8f\xce\x05\x7b\xbc\x45\x21\x71\x2c\xc9\xa3\x66\xfb\x6d\xb0\x50\xbd\x26\x3c\xaf\x1b\x29\xa9\xf0\xf7\x5d\x5e\x9c\x9f\x80\x33\x38\x99\x88\x9c\xa7\x0a\x61\x28\x77\xe1\xc0\xbd\x47\x58\xe7\xbd\x8b\x37\xb6\xc6\x23\xac\x43\xd7\xac\xdc\xd1\x86\x0b\xde\x74\xb1\xb9\x56\xa1\x97\xb6\x3d\x3e\x5e\xb4\xa5\x68\x80\x02\xc7\xd9\x09\xfb\xc5\x62\xd7\x24\x83\x0f\xda\x51\xf0\x90\x33\xb2\x0c\xbb\x5e\x41\x17\x84\x56\xab\xb9\xe8\xca\x44\xb4\x11\xa5\x50\x28\xe3\xa1\x7c\xcd\xc9\x35\x8c\xd0\x6a\x00\x77\x53\x91\x4f\x7d\xb5\x3b\x26\xa8\x44\x69\xd0\xb5\x41\xb1\x93\x3b\xa2\x4b\xc4\xc5\x49\xc3\x45\x67\x06\xc7\x6a\xe6\xef\x7b\x42\xc8\x03\x4c\xd9\x19\x5d\x34\x39\xe7\x4b\x1c\x60\xb9\xac\xea\x88\xfc\xa3\x61\x74\x41\x6b\xfb\x27\x89\x49\x4a\xf4\x2c\x3b\x00\x0a\x69\x7d\x4c\xd7\x8a\x00\xb9\x56\x75\xad\x4d\x36\xc6\x78\xf4\x49\x0a\xf6\x60\x71\x7c\x7e\x0a\xa9\x31\x9d\xc1\x70\x38\x84\x4f\x3c\x6c\x9d\x69\x72\x8f\x2f\xec\x42\xaa\x88\x48\x11\xac\xcf\x1f\x12\x7d\xda\xe9\x8f\x01\x18\xb4\x1e\x52\xb0\x1a\xdd\x14\xb2\xa0\xf8\x6c\x4e\x15\xc0\x75\x24\xd0\x3d\x56\xb5\xb7\x7b\x0e\xdd\xef\xb4\xbe\x0c\x37\x14\x18\xfe\xe9\x0f\x7a\x78\xb8\x6c\x14\x7a\xcc\x39\x6a\x68\x8e\x07\xdb\x98\x68\xfd\xc4\x2e\x9e\x29\x4b\x9b\x7f\x56\xfa\x4e\xad\x13\xc1\xf3\x44\x43\x23\xb8\xda\x3f\x4e\x2e\x78\xb5\x3f\x80\xab\xfd\x73\xa3\x4b\xce\x5d\x85\x2a\x79\x80\x2d\xeb\x6a\xff\x2d\x95\x06\x0b\x2a\xae\xf6\x13\xe9\xff\xa8\xd1\xe5\xd3\x33\x32\x25\xfd\x4c\xb3\xd7\x9e\xe0\xc2\x54\x82\x87\xd7\x15\xaf\x69\xe7\x18\x93\x19\xb8\x5e\x73\xe1\x37\x3f\x78\x86\xf5\x02\xa1\x93\xce\x00\xbf\x5c\x57\xe4\xf0\xf6\x28\xeb\xae\xfa\xd7\xdf\xac\x56\xa3\xab\xfd\xee\x4c\x03\x5d\xb1\xc9\xd4\x6e\x76\xb5\x0f\x0b\x12\x8c\xae\xf6\xbd\x0c\x69\x3c\x09\x3d\xba\xda\x67\x6e\x3c\x6c\xb4\xd3\xe3\x66\x32\xba\xda\x1f\xcf\x1c\xd9\xc1\xd1\xc0\x50\x3d\xe0\x4c\xea\x75\xc7\xe1\x6a\xff\x57\xb8\x52\x49\x68\xed\x38\xcf\xf5\x37\x6d\xe1\xaf\xfd\x0d\x78\xbf\x01\x14\x36\x17\x77\x5c\xbd\x49\xb4\xee\x93\x41\x65\x45\x6a\xe2\xf6\x2e\xad\x42\x30\xe8\x9d\x37\x3e\x40\xf4\x4e\x07\x2b\xe9\x9d\xee\x81\xd6\x5d\x60\x6d\xf5\x0c\xfd\xf0\xb6\xe0\xdb\xab\x1b\x53\xbe\xc3\x33\x01\xd9\x62\x66\x18\xed\xc2\xb5\xab\xd9\x51\x39\xc9\x67\xff\x8f\xc1\x8f\xd3\x49\xe5\xef\x2d\x8b\xce\x3d\x4d\x69\x79\xdb\x80\x69\x54\x41\x46\xce\x38\xdd\xe8\xa8\xe6\x53\xae\x06\x8a\x0c\x18\xb2\x42\x71\x64\x41\x69\x07\x37\xec\x60\x1e\xba\x14\x34\x36\x75\x1b\xbd\x5c\x2d\x45\x0e\x2c\x21\x20\x44\x32\x1e\x05\xf3\x9c\x6a\xe7\x61\xb0\x57\x15\x5b\x4b\x6b\xfe\x4c\x62\x4b\x8a\xd3\xae\xa1\xeb\x37\x8f\x68\x1c\x3b\x2a\x3e\xae\x8e\x2d\xb3\xa6\x42\xc6\x15\x2c\x58\xde\x6e\x2e\xd4\x76\xa1\x16\x0b\xf1\x16\xc7\xba\x09\x11\xb0\xbb\x87\xa8\xea\x88\x32\x3e\x6b\xab\xdd\x2c\x1e\xeb\x6f\x1e\xbe\xc2\xfb\xf7\xa4\x4a\x37\x1d\xc1\xcb\x17\xff\xf9\xea\xdb\x9e\x85\x21\x68\x52\xf1\x13\x29\x0a\x19\xe4\x8e\x6a\x58\xdd\x38\xd7\x2f\xf6\xe7\xec\xde\x59\xca\x6e\x4d\xac\x75\xe7\xed\xf2\x0e\x7d\x33\x2f\x62\x69\x53\xb3\x5e\x18\x05\x42\x23\x22\xa7\x01\x67\x50\x6b\x89\x89\x36\xb8\xcb\x19\x1c\xbd\x18\xc0\x38\xaa\x78\x35\xac\x7f\xb9\xbf\xce\xd6\x88\x2c\x2c\x7c\x37\x58\x92\x47\x58\xe0\xab\xd2\x13\x6f\x38\xa1\xfe\x34\x14\x60\x32\x75\x0a\x56\x61\x92\x5a\x79\xb7\x5d\x5c\x5f\x95\x99\x3e\xc9\x6c\x85\x72\xaf\xbe\xe9\xbf\x5f\xa1\x44\xd5\x54\x23\x78\xde\xb3\x24\x84\xb4\x1d\x6f\x33\x2c\xee\xb2\x04\xe4\xd0\x55\x1a\xac\x38\x1f\xca\x41\x14\xa4\x9c\x98\x08\x32\xf3\xa6\xed\x7b\x01\x61\x23\xe3\xfe\x82\x16\x9f\xd8\x18\x87\xe6\x8c\xfd\x3c\x24\x41\xc6\xa3\x33\xeb\x53\x70\xbe\x3a\x17\xa0\x66\x35\x05\x6f\x08\xd5\x0d\xd0\x7d\x1d\xf2\xd8\x58\xec\xfb\x97\x1a\x42\x25\x54\x69\x23\x4b\x11\x1b\x49\x01\x8d\xef\xa6\xe4\xa1\xc7\x3f\x2a\xc5\x3d\x26\x34\x69\x44\xe1\x8b\x2a\x84\xb2\x41\x83\xca\x71\x8d\x7b\x7c\x7e\x1a\x12\xf8\xd0\xb5\xe8\x42\x1e\x76\x0f\x12\xc9\x1b\x83\xab\x86\x60\xc5\x22\xc6\x47\x0c\xef\xb1\xff\x9c\xab\x1e\x3d\x7f\xb1\xf1\xca\xdb\x75\xbd\x8b\x6a\x74\x8e\x8c\x1a\xc1\xff\x7d\x39\x1e\xfe\x2f\x0e\xff\xb8\x7e\x1a\xff\x79\x3e\xfc\xee\xff\x07\xa3\xeb\x67\x73\x5f\xaf\x0f\xde\xfc\x7b\x0f\xa5\xf5\x99\x7e\x8f\xf9\x44\x10\x49\x49\x64\xba\xd1\x81\x47\x18\x3d\x81\x4f\xa6\xa1\x01\xbc\x43\x69\x69\x00\x9f\x95\x87\x86\xbf\xa9\x34\x52\x4d\xb5\xa9\x12\x1c\xc2\x3e\x73\x5d\x9f\x7c\xb4\x4b\xbc\x48\x9b\xd7\x44\x71\x37\xd5\xb6\xbb\x29\x29\xf5\x21\xe6\x22\xcd\xdc\xc3\x97\x7f\x29\x61\x47\xd2\x59\x4c\x7f\xb3\x5c\x57\x87\x73\x0f\x63\x9c\x77\x9f\xa1\x9a\x41\x17\xd6\x42\xb2\xba\x6c\xe9\xd6\x71\x6c\xc2\xdc\x68\x6b\xdb\x97\x3d\x0b\x52\xdc\x10\x1c\x77\x45\x25\x07\xcb\x31\xe5\xe8\x13\x75\x33\x16\xce\x60\xe8\x08\xa7\xdc\xb2\x6b\x37\x4d\x1a\x09\x4f\xb9\x96\xcd\x94\x2e\x68\x35\xba\x1e\xc4\xd6\xee\x58\x48\xe1\x66\xa1\xce\xce\xb5\x9a\x48\x11\xeb\x83\xaa\xd6\xc6\xa1\x72\xb1\x09\x49\x25\xdd\x83\x70\x50\x71\xce\x49\xfe\xf9\xe9\x69\xa1\xec\xd1\xd1\x8b\x97\x97\xcd\xb8\xd0\x15\x0a\xf5\xae\x72\x87\x07\x6f\x9e\xfe\xde\xa0\xe4\xc8\x53\x7c\xc0\x8a\xde\x55\xee\xe0\x9f\x83\xc5\xa3\x57\x3b\x78\xd1\xd3\x2f\xc1\x57\xae\x9f\x7e\x19\xc6\xff\x9e\xa5\xa1\x83\x37\x4f\xaf\xb2\x8d\xf3\x07\xcf\xf8\x0c\x73\x1e\x78\xfd\x65\xd8\xb9\x5f\x76\xfd\xec\xe0\xcd\xdc\xdc\xc1\x3a\x67\xbc\x1f\xde\x34\x63\x32\x8a\x1c\xd9\x21\x57\x03\xc3\x0a\xeb\xe1\x0d\xcd\x7a\x9c\xb3\x37\x1d\x5d\x25\x14\x34\x56\x61\xdd\xff\x4e\x76\x41\x13\x32\xa4\xf2\xb5\x46\xfe\x37\x9f\x67\x14\xf6\xa4\x64\x61\xca\xff\x04\xe7\x11\x2d\x29\xc6\x9d\xd0\x86\xdb\x94\x4e\xef\x60\x2d\xbb\xe5\x8f\xaa\xe7\x61\x6c\x27\x26\xed\x39\x1f\x4d\x21\xf9\x77\xcf\xef\x2f\x76\xa6\xd3\x88\xde\x4a\x6b\xb1\xc1\x79\xfa\x36\xa4\xbe\x3e\xf4\xf8\x74\x6e\xaa\xb9\xce\x6b\x94\xf8\xbd\x21\x38\x7d\x1b\xe3\xd1\x00\x84\xca\x65\x53\x70\xa6\xf0\xf9\xf3\xe9\x5b\x2e\xee\x7f\x8c\xe1\xe6\x8e\xa0\xd0\xea\x89\x83\x8f\x1f\xde\xff\x8f\xef\x14\xf8\x15\x83\x00\xe8\xe1\xb1\x0a\xa5\x08\x3f\xdd\x48\x00\x0c\x3f\x12\xd3\x8a\x9c\x73\xac\xdb\xe6\x8a\x0f\x77\xaa\x80\x29\xc9\x9a\x13\x88\x1b\x02\xdb\x98\x28\x1d\x13\xf6\xb3\x5e\xd7\x50\x68\x0f\xdd\x25\x39\x6f\xe4\xd2\xff\x04\xe1\x31\x4a\x8b\x8f\xe2\x42\xab\x4b\xce\x02\xbf\x82\x7f\xb0\x21\x7f\x8c\x39\xab\xe7\xf1\x08\x67\xd8\xf0\x4b\x80\xad\x27\x84\xe8\x4c\x27\xe1\xa4\x5f\xdd\x93\x56\xce\xfb\x28\x8e\xa1\xd9\xe9\x9f\x3d\x2f\xb6\x34\xa7\x57\x7e\x9c\xb6\x58\x3a\x2f\xfd\x20\xcb\x37\x5e\xdb\x97\xd3\x29\x5a\x18\x13\x29\xdf\xeb\x0d\xad\x41\x52\xd1\xea\xa8\xeb\xd2\x36\xf5\xd0\xe9\x61\xb1\xfe\xf2\xb6\x68\x6e\xbb\xd6\x36\x54\xae\x0b\x67\x3b\x7e\x70\xa1\x7a\x37\x9d\xad\xd3\x81\x0d\xbd\x4e\x2e\xbc\xda\x1c\xe4\xa1\x07\xeb\x2f\x4c\x96\x5a\xbe\xbe\xb2\x88\x4d\x8d\x58\x67\xac\x8a\xc4\xd5\xe3\x42\x67\xc3\x69\xff\xd4\xb7\xd8\xf5\x7b\xb8\x8c\xe1\x9a\x2f\xc9\xdc\x8a\x47\x81\xdf\x36\xc7\xf4\xbf\x3d\xa4\xe2\xf8\xeb\xbb\x15\xa7\x5e\x8f\x66\xe2\xdb\x7f\xb9\xde\xf2\xb6\xb3\x81\x80\x0d\x1a\xec\xfb\xf9\xc8\x43\x69\x3c\x14\x2c\x43\x34\x19\x81\x33\x4d\xd2\x8e\x75\xda\xf8\xf7\xf8\xf9\xb1\x66\xdc\x26\xca\x1d\xf5\x58\x03\xc1\x9f\x7f\xed\xfd\x2b\x00\x00\xff\xff\x50\x85\x51\xd2\xc8\x2d\x00\x00") func operatorsCoreosCom_catalogsourcesYamlBytes() ([]byte, error) { return bindataRead( @@ -104,7 +104,7 @@ func operatorsCoreosCom_catalogsourcesYaml() (*asset, error) { return a, nil } -var _operatorsCoreosCom_clusterserviceversionsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xfd\x7b\x73\xe4\xb6\x95\x30\x8c\xff\x9f\x4f\x81\x92\xbd\x8f\xa4\x75\x77\x6b\x26\xc9\xe6\xb7\x3b\xbf\xbc\xeb\xd2\x4a\xb2\xa3\xd7\x33\x1a\x95\x24\xdb\x4f\xca\xf1\x3a\x68\xf2\x74\x37\x56\x24\xc0\x00\x60\x4b\x9d\xc7\xcf\x77\x7f\x0b\x07\x00\x09\xf6\x45\xea\x26\x39\xa3\x8b\x81\x54\xc5\xa3\x26\x09\x82\x07\x07\xe7\x7e\xa1\x05\xfb\x01\xa4\x62\x82\xbf\x23\xb4\x60\x70\xaf\x81\x9b\xbf\xd4\xe8\xf6\xdf\xd5\x88\x89\xa3\xf9\xdb\xdf\xdd\x32\x9e\xbe\x23\x27\xa5\xd2\x22\xbf\x02\x25\x4a\x99\xc0\x29\x4c\x18\x67\x9a\x09\xfe\xbb\x1c\x34\x4d\xa9\xa6\xef\x7e\x47\x08\xe5\x5c\x68\x6a\x7e\x56\xe6\x4f\x42\x12\xc1\xb5\x14\x59\x06\x72\x38\x05\x3e\xba\x2d\xc7\x30\x2e\x59\x96\x82\xc4\xc9\xfd\xab\xe7\x6f\x46\x7f\x1a\xbd\xf9\x1d\x21\x89\x04\x7c\xfc\x86\xe5\xa0\x34\xcd\x8b\x77\x84\x97\x59\xf6\x3b\x42\x38\xcd\xe1\x1d\x49\xb2\x52\x69\x90\x0a\xe4\x9c\x25\xe0\x9e\x57\x23\x51\x80\xa4\x5a\x48\x35\x4a\x84\x04\x61\xfe\x93\xff\x4e\x15\x90\x98\x55\x4c\xa5\x28\x8b\x77\x64\xed\x3d\x76\x5e\xbf\x58\xaa\x61\x2a\x24\xf3\x7f\x13\x32\x24\x22\xcb\xf1\xdf\x0e\x08\xf6\xf5\xd7\xf6\xf5\x0e\x72\x78\x3d\x63\x4a\x7f\xb7\xf9\x9e\xf7\x4c\x69\xbc\xaf\xc8\x4a\x49\xb3\x4d\x1f\x82\xb7\xa8\x99\x90\xfa\xa2\x5e\x96\x59\x46\xa2\xe6\xe1\xbf\xdd\x8d\x8c\x4f\xcb\x8c\xca\x0d\xb3\xfd\x8e\x10\x95\x88\x02\xde\x11\x9c\xac\xa0\x09\xa4\xbf\x23\xc4\xbf\xcb\x4e\x3e\x24\x34\x4d\x71\x23\x69\x76\x29\x19\xd7\x20\x4f\x44\x56\xe6\xbc\x7a\xb9\xb9\x27\x05\x95\x48\x56\x68\xdc\xac\x9b\x19\x20\xd4\x88\x98\x10\x3d\x03\x72\x72\xfd\x43\x75\x2b\x21\xff\xa3\x04\xbf\xa4\x7a\xf6\x8e\x8c\xcc\x06\x8c\x52\xa6\x8a\x8c\x2e\xcc\x12\x82\xbb\xec\x6e\x9e\xda\x6b\xc1\xef\x7a\x61\xd6\xab\xb4\x64\x7c\xfa\xd0\xfb\xdd\x47\x6c\xb7\x84\x79\xb0\x4f\xe1\xeb\x7f\x58\xf9\x7d\xdb\xd7\xfb\xcf\xa7\xe6\xcd\x44\xcf\xa8\x26\x7a\xc6\x14\x11\x1c\x88\x84\x22\xa3\x09\xa8\x07\x16\xb4\xe6\x16\xbb\xa2\xab\xd5\x0b\x1b\x96\x14\x4e\xa9\xa9\x2e\xd5\xa8\x98\x51\xb5\x0a\xe2\xcb\xa5\x5f\xd7\x4c\x67\x6f\x9c\xbf\xa5\x59\x31\xa3\x6f\xdd\x8f\x2a\x99\x41\x4e\x6b\x1c\x10\x05\xf0\xe3\xcb\xf3\x1f\xfe\x70\xbd\x74\x81\x34\xa1\xb3\x16\xfb\x09\x53\x06\x54\x48\x41\x88\x27\x21\xb8\x77\x8b\x02\xc8\xdf\xd7\x3e\x73\x5d\x40\xf2\xf7\xd1\xca\xca\xc5\xf8\x7f\x20\xd1\xc1\xcf\x12\xfe\x51\x32\x09\x69\xb8\x22\x03\x20\x4f\x96\x96\x7e\x36\xf0\x0f\x7e\x2a\xa4\x21\x0b\x3a\x38\xf2\x76\x04\x74\xb1\xf1\xfb\xd2\xd7\xee\x1b\x90\xb8\x6f\x4c\x0d\x49\x04\x85\xf8\xe8\x30\x0e\x52\x07\x47\x8b\xa7\x4c\x19\xe4\x90\xa0\x80\x5b\x22\x89\x28\xc4\xdd\x37\x8d\x88\x01\x00\x48\x65\x08\x40\x99\xa5\x86\x76\xce\x41\x6a\x22\x21\x11\x53\xce\xfe\x59\xcd\xa6\x88\x16\xf8\x9a\x8c\x6a\x50\x9a\xe0\xa9\xe5\x34\x23\x73\x9a\x95\x30\x20\x94\xa7\x24\xa7\x0b\x22\xc1\xcc\x4b\x4a\x1e\xcc\x80\xb7\xa8\x11\xf9\x20\x24\x10\xc6\x27\xe2\x1d\x99\x69\x5d\xa8\x77\x47\x47\x53\xa6\x3d\xd5\x4f\x44\x9e\x97\x9c\xe9\xc5\x11\x12\x70\x36\x2e\x0d\xe1\x3c\x4a\x61\x0e\xd9\x91\x62\xd3\x21\x95\xc9\x8c\x69\x48\x74\x29\xe1\x88\x16\x6c\x88\x8b\xe5\x48\xf9\x47\x79\xfa\x85\x74\x9b\xac\xf6\x97\xc0\xb7\x16\x9d\x89\x27\xb0\x0f\xc2\xda\x90\x57\x8b\x49\xf6\x71\xfb\x2d\x35\x48\xcd\x4f\x06\x2a\x57\x67\xd7\x37\xc4\x2f\xc0\x9d\x4b\x84\x70\x7d\xab\xaa\x81\x6d\x00\xc5\xf8\x04\xa4\xbd\x73\x22\x45\x8e\xb3\x00\x4f\x0b\xc1\xb8\xc6\x3f\x92\x8c\x01\xd7\x44\x95\xe3\x9c\x69\x85\x38\x07\x4a\x9b\x7d\x18\x91\x13\x64\x7a\x64\x0c\xa4\x2c\x52\xaa\x21\x1d\x91\x73\x4e\x4e\x68\x0e\xd9\x09\x55\xf0\xc9\x41\x6d\x20\xaa\x86\x06\x7c\xdb\x03\x3b\xe4\xd9\xab\x0f\xac\x9c\x31\x42\x3c\x2f\xdd\xb8\x3b\x1b\xcf\x30\x49\x21\xc9\xa8\xb4\x42\x01\xd1\x90\x65\xe4\xe3\xfb\x0f\x64\x26\xee\x0c\x16\x33\xae\x34\xcd\x32\x3c\x05\x8e\x3f\x5b\x72\x9a\x50\x4e\x72\xca\xe9\x14\x08\x2d\x0a\x45\x26\x42\x12\x4a\xa6\x6c\x0e\xdc\x9f\xae\xd1\xb6\x8b\xdf\x44\x24\x88\x25\xee\x6b\x19\x94\xbf\xea\x16\xb8\x74\x65\x13\xd9\x30\x63\x45\x06\x7a\x00\x6a\xc7\xf5\xbd\x88\xd9\x9c\x94\x5c\x69\x59\xe2\x66\xa7\xe4\x16\x16\x0e\xc9\x73\x5a\x10\xa5\x85\xf9\xf1\x8e\xe9\x19\xa1\x21\x82\x53\x8d\x58\x3c\x06\xa2\x40\x93\xf1\x82\x18\x31\x0e\x09\x82\x16\x22\x43\x6a\x81\xcf\x22\x61\x90\xa0\x25\x83\x39\x10\x2a\xc7\x4c\x4b\x2a\x17\x15\x36\x2c\x03\xf4\x11\xa0\xe2\xc7\x06\xc2\xc3\x66\x90\x90\x87\x70\x91\x58\x72\xeb\x64\x97\xb4\x12\x2c\xb7\x80\xde\xe5\xb9\xc3\xb7\x5a\x1c\x55\x0e\xdf\x40\x11\x83\x57\x4e\x3e\xa8\xe4\x5a\x7c\x93\x43\xac\x94\x08\x59\x61\x86\x01\x5b\x88\x84\x63\x30\xe4\x44\x52\x6e\x2e\xac\x45\xee\x16\xd0\x7a\x08\x6d\xcc\x10\x77\x7c\x1d\x8e\x86\x73\x53\x29\x1b\x02\x53\x38\x98\x86\x7c\xc3\xcc\x0f\xc2\xae\xfa\xd9\x2c\x70\xce\x52\x30\x40\xd4\x94\x59\xd4\x31\xa7\x95\x8e\x45\xa9\x2d\xec\xdc\x2d\x29\x99\x33\x4a\xe8\x74\x2a\x61\x8a\x08\xbc\xf1\xb5\x8f\xc0\xc4\x8e\xcd\x07\xb4\x1e\x43\x2b\xc9\x3f\x78\x87\x21\x83\x0f\xde\xc0\xd7\x1d\xf3\xf0\x86\x55\x61\xb1\x39\x1e\xdb\x43\x3b\x68\x62\x60\xe2\x41\x2b\xe4\x83\x37\x6f\xb3\xb7\x76\x3c\xb2\xc3\x76\x34\xf7\x79\x69\x21\xee\xea\xd8\x9c\x8f\x9a\x34\x1b\x72\x80\x37\xd6\xc4\x77\x0c\xa4\x00\x39\x11\x32\x37\x07\x85\x13\x4a\x12\x2b\xbf\x55\x84\x07\x49\x23\x4f\x1e\x02\x27\xd9\x76\xff\xed\xd8\x06\x0b\xec\x18\x92\x82\xea\xd9\x23\xb7\x6d\xb7\x55\x76\x84\x40\x7b\xf4\xe6\x47\xa8\xd9\xca\xdc\x35\x87\xe9\x7d\x6e\x03\x86\xde\x27\x45\x9e\xb3\xcd\xac\x0d\x54\xbb\xa2\x77\x1f\x40\x29\xc3\xb2\x51\x4a\x93\xf4\x8e\x00\x4f\x84\x21\x16\xff\xef\xf5\xc7\x0b\x3b\xed\x88\x9c\x6b\xc2\xf2\x22\x83\xdc\x08\x62\xe4\x03\x95\x6a\x46\x33\x90\xc8\x9d\xbe\xe7\x79\xe3\x6f\x87\x89\xa5\x82\xd4\xd0\xa2\x14\x32\xba\xb0\x93\xa5\x90\x88\xd4\xd0\x68\x21\x49\x61\x04\xdc\xbc\x28\x35\x10\x6a\xaf\xe2\x7b\x19\x9f\xae\x23\xd2\x9d\x40\x43\x8c\x24\x92\x53\xfd\x8e\x8c\x17\xfa\x31\xd4\x27\xe4\x7e\x98\x6e\x4b\x03\xc2\xc5\x3c\x4e\x09\xec\xd8\x8a\x1e\x84\x13\x3f\xfa\x95\x46\x08\xa5\x8c\x83\xbc\x14\x52\x6f\x43\xb4\x8c\xf2\x31\x05\xf9\xe0\x9d\x1e\x64\x8c\xeb\x3f\xfc\xfe\x81\x3b\x53\x28\x32\xb1\x30\x78\xf1\xf8\x59\xd9\xf2\x7b\xb6\x3e\xd7\xdb\xce\xb7\xed\x59\xde\x72\x3e\x6b\x9c\xea\x63\xa6\x75\x0a\x54\xab\x89\x78\x5f\xdf\x56\x29\x81\x4f\xc6\xfc\x2e\xcf\xbd\xb5\xe1\x0a\x26\x20\x81\x27\x8e\x36\x7d\x57\x8e\x41\x72\xd0\xa0\x02\x41\x7a\x51\x38\x4a\x63\x64\xc1\x65\x76\xf7\x34\x5c\xee\x11\x79\xc6\xdf\xf6\x88\x54\xe3\x6f\x7b\x4c\xb6\xb1\x63\x17\xb6\xf9\x38\xd2\xd9\xb1\x13\x8d\x7d\x1c\x01\x5b\x4c\x3a\x5f\x6f\xce\xe9\x30\xaf\xd1\x89\x9f\x81\x84\x77\xdd\x58\x46\x43\xbe\x9b\x30\xc8\x52\xc2\x8c\xf0\x66\x16\x4b\xc6\x99\x48\x6e\x9d\xdd\xf2\xea\x94\x28\x61\xc5\x3d\x23\xe1\x1b\x46\x9b\x08\xae\xca\x1c\x08\x7b\x0c\x83\xa3\x48\x17\x45\xba\x28\xd2\xbd\x14\x91\xce\xfa\x07\x9e\x03\xa5\x5a\x5a\xc8\x46\x5a\x85\xf7\x45\x6a\xf5\xd0\x88\xd4\x0a\x47\xa4\x56\x8f\x8c\x17\x47\xad\xb6\x92\xd3\x1e\x9d\xeb\xb1\x83\x1c\x8d\xa9\xd1\x98\x1a\x8d\xa9\x6e\x44\x5e\xe6\x46\xe4\x65\x91\x97\x45\x63\xea\x43\x53\x46\x63\xea\x8e\x13\x45\x63\x6a\x34\xa6\x46\x63\x6a\x34\xa6\x3e\xf6\x31\x51\xa4\x8b\x22\x5d\x14\xe9\xb6\x5d\x4c\x34\xa6\x46\x63\xea\x43\x23\x52\xab\x60\x44\x6a\xf5\xc0\x78\xdd\xd4\xaa\xbb\x31\x35\xc9\x80\xf2\xf5\x4a\xd5\x52\xfc\x37\xde\x87\xa2\x11\x9b\x30\x97\x07\xe1\x9e\x26\x63\x98\xd1\x39\x13\xa5\x24\x77\x33\xe0\x3e\x65\x87\x4c\x41\x2b\x83\x05\xa0\x61\x9d\x60\xfe\x08\xad\x79\x98\xbe\x0c\x09\x70\x3a\xce\xd6\x4e\xfc\x18\x29\x71\x4f\x3e\x6c\x3c\x1e\x0b\x61\xbe\x6e\x15\x62\xa8\xea\x78\x4d\x67\x97\x78\xe6\xbd\x4d\x39\x76\xeb\x83\x9a\x4f\xae\x4e\xfb\x0a\x65\x26\x7f\xe3\xe4\xbc\x9a\x95\xa0\x65\x1a\x13\x25\x0c\x0f\x31\xbf\x7e\xbc\xe3\x90\x62\x92\xdb\x80\x30\x6d\x6e\x30\x87\x9e\x25\x4c\x67\x8b\xea\xc5\xa3\xbd\xdd\x37\xf1\x19\x85\x44\x9f\x5c\x9d\x6e\x6f\xbe\xf7\x1b\xf0\x39\x2c\xf5\xd1\x0e\x1f\xed\xf0\xd5\x88\x62\x50\xcb\x49\xa3\x18\xf4\xc0\x78\xdd\x62\xd0\x73\xb7\x5b\x47\x6b\x33\x89\xd6\xe6\x87\x6f\x8b\xd6\xe6\x68\x6d\x8e\xf6\x9b\x0d\x23\x0a\x2e\x38\xa2\xe0\xf2\xc8\x78\x71\x82\x4b\xb4\x36\x47\x6a\x15\xa9\x55\xa4\x56\x2f\x83\x5a\xbd\xc4\xd0\xdd\x68\xf4\x8b\x46\xbf\x68\xf4\x8b\xdc\x28\x72\xa3\x47\xc6\x8b\xe3\x46\xd1\xe8\xb7\xeb\x44\xd1\xe8\xb7\x76\x44\xa3\xdf\x23\x23\x1a\xfd\xa2\xd1\x6f\xc3\x88\x82\x4b\xcb\x49\xa3\xe0\xf2\xc0\x78\xdd\x82\x4b\x34\xfa\x45\x6a\x15\xa9\x55\xa4\x56\x2f\x83\x5a\x75\x37\xfa\x3d\x72\x92\x1e\x7e\xf6\xe1\x93\xf2\xe0\xb3\x2c\x79\xe8\x85\x9b\x20\xfa\x00\x04\x1f\x25\x5c\x8f\x91\xab\x21\x19\x53\x05\x7f\xfa\xe3\x4a\xdd\xf2\xf0\x96\x1c\x52\x46\xcd\xab\xd6\xde\xf1\x38\x09\xab\x5f\xb1\x79\xcf\xb6\xd8\xfb\x6a\x19\x2d\x67\x71\x85\x95\x1f\x0d\x8a\x35\x5b\x9b\x9e\xdb\x9b\xaf\xb5\xa4\x1a\xa6\x8b\xa0\x90\x37\xda\x64\x6b\xce\xc3\x37\x14\xa0\xaf\x94\xc6\xbb\x19\x48\xc0\x87\x7c\xe9\x69\xe5\x27\x65\xaa\x8a\x5e\x4e\x5b\x14\xf7\x7d\x2c\x1c\xd9\xbf\x67\xcd\xe5\xc7\x36\x6d\x5d\xf5\xed\xb5\xc0\xf2\x00\x3a\xb5\xd6\xeb\xd3\x2a\x05\x78\x19\x62\x05\x95\x86\x42\x7a\x2b\x37\x32\xed\xe0\xee\x25\x78\x6f\x22\x8a\x5b\x70\xea\xc7\x39\xf4\x30\xc8\x54\xde\x64\x59\xdf\x86\x31\xbb\x1e\x18\x97\x20\x73\xa6\xd4\xa6\x80\xeb\xe6\xd2\x1f\x23\x9b\x5b\x90\xcb\x0d\xf0\xf7\x5f\x14\x2c\xa7\x12\x9f\x70\x07\xe4\x98\x26\x44\x96\x99\x11\xa6\x78\x4a\x5c\xf9\x6b\x42\x93\x44\x94\x5c\x13\x0e\x90\x5a\xcb\xc6\x3a\x5c\xdd\x82\xd8\x6e\x21\x3f\x6d\x2b\x3d\x0d\xed\x3a\x1f\xbd\xcb\x7d\xc3\xb1\xfd\x84\xb5\x05\xd5\xc3\xb1\xbd\xb4\x85\xaf\x7f\x9c\x6b\xed\xc2\x0a\xb7\x66\x84\x8d\xfd\xbd\x14\x19\x4b\x16\x57\x65\x06\x64\x26\xb2\x54\x61\x59\x7f\xc3\xdd\x2b\x87\x43\x28\x22\x17\x78\x37\xae\x7e\x40\xc6\xa5\x26\xa9\x00\x45\xb8\xd0\xbe\x30\x40\xe3\x71\xeb\x62\xba\x9b\xd9\xd6\x0e\xe6\x21\x42\x8b\x22\xc3\x54\x0a\x61\x84\x96\xbb\x19\x4b\x66\xb6\x5f\x4d\x41\x13\x58\x77\xdb\xf6\xd2\xcb\x56\xe2\x35\xd9\x49\xc4\x26\xde\x66\x35\x7e\x0c\x55\xc8\x8e\xb2\x36\xb1\x25\xe2\xbf\x95\xa2\x2c\xb6\xbc\x7d\xd5\xb2\x68\x9f\x36\x54\x5e\x2f\x35\xb0\xf1\x17\x9d\xcb\xc8\xee\x8d\xbd\xad\x32\x89\x8e\x08\x39\x9f\x90\xbc\xcc\x34\x2b\x32\x7c\xc4\x56\x1b\x50\x84\x4a\xa8\xf9\xc6\x80\x50\xbe\xf0\x1e\x28\xd7\x26\x02\x52\x42\xa7\x66\x46\x8d\xfd\x61\x7c\x49\x7a\x5e\xe6\x60\x4e\x73\x5a\xbf\x04\xd5\x29\xbe\xa8\x67\x27\x77\x2c\xcb\x8c\x3c\x4b\xb3\x4c\xdc\xad\x67\x4b\xeb\xc6\x6e\x42\x21\xd9\x4d\x30\x24\xbb\x8b\xc0\x84\x70\xc1\xbd\x69\xf7\xfb\xab\xf7\xed\x36\xf1\xa2\x39\x87\xeb\x05\x02\xda\x80\xb4\xa0\x52\x33\x9a\x91\x52\x66\xca\xee\x23\x35\x4a\x80\xf4\xcd\x54\x66\x14\x3d\x83\x09\x28\xdb\xb5\x83\xfc\xab\xdd\x39\x07\x58\x7b\x3e\x05\xcf\x16\x84\xda\x9d\x9f\x94\x59\x36\x20\x13\xc6\xa9\x21\xbb\x50\xf8\x4c\x18\xa3\x3f\x91\x6b\xc6\x13\x30\xdf\x34\xac\x04\x0b\x5c\x91\x99\xd1\x9c\xef\xea\x90\xa6\x03\xd7\x56\xc4\x6a\xcb\xca\xbd\xc2\x1c\xd8\x84\x8e\x33\xc0\xbe\x16\x4e\x64\xb9\x12\x19\x9a\xb7\x9d\xe1\x3b\xb5\xbd\x48\x68\x78\xf9\xbf\x18\x47\x25\x85\x5c\x21\xe3\x30\xca\x0e\x30\x3d\x33\xba\x4f\x51\x64\x0b\x43\x28\x0c\xee\xd4\x08\x75\xa0\xca\x64\x66\x3e\x69\xaf\x10\xa9\xda\x33\x64\x64\x4f\x41\x22\x41\xab\xbd\x43\xf3\xd7\xf2\x37\xe0\xf7\x85\xcf\x1d\xd1\x82\xed\x1d\x0e\x08\x02\x08\x1b\x9d\x08\x3d\x7b\xb9\x78\xe8\xbf\xb5\xd1\x5f\xeb\xb1\xd1\xd4\x5a\xc3\x19\x5c\xd7\x0e\x51\xd8\x26\x18\x86\x46\x6b\xc0\x3c\x29\x83\x94\x88\x06\xbe\x3d\xd4\x2a\xb1\x26\xe4\x98\x13\xc8\x0b\xbd\x40\x2c\xce\x81\x72\x77\x37\xcc\x41\x2e\xf4\xcc\x68\xab\x4c\xbd\xfc\xc3\xbf\xa5\x63\xa9\x1e\x6b\x01\xee\x0e\xbc\x07\x6e\x8d\xe4\xb6\xb3\xd2\x32\x70\xf7\xff\x75\x3f\x94\x7a\x8d\xf8\x54\x53\xf3\x17\x0b\x4a\x64\xaf\xad\xc0\xf8\x83\x79\xb2\x09\x42\xfb\x93\xa5\x96\x15\xfd\x78\xff\xde\x76\x51\x72\xb0\xfa\x8e\xf1\xd4\x8a\xa8\xc7\xda\xb6\x27\x82\x2b\x30\x0b\x4e\x6c\x66\xa2\xaf\x71\x94\x5a\x02\xe9\x76\x62\x2d\xf8\x71\xed\x2f\x11\xf4\xab\x82\xed\xb6\xc2\xe8\x23\xd3\x07\x9a\xcf\x73\x50\x56\xb0\x5f\x53\x43\xfe\x31\x14\x6c\x60\x9d\x51\x06\x05\x32\x3a\x86\xcc\x36\x63\x32\x57\xeb\xe5\x93\xe3\xf7\x1f\xaa\xbe\x65\x12\xe8\x23\x96\xae\x4f\xa0\xa2\x6c\xe1\x52\x5d\xe9\xfe\xb6\x3a\xb6\x97\x4a\x11\x14\xbb\x99\x89\xc9\x35\x68\x7b\x00\x73\x5a\x98\xf3\x67\xe7\x58\x6b\xe5\x7c\x8f\x90\x7e\xfc\xb0\xec\x24\xcd\x6f\xdf\xad\x69\xdd\x4b\xb6\x3a\x2a\xdb\xf9\x82\x77\x39\x7b\x0f\xd8\x3e\xea\xd1\x00\xf3\x12\x42\x3b\x89\xdf\xc9\xe8\x49\xd5\x79\xcf\x62\xb0\xb2\x29\xd3\x36\x41\x5d\xfa\xdf\xeb\x29\x7a\xde\x82\x5d\xd4\x29\xa3\x51\x67\x90\x68\xf1\x70\x41\x38\x7f\xb3\x86\xbc\xc8\x1e\x3b\x79\x64\x67\xd5\x2b\x67\xfc\x0a\x68\xba\xb8\x86\x44\xf0\x74\x4b\x02\xdb\xd8\x8f\x0f\x8c\xb3\xbc\xcc\x09\x2f\xf3\x31\x20\x88\x95\x9d\x0b\x09\x89\x55\x6b\x29\xe1\x70\x97\x2d\x1c\xf1\x48\x49\x21\x52\x4f\x4f\xc6\x46\x0d\xa3\xe9\x02\x3b\x9f\x61\xe9\x54\xbe\x30\x93\x30\x5d\x73\x1f\x49\x12\x49\x95\x11\x98\x06\x38\x29\xd3\x86\x97\x8d\x01\xbd\x4e\x2c\x05\xb3\xc7\x74\x4e\x59\x66\x84\xee\x11\x39\x85\x09\x2d\x33\x6c\xe0\x47\xde\x90\x03\xf3\x32\xaf\x69\xad\x7b\xc0\x08\xc2\x4a\x18\x1d\x5d\xb9\xec\x77\x5c\xd0\xe1\x0e\x76\xf4\x6d\x2a\xfb\xf9\xb1\x6d\x85\x3f\x3f\x0a\x5a\xaa\x6d\x15\xf4\xc6\xc6\x9c\xf3\xd4\x9c\x87\x50\x46\x0d\x48\x3a\x53\x6e\xe6\xed\x58\xf6\xc3\x55\x11\xd6\xac\x5a\x8a\xa9\x04\xa5\x4e\x81\xa6\x19\xe3\xd0\x1e\xbf\x6e\x66\x40\x72\x7a\x8f\x38\xa6\x59\x0e\x46\x12\x09\x31\x8c\x86\x5f\xa5\x05\xc9\xe9\x2d\x54\xaf\x27\x63\x98\x60\x83\x46\xfc\xe0\x60\xf7\x2d\xfe\x4c\x28\xcb\x20\x1d\xe1\x3b\x82\x59\xea\xbe\xc6\x16\x71\xcc\xdf\x8c\x97\x60\x9e\x2a\xa4\x40\x35\xd3\x3e\x1a\xf2\x78\xe4\xa1\xd4\xdc\x6c\xe9\xb0\xef\xe5\x77\xb9\x04\x8a\xb3\xfb\xc4\x9a\xff\x24\x50\x85\xb7\x59\xdc\x54\xa5\x9c\x18\xa5\xd2\xeb\xa2\xc1\x82\x5c\x13\x58\x72\x21\xb4\x6b\x09\x58\x7d\x20\x3e\xed\x5a\x54\x82\xd2\x2c\xc7\x03\x96\x96\xd2\x37\xcc\x44\x98\xd1\xf5\x5b\xdf\x38\x2a\x7f\x7a\xf3\x66\x4b\xf9\xed\xd3\x23\xbd\x04\xd4\xa1\xdb\xe0\xcb\x45\x45\x87\x3c\xf9\x37\xca\xb1\xd9\x63\xe6\x04\x64\xec\xfc\x09\x12\x3d\x88\x4c\x69\xc6\xa7\x25\x53\x33\x32\x06\x7d\x07\xc0\x09\xdc\xdb\xda\x17\xe4\x9f\x20\x05\x6e\xaa\x01\x6f\xed\x3c\x68\x00\xed\xed\xf3\x81\xd8\x9c\x29\x26\xf8\x5f\x98\xd2\x42\x2e\xde\xb3\x9c\x3d\x52\x94\xd4\x8f\xd5\xfe\xc7\x15\x04\x45\x96\x62\xd7\x62\x96\xd0\x6b\xb0\x1f\x2c\x01\x6d\x9b\x5a\x58\xc5\x95\x98\x73\x32\xa6\xc9\xed\x27\x03\xf0\x9b\xe7\x02\x61\xcf\xae\x5b\x40\x15\xe5\xbd\x6a\x02\x24\x5b\x16\x29\xcf\xee\x2d\x7c\x1a\x50\xbe\x9b\x09\x05\x78\x83\x35\x3f\xe2\x63\xde\x5d\xc0\x54\x45\x30\xcc\xe9\x16\x1c\x14\xa1\x93\x49\xf3\x8e\xfa\xb0\xa3\xe4\x99\x97\x4a\x93\x9c\xea\x64\x66\x8d\x5c\x22\xad\xc4\x89\x7d\xe5\xc4\xfe\x5d\xa0\xbc\xb5\x79\x79\x77\x43\x30\xb1\xeb\x3c\xbb\x37\xba\xe5\xa3\x7e\x9e\xe6\x68\x80\x7c\x79\x9a\xa6\x6e\x9c\x35\x37\xc4\xc9\x6d\xb9\x6d\x1e\x7c\x83\xa6\xe1\xfa\x17\xdc\x85\xe3\x8b\xd3\xed\x8d\x34\x6d\x14\xdc\x9d\x55\xdc\x65\x23\xf8\x03\x1f\xe5\x8d\xa9\xee\x4a\xd3\x12\x6e\x9b\x46\x0f\x08\x25\xb7\xb0\xb0\xfd\xa5\x57\x1a\xf6\x4a\xc8\x9c\x24\x01\xd8\xb7\xd6\xdc\xe4\x9a\x4d\xef\xb0\xde\x9d\xb1\xc7\x8e\xdd\x9c\x14\x7e\x0c\xcd\x42\x77\x7c\xc2\x7f\xf4\x0e\x8f\xed\x8e\xe0\x76\xdc\xc2\x62\xb7\x07\x96\xb6\xdb\xec\x82\xd3\x7d\xec\xbe\x9b\x1f\x2a\x41\xaf\xda\xea\xdd\xbc\x47\xe1\xd8\xd9\x78\xe5\x87\x07\x62\xa7\xcf\xab\xd0\x2f\xb4\x32\x99\x6f\xdc\x57\x16\x19\xcd\x99\x9e\xb1\x02\x19\x91\x77\x13\xf8\xf6\xe7\x3f\xd0\x8c\xa5\xd5\x14\xf6\xfc\x9e\xf3\x81\x11\x9f\xcc\x7f\x90\xe8\x5a\x71\xed\x54\x80\xba\x10\x1a\x7f\xf9\x6c\x00\xb2\xcb\xec\x04\x1e\x3b\x85\xb3\x4f\x23\x95\x41\xc5\x2b\xe8\x9c\xae\x46\xbe\xe6\x57\x05\x4a\xa6\xc8\x39\x27\x42\x7a\x38\x60\x2f\x7b\x3b\x91\x9d\x02\xf9\xc4\xd8\xba\x3e\xd0\x72\xbd\x76\x0e\x07\x3e\x21\x1b\xd0\x7b\x60\x3a\x37\x15\xca\x07\xf6\x8a\xed\x95\x9f\xa1\xb4\xeb\x44\x55\xea\xdd\xdf\x2c\x21\x39\xc8\x29\xfa\x62\x92\xad\x7d\x11\xcd\x4d\xd9\x8d\xee\xda\xb1\x33\xf5\x0d\x5f\xb8\x13\x16\x20\x6b\xb2\x26\xa0\x2e\xcc\xcd\xce\xd0\x30\x39\xfd\x1f\x43\xc1\x71\x0f\xfe\x2f\x29\x28\x93\x6a\x44\x8e\x89\x62\x7c\x9a\x41\xe3\x9a\xd3\x30\xc2\x69\xcc\x0c\x4c\x11\x43\x6a\xe7\x34\x73\xba\x14\xe5\x04\xac\xcd\xca\xcc\xbe\xcc\x52\x07\x4e\x52\x31\x94\xa7\x72\x81\xed\xdd\xc2\x62\x6f\xb0\x82\x34\x7b\xe7\x7c\xcf\xf2\x96\x15\x34\xa9\x18\x11\x7a\xcf\xf6\xf0\xda\x5e\x9f\x5c\x78\x47\x86\xd3\xd6\x8e\xd6\x7c\xe9\xd6\x18\xe1\xa3\x3e\x5a\x0a\xeb\x0d\x2d\xd1\xc5\x3a\x69\x41\x4a\x05\x56\x5a\xc7\x53\x46\xc0\xcb\x99\x28\x55\xa2\x62\xca\xe1\x0e\xa5\xc7\x67\x23\xf8\x19\x4d\x82\xf1\xe9\xf7\x45\x4a\xf5\x56\xe1\xa6\x76\x34\x20\xb2\x7f\x65\x27\x21\x25\xce\x62\x70\x6b\xc2\xa6\xa4\xa0\x92\xe6\x6a\x44\x2e\x5d\xdd\x43\xc4\x34\x36\x09\x6d\x89\x0e\x76\x37\x8b\x02\xc8\xff\x43\xae\xc2\xb5\x8c\xc8\x70\x38\x24\x37\x1f\x4f\x3f\xbe\x23\xf6\x17\x2b\x65\x6b\x41\x26\x02\x95\x20\x51\x4a\xf3\xaa\x39\x70\x54\xfc\x8d\x7c\x2f\x38\x7c\x9c\x98\x13\x42\x35\xcc\x41\x92\x3b\xb3\x55\x09\x4b\xa1\xb2\x5e\x8d\xf6\x3f\x2d\x1e\xb7\x93\x4c\x72\x7a\x7f\x5d\xca\xe9\x0e\x1b\x40\x56\x36\x21\x34\xd9\xd4\xca\x24\xa2\x5e\x98\xb7\xab\x92\x19\xa4\x65\x06\x29\xa1\x63\x31\x87\x86\xc9\xb6\xf9\x18\xb2\xf4\x12\xfc\x83\x86\xe7\x8d\x95\xc8\x4a\x5d\x29\xab\x07\x70\xff\x8e\xfc\x1b\x3a\xbd\x29\x29\x40\x26\xc0\x35\x9d\xc2\xb2\x19\xc0\xde\xf7\xf6\xcd\xbf\x1c\x3a\x7e\x64\x66\x74\xd6\x93\x37\x06\x23\x3e\xd0\xfb\xef\x79\x6d\x1a\x64\x8a\xbc\x19\x91\xe3\xa5\x97\xe1\x73\x59\x52\x66\x68\x6b\x41\x47\x7e\xf0\xca\xf1\x82\x48\x51\xa2\x2b\x9f\x94\x45\x53\x9b\xfd\xfd\xbf\xfd\x8b\x51\xfa\x68\x5e\x64\xf0\xce\x97\x4b\xb5\x6a\xb3\x91\x61\xb4\x20\x7f\x78\xf3\x2f\x96\x7a\x9a\xf3\x59\x6b\x85\x35\xcc\xa8\x01\x58\x59\x10\x96\xdb\x20\x4d\xc8\x16\x75\xdd\x55\xd9\x44\x7f\xa5\xa9\xd4\x6a\x40\xd0\xdf\x5f\x09\x87\x5a\x68\x9a\x2d\x69\xf9\xa8\x85\xc3\x9d\x05\x52\x2a\x10\x26\x80\x86\x2a\xf2\xf6\x0f\x6f\xfe\x65\xd5\x9c\xf2\x91\x27\x80\x4f\xe2\x13\x18\x80\x31\x36\xca\xfd\x2d\xcb\x32\x48\x07\x8f\x2e\x7f\x52\x4a\x3d\x03\x39\x20\xc0\x95\x37\x56\x99\xf5\x2d\xad\x0d\x67\x97\x25\xe7\x28\x23\x58\xeb\x30\x5a\xb4\x02\x0b\x97\xfb\x58\xc3\x08\x35\xc9\x85\xd2\xeb\x97\xbc\xfd\x71\x33\x83\xf2\xc5\xc7\xc9\xae\xe2\xc0\xb0\x85\x19\x62\xf5\xe9\x16\x22\xe5\xfd\xf0\xb6\xca\xa1\x1c\x32\xae\x87\x42\x0e\xed\x34\xef\x88\x96\xe5\xe3\x5e\x83\x7a\xe4\x8d\x13\xf0\x19\xc8\x40\x19\x9c\xb7\x95\x5d\xfd\x24\x27\xbf\xfd\x79\x4e\xc5\x1d\xdf\x4c\x39\x90\x70\x3a\x9a\xd1\xf2\xd4\x37\x2d\x6e\x4b\xc7\xc6\xbc\xdd\xdc\xfd\xff\x5b\xc5\xee\x1d\xc8\x81\x3b\xbb\xd5\x69\x37\x72\x15\x7a\x3c\x06\x5b\xbc\xbd\x3a\xb6\x96\xf3\x59\x9b\x93\xb9\xc1\xbe\x66\x0d\xe5\x5a\x39\xe1\x6b\x28\x90\x5d\x47\xed\x90\xd1\x18\x51\x60\xce\xb9\xda\x78\xd0\x33\xa0\x4a\xaf\x03\x45\x3c\xe8\x8f\x8f\x87\x43\xfb\x97\x47\x53\xe8\x34\x12\x12\x82\xbc\xb6\x31\x9e\x58\x44\xd9\xbb\x02\xeb\xe1\xb3\xa1\x68\x0d\x21\x6a\xaf\x3a\x12\x66\xff\x9a\xf2\xd5\xa7\x0a\xa8\xf1\x46\xce\x36\xa2\xb5\x7b\x34\x08\xf9\x75\xa6\x53\x47\xbc\x2a\x8f\xa2\x75\x69\x3e\x1b\x29\x3a\x07\x4d\x1f\x4e\xff\x58\x1e\x4d\xa2\x7d\xad\x29\x4f\xa9\x4c\xdd\x2a\xf7\xf7\x55\x35\xe5\x88\x7c\x40\x5f\x1a\x9f\x88\x77\x64\xa6\x75\xa1\xde\x1d\x1d\x4d\x99\x1e\xdd\xfe\xbb\x1a\x31\x71\x94\x88\x3c\x2f\x39\xd3\x8b\x23\x74\xa0\xb1\x71\xa9\x85\x54\x47\x29\xcc\x21\x3b\x52\x6c\x3a\xa4\x32\x99\x31\x0d\x89\x2e\x25\x1c\xd1\x82\x0d\x6b\x99\x59\x8d\xf2\xf4\x0b\xff\xa2\x4f\x2c\x18\x37\xce\x10\x5a\x97\xe4\x1c\x86\x25\xbf\xe5\xe2\x8e\x0f\x51\x93\x55\x3b\x9d\xa6\xed\xa2\x18\xfc\x58\x82\xf7\x2e\x81\x0b\x85\x48\x3f\xf9\x26\x98\x8f\x19\x52\x9e\x0e\xad\xd3\xf1\x13\xef\x45\x1b\xdb\xee\xb0\x0e\x0c\xd8\x26\x16\xdd\x8e\x76\xda\x10\x4d\x34\x9b\x43\x2b\x27\xb6\x1f\x8d\xed\xfe\xe8\x43\x49\xd3\x52\xda\x1d\x0f\xbc\xd9\xde\x37\x93\xd3\x05\xca\x3a\xf8\x6e\x22\x2c\x2b\xe7\x22\x05\x67\xf9\x9c\xa3\x6a\x7f\x6d\x98\xf9\x8d\x11\x85\x9d\x8f\x1b\xed\xbe\x0b\xa5\x21\xb7\xc4\xc9\x3e\x9f\x2d\x88\x96\x0b\xeb\x18\x97\xb7\x46\xf9\x74\x9e\x6b\x23\xf1\xdf\xe2\x7d\x4a\x89\x84\xa1\xe8\x53\xc3\xd5\xcb\x5d\xde\x86\x47\x49\x21\x14\xc3\x77\x3b\x9e\xb7\x9b\x65\xae\x3d\xbb\x0c\xdc\x74\x7f\xfa\xe3\x2e\x5b\x37\xc1\x06\x0b\x3b\x5a\xd9\x9b\x11\x14\x93\x30\xf6\xdf\x6d\xcf\xbe\xf2\x8a\xab\x11\x4b\x12\xc1\x95\x96\x94\x6d\xce\x6e\x5a\x3f\x5a\xba\x42\xda\xfb\x1b\x08\x62\xd0\x71\x2b\xa0\x90\xd5\x18\x2c\xcf\x14\x11\x2d\x3d\xa8\x43\xc0\xd8\xe4\x27\x1f\x4b\x68\x08\x57\x4b\xd3\x6a\x0b\x18\x91\x4e\x70\xb2\x4f\xc3\x04\xa4\x84\xf4\x14\xa5\xcf\xeb\xea\xbb\xce\xa7\x5c\x54\x3f\x9f\xdd\x43\x52\x6e\x9b\x23\xbe\x3a\x56\x6c\x79\xde\x20\xe2\xc2\x4e\xec\x22\xcc\xd1\xf5\x17\x9c\xfc\x21\x10\xec\x4e\x10\x51\x54\x33\x35\xb1\x99\x64\xd5\x46\x40\xe0\xf8\xac\x50\xb8\x72\x0f\x23\x8b\xb3\x49\x11\x4c\x23\xb9\x49\x66\x42\x28\x73\xca\x71\x3f\x71\xde\x39\x13\xd6\xe7\x87\x69\x2d\x92\xe4\x86\xc6\xf8\xf4\x96\x7a\x7a\x6b\xa8\xad\x1f\x63\xca\xaa\xe0\x15\x04\xbd\x97\xca\x4c\x83\x86\x47\xf3\xc7\x14\xa5\x26\xa5\x89\x2a\x73\x33\xe9\x1d\xb0\xe9\x4c\xab\x01\x61\x23\x18\x21\xd6\x00\x4d\x66\xc1\xb4\x39\x80\x6e\xf4\x47\x09\x51\x2d\xb4\x12\x1f\x54\xf9\x0e\x2e\x41\x67\x50\xf1\x98\xe5\xbd\x5c\x0b\xae\x01\x01\x9d\x8c\x0e\x07\xa4\x4e\x21\x37\x6b\x1c\x2f\x08\xd3\x60\x68\x36\xea\x22\x52\x94\x53\xfb\x25\xe0\x63\x3a\x71\x5d\x55\x32\x08\x7a\x51\x53\xd4\x19\xf7\xec\xc7\xed\x99\x7d\xc3\x95\x97\xb9\xd1\x17\x2b\xa2\x8e\x66\x75\xdf\x52\x47\x48\x09\xaa\x10\x56\xdb\x5c\x36\xb8\xff\xff\xab\x87\x0e\xd4\x61\x0d\xcc\x19\x9b\xce\x3c\x2c\xa9\x63\x04\xcd\x3d\xd8\xfd\xec\x91\x4e\xbe\x14\x3b\x5a\x7a\x54\xec\x68\xfa\xb6\x7d\x26\x45\x8d\x55\xc1\xfe\x6b\x90\x79\x05\x45\x44\x11\x24\x19\xce\xce\xed\x5b\xd9\x38\x1c\x23\x6f\xc8\x01\x22\x19\xd3\xfb\x0a\x11\x7e\x28\x8a\xc3\x11\x39\x26\xbc\xac\xce\xdc\x43\x2f\xe0\xa2\x9a\xdf\x4d\x64\x5e\xaa\x44\x3d\x57\xcb\x2f\xee\x44\xee\xec\x68\xe7\x29\x0f\xc7\xd0\x41\x00\x1e\x2f\x98\xf8\xd0\x24\x16\xd6\x2d\x27\xe8\x46\xba\xfd\x1c\xfe\x2b\xda\xcf\xb1\x12\x60\x81\xc7\xb5\x8e\xa2\x00\x99\x0f\x42\xe9\xa9\x3a\x90\xcd\x53\x6c\x61\xd1\x16\x2b\x48\x3f\x98\x41\x7a\x82\x2b\xe9\x14\xa1\xb3\x7e\x2c\x87\xb1\xf8\xfc\xaa\x06\xb4\x1b\x44\x7e\xbc\xc0\xab\x3b\x06\x2f\x6d\x1e\x5d\x29\x5d\x3d\x3a\xd1\xbc\x7a\x3c\x88\x78\xcf\x2f\xb0\x67\xfd\xe8\x09\x6d\xed\xe8\x4e\xda\xea\xb1\x7b\x68\xd0\xa6\x79\x5a\x04\x0c\xad\x1f\x7d\x9d\x4d\x3b\x5a\x04\x17\xad\x1f\x2b\x22\xea\xa7\x89\x35\x5a\x3f\x5a\x1b\x49\xd7\x8f\xb6\x71\x49\xeb\xc7\x52\x12\xe3\x27\x0a\x52\x1a\x34\x23\x94\xc8\xb7\xda\x9e\xe3\xf7\x9d\xf8\x49\x3d\x7a\x06\x71\xbb\xc8\xa6\xf5\x63\x59\x00\x7c\x21\x51\x4e\x6b\xa6\xfa\x56\x9b\x69\xde\x6f\x7c\xd8\x66\xaf\xfb\x38\x1d\xa7\x50\x0c\x5c\xea\x8c\xb7\x33\x63\x44\x75\x21\x01\x0b\x0e\x60\xd8\x97\xb7\xc3\x7c\x9e\xc0\xaa\xf5\xa3\x3f\xc6\x69\x47\x4f\xec\xd3\x8e\xde\x90\x1b\x05\x9e\x6f\xac\x5d\xf8\x09\x65\x1d\x6b\x99\x8e\xb2\x4e\x94\x75\x76\x18\x51\xd6\xd9\x76\x44\x59\x67\xd3\x88\xb2\xce\x9a\x11\x65\x9d\x28\xeb\x74\x1a\xcf\x4f\xd6\xb1\x96\xaa\xde\x0c\x66\x3f\x5a\x83\xeb\xb2\x85\x0c\xa5\x29\x1f\xd2\xd3\x34\x95\x19\xde\x7f\xed\x48\xec\x0d\x9a\xd7\x5c\xa4\xba\xa4\x7c\x0a\xe4\xed\xf0\xed\x9b\x2d\xd3\x01\xd7\x8f\x2e\x41\x3b\xe1\xd8\x35\x75\x70\x79\x6c\xf2\x48\x7c\x32\xef\x92\x3b\xa9\x95\xc3\xa3\x21\x61\x6e\x70\x10\x55\xf5\xae\x72\xd0\x84\xea\x86\x41\x9c\xe5\x50\x39\x44\x1b\x29\xc8\x75\x4c\xaf\xe0\xce\xdf\x61\x36\x75\xd4\x6e\x05\x09\x50\x1b\xc7\x3e\x86\x6a\x15\x22\x07\x9b\x60\xea\x0f\xbd\x59\x02\x78\x58\x91\x03\x18\x4d\x47\x24\xb5\xc9\xda\x94\xbb\x98\xb1\xc3\x41\xe8\x1e\xcf\x0d\x71\x95\xf8\x1f\xb3\x6c\xe7\x1f\x87\x39\x70\x5d\xd2\x2c\x5b\x10\x98\xb3\x44\x57\xdf\x87\x01\x81\x4c\x5b\x67\x67\x17\x57\x4a\x07\xf1\xb0\xab\x48\x38\x5c\x39\x5b\xbb\xf9\xab\xfd\xe8\x2e\xbb\xad\xac\xa3\x3d\xbd\x59\x92\x4b\x2c\x84\x46\x1b\xd5\x2a\x6d\xde\x66\xfd\x95\xf8\x4f\x44\xf0\x8f\x57\x6d\xdd\x63\xa4\x27\x9e\xd0\x99\x0f\x2c\x2b\x50\x65\x96\x19\xf4\xb6\x1e\xb3\x55\x10\xac\xf1\x64\xad\xc9\xb6\xb1\x6e\xd6\x3c\xc8\xba\xc1\x7b\x6e\x44\x21\x32\x31\x5d\x84\x3b\x68\x7b\xb5\x04\xe5\x6d\x28\x51\xe5\xd8\x89\x80\xe6\x10\x5d\x2c\x6d\x79\xf4\x85\x6c\x1c\xd1\x17\xb2\x32\xa2\x7d\x60\x79\x44\xfb\xc0\x0e\x23\xda\x07\xd6\x8c\x68\x1f\x58\x1d\xd1\x3e\x10\xed\x03\x5d\xc6\xeb\xb7\x0f\x90\xe8\x0b\xd9\x34\xa2\xac\x53\x8f\x28\xeb\x6c\x3f\xa2\xac\xb3\x3a\xa2\xac\x13\x65\x9d\x28\xeb\x44\x59\xa7\xed\xe8\x80\xdc\x85\x48\x7b\x4f\x91\x29\x44\xfa\x40\x86\x8c\xb5\x57\x27\x62\x98\x89\xa4\xaa\x2c\x62\x1e\x71\x9e\x0f\x45\x73\x6b\x42\x1f\x90\x7f\x0a\x0e\x36\x3d\xc1\x96\xac\xcd\x81\x08\x6c\x0f\x51\x88\xf4\x40\x1d\xb6\x08\x3c\x8f\x19\x36\x31\xc3\xe6\x37\x90\x61\x33\xa3\xca\x15\x3e\x42\xd2\xba\x39\xe1\x26\x38\xfe\x37\x20\xf3\xdf\x6c\xbe\x8d\x41\x38\x87\x30\xd8\x3d\xae\x46\x0a\x0b\xbb\xd4\xf9\x76\x21\xbd\x6c\x42\xcc\xe9\x65\xb6\xf9\x4e\x9a\x42\x4a\x0a\x90\x43\x8b\x64\x82\x4c\x98\xab\xff\xb5\x84\xbf\x0e\xc2\x2f\x3c\x6f\xa6\x09\x89\x17\x9d\x3c\xd3\xfc\x94\xde\x7c\x53\xa1\x8b\xae\xc1\x15\x5f\x5c\x2a\x4d\x3f\x5a\xe9\x90\x68\xe7\x4e\xfb\xae\x93\x5e\xda\x97\x12\x89\x4a\xde\xf5\x4e\x65\x8e\x37\x8f\xb5\xc5\x69\xff\x51\x82\x5c\x10\x31\x07\x59\x2b\x46\x55\xdf\x9e\x41\xd5\x64\x26\xa1\xae\x00\x72\x3f\x06\x9e\x5e\x4c\x11\x7d\x6a\xea\x7d\x7b\x0d\xc9\x33\xab\x7e\xbc\x79\xf4\xab\x38\xf4\xa8\x36\xbc\xb4\x5a\xca\x9b\x47\xaf\xe6\x37\xd2\xb3\x09\x8e\xf4\x68\x86\x23\xfd\x9a\xe2\x48\xef\xe6\x38\xd2\xa7\x49\x8e\x7c\xf6\x0a\xd0\x9b\x47\xcf\xe6\x23\xd2\xbb\x95\x8e\xbc\xc0\x7a\xd2\x9b\xc7\x27\x00\x77\x9f\x16\x3b\x12\xab\x53\x77\x1e\x7d\x1b\xd4\x48\xdf\x46\x35\xd2\x37\x1e\xb6\xaa\x82\xbd\x79\xc4\xfa\xd8\x9f\x40\x4e\xeb\x4d\x88\xe8\x5a\x53\xfb\xb1\x85\xf6\x80\x93\x55\x57\xdf\xcf\xa5\x00\x59\x2e\x5d\xb7\x92\x35\xef\x0e\x7a\x75\x61\xa8\x66\xd8\xf2\xd4\xc7\xad\x22\x46\xe3\xef\xa9\x37\x78\x95\x3c\x28\x1e\x17\x4c\xb6\xd2\x3a\xa6\x36\x9d\x55\xcd\x63\x8c\x52\x50\x37\x9d\x0a\x1e\xc6\x7b\x47\x36\x9c\xb4\x96\x26\x78\xba\x1c\x60\x5a\x3f\x81\xfa\x85\x6d\x74\xbb\xe7\xed\xd8\xfb\xaa\xbe\x63\x6f\x14\xf6\xc4\x75\x33\x1e\xfc\x9f\xff\x7b\xd8\xa8\xde\x52\x4f\xe8\xa8\x72\x75\x76\xc6\xa0\xe9\x30\x83\x39\x64\xb8\x0e\xdf\x70\x79\x26\xd0\x62\x6c\xcb\x9e\x06\x06\xa9\x8b\xe5\x1d\x25\x13\xa0\xba\x94\x58\x41\x14\x38\x1d\x67\xdd\xcf\x4a\x54\x30\xa3\x82\xb9\xdd\x88\x0a\xe6\xc6\x11\x15\xcc\x0e\x23\x2a\x98\xdb\x8d\xa8\x60\x6e\x1e\x51\xc1\x8c\x0a\x66\x8b\x11\x15\xcc\xa8\x60\xb6\x1d\xbf\x61\x05\xb3\xdf\xc0\xe9\x50\xdd\x73\x71\x28\x28\x3f\x6a\xaa\x59\x52\x07\x55\xfb\xbb\xec\xbf\xfa\x55\x33\x43\x15\x72\xbd\x92\x19\x2a\xa2\x2b\x8a\xf6\xe8\x11\x8d\xb2\xd2\x39\x57\x9e\x7c\x50\xd9\x7c\x6d\xb1\xe1\xbd\x21\x62\xe0\x74\xee\x15\x13\x6f\x7c\xe8\x5a\xdd\xda\xbd\x8a\x6b\x4b\xc9\x81\xf7\xf6\x63\xab\x16\x2e\x74\xf3\x22\xd7\x6c\x58\xdf\x51\xf9\xff\x31\x6c\xa7\x51\x31\xa0\xe1\xa4\xae\xa2\xe4\xaa\x08\xac\x1a\x79\x0c\x75\x04\xd9\x58\x03\xb6\xc6\x9d\x30\x6e\x63\x29\x7d\x5b\x21\xc1\x7d\x58\x96\x25\xa7\x48\x00\x3d\x9a\x5b\xc9\x17\xd7\x83\xe2\x6f\x0d\xbb\x20\x8e\x88\xe2\x19\xa3\xdc\xa5\xdb\x0a\xee\xfb\xde\xdb\x5e\xf6\xb5\xb8\x5c\x75\x6b\xa9\xde\x3e\x22\x67\x88\xf4\xe1\xc4\x4c\x21\x7c\xa8\xed\xb0\xd2\x8f\x89\xe2\x79\x95\x86\xb8\xdb\xb9\x34\xc4\x52\x4c\x4a\xac\x0c\x11\x2b\x43\x74\xaa\x0c\x81\x17\xed\xe1\xee\xbd\x44\x04\xf9\xd1\x35\x60\x92\x80\xa0\xca\xcb\x4c\xb3\xa2\x8e\xf1\x56\xf6\x55\x99\x55\x24\x26\x2e\xd6\xb4\x89\xef\xe6\x6d\x34\x99\x2d\xe3\x3d\xce\x87\x31\xe1\x0a\xc9\x89\x8b\xe7\xc4\x76\x49\x58\xd3\xc0\x6b\x1d\x36\x68\x95\xbd\xfc\x58\xc4\x53\x24\xd8\xaa\x56\x9a\x6d\x37\x2f\x43\xe7\x33\x83\x12\x86\x62\x3f\xc0\x20\xc2\x96\x19\x18\x17\xcb\xe6\xc0\x6b\x2e\x71\xa0\x0e\x0f\xbd\x30\xd4\x2b\xf7\xfa\x24\xdc\xe7\xcf\x01\x97\xf8\xcf\x6d\xf8\x0f\x7e\x50\xc5\x81\x6a\xf0\xd5\xfc\xe7\x65\x07\x5d\x76\x8f\x9f\xeb\xc3\x20\xd7\x5b\xdc\xdc\x93\xc7\xcc\xfd\x96\xaa\x6b\x3c\x4b\x17\xc6\xb3\xd3\x3a\x5e\x87\xdb\x22\xa6\xa4\x6e\x3f\x5e\x42\x4a\xea\x13\xb9\x26\x5e\x4e\x66\xea\x8b\x75\x47\xbc\x94\xcc\xd4\xe8\x82\xd8\x69\xbc\xd6\x84\xd1\xe6\xe8\xd1\xe5\x10\xdd\x0d\x3d\xcb\x54\xbd\x30\xff\x4f\xe3\x66\xe8\x05\xff\x7a\x8d\x5f\x8b\xb1\x6b\xaf\x3c\x76\x2d\x2a\x7a\x51\xd1\x6b\x8e\xa8\xe8\xad\x8c\xa8\xe8\xed\x30\xa2\xa2\xb7\x79\x44\x45\x6f\x75\x44\x45\x2f\x2a\x7a\x5b\x8c\xa8\xe8\x45\x45\x6f\xdb\xf1\x1b\x53\xf4\xfa\x2b\x1a\x1f\x63\xc8\xfa\x8f\x21\xeb\x87\x10\xf6\x40\xfe\x7a\x41\xba\x9e\x62\xc6\x62\xbc\xd8\xf3\x8e\x17\xeb\x58\x3a\x8f\x6b\xf6\x69\xca\xe7\x85\xbb\xbd\xa9\x86\x1e\x9d\x0b\x96\x92\xa2\xd4\xae\x82\x58\xac\xa3\xf7\x9c\xeb\xe8\x35\x76\x34\x16\xd3\xdb\xaa\x98\xde\x26\x98\xc5\x8a\x7a\x1b\xc6\xf3\x89\x62\x8b\x15\xf5\x76\x1d\xb1\xa2\xde\xfa\x11\x2b\xea\x3d\x30\x62\x45\xbd\x58\x51\x2f\x16\x3c\xe8\x30\x62\xc1\x83\x35\x23\x16\x3c\x68\x3f\x62\xc1\x83\xad\x46\x2c\x78\x10\x0b\x1e\x34\x47\x74\x42\x75\x1b\xb1\xe0\x41\xc7\x11\x1d\x53\xb1\xe0\x41\xa7\x09\x63\x45\xbd\x18\x95\xb8\xfb\x88\x0a\x66\x54\x30\xb7\x1b\x51\xc1\xdc\x38\xa2\x82\xd9\x61\x44\x05\x73\xbb\x11\x15\xcc\xcd\x23\x2a\x98\x51\xc1\x6c\x31\xa2\x82\x19\x15\xcc\xb6\xe3\x37\xac\x60\xc6\x8a\x7a\xcf\x3d\x1a\x92\x3c\xc7\x94\xa7\x58\x51\x2f\x46\x48\xb6\xda\xee\x58\x51\xef\xf1\xf1\x9b\xaf\xa8\xd7\x88\xd6\x7b\xba\xb2\x7a\xbb\x2f\x23\xd6\xd6\x8b\xb5\xf5\x62\x6d\xbd\x58\x5b\x2f\xd6\xd6\x8b\xb5\xf5\xb6\x1f\xcf\xdf\x99\xf1\xec\xf4\x8f\xd7\xe1\xc0\x88\x25\x17\xb6\x1f\xb1\xe4\xc2\xc6\x11\x4b\x2e\xc4\x92\x0b\xd1\x19\xd1\x66\xc4\x92\x0b\x3b\x8e\xe8\x78\x88\x25\x17\x76\x1a\xb1\xb6\x5e\x8c\x62\xdb\x7e\x44\x45\x2f\x2a\x7a\xcd\x11\x15\xbd\x95\x11\x15\xbd\x1d\x46\x54\xf4\x36\x8f\xa8\xe8\xad\x8e\xa8\xe8\x45\x45\x6f\x8b\x11\x15\xbd\xa8\xe8\x6d\x3b\x7e\x63\x8a\x5e\xac\xad\xf7\x9c\xa3\xc9\x62\x6d\xbd\x35\x23\x46\x8e\x3d\xef\xc8\xb1\x96\xb8\x42\x4b\x2d\x72\x51\x72\x7d\x0d\x72\xce\x12\x38\x4e\x12\xf3\xd7\x8d\xb8\x85\x1d\xa3\x95\x9a\x5a\xe8\x03\xd3\x12\xc6\x53\x96\xa0\x1e\x79\x37\x03\x2c\x8d\x67\xc4\x5b\xbc\x8f\x50\x7b\x23\xd1\x78\x67\x8d\x5e\xb8\x4e\x43\xd3\x30\x84\x07\xa7\xde\x15\x5e\x16\x42\x63\x21\x32\xa0\x7c\x87\x27\x1d\x33\x04\xb9\xe3\x69\x6e\x00\xe4\xbd\xa3\xc4\xf5\x64\x64\x0c\x99\xe0\x53\x17\x31\xe4\x4e\xc0\x88\x9c\xd4\x37\x24\x94\xe3\xe1\x29\xa5\x04\xae\xb3\x05\xc2\x01\x8b\x74\xa1\xd2\x90\x8b\x39\xa4\x48\xb1\x31\x50\xc9\x8a\x91\x54\x93\x0c\xa8\x79\x17\x87\xfa\x65\xe6\xf0\x50\x72\x89\xf3\xdb\x49\xc7\xe0\x82\xa7\x5a\x01\x71\x77\xda\xd8\x8a\x1a\x2e\x19\x36\x9c\xd4\x84\x6c\x29\x41\xf5\x28\xf8\x42\x3c\x9a\x0b\x51\x92\x3b\x6a\x05\x25\x59\x72\x3c\xcc\xf8\xe9\x06\xb4\x3b\xbe\xbc\x83\x48\xd2\xde\xfa\x30\x44\xaa\xb6\xe3\x63\x5d\xac\x01\x54\x4e\x5b\x31\xa9\xc6\xd6\xec\x1f\xcb\x69\x69\x25\x42\x87\xca\xc0\xb5\x5c\x60\x44\x9f\x15\x29\x52\x91\xdc\x1a\x34\xcc\xe9\x14\xf6\xf7\x15\x39\xf9\x70\x6a\x68\x5f\xa9\x0c\xa9\x76\x65\x02\x1d\x2d\x2c\xa4\x98\xb3\xd4\x60\xf6\x0f\x54\x32\x3a\xce\x8c\xcc\x39\x01\x09\xdc\x88\x04\x5f\x1e\xfc\x70\x7c\xf5\xcb\xc5\xf1\x87\xb3\x43\x94\x3e\xe1\xbe\xa0\xdc\x1c\x89\x52\xd5\x71\xa8\x0e\x27\xcc\x8b\x80\xcf\x99\x14\xdc\x2c\x0e\xf5\x34\x4a\xe6\x7e\xd6\xa4\x3a\x09\x12\x94\xc8\xe6\x90\x5a\x19\xb9\x7a\x9b\x67\x39\x8c\x17\xa5\xf6\x7a\x23\x46\x47\x9a\xd3\xc3\x93\x19\xe5\x53\xb3\xce\x53\x51\x9a\xf9\xbe\xfc\x12\x57\x24\x21\x2d\x13\x2b\x35\x51\x8f\xb2\x5f\x0e\x3c\x9b\x30\x84\x5e\xd9\x9a\x8e\x2a\xa1\x85\x5f\x73\xf8\x59\x6a\xc1\x35\xbd\x7f\x67\xc3\x03\xf7\xbe\x0c\x2e\xed\xf9\x7a\x98\xc2\xbc\xc2\x32\x1b\xbb\xaa\x0c\x4b\x31\x66\x64\x2f\xbc\x7b\x44\xce\xcc\x3b\x20\x0d\x01\x68\xa3\x3b\x61\x0e\x12\xb5\x4e\x07\xbe\x01\x91\x30\xa5\x32\xcd\x40\x61\x5c\xa3\x27\xcc\x56\x33\x70\x00\x83\x4a\xa7\xe5\x42\xaf\xa3\x24\xe4\x83\xc0\x18\xc7\x89\x78\x47\x66\x5a\x17\xea\xdd\xd1\xd1\x6d\x39\x06\xc9\x41\x83\x1a\x31\x71\x94\x8a\x44\x1d\x69\xaa\x6e\xd5\x11\xe3\xe6\x64\x0d\x53\xaa\xe9\x30\x38\xd2\x47\x96\x6d\x0f\x13\x91\xe7\x94\xa7\x43\xea\x50\x6b\x58\x6d\xeb\xd1\x17\x8e\xa1\x0e\x69\x75\x17\xe3\x43\x3a\x54\x33\xc8\xb2\xfd\x16\xc8\xdc\x4d\xe0\xeb\x20\xe8\x75\x12\xf0\xdc\xb7\x77\x3f\xbd\x67\xd5\x61\xb5\x30\x18\x91\x0b\xa1\x5d\xf8\xad\x8b\xf4\x46\x22\x8a\xf0\x5d\x7f\x9e\xcf\x2e\x6e\xae\xfe\x7a\xf9\xf1\xfc\xe2\x26\x1e\xeb\x78\xac\xe3\xb1\xee\x70\xac\x81\xcf\x3b\x1f\x69\x2f\x6d\x06\xc7\xa4\xda\x6f\xe4\xd1\x0a\xb4\x3f\x06\xd5\x06\x74\x96\x0d\xed\x78\x32\xa8\x37\x20\x70\xc6\xe7\x3f\xd0\xa6\x69\x9d\xaf\x05\x07\x71\x37\x58\x11\xb9\x92\xbe\xbb\xc4\xde\x77\x30\x63\x75\xf5\x5b\xb5\x92\x1f\xed\xe8\xee\x53\x32\xaf\x6e\x6f\x62\x68\x6c\xdf\x05\xcd\xeb\xfa\xda\x6b\x76\x6d\x44\x3e\x78\x85\x87\x9c\xfc\x72\x7e\x7a\x76\x71\x73\xfe\xcd\xf9\xd9\x55\x7b\x0d\xba\x07\x5b\x0b\x5a\x13\x7a\x02\xc0\x7e\x4b\x2e\x59\x48\x98\x33\x51\xaa\x6c\x51\xd9\x3f\xd6\x13\x81\xe5\xd3\xef\x1c\xbe\x8b\x4a\x13\x5f\xfb\x58\x64\xb6\xfd\x32\xdb\x53\x98\xd0\x32\xb3\x7a\xd3\xde\xde\xa8\x0d\x97\xb3\xa3\x2f\xf4\xfd\x46\x8a\x0e\xf5\xa3\x1b\x28\x7c\x6d\x2b\xcf\x4f\x84\xdc\x78\x8c\xf7\x5d\xd8\x41\x83\xf5\x38\xe1\xd1\xda\xe6\x9c\xf4\x68\xbd\x63\x1d\xa1\xd3\xd1\xbd\xd0\x8f\xd3\x3d\x11\x7c\xc2\xa6\x1f\x68\xf1\x1d\x2c\xae\x60\xd2\xcd\x40\xdc\x84\x37\xda\x1d\x9d\x0f\x19\xad\x94\x86\x9d\xd9\x97\x75\xf3\xcf\xf4\xe6\x9d\xe9\x2b\x2c\xa3\x7b\x48\x46\x7f\x11\x14\xbd\x44\x4f\xac\x54\xf3\xb7\x16\x68\x67\x4b\xee\x2b\xb8\xa6\x17\x97\x7d\x37\x2e\xef\x47\x93\xd9\x85\xec\xde\xd1\x59\xbd\xad\xda\x91\x08\x9e\x40\xa1\xd5\x91\x98\x1b\xce\x05\x77\x47\x77\x42\xde\x1a\x3d\xc2\x28\xae\x43\x8b\xb5\xea\x08\xbd\x05\x47\x5f\x58\xff\xd7\xcd\xc7\xd3\x8f\xef\xc8\x71\x9a\xba\xd6\x2c\xa5\x82\x49\x99\xb9\x66\x08\x23\x42\x0b\xf6\x03\x48\xc5\x04\x1f\x90\x5b\xc6\xd3\x01\x29\x59\xfa\x75\x7b\xe2\xec\x47\x8f\xbb\x20\x0a\xeb\xe3\xec\x79\x27\xae\xd1\xbb\xb2\x68\xf0\xae\x8a\x88\x18\xae\xc5\xb4\x42\xdc\xf4\xf6\x66\x27\x64\xf4\x04\x9a\xdd\x8d\xf3\xcb\x03\xb7\xb0\x5f\xba\xba\x5f\x13\x56\xeb\xdb\x74\x88\x5a\x88\xf4\x1d\x51\x65\x51\x08\xa9\x15\xc9\x41\x53\xa3\xf4\x8e\x0c\x86\x0d\x9a\x7f\xa2\x97\x6a\x40\xfe\x5e\xfd\x88\xae\x26\xf5\xd3\xfe\xfe\x9f\xbf\x3b\xfb\xeb\x7f\xee\xef\xff\xfc\xf7\xf0\x2a\xb2\x42\x1b\xfe\xd3\xbc\x45\x15\x90\x8c\xb8\x48\xe1\x02\xdf\x81\x7f\xaa\x86\x83\xc5\x5d\xd0\x54\x97\x6a\x34\x13\x4a\x9f\x5f\x56\x7f\x16\x22\x5d\xfe\x4b\x75\x90\x38\xc8\xf3\x64\x0c\xb8\x45\x97\x54\xcf\x9e\x09\x7b\xa8\x69\x49\xcf\x47\xd5\xcd\x1a\xb6\x00\xca\x29\xfe\xf3\x1b\x0f\x02\x23\x3d\xdd\x49\xa6\x35\x3a\xdd\x5c\x9a\xb9\x98\x0c\xcc\xa9\xad\xc5\xce\xf9\xdb\xbd\x67\xc5\x60\xaa\x1d\xec\x19\x60\x08\x11\x07\x2d\x7b\x90\x2b\x06\xbb\xea\x5c\x3e\xbe\x3c\x27\x73\x0b\xe1\x67\x03\x1c\x9f\x3a\xfc\xcd\x27\xa5\x71\x55\xcb\x28\x07\xaa\x4a\x43\x7c\x67\xa3\x81\xaa\x04\x66\x92\xb1\x9c\xb9\x20\x43\xd7\x5e\x4a\x91\x03\xfb\xe3\x28\x29\xca\x81\xbb\x61\x94\x43\x2e\xe4\xa2\xfa\x13\x8a\x19\xe4\x46\xd3\x1a\x2a\x2d\x24\x9d\xc2\xa0\x7a\xdc\x3e\x56\xfd\x65\x1f\x6c\xbc\x60\xf5\x69\xab\x0a\xd7\x4e\x52\x47\x91\x21\x7d\x7d\xb4\xcd\x83\xfe\x99\x90\xb6\x0a\x33\x2e\x3e\x81\x48\x58\x59\xe2\xac\xc0\x59\x41\x11\xf5\xc9\xb9\xc8\xca\x1c\xd4\xa0\x12\x83\xac\x35\x80\xcf\x8d\x66\xa9\x9e\x95\xa0\x96\xb2\x39\x53\x7d\xc4\x0f\xaf\x91\xd3\x98\x0b\xc5\x17\xa5\x2e\x4a\xed\x6a\xd9\x04\x6d\xe9\x84\x42\xbb\x45\x55\x70\xa0\x41\xf6\xdf\x76\x2d\xb8\x45\x48\x41\xb5\x06\xc9\xdf\x91\xff\x3e\xf8\xdb\x57\xbf\x0e\x0f\xbf\x3e\x38\xf8\xe9\xcd\xf0\x3f\x7e\xfe\xea\xe0\x6f\x23\xfc\xc7\xbf\x1e\x7e\x7d\xf8\xab\xff\xe3\xab\xc3\xc3\x83\x83\x9f\xbe\xfb\xf0\xed\xcd\xe5\xd9\xcf\xec\xf0\xd7\x9f\x78\x99\xdf\xda\xbf\x7e\x3d\xf8\x09\xce\x7e\xde\x72\x92\xc3\xc3\xaf\xbf\xec\xbc\x74\xca\x17\x1f\x3b\x12\x50\x3b\x86\xbd\x95\x22\x5a\x9e\xb1\xa7\x00\xeb\xfb\x61\xad\x34\x0d\x19\xd7\x43\x21\x87\x76\xea\x77\x44\xcb\xb2\x1b\x31\xa9\x99\x52\xdf\xe7\xdf\xf7\x1e\x7b\x57\x33\xa4\x8a\x5d\x3f\x9b\x03\xae\x20\x91\xa0\x3f\x87\x25\xc7\xbe\xc9\xcb\x29\x4b\xc1\x8e\xaf\x8d\xcf\xfd\x16\x8c\x3b\x55\xb0\x20\xee\x6b\x2d\x89\x4e\xa4\xc8\x47\x24\x70\x6f\xcc\x31\xd3\xc3\xdd\x77\x0b\x1d\xac\xa0\x7e\x44\x63\x50\x34\x06\x6d\x18\x8f\x1a\x83\xae\x2d\x1e\x3e\x5b\x4b\x10\xf0\x79\x5b\x17\xc6\x5a\x0f\xba\xd7\x75\xb4\x20\x85\x28\xca\x8c\xea\x0d\x9e\xb1\x35\xee\x74\x77\xd4\xeb\x48\xe4\x3a\x92\xc6\x32\xb4\x7c\xbd\x0f\x93\x1c\x67\x19\x61\xdc\x1e\x7c\x9c\xc0\x3b\xcc\x24\x58\xd5\x86\x50\xeb\xcf\x9e\x9b\x25\xdc\xb9\x92\x75\x61\xb8\xa7\x22\x4a\x53\xa9\x31\xea\x18\x4b\xda\x59\x56\xe2\xbc\x4f\x8c\xd7\x85\xed\x2a\xe1\xb0\x4a\x02\x59\xdb\xd7\x33\xa3\x4a\xfb\x65\xe3\x6a\x34\xbd\x45\x6f\x63\x02\x29\xf0\x04\x30\x23\xad\x84\xfa\x5b\xc7\x46\x6f\x23\x67\x7c\x6e\xe7\xa0\x24\x2d\x6d\x30\x88\x25\x7f\xeb\xe7\x78\x5d\x01\x08\x06\x11\xaf\x7d\xfb\xe5\x2a\x0e\x01\xa9\x7e\xa5\x61\x57\x89\x7d\x95\x95\x55\x3d\x4d\xe4\x41\x77\x9e\x59\x79\xb6\x3a\x09\x43\x2b\xcc\xb2\x36\x3f\x37\x99\xe4\x6b\x70\x06\x76\x67\x9f\xbf\x39\xd6\xd9\x13\xdb\xec\x87\x65\xee\xe0\x3b\xe9\x93\x4d\xf6\xe1\x2c\x29\x24\x4c\xd8\x7d\x4f\xe7\xf4\x98\xd7\x96\x18\x96\x02\xd7\x6c\xc2\x6c\xc7\xfe\x42\x42\x01\x3c\xad\x8a\xa2\x62\x56\x38\x6f\xc2\xe6\x59\x06\xf3\x58\x81\xbb\x5f\x52\x76\xbd\x4e\xd8\x8f\x74\x8c\x44\x3a\xd6\x7a\x7c\x26\x3a\xe6\x30\xf7\xf9\x10\x31\x8c\x3c\xef\x1e\xfa\x7e\x1a\xc4\xb1\x23\x16\xef\x8c\x65\x75\x42\xd7\x11\xce\xa2\x96\xaa\x07\x55\x74\x51\x0b\x1b\xb9\x46\x66\x6c\x6a\xc0\x6a\x2b\x0a\x59\xa1\x89\xe4\x94\xd3\xa9\xcd\xea\xd6\xc2\xdb\x69\x8d\x96\x65\x90\x58\xb2\xb4\x21\xdc\xdb\xd7\x30\x4e\x0c\x62\x67\x82\xa6\x78\x51\x8a\x2c\x03\xa9\x48\xc6\x6e\x81\x9c\x42\x91\x89\x85\x4b\xd2\xe6\x29\xb9\xd6\x54\x1b\x94\xbe\x06\xdd\xce\xe7\xdb\x09\x5d\x71\xc5\x97\x65\x96\x5d\x8a\x8c\x25\xad\x2c\x2a\xcd\x6d\x3b\xc7\xfd\x2a\xca\x2c\x23\x05\x4e\x39\x22\x1f\x39\x52\x8c\xe3\xec\x8e\x2e\xd4\x80\x5c\xc0\x1c\xe4\x80\x9c\x4f\x2e\x84\xbe\xb4\xa2\x77\x33\xda\xce\xde\x48\xd8\x84\xbc\xc3\x9a\x36\x9a\x68\x3a\x45\xc5\xc9\xfb\x00\x07\x06\xfe\xe1\x04\x96\x38\xdc\x31\xb5\x56\x53\xe9\x8c\x38\x5f\xe0\x4c\x86\x50\xd9\xbf\x3f\xfb\x36\x65\x6c\x02\xc9\x22\xc9\xba\x9f\xab\xe3\x04\xa3\x17\xea\x3c\xf3\x00\xbf\x5d\x99\x76\x97\xda\x89\x2a\x20\xe3\xc4\xd6\x4f\xb7\x85\xe1\x6b\x54\xaf\x56\x64\x55\x5d\xd5\xab\x86\xd8\x9a\x73\x76\xe5\x99\x85\x50\xfa\xda\xa8\xe7\xbd\x54\x59\xdf\xbf\xf4\xd3\x11\xac\x25\x9d\x65\x90\x12\x96\xe7\x90\x1a\x15\x3e\x5b\x10\x3a\xd1\x98\x62\xdb\x30\x0f\x24\x12\x2c\xd6\xba\xda\x25\x33\xca\xd3\x0c\x24\x99\x50\x96\x39\x63\x40\xe3\x7e\x0d\x32\x67\x1c\x6d\x02\xd6\x1d\x8b\xf6\x05\xf3\x57\x92\x08\xe9\xeb\xde\x33\xad\xfc\xa5\xfa\x60\x22\x13\x09\x10\x60\xd9\xaf\x4c\xc6\x99\x48\x6e\x15\x29\xb9\x66\x99\x5d\x8c\x10\xb7\x24\x11\x79\x91\xe1\xd1\xe9\x70\xb2\xaa\x7f\x0e\x2b\x54\x1a\x9a\xd9\xd5\xd1\x17\xf5\x25\xfc\xa1\x2d\x37\xef\x41\x0a\xeb\x43\x06\x83\x7b\x48\x7a\x4b\xef\x37\xb4\xd4\xec\x32\xfa\xfb\x05\xaf\x44\xb1\x89\x30\x0c\xcc\xec\x75\x9d\x98\x5d\x91\xcb\x11\x39\xbb\x87\x24\xa8\x42\x81\xfd\x21\x90\x10\x60\x56\x28\xbd\x85\x57\x54\xf6\xae\x43\xf2\x5d\x38\x1a\x60\x3f\xb1\x73\xfa\xaa\x59\xee\x15\x24\x63\x1c\xc9\xa2\x4b\xc8\x23\x8c\x2b\x23\x10\x34\xce\x90\x3d\xb1\x4e\xd0\x25\x29\x93\x58\x33\x61\x51\x05\x5f\xfb\xb9\xb0\x1c\x81\x10\x9a\x1c\xec\x1f\xed\x1f\xae\xd8\x2c\xf7\x8d\xe0\x92\x81\x25\xd1\xd6\x80\x99\xd4\x8b\x52\x2c\x2f\xb2\x05\xae\x63\x3f\x1d\x10\xa6\x7d\x74\xb6\x2c\xb9\x5f\x95\xcb\x12\x1c\x10\x25\x88\x96\xd4\x97\x62\xb1\xbf\x9a\x9b\xb4\x2c\x1d\x73\x38\xd8\xff\x75\x7f\x40\x40\x27\x87\xe4\x4e\xf0\x7d\x8d\xcb\x1f\x91\x1b\x61\xc4\xef\x7a\xa2\x85\x28\x09\x07\x9b\x0c\x00\xf7\x45\xc6\x12\xa6\xb3\x05\x12\x3a\x22\x4a\x6d\x33\x8e\xa9\xf6\xd9\x89\x67\xf7\x4c\xbb\x18\x37\x83\xb6\x6f\x10\x9a\x96\xd8\x11\x6a\xa4\xa3\x39\x1c\xcd\x80\x66\x7a\x66\x03\x4b\xb8\xe0\xc3\x7f\x82\x14\x98\xb7\xc8\xdd\x95\x57\x57\x22\xb0\x17\x6d\xc3\xd0\xde\x6f\xa1\xbf\xa6\x42\x7f\xb9\xb9\xb9\xfc\x16\xf4\x12\xc9\x30\x6f\xf1\xe1\x3e\x68\x41\x00\x39\x11\x32\x7f\x06\xb4\xa3\x1f\x07\xe7\x90\x14\x42\x3e\x07\x12\x36\x13\xaa\xd3\x5e\x92\x95\xfd\x14\x4a\xa3\x12\xe5\x84\x38\x0e\x89\xd9\xc1\x66\xdc\x89\xef\xbb\x73\x7e\x39\x22\x7f\x15\xa5\xf9\x9a\x31\x1d\x67\x8b\xaa\x6e\x83\x02\x4d\xf6\xcc\x54\x7b\x86\x3c\x19\x6c\xf8\x0b\xd0\xd4\x68\x36\x86\x7a\x00\x7d\x1e\xfd\xb5\x88\x3b\x0f\x6e\x6d\xfd\xf2\x81\x52\x69\x91\x93\x99\xfb\xec\x66\xba\xa6\x3b\x19\x23\x3c\x3d\x3e\x17\x4a\x42\x61\x29\x9c\x7b\xe6\xd5\xd1\xaf\x15\xba\x61\xe1\xee\x7e\x1f\x63\xcd\xab\x24\x04\x9b\x6b\x30\x65\x93\x89\xb8\x05\x96\x41\x35\x68\xe7\x5e\x09\xc7\x33\x2e\x54\xda\x3a\xf9\x73\x79\x22\x74\x04\x76\x8f\x0f\xeb\xb5\x4c\x69\x3f\xb1\x06\x64\x9d\x61\xd6\xe1\x8c\x35\xda\xf4\x04\xc4\x4f\x53\x27\xf3\x73\x00\xa0\x9f\xcd\x27\x7d\x42\xa0\xe8\x21\x1c\x7c\x35\x18\x5c\x0b\xa3\xbe\x62\xba\xa6\x25\xae\x48\x26\x14\xc8\x79\xdb\x04\xf0\x7a\xf4\xf7\xe9\xa2\xbd\xa1\xc0\x8f\x35\xb9\xd5\x92\xf0\x32\x1f\x83\xac\xb3\x59\xa4\x5e\x05\x48\x10\xcd\x70\x61\x6f\xf7\x26\xe0\x66\x3b\x47\xf3\xe4\x9f\xfe\xed\xdf\xfe\xf0\x6f\x23\x3b\x7d\x15\xd9\xc0\xc9\xf9\xf1\xc5\xf1\x2f\xd7\x3f\x9c\x60\x42\x6d\x57\xa8\xf6\x14\xb6\xd9\x77\xd0\x66\xaf\x21\x9b\x9f\x34\x60\x13\xd3\x44\x3a\x53\x91\xa6\xbf\x00\xa7\x34\x18\x60\xf4\x36\xa3\x71\x3a\xd9\x2f\x28\x6d\x66\x64\xcd\xa6\xfd\xd5\x1c\xb5\x67\x71\xc6\x74\x52\x5c\x8b\xe4\xb6\x47\xbd\x66\xff\xe6\xe4\xd2\x4e\x19\xd6\xe4\xe4\xde\x18\xc2\xf8\x5c\x64\x73\x5b\xce\xf7\xe6\xe4\x12\x4f\xde\x08\xff\x85\x86\x28\xd4\xa8\x17\xe6\x59\x9f\xc8\xe0\xdc\x53\x46\xfb\xb6\x16\x34\x4a\x24\xd0\x8c\x29\xcd\x12\x7c\xae\x36\x93\x9a\x19\xba\xf8\xa5\xa2\xa6\xb4\x6e\xf4\xae\x29\xed\x7f\xf4\x6e\xbb\x9d\x95\xa6\xae\x81\x87\xcf\x98\x2f\x39\x7e\x64\x33\x3e\x22\x5f\xfa\x4d\xf0\xa5\x42\xc2\xb5\x16\x45\x4f\x9e\x10\x3b\xd9\x06\x3f\xc8\x18\x26\x42\xc2\xb2\x23\x24\x70\x6c\xf8\x06\xc3\x1c\xb3\xff\xbc\x09\x4a\x34\x9c\x17\x36\xe4\x52\x95\xc9\xcc\x5b\x13\x39\x28\x75\x84\x2e\x8f\xb2\xb0\x2a\x26\x3a\x51\x4a\x09\x03\xf3\x75\x90\xe3\xea\x06\x75\x1a\x83\x79\x3d\x70\xfb\x23\xe8\xc4\x9a\x59\xbd\xff\xc5\x59\x54\xfd\xf2\x97\x5d\x25\x89\xa4\x6a\x06\x58\x3f\x04\xee\x59\xdd\xe7\x84\x2a\xc1\xad\xb1\xd7\x7d\x0e\x32\x1a\x45\x0a\xaa\x54\x5d\xc1\xd9\xbd\xc4\x3e\x74\x29\xd2\xfd\x7d\xd5\x78\x60\x2a\x69\x02\xa4\x00\xc9\x44\x4a\x30\x9f\x38\x15\x77\x9c\x8c\x61\xca\xb8\xf2\xf0\x33\x13\x79\x40\x1b\x76\x63\x8b\xed\xfa\x6a\x71\x23\x72\xd5\x28\x82\xe2\xd2\x93\x12\x51\x9f\x68\xb7\x8a\x65\x27\x13\x46\x84\x06\x6d\x9a\xab\x8d\xf1\x61\xb3\xfa\xf1\x45\xf7\xe0\x6d\x32\xa0\xad\xaf\x6d\x84\x0e\x16\xe7\xa7\xc9\xac\x9b\xe3\x37\xba\xa7\xb6\x1c\xd1\x3d\xb5\xdb\x88\xee\xa9\xe8\x9e\xda\x3c\x9e\x9d\x79\x37\xba\xa7\xa2\xd2\xb5\x3c\xa2\x7b\x2a\xba\xa7\x36\x8c\x67\x47\xbf\xa2\x7b\x6a\x8b\x11\xdd\x53\x5b\x8e\xe8\x9e\x8a\xee\xa9\xe8\x9e\x8a\xee\xa9\xdf\x90\x19\xd0\x8f\xe8\x9e\x5a\x99\x24\xba\xa7\x02\x60\x44\x4d\x69\xcd\x88\xee\xa9\x35\x23\xba\xa7\x82\x11\xf9\x52\x0b\xbe\xe4\x9d\x3b\x97\x46\x2f\xeb\x9e\xb3\x76\x89\x8e\x03\x96\x38\x1f\x51\xd8\x0b\xae\x7a\x55\xd0\xfe\x2d\xa8\xf9\xe1\x53\x6d\x9c\x37\xa8\xf6\x31\xad\xcd\x87\xda\xd5\x1d\xe1\x93\x08\xd5\x51\x21\xec\xff\xd5\xce\x88\xc0\x0b\x61\xb5\xd3\xf6\x39\x69\x4f\x96\x6d\xd5\xc5\xf5\xf0\xac\xdd\x0e\xcf\xc4\xb5\xd3\x83\xab\x21\xba\x19\x5e\x9d\x9b\xe1\xf5\xf4\xd0\x75\xce\xfc\x9b\x99\x04\x35\x13\x59\x6b\x44\x6f\x20\xf9\x07\xc6\x59\x5e\xe6\x06\xe7\x94\xc1\x67\x36\xaf\xa2\x06\x54\x85\xae\x96\xd0\x5b\x4b\xa1\xb9\x91\xa5\x80\x05\x50\x29\xcb\xcc\x36\x62\x5a\xe7\x8c\xa2\xa8\xae\xca\x24\x01\xc0\xf6\x6a\xa1\x16\xf3\x87\x51\xf5\xa6\xaa\x9d\xc6\xdb\x6e\xf4\xa6\x1b\xef\xb7\x25\x4a\x71\x96\x3f\xfc\xbe\xd5\x1c\x1d\xbd\x3c\x9f\xdf\xc3\xd3\x03\x99\xee\xae\xaf\x74\xd2\x55\xfa\xe0\x12\x5d\x75\x94\x97\xe6\xc9\xe9\xcd\xa3\xd9\x83\x07\xe7\x19\x79\x6f\x9e\x0d\x5b\x78\x2e\x1e\x9b\x67\x58\x7d\xb5\x07\x07\x43\x1f\x1e\x9a\xfe\xbc\x33\x9f\xa0\x48\xe9\xa7\xf1\xca\xf4\xa8\x0d\xf7\xe4\x8d\xf9\x1c\x9e\x98\x5e\xbe\xba\xab\x07\xe6\xf3\x79\x5f\xfa\xf9\xdc\x8e\xd6\xad\x57\xe1\x71\xe9\xc1\xaa\xd5\xa7\x45\xab\x37\x6b\xd6\x27\xf3\xb0\x74\xf7\xae\x3c\x03\xcf\x4a\x67\x20\x33\xce\x34\xa3\xd9\x29\x64\x74\x71\x0d\x89\xe0\x69\x6b\x0e\xb3\x54\xb5\xae\x3a\x3f\xca\x4e\xeb\x74\xb4\x66\xfc\xf1\x8c\xba\xe2\xbc\x90\xfa\x90\x6a\x6f\xfe\x73\x02\x05\x36\x34\xb1\xab\x7c\x96\x06\x3d\xf2\x6c\x94\x41\x1b\x8c\xdd\xe7\x26\xfe\x45\xdc\x11\x31\xd1\xc0\xc9\x01\xe3\x7e\x1f\x0f\x03\x35\xb0\xd6\xcc\x2b\xb4\x36\x57\xdf\xbe\xf1\x37\xbf\x3e\x95\x1b\x8d\x0b\x4a\x7d\x7a\x0b\x88\x7b\xd1\xe3\x26\x10\x77\xe3\xa4\xcc\x9a\x66\x10\x6b\x1a\x69\xd2\x9b\xb7\x75\x79\xd1\xb7\x38\x6f\x75\xda\x28\x4f\x89\x4b\xdc\x78\x7d\x9b\xd6\xd9\x6f\xfc\x1a\x7c\xc6\xd1\xf6\x42\xfa\xb6\xbd\x3c\x91\x6f\xf8\x19\x4a\xcd\x2f\xd4\x1f\x1c\xa5\xe6\x1d\x46\x90\xff\xf5\xad\xa4\x09\x5c\xf6\x2e\x70\xf8\xe3\x44\xd2\x52\xba\xb4\xbd\x4a\xee\xa8\x0e\x0f\x07\x48\xed\x69\xaa\x92\xe2\x30\x1b\x6d\x52\x66\xd9\x82\x94\x85\xe0\xcd\xcc\x43\xeb\xb4\x5a\x4e\x58\x33\xb3\xad\x7b\x4b\x2d\xa5\x16\x52\x38\x06\x2c\x4b\xce\x0d\x3d\xaf\x1b\x0e\xa1\x54\xaa\x2c\xad\x0e\xd3\xe2\x14\x9b\x9a\xe5\x1b\x66\x8a\x19\x73\x2c\x87\xba\x25\x45\x3d\xa1\x79\x7a\x22\x64\xc2\xc6\xd9\x82\xcc\x68\x56\x75\x97\xa0\xe4\x96\x65\x99\x9b\x66\x44\xae\x41\x13\x3d\x63\xae\x31\x38\xc9\x04\x9f\xe2\xe2\x28\xf7\x5d\xcd\x20\x31\xcf\x26\x19\x50\x5e\x16\xf6\x7d\x86\xad\x2f\x44\x29\xfd\xfb\x5c\x59\xcb\x6a\x16\xa6\x08\x67\xd9\x20\xe8\x9d\xf4\xe0\xc6\xd6\x0d\xea\x15\xf8\x9c\xc2\x3b\xa6\x60\x10\xce\xe9\x2b\xf3\xaa\xa0\x73\x46\x21\xc5\x9c\xa5\xb6\xfb\x85\x07\x1b\x76\x69\xb5\xdd\x31\xaa\xf3\xcc\x05\x1f\x72\x98\x52\x94\x7a\xdc\x29\xb2\x7b\x66\xe7\xb1\xae\x38\x9e\x62\xbf\x0c\xa3\x2e\x88\xa2\x91\xca\x3a\x67\xb6\xd3\x67\x00\x39\x72\xc0\x05\x11\xc8\x5e\x4b\xce\xb4\xed\x1e\x3d\x2b\x35\x49\xc5\x1d\x3f\x1c\xd9\xaa\xc4\x4c\x11\x4a\xc6\xa0\x7d\x27\x5b\xdf\x59\x91\x49\x50\x04\x38\x1d\x67\x66\xcf\x31\xe0\xe1\x66\x2d\x80\xc8\x04\xa8\x2e\x25\x90\x29\xd5\xb0\x56\x68\xb2\xdf\xfb\x30\x78\x99\xaa\xba\xbc\x97\x5c\x41\xeb\xfe\xd6\x3d\x4b\x5a\x7f\xfa\x63\x3b\x1a\xc1\x72\x10\xa5\xfe\x2c\xaa\xe4\xdd\x8c\x25\xb3\x50\x32\x66\x39\x28\x22\xca\x25\x1d\xfb\xad\x7b\x6c\xfd\x0e\x45\x7d\x72\xdd\x68\x6b\x25\x5e\x63\x4a\x5b\x4e\x39\xae\xdb\xca\x52\x73\x00\x4f\x2f\xae\x7f\x79\x7f\xfc\x5f\x67\xef\x47\xe4\x8c\x26\xb3\x30\x1f\x9d\x13\x8a\x44\x03\x09\xc5\x8c\xce\x81\x50\x52\x72\xf6\x8f\xd2\x56\x27\x27\x07\xd5\xb3\x87\xbd\xd6\x42\x6e\xc9\x7d\xb1\xf5\x75\x6f\xbd\x96\x6c\x23\x6d\x1b\xe0\x20\x14\x60\x77\x84\x65\xf1\xe9\xcc\x5c\xb2\x8a\x06\x8a\x5a\x33\x30\xc4\x88\xcd\x1d\x19\x76\xc5\xa5\x69\x5a\x85\x5c\x18\x3c\x37\x68\x61\x58\x15\x1d\x63\xa8\xc4\x0c\x08\x07\x6d\xd0\xba\x32\x58\x09\xae\x1a\x85\x01\x4a\x05\x6a\x40\xc6\x25\x06\x77\x14\x92\xe5\x54\xb2\x6c\x11\x4e\x66\x78\xd5\x85\xf0\xea\xd0\x62\x79\x49\xa7\x1f\xcf\xae\xc9\xc5\xc7\x1b\x52\x48\x5b\x32\x00\xa3\x33\xf0\x3a\x7e\xd6\x18\xcc\x13\xae\x47\xe7\x88\x1c\xf3\x85\xbd\x68\x0f\x38\x53\xc4\xe8\x42\x80\x2c\xd8\xc9\x90\xbe\x28\xfc\xde\x9b\x11\xfe\x6f\xcf\x7c\xa5\x34\x42\x66\x15\x74\x92\xac\x04\x8f\x59\x31\x94\x8d\xb3\x00\x9a\xee\xdb\x5f\x55\xb7\xa5\x2a\x6c\xee\xd2\x00\x31\xe8\xb6\x44\xab\xad\x46\xf0\xda\xee\x5b\x8c\x4f\xb3\x10\xab\xda\x91\xfd\xae\xba\x65\x57\xcd\x72\x58\x7f\xc1\x65\x5b\x05\xb3\x97\xae\x4f\xf5\x1a\x7a\xea\x95\x52\x73\x3f\xaf\x4e\x39\x8a\x20\xc2\xf6\x97\xe7\x97\xfe\x04\x38\xe9\x26\x5f\xea\x99\x88\x0f\x5b\xa7\xc6\x80\xbc\x21\x7f\x26\xf7\xe4\xcf\xa8\x5e\xfd\xa9\x6b\x67\x99\xae\x8a\x4f\x77\xf3\x8e\xd5\xea\xcf\x2f\x7b\x82\xf8\x8f\x86\x3a\x99\x19\x0d\x54\xb5\x20\x63\xe6\xc4\x79\xb8\xd7\x20\x0d\x1d\x75\x3b\xf1\xa4\x3d\x79\xcc\x02\x3f\x23\x9a\x59\xdf\xc5\xf9\x24\x6c\x09\xa1\x77\x44\x34\xf3\xf8\x5f\x84\xd2\x17\x8e\x0a\x35\x1b\x4c\xd4\xb3\xe5\x54\x27\xb3\x26\x19\x33\x82\x9a\xd2\xf5\x01\x53\x24\x15\x68\x49\xb3\x71\x80\x33\xd6\x21\x12\xe3\xf9\xa0\x71\x37\xe7\x7c\x63\x3f\x1f\xda\xa9\x25\x03\x0a\x6a\x3e\x4e\xb0\x0a\xca\xcb\x14\x22\x75\x32\x99\x59\x56\x1a\xf0\x8c\x07\x84\x32\x67\xab\xa9\x4c\xd6\x88\x4b\xe6\x3c\x25\x94\xdb\x00\xee\x09\x48\x69\x43\x37\xc7\x0b\xf4\x20\xb3\x04\x3a\x6f\x5e\xa7\x93\x54\x48\xa1\x45\x22\x3a\xb4\x0d\x6a\x3a\xcc\xdd\x74\x08\x04\x6b\xfc\xf5\x36\xf7\xef\x4f\x2f\x07\xe4\xe6\xe4\x12\xbb\xa9\x5c\x9f\xdc\x5c\x36\x35\x95\xbd\x9b\x93\xcb\xbd\x27\x05\x05\xf1\x92\xd5\x3b\xb3\xcc\x16\x93\x34\x0c\x4f\x46\x6c\x1b\xe6\xb4\x18\xde\xc2\xa2\x25\x4f\xed\x83\xaf\x0f\xab\x1d\xee\xe5\x83\x2c\x98\x73\x5a\xec\x3c\x9b\x04\x9a\xb2\xcf\x94\x45\xe1\x4e\x56\xfd\xce\xf5\xe9\x14\xb9\x98\x43\x6a\xc5\x61\xff\x04\xf0\xb4\x10\xcc\xc8\x8b\x31\xc7\x62\xf7\xa7\x63\x8e\xc5\x43\x23\xe6\x58\xc4\x1c\x8b\x98\x63\xf1\xf0\x88\x39\x16\x6e\x3c\xbd\x19\x94\xc4\x1c\x8b\x96\xe3\x75\xf9\xf9\x63\x8e\xc5\x4e\x23\xe6\x58\xac\x8e\x98\x63\xb1\x61\xc4\x1c\x8b\x0d\x23\xe6\x58\xc4\x1c\x8b\x98\x63\x11\xa3\xc5\x1e\x9d\xeb\x79\x46\x8b\x91\x98\x63\xe1\x46\xcc\xb1\x78\x15\x31\x31\x24\xe6\x58\x6c\x35\x62\x8e\x45\xcc\xb1\x68\x33\x62\x8e\x05\x8e\x68\x7b\x89\x39\x16\x7e\xc4\x1c\x0b\x3b\x7e\x3b\x52\x73\xcc\xb1\x88\x39\x16\x31\xc7\x22\xe6\x58\x3c\xb8\x8a\x98\x63\xf1\x1a\xf4\x49\xdf\x03\xaf\x7b\xce\xc0\xfe\x89\xc8\x8b\x52\x03\xb9\xf2\x53\x56\x52\xa4\x25\x0c\x4c\x85\x12\x41\xf7\x10\x9e\x44\xf0\x09\x9b\x3a\xca\x7e\x64\x1b\xcc\x0d\xab\xef\x19\x06\x4d\xdd\x5e\x60\xfc\x4e\xc6\x72\xd6\x2e\x91\x83\xac\x6c\xcc\x7b\x9c\x2b\x70\xf2\x98\x93\x94\xd3\x7b\x3c\x22\x34\x17\xa5\x6d\xca\x97\xb8\xfd\xab\x40\x68\x5d\x61\xcf\x6e\x67\x48\x3f\x2a\x4e\x9d\x91\x72\xd9\x83\xb6\x51\x50\xad\x41\xf2\x77\xe4\xbf\x0f\xfe\xf6\xd5\xaf\xc3\xc3\xaf\x0f\x0e\x7e\x7a\x33\xfc\x8f\x9f\xbf\x3a\xf8\xdb\x08\xff\xf1\xaf\x87\x5f\x1f\xfe\xea\xff\xf8\xea\xf0\xf0\xe0\xe0\xa7\xef\x3e\x7c\x7b\x73\x79\xf6\x33\x3b\xfc\xf5\x27\x5e\xe6\xb7\xf6\xaf\x5f\x0f\x7e\x82\xb3\x9f\xb7\x9c\xe4\xf0\xf0\xeb\x2f\x5b\x2f\xb9\xb3\x48\xdc\x9f\x40\xdc\x93\x38\xfc\x49\x84\x61\xe7\x1d\xee\xe9\x2c\x5e\xb9\xd9\x96\x4f\xa3\x63\x58\x0f\x9d\x46\x4f\x4d\x51\xcc\xab\xe6\x61\x8a\x88\x9c\x69\x23\x1c\x1a\x79\x90\x86\x71\x61\x4c\x37\x94\x52\x47\x07\x30\xa0\x92\x6a\xdb\x23\xb4\x8a\xa9\x0a\xe2\xb4\x85\x97\xfc\x5c\xef\xd5\xca\x5e\x81\xe7\x79\x98\xc2\x84\x71\x70\x7e\xb0\x48\x1b\x1e\x1f\x91\x36\xbc\x46\xda\xa0\x20\x29\x25\xd3\x8b\x13\xc1\x35\xdc\xb7\xb2\xb0\x34\x49\xc3\x75\x73\x42\x62\xcf\x99\xcb\xa2\x74\xd7\x88\x28\x6c\x00\xe5\x52\x3a\x6b\x15\x82\x2b\x4b\x8e\x0a\xa6\xcd\x92\x01\x6d\xb5\x3f\xd4\x7b\x30\x26\x72\xf9\x25\x5e\x9f\xb3\x6a\xe6\x3f\x4a\x36\xa7\x99\xd1\x76\xeb\x27\x2e\x51\x83\x09\x1f\xda\xf6\xcc\x6b\xaa\x6e\xeb\x03\x0f\x43\x23\x43\x57\x6b\x3e\xf2\x9f\x84\x3f\xc1\xbd\x7e\x89\x52\x1a\x0a\x48\x97\x92\xcd\x59\x06\x53\x38\x53\x09\xcd\x90\xae\xf5\xc3\x2b\x8e\x37\xcc\x8e\x1b\x2f\x45\xa6\xc8\xdd\x0c\xb0\xbb\x32\xf5\x26\x00\xcc\x70\x99\x52\xc6\x49\x6e\xb6\xa8\xf0\x0f\x2b\x6b\x4b\x30\xe4\xbf\xa0\xd2\x6c\x70\x65\x33\x40\x15\x79\x2c\x44\xe6\x42\x87\xb3\x45\x3d\xbf\x8b\xbd\xe7\xe2\x17\x0e\x77\xbf\x98\xd9\x14\x99\x64\x74\x5a\x99\x0a\x14\xe8\x15\x6b\x5f\x3d\xf5\xc6\x0f\xc0\xb8\xdc\x12\x08\xcd\xee\xe8\x42\xd5\x86\x93\xb0\x0f\xf8\x3b\xf2\xf6\x10\xd1\x99\x2a\x52\xcd\x91\x92\xdf\x1f\xa2\x2f\xf1\xe4\xf8\xf2\x97\xeb\xbf\x5e\xff\x72\x7c\xfa\xe1\xfc\xa2\x1b\xa7\x30\xdf\x0e\x94\xb7\x9a\x23\xa1\x05\x1d\xb3\x8c\x75\x61\x10\x2b\xd1\x26\xe1\xa4\xc8\x82\xd3\xf4\x28\x95\xa2\xb0\x70\xf2\x36\xaa\x9a\x53\x36\xb5\xe0\x30\x33\x19\xb7\x67\xd2\x9c\x70\x2a\x29\xd7\xb5\xb1\xa6\x06\xb9\x2c\xb9\x51\xac\x5f\x78\x60\x3e\x4d\xfb\x0b\xca\x3f\x4e\x53\x48\x1b\xd0\x7b\x75\x41\x80\x27\xfe\xe3\x16\x75\x8e\x36\xb9\xfc\x78\x7d\xfe\xbf\x97\xd0\x70\x51\x74\x8b\x79\xea\x27\x2f\x4c\x8a\xa2\xb7\xdd\xbd\x72\x79\x47\x71\x7f\x9f\xc5\xfe\x56\xbc\xaa\x1f\x4f\xfb\x55\xc9\x9b\x65\x3c\xea\xf9\x49\x2e\x52\x18\x91\xcb\xca\x4a\xdf\xbc\x1a\xa4\xf7\x52\x09\xc4\xdc\xc2\x35\xa3\x59\xb6\x08\x05\x24\x2d\x6c\x32\x4d\x23\x33\x39\xa4\xc3\x13\x9a\xa9\x8e\xc4\xb4\x0b\x67\x32\x4c\xf8\x83\x51\x26\x7b\x81\x66\x35\x1b\x49\x81\x0b\xed\xa4\x52\xb3\x4a\x4c\xd6\x96\x22\x21\x56\x73\x0d\xc2\xa2\x1a\xdc\x45\x59\x43\xbf\x67\x4c\x4c\x79\x58\x5d\x56\x33\x5b\x2b\x6f\xa9\x60\x59\xba\x75\x8c\xa9\xd6\x65\xcd\xec\x12\x68\x8a\x39\x69\x05\xd5\x33\x1b\xd5\x90\x53\x75\x0b\xa9\xfd\xc1\xc9\x35\x95\x99\xdf\xcc\x58\xbd\xea\xc6\xac\xdb\xdb\xf4\x51\x9e\xb1\xb1\x16\xe8\x0b\x68\x57\x74\x83\xf4\x71\x04\xcc\x37\x7d\xe4\xd9\xe2\x4a\x08\xfd\x4d\x95\x8b\xd5\xcb\x06\xfe\xe8\x24\xc5\xa6\x19\x16\x45\x29\x0c\x42\x48\x87\x08\x4c\x44\xe9\x30\x0d\xec\xb4\xde\xb0\x27\x46\x68\x59\xf2\x63\xf5\xad\x14\x65\x6b\x0e\xb0\x22\x68\x7d\x7b\x7e\x8a\xe7\xb8\x74\x5e\x36\xae\xe5\x02\xb3\x4e\x57\x0b\x06\x55\x32\xed\xf7\xce\x4f\x18\x62\x64\xed\xd2\x21\x1f\xe8\x82\xd0\x4c\x09\x2f\x1c\x33\xbe\x56\x81\x72\xda\x99\xb9\x3c\x16\x7a\xb6\xa2\x96\x19\x74\x5e\x7d\x6e\x10\x38\xdd\xea\x0a\x46\x8c\xaf\x3c\xae\xe9\x2d\x28\x52\x48\x48\x20\x05\x9e\x74\xdc\xb5\xa7\x76\x35\xe1\xce\x5f\x08\x6e\x8e\x45\x2f\x7b\x7f\x5e\xf9\x18\xd1\x10\xd6\xdc\x69\xf4\x56\x3a\xbd\x83\xa2\xcf\x12\x0f\x45\xa9\x40\x5a\x07\xab\x2c\xc1\x6e\xc4\x77\xe5\x18\x32\xd0\x56\x19\xc2\xba\x13\x54\x5b\x45\x9a\xe5\x74\x0a\x84\xea\x0a\x51\xb4\x20\xc0\x95\x21\x37\xd6\xf4\xa6\x49\x2a\xa0\x4e\xa0\xa4\x8a\x7c\x7f\x7e\x4a\xde\x90\x03\xf3\xae\x43\xdc\xfe\x09\x65\x19\xba\x33\x35\x95\xcb\x6b\x64\x13\x3f\x05\x2e\x09\x71\x8f\x08\x69\x8f\xe8\x80\x70\x41\x54\x99\xcc\xfc\x9a\x8c\xc6\xe5\x15\x36\x17\xcf\x87\x46\xfd\x57\x88\xaa\x9d\x09\xcc\xf7\x0a\x64\x6f\xf4\xe5\xfb\x16\xf4\x25\x14\x21\x0c\xce\x35\xa1\x67\x11\x2b\x07\x4d\x53\xaa\xa9\xa3\x3b\x75\xd6\xf5\x6b\xdc\xd2\xa7\xa6\x3e\x0a\xde\x33\x5e\xde\xdb\x88\x95\xfe\x94\xfc\xeb\x33\x9c\x96\x24\x1e\x68\xb8\x69\xb4\x28\x32\x66\xf3\x9d\x97\x22\xa8\xce\x1b\x5b\x3d\xd8\x20\x22\xe1\x31\xa7\x59\x26\x0c\x79\x33\x9c\x9d\xf2\x54\xe4\x2b\x2f\x33\x02\x14\x34\x0a\xdd\x8d\xc8\xab\x44\x9e\x27\x37\x47\x64\x30\x87\x0e\x35\x5d\x96\xeb\xf2\x99\xd9\x8c\x2c\xe6\x37\x14\xa7\x27\x19\x1d\x43\x66\x39\x8b\x45\x20\xb5\x8a\x40\x4f\x1d\x85\x28\x45\xd6\x5f\x0e\xc6\x95\xc8\xc0\x86\xf5\x78\x40\x98\xe9\x5f\x04\x1c\x70\x92\xbe\xe0\x80\x8a\x4c\x03\x0e\xa8\x92\xbd\x04\x38\x94\x1d\x18\x2d\x59\x86\x83\xe1\xda\x4d\x38\x20\xeb\x7c\xee\x70\x50\x90\x24\x22\x2f\x2e\xa5\x30\x2a\x57\x6f\xac\xc5\x4d\x5b\xfb\x8a\xac\x4e\xbe\x26\x08\x07\x49\x79\xf3\x66\x2a\x83\x80\x3e\xaa\x2d\x8d\xf7\x51\x7d\xff\x2b\xec\x90\x6c\x48\xcf\x32\x1f\xf2\xb3\x34\xdc\x4a\xe6\x49\x77\xe1\x85\x97\x13\xe8\x60\x25\xeb\x85\x99\x88\x84\x66\x58\x72\xaf\x1b\xc6\x90\x65\xac\x59\x9e\x38\x88\xc2\x44\xd7\x12\xfe\xe6\xfd\xfe\x58\x7d\x0d\x7f\x71\xb6\x2f\x2e\x52\x08\x5c\x90\x36\x7c\xf4\xc6\x46\xeb\xe1\x7d\x3e\x00\xd4\x70\x75\xef\x0d\x4c\x1b\x4f\x6b\xe1\x2a\xc0\x7c\xa8\x0a\xf9\x99\x05\x02\x4f\x19\x9f\xa2\x45\x67\x40\x24\x64\x36\x74\xd4\x9d\xe1\x5b\xab\x7e\xed\x23\x46\xfb\x49\x3d\x3a\xfb\x57\xa3\x24\xc4\x04\x77\x33\xa3\x91\xc3\xcb\x37\x13\x4b\x2d\x99\x22\x7b\xef\x3d\x00\x3a\x54\x3e\x7b\x8e\x0c\x62\xcf\x7e\x61\xb5\x9b\xd6\xc6\x76\xcb\x78\xea\xa2\x2c\x1b\xc0\xaa\x6a\xd4\x5a\x29\x14\xe3\x77\x59\x1a\x92\x86\x77\xe4\x6f\x9c\x54\xc0\x22\xc3\xd6\xe8\x71\x65\x05\x56\x6f\x5e\x1a\x3e\x6c\xf2\xab\x5e\xb2\x3c\xcd\xf7\x1c\xf7\xde\xbc\x77\x68\xd4\xde\xd5\xfb\xfc\xb7\xec\x3d\xe5\xbe\xde\x31\x9e\x8a\x3b\xd5\xb7\x0e\xf1\xa3\x9d\xd6\x0b\xd4\x89\x41\x6b\xcd\xf8\x54\x85\x7a\x04\xcd\xb2\x86\x19\x76\x9d\x22\xe1\x77\xb8\xaa\x48\xbc\x2a\xc0\x2f\x45\x87\x47\x25\x60\x87\x31\xcd\x15\x3d\x91\xe6\x53\x34\xa3\xd9\x75\xd1\xbe\x34\x1b\x59\x46\x83\x6f\x3f\x5c\x1f\x37\xa7\x36\xf4\xec\x0e\x2b\x5e\x1b\x60\x9b\xeb\x84\xa6\x39\x53\x0a\xcd\x40\x30\x9e\x09\x71\x4b\x0e\x7c\xd8\xc6\x94\xe9\x59\x39\x1e\x25\x22\x0f\x22\x38\x86\x8a\x4d\xd5\x91\x43\xda\xa1\x59\xfd\x21\x61\x3c\xab\xa2\x51\x50\x8d\xe4\x5a\x79\x33\x06\xbe\x24\xa9\x56\x81\x7b\xeb\xea\x75\x3a\x2f\xf3\xea\x32\x6d\x85\x4e\x06\xd9\xd3\x17\x9c\x59\xdd\x9e\x8b\x8e\xb5\x33\x1e\xd9\x22\xfc\x76\x97\x9a\x12\xa6\x51\xad\x85\xa3\x95\xde\x9e\x1c\x48\x4e\x3a\x48\x40\xf5\x57\x95\xe7\x2f\xf5\x9c\x24\x05\x9b\x3d\x01\x18\x75\x42\x37\x06\x37\xa1\x55\x76\x1f\x93\xf0\xdc\xa3\xfb\xa1\x44\x8b\x5e\x1f\x9b\xe6\x61\xf4\x81\xac\x98\xd1\xa1\x55\x92\x0d\x49\x42\x1a\xe6\x65\x80\x99\xe0\xc2\x05\xa7\x1b\x2e\x28\x38\xa2\x34\x6a\x0b\xd6\x11\x84\x7b\xe2\x68\x6c\xb0\xd4\x93\xda\x3f\x18\xfa\x90\x30\x89\xc7\x16\x01\xa8\xd7\x70\xc7\xf4\xcc\x57\xb8\x6f\x38\x9c\x70\x25\x12\x14\x7a\x0f\x38\x01\x29\x85\x74\x81\x30\xde\x6a\x8b\x33\x21\x29\xc6\x48\x1a\x83\x24\xd4\xfc\xb5\xaf\x42\x17\x65\x5d\x02\x17\xe3\xc4\x0c\x36\xc1\x64\x02\x09\x4a\x4a\x21\x80\x2d\xd9\x3d\xa8\x2b\xf7\xb9\xe8\x6e\x83\x60\xae\x84\x6e\xce\xee\xcd\x5b\xc2\xa7\x42\x67\xa8\xab\x98\xb7\xfe\xf2\xe1\x88\x90\x73\x5e\x45\x4e\x0e\xcc\x2e\x86\x77\xfa\x90\x1f\x6d\x3e\x31\xac\xbf\x8c\x1f\x10\xda\x9d\x8c\x78\x27\xcb\x1e\x30\xbe\x8b\x31\x98\x84\x06\xe1\x5e\xc9\x01\x1a\x86\xdd\xa4\x66\xeb\x3d\x13\xef\x62\x28\x36\xb7\x7c\x2a\x63\xf1\xcb\xe0\xf4\xa4\x2b\x9d\x73\x29\xf1\x3d\x15\xc5\xbd\x0e\x66\x0b\xc4\xef\xca\xdd\x74\x29\x52\x5b\x12\xa3\x4a\xe9\xc7\x5e\x16\x58\xa2\x83\xfd\xd3\x0b\x58\xb5\x90\xc6\x85\x8d\xca\x0e\x6b\x65\xb8\x9a\xa0\x29\x31\xb2\x72\xe6\x75\xfb\xbc\xc8\x00\xb3\xe7\x82\x99\xeb\xc4\xc0\xa0\x8a\xee\xa0\x5a\x48\x5d\x88\xd7\x55\xe8\x18\x90\xff\xc1\x43\x59\x05\x00\xfa\xe2\x01\x97\xd5\xe3\x56\xc5\x63\xca\x97\xd4\xc6\xcc\x36\x2d\xbc\xe9\x80\xa4\x6c\x32\x01\x1f\x68\x68\x54\x3f\x2a\x69\x6e\x48\xbc\x22\x0e\x04\x63\x98\x32\x1b\xc9\x56\x11\xb6\x7d\x55\x67\xc0\x0f\x2c\x31\x64\x9a\xe4\x6c\x3a\xb3\x88\x42\x28\x66\x46\x12\xef\x52\xcb\x04\x4d\x09\xe2\xb6\x90\xe4\x8e\xca\xdc\xf0\x0d\x9a\xcc\xd0\x3f\x47\x39\x49\x4b\x89\x65\x22\x35\xd0\x74\x31\x54\x9a\x6a\x23\xea\x82\x74\x1a\xa1\x5f\x7f\x2c\x25\xfc\xe0\x88\xa5\x84\x37\x8f\x58\x4a\x38\x96\x12\x8e\xa5\x84\x1f\x1e\xb1\x94\xb0\x1b\x4f\x9f\xed\x4b\x62\x29\xe1\x96\xe3\x75\x95\xb3\x89\xa5\x84\x77\x1a\xb1\x94\xf0\xea\x88\xa5\x84\x37\x8c\x58\x4a\x78\xc3\x88\xa5\x84\x63\x29\xe1\x58\x4a\x38\x16\x45\x7b\x74\xae\xe7\x59\x14\x8d\xc4\x52\xc2\x6e\xc4\x52\xc2\xaf\xa2\xf4\x13\x89\xa5\x84\xb7\x1a\xb1\x94\x70\x2c\x25\xdc\x66\xc4\x52\xc2\x38\xa2\xed\x25\x96\x12\xf6\x23\x96\x12\xb6\xe3\xb7\x23\x35\xc7\x52\xc2\xb1\x94\x70\x2c\x25\x1c\x4b\x09\x3f\xb8\x8a\x58\x4a\xf8\x35\xe8\x93\x4a\xa7\xac\x55\xe5\xb3\x6d\x0a\x55\xb8\xc8\x90\x20\xb5\x75\x5c\x4e\x26\x20\x91\x72\xe1\x9b\x57\xa2\x10\xaa\x82\x56\x15\x2d\x73\x71\x06\x58\x16\x4f\x02\x4d\x5d\xc0\xfb\x86\xc7\x5d\x2e\x2d\x56\x28\xab\x23\x35\xcf\x3e\x7e\xd3\x4f\x55\x8c\x6e\x31\x8a\xb8\xe6\x8f\x3c\xe9\x1e\xab\x56\x03\x7c\x5d\x02\x86\x83\x7b\x92\x09\xe5\x22\x4c\x11\x58\xc9\x8c\x72\x0e\x5e\x79\x64\x1a\x8d\x32\x63\x00\x4e\x44\x01\xdc\xd2\x6f\x4a\x14\xe3\xd3\x0c\x08\xd5\x9a\x26\xb3\x91\x79\x13\xf7\xc0\xae\xa3\x41\xdd\x2f\x4a\x4b\xa0\xb9\x8f\x8b\xcd\x29\xb3\x53\x11\x9a\x48\xa1\x14\xc9\xcb\x4c\xb3\xa2\x9a\x8c\x28\xc0\x80\x76\xcb\xa8\x2a\x60\x60\x78\x49\x1d\x42\x3a\xa8\xdf\xe6\x96\x25\xc2\xa2\x40\xa8\xba\x0e\xb0\x0e\x6a\x5e\xe8\x45\x15\x47\x07\x64\xc2\xa4\xd2\x24\xc9\x18\x72\x6b\x7c\xa3\xcd\x1d\xc4\xf9\x06\x9e\x57\x73\xb7\x52\xe5\x96\xca\x53\x14\x5b\x0b\xad\x6c\x54\x5a\x3d\xa1\x9b\x2a\x65\xca\x89\xf9\x6a\x40\xa8\x2f\x79\x63\x01\xed\x57\x8a\xa0\xf6\x9c\xc5\xce\xee\x7e\x0a\xa6\x0b\xea\xe4\xd5\x61\x7b\x35\xa2\x63\x88\xb1\x47\xce\x41\x23\x9a\xba\x16\x28\x30\xdc\x65\xe5\x18\xe0\x06\x70\x98\x1b\x1c\x80\x04\x0c\x7f\xa5\x1b\xb0\xfe\xb3\x23\x7d\xc0\x14\x3f\x80\x52\x74\x0a\x97\x2d\xbd\x16\x9b\x34\x32\x74\x5c\xd4\x1b\x83\xa8\x90\xd9\xf4\xb4\xea\x97\x3a\xcc\xa9\x29\x06\x91\xdc\xae\xa9\x12\x7e\xee\x24\xd3\x1a\x70\x53\xb1\x38\x12\x3a\x3e\x97\x13\x50\xf7\x97\x82\xa5\x3e\xf8\x49\xea\x87\x0d\x51\xe7\xa9\x0d\x5d\x1a\x03\x19\x4b\x06\x13\x32\x61\x18\x0f\x85\x11\x4a\x03\x5b\xee\x83\x5a\x8b\x82\x52\x46\xdf\x15\xdc\xcb\xb2\x7e\x5d\x23\xf2\xa3\x5b\x98\x96\x25\x4f\x68\x50\x04\x10\x53\xb4\xd8\x84\x4c\x31\xc2\xc9\x49\x8b\x7f\x7c\xf3\x1f\x7f\x22\xe3\x85\x61\x69\x28\x59\x69\xa1\x69\x56\x7d\x64\x06\x7c\x6a\x60\x65\x8f\x67\x33\xc9\xa8\x82\x00\x56\x31\xb7\x0b\x7f\xfb\xfb\xdb\x71\x93\xc7\x1e\xa5\x30\x3f\x0a\xe0\x37\xcc\xc4\x74\x5d\x5d\xf8\xf6\x21\x93\x2d\x55\xa2\x35\x68\x26\x32\x96\x2c\x3a\x23\x9a\xaf\x3b\x43\x66\xe2\xce\xca\xfa\x6b\xb0\xa7\x8e\x81\x2c\x44\x51\x66\xd6\x82\xfd\x4d\x95\x9e\x57\x2a\x58\xcd\xc1\x59\x7b\x2e\xd0\xe6\xea\xa6\x58\xae\x17\x6b\x03\xdb\xfc\x2b\x85\x8b\xed\x76\x56\xc1\xaa\xfc\x0c\x2a\x42\xdf\xd0\x2c\x1b\xd3\xe4\xf6\x46\xbc\x17\x53\xf5\x91\x9f\x49\x29\x64\x73\x2d\x19\x35\xd4\x72\x56\xf2\x5b\x5b\xb9\xba\x4a\x11\x16\x53\x23\x5a\x15\xa5\xf6\x81\xc4\xeb\x3e\xd8\x26\x9c\x7a\x22\xec\xd5\xa0\x7a\x16\xb8\x67\xb5\xae\xe3\x52\x25\x2c\x46\x86\xf3\xab\x10\xd9\x7e\xff\xe6\x8f\xff\x6e\x51\x97\x08\x49\xfe\xfd\x0d\x06\x3f\xaa\x81\x3d\xc4\x48\xdb\x0c\xa3\xc8\x69\x96\x19\xb5\x21\x44\x4a\x03\xe8\x75\x48\xf8\xd9\x71\x50\x77\x47\xb7\xad\x45\xa9\x9b\x9b\xbf\xa2\x1c\xc5\xb4\x82\x6c\x32\xb0\x59\x01\x95\x5a\xb3\x8f\x8c\x61\xdf\x51\x1f\x4c\xcd\x78\x06\x02\xd0\x5c\x64\x65\x0e\xa7\x30\x67\x7d\x34\xaf\x68\xcc\xe6\x55\xfd\x8c\x29\x4c\xc0\x18\x67\x22\xb9\x25\xa9\xbb\x18\x84\xb1\x2c\x97\x50\x6d\x0f\x85\xb6\x01\x3d\x1d\x02\x79\x36\x7e\x7f\x23\x84\x27\xa7\x45\x51\xc5\xe8\x4b\x7a\xd7\x00\x06\x9e\x49\xcc\xf7\xed\x58\x4f\xa1\xb3\x99\xb9\xab\x91\x79\xe8\xbe\xc8\xd0\xcd\xd6\x53\xb4\x0e\x61\xe9\x6e\xa3\xae\x57\xdf\xde\x30\xd9\x40\x88\x7a\x42\x7f\x1a\x0a\xfc\xb7\x0d\xcf\x5e\xc9\x4a\xaa\x12\x5b\x2a\xc4\xb0\x02\x80\x41\x1f\x24\xc9\xed\x0d\xae\x3d\x58\x37\xbb\xc5\x2f\x35\xe0\xc2\x2b\xab\x72\x4e\xb5\x13\x08\xbd\xf9\x9a\x92\x02\xa4\x62\xca\xf0\xe5\x1f\xf0\x40\x9d\x64\x94\xe5\x81\x09\xf0\x69\x80\x60\x0f\x37\x56\xbe\xec\x4e\x29\x2f\x45\xea\x26\x44\x52\x68\xab\x7e\xae\x11\x6b\x9b\x52\x6d\x8f\x0c\xf5\xa9\x49\xe5\x0f\x35\x34\x9b\x94\xd2\xfc\x52\x91\x4a\x7b\xd7\x6b\x22\x90\xf8\x7d\x2f\x95\x3e\x56\x8b\xef\x89\x0c\x20\x61\x74\x9b\xdb\xa4\x84\x0d\xe5\xd1\x1e\x94\x40\xa4\x77\x7a\xe0\x88\x58\x97\xba\x39\x13\xee\x51\xb2\xff\x6e\xff\x49\x89\xa4\x05\x91\x14\x05\x9d\x76\xea\x61\xb0\x04\xa9\xe5\x69\xc3\x44\x6f\xa3\x06\xe1\xf5\xaa\xec\x10\xde\x05\x69\x5d\x88\x02\xcb\x8c\x58\xef\xa8\x07\xb0\x53\x10\x6c\x3e\xe4\x1d\x5d\x10\x2a\x45\xc9\x53\x67\x5f\xaa\x0c\x7c\x1f\x96\x5e\x7c\x21\x38\x78\xc3\xf9\x72\x9e\x38\x5a\xf4\x19\x27\x6f\x47\x6f\xdf\xbc\x16\x4e\x85\x5f\xb8\xc4\xa9\x2e\x2a\x4e\x65\xe9\xd3\x93\x7e\xab\xaf\x76\xdc\xd3\xf7\x7e\x70\x26\x96\xba\x98\x31\xf3\xc5\x5a\xf1\xa7\x3b\xc9\x34\x04\xbd\x8d\x0e\x50\x71\x31\xfa\x61\x90\x15\x7d\xd8\x63\x0d\xef\x7e\xd2\xd0\x55\x39\xfe\x84\x74\xcb\x11\x28\x3c\x6e\xeb\x2c\x5c\xea\x01\x12\x16\x02\x6a\x6f\x8f\x1c\xd8\x3b\xf7\x6d\x66\xe0\xe1\x93\xa2\x96\x03\xda\xd9\x7d\xd1\xa1\xc6\x5c\x03\x70\x67\xf7\x05\x45\x1b\x5c\xd1\x23\x04\xff\x0b\x66\x74\x0e\x98\x11\xc9\x32\x2a\x33\xf4\x39\x5e\xdb\xb5\x93\x71\xa9\x09\xf0\x39\x93\x82\x63\x80\xcf\x9c\x4a\x86\x55\x29\x24\x60\x66\xb5\xd1\x45\xbf\x3c\xf8\xe1\xf8\x0a\x03\x1a\x0e\x5d\x4a\xb8\x5b\x65\xa9\x7c\xf9\x88\x70\x25\xc1\x74\x8f\x6e\x9f\x5f\x87\x81\x21\xd2\x5c\xbf\x2e\xf3\x9e\xbc\xd4\xa5\x2d\x88\x7f\x9f\x64\xa5\x62\xf3\xa7\xa2\x24\x2e\x55\xf5\x94\xb5\xda\xe7\xa5\xb4\xd9\x1a\x50\x2b\x19\xb0\x68\x5a\x47\xd6\xf2\x48\x05\xd6\x7d\x55\xd5\xac\x0a\x7d\xe0\xce\xf4\xe4\x72\xd9\x6d\x2c\x9e\x2f\x59\xb6\x22\x42\x60\xdd\x86\xa7\x35\x42\xa5\x5c\x9d\xe0\x0a\x77\x03\x6b\x33\xba\xb9\x91\x14\x78\x7a\x71\x1d\x16\x01\xb0\xea\x92\x48\x47\xe4\xb2\xfe\xb1\xae\x14\x81\xf5\x8b\x2a\x25\x12\xe4\xb4\xae\x89\x3b\x05\x0e\x12\x85\x04\x33\x65\xa3\x9d\x1c\x19\x53\x65\x9d\x3c\xa7\x17\xd7\xd6\x66\xbb\x1b\xcc\x5a\x8b\xd9\xed\x25\x54\xc3\xf1\x6d\x4e\x44\x0b\xe1\xb6\xd9\xad\xa6\x32\x58\x19\xc0\xa0\x52\x6a\x27\x26\xe7\x97\x84\xa6\xa9\x44\xb7\x8f\x13\x7d\x82\x52\x6f\x95\x6f\x01\xab\x32\x50\x05\xe1\x9a\x02\x70\x23\x89\xab\x01\x4b\x4e\xcb\x22\x63\xd6\x8d\x10\x3e\x50\x57\x93\xc0\xf6\x2a\xbb\x23\x6d\x17\x35\xaf\xb5\x92\xd7\x81\x0a\x89\xb6\x55\xdd\x1e\xd8\x3d\x09\x4a\x64\xf3\xba\xa0\xe6\xd2\xae\xb9\x13\x81\x26\xf1\x6a\xd7\x7c\x11\xb7\xad\x76\x0c\xb8\x96\xe6\x68\x2e\xef\x16\x76\xef\xcd\x4a\x3c\x4d\xd5\x84\x6c\x0e\xe8\x1f\x77\xf5\xeb\x5c\x19\xa5\xba\xc4\xa7\xf5\x0d\xdb\x2a\xab\x40\xa5\xa7\x68\xb8\xaa\x96\x27\x91\x3c\x15\x22\x2c\x1b\x3b\x4e\x2f\xae\x2d\x25\xb4\x1f\x5f\x75\xe5\x5b\xb7\x4b\x35\x55\x6b\x8d\x81\x4f\x56\xe5\xa3\x8b\xe6\xb1\xd4\x56\xc9\xb5\x29\xed\x14\xc8\xd2\x41\xfc\xeb\x94\xb9\xd7\xe1\xed\x0a\xa8\x4c\x66\x6d\xe0\xff\x00\x21\xb0\x93\x92\x54\xd8\x48\x80\x89\x90\xa8\x12\x0f\x91\xbc\x67\x42\xdc\x96\xc5\x36\x14\xdd\x4d\x63\x7b\xe5\x6c\x45\x20\x1a\x4f\xfc\xa6\x68\x7a\xca\x55\x1b\x7f\x6f\x53\xf6\x01\x6d\x25\x1e\x9c\xa8\xce\xc6\x10\xcb\x7a\xd3\x49\x56\x2a\x0d\xf2\x1b\x26\x95\xde\xf3\x05\x57\x11\x83\xad\x4d\x64\x3f\xbc\xe1\x47\xa6\x67\xae\x74\xda\xfe\xa0\x79\xc9\xfc\xed\x26\xde\x37\x3a\xed\xfe\x85\xe0\xb0\x3f\x5a\x16\xbb\x2a\x52\x5e\x91\xb5\x8d\x3c\xc5\x2d\x5d\x41\x66\xe3\x45\xf1\x42\x80\x2b\x37\xae\x6c\x9c\x79\x83\xa7\x7f\x0a\x34\xa1\x58\xa2\x09\xef\x9e\xd5\x65\xde\x6c\x01\x16\x5b\xa7\x4e\x38\x41\x6f\x11\x82\x28\xa8\xc9\xa2\xc5\xe6\xcf\x6e\x23\xcf\xed\x8c\x01\xb6\xfc\xdf\x35\xc8\x39\x4b\xe0\x3d\xe3\xb7\x3b\xa2\x5f\x33\xba\xe4\x6c\x65\xb6\x46\x41\x5e\xeb\xa3\x65\xdc\x06\xdf\x19\x16\x43\xc7\xa2\xd4\x28\xbb\xa1\xc3\xb1\x56\x1c\x19\xff\x1f\xbb\x17\x68\x6f\x2f\x6c\xc5\xac\x75\x3a\xa2\x1a\x58\xa3\x8f\x57\x02\xd5\x82\x6b\x8a\xb5\xfd\x4e\x45\x72\x0b\x92\x64\x66\x19\x23\x52\x07\xbe\x34\xaa\xc9\xc9\x12\x76\x8c\xba\x68\x6b\xe9\x80\x62\x06\x39\x48\x9a\xd5\x45\x15\x3b\x80\xfa\xbd\x23\x9c\xd5\xac\x61\x4c\x8a\xad\x2e\xe4\xca\xa0\x99\x73\x78\xb6\xee\xae\x9c\x2e\x7c\xa5\x49\xc6\x31\xdc\xe0\x9e\x29\x34\xeb\x17\x22\x0d\xb3\xd8\x4a\x05\x72\x58\xe5\x18\xba\x3c\x1e\x55\x05\xe2\xa4\x30\x2e\xa7\x53\xc6\xa7\x8e\x3a\x23\x4d\xaf\x6b\x8d\xd5\x9a\x0e\x46\x7a\x27\x12\x6c\xc1\x47\x94\x1e\x6c\x7c\x19\x0b\xef\xcf\x45\x6a\x6f\x1f\x2f\xac\x36\xe8\x77\xb6\x0e\x90\x3e\xe7\x44\x48\x57\x67\x81\xa6\x29\xae\x7d\xf5\x0b\x5d\x4b\xef\xf0\xab\x06\x55\x1c\x87\x8d\xec\xae\x9e\x0a\xc0\xa2\xca\xb1\xef\xd1\xfd\x58\x8d\x4d\xa6\x6c\x81\xaf\xa0\xbc\xa6\x57\x0d\x96\x6b\x6b\x9e\xad\xee\xbe\x8f\x8f\x6e\x73\xce\x77\x67\x2f\xad\x58\x4b\x93\x5b\xf3\x35\x5f\x61\xc3\xc4\x97\xbc\xa3\x0e\xb3\x28\xf6\x14\xd5\x90\x17\x42\x52\xc9\x2c\xb9\x5b\xc6\x33\xc3\x2f\xd6\x20\xd8\xdc\xf6\x6a\x5c\x83\x63\x6b\x71\x19\xa9\x2d\x17\x55\x0b\x79\xc3\x17\x54\x32\x83\xb4\xc4\x28\xf5\x69\x49\xb1\x15\xac\xa1\x16\xce\xa8\xbe\x70\xe1\x7f\x16\xe9\xaa\xc0\xc2\x2a\x1d\x61\x81\xc1\x38\x58\x6d\xcf\xfc\x82\xd8\x6a\x43\x10\x6d\x2b\x4d\xec\xcb\x17\x46\x23\x6e\x40\xc2\x84\x62\x9b\x3f\xea\x0f\x15\xdc\x27\x60\xc8\x9a\x56\xf5\x62\x5d\x7c\x0a\xd6\x12\xf5\x98\xee\x60\x08\x73\x96\xe0\x1b\x36\x1e\x61\xf7\x05\x16\xd8\xe3\x45\xdd\xda\x78\xc3\xe1\xb9\x31\xdf\x56\x25\x0b\xe1\x53\x3e\x45\x60\xab\x43\xb1\x0c\xc1\xa6\x22\xe4\xdf\x43\x04\x4f\xdc\xf4\x41\x3e\x01\xb7\x47\xa8\xca\x0c\x70\x5d\x08\x7d\x74\xc9\x03\x87\xc4\xd6\x9d\xdd\x11\x7d\x3b\xe8\x19\xed\x9d\x88\xad\x9c\x7f\x5d\x54\x1a\x2a\xa7\xdd\xd5\xbf\xfd\x63\x39\x2d\x73\x5b\x16\x58\x2c\x55\x66\x75\xfd\x2c\x2d\x3b\x45\x8b\x9d\x61\xc6\x27\x1f\x4e\xc3\xe4\x8c\x30\xea\xdc\xa7\xb6\x18\x21\xaf\xa3\x25\x77\xd9\x94\x6b\x0e\x5a\x6d\x1f\xae\xb9\x86\xd3\x4f\x9d\xad\xb2\x7a\x9b\x47\x4b\xc6\x0b\x23\x67\xa0\x74\x54\x5b\x2b\x79\x32\xa3\x7c\x8a\x06\x7e\x51\x9a\xf9\xbe\xfc\x12\x57\x24\x21\x2d\x13\x57\x52\xde\x47\x76\x7f\xe9\xed\x9a\xae\xd2\x11\xf6\x95\x52\x09\x2d\xfc\x9a\xc3\xcf\xb2\x42\xc8\x3b\xc2\x46\x30\x22\x7b\x5f\x06\x97\xf6\xec\xdb\x0b\x29\xcc\x2b\x5c\x50\x38\xae\x2a\x63\x1a\x8f\xf7\x5e\x78\xf7\x88\x9c\x99\x77\xa0\xaf\xa7\x02\x60\x10\xb7\x3c\xae\xc1\x37\x20\x12\xa6\x54\xa6\x19\xe6\x12\x4e\x2a\x71\xcb\x66\x1c\x39\x80\x21\xe9\xc5\x48\x41\x2e\xf4\x3a\xbb\xeb\x4e\xfd\xee\xad\x90\x36\x4c\xa9\xa6\x43\x2c\xc3\x6f\x89\xd8\x91\x35\x1c\x0c\x5d\x21\xc4\x21\x75\xa8\x15\x74\xc4\xff\xc2\xe5\x8c\x0d\x69\x75\x17\xe3\x43\x3a\xc4\x92\x84\xed\xa3\x60\x9f\x20\x60\xa2\x93\x0e\xdf\xa1\x1e\xe6\xb2\xe0\x5d\x95\x51\x46\x18\x8c\xc8\x85\xd0\x75\xd9\xdc\x2a\x36\xc3\x95\x7c\x5c\x77\x9e\xcf\x2e\x6e\xae\xfe\x7a\xf9\xf1\xfc\xe2\x26\x1e\xeb\x78\xac\xe3\xb1\xee\x70\xac\x81\xcf\x3b\x1f\xe9\x4a\xc1\x5b\xa7\xf3\x2e\x95\xe2\x0b\x52\xc6\x5f\x51\xf4\xd9\x19\x9f\xff\x40\x65\xdd\xcb\x1d\xe5\xc7\xb5\x6e\x62\xdf\xec\x1d\x49\xdc\xc9\x8b\x0f\x3f\x7b\xc2\xe0\xb1\x1e\x83\x72\x2e\x82\x4a\x07\xeb\x76\x2d\x6c\x80\x75\xf2\xcb\xf9\xe9\xd9\xc5\xcd\xf9\x37\xe7\x67\x57\x4f\x1a\x4d\xd1\xb1\x14\x5e\x93\x29\xb7\xe4\x92\x85\x84\x39\x13\xa5\xca\x16\x55\xa3\xa9\xf5\x44\x60\x35\x20\x8f\xa7\x84\xf2\x85\xb7\xa7\xad\x7f\x2c\x32\xdb\x7e\x99\x6d\x33\xb8\xa4\x43\xe1\x92\xbe\xd0\xf7\x1b\x29\x5a\x37\xd2\x5f\xb6\xed\x5b\xfb\x84\xb7\xe9\xaf\xc3\xa7\x7d\x57\xe3\xa0\xc1\x7a\x9c\xf0\x58\x17\x54\x30\xc2\x68\x5e\xe8\x0e\x65\xc2\x7b\x29\x7e\xda\x4f\x9d\x50\x1b\x88\xf1\x81\x16\xdf\xc1\xe2\x0a\x3a\xd6\x47\x59\xf2\xa5\x64\x90\x18\x46\x47\x6e\x61\x61\x5d\xac\x27\xfe\x65\x5d\xea\xb8\x3c\xcb\xda\xb1\xb7\xd0\xa5\xae\x6f\x9f\x45\x5f\x6f\xa1\x43\x64\xa6\x1f\x2b\xe5\x4f\xcd\x16\xa2\x9c\x66\xf6\xb4\xdb\xee\x91\x7e\x0b\xbe\x7e\x82\x22\xb7\xfb\x21\xbb\x77\x74\x56\xef\x5c\x3e\x42\xcc\x0d\xe7\x82\xbb\x23\x17\x95\x36\x34\x8a\xeb\xd0\x62\xad\x3a\xc2\xd0\x9b\xa3\x2f\xf0\x3f\xae\x28\xd8\x71\x9a\xba\xe8\xe8\x52\xc1\xa4\xcc\xac\xad\x5e\x8d\x08\x2d\xd8\x0f\x20\x15\x9a\x54\x6f\x19\x4f\x07\xa4\x64\xe9\xd7\x5d\xaa\x4a\xd9\xd1\xe3\x2e\x08\xef\x91\xea\x77\x27\xae\x9d\xc3\x31\xe4\x5d\x15\x11\x21\x36\xf5\x11\x71\xd3\xdb\x80\x9d\x90\xd1\x13\x68\xba\x76\xa2\x22\x76\x0b\xfb\xa5\xab\xfb\x35\x61\xb5\xce\x9c\xaa\x02\x57\xfa\xce\x17\x9a\x53\x55\xfb\xa8\x91\xc1\xb0\x41\xf3\x4f\x55\xd0\x04\x06\xe4\xef\xd5\x8f\xd8\x70\x59\xfd\xb4\xbf\xff\xe7\xef\xce\xfe\xfa\x9f\xfb\xfb\x3f\xff\x3d\xbc\x8a\xac\x10\xb5\xe6\xa5\x5b\xd0\x06\xcf\x45\x0a\x17\xf8\x0e\xfc\xd3\x89\x6b\xc7\x49\x22\x4a\xae\xdd\x05\x4c\x5b\x1e\xcd\x84\xd2\xe7\x97\xd5\x9f\x85\x48\x97\xff\x52\x9d\x4a\xa5\x3d\x4b\xc6\x80\x5b\xd4\x21\xfd\xc6\x8e\xfe\xd8\x43\x4d\x4b\x7a\x3e\xaa\x6e\x56\x8f\x8d\x58\x72\xd7\x7a\x62\xbe\xf1\x20\xc0\x16\x97\xbe\x3e\x02\xc7\xa4\x72\x23\x99\x36\xeb\xe6\xed\xcd\xdf\x76\x6a\xe6\x6b\x47\x8f\xa4\xad\xda\xc1\x9e\x01\x86\x10\xf1\xad\x94\xf0\x20\x57\x0c\xd6\x6b\x29\xb5\xbb\xf9\xf8\xf2\x9c\xcc\x2d\x84\x9f\x0d\x70\xbc\x13\xed\x9b\x4f\x4a\xe3\x6a\x2f\xe8\x52\xf2\xea\x3b\xeb\xaf\xf6\xd7\x5d\x21\x01\x55\xd5\xf6\x02\xa3\xd8\x1c\xd8\x1f\x47\x49\x51\x0e\xdc\x0d\xa3\x1c\x72\x21\x17\xd5\x9f\x95\x8b\x70\xa8\xb4\x90\x74\x8a\x89\x27\xf6\x71\xfb\x58\xf5\x97\x7d\xb0\xf1\x82\xd5\xa7\xad\x2a\x9c\x94\xd2\x08\x0d\xd9\xa2\x2e\xfd\xf9\xfa\x68\x9b\x07\xfd\x33\x21\x6d\x15\x66\x74\xed\xfb\x68\x47\x13\x21\xeb\x20\x01\x14\x38\x2b\x28\xa2\x3e\xe9\x12\x6b\x07\x95\x18\x64\xad\x01\x7c\x6e\x34\xcb\xd6\xa5\xc1\xea\xd1\x23\x35\x4b\xd9\x9c\x29\xd1\x21\xbd\xa6\x9a\x68\x73\xce\x80\xab\xed\x61\x23\xa3\x2a\xb3\xd9\x7d\x81\xd5\x90\xaa\xf3\xba\x44\xf6\xdf\x76\xe9\xf4\x6d\x47\x41\xb5\x06\xc9\xdf\x91\xff\x3e\xf8\xdb\x57\xbf\x0e\x0f\xbf\x3e\x38\xf8\xe9\xcd\xf0\x3f\x7e\xfe\xea\xe0\x6f\x23\xfc\xc7\xbf\x1e\x7e\x7d\xf8\xab\xff\xe3\xab\xc3\xc3\x83\x83\x9f\xbe\xfb\xf0\xed\xcd\xe5\xd9\xcf\xec\xf0\xd7\x9f\x78\x99\xdf\xda\xbf\x7e\x3d\xf8\x09\xce\x7e\xde\x72\x92\xc3\xc3\xaf\xbf\xec\xbc\xf4\x1e\x8a\x93\xda\xd1\x67\x89\xd2\xe6\x8c\xbd\xa0\xdf\x27\x2c\xf2\x6f\x87\x47\xaf\xbe\xcf\xbf\x0f\x8f\x7e\x57\x33\xa4\x8a\x5d\x3f\x9b\x03\xae\x20\x91\xa0\x3f\x87\x25\xc7\xbe\x29\x08\x94\xd9\x57\xa4\x52\x2d\x5e\x1b\x9f\xfb\x2d\x18\x77\xbc\xd8\x6e\xf7\xb5\x96\x44\x27\x52\xe4\x3e\xed\x1d\xdd\x1b\xd8\xe6\xda\xdf\x77\x0b\x9d\x9a\x25\xda\x11\x8d\x41\xd1\x18\xb4\x61\x3c\x6a\x0c\xba\xb6\x78\xf8\x6c\x2d\x41\xc0\xe7\x6d\x5d\x18\x6b\x3d\xe8\x5e\xd7\x09\x6b\xc4\x6d\xe7\x50\x1b\xf9\xa3\xae\x2a\x4f\x5c\x1d\x49\x63\x19\x5a\xbe\xde\x87\x89\x5d\xec\x19\xb7\x07\x1f\x27\xa8\xf3\x4a\x5c\x57\x03\x5b\xc2\x10\xe6\x66\x09\x55\x0d\xec\x46\xb5\x4b\x8c\x2e\xc5\x98\xd7\x1f\x6d\x08\xea\xad\x8d\x4a\x35\x4a\x1a\xe3\x75\x9d\xd0\x4a\x38\xac\x8b\x4b\x53\xa5\x44\x62\xa3\x69\xab\x2c\x07\x2c\x5d\xe7\x96\x8d\xab\xc1\x3e\xd3\x41\x3f\x72\x5b\x78\xba\xfe\xd6\xf1\x02\xeb\x61\xf2\xb9\x2f\xbe\x9d\xfa\x9c\x19\x5c\xc9\xfa\x39\x5e\x57\x00\x82\x41\x44\xe7\x04\x0b\xe2\x10\x90\xea\x57\x1a\x36\xc5\x50\x0c\x31\xa9\xad\xac\xed\xda\xfc\x75\xe6\xe2\xdd\x79\x66\xe5\xd9\xea\x24\x0c\xad\x30\xcb\xda\xfc\xdc\x64\x92\xaf\xc1\x19\xd8\x9d\x7d\xfe\xe6\x58\x67\x4f\x6c\xb3\x1f\x96\xb9\x83\xef\xa4\x4f\x36\xd9\x87\xb3\xa4\x90\x30\x61\xf7\x3d\x9d\xd3\x63\x5e\x5b\x62\x58\x0a\x5c\xb3\x09\xb3\x39\x34\x85\x84\x02\xb8\x4d\x5e\xa0\xc9\x0c\x69\xbf\xe3\x94\xb5\x73\xfa\x39\x06\xf3\x58\x81\xbb\x5f\x52\x76\xbd\x4e\xd8\x8f\x74\x8c\x44\x3a\xd6\x7a\x7c\x26\x3a\xe6\x30\xf7\xf9\x10\x31\x8c\x3c\xef\x1e\xfa\x7e\x1a\xc4\xb1\x23\x16\xef\x8c\x65\x75\x9e\xd3\x11\xce\xd2\xca\xfa\xdc\x09\x19\xf0\xb5\x97\x65\x96\xf5\x54\x7d\x7b\xff\x1c\xa1\x51\x94\x59\xe6\x92\x8e\x47\xe4\x23\xc7\xf3\x78\x8c\x5d\x1e\x06\xe4\x02\xe6\x20\x07\xe4\x7c\x72\x21\xf4\xa5\x15\x6c\x9b\xb1\x6c\xf6\x46\xc2\x26\xe4\x9d\x51\x99\x94\x26\xda\x56\xda\x0f\xea\x02\x09\xd9\x98\xa0\x2e\x39\xd6\x21\x06\x7d\xf3\xb6\x7c\xe1\x33\xda\x86\x4f\xb4\x4d\x55\x2b\x93\x1e\x74\x53\xdf\xb2\xce\x45\xc7\x61\x44\xa4\x73\x8d\xac\xcb\xe9\x7d\x81\x65\x36\x0a\xa1\xf4\xb5\x51\x61\xfb\x69\x73\x73\xe9\xa7\xc3\xce\x11\x34\xcb\x20\x6d\xf4\x39\xb2\xfd\x39\x68\x53\x85\xc6\x6c\xe3\xaa\x5d\x04\x90\x19\xe5\x69\x06\x12\x4b\xbe\xab\xe5\xba\x56\xac\xee\x71\x50\x75\xa5\xf0\x69\xa1\x34\x49\x84\x4c\x5d\xb3\x5a\x97\xbc\x89\x8b\xa9\x8e\x17\x12\xda\x9c\x72\x3a\xb5\x5d\x0a\x57\x0a\x07\x63\x39\x69\x15\xb4\xb6\x98\x09\x71\x4b\x12\x91\x17\x19\x1e\x80\x0e\xe7\xa3\xee\xac\x53\xa1\xe8\x10\xbb\x29\x1e\x05\x4d\x77\xf0\x87\x27\xec\x8e\xd8\x87\x9c\x02\xf7\x90\xf4\xd6\x95\xcf\x50\x44\xb3\xcb\xe8\x13\x17\xbc\x12\x57\x26\xc2\x1c\x46\xb3\xd7\x75\x3d\x82\x8a\xe8\x8d\xc8\xd9\x3d\x24\x41\x67\x4b\xf3\x84\x6b\x6d\xa9\x05\xda\x43\xba\x77\x2c\xee\x6c\xca\xef\xcb\x7c\xde\x21\x41\x2d\x1c\x4b\xd5\xe7\x70\x4e\x5f\x6c\xdb\xbd\x02\xfb\x16\xd8\x04\x69\x4c\x5a\xf3\xf5\xb7\x1b\x67\xc8\x9e\xd8\x95\x92\x75\x55\x80\xb2\x9f\x0b\x13\xb5\x85\xd0\xe4\x60\xff\x68\xff\x70\xc5\xae\xb7\x54\xb1\xf9\x26\x78\x92\x61\x89\xc2\x02\xeb\xfd\x41\xb2\x9f\x0e\x08\xd3\x9e\x46\xdb\x4a\x09\xb8\x2a\x97\x49\x37\x20\x4a\x10\x2d\x69\xca\x9c\xe6\x84\xbf\x9a\x9b\xb4\x2c\x5d\x99\x84\x83\xfd\x5f\xf7\x07\x04\x74\x72\x48\xee\x04\xdf\xd7\xb8\x7c\xac\x29\x52\xaa\x60\xa2\x85\x28\xb1\x75\x9f\x05\x41\x55\x20\xc4\x10\x3a\x22\x4a\xdb\xe7\x67\x46\xb5\xcf\xe0\x3b\xbb\x67\xda\xf7\xb6\x10\x13\xf2\xc6\xb6\x19\x02\xea\x2c\x8b\x19\x9b\xc3\xd1\x0c\x68\xa6\x67\x36\xf8\x82\x0b\x3e\xb4\x9d\xe2\x0c\x05\x72\x57\xba\xfa\x21\xba\x99\xe9\xc2\xd1\xc1\x64\xb7\xba\xa0\x8e\x12\xb9\xa1\xbd\xdf\xb6\xef\x85\x4b\x56\xda\x44\xdf\xdc\x5c\x7e\xdb\x68\x86\x8b\xc4\x5f\xeb\xc2\x87\xc4\x04\xc5\x36\x9e\x01\xed\xe8\xc7\x09\xd8\xa9\x93\x2d\xe9\x91\x84\x75\xed\x68\x4b\x56\xdb\x7e\xef\xd6\xca\x96\xfc\x55\x94\xd8\x82\x8f\x8e\xb3\x05\xb9\xa3\x5c\xfb\xf4\xbd\x3d\x33\xd5\x9e\x21\x4f\x06\x1b\xfe\x02\x34\x05\xa9\x90\x7a\x00\x6d\x5d\x54\xcc\x8f\xde\x9c\x53\xc1\xda\xfa\xe5\x03\xa5\xd2\x22\x27\x33\xf7\xd9\xcd\x94\x46\x77\x32\x46\x78\x7a\x7c\xbe\x90\x84\xc2\x52\x38\xf7\xcc\xab\xa3\x5f\x2b\x74\xc3\xc2\xbd\x51\x7c\x3f\x09\xc1\x16\xb6\x68\x61\xdc\x02\xcb\x36\x57\xec\x89\x96\xf6\x10\x54\x40\x7a\x0c\x2c\x20\xdd\x12\x24\x97\x27\x42\x67\x59\xf7\x18\xaa\xde\x62\x15\x48\x6f\xfe\x78\xb2\xce\x78\xe9\x70\xc6\x46\xce\xf6\x04\xc4\x5e\xbd\xe0\xa4\x7b\x0a\x66\x38\x1e\x06\x40\x3f\x9b\x4f\xfa\x84\x40\xd1\x43\xc8\xf4\x6a\xc0\xf4\x4a\x8b\x71\x24\x13\xb6\x52\xd5\xb3\xe1\x32\x5d\xfb\xad\x93\xf5\xf9\xc7\x92\xf0\xaa\x3d\xae\x7e\x11\x3d\xd7\x49\x7f\xa1\x8d\x7d\x07\x36\xf6\x1a\xd6\xf8\x49\x83\x1a\x31\x95\xa2\x33\x15\x69\xda\xd4\x71\x4a\x83\x01\x46\x6f\x33\x1a\xa7\x93\xfd\x9c\x51\xc8\xb7\xf0\x68\x5a\x51\xcd\x51\x7b\x16\x67\x4c\x27\xc5\xb5\x48\x6e\x7b\xd4\x6b\xf6\x6f\x4e\x2e\xed\x94\x81\x6a\x43\xb9\x37\x86\x30\x3e\x17\xd9\xdc\x56\xfa\xbb\x39\xb9\xc4\x93\x37\xc2\x7f\xa1\x21\x0a\x35\xea\x85\x79\xd6\x07\xfb\x3b\x17\x8e\xd1\xbe\xad\x05\x8d\x12\x09\x34\x63\x4a\xb3\x04\x9f\xab\x6c\x5b\x38\x43\x17\xdf\x4d\xd4\x94\xd6\x8d\xde\x35\xa5\xa0\xdb\xec\xae\x4a\x53\xd7\xe0\xbc\x67\xcc\x97\x1c\x3f\x92\x55\x33\xb5\xc8\x97\x7a\x9a\xef\xf9\xf2\xa5\x42\xc2\xb5\x16\x45\x4f\x9e\x10\x3b\xd9\x06\x3f\xc8\x18\x26\x42\xc2\xb2\x23\x24\x70\x6c\xa4\x25\xb8\x42\x9c\xc7\x97\xe7\x95\x09\x4a\x34\x9c\x17\x36\x2c\xd1\x57\xdf\xcc\xd8\x1c\x38\x28\x75\x84\x2e\x8f\xb2\xb0\x2a\xa6\xef\x9b\x3b\x30\x5f\x07\x79\x61\xeb\x57\x56\xa1\xfe\xae\x6b\x2f\xfe\x08\xda\x16\x9e\xac\xfc\x2f\xce\xa2\xea\x97\xbf\xec\x2a\x49\x24\x55\x33\xdb\xd1\x16\xee\x99\x76\x5d\x99\x25\x50\x25\xb8\x35\xf6\x06\xcd\x75\x99\x22\x05\x55\xaa\x2e\x03\xee\x5e\x62\x1f\xba\xb4\xa5\x83\xc3\x07\xa6\x92\x26\x40\x0a\x90\x4c\xa4\x04\x73\x6e\x53\x71\xc7\xc9\x18\xa6\x8c\x2b\x0f\x3f\x33\x91\x07\xb4\x61\x37\x80\xb6\x61\x5f\x51\x6d\x44\xae\x1a\x85\x42\x5c\x0a\x4f\x22\xea\x13\xed\x56\xb1\xec\x64\xc2\xa8\x49\x04\xaf\x6d\x2b\x53\x6d\x4c\xd8\x69\xe7\x91\x45\xf7\xe0\x6d\xb2\xcd\xa0\xfc\xb5\x8d\xd0\xc1\x82\xa7\x34\x99\x75\x73\xdf\x46\xf7\xd4\x96\x23\xba\xa7\x76\x1b\xd1\x3d\x15\xdd\x53\x9b\xc7\xb3\x33\xef\x46\xf7\x54\x54\xba\x96\x47\x74\x4f\x45\xf7\xd4\x86\xf1\xec\xe8\x57\x74\x4f\x6d\x31\xa2\x7b\x6a\xcb\x11\xdd\x53\xd1\x3d\x15\xdd\x53\xd1\x3d\xf5\x1b\x32\x03\xfa\x11\xdd\x53\x2b\x93\x44\xf7\x54\x00\x8c\xa8\x29\xad\x19\xd1\x3d\xb5\x66\x44\xf7\x54\x30\x22\x5f\x6a\xc1\x97\xbc\x73\xe7\xd2\xe8\x65\xdd\xdb\x08\xa3\x76\x87\xf5\xfc\x5e\x69\x5a\x53\x17\x1b\xff\xb3\xb6\xef\x3f\x13\x1f\x4a\x0f\x36\xfd\x68\xcf\x7f\x75\xf6\xfc\x7e\x6c\x61\x3d\xd8\xc1\x3a\x93\x72\xe7\x35\xbf\x99\x49\x50\x33\x91\xb5\x46\xf4\x06\x92\x7f\x60\x9c\xe5\x65\x6e\x70\x4e\x19\x7c\x66\xf3\xca\x3d\xaf\xea\x96\xcc\xe8\xb5\xb7\x26\x39\x73\x23\x4b\x01\xab\x71\x52\x96\x99\x6d\xc4\xfc\xc9\x19\x45\x99\x58\x95\x49\x02\x80\xbd\xbe\x42\x75\xe1\x0f\xa3\xea\x4d\x55\x6f\x87\xb7\xdd\xe8\x4d\x37\x26\x6b\xeb\x65\xe2\x2c\x7f\xf8\x7d\xab\x39\x3a\xba\x53\x3e\xbf\x2b\xa5\x07\x32\xdd\x5d\x31\xe8\xa4\x14\xf4\xc1\x25\xba\x2a\x03\x2f\xcd\x65\xd2\x9b\xeb\xb0\x07\x57\xc9\x33\x72\x93\x3c\x1b\xb6\xf0\x5c\x5c\x23\xcf\xb0\x14\x68\x0f\x96\xfc\x3e\x5c\x21\xfd\xb9\x41\x3e\x41\xc5\xcc\x4f\xe3\xfe\xe8\x51\xed\xec\xc9\xed\xf1\x39\x5c\x1e\xbd\x7c\x75\x57\x57\xc7\xe7\x73\x73\xf4\xf3\xb9\x1d\xcd\x48\xaf\xc2\xb5\xd1\x83\xf9\xa8\x4f\xd3\x51\x6f\x66\xa3\x4f\xe6\xca\xe8\xee\xc6\x78\x06\x2e\x8c\xce\x40\x66\x9c\x69\x46\xb3\x53\xc8\xe8\xe2\x1a\x12\xc1\xd3\xd6\x1c\x66\xa9\x84\x5a\x75\x7e\x94\x9d\xd6\xe9\x68\xcd\x40\xdf\x19\x75\x95\x62\x21\xf5\xb1\xcb\xde\xa4\xe7\x04\x0a\xb4\xc6\xd9\x55\xb6\xa9\xc3\x74\x27\xe4\x6d\x26\x68\xaa\x8e\x0a\x61\xff\xaf\x0e\xe3\x0d\xe2\x77\xed\xbb\xba\x05\xf0\x3e\xb5\x32\x68\xa3\x9e\xfb\xdc\xc4\xbf\x88\x3b\x22\x26\x1a\x38\x39\x60\xdc\xef\xe3\x61\xa0\x06\xd6\x9a\x79\x85\xd6\xe6\xea\xdb\x37\xfe\xe6\xd7\xa7\x72\xa3\x71\x41\xa9\x4f\x6f\x01\x71\x2f\x7a\xdc\x04\xe2\x6e\x9c\x94\x59\xd3\x0c\x62\x4d\x23\x4d\x7a\xf3\xb6\xae\x75\xf9\x16\xe7\xad\x4e\x1b\xe5\x29\x71\x19\x12\xaf\x6f\xd3\x3a\x3b\x68\x5f\x83\x73\x36\xda\x5e\x48\xdf\xb6\x97\x27\x72\xc2\x3e\x43\xa9\xf9\x85\x3a\x5e\xa3\xd4\xbc\xc3\x08\x12\xad\xbe\x95\x34\x81\xcb\xde\x05\x0e\x7f\x9c\x48\x5a\x4a\x97\x1f\x57\xc9\x1d\xd5\xe1\xe1\x00\xa9\x3d\x4d\x55\xf6\x19\xa6\x7d\x4d\xca\x2c\x5b\x90\xb2\x10\xbc\x99\xe2\x67\x9d\x56\xcb\x99\x61\x66\xb6\x75\x6f\xa9\xa5\xd4\x42\x0a\xc7\x80\x65\xc9\xb9\xa1\xe7\x75\xf7\x1b\x94\x4a\x95\xa5\xd5\x61\xfe\x99\x62\x53\xb3\x7c\xc3\x4c\x31\x35\x8d\xe5\x50\xf7\x47\xa8\x27\x34\x4f\x4f\x84\x4c\xd8\x38\x5b\x90\x19\xcd\xaa\x56\x07\x94\xdc\xb2\x2c\x73\xd3\x8c\xc8\x35\x68\xa2\x67\xcc\x75\xa9\x26\x99\xe0\x53\x5c\x1c\xe5\xbe\xc5\x16\x24\xe6\xd9\x24\x03\xca\xcb\xc2\xbe\xcf\xb0\xf5\x85\x28\xa5\x7f\x9f\xab\x1f\x59\xcd\xc2\x14\xe1\x2c\x1b\x04\x8d\x7c\x1e\xdc\xd8\xba\x5b\xba\x02\x9f\xbc\x77\xc7\x14\x0c\xc2\x39\xc5\x1c\xa4\x64\xa9\x73\x1a\xd8\xdf\x0a\x29\xe6\x2c\xb5\xad\x18\x3c\xd8\xb0\x65\xa8\x6d\xd5\x50\x9d\x67\x2e\xf8\x90\xc3\x94\xa2\xd4\xe3\x4e\x91\xdd\x33\x3b\x8f\x75\xc5\xf1\x14\x9b\x37\x18\x75\x41\x14\x8d\x9c\xd1\x39\xb3\x6d\x27\x03\xc8\x91\x03\x2e\x88\x40\xf6\x5a\x72\xa6\x6d\x2b\xe3\x59\xa9\x49\x2a\xee\xf8\xa1\x99\x9c\x29\x03\x07\x4a\xc6\xa0\x7d\x5b\x55\xdf\xe6\x8f\x49\x50\x04\x38\x1d\x67\x66\xcf\x31\x26\xe0\x66\x2d\x80\xc8\x04\xa8\x2e\x25\x90\x29\xd5\xb0\x56\x68\xb2\xdf\xfb\x30\x78\x99\xaa\x5a\x8e\x97\x5c\x41\xeb\x66\xcb\x3d\x4b\x5a\x7f\xfa\x63\x3b\x1a\xc1\x72\x10\xa5\xfe\x2c\xaa\xa4\x6d\xc7\x1f\x48\xc6\x2c\x07\x45\x44\xb9\xa4\x63\xbf\x75\x8f\xad\xdf\xa1\xa8\x4f\xae\x1b\x6d\xad\xc4\x6b\x4c\x69\xae\x1b\xe0\x6a\xfc\x4c\xd0\xed\x94\x9a\xa3\x78\x7a\x71\xfd\xcb\xfb\xe3\xff\x3a\x7b\xef\xce\x27\x0f\x99\x7e\xc9\xd9\x3f\x4a\x20\x34\x17\x46\xae\xce\xc2\x30\x9c\x01\x9a\x07\x82\x1f\xf0\x24\xf7\x1b\xb0\xd3\x92\x21\x63\x6b\xe6\xee\x61\x49\xd8\xe0\xf9\xd3\x47\x25\x3d\x75\xcb\x9a\xaa\xe5\xa6\xf9\xe0\xb0\x65\x0d\x25\x1c\xb4\x39\x79\x56\xa2\xb4\x2d\x8c\x18\x9f\x66\xa1\x30\xd9\x8e\x5c\x75\xd5\x89\xba\x6a\x44\xc3\xfa\x0b\x2e\xdb\x2a\x46\xbd\xb4\xce\xa9\xd7\xd0\x53\xc3\x89\x9a\x6a\x7b\x35\xc0\x76\x04\xf5\x6a\x80\x15\x3d\xce\x2f\x09\x4d\x53\x89\x62\x0a\x9e\xfa\x7c\xa9\xf1\x1c\x3e\x6c\x8d\xf1\x03\xf2\x86\xfc\x99\xdc\x93\x3f\xa3\x5a\xf0\xa7\xae\xed\x39\xba\x0a\xec\xdd\xcd\x12\x56\x1b\x3d\xbf\xec\x09\xe2\x3f\xce\xa8\xc6\x19\x0d\x54\xb5\x20\x63\xe6\xc4\x50\xb8\xd7\x20\x8d\x58\xe4\x76\xe2\x49\x1b\x9b\x98\x05\x7e\x46\x34\xb3\x36\xf7\xf3\x49\x58\xf9\x5f\xef\x88\x68\xe6\x71\xa3\xdf\x5f\x38\x2a\xd4\xec\x23\x50\xcf\x96\x53\x9d\xcc\x9a\x64\xcc\x08\x18\xaa\xc1\x9c\x52\x81\x64\xdc\xc6\xaf\xcd\x58\x87\x08\x82\xe7\x83\xc6\xdd\x9c\xca\x8d\xfd\x7c\x68\xa7\x96\x14\x7f\xe4\xf3\x4e\x30\x08\xea\x8f\x14\x22\x1d\x91\x33\x9a\xcc\x70\x59\x69\xc0\x33\x8c\x06\x82\x93\xcd\xe8\xdc\x6c\xbc\x7b\xd6\xf6\xdd\x40\x69\xa5\x32\xb5\x22\x2e\x99\xf3\x94\x50\x6e\x3b\xdf\x4d\x40\x4a\x1b\x72\x38\x5e\xa0\xe7\x93\x25\xd0\x79\xf3\x3a\x9d\xa4\x42\x0a\x2d\x12\xd1\xa1\xf7\xca\x72\xf4\x33\x4e\x87\x40\xb0\x46\x4b\x6f\x2b\xfe\xfe\xf4\x72\x40\x6e\x4e\x2e\xb1\x69\xc6\xf5\xc9\xcd\x65\x53\xc2\xde\xbb\x39\xb9\xec\xd0\xc3\xbf\x17\x9b\x87\x33\xb3\xbd\x33\xcb\xdc\x79\x12\x09\x34\x65\x31\x8e\x7c\xfb\x11\xe3\xc8\x37\x8f\x18\x47\x1e\xe3\xc8\x63\x1c\xf9\xc3\x23\xc6\x91\xbb\xf1\xf4\xa6\x1e\x12\xe3\xc8\x5b\x8e\xd7\xe5\xcb\x8c\x71\xe4\x3b\x8d\x18\x47\xbe\x3a\x62\x1c\xf9\x86\x11\xe3\xc8\x37\x8c\x18\x47\x1e\xe3\xc8\x63\x1c\x79\x8c\x88\x79\x74\xae\xe7\x19\x11\x43\x62\x1c\xb9\x1b\x31\x8e\xfc\x55\xf8\xfd\x49\x8c\x23\xdf\x6a\xc4\x38\xf2\x18\x47\xde\x66\xc4\x38\x72\x1c\xd1\xf6\x12\xe3\xc8\xfd\x88\x71\xe4\x76\xfc\x76\xa4\xe6\x18\x47\x1e\xe3\xc8\x63\x1c\x79\x8c\x23\x7f\x70\x15\x31\x8e\xfc\x35\xe8\x93\xbe\xa1\x56\xf7\x20\xe8\x2b\x3f\xd3\xf6\x61\x35\xe4\x6c\xcd\xaf\x68\x56\x51\x85\x99\x44\xd6\x53\x66\x12\x68\xba\xc0\x29\x13\x74\xcb\xd4\x42\xd6\x0b\x8c\xce\xc9\x58\xce\xda\xc5\x9d\x93\x95\x43\xf3\x1e\xe7\x0a\x5c\x38\x06\x2c\x39\xbd\xc7\x03\x40\x73\x51\xda\xfe\x5d\x89\xc8\x8b\x52\x37\x61\x8a\xdb\xd3\xa6\xf5\xd6\x84\x4d\x1d\x47\x3d\xb2\x5d\xc2\x86\xd5\xb4\xc3\xa0\x33\xd7\x13\x2a\x30\x34\xf5\xe1\x27\x97\x3d\xe8\x12\x05\xd5\x1a\x24\x7f\x47\xfe\xfb\xe0\x6f\x5f\xfd\x3a\x3c\xfc\xfa\xe0\xe0\xa7\x37\xc3\xff\xf8\xf9\xab\x83\xbf\x8d\xf0\x1f\xff\x7a\xf8\xf5\xe1\xaf\xfe\x8f\xaf\x0e\x0f\x0f\x0e\x7e\xfa\xee\xc3\xb7\x37\x97\x67\x3f\xb3\xc3\x5f\x7f\xe2\x65\x7e\x6b\xff\xfa\xf5\xe0\x27\x38\xfb\x79\xcb\x49\x0e\x0f\xbf\xfe\xb2\xf5\x92\x3b\x0b\xbc\xfd\x89\xbb\x3d\x09\xbb\x9f\x44\xd4\x75\xbe\xdf\x9e\xce\xe2\x95\x9b\x6d\xf9\x34\x3a\x76\xf4\xd0\x69\xf4\x1a\x37\x0a\x71\xd5\x3c\x4c\x11\x91\x33\xad\x1d\x15\xa5\x61\xd4\x17\xd3\x0d\x95\xd3\xd1\x01\xec\x76\x48\xb5\x6d\x27\x58\x45\x4c\x05\x11\xbb\xc2\xcb\x75\xae\x4d\x63\x65\x8d\xc0\xf3\x3c\x4c\x61\xc2\x38\x38\x2f\x57\xa4\x0d\x8f\x8f\x48\x1b\x5e\x23\x6d\x50\x90\x94\x92\xe9\xc5\x89\xe0\x1a\xee\x5b\xd9\x4f\x36\x19\x90\xae\x9b\x53\x13\x7b\xe2\x2c\xa5\xf0\xaf\x25\xa2\xb0\x81\x92\x1b\x53\xf3\xaa\xa0\x5b\x59\x72\x54\x29\x6d\x0e\x05\x68\xab\xef\xa1\xa6\x83\x51\x90\xcb\xaf\xf3\x1a\x9c\x9d\xfa\x1f\x25\x9b\xd3\xcc\xe8\xb7\xf5\x13\x97\xa8\xb3\x84\x0f\xb5\x32\x62\x3d\xb1\x8c\x85\xe2\xcd\xa5\x64\x73\x96\xc1\x14\xce\x54\x42\x33\xa4\x4a\xfd\x50\xfa\xe3\x0d\xb3\xe3\x16\x49\x91\x29\x72\x37\x03\x6c\xa3\x4a\xbd\x7a\x8e\x99\x0a\x53\xca\x38\xc9\x0d\x51\x2d\xfc\xc3\xca\xea\xf9\x86\x78\x1b\xa9\x97\xeb\x5a\x9f\x47\xf5\x75\x2c\x44\xe6\xc2\x7a\xb3\x45\x3d\xbf\x6b\x6b\xcb\xc5\x2f\x1c\xee\x7e\x31\xb3\x29\x32\xc9\xe8\xb4\x52\xe3\x15\xe8\x15\x4b\x5c\x3d\xf5\xc6\x0f\xc0\x98\xd9\x12\x08\xcd\xee\xe8\x42\xd5\x46\x8d\xb0\xe1\xef\x3b\xf2\xf6\x10\x11\x8f\x2a\x52\xcd\x91\x92\xdf\x1f\xa2\x9f\xef\xe4\xf8\xf2\x97\xeb\xbf\x5e\xff\x72\x7c\xfa\xe1\xfc\xa2\x1b\x9d\x37\xdf\x0e\x94\xb7\x9a\x23\xa1\x05\x1d\xb3\x8c\x75\x21\xef\x2b\x91\x20\xe1\xa4\xc8\x40\xd3\xf4\x28\x95\xa2\xb0\x70\xf2\xf6\xa3\x50\xc7\x39\x5d\x32\x0b\x3b\x9e\x6d\xb7\x67\xd2\x9c\x70\x2a\x29\xd7\xb5\x21\xa5\x06\xb9\x2c\xb9\x51\x7a\x5f\x78\xd0\x3c\x4d\xfb\x0b\x98\x3f\x4e\x53\x48\x1b\xd0\x7b\x75\x01\x7a\x27\xfe\xe3\x16\x75\xae\x2d\xb9\xfc\x78\x7d\xfe\xbf\x97\xd0\x70\x51\x74\x8b\x47\xea\x27\xbf\x47\xb6\xef\x40\x4e\x56\x8d\x09\xb9\x98\xc7\xfd\x7d\x2e\xfb\x5b\xf1\xaa\x7e\xbc\xe0\x57\x25\x0f\xd9\x09\x0f\xe6\x27\xb9\x48\x61\x44\x2e\x2b\x0b\x7a\xf3\x6a\x58\x43\x40\x02\x31\xb7\x70\xcd\xb0\xd5\x79\x20\xca\x68\x61\x13\x5d\x1a\x19\xa6\x21\x1d\x9e\xd0\x4c\x75\x24\xa6\x5d\x38\x93\x61\xc2\x1f\x8c\x2a\xd8\x0b\x34\xab\xd9\x48\x0a\x5c\x68\x27\x49\x9a\x55\x62\xd2\xad\x14\x09\xb1\x7a\x67\x10\xb2\xd4\xe0\x2e\xae\x01\xbe\x67\x4c\x4c\x79\x58\x5d\x56\x33\x5b\x0b\x6c\xa9\x40\xad\x67\x4c\xb5\x26\x6a\x66\x97\x40\x53\xcc\x17\x2b\xa8\x9e\xd9\x88\x83\x9c\xaa\x5b\x48\xed\x0f\x4e\xae\xa9\x4c\xf0\xb6\x19\xbe\x7b\xd5\x8d\x59\xb7\xb7\xb7\xa3\x3c\x63\xe3\x20\xd0\x4e\x0f\xad\xa3\xd3\x3b\x1f\x01\xf3\x4d\x1f\x79\xb6\xb8\x12\x42\x7f\x53\xe5\x49\xf5\xb2\x81\x3f\x3a\x49\x11\xdd\x2c\xcd\x90\x29\x0c\x10\x48\x87\x08\x4c\x44\xe9\x30\x45\xeb\xb4\xde\xb0\x27\x46\x68\x59\xf2\x63\xf5\xad\x14\x65\x6b\x0e\xb0\x22\x68\x7d\x7b\x7e\x8a\xe7\xb8\x74\x1e\x30\xae\xe5\xa2\x10\xcc\x9a\x4f\x36\xc8\xb4\xdf\x3b\x1f\x5e\x88\x91\xb5\xbb\x85\x7c\xa0\x0b\x42\x33\x25\xbc\x70\xcc\xf8\x3a\x55\x87\x38\x3d\xca\x5c\x1e\x0b\x3d\x5b\x51\xa0\x0c\x3a\xaf\x3e\x37\x08\x1c\x62\x75\xdd\x14\xc6\x57\x1e\xd7\xf4\x16\x14\x29\x24\x24\x90\x02\x4f\x3a\xee\xda\x53\xbb\x81\x70\xe7\x2f\x04\x37\xc7\xa2\x97\xbd\x3f\xaf\xfc\x7f\x68\xc6\x6a\xee\x34\x7a\x12\x9d\xde\x41\xd1\x9f\x88\x87\xa2\x54\x20\xad\xf3\x53\x96\x60\x37\xe2\xbb\x72\x0c\x19\x68\xab\x0c\x61\xfd\x00\xaa\xad\xca\xcb\x72\x3a\x05\x42\x75\x85\x28\x5a\x10\xe0\xca\x90\x1b\x6b\x38\xd3\x24\x15\x50\x27\x37\x52\x45\xbe\x3f\x3f\x25\x6f\xc8\x81\x79\xd7\x21\x6e\xff\x84\xb2\x0c\x5d\x8d\x9a\xca\xe5\x35\xb2\x89\x9f\x02\x97\x84\xb8\x47\x84\xb4\x47\x74\x40\xb8\x20\xaa\x4c\x66\x7e\x4d\x46\xe3\xf2\x0a\x9b\x8b\xb5\x43\x93\xfc\x2b\x44\xd5\xce\x04\xe6\x7b\x05\xb2\x37\xfa\xf2\x7d\x0b\xfa\x12\x8a\x10\x06\xe7\x9a\xd0\xb3\x88\x95\x83\xa6\x29\xd5\xd4\xd1\x9d\x3a\x23\xfa\x35\x6e\xe9\x53\x53\x1f\x05\xef\x19\x2f\xef\xad\x6d\xad\x3f\x25\xff\xfa\x0c\xa7\x45\x14\x40\xa0\xe1\xa6\xd1\xa2\xc8\x58\xed\x79\x0c\xa2\x9b\xce\x1b\x5b\x3d\xd8\x20\x22\xe1\x31\xf7\x0e\x4c\xc3\xd9\x29\x4f\x45\xbe\xf2\x32\xf4\x96\xd2\x64\x16\xbe\xe0\x55\x22\xcf\x93\x9b\x23\x32\x98\x43\x87\xda\x1c\x4b\x88\xf3\xde\xcc\x66\x64\x31\xbf\xa1\x38\x3d\xc9\xe8\x18\x32\xcb\x59\x2c\x02\xa9\x55\x04\x7a\xea\x08\x41\x29\xb2\xfe\xf2\x23\xae\x44\x06\x36\xe4\xc6\x03\xc2\x4c\xff\x22\xe0\x80\x93\xf4\x05\x07\x54\x64\x1a\x70\x40\x95\xec\x25\xc0\xa1\xec\xc0\x68\xc9\x32\x1c\x0c\xd7\x6e\xc2\x01\x59\xe7\x73\x87\x83\x82\x24\x11\x79\x71\x29\x85\x51\xb9\x7a\x63\x2d\x6e\xda\xda\xbf\x63\x75\x72\x34\xf8\x86\xda\x9f\xf3\xe6\x34\x6f\xa6\x32\x08\xb6\xa3\xda\xd2\x78\x1f\x71\xf7\xbf\x02\x96\x83\xa4\x67\x99\x0f\xf9\x59\x1a\x0e\x20\xf3\xa4\xbb\xf0\xc2\x53\xfd\x3b\x58\xc9\x7a\x61\x26\x22\xa1\x19\x96\x4e\xeb\x86\x31\x64\x19\x6b\x96\x27\x0e\x22\x24\xd1\xb5\x84\xbf\x79\xaf\x3d\x56\xd1\xc2\x5f\x9c\xed\x8b\x8b\x14\x02\x67\xa1\x0d\xed\xbc\xb1\x91\x74\x78\x9f\x0f\xce\x34\x5c\xdd\x39\xef\x21\x6d\x3c\xad\x85\xab\xce\xf2\xa1\x2a\xc8\x66\x16\x08\x3c\x65\x7c\x8a\x16\x9d\x01\x91\x90\xd9\xb0\x4e\x77\x86\x6f\xad\xfa\xb5\x8f\x18\xed\x27\xf5\xe8\xec\x5f\x8d\x92\x10\x13\xdc\xcd\x8c\x46\x0e\x2f\xdf\x4c\x2c\xb5\x64\x8a\xec\xbd\xf7\x00\xe8\x50\xc1\xea\x39\x32\x88\x3d\xfb\x85\xd5\x6e\x5a\x1b\xdb\x2d\xe3\xa9\x8b\x80\x6c\x00\xcb\x2b\x89\x4e\x0a\xc5\xd8\x5a\x96\x86\xa4\xe1\x1d\xf9\x1b\x27\x15\xb0\xc8\xb0\x35\x7a\x5c\x59\x81\xd5\x9b\x97\x86\x0f\x9b\xfc\xaa\x97\x2c\x4f\xf3\x3d\xc7\xbd\x37\xef\x1d\x1a\xb5\x77\xf5\x3e\xff\x2d\x7b\x4f\xb9\xaf\x77\x8c\xa7\xe2\x4e\xf5\xad\x43\xfc\x68\xa7\xf5\x02\x75\x62\xd0\x5a\x33\x3e\x55\xa1\x1e\xd1\xac\x93\xbb\x5e\x91\xf0\x3b\x3c\x91\xc2\xa6\xe1\xad\x0a\xf0\x4b\x91\xdb\x51\x09\xd8\x61\x4c\x73\x45\x4f\xa4\xf9\x14\xcd\x68\x76\x5d\xb4\x2f\x9b\x46\x96\xd1\xe0\xdb\x0f\xd7\xc7\xcd\xa9\x0d\x3d\xbb\x9b\x81\xb4\xbc\xd7\x5c\x27\x34\xcd\x99\x52\x68\x06\x82\xf1\x4c\x88\x5b\x72\xe0\x03\xad\xa6\x4c\xcf\xca\xf1\x28\x11\x79\x10\x73\x35\x54\x6c\xaa\x8e\x1c\xd2\x0e\xcd\xea\x0f\x09\xe3\x59\x15\x41\x82\x6a\x24\xd7\xca\x9b\x31\xf0\x25\x49\xb5\x0a\xdc\x5b\x57\x77\xd1\x79\x99\x57\x97\x69\x2b\x2d\x32\xc8\x9e\xbe\x18\xcc\xea\xf6\x5c\x74\xac\x6b\xf1\xc8\x16\xe1\xb7\xbb\xb4\x91\x30\xc5\x69\x2d\x1c\xad\xf4\xf6\xe4\x40\x72\xd2\x41\x02\xaa\xbf\x8a\x39\x7f\xa9\xe7\x24\x29\xd8\xcc\x06\xc0\xa8\x13\xba\x31\x0c\x09\xad\xb2\xfb\x98\x20\xe7\x1e\xdd\x0f\x25\x5a\xf4\xfa\xd8\x14\x0c\xa3\x0f\x64\xc5\x8c\x0e\xad\x92\x6c\x48\x12\xd2\x30\x2f\x03\xcc\x04\x17\xd2\xa2\xa8\xe1\x82\x82\x23\x4a\xa3\xb6\x60\x1d\x41\xb8\x27\x8e\xc6\x06\x4b\x3d\xa9\xfd\x83\xa1\x0f\x09\x13\x6c\x6c\x82\x7e\xbd\x86\x3b\xa6\x67\x58\x44\x6e\xb6\xe4\x70\xc2\x95\x48\x50\xe8\x3d\xe0\x04\xa4\x14\xd2\x05\xc2\x78\xab\x2d\xce\x84\xa4\x18\x23\x69\x0c\x92\x50\xf3\xd7\xbe\x0a\x5d\x94\x75\x29\x53\x8c\xed\x32\xd8\x04\x93\x09\x24\x28\x29\x85\x00\xb6\x64\xf7\xa0\xae\xaa\xe7\x43\xe7\xb5\xf0\xa5\x50\x73\x76\x6f\xde\x12\x3e\xb5\x54\x50\x9d\x0b\x3e\x5c\x7f\xf9\x70\x44\xc8\x39\xaf\xe2\x1e\x07\x66\x17\xc3\x3b\x7d\xc8\x8f\x36\x9f\x18\xd6\xd1\xc5\x0f\x08\xed\x4e\x46\xbc\x93\x65\x0f\x18\xdf\xc5\x18\x4c\x42\x83\x70\xaf\xe4\x00\x0d\xc3\x6e\x52\xb3\xf5\x9e\x89\x77\x31\x14\x9b\x5b\x3e\x95\xb1\xf8\x65\x70\x7a\xd2\x95\xce\xb9\x74\xf5\x58\xfb\x75\xbb\x11\x6b\xbf\x6e\x1e\xb1\xf6\x6b\xac\xfd\x1a\x6b\xbf\x3e\x3c\x62\xed\x57\x37\x9e\x3e\x3d\x93\xc4\xda\xaf\x2d\xc7\xeb\xaa\x3f\x12\x6b\xbf\xee\x34\x62\xed\xd7\xd5\x11\x6b\xbf\x6e\x18\xb1\xf6\xeb\x86\x11\x6b\xbf\xc6\xda\xaf\xb1\xf6\x6b\xac\x62\xf5\xe8\x5c\xcf\xb3\x8a\x15\x89\xb5\x5f\xdd\x88\xb5\x5f\x5f\x45\xad\x1e\x12\x6b\xbf\x6e\x35\x62\xed\xd7\x58\xfb\xb5\xcd\x88\xb5\x5f\x71\x44\xdb\x4b\xac\xfd\xea\x47\xac\xfd\x6a\xc7\x6f\x47\x6a\x8e\xb5\x5f\x63\xed\xd7\x58\xfb\x35\xd6\x7e\x7d\x70\x15\xb1\xf6\xeb\x6b\xd0\x27\x95\x4e\x59\xab\x72\x58\xdb\x54\x2f\x70\x91\x21\x41\xbe\xe3\xb8\x9c\x4c\x40\x22\xe5\xc2\x37\xaf\x44\x21\x54\x55\x8e\x2a\x5a\xe6\xe2\x0c\xb0\xaa\x99\x04\x9a\xba\x28\xe8\x0d\x8f\xbb\x04\x4b\x2c\x5b\x55\x87\xef\x9d\x7d\xfc\xa6\x9f\x52\x09\xdd\x02\xd7\x70\xcd\x1f\x79\xd2\x3d\x80\xa9\x06\xf8\xba\xa8\x7c\x07\xf7\x24\x13\xca\x85\x1d\x22\xb0\x92\x19\xe5\x1c\xbc\xf2\xc8\x34\x1a\x65\xc6\x00\x9c\x88\x02\xb8\xa5\xdf\x94\x28\xc6\xa7\x19\x10\xaa\x35\x4d\x66\x23\xf3\x26\xee\x81\x5d\x87\x08\xba\x5f\x94\x96\x40\x73\x1f\x2c\x99\x53\x66\xa7\x22\x34\x91\x42\x29\x92\x97\x99\x66\x45\x35\x19\x51\x80\x51\xce\x96\x51\x55\xc0\xc0\xf0\x92\x3a\xae\x70\x50\xbf\xcd\x2d\x4b\x84\x95\x62\x50\x75\x1d\x60\x69\xcb\xbc\xd0\x0b\x62\x3e\x39\x73\xe5\xee\xa4\xd2\x24\xc9\x18\x72\x6b\x7c\xa3\x4d\x28\xc3\xf9\x06\x9e\x57\x73\xb7\x52\xe5\x96\xca\x53\x14\x5b\x0b\xad\x08\x86\xe1\xd5\x13\xba\xa9\x52\xa6\x9c\x98\xaf\x06\x84\xfa\x3a\x28\x16\xd0\x7e\xa5\x08\x6a\xcf\x59\xec\xec\xee\xa7\x60\xba\xa0\x78\x9a\xc1\x4d\x6b\x0d\xab\x11\x1d\xe3\x4e\x3d\x72\x0e\x1a\x21\xb6\xb5\x40\x81\xe1\x2e\x2b\xc7\x00\x37\x80\xc3\xdc\xe0\x00\x24\x60\xf8\x2b\xdd\x80\xf5\x9f\x1d\xe9\x35\x95\x53\xd0\x55\x50\x6e\xdb\x58\xcd\x66\x81\x88\xa0\xca\x61\xa8\x87\xd4\x10\x43\xe0\x5c\x8a\x14\x23\xee\x5d\x15\x09\x83\x33\x6b\xca\x28\xda\x05\xba\x02\x38\xeb\x6e\xf0\x72\x91\x0d\x75\xaa\x5e\xaa\x0a\x9a\x80\x22\x07\xe7\x97\x27\x03\x72\x79\x7e\xea\xe2\x99\xc4\x64\x5d\x1a\x9f\x23\x61\x16\x01\x37\x15\x74\x64\xca\xbf\xe3\x6e\x46\x35\x6e\x67\xf0\x22\x94\x44\x67\x54\xba\x40\x45\x5f\xf9\x9a\x5c\x08\x0d\xeb\x0a\x65\x78\x6a\x80\xe2\x97\xb3\x41\x38\x4c\xb3\xe2\x4c\x7b\x02\xd8\x52\x6d\x09\xe4\xa3\x0f\xa0\x14\x9d\xc2\x65\x4b\x07\xd6\x26\xe5\x1c\x7d\x58\xf5\x19\x45\xaa\x90\xd9\xf4\xb5\xea\x97\x3a\xe2\xad\x29\x11\x93\xdc\xae\xa9\xda\xef\x3b\xc9\xb4\x06\x3c\xdf\x58\x3c\x09\x7d\xe0\xcb\x09\xaa\xfb\x4b\x71\x73\x1f\xfc\x24\xf5\xc3\x86\xbf\xf3\xd4\x46\xb1\x8d\x81\x8c\x25\x83\x09\x99\x30\x0c\x8d\xc3\x60\xb5\x81\x2d\x07\x42\xad\x71\x49\x29\x90\xb8\x1e\xa7\xd6\xf8\x75\x8d\xc8\x8f\x6e\x61\x5a\x96\xdc\x56\x40\x77\x12\x37\xa6\x70\xb1\x09\x99\x62\xb0\x9b\x53\x1c\xfe\xf8\xe6\x3f\xfe\x44\xc6\x0b\x23\xdd\x20\x6a\x6b\xa1\x69\x56\x7d\x64\x06\x7c\x6a\x60\x65\x29\x75\x33\x09\xa9\x82\x00\xd6\x28\xb7\x0b\x7f\xfb\xfb\xdb\x71\x53\xdc\x3a\x4a\x61\x7e\x14\xc0\x6f\x98\x89\xe9\x88\x9c\x50\x6e\x70\xdd\xa8\x11\x45\x8a\x96\xfc\xf6\x75\x43\xfb\x43\x33\x91\xb1\x64\xd1\x9d\xec\x38\xdd\x84\xcc\xc4\x9d\x55\xfb\xd6\x60\x4f\x1d\x0e\x5b\x88\xa2\xcc\xac\x33\xe3\x9b\x2a\x7d\xaf\x54\xb0\x9a\xa3\xb3\xf6\x5c\xa0\xf9\xdd\x4d\xb1\x74\xb4\x5d\x8c\xa3\x7f\xa5\x70\xb1\xdf\xce\x40\x5c\x95\xa7\x41\x9d\xf8\x1b\x9a\x65\x63\x9a\xdc\xde\x88\xf7\x62\xaa\x3e\xf2\x33\x29\x85\x6c\xae\x25\xa3\x86\x71\xce\x4a\x7e\x6b\xeb\x52\x57\x29\xc4\x62\x6a\xa4\xec\xa2\xd4\xbe\xd2\xe8\xba\x0f\xb6\x09\xa9\x9e\x1f\x7b\x8d\xb8\x9e\x05\xee\x59\xad\xf6\xba\x54\x0a\x8b\x91\xe1\xfc\x2a\x44\xb6\xdf\xbf\xf9\xe3\xbf\x5b\xd4\x25\x42\x92\x7f\x7f\x83\x71\xb0\x6a\x60\x0f\x31\xd2\x45\x23\x33\xe4\x34\xcb\x0c\x79\x0d\x91\xd2\x00\x7a\x1d\x12\x7e\x76\x1c\xd4\xdd\xd1\x6d\x6b\xa9\xfa\xe6\xe6\xaf\xc8\x12\x98\x56\x90\x4d\x06\x36\x6b\xa0\xd2\x70\xf7\x51\x46\xd8\x77\xd4\x07\x53\x37\x9e\x81\x2c\x3c\x17\x59\x99\xc3\x29\xcc\x59\x1f\x8d\x27\x1a\xb3\x79\xab\x4f\xc6\x14\x26\x68\x8c\x33\x91\xdc\x92\xd4\x5d\x0c\x22\x9a\x96\x4b\xac\xb6\x87\x42\xdb\xd8\xae\x0e\x31\x5d\x1b\xbf\xbf\x11\xcd\x95\xd3\xa2\x60\x7c\x6a\x93\x93\x24\xbd\x6b\x00\x03\xcf\x24\xe6\x03\x77\xac\xb7\xd0\xd9\xe3\xd0\xd5\xdf\x30\x74\x5f\x64\xe8\x66\xeb\x29\x5a\x47\x33\x75\x77\x57\xd4\xab\x6f\x6f\xa3\x6e\x20\x44\x3d\xa1\x3f\x0d\x05\xfe\xdb\x46\xea\xaf\x88\xcb\x95\xf8\x58\x21\x86\x15\x00\x0c\xfa\x20\x49\x6e\x6f\x7b\xef\xc1\xd0\xdd\x2d\x94\xad\x01\x17\x5e\x39\x18\x72\xaa\x9d\x40\xe8\x35\x08\x4a\x0a\x90\x8a\x29\xc3\x97\x7f\xc0\x03\x75\x92\x51\x96\x07\xd6\xe0\xa7\x01\x82\x3d\xdc\x58\x19\xb3\x3b\xa5\xbc\x14\xa9\x9b\x10\x49\xa1\xad\x0a\xba\x46\xac\x6d\x4a\xb5\x3d\x32\xd4\xa7\x26\x95\x3f\xd4\xd0\x6c\x52\x4a\xf3\x4b\x45\x2a\xed\x5d\xaf\x89\x40\xe2\xf7\xbd\x54\xfa\x58\x2d\xbe\x27\x32\x80\x84\xd1\x6d\x6e\x93\x12\x36\x94\x47\x7b\x50\x02\x91\xde\xe9\x81\x23\x62\xa3\x2b\xcc\x99\x70\x8f\x92\xfd\x77\xfb\x4f\x4a\x24\x2d\x88\xa4\x28\xe8\xb4\x53\x8f\x83\x25\x48\x2d\x4f\x1b\x26\x82\x1b\x35\x08\xaf\x57\x65\x89\xf0\x2e\x48\xeb\x42\x15\x58\x86\xc4\x3a\xca\x3d\x80\x9d\x82\x80\x3d\x68\xc8\x1d\x5d\x10\x2a\x45\xc9\x53\x67\x6a\xac\x6c\xbd\x1f\x96\x5e\x7c\x21\x38\x78\x1f\xca\x72\x1e\x39\x3a\x77\x18\x27\x6f\x47\x6f\xdf\xbc\x16\x4e\x85\x5f\xb8\xc4\xa9\x2e\x2a\x4e\x65\xe9\xd3\x93\x7e\xab\xaf\x86\xdc\xd3\xf7\x7e\x70\x26\x96\xba\xd8\x31\xf3\xc5\x5c\xf1\xa7\x3b\xc9\x34\x04\x9d\x8b\x0e\x50\x71\x31\xfa\x61\x90\x35\x7d\xd8\x63\x8d\xef\x7e\xd2\xd4\x55\x39\xfe\x84\x74\xcb\x11\x28\x3c\x6e\xeb\x2c\x5c\xea\x01\x12\x16\x02\x6a\x6f\x8f\x1c\xd8\x3b\xf7\x6d\x92\xe8\xe1\x93\xa2\x96\x03\xda\xd9\x7d\xd1\xa1\x06\x5d\x03\x70\x67\xf7\x05\x45\x1b\x5c\xd1\x23\x04\xff\x0b\x66\x74\x0e\x98\x1c\xcb\x32\x2a\x33\x74\x3f\x5f\xdb\xb5\x93\x71\xa9\x09\xf0\x39\x93\x82\x63\xac\xd7\x9c\x4a\x86\x55\x2b\x24\x4c\x40\x02\x37\xba\xe8\x97\x07\x3f\x1c\x5f\x61\x6c\xcb\xa1\xad\x65\xef\x57\x59\x2a\x5f\x5e\x22\x5c\x49\x30\xdd\xa3\xdb\xe7\xd7\x61\x60\x88\x34\xd7\xaf\xcb\xbc\x27\x2f\x75\x69\x0b\xe6\xdf\x27\x59\xa9\xd8\xfc\xa9\x28\x89\xcb\x5a\x3e\x65\xad\xf6\x79\x29\x83\xba\x06\xd4\x4a\x32\x74\x6d\x83\x7f\xa4\x42\xeb\xbe\xaa\x6a\x5a\x85\xe1\x10\xce\xf4\x44\x72\x36\x9d\x69\x17\x96\xe9\x4b\x9a\xad\x88\x10\x58\xd7\xe1\x69\x8d\x50\x86\xed\x1e\x67\x8c\xaa\x5d\x45\xae\x95\x8c\x43\x37\x0b\x06\x51\x70\x57\x88\x8a\x66\x95\x6d\xc5\xbc\xc8\x1a\x1c\xcf\x2f\x9d\x77\xca\xc3\x8d\xf1\xff\xb1\x41\x2b\x95\x76\x61\x83\x50\xec\x23\xd6\x6a\x38\x09\x6b\x06\xf8\x60\x0d\x24\xfe\x58\x65\x05\xad\x5a\x5c\xf0\xe1\x2c\x28\x48\x52\x88\x74\xc7\x6c\xbc\xb6\x8a\x47\x2b\x95\x63\x3d\x04\xc9\x4c\x64\xa9\xef\xcb\x69\x4d\x32\x63\xd0\x77\x00\x9c\x9c\x5f\x22\xfc\xcc\x27\xa2\xb7\x67\x03\x14\xad\x77\x00\x4b\x8f\x04\x1a\x69\x03\x9e\xbb\x22\x58\x07\xad\xa4\x8b\x48\x5f\x7d\x69\xe7\x33\xff\x97\x0a\x66\xde\x23\x46\xc7\x62\x0e\x08\xd2\x34\x95\xa0\x3a\x94\xee\x78\x02\x3d\xb5\x13\x29\x65\xad\xfa\x2e\x34\xfd\x1b\x15\xd8\xbc\x85\x08\xc5\x77\x3c\xaa\x88\x78\x9f\x99\x82\x9d\x5f\x9e\x74\xa0\x5e\xfb\xdf\x3b\xf7\x86\x99\x6a\x7f\x5f\x11\x56\x24\xb5\x3f\x75\x44\x6a\xaf\x61\x90\xd1\x60\x25\xc6\xdd\x5c\x56\x6d\xc5\xc4\x80\xa8\x75\x24\xd2\x84\xdb\x69\x0c\x59\x71\xd9\xcc\x95\x97\x98\x29\xeb\x26\x6e\x40\x43\xf9\x27\x42\x80\xf8\x40\x04\x4b\xe4\x5d\x58\xc6\xa0\x0a\xf0\x5d\x22\x4c\x68\x41\xf7\xa1\x7d\x01\x15\x5f\x01\xe6\x67\x83\xe5\xe5\xf9\x69\x9f\xe8\x52\xb0\xf4\xd9\xa1\xcb\xee\xfa\x65\x33\x77\xad\x59\xf2\xc1\x4d\xe8\x0f\xfb\xa5\x48\x37\x88\x49\x35\xa3\xc1\xfb\xc3\xee\x82\x5a\x10\x4a\xac\x99\x70\xa9\x6f\x6c\x0b\xa0\xec\x4c\x25\x50\xd4\xba\x2c\xb3\xec\x1a\x12\x09\xbb\x9a\x47\x9b\xfb\x7f\xbe\x34\xd7\x26\x91\x27\x90\xdf\xb1\x8e\x80\xbb\x99\xd7\x05\xde\x2a\xac\x09\xb3\x04\x8b\x32\xc3\x38\x53\xca\x17\x1e\xe0\xb8\x7a\x15\xf8\xa2\x98\xf2\x31\x2b\x36\x44\xaa\xb1\x0b\x0a\xaa\x97\x55\xdd\x42\xa8\x52\xd6\x63\xca\x78\xca\xe6\x2c\x2d\x69\x86\x2f\x42\x29\x34\xec\xe9\x5b\x71\xc8\xdc\x17\x2c\x24\xdf\x08\x49\xe0\x9e\x9a\xdb\x06\x95\x10\x4b\x15\xa2\x43\x2a\x92\x5b\x90\x03\x2b\x8a\x9d\xe2\x1f\x27\x28\xf1\xda\x92\xbc\x7e\x1d\x46\x97\x70\x65\xfa\xda\xb4\x09\xf6\x7d\x80\x2d\x1c\xbe\xb0\x9f\xbb\x60\x7c\x3a\xc4\x5f\xcc\x87\xb8\x37\x0d\x05\x1f\xd2\xa1\x41\xc3\x17\x22\xf8\x61\x0d\xde\x8f\x28\x59\x5d\x79\x7c\xf1\x2a\x82\x51\xe4\x44\x39\x9d\x21\xb0\x64\x4e\x7d\x59\xac\x0c\x34\x56\x3c\x72\x7e\x5d\x5b\x9a\xc2\x3d\x9b\x3a\x31\x2d\xac\x00\xd5\xc4\xb5\x17\x22\xfc\xb5\xb5\x90\x2d\x45\x0a\x07\x64\xcb\xc1\x48\xef\x8c\x81\x62\x0e\x72\xce\xe0\xee\xc8\xb1\xce\xe1\x1d\xd3\xb3\xa1\x85\x88\x3a\x42\xc0\x1e\x7d\x61\xc5\x4b\x9b\xb8\x75\x9c\xa6\xce\x6c\x59\x2a\x98\x94\x99\xeb\x97\x3b\x22\xb4\x60\x3f\x80\x54\x58\x57\xf1\x96\xf1\x74\x40\x4a\x96\x7e\xfd\x19\x03\x5f\x18\x67\x75\x88\x5d\x27\x2a\xf8\xde\x51\x39\x97\x2f\xcc\xfe\x59\xb7\xb4\x75\xc1\x41\x63\xc8\x04\x9f\x06\xd9\xce\x28\x5e\x9c\x73\xa6\x57\x5a\xf3\xd9\xaa\x65\xa8\x22\x0b\x99\x62\x20\x23\x13\xb2\x61\x0f\x36\xf3\x61\x2d\xa7\x20\x1c\xd2\x90\x48\xd6\x98\x0f\xc3\x59\x54\xc5\x8c\x88\x0d\x88\xf0\x89\x91\xbe\x42\xa6\xaf\x11\x65\x4b\x96\xcd\x28\x4f\xf1\xcf\x24\x11\x32\x75\xeb\x65\xba\x8a\xbd\xb4\x41\x41\x36\x12\x05\xd9\x1a\x76\x57\xe7\xcb\x6f\x46\x0d\x54\xe6\x8d\x40\x3d\x2f\xf6\x94\x9c\xfd\xa3\x04\x42\x73\x61\x08\xfb\x72\x21\xe7\x25\x88\xe4\x74\x81\xbc\x15\x97\xfa\xbe\xca\xf4\xb3\xc9\x84\x6a\x40\xae\x80\xa6\x2c\x48\x88\x1e\x90\xf7\xcd\x0c\xe9\x81\x59\xcb\xb5\x4d\xdd\x74\x3f\xd9\xd5\xfb\xe6\xea\x57\xd6\x49\x94\xfb\xb8\xa2\xd5\x8f\x31\xbb\xa2\xe9\x2d\x70\xab\x94\x1b\xd0\xa0\x1f\xac\x94\xb8\x07\xc9\x0c\xd2\x12\xb9\xd4\x78\x41\x26\xcc\x56\x77\x47\x51\x81\x4d\x67\xa0\xb4\x17\x2e\x8f\x30\x56\xa7\x6e\x53\xe3\x17\x80\xe8\x1b\x44\xda\xd6\x66\xac\x9c\x62\xe9\x52\xe1\x3a\xd3\xbb\x64\x12\xab\xb3\xa9\x32\xf7\x67\x79\x19\xd2\x6a\xe4\x7b\xda\x9b\x95\x07\x55\xb3\xd9\x12\x70\xd1\x49\xe7\xec\x70\x64\x42\xd5\x0c\x6b\xca\x2f\x6f\x41\x62\x4d\x32\x49\x29\x0d\xc1\xb0\x65\x66\x29\x36\x91\xc5\x8e\x85\xd8\x6f\x74\x9d\xe1\xa6\x63\xf2\x80\x59\x6c\xfb\xbe\xf7\x4f\xc7\xc4\x8e\xab\x60\x70\x03\xf8\x64\x89\x12\xd8\x9d\x34\x0c\xcb\xd7\x96\xf2\x6d\xc8\x71\x33\x0c\x55\xf8\x7c\x2c\xa9\xbd\x7f\xb4\x95\x5f\xb3\x0b\x07\xa4\x72\xda\xdd\xf2\xb1\x7f\x2c\xa7\xa5\x3d\xe8\x8e\x0a\xd7\x45\x69\x5d\x2b\x4f\x94\xda\xac\x8c\x69\xd4\x99\x93\x0f\xa7\x61\x0a\x52\x98\x5b\xe1\x13\xb8\x46\xe4\x87\xae\x46\xea\x65\x2b\xb5\xa1\xe6\xb5\xe9\x3b\xa9\x4e\x96\xa1\x18\xd9\xdc\xeb\x17\xd5\xdb\xbc\x1c\xca\x78\x51\x6a\xc7\x06\x6b\x8d\x93\x27\x33\xca\xa7\xa8\x64\x8a\xd2\xcc\xf7\xe5\x97\xb8\x22\x09\x69\x99\xb8\x6a\xfa\x1e\x65\xbf\xf4\x26\x5b\x57\xcf\x0b\x69\x95\x4a\x68\xe1\xd7\x1c\x7e\x96\x5a\x70\x4d\xef\xdf\x11\x36\x82\x11\xd9\xfb\x32\xb8\xb4\x67\xdf\x5e\x48\x61\x5e\xe1\x52\x1f\x70\x55\x19\xd3\x18\xbe\xbd\x17\xde\x3d\x22\x67\xe6\x1d\xe8\xc6\xaa\x00\x18\x44\xe7\x8f\x6b\xf0\x0d\x88\x84\x29\x95\x69\xe6\xcc\x2d\x77\x41\x4a\x47\x05\x30\xb8\x67\x4a\x2b\xcb\x83\x74\x07\xca\xa4\xa9\xba\x35\x74\xc8\x9c\xac\x61\x4a\x35\x1d\x06\x47\xfa\xc8\xea\x6d\x43\x57\xee\x73\x48\x1d\x6a\xd5\x24\xeb\xe8\x0b\x97\x19\x39\xa4\xd5\x5d\xcc\x48\xe4\x58\x78\xb3\xbd\x9c\xf3\xd2\x6c\x6c\x1d\xaa\xbe\x36\x4f\xef\x59\x5d\x41\x1a\x61\x80\x51\xfc\xb5\xbc\x54\x11\x51\x57\xd8\x74\xdd\x79\x3e\xbb\xb8\xb9\xfa\xeb\xe5\xc7\xf3\x8b\x9b\x78\xac\xe3\xb1\x8e\xc7\xba\xc3\xb1\x06\x3e\xef\x7c\xa4\xbd\xde\xb4\xce\xe5\xbb\x5c\x70\x32\x48\x0d\x7a\x45\x81\x75\x67\x7c\xfe\x03\x95\x75\x1b\x7b\xe7\xaf\x5a\xe3\x01\xf7\x7d\xee\x91\xc4\x9d\xbc\xf8\xc8\xba\x27\x8c\x8b\xeb\x31\xde\x28\x34\xa9\xac\xdb\xb5\xb0\xf7\xd7\xc9\x2f\xe7\xa7\x67\x17\x37\xe7\xdf\x9c\x9f\x5d\x3d\x69\xa0\x48\xc7\x82\x8f\x4d\xa6\xdc\x92\x4b\x16\x12\xe6\x4c\x94\x2a\x5b\x54\x3d\xb6\xd6\x13\x81\xd5\x58\x43\x9e\xa2\xad\x43\x81\xc4\xa8\xeb\xb5\x8f\x45\x66\xdb\x2f\xb3\x6d\xc6\xcd\x74\x28\xcf\xd3\x17\xfa\x7e\x23\x45\xde\x13\x0a\x5f\x5b\x2b\x8c\x77\x86\xaf\xc3\xa7\x7d\x57\xc9\xa3\xc1\x7a\x9c\xf0\x58\x97\x0d\x31\xc2\x68\x5e\xe8\x0e\xc5\xf0\x7b\x29\xf1\xdb\x4f\x35\x5c\x1b\xab\xf3\x81\x16\xdf\xc1\xe2\x0a\x3a\x56\x01\x6a\xc2\x1b\x32\x48\x0c\xa3\x23\xb7\xb0\xb0\x81\x99\x27\xfe\x65\x5d\xaa\x15\xfd\x7f\xec\xfd\x0f\x77\xe3\x36\x92\x37\x0a\x7f\x15\x1c\xcf\x9e\xd7\x76\x22\xc9\xdd\x49\x66\x26\xdb\x4f\xde\xe4\x38\xb6\x3b\xe3\x27\xdd\x6e\xaf\xed\x4e\xee\xdc\x74\x76\x06\x22\x21\x09\x63\x12\x60\x00\x50\x6e\xcd\x66\xbf\xfb\x3d\xa8\x02\x40\x50\x92\x6d\x99\xa4\x5b\xb2\x23\xce\x39\xd3\xb1\x44\x81\x60\xa1\x50\xa8\xbf\xbf\xda\x48\x84\xe4\x6b\xd6\x06\xbd\xba\x4b\x68\xe3\x6b\xd6\x22\xe9\xd4\x5f\x0b\x20\xbf\x76\x09\x41\x4f\xb3\x6b\xda\x6e\xf5\x48\xb7\xb0\xc6\x8f\x00\xe5\xfc\x7c\x23\x28\xf5\xab\xc3\x55\xf0\x81\xe0\x8e\x57\x02\x63\xf2\xb3\xda\xd9\x15\x84\x08\xc1\xaa\x4e\xe0\x4d\x1f\x74\x70\x4a\x46\x47\xa4\x69\xdb\x84\x8b\xe0\x12\x76\x2b\x57\x77\x2b\xc1\x8a\x39\xfe\x01\x67\x2e\x7d\xe5\xa1\x0c\x74\xe8\x9c\x35\xb0\x1c\xd6\xab\xff\x09\x21\xd1\x1e\xf9\x67\xf8\x10\x7a\x4d\xeb\x5f\x76\x77\xbf\xf9\xf1\xe4\xef\xdf\xee\xee\xfe\xfa\xcf\xf8\x5b\x38\x0a\x31\x50\x5e\xbf\x05\x70\x9d\x84\x4c\xd9\x19\x3c\x03\xfe\x74\xea\xda\x21\x06\x4f\xdc\x17\x50\x91\x3d\xc0\xac\xa5\xf0\x67\x21\xd3\xf9\xbf\x74\x2b\x40\xc0\x8d\x3c\x18\x60\x89\x5a\x54\x16\xe1\xd5\xdd\xf1\x50\xc9\x92\x8e\xb7\xaa\x1b\xd5\x73\x23\x00\x4b\x23\x24\xd9\x6b\x4f\x02\xe8\xee\xe9\xa1\x1f\x04\xd4\xcb\x5b\xcd\xb4\x8e\x0e\xb9\x33\x7d\xd9\xaa\x8f\x31\x5e\x1d\x8a\xb6\xb0\x82\x1d\x13\x0c\x28\xe2\x1b\x86\xc1\x46\x0e\x07\x6c\x48\x98\x09\xdd\xe7\x0e\xcf\x4f\xc9\x14\x29\xbc\x31\xc4\xf1\x81\xcd\xd7\x8f\x2a\xe3\x42\xf8\x74\xbe\x2e\xf7\x15\x26\xe0\xf8\xef\x1d\x46\x82\x0e\x08\x76\xcc\x1a\x36\x7b\xf8\xe1\x20\x29\xca\x9e\xbb\x61\x90\xb3\x5c\xaa\x59\xf8\x33\x80\xcd\xf4\xb5\x91\x8a\x8e\xa1\xa6\x06\x7f\x8e\x3f\x0b\x7f\xe1\x0f\x6b\x0f\x58\xfc\x35\x9a\xc2\x55\x14\x35\x00\xdc\x3e\x3f\xd9\xe6\x49\xbf\x21\xa2\x2d\x69\x0b\xa3\x54\xbf\xea\x0c\x19\x3c\x71\xa8\x70\x06\x2a\x82\x3d\xe9\x6a\x86\x7b\x55\x3e\x1c\x78\x03\xc4\xd4\x5a\x96\x8d\x01\xf0\xaa\xab\x43\x69\x96\xf2\x29\xd7\xb2\x45\xe5\x50\x18\xe8\xf6\xdc\x49\x07\x5b\x82\xf9\x5b\xc1\x6d\xf6\xb1\x00\xcc\xaf\xb0\x5f\xe7\xc4\xfe\xcb\x36\x4d\xce\xf1\x2a\xa8\x31\x4c\x89\x57\xe4\xbf\xf7\x3e\x7c\xfe\x7b\x7f\xff\xbb\xbd\xbd\x5f\x5e\xf4\xff\xf3\xd7\xcf\xf7\x3e\x0c\xe0\x3f\x3e\xdb\xff\x6e\xff\x77\xff\xc7\xe7\xfb\xfb\x7b\x7b\xbf\xfc\xf8\xf6\x87\xab\xf3\x93\x5f\xf9\xfe\xef\xbf\x88\x32\xbf\xc6\xbf\x7e\xdf\xfb\x85\x9d\xfc\xba\xe2\x20\xfb\xfb\xdf\xfd\x47\xeb\xa9\x77\x00\xc1\x8b\x57\x97\x40\xbc\xf5\x11\x3b\x61\xbf\x47\x6c\x65\x81\x97\x67\xaf\xae\xf7\xff\x85\x97\x9a\x51\x3e\x8f\x3f\xae\x37\x66\x83\x63\x42\xe8\xa7\xf0\xe4\xe0\x93\xea\xb5\x36\xc1\xb4\x78\x6e\xe7\xdc\x1f\xc1\xb9\xe3\xd5\x76\x5c\xd7\x4a\x13\x1d\x29\x99\xfb\x8a\x7e\x08\x6f\x60\xed\x99\xbb\xef\x9a\xb5\x6a\x09\x8a\xd7\xd6\x19\xb4\x75\x06\xdd\x72\xdd\xeb\x0c\xc2\x72\x84\xcd\xf5\x04\x31\x31\x6d\x1a\xc2\x58\x1a\x41\xf7\xb6\x4e\x0c\x7f\xb7\x5a\x40\x6d\xe0\xb7\xba\x0e\x91\xb8\x2a\x93\x06\x0f\xb4\x7c\x79\x0c\x13\x1a\xf8\x73\x81\x1b\x1f\x06\x08\xa0\x9f\xcc\xf5\xee\x70\xf5\x97\x53\x3b\x85\x80\xf4\x5e\xc3\xee\x84\xac\x62\x2e\xc6\x0e\xc9\x02\x8f\x12\x17\x7d\xe2\xa2\x42\xc3\x0d\xca\x61\x05\xa1\x4e\xb5\x96\x09\x34\x3e\x42\x9c\xbc\x80\xca\xe7\xa6\x0d\xb3\x31\xf4\x9a\xc5\xad\xd8\x11\x5e\xbd\x7a\xd7\xe1\x0c\x50\x5f\xc5\xd4\x43\xcc\xa7\x25\x26\x83\xa0\xf8\x5b\x3e\xc6\xf3\x4a\x40\xb0\x8c\xe8\x82\x60\x51\x1e\x02\x48\xfd\x60\x61\x53\x48\xc5\x90\xa3\xca\xcb\xda\xac\x99\x65\xeb\x53\xbc\xfd\x99\x19\x22\x5b\xad\x94\xa1\x85\xc3\xb2\x72\x3f\xd7\x0f\xc9\xe7\x10\x0c\x6c\x7f\x7c\xfe\xe1\x8e\xce\x8e\x8e\xcd\x6e\x8e\xcc\x07\xc4\x4e\xba\x3c\x26\xbb\x08\x96\x14\x8a\x8d\xf8\xc7\x8e\xf6\xe9\x61\x54\x99\xc8\x53\x26\x0c\x1f\x71\xec\xd7\x5b\x28\x56\x30\x81\x3d\xf3\x69\x32\x01\xd9\xef\x4e\xca\x2a\x38\xbd\x89\xc9\x3c\xa8\x70\x77\x2b\xca\x2e\x97\x29\xfb\x5b\x39\x46\xb6\x72\xac\xf1\xf5\x89\xe4\x98\xe3\xdc\xcd\x11\x62\x90\x79\xde\x3e\xf5\xfd\x38\xca\x63\x07\x2e\x6e\x5f\x39\x3c\x87\x06\x17\xe4\xa2\x91\x98\xb9\x86\xe5\x6b\x8a\x64\x6c\xca\x32\xa7\x34\x91\x9c\x0a\x3a\xc6\x36\x7c\x46\x06\xd0\x1f\xa9\x42\x8b\xa3\x79\x44\x1f\x50\xe2\x7d\x65\x17\x7c\xa9\x64\x96\x31\xa5\x49\xc6\xaf\x19\x39\x66\x45\x26\x67\xb9\x4b\x7c\x4d\xc9\xa5\xa1\xc6\xb2\xf4\x25\x33\xcd\x62\xbe\xed\xd0\x40\x7c\x31\x7b\x47\xd0\xe7\x58\x1d\x0f\xb5\xe5\xa4\x70\x85\x93\xef\x04\x48\x8c\x43\xe8\xb6\xd2\x23\x67\x6c\xca\x54\x8f\x9c\x8e\xce\xa4\x39\x47\xd5\xbb\x9e\x6d\x87\x37\x12\x3e\x22\xaf\xac\x51\xa7\x0d\x31\xd8\xf1\x22\xaa\x73\x97\xaa\x36\x40\x85\xf7\xd6\x45\x59\xde\x62\xc9\x39\x8c\x14\x0a\xce\x1b\x85\x31\x5a\x2d\x53\x68\x29\xd4\x7a\x81\x0e\xb1\x8c\xb4\x42\xf2\x8d\xf8\x1b\xe1\x19\x3c\x82\x19\x98\x80\x5c\x10\xc5\x74\x21\x85\x66\x75\x78\xc6\xaa\x05\x25\x98\xba\xba\x53\x0b\xb1\xf1\xc9\xd9\xf6\xcc\x2c\xa4\x36\x50\x39\xdb\x4d\xa3\xaa\x73\x3f\x1c\x14\x22\xd3\x2c\x63\x69\xad\x53\x19\x76\xd8\xa1\x75\xf7\x40\x02\xcd\x19\x7c\xc3\x17\xe6\xea\x93\x6b\xa5\xcd\xb5\xfb\x43\xd7\x3b\xdf\x57\xc6\xf7\x4f\xbe\xad\xa0\xb9\xda\x98\x70\x88\x44\x0c\xb0\x80\xf7\x0c\x28\xe0\x3a\x6a\x4e\x33\x91\xf2\x9a\x24\x32\x2f\x32\xd8\x3a\x2d\x76\x56\xd5\x1b\x2b\xb0\x52\x1f\xfa\xa1\x1e\x44\x6d\xb3\xe0\x83\x35\xf6\x37\xed\x42\x07\x63\x1f\x59\xd2\x59\x5f\x4d\x2b\x4b\xed\x2a\x43\xbc\x5f\x8a\xa0\x8a\x8d\xa4\x3d\xc0\xa0\x38\x3b\xe0\x0f\x46\x60\x3b\x27\x1f\x59\x12\xf5\xa6\x05\x04\xac\xc4\xe3\x49\xd8\x8d\xde\xbe\xe7\x78\xeb\x30\x45\x57\xa1\x81\x16\xc5\x77\xf1\x35\x07\x1a\x08\x63\x7a\x8c\x74\xf7\x08\x68\x37\x01\xf6\x13\x16\xe4\xc5\xa0\x1b\x81\x87\x71\xc7\x2e\x20\x0d\x86\xe4\x6b\x3f\x16\x74\xf5\x91\xd2\x90\xbd\xdd\x83\xdd\xfd\x05\x9f\xe5\x1c\xd0\xf6\x55\xf4\x4b\x0e\xc8\x92\x05\xc0\x34\xb2\x64\x37\xed\x11\x6e\x7c\x76\x36\xf6\x09\x82\x59\xb9\x2a\xc1\x1e\xd1\x92\x18\x45\x53\xee\xb4\x1f\xf8\xd4\xde\x64\x54\xe9\x0e\x87\xbd\xdd\xdf\x77\x5d\x9b\xa2\x1b\x29\x76\x0d\x4c\x7f\x40\xae\x10\xa5\x26\x0c\x34\x93\x25\x34\xdf\x44\x12\x14\x19\x4f\xb8\xc9\x66\x20\xe8\x88\x2c\xb1\x53\x97\x3d\x66\x5c\x75\xe2\xc9\x47\x6e\x7c\x4b\x12\x39\x22\x2f\xb0\x51\x18\xa3\xce\x6b\x9a\xf1\x29\x3b\x98\x30\x9a\x99\x09\x26\x96\x08\x29\xfa\xd8\xeb\xd1\x4a\x20\xf7\x4d\xdb\x18\x4b\x3b\x17\x64\x7c\xb5\x70\x47\x2e\x4e\xa8\xa5\xb5\x61\x65\xef\x0f\xcd\xbb\x59\x93\x05\xb0\xb0\xab\xab\xf3\x1f\x6a\xed\xac\x41\xf8\x1b\x53\xf8\x74\x9f\xa8\xe9\xfb\x06\xc8\x8e\x6e\x02\x9c\xad\x7a\x51\x93\x0e\x45\x58\xdb\x9e\xd4\x64\x39\xf8\xdb\xea\xcd\xa8\xc9\xdf\x65\x09\xd0\x21\x74\x98\xcd\x02\x6e\x83\x66\x86\xec\xd8\xa1\x76\xac\x78\xb2\xdc\xf0\x37\x46\x53\x84\xd5\xd0\x86\xd1\x46\x1a\x5f\x7c\x75\x16\x78\x8b\xe6\xd6\xed\x39\x50\x6a\x23\x73\x32\x71\xaf\x5d\x2f\xd7\x74\x3b\x63\x00\xbb\xc7\xd7\x42\x29\x56\xa0\x84\x73\xbf\x79\x76\xf2\x6b\x41\x6e\x20\xdd\x6b\x3d\x13\x92\x98\x6c\x71\x67\x1d\x2e\x90\x58\x88\x52\xd3\x91\x2c\xed\x20\x61\x82\x74\x98\x34\x41\xda\x15\x7f\xce\x0f\x04\x81\xc0\xf6\xf9\x61\x9d\xe5\x61\x90\xce\x72\x0d\xc8\x32\xc7\xac\xe3\x19\x74\xda\x74\x44\xc4\x4e\x23\xfc\xa4\x7d\x79\x69\x7c\xdd\x4d\x80\x6e\x16\x9f\x74\x49\x81\xa2\x83\x74\xf0\xc5\x64\x70\x04\x9d\x82\x72\x4d\x14\xae\x20\x26\x34\x53\xd3\xa6\x05\xe0\xd5\xd5\xdd\xab\xcb\xe6\x8e\x02\x7f\x2d\xa9\xad\x56\x44\x84\x06\xd7\x1e\x54\x75\x91\x20\x51\x36\x83\xeb\x87\xed\x5d\xc0\xfe\x38\xa2\x62\xcc\xc8\x4b\xfb\xcb\xbf\xfc\xf9\xcf\x5f\xfe\x79\x80\xc3\x87\xcc\x06\x41\x4e\x0f\xcf\x0e\xff\x71\xf9\xd3\x11\x14\xd4\xb6\xa5\x6a\x47\x69\x9b\x5d\x27\x6d\x76\x9a\xb2\xf9\xa8\x09\x9b\x50\x26\xd2\x5a\x8a\xd4\xe3\x05\x30\x64\x8c\x2e\xea\x74\xbf\x08\x95\xcf\xea\x9a\x75\xff\xab\xdd\x6a\x1b\xb1\xc7\x4c\x52\x5c\xca\xe4\xba\x43\xbb\x66\xf7\xea\xe8\x1c\x87\x8c\x4c\x1b\x2a\xbc\x33\x84\x8b\xa9\xcc\xa6\x80\xbe\x4a\xae\x8e\xce\x61\xe7\x0d\xe0\xbf\xc0\x11\x05\x16\xf5\x8c\x99\xaa\x90\xc1\x85\xa7\x02\x86\x2a\x14\x69\xd0\x8c\x6b\xc3\x13\xf8\x5d\xe5\x26\xb5\x23\xb4\x89\x4b\x6d\x2d\xa5\x65\x57\xe7\x96\x52\xd4\x24\xf8\xa1\x46\x53\xdb\xc4\xc3\x0d\x3e\x97\xdc\x79\xa4\x6a\x5d\xb4\xb7\xe7\x52\x07\xe3\x6d\xee\xb9\x54\x28\x76\x69\x64\xa3\x6e\x01\x64\x31\x12\x82\x83\xdd\x12\x07\x19\xb2\x91\x54\x6c\x3e\x10\x12\x05\x36\xd2\x12\x36\x21\x15\x50\xfd\xe7\x5d\x50\xb2\x16\xbc\xc0\x94\x4b\xdf\x21\x3b\x73\x98\xa8\x07\x3a\x06\x42\xf5\xed\x8e\x7b\xf6\xed\x58\x0e\xb3\xeb\x55\x65\x0c\xae\xd9\x32\x7c\xc8\x4c\x82\x6e\x56\x1f\x7f\x71\x1e\x55\x3f\xfd\xf9\x50\x49\xa2\xa8\x9e\x60\x23\x62\xf6\x91\x9b\x00\xb9\x4a\xb5\x14\xe8\xec\x8d\x7a\x22\x73\x1d\x61\x72\x47\x41\x1e\xfc\xd1\xb9\x4c\xe7\x7b\x8e\x8f\x15\x4d\x18\x29\x98\xe2\x32\x25\x50\x4f\x9c\xca\x1b\x41\x86\x6c\xcc\x85\xf6\xf4\x03\x70\x76\x47\x68\x7b\xdc\x30\xf0\x0d\x7b\xb4\xb8\x01\xb9\xa8\x81\xa0\xb8\xf2\xa4\x44\x56\x3b\xda\xcd\x62\x3e\xc8\x04\x19\xa1\x40\x5e\xec\x06\x14\x16\x26\x6e\x90\x74\xcf\xa4\x3b\x88\x36\x61\x0f\x2f\xff\xdd\xad\xd4\xe1\xda\x52\x3d\x99\xb4\x0b\xfc\x6e\xc3\x53\x2b\x5e\xdb\xf0\xd4\xc3\xae\x6d\x78\x6a\x1b\x9e\xba\xfd\xda\x38\xf7\xee\x36\x3c\xb5\x35\xba\xe6\xaf\x6d\x78\x6a\x1b\x9e\xba\xe5\xda\x38\xf9\xb5\x0d\x4f\xad\x70\x6d\xc3\x53\x2b\x5e\xdb\xf0\xd4\x36\x3c\xb5\x0d\x4f\x6d\xc3\x53\x7f\x20\x37\xa0\xbf\xb6\xe1\xa9\x85\x41\xb6\xe1\xa9\x88\x18\x5b\x4b\x69\xc9\xb5\x0d\x4f\x2d\xb9\xb6\xe1\xa9\xe8\xda\x9e\x4b\x0d\xce\x25\x1f\xdc\x39\xb7\x76\x59\xfb\x9a\xb5\x73\x08\x1c\xf0\xc4\xc5\x88\xe4\xa8\x56\xe7\x84\x8f\x1a\x54\x0d\x28\x22\xcc\x0f\x5f\x6a\xe3\xa2\x41\x55\x8c\x69\x69\x3d\x54\xcb\xf6\x70\x85\x4c\xab\x60\x44\x14\x85\x40\xeb\xb4\x79\x4d\xda\xda\xaa\xad\xda\x84\x1e\x36\x3a\xec\xb0\x21\xa1\x9d\x0e\x42\x0d\xdb\x30\xc3\xb3\x0b\x33\x74\xe3\xa2\xeb\xc0\x3d\xd7\xfa\x84\x71\xc1\xfc\xab\x89\x62\x7a\x22\xb3\xc6\x8c\x5e\x63\xf2\xb7\x5c\xf0\xbc\xcc\xa1\x6f\xac\xe5\x67\x3e\x0d\x59\x03\xa1\x39\xb6\x13\xf4\xe8\x29\x8c\x1a\xcc\xfa\xc6\xb2\x50\xd6\x39\xa1\xa0\xaa\xeb\x32\x49\x18\x4b\xa3\x96\xf7\xa0\x98\x7d\x39\x08\x4f\x0a\xed\x34\x5e\xb6\x93\x37\xed\xce\x7e\x84\x28\x85\x51\xbe\xfc\xa2\xd1\x18\x2d\xa3\x3c\x9f\x3e\xc2\xd3\x81\x98\x6e\x6f\xaf\xb4\xb2\x55\xba\x38\x25\xda\xda\x28\x4f\x2d\x92\xd3\x59\x44\xb3\x83\x08\xce\x06\x45\x6f\x36\xe6\x58\xd8\x94\x88\xcd\x06\xa2\xaf\x76\x10\x60\xe8\x22\x42\xd3\x5d\x74\xe6\x11\x40\x4a\x1f\x27\x2a\xd3\xa1\x35\xdc\x51\x34\xe6\x53\x44\x62\x3a\x79\xeb\xb6\x11\x98\x4f\x17\x7d\xe9\xe6\x75\x5b\x7a\xb7\x9e\x45\xc4\xa5\x03\xaf\x56\x97\x1e\xad\xce\xbc\x59\x8f\x16\x61\x69\x1f\x5d\xd9\x80\xc8\x4a\x6b\x22\x73\xc1\x0d\xa7\xd9\x31\xcb\xe8\xec\x92\x25\x52\xa4\x8d\x4f\x98\x39\xd4\xba\xb0\x7f\x34\x0e\xeb\x6c\xb4\x7a\xfe\xf1\x84\x3a\x70\x5e\x96\xfa\x94\x6a\xef\xfe\x73\x0a\x05\x34\x34\xc1\x59\x6e\xa4\x43\x8f\x6c\x8c\x31\x88\xc9\xd8\x5d\x2e\xe2\xdf\xe4\x0d\x91\x23\xc3\x04\xd9\xe3\xc2\xaf\xe3\x7e\x64\x06\x56\x96\x79\x60\x6b\xfb\xed\xcb\x17\xfe\xe6\xe7\x67\x72\x83\x73\x41\xeb\xc7\xf7\x80\xb8\x07\xdd\xef\x02\x71\x37\x8e\xca\xac\xee\x06\x41\xd7\x48\x5d\xde\xbc\xac\xe0\x45\x5f\xc2\xb8\x61\xb7\x51\x91\x12\x57\xb8\xf1\xfc\x16\xad\x75\xdc\xf8\x39\xc4\x8c\xb7\xbe\x17\xd2\xb5\xef\x65\x4d\xb1\xe1\x0d\xd4\x9a\x9f\x68\x3c\x78\xab\x35\x3f\xe0\x8a\xea\xbf\x7e\x50\x34\x61\xe7\x9d\x2b\x1c\x7e\x3b\x91\xb4\x54\xae\x6c\x2f\xe8\x1d\x61\xf3\x08\xc6\x52\xdc\x4d\xa1\x28\x0e\xaa\xd1\x46\x65\x96\xcd\x48\x59\x48\x51\xaf\x3c\xc4\xa0\xd5\x7c\xc1\x9a\x1d\x6d\xd9\x53\x2a\x2d\xb5\x50\xd2\x1d\xc0\xaa\x14\xc2\xca\xf3\xaa\xe1\x10\x68\xa5\x1a\x65\x75\x5c\x16\xa7\xf9\xd8\x4e\xdf\x1e\xa6\x50\x31\xc7\x73\x56\xb5\xa4\xa8\x06\xb4\xbf\x1e\x49\x95\xf0\x61\x36\x23\x13\x9a\x85\xee\x12\x94\x5c\xf3\x2c\x73\xc3\x0c\xc8\x25\x33\xc4\x4c\xb8\x6b\x0c\x4e\x32\x29\xc6\x30\x39\x2a\x7c\x57\x33\x96\xd8\xdf\x26\x19\xa3\xa2\x2c\xf0\x79\xf6\x58\x9f\xc9\x52\xf9\xe7\x39\x58\xcb\x30\x0a\xd7\x44\xf0\xac\x17\xf5\x4e\xba\x73\x61\xab\x06\xf5\x9a\xf9\x9a\xc2\x1b\xae\x59\x2f\x1e\xd3\x23\xf3\xea\xa8\x73\x46\xa1\xe4\x94\xa7\xd8\xfd\xc2\x93\x0d\xba\xb4\x62\x77\x8c\xb0\x9f\x85\x14\x7d\xc1\xc6\x14\xb4\x1e\xb7\x8b\x70\xcd\x70\x1c\x0c\xc5\x89\x14\xfa\x65\x58\x73\x41\x16\xb5\x52\xd6\x29\xc7\x4e\x9f\x11\xe5\xc8\x9e\x90\x44\xc2\xf1\x5a\x0a\x6e\xb0\x7b\xf4\xa4\x34\x24\x95\x37\x62\x7f\x80\xa8\xc4\x5c\x13\x4a\x86\xcc\xf8\x4e\xb6\xbe\xb3\x22\x57\x4c\x13\x26\xe8\x30\xb3\x6b\x0e\x09\x0f\x57\x4b\x09\x44\x46\x8c\x9a\x52\x31\x32\xa6\x86\x2d\x55\x9a\xf0\x7d\xef\x26\x2f\xd7\xa1\xcb\x7b\x29\x34\x6b\xdc\xdf\xba\x63\x4d\xeb\x2f\x5f\x35\x93\x11\x3c\x67\xb2\x34\x9f\xc4\x94\xbc\x99\xf0\x64\x12\x6b\xc6\x3c\x67\x9a\xc8\x72\xce\xc6\x7e\xe9\x7e\xb6\x7c\x85\xb6\xf6\xe4\xb2\xab\xa9\x97\x78\x89\x2b\x6d\xbe\xe4\xb8\x6a\x2b\x4b\xed\x06\x3c\x3e\xbb\xfc\xc7\x9b\xc3\xef\x4f\xde\x0c\xc8\x09\x4d\x26\x71\x3d\xba\x20\x14\x84\x06\x08\x8a\x09\x9d\x32\x42\x49\x29\xf8\x6f\x25\xa2\x93\x93\xbd\xf0\xdb\xfd\x4e\xb1\x90\x1b\x9e\xbe\xd0\xfa\xba\xb3\x5e\x4b\xd8\x48\x1b\x13\x1c\xa4\x66\xd0\x1d\x61\x5e\x7d\x3a\xb1\x5f\xa1\xa1\x01\xaa\xd6\x84\x59\x61\xc4\xa7\x4e\x0c\x3b\x70\x69\x9a\x86\x94\x0b\xcb\xe7\x96\x2d\xec\x51\x45\x87\x90\x2a\x31\x61\x44\x30\x63\xd9\x3a\x38\xac\xa4\xd0\x35\x60\x80\x52\x33\xdd\x23\xc3\x12\x92\x3b\x0a\xc5\x73\xaa\x78\x36\x8b\x07\xb3\x67\xd5\x99\xf4\xe6\xd0\x6c\x7e\x4a\xc7\xef\x4e\x2e\xc9\xd9\xbb\x2b\x52\x28\x84\x0c\x80\xec\x0c\xf8\x1e\x5e\x6b\xc8\xec\x2f\x5c\x8f\xce\x01\x39\x14\x33\xfc\x12\x37\x38\xd7\xc4\xda\x42\x0c\x8e\x60\xa7\x43\x7a\x50\xf8\x9d\x17\x03\xf8\xdf\x8e\x7d\x4b\x65\x95\xcc\x90\x74\x92\x2c\x24\x8f\xa1\x1a\xca\x87\x59\x44\x4d\xf7\xee\xcf\xaa\xdb\x52\x48\x9b\x3b\xb7\x44\x8c\xba\x2d\xd1\xb0\xd4\x40\x5e\xec\xbe\xc5\xc5\x38\x8b\xb9\xaa\x99\xd8\x6f\x6b\x5b\xb6\xb5\x2c\xfb\xd5\x1b\x9c\x37\x35\x30\x3b\xe9\xfa\x54\xcd\xa1\xa3\x5e\x29\xd5\xe9\xe7\xcd\x29\x27\x11\x64\xdc\xfe\xf2\xf4\xdc\xef\x00\xa7\xdd\xe4\x73\x3d\x13\xe1\xc7\x18\xd4\xe8\x91\x17\xe4\x1b\xf2\x91\x7c\x03\xe6\xd5\x5f\xda\x76\x96\x69\x6b\xf8\xb4\x77\xef\xa0\x55\x7f\x7a\xde\x11\xc5\x7f\xb6\xd2\xc9\x8e\x68\xa9\x6a\x24\x19\x72\xa7\xce\xb3\x8f\x86\x29\x2b\x47\xdd\x4a\xac\xb5\x27\x8f\x9d\xe0\x27\x64\x33\x8c\x5d\x9c\x8e\xe2\x96\x10\xe6\x81\x8c\x66\x7f\xfe\x37\xa9\xcd\x99\x93\x42\xf5\x06\x13\xd5\x68\x39\x35\xc9\xa4\x2e\xc6\xac\xa2\xa6\x4d\xb5\xc1\x34\x49\x25\x78\xd2\x30\x0f\x70\xc2\x5b\x64\x62\x6c\x0e\x1b\xb7\x0b\xce\xd7\xd6\xf3\xae\x95\x9a\x73\xa0\x80\xe5\xe3\x14\xab\x08\x5e\xa6\x90\xa9\xd3\xc9\xec\xb4\xd2\xe8\xcc\xb8\x43\x29\x73\xbe\x9a\xe0\xb2\x06\x5e\xb2\xfb\x29\xa1\x02\x13\xb8\x47\x4c\x29\x4c\xdd\x1c\xce\x20\x82\xcc\x13\xd6\x7a\xf1\x5a\xed\xa4\x42\x49\x23\x13\xd9\xa2\x6d\x50\x3d\x60\xee\x86\x03\x22\xa0\xf3\xd7\xfb\xdc\xdf\x1f\x9f\xf7\xc8\xd5\xd1\x39\x74\x53\xb9\x3c\xba\x3a\xaf\x5b\x2a\x3b\x57\x47\xe7\x3b\x6b\x25\x05\xf1\x9a\xd5\x2b\x3b\xcd\x06\x83\xd4\x1c\x4f\x56\x6d\xeb\xe7\xb4\xe8\x5f\xb3\x59\xc3\x33\xb5\x8b\x73\xbd\x1f\x56\xb8\x93\x17\x42\x32\xe7\xb4\x78\xf0\x68\x8a\xd1\x94\x7f\xa2\x2a\x0a\xb7\xb3\xaa\x67\x2e\x2f\xa7\xc8\xe5\x94\xa5\xa8\x0e\xfb\x5f\x30\x91\x16\x92\x5b\x7d\x71\x5b\x63\xf1\xf0\x5f\x6f\x6b\x2c\xee\xba\xb6\x35\x16\xdb\x1a\x8b\x6d\x8d\xc5\xdd\xd7\xb6\xc6\xc2\x5d\xeb\x77\x83\x92\x6d\x8d\x45\xc3\xeb\x79\xc5\xf9\xb7\x35\x16\x0f\xba\xb6\x35\x16\x8b\xd7\xb6\xc6\xe2\x96\x6b\x5b\x63\x71\xcb\xb5\xad\xb1\xd8\xd6\x58\x6c\x6b\x2c\xb6\xd9\x62\xf7\x8e\xb5\x99\xd9\x62\x64\x5b\x63\xe1\xae\x6d\x8d\xc5\xb3\xc8\x89\x21\xdb\x1a\x8b\x95\xae\x6d\x8d\xc5\xb6\xc6\xa2\xc9\xb5\xad\xb1\x80\x6b\xeb\x7b\xd9\xd6\x58\xf8\x6b\x5b\x63\x81\xd7\x1f\x47\x6b\xde\xd6\x58\x6c\x6b\x2c\xb6\x35\x16\xdb\x1a\x8b\x3b\x67\xb1\xad\xb1\x78\x0e\xf6\xa4\xef\x81\xd7\xbe\x66\x60\xf7\x48\xe6\x45\x69\x18\xb9\xf0\x43\x06\x2d\x12\x05\x03\xd7\xb1\x46\xd0\x3e\x85\x27\x91\x62\xc4\xc7\x4e\xb2\x1f\x60\x83\xb9\x7e\x78\x9f\x7e\xd4\xd4\xed\x09\xe6\xef\x64\x3c\xe7\xcd\x0a\x39\xc8\xc2\xc2\xbc\x81\xb1\xa2\x20\x8f\xdd\x49\x39\xfd\x08\x5b\x84\xe6\xb2\xc4\xa6\x7c\x89\x5b\xbf\x40\x42\x0c\x85\x6d\xdc\xca\x90\x6e\x4c\x9c\xaa\x22\xe5\xbc\x03\x6b\xa3\xa0\xc6\x30\x25\x5e\x91\xff\xde\xfb\xf0\xf9\xef\xfd\xfd\xef\xf6\xf6\x7e\x79\xd1\xff\xcf\x5f\x3f\xdf\xfb\x30\x80\xff\xf8\x6c\xff\xbb\xfd\xdf\xfd\x1f\x9f\xef\xef\xef\xed\xfd\xf2\xe3\xdb\x1f\xae\xce\x4f\x7e\xe5\xfb\xbf\xff\x22\xca\xfc\x1a\xff\xfa\x7d\xef\x17\x76\xf2\xeb\x8a\x83\xec\xef\x7f\xf7\x1f\x8d\xa7\xdc\x5a\x25\xee\x4e\x21\xee\x48\x1d\x7e\x14\x65\xd8\x45\x87\x3b\xda\x8b\x17\x6e\xb4\xf9\xdd\xe8\x0e\xac\xbb\x76\xa3\x97\xa6\xa0\xe6\x85\x71\xb8\x26\x32\xe7\xc6\x2a\x87\x56\x1f\xa4\x71\x5e\x18\x37\x35\xa3\xd4\xc9\x01\x48\xa8\xa4\x06\x7b\x84\x86\x9c\xaa\x28\x4f\x5b\x7a\xcd\xcf\xf5\x5e\x0d\xfe\x0a\xd8\xcf\xfd\x94\x8d\xb8\x60\x2e\x0e\xb6\x95\x0d\xf7\x5f\x5b\xd9\xf0\x1c\x65\x83\x66\x49\xa9\xb8\x99\x1d\x49\x61\xd8\xc7\x46\x1e\x96\xba\x68\xb8\xac\x0f\x48\x70\x9f\xb9\x2a\x4a\xf7\x1d\x91\x05\x26\x50\xce\x95\xb3\x86\x14\x5c\x55\x0a\x30\x30\xb1\x4a\x86\x19\xb4\xfe\xc0\xee\x81\x9c\xc8\xf9\x87\x78\x7b\x0e\xcd\xcc\xdf\x4a\x3e\xa5\x99\xb5\x76\xab\x5f\x9c\x83\x05\x13\xff\x68\xd5\x3d\x6f\xa8\xbe\xae\x36\x3c\xeb\x5b\x1d\x3a\xcc\xf9\xc0\xbf\x12\x7c\xc4\x3e\x9a\xa7\xa8\xa5\x81\x82\x74\xae\xf8\x94\x67\x6c\xcc\x4e\x74\x42\x33\x90\x6b\xdd\x9c\x15\x87\xb7\x8c\x0e\x0b\xaf\x64\xa6\xc9\xcd\x84\x41\x77\x65\xea\x5d\x00\x50\xe1\x32\xa6\x5c\x90\xdc\x2e\x51\xe1\x7f\xac\xd1\x97\x60\xc5\x7f\x41\x95\x5d\xe0\xe0\x33\x00\x13\x79\x28\x65\xe6\x52\x87\xb3\x59\x35\xbe\xcb\xbd\x17\xf2\x1f\x82\xdd\xfc\xc3\x8e\xa6\xc9\x28\xa3\xe3\xe0\x2a\xd0\xcc\x2c\x78\xfb\xaa\xa1\x6f\x7d\x01\xc8\xcb\x2d\x19\xa1\xd9\x0d\x9d\xe9\xca\x71\x12\xf7\x01\x7f\x45\x5e\xee\x03\x3b\x53\x4d\xc2\x18\x29\xf9\x62\x1f\x62\x89\x47\x87\xe7\xff\xb8\xfc\xfb\xe5\x3f\x0e\x8f\xdf\x9e\x9e\xb5\x3b\x29\xec\xbb\x33\x2a\x1a\x8d\x91\xd0\x82\x0e\x79\xc6\xdb\x1c\x10\x0b\xd9\x26\xf1\xa0\x70\x04\xa7\xe9\x41\xaa\x64\x81\x74\xf2\x3e\xaa\xea\xa4\xac\x5b\xc1\x71\x65\x32\x2c\xcf\xa8\x3e\xe0\x58\x51\x61\x2a\x67\x4d\x45\x72\x55\x0a\x6b\x58\x3f\xf1\xc4\x7c\x9a\x76\x97\x94\x7f\x98\xa6\x2c\xad\x51\xef\xd9\x25\x01\x1e\xf9\x97\x9b\x55\x35\xda\xe4\xfc\xdd\xe5\xe9\xff\x33\xc7\x86\xb3\xa2\x5d\xce\x53\x37\x75\x61\x4a\x16\x9d\xad\xee\x85\xab\x3b\xda\xae\xef\x46\xac\x6f\x38\xab\xba\x89\xb4\x5f\x94\xa2\x0e\xe3\x51\x8d\x4f\x72\x99\xb2\x01\x39\x0f\x5e\xfa\xfa\xb7\x51\x79\x2f\x55\x8c\xd8\x5b\x84\xe1\x34\xcb\x66\xb1\x82\x64\x24\x16\xd3\xd4\x2a\x93\x63\x39\x3c\xa2\x99\x6e\x29\x4c\xdb\x9c\x4c\xf6\x10\x7e\x6b\x8d\xc9\x4e\xa8\x19\x46\x23\x29\x13\xd2\x38\xad\xd4\xce\x12\x8a\xb5\x95\x4c\x08\x5a\xae\x51\x5a\x54\xed\x74\xd1\xe8\xe8\xf7\x07\x13\xd7\x9e\x56\xe7\x61\x64\xf4\xf2\x96\x9a\xcd\x6b\xb7\xee\x60\xaa\x6c\x59\x3b\xba\x62\x34\x85\x9a\xb4\x82\x9a\x09\x66\x35\xe4\x54\x5f\xb3\x14\x3f\x70\x7a\x4d\x70\xf3\xdb\x11\xc3\xa3\xae\xec\xbc\xbd\x4f\x1f\xf4\x19\xcc\xb5\x80\x58\x40\x33\xd0\x0d\xd2\xc5\x16\xb0\xef\xf4\x4e\x64\xb3\x0b\x29\xcd\xeb\x50\x8b\xd5\xc9\x02\xfe\xec\x34\xc5\xba\x1b\x16\x54\x29\x48\x42\x48\xfb\x40\x4c\x60\xe9\xb8\x0c\xec\xb8\x5a\xb0\x35\x33\xb4\x2a\xc5\xa1\xfe\x41\xc9\xb2\xf1\x09\xb0\xa0\x68\xfd\x70\x7a\x0c\xfb\xb8\x74\x51\x36\x61\xd4\x0c\xaa\x4e\x17\x01\x83\x82\x4e\xfb\xde\xc5\x09\x63\x8e\xac\x42\x3a\xe4\x2d\x9d\x11\x9a\x69\xe9\x95\x63\x2e\x96\x1a\x50\xce\x3a\xb3\x5f\x0f\xa5\x99\x2c\x98\x65\x96\x9d\x17\x7f\xd7\x8b\x82\x6e\x15\x82\x11\x17\x0b\x3f\x37\xf4\x9a\x69\x52\x28\x96\xb0\x94\x89\xa4\xe5\xaa\xad\x3b\xd4\x04\x2b\x7f\x26\x85\xdd\x16\x9d\xac\xfd\x69\x88\x31\x82\x23\xac\xbe\xd2\x10\xad\x74\x76\x07\x85\x98\x25\x6c\x8a\x52\x33\x85\x01\x56\x55\x32\x5c\x88\x1f\xcb\x21\xcb\x98\x41\x63\x08\x70\x27\xa8\x41\x43\x9a\xe7\x74\xcc\x08\x35\x81\x51\x8c\x24\x4c\x68\x2b\x6e\xd0\xf5\x66\x48\x2a\x59\x55\x40\x49\x35\x79\x7f\x7a\x4c\x5e\x90\x3d\xfb\xac\x7d\x58\xfe\x11\xe5\x19\x84\x33\x0d\x55\xf3\x73\xe4\x23\x3f\x04\x4c\x09\x78\x8f\x48\x85\x5b\xb4\x47\x84\x24\xba\x4c\x26\x7e\x4e\xd6\xe2\xf2\x06\x9b\xcb\xe7\x03\xa7\xfe\x33\x64\xd5\xd6\x02\xe6\xbd\x66\xaa\x33\xf9\xf2\xbe\x81\x7c\x89\x55\x08\xcb\x73\x75\xea\x21\x63\xe5\xcc\xd0\x94\x1a\xea\xe4\x4e\x55\x75\xfd\x1c\x97\x74\xdd\xd2\x47\xb3\x37\x5c\x94\x1f\x31\x63\xa5\x3b\x23\xff\xf2\x04\x86\x25\x89\x27\x1a\x2c\x1a\x2d\x8a\x8c\x63\xbd\xf3\x5c\x06\xd5\x69\x6d\xa9\x7b\xb7\xa8\x48\xb0\xcd\x69\x96\x49\x2b\xde\xec\xc9\x4e\x45\x2a\xf3\x85\x87\x59\x05\x8a\xd5\x80\xee\x06\xe4\x59\x32\xcf\xda\xdd\x11\x19\x9b\xb2\x16\x98\x2e\xf3\xb8\x7c\x76\x34\xab\x8b\xf9\x05\x85\xe1\x49\x46\x87\x2c\xc3\x93\x05\x19\x48\x2f\x32\xd0\xba\xb3\x10\x95\xcc\xba\xab\xc1\xb8\x90\x19\xc3\xb4\x1e\x4f\x08\x3b\xfc\x93\xa0\x03\x0c\xd2\x15\x1d\xc0\x90\xa9\xd1\x01\x4c\xb2\xa7\x40\x87\xb2\xc5\x41\x4b\xe6\xe9\x60\x4f\xed\x3a\x1d\xe0\xe8\xdc\x74\x3a\x68\x96\x24\x32\x2f\xce\x95\xb4\x26\x57\x67\x47\x8b\x1b\xb6\x8a\x15\xa1\x4d\xbe\x24\x09\x07\x44\x79\xfd\x66\xaa\xa2\x84\x3e\x6a\x50\xc6\xfb\xac\xbe\xff\x5f\xdc\x21\xd9\x8a\x9e\xf9\x73\xc8\x8f\x52\x0b\x2b\xd9\x5f\xba\x2f\x9e\x38\x9c\x40\x0b\x2f\x59\x27\x87\x89\x4c\x68\x06\x90\x7b\xed\x38\x86\xcc\x73\xcd\xfc\xc0\x51\x16\x26\x84\x96\xe0\x33\x1f\xf7\x07\xf4\x35\xf8\xc4\xf9\xbe\x84\x4c\x59\x14\x82\xc4\xf4\xd1\x2b\xcc\xd6\x83\xfb\x7c\x02\xa8\x3d\xd5\x7d\x34\x30\xad\xfd\xda\x48\x87\x00\xf3\x36\x00\xf9\xd9\x09\x32\x91\x72\x31\x06\x8f\x4e\x8f\x28\x96\x61\xea\xa8\xdb\xc3\xd7\x68\x7e\xed\x02\x47\xfb\x41\x3d\x3b\xfb\x47\x83\x26\xc4\xa5\x70\x23\x83\x93\xc3\xeb\x37\x23\x94\x96\x5c\x93\x9d\x37\x9e\x00\x2d\x90\xcf\x36\xf1\x80\xd8\xc1\x37\x0c\xab\x89\x3e\xb6\x6b\x2e\x52\x97\x65\x59\x23\x56\xc0\xa8\x45\x2d\x14\xf2\x77\x79\x1a\x8b\x86\x57\xe4\x83\x20\x81\x58\xa4\xdf\x98\x3d\x2e\x50\x61\xf5\xee\xa5\xfe\xdd\x2e\xbf\xf0\x90\xf9\x61\xde\x0b\x58\x7b\xfb\xdc\xbe\x35\x7b\x17\xef\xf3\xef\xb2\xb3\xce\x75\xbd\xe1\x22\x95\x37\xba\x6b\x1b\xe2\x67\x1c\xd6\x2b\xd4\x89\x65\x6b\xc3\xc5\x58\xc7\x76\x04\xcd\xb2\x9a\x1b\x76\x99\x21\xe1\x57\x38\x20\x12\x2f\x2a\xf0\x73\xd9\xe1\x5b\x23\xe0\x01\xd7\x38\xd7\xf4\x48\xd9\x57\x31\x9c\x66\x97\x45\x73\x68\x36\x32\xcf\x06\x3f\xbc\xbd\x3c\xac\x0f\x6d\xe5\xd9\x0d\x20\x5e\x5b\x62\xdb\xef\x09\x4d\x73\xae\x35\xb8\x81\xd8\x70\x22\xe5\x35\xd9\xf3\x69\x1b\x63\x6e\x26\xe5\x70\x90\xc8\x3c\xca\xe0\xe8\x6b\x3e\xd6\x07\x8e\x69\xfb\x76\xf6\xfb\x84\x8b\x2c\x64\xa3\x80\x19\x29\x8c\xf6\x6e\x0c\x78\x48\x12\x66\x01\x6b\xeb\xf0\x3a\x5d\x94\x79\x71\x9a\x88\xd0\xc9\x59\xb6\x7e\xc0\x99\xc5\xe5\x39\x6b\x89\x9d\x71\xcf\x12\xc1\xbb\xbb\xd2\x94\xb8\x8c\x6a\x29\x1d\x51\x7b\x5b\x3b\x91\x9c\x76\x90\x30\xdd\x1d\x2a\xcf\xdf\xaa\x31\x49\xca\xb0\x7a\x82\x41\xd6\x09\xbd\x35\xb9\x09\xbc\xb2\xbb\x50\x84\xe7\x7e\xba\x1b\x6b\xb4\x10\xf5\xc1\x32\x0f\x6b\x0f\x64\xc5\x84\xf6\xd1\x48\xb6\x22\x09\x64\x98\xd7\x01\x26\x52\x48\x97\x9c\x6e\x4f\x41\x29\x80\xa5\xc1\x5a\xc0\x40\x10\xac\x89\x93\xb1\xd1\x54\x8f\xaa\xf8\x60\x1c\x43\x82\x22\x1e\x04\x01\xa8\xe6\x70\xc3\xcd\xc4\x23\xdc\xd7\x02\x4e\x30\x13\xc5\x34\x44\x0f\x04\x61\x4a\x49\xe5\x12\x61\xbc\xd7\x16\x46\x02\x51\x0c\x99\x34\x96\x49\xa8\xfd\x6b\x57\xc7\x21\xca\x0a\x02\x17\xf2\xc4\x2c\x37\xb1\xd1\x88\x25\xa0\x29\xc5\x04\x46\xb1\xbb\x57\x21\xf7\xb9\xec\x6e\xcb\x60\x0e\x42\x37\xe7\x1f\xed\x53\xe2\x5f\xc5\xc1\x50\x87\x98\xb7\xfc\xeb\xfd\x01\x21\xa7\x22\x64\x4e\xf6\xec\x2a\xc6\x77\xfa\x94\x1f\x63\x5f\x31\xc6\x5f\x86\x17\x88\xfd\x4e\x56\xbd\x53\x65\x07\x1c\xdf\xc6\x19\x4c\x62\x87\x70\xa7\xe2\x00\x1c\xc3\x6e\x50\xbb\xf4\xfe\x10\x6f\xe3\x28\xb6\xb7\x3c\x96\xb3\xf8\x69\x9c\xf4\xa4\xad\x9c\x73\x25\xf1\x1d\x81\xe2\x5e\x46\xa3\x45\xea\x77\x08\x37\x9d\xcb\x14\x21\x31\x42\x49\x3f\xf4\xb2\x00\x88\x0e\xfe\x6f\xaf\x60\x55\x4a\x9a\x90\x98\x95\x1d\x63\x65\x38\x4c\xd0\x94\x58\x5d\x39\xf3\xb6\x7d\x5e\x64\x0c\xaa\xe7\xa2\x91\xab\xc2\xc0\x08\x45\xb7\x17\x26\x52\x01\xf1\x3a\x84\x8e\x1e\xf9\x17\x6c\xca\x90\x00\xe8\xc1\x03\xce\xc3\xcf\xd1\xc4\xe3\xda\x43\x6a\x43\x65\x9b\x91\xde\x75\x40\x52\x3e\x1a\x31\x9f\x68\x68\x4d\x3f\xaa\x68\x6e\x45\xbc\x26\x8e\x04\x43\x36\xe6\x98\xc9\x16\x04\xdb\xae\xae\x2a\xe0\x7b\x28\x0c\xb9\x21\x39\x1f\x4f\x90\x51\x08\x85\xca\x48\xe2\x43\x6a\x99\xa4\x29\x01\xde\x96\x8a\xdc\x50\x95\xdb\x73\x83\x26\x13\x88\xcf\x51\x41\xd2\x52\x01\x4c\xa4\x61\x34\x9d\xf5\xb5\xa1\xc6\xaa\xba\x4c\x39\x8b\xd0\xcf\x7f\x0b\x25\x7c\xe7\xb5\x85\x12\xbe\xfd\xda\x42\x09\x6f\xa1\x84\xb7\x50\xc2\x77\x5f\x5b\x28\x61\x77\xad\xbf\xda\x97\x6c\xa1\x84\x1b\x5e\xcf\x0b\xce\x66\x0b\x25\xfc\xa0\x6b\x0b\x25\xbc\x78\x6d\xa1\x84\x6f\xb9\xb6\x50\xc2\xb7\x5c\x5b\x28\xe1\x2d\x94\xf0\x16\x4a\x78\x0b\x8a\x76\xef\x58\x9b\x09\x8a\x46\xb6\x50\xc2\xee\xda\x42\x09\x3f\x0b\xe8\x27\xb2\x85\x12\x5e\xe9\xda\x42\x09\x6f\xa1\x84\x9b\x5c\x5b\x28\x61\xb8\xb6\xbe\x97\x2d\x94\xb0\xbf\xb6\x50\xc2\x78\xfd\x71\xb4\xe6\x2d\x94\xf0\x16\x4a\x78\x0b\x25\xbc\x85\x12\xbe\x73\x16\x5b\x28\xe1\xe7\x60\x4f\x6a\x93\xf2\x46\xc8\x67\xab\x00\x55\xb8\xcc\x90\xa8\xb4\x75\x58\x8e\x46\x4c\x81\xe4\x82\x27\x2f\x64\x21\x04\x40\xab\x20\xcb\x5c\x9e\x01\xc0\xe2\x29\x46\x53\x97\xf0\x7e\xcb\xcf\x5d\x2d\x2d\x20\x94\x55\x99\x9a\x27\xef\x5e\x77\x83\x8a\xd1\x2e\x47\x11\xe6\xfc\x4e\x24\xed\x73\xd5\x2a\x82\x2f\x2b\xc0\x70\x74\x4f\x32\xa9\x5d\x86\x29\x10\x2b\x99\x50\x21\x98\x37\x1e\xb9\x01\xa7\xcc\x90\x31\x41\x64\xc1\x04\xca\x6f\x4a\x34\x17\xe3\x8c\x11\x6a\x0c\x4d\x26\x03\xfb\x24\xe1\x89\x5d\x65\x83\xba\x4f\xb4\x51\x8c\xe6\x3e\x2f\x36\xa7\x1c\x87\x22\x34\x51\x52\x6b\x92\x97\x99\xe1\x45\x18\x8c\x68\x06\x09\xed\x78\x50\x05\x62\x40\x7a\x49\x95\x42\xda\xab\x9e\xe6\xa6\x25\x63\x50\x20\x30\x5d\x7b\x80\x83\x9a\x17\x66\x16\xf2\xe8\x18\x19\x71\xa5\x0d\x49\x32\x0e\xa7\x35\x3c\x11\x6b\x07\x61\xbc\x9e\x3f\xab\x85\x9b\xa9\x76\x53\x15\x29\xa8\xad\x85\xd1\x98\x95\x56\x0d\xe8\x86\x4a\xb9\x76\x6a\xbe\xee\x11\xea\x21\x6f\x90\xd0\x7e\xa6\x40\x6a\x7f\xb2\xe0\xe8\xee\xa3\x68\xb8\x08\x27\xaf\x4a\xdb\xab\x18\x1d\x52\x8c\x3d\x73\xf6\x6a\xd9\xd4\x95\x42\x01\xe9\x2e\x0b\xdb\x00\x16\x40\xb0\xa9\xe5\x01\x96\x30\x7b\xbe\xd2\x5b\xb8\xfe\x93\x33\x7d\x74\x28\xbe\x65\x5a\xd3\x31\x3b\x6f\x18\xb5\xb8\xcd\x22\x83\xc0\x45\xb5\x30\xc0\x0a\x19\x96\xa7\x85\x4f\xaa\x34\xa7\xba\x1a\x44\x72\x9c\x53\x50\x7e\x6e\x14\x37\x86\xc1\xa2\x02\x38\x12\x04\x3e\xe7\x0b\x50\x77\xe7\x92\xa5\xde\xfa\x41\xaa\x1f\x5b\xa1\x2e\x52\x4c\x5d\x1a\x32\x32\x54\x9c\x8d\xc8\x88\x43\x3e\x14\x64\x28\xf5\x10\xee\x83\xa2\x47\x41\x6b\x6b\xef\x4a\xe1\x75\x59\x3f\xaf\x01\xf9\xd9\x4d\xcc\xa8\x52\x24\x34\x02\x01\x84\x12\x2d\x3e\x22\x63\xc8\x70\x72\xda\xe2\x57\x2f\xfe\xf3\x2f\x64\x38\xb3\x47\x1a\x68\x56\x46\x1a\x9a\x85\x97\xcc\x98\x18\x5b\x5a\xe1\xf6\xac\x17\x19\x05\x0a\x00\x8a\x39\x4e\xfc\xe5\x17\xd7\xc3\xfa\x19\x7b\x90\xb2\xe9\x41\x44\xbf\x7e\x26\xc7\xcb\x70\xe1\x9b\xa7\x4c\x36\x34\x89\x96\xb0\x99\xcc\x78\x32\x6b\xcd\x68\x1e\x77\x86\x4c\xe4\x0d\xea\xfa\x4b\xb8\xa7\xca\x81\x2c\x64\x51\x66\xe8\xc1\x7e\x1d\xca\xf3\x4a\xcd\x16\x6b\x70\x96\xee\x0b\xf0\xb9\xba\x21\xe6\xf1\x62\x31\xb1\xcd\x3f\x52\xba\xdc\x6e\xe7\x15\x0c\xf0\x33\x60\x08\xbd\xa6\x59\x36\xa4\xc9\xf5\x95\x7c\x23\xc7\xfa\x9d\x38\x51\x4a\xaa\xfa\x5c\x32\x6a\xa5\xe5\xa4\x14\xd7\x88\x5c\x1d\x4a\x84\xe5\xd8\xaa\x56\x45\x69\x7c\x22\xf1\xb2\x17\xc6\x82\x53\x2f\x84\xbd\x19\x54\x8d\xc2\x3e\xf2\xca\xd6\x71\xa5\x12\xc8\x91\xf1\xf8\x3a\x66\xb6\x2f\x5e\x7c\xf5\x35\xb2\x2e\x91\x8a\x7c\xfd\x02\x92\x1f\x75\x0f\x37\x31\xc8\x36\x7b\x50\xe4\x34\xcb\xac\xd9\x10\x33\xa5\x25\xf4\x32\x26\xfc\xe4\x3c\x68\xda\xb3\xdb\xca\xaa\xd4\xd5\xd5\xdf\x41\x8f\xe2\x46\xb3\x6c\xd4\xc3\xaa\x80\x60\xd6\xec\xc2\xc1\xb0\xeb\xa4\x0f\x94\x66\x6c\x80\x02\x34\x95\x59\x99\xb3\x63\x36\xe5\x5d\x34\xaf\xa8\x8d\xe6\x4d\xfd\x8c\x6b\x28\xc0\x18\x66\x32\xb9\x26\xa9\xfb\x32\x4a\x63\x99\x87\x50\x6d\x4e\x85\xa6\x09\x3d\x2d\x12\x79\x6e\x7d\xff\x5a\x0a\x4f\x4e\x8b\x22\xe4\xe8\x2b\x7a\x53\x23\x06\xec\x49\xa8\xf7\x6d\x89\xa7\xd0\xda\xcd\xdc\xd6\xc9\xdc\x77\x6f\x64\xe5\x66\xe3\x21\x1a\xa7\xb0\xb4\xf7\x51\x57\xb3\x6f\xee\x98\xac\x31\x44\x35\xa0\xdf\x0d\x05\xfc\x37\xa6\x67\x2f\x54\x25\x85\xc2\x96\xc0\x18\xa8\x00\x58\xf6\x01\x91\xdc\xdc\xe1\xda\x81\x77\xb3\x5d\xfe\x52\x8d\x2e\x22\x78\x95\x73\x6a\x9c\x42\xe8\xdd\xd7\x94\x14\x4c\x69\xae\xed\xb9\xfc\x13\x6c\xa8\xa3\x8c\xf2\x3c\x72\x01\xae\x87\x08\xb8\xb9\x01\xf9\xb2\xbd\xa4\x3c\x97\xa9\x1b\x10\x44\x21\xa2\x7e\x2e\x51\x6b\xeb\x5a\x6d\x87\x07\xea\xba\x45\xe5\x4f\x15\x35\xeb\x92\xd2\x7e\x12\x44\x25\xde\xf5\x9c\x04\x24\xbc\xdf\x53\x95\x8f\x61\xf2\x1d\x89\x01\x10\x8c\x6e\x71\xeb\x92\xb0\x66\x3c\xe2\x46\x89\x54\x7a\x67\x07\x0e\x08\x86\xd4\xed\x9e\x70\x3f\x25\xbb\xaf\x76\xd7\x2a\x24\x91\x44\x4a\x16\x74\xdc\xaa\x87\xc1\x1c\xa5\xe6\x87\x8d\x0b\xbd\xad\x19\x04\xdf\x07\xd8\x21\xb8\x8b\xa5\x15\x10\x05\xc0\x8c\x60\x74\xd4\x13\xd8\x19\x08\x58\x0f\x79\x43\x67\x84\x2a\x59\x8a\xd4\xf9\x97\x82\x83\xef\xed\xdc\x83\xcf\xa4\x60\xde\x71\x3e\x5f\x27\x0e\x1e\x7d\x2e\xc8\xcb\xc1\xcb\x17\xcf\xe5\xa4\x82\x37\x9c\x3b\xa9\xce\xc2\x49\x85\xf2\x69\xad\xef\xea\xd1\x8e\x3b\x7a\xdf\xb7\xce\xc5\x52\x81\x19\x73\x0f\xd6\x0a\x1f\xdd\x28\x6e\x58\xd4\xdb\x68\x0f\x0c\x17\x6b\x1f\x46\x55\xd1\xfb\x1d\x62\x78\x77\x53\x86\xae\xcb\xe1\x23\xca\x2d\x27\xa0\x60\xbb\x2d\xf3\x70\xe9\x3b\x44\x58\x4c\xa8\x9d\x1d\xb2\x87\x77\xee\x62\x65\xe0\xfe\x5a\x59\xcb\x11\xed\xe4\x63\xd1\x02\x63\xae\x46\xb8\x93\x8f\x05\x05\x1f\x5c\xd1\x21\x05\xbf\x67\x13\x3a\x65\x50\x11\xc9\x33\xaa\x32\x88\x39\x5e\xe2\xdc\xc9\xb0\x34\x84\x89\x29\x57\x52\x40\x82\xcf\x94\x2a\x0e\xa8\x14\x8a\x41\x65\xb5\xb5\x45\xff\x63\xef\xa7\xc3\x0b\x48\x68\xd8\x77\x25\xe1\x6e\x96\xa5\xf6\xf0\x11\xf1\x4c\xa2\xe1\xee\x5d\x3e\x3f\x0f\x4b\x43\x90\xb9\x7e\x5e\xf6\x39\x79\x69\x4a\x04\xc4\xff\x98\x64\xa5\xe6\xd3\x75\x49\x12\x57\xaa\x7a\xcc\x1b\xad\xf3\x5c\xd9\x6c\x45\xa8\x85\x0a\x58\x70\xad\xc3\xd1\x72\x0f\x02\xeb\xae\x0e\x98\x55\x71\x0c\xdc\xb9\x9e\x5c\x2d\x3b\xe6\xe2\x79\xc8\xb2\x05\x15\x02\x70\x1b\xd6\xeb\x84\x12\x32\x65\x0f\x47\xbd\xa8\xa7\xf7\xb8\x21\x30\x66\x1e\x95\x03\xea\x64\xc2\xd2\x12\xe0\x55\xb8\x46\x70\x40\x6b\x3e\xd0\x0a\xc6\x4a\x40\x7f\x86\xd3\x51\xa8\x0d\x16\x7d\x70\x0e\x22\xcd\xfd\xef\x95\xaf\x24\xf6\x1f\xe8\xb9\x11\xc1\x28\xb5\x63\xf5\x08\xd5\xba\xcc\x71\x4b\x20\xfc\xf6\x88\x1b\x1d\x7a\xeb\x79\xed\xd8\x6e\x8c\x07\x56\x67\xb5\xa0\xef\x25\xcb\x80\xb9\x5a\xd0\x78\xf7\x2c\x1a\x07\x09\xad\xfd\x5f\x8e\xe1\x5c\xc2\x04\x44\xdb\x42\x52\xa8\x04\x2f\xe9\x88\x43\xfb\x0a\xea\xe8\x7d\xb9\xe4\x97\xa8\x3a\xe0\x1d\x00\xcf\x40\x87\x2c\xd3\xf3\x03\x0d\xab\x45\x71\xb0\x7e\x8e\xf0\x2d\xbb\x03\x52\xad\xf9\x58\x40\xdf\x30\x3b\xda\x03\x3b\x84\x35\xb6\x99\xba\xe8\xfe\xd7\x58\xaa\xd5\xb2\xb0\x72\x5a\xf4\x9d\xd5\x6b\x64\xce\x93\x07\x8c\x24\xa7\x4c\x4d\x18\x7d\xa0\xc1\x37\x17\x17\x73\x63\x54\xad\x63\xb4\xab\x72\x74\xfb\xc6\x3f\xc4\xee\x2f\x99\x40\xb6\x3d\xfa\xe9\x7d\xf6\x13\x05\x16\xc1\xc6\x94\x63\x3e\x65\xc2\x03\xff\x1d\x65\x34\x34\x1f\xf3\x50\x49\x0e\x7c\xb0\x34\x32\x44\x3e\xac\x39\x55\xa1\x97\x41\xa0\xd4\x39\x5d\xe3\x71\xa2\x5b\x5c\xeb\xb2\xcc\x83\xf5\xaf\x72\x27\x04\x1f\xb0\xf5\x47\xaf\x7a\xa5\xdc\x1b\x68\x35\x78\x1c\x92\x40\x88\x2c\x74\x05\xc5\x40\xc4\xfd\x8f\x70\x71\x6d\xcb\x8b\xcb\x86\x71\x7b\x2e\xe0\x38\x55\x84\xcd\xac\xf2\x3a\x23\xd0\x5c\xe2\x74\x54\x7f\x12\xaf\x41\x5f\x42\x36\x36\xec\xe1\xea\x50\x39\x97\xe9\x65\xc1\x92\x1e\x09\x4b\x19\x77\x6e\x73\x4e\x1b\x4c\x6d\x89\xf0\x1b\xf1\x38\x52\x8a\xe9\x42\x22\x02\x67\xfc\xd8\xb8\x41\x28\x37\xb5\x88\x3d\x36\x22\x00\x0b\xad\xc2\x4a\xf8\x37\x53\x72\xa9\x20\x18\x73\x33\xb8\xfe\x1a\xa4\x00\x13\x13\x2a\x12\x14\xc0\x07\xd7\xac\xd0\x07\x9a\x8f\x71\xd3\xff\xe5\xeb\xaf\x41\x02\x78\x92\x1c\x5c\x9c\x1c\x1e\xbf\x3d\x19\xe4\xe9\x12\x23\xce\x63\x7d\x41\x58\xec\xc7\xb0\x91\xc8\xf4\xe5\xe0\xe5\xd7\x18\xb7\xe7\x1a\x01\x48\x22\xf8\x2f\xac\x49\x5b\xc4\xfe\x3a\x97\x69\xa0\x9b\xcb\xdb\x7a\x60\x34\x72\xad\x32\xe8\xc9\xf4\x1d\x6d\x98\x51\xdb\x36\x8b\xb6\x55\xe6\x6c\x87\xd9\xb2\x85\x62\x56\xbd\xe1\x52\x34\x89\x33\xd7\xed\xbb\xb9\xa1\xbc\xf3\xde\xfd\x65\x05\xb1\x7f\x9a\x18\x5b\xd9\xac\x51\x5e\x67\xf2\x06\x72\x43\xb8\x54\xdc\xcc\x06\x00\xd5\x23\x47\xe4\x8c\x4d\x99\xea\xf9\x51\xdf\xd8\x9b\xce\xc3\x3d\xb1\x01\xb1\xec\x8e\xa8\x2b\xce\x6d\x1b\xb5\x47\xc6\x71\x1a\xc2\x99\x14\xe7\x61\x76\x61\x18\xb7\xf3\xfa\x90\x31\xf9\x29\x94\x33\x4f\x86\x16\xeb\x80\xe8\xc7\xee\x05\x5c\xa3\xe4\x9f\xa8\xe2\xb2\xd4\x04\x7d\xe2\x31\xe6\x20\xc6\xd1\x03\x89\x40\x35\x73\x5e\xae\x30\x48\x48\x8f\xf7\x8e\xae\x40\x9f\xc3\x70\xde\x1c\x2d\x3f\xd2\xb8\xb1\x8b\x3e\xf5\x8f\x52\x3e\xdf\x67\x01\xae\x10\x0f\xb3\xa5\xe7\x97\x3f\x91\x75\x3c\x51\x18\xc6\xcf\x03\xce\x06\xab\xf0\xe3\x28\x13\x3e\xf6\x59\x65\xf0\xfe\xa8\xbb\x47\x9f\x06\x66\x6b\xb0\xa4\x4d\x76\x7c\xd3\xe4\xc6\x62\xfe\xfd\x5a\xb0\x45\x1d\xd4\x2d\xc6\x85\xf3\x69\xd5\xd5\x16\xdc\x41\x3e\x81\x43\xb0\x9f\x28\x6e\x78\x42\xb3\x1d\x38\xc2\xfc\x57\xd6\xf6\x36\x4c\xc5\xdf\x2a\x46\xcc\x8d\xc4\xa7\xd0\x8c\x5c\xb3\xd9\x8d\x54\xa9\xd7\x2f\xfc\x13\xab\xb5\xd0\xc6\x3f\x92\x33\x27\x0b\x10\x92\x4b\xe5\x4c\x91\x21\xf3\x6e\x84\xb9\x9b\x67\x03\x72\x28\x66\xce\x07\x2b\xe2\x4a\x0b\xaf\x46\x0c\x67\xa8\xe3\xa0\x16\x58\x63\x12\x77\x1e\xfa\xa7\x51\xac\x81\xb9\xcd\xc4\xb6\x0a\x64\xd8\x05\x5e\x7b\xf1\x36\xb6\x54\x2e\xd5\x1b\x76\x87\xc2\x44\x75\xe9\xbf\xfe\x24\xd2\xc2\xea\x67\x5c\x30\xad\x7f\xb0\x4b\xd9\x46\xdd\xae\x73\x07\x05\xb5\xca\x8d\x0d\x72\xb2\xca\xab\x62\x76\x4b\x51\xdf\xf3\xdd\x52\x28\xdc\x39\x20\x87\xf0\x01\x24\x06\x5a\xcd\x11\x4a\x09\xec\x60\xd6\xe2\x9d\xeb\x6d\x88\x77\x1c\x9e\x1d\xfb\x04\x2e\x54\x3a\x74\x1d\xb3\x11\x55\xfe\xfa\x4c\x40\x53\x75\x69\x44\xec\xb7\x92\x42\xab\xaa\x9d\x2b\x55\xb2\x9d\x66\xaa\x1e\xa2\x81\x1e\xfc\xf9\xeb\x17\xa0\xed\x85\xe7\x81\xd8\x7f\x60\x56\x74\xd3\x40\x61\xa3\x10\xe1\x7c\x74\xf4\x22\xe6\x07\x4f\x70\x6f\x37\x39\xcf\x1d\x14\x38\xc1\x32\x05\x9a\x37\xb2\x2f\x1b\x05\x04\x9b\x87\x02\xfb\xd5\x74\xaf\x1e\xde\x09\xa1\x4d\x14\xaf\xf6\xdc\x2e\x5c\x7d\xd5\x68\xb8\x2a\xd8\x68\xb9\x7a\x4e\x14\xb4\x47\xbc\x5d\xf7\x31\xe4\x04\x81\xe0\x02\xd7\x08\x88\xc7\x59\xd1\x22\xff\xa9\x81\xbc\x81\x74\xdf\xd6\xaa\xe2\xee\x05\x0e\x44\x8a\x4a\x37\x5c\x48\xe3\x0c\x6e\x6e\xd0\x3b\x9c\x56\x78\x08\x39\xf1\x3d\xf2\x4e\xbc\xc6\x24\xc1\x1e\x2a\x8a\xb5\x7a\x6e\xbc\xa9\xd3\x5a\x89\x83\x3f\xb9\x77\xef\xe3\x94\x9b\x08\x85\x87\x93\x3b\xb2\x7c\x5b\x9e\xfe\xbb\x17\x73\x63\xd5\x58\xaf\x66\xd9\xbb\x13\x92\x57\x1d\x14\x9c\xf8\x24\x63\x25\xcb\xc2\xbb\x93\xeb\xed\x10\x2a\x08\x61\xf4\x82\x62\xaf\x2e\x21\xeb\x43\x07\xe7\x0d\x30\x30\xab\x50\xc8\x53\x92\xa0\x79\xef\x4f\x5d\x4c\x05\x47\x0f\x88\x2a\x45\xbd\xd5\x60\xe4\x90\xdd\xc9\xd8\x98\x26\xb3\x9d\xfa\x73\x96\xb9\xbf\x39\x64\x28\xf3\x1c\xe1\x17\xf1\x79\x55\x62\x27\xe4\x7f\x82\xfe\x80\x7b\x0d\x54\x83\xd0\x0f\xd6\x1f\xf9\xbe\x32\x61\x42\x45\x0a\x6e\x9e\xc6\x9e\x85\x3f\x7f\xfd\xe7\xbe\x1b\xad\x8f\x53\x99\xaf\xf1\x72\xb5\x5a\x4b\xdd\x09\x5f\x35\x72\x05\x3c\x98\xff\x82\xb7\xbb\x53\xd5\xb3\xb6\xc4\x56\x9f\xe2\xba\x00\x76\x40\x7f\x48\x38\xfd\xc3\xd3\xef\xd2\xce\x96\x0f\x12\x7a\xd0\x87\x21\x3e\x09\xb9\xea\xf8\xd2\x6d\x76\xeb\x3c\x54\xf5\x44\x66\x29\xec\x2b\xe7\x64\xf2\x8f\x22\xd4\x18\xc5\x87\x25\x74\xcb\x11\x29\x40\x9d\xd6\xeb\x4c\x5c\x57\x8e\x01\xa9\x0a\x0d\x62\xe3\x19\x18\x7f\x40\xc8\x25\x73\x2d\x95\xa3\x79\x80\x58\xf6\xa4\x04\x43\x0a\x78\x11\x9a\xf7\xa1\xcd\xf6\x89\x1c\x52\xcd\x4f\xef\x51\xd3\xae\xbd\xf5\x4e\x36\x87\xc1\xa8\xd1\x65\xe1\x50\x0f\x68\x86\xf2\x70\xa1\xc7\xd7\xdc\x41\x06\x29\x58\x20\x11\x2f\x65\x1e\x62\xb6\x96\x16\x1a\x41\xfa\x80\x97\x7d\x3f\x57\x23\xa1\xbe\x69\xec\x5c\xb1\x37\x76\x88\x09\x2f\xd0\x04\xa7\x26\xfc\x1c\x02\x1f\xf6\xeb\xb8\x5c\x15\x3a\xe4\xbc\x44\x1b\x58\xde\x80\x13\xfc\x87\xd3\xe3\xb0\x47\xec\x5d\xaf\x2f\x81\x20\xe4\x8b\x81\x6b\xd7\x65\xc6\x3c\x25\x43\x0c\x76\x59\xf1\xba\x27\xd8\x0d\xa6\xcf\x39\x3f\x71\x50\xc3\xa7\x3e\xad\x0c\x47\x0b\x0f\x77\x43\xee\x93\x2f\x5d\xe7\x25\xa6\xbc\x11\x3f\xe4\x2e\xbd\xe6\xdd\xc5\xae\xf7\xce\xdf\xf4\xd5\x4d\xbf\xdf\xef\xdb\xb9\x7a\xa1\xbe\xa4\xa7\xad\xdd\xef\xb9\x4c\xf9\x68\x36\x47\x09\xcb\xe6\xd5\x23\x80\x23\xa9\x98\xb9\xd9\x35\x68\xb5\xd3\xce\x8f\xd7\xa6\x02\xd5\x31\xe7\x11\xac\x77\xd3\x32\x8f\xba\xdc\x58\x32\xa4\xb3\x8a\x35\x19\xb2\x09\x9d\x72\x09\x85\xa9\xc0\x63\x90\x30\x78\x0b\x5d\xbd\xcf\xc7\x2d\xba\xc3\x3a\x42\x9b\x9c\x7d\x2c\x24\x22\x29\x42\x42\x2e\x34\x89\x98\x0f\xa6\x80\x9b\xdb\x6e\x0a\xc8\x2b\xa8\x31\xbd\x53\x1f\x10\x4d\xc4\x13\x81\x0c\xa9\x1d\x32\x4c\x67\x6f\x6e\x99\xf7\x07\xe4\xd4\x71\x06\x98\x7f\x42\xba\x56\x13\x44\x0a\xc2\x8a\x09\xcb\x99\xa2\x59\xfd\x41\xae\x30\xe9\x95\x95\x96\xca\x32\x19\x06\x2c\x72\x5a\xa0\xb0\x04\xd9\x97\x72\xe5\x7b\x4d\x39\x11\x67\xf9\x75\xe7\x1d\x74\x7c\x7e\xcb\x35\x68\x2a\xce\xf5\x81\x7a\xe5\xce\xb2\xf3\xc8\x7f\x17\xb2\xbc\x1e\x5e\x39\xd4\xc2\x21\xdc\xa6\x3f\xf9\x9a\x3a\x93\xaf\xbb\xb7\xab\x8b\x23\x53\xd3\x26\x3d\x76\x7d\xb2\xa3\x5d\x5f\xf2\x6d\x47\xf2\x55\x3a\x92\xaf\x9b\x45\x9b\xf2\x63\xb3\xa4\xbf\x16\x2d\xc8\x37\xb2\xf9\xf8\xba\x57\xef\x89\x0b\x98\xb6\xad\xc7\x1f\xde\x74\x7c\x95\x66\x81\x8f\xde\x75\xfc\x19\x71\x4d\xc3\x8a\x8d\x76\x05\x0f\x2d\x7a\x8e\xaf\xb5\xdb\x78\xcb\xc4\xdf\xe6\x1d\xc6\xd7\xda\x5b\xbc\xe5\x5b\x37\x6f\x17\xbb\xd6\x4e\xe2\x2d\xdf\xba\x79\xf7\xf0\xb5\xf6\x0d\x6f\xf1\xd6\x6d\x7b\x85\x3f\xa8\x4b\x38\x9b\x73\x9e\x04\x8f\xf2\xa7\x15\x83\x6d\x8a\xd6\x1a\x36\xeb\x6e\x29\x79\x3b\x69\xd0\xbd\x6d\xcd\xdd\x65\x6b\xee\xcd\x90\xaf\xdb\x46\xdc\xed\x1a\x71\xb7\x91\x9c\x91\xbb\x18\xfc\x33\x6d\x35\xe9\xc3\x80\x0c\x01\xce\xe7\x5a\xb7\xed\x0a\x3d\xca\x19\x55\xae\xab\xd9\x9c\xe2\xdb\x83\xd5\x71\x39\x9e\x0b\x87\x0b\xe6\x01\xe5\x54\xcd\xc8\x0f\xa7\xc7\xa8\xff\xd6\xd4\x70\x21\xfd\xa3\x03\xa7\xa4\x0e\x20\x88\x8a\x59\x7b\xb5\xb5\x59\x8d\x75\xe3\x0a\xeb\xb6\xd8\x75\xad\x6c\xac\x99\x4e\x4c\xd6\x96\x25\x2e\x71\x14\x88\x11\x11\x1a\xf8\x43\xd0\x9c\xe9\x82\x26\x56\xfa\xb9\x3b\x20\x50\x1b\xd5\x4f\x0c\xac\xe5\xe2\x82\xa0\xa5\xa8\xf0\x9d\xfd\xfd\x7b\xf3\x07\xb2\xdf\x92\xfb\xae\x98\xc8\x7b\x65\x32\x5a\x8a\x64\xf2\x44\x56\x7c\x09\xf1\x82\x8f\x9c\x92\x6b\xa6\x04\xcb\xaa\x9e\xa1\xbe\xc6\x84\x35\xa9\x7d\x6f\x59\x3a\xdf\xae\x70\xbe\x45\xd1\x7b\xf3\x16\x40\x6d\xcb\xe5\xdb\x14\x21\x2f\xe9\x8b\x32\xc2\xb3\xc9\x4e\x69\xe6\xda\x65\x35\x1c\xbc\x75\x65\x68\xab\xa6\x3e\x75\x14\x08\x84\xb0\xdd\x88\x77\x73\x8d\xfa\xbb\x73\x13\xf9\x96\xd4\xa1\x20\xcf\x47\xb0\x1f\xea\x2a\xf2\x0a\xcb\x22\x0c\xc6\xae\x5e\x70\xc3\xd4\x31\x83\x9f\x86\x9b\x77\x2d\xfe\x9d\x71\xae\xe9\x91\xb2\x13\x37\x9c\x66\x97\x45\xd3\xf6\xbc\xb5\x75\xff\xe1\xed\xe5\x61\x7d\x50\xab\x7d\xdf\x40\x52\xad\x25\xaa\xfd\x3e\x4a\x0d\xbf\x61\xc3\x89\x94\xd7\x64\x2f\x4a\xb9\x99\x94\xc3\x41\x22\xf3\x28\xbf\xab\xaf\xf9\x58\x1f\x38\xfe\xec\xdb\x79\xef\x13\x2e\x00\x8c\x6d\x11\xc4\xce\x3f\x24\x09\xb3\x80\x35\x74\xb9\x49\xee\x18\x5c\x9c\x26\x08\x19\x4c\x85\x58\x87\x7d\xb0\xb8\x18\xcd\xbb\xc5\xdf\xb3\x20\xbe\x9a\x36\xc6\x1c\xba\x95\x6a\x68\xce\xaf\x85\x24\x93\xaa\xed\x7f\x07\x74\xf8\x5b\x35\x5a\x8c\x1d\xc2\x47\x35\x58\xd3\xca\xce\x08\x81\xb2\x5d\x68\xaf\xe0\x7e\xba\x1b\x3b\x9d\xeb\xe5\x28\x34\x2b\x26\xa1\x70\x4c\xc4\xb1\xf3\x21\x8b\xab\xc4\xa2\x82\x8d\xf9\x42\x31\x27\x30\xa3\xa9\x1e\x55\xfe\x13\x9f\x45\x36\xca\xe8\x18\xe0\xd9\xe7\xaa\x2e\x40\x3a\x42\x0b\x62\x6b\x3b\x44\x37\xfb\xd2\x3a\x0f\x3d\x0c\xc8\x87\x1a\x13\xba\x7d\x20\xcd\xa5\xe7\x43\xfc\xff\xd0\xce\xdb\xf7\x52\xaf\xe5\x7a\x83\x95\x1f\x8a\x0b\xb5\xe5\x1d\x8c\xdc\x5b\x9b\x3d\x26\x30\x8a\xce\xbd\xaa\x27\x33\x64\xc7\xa0\xc0\x87\xdf\x53\x92\xf3\x8f\xf6\x29\xf1\xaf\xe2\xac\x72\xd7\x0b\x79\xf9\xd7\xfb\xd6\x96\xa9\x0c\x9f\x9e\x5d\xc5\xf8\xce\x08\x16\x58\xc0\x17\x67\x98\x16\x8e\x2f\x10\x87\x09\x1c\xc2\x6f\x1b\xfe\x6e\x8e\xcb\x11\xc2\x74\x1d\x6d\x75\x08\xd7\xb9\xe1\xec\x42\xfb\xf3\xb7\x4d\xf8\xce\xde\xd2\x45\x08\x6f\xf1\x90\xdd\xfc\xb3\x99\xb4\xc9\x1f\x54\x53\x9e\xb0\xc3\x24\x91\xa5\x68\x95\x3e\x78\xcc\xec\x2b\x50\xc3\xd2\xcb\xda\x98\xe8\x6f\x4e\xe1\x5b\xac\x98\xa6\x19\xa7\x58\x53\x5f\xbf\x13\x8b\xa9\xaa\x71\xc0\x5f\x3d\x37\x43\xc7\x32\xd8\x6e\xf7\xd3\x24\xa4\x2e\x3c\xbf\x5d\x92\xe5\xe2\xdb\x2c\x9e\x70\x73\x14\x74\xae\xea\x85\x74\xe7\xd5\x72\xcd\x0d\xd5\xd7\x15\xd2\x00\x83\x72\x93\xb0\x99\xa2\xcf\xdd\x8b\xf6\x29\x3e\xb5\x11\xfa\x40\x03\xea\x1a\x2b\xf7\xec\xcb\x1f\xea\xd7\xff\x75\x7c\xd6\x2e\xe5\x37\x80\xac\x63\x1d\xc3\xc4\x0d\x1d\x74\xed\xb8\x7c\x3c\x2e\x43\xb3\x4f\xee\x11\x45\x1d\x7e\xac\xeb\x1d\x92\x31\x8a\x3e\x0d\xb2\x17\x65\x64\xef\x0f\xac\x4c\xaf\x42\xbd\x28\xea\x5d\xab\x8f\x9c\x51\xa1\xa3\x52\x43\x06\x43\xfb\x74\xc6\x30\x1f\x3c\x08\xdd\x6a\x3b\xf3\x7f\xcf\xfb\x2c\xeb\x77\x60\xeb\x7f\x52\x1a\x6d\x3f\xc7\x87\x7b\x81\xb9\xc2\xe3\x15\x1b\x73\x6d\xd4\xcc\x37\x21\x19\x45\x93\x70\x5e\x99\x70\xcb\x35\x9b\x91\xbf\xfd\x78\xf2\xf7\x7f\xbc\x79\x77\x74\xf8\xe6\x1f\x6f\x0f\x8f\xfe\x76\x7a\x76\xf2\xe1\xc3\xe5\xdf\x2f\xaf\x4e\xde\x7e\xf8\x70\x54\x2a\xc5\x84\x71\x65\x97\x97\xcc\x7c\xf8\xe0\x38\x55\x7f\xf8\x70\x95\x14\xbc\xf8\xf0\xe1\xdc\x3b\x31\x10\x5e\xf8\xbf\x8e\xcf\x40\x7e\x62\xf5\x4f\x48\xb9\x81\xb3\x15\x89\x0e\xf3\x9e\x50\x5d\xa5\xd7\xd5\xea\x2a\x1a\x40\x52\x35\x3d\xee\xf4\x84\x2a\xe6\x8e\xe6\x33\xef\xc9\x6a\xb5\xd9\xed\x80\x55\x5f\x00\xef\x21\x0d\x5e\x32\x32\x64\xe6\x86\xb9\x72\xb5\xf9\x63\x2e\xce\xe2\xfd\x19\xdb\xe3\x60\xb2\xbe\x3d\x8a\x96\x60\x8f\xa3\x72\x26\xc9\x94\xb3\x1b\xc4\x46\xc0\x36\x2f\x15\x00\x3e\x94\xaf\x62\x09\xe3\x7c\xb8\xcb\x29\x49\x85\x4c\x03\xd8\xff\x9c\x5b\x77\xc1\xa5\x5b\x2b\x97\x40\xe4\x12\x96\x92\xf3\xd3\x63\xf2\x72\x80\x4a\xce\xe9\x31\x02\x29\x2d\x23\x2b\x49\x1c\xda\x8f\x3d\x50\xf1\xf4\x5d\x92\x2e\x5e\x31\x40\x13\x61\xd4\x80\x03\xca\x61\x2a\x73\xfa\xd0\xb6\x1e\xf7\x14\x1e\x60\xd3\xa5\xdf\x4a\x9a\xa1\x0e\x70\x2e\xd3\x45\xc9\xb4\xf3\x8d\xff\xe8\xdb\xc1\x37\x61\x1e\xdf\x0e\xbe\x81\x76\x4e\x9e\x6c\xdf\x0e\xf4\x34\x19\x7c\xe3\x0a\x61\x89\xbb\x69\x69\x76\xe8\x42\x55\x8b\xd3\x67\xf1\x37\xf0\x6c\x0a\xfa\xee\x27\xa9\x53\xe8\xb0\x2f\x56\xc7\xdd\xb0\x50\x0b\x84\x1a\xdb\x44\x31\xea\xda\xb5\xa7\x2c\x63\x26\xea\x6f\xbf\xf6\x76\x4c\xb7\xf7\xa7\xf2\xa1\xaa\x5a\xf7\xae\xd8\xb9\x14\xf4\xa5\x3f\x7c\x93\xaf\xd8\x60\xf8\xb2\x6a\xc0\xda\x60\x03\xb4\xac\xc8\x7f\x50\xd8\xc6\xc8\x8c\xe1\xfa\xb4\xd9\x29\x4b\x0b\xa2\x76\x75\x3c\x7a\x13\x42\xac\xa3\xea\xf8\xca\x43\x71\x59\x8e\xb8\x0a\xf3\x07\x4b\x03\x9b\xd7\x60\x6c\x12\xbf\x81\x32\xa5\x19\xb1\xa7\x96\x41\x4f\x46\x5c\x09\x68\x14\xb4\xd9\xf9\xe6\x9a\xcd\x7a\x08\xdc\x80\x4a\xc8\xb7\x11\xa6\x60\x28\x7d\x95\x85\x1d\x50\x2a\xf2\x8d\xff\xaf\x6f\x1f\x6a\xad\xb5\xf0\xa3\xb6\xf1\xa2\xe2\x4b\xb5\x0e\x5d\x9d\x60\xfd\x43\x1d\xc9\x01\x29\xeb\x4a\x23\x8c\x44\x72\x0d\xc8\x09\xd4\x37\xa2\x46\xea\x70\xd5\xb2\xac\x76\xb3\xf6\x3d\x92\x6a\x28\x00\xe0\x7f\x89\xea\x22\xce\xe4\xa5\x2b\xa9\x03\x64\x96\x11\x53\xd5\x27\x20\x60\xce\xe4\xc9\x47\x96\x94\x0f\x45\x4b\xc1\xab\x95\xef\xef\x9a\xb5\xef\x5a\xf1\x23\x0b\xa8\x35\x48\x1b\xab\x85\x87\xac\xf8\x6a\x77\x46\xa9\x59\x77\xd3\xf6\x9a\xcd\x74\x00\x03\xbb\xc6\xd1\x5d\xf5\x6a\xe0\x5f\x7f\x90\x9d\x7c\xe4\xda\xe8\xff\xe3\x5b\x66\xe4\xc3\xaa\x59\x09\xc5\x1c\xa9\x6a\x74\xbf\x24\x02\x7a\x69\xe0\x63\x3e\x35\xc1\xfd\x0b\xb4\xa6\xfa\x3b\x4f\x89\x08\xea\x8d\xda\x77\xda\xd5\x2e\xbb\x47\x0a\x28\x51\x8a\x31\xc3\xaa\xbc\x14\xfc\x31\xf2\x27\xd2\x10\xe8\x72\x62\x95\xbc\xfa\x31\xe3\x3e\x72\x37\x71\x40\x8f\xe0\x53\x9a\x31\xb4\xeb\x6f\x78\x96\x26\x54\x61\x88\xdc\x01\xc7\x68\x07\xe5\xe8\x10\x13\xec\x19\xe7\x24\x59\xb5\xca\xda\xc5\xe2\xa8\x32\x3c\x29\x33\xaa\x88\xdd\x8f\x63\xa9\x1e\x88\x2f\x83\x57\xbb\xd6\x2d\x81\x45\x5b\x74\x34\xac\xcb\xf7\xf9\x11\xe7\x01\xf9\x9c\xf6\x62\x4d\x26\xa8\xed\xa8\x6f\x94\xbd\x3a\x14\xa4\x1c\x79\xd9\x14\x04\x45\x0c\xe9\x66\x6a\xce\x71\x3e\x06\xff\xf7\x7e\x74\x78\x84\x9d\x39\x20\xdf\x87\x32\xdf\x1e\xa9\x7c\xc6\x50\x4c\xe8\x9e\xe9\xb6\x8d\x5b\xae\x6a\x53\x8f\xa4\x82\x3e\x3c\x7b\xa9\x84\xdf\xb0\x29\x4f\xcc\xfe\x80\xfc\xbf\x56\x53\x04\x27\xb2\x57\x27\xdd\x36\x0b\x05\x94\x15\xb0\xdc\x0b\xb2\x07\x3f\x8b\x55\xc9\x7d\x1f\x28\x72\x9d\x07\x9e\x58\x36\x4a\x8b\x10\xf5\x92\xf0\x74\x4d\x8c\xa2\xa6\x38\xc7\x1a\xe1\xe4\x97\x41\x42\x06\x99\xc8\xb5\xdb\xa5\x35\xcf\x6d\x88\xb3\x78\x11\x1a\x18\xe7\x5f\xe0\xa3\x27\x8a\x8d\x61\xff\xe1\xee\xf9\x84\xbb\xcf\xc8\x42\x66\x72\x3c\xbb\x2c\x14\xa3\xe9\x91\x14\xda\x28\x10\x0d\x6d\x70\xbc\x6e\x1b\x33\x6a\xfd\x30\x91\x37\x84\xba\x3a\x64\x39\x42\x50\x35\x59\x8e\x27\x08\x76\x0b\x3f\xf4\x6d\xd2\xfc\x14\x9d\xd1\xa9\x07\xe4\x32\x80\xd9\x02\x83\x07\x6c\x5c\x18\x05\x1c\x1e\x37\x74\xe6\x36\x13\x1d\x42\xb7\xdc\x2a\x21\xc8\x4f\x06\x43\x3f\xb7\xbe\x3f\x48\xe5\xc3\xb3\xe3\x87\x22\x08\xaf\x51\xa1\xbd\xe5\x55\xa2\xde\xf9\xd0\x42\x2d\xd0\x37\x68\xa4\x40\x37\x9a\x4b\xa7\xa9\x22\xe6\xa8\xa7\xcc\x27\xd4\x4d\xdb\x80\xec\xe4\xf4\xe3\xe5\x35\xbb\x69\xf0\x4b\xff\xa2\x3f\xb2\x87\xe7\x72\xf5\xc1\x1e\x7d\x2f\x34\x35\x5c\x8f\x00\x6a\xfc\x13\xea\xe3\x90\x72\xdf\x0c\x11\x19\xaf\x7a\xe5\x4a\x3c\x5a\xe8\x96\xec\x71\xf5\x6a\xcc\xe2\xf2\xef\x2a\x3b\x08\x0f\x40\x2c\x01\x08\x60\xca\x76\x07\x25\xae\xc1\x80\x91\x55\x1c\x1a\x23\x15\xa1\xd7\xb0\xdf\xb5\x66\xc2\xb8\x9a\x83\x50\x9d\xdb\xfb\xcd\x05\x63\xe3\x54\xb6\xb6\x79\x61\x40\x9e\x93\x8f\x56\xf3\xd0\xcd\x32\x8d\xf0\xaa\xf7\x07\x99\x1b\x14\xc3\x63\x3e\x81\x72\x6e\x19\x6a\x38\xdd\x60\xf6\xc6\x9f\x34\x95\x73\xd5\xd5\xae\xc3\x10\x69\xd7\x65\x88\x2c\xc9\x33\xbe\xf5\xf5\xe7\xc0\xbe\xe3\x6a\x35\xe7\x14\xd2\x3d\x54\xe0\xd1\x81\x4d\x45\x75\xb0\xbb\xc6\xaf\x59\xd0\xe6\xac\x51\x64\x6f\xc2\xdf\xb5\x85\xf2\x6f\xd1\xa5\x88\x74\xd0\xa9\x88\x80\x2c\xbb\x6e\x20\x01\xe3\xdf\x7b\x62\x35\x1e\xa4\x7d\xcf\x22\xd2\xdc\xa0\xae\xae\x1a\x43\x5d\x57\xa6\x35\x72\x56\xcd\xb4\xae\x84\x5d\x65\x58\xb7\x7a\x76\x07\x8d\x3c\x48\x4b\x1b\xb7\xba\x6a\x84\x90\x0f\xb0\x76\x29\x04\x98\xe4\xc8\xef\x8e\xa5\x36\xef\xa9\xe8\x91\x33\x69\xec\x3f\x91\xf9\x7b\x2c\x99\x3e\x93\x06\x3e\xd9\x08\x52\xe2\x2b\x74\x48\x48\x67\x9c\x21\xae\x17\xc8\x4d\x17\xa2\xb5\x27\x9e\x27\xd8\x12\xc3\xe2\x54\x10\xa9\x3c\xc5\x82\x75\xa1\xdd\x10\x71\x58\xc1\x81\x23\xdd\x6a\x9c\xd8\x71\x62\x3a\xdf\x31\x9c\x1b\x0a\xb2\xbf\xf0\x1b\x00\xc9\x2c\x32\x48\xd0\x4f\x4b\x85\x58\xa5\x56\xd7\x34\x6c\xcc\x13\x92\x33\x35\x86\xc6\x87\x4d\xf2\xea\xe3\xab\xfd\xb9\x82\x57\xcb\xd3\x25\x9e\x4c\x0b\x5e\x82\x23\x1b\x54\xac\x0e\x55\x00\x1c\x0f\x8f\xb5\x9c\x82\x25\xf5\x3f\xc1\x07\xfd\xbf\xa4\xa0\x5c\x01\xb6\xa9\x8b\x1d\xc7\xdf\xb9\xe8\x4b\x3c\x8c\x1d\x61\xc1\xb7\x44\x05\x61\x58\x08\x64\x47\x9f\x57\x3c\x7a\xe4\x66\x22\x35\x1e\x86\xc1\xfd\xb1\x73\xcd\x66\x3b\xbd\x05\xd6\xdb\x39\x15\x3b\x55\x60\xb8\xc6\x6c\xe1\x10\x86\x0c\xc2\x1d\xf8\x6e\xe7\xf1\x74\x95\x56\x87\x6d\x17\x20\xf3\xf3\x13\x6a\xc8\x57\xce\xe6\x69\xdf\xcb\xfd\x2d\x0e\x14\xd9\xe7\x18\x13\x1c\x2b\x16\xf5\x71\x07\x45\x3d\xc7\x38\x67\x29\xd8\x94\xd9\xc5\x4a\xb9\x76\x40\x6e\x3e\xc5\xe0\x9f\x0b\x26\xd1\xff\xff\x58\x9e\x49\xe3\xad\xf6\x7f\x7a\xb7\x17\xf2\xdf\x47\x9e\x97\x39\x22\x26\x19\x6b\x29\xa4\x7c\xe4\x01\x5f\x7d\x66\x43\xdd\x5e\xa8\x9b\xad\x8e\x8f\x0d\x55\x63\xc8\x70\x74\xf6\x82\x67\xb3\x71\x26\x87\x34\x23\x39\x17\xf6\x31\x03\xf2\x5a\x2a\xc2\x3e\xd2\xbc\xc8\x18\x96\x93\x91\x2f\xfb\xff\x96\x82\x11\x17\x0d\xef\x11\x4f\x0b\x97\x24\x61\x24\x79\x89\x5c\x5b\x01\xbf\x87\x54\x87\x9a\x01\x16\xdc\x16\x9a\xbc\x3c\x78\x79\xf0\xe2\x15\xf9\x9d\xd8\xa1\x5f\xba\x7f\xbf\x70\xff\x7e\x49\x7e\x27\xbf\x13\x42\xce\x09\xa9\xfd\x4b\xe0\xdf\x3e\xe1\xa3\x78\x0e\x2f\xed\x34\x13\x99\xbb\x17\x06\x4f\x6e\xa8\xfa\x0c\xfd\x63\x8c\x74\x43\x43\xd1\x4f\x22\x73\x06\x73\x78\xf9\x7f\xfc\x3d\x10\x70\x35\xd8\xe2\x07\x26\xb5\x07\x53\xda\x27\x37\xe0\x9a\xca\xe9\x35\x9a\x65\x87\x89\x29\x69\x66\x1f\xbe\xf7\x45\xff\xc5\x3e\x91\xa2\x7e\xfb\x94\x4b\x68\x8d\xee\x66\xb8\xf7\x72\x7f\xb0\x30\xe5\x2f\x96\x4c\x79\xae\xdb\x8d\xab\xb9\xb3\x83\xde\xce\x35\x9e\x61\x0e\xc5\xec\x86\xce\x02\xdb\x78\xb3\x74\xcc\xa7\x01\x1b\x3d\xc2\xa1\x80\x98\x1d\x70\x01\xf7\xc8\x40\x38\xe8\x8c\x70\x33\x20\xa7\x66\x77\xd7\xf7\x56\xb2\x1a\xb3\x07\x71\x3f\x8e\xe1\x02\x81\xf0\xb0\xe8\x2f\xe6\x72\x7a\x5b\x34\xd6\xef\xc4\x39\xfa\x20\x14\x76\xf7\xf4\xca\xbf\xd1\x81\x53\x3d\x8c\xe5\x77\xb0\x15\xfd\x72\x84\x75\xb2\xd8\xe9\x68\x00\x6d\xac\x1c\xed\x5d\xc2\x08\xaa\xce\x6e\xf7\x70\x1d\xac\x27\x0e\xf9\xf7\x09\xcd\xe2\x60\x5d\x22\x01\xa0\x4d\x31\xdf\x28\x29\x4e\x2f\x0a\x7e\x29\xf2\x73\x75\x27\xa6\x15\x41\xfc\x15\x07\xfa\x16\xd3\xd9\x77\x86\x65\x72\xcd\x8c\x3f\x77\x14\x64\x44\x14\xa5\x21\x43\x9a\x51\x61\x35\x98\x05\x3f\x84\x91\x38\x18\xfe\x12\x18\x66\x09\xbf\x7c\xea\xf8\xc8\xc2\xee\x68\x2f\xf4\x7f\x9e\x1f\x32\x8a\xc8\x3a\x47\x61\xca\x68\xe6\x53\x29\x00\x1f\x3d\x00\x56\x89\xdd\xdd\x6a\x5f\xc1\xda\xa0\xf0\xab\x1c\xac\x56\x2e\xd4\xe4\x3e\xd9\xf3\xb9\x8f\xc4\xb0\x2c\x43\xee\xa9\xfa\x92\xd9\x4d\x16\x37\x3a\xe3\x30\x42\x5d\x06\x2c\xfd\x61\xbd\x3b\x1a\x06\xf5\xad\x64\x17\xb3\x50\x2d\xdf\x23\x04\x5a\x03\x8e\xf9\xd4\x0a\xa5\x95\x84\x06\x0a\xc6\x09\xcb\x0a\xa2\x58\x5a\x26\x38\x38\x21\xfa\x9a\xdd\x58\x9d\xaa\x7a\x53\xd7\x52\xc8\xb3\xec\x4e\x8d\xa8\x3b\x88\x11\x2d\xea\x22\x91\x8f\x80\x21\x7d\xc7\x4d\x36\x65\x6a\x46\x0a\xa9\x35\xb7\xeb\x00\x7b\x09\xb2\xe1\x40\xef\x0a\xc8\x3a\x90\x89\x05\xd3\xf2\x62\x78\xc7\x89\xdd\x1d\x2b\xa8\xb5\xac\x6d\x8f\x4f\x73\xd4\x7d\x69\x8f\x99\xbb\x8f\xba\x73\xf8\xdf\xe2\x91\x77\x3a\x22\x4b\x78\x30\xcc\xa5\xc6\x3c\x0f\x39\x05\xbf\x80\xc3\xea\xcb\xfd\xe8\x30\xfc\xf2\xe0\x8b\x83\x97\x7b\x76\xae\x5f\xec\xdb\x59\xd7\x8e\xb9\x97\xe1\x98\x0b\xbf\x74\x33\x62\xba\x76\xd0\x59\x03\x0c\x1b\xe8\x4a\x95\xba\x08\x8f\xcf\xa2\xb3\x33\xd2\xc6\xc5\xdb\x78\xee\xe5\x4b\x0f\xf8\xae\x62\xd6\x1b\x09\x3b\x07\xce\x5b\x6e\xc8\x67\xb9\x54\xec\xb3\xe8\xfe\x5b\x0f\xa8\xe6\xe7\x4e\xdb\x7e\x6a\x19\xd7\x06\x9a\xaa\x5d\xb3\xd9\x83\x35\xdd\x36\xee\xf5\xb6\xce\xf5\xc5\xb7\x40\x82\xe4\xb4\x78\xc0\x38\xae\x6f\x7b\x9b\x14\xde\x37\xce\x31\x1b\x5a\xc0\x83\xe3\x11\xb5\x22\xd7\xd7\x14\x6b\xa5\x42\x3e\xed\x90\x65\x12\x71\x4e\x5d\xea\xc0\x03\x52\xf5\x03\x2c\xbc\x36\x52\xd1\x31\x3b\x70\x8f\x7d\x2a\xed\x20\x5c\x17\xf8\x9a\x97\x09\xcb\x19\x1d\x48\xaa\x4f\x69\xf6\xf1\x07\x90\x02\x34\x81\x6c\x40\x20\x64\x0d\xce\x21\xca\x33\x7c\x22\xa1\xac\x06\xd5\xef\x6d\x1c\xa7\xf4\x46\x9f\x64\x54\x1b\x9e\x7c\x9f\xc9\xe4\xfa\xd2\x48\xd5\x81\x76\x71\xf8\xf3\xe5\xc2\xa8\xb5\x35\x15\xe4\xf0\xe7\x4b\x72\xcc\xf5\x75\x85\xae\x8f\xa8\x9a\xf5\x04\x3c\x1a\x80\x71\x5c\x2d\x06\xc9\xa9\xb5\xff\x98\xb7\xf1\x44\xc0\xf5\xed\x6e\xaf\xfc\x89\xde\x68\x86\xd3\x1f\xda\xe9\xdb\xaf\x59\x73\x11\xbc\x36\x20\x05\x7c\x9d\xd3\xe3\x35\x04\xbe\x46\xba\x69\xdb\x11\xb2\xc0\x4c\xaf\x79\xc6\x5c\x07\x30\x80\x04\xaa\x63\x3c\x03\xd7\xcc\x64\x49\x6e\x28\xfa\xac\x40\xa6\x0e\xc8\x15\x2f\x5e\x91\x93\x08\xaf\x15\x0b\x12\xea\x43\x59\x7d\x23\xe0\x87\xb8\x2c\x01\xe0\x32\x74\x5d\x59\x11\xec\xb2\x62\xc8\x09\x2a\x53\xfa\x15\xd9\x61\x1f\xcd\x57\x3b\x3d\xb2\xf3\x71\xa4\xed\x3f\xc2\x8c\x00\x5d\xd9\xf5\x68\xb0\x4a\x9d\x18\x31\x55\x19\x30\xf8\x83\xc5\xd2\xc1\xee\x99\x94\x5c\xbd\x3b\x7e\xf7\x0a\x14\xf8\x54\x92\x1b\xe6\xbb\x98\xf9\x42\x58\x27\x0d\x23\x32\x40\x45\x47\x22\xf3\x42\xc9\x9c\x47\xe9\xaa\xb0\xc9\x9a\xf0\x3c\xe9\xc2\x5f\x0a\x49\x69\xb0\xfc\x9d\x70\x10\x64\xfb\xfa\x21\xe7\x80\xe1\x6f\xe3\x9f\xd3\x11\x91\xe8\x94\xaa\xe7\xc8\x73\x1d\x6e\xb2\x1c\xe3\x46\xc1\x76\x5c\x15\x8f\x58\xf5\xdb\x7d\x75\x90\xb2\xe9\x81\x4e\xe9\xcb\x1e\x3c\x06\x19\xc0\x81\xdf\x87\x39\x51\x4d\x76\x5e\xee\x0c\xc8\xa5\xef\x6b\xde\x8b\xe7\x58\xdd\x67\xad\x01\x3f\x20\xb8\x55\x5f\xec\x90\x3d\x4c\x52\x07\x9d\x22\x63\xbe\x64\x39\x60\x6c\x80\x0f\x7f\xbf\x91\x0a\x49\x3a\x70\x5f\x90\xd6\x2e\x0c\xe2\x5a\x86\xbd\x13\x59\xe3\xd0\xde\x5c\x55\x95\x5b\x83\x1d\x03\xdd\xb7\x8c\x84\x0a\x02\xe6\xfa\xc1\xa2\xa8\xb8\x70\x4f\xac\x08\xc9\x85\xd3\x4e\xde\xda\xc5\xc7\x2e\xf0\x30\xc0\x9d\xcc\xb2\x03\xd5\x47\x3b\x1b\x73\x26\x91\x0e\xaa\xb9\x49\x38\x5a\xba\x59\x8f\xf7\x82\xff\x56\x32\x72\x7a\x1c\x7a\x36\x32\xa5\xb9\x36\x56\x72\xa5\x35\x1d\x81\xa3\xe2\xb0\x77\x98\xd3\x7f\x4b\x41\x4e\xbe\xbf\x74\x53\xd9\xdf\x40\x02\x37\x14\x80\xf4\xdf\xa5\x62\x56\x35\x6a\xad\x87\x1d\xfa\x91\xe6\x75\x2f\xfb\x39\x39\xa6\x86\xa2\x0a\x86\xd2\x4c\x56\x15\xa6\xb0\x13\x86\x90\xf9\xe3\xcb\x87\x1b\x6a\xd1\x64\xfd\x6a\x90\xe5\xa0\xb3\xe6\x98\x52\xf6\xe7\xef\x2f\x4e\xd7\xa0\x44\x25\x70\x0a\x8f\xdf\xca\xb4\x23\x4d\x0a\xe0\x3d\x8e\x70\x54\x92\xdb\x61\xc9\x99\x14\xac\x07\xc2\x8e\x58\x69\xe7\xfe\xf3\x67\xc5\xcd\x43\x2b\x26\xab\xab\xf5\xf1\xef\x57\xac\x93\xb7\xb6\x87\xff\x59\x54\x19\x0f\x30\x0e\x20\x55\x9c\x22\x30\xcc\xe4\x90\x38\x69\xb0\xce\x37\x7e\x7f\x71\xda\xd9\x0b\xbf\xbf\x38\xdd\xdc\x97\xed\xd0\x38\x98\xb7\x0d\x2a\xfd\xad\xc2\x5e\x9d\x57\xfa\x57\xd7\xf8\x07\x5d\xe9\xfa\xeb\xa2\xf4\x35\x17\x8d\xb3\xc2\xea\xa2\xe3\xc4\xd7\x47\xba\x48\x0d\x94\x64\xa7\xaf\x48\x5e\x66\x06\xca\xdf\x80\xb1\x2c\xa7\x69\x7b\x7a\x7b\x16\x23\x0e\x0a\x82\x90\x63\x86\xe1\x85\xf4\x95\x4f\x48\x08\xbf\x58\xfe\x83\xb7\x54\xd0\xb1\xbd\x1d\xce\x43\x92\xe3\x9f\x11\x47\xef\xa1\x03\x5d\x84\xaf\xe8\x94\xf2\x8c\x0e\x79\xc6\x0d\xb4\xff\xdf\x1f\x78\x45\x4c\x63\x2d\xac\x9d\xf2\xda\x84\x5a\xa7\x2a\x6c\x5c\x1f\x04\x0a\x26\xd9\xb3\xe3\x1f\xdc\x58\xc1\xbd\x3f\xa8\xb4\x57\x40\x23\x83\x44\x79\x54\x71\x6b\xaa\xad\x47\x79\x98\xd3\x6c\xdb\xb1\x6b\x53\xb5\x12\x96\xf9\x75\x43\x08\xe8\x45\xb5\xc7\x8e\xb4\x54\xed\x81\x2f\x1c\xe8\xc4\x33\xd7\x7c\xb0\x83\x54\x0b\xdd\x07\xb6\x4c\xc3\xdf\xb7\xd5\x7e\xb6\xfb\xe5\xfe\xab\x5a\xe0\x4e\xa8\x14\x83\x08\xe1\xd0\x73\x69\xd2\xb8\x83\x2e\x9d\xa8\xf6\xe0\x42\xa0\x5d\xd9\x7d\xd3\xa4\x88\x02\xaf\xd6\xd2\x35\x70\x6a\x27\x84\x40\xd8\x95\xc6\x1b\xa7\xe5\xfb\x24\xac\x98\x8c\xda\xd7\x40\x1e\xb1\x62\xf2\xfa\xb2\x1e\x4a\xb1\x9f\x91\xd7\x97\x4b\xe4\x1e\xe6\xca\xd8\xf7\xd6\x18\x60\xd9\xd5\x24\xe3\x23\x66\x78\x23\x22\xac\x59\xf2\xe5\x52\x70\x23\x95\x5e\x47\xcd\x87\x7b\x74\x37\x7a\xd7\x85\x27\x04\x79\xeb\xc6\xc5\x84\xcf\x44\x66\x19\x4b\x8c\xeb\x79\x08\xcb\xea\x1f\xbc\xcc\x11\xe2\x52\x01\xb4\xef\xf1\xeb\x9c\x1e\x07\xc8\x6a\x07\x17\x27\x87\xc7\x6f\x4f\x06\x79\xfa\xa7\x89\xbc\xe9\x1b\xd9\x2f\x35\xeb\x73\xd3\x4e\x57\x5a\x63\x51\x48\x07\x0e\x68\x33\xe9\x66\x01\x2b\x44\xa2\xf7\xba\xc2\x0c\xf3\x81\x5f\x25\xa5\x59\x44\x0d\x1b\x95\x59\x86\x6b\x6a\x14\x63\xbd\xd8\x9d\xf8\x40\x4c\xb5\xea\xda\x2c\xfd\x75\x77\x79\x5f\xdf\xee\x8f\xe6\x4d\xd9\x0c\xed\x4f\xf9\xa6\xaa\x31\xb9\x83\xf6\x97\x61\x64\x9f\xd0\x67\x19\xdf\xae\xc4\x35\x9b\x11\xc8\xee\x1f\x49\x05\x48\x9b\x75\x2e\x64\x26\x01\x72\x1d\x40\x4b\x45\xa7\x2b\x6c\x08\xa9\xdb\x68\x11\xf0\x22\x17\x6c\xf4\x38\x84\xbe\x60\x23\x2c\xa0\xf0\x39\xce\xce\xba\xa0\xa5\x99\x60\x26\x24\x22\x1f\x21\x39\x97\x52\xde\x55\x64\x6c\x08\xa9\x5b\xe5\xd2\x77\x51\xef\xd5\x06\x78\x9f\x2c\xac\x57\xec\x26\x74\x8b\x64\x1e\x1c\x57\x90\x53\x6b\x5b\xb2\x9b\x83\x1b\xa9\xae\xb9\x18\xf7\x6f\xb8\x99\xf4\x91\x52\xfa\x00\x70\xd8\x0e\xfe\x04\xff\xb8\x68\xed\x61\x9a\xba\xcc\xb2\x52\xb3\x51\x99\x61\xce\x97\x1e\x10\x5a\xf0\x9f\x98\xd2\x90\xc2\x78\xcd\x45\xda\x23\x25\x4f\xbf\x6b\xba\x62\xa4\x8b\x0d\xd2\xbc\x8b\xd8\x9d\xe7\xa2\xf2\xe2\x47\xd1\x54\x6a\x44\xe1\xb5\x24\xaa\xb1\x3e\x4d\x73\x2e\x36\x85\xf3\x9b\xaa\xf6\x5c\xa4\xcd\x28\x58\xa7\xde\x11\x8c\x53\xd7\xed\x71\x6c\x1f\x33\x0e\x59\x34\xd4\xfb\x32\xb0\x4b\x95\xcb\xa7\xa9\x67\xd3\xac\x24\x50\xf2\x99\xfe\x2d\xeb\xe3\x53\xfa\x45\x5a\xd1\x75\x9b\x1a\xf3\x90\xeb\x31\x53\x63\xba\x75\x7f\x7f\x82\x84\x97\x47\xe5\x31\xb2\x55\x7b\xd7\x40\xeb\xf6\x9a\xee\x23\xe8\x5f\x80\x03\xaf\x7d\x71\x32\xa8\x57\x28\x7b\xbc\x6f\x0b\x3b\xf3\x05\xe0\x61\x5f\x66\x94\x48\x21\x1c\x26\xdd\xbb\x82\x89\x4b\x43\x93\xeb\x96\x71\xd1\xad\xce\xf4\x07\xd3\x99\xba\xcd\x95\xf1\x69\xd0\x69\xe0\x51\xac\xa2\x72\x29\x65\x55\x96\x34\x6e\xec\x27\x28\x75\x11\x61\xfd\x2d\x2d\xda\x7b\x40\xfd\x48\x73\x8a\x52\xf8\xd8\x39\x3d\xa1\xaa\xa6\x90\x45\x99\x21\xe4\x1a\xd7\x8e\x8e\x9f\x5e\xb1\x69\xbb\xc1\x9d\xbe\xdc\x5d\xce\x48\x25\x43\x73\x99\x32\x32\xe4\xa6\x92\x8e\x9a\x19\xac\xdd\x75\x40\x34\x52\x90\xc4\x81\xcd\x81\xd6\x61\x35\x0c\x37\xa1\x48\x23\x11\x44\x26\xc6\xd7\xfc\x85\x32\xdf\x17\x2f\x5e\xbc\xc0\xa2\xcb\xbf\xfe\xf5\xaf\x44\x2a\xe8\xf8\x90\xf0\x7c\xf1\x46\xb8\xeb\xcf\x2f\x5f\x0e\xc8\xdf\x0f\xdf\xbe\x81\xdc\xff\xc2\x68\xc4\x01\xc7\x91\xed\x0d\xb5\x1f\xeb\x1e\xf9\xbf\x97\xef\xce\xbc\xda\xa8\xe7\xbe\x05\x53\x3b\xbc\x5e\x1d\x7d\xf1\xc5\x5f\xbe\xfa\x6a\x40\x8e\xb9\x82\xda\x27\xce\x42\x6b\xae\xe0\x2d\xa1\x8a\x61\x91\x28\x40\x04\x7a\xbd\x8a\x07\x10\x7d\x87\x9f\x80\xbd\x07\xb1\x9e\xd1\x72\x60\xc6\x13\x83\x65\x56\x28\xc8\x42\x57\x61\x00\x6e\x74\x50\xa8\x2e\x59\x17\x26\xd7\x23\x19\xbf\x66\x64\xa4\xa1\x25\x67\x55\x4c\xef\xda\xdd\xb8\x92\x12\x1c\xac\x5a\x2b\xcd\xcc\x13\xcf\xfd\x6c\xe5\x0b\x9e\x07\x30\xae\x35\x5c\x83\x52\xcf\x6b\x36\xeb\x23\x87\x15\x94\x87\x82\x11\x48\x8e\xab\xf5\x58\x08\x5e\x9b\x34\x92\x2b\x1e\x63\xb1\x50\xf2\x5f\xb8\xf8\x50\x43\x1a\x49\x62\xa8\x44\xc5\x16\xb5\x00\x96\x20\xa2\x86\x1d\xbe\x0e\xd6\x35\xf5\xf2\x1f\x3b\xa4\xd0\x45\xb8\xe5\x8c\x6b\xfb\x88\x6b\x36\xd3\x77\x3d\xb9\xea\x15\x63\xf9\x53\x23\xa7\x94\x62\xe1\xd7\x0e\x79\xdf\x49\x46\xd7\x64\xc1\x21\xde\x54\x63\x60\xf9\xbf\x2b\x84\x76\xf7\x7a\x2a\x05\x42\xd4\xd2\x95\x35\x33\xa5\x23\x0d\xe4\x9d\xdb\x67\x43\x03\x00\x78\xc3\x9c\xaa\x6b\xe6\x3b\xf3\xd2\x6c\x40\xce\xed\x24\x03\xe4\x48\x68\x8c\x0c\x76\x2b\x9d\xc1\x63\x9d\x92\x06\x0f\xd9\x1d\x0c\x76\x71\xe3\x49\x45\xb4\xa1\xca\xed\x22\xfb\xf9\xf3\x40\xb1\x7a\x4b\x0b\x8d\xa8\x2a\x56\x2b\x05\xc4\x21\x09\x48\xad\x66\x52\xf5\x05\x44\x5a\x6f\x91\xa7\x48\x1f\x08\xd3\x78\x80\x4d\x44\x9d\xba\x72\xb2\xc1\x48\xbf\xbd\x37\x02\x0b\x29\x6f\xa1\x54\xe0\xd5\x4a\xb5\x70\x30\xbb\x19\x7b\x52\xba\xc4\xf2\xb6\x1a\x4e\x52\x46\xda\xda\x5c\x33\xcf\xa7\xaa\x32\xe0\xd5\x85\xe2\x80\x57\x7b\xf5\x01\xaf\x36\x01\x5d\xbc\x16\x76\x68\x38\xa9\xf0\x30\x1a\x55\xa4\x07\xd0\xf3\x22\x1c\xf1\x46\x62\x87\x10\xdf\xe9\x46\x10\x3a\xd4\x32\x2b\x0d\xfe\xb4\xfa\x32\x3e\xe6\x60\x50\x0f\xbe\x04\x67\x5b\xb8\x2d\x3a\xf4\xe0\xb8\xc7\x73\xa2\xcd\xf9\x87\x57\x6b\x31\xd1\x59\x1b\xe4\xe7\xed\x55\x68\x4d\x67\xaf\x3b\x75\x93\xeb\xe4\x8a\xa1\x6e\x26\xcc\x65\x21\x44\x7a\x9d\x15\x9e\x56\x24\x80\xd2\xe8\x55\x34\x6c\x3b\x9e\xae\xc5\x4b\x98\x68\xde\xde\x2d\x70\x79\x4a\xf6\x42\xbb\xd1\x90\xce\x76\x2a\x0c\x53\x23\x9a\xb0\xfd\xd8\x5d\xc0\x8a\x09\xcb\x99\xa2\x59\xc8\x50\xf6\x75\xca\x13\x2a\xd2\xcc\x15\xef\x33\x05\x1b\x97\x7d\x34\x4c\x09\x9a\xc1\x23\x52\xc5\xa7\x4c\x69\xb2\xf7\x3d\xb3\xb6\x04\xb6\x29\xdd\x7f\x82\x69\xa4\xf8\x22\xeb\x70\x66\xc0\x83\xbb\x49\x00\x85\xa1\x96\x75\x4a\xac\x96\xca\x63\x16\xd9\x65\xd5\xb1\x1b\x68\x60\x37\x04\x9c\x98\x20\x74\xa1\x23\x10\x46\x23\x7d\x03\x3c\x00\x2e\x4e\x0c\x0e\x4c\xb5\x6b\x88\x07\x88\x30\x4e\x9e\x3b\xa8\x90\xb5\x95\x02\x7c\x92\xa2\x8b\xbb\x4a\x26\x46\xce\x80\x94\x53\x9e\x7a\x35\x08\xb2\x19\x2a\xd4\xad\x82\xea\xa8\x92\x9f\x6a\x2d\x5d\xbf\xcf\x68\x8d\xd0\x1c\x05\x65\xa9\x8e\x29\xed\x23\xc5\x71\xbc\x4b\x02\x32\x6b\xa3\x86\x16\xa4\x93\x03\x51\xa6\xec\xbc\x1c\x66\x5c\x4f\x2e\x3b\x0d\x6d\x9c\x2d\x19\x18\x13\x03\x17\x92\x4b\x6e\x0d\x77\x68\x26\x34\x77\xfd\xc7\x50\xcd\xe2\x56\xcb\x96\xb0\x0c\xfe\xd7\xf1\xee\x90\x50\x28\x0e\x5d\xcd\xfc\x57\xd1\x3c\x1c\x72\x07\xb6\xd3\x49\xd9\x7b\x51\xd4\x3e\x4f\x68\x96\xe9\xf9\x46\xd2\xfe\x20\x43\xcd\xd4\xa3\x79\x20\x57\x70\xcb\x30\x7e\xf6\x90\x35\x83\x52\x2c\x20\x9b\x2e\x7d\x31\x4d\x72\x89\x15\xff\x82\x48\xe1\x6f\x82\xae\x40\xfe\x07\x81\x42\x88\x37\x86\x4c\xb7\x46\x4c\xc9\x6d\x4c\xe7\xe9\xc5\x74\x3a\x8d\x0a\x5f\x86\x16\x0d\x14\x06\xee\x43\x61\x93\x6f\x34\x4b\x43\xe1\x7f\x65\x38\x0e\xee\x0b\x1f\xaf\x2d\x82\x8b\xf3\x3b\x34\x0e\x16\xb4\x1b\xbf\xed\x4f\x73\x83\x82\x2a\x66\x2d\x6f\x10\x4c\x7d\x67\x5b\x27\xd1\x4e\x72\x26\x71\xd8\xde\x8b\xe2\xac\x3a\xd3\xe1\x38\xc7\x0f\x77\x35\x49\x65\x52\x5a\x9b\xab\x22\x7b\x95\x30\xd1\x0e\xed\xfd\x79\xc1\xcf\xa6\xf2\x46\xdc\x50\x95\x1e\x9e\x37\xaa\x5a\xad\x2b\x67\xd5\x58\xb1\xea\xed\x1f\x41\xec\xe7\x74\xe8\x1b\xfe\x07\xf0\xa7\x6d\xe0\x6e\x7e\x88\xfb\xbc\x6b\xae\x0d\xf8\x6a\x71\x3a\xb2\x0d\xfd\x6d\x43\x7f\xcf\x26\xf4\x67\x47\xaa\x77\x4a\xa9\x89\x17\xe7\x90\xb5\x14\x7f\x16\x31\xa4\x48\xa4\xe2\xe9\x39\x5f\x0f\x3b\xa7\xf3\xe3\xe6\xad\xb8\x2e\xb2\x13\xbc\xcc\x05\x75\xec\x39\xc4\x9b\x36\x20\x5e\x04\xb4\x6c\x61\x0c\xe2\x75\x5b\xa9\x18\x22\xb5\x62\xe0\x39\x8a\x60\x17\x32\x7d\x85\xc0\xa9\xd0\x39\x1d\x7b\x76\xf4\x1c\x6e\x73\xcf\xf9\x2e\x44\xd4\x2b\x1c\x5b\x33\x7b\xf5\xa7\x93\x98\x40\x4b\x06\x20\x1d\x31\x01\x01\x46\x00\xea\x9c\xb7\xe1\x06\xd2\x19\x47\xd8\xab\x32\x74\xda\x8e\x34\xaf\x40\xe3\xa8\x9e\x11\x74\x32\x61\x39\xf6\x0f\x7f\xed\x49\x60\x65\xa3\x35\x1e\x0c\x43\x84\x34\xa6\x72\x4d\xe4\xa8\x57\x83\x50\xd8\x99\xbe\xdc\x69\x17\x63\x20\xdd\x85\x23\x89\xdf\x47\xe7\xad\x63\x3b\x64\x9e\x60\xe7\xb5\x90\x8e\xdd\x43\xa0\xf3\x64\xd8\xba\x78\x2e\xcb\x02\xce\x0f\xa4\xf0\xc6\x10\x67\x53\x62\xb5\xbd\x10\x35\x78\x02\xca\xdf\x36\x56\xfb\x1c\x63\xb5\xd1\xc1\xe8\x05\x9d\x23\x6c\x1c\xbf\x8d\x43\x02\x3e\x88\x3b\x64\xde\xa8\x71\x36\x8c\x8f\xe0\xfa\xf0\xad\x54\xf5\xd4\xa4\xdd\xc1\x60\x77\xd7\x07\x75\x1d\xdf\x97\x66\xd4\xff\x9a\x30\x91\xc8\x14\x99\xc5\x8e\xaf\xb4\x01\x75\xaf\xf2\xb2\xc5\x73\xc9\xfd\xb3\xe2\xf4\x26\x18\xbb\x8b\xa5\x6e\x2d\x5b\x3c\x1a\xdf\xeb\x47\x50\x62\x2a\xd5\x25\x60\xfe\x39\x12\x05\x4c\x67\xa7\xc3\xf8\xef\x35\xc9\x78\xce\x5d\xff\x30\xbb\xd1\x99\x36\x9a\xec\xe1\x87\x83\xa4\x28\x7b\xee\x86\x41\xce\x72\xa9\x66\xbd\x70\x93\xfd\xb2\xf6\x2b\x77\xc7\x3e\xf6\xa1\x28\x95\x62\xc2\x64\xb3\xe7\xac\x01\x79\x22\x6e\x88\x02\x14\xd6\xb8\x0d\x92\x47\x75\xcd\xd5\xcc\x85\x88\x2f\x78\xcb\x23\x8c\xfd\x00\xd6\xaa\x7b\x21\x24\x01\x9f\x32\x31\x25\x53\xaa\x1e\x88\x9e\xbe\xec\xea\x50\xe7\x49\xf9\x94\xeb\xb6\xcd\xfd\xc8\xed\x4e\x68\x68\xdd\x55\x9a\xa2\x34\x4e\xa2\xfb\x1d\xe8\x91\xb6\xc3\xce\x9b\x53\x0e\x5f\xee\xb4\x9e\x52\x41\x8d\x61\x4a\xbc\x22\xff\xbd\xf7\xe1\xf3\xdf\xfb\xfb\xdf\xed\xed\xfd\xf2\xa2\xff\x9f\xbf\x7e\xbe\xf7\x61\x00\xff\xf1\xd9\xfe\x77\xfb\xbf\xfb\x3f\x3e\xdf\xdf\xdf\xdb\xfb\xe5\xc7\xb7\x3f\x5c\x9d\x9f\xfc\xca\xf7\x7f\xff\x45\x94\xf9\x35\xfe\xf5\xfb\xde\x2f\xec\xe4\xd7\x15\x07\xd9\xdf\xff\xee\x3f\x5a\x4f\x9d\x8a\xd9\xbb\x96\xa2\x10\xaf\x7e\x87\x47\x72\x7d\xc4\x4e\xd8\x6f\xae\xb5\x02\x17\xa6\x2f\x55\x1f\x87\x7e\x45\x8c\x2a\xdb\x09\x93\xea\x78\xe9\x7a\xff\x57\x6a\x40\x05\x39\xef\x95\xfa\x35\x6f\x70\x88\x78\x1e\xf3\x0e\x0a\x83\x4f\xdc\x48\xf5\x8a\x17\xc3\xf2\x42\x2a\xaa\x66\x24\x75\xde\xcc\xd9\x12\xc0\x9f\x08\xf1\xa7\x35\x9a\x2e\xbc\x51\xca\xd5\x1a\x6a\x83\x5b\x03\xf8\xb0\x94\x97\x79\x37\x4e\xf8\x9f\x01\x79\xde\xa1\xd6\xfb\x04\x22\x7c\x80\x0f\x5f\x0c\x69\x72\x8d\xf6\x52\x58\x1b\xd4\x12\x63\x10\xe9\x1d\x97\xf7\x90\x33\x2a\x82\x1b\x1f\x32\x59\x64\xca\xec\xc2\xf9\x9b\x71\xec\x9a\xcb\x1d\xc3\xe9\x2e\x4b\xb0\x6a\xc3\x24\x15\x79\x0b\xea\xce\x5a\xd7\x9a\x74\x02\xdb\xc1\xff\xcd\xde\x58\x1d\xaf\x23\xb8\x78\x09\xc6\xa4\xc3\xc8\x1a\x41\x23\xa9\x2a\xfd\xab\xa6\x36\xc0\xba\x85\x3d\xe7\x83\xb3\x76\xf5\xec\x9c\x50\xf1\x04\xaf\x73\xa6\x31\x17\x85\x27\xd0\xe8\x08\x0c\x4f\xa0\x7e\x58\xb1\xab\xa8\x21\x62\xa9\xed\x93\xa4\xa8\xdf\x53\x3d\x08\xfb\x40\x0d\x91\x05\x5c\x7b\xc3\x39\x73\xd9\x7e\x73\xe9\xe9\x12\x39\x2b\xa0\x9c\xd8\xdb\x96\xba\x04\x0b\xc4\x3d\xc5\xe9\xd1\x72\x04\xd9\x12\x51\x43\x1a\xdf\x73\x65\x81\x2f\x05\xcf\xea\x8c\xe9\x1b\x2d\x84\x17\x2f\x85\xcb\x16\x5c\xe0\xb2\xe5\x4c\x56\x6a\xa6\xfa\xe3\x92\xa7\xdd\xb1\xd7\x93\xd3\x29\x5a\x6a\x12\x5d\xe9\x0f\x9d\x68\x0d\x9d\xeb\x0a\x21\x1f\xb3\xf5\x59\xb9\x73\x12\x52\x3b\x6b\x87\x65\xdc\x18\xa2\x9e\xe6\x49\x43\xc3\x2f\x2f\x0c\x7c\x2e\xc1\x55\xf0\x13\xb9\x43\x34\x99\x25\x0e\x54\x89\xd7\x7a\xd3\xe0\xb0\xb8\x27\xa0\x22\xaa\x6f\xff\xcf\xfb\x93\x7c\x08\x75\xc8\x46\x98\xc5\x84\xbf\x01\x37\x80\xab\xe3\x4a\x59\xc6\x0c\x94\x65\x31\x51\x75\xbc\xd3\x44\xb1\x5c\x4e\xed\x36\xfb\x20\xc8\x7b\xed\x82\xe1\x7c\xf4\x8a\xd0\xfd\x5a\x61\xb0\x6b\xb3\x2b\x18\x4b\xb1\xb8\x2b\x6a\x9c\xa7\x4a\xa1\x7b\x64\xb8\xef\x93\x55\x35\xf6\x76\x54\xe0\x31\x73\xed\xab\xc0\x49\xa5\x98\x25\x00\xc0\x43\x29\x99\x13\x2d\x68\xa1\x27\xd2\x80\x3f\x84\x16\x34\xe1\x66\x66\xc9\x6d\x14\x4d\xae\xa1\x45\xb4\x62\xee\x89\x3d\x92\xec\xbb\xac\xf5\x98\x82\xf5\x92\x33\x33\x51\xb2\x1c\x4f\xa0\x06\x0a\xef\x4a\x32\xaa\x3d\x01\x96\xfe\xde\xd9\xe8\x9a\xa4\x33\x41\x73\x9e\x84\xd6\x19\x4a\x4e\xb9\xe6\xd2\x45\xb2\x70\x5c\xbb\xc7\xc8\x79\xe8\x31\x80\x01\xb2\xa3\x8c\xf2\x9c\xec\x69\xc6\x48\x60\x0c\xfc\xe6\x12\x95\x45\x74\x16\x2a\x66\x7f\x1e\x47\xcf\x1c\x8a\xa2\x83\x0a\xb0\x9f\x54\x32\x38\x24\x24\xa0\x12\x00\x9b\x3b\x5d\xfe\xe8\xfd\xb0\x74\xcb\x67\x26\x15\x24\xb4\xf9\xee\x37\x4c\xa4\x32\x4a\x7d\x39\x3c\x3f\xd5\xb1\x21\xeb\x7a\x06\xe2\x48\xf0\x45\x26\xc5\x38\x06\x99\xab\xb8\xd4\x0a\x7c\x01\xfd\x1f\xa7\x3c\x2d\x69\x86\xa2\xde\x4d\xe6\xe8\xf2\x14\x7f\xce\xc7\x13\xd3\xbf\x61\xe0\xe6\xc4\x13\xb1\x4a\x8d\xf6\x0f\xe5\x0b\x29\xb5\x5c\xc3\xd1\x60\x9c\x3b\x0d\x5d\xc6\xd0\x61\x91\xce\x00\xa1\xd6\x25\x6f\xd6\xb2\x6e\x3c\x52\x3b\x0e\x11\xe8\x1e\x11\x1d\xa6\x77\x18\xba\x01\x5a\x6d\x08\xfc\xc0\x96\xca\xc0\xb5\x8b\x73\x83\xd6\x86\x55\x5f\x89\xf0\xb1\x89\xba\x8b\x82\xe6\xfb\x41\xa0\x47\x17\x82\xc5\xc3\x28\x77\xbb\xea\xda\xe8\x90\xa6\xa1\xa8\xd3\x6d\xc3\x1f\x98\x60\x8a\x27\x73\xac\x13\x7e\x3a\xa6\x06\x36\x1f\x13\xf6\x67\xe9\xa0\x89\xa9\xbc\x66\xbd\x78\x5a\x31\xe3\x15\xcb\x8b\x8c\x9a\x6e\x32\x55\x76\x7e\x8e\xbc\xe9\x51\x2c\xda\xee\x7e\x2a\xd2\x3e\xcd\x2c\xdf\x9f\xff\x74\xe4\xea\xe1\x70\x3f\xd7\xb2\xe1\xae\xaa\xce\x9f\xa8\x8e\xa0\x5e\xb6\x74\x1b\x03\x88\xda\x90\xa5\x20\xfe\xdc\x93\xc1\xe5\x71\x23\xb0\x15\xac\xfd\xe3\xfc\xa7\xa3\x1e\xe1\x03\x36\xf0\x7f\x85\x5b\xbd\xfc\x35\x72\x8c\xf5\x12\xa1\x0e\x07\x76\x0d\x4c\x25\xf6\x25\xc7\xbf\xfd\xe7\x37\x76\x92\xf6\xdb\x6f\xfb\xdf\x44\x9d\x83\xbe\xfd\xa7\xe5\x23\x65\x6f\xa8\x7f\x1a\xa7\xab\x83\xa4\xb5\x7f\xfd\xf3\x5c\xa6\x97\x05\x4b\x06\xf8\x5a\xfa\x9f\xae\x8f\x3a\x13\xc6\x2a\xf3\xe7\x12\x12\xd5\x78\x8a\x7b\x09\x9e\xad\xd8\xbf\x7c\xbc\xc1\x35\x20\x75\x12\x2b\xa1\x86\x09\x38\x72\x7c\x5d\xb2\x90\x06\x7f\x8e\xad\x4b\x61\xfe\x7b\xa3\xb8\x9b\xa8\x91\x12\x84\x09\x0a\xac\x43\x41\xd8\x47\xae\x01\x85\x06\xdf\x15\xc8\x41\x5d\x2e\xbc\x3f\x45\xed\xb0\x96\xc2\x01\x75\x08\xda\x99\xda\xb9\x7d\x26\xa4\xf9\x2c\x2c\xbf\xcf\x73\x84\xa3\x52\x12\x3a\x95\x80\x74\x01\x87\x88\x20\xa5\x00\x47\x79\xd5\x0d\x70\x38\x23\x39\xd7\x86\x5e\xb3\x01\xb9\xb4\xa7\x64\x9c\xb0\x80\xd4\x13\x04\xfa\xb9\xb0\x94\x94\xc2\xf0\x0c\xbe\xad\xc6\xb1\x53\x8e\x4f\xcf\xd3\x11\xd1\x65\x02\x2d\x6f\x15\xeb\xfb\xf3\xd8\xdd\xb5\x20\xc9\xaa\x77\xe9\x85\xc5\x9e\x50\x34\xd0\x8a\x14\x7e\x8a\x0d\x74\x85\x63\xaf\x85\xec\x6c\x3b\x4f\x29\x92\xea\x0c\x06\x62\x42\x17\x65\x7b\xec\x66\x3e\x9f\x08\x6d\x45\x17\x7f\x10\x2c\x61\x5a\x53\x35\xc3\x06\xa3\x3c\xf4\x41\x74\x89\xb3\x20\x94\x72\x2a\x4a\x18\x40\x31\xec\x56\x5b\x26\x40\x1d\x4a\x86\x4a\x5e\x33\x11\x2a\x12\x82\xc0\x0b\x69\xd9\x55\x12\x2a\xa4\x03\x48\x92\x4c\xa8\x18\xb3\xaa\xe8\x3c\xa7\x29\xd0\xfe\xc7\xa0\xdb\xf9\xf7\xb1\x14\xa0\x23\xab\x22\x71\x03\xa4\x18\xda\x83\x30\x44\x51\x3e\x08\xe2\xdd\x30\xbd\x2a\xcc\x61\x5f\x89\x67\x8d\x64\x22\xe9\xc6\xaf\xde\xde\xa3\xde\x07\xfd\x65\x8d\x29\xe0\x39\x33\x34\xa5\x86\x76\x96\x06\xfe\x96\x86\x46\x9a\x2e\x47\x04\xd8\x21\xca\x1d\x71\x27\xb9\x57\x5e\x65\xc1\x63\x18\x02\x90\x06\x13\xbf\xfa\xd8\x83\xde\xf2\xb5\x8b\x61\x62\x76\x37\xa8\x86\xae\xbd\x3a\x0c\xef\x47\x43\x91\xc5\x52\x92\x96\xa0\x68\x56\x22\xad\x4d\x8c\xbd\x93\x10\x8c\x5d\xe8\xce\xa8\x7c\x55\xa5\x12\x24\xf5\x54\xef\xa5\x6a\x20\x9e\x75\x4c\x18\x8e\xad\xd2\x3d\x6e\x84\x23\x7e\x29\x70\xab\xce\x2d\x03\xac\xd3\x98\x19\x5d\x25\x69\xe2\x69\x62\x45\xa4\x3b\xcb\x9d\xdb\x02\x8e\x1a\xb7\x34\xce\xf2\x5f\xae\x8f\xe2\xc2\x69\xe9\x4e\x0b\x7b\x7e\xad\x7d\x65\xba\x8b\x45\x61\x47\xd9\xb7\x32\x6d\x1f\xd4\x9a\x6b\x8d\x5a\x0d\x5c\xd5\xac\x60\xfd\x92\x06\xb7\x12\x3e\x19\x42\xfc\xba\x86\xaa\x81\x47\xc0\x84\x4e\x9b\x7b\x67\x2b\xfd\xb7\x1f\xda\x9e\xc1\xe3\xfa\xf0\xb8\xfe\xcb\xb6\x7e\xf0\xf6\x49\x90\xfe\x6a\x99\x0c\x59\x9f\x50\x07\x81\x0f\x2b\x5a\x2f\x3b\x89\x4b\xcc\xf7\xa6\x0c\x27\xaf\x4b\xf1\x08\x69\x35\xae\x30\x97\x71\x2b\x2f\x5f\x91\xcf\x6a\xba\x96\xd3\x69\x83\xe5\x8d\x55\x50\x7b\xde\x14\x1f\xb8\x25\xf7\x10\x5f\xf5\xdb\xf7\xe7\x06\x03\x25\x6f\xb9\x55\xea\xab\xad\x82\xe2\x6d\x95\x64\xe8\x69\x1f\x8a\x5d\x2d\x1b\x2b\x99\x65\xbe\x11\x3a\x9a\xe2\x73\x49\x52\xd0\xb7\x07\xc3\x2e\xbd\xe0\xf2\x08\x9a\xbe\x60\x37\x41\xa5\xa3\x1a\x91\x4a\x7d\xd0\x1f\xdc\x32\x3e\x73\x6d\xd9\x78\xa1\x22\xec\x50\xcc\x70\xea\xc7\x61\xb1\x6e\x33\xc0\x7a\x3e\x45\xc9\x12\x1e\xe6\x42\xb3\x1b\x3a\xd3\xb0\xbf\x2a\x8b\x30\x3c\xdf\xe1\xb6\x57\x03\x5f\xb0\x51\x8b\xe6\xec\xf1\xd5\x59\x5a\x40\x77\x89\x01\x80\xca\xc2\x45\xf3\x6c\xdf\x6a\x98\x06\xfd\xac\xe7\xaf\xee\xf2\x0b\x20\xc5\x12\xf2\xab\xba\x08\xd4\xd6\x9b\x0e\x9d\x9f\xc2\xc0\xde\x66\x1b\xc3\x1f\xfe\x2c\x0f\x11\xc7\x21\xb3\xfb\xad\xc2\x92\x02\xde\x8d\x7f\xbb\x24\x01\xad\x62\xfa\x1f\xa1\x31\x91\x0b\xed\xf8\xc2\x62\x7b\x14\x1c\x9e\x9f\xe2\x13\x07\xd0\x7a\x96\x8a\x99\xd3\xb2\xcc\x84\xab\xb4\x5f\x50\x65\x66\xe8\x1c\xe9\xd5\x9e\x16\x8a\x2a\x3b\x20\x47\xa7\x31\xe6\x36\x9d\xcb\xe2\xab\xb6\x46\x40\x3e\xb7\x3e\x3e\x28\x77\xeb\xca\x6c\x1a\x45\xda\x96\x78\xfa\xab\x5e\x47\x1c\xa1\x91\x79\xaf\xc5\x93\xa0\x48\x1a\x0b\xe2\x6e\x4f\xe4\xb9\x4c\x18\x3c\x58\x41\x5f\x76\xbe\x25\x19\x97\x9c\x05\xfd\x0c\x0c\x7d\x3b\xad\x1e\xe1\x23\x7b\xa4\x49\xd1\x77\xf5\xed\xc1\xf5\xee\x74\x3c\x9f\x32\x8a\x46\xbb\xdd\xac\xe8\x50\x8d\x9f\x15\x0f\x10\x76\x37\xd9\x13\x52\xe0\x8e\xc7\x7b\xf7\x31\x63\xf6\x16\x8f\x31\xdc\x32\x20\x3f\x4f\x98\x88\x8f\xbb\xd8\xd7\xde\x0b\xc7\x2e\x17\xa9\x5d\x6e\x38\x0b\xc1\xf6\xd7\x65\x92\x30\x16\xbc\x45\x71\xef\xf5\x4a\x22\xb9\x29\xe7\xd4\x24\x13\xa6\x89\x96\x00\x3e\xaa\x0d\xcd\xb2\xca\x4b\xe3\xc8\x25\x41\x73\xf0\x0e\xfa\x48\xa1\xa8\x95\x85\x3b\x87\x55\x91\x51\xe7\x15\x19\x95\x22\xc1\x9c\x2c\x6e\x66\x7e\x06\xf1\x09\x0f\x3f\x03\xd3\x54\xa3\xf3\x86\x8f\xd0\x1b\x1c\x99\x98\x81\x98\x20\x52\x67\x28\x44\xeb\x67\xbd\x83\xdd\xb3\xf2\x73\x48\x93\xeb\x1b\xaa\x52\x0d\x15\xef\xd4\x70\x6c\x2a\xd8\xab\x0d\xbb\x17\xcd\xc1\x3e\xbd\xa6\x1b\xec\x07\x43\x16\x1a\x4a\xcb\xb9\xc7\x10\x5a\x1a\x99\x53\xc3\x13\x70\xd1\xf0\x51\xe4\xdb\xcf\x43\x9f\x87\x10\xa7\x45\x59\x0e\xa7\x83\x7b\x0d\xb0\xd6\x14\x56\x68\x98\x1b\x49\x78\x6e\x75\x2e\x0a\x0d\x93\x47\xa1\xbe\xdd\x07\x22\xee\x9a\xa9\x55\x2c\x7f\x86\x30\x50\x74\x17\x3a\x7f\xac\x59\xae\x61\xf8\x10\x67\x08\x0e\x76\x57\xc8\xdd\x9b\x53\x89\x88\xff\x95\xe5\x6a\x3b\xdb\x88\x59\x7b\x76\x81\x6e\x98\xd5\xb5\xf4\x9d\x2c\xab\x07\xcb\xe6\xc4\xc7\x02\xab\x7e\xb9\xf6\x0e\x03\x97\xc6\xbd\x97\x2a\x59\x14\xce\xf5\x97\xef\x2f\xce\x09\xa2\x7b\x6a\xca\x34\x44\xb6\x7d\x6a\xb8\x25\xc5\x98\x09\xa6\xa8\x81\xf8\x80\x43\x2b\x84\xdd\x3b\xff\x10\xc8\x1a\x26\x11\x98\xf9\xde\x61\x56\x4c\xe8\x3e\x79\xef\x9a\xe6\x07\xfe\x0d\xb9\xe6\x2b\x69\xa4\xe8\x4c\xf4\x51\x81\xad\x2a\x79\xd7\x30\x5b\x55\x72\xab\x4a\x36\xb8\xb6\xaa\xe4\xfc\xb5\x55\x25\xe3\x2b\xa4\x33\x77\xab\x46\x5e\x84\xfa\x84\x28\xbb\x24\xce\xd7\xaa\x0a\x18\x1e\xdf\xcb\x17\x9e\xb5\x41\x27\x4c\x97\xb2\x18\x53\xd7\x3a\xe7\xe9\xdd\x37\x98\x12\x87\x1f\x0e\xdd\x52\xf9\x2c\xbd\x2a\x43\xd0\x6a\x89\xa5\x61\xd1\x92\x3a\xe5\xe1\xc1\x6b\x58\x43\x7d\x39\xc0\xce\xd6\xfd\x30\x6c\xbf\x4a\xca\x6b\xdc\x08\x30\xbe\x3a\x5c\x4d\xd2\x39\x3c\x49\x7c\x3d\xb9\x1c\xbe\xfa\xd5\x59\x6d\x00\x79\x94\xfa\x00\xd2\x7d\x8d\x00\x79\xfc\x3a\x01\x12\xea\xb6\xba\xdf\xf7\x17\xbe\x8e\x6c\x6e\xe7\x3b\xd1\x7d\xd7\xce\xaf\xe1\x94\x85\x71\xb8\x26\x32\xe7\xc6\x30\x9f\x57\x11\x76\x32\x78\xc3\xe3\x3a\x1a\x27\x73\xc0\xec\xc6\xe4\x09\xf6\x31\x74\x5a\x8a\xf4\x39\xd0\xca\x6e\xb8\x06\x23\x82\x0a\x6b\x02\x22\x5c\x2c\xc8\x8e\xbe\xcb\xbb\xf5\x66\xed\x56\x0e\xb5\x1f\x77\x2b\x87\xe2\x6b\x2b\x87\x08\xb4\xac\xca\xa0\x68\xa3\x53\xe5\xf1\x10\x13\x2e\xc8\x6f\x25\x53\x33\x22\xa7\x2c\xca\xeb\x84\xa6\x54\x9a\xa7\x2e\x33\xd2\xf9\xed\xda\x5a\x5d\x1b\xaa\xd7\x81\x5f\xf1\xe4\xa3\xd5\x9f\x01\x5b\xa0\x73\x49\x3f\xff\x80\x3a\x44\x10\xae\x82\x5f\x62\x2f\xda\xad\x8c\xd5\x03\x87\x01\x5e\x7d\x02\xbe\xb8\xc3\xb3\xe3\x2e\x4d\xe0\x2e\x22\xe9\xa4\xbb\x68\x3a\xb9\x8d\x51\x97\x91\x08\x49\x19\xbe\x81\xc3\x2c\x64\x3c\x04\x1f\x1c\xb9\x66\xb3\x9e\x4b\x2c\x72\x5d\x08\xfd\xcd\x98\xa3\x57\x6f\x95\xd2\x0e\x82\xaf\x7e\x75\x7c\xea\x74\xe9\x33\xc3\xab\x6d\x6b\x8c\xfa\x58\x9e\xb8\xdd\x1c\x84\x1d\x1f\xac\x1d\xb4\xd0\x88\xaf\x1a\x93\xba\x96\x36\x90\xf4\x0e\xdc\x0a\xa0\xfc\xbe\x54\x29\x30\x28\x94\x67\x81\x84\xed\x86\xbd\x48\xd7\x6e\x1b\xbc\xfc\x32\x3e\x12\xb1\xc2\x16\xac\xd5\xc4\x5c\xb3\xd9\xae\x76\x28\x15\x52\xe8\x09\x2f\x7c\x2f\x45\x90\x93\x6e\x57\x92\x9f\x20\x15\xcc\x0f\x81\x12\xf1\x54\xf4\xc8\x99\x34\xf6\x9f\x13\xc8\x6d\xc5\x10\x84\x64\xfa\x4c\x1a\xf8\x64\xa3\xc9\x8d\xaf\xf6\x48\xc4\x76\xf1\x0b\x0e\xd1\x07\xcc\xe2\x86\x3a\x51\x9f\xf1\x08\x44\x75\xc9\x2d\x61\x61\xb8\x26\xa7\x82\x48\xe5\xa9\x6a\x7c\xcb\x28\xed\x86\xf0\x5e\xdd\x28\x58\xb4\x64\x0c\xb7\x18\x52\xd5\xd6\xe2\x8e\xe1\x42\xdc\x89\xfb\x6f\xc0\xeb\x0b\x81\xba\x90\xa6\x09\x6d\x8b\xa8\x61\x63\x9e\x90\x9c\xa9\x31\x20\x9a\x24\x93\xae\x97\xb8\xab\x73\x11\xaf\x0e\x4f\x47\xbc\x3a\xe5\x43\x50\x51\xde\x40\x02\xee\xe3\xa8\x3f\x38\x36\x1e\xd7\x39\x2d\x2c\x0b\xfe\x8f\x3d\x95\x81\x0b\xfe\x17\xda\xa2\xe9\x01\x39\x24\x9a\x8b\x71\xc6\x6a\xdf\xb9\xc0\x41\x3c\x8c\x1d\xc1\xda\xac\xbf\x95\x7c\x4a\x33\x86\x09\xf3\x54\x84\x5e\x26\x72\xb4\xa0\x74\xf5\x5c\x6f\x34\x2b\x97\x43\x88\x7a\xe7\x9a\xcd\x76\x7a\x0b\x6c\xbb\x73\x2a\x76\x2a\x70\xa4\x1a\xa3\x06\xe5\x02\xa2\x97\x3b\xf0\xdd\xce\xa7\xd1\xd3\x9e\x80\xe9\xda\x19\x4f\x3a\x37\xf3\x51\x46\xb5\xee\x02\xa7\xe5\x76\xec\xf1\xcb\xe8\x49\x55\xdd\xb5\x2b\xba\x48\x30\x1d\xba\x3b\x1f\x39\xd4\x18\x76\x95\x02\xdb\x01\x9d\xa7\xae\xa1\x73\x5b\x20\xb7\xf9\x33\x27\x0c\x1b\xca\x50\x6f\x62\x94\x82\x2a\x5b\xe5\x16\x8a\xff\x04\xf1\x70\x39\x8a\xfb\x40\x70\x0d\xee\x27\xee\x0b\x53\x85\x34\x84\x8b\x24\x2b\x53\xec\x80\x01\x3f\x05\xe7\x55\x37\x86\x6a\x67\xe4\xed\x9c\x81\x7f\x0a\xc3\x7a\x9d\xd3\x67\xd6\x2c\xd4\xfe\xcc\xa7\x40\x40\xda\x49\xc8\x26\x40\x6a\xaf\x93\x5a\xa3\x46\x55\x0e\xf5\x56\x21\x47\x75\x3d\xf2\x35\x1f\x2a\x46\x8e\x26\x54\x08\x96\x45\x38\x2c\xce\xd1\x49\x8d\xa1\xc9\x04\xd3\x9f\x29\xb1\xfb\x38\x63\x66\x57\x63\x8b\xfa\x9c\x26\x13\x2e\x02\x78\x81\x08\x78\x44\x55\x29\xd5\x1a\x9a\xeb\xb4\x35\x84\x3a\xec\xcb\xb2\x7b\x7b\x63\x96\x0a\xd4\x7b\x34\x77\x4f\x85\x6e\xef\x76\x39\xd0\x1a\x4f\x5c\xe8\x12\x02\xf7\xde\xdd\xda\x25\x0f\xee\x69\x2e\x46\x4c\x29\x5c\x93\x21\x73\x3f\x20\xbc\xd6\x77\x75\xe0\xfa\x3d\x4c\xe4\x0d\x49\x25\xb9\x81\x0e\xa4\x53\xab\x1a\x40\xfe\x8d\xf6\x4a\x45\x34\x53\xc8\x88\x4b\x64\x5e\x28\x99\x73\xed\x6b\xfc\x1c\x43\xac\x0d\x76\x24\x2b\x1b\xe3\xb4\xde\x06\xae\xf9\xfa\x88\x18\xaa\xc6\xcc\xd8\xc1\x89\x28\xf3\x21\x6b\x09\xab\xb2\x6e\x08\xef\x4e\x3b\x65\x44\x94\xba\xa7\x01\x06\xb9\x70\xcf\x45\xc0\x13\x48\xc6\x1b\x49\xe5\x52\x0a\xc3\x97\x0e\xa7\xdd\xb2\xdc\x4f\xee\x5c\x2c\x85\xd1\x2d\x61\xd3\xdb\x34\xd0\xc0\xe5\xff\xf9\xe7\xb3\x6e\x70\xcf\x97\xf2\xd6\x8d\x54\x59\x7a\xc3\x53\x4c\xd4\xd0\x64\xcf\x3e\x6e\xbf\xdd\x3b\xaf\x11\xf8\xbc\xf5\x46\xbe\xb9\xe1\xe9\x63\x90\xdb\x67\x06\x5b\x72\x13\xa0\xb7\xeb\xd5\xcf\xa1\x2f\x1c\x3c\x76\x9f\x9c\x70\xac\x23\xb7\x7f\x21\xa2\x68\x3e\xe4\xa2\x42\x42\x08\x0c\x01\x27\x9f\x95\x0b\xde\x22\xd7\xcc\x60\x05\x30\x14\xd1\x4a\x33\x21\x9a\xe7\x65\x66\xa8\x60\xb2\xd4\xd9\xac\x25\x1b\x3f\xd5\x25\x1d\x65\xec\x23\xee\xe6\xf6\xfa\x4b\x18\xaa\xae\xc7\x8c\x11\xed\xc1\xaf\xf0\x82\x22\x53\x25\x37\xa7\x07\x41\xa9\x09\x65\xec\xec\x23\x4b\x5c\x9d\x53\x91\x95\x63\xde\xa8\xa4\x75\xdb\x14\xb0\xd1\xaf\x57\x6b\x0a\x58\xb5\x3c\x2b\x35\xab\x90\xbe\xda\x35\xdd\x7e\x1a\x3d\xfc\x1e\x55\x55\xbc\x5a\xde\xa8\x2f\x65\x05\x13\x29\x20\x87\x47\x3b\x0e\xa7\xbb\x36\x6a\x3b\xc4\xee\xae\xcf\x85\x93\x8f\x46\x51\x2b\xe4\x73\x80\x93\x71\xb0\xe0\x7c\x44\xa8\x68\x2b\xb0\x9f\x4b\x6f\x29\xb2\xd5\x1b\x1f\x7c\xe9\x4e\xfb\x4b\x46\x04\xab\xf5\x97\xec\xb8\xbb\x24\x9e\x7e\x6e\xa3\xeb\x7a\x59\xd4\x92\x2e\x90\xee\x29\x71\xfd\x52\xdb\x6e\x90\x7a\x49\x93\xb8\xb9\x59\xad\x71\x4f\x6e\x5b\x43\x3e\xad\xd6\x90\x23\x40\x1a\x6a\x0f\xe3\xfb\x1a\xc7\x99\xf3\x9d\xb9\x0f\x9d\xce\xb9\x8a\xaf\xcc\xed\xa8\xe8\x78\x85\x9e\x2f\x6e\x20\x57\xb7\x4f\xb4\x5d\x8d\x2a\x49\xbf\x14\xa2\x99\xd0\x5e\x77\x07\x3d\x6a\xa8\x66\xa6\x8d\x47\x77\xb1\xa0\xc1\xeb\x83\x38\x36\x36\x9e\x84\x42\x43\x0f\xb7\x43\xfa\xdf\x3a\xcd\x51\xd4\xee\xb4\x3a\xa3\x27\xb4\x47\xfa\x65\x21\x75\x0b\xc7\x48\xed\xf2\x26\xd4\xb4\xec\xa5\xde\xe2\x94\x75\xb3\x7d\xff\xfe\xf4\xb8\x13\x9a\xd9\x81\xe6\x68\x36\x08\x68\x7a\xa5\xe0\xbf\x95\xb1\x0d\x0c\xc8\x83\x81\x4a\xee\xfe\x75\x90\x62\x9c\xb0\xca\x19\x7f\xcc\xf5\x75\x7b\x20\xee\x1f\x8e\x4e\xea\x43\xd6\x37\xf3\x0f\x47\x27\xc4\x7d\xba\x92\x0f\xfc\x21\x4e\xf0\xb6\x78\xce\xe3\x84\x55\xe1\xb1\x94\xeb\xeb\x35\x80\x78\xb7\x35\x4f\x8b\xf4\xac\x59\xb5\xe0\x26\xfb\xf3\x3d\xf6\x67\x04\x50\x3b\x93\x25\xb9\x71\xa8\x74\xce\x80\xbb\xe2\xc5\x2b\x72\x22\x74\xa9\x58\x95\xe5\x34\x6f\xcb\x59\x1d\x6a\x65\x73\x0e\x80\xff\xf4\xab\xce\xfc\xff\x5d\xf3\xe7\x73\x09\x28\x14\x54\x19\xb0\xc1\x3a\xc2\x31\x87\x36\xa5\x6e\x48\x4f\x84\x7b\x98\xe7\x74\xe4\xeb\x14\x7a\x0e\x95\x2a\x80\x7d\xfb\x9b\x2c\xbb\x44\x30\x95\x31\x83\xbc\x0e\x00\xb4\xe4\x20\x65\xd3\x03\x9d\xd2\x97\x3d\x78\x8c\x07\x33\x32\xb5\x39\x51\x4d\x76\x5e\xee\x0c\xc8\x25\xcf\x79\x46\x55\x36\xab\x75\xdc\xaa\xee\xb3\x87\xa9\x1f\x10\x92\x40\x5e\xec\x90\x3d\xa9\x60\xe4\x84\x0a\x92\x31\x5f\xc9\xef\xb6\xef\x0c\xcd\x87\xfd\xcd\x90\x85\x64\x63\xa2\x31\x28\x16\xbb\x61\xaf\xf7\x78\x9c\xd7\xc0\x4e\x8f\xab\xf3\x8c\x0b\x7b\xc8\x0d\xc8\x7b\x77\x3a\xb9\x63\x1f\x59\x00\x76\xad\xbf\x63\xb3\x96\x68\x63\x7c\x16\xed\x3c\x11\x8b\x8e\x8e\x4d\x23\x74\x53\x6f\xc7\x98\x9b\x0b\x56\xc8\x0e\x54\x34\x1c\x68\xce\xb3\xcf\x8d\xfd\x40\x6a\x0e\x5d\x52\xa8\x21\x14\x05\x51\x52\x66\xd4\x5a\x64\xe8\xd7\x1f\x90\xe3\x93\xf3\x8b\x93\xa3\xc3\xab\x93\xe3\x57\xc4\x8f\xc4\x63\x9d\x7e\x40\xae\x62\xbc\xe2\xa8\xe4\xcb\x81\xc2\x86\x67\xf5\x9c\x60\xa5\xa2\x6a\xf1\x00\xf8\x8d\x54\x90\x53\xc1\x4d\xd5\xb9\x0a\x93\xe8\x33\x29\x5c\x5a\xbc\xfd\xb5\x8b\x2b\x8c\x39\x26\x6f\x0a\x37\x98\xfd\xba\x3e\x1a\xec\x50\xec\xf3\x12\xa6\xd2\xc8\xbb\xb1\x66\xdd\xae\x5a\x9e\x75\x58\x99\xbe\x49\x4b\x27\x9b\xfc\x0a\x03\xb2\x55\x57\x1e\x3c\x51\x43\xb3\x41\x8f\xbf\x2a\x55\xad\x17\xe0\x60\xb0\x3b\x20\xf6\xac\xde\x1d\xec\x7a\x55\x2e\x5b\x68\x58\x19\x06\x8d\x61\xae\xeb\xfc\x3d\x20\xe4\x9d\x2f\x23\x04\xdc\xa2\xe5\xbd\x2f\x11\xac\x2f\xea\x74\x38\xb7\x4b\x7c\x4b\xd4\x72\x18\x3f\xd4\xe1\x62\x8f\xf9\x94\x09\x7c\xb1\xf5\x09\x66\x3f\xd5\x4e\x56\xed\xa2\x7a\xf3\xf7\x17\x6f\xd6\xf7\x52\x28\x59\x3a\x79\xa5\x23\x99\xe7\x88\xd8\x3c\x09\x48\x23\x15\x58\x48\x90\x7a\x6b\x31\xce\x11\xa7\x7a\xd4\x68\xc3\xce\x49\x7c\x3f\xd4\x9c\x31\x1e\x3e\x76\x75\xbd\xa2\xb2\x87\x1e\xde\x26\xcb\x01\xa5\x6b\x0f\xbd\xe9\x8e\xcf\x83\xf0\x1e\x07\x17\x27\x87\xc7\x6f\x4f\x06\x79\xfa\x04\x85\x2f\x13\x69\x21\xb9\x30\xba\xa9\x61\xde\xac\xdd\x76\x5b\xb1\x1d\xa6\xdd\x8d\x6e\x76\xe2\x87\x8b\x13\x3d\xfd\x33\x22\xe4\xfb\x94\x19\xca\x33\x1d\x71\x98\x91\x85\xcc\xe4\x78\x79\xd7\xad\x07\xb0\xce\x9f\x10\x3b\xb5\x4f\xfb\x96\x27\xd7\x67\xb1\x36\x6f\xd5\x5b\xa7\xa8\x6f\xcd\x0b\xbd\x34\x02\xb5\x82\x25\x08\x1d\x75\x9f\x01\xc1\x3e\xa1\x89\xb0\x40\x45\xf4\xc9\x80\x88\xf3\x8d\x09\x2a\xa4\xff\xa8\x81\xf7\xaa\xb6\xc3\x7a\x88\xdf\xd4\x6c\xb0\xd2\xbc\x69\xa7\xf8\x3a\xd5\xff\xe6\x46\xaa\x1f\x22\x85\x62\xfd\x00\xa8\x0c\x1d\xa4\xa5\x8a\x74\xb0\xf8\x4c\xf1\x4e\x5c\xef\xf2\xc5\xbb\xb2\xd9\xbc\x33\xb7\xd2\xd2\x83\x0f\x1d\xf1\xea\xb2\x6c\x56\xb5\xcb\x70\x2e\x2d\x3a\x46\xa0\x64\xe5\x22\x65\x85\xe2\x53\x9e\xb1\x31\x34\xdc\xe1\x62\xec\x5b\x8f\x47\x78\xfb\xd0\xfe\x92\x2d\xcc\xcb\x2e\xb6\x36\x71\x03\x38\xe0\xac\xb3\x77\x57\xd0\xc4\x09\x52\x61\x5a\x1b\x93\xf6\x81\xd0\xec\xba\xdf\xef\x83\xff\x6e\xef\x5f\xd6\xaa\x49\xb3\x7d\xf2\x33\x73\xcf\x91\xd0\x68\x4a\x41\x27\xf5\x89\x0c\x9d\x7e\x60\xae\x15\x65\x81\xa1\x31\x39\xce\xdd\x75\x60\xef\xb4\xea\x33\x1e\xe7\xb5\xfb\x39\x03\x30\xe7\x2a\xe6\xff\x14\x2d\xa0\x35\x1d\xa2\x1d\x4b\x7b\x1f\x27\x5a\xb6\x47\x42\x5c\xbf\x70\xe7\x02\x25\x7a\x96\x67\x5c\x5c\x57\xe8\xe1\x23\x69\xf9\x18\xeb\x7a\xb9\xb8\xf6\xbb\x46\x31\x9a\xdd\x7e\x62\x34\xe1\xd1\xb5\x9d\x16\xa6\xb3\x50\xc2\xd5\xac\xc0\x3c\xb6\x20\xbc\x5c\x92\x55\x2c\xea\x77\x76\x9e\x34\xc5\xb8\x4e\x34\x6f\x2f\xde\x4f\x2f\x8f\x2e\x4f\x6b\xb2\x5d\x10\xfc\xec\x53\x06\xec\x6e\x3b\x5c\xe1\x25\x9f\xb4\x05\xc1\x7f\x6b\x96\xe1\xd4\x27\x59\xd9\xf4\x97\x98\x44\x7d\x2e\x95\xa1\xd9\x1a\x04\x67\x32\xa1\xc5\x61\x69\x26\xc7\x5c\x27\x72\xca\x3a\x72\x43\xdc\x4c\xb0\x03\x99\x6f\xb8\xc0\x3d\x93\xe2\x33\xc8\xd1\xdf\x0e\xcf\x09\x2d\x2d\xd7\x19\xd7\x5c\x66\x6d\xe9\x69\x9e\x02\x97\x58\xf2\xfb\x88\xef\xef\x9e\xb0\x51\x6f\xbf\x0d\x0a\x3f\x7a\x50\x18\xe4\xe2\x73\x09\x04\x73\xc1\x0d\xa7\x46\xaa\xce\xa2\x75\x47\xa5\x36\x32\x77\x5b\xe4\xd4\x0f\x0f\x39\x4e\xa0\x6a\xd5\x9e\x58\xef\xc6\x0a\x86\x22\x90\xf7\x54\x58\xb3\x8e\x26\x6c\xae\xce\xa4\x07\xfd\x5b\x70\x6c\x1e\xee\xf9\xc6\x55\x1b\x01\x30\x79\xf6\xed\xab\x5a\x6f\xc3\x85\x96\xb7\xde\xe9\x58\xb5\x51\x5d\x9b\xb7\x98\xff\xd6\x8d\x7c\x72\xce\x7d\xa4\xcb\x7f\x95\x34\x43\x7a\x9e\xad\xd3\x13\x5e\x5f\xc7\x4e\x5e\xd3\xf3\x94\x5f\xf7\xb3\xe0\xfd\x2a\x35\xe2\xaa\xe3\x1d\x46\x51\xa1\x2d\x33\xd4\xfd\x0b\xbb\x2e\xc5\x60\x97\xec\x99\xa4\xd8\x5f\x1b\x65\xba\xaa\xe6\xc4\x97\x75\x6b\xff\x26\x54\x71\xb6\x7b\xaf\xb5\xe7\x0d\xc0\x1e\xee\xc6\x79\x5a\x23\x10\xaa\x64\xe4\x0d\xd7\xc6\xb7\x71\x85\x0f\xb8\x76\x7d\xaf\x40\xfb\x3e\x27\x52\x11\x5e\xfc\x83\xa6\xa9\x7a\x85\x67\xbd\xb3\x0e\xe1\xbf\x75\x40\x28\xa7\x22\x64\xac\xec\x99\x59\xe1\xda\x2b\x5c\x1d\x9d\x13\xec\x0e\xfd\xf5\x5f\x5e\x80\x26\xfe\xe5\x17\x7f\x79\xd1\x92\xd5\x9e\x6a\x75\x1c\xe9\xda\x0b\xd9\x79\x9e\xc2\x33\xa9\xa1\x00\x05\x14\xab\x27\xe0\x74\x73\x52\x10\xf9\xde\x32\x61\x38\x73\xbb\x54\x53\xb7\xf5\x06\x7f\xa0\x7a\x03\x12\x0a\xc6\x51\x8e\x3e\x96\x7c\x46\xd1\x7c\xfe\x54\x44\x73\x43\x6a\x36\xe5\xdc\x3a\xc7\xa2\x74\xdb\xdd\xd5\x71\x2e\x07\xd4\x53\x1e\x9f\x5d\xfe\xe3\xcd\xe1\xf7\x27\x6f\xe0\x3d\x5d\x36\xbc\x65\x45\x67\x96\x34\xc9\xdd\x5e\x9d\xb5\x9b\x7b\x8a\x9a\x92\xb3\x8b\x88\xfd\xd9\xeb\xcb\x39\x57\x9c\xfd\xe4\x81\x61\xfa\xb6\xb6\xa5\x18\xb5\xa0\xde\x53\x0b\x12\x40\x2b\x6b\xa6\xd6\x53\xdc\xdd\x71\x84\x21\x02\x50\xaf\x39\x35\x2c\x0f\xe1\x3b\xb6\xf6\x3b\x34\xe4\x0d\xb2\x71\x6a\xdc\xdd\xc1\x64\x4b\x31\xa4\x62\xe7\x61\xe4\x4f\x4a\xed\x76\xea\xa1\xea\x0a\x79\x60\xf7\x12\xc6\xf2\x09\x0f\x56\x84\x61\x1e\xb5\xb2\x27\xaa\x3d\x4b\x99\x0e\x4d\x6f\x9f\x01\xb7\x16\xcb\xba\xbd\xb5\x3f\x1d\x96\x36\x91\x73\xad\x8e\x31\x48\x53\x0b\xd1\xd7\xaa\x97\x6f\xeb\x9a\xe8\x73\x19\xa9\x73\x55\xe9\x82\x26\x9d\xf6\xe2\xa9\x3e\xc2\x4f\x00\xe8\xed\x29\x1e\x30\x30\xf1\x35\x95\x59\x85\x67\x77\xb3\x1d\x8f\xfc\x70\xf3\x60\x20\x0f\xe2\x12\xdf\x25\xba\x90\x1e\xec\x25\x46\x0d\xd9\x48\x16\x22\x1b\x77\x0e\xfd\xdc\xd0\x81\xb0\x4e\xe7\x41\x31\x91\x46\x8a\x8e\x4b\x48\xcf\x97\x0c\x5a\x97\x67\x78\xc7\x51\xd5\x7e\xbd\xe2\x0b\xac\xb0\x09\xa1\x69\x6b\x70\xf8\x13\x5b\x0a\x1f\xa4\xae\x87\xa8\x9f\x9e\x00\x2a\xd2\xd3\xe3\x35\xc8\x9e\xa7\x0f\xc3\xf3\xd0\xe0\xdc\xda\xd2\x4b\xd3\x8e\xea\xd2\x4f\x8f\x9d\x2d\xe0\x6b\xcf\xb5\xdb\x3c\xe4\xf6\xdd\xb3\x16\x3d\x49\x2a\x73\x23\x55\x57\xf0\x65\xe7\xb5\xe1\xe6\xf2\x15\xdd\x77\x0b\x78\x12\xcf\x53\x56\xe0\x5b\x3e\x79\x79\x71\x09\x89\x5c\x73\x1d\x25\xe7\x25\x44\xa8\xd4\x7d\x04\x21\xf2\x74\x84\x47\xa7\x5a\xc9\xe3\xc2\x46\xad\xcd\xa4\xf5\xbb\xa2\x13\x1a\xfd\xe4\x06\x73\xae\x4d\xcb\x1f\x95\xb8\xa5\x41\x18\xb9\x87\xae\x45\xbc\x2a\x69\xc5\x4f\x33\x29\x52\x3f\x50\x0c\xcb\x35\xb6\xf2\xcb\x32\xbb\x9e\x52\xc4\x4d\x00\x1d\xb8\x54\x8f\x60\x1f\xbd\x9c\x16\xae\xdf\x78\x2a\x6f\xc4\x0d\x55\x29\x39\x3c\x3f\xfd\xf4\x42\xb4\x75\xf1\x23\xee\x82\x36\x98\xf4\x35\x2a\x02\x0a\xfd\x90\x1b\x8d\xd9\xec\x90\x8f\x6e\x62\x1f\x92\x3d\x80\x42\x86\x88\x15\x61\x56\x5c\xb9\x59\x44\x3a\x92\x20\x32\x31\xd4\x75\x76\x0f\x5d\xef\x5f\xbc\x78\x81\x21\x85\x17\x7f\xfd\xeb\x5f\x09\x74\x5d\x4c\x59\xc2\xf3\xc5\x1b\xe1\xae\x3f\xbf\x7c\x39\x20\x7f\x3f\x7c\xfb\x86\xd0\x04\x2c\x30\x84\x54\xc5\x91\x61\xed\xe2\x1f\xeb\x1e\xf9\xbf\x97\xef\xce\xaa\x76\xef\xf5\x6f\x81\x35\x72\xff\x7a\x03\x72\x1c\xa5\x9f\xc7\x2e\x7f\x6a\x26\x90\x92\x2f\xa4\x21\x74\x34\x02\xe6\x44\x91\xcc\xb5\x17\x17\x1e\x17\x8d\x8f\x27\xbe\x5b\xb7\x65\xab\x0c\xf2\xe2\xb9\x9d\x22\x84\x58\x3c\x94\x20\xa6\xf9\xc3\x58\xe1\x74\x80\xa9\xf4\x48\xc6\xaf\x19\x19\x69\xe8\xd9\x5d\x35\xd1\x50\x4c\x5b\xfb\x29\xa1\xc2\x8e\x8e\x83\x85\xa9\xdb\x49\x3c\xed\xdc\x85\x96\xdd\x9d\x6b\x0c\xeb\x1b\xc3\xf9\xba\x24\x94\x27\x96\xec\x4f\x35\x97\xa0\xae\x2f\x86\xf7\x41\x2e\x72\x50\x7c\x41\x6c\x12\x9a\x49\x31\x8e\x99\xae\xd2\x23\x7c\x02\xe2\xac\x60\x4d\x89\xd1\x51\x37\x95\x6e\x7a\x93\xa1\xe4\x7e\x4b\x5b\xf6\xf7\xaf\x87\x56\x23\x28\x44\x3a\x94\xa5\xf1\x29\x6f\xf8\x24\x80\xc0\x02\x8c\x44\x24\x78\xab\x07\x77\xd6\x98\xa6\xbb\x56\x6f\x1d\xf5\x59\xaa\x1f\xc4\x35\x65\xb3\x47\x18\x4d\x26\xe4\x9a\xcd\xfa\x28\xe2\x0b\x0a\xe8\x07\x40\xe7\x63\x4b\x5d\xec\x2f\x54\xcf\x28\x48\x58\x6a\xed\x40\xb7\x08\x3e\x33\xb1\xe2\xfa\x80\x9e\xe0\x4d\x25\xed\x34\x6a\xd7\xb7\x48\x44\x8e\x43\xdf\xa8\x30\x91\xc2\xb8\x26\x88\xa1\x51\x11\x64\x5a\xce\x55\xd8\x5b\x89\xc2\x52\xfb\x33\x7d\xd7\x93\xab\x74\x4c\x7b\x64\x38\x65\xa2\x14\x0b\xbf\x06\x24\x70\xc8\x7b\xd5\xcc\xe1\xf9\x50\xdf\x00\x2f\x4a\xe9\x9c\xf0\x04\xaa\x6a\xec\xed\xee\x5e\x4f\xa5\x40\x88\x1a\x02\x80\x66\xa6\x74\xa4\x81\x5c\x5a\xfb\x6c\xa6\x35\xe1\xf0\x86\x39\x55\xd7\xcc\x83\xd9\xd2\x6c\x40\xce\xed\x24\x03\x4e\x39\xf6\x8d\x9b\x62\x11\x84\x95\x29\x31\xb4\x81\x7d\xc8\xee\x60\xb0\x8b\x67\xe1\x12\xa0\x83\xd6\xfc\xd2\x65\xcb\xb0\xce\x5a\x85\xd5\xf5\x20\x5a\x68\x6c\x9d\x66\xad\x03\x68\x4f\x28\x01\x77\xc4\x4c\xbc\xb6\x40\x5b\x82\x4f\xc7\x57\xc7\x3d\xab\xba\x6d\x7b\xd9\x5d\xd3\xcb\x16\x21\xf0\xfa\xd5\x75\xb3\xcb\x0e\x5b\x5d\xd6\x13\x8e\x9d\xfc\xa9\x4e\x90\xae\xfa\xee\x75\xde\x58\x31\xef\xa0\xad\x95\xbf\x6e\x43\x2e\xce\x57\xb1\x2e\x40\xd1\xb6\xb2\xfc\x49\x99\x13\xa7\x23\x90\xa1\xcb\xd1\x5a\x22\x2b\x2d\x1c\x29\x96\x02\xeb\xb7\x23\xba\xe8\x15\x4f\x3a\x32\x2c\xe6\xaf\xf6\x86\xc6\xfc\xd5\x26\x99\x65\xfe\x5a\xd8\xe7\xe1\x4c\x2d\xa2\x52\x5a\x58\x22\x23\xa1\x07\xa3\x09\xc2\x60\x40\xde\xba\x33\x17\x99\x9b\x0e\xb5\xcc\x4a\x13\x60\x15\x96\x1c\xc8\x30\xa8\xef\xd8\x88\x70\x43\xfe\xb6\xe8\x78\x06\xc5\x04\xcf\xac\x6e\x4e\x6a\xbc\x3a\x14\x36\x6d\x93\x51\xf1\xfa\x83\xa5\xa4\xe2\xd5\xe1\x2a\x78\xbd\xb0\xe3\x95\xb8\x74\x98\x92\xbe\x0e\xb0\xa6\xbd\x42\x5a\xaa\xd1\xa8\x1a\x7b\x45\x14\x1b\x1e\x36\x45\x5b\xae\xae\xf6\x8e\x57\xf7\x3a\xce\x1b\x78\x78\x7e\xfa\xe8\x56\x66\xf4\xac\xad\x9d\xb9\xd2\xb5\xc4\xe1\x0b\x40\x04\xde\x09\x74\x5c\x51\xd4\x05\xd8\xac\xfc\xfd\x03\x98\x2b\x0b\x2f\xfe\xda\x9e\x3b\x51\x50\x6a\xae\xe5\x03\x7a\x70\xab\x13\x2a\x6a\x13\xe1\xd3\x65\x40\x9a\x3d\x7f\xd3\x66\x43\x0d\x12\xa0\x7e\x8b\xba\x97\xf9\x6b\x3e\xb1\xd4\x11\x91\x5c\x42\xaf\x7d\xf4\x9e\x44\x6e\x98\x42\xa6\xaf\xb0\x69\x33\x15\x42\x1a\xec\x31\xdf\xc3\x66\xfd\xba\x87\xee\x15\xab\x64\x46\x89\x56\x2a\x0a\x61\x76\xac\x56\x76\xc6\x3c\xa4\x73\x06\x22\xc0\x44\x40\xbb\xf3\x6e\x38\x89\x3c\x02\x37\xd9\xab\xd2\x4a\xba\xec\xab\x5e\x0f\x37\xe2\xf8\x9e\x89\x74\x32\x61\x39\xc5\x06\x17\x9e\x40\x56\x5e\xdf\x28\x6e\x0c\x43\xfc\x6b\xa6\x72\x4d\xe4\xa8\xe7\x4d\x24\x44\x3d\x99\xbe\xdc\xe9\xae\x3f\xfd\x23\xd8\xca\xc4\xef\xd0\xa6\xf0\x55\xb7\x5d\x75\xdf\x7f\xcd\x8e\xb0\xbb\x13\x0c\xe6\x0c\x3a\xee\x88\x39\x27\xa4\x55\x22\xa6\x48\xff\x8d\x26\xdd\xe6\xb9\x19\x7a\x41\x19\xdd\xba\x19\xb6\x6e\x86\x2e\x46\x7c\x34\x37\x43\x74\x70\x7b\x61\xea\x16\x20\x76\x3d\xc4\xf8\xef\xde\xff\x50\xe1\x3a\x44\x58\xc6\x96\xe5\xbd\xe7\x41\xaa\xba\xff\x7f\x77\x30\xd8\xdd\xf5\xfe\x08\xb7\x3f\x4a\x33\xea\x7f\x4d\x98\x48\x64\x8a\x4c\x65\xc7\x57\xda\x80\x52\x5b\x19\xe0\xf1\x5c\x72\xff\xac\x38\x86\x00\x63\x77\xcb\x12\x1d\x4a\x28\x9f\x33\xf2\xfa\x51\x55\xb0\x4a\xf1\x0a\xf0\x55\x8e\x80\x01\xe5\xcf\x69\x60\x55\x0e\x4b\xc6\x73\xee\x70\xf5\xac\xb8\x60\xda\x68\xb2\x87\x1f\x0e\x92\xa2\xec\xb9\x1b\x06\x39\xcb\xa5\x9a\xf5\xc2\x4d\xf6\xcb\xda\xaf\xdc\x1d\xfb\xa0\xb5\x25\xa5\x52\x4c\x98\x6c\xf6\xc7\xd5\xdf\x3c\x89\x37\x58\x7d\x0b\x5c\xd1\xa6\xc4\x62\xd9\x35\x57\x76\x11\x80\xed\xc1\x51\x17\xa8\x0d\xe7\x90\x2b\x76\xe8\x05\xf7\x11\x7c\xca\xc4\x94\x4c\xa9\x6a\x5c\xec\xb0\xec\x7a\x14\x8d\x2d\xe5\x53\xae\x65\xe3\x72\xb1\xa5\x43\x2e\x7a\xbf\xb8\x6b\x04\x20\x4b\x53\x94\xc6\x9d\x2e\x7e\x6f\x7b\xa8\xb9\xb0\xa7\xe7\x14\xdf\x97\x3b\x1d\x4e\xae\xa0\xc6\x30\x25\x5e\x91\xff\xde\xfb\xf0\xf9\xef\xfd\xfd\xef\xf6\xf6\x7e\x79\xd1\xff\xcf\x5f\x3f\xdf\xfb\x30\x80\xff\xf8\x6c\xff\xbb\xfd\xdf\xfd\x1f\x9f\xef\xef\xef\xed\xfd\xf2\xe3\xdb\x1f\xae\xce\x4f\x7e\xe5\xfb\xbf\xff\x22\xca\xfc\x1a\xff\xfa\x7d\xef\x17\x76\xf2\xeb\x8a\x83\xec\xef\x7f\xf7\x1f\x1d\xbe\x04\x15\xb3\x77\x9d\x89\x60\xbc\xfa\x8f\xa2\x46\xd4\xc7\xee\x98\x75\x09\xf9\xd8\xaf\x9c\xd7\x7d\x2e\x4c\x5f\xaa\x3e\x3e\xe4\x15\x31\xaa\xec\x4a\x74\x55\xc7\xdf\xe3\xc9\x98\x4a\x89\xa9\x90\x1b\xbd\x61\xb3\x81\x42\x04\x33\x47\x1f\xdd\x1b\xec\xda\xa5\x6e\x1d\xc1\xab\x5c\x8f\x92\x70\xe4\x90\x61\xfe\xe0\xd9\x46\x97\xae\x23\xef\x36\xd5\x68\xe1\xda\xa6\x1a\x2d\x5e\xdb\x54\xa3\x07\x5e\xdb\x54\xa3\x0d\xf4\x01\x6e\x53\x8d\xb6\x3e\xc0\x27\xe2\x03\xdc\xa6\x1a\xad\x7a\x6d\x53\x8d\x1a\x5f\x4f\x33\xd5\xc8\x29\xf0\x55\x9e\xd1\xc6\xa6\x19\xb9\x06\xff\x87\x49\x22\x4b\x61\xae\xe4\x35\x6b\x19\x95\x5d\xc9\xc0\x5c\x78\xe6\x66\x5a\x9b\x5d\xa9\x94\x1d\xa8\x80\xdd\x29\x7f\xb4\x4c\xb9\x35\x33\x3b\xde\x06\x87\x6e\x58\x6f\x67\xda\x63\x51\xa4\x2c\x0d\xcf\xf3\xc2\xca\xd8\xf5\x1e\x90\x43\xa2\x58\xc2\x0b\x6e\x45\x3b\x80\xe9\xc0\xe7\xb8\x4f\x42\x3f\x60\x6e\x34\xcb\x46\xae\x27\xaa\xa8\x6a\x86\x55\x64\x42\xba\xb3\x62\xe9\x63\x50\x2b\x90\xbe\x8d\x25\xd1\x13\x59\x66\x29\x51\xec\x5f\x5e\x9d\x70\xb3\xb9\x8a\x47\x88\x1d\xa1\xf0\x2a\xd5\x63\xdd\xe0\xb4\xe0\x0e\x75\x6b\x93\x04\x1c\xfb\x58\x70\x05\x9b\xed\x92\x25\x52\xa4\x5d\xbb\x37\x4e\xe6\xc7\xf7\x6b\xed\xa2\x39\x2c\x25\x69\x89\x37\x40\x21\x24\xcd\x78\xca\xcd\x2c\x64\x61\xe0\xb6\xb7\x8a\x28\x76\xa1\x75\x8c\xa0\xab\x85\x20\xb4\x28\x94\xa4\xc9\x84\xe9\xe8\x6d\x50\xad\x74\x60\x13\xa1\xbe\x32\x2b\xc7\x5c\xa0\x66\x09\xbf\xb1\x6a\x48\x36\x23\x4a\x1a\x9f\x50\x76\xcb\x03\xaf\xa2\xc1\xe0\xe7\xa8\x4b\x18\x35\x83\xac\x33\x19\x0f\x81\xb3\xe2\xa3\xf8\x0f\x4d\x64\x96\x7a\xdc\xd2\xaf\x5f\x58\x55\x3e\x71\x5c\x6c\xa5\x3d\xa0\x4a\x1a\x49\x32\xab\x16\xd9\x13\xe0\xf6\x1f\x7f\xf1\x15\x99\xc8\x52\xe9\x41\x0c\x21\xf0\x12\x3e\x43\x27\x85\x37\x05\x0c\xc9\x18\xd5\x86\xbc\x7c\x41\x72\x2e\x4a\x7b\x96\x77\xc4\x78\x5d\x69\xaf\x91\xde\xfa\x97\xaf\x5a\x8e\xd6\x8d\xc6\xba\x98\xc1\xe2\xb8\xb5\xc0\xfe\x6c\x4e\x71\x75\x7b\x1c\x41\x31\xb0\x47\xe3\x9c\x1a\xeb\x8e\xa4\x78\x15\x85\x91\x6b\xde\xf9\xbf\x95\x72\x38\x33\xed\x61\x60\xfe\x0b\xc7\xa9\xe3\xbf\xf8\x0f\x57\xc1\x52\xad\xa0\x54\x1b\x4c\x65\xed\xdd\xa2\xc7\x5c\x9b\x46\xbd\xa2\x2b\xdc\x98\x06\x3f\x6e\x7b\x98\x8f\xad\xc5\xdb\x49\xd1\x3a\xd8\xce\xde\x56\xf3\x4e\xe5\x24\x61\x1a\x44\x91\x87\x4f\x03\xff\x2c\x3e\xb5\xe1\x43\x37\x0b\xb1\xe5\x4e\x44\x16\xcf\xfc\x1d\x74\xc6\x6c\x45\xac\x36\xba\xbd\x67\xec\x8e\xa8\x85\x83\xd5\x65\x84\xe6\x62\x8c\x8d\x2c\xf3\x32\x33\xbc\xc8\x2a\xca\x85\x1f\xb8\x03\x38\x76\xf8\xd3\xc8\xc3\x4c\x11\x38\x0a\xa1\xc1\x21\x38\xb2\x17\xc6\x62\xc2\x60\x3f\x46\x65\xcf\xf1\x82\x2a\x1a\xc8\x9f\xc8\x3c\xa7\x7a\xdf\xc5\x0e\x28\xe4\xae\xa0\x64\xb7\xc7\xb0\xa2\x59\x78\xfd\x38\x57\x60\x5d\x8c\x6b\x98\xa0\xa2\x71\xd0\xae\xee\x70\x81\xa1\x88\xbc\x09\xe9\xf1\xd8\x3f\x7d\x8e\x63\x9d\x42\xfc\x3d\x4d\xae\x99\x48\xc9\x7b\xed\x09\x97\xce\x04\xcd\x1d\xb8\x7a\xa1\x24\xf6\xed\x66\xe9\xdc\xef\x75\xcf\x39\x12\x11\x65\xc4\x83\x40\xa1\xbe\xb5\x2e\x2a\x96\xba\x23\x74\xdd\xf7\xda\x2a\x5f\x77\xcb\x3b\x8d\x4e\x5a\xc5\xa7\x09\xf3\xba\xa3\x9d\xc0\xba\x5e\x7e\xda\x18\xf1\x8d\x2c\xc7\x61\x72\x4d\x33\x71\x17\xc2\x91\x1e\x82\x8f\x80\xa3\x4e\x33\x2b\xe2\x66\x01\x5e\x67\x8e\xc1\x86\xb3\xf5\xb5\xec\x57\xc3\xf6\x00\x4d\xbb\x17\xdf\x1f\xd7\x85\xd9\x05\x4d\xa5\x26\xdf\x67\x32\xb9\x26\xc7\x0c\x8c\x86\xc7\x6c\xf7\xae\x86\xe9\xd3\x6e\xd3\x98\xd3\x71\xb3\x3c\x8f\x3e\xc9\xa5\xe0\x46\xaa\x26\xf2\x78\x83\xc0\xf6\xb6\xad\xf6\x96\x83\x88\xab\x61\xfa\x6c\x1a\xed\x59\x26\xef\xa8\xc3\xee\x84\x11\x05\x22\x06\x06\xf5\xdd\x3f\x1a\x0a\x8c\x3f\x4d\xe4\x4d\xdf\xc8\x7e\xa9\x59\x9f\x37\xce\x53\x6a\x4d\x9f\x6b\x36\x83\xa4\xaf\x4e\x28\xf4\x23\x0e\x56\x33\xd1\x8d\x04\xcf\x39\x7c\x6e\x15\xb9\x8b\xef\x8f\xed\xe9\x3d\x88\xcd\x92\x03\x66\x92\x83\x84\x15\x93\x03\x37\x9d\x27\x4f\x56\x2f\x1f\xbb\xa1\xeb\x21\x49\x64\x96\x39\xdc\x2e\x39\x22\x47\xac\x98\x84\x47\x6c\x06\xad\x9e\x72\xb3\xb4\x42\xca\x6e\x1a\x2b\x45\x22\xc2\x8e\xe9\x24\x44\xc4\xe8\x6a\xf8\xb0\x5e\xd0\x9b\xc8\xda\x9f\xb0\x27\x49\x93\xde\x72\x1b\x41\xde\xcd\xe9\x51\xb7\x7b\xe9\x87\x03\xff\x4f\x14\x6e\xae\xb7\xa4\xf3\xf9\xa2\x35\x11\x7d\x3a\x42\x0b\x33\x65\x29\x91\x53\xa6\x14\x4f\x99\x26\x41\x46\xc7\x8e\x25\x9e\x6d\x06\xe5\xb7\xdd\xf1\x9e\x56\x7e\xc0\xe6\xf8\x14\x22\xe1\x6d\xc7\x5c\x14\xde\x34\xcd\xb9\xd8\x0c\x2e\x6f\x48\x2f\x9d\xd0\x8c\x9d\xbe\x6b\x6d\x7a\x5f\xe2\x38\x75\xeb\xdb\x7f\x18\x81\xec\xdf\x03\x3c\xff\x63\xe0\x59\x22\x64\xda\x2c\x1a\xb6\x66\x1b\x7a\x4c\x0d\xbb\x69\xa8\xf8\xf4\x2b\x51\xdf\xf4\xf7\x60\x79\x3d\x6d\x1b\x7c\x4d\x0d\x32\xa2\x7d\x8d\xa8\xf7\xeb\x52\xa7\x1c\x07\x75\xe3\x5a\xf6\xa4\x98\xeb\x2f\xe6\xb7\xe6\xe1\xf9\x29\xf9\x01\x9f\xb7\xbe\x8e\x1f\x4a\x1a\xb4\x64\x8e\x65\x4e\x79\x47\x8d\xd8\xa3\x86\x4e\xf1\x0b\x9f\x87\x87\x11\x7c\x5a\xdc\x85\x7e\xc4\xc7\xa5\x62\x29\x71\xde\x8f\x6d\x1b\x83\x0d\x6e\x63\xd0\xad\x52\x5c\xe9\xc4\x91\xc7\xdc\x57\xc6\x54\x7a\xb0\xe7\x22\x50\x07\x42\x0a\x12\xd1\x4c\x68\x0e\x59\x07\x51\x62\x1c\x28\xcb\x90\xff\x1d\xca\x60\x50\x71\xee\x91\x37\x72\xcc\x85\x97\x4e\xd2\x25\xbb\x8c\x28\xcf\xda\x91\x73\xab\xe9\xfe\xc1\x34\x5d\xad\xb3\x13\x41\x87\x59\xf3\x4c\xc6\xfa\xc1\x9b\x51\xc8\x93\x62\x30\xe6\x41\xca\xb5\xfd\x97\x5c\x5e\xbe\x81\xd8\x6c\x29\xbc\x65\x08\x51\x47\x77\x6c\x84\xfa\x62\x14\x2e\xeb\x93\x07\x28\xb3\x3b\xeb\x53\x71\x2a\x52\xfb\xba\x4c\xd7\x12\x80\xdd\x53\xb0\x0b\x48\xa8\x5e\xc3\xec\xc3\x21\x23\x57\x13\x9e\x5c\x9f\x47\x21\x58\xa9\xec\x67\x22\xfa\xa8\xa6\x68\xcc\x7f\xb7\xae\x03\xc7\xbd\xd6\x79\x57\x6e\xaf\xab\xe8\xc4\xbd\x74\x24\xb3\x83\x13\xaa\xb5\x4c\x78\x15\xf3\x07\xa7\x70\x75\x24\xa7\x70\x24\xaf\x8f\x0c\xa0\x25\x3e\x8a\xfe\xe1\x19\xc7\x29\xad\x54\xc7\xfa\x06\x17\x9e\x5a\x6b\x7b\x75\x64\xe5\xce\xba\x6b\x5e\xd5\xfa\x69\x7a\xab\x6f\x2e\xfc\xec\xeb\x41\x1d\xa3\x78\x7d\xde\x35\x70\x5e\x64\x95\xd0\x57\xd3\xf5\xf7\x58\x0b\xb1\x9a\x17\x6b\x2f\xf3\xc2\xcd\xe5\xde\xe0\x67\x2e\x20\x0d\x42\xa5\x90\x45\x99\x61\xd6\x6a\xfb\xb6\xa2\x3e\x9a\x87\xcf\x59\x43\x80\x7a\xd3\x9a\x11\x3d\xb4\x9c\xef\x79\xf4\x25\x8a\x0c\x82\x17\x7f\xf9\xea\xab\xa7\xde\xa9\xa8\x9d\xe3\x6c\xdd\xad\x8a\x5a\x85\xba\xb6\x28\x05\x5b\x94\x82\xbb\xae\xb5\x47\x62\x3f\x3d\x0e\x41\x27\x45\x62\x5d\x14\x88\xb5\x45\x1a\x68\x59\x5c\xd6\x4d\x61\x59\x6b\x2c\x81\x47\x45\x10\xe8\xa8\xc6\xaa\x3d\x5a\xc0\x16\x23\xe0\x8f\x81\x11\xd0\x5d\x6d\x55\x57\x78\x00\xed\x6b\xaa\x9e\x7f\xed\x7f\x6b\x31\xd1\xb6\xc2\xfc\xe1\x75\xe5\x5d\xf5\xaf\xe8\xca\xcf\xde\x99\x63\xa0\xe6\xd5\x75\xf6\xae\xe7\x0c\xcc\xbc\xae\x10\xdf\x8d\xb4\x42\x63\x8d\xd6\x2e\x69\xed\x2c\xc0\xa9\xc8\x46\x67\x70\x9d\x6b\x70\xa4\x77\x97\x73\x21\xf6\xf0\xf1\xe6\x47\xd6\xb7\x21\xe6\x6d\x1b\xf5\x6d\xfc\x31\x5c\xb7\xc4\x1f\x75\x0d\xe3\xd5\x7b\x04\x41\x12\x82\x0a\x26\x87\x71\x1f\x95\x6a\xff\x1f\x9e\x9f\x92\x44\x31\x80\x34\xa0\x99\x1e\x90\x25\x1a\x9a\x8f\xd4\x38\x8d\xce\x6b\x66\xd4\x18\x96\x17\xa6\x2d\xc3\x6d\xc3\x8f\x7f\xb0\xf0\x63\xc7\x31\x83\x9f\xc2\x70\xde\x5b\x34\x29\x73\x2a\xfa\x56\x5a\x40\x20\xb2\x96\xcf\x31\x77\xf0\x0d\x88\xaf\x81\x43\x6a\x52\xc5\x10\xdc\xbc\x14\xfc\xb7\x92\x55\xfe\x85\xa0\x5e\x6c\x40\xa8\x05\xe6\xd1\x31\xed\x50\x75\x9a\x93\x22\x89\x5c\x28\x65\x72\x04\x09\x74\xf4\x02\x23\xd2\xbf\x6a\xbe\x32\x33\x61\xa8\xa6\x9d\x03\x38\x40\x75\x57\xdd\xbe\x43\x03\x8f\x66\x99\xbc\xc1\x67\xc7\x8a\x87\x5d\x3f\x3b\x17\x87\xc7\x31\x64\x24\xe7\x4a\x49\xe5\x42\x3c\xf1\x74\x30\x2d\xc7\xda\x89\x4c\xa1\xc1\xa5\x5c\x56\xc5\x25\x33\x31\xab\x18\x49\xa8\xc0\xc2\x45\xfb\xdf\x3e\x29\x19\xfb\x9f\x39\x79\x37\x64\x13\x3a\xe5\xb2\x54\xf8\x6b\x23\xc9\x8e\xfb\x0a\x8e\xdc\x99\x2c\x83\x9b\xbb\x84\x3a\xa5\xf0\x76\x7a\x09\x9d\xce\xaa\x2f\xc1\x40\x4d\xa5\xf7\x1f\xf6\xd9\x47\xae\xcd\xe2\xbb\x78\x12\xf9\x06\x09\xeb\xe0\xbc\xa9\x2e\xec\x01\xfb\x53\xe3\x9a\xd3\x3a\xbf\xc5\xa3\xd5\x55\xd2\xe9\x25\x7c\x75\x9f\x42\xea\x90\x5a\xb0\x54\xdc\x17\x85\x3d\xbd\x74\x4f\x7c\xcb\x86\x9d\x99\xb6\x1a\xf1\x53\xd1\x88\x43\x82\x44\xc6\x93\xd9\xe9\x71\x37\x3a\x5f\x48\x8c\xb0\x83\x92\xef\xa9\x66\x29\x79\x4b\x05\x1d\xa3\x73\x64\xef\xf2\xfc\xfb\xb7\xfb\x96\x49\xc0\xf9\x72\x7a\xbc\x34\x7b\xe2\x32\x9e\xd9\xd9\xba\xca\xb7\xc9\x3c\x8d\x3a\xd3\x0a\x1e\x48\xa5\xb5\x15\xb0\x93\x70\xb2\xb7\x69\xd9\xb5\x08\x6e\x84\xe9\x10\x1e\xa9\x4c\xcf\x8b\xd7\x69\x9e\x5e\x3f\xe6\xeb\x46\xbe\xea\xbb\xde\x69\xb5\x40\xd3\x0a\xc1\xa4\xb9\xb5\x57\xd4\xb0\xf1\xec\x98\x15\x99\x9c\xd9\xe5\x3e\x8f\x5c\xe7\x78\xeb\x10\x8f\x7a\x35\xa4\x09\x51\x65\xc6\xb0\x7b\xcd\x3c\x44\x98\x60\x2c\xad\xe4\x14\x17\xda\x50\x00\x08\xc3\xf1\xef\x9c\xd1\xca\x07\xcc\xaa\x47\x49\x1f\xe7\x79\xef\x5d\x75\x38\x45\xbb\xa1\xee\xfc\xc9\xea\x87\x09\x3c\xfe\x7e\x0e\x7d\x48\xf0\x70\xe5\x30\x61\x9d\xc1\x61\x4f\x5f\x94\x99\x3d\x3a\xb2\x74\xae\x89\x28\xe8\x56\x6e\x8d\x11\x99\x01\x24\x80\x9d\x7d\x8f\x0c\x4b\xab\x78\x31\x5d\xf3\x2f\x2f\xc2\x52\xde\x4c\x30\x6e\x6c\x7f\x44\x68\x51\x64\x1c\xf3\x7a\xa5\x72\xc1\xdf\xc8\xdb\xb8\x78\xdb\x2a\x82\xe4\x81\xfa\xc7\xc3\xf4\x8d\x3e\x99\x32\x35\x5c\x05\x53\xe1\xa1\xaa\x04\x2d\x38\xc4\x4e\x56\xd6\x3c\xea\xa0\x90\xe7\xa7\xf8\x6b\x6f\xa9\xc5\xa6\x99\xff\x12\x57\xd0\xad\x8d\x07\x14\x74\x5d\x69\xd0\xda\x08\xa8\x40\x87\xe7\xa7\x08\x43\xe5\x80\x81\x2a\x97\x85\xd5\xed\x29\x26\x07\x56\x68\x84\x74\x6c\x47\x34\x44\x8a\xf0\x50\x26\xca\x9c\x21\x98\x50\xd5\xce\xca\x1a\x7c\x62\x56\x8d\x5e\x79\x3c\xac\x7d\xb2\xba\x3a\xf1\xf0\x30\xfa\x03\xc3\xe6\x0f\x3e\x79\x84\x14\x17\xee\x35\xdf\x5f\xbc\x69\xb6\x88\x67\xf5\x31\x1c\x78\x0c\x03\x9c\xbc\x82\x2a\xc3\x69\x46\x4a\x95\xf9\x30\x1c\x26\xbd\xbb\xb4\xb4\x09\x9d\x46\x00\x3b\x03\x42\x3e\xc3\x95\x73\x84\xc5\xfd\x89\xed\x5d\x71\xe5\x47\x65\x96\xf5\xc8\x88\x0b\x6a\xc5\x2e\x2b\x48\x1c\x0e\xba\xe4\x22\xb1\xe6\x97\xb5\xf5\x5d\xbf\x16\x98\x91\x37\xca\xc2\x26\x85\x28\x23\x44\x4b\x59\x96\x02\xe8\x22\x3c\xc2\x6e\xd8\x04\x5c\x04\xd6\x6a\x3c\xca\x4a\x6d\x98\xba\x90\xf6\x30\x88\xf2\x5a\x00\x8e\x82\xc6\x5f\x7f\xcf\x45\x0a\x29\x4c\x17\x70\x70\x24\x54\x10\xc6\xc1\xf9\x62\x87\x84\x38\xb5\xe5\x9d\x8a\xa1\xf6\x74\x99\x4c\xec\x2b\xed\x14\x32\xd5\x3b\x56\x8c\xec\xa0\x8b\x4e\xef\xec\xdb\xbf\xe6\xdf\x01\xd3\x54\xa2\xdf\x1d\xd0\x82\xef\xec\xf7\x08\x10\x08\x02\x67\xd2\x4c\x9e\x2e\x1f\xfa\x77\x05\x9b\xb8\x11\x17\x5e\xc4\x23\x00\x0f\x8a\xaa\xfb\xd7\xcd\x84\x1b\x16\x9a\x6f\xa3\x67\x27\xe0\xab\xcc\x0b\x6b\x42\x0e\x05\x61\x79\x61\xc0\x5b\x4c\x72\x46\x7d\x08\x99\x4d\x99\x9a\x59\x9b\x1c\x80\x28\x9e\xfc\xe6\x0f\xfc\xd8\x8a\xe0\x73\x9d\xcd\x2b\x26\x87\x1d\xb6\x40\xdc\xdd\xcf\x76\x6b\x76\x7e\x96\x45\xd2\xfc\xc9\x92\x12\x8e\xd7\x46\x64\xfc\xc9\xfe\xb2\x4e\x42\xfc\x08\xa5\x65\x90\x1f\x6f\xde\xb8\x40\x06\xd2\xea\x47\x2e\x52\x54\x51\x0f\x8d\x51\x7c\x58\x1a\x76\xc1\xec\x84\x13\x4c\x79\xf0\x5d\xf8\x5c\x76\xb4\x5b\x89\xa5\xe4\x87\xb9\x3f\x45\xd2\x2f\x2a\xb6\xab\x2a\xa3\x77\x0c\xef\x75\xf9\xdb\x86\xba\x73\x00\x67\x10\xbc\x95\xe9\xf2\x4d\x35\x57\x19\x52\xdd\xec\x54\x95\xa8\xb3\xa5\x1f\xcb\x29\xb1\xb3\x62\xa9\xa6\x7f\xf7\x72\xdc\x41\xfa\xdb\x66\x52\xf9\x06\x40\x82\x46\xdf\x5c\xcd\x0a\xe6\x90\xb6\xc9\x28\xa3\xe3\x8a\x8d\x40\x1e\xa2\xfa\x74\x74\xf9\x93\x7f\x05\x4d\xf8\x72\x45\xf6\x5e\x4d\xf7\x3e\xdd\xb6\x5f\x51\xe9\xd6\x3b\xec\x43\x96\x7e\x79\xbf\x82\x1b\x06\xbf\x9d\x9b\x56\x09\xfb\x99\x3b\x5d\x6a\xb7\xd1\xff\xca\x21\x7c\xd1\x88\x13\x3c\x80\x98\x37\x37\x21\x13\x09\x34\x94\xcb\x9f\x6a\x6c\x72\xcf\x7c\x6f\x61\xda\x6b\x36\xbb\x91\x6a\x39\x1a\x78\x63\xfe\xba\xf3\x89\xd8\x9d\xff\xde\x0d\xf2\x96\x16\xf6\xb5\xab\x3c\x4f\x14\x78\x2e\xea\x88\x56\x01\x66\x68\xf9\xac\x38\xa9\xc6\x54\xf0\x7f\x63\x72\x6c\x62\xf7\xb1\x54\xf6\xcf\x3d\x8c\x5c\xa0\x45\x9f\xb1\xc4\xec\x3b\xfe\x5b\x2a\xf7\xee\x61\x50\x9a\xa6\x1c\xf5\x8a\xf3\x7b\x78\xe9\x6e\x22\x70\x71\xfd\x18\x34\xbf\x63\x63\xdd\xcf\xfb\x77\x87\x3e\x57\x90\xcd\xa5\xba\x23\xbb\xe9\xce\xdf\xe7\x94\xbb\x8e\xae\x1b\x47\x15\x96\x53\xde\xf4\xb5\xf0\x6a\x41\xd7\x9c\x9a\x52\x71\xb3\xf4\x40\xba\xfb\x87\x5c\xfc\x58\x0e\x99\x8b\xf6\x3e\xf8\xe7\x02\x92\xf7\x0e\xcf\x4f\xbb\x5d\x8e\x45\x78\x69\x37\x41\xab\xd1\x90\x52\xd0\x7c\xc8\xc7\xa5\x2c\x75\x36\x8b\xdd\x95\x14\x82\xd5\xd6\xdc\x47\x7f\x8d\xd8\x35\x84\x0a\x29\x66\xb9\xbb\x55\x24\x59\x99\xb2\xda\x88\x10\xd3\x9b\x4a\x9e\x12\x5a\x1a\x99\x53\xc3\x13\x92\x48\xfc\xae\x3e\x52\xa9\x19\xa1\xb7\xfc\x36\x29\xb5\x91\x39\xc9\xa9\xd2\x13\x9a\x65\xb7\xad\x71\x07\xa7\xda\x5d\x00\xda\x7d\x78\xff\x5b\xbf\x9c\xe2\xac\x1b\xf2\xf7\x3d\x78\xe1\x2b\xf0\xb7\x9d\x5c\xab\x01\xa6\xb7\x73\xe9\x0a\x63\xb8\x92\xf8\xa5\x70\x3d\xf7\x2c\xcc\x7d\xd4\xb9\x6b\xe7\xde\xfb\x5e\x77\x48\xc3\x3b\x7f\x0b\xa9\xb3\x2c\x3d\xcd\xe9\x78\x05\x45\xf2\x8d\xb5\x1b\xa8\x98\xf9\x9f\x21\x8a\xa4\xee\x11\xa9\x5c\x0e\x48\xe8\xc9\xed\xbe\x0a\x00\xa4\x8a\xbc\x83\x30\x9b\x54\x2e\x99\xda\x71\x29\xa4\xd6\x33\x35\x92\x2a\xb7\x7a\x1d\x57\x64\x54\x0a\x34\x2d\x5c\xee\x35\x18\x2b\xce\x8b\x43\x33\x2d\xc3\x0e\x84\xb8\x9d\xf0\x93\x20\x54\x93\x1b\x96\x65\x03\x72\x98\x65\x0e\xde\x32\x82\x46\xa8\x4a\x9e\xab\x0c\x81\xe1\x8c\xa4\x7c\xcc\xb4\x21\x7b\x97\x7f\x3b\xdc\x87\x53\x1b\x3c\x1c\x33\x62\xa8\xaf\x13\xab\x7b\x6e\xe0\xfc\x4f\x4b\xd0\x13\x12\x6a\x68\x26\xc7\x18\x24\x07\x0f\xae\x48\x49\x91\xd1\x19\x80\xd4\x17\x54\x41\xa2\x68\x82\xde\x1b\xa2\x4a\x01\xf0\xbc\x9f\xf4\xc4\xb9\x5f\x14\xdc\x85\xa0\xdb\x07\x9e\x6c\xb8\xd5\xef\x41\x2d\x7d\xdc\xa3\x4c\xb1\x22\xa3\xb7\xf8\x1b\xee\x28\xfb\xb5\x6a\x2e\x98\xb0\x52\xb0\x30\xc6\x80\x5c\x22\xef\xe4\xd4\x24\x18\xc2\xfc\x67\xce\x0c\x4d\xa9\xa1\x03\x6b\x0b\xfe\xb3\x5e\x98\x26\xb3\xd4\x0e\x74\xfb\x42\xdf\x32\x67\xd4\x17\x97\x37\x63\xaf\xef\x42\xab\xd4\x86\xdb\x41\x3f\xf7\xfb\xf1\x4e\x07\x47\x4b\xf9\x04\xaf\x7f\xf2\xd1\x9a\x62\x77\x46\xd7\x6a\x73\x9d\xff\x51\xdd\xff\x90\xd5\xdf\xc4\x71\x6b\xce\x00\x17\xf1\xca\xf5\xf3\xf1\x9f\x80\x73\xf5\xf0\xec\xf8\x76\x47\xd8\xfd\x2e\x83\x7b\x5c\x04\xf5\x90\xc1\x1d\xd3\xf3\xae\x67\xf7\x4d\x3d\x6e\xe0\x8b\x53\xa0\x7e\x0f\x4b\x3d\xa8\x07\x4f\xf1\x37\xe3\x82\xd5\x2b\x0f\xf1\x77\xb7\xfb\x47\x56\x0a\xdc\xac\x12\xae\xb9\xaf\xd0\xab\x1f\x26\x7b\xeb\x4d\xab\x45\x6f\xee\x2d\xc6\xaa\x11\xdc\x55\x3b\x42\x71\x25\x50\x1e\x4a\x36\xbc\xf3\x34\x10\x7b\xd5\x68\xd7\x8a\xfe\x1d\xff\xaa\x0f\x98\x68\x58\xca\x5a\x1a\xd1\x35\x9b\xed\x6a\x57\x8b\x22\x85\x9e\xf0\x02\xab\x05\x5d\x80\xc2\xad\x2e\xf9\x89\x66\x3c\x0d\x43\x20\x57\x9f\x8a\x1e\x39\x93\xc6\xfe\x73\xf2\x91\x6b\x83\xe6\xe7\xb1\x64\xfa\x4c\x1a\xf8\xa4\x93\x57\xc5\x29\x3c\xe0\x45\x9d\x01\x8c\x3e\x6e\xd8\x57\x91\x99\xec\x5f\xe8\xd4\x89\x3d\x4f\x14\xae\xc9\xa9\xb0\x1a\x81\x7b\xa3\x50\x45\xab\xdd\x10\xbe\x50\x44\x48\xd1\x07\xef\xf7\xd2\x31\x1c\x21\xa4\xaa\xd1\xe1\x8e\xe1\xdc\x50\x98\xce\x07\xdf\x70\xed\x85\x78\x38\xb3\xa9\x77\xbb\xf1\x84\xe4\x4c\x8d\x21\x9e\x93\xdc\x13\xcf\x58\xd5\x15\xb9\x92\x03\xf2\xde\xb5\x02\x91\xf9\xe6\x56\xc7\xc5\xc2\x22\x45\xf7\xa3\x58\xca\xd1\x9b\xf1\x3f\x56\xfa\x00\xa5\xfe\x17\x4a\xa9\xf5\x80\x1c\xfa\x66\x29\xf1\x77\x2e\xae\x15\x0f\x63\x47\xe0\x9a\x58\x51\x32\xa5\x19\x43\xe4\x78\x2a\x42\x15\x94\x1c\x2d\x08\xf6\x9e\x2b\xa9\xb6\x7b\x36\xa8\x4c\x3b\xd7\x6c\xb6\xd3\x5b\x58\xda\x9d\x53\xb1\x53\x95\xc0\xd5\x16\x33\x08\x51\xd0\xb6\x76\xe0\xbb\x9d\xe6\x67\xc1\x9d\xc2\x72\x75\xf7\xca\xbd\xeb\xa6\xaf\xf9\xf2\xc0\xf4\x52\x65\x63\x4f\xef\x5b\x12\x42\x30\x58\x91\x5c\x2a\x70\x67\xda\x4f\x63\x20\x0d\xab\xaa\x5e\xf3\xa2\xa8\x70\x47\xca\x62\xac\x68\xca\xc8\x58\xd1\x62\xf2\x50\xb5\x04\x75\x9b\x65\xc3\x3f\x19\x45\xf7\x16\xe2\xdf\x61\xd1\xd5\xc8\xef\x0d\x10\x6f\x78\xc3\x66\xb9\x51\xb4\x28\x98\x22\x54\xc9\x12\x9c\x76\xf9\x94\xa9\x81\xbf\x05\x53\x2e\x82\x9f\x39\x91\x4a\xb1\xc4\x78\x13\xdd\x65\x05\x63\xc1\xaa\x48\xa1\x1a\xf5\xc1\x6a\xdf\x0d\x1b\x4e\xa4\xbc\x86\xaa\x39\x60\xc7\x47\xf4\x82\xfc\x8c\xcf\x3a\xae\x3e\xf3\x06\xad\x26\x29\x33\x94\x67\x90\x6b\xf2\xee\xcd\x5b\x97\x8d\xe2\xb5\x09\x3f\xcb\xe5\x89\x1d\x1d\x98\x21\x34\x75\x59\x52\x17\x6c\xca\xd9\x8d\xa3\xff\x6d\x79\x24\x7d\x32\x66\x02\x92\x27\xee\x48\x32\xea\x13\xcd\x53\x76\x02\xc5\xb8\xb7\x0f\xd4\xc2\x7d\x7f\xcb\x9c\xef\x13\x21\x77\x9f\x23\xf7\x9e\x21\x2b\x9c\xf5\xc1\x08\x3f\x97\xea\x0e\xe0\x9f\xd5\x6a\x83\x57\xab\xfb\x75\xd9\xe9\xaf\xc8\x57\x5f\x7d\x79\xeb\x4d\x39\xfd\xc8\xf3\x32\x7f\x45\xfe\xf2\xe7\x3f\x7f\xf9\xe7\xdb\x6f\xe3\x02\x6f\x7b\x79\xfb\xfb\xb9\x3d\x7f\x74\x71\xbc\x01\xf4\x4e\x43\xb6\xdf\xdd\xa1\xc1\x15\x86\x1a\x51\x9e\x95\xca\xa5\xa4\xae\x68\xa8\xbc\x8e\x7f\x03\x61\x9d\xaa\x98\x82\xfa\x11\x7d\x32\x9a\x4b\x52\x1b\x71\xc1\x34\xb4\x46\x29\x85\x62\x89\x1c\x0b\xfe\x6f\x96\xfa\xce\x28\x90\x78\x02\x00\xeb\x9e\xc5\x09\x13\x29\xf6\xa4\xb4\x27\xef\x84\x8a\x34\xbb\x2b\x21\x61\x85\x37\x8d\x77\x70\x2b\x92\xc1\xf9\xf7\x20\x82\xbd\xad\x7e\x31\x47\x2e\xe8\xac\xe9\x82\x60\x78\xae\x22\xd9\x5a\xbd\x29\x0a\xc6\xcb\x3b\xcc\xfb\x25\x73\x5c\xb0\x3e\xd1\x70\x86\xcf\x7e\x2b\x99\x9a\x41\xe1\x48\x65\x5e\x44\x89\x6a\x57\x15\xae\x80\x7f\x0d\xa7\xd7\x21\x92\xcb\x9c\x45\x5e\xa9\x52\x55\x3a\xca\xdc\xb3\xe1\x37\x0c\x83\xf8\x3e\x9c\x45\x0e\x89\x28\xb3\xec\xb6\x5b\x85\xbc\x2b\xf0\x15\xd3\xee\x1e\x83\x76\x35\x4b\x73\x55\xe7\xc4\x12\x4a\x7f\x52\x17\x45\xfc\xe2\x1d\x19\x14\x9b\xed\xb4\x88\x5f\x78\xa5\x9c\xd3\xd5\xf3\x4d\x57\xc3\xab\x59\xc1\x99\x81\xd7\x43\x12\x52\x57\x44\x99\x79\x4c\xf7\x06\x5e\x0f\xca\x1f\x5a\xcd\xd5\xb1\x64\xea\x1b\xe7\xf0\x68\xf0\xf2\xab\x38\x3f\x96\xbc\xfa\xd6\x05\xb2\x40\xf0\x55\x73\xb2\x1e\x90\x8f\xb5\xe2\x4a\xae\xe0\x1a\xc1\x6b\xeb\x20\x79\xd0\x49\xb4\x82\x60\x7e\x98\xb3\x64\xe5\x55\x55\x8c\x8b\xa9\x44\x94\xe6\x07\xe9\x70\x17\x0b\x3f\x9c\x53\xe5\x6e\x40\xb2\x3a\x5d\x2e\x28\xbf\xb1\x4a\x6b\x0d\x5a\x52\xea\xfb\x5d\xee\x77\xbf\xc1\xdd\xb5\x29\x9d\xd8\x20\xf5\x37\x2f\x33\xf6\x33\x37\x93\x77\x1e\x8d\xdd\x71\xb5\x29\x8b\x0c\x5e\x36\xfa\xc2\xb2\xd0\x45\xa5\x19\x9e\x62\x07\x2f\x96\xc8\x3c\x67\x22\xc5\x54\xa6\x9c\x5e\x33\x52\x35\x82\xb4\x3a\x1e\xa8\xc1\x30\x1c\xfb\x58\x50\x51\xe9\x89\x53\x2b\xcb\xef\xe2\xa8\x15\xf9\x69\xd5\xb3\x76\xe5\xa2\x8f\xbb\x8b\x3d\xa2\x6a\x8d\x5a\x51\x07\x19\xb2\x4c\x82\x13\x07\xf3\x55\x31\xd7\xda\xdd\x0a\x22\xd9\x7d\xea\x4e\x3d\x87\xfc\xc8\xc4\xb8\xc2\x99\xd2\x19\x34\x69\x75\x12\x58\x0a\x36\x20\x17\x4e\x85\x59\x4d\x2b\x5a\x45\x9c\xae\x28\x4a\x57\x3e\x10\x2b\x6c\x86\x07\x53\xd6\xff\x2e\xa6\xed\xd4\x7f\xb6\x0a\x75\xfd\xcd\xcf\x99\xbe\xa1\x53\xc2\xc3\xc8\x5b\xdf\xd2\xd5\xa9\x10\x68\x3b\x27\xbc\x12\x6c\x01\x0c\xae\xba\x3e\x39\xba\x38\x39\xbc\x3a\xe9\x91\xf7\xe7\xc7\xf0\xef\xf1\xc9\x9b\x13\xfb\xef\xd1\xbb\xb3\xb3\x93\xa3\x2b\xab\x47\x7c\x86\x38\xf0\xd6\x8c\xb3\xd4\xb5\xe7\x91\xac\x4b\x0b\x2a\x66\x64\x54\x1a\x2b\x0e\xaa\x87\xd5\x66\x41\xd1\x07\x40\xd3\xd4\x9a\x8c\x4f\x6e\x0d\x97\x13\x7c\xde\x6d\x12\x37\xbb\x40\xe8\x7c\x57\xcc\x75\xbf\x9a\xb4\x32\x93\xac\x5c\x15\x51\x9b\xf2\x4e\xc3\x72\x88\x0f\x82\xbc\x96\x8a\xb8\x3e\x5f\xaf\xc8\x6e\x21\x53\xbd\xeb\x8a\x4e\xec\x7f\x0f\xf0\xa3\x83\x4c\x8e\x77\x43\x2d\x0a\x23\x99\x1c\x13\x5d\x0e\x43\x8d\x10\x9c\xa6\x70\xf7\x67\xfe\xb6\x5a\x69\x45\x2f\x14\x0a\x45\xbf\x0a\x83\xd7\x7e\x13\xdf\x10\x8f\x7b\x00\x4d\xbe\x6a\x77\xda\x0f\xe6\x07\xfc\xec\x60\xf9\x0c\xbc\xe2\xc4\xd5\xdc\x2f\x3e\x08\xcb\xae\x37\x3c\x4b\x13\xaa\xd2\x05\x9e\x85\xc3\x0d\x97\x1c\xa8\x87\xb8\xb9\xd8\x23\xb9\x1a\xdc\x81\x67\xc8\x29\x53\x19\x2d\x30\x4f\x1d\x80\x8b\x21\x01\x0a\x1e\x72\xcc\x0a\x06\x75\x5a\xbe\x6b\x37\x13\x49\x26\x01\xa7\x03\x4f\xc6\x5e\xfd\xd5\x31\x21\xca\x83\x12\xba\x62\x9f\x6a\x87\xec\x6c\xac\x98\x83\x64\xe7\x07\x71\x2f\xa6\x47\xdf\x0a\xf6\x12\xaa\x47\xd0\x68\x0c\x9a\x2f\x23\x3b\xae\x0a\x6e\xa7\x47\x76\x02\x9e\x49\xea\xb4\xe4\x9d\xcf\x76\xaa\x1b\xe2\x3a\x2a\x50\x92\x5d\x60\xaa\x0f\xcf\x89\xab\x2d\x61\x81\x7d\xf8\x2c\x3c\xba\xc2\xa4\xb1\x47\x9b\x73\x62\xc1\x1c\xea\x03\x0d\x6a\x13\x59\x78\x6a\x55\x02\x78\xef\x13\xed\xf4\xa3\x9f\x1b\x28\x97\xc7\x52\x42\x47\x1c\x15\x55\xdc\x0c\xc8\x65\x8d\x79\x42\xf8\x2f\x06\xcd\xe1\x8a\x14\x54\x59\x53\xc4\xdf\x59\xef\x17\xf6\xd9\xbd\xdd\xc2\x56\x60\x82\x28\xbe\xb2\xa2\xd6\x7e\x19\x7e\x71\x94\x51\xad\x97\x78\x5e\x41\x10\xd8\x81\x09\xc3\x91\x09\xf5\xc1\x27\x00\xa1\x9e\xd0\xe9\x1d\x70\x09\x2b\x4c\xda\x50\x35\x66\xe6\xee\xc8\x08\x15\xb3\x77\x77\xc2\xa4\xf5\x57\x06\x56\xed\xaf\xb6\x9b\x3e\xf6\x2b\x50\xae\x3e\x17\xa6\x2f\x55\x1f\x7f\xf2\x8a\x18\x55\xde\x16\xe3\x32\x3c\x67\xb2\x34\x97\x2c\x91\x62\x79\x5d\x85\xbb\xaf\xb3\x50\xcf\x03\x8a\x4d\x5c\xb4\xf1\xd0\xab\x11\xbe\xe2\x24\x76\xb2\x57\x3a\x86\x8f\x30\xd6\x41\x5a\xde\xbd\x79\xdb\x66\xb1\x09\x94\x59\xdf\xbd\x92\x3f\x39\xb1\x2f\xc6\x61\xa6\x6e\xe6\x77\xfe\xec\x6d\x69\x1e\xfe\xa3\xff\x8f\xb9\x2b\xcb\x6d\x9b\x07\xc2\xef\x39\x05\xdf\xfe\xbf\x40\xe3\x9e\xa1\x70\xde\xba\xa0\xb0\xd3\x03\x30\x12\x1d\x0b\xb5\x25\x83\x94\xe2\x2e\xe8\xdd\x0b\xce\x0c\x29\x53\xe6\xa6\x48\x76\xac\x47\x9b\x1c\x2e\xe2\x50\xb3\x7e\xb3\xb4\x9e\xab\x78\x6b\xda\x8c\x38\x30\x47\x70\xfd\xaa\xe5\x6d\x77\x76\x1a\x9c\x77\x43\x97\xe5\x1a\x13\xdb\x48\xa6\x5f\x43\xbf\x53\x23\xdf\x39\x3e\x01\xe2\xdc\x42\x3b\x13\x32\xb9\x60\xd4\x51\xf3\x67\x2b\x79\x85\x0a\x24\x2f\xda\x0e\x72\xa7\x79\x4b\xe1\x95\x04\xaf\x73\xe7\x5b\x86\x57\x65\x8c\xa9\x89\x85\x90\xad\xfa\xcc\x55\xfb\xfd\x50\xf2\x40\x0e\xd5\x20\x6c\x52\xb5\xc0\x30\x28\x58\x1f\x6b\x51\xea\x1b\x9e\xb6\x00\xe9\xb1\xa3\xbe\x7a\x3b\xa4\x38\xd6\x93\xdf\x33\x90\xee\x7e\xaf\x87\xf2\xcf\x7a\xd5\xe8\x3d\xf9\xe8\xbd\x80\xdc\x80\x91\xd4\x6c\xf5\xe7\x44\x02\x35\x56\x8b\x9f\x3e\x8d\x7b\xfa\x8c\x77\x82\xd7\xfe\xa0\xfd\xc1\x89\x82\x76\xe3\xcf\x10\x0d\xc0\x8e\xdb\x4a\x8b\xac\x98\x6b\xa6\x98\x11\xa1\x4a\xb1\x13\x81\x94\xb3\x89\x01\xad\x34\xc2\x03\x0d\x90\x15\x6c\xf5\xcd\xed\x63\x0d\xfa\x24\x84\x53\x0a\x47\x2f\x2c\x93\xf4\x60\xb5\xa6\xe1\xaa\x40\x7c\x79\xda\x35\xc5\x0f\x04\x19\x03\xbc\x81\xea\xb7\x90\x26\xfa\xbd\xb2\x55\xbd\xa8\xf2\xd4\xb3\xa9\x8a\x69\xf6\xcd\x94\x1f\x02\x2a\x9a\xb6\xde\x40\x4b\xbf\x91\xbd\x65\xb1\xab\x29\x87\xef\x3a\x01\xb4\x46\x51\x81\xac\x01\xc7\x73\x70\xae\xb3\x60\xa0\x0d\x60\x20\x92\xca\xc8\xf7\x94\x63\xf3\xe1\x53\x38\x1f\x65\xd6\xa0\xd8\x58\x56\x0c\xb6\x80\xed\xab\x8b\x28\x14\x4e\x34\x7f\x26\xd7\xf2\x95\xc8\x93\x61\xf9\x42\xba\x9d\x72\x0e\xb5\x59\x43\x1c\x67\xf7\xf6\x05\x93\x11\xfa\x67\x8c\x0f\x2f\x17\x7c\x75\x94\x97\xa9\x1e\x03\x92\xe9\x82\x9b\x58\xb5\x83\x52\x4d\xd1\x13\xbf\x69\x64\x50\x81\x99\x6f\xf2\xf1\xac\xaa\x24\x21\x2d\x7d\x86\x63\xd7\xce\x53\x88\xf4\xed\x65\xbb\xbc\x67\x9c\x6d\x2b\xd5\x36\x92\x5c\x6b\x50\x3c\x4c\x72\xa8\x50\xea\x8f\x01\x9b\x27\x1a\x6e\x69\xa7\xc0\xf8\xe1\x20\xb8\x2d\x36\x44\xdf\x26\xa8\x16\x24\x45\xd1\xc8\xd2\x3b\x31\xa3\xdd\x7b\x65\x29\xef\xf0\x33\x64\x88\xee\xb8\x6a\x1f\xed\x1c\xb4\x80\x90\x79\x1b\xbb\xe2\x0f\x2d\xb1\x5f\x8d\x81\x9b\x69\xea\xfe\xcf\x86\xf1\x1a\xad\x1a\xd3\x64\xf0\xb4\x90\xd1\xaf\x0d\xa5\xb9\x57\xad\xeb\x68\x25\xb7\x93\x25\x5e\x67\xe6\x7b\xa1\x54\x34\xdd\x69\x10\xa4\x01\x38\xc1\xcc\xe2\x04\x53\x77\xf3\xb1\x47\x01\x01\xc3\x31\x0d\x2a\xd8\xaf\xf0\x51\x63\x20\x26\xa0\x41\xc1\xb2\xd5\xa4\x57\x76\xd8\x72\x95\xbb\x18\xcb\x45\x36\xd0\x38\x9b\x1d\x32\x67\x23\x05\x57\xb1\x84\xcd\xc1\xde\x3e\xc9\x4a\x6c\xd8\x92\xef\xc5\x6e\xc9\xd5\x9c\x9b\x0b\x37\xc0\x82\x89\xc5\xf3\x82\xfd\xb7\x3a\xf1\xb6\x7e\x6d\xda\x2f\xb1\x82\x0d\x09\x8c\x82\x1c\x8e\xbe\x28\x2f\x4f\x56\x12\xd2\x9c\x3b\x91\x67\x27\xcf\x30\xc2\xa1\x37\xc1\x9b\xf1\xac\xe3\x10\x3f\xba\x9c\xd8\x49\xb0\xf8\x15\xaf\xe5\xc8\x44\x4a\x65\x88\x0b\x6f\x99\xff\x12\x4b\xb2\x24\xd6\x5e\x93\xc9\xd9\xea\x1e\x1d\xcd\x15\xcc\xfe\xa7\x01\x76\x58\x99\xbf\x52\x5a\x05\x9b\x53\x6c\x79\xdb\x94\x7f\x7a\x81\xc1\xff\x23\x72\xf9\x7d\xfc\x2b\x3c\x15\x4e\xa0\x04\x47\x8b\x3e\x01\xd7\x0c\xc0\x78\x30\xa3\x92\xad\x83\x6c\x00\x74\x2e\x36\x54\xe5\x8c\xda\x38\xe7\xe3\x7f\xa8\x23\x27\x5e\xb0\x6a\x23\x24\x7c\x08\x56\x0b\xa5\x99\xe2\x5d\x64\xf8\x4c\x85\x2a\x4f\x99\x4a\x2b\xba\x49\x25\x96\xa5\x5f\xad\x69\x14\x7b\xc1\xf8\xe4\xea\x6c\x19\x3a\xf1\x08\x65\x2d\xad\xf1\x8c\x20\x96\x14\xff\x46\xd2\xf3\x1b\x70\x87\xcf\x00\x79\x58\x77\x59\xc1\x25\x8d\x8e\xe1\x42\xdf\xc0\x05\xa0\x4f\xe3\xdd\x4d\xd7\x93\x6b\xbf\x5d\x0d\xef\x40\x08\x37\x74\x4f\xf8\x5c\xcb\xea\xba\x6a\xbe\x3d\x4f\xe2\x78\x64\xd3\xbb\x01\x50\x92\xe4\x01\xba\x2c\x5c\x02\x3e\xa9\x53\xf7\xf6\xe7\x2d\x07\x16\x2a\x7a\xc6\x2e\x84\x0f\xa3\x84\x7c\x11\xa5\xe3\xa9\x23\x6c\x79\xf7\xb7\x13\xbf\x6d\x4f\x9f\xb6\x9d\xfd\xf9\x7b\xf7\x2f\x00\x00\xff\xff\x66\xd5\x65\xa6\x7e\x88\x07\x00") +var _operatorsCoreosCom_clusterserviceversionsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xfd\x7b\x73\xe4\xb6\x95\x30\x8c\xff\x9f\x4f\x81\x92\xbd\x8f\xa4\x75\x77\x6b\x26\xc9\xe6\xb7\x3b\xbf\xbc\xeb\xd2\x4a\xb2\xa3\xd7\x33\x1a\x95\x24\xdb\x4f\xca\xf1\x3a\x68\xf2\x74\x37\x56\x24\xc0\x00\x60\x4b\x9d\xc7\xcf\x77\x7f\x0b\x07\x00\x09\xf6\x45\xea\x26\x39\xa3\x8b\x81\x54\xc5\xa3\x26\x09\x82\x07\x07\xe7\x7e\xa1\x05\xfb\x01\xa4\x62\x82\xbf\x23\xb4\x60\x70\xaf\x81\x9b\xbf\xd4\xe8\xf6\xdf\xd5\x88\x89\xa3\xf9\xdb\xdf\xdd\x32\x9e\xbe\x23\x27\xa5\xd2\x22\xbf\x02\x25\x4a\x99\xc0\x29\x4c\x18\x67\x9a\x09\xfe\xbb\x1c\x34\x4d\xa9\xa6\xef\x7e\x47\x08\xe5\x5c\x68\x6a\x7e\x56\xe6\x4f\x42\x12\xc1\xb5\x14\x59\x06\x72\x38\x05\x3e\xba\x2d\xc7\x30\x2e\x59\x96\x82\xc4\xc9\xfd\xab\xe7\x6f\x46\x7f\x1a\xfd\xfe\x77\x84\x24\x12\xf0\xf1\x1b\x96\x83\xd2\x34\x2f\xde\x11\x5e\x66\xd9\xef\x08\xe1\x34\x87\x77\x24\xc9\x4a\xa5\x41\x2a\x90\x73\x96\x80\x7b\x5e\x8d\x44\x01\x92\x6a\x21\xd5\x28\x11\x12\x84\xf9\x4f\xfe\x3b\x55\x40\x62\x56\x31\x95\xa2\x2c\xde\x91\xb5\xf7\xd8\x79\xfd\x62\xa9\x86\xa9\x90\xcc\xff\x4d\xc8\x90\x88\x2c\xc7\x7f\x3b\x20\xd8\xd7\x5f\xdb\xd7\x3b\xc8\xe1\xf5\x8c\x29\xfd\xdd\xe6\x7b\xde\x33\xa5\xf1\xbe\x22\x2b\x25\xcd\x36\x7d\x08\xde\xa2\x66\x42\xea\x8b\x7a\x59\x66\x19\x89\x9a\x87\xff\x76\x37\x32\x3e\x2d\x33\x2a\x37\xcc\xf6\x3b\x42\x54\x22\x0a\x78\x47\x70\xb2\x82\x26\x90\xfe\x8e\x10\xff\x2e\x3b\xf9\x90\xd0\x34\xc5\x8d\xa4\xd9\xa5\x64\x5c\x83\x3c\x11\x59\x99\xf3\xea\xe5\xe6\x9e\x14\x54\x22\x59\xa1\x71\xb3\x6e\x66\x80\x50\x23\x62\x42\xf4\x0c\xc8\xc9\xf5\x0f\xd5\xad\x84\xfc\x8f\x12\xfc\x92\xea\xd9\x3b\x32\x32\x1b\x30\x4a\x99\x2a\x32\xba\x30\x4b\x08\xee\xb2\xbb\x79\x6a\xaf\x05\xbf\xeb\x85\x59\xaf\xd2\x92\xf1\xe9\x43\xef\x77\x1f\xb1\xdd\x12\xe6\xc1\x3e\x85\xaf\xff\x61\xe5\xf7\x6d\x5f\xef\x3f\x9f\x9a\x37\x13\x3d\xa3\x9a\xe8\x19\x53\x44\x70\x20\x12\x8a\x8c\x26\xa0\x1e\x58\xd0\x9a\x5b\xec\x8a\xae\x56\x2f\x6c\x58\x52\x38\xa5\xa6\xba\x54\xa3\x62\x46\xd5\x2a\x88\x2f\x97\x7e\x5d\x33\x9d\xbd\x71\xfe\x96\x66\xc5\x8c\xbe\x75\x3f\xaa\x64\x06\x39\xad\x71\x40\x14\xc0\x8f\x2f\xcf\x7f\xf8\xc3\xf5\xd2\x05\xd2\x84\xce\x5a\xec\x27\x4c\x19\x50\x21\x05\x21\x9e\x84\xe0\xde\x2d\x0a\x20\x7f\x5f\xfb\xcc\x75\x01\xc9\xdf\x47\x2b\x2b\x17\xe3\xff\x81\x44\x07\x3f\x4b\xf8\x47\xc9\x24\xa4\xe1\x8a\x0c\x80\x3c\x59\x5a\xfa\xd9\xc0\x3f\xf8\xa9\x90\x86\x2c\xe8\xe0\xc8\xdb\x11\xd0\xc5\xc6\xef\x4b\x5f\xbb\x6f\x40\xe2\xbe\x31\x35\x24\x11\x14\xe2\xa3\xc3\x38\x48\x1d\x1c\x2d\x9e\x32\x65\x90\x43\x82\x02\x6e\x89\x24\xa2\x10\x77\xdf\x34\x22\x06\x00\x20\x95\x21\x00\x65\x96\x1a\xda\x39\x07\xa9\x89\x84\x44\x4c\x39\xfb\x67\x35\x9b\x22\x5a\xe0\x6b\x32\xaa\x41\x69\x82\xa7\x96\xd3\x8c\xcc\x69\x56\xc2\x80\x50\x9e\x92\x9c\x2e\x88\x04\x33\x2f\x29\x79\x30\x03\xde\xa2\x46\xe4\x83\x90\x40\x18\x9f\x88\x77\x64\xa6\x75\xa1\xde\x1d\x1d\x4d\x99\xf6\x54\x3f\x11\x79\x5e\x72\xa6\x17\x47\x48\xc0\xd9\xb8\x34\x84\xf3\x28\x85\x39\x64\x47\x8a\x4d\x87\x54\x26\x33\xa6\x21\xd1\xa5\x84\x23\x5a\xb0\x21\x2e\x96\x23\xe5\x1f\xe5\xe9\x17\xd2\x6d\xb2\xda\x5f\x02\xdf\x5a\x74\x26\x9e\xc0\x3e\x08\x6b\x43\x5e\x2d\x26\xd9\xc7\xed\xb7\xd4\x20\x35\x3f\x19\xa8\x5c\x9d\x5d\xdf\x10\xbf\x00\x77\x2e\x11\xc2\xf5\xad\xaa\x06\xb6\x01\x14\xe3\x13\x90\xf6\xce\x89\x14\x39\xce\x02\x3c\x2d\x04\xe3\x1a\xff\x48\x32\x06\x5c\x13\x55\x8e\x73\xa6\x15\xe2\x1c\x28\x6d\xf6\x61\x44\x4e\x90\xe9\x91\x31\x90\xb2\x48\xa9\x86\x74\x44\xce\x39\x39\xa1\x39\x64\x27\x54\xc1\x27\x07\xb5\x81\xa8\x1a\x1a\xf0\x6d\x0f\xec\x90\x67\xaf\x3e\xb0\x72\xc6\x08\xf1\xbc\x74\xe3\xee\x6c\x3c\xc3\x24\x85\x24\xa3\xd2\x0a\x05\x44\x43\x96\x91\x8f\xef\x3f\x90\x99\xb8\x33\x58\xcc\xb8\xd2\x34\xcb\xf0\x14\x38\xfe\x6c\xc9\x69\x42\x39\xc9\x29\xa7\x53\x20\xb4\x28\x14\x99\x08\x49\x28\x99\xb2\x39\x70\x7f\xba\x46\xdb\x2e\x7e\x13\x91\x20\x96\xb8\xaf\x65\x50\xfe\xaa\x5b\xe0\xd2\x95\x4d\x64\xc3\x8c\x15\x19\xe8\x01\xa8\x1d\xd7\xf7\x22\x66\x73\x52\x72\xa5\x65\x89\x9b\x9d\x92\x5b\x58\x38\x24\xcf\x69\x41\x94\x16\xe6\xc7\x3b\xa6\x67\x84\x86\x08\x4e\x35\x62\xf1\x18\x88\x02\x4d\xc6\x0b\x62\xc4\x38\x24\x08\x5a\x88\x0c\xa9\x05\x3e\x8b\x84\x41\x82\x96\x0c\xe6\x40\xa8\x1c\x33\x2d\xa9\x5c\x54\xd8\xb0\x0c\xd0\x47\x80\x8a\x1f\x1b\x08\x0f\x9b\x41\x42\x1e\xc2\x45\x62\xc9\xad\x93\x5d\xd2\x4a\xb0\xdc\x02\x7a\x97\xe7\x0e\xdf\x6a\x71\x54\x39\x7c\x03\x45\x0c\x5e\x39\xf9\xa0\x92\x6b\xf1\x4d\x0e\xb1\x52\x22\x64\x85\x19\x06\x6c\x21\x12\x8e\xc1\x90\x13\x49\xb9\xb9\xb0\x16\xb9\x5b\x40\xeb\x21\xb4\x31\x43\xdc\xf1\x75\x38\x1a\xce\x4d\xa5\x6c\x08\x4c\xe1\x60\x1a\xf2\x0d\x33\x3f\x08\xbb\xea\x67\xb3\xc0\x39\x4b\xc1\x00\x51\x53\x66\x51\xc7\x9c\x56\x3a\x16\xa5\xb6\xb0\x73\xb7\xa4\x64\xce\x28\xa1\xd3\xa9\x84\x29\x22\xf0\xc6\xd7\x3e\x02\x13\x3b\x36\x1f\xd0\x7a\x0c\xad\x24\xff\xe0\x1d\x86\x0c\x3e\x78\x03\x5f\x77\xcc\xc3\x1b\x56\x85\xc5\xe6\x78\x6c\x0f\xed\xa0\x89\x81\x89\x07\xad\x90\x0f\xde\xbc\xcd\xde\xda\xf1\xc8\x0e\xdb\xd1\xdc\xe7\xa5\x85\xb8\xab\x63\x73\x3e\x6a\xd2\x6c\xc8\x01\xde\x58\x13\xdf\x31\x90\x02\xe4\x44\xc8\xdc\x1c\x14\x4e\x28\x49\xac\xfc\x56\x11\x1e\x24\x8d\x3c\x79\x08\x9c\x64\xdb\xfd\xb7\x63\x1b\x2c\xb0\x63\x48\x0a\xaa\x67\x8f\xdc\xb6\xdd\x56\xd9\x11\x02\xed\xd1\x9b\x1f\xa1\x66\x2b\x73\xd7\x1c\xa6\xf7\xb9\x0d\x18\x7a\x9f\x14\x79\xce\x36\xb3\x36\x50\xed\x8a\xde\x7d\x00\xa5\x0c\xcb\x46\x29\x4d\xd2\x3b\x02\x3c\x11\x86\x58\xfc\xbf\xd7\x1f\x2f\xec\xb4\x23\x72\xae\x09\xcb\x8b\x0c\x72\x23\x88\x91\x0f\x54\xaa\x19\xcd\x40\x22\x77\xfa\x9e\xe7\x8d\xbf\x1d\x26\x96\x0a\x52\x43\x8b\x52\xc8\xe8\xc2\x4e\x96\x42\x22\x52\x43\xa3\x85\x24\x85\x11\x70\xf3\xa2\xd4\x40\xa8\xbd\x8a\xef\x65\x7c\xba\x8e\x48\x77\x02\x0d\x31\x92\x48\x4e\xf5\x3b\x32\x5e\xe8\xc7\x50\x9f\x90\xfb\x61\xba\x2d\x0d\x08\x17\xf3\x38\x25\xb0\x63\x2b\x7a\x10\x4e\xfc\xe8\x57\x1a\x21\x94\x32\x0e\xf2\x52\x48\xbd\x0d\xd1\x32\xca\xc7\x14\xe4\x83\x77\x7a\x90\x31\xae\xff\xf0\xfb\x07\xee\x4c\xa1\xc8\xc4\xc2\xe0\xc5\xe3\x67\x65\xcb\xef\xd9\xfa\x5c\x6f\x3b\xdf\xb6\x67\x79\xcb\xf9\xac\x71\xaa\x8f\x99\xd6\x29\x50\xad\x26\xe2\x7d\x7d\x5b\xa5\x04\x3e\x19\xf3\xbb\x3c\xf7\xd6\x86\x2b\x98\x80\x04\x9e\x38\xda\xf4\x5d\x39\x06\xc9\x41\x83\x0a\x04\xe9\x45\xe1\x28\x8d\x91\x05\x97\xd9\xdd\xd3\x70\xb9\x47\xe4\x19\x7f\xdb\x23\x52\x8d\xbf\xed\x31\xd9\xc6\x8e\x5d\xd8\xe6\xe3\x48\x67\xc7\x4e\x34\xf6\x71\x04\x6c\x31\xe9\x7c\xbd\x39\xa7\xc3\xbc\x46\x27\x7e\x06\x12\xde\x75\x63\x19\x0d\xf9\x6e\xc2\x20\x4b\x09\x33\xc2\x9b\x59\x2c\x19\x67\x22\xb9\x75\x76\xcb\xab\x53\xa2\x84\x15\xf7\x8c\x84\x6f\x18\x6d\x22\xb8\x2a\x73\x20\xec\x31\x0c\x8e\x22\x5d\x14\xe9\xa2\x48\xf7\x52\x44\x3a\xeb\x1f\x78\x0e\x94\x6a\x69\x21\x1b\x69\x15\xde\x17\xa9\xd5\x43\x23\x52\x2b\x1c\x91\x5a\x3d\x32\x5e\x1c\xb5\xda\x4a\x4e\x7b\x74\xae\xc7\x0e\x72\x34\xa6\x46\x63\x6a\x34\xa6\xba\x11\x79\x99\x1b\x91\x97\x45\x5e\x16\x8d\xa9\x0f\x4d\x19\x8d\xa9\x3b\x4e\x14\x8d\xa9\xd1\x98\x1a\x8d\xa9\xd1\x98\xfa\xd8\xc7\x44\x91\x2e\x8a\x74\x51\xa4\xdb\x76\x31\xd1\x98\x1a\x8d\xa9\x0f\x8d\x48\xad\x82\x11\xa9\xd5\x03\xe3\x75\x53\xab\xee\xc6\xd4\x24\x03\xca\xd7\x2b\x55\x4b\xf1\xdf\x78\x1f\x8a\x46\x6c\xc2\x5c\x1e\x84\x7b\x9a\x8c\x61\x46\xe7\x4c\x94\x92\xdc\xcd\x80\xfb\x94\x1d\x32\x05\xad\x0c\x16\x80\x86\x75\x82\xf9\x23\xb4\xe6\x61\xfa\x32\x24\xc0\xe9\x38\x5b\x3b\xf1\x63\xa4\xc4\x3d\xf9\xb0\xf1\x78\x2c\x84\xf9\xba\x55\x88\xa1\xaa\xe3\x35\x9d\x5d\xe2\x99\xf7\x36\xe5\xd8\xad\x0f\x6a\x3e\xb9\x3a\xed\x2b\x94\x99\xfc\x8d\x93\xf3\x6a\x56\x82\x96\x69\x4c\x94\x30\x3c\xc4\xfc\xfa\xf1\x8e\x43\x8a\x49\x6e\x03\xc2\xb4\xb9\xc1\x1c\x7a\x96\x30\x9d\x2d\xaa\x17\x8f\xf6\x76\xdf\xc4\x67\x14\x12\x7d\x72\x75\xba\xbd\xf9\xde\x6f\xc0\xe7\xb0\xd4\x47\x3b\x7c\xb4\xc3\x57\x23\x8a\x41\x2d\x27\x8d\x62\xd0\x03\xe3\x75\x8b\x41\xcf\xdd\x6e\x1d\xad\xcd\x24\x5a\x9b\x1f\xbe\x2d\x5a\x9b\xa3\xb5\x39\xda\x6f\x36\x8c\x28\xb8\xe0\x88\x82\xcb\x23\xe3\xc5\x09\x2e\xd1\xda\x1c\xa9\x55\xa4\x56\x91\x5a\xbd\x0c\x6a\xf5\x12\x43\x77\xa3\xd1\x2f\x1a\xfd\xa2\xd1\x2f\x72\xa3\xc8\x8d\x1e\x19\x2f\x8e\x1b\x45\xa3\xdf\xae\x13\x45\xa3\xdf\xda\x11\x8d\x7e\x8f\x8c\x68\xf4\x8b\x46\xbf\x0d\x23\x0a\x2e\x2d\x27\x8d\x82\xcb\x03\xe3\x75\x0b\x2e\xd1\xe8\x17\xa9\x55\xa4\x56\x91\x5a\xbd\x0c\x6a\xd5\xdd\xe8\xf7\xc8\x49\x7a\xf8\xd9\x87\x4f\xca\x83\xcf\xb2\xe4\xa1\x17\x6e\x82\xe8\x03\x10\x7c\x94\x70\x3d\x46\xae\x86\x64\x4c\x15\xfc\xe9\x8f\x2b\x75\xcb\xc3\x5b\x72\x48\x19\x35\xaf\x5a\x7b\xc7\xe3\x24\xac\x7e\xc5\xe6\x3d\xdb\x62\xef\xab\x65\xb4\x9c\xc5\x15\x56\x7e\x34\x28\xd6\x6c\x6d\x7a\x6e\x6f\xbe\xd6\x92\x6a\x98\x2e\x82\x42\xde\x68\x93\xad\x39\x0f\xdf\x50\x80\xbe\x52\x1a\xef\x66\x20\x01\x1f\xf2\xa5\xa7\x95\x9f\x94\xa9\x2a\x7a\x39\x6d\x51\xdc\xf7\xb1\x70\x64\xff\x9e\x35\x97\x1f\xdb\xb4\x75\xd5\xb7\xd7\x02\xcb\x03\xe8\xd4\x5a\xaf\x4f\xab\x14\xe0\x65\x88\x15\x54\x1a\x0a\xe9\xad\xdc\xc8\xb4\x83\xbb\x97\xe0\xbd\x89\x28\x6e\xc1\xa9\x1f\xe7\xd0\xc3\x20\x53\x79\x93\x65\x7d\x1b\xc6\xec\x7a\x60\x5c\x82\xcc\x99\x52\x9b\x02\xae\x9b\x4b\x7f\x8c\x6c\x6e\x41\x2e\x37\xc0\xdf\x7f\x51\xb0\x9c\x4a\x7c\xc2\x1d\x90\x63\x9a\x10\x59\x66\x46\x98\xe2\x29\x71\xe5\xaf\x09\x4d\x12\x51\x72\x4d\x38\x40\x6a\x2d\x1b\xeb\x70\x75\x0b\x62\xbb\x85\xfc\xb4\xad\xf4\x34\xb4\xeb\x7c\xf4\x2e\xf7\x0d\xc7\xf6\x13\xd6\x16\x54\x0f\xc7\xf6\xd2\x16\xbe\xfe\x71\xae\xb5\x0b\x2b\xdc\x9a\x11\x36\xf6\xf7\x52\x64\x2c\x59\x5c\x95\x19\x90\x99\xc8\x52\x85\x65\xfd\x0d\x77\xaf\x1c\x0e\xa1\x88\x5c\xe0\xdd\xb8\xfa\x01\x19\x97\x9a\xa4\x02\x14\xe1\x42\xfb\xc2\x00\x8d\xc7\xad\x8b\xe9\x6e\x66\x5b\x3b\x98\x87\x08\x2d\x8a\x0c\x53\x29\x84\x11\x5a\xee\x66\x2c\x99\xd9\x7e\x35\x05\x4d\x60\xdd\x6d\xdb\x4b\x2f\x5b\x89\xd7\x64\x27\x11\x9b\x78\x9b\xd5\xf8\x31\x54\x21\x3b\xca\xda\xc4\x96\x88\xff\x56\x8a\xb2\xd8\xf2\xf6\x55\xcb\xa2\x7d\xda\x50\x79\xbd\xd4\xc0\xc6\x5f\x74\x2e\x23\xbb\x37\xf6\xb6\xca\x24\x3a\x22\xe4\x7c\x42\xf2\x32\xd3\xac\xc8\xf0\x11\x5b\x6d\x40\x11\x2a\xa1\xe6\x1b\x03\x42\xf9\xc2\x7b\xa0\x5c\x9b\x08\x48\x09\x9d\x9a\x19\x35\xf6\x87\xf1\x25\xe9\x79\x99\x83\x39\xcd\x69\xfd\x12\x54\xa7\xf8\xa2\x9e\x9d\xdc\xb1\x2c\x33\xf2\x2c\xcd\x32\x71\xb7\x9e\x2d\xad\x1b\xbb\x09\x85\x64\x37\xc1\x90\xec\x2e\x02\x13\xc2\x05\xf7\xa6\xdd\xef\xaf\xde\xb7\xdb\xc4\x8b\xe6\x1c\xae\x17\x08\x68\x03\xd2\x82\x4a\xcd\x68\x46\x4a\x99\x29\xbb\x8f\xd4\x28\x01\xd2\x37\x53\x99\x51\xf4\x0c\x26\xa0\x6c\xd7\x0e\xf2\xaf\x76\xe7\x1c\x60\xed\xf9\x14\x3c\x5b\x10\x6a\x77\x7e\x52\x66\xd9\x80\x4c\x18\xa7\x86\xec\x42\xe1\x33\x61\x8c\xfe\x44\xae\x19\x4f\xc0\x7c\xd3\xb0\x12\x2c\x70\x45\x66\x46\x73\xbe\xab\x43\x9a\x0e\x5c\x5b\x11\xab\x2d\x2b\xf7\x0a\x73\x60\x13\x3a\xce\x00\xfb\x5a\x38\x91\xe5\x4a\x64\x68\xde\x76\x86\xef\xd4\xf6\x22\xa1\xe1\xe5\xff\x62\x1c\x95\x14\x72\x85\x8c\xc3\x28\x3b\xc0\xf4\xcc\xe8\x3e\x45\x91\x2d\x0c\xa1\x30\xb8\x53\x23\xd4\x81\x2a\x93\x99\xf9\xa4\xbd\x42\xa4\x6a\xcf\x90\x91\x3d\x05\x89\x04\xad\xf6\x0e\xcd\x5f\xcb\xdf\x80\xdf\x17\x3e\x77\x44\x0b\xb6\x77\x38\x20\x08\x20\x6c\x74\x22\xf4\xec\xe5\xe2\xa1\xff\xd6\x46\x7f\xad\xc7\x46\x53\x6b\x0d\x67\x70\x5d\x3b\x44\x61\x9b\x60\x18\x1a\xad\x01\xf3\xa4\x0c\x52\x22\x1a\xf8\xf6\x50\xab\xc4\x9a\x90\x63\x4e\x20\x2f\xf4\x02\xb1\x38\x07\xca\xdd\xdd\x30\x07\xb9\xd0\x33\xa3\xad\x32\xf5\xf2\x0f\xff\x96\x8e\xa5\x7a\xac\x05\xb8\x3b\xf0\x1e\xb8\x35\x92\xdb\xce\x4a\xcb\xc0\xdd\xff\xd7\xfd\x50\xea\x35\xe2\x53\x4d\xcd\x5f\x2c\x28\x91\xbd\xb6\x02\xe3\x0f\xe6\xc9\x26\x08\xed\x4f\x96\x5a\x56\xf4\xe3\xfd\x7b\xdb\x45\xc9\xc1\xea\x3b\xc6\x53\x2b\xa2\x1e\x6b\xdb\x9e\x08\xae\xc0\x2c\x38\xb1\x99\x89\xbe\xc6\x51\x6a\x09\xa4\xdb\x89\xb5\xe0\xc7\xb5\xbf\x44\xd0\xaf\x0a\xb6\xdb\x0a\xa3\x8f\x4c\x1f\x68\x3e\xcf\x41\x59\xc1\x7e\x4d\x0d\xf9\xc7\x50\xb0\x81\x75\x46\x19\x14\xc8\xe8\x18\x32\xdb\x8c\xc9\x5c\xad\x97\x4f\x8e\xdf\x7f\xa8\xfa\x96\x49\xa0\x8f\x58\xba\x3e\x81\x8a\xb2\x85\x4b\x75\xa5\xfb\xdb\xea\xd8\x5e\x2a\x45\x50\xec\x66\x26\x26\xd7\xa0\xed\x01\xcc\x69\x61\xce\x9f\x9d\x63\xad\x95\xf3\x3d\x42\xfa\xf1\xc3\xb2\x93\x34\xbf\x7d\xb7\xa6\x75\x2f\xd9\xea\xa8\x6c\xe7\x0b\xde\xe5\xec\x3d\x60\xfb\xa8\x47\x03\xcc\x4b\x08\xed\x24\x7e\x27\xa3\x27\x55\xe7\x3d\x8b\xc1\xca\xa6\x4c\xdb\x04\x75\xe9\x7f\xaf\xa7\xe8\x79\x0b\x76\x51\xa7\x8c\x46\x9d\x41\xa2\xc5\xc3\x05\xe1\xfc\xcd\x1a\xf2\x22\x7b\xec\xe4\x91\x9d\x55\xaf\x9c\xf1\x2b\xa0\xe9\xe2\x1a\x12\xc1\xd3\x2d\x09\x6c\x63\x3f\x3e\x30\xce\xf2\x32\x27\xbc\xcc\xc7\x80\x20\x56\x76\x2e\x24\x24\x56\xad\xa5\x84\xc3\x5d\xb6\x70\xc4\x23\x25\x85\x48\x3d\x3d\x19\x1b\x35\x8c\xa6\x0b\xec\x7c\x86\xa5\x53\xf9\xc2\x4c\xc2\x74\xcd\x7d\x24\x49\x24\x55\x46\x60\x1a\xe0\xa4\x4c\x1b\x5e\x36\x06\xf4\x3a\xb1\x14\xcc\x1e\xd3\x39\x65\x99\x11\xba\x47\xe4\x14\x26\xb4\xcc\xb0\x81\x1f\x79\x43\x0e\xcc\xcb\xbc\xa6\xb5\xee\x01\x23\x08\x2b\x61\x74\x74\xe5\xb2\xdf\x71\x41\x87\x3b\xd8\xd1\xb7\xa9\xec\xe7\xc7\xb6\x15\xfe\xfc\x28\x68\xa9\xb6\x55\xd0\x1b\x1b\x73\xce\x53\x73\x1e\x42\x19\x35\x20\xe9\x4c\xb9\x99\xb7\x63\xd9\x0f\x57\x45\x58\xb3\x6a\x29\xa6\x12\x94\x3a\x05\x9a\x66\x8c\x43\x7b\xfc\xba\x99\x01\xc9\xe9\x3d\xe2\x98\x66\x39\x18\x49\x24\xc4\x30\x1a\x7e\x95\x16\x24\xa7\xb7\x50\xbd\x9e\x8c\x61\x82\x0d\x1a\xf1\x83\x83\xdd\xb7\xf8\x33\xa1\x2c\x83\x74\x84\xef\x08\x66\xa9\xfb\x1a\x5b\xc4\x31\x7f\x33\x5e\x82\x79\xaa\x90\x02\xd5\x4c\xfb\x68\xc8\xe3\x91\x87\x52\x73\xb3\xa5\xc3\xbe\x97\xdf\xe5\x12\x28\xce\xee\x13\x6b\xfe\x93\x40\x15\xde\x66\x71\x53\x95\x72\x62\x94\x4a\xaf\x8b\x06\x0b\x72\x4d\x60\xc9\x85\xd0\xae\x25\x60\xf5\x81\xf8\xb4\x6b\x51\x09\x4a\xb3\x1c\x0f\x58\x5a\x4a\xdf\x30\x13\x61\x46\xd7\x6f\x7d\xe3\xa8\xfc\xe9\xcd\x9b\x2d\xe5\xb7\x4f\x8f\xf4\x12\x50\x87\x6e\x83\x2f\x17\x15\x1d\xf2\xe4\xdf\x28\xc7\x66\x8f\x99\x13\x90\xb1\xf3\x27\x48\xf4\x20\x32\xa5\x19\x9f\x96\x4c\xcd\xc8\x18\xf4\x1d\x00\x27\x70\x6f\x6b\x5f\x90\x7f\x82\x14\xb8\xa9\x06\xbc\xb5\xf3\xa0\x01\xb4\xb7\xcf\x07\x62\x73\xa6\x98\xe0\x7f\x61\x4a\x0b\xb9\x78\xcf\x72\xf6\x48\x51\x52\x3f\x56\xfb\x1f\x57\x10\x14\x59\x8a\x5d\x8b\x59\x42\xaf\xc1\x7e\xb0\x04\xb4\x6d\x6a\x61\x15\x57\x62\xce\xc9\x98\x26\xb7\x9f\x0c\xc0\x6f\x9e\x0b\x84\x3d\xbb\x6e\x01\x55\x94\xf7\xaa\x09\x90\x6c\x59\xa4\x3c\xbb\xb7\xf0\x69\x40\xf9\x6e\x26\x14\xe0\x0d\xd6\xfc\x88\x8f\x79\x77\x01\x53\x15\xc1\x30\xa7\x5b\x70\x50\x84\x4e\x26\xcd\x3b\xea\xc3\x8e\x92\x67\x5e\x2a\x4d\x72\xaa\x93\x99\x35\x72\x89\xb4\x12\x27\xf6\x95\x13\xfb\x77\x81\xf2\xd6\xe6\xe5\xdd\x0d\xc1\xc4\xae\xf3\xec\xde\xe8\x96\x8f\xfa\x79\x9a\xa3\x01\xf2\xe5\x69\x9a\xba\x71\xd6\xdc\x10\x27\xb7\xe5\xb6\x79\xf0\x0d\x9a\x86\xeb\x5f\x70\x17\x8e\x2f\x4e\xb7\x37\xd2\xb4\x51\x70\x77\x56\x71\x97\x8d\xe0\x0f\x7c\x94\x37\xa6\xba\x2b\x4d\x4b\xb8\x6d\x1a\x3d\x20\x94\xdc\xc2\xc2\xf6\x97\x5e\x69\xd8\x2b\x21\x73\x92\x04\x60\xdf\x5a\x73\x93\x6b\x36\xbd\xc3\x7a\x77\xc6\x1e\x3b\x76\x73\x52\xf8\x31\x34\x0b\xdd\xf1\x09\xff\xd1\x3b\x3c\xb6\x3b\x82\xdb\x71\x0b\x8b\xdd\x1e\x58\xda\x6e\xb3\x0b\x4e\xf7\xb1\xfb\x6e\x7e\xa8\x04\xbd\x6a\xab\x77\xf3\x1e\x85\x63\x67\xe3\x95\x1f\x1e\x88\x9d\x3e\xaf\x42\xbf\xd0\xca\x64\xbe\x71\x5f\x59\x64\x34\x67\x7a\xc6\x0a\x64\x44\xde\x4d\xe0\xdb\x9f\xff\x40\x33\x96\x56\x53\xd8\xf3\x7b\xce\x07\x46\x7c\x32\xff\x41\xa2\x6b\xc5\xb5\x53\x01\xea\x42\x68\xfc\xe5\xb3\x01\xc8\x2e\xb3\x13\x78\xec\x14\xce\x3e\x8d\x54\x06\x15\xaf\xa0\x73\xba\x1a\xf9\x9a\x5f\x15\x28\x99\x22\xe7\x9c\x08\xe9\xe1\x80\xbd\xec\xed\x44\x76\x0a\xe4\x13\x63\xeb\xfa\x40\xcb\xf5\xda\x39\x1c\xf8\x84\x6c\x40\xef\x81\xe9\xdc\x54\x28\x1f\xd8\x2b\xb6\x57\x7e\x86\xd2\xae\x13\x55\xa9\x77\x7f\xb3\x84\xe4\x20\xa7\xe8\x8b\x49\xb6\xf6\x45\x34\x37\x65\x37\xba\x6b\xc7\xce\xd4\x37\x7c\xe1\x4e\x58\x80\xac\xc9\x9a\x80\xba\x30\x37\x3b\x43\xc3\xe4\xf4\x7f\x0c\x05\xc7\x3d\xf8\xbf\xa4\xa0\x4c\xaa\x11\x39\x26\x8a\xf1\x69\x06\x8d\x6b\x4e\xc3\x08\xa7\x31\x33\x30\x45\x0c\xa9\x9d\xd3\xcc\xe9\x52\x94\x13\xb0\x36\x2b\x33\xfb\x32\x4b\x1d\x38\x49\xc5\x50\x9e\xca\x05\xb6\x77\x0b\x8b\xbd\xc1\x0a\xd2\xec\x9d\xf3\x3d\xcb\x5b\x56\xd0\xa4\x62\x44\xe8\x3d\xdb\xc3\x6b\x7b\x7d\x72\xe1\x1d\x19\x4e\x5b\x3b\x5a\xf3\xa5\x5b\x63\x84\x8f\xfa\x68\x29\xac\x37\xb4\x44\x17\xeb\xa4\x05\x29\x15\x58\x69\x1d\x4f\x19\x01\x2f\x67\xa2\x54\x89\x8a\x29\x87\x3b\x94\x1e\x9f\x8d\xe0\x67\x34\x09\xc6\xa7\xdf\x17\x29\xd5\x5b\x85\x9b\xda\xd1\x80\xc8\xfe\x95\x9d\x84\x94\x38\x8b\xc1\xad\x09\x9b\x92\x82\x4a\x9a\xab\x11\xb9\x74\x75\x0f\x11\xd3\xd8\x24\xb4\x25\x3a\xd8\xdd\x2c\x0a\x20\xff\x0f\xb9\x0a\xd7\x32\x22\xc3\xe1\x90\xdc\x7c\x3c\xfd\xf8\x8e\xd8\x5f\xac\x94\xad\x05\x99\x08\x54\x82\x44\x29\xcd\xab\xe6\xc0\x51\xf1\x37\xf2\xbd\xe0\xf0\x71\x62\x4e\x08\xd5\x30\x07\x49\xee\xcc\x56\x25\x2c\x85\xca\x7a\x35\xda\xff\xb4\x78\xdc\x4e\x32\xc9\xe9\xfd\x75\x29\xa7\x3b\x6c\x00\x59\xd9\x84\xd0\x64\x53\x2b\x93\x88\x7a\x61\xde\xae\x4a\x66\x90\x96\x19\xa4\x84\x8e\xc5\x1c\x1a\x26\xdb\xe6\x63\xc8\xd2\x4b\xf0\x0f\x1a\x9e\x37\x56\x22\x2b\x75\xa5\xac\x1e\xc0\xfd\x3b\xf2\x6f\xe8\xf4\xa6\xa4\x00\x99\x00\xd7\x74\x0a\xcb\x66\x00\x7b\xdf\xdb\x37\xff\x72\xe8\xf8\x91\x99\xd1\x59\x4f\xde\x18\x8c\xf8\x40\xef\xbf\xe7\xb5\x69\x90\x29\xf2\x66\x44\x8e\x97\x5e\x86\xcf\x65\x49\x99\xa1\xad\x05\x1d\xf9\xc1\x2b\xc7\x0b\x22\x45\x89\xae\x7c\x52\x16\x4d\x6d\xf6\xf7\xff\xf6\x2f\x46\xe9\xa3\x79\x91\xc1\x3b\x5f\x2e\xd5\xaa\xcd\x46\x86\xd1\x82\xfc\xe1\xcd\xbf\x58\xea\x69\xce\x67\xad\x15\xd6\x30\xa3\x06\x60\x65\x41\x58\x6e\x83\x34\x21\x5b\xd4\x75\x57\x65\x13\xfd\x95\xa6\x52\xab\x01\x41\x7f\x7f\x25\x1c\x6a\xa1\x69\xb6\xa4\xe5\xa3\x16\x0e\x77\x16\x48\xa9\x40\x98\x00\x1a\xaa\xc8\xdb\x3f\xbc\xf9\x97\x55\x73\xca\x47\x9e\x00\x3e\x89\x4f\x60\x00\xc6\xd8\x28\xf7\xb7\x2c\xcb\x20\x1d\x3c\xba\xfc\x49\x29\xf5\x0c\xe4\x80\x00\x57\xde\x58\x65\xd6\xb7\xb4\x36\x9c\x5d\x96\x9c\xa3\x8c\x60\xad\xc3\x68\xd1\x0a\x2c\x5c\xee\x63\x0d\x23\xd4\x24\x17\x4a\xaf\x5f\xf2\xf6\xc7\xcd\x0c\xca\x17\x1f\x27\xbb\x8a\x03\xc3\x16\x66\x88\xd5\xa7\x5b\x88\x94\xf7\xc3\xdb\x2a\x87\x72\xc8\xb8\x1e\x0a\x39\xb4\xd3\xbc\x23\x5a\x96\x8f\x7b\x0d\xea\x91\x37\x4e\xc0\x67\x20\x03\x65\x70\xde\x56\x76\xf5\x93\x9c\xfc\xf6\xe7\x39\x15\x77\x7c\x33\xe5\x40\xc2\xe9\x68\x46\xcb\x53\xdf\xb4\xb8\x2d\x1d\x1b\xf3\x76\x73\xf7\xff\x6f\x15\xbb\x77\x20\x07\xee\xec\x56\xa7\xdd\xc8\x55\xe8\xf1\x18\x6c\xf1\xf6\xea\xd8\x5a\xce\x67\x6d\x4e\xe6\x06\xfb\x9a\x35\x94\x6b\xe5\x84\xaf\xa1\x40\x76\x1d\xb5\x43\x46\x63\x44\x81\x39\xe7\x6a\xe3\x41\xcf\x80\x2a\xbd\x0e\x14\xf1\xa0\x3f\x3e\x1e\x0e\xed\x5f\x1e\x4d\xa1\xd3\x48\x48\x08\xf2\xda\xc6\x78\x62\x11\x65\xef\x0a\xac\x87\xcf\x86\xa2\x35\x84\xa8\xbd\xea\x48\x98\xfd\x6b\xca\x57\x9f\x2a\xa0\xc6\x1b\x39\xdb\x88\xd6\xee\xd1\x20\xe4\xd7\x99\x4e\x1d\xf1\xaa\x3c\x8a\xd6\xa5\xf9\x6c\xa4\xe8\x1c\x34\x7d\x38\xfd\x63\x79\x34\x89\xf6\xb5\xa6\x3c\xa5\x32\x75\xab\xdc\xdf\x57\xd5\x94\x23\xf2\x01\x7d\x69\x7c\x22\xde\x91\x99\xd6\x85\x7a\x77\x74\x34\x65\x7a\x74\xfb\xef\x6a\xc4\xc4\x51\x22\xf2\xbc\xe4\x4c\x2f\x8e\xd0\x81\xc6\xc6\xa5\x16\x52\x1d\xa5\x30\x87\xec\x48\xb1\xe9\x90\xca\x64\xc6\x34\x24\xba\x94\x70\x44\x0b\x36\xac\x65\x66\x35\xca\xd3\x2f\xfc\x8b\x3e\xb1\x60\xdc\x38\x43\x68\x5d\x92\x73\x18\x96\xfc\x96\x8b\x3b\x3e\x44\x4d\x56\xed\x74\x9a\xb6\x8b\x62\xf0\x63\x09\xde\xbb\x04\x2e\x14\x22\xfd\xe4\x9b\x60\x3e\x66\x48\x79\x3a\xb4\x4e\xc7\x4f\xbc\x17\x6d\x6c\xbb\xc3\x3a\x30\x60\x9b\x58\x74\x3b\xda\x69\x43\x34\xd1\x6c\x0e\xad\x9c\xd8\x7e\x34\xb6\xfb\xa3\x0f\x25\x4d\x4b\x69\x77\x3c\xf0\x66\x7b\xdf\x4c\x4e\x17\x28\xeb\xe0\xbb\x89\xb0\xac\x9c\x8b\x14\x9c\xe5\x73\x8e\xaa\xfd\xb5\x61\xe6\x37\x46\x14\x76\x3e\x6e\xb4\xfb\x2e\x94\x86\xdc\x12\x27\xfb\x7c\xb6\x20\x5a\x2e\xac\x63\x5c\xde\x1a\xe5\xd3\x79\xae\x8d\xc4\x7f\x8b\xf7\x29\x25\x12\x86\xa2\x4f\x0d\x57\x2f\x77\x79\x1b\x1e\x25\x85\x50\x0c\xdf\xed\x78\xde\x6e\x96\xb9\xf6\xec\x32\x70\xd3\xfd\xe9\x8f\xbb\x6c\xdd\x04\x1b\x2c\xec\x68\x65\x6f\x46\x50\x4c\xc2\xd8\x7f\xb7\x3d\xfb\xca\x2b\xae\x46\x2c\x49\x04\x57\x5a\x52\xb6\x39\xbb\x69\xfd\x68\xe9\x0a\x69\xef\x6f\x20\x88\x41\xc7\xad\x80\x42\x56\x63\xb0\x3c\x53\x44\xb4\xf4\xa0\x0e\x01\x63\x93\x9f\x7c\x2c\xa1\x21\x5c\x2d\x4d\xab\x2d\x60\x44\x3a\xc1\xc9\x3e\x0d\x13\x90\x12\xd2\x53\x94\x3e\xaf\xab\xef\x3a\x9f\x72\x51\xfd\x7c\x76\x0f\x49\xb9\x6d\x8e\xf8\xea\x58\xb1\xe5\x79\x83\x88\x0b\x3b\xb1\x8b\x30\x47\xd7\x5f\x70\xf2\x87\x40\xb0\x3b\x41\x44\x51\xcd\xd4\xc4\x66\x92\x55\x1b\x01\x81\xe3\xb3\x42\xe1\xca\x3d\x8c\x2c\xce\x26\x45\x30\x8d\xe4\x26\x99\x09\xa1\xcc\x29\xc7\xfd\xc4\x79\xe7\x4c\x58\x9f\x1f\xa6\xb5\x48\x92\x1b\x1a\xe3\xd3\x5b\xea\xe9\xad\xa1\xb6\x7e\x8c\x29\xab\x82\x57\x10\xf4\x5e\x2a\x33\x0d\x1a\x1e\xcd\x1f\x53\x94\x9a\x94\x26\xaa\xcc\xcd\xa4\x77\xc0\xa6\x33\xad\x06\x84\x8d\x60\x84\x58\x03\x34\x99\x05\xd3\xe6\x00\xba\xd1\x1f\x25\x44\xb5\xd0\x4a\x7c\x50\xe5\x3b\xb8\x04\x9d\x41\xc5\x63\x96\xf7\x72\x2d\xb8\x06\x04\x74\x32\x3a\x1c\x90\x3a\x85\xdc\xac\x71\xbc\x20\x4c\x83\xa1\xd9\xa8\x8b\x48\x51\x4e\xed\x97\x80\x8f\xe9\xc4\x75\x55\xc9\x20\xe8\x45\x4d\x51\x67\xdc\xb3\x1f\xb7\x67\xf6\x0d\x57\x5e\xe6\x46\x5f\xac\x88\x3a\x9a\xd5\x7d\x4b\x1d\x21\x25\xa8\x42\x58\x6d\x73\xd9\xe0\xfe\xff\xaf\x1e\x3a\x50\x87\x35\x30\x67\x6c\x3a\xf3\xb0\xa4\x8e\x11\x34\xf7\x60\xf7\xb3\x47\x3a\xf9\x52\xec\x68\xe9\x51\xb1\xa3\xe9\xdb\xf6\x99\x14\x35\x56\x05\xfb\xaf\x41\xe6\x15\x14\x11\x45\x90\x64\x38\x3b\xb7\x6f\x65\xe3\x70\x8c\xbc\x21\x07\x88\x64\x4c\xef\x2b\x44\xf8\xa1\x28\x0e\x47\xe4\x98\xf0\xb2\x3a\x73\x0f\xbd\x80\x8b\x6a\x7e\x37\x91\x79\xa9\x12\xf5\x5c\x2d\xbf\xb8\x13\xb9\xb3\xa3\x9d\xa7\x3c\x1c\x43\x07\x01\x78\xbc\x60\xe2\x43\x93\x58\x58\xb7\x9c\xa0\x1b\xe9\xf6\x73\xf8\xaf\x68\x3f\xc7\x4a\x80\x05\x1e\xd7\x3a\x8a\x02\x64\x3e\x08\xa5\xa7\xea\x40\x36\x4f\xb1\x85\x45\x5b\xac\x20\xfd\x60\x06\xe9\x09\xae\xa4\x53\x84\xce\xfa\xb1\x1c\xc6\xe2\xf3\xab\x1a\xd0\x6e\x10\xf9\xf1\x02\xaf\xee\x18\xbc\xb4\x79\x74\xa5\x74\xf5\xe8\x44\xf3\xea\xf1\x20\xe2\x3d\xbf\xc0\x9e\xf5\xa3\x27\xb4\xb5\xa3\x3b\x69\xab\xc7\xee\xa1\x41\x9b\xe6\x69\x11\x30\xb4\x7e\xf4\x75\x36\xed\x68\x11\x5c\xb4\x7e\xac\x88\xa8\x9f\x26\xd6\x68\xfd\x68\x6d\x24\x5d\x3f\xda\xc6\x25\xad\x1f\x4b\x49\x8c\x9f\x28\x48\x69\xd0\x8c\x50\x22\xdf\x6a\x7b\x8e\xdf\x77\xe2\x27\xf5\xe8\x19\xc4\xed\x22\x9b\xd6\x8f\x65\x01\xf0\x85\x44\x39\xad\x99\xea\x5b\x6d\xa6\x79\xbf\xf1\x61\x9b\xbd\xee\xe3\x74\x9c\x42\x31\x70\xa9\x33\xde\xce\x8c\x11\xd5\x85\x04\x2c\x38\x80\x61\x5f\xde\x0e\xf3\x79\x02\xab\xd6\x8f\xfe\x18\xa7\x1d\x3d\xb1\x4f\x3b\x7a\x43\x6e\x14\x78\xbe\xb1\x76\xe1\x27\x94\x75\xac\x65\x3a\xca\x3a\x51\xd6\xd9\x61\x44\x59\x67\xdb\x11\x65\x9d\x4d\x23\xca\x3a\x6b\x46\x94\x75\xa2\xac\xd3\x69\x3c\x3f\x59\xc7\x5a\xaa\x7a\x33\x98\xfd\x68\x0d\xae\xcb\x16\x32\x94\xa6\x7c\x48\x4f\xd3\x54\x66\x78\xff\xb5\x23\xb1\x37\x68\x5e\x73\x91\xea\x92\xf2\x29\x90\xb7\xc3\xb7\x6f\xb6\x4c\x07\x5c\x3f\xba\x04\xed\x84\x63\xd7\xd4\xc1\xe5\xb1\xc9\x23\xf1\xc9\xbc\x4b\xee\xa4\x56\x0e\x8f\x86\x84\xb9\xc1\x41\x54\xd5\xbb\xca\x41\x13\xaa\x1b\x06\x71\x96\x43\xe5\x10\x6d\xa4\x20\xd7\x31\xbd\x82\x3b\x7f\x87\xd9\xd4\x51\xbb\x15\x24\x40\x6d\x1c\xfb\x18\xaa\x55\x88\x1c\x6c\x82\xa9\x3f\xf4\x66\x09\xe0\x61\x45\x0e\x60\x34\x1d\x91\xd4\x26\x6b\x53\xee\x62\xc6\x0e\x07\xa1\x7b\x3c\x37\xc4\x55\xe2\x7f\xcc\xb2\x9d\x7f\x1c\xe6\xc0\x75\x49\xb3\x6c\x41\x60\xce\x12\x5d\x7d\x1f\x06\x04\x32\x6d\x9d\x9d\x5d\x5c\x29\x1d\xc4\xc3\xae\x22\xe1\x70\xe5\x6c\xed\xe6\xaf\xf6\xa3\xbb\xec\xb6\xb2\x8e\xf6\xf4\x66\x49\x2e\xb1\x10\x1a\x6d\x54\xab\xb4\x79\x9b\xf5\x57\xe2\x3f\x11\xc1\x3f\x5e\xb5\x75\x8f\x91\x9e\x78\x42\x67\x3e\xb0\xac\x40\x95\x59\x66\xd0\xdb\x7a\xcc\x56\x41\xb0\xc6\x93\xb5\x26\xdb\xc6\xba\x59\xf3\x20\xeb\x06\xef\xb9\x11\x85\xc8\xc4\x74\x11\xee\xa0\xed\xd5\x12\x94\xb7\xa1\x44\x95\x63\x27\x02\x9a\x43\x74\xb1\xb4\xe5\xd1\x17\xb2\x71\x44\x5f\xc8\xca\x88\xf6\x81\xe5\x11\xed\x03\x3b\x8c\x68\x1f\x58\x33\xa2\x7d\x60\x75\x44\xfb\x40\xb4\x0f\x74\x19\xaf\xdf\x3e\x40\xa2\x2f\x64\xd3\x88\xb2\x4e\x3d\xa2\xac\xb3\xfd\x88\xb2\xce\xea\x88\xb2\x4e\x94\x75\xa2\xac\x13\x65\x9d\xb6\xa3\x03\x72\x17\x22\xed\x3d\x45\xa6\x10\xe9\x03\x19\x32\xd6\x5e\x9d\x88\x61\x26\x92\xaa\xb2\x88\x79\xc4\x79\x3e\x14\xcd\xad\x09\x7d\x40\xfe\x29\x38\xd8\xf4\x04\x5b\xb2\x36\x07\x22\xb0\x3d\x44\x21\xd2\x03\x75\xd8\x22\xf0\x3c\x66\xd8\xc4\x0c\x9b\xdf\x40\x86\xcd\x8c\x2a\x57\xf8\x08\x49\xeb\xe6\x84\x9b\xe0\xf8\xdf\x80\xcc\x7f\xb3\xf9\x36\x06\xe1\x1c\xc2\x60\xf7\xb8\x1a\x29\x2c\xec\x52\xe7\xdb\x85\xf4\xb2\x09\x31\xa7\x97\xd9\xe6\x3b\x69\x0a\x29\x29\x40\x0e\x2d\x92\x09\x32\x61\xae\xfe\xd7\x12\xfe\x3a\x08\xbf\xf0\xbc\x99\x26\x24\x5e\x74\xf2\x4c\xf3\x53\x7a\xf3\x4d\x85\x2e\xba\x06\x57\x7c\x71\xa9\x34\xfd\x68\xa5\x43\xa2\x9d\x3b\xed\xbb\x4e\x7a\x69\x5f\x4a\x24\x2a\x79\xd7\x3b\x95\x39\xde\x3c\xd6\x16\xa7\xfd\x47\x09\x72\x41\xc4\x1c\x64\xad\x18\x55\x7d\x7b\x06\x55\x93\x99\x84\xba\x02\xc8\xfd\x18\x78\x7a\x31\x45\xf4\xa9\xa9\xf7\xed\x35\x24\xcf\xac\xfa\xf1\xe6\xd1\xaf\xe2\xd0\xa3\xda\xf0\xd2\x6a\x29\x6f\x1e\xbd\x9a\xdf\x48\xcf\x26\x38\xd2\xa3\x19\x8e\xf4\x6b\x8a\x23\xbd\x9b\xe3\x48\x9f\x26\x39\xf2\xd9\x2b\x40\x6f\x1e\x3d\x9b\x8f\x48\xef\x56\x3a\xf2\x02\xeb\x49\x6f\x1e\x9f\x00\xdc\x7d\x5a\xec\x48\xac\x4e\xdd\x79\xf4\x6d\x50\x23\x7d\x1b\xd5\x48\xdf\x78\xd8\xaa\x0a\xf6\xe6\x11\xeb\x63\x7f\x02\x39\xad\x37\x21\xa2\x6b\x4d\xed\xc7\x16\xda\x03\x4e\x56\x5d\x7d\x3f\x97\x02\x64\xb9\x74\xdd\x4a\xd6\xbc\x3b\xe8\xd5\x85\xa1\x9a\x61\xcb\x53\x1f\xb7\x8a\x18\x8d\xbf\xa7\xde\xe0\x55\xf2\xa0\x78\x5c\x30\xd9\x4a\xeb\x98\xda\x74\x56\x35\x8f\x31\x4a\x41\xdd\x74\x2a\x78\x18\xef\x1d\xd9\x70\xd2\x5a\x9a\xe0\xe9\x72\x80\x69\xfd\x04\xea\x17\xb6\xd1\xed\x9e\xb7\x63\xef\xab\xfa\x8e\xbd\x51\xd8\x13\xd7\xcd\x78\xf0\x7f\xfe\xef\x61\xa3\x7a\x4b\x3d\xa1\xa3\xca\xd5\xd9\x19\x83\xa6\xc3\x0c\xe6\x90\xe1\x3a\x7c\xc3\xe5\x99\x40\x8b\xb1\x2d\x7b\x1a\x18\xa4\x2e\x96\x77\x94\x4c\x80\xea\x52\x62\x05\x51\xe0\x74\x9c\x75\x3f\x2b\x51\xc1\x8c\x0a\xe6\x76\x23\x2a\x98\x1b\x47\x54\x30\x3b\x8c\xa8\x60\x6e\x37\xa2\x82\xb9\x79\x44\x05\x33\x2a\x98\x2d\x46\x54\x30\xa3\x82\xd9\x76\xfc\x86\x15\xcc\x7e\x03\xa7\x43\x75\xcf\xc5\xa1\xa0\xfc\xa8\xa9\x66\x49\x1d\x54\xed\xef\xb2\xff\xea\x57\xcd\x0c\x55\xc8\xf5\x4a\x66\xa8\x88\xae\x28\xda\xa3\x47\x34\xca\x4a\xe7\x5c\x79\xf2\x41\x65\xf3\xb5\xc5\x86\xf7\x86\x88\x81\xd3\xb9\x57\x4c\xbc\xf1\xa1\x6b\x75\x6b\xf7\x2a\xae\x2d\x25\x07\xde\xdb\x8f\xad\x5a\xb8\xd0\xcd\x8b\x5c\xb3\x61\x7d\x47\xe5\xff\xc7\xb0\x9d\x46\xc5\x80\x86\x93\xba\x8a\x92\xab\x22\xb0\x6a\xe4\x31\xd4\x11\x64\x63\x0d\xd8\x1a\x77\xc2\xb8\x8d\xa5\xf4\x6d\x85\x04\xf7\x61\x59\x96\x9c\x22\x01\xf4\x68\x6e\x25\x5f\x5c\x0f\x8a\xbf\x35\xec\x82\x38\x22\x8a\x67\x8c\x72\x97\x6e\x2b\xb8\xef\x7b\x6f\x7b\xd9\xd7\xe2\x72\xd5\xad\xa5\x7a\xfb\x88\x9c\x21\xd2\x87\x13\x33\x85\xf0\xa1\xb6\xc3\x4a\x3f\x26\x8a\xe7\x55\x1a\xe2\x6e\xe7\xd2\x10\x4b\x31\x29\xb1\x32\x44\xac\x0c\xd1\xa9\x32\x04\x5e\xb4\x87\xbb\xf7\x12\x11\xe4\x47\xd7\x80\x49\x02\x82\x2a\x2f\x33\xcd\x8a\x3a\xc6\x5b\xd9\x57\x65\x56\x91\x98\xb8\x58\xd3\x26\xbe\x9b\xb7\xd1\x64\xb6\x8c\xf7\x38\x1f\xc6\x84\x2b\x24\x27\x2e\x9e\x13\xdb\x25\x61\x4d\x03\xaf\x75\xd8\xa0\x55\xf6\xf2\x63\x11\x4f\x91\x60\xab\x5a\x69\xb6\xdd\xbc\x0c\x9d\xcf\x0c\x4a\x18\x8a\xfd\x00\x83\x08\x5b\x66\x60\x5c\x2c\x9b\x03\xaf\xb9\xc4\x81\x3a\x3c\xf4\xc2\x50\xaf\xdc\xeb\x93\x70\x9f\x3f\x07\x5c\xe2\x3f\xb7\xe1\x3f\xf8\x41\x15\x07\xaa\xc1\x57\xf3\x9f\x97\x1d\x74\xd9\x3d\x7e\xae\x0f\x83\x5c\x6f\x71\x73\x4f\x1e\x33\xf7\x5b\xaa\xae\xf1\x2c\x5d\x18\xcf\x4e\xeb\x78\x1d\x6e\x8b\x98\x92\xba\xfd\x78\x09\x29\xa9\x4f\xe4\x9a\x78\x39\x99\xa9\x2f\xd6\x1d\xf1\x52\x32\x53\xa3\x0b\x62\xa7\xf1\x5a\x13\x46\x9b\xa3\x47\x97\x43\x74\x37\xf4\x2c\x53\xf5\xc2\xfc\x3f\x8d\x9b\xa1\x17\xfc\xeb\x35\x7e\x2d\xc6\xae\xbd\xf2\xd8\xb5\xa8\xe8\x45\x45\xaf\x39\xa2\xa2\xb7\x32\xa2\xa2\xb7\xc3\x88\x8a\xde\xe6\x11\x15\xbd\xd5\x11\x15\xbd\xa8\xe8\x6d\x31\xa2\xa2\x17\x15\xbd\x6d\xc7\x6f\x4c\xd1\xeb\xaf\x68\x7c\x8c\x21\xeb\x3f\x86\xac\x1f\x42\xd8\x03\xf9\xeb\x05\xe9\x7a\x8a\x19\x8b\xf1\x62\xcf\x3b\x5e\xac\x63\xe9\x3c\xae\xd9\xa7\x29\x9f\x17\xee\xf6\xa6\x1a\x7a\x74\x2e\x58\x4a\x8a\x52\xbb\x0a\x62\xb1\x8e\xde\x73\xae\xa3\xd7\xd8\xd1\x58\x4c\x6f\xab\x62\x7a\x9b\x60\x16\x2b\xea\x6d\x18\xcf\x27\x8a\x2d\x56\xd4\xdb\x75\xc4\x8a\x7a\xeb\x47\xac\xa8\xf7\xc0\x88\x15\xf5\x62\x45\xbd\x58\xf0\xa0\xc3\x88\x05\x0f\xd6\x8c\x58\xf0\xa0\xfd\x88\x05\x0f\xb6\x1a\xb1\xe0\x41\x2c\x78\xd0\x1c\xd1\x09\xd5\x6d\xc4\x82\x07\x1d\x47\x74\x4c\xc5\x82\x07\x9d\x26\x8c\x15\xf5\x62\x54\xe2\xee\x23\x2a\x98\x51\xc1\xdc\x6e\x44\x05\x73\xe3\x88\x0a\x66\x87\x11\x15\xcc\xed\x46\x54\x30\x37\x8f\xa8\x60\x46\x05\xb3\xc5\x88\x0a\x66\x54\x30\xdb\x8e\xdf\xb0\x82\x19\x2b\xea\x3d\xf7\x68\x48\xf2\x1c\x53\x9e\x62\x45\xbd\x18\x21\xd9\x6a\xbb\x63\x45\xbd\xc7\xc7\x6f\xbe\xa2\x5e\x23\x5a\xef\xe9\xca\xea\xed\xbe\x8c\x58\x5b\x2f\xd6\xd6\x8b\xb5\xf5\x62\x6d\xbd\x58\x5b\x2f\xd6\xd6\xdb\x7e\x3c\x7f\x67\xc6\xb3\xd3\x3f\x5e\x87\x03\x23\x96\x5c\xd8\x7e\xc4\x92\x0b\x1b\x47\x2c\xb9\x10\x4b\x2e\x44\x67\x44\x9b\x11\x4b\x2e\xec\x38\xa2\xe3\x21\x96\x5c\xd8\x69\xc4\xda\x7a\x31\x8a\x6d\xfb\x11\x15\xbd\xa8\xe8\x35\x47\x54\xf4\x56\x46\x54\xf4\x76\x18\x51\xd1\xdb\x3c\xa2\xa2\xb7\x3a\xa2\xa2\x17\x15\xbd\x2d\x46\x54\xf4\xa2\xa2\xb7\xed\xf8\x8d\x29\x7a\xb1\xb6\xde\x73\x8e\x26\x8b\xb5\xf5\xd6\x8c\x18\x39\xf6\xbc\x23\xc7\x5a\xe2\x0a\x2d\xb5\xc8\x45\xc9\xf5\x35\xc8\x39\x4b\xe0\x38\x49\xcc\x5f\x37\xe2\x16\x76\x8c\x56\x6a\x6a\xa1\x0f\x4c\x4b\x18\x4f\x59\x82\x7a\xe4\xdd\x0c\xb0\x34\x9e\x11\x6f\xf1\x3e\x42\xed\x8d\x44\xe3\x9d\x35\x7a\xe1\x3a\x0d\x4d\xc3\x10\x1e\x9c\x7a\x57\x78\x59\x08\x8d\x85\xc8\x80\xf2\x1d\x9e\x74\xcc\x10\xe4\x8e\xa7\xb9\x01\x90\xf7\x8e\x12\xd7\x93\x91\x31\x64\x82\x4f\x5d\xc4\x90\x3b\x01\x23\x72\x52\xdf\x90\x50\x8e\x87\xa7\x94\x12\xb8\xce\x16\x08\x07\x2c\xd2\x85\x4a\x43\x2e\xe6\x90\x22\xc5\xc6\x40\x25\x2b\x46\x52\x4d\x32\xa0\xe6\x5d\x1c\xea\x97\x99\xc3\x43\xc9\x25\xce\x6f\x27\x1d\x83\x0b\x9e\x6a\x05\xc4\xdd\x69\x63\x2b\x6a\xb8\x64\xd8\x70\x52\x13\xb2\xa5\x04\xd5\xa3\xe0\x0b\xf1\x68\x2e\x44\x49\xee\xa8\x15\x94\x64\xc9\xf1\x30\xe3\xa7\x1b\xd0\xee\xf8\xf2\x0e\x22\x49\x7b\xeb\xc3\x10\xa9\xda\x8e\x8f\x75\xb1\x06\x50\x39\x6d\xc5\xa4\x1a\x5b\xb3\x7f\x2c\xa7\xa5\x95\x08\x1d\x2a\x03\xd7\x72\x81\x11\x7d\x56\xa4\x48\x45\x72\x6b\xd0\x30\xa7\x53\xd8\xdf\x57\xe4\xe4\xc3\xa9\xa1\x7d\xa5\x32\xa4\xda\x95\x09\x74\xb4\xb0\x90\x62\xce\x52\x83\xd9\x3f\x50\xc9\xe8\x38\x33\x32\xe7\x04\x24\x70\x23\x12\x7c\x79\xf0\xc3\xf1\xd5\x2f\x17\xc7\x1f\xce\x0e\x51\xfa\x84\xfb\x82\x72\x73\x24\x4a\x55\xc7\xa1\x3a\x9c\x30\x2f\x02\x3e\x67\x52\x70\xb3\x38\xd4\xd3\x28\x99\xfb\x59\x93\xea\x24\x48\x50\x22\x9b\x43\x6a\x65\xe4\xea\x6d\x9e\xe5\x30\x5e\x94\xda\xeb\x8d\x18\x1d\x69\x4e\x0f\x4f\x66\x94\x4f\xcd\x3a\x4f\x45\x69\xe6\xfb\xf2\x4b\x5c\x91\x84\xb4\x4c\xac\xd4\x44\x3d\xca\x7e\x39\xf0\x6c\xc2\x10\x7a\x65\x6b\x3a\xaa\x84\x16\x7e\xcd\xe1\x67\xa9\x05\xd7\xf4\xfe\x9d\x0d\x0f\xdc\xfb\x32\xb8\xb4\xe7\xeb\x61\x0a\xf3\x0a\xcb\x6c\xec\xaa\x32\x2c\xc5\x98\x91\xbd\xf0\xee\x11\x39\x33\xef\x80\x34\x04\xa0\x8d\xee\x84\x39\x48\xd4\x3a\x1d\xf8\x06\x44\xc2\x94\xca\x34\x03\x85\x71\x8d\x9e\x30\x5b\xcd\xc0\x01\x0c\x2a\x9d\x96\x0b\xbd\x8e\x92\x90\x0f\x02\x63\x1c\x27\xe2\x1d\x99\x69\x5d\xa8\x77\x47\x47\xb7\xe5\x18\x24\x07\x0d\x6a\xc4\xc4\x51\x2a\x12\x75\xa4\xa9\xba\x55\x47\x8c\x9b\x93\x35\x4c\xa9\xa6\xc3\xe0\x48\x1f\x59\xb6\x3d\x4c\x44\x9e\x53\x9e\x0e\xa9\x43\xad\x61\xb5\xad\x47\x5f\x38\x86\x3a\xa4\xd5\x5d\x8c\x0f\xe9\x50\xcd\x20\xcb\xf6\x5b\x20\x73\x37\x81\xaf\x83\xa0\xd7\x49\xc0\x73\xdf\xde\xfd\xf4\x9e\x55\x87\xd5\xc2\x60\x44\x2e\x84\x76\xe1\xb7\x2e\xd2\x1b\x89\x28\xc2\x77\xfd\x79\x3e\xbb\xb8\xb9\xfa\xeb\xe5\xc7\xf3\x8b\x9b\x78\xac\xe3\xb1\x8e\xc7\xba\xc3\xb1\x06\x3e\xef\x7c\xa4\xbd\xb4\x19\x1c\x93\x6a\xbf\x91\x47\x2b\xd0\xfe\x18\x54\x1b\xd0\x59\x36\xb4\xe3\xc9\xa0\xde\x80\xc0\x19\x9f\xff\x40\x9b\xa6\x75\xbe\x16\x1c\xc4\xdd\x60\x45\xe4\x4a\xfa\xee\x12\x7b\xdf\xc1\x8c\xd5\xd5\x6f\xd5\x4a\x7e\xb4\xa3\xbb\x4f\xc9\xbc\xba\xbd\x89\xa1\xb1\x7d\x17\x34\xaf\xeb\x6b\xaf\xd9\xb5\x11\xf9\xe0\x15\x1e\x72\xf2\xcb\xf9\xe9\xd9\xc5\xcd\xf9\x37\xe7\x67\x57\xed\x35\xe8\x1e\x6c\x2d\x68\x4d\xe8\x09\x00\xfb\x2d\xb9\x64\x21\x61\xce\x44\xa9\xb2\x45\x65\xff\x58\x4f\x04\x96\x4f\xbf\x73\xf8\x2e\x2a\x4d\x7c\xed\x63\x91\xd9\xf6\xcb\x6c\x4f\x61\x42\xcb\xcc\xea\x4d\x7b\x7b\xa3\x36\x5c\xce\x8e\xbe\xd0\xf7\x1b\x29\x3a\xd4\x8f\x6e\xa0\xf0\xb5\xad\x3c\x3f\x11\x72\xe3\x31\xde\x77\x61\x07\x0d\xd6\xe3\x84\x47\x6b\x9b\x73\xd2\xa3\xf5\x8e\x75\x84\x4e\x47\xf7\x42\x3f\x4e\xf7\x44\xf0\x09\x9b\x7e\xa0\xc5\x77\xb0\xb8\x82\x49\x37\x03\x71\x13\xde\x68\x77\x74\x3e\x64\xb4\x52\x1a\x76\x66\x5f\xd6\xcd\x3f\xd3\x9b\x77\xa6\xaf\xb0\x8c\xee\x21\x19\xfd\x45\x50\xf4\x12\x3d\xb1\x52\xcd\xdf\x5a\xa0\x9d\x2d\xb9\xaf\xe0\x9a\x5e\x5c\xf6\xdd\xb8\xbc\x1f\x4d\x66\x17\xb2\x7b\x47\x67\xf5\xb6\x6a\x47\x22\x78\x02\x85\x56\x47\x62\x6e\x38\x17\xdc\x1d\xdd\x09\x79\x6b\xf4\x08\xa3\xb8\x0e\x2d\xd6\xaa\x23\xf4\x16\x1c\x7d\x61\xfd\x5f\x37\x1f\x4f\x3f\xbe\x23\xc7\x69\xea\x5a\xb3\x94\x0a\x26\x65\xe6\x9a\x21\x8c\x08\x2d\xd8\x0f\x20\x15\x13\x7c\x40\x6e\x19\x4f\x07\xa4\x64\xe9\xd7\xed\x89\xb3\x1f\x3d\xee\x82\x28\xac\x8f\xb3\xe7\x9d\xb8\x46\xef\xca\xa2\xc1\xbb\x2a\x22\x62\xb8\x16\xd3\x0a\x71\xd3\xdb\x9b\x9d\x90\xd1\x13\x68\x76\x37\xce\x2f\x0f\xdc\xc2\x7e\xe9\xea\x7e\x4d\x58\xad\x6f\xd3\x21\x6a\x21\xd2\x77\x44\x95\x45\x21\xa4\x56\x24\x07\x4d\x8d\xd2\x3b\x32\x18\x36\x68\xfe\x89\x5e\xaa\x01\xf9\x7b\xf5\x23\xba\x9a\xd4\x4f\xfb\xfb\x7f\xfe\xee\xec\xaf\xff\xb9\xbf\xff\xf3\xdf\xc3\xab\xc8\x0a\x6d\xf8\x4f\xf3\x16\x55\x40\x32\xe2\x22\x85\x0b\x7c\x07\xfe\xa9\x1a\x0e\x16\x77\x41\x53\x5d\xaa\xd1\x4c\x28\x7d\x7e\x59\xfd\x59\x88\x74\xf9\x2f\xd5\x41\xe2\x20\xcf\x93\x31\xe0\x16\x5d\x52\x3d\x7b\x26\xec\xa1\xa6\x25\x3d\x1f\x55\x37\x6b\xd8\x02\x28\xa7\xf8\xcf\x6f\x3c\x08\x8c\xf4\x74\x27\x99\xd6\xe8\x74\x73\x69\xe6\x62\x32\x30\xa7\xb6\x16\x3b\xe7\x6f\xf7\x9e\x15\x83\xa9\x76\xb0\x67\x80\x21\x44\x1c\xb4\xec\x41\xae\x18\xec\xaa\x73\xf9\xf8\xf2\x9c\xcc\x2d\x84\x9f\x0d\x70\x7c\xea\xf0\x37\x9f\x94\xc6\x55\x2d\xa3\x1c\xa8\x2a\x0d\xf1\x9d\x8d\x06\xaa\x12\x98\x49\xc6\x72\xe6\x82\x0c\x5d\x7b\x29\x45\x0e\xec\x8f\xa3\xa4\x28\x07\xee\x86\x51\x0e\xb9\x90\x8b\xea\x4f\x28\x66\x90\x1b\x4d\x6b\xa8\xb4\x90\x74\x0a\x83\xea\x71\xfb\x58\xf5\x97\x7d\xb0\xf1\x82\xd5\xa7\xad\x2a\x5c\x3b\x49\x1d\x45\x86\xf4\xf5\xd1\x36\x0f\xfa\x67\x42\xda\x2a\xcc\xb8\xf8\x04\x22\x61\x65\x89\xb3\x02\x67\x05\x45\xd4\x27\xe7\x22\x2b\x73\x50\x83\x4a\x0c\xb2\xd6\x00\x3e\x37\x9a\xa5\x7a\x56\x82\x5a\xca\xe6\x4c\xf5\x11\x3f\xbc\x46\x4e\x63\x2e\x14\x5f\x94\xba\x28\xb5\xab\x65\x13\xb4\xa5\x13\x0a\xed\x16\x55\xc1\x81\x06\xd9\x7f\xdb\xb5\xe0\x16\x21\x05\xd5\x1a\x24\x7f\x47\xfe\xfb\xe0\x6f\x5f\xfd\x3a\x3c\xfc\xfa\xe0\xe0\xa7\x37\xc3\xff\xf8\xf9\xab\x83\xbf\x8d\xf0\x1f\xff\x7a\xf8\xf5\xe1\xaf\xfe\x8f\xaf\x0e\x0f\x0f\x0e\x7e\xfa\xee\xc3\xb7\x37\x97\x67\x3f\xb3\xc3\x5f\x7f\xe2\x65\x7e\x6b\xff\xfa\xf5\xe0\x27\x38\xfb\x79\xcb\x49\x0e\x0f\xbf\xfe\xb2\xf3\xd2\x29\x5f\x7c\xec\x48\x40\xed\x18\xf6\x56\x8a\x68\x79\xc6\x9e\x02\xac\xef\x87\xb5\xd2\x34\x64\x5c\x0f\x85\x1c\xda\xa9\xdf\x11\x2d\xcb\x6e\xc4\xa4\x66\x4a\x7d\x9f\x7f\xdf\x7b\xec\x5d\xcd\x90\x2a\x76\xfd\x6c\x0e\xb8\x82\x44\x82\xfe\x1c\x96\x1c\xfb\x26\x2f\xa7\x2c\x05\x3b\xbe\x36\x3e\xf7\x5b\x30\xee\x54\xc1\x82\xb8\xaf\xb5\x24\x3a\x91\x22\x1f\x91\xc0\xbd\x31\xc7\x4c\x0f\x77\xdf\x2d\x74\xb0\x82\xfa\x11\x8d\x41\xd1\x18\xb4\x61\x3c\x6a\x0c\xba\xb6\x78\xf8\x6c\x2d\x41\xc0\xe7\x6d\x5d\x18\x6b\x3d\xe8\x5e\xd7\xd1\x82\x14\xa2\x28\x33\xaa\x37\x78\xc6\xd6\xb8\xd3\xdd\x51\xaf\x23\x91\xeb\x48\x1a\xcb\xd0\xf2\xf5\x3e\x4c\x72\x9c\x65\x84\x71\x7b\xf0\x71\x02\xef\x30\x93\x60\x55\x1b\x42\xad\x3f\x7b\x6e\x96\x70\xe7\x4a\xd6\x85\xe1\x9e\x8a\x28\x4d\xa5\xc6\xa8\x63\x2c\x69\x67\x59\x89\xf3\x3e\x31\x5e\x17\xb6\xab\x84\xc3\x2a\x09\x64\x6d\x5f\xcf\x8c\x2a\xed\x97\x8d\xab\xd1\xf4\x16\xbd\x8d\x09\xa4\xc0\x13\xc0\x8c\xb4\x12\xea\x6f\x1d\x1b\xbd\x8d\x9c\xf1\xb9\x9d\x83\x92\xb4\xb4\xc1\x20\x96\xfc\xad\x9f\xe3\x75\x05\x20\x18\x44\xbc\xf6\xed\x97\xab\x38\x04\xa4\xfa\x95\x86\x5d\x25\xf6\x55\x56\x56\xf5\x34\x91\x07\xdd\x79\x66\xe5\xd9\xea\x24\x0c\xad\x30\xcb\xda\xfc\xdc\x64\x92\xaf\xc1\x19\xd8\x9d\x7d\xfe\xe6\x58\x67\x4f\x6c\xb3\x1f\x96\xb9\x83\xef\xa4\x4f\x36\xd9\x87\xb3\xa4\x90\x30\x61\xf7\x3d\x9d\xd3\x63\x5e\x5b\x62\x58\x0a\x5c\xb3\x09\xb3\x1d\xfb\x0b\x09\x05\xf0\xb4\x2a\x8a\x8a\x59\xe1\xbc\x09\x9b\x67\x19\xcc\x63\x05\xee\x7e\x49\xd9\xf5\x3a\x61\x3f\xd2\x31\x12\xe9\x58\xeb\xf1\x99\xe8\x98\xc3\xdc\xe7\x43\xc4\x30\xf2\xbc\x7b\xe8\xfb\x69\x10\xc7\x8e\x58\xbc\x33\x96\xd5\x09\x5d\x47\x38\x8b\x5a\xaa\x1e\x54\xd1\x45\x2d\x6c\xe4\x1a\x99\xb1\xa9\x01\xab\xad\x28\x64\x85\x26\x92\x53\x4e\xa7\x36\xab\x5b\x0b\x6f\xa7\x35\x5a\x96\x41\x62\xc9\xd2\x86\x70\x6f\x5f\xc3\x38\x31\x88\x9d\x09\x9a\xe2\x45\x29\xb2\x0c\xa4\x22\x19\xbb\x05\x72\x0a\x45\x26\x16\x2e\x49\x9b\xa7\xe4\x5a\x53\x6d\x50\xfa\x1a\x74\x3b\x9f\x6f\x27\x74\xc5\x15\x5f\x96\x59\x76\x29\x32\x96\xb4\xb2\xa8\x34\xb7\xed\x1c\xf7\xab\x28\xb3\x8c\x14\x38\xe5\x88\x7c\xe4\x48\x31\x8e\xb3\x3b\xba\x50\x03\x72\x01\x73\x90\x03\x72\x3e\xb9\x10\xfa\xd2\x8a\xde\xcd\x68\x3b\x7b\x23\x61\x13\xf2\x0e\x6b\xda\x68\xa2\xe9\x14\x15\x27\xef\x03\x1c\x18\xf8\x87\x13\x58\xe2\x70\xc7\xd4\x5a\x4d\xa5\x33\xe2\x7c\x81\x33\x19\x42\x65\xff\xfe\xec\xdb\x94\xb1\x09\x24\x8b\x24\xeb\x7e\xae\x8e\x13\x8c\x5e\xa8\xf3\xcc\x03\xfc\x76\x65\xda\x5d\x6a\x27\xaa\x80\x8c\x13\x5b\x3f\xdd\x16\x86\xaf\x51\xbd\x5a\x91\x55\x75\x55\xaf\x1a\x62\x6b\xce\xd9\x95\x67\x16\x42\xe9\x6b\xa3\x9e\xf7\x52\x65\x7d\xff\xd2\x4f\x47\xb0\x96\x74\x96\x41\x4a\x58\x9e\x43\x6a\x54\xf8\x6c\x41\xe8\x44\x63\x8a\x6d\xc3\x3c\x90\x48\xb0\x58\xeb\x6a\x97\xcc\x28\x4f\x33\x90\x64\x42\x59\xe6\x8c\x01\x8d\xfb\x35\xc8\x9c\x71\xb4\x09\x58\x77\x2c\xda\x17\xcc\x5f\x49\x22\xa4\xaf\x7b\xcf\xb4\xf2\x97\xea\x83\x89\x4c\x24\x40\x80\x65\xbf\x32\x19\x67\x22\xb9\x55\xa4\xe4\x9a\x65\x76\x31\x42\xdc\x92\x44\xe4\x45\x86\x47\xa7\xc3\xc9\xaa\xfe\x39\xac\x50\x69\x68\x66\x57\x47\x5f\xd4\x97\xf0\x87\xb6\xdc\xbc\x07\x29\xac\x0f\x19\x0c\xee\x21\xe9\x2d\xbd\xdf\xd0\x52\xb3\xcb\xe8\xef\x17\xbc\x12\xc5\x26\xc2\x30\x30\xb3\xd7\x75\x62\x76\x45\x2e\x47\xe4\xec\x1e\x92\xa0\x0a\x05\xf6\x87\x40\x42\x80\x59\xa1\xf4\x16\x5e\x51\xd9\xbb\x0e\xc9\x77\xe1\x68\x80\xfd\xc4\xce\xe9\xab\x66\xb9\x57\x90\x8c\x71\x24\x8b\x2e\x21\x8f\x30\xae\x8c\x40\xd0\x38\x43\xf6\xc4\x3a\x41\x97\xa4\x4c\x62\xcd\x84\x45\x15\x7c\xed\xe7\xc2\x72\x04\x42\x68\x72\xb0\x7f\xb4\x7f\xb8\x62\xb3\xdc\x37\x82\x4b\x06\x96\x44\x5b\x03\x66\x52\x2f\x4a\xb1\xbc\xc8\x16\xb8\x8e\xfd\x74\x40\x98\xf6\xd1\xd9\xb2\xe4\x7e\x55\x2e\x4b\x70\x40\x94\x20\x5a\x52\x5f\x8a\xc5\xfe\x6a\x6e\xd2\xb2\x74\xcc\xe1\x60\xff\xd7\xfd\x01\x01\x9d\x1c\x92\x3b\xc1\xf7\x35\x2e\x7f\x44\x6e\x84\x11\xbf\xeb\x89\x16\xa2\x24\x1c\x6c\x32\x00\xdc\x17\x19\x4b\x98\xce\x16\x48\xe8\x88\x28\xb5\xcd\x38\xa6\xda\x67\x27\x9e\xdd\x33\xed\x62\xdc\x0c\xda\xbe\x41\x68\x5a\x62\x47\xa8\x91\x8e\xe6\x70\x34\x03\x9a\xe9\x99\x0d\x2c\xe1\x82\x0f\xff\x09\x52\x60\xde\x22\x77\x57\x5e\x5d\x89\xc0\x5e\xb4\x0d\x43\x7b\xbf\x85\xfe\x9a\x0a\xfd\xe5\xe6\xe6\xf2\x5b\xd0\x4b\x24\xc3\xbc\xc5\x87\xfb\xa0\x05\x01\xe4\x44\xc8\xfc\x19\xd0\x8e\x7e\x1c\x9c\x43\x52\x08\xf9\x1c\x48\xd8\x4c\xa8\x4e\x7b\x49\x56\xf6\x53\x28\x8d\x4a\x94\x13\xe2\x38\x24\x66\x07\x9b\x71\x27\xbe\xef\xce\xf9\xe5\x88\xfc\x55\x94\xe6\x6b\xc6\x74\x9c\x2d\xaa\xba\x0d\x0a\x34\xd9\x33\x53\xed\x19\xf2\x64\xb0\xe1\x2f\x40\x53\xa3\xd9\x18\xea\x01\xf4\x79\xf4\xd7\x22\xee\x3c\xb8\xb5\xf5\xcb\x07\x4a\xa5\x45\x4e\x66\xee\xb3\x9b\xe9\x9a\xee\x64\x8c\xf0\xf4\xf8\x5c\x28\x09\x85\xa5\x70\xee\x99\x57\x47\xbf\x56\xe8\x86\x85\xbb\xfb\x7d\x8c\x35\xaf\x92\x10\x6c\xae\xc1\x94\x4d\x26\xe2\x16\x58\x06\xd5\xa0\x9d\x7b\x25\x1c\xcf\xb8\x50\x69\xeb\xe4\xcf\xe5\x89\xd0\x11\xd8\x3d\x3e\xac\xd7\x32\xa5\xfd\xc4\x1a\x90\x75\x86\x59\x87\x33\xd6\x68\xd3\x13\x10\x3f\x4d\x9d\xcc\xcf\x01\x80\x7e\x36\x9f\xf4\x09\x81\xa2\x87\x70\xf0\xd5\x60\x70\x2d\x8c\xfa\x8a\xe9\x9a\x96\xb8\x22\x99\x50\x20\xe7\x6d\x13\xc0\xeb\xd1\xdf\xa7\x8b\xf6\x86\x02\x3f\xd6\xe4\x56\x4b\xc2\xcb\x7c\x0c\xb2\xce\x66\x91\x7a\x15\x20\x41\x34\xc3\x85\xbd\xdd\x9b\x80\x9b\xed\x1c\xcd\x93\x7f\xfa\xb7\x7f\xfb\xc3\xbf\x8d\xec\xf4\x55\x64\x03\x27\xe7\xc7\x17\xc7\xbf\x5c\xff\x70\x82\x09\xb5\x5d\xa1\xda\x53\xd8\x66\xdf\x41\x9b\xbd\x86\x6c\x7e\xd2\x80\x4d\x4c\x13\xe9\x4c\x45\x9a\xfe\x02\x9c\xd2\x60\x80\xd1\xdb\x8c\xc6\xe9\x64\xbf\xa0\xb4\x99\x91\x35\x9b\xf6\x57\x73\xd4\x9e\xc5\x19\xd3\x49\x71\x2d\x92\xdb\x1e\xf5\x9a\xfd\x9b\x93\x4b\x3b\x65\x58\x93\x93\x7b\x63\x08\xe3\x73\x91\xcd\x6d\x39\xdf\x9b\x93\x4b\x3c\x79\x23\xfc\x17\x1a\xa2\x50\xa3\x5e\x98\x67\x7d\x22\x83\x73\x4f\x19\xed\xdb\x5a\xd0\x28\x91\x40\x33\xa6\x34\x4b\xf0\xb9\xda\x4c\x6a\x66\xe8\xe2\x97\x8a\x9a\xd2\xba\xd1\xbb\xa6\xb4\xff\xd1\xbb\xed\x76\x56\x9a\xba\x06\x1e\x3e\x63\xbe\xe4\xf8\x91\xcd\xf8\x88\x7c\xe9\x37\xc1\x97\x0a\x09\xd7\x5a\x14\x3d\x79\x42\xec\x64\x1b\xfc\x20\x63\x98\x08\x09\xcb\x8e\x90\xc0\xb1\xe1\x1b\x0c\x73\xcc\xfe\xf3\x26\x28\xd1\x70\x5e\xd8\x90\x4b\x55\x26\x33\x6f\x4d\xe4\xa0\xd4\x11\xba\x3c\xca\xc2\xaa\x98\xe8\x44\x29\x25\x0c\xcc\xd7\x41\x8e\xab\x1b\xd4\x69\x0c\xe6\xf5\xc0\xed\x8f\xa0\x13\x6b\x66\xf5\xfe\x17\x67\x51\xf5\xcb\x5f\x76\x95\x24\x92\xaa\x19\x60\xfd\x10\xb8\x67\x75\x9f\x13\xaa\x04\xb7\xc6\x5e\xf7\x39\xc8\x68\x14\x29\xa8\x52\x75\x05\x67\xf7\x12\xfb\xd0\xa5\x48\xf7\xf7\x55\xe3\x81\xa9\xa4\x09\x90\x02\x24\x13\x29\xc1\x7c\xe2\x54\xdc\x71\x32\x86\x29\xe3\xca\xc3\xcf\x4c\xe4\x01\x6d\xd8\x8d\x2d\xb6\xeb\xab\xc5\x8d\xc8\x55\xa3\x08\x8a\x4b\x4f\x4a\x44\x7d\xa2\xdd\x2a\x96\x9d\x4c\x18\x11\x1a\xb4\x69\xae\x36\xc6\x87\xcd\xea\xc7\x17\xdd\x83\xb7\xc9\x80\xb6\xbe\xb6\x11\x3a\x58\x9c\x9f\x26\xb3\x6e\x8e\xdf\xe8\x9e\xda\x72\x44\xf7\xd4\x6e\x23\xba\xa7\xa2\x7b\x6a\xf3\x78\x76\xe6\xdd\xe8\x9e\x8a\x4a\xd7\xf2\x88\xee\xa9\xe8\x9e\xda\x30\x9e\x1d\xfd\x8a\xee\xa9\x2d\x46\x74\x4f\x6d\x39\xa2\x7b\x2a\xba\xa7\xa2\x7b\x2a\xba\xa7\x7e\x43\x66\x40\x3f\xa2\x7b\x6a\x65\x92\xe8\x9e\x0a\x80\x11\x35\xa5\x35\x23\xba\xa7\xd6\x8c\xe8\x9e\x0a\x46\xe4\x4b\x2d\xf8\x92\x77\xee\x5c\x1a\xbd\xac\x7b\xce\xda\x25\x3a\x0e\x58\xe2\x7c\x44\x61\x2f\xb8\xea\x55\x41\xfb\xb7\xa0\xe6\x87\x4f\xb5\x71\xde\xa0\xda\xc7\xb4\x36\x1f\x6a\x57\x77\x84\x4f\x22\x54\x47\x85\xb0\xff\x57\x3b\x23\x02\x2f\x84\xd5\x4e\xdb\xe7\xa4\x3d\x59\xb6\x55\x17\xd7\xc3\xb3\x76\x3b\x3c\x13\xd7\x4e\x0f\xae\x86\xe8\x66\x78\x75\x6e\x86\xd7\xd3\x43\xd7\x39\xf3\x6f\x66\x12\xd4\x4c\x64\xad\x11\xbd\x81\xe4\x1f\x18\x67\x79\x99\x1b\x9c\x53\x06\x9f\xd9\xbc\x8a\x1a\x50\x15\xba\x5a\x42\x6f\x2d\x85\xe6\x46\x96\x02\x16\x40\xa5\x2c\x33\xdb\x88\x69\x9d\x33\x8a\xa2\xba\x2a\x93\x04\x00\xdb\xab\x85\x5a\xcc\x1f\x46\xd5\x9b\xaa\x76\x1a\x6f\xbb\xd1\x9b\x6e\xbc\xdf\x96\x28\xc5\x59\xfe\xf0\xfb\x56\x73\x74\xf4\xf2\x7c\x7e\x0f\x4f\x0f\x64\xba\xbb\xbe\xd2\x49\x57\xe9\x83\x4b\x74\xd5\x51\x5e\x9a\x27\xa7\x37\x8f\x66\x0f\x1e\x9c\x67\xe4\xbd\x79\x36\x6c\xe1\xb9\x78\x6c\x9e\x61\xf5\xd5\x1e\x1c\x0c\x7d\x78\x68\xfa\xf3\xce\x7c\x82\x22\xa5\x9f\xc6\x2b\xd3\xa3\x36\xdc\x93\x37\xe6\x73\x78\x62\x7a\xf9\xea\xae\x1e\x98\xcf\xe7\x7d\xe9\xe7\x73\x3b\x5a\xb7\x5e\x85\xc7\xa5\x07\xab\x56\x9f\x16\xad\xde\xac\x59\x9f\xcc\xc3\xd2\xdd\xbb\xf2\x0c\x3c\x2b\x9d\x81\xcc\x38\xd3\x8c\x66\xa7\x90\xd1\xc5\x35\x24\x82\xa7\xad\x39\xcc\x52\xd5\xba\xea\xfc\x28\x3b\xad\xd3\xd1\x9a\xf1\xc7\x33\xea\x8a\xf3\x42\xea\x43\xaa\xbd\xf9\xcf\x09\x14\xd8\xd0\xc4\xae\xf2\x59\x1a\xf4\xc8\xb3\x51\x06\x6d\x30\x76\x9f\x9b\xf8\x17\x71\x47\xc4\x44\x03\x27\x07\x8c\xfb\x7d\x3c\x0c\xd4\xc0\x5a\x33\xaf\xd0\xda\x5c\x7d\xfb\xc6\xdf\xfc\xfa\x54\x6e\x34\x2e\x28\xf5\xe9\x2d\x20\xee\x45\x8f\x9b\x40\xdc\x8d\x93\x32\x6b\x9a\x41\xac\x69\xa4\x49\x6f\xde\xd6\xe5\x45\xdf\xe2\xbc\xd5\x69\xa3\x3c\x25\x2e\x71\xe3\xf5\x6d\x5a\x67\xbf\xf1\x6b\xf0\x19\x47\xdb\x0b\xe9\xdb\xf6\xf2\x44\xbe\xe1\x67\x28\x35\xbf\x50\x7f\x70\x94\x9a\x77\x18\x41\xfe\xd7\xb7\x92\x26\x70\xd9\xbb\xc0\xe1\x8f\x13\x49\x4b\xe9\xd2\xf6\x2a\xb9\xa3\x3a\x3c\x1c\x20\xb5\xa7\xa9\x4a\x8a\xc3\x6c\xb4\x49\x99\x65\x0b\x52\x16\x82\x37\x33\x0f\xad\xd3\x6a\x39\x61\xcd\xcc\xb6\xee\x2d\xb5\x94\x5a\x48\xe1\x18\xb0\x2c\x39\x37\xf4\xbc\x6e\x38\x84\x52\xa9\xb2\xb4\x3a\x4c\x8b\x53\x6c\x6a\x96\x6f\x98\x29\x66\xcc\xb1\x1c\xea\x96\x14\xf5\x84\xe6\xe9\x89\x90\x09\x1b\x67\x0b\x32\xa3\x59\xd5\x5d\x82\x92\x5b\x96\x65\x6e\x9a\x11\xb9\x06\x4d\xf4\x8c\xb9\xc6\xe0\x24\x13\x7c\x8a\x8b\xa3\xdc\x77\x35\x83\xc4\x3c\x9b\x64\x40\x79\x59\xd8\xf7\x19\xb6\xbe\x10\xa5\xf4\xef\x73\x65\x2d\xab\x59\x98\x22\x9c\x65\x83\xa0\x77\xd2\x83\x1b\x5b\x37\xa8\x57\xe0\x73\x0a\xef\x98\x82\x41\x38\xa7\xaf\xcc\xab\x82\xce\x19\x85\x14\x73\x96\xda\xee\x17\x1e\x6c\xd8\xa5\xd5\x76\xc7\xa8\xce\x33\x17\x7c\xc8\x61\x4a\x51\xea\x71\xa7\xc8\xee\x99\x9d\xc7\xba\xe2\x78\x8a\xfd\x32\x8c\xba\x20\x8a\x46\x2a\xeb\x9c\xd9\x4e\x9f\x01\xe4\xc8\x01\x17\x44\x20\x7b\x2d\x39\xd3\xb6\x7b\xf4\xac\xd4\x24\x15\x77\xfc\x70\x64\xab\x12\x33\x45\x28\x19\x83\xf6\x9d\x6c\x7d\x67\x45\x26\x41\x11\xe0\x74\x9c\x99\x3d\xc7\x80\x87\x9b\xb5\x00\x22\x13\xa0\xba\x94\x40\xa6\x54\xc3\x5a\xa1\xc9\x7e\xef\xc3\xe0\x65\xaa\xea\xf2\x5e\x72\x05\xad\xfb\x5b\xf7\x2c\x69\xfd\xe9\x8f\xed\x68\x04\xcb\x41\x94\xfa\xb3\xa8\x92\x77\x33\x96\xcc\x42\xc9\x98\xe5\xa0\x88\x28\x97\x74\xec\xb7\xee\xb1\xf5\x3b\x14\xf5\xc9\x75\xa3\xad\x95\x78\x8d\x29\x6d\x39\xe5\xb8\x6e\x2b\x4b\xcd\x01\x3c\xbd\xb8\xfe\xe5\xfd\xf1\x7f\x9d\xbd\x1f\x91\x33\x9a\xcc\xc2\x7c\x74\x4e\x28\x12\x0d\x24\x14\x33\x3a\x07\x42\x49\xc9\xd9\x3f\x4a\x5b\x9d\x9c\x1c\x54\xcf\x1e\xf6\x5a\x0b\xb9\x25\xf7\xc5\xd6\xd7\xbd\xf5\x5a\xb2\x8d\xb4\x6d\x80\x83\x50\x80\xdd\x11\x96\xc5\xa7\x33\x73\xc9\x2a\x1a\x28\x6a\xcd\xc0\x10\x23\x36\x77\x64\xd8\x15\x97\xa6\x69\x15\x72\x61\xf0\xdc\xa0\x85\x61\x55\x74\x8c\xa1\x12\x33\x20\x1c\xb4\x41\xeb\xca\x60\x25\xb8\x6a\x14\x06\x28\x15\xa8\x01\x19\x97\x18\xdc\x51\x48\x96\x53\xc9\xb2\x45\x38\x99\xe1\x55\x17\xc2\xab\x43\x8b\xe5\x25\x9d\x7e\x3c\xbb\x26\x17\x1f\x6f\x48\x21\x6d\xc9\x00\x8c\xce\xc0\xeb\xf8\x59\x63\x30\x4f\xb8\x1e\x9d\x23\x72\xcc\x17\xf6\xa2\x3d\xe0\x4c\x11\xa3\x0b\x01\xb2\x60\x27\x43\xfa\xa2\xf0\x7b\x6f\x46\xf8\xbf\x3d\xf3\x95\xd2\x08\x99\x55\xd0\x49\xb2\x12\x3c\x66\xc5\x50\x36\xce\x02\x68\xba\x6f\x7f\x55\xdd\x96\xaa\xb0\xb9\x4b\x03\xc4\xa0\xdb\x12\xad\xb6\x1a\xc1\x6b\xbb\x6f\x31\x3e\xcd\x42\xac\x6a\x47\xf6\xbb\xea\x96\x5d\x35\xcb\x61\xfd\x05\x97\x6d\x15\xcc\x5e\xba\x3e\xd5\x6b\xe8\xa9\x57\x4a\xcd\xfd\xbc\x3a\xe5\x28\x82\x08\xdb\x5f\x9e\x5f\xfa\x13\xe0\xa4\x9b\x7c\xa9\x67\x22\x3e\x6c\x9d\x1a\x03\xf2\x86\xfc\x99\xdc\x93\x3f\xa3\x7a\xf5\xa7\xae\x9d\x65\xba\x2a\x3e\xdd\xcd\x3b\x56\xab\x3f\xbf\xec\x09\xe2\x3f\x1a\xea\x64\x66\x34\x50\xd5\x82\x8c\x99\x13\xe7\xe1\x5e\x83\x34\x74\xd4\xed\xc4\x93\xf6\xe4\x31\x0b\xfc\x8c\x68\x66\x7d\x17\xe7\x93\xb0\x25\x84\xde\x11\xd1\xcc\xe3\x7f\x11\x4a\x5f\x38\x2a\xd4\x6c\x30\x51\xcf\x96\x53\x9d\xcc\x9a\x64\xcc\x08\x6a\x4a\xd7\x07\x4c\x91\x54\xa0\x25\xcd\xc6\x01\xce\x58\x87\x48\x8c\xe7\x83\xc6\xdd\x9c\xf3\x8d\xfd\x7c\x68\xa7\x96\x0c\x28\xa8\xf9\x38\xc1\x2a\x28\x2f\x53\x88\xd4\xc9\x64\x66\x59\x69\xc0\x33\x1e\x10\xca\x9c\xad\xa6\x32\x59\x23\x2e\x99\xf3\x94\x50\x6e\x03\xb8\x27\x20\xa5\x0d\xdd\x1c\x2f\xd0\x83\xcc\x12\xe8\xbc\x79\x9d\x4e\x52\x21\x85\x16\x89\xe8\xd0\x36\xa8\xe9\x30\x77\xd3\x21\x10\xac\xf1\xd7\xdb\xdc\xbf\x3f\xbd\x1c\x90\x9b\x93\x4b\xec\xa6\x72\x7d\x72\x73\xd9\xd4\x54\xf6\x6e\x4e\x2e\xf7\x9e\x14\x14\xc4\x4b\x56\xef\xcc\x32\x5b\x4c\xd2\x30\x3c\x19\xb1\x6d\x98\xd3\x62\x78\x0b\x8b\x96\x3c\xb5\x0f\xbe\x3e\xac\x76\xb8\x97\x0f\xb2\x60\xce\x69\xb1\xf3\x6c\x12\x68\xca\x3e\x53\x16\x85\x3b\x59\xf5\x3b\xd7\xa7\x53\xe4\x62\x0e\xa9\x15\x87\xfd\x13\xc0\xd3\x42\x30\x23\x2f\xc6\x1c\x8b\xdd\x9f\x8e\x39\x16\x0f\x8d\x98\x63\x11\x73\x2c\x62\x8e\xc5\xc3\x23\xe6\x58\xb8\xf1\xf4\x66\x50\x12\x73\x2c\x5a\x8e\xd7\xe5\xe7\x8f\x39\x16\x3b\x8d\x98\x63\xb1\x3a\x62\x8e\xc5\x86\x11\x73\x2c\x36\x8c\x98\x63\x11\x73\x2c\x62\x8e\x45\x8c\x16\x7b\x74\xae\xe7\x19\x2d\x46\x62\x8e\x85\x1b\x31\xc7\xe2\x55\xc4\xc4\x90\x98\x63\xb1\xd5\x88\x39\x16\x31\xc7\xa2\xcd\x88\x39\x16\x38\xa2\xed\x25\xe6\x58\xf8\x11\x73\x2c\xec\xf8\xed\x48\xcd\x31\xc7\x22\xe6\x58\xc4\x1c\x8b\x98\x63\xf1\xe0\x2a\x62\x8e\xc5\x6b\xd0\x27\x7d\x0f\xbc\xee\x39\x03\xfb\x27\x22\x2f\x4a\x0d\xe4\xca\x4f\x59\x49\x91\x96\x30\x30\x15\x4a\x04\xdd\x43\x78\x12\xc1\x27\x6c\xea\x28\xfb\x91\x6d\x30\x37\xac\xbe\x67\x18\x34\x75\x7b\x81\xf1\x3b\x19\xcb\x59\xbb\x44\x0e\xb2\xb2\x31\xef\x71\xae\xc0\xc9\x63\x4e\x52\x4e\xef\xf1\x88\xd0\x5c\x94\xb6\x29\x5f\xe2\xf6\xaf\x02\xa1\x75\x85\x3d\xbb\x9d\x21\xfd\xa8\x38\x75\x46\xca\x65\x0f\xda\x46\x41\xb5\x06\xc9\xdf\x91\xff\x3e\xf8\xdb\x57\xbf\x0e\x0f\xbf\x3e\x38\xf8\xe9\xcd\xf0\x3f\x7e\xfe\xea\xe0\x6f\x23\xfc\xc7\xbf\x1e\x7e\x7d\xf8\xab\xff\xe3\xab\xc3\xc3\x83\x83\x9f\xbe\xfb\xf0\xed\xcd\xe5\xd9\xcf\xec\xf0\xd7\x9f\x78\x99\xdf\xda\xbf\x7e\x3d\xf8\x09\xce\x7e\xde\x72\x92\xc3\xc3\xaf\xbf\x6c\xbd\xe4\xce\x22\x71\x7f\x02\x71\x4f\xe2\xf0\x27\x11\x86\x9d\x77\xb8\xa7\xb3\x78\xe5\x66\x5b\x3e\x8d\x8e\x61\x3d\x74\x1a\x3d\x35\x45\x31\xaf\x9a\x87\x29\x22\x72\xa6\x8d\x70\x68\xe4\x41\x1a\xc6\x85\x31\xdd\x50\x4a\x1d\x1d\xc0\x80\x4a\xaa\x6d\x8f\xd0\x2a\xa6\x2a\x88\xd3\x16\x5e\xf2\x73\xbd\x57\x2b\x7b\x05\x9e\xe7\x61\x0a\x13\xc6\xc1\xf9\xc1\x22\x6d\x78\x7c\x44\xda\xf0\x1a\x69\x83\x82\xa4\x94\x4c\x2f\x4e\x04\xd7\x70\xdf\xca\xc2\xd2\x24\x0d\xd7\xcd\x09\x89\x3d\x67\x2e\x8b\xd2\x5d\x23\xa2\xb0\x01\x94\x4b\xe9\xac\x55\x08\xae\x2c\x39\x2a\x98\x36\x4b\x06\xb4\xd5\xfe\x50\xef\xc1\x98\xc8\xe5\x97\x78\x7d\xce\xaa\x99\xff\x28\xd9\x9c\x66\x46\xdb\xad\x9f\xb8\x44\x0d\x26\x7c\x68\xdb\x33\xaf\xa9\xba\xad\x0f\x3c\x0c\x8d\x0c\x5d\xad\xf9\xc8\x7f\x12\xfe\x04\xf7\xfa\x25\x4a\x69\x28\x20\x5d\x4a\x36\x67\x19\x4c\xe1\x4c\x25\x34\x43\xba\xd6\x0f\xaf\x38\xde\x30\x3b\x6e\xbc\x14\x99\x22\x77\x33\xc0\xee\xca\xd4\x9b\x00\x30\xc3\x65\x4a\x19\x27\xb9\xd9\xa2\xc2\x3f\xac\xac\x2d\xc1\x90\xff\x82\x4a\xb3\xc1\x95\xcd\x00\x55\xe4\xb1\x10\x99\x0b\x1d\xce\x16\xf5\xfc\x2e\xf6\x9e\x8b\x5f\x38\xdc\xfd\x62\x66\x53\x64\x92\xd1\x69\x65\x2a\x50\xa0\x57\xac\x7d\xf5\xd4\x1b\x3f\x00\xe3\x72\x4b\x20\x34\xbb\xa3\x0b\x55\x1b\x4e\xc2\x3e\xe0\xef\xc8\xdb\x43\x44\x67\xaa\x48\x35\x47\x4a\x7e\x7f\x88\xbe\xc4\x93\xe3\xcb\x5f\xae\xff\x7a\xfd\xcb\xf1\xe9\x87\xf3\x8b\x6e\x9c\xc2\x7c\x3b\x50\xde\x6a\x8e\x84\x16\x74\xcc\x32\xd6\x85\x41\xac\x44\x9b\x84\x93\x22\x0b\x4e\xd3\xa3\x54\x8a\xc2\xc2\xc9\xdb\xa8\x6a\x4e\xd9\xd4\x82\xc3\xcc\x64\xdc\x9e\x49\x73\xc2\xa9\xa4\x5c\xd7\xc6\x9a\x1a\xe4\xb2\xe4\x46\xb1\x7e\xe1\x81\xf9\x34\xed\x2f\x28\xff\x38\x4d\x21\x6d\x40\xef\xd5\x05\x01\x9e\xf8\x8f\x5b\xd4\x39\xda\xe4\xf2\xe3\xf5\xf9\xff\x5e\x42\xc3\x45\xd1\x2d\xe6\xa9\x9f\xbc\x30\x29\x8a\xde\x76\xf7\xca\xe5\x1d\xc5\xfd\x7d\x16\xfb\x5b\xf1\xaa\x7e\x3c\xed\x57\x25\x6f\x96\xf1\xa8\xe7\x27\xb9\x48\x61\x44\x2e\x2b\x2b\x7d\xf3\x6a\x90\xde\x4b\x25\x10\x73\x0b\xd7\x8c\x66\xd9\x22\x14\x90\xb4\xb0\xc9\x34\x8d\xcc\xe4\x90\x0e\x4f\x68\xa6\x3a\x12\xd3\x2e\x9c\xc9\x30\xe1\x0f\x46\x99\xec\x05\x9a\xd5\x6c\x24\x05\x2e\xb4\x93\x4a\xcd\x2a\x31\x59\x5b\x8a\x84\x58\xcd\x35\x08\x8b\x6a\x70\x17\x65\x0d\xfd\x9e\x31\x31\xe5\x61\x75\x59\xcd\x6c\xad\xbc\xa5\x82\x65\xe9\xd6\x31\xa6\x5a\x97\x35\xb3\x4b\xa0\x29\xe6\xa4\x15\x54\xcf\x6c\x54\x43\x4e\xd5\x2d\xa4\xf6\x07\x27\xd7\x54\x66\x7e\x33\x63\xf5\xaa\x1b\xb3\x6e\x6f\xd3\x47\x79\xc6\xc6\x5a\xa0\x2f\xa0\x5d\xd1\x0d\xd2\xc7\x11\x30\xdf\xf4\x91\x67\x8b\x2b\x21\xf4\x37\x55\x2e\x56\x2f\x1b\xf8\xa3\x93\x14\x9b\x66\x58\x14\xa5\x30\x08\x21\x1d\x22\x30\x11\xa5\xc3\x34\xb0\xd3\x7a\xc3\x9e\x18\xa1\x65\xc9\x8f\xd5\xb7\x52\x94\xad\x39\xc0\x8a\xa0\xf5\xed\xf9\x29\x9e\xe3\xd2\x79\xd9\xb8\x96\x0b\xcc\x3a\x5d\x2d\x18\x54\xc9\xb4\xdf\x3b\x3f\x61\x88\x91\xb5\x4b\x87\x7c\xa0\x0b\x42\x33\x25\xbc\x70\xcc\xf8\x5a\x05\xca\x69\x67\xe6\xf2\x58\xe8\xd9\x8a\x5a\x66\xd0\x79\xf5\xb9\x41\xe0\x74\xab\x2b\x18\x31\xbe\xf2\xb8\xa6\xb7\xa0\x48\x21\x21\x81\x14\x78\xd2\x71\xd7\x9e\xda\xd5\x84\x3b\x7f\x21\xb8\x39\x16\xbd\xec\xfd\x79\xe5\x63\x44\x43\x58\x73\xa7\xd1\x5b\xe9\xf4\x0e\x8a\x3e\x4b\x3c\x14\xa5\x02\x69\x1d\xac\xb2\x04\xbb\x11\xdf\x95\x63\xc8\x40\x5b\x65\x08\xeb\x4e\x50\x6d\x15\x69\x96\xd3\x29\x10\xaa\x2b\x44\xd1\x82\x00\x57\x86\xdc\x58\xd3\x9b\x26\xa9\x80\x3a\x81\x92\x2a\xf2\xfd\xf9\x29\x79\x43\x0e\xcc\xbb\x0e\x71\xfb\x27\x94\x65\xe8\xce\xd4\x54\x2e\xaf\x91\x4d\xfc\x14\xb8\x24\xc4\x3d\x22\xa4\x3d\xa2\x03\xc2\x05\x51\x65\x32\xf3\x6b\x32\x1a\x97\x57\xd8\x5c\x3c\x1f\x1a\xf5\x5f\x21\xaa\x76\x26\x30\xdf\x2b\x90\xbd\xd1\x97\xef\x5b\xd0\x97\x50\x84\x30\x38\xd7\x84\x9e\x45\xac\x1c\x34\x4d\xa9\xa6\x8e\xee\xd4\x59\xd7\xaf\x71\x4b\x9f\x9a\xfa\x28\x78\xcf\x78\x79\x6f\x23\x56\xfa\x53\xf2\xaf\xcf\x70\x5a\x92\x78\xa0\xe1\xa6\xd1\xa2\xc8\x98\xcd\x77\x5e\x8a\xa0\x3a\x6f\x6c\xf5\x60\x83\x88\x84\xc7\x9c\x66\x99\x30\xe4\xcd\x70\x76\xca\x53\x91\xaf\xbc\xcc\x08\x50\xd0\x28\x74\x37\x22\xaf\x12\x79\x9e\xdc\x1c\x91\xc1\x1c\x3a\xd4\x74\x59\xae\xcb\x67\x66\x33\xb2\x98\xdf\x50\x9c\x9e\x64\x74\x0c\x99\xe5\x2c\x16\x81\xd4\x2a\x02\x3d\x75\x14\xa2\x14\x59\x7f\x39\x18\x57\x22\x03\x1b\xd6\xe3\x01\x61\xa6\x7f\x11\x70\xc0\x49\xfa\x82\x03\x2a\x32\x0d\x38\xa0\x4a\xf6\x12\xe0\x50\x76\x60\xb4\x64\x19\x0e\x86\x6b\x37\xe1\x80\xac\xf3\xb9\xc3\x41\x41\x92\x88\xbc\xb8\x94\xc2\xa8\x5c\xbd\xb1\x16\x37\x6d\xed\x2b\xb2\x3a\xf9\x9a\x20\x1c\x24\xe5\xcd\x9b\xa9\x0c\x02\xfa\xa8\xb6\x34\xde\x47\xf5\xfd\xaf\xb0\x43\xb2\x21\x3d\xcb\x7c\xc8\xcf\xd2\x70\x2b\x99\x27\xdd\x85\x17\x5e\x4e\xa0\x83\x95\xac\x17\x66\x22\x12\x9a\x61\xc9\xbd\x6e\x18\x43\x96\xb1\x66\x79\xe2\x20\x0a\x13\x5d\x4b\xf8\x9b\xf7\xfb\x63\xf5\x35\xfc\xc5\xd9\xbe\xb8\x48\x21\x70\x41\xda\xf0\xd1\x1b\x1b\xad\x87\xf7\xf9\x00\x50\xc3\xd5\xbd\x37\x30\x6d\x3c\xad\x85\xab\x00\xf3\xa1\x2a\xe4\x67\x16\x08\x3c\x65\x7c\x8a\x16\x9d\x01\x91\x90\xd9\xd0\x51\x77\x86\x6f\xad\xfa\xb5\x8f\x18\xed\x27\xf5\xe8\xec\x5f\x8d\x92\x10\x13\xdc\xcd\x8c\x46\x0e\x2f\xdf\x4c\x2c\xb5\x64\x8a\xec\xbd\xf7\x00\xe8\x50\xf9\xec\x39\x32\x88\x3d\xfb\x85\xd5\x6e\x5a\x1b\xdb\x2d\xe3\xa9\x8b\xb2\x6c\x00\xab\xaa\x51\x6b\xa5\x50\x8c\xdf\x65\x69\x48\x1a\xde\x91\xbf\x71\x52\x01\x8b\x0c\x5b\xa3\xc7\x95\x15\x58\xbd\x79\x69\xf8\xb0\xc9\xaf\x7a\xc9\xf2\x34\xdf\x73\xdc\x7b\xf3\xde\xa1\x51\x7b\x57\xef\xf3\xdf\xb2\xf7\x94\xfb\x7a\xc7\x78\x2a\xee\x54\xdf\x3a\xc4\x8f\x76\x5a\x2f\x50\x27\x06\xad\x35\xe3\x53\x15\xea\x11\x34\xcb\x1a\x66\xd8\x75\x8a\x84\xdf\xe1\xaa\x22\xf1\xaa\x00\xbf\x14\x1d\x1e\x95\x80\x1d\xc6\x34\x57\xf4\x44\x9a\x4f\xd1\x8c\x66\xd7\x45\xfb\xd2\x6c\x64\x19\x0d\xbe\xfd\x70\x7d\xdc\x9c\xda\xd0\xb3\x3b\xac\x78\x6d\x80\x6d\xae\x13\x9a\xe6\x4c\x29\x34\x03\xc1\x78\x26\xc4\x2d\x39\xf0\x61\x1b\x53\xa6\x67\xe5\x78\x94\x88\x3c\x88\xe0\x18\x2a\x36\x55\x47\x0e\x69\x87\x66\xf5\x87\x84\xf1\xac\x8a\x46\x41\x35\x92\x6b\xe5\xcd\x18\xf8\x92\xa4\x5a\x05\xee\xad\xab\xd7\xe9\xbc\xcc\xab\xcb\xb4\x15\x3a\x19\x64\x4f\x5f\x70\x66\x75\x7b\x2e\x3a\xd6\xce\x78\x64\x8b\xf0\xdb\x5d\x6a\x4a\x98\x46\xb5\x16\x8e\x56\x7a\x7b\x72\x20\x39\xe9\x20\x01\xd5\x5f\x55\x9e\xbf\xd4\x73\x92\x14\x6c\xf6\x04\x60\xd4\x09\xdd\x18\xdc\x84\x56\xd9\x7d\x4c\xc2\x73\x8f\xee\x87\x12\x2d\x7a\x7d\x6c\x9a\x87\xd1\x07\xb2\x62\x46\x87\x56\x49\x36\x24\x09\x69\x98\x97\x01\x66\x82\x0b\x17\x9c\x6e\xb8\xa0\xe0\x88\xd2\xa8\x2d\x58\x47\x10\xee\x89\xa3\xb1\xc1\x52\x4f\x6a\xff\x60\xe8\x43\xc2\x24\x1e\x5b\x04\xa0\x5e\xc3\x1d\xd3\x33\x5f\xe1\xbe\xe1\x70\xc2\x95\x48\x50\xe8\x3d\xe0\x04\xa4\x14\xd2\x05\xc2\x78\xab\x2d\xce\x84\xa4\x18\x23\x69\x0c\x92\x50\xf3\xd7\xbe\x0a\x5d\x94\x75\x09\x5c\x8c\x13\x33\xd8\x04\x93\x09\x24\x28\x29\x85\x00\xb6\x64\xf7\xa0\xae\xdc\xe7\xa2\xbb\x0d\x82\xb9\x12\xba\x39\xbb\x37\x6f\x09\x9f\x0a\x9d\xa1\xae\x62\xde\xfa\xcb\x87\x23\x42\xce\x79\x15\x39\x39\x30\xbb\x18\xde\xe9\x43\x7e\xb4\xf9\xc4\xb0\xfe\x32\x7e\x40\x68\x77\x32\xe2\x9d\x2c\x7b\xc0\xf8\x2e\xc6\x60\x12\x1a\x84\x7b\x25\x07\x68\x18\x76\x93\x9a\xad\xf7\x4c\xbc\x8b\xa1\xd8\xdc\xf2\xa9\x8c\xc5\x2f\x83\xd3\x93\xae\x74\xce\xa5\xc4\xf7\x54\x14\xf7\x3a\x98\x2d\x10\xbf\x2b\x77\xd3\xa5\x48\x6d\x49\x8c\x2a\xa5\x1f\x7b\x59\x60\x89\x0e\xf6\x4f\x2f\x60\xd5\x42\x1a\x17\x36\x2a\x3b\xac\x95\xe1\x6a\x82\xa6\xc4\xc8\xca\x99\xd7\xed\xf3\x22\x03\xcc\x9e\x0b\x66\xae\x13\x03\x83\x2a\xba\x83\x6a\x21\x75\x21\x5e\x57\xa1\x63\x40\xfe\x07\x0f\x65\x15\x00\xe8\x8b\x07\x5c\x56\x8f\x5b\x15\x8f\x29\x5f\x52\x1b\x33\xdb\xb4\xf0\xa6\x03\x92\xb2\xc9\x04\x7c\xa0\xa1\x51\xfd\xa8\xa4\xb9\x21\xf1\x8a\x38\x10\x8c\x61\xca\x6c\x24\x5b\x45\xd8\xf6\x55\x9d\x01\x3f\xb0\xc4\x90\x69\x92\xb3\xe9\xcc\x22\x0a\xa1\x98\x19\x49\xbc\x4b\x2d\x13\x34\x25\x88\xdb\x42\x92\x3b\x2a\x73\xc3\x37\x68\x32\x43\xff\x1c\xe5\x24\x2d\x25\x96\x89\xd4\x40\xd3\xc5\x50\x69\xaa\x8d\xa8\x0b\xd2\x69\x84\x7e\xfd\xb1\x94\xf0\x83\x23\x96\x12\xde\x3c\x62\x29\xe1\x58\x4a\x38\x96\x12\x7e\x78\xc4\x52\xc2\x6e\x3c\x7d\xb6\x2f\x89\xa5\x84\x5b\x8e\xd7\x55\xce\x26\x96\x12\xde\x69\xc4\x52\xc2\xab\x23\x96\x12\xde\x30\x62\x29\xe1\x0d\x23\x96\x12\x8e\xa5\x84\x63\x29\xe1\x58\x14\xed\xd1\xb9\x9e\x67\x51\x34\x12\x4b\x09\xbb\x11\x4b\x09\xbf\x8a\xd2\x4f\x24\x96\x12\xde\x6a\xc4\x52\xc2\xb1\x94\x70\x9b\x11\x4b\x09\xe3\x88\xb6\x97\x58\x4a\xd8\x8f\x58\x4a\xd8\x8e\xdf\x8e\xd4\x1c\x4b\x09\xc7\x52\xc2\xb1\x94\x70\x2c\x25\xfc\xe0\x2a\x62\x29\xe1\xd7\xa0\x4f\x2a\x9d\xb2\x56\x95\xcf\xb6\x29\x54\xe1\x22\x43\x82\xd4\xd6\x71\x39\x99\x80\x44\xca\x85\x6f\x5e\x89\x42\xa8\x0a\x5a\x55\xb4\xcc\xc5\x19\x60\x59\x3c\x09\x34\x75\x01\xef\x1b\x1e\x77\xb9\xb4\x58\xa1\xac\x8e\xd4\x3c\xfb\xf8\x4d\x3f\x55\x31\xba\xc5\x28\xe2\x9a\x3f\xf2\xa4\x7b\xac\x5a\x0d\xf0\x75\x09\x18\x0e\xee\x49\x26\x94\x8b\x30\x45\x60\x25\x33\xca\x39\x78\xe5\x91\x69\x34\xca\x8c\x01\x38\x11\x05\x70\x4b\xbf\x29\x51\x8c\x4f\x33\x20\x54\x6b\x9a\xcc\x46\xe6\x4d\xdc\x03\xbb\x8e\x06\x75\xbf\x28\x2d\x81\xe6\x3e\x2e\x36\xa7\xcc\x4e\x45\x68\x22\x85\x52\x24\x2f\x33\xcd\x8a\x6a\x32\xa2\x00\x03\xda\x2d\xa3\xaa\x80\x81\xe1\x25\x75\x08\xe9\xa0\x7e\x9b\x5b\x96\x08\x8b\x02\xa1\xea\x3a\xc0\x3a\xa8\x79\xa1\x17\x55\x1c\x1d\x90\x09\x93\x4a\x93\x24\x63\xc8\xad\xf1\x8d\x36\x77\x10\xe7\x1b\x78\x5e\xcd\xdd\x4a\x95\x5b\x2a\x4f\x51\x6c\x2d\xb4\xb2\x51\x69\xf5\x84\x6e\xaa\x94\x29\x27\xe6\xab\x01\xa1\xbe\xe4\x8d\x05\xb4\x5f\x29\x82\xda\x73\x16\x3b\xbb\xfb\x29\x98\x2e\xa8\x93\x57\x87\xed\xd5\x88\x8e\x21\xc6\x1e\x39\x07\x8d\x68\xea\x5a\xa0\xc0\x70\x97\x95\x63\x80\x1b\xc0\x61\x6e\x70\x00\x12\x30\xfc\x95\x6e\xc0\xfa\xcf\x8e\xf4\x01\x53\xfc\x00\x4a\xd1\x29\x5c\xb6\xf4\x5a\x6c\xd2\xc8\xd0\x71\x51\x6f\x0c\xa2\x42\x66\xd3\xd3\xaa\x5f\xea\x30\xa7\xa6\x18\x44\x72\xbb\xa6\x4a\xf8\xb9\x93\x4c\x6b\xc0\x4d\xc5\xe2\x48\xe8\xf8\x5c\x4e\x40\xdd\x5f\x0a\x96\xfa\xe0\x27\xa9\x1f\x36\x44\x9d\xa7\x36\x74\x69\x0c\x64\x2c\x19\x4c\xc8\x84\x61\x3c\x14\x46\x28\x0d\x6c\xb9\x0f\x6a\x2d\x0a\x4a\x19\x7d\x57\x70\x2f\xcb\xfa\x75\x8d\xc8\x8f\x6e\x61\x5a\x96\x3c\xa1\x41\x11\x40\x4c\xd1\x62\x13\x32\xc5\x08\x27\x27\x2d\xfe\xf1\xcd\x7f\xfc\x89\x8c\x17\x86\xa5\xa1\x64\xa5\x85\xa6\x59\xf5\x91\x19\xf0\xa9\x81\x95\x3d\x9e\xcd\x24\xa3\x0a\x02\x58\xc5\xdc\x2e\xfc\xed\xef\x6f\xc7\x4d\x1e\x7b\x94\xc2\xfc\x28\x80\xdf\x30\x13\xd3\x75\x75\xe1\xdb\x87\x4c\xb6\x54\x89\xd6\xa0\x99\xc8\x58\xb2\xe8\x8c\x68\xbe\xee\x0c\x99\x89\x3b\x2b\xeb\xaf\xc1\x9e\x3a\x06\xb2\x10\x45\x99\x59\x0b\xf6\x37\x55\x7a\x5e\xa9\x60\x35\x07\x67\xed\xb9\x40\x9b\xab\x9b\x62\xb9\x5e\xac\x0d\x6c\xf3\xaf\x14\x2e\xb6\xdb\x59\x05\xab\xf2\x33\xa8\x08\x7d\x43\xb3\x6c\x4c\x93\xdb\x1b\xf1\x5e\x4c\xd5\x47\x7e\x26\xa5\x90\xcd\xb5\x64\xd4\x50\xcb\x59\xc9\x6f\x6d\xe5\xea\x2a\x45\x58\x4c\x8d\x68\x55\x94\xda\x07\x12\xaf\xfb\x60\x9b\x70\xea\x89\xb0\x57\x83\xea\x59\xe0\x9e\xd5\xba\x8e\x4b\x95\xb0\x18\x19\xce\xaf\x42\x64\xfb\xfd\x9b\x3f\xfe\xbb\x45\x5d\x22\x24\xf9\xf7\x37\x18\xfc\xa8\x06\xf6\x10\x23\x6d\x33\x8c\x22\xa7\x59\x66\xd4\x86\x10\x29\x0d\xa0\xd7\x21\xe1\x67\xc7\x41\xdd\x1d\xdd\xb6\x16\xa5\x6e\x6e\xfe\x8a\x72\x14\xd3\x0a\xb2\xc9\xc0\x66\x05\x54\x6a\xcd\x3e\x32\x86\x7d\x47\x7d\x30\x35\xe3\x19\x08\x40\x73\x91\x95\x39\x9c\xc2\x9c\xf5\xd1\xbc\xa2\x31\x9b\x57\xf5\x33\xa6\x30\x01\x63\x9c\x89\xe4\x96\xa4\xee\x62\x10\xc6\xb2\x5c\x42\xb5\x3d\x14\xda\x06\xf4\x74\x08\xe4\xd9\xf8\xfd\x8d\x10\x9e\x9c\x16\x45\x15\xa3\x2f\xe9\x5d\x03\x18\x78\x26\x31\xdf\xb7\x63\x3d\x85\xce\x66\xe6\xae\x46\xe6\xa1\xfb\x22\x43\x37\x5b\x4f\xd1\x3a\x84\xa5\xbb\x8d\xba\x5e\x7d\x7b\xc3\x64\x03\x21\xea\x09\xfd\x69\x28\xf0\xdf\x36\x3c\x7b\x25\x2b\xa9\x4a\x6c\xa9\x10\xc3\x0a\x00\x06\x7d\x90\x24\xb7\x37\xb8\xf6\x60\xdd\xec\x16\xbf\xd4\x80\x0b\xaf\xac\xca\x39\xd5\x4e\x20\xf4\xe6\x6b\x4a\x0a\x90\x8a\x29\xc3\x97\x7f\xc0\x03\x75\x92\x51\x96\x07\x26\xc0\xa7\x01\x82\x3d\xdc\x58\xf9\xb2\x3b\xa5\xbc\x14\xa9\x9b\x10\x49\xa1\xad\xfa\xb9\x46\xac\x6d\x4a\xb5\x3d\x32\xd4\xa7\x26\x95\x3f\xd4\xd0\x6c\x52\x4a\xf3\x4b\x45\x2a\xed\x5d\xaf\x89\x40\xe2\xf7\xbd\x54\xfa\x58\x2d\xbe\x27\x32\x80\x84\xd1\x6d\x6e\x93\x12\x36\x94\x47\x7b\x50\x02\x91\xde\xe9\x81\x23\x62\x5d\xea\xe6\x4c\xb8\x47\xc9\xfe\xbb\xfd\x27\x25\x92\x16\x44\x52\x14\x74\xda\xa9\x87\xc1\x12\xa4\x96\xa7\x0d\x13\xbd\x8d\x1a\x84\xd7\xab\xb2\x43\x78\x17\xa4\x75\x21\x0a\x2c\x33\x62\xbd\xa3\x1e\xc0\x4e\x41\xb0\xf9\x90\x77\x74\x41\xa8\x14\x25\x4f\x9d\x7d\xa9\x32\xf0\x7d\x58\x7a\xf1\x85\xe0\xe0\x0d\xe7\xcb\x79\xe2\x68\xd1\x67\x9c\xbc\x1d\xbd\x7d\xf3\x5a\x38\x15\x7e\xe1\x12\xa7\xba\xa8\x38\x95\xa5\x4f\x4f\xfa\xad\xbe\xda\x71\x4f\xdf\xfb\xc1\x99\x58\xea\x62\xc6\xcc\x17\x6b\xc5\x9f\xee\x24\xd3\x10\xf4\x36\x3a\x40\xc5\xc5\xe8\x87\x41\x56\xf4\x61\x8f\x35\xbc\xfb\x49\x43\x57\xe5\xf8\x13\xd2\x2d\x47\xa0\xf0\xb8\xad\xb3\x70\xa9\x07\x48\x58\x08\xa8\xbd\x3d\x72\x60\xef\xdc\xb7\x99\x81\x87\x4f\x8a\x5a\x0e\x68\x67\xf7\x45\x87\x1a\x73\x0d\xc0\x9d\xdd\x17\x14\x6d\x70\x45\x8f\x10\xfc\x2f\x98\xd1\x39\x60\x46\x24\xcb\xa8\xcc\xd0\xe7\x78\x6d\xd7\x4e\xc6\xa5\x26\xc0\xe7\x4c\x0a\x8e\x01\x3e\x73\x2a\x19\x56\xa5\x90\x80\x99\xd5\x46\x17\xfd\xf2\xe0\x87\xe3\x2b\x0c\x68\x38\x74\x29\xe1\x6e\x95\xa5\xf2\xe5\x23\xc2\x95\x04\xd3\x3d\xba\x7d\x7e\x1d\x06\x86\x48\x73\xfd\xba\xcc\x7b\xf2\x52\x97\xb6\x20\xfe\x7d\x92\x95\x8a\xcd\x9f\x8a\x92\xb8\x54\xd5\x53\xd6\x6a\x9f\x97\xd2\x66\x6b\x40\xad\x64\xc0\xa2\x69\x1d\x59\xcb\x23\x15\x58\xf7\x55\x55\xb3\x2a\xf4\x81\x3b\xd3\x93\xcb\x65\xb7\xb1\x78\xbe\x64\xd9\x8a\x08\x81\x75\x1b\x9e\xd6\x08\x95\x72\x75\x82\x2b\xdc\x0d\xac\xcd\xe8\xe6\x46\x52\xe0\xe9\xc5\x75\x58\x04\xc0\xaa\x4b\x22\x1d\x91\xcb\xfa\xc7\xba\x52\x04\xd6\x2f\xaa\x94\x48\x90\xd3\xba\x26\xee\x14\x38\x48\x14\x12\xcc\x94\x8d\x76\x72\x64\x4c\x95\x75\xf2\x9c\x5e\x5c\x5b\x9b\xed\x6e\x30\x6b\x2d\x66\xb7\x97\x50\x0d\xc7\xb7\x39\x11\x2d\x84\xdb\x66\xb7\x9a\xca\x60\x65\x00\x83\x4a\xa9\x9d\x98\x9c\x5f\x12\x9a\xa6\x12\xdd\x3e\x4e\xf4\x09\x4a\xbd\x55\xbe\x05\xac\xca\x40\x15\x84\x6b\x0a\xc0\x8d\x24\xae\x06\x2c\x39\x2d\x8b\x8c\x59\x37\x42\xf8\x40\x5d\x4d\x02\xdb\xab\xec\x8e\xb4\x5d\xd4\xbc\xd6\x4a\x5e\x07\x2a\x24\xda\x56\x75\x7b\x60\xf7\x24\x28\x91\xcd\xeb\x82\x9a\x4b\xbb\xe6\x4e\x04\x9a\xc4\xab\x5d\xf3\x45\xdc\xb6\xda\x31\xe0\x5a\x9a\xa3\xb9\xbc\x5b\xd8\xbd\x37\x2b\xf1\x34\x55\x13\xb2\x39\xa0\x7f\xdc\xd5\xaf\x73\x65\x94\xea\x12\x9f\xd6\x37\x6c\xab\xac\x02\x95\x9e\xa2\xe1\xaa\x5a\x9e\x44\xf2\x54\x88\xb0\x6c\xec\x38\xbd\xb8\xb6\x94\xd0\x7e\x7c\xd5\x95\x6f\xdd\x2e\xd5\x54\xad\x35\x06\x3e\x59\x95\x8f\x2e\x9a\xc7\x52\x5b\x25\xd7\xa6\xb4\x53\x20\x4b\x07\xf1\xaf\x53\xe6\x5e\x87\xb7\x2b\xa0\x32\x99\xb5\x81\xff\x03\x84\xc0\x4e\x4a\x52\x61\x23\x01\x26\x42\xa2\x4a\x3c\x44\xf2\x9e\x09\x71\x5b\x16\xdb\x50\x74\x37\x8d\xed\x95\xb3\x15\x81\x68\x3c\xf1\x9b\xa2\xe9\x29\x57\x6d\xfc\xbd\x4d\xd9\x07\xb4\x95\x78\x70\xa2\x3a\x1b\x43\x2c\xeb\x4d\x27\x59\xa9\x34\xc8\x6f\x98\x54\x7a\xcf\x17\x5c\x45\x0c\xb6\x36\x91\xfd\xf0\x86\x1f\x99\x9e\xb9\xd2\x69\xfb\x83\xe6\x25\xf3\xb7\x9b\x78\xdf\xe8\xb4\xfb\x17\x82\xc3\xfe\x68\x59\xec\xaa\x48\x79\x45\xd6\x36\xf2\x14\xb7\x74\x05\x99\x8d\x17\xc5\x0b\x01\xae\xdc\xb8\xb2\x71\xe6\x0d\x9e\xfe\x29\xd0\x84\x62\x89\x26\xbc\x7b\x56\x97\x79\xb3\x05\x58\x6c\x9d\x3a\xe1\x04\xbd\x45\x08\xa2\xa0\x26\x8b\x16\x9b\x3f\xbb\x8d\x3c\xb7\x33\x06\xd8\xf2\x7f\xd7\x20\xe7\x2c\x81\xf7\x8c\xdf\xee\x88\x7e\xcd\xe8\x92\xb3\x95\xd9\x1a\x05\x79\xad\x8f\x96\x71\x1b\x7c\x67\x58\x0c\x1d\x8b\x52\xa3\xec\x86\x0e\xc7\x5a\x71\x64\xfc\x7f\xec\x5e\xa0\xbd\xbd\xb0\x15\xb3\xd6\xe9\x88\x6a\x60\x8d\x3e\x5e\x09\x54\x0b\xae\x29\xd6\xf6\x3b\x15\xc9\x2d\x48\x92\x99\x65\x8c\x48\x1d\xf8\xd2\xa8\x26\x27\x4b\xd8\x31\xea\xa2\xad\xa5\x03\x8a\x19\xe4\x20\x69\x56\x17\x55\xec\x00\xea\xf7\x8e\x70\x56\xb3\x86\x31\x29\xb6\xba\x90\x2b\x83\x66\xce\xe1\xd9\xba\xbb\x72\xba\xf0\x95\x26\x19\xc7\x70\x83\x7b\xa6\xd0\xac\x5f\x88\x34\xcc\x62\x2b\x15\xc8\x61\x95\x63\xe8\xf2\x78\x54\x15\x88\x93\xc2\xb8\x9c\x4e\x19\x9f\x3a\xea\x8c\x34\xbd\xae\x35\x56\x6b\x3a\x18\xe9\x9d\x48\xb0\x05\x1f\x51\x7a\xb0\xf1\x65\x2c\xbc\x3f\x17\xa9\xbd\x7d\xbc\xb0\xda\xa0\xdf\xd9\x3a\x40\xfa\x9c\x13\x21\x5d\x9d\x05\x9a\xa6\xb8\xf6\xd5\x2f\x74\x2d\xbd\xc3\xaf\x1a\x54\x71\x1c\x36\xb2\xbb\x7a\x2a\x00\x8b\x2a\xc7\xbe\x47\xf7\x63\x35\x36\x99\xb2\x05\xbe\x82\xf2\x9a\x5e\x35\x58\xae\xad\x79\xb6\xba\xfb\x3e\x3e\xba\xcd\x39\xdf\x9d\xbd\xb4\x62\x2d\x4d\x6e\xcd\xd7\x7c\x85\x0d\x13\x5f\xf2\x8e\x3a\xcc\xa2\xd8\x53\x54\x43\x5e\x08\x49\x25\xb3\xe4\x6e\x19\xcf\x0c\xbf\x58\x83\x60\x73\xdb\xab\x71\x0d\x8e\xad\xc5\x65\xa4\xb6\x5c\x54\x2d\xe4\x0d\x5f\x50\xc9\x0c\xd2\x12\xa3\xd4\xa7\x25\xc5\x56\xb0\x86\x5a\x38\xa3\xfa\xc2\x85\xff\x59\xa4\xab\x02\x0b\xab\x74\x84\x05\x06\xe3\x60\xb5\x3d\xf3\x0b\x62\xab\x0d\x41\xb4\xad\x34\xb1\x2f\x5f\x18\x8d\xb8\x01\x09\x13\x8a\x6d\xfe\xa8\x3f\x54\x70\x9f\x80\x21\x6b\x5a\xd5\x8b\x75\xf1\x29\x58\x4b\xd4\x63\xba\x83\x21\xcc\x59\x82\x6f\xd8\x78\x84\xdd\x17\x58\x60\x8f\x17\x75\x6b\xe3\x0d\x87\xe7\xc6\x7c\x5b\x95\x2c\x84\x4f\xf9\x14\x81\xad\x0e\xc5\x32\x04\x9b\x8a\x90\x7f\x0f\x11\x3c\x71\xd3\x07\xf9\x04\xdc\x1e\xa1\x2a\x33\xc0\x75\x21\xf4\xd1\x25\x0f\x1c\x12\x5b\x77\x76\x47\xf4\xed\xa0\x67\xb4\x77\x22\xb6\x72\xfe\x75\x51\x69\xa8\x9c\x76\x57\xff\xf6\x8f\xe5\xb4\xcc\x6d\x59\x60\xb1\x54\x99\xd5\xf5\xb3\xb4\xec\x14\x2d\x76\x86\x19\x9f\x7c\x38\x0d\x93\x33\xc2\xa8\x73\x9f\xda\x62\x84\xbc\x8e\x96\xdc\x65\x53\xae\x39\x68\xb5\x7d\xb8\xe6\x1a\x4e\x3f\x75\xb6\xca\xea\x6d\x1e\x2d\x19\x2f\x8c\x9c\x81\xd2\x51\x6d\xad\xe4\xc9\x8c\xf2\x29\x1a\xf8\x45\x69\xe6\xfb\xf2\x4b\x5c\x91\x84\xb4\x4c\x5c\x49\x79\x1f\xd9\xfd\xa5\xb7\x6b\xba\x4a\x47\xd8\x57\x4a\x25\xb4\xf0\x6b\x0e\x3f\xcb\x0a\x21\xef\x08\x1b\xc1\x88\xec\x7d\x19\x5c\xda\xb3\x6f\x2f\xa4\x30\xaf\x70\x41\xe1\xb8\xaa\x8c\x69\x3c\xde\x7b\xe1\xdd\x23\x72\x66\xde\x81\xbe\x9e\x0a\x80\x41\xdc\xf2\xb8\x06\xdf\x80\x48\x98\x52\x99\x66\x98\x4b\x38\xa9\xc4\x2d\x9b\x71\xe4\x00\x86\xa4\x17\x23\x05\xb9\xd0\xeb\xec\xae\x3b\xf5\xbb\xb7\x42\xda\x30\xa5\x9a\x0e\xb1\x0c\xbf\x25\x62\x47\xd6\x70\x30\x74\x85\x10\x87\xd4\xa1\x56\xd0\x11\xff\x0b\x97\x33\x36\xa4\xd5\x5d\x8c\x0f\xe9\x10\x4b\x12\xb6\x8f\x82\x7d\x82\x80\x89\x4e\x3a\x7c\x87\x7a\x98\xcb\x82\x77\x55\x46\x19\x61\x30\x22\x17\x42\xd7\x65\x73\xab\xd8\x0c\x57\xf2\x71\xdd\x79\x3e\xbb\xb8\xb9\xfa\xeb\xe5\xc7\xf3\x8b\x9b\x78\xac\xe3\xb1\x8e\xc7\xba\xc3\xb1\x06\x3e\xef\x7c\xa4\x2b\x05\x6f\x9d\xce\xbb\x54\x8a\x2f\x48\x19\x7f\x45\xd1\x67\x67\x7c\xfe\x03\x95\x75\x2f\x77\x94\x1f\xd7\xba\x89\x7d\xb3\x77\x24\x71\x27\x2f\x3e\xfc\xec\x09\x83\xc7\x7a\x0c\xca\xb9\x08\x2a\x1d\xac\xdb\xb5\xb0\x01\xd6\xc9\x2f\xe7\xa7\x67\x17\x37\xe7\xdf\x9c\x9f\x5d\x3d\x69\x34\x45\xc7\x52\x78\x4d\xa6\xdc\x92\x4b\x16\x12\xe6\x4c\x94\x2a\x5b\x54\x8d\xa6\xd6\x13\x81\xd5\x80\x3c\x9e\x12\xca\x17\xde\x9e\xb6\xfe\xb1\xc8\x6c\xfb\x65\xb6\xcd\xe0\x92\x0e\x85\x4b\xfa\x42\xdf\x6f\xa4\x68\xdd\x48\x7f\xd9\xb6\x6f\xed\x13\xde\xa6\xbf\x0e\x9f\xf6\x5d\x8d\x83\x06\xeb\x71\xc2\x63\x5d\x50\xc1\x08\xa3\x79\xa1\x3b\x94\x09\xef\xa5\xf8\x69\x3f\x75\x42\x6d\x20\xc6\x07\x5a\x7c\x07\x8b\x2b\xe8\x58\x1f\x65\xc9\x97\x92\x41\x62\x18\x1d\xb9\x85\x85\x75\xb1\x9e\xf8\x97\x75\xa9\xe3\xf2\x2c\x6b\xc7\xde\x42\x97\xba\xbe\x7d\x16\x7d\xbd\x85\x0e\x91\x99\x7e\xac\x94\x3f\x35\x5b\x88\x72\x9a\xd9\xd3\x6e\xbb\x47\xfa\x2d\xf8\xfa\x09\x8a\xdc\xee\x87\xec\xde\xd1\x59\xbd\x73\xf9\x08\x31\x37\x9c\x0b\xee\x8e\x5c\x54\xda\xd0\x28\xae\x43\x8b\xb5\xea\x08\x43\x6f\x8e\xbe\xc0\xff\xb8\xa2\x60\xc7\x69\xea\xa2\xa3\x4b\x05\x93\x32\xb3\xb6\x7a\x35\x22\xb4\x60\x3f\x80\x54\x68\x52\xbd\x65\x3c\x1d\x90\x92\xa5\x5f\x77\xa9\x2a\x65\x47\x8f\xbb\x20\xbc\x47\xaa\xdf\x9d\xb8\x76\x0e\xc7\x90\x77\x55\x44\x84\xd8\xd4\x47\xc4\x4d\x6f\x03\x76\x42\x46\x4f\xa0\xe9\xda\x89\x8a\xd8\x2d\xec\x97\xae\xee\xd7\x84\xd5\x3a\x73\xaa\x0a\x5c\xe9\x3b\x5f\x68\x4e\x55\xed\xa3\x46\x06\xc3\x06\xcd\x3f\x55\x41\x13\x18\x90\xbf\x57\x3f\x62\xc3\x65\xf5\xd3\xfe\xfe\x9f\xbf\x3b\xfb\xeb\x7f\xee\xef\xff\xfc\xf7\xf0\x2a\xb2\x42\xd4\x9a\x97\x6e\x41\x1b\x3c\x17\x29\x5c\xe0\x3b\xf0\x4f\x27\xae\x1d\x27\x89\x28\xb9\x76\x17\x30\x6d\x79\x34\x13\x4a\x9f\x5f\x56\x7f\x16\x22\x5d\xfe\x4b\x75\x2a\x95\xf6\x2c\x19\x03\x6e\x51\x87\xf4\x1b\x3b\xfa\x63\x0f\x35\x2d\xe9\xf9\xa8\xba\x59\x3d\x36\x62\xc9\x5d\xeb\x89\xf9\xc6\x83\x00\x5b\x5c\xfa\xfa\x08\x1c\x93\xca\x8d\x64\xda\xac\x9b\xb7\x37\x7f\xdb\xa9\x99\xaf\x1d\x3d\x92\xb6\x6a\x07\x7b\x06\x18\x42\xc4\xb7\x52\xc2\x83\x5c\x31\x58\xaf\xa5\xd4\xee\xe6\xe3\xcb\x73\x32\xb7\x10\x7e\x36\xc0\xf1\x4e\xb4\x6f\x3e\x29\x8d\xab\xbd\xa0\x4b\xc9\xab\xef\xac\xbf\xda\x5f\x77\x85\x04\x54\x55\xdb\x0b\x8c\x62\x73\x60\x7f\x1c\x25\x45\x39\x70\x37\x8c\x72\xc8\x85\x5c\x54\x7f\x56\x2e\xc2\xa1\xd2\x42\xd2\x29\x26\x9e\xd8\xc7\xed\x63\xd5\x5f\xf6\xc1\xc6\x0b\x56\x9f\xb6\xaa\x70\x52\x4a\x23\x34\x64\x8b\xba\xf4\xe7\xeb\xa3\x6d\x1e\xf4\xcf\x84\xb4\x55\x98\xd1\xb5\xef\xa3\x1d\x4d\x84\xac\x83\x04\x50\xe0\xac\xa0\x88\xfa\xa4\x4b\xac\x1d\x54\x62\x90\xb5\x06\xf0\xb9\xd1\x2c\x5b\x97\x06\xab\x47\x8f\xd4\x2c\x65\x73\xa6\x44\x87\xf4\x9a\x6a\xa2\xcd\x39\x03\xae\xb6\x87\x8d\x8c\xaa\xcc\x66\xf7\x05\x56\x43\xaa\xce\xeb\x12\xd9\x7f\xdb\xa5\xd3\xb7\x1d\x05\xd5\x1a\x24\x7f\x47\xfe\xfb\xe0\x6f\x5f\xfd\x3a\x3c\xfc\xfa\xe0\xe0\xa7\x37\xc3\xff\xf8\xf9\xab\x83\xbf\x8d\xf0\x1f\xff\x7a\xf8\xf5\xe1\xaf\xfe\x8f\xaf\x0e\x0f\x0f\x0e\x7e\xfa\xee\xc3\xb7\x37\x97\x67\x3f\xb3\xc3\x5f\x7f\xe2\x65\x7e\x6b\xff\xfa\xf5\xe0\x27\x38\xfb\x79\xcb\x49\x0e\x0f\xbf\xfe\xb2\xf3\xd2\x7b\x28\x4e\x6a\x47\x9f\x25\x4a\x9b\x33\xf6\x82\x7e\x9f\xb0\xc8\xbf\x1d\x1e\xbd\xfa\x3e\xff\x3e\x3c\xfa\x5d\xcd\x90\x2a\x76\xfd\x6c\x0e\xb8\x82\x44\x82\xfe\x1c\x96\x1c\xfb\xa6\x20\x50\x66\x5f\x91\x4a\xb5\x78\x6d\x7c\xee\xb7\x60\xdc\xf1\x62\xbb\xdd\xd7\x5a\x12\x9d\x48\x91\xfb\xb4\x77\x74\x6f\x60\x9b\x6b\x7f\xdf\x2d\x74\x6a\x96\x68\x47\x34\x06\x45\x63\xd0\x86\xf1\xa8\x31\xe8\xda\xe2\xe1\xb3\xb5\x04\x01\x9f\xb7\x75\x61\xac\xf5\xa0\x7b\x5d\x27\xac\x11\xb7\x9d\x43\x6d\xe4\x8f\xba\xaa\x3c\x71\x75\x24\x8d\x65\x68\xf9\x7a\x1f\x26\x76\xb1\x67\xdc\x1e\x7c\x9c\xa0\xce\x2b\x71\x5d\x0d\x6c\x09\x43\x98\x9b\x25\x54\x35\xb0\x1b\xd5\x2e\x31\xba\x14\x63\x5e\x7f\xb4\x21\xa8\xb7\x36\x2a\xd5\x28\x69\x8c\xd7\x75\x42\x2b\xe1\xb0\x2e\x2e\x4d\x95\x12\x89\x8d\xa6\xad\xb2\x1c\xb0\x74\x9d\x5b\x36\xae\x06\xfb\x4c\x07\xfd\xc8\x6d\xe1\xe9\xfa\x5b\xc7\x0b\xac\x87\xc9\xe7\xbe\xf8\x76\xea\x73\x66\x70\x25\xeb\xe7\x78\x5d\x01\x08\x06\x11\x9d\x13\x2c\x88\x43\x40\xaa\x5f\x69\xd8\x14\x43\x31\xc4\xa4\xb6\xb2\xb6\x6b\xf3\xd7\x99\x8b\x77\xe7\x99\x95\x67\xab\x93\x30\xb4\xc2\x2c\x6b\xf3\x73\x93\x49\xbe\x06\x67\x60\x77\xf6\xf9\x9b\x63\x9d\x3d\xb1\xcd\x7e\x58\xe6\x0e\xbe\x93\x3e\xd9\x64\x1f\xce\x92\x42\xc2\x84\xdd\xf7\x74\x4e\x8f\x79\x6d\x89\x61\x29\x70\xcd\x26\xcc\xe6\xd0\x14\x12\x0a\xe0\x36\x79\x81\x26\x33\xa4\xfd\x8e\x53\xd6\xce\xe9\xe7\x18\xcc\x63\x05\xee\x7e\x49\xd9\xf5\x3a\x61\x3f\xd2\x31\x12\xe9\x58\xeb\xf1\x99\xe8\x98\xc3\xdc\xe7\x43\xc4\x30\xf2\xbc\x7b\xe8\xfb\x69\x10\xc7\x8e\x58\xbc\x33\x96\xd5\x79\x4e\x47\x38\x4b\x2b\xeb\x73\x27\x64\xc0\xd7\x5e\x96\x59\xd6\x53\xf5\xed\xfd\x73\x84\x46\x51\x66\x99\x4b\x3a\x1e\x91\x8f\x1c\xcf\xe3\x31\x76\x79\x18\x90\x0b\x98\x83\x1c\x90\xf3\xc9\x85\xd0\x97\x56\xb0\x6d\xc6\xb2\xd9\x1b\x09\x9b\x90\x77\x46\x65\x52\x9a\x68\x5b\x69\x3f\xa8\x0b\x24\x64\x63\x82\xba\xe4\x58\x87\x18\xf4\xcd\xdb\xf2\x85\xcf\x68\x1b\x3e\xd1\x36\x55\xad\x4c\x7a\xd0\x4d\x7d\xcb\x3a\x17\x1d\x87\x11\x91\xce\x35\xb2\x2e\xa7\xf7\x05\x96\xd9\x28\x84\xd2\xd7\x46\x85\xed\xa7\xcd\xcd\xa5\x9f\x0e\x3b\x47\xd0\x2c\x83\xb4\xd1\xe7\xc8\xf6\xe7\xa0\x4d\x15\x1a\xb3\x8d\xab\x76\x11\x40\x66\x94\xa7\x19\x48\x2c\xf9\xae\x96\xeb\x5a\xb1\xba\xc7\x41\xd5\x95\xc2\xa7\x85\xd2\x24\x11\x32\x75\xcd\x6a\x5d\xf2\x26\x2e\xa6\x3a\x5e\x48\x68\x73\xca\xe9\xd4\x76\x29\x5c\x29\x1c\x8c\xe5\xa4\x55\xd0\xda\x62\x26\xc4\x2d\x49\x44\x5e\x64\x78\x00\x3a\x9c\x8f\xba\xb3\x4e\x85\xa2\x43\xec\xa6\x78\x14\x34\xdd\xc1\x1f\x9e\xb0\x3b\x62\x1f\x72\x0a\xdc\x43\xd2\x5b\x57\x3e\x43\x11\xcd\x2e\xa3\x4f\x5c\xf0\x4a\x5c\x99\x08\x73\x18\xcd\x5e\xd7\xf5\x08\x2a\xa2\x37\x22\x67\xf7\x90\x04\x9d\x2d\xcd\x13\xae\xb5\xa5\x16\x68\x0f\xe9\xde\xb1\xb8\xb3\x29\xbf\x2f\xf3\x79\x87\x04\xb5\x70\x2c\x55\x9f\xc3\x39\x7d\xb1\x6d\xf7\x0a\xec\x5b\x60\x13\xa4\x31\x69\xcd\xd7\xdf\x6e\x9c\x21\x7b\x62\x57\x4a\xd6\x55\x01\xca\x7e\x2e\x4c\xd4\x16\x42\x93\x83\xfd\xa3\xfd\xc3\x15\xbb\xde\x52\xc5\xe6\x9b\xe0\x49\x86\x25\x0a\x0b\xac\xf7\x07\xc9\x7e\x3a\x20\x4c\x7b\x1a\x6d\x2b\x25\xe0\xaa\x5c\x26\xdd\x80\x28\x41\xb4\xa4\x29\x73\x9a\x13\xfe\x6a\x6e\xd2\xb2\x74\x65\x12\x0e\xf6\x7f\xdd\x1f\x10\xd0\xc9\x21\xb9\x13\x7c\x5f\xe3\xf2\xb1\xa6\x48\xa9\x82\x89\x16\xa2\xc4\xd6\x7d\x16\x04\x55\x81\x10\x43\xe8\x88\x28\x6d\x9f\x9f\x19\xd5\x3e\x83\xef\xec\x9e\x69\xdf\xdb\x42\x4c\xc8\x1b\xdb\x66\x08\xa8\xb3\x2c\x66\x6c\x0e\x47\x33\xa0\x99\x9e\xd9\xe0\x0b\x2e\xf8\xd0\x76\x8a\x33\x14\xc8\x5d\xe9\xea\x87\xe8\x66\xa6\x0b\x47\x07\x93\xdd\xea\x82\x3a\x4a\xe4\x86\xf6\x7e\xdb\xbe\x17\x2e\x59\x69\x13\x7d\x73\x73\xf9\x6d\xa3\x19\x2e\x12\x7f\xad\x0b\x1f\x12\x13\x14\xdb\x78\x06\xb4\xa3\x1f\x27\x60\xa7\x4e\xb6\xa4\x47\x12\xd6\xb5\xa3\x2d\x59\x6d\xfb\xbd\x5b\x2b\x5b\xf2\x57\x51\x62\x0b\x3e\x3a\xce\x16\xe4\x8e\x72\xed\xd3\xf7\xf6\xcc\x54\x7b\x86\x3c\x19\x6c\xf8\x0b\xd0\x14\xa4\x42\xea\x01\xb4\x75\x51\x31\x3f\x7a\x73\x4e\x05\x6b\xeb\x97\x0f\x94\x4a\x8b\x9c\xcc\xdc\x67\x37\x53\x1a\xdd\xc9\x18\xe1\xe9\xf1\xf9\x42\x12\x0a\x4b\xe1\xdc\x33\xaf\x8e\x7e\xad\xd0\x0d\x0b\xf7\x46\xf1\xfd\x24\x04\x5b\xd8\xa2\x85\x71\x0b\x2c\xdb\x5c\xb1\x27\x5a\xda\x43\x50\x01\xe9\x31\xb0\x80\x74\x4b\x90\x5c\x9e\x08\x9d\x65\xdd\x63\xa8\x7a\x8b\x55\x20\xbd\xf9\xe3\xc9\x3a\xe3\xa5\xc3\x19\x1b\x39\xdb\x13\x10\x7b\xf5\x82\x93\xee\x29\x98\xe1\x78\x18\x00\xfd\x6c\x3e\xe9\x13\x02\x45\x0f\x21\xd3\xab\x01\xd3\x2b\x2d\xc6\x91\x4c\xd8\x4a\x55\xcf\x86\xcb\x74\xed\xb7\x4e\xd6\xe7\x1f\x4b\xc2\xab\xf6\xb8\xfa\x45\xf4\x5c\x27\xfd\x85\x36\xf6\x1d\xd8\xd8\x6b\x58\xe3\x27\x0d\x6a\xc4\x54\x8a\xce\x54\xa4\x69\x53\xc7\x29\x0d\x06\x18\xbd\xcd\x68\x9c\x4e\xf6\x73\x46\x21\xdf\xc2\xa3\x69\x45\x35\x47\xed\x59\x9c\x31\x9d\x14\xd7\x22\xb9\xed\x51\xaf\xd9\xbf\x39\xb9\xb4\x53\x06\xaa\x0d\xe5\xde\x18\xc2\xf8\x5c\x64\x73\x5b\xe9\xef\xe6\xe4\x12\x4f\xde\x08\xff\x85\x86\x28\xd4\xa8\x17\xe6\x59\x1f\xec\xef\x5c\x38\x46\xfb\xb6\x16\x34\x4a\x24\xd0\x8c\x29\xcd\x12\x7c\xae\xb2\x6d\xe1\x0c\x5d\x7c\x37\x51\x53\x5a\x37\x7a\xd7\x94\x82\x6e\xb3\xbb\x2a\x4d\x5d\x83\xf3\x9e\x31\x5f\x72\xfc\x48\x56\xcd\xd4\x22\x5f\xea\x69\xbe\xe7\xcb\x97\x0a\x09\xd7\x5a\x14\x3d\x79\x42\xec\x64\x1b\xfc\x20\x63\x98\x08\x09\xcb\x8e\x90\xc0\xb1\x91\x96\xe0\x0a\x71\x1e\x5f\x9e\x57\x26\x28\xd1\x70\x5e\xd8\xb0\x44\x5f\x7d\x33\x63\x73\xe0\xa0\xd4\x11\xba\x3c\xca\xc2\xaa\x98\xbe\x6f\xee\xc0\x7c\x1d\xe4\x85\xad\x5f\x59\x85\xfa\xbb\xae\xbd\xf8\x23\x68\x5b\x78\xb2\xf2\xbf\x38\x8b\xaa\x5f\xfe\xb2\xab\x24\x91\x54\xcd\x6c\x47\x5b\xb8\x67\xda\x75\x65\x96\x40\x95\xe0\xd6\xd8\x1b\x34\xd7\x65\x8a\x14\x54\xa9\xba\x0c\xb8\x7b\x89\x7d\xe8\xd2\x96\x0e\x0e\x1f\x98\x4a\x9a\x00\x29\x40\x32\x91\x12\xcc\xb9\x4d\xc5\x1d\x27\x63\x98\x32\xae\x3c\xfc\xcc\x44\x1e\xd0\x86\xdd\x00\xda\x86\x7d\x45\xb5\x11\xb9\x6a\x14\x0a\x71\x29\x3c\x89\xa8\x4f\xb4\x5b\xc5\xb2\x93\x09\xa3\x26\x11\xbc\xb6\xad\x4c\xb5\x31\x61\xa7\x9d\x47\x16\xdd\x83\xb7\xc9\x36\x83\xf2\xd7\x36\x42\x07\x0b\x9e\xd2\x64\xd6\xcd\x7d\x1b\xdd\x53\x5b\x8e\xe8\x9e\xda\x6d\x44\xf7\x54\x74\x4f\x6d\x1e\xcf\xce\xbc\x1b\xdd\x53\x51\xe9\x5a\x1e\xd1\x3d\x15\xdd\x53\x1b\xc6\xb3\xa3\x5f\xd1\x3d\xb5\xc5\x88\xee\xa9\x2d\x47\x74\x4f\x45\xf7\x54\x74\x4f\x45\xf7\xd4\x6f\xc8\x0c\xe8\x47\x74\x4f\xad\x4c\x12\xdd\x53\x01\x30\xa2\xa6\xb4\x66\x44\xf7\xd4\x9a\x11\xdd\x53\xc1\x88\x7c\xa9\x05\x5f\xf2\xce\x9d\x4b\xa3\x97\x75\x6f\x23\x8c\xda\x1d\xd6\xf3\x7b\xa5\x69\x4d\x5d\x6c\xfc\xcf\xda\xbe\xff\x4c\x7c\x28\x3d\xd8\xf4\xa3\x3d\xff\xd5\xd9\xf3\xfb\xb1\x85\xf5\x60\x07\xeb\x4c\xca\x9d\xd7\xfc\x66\x26\x41\xcd\x44\xd6\x1a\xd1\x1b\x48\xfe\x81\x71\x96\x97\xb9\xc1\x39\x65\xf0\x99\xcd\x2b\xf7\xbc\xaa\x5b\x32\xa3\xd7\xde\x9a\xe4\xcc\x8d\x2c\x05\xac\xc6\x49\x59\x66\xb6\x11\xf3\x27\x67\x14\x65\x62\x55\x26\x09\x00\xf6\xfa\x0a\xd5\x85\x3f\x8c\xaa\x37\x55\xbd\x1d\xde\x76\xa3\x37\xdd\x98\xac\xad\x97\x89\xb3\xfc\xe1\xf7\xad\xe6\xe8\xe8\x4e\xf9\xfc\xae\x94\x1e\xc8\x74\x77\xc5\xa0\x93\x52\xd0\x07\x97\xe8\xaa\x0c\xbc\x34\x97\x49\x6f\xae\xc3\x1e\x5c\x25\xcf\xc8\x4d\xf2\x6c\xd8\xc2\x73\x71\x8d\x3c\xc3\x52\xa0\x3d\x58\xf2\xfb\x70\x85\xf4\xe7\x06\xf9\x04\x15\x33\x3f\x8d\xfb\xa3\x47\xb5\xb3\x27\xb7\xc7\xe7\x70\x79\xf4\xf2\xd5\x5d\x5d\x1d\x9f\xcf\xcd\xd1\xcf\xe7\x76\x34\x23\xbd\x0a\xd7\x46\x0f\xe6\xa3\x3e\x4d\x47\xbd\x99\x8d\x3e\x99\x2b\xa3\xbb\x1b\xe3\x19\xb8\x30\x3a\x03\x99\x71\xa6\x19\xcd\x4e\x21\xa3\x8b\x6b\x48\x04\x4f\x5b\x73\x98\xa5\x12\x6a\xd5\xf9\x51\x76\x5a\xa7\xa3\x35\x03\x7d\x67\xd4\x55\x8a\x85\xd4\xc7\x2e\x7b\x93\x9e\x13\x28\xd0\x1a\x67\x57\xd9\xa6\x0e\xd3\x9d\x90\xb7\x99\xa0\xa9\x3a\x2a\x84\xfd\xbf\x3a\x8c\x37\x88\xdf\xb5\xef\xea\x16\xc0\xfb\xd4\xca\xa0\x8d\x7a\xee\x73\x13\xff\x22\xee\x88\x98\x68\xe0\xe4\x80\x71\xbf\x8f\x87\x81\x1a\x58\x6b\xe6\x15\x5a\x9b\xab\x6f\xdf\xf8\x9b\x5f\x9f\xca\x8d\xc6\x05\xa5\x3e\xbd\x05\xc4\xbd\xe8\x71\x13\x88\xbb\x71\x52\x66\x4d\x33\x88\x35\x8d\x34\xe9\xcd\xdb\xba\xd6\xe5\x5b\x9c\xb7\x3a\x6d\x94\xa7\xc4\x65\x48\xbc\xbe\x4d\xeb\xec\xa0\x7d\x0d\xce\xd9\x68\x7b\x21\x7d\xdb\x5e\x9e\xc8\x09\xfb\x0c\xa5\xe6\x17\xea\x78\x8d\x52\xf3\x0e\x23\x48\xb4\xfa\x56\xd2\x04\x2e\x7b\x17\x38\xfc\x71\x22\x69\x29\x5d\x7e\x5c\x25\x77\x54\x87\x87\x03\xa4\xf6\x34\x55\xd9\x67\x98\xf6\x35\x29\xb3\x6c\x41\xca\x42\xf0\x66\x8a\x9f\x75\x5a\x2d\x67\x86\x99\xd9\xd6\xbd\xa5\x96\x52\x0b\x29\x1c\x03\x96\x25\xe7\x86\x9e\xd7\xdd\x6f\x50\x2a\x55\x96\x56\x87\xf9\x67\x8a\x4d\xcd\xf2\x0d\x33\xc5\xd4\x34\x96\x43\xdd\x1f\xa1\x9e\xd0\x3c\x3d\x11\x32\x61\xe3\x6c\x41\x66\x34\xab\x5a\x1d\x50\x72\xcb\xb2\xcc\x4d\x33\x22\xd7\xa0\x89\x9e\x31\xd7\xa5\x9a\x64\x82\x4f\x71\x71\x94\xfb\x16\x5b\x90\x98\x67\x93\x0c\x28\x2f\x0b\xfb\x3e\xc3\xd6\x17\xa2\x94\xfe\x7d\xae\x7e\x64\x35\x0b\x53\x84\xb3\x6c\x10\x34\xf2\x79\x70\x63\xeb\x6e\xe9\x0a\x7c\xf2\xde\x1d\x53\x30\x08\xe7\x14\x73\x90\x92\xa5\xce\x69\x60\x7f\x2b\xa4\x98\xb3\xd4\xb6\x62\xf0\x60\xc3\x96\xa1\xb6\x55\x43\x75\x9e\xb9\xe0\x43\x0e\x53\x8a\x52\x8f\x3b\x45\x76\xcf\xec\x3c\xd6\x15\xc7\x53\x6c\xde\x60\xd4\x05\x51\x34\x72\x46\xe7\xcc\xb6\x9d\x0c\x20\x47\x0e\xb8\x20\x02\xd9\x6b\xc9\x99\xb6\xad\x8c\x67\xa5\x26\xa9\xb8\xe3\x87\x66\x72\xa6\x0c\x1c\x28\x19\x83\xf6\x6d\x55\x7d\x9b\x3f\x26\x41\x11\xe0\x74\x9c\x99\x3d\xc7\x98\x80\x9b\xb5\x00\x22\x13\xa0\xba\x94\x40\xa6\x54\xc3\x5a\xa1\xc9\x7e\xef\xc3\xe0\x65\xaa\x6a\x39\x5e\x72\x05\xad\x9b\x2d\xf7\x2c\x69\xfd\xe9\x8f\xed\x68\x04\xcb\x41\x94\xfa\xb3\xa8\x92\xb6\x1d\x7f\x20\x19\xb3\x1c\x14\x11\xe5\x92\x8e\xfd\xd6\x3d\xb6\x7e\x87\xa2\x3e\xb9\x6e\xb4\xb5\x12\xaf\x31\xa5\xb9\x6e\x80\xab\xf1\x33\x41\xb7\x53\x6a\x8e\xe2\xe9\xc5\xf5\x2f\xef\x8f\xff\xeb\xec\xbd\x3b\x9f\x3c\x64\xfa\x25\x67\xff\x28\x81\xd0\x5c\x18\xb9\x3a\x0b\xc3\x70\x06\x68\x1e\x08\x7e\xc0\x93\xdc\x6f\xc0\x4e\x4b\x86\x8c\xad\x99\xbb\x87\x25\x61\x83\xe7\x4f\x1f\x95\xf4\xd4\x2d\x6b\xaa\x96\x9b\xe6\x83\xc3\x96\x35\x94\x70\xd0\xe6\xe4\x59\x89\xd2\xb6\x30\x62\x7c\x9a\x85\xc2\x64\x3b\x72\xd5\x55\x27\xea\xaa\x11\x0d\xeb\x2f\xb8\x6c\xab\x18\xf5\xd2\x3a\xa7\x5e\x43\x4f\x0d\x27\x6a\xaa\xed\xd5\x00\xdb\x11\xd4\xab\x01\x56\xf4\x38\xbf\x24\x34\x4d\x25\x8a\x29\x78\xea\xf3\xa5\xc6\x73\xf8\xb0\x35\xc6\x0f\xc8\x1b\xf2\x67\x72\x4f\xfe\x8c\x6a\xc1\x9f\xba\xb6\xe7\xe8\x2a\xb0\x77\x37\x4b\x58\x6d\xf4\xfc\xb2\x27\x88\xff\x38\xa3\x1a\x67\x34\x50\xd5\x82\x8c\x99\x13\x43\xe1\x5e\x83\x34\x62\x91\xdb\x89\x27\x6d\x6c\x62\x16\xf8\x19\xd1\xcc\xda\xdc\xcf\x27\x61\xe5\x7f\xbd\x23\xa2\x99\xc7\x8d\x7e\x7f\xe1\xa8\x50\xb3\x8f\x40\x3d\x5b\x4e\x75\x32\x6b\x92\x31\x23\x60\xa8\x06\x73\x4a\x05\x92\x71\x1b\xbf\x36\x63\x1d\x22\x08\x9e\x0f\x1a\x77\x73\x2a\x37\xf6\xf3\xa1\x9d\x5a\x52\xfc\x91\xcf\x3b\xc1\x20\xa8\x3f\x52\x88\x74\x44\xce\x68\x32\xc3\x65\xa5\x01\xcf\x30\x1a\x08\x4e\x36\xa3\x73\xb3\xf1\xee\x59\xdb\x77\x03\xa5\x95\xca\xd4\x8a\xb8\x64\xce\x53\x42\xb9\xed\x7c\x37\x01\x29\x6d\xc8\xe1\x78\x81\x9e\x4f\x96\x40\xe7\xcd\xeb\x74\x92\x0a\x29\xb4\x48\x44\x87\xde\x2b\xcb\xd1\xcf\x38\x1d\x02\xc1\x1a\x2d\xbd\xad\xf8\xfb\xd3\xcb\x01\xb9\x39\xb9\xc4\xa6\x19\xd7\x27\x37\x97\x4d\x09\x7b\xef\xe6\xe4\xb2\x43\x0f\xff\x5e\x6c\x1e\xce\xcc\xf6\xce\x2c\x73\xe7\x49\x24\xd0\x94\xc5\x38\xf2\xed\x47\x8c\x23\xdf\x3c\x62\x1c\x79\x8c\x23\x8f\x71\xe4\x0f\x8f\x18\x47\xee\xc6\xd3\x9b\x7a\x48\x8c\x23\x6f\x39\x5e\x97\x2f\x33\xc6\x91\xef\x34\x62\x1c\xf9\xea\x88\x71\xe4\x1b\x46\x8c\x23\xdf\x30\x62\x1c\x79\x8c\x23\x8f\x71\xe4\x31\x22\xe6\xd1\xb9\x9e\x67\x44\x0c\x89\x71\xe4\x6e\xc4\x38\xf2\x57\xe1\xf7\x27\x31\x8e\x7c\xab\x11\xe3\xc8\x63\x1c\x79\x9b\x11\xe3\xc8\x71\x44\xdb\x4b\x8c\x23\xf7\x23\xc6\x91\xdb\xf1\xdb\x91\x9a\x63\x1c\x79\x8c\x23\x8f\x71\xe4\x31\x8e\xfc\xc1\x55\xc4\x38\xf2\xd7\xa0\x4f\xfa\x86\x5a\xdd\x83\xa0\xaf\xfc\x4c\xdb\x87\xd5\x90\xb3\x35\xbf\xa2\x59\x45\x15\x66\x12\x59\x4f\x99\x49\xa0\xe9\x02\xa7\x4c\xd0\x2d\x53\x0b\x59\x2f\x30\x3a\x27\x63\x39\x6b\x17\x77\x4e\x56\x0e\xcd\x7b\x9c\x2b\x70\xe1\x18\xb0\xe4\xf4\x1e\x0f\x00\xcd\x45\x69\xfb\x77\x25\x22\x2f\x4a\xdd\x84\x29\x6e\x4f\x9b\xd6\x5b\x13\x36\x75\x1c\xf5\xc8\x76\x09\x1b\x56\xd3\x0e\x83\xce\x5c\x4f\xa8\xc0\xd0\xd4\x87\x9f\x5c\xf6\xa0\x4b\x14\x54\x6b\x90\xfc\x1d\xf9\xef\x83\xbf\x7d\xf5\xeb\xf0\xf0\xeb\x83\x83\x9f\xde\x0c\xff\xe3\xe7\xaf\x0e\xfe\x36\xc2\x7f\xfc\xeb\xe1\xd7\x87\xbf\xfa\x3f\xbe\x3a\x3c\x3c\x38\xf8\xe9\xbb\x0f\xdf\xde\x5c\x9e\xfd\xcc\x0e\x7f\xfd\x89\x97\xf9\xad\xfd\xeb\xd7\x83\x9f\xe0\xec\xe7\x2d\x27\x39\x3c\xfc\xfa\xcb\xd6\x4b\xee\x2c\xf0\xf6\x27\xee\xf6\x24\xec\x7e\x12\x51\xd7\xf9\x7e\x7b\x3a\x8b\x57\x6e\xb6\xe5\xd3\xe8\xd8\xd1\x43\xa7\xd1\x6b\xdc\x28\xc4\x55\xf3\x30\x45\x44\xce\xb4\x76\x54\x94\x86\x51\x5f\x4c\x37\x54\x4e\x47\x07\xb0\xdb\x21\xd5\xb6\x9d\x60\x15\x31\x15\x44\xec\x0a\x2f\xd7\xb9\x36\x8d\x95\x35\x02\xcf\xf3\x30\x85\x09\xe3\xe0\xbc\x5c\x91\x36\x3c\x3e\x22\x6d\x78\x8d\xb4\x41\x41\x52\x4a\xa6\x17\x27\x82\x6b\xb8\x6f\x65\x3f\xd9\x64\x40\xba\x6e\x4e\x4d\xec\x89\xb3\x94\xc2\xbf\x96\x88\xc2\x06\x4a\x6e\x4c\xcd\xab\x82\x6e\x65\xc9\x51\xa5\xb4\x39\x14\xa0\xad\xbe\x87\x9a\x0e\x46\x41\x2e\xbf\xce\x6b\x70\x76\xea\x7f\x94\x6c\x4e\x33\xa3\xdf\xd6\x4f\x5c\xa2\xce\x12\x3e\xd4\xca\x88\xf5\xc4\x32\x16\x8a\x37\x97\x92\xcd\x59\x06\x53\x38\x53\x09\xcd\x90\x2a\xf5\x43\xe9\x8f\x37\xcc\x8e\x5b\x24\x45\xa6\xc8\xdd\x0c\xb0\x8d\x2a\xf5\xea\x39\x66\x2a\x4c\x29\xe3\x24\x37\x44\xb5\xf0\x0f\x2b\xab\xe7\x1b\xe2\x6d\xa4\x5e\xae\x6b\x7d\x1e\xd5\xd7\xb1\x10\x99\x0b\xeb\xcd\x16\xf5\xfc\xae\xad\x2d\x17\xbf\x70\xb8\xfb\xc5\xcc\xa6\xc8\x24\xa3\xd3\x4a\x8d\x57\xa0\x57\x2c\x71\xf5\xd4\x1b\x3f\x00\x63\x66\x4b\x20\x34\xbb\xa3\x0b\x55\x1b\x35\xc2\x86\xbf\xef\xc8\xdb\x43\x44\x3c\xaa\x48\x35\x47\x4a\x7e\x7f\x88\x7e\xbe\x93\xe3\xcb\x5f\xae\xff\x7a\xfd\xcb\xf1\xe9\x87\xf3\x8b\x6e\x74\xde\x7c\x3b\x50\xde\x6a\x8e\x84\x16\x74\xcc\x32\xd6\x85\xbc\xaf\x44\x82\x84\x93\x22\x03\x4d\xd3\xa3\x54\x8a\xc2\xc2\xc9\xdb\x8f\x42\x1d\xe7\x74\xc9\x2c\xec\x78\xb6\xdd\x9e\x49\x73\xc2\xa9\xa4\x5c\xd7\x86\x94\x1a\xe4\xb2\xe4\x46\xe9\x7d\xe1\x41\xf3\x34\xed\x2f\x60\xfe\x38\x4d\x21\x6d\x40\xef\xd5\x05\xe8\x9d\xf8\x8f\x5b\xd4\xb9\xb6\xe4\xf2\xe3\xf5\xf9\xff\x5e\x42\xc3\x45\xd1\x2d\x1e\xa9\x9f\xfc\x1e\xd9\xbe\x03\x39\x59\x35\x26\xe4\x62\x1e\xf7\xf7\xb9\xec\x6f\xc5\xab\xfa\xf1\x82\x5f\x95\x3c\x64\x27\x3c\x98\x9f\xe4\x22\x85\x11\xb9\xac\x2c\xe8\xcd\xab\x61\x0d\x01\x09\xc4\xdc\xc2\x35\xc3\x56\xe7\x81\x28\xa3\x85\x4d\x74\x69\x64\x98\x86\x74\x78\x42\x33\xd5\x91\x98\x76\xe1\x4c\x86\x09\x7f\x30\xaa\x60\x2f\xd0\xac\x66\x23\x29\x70\xa1\x9d\x24\x69\x56\x89\x49\xb7\x52\x24\xc4\xea\x9d\x41\xc8\x52\x83\xbb\xb8\x06\xf8\x9e\x31\x31\xe5\x61\x75\x59\xcd\x6c\x2d\xb0\xa5\x02\xb5\x9e\x31\xd5\x9a\xa8\x99\x5d\x02\x4d\x31\x5f\xac\xa0\x7a\x66\x23\x0e\x72\xaa\x6e\x21\xb5\x3f\x38\xb9\xa6\x32\xc1\xdb\x66\xf8\xee\x55\x37\x66\xdd\xde\xde\x8e\xf2\x8c\x8d\x83\x40\x3b\x3d\xb4\x8e\x4e\xef\x7c\x04\xcc\x37\x7d\xe4\xd9\xe2\x4a\x08\xfd\x4d\x95\x27\xd5\xcb\x06\xfe\xe8\x24\x45\x74\xb3\x34\x43\xa6\x30\x40\x20\x1d\x22\x30\x11\xa5\xc3\x14\xad\xd3\x7a\xc3\x9e\x18\xa1\x65\xc9\x8f\xd5\xb7\x52\x94\xad\x39\xc0\x8a\xa0\xf5\xed\xf9\x29\x9e\xe3\xd2\x79\xc0\xb8\x96\x8b\x42\x30\x6b\x3e\xd9\x20\xd3\x7e\xef\x7c\x78\x21\x46\xd6\xee\x16\xf2\x81\x2e\x08\xcd\x94\xf0\xc2\x31\xe3\xeb\x54\x1d\xe2\xf4\x28\x73\x79\x2c\xf4\x6c\x45\x81\x32\xe8\xbc\xfa\xdc\x20\x70\x88\xd5\x75\x53\x18\x5f\x79\x5c\xd3\x5b\x50\xa4\x90\x90\x40\x0a\x3c\xe9\xb8\x6b\x4f\xed\x06\xc2\x9d\xbf\x10\xdc\x1c\x8b\x5e\xf6\xfe\xbc\xf2\xff\xa1\x19\xab\xb9\xd3\xe8\x49\x74\x7a\x07\x45\x7f\x22\x1e\x8a\x52\x81\xb4\xce\x4f\x59\x82\xdd\x88\xef\xca\x31\x64\xa0\xad\x32\x84\xf5\x03\xa8\xb6\x2a\x2f\xcb\xe9\x14\x08\xd5\x15\xa2\x68\x41\x80\x2b\x43\x6e\xac\xe1\x4c\x93\x54\x40\x9d\xdc\x48\x15\xf9\xfe\xfc\x94\xbc\x21\x07\xe6\x5d\x87\xb8\xfd\x13\xca\x32\x74\x35\x6a\x2a\x97\xd7\xc8\x26\x7e\x0a\x5c\x12\xe2\x1e\x11\xd2\x1e\xd1\x01\xe1\x82\xa8\x32\x99\xf9\x35\x19\x8d\xcb\x2b\x6c\x2e\xd6\x0e\x4d\xf2\xaf\x10\x55\x3b\x13\x98\xef\x15\xc8\xde\xe8\xcb\xf7\x2d\xe8\x4b\x28\x42\x18\x9c\x6b\x42\xcf\x22\x56\x0e\x9a\xa6\x54\x53\x47\x77\xea\x8c\xe8\xd7\xb8\xa5\x4f\x4d\x7d\x14\xbc\x67\xbc\xbc\xb7\xb6\xb5\xfe\x94\xfc\xeb\x33\x9c\x16\x51\x00\x81\x86\x9b\x46\x8b\x22\x63\xb5\xe7\x31\x88\x6e\x3a\x6f\x6c\xf5\x60\x83\x88\x84\xc7\xdc\x3b\x30\x0d\x67\xa7\x3c\x15\xf9\xca\xcb\xd0\x5b\x4a\x93\x59\xf8\x82\x57\x89\x3c\x4f\x6e\x8e\xc8\x60\x0e\x1d\x6a\x73\x2c\x21\xce\x7b\x33\x9b\x91\xc5\xfc\x86\xe2\xf4\x24\xa3\x63\xc8\x2c\x67\xb1\x08\xa4\x56\x11\xe8\xa9\x23\x04\xa5\xc8\xfa\xcb\x8f\xb8\x12\x19\xd8\x90\x1b\x0f\x08\x33\xfd\x8b\x80\x03\x4e\xd2\x17\x1c\x50\x91\x69\xc0\x01\x55\xb2\x97\x00\x87\xb2\x03\xa3\x25\xcb\x70\x30\x5c\xbb\x09\x07\x64\x9d\xcf\x1d\x0e\x0a\x92\x44\xe4\xc5\xa5\x14\x46\xe5\xea\x8d\xb5\xb8\x69\x6b\xff\x8e\xd5\xc9\xd1\xe0\x1b\x6a\x7f\xce\x9b\xd3\xbc\x99\xca\x20\xd8\x8e\x6a\x4b\xe3\x7d\xc4\xdd\xff\x0a\x58\x0e\x92\x9e\x65\x3e\xe4\x67\x69\x38\x80\xcc\x93\xee\xc2\x0b\x4f\xf5\xef\x60\x25\xeb\x85\x99\x88\x84\x66\x58\x3a\xad\x1b\xc6\x90\x65\xac\x59\x9e\x38\x88\x90\x44\xd7\x12\xfe\xe6\xbd\xf6\x58\x45\x0b\x7f\x71\xb6\x2f\x2e\x52\x08\x9c\x85\x36\xb4\xf3\xc6\x46\xd2\xe1\x7d\x3e\x38\xd3\x70\x75\xe7\xbc\x87\xb4\xf1\xb4\x16\xae\x3a\xcb\x87\xaa\x20\x9b\x59\x20\xf0\x94\xf1\x29\x5a\x74\x06\x44\x42\x66\xc3\x3a\xdd\x19\xbe\xb5\xea\xd7\x3e\x62\xb4\x9f\xd4\xa3\xb3\x7f\x35\x4a\x42\x4c\x70\x37\x33\x1a\x39\xbc\x7c\x33\xb1\xd4\x92\x29\xb2\xf7\xde\x03\xa0\x43\x05\xab\xe7\xc8\x20\xf6\xec\x17\x56\xbb\x69\x6d\x6c\xb7\x8c\xa7\x2e\x02\xb2\x01\x2c\xaf\x24\x3a\x29\x14\x63\x6b\x59\x1a\x92\x86\x77\xe4\x6f\x9c\x54\xc0\x22\xc3\xd6\xe8\x71\x65\x05\x56\x6f\x5e\x1a\x3e\x6c\xf2\xab\x5e\xb2\x3c\xcd\xf7\x1c\xf7\xde\xbc\x77\x68\xd4\xde\xd5\xfb\xfc\xb7\xec\x3d\xe5\xbe\xde\x31\x9e\x8a\x3b\xd5\xb7\x0e\xf1\xa3\x9d\xd6\x0b\xd4\x89\x41\x6b\xcd\xf8\x54\x85\x7a\x44\xb3\x4e\xee\x7a\x45\xc2\xef\xf0\x44\x0a\x9b\x86\xb7\x2a\xc0\x2f\x45\x6e\x47\x25\x60\x87\x31\xcd\x15\x3d\x91\xe6\x53\x34\xa3\xd9\x75\xd1\xbe\x6c\x1a\x59\x46\x83\x6f\x3f\x5c\x1f\x37\xa7\x36\xf4\xec\x6e\x06\xd2\xf2\x5e\x73\x9d\xd0\x34\x67\x4a\xa1\x19\x08\xc6\x33\x21\x6e\xc9\x81\x0f\xb4\x9a\x32\x3d\x2b\xc7\xa3\x44\xe4\x41\xcc\xd5\x50\xb1\xa9\x3a\x72\x48\x3b\x34\xab\x3f\x24\x8c\x67\x55\x04\x09\xaa\x91\x5c\x2b\x6f\xc6\xc0\x97\x24\xd5\x2a\x70\x6f\x5d\xdd\x45\xe7\x65\x5e\x5d\xa6\xad\xb4\xc8\x20\x7b\xfa\x62\x30\xab\xdb\x73\xd1\xb1\xae\xc5\x23\x5b\x84\xdf\xee\xd2\x46\xc2\x14\xa7\xb5\x70\xb4\xd2\xdb\x93\x03\xc9\x49\x07\x09\xa8\xfe\x2a\xe6\xfc\xa5\x9e\x93\xa4\x60\x33\x1b\x00\xa3\x4e\xe8\xc6\x30\x24\xb4\xca\xee\x63\x82\x9c\x7b\x74\x3f\x94\x68\xd1\xeb\x63\x53\x30\x8c\x3e\x90\x15\x33\x3a\xb4\x4a\xb2\x21\x49\x48\xc3\xbc\x0c\x30\x13\x5c\x48\x8b\xa2\x86\x0b\x0a\x8e\x28\x8d\xda\x82\x75\x04\xe1\x9e\x38\x1a\x1b\x2c\xf5\xa4\xf6\x0f\x86\x3e\x24\x4c\xb0\xb1\x09\xfa\xf5\x1a\xee\x98\x9e\x61\x11\xb9\xd9\x92\xc3\x09\x57\x22\x41\xa1\xf7\x80\x13\x90\x52\x48\x17\x08\xe3\xad\xb6\x38\x13\x92\x62\x8c\xa4\x31\x48\x42\xcd\x5f\xfb\x2a\x74\x51\xd6\xa5\x4c\x31\xb6\xcb\x60\x13\x4c\x26\x90\xa0\xa4\x14\x02\xd8\x92\xdd\x83\xba\xaa\x9e\x0f\x9d\xd7\xc2\x97\x42\xcd\xd9\xbd\x79\x4b\xf8\xd4\x52\x41\x75\x2e\xf8\x70\xfd\xe5\xc3\x11\x21\xe7\xbc\x8a\x7b\x1c\x98\x5d\x0c\xef\xf4\x21\x3f\xda\x7c\x62\x58\x47\x17\x3f\x20\xb4\x3b\x19\xf1\x4e\x96\x3d\x60\x7c\x17\x63\x30\x09\x0d\xc2\xbd\x92\x03\x34\x0c\xbb\x49\xcd\xd6\x7b\x26\xde\xc5\x50\x6c\x6e\xf9\x54\xc6\xe2\x97\xc1\xe9\x49\x57\x3a\xe7\xd2\xd5\x63\xed\xd7\xed\x46\xac\xfd\xba\x79\xc4\xda\xaf\xb1\xf6\x6b\xac\xfd\xfa\xf0\x88\xb5\x5f\xdd\x78\xfa\xf4\x4c\x12\x6b\xbf\xb6\x1c\xaf\xab\xfe\x48\xac\xfd\xba\xd3\x88\xb5\x5f\x57\x47\xac\xfd\xba\x61\xc4\xda\xaf\x1b\x46\xac\xfd\x1a\x6b\xbf\xc6\xda\xaf\xb1\x8a\xd5\xa3\x73\x3d\xcf\x2a\x56\x24\xd6\x7e\x75\x23\xd6\x7e\x7d\x15\xb5\x7a\x48\xac\xfd\xba\xd5\x88\xb5\x5f\x63\xed\xd7\x36\x23\xd6\x7e\xc5\x11\x6d\x2f\xb1\xf6\xab\x1f\xb1\xf6\xab\x1d\xbf\x1d\xa9\x39\xd6\x7e\x8d\xb5\x5f\x63\xed\xd7\x58\xfb\xf5\xc1\x55\xc4\xda\xaf\xaf\x41\x9f\x54\x3a\x65\xad\xca\x61\x6d\x53\xbd\xc0\x45\x86\x04\xf9\x8e\xe3\x72\x32\x01\x89\x94\x0b\xdf\xbc\x12\x85\x50\x55\x39\xaa\x68\x99\x8b\x33\xc0\xaa\x66\x12\x68\xea\xa2\xa0\x37\x3c\xee\x12\x2c\xb1\x6c\x55\x1d\xbe\x77\xf6\xf1\x9b\x7e\x4a\x25\x74\x0b\x5c\xc3\x35\x7f\xe4\x49\xf7\x00\xa6\x1a\xe0\xeb\xa2\xf2\x1d\xdc\x93\x4c\x28\x17\x76\x88\xc0\x4a\x66\x94\x73\xf0\xca\x23\xd3\x68\x94\x19\x03\x70\x22\x0a\xe0\x96\x7e\x53\xa2\x18\x9f\x66\x40\xa8\xd6\x34\x99\x8d\xcc\x9b\xb8\x07\x76\x1d\x22\xe8\x7e\x51\x5a\x02\xcd\x7d\xb0\x64\x4e\x99\x9d\x8a\xd0\x44\x0a\xa5\x48\x5e\x66\x9a\x15\xd5\x64\x44\x01\x46\x39\x5b\x46\x55\x01\x03\xc3\x4b\xea\xb8\xc2\x41\xfd\x36\xb7\x2c\x11\x56\x8a\x41\xd5\x75\x80\xa5\x2d\xf3\x42\x2f\x88\xf9\xe4\xcc\x95\xbb\x93\x4a\x93\x24\x63\xc8\xad\xf1\x8d\x36\xa1\x0c\xe7\x1b\x78\x5e\xcd\xdd\x4a\x95\x5b\x2a\x4f\x51\x6c\x2d\xb4\x22\x18\x86\x57\x4f\xe8\xa6\x4a\x99\x72\x62\xbe\x1a\x10\xea\xeb\xa0\x58\x40\xfb\x95\x22\xa8\x3d\x67\xb1\xb3\xbb\x9f\x82\xe9\x82\xe2\x69\x06\x37\xad\x35\xac\x46\x74\x8c\x3b\xf5\xc8\x39\x68\x84\xd8\xd6\x02\x05\x86\xbb\xac\x1c\x03\xdc\x00\x0e\x73\x83\x03\x90\x80\xe1\xaf\x74\x03\xd6\x7f\x76\xa4\xd7\x54\x4e\x41\x57\x41\xb9\x6d\x63\x35\x9b\x05\x22\x82\x2a\x87\xa1\x1e\x52\x43\x0c\x81\x73\x29\x52\x8c\xb8\x77\x55\x24\x0c\xce\xac\x29\xa3\x68\x17\xe8\x0a\xe0\xac\xbb\xc1\xcb\x45\x36\xd4\xa9\x7a\xa9\x2a\x68\x02\x8a\x1c\x9c\x5f\x9e\x0c\xc8\xe5\xf9\xa9\x8b\x67\x12\x93\x75\x69\x7c\x8e\x84\x59\x04\xdc\x54\xd0\x91\x29\xff\x8e\xbb\x19\xd5\xb8\x9d\xc1\x8b\x50\x12\x9d\x51\xe9\x02\x15\x7d\xe5\x6b\x72\x21\x34\xac\x2b\x94\xe1\xa9\x01\x8a\x5f\xce\x06\xe1\x30\xcd\x8a\x33\xed\x09\x60\x4b\xb5\x25\x90\x8f\x3e\x80\x52\x74\x0a\x97\x2d\x1d\x58\x9b\x94\x73\xf4\x61\xd5\x67\x14\xa9\x42\x66\xd3\xd7\xaa\x5f\xea\x88\xb7\xa6\x44\x4c\x72\xbb\xa6\x6a\xbf\xef\x24\xd3\x1a\xf0\x7c\x63\xf1\x24\xf4\x81\x2f\x27\xa8\xee\x2f\xc5\xcd\x7d\xf0\x93\xd4\x0f\x1b\xfe\xce\x53\x1b\xc5\x36\x06\x32\x96\x0c\x26\x64\xc2\x30\x34\x0e\x83\xd5\x06\xb6\x1c\x08\xb5\xc6\x25\xa5\x40\xe2\x7a\x9c\x5a\xe3\xd7\x35\x22\x3f\xba\x85\x69\x59\x72\x5b\x01\xdd\x49\xdc\x98\xc2\xc5\x26\x64\x8a\xc1\x6e\x4e\x71\xf8\xe3\x9b\xff\xf8\x13\x19\x2f\x8c\x74\x83\xa8\xad\x85\xa6\x59\xf5\x91\x19\xf0\xa9\x81\x95\xa5\xd4\xcd\x24\xa4\x0a\x02\x58\xa3\xdc\x2e\xfc\xed\xef\x6f\xc7\x4d\x71\xeb\x28\x85\xf9\x51\x00\xbf\x61\x26\xa6\x23\x72\x42\xb9\xc1\x75\xa3\x46\x14\x29\x5a\xf2\xdb\xd7\x0d\xed\x0f\xcd\x44\xc6\x92\x45\x77\xb2\xe3\x74\x13\x32\x13\x77\x56\xed\x5b\x83\x3d\x75\x38\x6c\x21\x8a\x32\xb3\xce\x8c\x6f\xaa\xf4\xbd\x52\xc1\x6a\x8e\xce\xda\x73\x81\xe6\x77\x37\xc5\xd2\xd1\x76\x31\x8e\xfe\x95\xc2\xc5\x7e\x3b\x03\x71\x55\x9e\x06\x75\xe2\x6f\x68\x96\x8d\x69\x72\x7b\x23\xde\x8b\xa9\xfa\xc8\xcf\xa4\x14\xb2\xb9\x96\x8c\x1a\xc6\x39\x2b\xf9\xad\xad\x4b\x5d\xa5\x10\x8b\xa9\x91\xb2\x8b\x52\xfb\x4a\xa3\xeb\x3e\xd8\x26\xa4\x7a\x7e\xec\x35\xe2\x7a\x16\xb8\x67\xb5\xda\xeb\x52\x29\x2c\x46\x86\xf3\xab\x10\xd9\x7e\xff\xe6\x8f\xff\x6e\x51\x97\x08\x49\xfe\xfd\x0d\xc6\xc1\xaa\x81\x3d\xc4\x48\x17\x8d\xcc\x90\xd3\x2c\x33\xe4\x35\x44\x4a\x03\xe8\x75\x48\xf8\xd9\x71\x50\x77\x47\xb7\xad\xa5\xea\x9b\x9b\xbf\x22\x4b\x60\x5a\x41\x36\x19\xd8\xac\x81\x4a\xc3\xdd\x47\x19\x61\xdf\x51\x1f\x4c\xdd\x78\x06\xb2\xf0\x5c\x64\x65\x0e\xa7\x30\x67\x7d\x34\x9e\x68\xcc\xe6\xad\x3e\x19\x53\x98\xa0\x31\xce\x44\x72\x4b\x52\x77\x31\x88\x68\x5a\x2e\xb1\xda\x1e\x0a\x6d\x63\xbb\x3a\xc4\x74\x6d\xfc\xfe\x46\x34\x57\x4e\x8b\x82\xf1\xa9\x4d\x4e\x92\xf4\xae\x01\x0c\x3c\x93\x98\x0f\xdc\xb1\xde\x42\x67\x8f\x43\x57\x7f\xc3\xd0\x7d\x91\xa1\x9b\xad\xa7\x68\x1d\xcd\xd4\xdd\x5d\x51\xaf\xbe\xbd\x8d\xba\x81\x10\xf5\x84\xfe\x34\x14\xf8\x6f\x1b\xa9\xbf\x22\x2e\x57\xe2\x63\x85\x18\x56\x00\x30\xe8\x83\x24\xb9\xbd\xed\xbd\x07\x43\x77\xb7\x50\xb6\x06\x5c\x78\xe5\x60\xc8\xa9\x76\x02\xa1\xd7\x20\x28\x29\x40\x2a\xa6\x0c\x5f\xfe\x01\x0f\xd4\x49\x46\x59\x1e\x58\x83\x9f\x06\x08\xf6\x70\x63\x65\xcc\xee\x94\xf2\x52\xa4\x6e\x42\x24\x85\xb6\x2a\xe8\x1a\xb1\xb6\x29\xd5\xf6\xc8\x50\x9f\x9a\x54\xfe\x50\x43\xb3\x49\x29\xcd\x2f\x15\xa9\xb4\x77\xbd\x26\x02\x89\xdf\xf7\x52\xe9\x63\xb5\xf8\x9e\xc8\x00\x12\x46\xb7\xb9\x4d\x4a\xd8\x50\x1e\xed\x41\x09\x44\x7a\xa7\x07\x8e\x88\x8d\xae\x30\x67\xc2\x3d\x4a\xf6\xdf\xed\x3f\x29\x91\xb4\x20\x92\xa2\xa0\xd3\x4e\x3d\x0e\x96\x20\xb5\x3c\x6d\x98\x08\x6e\xd4\x20\xbc\x5e\x95\x25\xc2\xbb\x20\xad\x0b\x55\x60\x19\x12\xeb\x28\xf7\x00\x76\x0a\x02\xf6\xa0\x21\x77\x74\x41\xa8\x14\x25\x4f\x9d\xa9\xb1\xb2\xf5\x7e\x58\x7a\xf1\x85\xe0\xe0\x7d\x28\xcb\x79\xe4\xe8\xdc\x61\x9c\xbc\x1d\xbd\x7d\xf3\x5a\x38\x15\x7e\xe1\x12\xa7\xba\xa8\x38\x95\xa5\x4f\x4f\xfa\xad\xbe\x1a\x72\x4f\xdf\xfb\xc1\x99\x58\xea\x62\xc7\xcc\x17\x73\xc5\x9f\xee\x24\xd3\x10\x74\x2e\x3a\x40\xc5\xc5\xe8\x87\x41\xd6\xf4\x61\x8f\x35\xbe\xfb\x49\x53\x57\xe5\xf8\x13\xd2\x2d\x47\xa0\xf0\xb8\xad\xb3\x70\xa9\x07\x48\x58\x08\xa8\xbd\x3d\x72\x60\xef\xdc\xb7\x49\xa2\x87\x4f\x8a\x5a\x0e\x68\x67\xf7\x45\x87\x1a\x74\x0d\xc0\x9d\xdd\x17\x14\x6d\x70\x45\x8f\x10\xfc\x2f\x98\xd1\x39\x60\x72\x2c\xcb\xa8\xcc\xd0\xfd\x7c\x6d\xd7\x4e\xc6\xa5\x26\xc0\xe7\x4c\x0a\x8e\xb1\x5e\x73\x2a\x19\x56\xad\x90\x30\x01\x09\xdc\xe8\xa2\x5f\x1e\xfc\x70\x7c\x85\xb1\x2d\x87\xb6\x96\xbd\x5f\x65\xa9\x7c\x79\x89\x70\x25\xc1\x74\x8f\x6e\x9f\x5f\x87\x81\x21\xd2\x5c\xbf\x2e\xf3\x9e\xbc\xd4\xa5\x2d\x98\x7f\x9f\x64\xa5\x62\xf3\xa7\xa2\x24\x2e\x6b\xf9\x94\xb5\xda\xe7\xa5\x0c\xea\x1a\x50\x2b\xc9\xd0\xb5\x0d\xfe\x91\x0a\xad\xfb\xaa\xaa\x69\x15\x86\x43\x38\xd3\x13\xc9\xd9\x74\xa6\x5d\x58\xa6\x2f\x69\xb6\x22\x42\x60\x5d\x87\xa7\x35\x42\x19\xb6\x7b\x9c\x31\xaa\x76\x15\xb9\x56\x32\x0e\xdd\x2c\x18\x44\xc1\x5d\x21\x2a\x9a\x55\xb6\x15\xf3\x22\x6b\x70\x3c\xbf\x74\xde\x29\x0f\x37\xc6\xff\xc7\x06\xad\x54\xda\x85\x0d\x42\xb1\x8f\x58\xab\xe1\x24\xac\x19\xe0\x83\x35\x90\xf8\x63\x95\x15\xb4\x6a\x71\xc1\x87\xb3\xa0\x20\x49\x21\xd2\x1d\xb3\xf1\xda\x2a\x1e\xad\x54\x8e\xf5\x10\x24\x33\x91\xa5\xbe\x2f\xa7\x35\xc9\x8c\x41\xdf\x01\x70\x72\x7e\x89\xf0\x33\x9f\x88\xde\x9e\x0d\x50\xb4\xde\x01\x2c\x3d\x12\x68\xa4\x0d\x78\xee\x8a\x60\x1d\xb4\x92\x2e\x22\x7d\xf5\xa5\x9d\xcf\xfc\x5f\x2a\x98\x79\x8f\x18\x1d\x8b\x39\x20\x48\xd3\x54\x82\xea\x50\xba\xe3\x09\xf4\xd4\x4e\xa4\x94\xb5\xea\xbb\xd0\xf4\x6f\x54\x60\xf3\x16\x22\x14\xdf\xf1\xa8\x22\xe2\x7d\x66\x0a\x76\x7e\x79\xd2\x81\x7a\xed\x7f\xef\xdc\x1b\x66\xaa\xfd\x7d\x45\x58\x91\xd4\xfe\xd4\x11\xa9\xbd\x86\x41\x46\x83\x95\x18\x77\x73\x59\xb5\x15\x13\x03\xa2\xd6\x91\x48\x13\x6e\xa7\x31\x64\xc5\x65\x33\x57\x5e\x62\xa6\xac\x9b\xb8\x01\x0d\xe5\x9f\x08\x01\xe2\x03\x11\x2c\x91\x77\x61\x19\x83\x2a\xc0\x77\x89\x30\xa1\x05\xdd\x87\xf6\x05\x54\x7c\x05\x98\x9f\x0d\x96\x97\xe7\xa7\x7d\xa2\x4b\xc1\xd2\x67\x87\x2e\xbb\xeb\x97\xcd\xdc\xb5\x66\xc9\x07\x37\xa1\x3f\xec\x97\x22\xdd\x20\x26\xd5\x8c\x06\xef\x0f\xbb\x0b\x6a\x41\x28\xb1\x66\xc2\xa5\xbe\xb1\x2d\x80\xb2\x33\x95\x40\x51\xeb\xb2\xcc\xb2\x6b\x48\x24\xec\x6a\x1e\x6d\xee\xff\xf9\xd2\x5c\x9b\x44\x9e\x40\x7e\xc7\x3a\x02\xee\x66\x5e\x17\x78\xab\xb0\x26\xcc\x12\x2c\xca\x0c\xe3\x4c\x29\x5f\x78\x80\xe3\xea\x55\xe0\x8b\x62\xca\xc7\xac\xd8\x10\xa9\xc6\x2e\x28\xa8\x5e\x56\x75\x0b\xa1\x4a\x59\x8f\x29\xe3\x29\x9b\xb3\xb4\xa4\x19\xbe\x08\xa5\xd0\xb0\xa7\x6f\xc5\x21\x73\x5f\xb0\x90\x7c\x23\x24\x81\x7b\x6a\x6e\x1b\x54\x42\x2c\x55\x88\x0e\xa9\x48\x6e\x41\x0e\xac\x28\x76\x8a\x7f\x9c\xa0\xc4\x6b\x4b\xf2\xfa\x75\x18\x5d\xc2\x95\xe9\x6b\xd3\x26\xd8\xf7\x01\xb6\x70\xf8\xc2\x7e\xee\x82\xf1\xe9\x10\x7f\x31\x1f\xe2\xde\x34\x14\x7c\x48\x87\x06\x0d\x5f\x88\xe0\x87\x35\x78\x3f\xa2\x64\x75\xe5\xf1\xc5\xab\x08\x46\x91\x13\xe5\x74\x86\xc0\x92\x39\xf5\x65\xb1\x32\xd0\x58\xf1\xc8\xf9\x75\x6d\x69\x0a\xf7\x6c\xea\xc4\xb4\xb0\x02\x54\x13\xd7\x5e\x88\xf0\xd7\xd6\x42\xb6\x14\x29\x1c\x90\x2d\x07\x23\xbd\x33\x06\x8a\x39\xc8\x39\x83\xbb\x23\xc7\x3a\x87\x77\x4c\xcf\x86\x16\x22\xea\x08\x01\x7b\xf4\x85\x15\x2f\x6d\xe2\xd6\x71\x9a\x3a\xb3\x65\xa9\x60\x52\x66\xae\x5f\xee\x88\xd0\x82\xfd\x00\x52\x61\x5d\xc5\x5b\xc6\xd3\x01\x29\x59\xfa\xf5\x67\x0c\x7c\x61\x9c\xd5\x21\x76\x9d\xa8\xe0\x7b\x47\xe5\x5c\xbe\x30\xfb\x67\xdd\xd2\xd6\x05\x07\x8d\x21\x13\x7c\x1a\x64\x3b\xa3\x78\x71\xce\x99\x5e\x69\xcd\x67\xab\x96\xa1\x8a\x2c\x64\x8a\x81\x8c\x4c\xc8\x86\x3d\xd8\xcc\x87\xb5\x9c\x82\x70\x48\x43\x22\x59\x63\x3e\x0c\x67\x51\x15\x33\x22\x36\x20\xc2\x27\x46\xfa\x0a\x99\xbe\x46\x94\x2d\x59\x36\xa3\x3c\xc5\x3f\x93\x44\xc8\xd4\xad\x97\xe9\x2a\xf6\xd2\x06\x05\xd9\x48\x14\x64\x6b\xd8\x5d\x9d\x2f\xbf\x19\x35\x50\x99\x37\x02\xf5\xbc\xd8\x53\x72\xf6\x8f\x12\x08\xcd\x85\x21\xec\xcb\x85\x9c\x97\x20\x92\xd3\x05\xf2\x56\x5c\xea\xfb\x2a\xd3\xcf\x26\x13\xaa\x01\xb9\x02\x9a\xb2\x20\x21\x7a\x40\xde\x37\x33\xa4\x07\x66\x2d\xd7\x36\x75\xd3\xfd\x64\x57\xef\x9b\xab\x5f\x59\x27\x51\xee\xe3\x8a\x56\x3f\xc6\xec\x8a\xa6\xb7\xc0\xad\x52\x6e\x40\x83\x7e\xb0\x52\xe2\x1e\x24\x33\x48\x4b\xe4\x52\xe3\x05\x99\x30\x5b\xdd\x1d\x45\x05\x36\x9d\x81\xd2\x5e\xb8\x3c\xc2\x58\x9d\xba\x4d\x8d\x5f\x00\xa2\x6f\x10\x69\x5b\x9b\xb1\x72\x8a\xa5\x4b\x85\xeb\x4c\xef\x92\x49\xac\xce\xa6\xca\xdc\x9f\xe5\x65\x48\xab\x91\xef\x69\x6f\x56\x1e\x54\xcd\x66\x4b\xc0\x45\x27\x9d\xb3\xc3\x91\x09\x55\x33\xac\x29\xbf\xbc\x05\x89\x35\xc9\x24\xa5\x34\x04\xc3\x96\x99\xa5\xd8\x44\x16\x3b\x16\x62\xbf\xd1\x75\x86\x9b\x8e\xc9\x03\x66\xb1\xed\xfb\xde\x3f\x1d\x13\x3b\xae\x82\xc1\x0d\xe0\x93\x25\x4a\x60\x77\xd2\x30\x2c\x5f\x5b\xca\xb7\x21\xc7\xcd\x30\x54\xe1\xf3\xb1\xa4\xf6\xfe\xd1\x56\x7e\xcd\x2e\x1c\x90\xca\x69\x77\xcb\xc7\xfe\xb1\x9c\x96\xf6\xa0\x3b\x2a\x5c\x17\xa5\x75\xad\x3c\x51\x6a\xb3\x32\xa6\x51\x67\x4e\x3e\x9c\x86\x29\x48\x61\x6e\x85\x4f\xe0\x1a\x91\x1f\xba\x1a\xa9\x97\xad\xd4\x86\x9a\xd7\xa6\xef\xa4\x3a\x59\x86\x62\x64\x73\xaf\x5f\x54\x6f\xf3\x72\x28\xe3\x45\xa9\x1d\x1b\xac\x35\x4e\x9e\xcc\x28\x9f\xa2\x92\x29\x4a\x33\xdf\x97\x5f\xe2\x8a\x24\xa4\x65\xe2\xaa\xe9\x7b\x94\xfd\xd2\x9b\x6c\x5d\x3d\x2f\xa4\x55\x2a\xa1\x85\x5f\x73\xf8\x59\x6a\xc1\x35\xbd\x7f\x47\xd8\x08\x46\x64\xef\xcb\xe0\xd2\x9e\x7d\x7b\x21\x85\x79\x85\x4b\x7d\xc0\x55\x65\x4c\x63\xf8\xf6\x5e\x78\xf7\x88\x9c\x99\x77\xa0\x1b\xab\x02\x60\x10\x9d\x3f\xae\xc1\x37\x20\x12\xa6\x54\xa6\x99\x33\xb7\xdc\x05\x29\x1d\x15\xc0\xe0\x9e\x29\xad\x2c\x0f\xd2\x1d\x28\x93\xa6\xea\xd6\xd0\x21\x73\xb2\x86\x29\xd5\x74\x18\x1c\xe9\x23\xab\xb7\x0d\x5d\xb9\xcf\x21\x75\xa8\x55\x93\xac\xa3\x2f\x5c\x66\xe4\x90\x56\x77\x31\x23\x91\x63\xe1\xcd\xf6\x72\xce\x4b\xb3\xb1\x75\xa8\xfa\xda\x3c\xbd\x67\x75\x05\x69\x84\x01\x46\xf1\xd7\xf2\x52\x45\x44\x5d\x61\xd3\x75\xe7\xf9\xec\xe2\xe6\xea\xaf\x97\x1f\xcf\x2f\x6e\xe2\xb1\x8e\xc7\x3a\x1e\xeb\x0e\xc7\x1a\xf8\xbc\xf3\x91\xf6\x7a\xd3\x3a\x97\xef\x72\xc1\xc9\x20\x35\xe8\x15\x05\xd6\x9d\xf1\xf9\x0f\x54\xd6\x6d\xec\x9d\xbf\x6a\x8d\x07\xdc\xf7\xb9\x47\x12\x77\xf2\xe2\x23\xeb\x9e\x30\x2e\xae\xc7\x78\xa3\xd0\xa4\xb2\x6e\xd7\xc2\xde\x5f\x27\xbf\x9c\x9f\x9e\x5d\xdc\x9c\x7f\x73\x7e\x76\xf5\xa4\x81\x22\x1d\x0b\x3e\x36\x99\x72\x4b\x2e\x59\x48\x98\x33\x51\xaa\x6c\x51\xf5\xd8\x5a\x4f\x04\x56\x63\x0d\x79\x8a\xb6\x0e\x05\x12\xa3\xae\xd7\x3e\x16\x99\x6d\xbf\xcc\xb6\x19\x37\xd3\xa1\x3c\x4f\x5f\xe8\xfb\x8d\x14\x79\x4f\x28\x7c\x6d\xad\x30\xde\x19\xbe\x0e\x9f\xf6\x5d\x25\x8f\x06\xeb\x71\xc2\x63\x5d\x36\xc4\x08\xa3\x79\xa1\x3b\x14\xc3\xef\xa5\xc4\x6f\x3f\xd5\x70\x6d\xac\xce\x07\x5a\x7c\x07\x8b\x2b\xe8\x58\x05\xa8\x09\x6f\xc8\x20\x31\x8c\x8e\xdc\xc2\xc2\x06\x66\x9e\xf8\x97\x75\xa9\x56\xf4\xff\xb1\xf7\x3f\xdc\x8d\xdb\x48\xde\x28\xfc\x55\x70\x3c\x7b\x5e\xdb\x89\x24\x77\x27\x99\x99\x6c\x3f\x79\x93\xe3\xd8\xee\x8c\x9f\x74\xbb\xbd\xb6\x3b\xb9\x73\xd3\xd9\x19\x88\x84\x24\x8c\x49\x80\x01\x40\xb9\x35\x9b\xfd\xee\xf7\xa0\x0a\x00\x41\x49\xb6\x65\x92\x6e\xc9\x8e\x38\xe7\x4c\xc7\x12\x05\x82\x85\x42\xa1\xfe\xfe\x6a\x23\x11\x92\xaf\x59\x1b\xf4\xea\x2e\xa1\x8d\xaf\x59\x8b\xa4\x53\x7f\x2d\x80\xfc\xda\x25\x04\x3d\xcd\xae\x69\xbb\xd5\x23\xdd\xc2\x1a\x3f\x02\x94\xf3\xf3\x8d\xa0\xd4\xaf\x0e\x57\xc1\x07\x82\x3b\x5e\x09\x8c\xc9\xcf\x6a\x67\x57\x10\x22\x04\xab\x3a\x81\x37\x7d\xd0\xc1\x29\x19\x1d\x91\xa6\x6d\x13\x2e\x82\x4b\xd8\xad\x5c\xdd\xad\x04\x2b\xe6\xf8\x07\x9c\xb9\xf4\x95\x87\x32\xd0\xa1\x73\xd6\xc0\x72\x58\xaf\xfe\x27\x84\x44\x7b\xe4\x9f\xe1\x43\xe8\x35\xad\x7f\xd9\xdd\xfd\xe6\xc7\x93\xbf\x7f\xbb\xbb\xfb\xeb\x3f\xe3\x6f\xe1\x28\xc4\x40\x79\xfd\x16\xc0\x75\x12\x32\x65\x67\xf0\x0c\xf8\xd3\xa9\x6b\x87\x18\x3c\x71\x5f\x40\x45\xf6\x00\xb3\x96\xc2\x9f\x85\x4c\xe7\xff\xd2\xad\x00\x01\x37\xf2\x60\x80\x25\x6a\x51\x59\x84\x57\x77\xc7\x43\x25\x4b\x3a\xde\xaa\x6e\x54\xcf\x8d\x00\x2c\x8d\x90\x64\xaf\x3d\x09\xa0\xbb\xa7\x87\x7e\x10\x50\x2f\x6f\x35\xd3\x3a\x3a\xe4\xce\xf4\x65\xab\x3e\xc6\x78\x75\x28\xda\xc2\x0a\x76\x4c\x30\xa0\x88\x6f\x18\x06\x1b\x39\x1c\xb0\x21\x61\x26\x74\x9f\x3b\x3c\x3f\x25\x53\xa4\xf0\xc6\x10\xc7\x07\x36\x5f\x3f\xaa\x8c\x0b\xe1\xd3\xf9\xba\xdc\x57\x98\x80\xe3\xbf\x77\x18\x09\x3a\x20\xd8\x31\x6b\xd8\xec\xe1\x87\x83\xa4\x28\x7b\xee\x86\x41\xce\x72\xa9\x66\xe1\xcf\x00\x36\xd3\xd7\x46\x2a\x3a\x86\x9a\x1a\xfc\x39\xfe\x2c\xfc\x85\x3f\xac\x3d\x60\xf1\xd7\x68\x0a\x57\x51\xd4\x00\x70\xfb\xfc\x64\x9b\x27\xfd\x86\x88\xb6\xa4\x2d\x8c\x52\xfd\xaa\x33\x64\xf0\xc4\xa1\xc2\x19\xa8\x08\xf6\xa4\xab\x19\xee\x55\xf9\x70\xe0\x0d\x10\x53\x6b\x59\x36\x06\xc0\xab\xae\x0e\xa5\x59\xca\xa7\x5c\xcb\x16\x95\x43\x61\xa0\xdb\x73\x27\x1d\x6c\x09\xe6\x6f\x05\xb7\xd9\xc7\x02\x30\xbf\xc2\x7e\x9d\x13\xfb\x2f\xdb\x34\x39\xc7\xab\xa0\xc6\x30\x25\x5e\x91\xff\xde\xfb\xf0\xf9\xef\xfd\xfd\xef\xf6\xf6\x7e\x79\xd1\xff\xcf\x5f\x3f\xdf\xfb\x30\x80\xff\xf8\x6c\xff\xbb\xfd\xdf\xfd\x1f\x9f\xef\xef\xef\xed\xfd\xf2\xe3\xdb\x1f\xae\xce\x4f\x7e\xe5\xfb\xbf\xff\x22\xca\xfc\x1a\xff\xfa\x7d\xef\x17\x76\xf2\xeb\x8a\x83\xec\xef\x7f\xf7\x1f\xad\xa7\xde\x01\x04\x2f\x5e\x5d\x02\xf1\xd6\x47\xec\x84\xfd\x1e\xb1\x95\x05\x5e\x9e\xbd\xba\xde\xff\x17\x5e\x6a\x46\xf9\x3c\xfe\xb8\xde\x98\x0d\x8e\x09\xa1\x9f\xc2\x93\x83\x4f\xaa\xd7\xda\x04\xd3\xe2\xb9\x9d\x73\x7f\x04\xe7\x8e\x57\xdb\x71\x5d\x2b\x4d\x74\xa4\x64\xee\x2b\xfa\x21\xbc\x81\xb5\x67\xee\xbe\x6b\xd6\xaa\x25\x28\x5e\x5b\x67\xd0\xd6\x19\x74\xcb\x75\xaf\x33\x08\xcb\x11\x36\xd7\x13\xc4\xc4\xb4\x69\x08\x63\x69\x04\xdd\xdb\x3a\x31\xfc\xdd\x6a\x01\xb5\x81\xdf\xea\x3a\x44\xe2\xaa\x4c\x1a\x3c\xd0\xf2\xe5\x31\x4c\x68\xe0\xcf\x05\x6e\x7c\x18\x20\x80\x7e\x32\xd7\xbb\xc3\xd5\x5f\x4e\xed\x14\x02\xd2\x7b\x0d\xbb\x13\xb2\x8a\xb9\x18\x3b\x24\x0b\x3c\x4a\x5c\xf4\x89\x8b\x0a\x0d\x37\x28\x87\x15\x84\x3a\xd5\x5a\x26\xd0\xf8\x08\x71\xf2\x02\x2a\x9f\x9b\x36\xcc\xc6\xd0\x6b\x16\xb7\x62\x47\x78\xf5\xea\x5d\x87\x33\x40\x7d\x15\x53\x0f\x31\x9f\x96\x98\x0c\x82\xe2\x6f\xf9\x18\xcf\x2b\x01\xc1\x32\xa2\x0b\x82\x45\x79\x08\x20\xf5\x83\x85\x4d\x21\x15\x43\x8e\x2a\x2f\x6b\xb3\x66\x96\xad\x4f\xf1\xf6\x67\x66\x88\x6c\xb5\x52\x86\x16\x0e\xcb\xca\xfd\x5c\x3f\x24\x9f\x43\x30\xb0\xfd\xf1\xf9\x87\x3b\x3a\x3b\x3a\x36\xbb\x39\x32\x1f\x10\x3b\xe9\xf2\x98\xec\x22\x58\x52\x28\x36\xe2\x1f\x3b\xda\xa7\x87\x51\x65\x22\x4f\x99\x30\x7c\xc4\xb1\x5f\x6f\xa1\x58\xc1\x04\xf6\xcc\xa7\xc9\x04\x64\xbf\x3b\x29\xab\xe0\xf4\x26\x26\xf3\xa0\xc2\xdd\xad\x28\xbb\x5c\xa6\xec\x6f\xe5\x18\xd9\xca\xb1\xc6\xd7\x27\x92\x63\x8e\x73\x37\x47\x88\x41\xe6\x79\xfb\xd4\xf7\xe3\x28\x8f\x1d\xb8\xb8\x7d\xe5\xf0\x1c\x1a\x5c\x90\x8b\x46\x62\xe6\x1a\x96\xaf\x29\x92\xb1\x29\xcb\x9c\xd2\x44\x72\x2a\xe8\x18\xdb\xf0\x19\x19\x40\x7f\xa4\x0a\x2d\x8e\xe6\x11\x7d\x40\x89\xf7\x95\x5d\xf0\xa5\x92\x59\xc6\x94\x26\x19\xbf\x66\xe4\x98\x15\x99\x9c\xe5\x2e\xf1\x35\x25\x97\x86\x1a\xcb\xd2\x97\xcc\x34\x8b\xf9\xb6\x43\x03\xf1\xc5\xec\x1d\x41\x9f\x63\x75\x3c\xd4\x96\x93\xc2\x15\x4e\xbe\x13\x20\x31\x0e\xa1\xdb\x4a\x8f\x9c\xb1\x29\x53\x3d\x72\x3a\x3a\x93\xe6\x1c\x55\xef\x7a\xb6\x1d\xde\x48\xf8\x88\xbc\xb2\x46\x9d\x36\xc4\x60\xc7\x8b\xa8\xce\x5d\xaa\xda\x00\x15\xde\x5b\x17\x65\x79\x8b\x25\xe7\x30\x52\x28\x38\x6f\x14\xc6\x68\xb5\x4c\xa1\xa5\x50\xeb\x05\x3a\xc4\x32\xd2\x0a\xc9\x37\xe2\x6f\x84\x67\xf0\x08\x66\x60\x02\x72\x41\x14\xd3\x85\x14\x9a\xd5\xe1\x19\xab\x16\x94\x60\xea\xea\x4e\x2d\xc4\xc6\x27\x67\xdb\x33\xb3\x90\xda\x40\xe5\x6c\x37\x8d\xaa\xce\xfd\x70\x50\x88\x4c\xb3\x8c\xa5\xb5\x4e\x65\xd8\x61\x87\xd6\xdd\x03\x09\x34\x67\xf0\x0d\x5f\x98\xab\x4f\xae\x95\x36\xd7\xee\x0f\x5d\xef\x7c\x5f\x19\xdf\x3f\xf9\xb6\x82\xe6\x6a\x63\xc2\x21\x12\x31\xc0\x02\xde\x33\xa0\x80\xeb\xa8\x39\xcd\x44\xca\x6b\x92\xc8\xbc\xc8\x60\xeb\xb4\xd8\x59\x55\x6f\xac\xc0\x4a\x7d\xe8\x87\x7a\x10\xb5\xcd\x82\x0f\xd6\xd8\xdf\xb4\x0b\x1d\x8c\x7d\x64\x49\x67\x7d\x35\xad\x2c\xb5\xab\x0c\xf1\x7e\x29\x82\x2a\x36\x92\xf6\x00\x83\xe2\xec\x80\x3f\x18\x81\xed\x9c\x7c\x64\x49\xd4\x9b\x16\x10\xb0\x12\x8f\x27\x61\x37\x7a\xfb\x9e\xe3\xad\xc3\x14\x5d\x85\x06\x5a\x14\xdf\xc5\xd7\x1c\x68\x20\x8c\xe9\x31\xd2\xdd\x23\xa0\xdd\x04\xd8\x4f\x58\x90\x17\x83\x6e\x04\x1e\xc6\x1d\xbb\x80\x34\x18\x92\xaf\xfd\x58\xd0\xd5\x47\x4a\x43\xf6\x76\x0f\x76\xf7\x17\x7c\x96\x73\x40\xdb\x57\xd1\x2f\x39\x20\x4b\x16\x00\xd3\xc8\x92\xdd\xb4\x47\xb8\xf1\xd9\xd9\xd8\x27\x08\x66\xe5\xaa\x04\x7b\x44\x4b\x62\x14\x4d\xb9\xd3\x7e\xe0\x53\x7b\x93\x51\xa5\x3b\x1c\xf6\x76\x7f\xdf\x75\x6d\x8a\x6e\xa4\xd8\x35\x30\xfd\x01\xb9\x42\x94\x9a\x30\xd0\x4c\x96\xd0\x7c\x13\x49\x50\x64\x3c\xe1\x26\x9b\x81\xa0\x23\xb2\xc4\x4e\x5d\xf6\x98\x71\xd5\x89\x27\x1f\xb9\xf1\x2d\x49\xe4\x88\xbc\xc0\x46\x61\x8c\x3a\xaf\x69\xc6\xa7\xec\x60\xc2\x68\x66\x26\x98\x58\x22\xa4\xe8\x63\xaf\x47\x2b\x81\xdc\x37\x6d\x63\x2c\xed\x5c\x90\xf1\xd5\xc2\x1d\xb9\x38\xa1\x96\xd6\x86\x95\xbd\x3f\x34\xef\x66\x4d\x16\xc0\xc2\xae\xae\xce\x7f\xa8\xb5\xb3\x06\xe1\x6f\x4c\xe1\xd3\x7d\xa2\xa6\xef\x1b\x20\x3b\xba\x09\x70\xb6\xea\x45\x4d\x3a\x14\x61\x6d\x7b\x52\x93\xe5\xe0\x6f\xab\x37\xa3\x26\x7f\x97\x25\x40\x87\xd0\x61\x36\x0b\xb8\x0d\x9a\x19\xb2\x63\x87\xda\xb1\xe2\xc9\x72\xc3\xdf\x18\x4d\x11\x56\x43\x1b\x46\x1b\x69\x7c\xf1\xd5\x59\xe0\x2d\x9a\x5b\xb7\xe7\x40\xa9\x8d\xcc\xc9\xc4\xbd\x76\xbd\x5c\xd3\xed\x8c\x01\xec\x1e\x5f\x0b\xa5\x58\x81\x12\xce\xfd\xe6\xd9\xc9\xaf\x05\xb9\x81\x74\xaf\xf5\x4c\x48\x62\xb2\xc5\x9d\x75\xb8\x40\x62\x21\x4a\x4d\x47\xb2\xb4\x83\x84\x09\xd2\x61\xd2\x04\x69\x57\xfc\x39\x3f\x10\x04\x02\xdb\xe7\x87\x75\x96\x87\x41\x3a\xcb\x35\x20\xcb\x1c\xb3\x8e\x67\xd0\x69\xd3\x11\x11\x3b\x8d\xf0\x93\xf6\xe5\xa5\xf1\x75\x37\x01\xba\x59\x7c\xd2\x25\x05\x8a\x0e\xd2\xc1\x17\x93\xc1\x11\x74\x0a\xca\x35\x51\xb8\x82\x98\xd0\x4c\x4d\x9b\x16\x80\x57\x57\x77\xaf\x2e\x9b\x3b\x0a\xfc\xb5\xa4\xb6\x5a\x11\x11\x1a\x5c\x7b\x50\xd5\x45\x82\x44\xd9\x0c\xae\x1f\xb6\x77\x01\xfb\xe3\x88\x8a\x31\x23\x2f\xed\x2f\xff\xf2\xe7\x3f\x7f\xf9\xe7\x01\x0e\x1f\x32\x1b\x04\x39\x3d\x3c\x3b\xfc\xc7\xe5\x4f\x47\x50\x50\xdb\x96\xaa\x1d\xa5\x6d\x76\x9d\xb4\xd9\x69\xca\xe6\xa3\x26\x6c\x42\x99\x48\x6b\x29\x52\x8f\x17\xc0\x90\x31\xba\xa8\xd3\xfd\x22\x54\x3e\xab\x6b\xd6\xfd\xaf\x76\xab\x6d\xc4\x1e\x33\x49\x71\x29\x93\xeb\x0e\xed\x9a\xdd\xab\xa3\x73\x1c\x32\x32\x6d\xa8\xf0\xce\x10\x2e\xa6\x32\x9b\x02\xfa\x2a\xb9\x3a\x3a\x87\x9d\x37\x80\xff\x02\x47\x14\x58\xd4\x33\x66\xaa\x42\x06\x17\x9e\x0a\x18\xaa\x50\xa4\x41\x33\xae\x0d\x4f\xe0\x77\x95\x9b\xd4\x8e\xd0\x26\x2e\xb5\xb5\x94\x96\x5d\x9d\x5b\x4a\x51\x93\xe0\x87\x1a\x4d\x6d\x13\x0f\x37\xf8\x5c\x72\xe7\x91\xaa\x75\xd1\xde\x9e\x4b\x1d\x8c\xb7\xb9\xe7\x52\xa1\xd8\xa5\x91\x8d\xba\x05\x90\xc5\x48\x08\x0e\x76\x4b\x1c\x64\xc8\x46\x52\xb1\xf9\x40\x48\x14\xd8\x48\x4b\xd8\x84\x54\x40\xf5\x9f\x77\x41\xc9\x5a\xf0\x02\x53\x2e\x7d\x87\xec\xcc\x61\xa2\x1e\xe8\x18\x08\xd5\xb7\x3b\xee\xd9\xb7\x63\x39\xcc\xae\x57\x95\x31\xb8\x66\xcb\xf0\x21\x33\x09\xba\x59\x7d\xfc\xc5\x79\x54\xfd\xf4\xe7\x43\x25\x89\xa2\x7a\x82\x8d\x88\xd9\x47\x6e\x02\xe4\x2a\xd5\x52\xa0\xb3\x37\xea\x89\xcc\x75\x84\xc9\x1d\x05\x79\xf0\x47\xe7\x32\x9d\xef\x39\x3e\x56\x34\x61\xa4\x60\x8a\xcb\x94\x40\x3d\x71\x2a\x6f\x04\x19\xb2\x31\x17\xda\xd3\x0f\xc0\xd9\x1d\xa1\xed\x71\xc3\xc0\x37\xec\xd1\xe2\x06\xe4\xa2\x06\x82\xe2\xca\x93\x12\x59\xed\x68\x37\x8b\xf9\x20\x13\x64\x84\x02\x79\xb1\x1b\x50\x58\x98\xb8\x41\xd2\x3d\x93\xee\x20\xda\x84\x3d\xbc\xfc\x77\xb7\x52\x87\x6b\x4b\xf5\x64\xd2\x2e\xf0\xbb\x0d\x4f\xad\x78\x6d\xc3\x53\x0f\xbb\xb6\xe1\xa9\x6d\x78\xea\xf6\x6b\xe3\xdc\xbb\xdb\xf0\xd4\xd6\xe8\x9a\xbf\xb6\xe1\xa9\x6d\x78\xea\x96\x6b\xe3\xe4\xd7\x36\x3c\xb5\xc2\xb5\x0d\x4f\xad\x78\x6d\xc3\x53\xdb\xf0\xd4\x36\x3c\xb5\x0d\x4f\xfd\x81\xdc\x80\xfe\xda\x86\xa7\x16\x06\xd9\x86\xa7\x22\x62\x6c\x2d\xa5\x25\xd7\x36\x3c\xb5\xe4\xda\x86\xa7\xa2\x6b\x7b\x2e\x35\x38\x97\x7c\x70\xe7\xdc\xda\x65\xed\x6b\xd6\xce\x21\x70\xc0\x13\x17\x23\x92\xa3\x5a\x9d\x13\x3e\x6a\x50\x35\xa0\x88\x30\x3f\x7c\xa9\x8d\x8b\x06\x55\x31\xa6\xa5\xf5\x50\x2d\xdb\xc3\x15\x32\xad\x82\x11\x51\x14\x02\xad\xd3\xe6\x35\x69\x6b\xab\xb6\x6a\x13\x7a\xd8\xe8\xb0\xc3\x86\x84\x76\x3a\x08\x35\x6c\xc3\x0c\xcf\x2e\xcc\xd0\x8d\x8b\xae\x03\xf7\x5c\xeb\x13\xc6\x05\xf3\xaf\x26\x8a\xe9\x89\xcc\x1a\x33\x7a\x8d\xc9\xdf\x72\xc1\xf3\x32\x87\xbe\xb1\x96\x9f\xf9\x34\x64\x0d\x84\xe6\xd8\x4e\xd0\xa3\xa7\x30\x6a\x30\xeb\x1b\xcb\x42\x59\xe7\x84\x82\xaa\xae\xcb\x24\x61\x2c\x8d\x5a\xde\x83\x62\xf6\xe5\x20\x3c\x29\xb4\xd3\x78\xd9\x4e\xde\xb4\x3b\xfb\x11\xa2\x14\x46\xf9\xf2\x8b\x46\x63\xb4\x8c\xf2\x7c\xfa\x08\x4f\x07\x62\xba\xbd\xbd\xd2\xca\x56\xe9\xe2\x94\x68\x6b\xa3\x3c\xb5\x48\x4e\x67\x11\xcd\x0e\x22\x38\x1b\x14\xbd\xd9\x98\x63\x61\x53\x22\x36\x1b\x88\xbe\xda\x41\x80\xa1\x8b\x08\x4d\x77\xd1\x99\x47\x00\x29\x7d\x9c\xa8\x4c\x87\xd6\x70\x47\xd1\x98\x4f\x11\x89\xe9\xe4\xad\xdb\x46\x60\x3e\x5d\xf4\xa5\x9b\xd7\x6d\xe9\xdd\x7a\x16\x11\x97\x0e\xbc\x5a\x5d\x7a\xb4\x3a\xf3\x66\x3d\x5a\x84\xa5\x7d\x74\x65\x03\x22\x2b\xad\x89\xcc\x05\x37\x9c\x66\xc7\x2c\xa3\xb3\x4b\x96\x48\x91\x36\x3e\x61\xe6\x50\xeb\xc2\xfe\xd1\x38\xac\xb3\xd1\xea\xf9\xc7\x13\xea\xc0\x79\x59\xea\x53\xaa\xbd\xfb\xcf\x29\x14\xd0\xd0\x04\x67\xb9\x91\x0e\x3d\xb2\x31\xc6\x20\x26\x63\x77\xb9\x88\x7f\x93\x37\x44\x8e\x0c\x13\x64\x8f\x0b\xbf\x8e\xfb\x91\x19\x58\x59\xe6\x81\xad\xed\xb7\x2f\x5f\xf8\x9b\x9f\x9f\xc9\x0d\xce\x05\xad\x1f\xdf\x03\xe2\x1e\x74\xbf\x0b\xc4\xdd\x38\x2a\xb3\xba\x1b\x04\x5d\x23\x75\x79\xf3\xb2\x82\x17\x7d\x09\xe3\x86\xdd\x46\x45\x4a\x5c\xe1\xc6\xf3\x5b\xb4\xd6\x71\xe3\xe7\x10\x33\xde\xfa\x5e\x48\xd7\xbe\x97\x35\xc5\x86\x37\x50\x6b\x7e\xa2\xf1\xe0\xad\xd6\xfc\x80\x2b\xaa\xff\xfa\x41\xd1\x84\x9d\x77\xae\x70\xf8\xed\x44\xd2\x52\xb9\xb2\xbd\xa0\x77\x84\xcd\x23\x18\x4b\x71\x37\x85\xa2\x38\xa8\x46\x1b\x95\x59\x36\x23\x65\x21\x45\xbd\xf2\x10\x83\x56\xf3\x05\x6b\x76\xb4\x65\x4f\xa9\xb4\xd4\x42\x49\x77\x00\xab\x52\x08\x2b\xcf\xab\x86\x43\xa0\x95\x6a\x94\xd5\x71\x59\x9c\xe6\x63\x3b\x7d\x7b\x98\x42\xc5\x1c\xcf\x59\xd5\x92\xa2\x1a\xd0\xfe\x7a\x24\x55\xc2\x87\xd9\x8c\x4c\x68\x16\xba\x4b\x50\x72\xcd\xb3\xcc\x0d\x33\x20\x97\xcc\x10\x33\xe1\xae\x31\x38\xc9\xa4\x18\xc3\xe4\xa8\xf0\x5d\xcd\x58\x62\x7f\x9b\x64\x8c\x8a\xb2\xc0\xe7\xd9\x63\x7d\x26\x4b\xe5\x9f\xe7\x60\x2d\xc3\x28\x5c\x13\xc1\xb3\x5e\xd4\x3b\xe9\xce\x85\xad\x1a\xd4\x6b\xe6\x6b\x0a\x6f\xb8\x66\xbd\x78\x4c\x8f\xcc\xab\xa3\xce\x19\x85\x92\x53\x9e\x62\xf7\x0b\x4f\x36\xe8\xd2\x8a\xdd\x31\xc2\x7e\x16\x52\xf4\x05\x1b\x53\xd0\x7a\xdc\x2e\xc2\x35\xc3\x71\x30\x14\x27\x52\xe8\x97\x61\xcd\x05\x59\xd4\x4a\x59\xa7\x1c\x3b\x7d\x46\x94\x23\x7b\x42\x12\x09\xc7\x6b\x29\xb8\xc1\xee\xd1\x93\xd2\x90\x54\xde\x88\xfd\x01\xa2\x12\x73\x4d\x28\x19\x32\xe3\x3b\xd9\xfa\xce\x8a\x5c\x31\x4d\x98\xa0\xc3\xcc\xae\x39\x24\x3c\x5c\x2d\x25\x10\x19\x31\x6a\x4a\xc5\xc8\x98\x1a\xb6\x54\x69\xc2\xf7\xbd\x9b\xbc\x5c\x87\x2e\xef\xa5\xd0\xac\x71\x7f\xeb\x8e\x35\xad\xbf\x7c\xd5\x4c\x46\xf0\x9c\xc9\xd2\x7c\x12\x53\xf2\x66\xc2\x93\x49\xac\x19\xf3\x9c\x69\x22\xcb\x39\x1b\xfb\xa5\xfb\xd9\xf2\x15\xda\xda\x93\xcb\xae\xa6\x5e\xe2\x25\xae\xb4\xf9\x92\xe3\xaa\xad\x2c\xb5\x1b\xf0\xf8\xec\xf2\x1f\x6f\x0e\xbf\x3f\x79\x33\x20\x27\x34\x99\xc4\xf5\xe8\x82\x50\x10\x1a\x20\x28\x26\x74\xca\x08\x25\xa5\xe0\xbf\x95\x88\x4e\x4e\xf6\xc2\x6f\xf7\x3b\xc5\x42\x6e\x78\xfa\x42\xeb\xeb\xce\x7a\x2d\x61\x23\x6d\x4c\x70\x90\x9a\x41\x77\x84\x79\xf5\xe9\xc4\x7e\x85\x86\x06\xa8\x5a\x13\x66\x85\x11\x9f\x3a\x31\xec\xc0\xa5\x69\x1a\x52\x2e\x2c\x9f\x5b\xb6\xb0\x47\x15\x1d\x42\xaa\xc4\x84\x11\xc1\x8c\x65\xeb\xe0\xb0\x92\x42\xd7\x80\x01\x4a\xcd\x74\x8f\x0c\x4b\x48\xee\x28\x14\xcf\xa9\xe2\xd9\x2c\x1e\xcc\x9e\x55\x67\xd2\x9b\x43\xb3\xf9\x29\x1d\xbf\x3b\xb9\x24\x67\xef\xae\x48\xa1\x10\x32\x00\xb2\x33\xe0\x7b\x78\xad\x21\xb3\xbf\x70\x3d\x3a\x07\xe4\x50\xcc\xf0\x4b\xdc\xe0\x5c\x13\x6b\x0b\x31\x38\x82\x9d\x0e\xe9\x41\xe1\x77\x5e\x0c\xe0\x7f\x3b\xf6\x2d\x95\x55\x32\x43\xd2\x49\xb2\x90\x3c\x86\x6a\x28\x1f\x66\x11\x35\xdd\xbb\x3f\xab\x6e\x4b\x21\x6d\xee\xdc\x12\x31\xea\xb6\x44\xc3\x52\x03\x79\xb1\xfb\x16\x17\xe3\x2c\xe6\xaa\x66\x62\xbf\xad\x6d\xd9\xd6\xb2\xec\x57\x6f\x70\xde\xd4\xc0\xec\xa4\xeb\x53\x35\x87\x8e\x7a\xa5\x54\xa7\x9f\x37\xa7\x9c\x44\x90\x71\xfb\xcb\xd3\x73\xbf\x03\x9c\x76\x93\xcf\xf5\x4c\x84\x1f\x63\x50\xa3\x47\x5e\x90\x6f\xc8\x47\xf2\x0d\x98\x57\x7f\x69\xdb\x59\xa6\xad\xe1\xd3\xde\xbd\x83\x56\xfd\xe9\x79\x47\x14\xff\xd9\x4a\x27\x3b\xa2\xa5\xaa\x91\x64\xc8\x9d\x3a\xcf\x3e\x1a\xa6\xac\x1c\x75\x2b\xb1\xd6\x9e\x3c\x76\x82\x9f\x90\xcd\x30\x76\x71\x3a\x8a\x5b\x42\x98\x07\x32\x9a\xfd\xf9\xdf\xa4\x36\x67\x4e\x0a\xd5\x1b\x4c\x54\xa3\xe5\xd4\x24\x93\xba\x18\xb3\x8a\x9a\x36\xd5\x06\xd3\x24\x95\xe0\x49\xc3\x3c\xc0\x09\x6f\x91\x89\xb1\x39\x6c\xdc\x2e\x38\x5f\x5b\xcf\xbb\x56\x6a\xce\x81\x02\x96\x8f\x53\xac\x22\x78\x99\x42\xa6\x4e\x27\xb3\xd3\x4a\xa3\x33\xe3\x0e\xa5\xcc\xf9\x6a\x82\xcb\x1a\x78\xc9\xee\xa7\x84\x0a\x4c\xe0\x1e\x31\xa5\x30\x75\x73\x38\x83\x08\x32\x4f\x58\xeb\xc5\x6b\xb5\x93\x0a\x25\x8d\x4c\x64\x8b\xb6\x41\xf5\x80\xb9\x1b\x0e\x88\x80\xce\x5f\xef\x73\x7f\x7f\x7c\xde\x23\x57\x47\xe7\xd0\x4d\xe5\xf2\xe8\xea\xbc\x6e\xa9\xec\x5c\x1d\x9d\xef\xac\x95\x14\xc4\x6b\x56\xaf\xec\x34\x1b\x0c\x52\x73\x3c\x59\xb5\xad\x9f\xd3\xa2\x7f\xcd\x66\x0d\xcf\xd4\x2e\xce\xf5\x7e\x58\xe1\x4e\x5e\x08\xc9\x9c\xd3\xe2\xc1\xa3\x29\x46\x53\xfe\x89\xaa\x28\xdc\xce\xaa\x9e\xb9\xbc\x9c\x22\x97\x53\x96\xa2\x3a\xec\x7f\xc1\x44\x5a\x48\x6e\xf5\xc5\x6d\x8d\xc5\xc3\x7f\xbd\xad\xb1\xb8\xeb\xda\xd6\x58\x6c\x6b\x2c\xb6\x35\x16\x77\x5f\xdb\x1a\x0b\x77\xad\xdf\x0d\x4a\xb6\x35\x16\x0d\xaf\xe7\x15\xe7\xdf\xd6\x58\x3c\xe8\xda\xd6\x58\x2c\x5e\xdb\x1a\x8b\x5b\xae\x6d\x8d\xc5\x2d\xd7\xb6\xc6\x62\x5b\x63\xb1\xad\xb1\xd8\x66\x8b\xdd\x3b\xd6\x66\x66\x8b\x91\x6d\x8d\x85\xbb\xb6\x35\x16\xcf\x22\x27\x86\x6c\x6b\x2c\x56\xba\xb6\x35\x16\xdb\x1a\x8b\x26\xd7\xb6\xc6\x02\xae\xad\xef\x65\x5b\x63\xe1\xaf\x6d\x8d\x05\x5e\x7f\x1c\xad\x79\x5b\x63\xb1\xad\xb1\xd8\xd6\x58\x6c\x6b\x2c\xee\x9c\xc5\xb6\xc6\xe2\x39\xd8\x93\xbe\x07\x5e\xfb\x9a\x81\xdd\x23\x99\x17\xa5\x61\xe4\xc2\x0f\x19\xb4\x48\x14\x0c\x5c\xc7\x1a\x41\xfb\x14\x9e\x44\x8a\x11\x1f\x3b\xc9\x7e\x80\x0d\xe6\xfa\xe1\x7d\xfa\x51\x53\xb7\x27\x98\xbf\x93\xf1\x9c\x37\x2b\xe4\x20\x0b\x0b\xf3\x06\xc6\x8a\x82\x3c\x76\x27\xe5\xf4\x23\x6c\x11\x9a\xcb\x12\x9b\xf2\x25\x6e\xfd\x02\x09\x31\x14\xb6\x71\x2b\x43\xba\x31\x71\xaa\x8a\x94\xf3\x0e\xac\x8d\x82\x1a\xc3\x94\x78\x45\xfe\x7b\xef\xc3\xe7\xbf\xf7\xf7\xbf\xdb\xdb\xfb\xe5\x45\xff\x3f\x7f\xfd\x7c\xef\xc3\x00\xfe\xe3\xb3\xfd\xef\xf6\x7f\xf7\x7f\x7c\xbe\xbf\xbf\xb7\xf7\xcb\x8f\x6f\x7f\xb8\x3a\x3f\xf9\x95\xef\xff\xfe\x8b\x28\xf3\x6b\xfc\xeb\xf7\xbd\x5f\xd8\xc9\xaf\x2b\x0e\xb2\xbf\xff\xdd\x7f\x34\x9e\x72\x6b\x95\xb8\x3b\x85\xb8\x23\x75\xf8\x51\x94\x61\x17\x1d\xee\x68\x2f\x5e\xb8\xd1\xe6\x77\xa3\x3b\xb0\xee\xda\x8d\x5e\x9a\x82\x9a\x17\xc6\xe1\x9a\xc8\x9c\x1b\xab\x1c\x5a\x7d\x90\xc6\x79\x61\xdc\xd4\x8c\x52\x27\x07\x20\xa1\x92\x1a\xec\x11\x1a\x72\xaa\xa2\x3c\x6d\xe9\x35\x3f\xd7\x7b\x35\xf8\x2b\x60\x3f\xf7\x53\x36\xe2\x82\xb9\x38\xd8\x56\x36\xdc\x7f\x6d\x65\xc3\x73\x94\x0d\x9a\x25\xa5\xe2\x66\x76\x24\x85\x61\x1f\x1b\x79\x58\xea\xa2\xe1\xb2\x3e\x20\xc1\x7d\xe6\xaa\x28\xdd\x77\x44\x16\x98\x40\x39\x57\xce\x1a\x52\x70\x55\x29\xc0\xc0\xc4\x2a\x19\x66\xd0\xfa\x03\xbb\x07\x72\x22\xe7\x1f\xe2\xed\x39\x34\x33\x7f\x2b\xf9\x94\x66\xd6\xda\xad\x7e\x71\x0e\x16\x4c\xfc\xa3\x55\xf7\xbc\xa1\xfa\xba\xda\xf0\xac\x6f\x75\xe8\x30\xe7\x03\xff\x4a\xf0\x11\xfb\x68\x9e\xa2\x96\x06\x0a\xd2\xb9\xe2\x53\x9e\xb1\x31\x3b\xd1\x09\xcd\x40\xae\x75\x73\x56\x1c\xde\x32\x3a\x2c\xbc\x92\x99\x26\x37\x13\x06\xdd\x95\xa9\x77\x01\x40\x85\xcb\x98\x72\x41\x72\xbb\x44\x85\xff\xb1\x46\x5f\x82\x15\xff\x05\x55\x76\x81\x83\xcf\x00\x4c\xe4\xa1\x94\x99\x4b\x1d\xce\x66\xd5\xf8\x2e\xf7\x5e\xc8\x7f\x08\x76\xf3\x0f\x3b\x9a\x26\xa3\x8c\x8e\x83\xab\x40\x33\xb3\xe0\xed\xab\x86\xbe\xf5\x05\x20\x2f\xb7\x64\x84\x66\x37\x74\xa6\x2b\xc7\x49\xdc\x07\xfc\x15\x79\xb9\x0f\xec\x4c\x35\x09\x63\xa4\xe4\x8b\x7d\x88\x25\x1e\x1d\x9e\xff\xe3\xf2\xef\x97\xff\x38\x3c\x7e\x7b\x7a\xd6\xee\xa4\xb0\xef\xce\xa8\x68\x34\x46\x42\x0b\x3a\xe4\x19\x6f\x73\x40\x2c\x64\x9b\xc4\x83\xc2\x11\x9c\xa6\x07\xa9\x92\x05\xd2\xc9\xfb\xa8\xaa\x93\xb2\x6e\x05\xc7\x95\xc9\xb0\x3c\xa3\xfa\x80\x63\x45\x85\xa9\x9c\x35\x15\xc9\x55\x29\xac\x61\xfd\xc4\x13\xf3\x69\xda\x5d\x52\xfe\x61\x9a\xb2\xb4\x46\xbd\x67\x97\x04\x78\xe4\x5f\x6e\x56\xd5\x68\x93\xf3\x77\x97\xa7\xff\xcf\x1c\x1b\xce\x8a\x76\x39\x4f\xdd\xd4\x85\x29\x59\x74\xb6\xba\x17\xae\xee\x68\xbb\xbe\x1b\xb1\xbe\xe1\xac\xea\x26\xd2\x7e\x51\x8a\x3a\x8c\x47\x35\x3e\xc9\x65\xca\x06\xe4\x3c\x78\xe9\xeb\xdf\x46\xe5\xbd\x54\x31\x62\x6f\x11\x86\xd3\x2c\x9b\xc5\x0a\x92\x91\x58\x4c\x53\xab\x4c\x8e\xe5\xf0\x88\x66\xba\xa5\x30\x6d\x73\x32\xd9\x43\xf8\xad\x35\x26\x3b\xa1\x66\x18\x8d\xa4\x4c\x48\xe3\xb4\x52\x3b\x4b\x28\xd6\x56\x32\x21\x68\xb9\x46\x69\x51\xb5\xd3\x45\xa3\xa3\xdf\x1f\x4c\x5c\x7b\x5a\x9d\x87\x91\xd1\xcb\x5b\x6a\x36\xaf\xdd\xba\x83\xa9\xb2\x65\xed\xe8\x8a\xd1\x14\x6a\xd2\x0a\x6a\x26\x98\xd5\x90\x53\x7d\xcd\x52\xfc\xc0\xe9\x35\xc1\xcd\x6f\x47\x0c\x8f\xba\xb2\xf3\xf6\x3e\x7d\xd0\x67\x30\xd7\x02\x62\x01\xcd\x40\x37\x48\x17\x5b\xc0\xbe\xd3\x3b\x91\xcd\x2e\xa4\x34\xaf\x43\x2d\x56\x27\x0b\xf8\xb3\xd3\x14\xeb\x6e\x58\x50\xa5\x20\x09\x21\xed\x03\x31\x81\xa5\xe3\x32\xb0\xe3\x6a\xc1\xd6\xcc\xd0\xaa\x14\x87\xfa\x07\x25\xcb\xc6\x27\xc0\x82\xa2\xf5\xc3\xe9\x31\xec\xe3\xd2\x45\xd9\x84\x51\x33\xa8\x3a\x5d\x04\x0c\x0a\x3a\xed\x7b\x17\x27\x8c\x39\xb2\x0a\xe9\x90\xb7\x74\x46\x68\xa6\xa5\x57\x8e\xb9\x58\x6a\x40\x39\xeb\xcc\x7e\x3d\x94\x66\xb2\x60\x96\x59\x76\x5e\xfc\x5d\x2f\x0a\xba\x55\x08\x46\x5c\x2c\xfc\xdc\xd0\x6b\xa6\x49\xa1\x58\xc2\x52\x26\x92\x96\xab\xb6\xee\x50\x13\xac\xfc\x99\x14\x76\x5b\x74\xb2\xf6\xa7\x21\xc6\x08\x8e\xb0\xfa\x4a\x43\xb4\xd2\xd9\x1d\x14\x62\x96\xb0\x29\x4a\xcd\x14\x06\x58\x55\xc9\x70\x21\x7e\x2c\x87\x2c\x63\x06\x8d\x21\xc0\x9d\xa0\x06\x0d\x69\x9e\xd3\x31\x23\xd4\x04\x46\x31\x92\x30\xa1\xad\xb8\x41\xd7\x9b\x21\xa9\x64\x55\x01\x25\xd5\xe4\xfd\xe9\x31\x79\x41\xf6\xec\xb3\xf6\x61\xf9\x47\x94\x67\x10\xce\x34\x54\xcd\xcf\x91\x8f\xfc\x10\x30\x25\xe0\x3d\x22\x15\x6e\xd1\x1e\x11\x92\xe8\x32\x99\xf8\x39\x59\x8b\xcb\x1b\x6c\x2e\x9f\x0f\x9c\xfa\xcf\x90\x55\x5b\x0b\x98\xf7\x9a\xa9\xce\xe4\xcb\xfb\x06\xf2\x25\x56\x21\x2c\xcf\xd5\xa9\x87\x8c\x95\x33\x43\x53\x6a\xa8\x93\x3b\x55\xd5\xf5\x73\x5c\xd2\x75\x4b\x1f\xcd\xde\x70\x51\x7e\xc4\x8c\x95\xee\x8c\xfc\xcb\x13\x18\x96\x24\x9e\x68\xb0\x68\xb4\x28\x32\x8e\xf5\xce\x73\x19\x54\xa7\xb5\xa5\xee\xdd\xa2\x22\xc1\x36\xa7\x59\x26\xad\x78\xb3\x27\x3b\x15\xa9\xcc\x17\x1e\x66\x15\x28\x56\x03\xba\x1b\x90\x67\xc9\x3c\x6b\x77\x47\x64\x6c\xca\x5a\x60\xba\xcc\xe3\xf2\xd9\xd1\xac\x2e\xe6\x17\x14\x86\x27\x19\x1d\xb2\x0c\x4f\x16\x64\x20\xbd\xc8\x40\xeb\xce\x42\x54\x32\xeb\xae\x06\xe3\x42\x66\x0c\xd3\x7a\x3c\x21\xec\xf0\x4f\x82\x0e\x30\x48\x57\x74\x00\x43\xa6\x46\x07\x30\xc9\x9e\x02\x1d\xca\x16\x07\x2d\x99\xa7\x83\x3d\xb5\xeb\x74\x80\xa3\x73\xd3\xe9\xa0\x59\x92\xc8\xbc\x38\x57\xd2\x9a\x5c\x9d\x1d\x2d\x6e\xd8\x2a\x56\x84\x36\xf9\x92\x24\x1c\x10\xe5\xf5\x9b\xa9\x8a\x12\xfa\xa8\x41\x19\xef\xb3\xfa\xfe\x7f\x71\x87\x64\x2b\x7a\xe6\xcf\x21\x3f\x4a\x2d\xac\x64\x7f\xe9\xbe\x78\xe2\x70\x02\x2d\xbc\x64\x9d\x1c\x26\x32\xa1\x19\x40\xee\xb5\xe3\x18\x32\xcf\x35\xf3\x03\x47\x59\x98\x10\x5a\x82\xcf\x7c\xdc\x1f\xd0\xd7\xe0\x13\xe7\xfb\x12\x32\x65\x51\x08\x12\xd3\x47\xaf\x30\x5b\x0f\xee\xf3\x09\xa0\xf6\x54\xf7\xd1\xc0\xb4\xf6\x6b\x23\x1d\x02\xcc\xdb\x00\xe4\x67\x27\xc8\x44\xca\xc5\x18\x3c\x3a\x3d\xa2\x58\x86\xa9\xa3\x6e\x0f\x5f\xa3\xf9\xb5\x0b\x1c\xed\x07\xf5\xec\xec\x1f\x0d\x9a\x10\x97\xc2\x8d\x0c\x4e\x0e\xaf\xdf\x8c\x50\x5a\x72\x4d\x76\xde\x78\x02\xb4\x40\x3e\xdb\xc4\x03\x62\x07\xdf\x30\xac\x26\xfa\xd8\xae\xb9\x48\x5d\x96\x65\x8d\x58\x01\xa3\x16\xb5\x50\xc8\xdf\xe5\x69\x2c\x1a\x5e\x91\x0f\x82\x04\x62\x91\x7e\x63\xf6\xb8\x40\x85\xd5\xbb\x97\xfa\x77\xbb\xfc\xc2\x43\xe6\x87\x79\x2f\x60\xed\xed\x73\xfb\xd6\xec\x5d\xbc\xcf\xbf\xcb\xce\x3a\xd7\xf5\x86\x8b\x54\xde\xe8\xae\x6d\x88\x9f\x71\x58\xaf\x50\x27\x96\xad\x0d\x17\x63\x1d\xdb\x11\x34\xcb\x6a\x6e\xd8\x65\x86\x84\x5f\xe1\x80\x48\xbc\xa8\xc0\xcf\x65\x87\x6f\x8d\x80\x07\x5c\xe3\x5c\xd3\x23\x65\x5f\xc5\x70\x9a\x5d\x16\xcd\xa1\xd9\xc8\x3c\x1b\xfc\xf0\xf6\xf2\xb0\x3e\xb4\x95\x67\x37\x80\x78\x6d\x89\x6d\xbf\x27\x34\xcd\xb9\xd6\xe0\x06\x62\xc3\x89\x94\xd7\x64\xcf\xa7\x6d\x8c\xb9\x99\x94\xc3\x41\x22\xf3\x28\x83\xa3\xaf\xf9\x58\x1f\x38\xa6\xed\xdb\xd9\xef\x13\x2e\xb2\x90\x8d\x02\x66\xa4\x30\xda\xbb\x31\xe0\x21\x49\x98\x05\xac\xad\xc3\xeb\x74\x51\xe6\xc5\x69\x22\x42\x27\x67\xd9\xfa\x01\x67\x16\x97\xe7\xac\x25\x76\xc6\x3d\x4b\x04\xef\xee\x4a\x53\xe2\x32\xaa\xa5\x74\x44\xed\x6d\xed\x44\x72\xda\x41\xc2\x74\x77\xa8\x3c\x7f\xab\xc6\x24\x29\xc3\xea\x09\x06\x59\x27\xf4\xd6\xe4\x26\xf0\xca\xee\x42\x11\x9e\xfb\xe9\x6e\xac\xd1\x42\xd4\x07\xcb\x3c\xac\x3d\x90\x15\x13\xda\x47\x23\xd9\x8a\x24\x90\x61\x5e\x07\x98\x48\x21\x5d\x72\xba\x3d\x05\xa5\x00\x96\x06\x6b\x01\x03\x41\xb0\x26\x4e\xc6\x46\x53\x3d\xaa\xe2\x83\x71\x0c\x09\x8a\x78\x10\x04\xa0\x9a\xc3\x0d\x37\x13\x8f\x70\x5f\x0b\x38\xc1\x4c\x14\xd3\x10\x3d\x10\x84\x29\x25\x95\x4b\x84\xf1\x5e\x5b\x18\x09\x44\x31\x64\xd2\x58\x26\xa1\xf6\xaf\x5d\x1d\x87\x28\x2b\x08\x5c\xc8\x13\xb3\xdc\xc4\x46\x23\x96\x80\xa6\x14\x13\x18\xc5\xee\x5e\x85\xdc\xe7\xb2\xbb\x2d\x83\x39\x08\xdd\x9c\x7f\xb4\x4f\x89\x7f\x15\x07\x43\x1d\x62\xde\xf2\xaf\xf7\x07\x84\x9c\x8a\x90\x39\xd9\xb3\xab\x18\xdf\xe9\x53\x7e\x8c\x7d\xc5\x18\x7f\x19\x5e\x20\xf6\x3b\x59\xf5\x4e\x95\x1d\x70\x7c\x1b\x67\x30\x89\x1d\xc2\x9d\x8a\x03\x70\x0c\xbb\x41\xed\xd2\xfb\x43\xbc\x8d\xa3\xd8\xde\xf2\x58\xce\xe2\xa7\x71\xd2\x93\xb6\x72\xce\x95\xc4\x77\x04\x8a\x7b\x19\x8d\x16\xa9\xdf\x21\xdc\x74\x2e\x53\x84\xc4\x08\x25\xfd\xd0\xcb\x02\x20\x3a\xf8\xbf\xbd\x82\x55\x29\x69\x42\x62\x56\x76\x8c\x95\xe1\x30\x41\x53\x62\x75\xe5\xcc\xdb\xf6\x79\x91\x31\xa8\x9e\x8b\x46\xae\x0a\x03\x23\x14\xdd\x5e\x98\x48\x05\xc4\xeb\x10\x3a\x7a\xe4\x5f\xb0\x29\x43\x02\xa0\x07\x0f\x38\x0f\x3f\x47\x13\x8f\x6b\x0f\xa9\x0d\x95\x6d\x46\x7a\xd7\x01\x49\xf9\x68\xc4\x7c\xa2\xa1\x35\xfd\xa8\xa2\xb9\x15\xf1\x9a\x38\x12\x0c\xd9\x98\x63\x26\x5b\x10\x6c\xbb\xba\xaa\x80\xef\xa1\x30\xe4\x86\xe4\x7c\x3c\x41\x46\x21\x14\x2a\x23\x89\x0f\xa9\x65\x92\xa6\x04\x78\x5b\x2a\x72\x43\x55\x6e\xcf\x0d\x9a\x4c\x20\x3e\x47\x05\x49\x4b\x05\x30\x91\x86\xd1\x74\xd6\xd7\x86\x1a\xab\xea\x32\xe5\x2c\x42\x3f\xff\x2d\x94\xf0\x9d\xd7\x16\x4a\xf8\xf6\x6b\x0b\x25\xbc\x85\x12\xde\x42\x09\xdf\x7d\x6d\xa1\x84\xdd\xb5\xfe\x6a\x5f\xb2\x85\x12\x6e\x78\x3d\x2f\x38\x9b\x2d\x94\xf0\x83\xae\x2d\x94\xf0\xe2\xb5\x85\x12\xbe\xe5\xda\x42\x09\xdf\x72\x6d\xa1\x84\xb7\x50\xc2\x5b\x28\xe1\x2d\x28\xda\xbd\x63\x6d\x26\x28\x1a\xd9\x42\x09\xbb\x6b\x0b\x25\xfc\x2c\xa0\x9f\xc8\x16\x4a\x78\xa5\x6b\x0b\x25\xbc\x85\x12\x6e\x72\x6d\xa1\x84\xe1\xda\xfa\x5e\xb6\x50\xc2\xfe\xda\x42\x09\xe3\xf5\xc7\xd1\x9a\xb7\x50\xc2\x5b\x28\xe1\x2d\x94\xf0\x16\x4a\xf8\xce\x59\x6c\xa1\x84\x9f\x83\x3d\xa9\x4d\xca\x1b\x21\x9f\xad\x02\x54\xe1\x32\x43\xa2\xd2\xd6\x61\x39\x1a\x31\x05\x92\x0b\x9e\xbc\x90\x85\x10\x00\xad\x82\x2c\x73\x79\x06\x00\x8b\xa7\x18\x4d\x5d\xc2\xfb\x2d\x3f\x77\xb5\xb4\x80\x50\x56\x65\x6a\x9e\xbc\x7b\xdd\x0d\x2a\x46\xbb\x1c\x45\x98\xf3\x3b\x91\xb4\xcf\x55\xab\x08\xbe\xac\x00\xc3\xd1\x3d\xc9\xa4\x76\x19\xa6\x40\xac\x64\x42\x85\x60\xde\x78\xe4\x06\x9c\x32\x43\xc6\x04\x91\x05\x13\x28\xbf\x29\xd1\x5c\x8c\x33\x46\xa8\x31\x34\x99\x0c\xec\x93\x84\x27\x76\x95\x0d\xea\x3e\xd1\x46\x31\x9a\xfb\xbc\xd8\x9c\x72\x1c\x8a\xd0\x44\x49\xad\x49\x5e\x66\x86\x17\x61\x30\xa2\x19\x24\xb4\xe3\x41\x15\x88\x01\xe9\x25\x55\x0a\x69\xaf\x7a\x9a\x9b\x96\x8c\x41\x81\xc0\x74\xed\x01\x0e\x6a\x5e\x98\x59\xc8\xa3\x63\x64\xc4\x95\x36\x24\xc9\x38\x9c\xd6\xf0\x44\xac\x1d\x84\xf1\x7a\xfe\xac\x16\x6e\xa6\xda\x4d\x55\xa4\xa0\xb6\x16\x46\x63\x56\x5a\x35\xa0\x1b\x2a\xe5\xda\xa9\xf9\xba\x47\xa8\x87\xbc\x41\x42\xfb\x99\x02\xa9\xfd\xc9\x82\xa3\xbb\x8f\xa2\xe1\x22\x9c\xbc\x2a\x6d\xaf\x62\x74\x48\x31\xf6\xcc\xd9\xab\x65\x53\x57\x0a\x05\xa4\xbb\x2c\x6c\x03\x58\x00\xc1\xa6\x96\x07\x58\xc2\xec\xf9\x4a\x6f\xe1\xfa\x4f\xce\xf4\xd1\xa1\xf8\x96\x69\x4d\xc7\xec\xbc\x61\xd4\xe2\x36\x8b\x0c\x02\x17\xd5\xc2\x00\x2b\x64\x58\x9e\x16\x3e\xa9\xd2\x9c\xea\x6a\x10\xc9\x71\x4e\x41\xf9\xb9\x51\xdc\x18\x06\x8b\x0a\xe0\x48\x10\xf8\x9c\x2f\x40\xdd\x9d\x4b\x96\x7a\xeb\x07\xa9\x7e\x6c\x85\xba\x48\x31\x75\x69\xc8\xc8\x50\x71\x36\x22\x23\x0e\xf9\x50\x90\xa1\xd4\x43\xb8\x0f\x8a\x1e\x05\xad\xad\xbd\x2b\x85\xd7\x65\xfd\xbc\x06\xe4\x67\x37\x31\xa3\x4a\x91\xd0\x08\x04\x10\x4a\xb4\xf8\x88\x8c\x21\xc3\xc9\x69\x8b\x5f\xbd\xf8\xcf\xbf\x90\xe1\xcc\x1e\x69\xa0\x59\x19\x69\x68\x16\x5e\x32\x63\x62\x6c\x69\x85\xdb\xb3\x5e\x64\x14\x28\x00\x28\xe6\x38\xf1\x97\x5f\x5c\x0f\xeb\x67\xec\x41\xca\xa6\x07\x11\xfd\xfa\x99\x1c\x2f\xc3\x85\x6f\x9e\x32\xd9\xd0\x24\x5a\xc2\x66\x32\xe3\xc9\xac\x35\xa3\x79\xdc\x19\x32\x91\x37\xa8\xeb\x2f\xe1\x9e\x2a\x07\xb2\x90\x45\x99\xa1\x07\xfb\x75\x28\xcf\x2b\x35\x5b\xac\xc1\x59\xba\x2f\xc0\xe7\xea\x86\x98\xc7\x8b\xc5\xc4\x36\xff\x48\xe9\x72\xbb\x9d\x57\x30\xc0\xcf\x80\x21\xf4\x9a\x66\xd9\x90\x26\xd7\x57\xf2\x8d\x1c\xeb\x77\xe2\x44\x29\xa9\xea\x73\xc9\xa8\x95\x96\x93\x52\x5c\x23\x72\x75\x28\x11\x96\x63\xab\x5a\x15\xa5\xf1\x89\xc4\xcb\x5e\x18\x0b\x4e\xbd\x10\xf6\x66\x50\x35\x0a\xfb\xc8\x2b\x5b\xc7\x95\x4a\x20\x47\xc6\xe3\xeb\x98\xd9\xbe\x78\xf1\xd5\xd7\xc8\xba\x44\x2a\xf2\xf5\x0b\x48\x7e\xd4\x3d\xdc\xc4\x20\xdb\xec\x41\x91\xd3\x2c\xb3\x66\x43\xcc\x94\x96\xd0\xcb\x98\xf0\x93\xf3\xa0\x69\xcf\x6e\x2b\xab\x52\x57\x57\x7f\x07\x3d\x8a\x1b\xcd\xb2\x51\x0f\xab\x02\x82\x59\xb3\x0b\x07\xc3\xae\x93\x3e\x50\x9a\xb1\x01\x0a\xd0\x54\x66\x65\xce\x8e\xd9\x94\x77\xd1\xbc\xa2\x36\x9a\x37\xf5\x33\xae\xa1\x00\x63\x98\xc9\xe4\x9a\xa4\xee\xcb\x28\x8d\x65\x1e\x42\xb5\x39\x15\x9a\x26\xf4\xb4\x48\xe4\xb9\xf5\xfd\x6b\x29\x3c\x39\x2d\x8a\x90\xa3\xaf\xe8\x4d\x8d\x18\xb0\x27\xa1\xde\xb7\x25\x9e\x42\x6b\x37\x73\x5b\x27\x73\xdf\xbd\x91\x95\x9b\x8d\x87\x68\x9c\xc2\xd2\xde\x47\x5d\xcd\xbe\xb9\x63\xb2\xc6\x10\xd5\x80\x7e\x37\x14\xf0\xdf\x98\x9e\xbd\x50\x95\x14\x0a\x5b\x02\x63\xa0\x02\x60\xd9\x07\x44\x72\x73\x87\x6b\x07\xde\xcd\x76\xf9\x4b\x35\xba\x88\xe0\x55\xce\xa9\x71\x0a\xa1\x77\x5f\x53\x52\x30\xa5\xb9\xb6\xe7\xf2\x4f\xb0\xa1\x8e\x32\xca\xf3\xc8\x05\xb8\x1e\x22\xe0\xe6\x06\xe4\xcb\xf6\x92\xf2\x5c\xa6\x6e\x40\x10\x85\x88\xfa\xb9\x44\xad\xad\x6b\xb5\x1d\x1e\xa8\xeb\x16\x95\x3f\x55\xd4\xac\x4b\x4a\xfb\x49\x10\x95\x78\xd7\x73\x12\x90\xf0\x7e\x4f\x55\x3e\x86\xc9\x77\x24\x06\x40\x30\xba\xc5\xad\x4b\xc2\x9a\xf1\x88\x1b\x25\x52\xe9\x9d\x1d\x38\x20\x18\x52\xb7\x7b\xc2\xfd\x94\xec\xbe\xda\x5d\xab\x90\x44\x12\x29\x59\xd0\x71\xab\x1e\x06\x73\x94\x9a\x1f\x36\x2e\xf4\xb6\x66\x10\x7c\x1f\x60\x87\xe0\x2e\x96\x56\x40\x14\x00\x33\x82\xd1\x51\x4f\x60\x67\x20\x60\x3d\xe4\x0d\x9d\x11\xaa\x64\x29\x52\xe7\x5f\x0a\x0e\xbe\xb7\x73\x0f\x3e\x93\x82\x79\xc7\xf9\x7c\x9d\x38\x78\xf4\xb9\x20\x2f\x07\x2f\x5f\x3c\x97\x93\x0a\xde\x70\xee\xa4\x3a\x0b\x27\x15\xca\xa7\xb5\xbe\xab\x47\x3b\xee\xe8\x7d\xdf\x3a\x17\x4b\x05\x66\xcc\x3d\x58\x2b\x7c\x74\xa3\xb8\x61\x51\x6f\xa3\x3d\x30\x5c\xac\x7d\x18\x55\x45\xef\x77\x88\xe1\xdd\x4d\x19\xba\x2e\x87\x8f\x28\xb7\x9c\x80\x82\xed\xb6\xcc\xc3\xa5\xef\x10\x61\x31\xa1\x76\x76\xc8\x1e\xde\xb9\x8b\x95\x81\xfb\x6b\x65\x2d\x47\xb4\x93\x8f\x45\x0b\x8c\xb9\x1a\xe1\x4e\x3e\x16\x14\x7c\x70\x45\x87\x14\xfc\x9e\x4d\xe8\x94\x41\x45\x24\xcf\xa8\xca\x20\xe6\x78\x89\x73\x27\xc3\xd2\x10\x26\xa6\x5c\x49\x01\x09\x3e\x53\xaa\x38\xa0\x52\x28\x06\x95\xd5\xd6\x16\xfd\x8f\xbd\x9f\x0e\x2f\x20\xa1\x61\xdf\x95\x84\xbb\x59\x96\xda\xc3\x47\xc4\x33\x89\x86\xbb\x77\xf9\xfc\x3c\x2c\x0d\x41\xe6\xfa\x79\xd9\xe7\xe4\xa5\x29\x11\x10\xff\x63\x92\x95\x9a\x4f\xd7\x25\x49\x5c\xa9\xea\x31\x6f\xb4\xce\x73\x65\xb3\x15\xa1\x16\x2a\x60\xc1\xb5\x0e\x47\xcb\x3d\x08\xac\xbb\x3a\x60\x56\xc5\x31\x70\xe7\x7a\x72\xb5\xec\x98\x8b\xe7\x21\xcb\x16\x54\x08\xc0\x6d\x58\xaf\x13\x4a\xc8\x94\x3d\x1c\xf5\xa2\x9e\xde\xe3\x86\xc0\x98\x79\x54\x0e\xa8\x93\x09\x4b\x4b\x80\x57\xe1\x1a\xc1\x01\xad\xf9\x40\x2b\x18\x2b\x01\xfd\x19\x4e\x47\xa1\x36\x58\xf4\xc1\x39\x88\x34\xf7\xbf\x57\xbe\x92\xd8\x7f\xa0\xe7\x46\x04\xa3\xd4\x8e\xd5\x23\x54\xeb\x32\xc7\x2d\x81\xf0\xdb\x23\x6e\x74\xe8\xad\xe7\xb5\x63\xbb\x31\x1e\x58\x9d\xd5\x82\xbe\x97\x2c\x03\xe6\x6a\x41\xe3\xdd\xb3\x68\x1c\x24\xb4\xf6\x7f\x39\x86\x73\x09\x13\x10\x6d\x0b\x49\xa1\x12\xbc\xa4\x23\x0e\xed\x2b\xa8\xa3\xf7\xe5\x92\x5f\xa2\xea\x80\x77\x00\x3c\x03\x1d\xb2\x4c\xcf\x0f\x34\xac\x16\xc5\xc1\xfa\x39\xc2\xb7\xec\x0e\x48\xb5\xe6\x63\x01\x7d\xc3\xec\x68\x0f\xec\x10\xd6\xd8\x66\xea\xa2\xfb\x5f\x63\xa9\x56\xcb\xc2\xca\x69\xd1\x77\x56\xaf\x91\x39\x4f\x1e\x30\x92\x9c\x32\x35\x61\xf4\x81\x06\xdf\x5c\x5c\xcc\x8d\x51\xb5\x8e\xd1\xae\xca\xd1\xed\x1b\xff\x10\xbb\xbf\x64\x02\xd9\xf6\xe8\xa7\xf7\xd9\x4f\x14\x58\x04\x1b\x53\x8e\xf9\x94\x09\x0f\xfc\x77\x94\xd1\xd0\x7c\xcc\x43\x25\x39\xf0\xc1\xd2\xc8\x10\xf9\xb0\xe6\x54\x85\x5e\x06\x81\x52\xe7\x74\x8d\xc7\x89\x6e\x71\xad\xcb\x32\x0f\xd6\xbf\xca\x9d\x10\x7c\xc0\xd6\x1f\xbd\xea\x95\x72\x6f\xa0\xd5\xe0\x71\x48\x02\x21\xb2\xd0\x15\x14\x03\x11\xf7\x3f\xc2\xc5\xb5\x2d\x2f\x2e\x1b\xc6\xed\xb9\x80\xe3\x54\x11\x36\xb3\xca\xeb\x8c\x40\x73\x89\xd3\x51\xfd\x49\xbc\x06\x7d\x09\xd9\xd8\xb0\x87\xab\x43\xe5\x5c\xa6\x97\x05\x4b\x7a\x24\x2c\x65\xdc\xb9\xcd\x39\x6d\x30\xb5\x25\xc2\x6f\xc4\xe3\x48\x29\xa6\x0b\x89\x08\x9c\xf1\x63\xe3\x06\xa1\xdc\xd4\x22\xf6\xd8\x88\x00\x2c\xb4\x0a\x2b\xe1\xdf\x4c\xc9\xa5\x82\x60\xcc\xcd\xe0\xfa\x6b\x90\x02\x4c\x4c\xa8\x48\x50\x00\x1f\x5c\xb3\x42\x1f\x68\x3e\xc6\x4d\xff\x97\xaf\xbf\x06\x09\xe0\x49\x72\x70\x71\x72\x78\xfc\xf6\x64\x90\xa7\x4b\x8c\x38\x8f\xf5\x05\x61\xb1\x1f\xc3\x46\x22\xd3\x97\x83\x97\x5f\x63\xdc\x9e\x6b\x04\x20\x89\xe0\xbf\xb0\x26\x6d\x11\xfb\xeb\x5c\xa6\x81\x6e\x2e\x6f\xeb\x81\xd1\xc8\xb5\xca\xa0\x27\xd3\x77\xb4\x61\x46\x6d\xdb\x2c\xda\x56\x99\xb3\x1d\x66\xcb\x16\x8a\x59\xf5\x86\x4b\xd1\x24\xce\x5c\xb7\xef\xe6\x86\xf2\xce\x7b\xf7\x97\x15\xc4\xfe\x69\x62\x6c\x65\xb3\x46\x79\x9d\xc9\x1b\xc8\x0d\xe1\x52\x71\x33\x1b\x00\x54\x8f\x1c\x91\x33\x36\x65\xaa\xe7\x47\x7d\x63\x6f\x3a\x0f\xf7\xc4\x06\xc4\xb2\x3b\xa2\xae\x38\xb7\x6d\xd4\x1e\x19\xc7\x69\x08\x67\x52\x9c\x87\xd9\x85\x61\xdc\xce\xeb\x43\xc6\xe4\xa7\x50\xce\x3c\x19\x5a\xac\x03\xa2\x1f\xbb\x17\x70\x8d\x92\x7f\xa2\x8a\xcb\x52\x13\xf4\x89\xc7\x98\x83\x18\x47\x0f\x24\x02\xd5\xcc\x79\xb9\xc2\x20\x21\x3d\xde\x3b\xba\x02\x7d\x0e\xc3\x79\x73\xb4\xfc\x48\xe3\xc6\x2e\xfa\xd4\x3f\x4a\xf9\x7c\x9f\x05\xb8\x42\x3c\xcc\x96\x9e\x5f\xfe\x44\xd6\xf1\x44\x61\x18\x3f\x0f\x38\x1b\xac\xc2\x8f\xa3\x4c\xf8\xd8\x67\x95\xc1\xfb\xa3\xee\x1e\x7d\x1a\x98\xad\xc1\x92\x36\xd9\xf1\x4d\x93\x1b\x8b\xf9\xf7\x6b\xc1\x16\x75\x50\xb7\x18\x17\xce\xa7\x55\x57\x5b\x70\x07\xf9\x04\x0e\xc1\x7e\xa2\xb8\xe1\x09\xcd\x76\xe0\x08\xf3\x5f\x59\xdb\xdb\x30\x15\x7f\xab\x18\x31\x37\x12\x9f\x42\x33\x72\xcd\x66\x37\x52\xa5\x5e\xbf\xf0\x4f\xac\xd6\x42\x1b\xff\x48\xce\x9c\x2c\x40\x48\x2e\x95\x33\x45\x86\xcc\xbb\x11\xe6\x6e\x9e\x0d\xc8\xa1\x98\x39\x1f\xac\x88\x2b\x2d\xbc\x1a\x31\x9c\xa1\x8e\x83\x5a\x60\x8d\x49\xdc\x79\xe8\x9f\x46\xb1\x06\xe6\x36\x13\xdb\x2a\x90\x61\x17\x78\xed\xc5\xdb\xd8\x52\xb9\x54\x6f\xd8\x1d\x0a\x13\xd5\xa5\xff\xfa\x93\x48\x0b\xab\x9f\x71\xc1\xb4\xfe\xc1\x2e\x65\x1b\x75\xbb\xce\x1d\x14\xd4\x2a\x37\x36\xc8\xc9\x2a\xaf\x8a\xd9\x2d\x45\x7d\xcf\x77\x4b\xa1\x70\xe7\x80\x1c\xc2\x07\x90\x18\x68\x35\x47\x28\x25\xb0\x83\x59\x8b\x77\xae\xb7\x21\xde\x71\x78\x76\xec\x13\xb8\x50\xe9\xd0\x75\xcc\x46\x54\xf9\xeb\x33\x01\x4d\xd5\xa5\x11\xb1\xdf\x4a\x0a\xad\xaa\x76\xae\x54\xc9\x76\x9a\xa9\x7a\x88\x06\x7a\xf0\xe7\xaf\x5f\x80\xb6\x17\x9e\x07\x62\xff\x81\x59\xd1\x4d\x03\x85\x8d\x42\x84\xf3\xd1\xd1\x8b\x98\x1f\x3c\xc1\xbd\xdd\xe4\x3c\x77\x50\xe0\x04\xcb\x14\x68\xde\xc8\xbe\x6c\x14\x10\x6c\x1e\x0a\xec\x57\xd3\xbd\x7a\x78\x27\x84\x36\x51\xbc\xda\x73\xbb\x70\xf5\x55\xa3\xe1\xaa\x60\xa3\xe5\xea\x39\x51\xd0\x1e\xf1\x76\xdd\xc7\x90\x13\x04\x82\x0b\x5c\x23\x20\x1e\x67\x45\x8b\xfc\xa7\x06\xf2\x06\xd2\x7d\x5b\xab\x8a\xbb\x17\x38\x10\x29\x2a\xdd\x70\x21\x8d\x33\xb8\xb9\x41\xef\x70\x5a\xe1\x21\xe4\xc4\xf7\xc8\x3b\xf1\x1a\x93\x04\x7b\xa8\x28\xd6\xea\xb9\xf1\xa6\x4e\x6b\x25\x0e\xfe\xe4\xde\xbd\x8f\x53\x6e\x22\x14\x1e\x4e\xee\xc8\xf2\x6d\x79\xfa\xef\x5e\xcc\x8d\x55\x63\xbd\x9a\x65\xef\x4e\x48\x5e\x75\x50\x70\xe2\x93\x8c\x95\x2c\x0b\xef\x4e\xae\xb7\x43\xa8\x20\x84\xd1\x0b\x8a\xbd\xba\x84\xac\x0f\x1d\x9c\x37\xc0\xc0\xac\x42\x21\x4f\x49\x82\xe6\xbd\x3f\x75\x31\x15\x1c\x3d\x20\xaa\x14\xf5\x56\x83\x91\x43\x76\x27\x63\x63\x9a\xcc\x76\xea\xcf\x59\xe6\xfe\xe6\x90\xa1\xcc\x73\x84\x5f\xc4\xe7\x55\x89\x9d\x90\xff\x09\xfa\x03\xee\x35\x50\x0d\x42\x3f\x58\x7f\xe4\xfb\xca\x84\x09\x15\x29\xb8\x79\x1a\x7b\x16\xfe\xfc\xf5\x9f\xfb\x6e\xb4\x3e\x4e\x65\xbe\xc6\xcb\xd5\x6a\x2d\x75\x27\x7c\xd5\xc8\x15\xf0\x60\xfe\x0b\xde\xee\x4e\x55\xcf\xda\x12\x5b\x7d\x8a\xeb\x02\xd8\x01\xfd\x21\xe1\xf4\x0f\x4f\xbf\x4b\x3b\x5b\x3e\x48\xe8\x41\x1f\x86\xf8\x24\xe4\xaa\xe3\x4b\xb7\xd9\xad\xf3\x50\xd5\x13\x99\xa5\xb0\xaf\x9c\x93\xc9\x3f\x8a\x50\x63\x14\x1f\x96\xd0\x2d\x47\xa4\x00\x75\x5a\xaf\x33\x71\x5d\x39\x06\xa4\x2a\x34\x88\x8d\x67\x60\xfc\x01\x21\x97\xcc\xb5\x54\x8e\xe6\x01\x62\xd9\x93\x12\x0c\x29\xe0\x45\x68\xde\x87\x36\xdb\x27\x72\x48\x35\x3f\xbd\x47\x4d\xbb\xf6\xd6\x3b\xd9\x1c\x06\xa3\x46\x97\x85\x43\x3d\xa0\x19\xca\xc3\x85\x1e\x5f\x73\x07\x19\xa4\x60\x81\x44\xbc\x94\x79\x88\xd9\x5a\x5a\x68\x04\xe9\x03\x5e\xf6\xfd\x5c\x8d\x84\xfa\xa6\xb1\x73\xc5\xde\xd8\x21\x26\xbc\x40\x13\x9c\x9a\xf0\x73\x08\x7c\xd8\xaf\xe3\x72\x55\xe8\x90\xf3\x12\x6d\x60\x79\x03\x4e\xf0\x1f\x4e\x8f\xc3\x1e\xb1\x77\xbd\xbe\x04\x82\x90\x2f\x06\xae\x5d\x97\x19\xf3\x94\x0c\x31\xd8\x65\xc5\xeb\x9e\x60\x37\x98\x3e\xe7\xfc\xc4\x41\x0d\x9f\xfa\xb4\x32\x1c\x2d\x3c\xdc\x0d\xb9\x4f\xbe\x74\x9d\x97\x98\xf2\x46\xfc\x90\xbb\xf4\x9a\x77\x17\xbb\xde\x3b\x7f\xd3\x57\x37\xfd\x7e\xbf\x6f\xe7\xea\x85\xfa\x92\x9e\xb6\x76\xbf\xe7\x32\xe5\xa3\xd9\x1c\x25\x2c\x9b\x57\x8f\x00\x8e\xa4\x62\xe6\x66\xd7\xa0\xd5\x4e\x3b\x3f\x5e\x9b\x0a\x54\xc7\x9c\x47\xb0\xde\x4d\xcb\x3c\xea\x72\x63\xc9\x90\xce\x2a\xd6\x64\xc8\x26\x74\xca\x25\x14\xa6\x02\x8f\x41\xc2\xe0\x2d\x74\xf5\x3e\x1f\xb7\xe8\x0e\xeb\x08\x6d\x72\xf6\xb1\x90\x88\xa4\x08\x09\xb9\xd0\x24\x62\x3e\x98\x02\x6e\x6e\xbb\x29\x20\xaf\xa0\xc6\xf4\x4e\x7d\x40\x34\x11\x4f\x04\x32\xa4\x76\xc8\x30\x9d\xbd\xb9\x65\xde\x1f\x90\x53\xc7\x19\x60\xfe\x09\xe9\x5a\x4d\x10\x29\x08\x2b\x26\x2c\x67\x8a\x66\xf5\x07\xb9\xc2\xa4\x57\x56\x5a\x2a\xcb\x64\x18\xb0\xc8\x69\x81\xc2\x12\x64\x5f\xca\x95\xef\x35\xe5\x44\x9c\xe5\xd7\x9d\x77\xd0\xf1\xf9\x2d\xd7\xa0\xa9\x38\xd7\x07\xea\x95\x3b\xcb\xce\x23\xff\x5d\xc8\xf2\x7a\x78\xe5\x50\x0b\x87\x70\x9b\xfe\xe4\x6b\xea\x4c\xbe\xee\xde\xae\x2e\x8e\x4c\x4d\x9b\xf4\xd8\xf5\xc9\x8e\x76\x7d\xc9\xb7\x1d\xc9\x57\xe9\x48\xbe\x6e\x16\x6d\xca\x8f\xcd\x92\xfe\x5a\xb4\x20\xdf\xc8\xe6\xe3\xeb\x5e\xbd\x27\x2e\x60\xda\xb6\x1e\x7f\x78\xd3\xf1\x55\x9a\x05\x3e\x7a\xd7\xf1\x67\xc4\x35\x0d\x2b\x36\xda\x15\x3c\xb4\xe8\x39\xbe\xd6\x6e\xe3\x2d\x13\x7f\x9b\x77\x18\x5f\x6b\x6f\xf1\x96\x6f\xdd\xbc\x5d\xec\x5a\x3b\x89\xb7\x7c\xeb\xe6\xdd\xc3\xd7\xda\x37\xbc\xc5\x5b\xb7\xed\x15\xfe\xa0\x2e\xe1\x6c\xce\x79\x12\x3c\xca\x9f\x56\x0c\xb6\x29\x5a\x6b\xd8\xac\xbb\xa5\xe4\xed\xa4\x41\xf7\xb6\x35\x77\x97\xad\xb9\x37\x43\xbe\x6e\x1b\x71\xb7\x6b\xc4\xdd\x46\x72\x46\xee\x62\xf0\xcf\xb4\xd5\xa4\x0f\x03\x32\x04\x38\x9f\x6b\xdd\xb6\x2b\xf4\x28\x67\x54\xb9\xae\x66\x73\x8a\x6f\x0f\x56\xc7\xe5\x78\x2e\x1c\x2e\x98\x07\x94\x53\x35\x23\x3f\x9c\x1e\xa3\xfe\x5b\x53\xc3\x85\xf4\x8f\x0e\x9c\x92\x3a\x80\x20\x2a\x66\xed\xd5\xd6\x66\x35\xd6\x8d\x2b\xac\xdb\x62\xd7\xb5\xb2\xb1\x66\x3a\x31\x59\x5b\x96\xb8\xc4\x51\x20\x46\x44\x68\xe0\x0f\x41\x73\xa6\x0b\x9a\x58\xe9\xe7\xee\x80\x40\x6d\x54\x3f\x31\xb0\x96\x8b\x0b\x82\x96\xa2\xc2\x77\xf6\xf7\xef\xcd\x1f\xc8\x7e\x4b\xee\xbb\x62\x22\xef\x95\xc9\x68\x29\x92\xc9\x13\x59\xf1\x25\xc4\x0b\x3e\x72\x4a\xae\x99\x12\x2c\xab\x7a\x86\xfa\x1a\x13\xd6\xa4\xf6\xbd\x65\xe9\x7c\xbb\xc2\xf9\x16\x45\xef\xcd\x5b\x00\xb5\x2d\x97\x6f\x53\x84\xbc\xa4\x2f\xca\x08\xcf\x26\x3b\xa5\x99\x6b\x97\xd5\x70\xf0\xd6\x95\xa1\xad\x9a\xfa\xd4\x51\x20\x10\xc2\x76\x23\xde\xcd\x35\xea\xef\xce\x4d\xe4\x5b\x52\x87\x82\x3c\x1f\xc1\x7e\xa8\xab\xc8\x2b\x2c\x8b\x30\x18\xbb\x7a\xc1\x0d\x53\xc7\x0c\x7e\x1a\x6e\xde\xb5\xf8\x77\xc6\xb9\xa6\x47\xca\x4e\xdc\x70\x9a\x5d\x16\x4d\xdb\xf3\xd6\xd6\xfd\x87\xb7\x97\x87\xf5\x41\xad\xf6\x7d\x03\x49\xb5\x96\xa8\xf6\xfb\x28\x35\xfc\x86\x0d\x27\x52\x5e\x93\xbd\x28\xe5\x66\x52\x0e\x07\x89\xcc\xa3\xfc\xae\xbe\xe6\x63\x7d\xe0\xf8\xb3\x6f\xe7\xbd\x4f\xb8\x00\x30\xb6\x45\x10\x3b\xff\x90\x24\xcc\x02\xd6\xd0\xe5\x26\xb9\x63\x70\x71\x9a\x20\x64\x30\x15\x62\x1d\xf6\xc1\xe2\x62\x34\xef\x16\x7f\xcf\x82\xf8\x6a\xda\x18\x73\xe8\x56\xaa\xa1\x39\xbf\x16\x92\x4c\xaa\xb6\xff\x1d\xd0\xe1\x6f\xd5\x68\x31\x76\x08\x1f\xd5\x60\x4d\x2b\x3b\x23\x04\xca\x76\xa1\xbd\x82\xfb\xe9\x6e\xec\x74\xae\x97\xa3\xd0\xac\x98\x84\xc2\x31\x11\xc7\xce\x87\x2c\xae\x12\x8b\x0a\x36\xe6\x0b\xc5\x9c\xc0\x8c\xa6\x7a\x54\xf9\x4f\x7c\x16\xd9\x28\xa3\x63\x80\x67\x9f\xab\xba\x00\xe9\x08\x2d\x88\xad\xed\x10\xdd\xec\x4b\xeb\x3c\xf4\x30\x20\x1f\x6a\x4c\xe8\xf6\x81\x34\x97\x9e\x0f\xf1\xff\x43\x3b\x6f\xdf\x4b\xbd\x96\xeb\x0d\x56\x7e\x28\x2e\xd4\x96\x77\x30\x72\x6f\x6d\xf6\x98\xc0\x28\x3a\xf7\xaa\x9e\xcc\x90\x1d\x83\x02\x1f\x7e\x4f\x49\xce\x3f\xda\xa7\xc4\xbf\x8a\xb3\xca\x5d\x2f\xe4\xe5\x5f\xef\x5b\x5b\xa6\x32\x7c\x7a\x76\x15\xe3\x3b\x23\x58\x60\x01\x5f\x9c\x61\x5a\x38\xbe\x40\x1c\x26\x70\x08\xbf\x6d\xf8\xbb\x39\x2e\x47\x08\xd3\x75\xb4\xd5\x21\x5c\xe7\x86\xb3\x0b\xed\xcf\xdf\x36\xe1\x3b\x7b\x4b\x17\x21\xbc\xc5\x43\x76\xf3\xcf\x66\xd2\x26\x7f\x50\x4d\x79\xc2\x0e\x93\x44\x96\xa2\x55\xfa\xe0\x31\xb3\xaf\x40\x0d\x4b\x2f\x6b\x63\xa2\xbf\x39\x85\x6f\xb1\x62\x9a\x66\x9c\x62\x4d\x7d\xfd\x4e\x2c\xa6\xaa\xc6\x01\x7f\xf5\xdc\x0c\x1d\xcb\x60\xbb\xdd\x4f\x93\x90\xba\xf0\xfc\x76\x49\x96\x8b\x6f\xb3\x78\xc2\xcd\x51\xd0\xb9\xaa\x17\xd2\x9d\x57\xcb\x35\x37\x54\x5f\x57\x48\x03\x0c\xca\x4d\xc2\x66\x8a\x3e\x77\x2f\xda\xa7\xf8\xd4\x46\xe8\x03\x0d\xa8\x6b\xac\xdc\xb3\x2f\x7f\xa8\x5f\xff\xd7\xf1\x59\xbb\x94\xdf\x00\xb2\x8e\x75\x0c\x13\x37\x74\xd0\xb5\xe3\xf2\xf1\xb8\x0c\xcd\x3e\xb9\x47\x14\x75\xf8\xb1\xae\x77\x48\xc6\x28\xfa\x34\xc8\x5e\x94\x91\xbd\x3f\xb0\x32\xbd\x0a\xf5\xa2\xa8\x77\xad\x3e\x72\x46\x85\x8e\x4a\x0d\x19\x0c\xed\xd3\x19\xc3\x7c\xf0\x20\x74\xab\xed\xcc\xff\x3d\xef\xb3\xac\xdf\x81\xad\xff\x49\x69\xb4\xfd\x1c\x1f\xee\x05\xe6\x0a\x8f\x57\x6c\xcc\xb5\x51\x33\xdf\x84\x64\x14\x4d\xc2\x79\x65\xc2\x2d\xd7\x6c\x46\xfe\xf6\xe3\xc9\xdf\xff\xf1\xe6\xdd\xd1\xe1\x9b\x7f\xbc\x3d\x3c\xfa\xdb\xe9\xd9\xc9\x87\x0f\x97\x7f\xbf\xbc\x3a\x79\xfb\xe1\xc3\x51\xa9\x14\x13\xc6\x95\x5d\x5e\x32\xf3\xe1\x83\xe3\x54\xfd\xe1\xc3\x55\x52\xf0\xe2\xc3\x87\x73\xef\xc4\x40\x78\xe1\xff\x3a\x3e\x03\xf9\x89\xd5\x3f\x21\xe5\x06\xce\x56\x24\x3a\xcc\x7b\x42\x75\x95\x5e\x57\xab\xab\x68\x00\x49\xd5\xf4\xb8\xd3\x13\xaa\x98\x3b\x9a\xcf\xbc\x27\xab\xd5\x66\xb7\x03\x56\x7d\x01\xbc\x87\x34\x78\xc9\xc8\x90\x99\x1b\xe6\xca\xd5\xe6\x8f\xb9\x38\x8b\xf7\x67\x6c\x8f\x83\xc9\xfa\xf6\x28\x5a\x82\x3d\x8e\xca\x99\x24\x53\xce\x6e\x10\x1b\x01\xdb\xbc\x54\x00\xf8\x50\xbe\x8a\x25\x8c\xf3\xe1\x2e\xa7\x24\x15\x32\x0d\x60\xff\x73\x6e\xdd\x05\x97\x6e\xad\x5c\x02\x91\x4b\x58\x4a\xce\x4f\x8f\xc9\xcb\x01\x2a\x39\xa7\xc7\x08\xa4\xb4\x8c\xac\x24\x71\x68\x3f\xf6\x40\xc5\xd3\x77\x49\xba\x78\xc5\x00\x4d\x84\x51\x03\x0e\x28\x87\xa9\xcc\xe9\x43\xdb\x7a\xdc\x53\x78\x80\x4d\x97\x7e\x2b\x69\x86\x3a\xc0\xb9\x4c\x17\x25\xd3\xce\x37\xfe\xa3\x6f\x07\xdf\x84\x79\x7c\x3b\xf8\x06\xda\x39\x79\xb2\x7d\x3b\xd0\xd3\x64\xf0\x8d\x2b\x84\x25\xee\xa6\xa5\xd9\xa1\x0b\x55\x2d\x4e\x9f\xc5\xdf\xc0\xb3\x29\xe8\xbb\x9f\xa4\x4e\xa1\xc3\xbe\x58\x1d\x77\xc3\x42\x2d\x10\x6a\x6c\x13\xc5\xa8\x6b\xd7\x9e\xb2\x8c\x99\xa8\xbf\xfd\xda\xdb\x31\xdd\xde\x9f\xca\x87\xaa\x6a\xdd\xbb\x62\xe7\x52\xd0\x97\xfe\xf0\x4d\xbe\x62\x83\xe1\xcb\xaa\x01\x6b\x83\x0d\xd0\xb2\x22\xff\x41\x61\x1b\x23\x33\x86\xeb\xd3\x66\xa7\x2c\x2d\x88\xda\xd5\xf1\xe8\x4d\x08\xb1\x8e\xaa\xe3\x2b\x0f\xc5\x65\x39\xe2\x2a\xcc\x1f\x2c\x0d\x6c\x5e\x83\xb1\x49\xfc\x06\xca\x94\x66\xc4\x9e\x5a\x06\x3d\x19\x71\x25\xa0\x51\xd0\x66\xe7\x9b\x6b\x36\xeb\x21\x70\x03\x2a\x21\xdf\x46\x98\x82\xa1\xf4\x55\x16\x76\x40\xa9\xc8\x37\xfe\xbf\xbe\x7d\xa8\xb5\xd6\xc2\x8f\xda\xc6\x8b\x8a\x2f\xd5\x3a\x74\x75\x82\xf5\x0f\x75\x24\x07\xa4\xac\x2b\x8d\x30\x12\xc9\x35\x20\x27\x50\xdf\x88\x1a\xa9\xc3\x55\xcb\xb2\xda\xcd\xda\xf7\x48\xaa\xa1\x00\x80\xff\x25\xaa\x8b\x38\x93\x97\xae\xa4\x0e\x90\x59\x46\x4c\x55\x9f\x80\x80\x39\x93\x27\x1f\x59\x52\x3e\x14\x2d\x05\xaf\x56\xbe\xbf\x6b\xd6\xbe\x6b\xc5\x8f\x2c\xa0\xd6\x20\x6d\xac\x16\x1e\xb2\xe2\xab\xdd\x19\xa5\x66\xdd\x4d\xdb\x6b\x36\xd3\x01\x0c\xec\x1a\x47\x77\xd5\xab\x81\x7f\xfd\x41\x76\xf2\x91\x6b\xa3\xff\x8f\x6f\x99\x91\x0f\xab\x66\x25\x14\x73\xa4\xaa\xd1\xfd\x92\x08\xe8\xa5\x81\x8f\xf9\xd4\x04\xf7\x2f\xd0\x9a\xea\xef\x3c\x25\x22\xa8\x37\x6a\xdf\x69\x57\xbb\xec\x1e\x29\xa0\x44\x29\xc6\x0c\xab\xf2\x52\xf0\xc7\xc8\x9f\x48\x43\xa0\xcb\x89\x55\xf2\xea\xc7\x8c\xfb\xc8\xdd\xc4\x01\x3d\x82\x4f\x69\xc6\xd0\xae\xbf\xe1\x59\x9a\x50\x85\x21\x72\x07\x1c\xa3\x1d\x94\xa3\x43\x4c\xb0\x67\x9c\x93\x64\xd5\x2a\x6b\x17\x8b\xa3\xca\xf0\xa4\xcc\xa8\x22\x76\x3f\x8e\xa5\x7a\x20\xbe\x0c\x5e\xed\x5a\xb7\x04\x16\x6d\xd1\xd1\xb0\x2e\xdf\xe7\x47\x9c\x07\xe4\x73\xda\x8b\x35\x99\xa0\xb6\xa3\xbe\x51\xf6\xea\x50\x90\x72\xe4\x65\x53\x10\x14\x31\xa4\x9b\xa9\x39\xc7\xf9\x18\xfc\xdf\xfb\xd1\xe1\x11\x76\xe6\x80\x7c\x1f\xca\x7c\x7b\xa4\xf2\x19\x43\x31\xa1\x7b\xa6\xdb\x36\x6e\xb9\xaa\x4d\x3d\x92\x0a\xfa\xf0\xec\xa5\x12\x7e\xc3\xa6\x3c\x31\xfb\x03\xf2\xff\x5a\x4d\x11\x9c\xc8\x5e\x9d\x74\xdb\x2c\x14\x50\x56\xc0\x72\x2f\xc8\x1e\xfc\x2c\x56\x25\xf7\x7d\xa0\xc8\x75\x1e\x78\x62\xd9\x28\x2d\x42\xd4\x4b\xc2\xd3\x35\x31\x8a\x9a\xe2\x1c\x6b\x84\x93\x5f\x06\x09\x19\x64\x22\xd7\x6e\x97\xd6\x3c\xb7\x21\xce\xe2\x45\x68\x60\x9c\x7f\x81\x8f\x9e\x28\x36\x86\xfd\x87\xbb\xe7\x13\xee\x3e\x23\x0b\x99\xc9\xf1\xec\xb2\x50\x8c\xa6\x47\x52\x68\xa3\x40\x34\xb4\xc1\xf1\xba\x6d\xcc\xa8\xf5\xc3\x44\xde\x10\xea\xea\x90\xe5\x08\x41\xd5\x64\x39\x9e\x20\xd8\x2d\xfc\xd0\xb7\x49\xf3\x53\x74\x46\xa7\x1e\x90\xcb\x00\x66\x0b\x0c\x1e\xb0\x71\x61\x14\x70\x78\xdc\xd0\x99\xdb\x4c\x74\x08\xdd\x72\xab\x84\x20\x3f\x19\x0c\xfd\xdc\xfa\xfe\x20\x95\x0f\xcf\x8e\x1f\x8a\x20\xbc\x46\x85\xf6\x96\x57\x89\x7a\xe7\x43\x0b\xb5\x40\xdf\xa0\x91\x02\xdd\x68\x2e\x9d\xa6\x8a\x98\xa3\x9e\x32\x9f\x50\x37\x6d\x03\xb2\x93\xd3\x8f\x97\xd7\xec\xa6\xc1\x2f\xfd\x8b\xfe\xc8\x1e\x9e\xcb\xd5\x07\x7b\xf4\xbd\xd0\xd4\x70\x3d\x02\xa8\xf1\x4f\xa8\x8f\x43\xca\x7d\x33\x44\x64\xbc\xea\x95\x2b\xf1\x68\xa1\x5b\xb2\xc7\xd5\xab\x31\x8b\xcb\xbf\xab\xec\x20\x3c\x00\xb1\x04\x20\x80\x29\xdb\x1d\x94\xb8\x06\x03\x46\x56\x71\x68\x8c\x54\x84\x5e\xc3\x7e\xd7\x9a\x09\xe3\x6a\x0e\x42\x75\x6e\xef\x37\x17\x8c\x8d\x53\xd9\xda\xe6\x85\x01\x79\x4e\x3e\x5a\xcd\x43\x37\xcb\x34\xc2\xab\xde\x1f\x64\x6e\x50\x0c\x8f\xf9\x04\xca\xb9\x65\xa8\xe1\x74\x83\xd9\x1b\x7f\xd2\x54\xce\x55\x57\xbb\x0e\x43\xa4\x5d\x97\x21\xb2\x24\xcf\xf8\xd6\xd7\x9f\x03\xfb\x8e\xab\xd5\x9c\x53\x48\xf7\x50\x81\x47\x07\x36\x15\xd5\xc1\xee\x1a\xbf\x66\x41\x9b\xb3\x46\x91\xbd\x09\x7f\xd7\x16\xca\xbf\x45\x97\x22\xd2\x41\xa7\x22\x02\xb2\xec\xba\x81\x04\x8c\x7f\xef\x89\xd5\x78\x90\xf6\x3d\x8b\x48\x73\x83\xba\xba\x6a\x0c\x75\x5d\x99\xd6\xc8\x59\x35\xd3\xba\x12\x76\x95\x61\xdd\xea\xd9\x1d\x34\xf2\x20\x2d\x6d\xdc\xea\xaa\x11\x42\x3e\xc0\xda\xa5\x10\x60\x92\x23\xbf\x3b\x96\xda\xbc\xa7\xa2\x47\xce\xa4\xb1\xff\x44\xe6\xef\xb1\x64\xfa\x4c\x1a\xf8\x64\x23\x48\x89\xaf\xd0\x21\x21\x9d\x71\x86\xb8\x5e\x20\x37\x5d\x88\xd6\x9e\x78\x9e\x60\x4b\x0c\x8b\x53\x41\xa4\xf2\x14\x0b\xd6\x85\x76\x43\xc4\x61\x05\x07\x8e\x74\xab\x71\x62\xc7\x89\xe9\x7c\xc7\x70\x6e\x28\xc8\xfe\xc2\x6f\x00\x24\xb3\xc8\x20\x41\x3f\x2d\x15\x62\x95\x5a\x5d\xd3\xb0\x31\x4f\x48\xce\xd4\x18\x1a\x1f\x36\xc9\xab\x8f\xaf\xf6\xe7\x0a\x5e\x2d\x4f\x97\x78\x32\x2d\x78\x09\x8e\x6c\x50\xb1\x3a\x54\x01\x70\x3c\x3c\xd6\x72\x0a\x96\xd4\xff\x04\x1f\xf4\xff\x92\x82\x72\x05\xd8\xa6\x2e\x76\x1c\x7f\xe7\xa2\x2f\xf1\x30\x76\x84\x05\xdf\x12\x15\x84\x61\x21\x90\x1d\x7d\x5e\xf1\xe8\x91\x9b\x89\xd4\x78\x18\x06\xf7\xc7\xce\x35\x9b\xed\xf4\x16\x58\x6f\xe7\x54\xec\x54\x81\xe1\x1a\xb3\x85\x43\x18\x32\x08\x77\xe0\xbb\x9d\xc7\xd3\x55\x5a\x1d\xb6\x5d\x80\xcc\xcf\x4f\xa8\x21\x5f\x39\x9b\xa7\x7d\x2f\xf7\xb7\x38\x50\x64\x9f\x63\x4c\x70\xac\x58\xd4\xc7\x1d\x14\xf5\x1c\xe3\x9c\xa5\x60\x53\x66\x17\x2b\xe5\xda\x01\xb9\xf9\x14\x83\x7f\x2e\x98\x44\xff\xff\x63\x79\x26\x8d\xb7\xda\xff\xe9\xdd\x5e\xc8\x7f\x1f\x79\x5e\xe6\x88\x98\x64\xac\xa5\x90\xf2\x91\x07\x7c\xf5\x99\x0d\x75\x7b\xa1\x6e\xb6\x3a\x3e\x36\x54\x8d\x21\xc3\xd1\xd9\x0b\x9e\xcd\xc6\x99\x1c\xd2\x8c\xe4\x5c\xd8\xc7\x0c\xc8\x6b\xa9\x08\xfb\x48\xf3\x22\x63\x58\x4e\x46\xbe\xec\xff\x5b\x0a\x46\x5c\x34\xbc\x47\x3c\x2d\x5c\x92\x84\x91\xe4\x25\x72\x6d\x05\xfc\x1e\x52\x1d\x6a\x06\x58\x70\x5b\x68\xf2\xf2\xe0\xe5\xc1\x8b\x57\xe4\x77\x62\x87\x7e\xe9\xfe\xfd\xc2\xfd\xfb\x25\xf9\x9d\xfc\x4e\x08\x39\x27\xa4\xf6\x2f\x81\x7f\xfb\x84\x8f\xe2\x39\xbc\xb4\xd3\x4c\x64\xee\x5e\x18\x3c\xb9\xa1\xea\x33\xf4\x8f\x31\xd2\x0d\x0d\x45\x3f\x89\xcc\x19\xcc\xe1\xe5\xff\xf1\xf7\x40\xc0\xd5\x60\x8b\x1f\x98\xd4\x1e\x4c\x69\x9f\xdc\x80\x6b\x2a\xa7\xd7\x68\x96\x1d\x26\xa6\xa4\x99\x7d\xf8\xde\x17\xfd\x17\xfb\x44\x8a\xfa\xed\x53\x2e\xa1\x35\xba\x9b\xe1\xde\xcb\xfd\xc1\xc2\x94\xbf\x58\x32\xe5\xb9\x6e\x37\xae\xe6\xce\x0e\x7a\x3b\xd7\x78\x86\x39\x14\xb3\x1b\x3a\x0b\x6c\xe3\xcd\xd2\x31\x9f\x06\x6c\xf4\x08\x87\x02\x62\x76\xc0\x05\xdc\x23\x03\xe1\xa0\x33\xc2\xcd\x80\x9c\x9a\xdd\x5d\xdf\x5b\xc9\x6a\xcc\x1e\xc4\xfd\x38\x86\x0b\x04\xc2\xc3\xa2\xbf\x98\xcb\xe9\x6d\xd1\x58\xbf\x13\xe7\xe8\x83\x50\xd8\xdd\xd3\x2b\xff\x46\x07\x4e\xf5\x30\x96\xdf\xc1\x56\xf4\xcb\x11\xd6\xc9\x62\xa7\xa3\x01\xb4\xb1\x72\xb4\x77\x09\x23\xa8\x3a\xbb\xdd\xc3\x75\xb0\x9e\x38\xe4\xdf\x27\x34\x8b\x83\x75\x89\x04\x80\x36\xc5\x7c\xa3\xa4\x38\xbd\x28\xf8\xa5\xc8\xcf\xd5\x9d\x98\x56\x04\xf1\x57\x1c\xe8\x5b\x4c\x67\xdf\x19\x96\xc9\x35\x33\xfe\xdc\x51\x90\x11\x51\x94\x86\x0c\x69\x46\x85\xd5\x60\x16\xfc\x10\x46\xe2\x60\xf8\x4b\x60\x98\x25\xfc\xf2\xa9\xe3\x23\x0b\xbb\xa3\xbd\xd0\xff\x79\x7e\xc8\x28\x22\xeb\x1c\x85\x29\xa3\x99\x4f\xa5\x00\x7c\xf4\x00\x58\x25\x76\x77\xab\x7d\x05\x6b\x83\xc2\xaf\x72\xb0\x5a\xb9\x50\x93\xfb\x64\xcf\xe7\x3e\x12\xc3\xb2\x0c\xb9\xa7\xea\x4b\x66\x37\x59\xdc\xe8\x8c\xc3\x08\x75\x19\xb0\xf4\x87\xf5\xee\x68\x18\xd4\xb7\x92\x5d\xcc\x42\xb5\x7c\x8f\x10\x68\x0d\x38\xe6\x53\x2b\x94\x56\x12\x1a\x28\x18\x27\x2c\x2b\x88\x62\x69\x99\xe0\xe0\x84\xe8\x6b\x76\x63\x75\xaa\xea\x4d\x5d\x4b\x21\xcf\xb2\x3b\x35\xa2\xee\x20\x46\xb4\xa8\x8b\x44\x3e\x02\x86\xf4\x1d\x37\xd9\x94\xa9\x19\x29\xa4\xd6\xdc\xae\x03\xec\x25\xc8\x86\x03\xbd\x2b\x20\xeb\x40\x26\x16\x4c\xcb\x8b\xe1\x1d\x27\x76\x77\xac\xa0\xd6\xb2\xb6\x3d\x3e\xcd\x51\xf7\xa5\x3d\x66\xee\x3e\xea\xce\xe1\x7f\x8b\x47\xde\xe9\x88\x2c\xe1\xc1\x30\x97\x1a\xf3\x3c\xe4\x14\xfc\x02\x0e\xab\x2f\xf7\xa3\xc3\xf0\xcb\x83\x2f\x0e\x5e\xee\xd9\xb9\x7e\xb1\x6f\x67\x5d\x3b\xe6\x5e\x86\x63\x2e\xfc\xd2\xcd\x88\xe9\xda\x41\x67\x0d\x30\x6c\xa0\x2b\x55\xea\x22\x3c\x3e\x8b\xce\xce\x48\x1b\x17\x6f\xe3\xb9\x97\x2f\x3d\xe0\xbb\x8a\x59\x6f\x24\xec\x1c\x38\x6f\xb9\x21\x9f\xe5\x52\xb1\xcf\xa2\xfb\x6f\x3d\xa0\x9a\x9f\x3b\x6d\xfb\xa9\x65\x5c\x1b\x68\xaa\x76\xcd\x66\x0f\xd6\x74\xdb\xb8\xd7\xdb\x3a\xd7\x17\xdf\x02\x09\x92\xd3\xe2\x01\xe3\xb8\xbe\xed\x6d\x52\x78\xdf\x38\xc7\x6c\x68\x01\x0f\x8e\x47\xd4\x8a\x5c\x5f\x53\xac\x95\x0a\xf9\xb4\x43\x96\x49\xc4\x39\x75\xa9\x03\x0f\x48\xd5\x0f\xb0\xf0\xda\x48\x45\xc7\xec\xc0\x3d\xf6\xa9\xb4\x83\x70\x5d\xe0\x6b\x5e\x26\x2c\x67\x74\x20\xa9\x3e\xa5\xd9\xc7\x1f\x40\x0a\xd0\x04\xb2\x01\x81\x90\x35\x38\x87\x28\xcf\xf0\x89\x84\xb2\x1a\x54\xbf\xb7\x71\x9c\xd2\x1b\x7d\x92\x51\x6d\x78\xf2\x7d\x26\x93\xeb\x4b\x23\x55\x07\xda\xc5\xe1\xcf\x97\x0b\xa3\xd6\xd6\x54\x90\xc3\x9f\x2f\xc9\x31\xd7\xd7\x15\xba\x3e\xa2\x6a\xd6\x13\xf0\x68\x00\xc6\x71\xb5\x18\x24\xa7\xd6\xfe\x63\xde\xc6\x13\x01\xd7\xb7\xbb\xbd\xf2\x27\x7a\xa3\x19\x4e\x7f\x68\xa7\x6f\xbf\x66\xcd\x45\xf0\xda\x80\x14\xf0\x75\x4e\x8f\xd7\x10\xf8\x1a\xe9\xa6\x6d\x47\xc8\x02\x33\xbd\xe6\x19\x73\x1d\xc0\x00\x12\xa8\x8e\xf1\x0c\x5c\x33\x93\x25\xb9\xa1\xe8\xb3\x02\x99\x3a\x20\x57\xbc\x78\x45\x4e\x22\xbc\x56\x2c\x48\xa8\x0f\x65\xf5\x8d\x80\x1f\xe2\xb2\x04\x80\xcb\xd0\x75\x65\x45\xb0\xcb\x8a\x21\x27\xa8\x4c\xe9\x57\x64\x87\x7d\x34\x5f\xed\xf4\xc8\xce\xc7\x91\xb6\xff\x08\x33\x02\x74\x65\xd7\xa3\xc1\x2a\x75\x62\xc4\x54\x65\xc0\xe0\x0f\x16\x4b\x07\xbb\x67\x52\x72\xf5\xee\xf8\xdd\x2b\x50\xe0\x53\x49\x6e\x98\xef\x62\xe6\x0b\x61\x9d\x34\x8c\xc8\x00\x15\x1d\x89\xcc\x0b\x25\x73\x1e\xa5\xab\xc2\x26\x6b\xc2\xf3\xa4\x0b\x7f\x29\x24\xa5\xc1\xf2\x77\xc2\x41\x90\xed\xeb\x87\x9c\x03\x86\xbf\x8d\x7f\x4e\x47\x44\xa2\x53\xaa\x9e\x23\xcf\x75\xb8\xc9\x72\x8c\x1b\x05\xdb\x71\x55\x3c\x62\xd5\x6f\xf7\xd5\x41\xca\xa6\x07\x3a\xa5\x2f\x7b\xf0\x18\x64\x00\x07\x7e\x1f\xe6\x44\x35\xd9\x79\xb9\x33\x20\x97\xbe\xaf\x79\x2f\x9e\x63\x75\x9f\xb5\x06\xfc\x80\xe0\x56\x7d\xb1\x43\xf6\x30\x49\x1d\x74\x8a\x8c\xf9\x92\xe5\x80\xb1\x01\x3e\xfc\xfd\x46\x2a\x24\xe9\xc0\x7d\x41\x5a\xbb\x30\x88\x6b\x19\xf6\x4e\x64\x8d\x43\x7b\x73\x55\x55\x6e\x0d\x76\x0c\x74\xdf\x32\x12\x2a\x08\x98\xeb\x07\x8b\xa2\xe2\xc2\x3d\xb1\x22\x24\x17\x4e\x3b\x79\x6b\x17\x1f\xbb\xc0\xc3\x00\x77\x32\xcb\x0e\x54\x1f\xed\x6c\xcc\x99\x44\x3a\xa8\xe6\x26\xe1\x68\xe9\x66\x3d\xde\x0b\xfe\x5b\xc9\xc8\xe9\x71\xe8\xd9\xc8\x94\xe6\xda\x58\xc9\x95\xd6\x74\x04\x8e\x8a\xc3\xde\x61\x4e\xff\x2d\x05\x39\xf9\xfe\xd2\x4d\x65\x7f\x03\x09\xdc\x50\x00\xd2\x7f\x97\x8a\x59\xd5\xa8\xb5\x1e\x76\xe8\x47\x9a\xd7\xbd\xec\xe7\xe4\x98\x1a\x8a\x2a\x18\x4a\x33\x59\x55\x98\xc2\x4e\x18\x42\xe6\x8f\x2f\x1f\x6e\xa8\x45\x93\xf5\xab\x41\x96\x83\xce\x9a\x63\x4a\xd9\x9f\xbf\xbf\x38\x5d\x83\x12\x95\xc0\x29\x3c\x7e\x2b\xd3\x8e\x34\x29\x80\xf7\x38\xc2\x51\x49\x6e\x87\x25\x67\x52\xb0\x1e\x08\x3b\x62\xa5\x9d\xfb\xcf\x9f\x15\x37\x0f\xad\x98\xac\xae\xd6\xc7\xbf\x5f\xb1\x4e\xde\xda\x1e\xfe\x67\x51\x65\x3c\xc0\x38\x80\x54\x71\x8a\xc0\x30\x93\x43\xe2\xa4\xc1\x3a\xdf\xf8\xfd\xc5\x69\x67\x2f\xfc\xfe\xe2\x74\x73\x5f\xb6\x43\xe3\x60\xde\x36\xa8\xf4\xb7\x0a\x7b\x75\x5e\xe9\x5f\x5d\xe3\x1f\x74\xa5\xeb\xaf\x8b\xd2\xd7\x5c\x34\xce\x0a\xab\x8b\x8e\x13\x5f\x1f\xe9\x22\x35\x50\x92\x9d\xbe\x22\x79\x99\x19\x28\x7f\x03\xc6\xb2\x9c\xa6\xed\xe9\xed\x59\x8c\x38\x28\x08\x42\x8e\x19\x86\x17\xd2\x57\x3e\x21\x21\xfc\x62\xf9\x0f\xde\x52\x41\xc7\xf6\x76\x38\x0f\x49\x8e\x7f\x46\x1c\xbd\x87\x0e\x74\x11\xbe\xa2\x53\xca\x33\x3a\xe4\x19\x37\xd0\xfe\x7f\x7f\xe0\x15\x31\x8d\xb5\xb0\x76\xca\x6b\x13\x6a\x9d\xaa\xb0\x71\x7d\x10\x28\x98\x64\xcf\x8e\x7f\x70\x63\x05\xf7\xfe\xa0\xd2\x5e\x01\x8d\x0c\x12\xe5\x51\xc5\xad\xa9\xb6\x1e\xe5\x61\x4e\xb3\x6d\xc7\xae\x4d\xd5\x4a\x58\xe6\xd7\x0d\x21\xa0\x17\xd5\x1e\x3b\xd2\x52\xb5\x07\xbe\x70\xa0\x13\xcf\x5c\xf3\xc1\x0e\x52\x2d\x74\x1f\xd8\x32\x0d\x7f\xdf\x56\xfb\xd9\xee\x97\xfb\xaf\x6a\x81\x3b\xa1\x52\x0c\x22\x84\x43\xcf\xa5\x49\xe3\x0e\xba\x74\xa2\xda\x83\x0b\x81\x76\x65\xf7\x4d\x93\x22\x0a\xbc\x5a\x4b\xd7\xc0\xa9\x9d\x10\x02\x61\x57\x1a\x6f\x9c\x96\xef\x93\xb0\x62\x32\x6a\x5f\x03\x79\xc4\x8a\xc9\xeb\xcb\x7a\x28\xc5\x7e\x46\x5e\x5f\x2e\x91\x7b\x98\x2b\x63\xdf\x5b\x63\x80\x65\x57\x93\x8c\x8f\x98\xe1\x8d\x88\xb0\x66\xc9\x97\x4b\xc1\x8d\x54\x7a\x1d\x35\x1f\xee\xd1\xdd\xe8\x5d\x17\x9e\x10\xe4\xad\x1b\x17\x13\x3e\x13\x99\x65\x2c\x31\xae\xe7\x21\x2c\xab\x7f\xf0\x32\x47\x88\x4b\x05\xd0\xbe\xc7\xaf\x73\x7a\x1c\x20\xab\x1d\x5c\x9c\x1c\x1e\xbf\x3d\x19\xe4\xe9\x9f\x26\xf2\xa6\x6f\x64\xbf\xd4\xac\xcf\x4d\x3b\x5d\x69\x8d\x45\x21\x1d\x38\xa0\xcd\xa4\x9b\x05\xac\x10\x89\xde\xeb\x0a\x33\xcc\x07\x7e\x95\x94\x66\x11\x35\x6c\x54\x66\x19\xae\xa9\x51\x8c\xf5\x62\x77\xe2\x03\x31\xd5\xaa\x6b\xb3\xf4\xd7\xdd\xe5\x7d\x7d\xbb\x3f\x9a\x37\x65\x33\xb4\x3f\xe5\x9b\xaa\xc6\xe4\x0e\xda\x5f\x86\x91\x7d\x42\x9f\x65\x7c\xbb\x12\xd7\x6c\x46\x20\xbb\x7f\x24\x15\x20\x6d\xd6\xb9\x90\x99\x04\xc8\x75\x00\x2d\x15\x9d\xae\xb0\x21\xa4\x6e\xa3\x45\xc0\x8b\x5c\xb0\xd1\xe3\x10\xfa\x82\x8d\xb0\x80\xc2\xe7\x38\x3b\xeb\x82\x96\x66\x82\x99\x90\x88\x7c\x84\xe4\x5c\x4a\x79\x57\x91\xb1\x21\xa4\x6e\x95\x4b\xdf\x45\xbd\x57\x1b\xe0\x7d\xb2\xb0\x5e\xb1\x9b\xd0\x2d\x92\x79\x70\x5c\x41\x4e\xad\x6d\xc9\x6e\x0e\x6e\xa4\xba\xe6\x62\xdc\xbf\xe1\x66\xd2\x47\x4a\xe9\x03\xc0\x61\x3b\xf8\x13\xfc\xe3\xa2\xb5\x87\x69\xea\x32\xcb\x4a\xcd\x46\x65\x86\x39\x5f\x7a\x40\x68\xc1\x7f\x62\x4a\x43\x0a\xe3\x35\x17\x69\x8f\x94\x3c\xfd\xae\xe9\x8a\x91\x2e\x36\x48\xf3\x2e\x62\x77\x9e\x8b\xca\x8b\x1f\x45\x53\xa9\x11\x85\xd7\x92\xa8\xc6\xfa\x34\xcd\xb9\xd8\x14\xce\x6f\xaa\xda\x73\x91\x36\xa3\x60\x9d\x7a\x47\x30\x4e\x5d\xb7\xc7\xb1\x7d\xcc\x38\x64\xd1\x50\xef\xcb\xc0\x2e\x55\x2e\x9f\xa6\x9e\x4d\xb3\x92\x40\xc9\x67\xfa\xb7\xac\x8f\x4f\xe9\x17\x69\x45\xd7\x6d\x6a\xcc\x43\xae\xc7\x4c\x8d\xe9\xd6\xfd\xfd\x09\x12\x5e\x1e\x95\xc7\xc8\x56\xed\x5d\x03\xad\xdb\x6b\xba\x8f\xa0\x7f\x01\x0e\xbc\xf6\xc5\xc9\xa0\x5e\xa1\xec\xf1\xbe\x2d\xec\xcc\x17\x80\x87\x7d\x99\x51\x22\x85\x70\x98\x74\xef\x0a\x26\x2e\x0d\x4d\xae\x5b\xc6\x45\xb7\x3a\xd3\x1f\x4c\x67\xea\x36\x57\xc6\xa7\x41\xa7\x81\x47\xb1\x8a\xca\xa5\x94\x55\x59\xd2\xb8\xb1\x9f\xa0\xd4\x45\x84\xf5\xb7\xb4\x68\xef\x01\xf5\x23\xcd\x29\x4a\xe1\x63\xe7\xf4\x84\xaa\x9a\x42\x16\x65\x86\x90\x6b\x5c\x3b\x3a\x7e\x7a\xc5\xa6\xed\x06\x77\xfa\x72\x77\x39\x23\x95\x0c\xcd\x65\xca\xc8\x90\x9b\x4a\x3a\x6a\x66\xb0\x76\xd7\x01\xd1\x48\x41\x12\x07\x36\x07\x5a\x87\xd5\x30\xdc\x84\x22\x8d\x44\x10\x99\x18\x5f\xf3\x17\xca\x7c\x5f\xbc\x78\xf1\x02\x8b\x2e\xff\xfa\xd7\xbf\x12\xa9\xa0\xe3\x43\xc2\xf3\xc5\x1b\xe1\xae\x3f\xbf\x7c\x39\x20\x7f\x3f\x7c\xfb\x06\x72\xff\x0b\xa3\x11\x07\x1c\x47\xb6\x37\xd4\x7e\xac\x7b\xe4\xff\x5e\xbe\x3b\xf3\x6a\xa3\x9e\xfb\x16\x4c\xed\xf0\x7a\x75\xf4\xc5\x17\x7f\xf9\xea\xab\x01\x39\xe6\x0a\x6a\x9f\x38\x0b\xad\xb9\x82\xb7\x84\x2a\x86\x45\xa2\x00\x11\xe8\xf5\x2a\x1e\x40\xf4\x1d\x7e\x02\xf6\x1e\xc4\x7a\x46\xcb\x81\x19\x4f\x0c\x96\x59\xa1\x20\x0b\x5d\x85\x01\xb8\xd1\x41\xa1\xba\x64\x5d\x98\x5c\x8f\x64\xfc\x9a\x91\x91\x86\x96\x9c\x55\x31\xbd\x6b\x77\xe3\x4a\x4a\x70\xb0\x6a\xad\x34\x33\x4f\x3c\xf7\xb3\x95\x2f\x78\x1e\xc0\xb8\xd6\x70\x0d\x4a\x3d\xaf\xd9\xac\x8f\x1c\x56\x50\x1e\x0a\x46\x20\x39\xae\xd6\x63\x21\x78\x6d\xd2\x48\xae\x78\x8c\xc5\x42\xc9\x7f\xe1\xe2\x43\x0d\x69\x24\x89\xa1\x12\x15\x5b\xd4\x02\x58\x82\x88\x1a\x76\xf8\x3a\x58\xd7\xd4\xcb\x7f\xec\x90\x42\x17\xe1\x96\x33\xae\xed\x23\xae\xd9\x4c\xdf\xf5\xe4\xaa\x57\x8c\xe5\x4f\x8d\x9c\x52\x8a\x85\x5f\x3b\xe4\x7d\x27\x19\x5d\x93\x05\x87\x78\x53\x8d\x81\xe5\xff\xae\x10\xda\xdd\xeb\xa9\x14\x08\x51\x4b\x57\xd6\xcc\x94\x8e\x34\x90\x77\x6e\x9f\x0d\x0d\x00\xe0\x0d\x73\xaa\xae\x99\xef\xcc\x4b\xb3\x01\x39\xb7\x93\x0c\x90\x23\xa1\x31\x32\xd8\xad\x74\x06\x8f\x75\x4a\x1a\x3c\x64\x77\x30\xd8\xc5\x8d\x27\x15\xd1\x86\x2a\xb7\x8b\xec\xe7\xcf\x03\xc5\xea\x2d\x2d\x34\xa2\xaa\x58\xad\x14\x10\x87\x24\x20\xb5\x9a\x49\xd5\x17\x10\x69\xbd\x45\x9e\x22\x7d\x20\x4c\xe3\x01\x36\x11\x75\xea\xca\xc9\x06\x23\xfd\xf6\xde\x08\x2c\xa4\xbc\x85\x52\x81\x57\x2b\xd5\xc2\xc1\xec\x66\xec\x49\xe9\x12\xcb\xdb\x6a\x38\x49\x19\x69\x6b\x73\xcd\x3c\x9f\xaa\xca\x80\x57\x17\x8a\x03\x5e\xed\xd5\x07\xbc\xda\x04\x74\xf1\x5a\xd8\xa1\xe1\xa4\xc2\xc3\x68\x54\x91\x1e\x40\xcf\x8b\x70\xc4\x1b\x89\x1d\x42\x7c\xa7\x1b\x41\xe8\x50\xcb\xac\x34\xf8\xd3\xea\xcb\xf8\x98\x83\x41\x3d\xf8\x12\x9c\x6d\xe1\xb6\xe8\xd0\x83\xe3\x1e\xcf\x89\x36\xe7\x1f\x5e\xad\xc5\x44\x67\x6d\x90\x9f\xb7\x57\xa1\x35\x9d\xbd\xee\xd4\x4d\xae\x93\x2b\x86\xba\x99\x30\x97\x85\x10\xe9\x75\x56\x78\x5a\x91\x00\x4a\xa3\x57\xd1\xb0\xed\x78\xba\x16\x2f\x61\xa2\x79\x7b\xb7\xc0\xe5\x29\xd9\x0b\xed\x46\x43\x3a\xdb\xa9\x30\x4c\x8d\x68\xc2\xf6\x63\x77\x01\x2b\x26\x2c\x67\x8a\x66\x21\x43\xd9\xd7\x29\x4f\xa8\x48\x33\x57\xbc\xcf\x14\x6c\x5c\xf6\xd1\x30\x25\x68\x06\x8f\x48\x15\x9f\x32\xa5\xc9\xde\xf7\xcc\xda\x12\xd8\xa6\x74\xff\x09\xa6\x91\xe2\x8b\xac\xc3\x99\x01\x0f\xee\x26\x01\x14\x86\x5a\xd6\x29\xb1\x5a\x2a\x8f\x59\x64\x97\x55\xc7\x6e\xa0\x81\xdd\x10\x70\x62\x82\xd0\x85\x8e\x40\x18\x8d\xf4\x0d\xf0\x00\xb8\x38\x31\x38\x30\xd5\xae\x21\x1e\x20\xc2\x38\x79\xee\xa0\x42\xd6\x56\x0a\xf0\x49\x8a\x2e\xee\x2a\x99\x18\x39\x03\x52\x4e\x79\xea\xd5\x20\xc8\x66\xa8\x50\xb7\x0a\xaa\xa3\x4a\x7e\xaa\xb5\x74\xfd\x3e\xa3\x35\x42\x73\x14\x94\xa5\x3a\xa6\xb4\x8f\x14\xc7\xf1\x2e\x09\xc8\xac\x8d\x1a\x5a\x90\x4e\x0e\x44\x99\xb2\xf3\x72\x98\x71\x3d\xb9\xec\x34\xb4\x71\xb6\x64\x60\x4c\x0c\x5c\x48\x2e\xb9\x35\xdc\xa1\x99\xd0\xdc\xf5\x1f\x43\x35\x8b\x5b\x2d\x5b\xc2\x32\xf8\x5f\xc7\xbb\x43\x42\xa1\x38\x74\x35\xf3\x5f\x45\xf3\x70\xc8\x1d\xd8\x4e\x27\x65\xef\x45\x51\xfb\x3c\xa1\x59\xa6\xe7\x1b\x49\xfb\x83\x0c\x35\x53\x8f\xe6\x81\x5c\xc1\x2d\xc3\xf8\xd9\x43\xd6\x0c\x4a\xb1\x80\x6c\xba\xf4\xc5\x34\xc9\x25\x56\xfc\x0b\x22\x85\xbf\x09\xba\x02\xf9\x1f\x04\x0a\x21\xde\x18\x32\xdd\x1a\x31\x25\xb7\x31\x9d\xa7\x17\xd3\xe9\x34\x2a\x7c\x19\x5a\x34\x50\x18\xb8\x0f\x85\x4d\xbe\xd1\x2c\x0d\x85\xff\x95\xe1\x38\xb8\x2f\x7c\xbc\xb6\x08\x2e\xce\xef\xd0\x38\x58\xd0\x6e\xfc\xb6\x3f\xcd\x0d\x0a\xaa\x98\xb5\xbc\x41\x30\xf5\x9d\x6d\x9d\x44\x3b\xc9\x99\xc4\x61\x7b\x2f\x8a\xb3\xea\x4c\x87\xe3\x1c\x3f\xdc\xd5\x24\x95\x49\x69\x6d\xae\x8a\xec\x55\xc2\x44\x3b\xb4\xf7\xe7\x05\x3f\x9b\xca\x1b\x71\x43\x55\x7a\x78\xde\xa8\x6a\xb5\xae\x9c\x55\x63\xc5\xaa\xb7\x7f\x04\xb1\x9f\xd3\xa1\x6f\xf8\x1f\xc0\x9f\xb6\x81\xbb\xf9\x21\xee\xf3\xae\xb9\x36\xe0\xab\xc5\xe9\xc8\x36\xf4\xb7\x0d\xfd\x3d\x9b\xd0\x9f\x1d\xa9\xde\x29\xa5\x26\x5e\x9c\x43\xd6\x52\xfc\x59\xc4\x90\x22\x91\x8a\xa7\xe7\x7c\x3d\xec\x9c\xce\x8f\x9b\xb7\xe2\xba\xc8\x4e\xf0\x32\x17\xd4\xb1\xe7\x10\x6f\xda\x80\x78\x11\xd0\xb2\x85\x31\x88\xd7\x6d\xa5\x62\x88\xd4\x8a\x81\xe7\x28\x82\x5d\xc8\xf4\x15\x02\xa7\x42\xe7\x74\xec\xd9\xd1\x73\xb8\xcd\x3d\xe7\xbb\x10\x51\xaf\x70\x6c\xcd\xec\xd5\x9f\x4e\x62\x02\x2d\x19\x80\x74\xc4\x04\x04\x18\x01\xa8\x73\xde\x86\x1b\x48\x67\x1c\x61\xaf\xca\xd0\x69\x3b\xd2\xbc\x02\x8d\xa3\x7a\x46\xd0\xc9\x84\xe5\xd8\x3f\xfc\xb5\x27\x81\x95\x8d\xd6\x78\x30\x0c\x11\xd2\x98\xca\x35\x91\xa3\x5e\x0d\x42\x61\x67\xfa\x72\xa7\x5d\x8c\x81\x74\x17\x8e\x24\x7e\x1f\x9d\xb7\x8e\xed\x90\x79\x82\x9d\xd7\x42\x3a\x76\x0f\x81\xce\x93\x61\xeb\xe2\xb9\x2c\x0b\x38\x3f\x90\xc2\x1b\x43\x9c\x4d\x89\xd5\xf6\x42\xd4\xe0\x09\x28\x7f\xdb\x58\xed\x73\x8c\xd5\x46\x07\xa3\x17\x74\x8e\xb0\x71\xfc\x36\x0e\x09\xf8\x20\xee\x90\x79\xa3\xc6\xd9\x30\x3e\x82\xeb\xc3\xb7\x52\xd5\x53\x93\x76\x07\x83\xdd\x5d\x1f\xd4\x75\x7c\x5f\x9a\x51\xff\x6b\xc2\x44\x22\x53\x64\x16\x3b\xbe\xd2\x06\xd4\xbd\xca\xcb\x16\xcf\x25\xf7\xcf\x8a\xd3\x9b\x60\xec\x2e\x96\xba\xb5\x6c\xf1\x68\x7c\xaf\x1f\x41\x89\xa9\x54\x97\x80\xf9\xe7\x48\x14\x30\x9d\x9d\x0e\xe3\xbf\xd7\x24\xe3\x39\x77\xfd\xc3\xec\x46\x67\xda\x68\xb2\x87\x1f\x0e\x92\xa2\xec\xb9\x1b\x06\x39\xcb\xa5\x9a\xf5\xc2\x4d\xf6\xcb\xda\xaf\xdc\x1d\xfb\xd8\x87\xa2\x54\x8a\x09\x93\xcd\x9e\xb3\x06\xe4\x89\xb8\x21\x0a\x50\x58\xe3\x36\x48\x1e\xd5\x35\x57\x33\x17\x22\xbe\xe0\x2d\x8f\x30\xf6\x03\x58\xab\xee\x85\x90\x04\x7c\xca\xc4\x94\x4c\xa9\x7a\x20\x7a\xfa\xb2\xab\x43\x9d\x27\xe5\x53\xae\xdb\x36\xf7\x23\xb7\x3b\xa1\xa1\x75\x57\x69\x8a\xd2\x38\x89\xee\x77\xa0\x47\xda\x0e\x3b\x6f\x4e\x39\x7c\xb9\xd3\x7a\x4a\x05\x35\x86\x29\xf1\x8a\xfc\xf7\xde\x87\xcf\x7f\xef\xef\x7f\xb7\xb7\xf7\xcb\x8b\xfe\x7f\xfe\xfa\xf9\xde\x87\x01\xfc\xc7\x67\xfb\xdf\xed\xff\xee\xff\xf8\x7c\x7f\x7f\x6f\xef\x97\x1f\xdf\xfe\x70\x75\x7e\xf2\x2b\xdf\xff\xfd\x17\x51\xe6\xd7\xf8\xd7\xef\x7b\xbf\xb0\x93\x5f\x57\x1c\x64\x7f\xff\xbb\xff\x68\x3d\x75\x2a\x66\xef\x5a\x8a\x42\xbc\xfa\x1d\x1e\xc9\xf5\x11\x3b\x61\xbf\xb9\xd6\x0a\x5c\x98\xbe\x54\x7d\x1c\xfa\x15\x31\xaa\x6c\x27\x4c\xaa\xe3\xa5\xeb\xfd\x5f\xa9\x01\x15\xe4\xbc\x57\xea\xd7\xbc\xc1\x21\xe2\x79\xcc\x3b\x28\x0c\x3e\x71\x23\xd5\x2b\x5e\x0c\xcb\x0b\xa9\xa8\x9a\x91\xd4\x79\x33\x67\x4b\x00\x7f\x22\xc4\x9f\xd6\x68\xba\xf0\x46\x29\x57\x6b\xa8\x0d\x6e\x0d\xe0\xc3\x52\x5e\xe6\xdd\x38\xe1\x7f\x06\xe4\x79\x87\x5a\xef\x13\x88\xf0\x01\x3e\x7c\x31\xa4\xc9\x35\xda\x4b\x61\x6d\x50\x4b\x8c\x41\xa4\x77\x5c\xde\x43\xce\xa8\x08\x6e\x7c\xc8\x64\x91\x29\xb3\x0b\xe7\x6f\xc6\xb1\x6b\x2e\x77\x0c\xa7\xbb\x2c\xc1\xaa\x0d\x93\x54\xe4\x2d\xa8\x3b\x6b\x5d\x6b\xd2\x09\x6c\x07\xff\x37\x7b\x63\x75\xbc\x8e\xe0\xe2\x25\x18\x93\x0e\x23\x6b\x04\x8d\xa4\xaa\xf4\xaf\x9a\xda\x00\xeb\x16\xf6\x9c\x0f\xce\xda\xd5\xb3\x73\x42\xc5\x13\xbc\xce\x99\xc6\x5c\x14\x9e\x40\xa3\x23\x30\x3c\x81\xfa\x61\xc5\xae\xa2\x86\x88\xa5\xb6\x4f\x92\xa2\x7e\x4f\xf5\x20\xec\x03\x35\x44\x16\x70\xed\x0d\xe7\xcc\x65\xfb\xcd\xa5\xa7\x4b\xe4\xac\x80\x72\x62\x6f\x5b\xea\x12\x2c\x10\xf7\x14\xa7\x47\xcb\x11\x64\x4b\x44\x0d\x69\x7c\xcf\x95\x05\xbe\x14\x3c\xab\x33\xa6\x6f\xb4\x10\x5e\xbc\x14\x2e\x5b\x70\x81\xcb\x96\x33\x59\xa9\x99\xea\x8f\x4b\x9e\x76\xc7\x5e\x4f\x4e\xa7\x68\xa9\x49\x74\xa5\x3f\x74\xa2\x35\x74\xae\x2b\x84\x7c\xcc\xd6\x67\xe5\xce\x49\x48\xed\xac\x1d\x96\x71\x63\x88\x7a\x9a\x27\x0d\x0d\xbf\xbc\x30\xf0\xb9\x04\x57\xc1\x4f\xe4\x0e\xd1\x64\x96\x38\x50\x25\x5e\xeb\x4d\x83\xc3\xe2\x9e\x80\x8a\xa8\xbe\xfd\x3f\xef\x4f\xf2\x21\xd4\x21\x1b\x61\x16\x13\xfe\x06\xdc\x00\xae\x8e\x2b\x65\x19\x33\x50\x96\xc5\x44\xd5\xf1\x4e\x13\xc5\x72\x39\xb5\xdb\xec\x83\x20\xef\xb5\x0b\x86\xf3\xd1\x2b\x42\xf7\x6b\x85\xc1\xae\xcd\xae\x60\x2c\xc5\xe2\xae\xa8\x71\x9e\x2a\x85\xee\x91\xe1\xbe\x4f\x56\xd5\xd8\xdb\x51\x81\xc7\xcc\xb5\xaf\x02\x27\x95\x62\x96\x00\x00\x0f\xa5\x64\x4e\xb4\xa0\x85\x9e\x48\x03\xfe\x10\x5a\xd0\x84\x9b\x99\x25\xb7\x51\x34\xb9\x86\x16\xd1\x8a\xb9\x27\xf6\x48\xb2\xef\xb2\xd6\x63\x0a\xd6\x4b\xce\xcc\x44\xc9\x72\x3c\x81\x1a\x28\xbc\x2b\xc9\xa8\xf6\x04\x58\xfa\x7b\x67\xa3\x6b\x92\xce\x04\xcd\x79\x12\x5a\x67\x28\x39\xe5\x9a\x4b\x17\xc9\xc2\x71\xed\x1e\x23\xe7\xa1\xc7\x00\x06\xc8\x8e\x32\xca\x73\xb2\xa7\x19\x23\x81\x31\xf0\x9b\x4b\x54\x16\xd1\x59\xa8\x98\xfd\x79\x1c\x3d\x73\x28\x8a\x0e\x2a\xc0\x7e\x52\xc9\xe0\x90\x90\x80\x4a\x00\x6c\xee\x74\xf9\xa3\xf7\xc3\xd2\x2d\x9f\x99\x54\x90\xd0\xe6\xbb\xdf\x30\x91\xca\x28\xf5\xe5\xf0\xfc\x54\xc7\x86\xac\xeb\x19\x88\x23\xc1\x17\x99\x14\xe3\x18\x64\xae\xe2\x52\x2b\xf0\x05\xf4\x7f\x9c\xf2\xb4\xa4\x19\x8a\x7a\x37\x99\xa3\xcb\x53\xfc\x39\x1f\x4f\x4c\xff\x86\x81\x9b\x13\x4f\xc4\x2a\x35\xda\x3f\x94\x2f\xa4\xd4\x72\x0d\x47\x83\x71\xee\x34\x74\x19\x43\x87\x45\x3a\x03\x84\x5a\x97\xbc\x59\xcb\xba\xf1\x48\xed\x38\x44\xa0\x7b\x44\x74\x98\xde\x61\xe8\x06\x68\xb5\x21\xf0\x03\x5b\x2a\x03\xd7\x2e\xce\x0d\x5a\x1b\x56\x7d\x25\xc2\xc7\x26\xea\x2e\x0a\x9a\xef\x07\x81\x1e\x5d\x08\x16\x0f\xa3\xdc\xed\xaa\x6b\xa3\x43\x9a\x86\xa2\x4e\xb7\x0d\x7f\x60\x82\x29\x9e\xcc\xb1\x4e\xf8\xe9\x98\x1a\xd8\x7c\x4c\xd8\x9f\xa5\x83\x26\xa6\xf2\x9a\xf5\xe2\x69\xc5\x8c\x57\x2c\x2f\x32\x6a\xba\xc9\x54\xd9\xf9\x39\xf2\xa6\x47\xb1\x68\xbb\xfb\xa9\x48\xfb\x34\xb3\x7c\x7f\xfe\xd3\x91\xab\x87\xc3\xfd\x5c\xcb\x86\xbb\xaa\x3a\x7f\xa2\x3a\x82\x7a\xd9\xd2\x6d\x0c\x20\x6a\x43\x96\x82\xf8\x73\x4f\x06\x97\xc7\x8d\xc0\x56\xb0\xf6\x8f\xf3\x9f\x8e\x7a\x84\x0f\xd8\xc0\xff\x15\x6e\xf5\xf2\xd7\xc8\x31\xd6\x4b\x84\x3a\x1c\xd8\x35\x30\x95\xd8\x97\x1c\xff\xf6\x9f\xdf\xd8\x49\xda\x6f\xbf\xed\x7f\x13\x75\x0e\xfa\xf6\x9f\x96\x8f\x94\xbd\xa1\xfe\x69\x9c\xae\x0e\x92\xd6\xfe\xf5\xcf\x73\x99\x5e\x16\x2c\x19\xe0\x6b\xe9\x7f\xba\x3e\xea\x4c\x18\xab\xcc\x9f\x4b\x48\x54\xe3\x29\xee\x25\x78\xb6\x62\xff\xf2\xf1\x06\xd7\x80\xd4\x49\xac\x84\x1a\x26\xe0\xc8\xf1\x75\xc9\x42\x1a\xfc\x39\xb6\x2e\x85\xf9\xef\x8d\xe2\x6e\xa2\x46\x4a\x10\x26\x28\xb0\x0e\x05\x61\x1f\xb9\x06\x14\x1a\x7c\x57\x20\x07\x75\xb9\xf0\xfe\x14\xb5\xc3\x5a\x0a\x07\xd4\x21\x68\x67\x6a\xe7\xf6\x99\x90\xe6\xb3\xb0\xfc\x3e\xcf\x11\x8e\x4a\x49\xe8\x54\x02\xd2\x05\x1c\x22\x82\x94\x02\x1c\xe5\x55\x37\xc0\xe1\x8c\xe4\x5c\x1b\x7a\xcd\x06\xe4\xd2\x9e\x92\x71\xc2\x02\x52\x4f\x10\xe8\xe7\xc2\x52\x52\x0a\xc3\x33\xf8\xb6\x1a\xc7\x4e\x39\x3e\x3d\x4f\x47\x44\x97\x09\xb4\xbc\x55\xac\xef\xcf\x63\x77\xd7\x82\x24\xab\xde\xa5\x17\x16\x7b\x42\xd1\x40\x2b\x52\xf8\x29\x36\xd0\x15\x8e\xbd\x16\xb2\xb3\xed\x3c\xa5\x48\xaa\x33\x18\x88\x09\x5d\x94\xed\xb1\x9b\xf9\x7c\x22\xb4\x15\x5d\xfc\x41\xb0\x84\x69\x4d\xd5\x0c\x1b\x8c\xf2\xd0\x07\xd1\x25\xce\x82\x50\xca\xa9\x28\x61\x00\xc5\xb0\x5b\x6d\x99\x00\x75\x28\x19\x2a\x79\xcd\x44\xa8\x48\x08\x02\x2f\xa4\x65\x57\x49\xa8\x90\x0e\x20\x49\x32\xa1\x62\xcc\xaa\xa2\xf3\x9c\xa6\x40\xfb\x1f\x83\x6e\xe7\xdf\xc7\x52\x80\x8e\xac\x8a\xc4\x0d\x90\x62\x68\x0f\xc2\x10\x45\xf9\x20\x88\x77\xc3\xf4\xaa\x30\x87\x7d\x25\x9e\x35\x92\x89\xa4\x1b\xbf\x7a\x7b\x8f\x7a\x1f\xf4\x97\x35\xa6\x80\xe7\xcc\xd0\x94\x1a\xda\x59\x1a\xf8\x5b\x1a\x1a\x69\xba\x1c\x11\x60\x87\x28\x77\xc4\x9d\xe4\x5e\x79\x95\x05\x8f\x61\x08\x40\x1a\x4c\xfc\xea\x63\x0f\x7a\xcb\xd7\x2e\x86\x89\xd9\xdd\xa0\x1a\xba\xf6\xea\x30\xbc\x1f\x0d\x45\x16\x4b\x49\x5a\x82\xa2\x59\x89\xb4\x36\x31\xf6\x4e\x42\x30\x76\xa1\x3b\xa3\xf2\x55\x95\x4a\x90\xd4\x53\xbd\x97\xaa\x81\x78\xd6\x31\x61\x38\xb6\x4a\xf7\xb8\x11\x8e\xf8\xa5\xc0\xad\x3a\xb7\x0c\xb0\x4e\x63\x66\x74\x95\xa4\x89\xa7\x89\x15\x91\xee\x2c\x77\x6e\x0b\x38\x6a\xdc\xd2\x38\xcb\x7f\xb9\x3e\x8a\x0b\xa7\xa5\x3b\x2d\xec\xf9\xb5\xf6\x95\xe9\x2e\x16\x85\x1d\x65\xdf\xca\xb4\x7d\x50\x6b\xae\x35\x6a\x35\x70\x55\xb3\x82\xf5\x4b\x1a\xdc\x4a\xf8\x64\x08\xf1\xeb\x1a\xaa\x06\x1e\x01\x13\x3a\x6d\xee\x9d\xad\xf4\xdf\x7e\x68\x7b\x06\x8f\xeb\xc3\xe3\xfa\x2f\xdb\xfa\xc1\xdb\x27\x41\xfa\xab\x65\x32\x64\x7d\x42\x1d\x04\x3e\xac\x68\xbd\xec\x24\x2e\x31\xdf\x9b\x32\x9c\xbc\x2e\xc5\x23\xa4\xd5\xb8\xc2\x5c\xc6\xad\xbc\x7c\x45\x3e\xab\xe9\x5a\x4e\xa7\x0d\x96\x37\x56\x41\xed\x79\x53\x7c\xe0\x96\xdc\x43\x7c\xd5\x6f\xdf\x9f\x1b\x0c\x94\xbc\xe5\x56\xa9\xaf\xb6\x0a\x8a\xb7\x55\x92\xa1\xa7\x7d\x28\x76\xb5\x6c\xac\x64\x96\xf9\x46\xe8\x68\x8a\xcf\x25\x49\x41\xdf\x1e\x0c\xbb\xf4\x82\xcb\x23\x68\xfa\x82\xdd\x04\x95\x8e\x6a\x44\x2a\xf5\x41\x7f\x70\xcb\xf8\xcc\xb5\x65\xe3\x85\x8a\xb0\x43\x31\xc3\xa9\x1f\x87\xc5\xba\xcd\x00\xeb\xf9\x14\x25\x4b\x78\x98\x0b\xcd\x6e\xe8\x4c\xc3\xfe\xaa\x2c\xc2\xf0\x7c\x87\xdb\x5e\x0d\x7c\xc1\x46\x2d\x9a\xb3\xc7\x57\x67\x69\x01\xdd\x25\x06\x00\x2a\x0b\x17\xcd\xb3\x7d\xab\x61\x1a\xf4\xb3\x9e\xbf\xba\xcb\x2f\x80\x14\x4b\xc8\xaf\xea\x22\x50\x5b\x6f\x3a\x74\x7e\x0a\x03\x7b\x9b\x6d\x0c\x7f\xf8\xb3\x3c\x44\x1c\x87\xcc\xee\xb7\x0a\x4b\x0a\x78\x37\xfe\xed\x92\x04\xb4\x8a\xe9\x7f\x84\xc6\x44\x2e\xb4\xe3\x0b\x8b\xed\x51\x70\x78\x7e\x8a\x4f\x1c\x40\xeb\x59\x2a\x66\x4e\xcb\x32\x13\xae\xd2\x7e\x41\x95\x99\xa1\x73\xa4\x57\x7b\x5a\x28\xaa\xec\x80\x1c\x9d\xc6\x98\xdb\x74\x2e\x8b\xaf\xda\x1a\x01\xf9\xdc\xfa\xf8\xa0\xdc\xad\x2b\xb3\x69\x14\x69\x5b\xe2\xe9\xaf\x7a\x1d\x71\x84\x46\xe6\xbd\x16\x4f\x82\x22\x69\x2c\x88\xbb\x3d\x91\xe7\x32\x61\xf0\x60\x05\x7d\xd9\xf9\x96\x64\x5c\x72\x16\xf4\x33\x30\xf4\xed\xb4\x7a\x84\x8f\xec\x91\x26\x45\xdf\xd5\xb7\x07\xd7\xbb\xd3\xf1\x7c\xca\x28\x1a\xed\x76\xb3\xa2\x43\x35\x7e\x56\x3c\x40\xd8\xdd\x64\x4f\x48\x81\x3b\x1e\xef\xdd\xc7\x8c\xd9\x5b\x3c\xc6\x70\xcb\x80\xfc\x3c\x61\x22\x3e\xee\x62\x5f\x7b\x2f\x1c\xbb\x5c\xa4\x76\xb9\xe1\x2c\x04\xdb\x5f\x97\x49\xc2\x58\xf0\x16\xc5\xbd\xd7\x2b\x89\xe4\xa6\x9c\x53\x93\x4c\x98\x26\x5a\x02\xf8\xa8\x36\x34\xcb\x2a\x2f\x8d\x23\x97\x04\xcd\xc1\x3b\xe8\x23\x85\xa2\x56\x16\xee\x1c\x56\x45\x46\x9d\x57\x64\x54\x8a\x04\x73\xb2\xb8\x99\xf9\x19\xc4\x27\x3c\xfc\x0c\x4c\x53\x8d\xce\x1b\x3e\x42\x6f\x70\x64\x62\x06\x62\x82\x48\x9d\xa1\x10\xad\x9f\xf5\x0e\x76\xcf\xca\xcf\x21\x4d\xae\x6f\xa8\x4a\x35\x54\xbc\x53\xc3\xb1\xa9\x60\xaf\x36\xec\x5e\x34\x07\xfb\xf4\x9a\x6e\xb0\x1f\x0c\x59\x68\x28\x2d\xe7\x1e\x43\x68\x69\x64\x4e\x0d\x4f\xc0\x45\xc3\x47\x91\x6f\x3f\x0f\x7d\x1e\x42\x9c\x16\x65\x39\x9c\x0e\xee\x35\xc0\x5a\x53\x58\xa1\x61\x6e\x24\xe1\xb9\xd5\xb9\x28\x34\x4c\x1e\x85\xfa\x76\x1f\x88\xb8\x6b\xa6\x56\xb1\xfc\x19\xc2\x40\xd1\x5d\xe8\xfc\xb1\x66\xb9\x86\xe1\x43\x9c\x21\x38\xd8\x5d\x21\x77\x6f\x4e\x25\x22\xfe\x57\x96\xab\xed\x6c\x23\x66\xed\xd9\x05\xba\x61\x56\xd7\xd2\x77\xb2\xac\x1e\x2c\x9b\x13\x1f\x0b\xac\xfa\xe5\xda\x3b\x0c\x5c\x1a\xf7\x5e\xaa\x64\x51\x38\xd7\x5f\xbe\xbf\x38\x27\x88\xee\xa9\x29\xd3\x10\xd9\xf6\xa9\xe1\x96\x14\x63\x26\x98\xa2\x06\xe2\x03\x0e\xad\x10\x76\xef\xfc\x43\x20\x6b\x98\x44\x60\xe6\x7b\x87\x59\x31\xa1\xfb\xe4\xbd\x6b\x9a\x1f\xf8\x37\xe4\x9a\xaf\xa4\x91\xa2\x33\xd1\x47\x05\xb6\xaa\xe4\x5d\xc3\x6c\x55\xc9\xad\x2a\xd9\xe0\xda\xaa\x92\xf3\xd7\x56\x95\x8c\xaf\x90\xce\xdc\xad\x1a\x79\x11\xea\x13\xa2\xec\x92\x38\x5f\xab\x2a\x60\x78\x7c\x2f\x5f\x78\xd6\x06\x9d\x30\x5d\xca\x62\x4c\x5d\xeb\x9c\xa7\x77\xdf\x60\x4a\x1c\x7e\x38\x74\x4b\xe5\xb3\xf4\xaa\x0c\x41\xab\x25\x96\x86\x45\x4b\xea\x94\x87\x07\xaf\x61\x0d\xf5\xe5\x00\x3b\x5b\xf7\xc3\xb0\xfd\x2a\x29\xaf\x71\x23\xc0\xf8\xea\x70\x35\x49\xe7\xf0\x24\xf1\xf5\xe4\x72\xf8\xea\x57\x67\xb5\x01\xe4\x51\xea\x03\x48\xf7\x35\x02\xe4\xf1\xeb\x04\x48\xa8\xdb\xea\x7e\xdf\x5f\xf8\x3a\xb2\xb9\x9d\xef\x44\xf7\x5d\x3b\xbf\x86\x53\x16\xc6\xe1\x9a\xc8\x9c\x1b\xc3\x7c\x5e\x45\xd8\xc9\xe0\x0d\x8f\xeb\x68\x9c\xcc\x01\xb3\x1b\x93\x27\xd8\xc7\xd0\x69\x29\xd2\xe7\x40\x2b\xbb\xe1\x1a\x8c\x08\x2a\xac\x09\x88\x70\xb1\x20\x3b\xfa\x2e\xef\xd6\x9b\xb5\x5b\x39\xd4\x7e\xdc\xad\x1c\x8a\xaf\xad\x1c\x22\xd0\xb2\x2a\x83\xa2\x8d\x4e\x95\xc7\x43\x4c\xb8\x20\xbf\x95\x4c\xcd\x88\x9c\xb2\x28\xaf\x13\x9a\x52\x69\x9e\xba\xcc\x48\xe7\xb7\x6b\x6b\x75\x6d\xa8\x5e\x07\x7e\xc5\x93\x8f\x56\x7f\x06\x6c\x81\xce\x25\xfd\xfc\x03\xea\x10\x41\xb8\x0a\x7e\x89\xbd\x68\xb7\x32\x56\x0f\x1c\x06\x78\xf5\x09\xf8\xe2\x0e\xcf\x8e\xbb\x34\x81\xbb\x88\xa4\x93\xee\xa2\xe9\xe4\x36\x46\x5d\x46\x22\x24\x65\xf8\x06\x0e\xb3\x90\xf1\x10\x7c\x70\xe4\x9a\xcd\x7a\x2e\xb1\xc8\x75\x21\xf4\x37\x63\x8e\x5e\xbd\x55\x4a\x3b\x08\xbe\xfa\xd5\xf1\xa9\xd3\xa5\xcf\x0c\xaf\xb6\xad\x31\xea\x63\x79\xe2\x76\x73\x10\x76\x7c\xb0\x76\xd0\x42\x23\xbe\x6a\x4c\xea\x5a\xda\x40\xd2\x3b\x70\x2b\x80\xf2\xfb\x52\xa5\xc0\xa0\x50\x9e\x05\x12\xb6\x1b\xf6\x22\x5d\xbb\x6d\xf0\xf2\xcb\xf8\x48\xc4\x0a\x5b\xb0\x56\x13\x73\xcd\x66\xbb\xda\xa1\x54\x48\xa1\x27\xbc\xf0\xbd\x14\x41\x4e\xba\x5d\x49\x7e\x82\x54\x30\x3f\x04\x4a\xc4\x53\xd1\x23\x67\xd2\xd8\x7f\x4e\x20\xb7\x15\x43\x10\x92\xe9\x33\x69\xe0\x93\x8d\x26\x37\xbe\xda\x23\x11\xdb\xc5\x2f\x38\x44\x1f\x30\x8b\x1b\xea\x44\x7d\xc6\x23\x10\xd5\x25\xb7\x84\x85\xe1\x9a\x9c\x0a\x22\x95\xa7\xaa\xf1\x2d\xa3\xb4\x1b\xc2\x7b\x75\xa3\x60\xd1\x92\x31\xdc\x62\x48\x55\x5b\x8b\x3b\x86\x0b\x71\x27\xee\xbf\x01\xaf\x2f\x04\xea\x42\x9a\x26\xb4\x2d\xa2\x86\x8d\x79\x42\x72\xa6\xc6\x80\x68\x92\x4c\xba\x5e\xe2\xae\xce\x45\xbc\x3a\x3c\x1d\xf1\xea\x94\x0f\x41\x45\x79\x03\x09\xb8\x8f\xa3\xfe\xe0\xd8\x78\x5c\xe7\xb4\xb0\x2c\xf8\x3f\xf6\x54\x06\x2e\xf8\x5f\x68\x8b\xa6\x07\xe4\x90\x68\x2e\xc6\x19\xab\x7d\xe7\x02\x07\xf1\x30\x76\x04\x6b\xb3\xfe\x56\xf2\x29\xcd\x18\x26\xcc\x53\x11\x7a\x99\xc8\xd1\x82\xd2\xd5\x73\xbd\xd1\xac\x5c\x0e\x21\xea\x9d\x6b\x36\xdb\xe9\x2d\xb0\xed\xce\xa9\xd8\xa9\xc0\x91\x6a\x8c\x1a\x94\x0b\x88\x5e\xee\xc0\x77\x3b\x9f\x46\x4f\x7b\x02\xa6\x6b\x67\x3c\xe9\xdc\xcc\x47\x19\xd5\xba\x0b\x9c\x96\xdb\xb1\xc7\x2f\xa3\x27\x55\x75\xd7\xae\xe8\x22\xc1\x74\xe8\xee\x7c\xe4\x50\x63\xd8\x55\x0a\x6c\x07\x74\x9e\xba\x86\xce\x6d\x81\xdc\xe6\xcf\x9c\x30\x6c\x28\x43\xbd\x89\x51\x0a\xaa\x6c\x95\x5b\x28\xfe\x13\xc4\xc3\xe5\x28\xee\x03\xc1\x35\xb8\x9f\xb8\x2f\x4c\x15\xd2\x10\x2e\x92\xac\x4c\xb1\x03\x06\xfc\x14\x9c\x57\xdd\x18\xaa\x9d\x91\xb7\x73\x06\xfe\x29\x0c\xeb\x75\x4e\x9f\x59\xb3\x50\xfb\x33\x9f\x02\x01\x69\x27\x21\x9b\x00\xa9\xbd\x4e\x6a\x8d\x1a\x55\x39\xd4\x5b\x85\x1c\xd5\xf5\xc8\xd7\x7c\xa8\x18\x39\x9a\x50\x21\x58\x16\xe1\xb0\x38\x47\x27\x35\x86\x26\x13\x4c\x7f\xa6\xc4\xee\xe3\x8c\x99\x5d\x8d\x2d\xea\x73\x9a\x4c\xb8\x08\xe0\x05\x22\xe0\x11\x55\xa5\x54\x6b\x68\xae\xd3\xd6\x10\xea\xb0\x2f\xcb\xee\xed\x8d\x59\x2a\x50\xef\xd1\xdc\x3d\x15\xba\xbd\xdb\xe5\x40\x6b\x3c\x71\xa1\x4b\x08\xdc\x7b\x77\x6b\x97\x3c\xb8\xa7\xb9\x18\x31\xa5\x70\x4d\x86\xcc\xfd\x80\xf0\x5a\xdf\xd5\x81\xeb\xf7\x30\x91\x37\x24\x95\xe4\x06\x3a\x90\x4e\xad\x6a\x00\xf9\x37\xda\x2b\x15\xd1\x4c\x21\x23\x2e\x91\x79\xa1\x64\xce\xb5\xaf\xf1\x73\x0c\xb1\x36\xd8\x91\xac\x6c\x8c\xd3\x7a\x1b\xb8\xe6\xeb\x23\x62\xa8\x1a\x33\x63\x07\x27\xa2\xcc\x87\xac\x25\xac\xca\xba\x21\xbc\x3b\xed\x94\x11\x51\xea\x9e\x06\x18\xe4\xc2\x3d\x17\x01\x4f\x20\x19\x6f\x24\x95\x4b\x29\x0c\x5f\x3a\x9c\x76\xcb\x72\x3f\xb9\x73\xb1\x14\x46\xb7\x84\x4d\x6f\xd3\x40\x03\x97\xff\xe7\x9f\xcf\xba\xc1\x3d\x5f\xca\x5b\x37\x52\x65\xe9\x0d\x4f\x31\x51\x43\x93\x3d\xfb\xb8\xfd\x76\xef\xbc\x46\xe0\xf3\xd6\x1b\xf9\xe6\x86\xa7\x8f\x41\x6e\x9f\x19\x6c\xc9\x4d\x80\xde\xae\x57\x3f\x87\xbe\x70\xf0\xd8\x7d\x72\xc2\xb1\x8e\xdc\xfe\x85\x88\xa2\xf9\x90\x8b\x0a\x09\x21\x30\x04\x9c\x7c\x56\x2e\x78\x8b\x5c\x33\x83\x15\xc0\x50\x44\x2b\xcd\x84\x68\x9e\x97\x99\xa1\x82\xc9\x52\x67\xb3\x96\x6c\xfc\x54\x97\x74\x94\xb1\x8f\xb8\x9b\xdb\xeb\x2f\x61\xa8\xba\x1e\x33\x46\xb4\x07\xbf\xc2\x0b\x8a\x4c\x95\xdc\x9c\x1e\x04\xa5\x26\x94\xb1\xb3\x8f\x2c\x71\x75\x4e\x45\x56\x8e\x79\xa3\x92\xd6\x6d\x53\xc0\x46\xbf\x5e\xad\x29\x60\xd5\xf2\xac\xd4\xac\x42\xfa\x6a\xd7\x74\xfb\x69\xf4\xf0\x7b\x54\x55\xf1\x6a\x79\xa3\xbe\x94\x15\x4c\xa4\x80\x1c\x1e\xed\x38\x9c\xee\xda\xa8\xed\x10\xbb\xbb\x3e\x17\x4e\x3e\x1a\x45\xad\x90\xcf\x01\x4e\xc6\xc1\x82\xf3\x11\xa1\xa2\xad\xc0\x7e\x2e\xbd\xa5\xc8\x56\x6f\x7c\xf0\xa5\x3b\xed\x2f\x19\x11\xac\xd6\x5f\xb2\xe3\xee\x92\x78\xfa\xb9\x8d\xae\xeb\x65\x51\x4b\xba\x40\xba\xa7\xc4\xf5\x4b\x6d\xbb\x41\xea\x25\x4d\xe2\xe6\x66\xb5\xc6\x3d\xb9\x6d\x0d\xf9\xb4\x5a\x43\x8e\x00\x69\xa8\x3d\x8c\xef\x6b\x1c\x67\xce\x77\xe6\x3e\x74\x3a\xe7\x2a\xbe\x32\xb7\xa3\xa2\xe3\x15\x7a\xbe\xb8\x81\x5c\xdd\x3e\xd1\x76\x35\xaa\x24\xfd\x52\x88\x66\x42\x7b\xdd\x1d\xf4\xa8\xa1\x9a\x99\x36\x1e\xdd\xc5\x82\x06\xaf\x0f\xe2\xd8\xd8\x78\x12\x0a\x0d\x3d\xdc\x0e\xe9\x7f\xeb\x34\x47\x51\xbb\xd3\xea\x8c\x9e\xd0\x1e\xe9\x97\x85\xd4\x2d\x1c\x23\xb5\xcb\x9b\x50\xd3\xb2\x97\x7a\x8b\x53\xd6\xcd\xf6\xfd\xfb\xd3\xe3\x4e\x68\x66\x07\x9a\xa3\xd9\x20\xa0\xe9\x95\x82\xff\x56\xc6\x36\x30\x20\x0f\x06\x2a\xb9\xfb\xd7\x41\x8a\x71\xc2\x2a\x67\xfc\x31\xd7\xd7\xed\x81\xb8\x7f\x38\x3a\xa9\x0f\x59\xdf\xcc\x3f\x1c\x9d\x10\xf7\xe9\x4a\x3e\xf0\x87\x38\xc1\xdb\xe2\x39\x8f\x13\x56\x85\xc7\x52\xae\xaf\xd7\x00\xe2\xdd\xd6\x3c\x2d\xd2\xb3\x66\xd5\x82\x9b\xec\xcf\xf7\xd8\x9f\x11\x40\xed\x4c\x96\xe4\xc6\xa1\xd2\x39\x03\xee\x8a\x17\xaf\xc8\x89\xd0\xa5\x62\x55\x96\xd3\xbc\x2d\x67\x75\xa8\x95\xcd\x39\x00\xfe\xd3\xaf\x3a\xf3\xff\x77\xcd\x9f\xcf\x25\xa0\x50\x50\x65\xc0\x06\xeb\x08\xc7\x1c\xda\x94\xba\x21\x3d\x11\xee\x61\x9e\xd3\x91\xaf\x53\xe8\x39\x54\xaa\x00\xf6\xed\x6f\xb2\xec\x12\xc1\x54\xc6\x0c\xf2\x3a\x00\xd0\x92\x83\x94\x4d\x0f\x74\x4a\x5f\xf6\xe0\x31\x1e\xcc\xc8\xd4\xe6\x44\x35\xd9\x79\xb9\x33\x20\x97\x3c\xe7\x19\x55\xd9\xac\xd6\x71\xab\xba\xcf\x1e\xa6\x7e\x40\x48\x02\x79\xb1\x43\xf6\xa4\x82\x91\x13\x2a\x48\xc6\x7c\x25\xbf\xdb\xbe\x33\x34\x1f\xf6\x37\x43\x16\x92\x8d\x89\xc6\xa0\x58\xec\x86\xbd\xde\xe3\x71\x5e\x03\x3b\x3d\xae\xce\x33\x2e\xec\x21\x37\x20\xef\xdd\xe9\xe4\x8e\x7d\x64\x01\xd8\xb5\xfe\x8e\xcd\x5a\xa2\x8d\xf1\x59\xb4\xf3\x44\x2c\x3a\x3a\x36\x8d\xd0\x4d\xbd\x1d\x63\x6e\x2e\x58\x21\x3b\x50\xd1\x70\xa0\x39\xcf\x3e\x37\xf6\x03\xa9\x39\x74\x49\xa1\x86\x50\x14\x44\x49\x99\x51\x6b\x91\xa1\x5f\x7f\x40\x8e\x4f\xce\x2f\x4e\x8e\x0e\xaf\x4e\x8e\x5f\x11\x3f\x12\x8f\x75\xfa\x01\xb9\x8a\xf1\x8a\xa3\x92\x2f\x07\x0a\x1b\x9e\xd5\x73\x82\x95\x8a\xaa\xc5\x03\xe0\x37\x52\x41\x4e\x05\x37\x55\xe7\x2a\x4c\xa2\xcf\xa4\x70\x69\xf1\xf6\xd7\x2e\xae\x30\xe6\x98\xbc\x29\xdc\x60\xf6\xeb\xfa\x68\xb0\x43\xb1\xcf\x4b\x98\x4a\x23\xef\xc6\x9a\x75\xbb\x6a\x79\xd6\x61\x65\xfa\x26\x2d\x9d\x6c\xf2\x2b\x0c\xc8\x56\x5d\x79\xf0\x44\x0d\xcd\x06\x3d\xfe\xaa\x54\xb5\x5e\x80\x83\xc1\xee\x80\xd8\xb3\x7a\x77\xb0\xeb\x55\xb9\x6c\xa1\x61\x65\x18\x34\x86\xb9\xae\xf3\xf7\x80\x90\x77\xbe\x8c\x10\x70\x8b\x96\xf7\xbe\x44\xb0\xbe\xa8\xd3\xe1\xdc\x2e\xf1\x2d\x51\xcb\x61\xfc\x50\x87\x8b\x3d\xe6\x53\x26\xf0\xc5\xd6\x27\x98\xfd\x54\x3b\x59\xb5\x8b\xea\xcd\xdf\x5f\xbc\x59\xdf\x4b\xa1\x64\xe9\xe4\x95\x8e\x64\x9e\x23\x62\xf3\x24\x20\x8d\x54\x60\x21\x41\xea\xad\xc5\x38\x47\x9c\xea\x51\xa3\x0d\x3b\x27\xf1\xfd\x50\x73\xc6\x78\xf8\xd8\xd5\xf5\x8a\xca\x1e\x7a\x78\x9b\x2c\x07\x94\xae\x3d\xf4\xa6\x3b\x3e\x0f\xc2\x7b\x1c\x5c\x9c\x1c\x1e\xbf\x3d\x19\xe4\xe9\x13\x14\xbe\x4c\xa4\x85\xe4\xc2\xe8\xa6\x86\x79\xb3\x76\xdb\x6d\xc5\x76\x98\x76\x37\xba\xd9\x89\x1f\x2e\x4e\xf4\xf4\xcf\x88\x90\xef\x53\x66\x28\xcf\x74\xc4\x61\x46\x16\x32\x93\xe3\xe5\x5d\xb7\x1e\xc0\x3a\x7f\x42\xec\xd4\x3e\xed\x5b\x9e\x5c\x9f\xc5\xda\xbc\x55\x6f\x9d\xa2\xbe\x35\x2f\xf4\xd2\x08\xd4\x0a\x96\x20\x74\xd4\x7d\x06\x04\xfb\x84\x26\xc2\x02\x15\xd1\x27\x03\x22\xce\x37\x26\xa8\x90\xfe\xa3\x06\xde\xab\xda\x0e\xeb\x21\x7e\x53\xb3\xc1\x4a\xf3\xa6\x9d\xe2\xeb\x54\xff\x9b\x1b\xa9\x7e\x88\x14\x8a\xf5\x03\xa0\x32\x74\x90\x96\x2a\xd2\xc1\xe2\x33\xc5\x3b\x71\xbd\xcb\x17\xef\xca\x66\xf3\xce\xdc\x4a\x4b\x0f\x3e\x74\xc4\xab\xcb\xb2\x59\xd5\x2e\xc3\xb9\xb4\xe8\x18\x81\x92\x95\x8b\x94\x15\x8a\x4f\x79\xc6\xc6\xd0\x70\x87\x8b\xb1\x6f\x3d\x1e\xe1\xed\x43\xfb\x4b\xb6\x30\x2f\xbb\xd8\xda\xc4\x0d\xe0\x80\xb3\xce\xde\x5d\x41\x13\x27\x48\x85\x69\x6d\x4c\xda\x07\x42\xb3\xeb\x7e\xbf\x0f\xfe\xbb\xbd\x7f\x59\xab\x26\xcd\xf6\xc9\xcf\xcc\x3d\x47\x42\xa3\x29\x05\x9d\xd4\x27\x32\x74\xfa\x81\xb9\x56\x94\x05\x86\xc6\xe4\x38\x77\xd7\x81\xbd\xd3\xaa\xcf\x78\x9c\xd7\xee\xe7\x0c\xc0\x9c\xab\x98\xff\x53\xb4\x80\xd6\x74\x88\x76\x2c\xed\x7d\x9c\x68\xd9\x1e\x09\x71\xfd\xc2\x9d\x0b\x94\xe8\x59\x9e\x71\x71\x5d\xa1\x87\x8f\xa4\xe5\x63\xac\xeb\xe5\xe2\xda\xef\x1a\xc5\x68\x76\xfb\x89\xd1\x84\x47\xd7\x76\x5a\x98\xce\x42\x09\x57\xb3\x02\xf3\xd8\x82\xf0\x72\x49\x56\xb1\xa8\xdf\xd9\x79\xd2\x14\xe3\x3a\xd1\xbc\xbd\x78\x3f\xbd\x3c\xba\x3c\xad\xc9\x76\x41\xf0\xb3\x4f\x19\xb0\xbb\xed\x70\x85\x97\x7c\xd2\x16\x04\xff\xad\x59\x86\x53\x9f\x64\x65\xd3\x5f\x62\x12\xf5\xb9\x54\x86\x66\x6b\x10\x9c\xc9\x84\x16\x87\xa5\x99\x1c\x73\x9d\xc8\x29\xeb\xc8\x0d\x71\x33\xc1\x0e\x64\xbe\xe1\x02\xf7\x4c\x8a\xcf\x20\x47\x7f\x3b\x3c\x27\xb4\xb4\x5c\x67\x5c\x73\x99\xb5\xa5\xa7\x79\x0a\x5c\x62\xc9\xef\x23\xbe\xbf\x7b\xc2\x46\xbd\xfd\x36\x28\xfc\xe8\x41\x61\x90\x8b\xcf\x25\x10\xcc\x05\x37\x9c\x1a\xa9\x3a\x8b\xd6\x1d\x95\xda\xc8\xdc\x6d\x91\x53\x3f\x3c\xe4\x38\x81\xaa\x55\x7b\x62\xbd\x1b\x2b\x18\x8a\x40\xde\x53\x61\xcd\x3a\x9a\xb0\xb9\x3a\x93\x1e\xf4\x6f\xc1\xb1\x79\xb8\xe7\x1b\x57\x6d\x04\xc0\xe4\xd9\xb7\xaf\x6a\xbd\x0d\x17\x5a\xde\x7a\xa7\x63\xd5\x46\x75\x6d\xde\x62\xfe\x5b\x37\xf2\xc9\x39\xf7\x91\x2e\xff\x55\xd2\x0c\xe9\x79\xb6\x4e\x4f\x78\x7d\x1d\x3b\x79\x4d\xcf\x53\x7e\xdd\xcf\x82\xf7\xab\xd4\x88\xab\x8e\x77\x18\x45\x85\xb6\xcc\x50\xf7\x2f\xec\xba\x14\x83\x5d\xb2\x67\x92\x62\x7f\x6d\x94\xe9\xaa\x9a\x13\x5f\xd6\xad\xfd\x9b\x50\xc5\xd9\xee\xbd\xd6\x9e\x37\x00\x7b\xb8\x1b\xe7\x69\x8d\x40\xa8\x92\x91\x37\x5c\x1b\xdf\xc6\x15\x3e\xe0\xda\xf5\xbd\x02\xed\xfb\x9c\x48\x45\x78\xf1\x0f\x9a\xa6\xea\x15\x9e\xf5\xce\x3a\x84\xff\xd6\x01\xa1\x9c\x8a\x90\xb1\xb2\x67\x66\x85\x6b\xaf\x70\x75\x74\x4e\xb0\x3b\xf4\xd7\x7f\x79\x01\x9a\xf8\x97\x5f\xfc\xe5\x45\x4b\x56\x7b\xaa\xd5\x71\xa4\x6b\x2f\x64\xe7\x79\x0a\xcf\xa4\x86\x02\x14\x50\xac\x9e\x80\xd3\xcd\x49\x41\xe4\x7b\xcb\x84\xe1\xcc\xed\x52\x4d\xdd\xd6\x1b\xfc\x81\xea\x0d\x48\x28\x18\x47\x39\xfa\x58\xf2\x19\x45\xf3\xf9\x53\x11\xcd\x0d\xa9\xd9\x94\x73\xeb\x1c\x8b\xd2\x6d\x77\x57\xc7\xb9\x1c\x50\x4f\x79\x7c\x76\xf9\x8f\x37\x87\xdf\x9f\xbc\x81\xf7\x74\xd9\xf0\x96\x15\x9d\x59\xd2\x24\x77\x7b\x75\xd6\x6e\xee\x29\x6a\x4a\xce\x2e\x22\xf6\x67\xaf\x2f\xe7\x5c\x71\xf6\x93\x07\x86\xe9\xdb\xda\x96\x62\xd4\x82\x7a\x4f\x2d\x48\x00\xad\xac\x99\x5a\x4f\x71\x77\xc7\x11\x86\x08\x40\xbd\xe6\xd4\xb0\x3c\x84\xef\xd8\xda\xef\xd0\x90\x37\xc8\xc6\xa9\x71\x77\x07\x93\x2d\xc5\x90\x8a\x9d\x87\x91\x3f\x29\xb5\xdb\xa9\x87\xaa\x2b\xe4\x81\xdd\x4b\x18\xcb\x27\x3c\x58\x11\x86\x79\xd4\xca\x9e\xa8\xf6\x2c\x65\x3a\x34\xbd\x7d\x06\xdc\x5a\x2c\xeb\xf6\xd6\xfe\x74\x58\xda\x44\xce\xb5\x3a\xc6\x20\x4d\x2d\x44\x5f\xab\x5e\xbe\xad\x6b\xa2\xcf\x65\xa4\xce\x55\xa5\x0b\x9a\x74\xda\x8b\xa7\xfa\x08\x3f\x01\xa0\xb7\xa7\x78\xc0\xc0\xc4\xd7\x54\x66\x15\x9e\xdd\xcd\x76\x3c\xf2\xc3\xcd\x83\x81\x3c\x88\x4b\x7c\x97\xe8\x42\x7a\xb0\x97\x18\x35\x64\x23\x59\x88\x6c\xdc\x39\xf4\x73\x43\x07\xc2\x3a\x9d\x07\xc5\x44\x1a\x29\x3a\x2e\x21\x3d\x5f\x32\x68\x5d\x9e\xe1\x1d\x47\x55\xfb\xf5\x8a\x2f\xb0\xc2\x26\x84\xa6\xad\xc1\xe1\x4f\x6c\x29\x7c\x90\xba\x1e\xa2\x7e\x7a\x02\xa8\x48\x4f\x8f\xd7\x20\x7b\x9e\x3e\x0c\xcf\x43\x83\x73\x6b\x4b\x2f\x4d\x3b\xaa\x4b\x3f\x3d\x76\xb6\x80\xaf\x3d\xd7\x6e\xf3\x90\xdb\x77\xcf\x5a\xf4\x24\xa9\xcc\x8d\x54\x5d\xc1\x97\x9d\xd7\x86\x9b\xcb\x57\x74\xdf\x2d\xe0\x49\x3c\x4f\x59\x81\x6f\xf9\xe4\xe5\xc5\x25\x24\x72\xcd\x75\x94\x9c\x97\x10\xa1\x52\xf7\x11\x84\xc8\xd3\x11\x1e\x9d\x6a\x25\x8f\x0b\x1b\xb5\x36\x93\xd6\xef\x8a\x4e\x68\xf4\x93\x1b\xcc\xb9\x36\x2d\x7f\x54\xe2\x96\x06\x61\xe4\x1e\xba\x16\xf1\xaa\xa4\x15\x3f\xcd\xa4\x48\xfd\x40\x31\x2c\xd7\xd8\xca\x2f\xcb\xec\x7a\x4a\x11\x37\x01\x74\xe0\x52\x3d\x82\x7d\xf4\x72\x5a\xb8\x7e\xe3\xa9\xbc\x11\x37\x54\xa5\xe4\xf0\xfc\xf4\xd3\x0b\xd1\xd6\xc5\x8f\xb8\x0b\xda\x60\xd2\xd7\xa8\x08\x28\xf4\x43\x6e\x34\x66\xb3\x43\x3e\xba\x89\x7d\x48\xf6\x00\x0a\x19\x22\x56\x84\x59\x71\xe5\x66\x11\xe9\x48\x82\xc8\xc4\x50\xd7\xd9\x3d\x74\xbd\x7f\xf1\xe2\x05\x86\x14\x5e\xfc\xf5\xaf\x7f\x25\xd0\x75\x31\x65\x09\xcf\x17\x6f\x84\xbb\xfe\xfc\xf2\xe5\x80\xfc\xfd\xf0\xed\x1b\x42\x13\xb0\xc0\x10\x52\x15\x47\x86\xb5\x8b\x7f\xac\x7b\xe4\xff\x5e\xbe\x3b\xab\xda\xbd\xd7\xbf\x05\xd6\xc8\xfd\xeb\x0d\xc8\x71\x94\x7e\x1e\xbb\xfc\xa9\x99\x40\x4a\xbe\x90\x86\xd0\xd1\x08\x98\x13\x45\x32\xd7\x5e\x5c\x78\x5c\x34\x3e\x9e\xf8\x6e\xdd\x96\xad\x32\xc8\x8b\xe7\x76\x8a\x10\x62\xf1\x50\x82\x98\xe6\x0f\x63\x85\xd3\x01\xa6\xd2\x23\x19\xbf\x66\x64\xa4\xa1\x67\x77\xd5\x44\x43\x31\x6d\xed\xa7\x84\x0a\x3b\x3a\x0e\x16\xa6\x6e\x27\xf1\xb4\x73\x17\x5a\x76\x77\xae\x31\xac\x6f\x0c\xe7\xeb\x92\x50\x9e\x58\xb2\x3f\xd5\x5c\x82\xba\xbe\x18\xde\x07\xb9\xc8\x41\xf1\x05\xb1\x49\x68\x26\xc5\x38\x66\xba\x4a\x8f\xf0\x09\x88\xb3\x82\x35\x25\x46\x47\xdd\x54\xba\xe9\x4d\x86\x92\xfb\x2d\x6d\xd9\xdf\xbf\x1e\x5a\x8d\xa0\x10\xe9\x50\x96\xc6\xa7\xbc\xe1\x93\x00\x02\x0b\x30\x12\x91\xe0\xad\x1e\xdc\x59\x63\x9a\xee\x5a\xbd\x75\xd4\x67\xa9\x7e\x10\xd7\x94\xcd\x1e\x61\x34\x99\x90\x6b\x36\xeb\xa3\x88\x2f\x28\xa0\x1f\x00\x9d\x8f\x2d\x75\xb1\xbf\x50\x3d\xa3\x20\x61\xa9\xb5\x03\xdd\x22\xf8\xcc\xc4\x8a\xeb\x03\x7a\x82\x37\x95\xb4\xd3\xa8\x5d\xdf\x22\x11\x39\x0e\x7d\xa3\xc2\x44\x0a\xe3\x9a\x20\x86\x46\x45\x90\x69\x39\x57\x61\x6f\x25\x0a\x4b\xed\xcf\xf4\x5d\x4f\xae\xd2\x31\xed\x91\xe1\x94\x89\x52\x2c\xfc\x1a\x90\xc0\x21\xef\x55\x33\x87\xe7\x43\x7d\x03\xbc\x28\xa5\x73\xc2\x13\xa8\xaa\xb1\xb7\xbb\x7b\x3d\x95\x02\x21\x6a\x08\x00\x9a\x99\xd2\x91\x06\x72\x69\xed\xb3\x99\xd6\x84\xc3\x1b\xe6\x54\x5d\x33\x0f\x66\x4b\xb3\x01\x39\xb7\x93\x0c\x38\xe5\xd8\x37\x6e\x8a\x45\x10\x56\xa6\xc4\xd0\x06\xf6\x21\xbb\x83\xc1\x2e\x9e\x85\x4b\x80\x0e\x5a\xf3\x4b\x97\x2d\xc3\x3a\x6b\x15\x56\xd7\x83\x68\xa1\xb1\x75\x9a\xb5\x0e\xa0\x3d\xa1\x04\xdc\x11\x33\xf1\xda\x02\x6d\x09\x3e\x1d\x5f\x1d\xf7\xac\xea\xb6\xed\x65\x77\x4d\x2f\x5b\x84\xc0\xeb\x57\xd7\xcd\x2e\x3b\x6c\x75\x59\x4f\x38\x76\xf2\xa7\x3a\x41\xba\xea\xbb\xd7\x79\x63\xc5\xbc\x83\xb6\x56\xfe\xba\x0d\xb9\x38\x5f\xc5\xba\x00\x45\xdb\xca\xf2\x27\x65\x4e\x9c\x8e\x40\x86\x2e\x47\x6b\x89\xac\xb4\x70\xa4\x58\x0a\xac\xdf\x8e\xe8\xa2\x57\x3c\xe9\xc8\xb0\x98\xbf\xda\x1b\x1a\xf3\x57\x9b\x64\x96\xf9\x6b\x61\x9f\x87\x33\xb5\x88\x4a\x69\x61\x89\x8c\x84\x1e\x8c\x26\x08\x83\x01\x79\xeb\xce\x5c\x64\x6e\x3a\xd4\x32\x2b\x4d\x80\x55\x58\x72\x20\xc3\xa0\xbe\x63\x23\xc2\x0d\xf9\xdb\xa2\xe3\x19\x14\x13\x3c\xb3\xba\x39\xa9\xf1\xea\x50\xd8\xb4\x4d\x46\xc5\xeb\x0f\x96\x92\x8a\x57\x87\xab\xe0\xf5\xc2\x8e\x57\xe2\xd2\x61\x4a\xfa\x3a\xc0\x9a\xf6\x0a\x69\xa9\x46\xa3\x6a\xec\x15\x51\x6c\x78\xd8\x14\x6d\xb9\xba\xda\x3b\x5e\xdd\xeb\x38\x6f\xe0\xe1\xf9\xe9\xa3\x5b\x99\xd1\xb3\xb6\x76\xe6\x4a\xd7\x12\x87\x2f\x00\x11\x78\x27\xd0\x71\x45\x51\x17\x60\xb3\xf2\xf7\x0f\x60\xae\x2c\xbc\xf8\x6b\x7b\xee\x44\x41\xa9\xb9\x96\x0f\xe8\xc1\xad\x4e\xa8\xa8\x4d\x84\x4f\x97\x01\x69\xf6\xfc\x4d\x9b\x0d\x35\x48\x80\xfa\x2d\xea\x5e\xe6\xaf\xf9\xc4\x52\x47\x44\x72\x09\xbd\xf6\xd1\x7b\x12\xb9\x61\x0a\x99\xbe\xc2\xa6\xcd\x54\x08\x69\xb0\xc7\x7c\x0f\x9b\xf5\xeb\x1e\xba\x57\xac\x92\x19\x25\x5a\xa9\x28\x84\xd9\xb1\x5a\xd9\x19\xf3\x90\xce\x19\x88\x00\x13\x01\xed\xce\xbb\xe1\x24\xf2\x08\xdc\x64\xaf\x4a\x2b\xe9\xb2\xaf\x7a\x3d\xdc\x88\xe3\x7b\x26\xd2\xc9\x84\xe5\x14\x1b\x5c\x78\x02\x59\x79\x7d\xa3\xb8\x31\x0c\xf1\xaf\x99\xca\x35\x91\xa3\x9e\x37\x91\x10\xf5\x64\xfa\x72\xa7\xbb\xfe\xf4\x8f\x60\x2b\x13\xbf\x43\x9b\xc2\x57\xdd\x76\xd5\x7d\xff\x35\x3b\xc2\xee\x4e\x30\x98\x33\xe8\xb8\x23\xe6\x9c\x90\x56\x89\x98\x22\xfd\x37\x9a\x74\x9b\xe7\x66\xe8\x05\x65\x74\xeb\x66\xd8\xba\x19\xba\x18\xf1\xd1\xdc\x0c\xd1\xc1\xed\x85\xa9\x5b\x80\xd8\xf5\x10\xe3\xbf\x7b\xff\x43\x85\xeb\x10\x61\x19\x5b\x96\xf7\x9e\x07\xa9\xea\xfe\xff\xdd\xc1\x60\x77\xd7\xfb\x23\xdc\xfe\x28\xcd\xa8\xff\x35\x61\x22\x91\x29\x32\x95\x1d\x5f\x69\x03\x4a\x6d\x65\x80\xc7\x73\xc9\xfd\xb3\xe2\x18\x02\x8c\xdd\x2d\x4b\x74\x28\xa1\x7c\xce\xc8\xeb\x47\x55\xc1\x2a\xc5\x2b\xc0\x57\x39\x02\x06\x94\x3f\xa7\x81\x55\x39\x2c\x19\xcf\xb9\xc3\xd5\xb3\xe2\x82\x69\xa3\xc9\x1e\x7e\x38\x48\x8a\xb2\xe7\x6e\x18\xe4\x2c\x97\x6a\xd6\x0b\x37\xd9\x2f\x6b\xbf\x72\x77\xec\x83\xd6\x96\x94\x4a\x31\x61\xb2\xd9\x1f\x57\x7f\xf3\x24\xde\x60\xf5\x2d\x70\x45\x9b\x12\x8b\x65\xd7\x5c\xd9\x45\x00\xb6\x07\x47\x5d\xa0\x36\x9c\x43\xae\xd8\xa1\x17\xdc\x47\xf0\x29\x13\x53\x32\xa5\xaa\x71\xb1\xc3\xb2\xeb\x51\x34\xb6\x94\x4f\xb9\x96\x8d\xcb\xc5\x96\x0e\xb9\xe8\xfd\xe2\xae\x11\x80\x2c\x4d\x51\x1a\x77\xba\xf8\xbd\xed\xa1\xe6\xc2\x9e\x9e\x53\x7c\x5f\xee\x74\x38\xb9\x82\x1a\xc3\x94\x78\x45\xfe\x7b\xef\xc3\xe7\xbf\xf7\xf7\xbf\xdb\xdb\xfb\xe5\x45\xff\x3f\x7f\xfd\x7c\xef\xc3\x00\xfe\xe3\xb3\xfd\xef\xf6\x7f\xf7\x7f\x7c\xbe\xbf\xbf\xb7\xf7\xcb\x8f\x6f\x7f\xb8\x3a\x3f\xf9\x95\xef\xff\xfe\x8b\x28\xf3\x6b\xfc\xeb\xf7\xbd\x5f\xd8\xc9\xaf\x2b\x0e\xb2\xbf\xff\xdd\x7f\x74\xf8\x12\x54\xcc\xde\x75\x26\x82\xf1\xea\x3f\x8a\x1a\x51\x1f\xbb\x63\xd6\x25\xe4\x63\xbf\x72\x5e\xf7\xb9\x30\x7d\xa9\xfa\xf8\x90\x57\xc4\xa8\xb2\x2b\xd1\x55\x1d\x7f\x8f\x27\x63\x2a\x25\xa6\x42\x6e\xf4\x86\xcd\x06\x0a\x11\xcc\x1c\x7d\x74\x6f\xb0\x6b\x97\xba\x75\x04\xaf\x72\x3d\x4a\xc2\x91\x43\x86\xf9\x83\x67\x1b\x5d\xba\x8e\xbc\xdb\x54\xa3\x85\x6b\x9b\x6a\xb4\x78\x6d\x53\x8d\x1e\x78\x6d\x53\x8d\x36\xd0\x07\xb8\x4d\x35\xda\xfa\x00\x9f\x88\x0f\x70\x9b\x6a\xb4\xea\xb5\x4d\x35\x6a\x7c\x3d\xcd\x54\x23\xa7\xc0\x57\x79\x46\x1b\x9b\x66\xe4\x1a\xfc\x1f\x26\x89\x2c\x85\xb9\x92\xd7\xac\x65\x54\x76\x25\x03\x73\xe1\x99\x9b\x69\x6d\x76\xa5\x52\x76\xa0\x02\x76\xa7\xfc\xd1\x32\xe5\xd6\xcc\xec\x78\x1b\x1c\xba\x61\xbd\x9d\x69\x8f\x45\x91\xb2\x34\x3c\xcf\x0b\x2b\x63\xd7\x7b\x40\x0e\x89\x62\x09\x2f\xb8\x15\xed\x00\xa6\x03\x9f\xe3\x3e\x09\xfd\x80\xb9\xd1\x2c\x1b\xb9\x9e\xa8\xa2\xaa\x19\x56\x91\x09\xe9\xce\x8a\xa5\x8f\x41\xad\x40\xfa\x36\x96\x44\x4f\x64\x99\xa5\x44\xb1\x7f\x79\x75\xc2\xcd\xe6\x2a\x1e\x21\x76\x84\xc2\xab\x54\x8f\x75\x83\xd3\x82\x3b\xd4\xad\x4d\x12\x70\xec\x63\xc1\x15\x6c\xb6\x4b\x96\x48\x91\x76\xed\xde\x38\x99\x1f\xdf\xaf\xb5\x8b\xe6\xb0\x94\xa4\x25\xde\x00\x85\x90\x34\xe3\x29\x37\xb3\x90\x85\x81\xdb\xde\x2a\xa2\xd8\x85\xd6\x31\x82\xae\x16\x82\xd0\xa2\x50\x92\x26\x13\xa6\xa3\xb7\x41\xb5\xd2\x81\x4d\x84\xfa\xca\xac\x1c\x73\x81\x9a\x25\xfc\xc6\xaa\x21\xd9\x8c\x28\x69\x7c\x42\xd9\x2d\x0f\xbc\x8a\x06\x83\x9f\xa3\x2e\x61\xd4\x0c\xb2\xce\x64\x3c\x04\xce\x8a\x8f\xe2\x3f\x34\x91\x59\xea\x71\x4b\xbf\x7e\x61\x55\xf9\xc4\x71\xb1\x95\xf6\x80\x2a\x69\x24\xc9\xac\x5a\x64\x4f\x80\xdb\x7f\xfc\xc5\x57\x64\x22\x4b\xa5\x07\x31\x84\xc0\x4b\xf8\x0c\x9d\x14\xde\x14\x30\x24\x63\x54\x1b\xf2\xf2\x05\xc9\xb9\x28\xed\x59\xde\x11\xe3\x75\xa5\xbd\x46\x7a\xeb\x5f\xbe\x6a\x39\x5a\x37\x1a\xeb\x62\x06\x8b\xe3\xd6\x02\xfb\xb3\x39\xc5\xd5\xed\x71\x04\xc5\xc0\x1e\x8d\x73\x6a\xac\x3b\x92\xe2\x55\x14\x46\xae\x79\xe7\xff\x56\xca\xe1\xcc\xb4\x87\x81\xf9\x2f\x1c\xa7\x8e\xff\xe2\x3f\x5c\x05\x4b\xb5\x82\x52\x6d\x30\x95\xb5\x77\x8b\x1e\x73\x6d\x1a\xf5\x8a\xae\x70\x63\x1a\xfc\xb8\xed\x61\x3e\xb6\x16\x6f\x27\x45\xeb\x60\x3b\x7b\x5b\xcd\x3b\x95\x93\x84\x69\x10\x45\x1e\x3e\x0d\xfc\xb3\xf8\xd4\x86\x0f\xdd\x2c\xc4\x96\x3b\x11\x59\x3c\xf3\x77\xd0\x19\xb3\x15\xb1\xda\xe8\xf6\x9e\xb1\x3b\xa2\x16\x0e\x56\x97\x11\x9a\x8b\x31\x36\xb2\xcc\xcb\xcc\xf0\x22\xab\x28\x17\x7e\xe0\x0e\xe0\xd8\xe1\x4f\x23\x0f\x33\x45\xe0\x28\x84\x06\x87\xe0\xc8\x5e\x18\x8b\x09\x83\xfd\x18\x95\x3d\xc7\x0b\xaa\x68\x20\x7f\x22\xf3\x9c\xea\x7d\x17\x3b\xa0\x90\xbb\x82\x92\xdd\x1e\xc3\x8a\x66\xe1\xf5\xe3\x5c\x81\x75\x31\xae\x61\x82\x8a\xc6\x41\xbb\xba\xc3\x05\x86\x22\xf2\x26\xa4\xc7\x63\xff\xf4\x39\x8e\x75\x0a\xf1\xf7\x34\xb9\x66\x22\x25\xef\xb5\x27\x5c\x3a\x13\x34\x77\xe0\xea\x85\x92\xd8\xb7\x9b\xa5\x73\xbf\xd7\x3d\xe7\x48\x44\x94\x11\x0f\x02\x85\xfa\xd6\xba\xa8\x58\xea\x8e\xd0\x75\xdf\x6b\xab\x7c\xdd\x2d\xef\x34\x3a\x69\x15\x9f\x26\xcc\xeb\x8e\x76\x02\xeb\x7a\xf9\x69\x63\xc4\x37\xb2\x1c\x87\xc9\x35\xcd\xc4\x5d\x08\x47\x7a\x08\x3e\x02\x8e\x3a\xcd\xac\x88\x9b\x05\x78\x9d\x39\x06\x1b\xce\xd6\xd7\xb2\x5f\x0d\xdb\x03\x34\xed\x5e\x7c\x7f\x5c\x17\x66\x17\x34\x95\x9a\x7c\x9f\xc9\xe4\x9a\x1c\x33\x30\x1a\x1e\xb3\xdd\xbb\x1a\xa6\x4f\xbb\x4d\x63\x4e\xc7\xcd\xf2\x3c\xfa\x24\x97\x82\x1b\xa9\x9a\xc8\xe3\x0d\x02\xdb\xdb\xb6\xda\x5b\x0e\x22\xae\x86\xe9\xb3\x69\xb4\x67\x99\xbc\xa3\x0e\xbb\x13\x46\x14\x88\x18\x18\xd4\x77\xff\x68\x28\x30\xfe\x34\x91\x37\x7d\x23\xfb\xa5\x66\x7d\xde\x38\x4f\xa9\x35\x7d\xae\xd9\x0c\x92\xbe\x3a\xa1\xd0\x8f\x38\x58\xcd\x44\x37\x12\x3c\xe7\xf0\xb9\x55\xe4\x2e\xbe\x3f\xb6\xa7\xf7\x20\x36\x4b\x0e\x98\x49\x0e\x12\x56\x4c\x0e\xdc\x74\x9e\x3c\x59\xbd\x7c\xec\x86\xae\x87\x24\x91\x59\xe6\x70\xbb\xe4\x88\x1c\xb1\x62\x12\x1e\xb1\x19\xb4\x7a\xca\xcd\xd2\x0a\x29\xbb\x69\xac\x14\x89\x08\x3b\xa6\x93\x10\x11\xa3\xab\xe1\xc3\x7a\x41\x6f\x22\x6b\x7f\xc2\x9e\x24\x4d\x7a\xcb\x6d\x04\x79\x37\xa7\x47\xdd\xee\xa5\x1f\x0e\xfc\x3f\x51\xb8\xb9\xde\x92\xce\xe7\x8b\xd6\x44\xf4\xe9\x08\x2d\xcc\x94\xa5\x44\x4e\x99\x52\x3c\x65\x9a\x04\x19\x1d\x3b\x96\x78\xb6\x19\x94\xdf\x76\xc7\x7b\x5a\xf9\x01\x9b\xe3\x53\x88\x84\xb7\x1d\x73\x51\x78\xd3\x34\xe7\x62\x33\xb8\xbc\x21\xbd\x74\x42\x33\x76\xfa\xae\xb5\xe9\x7d\x89\xe3\xd4\xad\x6f\xff\x61\x04\xb2\x7f\x0f\xf0\xfc\x8f\x81\x67\x89\x90\x69\xb3\x68\xd8\x9a\x6d\xe8\x31\x35\xec\xa6\xa1\xe2\xd3\xaf\x44\x7d\xd3\xdf\x83\xe5\xf5\xb4\x6d\xf0\x35\x35\xc8\x88\xf6\x35\xa2\xde\xaf\x4b\x9d\x72\x1c\xd4\x8d\x6b\xd9\x93\x62\xae\xbf\x98\xdf\x9a\x87\xe7\xa7\xe4\x07\x7c\xde\xfa\x3a\x7e\x28\x69\xd0\x92\x39\x96\x39\xe5\x1d\x35\x62\x8f\x1a\x3a\xc5\x2f\x7c\x1e\x1e\x46\xf0\x69\x71\x17\xfa\x11\x1f\x97\x8a\xa5\xc4\x79\x3f\xb6\x6d\x0c\x36\xb8\x8d\x41\xb7\x4a\x71\xa5\x13\x47\x1e\x73\x5f\x19\x53\xe9\xc1\x9e\x8b\x40\x1d\x08\x29\x48\x44\x33\xa1\x39\x64\x1d\x44\x89\x71\xa0\x2c\x43\xfe\x77\x28\x83\x41\xc5\xb9\x47\xde\xc8\x31\x17\x5e\x3a\x49\x97\xec\x32\xa2\x3c\x6b\x47\xce\xad\xa6\xfb\x07\xd3\x74\xb5\xce\x4e\x04\x1d\x66\xcd\x33\x19\xeb\x07\x6f\x46\x21\x4f\x8a\xc1\x98\x07\x29\xd7\xf6\x5f\x72\x79\xf9\x06\x62\xb3\xa5\xf0\x96\x21\x44\x1d\xdd\xb1\x11\xea\x8b\x51\xb8\xac\x4f\x1e\xa0\xcc\xee\xac\x4f\xc5\xa9\x48\xed\xeb\x32\x5d\x4b\x00\x76\x4f\xc1\x2e\x20\xa1\x7a\x0d\xb3\x0f\x87\x8c\x5c\x4d\x78\x72\x7d\x1e\x85\x60\xa5\xb2\x9f\x89\xe8\xa3\x9a\xa2\x31\xff\xdd\xba\x0e\x1c\xf7\x5a\xe7\x5d\xb9\xbd\xae\xa2\x13\xf7\xd2\x91\xcc\x0e\x4e\xa8\xd6\x32\xe1\x55\xcc\x1f\x9c\xc2\xd5\x91\x9c\xc2\x91\xbc\x3e\x32\x80\x96\xf8\x28\xfa\x87\x67\x1c\xa7\xb4\x52\x1d\xeb\x1b\x5c\x78\x6a\xad\xed\xd5\x91\x95\x3b\xeb\xae\x79\x55\xeb\xa7\xe9\xad\xbe\xb9\xf0\xb3\xaf\x07\x75\x8c\xe2\xf5\x79\xd7\xc0\x79\x91\x55\x42\x5f\x4d\xd7\xdf\x63\x2d\xc4\x6a\x5e\xac\xbd\xcc\x0b\x37\x97\x7b\x83\x9f\xb9\x80\x34\x08\x95\x42\x16\x65\x86\x59\xab\xed\xdb\x8a\xfa\x68\x1e\x3e\x67\x0d\x01\xea\x4d\x6b\x46\xf4\xd0\x72\xbe\xe7\xd1\x97\x28\x32\x08\x5e\xfc\xe5\xab\xaf\x9e\x7a\xa7\xa2\x76\x8e\xb3\x75\xb7\x2a\x6a\x15\xea\xda\xa2\x14\x6c\x51\x0a\xee\xba\xd6\x1e\x89\xfd\xf4\x38\x04\x9d\x14\x89\x75\x51\x20\xd6\x16\x69\xa0\x65\x71\x59\x37\x85\x65\xad\xb1\x04\x1e\x15\x41\xa0\xa3\x1a\xab\xf6\x68\x01\x5b\x8c\x80\x3f\x06\x46\x40\x77\xb5\x55\x5d\xe1\x01\xb4\xaf\xa9\x7a\xfe\xb5\xff\xad\xc5\x44\xdb\x0a\xf3\x87\xd7\x95\x77\xd5\xbf\xa2\x2b\x3f\x7b\x67\x8e\x81\x9a\x57\xd7\xd9\xbb\x9e\x33\x30\xf3\xba\x42\x7c\x37\xd2\x0a\x8d\x35\x5a\xbb\xa4\xb5\xb3\x00\xa7\x22\x1b\x9d\xc1\x75\xae\xc1\x91\xde\x5d\xce\x85\xd8\xc3\xc7\x9b\x1f\x59\xdf\x86\x98\xb7\x6d\xd4\xb7\xf1\xc7\x70\xdd\x12\x7f\xd4\x35\x8c\x57\xef\x11\x04\x49\x08\x2a\x98\x1c\xc6\x7d\x54\xaa\xfd\x7f\x78\x7e\x4a\x12\xc5\x00\xd2\x80\x66\x7a\x40\x96\x68\x68\x3e\x52\xe3\x34\x3a\xaf\x99\x51\x63\x58\x5e\x98\xb6\x0c\xb7\x0d\x3f\xfe\xc1\xc2\x8f\x1d\xc7\x0c\x7e\x0a\xc3\x79\x6f\xd1\xa4\xcc\xa9\xe8\x5b\x69\x01\x81\xc8\x5a\x3e\xc7\xdc\xc1\x37\x20\xbe\x06\x0e\xa9\x49\x15\x43\x70\xf3\x52\xf0\xdf\x4a\x56\xf9\x17\x82\x7a\xb1\x01\xa1\x16\x98\x47\xc7\xb4\x43\xd5\x69\x4e\x8a\x24\x72\xa1\x94\xc9\x11\x24\xd0\xd1\x0b\x8c\x48\xff\xaa\xf9\xca\xcc\x84\xa1\x9a\x76\x0e\xe0\x00\xd5\x5d\x75\xfb\x0e\x0d\x3c\x9a\x65\xf2\x06\x9f\x1d\x2b\x1e\x76\xfd\xec\x5c\x1c\x1e\xc7\x90\x91\x9c\x2b\x25\x95\x0b\xf1\xc4\xd3\xc1\xb4\x1c\x6b\x27\x32\x85\x06\x97\x72\x59\x15\x97\xcc\xc4\xac\x62\x24\xa1\x02\x0b\x17\xed\x7f\xfb\xa4\x64\xec\x7f\xe6\xe4\xdd\x90\x4d\xe8\x94\xcb\x52\xe1\xaf\x8d\x24\x3b\xee\x2b\x38\x72\x67\xb2\x0c\x6e\xee\x12\xea\x94\xc2\xdb\xe9\x25\x74\x3a\xab\xbe\x04\x03\x35\x95\xde\x7f\xd8\x67\x1f\xb9\x36\x8b\xef\xe2\x49\xe4\x1b\x24\xac\x83\xf3\xa6\xba\xb0\x07\xec\x4f\x8d\x6b\x4e\xeb\xfc\x16\x8f\x56\x57\x49\xa7\x97\xf0\xd5\x7d\x0a\xa9\x43\x6a\xc1\x52\x71\x5f\x14\xf6\xf4\xd2\x3d\xf1\x2d\x1b\x76\x66\xda\x6a\xc4\x4f\x45\x23\x0e\x09\x12\x19\x4f\x66\xa7\xc7\xdd\xe8\x7c\x21\x31\xc2\x0e\x4a\xbe\xa7\x9a\xa5\xe4\x2d\x15\x74\x8c\xce\x91\xbd\xcb\xf3\xef\xdf\xee\x5b\x26\x01\xe7\xcb\xe9\xf1\xd2\xec\x89\xcb\x78\x66\x67\xeb\x2a\xdf\x26\xf3\x34\xea\x4c\x2b\x78\x20\x95\xd6\x56\xc0\x4e\xc2\xc9\xde\xa6\x65\xd7\x22\xb8\x11\xa6\x43\x78\xa4\x32\x3d\x2f\x5e\xa7\x79\x7a\xfd\x98\xaf\x1b\xf9\xaa\xef\x7a\xa7\xd5\x02\x4d\x2b\x04\x93\xe6\xd6\x5e\x51\xc3\xc6\xb3\x63\x56\x64\x72\x66\x97\xfb\x3c\x72\x9d\xe3\xad\x43\x3c\xea\xd5\x90\x26\x44\x95\x19\xc3\xee\x35\xf3\x10\x61\x82\xb1\xb4\x92\x53\x5c\x68\x43\x01\x20\x0c\xc7\xbf\x73\x46\x2b\x1f\x30\xab\x1e\x25\x7d\x9c\xe7\xbd\x77\xd5\xe1\x14\xed\x86\xba\xf3\x27\xab\x1f\x26\xf0\xf8\xfb\x39\xf4\x21\xc1\xc3\x95\xc3\x84\x75\x06\x87\x3d\x7d\x51\x66\xf6\xe8\xc8\xd2\xb9\x26\xa2\xa0\x5b\xb9\x35\x46\x64\x06\x90\x00\x76\xf6\x3d\x32\x2c\xad\xe2\xc5\x74\xcd\xbf\xbc\x08\x4b\x79\x33\xc1\xb8\xb1\xfd\x11\xa1\x45\x91\x71\xcc\xeb\x95\xca\x05\x7f\x23\x6f\xe3\xe2\x6d\xab\x08\x92\x07\xea\x1f\x0f\xd3\x37\xfa\x64\xca\xd4\x70\x15\x4c\x85\x87\xaa\x12\xb4\xe0\x10\x3b\x59\x59\xf3\xa8\x83\x42\x9e\x9f\xe2\xaf\xbd\xa5\x16\x9b\x66\xfe\x4b\x5c\x41\xb7\x36\x1e\x50\xd0\x75\xa5\x41\x6b\x23\xa0\x02\x1d\x9e\x9f\x22\x0c\x95\x03\x06\xaa\x5c\x16\x56\xb7\xa7\x98\x1c\x58\xa1\x11\xd2\xb1\x1d\xd1\x10\x29\xc2\x43\x99\x28\x73\x86\x60\x42\x55\x3b\x2b\x6b\xf0\x89\x59\x35\x7a\xe5\xf1\xb0\xf6\xc9\xea\xea\xc4\xc3\xc3\xe8\x0f\x0c\x9b\x3f\xf8\xe4\x11\x52\x5c\xb8\xd7\x7c\x7f\xf1\xa6\xd9\x22\x9e\xd5\xc7\x70\xe0\x31\x0c\x70\xf2\x0a\xaa\x0c\xa7\x19\x29\x55\xe6\xc3\x70\x98\xf4\xee\xd2\xd2\x26\x74\x1a\x01\xec\x0c\x08\xf9\x0c\x57\xce\x11\x16\xf7\x27\xb6\x77\xc5\x95\x1f\x95\x59\xd6\x23\x23\x2e\xa8\x15\xbb\xac\x20\x71\x38\xe8\x92\x8b\xc4\x9a\x5f\xd6\xd6\x77\xfd\x5a\x60\x46\xde\x28\x0b\x9b\x14\xa2\x8c\x10\x2d\x65\x59\x0a\xa0\x8b\xf0\x08\xbb\x61\x13\x70\x11\x58\xab\xf1\x28\x2b\xb5\x61\xea\x42\xda\xc3\x20\xca\x6b\x01\x38\x0a\x1a\x7f\xfd\x3d\x17\x29\xa4\x30\x5d\xc0\xc1\x91\x50\x41\x18\x07\xe7\x8b\x1d\x12\xe2\xd4\x96\x77\x2a\x86\xda\xd3\x65\x32\xb1\xaf\xb4\x53\xc8\x54\xef\x58\x31\xb2\x83\x2e\x3a\xbd\xb3\x6f\xff\x9a\x7f\x07\x4c\x53\x89\x7e\x77\x40\x0b\xbe\xb3\xdf\x23\x40\x20\x08\x9c\x49\x33\x79\xba\x7c\xe8\xdf\x15\x6c\xe2\x46\x5c\x78\x11\x8f\x00\x3c\x28\xaa\xee\x5f\x37\x13\x6e\x58\x68\xbe\x8d\x9e\x9d\x80\xaf\x32\x2f\xac\x09\x39\x14\x84\xe5\x85\x01\x6f\x31\xc9\x19\xf5\x21\x64\x36\x65\x6a\x66\x6d\x72\x00\xa2\x78\xf2\x9b\x3f\xf0\x63\x2b\x82\xcf\x75\x36\xaf\x98\x1c\x76\xd8\x02\x71\x77\x3f\xdb\xad\xd9\xf9\x59\x16\x49\xf3\x27\x4b\x4a\x38\x5e\x1b\x91\xf1\x27\xfb\xcb\x3a\x09\xf1\x23\x94\x96\x41\x7e\xbc\x79\xe3\x02\x19\x48\xab\x1f\xb9\x48\x51\x45\x3d\x34\x46\xf1\x61\x69\xd8\x05\xb3\x13\x4e\x30\xe5\xc1\x77\xe1\x73\xd9\xd1\x6e\x25\x96\x92\x1f\xe6\xfe\x14\x49\xbf\xa8\xd8\xae\xaa\x8c\xde\x31\xbc\xd7\xe5\x6f\x1b\xea\xce\x01\x9c\x41\xf0\x56\xa6\xcb\x37\xd5\x5c\x65\x48\x75\xb3\x53\x55\xa2\xce\x96\x7e\x2c\xa7\xc4\xce\x8a\xa5\x9a\xfe\xdd\xcb\x71\x07\xe9\x6f\x9b\x49\xe5\x1b\x00\x09\x1a\x7d\x73\x35\x2b\x98\x43\xda\x26\xa3\x8c\x8e\x2b\x36\x02\x79\x88\xea\xd3\xd1\xe5\x4f\xfe\x15\x34\xe1\xcb\x15\xd9\x7b\x35\xdd\xfb\x74\xdb\x7e\x45\xa5\x5b\xef\xb0\x0f\x59\xfa\xe5\xfd\x0a\x6e\x18\xfc\x76\x6e\x5a\x25\xec\x67\xee\x74\xa9\xdd\x46\xff\x2b\x87\xf0\x45\x23\x4e\xf0\x00\x62\xde\xdc\x84\x4c\x24\xd0\x50\x2e\x7f\xaa\xb1\xc9\x3d\xf3\xbd\x85\x69\xaf\xd9\xec\x46\xaa\xe5\x68\xe0\x8d\xf9\xeb\xce\x27\x62\x77\xfe\x7b\x37\xc8\x5b\x5a\xd8\xd7\xae\xf2\x3c\x51\xe0\xb9\xa8\x23\x5a\x05\x98\xa1\xe5\xb3\xe2\xa4\x1a\x53\xc1\xff\x8d\xc9\xb1\x89\xdd\xc7\x52\xd9\x3f\xf7\x30\x72\x81\x16\x7d\xc6\x12\xb3\xef\xf8\x6f\xa9\xdc\xbb\x87\x41\x69\x9a\x72\xd4\x2b\xce\xef\xe1\xa5\xbb\x89\xc0\xc5\xf5\x63\xd0\xfc\x8e\x8d\x75\x3f\xef\xdf\x1d\xfa\x5c\x41\x36\x97\xea\x8e\xec\xa6\x3b\x7f\x9f\x53\xee\x3a\xba\x6e\x1c\x55\x58\x4e\x79\xd3\xd7\xc2\xab\x05\x5d\x73\x6a\x4a\xc5\xcd\xd2\x03\xe9\xee\x1f\x72\xf1\x63\x39\x64\x2e\xda\xfb\xe0\x9f\x0b\x48\xde\x3b\x3c\x3f\xed\x76\x39\x16\xe1\xa5\xdd\x04\xad\x46\x43\x4a\x41\xf3\x21\x1f\x97\xb2\xd4\xd9\x2c\x76\x57\x52\x08\x56\x5b\x73\x1f\xfd\x35\x62\xd7\x10\x2a\xa4\x98\xe5\xee\x56\x91\x64\x65\xca\x6a\x23\x42\x4c\x6f\x2a\x79\x4a\x68\x69\x64\x4e\x0d\x4f\x48\x22\xf1\xbb\xfa\x48\xa5\x66\x84\xde\xf2\xdb\xa4\xd4\x46\xe6\x24\xa7\x4a\x4f\x68\x96\xdd\xb6\xc6\x1d\x9c\x6a\x77\x01\x68\xf7\xe1\xfd\x6f\xfd\x72\x8a\xb3\x6e\xc8\xdf\xf7\xe0\x85\xaf\xc0\xdf\x76\x72\xad\x06\x98\xde\xce\xa5\x2b\x8c\xe1\x4a\xe2\x97\xc2\xf5\xdc\xb3\x30\xf7\x51\xe7\xae\x9d\x7b\xef\x7b\xdd\x21\x0d\xef\xfc\x2d\xa4\xce\xb2\xf4\x34\xa7\xe3\x15\x14\xc9\x37\xd6\x6e\xa0\x62\xe6\x7f\x86\x28\x92\xba\x47\xa4\x72\x39\x20\xa1\x27\xb7\xfb\x2a\x00\x90\x2a\xf2\x0e\xc2\x6c\x52\xb9\x64\x6a\xc7\xa5\x90\x5a\xcf\xd4\x48\xaa\xdc\xea\x75\x5c\x91\x51\x29\xd0\xb4\x70\xb9\xd7\x60\xac\x38\x2f\x0e\xcd\xb4\x0c\x3b\x10\xe2\x76\xc2\x4f\x82\x50\x4d\x6e\x58\x96\x0d\xc8\x61\x96\x39\x78\xcb\x08\x1a\xa1\x2a\x79\xae\x32\x04\x86\x33\x92\xf2\x31\xd3\x86\xec\x5d\xfe\xed\x70\x1f\x4e\x6d\xf0\x70\xcc\x88\xa1\xbe\x4e\xac\xee\xb9\x81\xf3\x3f\x2d\x41\x4f\x48\xa8\xa1\x99\x1c\x63\x90\x1c\x3c\xb8\x22\x25\x45\x46\x67\x00\x52\x5f\x50\x05\x89\xa2\x09\x7a\x6f\x88\x2a\x05\xc0\xf3\x7e\xd2\x13\xe7\x7e\x51\x70\x17\x82\x6e\x1f\x78\xb2\xe1\x56\xbf\x07\xb5\xf4\x71\x8f\x32\xc5\x8a\x8c\xde\xe2\x6f\xb8\xa3\xec\xd7\xaa\xb9\x60\xc2\x4a\xc1\xc2\x18\x03\x72\x89\xbc\x93\x53\x93\x60\x08\xf3\x9f\x39\x33\x34\xa5\x86\x0e\xac\x2d\xf8\xcf\x7a\x61\x9a\xcc\x52\x3b\xd0\xed\x0b\x7d\xcb\x9c\x51\x5f\x5c\xde\x8c\xbd\xbe\x0b\xad\x52\x1b\x6e\x07\xfd\xdc\xef\xc7\x3b\x1d\x1c\x2d\xe5\x13\xbc\xfe\xc9\x47\x6b\x8a\xdd\x19\x5d\xab\xcd\x75\xfe\x47\x75\xff\x43\x56\x7f\x13\xc7\xad\x39\x03\x5c\xc4\x2b\xd7\xcf\xc7\x7f\x02\xce\xd5\xc3\xb3\xe3\xdb\x1d\x61\xf7\xbb\x0c\xee\x71\x11\xd4\x43\x06\x77\x4c\xcf\xbb\x9e\xdd\x37\xf5\xb8\x81\x2f\x4e\x81\xfa\x3d\x2c\xf5\xa0\x1e\x3c\xc5\xdf\x8c\x0b\x56\xaf\x3c\xc4\xdf\xdd\xee\x1f\x59\x29\x70\xb3\x4a\xb8\xe6\xbe\x42\xaf\x7e\x98\xec\xad\x37\xad\x16\xbd\xb9\xb7\x18\xab\x46\x70\x57\xed\x08\xc5\x95\x40\x79\x28\xd9\xf0\xce\xd3\x40\xec\x55\xa3\x5d\x2b\xfa\x77\xfc\xab\x3e\x60\xa2\x61\x29\x6b\x69\x44\xd7\x6c\xb6\xab\x5d\x2d\x8a\x14\x7a\xc2\x0b\xac\x16\x74\x01\x0a\xb7\xba\xe4\x27\x9a\xf1\x34\x0c\x81\x5c\x7d\x2a\x7a\xe4\x4c\x1a\xfb\xcf\xc9\x47\xae\x0d\x9a\x9f\xc7\x92\xe9\x33\x69\xe0\x93\x4e\x5e\x15\xa7\xf0\x80\x17\x75\x06\x30\xfa\xb8\x61\x5f\x45\x66\xb2\x7f\xa1\x53\x27\xf6\x3c\x51\xb8\x26\xa7\xc2\x6a\x04\xee\x8d\x42\x15\xad\x76\x43\xf8\x42\x11\x21\x45\x1f\xbc\xdf\x4b\xc7\x70\x84\x90\xaa\x46\x87\x3b\x86\x73\x43\x61\x3a\x1f\x7c\xc3\xb5\x17\xe2\xe1\xcc\xa6\xde\xed\xc6\x13\x92\x33\x35\x86\x78\x4e\x72\x4f\x3c\x63\x55\x57\xe4\x4a\x0e\xc8\x7b\xd7\x0a\x44\xe6\x9b\x5b\x1d\x17\x0b\x8b\x14\xdd\x8f\x62\x29\x47\x6f\xc6\xff\x58\xe9\x03\x94\xfa\x5f\x28\xa5\xd6\x03\x72\xe8\x9b\xa5\xc4\xdf\xb9\xb8\x56\x3c\x8c\x1d\x81\x6b\x62\x45\xc9\x94\x66\x0c\x91\xe3\xa9\x08\x55\x50\x72\xb4\x20\xd8\x7b\xae\xa4\xda\xee\xd9\xa0\x32\xed\x5c\xb3\xd9\x4e\x6f\x61\x69\x77\x4e\xc5\x4e\x55\x02\x57\x5b\xcc\x20\x44\x41\xdb\xda\x81\xef\x76\x9a\x9f\x05\x77\x0a\xcb\xd5\xdd\x2b\xf7\xae\x9b\xbe\xe6\xcb\x03\xd3\x4b\x95\x8d\x3d\xbd\x6f\x49\x08\xc1\x60\x45\x72\xa9\xc0\x9d\x69\x3f\x8d\x81\x34\xac\xaa\x7a\xcd\x8b\xa2\xc2\x1d\x29\x8b\xb1\xa2\x29\x23\x63\x45\x8b\xc9\x43\xd5\x12\xd4\x6d\x96\x0d\xff\x64\x14\xdd\x5b\x88\x7f\x87\x45\x57\x23\xbf\x37\x40\xbc\xe1\x0d\x9b\xe5\x46\xd1\xa2\x60\x8a\x50\x25\x4b\x70\xda\xe5\x53\xa6\x06\xfe\x16\x4c\xb9\x08\x7e\xe6\x44\x2a\xc5\x12\xe3\x4d\x74\x97\x15\x8c\x05\xab\x22\x85\x6a\xd4\x07\xab\x7d\x37\x6c\x38\x91\xf2\x1a\xaa\xe6\x80\x1d\x1f\xd1\x0b\xf2\x33\x3e\xeb\xb8\xfa\xcc\x1b\xb4\x9a\xa4\xcc\x50\x9e\x41\xae\xc9\xbb\x37\x6f\x5d\x36\x8a\xd7\x26\xfc\x2c\x97\x27\x76\x74\x60\x86\xd0\xd4\x65\x49\x5d\xb0\x29\x67\x37\x8e\xfe\xb7\xe5\x91\xf4\xc9\x98\x09\x48\x9e\xb8\x23\xc9\xa8\x4f\x34\x4f\xd9\x09\x14\xe3\xde\x3e\x50\x0b\xf7\xfd\x2d\x73\xbe\x4f\x84\xdc\x7d\x8e\xdc\x7b\x86\xac\x70\xd6\x07\x23\xfc\x5c\xaa\x3b\x80\x7f\x56\xab\x0d\x5e\xad\xee\xd7\x65\xa7\xbf\x22\x5f\x7d\xf5\xe5\xad\x37\xe5\xf4\x23\xcf\xcb\xfc\x15\xf9\xcb\x9f\xff\xfc\xe5\x9f\x6f\xbf\x8d\x0b\xbc\xed\xe5\xed\xef\xe7\xf6\xfc\xd1\xc5\xf1\x06\xd0\x3b\x0d\xd9\x7e\x77\x87\x06\x57\x18\x6a\x44\x79\x56\x2a\x97\x92\xba\xa2\xa1\xf2\x3a\xfe\x0d\x84\x75\xaa\x62\x0a\xea\x47\xf4\xc9\x68\x2e\x49\x6d\xc4\x05\xd3\xd0\x1a\xa5\x14\x8a\x25\x72\x2c\xf8\xbf\x59\xea\x3b\xa3\x40\xe2\x09\x00\xac\x7b\x16\x27\x4c\xa4\xd8\x93\xd2\x9e\xbc\x13\x2a\xd2\xec\xae\x84\x84\x15\xde\x34\xde\xc1\xad\x48\x06\xe7\xdf\x83\x08\xf6\xb6\xfa\xc5\x1c\xb9\xa0\xb3\xa6\x0b\x82\xe1\xb9\x8a\x64\x6b\xf5\xa6\x28\x18\x2f\xef\x30\xef\x97\xcc\x71\xc1\xfa\x44\xc3\x19\x3e\xfb\xad\x64\x6a\x06\x85\x23\x95\x79\x11\x25\xaa\x5d\x55\xb8\x02\xfe\x35\x9c\x5e\x87\x48\x2e\x73\x16\x79\xa5\x4a\x55\xe9\x28\x73\xcf\x86\xdf\x30\x0c\xe2\xfb\x70\x16\x39\x24\xa2\xcc\xb2\xdb\x6e\x15\xf2\xae\xc0\x57\x4c\xbb\x7b\x0c\xda\xd5\x2c\xcd\x55\x9d\x13\x4b\x28\xfd\x49\x5d\x14\xf1\x8b\x77\x64\x50\x6c\xb6\xd3\x22\x7e\xe1\x95\x72\x4e\x57\xcf\x37\x5d\x0d\xaf\x66\x05\x67\x06\x5e\x0f\x49\x48\x5d\x11\x65\xe6\x31\xdd\x1b\x78\x3d\x28\x7f\x68\x35\x57\xc7\x92\xa9\x6f\x9c\xc3\xa3\xc1\xcb\xaf\xe2\xfc\x58\xf2\xea\x5b\x17\xc8\x02\xc1\x57\xcd\xc9\x7a\x40\x3e\xd6\x8a\x2b\xb9\x82\x6b\x04\xaf\xad\x83\xe4\x41\x27\xd1\x0a\x82\xf9\x61\xce\x92\x95\x57\x55\x31\x2e\xa6\x12\x51\x9a\x1f\xa4\xc3\x5d\x2c\xfc\x70\x4e\x95\xbb\x01\xc9\xea\x74\xb9\xa0\xfc\xc6\x2a\xad\x35\x68\x49\xa9\xef\x77\xb9\xdf\xfd\x06\x77\xd7\xa6\x74\x62\x83\xd4\xdf\xbc\xcc\xd8\xcf\xdc\x4c\xde\x79\x34\x76\xc7\xd5\xa6\x2c\x32\x78\xd9\xe8\x0b\xcb\x42\x17\x95\x66\x78\x8a\x1d\xbc\x58\x22\xf3\x9c\x89\x14\x53\x99\x72\x7a\xcd\x48\xd5\x08\xd2\xea\x78\xa0\x06\xc3\x70\xec\x63\x41\x45\xa5\x27\x4e\xad\x2c\xbf\x8b\xa3\x56\xe4\xa7\x55\xcf\xda\x95\x8b\x3e\xee\x2e\xf6\x88\xaa\x35\x6a\x45\x1d\x64\xc8\x32\x09\x4e\x1c\xcc\x57\xc5\x5c\x6b\x77\x2b\x88\x64\xf7\xa9\x3b\xf5\x1c\xf2\x23\x13\xe3\x0a\x67\x4a\x67\xd0\xa4\xd5\x49\x60\x29\xd8\x80\x5c\x38\x15\x66\x35\xad\x68\x15\x71\xba\xa2\x28\x5d\xf9\x40\xac\xb0\x19\x1e\x4c\x59\xff\xbb\x98\xb6\x53\xff\xd9\x2a\xd4\xf5\x37\x3f\x67\xfa\x86\x4e\x09\x0f\x23\x6f\x7d\x4b\x57\xa7\x42\xa0\xed\x9c\xf0\x4a\xb0\x05\x30\xb8\xea\xfa\xe4\xe8\xe2\xe4\xf0\xea\xa4\x47\xde\x9f\x1f\xc3\xbf\xc7\x27\x6f\x4e\xec\xbf\x47\xef\xce\xce\x4e\x8e\xae\xac\x1e\xf1\x19\xe2\xc0\x5b\x33\xce\x52\xd7\x9e\x47\xb2\x2e\x2d\xa8\x98\x91\x51\x69\xac\x38\xa8\x1e\x56\x9b\x05\x45\x1f\x00\x4d\x53\x6b\x32\x3e\xb9\x35\x5c\x4e\xf0\x79\xb7\x49\xdc\xec\x02\xa1\xf3\x5d\x31\xd7\xfd\x6a\xd2\xca\x4c\xb2\x72\x55\x44\x6d\xca\x3b\x0d\xcb\x21\x3e\x08\xf2\x5a\x2a\xe2\xfa\x7c\xbd\x22\xbb\x85\x4c\xf5\xae\x2b\x3a\xb1\xff\x3d\xc0\x8f\x0e\x32\x39\xde\x0d\xb5\x28\x8c\x64\x72\x4c\x74\x39\x0c\x35\x42\x70\x9a\xc2\xdd\x9f\xf9\xdb\x6a\xa5\x15\xbd\x50\x28\x14\xfd\x2a\x0c\x5e\xfb\x4d\x7c\x43\x3c\xee\x01\x34\xf9\xaa\xdd\x69\x3f\x98\x1f\xf0\xb3\x83\xe5\x33\xf0\x8a\x13\x57\x73\xbf\xf8\x20\x2c\xbb\xde\xf0\x2c\x4d\xa8\x4a\x17\x78\x16\x0e\x37\x5c\x72\xa0\x1e\xe2\xe6\x62\x8f\xe4\x6a\x70\x07\x9e\x21\xa7\x4c\x65\xb4\xc0\x3c\x75\x00\x2e\x86\x04\x28\x78\xc8\x31\x2b\x18\xd4\x69\xf9\xae\xdd\x4c\x24\x99\x04\x9c\x0e\x3c\x19\x7b\xf5\x57\xc7\x84\x28\x0f\x4a\xe8\x8a\x7d\xaa\x1d\xb2\xb3\xb1\x62\x0e\x92\x9d\x1f\xc4\xbd\x98\x1e\x7d\x2b\xd8\x4b\xa8\x1e\x41\xa3\x31\x68\xbe\x8c\xec\xb8\x2a\xb8\x9d\x1e\xd9\x09\x78\x26\xa9\xd3\x92\x77\x3e\xdb\xa9\x6e\x88\xeb\xa8\x40\x49\x76\x81\xa9\x3e\x3c\x27\xae\xb6\x84\x05\xf6\xe1\xb3\xf0\xe8\x0a\x93\xc6\x1e\x6d\xce\x89\x05\x73\xa8\x0f\x34\xa8\x4d\x64\xe1\xa9\x55\x09\xe0\xbd\x4f\xb4\xd3\x8f\x7e\x6e\xa0\x5c\x1e\x4b\x09\x1d\x71\x54\x54\x71\x33\x20\x97\x35\xe6\x09\xe1\xbf\x18\x34\x87\x2b\x52\x50\x65\x4d\x11\x7f\x67\xbd\x5f\xd8\x67\xf7\x76\x0b\x5b\x81\x09\xa2\xf8\xca\x8a\x5a\xfb\x65\xf8\xc5\x51\x46\xb5\x5e\xe2\x79\x05\x41\x60\x07\x26\x0c\x47\x26\xd4\x07\x9f\x00\x84\x7a\x42\xa7\x77\xc0\x25\xac\x30\x69\x43\xd5\x98\x99\xbb\x23\x23\x54\xcc\xde\xdd\x09\x93\xd6\x5f\x19\x58\xb5\xbf\xda\x6e\xfa\xd8\xaf\x40\xb9\xfa\x5c\x98\xbe\x54\x7d\xfc\xc9\x2b\x62\x54\x79\x5b\x8c\xcb\xf0\x9c\xc9\xd2\x5c\xb2\x44\x8a\xe5\x75\x15\xee\xbe\xce\x42\x3d\x0f\x28\x36\x71\xd1\xc6\x43\xaf\x46\xf8\x8a\x93\xd8\xc9\x5e\xe9\x18\x3e\xc2\x58\x07\x69\x79\xf7\xe6\x6d\x9b\xc5\x26\x50\x66\x7d\xf7\x4a\xfe\xe4\xc4\xbe\x18\x87\x99\xba\x99\xdf\xf9\xb3\xb7\xa5\x79\xf8\x8f\xfe\x3f\xe6\xae\x2c\xb7\x6d\x1e\x08\xbf\xe7\x14\x7c\xfb\xff\x02\x8d\x7b\x86\xc2\x79\xeb\x82\xc2\x4e\x0f\xc0\x48\x74\x2c\xd4\x96\x0c\x52\x8a\xbb\xa0\x77\x2f\x38\x33\xa4\x4c\x99\x9b\x22\xd9\xb1\x1e\x6d\x72\xb8\x88\x43\xcd\xfa\xcd\xd2\x7a\xae\xe2\xad\x69\x33\xe2\xc0\x1c\xc1\xf5\xab\x96\xb7\xdd\xd9\x69\x70\xde\x0d\x5d\x96\x6b\x4c\x6c\x23\x99\x7e\x0d\xfd\x4e\x8d\x7c\xe7\xf8\x04\x88\x73\x0b\xed\x4c\xc8\xe4\x82\x51\x47\xcd\x9f\xad\xe4\x15\x2a\x90\xbc\x68\x3b\xc8\x9d\xe6\x2d\x85\x57\x12\xbc\xce\x9d\x6f\x19\x5e\x95\x31\xa6\x26\x16\x42\xb6\xea\x33\x57\xed\xf7\x43\xc9\x03\x39\x54\x83\xb0\x49\xd5\x02\xc3\xa0\x60\x7d\xac\x45\xa9\x6f\x78\xda\x02\xa4\xc7\x8e\xfa\xea\xed\x90\xe2\x58\x4f\x7e\xcf\x40\xba\xfb\xbd\x1e\xca\x3f\xeb\x55\xa3\xf7\xe4\xa3\xf7\x02\x72\x03\x46\x52\xb3\xd5\x9f\x13\x09\xd4\x58\x2d\x7e\xfa\x34\xee\xe9\x33\xde\x09\x5e\xfb\x83\xf6\x07\x27\x0a\xda\x8d\x3f\x43\x34\x00\x3b\x6e\x2b\x2d\xb2\x62\xae\x99\x62\x46\x84\x2a\xc5\x4e\x04\x52\xce\x26\x06\xb4\xd2\x08\x0f\x34\x40\x56\xb0\xd5\x37\xb7\x8f\x35\xe8\x93\x10\x4e\x29\x1c\xbd\xb0\x4c\xd2\x83\xd5\x9a\x86\xab\x02\xf1\xe5\x69\xd7\x14\x3f\x10\x64\x0c\xf0\x06\xaa\xdf\x42\x9a\xe8\xf7\xca\x56\xf5\xa2\xca\x53\xcf\xa6\x2a\xa6\xd9\x37\x53\x7e\x08\xa8\x68\xda\x7a\x03\x2d\xfd\x46\xf6\x96\xc5\xae\xa6\x1c\xbe\xeb\x04\xd0\x1a\x45\x05\xb2\x06\x1c\xcf\xc1\xb9\xce\x82\x81\x36\x80\x81\x48\x2a\x23\xdf\x53\x8e\xcd\x87\x4f\xe1\x7c\x94\x59\x83\x62\x63\x59\x31\xd8\x02\xb6\xaf\x2e\xa2\x50\x38\xd1\xfc\x99\x5c\xcb\x57\x22\x4f\x86\xe5\x0b\xe9\x76\xca\x39\xd4\x66\x0d\x71\x9c\xdd\xdb\x17\x4c\x46\xe8\x9f\x31\x3e\xbc\x5c\xf0\xd5\x51\x5e\xa6\x7a\x0c\x48\xa6\x0b\x6e\x62\xd5\x0e\x4a\x35\x45\x4f\xfc\xa6\x91\x41\x05\x66\xbe\xc9\xc7\xb3\xaa\x92\x84\xb4\xf4\x19\x8e\x5d\x3b\x4f\x21\xd2\xb7\x97\xed\xf2\x9e\x71\xb6\xad\x54\xdb\x48\x72\xad\x41\xf1\x30\xc9\xa1\x42\xa9\x3f\x06\x6c\x9e\x68\xb8\xa5\x9d\x02\xe3\x87\x83\xe0\xb6\xd8\x10\x7d\x9b\xa0\x5a\x90\x14\x45\x23\x4b\xef\xc4\x8c\x76\xef\x95\xa5\xbc\xc3\xcf\x90\x21\xba\xe3\xaa\x7d\xb4\x73\xd0\x02\x42\xe6\x6d\xec\x8a\x3f\xb4\xc4\x7e\x35\x06\x6e\xa6\xa9\xfb\x3f\x1b\xc6\x6b\xb4\x6a\x4c\x93\xc1\xd3\x42\x46\xbf\x36\x94\xe6\x5e\xb5\xae\xa3\x95\xdc\x4e\x96\x78\x9d\x99\xef\x85\x52\xd1\x74\xa7\x41\x90\x06\xe0\x04\x33\x8b\x13\x4c\xdd\xcd\xc7\x1e\x05\x04\x0c\xc7\x34\xa8\x60\xbf\xc2\x47\x8d\x81\x98\x80\x06\x05\xcb\x56\x93\x5e\xd9\x61\xcb\x55\xee\x62\x2c\x17\xd9\x40\xe3\x6c\x76\xc8\x9c\x8d\x14\x5c\xc5\x12\x36\x07\x7b\xfb\x24\x2b\xb1\x61\x4b\xbe\x17\xbb\x25\x57\x73\x6e\x2e\xdc\x00\x0b\x26\x16\xcf\x0b\xf6\xdf\xea\xc4\xdb\xfa\xb5\x69\xbf\xc4\x0a\x36\x24\x30\x0a\x72\x38\xfa\xa2\xbc\x3c\x59\x49\x48\x73\xee\x44\x9e\x9d\x3c\xc3\x08\x87\xde\x04\x6f\xc6\xb3\x8e\x43\xfc\xe8\x72\x62\x27\xc1\xe2\x57\xbc\x96\x23\x13\x29\x95\x21\x2e\xbc\x65\xfe\x4b\x2c\xc9\x92\x58\x7b\x4d\x26\x67\xab\x7b\x74\x34\x57\x30\xfb\x9f\x06\xd8\x61\x65\xfe\x4a\x69\x15\x6c\x4e\xb1\xe5\x6d\x53\xfe\xe9\x05\x06\xff\x8f\xc8\xe5\xf7\xf1\xaf\xf0\x54\x38\x81\x12\x1c\x2d\xfa\x04\x5c\x33\x00\xe3\xc1\x8c\x4a\xb6\x0e\xb2\x01\xd0\xb9\xd8\x50\x95\x33\x6a\xe3\x9c\x8f\xff\xa1\x8e\x9c\x78\xc1\xaa\x8d\x90\xf0\x21\x58\x2d\x94\x66\x8a\x77\x91\xe1\x33\x15\xaa\x3c\x65\x2a\xad\xe8\x26\x95\x58\x96\x7e\xb5\xa6\x51\xec\x05\xe3\x93\xab\xb3\x65\xe8\xc4\x23\x94\xb5\xb4\xc6\x33\x82\x58\x52\xfc\x1b\x49\xcf\x6f\xc0\x1d\x3e\x03\xe4\x61\xdd\x65\x05\x97\x34\x3a\x86\x0b\x7d\x03\x17\x80\x3e\x8d\x77\x37\x5d\x4f\xae\xfd\x76\x35\xbc\x03\x21\xdc\xd0\x3d\xe1\x73\x2d\xab\xeb\xaa\xf9\xf6\x3c\x89\xe3\x91\x4d\xef\x06\x40\x49\x92\x07\xe8\xb2\x70\x09\xf8\xa4\x4e\xdd\xdb\x9f\xb7\x1c\x58\xa8\xe8\x19\xbb\x10\x3e\x8c\x12\xf2\x45\x94\x8e\xa7\x8e\xb0\xe5\xdd\xdf\x4e\xfc\xb6\x3d\x7d\xda\x76\xf6\xe7\xef\xdd\xbf\x00\x00\x00\xff\xff\x12\xac\x7d\xb1\x7e\x88\x07\x00") func operatorsCoreosCom_clusterserviceversionsYamlBytes() ([]byte, error) { return bindataRead( @@ -124,7 +124,7 @@ func operatorsCoreosCom_clusterserviceversionsYaml() (*asset, error) { return a, nil } -var _operatorsCoreosCom_installplansYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5b\x4b\x8f\x23\xb7\x11\xbe\xcf\xaf\x28\x8c\x0f\x6b\x03\x2b\x8d\xed\x00\x41\xa0\xdb\x66\x1c\x07\x93\xf8\xb1\xd8\x19\xef\xc5\xf1\xa1\xd4\x5d\x52\xd3\xc3\x26\x69\x3e\xa4\x55\x0c\xff\xf7\xa0\xc8\x7e\x4a\xdd\xad\xd6\xec\x78\xbd\x08\xdc\x97\xdd\xe9\x2e\x92\xf5\xae\xaf\x48\x0a\x8d\x78\x4b\xd6\x09\xad\x56\x80\x46\xd0\x3b\x4f\x8a\xff\x72\xcb\xc7\xbf\xb9\xa5\xd0\x37\xbb\x2f\xae\x1e\x85\xca\x57\x70\x1b\x9c\xd7\xe5\x1b\x72\x3a\xd8\x8c\xbe\xa2\x8d\x50\xc2\x0b\xad\xae\x4a\xf2\x98\xa3\xc7\xd5\x15\x00\x2a\xa5\x3d\xf2\x6b\xc7\x7f\x02\x64\x5a\x79\xab\xa5\x24\xbb\xd8\x92\x5a\x3e\x86\x35\xad\x83\x90\x39\xd9\x38\x79\xbd\xf4\xee\xf3\xe5\x5f\x97\x9f\x5f\x01\x64\x96\xe2\xf0\x07\x51\x92\xf3\x58\x9a\x15\xa8\x20\xe5\x15\x80\xc2\x92\x56\x20\x94\xf3\x28\xa5\x91\xa8\xdc\x52\x1b\xb2\xe8\xb5\x75\xcb\x4c\x5b\xd2\xfc\x4f\x79\xe5\x0c\x65\xbc\xf6\xd6\xea\x60\x56\x30\x48\x93\x66\xab\x59\x44\x4f\x5b\x6d\x45\xfd\x37\xc0\x02\xb4\x2c\xe3\xff\x93\xe8\x77\x69\xd1\xd7\x12\x55\x7c\x2b\x85\xf3\xff\x3e\xfe\xf2\x8d\x70\x3e\x7e\x35\x32\x58\x94\x7d\x56\xe3\x07\x57\x68\xeb\xbf\x6b\x17\xe6\x85\x84\x49\x9f\x84\xda\x06\x89\xb6\x37\xea\x0a\xc0\x65\xda\xd0\x0a\xe2\x20\x83\x19\xe5\x57\x00\x95\xd2\xaa\x49\x16\x80\x79\x1e\x0d\x81\xf2\xb5\x15\xca\x93\xbd\xd5\x32\x94\xaa\x59\x84\x69\x72\x72\x99\x15\xc6\x47\x65\x3f\x14\x04\x1b\x61\x9d\x87\xdb\xfb\xb7\x20\x14\xf8\x82\xa2\x4c\xa0\x37\x90\xc9\xe0\x3c\xd9\x7b\xb2\x3b\x91\x51\xe5\x1b\x71\xfd\x66\x3a\x80\x9f\x9d\x56\xaf\xd1\x17\x2b\x58\xb2\xba\x97\xe3\x83\x7e\xfc\xfc\xa7\xce\xb8\x64\xc3\xdb\xfb\xb7\x9d\x77\xfe\xc0\x12\x3a\x6f\x85\xda\x4e\x71\x8c\xc6\x58\xbd\x43\x09\xa5\xce\x69\x82\x97\x9a\xee\x64\xd9\x57\xa7\x1f\x46\xd6\x1e\x9e\x32\x2a\x7f\x68\xca\xde\x87\x34\xe5\x5a\x6b\x49\x95\xb7\xd4\xc4\xbb\x2f\x50\x9a\x02\xbf\xa8\x5e\xba\xac\xa0\x12\x5b\x23\x69\x43\xea\xd5\xeb\xbb\xb7\x7f\xb9\x3f\xfa\x00\x7d\x5d\x74\x5c\x0e\x72\x8e\x42\x72\xd1\x80\x95\xe3\xc4\xe8\x61\x43\x22\x38\x8a\x16\x6d\x23\xe0\x84\x4d\xbd\xfe\x99\x32\xdf\x79\x6d\xe9\x97\x20\x2c\xe5\xdd\xd5\x59\x23\x75\x8c\x1f\xbd\x66\xed\x74\x5e\x19\xcb\x6b\xf9\x4e\x24\xa5\xa7\x93\x64\x7a\xef\x8f\x24\x7b\xc1\xe2\x27\xba\x9e\x64\x95\xc3\x53\x5e\xe9\x8c\x85\xf2\x85\x70\x60\xc9\x58\x72\xa4\x7c\x2b\xb4\xaa\x64\x5a\x02\x3b\x23\x59\xc7\x51\x17\x64\xce\x89\x68\x47\xd6\x83\xa5\x4c\x6f\x95\xf8\x6f\x33\x9b\x03\xaf\x53\x04\xa0\x27\xe7\x21\x86\x90\x42\x09\x3b\x94\x81\x5e\x02\xaa\x1c\x4a\x3c\x80\x25\x9e\x17\x82\xea\xcc\x10\x49\xdc\x12\xbe\xd5\x96\x0d\xb0\xd1\x2b\x28\xbc\x37\x6e\x75\x73\xb3\x15\xbe\x4e\xa1\x99\x2e\xcb\xa0\x84\x3f\xdc\xc4\x6c\x28\xd6\x81\xad\x71\x93\xd3\x8e\xe4\x8d\x13\xdb\x05\xda\xac\x10\x9e\x32\x1f\x2c\xdd\xa0\x11\x8b\xc8\xac\x8a\x69\x74\x59\xe6\x9f\xd8\x2a\xe9\xba\x17\x47\xea\x1b\xf4\x5f\xa8\xf3\xd6\xa4\xae\x39\x7f\x81\x70\xec\x26\x71\x78\x92\xa5\x55\x29\xbf\x62\xad\xbc\xf9\xc7\xfd\x03\xd4\x0c\x24\xb5\x27\x0d\xb7\xa4\xae\x55\x36\x2b\x4a\xa8\x0d\xd9\x44\xb9\xb1\xba\x8c\xb3\x90\xca\x8d\x16\xca\xc7\x3f\x32\x29\x48\x79\x70\x61\x5d\x0a\xef\xa2\xcf\x91\xf3\x6c\x87\x25\xdc\xc6\x0a\x02\x6b\x82\x60\x72\xf4\x94\x2f\xe1\x4e\xc1\x2d\x96\x24\x6f\xd1\xd1\xef\xae\x6a\xd6\xa8\x5b\xb0\xfa\xe6\x2b\xbb\x5b\x00\x4f\x07\x9c\xc4\x18\x40\x5d\xa2\x46\xad\xd3\x89\xf1\x7b\x43\x59\x13\x0d\x4d\x4c\xbf\x32\x46\x8a\x2c\xb9\x7d\xe3\x1d\xec\xc8\xeb\x26\x11\xf4\xb2\xd2\x24\x3b\x63\x61\x0f\xa9\xbc\x9c\xa6\xcd\xfe\xa7\x93\x85\xf8\xd3\xac\x32\x02\x13\x39\x03\x62\xde\x48\x4b\x9f\x7e\x39\xd2\x57\x9d\xda\xd9\xa1\xd9\xc3\x82\x23\xdb\x16\x0c\xa3\xa5\xc8\x0e\xb0\xd1\x96\xf3\x43\x47\xb7\x4b\xb8\xf3\x50\x06\x17\xfd\x4d\x2b\x62\xcd\x5e\xbf\x0a\x5e\x97\xe8\x45\x76\x0d\xda\xc2\xf5\xb7\xa8\x02\xca\xeb\xe5\x00\x0b\xa3\x0e\xd1\xf2\x3e\xa4\xd2\xe1\x1a\xd1\x3e\xe3\xaa\x1b\x9f\x0b\xad\xc5\xc3\xc0\x57\xe1\xa9\x1c\x1c\x76\x86\xfb\x2d\x29\x2e\x1a\x03\x19\xbb\x1d\xca\x89\x72\x4b\xf6\xe4\x7b\xf2\xc6\xf1\x71\x23\x4b\xa6\x61\x0d\xd2\xb9\x68\xbc\xf3\xe8\xc3\x89\x9c\x3d\x17\xb9\xee\xc6\x54\x24\xef\x24\xb0\xaa\x80\x6e\xb4\x2d\x53\x4c\xe1\x5a\x87\x94\xac\xd2\xd4\xec\x19\xce\x93\x71\x4d\xa8\x70\xb0\x65\xba\x34\x92\x7c\xbf\xf6\x2e\xe1\x3f\x0a\xaa\x15\x38\x1d\x7a\x8b\x42\xc6\xa9\x30\xf3\x01\x65\x9c\x91\xaa\x0a\x7d\x70\x9e\xca\xe5\xf5\xf3\x44\x6a\x86\x1e\xa5\xde\xde\xa7\x6c\x30\x40\x60\x0a\x74\x74\x49\xfc\x79\x4f\x2a\x70\x16\xae\x9c\xf1\x55\x96\xe9\xa0\xfc\x1b\xda\x9c\x0f\xc9\xf1\xb1\x60\x69\x43\x96\x54\x56\xd5\x77\x97\x08\x00\x13\x05\xf8\x02\x3d\x47\x72\x70\x49\xcd\xb9\x4e\x38\x38\x6f\xa0\x4c\xad\xf0\xf1\xa8\x1c\x54\xde\x39\x79\x61\x12\xab\x0c\x8b\xf9\xfa\xae\xc6\x27\x09\x96\x50\x2d\x9d\x1f\x62\x0e\xce\x45\x01\x3f\x1b\x41\x32\x8f\xf8\x73\x0e\x07\x2f\xee\x2a\x85\xc6\x2a\xee\x35\x20\x18\x41\x19\xf5\xe0\x50\x54\x18\x61\x5e\xbd\xe4\x82\x67\xa9\xfa\xf6\x32\xd5\xea\x0a\x06\xb4\x70\xc9\xa3\x50\x80\x8c\x0b\x44\x0e\xff\xba\xff\xfe\xbb\x9b\x7f\xea\xc4\x1b\x5b\x8a\x9c\x4b\x9e\x5c\x92\xf2\x2f\xc1\x85\xac\x00\x74\xcc\x1a\xbb\x27\xfb\x3f\x2d\x4b\x54\x62\x43\xce\x2f\xab\xd9\xc8\xba\x1f\xbf\xfc\x69\x09\x5f\x6b\x0b\xf4\x0e\x39\x78\x5e\x82\x48\x5a\x6b\x40\x45\xe5\x1a\x31\x95\xb3\x30\xcd\x58\xd8\x0b\x5f\x44\x96\x8c\xce\x2b\xa6\xf7\x91\x59\x8f\x8f\x9c\xbf\x13\xb3\x81\x7b\x99\x47\x5a\xc1\x75\x6a\x4d\x9a\xa5\x7f\x65\x18\xfe\xdb\x35\x7c\xba\x2f\xc8\x12\x5c\xf3\x9f\xd7\x69\xc1\x06\x03\xf2\xbb\xda\x8e\xed\xc2\xd1\x21\xbd\x15\xdb\x2d\xc5\xc8\x67\x40\xc3\xa0\xe1\x33\xae\x10\x62\x03\x4a\x77\x88\xe3\x14\xac\x4f\x43\x99\xd8\x08\xca\x4f\x18\xf9\xf1\xcb\x9f\xae\xe1\xd3\xbe\x5c\x20\x54\x4e\xef\xe0\xcb\xd4\x8e\x09\xc7\x32\x7e\xb6\x84\x87\x68\x99\x83\xf2\xf8\x8e\xe7\xcc\x0a\xed\x48\x81\x56\xf2\xc0\x1c\x17\xb8\x23\x70\xba\x24\xd8\x93\x94\x8b\x84\x12\x72\xd8\xe3\x81\x65\xa8\x55\xc9\x56\x45\x30\x68\xfd\x11\x42\x7e\xf8\xfe\xab\xef\x57\x69\x35\x36\xdb\x56\xf1\x12\x8c\xbe\x36\x82\xf1\x2f\x03\xdf\x84\xe2\xa2\xcd\x99\x91\x90\x8c\xc4\xa9\xaf\x40\xb5\xa5\xba\x79\xdc\x04\xc6\x53\xcb\x63\xc4\x34\xdb\xe3\x87\xe0\xea\xb0\xb3\x47\xd8\x7a\x1c\x68\x7f\x20\x28\x9c\x2d\x62\xec\x01\x67\x89\xf8\x5d\xc7\x07\x27\x45\x7c\x0c\x6b\xb2\x8a\x3c\x45\x29\x73\x9d\x39\x16\x30\x23\xe3\xdd\x8d\xde\x71\x52\xa5\xfd\xcd\x5e\xdb\x47\xa1\xb6\x0b\x76\xb2\x45\xb2\xbc\xbb\x89\xbb\x1f\x37\x9f\xc4\x7f\xde\x4b\xa2\xd1\x52\x3d\x2c\x56\x24\xff\x10\xb2\xf1\x3a\xee\xe6\xc9\xa2\xd5\x90\xfa\x92\x4a\xf0\xe2\x3e\x05\x7c\x76\x3c\x9a\xc3\x65\x5f\x88\xac\xa8\x9b\xd6\x4e\x86\x2b\x31\x4f\x29\x10\xd5\xe1\x77\x77\x63\x56\x60\xb0\xbc\xf6\x61\x51\xed\xcb\x2d\x50\xe5\xfc\x7f\x27\x9c\xe7\xf7\x4f\xd6\x58\x10\x33\x03\xf8\x87\xbb\xaf\x3e\x8c\x73\x07\xf1\xc4\x68\x5d\x07\x95\x4b\xfa\x46\xeb\xc7\x60\x06\x41\x42\x4f\xa0\xbf\x77\xa9\xeb\xfe\xa3\xea\xd2\x84\x5a\x18\xab\xb7\x96\x6b\x65\xa7\xcb\x05\x13\x64\x4a\xaf\x41\x19\xcc\x1e\x71\x4b\xd5\xa2\xb1\x8c\x70\x6f\x5c\x95\xa3\xaa\x15\x18\x87\x39\x4f\xc0\xfd\xa3\xdc\xa7\xdd\x80\x8a\xcf\x11\x36\xeb\xba\xc8\x3c\x46\x04\x5b\xf1\x7d\x9e\xdf\xb3\xc0\x6c\x0a\xdb\xa6\xe7\x08\xe1\xbe\xa1\xcd\x28\xa1\xc8\xd9\xef\x37\x62\xa0\x3d\xa9\x49\x0c\xfa\x62\xf4\xa3\x25\x23\x71\x08\x44\xc3\x0c\x08\x09\x27\x7c\x8e\xd1\x1d\x59\xe3\xf6\x68\x58\x6d\x91\x3a\x61\x54\x5a\xee\x91\xc5\x37\x95\x15\x58\x24\xd8\xa3\x8b\x19\x48\xee\x28\x8f\x1b\x30\x63\x38\x74\x86\x45\xe6\x49\x0b\xb3\x60\xf3\x80\xbc\x4f\x00\xcf\x5d\xc6\x27\xd2\x51\x7a\xce\x02\xe9\x01\x9e\xfe\x84\xd3\x7f\xc2\xe9\x8f\x1c\x4e\x5f\x14\x03\x53\xd0\x7a\xc8\xfd\x3f\x56\x80\x7d\x91\xd0\x53\x60\x7b\x48\xe8\x8f\x04\x72\x5f\x2c\xe3\x24\xfc\x1e\x13\xf4\x23\x01\xe1\x17\x09\x3b\x13\x90\x0f\x89\xfc\xff\x0c\xcb\x2f\xd2\xe1\x04\x44\x1f\xd2\xdb\x47\x01\xd4\x67\x0b\x98\x69\x95\x4e\xc1\x27\x50\x4a\x1f\x6b\x35\x03\x8e\xf7\x81\x99\x69\x94\xbd\x7d\xda\x2e\x4c\x3e\x07\xa7\xc6\x20\x79\x7a\x26\x80\x79\x77\x92\x33\x98\xec\x3c\x56\x4e\xcf\xa2\xda\xbe\x3e\x43\xc4\x6b\x4e\x90\xcc\x43\x80\x00\x12\x9d\x7f\xb0\xa8\x9c\xa8\x6f\x70\x4c\xd3\x1f\x59\xe4\x1b\xe4\xb6\x43\x94\x4d\x97\x91\xec\x03\xbe\x99\xb2\x02\xb4\xf1\xa8\xa6\xda\x97\x67\x4c\xa3\xb4\x2f\xc6\x9a\x8e\xf6\x99\x19\x25\xfc\xa4\x73\x80\x15\xe4\xe8\x69\xc1\x1c\x9d\x15\xfb\x87\x78\x58\xf9\x6c\x22\x33\x86\x37\x56\xaf\x29\xff\xc3\xa4\x2a\xc9\x39\xdc\x5e\x26\xce\x2b\x28\x42\x89\x0a\x2c\x61\x8e\x6b\x49\xf5\x24\x8c\xc6\xe2\x69\xa5\xda\x42\x4e\x1e\x85\x74\x9d\x13\x96\xd6\xbe\xcf\x26\xac\x25\x74\xe7\xaa\x04\x9c\x5e\x31\x49\xc3\xe2\x41\x61\xcf\x1e\x2f\x5c\x34\xf2\xef\xc1\xe9\xf0\xc9\xd5\x24\xa7\xf7\xcd\x89\x54\x8f\xc9\x97\xf5\x09\xe6\x83\x0d\xf4\x12\xbe\x46\xe9\xe8\x25\xfc\xa0\x1e\x95\xde\x3f\x1f\xbf\x91\xf0\x22\xbd\x1e\x4c\xe4\xaa\xe1\xf3\x19\x58\x69\xbb\xfb\x99\xc9\xfe\xae\x19\x50\xef\xd0\x54\x1d\xfa\x22\x28\xf1\x4b\xe8\x37\x2a\xcd\x21\xd3\xa7\xc7\x2d\xcc\xed\xfd\xdb\xe8\x1c\xa9\xdd\x76\xa9\x91\xa9\x5b\xbb\xdb\xfb\xb7\xee\xb3\x33\xb5\x61\x52\x2a\x33\xd9\xa8\xf6\xe4\xe1\x9e\xf6\xa8\xd5\x92\x3a\xeb\x5c\xfd\x69\xb7\x65\x4c\x90\x72\x09\x77\xfe\x85\x63\x1e\x44\x86\x52\x1e\xb8\x6b\x11\x25\x07\x66\x83\x7a\xce\x55\xb5\x69\xce\x67\x14\x88\x93\x60\xa3\xcd\x86\x32\x2f\x76\xd4\x19\x5e\x2b\x3a\x6d\x38\x51\x5e\xc9\xf1\x5e\xcc\xd5\x5b\x39\x33\x59\x7b\x53\x91\xd7\x8e\xd2\xb5\x7f\xab\xd5\x6a\xd2\xd4\x6b\x46\xa7\x51\x04\x1b\x1d\x54\x0e\xe8\xa3\x79\x9e\xc8\x73\xff\x0c\xf7\xc3\x1d\xf8\x4f\xe3\xa7\xe7\xd9\x6c\xec\x9c\xc0\x37\xe8\x6b\x0a\x7c\xb5\x49\x8e\xde\x51\x16\x3a\x77\xbc\xba\x77\x38\x9e\xb6\xd7\x78\xde\x65\x2f\x41\x33\xb3\xd2\xe7\xdc\xfa\x3b\x17\x4f\x3c\xeb\xa2\x67\xcb\xfd\xac\x48\x9b\xae\xba\xc3\xf8\xfb\x4d\x2a\xba\x71\xab\x33\xc3\x92\x64\x86\x8e\xf2\xe3\x5a\x9c\xc0\xf8\x9c\x02\x3c\x83\xd1\x73\x45\x77\xc6\x14\xd3\x75\xf0\xac\xdb\xc7\xaa\x98\xa8\xd6\xf5\x2d\x88\xa6\xdd\xe8\xf9\x37\xe7\x13\x84\x8c\x6c\x2c\x32\xe9\x12\x1d\xb2\xae\xf6\x85\x7e\x72\x66\x9c\xb0\x76\x8f\xf5\x6f\x6b\xfc\xc6\x0b\x46\x6c\xb7\x38\xc1\x76\x55\xfd\x6b\xb1\x1d\xe5\xbd\xab\x34\xb1\x48\x96\x78\x88\x57\xd3\x4a\xa3\xad\xc7\x74\xc0\x11\x54\x4e\xd6\x79\x54\x39\x8f\xdd\x17\x87\xa8\x06\xc3\x32\x17\xe8\x40\x78\x07\xa9\x2f\xf6\x95\xc1\x2e\xbe\x83\x15\xef\xbb\x9c\x15\xb2\xa3\xec\xd7\x3c\xa0\x81\x08\xbd\xc5\x53\x5d\xed\x19\x66\xd2\x0a\xd3\x8c\x49\x9c\xb8\x58\xf5\xbe\x79\xf6\xde\x93\x39\xce\xab\x1d\x21\x54\x84\xe3\x3b\x91\xa7\xcb\x48\x64\x40\xa8\xe7\x49\xaa\xe7\x0f\x70\xd2\xc1\xc4\x78\x58\x2d\x9a\x5d\x9a\x51\x82\x89\x8e\xf6\x7c\x52\x6f\xd6\x7f\xcf\x44\x37\x7e\xc7\x2d\x3d\x27\xf6\xa8\x7f\x37\x31\x61\x97\xce\x2d\xdb\x78\x8f\xd3\xdb\x0a\x03\x1d\x66\x59\x07\xe6\x6e\x1e\xcc\xd9\x3a\x58\xa4\x9f\x4f\x4c\x52\x3c\x0a\x75\x7a\xf3\xb3\x4b\xc0\xd0\x69\x92\xa0\xbd\xf2\x37\x93\x2c\x6e\x29\x4e\xd2\x56\xc7\x49\xef\x79\x9a\x95\x7e\x3b\xf2\x61\xb6\xdf\x67\x4e\x54\x1f\xfe\x3c\xcb\x64\xe7\xf7\xc7\x67\x4e\xd4\x9a\xe6\x99\xa7\x9b\xb1\xb3\x3d\x73\xce\xdd\x9c\x2d\xe3\x67\x00\x0d\x27\x21\x5f\xf5\xe9\x13\xd5\xc4\xa0\xf5\x22\x0b\x12\x6d\x1b\xfb\x31\x3d\x9f\xfc\xe2\xe8\x62\x9e\x9d\x47\xeb\xc7\xf0\xe3\xf1\x76\x42\xa2\xac\x39\x8d\xfb\x51\xfb\x82\x54\x73\x6c\x97\x7e\xc0\x05\x6b\xda\x72\xd9\x33\x46\x1e\xea\x5f\x07\xb4\x77\xcf\xa5\x70\x3e\x56\xfe\xb6\x8a\xcf\xbd\xc4\x30\xaa\xf6\x31\xf0\xea\xc8\xee\x28\x5f\x81\xb7\xa1\x79\xe5\xb5\x65\x44\xd3\x7b\x17\xd6\x0d\x7f\xad\x1a\x2a\x3b\xc2\xaf\xbf\x5d\xfd\x2f\x00\x00\xff\xff\xf9\x92\xd3\x00\xfd\x36\x00\x00") +var _operatorsCoreosCom_installplansYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5b\xdd\x6f\x1b\x37\x12\x7f\xf7\x5f\x31\x70\x1f\xd2\x02\x96\xdc\xe6\x80\xc3\x41\x6f\x39\xf7\x7a\xf0\x5d\x3f\x82\xd8\xcd\x4b\xaf\x0f\xa3\xdd\x91\x96\x35\x97\x64\xf9\x21\x47\x57\xf4\x7f\x3f\x0c\xb9\x9f\xd2\xee\x6a\xe5\x38\x69\x70\xe8\xbe\x24\xde\x1d\x92\xf3\x3d\xbf\x21\x29\x34\xe2\x2d\x59\x27\xb4\x5a\x01\x1a\x41\xef\x3c\x29\xfe\xcb\x2d\x1f\xfe\xe6\x96\x42\x5f\xef\xbe\xba\x78\x10\x2a\x5f\xc1\x4d\x70\x5e\x97\x6f\xc8\xe9\x60\x33\xfa\x9a\x36\x42\x09\x2f\xb4\xba\x28\xc9\x63\x8e\x1e\x57\x17\x00\xa8\x94\xf6\xc8\xaf\x1d\xff\x09\x90\x69\xe5\xad\x96\x92\xec\x62\x4b\x6a\xf9\x10\xd6\xb4\x0e\x42\xe6\x64\xe3\xe4\xf5\xd2\xbb\x2f\x97\x7f\x5d\xbe\xbc\x00\xc8\x2c\xc5\xe1\xf7\xa2\x24\xe7\xb1\x34\x2b\x50\x41\xca\x0b\x00\x85\x25\xad\x40\x28\xe7\x51\x4a\x23\x51\xb9\xa5\x36\x64\xd1\x6b\xeb\x96\x99\xb6\xa4\xf9\x9f\xf2\xc2\x19\xca\x78\xed\xad\xd5\xc1\xac\x60\x90\x26\xcd\x56\xb3\x88\x9e\xb6\xda\x8a\xfa\x6f\x80\x05\x68\x59\xc6\xff\x27\xd1\x6f\xd3\xa2\xaf\x25\xaa\xf8\x56\x0a\xe7\xff\x7d\xf8\xe5\x5b\xe1\x7c\xfc\x6a\x64\xb0\x28\xfb\xac\xc6\x0f\xae\xd0\xd6\x7f\xdf\x2e\xcc\x0b\x09\x93\x3e\x09\xb5\x0d\x12\x6d\x6f\xd4\x05\x80\xcb\xb4\xa1\x15\xc4\x41\x06\x33\xca\x2f\x00\x2a\xa5\x55\x93\x2c\x00\xf3\x3c\x1a\x02\xe5\x6b\x2b\x94\x27\x7b\xa3\x65\x28\x55\xb3\x08\xd3\xe4\xe4\x32\x2b\x8c\x8f\xca\xbe\x2f\x08\x36\xc2\x3a\x0f\x37\x77\x6f\x41\x28\xf0\x05\x45\x99\x40\x6f\x20\x93\xc1\x79\xb2\x77\x64\x77\x22\xa3\xca\x37\xe2\xfa\xcd\x74\x00\xbf\x38\xad\x5e\xa3\x2f\x56\xb0\x64\x75\x2f\xc7\x07\xfd\xf4\xe5\xcf\x9d\x71\xc9\x86\x37\x77\x6f\x3b\xef\xfc\x9e\x25\x74\xde\x0a\xb5\x9d\xe2\x18\x8d\xb1\x7a\x87\x12\x4a\x9d\xd3\x04\x2f\x35\xdd\xd1\xb2\xaf\x8e\x3f\x8c\xac\x3d\x3c\x65\x54\xfe\xd0\x94\xbd\x0f\x69\xca\xb5\xd6\x92\x2a\x6f\xa9\x89\x77\x5f\xa1\x34\x05\x7e\x55\xbd\x74\x59\x41\x25\xb6\x46\xd2\x86\xd4\xab\xd7\xb7\x6f\xff\x72\x77\xf0\x01\xfa\xba\xe8\xb8\x1c\xe4\x1c\x85\xe4\xa2\x01\x2b\xc7\x89\xd1\xc3\x86\x44\x70\x14\x2d\xda\x46\xc0\x11\x9b\x7a\xfd\x0b\x65\xbe\xf3\xda\xd2\xaf\x41\x58\xca\xbb\xab\xb3\x46\xea\x18\x3f\x78\xcd\xda\xe9\xbc\x32\x96\xd7\xf2\x9d\x48\x4a\x4f\x27\xc9\xf4\xde\x1f\x48\xf6\x82\xc5\x4f\x74\x3d\xc9\x2a\x87\xa7\xbc\xd2\x19\x0b\xe5\x0b\xe1\xc0\x92\xb1\xe4\x48\xf9\x56\x68\x55\xc9\xb4\x04\x76\x46\xb2\x8e\xa3\x2e\xc8\x9c\x13\xd1\x8e\xac\x07\x4b\x99\xde\x2a\xf1\xdf\x66\x36\x07\x5e\xa7\x08\x40\x4f\xce\x43\x0c\x21\x85\x12\x76\x28\x03\x5d\x01\xaa\x1c\x4a\xdc\x83\x25\x9e\x17\x82\xea\xcc\x10\x49\xdc\x12\xbe\xd3\x96\x0d\xb0\xd1\x2b\x28\xbc\x37\x6e\x75\x7d\xbd\x15\xbe\x4e\xa1\x99\x2e\xcb\xa0\x84\xdf\x5f\xc7\x6c\x28\xd6\x81\xad\x71\x9d\xd3\x8e\xe4\xb5\x13\xdb\x05\xda\xac\x10\x9e\x32\x1f\x2c\x5d\xa3\x11\x8b\xc8\xac\x8a\x69\x74\x59\xe6\x9f\xd9\x2a\xe9\xba\x17\x07\xea\x1b\xf4\x5f\xa8\xf3\xd6\xa4\xae\x39\x7f\x81\x70\xec\x26\x71\x78\x92\xa5\x55\x29\xbf\x62\xad\xbc\xf9\xc7\xdd\x3d\xd4\x0c\x24\xb5\x27\x0d\xb7\xa4\xae\x55\x36\x2b\x4a\xa8\x0d\xd9\x44\xb9\xb1\xba\x8c\xb3\x90\xca\x8d\x16\xca\xc7\x3f\x32\x29\x48\x79\x70\x61\x5d\x0a\xef\xa2\xcf\x91\xf3\x6c\x87\x25\xdc\xc4\x0a\x02\x6b\x82\x60\x72\xf4\x94\x2f\xe1\x56\xc1\x0d\x96\x24\x6f\xd0\xd1\x07\x57\x35\x6b\xd4\x2d\x58\x7d\xf3\x95\xdd\x2d\x80\xc7\x03\x8e\x62\x0c\xa0\x2e\x51\xa3\xd6\xe9\xc4\xf8\x9d\xa1\xac\x89\x86\x26\xa6\x5f\x19\x23\x45\x96\xdc\xbe\xf1\x0e\x76\xe4\x75\x93\x08\x7a\x59\x69\x92\x9d\xb1\xb0\x87\x54\x5e\x8e\xd3\x66\xff\xd3\xd1\x42\xfc\x69\x56\x19\x81\x89\x9c\x01\x31\x6f\xa4\xa5\x8f\xbf\x1c\xe8\xab\x4e\xed\xec\xd0\xec\x61\xc1\x91\x6d\x0b\x86\xd1\x52\x64\x7b\xd8\x68\xcb\xf9\xa1\xa3\xdb\x25\xdc\x7a\x28\x83\x8b\xfe\xa6\x15\xb1\x66\x2f\x5f\x05\xaf\x4b\xf4\x22\xbb\x04\x6d\xe1\xf2\x3b\x54\x01\xe5\xe5\x72\x80\x85\x51\x87\x68\x79\x1f\x52\xe9\x70\x8d\x68\x9f\x71\xd5\x8d\xcf\x85\xd6\xe2\x7e\xe0\xab\xf0\x54\x0e\x0e\x3b\xc1\xfd\x96\x14\x17\x8d\x81\x8c\xdd\x0e\xe5\x44\xb9\x25\x7b\xf4\x3d\x79\xe3\xf8\xb8\x91\x25\xd3\xb0\x06\xe9\x9c\x35\xde\x79\xf4\xe1\x48\xce\x9e\x8b\x5c\x76\x63\x2a\x92\x77\x12\x58\x55\x40\x37\xda\x96\x29\xa6\x70\xad\x43\x4a\x56\x69\x6a\xf6\x0c\xe7\xc9\xb8\x26\x54\x38\xd8\x32\x5d\x1a\x49\xbe\x5f\x7b\x97\xf0\x1f\x05\xd5\x0a\x9c\x0e\xbd\x45\x21\xe3\x54\x98\xf9\x80\x32\xce\x48\x55\x85\xde\x3b\x4f\xe5\xf2\xf2\x79\x22\x35\x43\x8f\x52\x6f\xef\x52\x36\x18\x20\x30\x05\x3a\x3a\x27\xfe\xbc\x27\x15\x38\x0b\x57\xce\xf8\x2a\xcb\x74\x50\xfe\x0d\x6d\x4e\x87\xe4\xf8\x58\xb0\xb4\x21\x4b\x2a\xab\xea\xbb\x4b\x04\x80\x89\x02\x7c\x81\x9e\x23\x39\xb8\xa4\xe6\x5c\x27\x1c\x9c\x37\x50\xa6\x56\xf8\x78\x54\x0e\x2a\xef\x94\xbc\x30\x89\x55\x86\xc5\x7c\x7d\x5b\xe3\x93\x04\x4b\xa8\x96\xce\x0f\x31\x07\xa7\xa2\x80\x9f\x8d\x20\x99\x47\xfc\x39\x87\x83\x17\xb7\x95\x42\x63\x15\xf7\x1a\x10\x8c\xa0\x8c\x7a\x70\x28\x2a\x8c\x30\xaf\x5e\x72\xc1\xb3\x54\x7d\xbb\x4a\xb5\xba\x82\x01\x2d\x5c\xf2\x28\x14\x20\xe3\x02\x91\xc3\xbf\xee\x7e\xf8\xfe\xfa\x9f\x3a\xf1\xc6\x96\x22\xe7\x92\x27\x97\xa4\xfc\x15\xb8\x90\x15\x80\x8e\x59\x63\xf7\x64\xff\xa7\x65\x89\x4a\x6c\xc8\xf9\x65\x35\x1b\x59\xf7\xd3\xcb\x9f\x97\xf0\x8d\xb6\x40\xef\x90\x83\xe7\x0a\x44\xd2\x5a\x03\x2a\x2a\xd7\x88\xa9\x9c\x85\x69\xc6\xc2\xa3\xf0\x45\x64\xc9\xe8\xbc\x62\xfa\x31\x32\xeb\xf1\x81\xf3\x77\x62\x36\x70\x2f\xf3\x40\x2b\xb8\x4c\xad\x49\xb3\xf4\x6f\x0c\xc3\x7f\xbf\x84\xcf\x1f\x0b\xb2\x04\x97\xfc\xe7\x65\x5a\xb0\xc1\x80\xfc\xae\xb6\x63\xbb\x70\x74\x48\x6f\xc5\x76\x4b\x31\xf2\x19\xd0\x30\x68\xf8\x82\x2b\x84\xd8\x80\xd2\x1d\xe2\x38\x05\xeb\xd3\x50\x26\x36\x82\xf2\x23\x46\x7e\x7a\xf9\xf3\x25\x7c\xde\x97\x0b\x84\xca\xe9\x1d\xbc\x4c\xed\x98\x70\x2c\xe3\x17\x4b\xb8\x8f\x96\xd9\x2b\x8f\xef\x78\xce\xac\xd0\x8e\x14\x68\x25\xf7\xcc\x71\x81\x3b\x02\xa7\x4b\x82\x47\x92\x72\x91\x50\x42\x0e\x8f\xb8\x67\x19\x6a\x55\xb2\x55\x11\x0c\x5a\x7f\x80\x90\xef\x7f\xf8\xfa\x87\x55\x5a\x8d\xcd\xb6\x55\xbc\x04\xa3\xaf\x8d\x60\xfc\xcb\xc0\x37\xa1\xb8\x68\x73\x66\x24\x24\x23\x71\xea\x2b\x50\x6d\xa9\x6e\x1e\x37\x81\xf1\xd4\xf2\x10\x31\xcd\xf6\xf8\x21\xb8\x3a\xec\xec\x11\xb6\x1e\x06\xda\x1f\x08\x0a\x67\x8b\x18\x7b\xc0\x59\x22\x7e\xdf\xf1\xc1\x49\x11\x1f\xc2\x9a\xac\x22\x4f\x51\xca\x5c\x67\x8e\x05\xcc\xc8\x78\x77\xad\x77\x9c\x54\xe9\xf1\xfa\x51\xdb\x07\xa1\xb6\x0b\x76\xb2\x45\xb2\xbc\xbb\x8e\xbb\x1f\xd7\x9f\xc5\x7f\xde\x4b\xa2\xd1\x52\x3d\x2c\x56\x24\xff\x18\xb2\xf1\x3a\xee\xfa\xc9\xa2\xd5\x90\xfa\x9c\x4a\xf0\xe2\x2e\x05\x7c\x76\x38\x9a\xc3\xe5\xb1\x10\x59\x51\x37\xad\x9d\x0c\x57\x62\x9e\x52\x20\xaa\xfd\x07\x77\x63\x56\x60\xb0\xbc\xf6\x7e\x51\xed\xcb\x2d\x50\xe5\xfc\x7f\x27\x9c\xe7\xf7\x4f\xd6\x58\x10\x33\x03\xf8\xc7\xdb\xaf\x3f\x8e\x73\x07\xf1\xc4\x68\x5d\x07\x95\x4b\xfa\x56\xeb\x87\x60\x06\x41\x42\x4f\xa0\xbf\x77\xa9\xeb\xfe\xa3\xea\xd2\x84\x5a\x18\xab\xb7\x96\x6b\x65\xa7\xcb\x05\x13\x64\x4a\xaf\x41\x19\xcc\x1e\x70\x4b\xd5\xa2\xb1\x8c\x70\x6f\x5c\x95\xa3\xaa\x15\x18\x87\x39\x4f\xc0\xfd\xa3\xdc\xa7\xdd\x80\x8a\xcf\x11\x36\xeb\xba\xc8\x3c\x46\x04\x5b\xf1\x7d\x9a\xdf\x93\xc0\x6c\x0a\xdb\xa6\xe7\x00\xe1\xbe\xa1\xcd\x28\xa1\xc8\xd9\xef\x37\x62\xa0\x3d\xa9\x49\x0c\xfa\x62\xf4\xa3\x25\x23\x71\x08\x44\xc3\x0c\x08\x09\x47\x7c\x8e\xd1\x1d\x58\xe3\xe6\x60\x58\x6d\x91\x3a\x61\x54\x5a\xee\x91\xc5\x37\x95\x15\x58\x24\x78\x44\x17\x33\x90\xdc\x51\x1e\x37\x60\xc6\x70\xe8\x0c\x8b\xcc\x93\x16\x66\xc1\xe6\x01\x79\x9f\x00\x9e\xbb\x8c\x4f\xa4\xa3\xf4\x9c\x04\xd2\x03\x3c\xfd\x09\xa7\xff\x84\xd3\x9f\x38\x9c\x3e\x2b\x06\xa6\xa0\xf5\x90\xfb\x7f\xaa\x00\xfb\x2c\xa1\xa7\xc0\xf6\x90\xd0\x9f\x08\xe4\x3e\x5b\xc6\x49\xf8\x3d\x26\xe8\x27\x02\xc2\xcf\x12\x76\x26\x20\x1f\x12\xf9\xff\x19\x96\x9f\xa5\xc3\x09\x88\x3e\xa4\xb7\x4f\x02\xa8\xcf\x16\x30\xd3\x2a\x9d\x82\x4f\xa0\x94\x3e\xd6\x6a\x06\x1c\xee\x03\x33\xd3\x28\x7b\xfb\xb4\x5d\x98\x7c\x0a\x4e\x8d\x41\xf2\xf4\x4c\x00\xf3\xee\x24\x27\x30\xd9\x69\xac\x9c\x9e\x45\xb5\x7d\x7d\x82\x88\xd7\x9c\x20\x99\x87\x00\x01\x24\x3a\x7f\x6f\x51\x39\x51\xdf\xe0\x98\xa6\x3f\xb0\xc8\xb7\xc8\x6d\x87\x28\x9b\x2e\x23\xd9\x07\x7c\x33\x65\x05\x68\xe3\x51\x4d\xb5\x2f\xcf\x98\x46\x69\x5f\x8c\x35\x1d\xed\x33\x33\x4a\xf8\x49\xe7\x00\x2b\xc8\xd1\xd3\x82\x39\x3a\x29\xf6\x8f\xf1\xb0\xf2\xd9\x44\x66\x0c\x6f\xac\x5e\x53\xfe\x87\x49\x55\x92\x73\xb8\x3d\x4f\x9c\x57\x50\x84\x12\x15\x58\xc2\x1c\xd7\x92\xea\x49\x18\x8d\xc5\xd3\x4a\xb5\x85\x9c\x3c\x0a\xe9\x3a\x27\x2c\xad\x7d\x9f\x4d\x58\x4b\xe8\x4e\x55\x09\x38\xbe\x62\x92\x86\xc5\x83\xc2\x9e\x3d\x5e\xb8\x68\xe4\x0f\xc1\xe9\xf0\xc9\xd5\x24\xa7\x77\xcd\x89\x54\x8f\xc9\xab\xfa\x04\xf3\xde\x06\xba\x82\x6f\x50\x3a\xba\x82\x1f\xd5\x83\xd2\x8f\xcf\xc7\x6f\x24\x3c\x4b\xaf\x7b\x13\xb9\x6a\xf8\x7c\x06\x56\xda\xee\x7e\x66\xb2\xbf\x6d\x06\xd4\x3b\x34\x55\x87\xbe\x08\x4a\xfc\x1a\xfa\x8d\x4a\x73\xc8\xf4\xf9\x61\x0b\x73\x73\xf7\x36\x3a\x47\x6a\xb7\x5d\x6a\x64\xea\xd6\xee\xe6\xee\xad\xfb\xe2\x44\x6d\x98\x94\xca\x4c\x36\xaa\x3d\x79\xb8\xa7\x3d\x68\xb5\xa4\xce\x3a\x57\x7f\xda\x6d\x19\x13\xa4\x5c\xc2\xad\x7f\xe1\x98\x07\x91\xa1\x94\x7b\xee\x5a\x44\xc9\x81\xd9\xa0\x9e\x53\x55\x6d\x9a\xf3\x19\x05\xe2\x28\xd8\x68\xb3\xa1\xcc\x8b\x1d\x75\x86\xd7\x8a\x4e\x1b\x4e\x94\x57\x72\xbc\x17\x73\xf5\x56\xce\x4c\xd6\xde\x54\xe4\xb5\xa3\x74\xed\xdf\x6a\xb5\x9a\x34\xf5\x9a\xd1\x69\x14\xc1\x46\x07\x95\x03\xfa\x68\x9e\x27\xf2\xdc\x3f\xc3\xfd\x78\x07\xfe\xd3\xf8\xe9\x79\x36\x1b\x3b\x27\xf0\x0d\xfa\x9a\x02\x5f\x6d\x92\xa3\x77\x94\x85\xce\x1d\xaf\xee\x1d\x8e\xa7\xed\x35\x9e\x76\xd9\x73\xd0\xcc\xac\xf4\x39\xb7\xfe\xce\xc5\x13\xcf\xba\xe8\xc9\x72\x3f\x2b\xd2\xa6\xab\xee\x30\xfe\x7e\x93\x8a\x6e\xdc\xea\xcc\xb0\x24\x99\xa1\xa3\xfc\xb0\x16\x27\x30\x3e\xa7\x00\xcf\x60\xf4\x54\xd1\x9d\x31\xc5\x74\x1d\x3c\xe9\xf6\xb1\x2a\x26\xaa\x75\x7d\x0b\xa2\x69\x37\x7a\xfe\xcd\xf9\x04\x21\x23\x1b\x8b\x4c\xba\x44\x87\xac\xab\xc7\x42\x3f\x39\x33\x4e\x58\xbb\xc7\xfa\x77\x35\x7e\xe3\x05\x23\xb6\x5b\x1c\x61\xbb\xaa\xfe\xb5\xd8\x8e\xf2\xde\x55\x9a\x58\x24\x4b\xdc\xc7\xab\x69\xa5\xd1\xd6\x63\x3a\xe0\x08\x2a\x27\xeb\x3c\xaa\x9c\xc7\x3e\x16\xfb\xa8\x06\xc3\x32\x17\xe8\x40\x78\x07\xa9\x2f\xf6\x95\xc1\xce\xbe\x83\x15\xef\xbb\x9c\x14\xb2\xa3\xec\xd7\x3c\xa0\x81\x08\xbd\xc5\x53\x5d\xed\x19\x66\xd2\x0a\xd3\x8c\x49\x9c\xb8\x58\xf5\xbe\x79\xf6\xce\x93\x39\xcc\xab\x1d\x21\x54\x84\xe3\x3b\x91\xa7\xcb\x48\x64\x40\xa8\xe7\x49\xaa\xa7\x0f\x70\xd2\xc1\xc4\x78\x58\x2d\x9a\x5d\x9a\x51\x82\x89\x8e\xf6\x74\x52\x6f\xd6\x7f\xcf\x44\x37\x7e\xc7\x2d\x3d\x47\xf6\xa8\x7f\x37\x31\x61\x97\xce\x2d\xdb\x78\x8f\xd3\xdb\x0a\x03\xed\x67\x59\x07\xe6\x6e\x1e\xcc\xd9\x3a\x58\xa4\x9f\x4f\x4c\x52\x3c\x08\x75\x7c\xf3\xb3\x4b\xc0\xd0\x69\x92\xa0\xbd\xf2\x37\x93\x2c\x6e\x29\x4e\xd2\x56\xc7\x49\xef\x79\x9a\x95\x7e\x3b\xf2\x71\xb6\xdf\x67\x4e\x54\x1f\xfe\x3c\xcb\x64\xa7\xf7\xc7\x67\x4e\xd4\x9a\xe6\x99\xa7\x9b\xb1\xb3\x3d\x73\xce\xdd\x9c\x2d\xe3\x67\x00\x0d\x47\x21\x5f\xf5\xe9\x13\xd5\xc4\xa0\xf5\x22\x0b\x12\x6d\x1b\xfb\x31\x3d\x1f\xfd\xe2\xe8\x6c\x9e\x9d\x47\xeb\xc7\xf0\xe3\xe1\x76\x42\xa2\xac\x39\x8d\xfb\x51\x8f\x05\xa9\xe6\xd8\x2e\xfd\x80\x0b\xd6\xb4\xe5\xb2\x67\x8c\xdc\xd7\xbf\x0e\x68\xef\x9e\x4b\xe1\x7c\xac\xfc\x6d\x15\x9f\x7b\x89\x61\x54\xed\x63\xe0\xd5\x91\xdd\x51\xbe\x02\x6f\x43\xf3\xca\x6b\xcb\x88\xa6\xf7\x2e\xac\x1b\xfe\x5a\x35\x54\x76\x84\xdf\x7e\xbf\xf8\x5f\x00\x00\x00\xff\xff\xaa\x07\xfe\xc9\xfd\x36\x00\x00") func operatorsCoreosCom_installplansYamlBytes() ([]byte, error) { return bindataRead( @@ -144,7 +144,7 @@ func operatorsCoreosCom_installplansYaml() (*asset, error) { return a, nil } -var _operatorsCoreosCom_operatorconditionsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5b\x5f\x6f\x1b\xb9\x11\x7f\xf7\xa7\x18\xa8\x05\x62\xa7\xd2\x3a\xce\x15\xe9\x9d\x80\x20\x08\x72\x4d\x11\x24\xbe\x04\xb1\x7b\x0f\xb5\xdc\x66\x76\x39\x92\x78\xd9\x25\xf7\xf8\x47\xb6\xee\x70\xdf\xbd\x18\x72\x57\xbb\xb2\x56\x8a\x8b\xa4\xc1\xb5\x20\x5f\x2c\x91\xb3\xc3\xe1\xfc\xff\xd1\x2b\xac\xe5\x8f\x64\xac\xd4\x6a\x0a\x58\x4b\xba\x75\xa4\xf8\x9b\xcd\x3e\x7e\x6b\x33\xa9\x4f\x57\x67\x47\x1f\xa5\x12\x53\x78\xe1\xad\xd3\xd5\x7b\xb2\xda\x9b\x82\xbe\xa7\xb9\x54\xd2\x49\xad\x8e\x2a\x72\x28\xd0\xe1\xf4\x08\x00\x95\xd2\x0e\x79\xda\xf2\x57\x80\x42\x2b\x67\x74\x59\x92\x99\x2c\x48\x65\x1f\x7d\x4e\xb9\x97\xa5\x20\x13\x98\xb7\x5b\xaf\x1e\x65\x4f\xb2\x47\x47\x00\x85\xa1\xf0\xf8\xa5\xac\xc8\x3a\xac\xea\x29\x28\x5f\x96\x47\x00\x0a\x2b\x9a\x82\xae\xc9\xa0\xd3\xa6\xd0\x4a\x84\xed\x6d\xd6\x4e\xd9\xac\xd0\x86\x34\xff\xa9\x8e\x6c\x4d\x05\x4b\xb0\x30\xda\xd7\xdd\x63\x5b\x34\x91\x67\x2b\x28\x3a\x5a\x68\x23\xdb\xef\x00\x13\xd0\x65\x15\x3e\x47\x05\xbc\x6d\x78\xbc\x68\xb7\x0e\x6b\xa5\xb4\xee\xf5\xf0\xfa\x1b\x69\x5d\xa0\xa9\x4b\x6f\xb0\x1c\x12\x3e\x2c\xdb\xa5\x36\xee\x87\x4e\x14\xde\xba\xd8\xda\xc4\x4a\xb5\xf0\x25\x9a\x01\x16\x47\x00\xb6\xd0\x35\x4d\x21\x70\xa8\xb1\x20\x71\x04\xd0\x68\xb6\xe1\x38\x69\xb4\xb7\x3a\x6b\x36\xb0\xc5\x92\x2a\x6c\xb7\x03\x66\xab\x9e\xbf\x7b\xf5\xe3\x37\x17\x77\x16\x00\x04\xd9\xc2\xc8\xda\x05\x3b\xed\x9c\x11\xa4\x05\x6c\x7c\x03\x5a\xe7\x00\x3d\x07\xb7\xae\x09\x3e\xec\xd0\x7f\x80\x9b\xa5\x2c\x96\xfc\x98\xb7\x24\xc0\x69\x3e\xea\x8a\xd6\x20\xd5\x5c\x9b\x2a\x18\x9f\x67\xdf\xbe\x39\x07\xcc\xb5\x77\xe0\x96\x04\xd6\xa1\x0b\x6c\x51\x6d\x54\x90\xf5\x84\xe4\xdd\xa6\xa0\xf3\x9f\xa8\x70\xbd\x69\x43\x3f\x7b\x69\x48\xf4\xcf\xc3\xda\x68\x5d\xb6\x37\x5d\x1b\xe6\xeb\x7a\xf6\x8f\xa3\x17\x20\x5b\xf3\x77\x14\xf3\x80\xb5\x17\xe9\x40\x70\x6c\x90\x0d\x82\x37\x76\x20\xd1\xa8\x3c\xa8\x66\x29\x2d\x18\xaa\x0d\x59\x52\x31\x5a\xda\xa3\x85\x03\x64\x70\x41\x86\x1f\x64\xcf\xf0\xa5\x88\x1a\x32\x0e\x0c\x15\x7a\xa1\xe4\x2f\x1b\x6e\x96\x35\xc5\xdb\x94\xe8\xc8\x3a\x90\xca\x91\x51\x58\xc2\x0a\x4b\x4f\x63\x40\x25\xa0\xc2\x35\x18\x62\xbe\xe0\x55\x8f\x43\x20\xb1\x19\x9c\x6b\x43\x41\xf9\x53\x58\x3a\x57\xdb\xe9\xe9\xe9\x42\xba\x36\xfc\x0b\x5d\x55\x5e\x49\xb7\x3e\x0d\x91\x2c\x73\xcf\x51\x74\x2a\x68\x45\xe5\xa9\x95\x8b\x09\x9a\x62\x29\x1d\x15\xce\x1b\x3a\xc5\x5a\x4e\x82\xb0\x2a\x86\x66\x25\xfe\x60\x1a\x9f\xb0\x0f\xee\xa8\x2f\x9a\xcc\x3a\x23\xd5\x62\x6b\x29\x44\xdb\x41\x5d\x73\xbc\x45\xc7\x8b\x8f\xc7\xb3\x74\x2a\xe5\x29\xd6\xca\xfb\xbf\x5e\x5c\x42\x2b\x40\x54\x7b\xd4\x70\x47\x6a\x3b\x65\xb3\xa2\xa4\x9a\x93\x89\x94\x73\xa3\xab\xc0\x85\x94\xa8\xb5\x54\xd1\x11\x8b\x52\x92\x72\x60\x7d\x5e\x49\x67\x83\x83\x91\x75\x6c\x87\x0c\x5e\x84\xec\x07\x39\x81\xaf\x05\x3a\x12\x19\xbc\x52\xf0\x02\x2b\x2a\x5f\xa0\xa5\xff\xba\xaa\x59\xa3\x76\xc2\xea\xbb\xbf\xb2\xfb\xc9\x7b\xf7\x81\x9d\x80\x02\x68\x13\xeb\x5e\xeb\xec\x84\xfc\x45\x4d\x05\x60\x59\xea\x1b\xb6\x58\x51\x7a\xeb\xc8\x00\x8a\x4a\xaa\x3d\xe1\x7f\x38\xee\x9b\xec\x30\x86\x5a\x3b\x3e\x3d\x96\xe5\x1a\xf4\x8a\x8c\x91\x82\x2d\x1f\x9f\x31\x54\x6b\xe3\x48\x40\xbe\x0e\x9c\x86\xb2\xc6\xc1\x83\xee\x4f\x09\xf1\xc8\x75\xa9\xd7\x15\x7b\xd0\xee\x62\xcb\x15\x8d\xc1\xf5\xc0\xaa\x74\x54\x0d\x3e\x76\xc0\x50\x3c\x9a\x43\x0e\xc9\xf3\x19\x5b\x6e\x59\x6f\xd4\x65\x76\xf6\x42\x94\xca\x82\x20\x87\xb2\xb4\x30\xd7\x06\xb4\x22\x40\xf6\x01\x17\x33\x19\x41\xe1\x8d\x09\x21\xd1\x9a\x2a\x44\xcf\xf3\x77\xaf\x36\xe5\x20\x83\xc9\x64\x02\x97\x3c\x6d\x9d\xf1\x85\xe3\xd8\xe5\x54\xa5\x04\x89\xc0\x55\x48\x13\xf2\x93\x65\xe6\x6c\xeb\x70\x0c\xc0\xe8\x04\x73\x49\xa5\x80\x1a\xdd\x12\x32\xde\xc5\x73\xf9\xde\x94\x7f\x80\x97\xda\x00\xdd\x62\x55\x97\x34\x8e\x75\xe7\xa5\xd6\x17\x81\xb0\xd9\xf0\xd7\x70\xd0\xd3\x53\x78\xbf\x89\xfb\xe8\x14\xb9\x25\xb3\x8a\xfd\x4a\xf0\x32\x98\x6b\xfd\xc0\x6e\x9f\x29\x6b\x1f\x7e\xad\xf4\x8d\x1a\x12\x21\xec\x89\x86\xa6\x30\x1b\x3d\x5f\xa1\x2c\x31\x2f\x69\x36\x1a\xc3\x6c\xf4\xce\xe8\x85\x21\xcb\x05\x9c\x27\x38\x21\xcf\x46\xdf\xd3\xc2\xa0\x20\x31\x1b\xb5\xac\xff\x54\xa3\x2b\x96\xe7\x64\x16\xf4\x9a\xd6\x4f\x03\xc3\xad\xa5\x0b\x67\xb8\x41\x59\x3f\xad\x98\x66\xb3\xc6\xdd\xc7\xe5\xba\xa6\xa7\x15\xd6\x5b\x93\xe7\x58\x6f\x31\xda\x98\xd5\xc2\xd5\x35\x07\xfd\xea\x2c\xeb\x4c\xfd\xe1\x27\xab\xd5\x74\x36\xea\xce\x34\xd6\x15\xbb\x4c\xed\xd6\xb3\x11\x6c\x49\x30\x9d\x8d\x82\x0c\xed\x7c\x2b\xf4\x74\x36\xe2\xdd\x78\xda\x68\xa7\x73\x3f\x9f\xce\x46\xf9\xda\x91\x1d\x9f\x8d\x0d\xd5\x63\x6e\x41\x9e\x76\x3b\xcc\x46\x1f\x60\xa6\x5a\xa1\xb5\x5b\x92\x89\x96\xb6\xf0\xdb\xe8\x40\x6c\x0c\x86\x6a\x1c\xc3\xe5\xbe\x1b\x5c\xf8\xad\xc5\x05\xed\x5d\x37\x84\xb6\xe9\xb9\x86\x96\xa3\xe9\xf7\x2e\xb3\x80\x83\x8b\x87\x32\x49\x1c\x25\x5a\x77\x69\x50\x59\xd9\x76\xbf\xfb\x28\xef\x04\xec\xee\x83\x1c\x5d\xb1\x27\xb0\x0e\x1c\x4f\x84\x30\xdd\x18\xdb\x6d\xa8\x39\xfa\xb8\xca\x71\x50\xc7\xa3\x71\x6e\x45\x15\x8c\x91\x35\x11\x1b\x5b\x90\x9c\xe0\x66\x49\x2a\xb0\xf2\x4a\x90\x29\xd7\x9c\x6b\x3b\xae\xc5\x12\xd5\x82\x4b\x1e\xbc\xe2\x14\x80\x21\xc8\xb9\x1c\x7e\xe4\xa8\x19\xf3\x83\x0a\xbc\x6d\x4b\x73\x90\x6b\xc3\x91\xb3\x45\x8c\xf2\x86\x4d\xa8\xee\x45\x41\xb5\xe3\x50\xba\x9b\xb3\xbb\x71\x30\x5d\xb6\x23\x16\x96\x29\x70\x4d\x9e\xf0\xc6\x7b\x28\x1b\xe7\xb8\xa7\xe2\x1b\xea\xd8\x87\x2c\x7d\x85\x8a\xbd\x47\xb0\xbc\xdd\x9a\x12\xb2\xc0\xd0\x8f\xb4\x49\xb4\xab\x6d\x9d\x1d\x1a\x55\x73\x03\x92\x13\xa7\xbf\x10\x78\xcd\xb1\x3e\xf3\xf0\x15\xde\xbe\x21\xb5\x70\xcb\x29\x7c\xf3\xf8\x2f\x4f\xbe\xdd\x43\x18\x33\x21\x89\xbf\x91\xe2\x3a\x39\xd0\xee\xee\x51\xc3\xee\x83\xbd\xe6\x2a\x9c\x33\x6b\x7b\x8c\x6c\xd1\xd1\x04\x0f\xd9\xf6\xcb\x1b\xb4\x60\xc9\x41\x8e\x0c\x0c\x7c\xcd\x7a\xe1\xd4\x2e\x95\x75\xa8\x0a\x1a\x83\x9c\x0f\x33\x93\x9b\x8c\x5d\xae\xe1\xec\xf1\x18\xf2\x46\xc5\xbb\xb9\xfa\xea\xf6\x3a\x1b\x10\x59\x5a\xf8\x6e\x7c\x47\x1e\xee\x16\x7d\x28\x73\xec\x38\x70\x23\xdd\x92\x9b\xc9\x50\xfb\x9a\xb6\x7b\xa0\xf6\xd1\x46\xde\x4f\x19\x8e\x2b\xe0\x82\xcc\x27\xdd\x56\x2a\xf7\xe4\xcf\xfb\xed\x2b\x95\xac\x7c\x35\x85\x47\x7b\x48\x62\x4a\xbb\xa7\x35\x23\x71\x57\xfa\x91\x53\xd7\xc2\x60\xc5\x9d\x59\x01\x52\x70\xc3\x35\x97\x64\xfa\xae\xcd\x87\x6e\x1e\xe4\x62\xbe\xa5\xc5\x07\xb6\xc9\x43\x3d\x67\x7f\x67\xb4\xf0\x05\xb7\xdc\x7a\x1e\xfa\x49\x39\x97\x45\x3f\x41\x71\x1f\x1b\xa2\x21\x22\x29\xa0\x5b\x56\xfa\x06\xb3\x44\x58\x43\xa8\xa4\x5a\xd8\x66\x4b\x6e\xd8\x39\x81\xc4\x12\x7b\xb3\xa4\x50\x4f\x02\x02\x6b\x9e\x31\x41\x2a\x2b\x05\x19\x12\x80\xb0\xf0\x68\x50\x39\x22\xc1\xe9\x87\x43\xb0\xa1\xed\xa5\x3c\xec\xba\xf7\x36\x1a\x63\xa8\xc6\x64\xc5\x22\x36\x1d\x7f\x88\xd8\x2f\x17\xaa\x67\x8f\x1e\x1f\x34\xf9\x86\x6e\x2f\x51\x8d\x8e\xb1\xe0\x14\xfe\x79\xf5\x7c\xf2\x0f\x9c\xfc\x72\x7d\xdc\x7c\x78\x34\xf9\xee\x5f\xe3\xe9\xf5\xc3\xde\xd7\xeb\x93\x67\x7f\xdc\xc3\x29\x46\xd0\x3d\xdd\xa7\x29\x22\x6d\x67\xd8\x5a\x74\x1c\x2a\x8c\x9e\xc3\xa5\x61\x54\xfa\x12\x4b\x4b\x63\xf8\xbb\x0a\xa5\xe1\x33\x95\x46\xca\x57\xfb\xa5\xe3\xaa\x3c\xe2\x5d\x87\x3b\x8a\x0d\x49\x10\xe9\x30\x4d\x23\xee\x1e\x9a\x20\xeb\xfd\x94\x14\x7a\x32\x3d\xef\x67\x9a\x1e\x4a\x84\x90\xf1\xb8\x0f\xcd\x9a\x9e\x36\x2b\x74\x75\xda\x43\x91\xdc\x4c\x9f\xa3\x5a\x43\x97\xd6\x62\x07\x7a\xd7\xd3\x2d\xc3\x23\xc0\xc2\x68\x6b\x37\x30\xd8\x42\x29\x3f\x12\x6c\xda\xd4\x98\x2c\x73\x2a\x30\x74\xdf\x26\x97\xce\xa0\x59\x77\xd2\x59\x28\x50\x05\x50\x6b\x69\xee\x4b\x38\xb6\x44\x90\x29\x2d\x68\x37\xbb\x9e\xc4\x1c\x8a\xb9\x2c\xa5\x5b\x73\x96\x14\x54\x68\x35\x2f\x65\xd3\xf4\x57\x0c\xca\x50\xb9\x18\x6e\x86\x16\x74\x0b\xd2\x41\xc5\x8d\x24\x59\x26\x39\x16\xca\x9e\x9d\x3d\xfe\xe6\xc2\xe7\x42\x57\x28\xd5\xcb\xca\x9d\x9e\x3c\x3b\xfe\xd9\x63\xc9\x99\x47\xfc\x80\x15\xbd\xac\xdc\xc9\x97\x2b\x8b\x67\x4f\xee\x11\x45\xc7\x57\x31\x56\xae\x8f\xaf\x26\xcd\xa7\x87\xed\xd4\xc9\xb3\xe3\x59\x76\x70\xfd\xe4\x21\x9f\xa1\x17\x81\xd7\x57\x93\x2e\xfc\xb2\xeb\x87\x27\xcf\x7a\x6b\x27\xbb\xc1\xc8\x15\x4b\x16\xf4\xbc\x28\xb4\xff\x6a\x98\x73\x38\xf6\x3f\x81\xf6\x63\x0a\x68\xf1\xfe\x36\x6c\x1f\xc0\xfa\xd2\xd9\xa6\x7c\x46\x58\x1f\x3d\xa3\x49\x24\x9c\x60\x9d\x41\x59\x46\xb7\x2a\x9c\xc7\xb2\x77\x27\x00\x76\x6d\x1d\x55\x5f\x08\xd2\x77\x6e\x9c\xe0\x75\x82\xd7\x09\x5e\xef\x8c\x4f\xc3\xeb\x5d\x30\x9a\x90\x78\x42\xe2\xdd\x48\x48\x3c\x21\xf1\x84\xc4\xef\x65\xcd\x84\xc4\x13\x12\xdf\x1e\x09\x89\x37\x34\x09\x89\x27\x24\xfe\xb5\x91\x78\xac\x53\x53\x70\xc6\xb7\x4d\x8b\x75\xda\x70\x93\x02\x73\x76\xd9\x76\xd2\xe7\x1b\xfb\x76\x5e\xd8\x84\x2e\xfc\xfa\xdb\xf6\xeb\x38\x8f\xd3\xeb\x38\xe9\x75\x9c\xf4\x3a\x4e\x7a\x1d\xa7\x1d\x5f\xfb\x75\x9c\xed\xeb\xb9\xf8\xce\xcc\xd6\x75\x5c\xf0\xd9\xda\xe8\x95\x14\x64\xef\xbc\xbc\x13\xfa\xf0\x3b\x55\xa6\x42\xe5\xfb\x2f\xe4\xd0\xd7\x79\x1d\x27\xdd\xdd\xa5\xbb\xbb\x74\x77\x97\xee\xee\xd2\xdd\x5d\xba\xbb\x4b\x77\x77\xe9\xee\xae\x1b\xe9\xee\x2e\xdd\xdd\xed\x33\x79\xba\xbb\x6b\x47\xba\xbb\x4b\x77\x77\x03\xa6\xf8\xff\xb8\xbb\xeb\x7b\x50\xfa\xd5\x46\x82\xa6\x09\x9a\xfe\x8f\x41\xd3\x84\x37\x13\xde\x4c\x78\x73\x60\x24\xbc\x99\xf0\x66\xc2\x9b\x09\x6f\xee\x8c\x84\x37\x1b\x9a\x84\x37\x13\xde\x4c\xbf\xda\xf8\x0f\x7f\xb5\xf1\xf6\xcd\x79\xef\x4d\x90\xf8\x86\x48\xcf\xb3\x96\xb8\x22\xc8\x89\xd4\xa6\x8d\x48\xff\xc5\x4d\x50\x39\x41\xe5\xdf\x03\x54\x4e\xff\xc5\x4d\xa8\x3a\xa1\xea\x3d\x23\xa1\xea\x84\xaa\x13\xaa\x4e\xa8\x3a\xa1\xea\x43\x24\x09\x55\x27\x54\x3d\x34\x7e\xc7\xbf\xc0\xe8\xcf\x7d\xea\x07\x18\xff\x0e\x00\x00\xff\xff\xa4\x54\x9b\x0f\xf2\x56\x00\x00") +var _operatorsCoreosCom_operatorconditionsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5b\x5f\x6f\x1b\xb9\x11\x7f\xf7\xa7\x18\xa8\x05\x62\xa7\xd2\x2a\xf6\x15\xe9\x9d\x80\x20\x08\x72\x4d\x11\x24\xbe\x04\xb1\x7b\x0f\xb5\xdc\x66\x76\x39\x5a\xf1\xb2\x4b\xee\x91\x5c\xd9\xba\xc3\x7d\xf7\x62\xc8\x5d\xed\xca\x5a\xc9\x2e\x92\x06\xd7\x82\x7c\xb1\x44\xce\x0e\x87\xf3\xff\x47\xaf\xb0\x92\x3f\x92\xb1\x52\xab\x19\x60\x25\xe9\xd6\x91\xe2\x6f\x36\xf9\xf4\xad\x4d\xa4\x9e\xae\x4e\x8f\x3e\x49\x25\x66\xf0\xb2\xb6\x4e\x97\x1f\xc8\xea\xda\x64\xf4\x3d\x2d\xa4\x92\x4e\x6a\x75\x54\x92\x43\x81\x0e\x67\x47\x00\xa8\x94\x76\xc8\xd3\x96\xbf\x02\x64\x5a\x39\xa3\x8b\x82\xcc\x24\x27\x95\x7c\xaa\x53\x4a\x6b\x59\x08\x32\x9e\x79\xbb\xf5\xea\x49\xf2\x34\x39\x3b\x02\xc8\x0c\xf9\xc7\x2f\x65\x49\xd6\x61\x59\xcd\x40\xd5\x45\x71\x04\xa0\xb0\xa4\x19\xe8\x8a\x0c\x3a\x6d\x32\xad\x84\xdf\xde\x26\xed\x94\x4d\x32\x6d\x48\xf3\x9f\xf2\xc8\x56\x94\xb1\x04\xb9\xd1\x75\xd5\x3d\xb6\x45\x13\x78\xb6\x82\xa2\xa3\x5c\x1b\xd9\x7e\x07\x98\x80\x2e\x4a\xff\x39\x28\xe0\x5d\xc3\xe3\x65\xbb\xb5\x5f\x2b\xa4\x75\x6f\x86\xd7\xdf\x4a\xeb\x3c\x4d\x55\xd4\x06\x8b\x21\xe1\xfd\xb2\x5d\x6a\xe3\x7e\xe8\x44\xe1\xad\xb3\xad\x4d\xac\x54\x79\x5d\xa0\x19\x60\x71\x04\x60\x33\x5d\xd1\x0c\x3c\x87\x0a\x33\x12\x47\x00\x8d\x66\x1b\x8e\x93\x46\x7b\xab\xd3\x66\x03\x9b\x2d\xa9\xc4\x76\x3b\x60\xb6\xea\xc5\xfb\xd7\x3f\x7e\x73\x71\x67\x01\x40\x90\xcd\x8c\xac\x9c\xb7\xd3\xce\x19\x41\x5a\xc0\xc6\x37\xa0\x75\x0e\xd0\x0b\x70\xeb\x8a\xe0\xe3\x0e\xfd\x47\xb8\x59\xca\x6c\xc9\x8f\xd5\x96\x04\x38\xcd\x47\x5d\xd1\x1a\xa4\x5a\x68\x53\x7a\xe3\xf3\xec\xbb\xb7\xe7\x80\xa9\xae\x1d\xb8\x25\x81\x75\xe8\x3c\x5b\x54\x1b\x15\x24\x3d\x21\x79\xb7\x19\xe8\xf4\x27\xca\x5c\x6f\xda\xd0\xcf\xb5\x34\x24\xfa\xe7\x61\x6d\xb4\x2e\xdb\x9b\xae\x0c\xf3\x75\x3d\xfb\x87\xd1\x0b\x90\xad\xf9\x3b\x8a\x79\xc4\xda\x0b\x74\x20\x38\x36\xc8\x7a\xc1\x1b\x3b\x90\x68\x54\xee\x55\xb3\x94\x16\x0c\x55\x86\x2c\xa9\x10\x2d\xed\xd1\xfc\x01\x12\xb8\x20\xc3\x0f\xb2\x67\xd4\x85\x08\x1a\x32\x0e\x0c\x65\x3a\x57\xf2\x97\x0d\x37\xcb\x9a\xe2\x6d\x0a\x74\x64\x1d\x48\xe5\xc8\x28\x2c\x60\x85\x45\x4d\x63\x40\x25\xa0\xc4\x35\x18\x62\xbe\x50\xab\x1e\x07\x4f\x62\x13\x38\xd7\x86\xbc\xf2\x67\xb0\x74\xae\xb2\xb3\xe9\x34\x97\xae\x0d\xff\x4c\x97\x65\xad\xa4\x5b\x4f\x7d\x24\xcb\xb4\xe6\x28\x9a\x0a\x5a\x51\x31\xb5\x32\x9f\xa0\xc9\x96\xd2\x51\xe6\x6a\x43\x53\xac\xe4\xc4\x0b\xab\x42\x68\x96\xe2\x0f\xa6\xf1\x09\xfb\xe8\x8e\xfa\x82\xc9\xac\x33\x52\xe5\x5b\x4b\x3e\xda\x0e\xea\x9a\xe3\x2d\x38\x5e\x78\x3c\x9c\xa5\x53\x29\x4f\xb1\x56\x3e\xfc\xf5\xe2\x12\x5a\x01\x82\xda\x83\x86\x3b\x52\xdb\x29\x9b\x15\x25\xd5\x82\x4c\xa0\x5c\x18\x5d\x7a\x2e\xa4\x44\xa5\xa5\x0a\x8e\x98\x15\x92\x94\x03\x5b\xa7\xa5\x74\xd6\x3b\x18\x59\xc7\x76\x48\xe0\xa5\xcf\x7e\x90\x12\xd4\x95\x40\x47\x22\x81\xd7\x0a\x5e\x62\x49\xc5\x4b\xb4\xf4\x5f\x57\x35\x6b\xd4\x4e\x58\x7d\x0f\x57\x76\x3f\x79\xef\x3e\xb0\x13\x50\x00\x6d\x62\xdd\x6b\x9d\x9d\x90\xbf\xa8\x28\x03\x2c\x0a\x7d\xc3\x16\xcb\x8a\xda\x3a\x32\x80\xa2\x94\x6a\x4f\xf8\x1f\x8e\xfb\x26\x3b\x8c\xa1\xd2\x8e\x4f\x8f\x45\xb1\x06\xbd\x22\x63\xa4\x60\xcb\x87\x67\x0c\x55\xda\x38\x12\x90\xae\x3d\xa7\xa1\xac\x71\xf0\xa0\xfb\x53\x42\x38\x72\x55\xe8\x75\xc9\x1e\xb4\xbb\xd8\x72\x45\x63\x70\x3d\xb0\x2a\x1d\x95\x83\x8f\x1d\x30\x14\x8f\xe6\x90\x43\xf2\x7c\xc6\x96\x5b\xd6\x1b\x75\x99\x9d\xbd\x10\xa5\xb2\x20\xc8\xa1\x2c\x2c\x2c\xb4\x01\xad\x08\x90\x7d\xc0\x85\x4c\x46\x90\xd5\xc6\xf8\x90\x68\x4d\xe5\xa3\xe7\xc5\xfb\xd7\x9b\x72\x90\xc0\x64\x32\x81\x4b\x9e\xb6\xce\xd4\x99\xe3\xd8\xe5\x54\xa5\x04\x09\xcf\x55\x48\xe3\xf3\x93\x65\xe6\x6c\x6b\x7f\x0c\xc0\xe0\x04\x0b\x49\x85\x80\x0a\xdd\x12\x12\xde\xa5\xe6\xf2\xbd\x29\xff\x00\xaf\xb4\x01\xba\xc5\xb2\x2a\x68\x1c\xea\xce\x2b\xad\x2f\x3c\x61\xb3\xe1\xaf\xfe\xa0\xd3\x29\x7c\xd8\xc4\x7d\x70\x8a\xd4\x92\x59\x85\x7e\xc5\x7b\x19\x2c\xb4\x7e\x64\xb7\xcf\x94\xb4\x0f\xbf\x51\xfa\x46\x0d\x89\xe0\xf7\x44\x43\x33\x98\x8f\x5e\xac\x50\x16\x98\x16\x34\x1f\x8d\x61\x3e\x7a\x6f\x74\x6e\xc8\x72\x01\xe7\x09\x4e\xc8\xf3\xd1\xf7\x94\x1b\x14\x24\xe6\xa3\x96\xf5\x9f\x2a\x74\xd9\xf2\x9c\x4c\x4e\x6f\x68\xfd\xcc\x33\xdc\x5a\xba\x70\x86\x1b\x94\xf5\xb3\x92\x69\x36\x6b\xdc\x7d\x5c\xae\x2b\x7a\x56\x62\xb5\x35\x79\x8e\xd5\x16\xa3\x8d\x59\x2d\x5c\x5d\x73\xd0\xaf\x4e\x93\xce\xd4\x1f\x7f\xb2\x5a\xcd\xe6\xa3\xee\x4c\x63\x5d\xb2\xcb\x54\x6e\x3d\x1f\xc1\x96\x04\xb3\xf9\xc8\xcb\xd0\xce\xb7\x42\xcf\xe6\x23\xde\x8d\xa7\x8d\x76\x3a\xad\x17\xb3\xf9\x28\x5d\x3b\xb2\xe3\xd3\xb1\xa1\x6a\xcc\x2d\xc8\xb3\x6e\x87\xf9\xe8\x23\xcc\x55\x2b\xb4\x76\x4b\x32\xc1\xd2\x16\x7e\x1b\x1d\x88\x8d\xc1\x50\x0d\x63\xb8\xdc\x77\x83\x0b\xbf\xb5\x98\xd3\xde\x75\x43\x68\x9b\x9e\x6b\x68\x39\x98\x7e\xef\x32\x0b\x38\xb8\x78\x28\x93\x84\x51\xa0\x75\x97\x06\x95\x95\x6d\xf7\xbb\x8f\xf2\x4e\xc0\xee\x3e\xc8\xd1\x15\x7a\x02\xeb\xc0\xf1\x84\x0f\xd3\x8d\xb1\xdd\x86\x9a\xa3\x8f\xab\x1c\x07\x75\x38\x1a\xe7\x56\x54\xde\x18\x49\x13\xb1\xa1\x05\x49\x09\x6e\x96\xa4\x3c\xab\x5a\x09\x32\xc5\x9a\x73\x6d\xc7\x35\x5b\xa2\xca\xb9\xe4\xc1\x6b\x4e\x01\xe8\x83\x9c\xcb\xe1\x27\x8e\x9a\x31\x3f\xa8\xa0\xb6\x6d\x69\xf6\x72\x6d\x38\x72\xb6\x08\x51\xde\xb0\xf1\xd5\x3d\xcb\xa8\x72\x1c\x4a\x77\x73\x76\x37\x0e\xa6\xcb\x76\x84\xc2\x32\x03\xae\xc9\x13\xde\x78\x0f\x65\xe3\x1c\x0f\x54\x7c\x43\x1d\xfa\x90\x65\x5d\xa2\x62\xef\x11\x2c\x6f\xb7\xa6\x84\xcc\xd0\xf7\x23\x6d\x12\xed\x6a\x5b\x67\x87\x46\xd5\xdc\x80\xa4\xc4\xe9\xcf\x07\x5e\x73\xac\xcf\x3c\x7c\x89\xb7\x6f\x49\xe5\x6e\x39\x83\x6f\xce\xfe\xf2\xf4\xdb\x3d\x84\x21\x13\x92\xf8\x1b\x29\xae\x93\x03\xed\xee\x1e\x35\xec\x3e\xd8\x6b\xae\xfc\x39\x93\xb6\xc7\x48\xf2\x8e\xc6\x7b\xc8\xb6\x5f\xde\xa0\x05\x4b\x0e\x52\x64\x60\x50\x57\xac\x17\x4e\xed\x52\x59\x87\x2a\xa3\x31\xc8\xc5\x30\x33\xb9\xc9\xd8\xc5\x1a\x4e\xcf\xc6\x90\x36\x2a\xde\xcd\xd5\x57\xb7\xd7\xc9\x80\xc8\xd2\xc2\x77\xe3\x3b\xf2\x70\xb7\x58\xfb\x32\xc7\x8e\x03\x37\xd2\x2d\xb9\x99\xf4\xb5\xaf\x69\xbb\x07\x6a\x1f\x6d\xe4\xbd\xcf\x70\x5c\x01\x73\x32\xf7\xba\xad\x54\xee\xe9\x9f\xf7\xdb\x57\x2a\x59\xd6\xe5\x0c\x9e\xec\x21\x09\x29\xed\x81\xd6\x0c\xc4\x5d\xe9\x47\x4e\x5d\xb9\xc1\x92\x3b\xb3\x0c\xa4\xe0\x86\x6b\x21\xc9\xf4\x5d\x9b\x0f\xdd\x3c\xc8\xc5\x7c\x4b\x8b\x8f\x6c\x93\x87\x7a\xce\xfe\xde\x68\x51\x67\xdc\x72\xeb\x85\xef\x27\xe5\x42\x66\xfd\x04\xc5\x7d\xac\x8f\x86\x80\xa4\x80\x6e\x59\xe9\x1b\xcc\x12\x60\x0d\xa1\x92\x2a\xb7\xcd\x96\xdc\xb0\x73\x02\x09\x25\xf6\x66\x49\xbe\x9e\x78\x04\xd6\x3c\x63\xbc\x54\x56\x0a\x32\x24\x00\x21\xaf\xd1\xa0\x72\x44\x82\xd3\x0f\x87\x60\x43\xdb\x4b\x79\xd8\x75\xef\x6d\x34\x86\x50\x0d\xc9\x8a\x45\x6c\x3a\x7e\x1f\xb1\x5f\x2e\x54\x4f\x9f\x9c\x1d\x34\xf9\x86\x6e\x2f\x51\x85\x8e\xb1\xe0\x0c\xfe\x79\xf5\x62\xf2\x0f\x9c\xfc\x72\x7d\xdc\x7c\x78\x32\xf9\xee\x5f\xe3\xd9\xf5\xe3\xde\xd7\xeb\x93\xe7\x7f\xdc\xc3\x29\x44\xd0\x03\xdd\xa7\x29\x22\x6d\x67\xd8\x5a\x74\xec\x2b\x8c\x5e\xc0\xa5\x61\x54\xfa\x0a\x0b\x4b\x63\xf8\xbb\xf2\xa5\xe1\x33\x95\x46\xaa\x2e\xf7\x4b\xc7\x55\x79\xc4\xbb\x0e\x77\x14\x1b\x12\x2f\xd2\x61\x9a\x46\xdc\x3d\x34\x5e\xd6\x87\x29\xc9\xf7\x64\x7a\xd1\xcf\x34\x3d\x94\x08\x3e\xe3\x71\x1f\x9a\x34\x3d\x6d\x92\xe9\x72\xda\x43\x91\xdc\x4c\x9f\xa3\x5a\x43\x97\xd6\x42\x07\x7a\xd7\xd3\x2d\xc3\x23\xc0\xcc\x68\x6b\x37\x30\xd8\x42\x21\x3f\x11\x6c\xda\xd4\x90\x2c\x53\xca\xd0\x77\xdf\x26\x95\xce\xa0\x59\x77\xd2\x59\xc8\x50\x79\x50\x6b\x69\x51\x17\x70\x6c\x89\x20\x51\x5a\xd0\x6e\x76\x3d\x09\x39\x14\x53\x59\x48\xb7\xe6\x2c\x29\x28\xd3\x6a\x51\xc8\xa6\xe9\x2f\x19\x94\xa1\x72\x21\xdc\x0c\xe5\x74\x0b\xd2\x41\xc9\x8d\x24\x59\x26\x39\x16\xca\x9e\x9e\x9e\x7d\x73\x51\xa7\x42\x97\x28\xd5\xab\xd2\x4d\x4f\x9e\x1f\xff\x5c\x63\xc1\x99\x47\xfc\x80\x25\xbd\x2a\xdd\xc9\x97\x2b\x8b\xa7\x4f\x1f\x10\x45\xc7\x57\x21\x56\xae\x8f\xaf\x26\xcd\xa7\xc7\xed\xd4\xc9\xf3\xe3\x79\x72\x70\xfd\xe4\x31\x9f\xa1\x17\x81\xd7\x57\x93\x2e\xfc\x92\xeb\xc7\x27\xcf\x7b\x6b\x27\xbb\xc1\xc8\x15\x4b\x66\xf4\x22\xcb\x74\xfd\xd5\x30\xe7\x70\xec\xdf\x83\xf6\x43\x0a\x68\xf1\xfe\x36\x6c\x1f\xc0\xfa\xd2\xd9\xa6\x7c\x06\x58\x1f\x3c\xa3\x49\x24\x9c\x60\x9d\x41\x59\x04\xb7\xca\x5c\x8d\x45\xef\x4e\x00\xec\xda\x3a\x2a\xbf\x10\xa4\xef\xdc\x38\xc2\xeb\x08\xaf\x23\xbc\xde\x19\xf7\xc3\xeb\x5d\x30\x1a\x91\x78\x44\xe2\xdd\x88\x48\x3c\x22\xf1\x88\xc4\x1f\x64\xcd\x88\xc4\x23\x12\xdf\x1e\x11\x89\x37\x34\x11\x89\x47\x24\xfe\xb5\x91\x78\xa8\x53\x33\x70\xa6\x6e\x9b\x16\xeb\xb4\xe1\x26\x05\x16\xec\xb2\xed\x64\x9d\x6e\xec\xdb\x79\x61\x13\xba\xf0\xeb\x6f\xdb\xaf\xe3\x9c\xc5\xd7\x71\xe2\xeb\x38\xf1\x75\x9c\xf8\x3a\x4e\x3b\xbe\xf6\xeb\x38\xdb\xd7\x73\xe1\x9d\x99\xad\xeb\x38\xef\xb3\x95\xd1\x2b\x29\xc8\xde\x79\x79\xc7\xf7\xe1\x77\xaa\x4c\x89\xaa\xee\xbf\x90\x43\x5f\xe7\x75\x9c\x78\x77\x17\xef\xee\xe2\xdd\x5d\xbc\xbb\x8b\x77\x77\xf1\xee\x2e\xde\xdd\xc5\xbb\xbb\x6e\xc4\xbb\xbb\x78\x77\xb7\xcf\xe4\xf1\xee\xae\x1d\xf1\xee\x2e\xde\xdd\x0d\x98\xe2\xff\xe3\xee\xae\xef\x41\xf1\x57\x1b\x11\x9a\x46\x68\xfa\x3f\x06\x4d\x23\xde\x8c\x78\x33\xe2\xcd\x81\x11\xf1\x66\xc4\x9b\x11\x6f\x46\xbc\xb9\x33\x22\xde\x6c\x68\x22\xde\x8c\x78\x33\xfe\x6a\xe3\x3f\xfc\xd5\xc6\xbb\xb7\xe7\xbd\x37\x41\xc2\x1b\x22\x3d\xcf\x5a\xe2\x8a\x20\x25\x52\x9b\x36\x22\xfe\x17\x37\x42\xe5\x08\x95\x7f\x0f\x50\x39\xfe\x17\x37\xa2\xea\x88\xaa\xf7\x8c\x88\xaa\x23\xaa\x8e\xa8\x3a\xa2\xea\x88\xaa\x0f\x91\x44\x54\x1d\x51\xf5\xd0\xf8\x1d\xff\x02\xa3\x3f\x77\xdf\x0f\x30\xfe\x1d\x00\x00\xff\xff\xcd\xc3\xfd\xa8\xf2\x56\x00\x00") func operatorsCoreosCom_operatorconditionsYamlBytes() ([]byte, error) { return bindataRead( @@ -164,7 +164,7 @@ func operatorsCoreosCom_operatorconditionsYaml() (*asset, error) { return a, nil } -var _operatorsCoreosCom_operatorgroupsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5a\xe9\x6f\x1b\x37\x16\xff\xee\xbf\xe2\x41\x5d\x20\x76\x56\x1a\xc5\xee\x22\xdb\x0a\x08\x02\x23\x69\x0a\x6f\x73\x18\xb1\xdb\x0f\x6b\x7b\xb7\xd4\xcc\xd3\x88\x35\x87\x9c\x92\x1c\xdb\x6a\x90\xff\x7d\xf1\x1e\x39\x87\x4e\xcb\x49\xda\xed\x2e\xa4\x2f\xf6\x0c\x8f\x79\xe7\xef\x1d\xa4\x28\xe5\x4f\x68\x9d\x34\x7a\x04\xa2\x94\x78\xe7\x51\xd3\x93\x4b\xae\xbf\x71\x89\x34\xc3\x9b\xc3\xbd\x6b\xa9\xb3\x11\xbc\xa8\x9c\x37\xc5\x7b\x74\xa6\xb2\x29\xbe\xc4\x89\xd4\xd2\x4b\xa3\xf7\x0a\xf4\x22\x13\x5e\x8c\xf6\x00\x84\xd6\xc6\x0b\x7a\xed\xe8\x11\x20\x35\xda\x5b\xa3\x14\xda\x41\x8e\x3a\xb9\xae\xc6\x38\xae\xa4\xca\xd0\xf2\xe6\xf5\xa7\x6f\x9e\x24\x4f\x93\x27\x7b\x00\xa9\x45\x5e\x7e\x2e\x0b\x74\x5e\x14\xe5\x08\x74\xa5\xd4\x1e\x80\x16\x05\x8e\xc0\x94\x68\x85\x37\x36\xb7\xa6\x2a\x5d\x52\x3f\xba\x24\x35\x16\x0d\xfd\x29\xf6\x5c\x89\x29\x7d\x9d\xe7\xb4\x4b\xe6\xe6\x84\xfd\x6a\x22\x85\xc7\xdc\x58\x59\x3f\x03\x0c\xc0\xa8\x82\xff\x0f\xcc\xbf\x8b\x7b\x7c\x4f\x5b\xf2\x7b\x25\x9d\xff\x61\x79\xec\xb5\x74\x9e\xc7\x4b\x55\x59\xa1\x16\x09\xe6\x21\x37\x35\xd6\xbf\x6d\x3f\xcf\x9f\xcb\xc3\x90\xd4\x79\xa5\x84\x5d\x58\xb7\x07\xe0\x52\x53\xe2\x08\x78\x59\x29\x52\xcc\xf6\x00\xa2\xf8\xe2\x36\x83\x28\xa2\x9b\xc3\xb8\xab\x4b\xa7\x58\x88\xfa\x1b\x40\x5b\xea\xe3\xd3\x93\x9f\xbe\x3e\x5b\x18\x00\xc8\xd0\xa5\x56\x96\x9e\x95\x31\xc7\x10\x48\x07\x7e\x8a\x50\x69\xe9\xc1\x4c\xa0\xa8\x94\x97\x1e\xb5\xd0\xe9\x0c\x26\xc6\xc2\xbb\xd7\x6f\xa0\x10\x5a\xe4\x98\x75\x44\x0d\x27\x9e\x74\xef\xbc\x15\x52\x87\x1d\xa4\x76\x5e\x28\xc5\xea\xa5\x9d\x9a\xc9\x20\x35\x48\xef\x82\x46\x88\x37\xf0\x06\x04\x90\x1a\xe5\x44\x62\x06\x0e\xf9\xd3\x5e\xd8\x1c\x7d\x3b\xcd\x25\x1d\x0e\xfc\x8c\xc4\x63\xc6\xbf\x60\xea\x3b\xaf\x2d\xfe\x5a\x49\x8b\x59\x97\x59\x12\x55\x6d\xb4\x9d\xd7\xa5\x25\x8a\x7c\xc7\x0a\xc2\xaf\xe3\x22\x73\xef\x17\xa4\xf6\x88\x44\x1b\xe6\x41\x46\xde\x81\x81\xed\xa8\x24\x62\x83\xc5\xce\x9c\x4c\xa5\x03\x8b\xa5\x45\x87\xda\x37\x12\x11\x3a\x32\x90\xc0\x19\x5a\x5a\x48\xb6\x52\xa9\x8c\x44\x79\x83\xd6\x83\xc5\xd4\xe4\x5a\xfe\xd6\xec\xe6\x48\x56\xf4\x19\x25\x3c\x3a\x0f\x52\x7b\xb4\x5a\x28\xb8\x11\xaa\xc2\x3e\x08\x9d\x41\x21\x66\x60\x91\xf6\x85\x4a\x77\x76\xe0\x29\x2e\x81\x37\xc6\x92\x76\x26\x66\x04\x53\xef\x4b\x37\x1a\x0e\x73\xe9\x6b\x00\x48\x4d\x51\x90\xf2\x67\x43\xf6\x65\x39\xae\x48\x67\xc3\x0c\x6f\x50\x0d\x9d\xcc\x07\xc2\xa6\x53\xe9\x31\xf5\x95\xc5\xa1\x28\xe5\x80\x89\xd5\x0c\x02\x49\x91\x7d\x65\x23\x64\xb8\x47\x0b\xe2\x0b\x2a\x73\xde\x4a\x9d\xcf\x0d\xb1\xcf\x6d\x94\x35\x79\x1e\x59\xa6\x88\xcb\x03\x2f\xad\x48\xe9\x15\x49\xe5\xfd\x77\x67\xe7\x50\x13\x10\xc4\x1e\x24\xdc\x4e\x75\xad\xb0\x49\x50\x52\x4f\xd0\x86\x99\x13\x6b\x0a\xde\x05\x75\x56\x1a\xa9\x3d\x3f\xa4\x4a\xa2\xf6\xe0\xaa\x71\x41\x46\x4b\x06\x86\xce\x93\x1e\x12\x78\xc1\xf8\x07\x63\x84\xaa\xcc\x84\xc7\x2c\x81\x13\x0d\x2f\x44\x81\xea\x85\x70\xf8\xbb\x8b\x9a\x24\xea\x06\x24\xbe\xed\x85\xdd\x85\xef\xe5\x05\x4b\x0e\x05\x50\xc3\xeb\x5a\xed\xcc\xe1\xc7\x59\x89\x69\x8d\x21\xb4\x92\x31\x43\xe8\x05\x90\xa9\x55\x94\x6c\x4b\xc4\x7a\x77\x65\x12\x51\x61\xea\x8d\x5d\x1e\x59\x20\xf5\x2c\x4e\x8c\x2b\x02\x99\x73\xa4\x3d\x72\x9b\x71\x67\x0b\x4a\xef\xa3\x96\xb5\x20\x7c\x3a\xfd\xee\x8e\x6c\xb2\x03\xe9\xf7\x50\xbf\xb8\x28\x78\x04\x45\x26\x42\x13\x25\xc6\xa8\x1a\x51\xd4\x48\x58\x04\x93\x3f\x9f\xe2\xdc\x1b\x10\x16\xe1\xf8\xed\x4b\xcc\x56\x31\xd7\x32\x28\xac\x15\xb3\x35\x33\xa4\xc7\x62\x2d\xe1\x0b\xa4\x1f\x6f\x20\x2f\x3a\x76\x3d\xe2\xa7\x82\x63\x89\xe7\x48\x12\x40\xab\x0f\x02\xae\x71\x16\xf0\x8d\x60\x33\xaa\x2c\x4c\xb6\xc8\x68\xc8\xca\xbc\xc6\x19\x4f\x8a\x60\xb7\x96\xba\x7b\xf4\x17\x7e\xab\xa3\xc9\xfc\x6f\x40\x9f\xdc\x38\x5e\x13\xbb\x76\xd2\x7d\xc6\x12\x7e\xd7\x38\xdb\x34\xbc\x20\x70\x92\x43\x74\xc3\x20\x79\x7a\xc1\xd2\x62\xcf\xac\x85\x2d\xca\x52\x49\x64\x34\xdb\xb8\xf7\x5a\x38\x99\xff\xd5\xac\x3e\x80\xd0\x46\x95\x2d\x42\x07\x65\x3f\x72\x41\xb1\x64\xe9\x53\x59\xc6\x24\x21\xa4\x06\x75\x28\xfb\x49\x28\xd9\x49\x43\xd8\xaa\x4f\x74\x1f\xde\x1a\x4f\x7f\xbe\xbb\x93\x04\xd5\x64\x0f\x2f\x0d\xba\xb7\xc6\xf3\x9b\x2f\xc2\x6a\x20\xe1\x01\x8c\x86\x05\x6c\xec\x3a\xf8\x15\x71\xd2\x8d\x67\x94\x46\x4d\x58\x3f\x8d\x50\xa4\xa3\x88\x62\x6c\xcd\x11\x67\x18\x61\xa3\xb0\x45\x51\x39\x0e\x40\xda\xe8\x01\x16\xa5\x9f\xad\xdc\x23\x0a\xc2\xd8\x39\x39\x6c\xd8\x2e\x6e\x75\x4e\x71\x31\x8c\x84\x0c\x46\x51\x2a\x0a\x59\xc5\x44\x73\x34\xa6\x5c\x5a\xa6\x50\xa0\xcd\x11\x4a\x42\xa8\x6d\xc4\xbb\x09\x57\xc2\xef\x1e\x74\xd9\x52\x57\x0c\x99\xaf\xc9\x01\x1e\x00\xb1\x61\x7e\x80\xa5\x42\x94\xa4\xa6\x0f\x84\x3e\x2c\xa9\x8f\x50\x0a\x49\x19\xef\x31\x67\xef\x0a\xe7\xc6\xa4\x66\x99\x76\xb7\xa1\x1d\xa4\x03\x82\x92\x1b\xa1\x08\xef\xc8\x92\x35\xa0\x0a\xe8\x47\x49\xf6\x02\xb0\xf7\xe1\x76\x6a\x5c\x00\xb3\x89\x44\xc5\xb9\x4f\xef\x1a\x67\xbd\xfe\x92\x6a\x7b\x27\xba\x17\x70\x71\x49\x99\x0d\x88\x1a\xad\x66\xd0\xe3\xb1\xde\xa7\xc7\x82\x8d\x60\x29\xb2\x8c\xcb\x43\xa1\x4e\xb7\x40\xb3\x8d\x7a\x73\x68\x6f\x64\x8a\xc7\x69\x6a\x2a\xcd\x85\xd3\x16\x71\x7d\x71\x49\x0d\x7e\x22\x2b\xa4\x9e\xab\x2d\x78\x26\x88\x30\x15\x6e\xa7\x32\x9d\xc2\xad\x54\x8a\xd3\x38\x87\x19\xa9\x27\xc3\x52\x99\x59\x23\xe7\x7d\x77\x10\x34\x4b\xf9\x64\x2d\x7b\xae\xd4\xd6\xa7\x06\xeb\x98\xa3\xf4\x3f\x3d\xb5\xe6\x46\x66\x98\x1d\x9f\x9e\xac\x94\xd2\x3c\x73\xbc\x04\x3c\x2a\xe5\xb8\xfc\xa2\x9c\xd3\x9b\x98\x73\xae\x4c\x61\xca\xce\xfe\x9d\x22\x7d\x2d\xb1\x63\x63\x14\x8a\xe5\xf1\x90\x0a\x35\x45\xe8\xfd\xb4\x9e\x2f\x2c\x88\x70\x87\x77\xa5\x92\xa9\xf4\x35\x7e\xb7\xb9\x15\xd7\x33\xbc\x88\x81\x4b\x72\x36\xe0\xd0\xf7\xdb\x5c\x4d\x3a\x90\xb9\x36\x76\xb5\x7d\x6e\xc6\x93\x0d\x28\x72\x0f\x76\xdc\x0d\xae\xab\x31\x5a\x8d\x1e\xdd\x80\x72\xac\x41\x5c\x80\x0b\xe9\xb1\x17\xbe\x5a\xfa\xc4\x86\x04\x99\xe7\x37\x29\x72\x78\x5a\x95\x24\xbf\x7f\x78\x8e\xbc\x3e\x5f\x19\x80\x12\xce\xff\x18\xaa\x94\x07\x64\xd6\xa9\xd1\xc1\xaf\xef\x57\xfd\x8b\x66\xea\x62\x8c\x5b\x65\xa1\xed\xc6\x5f\x54\xa9\x73\x14\xf5\x1a\x92\x5a\x28\xcc\xd0\x0b\xa9\x82\xc4\x8d\x46\x10\x04\x0d\xbe\xa6\x32\xad\xac\xe5\x6a\xcf\x93\x67\xd5\x95\xfb\xf1\xe9\x09\x34\xda\x80\xc1\x60\x10\xe2\xa2\xf3\xb6\x4a\xd9\x5e\xa9\x0a\xd7\x19\x66\xbc\x6b\x26\x2d\x97\xde\x8e\x36\x6f\xe5\x10\x33\xaf\x00\xe7\xa5\xf0\x53\x48\x82\xf2\x93\x8e\x28\x00\x5e\x19\x0b\x78\x27\x8a\x52\x61\x9f\xc5\x00\xaf\x8c\x89\x36\x13\x3e\xf8\x81\x19\x1d\x0e\xe1\x7d\x9b\x30\x71\x50\x18\x13\xb6\x85\x7c\x89\xbb\x0b\x30\x31\x86\x24\xdd\xe5\x29\xa9\x17\xff\xa0\xcd\xad\x5e\x45\x02\x7f\x53\x58\x1c\xc1\x65\xef\xf8\x46\x48\x25\xc6\x0a\x2f\x7b\x7d\xb8\xec\x9d\x5a\x93\x73\x88\xd2\xf9\x65\x8c\x39\x97\xbd\x97\x98\x5b\x91\x61\x76\xd9\xab\xb7\xfe\x2b\x67\x01\x6f\x28\x21\xf8\x01\x67\xcf\x78\xc3\xb9\xa1\xb3\x90\x35\xcc\x9e\x85\xa4\xa1\x1e\x23\x27\x3b\x9f\x95\xf8\x8c\x22\x66\xf7\xe5\x1b\x51\xce\x6d\xd4\xb1\xb4\x8b\x2b\xaa\x67\x6f\x0e\x93\x56\xd5\x3f\xff\xe2\x8c\x1e\x5d\xf6\x5a\x9e\xfa\xa6\x20\x93\x29\xfd\xec\xb2\x07\x73\x14\x8c\x2e\x7b\x4c\x43\xfd\xbe\x26\x7a\x74\xd9\xa3\xaf\xd1\x6b\x6b\xbc\x19\x57\x93\xd1\x65\x6f\x3c\xf3\xe8\xfa\x87\x7d\x8b\x65\x9f\x00\xec\x59\xfb\x85\xcb\xde\xcf\x70\xa9\x6b\xa2\x8d\x9f\xa2\x0d\x9a\x76\xf0\xb1\xb7\x01\x7d\x36\x84\xd4\xfb\x6a\x8f\xe0\xd1\xe7\x56\x68\x27\xeb\x0e\xea\xda\xa9\x05\x3a\x27\xf2\xf5\xe3\x16\x85\x5b\x19\x1e\xc2\x70\xb0\x92\xb5\xc3\xc4\xcb\xca\xc1\xfb\x0b\x9b\x65\x1e\xb6\x2c\x28\x97\x17\xb6\xe5\x8e\xf3\xe0\xe9\x05\x7b\x74\x63\x17\xbe\x99\x4d\x8e\x6a\x4d\xc1\xfe\x1f\x01\x98\x53\x32\xd6\x5b\x4c\x7a\x63\x23\x6e\x8c\x70\x3b\x45\x1d\x5b\xa2\x19\x5a\x35\xa3\xcc\xb7\xdd\x35\x9d\x0a\x9d\x63\x96\x40\x48\xbb\x05\xe3\x01\x05\xe8\x6b\x72\x30\x4e\xd7\x34\x54\xae\x6e\x50\x31\x5d\xcd\x8e\x04\x2c\x01\x10\xe2\x36\x8c\x9c\x69\x8a\xa5\x27\xaf\xbb\xaf\x7a\xbd\xa7\x46\x99\x18\x5b\x08\x3f\x02\xc2\xfc\x81\x5f\x6f\x1e\xd1\x38\xb6\x14\x7c\x9c\x1d\xb2\xe3\x69\x55\x08\x4d\xd6\x93\x11\xbd\xed\x98\xce\x64\x2a\xb8\x2b\x57\xe3\xad\x18\x9b\x2a\x20\x60\xab\x87\x28\xea\x42\xcc\x48\xce\x94\x26\x90\x8f\x46\xb6\x3e\x93\xf9\x42\xdc\xbd\x46\x9d\xfb\xe9\x08\xbe\x3e\xfa\xfb\xd3\x6f\xd6\x4c\x0c\xa0\x89\xd9\xf7\xa8\x29\x3e\xad\x68\xfa\xae\x11\xc3\xf2\xc2\x6e\x01\x4b\x7c\x26\x75\xa7\x2d\xc9\xdb\x39\x4d\x05\xde\x5a\xd0\xad\xe0\x84\x07\xc6\x82\x92\xcf\xaa\x24\xb9\x50\x14\xe0\xfe\xb9\x4e\xb1\x0f\x72\xb2\x7a\x33\xd9\x80\xbb\x9a\xc1\xe1\x51\x1f\xc6\x51\xc4\xcb\xb0\x7e\x71\x77\x95\xac\x20\x59\x3a\xf8\xb6\xbf\x40\x0f\xe5\xb8\x15\x47\x44\x4e\x2f\x6f\xa5\x9f\x82\xc5\x10\x26\x63\xf3\x79\x45\x98\xc4\x86\xde\xfb\x14\x47\xc1\x32\xc7\xf5\xdd\x90\xda\x6c\xa5\xf6\x4f\xff\xb6\x5e\xbf\x52\xcb\xa2\x2a\x46\xf0\x64\xcd\x94\x00\x69\x5b\x6a\x33\x4c\x6e\xb3\x04\x41\xd0\x95\x5b\x51\x14\x9c\x7a\xcb\x0c\xb5\xa7\xfa\xc1\x76\x4d\xdb\x73\x1d\xc5\x0b\x27\xdc\x8a\xea\x48\xf1\x91\x8b\x38\xd4\x31\xf6\x53\x6b\xb2\x2a\x45\xcb\xd1\x39\x56\x24\x69\x17\xa0\x66\x25\x06\x6f\x08\xe7\x09\x94\x35\x63\xea\x9b\xce\x7d\x68\xee\xa3\xd0\x52\xe7\x2e\x7e\x52\xba\x00\x20\x21\x1a\xdf\x4e\x91\x43\xcf\x5c\x25\xc8\x54\x39\x99\xa1\xc5\x0c\x04\xe4\x95\xb0\x42\x7b\xc4\x8c\xe0\x27\x54\x83\xa1\x9b\xde\x42\x9e\x68\x7b\xd8\xb5\x37\x06\x57\x0d\x60\x45\x24\xc6\xbe\x77\xe8\x13\x7c\x31\x57\x3d\x7c\x72\xb4\x51\xe5\xcd\xbc\xf5\xbd\x34\xe1\x3d\x5a\x3d\x82\x7f\x5d\x1c\x0f\xfe\x29\x06\xbf\x5d\xed\xc7\x7f\x9e\x0c\xbe\xfd\x77\x7f\x74\xf5\xb8\xf3\x78\x75\xf0\xfc\x2f\x6b\x76\x5a\x9d\xd6\xaf\x31\x9f\x18\x44\xea\x24\xb2\xd6\x68\x9f\x23\x8c\x99\xc0\xb9\xad\xb0\x0f\xaf\x84\x72\xd8\x87\x1f\x35\x87\x86\xcf\x14\x1a\xea\xaa\xd8\xdc\x96\xec\xd1\x57\x57\x27\x1f\xcd\x14\x26\x69\xf3\x9c\x48\xee\xa6\xce\xc0\x76\x42\xe2\xf4\xcd\x4c\xba\x48\xd3\x39\x2b\x01\x46\x3c\x4a\x59\x93\x98\xfe\x26\xa9\x29\x86\x9d\xb3\x14\xca\xbb\xdf\x08\x3d\x83\x16\xd6\x42\xb2\xba\x68\xe9\xce\x13\x36\x89\xd4\x1a\xe7\x9a\x93\x06\x07\x4a\x5e\x23\x34\x19\x6d\x00\xcb\x31\xa6\x82\x13\x75\x3b\x96\xde\x0a\x3b\xeb\xd4\x25\x90\x0a\x1d\x7b\x02\x93\x4a\xc1\xbe\x43\x84\x44\x9b\x0c\x97\xd1\xf5\x20\x60\xa8\x18\x4b\x25\xfd\x2c\x34\x10\x52\xa3\x27\x4a\xc6\xfa\xa0\x28\x8d\xf5\x42\xfb\xba\xf9\x92\xe3\x1d\x95\xba\xdc\xf7\x09\x45\xf2\x7e\xa6\xdd\xe1\xe1\xd1\xd7\x67\xd5\x38\x33\x85\x90\xfa\x55\xe1\x87\x07\xcf\xf7\x7f\xad\x84\xe2\xce\x05\xd5\xd4\xaf\x0a\x7f\xf0\xe5\xc2\xe2\xe1\xd3\x2d\xbc\x68\xff\x22\xf8\xca\xd5\xfe\xc5\x20\xfe\xf7\xb8\x7e\x75\xf0\x7c\xff\x32\xd9\x38\x7e\xf0\x98\x78\xe8\x78\xe0\xd5\xc5\xa0\x75\xbf\xe4\xea\xf1\xc1\xf3\xce\xd8\xc1\xb2\x33\x76\xaa\xd6\x7b\x0b\xd0\xd7\xed\xdc\x90\x9d\xf8\xfa\x52\x41\xed\x99\xf3\xa9\xe1\x62\x49\x1a\xbd\x98\xe2\x71\xdc\xe6\xc1\xdd\x9d\x6d\x92\x2e\xbd\x7d\x37\x65\xbe\x8f\x12\x1a\xf7\xab\x8f\xc6\x9b\x08\x34\xc7\xd4\x9f\xb1\x5f\x02\x4b\x1d\xbe\xf7\x38\x79\x60\x83\xef\x3d\x4e\xc0\xe2\x04\x2d\xea\x14\x6b\xc1\xcc\xf7\xf5\xe2\xb1\x6f\xd3\xf8\xfb\x1d\xce\xf0\xd6\x5f\x14\x58\xc9\x02\x25\xfb\xf1\x72\x40\x6d\x8f\x91\x87\xb5\x07\x12\xf7\xba\x34\xc7\xe3\x53\xe1\xa7\x5b\x51\xf0\xe8\x24\x8a\x8d\xbb\xf7\x7c\x9e\x52\x4a\x4c\x71\xee\x2e\x02\xe7\x71\x28\xb2\xf8\x92\x12\x1f\x8b\x71\xac\x1f\x32\x8e\x78\x66\xd1\xde\x55\xa0\xa4\x09\x04\x01\xb1\xcc\xe0\x1f\x67\xef\xde\x0e\xbf\x37\x31\x57\xa0\x6a\xc6\x05\xdf\xe2\x6e\x73\x1f\x5c\x95\x4e\x41\x38\x22\x8d\xea\xdb\x33\x6e\x4b\x14\x42\xcb\x09\x3a\x9f\xc4\xdd\xd0\xba\x8b\xa3\xab\x64\xbe\x1d\x22\xe3\xc1\x46\x7d\xa2\x1f\x0d\x80\x7d\x83\x98\x69\xd6\x72\xd2\xca\x24\x95\x26\x8b\x44\xdf\x32\xb1\x5e\x5c\x23\x98\x48\x6c\x85\x1c\x14\x46\xd0\x23\x33\xe9\x7c\xfa\x03\x39\xd6\xc7\x1e\xec\xdf\x4e\xd1\x22\xf4\xe8\xb1\x17\x3e\xd8\x5c\xc0\xa0\x77\x9d\x88\x1f\x3f\x1c\xf2\x7b\x2b\xf3\x9c\xd3\x2d\xbe\x4d\x70\x83\xda\x1f\x70\x7c\x9b\x80\x36\x9d\xc9\x3a\xf6\xa9\xdb\xee\xf4\x22\x21\x17\x47\x57\x3d\xd8\x9f\xe7\x8b\x52\x50\xbc\x83\xa3\xa6\x23\x5d\x9a\xec\xa0\xae\x5a\x67\xda\x8b\x3b\x2e\x0c\xa6\xc6\xa1\x0e\x9d\x7f\x6f\x60\x2a\x6e\x10\x9c\xa1\xe2\x13\x95\x1a\x84\x04\x33\x83\xdb\xd0\xa0\xab\x45\x19\x0e\x75\x4a\x61\xfd\xc2\xf5\x94\xf3\x77\x2f\xdf\x8d\xc2\xd7\x48\x6d\xb9\xae\xab\xdc\x89\xd4\x42\xc5\xd3\x87\x26\x3f\x24\x42\xaa\xa0\x24\x6f\x62\x69\x5b\x9f\x8c\x4c\x2a\x5f\x59\x4c\x16\xaf\x2b\x6c\x6d\xf1\xab\xee\x8a\xac\x36\x76\xbe\x33\xb2\xe8\x68\xff\xc5\x1b\x19\x5b\xb3\xa8\xd7\x9c\x78\x2c\xb3\xf8\xb6\x63\x83\x1b\x59\x6c\xa1\x99\xb8\xcc\x4c\xea\x88\xc1\x14\x4b\xef\x86\xe6\x86\xa0\x13\x6f\x87\xb7\xc6\x5e\x4b\x9d\x0f\xc8\xc8\x06\x41\xf3\x6e\xc8\x21\x66\xf8\x15\xff\xf9\x2c\x8e\x38\x4e\x6d\xcf\x56\xb8\x18\xf6\x07\xf0\xc6\xe1\x73\xf8\xc9\xac\xd5\xf9\xe5\x43\x22\xc1\xa3\xb3\xba\xf8\x5b\x58\x4d\xee\x12\x0e\xa4\xe2\x8d\xb1\x0e\xc2\x15\x22\x0b\x10\x28\xf4\xec\x77\x37\x63\x12\x20\xd7\xf8\xe9\x6c\x10\xaf\x74\x0e\x84\xce\x06\x4d\x7e\x9d\xce\x3e\x59\x62\x95\xdc\xd2\x81\x7f\x3c\x79\xf9\xc7\x18\x77\x25\x1f\xe4\xad\xa1\x8b\x32\x02\x6f\xab\x3a\xbb\x73\xde\x58\x91\xe3\xfc\xbb\x6a\xdc\x14\x1f\x2d\xc3\xb1\xae\x84\x0f\x1f\xf9\x55\x7b\x89\x53\xa8\x72\x2a\x8e\xea\xb5\xbb\xab\x9c\xbb\xab\x9c\xbb\xab\x9c\xbb\xab\x9c\x1b\x85\xbd\xbb\xca\xb9\xbb\xca\xb9\xbb\xca\xb9\xbb\xca\xb9\xbb\xca\xf9\x79\xac\xee\xae\x72\xee\xae\x72\xee\xae\x72\x36\xbf\xdd\x55\xce\x2d\x99\xdb\x5d\xe5\xfc\xb3\x5f\xe5\xfc\xff\xbe\x9c\xb9\x3b\x1c\xfb\xdf\x38\x1c\xdb\x1d\x77\xed\x8e\xbb\x76\xc7\x5d\xbb\xe3\xae\x4f\xb0\xf8\xdd\x71\xd7\xee\xb8\x6b\x77\xdc\xb5\x3b\xee\xfa\x93\x1e\x77\x4d\x84\x72\x5b\x9f\x77\xfd\x27\x00\x00\xff\xff\x65\x94\xba\x94\x7c\x46\x00\x00") +var _operatorsCoreosCom_operatorgroupsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5a\xe9\x6f\x1b\x37\x16\xff\xee\xbf\xe2\x41\x5d\x20\x76\x56\x1a\xc5\xee\x22\xdb\x0a\x08\x02\x23\x69\x0a\x6f\x73\x18\xb1\xdb\x0f\x6b\x7b\xb7\xd4\xcc\xd3\x88\x35\x87\x9c\x92\x1c\xdb\x6a\x90\xff\x7d\xf1\x1e\x39\x87\x4e\xcb\x49\xda\xed\x2e\xa4\x2f\xf6\x0c\x8f\x79\xe7\xef\x1d\xa4\x28\xe5\x4f\x68\x9d\x34\x7a\x04\xa2\x94\x78\xe7\x51\xd3\x93\x4b\xae\xbf\x71\x89\x34\xc3\x9b\xc3\xbd\x6b\xa9\xb3\x11\xbc\xa8\x9c\x37\xc5\x7b\x74\xa6\xb2\x29\xbe\xc4\x89\xd4\xd2\x4b\xa3\xf7\x0a\xf4\x22\x13\x5e\x8c\xf6\x00\x84\xd6\xc6\x0b\x7a\xed\xe8\x11\x20\x35\xda\x5b\xa3\x14\xda\x41\x8e\x3a\xb9\xae\xc6\x38\xae\xa4\xca\xd0\xf2\xe6\xf5\xa7\x6f\x9e\x24\x4f\x93\xa3\x3d\x80\xd4\x22\x2f\x3f\x97\x05\x3a\x2f\x8a\x72\x04\xba\x52\x6a\x0f\x40\x8b\x02\x47\x60\x4a\xb4\xc2\x1b\x9b\x5b\x53\x95\x2e\xa9\x1f\x5d\x92\x1a\x8b\x86\xfe\x14\x7b\xae\xc4\x94\xbe\xce\x73\xda\x25\x73\x73\xc2\x7e\x35\x91\xc2\x63\x6e\xac\xac\x9f\x01\x06\x60\x54\xc1\xff\x07\xe6\xdf\xc5\x3d\xbe\xa7\x2d\xf9\xbd\x92\xce\xff\xb0\x3c\xf6\x5a\x3a\xcf\xe3\xa5\xaa\xac\x50\x8b\x04\xf3\x90\x9b\x1a\xeb\xdf\xb6\x9f\xe7\xcf\xe5\x61\x48\xea\xbc\x52\xc2\x2e\xac\xdb\x03\x70\xa9\x29\x71\x04\xbc\xac\x14\x29\x66\x7b\x00\x51\x7c\x71\x9b\x41\x14\xd1\xcd\x61\xdc\xd5\xa5\x53\x2c\x44\xfd\x0d\xa0\x2d\xf5\xf1\xe9\xc9\x4f\x5f\x9f\x2d\x0c\x00\x64\xe8\x52\x2b\x4b\xcf\xca\x98\x63\x08\xa4\x03\x3f\x45\xa8\xb4\xf4\x60\x26\x50\x54\xca\x4b\x8f\x5a\xe8\x74\x06\x13\x63\xe1\xdd\xeb\x37\x50\x08\x2d\x72\xcc\x3a\xa2\x86\x13\x4f\xba\x77\xde\x0a\xa9\xc3\x0e\x52\x3b\x2f\x94\x62\xf5\xd2\x4e\xcd\x64\x90\x1a\xa4\x77\x41\x23\xc4\x1b\x78\x03\x02\x48\x8d\x72\x22\x31\x03\x87\xfc\x69\x2f\x6c\x8e\xbe\x9d\xe6\x92\x0e\x07\x7e\x46\xe2\x31\xe3\x5f\x30\xf5\x9d\xd7\x16\x7f\xad\xa4\xc5\xac\xcb\x2c\x89\xaa\x36\xda\xce\xeb\xd2\x12\x45\xbe\x63\x05\xe1\xd7\x71\x91\xb9\xf7\x0b\x52\x7b\x44\xa2\x0d\xf3\x20\x23\xef\xc0\xc0\x76\x54\x12\xb1\xc1\x62\x67\x4e\xa6\xd2\x81\xc5\xd2\xa2\x43\xed\x1b\x89\x08\x1d\x19\x48\xe0\x0c\x2d\x2d\x24\x5b\xa9\x54\x46\xa2\xbc\x41\xeb\xc1\x62\x6a\x72\x2d\x7f\x6b\x76\x73\x24\x2b\xfa\x8c\x12\x1e\x9d\x07\xa9\x3d\x5a\x2d\x14\xdc\x08\x55\x61\x1f\x84\xce\xa0\x10\x33\xb0\x48\xfb\x42\xa5\x3b\x3b\xf0\x14\x97\xc0\x1b\x63\x49\x3b\x13\x33\x82\xa9\xf7\xa5\x1b\x0d\x87\xb9\xf4\x35\x00\xa4\xa6\x28\x48\xf9\xb3\x21\xfb\xb2\x1c\x57\xa4\xb3\x61\x86\x37\xa8\x86\x4e\xe6\x03\x61\xd3\xa9\xf4\x98\xfa\xca\xe2\x50\x94\x72\xc0\xc4\x6a\x06\x81\xa4\xc8\xbe\xb2\x11\x32\xdc\xa3\x05\xf1\x05\x95\x39\x6f\xa5\xce\xe7\x86\xd8\xe7\x36\xca\x9a\x3c\x8f\x2c\x53\xc4\xe5\x81\x97\x56\xa4\xf4\x8a\xa4\xf2\xfe\xbb\xb3\x73\xa8\x09\x08\x62\x0f\x12\x6e\xa7\xba\x56\xd8\x24\x28\xa9\x27\x68\xc3\xcc\x89\x35\x05\xef\x82\x3a\x2b\x8d\xd4\x9e\x1f\x52\x25\x51\x7b\x70\xd5\xb8\x20\xa3\x25\x03\x43\xe7\x49\x0f\x09\xbc\x60\xfc\x83\x31\x42\x55\x66\xc2\x63\x96\xc0\x89\x86\x17\xa2\x40\xf5\x42\x38\xfc\xdd\x45\x4d\x12\x75\x03\x12\xdf\xf6\xc2\xee\xc2\xf7\xf2\x82\x25\x87\x02\xa8\xe1\x75\xad\x76\xe6\xf0\xe3\xac\xc4\xb4\xc6\x10\x5a\xc9\x98\x21\xf4\x02\xc8\xd4\x2a\x4a\xb6\x25\x62\xbd\xbb\x32\x89\xa8\x30\xf5\xc6\x2e\x8f\x2c\x90\x7a\x16\x27\xc6\x15\x81\xcc\x39\xd2\x1e\xb9\xcd\xb8\xb3\x05\xa5\xf7\x51\xcb\x5a\x10\x3e\x9d\x7e\x77\x47\x36\xd9\x81\xf4\x7b\xa8\x5f\x5c\x14\x3c\x82\x22\x13\xa1\x89\x12\x63\x54\x8d\x28\x6a\x24\x2c\x82\xc9\x9f\x4f\x71\xee\x0d\x08\x8b\x70\xfc\xf6\x25\x66\xab\x98\x6b\x19\x14\xd6\x8a\xd9\x9a\x19\xd2\x63\xb1\x96\xf0\x05\xd2\x8f\x37\x90\x17\x1d\xbb\x1e\xf1\x53\xc1\xb1\xc4\x73\x24\x09\xa0\xd5\x07\x01\xd7\x38\x0b\xf8\x46\xb0\x19\x55\x16\x26\x5b\x64\x34\x64\x65\x5e\xe3\x8c\x27\x45\xb0\x5b\x4b\xdd\x3d\xfa\x0b\xbf\xd5\xd1\x64\xfe\x37\xa0\x4f\x6e\x1c\xaf\x89\x5d\x3b\xe9\x3e\x63\x09\xbf\x6b\x9c\x6d\x1a\x5e\x10\x38\xc9\x21\xba\x61\x90\x3c\xbd\x60\x69\xb1\x67\xd6\xc2\x16\x65\xa9\x24\x32\x9a\x6d\xdc\x7b\x2d\x9c\xcc\xff\x6a\x56\x1f\x40\x68\xa3\xca\x16\xa1\x83\xb2\x1f\xb9\xa0\x58\xb2\xf4\xa9\x2c\x63\x92\x10\x52\x83\x3a\x94\xfd\x24\x94\xec\xa4\x21\x6c\xd5\x27\xba\x0f\x6f\x8d\xa7\x3f\xdf\xdd\x49\x82\x6a\xb2\x87\x97\x06\xdd\x5b\xe3\xf9\xcd\x17\x61\x35\x90\xf0\x00\x46\xc3\x02\x36\x76\x1d\xfc\x8a\x38\xe9\xc6\x33\x4a\xa3\x26\xac\x9f\x46\x28\xd2\x51\x44\x31\xb6\xe6\x88\x33\x8c\xb0\x51\xd8\xa2\xa8\x1c\x07\x20\x6d\xf4\x00\x8b\xd2\xcf\x56\xee\x11\x05\x61\xec\x9c\x1c\x36\x6c\x17\xb7\x3a\xa7\xb8\x18\x46\x42\x06\xa3\x28\x15\x85\xac\x62\xa2\x39\x1a\x53\x2e\x2d\x53\x28\xd0\xe6\x08\x25\x21\xd4\x36\xe2\xdd\x84\x2b\xe1\x77\x0f\xba\x6c\xa9\x2b\x86\xcc\xd7\xe4\x00\x0f\x80\xd8\x30\x3f\xc0\x52\x21\x4a\x52\xd3\x07\x42\x1f\x96\xd4\x47\x28\x85\xa4\x8c\xf7\x98\xb3\x77\x85\x73\x63\x52\xb3\x4c\xbb\xdb\xd0\x0e\xd2\x01\x41\xc9\x8d\x50\x84\x77\x64\xc9\x1a\x50\x05\xf4\xa3\x24\x7b\x01\xd8\xfb\x70\x3b\x35\x2e\x80\xd9\x44\xa2\xe2\xdc\xa7\x77\x8d\xb3\x5e\x7f\x49\xb5\xbd\x13\xdd\x0b\xb8\xb8\xa4\xcc\x06\x44\x8d\x56\x33\xe8\xf1\x58\xef\xd3\x63\xc1\x46\xb0\x14\x59\xc6\xe5\xa1\x50\xa7\x5b\xa0\xd9\x46\xbd\x39\xb4\x37\x32\xc5\xe3\x34\x35\x95\xe6\xc2\x69\x8b\xb8\xbe\xb8\xa4\x06\x3f\x91\x15\x52\xcf\xd5\x16\x3c\x13\x44\x98\x0a\xb7\x53\x99\x4e\xe1\x56\x2a\xc5\x69\x9c\xc3\x8c\xd4\x93\x61\xa9\xcc\xac\x91\xf3\xbe\x3b\x08\x9a\xa5\x7c\xb2\x96\x3d\x57\x6a\xeb\x53\x83\x75\xcc\x51\xfa\x9f\x9e\x5a\x73\x23\x33\xcc\x8e\x4f\x4f\x56\x4a\x69\x9e\x39\x5e\x02\x1e\x95\x72\x5c\x7e\x51\xce\xe9\x4d\xcc\x39\x57\xa6\x30\x65\x67\xff\x4e\x91\xbe\x96\xd8\xb1\x31\x0a\xc5\xf2\x78\x48\x85\x9a\x22\xf4\x7e\x5a\xcf\x17\x16\x44\xb8\xc3\xbb\x52\xc9\x54\xfa\x1a\xbf\xdb\xdc\x8a\xeb\x19\x5e\xc4\xc0\x25\x39\x1b\x70\xe8\xfb\x6d\xae\x26\x1d\xc8\x5c\x1b\xbb\xda\x3e\x37\xe3\xc9\x06\x14\xb9\x07\x3b\xee\x06\xd7\xd5\x18\xad\x46\x8f\x6e\x40\x39\xd6\x20\x2e\xc0\x85\xf4\xd8\x0b\x5f\x2d\x7d\x62\x43\x82\xcc\xf3\x9b\x14\x39\x3c\xad\x4a\x92\xdf\x3f\x3c\x47\x5e\x9f\xaf\x0c\x40\x09\xe7\x7f\x0c\x55\xca\x03\x32\xeb\xd4\xe8\xe0\xd7\xf7\xab\xfe\x45\x33\x75\x31\xc6\xad\xb2\xd0\x76\xe3\x2f\xaa\xd4\x39\x8a\x7a\x0d\x49\x2d\x14\x66\xe8\x85\x54\x41\xe2\x46\x23\x08\x82\x06\x5f\x53\x99\x56\xd6\x72\xb5\xe7\xc9\xb3\xea\xca\xfd\xf8\xf4\x04\x1a\x6d\xc0\x60\x30\x08\x71\xd1\x79\x5b\xa5\x6c\xaf\x54\x85\xeb\x0c\x33\xde\x35\x93\x96\x4b\x6f\x47\x9b\xb7\x72\x88\x99\x57\x80\xf3\x52\xf8\x29\x24\x41\xf9\x49\x47\x14\x00\xaf\x8c\x05\xbc\x13\x45\xa9\xb0\xcf\x62\x80\x57\xc6\x44\x9b\x09\x1f\xfc\xc0\x8c\x0e\x87\xf0\xbe\x4d\x98\x38\x28\x8c\x09\xdb\x42\xbe\xc4\xdd\x05\x98\x18\x43\x92\xee\xf2\x94\xd4\x8b\x7f\xd0\xe6\x56\xaf\x22\x81\xbf\x29\x2c\x8e\xe0\xb2\x77\x7c\x23\xa4\x12\x63\x85\x97\xbd\x3e\x5c\xf6\x4e\xad\xc9\x39\x44\xe9\xfc\x32\xc6\x9c\xcb\xde\x4b\xcc\xad\xc8\x30\xbb\xec\xd5\x5b\xff\x95\xb3\x80\x37\x94\x10\xfc\x80\xb3\x67\xbc\xe1\xdc\xd0\x59\xc8\x1a\x66\xcf\x42\xd2\x50\x8f\x91\x93\x9d\xcf\x4a\x7c\x46\x11\xb3\xfb\xf2\x8d\x28\xe7\x36\xea\x58\xda\xc5\x15\xd5\xb3\x37\x87\x49\xab\xea\x9f\x7f\x71\x46\x8f\x2e\x7b\x2d\x4f\x7d\x53\x90\xc9\x94\x7e\x76\xd9\x83\x39\x0a\x46\x97\x3d\xa6\xa1\x7e\x5f\x13\x3d\xba\xec\xd1\xd7\xe8\xb5\x35\xde\x8c\xab\xc9\xe8\xb2\x37\x9e\x79\x74\xfd\xc3\xbe\xc5\xb2\x4f\x00\xf6\xac\xfd\xc2\x65\xef\x67\xb8\xd4\x35\xd1\xc6\x4f\xd1\x06\x4d\x3b\xf8\xd8\xdb\x80\x3e\x1b\x42\xea\x7d\xb5\x47\xf0\xe8\x73\x2b\xb4\x93\x75\x07\x75\xed\xd4\x02\x9d\x13\xf9\xfa\x71\x8b\xc2\xad\x0c\x0f\x61\x38\x58\xc9\xda\x61\xe2\x65\xe5\xe0\xfd\x85\xcd\x32\x0f\x5b\x16\x94\xcb\x0b\xdb\x72\xc7\x79\xf0\xf4\x82\x3d\xba\xb1\x0b\xdf\xcc\x26\x47\xb5\xa6\x60\xff\x8f\x00\xcc\x29\x19\xeb\x2d\x26\xbd\xb1\x11\x37\x46\xb8\x9d\xa2\x8e\x2d\xd1\x0c\xad\x9a\x51\xe6\xdb\xee\x9a\x4e\x85\xce\x31\x4b\x20\xa4\xdd\x82\xf1\x80\x02\xf4\x35\x39\x18\xa7\x6b\x1a\x2a\x57\x37\xa8\x98\xae\x66\x47\x02\x96\x00\x08\x71\x1b\x46\xce\x34\xc5\xd2\x93\xd7\xdd\x57\xbd\xde\x53\xa3\x4c\x8c\x2d\x84\x1f\x01\x61\xfe\xc0\xaf\x37\x8f\x68\x1c\x5b\x0a\x3e\xce\x0e\xd9\xf1\xb4\x2a\x84\x26\xeb\xc9\x88\xde\x76\x4c\x67\x32\x15\xdc\x95\xab\xf1\x56\x8c\x4d\x15\x10\xb0\xd5\x43\x14\x75\x21\x66\x24\x67\x4a\x13\xc8\x47\x23\x5b\x9f\xc9\x7c\x21\xee\x5e\xa3\xce\xfd\x74\x04\x5f\x1f\xfd\xfd\xe9\x37\x6b\x26\x06\xd0\xc4\xec\x7b\xd4\x14\x9f\x56\x34\x7d\xd7\x88\x61\x79\x61\xb7\x80\x25\x3e\x93\xba\xd3\x96\xe4\xed\x9c\xa6\x02\x6f\x2d\xe8\x56\x70\xc2\x03\x63\x41\xc9\x67\x55\x92\x5c\x28\x0a\x70\xff\x5c\xa7\xd8\x07\x39\x59\xbd\x99\x6c\xc0\x5d\xcd\xe0\xf0\xa8\x0f\xe3\x28\xe2\x65\x58\xbf\xb8\xbb\x4a\x56\x90\x2c\x1d\x7c\xdb\x5f\xa0\x87\x72\xdc\x8a\x23\x22\xa7\x97\xb7\xd2\x4f\xc1\x62\x08\x93\xb1\xf9\xbc\x22\x4c\x62\x43\xef\x7d\x8a\xa3\x60\x99\xe3\xfa\x6e\x48\x6d\xb6\x52\xfb\xa7\x7f\x5b\xaf\x5f\xa9\x65\x51\x15\x23\x78\xb2\x66\x4a\x80\xb4\x2d\xb5\x19\x26\xb7\x59\x82\x20\xe8\xca\xad\x28\x0a\x4e\xbd\x65\x86\xda\x53\xfd\x60\xbb\xa6\xed\xb9\x8e\xe2\x85\x13\x6e\x45\x75\xa4\xf8\xc8\x45\x1c\xea\x18\xfb\xa9\x35\x59\x95\xa2\xe5\xe8\x1c\x2b\x92\xb4\x0b\x50\xb3\x12\x83\x37\x84\xf3\x04\xca\x9a\x31\xf5\x4d\xe7\x3e\x34\xf7\x51\x68\xa9\x73\x17\x3f\x29\x5d\x00\x90\x10\x8d\x6f\xa7\xc8\xa1\x67\xae\x12\x64\xaa\x9c\xcc\xd0\x62\x06\x02\xf2\x4a\x58\xa1\x3d\x62\x46\xf0\x13\xaa\xc1\xd0\x4d\x6f\x21\x4f\xb4\x3d\xec\xda\x1b\x83\xab\x06\xb0\x22\x12\x63\xdf\x3b\xf4\x09\xbe\x98\xab\x1e\x3e\x39\xda\xa8\xf2\x66\xde\xfa\x5e\x9a\xf0\x1e\xad\x1e\xc1\xbf\x2e\x8e\x07\xff\x14\x83\xdf\xae\xf6\xe3\x3f\x4f\x06\xdf\xfe\xbb\x3f\xba\x7a\xdc\x79\xbc\x3a\x78\xfe\x97\x35\x3b\xad\x4e\xeb\xd7\x98\x4f\x0c\x22\x75\x12\x59\x6b\xb4\xcf\x11\xc6\x4c\xe0\xdc\x56\xd8\x87\x57\x42\x39\xec\xc3\x8f\x9a\x43\xc3\x67\x0a\x0d\x75\x55\x6c\x6e\x4b\xf6\xe8\xab\xab\x93\x8f\x66\x0a\x93\xb4\x79\x4e\x24\x77\x53\x67\x60\x3b\x21\x71\xfa\x66\x26\x5d\xa4\xe9\x9c\x95\x00\x23\x1e\xa5\xac\x49\x4c\x7f\x93\xd4\x14\xc3\xce\x59\x0a\xe5\xdd\x6f\x84\x9e\x41\x0b\x6b\x21\x59\x5d\xb4\x74\xe7\x09\x9b\x44\x6a\x8d\x73\xcd\x49\x83\x03\x25\xaf\x11\x9a\x8c\x36\x80\xe5\x18\x53\xc1\x89\xba\x1d\x4b\x6f\x85\x9d\x75\xea\x12\x48\x85\x8e\x3d\x81\x49\xa5\x60\xdf\x21\x42\xa2\x4d\x86\xcb\xe8\x7a\x10\x30\x54\x8c\xa5\x92\x7e\x16\x1a\x08\xa9\xd1\x13\x25\x63\x7d\x50\x94\xc6\x7a\xa1\x7d\xdd\x7c\xc9\xf1\x8e\x4a\x5d\xee\xfb\x84\x22\x79\x3f\xd3\xee\xf0\xf0\xe8\xeb\xb3\x6a\x9c\x99\x42\x48\xfd\xaa\xf0\xc3\x83\xe7\xfb\xbf\x56\x42\x71\xe7\x82\x6a\xea\x57\x85\x3f\xf8\x72\x61\xf1\xf0\xe9\x16\x5e\xb4\x7f\x11\x7c\xe5\x6a\xff\x62\x10\xff\x7b\x5c\xbf\x3a\x78\xbe\x7f\x99\x6c\x1c\x3f\x78\x4c\x3c\x74\x3c\xf0\xea\x62\xd0\xba\x5f\x72\xf5\xf8\xe0\x79\x67\xec\x60\xd9\x19\x3b\x55\xeb\xbd\x05\xe8\xeb\x76\x6e\xc8\x4e\x7c\x7d\xa9\xa0\xf6\xcc\xf9\xd4\x70\xb1\x24\x8d\x5e\x4c\xf1\x38\x6e\xf3\xe0\xee\xce\x36\x49\x97\xde\xbe\x9b\x32\xdf\x47\x09\x8d\xfb\xd5\x47\xe3\x4d\x04\x9a\x63\xea\xcf\xd8\x2f\x81\xa5\x0e\xdf\x7b\x9c\x3c\xb0\xc1\xf7\x1e\x27\x60\x71\x82\x16\x75\x8a\xb5\x60\xe6\xfb\x7a\xf1\xd8\xb7\x69\xfc\xfd\x0e\x67\x78\xeb\x2f\x0a\xac\x64\x81\x92\xfd\x78\x39\xa0\xb6\xc7\xc8\xc3\xda\x03\x89\x7b\x5d\x9a\xe3\xf1\xa9\xf0\xd3\xad\x28\x78\x74\x12\xc5\xc6\xdd\x7b\x3e\x4f\x29\x25\xa6\x38\x77\x17\x81\xf3\x38\x14\x59\x7c\x49\x89\x8f\xc5\x38\xd6\x0f\x19\x47\x3c\xb3\x68\xef\x2a\x50\xd2\x04\x82\x80\x58\x66\xf0\x8f\xb3\x77\x6f\x87\xdf\x9b\x98\x2b\x50\x35\xe3\x82\x6f\x71\xb7\xb9\x0f\xae\x4a\xa7\x20\x1c\x91\x46\xf5\xed\x19\xb7\x25\x0a\xa1\xe5\x04\x9d\x4f\xe2\x6e\x68\xdd\xc5\xd1\x55\x32\xdf\x0e\x91\xf1\x60\xa3\x3e\xd1\x8f\x06\xc0\xbe\x41\xcc\x34\x6b\x39\x69\x65\x92\x4a\x93\x45\xa2\x6f\x99\x58\x2f\xae\x11\x4c\x24\xb6\x42\x0e\x0a\x23\xe8\x91\x99\x74\x3e\xfd\x81\x1c\xeb\x63\x0f\xf6\x6f\xa7\x68\x11\x7a\xf4\xd8\x0b\x1f\x6c\x2e\x60\xd0\xbb\x4e\xc4\x8f\x1f\x0e\xf9\xbd\x95\x79\xce\xe9\x16\xdf\x26\xb8\x41\xed\x0f\x38\xbe\x4d\x40\x9b\xce\x64\x1d\xfb\xd4\x6d\x77\x7a\x91\x90\x8b\xa3\xab\x1e\xec\xcf\xf3\x45\x29\x28\xde\xc1\x51\xd3\x91\x2e\x4d\x76\x50\x57\xad\x33\xed\xc5\x1d\x17\x06\x53\xe3\x50\x87\xce\xbf\x37\x30\x15\x37\x08\xce\x50\xf1\x89\x4a\x0d\x42\x82\x99\xc1\x6d\x68\xd0\xd5\xa2\x0c\x87\x3a\xa5\xb0\x7e\xe1\x7a\xca\xf9\xbb\x97\xef\x46\xe1\x6b\xa4\xb6\x5c\xd7\x55\xee\x44\x6a\xa1\xe2\xe9\x43\x93\x1f\x12\x21\x55\x50\x92\x37\xb1\xb4\xad\x4f\x46\x26\x95\xaf\x2c\x26\x8b\xd7\x15\xb6\xb6\xf8\x55\x77\x45\x56\x1b\x3b\xdf\x19\x59\x74\xb4\xff\xe2\x8d\x8c\xad\x59\xd4\x6b\x4e\x3c\x96\x59\x7c\xdb\xb1\xc1\x8d\x2c\xb6\xd0\x4c\x5c\x66\x26\x75\xc4\x60\x8a\xa5\x77\x43\x73\x43\xd0\x89\xb7\xc3\x5b\x63\xaf\xa5\xce\x07\x64\x64\x83\xa0\x79\x37\xe4\x10\x33\xfc\x8a\xff\x7c\x16\x47\x1c\xa7\xb6\x67\x2b\x5c\x0c\xfb\x03\x78\xe3\xf0\x39\xfc\x64\xd6\xea\xfc\xf2\x21\x91\xe0\xd1\x59\x5d\xfc\x2d\xac\x26\x77\x09\x07\x52\xf1\xc6\x58\x07\xe1\x0a\x91\x05\x08\x14\x7a\xf6\xbb\x9b\x31\x09\x90\x6b\xfc\x74\x36\x88\x57\x3a\x07\x42\x67\x83\x26\xbf\x4e\x67\x9f\x2c\xb1\x4a\x6e\xe9\xc0\x3f\x9e\xbc\xfc\x63\x8c\xbb\x92\x0f\xf2\xd6\xd0\x45\x19\x81\xb7\x55\x9d\xdd\x39\x6f\xac\xc8\x71\xfe\x5d\x35\x6e\x8a\x8f\x96\xe1\x58\x57\xc2\x87\x8f\xfc\xaa\xbd\xc4\x29\x54\x39\x15\x47\xf5\xda\xdd\x55\xce\xdd\x55\xce\xdd\x55\xce\xdd\x55\xce\x8d\xc2\xde\x5d\xe5\xdc\x5d\xe5\xdc\x5d\xe5\xdc\x5d\xe5\xdc\x5d\xe5\xfc\x3c\x56\x77\x57\x39\x77\x57\x39\x77\x57\x39\x9b\xdf\xee\x2a\xe7\x96\xcc\xed\xae\x72\xfe\xd9\xaf\x72\xfe\x7f\x5f\xce\xdc\x1d\x8e\xfd\x6f\x1c\x8e\xed\x8e\xbb\x76\xc7\x5d\xbb\xe3\xae\xdd\x71\xd7\x27\x58\xfc\xee\xb8\x6b\x77\xdc\xb5\x3b\xee\xda\x1d\x77\xfd\x49\x8f\xbb\x26\x42\xb9\xad\xcf\xbb\xfe\x13\x00\x00\xff\xff\xf2\x1a\x66\xa5\x7c\x46\x00\x00") func operatorsCoreosCom_operatorgroupsYamlBytes() ([]byte, error) { return bindataRead( @@ -184,7 +184,7 @@ func operatorsCoreosCom_operatorgroupsYaml() (*asset, error) { return a, nil } -var _operatorsCoreosCom_operatorsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x59\x5f\x8f\xe3\xb6\x11\x7f\xdf\x4f\x31\x70\x1e\x36\x01\xfc\x27\xb9\x02\x45\xe1\xb7\xc5\xee\xa5\xd8\x36\xdd\x3b\xdc\xee\xdd\x4b\x90\x87\xb1\x34\xb6\x58\x53\xa4\xc2\xa1\xec\x75\x0f\xf7\xdd\x8b\x21\x29\x5b\xb2\xbd\xb6\x7c\xdd\x4b\xc3\x17\x5b\x14\x39\x9c\xbf\xbf\x99\xa1\xb0\x52\x9f\xc8\xb1\xb2\x66\x0a\x58\x29\x7a\xf6\x64\xe4\x89\xc7\xcb\xbf\xf1\x58\xd9\xc9\xea\xa7\xab\xa5\x32\xf9\x14\x6e\x6b\xf6\xb6\xfc\x40\x6c\x6b\x97\xd1\x1d\xcd\x95\x51\x5e\x59\x73\x55\x92\xc7\x1c\x3d\x4e\xaf\x00\xd0\x18\xeb\x51\xa6\x59\x1e\x01\x32\x6b\xbc\xb3\x5a\x93\x1b\x2d\xc8\x8c\x97\xf5\x8c\x66\xb5\xd2\x39\xb9\x40\xbc\x39\x7a\xf5\xe3\xf8\xaf\xe3\x1f\xaf\x00\x32\x47\x61\xfb\x93\x2a\x89\x3d\x96\xd5\x14\x4c\xad\xf5\x15\x80\xc1\x92\xa6\x60\x2b\x72\xe8\xad\xe3\xf1\xee\x5f\x66\x1d\x59\xf9\x29\xaf\xb8\xa2\x4c\x0e\x5e\x38\x5b\x57\xed\xd5\xad\x35\x91\x54\xc3\x1f\x7a\x5a\x58\xa7\x9a\x67\x80\x11\x58\x5d\x86\xff\x51\xee\x77\x89\x46\x98\xd2\x8a\xfd\x3f\x3b\xd3\xbf\x28\xf6\xe1\x55\xa5\x6b\x87\xba\x75\x66\x98\x65\x65\x16\xb5\x46\xb7\x9b\xbf\x02\xe0\xcc\x56\x34\x85\x5b\x5d\xb3\x27\x99\x48\x7a\x48\x3c\x8c\x92\xac\xab\x9f\x12\x4b\x9c\x15\x54\x62\xc3\x20\x08\x29\x73\xf3\xfe\xfe\xd3\x5f\x1e\xf7\x5e\x00\xe4\xc4\x99\x53\x95\x0f\x5a\x6d\x78\x04\x47\x95\x23\x26\xe3\x19\x10\xb2\x78\xec\x96\xa1\x71\x6b\xbb\xdf\x08\x63\x76\xf6\x6f\xca\x7c\x6b\xba\x72\xb2\xd8\xb7\xb4\x14\x47\xcb\x7b\x3a\xf3\x7b\x7c\x5c\x0b\xb3\x71\x1d\xe4\xe2\x38\xc4\xe0\x0b\x6a\xc4\xa6\x3c\x49\x08\x76\x0e\xbe\x50\xbc\xe3\x37\xf8\x82\x4c\xa3\x49\x5c\x8d\xe1\x91\x9c\x6c\x04\x2e\x6c\xad\x73\xf1\xb0\x15\x39\x0f\x8e\x32\xbb\x30\xea\x3f\x5b\x6a\x0c\xde\x86\x63\x34\x7a\x62\x0f\xca\x78\x72\x06\x35\xac\x50\xd7\x34\x04\x34\x39\x94\xb8\x01\x47\x42\x17\x6a\xd3\xa2\x10\x96\xf0\x18\xfe\x65\x1d\x81\x32\x73\x3b\x85\xc2\xfb\x8a\xa7\x93\xc9\x42\xf9\x26\x36\x32\x5b\x96\xb5\x51\x7e\x33\x09\x6e\xae\x66\xb5\xd8\x7d\x92\xd3\x8a\xf4\x84\xd5\x62\x84\x2e\x2b\x94\xa7\xcc\xd7\x8e\x26\x58\xa9\x51\x60\xd6\x84\xf8\x18\x97\xf9\x77\x2e\x45\x13\x5f\xef\xa9\x2f\xda\x81\xbd\x53\x66\xd1\x79\x15\x7c\xf2\xa4\xae\xc5\x3d\x41\x89\xa1\xe3\xf6\x28\xcb\x4e\xa5\x32\x25\x5a\xf9\xf0\xf6\xf1\x09\x1a\x06\xa2\xda\xa3\x86\x5b\xde\xb2\x53\xb6\x28\x4a\x99\x39\xb9\xb8\x72\xee\x6c\x19\xa8\x90\xc9\x2b\xab\x8c\x0f\x0f\x99\x56\x64\x3c\x70\x3d\x2b\x95\x17\x2b\xfe\x5e\x13\x7b\xb1\xc3\x18\x6e\x03\x34\xc0\x8c\xa0\xae\x72\xf4\x94\x8f\xe1\xde\xc0\x2d\x96\xa4\x6f\x91\xe9\x9b\xab\x5a\x34\xca\x23\x51\x5f\x7f\x65\xb7\x91\xed\x70\xc3\x41\x94\x00\x34\xf0\xf3\xa2\x75\x9a\x88\x7c\xac\x28\xeb\x84\x42\x4e\xac\x9c\xb8\xae\x47\x4f\xe2\xf0\x1d\xd8\xe9\x73\xb4\x47\x5f\x73\xbf\xc3\xc3\xd2\xce\xf1\x76\xc6\x62\xe8\xd6\xf9\x68\x76\xf0\x21\x91\x22\x06\xcd\x6c\x59\x59\x23\x8e\xd1\x97\xab\x97\xa1\x03\x42\x72\x68\xe8\x1d\xbe\xdb\xe3\xfd\x76\xbb\x34\xcd\xcf\x88\xb7\xde\x2b\x32\xa0\x8f\xe4\x98\xa2\x40\x47\xc0\xad\x07\xb7\x32\xc4\x6d\xc5\x16\xc7\x78\x12\x70\xd6\x38\x23\xfd\x48\x9a\xb2\x43\xf3\x9c\x93\x58\x46\x67\xff\xf1\x25\x7b\xc2\xff\xd2\xde\x11\x63\x3b\x10\x81\xdf\x6b\x72\x1b\xb0\x2b\x72\x12\xee\xe4\xc5\x70\x3b\xa5\xd4\x4c\xb9\x60\x20\x87\x9d\x1d\xb5\x5c\x9f\x30\x66\x4f\x35\xf5\x11\x55\x46\x89\x3e\x2b\xde\x3e\x0b\xa4\xb4\x72\x5c\x0f\xa9\xf7\x37\x26\xc1\x15\x07\x31\xa3\x02\xb8\x51\x4a\x32\x5a\x19\x51\xeb\xa9\xa0\xce\x0c\xa0\x23\xb8\x79\xb8\xa3\xfc\x98\x3f\x74\x05\x46\xe7\x70\x73\x62\x95\xf2\x54\x9e\x14\x62\x4f\x8c\x9b\x13\xac\x26\x9c\x6e\xde\x24\x2f\x36\x1e\x95\xe1\x94\x83\x86\x80\xb0\xa4\x4d\x4c\x57\x92\x05\x9b\xa0\x0c\x8b\x1d\x85\xe4\x16\x6c\xbb\xa4\x4d\x58\x94\x72\xd7\x49\x0e\x7b\xd8\x36\x8e\xd3\xc1\xb0\x1b\x23\x39\xfe\xec\x1a\x7b\x1c\xd4\xba\xa3\x8f\x53\xc5\xb1\xa4\xcd\xb9\x25\x7b\xc6\x10\x1d\x29\x4e\x55\x81\x58\x45\x26\x82\x26\x65\x6a\x6b\x08\xac\x2a\xad\x28\x24\xae\xb3\xf4\x5f\xcc\x1e\x87\xa3\x11\xff\x42\xa6\xed\xd1\x32\x6e\x49\x9b\x6b\x8e\x0e\x20\xd1\x51\xa8\x4a\x62\x7d\x0b\x03\x4d\x05\xf3\x09\xb5\xca\x77\x45\x69\x88\x84\x7b\x33\x84\x07\xeb\xe5\xe7\xed\xb3\x92\x0c\x2d\x7e\x73\x67\x89\x1f\xac\x0f\x33\xaf\x2a\x76\x64\xe5\x42\xa1\xe3\xa6\x10\x20\x26\xc6\xa4\x48\xd5\x2e\x69\x78\x0c\xf7\xf3\x0e\xaa\xc9\xea\x7b\x03\xd6\x35\xd2\x85\x22\x33\x12\x8a\x24\xca\x9a\x43\x0d\x62\xac\x19\x51\x59\xf9\xcd\x51\x1a\x49\x29\xd6\x75\x74\x72\x82\x5c\x22\xf5\x24\xa5\x51\x7c\x13\x8b\x58\x8d\x19\xe5\x90\xd7\x81\xe9\x50\x90\x49\xbb\xa1\x32\x28\xc9\x2d\x08\x2a\x41\xb8\xbe\xaa\x3e\x87\x4b\x71\xf4\x40\xa7\x36\xd1\x33\xf6\x0b\x10\x1c\xb2\xcf\x85\xb0\x1d\xf7\x44\x78\x2b\xb1\x12\xd3\x7d\x16\x14\x0b\xda\xfb\x02\x15\x2a\xc7\x63\xb8\x09\xed\x91\xa6\xce\x3b\x65\x82\x9e\xdb\x64\x84\x82\x62\x10\x28\x5a\xa1\x16\xdc\x14\x4f\x37\x40\x3a\xa2\xa8\x9d\x1f\x24\x8b\x21\xac\x0b\xa9\x05\x24\xbe\xe7\x8a\x74\x28\x89\x07\x4b\xda\x0c\x86\x07\xe6\x1e\xdc\x9b\x41\xc4\xd7\x03\x03\x6f\xc1\xd8\x1a\xbd\x81\x41\x78\x37\xf8\xdf\xf2\xcb\x59\xd0\xc5\x3c\x0f\x8d\x35\xea\xf7\x3d\x91\xf0\xac\x2d\x1d\xcd\x5f\x24\xd1\x31\xde\x07\x9a\x47\x61\x5a\xe5\xc4\x9c\x1c\x99\x50\x64\xd9\x17\x6b\x88\x5d\xd5\x31\x4c\x28\x4a\x39\xac\x95\x2f\xba\xb5\xcb\x4b\xda\x39\xef\xe1\x67\xfc\xba\x2b\x84\xca\x8a\x0f\x0d\xdb\xd1\x07\xb7\x52\x44\x8c\x6c\xb8\x1d\x02\x19\xa7\xb2\xa2\x61\x56\x8a\xdc\x58\x48\x8b\xe5\xa3\x19\x4e\x64\xd2\x5e\x06\xed\x97\xce\x5e\xee\xa4\x4f\x08\x7a\xf3\xfe\xbe\xe9\xa1\x63\xeb\x4c\x8d\xa0\x67\x00\xbc\x27\x78\xef\x74\x70\x01\x53\xb7\xdb\x4d\xed\x7c\xd5\xea\xc3\xb7\x2d\x46\x68\x19\x1b\x0f\xea\xc3\xf0\x79\x08\xec\x05\x7f\xc7\xd9\xdd\x71\xdb\x66\x16\x57\xa8\x34\xce\x74\xd3\x22\xc5\x64\x9b\x1a\xa4\x2d\xf3\xd7\xd1\x6d\xe8\x1c\x96\xf7\x2e\xbb\xfa\x17\x5e\x52\x56\x45\x97\xed\xb1\x50\xce\x3f\xb3\xac\x7f\xf5\x25\x9d\x0c\xfb\x27\x87\x86\x55\x73\x65\xd7\x27\xf3\xec\xb5\x36\xec\xc1\xab\x92\x92\x37\x34\xc6\xf0\x5b\xb2\x94\xc7\xdb\x06\x6b\xa8\x89\xcd\x80\xfe\xd6\x17\xf4\x22\xa0\xb4\xc7\x05\x95\x8a\x8c\xb9\x75\x25\xfa\x29\xe4\xe8\x69\x24\x9c\xf5\x52\xc3\xc7\x70\xa9\xf1\xaa\x2a\x58\x23\x8b\x35\x66\x94\xff\x19\x84\x2c\x89\x19\x17\x97\x4b\x77\x03\x45\x5d\xa2\x44\x17\xe6\x21\x8e\x12\x21\x50\x26\x57\x19\x86\xeb\xa8\x9c\x3c\x2a\xcd\x80\x33\x5b\xc7\xe8\xdb\x99\xff\xd5\x2d\xec\x08\xf9\x1c\xca\x1e\x91\x23\xa6\x7c\xd9\x2a\xca\xeb\x9a\xea\x9a\x83\x0f\x7c\x4b\xae\x8f\x5f\xef\x9c\xe5\x3a\x5d\xf5\x6c\xc1\x36\x31\x3c\x0c\xd1\x64\xe7\xf0\xe4\x6a\x1a\xc2\xcf\xa8\x99\x86\xf0\xd1\x2c\x8d\x5d\xbf\x3e\xef\x61\xf1\xc5\xfa\xde\x54\x81\xc3\x2d\xcf\xaf\xc8\x56\x28\x08\xdf\xa3\x2f\x2e\x48\x6b\xd7\xf7\xa9\x16\x0a\xb5\x7c\xa8\x22\x2a\x45\x19\x75\x2e\xa7\x41\x19\xf6\x84\x79\x9a\x24\xe3\x95\xa3\xf4\x6e\x18\x6f\x4e\x53\x07\xb3\xbb\xbc\x96\xfa\x12\x50\xca\x4e\x95\xc3\x3f\x1e\xdf\x3d\x4c\xfe\x6e\x53\xc9\x8a\x59\x46\x9c\x52\x8b\xd4\x99\x43\xe0\x3a\x2b\x00\xb9\xb9\x2e\x7c\x0c\x49\xa7\x44\xa3\xe6\xc4\x7e\x9c\xa8\x91\xe3\x5f\xdf\xfc\x36\x86\x9f\xad\x03\x7a\xc6\xb2\xd2\x34\x04\x95\xda\x9c\xe6\x8a\xb7\x55\x1e\x05\x61\xb6\x7b\x43\x25\x14\x58\xaa\x6c\x9e\x98\x5e\x07\x66\x3d\x2e\x09\x6c\x62\xb6\x26\xd0\x6a\x49\x53\x18\x70\x45\x59\xeb\xe8\xcf\x06\x4b\xfa\x32\x80\xef\xd7\x05\x39\x82\x81\x3c\x0e\xe2\x81\xdb\x12\x52\xe6\x5a\x4e\x99\x0e\x8e\x7d\xb8\x53\x8b\x05\x39\x8a\xc5\x38\xad\xc8\xf8\x1f\xa4\x13\x53\x73\x30\xb6\xb5\x38\x90\x10\x7d\x56\x94\xa9\xb9\xa2\xfc\x80\x91\x5f\xdf\xfc\x36\x80\xef\xbb\x72\x09\xea\xd0\x33\xbc\x89\x5d\x86\x62\x91\xf1\x87\xd4\xb8\xf1\xc6\x78\x7c\x16\x9a\x99\xb4\x0e\x26\xd6\xfc\xde\x42\x81\x2b\x02\xb6\x25\xc1\x9a\xb4\x1e\xc5\x7b\xd3\x1c\xd6\xb1\x25\x6d\x54\x19\x5b\xbc\x0a\x9d\xdf\xfb\x5e\xf1\xf4\xee\xee\xdd\x34\x9e\x26\x66\x5b\x18\x39\xc2\x58\x0f\x73\x65\x50\xa7\xbe\x43\xf1\xae\x4d\xe1\x3a\x1a\xc9\x5b\xc8\x0a\x34\x01\x2b\x83\x36\xe6\xb5\xaf\x1d\x8d\xf7\xef\xaf\xbf\x2a\x06\x8e\x7d\x48\x38\xe5\xfe\xe1\xb3\xc2\x7e\x91\xf9\x7f\xbc\xb4\xff\x2a\xa1\xc3\x77\xb5\x0b\x84\x7e\x68\xf9\xe9\x49\xa1\x97\xf5\x8c\x9c\x21\x4f\x41\xee\xdc\x66\x2c\x22\x67\x54\x79\x9e\xd8\x15\xb9\x95\xa2\xf5\x64\x6d\xdd\x52\x99\xc5\x48\x1c\x71\x14\xbd\x83\x27\xe1\x5b\xe4\xe4\xbb\xf0\xf3\x6a\x32\x72\x85\xd9\xc5\x82\x86\x4d\x7f\x84\xb4\x72\x0e\x4f\x5e\x45\xd8\xa6\x91\xbb\xbc\x77\xba\x7e\x8c\xc0\x91\xed\xd3\x90\xb0\x5b\x17\x2a\x2b\x9a\x4f\x91\x2d\xa4\x2c\x31\x8f\x50\x8a\x66\xf3\xcd\x9d\x5f\x54\x5a\x3b\x39\x7b\x33\x4a\x9f\xd1\x47\x68\x72\xf9\xcf\x8a\xbd\xcc\xbf\x8a\x0e\x6b\x75\x11\x10\x7c\xbc\xbf\xfb\x63\x42\xa2\x56\x5f\x11\xf5\xf1\x33\xd6\x14\xbc\xab\x9b\x9a\x96\xbd\x75\x52\xb9\x76\xe6\xea\xd9\xf6\xc6\x62\x27\x7c\x2a\xb2\xe0\xf3\x97\xab\xff\x06\x00\x00\xff\xff\x39\x29\x67\x42\x18\x21\x00\x00") +var _operatorsCoreosCom_operatorsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x59\x5f\x8f\xdb\xb8\x11\x7f\xdf\x4f\x31\xf0\x3d\xec\x1d\xe0\x3f\xbd\x14\x28\x0a\xbf\x2d\x76\x73\xc5\xb6\xd7\x4d\x90\xdd\xe4\xe5\x70\x0f\x63\x69\x6c\xb1\xa6\x48\x1d\x87\xb2\xd7\x0d\xf2\xdd\x8b\x21\x29\x5b\xb2\xbd\xb6\x9c\x6e\xd2\xf2\xc5\x16\x45\x0e\xe7\xef\x6f\x66\x28\xac\xd4\x27\x72\xac\xac\x99\x02\x56\x8a\x9e\x3d\x19\x79\xe2\xf1\xf2\xaf\x3c\x56\x76\xb2\xfa\xf9\x6a\xa9\x4c\x3e\x85\xdb\x9a\xbd\x2d\x3f\x10\xdb\xda\x65\x74\x47\x73\x65\x94\x57\xd6\x5c\x95\xe4\x31\x47\x8f\xd3\x2b\x00\x34\xc6\x7a\x94\x69\x96\x47\x80\xcc\x1a\xef\xac\xd6\xe4\x46\x0b\x32\xe3\x65\x3d\xa3\x59\xad\x74\x4e\x2e\x10\x6f\x8e\x5e\xfd\x69\xfc\x97\xf1\x9b\x2b\x80\xcc\x51\xd8\xfe\xa4\x4a\x62\x8f\x65\x35\x05\x53\x6b\x7d\x05\x60\xb0\xa4\x29\xd8\x8a\x1c\x7a\xeb\x78\xbc\xfb\x97\x59\x47\x56\x7e\xca\x2b\xae\x28\x93\x83\x17\xce\xd6\x55\x7b\x75\x6b\x4d\x24\xd5\xf0\x87\x9e\x16\xd6\xa9\xe6\x19\x60\x04\x56\x97\xe1\x7f\x94\xfb\x5d\xa2\x11\xa6\xb4\x62\xff\x8f\xce\xf4\xaf\x8a\x7d\x78\x55\xe9\xda\xa1\x6e\x9d\x19\x66\x59\x99\x45\xad\xd1\xed\xe6\xaf\x00\x38\xb3\x15\x4d\xe1\x56\xd7\xec\x49\x26\x92\x1e\x12\x0f\xa3\x24\xeb\xea\xe7\xc4\x12\x67\x05\x95\xd8\x30\x08\x42\xca\xdc\xbc\xbf\xff\xf4\xe7\xc7\xbd\x17\x00\x39\x71\xe6\x54\xe5\x83\x56\x1b\x1e\xc1\x51\xe5\x88\xc9\x78\x06\x84\x2c\x1e\xbb\x65\x68\xdc\xda\xee\x37\xc2\x98\x9d\xfd\x8b\x32\xdf\x9a\xae\x9c\x2c\xf6\x2d\x2d\xc5\xd1\xf2\x9e\xce\xfc\x1e\x1f\xd7\xc2\x6c\x5c\x07\xb9\x38\x0e\x31\xf8\x82\x1a\xb1\x29\x4f\x12\x82\x9d\x83\x2f\x14\xef\xf8\x0d\xbe\x20\xd3\x68\x12\x57\x63\x78\x24\x27\x1b\x81\x0b\x5b\xeb\x5c\x3c\x6c\x45\xce\x83\xa3\xcc\x2e\x8c\xfa\xf7\x96\x1a\x83\xb7\xe1\x18\x8d\x9e\xd8\x83\x32\x9e\x9c\x41\x0d\x2b\xd4\x35\x0d\x01\x4d\x0e\x25\x6e\xc0\x91\xd0\x85\xda\xb4\x28\x84\x25\x3c\x86\x7f\x5a\x47\xa0\xcc\xdc\x4e\xa1\xf0\xbe\xe2\xe9\x64\xb2\x50\xbe\x89\x8d\xcc\x96\x65\x6d\x94\xdf\x4c\x82\x9b\xab\x59\x2d\x76\x9f\xe4\xb4\x22\x3d\x61\xb5\x18\xa1\xcb\x0a\xe5\x29\xf3\xb5\xa3\x09\x56\x6a\x14\x98\x35\x21\x3e\xc6\x65\xfe\x83\x4b\xd1\xc4\xd7\x7b\xea\x8b\x76\x60\xef\x94\x59\x74\x5e\x05\x9f\x3c\xa9\x6b\x71\x4f\x50\x62\xe8\xb8\x3d\xca\xb2\x53\xa9\x4c\x89\x56\x3e\xbc\x7d\x7c\x82\x86\x81\xa8\xf6\xa8\xe1\x96\xb7\xec\x94\x2d\x8a\x52\x66\x4e\x2e\xae\x9c\x3b\x5b\x06\x2a\x64\xf2\xca\x2a\xe3\xc3\x43\xa6\x15\x19\x0f\x5c\xcf\x4a\xe5\xc5\x8a\x7f\xd4\xc4\x5e\xec\x30\x86\xdb\x00\x0d\x30\x23\xa8\xab\x1c\x3d\xe5\x63\xb8\x37\x70\x8b\x25\xe9\x5b\x64\xfa\xe6\xaa\x16\x8d\xf2\x48\xd4\xd7\x5f\xd9\x6d\x64\x3b\xdc\x70\x10\x25\x00\x0d\xfc\xbc\x68\x9d\x26\x22\x1f\x2b\xca\x3a\xa1\x90\x13\x2b\x27\xae\xeb\xd1\x93\x38\x7c\x07\x76\xfa\x1c\xed\xd1\xd7\xdc\xef\xf0\xb0\xb4\x73\xbc\x9d\xb1\x18\xba\x75\x3e\x9a\x1d\x7c\x48\xa4\x88\x41\x33\x5b\x56\xd6\x88\x63\xf4\xe5\xea\x65\xe8\x80\x90\x1c\x1a\x7a\x87\xef\xf6\x78\xbf\xdd\x2e\x4d\xf3\x33\xe2\xad\xf7\x8a\x0c\xe8\x23\x39\xa6\x28\xd0\x11\x70\xeb\xc1\xad\x0c\x71\x5b\xb1\xc5\x31\x9e\x04\x9c\x35\xce\x48\x3f\x92\xa6\xec\xd0\x3c\xe7\x24\x96\xd1\xd9\x7f\x7c\xc9\x9e\xf0\xbf\xb6\x77\xc4\xd8\x0e\x44\xe0\x8f\x9a\xdc\x06\xec\x8a\x9c\x84\x3b\x79\x31\xdc\x4e\x29\x35\x53\x2e\x18\xc8\x61\x67\x47\x2d\xd7\x27\x8c\xd9\x53\x4d\x7d\x44\x95\x51\xa2\xcf\x8a\xb7\xcf\x02\x29\xad\x1c\xd7\x43\xea\xfd\x8d\x49\x70\xc5\x41\xcc\xa8\x00\x6e\x94\x92\x8c\x56\x46\xd4\x7a\x2a\xa8\x33\x03\xe8\x08\x6e\x1e\xee\x28\x3f\xe6\x0f\x5d\x81\xd1\x39\xdc\x9c\x58\xa5\x3c\x95\x27\x85\xd8\x13\xe3\xe6\x04\xab\x09\xa7\x9b\x37\xc9\x8b\x8d\x47\x65\x38\xe5\xa0\x21\x20\x2c\x69\x13\xd3\x95\x64\xc1\x26\x28\xc3\x62\x47\x21\xb9\x05\xdb\x2e\x69\x13\x16\xa5\xdc\x75\x92\xc3\x1e\xb6\x8d\xe3\x74\x30\xec\xc6\x48\x8e\x3f\xbb\xc6\x1e\x07\xb5\xee\xe8\xe3\x54\x71\x2c\x69\x73\x6e\xc9\x9e\x31\x44\x47\x8a\x53\x55\x20\x56\x91\x89\xa0\x49\x99\xda\x1a\x02\xab\x4a\x2b\x0a\x89\xeb\x2c\xfd\x17\xb3\xc7\xe1\x68\xc4\xbf\x90\x69\x7b\xb4\x8c\x5b\xd2\xe6\x9a\xa3\x03\x48\x74\x14\xaa\x92\x58\xdf\xc2\x40\x53\xc1\x7c\x42\xad\xf2\x5d\x51\x1a\x22\xe1\xde\x0c\xe1\xc1\x7a\xf9\x79\xfb\xac\x24\x43\x8b\xdf\xdc\x59\xe2\x07\xeb\xc3\xcc\xab\x8a\x1d\x59\xb9\x50\xe8\xb8\x29\x04\x88\x89\x31\x29\x52\xb5\x4b\x1a\x1e\xc3\xfd\xbc\x83\x6a\xb2\xfa\xde\x80\x75\x8d\x74\xa1\xc8\x8c\x84\x22\x89\xb2\xe6\x50\x83\x18\x6b\x46\x54\x56\x7e\x73\x94\x46\x52\x8a\x75\x1d\x9d\x9c\x20\x97\x48\x3d\x49\x69\x14\xdf\xc4\x22\x56\x63\x46\x39\xe4\x75\x60\x3a\x14\x64\xd2\x6e\xa8\x0c\x4a\x72\x0b\x82\x4a\x10\xae\xaf\xaa\xcf\xe1\x52\x1c\x3d\xd0\xa9\x4d\xf4\x8c\xfd\x02\x04\x87\xec\x73\x21\x6c\xc7\x3d\x11\xde\x4a\xac\xc4\x74\x9f\x05\xc5\x82\xf6\xbe\x40\x85\xca\xf1\x18\x6e\x42\x7b\xa4\xa9\xf3\x4e\x99\xa0\xe7\x36\x19\xa1\xa0\x18\x04\x8a\x56\xa8\x05\x37\xc5\xd3\x0d\x90\x8e\x28\x6a\xe7\x07\xc9\x62\x08\xeb\x42\x6a\x01\x89\xef\xb9\x22\x1d\x4a\xe2\xc1\x92\x36\x83\xe1\x81\xb9\x07\xf7\x66\x10\xf1\xf5\xc0\xc0\x5b\x30\xb6\x46\x6f\x60\x10\xde\x0d\xfe\xbb\xfc\x72\x16\x74\x31\xcf\x43\x63\x8d\xfa\x7d\x4f\x24\x3c\x6b\x4b\x47\xf3\x17\x49\x74\x8c\xf7\x81\xe6\x51\x98\x56\x39\x31\x27\x47\x26\x14\x59\xf6\xc5\x1a\x62\x57\x75\x0c\x13\x8a\x52\x0e\x6b\xe5\x8b\x6e\xed\xf2\x92\x76\xce\x7b\xf8\x19\xbf\xee\x0a\xa1\xb2\xe2\x43\xc3\x76\xf4\xc1\xad\x14\x11\x23\x1b\x6e\x87\x40\xc6\xa9\xac\x68\x98\x95\x22\x37\x16\xd2\x62\xf9\x68\x86\x13\x99\xb4\x97\x41\xfb\xa5\xb3\x97\x3b\xe9\x13\x82\xde\xbc\xbf\x6f\x7a\xe8\xd8\x3a\x53\x23\xe8\x19\x00\xef\x09\xde\x3b\x1d\x5c\xc0\xd4\xed\x76\x53\x3b\x5f\xb5\xfa\xf0\x6d\x8b\x11\x5a\xc6\xc6\x83\xfa\x30\x7c\x1e\x02\x7b\xc1\xdf\x71\x76\x77\xdc\xb6\x99\xc5\x15\x2a\x8d\x33\xdd\xb4\x48\x31\xd9\xa6\x06\x69\xcb\xfc\x75\x74\x1b\x3a\x87\xe5\xbd\xcb\xae\xfe\x85\x97\x94\x55\xd1\x65\x7b\x2c\x94\xf3\xcf\x2c\xeb\x5f\x7d\x49\x27\xc3\xfe\xc9\xa1\x61\xd5\x5c\xd9\xf5\xc9\x3c\x7b\xad\x0d\x7b\xf0\xaa\xa4\xe4\x0d\x8d\x31\xfc\x96\x2c\xe5\xf1\xb6\xc1\x1a\x6a\x62\x33\xa0\xbf\xf5\x05\xbd\x08\x28\xed\x71\x41\xa5\x22\x63\x6e\x5d\x89\x7e\x0a\x39\x7a\x1a\x09\x67\xbd\xd4\xf0\x31\x5c\x6a\xbc\xaa\x0a\xd6\xc8\x62\x8d\x19\xe5\xff\x0f\x42\x96\xc4\x8c\x8b\xcb\xa5\xbb\x81\xa2\x2e\x51\xa2\x0b\xf3\x10\x47\x89\x10\x28\x93\xab\x0c\xc3\x75\x54\x4e\x1e\x95\x66\xc0\x99\xad\x63\xf4\xed\xcc\xff\xea\x16\x76\x84\x7c\x0e\x65\x8f\xc8\x11\x53\xbe\x6c\x15\xe5\x75\x4d\x75\xcd\xc1\x07\xbe\x25\xd7\xc7\xaf\x77\xce\x72\x9d\xae\x7a\xb6\x60\x9b\x18\x1e\x86\x68\xb2\x73\x78\x72\x35\x0d\xe1\x17\xd4\x4c\x43\xf8\x68\x96\xc6\xae\x5f\x9f\xf7\xb0\xf8\x62\x7d\x6f\xaa\xc0\xe1\x96\xe7\x57\x64\x2b\x14\x84\xef\xd1\x17\x17\xa4\xb5\xeb\xfb\x54\x0b\x85\x5a\x3e\x54\x11\x95\xa2\x8c\x3a\x97\xd3\xa0\x0c\x7b\xc2\x3c\x4d\x92\xf1\xca\x51\x7a\x37\x8c\x37\xa7\xa9\x83\xd9\x5d\x5e\x4b\x7d\x09\x28\x65\xa7\xca\xe1\xef\x8f\xef\x1e\x26\x7f\xb3\xa9\x64\xc5\x2c\x23\x4e\xa9\x45\xea\xcc\x21\x70\x9d\x15\x80\xdc\x5c\x17\x3e\x86\xa4\x53\xa2\x51\x73\x62\x3f\x4e\xd4\xc8\xf1\x6f\x6f\x7e\x1f\xc3\x2f\xd6\x01\x3d\x63\x59\x69\x1a\x82\x4a\x6d\x4e\x73\xc5\xdb\x2a\x8f\x82\x30\xdb\xbd\xa1\x12\x0a\x2c\x55\x36\x4f\x4c\xaf\x03\xb3\x1e\x97\x04\x36\x31\x5b\x13\x68\xb5\xa4\x29\x0c\xb8\xa2\xac\x75\xf4\x67\x83\x25\x7d\x19\xc0\x8f\xeb\x82\x1c\xc1\x40\x1e\x07\xf1\xc0\x6d\x09\x29\x73\x2d\xa7\x4c\x07\xc7\x3e\xdc\xa9\xc5\x82\x1c\xc5\x62\x9c\x56\x64\xfc\x4f\xd2\x89\xa9\x39\x18\xdb\x5a\x1c\x48\x88\x3e\x2b\xca\xd4\x5c\x51\x7e\xc0\xc8\x6f\x6f\x7e\x1f\xc0\x8f\x5d\xb9\x04\x75\xe8\x19\xde\xc4\x2e\x43\xb1\xc8\xf8\x53\x6a\xdc\x78\x63\x3c\x3e\x0b\xcd\x4c\x5a\x07\x13\x6b\x7e\x6f\xa1\xc0\x15\x01\xdb\x92\x60\x4d\x5a\x8f\xe2\xbd\x69\x0e\xeb\xd8\x92\x36\xaa\x8c\x2d\x5e\x85\xce\xef\x7d\xaf\x78\x7a\x77\xf7\x6e\x1a\x4f\x13\xb3\x2d\x8c\x1c\x61\xac\x87\xb9\x32\xa8\x53\xdf\xa1\x78\xd7\xa6\x70\x1d\x8d\xe4\x2d\x64\x05\x9a\x80\x95\x41\x1b\xf3\xda\xd7\x8e\xc6\xfb\xf7\xd7\x5f\x15\x03\xc7\x3e\x24\x9c\x72\xff\xf0\x59\x61\xbf\xc8\xfc\x1f\x5e\xda\x7f\x95\xd0\xe1\xbb\xda\x05\x42\x3f\xb4\xfc\xf4\xa4\xd0\xcb\x7a\x46\xce\x90\xa7\x20\x77\x6e\x33\x16\x91\x33\xaa\x3c\x4f\xec\x8a\xdc\x4a\xd1\x7a\xb2\xb6\x6e\xa9\xcc\x62\x24\x8e\x38\x8a\xde\xc1\x93\xf0\x2d\x72\xf2\x43\xf8\x79\x35\x19\xb9\xc2\xec\x62\x41\xc3\xa6\xef\x21\xad\x9c\xc3\x93\x57\x11\xb6\x69\xe4\x2e\xef\x9d\xae\x1f\x23\x70\x64\xfb\x34\x24\xec\xd6\x85\xca\x8a\xe6\x53\x64\x0b\x29\x4b\xcc\x23\x94\xa2\xd9\x7c\x73\xe7\x17\x95\xd6\x4e\xce\xde\x8c\xd2\x67\xf4\x11\x9a\x5c\xfe\xb3\x62\x2f\xf3\xaf\xa2\xc3\x5a\x5d\x04\x04\x1f\xef\xef\xbe\x4f\x48\xd4\xea\x2b\xa2\x3e\x7e\xc6\x9a\x82\x77\x75\x53\xd3\xb2\xb7\x4e\x2a\xd7\xce\x5c\x3d\xdb\xde\x58\xec\x84\x4f\x45\x16\x7c\xfe\x72\xf5\x9f\x00\x00\x00\xff\xff\xb3\x0d\x9b\xb8\x18\x21\x00\x00") func operatorsCoreosCom_operatorsYamlBytes() ([]byte, error) { return bindataRead( @@ -204,7 +204,7 @@ func operatorsCoreosCom_operatorsYaml() (*asset, error) { return a, nil } -var _operatorsCoreosCom_subscriptionsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x7d\x6b\x73\xe3\xb8\x95\xe8\xf7\xf9\x15\x28\x27\x55\xb6\xb3\x92\xdc\x9d\x9d\x4d\x72\xbd\xa9\xa4\xdc\xb6\x7b\xa2\x9d\x6e\xb7\xb7\xe5\xee\xa9\xdc\x24\x37\x81\x48\x48\xc2\x98\x04\x38\x00\x28\xb7\xf2\xf8\xef\xb7\x70\x0e\x00\x82\xd4\x8b\x94\xe5\xc7\x4c\xcc\x0f\x33\x6d\x0a\x00\x81\x83\x83\xf3\xc2\x79\xd0\x82\x7f\x66\x4a\x73\x29\x4e\x09\x2d\x38\xfb\x62\x98\xb0\x7f\xe9\xc1\xed\x6f\xf4\x80\xcb\x93\xf9\xeb\xaf\x6e\xb9\x48\x4f\xc9\x79\xa9\x8d\xcc\x3f\x32\x2d\x4b\x95\xb0\x0b\x36\xe1\x82\x1b\x2e\xc5\x57\x39\x33\x34\xa5\x86\x9e\x7e\x45\x08\x15\x42\x1a\x6a\x5f\x6b\xfb\x27\x21\x89\x14\x46\xc9\x2c\x63\xaa\x3f\x65\x62\x70\x5b\x8e\xd9\xb8\xe4\x59\xca\x14\x0c\xee\x3f\x3d\x7f\x35\xf8\xd5\xe0\xd5\x57\x84\x24\x8a\x41\xf7\x1b\x9e\x33\x6d\x68\x5e\x9c\x12\x51\x66\xd9\x57\x84\x08\x9a\xb3\x53\xa2\xcb\xb1\x4e\x14\x2f\xe0\x13\x03\x59\x30\x45\x8d\x54\x7a\x90\x48\xc5\xa4\xfd\x5f\xfe\x95\x2e\x58\x62\x3f\x3e\x55\xb2\x2c\x4e\xc9\xca\x36\x38\x9c\x9f\x23\x35\x6c\x2a\x15\xf7\x7f\x13\xd2\x27\x32\xcb\xe1\xdf\xb8\xf6\x51\xf4\x55\x78\x9d\x71\x6d\xbe\x5d\xfa\xe9\x1d\xd7\x06\x7e\x2e\xb2\x52\xd1\xac\x31\x5b\xf8\x45\xcf\xa4\x32\x57\xd5\xb7\xed\xb7\x74\x39\x8e\xff\xed\x1a\x72\x31\x2d\x33\xaa\xea\x83\x7c\x45\x88\x4e\x64\xc1\x4e\x09\x8c\x51\xd0\x84\xa5\x5f\x11\xe2\xe0\xe8\xc6\xec\x13\x9a\xa6\xb0\x37\x34\xbb\x56\x5c\x18\xa6\xce\x65\x56\xe6\x22\x7c\xd3\xb6\x49\x59\x18\xf5\x94\xdc\xcc\x18\x29\x68\x72\x4b\xa7\xcc\x7f\x6f\xcc\x52\x62\x64\xe8\x40\xc8\xf7\x5a\x8a\x6b\x6a\x66\xa7\x64\x60\x41\x3c\xb0\x10\x8c\x7e\xc6\xfd\xb9\xc6\x41\xa2\xf7\x66\x61\xa7\xab\x8d\xe2\x62\xba\xe9\xf3\x09\x35\x34\x93\x53\x82\xf8\x45\x26\x52\x11\x33\x63\xc4\x7e\x8a\x4f\x38\x4b\xfd\xfc\x36\xcc\x08\xbb\x2e\xcd\x69\xd4\x7c\xdd\x7a\x4a\x33\x2a\x04\xcb\x88\x9c\x90\xb2\x48\xa9\x61\x9a\x18\x59\xc1\x67\x33\x78\x5c\xe7\xa5\xd9\x9c\x2f\xbd\x5f\x31\x1d\x6c\x3a\x7f\x4d\xb3\x62\x46\x5f\xbb\x97\x3a\x99\xb1\x9c\x56\x7b\x28\x0b\x26\xce\xae\x87\x9f\xff\x73\xd4\xf8\x81\xd4\x97\x12\xa3\x28\xb9\x65\xac\xd0\xd5\xa1\x20\x65\x61\xd7\x64\x17\x47\xc6\x0b\x62\x14\x4d\x6e\xb9\x98\xc2\xd2\xa7\xb8\xde\x73\xdc\x18\x3d\x58\x9a\xb2\x1c\x7f\xcf\x12\x13\xbd\x56\xec\x87\x92\x2b\x96\xc6\x53\xb1\x90\xf5\x24\xa2\xf1\xda\xc2\x29\x7a\x55\x28\x3b\x2d\x13\x9d\x43\x7c\x22\x1a\x55\x7b\xdf\x58\xe6\xa1\x85\x05\xb6\x23\xa9\x25\x4f\x76\xfa\x33\xe6\x0f\x07\x4b\x1d\x00\xed\x76\x9a\x19\xd7\x44\xb1\x42\x31\xcd\x04\x12\x2c\xfb\x9a\x0a\xb7\xa6\x01\x19\x31\x65\x3b\xda\x03\x5b\x66\xa9\xa5\x63\x73\xa6\x0c\x51\x2c\x91\x53\xc1\xff\x1e\x46\x03\x10\xd9\xcf\x64\x16\x3f\x0c\x81\xe3\x26\x68\x46\xe6\x34\x2b\x59\x8f\x50\x91\x92\x9c\x2e\x88\x62\x76\x5c\x52\x8a\x68\x04\x68\xa2\x07\xe4\xbd\x54\x8c\x70\x31\x91\xa7\x64\x66\x4c\xa1\x4f\x4f\x4e\xa6\xdc\x78\x0a\x9c\xc8\x3c\x2f\x05\x37\x8b\x13\x20\xa6\x7c\x5c\xda\x8d\x3b\x49\xd9\x9c\x65\x27\x9a\x4f\xfb\x54\x25\x33\x6e\x58\x62\x4a\xc5\x4e\x68\xc1\xfb\x30\x59\x81\x24\x32\x4f\x7f\xa6\x1c\xcd\xd6\x87\x0d\xf0\xad\x3c\x07\xc4\x53\xbd\x8d\xb0\xb6\xc4\x8f\x70\x4d\xa8\xeb\x8e\x6b\xa9\x40\x6a\x5f\x59\xa8\x7c\xbc\x1c\xdd\x10\x3f\x01\x04\x3b\x42\xb8\x6a\xaa\x2b\x60\x5b\x40\x71\x31\x61\x0a\x5b\x4e\x94\xcc\x61\x14\x26\xd2\x42\x72\x61\xe0\x8f\x24\xe3\x4c\x18\x7b\x0c\x73\x6e\x34\xe0\x1c\xd3\xc6\xee\xc3\x80\x9c\x03\x03\x22\x63\xe6\x0e\x6c\x3a\x20\x43\x41\xce\x69\xce\xb2\x73\xaa\xd9\x83\x83\xda\x42\x54\xf7\x2d\xf8\xda\x03\x3b\xe6\x9f\xcb\x1d\x96\xce\x18\x21\x9e\xc1\xad\xdd\x9d\xf8\xc0\x8f\x0a\x96\x84\xe3\x40\x05\x39\x2b\x8a\x8c\x27\x88\xf1\x66\x46\x0d\x49\xa8\xb0\xf0\xe2\x42\x1b\x9a\x65\xc0\x4e\x5a\xcd\x62\xdd\x69\x27\x70\xb4\x1b\xcc\xc1\xbf\x5e\xa2\xd0\xf5\x1f\x02\x53\x6b\xb4\x58\x47\x19\xec\xe3\xe8\xec\xf2\x0f\x1b\x40\x4e\x50\x32\x99\xf0\xe9\xaa\x6e\x6b\x61\x79\x0e\x5d\x40\xa6\xa1\x5c\x68\x37\x44\xa9\x10\x9a\x15\xa7\xb2\xbc\x8b\xd6\xf8\xf6\x60\xed\xec\x56\x42\x76\xdb\x9a\xed\xc3\xc4\x7c\xf5\x0f\x8d\x05\x5c\x8a\x39\x1e\x54\x2b\xb3\x58\x22\xc7\xc4\x9c\x2b\x29\x72\x7b\x88\xe6\x54\x71\x3a\xce\x1c\x63\x63\x96\x7c\xe1\x19\xc3\x25\x32\xb5\xea\x48\xad\xf9\x2a\xae\x87\x2a\x45\x17\x6b\x5a\x70\xc3\xf2\x35\xab\x59\x35\xed\xcf\x54\x45\x54\xc2\x22\xef\xaa\xa9\x13\xd7\xc0\x4e\x9d\x92\xf3\x30\xf1\xb5\x9f\xd9\x02\x77\x7c\xd6\xe3\x76\xf5\xac\xc1\x72\xff\x6c\xdb\x40\x7c\x80\xd3\x6f\xf8\xbd\x01\x16\x7b\x42\x90\x81\xb1\x95\xd0\x18\x90\xf7\xa5\x86\xdd\xa2\xe4\xfc\xaf\xc3\x8b\xcb\xab\x9b\xe1\xdb\xe1\xe5\xc7\xf5\xe0\x20\xdb\x0e\x4a\xf5\x00\x8d\xef\x30\xd9\xc3\xcf\x7e\x8f\x14\x9b\x30\xc5\x44\xc2\x34\xf9\xf9\xd1\xe7\xb3\x8f\x7f\xbd\x3a\x7b\x7f\x79\x4c\xa8\x62\x84\x7d\x29\xa8\x48\x59\x4a\x4a\xed\x99\x46\xa1\xd8\x9c\xcb\x52\x67\x0b\x47\xb9\xd2\x35\x48\xdb\xc4\x56\xe0\xb6\x54\x2c\x88\x66\x6a\xce\x93\xd5\x20\xd2\x03\x32\x9c\x10\x5a\x21\x50\x12\x30\xdc\x32\xaa\x6c\xce\xd2\x1e\x0c\x1b\x26\xed\xbf\xc3\x45\x51\x1a\xcf\xf0\xee\x78\x96\xc1\xa9\x10\x28\x2b\xa5\x03\x72\x21\x4b\x3b\xde\xcf\x7f\x0e\x0b\x53\x2c\x2d\x13\x10\xa2\x2d\x31\xe0\x62\x6a\x7f\xea\x91\xbb\x19\x4f\x66\x84\x66\x99\xbc\xd3\x40\x29\x98\x4e\x68\xe1\x97\x1e\x43\x47\x2f\x84\xa1\x5f\x4e\x09\x1f\xb0\x01\x39\xf8\x79\xf4\xd3\x01\x7e\xbd\x50\xd2\x7e\x02\xe5\x64\x9c\x55\xc6\x0d\x53\x34\x23\x07\x71\xeb\x01\xb9\xb4\xdf\x60\x69\xbc\x0f\x30\x82\x60\x73\xa6\xec\x2a\xfc\x2e\xf4\x88\x62\x53\xaa\xd2\x8c\x69\x6d\xf1\xec\x6e\xc6\xcc\x8c\xa1\x28\x1e\x00\xc6\xbe\x70\xcb\x70\xa5\x22\x42\x9a\x01\xb9\x60\x13\x5a\x66\xc0\x81\xc9\xc1\xc1\xa0\xc9\xf8\x76\x47\xb5\xb7\x4a\xe6\x1d\xd0\x6d\x54\xd7\x1c\x56\xed\xfd\xa1\xc6\x91\x6b\x64\x4d\xb3\x94\xf0\x89\x93\x60\xb8\xb6\x8b\x22\x2c\x2f\xcc\xa2\xcd\xa1\xd9\x42\x47\x48\x6b\x42\x40\x02\x4f\x7a\x4f\x8b\x6f\xd9\xe2\x23\x9b\x6c\x6b\xde\x5c\x3f\xcb\x58\x62\x09\x25\xb9\x65\x0b\x10\x67\xc9\xb9\x1f\x70\xf3\x52\x3a\x2d\x87\xb4\x24\x8f\xfe\xe9\xdb\xe9\x6c\x6d\xd7\x1e\x48\xf6\xb9\x65\x8b\x36\xcd\xc8\xb2\x4e\x67\x41\x03\xbc\xce\xc2\x6a\x3b\x54\x48\x7b\x94\xf5\xcf\x76\x8a\xbe\x72\x72\x87\x31\x69\x77\xe7\xd4\xac\x14\x58\x6f\xcb\x31\x53\x82\x19\x06\x32\x6b\x2a\x13\x6d\xc5\xd5\x84\x15\x46\x9f\xc8\xb9\xa5\x7c\xec\xee\xe4\x4e\x2a\xab\xc8\xf5\xef\xb8\x99\xf5\x71\x57\xf5\x09\x18\x3d\x4e\x7e\x06\xff\x23\x37\x1f\x2e\x3e\x9c\x92\xb3\x34\x25\x12\x8e\x78\xa9\xd9\xa4\xcc\xc8\x84\xb3\x2c\xd5\x83\x48\xeb\xea\x81\x3e\xd0\x23\x25\x4f\x7f\xbf\xf9\x70\xef\x08\x31\x59\xa0\xb1\x62\x07\xa8\x8d\x40\xe8\x5a\xd4\xe8\x54\x40\x7a\x4b\xa1\xac\x8a\x60\xf7\x3c\x77\x6c\xd1\x31\x94\x0e\xcb\x18\x4b\x99\x31\x2a\xb6\xf4\x00\xb0\x75\x3f\xb3\x87\xd5\xa1\x85\x11\x3c\x02\x14\x32\x3d\x25\xba\x2c\x0a\xa9\x8c\x0e\x2a\x02\xd8\x5c\x7a\xf5\x3f\x41\x5e\xee\x91\xbf\x85\x97\x19\x1d\xb3\x4c\xff\xe9\xf0\xf0\xb7\xdf\x5e\xfe\xf1\x77\x87\x87\x7f\xf9\x5b\xfc\x6b\x64\xa1\xab\x37\x41\x9b\x8e\x4c\x41\x08\x77\x7f\x3a\x36\x7a\x96\x24\xb2\x14\xc6\xfd\x60\xa8\x29\xf5\x60\x26\xb5\x19\x5e\x87\x3f\x0b\x99\x36\xff\xd2\x5b\x38\x01\x79\x58\xa2\x03\xe0\xbc\xa6\x66\xb6\x67\xd2\xb3\xde\x1a\xb1\xfa\xa9\x6d\xb7\xb7\x4f\xb8\x5d\x76\x06\x09\xfb\xcf\xb7\x7e\xba\x96\x03\xdd\x29\x6e\x0c\x13\x20\x77\x30\x95\x5b\x4e\xdc\xb3\x98\x5b\xb1\xd9\xf9\xeb\x83\x07\x21\x5e\x01\x6a\x3b\x2c\x0e\x66\xef\x56\x86\xc8\x1c\x08\xad\x97\xa0\x2a\x1d\xe9\xec\x7a\xe8\x2d\x33\x7b\x5f\x88\xb7\x37\xbc\xbd\xf7\x99\x0c\x96\x0b\xb7\xac\x20\x69\x9e\x12\x29\xb2\x45\xf8\x5d\x93\x8c\x83\x35\xc2\x0a\xa0\xc1\x22\x71\x84\x2f\x07\x49\x51\xf6\x5c\x83\x41\xce\x72\xa9\x16\xe1\x4f\x56\xcc\x58\x6e\x25\xb6\xbe\x36\x52\xd1\x29\xeb\x85\xee\xd8\x2d\xfc\x85\x1d\x6b\x1f\x58\xee\x8d\x22\x75\x52\x2a\xcb\x3c\xb2\x85\xa7\x20\x2c\x7d\xda\xb3\xe8\xc1\xb4\xe7\xa3\x18\x76\xe3\x6a\x47\x96\x1b\xb4\x45\x67\x70\xf5\xab\x02\x19\x72\x2e\xb3\x32\x67\xba\x17\xd8\x13\x4a\xeb\x62\x6e\xa5\xc9\x25\xf3\xce\xea\xa7\xe3\xe9\x4b\xf9\x9c\x6b\xa9\x76\xe6\x83\xdc\x99\x3c\x65\x69\xac\xa6\x32\x91\x2a\xa7\x26\xa8\x8b\x5f\x0a\xa9\x41\x07\x70\x38\xdb\x20\x29\xaf\x0f\x5a\x7d\xb6\xa0\xc6\x30\x25\x4e\xc9\xff\x3b\xfa\xf3\x7f\xfc\xb3\x7f\xfc\xfb\xa3\xa3\x3f\xbd\xea\xff\x9f\xbf\xfc\xc7\xd1\x9f\x07\xf0\x8f\x5f\x1c\xff\xfe\xf8\x9f\xfe\x8f\xff\x38\x3e\x3e\x3a\xfa\xd3\xb7\xef\xbf\xb9\xb9\xbe\xfc\x0b\x3f\xfe\xe7\x9f\x44\x99\xdf\xe2\x5f\xff\x3c\xfa\x13\xbb\xfc\x4b\xcb\x41\x8e\x8f\x7f\xff\xf3\x56\xd3\xa3\x62\xf1\xa1\xc5\x81\xc7\xa7\xef\x36\x88\x0b\xc3\xa6\x4c\x75\xec\xd5\x7a\x5b\x09\xf9\xd2\xaf\x84\xb6\x3e\x17\xa6\x2f\x55\x1f\xbb\x9f\x12\xa3\xca\xed\x07\xa3\x22\x6a\xbb\xe0\xf9\x47\x7f\x5a\x23\x53\xac\x27\xcd\x7b\x47\x64\xcd\x12\xc5\xcc\xbe\x34\x18\x1c\xcd\xf3\x8f\x42\xa6\x87\x9a\x88\x35\x66\xc2\x75\xd3\xfe\xb7\x50\x6a\xbc\x48\x81\xf0\xaa\x38\xef\x44\xc9\x7c\x40\x22\xb3\xd0\x9c\x66\x3c\xf5\xed\x6e\xd9\x16\x2d\xd7\x3f\x2f\x4a\xd0\x8f\x4b\x09\x1a\xe1\xfe\x3e\xb8\x06\xc4\xc4\x7c\x93\x99\xa6\x69\xd3\xb5\x6d\xeb\xe6\x68\x2f\x40\x19\x49\x0a\x59\x94\x19\x35\x6b\xcc\x76\x2b\x6c\xd3\x0e\xf7\x75\x30\x13\xda\x8d\x06\x3b\xb0\xa3\x72\xf9\x6a\x63\x28\x39\xcb\x32\xc2\x05\x9e\x04\x18\xc0\x5b\xf3\x14\x43\x79\x89\x50\x34\x38\xcf\xed\x14\xee\x66\xac\x69\x68\xe4\xda\xea\x3a\xca\x70\x31\x1d\x90\xef\xec\xef\x48\xb3\x9c\x69\x8c\x0b\x92\x97\x99\xe1\x45\xc6\x48\xe0\xb6\x68\x43\xcb\x4a\x46\xa8\xd6\x32\xe1\xd4\xb8\x19\xbb\xfb\x43\x6d\xfc\xb4\x61\x36\x86\xde\x82\x29\x34\x61\x29\x13\x09\x1b\x90\xcf\x70\x5d\x18\xd6\x3a\xb6\xc2\x20\x98\xf7\x61\x0c\x4a\xd2\x12\xaf\x76\x90\x1e\xac\x1e\x63\x98\xe7\xa5\x01\x43\xf1\x63\x59\xf1\xed\x8e\x3b\xcb\x5c\x64\xcc\x07\x52\x15\x44\x6b\x0a\x77\x0f\x72\x52\xa9\xee\xfa\x7e\xe6\xfb\x76\x84\x37\x98\xdb\xb6\x72\xaa\x25\x8a\x5b\xd9\x18\xea\x94\xf6\xb1\x2d\x86\xed\xe8\xec\x4f\x92\xc6\x76\xa0\xaf\xed\x69\x6b\x07\xe3\x52\x57\x7a\xda\xd6\x9a\x54\x28\x36\xe1\x5f\x3a\xe0\xe3\x99\xa8\x54\x14\x9e\x32\x61\xac\x22\xa0\x80\xa0\x2a\x56\x30\x01\x7a\x38\xa3\xc9\x0c\xe8\x82\xa3\xa2\x95\x65\xf8\x21\x6f\x8c\x50\xca\xe8\x7e\xbc\x46\xab\xa4\x98\x97\xb3\xf5\x13\x3f\x5b\x6e\xd7\xf7\x7f\xb0\x84\x4c\x19\xea\x16\xeb\x95\xeb\xc6\x3e\x46\x3d\x9c\x9f\x8b\xff\x0b\x2f\xf0\xfc\x24\xad\xf6\x16\xae\x9c\x0a\x09\x67\x6d\xc2\x0d\x91\x56\x22\xb0\xdf\x1d\x90\xd1\x8a\x9e\x39\x35\xc9\xcc\xb5\x38\x3c\xd4\x04\x8d\xb6\xcd\x81\xc6\x68\x22\x4c\xcb\x8c\xa5\xc4\x3b\x6c\xe0\xa0\x1d\x51\xaa\xe6\xaa\x70\x42\xb5\xe6\x53\xd1\x2f\x64\xda\xb7\xa3\x9d\xac\x43\x88\x16\x87\x2a\x76\x35\xdc\x7e\xb0\xb6\xe2\x55\x30\x4e\xb4\xdb\xa6\x8f\xc1\xfe\x16\xc9\x16\x89\xcc\x8b\xd2\xb0\xc8\x38\x17\xec\x3a\xe3\x05\x7a\x16\x45\x32\x64\x25\x11\xdd\x0f\xa6\x39\x15\x74\xca\xfa\xee\xe3\xfd\xf0\xf1\x7e\xf8\xd6\x7d\xc0\xdc\x86\x6a\xa1\x49\x71\xd3\x39\xac\x03\xef\x1d\x9a\x2c\xf1\xe5\xd8\x99\x8e\x72\xfa\x85\xe7\x65\x4e\x68\x2e\x4b\x01\x32\xd9\x32\x38\xe1\xf2\x9a\xa5\xfb\x01\xd8\x0a\x40\xe9\xb5\x90\x6a\x09\x2d\xd2\x19\x31\xc9\xf3\xb5\x6c\xb5\xb2\x68\x75\xb3\x64\x75\xb0\x60\xed\x6c\xb9\xf2\x46\xea\xf6\xf8\xf8\xd1\xdb\xcd\x1b\x18\xc9\xc5\x56\x8c\xf4\x07\x1c\x5c\x3b\xc2\x38\x5c\x13\x99\x73\x63\x82\x4b\x56\xc0\xb0\x1e\xe1\xa6\x66\xfd\x74\x67\x81\x4f\x90\xc6\x72\x4d\xd8\x17\xab\x4d\x71\xb0\xa2\xfb\x5b\x8b\x1e\x72\xd9\x3b\xae\xc1\x80\x46\x05\xe1\x79\x91\xb1\xdc\xfb\x90\xf6\xbd\x6e\xe6\x9c\x0c\x5e\xce\xc7\xcb\xf9\x58\xd5\x49\x77\x91\x45\x62\x31\x04\x0d\x05\x63\x96\x55\xe2\x88\xc5\xec\x42\xa6\xda\xc9\x0b\x1e\x87\xec\x59\xb8\xfc\xc2\x35\x78\xe2\x7e\x64\x60\x19\x18\x31\xa3\xc9\xdd\x4c\x6a\x86\x3d\xa8\x62\x6e\x9c\x88\x35\x7a\x4b\x08\xdc\x23\x80\xd3\xe8\x64\x52\x6f\x91\xb2\x22\x93\x8b\x1c\x24\xdb\xa1\x89\xe5\x99\x20\xba\xb0\xbc\xc8\xa8\x61\x41\xb0\xd9\x6c\x6d\xb8\x37\xe7\x83\xaf\x5f\x7e\xb1\x12\x40\x14\x07\xd1\x02\xb6\xcd\x8e\x75\xd3\x54\x03\xd2\x8e\xc8\xe4\xe8\xb3\x7c\x03\x12\x7e\xf5\x06\xa0\x79\x76\x75\xb1\xde\x41\x92\xb4\x32\xaf\x90\xed\x26\x96\xa5\x65\x9c\x6d\x98\x6a\x43\x7a\x45\x9f\x5f\xef\xc1\x8a\x1e\xe8\x3d\x34\x5e\xf5\x9c\xfb\x5c\x88\x0e\xc0\xc6\x8a\x65\x18\xfa\xe0\x0c\xcd\xb6\x91\xf3\x5c\xdf\x8f\x46\xd6\xd6\xee\xde\xc6\xe6\xde\x0f\x93\xdf\x93\x12\xd8\xca\x28\x5f\xdb\x0c\x50\xb2\xe3\xa3\x0a\x2e\x47\x16\x92\x68\x9f\x77\x1b\x41\x8b\x22\x83\xfb\x3a\xd9\xd6\x37\xab\xa5\x3a\x86\xcb\xef\x38\xe9\xb0\xe5\xb1\xc3\xad\x9d\xf9\xa1\x46\x04\xb0\xa7\x63\xc6\x0b\xe7\xcd\x88\xd6\x3a\x1f\xbf\xf0\x19\xec\xa8\x55\x4c\x89\x3d\x09\x43\xd1\x23\x57\xd2\xd8\xff\x5d\xa2\x4d\xd4\xe2\xcd\x85\x64\xfa\x4a\x1a\x78\xb3\xd7\x65\xe3\x54\x3a\x2e\x1a\x3b\xc1\x01\x11\x78\x26\xc1\x20\x1d\x05\x34\xa0\xaf\x28\x90\x42\x0f\x20\xae\xc9\x50\x10\xa9\xfc\xea\x82\x55\x57\xbb\x21\xbc\x66\x28\xa4\xe8\xa3\x1b\xe1\xaa\x31\x2e\x83\x0f\x65\x0c\x93\x0d\xc3\xb9\xa1\x6e\x2c\x05\xc6\x5f\x30\x84\x25\xa3\x09\x4b\x49\x5a\xc2\xa4\x21\x1c\x83\x1a\x36\xe5\x09\xc9\x99\x9a\x32\xcb\xb4\x93\x59\x5b\x50\x6f\xa3\x4b\xf8\xb4\xa0\x4e\xf1\xa0\x5b\xf6\x0f\x48\xf0\x3b\xe0\x12\xdd\xc8\x36\xf6\x41\xf2\x96\xd3\xc2\x6e\xdd\x3f\x2c\x15\x03\xe8\xfd\x8b\x14\x94\x2b\x3d\x20\x67\xde\xf5\x36\xfe\xcd\xd9\xc0\xe2\x61\xec\x08\x56\xea\xfb\xa1\xe4\x73\x9a\x59\xba\x89\x02\x1e\x43\xf1\xce\x8e\xde\x64\x16\x3d\xc7\x4b\xed\xf9\x46\x7f\x17\xae\xc9\xc1\x2d\x5b\x1c\xf4\x96\xb6\xfb\x60\x28\x0e\x90\xbe\x2e\x6d\x70\x20\xc6\xe0\x51\x72\x00\xbf\x1d\xdc\x8f\xbf\x3c\x80\xf0\xb7\x75\x2f\x8d\xcc\x98\x8a\x43\x3f\xb7\xec\xe1\x4d\xd5\x1e\x96\x56\x5d\xef\x46\x23\x3d\xce\x2d\xc5\x8d\x17\x5b\xec\xd9\xaa\xe6\x05\xa8\x65\x0c\x4d\x66\xe8\xc5\xed\xe6\x05\x71\x34\x0b\x62\xf7\xcc\x20\x5d\x07\xc4\x70\x1c\xd2\x28\xb8\xf4\xf9\x6d\xc0\xb6\x1e\x03\xf9\xe9\x77\x91\x7f\x3b\xb4\xb7\x7f\x04\x0c\xf9\xad\xff\xd7\xef\xee\x19\xb7\xd0\x8e\xb1\xe1\x94\x3a\x08\x18\x97\xd0\x81\x70\x91\xc2\x05\x93\x5b\x2a\x40\x00\xc7\xb2\xf0\x81\x65\x0d\xc8\xa5\x25\x54\x24\x67\x54\x68\x6f\xe6\x82\x9b\xa8\xaa\xb1\x76\x57\x66\x91\x5e\xe5\x4c\x0a\xd5\xc9\x60\xe4\x4a\x8e\x9c\xed\xab\x47\xae\xc1\x96\x5a\xbd\x81\x93\x74\x25\x2f\xbf\xb0\xa4\x34\x6b\xef\xb2\x62\xb8\x6d\xe5\x22\x5b\x19\x7d\x0d\x20\xdf\x56\x4c\x1e\x57\x56\x63\xf2\x15\x06\xc7\x6c\x7e\x23\x64\x6e\xd9\xa2\x62\x36\x4e\x84\x00\x92\xdf\xab\xb0\xc4\xb3\x02\xe4\x1d\xff\xed\x4d\x59\xf9\x98\x0b\xfc\x18\x0e\xed\xb7\x02\x46\xf7\x00\xb5\x92\x5d\x96\xe1\x67\xf6\x01\xae\x76\x72\x46\x0d\x66\x1f\x3a\xc8\x18\x81\x4a\xae\x96\x2e\x22\x91\xe2\xf2\x87\x92\x66\xf5\x20\x04\xf7\xca\x35\x5a\xa2\xea\x77\x3c\x4b\x13\xaa\x9c\x97\x17\x86\x69\x6a\x89\xbb\x47\x81\x10\x24\x54\x84\xd3\x5e\xed\x91\xc6\xab\xca\x82\x2a\xc3\x93\x32\xa3\xca\x47\x8e\xb7\x0a\x14\xd8\x0a\xd1\x0a\x69\x46\x2c\x91\x22\xed\xa2\x00\xdc\x34\xfb\x36\xef\x5a\x0b\xa6\xb8\x44\xef\x62\x9e\xb3\x26\x92\x1e\xd5\x6d\xda\x72\xe2\x4f\x75\x38\x62\x35\xcb\x07\xc4\x66\x7a\x86\xc7\xa7\x42\x2a\x96\x1e\x47\xe4\x31\x9c\x8a\x01\x79\xb3\xf0\x66\x16\x30\xb9\xb8\xe8\x0a\xcd\x8c\x0f\x84\xf1\x28\xeb\x80\x5d\x1d\xa8\x89\x54\x10\x9c\x72\x94\x4a\x8c\xc8\x98\xf3\xc4\x1c\x0f\xc8\xff\x65\x4a\xc2\xc6\x0b\x36\xa5\x86\xcf\x03\x37\x0d\x8a\xab\x62\xd4\xdd\xe0\xbf\x22\x47\xd0\x8d\xf0\x3c\x67\x29\xa7\x86\x65\x8b\x63\xd4\x63\x19\xd1\x0b\x6d\x58\xde\x66\xeb\xda\x18\x0d\xd0\xd7\x0e\xda\xfe\xea\xeb\x0d\x2d\xbb\xc6\x50\x7d\xf6\x51\x29\x15\x64\xd0\x87\xa0\xb1\x85\x81\x07\xc9\x0d\xe2\x66\xec\x83\xe0\x02\x9b\xbd\x64\x19\x6f\xf0\xf7\x16\x0f\x28\x51\x0c\x32\x10\x38\xcc\xbd\x27\x8e\xa3\x37\xe5\x7b\x59\x8a\xf5\x26\xc1\xda\xc2\xdf\x39\x25\xfc\x73\xd4\x71\x6d\x94\xe2\xa3\x88\x09\xd1\x4c\x22\x13\x25\x25\x60\x97\x04\x76\x6e\xc9\x03\xb6\xaa\x3c\x51\xb6\x4e\x72\xaf\x11\x89\x30\x97\x2d\x5e\xef\x7b\x89\x5b\x0c\x1f\xea\x80\xcb\xe0\x20\xee\x00\xd3\x88\xdb\x33\x8e\x1c\x00\x7e\x22\x04\x2b\x04\x85\x6f\xb1\xd4\x7b\xb1\x59\x6a\xe0\xba\x92\xc3\xd3\xc3\xbd\x10\x5f\x5c\x8e\x92\x05\x9d\xc2\x79\xea\xb0\xaa\x66\x57\x92\x32\xc3\x54\x0e\x01\xd7\x33\x79\x87\xbf\x23\xdb\x2a\x5c\x2b\x96\x56\xb1\xed\x33\xa9\x81\x2b\xd5\x83\x18\xe1\xfc\xc2\xc5\xe8\x1d\x5d\x10\xaa\x64\x29\x52\x27\x35\x05\x02\xfa\xbe\xf1\xe1\x2b\x29\x80\x52\x94\xda\xc2\xea\xa6\x46\xa5\xc7\xcc\x50\x7b\x6c\x5e\x0f\x5e\xbf\xda\x0b\xc0\x3a\xc6\xad\xc2\x6c\x1a\x96\x42\x7f\x57\xee\xcf\xcc\x5e\xe6\xa5\x18\x4d\x3f\x88\xac\x8b\x2c\xf7\x1e\xd1\x0b\xba\xf6\x41\x09\xe3\x13\xb0\xdd\xf6\xf0\xd5\x9d\xe2\x86\x45\xe4\xf1\x68\x42\x33\xcd\xac\xea\x5e\x8a\x20\xc2\x1e\xd7\x45\x10\x68\xd2\x66\x41\xdb\xfd\x41\x74\x39\xbe\xe7\x39\x73\x07\x0a\x50\xae\x3a\x66\x01\xe1\x0e\xf5\x86\x23\x57\x0f\xee\x24\x47\xd8\xd2\x4a\x6c\x52\x9a\xe3\xfd\x38\x89\xe0\x02\xad\x66\xdd\x45\x25\xf1\x71\xc3\xc5\x1e\x57\xfb\x86\xcd\xe8\x9c\x69\xa2\x79\xce\x33\xaa\x32\x88\x15\x1c\xe1\xfc\xc8\xb8\x34\xab\x23\xd0\xbb\x45\x37\xc7\x33\x89\x86\xdb\x0a\x6a\x3f\x0f\x0b\x27\xa0\x11\x7e\x5e\xf6\x3b\x79\x69\x4a\x9a\x65\x0b\xc2\xbe\x24\x59\xa9\xf9\xfc\xbe\xa7\xc9\x45\x3f\xec\xc0\xaa\x9b\x5c\xba\x90\xe9\xa8\x60\xc9\x63\xf2\xe8\xba\x86\x61\x49\x55\xea\x37\x1d\x78\x32\x2a\xfb\xa0\xb9\x2f\xc0\xf3\x29\x49\x98\xd6\xde\xa7\x72\x11\xfb\x79\x86\x35\xfc\x58\x12\x0a\xd0\x3b\x7d\x99\x51\x6d\x78\xf2\x26\x93\xc9\xed\xc8\x48\xd5\x29\x66\xff\xec\xbb\xd1\x52\xff\x46\x1a\x86\xb3\xef\x46\xe4\x82\xeb\xdb\x38\xb1\x0b\x5e\x9a\xc6\xe6\x12\x4a\x6e\xcb\x31\xcb\x98\x39\x3c\xd4\xc8\xe5\x72\x9a\xcc\xb8\x60\x9e\xc1\x89\x10\x92\xe2\x14\x3e\x0b\xe5\xae\x77\xa6\x2e\xf0\xe9\xc4\xe1\xeb\xcf\xe8\x9d\x66\x38\xfd\xb1\x9d\xbe\xfd\x99\xb5\x89\x48\xdf\xeb\x3d\x05\x4e\x66\x78\xb1\xa7\x3b\x88\x89\xbe\xb1\x73\xec\x66\xdc\x3e\x7c\xcb\x33\x86\x3a\x0e\x2c\xd1\x7b\xa5\xb9\x73\x00\x3b\xb6\x90\x25\xb9\xa3\xa8\x15\x03\x0d\x1c\x90\x1b\x5e\x9c\x92\x4b\xa1\x4b\xc5\x2a\x7b\xc6\xa4\x31\x14\xd7\x55\x64\x99\x57\xa7\x60\x87\x51\xe5\xb0\x94\xce\x69\x57\xe4\xf2\x0b\xcd\x8b\x8c\xe9\x53\x72\xc0\xbe\x98\xaf\x0f\x7a\xe4\xe0\xcb\x44\xdb\xff\x09\x33\xd1\x07\x03\x32\xcc\xc3\x3d\x3b\xa4\xfe\x51\xcc\xbb\x3e\x61\x07\xcb\x8c\x23\x3e\xfb\x20\x08\xe2\xdc\xe8\xac\xb4\x96\x4a\x72\x87\x19\x28\x2c\x89\x67\x4a\x49\x15\x3c\xcf\x23\x30\x00\x77\x49\x64\x5e\x28\x99\xf3\xc8\xb0\x07\x08\xbe\x57\xff\x3a\x30\x37\x6c\x17\x49\x97\xf7\x1f\x73\xba\xb9\xce\xa4\xce\x1c\xd7\xed\xfe\x70\xe2\x3d\x26\x50\x55\x74\xba\x3b\xe8\x9f\xae\x91\xdd\x6f\x37\x8a\xa5\x56\xf1\x0e\xbf\x0d\x51\x73\xe4\x24\x65\xf3\x13\x9d\xd2\xd7\x3d\xf8\x8c\x76\xde\x7e\xa6\x36\x27\xaa\xc9\xc1\xeb\x83\x01\x19\x79\x6e\xdb\x8b\xe7\x58\xb5\x9b\x48\x15\x06\x04\x63\xfa\xab\x03\x72\x24\x15\x8c\x9c\x50\x41\x32\x46\xe7\xce\x80\x8c\x67\x6a\x81\x3a\xed\x71\xeb\xa8\xc7\xb6\x01\x60\x91\x96\xff\x9f\xbf\xdc\xd2\xba\x9d\x24\xba\xbc\x6f\xde\x33\xf2\xc0\x8a\xa0\x07\x20\x4c\x4a\x4b\x63\x2d\xd5\xb4\x6c\x15\xd2\x6a\xb9\xb1\xab\x05\x73\xb1\xa4\x29\xe3\x00\x1b\x37\xf5\x00\xe4\xd4\x83\x27\xa0\xba\xa4\x63\x7c\xbd\x27\xa9\x5d\xa1\xf9\x49\xf0\x1f\x4a\x46\x86\x17\x21\xb2\x9e\x29\xcd\xb5\xb1\xa7\x3b\xad\xf1\x30\x8e\x8c\xed\xe8\x2c\xa7\x7f\x97\x82\x5c\xbe\x19\xb9\x8f\x1e\x3f\x29\x78\xb6\x12\x09\xfa\xf7\x52\x31\xcb\x8e\xbb\x38\x0c\xf8\x3e\x4d\xce\x6e\xdf\x93\x0b\x6a\x28\x32\x78\xe7\x72\x25\x2a\x0a\x6f\xb1\x70\xcc\x45\xea\x7e\x8a\x38\xf7\x63\x33\x59\xbb\x7b\x57\x9b\xe4\xa5\xb8\xe1\xa7\x8f\xc3\x3d\x31\xe3\x04\x68\xfc\xf4\xbd\x4c\x3b\x73\xe4\x3f\x58\x00\x9e\x63\x7f\x92\xdb\x01\x88\xd5\xd9\x7b\x70\x9c\x89\x3d\xcf\xee\x9f\xdf\x59\x8d\xb3\x35\xf1\x6a\xc5\x46\x3c\xb4\x3a\xce\xf9\x26\xd2\xd3\x81\x76\x58\xd4\x80\x73\xe3\x18\xca\x38\x93\x63\xe2\xf0\x7d\xdf\xf3\xfd\xf4\x71\xb8\xc3\x74\x3f\x7d\x1c\x3e\xee\x54\x77\x12\xcf\x9a\xd2\x59\xc5\x83\xab\x70\x8c\xa6\xd8\xd5\x5e\xe6\x1a\xec\x4b\xda\xda\x27\x9c\x56\x65\x95\xdc\x02\xa5\xc3\xcb\x2f\x05\x3a\x9f\x39\x23\xff\x68\x46\x21\x8e\x39\x44\xd7\xc1\xa6\xda\x5d\xd6\x96\xb2\xfb\xed\xb5\x1a\x1d\xd0\x27\x72\xc1\xf0\xca\x32\x3d\xf5\x8e\x00\xa1\xc7\xea\x0e\xef\xc1\xed\x32\x3d\x45\xba\x4a\xd0\x0b\x33\x8d\xb0\xe9\x08\x4d\x44\x22\xfc\x44\xe7\x94\x67\x74\xcc\x33\x6e\x16\x96\x43\x1f\x0f\x6a\xae\xa5\x1a\xa6\xbc\xd7\xc3\xbc\xa3\x68\xb1\x64\xa0\x22\x47\x76\xa4\x13\x30\x70\x1d\x0f\x2a\xa9\x62\xc6\x94\x0b\x42\x44\xd1\xa3\x26\x72\x68\x66\x00\xdb\x1a\x12\x47\x5b\x54\xd9\xce\xee\x01\xf0\xf6\x7c\x74\x65\x68\xb6\xcf\x4a\x86\x06\x3f\x8c\x5c\x4e\xb8\xe7\xcc\xd3\x30\x5e\xaa\x15\x57\x03\xb4\xda\xda\xb2\x3d\x5f\xfb\x69\xe3\x14\x09\xc1\x68\x3b\x30\x41\x3b\x55\xe1\x98\xa0\x8f\xaf\xaf\xb9\x51\x22\x96\x8d\x1c\x29\x71\xe9\x92\x90\x6f\x5a\xdc\xfa\xb6\x45\xaa\x80\x2e\x09\x16\xfc\xce\x77\x0d\xb9\x9a\x81\x5b\xc5\x76\xe4\x6a\x3d\x9b\x84\x15\xb3\x49\x97\x7b\xea\x73\x56\xcc\xde\x8e\xea\xe6\x39\xfb\x8e\xbc\x1d\xad\x38\x97\x00\x64\x58\xad\x46\xa3\xdd\xa1\x26\x19\x9f\x30\xc3\xb7\x2c\xe1\x01\x4e\x66\x2e\x05\x37\x52\xad\x8f\x4b\x26\x9d\x4e\x9b\x1f\xae\x2b\x3f\xac\x32\x79\xbc\x77\x23\xa0\x03\x5c\x22\xb3\x8c\x25\x3e\x8f\x35\x80\xd4\x7f\x62\x95\xf2\xc2\x9c\xce\x1e\xb2\xfc\xa3\xa2\x72\x82\x1b\x7a\xf2\xf1\xf2\xec\xe2\xfd\xe5\x20\x4f\x7f\x36\x93\x77\x7d\x23\xfb\xa5\x66\x7d\xde\x22\x55\xc8\xd3\xb9\x11\xe2\x53\xb4\xca\x5c\x55\x07\xe9\x07\x1f\xc0\x48\x3e\x69\x74\x1b\x00\x53\x8e\xbf\x14\x92\xd2\xf4\x88\xa2\x2e\x48\x91\x3a\x4b\x50\x99\x65\x08\x65\xa3\x18\xeb\xc5\x2a\xf5\xc6\xd8\x8c\xce\x0b\xda\xd5\x88\x50\x2d\xea\x61\x09\xf4\xe3\x23\x57\x17\x5a\xbf\x5d\x88\xd8\x04\xb9\x51\x18\xc3\xfb\x5f\xc0\x55\x93\x91\xe0\x9f\x05\xfe\xb6\x13\xa9\x2c\xd6\xa8\x3a\x06\x30\x93\xc0\x62\x4f\x4a\xcd\xd4\xc0\x71\x8c\x47\x07\x54\x87\x64\x3d\x3b\xe4\x48\x6b\x82\xe9\x23\x9b\xa0\x43\xb2\xcf\x99\xeb\xa4\x28\x5a\x9a\x19\x13\xc6\xa7\x1c\x77\xc0\x58\x09\x37\xe7\xe1\xfc\xe8\x80\x6a\x99\x1e\xa8\x5b\x32\x9f\x97\x04\x38\x5d\xd0\xd0\x1e\x94\x7b\xd1\xed\x10\x1d\xa5\x68\x2a\xc1\x05\x02\x73\xba\xd5\x10\x8c\xa6\x39\x17\xcf\xf0\x20\x26\x5c\xa4\xdb\xd6\xdf\x48\x5c\x07\x3d\xea\x72\x14\x8e\xe2\xad\xe7\xe1\x26\x8e\x7a\xbd\x06\x43\xc8\xdd\x9d\x5c\xfd\x46\xae\xd5\xa1\xcb\x17\xfa\x87\xac\x8f\x5f\xe9\x17\x69\x05\x95\x97\xeb\xb5\xfd\x1b\x70\x1e\xe1\xd2\x6c\x4f\xfb\x4b\xfe\xfd\x04\x9a\x7b\x43\xaa\x8b\x0c\x73\x2f\xde\x0c\x55\x53\xb4\x0f\xda\xc2\x8c\x60\x58\x7e\xc5\xe9\xae\x16\x04\x05\x55\x34\x67\x86\x29\x74\x1d\x73\xce\x68\xc2\x79\xf5\x7f\x28\x98\x18\x19\x9a\xdc\xee\x3b\x85\xe8\x0b\x3f\x7d\x38\x7e\xba\xeb\x6d\x99\x77\x92\x49\x03\x26\xb8\x84\x42\x8b\xf8\x66\x96\x0b\xc7\x6c\x9e\x09\x5d\x09\x79\xbc\xba\x58\x22\x42\x1e\xa7\x3a\x13\xad\xf2\x7a\xa1\xf1\x01\x5c\xc4\x42\x62\x3a\x70\x7d\x47\x28\xec\x87\xe9\xb5\x3f\x04\x4e\x8e\xd9\xe5\xde\xa9\xa2\x07\xb9\x4c\x19\x19\x73\x53\x9d\x74\xcd\x0c\x29\x98\xca\xb9\x0b\x80\x96\x02\x6b\xf0\xb1\x14\xb9\x97\xe5\x54\xee\xd3\x11\x67\x13\x44\x26\xc6\x17\xb9\x22\x63\x66\xee\x18\x13\xe4\xd5\xab\x57\xaf\x40\xde\x78\xf5\xeb\x5f\xff\x9a\x40\xc6\x85\x94\x25\x3c\x5f\x6e\x08\xad\xfe\xeb\xf5\xeb\x01\xf9\xe3\xd9\xfb\x77\xe0\x7f\x55\x18\x4d\xc6\xd2\xcc\xdc\xc8\xb6\x41\xad\xb3\xee\x91\xff\x19\x7d\xb8\xf2\x62\x82\x6e\xfc\x0a\x2a\x45\x58\x5e\xdd\x99\xee\xd5\xaf\xbe\xfe\x7a\x40\x2e\xb8\x82\xc8\x5b\x0e\xb1\x02\xc1\x5d\xb0\xf0\x2e\x74\x42\x9a\xe5\x58\x77\xc7\x26\x9c\x3b\x6d\xce\xa7\x33\x83\xd5\x92\x00\x53\x32\x9e\x18\xcc\xbe\x87\x87\x1d\x73\x21\x69\x17\x4a\xe2\x02\xa3\x9c\xe3\x08\x4c\xae\x47\x32\x7e\xcb\xc8\x44\x7f\xa3\x64\x59\x54\x01\x81\x8a\x69\x2b\xa3\xba\x5a\x4c\x38\x58\xb5\x57\x9a\x99\x27\xf5\x64\x68\x69\xa9\xa9\x21\xdd\xb0\x26\x80\xf4\x42\xfe\xb1\x3e\x62\x42\x41\x79\x70\xae\x83\xeb\xe6\x5a\xf6\xfb\xa0\x45\xa6\xd1\x39\xf5\xf1\x1d\x85\x92\xdf\xe3\x26\x71\xe1\x23\x85\x9c\xcc\xab\x9d\xcc\xe5\x02\x33\xc1\x66\xcb\xeb\x91\xeb\x96\xef\xb9\xa8\xf8\x28\xc6\x68\x38\x89\x83\xd1\x20\x74\x9b\x6b\xfb\x89\x5a\x72\xc8\x15\x5f\x8e\xcb\x13\x9a\x99\xc6\x1d\x2d\xc5\x52\x6f\x57\x6b\xc4\x51\x1a\x57\x81\xc6\x85\x79\x55\x63\xa0\xbb\xaa\x0b\x92\x89\xea\x1a\xd5\x12\xb6\xd5\x9c\x64\x34\x33\xa5\x03\x0d\xf8\x2a\xd9\x6f\x33\xad\x5d\xac\x4d\x4e\xd5\xad\x15\xfb\xdd\xf9\x1f\x80\x67\xb0\x0e\x71\x3e\x18\x74\x35\x67\xa1\x48\x5d\xec\x59\x6f\x3f\x72\x38\x18\x1c\xe2\x01\x91\x0a\xf3\x5d\x22\xb6\xdb\xf7\x4f\x14\x53\x5c\xf7\xdc\xa6\x45\x54\x82\xce\x95\xf6\xa0\x35\x8f\x60\xea\x20\xd5\x26\xcb\x6d\x27\xf1\xa5\x5b\xbe\xe0\xb6\x19\x83\xb1\x65\xd1\xa6\x6c\x41\x57\x09\xaa\x43\x82\xe1\xf5\x75\x53\xdc\x11\x68\x97\x33\xb8\x73\x0e\x5c\x82\x5e\x11\xbb\xcc\xb1\x2b\x93\x73\x41\x6c\xb5\x8a\x59\xcf\x9f\xab\x0d\x27\x18\xfe\x51\xa7\x55\x8e\x16\x44\x12\x42\x55\x9d\xaa\x8a\x05\x79\xd6\xcc\x2b\x46\x97\x6e\xd9\xd8\xbb\x30\x32\x7c\xda\x5d\x12\xe0\xb3\x74\x0e\x02\xcd\x2c\x6a\xd5\x2e\x32\x34\x00\x80\xdc\xe8\x0f\xcb\x80\xbc\x77\x34\x15\x91\x8b\x8e\xb5\xcc\x4a\x83\x5d\xab\x1f\x63\x82\x0b\x83\xfa\x94\x03\x40\x65\x43\xb3\x88\xfc\x9a\xaa\xde\x57\x3b\x4a\x8c\x4f\x87\xc3\xf8\x92\xfa\xf2\xc9\xd2\xca\x56\x19\xbb\xf5\x83\xa5\x98\x4d\x34\xef\xa2\x2a\x8d\x86\xe4\xa8\x2a\x95\xe1\xaf\xb9\x87\xc2\x30\x35\xa1\x09\x3b\x8e\x55\xa8\x50\x92\x24\x78\xd6\xf8\xd8\x80\x19\x15\x69\x86\xa2\x75\xc2\x14\xa0\x3c\xfb\xe2\x8a\xe5\xda\x4f\xa4\x8a\x43\x11\xd8\xa3\x37\xcc\xca\x83\x8c\x9a\x52\xb1\x56\x11\x46\xfb\x75\x2b\x84\x69\xec\x4b\x69\x83\xc1\xba\xba\x54\x40\x27\x2f\xa1\x8a\xe8\x58\x55\x60\x42\xa8\x22\x48\x75\xac\x96\x0e\x2c\x2a\x01\x3d\x06\x52\xb1\x90\xa5\x72\x76\x6f\x9f\x5b\x34\x91\xca\x2a\x42\x38\x30\xd5\x44\xb1\xa9\x95\x56\x15\x88\xb5\xd8\x22\x2b\xed\x8b\xbd\x3a\x7f\xed\xd9\x49\x6e\x93\x8b\xdb\xc4\x89\xcf\x72\xce\x53\xcf\x22\xe1\x6e\xa9\x2a\xf1\x57\x50\x1d\xc5\x9d\x44\xe9\xd8\x23\x08\xa3\x30\x0e\x8c\x34\x44\x74\xd6\xfc\xa7\x63\xeb\xae\x84\x44\x0f\x2d\x6a\x29\x74\x21\xc2\x32\x65\xd7\xe5\x38\xe3\x7a\x36\xda\xd1\x14\x78\xb5\x62\x08\x74\x18\x58\xba\xa8\x5b\x6b\x1e\xd4\x4c\x68\x0e\x2c\xcf\x92\x71\xcb\x6c\xa1\x76\xb0\x04\x20\xfa\xde\x31\x66\x4a\x08\x8c\xc8\x98\x0b\xe7\xb7\x3f\x45\xf3\x70\x11\x5a\x98\xc0\x23\x65\x9f\x44\x51\x7b\x9f\xd0\x2c\xd3\xcd\xe8\x55\x4f\x68\x51\xe6\xf0\x51\x5b\xb8\xa7\xdc\x6e\x77\x28\x13\xd2\x48\x05\xb9\x76\x61\x9a\xe4\x12\x23\x5c\x04\x91\xc2\x37\x82\x3c\x24\xbe\x43\x14\xd5\x07\xb1\xbb\x80\x32\x7b\xae\xa3\xf8\x62\x03\x7d\x38\x1b\xe8\x8e\x37\x0d\x55\x25\x25\x1a\x45\x04\xd7\x4b\x3d\x7b\x52\xea\x49\xee\x96\x2b\x89\xbd\xde\x0a\xe0\x37\xcf\x0c\x96\x27\xef\x9c\xf3\xec\x73\xa3\x3b\xb0\x69\xab\x77\xc0\xe1\xed\x3b\xcd\x22\x89\x30\xd3\x29\x04\xe1\x08\x2c\x1f\xf9\x8a\xe7\x00\xbb\xc1\x97\x87\x9a\xa4\x32\x29\x43\x6e\x54\x00\x5a\x75\x01\xd6\x26\x83\x20\xe9\x7a\x9c\xba\xa7\xb5\x8a\x3f\xb2\x15\xab\x52\x79\x27\xee\xa8\x4a\xcf\xae\xb7\xf8\xa5\xd7\xd9\x79\xd5\x2b\x16\x94\xfc\x60\x50\x09\x8f\x8e\x65\x69\xaa\xf4\x99\x3f\x6d\xd3\xb3\x91\x96\x22\xb4\xb4\x34\x93\x17\xe3\xf5\x8b\xf1\xba\xf9\x3c\xb8\xf1\xda\xf6\xa9\xe7\x82\xad\x1d\x57\x9f\x62\x80\x67\x6d\x5d\x69\x1f\xd2\x0a\x1a\x11\x18\xa4\xee\x4d\x3f\xf8\x86\xdc\x86\x47\xa4\xda\xdb\x48\xd6\xf3\x14\x08\x58\xf5\xd3\x5b\x4c\x1f\xc8\x0e\xda\xbe\x56\x2f\x3e\xeb\x5c\x70\x37\xd5\xee\x05\xa9\x21\x2a\xb6\xdb\x73\x99\x90\x7b\x4e\xef\x12\x69\x55\xc6\x0e\x13\x31\x77\x28\xd5\x89\x4f\x47\xe0\x93\xce\x1b\x40\x3a\x16\xd2\xc5\xa7\xeb\x6e\x90\x1d\x8a\xea\xe2\xf3\xc4\xa5\x75\xf1\xe9\x6c\xe2\x26\xdd\xcb\xec\xae\x58\xee\xc3\x16\xdb\xdd\x71\x69\x8f\x6f\xbd\xef\x55\x25\xde\x9e\x3f\x5b\x7f\xb1\xde\x2f\x3d\x8f\x68\xbd\x8f\x08\xb7\x27\x06\x0e\x00\xb1\x45\x3f\x36\xb7\x79\xb3\xfe\x98\x79\xb1\x72\x50\x65\x20\xb3\x28\xe7\x0d\xfa\x52\xd5\xaf\x4d\x0f\x07\x83\xc3\x43\x6f\xe6\x77\xf8\x59\x9a\x49\xff\x37\x84\x89\x44\xa6\xb8\xa9\x76\x7c\xa5\x0d\x30\xfd\x4a\x3b\x8f\xe7\x92\xfb\x6f\xc5\x57\xaf\x30\x76\xb7\x2d\xe9\x70\x82\xbb\x97\xce\x5e\x05\xe9\xc7\x28\xa0\x1d\x97\xc9\xae\x57\xc5\xc6\x16\xf7\x29\x85\x1d\x03\xef\xc1\xf9\x6b\xeb\xe2\xd8\xf8\xec\xc2\x5e\x77\x28\x94\x8d\xcf\x23\x97\xcb\xc6\x67\x27\x8e\xda\xa9\x74\xf6\x8a\xc5\x3d\x5e\x01\x6d\x7c\x9e\x69\x31\x95\xfa\xd3\xa9\x98\x36\x3e\xbb\x95\xd4\xae\xf7\xed\xb8\xf5\x7b\x29\xaf\x8d\x4f\xb7\x22\xdb\xf8\xec\xbb\xd4\x36\x3e\x2d\x21\x01\x36\xf0\x0b\xde\x29\x78\xe0\xd2\xf5\xa9\x7b\x3e\x1a\x96\x17\x52\x51\xb5\x20\xa9\xb3\x35\x2c\x56\x04\x60\x46\x11\x98\xf7\xce\x8a\x02\x73\x4f\xb9\xda\x53\xfc\x40\x87\xe0\x4b\x96\xf2\x72\x6d\xc9\xe2\x75\x60\xfb\x0e\xb2\x61\xb9\x4c\x5a\xfe\x72\x13\x87\x0a\xa9\x04\x69\x72\xeb\x6a\xe4\x78\x18\x22\xa7\x8f\x53\xee\x1c\x34\x32\x1f\x83\x31\x0c\x6e\xfa\x5c\x2d\x40\xdf\x18\xc7\xae\x19\xae\xf0\xca\xc3\xdd\xfd\x1f\xb9\x86\xc7\x56\xfe\x78\x0f\x4c\xef\x91\xf6\x84\x74\x0c\x32\xe3\x7f\x67\x50\x60\xab\x73\x0a\x2b\x09\x62\x77\x28\xfc\x95\xc9\x24\xba\x58\xae\xb1\x1f\x80\x7a\xc0\x6c\x6f\x98\xb7\xb0\xb7\x5f\x47\xe1\x01\x2c\x3a\x99\xc6\xbb\x3a\x9e\x40\xee\x46\x10\xd1\x01\x76\x01\xde\x37\x51\x19\xbc\x52\xdb\x2f\x41\x6a\xf5\xa8\x4d\xf5\xa1\x3b\x9f\x42\xd2\x44\x95\xca\xea\x8a\x85\xfd\x65\xe4\x21\x10\x29\x65\x10\x9e\xe0\xa5\x70\x5d\x82\x0c\xe8\xbe\xe2\x64\x21\x39\x81\xfb\xa8\xaa\xee\x57\xc8\x5e\xb8\x84\x55\x82\x67\x75\xb4\xf2\xa9\xdb\xc2\xc2\x4b\xe1\xbc\x08\x96\x70\x64\x35\x8a\x94\x9a\xa9\xfe\xb4\xe4\xe9\x2e\xc8\xf1\x8c\xb9\x5b\x6b\x9e\xd6\x9d\x93\x75\xe4\x5f\xf7\xe0\x5a\xc1\xcb\xa2\x03\xdd\x3f\xb8\x0c\xae\x19\x35\xc2\x1f\xa7\x84\xab\xbb\x69\x50\xef\x09\x10\x8e\x9c\xbf\xef\xb9\x09\x7a\xab\x63\x08\xc9\x22\x71\x61\xb2\xbc\x96\xcf\x11\x87\x45\xcc\x03\xaf\xd4\xbe\xfd\x8f\xd7\x6f\xbd\xb1\x7e\xcc\x26\xb2\x2a\x01\x82\xea\x8e\xf3\xa5\x4d\x59\xc6\xa0\x4e\xba\xaf\xc1\x6e\x1b\xc0\x35\x6f\x2e\xe7\x16\x99\xff\x2c\xc8\x27\x9f\x94\x9e\x4f\x4e\x09\x3d\xae\x85\x2a\xb8\xb2\x2a\x82\xb1\x14\x1d\x6c\xb3\xea\x3b\xaa\x14\xba\x47\xc6\xc7\xde\xd9\x04\x4e\x9c\xb0\x32\x5f\xe6\xc5\x59\x54\x9a\x15\xb3\x00\x80\x80\x5f\x25\x73\xa2\x05\x2d\xf4\x4c\x42\x75\xfd\x84\x16\x34\xe1\x66\x61\xc1\x6d\x14\x4d\x6e\xa1\x0c\x8f\x62\xee\x8b\x3d\x92\x1c\x3b\x7f\xad\x18\x82\x75\xb7\x5f\x33\x53\xb2\x9c\xce\xc0\x93\x15\x5b\x25\x19\xd5\x1e\x00\x2b\xfb\x3b\x6d\x46\x93\x74\x21\x68\xce\x93\x90\x34\x4f\xc9\x39\xd7\x5c\x3a\x6b\x2e\x8e\x6b\xb1\x9e\x5c\x87\xbc\x67\x68\x24\x3e\xcf\x28\xcf\xc9\x91\x66\x8c\x04\xc4\xc0\x5f\x5c\xb5\x76\x34\x5e\x28\x66\xbb\xc7\x16\x64\x19\x92\x77\x0b\x97\x71\xa0\xa2\x74\xe1\x8a\x0a\x19\x25\x1c\xb7\x74\xf5\xa7\x8f\xc3\xd6\xad\x9e\x99\x54\x70\x31\xef\xb3\x56\x32\x91\xca\xe8\x7a\xf2\xec\x7a\xa8\x63\xb5\x03\xf1\xcc\xe5\x76\x83\x1f\x32\x29\xa6\x71\xc8\x7e\x85\xa5\x96\xac\x0a\xa8\x65\x32\xe7\x69\x49\x33\x24\xa8\x6e\x32\xe7\xa3\x21\x76\xe7\xd3\x99\xe9\xdf\x31\x30\xbb\x20\xdf\xa9\x5c\x9b\xfc\x47\xf9\x92\x5b\x0e\xd7\x40\x80\x8d\x33\x1b\xa0\x09\xcb\x4e\xed\x8e\x2e\x20\xbf\x8b\x73\x21\xa9\xdd\x8c\xfa\xdc\x5a\x38\x44\x80\x7b\x04\x74\x98\xde\x59\xa8\x4d\x61\x25\x06\xb0\x4b\x59\x28\x03\xd6\x2e\xcf\xcd\x02\x3e\xca\x75\x17\x5e\xbb\x32\x64\xd4\xee\x11\x48\x71\x7f\x16\x68\x61\x82\xeb\x8e\x71\xe4\x7b\x05\x43\xa0\x1d\x1b\x33\x1c\x81\x63\xbd\x3b\x86\xdf\x30\xc1\x14\x4f\x1a\xa8\x13\xba\x4e\xa9\x81\xc3\xc7\x84\xed\x96\x0e\x36\xab\x46\x0f\x20\xe3\xcd\x2b\x54\xba\x71\xd5\x08\x3b\x4a\x1f\x07\xdf\x45\x56\xb8\xe8\xde\xc4\x9e\x52\x2a\xd2\x3e\xcd\x2c\x7e\x5e\x7f\x3e\x77\x7e\xd1\x78\xee\x6a\x7e\x01\xbe\xb0\x10\x17\x21\x13\xb5\x95\x52\x56\x1e\x37\x08\x80\x1f\xb3\x14\xc8\x54\x5c\x83\xf1\xce\x2a\xdc\x0e\x45\xae\x3f\x9f\xf7\x08\x1f\xb0\x81\xff\x2b\x34\xf5\x74\xd2\xc8\x29\x7a\x15\x06\x4f\x51\xc0\x6e\x98\x4a\x6c\xdb\x8a\xfb\xfe\xed\xb7\x76\x92\xf6\xd7\xdf\xf5\x7f\x1b\xe5\xf6\xfc\xdd\xdf\xec\x7e\x2b\xdb\xa0\xfe\x36\x76\x4d\x0b\x89\xec\xff\x76\xed\x12\x3d\xbb\x34\xd0\x7f\x73\xf5\xad\x98\x30\x56\x30\xbd\x96\x70\xe9\xcf\x53\xc4\x79\xf8\xb6\x62\xdf\x7b\x3b\x25\x80\x29\xd8\x88\x12\x6a\x98\x00\xd6\xe0\x63\x38\x84\x34\xd8\xdd\x95\x72\xb5\xf3\x3f\x02\x0b\x03\x86\x9b\xf5\x88\x91\x12\x0e\x3d\x12\x96\x33\x41\x98\x2f\x7f\x89\x6b\x05\x70\x50\xe7\xf7\xe6\xb9\x9d\x1d\xd6\x42\x38\x44\xe4\xda\x79\xc0\xdc\x7e\x21\xa4\xf9\x45\xd8\xfe\x46\x61\x6e\x3a\x97\xdc\xe7\xf4\xb6\xe7\x51\x60\x91\xc4\x90\x65\x7a\xbc\x20\x39\xd7\x86\xde\xb2\x01\x19\x59\x6e\x16\x5f\xae\x21\xf4\x04\x81\x5c\x90\x2c\x25\xa5\x30\x3c\x83\x5f\xab\x71\xec\x94\x63\x2e\x37\x9c\x10\x5d\x42\xc5\xf0\x42\xb1\xbe\xe7\x9b\xae\xd5\x12\xc5\xa9\xd6\xd2\x0b\x9b\x3d\xa3\xa8\x6c\x14\x29\x74\x05\x78\x50\xe1\xd0\x6b\xc9\x1b\xcc\xce\x53\x8a\xa4\xe2\x95\x00\x4c\x3d\x20\x57\xc0\x1e\x33\x7f\xc3\x8c\x7a\x8f\xb3\x87\x0a\x96\x30\xad\xa9\x5a\xf4\x20\x57\x3a\x0f\xf9\xb5\x9d\x03\x10\x10\x8f\x9c\x0a\xcc\x54\xae\x58\x22\x85\x36\xaa\x4c\x0c\x96\xae\x1b\x2b\x79\xcb\x44\xf0\x3e\x0c\x84\x29\xb8\x81\x55\xee\x38\x70\x7d\x26\x49\x32\xa3\x62\x1a\x95\x7e\xc9\x69\x0a\xb0\xff\x36\xc8\x55\x7e\x3d\x16\x02\x74\x62\x45\x19\x6e\x00\x14\x63\xcb\xb0\x82\x55\xf7\xcf\x82\x78\xc5\xbd\x57\x99\x5d\xed\x92\x78\xb6\x85\x76\x75\xa2\x5f\xa4\xa3\x8d\xb0\x0f\x52\xc2\x9e\xdd\xc8\x72\x66\x68\x4a\x0d\xdd\xc1\x95\xec\x7d\x55\xaf\xce\x97\xac\xc7\x9a\xa1\xe1\x9e\xd3\x71\x3b\x2f\xe0\xc9\x82\xc7\xe1\x52\x70\x12\x67\x1e\xf2\x10\x7f\x6d\x2c\x4e\xb9\x7b\x07\xf4\x10\x03\xf1\xc9\x17\x04\xb3\xc3\xfb\xd1\x90\x5c\x54\xd5\x0e\x2b\x72\xd2\xee\x56\xab\xa3\x41\xd7\x82\x7e\x07\x18\xdd\x54\x57\x6f\x49\xdd\x5d\x6c\xa5\xa0\x83\x5c\x82\x09\xc3\x15\x8b\xa3\xd3\x1c\xe8\x4a\x81\x48\xde\x00\x22\x40\x79\xca\x8c\xae\x1c\x5e\x90\x0e\x5b\xe2\xe2\xf8\x9d\x53\x7f\x81\x48\x3b\xc0\x3a\x0d\x72\xb5\xc4\x85\x60\xd7\xd2\xd1\x59\x4b\xf9\x1f\x04\xae\xbb\xd8\xb0\x31\x43\xff\x7b\x99\x76\x31\x7b\x37\x12\xdb\x57\x43\x54\x5e\xa0\xe8\xcf\xab\xc1\x8c\x80\xdf\x80\xcb\x2f\x5d\x8b\xb1\x43\x22\x37\xa3\xf3\xdd\x6d\x5e\x95\x24\xd6\x0f\x49\x81\xe1\x73\x7d\xf8\x5c\xff\x75\x7b\xdb\x60\x17\x87\x12\xff\xb4\x76\x2c\xa9\x7f\xa4\x93\x21\xd6\x92\x94\x51\x47\xeb\x69\x33\x63\x79\xa0\xf6\xee\x3a\x32\x5c\x01\xbb\x90\x09\xc6\x2d\x9d\x38\x25\xbf\xa8\xf1\x77\x27\x47\x05\xad\x0c\x3d\x7d\x8f\xbc\x9a\x36\x70\x9b\xe0\x03\xd2\xeb\xcd\x8f\x1b\x83\x81\x60\xb1\x5a\x63\xf1\x1e\xc5\x41\xd8\xb3\x82\x99\x02\xbb\x9c\x0f\x64\xb0\x88\xa5\x64\x96\x31\x05\x4b\x70\x6a\x5a\xe3\x3a\x1e\x72\x89\xa2\x71\xb8\x17\xd4\xe1\x20\x5d\x0a\x76\x17\xc4\x08\xaa\x31\x6b\x8b\xbf\x3a\x63\xae\x0a\xdd\xda\xf1\x82\xd7\xf3\x99\x58\xe0\xd4\x2f\xc2\xb6\xac\x13\xce\x7b\x71\x45\x37\x98\x0b\xcd\xee\xe8\x42\x03\xc6\x57\xda\x42\xf8\xbe\xcb\x90\x56\x0d\xfc\x91\x4d\xb0\x77\xeb\xab\xb5\x9d\x2e\xd7\x76\xb9\x5e\x83\xb8\x4b\x2e\xda\xf8\x32\x55\x1d\x36\x56\xe1\x68\x3e\xbb\xdc\xc7\x81\xc3\x0b\xdc\xc3\x77\xbb\x5c\xa9\xa7\x3c\xbd\x1e\xc2\x10\x5e\x1a\x9f\xc2\x1f\x9e\xd7\x84\xdb\x87\x31\xb3\x58\x5d\x45\x54\x03\x86\xc4\x7d\x57\xb8\x24\x54\xa8\xf5\x2d\xa4\x45\x75\x06\xe8\x50\xb6\x4b\x31\x70\x29\x81\x2f\x0e\x20\xed\x3f\x15\x0b\xc7\xc3\xcd\x8c\xab\xb4\x5f\x50\x65\x16\xa8\x9e\xf6\x6a\x5f\x0b\xee\xf9\x9d\x16\xbe\xe3\xbd\x50\xbb\x8c\xc3\x6b\x21\x0c\x8b\xf7\xa5\xf7\x9c\xe1\x7f\x2d\x5c\x1f\x63\x3d\xed\x03\x00\x56\xae\xe7\x2a\x8a\x87\xf7\xba\xe0\x93\xad\x27\x8d\xc9\xc7\xae\x1c\xa3\x71\x6b\x8b\x84\x3f\xae\xfc\x24\x63\x07\xea\xc0\xd1\x41\xf9\xb1\x13\xe8\x59\x9d\x93\x56\xa5\xba\x23\xb3\xa1\x93\x0a\xbc\xfb\x8d\x2b\x14\x24\x16\xce\x18\x14\x7f\x2b\x1e\x20\x9c\x0b\x72\x24\xa4\xc0\xb3\x82\x6d\x8f\xd1\xfb\x68\x8d\xb5\x0b\x9a\xb8\x0a\x6f\xf5\x02\x9b\xd1\xd9\xf4\x6c\x81\x8b\xd4\x6e\x16\xd0\x6a\xd0\x87\x74\x99\x24\x8c\x05\x0d\x3a\xae\xf7\x52\x9d\x65\x37\x65\x5f\x29\x52\x4b\x48\xe5\xa2\x0d\xcd\xb2\x4a\x73\x75\xe0\x92\xc0\xd9\xbc\x71\x31\x62\x78\xb5\xd0\x1c\xa7\xc4\x43\x0d\x72\xf4\x98\x29\x45\x82\xb7\xff\xdc\x2c\xfc\x0c\x62\x0e\x04\xdd\x40\x65\xd0\xa8\xd0\xf2\x09\x5a\xb2\x22\xd1\x3f\x00\x13\x88\x91\xab\x80\x5e\xe7\x45\x2e\x6d\x83\xa5\x3c\x63\x9a\xdc\xde\x51\x95\x42\x25\xdc\x82\x1a\x8e\x89\xb8\x7b\xb5\x61\x8f\xa2\x39\x40\x1d\xfa\x18\xf9\x8e\x83\x82\x01\xe5\x35\x64\xe3\x33\x84\x96\x46\xe6\xd4\xf0\x04\xd4\x56\x3e\x89\xec\x92\x79\xc8\x5b\xd8\xa8\xda\x07\x74\x35\xd4\x7f\xbf\xc1\xbb\x1e\xc5\x88\xb9\x93\x84\xe7\x56\x26\xa0\x50\x80\x62\x12\x62\x8c\xbc\x11\x75\xd3\x4c\xad\xe0\xf3\x1d\x98\xb0\xa3\x56\xa8\x10\x5b\x75\x49\xc3\xf0\xc1\x46\x1a\x8c\x83\x2e\x48\xa7\xd7\x60\xd9\xc4\xf7\xb2\x58\x6d\x67\x1b\x21\x6b\xcf\x6e\xd0\x1d\xb3\xb2\x80\xde\x88\xb2\x7a\xb0\x6a\x4e\x58\x14\x56\x93\x94\xeb\x46\x65\xe7\xa3\x54\xc9\xa2\x70\xe6\x90\xfc\x78\x79\x4e\x70\x33\xa1\xe6\x4c\x47\xe5\x8b\xd1\x12\x3e\x65\x22\xd4\xdf\x76\xd9\x2e\xe0\xf4\x36\x3f\x02\x9e\x5d\x24\x4a\x7e\x76\x74\x96\x15\x33\x7a\x4c\x3e\xb9\x42\x3d\x01\x7f\x83\xdf\x5e\x2b\x89\x09\x0d\x2c\xde\xa2\xf9\x22\xea\xb4\x7c\x5e\x44\x9d\x17\x51\xe7\xdf\x5b\xd4\x09\x0e\x63\xbb\x8a\x39\x1f\x83\x97\x64\xa3\xac\xb7\xf7\x38\xa8\xdc\x28\x1f\xde\x6e\x11\xbe\xf5\xc0\x14\x70\x37\x6a\x83\xae\x13\xf7\xc0\x9c\xc3\x77\xe8\x7c\x51\x55\x78\x36\x91\x3f\x48\xe5\x8b\x62\xa5\x8d\xd2\xb0\x08\xf4\x8e\x09\x75\x86\x75\x2d\xb6\xf4\x04\xab\x8a\xf4\xc3\xb0\xfd\xca\xfd\xa3\x45\x6a\xf1\xf8\xd9\x09\xea\xe4\x1e\x61\x94\xf1\xf3\x8c\x3d\x40\x1a\x8b\xed\xee\xe3\x48\xee\xe9\xe7\x48\xee\xe3\xeb\x48\xf6\xe9\xef\x48\x82\xd7\xf4\x7d\x4e\xcc\x47\xef\xaf\xdd\x38\x33\x8e\x38\x6d\x3a\x33\xb5\x68\xfd\x30\x0e\xd7\xbe\x62\x9d\xbb\xed\x0b\x67\x00\xec\x65\xb1\xd7\xad\x3b\xad\xa0\xf8\xe0\x95\x1e\xfb\x12\x72\xe3\x46\xbc\xbe\x2a\xdf\x6c\x24\x5c\xff\xe7\x05\xa6\xd9\x81\x53\xd7\x77\xbe\x51\x5e\xb1\x78\x39\xc1\x2f\x27\xb8\x6d\xff\xa7\x3c\xc1\xe8\x57\xdc\xc5\xed\xbd\x2e\x57\xe3\x25\x1e\xf9\xa1\x64\x6a\x41\xe4\x9c\x45\xfe\x34\x90\x04\x58\xf3\xd4\x79\xa4\x38\x9b\x43\x7b\x59\xf6\x11\x79\x3e\x58\x34\x2e\xbf\x58\xc9\x08\x22\xc4\xee\x41\xcb\x9a\x43\xd5\x83\x80\x11\x5a\x1e\xe8\x9e\x78\x59\x2a\xa2\x07\x2e\x3b\x58\xf5\x06\xf4\xfd\xb3\xab\x8b\xdd\x14\x80\x6e\xf7\x3b\x64\x97\x3b\x9e\xa5\xc5\x9f\x6d\x58\x20\x02\x22\xfc\x52\xaf\x7f\x14\xb4\x74\x72\xcb\x16\x3d\x77\x25\xec\xf2\x9a\xfb\xc6\xe8\xd9\x50\x4f\xc6\xd9\x36\x09\xc4\x2a\x00\xed\x40\x15\x77\xd3\xaa\xf1\x69\x9f\xbe\xb1\xde\xcb\x03\xa1\x2b\xf1\xdd\x99\x6c\x77\x4a\xf3\x18\x3f\x35\x54\x70\xa9\x49\xc1\x71\x0e\x70\x02\x52\xda\x79\xa7\xe2\x80\x06\xe0\x48\x0d\xd4\xa2\xeb\x26\x92\xdd\x55\x43\x7c\x3c\x60\xef\xbd\xd4\x80\xa6\x35\xaf\xd8\x5b\xb6\x38\xd4\x2e\x1e\x4f\x0a\x3d\xe3\x85\xcf\xa2\x0e\x94\xc0\x61\x2e\xf9\x0c\x57\xe5\x7e\x08\x3c\xf3\x43\xd1\x23\x57\xd2\xd8\xff\x5d\x82\xd7\x0c\x1a\xf2\x24\xd3\x57\xd2\xc0\x9b\x47\x07\x16\x4e\xf7\xde\xa0\x72\x36\x3c\x0e\x16\x38\xf4\xee\x82\x58\x08\xef\x8d\x01\x20\x71\x17\x90\x01\xac\x5c\x93\xa1\x20\x52\x79\x98\x18\x9f\x76\x57\xbb\x21\xbc\xcd\x25\x32\x98\xae\x18\xc3\x81\x52\xaa\x1a\x24\x37\x0c\x17\x6c\xaf\xdc\xff\x02\x36\x19\x30\x56\x07\x17\x12\x48\x1e\x4b\x0d\x9b\xf2\x84\xe4\x4c\x4d\x21\xf2\x32\x99\xed\xbe\x41\xdd\xe9\x36\x3e\x3b\x51\xef\xf8\xc3\x9d\x31\x03\x58\xdd\x3b\x70\xe2\xb9\x2f\xc3\xc4\x51\x90\x45\xe4\xb4\xb0\x48\xf1\x0f\xcb\x09\x60\x5f\xfe\x05\xc9\x9e\xf5\x80\x9c\xf9\x0a\x9c\xf1\x6f\xce\xd0\x16\x0f\x63\x47\xb0\x72\xfc\x0f\x25\x9f\xd3\x8c\xa1\x6b\x1b\x15\x21\x2f\xa6\x9c\x2c\xb1\xe9\x9e\xcb\xf8\x6c\xa9\x54\xb8\x38\x39\xb8\x65\x8b\x83\xde\x12\x22\x1d\x0c\xc5\x41\x15\xfe\x5c\x43\x9d\xc0\xd0\xc0\xa6\x7e\x00\xbf\x1d\xec\x9b\xb3\x3f\x91\x38\xbf\x03\x96\x38\x23\xd0\x79\x46\xb5\xee\x16\x39\xba\x3e\xff\xd8\x28\x1a\xb3\x8a\xe0\x71\x0e\x8b\x09\x3a\x44\xed\xcf\x56\x05\x7e\xf4\xdd\x9d\x6b\x3a\x41\x69\xee\xca\x87\xb4\x4f\x7d\xd0\xa4\xaa\x61\x80\x10\x28\x71\x17\xc7\x9a\x55\x77\x92\x6b\xe0\xf5\x19\x6e\x3d\xe4\x24\xce\x97\xc8\x35\xa8\xb8\xdc\x87\x4e\x08\x69\x08\x17\x49\x56\xa6\x98\xe7\x11\xba\x82\x82\xdc\x55\xa4\xdf\x01\x38\xf7\x40\x9e\xcf\x61\x00\x2f\x8f\xf8\xdb\xcf\x25\x9f\xd5\xe6\x35\x15\x5c\x0d\x86\x1b\x1f\x84\xd5\xbe\xd7\x3a\xd9\xe2\x21\x58\x4f\x67\x79\x5e\x97\x31\xde\xf2\xb1\x62\xe4\x7c\x46\x85\x60\x59\x14\x2f\xea\x0c\x19\xa1\x84\x13\x08\x1e\xae\x70\xd3\x61\xbd\x72\x93\xa7\x63\x22\x44\x27\xef\xbd\x7a\xed\x8f\xbb\x90\xd2\xde\x2a\x61\xbb\xac\x86\x33\x79\x47\x52\x49\xee\x20\x97\xff\xdc\xb2\x23\xb8\x89\xd4\x9e\x91\x45\x33\x05\xdf\x80\x44\xe6\x85\x92\x39\xd7\xde\x03\xdc\x6d\xdc\x5e\x03\x2c\xb3\xb2\x45\xde\x9c\x75\x09\x57\xde\x9e\x13\x43\xd5\x94\x19\x3b\x0c\x11\x65\x3e\x66\xad\xc3\x3f\x1f\x22\x61\xd7\x73\xaf\x10\xb5\xdf\x22\x4f\x08\xfa\xef\xbe\xbb\xea\x5c\x0a\x76\xd5\x0e\xde\x49\x95\xa5\x77\x3c\xc5\x4b\x2f\x4d\x8e\xec\xc0\xc7\xcf\xbf\x6e\xeb\xdd\x1d\x4f\xef\x07\x00\xef\xd9\x63\x01\x40\x00\x02\xae\x72\x11\x87\x9c\xd2\xf0\x81\x63\x72\xc9\x31\x36\xc6\xfe\x85\x59\x5b\xf2\x31\x17\x55\x14\x56\xd8\x0c\xa0\xab\xf6\x3c\x78\x6d\x42\x33\x83\x51\x0d\x10\x18\x20\xcd\x8c\x68\x9e\x97\x99\xa1\x82\xc9\x52\x67\x8b\xd6\x68\xf1\x34\x40\x9e\x64\xec\x0b\x62\x71\x17\x7e\x15\x3a\xd5\xf9\xd6\x14\x63\xbf\x3c\xcc\x97\x18\x57\xe5\x2e\x94\x9e\x04\x26\x16\x82\x65\xd8\x17\x96\x38\xcf\xd6\x22\x2b\xa7\x7c\x8b\xf3\xfe\xbf\x59\x8a\xef\x2a\x89\x72\xa9\x59\x15\xd9\xde\xb6\x88\xc9\xd3\x65\xe4\x7e\x50\x66\x7d\xb3\x3a\xed\x76\xca\x0a\x26\x52\xc8\x08\x16\xe1\x2a\x4e\x77\xaf\xb0\x72\xd9\xb5\x76\xa7\x50\x97\x5f\x8c\xa2\x96\xdc\xe4\x10\x54\xe9\x92\x75\xf1\x09\xa1\xa2\x3d\xe9\x78\x1e\x59\x70\xc9\xbf\x1d\x8f\x7e\xf0\x22\xc9\xf7\xcb\xbd\x8e\x54\xd4\xa1\xbd\xae\x3b\xac\xae\xc8\x91\xee\xbe\x12\x7b\x96\xde\x37\x57\xba\x5e\x91\x1e\xba\x31\xab\x97\xe2\x91\x3f\x8a\xc4\xe9\x13\x88\x49\xed\x92\x4e\xe8\x2d\xf6\x68\x68\xb6\xee\x65\xb3\x18\xf1\x06\x4d\xd6\xe1\x6d\x44\xd2\x21\x77\xa7\x1b\xc8\xc5\xd5\x10\x6d\x61\x59\xb9\x70\x95\x42\x6c\x23\x56\x0f\x91\x0f\x9b\x1a\xaa\x99\x69\x67\xd5\x58\x76\x4b\xf3\x9c\x1e\x47\xc1\x04\xec\xe0\x10\xed\x03\x33\x49\xff\x77\x4e\x26\x10\xb5\x96\x56\x1a\xf0\x00\xf1\x19\x87\x58\xb8\xa6\xc5\x31\x52\xbb\x0d\x09\x35\xad\xab\xc5\xb4\xa2\xf7\x6e\x06\x9f\x3e\x75\x2e\x29\x6a\xbb\x34\x56\x3c\x08\xf9\x06\x4a\xc1\x7f\x28\x63\x49\x1d\x72\x33\x84\x35\xba\xf6\xfb\x5a\xc8\x34\x61\x95\x89\xe8\x82\xeb\xdb\x2e\x49\xb3\xbe\x39\xbf\xac\x77\xae\x23\xfc\x37\xe7\x97\xc4\xbd\x6d\x65\xc5\xe9\x62\xc6\xb9\x6f\x4e\xa7\x69\xc2\x2a\xd3\x68\xca\xf5\xed\xa3\x17\xec\x2e\xd2\xab\x6d\x7e\xc6\x8f\x6d\x65\xf2\x79\x45\xa2\xe4\x37\x0b\x59\x92\x3b\x17\x49\xef\x84\xda\x1b\x5e\x9c\x92\x4b\xa1\x4b\xc5\xaa\xdb\xcf\xa6\x7c\x6b\x39\xe9\x73\x2a\xec\x7d\x2f\xdc\x78\xce\x66\xae\x82\x2a\x03\x92\x6d\xe7\x3c\x62\x90\x2a\xdf\x75\xf6\x4b\xd8\xb2\xf5\xc3\x89\xf7\x41\xeb\xb9\x28\xe1\x90\x6c\xcb\x37\xb2\x9b\x1d\x25\xc6\x88\xb7\xf7\x6d\x48\x4d\x43\x4e\x52\x36\x3f\xd1\x29\x7d\xdd\x83\xcf\xf8\x50\x56\x53\x9b\x13\xd5\xe4\xe0\xf5\xc1\x80\x8c\x78\xce\x33\xaa\xb2\x45\x2d\x37\x70\xd5\xce\xb2\x00\x3f\x20\x5c\x66\xbd\x3a\x20\x47\x52\xc1\xc8\x09\x15\x24\x63\x3e\x4e\xc6\x1d\xa8\x05\x8a\x80\xc7\x8f\x4d\x45\xc8\x83\xda\x08\x91\xa0\x74\x45\x83\x4f\xc8\x6e\x6a\x69\x50\x2e\x2a\x8a\xcd\x85\x25\xe3\x03\xf2\x69\x55\xe9\x6b\x38\x1b\xbe\xc5\x53\x81\xf2\x41\x75\xb3\x7b\xd6\xcd\x5f\x52\xe8\x9e\x0e\x4c\xdb\xb5\xba\x29\x37\x1f\x59\x21\x3b\x09\x00\xd8\xa5\x61\x09\xe3\xc6\xbe\x90\x9a\x43\xbe\x4c\x6a\xa0\xfa\xac\x32\x3c\x29\x33\x6a\x65\x62\xb4\x83\x0d\xc8\xc5\xe5\xf5\xc7\xcb\xf3\xb3\x9b\xcb\x8b\x53\xe2\x47\xe2\xb1\xb4\x36\x20\x37\x71\x16\xa1\xc8\xe5\xd5\xa5\x6a\x09\xdf\xea\x39\xe2\x43\x45\x95\x86\x10\x72\x43\x50\x41\x86\x82\x9b\x2a\x4b\x2f\x3a\x69\x65\x52\x38\xb7\x2b\xdb\xdb\xd9\xe1\xa6\x1c\x5d\x27\x84\x1b\xcc\xfe\x5c\x1f\x0d\x4e\x07\x66\xfc\x0c\x53\xd9\xa2\xc5\x3d\x80\xe4\x50\x01\x77\x5f\xb2\xbb\x4f\xcc\xd9\xf1\x78\xdc\xa0\x81\xbd\xca\x8d\x8a\x14\x3f\xa4\x03\xf7\x59\x51\x56\x14\x4a\x26\x96\x97\x1c\x0e\x0e\xbd\xa0\x90\x2d\xa5\x7e\x0f\x83\xc6\x89\x9f\xea\xb8\x35\x20\xe4\x83\x77\x61\x86\xa8\xd5\xd5\x59\xe4\x31\x95\x40\x94\x8b\xbc\x81\xa1\xbe\x34\x40\x39\x8e\x3f\xea\x32\x45\x4d\xf9\x9c\x09\x5c\xd8\x7e\x09\x92\xff\x7c\x47\x98\x7f\xac\xe6\xfd\xe9\xe3\xbb\xfd\x4e\x09\xcf\x59\xc7\x09\x9d\xcb\x3c\xc7\xfc\x41\xb3\x10\x7d\x56\x05\x90\x85\xd3\xbe\x37\x85\x05\x33\x21\x4d\xb6\x20\x75\x83\x4e\xf9\x4e\x0d\x05\x25\xbc\x76\xde\xf8\xa2\x92\x53\xbb\xa7\xf9\x75\x49\xb7\xb4\x4f\xa9\xe1\x48\xf6\x49\x98\xf1\xc9\xc7\xcb\xb3\x8b\xf7\x97\x83\x3c\x7d\x74\x92\xc1\x44\x5a\x48\x2e\x8c\xde\xae\x96\x6c\x2b\x6a\xd2\x9e\xac\x84\x8f\x76\xe5\xba\x97\xbe\x63\xec\xe2\xe0\x47\x8b\x72\x95\xa5\xcc\x50\x9e\xe9\x68\x1f\x8d\x2c\x64\x26\xa7\xab\x73\xfe\x76\xd8\xa0\x9f\x61\xe6\x91\x3e\xed\xdb\x9d\xdf\xaf\xbc\xde\xa6\x54\x43\x1d\x1e\xbe\x34\x03\xe4\x18\x0c\x6b\x0d\x72\x30\x54\x54\x78\xa6\xcb\x7d\x10\xc1\x6b\x09\x06\xa8\x0d\xc2\x21\xf6\x69\xdc\xaa\xbc\x68\x51\x99\x94\xb6\x12\xd9\x43\x83\x6e\xbb\x30\x66\x69\xd0\xf6\x5a\x38\x75\x98\xfd\xc1\xf5\xa9\x13\xb9\x42\xb1\x7e\x48\xe4\x03\xd5\x3b\xa4\x8a\xb8\x6b\x4c\xf3\xbc\xe1\xc5\x9b\x69\xb0\x55\xb6\x68\x1a\x60\x2a\xd9\x27\x58\xad\x30\x0e\x3d\xcb\x16\x55\x6a\x40\xa7\x0a\xd3\x29\x26\xe8\x51\xce\x7e\x5b\x28\x3e\xe7\x19\x9b\x42\x12\x50\x2e\xa6\x51\x2d\x45\x1f\xb1\x0e\xc9\xe1\xd9\xd2\xbc\xec\x56\x69\x13\xa7\x7e\x06\xbc\xb8\xfa\x70\x03\x89\x65\xe1\x52\xf0\xde\x02\xb6\xfd\x20\x14\x1a\xe9\xf7\xfb\xa0\xf7\x1f\x7d\x6f\x65\xc5\x34\x3b\x26\xdf\x31\xf7\x1d\x09\xc9\x6f\x15\x54\x9b\x99\xc9\x90\x7d\x14\xe6\x5a\x41\x16\xd0\x11\x2f\xcd\x5d\xab\x13\xdb\xd2\x0a\x46\xc8\x6e\x6a\xed\xa1\xb8\x26\xa6\xf3\xc3\xfb\x9e\xc7\x97\x2b\xf7\x48\xfa\x77\xa6\x72\xde\x2a\xba\x0a\x3f\xc3\x8d\x4c\xe1\xe8\x21\x25\x7a\x91\x67\x5c\xdc\x56\x19\xa3\x26\xd2\xe2\x10\xfa\xe8\x73\x71\xeb\x31\x56\x31\x9a\xad\xa7\x94\xbb\xe0\xc7\x5e\xa9\xa4\xd9\xc1\x78\x77\xb3\x28\xf0\x2e\x3c\x1c\x7b\x77\xd5\x1b\x93\xb8\x83\x83\x67\xb7\x5e\xae\xbb\x55\x5a\x3f\x1c\x8e\xce\x47\xb5\x2a\xa1\x56\xa7\x83\x77\x8f\x69\x5c\x5e\xc7\x12\x60\x39\x4f\x28\xd9\xf1\x1f\xb6\xdd\xd4\xf6\x49\x56\x6e\x6f\x83\x6e\x3e\xd7\x52\x19\x9a\xed\x89\x08\x24\x33\x5a\x9c\x95\x66\x76\xc1\x75\x22\xe7\xac\xb3\xaa\x73\x37\xc3\xac\xbd\x3e\x61\x1c\xf7\x9b\x8e\xa3\x91\xf3\x3f\x9c\x5d\x13\x5a\xda\x5d\x34\x2e\xad\xe4\x5e\xaf\xb8\xfd\xfc\x47\xe8\x50\xbf\x97\xd9\xbb\xb1\x1e\x7c\xee\x2f\x17\x02\x7b\xbc\x10\x80\x33\xfe\x9c\x2f\x01\xb8\xe0\x86\x53\x23\x5b\xd6\xb2\xaa\xeb\xef\xa5\x36\x32\x77\xe8\x39\xf4\x03\xc1\xad\x2c\x30\xdc\xda\xd8\xf5\x1c\xfd\x20\x68\x03\x70\x86\xc2\x8a\xc5\x34\x61\x0d\x0f\xc0\x1e\x64\x6e\xc4\xb1\x79\x68\xf3\x5b\xe7\x99\x09\x29\x9f\xb2\xdf\x9d\xd6\x32\x69\x2f\x15\x42\xf0\x46\x85\x2a\xb9\xfe\x5e\x2d\x31\xfc\x87\xae\x27\xdb\x99\xbd\x70\x55\xff\x5b\xd2\x0c\xa1\x71\xb5\x6f\x1b\x51\x1d\xb2\x1d\x27\xe9\xf7\xd3\xc3\xfc\x2a\x68\xcd\xa5\xc6\x6c\x51\xd8\xc2\x28\x2a\xb4\xdd\x88\xba\x6e\x74\xe8\xae\x76\x0e\xc9\x91\x49\x8a\xd6\xe5\xda\x1f\xc8\x33\x1b\xa7\xea\xe0\xfe\x2e\x78\x64\xb7\x9d\xd5\x83\xdc\xb6\x00\xee\x76\x35\x6d\xd4\x16\x82\xcc\x96\xbc\xe3\xda\xf8\xb4\xf8\xf0\x82\x6b\x97\xd3\x15\x24\x9d\x6b\xab\x3a\xf1\xe2\xaf\x34\x4d\xd5\x29\x72\x12\x5f\x52\x57\x81\xbc\xe3\xf3\x2e\x51\x11\xee\xe3\x8e\xcc\xa2\x70\xa9\xd9\x6e\xce\xaf\x09\x56\xc5\xf8\xcd\xaf\xb0\x9c\xe7\x7f\xfe\xf2\x57\xaf\x5a\x6f\xe8\xd3\xb9\x3f\xef\x68\x39\xd8\xfb\x8d\xcd\xb3\xf0\x9a\x03\x71\x01\xfd\xe5\x80\x1e\xba\xb3\x8b\x78\x64\x37\x35\x50\xe9\xdd\x84\x8a\x17\x0f\xb3\x27\xf5\x30\x23\x21\xe8\x01\x69\xc2\xfd\xa9\x0a\x12\x94\xeb\xe7\x47\x50\xb6\xc2\x62\x3b\xd6\xd4\xb1\x05\xcf\xaf\xd5\xef\xa2\xdb\x27\xf0\xb9\xbe\xb8\x1a\xfd\xf5\xdd\xd9\x9b\xcb\x77\x30\x4b\xe7\x57\x65\xd1\x80\x8b\x9d\xfd\x88\xda\xa3\x55\x1b\x4d\x70\x3b\x30\xba\xdd\x73\x5c\xbd\x1d\x35\x14\x65\xfb\xa6\xe3\xe5\xc6\x7d\xa5\x65\x31\x69\xb5\xf6\xc7\x35\x5d\x41\xd9\x08\xa6\xf6\x17\xe2\xb0\xb3\x85\x2b\x4a\xc9\x54\x53\x86\xec\x4e\xe1\x0c\xef\xad\xaf\x6c\xdd\x01\xf2\x0c\x8c\xf8\x76\xbd\x08\x83\xbd\x9b\xef\x1f\x08\x56\x6d\x59\xbc\xea\x1e\xfb\x72\x38\x82\x5e\xfe\x92\xc7\x1e\x52\xf4\xc8\x51\x96\x5e\x5b\x4a\xcd\x74\x48\x72\xff\x4c\x31\xa5\x58\x95\x11\xb7\x0b\xf5\x5a\x99\x52\xb7\x56\x0f\xaa\x76\xb1\x51\x8b\x18\x58\x97\x43\xda\xdf\xed\x53\xa7\x5e\xea\x82\x26\x7b\xcd\xfc\x58\xbd\xc2\x37\x10\x52\xfd\xf8\x04\x10\x3e\xbb\x47\x87\xd2\x30\x5e\x57\x44\x3e\xf7\x1d\x9b\x81\x5c\x9d\x76\xc8\xd7\x53\x28\xa4\x0f\x92\x8b\x23\xbe\x9e\x78\xfb\xc8\xa3\x50\xcf\xef\x76\x54\x5d\xf6\xad\xb6\x14\x33\x69\xa4\xd8\xd9\x49\xfc\x7a\x45\xf7\xfa\x39\xc6\x16\xe7\x55\x91\x90\xa8\x42\x1f\x78\x18\x06\x83\xbe\x15\xe3\x3c\x97\x90\xc2\x9b\xf6\xeb\x86\xfd\x47\x97\x3c\xd2\xe1\xc5\x9e\xce\xdc\x8f\x29\xf8\xb0\xab\x09\x76\xaf\x2e\x14\x69\xe7\x88\x8b\xe1\x85\x93\xbb\x7c\x54\x85\x76\x68\x47\xd6\xe3\xdd\xde\xf8\xa2\x54\xe6\x4e\xaa\xee\xa1\xc6\xd7\xb5\x8e\x8d\x5b\x7d\xf7\xdb\x52\x34\xd1\x73\x3c\x23\x38\xc7\x27\x3e\x27\x23\xb8\x30\x6d\xe4\x8a\x6e\x9e\x8c\xe0\xc5\xfe\x00\x87\xe7\x69\x0f\xcd\x8e\x5c\xe8\x61\x43\x52\xf7\x2a\x78\x7b\x2c\xeb\xb8\xc2\xcf\xae\x9b\x33\x10\xd8\xbd\xa9\x88\x04\x0d\x87\xd0\x0d\xbf\x37\xa2\xa0\x24\xd6\xed\xeb\x40\x0f\x86\x86\xe5\x58\xe0\x97\x66\x99\x85\xa5\x14\x71\xda\x60\x17\x76\xda\x23\x98\x79\x37\xa7\x85\xaf\x96\x2c\xef\xc4\x1d\x55\x29\x39\xbb\x1e\xee\xe7\xe8\x77\x70\x2d\x46\xfc\x69\x97\x09\xaa\x5e\x56\x51\xa6\x8c\x8c\xb9\xd1\x55\xc1\x33\x66\x62\x6d\xd0\x92\xb7\x70\x47\x64\x0f\xa9\x3d\x90\xee\x7b\x11\xf7\x13\x44\x26\x86\x66\x8d\x02\xf4\xaf\x5e\xbd\x42\xe3\xd5\xab\x5f\xff\xfa\xd7\x58\x84\x26\x65\x09\xcf\x97\x1b\x42\xab\xff\x7a\xfd\x7a\x40\xfe\x78\xf6\xfe\x1d\x14\xc4\x2b\x8c\xc6\x74\x17\x38\x32\x96\xe4\x8e\x3a\xeb\x1e\xf9\x9f\xd1\x87\xab\xaa\x94\x46\xfd\x57\x57\xcd\xd8\x2d\x6f\x40\x2e\x22\x17\xa0\xd8\x3c\x45\xcd\xcc\xd5\x7e\x31\x84\x4e\x26\x58\xe6\x71\xec\xab\x8c\xe2\x91\xf2\x91\xcd\x50\x92\x19\x6b\x34\xd8\xed\xcf\xc0\x37\xc9\x2a\xd2\x68\xcc\xf3\xc1\xf5\xe8\x6a\x05\x63\x05\xfa\x07\x53\xe9\x61\x51\xef\x89\x86\x4a\x0d\x55\x2a\x38\xc5\xb4\x95\x29\x5d\xe9\x39\x1c\x2c\x4c\xdd\x4e\xe2\x29\xef\x60\x5a\x57\x10\xa8\x21\x96\x4f\x5c\x5b\x55\x07\xff\x1e\xaf\x15\xb7\x39\xc7\x3e\xd0\x9d\x48\x9d\xe7\x87\xd9\xe0\x5e\xb9\x90\xf5\x40\x2e\x08\xcd\x24\x54\x39\x0a\x5b\x5b\xf1\xa3\xa8\xca\xf8\xf6\xa5\x74\xce\xbc\xd7\x35\xfb\x2a\x52\xa1\xf7\xb4\x75\x8d\x93\xba\x49\x3b\x0a\xed\xa7\x63\x59\x1a\x7f\x05\x8c\x63\x62\x79\x3f\xac\x31\xdd\x21\x73\xe0\x0e\xc9\x06\x77\x49\x3a\xdb\x39\x6f\x65\x9d\xcc\xd7\x84\x80\x1e\x61\x34\x99\x91\x5b\xb6\xe8\x23\x61\x2a\x28\x44\xa3\x84\x2a\x52\x2e\xb7\x63\xfd\xbe\x24\x61\xa9\x95\x6c\x1d\xb0\xfc\x8d\x7a\x85\x45\x21\x9a\xc5\x8b\x8f\xda\x49\x3a\x2e\x67\xa4\x88\x14\x78\x9f\x98\x38\xaa\xc3\x1a\x92\x44\x62\x11\xe6\x7a\xd4\x85\x3d\x5f\x2c\xb5\xdd\xf4\xa6\x2f\x57\x6e\x04\x96\xd0\x39\x56\x55\x8a\xa5\xde\xae\xe8\xb0\x13\xdb\xe0\x83\xd4\xa7\xe2\x8d\x5c\x11\xa0\xb4\x99\x2b\x67\xe3\xda\x7a\x28\x05\x40\xd4\xa2\x42\x34\x33\xa5\x03\x0d\xd6\x4d\x2a\x45\xc6\xb4\x26\x1c\x56\x98\x53\x75\xcb\x7c\x52\x12\x9a\x0d\xc8\xb5\x9d\x64\xc8\x7c\x84\x39\x70\xe7\xe8\x46\x66\xcf\x68\x1c\xee\x62\x3f\x72\x38\x18\x1c\x22\x05\x5f\x11\xfc\xd2\x01\x33\x76\x4b\xa0\xba\x43\xe2\xd4\x46\x49\xe3\x42\x63\x1a\x58\x2b\xb5\x41\x9a\x63\x09\x51\x5c\x66\xe6\x39\x14\x6d\x9d\x7e\x67\x79\x39\x3b\x64\xfb\xdc\x35\x49\xf5\x2e\x29\xaa\x5b\x5d\x27\xd4\x9f\xdd\x53\x53\xef\x94\x98\x7a\xa9\xb6\xb2\xdb\x22\x77\xcc\xba\x67\xea\xbd\x47\x22\xe5\xbc\x53\x92\x4f\xff\xac\xcb\x09\x93\xb7\x91\xfa\x5c\xb5\xb2\x8c\xfd\xa8\xc4\xbc\xe1\x64\x55\xad\x2d\x1f\xee\x56\xc9\xc9\x81\x68\x5a\x08\x3c\xbd\x7c\xd7\xad\x3a\x07\xe9\x2c\xf0\x35\x9f\x2e\x02\x60\xf3\x69\x77\x29\xd7\x7c\x96\x4e\x53\xa0\xee\x45\xe4\x92\x0e\xa0\x34\x12\x32\x31\x9b\x70\xe4\x06\x50\xfe\xdd\xf1\x28\x6a\x65\x15\x2d\xb3\xd2\x84\xb0\x9c\x15\xac\x01\x06\xf5\x79\x9b\x31\x18\xd2\x37\x8b\x18\x05\xb0\x48\xa4\xbf\x5d\x79\x06\x3e\x3b\x1d\xe9\xae\x15\xc6\x7e\xb2\x8e\x1b\xf7\x80\xa1\x97\x19\x76\x86\xe3\xc8\x65\x43\xf0\x1e\xc4\x35\x19\x06\x9c\x37\x8c\x46\x01\xc9\x8b\x23\xae\x52\x4f\xe7\x95\xb5\x33\xac\xb8\x29\x3a\x2b\xc2\xd9\xf5\x70\x8f\x12\x7d\x34\xea\x4f\x5a\xa6\x07\xd3\x4d\xad\x6e\xca\x45\xb5\x72\x67\xe0\xb5\x14\xe6\xd9\x8b\x86\x4b\xd3\x7e\x6b\xe9\x62\x64\x56\x6d\x24\x65\x73\x25\xdc\x03\x05\x8d\x12\xb9\xf9\x0b\x3e\x38\xaf\xcf\x5d\x8c\x7c\x44\x91\x10\xe0\xd1\xa9\x00\xb4\x7f\x96\x4b\x90\xc1\x62\xc9\x08\x6a\x93\xa0\x8e\x17\x29\x8b\x85\x4c\x4f\x5d\xa9\x5c\x21\x24\x56\xfd\xd2\x3d\x2c\x6e\xa2\x7b\xa8\x04\x5a\x41\x21\xba\x96\x55\x91\x01\x7c\x67\xd1\x60\xa7\x32\x35\xf7\x29\x54\x63\x37\x10\x56\x7e\xdd\x75\x17\xc9\x3d\xeb\xce\x90\x88\x0b\xed\x56\xc9\xa2\x6e\xac\xc6\x91\x42\x1d\xeb\x64\xc6\x72\x8a\x49\xe1\xfc\xf2\x2c\x95\xb9\x53\xdc\x18\x86\x59\x7d\x98\xca\x35\x91\x93\x5e\xad\x42\xdc\xc1\xfc\xf5\xc1\x2e\xf5\x3c\xee\x59\x72\x85\x54\xbb\xb0\x07\x60\x5c\xd7\xa4\x33\x8b\xd7\xa0\x2e\x64\x90\xc9\x51\x34\x8c\x0c\x96\xc1\xcc\x11\x7a\x8f\xbe\xf0\xa7\x54\x91\x7a\x41\x48\x78\x51\x91\x5e\x54\xa4\xbd\xa8\x48\x11\x63\xf1\x04\xc7\x01\x2a\x56\x9b\xe2\x8c\x52\x5e\x77\xaa\xa2\x7a\xa2\x2c\x31\x16\x35\xbd\xd6\x24\x55\xdd\x8a\x66\x55\x9f\x43\xaf\x4b\x39\x3c\x2e\xcd\xa4\xff\x1b\xc2\x44\x22\x53\xdc\x7c\x3b\xbe\xd2\x06\x44\x9b\x4a\xfd\x88\xe7\x92\xfb\x6f\xc5\x96\x38\x18\x7b\xd7\xad\xdb\x89\x0e\xf8\xbb\xba\xb7\x7b\x62\xf0\x15\x5b\x0f\x41\xb0\x6e\xf9\x21\x46\xde\xf1\xf7\xea\x96\x10\x6b\x01\x03\x72\xfb\x32\xa7\xe4\x08\x5f\x0e\x92\xa2\xec\xb9\x06\x83\x9c\xe5\x52\x2d\x7a\xa1\x91\xfd\xb1\xd6\xcb\xb5\x38\x06\x99\x20\x29\x95\x55\xf6\xb2\xc5\x8f\x55\x3a\xf0\x00\x7a\x64\xe1\x20\xec\x53\xb7\x6a\x30\xf1\xd3\x70\xbf\x0b\x89\xae\x40\x95\xaf\xaa\xe3\x4c\x42\xf2\x3d\xdd\x0b\x2a\x2a\xbc\x65\x62\x4e\xe6\x54\x75\x28\x5d\x1d\x3f\xf7\x94\x07\x52\x3e\xe7\x7a\xb7\x82\x75\x2b\xb5\x66\xee\xd2\x7a\xc9\xd2\x14\xa5\x71\x94\xd2\x9f\x0a\x1f\xea\x1d\x4e\x43\x43\x28\x7a\x7d\xb0\xd3\x34\x7e\x34\x45\x61\xf1\xd9\xb1\x34\x2c\x3e\xf7\x2d\x10\x5b\x1f\x65\x67\xb4\xd9\x6b\xb9\x67\xff\x78\xb4\xd8\xc7\x39\xac\x58\x64\x95\x9f\xc0\x0b\xa7\x8f\x74\xd0\xd0\x1f\x64\x8f\xb6\x1a\x97\x08\xfd\xa7\x6c\xa6\xd9\xd3\xd5\xab\x8b\xd4\xfb\x37\xbf\x77\x1d\xb9\x9c\xf8\x2f\x97\xae\xad\x90\xef\xe5\xd2\xf5\xe5\xd2\xb5\xed\xf3\x72\xe9\xfa\x62\x51\xa8\x3f\x3f\x6a\x8b\xc2\xcb\xa5\xeb\xcb\xa5\xeb\xfd\x60\xf8\x20\x97\xae\x4e\x8c\xab\x6e\x5c\x1f\xf5\xc2\xd5\x95\x75\x39\x4b\x12\x59\x0a\x73\x23\x6f\x59\xeb\x1b\x84\x56\xc2\xfc\xd2\xe8\x8f\x27\xd9\x77\x17\x2c\x3a\x89\x07\xbb\x08\x06\xb4\x4c\xb9\x15\xde\x77\x46\xa0\x33\x37\x80\x97\xd3\x2d\x29\x16\x29\x4b\xc3\xc8\xfe\x90\x1a\x0b\xeb\x01\x39\x23\x8a\x25\xbc\xe0\xae\x7a\x37\xc5\xf7\x88\x61\x21\xcb\x3e\x37\x9a\x65\x13\x97\xed\x5c\xc4\x45\x61\x2a\x11\xdc\x51\xb8\x95\x9f\x41\x9e\x23\x7d\x92\x6c\x5f\x21\x47\xb1\xef\x3d\xb3\x72\xb3\xb9\x89\x47\x88\x8d\x22\xb0\x94\x5a\x2d\x1a\xf8\x58\xc1\x5d\x04\xf2\x43\x1f\x6c\xf6\xa5\xe0\x0a\x90\x77\xc4\x12\x29\xda\x54\xc4\x5c\xb3\x41\x97\xcd\x91\xfc\x4e\x39\x8b\x26\x16\xc0\x0f\x75\x2f\xe7\x34\xe3\x29\x37\x8b\x70\xd7\xe6\xaa\x2c\x51\x3c\x31\x61\x1b\x75\x05\x46\x42\x8b\x42\x49\x9a\xcc\x98\x8e\xe6\x8d\x22\x87\x0b\xc4\x0a\x5e\xe7\x58\x09\x0c\xa4\x0e\xe8\x63\x59\x5f\xb6\x20\x4a\x1a\x7f\x5d\xbe\xe6\x83\x37\xd1\x60\xd0\x1d\xf9\x97\x51\x0b\xb8\x53\x97\xf1\x10\x38\x2b\x3e\x89\xff\xd0\x44\x66\xa9\xcf\xef\xf1\x9b\x57\x56\xcc\x4b\x1c\x0e\x5a\x2a\x07\x19\x20\x8c\x24\x99\x65\xc5\x96\xf2\xad\xef\xfc\xcb\xaf\xc9\x4c\x96\x4a\x0f\xe2\x20\xa1\xd7\xf0\x0e\x55\x34\x2f\x26\x1a\x92\x31\xaa\x0d\x79\xfd\x8a\xe4\x5c\x94\x96\x03\x75\x46\x9b\xee\x92\x4d\x24\xd3\xfc\xea\xeb\xd6\xfd\xba\x4a\x33\xcb\x37\x92\x0e\xab\x0a\xcc\xc4\xeb\x84\x1a\x77\x92\x30\xb8\x0c\xf3\x58\x37\x44\x1c\x47\x74\x63\x68\x0b\x23\x1f\xe0\x7c\xfd\x50\xca\xf1\xc2\x74\x09\x44\xfc\x5f\xec\x51\x8f\x40\xf4\x2f\xdb\x64\x17\xa9\x92\x8b\x6c\xfc\xe8\x83\xd4\x4a\x98\x72\x6d\xb6\x54\x4a\xa8\x62\x14\x37\x36\x6b\xcf\x56\xa6\x56\xde\xef\x18\x96\x02\x3a\x82\x97\x75\xbd\x79\x28\x49\x18\xd6\x34\xbc\xa8\x2a\xed\x08\x89\xe3\x6f\x1d\xfe\x89\x93\x6d\x79\x04\xd9\x43\x8e\xee\x96\x4b\x6d\x27\x5d\x79\x94\xe8\xbc\x56\xec\x56\x3f\x05\x9a\x8b\x29\xa6\xd4\xce\xcb\xcc\xf0\x22\xab\xd6\x1d\x3a\x38\x42\x1e\x9b\xcd\x68\x64\xe9\xa1\x18\x9c\x8b\xa9\x98\xc0\xc4\x78\x14\xc6\x62\xc2\x60\x66\x68\x65\xf9\x41\x41\x15\x0d\xc0\x83\xba\xa9\xfa\xd8\x59\xe0\x28\xdc\x03\x22\xe5\xb1\xe4\x5c\xd1\x2c\x2c\x34\xbe\xfb\xd9\x27\xd2\x18\x26\xa8\x68\x61\x60\xae\xab\x7a\xd0\x89\xc8\xbb\xe0\x02\x86\x15\x36\x1a\xd8\xe2\x84\x9a\x37\x34\xb9\x65\x22\xc5\xf2\x43\xb0\xec\x74\x21\x68\xee\x52\x51\x45\x35\x95\x1b\xfd\x75\xcf\x99\x1a\x30\x52\xce\x87\xea\x22\xd7\xdd\x27\x0c\x4a\xdd\x39\xd7\xcb\x27\x8d\xb5\x8c\x37\x9d\x73\x8d\x46\x18\xc5\xe7\x09\xf3\xfc\xdf\x7e\x6a\x9f\x53\x9f\xb7\x88\x47\x5f\x9a\xbc\x73\x55\xe4\x11\xfe\x02\xb9\x0f\xc6\x6f\xc8\x3a\x45\x33\x7b\xb4\x17\x21\x3c\xb3\xb1\xb9\xe3\xc5\x7e\x0b\xaa\xa8\x71\x97\x30\xda\xc3\x8f\x6f\x2e\xea\x87\xf8\x23\x4d\xa5\x26\x6f\x32\x99\xdc\x92\x0b\x06\x42\xd7\x43\x16\x04\x51\xe3\xf4\x29\x13\x46\xe7\x74\xba\xed\x76\xac\x4f\x72\x29\xb8\x91\x6a\x33\xbd\x78\xa9\x4f\xf8\x24\xe9\x88\xd5\x38\x7d\xd6\xc9\x88\x2d\x82\xed\x52\x8d\x50\xc1\x31\x84\xee\x3e\x97\xdf\x8e\x87\xea\x67\x33\x79\xd7\x37\xb2\x5f\x6a\xd6\xe7\x2d\xee\x5b\x3b\xac\xee\x96\x2d\xe0\x92\xb9\xe3\xfa\xbe\xc5\x6e\x35\xe5\xc0\x48\xb0\x29\xc1\x7b\xcb\xa2\x3f\xbe\xb9\xb0\xbc\x61\x10\x0b\x7b\x27\xcc\x24\x27\x09\x2b\x66\x27\xee\xc3\xcf\x12\x28\x9e\x5a\x74\x85\xca\x19\x49\x64\x96\xb9\x78\x67\x39\x21\xe7\xac\x98\x85\xc1\x1e\x7b\xa5\x4f\x97\xea\xb6\x90\xb2\x6b\xca\xcf\xe8\xc0\xd8\xde\xee\xbc\x44\x88\xa3\xc6\xdd\xea\x18\x3c\x16\xaa\x3c\xeb\x4a\x8c\x0f\x08\x9c\x07\xae\xaa\x5f\xab\xa5\x1f\xbb\x5e\xd6\xd3\x01\x7b\x1f\x8e\x1a\xb9\x19\x4e\x50\x92\x4e\x59\x4a\xe4\x9c\x29\xc5\x53\xa6\x49\xa0\x37\xb1\xea\xc9\xb3\xc7\x86\xdb\x4b\x66\xe2\x27\xcf\x4c\xbc\x83\x8e\x13\x91\x27\xdb\x7b\x99\x3c\xd1\x34\xe7\xe2\xd9\x11\x28\x9d\xd0\x8c\x0d\x3f\x74\x50\x26\x46\xd8\xa3\xae\x4f\xf8\x97\x51\x42\xb1\x2d\x69\xba\xbe\x0d\xf8\x42\x84\x4c\xb7\xd9\x47\x1f\x40\x2b\x98\x52\xc3\xee\xb6\xb2\xbf\x7e\x45\xa0\xb6\xb7\x04\xb9\xf3\x29\xf5\x87\x27\x4a\x8d\x17\x61\x39\xe6\xfd\xda\x27\xfb\x74\xfb\xd4\xd5\xe8\xe2\x17\xd2\xc8\x24\xeb\x11\xf5\xec\x7a\x48\xbe\xc1\x91\xf7\x9b\xa9\x4f\x49\x83\xd2\xdd\x85\xcc\x29\xef\x5c\x68\x63\x56\x2f\x4c\xed\xa7\x7b\x1d\x86\x25\x38\x6e\x5c\x23\x64\xc2\xa7\xa5\xd5\xc0\x9c\xd6\xf4\x92\x44\xed\x51\x04\x90\x4a\xfe\x88\x2c\x41\xde\xe3\xb0\x92\x39\xfc\x0e\x02\x53\x08\x57\x93\x44\x33\xa1\x39\xdc\x93\x44\x97\xd5\xae\xdc\x1b\xd6\x17\x44\xf7\x42\x14\x52\x7a\xe4\x9d\x9c\x72\xe1\x4f\xa5\x74\xd7\x68\x13\xca\xb3\xb6\xc0\x78\x91\x2a\x9e\x5c\xaa\xd0\x3a\xbb\x14\x74\x9c\xb5\xf1\x02\xa8\x93\xf5\x8c\xc2\x3d\x27\x83\xde\x27\x29\xd7\xf6\xff\x64\x34\x7a\x07\x36\xf1\x52\x78\x59\x17\xec\xc5\x8e\xac\x05\x4f\x7f\x3c\x80\xfb\x3d\x33\x48\x69\x76\xc8\x71\x37\x14\xa9\x9d\x2c\xd3\x35\xb7\x13\x37\x1e\x66\xfa\x0b\x9e\xb3\x78\x73\x3f\x66\xe4\x66\xc6\x93\xdb\xeb\xc8\xf4\x2d\x95\x7d\x27\xa2\x57\x35\x26\xd4\xfc\x6d\x9f\x04\xd1\x4d\xf5\xba\xbb\x02\x7b\x13\xd1\xf3\x91\x5b\xb0\x1d\x86\x50\xad\x65\xc2\xab\x7b\x0e\x30\x97\x54\x04\x3f\x05\x82\xbf\xdf\x45\x00\x4f\xbf\x27\x6f\xf2\x9b\xe6\xab\x9e\xea\x98\x17\x71\xe1\xd7\xba\xd7\x89\x23\x6a\xec\x90\xa5\xfb\xa6\x96\x97\xdb\xcb\xa6\x0d\xa3\xbd\xf7\xe2\x76\x9b\xe4\xa5\x24\x5f\x65\x71\x69\x9b\x42\x7e\x6e\x97\x97\x6f\x6f\x4b\x6d\x13\xc8\xb0\x4a\x1b\x6e\xdc\xd4\xe1\x3b\x67\xc6\x87\xc3\x54\xc8\xa2\xcc\xd0\x57\xe2\xfe\xc9\xc5\xbd\x75\x16\xbf\xb3\x27\xb3\xfe\x63\x24\xda\xec\xea\x08\xfc\xd3\xc8\xb9\x19\x89\x64\xaf\x7e\xf5\xf5\xd7\x3f\xf6\x2c\x9c\x6d\x55\xe0\x87\x48\xc3\xd9\xd2\x24\xfa\x12\x69\xf3\x12\x69\x13\xa3\xe2\x43\xa6\x51\xdd\x73\x2c\x4d\x47\x17\xd7\x6e\xee\xad\xed\xa3\x65\x5a\x3b\xc1\x76\x75\x80\xed\x10\x0f\xb3\xa7\x28\x98\xce\xbe\xa0\x5d\x22\x5e\x5e\xe2\x5c\x7e\x6a\x71\x2e\xbb\xf8\x80\x76\x8f\x69\xe9\xe2\xfb\xf9\x53\x8a\x5f\xe9\x70\x18\xdb\xc7\x59\x74\x8f\xae\xe8\x9e\xcf\xae\xbb\x65\x6b\x97\x92\x46\xb1\x7d\xc6\x69\x11\x55\x05\x41\x5f\x78\x10\xf3\x63\x19\x69\x0f\xd6\xa3\xe8\x10\xa4\x83\x02\x85\xc3\xcb\x2e\xb5\x04\x9d\x4e\xfe\x61\xd4\xb8\xda\x08\xaf\x9f\xe6\x46\xe3\xa7\x79\x65\xf0\x52\x18\xe4\x79\xdb\xb4\x75\x2d\xb7\x88\xb7\x24\xc0\x59\x07\x46\x2c\xc7\x71\x4e\xc3\xea\x8c\x9c\x5d\x0f\xad\xba\x0c\xe1\x33\x34\xd3\x03\xb2\x82\x4f\x7b\xbb\xa4\xe3\xeb\x9e\x3f\x53\x63\x58\x5e\x98\xf6\x9b\xfd\x62\xd2\x7e\x72\x93\xf6\xce\xf6\xb8\xcf\xa1\x63\xa8\x00\x59\xe6\x54\xf4\xed\x89\x02\xe3\x76\xed\x16\xac\x41\x82\x07\xc4\x7b\xe5\x22\x2c\xa8\x62\x98\xf4\xa9\x5e\xf1\x96\x46\xf5\x0f\x1f\xc6\x08\x09\x63\xef\xbc\x72\x64\xa0\x8d\x93\x96\xc8\x25\xb7\x4f\xb7\x9c\x00\x05\x7f\xa8\x22\x2e\x5c\xd3\x9b\xcd\x8c\x21\xb3\xbe\x86\x40\x94\xaa\x55\x5d\x12\x46\x51\x98\x66\x99\xbc\xc3\x6f\xc7\x0c\xcc\x42\xdf\xce\xc5\x45\x58\x8d\x19\xc9\xb9\x55\xaa\x9d\xf1\x33\x9e\x0e\x5e\x45\x5a\x89\x9a\x29\x14\x58\x95\xbb\xcd\x1a\x31\x13\x6f\xb4\x55\x48\x05\x3a\x42\xdb\x7f\x7b\xc7\x1b\xcc\x8a\xeb\x68\xc2\x98\xcd\xe8\x9c\xcb\x52\x61\x6f\x23\xc9\x81\xfb\x09\x58\xc2\x42\x96\xc1\x34\x85\x55\x12\xc3\xea\xf4\x0a\x38\x5d\x55\x3f\x82\x28\x9f\x4a\x6f\x4b\xe8\xb3\x2f\x5c\x9b\xe5\xb5\x78\x10\xf9\xa4\x6d\xfb\xc2\x9b\xb9\x2e\x2c\x5b\xe8\x5c\x11\xed\x73\xdc\xaf\x2e\x98\xcc\x47\xf0\xd3\x8f\xa8\x1e\xda\xd6\x5c\xa4\x2f\xb2\xce\xbe\x65\x9d\x70\x5d\x95\xf1\x64\xd1\xb9\x52\x58\x75\x4d\x65\xbb\x93\x37\x54\xb3\x94\xbc\xa7\x82\x4e\x51\x2d\x3b\x1a\x5d\xbf\x79\x7f\x6c\xb7\x0d\xd4\xbe\xe1\xc5\xca\xbb\xac\x51\x3c\x87\xab\x7d\x86\x41\x2c\xad\x70\x07\x4e\xd4\x71\x8d\x7b\x0d\xe3\x20\x81\x9b\xb4\x4b\x10\xbb\x1c\x7a\xd9\xac\xf1\xd8\x20\x0a\xf3\x3c\xbd\x67\x55\x47\x2e\xb4\xa1\x59\x76\x9d\x51\x71\x56\x14\x4a\xce\x57\x6b\xc2\xf5\xc0\x70\xd7\xd0\xb3\x76\xf4\x7d\xf0\x2f\x0b\x04\x34\xdc\xf5\x0a\x32\xac\xc6\x1f\x90\xa1\x09\x0a\xb1\x14\xc0\x06\x0f\xce\x4a\x23\x73\x6a\x78\x72\x60\xf5\xe6\x83\xf7\x54\x94\x34\x5b\xe9\x61\xb4\x71\x19\xeb\xc4\xba\x8d\x9d\xd6\x27\x47\x6b\xd1\x6d\xa3\x7c\xb0\xb9\xbf\xa1\xca\xd2\x96\xf3\xd1\xe7\x4e\x7d\xb5\xa1\xa6\x5c\xa2\x9c\x1b\xa8\xf9\x7a\xfa\xdd\x27\x19\xd5\xe6\x53\x91\xda\x93\xdc\xf8\x75\x13\x91\x4e\xa8\xa1\x99\x9c\xfe\x81\xd1\x6c\x35\x3e\xd7\xf0\xe4\x3c\x6e\xed\x8d\x3f\x88\x32\xa3\x72\x1c\x1a\x1e\x6a\x62\x85\x62\x1f\xaf\xad\x58\xc6\xe6\x54\x18\xdf\x1d\x2b\x65\xeb\x43\xb7\x7e\xc0\x22\x5e\x19\x3c\x53\x66\x98\xca\xb9\xa8\x8f\x39\x82\xb6\xe7\x52\xa4\x1c\x4d\x7d\x60\xcc\xc2\x1e\xf5\x71\xd7\xa3\xda\x3a\x73\xfe\x06\x03\x7e\x9d\xf2\x44\xf3\xa9\x83\x02\x9b\x8d\x9d\x4c\x38\xc3\x97\x70\x73\x5d\x9b\xdb\x12\xa4\xc8\xad\xb0\xc2\x1c\xe4\xbc\x58\x4d\xa4\xb6\xf2\xf6\x6d\x3c\xbd\xef\xf7\x18\xa7\xb0\xde\x2f\xb2\xef\xe6\xbd\xce\xd0\xbf\x09\xc5\xf0\xd9\x2e\x0d\x34\xa7\xb2\x9e\x82\xae\xc2\xbb\xd0\x0d\x83\xfb\x1a\xd5\xd5\x6b\x8d\xd6\x53\xfc\x56\xc2\x52\x3b\xb9\xa6\x6d\xde\xf4\x3a\xad\xad\xb2\x7c\x2f\xa9\x9f\x2d\xa4\xbc\xad\x2c\xaa\x65\xfa\xf2\xba\x32\x3c\x74\x4e\x71\xca\xa9\x0f\x94\x14\x9c\x61\xa2\x0e\x2a\x1c\xb0\x80\xb3\x30\x9a\xba\x97\x96\x83\x59\x35\x0e\x7e\xeb\xb9\xbb\x66\x34\xec\x3a\xdf\x05\x6f\x1c\xa6\x98\xa8\x02\x2e\x0b\x4e\xbe\x91\xee\xa2\xd4\x05\x94\x5a\x1a\x00\x7c\xbb\x47\x74\x99\xcc\x08\xd5\x76\x6a\x16\xa1\xed\x89\x67\x83\x9c\x0a\x3e\x61\xda\x0c\x42\x1e\x5a\xfd\xa7\x5f\xfe\x65\x40\xde\x4a\x45\x9c\x1f\x76\xcf\x67\x80\x70\xf3\xac\xf0\x82\x6b\x5c\x4c\xe8\x5b\x69\x9a\x85\x4c\xdd\xa4\xef\x60\xb2\x86\xde\x5a\x1e\x86\x93\x2d\x19\x5c\x17\x9c\x92\x03\x2b\xe4\x45\x9f\xfe\x87\x65\x4b\xff\x3a\x20\x47\x77\xc0\xb4\x0f\xec\x9f\x07\xf8\xc1\xe0\x4b\x18\x2b\xc2\xd5\x87\x31\xcc\x4f\xf1\xe9\x94\x29\x54\xf9\x08\x84\xc3\x1d\xbb\x0c\x16\x42\x46\x8d\xfd\xcd\x6f\xa5\x22\x36\x27\xf2\xa7\x5f\xfe\xe5\x80\x1c\xd5\xd7\x45\xb8\x48\xd9\x17\xf2\x4b\x34\xfd\x72\x6d\xd7\x78\xec\x2e\x50\xf4\x42\x18\xfa\xc5\x8e\x99\xcc\xa4\x66\x02\xd5\x6f\x23\xc9\x8c\xce\x19\xd1\xd2\x6a\xad\x2c\xcb\xfa\xce\xac\x4d\xee\x28\x64\x15\xf1\xa0\x84\x20\x70\x52\x50\x65\x6a\x28\x31\x70\x56\x0d\xf8\x9a\xdd\xb6\xa9\xf0\xd7\xbf\x13\x2e\xdc\x9d\x91\xbb\xad\xb2\x7b\x0e\x21\x8d\xb8\x49\x46\x92\x64\x46\xc5\x34\xc4\x51\x4f\x4a\x53\x2a\xb6\xe5\xba\xa5\xe5\x19\xb8\xe5\xa2\x53\xb8\xed\xb7\x5c\x34\x6f\xee\x57\xdb\x82\xa6\xdc\x78\xa7\x7f\xe7\xc8\x67\x16\x27\x76\x17\x14\x1f\x97\x46\x2a\x7d\x92\xb2\x39\xcb\x4e\x34\x9f\xf6\xa9\x4a\x66\xdc\xb0\xc4\x2e\xeb\x84\x16\xbc\x9f\x48\x61\x77\x1c\x32\x08\xe4\xe9\xcf\xa0\x08\x66\xdf\x4e\x75\x4b\x5e\xe3\x96\x8b\xde\x6e\x08\x7b\x52\x03\xd8\xde\xd6\xd8\xc2\x86\xb3\xbc\x50\xb4\xa7\x3c\xc2\x6a\xc1\x78\x71\xb2\x97\xc5\xfa\xb4\xbc\xdd\x79\xcc\xa1\xcb\x34\x9d\x34\xc7\xb0\xc7\x0e\xbd\x34\xe0\x54\xd6\x28\x65\x4e\x53\x24\xa5\x54\x2c\x1e\x1c\xf9\x2d\x48\x21\x21\x7b\xb2\xe8\x27\x58\xdf\xbe\x4f\x45\x6a\xff\x8d\xf1\x28\xc9\x62\x2f\x30\x2c\x79\x27\x42\xf0\x69\x78\xf1\x38\x47\xa2\xe4\x7b\x38\xf5\x4e\x5e\x6b\x29\x44\xa1\xa8\x0a\x2e\x3b\x46\x95\xcc\x33\xcd\xba\x80\xca\xb5\x1f\xf5\xbf\xdd\x9d\x49\xc8\xcc\xb5\x4d\xa4\xda\x7c\xd3\x11\xc9\x8e\x2d\xe7\xfb\xae\xea\xd1\xac\x89\x6f\x07\x73\x69\xa0\x7c\xf4\x7c\x6d\x19\x5e\x41\x01\x06\xb3\xfe\x8e\xb6\x15\x0e\xf9\x3b\x7a\x3b\x91\xfe\xca\xfc\x40\x49\x50\x4a\xb6\x2b\x50\x95\xfe\x52\xab\xb4\x85\x8b\x32\x4c\x1b\x42\xe7\x94\x67\x60\x51\x97\x63\xcd\xd4\x1c\x4b\x1e\xb9\xb4\x78\xb4\xa9\x67\xb9\xaa\x06\x28\x46\x3d\x92\xe6\xe3\xd7\xb0\xbc\x2b\x9b\x16\x00\xda\x50\x63\xf6\x6b\x67\xbd\x17\xbd\x07\xd5\xcb\xb5\x3f\xdb\x2f\xec\xa8\xc6\x58\xfc\xfb\x03\xa3\xca\x8c\x19\x35\x37\x7c\x13\xdf\x5d\x42\xe9\x5a\x3f\x6f\x70\xa9\x10\xfa\x8e\x91\xa9\x34\x56\xc4\x2a\x01\xf7\x51\x26\xc5\x04\x34\x01\xd1\x1e\x1a\xa3\xab\x55\xde\x28\x0a\x71\x2f\x52\x74\x5c\x66\xbd\xe3\xf2\x3a\x9d\x74\xec\x30\xc9\x60\x6b\x4c\x01\x21\x05\x73\x7b\x87\x37\x10\x40\x81\x1e\x67\xc9\x39\xd3\x7a\x63\x6a\x88\xba\x0b\x1f\xb6\xc6\xa3\xdc\xb8\x0e\xcb\xfd\x6f\x18\x3f\x61\x05\xe8\x94\x19\xca\x33\x7f\x94\x11\x14\x01\x4a\xdb\xa8\xeb\xc6\x05\x2a\x46\xf5\x26\x01\xa1\x99\x11\x4b\x4b\x81\x93\x96\x82\xf5\xef\xa4\x4a\xc9\x39\xcd\x59\x76\x4e\x35\x73\x63\xc5\xe1\x6a\xb8\x47\x87\x7a\xaf\x53\x5e\x6d\xfb\x5a\x33\x65\x34\xfe\x78\x24\x72\xb8\x51\xa9\x58\x38\xc1\x9e\x37\x41\xde\xa8\x92\xf5\xc8\x5b\xcb\xbd\x7a\xe4\x93\xb8\x15\xf2\xee\x7e\x73\x35\x1b\x6f\x2e\xea\x6e\x56\x2e\x73\x0b\xa4\xc8\x73\x09\x61\x6a\x06\x9f\x30\xdd\x1d\x67\xe4\x08\xfe\x1a\x53\x63\x9d\xd9\x84\xa6\x7e\x46\xf6\x9f\x4b\x26\x28\xab\x28\x2a\x39\x55\x4c\x63\xce\x95\x95\x09\xfd\xda\x9a\x9c\xbf\x61\xc2\x45\xbc\x6d\x9d\xde\x70\x55\x2f\x3f\x53\xcf\xd7\xa6\xd5\x2f\x6e\xbf\xdd\xc7\x8a\x6c\xa5\xa8\xb1\xd9\x0b\x2f\x9a\xe8\x1a\xe3\xd3\xba\x19\xae\x36\x3a\x45\x5c\x2f\x6a\x8b\x42\xc9\x26\xeb\xa8\x5f\xdd\xf9\xe8\xf3\x7a\x60\xaf\xe5\x7d\xdb\xf8\xd3\x76\xb3\xd4\x7d\x0d\x52\x5b\xcf\xcc\x56\x23\xd4\x8b\xf9\xe9\xc5\xfc\xf4\x63\x32\x3f\x6d\xc5\xf8\x4d\x26\xa7\x1f\x87\xb1\x69\xeb\x12\x37\x19\x98\x9e\xa5\x69\xa9\xd5\x8a\x36\x9a\x93\x9e\xad\x21\x69\xeb\xd2\x5a\x1a\x8f\xfe\x7d\xcc\x46\x5b\x21\xb6\xc1\x54\xf4\x0c\x8d\x44\x6d\x04\x32\x96\xb6\x11\x13\x87\x51\xe3\x58\x50\xac\x0a\x26\x86\xe1\xbc\x4b\x4d\x2c\xce\xec\x2a\x2d\x5a\x01\x6e\xeb\xdc\x0e\xdd\xe4\xda\xcb\x5e\x4e\x60\x74\xe5\x04\x97\x26\x4b\x2e\x2e\xaf\x3f\x5e\x9e\x9f\xdd\x5c\x5e\x34\xe5\xbb\x55\x90\xde\x22\x89\x6d\xb6\x41\xf4\x23\x49\x6c\x4d\x03\x4b\x90\xd7\xfc\x64\x71\x60\xcd\x4f\x65\xc9\x57\xf5\xba\xbf\x5c\x78\x2f\x2e\x77\x2f\xfe\xb1\xfd\x74\xb6\x3d\x9e\xf6\x74\x02\xb6\xa0\xc7\x98\x95\x7b\x66\x32\x4b\xb5\xf7\x35\x1d\x5e\x84\xe8\x25\x2e\x92\xac\x4c\xad\x70\xf1\xe9\xd3\xf0\x42\x0f\x08\x79\xc3\x12\x5a\x6a\xb0\xc2\xa4\x52\x1c\x1a\xf2\xe1\xea\xdd\x1f\xc1\x87\x1a\x5a\xf4\x42\xb2\x0f\xc8\x20\xcb\x29\x26\xc1\x35\x98\x85\x8c\xbc\x61\x28\xa8\xc0\x97\x13\x5a\x58\x2a\xa6\xb1\xca\x82\x01\x59\x64\xc6\xb2\xc2\x52\xcc\x5b\x46\xaa\xdc\x9f\x76\xe0\xaa\x86\xb9\x77\x79\x9c\x32\x83\x91\x4e\x9b\xbc\x1a\x37\x42\x6d\x8b\xc5\xf5\x1e\xb6\xd6\x9a\xfa\xe8\xb4\xf1\x3b\xaa\x9d\xc5\x6a\xe5\x6c\xb7\xec\xef\x76\xfb\xcc\x7a\x13\xc7\x1a\xe3\x06\x92\x67\xf8\x6b\x69\xce\x76\xb2\x95\x1d\x03\x9d\x48\xb8\x69\x6d\x4d\x5d\xef\x06\xb4\x3a\x67\xfd\x92\x2d\x83\x35\x81\x5c\xfb\x70\xf0\xa2\x8e\xa6\xdc\x6e\x2e\x50\xf0\x22\xad\x55\x97\x74\xde\x76\xf5\x77\xe5\x38\xd4\x17\xad\xe6\xeb\x2c\x32\xe4\x1f\xff\xfa\xea\xff\x07\x00\x00\xff\xff\xda\x8b\x54\xf8\x5f\xac\x01\x00") +var _operatorsCoreosCom_subscriptionsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x7d\x6b\x73\xe3\xb8\x95\xe8\xf7\xf9\x15\x28\x27\x55\xb6\xb3\x92\xdc\x9d\x9d\x4d\x72\xbd\xa9\xa4\xdc\xb6\x7b\xa2\x9d\x6e\xb7\xb7\xe5\xee\xa9\xdc\x24\x37\x81\x48\x48\xc2\x98\x04\x38\x00\x28\xb7\xf2\xf8\xef\xb7\x70\x0e\x00\x82\xd4\x8b\x94\xe5\xc7\x4c\xcc\x0f\x33\x6d\x0a\x00\x81\x83\x83\xf3\xc2\x79\xd0\x82\x7f\x66\x4a\x73\x29\x4e\x09\x2d\x38\xfb\x62\x98\xb0\x7f\xe9\xc1\xed\x6f\xf4\x80\xcb\x93\xf9\xeb\xaf\x6e\xb9\x48\x4f\xc9\x79\xa9\x8d\xcc\x3f\x32\x2d\x4b\x95\xb0\x0b\x36\xe1\x82\x1b\x2e\xc5\x57\x39\x33\x34\xa5\x86\x9e\x7e\x45\x08\x15\x42\x1a\x6a\x5f\x6b\xfb\x27\x21\x89\x14\x46\xc9\x2c\x63\xaa\x3f\x65\x62\x70\x5b\x8e\xd9\xb8\xe4\x59\xca\x14\x0c\xee\x3f\x3d\x7f\x35\xf8\xd5\xe0\x97\x5f\x11\x92\x28\x06\xdd\x6f\x78\xce\xb4\xa1\x79\x71\x4a\x44\x99\x65\x5f\x11\x22\x68\xce\x4e\x89\x2e\xc7\x3a\x51\xbc\x80\x4f\x0c\x64\xc1\x14\x35\x52\xe9\x41\x22\x15\x93\xf6\x7f\xf9\x57\xba\x60\x89\xfd\xf8\x54\xc9\xb2\x38\x25\x2b\xdb\xe0\x70\x7e\x8e\xd4\xb0\xa9\x54\xdc\xff\x4d\x48\x9f\xc8\x2c\x87\x7f\xe3\xda\x47\xd1\x57\xe1\x75\xc6\xb5\xf9\x76\xe9\xa7\x77\x5c\x1b\xf8\xb9\xc8\x4a\x45\xb3\xc6\x6c\xe1\x17\x3d\x93\xca\x5c\x55\xdf\xb6\xdf\xd2\xe5\x38\xfe\xb7\x6b\xc8\xc5\xb4\xcc\xa8\xaa\x0f\xf2\x15\x21\x3a\x91\x05\x3b\x25\x30\x46\x41\x13\x96\x7e\x45\x88\x83\xa3\x1b\xb3\x4f\x68\x9a\xc2\xde\xd0\xec\x5a\x71\x61\x98\x3a\x97\x59\x99\x8b\xf0\x4d\xdb\x26\x65\x61\xd4\x53\x72\x33\x63\xa4\xa0\xc9\x2d\x9d\x32\xff\xbd\x31\x4b\x89\x91\xa1\x03\x21\xdf\x6b\x29\xae\xa9\x99\x9d\x92\x81\x05\xf1\xc0\x42\x30\xfa\x19\xf7\xe7\x1a\x07\x89\xde\x9b\x85\x9d\xae\x36\x8a\x8b\xe9\xa6\xcf\x27\xd4\xd0\x4c\x4e\x09\xe2\x17\x99\x48\x45\xcc\x8c\x11\xfb\x29\x3e\xe1\x2c\xf5\xf3\xdb\x30\x23\xec\xba\x34\xa7\x51\xf3\x75\xeb\x29\xcd\xa8\x10\x2c\x23\x72\x42\xca\x22\xa5\x86\x69\x62\x64\x05\x9f\xcd\xe0\x71\x9d\x97\x66\x73\xbe\xf4\x7e\xc5\x74\xb0\xe9\xfc\x35\xcd\x8a\x19\x7d\xed\x5e\xea\x64\xc6\x72\x5a\xed\xa1\x2c\x98\x38\xbb\x1e\x7e\xfe\xcf\x51\xe3\x07\x52\x5f\x4a\x8c\xa2\xe4\x96\xb1\x42\x57\x87\x82\x94\x85\x5d\x93\x5d\x1c\x19\x2f\x88\x51\x34\xb9\xe5\x62\x0a\x4b\x9f\xe2\x7a\xcf\x71\x63\xf4\x60\x69\xca\x72\xfc\x3d\x4b\x4c\xf4\x5a\xb1\x1f\x4a\xae\x58\x1a\x4f\xc5\x42\xd6\x93\x88\xc6\x6b\x0b\xa7\xe8\x55\xa1\xec\xb4\x4c\x74\x0e\xf1\x89\x68\x54\xed\x7d\x63\x99\x87\x16\x16\xd8\x8e\xa4\x96\x3c\xd9\xe9\xcf\x98\x3f\x1c\x2c\x75\x00\xb4\xdb\x69\x66\x5c\x13\xc5\x0a\xc5\x34\x13\x48\xb0\xec\x6b\x2a\xdc\x9a\x06\x64\xc4\x94\xed\x68\x0f\x6c\x99\xa5\x96\x8e\xcd\x99\x32\x44\xb1\x44\x4e\x05\xff\x7b\x18\x0d\x40\x64\x3f\x93\x59\xfc\x30\x04\x8e\x9b\xa0\x19\x99\xd3\xac\x64\x3d\x42\x45\x4a\x72\xba\x20\x8a\xd9\x71\x49\x29\xa2\x11\xa0\x89\x1e\x90\xf7\x52\x31\xc2\xc5\x44\x9e\x92\x99\x31\x85\x3e\x3d\x39\x99\x72\xe3\x29\x70\x22\xf3\xbc\x14\xdc\x2c\x4e\x80\x98\xf2\x71\x69\x37\xee\x24\x65\x73\x96\x9d\x68\x3e\xed\x53\x95\xcc\xb8\x61\x89\x29\x15\x3b\xa1\x05\xef\xc3\x64\x05\x92\xc8\x3c\xfd\x99\x72\x34\x5b\x1f\x36\xc0\xb7\xf2\x1c\x10\x4f\xf5\x36\xc2\xda\x12\x3f\xc2\x35\xa1\xae\x3b\xae\xa5\x02\xa9\x7d\x65\xa1\xf2\xf1\x72\x74\x43\xfc\x04\x10\xec\x08\xe1\xaa\xa9\xae\x80\x6d\x01\xc5\xc5\x84\x29\x6c\x39\x51\x32\x87\x51\x98\x48\x0b\xc9\x85\x81\x3f\x92\x8c\x33\x61\xec\x31\xcc\xb9\xd1\x80\x73\x4c\x1b\xbb\x0f\x03\x72\x0e\x0c\x88\x8c\x99\x3b\xb0\xe9\x80\x0c\x05\x39\xa7\x39\xcb\xce\xa9\x66\x0f\x0e\x6a\x0b\x51\xdd\xb7\xe0\x6b\x0f\xec\x98\x7f\x2e\x77\x58\x3a\x63\x84\x78\x06\xb7\x76\x77\xe2\x03\x3f\x2a\x58\x12\x8e\x03\x15\xe4\xac\x28\x32\x9e\x20\xc6\x9b\x19\x35\x24\xa1\xc2\xc2\x8b\x0b\x6d\x68\x96\x01\x3b\x69\x35\x8b\x75\xa7\x9d\xc0\xd1\x6e\x30\x07\xff\x7a\x89\x42\xd7\x7f\x08\x4c\xad\xd1\x62\x1d\x65\xb0\x8f\xa3\xb3\xcb\x3f\x6c\x00\x39\x41\xc9\x64\xc2\xa7\xab\xba\xad\x85\xe5\x39\x74\x01\x99\x86\x72\xa1\xdd\x10\xa5\x42\x68\x56\x9c\xca\xf2\x2e\x5a\xe3\xdb\x83\xb5\xb3\x5b\x09\xd9\x6d\x6b\xb6\x0f\x13\xf3\xd5\x3f\x34\x16\x70\x29\xe6\x78\x50\xad\xcc\x62\x89\x1c\x13\x73\xae\xa4\xc8\xed\x21\x9a\x53\xc5\xe9\x38\x73\x8c\x8d\x59\xf2\x85\x67\x0c\x97\xc8\xd4\xaa\x23\xb5\xe6\xab\xb8\x1e\xaa\x14\x5d\xac\x69\xc1\x0d\xcb\xd7\xac\x66\xd5\xb4\x3f\x53\x15\x51\x09\x8b\xbc\xab\xa6\x4e\x5c\x03\x3b\x75\x4a\xce\xc3\xc4\xd7\x7e\x66\x0b\xdc\xf1\x59\x8f\xdb\xd5\xb3\x06\xcb\xfd\xb3\x6d\x03\xf1\x01\x4e\xbf\xe1\xf7\x06\x58\xec\x09\x41\x06\xc6\x56\x42\x63\x40\xde\x97\x1a\x76\x8b\x92\xf3\xbf\x0e\x2f\x2e\xaf\x6e\x86\x6f\x87\x97\x1f\xd7\x83\x83\x6c\x3b\x28\xd5\x03\x34\xbe\xc3\x64\x0f\x3f\xfb\x3d\x52\x6c\xc2\x14\x13\x09\xd3\xe4\xe7\x47\x9f\xcf\x3e\xfe\xf5\xea\xec\xfd\xe5\x31\xa1\x8a\x11\xf6\xa5\xa0\x22\x65\x29\x29\xb5\x67\x1a\x85\x62\x73\x2e\x4b\x9d\x2d\x1c\xe5\x4a\xd7\x20\x6d\x13\x5b\x81\xdb\x52\xb1\x20\x9a\xa9\x39\x4f\x56\x83\x48\x0f\xc8\x70\x42\x68\x85\x40\x49\xc0\x70\xcb\xa8\xb2\x39\x4b\x7b\x30\x6c\x98\xb4\xff\x0e\x17\x45\x69\x3c\xc3\xbb\xe3\x59\x06\xa7\x42\xa0\xac\x94\x0e\xc8\x85\x2c\xed\x78\x3f\xff\x39\x2c\x4c\xb1\xb4\x4c\x40\x88\xb6\xc4\x80\x8b\xa9\xfd\xa9\x47\xee\x66\x3c\x99\x11\x9a\x65\xf2\x4e\x03\xa5\x60\x3a\xa1\x85\x5f\x7a\x0c\x1d\xbd\x10\x86\x7e\x39\x25\x7c\xc0\x06\xe4\xe0\xe7\xd1\x4f\x07\xf8\xf5\x42\x49\xfb\x09\x94\x93\x71\x56\x19\x37\x4c\xd1\x8c\x1c\xc4\xad\x07\xe4\xd2\x7e\x83\xa5\xf1\x3e\xc0\x08\x82\xcd\x99\xb2\xab\xf0\xbb\xd0\x23\x8a\x4d\xa9\x4a\x33\xa6\xb5\xc5\xb3\xbb\x19\x33\x33\x86\xa2\x78\x00\x18\xfb\xc2\x2d\xc3\x95\x8a\x08\x69\x06\xe4\x82\x4d\x68\x99\x01\x07\x26\x07\x07\x83\x26\xe3\xdb\x1d\xd5\xde\x2a\x99\x77\x40\xb7\x51\x5d\x73\x58\xb5\xf7\x87\x1a\x47\xae\x91\x35\xcd\x52\xc2\x27\x4e\x82\xe1\xda\x2e\x8a\xb0\xbc\x30\x8b\x36\x87\x66\x0b\x1d\x21\xad\x09\x01\x09\x3c\xe9\x3d\x2d\xbe\x65\x8b\x8f\x6c\xb2\xad\x79\x73\xfd\x2c\x63\x89\x25\x94\xe4\x96\x2d\x40\x9c\x25\xe7\x7e\xc0\xcd\x4b\xe9\xb4\x1c\xd2\x92\x3c\xfa\xa7\x6f\xa7\xb3\xb5\x5d\x7b\x20\xd9\xe7\x96\x2d\xda\x34\x23\xcb\x3a\x9d\x05\x0d\xf0\x3a\x0b\xab\xed\x50\x21\xed\x51\xd6\x3f\xdb\x29\xfa\xca\xc9\x1d\xc6\xa4\xdd\x9d\x53\xb3\x52\x60\xbd\x2d\xc7\x4c\x09\x66\x18\xc8\xac\xa9\x4c\xb4\x15\x57\x13\x56\x18\x7d\x22\xe7\x96\xf2\xb1\xbb\x93\x3b\xa9\xac\x22\xd7\xbf\xe3\x66\xd6\xc7\x5d\xd5\x27\x60\xf4\x38\xf9\x19\xfc\x8f\xdc\x7c\xb8\xf8\x70\x4a\xce\xd2\x94\x48\x38\xe2\xa5\x66\x93\x32\x23\x13\xce\xb2\x54\x0f\x22\xad\xab\x07\xfa\x40\x8f\x94\x3c\xfd\xfd\xe6\xc3\xbd\x23\xc4\x64\x81\xc6\x8a\x1d\xa0\x36\x02\xa1\x6b\x51\xa3\x53\x01\xe9\x2d\x85\xb2\x2a\x82\xdd\xf3\xdc\xb1\x45\xc7\x50\x3a\x2c\x63\x2c\x65\xc6\xa8\xd8\xd2\x03\xc0\xd6\xfd\xcc\x1e\x56\x87\x16\x46\xf0\x08\x50\xc8\xf4\x94\xe8\xb2\x28\xa4\x32\x3a\xa8\x08\x60\x73\xe9\xd5\xff\x04\x79\xb9\x47\xfe\x16\x5e\x66\x74\xcc\x32\xfd\xa7\xc3\xc3\xdf\x7e\x7b\xf9\xc7\xdf\x1d\x1e\xfe\xe5\x6f\xf1\xaf\x91\x85\xae\xde\x04\x6d\x3a\x32\x05\x21\xdc\xfd\xe9\xd8\xe8\x59\x92\xc8\x52\x18\xf7\x83\xa1\xa6\xd4\x83\x99\xd4\x66\x78\x1d\xfe\x2c\x64\xda\xfc\x4b\x6f\xe1\x04\xe4\x61\x89\x0e\x80\xf3\x9a\x9a\xd9\x9e\x49\xcf\x7a\x6b\xc4\xea\xa7\xb6\xdd\xde\x3e\xe1\x76\xd9\x19\x24\xec\x3f\xdf\xfa\xe9\x5a\x0e\x74\xa7\xb8\x31\x4c\x80\xdc\xc1\x54\x6e\x39\x71\xcf\x62\x6e\xc5\x66\xe7\xaf\x0f\x1e\x84\x78\x05\xa8\xed\xb0\x38\x98\xbd\x5b\x19\x22\x73\x20\xb4\x5e\x82\xaa\x74\xa4\xb3\xeb\xa1\xb7\xcc\xec\x7d\x21\xde\xde\xf0\xf6\xde\x67\x32\x58\x2e\xdc\xb2\x82\xa4\x79\x4a\xa4\xc8\x16\xe1\x77\x4d\x32\x0e\xd6\x08\x2b\x80\x06\x8b\xc4\x11\xbe\x1c\x24\x45\xd9\x73\x0d\x06\x39\xcb\xa5\x5a\x84\x3f\x59\x31\x63\xb9\x95\xd8\xfa\xda\x48\x45\xa7\xac\x17\xba\x63\xb7\xf0\x17\x76\xac\x7d\x60\xb9\x37\x8a\xd4\x49\xa9\x2c\xf3\xc8\x16\x9e\x82\xb0\xf4\x69\xcf\xa2\x07\xd3\x9e\x8f\x62\xd8\x8d\xab\x1d\x59\x6e\xd0\x16\x9d\xc1\xd5\xaf\x0a\x64\xc8\xb9\xcc\xca\x9c\xe9\x5e\x60\x4f\x28\xad\x8b\xb9\x95\x26\x97\xcc\x3b\xab\x9f\x8e\xa7\x2f\xe5\x73\xae\xa5\xda\x99\x0f\x72\x67\xf2\x94\xa5\xb1\x9a\xca\x44\xaa\x9c\x9a\xa0\x2e\x7e\x29\xa4\x06\x1d\xc0\xe1\x6c\x83\xa4\xbc\x3e\x68\xf5\xd9\x82\x1a\xc3\x94\x38\x25\xff\xef\xe8\xcf\xff\xf1\xcf\xfe\xf1\xef\x8f\x8e\xfe\xf4\xaa\xff\x7f\xfe\xf2\x1f\x47\x7f\x1e\xc0\x3f\x7e\x71\xfc\xfb\xe3\x7f\xfa\x3f\xfe\xe3\xf8\xf8\xe8\xe8\x4f\xdf\xbe\xff\xe6\xe6\xfa\xf2\x2f\xfc\xf8\x9f\x7f\x12\x65\x7e\x8b\x7f\xfd\xf3\xe8\x4f\xec\xf2\x2f\x2d\x07\x39\x3e\xfe\xfd\xcf\x5b\x4d\x8f\x8a\xc5\x87\x16\x07\x1e\x9f\xbe\xdb\x20\x2e\x0c\x9b\x32\xd5\xb1\x57\xeb\x6d\x25\xe4\x4b\xbf\x12\xda\xfa\x5c\x98\xbe\x54\x7d\xec\x7e\x4a\x8c\x2a\xb7\x1f\x8c\x8a\xa8\xed\x82\xe7\x1f\xfd\x69\x8d\x4c\xb1\x9e\x34\xef\x1d\x91\x35\x4b\x14\x33\xfb\xd2\x60\x70\x34\xcf\x3f\x0a\x99\x1e\x6a\x22\xd6\x98\x09\xd7\x4d\xfb\xdf\x42\xa9\xf1\x22\x05\xc2\xab\xe2\xbc\x13\x25\xf3\x01\x89\xcc\x42\x73\x9a\xf1\xd4\xb7\xbb\x65\x5b\xb4\x5c\xff\xbc\x28\x41\x3f\x2e\x25\x68\x84\xfb\xfb\xe0\x1a\x10\x13\xf3\x4d\x66\x9a\xa6\x4d\xd7\xb6\xad\x9b\xa3\xbd\x00\x65\x24\x29\x64\x51\x66\xd4\xac\x31\xdb\xad\xb0\x4d\x3b\xdc\xd7\xc1\x4c\x68\x37\x1a\xec\xc0\x8e\xca\xe5\xab\x8d\xa1\xe4\x2c\xcb\x08\x17\x78\x12\x60\x00\x6f\xcd\x53\x0c\xe5\x25\x42\xd1\xe0\x3c\xb7\x53\xb8\x9b\xb1\xa6\xa1\x91\x6b\xab\xeb\x28\xc3\xc5\x74\x40\xbe\xb3\xbf\x23\xcd\x72\xa6\x31\x2e\x48\x5e\x66\x86\x17\x19\x23\x81\xdb\xa2\x0d\x2d\x2b\x19\xa1\x5a\xcb\x84\x53\xe3\x66\xec\xee\x0f\xb5\xf1\xd3\x86\xd9\x18\x7a\x0b\xa6\xd0\x84\xa5\x4c\x24\x6c\x40\x3e\xc3\x75\x61\x58\xeb\xd8\x0a\x83\x60\xde\x87\x31\x28\x49\x4b\xbc\xda\x41\x7a\xb0\x7a\x8c\x61\x9e\x97\x06\x0c\xc5\x8f\x65\xc5\xb7\x3b\xee\x2c\x73\x91\x31\x1f\x48\x55\x10\xad\x29\xdc\x3d\xc8\x49\xa5\xba\xeb\xfb\x99\xef\xdb\x11\xde\x60\x6e\xdb\xca\xa9\x96\x28\x6e\x65\x63\xa8\x53\xda\xc7\xb6\x18\xb6\xa3\xb3\x3f\x49\x1a\xdb\x81\xbe\xb6\xa7\xad\x1d\x8c\x4b\x5d\xe9\x69\x5b\x6b\x52\xa1\xd8\x84\x7f\xe9\x80\x8f\x67\xa2\x52\x51\x78\xca\x84\xb1\x8a\x80\x02\x82\xaa\x58\xc1\x04\xe8\xe1\x8c\x26\x33\xa0\x0b\x8e\x8a\x56\x96\xe1\x87\xbc\x31\x42\x29\xa3\xfb\xf1\x1a\xad\x92\x62\x5e\xce\xd6\x4f\xfc\x6c\xb9\x5d\xdf\xff\xc1\x12\x32\x65\xa8\x5b\xac\x57\xae\x1b\xfb\x18\xf5\x70\x7e\x2e\xfe\x2f\xbc\xc0\xf3\x93\xb4\xda\x5b\xb8\x72\x2a\x24\x9c\xb5\x09\x37\x44\x5a\x89\xc0\x7e\x77\x40\x46\x2b\x7a\xe6\xd4\x24\x33\xd7\xe2\xf0\x50\x13\x34\xda\x36\x07\x1a\xa3\x89\x30\x2d\x33\x96\x12\xef\xb0\x81\x83\x76\x44\xa9\x9a\xab\xc2\x09\xd5\x9a\x4f\x45\xbf\x90\x69\xdf\x8e\x76\xb2\x0e\x21\x5a\x1c\xaa\xd8\xd5\x70\xfb\xc1\xda\x8a\x57\xc1\x38\xd1\x6e\x9b\x3e\x06\xfb\x5b\x24\x5b\x24\x32\x2f\x4a\xc3\x22\xe3\x5c\xb0\xeb\x8c\x17\xe8\x59\x14\xc9\x90\x95\x44\x74\x3f\x98\xe6\x54\xd0\x29\xeb\xbb\x8f\xf7\xc3\xc7\xfb\xe1\x5b\xf7\x01\x73\x1b\xaa\x85\x26\xc5\x4d\xe7\xb0\x0e\xbc\x77\x68\xb2\xc4\x97\x63\x67\x3a\xca\xe9\x17\x9e\x97\x39\xa1\xb9\x2c\x05\xc8\x64\xcb\xe0\x84\xcb\x6b\x96\xee\x07\x60\x2b\x00\xa5\xd7\x42\xaa\x25\xb4\x48\x67\xc4\x24\xcf\xd7\xb2\xd5\xca\xa2\xd5\xcd\x92\xd5\xc1\x82\xb5\xb3\xe5\xca\x1b\xa9\xdb\xe3\xe3\x47\x6f\x37\x6f\x60\x24\x17\x5b\x31\xd2\x1f\x70\x70\xed\x08\xe3\x70\x4d\x64\xce\x8d\x09\x2e\x59\x01\xc3\x7a\x84\x9b\x9a\xf5\xd3\x9d\x05\x3e\x41\x1a\xcb\x35\x61\x5f\xac\x36\xc5\xc1\x8a\xee\x6f\x2d\x7a\xc8\x65\xef\xb8\x06\x03\x1a\x15\x84\xe7\x45\xc6\x72\xef\x43\xda\xf7\xba\x99\x73\x32\x78\x39\x1f\x2f\xe7\x63\x55\x27\xdd\x45\x16\x89\xc5\x10\x34\x14\x8c\x59\x56\x89\x23\x16\xb3\x0b\x99\x6a\x27\x2f\x78\x1c\xb2\x67\xe1\xf2\x0b\xd7\xe0\x89\xfb\x91\x81\x65\x60\xc4\x8c\x26\x77\x33\xa9\x19\xf6\xa0\x8a\xb9\x71\x22\xd6\xe8\x2d\x21\x70\x8f\x00\x4e\xa3\x93\x49\xbd\x45\xca\x8a\x4c\x2e\x72\x90\x6c\x87\x26\x96\x67\x82\xe8\xc2\xf2\x22\xa3\x86\x05\xc1\x66\xb3\xb5\xe1\xde\x9c\x0f\xbe\x7e\xf9\xc5\x4a\x00\x51\x1c\x44\x0b\xd8\x36\x3b\xd6\x4d\x53\x0d\x48\x3b\x22\x93\xa3\xcf\xf2\x0d\x48\xf8\xd5\x1b\x80\xe6\xd9\xd5\xc5\x7a\x07\x49\xd2\xca\xbc\x42\xb6\x9b\x58\x96\x96\x71\xb6\x61\xaa\x0d\xe9\x15\x7d\x7e\xbd\x07\x2b\x7a\xa0\xf7\xd0\x78\xd5\x73\xee\x73\x21\x3a\x00\x1b\x2b\x96\x61\xe8\x83\x33\x34\xdb\x46\xce\x73\x7d\x3f\x1a\x59\x5b\xbb\x7b\x1b\x9b\x7b\x3f\x4c\x7e\x4f\x4a\x60\x2b\xa3\x7c\x6d\x33\x40\xc9\x8e\x8f\x2a\xb8\x1c\x59\x48\xa2\x7d\xde\x6d\x04\x2d\x8a\x0c\xee\xeb\x64\x5b\xdf\xac\x96\xea\x18\x2e\xbf\xe3\xa4\xc3\x96\xc7\x0e\xb7\x76\xe6\x87\x1a\x11\xc0\x9e\x8e\x19\x2f\x9c\x37\x23\x5a\xeb\x7c\xfc\xc2\x67\xb0\xa3\x56\x31\x25\xf6\x24\x0c\x45\x8f\x5c\x49\x63\xff\x77\x89\x36\x51\x8b\x37\x17\x92\xe9\x2b\x69\xe0\xcd\x5e\x97\x8d\x53\xe9\xb8\x68\xec\x04\x07\x44\xe0\x99\x04\x83\x74\x14\xd0\x80\xbe\xa2\x40\x0a\x3d\x80\xb8\x26\x43\x41\xa4\xf2\xab\x0b\x56\x5d\xed\x86\xf0\x9a\xa1\x90\xa2\x8f\x6e\x84\xab\xc6\xb8\x0c\x3e\x94\x31\x4c\x36\x0c\xe7\x86\xba\xb1\x14\x18\x7f\xc1\x10\x96\x8c\x26\x2c\x25\x69\x09\x93\x86\x70\x0c\x6a\xd8\x94\x27\x24\x67\x6a\xca\x2c\xd3\x4e\x66\x6d\x41\xbd\x8d\x2e\xe1\xd3\x82\x3a\xc5\x83\x6e\xd9\x3f\x20\xc1\xef\x80\x4b\x74\x23\xdb\xd8\x07\xc9\x5b\x4e\x0b\xbb\x75\xff\xb0\x54\x0c\xa0\xf7\x2f\x52\x50\xae\xf4\x80\x9c\x79\xd7\xdb\xf8\x37\x67\x03\x8b\x87\xb1\x23\x58\xa9\xef\x87\x92\xcf\x69\x66\xe9\x26\x0a\x78\x0c\xc5\x3b\x3b\x7a\x93\x59\xf4\x1c\x2f\xb5\xe7\x1b\xfd\x5d\xb8\x26\x07\xb7\x6c\x71\xd0\x5b\xda\xee\x83\xa1\x38\x40\xfa\xba\xb4\xc1\x81\x18\x83\x47\xc9\x01\xfc\x76\x70\x3f\xfe\xf2\x00\xc2\xdf\xd6\xbd\x34\x32\x63\x2a\x0e\xfd\xdc\xb2\x87\x37\x55\x7b\x58\x5a\x75\xbd\x1b\x8d\xf4\x38\xb7\x14\x37\x5e\x6c\xb1\x67\xab\x9a\x17\xa0\x96\x31\x34\x99\xa1\x17\xb7\x9b\x17\xc4\xd1\x2c\x88\xdd\x33\x83\x74\x1d\x10\xc3\x71\x48\xa3\xe0\xd2\xe7\xb7\x01\xdb\x7a\x0c\xe4\xa7\xdf\x45\xfe\xed\xd0\xde\xfe\x11\x30\xe4\xb7\xfe\x5f\xbf\xbb\x67\xdc\x42\x3b\xc6\x86\x53\xea\x20\x60\x5c\x42\x07\xc2\x45\x0a\x17\x4c\x6e\xa9\x00\x01\x1c\xcb\xc2\x07\x96\x35\x20\x97\x96\x50\x91\x9c\x51\xa1\xbd\x99\x0b\x6e\xa2\xaa\xc6\xda\x5d\x99\x45\x7a\x95\x33\x29\x54\x27\x83\x91\x2b\x39\x72\xb6\xaf\x1e\xb9\x06\x5b\x6a\xf5\x06\x4e\xd2\x95\xbc\xfc\xc2\x92\xd2\xac\xbd\xcb\x8a\xe1\xb6\x95\x8b\x6c\x65\xf4\x35\x80\x7c\x5b\x31\x79\x5c\x59\x8d\xc9\x57\x18\x1c\xb3\xf9\x8d\x90\xb9\x65\x8b\x8a\xd9\x38\x11\x02\x48\x7e\xaf\xc2\x12\xcf\x0a\x90\x77\xfc\xb7\x37\x65\xe5\x63\x2e\xf0\x63\x38\xb4\xdf\x0a\x18\xdd\x03\xd4\x4a\x76\x59\x86\x9f\xd9\x07\xb8\xda\xc9\x19\x35\x98\x7d\xe8\x20\x63\x04\x2a\xb9\x5a\xba\x88\x44\x8a\xcb\x1f\x4a\x9a\xd5\x83\x10\xdc\x2b\xd7\x68\x89\xaa\xdf\xf1\x2c\x4d\xa8\x72\x5e\x5e\x18\xa6\xa9\x25\xee\x1e\x05\x42\x90\x50\x11\x4e\x7b\xb5\x47\x1a\xaf\x2a\x0b\xaa\x0c\x4f\xca\x8c\x2a\x1f\x39\xde\x2a\x50\x60\x2b\x44\x2b\xa4\x19\xb1\x44\x8a\xb4\x8b\x02\x70\xd3\xec\xdb\xbc\x6b\x2d\x98\xe2\x12\xbd\x8b\x79\xce\x9a\x48\x7a\x54\xb7\x69\xcb\x89\x3f\xd5\xe1\x88\xd5\x2c\x1f\x10\x9b\xe9\x19\x1e\x9f\x0a\xa9\x58\x7a\x1c\x91\xc7\x70\x2a\x06\xe4\xcd\xc2\x9b\x59\xc0\xe4\xe2\xa2\x2b\x34\x33\x3e\x10\xc6\xa3\xac\x03\x76\x75\xa0\x26\x52\x41\x70\xca\x51\x2a\x31\x22\x63\xce\x13\x73\x3c\x20\xff\x97\x29\x09\x1b\x2f\xd8\x94\x1a\x3e\x0f\xdc\x34\x28\xae\x8a\x51\x77\x83\xff\x8a\x1c\x41\x37\xc2\xf3\x9c\xa5\x9c\x1a\x96\x2d\x8e\x51\x8f\x65\x44\x2f\xb4\x61\x79\x9b\xad\x6b\x63\x34\x40\x5f\x3b\x68\xfb\xab\xaf\x37\xb4\xec\x1a\x43\xf5\xd9\x47\xa5\x54\x90\x41\x1f\x82\xc6\x16\x06\x1e\x24\x37\x88\x9b\xb1\x0f\x82\x0b\x6c\xf6\x92\x65\xbc\xc1\xdf\x5b\x3c\xa0\x44\x31\xc8\x40\xe0\x30\xf7\x9e\x38\x8e\xde\x94\xef\x65\x29\xd6\x9b\x04\x6b\x0b\x7f\xe7\x94\xf0\xcf\x51\xc7\xb5\x51\x8a\x8f\x22\x26\x44\x33\x89\x4c\x94\x94\x80\x5d\x12\xd8\xb9\x25\x0f\xd8\xaa\xf2\x44\xd9\x3a\xc9\xbd\x46\x24\xc2\x5c\xb6\x78\xbd\xef\x25\x6e\x31\x7c\xa8\x03\x2e\x83\x83\xb8\x03\x4c\x23\x6e\xcf\x38\x72\x00\xf8\x89\x10\xac\x10\x14\xbe\xc5\x52\xef\xc5\x66\xa9\x81\xeb\x4a\x0e\x4f\x0f\xf7\x42\x7c\x71\x39\x4a\x16\x74\x0a\xe7\xa9\xc3\xaa\x9a\x5d\x49\xca\x0c\x53\x39\x04\x5c\xcf\xe4\x1d\xfe\x8e\x6c\xab\x70\xad\x58\x5a\xc5\xb6\xcf\xa4\x06\xae\x54\x0f\x62\x84\xf3\x0b\x17\xa3\x77\x74\x41\xa8\x92\xa5\x48\x9d\xd4\x14\x08\xe8\xfb\xc6\x87\xaf\xa4\x00\x4a\x51\x6a\x0b\xab\x9b\x1a\x95\x1e\x33\x43\xed\xb1\x79\x3d\x78\xfd\x6a\x2f\x00\xeb\x18\xb7\x0a\xb3\x69\x58\x0a\xfd\x5d\xb9\x3f\x33\x7b\x99\x97\x62\x34\xfd\x20\xb2\x2e\xb2\xdc\x7b\x44\x2f\xe8\xda\x07\x25\x8c\x4f\xc0\x76\xdb\xc3\x57\x77\x8a\x1b\x16\x91\xc7\xa3\x09\xcd\x34\xb3\xaa\x7b\x29\x82\x08\x7b\x5c\x17\x41\xa0\x49\x9b\x05\x6d\xf7\x07\xd1\xe5\xf8\x9e\xe7\xcc\x1d\x28\x40\xb9\xea\x98\x05\x84\x3b\xd4\x1b\x8e\x5c\x3d\xb8\x93\x1c\x61\x4b\x2b\xb1\x49\x69\x8e\xf7\xe3\x24\x82\x0b\xb4\x9a\x75\x17\x95\xc4\xc7\x0d\x17\x7b\x5c\xed\x1b\x36\xa3\x73\xa6\x89\xe6\x39\xcf\xa8\xca\x20\x56\x70\x84\xf3\x23\xe3\xd2\xac\x8e\x40\xef\x16\xdd\x1c\xcf\x24\x1a\x6e\x2b\xa8\xfd\x3c\x2c\x9c\x80\x46\xf8\x79\xd9\xef\xe4\xa5\x29\x69\x96\x2d\x08\xfb\x92\x64\xa5\xe6\xf3\xfb\x9e\x26\x17\xfd\xb0\x03\xab\x6e\x72\xe9\x42\xa6\xa3\x82\x25\x8f\xc9\xa3\xeb\x1a\x86\x25\x55\xa9\xdf\x74\xe0\xc9\xa8\xec\x83\xe6\xbe\x00\xcf\xa7\x24\x61\x5a\x7b\x9f\xca\x45\xec\xe7\x19\xd6\xf0\x63\x49\x28\x40\xef\xf4\x65\x46\xb5\xe1\xc9\x9b\x4c\x26\xb7\x23\x23\x55\xa7\x98\xfd\xb3\xef\x46\x4b\xfd\x1b\x69\x18\xce\xbe\x1b\x91\x0b\xae\x6f\xe3\xc4\x2e\x78\x69\x1a\x9b\x4b\x28\xb9\x2d\xc7\x2c\x63\xe6\xf0\x50\x23\x97\xcb\x69\x32\xe3\x82\x79\x06\x27\x42\x48\x8a\x53\xf8\x2c\x94\xbb\xde\x99\xba\xc0\xa7\x13\x87\xaf\x3f\xa3\x77\x9a\xe1\xf4\xc7\x76\xfa\xf6\x67\xd6\x26\x22\x7d\xaf\xf7\x14\x38\x99\xe1\xc5\x9e\xee\x20\x26\xfa\xc6\xce\xb1\x9b\x71\xfb\xf0\x2d\xcf\x18\xea\x38\xb0\x44\xef\x95\xe6\xce\x01\xec\xd8\x42\x96\xe4\x8e\xa2\x56\x0c\x34\x70\x40\x6e\x78\x71\x4a\x2e\x85\x2e\x15\xab\xec\x19\x93\xc6\x50\x5c\x57\x91\x65\x5e\x9d\x82\x1d\x46\x95\xc3\x52\x3a\xa7\x5d\x91\xcb\x2f\x34\x2f\x32\xa6\x4f\xc9\x01\xfb\x62\xbe\x3e\xe8\x91\x83\x2f\x13\x6d\xff\x27\xcc\x44\x1f\x0c\xc8\x30\x0f\xf7\xec\x90\xfa\x47\x31\xef\xfa\x84\x1d\x2c\x33\x8e\xf8\xec\x83\x20\x88\x73\xa3\xb3\xd2\x5a\x2a\xc9\x1d\x66\xa0\xb0\x24\x9e\x29\x25\x55\xf0\x3c\x8f\xc0\x00\xdc\x25\x91\x79\xa1\x64\xce\x23\xc3\x1e\x20\xf8\x5e\xfd\xeb\xc0\xdc\xb0\x5d\x24\x5d\xde\x7f\xcc\xe9\xe6\x3a\x93\x3a\x73\x5c\xb7\xfb\xc3\x89\xf7\x98\x40\x55\xd1\xe9\xee\xa0\x7f\xba\x46\x76\xbf\xdd\x28\x96\x5a\xc5\x3b\xfc\x36\x44\xcd\x91\x93\x94\xcd\x4f\x74\x4a\x5f\xf7\xe0\x33\xda\x79\xfb\x99\xda\x9c\xa8\x26\x07\xaf\x0f\x06\x64\xe4\xb9\x6d\x2f\x9e\x63\xd5\x6e\x22\x55\x18\x10\x8c\xe9\xaf\x0e\xc8\x91\x54\x30\x72\x42\x05\xc9\x18\x9d\x3b\x03\x32\x9e\xa9\x05\xea\xb4\xc7\xad\xa3\x1e\xdb\x06\x80\x45\x5a\xfe\x7f\xfe\x72\x4b\xeb\x76\x92\xe8\xf2\xbe\x79\xcf\xc8\x03\x2b\x82\x1e\x80\x30\x29\x2d\x8d\xb5\x54\xd3\xb2\x55\x48\xab\xe5\xc6\xae\x16\xcc\xc5\x92\xa6\x8c\x03\x6c\xdc\xd4\x03\x90\x53\x0f\x9e\x80\xea\x92\x8e\xf1\xf5\x9e\xa4\x76\x85\xe6\x27\xc1\x7f\x28\x19\x19\x5e\x84\xc8\x7a\xa6\x34\xd7\xc6\x9e\xee\xb4\xc6\xc3\x38\x32\xb6\xa3\xb3\x9c\xfe\x5d\x0a\x72\xf9\x66\xe4\x3e\x7a\xfc\xa4\xe0\xd9\x4a\x24\xe8\xdf\x4b\xc5\x2c\x3b\xee\xe2\x30\xe0\xfb\x34\x39\xbb\x7d\x4f\x2e\xa8\xa1\xc8\xe0\x9d\xcb\x95\xa8\x28\xbc\xc5\xc2\x31\x17\xa9\xfb\x29\xe2\xdc\x8f\xcd\x64\xed\xee\x5d\x6d\x92\x97\xe2\x86\x9f\x3e\x0e\xf7\xc4\x8c\x13\xa0\xf1\xd3\xf7\x32\xed\xcc\x91\xff\x60\x01\x78\x8e\xfd\x49\x6e\x07\x20\x56\x67\xef\xc1\x71\x26\xf6\x3c\xbb\x7f\x7e\x67\x35\xce\xd6\xc4\xab\x15\x1b\xf1\xd0\xea\x38\xe7\x9b\x48\x4f\x07\xda\x61\x51\x03\xce\x8d\x63\x28\xe3\x4c\x8e\x89\xc3\xf7\x7d\xcf\xf7\xd3\xc7\xe1\x0e\xd3\xfd\xf4\x71\xf8\xb8\x53\xdd\x49\x3c\x6b\x4a\x67\x15\x0f\xae\xc2\x31\x9a\x62\x57\x7b\x99\x6b\xb0\x2f\x69\x6b\x9f\x70\x5a\x95\x55\x72\x0b\x94\x0e\x2f\xbf\x14\xe8\x7c\xe6\x8c\xfc\xa3\x19\x85\x38\xe6\x10\x5d\x07\x9b\x6a\x77\x59\x5b\xca\xee\xb7\xd7\x6a\x74\x40\x9f\xc8\x05\xc3\x2b\xcb\xf4\xd4\x3b\x02\x84\x1e\xab\x3b\xbc\x07\xb7\xcb\xf4\x14\xe9\x2a\x41\x2f\xcc\x34\xc2\xa6\x23\x34\x11\x89\xf0\x13\x9d\x53\x9e\xd1\x31\xcf\xb8\x59\x58\x0e\x7d\x3c\xa8\xb9\x96\x6a\x98\xf2\x5e\x0f\xf3\x8e\xa2\xc5\x92\x81\x8a\x1c\xd9\x91\x4e\xc0\xc0\x75\x3c\xa8\xa4\x8a\x19\x53\x2e\x08\x11\x45\x8f\x9a\xc8\xa1\x99\x01\x6c\x6b\x48\x1c\x6d\x51\x65\x3b\xbb\x07\xc0\xdb\xf3\xd1\x95\xa1\xd9\x3e\x2b\x19\x1a\xfc\x30\x72\x39\xe1\x9e\x33\x4f\xc3\x78\xa9\x56\x5c\x0d\xd0\x6a\x6b\xcb\xf6\x7c\xed\xa7\x8d\x53\x24\x04\xa3\xed\xc0\x04\xed\x54\x85\x63\x82\x3e\xbe\xbe\xe6\x46\x89\x58\x36\x72\xa4\xc4\xa5\x4b\x42\xbe\x69\x71\xeb\xdb\x16\xa9\x02\xba\x24\x58\xf0\x3b\xdf\x35\xe4\x6a\x06\x6e\x15\xdb\x91\xab\xf5\x6c\x12\x56\xcc\x26\x5d\xee\xa9\xcf\x59\x31\x7b\x3b\xaa\x9b\xe7\xec\x3b\xf2\x76\xb4\xe2\x5c\x02\x90\x61\xb5\x1a\x8d\x76\x87\x9a\x64\x7c\xc2\x0c\xdf\xb2\x84\x07\x38\x99\xb9\x14\xdc\x48\xb5\x3e\x2e\x99\x74\x3a\x6d\x7e\xb8\xae\xfc\xb0\xca\xe4\xf1\xde\x8d\x80\x0e\x70\x89\xcc\x32\x96\xf8\x3c\xd6\x00\x52\xff\x89\x55\xca\x0b\x73\x3a\x7b\xc8\xf2\x8f\x8a\xca\x09\x6e\xe8\xc9\xc7\xcb\xb3\x8b\xf7\x97\x83\x3c\xfd\xd9\x4c\xde\xf5\x8d\xec\x97\x9a\xf5\x79\x8b\x54\x21\x4f\xe7\x46\x88\x4f\xd1\x2a\x73\x55\x1d\xa4\x1f\x7c\x00\x23\xf9\xa4\xd1\x6d\x00\x4c\x39\xfe\x52\x48\x4a\xd3\x23\x8a\xba\x20\x45\xea\x2c\x41\x65\x96\x21\x94\x8d\x62\xac\x17\xab\xd4\x1b\x63\x33\x3a\x2f\x68\x57\x23\x42\xb5\xa8\x87\x25\xd0\x8f\x8f\x5c\x5d\x68\xfd\x76\x21\x62\x13\xe4\x46\x61\x0c\xef\x7f\x01\x57\x4d\x46\x82\x7f\x16\xf8\xdb\x4e\xa4\xb2\x58\xa3\xea\x18\xc0\x4c\x02\x8b\x3d\x29\x35\x53\x03\xc7\x31\x1e\x1d\x50\x1d\x92\xf5\xec\x90\x23\xad\x09\xa6\x8f\x6c\x82\x0e\xc9\x3e\x67\xae\x93\xa2\x68\x69\x66\x4c\x18\x9f\x72\xdc\x01\x63\x25\xdc\x9c\x87\xf3\xa3\x03\xaa\x65\x7a\xa0\x6e\xc9\x7c\x5e\x12\xe0\x74\x41\x43\x7b\x50\xee\x45\xb7\x43\x74\x94\xa2\xa9\x04\x17\x08\xcc\xe9\x56\x43\x30\x9a\xe6\x5c\x3c\xc3\x83\x98\x70\x91\x6e\x5b\x7f\x23\x71\x1d\xf4\xa8\xcb\x51\x38\x8a\xb7\x9e\x87\x9b\x38\xea\xf5\x1a\x0c\x21\x77\x77\x72\xf5\x1b\xb9\x56\x87\x2e\x5f\xe8\x1f\xb2\x3e\x7e\xa5\x5f\xa4\x15\x54\x5e\xae\xd7\xf6\x6f\xc0\x79\x84\x4b\xb3\x3d\xed\x2f\xf9\xf7\x13\x68\xee\x0d\xa9\x2e\x32\xcc\xbd\x78\x33\x54\x4d\xd1\x3e\x68\x0b\x33\x82\x61\xf9\x15\xa7\xbb\x5a\x10\x14\x54\xd1\x9c\x19\xa6\xd0\x75\xcc\x39\xa3\x09\xe7\xd5\xff\xa1\x60\x62\x64\x68\x72\xbb\xef\x14\xa2\x2f\xfc\xf4\xe1\xf8\xe9\xae\xb7\x65\xde\x49\x26\x0d\x98\xe0\x12\x0a\x2d\xe2\x9b\x59\x2e\x1c\xb3\x79\x26\x74\x25\xe4\xf1\xea\x62\x89\x08\x79\x9c\xea\x4c\xb4\xca\xeb\x85\xc6\x07\x70\x11\x0b\x89\xe9\xc0\xf5\x1d\xa1\xb0\x1f\xa6\xd7\xfe\x10\x38\x39\x66\x97\x7b\xa7\x8a\x1e\xe4\x32\x65\x64\xcc\x4d\x75\xd2\x35\x33\xa4\x60\x2a\xe7\x2e\x00\x5a\x0a\xac\xc1\xc7\x52\xe4\x5e\x96\x53\xb9\x4f\x47\x9c\x4d\x10\x99\x18\x5f\xe4\x8a\x8c\x99\xb9\x63\x4c\x90\x57\xaf\x5e\xbd\x02\x79\xe3\xd5\xaf\x7f\xfd\x6b\x02\x19\x17\x52\x96\xf0\x7c\xb9\x21\xb4\xfa\xaf\xd7\xaf\x07\xe4\x8f\x67\xef\xdf\x81\xff\x55\x61\x34\x19\x4b\x33\x73\x23\xdb\x06\xb5\xce\xba\x47\xfe\x67\xf4\xe1\xca\x8b\x09\xba\xf1\x2b\xa8\x14\x61\x79\x75\x67\xba\x57\xbf\xfa\xfa\xeb\x01\xb9\xe0\x0a\x22\x6f\x39\xc4\x0a\x04\x77\xc1\xc2\xbb\xd0\x09\x69\x96\x63\xdd\x1d\x9b\x70\xee\xb4\x39\x9f\xce\x0c\x56\x4b\x02\x4c\xc9\x78\x62\x30\xfb\x1e\x1e\x76\xcc\x85\xa4\x5d\x28\x89\x0b\x8c\x72\x8e\x23\x30\xb9\x1e\xc9\xf8\x2d\x23\x13\xfd\x8d\x92\x65\x51\x05\x04\x2a\xa6\xad\x8c\xea\x6a\x31\xe1\x60\xd5\x5e\x69\x66\x9e\xd4\x93\xa1\xa5\xa5\xa6\x86\x74\xc3\x9a\x00\xd2\x0b\xf9\xc7\xfa\x88\x09\x05\xe5\xc1\xb9\x0e\xae\x9b\x6b\xd9\xef\x83\x16\x99\x46\xe7\xd4\xc7\x77\x14\x4a\x7e\x8f\x9b\xc4\x85\x8f\x14\x72\x32\xaf\x76\x32\x97\x0b\xcc\x04\x9b\x2d\xaf\x47\xae\x5b\xbe\xe7\xa2\xe2\xa3\x18\xa3\xe1\x24\x0e\x46\x83\xd0\x6d\xae\xed\x27\x6a\xc9\x21\x57\x7c\x39\x2e\x4f\x68\x66\x1a\x77\xb4\x14\x4b\xbd\x5d\xad\x11\x47\x69\x5c\x05\x1a\x17\xe6\x55\x8d\x81\xee\xaa\x2e\x48\x26\xaa\x6b\x54\x4b\xd8\x56\x73\x92\xd1\xcc\x94\x0e\x34\xe0\xab\x64\xbf\xcd\xb4\x76\xb1\x36\x39\x55\xb7\x56\xec\x77\xe7\x7f\x00\x9e\xc1\x3a\xc4\xf9\x60\xd0\xd5\x9c\x85\x22\x75\xb1\x67\xbd\xfd\xc8\xe1\x60\x70\x88\x07\x44\x2a\xcc\x77\x89\xd8\x6e\xdf\x3f\x51\x4c\x71\xdd\x73\x9b\x16\x51\x09\x3a\x57\xda\x83\xd6\x3c\x82\xa9\x83\x54\x9b\x2c\xb7\x9d\xc4\x97\x6e\xf9\x82\xdb\x66\x0c\xc6\x96\x45\x9b\xb2\x05\x5d\x25\xa8\x0e\x09\x86\xd7\xd7\x4d\x71\x47\xa0\x5d\xce\xe0\xce\x39\x70\x09\x7a\x45\xec\x32\xc7\xae\x4c\xce\x05\xb1\xd5\x2a\x66\x3d\x7f\xae\x36\x9c\x60\xf8\x47\x9d\x56\x39\x5a\x10\x49\x08\x55\x75\xaa\x2a\x16\xe4\x59\x33\xaf\x18\x5d\xba\x65\x63\xef\xc2\xc8\xf0\x69\x77\x49\x80\xcf\xd2\x39\x08\x34\xb3\xa8\x55\xbb\xc8\xd0\x00\x00\x72\xa3\x3f\x2c\x03\xf2\xde\xd1\x54\x44\x2e\x3a\xd6\x32\x2b\x0d\x76\xad\x7e\x8c\x09\x2e\x0c\xea\x53\x0e\x00\x95\x0d\xcd\x22\xf2\x6b\xaa\x7a\x5f\xed\x28\x31\x3e\x1d\x0e\xe3\x4b\xea\xcb\x27\x4b\x2b\x5b\x65\xec\xd6\x0f\x96\x62\x36\xd1\xbc\x8b\xaa\x34\x1a\x92\xa3\xaa\x54\x86\xbf\xe6\x1e\x0a\xc3\xd4\x84\x26\xec\x38\x56\xa1\x42\x49\x92\xe0\x59\xe3\x63\x03\x66\x54\xa4\x19\x8a\xd6\x09\x53\x80\xf2\xec\x8b\x2b\x96\x6b\x3f\x91\x2a\x0e\x45\x60\x8f\xde\x30\x2b\x0f\x32\x6a\x4a\xc5\x5a\x45\x18\xed\xd7\xad\x10\xa6\xb1\x2f\xa5\x0d\x06\xeb\xea\x52\x01\x9d\xbc\x84\x2a\xa2\x63\x55\x81\x09\xa1\x8a\x20\xd5\xb1\x5a\x3a\xb0\xa8\x04\xf4\x18\x48\xc5\x42\x96\xca\xd9\xbd\x7d\x6e\xd1\x44\x2a\xab\x08\xe1\xc0\x54\x13\xc5\xa6\x56\x5a\x55\x20\xd6\x62\x8b\xac\xb4\x2f\xf6\xea\xfc\xb5\x67\x27\xb9\x4d\x2e\x6e\x13\x27\x3e\xcb\x39\x4f\x3d\x8b\x84\xbb\xa5\xaa\xc4\x5f\x41\x75\x14\x77\x12\xa5\x63\x8f\x20\x8c\xc2\x38\x30\xd2\x10\xd1\x59\xf3\x9f\x8e\xad\xbb\x12\x12\x3d\xb4\xa8\xa5\xd0\x85\x08\xcb\x94\x5d\x97\xe3\x8c\xeb\xd9\x68\x47\x53\xe0\xd5\x8a\x21\xd0\x61\x60\xe9\xa2\x6e\xad\x79\x50\x33\xa1\x39\xb0\x3c\x4b\xc6\x2d\xb3\x85\xda\xc1\x12\x80\xe8\x7b\xc7\x98\x29\x21\x30\x22\x63\x2e\x9c\xdf\xfe\x14\xcd\xc3\x45\x68\x61\x02\x8f\x94\x7d\x12\x45\xed\x7d\x42\xb3\x4c\x37\xa3\x57\x3d\xa1\x45\x99\xc3\x47\x6d\xe1\x9e\x72\xbb\xdd\xa1\x4c\x48\x23\x15\xe4\xda\x85\x69\x92\x4b\x8c\x70\x11\x44\x0a\xdf\x08\xf2\x90\xf8\x0e\x51\x54\x1f\xc4\xee\x02\xca\xec\xb9\x8e\xe2\x8b\x0d\xf4\xe1\x6c\xa0\x3b\xde\x34\x54\x95\x94\x68\x14\x11\x5c\x2f\xf5\xec\x49\xa9\x27\xb9\x5b\xae\x24\xf6\x7a\x2b\x80\xdf\x3c\x33\x58\x9e\xbc\x73\xce\xb3\xcf\x8d\xee\xc0\xa6\xad\xde\x01\x87\xb7\xef\x34\x8b\x24\xc2\x4c\xa7\x10\x84\x23\xb0\x7c\xe4\x2b\x9e\x03\xec\x06\x5f\x1e\x6a\x92\xca\xa4\x0c\xb9\x51\x01\x68\xd5\x05\x58\x9b\x0c\x82\xa4\xeb\x71\xea\x9e\xd6\x2a\xfe\xc8\x56\xac\x4a\xe5\x9d\xb8\xa3\x2a\x3d\xbb\xde\xe2\x97\x5e\x67\xe7\x55\xaf\x58\x50\xf2\x83\x41\x25\x3c\x3a\x96\xa5\xa9\xd2\x67\xfe\xb4\x4d\xcf\x46\x5a\x8a\xd0\xd2\xd2\x4c\x5e\x8c\xd7\x2f\xc6\xeb\xe6\xf3\xe0\xc6\x6b\xdb\xa7\x9e\x0b\xb6\x76\x5c\x7d\x8a\x01\x9e\xb5\x75\xa5\x7d\x48\x2b\x68\x44\x60\x90\xba\x37\xfd\xe0\x1b\x72\x1b\x1e\x91\x6a\x6f\x23\x59\xcf\x53\x20\x60\xd5\x4f\x6f\x31\x7d\x20\x3b\x68\xfb\x5a\xbd\xf8\xac\x73\xc1\xdd\x54\xbb\x17\xa4\x86\xa8\xd8\x6e\xcf\x65\x42\xee\x39\xbd\x4b\xa4\x55\x19\x3b\x4c\xc4\xdc\xa1\x54\x27\x3e\x1d\x81\x4f\x3a\x6f\x00\xe9\x58\x48\x17\x9f\xae\xbb\x41\x76\x28\xaa\x8b\xcf\x13\x97\xd6\xc5\xa7\xb3\x89\x9b\x74\x2f\xb3\xbb\x62\xb9\x0f\x5b\x6c\x77\xc7\xa5\x3d\xbe\xf5\xbe\x57\x95\x78\x7b\xfe\x6c\xfd\xc5\x7a\xbf\xf4\x3c\xa2\xf5\x3e\x22\xdc\x9e\x18\x38\x00\xc4\x16\xfd\xd8\xdc\xe6\xcd\xfa\x63\xe6\xc5\xca\x41\x95\x81\xcc\xa2\x9c\x37\xe8\x4b\x55\xbf\x36\x3d\x1c\x0c\x0e\x0f\xbd\x99\xdf\xe1\x67\x69\x26\xfd\xdf\x10\x26\x12\x99\xe2\xa6\xda\xf1\x95\x36\xc0\xf4\x2b\xed\x3c\x9e\x4b\xee\xbf\x15\x5f\xbd\xc2\xd8\xdd\xb6\xa4\xc3\x09\xee\x5e\x3a\x7b\x15\xa4\x1f\xa3\x80\x76\x5c\x26\xbb\x5e\x15\x1b\x5b\xdc\xa7\x14\x76\x0c\xbc\x07\xe7\xaf\xad\x8b\x63\xe3\xb3\x0b\x7b\xdd\xa1\x50\x36\x3e\x8f\x5c\x2e\x1b\x9f\x9d\x38\x6a\xa7\xd2\xd9\x2b\x16\xf7\x78\x05\xb4\xf1\x79\xa6\xc5\x54\xea\x4f\xa7\x62\xda\xf8\xec\x56\x52\xbb\xde\xb7\xe3\xd6\xef\xa5\xbc\x36\x3e\xdd\x8a\x6c\xe3\xb3\xef\x52\xdb\xf8\xb4\x84\x04\xd8\xc0\x2f\x78\xa7\xe0\x81\x4b\xd7\xa7\xee\xf9\x68\x58\x5e\x48\x45\xd5\x82\xa4\xce\xd6\xb0\x58\x11\x80\x19\x45\x60\xde\x3b\x2b\x0a\xcc\x3d\xe5\x6a\x4f\xf1\x03\x1d\x82\x2f\x59\xca\xcb\xb5\x25\x8b\xd7\x81\xed\x3b\xc8\x86\xe5\x32\x69\xf9\xcb\x4d\x1c\x2a\xa4\x12\xa4\xc9\xad\xab\x91\xe3\x61\x88\x9c\x3e\x4e\xb9\x73\xd0\xc8\x7c\x0c\xc6\x30\xb8\xe9\x73\xb5\x00\x7d\x63\x1c\xbb\x66\xb8\xc2\x2b\x0f\x77\xf7\x7f\xe4\x1a\x1e\x5b\xf9\xe3\x3d\x30\xbd\x47\xda\x13\xd2\x31\xc8\x8c\xff\x9d\x41\x81\xad\xce\x29\xac\x24\x88\xdd\xa1\xf0\x57\x26\x93\xe8\x62\xb9\xc6\x7e\x00\xea\x01\xb3\xbd\x61\xde\xc2\xde\x7e\x1d\x85\x07\xb0\xe8\x64\x1a\xef\xea\x78\x02\xb9\x1b\x41\x44\x07\xd8\x05\x78\xdf\x44\x65\xf0\x4a\x6d\xbf\x04\xa9\xd5\xa3\x36\xd5\x87\xee\x7c\x0a\x49\x13\x55\x2a\xab\x2b\x16\xf6\x97\x91\x87\x40\xa4\x94\x41\x78\x82\x97\xc2\x75\x09\x32\xa0\xfb\x8a\x93\x85\xe4\x04\xee\xa3\xaa\xba\x5f\x21\x7b\xe1\x12\x56\x09\x9e\xd5\xd1\xca\xa7\x6e\x0b\x0b\x2f\x85\xf3\x22\x58\xc2\x91\xd5\x28\x52\x6a\xa6\xfa\xd3\x92\xa7\xbb\x20\xc7\x33\xe6\x6e\xad\x79\x5a\x77\x4e\xd6\x91\x7f\xdd\x83\x6b\x05\x2f\x8b\x0e\x74\xff\xe0\x32\xb8\x66\xd4\x08\x7f\x9c\x12\xae\xee\xa6\x41\xbd\x27\x40\x38\x72\xfe\xbe\xe7\x26\xe8\xad\x8e\x21\x24\x8b\xc4\x85\xc9\xf2\x5a\x3e\x47\x1c\x16\x31\x0f\xbc\x52\xfb\xf6\x3f\x5e\xbf\xf5\xc6\xfa\x31\x9b\xc8\xaa\x04\x08\xaa\x3b\xce\x97\x36\x65\x19\x83\x3a\xe9\xbe\x06\xbb\x6d\x00\xd7\xbc\xb9\x9c\x5b\x64\xfe\xb3\x20\x9f\x7c\x52\x7a\x3e\x39\x25\xf4\xb8\x16\xaa\xe0\xca\xaa\x08\xc6\x52\x74\xb0\xcd\xaa\xef\xa8\x52\xe8\x1e\x19\x1f\x7b\x67\x13\x38\x71\xc2\xca\x7c\x99\x17\x67\x51\x69\x56\xcc\x02\x00\x02\x7e\x95\xcc\x89\x16\xb4\xd0\x33\x09\xd5\xf5\x13\x5a\xd0\x84\x9b\x85\x05\xb7\x51\x34\xb9\x85\x32\x3c\x8a\xb9\x2f\xf6\x48\x72\xec\xfc\xb5\x62\x08\xd6\xdd\x7e\xcd\x4c\xc9\x72\x3a\x03\x4f\x56\x6c\x95\x64\x54\x7b\x00\xac\xec\xef\xb4\x19\x4d\xd2\x85\xa0\x39\x4f\x42\xd2\x3c\x25\xe7\x5c\x73\xe9\xac\xb9\x38\xae\xc5\x7a\x72\x1d\xf2\x9e\xa1\x91\xf8\x3c\xa3\x3c\x27\x47\x9a\x31\x12\x10\x03\x7f\x71\xd5\xda\xd1\x78\xa1\x98\xed\x1e\x5b\x90\x65\x48\xde\x2d\x5c\xc6\x81\x8a\xd2\x85\x2b\x2a\x64\x94\x70\xdc\xd2\xd5\x9f\x3e\x0e\x5b\xb7\x7a\x66\x52\xc1\xc5\xbc\xcf\x5a\xc9\x44\x2a\xa3\xeb\xc9\xb3\xeb\xa1\x8e\xd5\x0e\xc4\x33\x97\xdb\x0d\x7e\xc8\xa4\x98\xc6\x21\xfb\x15\x96\x5a\xb2\x2a\xa0\x96\xc9\x9c\xa7\x25\xcd\x90\xa0\xba\xc9\x9c\x8f\x86\xd8\x9d\x4f\x67\xa6\x7f\xc7\xc0\xec\x82\x7c\xa7\x72\x6d\xf2\x1f\xe5\x4b\x6e\x39\x5c\x03\x01\x36\xce\x6c\x80\x26\x2c\x3b\xb5\x3b\xba\x80\xfc\x2e\xce\x85\xa4\x76\x33\xea\x73\x6b\xe1\x10\x01\xee\x11\xd0\x61\x7a\x67\xa1\x36\x85\x95\x18\xc0\x2e\x65\xa1\x0c\x58\xbb\x3c\x37\x0b\xf8\x28\xd7\x5d\x78\xed\xca\x90\x51\xbb\x47\x20\xc5\xfd\x59\xa0\x85\x09\xae\x3b\xc6\x91\xef\x15\x0c\x81\x76\x6c\xcc\x70\x04\x8e\xf5\xee\x18\x7e\xc3\x04\x53\x3c\x69\xa0\x4e\xe8\x3a\xa5\x06\x0e\x1f\x13\xb6\x5b\x3a\xd8\xac\x1a\x3d\x80\x8c\x37\xaf\x50\xe9\xc6\x55\x23\xec\x28\x7d\x1c\x7c\x17\x59\xe1\xa2\x7b\x13\x7b\x4a\xa9\x48\xfb\x34\xb3\xf8\x79\xfd\xf9\xdc\xf9\x45\xe3\xb9\xab\xf9\x05\xf8\xc2\x42\x5c\x84\x4c\xd4\x56\x4a\x59\x79\xdc\x20\x00\x7e\xcc\x52\x20\x53\x71\x0d\xc6\x3b\xab\x70\x3b\x14\xb9\xfe\x7c\xde\x23\x7c\xc0\x06\xfe\xaf\xd0\xd4\xd3\x49\x23\xa7\xe8\x55\x18\x3c\x45\x01\xbb\x61\x2a\xb1\x6d\x2b\xee\xfb\xb7\xdf\xda\x49\xda\x5f\x7f\xd7\xff\x6d\x94\xdb\xf3\x77\x7f\xb3\xfb\xad\x6c\x83\xfa\xdb\xd8\x35\x2d\x24\xb2\xff\xdb\xb5\x4b\xf4\xec\xd2\x40\xff\xcd\xd5\xb7\x62\xc2\x58\xc1\xf4\x5a\xc2\xa5\x3f\x4f\x11\xe7\xe1\xdb\x8a\x7d\xef\xed\x94\x00\xa6\x60\x23\x4a\xa8\x61\x02\x58\x83\x8f\xe1\x10\xd2\x60\x77\x57\xca\xd5\xce\xff\x08\x2c\x0c\x18\x6e\xd6\x23\x46\x4a\x38\xf4\x48\x58\xce\x04\x61\xbe\xfc\x25\xae\x15\xc0\x41\x9d\xdf\x9b\xe7\x76\x76\x58\x0b\xe1\x10\x91\x6b\xe7\x01\x73\xfb\x85\x90\xe6\x17\x61\xfb\x1b\x85\xb9\xe9\x5c\x72\x9f\xd3\xdb\x9e\x47\x81\x45\x12\x43\x96\xe9\xf1\x82\xe4\x5c\x1b\x7a\xcb\x06\x64\x64\xb9\x59\x7c\xb9\x86\xd0\x13\x04\x72\x41\xb2\x94\x94\xc2\xf0\x0c\x7e\xad\xc6\xb1\x53\x8e\xb9\xdc\x70\x42\x74\x09\x15\xc3\x0b\xc5\xfa\x9e\x6f\xba\x56\x4b\x14\xa7\x5a\x4b\x2f\x6c\xf6\x8c\xa2\xb2\x51\xa4\xd0\x15\xe0\x41\x85\x43\xaf\x25\x6f\x30\x3b\x4f\x29\x92\x8a\x57\x02\x30\xf5\x80\x5c\x01\x7b\xcc\xfc\x0d\x33\xea\x3d\xce\x1e\x2a\x58\xc2\xb4\xa6\x6a\xd1\x83\x5c\xe9\x3c\xe4\xd7\x76\x0e\x40\x40\x3c\x72\x2a\x30\x53\xb9\x62\x89\x14\xda\xa8\x32\x31\x58\xba\x6e\xac\xe4\x2d\x13\xc1\xfb\x30\x10\xa6\xe0\x06\x56\xb9\xe3\xc0\xf5\x99\x24\xc9\x8c\x8a\x69\x54\xfa\x25\xa7\x29\xc0\xfe\xdb\x20\x57\xf9\xf5\x58\x08\xd0\x89\x15\x65\xb8\x01\x50\x8c\x2d\xc3\x0a\x56\xdd\x3f\x0b\xe2\x15\xf7\x5e\x65\x76\xb5\x4b\xe2\xd9\x16\xda\xd5\x89\x7e\x91\x8e\x36\xc2\x3e\x48\x09\x7b\x76\x23\xcb\x99\xa1\x29\x35\x74\x07\x57\xb2\xf7\x55\xbd\x3a\x5f\xb2\x1e\x6b\x86\x86\x7b\x4e\xc7\xed\xbc\x80\x27\x0b\x1e\x87\x4b\xc1\x49\x9c\x79\xc8\x43\xfc\xb5\xb1\x38\xe5\xee\x1d\xd0\x43\x0c\xc4\x27\x5f\x10\xcc\x0e\xef\x47\x43\x72\x51\x55\x3b\xac\xc8\x49\xbb\x5b\xad\x8e\x06\x5d\x0b\xfa\x1d\x60\x74\x53\x5d\xbd\x25\x75\x77\xb1\x95\x82\x0e\x72\x09\x26\x0c\x57\x2c\x8e\x4e\x73\xa0\x2b\x05\x22\x79\x03\x88\x00\xe5\x29\x33\xba\x72\x78\x41\x3a\x6c\x89\x8b\xe3\x77\x4e\xfd\x05\x22\xed\x00\xeb\x34\xc8\xd5\x12\x17\x82\x5d\x4b\x47\x67\x2d\xe5\x7f\x10\xb8\xee\x62\xc3\xc6\x0c\xfd\xef\x65\xda\xc5\xec\xdd\x48\x6c\x5f\x0d\x51\x79\x81\xa2\x3f\xaf\x06\x33\x02\x7e\x03\x2e\xbf\x74\x2d\xc6\x0e\x89\xdc\x8c\xce\x77\xb7\x79\x55\x92\x58\x3f\x24\x05\x86\xcf\xf5\xe1\x73\xfd\xd7\xed\x6d\x83\x5d\x1c\x4a\xfc\xd3\xda\xb1\xa4\xfe\x91\x4e\x86\x58\x4b\x52\x46\x1d\xad\xa7\xcd\x8c\xe5\x81\xda\xbb\xeb\xc8\x70\x05\xec\x42\x26\x18\xb7\x74\xe2\x94\xfc\xa2\xc6\xdf\x9d\x1c\x15\xb4\x32\xf4\xf4\x3d\xf2\x6a\xda\xc0\x6d\x82\x0f\x48\xaf\x37\x3f\x6e\x0c\x06\x82\xc5\x6a\x8d\xc5\x7b\x14\x07\x61\xcf\x0a\x66\x0a\xec\x72\x3e\x90\xc1\x22\x96\x92\x59\xc6\x14\x2c\xc1\xa9\x69\x8d\xeb\x78\xc8\x25\x8a\xc6\xe1\x5e\x50\x87\x83\x74\x29\xd8\x5d\x10\x23\xa8\xc6\xac\x2d\xfe\xea\x8c\xb9\x2a\x74\x6b\xc7\x0b\x5e\xcf\x67\x62\x81\x53\xbf\x08\xdb\xb2\x4e\x38\xef\xc5\x15\xdd\x60\x2e\x34\xbb\xa3\x0b\x0d\x18\x5f\x69\x0b\xe1\xfb\x2e\x43\x5a\x35\xf0\x47\x36\xc1\xde\xad\xaf\xd6\x76\xba\x5c\xdb\xe5\x7a\x0d\xe2\x2e\xb9\x68\xe3\xcb\x54\x75\xd8\x58\x85\xa3\xf9\xec\x72\x1f\x07\x0e\x2f\x70\x0f\xdf\xed\x72\xa5\x9e\xf2\xf4\x7a\x08\x43\x78\x69\x7c\x0a\x7f\x78\x5e\x13\x6e\x1f\xc6\xcc\x62\x75\x15\x51\x0d\x18\x12\xf7\x5d\xe1\x92\x50\xa1\xd6\xb7\x90\x16\xd5\x19\xa0\x43\xd9\x2e\xc5\xc0\xa5\x04\xbe\x38\x80\xb4\xff\x54\x2c\x1c\x0f\x37\x33\xae\xd2\x7e\x41\x95\x59\xa0\x7a\xda\xab\x7d\x2d\xb8\xe7\x77\x5a\xf8\x8e\xf7\x42\xed\x32\x0e\xaf\x85\x30\x2c\xde\x97\xde\x73\x86\xff\xb5\x70\x7d\x8c\xf5\xb4\x0f\x00\x58\xb9\x9e\xab\x28\x1e\xde\xeb\x82\x4f\xb6\x9e\x34\x26\x1f\xbb\x72\x8c\xc6\xad\x2d\x12\xfe\xb8\xf2\x93\x8c\x1d\xa8\x03\x47\x07\xe5\xc7\x4e\xa0\x67\x75\x4e\x5a\x95\xea\x8e\xcc\x86\x4e\x2a\xf0\xee\x37\xae\x50\x90\x58\x38\x63\x50\xfc\xad\x78\x80\x70\x2e\xc8\x91\x90\x02\xcf\x0a\xb6\x3d\x46\xef\xa3\x35\xd6\x2e\x68\xe2\x2a\xbc\xd5\x0b\x6c\x46\x67\xd3\xb3\x05\x2e\x52\xbb\x59\x40\xab\x41\x1f\xd2\x65\x92\x30\x16\x34\xe8\xb8\xde\x4b\x75\x96\xdd\x94\x7d\xa5\x48\x2d\x21\x95\x8b\x36\x34\xcb\x2a\xcd\xd5\x81\x4b\x02\x67\xf3\xc6\xc5\x88\xe1\xd5\x42\x73\x9c\x12\x0f\x35\xc8\xd1\x63\xa6\x14\x09\xde\xfe\x73\xb3\xf0\x33\x88\x39\x10\x74\x03\x95\x41\xa3\x42\xcb\x27\x68\xc9\x8a\x44\xff\x00\x4c\x20\x46\xae\x02\x7a\x9d\x17\xb9\xb4\x0d\x96\xf2\x8c\x69\x72\x7b\x47\x55\x0a\x95\x70\x0b\x6a\x38\x26\xe2\xee\xd5\x86\x3d\x8a\xe6\x00\x75\xe8\x63\xe4\x3b\x0e\x0a\x06\x94\xd7\x90\x8d\xcf\x10\x5a\x1a\x99\x53\xc3\x13\x50\x5b\xf9\x24\xb2\x4b\xe6\x21\x6f\x61\xa3\x6a\x1f\xd0\xd5\x50\xff\xfd\x06\xef\x7a\x14\x23\xe6\x4e\x12\x9e\x5b\x99\x80\x42\x01\x8a\x49\x88\x31\xf2\x46\xd4\x4d\x33\xb5\x82\xcf\x77\x60\xc2\x8e\x5a\xa1\x42\x6c\xd5\x25\x0d\xc3\x07\x1b\x69\x30\x0e\xba\x20\x9d\x5e\x83\x65\x13\xdf\xcb\x62\xb5\x9d\x6d\x84\xac\x3d\xbb\x41\x77\xcc\xca\x02\x7a\x23\xca\xea\xc1\xaa\x39\x61\x51\x58\x4d\x52\xae\x1b\x95\x9d\x8f\x52\x25\x8b\xc2\x99\x43\xf2\xe3\xe5\x39\xc1\xcd\x84\x9a\x33\x1d\x95\x2f\x46\x4b\xf8\x94\x89\x50\x7f\xdb\x65\xbb\x80\xd3\xdb\xfc\x08\x78\x76\x91\x28\xf9\xd9\xd1\x59\x56\xcc\xe8\x31\xf9\xe4\x0a\xf5\x04\xfc\x0d\x7e\x7b\xad\x24\x26\x34\xb0\x78\x8b\xe6\x8b\xa8\xd3\xf2\x79\x11\x75\x5e\x44\x9d\x7f\x6f\x51\x27\x38\x8c\xed\x2a\xe6\x7c\x0c\x5e\x92\x8d\xb2\xde\xde\xe3\xa0\x72\xa3\x7c\x78\xbb\x45\xf8\xd6\x03\x53\xc0\xdd\xa8\x0d\xba\x4e\xdc\x03\x73\x0e\xdf\xa1\xf3\x45\x55\xe1\xd9\x44\xfe\x20\x95\x2f\x8a\x95\x36\x4a\xc3\x22\xd0\x3b\x26\xd4\x19\xd6\xb5\xd8\xd2\x13\xac\x2a\xd2\x0f\xc3\xf6\x2b\xf7\x8f\x16\xa9\xc5\xe3\x67\x27\xa8\x93\x7b\x84\x51\xc6\xcf\x33\xf6\x00\x69\x2c\xb6\xbb\x8f\x23\xb9\xa7\x9f\x23\xb9\x8f\xaf\x23\xd9\xa7\xbf\x23\x09\x5e\xd3\xf7\x39\x31\x1f\xbd\xbf\x76\xe3\xcc\x38\xe2\xb4\xe9\xcc\xd4\xa2\xf5\xc3\x38\x5c\xfb\x8a\x75\xee\xb6\x2f\x9c\x01\xb0\x97\xc5\x5e\xb7\xee\xb4\x82\xe2\x83\x57\x7a\xec\x4b\xc8\x8d\x1b\xf1\xfa\xaa\x7c\xb3\x91\x70\xfd\x9f\x17\x98\x66\x07\x4e\x5d\xdf\xf9\x46\x79\xc5\xe2\xe5\x04\xbf\x9c\xe0\xb6\xfd\x9f\xf2\x04\xa3\x5f\x71\x17\xb7\xf7\xba\x5c\x8d\x97\x78\xe4\x87\x92\xa9\x05\x91\x73\x16\xf9\xd3\x40\x12\x60\xcd\x53\xe7\x91\xe2\x6c\x0e\xed\x65\xd9\x47\xe4\xf9\x60\xd1\xb8\xfc\x62\x25\x23\x88\x10\xbb\x07\x2d\x6b\x0e\x55\x0f\x02\x46\x68\x79\xa0\x7b\xe2\x65\xa9\x88\x1e\xb8\xec\x60\xd5\x1b\xd0\xf7\xcf\xae\x2e\x76\x53\x00\xba\xdd\xef\x90\x5d\xee\x78\x96\x16\x7f\xb6\x61\x81\x08\x88\xf0\x4b\xbd\xfe\x51\xd0\xd2\xc9\x2d\x5b\xf4\xdc\x95\xb0\xcb\x6b\xee\x1b\xa3\x67\x43\x3d\x19\x67\xdb\x24\x10\xab\x00\xb4\x03\x55\xdc\x4d\xab\xc6\xa7\x7d\xfa\xc6\x7a\x2f\x0f\x84\xae\xc4\x77\x67\xb2\xdd\x29\xcd\x63\xfc\xd4\x50\xc1\xa5\x26\x05\xc7\x39\xc0\x09\x48\x69\xe7\x9d\x8a\x03\x1a\x80\x23\x35\x50\x8b\xae\x9b\x48\x76\x57\x0d\xf1\xf1\x80\xbd\xf7\x52\x03\x9a\xd6\xbc\x62\x6f\xd9\xe2\x50\xbb\x78\x3c\x29\xf4\x8c\x17\x3e\x8b\x3a\x50\x02\x87\xb9\xe4\x33\x5c\x95\xfb\x21\xf0\xcc\x0f\x45\x8f\x5c\x49\x63\xff\x77\x09\x5e\x33\x68\xc8\x93\x4c\x5f\x49\x03\x6f\x1e\x1d\x58\x38\xdd\x7b\x83\xca\xd9\xf0\x38\x58\xe0\xd0\xbb\x0b\x62\x21\xbc\x37\x06\x80\xc4\x5d\x40\x06\xb0\x72\x4d\x86\x82\x48\xe5\x61\x62\x7c\xda\x5d\xed\x86\xf0\x36\x97\xc8\x60\xba\x62\x0c\x07\x4a\xa9\x6a\x90\xdc\x30\x5c\xb0\xbd\x72\xff\x0b\xd8\x64\xc0\x58\x1d\x5c\x48\x20\x79\x2c\x35\x6c\xca\x13\x92\x33\x35\x85\xc8\xcb\x64\xb6\xfb\x06\x75\xa7\xdb\xf8\xec\x44\xbd\xe3\x0f\x77\xc6\x0c\x60\x75\xef\xc0\x89\xe7\xbe\x0c\x13\x47\x41\x16\x91\xd3\xc2\x22\xc5\x3f\x2c\x27\x80\x7d\xf9\x17\x24\x7b\xd6\x03\x72\xe6\x2b\x70\xc6\xbf\x39\x43\x5b\x3c\x8c\x1d\xc1\xca\xf1\x3f\x94\x7c\x4e\x33\x86\xae\x6d\x54\x84\xbc\x98\x72\xb2\xc4\xa6\x7b\x2e\xe3\xb3\xa5\x52\xe1\xe2\xe4\xe0\x96\x2d\x0e\x7a\x4b\x88\x74\x30\x14\x07\x55\xf8\x73\x0d\x75\x02\x43\x03\x9b\xfa\x01\xfc\x76\xb0\x6f\xce\xfe\x44\xe2\xfc\x0e\x58\xe2\x8c\x40\xe7\x19\xd5\xba\x5b\xe4\xe8\xfa\xfc\x63\xa3\x68\xcc\x2a\x82\xc7\x39\x2c\x26\xe8\x10\xb5\x3f\x5b\x15\xf8\xd1\x77\x77\xae\xe9\x04\xa5\xb9\x2b\x1f\xd2\x3e\xf5\x41\x93\xaa\x86\x01\x42\xa0\xc4\x5d\x1c\x6b\x56\xdd\x49\xae\x81\xd7\x67\xb8\xf5\x90\x93\x38\x5f\x22\xd7\xa0\xe2\x72\x1f\x3a\x21\xa4\x21\x5c\x24\x59\x99\x62\x9e\x47\xe8\x0a\x0a\x72\x57\x91\x7e\x07\xe0\xdc\x03\x79\x3e\x87\x01\xbc\x3c\xe2\x6f\x3f\x97\x7c\x56\x9b\xd7\x54\x70\x35\x18\x6e\x7c\x10\x56\xfb\x5e\xeb\x64\x8b\x87\x60\x3d\x9d\xe5\x79\x5d\xc6\x78\xcb\xc7\x8a\x91\xf3\x19\x15\x82\x65\x51\xbc\xa8\x33\x64\x84\x12\x4e\x20\x78\xb8\xc2\x4d\x87\xf5\xca\x4d\x9e\x8e\x89\x10\x9d\xbc\xf7\xea\xb5\x3f\xee\x42\x4a\x7b\xab\x84\xed\xb2\x1a\xce\xe4\x1d\x49\x25\xb9\x83\x5c\xfe\x73\xcb\x8e\xe0\x26\x52\x7b\x46\x16\xcd\x14\x7c\x03\x12\x99\x17\x4a\xe6\x5c\x7b\x0f\x70\xb7\x71\x7b\x0d\xb0\xcc\xca\x16\x79\x73\xd6\x25\x5c\x79\x7b\x4e\x0c\x55\x53\x66\xec\x30\x44\x94\xf9\x98\xb5\x0e\xff\x7c\x88\x84\x5d\xcf\xbd\x42\xd4\x7e\x8b\x3c\x21\xe8\xbf\xfb\xee\xaa\x73\x29\xd8\x55\x3b\x78\x27\x55\x96\xde\xf1\x14\x2f\xbd\x34\x39\xb2\x03\x1f\x3f\xff\xba\xad\x77\x77\x3c\xbd\x1f\x00\xbc\x67\x8f\x05\x00\x01\x08\xb8\xca\x45\x1c\x72\x4a\xc3\x07\x8e\xc9\x25\xc7\xd8\x18\xfb\x17\x66\x6d\xc9\xc7\x5c\x54\x51\x58\x61\x33\x80\xae\xda\xf3\xe0\xb5\x09\xcd\x0c\x46\x35\x40\x60\x80\x34\x33\xa2\x79\x5e\x66\x86\x0a\x26\x4b\x9d\x2d\x5a\xa3\xc5\xd3\x00\x79\x92\xb1\x2f\x88\xc5\x5d\xf8\x55\xe8\x54\xe7\x5b\x53\x8c\xfd\xf2\x30\x5f\x62\x5c\x95\xbb\x50\x7a\x12\x98\x58\x08\x96\x61\x5f\x58\xe2\x3c\x5b\x8b\xac\x9c\xf2\x2d\xce\xfb\xff\x66\x29\xbe\xab\x24\xca\xa5\x66\x55\x64\x7b\xdb\x22\x26\x4f\x97\x91\xfb\x41\x99\xf5\xcd\xea\xb4\xdb\x29\x2b\x98\x48\x21\x23\x58\x84\xab\x38\xdd\xbd\xc2\xca\x65\xd7\xda\x9d\x42\x5d\x7e\x31\x8a\x5a\x72\x93\x43\x50\xa5\x4b\xd6\xc5\x27\x84\x8a\xf6\xa4\xe3\x79\x64\xc1\x25\xff\x76\x3c\xfa\xc1\x8b\x24\xdf\x2f\xf7\x3a\x52\x51\x87\xf6\xba\xee\xb0\xba\x22\x47\xba\xfb\x4a\xec\x59\x7a\xdf\x5c\xe9\x7a\x45\x7a\xe8\xc6\xac\x5e\x8a\x47\xfe\x28\x12\xa7\x4f\x20\x26\xb5\x4b\x3a\xa1\xb7\xd8\xa3\xa1\xd9\xba\x97\xcd\x62\xc4\x1b\x34\x59\x87\xb7\x11\x49\x87\xdc\x9d\x6e\x20\x17\x57\x43\xb4\x85\x65\xe5\xc2\x55\x0a\xb1\x8d\x58\x3d\x44\x3e\x6c\x6a\xa8\x66\xa6\x9d\x55\x63\xd9\x2d\xcd\x73\x7a\x1c\x05\x13\xb0\x83\x43\xb4\x0f\xcc\x24\xfd\xdf\x39\x99\x40\xd4\x5a\x5a\x69\xc0\x03\xc4\x67\x1c\x62\xe1\x9a\x16\xc7\x48\xed\x36\x24\xd4\xb4\xae\x16\xd3\x8a\xde\xbb\x19\x7c\xfa\xd4\xb9\xa4\xa8\xed\xd2\x58\xf1\x20\xe4\x1b\x28\x05\xff\xa1\x8c\x25\x75\xc8\xcd\x10\xd6\xe8\xda\xef\x6b\x21\xd3\x84\x55\x26\xa2\x0b\xae\x6f\xbb\x24\xcd\xfa\xe6\xfc\xb2\xde\xb9\x8e\xf0\xdf\x9c\x5f\x12\xf7\xb6\x95\x15\xa7\x8b\x19\xe7\xbe\x39\x9d\xa6\x09\xab\x4c\xa3\x29\xd7\xb7\x8f\x5e\xb0\xbb\x48\xaf\xb6\xf9\x19\x3f\xb6\x95\xc9\xe7\x15\x89\x92\xdf\x2c\x64\x49\xee\x5c\x24\xbd\x13\x6a\x6f\x78\x71\x4a\x2e\x85\x2e\x15\xab\x6e\x3f\x9b\xf2\xad\xe5\xa4\xcf\xa9\xb0\xf7\xbd\x70\xe3\x39\x9b\xb9\x0a\xaa\x0c\x48\xb6\x9d\xf3\x88\x41\xaa\x7c\xd7\xd9\x2f\x61\xcb\xd6\x0f\x27\xde\x07\xad\xe7\xa2\x84\x43\xb2\x2d\xdf\xc8\x6e\x76\x94\x18\x23\xde\xde\xb7\x21\x35\x0d\x39\x49\xd9\xfc\x44\xa7\xf4\x75\x0f\x3e\xe3\x43\x59\x4d\x6d\x4e\x54\x93\x83\xd7\x07\x03\x32\xe2\x39\xcf\xa8\xca\x16\xb5\xdc\xc0\x55\x3b\xcb\x02\xfc\x80\x70\x99\xf5\xea\x80\x1c\x49\x05\x23\x27\x54\x90\x8c\xf9\x38\x19\x77\xa0\x16\x28\x02\x1e\x3f\x36\x15\x21\x0f\x6a\x23\x44\x82\xd2\x15\x0d\x3e\x21\xbb\xa9\xa5\x41\xb9\xa8\x28\x36\x17\x96\x8c\x0f\xc8\xa7\x55\xa5\xaf\xe1\x6c\xf8\x16\x4f\x05\xca\x07\xd5\xcd\xee\x59\x37\x7f\x49\xa1\x7b\x3a\x30\x6d\xd7\xea\xa6\xdc\x7c\x64\x85\xec\x24\x00\x60\x97\x86\x25\x8c\x1b\xfb\x42\x6a\x0e\xf9\x32\xa9\x81\xea\xb3\xca\xf0\xa4\xcc\xa8\x95\x89\xd1\x0e\x36\x20\x17\x97\xd7\x1f\x2f\xcf\xcf\x6e\x2e\x2f\x4e\x89\x1f\x89\xc7\xd2\xda\x80\xdc\xc4\x59\x84\x22\x97\x57\x97\xaa\x25\x7c\xab\xe7\x88\x0f\x15\x55\x1a\x42\xc8\x0d\x41\x05\x19\x0a\x6e\xaa\x2c\xbd\xe8\xa4\x95\x49\xe1\xdc\xae\x6c\x6f\x67\x87\x9b\x72\x74\x9d\x10\x6e\x30\xfb\x73\x7d\x34\x38\x1d\x98\xf1\x33\x4c\x65\x8b\x16\xf7\x00\x92\x43\x05\xdc\x7d\xc9\xee\x3e\x31\x67\xc7\xe3\x71\x83\x06\xf6\x2a\x37\x2a\x52\xfc\x90\x0e\xdc\x67\x45\x59\x51\x28\x99\x58\x5e\x72\x38\x38\xf4\x82\x42\xb6\x94\xfa\x3d\x0c\x1a\x27\x7e\xaa\xe3\xd6\x80\x90\x0f\xde\x85\x19\xa2\x56\x57\x67\x91\xc7\x54\x02\x51\x2e\xf2\x06\x86\xfa\xd2\x00\xe5\x38\xfe\xa8\xcb\x14\x35\xe5\x73\x26\x70\x61\xfb\x25\x48\xfe\xf3\x1d\x61\xfe\xb1\x9a\xf7\xa7\x8f\xef\xf6\x3b\x25\x3c\x67\x1d\x27\x74\x2e\xf3\x1c\xf3\x07\xcd\x42\xf4\x59\x15\x40\x16\x4e\xfb\xde\x14\x16\xcc\x84\x34\xd9\x82\xd4\x0d\x3a\xe5\x3b\x35\x14\x94\xf0\xda\x79\xe3\x8b\x4a\x4e\xed\x9e\xe6\xd7\x25\xdd\xd2\x3e\xa5\x86\x23\xd9\x27\x61\xc6\x27\x1f\x2f\xcf\x2e\xde\x5f\x0e\xf2\xf4\xd1\x49\x06\x13\x69\x21\xb9\x30\x7a\xbb\x5a\xb2\xad\xa8\x49\x7b\xb2\x12\x3e\xda\x95\xeb\x5e\xfa\x8e\xb1\x8b\x83\x1f\x2d\xca\x55\x96\x32\x43\x79\xa6\xa3\x7d\x34\xb2\x90\x99\x9c\xae\xce\xf9\xdb\x61\x83\x7e\x86\x99\x47\xfa\xb4\x6f\x77\x7e\xbf\xf2\x7a\x9b\x52\x0d\x75\x78\xf8\xd2\x0c\x90\x63\x30\xac\x35\xc8\xc1\x50\x51\xe1\x99\x2e\xf7\x41\x04\xaf\x25\x18\xa0\x36\x08\x87\xd8\xa7\x71\xab\xf2\xa2\x45\x65\x52\xda\x4a\x64\x0f\x0d\xba\xed\xc2\x98\xa5\x41\xdb\x6b\xe1\xd4\x61\xf6\x07\xd7\xa7\x4e\xe4\x0a\xc5\xfa\x21\x91\x0f\x54\xef\x90\x2a\xe2\xae\x31\xcd\xf3\x86\x17\x6f\xa6\xc1\x56\xd9\xa2\x69\x80\xa9\x64\x9f\x60\xb5\xc2\x38\xf4\x2c\x5b\x54\xa9\x01\x9d\x2a\x4c\xa7\x98\xa0\x47\x39\xfb\x6d\xa1\xf8\x9c\x67\x6c\x0a\x49\x40\xb9\x98\x46\xb5\x14\x7d\xc4\x3a\x24\x87\x67\x4b\xf3\xb2\x5b\xa5\x4d\x9c\xfa\x19\xf0\xe2\xea\xc3\x0d\x24\x96\x85\x4b\xc1\x7b\x0b\xd8\xf6\x83\x50\x68\xa4\xdf\xef\x83\xde\x7f\xf4\xbd\x95\x15\xd3\xec\x98\x7c\xc7\xdc\x77\x24\x24\xbf\x55\x50\x6d\x66\x26\x43\xf6\x51\x98\x6b\x05\x59\x40\x47\xbc\x34\x77\xad\x4e\x6c\x4b\x2b\x18\x21\xbb\xa9\xb5\x87\xe2\x9a\x98\xce\x0f\xef\x7b\x1e\x5f\xae\xdc\x23\xe9\xdf\x99\xca\x79\xab\xe8\x2a\xfc\x0c\x37\x32\x85\xa3\x87\x94\xe8\x45\x9e\x71\x71\x5b\x65\x8c\x9a\x48\x8b\x43\xe8\xa3\xcf\xc5\xad\xc7\x58\xc5\x68\xb6\x9e\x52\xee\x82\x1f\x7b\xa5\x92\x66\x07\xe3\xdd\xcd\xa2\xc0\xbb\xf0\x70\xec\xdd\x55\x6f\x4c\xe2\x0e\x0e\x9e\xdd\x7a\xb9\xee\x56\x69\xfd\x70\x38\x3a\x1f\xd5\xaa\x84\x5a\x9d\x0e\xde\x3d\xa6\x71\x79\x1d\x4b\x80\xe5\x3c\xa1\x64\xc7\x7f\xd8\x76\x53\xdb\x27\x59\xb9\xbd\x0d\xba\xf9\x5c\x4b\x65\x68\xb6\x27\x22\x90\xcc\x68\x71\x56\x9a\xd9\x05\xd7\x89\x9c\xb3\xce\xaa\xce\xdd\x0c\xb3\xf6\xfa\x84\x71\xdc\x6f\x3a\x8e\x46\xce\xff\x70\x76\x4d\x68\x69\x77\xd1\xb8\xb4\x92\x7b\xbd\xe2\xf6\xf3\x1f\xa1\x43\xfd\x5e\x66\xef\xc6\x7a\xf0\xb9\xbf\x5c\x08\xec\xf1\x42\x00\xce\xf8\x73\xbe\x04\xe0\x82\x1b\x4e\x8d\x6c\x59\xcb\xaa\xae\xbf\x97\xda\xc8\xdc\xa1\xe7\xd0\x0f\x04\xb7\xb2\xc0\x70\x6b\x63\xd7\x73\xf4\x83\xa0\x0d\xc0\x19\x0a\x2b\x16\xd3\x84\x35\x3c\x00\x7b\x90\xb9\x11\xc7\xe6\xa1\xcd\x6f\x9d\x67\x26\xa4\x7c\xca\x7e\x77\x5a\xcb\xa4\xbd\x54\x08\xc1\x1b\x15\xaa\xe4\xfa\x7b\xb5\xc4\xf0\x1f\xba\x9e\x6c\x67\xf6\xc2\x55\xfd\x6f\x49\x33\x84\xc6\xd5\xbe\x6d\x44\x75\xc8\x76\x9c\xa4\xdf\x4f\x0f\xf3\xab\xa0\x35\x97\x1a\xb3\x45\x61\x0b\xa3\xa8\xd0\x76\x23\xea\xba\xd1\xa1\xbb\xda\x39\x24\x47\x26\x29\x5a\x97\x6b\x7f\x20\xcf\x6c\x9c\xaa\x83\xfb\xbb\xe0\x91\xdd\x76\x56\x0f\x72\xdb\x02\xb8\xdb\xd5\xb4\x51\x5b\x08\x32\x5b\xf2\x8e\x6b\xe3\xd3\xe2\xc3\x0b\xae\x5d\x4e\x57\x90\x74\xae\xad\xea\xc4\x8b\xbf\xd2\x34\x55\xa7\xc8\x49\x7c\x49\x5d\x05\xf2\x8e\xcf\xbb\x44\x45\xb8\x8f\x3b\x32\x8b\xc2\xa5\x66\xbb\x39\xbf\x26\x58\x15\xe3\x37\xbf\xc2\x72\x9e\xff\xf9\xcb\x5f\xbd\x6a\xbd\xa1\x4f\xe7\xfe\xbc\xa3\xe5\x60\xef\x37\x36\xcf\xc2\x6b\x0e\xc4\x05\xf4\x97\x03\x7a\xe8\xce\x2e\xe2\x91\xdd\xd4\x40\xa5\x77\x13\x2a\x5e\x3c\xcc\x9e\xd4\xc3\x8c\x84\xa0\x07\xa4\x09\xf7\xa7\x2a\x48\x50\xae\x9f\x1f\x41\xd9\x0a\x8b\xed\x58\x53\xc7\x16\x3c\xbf\x56\xbf\x8b\x6e\x9f\xc0\xe7\xfa\xe2\x6a\xf4\xd7\x77\x67\x6f\x2e\xdf\xc1\x2c\x9d\x5f\x95\x45\x03\x2e\x76\xf6\x23\x6a\x8f\x56\x6d\x34\xc1\xed\xc0\xe8\x76\xcf\x71\xf5\x76\xd4\x50\x94\xed\x9b\x8e\x97\x1b\xf7\x95\x96\xc5\xa4\xd5\xda\x1f\xd7\x74\x05\x65\x23\x98\xda\x5f\x88\xc3\xce\x16\xae\x28\x25\x53\x4d\x19\xb2\x3b\x85\x33\xbc\xb7\xbe\xb2\x75\x07\xc8\x33\x30\xe2\xdb\xf5\x22\x0c\xf6\x6e\xbe\x7f\x20\x58\xb5\x65\xf1\xaa\x7b\xec\xcb\xe1\x08\x7a\xf9\x4b\x1e\x7b\x48\xd1\x23\x47\x59\x7a\x6d\x29\x35\xd3\x21\xc9\xfd\x33\xc5\x94\x62\x55\x46\xdc\x2e\xd4\x6b\x65\x4a\xdd\x5a\x3d\xa8\xda\xc5\x46\x2d\x62\x60\x5d\x0e\x69\x7f\xb7\x4f\x9d\x7a\xa9\x0b\x9a\xec\x35\xf3\x63\xf5\x0a\xdf\x40\x48\xf5\xe3\x13\x40\xf8\xec\x1e\x1d\x4a\xc3\x78\x5d\x11\xf9\xdc\x77\x6c\x06\x72\x75\xda\x21\x5f\x4f\xa1\x90\x3e\x48\x2e\x8e\xf8\x7a\xe2\xed\x23\x8f\x42\x3d\xbf\xdb\x51\x75\xd9\xb7\xda\x52\xcc\xa4\x91\x62\x67\x27\xf1\xeb\x15\xdd\xeb\xe7\x18\x5b\x9c\x57\x45\x42\xa2\x0a\x7d\xe0\x61\x18\x0c\xfa\x56\x8c\xf3\x5c\x42\x0a\x6f\xda\xaf\x1b\xf6\x1f\x5d\xf2\x48\x87\x17\x7b\x3a\x73\x3f\xa6\xe0\xc3\xae\x26\xd8\xbd\xba\x50\xa4\x9d\x23\x2e\x86\x17\x4e\xee\xf2\x51\x15\xda\xa1\x1d\x59\x8f\x77\x7b\xe3\x8b\x52\x99\x3b\xa9\xba\x87\x1a\x5f\xd7\x3a\x36\x6e\xf5\xdd\x6f\x4b\xd1\x44\xcf\xf1\x8c\xe0\x1c\x9f\xf8\x9c\x8c\xe0\xc2\xb4\x91\x2b\xba\x79\x32\x82\x17\xfb\x03\x1c\x9e\xa7\x3d\x34\x3b\x72\xa1\x87\x0d\x49\xdd\xab\xe0\xed\xb1\xac\xe3\x0a\x3f\xbb\x6e\xce\x40\x60\xf7\xa6\x22\x12\x34\x1c\x42\x37\xfc\xde\x88\x82\x92\x58\xb7\xaf\x03\x3d\x18\x1a\x96\x63\x81\x5f\x9a\x65\x16\x96\x52\xc4\x69\x83\x5d\xd8\x69\x8f\x60\xe6\xdd\x9c\x16\xbe\x5a\xb2\xbc\x13\x77\x54\xa5\xe4\xec\x7a\xb8\x9f\xa3\xdf\xc1\xb5\x18\xf1\xa7\x5d\x26\xa8\x7a\x59\x45\x99\x32\x32\xe6\x46\x57\x05\xcf\x98\x89\xb5\x41\x4b\xde\xc2\x1d\x91\x3d\xa4\xf6\x40\xba\xef\x45\xdc\x4f\x10\x99\x18\x9a\x35\x0a\xd0\xbf\x7a\xf5\x0a\x8d\x57\xaf\x7e\xfd\xeb\x5f\x63\x11\x9a\x94\x25\x3c\x5f\x6e\x08\xad\xfe\xeb\xf5\xeb\x01\xf9\xe3\xd9\xfb\x77\x50\x10\xaf\x30\x1a\xd3\x5d\xe0\xc8\x58\x92\x3b\xea\xac\x7b\xe4\x7f\x46\x1f\xae\xaa\x52\x1a\xf5\x5f\x5d\x35\x63\xb7\xbc\x01\xb9\x88\x5c\x80\x62\xf3\x14\x35\x33\x57\xfb\xc5\x10\x3a\x99\x60\x99\xc7\xb1\xaf\x32\x8a\x47\xca\x47\x36\x43\x49\x66\xac\xd1\x60\xb7\x3f\x03\xdf\x24\xab\x48\xa3\x31\xcf\x07\xd7\xa3\xab\x15\x8c\x15\xe8\x1f\x4c\xa5\x87\x45\xbd\x27\x1a\x2a\x35\x54\xa9\xe0\x14\xd3\x56\xa6\x74\xa5\xe7\x70\xb0\x30\x75\x3b\x89\xa7\xbc\x83\x69\x5d\x41\xa0\x86\x58\x3e\x71\x6d\x55\x1d\xfc\x7b\xbc\x56\xdc\xe6\x1c\xfb\x40\x77\x22\x75\x9e\x1f\x66\x83\x7b\xe5\x42\xd6\x03\xb9\x20\x34\x93\x50\xe5\x28\x6c\x6d\xc5\x8f\xa2\x2a\xe3\xdb\x97\xd2\x39\xf3\x5e\xd7\xec\xab\x48\x85\xde\xd3\xd6\x35\x4e\xea\x26\xed\x28\xb4\x9f\x8e\x65\x69\xfc\x15\x30\x8e\x89\xe5\xfd\xb0\xc6\x74\x87\xcc\x81\x3b\x24\x1b\xdc\x25\xe9\x6c\xe7\xbc\x95\x75\x32\x5f\x13\x02\x7a\x84\xd1\x64\x46\x6e\xd9\xa2\x8f\x84\xa9\xa0\x10\x8d\x12\xaa\x48\xb9\xdc\x8e\xf5\xfb\x92\x84\xa5\x56\xb2\x75\xc0\xf2\x37\xea\x15\x16\x85\x68\x16\x2f\x3e\x6a\x27\xe9\xb8\x9c\x91\x22\x52\xe0\x7d\x62\xe2\xa8\x0e\x6b\x48\x12\x89\x45\x98\xeb\x51\x17\xf6\x7c\xb1\xd4\x76\xd3\x9b\xbe\x5c\xb9\x11\x58\x42\xe7\x58\x55\x29\x96\x7a\xbb\xa2\xc3\x4e\x6c\x83\x0f\x52\x9f\x8a\x37\x72\x45\x80\xd2\x66\xae\x9c\x8d\x6b\xeb\xa1\x14\x00\x51\x8b\x0a\xd1\xcc\x94\x0e\x34\x58\x37\xa9\x14\x19\xd3\x9a\x70\x58\x61\x4e\xd5\x2d\xf3\x49\x49\x68\x36\x20\xd7\x76\x92\x21\xf3\x11\xe6\xc0\x9d\xa3\x1b\x99\x3d\xa3\x71\xb8\x8b\xfd\xc8\xe1\x60\x70\x88\x14\x7c\x45\xf0\x4b\x07\xcc\xd8\x2d\x81\xea\x0e\x89\x53\x1b\x25\x8d\x0b\x8d\x69\x60\xad\xd4\x06\x69\x8e\x25\x44\x71\x99\x99\xe7\x50\xb4\x75\xfa\x9d\xe5\xe5\xec\x90\xed\x73\xd7\x24\xd5\xbb\xa4\xa8\x6e\x75\x9d\x50\x7f\x76\x4f\x4d\xbd\x53\x62\xea\xa5\xda\xca\x6e\x8b\xdc\x31\xeb\x9e\xa9\xf7\x1e\x89\x94\xf3\x4e\x49\x3e\xfd\xb3\x2e\x27\x4c\xde\x46\xea\x73\xd5\xca\x32\xf6\xa3\x12\xf3\x86\x93\x55\xb5\xb6\x7c\xb8\x5b\x25\x27\x07\xa2\x69\x21\xf0\xf4\xf2\x5d\xb7\xea\x1c\xa4\xb3\xc0\xd7\x7c\xba\x08\x80\xcd\xa7\xdd\xa5\x5c\xf3\x59\x3a\x4d\x81\xba\x17\x91\x4b\x3a\x80\xd2\x48\xc8\xc4\x6c\xc2\x91\x1b\x40\xf9\x77\xc7\xa3\xa8\x95\x55\xb4\xcc\x4a\x13\xc2\x72\x56\xb0\x06\x18\xd4\xe7\x6d\xc6\x60\x48\xdf\x2c\x62\x14\xc0\x22\x91\xfe\x76\xe5\x19\xf8\xec\x74\xa4\xbb\x56\x18\xfb\xc9\x3a\x6e\xdc\x03\x86\x5e\x66\xd8\x19\x8e\x23\x97\x0d\xc1\x7b\x10\xd7\x64\x18\x70\xde\x30\x1a\x05\x24\x2f\x8e\xb8\x4a\x3d\x9d\x57\xd6\xce\xb0\xe2\xa6\xe8\xac\x08\x67\xd7\xc3\x3d\x4a\xf4\xd1\xa8\x3f\x69\x99\x1e\x4c\x37\xb5\xba\x29\x17\xd5\xca\x9d\x81\xd7\x52\x98\x67\x2f\x1a\x2e\x4d\xfb\xad\xa5\x8b\x91\x59\xb5\x91\x94\xcd\x95\x70\x0f\x14\x34\x4a\xe4\xe6\x2f\xf8\xe0\xbc\x3e\x77\x31\xf2\x11\x45\x42\x80\x47\xa7\x02\xd0\xfe\x59\x2e\x41\x06\x8b\x25\x23\xa8\x4d\x82\x3a\x5e\xa4\x2c\x16\x32\x3d\x75\xa5\x72\x85\x90\x58\xf5\x4b\xf7\xb0\xb8\x89\xee\xa1\x12\x68\x05\x85\xe8\x5a\x56\x45\x06\xf0\x9d\x45\x83\x9d\xca\xd4\xdc\xa7\x50\x8d\xdd\x40\x58\xf9\x75\xd7\x5d\x24\xf7\xac\x3b\x43\x22\x2e\xb4\x5b\x25\x8b\xba\xb1\x1a\x47\x0a\x75\xac\x93\x19\xcb\x29\x26\x85\xf3\xcb\xb3\x54\xe6\x4e\x71\x63\x18\x66\xf5\x61\x2a\xd7\x44\x4e\x7a\xb5\x0a\x71\x07\xf3\xd7\x07\xbb\xd4\xf3\xb8\x67\xc9\x15\x52\xed\xc2\x1e\x80\x71\x5d\x93\xce\x2c\x5e\x83\xba\x90\x41\x26\x47\xd1\x30\x32\x58\x06\x33\x47\xe8\x3d\xfa\xc2\x9f\x52\x45\xea\x05\x21\xe1\x45\x45\x7a\x51\x91\xf6\xa2\x22\x45\x8c\xc5\x13\x1c\x07\xa8\x58\x6d\x8a\x33\x4a\x79\xdd\xa9\x8a\xea\x89\xb2\xc4\x58\xd4\xf4\x5a\x93\x54\x75\x2b\x9a\x55\x7d\x0e\xbd\x2e\xe5\xf0\xb8\x34\x93\xfe\x6f\x08\x13\x89\x4c\x71\xf3\xed\xf8\x4a\x1b\x10\x6d\x2a\xf5\x23\x9e\x4b\xee\xbf\x15\x5b\xe2\x60\xec\x5d\xb7\x6e\x27\x3a\xe0\xef\xea\xde\xee\x89\xc1\x57\x6c\x3d\x04\xc1\xba\xe5\x87\x18\x79\xc7\xdf\xab\x5b\x42\xac\x05\x0c\xc8\xed\xcb\x9c\x92\x23\x7c\x39\x48\x8a\xb2\xe7\x1a\x0c\x72\x96\x4b\xb5\xe8\x85\x46\xf6\xc7\x5a\x2f\xd7\xe2\x18\x64\x82\xa4\x54\x56\xd9\xcb\x16\x3f\x56\xe9\xc0\x03\xe8\x91\x85\x83\xb0\x4f\xdd\xaa\xc1\xc4\x4f\xc3\xfd\x2e\x24\xba\x02\x55\xbe\xaa\x8e\x33\x09\xc9\xf7\x74\x2f\xa8\xa8\xf0\x96\x89\x39\x99\x53\xd5\xa1\x74\x75\xfc\xdc\x53\x1e\x48\xf9\x9c\xeb\xdd\x0a\xd6\xad\xd4\x9a\xb9\x4b\xeb\x25\x4b\x53\x94\xc6\x51\x4a\x7f\x2a\x7c\xa8\x77\x38\x0d\x0d\xa1\xe8\xf5\xc1\x4e\xd3\xf8\xd1\x14\x85\xc5\x67\xc7\xd2\xb0\xf8\xdc\xb7\x40\x6c\x7d\x94\x9d\xd1\x66\xaf\xe5\x9e\xfd\xe3\xd1\x62\x1f\xe7\xb0\x62\x91\x55\x7e\x02\x2f\x9c\x3e\xd2\x41\x43\x7f\x90\x3d\xda\x6a\x5c\x22\xf4\x9f\xb2\x99\x66\x4f\x57\xaf\x2e\x52\xef\xdf\xfc\xde\x75\xe4\x72\xe2\xbf\x5c\xba\xb6\x42\xbe\x97\x4b\xd7\x97\x4b\xd7\xb6\xcf\xcb\xa5\xeb\x8b\x45\xa1\xfe\xfc\xa8\x2d\x0a\x2f\x97\xae\x2f\x97\xae\xf7\x83\xe1\x83\x5c\xba\x3a\x31\xae\xba\x71\x7d\xd4\x0b\x57\x57\xd6\xe5\x2c\x49\x64\x29\xcc\x8d\xbc\x65\xad\x6f\x10\x5a\x09\xf3\x4b\xa3\x3f\x9e\x64\xdf\x5d\xb0\xe8\x24\x1e\xec\x22\x18\xd0\x32\xe5\x56\x78\xdf\x19\x81\xce\xdc\x00\x5e\x4e\xb7\xa4\x58\xa4\x2c\x0d\x23\xfb\x43\x6a\x2c\xac\x07\xe4\x8c\x28\x96\xf0\x82\xbb\xea\xdd\x14\xdf\x23\x86\x85\x2c\xfb\xdc\x68\x96\x4d\x5c\xb6\x73\x11\x17\x85\xa9\x44\x70\x47\xe1\x56\x7e\x06\x79\x8e\xf4\x49\xb2\x7d\x85\x1c\xc5\xbe\xf7\xcc\xca\xcd\xe6\x26\x1e\x21\x36\x8a\xc0\x52\x6a\xb5\x68\xe0\x63\x05\x77\x11\xc8\x0f\x7d\xb0\xd9\x97\x82\x2b\x40\xde\x11\x4b\xa4\x68\x53\x11\x73\xcd\x06\x5d\x36\x47\xf2\x3b\xe5\x2c\x9a\x58\x00\x3f\xd4\xbd\x9c\xd3\x8c\xa7\xdc\x2c\xc2\x5d\x9b\xab\xb2\x44\xf1\xc4\x84\x6d\xd4\x15\x18\x09\x2d\x0a\x25\x69\x32\x63\x3a\x9a\x37\x8a\x1c\x2e\x10\x2b\x78\x9d\x63\x25\x30\x90\x3a\xa0\x8f\x65\x7d\xd9\x82\x28\x69\xfc\x75\xf9\x9a\x0f\xde\x44\x83\x41\x77\xe4\x5f\x46\x2d\xe0\x4e\x5d\xc6\x43\xe0\xac\xf8\x24\xfe\x43\x13\x99\xa5\x3e\xbf\xc7\x6f\x5e\x59\x31\x2f\x71\x38\x68\xa9\x1c\x64\x80\x30\x92\x64\x96\x15\x5b\xca\xb7\xbe\xf3\x2f\xbf\x26\x33\x59\x2a\x3d\x88\x83\x84\x5e\xc3\x3b\x54\xd1\xbc\x98\x68\x48\xc6\xa8\x36\xe4\xf5\x2b\x92\x73\x51\x5a\x0e\xd4\x19\x6d\xba\x4b\x36\x91\x4c\xf3\xab\xaf\x5b\xf7\xeb\x2a\xcd\x2c\xdf\x48\x3a\xac\x2a\x30\x13\xaf\x13\x6a\xdc\x49\xc2\xe0\x32\xcc\x63\xdd\x10\x71\x1c\xd1\x8d\xa1\x2d\x8c\x7c\x80\xf3\xf5\x43\x29\xc7\x0b\xd3\x25\x10\xf1\x7f\xb1\x47\x3d\x02\xd1\xbf\x6c\x93\x5d\xa4\x4a\x2e\xb2\xf1\xa3\x0f\x52\x2b\x61\xca\xb5\xd9\x52\x29\xa1\x8a\x51\xdc\xd8\xac\x3d\x5b\x99\x5a\x79\xbf\x63\x58\x0a\xe8\x08\x5e\xd6\xf5\xe6\xa1\x24\x61\x58\xd3\xf0\xa2\xaa\xb4\x23\x24\x8e\xbf\x75\xf8\x27\x4e\xb6\xe5\x11\x64\x0f\x39\xba\x5b\x2e\xb5\x9d\x74\xe5\x51\xa2\xf3\x5a\xb1\x5b\xfd\x14\x68\x2e\xa6\x98\x52\x3b\x2f\x33\xc3\x8b\xac\x5a\x77\xe8\xe0\x08\x79\x6c\x36\xa3\x91\xa5\x87\x62\x70\x2e\xa6\x62\x02\x13\xe3\x51\x18\x8b\x09\x83\x99\xa1\x95\xe5\x07\x05\x55\x34\x00\x0f\xea\xa6\xea\x63\x67\x81\xa3\x70\x0f\x88\x94\xc7\x92\x73\x45\xb3\xb0\xd0\xf8\xee\x67\x9f\x48\x63\x98\xa0\xa2\x85\x81\xb9\xae\xea\x41\x27\x22\xef\x82\x0b\x18\x56\xd8\x68\x60\x8b\x13\x6a\xde\xd0\xe4\x96\x89\x14\xcb\x0f\xc1\xb2\xd3\x85\xa0\xb9\x4b\x45\x15\xd5\x54\x6e\xf4\xd7\x3d\x67\x6a\xc0\x48\x39\x1f\xaa\x8b\x5c\x77\x9f\x30\x28\x75\xe7\x5c\x2f\x9f\x34\xd6\x32\xde\x74\xce\x35\x1a\x61\x14\x9f\x27\xcc\xf3\x7f\xfb\xa9\x7d\x4e\x7d\xde\x22\x1e\x7d\x69\xf2\xce\x55\x91\x47\xf8\x0b\xe4\x3e\x18\xbf\x21\xeb\x14\xcd\xec\xd1\x5e\x84\xf0\xcc\xc6\xe6\x8e\x17\xfb\x2d\xa8\xa2\xc6\x5d\xc2\x68\x0f\x3f\xbe\xb9\xa8\x1f\xe2\x8f\x34\x95\x9a\xbc\xc9\x64\x72\x4b\x2e\x18\x08\x5d\x0f\x59\x10\x44\x8d\xd3\xa7\x4c\x18\x9d\xd3\xe9\xb6\xdb\xb1\x3e\xc9\xa5\xe0\x46\xaa\xcd\xf4\xe2\xa5\x3e\xe1\x93\xa4\x23\x56\xe3\xf4\x59\x27\x23\xb6\x08\xb6\x4b\x35\x42\x05\xc7\x10\xba\xfb\x5c\x7e\x3b\x1e\xaa\x9f\xcd\xe4\x5d\xdf\xc8\x7e\xa9\x59\x9f\xb7\xb8\x6f\xed\xb0\xba\x5b\xb6\x80\x4b\xe6\x8e\xeb\xfb\x16\xbb\xd5\x94\x03\x23\xc1\xa6\x04\xef\x2d\x8b\xfe\xf8\xe6\xc2\xf2\x86\x41\x2c\xec\x9d\x30\x93\x9c\x24\xac\x98\x9d\xb8\x0f\x3f\x4b\xa0\x78\x6a\xd1\x15\x2a\x67\x24\x91\x59\xe6\xe2\x9d\xe5\x84\x9c\xb3\x62\x16\x06\x7b\xec\x95\x3e\x5d\xaa\xdb\x42\xca\xae\x29\x3f\xa3\x03\x63\x7b\xbb\xf3\x12\x21\x8e\x1a\x77\xab\x63\xf0\x58\xa8\xf2\xac\x2b\x31\x3e\x20\x70\x1e\xb8\xaa\x7e\xad\x96\x7e\xec\x7a\x59\x4f\x07\xec\x7d\x38\x6a\xe4\x66\x38\x41\x49\x3a\x65\x29\x91\x73\xa6\x14\x4f\x99\x26\x81\xde\xc4\xaa\x27\xcf\x1e\x1b\x6e\x2f\x99\x89\x9f\x3c\x33\xf1\x0e\x3a\x4e\x44\x9e\x6c\xef\x65\xf2\x44\xd3\x9c\x8b\x67\x47\xa0\x74\x42\x33\x36\xfc\xd0\x41\x99\x18\x61\x8f\xba\x3e\xe1\x5f\x46\x09\xc5\xb6\xa4\xe9\xfa\x36\xe0\x0b\x11\x32\xdd\x66\x1f\x7d\x00\xad\x60\x4a\x0d\xbb\xdb\xca\xfe\xfa\x15\x81\xda\xde\x12\xe4\xce\xa7\xd4\x1f\x9e\x28\x35\x5e\x84\xe5\x98\xf7\x6b\x9f\xec\xd3\xed\x53\x57\xa3\x8b\x5f\x48\x23\x93\xac\x47\xd4\xb3\xeb\x21\xf9\x06\x47\xde\x6f\xa6\x3e\x25\x0d\x4a\x77\x17\x32\xa7\xbc\x73\xa1\x8d\x59\xbd\x30\xb5\x9f\xee\x75\x18\x96\xe0\xb8\x71\x8d\x90\x09\x9f\x96\x56\x03\x73\x5a\xd3\x4b\x12\xb5\x47\x11\x40\x2a\xf9\x23\xb2\x04\x79\x8f\xc3\x4a\xe6\xf0\x3b\x08\x4c\x21\x5c\x4d\x12\xcd\x84\xe6\x70\x4f\x12\x5d\x56\xbb\x72\x6f\x58\x5f\x10\xdd\x0b\x51\x48\xe9\x91\x77\x72\xca\x85\x3f\x95\xd2\x5d\xa3\x4d\x28\xcf\xda\x02\xe3\x45\xaa\x78\x72\xa9\x42\xeb\xec\x52\xd0\x71\xd6\xc6\x0b\xa0\x4e\xd6\x33\x0a\xf7\x9c\x0c\x7a\x9f\xa4\x5c\xdb\xff\x93\xd1\xe8\x1d\xd8\xc4\x4b\xe1\x65\x5d\xb0\x17\x3b\xb2\x16\x3c\xfd\xf1\x00\xee\xf7\xcc\x20\xa5\xd9\x21\xc7\xdd\x50\xa4\x76\xb2\x4c\xd7\xdc\x4e\xdc\x78\x98\xe9\x2f\x78\xce\xe2\xcd\xfd\x98\x91\x9b\x19\x4f\x6e\xaf\x23\xd3\xb7\x54\xf6\x9d\x88\x5e\xd5\x98\x50\xf3\xb7\x7d\x12\x44\x37\xd5\xeb\xee\x0a\xec\x4d\x44\xcf\x47\x6e\xc1\x76\x18\x42\xb5\x96\x09\xaf\xee\x39\xc0\x5c\x52\x11\xfc\x14\x08\xfe\x7e\x17\x01\x3c\xfd\x9e\xbc\xc9\x6f\x9a\xaf\x7a\xaa\x63\x5e\xc4\x85\x5f\xeb\x5e\x27\x8e\xa8\xb1\x43\x96\xee\x9b\x5a\x5e\x6e\x2f\x9b\x36\x8c\xf6\xde\x8b\xdb\x6d\x92\x97\x92\x7c\x95\xc5\xa5\x6d\x0a\xf9\xb9\x5d\x5e\xbe\xbd\x2d\xb5\x4d\x20\xc3\x2a\x6d\xb8\x71\x53\x87\xef\x9c\x19\x1f\x0e\x53\x21\x8b\x32\x43\x5f\x89\xfb\x27\x17\xf7\xd6\x59\xfc\xce\x9e\xcc\xfa\x8f\x91\x68\xb3\xab\x23\xf0\x4f\x23\xe7\x66\x24\x92\xbd\xfa\xd5\xd7\x5f\xff\xd8\xb3\x70\xb6\x55\x81\x1f\x22\x0d\x67\x4b\x93\xe8\x4b\xa4\xcd\x4b\xa4\x4d\x8c\x8a\x0f\x99\x46\x75\xcf\xb1\x34\x1d\x5d\x5c\xbb\xb9\xb7\xb6\x8f\x96\x69\xed\x04\xdb\xd5\x01\xb6\x43\x3c\xcc\x9e\xa2\x60\x3a\xfb\x82\x76\x89\x78\x79\x89\x73\xf9\xa9\xc5\xb9\xec\xe2\x03\xda\x3d\xa6\xa5\x8b\xef\xe7\x4f\x29\x7e\xa5\xc3\x61\x6c\x1f\x67\xd1\x3d\xba\xa2\x7b\x3e\xbb\xee\x96\xad\x5d\x4a\x1a\xc5\xf6\x19\xa7\x45\x54\x15\x04\x7d\xe1\x41\xcc\x8f\x65\xa4\x3d\x58\x8f\xa2\x43\x90\x0e\x0a\x14\x0e\x2f\xbb\xd4\x12\x74\x3a\xf9\x87\x51\xe3\x6a\x23\xbc\x7e\x9a\x1b\x8d\x9f\xe6\x95\xc1\x4b\x61\x90\xe7\x6d\xd3\xd6\xb5\xdc\x22\xde\x92\x00\x67\x1d\x18\xb1\x1c\xc7\x39\x0d\xab\x33\x72\x76\x3d\xb4\xea\x32\x84\xcf\xd0\x4c\x0f\xc8\x0a\x3e\xed\xed\x92\x8e\xaf\x7b\xfe\x4c\x8d\x61\x79\x61\xda\x6f\xf6\x8b\x49\xfb\xc9\x4d\xda\x3b\xdb\xe3\x3e\x87\x8e\xa1\x02\x64\x99\x53\xd1\xb7\x27\x0a\x8c\xdb\xb5\x5b\xb0\x06\x09\x1e\x10\xef\x95\x8b\xb0\xa0\x8a\x61\xd2\xa7\x7a\xc5\x5b\x1a\xd5\x3f\x7c\x18\x23\x24\x8c\xbd\xf3\xca\x91\x81\x36\x4e\x5a\x22\x97\xdc\x3e\xdd\x72\x02\x14\xfc\xa1\x8a\xb8\x70\x4d\x6f\x36\x33\x86\xcc\xfa\x1a\x02\x51\xaa\x56\x75\x49\x18\x45\x61\x9a\x65\xf2\x0e\xbf\x1d\x33\x30\x0b\x7d\x3b\x17\x17\x61\x35\x66\x24\xe7\x56\xa9\x76\xc6\xcf\x78\x3a\x78\x15\x69\x25\x6a\xa6\x50\x60\x55\xee\x36\x6b\xc4\x4c\xbc\xd1\x56\x21\x15\xe8\x08\x6d\xff\xed\x1d\x6f\x30\x2b\xae\xa3\x09\x63\x36\xa3\x73\x2e\x4b\x85\xbd\x8d\x24\x07\xee\x27\x60\x09\x0b\x59\x06\xd3\x14\x56\x49\x0c\xab\xd3\x2b\xe0\x74\x55\xfd\x08\xa2\x7c\x2a\xbd\x2d\xa1\xcf\xbe\x70\x6d\x96\xd7\xe2\x41\xe4\x93\xb6\xed\x0b\x6f\xe6\xba\xb0\x6c\xa1\x73\x45\xb4\xcf\x71\xbf\xba\x60\x32\x1f\xc1\x4f\x3f\xa2\x7a\x68\x5b\x73\x91\xbe\xc8\x3a\xfb\x96\x75\xc2\x75\x55\xc6\x93\x45\xe7\x4a\x61\xd5\x35\x95\xed\x4e\xde\x50\xcd\x52\xf2\x9e\x0a\x3a\x45\xb5\xec\x68\x74\xfd\xe6\xfd\xb1\xdd\x36\x50\xfb\x86\x17\x2b\xef\xb2\x46\xf1\x1c\xae\xf6\x19\x06\xb1\xb4\xc2\x1d\x38\x51\xc7\x35\xee\x35\x8c\x83\x04\x6e\xd2\x2e\x41\xec\x72\xe8\x65\xb3\xc6\x63\x83\x28\xcc\xf3\xf4\x9e\x55\x1d\xb9\xd0\x86\x66\xd9\x75\x46\xc5\x59\x51\x28\x39\x5f\xad\x09\xd7\x03\xc3\x5d\x43\xcf\xda\xd1\xf7\xc1\xbf\x2c\x10\xd0\x70\xd7\x2b\xc8\xb0\x1a\x7f\x40\x86\x26\x28\xc4\x52\x00\x1b\x3c\x38\x2b\x8d\xcc\xa9\xe1\xc9\x81\xd5\x9b\x0f\xde\x53\x51\xd2\x6c\xa5\x87\xd1\xc6\x65\xac\x13\xeb\x36\x76\x5a\x9f\x1c\xad\x45\xb7\x8d\xf2\xc1\xe6\xfe\x86\x2a\x4b\x5b\xce\x47\x9f\x3b\xf5\xd5\x86\x9a\x72\x89\x72\x6e\xa0\xe6\xeb\xe9\x77\x9f\x64\x54\x9b\x4f\x45\x6a\x4f\x72\xe3\xd7\x4d\x44\x3a\xa1\x86\x66\x72\xfa\x07\x46\xb3\xd5\xf8\x5c\xc3\x93\xf3\xb8\xb5\x37\xfe\x20\xca\x8c\xca\x71\x68\x78\xa8\x89\x15\x8a\x7d\xbc\xb6\x62\x19\x9b\x53\x61\x7c\x77\xac\x94\xad\x0f\xdd\xfa\x01\x8b\x78\x65\xf0\x4c\x99\x61\x2a\xe7\xa2\x3e\xe6\x08\xda\x9e\x4b\x91\x72\x34\xf5\x81\x31\x0b\x7b\xd4\xc7\x5d\x8f\x6a\xeb\xcc\xf9\x1b\x0c\xf8\x75\xca\x13\xcd\xa7\x0e\x0a\x6c\x36\x76\x32\xe1\x0c\x5f\xc2\xcd\x75\x6d\x6e\x4b\x90\x22\xb7\xc2\x0a\x73\x90\xf3\x62\x35\x91\xda\xca\xdb\xb7\xf1\xf4\xbe\xdf\x63\x9c\xc2\x7a\xbf\xc8\xbe\x9b\xf7\x3a\x43\xff\x26\x14\xc3\x67\xbb\x34\xd0\x9c\xca\x7a\x0a\xba\x0a\xef\x42\x37\x0c\xee\x6b\x54\x57\xaf\x35\x5a\x4f\xf1\x5b\x09\x4b\xed\xe4\x9a\xb6\x79\xd3\xeb\xb4\xb6\xca\xf2\xbd\xa4\x7e\xb6\x90\xf2\xb6\xb2\xa8\x96\xe9\xcb\xeb\xca\xf0\xd0\x39\xc5\x29\xa7\x3e\x50\x52\x70\x86\x89\x3a\xa8\x70\xc0\x02\xce\xc2\x68\xea\x5e\x5a\x0e\x66\xd5\x38\xf8\xad\xe7\xee\x9a\xd1\xb0\xeb\x7c\x17\xbc\x71\x98\x62\xa2\x0a\xb8\x2c\x38\xf9\x46\xba\x8b\x52\x17\x50\x6a\x69\x00\xf0\xed\x1e\xd1\x65\x32\x23\x54\xdb\xa9\x59\x84\xb6\x27\x9e\x0d\x72\x2a\xf8\x84\x69\x33\x08\x79\x68\xf5\x9f\x7e\xf9\x97\x01\x79\x2b\x15\x71\x7e\xd8\x3d\x9f\x01\xc2\xcd\xb3\xc2\x0b\xae\x71\x31\xa1\x6f\xa5\x69\x16\x32\x75\x93\xbe\x83\xc9\x1a\x7a\x6b\x79\x18\x4e\xb6\x64\x70\x5d\x70\x4a\x0e\xac\x90\x17\x7d\xfa\x1f\x96\x2d\xfd\xeb\x80\x1c\xdd\x01\xd3\x3e\xb0\x7f\x1e\xe0\x07\x83\x2f\x61\xac\x08\x57\x1f\xc6\x30\x3f\xc5\xa7\x53\xa6\x50\xe5\x23\x10\x0e\x77\xec\x32\x58\x08\x19\x35\xf6\x37\xbf\x95\x8a\xd8\x9c\xc8\x9f\x7e\xf9\x97\x03\x72\x54\x5f\x17\xe1\x22\x65\x5f\xc8\x2f\xd1\xf4\xcb\xb5\x5d\xe3\xb1\xbb\x40\xd1\x0b\x61\xe8\x17\x3b\x66\x32\x93\x9a\x09\x54\xbf\x8d\x24\x33\x3a\x67\x44\x4b\xab\xb5\xb2\x2c\xeb\x3b\xb3\x36\xb9\xa3\x90\x55\xc4\x83\x12\x82\xc0\x49\x41\x95\xa9\xa1\xc4\xc0\x59\x35\xe0\x6b\x76\xdb\xa6\xc2\x5f\xff\x4e\xb8\x70\x77\x46\xee\xb6\xca\xee\x39\x84\x34\xe2\x26\x19\x49\x92\x19\x15\xd3\x10\x47\x3d\x29\x4d\xa9\xd8\x96\xeb\x96\x96\x67\xe0\x96\x8b\x4e\xe1\xb6\xdf\x72\xd1\xbc\xb9\x5f\x6d\x0b\x9a\x72\xe3\x9d\xfe\x9d\x23\x9f\x59\x9c\xd8\x5d\x50\x7c\x5c\x1a\xa9\xf4\x49\xca\xe6\x2c\x3b\xd1\x7c\xda\xa7\x2a\x99\x71\xc3\x12\xbb\xac\x13\x5a\xf0\x7e\x22\x85\xdd\x71\xc8\x20\x90\xa7\x3f\x83\x22\x98\x7d\x3b\xd5\x2d\x79\x8d\x5b\x2e\x7a\xbb\x21\xec\x49\x0d\x60\x7b\x5b\x63\x0b\x1b\xce\xf2\x42\xd1\x9e\xf2\x08\xab\x05\xe3\xc5\xc9\x5e\x16\xeb\xd3\xf2\x76\xe7\x31\x87\x2e\xd3\x74\xd2\x1c\xc3\x1e\x3b\xf4\xd2\x80\x53\x59\xa3\x94\x39\x4d\x91\x94\x52\xb1\x78\x70\xe4\xb7\x20\x85\x84\xec\xc9\xa2\x9f\x60\x7d\xfb\x3e\x15\xa9\xfd\x37\xc6\xa3\x24\x8b\xbd\xc0\xb0\xe4\x9d\x08\xc1\xa7\xe1\xc5\xe3\x1c\x89\x92\xef\xe1\xd4\x3b\x79\xad\xa5\x10\x85\xa2\x2a\xb8\xec\x18\x55\x32\xcf\x34\xeb\x02\x2a\xd7\x7e\xd4\xff\x76\x77\x26\x21\x33\xd7\x36\x91\x6a\xf3\x4d\x47\x24\x3b\xb6\x9c\xef\xbb\xaa\x47\xb3\x26\xbe\x1d\xcc\xa5\x81\xf2\xd1\xf3\xb5\x65\x78\x05\x05\x18\xcc\xfa\x3b\xda\x56\x38\xe4\xef\xe8\xed\x44\xfa\x2b\xf3\x03\x25\x41\x29\xd9\xae\x40\x55\xfa\x4b\xad\xd2\x16\x2e\xca\x30\x6d\x08\x9d\x53\x9e\x81\x45\x5d\x8e\x35\x53\x73\x2c\x79\xe4\xd2\xe2\xd1\xa6\x9e\xe5\xaa\x1a\xa0\x18\xf5\x48\x9a\x8f\x5f\xc3\xf2\xae\x6c\x5a\x00\x68\x43\x8d\xd9\xaf\x9d\xf5\x5e\xf4\x1e\x54\x2f\xd7\xfe\x6c\xbf\xb0\xa3\x1a\x63\xf1\xef\x0f\x8c\x2a\x33\x66\xd4\xdc\xf0\x4d\x7c\x77\x09\xa5\x6b\xfd\xbc\xc1\xa5\x42\xe8\x3b\x46\xa6\xd2\x58\x11\xab\x04\xdc\x47\x99\x14\x13\xd0\x04\x44\x7b\x68\x8c\xae\x56\x79\xa3\x28\xc4\xbd\x48\xd1\x71\x99\xf5\x8e\xcb\xeb\x74\xd2\xb1\xc3\x24\x83\xad\x31\x05\x84\x14\xcc\xed\x1d\xde\x40\x00\x05\x7a\x9c\x25\xe7\x4c\xeb\x8d\xa9\x21\xea\x2e\x7c\xd8\x1a\x8f\x72\xe3\x3a\x2c\xf7\xbf\x61\xfc\x84\x15\xa0\x53\x66\x28\xcf\xfc\x51\x46\x50\x04\x28\x6d\xa3\xae\x1b\x17\xa8\x18\xd5\x9b\x04\x84\x66\x46\x2c\x2d\x05\x4e\x5a\x0a\xd6\xbf\x93\x2a\x25\xe7\x34\x67\xd9\x39\xd5\xcc\x8d\x15\x87\xab\xe1\x1e\x1d\xea\xbd\x4e\x79\xb5\xed\x6b\xcd\x94\xd1\xf8\xe3\x91\xc8\xe1\x46\xa5\x62\xe1\x04\x7b\xde\x04\x79\xa3\x4a\xd6\x23\x6f\x2d\xf7\xea\x91\x4f\xe2\x56\xc8\xbb\xfb\xcd\xd5\x6c\xbc\xb9\xa8\xbb\x59\xb9\xcc\x2d\x90\x22\xcf\x25\x84\xa9\x19\x7c\xc2\x74\x77\x9c\x91\x23\xf8\x6b\x4c\x8d\x75\x66\x13\x9a\xfa\x19\xd9\x7f\x2e\x99\xa0\xac\xa2\xa8\xe4\x54\x31\x8d\x39\x57\x56\x26\xf4\x6b\x6b\x72\xfe\x86\x09\x17\xf1\xb6\x75\x7a\xc3\x55\xbd\xfc\x4c\x3d\x5f\x9b\x56\xbf\xb8\xfd\x76\x1f\x2b\xb2\x95\xa2\xc6\x66\x2f\xbc\x68\xa2\x6b\x8c\x4f\xeb\x66\xb8\xda\xe8\x14\x71\xbd\xa8\x2d\x0a\x25\x9b\xac\xa3\x7e\x75\xe7\xa3\xcf\xeb\x81\xbd\x96\xf7\x6d\xe3\x4f\xdb\xcd\x52\xf7\x35\x48\x6d\x3d\x33\x5b\x8d\x50\x2f\xe6\xa7\x17\xf3\xd3\x8f\xc9\xfc\xb4\x15\xe3\x37\x99\x9c\x7e\x1c\xc6\xa6\xad\x4b\xdc\x64\x60\x7a\x96\xa6\xa5\x56\x2b\xda\x68\x4e\x7a\xb6\x86\xa4\xad\x4b\x6b\x69\x3c\xfa\xf7\x31\x1b\x6d\x85\xd8\x06\x53\xd1\x33\x34\x12\xb5\x11\xc8\x58\xda\x46\x4c\x1c\x46\x8d\x63\x41\xb1\x2a\x98\x18\x86\xf3\x2e\x35\xb1\x38\xb3\xab\xb4\x68\x05\xb8\xad\x73\x3b\x74\x93\x6b\x2f\x7b\x39\x81\xd1\x95\x13\x5c\x9a\x2c\xb9\xb8\xbc\xfe\x78\x79\x7e\x76\x73\x79\xd1\x94\xef\x56\x41\x7a\x8b\x24\xb6\xd9\x06\xd1\x8f\x24\xb1\x35\x0d\x2c\x41\x5e\xf3\x93\xc5\x81\x35\x3f\x95\x25\x5f\xd5\xeb\xfe\x72\xe1\xbd\xb8\xdc\xbd\xf8\xc7\xf6\xd3\xd9\xf6\x78\xda\xd3\x09\xd8\x82\x1e\x63\x56\xee\x99\xc9\x2c\xd5\xde\xd7\x74\x78\x11\xa2\x97\xb8\x48\xb2\x32\xb5\xc2\xc5\xa7\x4f\xc3\x0b\x3d\x20\xe4\x0d\x4b\x68\xa9\xc1\x0a\x93\x4a\x71\x68\xc8\x87\xab\x77\x7f\x04\x1f\x6a\x68\xd1\x0b\xc9\x3e\x20\x83\x2c\xa7\x98\x04\xd7\x60\x16\x32\xf2\x86\xa1\xa0\x02\x5f\x4e\x68\x61\xa9\x98\xc6\x2a\x0b\x06\x64\x91\x19\xcb\x0a\x4b\x31\x6f\x19\xa9\x72\x7f\xda\x81\xab\x1a\xe6\xde\xe5\x71\xca\x0c\x46\x3a\x6d\xf2\x6a\xdc\x08\xb5\x2d\x16\xd7\x7b\xd8\x5a\x6b\xea\xa3\xd3\xc6\xef\xa8\x76\x16\xab\x95\xb3\xdd\xb2\xbf\xdb\xed\x33\xeb\x4d\x1c\x6b\x8c\x1b\x48\x9e\xe1\xaf\xa5\x39\xdb\xc9\x56\x76\x0c\x74\x22\xe1\xa6\xb5\x35\x75\xbd\x1b\xd0\xea\x9c\xf5\x4b\xb6\x0c\xd6\x04\x72\xed\xc3\xc1\x8b\x3a\x9a\x72\xbb\xb9\x40\xc1\x8b\xb4\x56\x5d\xd2\x79\xdb\xd5\xdf\x95\xe3\x50\x5f\xb4\x9a\xaf\xb3\xc8\x90\x7f\xfc\xeb\xab\xff\x1f\x00\x00\xff\xff\x19\x53\xdb\x44\x5f\xac\x01\x00") func operatorsCoreosCom_subscriptionsYamlBytes() ([]byte, error) { return bindataRead( diff --git a/staging/api/go.mod b/staging/api/go.mod index 2836cfa699..ae95703c39 100644 --- a/staging/api/go.mod +++ b/staging/api/go.mod @@ -9,12 +9,12 @@ require ( github.com/go-bindata/go-bindata/v3 v3.1.3 github.com/mikefarah/yq/v3 v3.0.0-20201202084205-8846255d1c37 github.com/sirupsen/logrus v1.8.1 - github.com/spf13/cobra v1.1.3 + github.com/spf13/cobra v1.2.1 github.com/stretchr/testify v1.7.0 - k8s.io/api v0.22.0 - k8s.io/apiextensions-apiserver v0.22.0 - k8s.io/apimachinery v0.22.0 - k8s.io/client-go v0.22.0 - sigs.k8s.io/controller-runtime v0.9.0 - sigs.k8s.io/controller-tools v0.6.0 + k8s.io/api v0.22.1 + k8s.io/apiextensions-apiserver v0.22.1 + k8s.io/apimachinery v0.22.1 + k8s.io/client-go v0.22.1 + sigs.k8s.io/controller-runtime v0.10.0 + sigs.k8s.io/controller-tools v0.6.2 ) diff --git a/staging/api/go.sum b/staging/api/go.sum index ca205d95ce..b32a88119d 100644 --- a/staging/api/go.sum +++ b/staging/api/go.sum @@ -9,18 +9,33 @@ cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6T cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= +cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= +cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= +cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= +cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= github.com/Azure/go-ansiterm v0.0.0-20210608223527-2377c96fe795/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= @@ -56,14 +71,16 @@ github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmV github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a h1:idn718Q4B6AGu/h5Sxe66HYVdqdGu2l9Iebqhi/AEoA= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= -github.com/benbjohnson/clock v1.0.3 h1:vkLuvpK4fmtSCuo60+yC63p7y0BmQ8gm5ZXGuBCJyXg= github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= +github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= +github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= +github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= @@ -80,6 +97,7 @@ github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5P github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/cockroachdb/datadriven v0.0.0-20200714090401-bf6692d28da5/go.mod h1:h6jFvWxBdQXxjopDMZyH2UVceIRfR84bdzbkoKrsWNo= @@ -114,6 +132,7 @@ github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= @@ -168,8 +187,8 @@ github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTM github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= -github.com/gobuffalo/flect v0.2.2 h1:PAVD7sp0KOdfswjAw9BpLCU9hXo7wFSzgpQ+zNeks/A= -github.com/gobuffalo/flect v0.2.2/go.mod h1:vmkQwuZYhN5Pc4ljYQZzP+1sq+NEkK+lh20jmEmX3jc= +github.com/gobuffalo/flect v0.2.3 h1:f/ZukRnSNA/DUpSNDadko7Qc0PhGvsew35p/2tu+CRY= +github.com/gobuffalo/flect v0.2.3/go.mod h1:vmkQwuZYhN5Pc4ljYQZzP+1sq+NEkK+lh20jmEmX3jc= github.com/goccy/go-yaml v1.8.1 h1:JuZRFlqLM5cWF6A+waL8AKVuCcqvKOuhJtUQI+L3ez0= github.com/goccy/go-yaml v1.8.1/go.mod h1:wS4gNoLalDSJxo/SpngzPQ2BN4uuZVLCmbM4S3vd4+Y= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= @@ -191,11 +210,15 @@ github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfb github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= @@ -215,8 +238,11 @@ github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5a github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= @@ -225,11 +251,19 @@ github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/ github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g= github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -269,7 +303,6 @@ github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/b github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= @@ -277,6 +310,7 @@ github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2p github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= @@ -305,6 +339,7 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= @@ -318,6 +353,7 @@ github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+ github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= @@ -349,8 +385,9 @@ github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eI github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.4.1 h1:CpVNEelQCZBooIPDn+AR3NpivK/TIKU8bDxdASFVQag= +github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= github.com/moby/term v0.0.0-20201216013528-df9cb8a40635/go.mod h1:FBS0z0QWA44HXygs7VXDUOGoN/1TV3RuWkLO04am3wc= github.com/moby/term v0.0.0-20210610120745-9d4ed1856297/go.mod h1:vgPCkQMyxTZ7IDy8SXRufE172gr8+K/JE/7hHFxHW3A= @@ -377,23 +414,25 @@ github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+W github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= -github.com/onsi/ginkgo v1.16.2/go.mod h1:CObGmKUOKaSC0RjmoAK7tKyn4Azo5P2IWuoMnvwxz1E= github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.13.0 h1:7lLHu94wT9Ij0o6EWWclhu0aOh32VxhkwEJvzuWPeak= -github.com/onsi/gomega v1.13.0/go.mod h1:lRk9szgn8TxENtWd0Tp4c3wjlRfMTMH27I+3Je41yGY= +github.com/onsi/gomega v1.14.0/go.mod h1:cIuvLEne0aoVhAgh/O6ac0Op8WWw9H6eYCriF+tEHG0= +github.com/onsi/gomega v1.15.0 h1:WjP/FQ/sk43MRmnEcT+MlDw2TFvkrXlprrPST/IudjU= +github.com/onsi/gomega v1.15.0/go.mod h1:cIuvLEne0aoVhAgh/O6ac0Op8WWw9H6eYCriF+tEHG0= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= @@ -442,15 +481,19 @@ github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4k github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/afero v1.2.2 h1:5jhuqJyZCZf2JRofRvN/nIFgIWNzPa3/Vz8mYylgbWc= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= +github.com/spf13/afero v1.6.0 h1:xoax2sJ2DT8S8xA2paPFjDCScCNeWsg75VG0DLRreiY= +github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/cobra v1.1.1/go.mod h1:WnodtKOvamDL/PwE2M4iKs8aMDBZ5Q5klgD3qfVJQMI= -github.com/spf13/cobra v1.1.3 h1:xghbfqPkxzxP3C/f3n5DdpAbdKLj4ZE4BWQI362l53M= github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= +github.com/spf13/cobra v1.2.1 h1:+KmjbUw1hriSNMF55oPrkZcb27aECyrj8V2ytv7kWDw= +github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= @@ -458,6 +501,7 @@ github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= +github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -477,7 +521,9 @@ github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGr github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= @@ -496,6 +542,9 @@ go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opentelemetry.io/contrib v0.20.0 h1:ubFQUn0VCZ0gPwIoJfBJVpeBlyRMxu8Mm/huKWYd9p0= go.opentelemetry.io/contrib v0.20.0/go.mod h1:G/EtFaa6qaN7+LxqfIAT3GiZa7Wv5DTBUzl5H4LY0Kc= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.20.0/go.mod h1:oVGt1LRbBOBq1A5BQLlUg9UaU/54aiHw8cgjV3aWZ/E= @@ -527,12 +576,14 @@ go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/ go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= +go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -559,6 +610,7 @@ golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHl golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= @@ -570,6 +622,8 @@ golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzB golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.1-0.20200828183125-ce943fd02449/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -589,6 +643,7 @@ golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -599,12 +654,23 @@ golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210224082022-3d97a244fca7/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20210520170846-37e1c6afe023 h1:ADo5wSpq2gqaCGQWzk7S5vd//0iyyLeAratkEoG5dLE= @@ -613,14 +679,23 @@ golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAG golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d h1:TzXSXBo42m9gQenoE3b9BGiEpg5IG2JkU5FkPIawgtw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602 h1:0Ja1LBD+yisY6RWM/BH7TJVXWsSjs2VwBSmvSX4HdBc= +golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -661,24 +736,38 @@ golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210616094352-59db8d763f22 h1:RqytpXGR1iVNX7psjB3ff8y7sNFinVFvkx1c8SjBkio= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210817190340-bfb29a6856f2 h1:c8PlLMqBbOHoqtjteWm5/kbe6rNY2pbRfbIMVnepueo= +golang.org/x/sys v0.0.0-20210817190340-bfb29a6856f2/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d h1:SZxvLBoTP5yHO3Frd4z4vrF+DBX9vMVanchswa69toE= @@ -735,14 +824,30 @@ golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapK golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= +golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= -golang.org/x/tools v0.1.2 h1:kRBLX7v7Af8W7Gdbbc908OJcdgtK8bOz9Uaj8/F1ACA= golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.5 h1:ouewzE6p+/VEB31YYnTbEJdi8pFqKp4P4n85vwo3DHA= +golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -758,12 +863,25 @@ google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsb google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= +google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= +google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= +google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= +google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= +google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= +google.golang.org/api v0.44.0/go.mod h1:EBOGZqzyhtvMDoxwS97ctnh0zUmYY6CxqXsc1AvkYD8= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= @@ -783,12 +901,32 @@ google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvx google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201110150050-8816d57aaa9a/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c h1:wtujag7C+4D6KMoulW9YauvK2lgdvCMS260jsqqBXr0= google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= @@ -800,9 +938,17 @@ google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQ google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= +google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.38.0 h1:/9BgsAsa5nWe26HqOlvlgJnqBuktYOLCgjCPqsa56W0= google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= @@ -833,6 +979,7 @@ gopkg.in/go-playground/validator.v9 v9.30.0/go.mod h1:+c9/zcJMFNgbLvly1L1V+PpxWd gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= gopkg.in/op/go-logging.v1 v1.0.0-20160211212156-b2cb9fa56473 h1:6D+BvnJ/j6e222UW8s2qTSe3wGBtvo0MbVQG/c5k8RE= gopkg.in/op/go-logging.v1 v1.0.0-20160211212156-b2cb9fa56473/go.mod h1:N1eN2tsCx0Ydtgjl4cqmbRCsY4/+z4cYDeqwZTk6zog= @@ -862,26 +1009,27 @@ honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -k8s.io/api v0.21.1/go.mod h1:FstGROTmsSHBarKc8bylzXih8BLNYTiS3TZcsoEDg2s= -k8s.io/api v0.22.0 h1:elCpMZ9UE8dLdYxr55E06TmSeji9I3KH494qH70/y+c= -k8s.io/api v0.22.0/go.mod h1:0AoXXqst47OI/L0oGKq9DG61dvGRPXs7X4/B7KyjBCU= -k8s.io/apiextensions-apiserver v0.21.1/go.mod h1:KESQFCGjqVcVsZ9g0xX5bacMjyX5emuWcS2arzdEouA= -k8s.io/apiextensions-apiserver v0.22.0 h1:QTuZIQggaE7N8FTjur+1zxLmEPziphK7nNm8t+VNO3g= -k8s.io/apiextensions-apiserver v0.22.0/go.mod h1:+9w/QQC/lwH2qTbpqndXXjwBgidlSmytvIUww16UACE= -k8s.io/apimachinery v0.21.1/go.mod h1:jbreFvJo3ov9rj7eWT7+sYiRx+qZuCYXwWT1bcDswPY= -k8s.io/apimachinery v0.22.0 h1:CqH/BdNAzZl+sr3tc0D3VsK3u6ARVSo3GWyLmfIjbP0= -k8s.io/apimachinery v0.22.0/go.mod h1:O3oNtNadZdeOMxHFVxOreoznohCpy0z6mocxbZr7oJ0= -k8s.io/apiserver v0.21.1/go.mod h1:nLLYZvMWn35glJ4/FZRhzLG/3MPxAaZTgV4FJZdr+tY= -k8s.io/apiserver v0.22.0 h1:KZh2asnRBjawLLfPOi6qiD+A2jaNt31HCnZG6AX3Qcs= -k8s.io/apiserver v0.22.0/go.mod h1:04kaIEzIQrTGJ5syLppQWvpkLJXQtJECHmae+ZGc/nc= -k8s.io/client-go v0.21.1/go.mod h1:/kEw4RgW+3xnBGzvp9IWxKSNA+lXn3A7AuH3gdOAzLs= -k8s.io/client-go v0.22.0 h1:sD6o9O6tCwUKCENw8v+HFsuAbq2jCu8cWC61/ydwA50= -k8s.io/client-go v0.22.0/go.mod h1:GUjIuXR5PiEv/RVK5OODUsm6eZk7wtSWZSaSJbpFdGg= -k8s.io/code-generator v0.21.1/go.mod h1:hUlps5+9QaTrKx+jiM4rmq7YmH8wPOIko64uZCHDh6Q= -k8s.io/code-generator v0.22.0/go.mod h1:eV77Y09IopzeXOJzndrDyCI88UBok2h6WxAlBwpxa+o= -k8s.io/component-base v0.21.1/go.mod h1:NgzFZ2qu4m1juby4TnrmpR8adRk6ka62YdH5DkIIyKA= -k8s.io/component-base v0.22.0 h1:ZTmX8hUqH9T9gc0mM42O+KDgtwTYbVTt2MwmLP0eK8A= -k8s.io/component-base v0.22.0/go.mod h1:SXj6Z+V6P6GsBhHZVbWCw9hFjUdUYnJerlhhPnYCBCg= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +k8s.io/api v0.21.3/go.mod h1:hUgeYHUbBp23Ue4qdX9tR8/ANi/g3ehylAqDn9NWVOg= +k8s.io/api v0.22.1 h1:ISu3tD/jRhYfSW8jI/Q1e+lRxkR7w9UwQEZ7FgslrwY= +k8s.io/api v0.22.1/go.mod h1:bh13rkTp3F1XEaLGykbyRD2QaTTzPm0e/BMd8ptFONY= +k8s.io/apiextensions-apiserver v0.21.3/go.mod h1:kl6dap3Gd45+21Jnh6utCx8Z2xxLm8LGDkprcd+KbsE= +k8s.io/apiextensions-apiserver v0.22.1 h1:YSJYzlFNFSfUle+yeEXX0lSQyLEoxoPJySRupepb0gE= +k8s.io/apiextensions-apiserver v0.22.1/go.mod h1:HeGmorjtRmRLE+Q8dJu6AYRoZccvCMsghwS8XTUYb2c= +k8s.io/apimachinery v0.21.3/go.mod h1:H/IM+5vH9kZRNJ4l3x/fXP/5bOPJaVP/guptnZPeCFI= +k8s.io/apimachinery v0.22.1 h1:DTARnyzmdHMz7bFWFDDm22AM4pLWTQECMpRTFu2d2OM= +k8s.io/apimachinery v0.22.1/go.mod h1:O3oNtNadZdeOMxHFVxOreoznohCpy0z6mocxbZr7oJ0= +k8s.io/apiserver v0.21.3/go.mod h1:eDPWlZG6/cCCMj/JBcEpDoK+I+6i3r9GsChYBHSbAzU= +k8s.io/apiserver v0.22.1 h1:Ul9Iv8OMB2s45h2tl5XWPpAZo1VPIJ/6N+MESeed7L8= +k8s.io/apiserver v0.22.1/go.mod h1:2mcM6dzSt+XndzVQJX21Gx0/Klo7Aen7i0Ai6tIa400= +k8s.io/client-go v0.21.3/go.mod h1:+VPhCgTsaFmGILxR/7E1N0S+ryO010QBeNCv5JwRGYU= +k8s.io/client-go v0.22.1 h1:jW0ZSHi8wW260FvcXHkIa0NLxFBQszTlhiAVsU5mopw= +k8s.io/client-go v0.22.1/go.mod h1:BquC5A4UOo4qVDUtoc04/+Nxp1MeHcVc1HJm1KmG8kk= +k8s.io/code-generator v0.21.3/go.mod h1:K3y0Bv9Cz2cOW2vXUrNZlFbflhuPvuadW6JdnN6gGKo= +k8s.io/code-generator v0.22.1/go.mod h1:eV77Y09IopzeXOJzndrDyCI88UBok2h6WxAlBwpxa+o= +k8s.io/component-base v0.21.3/go.mod h1:kkuhtfEHeZM6LkX0saqSK8PbdO7A0HigUngmhhrwfGQ= +k8s.io/component-base v0.22.1 h1:SFqIXsEN3v3Kkr1bS6rstrs1wd45StJqbtgbQ4nRQdo= +k8s.io/component-base v0.22.1/go.mod h1:0D+Bl8rrnsPN9v0dyYvkqFfBeAd4u7n77ze+p8CMiPo= k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20201214224949-b6c5ce23f027/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= @@ -893,21 +1041,20 @@ k8s.io/kube-openapi v0.0.0-20210305001622-591a79e4bda7/go.mod h1:wXW5VT87nVfh/iL k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e h1:KLHHjkdQFomZy8+06csTWZ0m1343QqxZhR2LJ1OxCYM= k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20210527160623-6fdb442a123b/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20210707171843-4b05e18ac7d9 h1:imL9YgXQ9p7xmPzHFm/vVd/cF78jad+n4wK1ABwYtMM= k8s.io/utils v0.0.0-20210707171843-4b05e18ac7d9/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20210802155522-efc7438f0176 h1:Mx0aa+SUAcNRQbs5jUzV8lkDlGFU8laZsY9jrcVX5SY= +k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.15/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.19/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.22 h1:fmRfl9WJ4ApJn7LxNuED4m0t18qivVQOxP6aAYG9J6c= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.22/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= -sigs.k8s.io/controller-runtime v0.9.0 h1:ZIZ/dtpboPSbZYY7uUz2OzrkaBTOThx2yekLtpGB+zY= -sigs.k8s.io/controller-runtime v0.9.0/go.mod h1:TgkfvrhhEw3PlI0BRL/5xM+89y3/yc0ZDfdbTl84si8= -sigs.k8s.io/controller-tools v0.6.0 h1:o2Fm1K7CmIp8OVaBtXsWB/ssBAzyoKZPPAGR3VuxaKs= -sigs.k8s.io/controller-tools v0.6.0/go.mod h1:baRMVPrctU77F+rfAuH2uPqW93k6yQnZA2dhUOr7ihc= +sigs.k8s.io/controller-runtime v0.10.0 h1:HgyZmMpjUOrtkaFtCnfxsR1bGRuFoAczSNbn2MoKj5U= +sigs.k8s.io/controller-runtime v0.10.0/go.mod h1:GCdh6kqV6IY4LK0JLwX0Zm6g233RtVGdb/f0+KSfprg= +sigs.k8s.io/controller-tools v0.6.2 h1:+Y8L0UsAugDipGRw8lrkPoAi6XqlQVZuf1DQHME3PgU= +sigs.k8s.io/controller-tools v0.6.2/go.mod h1:oaeGpjXn6+ZSEIQkUe/+3I40PNiDYp9aeawbt3xTgJ8= sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= -sigs.k8s.io/structured-merge-diff/v4 v4.1.0/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= sigs.k8s.io/structured-merge-diff/v4 v4.1.2 h1:Hr/htKFmJEbtMgS/UD0N+gtgctAqz81t3nu+sPzynno= sigs.k8s.io/structured-merge-diff/v4 v4.1.2/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= diff --git a/vendor/cloud.google.com/go/compute/metadata/metadata.go b/vendor/cloud.google.com/go/compute/metadata/metadata.go index 1a7a4c7e57..545bd9d379 100644 --- a/vendor/cloud.google.com/go/compute/metadata/metadata.go +++ b/vendor/cloud.google.com/go/compute/metadata/metadata.go @@ -140,7 +140,7 @@ func testOnGCE() bool { }() go func() { - addrs, err := net.LookupHost("metadata.google.internal") + addrs, err := net.DefaultResolver.LookupHost(ctx, "metadata.google.internal") if err != nil || len(addrs) == 0 { resc <- false return @@ -296,6 +296,7 @@ func (c *Client) getETag(suffix string) (value, etag string, err error) { // being stable anyway. host = metadataIP } + suffix = strings.TrimLeft(suffix, "/") u := "http://" + host + "/computeMetadata/v1/" + suffix req, err := http.NewRequest("GET", u, nil) if err != nil { diff --git a/vendor/github.com/mitchellh/mapstructure/.travis.yml b/vendor/github.com/mitchellh/mapstructure/.travis.yml deleted file mode 100644 index 1689c7d735..0000000000 --- a/vendor/github.com/mitchellh/mapstructure/.travis.yml +++ /dev/null @@ -1,8 +0,0 @@ -language: go - -go: - - "1.11.x" - - tip - -script: - - go test diff --git a/vendor/github.com/mitchellh/mapstructure/CHANGELOG.md b/vendor/github.com/mitchellh/mapstructure/CHANGELOG.md index 3b3cb723f8..1955f2878c 100644 --- a/vendor/github.com/mitchellh/mapstructure/CHANGELOG.md +++ b/vendor/github.com/mitchellh/mapstructure/CHANGELOG.md @@ -1,3 +1,55 @@ +## unreleased + +* Fix regression where `*time.Time` value would be set to empty and not be sent + to decode hooks properly [GH-232] + +## 1.4.0 + +* A new decode hook type `DecodeHookFuncValue` has been added that has + access to the full values. [GH-183] +* Squash is now supported with embedded fields that are struct pointers [GH-205] +* Empty strings will convert to 0 for all numeric types when weakly decoding [GH-206] + +## 1.3.3 + +* Decoding maps from maps creates a settable value for decode hooks [GH-203] + +## 1.3.2 + +* Decode into interface type with a struct value is supported [GH-187] + +## 1.3.1 + +* Squash should only squash embedded structs. [GH-194] + +## 1.3.0 + +* Added `",omitempty"` support. This will ignore zero values in the source + structure when encoding. [GH-145] + +## 1.2.3 + +* Fix duplicate entries in Keys list with pointer values. [GH-185] + +## 1.2.2 + +* Do not add unsettable (unexported) values to the unused metadata key + or "remain" value. [GH-150] + +## 1.2.1 + +* Go modules checksum mismatch fix + +## 1.2.0 + +* Added support to capture unused values in a field using the `",remain"` value + in the mapstructure tag. There is an example to showcase usage. +* Added `DecoderConfig` option to always squash embedded structs +* `json.Number` can decode into `uint` types +* Empty slices are preserved and not replaced with nil slices +* Fix panic that can occur in when decoding a map into a nil slice of structs +* Improved package documentation for godoc + ## 1.1.2 * Fix error when decode hook decodes interface implementation into interface diff --git a/vendor/github.com/mitchellh/mapstructure/decode_hooks.go b/vendor/github.com/mitchellh/mapstructure/decode_hooks.go index 1f0abc65ab..92e6f76fff 100644 --- a/vendor/github.com/mitchellh/mapstructure/decode_hooks.go +++ b/vendor/github.com/mitchellh/mapstructure/decode_hooks.go @@ -1,6 +1,7 @@ package mapstructure import ( + "encoding" "errors" "fmt" "net" @@ -16,10 +17,11 @@ func typedDecodeHook(h DecodeHookFunc) DecodeHookFunc { // Create variables here so we can reference them with the reflect pkg var f1 DecodeHookFuncType var f2 DecodeHookFuncKind + var f3 DecodeHookFuncValue // Fill in the variables into this interface and the rest is done // automatically using the reflect package. - potential := []interface{}{f1, f2} + potential := []interface{}{f1, f2, f3} v := reflect.ValueOf(h) vt := v.Type() @@ -38,13 +40,15 @@ func typedDecodeHook(h DecodeHookFunc) DecodeHookFunc { // that took reflect.Kind instead of reflect.Type. func DecodeHookExec( raw DecodeHookFunc, - from reflect.Type, to reflect.Type, - data interface{}) (interface{}, error) { + from reflect.Value, to reflect.Value) (interface{}, error) { + switch f := typedDecodeHook(raw).(type) { case DecodeHookFuncType: - return f(from, to, data) + return f(from.Type(), to.Type(), from.Interface()) case DecodeHookFuncKind: - return f(from.Kind(), to.Kind(), data) + return f(from.Kind(), to.Kind(), from.Interface()) + case DecodeHookFuncValue: + return f(from, to) default: return nil, errors.New("invalid decode hook signature") } @@ -56,22 +60,16 @@ func DecodeHookExec( // The composed funcs are called in order, with the result of the // previous transformation. func ComposeDecodeHookFunc(fs ...DecodeHookFunc) DecodeHookFunc { - return func( - f reflect.Type, - t reflect.Type, - data interface{}) (interface{}, error) { + return func(f reflect.Value, t reflect.Value) (interface{}, error) { var err error + var data interface{} + newFrom := f for _, f1 := range fs { - data, err = DecodeHookExec(f1, f, t, data) + data, err = DecodeHookExec(f1, newFrom, t) if err != nil { return nil, err } - - // Modify the from kind to be correct with the new data - f = nil - if val := reflect.ValueOf(data); val.IsValid() { - f = val.Type() - } + newFrom = reflect.ValueOf(data) } return data, nil @@ -215,3 +213,44 @@ func WeaklyTypedHook( return data, nil } + +func RecursiveStructToMapHookFunc() DecodeHookFunc { + return func(f reflect.Value, t reflect.Value) (interface{}, error) { + if f.Kind() != reflect.Struct { + return f.Interface(), nil + } + + var i interface{} = struct{}{} + if t.Type() != reflect.TypeOf(&i).Elem() { + return f.Interface(), nil + } + + m := make(map[string]interface{}) + t.Set(reflect.ValueOf(m)) + + return f.Interface(), nil + } +} + +// TextUnmarshallerHookFunc returns a DecodeHookFunc that applies +// strings to the UnmarshalText function, when the target type +// implements the encoding.TextUnmarshaler interface +func TextUnmarshallerHookFunc() DecodeHookFuncType { + return func( + f reflect.Type, + t reflect.Type, + data interface{}) (interface{}, error) { + if f.Kind() != reflect.String { + return data, nil + } + result := reflect.New(t).Interface() + unmarshaller, ok := result.(encoding.TextUnmarshaler) + if !ok { + return data, nil + } + if err := unmarshaller.UnmarshalText([]byte(data.(string))); err != nil { + return nil, err + } + return result, nil + } +} diff --git a/vendor/github.com/mitchellh/mapstructure/go.mod b/vendor/github.com/mitchellh/mapstructure/go.mod index d2a7125620..a03ae97308 100644 --- a/vendor/github.com/mitchellh/mapstructure/go.mod +++ b/vendor/github.com/mitchellh/mapstructure/go.mod @@ -1 +1,3 @@ module github.com/mitchellh/mapstructure + +go 1.14 diff --git a/vendor/github.com/mitchellh/mapstructure/mapstructure.go b/vendor/github.com/mitchellh/mapstructure/mapstructure.go index 256ee63fbf..3643901f55 100644 --- a/vendor/github.com/mitchellh/mapstructure/mapstructure.go +++ b/vendor/github.com/mitchellh/mapstructure/mapstructure.go @@ -1,10 +1,161 @@ -// Package mapstructure exposes functionality to convert an arbitrary -// map[string]interface{} into a native Go structure. +// Package mapstructure exposes functionality to convert one arbitrary +// Go type into another, typically to convert a map[string]interface{} +// into a native Go structure. // // The Go structure can be arbitrarily complex, containing slices, // other structs, etc. and the decoder will properly decode nested // maps and so on into the proper structures in the native Go struct. // See the examples to see what the decoder is capable of. +// +// The simplest function to start with is Decode. +// +// Field Tags +// +// When decoding to a struct, mapstructure will use the field name by +// default to perform the mapping. For example, if a struct has a field +// "Username" then mapstructure will look for a key in the source value +// of "username" (case insensitive). +// +// type User struct { +// Username string +// } +// +// You can change the behavior of mapstructure by using struct tags. +// The default struct tag that mapstructure looks for is "mapstructure" +// but you can customize it using DecoderConfig. +// +// Renaming Fields +// +// To rename the key that mapstructure looks for, use the "mapstructure" +// tag and set a value directly. For example, to change the "username" example +// above to "user": +// +// type User struct { +// Username string `mapstructure:"user"` +// } +// +// Embedded Structs and Squashing +// +// Embedded structs are treated as if they're another field with that name. +// By default, the two structs below are equivalent when decoding with +// mapstructure: +// +// type Person struct { +// Name string +// } +// +// type Friend struct { +// Person +// } +// +// type Friend struct { +// Person Person +// } +// +// This would require an input that looks like below: +// +// map[string]interface{}{ +// "person": map[string]interface{}{"name": "alice"}, +// } +// +// If your "person" value is NOT nested, then you can append ",squash" to +// your tag value and mapstructure will treat it as if the embedded struct +// were part of the struct directly. Example: +// +// type Friend struct { +// Person `mapstructure:",squash"` +// } +// +// Now the following input would be accepted: +// +// map[string]interface{}{ +// "name": "alice", +// } +// +// When decoding from a struct to a map, the squash tag squashes the struct +// fields into a single map. Using the example structs from above: +// +// Friend{Person: Person{Name: "alice"}} +// +// Will be decoded into a map: +// +// map[string]interface{}{ +// "name": "alice", +// } +// +// DecoderConfig has a field that changes the behavior of mapstructure +// to always squash embedded structs. +// +// Remainder Values +// +// If there are any unmapped keys in the source value, mapstructure by +// default will silently ignore them. You can error by setting ErrorUnused +// in DecoderConfig. If you're using Metadata you can also maintain a slice +// of the unused keys. +// +// You can also use the ",remain" suffix on your tag to collect all unused +// values in a map. The field with this tag MUST be a map type and should +// probably be a "map[string]interface{}" or "map[interface{}]interface{}". +// See example below: +// +// type Friend struct { +// Name string +// Other map[string]interface{} `mapstructure:",remain"` +// } +// +// Given the input below, Other would be populated with the other +// values that weren't used (everything but "name"): +// +// map[string]interface{}{ +// "name": "bob", +// "address": "123 Maple St.", +// } +// +// Omit Empty Values +// +// When decoding from a struct to any other value, you may use the +// ",omitempty" suffix on your tag to omit that value if it equates to +// the zero value. The zero value of all types is specified in the Go +// specification. +// +// For example, the zero type of a numeric type is zero ("0"). If the struct +// field value is zero and a numeric type, the field is empty, and it won't +// be encoded into the destination type. +// +// type Source { +// Age int `mapstructure:",omitempty"` +// } +// +// Unexported fields +// +// Since unexported (private) struct fields cannot be set outside the package +// where they are defined, the decoder will simply skip them. +// +// For this output type definition: +// +// type Exported struct { +// private string // this unexported field will be skipped +// Public string +// } +// +// Using this map as input: +// +// map[string]interface{}{ +// "private": "I will be ignored", +// "Public": "I made it through!", +// } +// +// The following struct will be decoded: +// +// type Exported struct { +// private: "" // field is left with an empty string (zero value) +// Public: "I made it through!" +// } +// +// Other Configuration +// +// mapstructure is highly configurable. See the DecoderConfig struct +// for other features and options that are supported. package mapstructure import ( @@ -21,10 +172,11 @@ import ( // data transformations. See "DecodeHook" in the DecoderConfig // struct. // -// The type should be DecodeHookFuncType or DecodeHookFuncKind. -// Either is accepted. Types are a superset of Kinds (Types can return -// Kinds) and are generally a richer thing to use, but Kinds are simpler -// if you only need those. +// The type must be one of DecodeHookFuncType, DecodeHookFuncKind, or +// DecodeHookFuncValue. +// Values are a superset of Types (Values can return types), and Types are a +// superset of Kinds (Types can return Kinds) and are generally a richer thing +// to use, but Kinds are simpler if you only need those. // // The reason DecodeHookFunc is multi-typed is for backwards compatibility: // we started with Kinds and then realized Types were the better solution, @@ -40,15 +192,22 @@ type DecodeHookFuncType func(reflect.Type, reflect.Type, interface{}) (interface // source and target types. type DecodeHookFuncKind func(reflect.Kind, reflect.Kind, interface{}) (interface{}, error) +// DecodeHookFuncRaw is a DecodeHookFunc which has complete access to both the source and target +// values. +type DecodeHookFuncValue func(from reflect.Value, to reflect.Value) (interface{}, error) + // DecoderConfig is the configuration that is used to create a new decoder // and allows customization of various aspects of decoding. type DecoderConfig struct { // DecodeHook, if set, will be called before any decoding and any // type conversion (if WeaklyTypedInput is on). This lets you modify - // the values before they're set down onto the resulting struct. + // the values before they're set down onto the resulting struct. The + // DecodeHook is called for every map and value in the input. This means + // that if a struct has embedded fields with squash tags the decode hook + // is called only once with all of the input data, not once for each + // embedded struct. // - // If an error is returned, the entire decode will fail with that - // error. + // If an error is returned, the entire decode will fail with that error. DecodeHook DecodeHookFunc // If ErrorUnused is true, then it is an error for there to exist @@ -80,6 +239,14 @@ type DecoderConfig struct { // WeaklyTypedInput bool + // Squash will squash embedded structs. A squash tag may also be + // added to an individual struct field using a tag. For example: + // + // type Parent struct { + // Child `mapstructure:",squash"` + // } + Squash bool + // Metadata is the struct that will contain extra metadata about // the decoding. If this is nil, then no metadata will be tracked. Metadata *Metadata @@ -261,9 +428,7 @@ func (d *Decoder) decode(name string, input interface{}, outVal reflect.Value) e if d.config.DecodeHook != nil { // We have a DecodeHook, so let's pre-process the input. var err error - input, err = DecodeHookExec( - d.config.DecodeHook, - inputVal.Type(), outVal.Type(), input) + input, err = DecodeHookExec(d.config.DecodeHook, inputVal, outVal) if err != nil { return fmt.Errorf("error decoding '%s': %s", name, err) } @@ -271,6 +436,7 @@ func (d *Decoder) decode(name string, input interface{}, outVal reflect.Value) e var err error outputKind := getKind(outVal) + addMetaKey := true switch outputKind { case reflect.Bool: err = d.decodeBool(name, input, outVal) @@ -289,7 +455,7 @@ func (d *Decoder) decode(name string, input interface{}, outVal reflect.Value) e case reflect.Map: err = d.decodeMap(name, input, outVal) case reflect.Ptr: - err = d.decodePtr(name, input, outVal) + addMetaKey, err = d.decodePtr(name, input, outVal) case reflect.Slice: err = d.decodeSlice(name, input, outVal) case reflect.Array: @@ -303,7 +469,7 @@ func (d *Decoder) decode(name string, input interface{}, outVal reflect.Value) e // If we reached here, then we successfully decoded SOMETHING, so // mark the key as used if we're tracking metainput. - if d.config.Metadata != nil && name != "" { + if addMetaKey && d.config.Metadata != nil && name != "" { d.config.Metadata.Keys = append(d.config.Metadata.Keys, name) } @@ -314,7 +480,34 @@ func (d *Decoder) decode(name string, input interface{}, outVal reflect.Value) e // value to "data" of that type. func (d *Decoder) decodeBasic(name string, data interface{}, val reflect.Value) error { if val.IsValid() && val.Elem().IsValid() { - return d.decode(name, data, val.Elem()) + elem := val.Elem() + + // If we can't address this element, then its not writable. Instead, + // we make a copy of the value (which is a pointer and therefore + // writable), decode into that, and replace the whole value. + copied := false + if !elem.CanAddr() { + copied = true + + // Make *T + copy := reflect.New(elem.Type()) + + // *T = elem + copy.Elem().Set(elem) + + // Set elem so we decode into it + elem = copy + } + + // Decode. If we have an error then return. We also return right + // away if we're not a copy because that means we decoded directly. + if err := d.decode(name, data, elem); err != nil || !copied { + return err + } + + // If we're a copy, we need to set te final result + val.Set(elem.Elem()) + return nil } dataVal := reflect.ValueOf(data) @@ -386,8 +579,8 @@ func (d *Decoder) decodeString(name string, data interface{}, val reflect.Value) if !converted { return fmt.Errorf( - "'%s' expected type '%s', got unconvertible type '%s'", - name, val.Type(), dataVal.Type()) + "'%s' expected type '%s', got unconvertible type '%s', value: '%v'", + name, val.Type(), dataVal.Type(), data) } return nil @@ -412,7 +605,12 @@ func (d *Decoder) decodeInt(name string, data interface{}, val reflect.Value) er val.SetInt(0) } case dataKind == reflect.String && d.config.WeaklyTypedInput: - i, err := strconv.ParseInt(dataVal.String(), 0, val.Type().Bits()) + str := dataVal.String() + if str == "" { + str = "0" + } + + i, err := strconv.ParseInt(str, 0, val.Type().Bits()) if err == nil { val.SetInt(i) } else { @@ -428,8 +626,8 @@ func (d *Decoder) decodeInt(name string, data interface{}, val reflect.Value) er val.SetInt(i) default: return fmt.Errorf( - "'%s' expected type '%s', got unconvertible type '%s'", - name, val.Type(), dataVal.Type()) + "'%s' expected type '%s', got unconvertible type '%s', value: '%v'", + name, val.Type(), dataVal.Type(), data) } return nil @@ -438,6 +636,7 @@ func (d *Decoder) decodeInt(name string, data interface{}, val reflect.Value) er func (d *Decoder) decodeUint(name string, data interface{}, val reflect.Value) error { dataVal := reflect.Indirect(reflect.ValueOf(data)) dataKind := getKind(dataVal) + dataType := dataVal.Type() switch { case dataKind == reflect.Int: @@ -463,16 +662,33 @@ func (d *Decoder) decodeUint(name string, data interface{}, val reflect.Value) e val.SetUint(0) } case dataKind == reflect.String && d.config.WeaklyTypedInput: - i, err := strconv.ParseUint(dataVal.String(), 0, val.Type().Bits()) + str := dataVal.String() + if str == "" { + str = "0" + } + + i, err := strconv.ParseUint(str, 0, val.Type().Bits()) if err == nil { val.SetUint(i) } else { return fmt.Errorf("cannot parse '%s' as uint: %s", name, err) } + case dataType.PkgPath() == "encoding/json" && dataType.Name() == "Number": + jn := data.(json.Number) + i, err := jn.Int64() + if err != nil { + return fmt.Errorf( + "error decoding json.Number into %s: %s", name, err) + } + if i < 0 && !d.config.WeaklyTypedInput { + return fmt.Errorf("cannot parse '%s', %d overflows uint", + name, i) + } + val.SetUint(uint64(i)) default: return fmt.Errorf( - "'%s' expected type '%s', got unconvertible type '%s'", - name, val.Type(), dataVal.Type()) + "'%s' expected type '%s', got unconvertible type '%s', value: '%v'", + name, val.Type(), dataVal.Type(), data) } return nil @@ -502,8 +718,8 @@ func (d *Decoder) decodeBool(name string, data interface{}, val reflect.Value) e } default: return fmt.Errorf( - "'%s' expected type '%s', got unconvertible type '%s'", - name, val.Type(), dataVal.Type()) + "'%s' expected type '%s', got unconvertible type '%s', value: '%v'", + name, val.Type(), dataVal.Type(), data) } return nil @@ -528,7 +744,12 @@ func (d *Decoder) decodeFloat(name string, data interface{}, val reflect.Value) val.SetFloat(0) } case dataKind == reflect.String && d.config.WeaklyTypedInput: - f, err := strconv.ParseFloat(dataVal.String(), val.Type().Bits()) + str := dataVal.String() + if str == "" { + str = "0" + } + + f, err := strconv.ParseFloat(str, val.Type().Bits()) if err == nil { val.SetFloat(f) } else { @@ -544,8 +765,8 @@ func (d *Decoder) decodeFloat(name string, data interface{}, val reflect.Value) val.SetFloat(i) default: return fmt.Errorf( - "'%s' expected type '%s', got unconvertible type '%s'", - name, val.Type(), dataVal.Type()) + "'%s' expected type '%s', got unconvertible type '%s', value: '%v'", + name, val.Type(), dataVal.Type(), data) } return nil @@ -596,7 +817,7 @@ func (d *Decoder) decodeMapFromSlice(name string, dataVal reflect.Value, val ref for i := 0; i < dataVal.Len(); i++ { err := d.decode( - fmt.Sprintf("%s[%d]", name, i), + name+"["+strconv.Itoa(i)+"]", dataVal.Index(i).Interface(), val) if err != nil { return err @@ -629,7 +850,7 @@ func (d *Decoder) decodeMapFromMap(name string, dataVal reflect.Value, val refle } for _, k := range dataVal.MapKeys() { - fieldName := fmt.Sprintf("%s[%s]", name, k) + fieldName := name + "[" + k.String() + "]" // First decode the key into the proper type currentKey := reflect.Indirect(reflect.New(valKeyType)) @@ -678,27 +899,40 @@ func (d *Decoder) decodeMapFromStruct(name string, dataVal reflect.Value, val re } tagValue := f.Tag.Get(d.config.TagName) - tagParts := strings.Split(tagValue, ",") + keyName := f.Name + + // If Squash is set in the config, we squash the field down. + squash := d.config.Squash && v.Kind() == reflect.Struct && f.Anonymous // Determine the name of the key in the map - keyName := f.Name - if tagParts[0] != "" { - if tagParts[0] == "-" { + if index := strings.Index(tagValue, ","); index != -1 { + if tagValue[:index] == "-" { + continue + } + // If "omitempty" is specified in the tag, it ignores empty values. + if strings.Index(tagValue[index+1:], "omitempty") != -1 && isEmptyValue(v) { continue } - keyName = tagParts[0] - } - // If "squash" is specified in the tag, we squash the field down. - squash := false - for _, tag := range tagParts[1:] { - if tag == "squash" { - squash = true - break + // If "squash" is specified in the tag, we squash the field down. + squash = !squash && strings.Index(tagValue[index+1:], "squash") != -1 + if squash { + // When squashing, the embedded type can be a pointer to a struct. + if v.Kind() == reflect.Ptr && v.Elem().Kind() == reflect.Struct { + v = v.Elem() + } + + // The final type must be a struct + if v.Kind() != reflect.Struct { + return fmt.Errorf("cannot squash non-struct type '%s'", v.Type()) + } } - } - if squash && v.Kind() != reflect.Struct { - return fmt.Errorf("cannot squash non-struct type '%s'", v.Type()) + keyName = tagValue[:index] + } else if len(tagValue) > 0 { + if tagValue == "-" { + continue + } + keyName = tagValue } switch v.Kind() { @@ -713,11 +947,22 @@ func (d *Decoder) decodeMapFromStruct(name string, dataVal reflect.Value, val re mType := reflect.MapOf(vKeyType, vElemType) vMap := reflect.MakeMap(mType) - err := d.decode(keyName, x.Interface(), vMap) + // Creating a pointer to a map so that other methods can completely + // overwrite the map if need be (looking at you decodeMapFromMap). The + // indirection allows the underlying map to be settable (CanSet() == true) + // where as reflect.MakeMap returns an unsettable map. + addrVal := reflect.New(vMap.Type()) + reflect.Indirect(addrVal).Set(vMap) + + err := d.decode(keyName, x.Interface(), reflect.Indirect(addrVal)) if err != nil { return err } + // the underlying map may have been completely overwritten so pull + // it indirectly out of the enclosing value. + vMap = reflect.Indirect(addrVal) + if squash { for _, k := range vMap.MapKeys() { valMap.SetMapIndex(k, vMap.MapIndex(k)) @@ -738,7 +983,7 @@ func (d *Decoder) decodeMapFromStruct(name string, dataVal reflect.Value, val re return nil } -func (d *Decoder) decodePtr(name string, data interface{}, val reflect.Value) error { +func (d *Decoder) decodePtr(name string, data interface{}, val reflect.Value) (bool, error) { // If the input data is nil, then we want to just set the output // pointer to be nil as well. isNil := data == nil @@ -759,7 +1004,7 @@ func (d *Decoder) decodePtr(name string, data interface{}, val reflect.Value) er val.Set(nilValue) } - return nil + return true, nil } // Create an element of the concrete (non pointer) type and decode @@ -773,16 +1018,16 @@ func (d *Decoder) decodePtr(name string, data interface{}, val reflect.Value) er } if err := d.decode(name, data, reflect.Indirect(realVal)); err != nil { - return err + return false, err } val.Set(realVal) } else { if err := d.decode(name, data, reflect.Indirect(val)); err != nil { - return err + return false, err } } - return nil + return false, nil } func (d *Decoder) decodeFunc(name string, data interface{}, val reflect.Value) error { @@ -791,8 +1036,8 @@ func (d *Decoder) decodeFunc(name string, data interface{}, val reflect.Value) e dataVal := reflect.Indirect(reflect.ValueOf(data)) if val.Type() != dataVal.Type() { return fmt.Errorf( - "'%s' expected type '%s', got unconvertible type '%s'", - name, val.Type(), dataVal.Type()) + "'%s' expected type '%s', got unconvertible type '%s', value: '%v'", + name, val.Type(), dataVal.Type(), data) } val.Set(dataVal) return nil @@ -805,8 +1050,8 @@ func (d *Decoder) decodeSlice(name string, data interface{}, val reflect.Value) valElemType := valType.Elem() sliceType := reflect.SliceOf(valElemType) - valSlice := val - if valSlice.IsNil() || d.config.ZeroFields { + // If we have a non array/slice type then we first attempt to convert. + if dataValKind != reflect.Array && dataValKind != reflect.Slice { if d.config.WeaklyTypedInput { switch { // Slice and array we use the normal logic @@ -833,18 +1078,17 @@ func (d *Decoder) decodeSlice(name string, data interface{}, val reflect.Value) } } - // Check input type - if dataValKind != reflect.Array && dataValKind != reflect.Slice { - return fmt.Errorf( - "'%s': source data must be an array or slice, got %s", name, dataValKind) - - } + return fmt.Errorf( + "'%s': source data must be an array or slice, got %s", name, dataValKind) + } - // If the input value is empty, then don't allocate since non-nil != nil - if dataVal.Len() == 0 { - return nil - } + // If the input value is nil, then don't allocate since empty != nil + if dataVal.IsNil() { + return nil + } + valSlice := val + if valSlice.IsNil() || d.config.ZeroFields { // Make a new slice to hold our result, same size as the original data. valSlice = reflect.MakeSlice(sliceType, dataVal.Len(), dataVal.Len()) } @@ -859,7 +1103,7 @@ func (d *Decoder) decodeSlice(name string, data interface{}, val reflect.Value) } currentField := valSlice.Index(i) - fieldName := fmt.Sprintf("%s[%d]", name, i) + fieldName := name + "[" + strconv.Itoa(i) + "]" if err := d.decode(fieldName, currentData, currentField); err != nil { errors = appendErrors(errors, err) } @@ -926,7 +1170,7 @@ func (d *Decoder) decodeArray(name string, data interface{}, val reflect.Value) currentData := dataVal.Index(i).Interface() currentField := valArray.Index(i) - fieldName := fmt.Sprintf("%s[%d]", name, i) + fieldName := name + "[" + strconv.Itoa(i) + "]" if err := d.decode(fieldName, currentData, currentField); err != nil { errors = appendErrors(errors, err) } @@ -962,13 +1206,23 @@ func (d *Decoder) decodeStruct(name string, data interface{}, val reflect.Value) // Not the most efficient way to do this but we can optimize later if // we want to. To convert from struct to struct we go to map first // as an intermediary. - m := make(map[string]interface{}) - mval := reflect.Indirect(reflect.ValueOf(&m)) - if err := d.decodeMapFromStruct(name, dataVal, mval, mval); err != nil { + + // Make a new map to hold our result + mapType := reflect.TypeOf((map[string]interface{})(nil)) + mval := reflect.MakeMap(mapType) + + // Creating a pointer to a map so that other methods can completely + // overwrite the map if need be (looking at you decodeMapFromMap). The + // indirection allows the underlying map to be settable (CanSet() == true) + // where as reflect.MakeMap returns an unsettable map. + addrVal := reflect.New(mval.Type()) + + reflect.Indirect(addrVal).Set(mval) + if err := d.decodeMapFromStruct(name, dataVal, reflect.Indirect(addrVal), mval); err != nil { return err } - result := d.decodeStructFromMap(name, mval, val) + result := d.decodeStructFromMap(name, reflect.Indirect(addrVal), val) return result default: @@ -1005,6 +1259,11 @@ func (d *Decoder) decodeStructFromMap(name string, dataVal, val reflect.Value) e field reflect.StructField val reflect.Value } + + // remainField is set to a valid field set with the "remain" tag if + // we are keeping track of remaining values. + var remainField *field + fields := []field{} for len(structs) > 0 { structVal := structs[0] @@ -1014,30 +1273,47 @@ func (d *Decoder) decodeStructFromMap(name string, dataVal, val reflect.Value) e for i := 0; i < structType.NumField(); i++ { fieldType := structType.Field(i) - fieldKind := fieldType.Type.Kind() + fieldVal := structVal.Field(i) + if fieldVal.Kind() == reflect.Ptr && fieldVal.Elem().Kind() == reflect.Struct { + // Handle embedded struct pointers as embedded structs. + fieldVal = fieldVal.Elem() + } // If "squash" is specified in the tag, we squash the field down. - squash := false + squash := d.config.Squash && fieldVal.Kind() == reflect.Struct && fieldType.Anonymous + remain := false + + // We always parse the tags cause we're looking for other tags too tagParts := strings.Split(fieldType.Tag.Get(d.config.TagName), ",") for _, tag := range tagParts[1:] { if tag == "squash" { squash = true break } + + if tag == "remain" { + remain = true + break + } } if squash { - if fieldKind != reflect.Struct { + if fieldVal.Kind() != reflect.Struct { errors = appendErrors(errors, - fmt.Errorf("%s: unsupported type for squash: %s", fieldType.Name, fieldKind)) + fmt.Errorf("%s: unsupported type for squash: %s", fieldType.Name, fieldVal.Kind())) } else { - structs = append(structs, structVal.FieldByName(fieldType.Name)) + structs = append(structs, fieldVal) } continue } - // Normal struct field, store it away - fields = append(fields, field{fieldType, structVal.Field(i)}) + // Build our field + if remain { + remainField = &field{fieldType, fieldVal} + } else { + // Normal struct field, store it away + fields = append(fields, field{fieldType, fieldVal}) + } } } @@ -1078,9 +1354,6 @@ func (d *Decoder) decodeStructFromMap(name string, dataVal, val reflect.Value) e } } - // Delete the key we're using from the unused map so we stop tracking - delete(dataValKeysUnused, rawMapKey.Interface()) - if !fieldValue.IsValid() { // This should never happen panic("field is not valid") @@ -1092,10 +1365,13 @@ func (d *Decoder) decodeStructFromMap(name string, dataVal, val reflect.Value) e continue } + // Delete the key we're using from the unused map so we stop tracking + delete(dataValKeysUnused, rawMapKey.Interface()) + // If the name is empty string, then we're at the root, and we // don't dot-join the fields. if name != "" { - fieldName = fmt.Sprintf("%s.%s", name, fieldName) + fieldName = name + "." + fieldName } if err := d.decode(fieldName, rawMapVal.Interface(), fieldValue); err != nil { @@ -1103,6 +1379,25 @@ func (d *Decoder) decodeStructFromMap(name string, dataVal, val reflect.Value) e } } + // If we have a "remain"-tagged field and we have unused keys then + // we put the unused keys directly into the remain field. + if remainField != nil && len(dataValKeysUnused) > 0 { + // Build a map of only the unused values + remain := map[interface{}]interface{}{} + for key := range dataValKeysUnused { + remain[key] = dataVal.MapIndex(reflect.ValueOf(key)).Interface() + } + + // Decode it as-if we were just decoding this map onto our map. + if err := d.decodeMap(name, remain, remainField.val); err != nil { + errors = appendErrors(errors, err) + } + + // Set the map to nil so we have none so that the next check will + // not error (ErrorUnused) + dataValKeysUnused = nil + } + if d.config.ErrorUnused && len(dataValKeysUnused) > 0 { keys := make([]string, 0, len(dataValKeysUnused)) for rawKey := range dataValKeysUnused { @@ -1123,7 +1418,7 @@ func (d *Decoder) decodeStructFromMap(name string, dataVal, val reflect.Value) e for rawKey := range dataValKeysUnused { key := rawKey.(string) if name != "" { - key = fmt.Sprintf("%s.%s", name, key) + key = name + "." + key } d.config.Metadata.Unused = append(d.config.Metadata.Unused, key) @@ -1133,6 +1428,24 @@ func (d *Decoder) decodeStructFromMap(name string, dataVal, val reflect.Value) e return nil } +func isEmptyValue(v reflect.Value) bool { + switch getKind(v) { + case reflect.Array, reflect.Map, reflect.Slice, reflect.String: + return v.Len() == 0 + case reflect.Bool: + return !v.Bool() + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return v.Int() == 0 + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + return v.Uint() == 0 + case reflect.Float32, reflect.Float64: + return v.Float() == 0 + case reflect.Interface, reflect.Ptr: + return v.IsNil() + } + return false +} + func getKind(val reflect.Value) reflect.Kind { kind := val.Kind() diff --git a/vendor/github.com/onsi/gomega/types/types.go b/vendor/github.com/onsi/gomega/types/types.go index ac59a3a5a4..c75fcb3cce 100644 --- a/vendor/github.com/onsi/gomega/types/types.go +++ b/vendor/github.com/onsi/gomega/types/types.go @@ -1,21 +1,35 @@ package types -type TWithHelper interface { - Helper() -} +import ( + "time" +) type GomegaFailHandler func(message string, callerSkip ...int) -type GomegaFailWrapper struct { - Fail GomegaFailHandler - TWithHelper TWithHelper -} - //A simple *testing.T interface wrapper type GomegaTestingT interface { + Helper() Fatalf(format string, args ...interface{}) } +// Gomega represents an object that can perform synchronous and assynchronous assertions with Gomega matchers +type Gomega interface { + Ω(actual interface{}, extra ...interface{}) Assertion + Expect(actual interface{}, extra ...interface{}) Assertion + ExpectWithOffset(offset int, actual interface{}, extra ...interface{}) Assertion + + Eventually(actual interface{}, intervals ...interface{}) AsyncAssertion + EventuallyWithOffset(offset int, actual interface{}, intervals ...interface{}) AsyncAssertion + + Consistently(actual interface{}, intervals ...interface{}) AsyncAssertion + ConsistentlyWithOffset(offset int, actual interface{}, intervals ...interface{}) AsyncAssertion + + SetDefaultEventuallyTimeout(time.Duration) + SetDefaultEventuallyPollingInterval(time.Duration) + SetDefaultConsistentlyDuration(time.Duration) + SetDefaultConsistentlyPollingInterval(time.Duration) +} + //All Gomega matchers must implement the GomegaMatcher interface // //For details on writing custom matchers, check out: http://onsi.github.io/gomega/#adding-your-own-matchers @@ -24,3 +38,42 @@ type GomegaMatcher interface { FailureMessage(actual interface{}) (message string) NegatedFailureMessage(actual interface{}) (message string) } + +/* +GomegaMatchers that also match the OracleMatcher interface can convey information about +whether or not their result will change upon future attempts. + +This allows `Eventually` and `Consistently` to short circuit if success becomes impossible. + +For example, a process' exit code can never change. So, gexec's Exit matcher returns `true` +for `MatchMayChangeInTheFuture` until the process exits, at which point it returns `false` forevermore. +*/ +type OracleMatcher interface { + MatchMayChangeInTheFuture(actual interface{}) bool +} + +func MatchMayChangeInTheFuture(matcher GomegaMatcher, value interface{}) bool { + oracleMatcher, ok := matcher.(OracleMatcher) + if !ok { + return true + } + + return oracleMatcher.MatchMayChangeInTheFuture(value) +} + +// AsyncAssertions are returned by Eventually and Consistently and enable matchers to be polled repeatedly to ensure +// they are eventually satisfied +type AsyncAssertion interface { + Should(matcher GomegaMatcher, optionalDescription ...interface{}) bool + ShouldNot(matcher GomegaMatcher, optionalDescription ...interface{}) bool +} + +// Assertions are returned by Ω and Expect and enable assertions against Gomega matchers +type Assertion interface { + Should(matcher GomegaMatcher, optionalDescription ...interface{}) bool + ShouldNot(matcher GomegaMatcher, optionalDescription ...interface{}) bool + + To(matcher GomegaMatcher, optionalDescription ...interface{}) bool + ToNot(matcher GomegaMatcher, optionalDescription ...interface{}) bool + NotTo(matcher GomegaMatcher, optionalDescription ...interface{}) bool +} diff --git a/vendor/github.com/operator-framework/api/crds/operators.coreos.com_catalogsources.yaml b/vendor/github.com/operator-framework/api/crds/operators.coreos.com_catalogsources.yaml index 8464f6c8ec..4518bc3037 100644 --- a/vendor/github.com/operator-framework/api/crds/operators.coreos.com_catalogsources.yaml +++ b/vendor/github.com/operator-framework/api/crds/operators.coreos.com_catalogsources.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.6.0 + controller-gen.kubebuilder.io/version: v0.6.2 creationTimestamp: null name: catalogsources.operators.coreos.com spec: diff --git a/vendor/github.com/operator-framework/api/crds/operators.coreos.com_clusterserviceversions.yaml b/vendor/github.com/operator-framework/api/crds/operators.coreos.com_clusterserviceversions.yaml index 231df701d0..7d3a2abe33 100644 --- a/vendor/github.com/operator-framework/api/crds/operators.coreos.com_clusterserviceversions.yaml +++ b/vendor/github.com/operator-framework/api/crds/operators.coreos.com_clusterserviceversions.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.6.0 + controller-gen.kubebuilder.io/version: v0.6.2 creationTimestamp: null name: clusterserviceversions.operators.coreos.com spec: diff --git a/vendor/github.com/operator-framework/api/crds/operators.coreos.com_installplans.yaml b/vendor/github.com/operator-framework/api/crds/operators.coreos.com_installplans.yaml index 506b2b1554..616f51ba0d 100644 --- a/vendor/github.com/operator-framework/api/crds/operators.coreos.com_installplans.yaml +++ b/vendor/github.com/operator-framework/api/crds/operators.coreos.com_installplans.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.6.0 + controller-gen.kubebuilder.io/version: v0.6.2 creationTimestamp: null name: installplans.operators.coreos.com spec: diff --git a/vendor/github.com/operator-framework/api/crds/operators.coreos.com_operatorconditions.yaml b/vendor/github.com/operator-framework/api/crds/operators.coreos.com_operatorconditions.yaml index af96a5c20b..eb9a6d5a79 100644 --- a/vendor/github.com/operator-framework/api/crds/operators.coreos.com_operatorconditions.yaml +++ b/vendor/github.com/operator-framework/api/crds/operators.coreos.com_operatorconditions.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.6.0 + controller-gen.kubebuilder.io/version: v0.6.2 creationTimestamp: null name: operatorconditions.operators.coreos.com spec: diff --git a/vendor/github.com/operator-framework/api/crds/operators.coreos.com_operatorgroups.yaml b/vendor/github.com/operator-framework/api/crds/operators.coreos.com_operatorgroups.yaml index 0927d45a0e..e59131ac3a 100644 --- a/vendor/github.com/operator-framework/api/crds/operators.coreos.com_operatorgroups.yaml +++ b/vendor/github.com/operator-framework/api/crds/operators.coreos.com_operatorgroups.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.6.0 + controller-gen.kubebuilder.io/version: v0.6.2 creationTimestamp: null name: operatorgroups.operators.coreos.com spec: diff --git a/vendor/github.com/operator-framework/api/crds/operators.coreos.com_operators.yaml b/vendor/github.com/operator-framework/api/crds/operators.coreos.com_operators.yaml index 9c47bf45f3..ef206c5e7a 100644 --- a/vendor/github.com/operator-framework/api/crds/operators.coreos.com_operators.yaml +++ b/vendor/github.com/operator-framework/api/crds/operators.coreos.com_operators.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.6.0 + controller-gen.kubebuilder.io/version: v0.6.2 creationTimestamp: null name: operators.operators.coreos.com spec: diff --git a/vendor/github.com/operator-framework/api/crds/operators.coreos.com_subscriptions.yaml b/vendor/github.com/operator-framework/api/crds/operators.coreos.com_subscriptions.yaml index 4b92cac164..f4070f0878 100644 --- a/vendor/github.com/operator-framework/api/crds/operators.coreos.com_subscriptions.yaml +++ b/vendor/github.com/operator-framework/api/crds/operators.coreos.com_subscriptions.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.6.0 + controller-gen.kubebuilder.io/version: v0.6.2 creationTimestamp: null name: subscriptions.operators.coreos.com spec: diff --git a/vendor/github.com/operator-framework/api/crds/zz_defs.go b/vendor/github.com/operator-framework/api/crds/zz_defs.go index 762a868c8e..e7af33e538 100644 --- a/vendor/github.com/operator-framework/api/crds/zz_defs.go +++ b/vendor/github.com/operator-framework/api/crds/zz_defs.go @@ -84,7 +84,7 @@ func (fi bindataFileInfo) Sys() interface{} { return nil } -var _operatorsCoreosCom_catalogsourcesYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x5a\x6d\x73\x1b\xb7\x8f\x7f\xef\x4f\x81\xf1\xdd\x4c\xe2\x9c\xb4\x8e\x93\x4e\xae\xd5\x34\xcd\xb8\xce\xa5\xe7\x69\x9c\x78\xec\xa4\x33\x77\xb1\xef\x0a\xed\x42\x2b\xd6\x5c\x72\x4b\x72\x6d\xab\x9d\x7e\xf7\xff\x80\x0f\xbb\x7a\x5a\x49\x76\x1b\xbd\xb1\xc5\x07\x00\x04\x01\xfc\x00\x50\x58\x8b\x5f\xc8\x58\xa1\xd5\x08\xb0\x16\x74\xef\x48\xf1\x37\x9b\xdd\x7c\x6b\x33\xa1\x0f\x6f\x8f\xf6\x6e\x84\x2a\x46\x70\xd2\x58\xa7\xab\x0b\xb2\xba\x31\x39\xbd\xa5\x89\x50\xc2\x09\xad\xf6\x2a\x72\x58\xa0\xc3\xd1\x1e\x00\x2a\xa5\x1d\xf2\xb0\xe5\xaf\x00\xb9\x56\xce\x68\x29\xc9\x0c\x4b\x52\xd9\x4d\x33\xa6\x71\x23\x64\x41\xc6\x13\x4f\xac\x6f\x9f\x67\xaf\xb2\xe7\x7b\x00\xb9\x21\xbf\xfd\x93\xa8\xc8\x3a\xac\xea\x11\xa8\x46\xca\x3d\x00\x85\x15\x8d\x20\x47\x87\x52\x97\x41\x08\x9b\xe9\x9a\x0c\x3a\x6d\x6c\x96\x6b\x43\x9a\xff\x54\x7b\xb6\xa6\x9c\xb9\x97\x46\x37\xf5\x08\xd6\xae\x09\xf4\x92\x90\xe8\xa8\xd4\x46\xa4\xef\x00\x43\xd0\xb2\xf2\xff\xc7\xc3\x07\xb6\x97\x9e\xad\x1f\x97\xc2\xba\x9f\x57\xe7\xde\x0b\xeb\xfc\x7c\x2d\x1b\x83\x72\x59\x60\x3f\x65\xa7\xda\xb8\x0f\x1d\x7b\x66\x97\xa3\xb3\x26\x0f\xd3\x42\x95\x8d\x44\xb3\xb4\x77\x0f\xc0\xe6\xba\xa6\x11\xf8\xad\x35\xe6\x54\xec\x01\x44\x15\x46\x52\x43\xc0\xa2\xf0\xd7\x82\xf2\xdc\x08\xe5\xc8\x9c\x68\xd9\x54\xaa\x65\xc5\x6b\x0a\xb2\xb9\x11\xb5\xf3\xaa\xff\x34\x25\xa8\x0d\x39\x37\xf3\x2a\x01\x3d\x01\x37\xa5\xc4\xbb\xdd\x05\xf0\x9b\xd5\xea\x1c\xdd\x74\x04\x19\x6b\x38\x2b\x84\xad\x25\xce\x58\x9a\xb9\x55\xe1\x9a\xde\x86\xb9\xb9\x71\x37\x63\xd1\xad\x33\x42\x95\x9b\x44\xe1\x75\xbb\xcb\x10\x54\xf3\x69\x56\xaf\x8a\xb0\x34\xb8\x2b\xff\xba\x19\x4b\x61\xa7\x64\x76\x17\xa2\xdd\xb2\x22\xc3\xf9\x9a\x99\x1e\x41\xe6\x88\x26\x87\xca\x56\x9c\x61\x85\xc1\x71\xb9\x7a\xc6\x02\x5d\x1a\x0c\x8b\x6e\x8f\x50\xd6\x53\x3c\x8a\x83\x36\x9f\x52\x85\x9d\x3d\xe8\x9a\xd4\xf1\xf9\xe9\x2f\x2f\x2f\x97\x26\x60\x51\x3b\x0b\x76\x0e\xc2\x02\x82\xa1\x5a\x5b\xe1\xb4\x99\xb1\xb6\x4e\x2e\x7f\xb1\x03\x38\xb9\x78\x6b\x07\x80\xaa\x68\x1d\x0f\x6a\xcc\x6f\xb0\x24\x9b\xad\xc8\xaa\xc7\xbf\x51\xee\xe6\x86\x0d\xfd\xde\x08\x43\xc5\xbc\x14\xac\x9e\xa4\x93\xa5\x61\xd6\xff\xdc\x50\x6d\x98\xa7\x9b\x73\xe4\xf0\x99\x8b\x72\x0b\xe3\x4b\x27\x7c\xc2\x6a\x08\xeb\xa0\xe0\x00\x47\xd6\x9b\x40\xf4\x31\x2a\xa2\xee\x82\x69\x08\xcb\xe7\x37\x64\x49\x85\x90\xc7\xc3\xa8\xe2\x99\x32\xb8\x24\xc3\x1b\xd9\xdd\x1b\x59\x70\x24\xbc\x25\xe3\xc0\x50\xae\x4b\x25\xfe\x68\xa9\x59\x70\xda\xb3\x91\xe8\xc8\x3a\xf0\x5e\xab\x50\xc2\x2d\xca\x86\x82\x2a\x2b\x9c\x81\x21\xa6\x0b\x8d\x9a\xa3\xe0\x97\xd8\x0c\xce\xb4\x21\x10\x6a\xa2\x47\x30\x75\xae\xb6\xa3\xc3\xc3\x52\xb8\x14\xc3\x73\x5d\x55\x8d\x12\x6e\x76\xe8\xc3\xb1\x18\x37\x1c\x0e\x0f\x0b\xba\x25\x79\x68\x45\x39\x44\x93\x4f\x85\xa3\xdc\x35\x86\x0e\xb1\x16\x43\x2f\xac\xf2\x71\x3c\xab\x8a\x7f\x33\x31\xea\xdb\x27\x4b\xea\x5b\x6b\xcc\x90\xc2\xe6\x46\x5d\x73\xf0\x0c\x56\x14\xb6\x87\xb3\x74\x2a\xe5\x21\xd6\xca\xc5\x7f\x5d\x7e\x82\x24\x40\x50\x7b\xd0\x70\xb7\xd4\x76\xca\x66\x45\x09\x35\x21\x13\x56\x4e\x8c\xae\x3c\x15\x52\x45\xad\x85\x72\xc1\xa5\xa5\x20\xe5\xc0\x36\xe3\x4a\x38\xeb\x6d\x8e\xac\xe3\x7b\xc8\xe0\xc4\x43\x18\x8c\x09\x9a\x9a\x3d\xa9\xc8\xe0\x54\xc1\x09\x56\x24\x4f\xd0\xd2\x57\x57\x35\x6b\xd4\x0e\x59\x7d\xbb\x2b\x7b\x1e\x81\x57\x37\xac\xf8\x18\x40\x42\xc8\x9d\x16\xf7\x39\x25\x04\x0f\x5c\x17\x81\x61\x83\x2f\xf2\x07\x8b\xc2\x90\x5d\x33\xb1\xe2\x90\x61\x61\xb0\x93\xa9\xb6\x7c\x7f\xe8\xe0\xe3\xfb\x33\xc8\x51\x41\x63\x89\x9d\x27\xd7\x4a\xb1\x41\x38\x0d\xc8\x58\x36\xa4\x7b\x61\xbd\x01\x19\x2a\x85\x75\x66\x96\xc1\x3b\x6d\x2a\x74\x23\xf8\x3e\x0d\x0d\x3d\x39\x6d\x40\xd4\x3f\x8c\xbe\xaf\xb5\x71\x3f\xc0\x47\x25\x67\x4c\xb4\x80\xbb\x29\x29\xb8\x6c\xcf\x06\xaf\xe7\xbe\xfc\x64\xea\x3c\x83\xd3\x52\x69\x93\x56\xb2\x55\x9d\x56\x58\x12\x4c\x04\x49\x6f\xd7\x96\x5c\xb6\x7c\x83\x1b\x6f\x11\x42\xba\x34\x11\xe5\x19\xd6\x5b\x55\x73\x92\x56\x32\x2f\x66\x3f\x0f\xde\xdd\xa4\xd3\xde\x94\xf9\x48\xfc\x2f\xe6\x37\x80\x91\x4b\x85\xf5\xd0\x7a\xb7\x99\x53\xd3\x6e\x1a\x38\x49\x04\x58\x7f\xdd\xf0\x69\x8c\x5c\xd9\x43\x8f\x3d\x7f\xb2\x07\xef\xed\xd2\x90\xad\x4a\x3b\x5b\x87\x22\x3b\xf0\x10\xf9\x26\xc1\xd6\xfa\x0c\x6c\xf4\x1b\xf0\xbe\x33\x46\x4b\xaf\xbe\xe9\x11\x28\xa0\x5e\x21\xd0\xad\xfa\x16\x6c\xf1\x2f\xfe\x74\xc4\xd7\xcf\x6f\x39\x32\xf8\xb8\x12\xd9\x3f\x8a\x82\x60\x7f\xd8\x7a\x25\xc1\x6b\xd8\xbf\x55\x9b\x30\x0c\x93\x3d\xfa\xf2\x01\x85\x22\x13\xa8\xb1\x0d\x0b\x65\x1d\x2a\x27\xd0\x91\xcf\x40\xa2\x37\x47\x4b\xbe\x13\x6e\xba\xab\x15\x47\x3f\x9e\x40\x84\x91\x81\xf7\x9d\x18\x9b\x3a\x47\x16\xc1\xd1\x1f\x6c\xd4\xb5\x11\xda\x08\x37\xdb\x1e\xe5\xce\xe3\xca\xc8\x13\xad\x15\xa5\xe2\x88\x77\x47\xa2\x9c\xba\x94\x1f\xc4\x4c\x14\x12\x14\xea\xc4\x42\xfc\xc1\xc0\x48\x15\x58\x1d\xe2\xa3\x70\x3e\x3c\x8e\x89\x15\x68\x9b\x8a\x0a\x18\xcf\x3c\x8d\x82\x6a\x52\x05\xa9\x7c\xe6\x31\x55\xde\x92\xc9\xe0\xb3\xe5\x9b\x82\xff\x16\x25\xe7\xbd\x91\xa9\x50\x85\xe0\xc2\xc8\x06\x92\x1e\x4e\x97\x24\x10\x96\x55\x37\x21\xc3\x71\x50\xb3\xfa\xa5\xbe\x6b\x29\x50\xb1\xb4\xde\x42\xd1\x78\xa4\x5f\x16\xa2\x61\x3d\x64\x3e\xfd\x36\xa8\xca\x36\x8c\x25\x0d\xc6\xd4\x80\x8f\x54\xea\x80\xe9\x3e\xef\x14\xb7\x5e\x0b\x8a\x4a\xf4\xff\x8b\x10\x88\x5b\x1a\x42\xb9\x97\x2f\x02\xdd\x82\x26\xd8\x48\x17\x29\x79\xa0\x58\x3a\x0c\x5b\x0e\x34\x2a\x28\x9f\x8a\x8e\xf9\x9d\x4f\xdf\xc6\x04\xcf\x03\xa9\x75\xfb\x98\xad\xe5\x00\xbc\x28\xb2\x85\x3b\x21\x25\xef\x35\xa8\x6e\xa8\x00\x49\xf7\x22\xd7\xa5\xc1\x7a\x2a\x72\x94\x72\xe6\xdd\xb4\x00\xad\x80\x33\x11\x8e\xe1\x1b\x40\x83\x33\xc3\x72\xa1\x98\x88\x96\x96\xca\x8c\x07\x07\x4f\x4b\xb9\x21\xb7\x1d\x88\x2f\xc3\xba\x2e\xe5\x62\x78\x63\x15\x47\x02\xc1\x46\xa2\xcd\x25\xb4\xc1\x3c\x67\x47\xf2\xa6\xab\x95\xe3\x44\x6d\xa9\xa8\xca\xe0\xd4\xb1\x15\x8d\x39\xef\x75\x1a\x6e\x88\xea\x60\x69\x5c\x5e\x83\xad\x50\xca\x01\x17\xc4\x39\x01\x61\x3e\x0d\xea\x54\x14\xd1\x8c\xc0\x19\x41\x05\x4c\xb4\x01\xba\x25\x8e\x17\xf1\x6e\x48\x31\x9a\xf5\x6a\x03\x8d\x59\x28\x4e\xd3\x47\x38\xaa\x7a\xc2\xe9\x66\x35\xb6\x31\x65\xbb\x26\xbb\x58\x14\x81\x3b\x55\xbc\xb6\x6b\x2e\x3c\x80\x75\xc8\x52\x2f\x9d\x41\x47\xe5\xf6\x58\xf3\x79\x61\x79\x5b\xe5\x4c\xf5\x5d\xca\x77\x57\x9c\x9c\x03\xaf\x4d\x77\x5b\x08\x9b\xb3\xa7\x53\xc1\x49\x86\x15\x36\xdc\x29\xaa\x50\xb6\xdc\xa2\x0c\xa6\x90\x08\xd7\x5a\x4a\xef\xf2\x8d\x09\x35\x12\x57\x33\xa8\x80\xaa\x31\x15\x05\xd7\x40\x49\x94\x1e\x98\xdb\x02\xb1\xdb\x50\x30\xe1\xc3\xb9\x96\x72\x33\x8a\xf5\xb2\xd8\x85\x0d\x7f\x92\x02\xfa\x57\x2c\x43\x5f\xd2\x98\xb0\xad\xcf\x14\xe4\xc8\x54\x42\x51\x30\x0d\x51\x51\xa7\xd8\x31\xb9\x3b\x22\x05\xf9\x94\xf2\x9b\xd6\x95\x62\xd5\xb8\x74\x6b\xb1\x64\x5d\x8c\x58\x5d\x41\xae\xa5\xf4\x65\xa7\x25\x02\x31\x01\x04\x45\x77\x69\xcf\x92\x8f\xce\x05\x7b\xbc\x45\x21\x71\x2c\xc9\xa3\x66\xfb\x6d\xb0\x50\xbd\x26\x3c\xaf\x1b\x29\xa9\xf0\xf7\x5d\x5e\x9c\x9f\x80\x33\x38\x99\x88\x9c\xa7\x0a\x61\x28\x77\xe1\xc0\xbd\x47\x58\xe7\xbd\x8b\x37\xb6\xc6\x23\xac\x43\xd7\xac\xdc\xd1\x86\x0b\xde\x74\xb1\xb9\x56\xa1\x97\xb6\x3d\x3e\x5e\xb4\xa5\x68\x80\x02\xc7\xd9\x09\xfb\xc5\x62\xd7\x24\x83\x0f\xda\x51\xf0\x90\x33\xb2\x0c\xbb\x5e\x41\x17\x84\x56\xab\xb9\xe8\xca\x44\xb4\x11\xa5\x50\x28\xe3\xa1\x7c\xcd\xc9\x35\x8c\xd0\x6a\x00\x77\x53\x91\x4f\x7d\xb5\x3b\x26\xa8\x44\x69\xd0\xb5\x41\xb1\x93\x3b\xa2\x4b\xc4\xc5\x49\xc3\x45\x67\x06\xc7\x6a\xe6\xef\x7b\x42\xc8\x03\x4c\xd9\x19\x5d\x34\x39\xe7\x4b\x1c\x60\xb9\xac\xea\x88\xfc\xa3\x61\x74\x41\x6b\xfb\x27\x89\x49\x4a\xf4\x2c\x3b\x00\x0a\x69\x7d\x4c\xd7\x8a\x00\xb9\x56\x75\xad\x4d\x36\xc6\x78\xf4\x49\x0a\xf6\x60\x71\x7c\x7e\x0a\xa9\x31\x9d\xc1\x70\x38\x84\x4f\x3c\x6c\x9d\x69\x72\x8f\x2f\xec\x42\xaa\x88\x48\x11\xac\xcf\x1f\x12\x7d\xda\xe9\x8f\x01\x18\xb4\x1e\x52\xb0\x1a\xdd\x14\xb2\xa0\xf8\x6c\x4e\x15\xc0\x75\x24\xd0\x3d\x56\xb5\xb7\x7b\x0e\xdd\xef\xb4\xbe\x0c\x37\x14\x18\xfe\xe9\x0f\x7a\x78\xb8\x6c\x14\x7a\xcc\x39\x6a\x68\x8e\x07\xdb\x98\x68\xfd\xc4\x2e\x9e\x29\x4b\x9b\x7f\x56\xfa\x4e\xad\x13\xc1\xf3\x44\x43\x23\xb8\xda\x3f\x4e\x2e\x78\xb5\x3f\x80\xab\xfd\x73\xa3\x4b\xce\x5d\x85\x2a\x79\x80\x2d\xeb\x6a\xff\x2d\x95\x06\x0b\x2a\xae\xf6\x13\xe9\xff\xa8\xd1\xe5\xd3\x33\x32\x25\xfd\x4c\xb3\xd7\x9e\xe0\xc2\x54\x82\x87\xd7\x15\xaf\x69\xe7\x18\x93\x19\xb8\x5e\x73\xe1\x37\x3f\x78\x86\xf5\x02\xa1\x93\xce\x00\xbf\x5c\x57\xe4\xf0\xf6\x28\xeb\xae\xfa\xd7\xdf\xac\x56\xa3\xab\xfd\xee\x4c\x03\x5d\xb1\xc9\xd4\x6e\x76\xb5\x0f\x0b\x12\x8c\xae\xf6\xbd\x0c\x69\x3c\x09\x3d\xba\xda\x67\x6e\x3c\x6c\xb4\xd3\xe3\x66\x32\xba\xda\x1f\xcf\x1c\xd9\xc1\xd1\xc0\x50\x3d\xe0\x4c\xea\x75\xc7\xe1\x6a\xff\x57\xb8\x52\x49\x68\xed\x38\xcf\xf5\x37\x6d\xe1\xaf\xfd\x0d\x78\xbf\x01\x14\x36\x17\x77\x5c\xbd\x49\xb4\xee\x93\x41\x65\x45\x6a\xe2\xf6\x2e\xad\x42\x30\xe8\x9d\x37\x3e\x40\xf4\x4e\x07\x2b\xe9\x9d\xee\x81\xd6\x5d\x60\x6d\xf5\x0c\xfd\xf0\xb6\xe0\xdb\xab\x1b\x53\xbe\xc3\x33\x01\xd9\x62\x66\x18\xed\xc2\xb5\xab\xd9\x51\x39\xc9\x67\xff\x8f\xc1\x8f\xd3\x49\xe5\xef\x2d\x8b\xce\x3d\x4d\x69\x79\xdb\x80\x69\x54\x41\x46\xce\x38\xdd\xe8\xa8\xe6\x53\xae\x06\x8a\x0c\x18\xb2\x42\x71\x64\x41\x69\x07\x37\xec\x60\x1e\xba\x14\x34\x36\x75\x1b\xbd\x5c\x2d\x45\x0e\x2c\x21\x20\x44\x32\x1e\x05\xf3\x9c\x6a\xe7\x61\xb0\x57\x15\x5b\x4b\x6b\xfe\x4c\x62\x4b\x8a\xd3\xae\xa1\xeb\x37\x8f\x68\x1c\x3b\x2a\x3e\xae\x8e\x2d\xb3\xa6\x42\xc6\x15\x2c\x58\xde\x6e\x2e\xd4\x76\xa1\x16\x0b\xf1\x16\xc7\xba\x09\x11\xb0\xbb\x87\xa8\xea\x88\x32\x3e\x6b\xab\xdd\x2c\x1e\xeb\x6f\x1e\xbe\xc2\xfb\xf7\xa4\x4a\x37\x1d\xc1\xcb\x17\xff\xf9\xea\xdb\x9e\x85\x21\x68\x52\xf1\x13\x29\x0a\x19\xe4\x8e\x6a\x58\xdd\x38\xd7\x2f\xf6\xe7\xec\xde\x59\xca\x6e\x4d\xac\x75\xe7\xed\xf2\x0e\x7d\x33\x2f\x62\x69\x53\xb3\x5e\x18\x05\x42\x23\x22\xa7\x01\x67\x50\x6b\x89\x89\x36\xb8\xcb\x19\x1c\xbd\x18\xc0\x38\xaa\x78\x35\xac\x7f\xb9\xbf\xce\xd6\x88\x2c\x2c\x7c\x37\x58\x92\x47\x58\xe0\xab\xd2\x13\x6f\x38\xa1\xfe\x34\x14\x60\x32\x75\x0a\x56\x61\x92\x5a\x79\xb7\x5d\x5c\x5f\x95\x99\x3e\xc9\x6c\x85\x72\xaf\xbe\xe9\xbf\x5f\xa1\x44\xd5\x54\x23\x78\xde\xb3\x24\x84\xb4\x1d\x6f\x33\x2c\xee\xb2\x04\xe4\xd0\x55\x1a\xac\x38\x1f\xca\x41\x14\xa4\x9c\x98\x08\x32\xf3\xa6\xed\x7b\x01\x61\x23\xe3\xfe\x82\x16\x9f\xd8\x18\x87\xe6\x8c\xfd\x3c\x24\x41\xc6\xa3\x33\xeb\x53\x70\xbe\x3a\x17\xa0\x66\x35\x05\x6f\x08\xd5\x0d\xd0\x7d\x1d\xf2\xd8\x58\xec\xfb\x97\x1a\x42\x25\x54\x69\x23\x4b\x11\x1b\x49\x01\x8d\xef\xa6\xe4\xa1\xc7\x3f\x2a\xc5\x3d\x26\x34\x69\x44\xe1\x8b\x2a\x84\xb2\x41\x83\xca\x71\x8d\x7b\x7c\x7e\x1a\x12\xf8\xd0\xb5\xe8\x42\x1e\x76\x0f\x12\xc9\x1b\x83\xab\x86\x60\xc5\x22\xc6\x47\x0c\xef\xb1\xff\x9c\xab\x1e\x3d\x7f\xb1\xf1\xca\xdb\x75\xbd\x8b\x6a\x74\x8e\x8c\x1a\xc1\xff\x7d\x39\x1e\xfe\x2f\x0e\xff\xb8\x7e\x1a\xff\x79\x3e\xfc\xee\xff\x07\xa3\xeb\x67\x73\x5f\xaf\x0f\xde\xfc\x7b\x0f\xa5\xf5\x99\x7e\x8f\xf9\x44\x10\x49\x49\x64\xba\xd1\x81\x47\x18\x3d\x81\x4f\xa6\xa1\x01\xbc\x43\x69\x69\x00\x9f\x95\x87\x86\xbf\xa9\x34\x52\x4d\xb5\xa9\x12\x1c\xc2\x3e\x73\x5d\x9f\x7c\xb4\x4b\xbc\x48\x9b\xd7\x44\x71\x37\xd5\xb6\xbb\x29\x29\xf5\x21\xe6\x22\xcd\xdc\xc3\x97\x7f\x29\x61\x47\xd2\x59\x4c\x7f\xb3\x5c\x57\x87\x73\x0f\x63\x9c\x77\x9f\xa1\x9a\x41\x17\xd6\x42\xb2\xba\x6c\xe9\xd6\x71\x6c\xc2\xdc\x68\x6b\xdb\x97\x3d\x0b\x52\xdc\x10\x1c\x77\x45\x25\x07\xcb\x31\xe5\xe8\x13\x75\x33\x16\xce\x60\xe8\x08\xa7\xdc\xb2\x6b\x37\x4d\x1a\x09\x4f\xb9\x96\xcd\x94\x2e\x68\x35\xba\x1e\xc4\xd6\xee\x58\x48\xe1\x66\xa1\xce\xce\xb5\x9a\x48\x11\xeb\x83\xaa\xd6\xc6\xa1\x72\xb1\x09\x49\x25\xdd\x83\x70\x50\x71\xce\x49\xfe\xf9\xe9\x69\xa1\xec\xd1\xd1\x8b\x97\x97\xcd\xb8\xd0\x15\x0a\xf5\xae\x72\x87\x07\x6f\x9e\xfe\xde\xa0\xe4\xc8\x53\x7c\xc0\x8a\xde\x55\xee\xe0\x9f\x83\xc5\xa3\x57\x3b\x78\xd1\xd3\x2f\xc1\x57\xae\x9f\x7e\x19\xc6\xff\x9e\xa5\xa1\x83\x37\x4f\xaf\xb2\x8d\xf3\x07\xcf\xf8\x0c\x73\x1e\x78\xfd\x65\xd8\xb9\x5f\x76\xfd\xec\xe0\xcd\xdc\xdc\xc1\x3a\x67\xbc\x1f\xde\x34\x63\x32\x8a\x1c\xd9\x21\x57\x03\xc3\x0a\xeb\xe1\x0d\xcd\x7a\x9c\xb3\x37\x1d\x5d\x25\x14\x34\x56\x61\xdd\xff\x4e\x76\x41\x13\x32\xa4\xf2\xb5\x46\xfe\x37\x9f\x67\x14\xf6\xa4\x64\x61\xca\xff\x04\xe7\x11\x2d\x29\xc6\x9d\xd0\x86\xdb\x94\x4e\xef\x60\x2d\xbb\xe5\x8f\xaa\xe7\x61\x6c\x27\x26\xed\x39\x1f\x4d\x21\xf9\x77\xcf\xef\x2f\x76\xa6\xd3\x88\xde\x4a\x6b\xb1\xc1\x79\xfa\x36\xa4\xbe\x3e\xf4\xf8\x74\x6e\xaa\xb9\xce\x6b\x94\xf8\xbd\x21\x38\x7d\x1b\xe3\xd1\x00\x84\xca\x65\x53\x70\xa6\xf0\xf9\xf3\xe9\x5b\x2e\xee\x7f\x8c\xe1\xe6\x8e\xa0\xd0\xea\x89\x83\x8f\x1f\xde\xff\x8f\xef\x14\xf8\x15\x83\x00\xe8\xe1\xb1\x0a\xa5\x08\x3f\xdd\x48\x00\x0c\x3f\x12\xd3\x8a\x9c\x73\xac\xdb\xe6\x8a\x0f\x77\xaa\x80\x29\xc9\x9a\x13\x88\x1b\x02\xdb\x98\x28\x1d\x13\xf6\xb3\x5e\xd7\x50\x68\x0f\xdd\x25\x39\x6f\xe4\xd2\xff\x04\xe1\x31\x4a\x8b\x8f\xe2\x42\xab\x4b\xce\x02\xbf\x82\x7f\xb0\x21\x7f\x8c\x39\xab\xe7\xf1\x08\x67\xd8\xf0\x4b\x80\xad\x27\x84\xe8\x4c\x27\xe1\xa4\x5f\xdd\x93\x56\xce\xfb\x28\x8e\xa1\xd9\xe9\x9f\x3d\x2f\xb6\x34\xa7\x57\x7e\x9c\xb6\x58\x3a\x2f\xfd\x20\xcb\x37\x5e\xdb\x97\xd3\x29\x5a\x18\x13\x29\xdf\xeb\x0d\xad\x41\x52\xd1\xea\xa8\xeb\xd2\x36\xf5\xd0\xe9\x61\xb1\xfe\xf2\xb6\x68\x6e\xbb\xd6\x36\x54\xae\x0b\x67\x3b\x7e\x70\xa1\x7a\x37\x9d\xad\xd3\x81\x0d\xbd\x4e\x2e\xbc\xda\x1c\xe4\xa1\x07\xeb\x2f\x4c\x96\x5a\xbe\xbe\xb2\x88\x4d\x8d\x58\x67\xac\x8a\xc4\xd5\xe3\x42\x67\xc3\x69\xff\xd4\xb7\xd8\xf5\x7b\xb8\x8c\xe1\x9a\x2f\xc9\xdc\x8a\x47\x81\xdf\x36\xc7\xf4\xbf\x3d\xa4\xe2\xf8\xeb\xbb\x15\xa7\x5e\x8f\x66\xe2\xdb\x7f\xb9\xde\xf2\xb6\xb3\x81\x80\x0d\x1a\xec\xfb\xf9\xc8\x43\x69\x3c\x14\x2c\x43\x34\x19\x81\x33\x4d\xd2\x8e\x75\xda\xf8\xf7\xf8\xf9\xb1\x66\xdc\x26\xca\x1d\xf5\x58\x03\xc1\x9f\x7f\xed\xfd\x2b\x00\x00\xff\xff\xff\x45\x04\xba\xc8\x2d\x00\x00") +var _operatorsCoreosCom_catalogsourcesYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x5a\x6d\x73\x1b\xb7\x8f\x7f\xef\x4f\x81\xf1\xdd\x4c\xe2\x9c\xb4\x8e\x93\x4e\xae\xd5\x34\xcd\xb8\xce\xa5\xe7\x69\x9c\x78\xec\xa4\x33\x77\xb1\xef\x0a\xed\x42\x2b\xd6\x5c\x72\x4b\x72\x6d\xab\x9d\x7e\xf7\xff\x80\x0f\xbb\x7a\x5a\x49\x76\x1b\xbd\xb1\xc5\x07\x00\x04\x01\xfc\x00\x50\x58\x8b\x5f\xc8\x58\xa1\xd5\x08\xb0\x16\x74\xef\x48\xf1\x37\x9b\xdd\x7c\x6b\x33\xa1\x0f\x6f\x8f\xf6\x6e\x84\x2a\x46\x70\xd2\x58\xa7\xab\x0b\xb2\xba\x31\x39\xbd\xa5\x89\x50\xc2\x09\xad\xf6\x2a\x72\x58\xa0\xc3\xd1\x1e\x00\x2a\xa5\x1d\xf2\xb0\xe5\xaf\x00\xb9\x56\xce\x68\x29\xc9\x0c\x4b\x52\xd9\x4d\x33\xa6\x71\x23\x64\x41\xc6\x13\x4f\xac\x6f\x9f\x67\xaf\xb2\x17\x7b\x00\xb9\x21\xbf\xfd\x93\xa8\xc8\x3a\xac\xea\x11\xa8\x46\xca\x3d\x00\x85\x15\x8d\x20\x47\x87\x52\x97\x41\x08\x9b\xe9\x9a\x0c\x3a\x6d\x6c\x96\x6b\x43\x9a\xff\x54\x7b\xb6\xa6\x9c\xb9\x97\x46\x37\xf5\x08\xd6\xae\x09\xf4\x92\x90\xe8\xa8\xd4\x46\xa4\xef\x00\x43\xd0\xb2\xf2\xff\xc7\xc3\x07\xb6\x97\x9e\xad\x1f\x97\xc2\xba\x9f\x57\xe7\xde\x0b\xeb\xfc\x7c\x2d\x1b\x83\x72\x59\x60\x3f\x65\xa7\xda\xb8\x0f\x1d\x7b\x66\x97\xa3\xb3\x26\x0f\xd3\x42\x95\x8d\x44\xb3\xb4\x77\x0f\xc0\xe6\xba\xa6\x11\xf8\xad\x35\xe6\x54\xec\x01\x44\x15\x46\x52\x43\xc0\xa2\xf0\xd7\x82\xf2\xdc\x08\xe5\xc8\x9c\x68\xd9\x54\xaa\x65\xc5\x6b\x0a\xb2\xb9\x11\xb5\xf3\xaa\xff\x34\x25\xa8\x0d\x39\x37\xf3\x2a\x01\x3d\x01\x37\xa5\xc4\xbb\xdd\x05\xf0\x9b\xd5\xea\x1c\xdd\x74\x04\x19\x6b\x38\x2b\x84\xad\x25\xce\x58\x9a\xb9\x55\xe1\x9a\xde\x86\xb9\xb9\x71\x37\x63\xd1\xad\x33\x42\x95\x9b\x44\xe1\x75\xbb\xcb\x10\x54\xf3\x69\x56\xaf\x8a\xb0\x34\xb8\x2b\xff\xba\x19\x4b\x61\xa7\x64\x76\x17\xa2\xdd\xb2\x22\xc3\xf9\x9a\x99\x1e\x41\xe6\x88\x26\x87\xca\x56\x9c\x61\x85\xc1\x71\xb9\x7a\xc6\x02\x5d\x1a\x0c\x8b\x6e\x8f\x50\xd6\x53\x3c\x8a\x83\x36\x9f\x52\x85\x9d\x3d\xe8\x9a\xd4\xf1\xf9\xe9\x2f\x2f\x2f\x97\x26\x60\x51\x3b\x0b\x76\x0e\xc2\x02\x82\xa1\x5a\x5b\xe1\xb4\x99\xb1\xb6\x4e\x2e\x7f\xb1\x03\x38\xb9\x78\x6b\x07\x80\xaa\x68\x1d\x0f\x6a\xcc\x6f\xb0\x24\x9b\xad\xc8\xaa\xc7\xbf\x51\xee\xe6\x86\x0d\xfd\xde\x08\x43\xc5\xbc\x14\xac\x9e\xa4\x93\xa5\x61\xd6\xff\xdc\x50\x6d\x98\xa7\x9b\x73\xe4\xf0\x99\x8b\x72\x0b\xe3\x4b\x27\x7c\xc2\x6a\x08\xeb\xa0\xe0\x00\x47\xd6\x9b\x40\xf4\x31\x2a\xa2\xee\x82\x69\x08\xcb\xe7\x37\x64\x49\x85\x90\xc7\xc3\xa8\xe2\x99\x32\xb8\x24\xc3\x1b\xd9\xdd\x1b\x59\x70\x24\xbc\x25\xe3\xc0\x50\xae\x4b\x25\xfe\x68\xa9\x59\x70\xda\xb3\x91\xe8\xc8\x3a\xf0\x5e\xab\x50\xc2\x2d\xca\x86\x82\x2a\x2b\x9c\x81\x21\xa6\x0b\x8d\x9a\xa3\xe0\x97\xd8\x0c\xce\xb4\x21\x10\x6a\xa2\x47\x30\x75\xae\xb6\xa3\xc3\xc3\x52\xb8\x14\xc3\x73\x5d\x55\x8d\x12\x6e\x76\xe8\xc3\xb1\x18\x37\x1c\x0e\x0f\x0b\xba\x25\x79\x68\x45\x39\x44\x93\x4f\x85\xa3\xdc\x35\x86\x0e\xb1\x16\x43\x2f\xac\xf2\x71\x3c\xab\x8a\x7f\x33\x31\xea\xdb\x27\x4b\xea\x5b\x6b\xcc\x90\xc2\xe6\x46\x5d\x73\xf0\x0c\x56\x14\xb6\x87\xb3\x74\x2a\xe5\x21\xd6\xca\xc5\x7f\x5d\x7e\x82\x24\x40\x50\x7b\xd0\x70\xb7\xd4\x76\xca\x66\x45\x09\x35\x21\x13\x56\x4e\x8c\xae\x3c\x15\x52\x45\xad\x85\x72\xc1\xa5\xa5\x20\xe5\xc0\x36\xe3\x4a\x38\xeb\x6d\x8e\xac\xe3\x7b\xc8\xe0\xc4\x43\x18\x8c\x09\x9a\x9a\x3d\xa9\xc8\xe0\x54\xc1\x09\x56\x24\x4f\xd0\xd2\x57\x57\x35\x6b\xd4\x0e\x59\x7d\xbb\x2b\x7b\x1e\x81\x57\x37\xac\xf8\x18\x40\x42\xc8\x9d\x16\xf7\x39\x25\x04\x0f\x5c\x17\x81\x61\x83\x2f\xf2\x07\x8b\xc2\x90\x5d\x33\xb1\xe2\x90\x61\x61\xb0\x93\xa9\xb6\x7c\x7f\xe8\xe0\xe3\xfb\x33\xc8\x51\x41\x63\x89\x9d\x27\xd7\x4a\xb1\x41\x38\x0d\xc8\x58\x36\xa4\x7b\x61\xbd\x01\x19\x2a\x85\x75\x66\x96\xc1\x3b\x6d\x2a\x74\x23\xf8\x3e\x0d\x0d\x3d\x39\x6d\x40\xd4\x3f\x8c\xbe\xaf\xb5\x71\x3f\xc0\x47\x25\x67\x4c\xb4\x80\xbb\x29\x29\xb8\x6c\xcf\x06\xaf\xe7\xbe\xfc\x64\xea\x3c\x83\xd3\x52\x69\x93\x56\xb2\x55\x9d\x56\x58\x12\x4c\x04\x49\x6f\xd7\x96\x5c\xb6\x7c\x83\x1b\x6f\x11\x42\xba\x34\x11\xe5\x19\xd6\x5b\x55\x73\x92\x56\x32\x2f\x66\x3f\x0f\xde\xdd\xa4\xd3\xde\x94\xf9\x48\xfc\x2f\xe6\x37\x80\x91\x4b\x85\xf5\xd0\x7a\xb7\x99\x53\xd3\x6e\x1a\x38\x49\x04\x58\x7f\xdd\xf0\x69\x8c\x5c\xd9\x43\x8f\x3d\x7f\xb2\x07\xef\xed\xd2\x90\xad\x4a\x3b\x5b\x87\x22\x3b\xf0\x10\xf9\x26\xc1\xd6\xfa\x0c\x6c\xf4\x1b\xf0\xbe\x33\x46\x4b\xaf\xbe\xe9\x11\x28\xa0\x5e\x21\xd0\xad\xfa\x16\x6c\xf1\x2f\xfe\x74\xc4\xd7\xcf\x6f\x39\x32\xf8\xb8\x12\xd9\x3f\x8a\x82\x60\x7f\xd8\x7a\x25\xc1\x6b\xd8\xbf\x55\x9b\x30\x0c\x93\x3d\xfa\xf2\x01\x85\x22\x13\xa8\xb1\x0d\x0b\x65\x1d\x2a\x27\xd0\x91\xcf\x40\xa2\x37\x47\x4b\xbe\x13\x6e\xba\xab\x15\x47\x3f\x9e\x40\x84\x91\x81\xf7\x9d\x18\x9b\x3a\x47\x16\xc1\xd1\x1f\x6c\xd4\xb5\x11\xda\x08\x37\xdb\x1e\xe5\xce\xe3\xca\xc8\x13\xad\x15\xa5\xe2\x88\x77\x47\xa2\x9c\xba\x94\x1f\xc4\x4c\x14\x12\x14\xea\xc4\x42\xfc\xc1\xc0\x48\x15\x58\x1d\xe2\xa3\x70\x3e\x3c\x8e\x89\x15\x68\x9b\x8a\x0a\x18\xcf\x3c\x8d\x82\x6a\x52\x05\xa9\x7c\xe6\x31\x55\xde\x92\xc9\xe0\xb3\xe5\x9b\x82\xff\x16\x25\xe7\xbd\x91\xa9\x50\x85\xe0\xc2\xc8\x06\x92\x1e\x4e\x97\x24\x10\x96\x55\x37\x21\xc3\x71\x50\xb3\xfa\xa5\xbe\x6b\x29\x50\xb1\xb4\xde\x42\xd1\x78\xa4\x5f\x16\xa2\x61\x3d\x64\x3e\xfd\x36\xa8\xca\x36\x8c\x25\x0d\xc6\xd4\x80\x8f\x54\xea\x80\xe9\x3e\xef\x14\xb7\x5e\x0b\x8a\x4a\xf4\xff\x8b\x10\x88\x5b\x1a\x42\xb9\x97\x2f\x02\xdd\x82\x26\xd8\x48\x17\x29\x79\xa0\x58\x3a\x0c\x5b\x0e\x34\x2a\x28\x9f\x8a\x8e\xf9\x9d\x4f\xdf\xc6\x04\xcf\x03\xa9\x75\xfb\x98\xad\xe5\x00\xbc\x28\xb2\x85\x3b\x21\x25\xef\x35\xa8\x6e\xa8\x00\x49\xf7\x22\xd7\xa5\xc1\x7a\x2a\x72\x94\x72\xe6\xdd\xb4\x00\xad\x80\x33\x11\x8e\xe1\x1b\x40\x83\x33\xc3\x72\xa1\x98\x88\x96\x96\xca\x8c\x07\x07\x4f\x4b\xb9\x21\xb7\x1d\x88\x2f\xc3\xba\x2e\xe5\x62\x78\x63\x15\x47\x02\xc1\x46\xa2\xcd\x25\xb4\xc1\x3c\x67\x47\xf2\xa6\xab\x95\xe3\x44\x6d\xa9\xa8\xca\xe0\xd4\xb1\x15\x8d\x39\xef\x75\x1a\x6e\x88\xea\x60\x69\x5c\x5e\x83\xad\x50\xca\x01\x17\xc4\x39\x01\x61\x3e\x0d\xea\x54\x14\xd1\x8c\xc0\x19\x41\x05\x4c\xb4\x01\xba\x25\x8e\x17\xf1\x6e\x48\x31\x9a\xf5\x6a\x03\x8d\x59\x28\x4e\xd3\x47\x38\xaa\x7a\xc2\xe9\x66\x35\xb6\x31\x65\xbb\x26\xbb\x58\x14\x81\x3b\x55\xbc\xb6\x6b\x2e\x3c\x80\x75\xc8\x52\x2f\x9d\x41\x47\xe5\xf6\x58\xf3\x79\x61\x79\x5b\xe5\x4c\xf5\x5d\xca\x77\x57\x9c\x9c\x03\xaf\x4d\x77\x5b\x08\x9b\xb3\xa7\x53\xc1\x49\x86\x15\x36\xdc\x29\xaa\x50\xb6\xdc\xa2\x0c\xa6\x90\x08\xd7\x5a\x4a\xef\xf2\x8d\x09\x35\x12\x57\x33\xa8\x80\xaa\x31\x15\x05\xd7\x40\x49\x94\x1e\x98\xdb\x02\xb1\xdb\x50\x30\xe1\xc3\xb9\x96\x72\x33\x8a\xf5\xb2\xd8\x85\x0d\x7f\x92\x02\xfa\x57\x2c\x43\x5f\xd2\x98\xb0\xad\xcf\x14\xe4\xc8\x54\x42\x51\x30\x0d\x51\x51\xa7\xd8\x31\xb9\x3b\x22\x05\xf9\x94\xf2\x9b\xd6\x95\x62\xd5\xb8\x74\x6b\xb1\x64\x5d\x8c\x58\x5d\x41\xae\xa5\xf4\x65\xa7\x25\x02\x31\x01\x04\x45\x77\x69\xcf\x92\x8f\xce\x05\x7b\xbc\x45\x21\x71\x2c\xc9\xa3\x66\xfb\x6d\xb0\x50\xbd\x26\x3c\xaf\x1b\x29\xa9\xf0\xf7\x5d\x5e\x9c\x9f\x80\x33\x38\x99\x88\x9c\xa7\x0a\x61\x28\x77\xe1\xc0\xbd\x47\x58\xe7\xbd\x8b\x37\xb6\xc6\x23\xac\x43\xd7\xac\xdc\xd1\x86\x0b\xde\x74\xb1\xb9\x56\xa1\x97\xb6\x3d\x3e\x5e\xb4\xa5\x68\x80\x02\xc7\xd9\x09\xfb\xc5\x62\xd7\x24\x83\x0f\xda\x51\xf0\x90\x33\xb2\x0c\xbb\x5e\x41\x17\x84\x56\xab\xb9\xe8\xca\x44\xb4\x11\xa5\x50\x28\xe3\xa1\x7c\xcd\xc9\x35\x8c\xd0\x6a\x00\x77\x53\x91\x4f\x7d\xb5\x3b\x26\xa8\x44\x69\xd0\xb5\x41\xb1\x93\x3b\xa2\x4b\xc4\xc5\x49\xc3\x45\x67\x06\xc7\x6a\xe6\xef\x7b\x42\xc8\x03\x4c\xd9\x19\x5d\x34\x39\xe7\x4b\x1c\x60\xb9\xac\xea\x88\xfc\xa3\x61\x74\x41\x6b\xfb\x27\x89\x49\x4a\xf4\x2c\x3b\x00\x0a\x69\x7d\x4c\xd7\x8a\x00\xb9\x56\x75\xad\x4d\x36\xc6\x78\xf4\x49\x0a\xf6\x60\x71\x7c\x7e\x0a\xa9\x31\x9d\xc1\x70\x38\x84\x4f\x3c\x6c\x9d\x69\x72\x8f\x2f\xec\x42\xaa\x88\x48\x11\xac\xcf\x1f\x12\x7d\xda\xe9\x8f\x01\x18\xb4\x1e\x52\xb0\x1a\xdd\x14\xb2\xa0\xf8\x6c\x4e\x15\xc0\x75\x24\xd0\x3d\x56\xb5\xb7\x7b\x0e\xdd\xef\xb4\xbe\x0c\x37\x14\x18\xfe\xe9\x0f\x7a\x78\xb8\x6c\x14\x7a\xcc\x39\x6a\x68\x8e\x07\xdb\x98\x68\xfd\xc4\x2e\x9e\x29\x4b\x9b\x7f\x56\xfa\x4e\xad\x13\xc1\xf3\x44\x43\x23\xb8\xda\x3f\x4e\x2e\x78\xb5\x3f\x80\xab\xfd\x73\xa3\x4b\xce\x5d\x85\x2a\x79\x80\x2d\xeb\x6a\xff\x2d\x95\x06\x0b\x2a\xae\xf6\x13\xe9\xff\xa8\xd1\xe5\xd3\x33\x32\x25\xfd\x4c\xb3\xd7\x9e\xe0\xc2\x54\x82\x87\xd7\x15\xaf\x69\xe7\x18\x93\x19\xb8\x5e\x73\xe1\x37\x3f\x78\x86\xf5\x02\xa1\x93\xce\x00\xbf\x5c\x57\xe4\xf0\xf6\x28\xeb\xae\xfa\xd7\xdf\xac\x56\xa3\xab\xfd\xee\x4c\x03\x5d\xb1\xc9\xd4\x6e\x76\xb5\x0f\x0b\x12\x8c\xae\xf6\xbd\x0c\x69\x3c\x09\x3d\xba\xda\x67\x6e\x3c\x6c\xb4\xd3\xe3\x66\x32\xba\xda\x1f\xcf\x1c\xd9\xc1\xd1\xc0\x50\x3d\xe0\x4c\xea\x75\xc7\xe1\x6a\xff\x57\xb8\x52\x49\x68\xed\x38\xcf\xf5\x37\x6d\xe1\xaf\xfd\x0d\x78\xbf\x01\x14\x36\x17\x77\x5c\xbd\x49\xb4\xee\x93\x41\x65\x45\x6a\xe2\xf6\x2e\xad\x42\x30\xe8\x9d\x37\x3e\x40\xf4\x4e\x07\x2b\xe9\x9d\xee\x81\xd6\x5d\x60\x6d\xf5\x0c\xfd\xf0\xb6\xe0\xdb\xab\x1b\x53\xbe\xc3\x33\x01\xd9\x62\x66\x18\xed\xc2\xb5\xab\xd9\x51\x39\xc9\x67\xff\x8f\xc1\x8f\xd3\x49\xe5\xef\x2d\x8b\xce\x3d\x4d\x69\x79\xdb\x80\x69\x54\x41\x46\xce\x38\xdd\xe8\xa8\xe6\x53\xae\x06\x8a\x0c\x18\xb2\x42\x71\x64\x41\x69\x07\x37\xec\x60\x1e\xba\x14\x34\x36\x75\x1b\xbd\x5c\x2d\x45\x0e\x2c\x21\x20\x44\x32\x1e\x05\xf3\x9c\x6a\xe7\x61\xb0\x57\x15\x5b\x4b\x6b\xfe\x4c\x62\x4b\x8a\xd3\xae\xa1\xeb\x37\x8f\x68\x1c\x3b\x2a\x3e\xae\x8e\x2d\xb3\xa6\x42\xc6\x15\x2c\x58\xde\x6e\x2e\xd4\x76\xa1\x16\x0b\xf1\x16\xc7\xba\x09\x11\xb0\xbb\x87\xa8\xea\x88\x32\x3e\x6b\xab\xdd\x2c\x1e\xeb\x6f\x1e\xbe\xc2\xfb\xf7\xa4\x4a\x37\x1d\xc1\xcb\x17\xff\xf9\xea\xdb\x9e\x85\x21\x68\x52\xf1\x13\x29\x0a\x19\xe4\x8e\x6a\x58\xdd\x38\xd7\x2f\xf6\xe7\xec\xde\x59\xca\x6e\x4d\xac\x75\xe7\xed\xf2\x0e\x7d\x33\x2f\x62\x69\x53\xb3\x5e\x18\x05\x42\x23\x22\xa7\x01\x67\x50\x6b\x89\x89\x36\xb8\xcb\x19\x1c\xbd\x18\xc0\x38\xaa\x78\x35\xac\x7f\xb9\xbf\xce\xd6\x88\x2c\x2c\x7c\x37\x58\x92\x47\x58\xe0\xab\xd2\x13\x6f\x38\xa1\xfe\x34\x14\x60\x32\x75\x0a\x56\x61\x92\x5a\x79\xb7\x5d\x5c\x5f\x95\x99\x3e\xc9\x6c\x85\x72\xaf\xbe\xe9\xbf\x5f\xa1\x44\xd5\x54\x23\x78\xde\xb3\x24\x84\xb4\x1d\x6f\x33\x2c\xee\xb2\x04\xe4\xd0\x55\x1a\xac\x38\x1f\xca\x41\x14\xa4\x9c\x98\x08\x32\xf3\xa6\xed\x7b\x01\x61\x23\xe3\xfe\x82\x16\x9f\xd8\x18\x87\xe6\x8c\xfd\x3c\x24\x41\xc6\xa3\x33\xeb\x53\x70\xbe\x3a\x17\xa0\x66\x35\x05\x6f\x08\xd5\x0d\xd0\x7d\x1d\xf2\xd8\x58\xec\xfb\x97\x1a\x42\x25\x54\x69\x23\x4b\x11\x1b\x49\x01\x8d\xef\xa6\xe4\xa1\xc7\x3f\x2a\xc5\x3d\x26\x34\x69\x44\xe1\x8b\x2a\x84\xb2\x41\x83\xca\x71\x8d\x7b\x7c\x7e\x1a\x12\xf8\xd0\xb5\xe8\x42\x1e\x76\x0f\x12\xc9\x1b\x83\xab\x86\x60\xc5\x22\xc6\x47\x0c\xef\xb1\xff\x9c\xab\x1e\x3d\x7f\xb1\xf1\xca\xdb\x75\xbd\x8b\x6a\x74\x8e\x8c\x1a\xc1\xff\x7d\x39\x1e\xfe\x2f\x0e\xff\xb8\x7e\x1a\xff\x79\x3e\xfc\xee\xff\x07\xa3\xeb\x67\x73\x5f\xaf\x0f\xde\xfc\x7b\x0f\xa5\xf5\x99\x7e\x8f\xf9\x44\x10\x49\x49\x64\xba\xd1\x81\x47\x18\x3d\x81\x4f\xa6\xa1\x01\xbc\x43\x69\x69\x00\x9f\x95\x87\x86\xbf\xa9\x34\x52\x4d\xb5\xa9\x12\x1c\xc2\x3e\x73\x5d\x9f\x7c\xb4\x4b\xbc\x48\x9b\xd7\x44\x71\x37\xd5\xb6\xbb\x29\x29\xf5\x21\xe6\x22\xcd\xdc\xc3\x97\x7f\x29\x61\x47\xd2\x59\x4c\x7f\xb3\x5c\x57\x87\x73\x0f\x63\x9c\x77\x9f\xa1\x9a\x41\x17\xd6\x42\xb2\xba\x6c\xe9\xd6\x71\x6c\xc2\xdc\x68\x6b\xdb\x97\x3d\x0b\x52\xdc\x10\x1c\x77\x45\x25\x07\xcb\x31\xe5\xe8\x13\x75\x33\x16\xce\x60\xe8\x08\xa7\xdc\xb2\x6b\x37\x4d\x1a\x09\x4f\xb9\x96\xcd\x94\x2e\x68\x35\xba\x1e\xc4\xd6\xee\x58\x48\xe1\x66\xa1\xce\xce\xb5\x9a\x48\x11\xeb\x83\xaa\xd6\xc6\xa1\x72\xb1\x09\x49\x25\xdd\x83\x70\x50\x71\xce\x49\xfe\xf9\xe9\x69\xa1\xec\xd1\xd1\x8b\x97\x97\xcd\xb8\xd0\x15\x0a\xf5\xae\x72\x87\x07\x6f\x9e\xfe\xde\xa0\xe4\xc8\x53\x7c\xc0\x8a\xde\x55\xee\xe0\x9f\x83\xc5\xa3\x57\x3b\x78\xd1\xd3\x2f\xc1\x57\xae\x9f\x7e\x19\xc6\xff\x9e\xa5\xa1\x83\x37\x4f\xaf\xb2\x8d\xf3\x07\xcf\xf8\x0c\x73\x1e\x78\xfd\x65\xd8\xb9\x5f\x76\xfd\xec\xe0\xcd\xdc\xdc\xc1\x3a\x67\xbc\x1f\xde\x34\x63\x32\x8a\x1c\xd9\x21\x57\x03\xc3\x0a\xeb\xe1\x0d\xcd\x7a\x9c\xb3\x37\x1d\x5d\x25\x14\x34\x56\x61\xdd\xff\x4e\x76\x41\x13\x32\xa4\xf2\xb5\x46\xfe\x37\x9f\x67\x14\xf6\xa4\x64\x61\xca\xff\x04\xe7\x11\x2d\x29\xc6\x9d\xd0\x86\xdb\x94\x4e\xef\x60\x2d\xbb\xe5\x8f\xaa\xe7\x61\x6c\x27\x26\xed\x39\x1f\x4d\x21\xf9\x77\xcf\xef\x2f\x76\xa6\xd3\x88\xde\x4a\x6b\xb1\xc1\x79\xfa\x36\xa4\xbe\x3e\xf4\xf8\x74\x6e\xaa\xb9\xce\x6b\x94\xf8\xbd\x21\x38\x7d\x1b\xe3\xd1\x00\x84\xca\x65\x53\x70\xa6\xf0\xf9\xf3\xe9\x5b\x2e\xee\x7f\x8c\xe1\xe6\x8e\xa0\xd0\xea\x89\x83\x8f\x1f\xde\xff\x8f\xef\x14\xf8\x15\x83\x00\xe8\xe1\xb1\x0a\xa5\x08\x3f\xdd\x48\x00\x0c\x3f\x12\xd3\x8a\x9c\x73\xac\xdb\xe6\x8a\x0f\x77\xaa\x80\x29\xc9\x9a\x13\x88\x1b\x02\xdb\x98\x28\x1d\x13\xf6\xb3\x5e\xd7\x50\x68\x0f\xdd\x25\x39\x6f\xe4\xd2\xff\x04\xe1\x31\x4a\x8b\x8f\xe2\x42\xab\x4b\xce\x02\xbf\x82\x7f\xb0\x21\x7f\x8c\x39\xab\xe7\xf1\x08\x67\xd8\xf0\x4b\x80\xad\x27\x84\xe8\x4c\x27\xe1\xa4\x5f\xdd\x93\x56\xce\xfb\x28\x8e\xa1\xd9\xe9\x9f\x3d\x2f\xb6\x34\xa7\x57\x7e\x9c\xb6\x58\x3a\x2f\xfd\x20\xcb\x37\x5e\xdb\x97\xd3\x29\x5a\x18\x13\x29\xdf\xeb\x0d\xad\x41\x52\xd1\xea\xa8\xeb\xd2\x36\xf5\xd0\xe9\x61\xb1\xfe\xf2\xb6\x68\x6e\xbb\xd6\x36\x54\xae\x0b\x67\x3b\x7e\x70\xa1\x7a\x37\x9d\xad\xd3\x81\x0d\xbd\x4e\x2e\xbc\xda\x1c\xe4\xa1\x07\xeb\x2f\x4c\x96\x5a\xbe\xbe\xb2\x88\x4d\x8d\x58\x67\xac\x8a\xc4\xd5\xe3\x42\x67\xc3\x69\xff\xd4\xb7\xd8\xf5\x7b\xb8\x8c\xe1\x9a\x2f\xc9\xdc\x8a\x47\x81\xdf\x36\xc7\xf4\xbf\x3d\xa4\xe2\xf8\xeb\xbb\x15\xa7\x5e\x8f\x66\xe2\xdb\x7f\xb9\xde\xf2\xb6\xb3\x81\x80\x0d\x1a\xec\xfb\xf9\xc8\x43\x69\x3c\x14\x2c\x43\x34\x19\x81\x33\x4d\xd2\x8e\x75\xda\xf8\xf7\xf8\xf9\xb1\x66\xdc\x26\xca\x1d\xf5\x58\x03\xc1\x9f\x7f\xed\xfd\x2b\x00\x00\xff\xff\x50\x85\x51\xd2\xc8\x2d\x00\x00") func operatorsCoreosCom_catalogsourcesYamlBytes() ([]byte, error) { return bindataRead( @@ -104,7 +104,7 @@ func operatorsCoreosCom_catalogsourcesYaml() (*asset, error) { return a, nil } -var _operatorsCoreosCom_clusterserviceversionsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xfd\x7b\x73\xe4\xb6\x95\x30\x8c\xff\x9f\x4f\x81\x92\xbd\x8f\xa4\x75\x77\x6b\x26\xc9\xe6\xb7\x3b\xbf\xbc\xeb\xd2\x4a\xb2\xa3\xd7\x33\x1a\x95\x24\xdb\x4f\xca\xf1\x3a\x68\xf2\x74\x37\x56\x24\xc0\x00\x60\x4b\x9d\xc7\xcf\x77\x7f\x0b\x07\x00\x09\xf6\x45\xea\x26\x39\xa3\x8b\x81\x54\xc5\xa3\x26\x09\x82\x07\x07\xe7\x7e\xa1\x05\xfb\x01\xa4\x62\x82\xbf\x23\xb4\x60\x70\xaf\x81\x9b\xbf\xd4\xe8\xf6\xdf\xd5\x88\x89\xa3\xf9\xdb\xdf\xdd\x32\x9e\xbe\x23\x27\xa5\xd2\x22\xbf\x02\x25\x4a\x99\xc0\x29\x4c\x18\x67\x9a\x09\xfe\xbb\x1c\x34\x4d\xa9\xa6\xef\x7e\x47\x08\xe5\x5c\x68\x6a\x7e\x56\xe6\x4f\x42\x12\xc1\xb5\x14\x59\x06\x72\x38\x05\x3e\xba\x2d\xc7\x30\x2e\x59\x96\x82\xc4\xc9\xfd\xab\xe7\x6f\x46\x7f\x1a\xbd\xf9\x1d\x21\x89\x04\x7c\xfc\x86\xe5\xa0\x34\xcd\x8b\x77\x84\x97\x59\xf6\x3b\x42\x38\xcd\xe1\x1d\x49\xb2\x52\x69\x90\x0a\xe4\x9c\x25\xe0\x9e\x57\x23\x51\x80\xa4\x5a\x48\x35\x4a\x84\x04\x61\xfe\x93\xff\x4e\x15\x90\x98\x55\x4c\xa5\x28\x8b\x77\x64\xed\x3d\x76\x5e\xbf\x58\xaa\x61\x2a\x24\xf3\x7f\x13\x32\x24\x22\xcb\xf1\xdf\x0e\x08\xf6\xf5\xd7\xf6\xf5\x0e\x72\x78\x3d\x63\x4a\x7f\xb7\xf9\x9e\xf7\x4c\x69\xbc\xaf\xc8\x4a\x49\xb3\x4d\x1f\x82\xb7\xa8\x99\x90\xfa\xa2\x5e\x96\x59\x46\xa2\xe6\xe1\xbf\xdd\x8d\x8c\x4f\xcb\x8c\xca\x0d\xb3\xfd\x8e\x10\x95\x88\x02\xde\x11\x9c\xac\xa0\x09\xa4\xbf\x23\xc4\xbf\xcb\x4e\x3e\x24\x34\x4d\x71\x23\x69\x76\x29\x19\xd7\x20\x4f\x44\x56\xe6\xbc\x7a\xb9\xb9\x27\x05\x95\x48\x56\x68\xdc\xac\x9b\x19\x20\xd4\x88\x98\x10\x3d\x03\x72\x72\xfd\x43\x75\x2b\x21\xff\xa3\x04\xbf\xa4\x7a\xf6\x8e\x8c\xcc\x06\x8c\x52\xa6\x8a\x8c\x2e\xcc\x12\x82\xbb\xec\x6e\x9e\xda\x6b\xc1\xef\x7a\x61\xd6\xab\xb4\x64\x7c\xfa\xd0\xfb\xdd\x47\x6c\xb7\x84\x79\xb0\x4f\xe1\xeb\x7f\x58\xf9\x7d\xdb\xd7\xfb\xcf\xa7\xe6\xcd\x44\xcf\xa8\x26\x7a\xc6\x14\x11\x1c\x88\x84\x22\xa3\x09\xa8\x07\x16\xb4\xe6\x16\xbb\xa2\xab\xd5\x0b\x1b\x96\x14\x4e\xa9\xa9\x2e\xd5\xa8\x98\x51\xb5\x0a\xe2\xcb\xa5\x5f\xd7\x4c\x67\x6f\x9c\xbf\xa5\x59\x31\xa3\x6f\xdd\x8f\x2a\x99\x41\x4e\x6b\x1c\x10\x05\xf0\xe3\xcb\xf3\x1f\xfe\x70\xbd\x74\x81\x34\xa1\xb3\x16\xfb\x09\x53\x06\x54\x48\x41\x88\x27\x21\xb8\x77\x8b\x02\xc8\xdf\xd7\x3e\x73\x5d\x40\xf2\xf7\xd1\xca\xca\xc5\xf8\x7f\x20\xd1\xc1\xcf\x12\xfe\x51\x32\x09\x69\xb8\x22\x03\x20\x4f\x96\x96\x7e\x36\xf0\x0f\x7e\x2a\xa4\x21\x0b\x3a\x38\xf2\x76\x04\x74\xb1\xf1\xfb\xd2\xd7\xee\x1b\x90\xb8\x6f\x4c\x0d\x49\x04\x85\xf8\xe8\x30\x0e\x52\x07\x47\x8b\xa7\x4c\x19\xe4\x90\xa0\x80\x5b\x22\x89\x28\xc4\xdd\x37\x8d\x88\x01\x00\x48\x65\x08\x40\x99\xa5\x86\x76\xce\x41\x6a\x22\x21\x11\x53\xce\xfe\x59\xcd\xa6\x88\x16\xf8\x9a\x8c\x6a\x50\x9a\xe0\xa9\xe5\x34\x23\x73\x9a\x95\x30\x20\x94\xa7\x24\xa7\x0b\x22\xc1\xcc\x4b\x4a\x1e\xcc\x80\xb7\xa8\x11\xf9\x20\x24\x10\xc6\x27\xe2\x1d\x99\x69\x5d\xa8\x77\x47\x47\x53\xa6\x3d\xd5\x4f\x44\x9e\x97\x9c\xe9\xc5\x11\x12\x70\x36\x2e\x0d\xe1\x3c\x4a\x61\x0e\xd9\x91\x62\xd3\x21\x95\xc9\x8c\x69\x48\x74\x29\xe1\x88\x16\x6c\x88\x8b\xe5\x48\xf9\x47\x79\xfa\x85\x74\x9b\xac\xf6\x97\xc0\xb7\x16\x9d\x89\x27\xb0\x0f\xc2\xda\x90\x57\x8b\x49\xf6\x71\xfb\x2d\x35\x48\xcd\x4f\x06\x2a\x57\x67\xd7\x37\xc4\x2f\xc0\x9d\x4b\x84\x70\x7d\xab\xaa\x81\x6d\x00\xc5\xf8\x04\xa4\xbd\x73\x22\x45\x8e\xb3\x00\x4f\x0b\xc1\xb8\xc6\x3f\x92\x8c\x01\xd7\x44\x95\xe3\x9c\x69\x85\x38\x07\x4a\x9b\x7d\x18\x91\x13\x64\x7a\x64\x0c\xa4\x2c\x52\xaa\x21\x1d\x91\x73\x4e\x4e\x68\x0e\xd9\x09\x55\xf0\xc9\x41\x6d\x20\xaa\x86\x06\x7c\xdb\x03\x3b\xe4\xd9\xab\x0f\xac\x9c\x31\x42\x3c\x2f\xdd\xb8\x3b\x1b\xcf\x30\x49\x21\xc9\xa8\xb4\x42\x01\xd1\x90\x65\xe4\xe3\xfb\x0f\x64\x26\xee\x0c\x16\x33\xae\x34\xcd\x32\x3c\x05\x8e\x3f\x5b\x72\x9a\x50\x4e\x72\xca\xe9\x14\x08\x2d\x0a\x45\x26\x42\x12\x4a\xa6\x6c\x0e\xdc\x9f\xae\xd1\xb6\x8b\xdf\x44\x24\x88\x25\xee\x6b\x19\x94\xbf\xea\x16\xb8\x74\x65\x13\xd9\x30\x63\x45\x06\x7a\x00\x6a\xc7\xf5\xbd\x88\xd9\x9c\x94\x5c\x69\x59\xe2\x66\xa7\xe4\x16\x16\x0e\xc9\x73\x5a\x10\xa5\x85\xf9\xf1\x8e\xe9\x19\xa1\x21\x82\x53\x8d\x58\x3c\x06\xa2\x40\x93\xf1\x82\x18\x31\x0e\x09\x82\x16\x22\x43\x6a\x81\xcf\x22\x61\x90\xa0\x25\x83\x39\x10\x2a\xc7\x4c\x4b\x2a\x17\x15\x36\x2c\x03\xf4\x11\xa0\xe2\xc7\x06\xc2\xc3\x66\x90\x90\x87\x70\x91\x58\x72\xeb\x64\x97\xb4\x12\x2c\xb7\x80\xde\xe5\xb9\xc3\xb7\x5a\x1c\x55\x0e\xdf\x40\x11\x83\x57\x4e\x3e\xa8\xe4\x5a\x7c\x93\x43\xac\x94\x08\x59\x61\x86\x01\x5b\x88\x84\x63\x30\xe4\x44\x52\x6e\x2e\xac\x45\xee\x16\xd0\x7a\x08\x6d\xcc\x10\x77\x7c\x1d\x8e\x86\x73\x53\x29\x1b\x02\x53\x38\x98\x86\x7c\xc3\xcc\x0f\xc2\xae\xfa\xd9\x2c\x70\xce\x52\x30\x40\xd4\x94\x59\xd4\x31\xa7\x95\x8e\x45\xa9\x2d\xec\xdc\x2d\x29\x99\x33\x4a\xe8\x74\x2a\x61\x8a\x08\xbc\xf1\xb5\x8f\xc0\xc4\x8e\xcd\x07\xb4\x1e\x43\x2b\xc9\x3f\x78\x87\x21\x83\x0f\xde\xc0\xd7\x1d\xf3\xf0\x86\x55\x61\xb1\x39\x1e\xdb\x43\x3b\x68\x62\x60\xe2\x41\x2b\xe4\x83\x37\x6f\xb3\xb7\x76\x3c\xb2\xc3\x76\x34\xf7\x79\x69\x21\xee\xea\xd8\x9c\x8f\x9a\x34\x1b\x72\x80\x37\xd6\xc4\x77\x0c\xa4\x00\x39\x11\x32\x37\x07\x85\x13\x4a\x12\x2b\xbf\x55\x84\x07\x49\x23\x4f\x1e\x02\x27\xd9\x76\xff\xed\xd8\x06\x0b\xec\x18\x92\x82\xea\xd9\x23\xb7\x6d\xb7\x55\x76\x84\x40\x7b\xf4\xe6\x47\xa8\xd9\xca\xdc\x35\x87\xe9\x7d\x6e\x03\x86\xde\x27\x45\x9e\xb3\xcd\xac\x0d\x54\xbb\xa2\x77\x1f\x40\x29\xc3\xb2\x51\x4a\x93\xf4\x8e\x00\x4f\x84\x21\x16\xff\xef\xf5\xc7\x0b\x3b\xed\x88\x9c\x6b\xc2\xf2\x22\x83\xdc\x08\x62\xe4\x03\x95\x6a\x46\x33\x90\xc8\x9d\xbe\xe7\x79\xe3\x6f\x87\x89\xa5\x82\xd4\xd0\xa2\x14\x32\xba\xb0\x93\xa5\x90\x88\xd4\xd0\x68\x21\x49\x61\x04\xdc\xbc\x28\x35\x10\x6a\xaf\xe2\x7b\x19\x9f\xae\x23\xd2\x9d\x40\x43\x8c\x24\x92\x53\xfd\x8e\x8c\x17\xfa\x31\xd4\x27\xe4\x7e\x98\x6e\x4b\x03\xc2\xc5\x3c\x4e\x09\xec\xd8\x8a\x1e\x84\x13\x3f\xfa\x95\x46\x08\xa5\x8c\x83\xbc\x14\x52\x6f\x43\xb4\x8c\xf2\x31\x05\xf9\xe0\x9d\x1e\x64\x8c\xeb\x3f\xfc\xfe\x81\x3b\x53\x28\x32\xb1\x30\x78\xf1\xf8\x59\xd9\xf2\x7b\xb6\x3e\xd7\xdb\xce\xb7\xed\x59\xde\x72\x3e\x6b\x9c\xea\x63\xa6\x75\x0a\x54\xab\x89\x78\x5f\xdf\x56\x29\x81\x4f\xc6\xfc\x2e\xcf\xbd\xb5\xe1\x0a\x26\x20\x81\x27\x8e\x36\x7d\x57\x8e\x41\x72\xd0\xa0\x02\x41\x7a\x51\x38\x4a\x63\x64\xc1\x65\x76\xf7\x34\x5c\xee\x11\x79\xc6\xdf\xf6\x88\x54\xe3\x6f\x7b\x4c\xb6\xb1\x63\x17\xb6\xf9\x38\xd2\xd9\xb1\x13\x8d\x7d\x1c\x01\x5b\x4c\x3a\x5f\x6f\xce\xe9\x30\xaf\xd1\x89\x9f\x81\x84\x77\xdd\x58\x46\x43\xbe\x9b\x30\xc8\x52\xc2\x8c\xf0\x66\x16\x4b\xc6\x99\x48\x6e\x9d\xdd\xf2\xea\x94\x28\x61\xc5\x3d\x23\xe1\x1b\x46\x9b\x08\xae\xca\x1c\x08\x7b\x0c\x83\xa3\x48\x17\x45\xba\x28\xd2\xbd\x14\x91\xce\xfa\x07\x9e\x03\xa5\x5a\x5a\xc8\x46\x5a\x85\xf7\x45\x6a\xf5\xd0\x88\xd4\x0a\x47\xa4\x56\x8f\x8c\x17\x47\xad\xb6\x92\xd3\x1e\x9d\xeb\xb1\x83\x1c\x8d\xa9\xd1\x98\x1a\x8d\xa9\x6e\x44\x5e\xe6\x46\xe4\x65\x91\x97\x45\x63\xea\x43\x53\x46\x63\xea\x8e\x13\x45\x63\x6a\x34\xa6\x46\x63\x6a\x34\xa6\x3e\xf6\x31\x51\xa4\x8b\x22\x5d\x14\xe9\xb6\x5d\x4c\x34\xa6\x46\x63\xea\x43\x23\x52\xab\x60\x44\x6a\xf5\xc0\x78\xdd\xd4\xaa\xbb\x31\x35\xc9\x80\xf2\xf5\x4a\xd5\x52\xfc\x37\xde\x87\xa2\x11\x9b\x30\x97\x07\xe1\x9e\x26\x63\x98\xd1\x39\x13\xa5\x24\x77\x33\xe0\x3e\x65\x87\x4c\x41\x2b\x83\x05\xa0\x61\x9d\x60\xfe\x08\xad\x79\x98\xbe\x0c\x09\x70\x3a\xce\xd6\x4e\xfc\x18\x29\x71\x4f\x3e\x6c\x3c\x1e\x0b\x61\xbe\x6e\x15\x62\xa8\xea\x78\x4d\x67\x97\x78\xe6\xbd\x4d\x39\x76\xeb\x83\x9a\x4f\xae\x4e\xfb\x0a\x65\x26\x7f\xe3\xe4\xbc\x9a\x95\xa0\x65\x1a\x13\x25\x0c\x0f\x31\xbf\x7e\xbc\xe3\x90\x62\x92\xdb\x80\x30\x6d\x6e\x30\x87\x9e\x25\x4c\x67\x8b\xea\xc5\xa3\xbd\xdd\x37\xf1\x19\x85\x44\x9f\x5c\x9d\x6e\x6f\xbe\xf7\x1b\xf0\x39\x2c\xf5\xd1\x0e\x1f\xed\xf0\xd5\x88\x62\x50\xcb\x49\xa3\x18\xf4\xc0\x78\xdd\x62\xd0\x73\xb7\x5b\x47\x6b\x33\x89\xd6\xe6\x87\x6f\x8b\xd6\xe6\x68\x6d\x8e\xf6\x9b\x0d\x23\x0a\x2e\x38\xa2\xe0\xf2\xc8\x78\x71\x82\x4b\xb4\x36\x47\x6a\x15\xa9\x55\xa4\x56\x2f\x83\x5a\xbd\xc4\xd0\xdd\x68\xf4\x8b\x46\xbf\x68\xf4\x8b\xdc\x28\x72\xa3\x47\xc6\x8b\xe3\x46\xd1\xe8\xb7\xeb\x44\xd1\xe8\xb7\x76\x44\xa3\xdf\x23\x23\x1a\xfd\xa2\xd1\x6f\xc3\x88\x82\x4b\xcb\x49\xa3\xe0\xf2\xc0\x78\xdd\x82\x4b\x34\xfa\x45\x6a\x15\xa9\x55\xa4\x56\x2f\x83\x5a\x75\x37\xfa\x3d\x72\x92\x1e\x7e\xf6\xe1\x93\xf2\xe0\xb3\x2c\x79\xe8\x85\x9b\x20\xfa\x00\x04\x1f\x25\x5c\x8f\x91\xab\x21\x19\x53\x05\x7f\xfa\xe3\x4a\xdd\xf2\xf0\x96\x1c\x52\x46\xcd\xab\xd6\xde\xf1\x38\x09\xab\x5f\xb1\x79\xcf\xb6\xd8\xfb\x6a\x19\x2d\x67\x71\x85\x95\x1f\x0d\x8a\x35\x5b\x9b\x9e\xdb\x9b\xaf\xb5\xa4\x1a\xa6\x8b\xa0\x90\x37\xda\x64\x6b\xce\xc3\x37\x14\xa0\xaf\x94\xc6\xbb\x19\x48\xc0\x87\x7c\xe9\x69\xe5\x27\x65\xaa\x8a\x5e\x4e\x5b\x14\xf7\x7d\x2c\x1c\xd9\xbf\x67\xcd\xe5\xc7\x36\x6d\x5d\xf5\xed\xb5\xc0\xf2\x00\x3a\xb5\xd6\xeb\xd3\x2a\x05\x78\x19\x62\x05\x95\x86\x42\x7a\x2b\x37\x32\xed\xe0\xee\x25\x78\x6f\x22\x8a\x5b\x70\xea\xc7\x39\xf4\x30\xc8\x54\xde\x64\x59\xdf\x86\x31\xbb\x1e\x18\x97\x20\x73\xa6\xd4\xa6\x80\xeb\xe6\xd2\x1f\x23\x9b\x5b\x90\xcb\x0d\xf0\xf7\x5f\x14\x2c\xa7\x12\x9f\x70\x07\xe4\x98\x26\x44\x96\x99\x11\xa6\x78\x4a\x5c\xf9\x6b\x42\x93\x44\x94\x5c\x13\x0e\x90\x5a\xcb\xc6\x3a\x5c\xdd\x82\xd8\x6e\x21\x3f\x6d\x2b\x3d\x0d\xed\x3a\x1f\xbd\xcb\x7d\xc3\xb1\xfd\x84\xb5\x05\xd5\xc3\xb1\xbd\xb4\x85\xaf\x7f\x9c\x6b\xed\xc2\x0a\xb7\x66\x84\x8d\xfd\xbd\x14\x19\x4b\x16\x57\x65\x06\x64\x26\xb2\x54\x61\x59\x7f\xc3\xdd\x2b\x87\x43\x28\x22\x17\x78\x37\xae\x7e\x40\xc6\xa5\x26\xa9\x00\x45\xb8\xd0\xbe\x30\x40\xe3\x71\xeb\x62\xba\x9b\xd9\xd6\x0e\xe6\x21\x42\x8b\x22\xc3\x54\x0a\x61\x84\x96\xbb\x19\x4b\x66\xb6\x5f\x4d\x41\x13\x58\x77\xdb\xf6\xd2\xcb\x56\xe2\x35\xd9\x49\xc4\x26\xde\x66\x35\x7e\x0c\x55\xc8\x8e\xb2\x36\xb1\x25\xe2\xbf\x95\xa2\x2c\xb6\xbc\x7d\xd5\xb2\x68\x9f\x36\x54\x5e\x2f\x35\xb0\xf1\x17\x9d\xcb\xc8\xee\x8d\xbd\xad\x32\x89\x8e\x08\x39\x9f\x90\xbc\xcc\x34\x2b\x32\x7c\xc4\x56\x1b\x50\x84\x4a\xa8\xf9\xc6\x80\x50\xbe\xf0\x1e\x28\xd7\x26\x02\x52\x42\xa7\x66\x46\x8d\xfd\x61\x7c\x49\x7a\x5e\xe6\x60\x4e\x73\x5a\xbf\x04\xd5\x29\xbe\xa8\x67\x27\x77\x2c\xcb\x8c\x3c\x4b\xb3\x4c\xdc\xad\x67\x4b\xeb\xc6\x6e\x42\x21\xd9\x4d\x30\x24\xbb\x8b\xc0\x84\x70\xc1\xbd\x69\xf7\xfb\xab\xf7\xed\x36\xf1\xa2\x39\x87\xeb\x05\x02\xda\x80\xb4\xa0\x52\x33\x9a\x91\x52\x66\xca\xee\x23\x35\x4a\x80\xf4\xcd\x54\x66\x14\x3d\x83\x09\x28\xdb\xb5\x83\xfc\xab\xdd\x39\x07\x58\x7b\x3e\x05\xcf\x16\x84\xda\x9d\x9f\x94\x59\x36\x20\x13\xc6\xa9\x21\xbb\x50\xf8\x4c\x18\xa3\x3f\x91\x6b\xc6\x13\x30\xdf\x34\xac\x04\x0b\x5c\x91\x99\xd1\x9c\xef\xea\x90\xa6\x03\xd7\x56\xc4\x6a\xcb\xca\xbd\xc2\x1c\xd8\x84\x8e\x33\xc0\xbe\x16\x4e\x64\xb9\x12\x19\x9a\xb7\x9d\xe1\x3b\xb5\xbd\x48\x68\x78\xf9\xbf\x18\x47\x25\x85\x5c\x21\xe3\x30\xca\x0e\x30\x3d\x33\xba\x4f\x51\x64\x0b\x43\x28\x0c\xee\xd4\x08\x75\xa0\xca\x64\x66\x3e\x69\xaf\x10\xa9\xda\x33\x64\x64\x4f\x41\x22\x41\xab\xbd\x43\xf3\xd7\xf2\x37\xe0\xf7\x85\xcf\x1d\xd1\x82\xed\x1d\x0e\x08\x02\x08\x1b\x9d\x08\x3d\x7b\xb9\x78\xe8\xbf\xb5\xd1\x5f\xeb\xb1\xd1\xd4\x5a\xc3\x19\x5c\xd7\x0e\x51\xd8\x26\x18\x86\x46\x6b\xc0\x3c\x29\x83\x94\x88\x06\xbe\x3d\xd4\x2a\xb1\x26\xe4\x98\x13\xc8\x0b\xbd\x40\x2c\xce\x81\x72\x77\x37\xcc\x41\x2e\xf4\xcc\x68\xab\x4c\xbd\xfc\xc3\xbf\xa5\x63\xa9\x1e\x6b\x01\xee\x0e\xbc\x07\x6e\x8d\xe4\xb6\xb3\xd2\x32\x70\xf7\xff\x75\x3f\x94\x7a\x8d\xf8\x54\x53\xf3\x17\x0b\x4a\x64\xaf\xad\xc0\xf8\x83\x79\xb2\x09\x42\xfb\x93\xa5\x96\x15\xfd\x78\xff\xde\x76\x51\x72\xb0\xfa\x8e\xf1\xd4\x8a\xa8\xc7\xda\xb6\x27\x82\x2b\x30\x0b\x4e\x6c\x66\xa2\xaf\x71\x94\x5a\x02\xe9\x76\x62\x2d\xf8\x71\xed\x2f\x11\xf4\xab\x82\xed\xb6\xc2\xe8\x23\xd3\x07\x9a\xcf\x73\x50\x56\xb0\x5f\x53\x43\xfe\x31\x14\x6c\x60\x9d\x51\x06\x05\x32\x3a\x86\xcc\x36\x63\x32\x57\xeb\xe5\x93\xe3\xf7\x1f\xaa\xbe\x65\x12\xe8\x23\x96\xae\x4f\xa0\xa2\x6c\xe1\x52\x5d\xe9\xfe\xb6\x3a\xb6\x97\x4a\x11\x14\xbb\x99\x89\xc9\x35\x68\x7b\x00\x73\x5a\x98\xf3\x67\xe7\x58\x6b\xe5\x7c\x8f\x90\x7e\xfc\xb0\xec\x24\xcd\x6f\xdf\xad\x69\xdd\x4b\xb6\x3a\x2a\xdb\xf9\x82\x77\x39\x7b\x0f\xd8\x3e\xea\xd1\x00\xf3\x12\x42\x3b\x89\xdf\xc9\xe8\x49\xd5\x79\xcf\x62\xb0\xb2\x29\xd3\x36\x41\x5d\xfa\xdf\xeb\x29\x7a\xde\x82\x5d\xd4\x29\xa3\x51\x67\x90\x68\xf1\x70\x41\x38\x7f\xb3\x86\xbc\xc8\x1e\x3b\x79\x64\x67\xd5\x2b\x67\xfc\x0a\x68\xba\xb8\x86\x44\xf0\x74\x4b\x02\xdb\xd8\x8f\x0f\x8c\xb3\xbc\xcc\x09\x2f\xf3\x31\x20\x88\x95\x9d\x0b\x09\x89\x55\x6b\x29\xe1\x70\x97\x2d\x1c\xf1\x48\x49\x21\x52\x4f\x4f\xc6\x46\x0d\xa3\xe9\x02\x3b\x9f\x61\xe9\x54\xbe\x30\x93\x30\x5d\x73\x1f\x49\x12\x49\x95\x11\x98\x06\x38\x29\xd3\x86\x97\x8d\x01\xbd\x4e\x2c\x05\xb3\xc7\x74\x4e\x59\x66\x84\xee\x11\x39\x85\x09\x2d\x33\x6c\xe0\x47\xde\x90\x03\xf3\x32\xaf\x69\xad\x7b\xc0\x08\xc2\x4a\x18\x1d\x5d\xb9\xec\x77\x5c\xd0\xe1\x0e\x76\xf4\x6d\x2a\xfb\xf9\xb1\x6d\x85\x3f\x3f\x0a\x5a\xaa\x6d\x15\xf4\xc6\xc6\x9c\xf3\xd4\x9c\x87\x50\x46\x0d\x48\x3a\x53\x6e\xe6\xed\x58\xf6\xc3\x55\x11\xd6\xac\x5a\x8a\xa9\x04\xa5\x4e\x81\xa6\x19\xe3\xd0\x1e\xbf\x6e\x66\x40\x72\x7a\x8f\x38\xa6\x59\x0e\x46\x12\x09\x31\x8c\x86\x5f\xa5\x05\xc9\xe9\x2d\x54\xaf\x27\x63\x98\x60\x83\x46\xfc\xe0\x60\xf7\x2d\xfe\x4c\x28\xcb\x20\x1d\xe1\x3b\x82\x59\xea\xbe\xc6\x16\x71\xcc\xdf\x8c\x97\x60\x9e\x2a\xa4\x40\x35\xd3\x3e\x1a\xf2\x78\xe4\xa1\xd4\xdc\x6c\xe9\xb0\xef\xe5\x77\xb9\x04\x8a\xb3\xfb\xc4\x9a\xff\x24\x50\x85\xb7\x59\xdc\x54\xa5\x9c\x18\xa5\xd2\xeb\xa2\xc1\x82\x5c\x13\x58\x72\x21\xb4\x6b\x09\x58\x7d\x20\x3e\xed\x5a\x54\x82\xd2\x2c\xc7\x03\x96\x96\xd2\x37\xcc\x44\x98\xd1\xf5\x5b\xdf\x38\x2a\x7f\x7a\xf3\x66\x4b\xf9\xed\xd3\x23\xbd\x04\xd4\xa1\xdb\xe0\xcb\x45\x45\x87\x3c\xf9\x37\xca\xb1\xd9\x63\xe6\x04\x64\xec\xfc\x09\x12\x3d\x88\x4c\x69\xc6\xa7\x25\x53\x33\x32\x06\x7d\x07\xc0\x09\xdc\xdb\xda\x17\xe4\x9f\x20\x05\x6e\xaa\x01\x6f\xed\x3c\x68\x00\xed\xed\xf3\x81\xd8\x9c\x29\x26\xf8\x5f\x98\xd2\x42\x2e\xde\xb3\x9c\x3d\x52\x94\xd4\x8f\xd5\xfe\xc7\x15\x04\x45\x96\x62\xd7\x62\x96\xd0\x6b\xb0\x1f\x2c\x01\x6d\x9b\x5a\x58\xc5\x95\x98\x73\x32\xa6\xc9\xed\x27\x03\xf0\x9b\xe7\x02\x61\xcf\xae\x5b\x40\x15\xe5\xbd\x6a\x02\x24\x5b\x16\x29\xcf\xee\x2d\x7c\x1a\x50\xbe\x9b\x09\x05\x78\x83\x35\x3f\xe2\x63\xde\x5d\xc0\x54\x45\x30\xcc\xe9\x16\x1c\x14\xa1\x93\x49\xf3\x8e\xfa\xb0\xa3\xe4\x99\x97\x4a\x93\x9c\xea\x64\x66\x8d\x5c\x22\xad\xc4\x89\x7d\xe5\xc4\xfe\x5d\xa0\xbc\xb5\x79\x79\x77\x43\x30\xb1\xeb\x3c\xbb\x37\xba\xe5\xa3\x7e\x9e\xe6\x68\x80\x7c\x79\x9a\xa6\x6e\x9c\x35\x37\xc4\xc9\x6d\xb9\x6d\x1e\x7c\x83\xa6\xe1\xfa\x17\xdc\x85\xe3\x8b\xd3\xed\x8d\x34\x6d\x14\xdc\x9d\x55\xdc\x65\x23\xf8\x03\x1f\xe5\x8d\xa9\xee\x4a\xd3\x12\x6e\x9b\x46\x0f\x08\x25\xb7\xb0\xb0\xfd\xa5\x57\x1a\xf6\x4a\xc8\x9c\x24\x01\xd8\xb7\xd6\xdc\xe4\x9a\x4d\xef\xb0\xde\x9d\xb1\xc7\x8e\xdd\x9c\x14\x7e\x0c\xcd\x42\x77\x7c\xc2\x7f\xf4\x0e\x8f\xed\x8e\xe0\x76\xdc\xc2\x62\xb7\x07\x96\xb6\xdb\xec\x82\xd3\x7d\xec\xbe\x9b\x1f\x2a\x41\xaf\xda\xea\xdd\xbc\x47\xe1\xd8\xd9\x78\xe5\x87\x07\x62\xa7\xcf\xab\xd0\x2f\xb4\x32\x99\x6f\xdc\x57\x16\x19\xcd\x99\x9e\xb1\x02\x19\x91\x77\x13\xf8\xf6\xe7\x3f\xd0\x8c\xa5\xd5\x14\xf6\xfc\x9e\xf3\x81\x11\x9f\xcc\x7f\x90\xe8\x5a\x71\xed\x54\x80\xba\x10\x1a\x7f\xf9\x6c\x00\xb2\xcb\xec\x04\x1e\x3b\x85\xb3\x4f\x23\x95\x41\xc5\x2b\xe8\x9c\xae\x46\xbe\xe6\x57\x05\x4a\xa6\xc8\x39\x27\x42\x7a\x38\x60\x2f\x7b\x3b\x91\x9d\x02\xf9\xc4\xd8\xba\x3e\xd0\x72\xbd\x76\x0e\x07\x3e\x21\x1b\xd0\x7b\x60\x3a\x37\x15\xca\x07\xf6\x8a\xed\x95\x9f\xa1\xb4\xeb\x44\x55\xea\xdd\xdf\x2c\x21\x39\xc8\x29\xfa\x62\x92\xad\x7d\x11\xcd\x4d\xd9\x8d\xee\xda\xb1\x33\xf5\x0d\x5f\xb8\x13\x16\x20\x6b\xb2\x26\xa0\x2e\xcc\xcd\xce\xd0\x30\x39\xfd\x1f\x43\xc1\x71\x0f\xfe\x2f\x29\x28\x93\x6a\x44\x8e\x89\x62\x7c\x9a\x41\xe3\x9a\xd3\x30\xc2\x69\xcc\x0c\x4c\x11\x43\x6a\xe7\x34\x73\xba\x14\xe5\x04\xac\xcd\xca\xcc\xbe\xcc\x52\x07\x4e\x52\x31\x94\xa7\x72\x81\xed\xdd\xc2\x62\x6f\xb0\x82\x34\x7b\xe7\x7c\xcf\xf2\x96\x15\x34\xa9\x18\x11\x7a\xcf\xf6\xf0\xda\x5e\x9f\x5c\x78\x47\x86\xd3\xd6\x8e\xd6\x7c\xe9\xd6\x18\xe1\xa3\x3e\x5a\x0a\xeb\x0d\x2d\xd1\xc5\x3a\x69\x41\x4a\x05\x56\x5a\xc7\x53\x46\xc0\xcb\x99\x28\x55\xa2\x62\xca\xe1\x0e\xa5\xc7\x67\x23\xf8\x19\x4d\x82\xf1\xe9\xf7\x45\x4a\xf5\x56\xe1\xa6\x76\x34\x20\xb2\x7f\x65\x27\x21\x25\xce\x62\x70\x6b\xc2\xa6\xa4\xa0\x92\xe6\x6a\x44\x2e\x5d\xdd\x43\xc4\x34\x36\x09\x6d\x89\x0e\x76\x37\x8b\x02\xc8\xff\x43\xae\xc2\xb5\x8c\xc8\x70\x38\x24\x37\x1f\x4f\x3f\xbe\x23\xf6\x17\x2b\x65\x6b\x41\x26\x02\x95\x20\x51\x4a\xf3\xaa\x39\x70\x54\xfc\x8d\x7c\x2f\x38\x7c\x9c\x98\x13\x42\x35\xcc\x41\x92\x3b\xb3\x55\x09\x4b\xa1\xb2\x5e\x8d\xf6\x3f\x2d\x1e\xb7\x93\x4c\x72\x7a\x7f\x5d\xca\xe9\x0e\x1b\x40\x56\x36\x21\x34\xd9\xd4\xca\x24\xa2\x5e\x98\xb7\xab\x92\x19\xa4\x65\x06\x29\xa1\x63\x31\x87\x86\xc9\xb6\xf9\x18\xb2\xf4\x12\xfc\x83\x86\xe7\x8d\x95\xc8\x4a\x5d\x29\xab\x07\x70\xff\x8e\xfc\x1b\x3a\xbd\x29\x29\x40\x26\xc0\x35\x9d\xc2\xb2\x19\xc0\xde\xf7\xf6\xcd\xbf\x1c\x3a\x7e\x64\x66\x74\xd6\x93\x37\x06\x23\x3e\xd0\xfb\xef\x79\x6d\x1a\x64\x8a\xbc\x19\x91\xe3\xa5\x97\xe1\x73\x59\x52\x66\x68\x6b\x41\x47\x7e\xf0\xca\xf1\x82\x48\x51\xa2\x2b\x9f\x94\x45\x53\x9b\xfd\xfd\xbf\xfd\x8b\x51\xfa\x68\x5e\x64\xf0\xce\x97\x4b\xb5\x6a\xb3\x91\x61\xb4\x20\x7f\x78\xf3\x2f\x96\x7a\x9a\xf3\x59\x6b\x85\x35\xcc\xa8\x01\x58\x59\x10\x96\xdb\x20\x4d\xc8\x16\x75\xdd\x55\xd9\x44\x7f\xa5\xa9\xd4\x6a\x40\xd0\xdf\x5f\x09\x87\x5a\x68\x9a\x2d\x69\xf9\xa8\x85\xc3\x9d\x05\x52\x2a\x10\x26\x80\x86\x2a\xf2\xf6\x0f\x6f\xfe\x65\xd5\x9c\xf2\x91\x27\x80\x4f\xe2\x13\x18\x80\x31\x36\xca\xfd\x2d\xcb\x32\x48\x07\x8f\x2e\x7f\x52\x4a\x3d\x03\x39\x20\xc0\x95\x37\x56\x99\xf5\x2d\xad\x0d\x67\x97\x25\xe7\x28\x23\x58\xeb\x30\x5a\xb4\x02\x0b\x97\xfb\x58\xc3\x08\x35\xc9\x85\xd2\xeb\x97\xbc\xfd\x71\x33\x83\xf2\xc5\xc7\xc9\xae\xe2\xc0\xb0\x85\x19\x62\xf5\xe9\x16\x22\xe5\xfd\xf0\xb6\xca\xa1\x1c\x32\xae\x87\x42\x0e\xed\x34\xef\x88\x96\xe5\xe3\x5e\x83\x7a\xe4\x8d\x13\xf0\x19\xc8\x40\x19\x9c\xb7\x95\x5d\xfd\x24\x27\xbf\xfd\x79\x4e\xc5\x1d\xdf\x4c\x39\x90\x70\x3a\x9a\xd1\xf2\xd4\x37\x2d\x6e\x4b\xc7\xc6\xbc\xdd\xdc\xfd\xff\x5b\xc5\xee\x1d\xc8\x81\x3b\xbb\xd5\x69\x37\x72\x15\x7a\x3c\x06\x5b\xbc\xbd\x3a\xb6\x96\xf3\x59\x9b\x93\xb9\xc1\xbe\x66\x0d\xe5\x5a\x39\xe1\x6b\x28\x90\x5d\x47\xed\x90\xd1\x18\x51\x60\xce\xb9\xda\x78\xd0\x33\xa0\x4a\xaf\x03\x45\x3c\xe8\x8f\x8f\x87\x43\xfb\x97\x47\x53\xe8\x34\x12\x12\x82\xbc\xb6\x31\x9e\x58\x44\xd9\xbb\x02\xeb\xe1\xb3\xa1\x68\x0d\x21\x6a\xaf\x3a\x12\x66\xff\x9a\xf2\xd5\xa7\x0a\xa8\xf1\x46\xce\x36\xa2\xb5\x7b\x34\x08\xf9\x75\xa6\x53\x47\xbc\x2a\x8f\xa2\x75\x69\x3e\x1b\x29\x3a\x07\x4d\x1f\x4e\xff\x58\x1e\x4d\xa2\x7d\xad\x29\x4f\xa9\x4c\xdd\x2a\xf7\xf7\x55\x35\xe5\x88\x7c\x40\x5f\x1a\x9f\x88\x77\x64\xa6\x75\xa1\xde\x1d\x1d\x4d\x99\x1e\xdd\xfe\xbb\x1a\x31\x71\x94\x88\x3c\x2f\x39\xd3\x8b\x23\x74\xa0\xb1\x71\xa9\x85\x54\x47\x29\xcc\x21\x3b\x52\x6c\x3a\xa4\x32\x99\x31\x0d\x89\x2e\x25\x1c\xd1\x82\x0d\x6b\x99\x59\x8d\xf2\xf4\x0b\xff\xa2\x4f\x2c\x18\x37\xce\x10\x5a\x97\xe4\x1c\x86\x25\xbf\xe5\xe2\x8e\x0f\x51\x93\x55\x3b\x9d\xa6\xed\xa2\x18\xfc\x58\x82\xf7\x2e\x81\x0b\x85\x48\x3f\xf9\x26\x98\x8f\x19\x52\x9e\x0e\xad\xd3\xf1\x13\xef\x45\x1b\xdb\xee\xb0\x0e\x0c\xd8\x26\x16\xdd\x8e\x76\xda\x10\x4d\x34\x9b\x43\x2b\x27\xb6\x1f\x8d\xed\xfe\xe8\x43\x49\xd3\x52\xda\x1d\x0f\xbc\xd9\xde\x37\x93\xd3\x05\xca\x3a\xf8\x6e\x22\x2c\x2b\xe7\x22\x05\x67\xf9\x9c\xa3\x6a\x7f\x6d\x98\xf9\x8d\x11\x85\x9d\x8f\x1b\xed\xbe\x0b\xa5\x21\xb7\xc4\xc9\x3e\x9f\x2d\x88\x96\x0b\xeb\x18\x97\xb7\x46\xf9\x74\x9e\x6b\x23\xf1\xdf\xe2\x7d\x4a\x89\x84\xa1\xe8\x53\xc3\xd5\xcb\x5d\xde\x86\x47\x49\x21\x14\xc3\x77\x3b\x9e\xb7\x9b\x65\xae\x3d\xbb\x0c\xdc\x74\x7f\xfa\xe3\x2e\x5b\x37\xc1\x06\x0b\x3b\x5a\xd9\x9b\x11\x14\x93\x30\xf6\xdf\x6d\xcf\xbe\xf2\x8a\xab\x11\x4b\x12\xc1\x95\x96\x94\x6d\xce\x6e\x5a\x3f\x5a\xba\x42\xda\xfb\x1b\x08\x62\xd0\x71\x2b\xa0\x90\xd5\x18\x2c\xcf\x14\x11\x2d\x3d\xa8\x43\xc0\xd8\xe4\x27\x1f\x4b\x68\x08\x57\x4b\xd3\x6a\x0b\x18\x91\x4e\x70\xb2\x4f\xc3\x04\xa4\x84\xf4\x14\xa5\xcf\xeb\xea\xbb\xce\xa7\x5c\x54\x3f\x9f\xdd\x43\x52\x6e\x9b\x23\xbe\x3a\x56\x6c\x79\xde\x20\xe2\xc2\x4e\xec\x22\xcc\xd1\xf5\x17\x9c\xfc\x21\x10\xec\x4e\x10\x51\x54\x33\x35\xb1\x99\x64\xd5\x46\x40\xe0\xf8\xac\x50\xb8\x72\x0f\x23\x8b\xb3\x49\x11\x4c\x23\xb9\x49\x66\x42\x28\x73\xca\x71\x3f\x71\xde\x39\x13\xd6\xe7\x87\x69\x2d\x92\xe4\x86\xc6\xf8\xf4\x96\x7a\x7a\x6b\xa8\xad\x1f\x63\xca\xaa\xe0\x15\x04\xbd\x97\xca\x4c\x83\x86\x47\xf3\xc7\x14\xa5\x26\xa5\x89\x2a\x73\x33\xe9\x1d\xb0\xe9\x4c\xab\x01\x61\x23\x18\x21\xd6\x00\x4d\x66\xc1\xb4\x39\x80\x6e\xf4\x47\x09\x51\x2d\xb4\x12\x1f\x54\xf9\x0e\x2e\x41\x67\x50\xf1\x98\xe5\xbd\x5c\x0b\xae\x01\x01\x9d\x8c\x0e\x07\xa4\x4e\x21\x37\x6b\x1c\x2f\x08\xd3\x60\x68\x36\xea\x22\x52\x94\x53\xfb\x25\xe0\x63\x3a\x71\x5d\x55\x32\x08\x7a\x51\x53\xd4\x19\xf7\xec\xc7\xed\x99\x7d\xc3\x95\x97\xb9\xd1\x17\x2b\xa2\x8e\x66\x75\xdf\x52\x47\x48\x09\xaa\x10\x56\xdb\x5c\x36\xb8\xff\xff\xab\x87\x0e\xd4\x61\x0d\xcc\x19\x9b\xce\x3c\x2c\xa9\x63\x04\xcd\x3d\xd8\xfd\xec\x91\x4e\xbe\x14\x3b\x5a\x7a\x54\xec\x68\xfa\xb6\x7d\x26\x45\x8d\x55\xc1\xfe\x6b\x90\x79\x05\x45\x44\x11\x24\x19\xce\xce\xed\x5b\xd9\x38\x1c\x23\x6f\xc8\x01\x22\x19\xd3\xfb\x0a\x11\x7e\x28\x8a\xc3\x11\x39\x26\xbc\xac\xce\xdc\x43\x2f\xe0\xa2\x9a\xdf\x4d\x64\x5e\xaa\x44\x3d\x57\xcb\x2f\xee\x44\xee\xec\x68\xe7\x29\x0f\xc7\xd0\x41\x00\x1e\x2f\x98\xf8\xd0\x24\x16\xd6\x2d\x27\xe8\x46\xba\xfd\x1c\xfe\x2b\xda\xcf\xb1\x12\x60\x81\xc7\xb5\x8e\xa2\x00\x99\x0f\x42\xe9\xa9\x3a\x90\xcd\x53\x6c\x61\xd1\x16\x2b\x48\x3f\x98\x41\x7a\x82\x2b\xe9\x14\xa1\xb3\x7e\x2c\x87\xb1\xf8\xfc\xaa\x06\xb4\x1b\x44\x7e\xbc\xc0\xab\x3b\x06\x2f\x6d\x1e\x5d\x29\x5d\x3d\x3a\xd1\xbc\x7a\x3c\x88\x78\xcf\x2f\xb0\x67\xfd\xe8\x09\x6d\xed\xe8\x4e\xda\xea\xb1\x7b\x68\xd0\xa6\x79\x5a\x04\x0c\xad\x1f\x7d\x9d\x4d\x3b\x5a\x04\x17\xad\x1f\x2b\x22\xea\xa7\x89\x35\x5a\x3f\x5a\x1b\x49\xd7\x8f\xb6\x71\x49\xeb\xc7\x52\x12\xe3\x27\x0a\x52\x1a\x34\x23\x94\xc8\xb7\xda\x9e\xe3\xf7\x9d\xf8\x49\x3d\x7a\x06\x71\xbb\xc8\xa6\xf5\x63\x59\x00\x7c\x21\x51\x4e\x6b\xa6\xfa\x56\x9b\x69\xde\x6f\x7c\xd8\x66\xaf\xfb\x38\x1d\xa7\x50\x0c\x5c\xea\x8c\xb7\x33\x63\x44\x75\x21\x01\x0b\x0e\x60\xd8\x97\xb7\xc3\x7c\x9e\xc0\xaa\xf5\xa3\x3f\xc6\x69\x47\x4f\xec\xd3\x8e\xde\x90\x1b\x05\x9e\x6f\xac\x5d\xf8\x09\x65\x1d\x6b\x99\x8e\xb2\x4e\x94\x75\x76\x18\x51\xd6\xd9\x76\x44\x59\x67\xd3\x88\xb2\xce\x9a\x11\x65\x9d\x28\xeb\x74\x1a\xcf\x4f\xd6\xb1\x96\xaa\xde\x0c\x66\x3f\x5a\x83\xeb\xb2\x85\x0c\xa5\x29\x1f\xd2\xd3\x34\x95\x19\xde\x7f\xed\x48\xec\x0d\x9a\xd7\x5c\xa4\xba\xa4\x7c\x0a\xe4\xed\xf0\xed\x9b\x2d\xd3\x01\xd7\x8f\x2e\x41\x3b\xe1\xd8\x35\x75\x70\x79\x6c\xf2\x48\x7c\x32\xef\x92\x3b\xa9\x95\xc3\xa3\x21\x61\x6e\x70\x10\x55\xf5\xae\x72\xd0\x84\xea\x86\x41\x9c\xe5\x50\x39\x44\x1b\x29\xc8\x75\x4c\xaf\xe0\xce\xdf\x61\x36\x75\xd4\x6e\x05\x09\x50\x1b\xc7\x3e\x86\x6a\x15\x22\x07\x9b\x60\xea\x0f\xbd\x59\x02\x78\x58\x91\x03\x18\x4d\x47\x24\xb5\xc9\xda\x94\xbb\x98\xb1\xc3\x41\xe8\x1e\xcf\x0d\x71\x95\xf8\x1f\xb3\x6c\xe7\x1f\x87\x39\x70\x5d\xd2\x2c\x5b\x10\x98\xb3\x44\x57\xdf\x87\x01\x81\x4c\x5b\x67\x67\x17\x57\x4a\x07\xf1\xb0\xab\x48\x38\x5c\x39\x5b\xbb\xf9\xab\xfd\xe8\x2e\xbb\xad\xac\xa3\x3d\xbd\x59\x92\x4b\x2c\x84\x46\x1b\xd5\x2a\x6d\xde\x66\xfd\x95\xf8\x4f\x44\xf0\x8f\x57\x6d\xdd\x63\xa4\x27\x9e\xd0\x99\x0f\x2c\x2b\x50\x65\x96\x19\xf4\xb6\x1e\xb3\x55\x10\xac\xf1\x64\xad\xc9\xb6\xb1\x6e\xd6\x3c\xc8\xba\xc1\x7b\x6e\x44\x21\x32\x31\x5d\x84\x3b\x68\x7b\xb5\x04\xe5\x6d\x28\x51\xe5\xd8\x89\x80\xe6\x10\x5d\x2c\x6d\x79\xf4\x85\x6c\x1c\xd1\x17\xb2\x32\xa2\x7d\x60\x79\x44\xfb\xc0\x0e\x23\xda\x07\xd6\x8c\x68\x1f\x58\x1d\xd1\x3e\x10\xed\x03\x5d\xc6\xeb\xb7\x0f\x90\xe8\x0b\xd9\x34\xa2\xac\x53\x8f\x28\xeb\x6c\x3f\xa2\xac\xb3\x3a\xa2\xac\x13\x65\x9d\x28\xeb\x44\x59\xa7\xed\xe8\x80\xdc\x85\x48\x7b\x4f\x91\x29\x44\xfa\x40\x86\x8c\xb5\x57\x27\x62\x98\x89\xa4\xaa\x2c\x62\x1e\x71\x9e\x0f\x45\x73\x6b\x42\x1f\x90\x7f\x0a\x0e\x36\x3d\xc1\x96\xac\xcd\x81\x08\x6c\x0f\x51\x88\xf4\x40\x1d\xb6\x08\x3c\x8f\x19\x36\x31\xc3\xe6\x37\x90\x61\x33\xa3\xca\x15\x3e\x42\xd2\xba\x39\xe1\x26\x38\xfe\x37\x20\xf3\xdf\x6c\xbe\x8d\x41\x38\x87\x30\xd8\x3d\xae\x46\x0a\x0b\xbb\xd4\xf9\x76\x21\xbd\x6c\x42\xcc\xe9\x65\xb6\xf9\x4e\x9a\x42\x4a\x0a\x90\x43\x8b\x64\x82\x4c\x98\xab\xff\xb5\x84\xbf\x0e\xc2\x2f\x3c\x6f\xa6\x09\x89\x17\x9d\x3c\xd3\xfc\x94\xde\x7c\x53\xa1\x8b\xae\xc1\x15\x5f\x5c\x2a\x4d\x3f\x5a\xe9\x90\x68\xe7\x4e\xfb\xae\x93\x5e\xda\x97\x12\x89\x4a\xde\xf5\x4e\x65\x8e\x37\x8f\xb5\xc5\x69\xff\x51\x82\x5c\x10\x31\x07\x59\x2b\x46\x55\xdf\x9e\x41\xd5\x64\x26\xa1\xae\x00\x72\x3f\x06\x9e\x5e\x4c\x11\x7d\x6a\xea\x7d\x7b\x0d\xc9\x33\xab\x7e\xbc\x79\xf4\xab\x38\xf4\xa8\x36\xbc\xb4\x5a\xca\x9b\x47\xaf\xe6\x37\xd2\xb3\x09\x8e\xf4\x68\x86\x23\xfd\x9a\xe2\x48\xef\xe6\x38\xd2\xa7\x49\x8e\x7c\xf6\x0a\xd0\x9b\x47\xcf\xe6\x23\xd2\xbb\x95\x8e\xbc\xc0\x7a\xd2\x9b\xc7\x27\x00\x77\x9f\x16\x3b\x12\xab\x53\x77\x1e\x7d\x1b\xd4\x48\xdf\x46\x35\xd2\x37\x1e\xb6\xaa\x82\xbd\x79\xc4\xfa\xd8\x9f\x40\x4e\xeb\x4d\x88\xe8\x5a\x53\xfb\xb1\x85\xf6\x80\x93\x55\x57\xdf\xcf\xa5\x00\x59\x2e\x5d\xb7\x92\x35\xef\x0e\x7a\x75\x61\xa8\x66\xd8\xf2\xd4\xc7\xad\x22\x46\xe3\xef\xa9\x37\x78\x95\x3c\x28\x1e\x17\x4c\xb6\xd2\x3a\xa6\x36\x9d\x55\xcd\x63\x8c\x52\x50\x37\x9d\x0a\x1e\xc6\x7b\x47\x36\x9c\xb4\x96\x26\x78\xba\x1c\x60\x5a\x3f\x81\xfa\x85\x6d\x74\xbb\xe7\xed\xd8\xfb\xaa\xbe\x63\x6f\x14\xf6\xc4\x75\x33\x1e\xfc\x9f\xff\x7b\xd8\xa8\xde\x52\x4f\xe8\xa8\x72\x75\x76\xc6\xa0\xe9\x30\x83\x39\x64\xb8\x0e\xdf\x70\x79\x26\xd0\x62\x6c\xcb\x9e\x06\x06\xa9\x8b\xe5\x1d\x25\x13\xa0\xba\x94\x58\x41\x14\x38\x1d\x67\xdd\xcf\x4a\x54\x30\xa3\x82\xb9\xdd\x88\x0a\xe6\xc6\x11\x15\xcc\x0e\x23\x2a\x98\xdb\x8d\xa8\x60\x6e\x1e\x51\xc1\x8c\x0a\x66\x8b\x11\x15\xcc\xa8\x60\xb6\x1d\xbf\x61\x05\xb3\xdf\xc0\xe9\x50\xdd\x73\x71\x28\x28\x3f\x6a\xaa\x59\x52\x07\x55\xfb\xbb\xec\xbf\xfa\x55\x33\x43\x15\x72\xbd\x92\x19\x2a\xa2\x2b\x8a\xf6\xe8\x11\x8d\xb2\xd2\x39\x57\x9e\x7c\x50\xd9\x7c\x6d\xb1\xe1\xbd\x21\x62\xe0\x74\xee\x15\x13\x6f\x7c\xe8\x5a\xdd\xda\xbd\x8a\x6b\x4b\xc9\x81\xf7\xf6\x63\xab\x16\x2e\x74\xf3\x22\xd7\x6c\x58\xdf\x51\xf9\xff\x31\x6c\xa7\x51\x31\xa0\xe1\xa4\xae\xa2\xe4\xaa\x08\xac\x1a\x79\x0c\x75\x04\xd9\x58\x03\xb6\xc6\x9d\x30\x6e\x63\x29\x7d\x5b\x21\xc1\x7d\x58\x96\x25\xa7\x48\x00\x3d\x9a\x5b\xc9\x17\xd7\x83\xe2\x6f\x0d\xbb\x20\x8e\x88\xe2\x19\xa3\xdc\xa5\xdb\x0a\xee\xfb\xde\xdb\x5e\xf6\xb5\xb8\x5c\x75\x6b\xa9\xde\x3e\x22\x67\x88\xf4\xe1\xc4\x4c\x21\x7c\xa8\xed\xb0\xd2\x8f\x89\xe2\x79\x95\x86\xb8\xdb\xb9\x34\xc4\x52\x4c\x4a\xac\x0c\x11\x2b\x43\x74\xaa\x0c\x81\x17\xed\xe1\xee\xbd\x44\x04\xf9\xd1\x35\x60\x92\x80\xa0\xca\xcb\x4c\xb3\xa2\x8e\xf1\x56\xf6\x55\x99\x55\x24\x26\x2e\xd6\xb4\x89\xef\xe6\x6d\x34\x99\x2d\xe3\x3d\xce\x87\x31\xe1\x0a\xc9\x89\x8b\xe7\xc4\x76\x49\x58\xd3\xc0\x6b\x1d\x36\x68\x95\xbd\xfc\x58\xc4\x53\x24\xd8\xaa\x56\x9a\x6d\x37\x2f\x43\xe7\x33\x83\x12\x86\x62\x3f\xc0\x20\xc2\x96\x19\x18\x17\xcb\xe6\xc0\x6b\x2e\x71\xa0\x0e\x0f\xbd\x30\xd4\x2b\xf7\xfa\x24\xdc\xe7\xcf\x01\x97\xf8\xcf\x6d\xf8\x0f\x7e\x50\xc5\x81\x6a\xf0\xd5\xfc\xe7\x65\x07\x5d\x76\x8f\x9f\xeb\xc3\x20\xd7\x5b\xdc\xdc\x93\xc7\xcc\xfd\x96\xaa\x6b\x3c\x4b\x17\xc6\xb3\xd3\x3a\x5e\x87\xdb\x22\xa6\xa4\x6e\x3f\x5e\x42\x4a\xea\x13\xb9\x26\x5e\x4e\x66\xea\x8b\x75\x47\xbc\x94\xcc\xd4\xe8\x82\xd8\x69\xbc\xd6\x84\xd1\xe6\xe8\xd1\xe5\x10\xdd\x0d\x3d\xcb\x54\xbd\x30\xff\x4f\xe3\x66\xe8\x05\xff\x7a\x8d\x5f\x8b\xb1\x6b\xaf\x3c\x76\x2d\x2a\x7a\x51\xd1\x6b\x8e\xa8\xe8\xad\x8c\xa8\xe8\xed\x30\xa2\xa2\xb7\x79\x44\x45\x6f\x75\x44\x45\x2f\x2a\x7a\x5b\x8c\xa8\xe8\x45\x45\x6f\xdb\xf1\x1b\x53\xf4\xfa\x2b\x1a\x1f\x63\xc8\xfa\x8f\x21\xeb\x87\x10\xf6\x40\xfe\x7a\x41\xba\x9e\x62\xc6\x62\xbc\xd8\xf3\x8e\x17\xeb\x58\x3a\x8f\x6b\xf6\x69\xca\xe7\x85\xbb\xbd\xa9\x86\x1e\x9d\x0b\x96\x92\xa2\xd4\xae\x82\x58\xac\xa3\xf7\x9c\xeb\xe8\x35\x76\x34\x16\xd3\xdb\xaa\x98\xde\x26\x98\xc5\x8a\x7a\x1b\xc6\xf3\x89\x62\x8b\x15\xf5\x76\x1d\xb1\xa2\xde\xfa\x11\x2b\xea\x3d\x30\x62\x45\xbd\x58\x51\x2f\x16\x3c\xe8\x30\x62\xc1\x83\x35\x23\x16\x3c\x68\x3f\x62\xc1\x83\xad\x46\x2c\x78\x10\x0b\x1e\x34\x47\x74\x42\x75\x1b\xb1\xe0\x41\xc7\x11\x1d\x53\xb1\xe0\x41\xa7\x09\x63\x45\xbd\x18\x95\xb8\xfb\x88\x0a\x66\x54\x30\xb7\x1b\x51\xc1\xdc\x38\xa2\x82\xd9\x61\x44\x05\x73\xbb\x11\x15\xcc\xcd\x23\x2a\x98\x51\xc1\x6c\x31\xa2\x82\x19\x15\xcc\xb6\xe3\x37\xac\x60\xc6\x8a\x7a\xcf\x3d\x1a\x92\x3c\xc7\x94\xa7\x58\x51\x2f\x46\x48\xb6\xda\xee\x58\x51\xef\xf1\xf1\x9b\xaf\xa8\xd7\x88\xd6\x7b\xba\xb2\x7a\xbb\x2f\x23\xd6\xd6\x8b\xb5\xf5\x62\x6d\xbd\x58\x5b\x2f\xd6\xd6\x8b\xb5\xf5\xb6\x1f\xcf\xdf\x99\xf1\xec\xf4\x8f\xd7\xe1\xc0\x88\x25\x17\xb6\x1f\xb1\xe4\xc2\xc6\x11\x4b\x2e\xc4\x92\x0b\xd1\x19\xd1\x66\xc4\x92\x0b\x3b\x8e\xe8\x78\x88\x25\x17\x76\x1a\xb1\xb6\x5e\x8c\x62\xdb\x7e\x44\x45\x2f\x2a\x7a\xcd\x11\x15\xbd\x95\x11\x15\xbd\x1d\x46\x54\xf4\x36\x8f\xa8\xe8\xad\x8e\xa8\xe8\x45\x45\x6f\x8b\x11\x15\xbd\xa8\xe8\x6d\x3b\x7e\x63\x8a\x5e\xac\xad\xf7\x9c\xa3\xc9\x62\x6d\xbd\x35\x23\x46\x8e\x3d\xef\xc8\xb1\x96\xb8\x42\x4b\x2d\x72\x51\x72\x7d\x0d\x72\xce\x12\x38\x4e\x12\xf3\xd7\x8d\xb8\x85\x1d\xa3\x95\x9a\x5a\xe8\x03\xd3\x12\xc6\x53\x96\xa0\x1e\x79\x37\x03\x2c\x8d\x67\xc4\x5b\xbc\x8f\x50\x7b\x23\xd1\x78\x67\x8d\x5e\xb8\x4e\x43\xd3\x30\x84\x07\xa7\xde\x15\x5e\x16\x42\x63\x21\x32\xa0\x7c\x87\x27\x1d\x33\x04\xb9\xe3\x69\x6e\x00\xe4\xbd\xa3\xc4\xf5\x64\x64\x0c\x99\xe0\x53\x17\x31\xe4\x4e\xc0\x88\x9c\xd4\x37\x24\x94\xe3\xe1\x29\xa5\x04\xae\xb3\x05\xc2\x01\x8b\x74\xa1\xd2\x90\x8b\x39\xa4\x48\xb1\x31\x50\xc9\x8a\x91\x54\x93\x0c\xa8\x79\x17\x87\xfa\x65\xe6\xf0\x50\x72\x89\xf3\xdb\x49\xc7\xe0\x82\xa7\x5a\x01\x71\x77\xda\xd8\x8a\x1a\x2e\x19\x36\x9c\xd4\x84\x6c\x29\x41\xf5\x28\xf8\x42\x3c\x9a\x0b\x51\x92\x3b\x6a\x05\x25\x59\x72\x3c\xcc\xf8\xe9\x06\xb4\x3b\xbe\xbc\x83\x48\xd2\xde\xfa\x30\x44\xaa\xb6\xe3\x63\x5d\xac\x01\x54\x4e\x5b\x31\xa9\xc6\xd6\xec\x1f\xcb\x69\x69\x25\x42\x87\xca\xc0\xb5\x5c\x60\x44\x9f\x15\x29\x52\x91\xdc\x1a\x34\xcc\xe9\x14\xf6\xf7\x15\x39\xf9\x70\x6a\x68\x5f\xa9\x0c\xa9\x76\x65\x02\x1d\x2d\x2c\xa4\x98\xb3\xd4\x60\xf6\x0f\x54\x32\x3a\xce\x8c\xcc\x39\x01\x09\xdc\x88\x04\x5f\x1e\xfc\x70\x7c\xf5\xcb\xc5\xf1\x87\xb3\x43\x94\x3e\xe1\xbe\xa0\xdc\x1c\x89\x52\xd5\x71\xa8\x0e\x27\xcc\x8b\x80\xcf\x99\x14\xdc\x2c\x0e\xf5\x34\x4a\xe6\x7e\xd6\xa4\x3a\x09\x12\x94\xc8\xe6\x90\x5a\x19\xb9\x7a\x9b\x67\x39\x8c\x17\xa5\xf6\x7a\x23\x46\x47\x9a\xd3\xc3\x93\x19\xe5\x53\xb3\xce\x53\x51\x9a\xf9\xbe\xfc\x12\x57\x24\x21\x2d\x13\x2b\x35\x51\x8f\xb2\x5f\x0e\x3c\x9b\x30\x84\x5e\xd9\x9a\x8e\x2a\xa1\x85\x5f\x73\xf8\x59\x6a\xc1\x35\xbd\x7f\x67\xc3\x03\xf7\xbe\x0c\x2e\xed\xf9\x7a\x98\xc2\xbc\xc2\x32\x1b\xbb\xaa\x0c\x4b\x31\x66\x64\x2f\xbc\x7b\x44\xce\xcc\x3b\x20\x0d\x01\x68\xa3\x3b\x61\x0e\x12\xb5\x4e\x07\xbe\x01\x91\x30\xa5\x32\xcd\x40\x61\x5c\xa3\x27\xcc\x56\x33\x70\x00\x83\x4a\xa7\xe5\x42\xaf\xa3\x24\xe4\x83\xc0\x18\xc7\x89\x78\x47\x66\x5a\x17\xea\xdd\xd1\xd1\x6d\x39\x06\xc9\x41\x83\x1a\x31\x71\x94\x8a\x44\x1d\x69\xaa\x6e\xd5\x11\xe3\xe6\x64\x0d\x53\xaa\xe9\x30\x38\xd2\x47\x96\x6d\x0f\x13\x91\xe7\x94\xa7\x43\xea\x50\x6b\x58\x6d\xeb\xd1\x17\x8e\xa1\x0e\x69\x75\x17\xe3\x43\x3a\x54\x33\xc8\xb2\xfd\x16\xc8\xdc\x4d\xe0\xeb\x20\xe8\x75\x12\xf0\xdc\xb7\x77\x3f\xbd\x67\xd5\x61\xb5\x30\x18\x91\x0b\xa1\x5d\xf8\xad\x8b\xf4\x46\x22\x8a\xf0\x5d\x7f\x9e\xcf\x2e\x6e\xae\xfe\x7a\xf9\xf1\xfc\xe2\x26\x1e\xeb\x78\xac\xe3\xb1\xee\x70\xac\x81\xcf\x3b\x1f\x69\x2f\x6d\x06\xc7\xa4\xda\x6f\xe4\xd1\x0a\xb4\x3f\x06\xd5\x06\x74\x96\x0d\xed\x78\x32\xa8\x37\x20\x70\xc6\xe7\x3f\xd0\xa6\x69\x9d\xaf\x05\x07\x71\x37\x58\x11\xb9\x92\xbe\xbb\xc4\xde\x77\x30\x63\x75\xf5\x5b\xb5\x92\x1f\xed\xe8\xee\x53\x32\xaf\x6e\x6f\x62\x68\x6c\xdf\x05\xcd\xeb\xfa\xda\x6b\x76\x6d\x44\x3e\x78\x85\x87\x9c\xfc\x72\x7e\x7a\x76\x71\x73\xfe\xcd\xf9\xd9\x55\x7b\x0d\xba\x07\x5b\x0b\x5a\x13\x7a\x02\xc0\x7e\x4b\x2e\x59\x48\x98\x33\x51\xaa\x6c\x51\xd9\x3f\xd6\x13\x81\xe5\xd3\xef\x1c\xbe\x8b\x4a\x13\x5f\xfb\x58\x64\xb6\xfd\x32\xdb\x53\x98\xd0\x32\xb3\x7a\xd3\xde\xde\xa8\x0d\x97\xb3\xa3\x2f\xf4\xfd\x46\x8a\x0e\xf5\xa3\x1b\x28\x7c\x6d\x2b\xcf\x4f\x84\xdc\x78\x8c\xf7\x5d\xd8\x41\x83\xf5\x38\xe1\xd1\xda\xe6\x9c\xf4\x68\xbd\x63\x1d\xa1\xd3\xd1\xbd\xd0\x8f\xd3\x3d\x11\x7c\xc2\xa6\x1f\x68\xf1\x1d\x2c\xae\x60\xd2\xcd\x40\xdc\x84\x37\xda\x1d\x9d\x0f\x19\xad\x94\x86\x9d\xd9\x97\x75\xf3\xcf\xf4\xe6\x9d\xe9\x2b\x2c\xa3\x7b\x48\x46\x7f\x11\x14\xbd\x44\x4f\xac\x54\xf3\xb7\x16\x68\x67\x4b\xee\x2b\xb8\xa6\x17\x97\x7d\x37\x2e\xef\x47\x93\xd9\x85\xec\xde\xd1\x59\xbd\xad\xda\x91\x08\x9e\x40\xa1\xd5\x91\x98\x1b\xce\x05\x77\x47\x77\x42\xde\x1a\x3d\xc2\x28\xae\x43\x8b\xb5\xea\x08\xbd\x05\x47\x5f\x58\xff\xd7\xcd\xc7\xd3\x8f\xef\xc8\x71\x9a\xba\xd6\x2c\xa5\x82\x49\x99\xb9\x66\x08\x23\x42\x0b\xf6\x03\x48\xc5\x04\x1f\x90\x5b\xc6\xd3\x01\x29\x59\xfa\x75\x7b\xe2\xec\x47\x8f\xbb\x20\x0a\xeb\xe3\xec\x79\x27\xae\xd1\xbb\xb2\x68\xf0\xae\x8a\x88\x18\xae\xc5\xb4\x42\xdc\xf4\xf6\x66\x27\x64\xf4\x04\x9a\xdd\x8d\xf3\xcb\x03\xb7\xb0\x5f\xba\xba\x5f\x13\x56\xeb\xdb\x74\x88\x5a\x88\xf4\x1d\x51\x65\x51\x08\xa9\x15\xc9\x41\x53\xa3\xf4\x8e\x0c\x86\x0d\x9a\x7f\xa2\x97\x6a\x40\xfe\x5e\xfd\x88\xae\x26\xf5\xd3\xfe\xfe\x9f\xbf\x3b\xfb\xeb\x7f\xee\xef\xff\xfc\xf7\xf0\x2a\xb2\x42\x1b\xfe\xd3\xbc\x45\x15\x90\x8c\xb8\x48\xe1\x02\xdf\x81\x7f\xaa\x86\x83\xc5\x5d\xd0\x54\x97\x6a\x34\x13\x4a\x9f\x5f\x56\x7f\x16\x22\x5d\xfe\x4b\x75\x90\x38\xc8\xf3\x64\x0c\xb8\x45\x97\x54\xcf\x9e\x09\x7b\xa8\x69\x49\xcf\x47\xd5\xcd\x1a\xb6\x00\xca\x29\xfe\xf3\x1b\x0f\x02\x23\x3d\xdd\x49\xa6\x35\x3a\xdd\x5c\x9a\xb9\x98\x0c\xcc\xa9\xad\xc5\xce\xf9\xdb\xbd\x67\xc5\x60\xaa\x1d\xec\x19\x60\x08\x11\x07\x2d\x7b\x90\x2b\x06\xbb\xea\x5c\x3e\xbe\x3c\x27\x73\x0b\xe1\x67\x03\x1c\x9f\x3a\xfc\xcd\x27\xa5\x71\x55\xcb\x28\x07\xaa\x4a\x43\x7c\x67\xa3\x81\xaa\x04\x66\x92\xb1\x9c\xb9\x20\x43\xd7\x5e\x4a\x91\x03\xfb\xe3\x28\x29\xca\x81\xbb\x61\x94\x43\x2e\xe4\xa2\xfa\x13\x8a\x19\xe4\x46\xd3\x1a\x2a\x2d\x24\x9d\xc2\xa0\x7a\xdc\x3e\x56\xfd\x65\x1f\x6c\xbc\x60\xf5\x69\xab\x0a\xd7\x4e\x52\x47\x91\x21\x7d\x7d\xb4\xcd\x83\xfe\x99\x90\xb6\x0a\x33\x2e\x3e\x81\x48\x58\x59\xe2\xac\xc0\x59\x41\x11\xf5\xc9\xb9\xc8\xca\x1c\xd4\xa0\x12\x83\xac\x35\x80\xcf\x8d\x66\xa9\x9e\x95\xa0\x96\xb2\x39\x53\x7d\xc4\x0f\xaf\x91\xd3\x98\x0b\xc5\x17\xa5\x2e\x4a\xed\x6a\xd9\x04\x6d\xe9\x84\x42\xbb\x45\x55\x70\xa0\x41\xf6\xdf\x76\x2d\xb8\x45\x48\x41\xb5\x06\xc9\xdf\x91\xff\x3e\xf8\xdb\x57\xbf\x0e\x0f\xbf\x3e\x38\xf8\xe9\xcd\xf0\x3f\x7e\xfe\xea\xe0\x6f\x23\xfc\xc7\xbf\x1e\x7e\x7d\xf8\xab\xff\xe3\xab\xc3\xc3\x83\x83\x9f\xbe\xfb\xf0\xed\xcd\xe5\xd9\xcf\xec\xf0\xd7\x9f\x78\x99\xdf\xda\xbf\x7e\x3d\xf8\x09\xce\x7e\xde\x72\x92\xc3\xc3\xaf\xbf\xec\xbc\x74\xca\x17\x1f\x3b\x12\x50\x3b\x86\xbd\x95\x22\x5a\x9e\xb1\xa7\x00\xeb\xfb\x61\xad\x34\x0d\x19\xd7\x43\x21\x87\x76\xea\x77\x44\xcb\xb2\x1b\x31\xa9\x99\x52\xdf\xe7\xdf\xf7\x1e\x7b\x57\x33\xa4\x8a\x5d\x3f\x9b\x03\xae\x20\x91\xa0\x3f\x87\x25\xc7\xbe\xc9\xcb\x29\x4b\xc1\x8e\xaf\x8d\xcf\xfd\x16\x8c\x3b\x55\xb0\x20\xee\x6b\x2d\x89\x4e\xa4\xc8\x47\x24\x70\x6f\xcc\x31\xd3\xc3\xdd\x77\x0b\x1d\xac\xa0\x7e\x44\x63\x50\x34\x06\x6d\x18\x8f\x1a\x83\xae\x2d\x1e\x3e\x5b\x4b\x10\xf0\x79\x5b\x17\xc6\x5a\x0f\xba\xd7\x75\xb4\x20\x85\x28\xca\x8c\xea\x0d\x9e\xb1\x35\xee\x74\x77\xd4\xeb\x48\xe4\x3a\x92\xc6\x32\xb4\x7c\xbd\x0f\x93\x1c\x67\x19\x61\xdc\x1e\x7c\x9c\xc0\x3b\xcc\x24\x58\xd5\x86\x50\xeb\xcf\x9e\x9b\x25\xdc\xb9\x92\x75\x61\xb8\xa7\x22\x4a\x53\xa9\x31\xea\x18\x4b\xda\x59\x56\xe2\xbc\x4f\x8c\xd7\x85\xed\x2a\xe1\xb0\x4a\x02\x59\xdb\xd7\x33\xa3\x4a\xfb\x65\xe3\x6a\x34\xbd\x45\x6f\x63\x02\x29\xf0\x04\x30\x23\xad\x84\xfa\x5b\xc7\x46\x6f\x23\x67\x7c\x6e\xe7\xa0\x24\x2d\x6d\x30\x88\x25\x7f\xeb\xe7\x78\x5d\x01\x08\x06\x11\xaf\x7d\xfb\xe5\x2a\x0e\x01\xa9\x7e\xa5\x61\x57\x89\x7d\x95\x95\x55\x3d\x4d\xe4\x41\x77\x9e\x59\x79\xb6\x3a\x09\x43\x2b\xcc\xb2\x36\x3f\x37\x99\xe4\x6b\x70\x06\x76\x67\x9f\xbf\x39\xd6\xd9\x13\xdb\xec\x87\x65\xee\xe0\x3b\xe9\x93\x4d\xf6\xe1\x2c\x29\x24\x4c\xd8\x7d\x4f\xe7\xf4\x98\xd7\x96\x18\x96\x02\xd7\x6c\xc2\x6c\xc7\xfe\x42\x42\x01\x3c\xad\x8a\xa2\x62\x56\x38\x6f\xc2\xe6\x59\x06\xf3\x58\x81\xbb\x5f\x52\x76\xbd\x4e\xd8\x8f\x74\x8c\x44\x3a\xd6\x7a\x7c\x26\x3a\xe6\x30\xf7\xf9\x10\x31\x8c\x3c\xef\x1e\xfa\x7e\x1a\xc4\xb1\x23\x16\xef\x8c\x65\x75\x42\xd7\x11\xce\xa2\x96\xaa\x07\x55\x74\x51\x0b\x1b\xb9\x46\x66\x6c\x6a\xc0\x6a\x2b\x0a\x59\xa1\x89\xe4\x94\xd3\xa9\xcd\xea\xd6\xc2\xdb\x69\x8d\x96\x65\x90\x58\xb2\xb4\x21\xdc\xdb\xd7\x30\x4e\x0c\x62\x67\x82\xa6\x78\x51\x8a\x2c\x03\xa9\x48\xc6\x6e\x81\x9c\x42\x91\x89\x85\x4b\xd2\xe6\x29\xb9\xd6\x54\x1b\x94\xbe\x06\xdd\xce\xe7\xdb\x09\x5d\x71\xc5\x97\x65\x96\x5d\x8a\x8c\x25\xad\x2c\x2a\xcd\x6d\x3b\xc7\xfd\x2a\xca\x2c\x23\x05\x4e\x39\x22\x1f\x39\x52\x8c\xe3\xec\x8e\x2e\xd4\x80\x5c\xc0\x1c\xe4\x80\x9c\x4f\x2e\x84\xbe\xb4\xa2\x77\x33\xda\xce\xde\x48\xd8\x84\xbc\xc3\x9a\x36\x9a\x68\x3a\x45\xc5\xc9\xfb\x00\x07\x06\xfe\xe1\x04\x96\x38\xdc\x31\xb5\x56\x53\xe9\x8c\x38\x5f\xe0\x4c\x86\x50\xd9\xbf\x3f\xfb\x36\x65\x6c\x02\xc9\x22\xc9\xba\x9f\xab\xe3\x04\xa3\x17\xea\x3c\xf3\x00\xbf\x5d\x99\x76\x97\xda\x89\x2a\x20\xe3\xc4\xd6\x4f\xb7\x85\xe1\x6b\x54\xaf\x56\x64\x55\x5d\xd5\xab\x86\xd8\x9a\x73\x76\xe5\x99\x85\x50\xfa\xda\xa8\xe7\xbd\x54\x59\xdf\xbf\xf4\xd3\x11\xac\x25\x9d\x65\x90\x12\x96\xe7\x90\x1a\x15\x3e\x5b\x10\x3a\xd1\x98\x62\xdb\x30\x0f\x24\x12\x2c\xd6\xba\xda\x25\x33\xca\xd3\x0c\x24\x99\x50\x96\x39\x63\x40\xe3\x7e\x0d\x32\x67\x1c\x6d\x02\xd6\x1d\x8b\xf6\x05\xf3\x57\x92\x08\xe9\xeb\xde\x33\xad\xfc\xa5\xfa\x60\x22\x13\x09\x10\x60\xd9\xaf\x4c\xc6\x99\x48\x6e\x15\x29\xb9\x66\x99\x5d\x8c\x10\xb7\x24\x11\x79\x91\xe1\xd1\xe9\x70\xb2\xaa\x7f\x0e\x2b\x54\x1a\x9a\xd9\xd5\xd1\x17\xf5\x25\xfc\xa1\x2d\x37\xef\x41\x0a\xeb\x43\x06\x83\x7b\x48\x7a\x4b\xef\x37\xb4\xd4\xec\x32\xfa\xfb\x05\xaf\x44\xb1\x89\x30\x0c\xcc\xec\x75\x9d\x98\x5d\x91\xcb\x11\x39\xbb\x87\x24\xa8\x42\x81\xfd\x21\x90\x10\x60\x56\x28\xbd\x85\x57\x54\xf6\xae\x43\xf2\x5d\x38\x1a\x60\x3f\xb1\x73\xfa\xaa\x59\xee\x15\x24\x63\x1c\xc9\xa2\x4b\xc8\x23\x8c\x2b\x23\x10\x34\xce\x90\x3d\xb1\x4e\xd0\x25\x29\x93\x58\x33\x61\x51\x05\x5f\xfb\xb9\xb0\x1c\x81\x10\x9a\x1c\xec\x1f\xed\x1f\xae\xd8\x2c\xf7\x8d\xe0\x92\x81\x25\xd1\xd6\x80\x99\xd4\x8b\x52\x2c\x2f\xb2\x05\xae\x63\x3f\x1d\x10\xa6\x7d\x74\xb6\x2c\xb9\x5f\x95\xcb\x12\x1c\x10\x25\x88\x96\xd4\x97\x62\xb1\xbf\x9a\x9b\xb4\x2c\x1d\x73\x38\xd8\xff\x75\x7f\x40\x40\x27\x87\xe4\x4e\xf0\x7d\x8d\xcb\x1f\x91\x1b\x61\xc4\xef\x7a\xa2\x85\x28\x09\x07\x9b\x0c\x00\xf7\x45\xc6\x12\xa6\xb3\x05\x12\x3a\x22\x4a\x6d\x33\x8e\xa9\xf6\xd9\x89\x67\xf7\x4c\xbb\x18\x37\x83\xb6\x6f\x10\x9a\x96\xd8\x11\x6a\xa4\xa3\x39\x1c\xcd\x80\x66\x7a\x66\x03\x4b\xb8\xe0\xc3\x7f\x82\x14\x98\xb7\xc8\xdd\x95\x57\x57\x22\xb0\x17\x6d\xc3\xd0\xde\x6f\xa1\xbf\xa6\x42\x7f\xb9\xb9\xb9\xfc\x16\xf4\x12\xc9\x30\x6f\xf1\xe1\x3e\x68\x41\x00\x39\x11\x32\x7f\x06\xb4\xa3\x1f\x07\xe7\x90\x14\x42\x3e\x07\x12\x36\x13\xaa\xd3\x5e\x92\x95\xfd\x14\x4a\xa3\x12\xe5\x84\x38\x0e\x89\xd9\xc1\x66\xdc\x89\xef\xbb\x73\x7e\x39\x22\x7f\x15\xa5\xf9\x9a\x31\x1d\x67\x8b\xaa\x6e\x83\x02\x4d\xf6\xcc\x54\x7b\x86\x3c\x19\x6c\xf8\x0b\xd0\xd4\x68\x36\x86\x7a\x00\x7d\x1e\xfd\xb5\x88\x3b\x0f\x6e\x6d\xfd\xf2\x81\x52\x69\x91\x93\x99\xfb\xec\x66\xba\xa6\x3b\x19\x23\x3c\x3d\x3e\x17\x4a\x42\x61\x29\x9c\x7b\xe6\xd5\xd1\xaf\x15\xba\x61\xe1\xee\x7e\x1f\x63\xcd\xab\x24\x04\x9b\x6b\x30\x65\x93\x89\xb8\x05\x96\x41\x35\x68\xe7\x5e\x09\xc7\x33\x2e\x54\xda\x3a\xf9\x73\x79\x22\x74\x04\x76\x8f\x0f\xeb\xb5\x4c\x69\x3f\xb1\x06\x64\x9d\x61\xd6\xe1\x8c\x35\xda\xf4\x04\xc4\x4f\x53\x27\xf3\x73\x00\xa0\x9f\xcd\x27\x7d\x42\xa0\xe8\x21\x1c\x7c\x35\x18\x5c\x0b\xa3\xbe\x62\xba\xa6\x25\xae\x48\x26\x14\xc8\x79\xdb\x04\xf0\x7a\xf4\xf7\xe9\xa2\xbd\xa1\xc0\x8f\x35\xb9\xd5\x92\xf0\x32\x1f\x83\xac\xb3\x59\xa4\x5e\x05\x48\x10\xcd\x70\x61\x6f\xf7\x26\xe0\x66\x3b\x47\xf3\xe4\x9f\xfe\xed\xdf\xfe\xf0\x6f\x23\x3b\x7d\x15\xd9\xc0\xc9\xf9\xf1\xc5\xf1\x2f\xd7\x3f\x9c\x60\x42\x6d\x57\xa8\xf6\x14\xb6\xd9\x77\xd0\x66\xaf\x21\x9b\x9f\x34\x60\x13\xd3\x44\x3a\x53\x91\xa6\xbf\x00\xa7\x34\x18\x60\xf4\x36\xa3\x71\x3a\xd9\x2f\x28\x6d\x66\x64\xcd\xa6\xfd\xd5\x1c\xb5\x67\x71\xc6\x74\x52\x5c\x8b\xe4\xb6\x47\xbd\x66\xff\xe6\xe4\xd2\x4e\x19\xd6\xe4\xe4\xde\x18\xc2\xf8\x5c\x64\x73\x5b\xce\xf7\xe6\xe4\x12\x4f\xde\x08\xff\x85\x86\x28\xd4\xa8\x17\xe6\x59\x9f\xc8\xe0\xdc\x53\x46\xfb\xb6\x16\x34\x4a\x24\xd0\x8c\x29\xcd\x12\x7c\xae\x36\x93\x9a\x19\xba\xf8\xa5\xa2\xa6\xb4\x6e\xf4\xae\x29\xed\x7f\xf4\x6e\xbb\x9d\x95\xa6\xae\x81\x87\xcf\x98\x2f\x39\x7e\x64\x33\x3e\x22\x5f\xfa\x4d\xf0\xa5\x42\xc2\xb5\x16\x45\x4f\x9e\x10\x3b\xd9\x06\x3f\xc8\x18\x26\x42\xc2\xb2\x23\x24\x70\x6c\xf8\x06\xc3\x1c\xb3\xff\xbc\x09\x4a\x34\x9c\x17\x36\xe4\x52\x95\xc9\xcc\x5b\x13\x39\x28\x75\x84\x2e\x8f\xb2\xb0\x2a\x26\x3a\x51\x4a\x09\x03\xf3\x75\x90\xe3\xea\x06\x75\x1a\x83\x79\x3d\x70\xfb\x23\xe8\xc4\x9a\x59\xbd\xff\xc5\x59\x54\xfd\xf2\x97\x5d\x25\x89\xa4\x6a\x06\x58\x3f\x04\xee\x59\xdd\xe7\x84\x2a\xc1\xad\xb1\xd7\x7d\x0e\x32\x1a\x45\x0a\xaa\x54\x5d\xc1\xd9\xbd\xc4\x3e\x74\x29\xd2\xfd\x7d\xd5\x78\x60\x2a\x69\x02\xa4\x00\xc9\x44\x4a\x30\x9f\x38\x15\x77\x9c\x8c\x61\xca\xb8\xf2\xf0\x33\x13\x79\x40\x1b\x76\x63\x8b\xed\xfa\x6a\x71\x23\x72\xd5\x28\x82\xe2\xd2\x93\x12\x51\x9f\x68\xb7\x8a\x65\x27\x13\x46\x84\x06\x6d\x9a\xab\x8d\xf1\x61\xb3\xfa\xf1\x45\xf7\xe0\x6d\x32\xa0\xad\xaf\x6d\x84\x0e\x16\xe7\xa7\xc9\xac\x9b\xe3\x37\xba\xa7\xb6\x1c\xd1\x3d\xb5\xdb\x88\xee\xa9\xe8\x9e\xda\x3c\x9e\x9d\x79\x37\xba\xa7\xa2\xd2\xb5\x3c\xa2\x7b\x2a\xba\xa7\x36\x8c\x67\x47\xbf\xa2\x7b\x6a\x8b\x11\xdd\x53\x5b\x8e\xe8\x9e\x8a\xee\xa9\xe8\x9e\x8a\xee\xa9\xdf\x90\x19\xd0\x8f\xe8\x9e\x5a\x99\x24\xba\xa7\x02\x60\x44\x4d\x69\xcd\x88\xee\xa9\x35\x23\xba\xa7\x82\x11\xf9\x52\x0b\xbe\xe4\x9d\x3b\x97\x46\x2f\xeb\x9e\xb3\x76\x89\x8e\x03\x96\x38\x1f\x51\xd8\x0b\xae\x7a\x55\xd0\xfe\x2d\xa8\xf9\xe1\x53\x6d\x9c\x37\xa8\xf6\x31\xad\xcd\x87\xda\xd5\x1d\xe1\x93\x08\xd5\x51\x21\xec\xff\xd5\xce\x88\xc0\x0b\x61\xb5\xd3\xf6\x39\x69\x4f\x96\x6d\xd5\xc5\xf5\xf0\xac\xdd\x0e\xcf\xc4\xb5\xd3\x83\xab\x21\xba\x19\x5e\x9d\x9b\xe1\xf5\xf4\xd0\x75\xce\xfc\x9b\x99\x04\x35\x13\x59\x6b\x44\x6f\x20\xf9\x07\xc6\x59\x5e\xe6\x06\xe7\x94\xc1\x67\x36\xaf\xa2\x06\x54\x85\xae\x96\xd0\x5b\x4b\xa1\xb9\x91\xa5\x80\x05\x50\x29\xcb\xcc\x36\x62\x5a\xe7\x8c\xa2\xa8\xae\xca\x24\x01\xc0\xf6\x6a\xa1\x16\xf3\x87\x51\xf5\xa6\xaa\x9d\xc6\xdb\x6e\xf4\xa6\x1b\xef\xb7\x25\x4a\x71\x96\x3f\xfc\xbe\xd5\x1c\x1d\xbd\x3c\x9f\xdf\xc3\xd3\x03\x99\xee\xae\xaf\x74\xd2\x55\xfa\xe0\x12\x5d\x75\x94\x97\xe6\xc9\xe9\xcd\xa3\xd9\x83\x07\xe7\x19\x79\x6f\x9e\x0d\x5b\x78\x2e\x1e\x9b\x67\x58\x7d\xb5\x07\x07\x43\x1f\x1e\x9a\xfe\xbc\x33\x9f\xa0\x48\xe9\xa7\xf1\xca\xf4\xa8\x0d\xf7\xe4\x8d\xf9\x1c\x9e\x98\x5e\xbe\xba\xab\x07\xe6\xf3\x79\x5f\xfa\xf9\xdc\x8e\xd6\xad\x57\xe1\x71\xe9\xc1\xaa\xd5\xa7\x45\xab\x37\x6b\xd6\x27\xf3\xb0\x74\xf7\xae\x3c\x03\xcf\x4a\x67\x20\x33\xce\x34\xa3\xd9\x29\x64\x74\x71\x0d\x89\xe0\x69\x6b\x0e\xb3\x54\xb5\xae\x3a\x3f\xca\x4e\xeb\x74\xb4\x66\xfc\xf1\x8c\xba\xe2\xbc\x90\xfa\x90\x6a\x6f\xfe\x73\x02\x05\x36\x34\xb1\xab\x7c\x96\x06\x3d\xf2\x6c\x94\x41\x1b\x8c\xdd\xe7\x26\xfe\x45\xdc\x11\x31\xd1\xc0\xc9\x01\xe3\x7e\x1f\x0f\x03\x35\xb0\xd6\xcc\x2b\xb4\x36\x57\xdf\xbe\xf1\x37\xbf\x3e\x95\x1b\x8d\x0b\x4a\x7d\x7a\x0b\x88\x7b\xd1\xe3\x26\x10\x77\xe3\xa4\xcc\x9a\x66\x10\x6b\x1a\x69\xd2\x9b\xb7\x75\x79\xd1\xb7\x38\x6f\x75\xda\x28\x4f\x89\x4b\xdc\x78\x7d\x9b\xd6\xd9\x6f\xfc\x1a\x7c\xc6\xd1\xf6\x42\xfa\xb6\xbd\x3c\x91\x6f\xf8\x19\x4a\xcd\x2f\xd4\x1f\x1c\xa5\xe6\x1d\x46\x90\xff\xf5\xad\xa4\x09\x5c\xf6\x2e\x70\xf8\xe3\x44\xd2\x52\xba\xb4\xbd\x4a\xee\xa8\x0e\x0f\x07\x48\xed\x69\xaa\x92\xe2\x30\x1b\x6d\x52\x66\xd9\x82\x94\x85\xe0\xcd\xcc\x43\xeb\xb4\x5a\x4e\x58\x33\xb3\xad\x7b\x4b\x2d\xa5\x16\x52\x38\x06\x2c\x4b\xce\x0d\x3d\xaf\x1b\x0e\xa1\x54\xaa\x2c\xad\x0e\xd3\xe2\x14\x9b\x9a\xe5\x1b\x66\x8a\x19\x73\x2c\x87\xba\x25\x45\x3d\xa1\x79\x7a\x22\x64\xc2\xc6\xd9\x82\xcc\x68\x56\x75\x97\xa0\xe4\x96\x65\x99\x9b\x66\x44\xae\x41\x13\x3d\x63\xae\x31\x38\xc9\x04\x9f\xe2\xe2\x28\xf7\x5d\xcd\x20\x31\xcf\x26\x19\x50\x5e\x16\xf6\x7d\x86\xad\x2f\x44\x29\xfd\xfb\x5c\x59\xcb\x6a\x16\xa6\x08\x67\xd9\x20\xe8\x9d\xf4\xe0\xc6\xd6\x0d\xea\x15\xf8\x9c\xc2\x3b\xa6\x60\x10\xce\xe9\x2b\xf3\xaa\xa0\x73\x46\x21\xc5\x9c\xa5\xb6\xfb\x85\x07\x1b\x76\x69\xb5\xdd\x31\xaa\xf3\xcc\x05\x1f\x72\x98\x52\x94\x7a\xdc\x29\xb2\x7b\x66\xe7\xb1\xae\x38\x9e\x62\xbf\x0c\xa3\x2e\x88\xa2\x91\xca\x3a\x67\xb6\xd3\x67\x00\x39\x72\xc0\x05\x11\xc8\x5e\x4b\xce\xb4\xed\x1e\x3d\x2b\x35\x49\xc5\x1d\x3f\x1c\xd9\xaa\xc4\x4c\x11\x4a\xc6\xa0\x7d\x27\x5b\xdf\x59\x91\x49\x50\x04\x38\x1d\x67\x66\xcf\x31\xe0\xe1\x66\x2d\x80\xc8\x04\xa8\x2e\x25\x90\x29\xd5\xb0\x56\x68\xb2\xdf\xfb\x30\x78\x99\xaa\xba\xbc\x97\x5c\x41\xeb\xfe\xd6\x3d\x4b\x5a\x7f\xfa\x63\x3b\x1a\xc1\x72\x10\xa5\xfe\x2c\xaa\xe4\xdd\x8c\x25\xb3\x50\x32\x66\x39\x28\x22\xca\x25\x1d\xfb\xad\x7b\x6c\xfd\x0e\x45\x7d\x72\xdd\x68\x6b\x25\x5e\x63\x4a\x5b\x4e\x39\xae\xdb\xca\x52\x73\x00\x4f\x2f\xae\x7f\x79\x7f\xfc\x5f\x67\xef\x47\xe4\x8c\x26\xb3\x30\x1f\x9d\x13\x8a\x44\x03\x09\xc5\x8c\xce\x81\x50\x52\x72\xf6\x8f\xd2\x56\x27\x27\x07\xd5\xb3\x87\xbd\xd6\x42\x6e\xc9\x7d\xb1\xf5\x75\x6f\xbd\x96\x6c\x23\x6d\x1b\xe0\x20\x14\x60\x77\x84\x65\xf1\xe9\xcc\x5c\xb2\x8a\x06\x8a\x5a\x33\x30\xc4\x88\xcd\x1d\x19\x76\xc5\xa5\x69\x5a\x85\x5c\x18\x3c\x37\x68\x61\x58\x15\x1d\x63\xa8\xc4\x0c\x08\x07\x6d\xd0\xba\x32\x58\x09\xae\x1a\x85\x01\x4a\x05\x6a\x40\xc6\x25\x06\x77\x14\x92\xe5\x54\xb2\x6c\x11\x4e\x66\x78\xd5\x85\xf0\xea\xd0\x62\x79\x49\xa7\x1f\xcf\xae\xc9\xc5\xc7\x1b\x52\x48\x5b\x32\x00\xa3\x33\xf0\x3a\x7e\xd6\x18\xcc\x13\xae\x47\xe7\x88\x1c\xf3\x85\xbd\x68\x0f\x38\x53\xc4\xe8\x42\x80\x2c\xd8\xc9\x90\xbe\x28\xfc\xde\x9b\x11\xfe\x6f\xcf\x7c\xa5\x34\x42\x66\x15\x74\x92\xac\x04\x8f\x59\x31\x94\x8d\xb3\x00\x9a\xee\xdb\x5f\x55\xb7\xa5\x2a\x6c\xee\xd2\x00\x31\xe8\xb6\x44\xab\xad\x46\xf0\xda\xee\x5b\x8c\x4f\xb3\x10\xab\xda\x91\xfd\xae\xba\x65\x57\xcd\x72\x58\x7f\xc1\x65\x5b\x05\xb3\x97\xae\x4f\xf5\x1a\x7a\xea\x95\x52\x73\x3f\xaf\x4e\x39\x8a\x20\xc2\xf6\x97\xe7\x97\xfe\x04\x38\xe9\x26\x5f\xea\x99\x88\x0f\x5b\xa7\xc6\x80\xbc\x21\x7f\x26\xf7\xe4\xcf\xa8\x5e\xfd\xa9\x6b\x67\x99\xae\x8a\x4f\x77\xf3\x8e\xd5\xea\xcf\x2f\x7b\x82\xf8\x8f\x86\x3a\x99\x19\x0d\x54\xb5\x20\x63\xe6\xc4\x79\xb8\xd7\x20\x0d\x1d\x75\x3b\xf1\xa4\x3d\x79\xcc\x02\x3f\x23\x9a\x59\xdf\xc5\xf9\x24\x6c\x09\xa1\x77\x44\x34\xf3\xf8\x5f\x84\xd2\x17\x8e\x0a\x35\x1b\x4c\xd4\xb3\xe5\x54\x27\xb3\x26\x19\x33\x82\x9a\xd2\xf5\x01\x53\x24\x15\x68\x49\xb3\x71\x80\x33\xd6\x21\x12\xe3\xf9\xa0\x71\x37\xe7\x7c\x63\x3f\x1f\xda\xa9\x25\x03\x0a\x6a\x3e\x4e\xb0\x0a\xca\xcb\x14\x22\x75\x32\x99\x59\x56\x1a\xf0\x8c\x07\x84\x32\x67\xab\xa9\x4c\xd6\x88\x4b\xe6\x3c\x25\x94\xdb\x00\xee\x09\x48\x69\x43\x37\xc7\x0b\xf4\x20\xb3\x04\x3a\x6f\x5e\xa7\x93\x54\x48\xa1\x45\x22\x3a\xb4\x0d\x6a\x3a\xcc\xdd\x74\x08\x04\x6b\xfc\xf5\x36\xf7\xef\x4f\x2f\x07\xe4\xe6\xe4\x12\xbb\xa9\x5c\x9f\xdc\x5c\x36\x35\x95\xbd\x9b\x93\xcb\xbd\x27\x05\x05\xf1\x92\xd5\x3b\xb3\xcc\x16\x93\x34\x0c\x4f\x46\x6c\x1b\xe6\xb4\x18\xde\xc2\xa2\x25\x4f\xed\x83\xaf\x0f\xab\x1d\xee\xe5\x83\x2c\x98\x73\x5a\xec\x3c\x9b\x04\x9a\xb2\xcf\x94\x45\xe1\x4e\x56\xfd\xce\xf5\xe9\x14\xb9\x98\x43\x6a\xc5\x61\xff\x04\xf0\xb4\x10\xcc\xc8\x8b\x31\xc7\x62\xf7\xa7\x63\x8e\xc5\x43\x23\xe6\x58\xc4\x1c\x8b\x98\x63\xf1\xf0\x88\x39\x16\x6e\x3c\xbd\x19\x94\xc4\x1c\x8b\x96\xe3\x75\xf9\xf9\x63\x8e\xc5\x4e\x23\xe6\x58\xac\x8e\x98\x63\xb1\x61\xc4\x1c\x8b\x0d\x23\xe6\x58\xc4\x1c\x8b\x98\x63\x11\xa3\xc5\x1e\x9d\xeb\x79\x46\x8b\x91\x98\x63\xe1\x46\xcc\xb1\x78\x15\x31\x31\x24\xe6\x58\x6c\x35\x62\x8e\x45\xcc\xb1\x68\x33\x62\x8e\x05\x8e\x68\x7b\x89\x39\x16\x7e\xc4\x1c\x0b\x3b\x7e\x3b\x52\x73\xcc\xb1\x88\x39\x16\x31\xc7\x22\xe6\x58\x3c\xb8\x8a\x98\x63\xf1\x1a\xf4\x49\xdf\x03\xaf\x7b\xce\xc0\xfe\x89\xc8\x8b\x52\x03\xb9\xf2\x53\x56\x52\xa4\x25\x0c\x4c\x85\x12\x41\xf7\x10\x9e\x44\xf0\x09\x9b\x3a\xca\x7e\x64\x1b\xcc\x0d\xab\xef\x19\x06\x4d\xdd\x5e\x60\xfc\x4e\xc6\x72\xd6\x2e\x91\x83\xac\x6c\xcc\x7b\x9c\x2b\x70\xf2\x98\x93\x94\xd3\x7b\x3c\x22\x34\x17\xa5\x6d\xca\x97\xb8\xfd\xab\x40\x68\x5d\x61\xcf\x6e\x67\x48\x3f\x2a\x4e\x9d\x91\x72\xd9\x83\xb6\x51\x50\xad\x41\xf2\x77\xe4\xbf\x0f\xfe\xf6\xd5\xaf\xc3\xc3\xaf\x0f\x0e\x7e\x7a\x33\xfc\x8f\x9f\xbf\x3a\xf8\xdb\x08\xff\xf1\xaf\x87\x5f\x1f\xfe\xea\xff\xf8\xea\xf0\xf0\xe0\xe0\xa7\xef\x3e\x7c\x7b\x73\x79\xf6\x33\x3b\xfc\xf5\x27\x5e\xe6\xb7\xf6\xaf\x5f\x0f\x7e\x82\xb3\x9f\xb7\x9c\xe4\xf0\xf0\xeb\x2f\x5b\x2f\xb9\xb3\x48\xdc\x9f\x40\xdc\x93\x38\xfc\x49\x84\x61\xe7\x1d\xee\xe9\x2c\x5e\xb9\xd9\x96\x4f\xa3\x63\x58\x0f\x9d\x46\x4f\x4d\x51\xcc\xab\xe6\x61\x8a\x88\x9c\x69\x23\x1c\x1a\x79\x90\x86\x71\x61\x4c\x37\x94\x52\x47\x07\x30\xa0\x92\x6a\xdb\x23\xb4\x8a\xa9\x0a\xe2\xb4\x85\x97\xfc\x5c\xef\xd5\xca\x5e\x81\xe7\x79\x98\xc2\x84\x71\x70\x7e\xb0\x48\x1b\x1e\x1f\x91\x36\xbc\x46\xda\xa0\x20\x29\x25\xd3\x8b\x13\xc1\x35\xdc\xb7\xb2\xb0\x34\x49\xc3\x75\x73\x42\x62\xcf\x99\xcb\xa2\x74\xd7\x88\x28\x6c\x00\xe5\x52\x3a\x6b\x15\x82\x2b\x4b\x8e\x0a\xa6\xcd\x92\x01\x6d\xb5\x3f\xd4\x7b\x30\x26\x72\xf9\x25\x5e\x9f\xb3\x6a\xe6\x3f\x4a\x36\xa7\x99\xd1\x76\xeb\x27\x2e\x51\x83\x09\x1f\xda\xf6\xcc\x6b\xaa\x6e\xeb\x03\x0f\x43\x23\x43\x57\x6b\x3e\xf2\x9f\x84\x3f\xc1\xbd\x7e\x89\x52\x1a\x0a\x48\x97\x92\xcd\x59\x06\x53\x38\x53\x09\xcd\x90\xae\xf5\xc3\x2b\x8e\x37\xcc\x8e\x1b\x2f\x45\xa6\xc8\xdd\x0c\xb0\xbb\x32\xf5\x26\x00\xcc\x70\x99\x52\xc6\x49\x6e\xb6\xa8\xf0\x0f\x2b\x6b\x4b\x30\xe4\xbf\xa0\xd2\x6c\x70\x65\x33\x40\x15\x79\x2c\x44\xe6\x42\x87\xb3\x45\x3d\xbf\x8b\xbd\xe7\xe2\x17\x0e\x77\xbf\x98\xd9\x14\x99\x64\x74\x5a\x99\x0a\x14\xe8\x15\x6b\x5f\x3d\xf5\xc6\x0f\xc0\xb8\xdc\x12\x08\xcd\xee\xe8\x42\xd5\x86\x93\xb0\x0f\xf8\x3b\xf2\xf6\x10\xd1\x99\x2a\x52\xcd\x91\x92\xdf\x1f\xa2\x2f\xf1\xe4\xf8\xf2\x97\xeb\xbf\x5e\xff\x72\x7c\xfa\xe1\xfc\xa2\x1b\xa7\x30\xdf\x0e\x94\xb7\x9a\x23\xa1\x05\x1d\xb3\x8c\x75\x61\x10\x2b\xd1\x26\xe1\xa4\xc8\x82\xd3\xf4\x28\x95\xa2\xb0\x70\xf2\x36\xaa\x9a\x53\x36\xb5\xe0\x30\x33\x19\xb7\x67\xd2\x9c\x70\x2a\x29\xd7\xb5\xb1\xa6\x06\xb9\x2c\xb9\x51\xac\x5f\x78\x60\x3e\x4d\xfb\x0b\xca\x3f\x4e\x53\x48\x1b\xd0\x7b\x75\x41\x80\x27\xfe\xe3\x16\x75\x8e\x36\xb9\xfc\x78\x7d\xfe\xbf\x97\xd0\x70\x51\x74\x8b\x79\xea\x27\x2f\x4c\x8a\xa2\xb7\xdd\xbd\x72\x79\x47\x71\x7f\x9f\xc5\xfe\x56\xbc\xaa\x1f\x4f\xfb\x55\xc9\x9b\x65\x3c\xea\xf9\x49\x2e\x52\x18\x91\xcb\xca\x4a\xdf\xbc\x1a\xa4\xf7\x52\x09\xc4\xdc\xc2\x35\xa3\x59\xb6\x08\x05\x24\x2d\x6c\x32\x4d\x23\x33\x39\xa4\xc3\x13\x9a\xa9\x8e\xc4\xb4\x0b\x67\x32\x4c\xf8\x83\x51\x26\x7b\x81\x66\x35\x1b\x49\x81\x0b\xed\xa4\x52\xb3\x4a\x4c\xd6\x96\x22\x21\x56\x73\x0d\xc2\xa2\x1a\xdc\x45\x59\x43\xbf\x67\x4c\x4c\x79\x58\x5d\x56\x33\x5b\x2b\x6f\xa9\x60\x59\xba\x75\x8c\xa9\xd6\x65\xcd\xec\x12\x68\x8a\x39\x69\x05\xd5\x33\x1b\xd5\x90\x53\x75\x0b\xa9\xfd\xc1\xc9\x35\x95\x99\xdf\xcc\x58\xbd\xea\xc6\xac\xdb\xdb\xf4\x51\x9e\xb1\xb1\x16\xe8\x0b\x68\x57\x74\x83\xf4\x71\x04\xcc\x37\x7d\xe4\xd9\xe2\x4a\x08\xfd\x4d\x95\x8b\xd5\xcb\x06\xfe\xe8\x24\xc5\xa6\x19\x16\x45\x29\x0c\x42\x48\x87\x08\x4c\x44\xe9\x30\x0d\xec\xb4\xde\xb0\x27\x46\x68\x59\xf2\x63\xf5\xad\x14\x65\x6b\x0e\xb0\x22\x68\x7d\x7b\x7e\x8a\xe7\xb8\x74\x5e\x36\xae\xe5\x02\xb3\x4e\x57\x0b\x06\x55\x32\xed\xf7\xce\x4f\x18\x62\x64\xed\xd2\x21\x1f\xe8\x82\xd0\x4c\x09\x2f\x1c\x33\xbe\x56\x81\x72\xda\x99\xb9\x3c\x16\x7a\xb6\xa2\x96\x19\x74\x5e\x7d\x6e\x10\x38\xdd\xea\x0a\x46\x8c\xaf\x3c\xae\xe9\x2d\x28\x52\x48\x48\x20\x05\x9e\x74\xdc\xb5\xa7\x76\x35\xe1\xce\x5f\x08\x6e\x8e\x45\x2f\x7b\x7f\x5e\xf9\x18\xd1\x10\xd6\xdc\x69\xf4\x56\x3a\xbd\x83\xa2\xcf\x12\x0f\x45\xa9\x40\x5a\x07\xab\x2c\xc1\x6e\xc4\x77\xe5\x18\x32\xd0\x56\x19\xc2\xba\x13\x54\x5b\x45\x9a\xe5\x74\x0a\x84\xea\x0a\x51\xb4\x20\xc0\x95\x21\x37\xd6\xf4\xa6\x49\x2a\xa0\x4e\xa0\xa4\x8a\x7c\x7f\x7e\x4a\xde\x90\x03\xf3\xae\x43\xdc\xfe\x09\x65\x19\xba\x33\x35\x95\xcb\x6b\x64\x13\x3f\x05\x2e\x09\x71\x8f\x08\x69\x8f\xe8\x80\x70\x41\x54\x99\xcc\xfc\x9a\x8c\xc6\xe5\x15\x36\x17\xcf\x87\x46\xfd\x57\x88\xaa\x9d\x09\xcc\xf7\x0a\x64\x6f\xf4\xe5\xfb\x16\xf4\x25\x14\x21\x0c\xce\x35\xa1\x67\x11\x2b\x07\x4d\x53\xaa\xa9\xa3\x3b\x75\xd6\xf5\x6b\xdc\xd2\xa7\xa6\x3e\x0a\xde\x33\x5e\xde\xdb\x88\x95\xfe\x94\xfc\xeb\x33\x9c\x96\x24\x1e\x68\xb8\x69\xb4\x28\x32\x66\xf3\x9d\x97\x22\xa8\xce\x1b\x5b\x3d\xd8\x20\x22\xe1\x31\xa7\x59\x26\x0c\x79\x33\x9c\x9d\xf2\x54\xe4\x2b\x2f\x33\x02\x14\x34\x0a\xdd\x8d\xc8\xab\x44\x9e\x27\x37\x47\x64\x30\x87\x0e\x35\x5d\x96\xeb\xf2\x99\xd9\x8c\x2c\xe6\x37\x14\xa7\x27\x19\x1d\x43\x66\x39\x8b\x45\x20\xb5\x8a\x40\x4f\x1d\x85\x28\x45\xd6\x5f\x0e\xc6\x95\xc8\xc0\x86\xf5\x78\x40\x98\xe9\x5f\x04\x1c\x70\x92\xbe\xe0\x80\x8a\x4c\x03\x0e\xa8\x92\xbd\x04\x38\x94\x1d\x18\x2d\x59\x86\x83\xe1\xda\x4d\x38\x20\xeb\x7c\xee\x70\x50\x90\x24\x22\x2f\x2e\xa5\x30\x2a\x57\x6f\xac\xc5\x4d\x5b\xfb\x8a\xac\x4e\xbe\x26\x08\x07\x49\x79\xf3\x66\x2a\x83\x80\x3e\xaa\x2d\x8d\xf7\x51\x7d\xff\x2b\xec\x90\x6c\x48\xcf\x32\x1f\xf2\xb3\x34\xdc\x4a\xe6\x49\x77\xe1\x85\x97\x13\xe8\x60\x25\xeb\x85\x99\x88\x84\x66\x58\x72\xaf\x1b\xc6\x90\x65\xac\x59\x9e\x38\x88\xc2\x44\xd7\x12\xfe\xe6\xfd\xfe\x58\x7d\x0d\x7f\x71\xb6\x2f\x2e\x52\x08\x5c\x90\x36\x7c\xf4\xc6\x46\xeb\xe1\x7d\x3e\x00\xd4\x70\x75\xef\x0d\x4c\x1b\x4f\x6b\xe1\x2a\xc0\x7c\xa8\x0a\xf9\x99\x05\x02\x4f\x19\x9f\xa2\x45\x67\x40\x24\x64\x36\x74\xd4\x9d\xe1\x5b\xab\x7e\xed\x23\x46\xfb\x49\x3d\x3a\xfb\x57\xa3\x24\xc4\x04\x77\x33\xa3\x91\xc3\xcb\x37\x13\x4b\x2d\x99\x22\x7b\xef\x3d\x00\x3a\x54\x3e\x7b\x8e\x0c\x62\xcf\x7e\x61\xb5\x9b\xd6\xc6\x76\xcb\x78\xea\xa2\x2c\x1b\xc0\xaa\x6a\xd4\x5a\x29\x14\xe3\x77\x59\x1a\x92\x86\x77\xe4\x6f\x9c\x54\xc0\x22\xc3\xd6\xe8\x71\x65\x05\x56\x6f\x5e\x1a\x3e\x6c\xf2\xab\x5e\xb2\x3c\xcd\xf7\x1c\xf7\xde\xbc\x77\x68\xd4\xde\xd5\xfb\xfc\xb7\xec\x3d\xe5\xbe\xde\x31\x9e\x8a\x3b\xd5\xb7\x0e\xf1\xa3\x9d\xd6\x0b\xd4\x89\x41\x6b\xcd\xf8\x54\x85\x7a\x04\xcd\xb2\x86\x19\x76\x9d\x22\xe1\x77\xb8\xaa\x48\xbc\x2a\xc0\x2f\x45\x87\x47\x25\x60\x87\x31\xcd\x15\x3d\x91\xe6\x53\x34\xa3\xd9\x75\xd1\xbe\x34\x1b\x59\x46\x83\x6f\x3f\x5c\x1f\x37\xa7\x36\xf4\xec\x0e\x2b\x5e\x1b\x60\x9b\xeb\x84\xa6\x39\x53\x0a\xcd\x40\x30\x9e\x09\x71\x4b\x0e\x7c\xd8\xc6\x94\xe9\x59\x39\x1e\x25\x22\x0f\x22\x38\x86\x8a\x4d\xd5\x91\x43\xda\xa1\x59\xfd\x21\x61\x3c\xab\xa2\x51\x50\x8d\xe4\x5a\x79\x33\x06\xbe\x24\xa9\x56\x81\x7b\xeb\xea\x75\x3a\x2f\xf3\xea\x32\x6d\x85\x4e\x06\xd9\xd3\x17\x9c\x59\xdd\x9e\x8b\x8e\xb5\x33\x1e\xd9\x22\xfc\x76\x97\x9a\x12\xa6\x51\xad\x85\xa3\x95\xde\x9e\x1c\x48\x4e\x3a\x48\x40\xf5\x57\x95\xe7\x2f\xf5\x9c\x24\x05\x9b\x3d\x01\x18\x75\x42\x37\x06\x37\xa1\x55\x76\x1f\x93\xf0\xdc\xa3\xfb\xa1\x44\x8b\x5e\x1f\x9b\xe6\x61\xf4\x81\xac\x98\xd1\xa1\x55\x92\x0d\x49\x42\x1a\xe6\x65\x80\x99\xe0\xc2\x05\xa7\x1b\x2e\x28\x38\xa2\x34\x6a\x0b\xd6\x11\x84\x7b\xe2\x68\x6c\xb0\xd4\x93\xda\x3f\x18\xfa\x90\x30\x89\xc7\x16\x01\xa8\xd7\x70\xc7\xf4\xcc\x57\xb8\x6f\x38\x9c\x70\x25\x12\x14\x7a\x0f\x38\x01\x29\x85\x74\x81\x30\xde\x6a\x8b\x33\x21\x29\xc6\x48\x1a\x83\x24\xd4\xfc\xb5\xaf\x42\x17\x65\x5d\x02\x17\xe3\xc4\x0c\x36\xc1\x64\x02\x09\x4a\x4a\x21\x80\x2d\xd9\x3d\xa8\x2b\xf7\xb9\xe8\x6e\x83\x60\xae\x84\x6e\xce\xee\xcd\x5b\xc2\xa7\x42\x67\xa8\xab\x98\xb7\xfe\xf2\xe1\x88\x90\x73\x5e\x45\x4e\x0e\xcc\x2e\x86\x77\xfa\x90\x1f\x6d\x3e\x31\xac\xbf\x8c\x1f\x10\xda\x9d\x8c\x78\x27\xcb\x1e\x30\xbe\x8b\x31\x98\x84\x06\xe1\x5e\xc9\x01\x1a\x86\xdd\xa4\x66\xeb\x3d\x13\xef\x62\x28\x36\xb7\x7c\x2a\x63\xf1\xcb\xe0\xf4\xa4\x2b\x9d\x73\x29\xf1\x3d\x15\xc5\xbd\x0e\x66\x0b\xc4\xef\xca\xdd\x74\x29\x52\x5b\x12\xa3\x4a\xe9\xc7\x5e\x16\x58\xa2\x83\xfd\xd3\x0b\x58\xb5\x90\xc6\x85\x8d\xca\x0e\x6b\x65\xb8\x9a\xa0\x29\x31\xb2\x72\xe6\x75\xfb\xbc\xc8\x00\xb3\xe7\x82\x99\xeb\xc4\xc0\xa0\x8a\xee\xa0\x5a\x48\x5d\x88\xd7\x55\xe8\x18\x90\xff\xc1\x43\x59\x05\x00\xfa\xe2\x01\x97\xd5\xe3\x56\xc5\x63\xca\x97\xd4\xc6\xcc\x36\x2d\xbc\xe9\x80\xa4\x6c\x32\x01\x1f\x68\x68\x54\x3f\x2a\x69\x6e\x48\xbc\x22\x0e\x04\x63\x98\x32\x1b\xc9\x56\x11\xb6\x7d\x55\x67\xc0\x0f\x2c\x31\x64\x9a\xe4\x6c\x3a\xb3\x88\x42\x28\x66\x46\x12\xef\x52\xcb\x04\x4d\x09\xe2\xb6\x90\xe4\x8e\xca\xdc\xf0\x0d\x9a\xcc\xd0\x3f\x47\x39\x49\x4b\x89\x65\x22\x35\xd0\x74\x31\x54\x9a\x6a\x23\xea\x82\x74\x1a\xa1\x5f\x7f\x2c\x25\xfc\xe0\x88\xa5\x84\x37\x8f\x58\x4a\x38\x96\x12\x8e\xa5\x84\x1f\x1e\xb1\x94\xb0\x1b\x4f\x9f\xed\x4b\x62\x29\xe1\x96\xe3\x75\x95\xb3\x89\xa5\x84\x77\x1a\xb1\x94\xf0\xea\x88\xa5\x84\x37\x8c\x58\x4a\x78\xc3\x88\xa5\x84\x63\x29\xe1\x58\x4a\x38\x16\x45\x7b\x74\xae\xe7\x59\x14\x8d\xc4\x52\xc2\x6e\xc4\x52\xc2\xaf\xa2\xf4\x13\x89\xa5\x84\xb7\x1a\xb1\x94\x70\x2c\x25\xdc\x66\xc4\x52\xc2\x38\xa2\xed\x25\x96\x12\xf6\x23\x96\x12\xb6\xe3\xb7\x23\x35\xc7\x52\xc2\xb1\x94\x70\x2c\x25\x1c\x4b\x09\x3f\xb8\x8a\x58\x4a\xf8\x35\xe8\x93\x4a\xa7\xac\x55\xe5\xb3\x6d\x0a\x55\xb8\xc8\x90\x20\xb5\x75\x5c\x4e\x26\x20\x91\x72\xe1\x9b\x57\xa2\x10\xaa\x82\x56\x15\x2d\x73\x71\x06\x58\x16\x4f\x02\x4d\x5d\xc0\xfb\x86\xc7\x5d\x2e\x2d\x56\x28\xab\x23\x35\xcf\x3e\x7e\xd3\x4f\x55\x8c\x6e\x31\x8a\xb8\xe6\x8f\x3c\xe9\x1e\xab\x56\x03\x7c\x5d\x02\x86\x83\x7b\x92\x09\xe5\x22\x4c\x11\x58\xc9\x8c\x72\x0e\x5e\x79\x64\x1a\x8d\x32\x63\x00\x4e\x44\x01\xdc\xd2\x6f\x4a\x14\xe3\xd3\x0c\x08\xd5\x9a\x26\xb3\x91\x79\x13\xf7\xc0\xae\xa3\x41\xdd\x2f\x4a\x4b\xa0\xb9\x8f\x8b\xcd\x29\xb3\x53\x11\x9a\x48\xa1\x14\xc9\xcb\x4c\xb3\xa2\x9a\x8c\x28\xc0\x80\x76\xcb\xa8\x2a\x60\x60\x78\x49\x1d\x42\x3a\xa8\xdf\xe6\x96\x25\xc2\xa2\x40\xa8\xba\x0e\xb0\x0e\x6a\x5e\xe8\x45\x15\x47\x07\x64\xc2\xa4\xd2\x24\xc9\x18\x72\x6b\x7c\xa3\xcd\x1d\xc4\xf9\x06\x9e\x57\x73\xb7\x52\xe5\x96\xca\x53\x14\x5b\x0b\xad\x6c\x54\x5a\x3d\xa1\x9b\x2a\x65\xca\x89\xf9\x6a\x40\xa8\x2f\x79\x63\x01\xed\x57\x8a\xa0\xf6\x9c\xc5\xce\xee\x7e\x0a\xa6\x0b\xea\xe4\xd5\x61\x7b\x35\xa2\x63\x88\xb1\x47\xce\x41\x23\x9a\xba\x16\x28\x30\xdc\x65\xe5\x18\xe0\x06\x70\x98\x1b\x1c\x80\x04\x0c\x7f\xa5\x1b\xb0\xfe\xb3\x23\x7d\xc0\x14\x3f\x80\x52\x74\x0a\x97\x2d\xbd\x16\x9b\x34\x32\x74\x5c\xd4\x1b\x83\xa8\x90\xd9\xf4\xb4\xea\x97\x3a\xcc\xa9\x29\x06\x91\xdc\xae\xa9\x12\x7e\xee\x24\xd3\x1a\x70\x53\xb1\x38\x12\x3a\x3e\x97\x13\x50\xf7\x97\x82\xa5\x3e\xf8\x49\xea\x87\x0d\x51\xe7\xa9\x0d\x5d\x1a\x03\x19\x4b\x06\x13\x32\x61\x18\x0f\x85\x11\x4a\x03\x5b\xee\x83\x5a\x8b\x82\x52\x46\xdf\x15\xdc\xcb\xb2\x7e\x5d\x23\xf2\xa3\x5b\x98\x96\x25\x4f\x68\x50\x04\x10\x53\xb4\xd8\x84\x4c\x31\xc2\xc9\x49\x8b\x7f\x7c\xf3\x1f\x7f\x22\xe3\x85\x61\x69\x28\x59\x69\xa1\x69\x56\x7d\x64\x06\x7c\x6a\x60\x65\x8f\x67\x33\xc9\xa8\x82\x00\x56\x31\xb7\x0b\x7f\xfb\xfb\xdb\x71\x93\xc7\x1e\xa5\x30\x3f\x0a\xe0\x37\xcc\xc4\x74\x5d\x5d\xf8\xf6\x21\x93\x2d\x55\xa2\x35\x68\x26\x32\x96\x2c\x3a\x23\x9a\xaf\x3b\x43\x66\xe2\xce\xca\xfa\x6b\xb0\xa7\x8e\x81\x2c\x44\x51\x66\xd6\x82\xfd\x4d\x95\x9e\x57\x2a\x58\xcd\xc1\x59\x7b\x2e\xd0\xe6\xea\xa6\x58\xae\x17\x6b\x03\xdb\xfc\x2b\x85\x8b\xed\x76\x56\xc1\xaa\xfc\x0c\x2a\x42\xdf\xd0\x2c\x1b\xd3\xe4\xf6\x46\xbc\x17\x53\xf5\x91\x9f\x49\x29\x64\x73\x2d\x19\x35\xd4\x72\x56\xf2\x5b\x5b\xb9\xba\x4a\x11\x16\x53\x23\x5a\x15\xa5\xf6\x81\xc4\xeb\x3e\xd8\x26\x9c\x7a\x22\xec\xd5\xa0\x7a\x16\xb8\x67\xb5\xae\xe3\x52\x25\x2c\x46\x86\xf3\xab\x10\xd9\x7e\xff\xe6\x8f\xff\x6e\x51\x97\x08\x49\xfe\xfd\x0d\x06\x3f\xaa\x81\x3d\xc4\x48\xdb\x0c\xa3\xc8\x69\x96\x19\xb5\x21\x44\x4a\x03\xe8\x75\x48\xf8\xd9\x71\x50\x77\x47\xb7\xad\x45\xa9\x9b\x9b\xbf\xa2\x1c\xc5\xb4\x82\x6c\x32\xb0\x59\x01\x95\x5a\xb3\x8f\x8c\x61\xdf\x51\x1f\x4c\xcd\x78\x06\x02\xd0\x5c\x64\x65\x0e\xa7\x30\x67\x7d\x34\xaf\x68\xcc\xe6\x55\xfd\x8c\x29\x4c\xc0\x18\x67\x22\xb9\x25\xa9\xbb\x18\x84\xb1\x2c\x97\x50\x6d\x0f\x85\xb6\x01\x3d\x1d\x02\x79\x36\x7e\x7f\x23\x84\x27\xa7\x45\x51\xc5\xe8\x4b\x7a\xd7\x00\x06\x9e\x49\xcc\xf7\xed\x58\x4f\xa1\xb3\x99\xb9\xab\x91\x79\xe8\xbe\xc8\xd0\xcd\xd6\x53\xb4\x0e\x61\xe9\x6e\xa3\xae\x57\xdf\xde\x30\xd9\x40\x88\x7a\x42\x7f\x1a\x0a\xfc\xb7\x0d\xcf\x5e\xc9\x4a\xaa\x12\x5b\x2a\xc4\xb0\x02\x80\x41\x1f\x24\xc9\xed\x0d\xae\x3d\x58\x37\xbb\xc5\x2f\x35\xe0\xc2\x2b\xab\x72\x4e\xb5\x13\x08\xbd\xf9\x9a\x92\x02\xa4\x62\xca\xf0\xe5\x1f\xf0\x40\x9d\x64\x94\xe5\x81\x09\xf0\x69\x80\x60\x0f\x37\x56\xbe\xec\x4e\x29\x2f\x45\xea\x26\x44\x52\x68\xab\x7e\xae\x11\x6b\x9b\x52\x6d\x8f\x0c\xf5\xa9\x49\xe5\x0f\x35\x34\x9b\x94\xd2\xfc\x52\x91\x4a\x7b\xd7\x6b\x22\x90\xf8\x7d\x2f\x95\x3e\x56\x8b\xef\x89\x0c\x20\x61\x74\x9b\xdb\xa4\x84\x0d\xe5\xd1\x1e\x94\x40\xa4\x77\x7a\xe0\x88\x58\x97\xba\x39\x13\xee\x51\xb2\xff\x6e\xff\x49\x89\xa4\x05\x91\x14\x05\x9d\x76\xea\x61\xb0\x04\xa9\xe5\x69\xc3\x44\x6f\xa3\x06\xe1\xf5\xaa\xec\x10\xde\x05\x69\x5d\x88\x02\xcb\x8c\x58\xef\xa8\x07\xb0\x53\x10\x6c\x3e\xe4\x1d\x5d\x10\x2a\x45\xc9\x53\x67\x5f\xaa\x0c\x7c\x1f\x96\x5e\x7c\x21\x38\x78\xc3\xf9\x72\x9e\x38\x5a\xf4\x19\x27\x6f\x47\x6f\xdf\xbc\x16\x4e\x85\x5f\xb8\xc4\xa9\x2e\x2a\x4e\x65\xe9\xd3\x93\x7e\xab\xaf\x76\xdc\xd3\xf7\x7e\x70\x26\x96\xba\x98\x31\xf3\xc5\x5a\xf1\xa7\x3b\xc9\x34\x04\xbd\x8d\x0e\x50\x71\x31\xfa\x61\x90\x15\x7d\xd8\x63\x0d\xef\x7e\xd2\xd0\x55\x39\xfe\x84\x74\xcb\x11\x28\x3c\x6e\xeb\x2c\x5c\xea\x01\x12\x16\x02\x6a\x6f\x8f\x1c\xd8\x3b\xf7\x6d\x66\xe0\xe1\x93\xa2\x96\x03\xda\xd9\x7d\xd1\xa1\xc6\x5c\x03\x70\x67\xf7\x05\x45\x1b\x5c\xd1\x23\x04\xff\x0b\x66\x74\x0e\x98\x11\xc9\x32\x2a\x33\xf4\x39\x5e\xdb\xb5\x93\x71\xa9\x09\xf0\x39\x93\x82\x63\x80\xcf\x9c\x4a\x86\x55\x29\x24\x60\x66\xb5\xd1\x45\xbf\x3c\xf8\xe1\xf8\x0a\x03\x1a\x0e\x5d\x4a\xb8\x5b\x65\xa9\x7c\xf9\x88\x70\x25\xc1\x74\x8f\x6e\x9f\x5f\x87\x81\x21\xd2\x5c\xbf\x2e\xf3\x9e\xbc\xd4\xa5\x2d\x88\x7f\x9f\x64\xa5\x62\xf3\xa7\xa2\x24\x2e\x55\xf5\x94\xb5\xda\xe7\xa5\xb4\xd9\x1a\x50\x2b\x19\xb0\x68\x5a\x47\xd6\xf2\x48\x05\xd6\x7d\x55\xd5\xac\x0a\x7d\xe0\xce\xf4\xe4\x72\xd9\x6d\x2c\x9e\x2f\x59\xb6\x22\x42\x60\xdd\x86\xa7\x35\x42\xa5\x5c\x9d\xe0\x0a\x77\x03\x6b\x33\xba\xb9\x91\x14\x78\x7a\x71\x1d\x16\x01\xb0\xea\x92\x48\x47\xe4\xb2\xfe\xb1\xae\x14\x81\xf5\x8b\x2a\x25\x12\xe4\xb4\xae\x89\x3b\x05\x0e\x12\x85\x04\x33\x65\xa3\x9d\x1c\x19\x53\x65\x9d\x3c\xa7\x17\xd7\xd6\x66\xbb\x1b\xcc\x5a\x8b\xd9\xed\x25\x54\xc3\xf1\x6d\x4e\x44\x0b\xe1\xb6\xd9\xad\xa6\x32\x58\x19\xc0\xa0\x52\x6a\x27\x26\xe7\x97\x84\xa6\xa9\x44\xb7\x8f\x13\x7d\x82\x52\x6f\x95\x6f\x01\xab\x32\x50\x05\xe1\x9a\x02\x70\x23\x89\xab\x01\x4b\x4e\xcb\x22\x63\xd6\x8d\x10\x3e\x50\x57\x93\xc0\xf6\x2a\xbb\x23\x6d\x17\x35\xaf\xb5\x92\xd7\x81\x0a\x89\xb6\x55\xdd\x1e\xd8\x3d\x09\x4a\x64\xf3\xba\xa0\xe6\xd2\xae\xb9\x13\x81\x26\xf1\x6a\xd7\x7c\x11\xb7\xad\x76\x0c\xb8\x96\xe6\x68\x2e\xef\x16\x76\xef\xcd\x4a\x3c\x4d\xd5\x84\x6c\x0e\xe8\x1f\x77\xf5\xeb\x5c\x19\xa5\xba\xc4\xa7\xf5\x0d\xdb\x2a\xab\x40\xa5\xa7\x68\xb8\xaa\x96\x27\x91\x3c\x15\x22\x2c\x1b\x3b\x4e\x2f\xae\x2d\x25\xb4\x1f\x5f\x75\xe5\x5b\xb7\x4b\x35\x55\x6b\x8d\x81\x4f\x56\xe5\xa3\x8b\xe6\xb1\xd4\x56\xc9\xb5\x29\xed\x14\xc8\xd2\x41\xfc\xeb\x94\xb9\xd7\xe1\xed\x0a\xa8\x4c\x66\x6d\xe0\xff\x00\x21\xb0\x93\x92\x54\xd8\x48\x80\x89\x90\xa8\x12\x0f\x91\xbc\x67\x42\xdc\x96\xc5\x36\x14\xdd\x4d\x63\x7b\xe5\x6c\x45\x20\x1a\x4f\xfc\xa6\x68\x7a\xca\x55\x1b\x7f\x6f\x53\xf6\x01\x6d\x25\x1e\x9c\xa8\xce\xc6\x10\xcb\x7a\xd3\x49\x56\x2a\x0d\xf2\x1b\x26\x95\xde\xf3\x05\x57\x11\x83\xad\x4d\x64\x3f\xbc\xe1\x47\xa6\x67\xae\x74\xda\xfe\xa0\x79\xc9\xfc\xed\x26\xde\x37\x3a\xed\xfe\x85\xe0\xb0\x3f\x5a\x16\xbb\x2a\x52\x5e\x91\xb5\x8d\x3c\xc5\x2d\x5d\x41\x66\xe3\x45\xf1\x42\x80\x2b\x37\xae\x6c\x9c\x79\x83\xa7\x7f\x0a\x34\xa1\x58\xa2\x09\xef\x9e\xd5\x65\xde\x6c\x01\x16\x5b\xa7\x4e\x38\x41\x6f\x11\x82\x28\xa8\xc9\xa2\xc5\xe6\xcf\x6e\x23\xcf\xed\x8c\x01\xb6\xfc\xdf\x35\xc8\x39\x4b\xe0\x3d\xe3\xb7\x3b\xa2\x5f\x33\xba\xe4\x6c\x65\xb6\x46\x41\x5e\xeb\xa3\x65\xdc\x06\xdf\x19\x16\x43\xc7\xa2\xd4\x28\xbb\xa1\xc3\xb1\x56\x1c\x19\xff\x1f\xbb\x17\x68\x6f\x2f\x6c\xc5\xac\x75\x3a\xa2\x1a\x58\xa3\x8f\x57\x02\xd5\x82\x6b\x8a\xb5\xfd\x4e\x45\x72\x0b\x92\x64\x66\x19\x23\x52\x07\xbe\x34\xaa\xc9\xc9\x12\x76\x8c\xba\x68\x6b\xe9\x80\x62\x06\x39\x48\x9a\xd5\x45\x15\x3b\x80\xfa\xbd\x23\x9c\xd5\xac\x61\x4c\x8a\xad\x2e\xe4\xca\xa0\x99\x73\x78\xb6\xee\xae\x9c\x2e\x7c\xa5\x49\xc6\x31\xdc\xe0\x9e\x29\x34\xeb\x17\x22\x0d\xb3\xd8\x4a\x05\x72\x58\xe5\x18\xba\x3c\x1e\x55\x05\xe2\xa4\x30\x2e\xa7\x53\xc6\xa7\x8e\x3a\x23\x4d\xaf\x6b\x8d\xd5\x9a\x0e\x46\x7a\x27\x12\x6c\xc1\x47\x94\x1e\x6c\x7c\x19\x0b\xef\xcf\x45\x6a\x6f\x1f\x2f\xac\x36\xe8\x77\xb6\x0e\x90\x3e\xe7\x44\x48\x57\x67\x81\xa6\x29\xae\x7d\xf5\x0b\x5d\x4b\xef\xf0\xab\x06\x55\x1c\x87\x8d\xec\xae\x9e\x0a\xc0\xa2\xca\xb1\xef\xd1\xfd\x58\x8d\x4d\xa6\x6c\x81\xaf\xa0\xbc\xa6\x57\x0d\x96\x6b\x6b\x9e\xad\xee\xbe\x8f\x8f\x6e\x73\xce\x77\x67\x2f\xad\x58\x4b\x93\x5b\xf3\x35\x5f\x61\xc3\xc4\x97\xbc\xa3\x0e\xb3\x28\xf6\x14\xd5\x90\x17\x42\x52\xc9\x2c\xb9\x5b\xc6\x33\xc3\x2f\xd6\x20\xd8\xdc\xf6\x6a\x5c\x83\x63\x6b\x71\x19\xa9\x2d\x17\x55\x0b\x79\xc3\x17\x54\x32\x83\xb4\xc4\x28\xf5\x69\x49\xb1\x15\xac\xa1\x16\xce\xa8\xbe\x70\xe1\x7f\x16\xe9\xaa\xc0\xc2\x2a\x1d\x61\x81\xc1\x38\x58\x6d\xcf\xfc\x82\xd8\x6a\x43\x10\x6d\x2b\x4d\xec\xcb\x17\x46\x23\x6e\x40\xc2\x84\x62\x9b\x3f\xea\x0f\x15\xdc\x27\x60\xc8\x9a\x56\xf5\x62\x5d\x7c\x0a\xd6\x12\xf5\x98\xee\x60\x08\x73\x96\xe0\x1b\x36\x1e\x61\xf7\x05\x16\xd8\xe3\x45\xdd\xda\x78\xc3\xe1\xb9\x31\xdf\x56\x25\x0b\xe1\x53\x3e\x45\x60\xab\x43\xb1\x0c\xc1\xa6\x22\xe4\xdf\x43\x04\x4f\xdc\xf4\x41\x3e\x01\xb7\x47\xa8\xca\x0c\x70\x5d\x08\x7d\x74\xc9\x03\x87\xc4\xd6\x9d\xdd\x11\x7d\x3b\xe8\x19\xed\x9d\x88\xad\x9c\x7f\x5d\x54\x1a\x2a\xa7\xdd\xd5\xbf\xfd\x63\x39\x2d\x73\x5b\x16\x58\x2c\x55\x66\x75\xfd\x2c\x2d\x3b\x45\x8b\x9d\x61\xc6\x27\x1f\x4e\xc3\xe4\x8c\x30\xea\xdc\xa7\xb6\x18\x21\xaf\xa3\x25\x77\xd9\x94\x6b\x0e\x5a\x6d\x1f\xae\xb9\x86\xd3\x4f\x9d\xad\xb2\x7a\x9b\x47\x4b\xc6\x0b\x23\x67\xa0\x74\x54\x5b\x2b\x79\x32\xa3\x7c\x8a\x06\x7e\x51\x9a\xf9\xbe\xfc\x12\x57\x24\x21\x2d\x13\x57\x52\xde\x47\x76\x7f\xe9\xed\x9a\xae\xd2\x11\xf6\x95\x52\x09\x2d\xfc\x9a\xc3\xcf\xb2\x42\xc8\x3b\xc2\x46\x30\x22\x7b\x5f\x06\x97\xf6\xec\xdb\x0b\x29\xcc\x2b\x5c\x50\x38\xae\x2a\x63\x1a\x8f\xf7\x5e\x78\xf7\x88\x9c\x99\x77\xa0\xaf\xa7\x02\x60\x10\xb7\x3c\xae\xc1\x37\x20\x12\xa6\x54\xa6\x19\xe6\x12\x4e\x2a\x71\xcb\x66\x1c\x39\x80\x21\xe9\xc5\x48\x41\x2e\xf4\x3a\xbb\xeb\x4e\xfd\xee\xad\x90\x36\x4c\xa9\xa6\x43\x2c\xc3\x6f\x89\xd8\x91\x35\x1c\x0c\x5d\x21\xc4\x21\x75\xa8\x15\x74\xc4\xff\xc2\xe5\x8c\x0d\x69\x75\x17\xe3\x43\x3a\xc4\x92\x84\xed\xa3\x60\x9f\x20\x60\xa2\x93\x0e\xdf\xa1\x1e\xe6\xb2\xe0\x5d\x95\x51\x46\x18\x8c\xc8\x85\xd0\x75\xd9\xdc\x2a\x36\xc3\x95\x7c\x5c\x77\x9e\xcf\x2e\x6e\xae\xfe\x7a\xf9\xf1\xfc\xe2\x26\x1e\xeb\x78\xac\xe3\xb1\xee\x70\xac\x81\xcf\x3b\x1f\xe9\x4a\xc1\x5b\xa7\xf3\x2e\x95\xe2\x0b\x52\xc6\x5f\x51\xf4\xd9\x19\x9f\xff\x40\x65\xdd\xcb\x1d\xe5\xc7\xb5\x6e\x62\xdf\xec\x1d\x49\xdc\xc9\x8b\x0f\x3f\x7b\xc2\xe0\xb1\x1e\x83\x72\x2e\x82\x4a\x07\xeb\x76\x2d\x6c\x80\x75\xf2\xcb\xf9\xe9\xd9\xc5\xcd\xf9\x37\xe7\x67\x57\x4f\x1a\x4d\xd1\xb1\x14\x5e\x93\x29\xb7\xe4\x92\x85\x84\x39\x13\xa5\xca\x16\x55\xa3\xa9\xf5\x44\x60\x35\x20\x8f\xa7\x84\xf2\x85\xb7\xa7\xad\x7f\x2c\x32\xdb\x7e\x99\x6d\x33\xb8\xa4\x43\xe1\x92\xbe\xd0\xf7\x1b\x29\x5a\x37\xd2\x5f\xb6\xed\x5b\xfb\x84\xb7\xe9\xaf\xc3\xa7\x7d\x57\xe3\xa0\xc1\x7a\x9c\xf0\x58\x17\x54\x30\xc2\x68\x5e\xe8\x0e\x65\xc2\x7b\x29\x7e\xda\x4f\x9d\x50\x1b\x88\xf1\x81\x16\xdf\xc1\xe2\x0a\x3a\xd6\x47\x59\xf2\xa5\x64\x90\x18\x46\x47\x6e\x61\x61\x5d\xac\x27\xfe\x65\x5d\xea\xb8\x3c\xcb\xda\xb1\xb7\xd0\xa5\xae\x6f\x9f\x45\x5f\x6f\xa1\x43\x64\xa6\x1f\x2b\xe5\x4f\xcd\x16\xa2\x9c\x66\xf6\xb4\xdb\xee\x91\x7e\x0b\xbe\x7e\x82\x22\xb7\xfb\x21\xbb\x77\x74\x56\xef\x5c\x3e\x42\xcc\x0d\xe7\x82\xbb\x23\x17\x95\x36\x34\x8a\xeb\xd0\x62\xad\x3a\xc2\xd0\x9b\xa3\x2f\xf0\x3f\xae\x28\xd8\x71\x9a\xba\xe8\xe8\x52\xc1\xa4\xcc\xac\xad\x5e\x8d\x08\x2d\xd8\x0f\x20\x15\x9a\x54\x6f\x19\x4f\x07\xa4\x64\xe9\xd7\x5d\xaa\x4a\xd9\xd1\xe3\x2e\x08\xef\x91\xea\x77\x27\xae\x9d\xc3\x31\xe4\x5d\x15\x11\x21\x36\xf5\x11\x71\xd3\xdb\x80\x9d\x90\xd1\x13\x68\xba\x76\xa2\x22\x76\x0b\xfb\xa5\xab\xfb\x35\x61\xb5\xce\x9c\xaa\x02\x57\xfa\xce\x17\x9a\x53\x55\xfb\xa8\x91\xc1\xb0\x41\xf3\x4f\x55\xd0\x04\x06\xe4\xef\xd5\x8f\xd8\x70\x59\xfd\xb4\xbf\xff\xe7\xef\xce\xfe\xfa\x9f\xfb\xfb\x3f\xff\x3d\xbc\x8a\xac\x10\xb5\xe6\xa5\x5b\xd0\x06\xcf\x45\x0a\x17\xf8\x0e\xfc\xd3\x89\x6b\xc7\x49\x22\x4a\xae\xdd\x05\x4c\x5b\x1e\xcd\x84\xd2\xe7\x97\xd5\x9f\x85\x48\x97\xff\x52\x9d\x4a\xa5\x3d\x4b\xc6\x80\x5b\xd4\x21\xfd\xc6\x8e\xfe\xd8\x43\x4d\x4b\x7a\x3e\xaa\x6e\x56\x8f\x8d\x58\x72\xd7\x7a\x62\xbe\xf1\x20\xc0\x16\x97\xbe\x3e\x02\xc7\xa4\x72\x23\x99\x36\xeb\xe6\xed\xcd\xdf\x76\x6a\xe6\x6b\x47\x8f\xa4\xad\xda\xc1\x9e\x01\x86\x10\xf1\xad\x94\xf0\x20\x57\x0c\xd6\x6b\x29\xb5\xbb\xf9\xf8\xf2\x9c\xcc\x2d\x84\x9f\x0d\x70\xbc\x13\xed\x9b\x4f\x4a\xe3\x6a\x2f\xe8\x52\xf2\xea\x3b\xeb\xaf\xf6\xd7\x5d\x21\x01\x55\xd5\xf6\x02\xa3\xd8\x1c\xd8\x1f\x47\x49\x51\x0e\xdc\x0d\xa3\x1c\x72\x21\x17\xd5\x9f\x95\x8b\x70\xa8\xb4\x90\x74\x8a\x89\x27\xf6\x71\xfb\x58\xf5\x97\x7d\xb0\xf1\x82\xd5\xa7\xad\x2a\x9c\x94\xd2\x08\x0d\xd9\xa2\x2e\xfd\xf9\xfa\x68\x9b\x07\xfd\x33\x21\x6d\x15\x66\x74\xed\xfb\x68\x47\x13\x21\xeb\x20\x01\x14\x38\x2b\x28\xa2\x3e\xe9\x12\x6b\x07\x95\x18\x64\xad\x01\x7c\x6e\x34\xcb\xd6\xa5\xc1\xea\xd1\x23\x35\x4b\xd9\x9c\x29\xd1\x21\xbd\xa6\x9a\x68\x73\xce\x80\xab\xed\x61\x23\xa3\x2a\xb3\xd9\x7d\x81\xd5\x90\xaa\xf3\xba\x44\xf6\xdf\x76\xe9\xf4\x6d\x47\x41\xb5\x06\xc9\xdf\x91\xff\x3e\xf8\xdb\x57\xbf\x0e\x0f\xbf\x3e\x38\xf8\xe9\xcd\xf0\x3f\x7e\xfe\xea\xe0\x6f\x23\xfc\xc7\xbf\x1e\x7e\x7d\xf8\xab\xff\xe3\xab\xc3\xc3\x83\x83\x9f\xbe\xfb\xf0\xed\xcd\xe5\xd9\xcf\xec\xf0\xd7\x9f\x78\x99\xdf\xda\xbf\x7e\x3d\xf8\x09\xce\x7e\xde\x72\x92\xc3\xc3\xaf\xbf\xec\xbc\xf4\x1e\x8a\x93\xda\xd1\x67\x89\xd2\xe6\x8c\xbd\xa0\xdf\x27\x2c\xf2\x6f\x87\x47\xaf\xbe\xcf\xbf\x0f\x8f\x7e\x57\x33\xa4\x8a\x5d\x3f\x9b\x03\xae\x20\x91\xa0\x3f\x87\x25\xc7\xbe\x29\x08\x94\xd9\x57\xa4\x52\x2d\x5e\x1b\x9f\xfb\x2d\x18\x77\xbc\xd8\x6e\xf7\xb5\x96\x44\x27\x52\xe4\x3e\xed\x1d\xdd\x1b\xd8\xe6\xda\xdf\x77\x0b\x9d\x9a\x25\xda\x11\x8d\x41\xd1\x18\xb4\x61\x3c\x6a\x0c\xba\xb6\x78\xf8\x6c\x2d\x41\xc0\xe7\x6d\x5d\x18\x6b\x3d\xe8\x5e\xd7\x09\x6b\xc4\x6d\xe7\x50\x1b\xf9\xa3\xae\x2a\x4f\x5c\x1d\x49\x63\x19\x5a\xbe\xde\x87\x89\x5d\xec\x19\xb7\x07\x1f\x27\xa8\xf3\x4a\x5c\x57\x03\x5b\xc2\x10\xe6\x66\x09\x55\x0d\xec\x46\xb5\x4b\x8c\x2e\xc5\x98\xd7\x1f\x6d\x08\xea\xad\x8d\x4a\x35\x4a\x1a\xe3\x75\x9d\xd0\x4a\x38\xac\x8b\x4b\x53\xa5\x44\x62\xa3\x69\xab\x2c\x07\x2c\x5d\xe7\x96\x8d\xab\xc1\x3e\xd3\x41\x3f\x72\x5b\x78\xba\xfe\xd6\xf1\x02\xeb\x61\xf2\xb9\x2f\xbe\x9d\xfa\x9c\x19\x5c\xc9\xfa\x39\x5e\x57\x00\x82\x41\x44\xe7\x04\x0b\xe2\x10\x90\xea\x57\x1a\x36\xc5\x50\x0c\x31\xa9\xad\xac\xed\xda\xfc\x75\xe6\xe2\xdd\x79\x66\xe5\xd9\xea\x24\x0c\xad\x30\xcb\xda\xfc\xdc\x64\x92\xaf\xc1\x19\xd8\x9d\x7d\xfe\xe6\x58\x67\x4f\x6c\xb3\x1f\x96\xb9\x83\xef\xa4\x4f\x36\xd9\x87\xb3\xa4\x90\x30\x61\xf7\x3d\x9d\xd3\x63\x5e\x5b\x62\x58\x0a\x5c\xb3\x09\xb3\x39\x34\x85\x84\x02\xb8\x4d\x5e\xa0\xc9\x0c\x69\xbf\xe3\x94\xb5\x73\xfa\x39\x06\xf3\x58\x81\xbb\x5f\x52\x76\xbd\x4e\xd8\x8f\x74\x8c\x44\x3a\xd6\x7a\x7c\x26\x3a\xe6\x30\xf7\xf9\x10\x31\x8c\x3c\xef\x1e\xfa\x7e\x1a\xc4\xb1\x23\x16\xef\x8c\x65\x75\x9e\xd3\x11\xce\xd2\xca\xfa\xdc\x09\x19\xf0\xb5\x97\x65\x96\xf5\x54\x7d\x7b\xff\x1c\xa1\x51\x94\x59\xe6\x92\x8e\x47\xe4\x23\xc7\xf3\x78\x8c\x5d\x1e\x06\xe4\x02\xe6\x20\x07\xe4\x7c\x72\x21\xf4\xa5\x15\x6c\x9b\xb1\x6c\xf6\x46\xc2\x26\xe4\x9d\x51\x99\x94\x26\xda\x56\xda\x0f\xea\x02\x09\xd9\x98\xa0\x2e\x39\xd6\x21\x06\x7d\xf3\xb6\x7c\xe1\x33\xda\x86\x4f\xb4\x4d\x55\x2b\x93\x1e\x74\x53\xdf\xb2\xce\x45\xc7\x61\x44\xa4\x73\x8d\xac\xcb\xe9\x7d\x81\x65\x36\x0a\xa1\xf4\xb5\x51\x61\xfb\x69\x73\x73\xe9\xa7\xc3\xce\x11\x34\xcb\x20\x6d\xf4\x39\xb2\xfd\x39\x68\x53\x85\xc6\x6c\xe3\xaa\x5d\x04\x90\x19\xe5\x69\x06\x12\x4b\xbe\xab\xe5\xba\x56\xac\xee\x71\x50\x75\xa5\xf0\x69\xa1\x34\x49\x84\x4c\x5d\xb3\x5a\x97\xbc\x89\x8b\xa9\x8e\x17\x12\xda\x9c\x72\x3a\xb5\x5d\x0a\x57\x0a\x07\x63\x39\x69\x15\xb4\xb6\x98\x09\x71\x4b\x12\x91\x17\x19\x1e\x80\x0e\xe7\xa3\xee\xac\x53\xa1\xe8\x10\xbb\x29\x1e\x05\x4d\x77\xf0\x87\x27\xec\x8e\xd8\x87\x9c\x02\xf7\x90\xf4\xd6\x95\xcf\x50\x44\xb3\xcb\xe8\x13\x17\xbc\x12\x57\x26\xc2\x1c\x46\xb3\xd7\x75\x3d\x82\x8a\xe8\x8d\xc8\xd9\x3d\x24\x41\x67\x4b\xf3\x84\x6b\x6d\xa9\x05\xda\x43\xba\x77\x2c\xee\x6c\xca\xef\xcb\x7c\xde\x21\x41\x2d\x1c\x4b\xd5\xe7\x70\x4e\x5f\x6c\xdb\xbd\x02\xfb\x16\xd8\x04\x69\x4c\x5a\xf3\xf5\xb7\x1b\x67\xc8\x9e\xd8\x95\x92\x75\x55\x80\xb2\x9f\x0b\x13\xb5\x85\xd0\xe4\x60\xff\x68\xff\x70\xc5\xae\xb7\x54\xb1\xf9\x26\x78\x92\x61\x89\xc2\x02\xeb\xfd\x41\xb2\x9f\x0e\x08\xd3\x9e\x46\xdb\x4a\x09\xb8\x2a\x97\x49\x37\x20\x4a\x10\x2d\x69\xca\x9c\xe6\x84\xbf\x9a\x9b\xb4\x2c\x5d\x99\x84\x83\xfd\x5f\xf7\x07\x04\x74\x72\x48\xee\x04\xdf\xd7\xb8\x7c\xac\x29\x52\xaa\x60\xa2\x85\x28\xb1\x75\x9f\x05\x41\x55\x20\xc4\x10\x3a\x22\x4a\xdb\xe7\x67\x46\xb5\xcf\xe0\x3b\xbb\x67\xda\xf7\xb6\x10\x13\xf2\xc6\xb6\x19\x02\xea\x2c\x8b\x19\x9b\xc3\xd1\x0c\x68\xa6\x67\x36\xf8\x82\x0b\x3e\xb4\x9d\xe2\x0c\x05\x72\x57\xba\xfa\x21\xba\x99\xe9\xc2\xd1\xc1\x64\xb7\xba\xa0\x8e\x12\xb9\xa1\xbd\xdf\xb6\xef\x85\x4b\x56\xda\x44\xdf\xdc\x5c\x7e\xdb\x68\x86\x8b\xc4\x5f\xeb\xc2\x87\xc4\x04\xc5\x36\x9e\x01\xed\xe8\xc7\x09\xd8\xa9\x93\x2d\xe9\x91\x84\x75\xed\x68\x4b\x56\xdb\x7e\xef\xd6\xca\x96\xfc\x55\x94\xd8\x82\x8f\x8e\xb3\x05\xb9\xa3\x5c\xfb\xf4\xbd\x3d\x33\xd5\x9e\x21\x4f\x06\x1b\xfe\x02\x34\x05\xa9\x90\x7a\x00\x6d\x5d\x54\xcc\x8f\xde\x9c\x53\xc1\xda\xfa\xe5\x03\xa5\xd2\x22\x27\x33\xf7\xd9\xcd\x94\x46\x77\x32\x46\x78\x7a\x7c\xbe\x90\x84\xc2\x52\x38\xf7\xcc\xab\xa3\x5f\x2b\x74\xc3\xc2\xbd\x51\x7c\x3f\x09\xc1\x16\xb6\x68\x61\xdc\x02\xcb\x36\x57\xec\x89\x96\xf6\x10\x54\x40\x7a\x0c\x2c\x20\xdd\x12\x24\x97\x27\x42\x67\x59\xf7\x18\xaa\xde\x62\x15\x48\x6f\xfe\x78\xb2\xce\x78\xe9\x70\xc6\x46\xce\xf6\x04\xc4\x5e\xbd\xe0\xa4\x7b\x0a\x66\x38\x1e\x06\x40\x3f\x9b\x4f\xfa\x84\x40\xd1\x43\xc8\xf4\x6a\xc0\xf4\x4a\x8b\x71\x24\x13\xb6\x52\xd5\xb3\xe1\x32\x5d\xfb\xad\x93\xf5\xf9\xc7\x92\xf0\xaa\x3d\xae\x7e\x11\x3d\xd7\x49\x7f\xa1\x8d\x7d\x07\x36\xf6\x1a\xd6\xf8\x49\x83\x1a\x31\x95\xa2\x33\x15\x69\xda\xd4\x71\x4a\x83\x01\x46\x6f\x33\x1a\xa7\x93\xfd\x9c\x51\xc8\xb7\xf0\x68\x5a\x51\xcd\x51\x7b\x16\x67\x4c\x27\xc5\xb5\x48\x6e\x7b\xd4\x6b\xf6\x6f\x4e\x2e\xed\x94\x81\x6a\x43\xb9\x37\x86\x30\x3e\x17\xd9\xdc\x56\xfa\xbb\x39\xb9\xc4\x93\x37\xc2\x7f\xa1\x21\x0a\x35\xea\x85\x79\xd6\x07\xfb\x3b\x17\x8e\xd1\xbe\xad\x05\x8d\x12\x09\x34\x63\x4a\xb3\x04\x9f\xab\x6c\x5b\x38\x43\x17\xdf\x4d\xd4\x94\xd6\x8d\xde\x35\xa5\xa0\xdb\xec\xae\x4a\x53\xd7\xe0\xbc\x67\xcc\x97\x1c\x3f\x92\x55\x33\xb5\xc8\x97\x7a\x9a\xef\xf9\xf2\xa5\x42\xc2\xb5\x16\x45\x4f\x9e\x10\x3b\xd9\x06\x3f\xc8\x18\x26\x42\xc2\xb2\x23\x24\x70\x6c\xa4\x25\xb8\x42\x9c\xc7\x97\xe7\x95\x09\x4a\x34\x9c\x17\x36\x2c\xd1\x57\xdf\xcc\xd8\x1c\x38\x28\x75\x84\x2e\x8f\xb2\xb0\x2a\xa6\xef\x9b\x3b\x30\x5f\x07\x79\x61\xeb\x57\x56\xa1\xfe\xae\x6b\x2f\xfe\x08\xda\x16\x9e\xac\xfc\x2f\xce\xa2\xea\x97\xbf\xec\x2a\x49\x24\x55\x33\xdb\xd1\x16\xee\x99\x76\x5d\x99\x25\x50\x25\xb8\x35\xf6\x06\xcd\x75\x99\x22\x05\x55\xaa\x2e\x03\xee\x5e\x62\x1f\xba\xb4\xa5\x83\xc3\x07\xa6\x92\x26\x40\x0a\x90\x4c\xa4\x04\x73\x6e\x53\x71\xc7\xc9\x18\xa6\x8c\x2b\x0f\x3f\x33\x91\x07\xb4\x61\x37\x80\xb6\x61\x5f\x51\x6d\x44\xae\x1a\x85\x42\x5c\x0a\x4f\x22\xea\x13\xed\x56\xb1\xec\x64\xc2\xa8\x49\x04\xaf\x6d\x2b\x53\x6d\x4c\xd8\x69\xe7\x91\x45\xf7\xe0\x6d\xb2\xcd\xa0\xfc\xb5\x8d\xd0\xc1\x82\xa7\x34\x99\x75\x73\xdf\x46\xf7\xd4\x96\x23\xba\xa7\x76\x1b\xd1\x3d\x15\xdd\x53\x9b\xc7\xb3\x33\xef\x46\xf7\x54\x54\xba\x96\x47\x74\x4f\x45\xf7\xd4\x86\xf1\xec\xe8\x57\x74\x4f\x6d\x31\xa2\x7b\x6a\xcb\x11\xdd\x53\xd1\x3d\x15\xdd\x53\xd1\x3d\xf5\x1b\x32\x03\xfa\x11\xdd\x53\x2b\x93\x44\xf7\x54\x00\x8c\xa8\x29\xad\x19\xd1\x3d\xb5\x66\x44\xf7\x54\x30\x22\x5f\x6a\xc1\x97\xbc\x73\xe7\xd2\xe8\x65\xdd\xdb\x08\xa3\x76\x87\xf5\xfc\x5e\x69\x5a\x53\x17\x1b\xff\xb3\xb6\xef\x3f\x13\x1f\x4a\x0f\x36\xfd\x68\xcf\x7f\x75\xf6\xfc\x7e\x6c\x61\x3d\xd8\xc1\x3a\x93\x72\xe7\x35\xbf\x99\x49\x50\x33\x91\xb5\x46\xf4\x06\x92\x7f\x60\x9c\xe5\x65\x6e\x70\x4e\x19\x7c\x66\xf3\xca\x3d\xaf\xea\x96\xcc\xe8\xb5\xb7\x26\x39\x73\x23\x4b\x01\xab\x71\x52\x96\x99\x6d\xc4\xfc\xc9\x19\x45\x99\x58\x95\x49\x02\x80\xbd\xbe\x42\x75\xe1\x0f\xa3\xea\x4d\x55\x6f\x87\xb7\xdd\xe8\x4d\x37\x26\x6b\xeb\x65\xe2\x2c\x7f\xf8\x7d\xab\x39\x3a\xba\x53\x3e\xbf\x2b\xa5\x07\x32\xdd\x5d\x31\xe8\xa4\x14\xf4\xc1\x25\xba\x2a\x03\x2f\xcd\x65\xd2\x9b\xeb\xb0\x07\x57\xc9\x33\x72\x93\x3c\x1b\xb6\xf0\x5c\x5c\x23\xcf\xb0\x14\x68\x0f\x96\xfc\x3e\x5c\x21\xfd\xb9\x41\x3e\x41\xc5\xcc\x4f\xe3\xfe\xe8\x51\xed\xec\xc9\xed\xf1\x39\x5c\x1e\xbd\x7c\x75\x57\x57\xc7\xe7\x73\x73\xf4\xf3\xb9\x1d\xcd\x48\xaf\xc2\xb5\xd1\x83\xf9\xa8\x4f\xd3\x51\x6f\x66\xa3\x4f\xe6\xca\xe8\xee\xc6\x78\x06\x2e\x8c\xce\x40\x66\x9c\x69\x46\xb3\x53\xc8\xe8\xe2\x1a\x12\xc1\xd3\xd6\x1c\x66\xa9\x84\x5a\x75\x7e\x94\x9d\xd6\xe9\x68\xcd\x40\xdf\x19\x75\x95\x62\x21\xf5\xb1\xcb\xde\xa4\xe7\x04\x0a\xb4\xc6\xd9\x55\xb6\xa9\xc3\x74\x27\xe4\x6d\x26\x68\xaa\x8e\x0a\x61\xff\xaf\x0e\xe3\x0d\xe2\x77\xed\xbb\xba\x05\xf0\x3e\xb5\x32\x68\xa3\x9e\xfb\xdc\xc4\xbf\x88\x3b\x22\x26\x1a\x38\x39\x60\xdc\xef\xe3\x61\xa0\x06\xd6\x9a\x79\x85\xd6\xe6\xea\xdb\x37\xfe\xe6\xd7\xa7\x72\xa3\x71\x41\xa9\x4f\x6f\x01\x71\x2f\x7a\xdc\x04\xe2\x6e\x9c\x94\x59\xd3\x0c\x62\x4d\x23\x4d\x7a\xf3\xb6\xae\x75\xf9\x16\xe7\xad\x4e\x1b\xe5\x29\x71\x19\x12\xaf\x6f\xd3\x3a\x3b\x68\x5f\x83\x73\x36\xda\x5e\x48\xdf\xb6\x97\x27\x72\xc2\x3e\x43\xa9\xf9\x85\x3a\x5e\xa3\xd4\xbc\xc3\x08\x12\xad\xbe\x95\x34\x81\xcb\xde\x05\x0e\x7f\x9c\x48\x5a\x4a\x97\x1f\x57\xc9\x1d\xd5\xe1\xe1\x00\xa9\x3d\x4d\x55\xf6\x19\xa6\x7d\x4d\xca\x2c\x5b\x90\xb2\x10\xbc\x99\xe2\x67\x9d\x56\xcb\x99\x61\x66\xb6\x75\x6f\xa9\xa5\xd4\x42\x0a\xc7\x80\x65\xc9\xb9\xa1\xe7\x75\xf7\x1b\x94\x4a\x95\xa5\xd5\x61\xfe\x99\x62\x53\xb3\x7c\xc3\x4c\x31\x35\x8d\xe5\x50\xf7\x47\xa8\x27\x34\x4f\x4f\x84\x4c\xd8\x38\x5b\x90\x19\xcd\xaa\x56\x07\x94\xdc\xb2\x2c\x73\xd3\x8c\xc8\x35\x68\xa2\x67\xcc\x75\xa9\x26\x99\xe0\x53\x5c\x1c\xe5\xbe\xc5\x16\x24\xe6\xd9\x24\x03\xca\xcb\xc2\xbe\xcf\xb0\xf5\x85\x28\xa5\x7f\x9f\xab\x1f\x59\xcd\xc2\x14\xe1\x2c\x1b\x04\x8d\x7c\x1e\xdc\xd8\xba\x5b\xba\x02\x9f\xbc\x77\xc7\x14\x0c\xc2\x39\xc5\x1c\xa4\x64\xa9\x73\x1a\xd8\xdf\x0a\x29\xe6\x2c\xb5\xad\x18\x3c\xd8\xb0\x65\xa8\x6d\xd5\x50\x9d\x67\x2e\xf8\x90\xc3\x94\xa2\xd4\xe3\x4e\x91\xdd\x33\x3b\x8f\x75\xc5\xf1\x14\x9b\x37\x18\x75\x41\x14\x8d\x9c\xd1\x39\xb3\x6d\x27\x03\xc8\x91\x03\x2e\x88\x40\xf6\x5a\x72\xa6\x6d\x2b\xe3\x59\xa9\x49\x2a\xee\xf8\xa1\x99\x9c\x29\x03\x07\x4a\xc6\xa0\x7d\x5b\x55\xdf\xe6\x8f\x49\x50\x04\x38\x1d\x67\x66\xcf\x31\x26\xe0\x66\x2d\x80\xc8\x04\xa8\x2e\x25\x90\x29\xd5\xb0\x56\x68\xb2\xdf\xfb\x30\x78\x99\xaa\x5a\x8e\x97\x5c\x41\xeb\x66\xcb\x3d\x4b\x5a\x7f\xfa\x63\x3b\x1a\xc1\x72\x10\xa5\xfe\x2c\xaa\xa4\x6d\xc7\x1f\x48\xc6\x2c\x07\x45\x44\xb9\xa4\x63\xbf\x75\x8f\xad\xdf\xa1\xa8\x4f\xae\x1b\x6d\xad\xc4\x6b\x4c\x69\xae\x1b\xe0\x6a\xfc\x4c\xd0\xed\x94\x9a\xa3\x78\x7a\x71\xfd\xcb\xfb\xe3\xff\x3a\x7b\xef\xce\x27\x0f\x99\x7e\xc9\xd9\x3f\x4a\x20\x34\x17\x46\xae\xce\xc2\x30\x9c\x01\x9a\x07\x82\x1f\xf0\x24\xf7\x1b\xb0\xd3\x92\x21\x63\x6b\xe6\xee\x61\x49\xd8\xe0\xf9\xd3\x47\x25\x3d\x75\xcb\x9a\xaa\xe5\xa6\xf9\xe0\xb0\x65\x0d\x25\x1c\xb4\x39\x79\x56\xa2\xb4\x2d\x8c\x18\x9f\x66\xa1\x30\xd9\x8e\x5c\x75\xd5\x89\xba\x6a\x44\xc3\xfa\x0b\x2e\xdb\x2a\x46\xbd\xb4\xce\xa9\xd7\xd0\x53\xc3\x89\x9a\x6a\x7b\x35\xc0\x76\x04\xf5\x6a\x80\x15\x3d\xce\x2f\x09\x4d\x53\x89\x62\x0a\x9e\xfa\x7c\xa9\xf1\x1c\x3e\x6c\x8d\xf1\x03\xf2\x86\xfc\x99\xdc\x93\x3f\xa3\x5a\xf0\xa7\xae\xed\x39\xba\x0a\xec\xdd\xcd\x12\x56\x1b\x3d\xbf\xec\x09\xe2\x3f\xce\xa8\xc6\x19\x0d\x54\xb5\x20\x63\xe6\xc4\x50\xb8\xd7\x20\x8d\x58\xe4\x76\xe2\x49\x1b\x9b\x98\x05\x7e\x46\x34\xb3\x36\xf7\xf3\x49\x58\xf9\x5f\xef\x88\x68\xe6\x71\xa3\xdf\x5f\x38\x2a\xd4\xec\x23\x50\xcf\x96\x53\x9d\xcc\x9a\x64\xcc\x08\x18\xaa\xc1\x9c\x52\x81\x64\xdc\xc6\xaf\xcd\x58\x87\x08\x82\xe7\x83\xc6\xdd\x9c\xca\x8d\xfd\x7c\x68\xa7\x96\x14\x7f\xe4\xf3\x4e\x30\x08\xea\x8f\x14\x22\x1d\x91\x33\x9a\xcc\x70\x59\x69\xc0\x33\x8c\x06\x82\x93\xcd\xe8\xdc\x6c\xbc\x7b\xd6\xf6\xdd\x40\x69\xa5\x32\xb5\x22\x2e\x99\xf3\x94\x50\x6e\x3b\xdf\x4d\x40\x4a\x1b\x72\x38\x5e\xa0\xe7\x93\x25\xd0\x79\xf3\x3a\x9d\xa4\x42\x0a\x2d\x12\xd1\xa1\xf7\xca\x72\xf4\x33\x4e\x87\x40\xb0\x46\x4b\x6f\x2b\xfe\xfe\xf4\x72\x40\x6e\x4e\x2e\xb1\x69\xc6\xf5\xc9\xcd\x65\x53\xc2\xde\xbb\x39\xb9\xec\xd0\xc3\xbf\x17\x9b\x87\x33\xb3\xbd\x33\xcb\xdc\x79\x12\x09\x34\x65\x31\x8e\x7c\xfb\x11\xe3\xc8\x37\x8f\x18\x47\x1e\xe3\xc8\x63\x1c\xf9\xc3\x23\xc6\x91\xbb\xf1\xf4\xa6\x1e\x12\xe3\xc8\x5b\x8e\xd7\xe5\xcb\x8c\x71\xe4\x3b\x8d\x18\x47\xbe\x3a\x62\x1c\xf9\x86\x11\xe3\xc8\x37\x8c\x18\x47\x1e\xe3\xc8\x63\x1c\x79\x8c\x88\x79\x74\xae\xe7\x19\x11\x43\x62\x1c\xb9\x1b\x31\x8e\xfc\x55\xf8\xfd\x49\x8c\x23\xdf\x6a\xc4\x38\xf2\x18\x47\xde\x66\xc4\x38\x72\x1c\xd1\xf6\x12\xe3\xc8\xfd\x88\x71\xe4\x76\xfc\x76\xa4\xe6\x18\x47\x1e\xe3\xc8\x63\x1c\x79\x8c\x23\x7f\x70\x15\x31\x8e\xfc\x35\xe8\x93\xbe\xa1\x56\xf7\x20\xe8\x2b\x3f\xd3\xf6\x61\x35\xe4\x6c\xcd\xaf\x68\x56\x51\x85\x99\x44\xd6\x53\x66\x12\x68\xba\xc0\x29\x13\x74\xcb\xd4\x42\xd6\x0b\x8c\xce\xc9\x58\xce\xda\xc5\x9d\x93\x95\x43\xf3\x1e\xe7\x0a\x5c\x38\x06\x2c\x39\xbd\xc7\x03\x40\x73\x51\xda\xfe\x5d\x89\xc8\x8b\x52\x37\x61\x8a\xdb\xd3\xa6\xf5\xd6\x84\x4d\x1d\x47\x3d\xb2\x5d\xc2\x86\xd5\xb4\xc3\xa0\x33\xd7\x13\x2a\x30\x34\xf5\xe1\x27\x97\x3d\xe8\x12\x05\xd5\x1a\x24\x7f\x47\xfe\xfb\xe0\x6f\x5f\xfd\x3a\x3c\xfc\xfa\xe0\xe0\xa7\x37\xc3\xff\xf8\xf9\xab\x83\xbf\x8d\xf0\x1f\xff\x7a\xf8\xf5\xe1\xaf\xfe\x8f\xaf\x0e\x0f\x0f\x0e\x7e\xfa\xee\xc3\xb7\x37\x97\x67\x3f\xb3\xc3\x5f\x7f\xe2\x65\x7e\x6b\xff\xfa\xf5\xe0\x27\x38\xfb\x79\xcb\x49\x0e\x0f\xbf\xfe\xb2\xf5\x92\x3b\x0b\xbc\xfd\x89\xbb\x3d\x09\xbb\x9f\x44\xd4\x75\xbe\xdf\x9e\xce\xe2\x95\x9b\x6d\xf9\x34\x3a\x76\xf4\xd0\x69\xf4\x1a\x37\x0a\x71\xd5\x3c\x4c\x11\x91\x33\xad\x1d\x15\xa5\x61\xd4\x17\xd3\x0d\x95\xd3\xd1\x01\xec\x76\x48\xb5\x6d\x27\x58\x45\x4c\x05\x11\xbb\xc2\xcb\x75\xae\x4d\x63\x65\x8d\xc0\xf3\x3c\x4c\x61\xc2\x38\x38\x2f\x57\xa4\x0d\x8f\x8f\x48\x1b\x5e\x23\x6d\x50\x90\x94\x92\xe9\xc5\x89\xe0\x1a\xee\x5b\xd9\x4f\x36\x19\x90\xae\x9b\x53\x13\x7b\xe2\x2c\xa5\xf0\xaf\x25\xa2\xb0\x81\x92\x1b\x53\xf3\xaa\xa0\x5b\x59\x72\x54\x29\x6d\x0e\x05\x68\xab\xef\xa1\xa6\x83\x51\x90\xcb\xaf\xf3\x1a\x9c\x9d\xfa\x1f\x25\x9b\xd3\xcc\xe8\xb7\xf5\x13\x97\xa8\xb3\x84\x0f\xb5\x32\x62\x3d\xb1\x8c\x85\xe2\xcd\xa5\x64\x73\x96\xc1\x14\xce\x54\x42\x33\xa4\x4a\xfd\x50\xfa\xe3\x0d\xb3\xe3\x16\x49\x91\x29\x72\x37\x03\x6c\xa3\x4a\xbd\x7a\x8e\x99\x0a\x53\xca\x38\xc9\x0d\x51\x2d\xfc\xc3\xca\xea\xf9\x86\x78\x1b\xa9\x97\xeb\x5a\x9f\x47\xf5\x75\x2c\x44\xe6\xc2\x7a\xb3\x45\x3d\xbf\x6b\x6b\xcb\xc5\x2f\x1c\xee\x7e\x31\xb3\x29\x32\xc9\xe8\xb4\x52\xe3\x15\xe8\x15\x4b\x5c\x3d\xf5\xc6\x0f\xc0\x98\xd9\x12\x08\xcd\xee\xe8\x42\xd5\x46\x8d\xb0\xe1\xef\x3b\xf2\xf6\x10\x11\x8f\x2a\x52\xcd\x91\x92\xdf\x1f\xa2\x9f\xef\xe4\xf8\xf2\x97\xeb\xbf\x5e\xff\x72\x7c\xfa\xe1\xfc\xa2\x1b\x9d\x37\xdf\x0e\x94\xb7\x9a\x23\xa1\x05\x1d\xb3\x8c\x75\x21\xef\x2b\x91\x20\xe1\xa4\xc8\x40\xd3\xf4\x28\x95\xa2\xb0\x70\xf2\xf6\xa3\x50\xc7\x39\x5d\x32\x0b\x3b\x9e\x6d\xb7\x67\xd2\x9c\x70\x2a\x29\xd7\xb5\x21\xa5\x06\xb9\x2c\xb9\x51\x7a\x5f\x78\xd0\x3c\x4d\xfb\x0b\x98\x3f\x4e\x53\x48\x1b\xd0\x7b\x75\x01\x7a\x27\xfe\xe3\x16\x75\xae\x2d\xb9\xfc\x78\x7d\xfe\xbf\x97\xd0\x70\x51\x74\x8b\x47\xea\x27\xbf\x47\xb6\xef\x40\x4e\x56\x8d\x09\xb9\x98\xc7\xfd\x7d\x2e\xfb\x5b\xf1\xaa\x7e\xbc\xe0\x57\x25\x0f\xd9\x09\x0f\xe6\x27\xb9\x48\x61\x44\x2e\x2b\x0b\x7a\xf3\x6a\x58\x43\x40\x02\x31\xb7\x70\xcd\xb0\xd5\x79\x20\xca\x68\x61\x13\x5d\x1a\x19\xa6\x21\x1d\x9e\xd0\x4c\x75\x24\xa6\x5d\x38\x93\x61\xc2\x1f\x8c\x2a\xd8\x0b\x34\xab\xd9\x48\x0a\x5c\x68\x27\x49\x9a\x55\x62\xd2\xad\x14\x09\xb1\x7a\x67\x10\xb2\xd4\xe0\x2e\xae\x01\xbe\x67\x4c\x4c\x79\x58\x5d\x56\x33\x5b\x0b\x6c\xa9\x40\xad\x67\x4c\xb5\x26\x6a\x66\x97\x40\x53\xcc\x17\x2b\xa8\x9e\xd9\x88\x83\x9c\xaa\x5b\x48\xed\x0f\x4e\xae\xa9\x4c\xf0\xb6\x19\xbe\x7b\xd5\x8d\x59\xb7\xb7\xb7\xa3\x3c\x63\xe3\x20\xd0\x4e\x0f\xad\xa3\xd3\x3b\x1f\x01\xf3\x4d\x1f\x79\xb6\xb8\x12\x42\x7f\x53\xe5\x49\xf5\xb2\x81\x3f\x3a\x49\x11\xdd\x2c\xcd\x90\x29\x0c\x10\x48\x87\x08\x4c\x44\xe9\x30\x45\xeb\xb4\xde\xb0\x27\x46\x68\x59\xf2\x63\xf5\xad\x14\x65\x6b\x0e\xb0\x22\x68\x7d\x7b\x7e\x8a\xe7\xb8\x74\x1e\x30\xae\xe5\xa2\x10\xcc\x9a\x4f\x36\xc8\xb4\xdf\x3b\x1f\x5e\x88\x91\xb5\xbb\x85\x7c\xa0\x0b\x42\x33\x25\xbc\x70\xcc\xf8\x3a\x55\x87\x38\x3d\xca\x5c\x1e\x0b\x3d\x5b\x51\xa0\x0c\x3a\xaf\x3e\x37\x08\x1c\x62\x75\xdd\x14\xc6\x57\x1e\xd7\xf4\x16\x14\x29\x24\x24\x90\x02\x4f\x3a\xee\xda\x53\xbb\x81\x70\xe7\x2f\x04\x37\xc7\xa2\x97\xbd\x3f\xaf\xfc\x7f\x68\xc6\x6a\xee\x34\x7a\x12\x9d\xde\x41\xd1\x9f\x88\x87\xa2\x54\x20\xad\xf3\x53\x96\x60\x37\xe2\xbb\x72\x0c\x19\x68\xab\x0c\x61\xfd\x00\xaa\xad\xca\xcb\x72\x3a\x05\x42\x75\x85\x28\x5a\x10\xe0\xca\x90\x1b\x6b\x38\xd3\x24\x15\x50\x27\x37\x52\x45\xbe\x3f\x3f\x25\x6f\xc8\x81\x79\xd7\x21\x6e\xff\x84\xb2\x0c\x5d\x8d\x9a\xca\xe5\x35\xb2\x89\x9f\x02\x97\x84\xb8\x47\x84\xb4\x47\x74\x40\xb8\x20\xaa\x4c\x66\x7e\x4d\x46\xe3\xf2\x0a\x9b\x8b\xb5\x43\x93\xfc\x2b\x44\xd5\xce\x04\xe6\x7b\x05\xb2\x37\xfa\xf2\x7d\x0b\xfa\x12\x8a\x10\x06\xe7\x9a\xd0\xb3\x88\x95\x83\xa6\x29\xd5\xd4\xd1\x9d\x3a\x23\xfa\x35\x6e\xe9\x53\x53\x1f\x05\xef\x19\x2f\xef\xad\x6d\xad\x3f\x25\xff\xfa\x0c\xa7\x45\x14\x40\xa0\xe1\xa6\xd1\xa2\xc8\x58\xed\x79\x0c\xa2\x9b\xce\x1b\x5b\x3d\xd8\x20\x22\xe1\x31\xf7\x0e\x4c\xc3\xd9\x29\x4f\x45\xbe\xf2\x32\xf4\x96\xd2\x64\x16\xbe\xe0\x55\x22\xcf\x93\x9b\x23\x32\x98\x43\x87\xda\x1c\x4b\x88\xf3\xde\xcc\x66\x64\x31\xbf\xa1\x38\x3d\xc9\xe8\x18\x32\xcb\x59\x2c\x02\xa9\x55\x04\x7a\xea\x08\x41\x29\xb2\xfe\xf2\x23\xae\x44\x06\x36\xe4\xc6\x03\xc2\x4c\xff\x22\xe0\x80\x93\xf4\x05\x07\x54\x64\x1a\x70\x40\x95\xec\x25\xc0\xa1\xec\xc0\x68\xc9\x32\x1c\x0c\xd7\x6e\xc2\x01\x59\xe7\x73\x87\x83\x82\x24\x11\x79\x71\x29\x85\x51\xb9\x7a\x63\x2d\x6e\xda\xda\xbf\x63\x75\x72\x34\xf8\x86\xda\x9f\xf3\xe6\x34\x6f\xa6\x32\x08\xb6\xa3\xda\xd2\x78\x1f\x71\xf7\xbf\x02\x96\x83\xa4\x67\x99\x0f\xf9\x59\x1a\x0e\x20\xf3\xa4\xbb\xf0\xc2\x53\xfd\x3b\x58\xc9\x7a\x61\x26\x22\xa1\x19\x96\x4e\xeb\x86\x31\x64\x19\x6b\x96\x27\x0e\x22\x24\xd1\xb5\x84\xbf\x79\xaf\x3d\x56\xd1\xc2\x5f\x9c\xed\x8b\x8b\x14\x02\x67\xa1\x0d\xed\xbc\xb1\x91\x74\x78\x9f\x0f\xce\x34\x5c\xdd\x39\xef\x21\x6d\x3c\xad\x85\xab\xce\xf2\xa1\x2a\xc8\x66\x16\x08\x3c\x65\x7c\x8a\x16\x9d\x01\x91\x90\xd9\xb0\x4e\x77\x86\x6f\xad\xfa\xb5\x8f\x18\xed\x27\xf5\xe8\xec\x5f\x8d\x92\x10\x13\xdc\xcd\x8c\x46\x0e\x2f\xdf\x4c\x2c\xb5\x64\x8a\xec\xbd\xf7\x00\xe8\x50\xc1\xea\x39\x32\x88\x3d\xfb\x85\xd5\x6e\x5a\x1b\xdb\x2d\xe3\xa9\x8b\x80\x6c\x00\xcb\x2b\x89\x4e\x0a\xc5\xd8\x5a\x96\x86\xa4\xe1\x1d\xf9\x1b\x27\x15\xb0\xc8\xb0\x35\x7a\x5c\x59\x81\xd5\x9b\x97\x86\x0f\x9b\xfc\xaa\x97\x2c\x4f\xf3\x3d\xc7\xbd\x37\xef\x1d\x1a\xb5\x77\xf5\x3e\xff\x2d\x7b\x4f\xb9\xaf\x77\x8c\xa7\xe2\x4e\xf5\xad\x43\xfc\x68\xa7\xf5\x02\x75\x62\xd0\x5a\x33\x3e\x55\xa1\x1e\xd1\xac\x93\xbb\x5e\x91\xf0\x3b\x3c\x91\xc2\xa6\xe1\xad\x0a\xf0\x4b\x91\xdb\x51\x09\xd8\x61\x4c\x73\x45\x4f\xa4\xf9\x14\xcd\x68\x76\x5d\xb4\x2f\x9b\x46\x96\xd1\xe0\xdb\x0f\xd7\xc7\xcd\xa9\x0d\x3d\xbb\x9b\x81\xb4\xbc\xd7\x5c\x27\x34\xcd\x99\x52\x68\x06\x82\xf1\x4c\x88\x5b\x72\xe0\x03\xad\xa6\x4c\xcf\xca\xf1\x28\x11\x79\x10\x73\x35\x54\x6c\xaa\x8e\x1c\xd2\x0e\xcd\xea\x0f\x09\xe3\x59\x15\x41\x82\x6a\x24\xd7\xca\x9b\x31\xf0\x25\x49\xb5\x0a\xdc\x5b\x57\x77\xd1\x79\x99\x57\x97\x69\x2b\x2d\x32\xc8\x9e\xbe\x18\xcc\xea\xf6\x5c\x74\xac\x6b\xf1\xc8\x16\xe1\xb7\xbb\xb4\x91\x30\xc5\x69\x2d\x1c\xad\xf4\xf6\xe4\x40\x72\xd2\x41\x02\xaa\xbf\x8a\x39\x7f\xa9\xe7\x24\x29\xd8\xcc\x06\xc0\xa8\x13\xba\x31\x0c\x09\xad\xb2\xfb\x98\x20\xe7\x1e\xdd\x0f\x25\x5a\xf4\xfa\xd8\x14\x0c\xa3\x0f\x64\xc5\x8c\x0e\xad\x92\x6c\x48\x12\xd2\x30\x2f\x03\xcc\x04\x17\xd2\xa2\xa8\xe1\x82\x82\x23\x4a\xa3\xb6\x60\x1d\x41\xb8\x27\x8e\xc6\x06\x4b\x3d\xa9\xfd\x83\xa1\x0f\x09\x13\x6c\x6c\x82\x7e\xbd\x86\x3b\xa6\x67\x58\x44\x6e\xb6\xe4\x70\xc2\x95\x48\x50\xe8\x3d\xe0\x04\xa4\x14\xd2\x05\xc2\x78\xab\x2d\xce\x84\xa4\x18\x23\x69\x0c\x92\x50\xf3\xd7\xbe\x0a\x5d\x94\x75\x29\x53\x8c\xed\x32\xd8\x04\x93\x09\x24\x28\x29\x85\x00\xb6\x64\xf7\xa0\xae\xaa\xe7\x43\xe7\xb5\xf0\xa5\x50\x73\x76\x6f\xde\x12\x3e\xb5\x54\x50\x9d\x0b\x3e\x5c\x7f\xf9\x70\x44\xc8\x39\xaf\xe2\x1e\x07\x66\x17\xc3\x3b\x7d\xc8\x8f\x36\x9f\x18\xd6\xd1\xc5\x0f\x08\xed\x4e\x46\xbc\x93\x65\x0f\x18\xdf\xc5\x18\x4c\x42\x83\x70\xaf\xe4\x00\x0d\xc3\x6e\x52\xb3\xf5\x9e\x89\x77\x31\x14\x9b\x5b\x3e\x95\xb1\xf8\x65\x70\x7a\xd2\x95\xce\xb9\x74\xf5\x58\xfb\x75\xbb\x11\x6b\xbf\x6e\x1e\xb1\xf6\x6b\xac\xfd\x1a\x6b\xbf\x3e\x3c\x62\xed\x57\x37\x9e\x3e\x3d\x93\xc4\xda\xaf\x2d\xc7\xeb\xaa\x3f\x12\x6b\xbf\xee\x34\x62\xed\xd7\xd5\x11\x6b\xbf\x6e\x18\xb1\xf6\xeb\x86\x11\x6b\xbf\xc6\xda\xaf\xb1\xf6\x6b\xac\x62\xf5\xe8\x5c\xcf\xb3\x8a\x15\x89\xb5\x5f\xdd\x88\xb5\x5f\x5f\x45\xad\x1e\x12\x6b\xbf\x6e\x35\x62\xed\xd7\x58\xfb\xb5\xcd\x88\xb5\x5f\x71\x44\xdb\x4b\xac\xfd\xea\x47\xac\xfd\x6a\xc7\x6f\x47\x6a\x8e\xb5\x5f\x63\xed\xd7\x58\xfb\x35\xd6\x7e\x7d\x70\x15\xb1\xf6\xeb\x6b\xd0\x27\x95\x4e\x59\xab\x72\x58\xdb\x54\x2f\x70\x91\x21\x41\xbe\xe3\xb8\x9c\x4c\x40\x22\xe5\xc2\x37\xaf\x44\x21\x54\x55\x8e\x2a\x5a\xe6\xe2\x0c\xb0\xaa\x99\x04\x9a\xba\x28\xe8\x0d\x8f\xbb\x04\x4b\x2c\x5b\x55\x87\xef\x9d\x7d\xfc\xa6\x9f\x52\x09\xdd\x02\xd7\x70\xcd\x1f\x79\xd2\x3d\x80\xa9\x06\xf8\xba\xa8\x7c\x07\xf7\x24\x13\xca\x85\x1d\x22\xb0\x92\x19\xe5\x1c\xbc\xf2\xc8\x34\x1a\x65\xc6\x00\x9c\x88\x02\xb8\xa5\xdf\x94\x28\xc6\xa7\x19\x10\xaa\x35\x4d\x66\x23\xf3\x26\xee\x81\x5d\x87\x08\xba\x5f\x94\x96\x40\x73\x1f\x2c\x99\x53\x66\xa7\x22\x34\x91\x42\x29\x92\x97\x99\x66\x45\x35\x19\x51\x80\x51\xce\x96\x51\x55\xc0\xc0\xf0\x92\x3a\xae\x70\x50\xbf\xcd\x2d\x4b\x84\x95\x62\x50\x75\x1d\x60\x69\xcb\xbc\xd0\x0b\x62\x3e\x39\x73\xe5\xee\xa4\xd2\x24\xc9\x18\x72\x6b\x7c\xa3\x4d\x28\xc3\xf9\x06\x9e\x57\x73\xb7\x52\xe5\x96\xca\x53\x14\x5b\x0b\xad\x08\x86\xe1\xd5\x13\xba\xa9\x52\xa6\x9c\x98\xaf\x06\x84\xfa\x3a\x28\x16\xd0\x7e\xa5\x08\x6a\xcf\x59\xec\xec\xee\xa7\x60\xba\xa0\x78\x9a\xc1\x4d\x6b\x0d\xab\x11\x1d\xe3\x4e\x3d\x72\x0e\x1a\x21\xb6\xb5\x40\x81\xe1\x2e\x2b\xc7\x00\x37\x80\xc3\xdc\xe0\x00\x24\x60\xf8\x2b\xdd\x80\xf5\x9f\x1d\xe9\x35\x95\x53\xd0\x55\x50\x6e\xdb\x58\xcd\x66\x81\x88\xa0\xca\x61\xa8\x87\xd4\x10\x43\xe0\x5c\x8a\x14\x23\xee\x5d\x15\x09\x83\x33\x6b\xca\x28\xda\x05\xba\x02\x38\xeb\x6e\xf0\x72\x91\x0d\x75\xaa\x5e\xaa\x0a\x9a\x80\x22\x07\xe7\x97\x27\x03\x72\x79\x7e\xea\xe2\x99\xc4\x64\x5d\x1a\x9f\x23\x61\x16\x01\x37\x15\x74\x64\xca\xbf\xe3\x6e\x46\x35\x6e\x67\xf0\x22\x94\x44\x67\x54\xba\x40\x45\x5f\xf9\x9a\x5c\x08\x0d\xeb\x0a\x65\x78\x6a\x80\xe2\x97\xb3\x41\x38\x4c\xb3\xe2\x4c\x7b\x02\xd8\x52\x6d\x09\xe4\xa3\x0f\xa0\x14\x9d\xc2\x65\x4b\x07\xd6\x26\xe5\x1c\x7d\x58\xf5\x19\x45\xaa\x90\xd9\xf4\xb5\xea\x97\x3a\xe2\xad\x29\x11\x93\xdc\xae\xa9\xda\xef\x3b\xc9\xb4\x06\x3c\xdf\x58\x3c\x09\x7d\xe0\xcb\x09\xaa\xfb\x4b\x71\x73\x1f\xfc\x24\xf5\xc3\x86\xbf\xf3\xd4\x46\xb1\x8d\x81\x8c\x25\x83\x09\x99\x30\x0c\x8d\xc3\x60\xb5\x81\x2d\x07\x42\xad\x71\x49\x29\x90\xb8\x1e\xa7\xd6\xf8\x75\x8d\xc8\x8f\x6e\x61\x5a\x96\xdc\x56\x40\x77\x12\x37\xa6\x70\xb1\x09\x99\x62\xb0\x9b\x53\x1c\xfe\xf8\xe6\x3f\xfe\x44\xc6\x0b\x23\xdd\x20\x6a\x6b\xa1\x69\x56\x7d\x64\x06\x7c\x6a\x60\x65\x29\x75\x33\x09\xa9\x82\x00\xd6\x28\xb7\x0b\x7f\xfb\xfb\xdb\x71\x53\xdc\x3a\x4a\x61\x7e\x14\xc0\x6f\x98\x89\xe9\x88\x9c\x50\x6e\x70\xdd\xa8\x11\x45\x8a\x96\xfc\xf6\x75\x43\xfb\x43\x33\x91\xb1\x64\xd1\x9d\xec\x38\xdd\x84\xcc\xc4\x9d\x55\xfb\xd6\x60\x4f\x1d\x0e\x5b\x88\xa2\xcc\xac\x33\xe3\x9b\x2a\x7d\xaf\x54\xb0\x9a\xa3\xb3\xf6\x5c\xa0\xf9\xdd\x4d\xb1\x74\xb4\x5d\x8c\xa3\x7f\xa5\x70\xb1\xdf\xce\x40\x5c\x95\xa7\x41\x9d\xf8\x1b\x9a\x65\x63\x9a\xdc\xde\x88\xf7\x62\xaa\x3e\xf2\x33\x29\x85\x6c\xae\x25\xa3\x86\x71\xce\x4a\x7e\x6b\xeb\x52\x57\x29\xc4\x62\x6a\xa4\xec\xa2\xd4\xbe\xd2\xe8\xba\x0f\xb6\x09\xa9\x9e\x1f\x7b\x8d\xb8\x9e\x05\xee\x59\xad\xf6\xba\x54\x0a\x8b\x91\xe1\xfc\x2a\x44\xb6\xdf\xbf\xf9\xe3\xbf\x5b\xd4\x25\x42\x92\x7f\x7f\x83\x71\xb0\x6a\x60\x0f\x31\xd2\x45\x23\x33\xe4\x34\xcb\x0c\x79\x0d\x91\xd2\x00\x7a\x1d\x12\x7e\x76\x1c\xd4\xdd\xd1\x6d\x6b\xa9\xfa\xe6\xe6\xaf\xc8\x12\x98\x56\x90\x4d\x06\x36\x6b\xa0\xd2\x70\xf7\x51\x46\xd8\x77\xd4\x07\x53\x37\x9e\x81\x2c\x3c\x17\x59\x99\xc3\x29\xcc\x59\x1f\x8d\x27\x1a\xb3\x79\xab\x4f\xc6\x14\x26\x68\x8c\x33\x91\xdc\x92\xd4\x5d\x0c\x22\x9a\x96\x4b\xac\xb6\x87\x42\xdb\xd8\xae\x0e\x31\x5d\x1b\xbf\xbf\x11\xcd\x95\xd3\xa2\x60\x7c\x6a\x93\x93\x24\xbd\x6b\x00\x03\xcf\x24\xe6\x03\x77\xac\xb7\xd0\xd9\xe3\xd0\xd5\xdf\x30\x74\x5f\x64\xe8\x66\xeb\x29\x5a\x47\x33\x75\x77\x57\xd4\xab\x6f\x6f\xa3\x6e\x20\x44\x3d\xa1\x3f\x0d\x05\xfe\xdb\x46\xea\xaf\x88\xcb\x95\xf8\x58\x21\x86\x15\x00\x0c\xfa\x20\x49\x6e\x6f\x7b\xef\xc1\xd0\xdd\x2d\x94\xad\x01\x17\x5e\x39\x18\x72\xaa\x9d\x40\xe8\x35\x08\x4a\x0a\x90\x8a\x29\xc3\x97\x7f\xc0\x03\x75\x92\x51\x96\x07\xd6\xe0\xa7\x01\x82\x3d\xdc\x58\x19\xb3\x3b\xa5\xbc\x14\xa9\x9b\x10\x49\xa1\xad\x0a\xba\x46\xac\x6d\x4a\xb5\x3d\x32\xd4\xa7\x26\x95\x3f\xd4\xd0\x6c\x52\x4a\xf3\x4b\x45\x2a\xed\x5d\xaf\x89\x40\xe2\xf7\xbd\x54\xfa\x58\x2d\xbe\x27\x32\x80\x84\xd1\x6d\x6e\x93\x12\x36\x94\x47\x7b\x50\x02\x91\xde\xe9\x81\x23\x62\xa3\x2b\xcc\x99\x70\x8f\x92\xfd\x77\xfb\x4f\x4a\x24\x2d\x88\xa4\x28\xe8\xb4\x53\x8f\x83\x25\x48\x2d\x4f\x1b\x26\x82\x1b\x35\x08\xaf\x57\x65\x89\xf0\x2e\x48\xeb\x42\x15\x58\x86\xc4\x3a\xca\x3d\x80\x9d\x82\x80\x3d\x68\xc8\x1d\x5d\x10\x2a\x45\xc9\x53\x67\x6a\xac\x6c\xbd\x1f\x96\x5e\x7c\x21\x38\x78\x1f\xca\x72\x1e\x39\x3a\x77\x18\x27\x6f\x47\x6f\xdf\xbc\x16\x4e\x85\x5f\xb8\xc4\xa9\x2e\x2a\x4e\x65\xe9\xd3\x93\x7e\xab\xaf\x86\xdc\xd3\xf7\x7e\x70\x26\x96\xba\xd8\x31\xf3\xc5\x5c\xf1\xa7\x3b\xc9\x34\x04\x9d\x8b\x0e\x50\x71\x31\xfa\x61\x90\x35\x7d\xd8\x63\x8d\xef\x7e\xd2\xd4\x55\x39\xfe\x84\x74\xcb\x11\x28\x3c\x6e\xeb\x2c\x5c\xea\x01\x12\x16\x02\x6a\x6f\x8f\x1c\xd8\x3b\xf7\x6d\x92\xe8\xe1\x93\xa2\x96\x03\xda\xd9\x7d\xd1\xa1\x06\x5d\x03\x70\x67\xf7\x05\x45\x1b\x5c\xd1\x23\x04\xff\x0b\x66\x74\x0e\x98\x1c\xcb\x32\x2a\x33\x74\x3f\x5f\xdb\xb5\x93\x71\xa9\x09\xf0\x39\x93\x82\x63\xac\xd7\x9c\x4a\x86\x55\x2b\x24\x4c\x40\x02\x37\xba\xe8\x97\x07\x3f\x1c\x5f\x61\x6c\xcb\xa1\xad\x65\xef\x57\x59\x2a\x5f\x5e\x22\x5c\x49\x30\xdd\xa3\xdb\xe7\xd7\x61\x60\x88\x34\xd7\xaf\xcb\xbc\x27\x2f\x75\x69\x0b\xe6\xdf\x27\x59\xa9\xd8\xfc\xa9\x28\x89\xcb\x5a\x3e\x65\xad\xf6\x79\x29\x83\xba\x06\xd4\x4a\x32\x74\x6d\x83\x7f\xa4\x42\xeb\xbe\xaa\x6a\x5a\x85\xe1\x10\xce\xf4\x44\x72\x36\x9d\x69\x17\x96\xe9\x4b\x9a\xad\x88\x10\x58\xd7\xe1\x69\x8d\x50\x86\xed\x1e\x67\x8c\xaa\x5d\x45\xae\x95\x8c\x43\x37\x0b\x06\x51\x70\x57\x88\x8a\x66\x95\x6d\xc5\xbc\xc8\x1a\x1c\xcf\x2f\x9d\x77\xca\xc3\x8d\xf1\xff\xb1\x41\x2b\x95\x76\x61\x83\x50\xec\x23\xd6\x6a\x38\x09\x6b\x06\xf8\x60\x0d\x24\xfe\x58\x65\x05\xad\x5a\x5c\xf0\xe1\x2c\x28\x48\x52\x88\x74\xc7\x6c\xbc\xb6\x8a\x47\x2b\x95\x63\x3d\x04\xc9\x4c\x64\xa9\xef\xcb\x69\x4d\x32\x63\xd0\x77\x00\x9c\x9c\x5f\x22\xfc\xcc\x27\xa2\xb7\x67\x03\x14\xad\x77\x00\x4b\x8f\x04\x1a\x69\x03\x9e\xbb\x22\x58\x07\xad\xa4\x8b\x48\x5f\x7d\x69\xe7\x33\xff\x97\x0a\x66\xde\x23\x46\xc7\x62\x0e\x08\xd2\x34\x95\xa0\x3a\x94\xee\x78\x02\x3d\xb5\x13\x29\x65\xad\xfa\x2e\x34\xfd\x1b\x15\xd8\xbc\x85\x08\xc5\x77\x3c\xaa\x88\x78\x9f\x99\x82\x9d\x5f\x9e\x74\xa0\x5e\xfb\xdf\x3b\xf7\x86\x99\x6a\x7f\x5f\x11\x56\x24\xb5\x3f\x75\x44\x6a\xaf\x61\x90\xd1\x60\x25\xc6\xdd\x5c\x56\x6d\xc5\xc4\x80\xa8\x75\x24\xd2\x84\xdb\x69\x0c\x59\x71\xd9\xcc\x95\x97\x98\x29\xeb\x26\x6e\x40\x43\xf9\x27\x42\x80\xf8\x40\x04\x4b\xe4\x5d\x58\xc6\xa0\x0a\xf0\x5d\x22\x4c\x68\x41\xf7\xa1\x7d\x01\x15\x5f\x01\xe6\x67\x83\xe5\xe5\xf9\x69\x9f\xe8\x52\xb0\xf4\xd9\xa1\xcb\xee\xfa\x65\x33\x77\xad\x59\xf2\xc1\x4d\xe8\x0f\xfb\xa5\x48\x37\x88\x49\x35\xa3\xc1\xfb\xc3\xee\x82\x5a\x10\x4a\xac\x99\x70\xa9\x6f\x6c\x0b\xa0\xec\x4c\x25\x50\xd4\xba\x2c\xb3\xec\x1a\x12\x09\xbb\x9a\x47\x9b\xfb\x7f\xbe\x34\xd7\x26\x91\x27\x90\xdf\xb1\x8e\x80\xbb\x99\xd7\x05\xde\x2a\xac\x09\xb3\x04\x8b\x32\xc3\x38\x53\xca\x17\x1e\xe0\xb8\x7a\x15\xf8\xa2\x98\xf2\x31\x2b\x36\x44\xaa\xb1\x0b\x0a\xaa\x97\x55\xdd\x42\xa8\x52\xd6\x63\xca\x78\xca\xe6\x2c\x2d\x69\x86\x2f\x42\x29\x34\xec\xe9\x5b\x71\xc8\xdc\x17\x2c\x24\xdf\x08\x49\xe0\x9e\x9a\xdb\x06\x95\x10\x4b\x15\xa2\x43\x2a\x92\x5b\x90\x03\x2b\x8a\x9d\xe2\x1f\x27\x28\xf1\xda\x92\xbc\x7e\x1d\x46\x97\x70\x65\xfa\xda\xb4\x09\xf6\x7d\x80\x2d\x1c\xbe\xb0\x9f\xbb\x60\x7c\x3a\xc4\x5f\xcc\x87\xb8\x37\x0d\x05\x1f\xd2\xa1\x41\xc3\x17\x22\xf8\x61\x0d\xde\x8f\x28\x59\x5d\x79\x7c\xf1\x2a\x82\x51\xe4\x44\x39\x9d\x21\xb0\x64\x4e\x7d\x59\xac\x0c\x34\x56\x3c\x72\x7e\x5d\x5b\x9a\xc2\x3d\x9b\x3a\x31\x2d\xac\x00\xd5\xc4\xb5\x17\x22\xfc\xb5\xb5\x90\x2d\x45\x0a\x07\x64\xcb\xc1\x48\xef\x8c\x81\x62\x0e\x72\xce\xe0\xee\xc8\xb1\xce\xe1\x1d\xd3\xb3\xa1\x85\x88\x3a\x42\xc0\x1e\x7d\x61\xc5\x4b\x9b\xb8\x75\x9c\xa6\xce\x6c\x59\x2a\x98\x94\x99\xeb\x97\x3b\x22\xb4\x60\x3f\x80\x54\x58\x57\xf1\x96\xf1\x74\x40\x4a\x96\x7e\xfd\x19\x03\x5f\x18\x67\x75\x88\x5d\x27\x2a\xf8\xde\x51\x39\x97\x2f\xcc\xfe\x59\xb7\xb4\x75\xc1\x41\x63\xc8\x04\x9f\x06\xd9\xce\x28\x5e\x9c\x73\xa6\x57\x5a\xf3\xd9\xaa\x65\xa8\x22\x0b\x99\x62\x20\x23\x13\xb2\x61\x0f\x36\xf3\x61\x2d\xa7\x20\x1c\xd2\x90\x48\xd6\x98\x0f\xc3\x59\x54\xc5\x8c\x88\x0d\x88\xf0\x89\x91\xbe\x42\xa6\xaf\x11\x65\x4b\x96\xcd\x28\x4f\xf1\xcf\x24\x11\x32\x75\xeb\x65\xba\x8a\xbd\xb4\x41\x41\x36\x12\x05\xd9\x1a\x76\x57\xe7\xcb\x6f\x46\x0d\x54\xe6\x8d\x40\x3d\x2f\xf6\x94\x9c\xfd\xa3\x04\x42\x73\x61\x08\xfb\x72\x21\xe7\x25\x88\xe4\x74\x81\xbc\x15\x97\xfa\xbe\xca\xf4\xb3\xc9\x84\x6a\x40\xae\x80\xa6\x2c\x48\x88\x1e\x90\xf7\xcd\x0c\xe9\x81\x59\xcb\xb5\x4d\xdd\x74\x3f\xd9\xd5\xfb\xe6\xea\x57\xd6\x49\x94\xfb\xb8\xa2\xd5\x8f\x31\xbb\xa2\xe9\x2d\x70\xab\x94\x1b\xd0\xa0\x1f\xac\x94\xb8\x07\xc9\x0c\xd2\x12\xb9\xd4\x78\x41\x26\xcc\x56\x77\x47\x51\x81\x4d\x67\xa0\xb4\x17\x2e\x8f\x30\x56\xa7\x6e\x53\xe3\x17\x80\xe8\x1b\x44\xda\xd6\x66\xac\x9c\x62\xe9\x52\xe1\x3a\xd3\xbb\x64\x12\xab\xb3\xa9\x32\xf7\x67\x79\x19\xd2\x6a\xe4\x7b\xda\x9b\x95\x07\x55\xb3\xd9\x12\x70\xd1\x49\xe7\xec\x70\x64\x42\xd5\x0c\x6b\xca\x2f\x6f\x41\x62\x4d\x32\x49\x29\x0d\xc1\xb0\x65\x66\x29\x36\x91\xc5\x8e\x85\xd8\x6f\x74\x9d\xe1\xa6\x63\xf2\x80\x59\x6c\xfb\xbe\xf7\x4f\xc7\xc4\x8e\xab\x60\x70\x03\xf8\x64\x89\x12\xd8\x9d\x34\x0c\xcb\xd7\x96\xf2\x6d\xc8\x71\x33\x0c\x55\xf8\x7c\x2c\xa9\xbd\x7f\xb4\x95\x5f\xb3\x0b\x07\xa4\x72\xda\xdd\xf2\xb1\x7f\x2c\xa7\xa5\x3d\xe8\x8e\x0a\xd7\x45\x69\x5d\x2b\x4f\x94\xda\xac\x8c\x69\xd4\x99\x93\x0f\xa7\x61\x0a\x52\x98\x5b\xe1\x13\xb8\x46\xe4\x87\xae\x46\xea\x65\x2b\xb5\xa1\xe6\xb5\xe9\x3b\xa9\x4e\x96\xa1\x18\xd9\xdc\xeb\x17\xd5\xdb\xbc\x1c\xca\x78\x51\x6a\xc7\x06\x6b\x8d\x93\x27\x33\xca\xa7\xa8\x64\x8a\xd2\xcc\xf7\xe5\x97\xb8\x22\x09\x69\x99\xb8\x6a\xfa\x1e\x65\xbf\xf4\x26\x5b\x57\xcf\x0b\x69\x95\x4a\x68\xe1\xd7\x1c\x7e\x96\x5a\x70\x4d\xef\xdf\x11\x36\x82\x11\xd9\xfb\x32\xb8\xb4\x67\xdf\x5e\x48\x61\x5e\xe1\x52\x1f\x70\x55\x19\xd3\x18\xbe\xbd\x17\xde\x3d\x22\x67\xe6\x1d\xe8\xc6\xaa\x00\x18\x44\xe7\x8f\x6b\xf0\x0d\x88\x84\x29\x95\x69\xe6\xcc\x2d\x77\x41\x4a\x47\x05\x30\xb8\x67\x4a\x2b\xcb\x83\x74\x07\xca\xa4\xa9\xba\x35\x74\xc8\x9c\xac\x61\x4a\x35\x1d\x06\x47\xfa\xc8\xea\x6d\x43\x57\xee\x73\x48\x1d\x6a\xd5\x24\xeb\xe8\x0b\x97\x19\x39\xa4\xd5\x5d\xcc\x48\xe4\x58\x78\xb3\xbd\x9c\xf3\xd2\x6c\x6c\x1d\xaa\xbe\x36\x4f\xef\x59\x5d\x41\x1a\x61\x80\x51\xfc\xb5\xbc\x54\x11\x51\x57\xd8\x74\xdd\x79\x3e\xbb\xb8\xb9\xfa\xeb\xe5\xc7\xf3\x8b\x9b\x78\xac\xe3\xb1\x8e\xc7\xba\xc3\xb1\x06\x3e\xef\x7c\xa4\xbd\xde\xb4\xce\xe5\xbb\x5c\x70\x32\x48\x0d\x7a\x45\x81\x75\x67\x7c\xfe\x03\x95\x75\x1b\x7b\xe7\xaf\x5a\xe3\x01\xf7\x7d\xee\x91\xc4\x9d\xbc\xf8\xc8\xba\x27\x8c\x8b\xeb\x31\xde\x28\x34\xa9\xac\xdb\xb5\xb0\xf7\xd7\xc9\x2f\xe7\xa7\x67\x17\x37\xe7\xdf\x9c\x9f\x5d\x3d\x69\xa0\x48\xc7\x82\x8f\x4d\xa6\xdc\x92\x4b\x16\x12\xe6\x4c\x94\x2a\x5b\x54\x3d\xb6\xd6\x13\x81\xd5\x58\x43\x9e\xa2\xad\x43\x81\xc4\xa8\xeb\xb5\x8f\x45\x66\xdb\x2f\xb3\x6d\xc6\xcd\x74\x28\xcf\xd3\x17\xfa\x7e\x23\x45\xde\x13\x0a\x5f\x5b\x2b\x8c\x77\x86\xaf\xc3\xa7\x7d\x57\xc9\xa3\xc1\x7a\x9c\xf0\x58\x97\x0d\x31\xc2\x68\x5e\xe8\x0e\xc5\xf0\x7b\x29\xf1\xdb\x4f\x35\x5c\x1b\xab\xf3\x81\x16\xdf\xc1\xe2\x0a\x3a\x56\x01\x6a\xc2\x1b\x32\x48\x0c\xa3\x23\xb7\xb0\xb0\x81\x99\x27\xfe\x65\x5d\xaa\x15\xfd\x7f\xec\xfd\x0f\x77\xe3\x36\x92\x37\x0a\x7f\x15\x1c\xcf\x9e\xd7\x76\x22\xc9\xdd\x49\x66\x26\xdb\x4f\xde\xe4\x38\xb6\x3b\xe3\x27\xdd\x6e\xaf\xed\x4e\xee\xdc\x74\x76\x06\x22\x21\x09\x63\x12\x60\x00\x50\x6e\xcd\x66\xbf\xfb\x3d\xa8\x02\x40\x50\x92\x6d\x99\xa4\x5b\xb2\x23\xce\x39\xd3\xb1\x44\x81\x60\xa1\x50\xa8\xbf\xbf\xda\x48\x84\xe4\x6b\xd6\x06\xbd\xba\x4b\x68\xe3\x6b\xd6\x22\xe9\xd4\x5f\x0b\x20\xbf\x76\x09\x41\x4f\xb3\x6b\xda\x6e\xf5\x48\xb7\xb0\xc6\x8f\x00\xe5\xfc\x7c\x23\x28\xf5\xab\xc3\x55\xf0\x81\xe0\x8e\x57\x02\x63\xf2\xb3\xda\xd9\x15\x84\x08\xc1\xaa\x4e\xe0\x4d\x1f\x74\x70\x4a\x46\x47\xa4\x69\xdb\x84\x8b\xe0\x12\x76\x2b\x57\x77\x2b\xc1\x8a\x39\xfe\x01\x67\x2e\x7d\xe5\xa1\x0c\x74\xe8\x9c\x35\xb0\x1c\xd6\xab\xff\x09\x21\xd1\x1e\xf9\x67\xf8\x10\x7a\x4d\xeb\x5f\x76\x77\xbf\xf9\xf1\xe4\xef\xdf\xee\xee\xfe\xfa\xcf\xf8\x5b\x38\x0a\x31\x50\x5e\xbf\x05\x70\x9d\x84\x4c\xd9\x19\x3c\x03\xfe\x74\xea\xda\x21\x06\x4f\xdc\x17\x50\x91\x3d\xc0\xac\xa5\xf0\x67\x21\xd3\xf9\xbf\x74\x2b\x40\xc0\x8d\x3c\x18\x60\x89\x5a\x54\x16\xe1\xd5\xdd\xf1\x50\xc9\x92\x8e\xb7\xaa\x1b\xd5\x73\x23\x00\x4b\x23\x24\xd9\x6b\x4f\x02\xe8\xee\xe9\xa1\x1f\x04\xd4\xcb\x5b\xcd\xb4\x8e\x0e\xb9\x33\x7d\xd9\xaa\x8f\x31\x5e\x1d\x8a\xb6\xb0\x82\x1d\x13\x0c\x28\xe2\x1b\x86\xc1\x46\x0e\x07\x6c\x48\x98\x09\xdd\xe7\x0e\xcf\x4f\xc9\x14\x29\xbc\x31\xc4\xf1\x81\xcd\xd7\x8f\x2a\xe3\x42\xf8\x74\xbe\x2e\xf7\x15\x26\xe0\xf8\xef\x1d\x46\x82\x0e\x08\x76\xcc\x1a\x36\x7b\xf8\xe1\x20\x29\xca\x9e\xbb\x61\x90\xb3\x5c\xaa\x59\xf8\x33\x80\xcd\xf4\xb5\x91\x8a\x8e\xa1\xa6\x06\x7f\x8e\x3f\x0b\x7f\xe1\x0f\x6b\x0f\x58\xfc\x35\x9a\xc2\x55\x14\x35\x00\xdc\x3e\x3f\xd9\xe6\x49\xbf\x21\xa2\x2d\x69\x0b\xa3\x54\xbf\xea\x0c\x19\x3c\x71\xa8\x70\x06\x2a\x82\x3d\xe9\x6a\x86\x7b\x55\x3e\x1c\x78\x03\xc4\xd4\x5a\x96\x8d\x01\xf0\xaa\xab\x43\x69\x96\xf2\x29\xd7\xb2\x45\xe5\x50\x18\xe8\xf6\xdc\x49\x07\x5b\x82\xf9\x5b\xc1\x6d\xf6\xb1\x00\xcc\xaf\xb0\x5f\xe7\xc4\xfe\xcb\x36\x4d\xce\xf1\x2a\xa8\x31\x4c\x89\x57\xe4\xbf\xf7\x3e\x7c\xfe\x7b\x7f\xff\xbb\xbd\xbd\x5f\x5e\xf4\xff\xf3\xd7\xcf\xf7\x3e\x0c\xe0\x3f\x3e\xdb\xff\x6e\xff\x77\xff\xc7\xe7\xfb\xfb\x7b\x7b\xbf\xfc\xf8\xf6\x87\xab\xf3\x93\x5f\xf9\xfe\xef\xbf\x88\x32\xbf\xc6\xbf\x7e\xdf\xfb\x85\x9d\xfc\xba\xe2\x20\xfb\xfb\xdf\xfd\x47\xeb\xa9\x77\x00\xc1\x8b\x57\x97\x40\xbc\xf5\x11\x3b\x61\xbf\x47\x6c\x65\x81\x97\x67\xaf\xae\xf7\xff\x85\x97\x9a\x51\x3e\x8f\x3f\xae\x37\x66\x83\x63\x42\xe8\xa7\xf0\xe4\xe0\x93\xea\xb5\x36\xc1\xb4\x78\x6e\xe7\xdc\x1f\xc1\xb9\xe3\xd5\x76\x5c\xd7\x4a\x13\x1d\x29\x99\xfb\x8a\x7e\x08\x6f\x60\xed\x99\xbb\xef\x9a\xb5\x6a\x09\x8a\xd7\xd6\x19\xb4\x75\x06\xdd\x72\xdd\xeb\x0c\xc2\x72\x84\xcd\xf5\x04\x31\x31\x6d\x1a\xc2\x58\x1a\x41\xf7\xb6\x4e\x0c\x7f\xb7\x5a\x40\x6d\xe0\xb7\xba\x0e\x91\xb8\x2a\x93\x06\x0f\xb4\x7c\x79\x0c\x13\x1a\xf8\x73\x81\x1b\x1f\x06\x08\xa0\x9f\xcc\xf5\xee\x70\xf5\x97\x53\x3b\x85\x80\xf4\x5e\xc3\xee\x84\xac\x62\x2e\xc6\x0e\xc9\x02\x8f\x12\x17\x7d\xe2\xa2\x42\xc3\x0d\xca\x61\x05\xa1\x4e\xb5\x96\x09\x34\x3e\x42\x9c\xbc\x80\xca\xe7\xa6\x0d\xb3\x31\xf4\x9a\xc5\xad\xd8\x11\x5e\xbd\x7a\xd7\xe1\x0c\x50\x5f\xc5\xd4\x43\xcc\xa7\x25\x26\x83\xa0\xf8\x5b\x3e\xc6\xf3\x4a\x40\xb0\x8c\xe8\x82\x60\x51\x1e\x02\x48\xfd\x60\x61\x53\x48\xc5\x90\xa3\xca\xcb\xda\xac\x99\x65\xeb\x53\xbc\xfd\x99\x19\x22\x5b\xad\x94\xa1\x85\xc3\xb2\x72\x3f\xd7\x0f\xc9\xe7\x10\x0c\x6c\x7f\x7c\xfe\xe1\x8e\xce\x8e\x8e\xcd\x6e\x8e\xcc\x07\xc4\x4e\xba\x3c\x26\xbb\x08\x96\x14\x8a\x8d\xf8\xc7\x8e\xf6\xe9\x61\x54\x99\xc8\x53\x26\x0c\x1f\x71\xec\xd7\x5b\x28\x56\x30\x81\x3d\xf3\x69\x32\x01\xd9\xef\x4e\xca\x2a\x38\xbd\x89\xc9\x3c\xa8\x70\x77\x2b\xca\x2e\x97\x29\xfb\x5b\x39\x46\xb6\x72\xac\xf1\xf5\x89\xe4\x98\xe3\xdc\xcd\x11\x62\x90\x79\xde\x3e\xf5\xfd\x38\xca\x63\x07\x2e\x6e\x5f\x39\x3c\x87\x06\x17\xe4\xa2\x91\x98\xb9\x86\xe5\x6b\x8a\x64\x6c\xca\x32\xa7\x34\x91\x9c\x0a\x3a\xc6\x36\x7c\x46\x06\xd0\x1f\xa9\x42\x8b\xa3\x79\x44\x1f\x50\xe2\x7d\x65\x17\x7c\xa9\x64\x96\x31\xa5\x49\xc6\xaf\x19\x39\x66\x45\x26\x67\xb9\x4b\x7c\x4d\xc9\xa5\xa1\xc6\xb2\xf4\x25\x33\xcd\x62\xbe\xed\xd0\x40\x7c\x31\x7b\x47\xd0\xe7\x58\x1d\x0f\xb5\xe5\xa4\x70\x85\x93\xef\x04\x48\x8c\x43\xe8\xb6\xd2\x23\x67\x6c\xca\x54\x8f\x9c\x8e\xce\xa4\x39\x47\xd5\xbb\x9e\x6d\x87\x37\x12\x3e\x22\xaf\xac\x51\xa7\x0d\x31\xd8\xf1\x22\xaa\x73\x97\xaa\x36\x40\x85\xf7\xd6\x45\x59\xde\x62\xc9\x39\x8c\x14\x0a\xce\x1b\x85\x31\x5a\x2d\x53\x68\x29\xd4\x7a\x81\x0e\xb1\x8c\xb4\x42\xf2\x8d\xf8\x1b\xe1\x19\x3c\x82\x19\x98\x80\x5c\x10\xc5\x74\x21\x85\x66\x75\x78\xc6\xaa\x05\x25\x98\xba\xba\x53\x0b\xb1\xf1\xc9\xd9\xf6\xcc\x2c\xa4\x36\x50\x39\xdb\x4d\xa3\xaa\x73\x3f\x1c\x14\x22\xd3\x2c\x63\x69\xad\x53\x19\x76\xd8\xa1\x75\xf7\x40\x02\xcd\x19\x7c\xc3\x17\xe6\xea\x93\x6b\xa5\xcd\xb5\xfb\x43\xd7\x3b\xdf\x57\xc6\xf7\x4f\xbe\xad\xa0\xb9\xda\x98\x70\x88\x44\x0c\xb0\x80\xf7\x0c\x28\xe0\x3a\x6a\x4e\x33\x91\xf2\x9a\x24\x32\x2f\x32\xd8\x3a\x2d\x76\x56\xd5\x1b\x2b\xb0\x52\x1f\xfa\xa1\x1e\x44\x6d\xb3\xe0\x83\x35\xf6\x37\xed\x42\x07\x63\x1f\x59\xd2\x59\x5f\x4d\x2b\x4b\xed\x2a\x43\xbc\x5f\x8a\xa0\x8a\x8d\xa4\x3d\xc0\xa0\x38\x3b\xe0\x0f\x46\x60\x3b\x27\x1f\x59\x12\xf5\xa6\x05\x04\xac\xc4\xe3\x49\xd8\x8d\xde\xbe\xe7\x78\xeb\x30\x45\x57\xa1\x81\x16\xc5\x77\xf1\x35\x07\x1a\x08\x63\x7a\x8c\x74\xf7\x08\x68\x37\x01\xf6\x13\x16\xe4\xc5\xa0\x1b\x81\x87\x71\xc7\x2e\x20\x0d\x86\xe4\x6b\x3f\x16\x74\xf5\x91\xd2\x90\xbd\xdd\x83\xdd\xfd\x05\x9f\xe5\x1c\xd0\xf6\x55\xf4\x4b\x0e\xc8\x92\x05\xc0\x34\xb2\x64\x37\xed\x11\x6e\x7c\x76\x36\xf6\x09\x82\x59\xb9\x2a\xc1\x1e\xd1\x92\x18\x45\x53\xee\xb4\x1f\xf8\xd4\xde\x64\x54\xe9\x0e\x87\xbd\xdd\xdf\x77\x5d\x9b\xa2\x1b\x29\x76\x0d\x4c\x7f\x40\xae\x10\xa5\x26\x0c\x34\x93\x25\x34\xdf\x44\x12\x14\x19\x4f\xb8\xc9\x66\x20\xe8\x88\x2c\xb1\x53\x97\x3d\x66\x5c\x75\xe2\xc9\x47\x6e\x7c\x4b\x12\x39\x22\x2f\xb0\x51\x18\xa3\xce\x6b\x9a\xf1\x29\x3b\x98\x30\x9a\x99\x09\x26\x96\x08\x29\xfa\xd8\xeb\xd1\x4a\x20\xf7\x4d\xdb\x18\x4b\x3b\x17\x64\x7c\xb5\x70\x47\x2e\x4e\xa8\xa5\xb5\x61\x65\xef\x0f\xcd\xbb\x59\x93\x05\xb0\xb0\xab\xab\xf3\x1f\x6a\xed\xac\x41\xf8\x1b\x53\xf8\x74\x9f\xa8\xe9\xfb\x06\xc8\x8e\x6e\x02\x9c\xad\x7a\x51\x93\x0e\x45\x58\xdb\x9e\xd4\x64\x39\xf8\xdb\xea\xcd\xa8\xc9\xdf\x65\x09\xd0\x21\x74\x98\xcd\x02\x6e\x83\x66\x86\xec\xd8\xa1\x76\xac\x78\xb2\xdc\xf0\x37\x46\x53\x84\xd5\xd0\x86\xd1\x46\x1a\x5f\x7c\x75\x16\x78\x8b\xe6\xd6\xed\x39\x50\x6a\x23\x73\x32\x71\xaf\x5d\x2f\xd7\x74\x3b\x63\x00\xbb\xc7\xd7\x42\x29\x56\xa0\x84\x73\xbf\x79\x76\xf2\x6b\x41\x6e\x20\xdd\x6b\x3d\x13\x92\x98\x6c\x71\x67\x1d\x2e\x90\x58\x88\x52\xd3\x91\x2c\xed\x20\x61\x82\x74\x98\x34\x41\xda\x15\x7f\xce\x0f\x04\x81\xc0\xf6\xf9\x61\x9d\xe5\x61\x90\xce\x72\x0d\xc8\x32\xc7\xac\xe3\x19\x74\xda\x74\x44\xc4\x4e\x23\xfc\xa4\x7d\x79\x69\x7c\xdd\x4d\x80\x6e\x16\x9f\x74\x49\x81\xa2\x83\x74\xf0\xc5\x64\x70\x04\x9d\x82\x72\x4d\x14\xae\x20\x26\x34\x53\xd3\xa6\x05\xe0\xd5\xd5\xdd\xab\xcb\xe6\x8e\x02\x7f\x2d\xa9\xad\x56\x44\x84\x06\xd7\x1e\x54\x75\x91\x20\x51\x36\x83\xeb\x87\xed\x5d\xc0\xfe\x38\xa2\x62\xcc\xc8\x4b\xfb\xcb\xbf\xfc\xf9\xcf\x5f\xfe\x79\x80\xc3\x87\xcc\x06\x41\x4e\x0f\xcf\x0e\xff\x71\xf9\xd3\x11\x14\xd4\xb6\xa5\x6a\x47\x69\x9b\x5d\x27\x6d\x76\x9a\xb2\xf9\xa8\x09\x9b\x50\x26\xd2\x5a\x8a\xd4\xe3\x05\x30\x64\x8c\x2e\xea\x74\xbf\x08\x95\xcf\xea\x9a\x75\xff\xab\xdd\x6a\x1b\xb1\xc7\x4c\x52\x5c\xca\xe4\xba\x43\xbb\x66\xf7\xea\xe8\x1c\x87\x8c\x4c\x1b\x2a\xbc\x33\x84\x8b\xa9\xcc\xa6\x80\xbe\x4a\xae\x8e\xce\x61\xe7\x0d\xe0\xbf\xc0\x11\x05\x16\xf5\x8c\x99\xaa\x90\xc1\x85\xa7\x02\x86\x2a\x14\x69\xd0\x8c\x6b\xc3\x13\xf8\x5d\xe5\x26\xb5\x23\xb4\x89\x4b\x6d\x2d\xa5\x65\x57\xe7\x96\x52\xd4\x24\xf8\xa1\x46\x53\xdb\xc4\xc3\x0d\x3e\x97\xdc\x79\xa4\x6a\x5d\xb4\xb7\xe7\x52\x07\xe3\x6d\xee\xb9\x54\x28\x76\x69\x64\xa3\x6e\x01\x64\x31\x12\x82\x83\xdd\x12\x07\x19\xb2\x91\x54\x6c\x3e\x10\x12\x05\x36\xd2\x12\x36\x21\x15\x50\xfd\xe7\x5d\x50\xb2\x16\xbc\xc0\x94\x4b\xdf\x21\x3b\x73\x98\xa8\x07\x3a\x06\x42\xf5\xed\x8e\x7b\xf6\xed\x58\x0e\xb3\xeb\x55\x65\x0c\xae\xd9\x32\x7c\xc8\x4c\x82\x6e\x56\x1f\x7f\x71\x1e\x55\x3f\xfd\xf9\x50\x49\xa2\xa8\x9e\x60\x23\x62\xf6\x91\x9b\x00\xb9\x4a\xb5\x14\xe8\xec\x8d\x7a\x22\x73\x1d\x61\x72\x47\x41\x1e\xfc\xd1\xb9\x4c\xe7\x7b\x8e\x8f\x15\x4d\x18\x29\x98\xe2\x32\x25\x50\x4f\x9c\xca\x1b\x41\x86\x6c\xcc\x85\xf6\xf4\x03\x70\x76\x47\x68\x7b\xdc\x30\xf0\x0d\x7b\xb4\xb8\x01\xb9\xa8\x81\xa0\xb8\xf2\xa4\x44\x56\x3b\xda\xcd\x62\x3e\xc8\x04\x19\xa1\x40\x5e\xec\x06\x14\x16\x26\x6e\x90\x74\xcf\xa4\x3b\x88\x36\x61\x0f\x2f\xff\xdd\xad\xd4\xe1\xda\x52\x3d\x99\xb4\x0b\xfc\x6e\xc3\x53\x2b\x5e\xdb\xf0\xd4\xc3\xae\x6d\x78\x6a\x1b\x9e\xba\xfd\xda\x38\xf7\xee\x36\x3c\xb5\x35\xba\xe6\xaf\x6d\x78\x6a\x1b\x9e\xba\xe5\xda\x38\xf9\xb5\x0d\x4f\xad\x70\x6d\xc3\x53\x2b\x5e\xdb\xf0\xd4\x36\x3c\xb5\x0d\x4f\x6d\xc3\x53\x7f\x20\x37\xa0\xbf\xb6\xe1\xa9\x85\x41\xb6\xe1\xa9\x88\x18\x5b\x4b\x69\xc9\xb5\x0d\x4f\x2d\xb9\xb6\xe1\xa9\xe8\xda\x9e\x4b\x0d\xce\x25\x1f\xdc\x39\xb7\x76\x59\xfb\x9a\xb5\x73\x08\x1c\xf0\xc4\xc5\x88\xe4\xa8\x56\xe7\x84\x8f\x1a\x54\x0d\x28\x22\xcc\x0f\x5f\x6a\xe3\xa2\x41\x55\x8c\x69\x69\x3d\x54\xcb\xf6\x70\x85\x4c\xab\x60\x44\x14\x85\x40\xeb\xb4\x79\x4d\xda\xda\xaa\xad\xda\x84\x1e\x36\x3a\xec\xb0\x21\xa1\x9d\x0e\x42\x0d\xdb\x30\xc3\xb3\x0b\x33\x74\xe3\xa2\xeb\xc0\x3d\xd7\xfa\x84\x71\xc1\xfc\xab\x89\x62\x7a\x22\xb3\xc6\x8c\x5e\x63\xf2\xb7\x5c\xf0\xbc\xcc\xa1\x6f\xac\xe5\x67\x3e\x0d\x59\x03\xa1\x39\xb6\x13\xf4\xe8\x29\x8c\x1a\xcc\xfa\xc6\xb2\x50\xd6\x39\xa1\xa0\xaa\xeb\x32\x49\x18\x4b\xa3\x96\xf7\xa0\x98\x7d\x39\x08\x4f\x0a\xed\x34\x5e\xb6\x93\x37\xed\xce\x7e\x84\x28\x85\x51\xbe\xfc\xa2\xd1\x18\x2d\xa3\x3c\x9f\x3e\xc2\xd3\x81\x98\x6e\x6f\xaf\xb4\xb2\x55\xba\x38\x25\xda\xda\x28\x4f\x2d\x92\xd3\x59\x44\xb3\x83\x08\xce\x06\x45\x6f\x36\xe6\x58\xd8\x94\x88\xcd\x06\xa2\xaf\x76\x10\x60\xe8\x22\x42\xd3\x5d\x74\xe6\x11\x40\x4a\x1f\x27\x2a\xd3\xa1\x35\xdc\x51\x34\xe6\x53\x44\x62\x3a\x79\xeb\xb6\x11\x98\x4f\x17\x7d\xe9\xe6\x75\x5b\x7a\xb7\x9e\x45\xc4\xa5\x03\xaf\x56\x97\x1e\xad\xce\xbc\x59\x8f\x16\x61\x69\x1f\x5d\xd9\x80\xc8\x4a\x6b\x22\x73\xc1\x0d\xa7\xd9\x31\xcb\xe8\xec\x92\x25\x52\xa4\x8d\x4f\x98\x39\xd4\xba\xb0\x7f\x34\x0e\xeb\x6c\xb4\x7a\xfe\xf1\x84\x3a\x70\x5e\x96\xfa\x94\x6a\xef\xfe\x73\x0a\x05\x34\x34\xc1\x59\x6e\xa4\x43\x8f\x6c\x8c\x31\x88\xc9\xd8\x5d\x2e\xe2\xdf\xe4\x0d\x91\x23\xc3\x04\xd9\xe3\xc2\xaf\xe3\x7e\x64\x06\x56\x96\x79\x60\x6b\xfb\xed\xcb\x17\xfe\xe6\xe7\x67\x72\x83\x73\x41\xeb\xc7\xf7\x80\xb8\x07\xdd\xef\x02\x71\x37\x8e\xca\xac\xee\x06\x41\xd7\x48\x5d\xde\xbc\xac\xe0\x45\x5f\xc2\xb8\x61\xb7\x51\x91\x12\x57\xb8\xf1\xfc\x16\xad\x75\xdc\xf8\x39\xc4\x8c\xb7\xbe\x17\xd2\xb5\xef\x65\x4d\xb1\xe1\x0d\xd4\x9a\x9f\x68\x3c\x78\xab\x35\x3f\xe0\x8a\xea\xbf\x7e\x50\x34\x61\xe7\x9d\x2b\x1c\x7e\x3b\x91\xb4\x54\xae\x6c\x2f\xe8\x1d\x61\xf3\x08\xc6\x52\xdc\x4d\xa1\x28\x0e\xaa\xd1\x46\x65\x96\xcd\x48\x59\x48\x51\xaf\x3c\xc4\xa0\xd5\x7c\xc1\x9a\x1d\x6d\xd9\x53\x2a\x2d\xb5\x50\xd2\x1d\xc0\xaa\x14\xc2\xca\xf3\xaa\xe1\x10\x68\xa5\x1a\x65\x75\x5c\x16\xa7\xf9\xd8\x4e\xdf\x1e\xa6\x50\x31\xc7\x73\x56\xb5\xa4\xa8\x06\xb4\xbf\x1e\x49\x95\xf0\x61\x36\x23\x13\x9a\x85\xee\x12\x94\x5c\xf3\x2c\x73\xc3\x0c\xc8\x25\x33\xc4\x4c\xb8\x6b\x0c\x4e\x32\x29\xc6\x30\x39\x2a\x7c\x57\x33\x96\xd8\xdf\x26\x19\xa3\xa2\x2c\xf0\x79\xf6\x58\x9f\xc9\x52\xf9\xe7\x39\x58\xcb\x30\x0a\xd7\x44\xf0\xac\x17\xf5\x4e\xba\x73\x61\xab\x06\xf5\x9a\xf9\x9a\xc2\x1b\xae\x59\x2f\x1e\xd3\x23\xf3\xea\xa8\x73\x46\xa1\xe4\x94\xa7\xd8\xfd\xc2\x93\x0d\xba\xb4\x62\x77\x8c\xb0\x9f\x85\x14\x7d\xc1\xc6\x14\xb4\x1e\xb7\x8b\x70\xcd\x70\x1c\x0c\xc5\x89\x14\xfa\x65\x58\x73\x41\x16\xb5\x52\xd6\x29\xc7\x4e\x9f\x11\xe5\xc8\x9e\x90\x44\xc2\xf1\x5a\x0a\x6e\xb0\x7b\xf4\xa4\x34\x24\x95\x37\x62\x7f\x80\xa8\xc4\x5c\x13\x4a\x86\xcc\xf8\x4e\xb6\xbe\xb3\x22\x57\x4c\x13\x26\xe8\x30\xb3\x6b\x0e\x09\x0f\x57\x4b\x09\x44\x46\x8c\x9a\x52\x31\x32\xa6\x86\x2d\x55\x9a\xf0\x7d\xef\x26\x2f\xd7\xa1\xcb\x7b\x29\x34\x6b\xdc\xdf\xba\x63\x4d\xeb\x2f\x5f\x35\x93\x11\x3c\x67\xb2\x34\x9f\xc4\x94\xbc\x99\xf0\x64\x12\x6b\xc6\x3c\x67\x9a\xc8\x72\xce\xc6\x7e\xe9\x7e\xb6\x7c\x85\xb6\xf6\xe4\xb2\xab\xa9\x97\x78\x89\x2b\x6d\xbe\xe4\xb8\x6a\x2b\x4b\xed\x06\x3c\x3e\xbb\xfc\xc7\x9b\xc3\xef\x4f\xde\x0c\xc8\x09\x4d\x26\x71\x3d\xba\x20\x14\x84\x06\x08\x8a\x09\x9d\x32\x42\x49\x29\xf8\x6f\x25\xa2\x93\x93\xbd\xf0\xdb\xfd\x4e\xb1\x90\x1b\x9e\xbe\xd0\xfa\xba\xb3\x5e\x4b\xd8\x48\x1b\x13\x1c\xa4\x66\xd0\x1d\x61\x5e\x7d\x3a\xb1\x5f\xa1\xa1\x01\xaa\xd6\x84\x59\x61\xc4\xa7\x4e\x0c\x3b\x70\x69\x9a\x86\x94\x0b\xcb\xe7\x96\x2d\xec\x51\x45\x87\x90\x2a\x31\x61\x44\x30\x63\xd9\x3a\x38\xac\xa4\xd0\x35\x60\x80\x52\x33\xdd\x23\xc3\x12\x92\x3b\x0a\xc5\x73\xaa\x78\x36\x8b\x07\xb3\x67\xd5\x99\xf4\xe6\xd0\x6c\x7e\x4a\xc7\xef\x4e\x2e\xc9\xd9\xbb\x2b\x52\x28\x84\x0c\x80\xec\x0c\xf8\x1e\x5e\x6b\xc8\xec\x2f\x5c\x8f\xce\x01\x39\x14\x33\xfc\x12\x37\x38\xd7\xc4\xda\x42\x0c\x8e\x60\xa7\x43\x7a\x50\xf8\x9d\x17\x03\xf8\xdf\x8e\x7d\x4b\x65\x95\xcc\x90\x74\x92\x2c\x24\x8f\xa1\x1a\xca\x87\x59\x44\x4d\xf7\xee\xcf\xaa\xdb\x52\x48\x9b\x3b\xb7\x44\x8c\xba\x2d\xd1\xb0\xd4\x40\x5e\xec\xbe\xc5\xc5\x38\x8b\xb9\xaa\x99\xd8\x6f\x6b\x5b\xb6\xb5\x2c\xfb\xd5\x1b\x9c\x37\x35\x30\x3b\xe9\xfa\x54\xcd\xa1\xa3\x5e\x29\xd5\xe9\xe7\xcd\x29\x27\x11\x64\xdc\xfe\xf2\xf4\xdc\xef\x00\xa7\xdd\xe4\x73\x3d\x13\xe1\xc7\x18\xd4\xe8\x91\x17\xe4\x1b\xf2\x91\x7c\x03\xe6\xd5\x5f\xda\x76\x96\x69\x6b\xf8\xb4\x77\xef\xa0\x55\x7f\x7a\xde\x11\xc5\x7f\xb6\xd2\xc9\x8e\x68\xa9\x6a\x24\x19\x72\xa7\xce\xb3\x8f\x86\x29\x2b\x47\xdd\x4a\xac\xb5\x27\x8f\x9d\xe0\x27\x64\x33\x8c\x5d\x9c\x8e\xe2\x96\x10\xe6\x81\x8c\x66\x7f\xfe\x37\xa9\xcd\x99\x93\x42\xf5\x06\x13\xd5\x68\x39\x35\xc9\xa4\x2e\xc6\xac\xa2\xa6\x4d\xb5\xc1\x34\x49\x25\x78\xd2\x30\x0f\x70\xc2\x5b\x64\x62\x6c\x0e\x1b\xb7\x0b\xce\xd7\xd6\xf3\xae\x95\x9a\x73\xa0\x80\xe5\xe3\x14\xab\x08\x5e\xa6\x90\xa9\xd3\xc9\xec\xb4\xd2\xe8\xcc\xb8\x43\x29\x73\xbe\x9a\xe0\xb2\x06\x5e\xb2\xfb\x29\xa1\x02\x13\xb8\x47\x4c\x29\x4c\xdd\x1c\xce\x20\x82\xcc\x13\xd6\x7a\xf1\x5a\xed\xa4\x42\x49\x23\x13\xd9\xa2\x6d\x50\x3d\x60\xee\x86\x03\x22\xa0\xf3\xd7\xfb\xdc\xdf\x1f\x9f\xf7\xc8\xd5\xd1\x39\x74\x53\xb9\x3c\xba\x3a\xaf\x5b\x2a\x3b\x57\x47\xe7\x3b\x6b\x25\x05\xf1\x9a\xd5\x2b\x3b\xcd\x06\x83\xd4\x1c\x4f\x56\x6d\xeb\xe7\xb4\xe8\x5f\xb3\x59\xc3\x33\xb5\x8b\x73\xbd\x1f\x56\xb8\x93\x17\x42\x32\xe7\xb4\x78\xf0\x68\x8a\xd1\x94\x7f\xa2\x2a\x0a\xb7\xb3\xaa\x67\x2e\x2f\xa7\xc8\xe5\x94\xa5\xa8\x0e\xfb\x5f\x30\x91\x16\x92\x5b\x7d\x71\x5b\x63\xf1\xf0\x5f\x6f\x6b\x2c\xee\xba\xb6\x35\x16\xdb\x1a\x8b\x6d\x8d\xc5\xdd\xd7\xb6\xc6\xc2\x5d\xeb\x77\x83\x92\x6d\x8d\x45\xc3\xeb\x79\xc5\xf9\xb7\x35\x16\x0f\xba\xb6\x35\x16\x8b\xd7\xb6\xc6\xe2\x96\x6b\x5b\x63\x71\xcb\xb5\xad\xb1\xd8\xd6\x58\x6c\x6b\x2c\xb6\xd9\x62\xf7\x8e\xb5\x99\xd9\x62\x64\x5b\x63\xe1\xae\x6d\x8d\xc5\xb3\xc8\x89\x21\xdb\x1a\x8b\x95\xae\x6d\x8d\xc5\xb6\xc6\xa2\xc9\xb5\xad\xb1\x80\x6b\xeb\x7b\xd9\xd6\x58\xf8\x6b\x5b\x63\x81\xd7\x1f\x47\x6b\xde\xd6\x58\x6c\x6b\x2c\xb6\x35\x16\xdb\x1a\x8b\x3b\x67\xb1\xad\xb1\x78\x0e\xf6\xa4\xef\x81\xd7\xbe\x66\x60\xf7\x48\xe6\x45\x69\x18\xb9\xf0\x43\x06\x2d\x12\x05\x03\xd7\xb1\x46\xd0\x3e\x85\x27\x91\x62\xc4\xc7\x4e\xb2\x1f\x60\x83\xb9\x7e\x78\x9f\x7e\xd4\xd4\xed\x09\xe6\xef\x64\x3c\xe7\xcd\x0a\x39\xc8\xc2\xc2\xbc\x81\xb1\xa2\x20\x8f\xdd\x49\x39\xfd\x08\x5b\x84\xe6\xb2\xc4\xa6\x7c\x89\x5b\xbf\x40\x42\x0c\x85\x6d\xdc\xca\x90\x6e\x4c\x9c\xaa\x22\xe5\xbc\x03\x6b\xa3\xa0\xc6\x30\x25\x5e\x91\xff\xde\xfb\xf0\xf9\xef\xfd\xfd\xef\xf6\xf6\x7e\x79\xd1\xff\xcf\x5f\x3f\xdf\xfb\x30\x80\xff\xf8\x6c\xff\xbb\xfd\xdf\xfd\x1f\x9f\xef\xef\xef\xed\xfd\xf2\xe3\xdb\x1f\xae\xce\x4f\x7e\xe5\xfb\xbf\xff\x22\xca\xfc\x1a\xff\xfa\x7d\xef\x17\x76\xf2\xeb\x8a\x83\xec\xef\x7f\xf7\x1f\x8d\xa7\xdc\x5a\x25\xee\x4e\x21\xee\x48\x1d\x7e\x14\x65\xd8\x45\x87\x3b\xda\x8b\x17\x6e\xb4\xf9\xdd\xe8\x0e\xac\xbb\x76\xa3\x97\xa6\xa0\xe6\x85\x71\xb8\x26\x32\xe7\xc6\x2a\x87\x56\x1f\xa4\x71\x5e\x18\x37\x35\xa3\xd4\xc9\x01\x48\xa8\xa4\x06\x7b\x84\x86\x9c\xaa\x28\x4f\x5b\x7a\xcd\xcf\xf5\x5e\x0d\xfe\x0a\xd8\xcf\xfd\x94\x8d\xb8\x60\x2e\x0e\xb6\x95\x0d\xf7\x5f\x5b\xd9\xf0\x1c\x65\x83\x66\x49\xa9\xb8\x99\x1d\x49\x61\xd8\xc7\x46\x1e\x96\xba\x68\xb8\xac\x0f\x48\x70\x9f\xb9\x2a\x4a\xf7\x1d\x91\x05\x26\x50\xce\x95\xb3\x86\x14\x5c\x55\x0a\x30\x30\xb1\x4a\x86\x19\xb4\xfe\xc0\xee\x81\x9c\xc8\xf9\x87\x78\x7b\x0e\xcd\xcc\xdf\x4a\x3e\xa5\x99\xb5\x76\xab\x5f\x9c\x83\x05\x13\xff\x68\xd5\x3d\x6f\xa8\xbe\xae\x36\x3c\xeb\x5b\x1d\x3a\xcc\xf9\xc0\xbf\x12\x7c\xc4\x3e\x9a\xa7\xa8\xa5\x81\x82\x74\xae\xf8\x94\x67\x6c\xcc\x4e\x74\x42\x33\x90\x6b\xdd\x9c\x15\x87\xb7\x8c\x0e\x0b\xaf\x64\xa6\xc9\xcd\x84\x41\x77\x65\xea\x5d\x00\x50\xe1\x32\xa6\x5c\x90\xdc\x2e\x51\xe1\x7f\xac\xd1\x97\x60\xc5\x7f\x41\x95\x5d\xe0\xe0\x33\x00\x13\x79\x28\x65\xe6\x52\x87\xb3\x59\x35\xbe\xcb\xbd\x17\xf2\x1f\x82\xdd\xfc\xc3\x8e\xa6\xc9\x28\xa3\xe3\xe0\x2a\xd0\xcc\x2c\x78\xfb\xaa\xa1\x6f\x7d\x01\xc8\xcb\x2d\x19\xa1\xd9\x0d\x9d\xe9\xca\x71\x12\xf7\x01\x7f\x45\x5e\xee\x03\x3b\x53\x4d\xc2\x18\x29\xf9\x62\x1f\x62\x89\x47\x87\xe7\xff\xb8\xfc\xfb\xe5\x3f\x0e\x8f\xdf\x9e\x9e\xb5\x3b\x29\xec\xbb\x33\x2a\x1a\x8d\x91\xd0\x82\x0e\x79\xc6\xdb\x1c\x10\x0b\xd9\x26\xf1\xa0\x70\x04\xa7\xe9\x41\xaa\x64\x81\x74\xf2\x3e\xaa\xea\xa4\xac\x5b\xc1\x71\x65\x32\x2c\xcf\xa8\x3e\xe0\x58\x51\x61\x2a\x67\x4d\x45\x72\x55\x0a\x6b\x58\x3f\xf1\xc4\x7c\x9a\x76\x97\x94\x7f\x98\xa6\x2c\xad\x51\xef\xd9\x25\x01\x1e\xf9\x97\x9b\x55\x35\xda\xe4\xfc\xdd\xe5\xe9\xff\x33\xc7\x86\xb3\xa2\x5d\xce\x53\x37\x75\x61\x4a\x16\x9d\xad\xee\x85\xab\x3b\xda\xae\xef\x46\xac\x6f\x38\xab\xba\x89\xb4\x5f\x94\xa2\x0e\xe3\x51\x8d\x4f\x72\x99\xb2\x01\x39\x0f\x5e\xfa\xfa\xb7\x51\x79\x2f\x55\x8c\xd8\x5b\x84\xe1\x34\xcb\x66\xb1\x82\x64\x24\x16\xd3\xd4\x2a\x93\x63\x39\x3c\xa2\x99\x6e\x29\x4c\xdb\x9c\x4c\xf6\x10\x7e\x6b\x8d\xc9\x4e\xa8\x19\x46\x23\x29\x13\xd2\x38\xad\xd4\xce\x12\x8a\xb5\x95\x4c\x08\x5a\xae\x51\x5a\x54\xed\x74\xd1\xe8\xe8\xf7\x07\x13\xd7\x9e\x56\xe7\x61\x64\xf4\xf2\x96\x9a\xcd\x6b\xb7\xee\x60\xaa\x6c\x59\x3b\xba\x62\x34\x85\x9a\xb4\x82\x9a\x09\x66\x35\xe4\x54\x5f\xb3\x14\x3f\x70\x7a\x4d\x70\xf3\xdb\x11\xc3\xa3\xae\xec\xbc\xbd\x4f\x1f\xf4\x19\xcc\xb5\x80\x58\x40\x33\xd0\x0d\xd2\xc5\x16\xb0\xef\xf4\x4e\x64\xb3\x0b\x29\xcd\xeb\x50\x8b\xd5\xc9\x02\xfe\xec\x34\xc5\xba\x1b\x16\x54\x29\x48\x42\x48\xfb\x40\x4c\x60\xe9\xb8\x0c\xec\xb8\x5a\xb0\x35\x33\xb4\x2a\xc5\xa1\xfe\x41\xc9\xb2\xf1\x09\xb0\xa0\x68\xfd\x70\x7a\x0c\xfb\xb8\x74\x51\x36\x61\xd4\x0c\xaa\x4e\x17\x01\x83\x82\x4e\xfb\xde\xc5\x09\x63\x8e\xac\x42\x3a\xe4\x2d\x9d\x11\x9a\x69\xe9\x95\x63\x2e\x96\x1a\x50\xce\x3a\xb3\x5f\x0f\xa5\x99\x2c\x98\x65\x96\x9d\x17\x7f\xd7\x8b\x82\x6e\x15\x82\x11\x17\x0b\x3f\x37\xf4\x9a\x69\x52\x28\x96\xb0\x94\x89\xa4\xe5\xaa\xad\x3b\xd4\x04\x2b\x7f\x26\x85\xdd\x16\x9d\xac\xfd\x69\x88\x31\x82\x23\xac\xbe\xd2\x10\xad\x74\x76\x07\x85\x98\x25\x6c\x8a\x52\x33\x85\x01\x56\x55\x32\x5c\x88\x1f\xcb\x21\xcb\x98\x41\x63\x08\x70\x27\xa8\x41\x43\x9a\xe7\x74\xcc\x08\x35\x81\x51\x8c\x24\x4c\x68\x2b\x6e\xd0\xf5\x66\x48\x2a\x59\x55\x40\x49\x35\x79\x7f\x7a\x4c\x5e\x90\x3d\xfb\xac\x7d\x58\xfe\x11\xe5\x19\x84\x33\x0d\x55\xf3\x73\xe4\x23\x3f\x04\x4c\x09\x78\x8f\x48\x85\x5b\xb4\x47\x84\x24\xba\x4c\x26\x7e\x4e\xd6\xe2\xf2\x06\x9b\xcb\xe7\x03\xa7\xfe\x33\x64\xd5\xd6\x02\xe6\xbd\x66\xaa\x33\xf9\xf2\xbe\x81\x7c\x89\x55\x08\xcb\x73\x75\xea\x21\x63\xe5\xcc\xd0\x94\x1a\xea\xe4\x4e\x55\x75\xfd\x1c\x97\x74\xdd\xd2\x47\xb3\x37\x5c\x94\x1f\x31\x63\xa5\x3b\x23\xff\xf2\x04\x86\x25\x89\x27\x1a\x2c\x1a\x2d\x8a\x8c\x63\xbd\xf3\x5c\x06\xd5\x69\x6d\xa9\x7b\xb7\xa8\x48\xb0\xcd\x69\x96\x49\x2b\xde\xec\xc9\x4e\x45\x2a\xf3\x85\x87\x59\x05\x8a\xd5\x80\xee\x06\xe4\x59\x32\xcf\xda\xdd\x11\x19\x9b\xb2\x16\x98\x2e\xf3\xb8\x7c\x76\x34\xab\x8b\xf9\x05\x85\xe1\x49\x46\x87\x2c\xc3\x93\x05\x19\x48\x2f\x32\xd0\xba\xb3\x10\x95\xcc\xba\xab\xc1\xb8\x90\x19\xc3\xb4\x1e\x4f\x08\x3b\xfc\x93\xa0\x03\x0c\xd2\x15\x1d\xc0\x90\xa9\xd1\x01\x4c\xb2\xa7\x40\x87\xb2\xc5\x41\x4b\xe6\xe9\x60\x4f\xed\x3a\x1d\xe0\xe8\xdc\x74\x3a\x68\x96\x24\x32\x2f\xce\x95\xb4\x26\x57\x67\x47\x8b\x1b\xb6\x8a\x15\xa1\x4d\xbe\x24\x09\x07\x44\x79\xfd\x66\xaa\xa2\x84\x3e\x6a\x50\xc6\xfb\xac\xbe\xff\x5f\xdc\x21\xd9\x8a\x9e\xf9\x73\xc8\x8f\x52\x0b\x2b\xd9\x5f\xba\x2f\x9e\x38\x9c\x40\x0b\x2f\x59\x27\x87\x89\x4c\x68\x06\x90\x7b\xed\x38\x86\xcc\x73\xcd\xfc\xc0\x51\x16\x26\x84\x96\xe0\x33\x1f\xf7\x07\xf4\x35\xf8\xc4\xf9\xbe\x84\x4c\x59\x14\x82\xc4\xf4\xd1\x2b\xcc\xd6\x83\xfb\x7c\x02\xa8\x3d\xd5\x7d\x34\x30\xad\xfd\xda\x48\x87\x00\xf3\x36\x00\xf9\xd9\x09\x32\x91\x72\x31\x06\x8f\x4e\x8f\x28\x96\x61\xea\xa8\xdb\xc3\xd7\x68\x7e\xed\x02\x47\xfb\x41\x3d\x3b\xfb\x47\x83\x26\xc4\xa5\x70\x23\x83\x93\xc3\xeb\x37\x23\x94\x96\x5c\x93\x9d\x37\x9e\x00\x2d\x90\xcf\x36\xf1\x80\xd8\xc1\x37\x0c\xab\x89\x3e\xb6\x6b\x2e\x52\x97\x65\x59\x23\x56\xc0\xa8\x45\x2d\x14\xf2\x77\x79\x1a\x8b\x86\x57\xe4\x83\x20\x81\x58\xa4\xdf\x98\x3d\x2e\x50\x61\xf5\xee\xa5\xfe\xdd\x2e\xbf\xf0\x90\xf9\x61\xde\x0b\x58\x7b\xfb\xdc\xbe\x35\x7b\x17\xef\xf3\xef\xb2\xb3\xce\x75\xbd\xe1\x22\x95\x37\xba\x6b\x1b\xe2\x67\x1c\xd6\x2b\xd4\x89\x65\x6b\xc3\xc5\x58\xc7\x76\x04\xcd\xb2\x9a\x1b\x76\x99\x21\xe1\x57\x38\x20\x12\x2f\x2a\xf0\x73\xd9\xe1\x5b\x23\xe0\x01\xd7\x38\xd7\xf4\x48\xd9\x57\x31\x9c\x66\x97\x45\x73\x68\x36\x32\xcf\x06\x3f\xbc\xbd\x3c\xac\x0f\x6d\xe5\xd9\x0d\x20\x5e\x5b\x62\xdb\xef\x09\x4d\x73\xae\x35\xb8\x81\xd8\x70\x22\xe5\x35\xd9\xf3\x69\x1b\x63\x6e\x26\xe5\x70\x90\xc8\x3c\xca\xe0\xe8\x6b\x3e\xd6\x07\x8e\x69\xfb\x76\xf6\xfb\x84\x8b\x2c\x64\xa3\x80\x19\x29\x8c\xf6\x6e\x0c\x78\x48\x12\x66\x01\x6b\xeb\xf0\x3a\x5d\x94\x79\x71\x9a\x88\xd0\xc9\x59\xb6\x7e\xc0\x99\xc5\xe5\x39\x6b\x89\x9d\x71\xcf\x12\xc1\xbb\xbb\xd2\x94\xb8\x8c\x6a\x29\x1d\x51\x7b\x5b\x3b\x91\x9c\x76\x90\x30\xdd\x1d\x2a\xcf\xdf\xaa\x31\x49\xca\xb0\x7a\x82\x41\xd6\x09\xbd\x35\xb9\x09\xbc\xb2\xbb\x50\x84\xe7\x7e\xba\x1b\x6b\xb4\x10\xf5\xc1\x32\x0f\x6b\x0f\x64\xc5\x84\xf6\xd1\x48\xb6\x22\x09\x64\x98\xd7\x01\x26\x52\x48\x97\x9c\x6e\x4f\x41\x29\x80\xa5\xc1\x5a\xc0\x40\x10\xac\x89\x93\xb1\xd1\x54\x8f\xaa\xf8\x60\x1c\x43\x82\x22\x1e\x04\x01\xa8\xe6\x70\xc3\xcd\xc4\x23\xdc\xd7\x02\x4e\x30\x13\xc5\x34\x44\x0f\x04\x61\x4a\x49\xe5\x12\x61\xbc\xd7\x16\x46\x02\x51\x0c\x99\x34\x96\x49\xa8\xfd\x6b\x57\xc7\x21\xca\x0a\x02\x17\xf2\xc4\x2c\x37\xb1\xd1\x88\x25\xa0\x29\xc5\x04\x46\xb1\xbb\x57\x21\xf7\xb9\xec\x6e\xcb\x60\x0e\x42\x37\xe7\x1f\xed\x53\xe2\x5f\xc5\xc1\x50\x87\x98\xb7\xfc\xeb\xfd\x01\x21\xa7\x22\x64\x4e\xf6\xec\x2a\xc6\x77\xfa\x94\x1f\x63\x5f\x31\xc6\x5f\x86\x17\x88\xfd\x4e\x56\xbd\x53\x65\x07\x1c\xdf\xc6\x19\x4c\x62\x87\x70\xa7\xe2\x00\x1c\xc3\x6e\x50\xbb\xf4\xfe\x10\x6f\xe3\x28\xb6\xb7\x3c\x96\xb3\xf8\x69\x9c\xf4\xa4\xad\x9c\x73\x25\xf1\x1d\x81\xe2\x5e\x46\xa3\x45\xea\x77\x08\x37\x9d\xcb\x14\x21\x31\x42\x49\x3f\xf4\xb2\x00\x88\x0e\xfe\x6f\xaf\x60\x55\x4a\x9a\x90\x98\x95\x1d\x63\x65\x38\x4c\xd0\x94\x58\x5d\x39\xf3\xb6\x7d\x5e\x64\x0c\xaa\xe7\xa2\x91\xab\xc2\xc0\x08\x45\xb7\x17\x26\x52\x01\xf1\x3a\x84\x8e\x1e\xf9\x17\x6c\xca\x90\x00\xe8\xc1\x03\xce\xc3\xcf\xd1\xc4\xe3\xda\x43\x6a\x43\x65\x9b\x91\xde\x75\x40\x52\x3e\x1a\x31\x9f\x68\x68\x4d\x3f\xaa\x68\x6e\x45\xbc\x26\x8e\x04\x43\x36\xe6\x98\xc9\x16\x04\xdb\xae\xae\x2a\xe0\x7b\x28\x0c\xb9\x21\x39\x1f\x4f\x90\x51\x08\x85\xca\x48\xe2\x43\x6a\x99\xa4\x29\x01\xde\x96\x8a\xdc\x50\x95\xdb\x73\x83\x26\x13\x88\xcf\x51\x41\xd2\x52\x01\x4c\xa4\x61\x34\x9d\xf5\xb5\xa1\xc6\xaa\xba\x4c\x39\x8b\xd0\xcf\x7f\x0b\x25\x7c\xe7\xb5\x85\x12\xbe\xfd\xda\x42\x09\x6f\xa1\x84\xb7\x50\xc2\x77\x5f\x5b\x28\x61\x77\xad\xbf\xda\x97\x6c\xa1\x84\x1b\x5e\xcf\x0b\xce\x66\x0b\x25\xfc\xa0\x6b\x0b\x25\xbc\x78\x6d\xa1\x84\x6f\xb9\xb6\x50\xc2\xb7\x5c\x5b\x28\xe1\x2d\x94\xf0\x16\x4a\x78\x0b\x8a\x76\xef\x58\x9b\x09\x8a\x46\xb6\x50\xc2\xee\xda\x42\x09\x3f\x0b\xe8\x27\xb2\x85\x12\x5e\xe9\xda\x42\x09\x6f\xa1\x84\x9b\x5c\x5b\x28\x61\xb8\xb6\xbe\x97\x2d\x94\xb0\xbf\xb6\x50\xc2\x78\xfd\x71\xb4\xe6\x2d\x94\xf0\x16\x4a\x78\x0b\x25\xbc\x85\x12\xbe\x73\x16\x5b\x28\xe1\xe7\x60\x4f\x6a\x93\xf2\x46\xc8\x67\xab\x00\x55\xb8\xcc\x90\xa8\xb4\x75\x58\x8e\x46\x4c\x81\xe4\x82\x27\x2f\x64\x21\x04\x40\xab\x20\xcb\x5c\x9e\x01\xc0\xe2\x29\x46\x53\x97\xf0\x7e\xcb\xcf\x5d\x2d\x2d\x20\x94\x55\x99\x9a\x27\xef\x5e\x77\x83\x8a\xd1\x2e\x47\x11\xe6\xfc\x4e\x24\xed\x73\xd5\x2a\x82\x2f\x2b\xc0\x70\x74\x4f\x32\xa9\x5d\x86\x29\x10\x2b\x99\x50\x21\x98\x37\x1e\xb9\x01\xa7\xcc\x90\x31\x41\x64\xc1\x04\xca\x6f\x4a\x34\x17\xe3\x8c\x11\x6a\x0c\x4d\x26\x03\xfb\x24\xe1\x89\x5d\x65\x83\xba\x4f\xb4\x51\x8c\xe6\x3e\x2f\x36\xa7\x1c\x87\x22\x34\x51\x52\x6b\x92\x97\x99\xe1\x45\x18\x8c\x68\x06\x09\xed\x78\x50\x05\x62\x40\x7a\x49\x95\x42\xda\xab\x9e\xe6\xa6\x25\x63\x50\x20\x30\x5d\x7b\x80\x83\x9a\x17\x66\x16\xf2\xe8\x18\x19\x71\xa5\x0d\x49\x32\x0e\xa7\x35\x3c\x11\x6b\x07\x61\xbc\x9e\x3f\xab\x85\x9b\xa9\x76\x53\x15\x29\xa8\xad\x85\xd1\x98\x95\x56\x0d\xe8\x86\x4a\xb9\x76\x6a\xbe\xee\x11\xea\x21\x6f\x90\xd0\x7e\xa6\x40\x6a\x7f\xb2\xe0\xe8\xee\xa3\x68\xb8\x08\x27\xaf\x4a\xdb\xab\x18\x1d\x52\x8c\x3d\x73\xf6\x6a\xd9\xd4\x95\x42\x01\xe9\x2e\x0b\xdb\x00\x16\x40\xb0\xa9\xe5\x01\x96\x30\x7b\xbe\xd2\x5b\xb8\xfe\x93\x33\x7d\x74\x28\xbe\x65\x5a\xd3\x31\x3b\x6f\x18\xb5\xb8\xcd\x22\x83\xc0\x45\xb5\x30\xc0\x0a\x19\x96\xa7\x85\x4f\xaa\x34\xa7\xba\x1a\x44\x72\x9c\x53\x50\x7e\x6e\x14\x37\x86\xc1\xa2\x02\x38\x12\x04\x3e\xe7\x0b\x50\x77\xe7\x92\xa5\xde\xfa\x41\xaa\x1f\x5b\xa1\x2e\x52\x4c\x5d\x1a\x32\x32\x54\x9c\x8d\xc8\x88\x43\x3e\x14\x64\x28\xf5\x10\xee\x83\xa2\x47\x41\x6b\x6b\xef\x4a\xe1\x75\x59\x3f\xaf\x01\xf9\xd9\x4d\xcc\xa8\x52\x24\x34\x02\x01\x84\x12\x2d\x3e\x22\x63\xc8\x70\x72\xda\xe2\x57\x2f\xfe\xf3\x2f\x64\x38\xb3\x47\x1a\x68\x56\x46\x1a\x9a\x85\x97\xcc\x98\x18\x5b\x5a\xe1\xf6\xac\x17\x19\x05\x0a\x00\x8a\x39\x4e\xfc\xe5\x17\xd7\xc3\xfa\x19\x7b\x90\xb2\xe9\x41\x44\xbf\x7e\x26\xc7\xcb\x70\xe1\x9b\xa7\x4c\x36\x34\x89\x96\xb0\x99\xcc\x78\x32\x6b\xcd\x68\x1e\x77\x86\x4c\xe4\x0d\xea\xfa\x4b\xb8\xa7\xca\x81\x2c\x64\x51\x66\xe8\xc1\x7e\x1d\xca\xf3\x4a\xcd\x16\x6b\x70\x96\xee\x0b\xf0\xb9\xba\x21\xe6\xf1\x62\x31\xb1\xcd\x3f\x52\xba\xdc\x6e\xe7\x15\x0c\xf0\x33\x60\x08\xbd\xa6\x59\x36\xa4\xc9\xf5\x95\x7c\x23\xc7\xfa\x9d\x38\x51\x4a\xaa\xfa\x5c\x32\x6a\xa5\xe5\xa4\x14\xd7\x88\x5c\x1d\x4a\x84\xe5\xd8\xaa\x56\x45\x69\x7c\x22\xf1\xb2\x17\xc6\x82\x53\x2f\x84\xbd\x19\x54\x8d\xc2\x3e\xf2\xca\xd6\x71\xa5\x12\xc8\x91\xf1\xf8\x3a\x66\xb6\x2f\x5e\x7c\xf5\x35\xb2\x2e\x91\x8a\x7c\xfd\x02\x92\x1f\x75\x0f\x37\x31\xc8\x36\x7b\x50\xe4\x34\xcb\xac\xd9\x10\x33\xa5\x25\xf4\x32\x26\xfc\xe4\x3c\x68\xda\xb3\xdb\xca\xaa\xd4\xd5\xd5\xdf\x41\x8f\xe2\x46\xb3\x6c\xd4\xc3\xaa\x80\x60\xd6\xec\xc2\xc1\xb0\xeb\xa4\x0f\x94\x66\x6c\x80\x02\x34\x95\x59\x99\xb3\x63\x36\xe5\x5d\x34\xaf\xa8\x8d\xe6\x4d\xfd\x8c\x6b\x28\xc0\x18\x66\x32\xb9\x26\xa9\xfb\x32\x4a\x63\x99\x87\x50\x6d\x4e\x85\xa6\x09\x3d\x2d\x12\x79\x6e\x7d\xff\x5a\x0a\x4f\x4e\x8b\x22\xe4\xe8\x2b\x7a\x53\x23\x06\xec\x49\xa8\xf7\x6d\x89\xa7\xd0\xda\xcd\xdc\xd6\xc9\xdc\x77\x6f\x64\xe5\x66\xe3\x21\x1a\xa7\xb0\xb4\xf7\x51\x57\xb3\x6f\xee\x98\xac\x31\x44\x35\xa0\xdf\x0d\x05\xfc\x37\xa6\x67\x2f\x54\x25\x85\xc2\x96\xc0\x18\xa8\x00\x58\xf6\x01\x91\xdc\xdc\xe1\xda\x81\x77\xb3\x5d\xfe\x52\x8d\x2e\x22\x78\x95\x73\x6a\x9c\x42\xe8\xdd\xd7\x94\x14\x4c\x69\xae\xed\xb9\xfc\x13\x6c\xa8\xa3\x8c\xf2\x3c\x72\x01\xae\x87\x08\xb8\xb9\x01\xf9\xb2\xbd\xa4\x3c\x97\xa9\x1b\x10\x44\x21\xa2\x7e\x2e\x51\x6b\xeb\x5a\x6d\x87\x07\xea\xba\x45\xe5\x4f\x15\x35\xeb\x92\xd2\x7e\x12\x44\x25\xde\xf5\x9c\x04\x24\xbc\xdf\x53\x95\x8f\x61\xf2\x1d\x89\x01\x10\x8c\x6e\x71\xeb\x92\xb0\x66\x3c\xe2\x46\x89\x54\x7a\x67\x07\x0e\x08\x86\xd4\xed\x9e\x70\x3f\x25\xbb\xaf\x76\xd7\x2a\x24\x91\x44\x4a\x16\x74\xdc\xaa\x87\xc1\x1c\xa5\xe6\x87\x8d\x0b\xbd\xad\x19\x04\xdf\x07\xd8\x21\xb8\x8b\xa5\x15\x10\x05\xc0\x8c\x60\x74\xd4\x13\xd8\x19\x08\x58\x0f\x79\x43\x67\x84\x2a\x59\x8a\xd4\xf9\x97\x82\x83\xef\xed\xdc\x83\xcf\xa4\x60\xde\x71\x3e\x5f\x27\x0e\x1e\x7d\x2e\xc8\xcb\xc1\xcb\x17\xcf\xe5\xa4\x82\x37\x9c\x3b\xa9\xce\xc2\x49\x85\xf2\x69\xad\xef\xea\xd1\x8e\x3b\x7a\xdf\xb7\xce\xc5\x52\x81\x19\x73\x0f\xd6\x0a\x1f\xdd\x28\x6e\x58\xd4\xdb\x68\x0f\x0c\x17\x6b\x1f\x46\x55\xd1\xfb\x1d\x62\x78\x77\x53\x86\xae\xcb\xe1\x23\xca\x2d\x27\xa0\x60\xbb\x2d\xf3\x70\xe9\x3b\x44\x58\x4c\xa8\x9d\x1d\xb2\x87\x77\xee\x62\x65\xe0\xfe\x5a\x59\xcb\x11\xed\xe4\x63\xd1\x02\x63\xae\x46\xb8\x93\x8f\x05\x05\x1f\x5c\xd1\x21\x05\xbf\x67\x13\x3a\x65\x50\x11\xc9\x33\xaa\x32\x88\x39\x5e\xe2\xdc\xc9\xb0\x34\x84\x89\x29\x57\x52\x40\x82\xcf\x94\x2a\x0e\xa8\x14\x8a\x41\x65\xb5\xb5\x45\xff\x63\xef\xa7\xc3\x0b\x48\x68\xd8\x77\x25\xe1\x6e\x96\xa5\xf6\xf0\x11\xf1\x4c\xa2\xe1\xee\x5d\x3e\x3f\x0f\x4b\x43\x90\xb9\x7e\x5e\xf6\x39\x79\x69\x4a\x04\xc4\xff\x98\x64\xa5\xe6\xd3\x75\x49\x12\x57\xaa\x7a\xcc\x1b\xad\xf3\x5c\xd9\x6c\x45\xa8\x85\x0a\x58\x70\xad\xc3\xd1\x72\x0f\x02\xeb\xae\x0e\x98\x55\x71\x0c\xdc\xb9\x9e\x5c\x2d\x3b\xe6\xe2\x79\xc8\xb2\x05\x15\x02\x70\x1b\xd6\xeb\x84\x12\x32\x65\x0f\x47\xbd\xa8\xa7\xf7\xb8\x21\x30\x66\x1e\x95\x03\xea\x64\xc2\xd2\x12\xe0\x55\xb8\x46\x70\x40\x6b\x3e\xd0\x0a\xc6\x4a\x40\x7f\x86\xd3\x51\xa8\x0d\x16\x7d\x70\x0e\x22\xcd\xfd\xef\x95\xaf\x24\xf6\x1f\xe8\xb9\x11\xc1\x28\xb5\x63\xf5\x08\xd5\xba\xcc\x71\x4b\x20\xfc\xf6\x88\x1b\x1d\x7a\xeb\x79\xed\xd8\x6e\x8c\x07\x56\x67\xb5\xa0\xef\x25\xcb\x80\xb9\x5a\xd0\x78\xf7\x2c\x1a\x07\x09\xad\xfd\x5f\x8e\xe1\x5c\xc2\x04\x44\xdb\x42\x52\xa8\x04\x2f\xe9\x88\x43\xfb\x0a\xea\xe8\x7d\xb9\xe4\x97\xa8\x3a\xe0\x1d\x00\xcf\x40\x87\x2c\xd3\xf3\x03\x0d\xab\x45\x71\xb0\x7e\x8e\xf0\x2d\xbb\x03\x52\xad\xf9\x58\x40\xdf\x30\x3b\xda\x03\x3b\x84\x35\xb6\x99\xba\xe8\xfe\xd7\x58\xaa\xd5\xb2\xb0\x72\x5a\xf4\x9d\xd5\x6b\x64\xce\x93\x07\x8c\x24\xa7\x4c\x4d\x18\x7d\xa0\xc1\x37\x17\x17\x73\x63\x54\xad\x63\xb4\xab\x72\x74\xfb\xc6\x3f\xc4\xee\x2f\x99\x40\xb6\x3d\xfa\xe9\x7d\xf6\x13\x05\x16\xc1\xc6\x94\x63\x3e\x65\xc2\x03\xff\x1d\x65\x34\x34\x1f\xf3\x50\x49\x0e\x7c\xb0\x34\x32\x44\x3e\xac\x39\x55\xa1\x97\x41\xa0\xd4\x39\x5d\xe3\x71\xa2\x5b\x5c\xeb\xb2\xcc\x83\xf5\xaf\x72\x27\x04\x1f\xb0\xf5\x47\xaf\x7a\xa5\xdc\x1b\x68\x35\x78\x1c\x92\x40\x88\x2c\x74\x05\xc5\x40\xc4\xfd\x8f\x70\x71\x6d\xcb\x8b\xcb\x86\x71\x7b\x2e\xe0\x38\x55\x84\xcd\xac\xf2\x3a\x23\xd0\x5c\xe2\x74\x54\x7f\x12\xaf\x41\x5f\x42\x36\x36\xec\xe1\xea\x50\x39\x97\xe9\x65\xc1\x92\x1e\x09\x4b\x19\x77\x6e\x73\x4e\x1b\x4c\x6d\x89\xf0\x1b\xf1\x38\x52\x8a\xe9\x42\x22\x02\x67\xfc\xd8\xb8\x41\x28\x37\xb5\x88\x3d\x36\x22\x00\x0b\xad\xc2\x4a\xf8\x37\x53\x72\xa9\x20\x18\x73\x33\xb8\xfe\x1a\xa4\x00\x13\x13\x2a\x12\x14\xc0\x07\xd7\xac\xd0\x07\x9a\x8f\x71\xd3\xff\xe5\xeb\xaf\x41\x02\x78\x92\x1c\x5c\x9c\x1c\x1e\xbf\x3d\x19\xe4\xe9\x12\x23\xce\x63\x7d\x41\x58\xec\xc7\xb0\x91\xc8\xf4\xe5\xe0\xe5\xd7\x18\xb7\xe7\x1a\x01\x48\x22\xf8\x2f\xac\x49\x5b\xc4\xfe\x3a\x97\x69\xa0\x9b\xcb\xdb\x7a\x60\x34\x72\xad\x32\xe8\xc9\xf4\x1d\x6d\x98\x51\xdb\x36\x8b\xb6\x55\xe6\x6c\x87\xd9\xb2\x85\x62\x56\xbd\xe1\x52\x34\x89\x33\xd7\xed\xbb\xb9\xa1\xbc\xf3\xde\xfd\x65\x05\xb1\x7f\x9a\x18\x5b\xd9\xac\x51\x5e\x67\xf2\x06\x72\x43\xb8\x54\xdc\xcc\x06\x00\xd5\x23\x47\xe4\x8c\x4d\x99\xea\xf9\x51\xdf\xd8\x9b\xce\xc3\x3d\xb1\x01\xb1\xec\x8e\xa8\x2b\xce\x6d\x1b\xb5\x47\xc6\x71\x1a\xc2\x99\x14\xe7\x61\x76\x61\x18\xb7\xf3\xfa\x90\x31\xf9\x29\x94\x33\x4f\x86\x16\xeb\x80\xe8\xc7\xee\x05\x5c\xa3\xe4\x9f\xa8\xe2\xb2\xd4\x04\x7d\xe2\x31\xe6\x20\xc6\xd1\x03\x89\x40\x35\x73\x5e\xae\x30\x48\x48\x8f\xf7\x8e\xae\x40\x9f\xc3\x70\xde\x1c\x2d\x3f\xd2\xb8\xb1\x8b\x3e\xf5\x8f\x52\x3e\xdf\x67\x01\xae\x10\x0f\xb3\xa5\xe7\x97\x3f\x91\x75\x3c\x51\x18\xc6\xcf\x03\xce\x06\xab\xf0\xe3\x28\x13\x3e\xf6\x59\x65\xf0\xfe\xa8\xbb\x47\x9f\x06\x66\x6b\xb0\xa4\x4d\x76\x7c\xd3\xe4\xc6\x62\xfe\xfd\x5a\xb0\x45\x1d\xd4\x2d\xc6\x85\xf3\x69\xd5\xd5\x16\xdc\x41\x3e\x81\x43\xb0\x9f\x28\x6e\x78\x42\xb3\x1d\x38\xc2\xfc\x57\xd6\xf6\x36\x4c\xc5\xdf\x2a\x46\xcc\x8d\xc4\xa7\xd0\x8c\x5c\xb3\xd9\x8d\x54\xa9\xd7\x2f\xfc\x13\xab\xb5\xd0\xc6\x3f\x92\x33\x27\x0b\x10\x92\x4b\xe5\x4c\x91\x21\xf3\x6e\x84\xb9\x9b\x67\x03\x72\x28\x66\xce\x07\x2b\xe2\x4a\x0b\xaf\x46\x0c\x67\xa8\xe3\xa0\x16\x58\x63\x12\x77\x1e\xfa\xa7\x51\xac\x81\xb9\xcd\xc4\xb6\x0a\x64\xd8\x05\x5e\x7b\xf1\x36\xb6\x54\x2e\xd5\x1b\x76\x87\xc2\x44\x75\xe9\xbf\xfe\x24\xd2\xc2\xea\x67\x5c\x30\xad\x7f\xb0\x4b\xd9\x46\xdd\xae\x73\x07\x05\xb5\xca\x8d\x0d\x72\xb2\xca\xab\x62\x76\x4b\x51\xdf\xf3\xdd\x52\x28\xdc\x39\x20\x87\xf0\x01\x24\x06\x5a\xcd\x11\x4a\x09\xec\x60\xd6\xe2\x9d\xeb\x6d\x88\x77\x1c\x9e\x1d\xfb\x04\x2e\x54\x3a\x74\x1d\xb3\x11\x55\xfe\xfa\x4c\x40\x53\x75\x69\x44\xec\xb7\x92\x42\xab\xaa\x9d\x2b\x55\xb2\x9d\x66\xaa\x1e\xa2\x81\x1e\xfc\xf9\xeb\x17\xa0\xed\x85\xe7\x81\xd8\x7f\x60\x56\x74\xd3\x40\x61\xa3\x10\xe1\x7c\x74\xf4\x22\xe6\x07\x4f\x70\x6f\x37\x39\xcf\x1d\x14\x38\xc1\x32\x05\x9a\x37\xb2\x2f\x1b\x05\x04\x9b\x87\x02\xfb\xd5\x74\xaf\x1e\xde\x09\xa1\x4d\x14\xaf\xf6\xdc\x2e\x5c\x7d\xd5\x68\xb8\x2a\xd8\x68\xb9\x7a\x4e\x14\xb4\x47\xbc\x5d\xf7\x31\xe4\x04\x81\xe0\x02\xd7\x08\x88\xc7\x59\xd1\x22\xff\xa9\x81\xbc\x81\x74\xdf\xd6\xaa\xe2\xee\x05\x0e\x44\x8a\x4a\x37\x5c\x48\xe3\x0c\x6e\x6e\xd0\x3b\x9c\x56\x78\x08\x39\xf1\x3d\xf2\x4e\xbc\xc6\x24\xc1\x1e\x2a\x8a\xb5\x7a\x6e\xbc\xa9\xd3\x5a\x89\x83\x3f\xb9\x77\xef\xe3\x94\x9b\x08\x85\x87\x93\x3b\xb2\x7c\x5b\x9e\xfe\xbb\x17\x73\x63\xd5\x58\xaf\x66\xd9\xbb\x13\x92\x57\x1d\x14\x9c\xf8\x24\x63\x25\xcb\xc2\xbb\x93\xeb\xed\x10\x2a\x08\x61\xf4\x82\x62\xaf\x2e\x21\xeb\x43\x07\xe7\x0d\x30\x30\xab\x50\xc8\x53\x92\xa0\x79\xef\x4f\x5d\x4c\x05\x47\x0f\x88\x2a\x45\xbd\xd5\x60\xe4\x90\xdd\xc9\xd8\x98\x26\xb3\x9d\xfa\x73\x96\xb9\xbf\x39\x64\x28\xf3\x1c\xe1\x17\xf1\x79\x55\x62\x27\xe4\x7f\x82\xfe\x80\x7b\x0d\x54\x83\xd0\x0f\xd6\x1f\xf9\xbe\x32\x61\x42\x45\x0a\x6e\x9e\xc6\x9e\x85\x3f\x7f\xfd\xe7\xbe\x1b\xad\x8f\x53\x99\xaf\xf1\x72\xb5\x5a\x4b\xdd\x09\x5f\x35\x72\x05\x3c\x98\xff\x82\xb7\xbb\x53\xd5\xb3\xb6\xc4\x56\x9f\xe2\xba\x00\x76\x40\x7f\x48\x38\xfd\xc3\xd3\xef\xd2\xce\x96\x0f\x12\x7a\xd0\x87\x21\x3e\x09\xb9\xea\xf8\xd2\x6d\x76\xeb\x3c\x54\xf5\x44\x66\x29\xec\x2b\xe7\x64\xf2\x8f\x22\xd4\x18\xc5\x87\x25\x74\xcb\x11\x29\x40\x9d\xd6\xeb\x4c\x5c\x57\x8e\x01\xa9\x0a\x0d\x62\xe3\x19\x18\x7f\x40\xc8\x25\x73\x2d\x95\xa3\x79\x80\x58\xf6\xa4\x04\x43\x0a\x78\x11\x9a\xf7\xa1\xcd\xf6\x89\x1c\x52\xcd\x4f\xef\x51\xd3\xae\xbd\xf5\x4e\x36\x87\xc1\xa8\xd1\x65\xe1\x50\x0f\x68\x86\xf2\x70\xa1\xc7\xd7\xdc\x41\x06\x29\x58\x20\x11\x2f\x65\x1e\x62\xb6\x96\x16\x1a\x41\xfa\x80\x97\x7d\x3f\x57\x23\xa1\xbe\x69\xec\x5c\xb1\x37\x76\x88\x09\x2f\xd0\x04\xa7\x26\xfc\x1c\x02\x1f\xf6\xeb\xb8\x5c\x15\x3a\xe4\xbc\x44\x1b\x58\xde\x80\x13\xfc\x87\xd3\xe3\xb0\x47\xec\x5d\xaf\x2f\x81\x20\xe4\x8b\x81\x6b\xd7\x65\xc6\x3c\x25\x43\x0c\x76\x59\xf1\xba\x27\xd8\x0d\xa6\xcf\x39\x3f\x71\x50\xc3\xa7\x3e\xad\x0c\x47\x0b\x0f\x77\x43\xee\x93\x2f\x5d\xe7\x25\xa6\xbc\x11\x3f\xe4\x2e\xbd\xe6\xdd\xc5\xae\xf7\xce\xdf\xf4\xd5\x4d\xbf\xdf\xef\xdb\xb9\x7a\xa1\xbe\xa4\xa7\xad\xdd\xef\xb9\x4c\xf9\x68\x36\x47\x09\xcb\xe6\xd5\x23\x80\x23\xa9\x98\xb9\xd9\x35\x68\xb5\xd3\xce\x8f\xd7\xa6\x02\xd5\x31\xe7\x11\xac\x77\xd3\x32\x8f\xba\xdc\x58\x32\xa4\xb3\x8a\x35\x19\xb2\x09\x9d\x72\x09\x85\xa9\xc0\x63\x90\x30\x78\x0b\x5d\xbd\xcf\xc7\x2d\xba\xc3\x3a\x42\x9b\x9c\x7d\x2c\x24\x22\x29\x42\x42\x2e\x34\x89\x98\x0f\xa6\x80\x9b\xdb\x6e\x0a\xc8\x2b\xa8\x31\xbd\x53\x1f\x10\x4d\xc4\x13\x81\x0c\xa9\x1d\x32\x4c\x67\x6f\x6e\x99\xf7\x07\xe4\xd4\x71\x06\x98\x7f\x42\xba\x56\x13\x44\x0a\xc2\x8a\x09\xcb\x99\xa2\x59\xfd\x41\xae\x30\xe9\x95\x95\x96\xca\x32\x19\x06\x2c\x72\x5a\xa0\xb0\x04\xd9\x97\x72\xe5\x7b\x4d\x39\x11\x67\xf9\x75\xe7\x1d\x74\x7c\x7e\xcb\x35\x68\x2a\xce\xf5\x81\x7a\xe5\xce\xb2\xf3\xc8\x7f\x17\xb2\xbc\x1e\x5e\x39\xd4\xc2\x21\xdc\xa6\x3f\xf9\x9a\x3a\x93\xaf\xbb\xb7\xab\x8b\x23\x53\xd3\x26\x3d\x76\x7d\xb2\xa3\x5d\x5f\xf2\x6d\x47\xf2\x55\x3a\x92\xaf\x9b\x45\x9b\xf2\x63\xb3\xa4\xbf\x16\x2d\xc8\x37\xb2\xf9\xf8\xba\x57\xef\x89\x0b\x98\xb6\xad\xc7\x1f\xde\x74\x7c\x95\x66\x81\x8f\xde\x75\xfc\x19\x71\x4d\xc3\x8a\x8d\x76\x05\x0f\x2d\x7a\x8e\xaf\xb5\xdb\x78\xcb\xc4\xdf\xe6\x1d\xc6\xd7\xda\x5b\xbc\xe5\x5b\x37\x6f\x17\xbb\xd6\x4e\xe2\x2d\xdf\xba\x79\xf7\xf0\xb5\xf6\x0d\x6f\xf1\xd6\x6d\x7b\x85\x3f\xa8\x4b\x38\x9b\x73\x9e\x04\x8f\xf2\xa7\x15\x83\x6d\x8a\xd6\x1a\x36\xeb\x6e\x29\x79\x3b\x69\xd0\xbd\x6d\xcd\xdd\x65\x6b\xee\xcd\x90\xaf\xdb\x46\xdc\xed\x1a\x71\xb7\x91\x9c\x91\xbb\x18\xfc\x33\x6d\x35\xe9\xc3\x80\x0c\x01\xce\xe7\x5a\xb7\xed\x0a\x3d\xca\x19\x55\xae\xab\xd9\x9c\xe2\xdb\x83\xd5\x71\x39\x9e\x0b\x87\x0b\xe6\x01\xe5\x54\xcd\xc8\x0f\xa7\xc7\xa8\xff\xd6\xd4\x70\x21\xfd\xa3\x03\xa7\xa4\x0e\x20\x88\x8a\x59\x7b\xb5\xb5\x59\x8d\x75\xe3\x0a\xeb\xb6\xd8\x75\xad\x6c\xac\x99\x4e\x4c\xd6\x96\x25\x2e\x71\x14\x88\x11\x11\x1a\xf8\x43\xd0\x9c\xe9\x82\x26\x56\xfa\xb9\x3b\x20\x50\x1b\xd5\x4f\x0c\xac\xe5\xe2\x82\xa0\xa5\xa8\xf0\x9d\xfd\xfd\x7b\xf3\x07\xb2\xdf\x92\xfb\xae\x98\xc8\x7b\x65\x32\x5a\x8a\x64\xf2\x44\x56\x7c\x09\xf1\x82\x8f\x9c\x92\x6b\xa6\x04\xcb\xaa\x9e\xa1\xbe\xc6\x84\x35\xa9\x7d\x6f\x59\x3a\xdf\xae\x70\xbe\x45\xd1\x7b\xf3\x16\x40\x6d\xcb\xe5\xdb\x14\x21\x2f\xe9\x8b\x32\xc2\xb3\xc9\x4e\x69\xe6\xda\x65\x35\x1c\xbc\x75\x65\x68\xab\xa6\x3e\x75\x14\x08\x84\xb0\xdd\x88\x77\x73\x8d\xfa\xbb\x73\x13\xf9\x96\xd4\xa1\x20\xcf\x47\xb0\x1f\xea\x2a\xf2\x0a\xcb\x22\x0c\xc6\xae\x5e\x70\xc3\xd4\x31\x83\x9f\x86\x9b\x77\x2d\xfe\x9d\x71\xae\xe9\x91\xb2\x13\x37\x9c\x66\x97\x45\xd3\xf6\xbc\xb5\x75\xff\xe1\xed\xe5\x61\x7d\x50\xab\x7d\xdf\x40\x52\xad\x25\xaa\xfd\x3e\x4a\x0d\xbf\x61\xc3\x89\x94\xd7\x64\x2f\x4a\xb9\x99\x94\xc3\x41\x22\xf3\x28\xbf\xab\xaf\xf9\x58\x1f\x38\xfe\xec\xdb\x79\xef\x13\x2e\x00\x8c\x6d\x11\xc4\xce\x3f\x24\x09\xb3\x80\x35\x74\xb9\x49\xee\x18\x5c\x9c\x26\x08\x19\x4c\x85\x58\x87\x7d\xb0\xb8\x18\xcd\xbb\xc5\xdf\xb3\x20\xbe\x9a\x36\xc6\x1c\xba\x95\x6a\x68\xce\xaf\x85\x24\x93\xaa\xed\x7f\x07\x74\xf8\x5b\x35\x5a\x8c\x1d\xc2\x47\x35\x58\xd3\xca\xce\x08\x81\xb2\x5d\x68\xaf\xe0\x7e\xba\x1b\x3b\x9d\xeb\xe5\x28\x34\x2b\x26\xa1\x70\x4c\xc4\xb1\xf3\x21\x8b\xab\xc4\xa2\x82\x8d\xf9\x42\x31\x27\x30\xa3\xa9\x1e\x55\xfe\x13\x9f\x45\x36\xca\xe8\x18\xe0\xd9\xe7\xaa\x2e\x40\x3a\x42\x0b\x62\x6b\x3b\x44\x37\xfb\xd2\x3a\x0f\x3d\x0c\xc8\x87\x1a\x13\xba\x7d\x20\xcd\xa5\xe7\x43\xfc\xff\xd0\xce\xdb\xf7\x52\xaf\xe5\x7a\x83\x95\x1f\x8a\x0b\xb5\xe5\x1d\x8c\xdc\x5b\x9b\x3d\x26\x30\x8a\xce\xbd\xaa\x27\x33\x64\xc7\xa0\xc0\x87\xdf\x53\x92\xf3\x8f\xf6\x29\xf1\xaf\xe2\xac\x72\xd7\x0b\x79\xf9\xd7\xfb\xd6\x96\xa9\x0c\x9f\x9e\x5d\xc5\xf8\xce\x08\x16\x58\xc0\x17\x67\x98\x16\x8e\x2f\x10\x87\x09\x1c\xc2\x6f\x1b\xfe\x6e\x8e\xcb\x11\xc2\x74\x1d\x6d\x75\x08\xd7\xb9\xe1\xec\x42\xfb\xf3\xb7\x4d\xf8\xce\xde\xd2\x45\x08\x6f\xf1\x90\xdd\xfc\xb3\x99\xb4\xc9\x1f\x54\x53\x9e\xb0\xc3\x24\x91\xa5\x68\x95\x3e\x78\xcc\xec\x2b\x50\xc3\xd2\xcb\xda\x98\xe8\x6f\x4e\xe1\x5b\xac\x98\xa6\x19\xa7\x58\x53\x5f\xbf\x13\x8b\xa9\xaa\x71\xc0\x5f\x3d\x37\x43\xc7\x32\xd8\x6e\xf7\xd3\x24\xa4\x2e\x3c\xbf\x5d\x92\xe5\xe2\xdb\x2c\x9e\x70\x73\x14\x74\xae\xea\x85\x74\xe7\xd5\x72\xcd\x0d\xd5\xd7\x15\xd2\x00\x83\x72\x93\xb0\x99\xa2\xcf\xdd\x8b\xf6\x29\x3e\xb5\x11\xfa\x40\x03\xea\x1a\x2b\xf7\xec\xcb\x1f\xea\xd7\xff\x75\x7c\xd6\x2e\xe5\x37\x80\xac\x63\x1d\xc3\xc4\x0d\x1d\x74\xed\xb8\x7c\x3c\x2e\x43\xb3\x4f\xee\x11\x45\x1d\x7e\xac\xeb\x1d\x92\x31\x8a\x3e\x0d\xb2\x17\x65\x64\xef\x0f\xac\x4c\xaf\x42\xbd\x28\xea\x5d\xab\x8f\x9c\x51\xa1\xa3\x52\x43\x06\x43\xfb\x74\xc6\x30\x1f\x3c\x08\xdd\x6a\x3b\xf3\x7f\xcf\xfb\x2c\xeb\x77\x60\xeb\x7f\x52\x1a\x6d\x3f\xc7\x87\x7b\x81\xb9\xc2\xe3\x15\x1b\x73\x6d\xd4\xcc\x37\x21\x19\x45\x93\x70\x5e\x99\x70\xcb\x35\x9b\x91\xbf\xfd\x78\xf2\xf7\x7f\xbc\x79\x77\x74\xf8\xe6\x1f\x6f\x0f\x8f\xfe\x76\x7a\x76\xf2\xe1\xc3\xe5\xdf\x2f\xaf\x4e\xde\x7e\xf8\x70\x54\x2a\xc5\x84\x71\x65\x97\x97\xcc\x7c\xf8\xe0\x38\x55\x7f\xf8\x70\x95\x14\xbc\xf8\xf0\xe1\xdc\x3b\x31\x10\x5e\xf8\xbf\x8e\xcf\x40\x7e\x62\xf5\x4f\x48\xb9\x81\xb3\x15\x89\x0e\xf3\x9e\x50\x5d\xa5\xd7\xd5\xea\x2a\x1a\x40\x52\x35\x3d\xee\xf4\x84\x2a\xe6\x8e\xe6\x33\xef\xc9\x6a\xb5\xd9\xed\x80\x55\x5f\x00\xef\x21\x0d\x5e\x32\x32\x64\xe6\x86\xb9\x72\xb5\xf9\x63\x2e\xce\xe2\xfd\x19\xdb\xe3\x60\xb2\xbe\x3d\x8a\x96\x60\x8f\xa3\x72\x26\xc9\x94\xb3\x1b\xc4\x46\xc0\x36\x2f\x15\x00\x3e\x94\xaf\x62\x09\xe3\x7c\xb8\xcb\x29\x49\x85\x4c\x03\xd8\xff\x9c\x5b\x77\xc1\xa5\x5b\x2b\x97\x40\xe4\x12\x96\x92\xf3\xd3\x63\xf2\x72\x80\x4a\xce\xe9\x31\x02\x29\x2d\x23\x2b\x49\x1c\xda\x8f\x3d\x50\xf1\xf4\x5d\x92\x2e\x5e\x31\x40\x13\x61\xd4\x80\x03\xca\x61\x2a\x73\xfa\xd0\xb6\x1e\xf7\x14\x1e\x60\xd3\xa5\xdf\x4a\x9a\xa1\x0e\x70\x2e\xd3\x45\xc9\xb4\xf3\x8d\xff\xe8\xdb\xc1\x37\x61\x1e\xdf\x0e\xbe\x81\x76\x4e\x9e\x6c\xdf\x0e\xf4\x34\x19\x7c\xe3\x0a\x61\x89\xbb\x69\x69\x76\xe8\x42\x55\x8b\xd3\x67\xf1\x37\xf0\x6c\x0a\xfa\xee\x27\xa9\x53\xe8\xb0\x2f\x56\xc7\xdd\xb0\x50\x0b\x84\x1a\xdb\x44\x31\xea\xda\xb5\xa7\x2c\x63\x26\xea\x6f\xbf\xf6\x76\x4c\xb7\xf7\xa7\xf2\xa1\xaa\x5a\xf7\xae\xd8\xb9\x14\xf4\xa5\x3f\x7c\x93\xaf\xd8\x60\xf8\xb2\x6a\xc0\xda\x60\x03\xb4\xac\xc8\x7f\x50\xd8\xc6\xc8\x8c\xe1\xfa\xb4\xd9\x29\x4b\x0b\xa2\x76\x75\x3c\x7a\x13\x42\xac\xa3\xea\xf8\xca\x43\x71\x59\x8e\xb8\x0a\xf3\x07\x4b\x03\x9b\xd7\x60\x6c\x12\xbf\x81\x32\xa5\x19\xb1\xa7\x96\x41\x4f\x46\x5c\x09\x68\x14\xb4\xd9\xf9\xe6\x9a\xcd\x7a\x08\xdc\x80\x4a\xc8\xb7\x11\xa6\x60\x28\x7d\x95\x85\x1d\x50\x2a\xf2\x8d\xff\xaf\x6f\x1f\x6a\xad\xb5\xf0\xa3\xb6\xf1\xa2\xe2\x4b\xb5\x0e\x5d\x9d\x60\xfd\x43\x1d\xc9\x01\x29\xeb\x4a\x23\x8c\x44\x72\x0d\xc8\x09\xd4\x37\xa2\x46\xea\x70\xd5\xb2\xac\x76\xb3\xf6\x3d\x92\x6a\x28\x00\xe0\x7f\x89\xea\x22\xce\xe4\xa5\x2b\xa9\x03\x64\x96\x11\x53\xd5\x27\x20\x60\xce\xe4\xc9\x47\x96\x94\x0f\x45\x4b\xc1\xab\x95\xef\xef\x9a\xb5\xef\x5a\xf1\x23\x0b\xa8\x35\x48\x1b\xab\x85\x87\xac\xf8\x6a\x77\x46\xa9\x59\x77\xd3\xf6\x9a\xcd\x74\x00\x03\xbb\xc6\xd1\x5d\xf5\x6a\xe0\x5f\x7f\x90\x9d\x7c\xe4\xda\xe8\xff\xe3\x5b\x66\xe4\xc3\xaa\x59\x09\xc5\x1c\xa9\x6a\x74\xbf\x24\x02\x7a\x69\xe0\x63\x3e\x35\xc1\xfd\x0b\xb4\xa6\xfa\x3b\x4f\x89\x08\xea\x8d\xda\x77\xda\xd5\x2e\xbb\x47\x0a\x28\x51\x8a\x31\xc3\xaa\xbc\x14\xfc\x31\xf2\x27\xd2\x10\xe8\x72\x62\x95\xbc\xfa\x31\xe3\x3e\x72\x37\x71\x40\x8f\xe0\x53\x9a\x31\xb4\xeb\x6f\x78\x96\x26\x54\x61\x88\xdc\x01\xc7\x68\x07\xe5\xe8\x10\x13\xec\x19\xe7\x24\x59\xb5\xca\xda\xc5\xe2\xa8\x32\x3c\x29\x33\xaa\x88\xdd\x8f\x63\xa9\x1e\x88\x2f\x83\x57\xbb\xd6\x2d\x81\x45\x5b\x74\x34\xac\xcb\xf7\xf9\x11\xe7\x01\xf9\x9c\xf6\x62\x4d\x26\xa8\xed\xa8\x6f\x94\xbd\x3a\x14\xa4\x1c\x79\xd9\x14\x04\x45\x0c\xe9\x66\x6a\xce\x71\x3e\x06\xff\xf7\x7e\x74\x78\x84\x9d\x39\x20\xdf\x87\x32\xdf\x1e\xa9\x7c\xc6\x50\x4c\xe8\x9e\xe9\xb6\x8d\x5b\xae\x6a\x53\x8f\xa4\x82\x3e\x3c\x7b\xa9\x84\xdf\xb0\x29\x4f\xcc\xfe\x80\xfc\xbf\x56\x53\x04\x27\xb2\x57\x27\xdd\x36\x0b\x05\x94\x15\xb0\xdc\x0b\xb2\x07\x3f\x8b\x55\xc9\x7d\x1f\x28\x72\x9d\x07\x9e\x58\x36\x4a\x8b\x10\xf5\x92\xf0\x74\x4d\x8c\xa2\xa6\x38\xc7\x1a\xe1\xe4\x97\x41\x42\x06\x99\xc8\xb5\xdb\xa5\x35\xcf\x6d\x88\xb3\x78\x11\x1a\x18\xe7\x5f\xe0\xa3\x27\x8a\x8d\x61\xff\xe1\xee\xf9\x84\xbb\xcf\xc8\x42\x66\x72\x3c\xbb\x2c\x14\xa3\xe9\x91\x14\xda\x28\x10\x0d\x6d\x70\xbc\x6e\x1b\x33\x6a\xfd\x30\x91\x37\x84\xba\x3a\x64\x39\x42\x50\x35\x59\x8e\x27\x08\x76\x0b\x3f\xf4\x6d\xd2\xfc\x14\x9d\xd1\xa9\x07\xe4\x32\x80\xd9\x02\x83\x07\x6c\x5c\x18\x05\x1c\x1e\x37\x74\xe6\x36\x13\x1d\x42\xb7\xdc\x2a\x21\xc8\x4f\x06\x43\x3f\xb7\xbe\x3f\x48\xe5\xc3\xb3\xe3\x87\x22\x08\xaf\x51\xa1\xbd\xe5\x55\xa2\xde\xf9\xd0\x42\x2d\xd0\x37\x68\xa4\x40\x37\x9a\x4b\xa7\xa9\x22\xe6\xa8\xa7\xcc\x27\xd4\x4d\xdb\x80\xec\xe4\xf4\xe3\xe5\x35\xbb\x69\xf0\x4b\xff\xa2\x3f\xb2\x87\xe7\x72\xf5\xc1\x1e\x7d\x2f\x34\x35\x5c\x8f\x00\x6a\xfc\x13\xea\xe3\x90\x72\xdf\x0c\x11\x19\xaf\x7a\xe5\x4a\x3c\x5a\xe8\x96\xec\x71\xf5\x6a\xcc\xe2\xf2\xef\x2a\x3b\x08\x0f\x40\x2c\x01\x08\x60\xca\x76\x07\x25\xae\xc1\x80\x91\x55\x1c\x1a\x23\x15\xa1\xd7\xb0\xdf\xb5\x66\xc2\xb8\x9a\x83\x50\x9d\xdb\xfb\xcd\x05\x63\xe3\x54\xb6\xb6\x79\x61\x40\x9e\x93\x8f\x56\xf3\xd0\xcd\x32\x8d\xf0\xaa\xf7\x07\x99\x1b\x14\xc3\x63\x3e\x81\x72\x6e\x19\x6a\x38\xdd\x60\xf6\xc6\x9f\x34\x95\x73\xd5\xd5\xae\xc3\x10\x69\xd7\x65\x88\x2c\xc9\x33\xbe\xf5\xf5\xe7\xc0\xbe\xe3\x6a\x35\xe7\x14\xd2\x3d\x54\xe0\xd1\x81\x4d\x45\x75\xb0\xbb\xc6\xaf\x59\xd0\xe6\xac\x51\x64\x6f\xc2\xdf\xb5\x85\xf2\x6f\xd1\xa5\x88\x74\xd0\xa9\x88\x80\x2c\xbb\x6e\x20\x01\xe3\xdf\x7b\x62\x35\x1e\xa4\x7d\xcf\x22\xd2\xdc\xa0\xae\xae\x1a\x43\x5d\x57\xa6\x35\x72\x56\xcd\xb4\xae\x84\x5d\x65\x58\xb7\x7a\x76\x07\x8d\x3c\x48\x4b\x1b\xb7\xba\x6a\x84\x90\x0f\xb0\x76\x29\x04\x98\xe4\xc8\xef\x8e\xa5\x36\xef\xa9\xe8\x91\x33\x69\xec\x3f\x91\xf9\x7b\x2c\x99\x3e\x93\x06\x3e\xd9\x08\x52\xe2\x2b\x74\x48\x48\x67\x9c\x21\xae\x17\xc8\x4d\x17\xa2\xb5\x27\x9e\x27\xd8\x12\xc3\xe2\x54\x10\xa9\x3c\xc5\x82\x75\xa1\xdd\x10\x71\x58\xc1\x81\x23\xdd\x6a\x9c\xd8\x71\x62\x3a\xdf\x31\x9c\x1b\x0a\xb2\xbf\xf0\x1b\x00\xc9\x2c\x32\x48\xd0\x4f\x4b\x85\x58\xa5\x56\xd7\x34\x6c\xcc\x13\x92\x33\x35\x86\xc6\x87\x4d\xf2\xea\xe3\xab\xfd\xb9\x82\x57\xcb\xd3\x25\x9e\x4c\x0b\x5e\x82\x23\x1b\x54\xac\x0e\x55\x00\x1c\x0f\x8f\xb5\x9c\x82\x25\xf5\x3f\xc1\x07\xfd\xbf\xa4\xa0\x5c\x01\xb6\xa9\x8b\x1d\xc7\xdf\xb9\xe8\x4b\x3c\x8c\x1d\x61\xc1\xb7\x44\x05\x61\x58\x08\x64\x47\x9f\x57\x3c\x7a\xe4\x66\x22\x35\x1e\x86\xc1\xfd\xb1\x73\xcd\x66\x3b\xbd\x05\xd6\xdb\x39\x15\x3b\x55\x60\xb8\xc6\x6c\xe1\x10\x86\x0c\xc2\x1d\xf8\x6e\xe7\xf1\x74\x95\x56\x87\x6d\x17\x20\xf3\xf3\x13\x6a\xc8\x57\xce\xe6\x69\xdf\xcb\xfd\x2d\x0e\x14\xd9\xe7\x18\x13\x1c\x2b\x16\xf5\x71\x07\x45\x3d\xc7\x38\x67\x29\xd8\x94\xd9\xc5\x4a\xb9\x76\x40\x6e\x3e\xc5\xe0\x9f\x0b\x26\xd1\xff\xff\x58\x9e\x49\xe3\xad\xf6\x7f\x7a\xb7\x17\xf2\xdf\x47\x9e\x97\x39\x22\x26\x19\x6b\x29\xa4\x7c\xe4\x01\x5f\x7d\x66\x43\xdd\x5e\xa8\x9b\xad\x8e\x8f\x0d\x55\x63\xc8\x70\x74\xf6\x82\x67\xb3\x71\x26\x87\x34\x23\x39\x17\xf6\x31\x03\xf2\x5a\x2a\xc2\x3e\xd2\xbc\xc8\x18\x96\x93\x91\x2f\xfb\xff\x96\x82\x11\x17\x0d\xef\x11\x4f\x0b\x97\x24\x61\x24\x79\x89\x5c\x5b\x01\xbf\x87\x54\x87\x9a\x01\x16\xdc\x16\x9a\xbc\x3c\x78\x79\xf0\xe2\x15\xf9\x9d\xd8\xa1\x5f\xba\x7f\xbf\x70\xff\x7e\x49\x7e\x27\xbf\x13\x42\xce\x09\xa9\xfd\x4b\xe0\xdf\x3e\xe1\xa3\x78\x0e\x2f\xed\x34\x13\x99\xbb\x17\x06\x4f\x6e\xa8\xfa\x0c\xfd\x63\x8c\x74\x43\x43\xd1\x4f\x22\x73\x06\x73\x78\xf9\x7f\xfc\x3d\x10\x70\x35\xd8\xe2\x07\x26\xb5\x07\x53\xda\x27\x37\xe0\x9a\xca\xe9\x35\x9a\x65\x87\x89\x29\x69\x66\x1f\xbe\xf7\x45\xff\xc5\x3e\x91\xa2\x7e\xfb\x94\x4b\x68\x8d\xee\x66\xb8\xf7\x72\x7f\xb0\x30\xe5\x2f\x96\x4c\x79\xae\xdb\x8d\xab\xb9\xb3\x83\xde\xce\x35\x9e\x61\x0e\xc5\xec\x86\xce\x02\xdb\x78\xb3\x74\xcc\xa7\x01\x1b\x3d\xc2\xa1\x80\x98\x1d\x70\x01\xf7\xc8\x40\x38\xe8\x8c\x70\x33\x20\xa7\x66\x77\xd7\xf7\x56\xb2\x1a\xb3\x07\x71\x3f\x8e\xe1\x02\x81\xf0\xb0\xe8\x2f\xe6\x72\x7a\x5b\x34\xd6\xef\xc4\x39\xfa\x20\x14\x76\xf7\xf4\xca\xbf\xd1\x81\x53\x3d\x8c\xe5\x77\xb0\x15\xfd\x72\x84\x75\xb2\xd8\xe9\x68\x00\x6d\xac\x1c\xed\x5d\xc2\x08\xaa\xce\x6e\xf7\x70\x1d\xac\x27\x0e\xf9\xf7\x09\xcd\xe2\x60\x5d\x22\x01\xa0\x4d\x31\xdf\x28\x29\x4e\x2f\x0a\x7e\x29\xf2\x73\x75\x27\xa6\x15\x41\xfc\x15\x07\xfa\x16\xd3\xd9\x77\x86\x65\x72\xcd\x8c\x3f\x77\x14\x64\x44\x14\xa5\x21\x43\x9a\x51\x61\x35\x98\x05\x3f\x84\x91\x38\x18\xfe\x12\x18\x66\x09\xbf\x7c\xea\xf8\xc8\xc2\xee\x68\x2f\xf4\x7f\x9e\x1f\x32\x8a\xc8\x3a\x47\x61\xca\x68\xe6\x53\x29\x00\x1f\x3d\x00\x56\x89\xdd\xdd\x6a\x5f\xc1\xda\xa0\xf0\xab\x1c\xac\x56\x2e\xd4\xe4\x3e\xd9\xf3\xb9\x8f\xc4\xb0\x2c\x43\xee\xa9\xfa\x92\xd9\x4d\x16\x37\x3a\xe3\x30\x42\x5d\x06\x2c\xfd\x61\xbd\x3b\x1a\x06\xf5\xad\x64\x17\xb3\x50\x2d\xdf\x23\x04\x5a\x03\x8e\xf9\xd4\x0a\xa5\x95\x84\x06\x0a\xc6\x09\xcb\x0a\xa2\x58\x5a\x26\x38\x38\x21\xfa\x9a\xdd\x58\x9d\xaa\x7a\x53\xd7\x52\xc8\xb3\xec\x4e\x8d\xa8\x3b\x88\x11\x2d\xea\x22\x91\x8f\x80\x21\x7d\xc7\x4d\x36\x65\x6a\x46\x0a\xa9\x35\xb7\xeb\x00\x7b\x09\xb2\xe1\x40\xef\x0a\xc8\x3a\x90\x89\x05\xd3\xf2\x62\x78\xc7\x89\xdd\x1d\x2b\xa8\xb5\xac\x6d\x8f\x4f\x73\xd4\x7d\x69\x8f\x99\xbb\x8f\xba\x73\xf8\xdf\xe2\x91\x77\x3a\x22\x4b\x78\x30\xcc\xa5\xc6\x3c\x0f\x39\x05\xbf\x80\xc3\xea\xcb\xfd\xe8\x30\xfc\xf2\xe0\x8b\x83\x97\x7b\x76\xae\x5f\xec\xdb\x59\xd7\x8e\xb9\x97\xe1\x98\x0b\xbf\x74\x33\x62\xba\x76\xd0\x59\x03\x0c\x1b\xe8\x4a\x95\xba\x08\x8f\xcf\xa2\xb3\x33\xd2\xc6\xc5\xdb\x78\xee\xe5\x4b\x0f\xf8\xae\x62\xd6\x1b\x09\x3b\x07\xce\x5b\x6e\xc8\x67\xb9\x54\xec\xb3\xe8\xfe\x5b\x0f\xa8\xe6\xe7\x4e\xdb\x7e\x6a\x19\xd7\x06\x9a\xaa\x5d\xb3\xd9\x83\x35\xdd\x36\xee\xf5\xb6\xce\xf5\xc5\xb7\x40\x82\xe4\xb4\x78\xc0\x38\xae\x6f\x7b\x9b\x14\xde\x37\xce\x31\x1b\x5a\xc0\x83\xe3\x11\xb5\x22\xd7\xd7\x14\x6b\xa5\x42\x3e\xed\x90\x65\x12\x71\x4e\x5d\xea\xc0\x03\x52\xf5\x03\x2c\xbc\x36\x52\xd1\x31\x3b\x70\x8f\x7d\x2a\xed\x20\x5c\x17\xf8\x9a\x97\x09\xcb\x19\x1d\x48\xaa\x4f\x69\xf6\xf1\x07\x90\x02\x34\x81\x6c\x40\x20\x64\x0d\xce\x21\xca\x33\x7c\x22\xa1\xac\x06\xd5\xef\x6d\x1c\xa7\xf4\x46\x9f\x64\x54\x1b\x9e\x7c\x9f\xc9\xe4\xfa\xd2\x48\xd5\x81\x76\x71\xf8\xf3\xe5\xc2\xa8\xb5\x35\x15\xe4\xf0\xe7\x4b\x72\xcc\xf5\x75\x85\xae\x8f\xa8\x9a\xf5\x04\x3c\x1a\x80\x71\x5c\x2d\x06\xc9\xa9\xb5\xff\x98\xb7\xf1\x44\xc0\xf5\xed\x6e\xaf\xfc\x89\xde\x68\x86\xd3\x1f\xda\xe9\xdb\xaf\x59\x73\x11\xbc\x36\x20\x05\x7c\x9d\xd3\xe3\x35\x04\xbe\x46\xba\x69\xdb\x11\xb2\xc0\x4c\xaf\x79\xc6\x5c\x07\x30\x80\x04\xaa\x63\x3c\x03\xd7\xcc\x64\x49\x6e\x28\xfa\xac\x40\xa6\x0e\xc8\x15\x2f\x5e\x91\x93\x08\xaf\x15\x0b\x12\xea\x43\x59\x7d\x23\xe0\x87\xb8\x2c\x01\xe0\x32\x74\x5d\x59\x11\xec\xb2\x62\xc8\x09\x2a\x53\xfa\x15\xd9\x61\x1f\xcd\x57\x3b\x3d\xb2\xf3\x71\xa4\xed\x3f\xc2\x8c\x00\x5d\xd9\xf5\x68\xb0\x4a\x9d\x18\x31\x55\x19\x30\xf8\x83\xc5\xd2\xc1\xee\x99\x94\x5c\xbd\x3b\x7e\xf7\x0a\x14\xf8\x54\x92\x1b\xe6\xbb\x98\xf9\x42\x58\x27\x0d\x23\x32\x40\x45\x47\x22\xf3\x42\xc9\x9c\x47\xe9\xaa\xb0\xc9\x9a\xf0\x3c\xe9\xc2\x5f\x0a\x49\x69\xb0\xfc\x9d\x70\x10\x64\xfb\xfa\x21\xe7\x80\xe1\x6f\xe3\x9f\xd3\x11\x91\xe8\x94\xaa\xe7\xc8\x73\x1d\x6e\xb2\x1c\xe3\x46\xc1\x76\x5c\x15\x8f\x58\xf5\xdb\x7d\x75\x90\xb2\xe9\x81\x4e\xe9\xcb\x1e\x3c\x06\x19\xc0\x81\xdf\x87\x39\x51\x4d\x76\x5e\xee\x0c\xc8\xa5\xef\x6b\xde\x8b\xe7\x58\xdd\x67\xad\x01\x3f\x20\xb8\x55\x5f\xec\x90\x3d\x4c\x52\x07\x9d\x22\x63\xbe\x64\x39\x60\x6c\x80\x0f\x7f\xbf\x91\x0a\x49\x3a\x70\x5f\x90\xd6\x2e\x0c\xe2\x5a\x86\xbd\x13\x59\xe3\xd0\xde\x5c\x55\x95\x5b\x83\x1d\x03\xdd\xb7\x8c\x84\x0a\x02\xe6\xfa\xc1\xa2\xa8\xb8\x70\x4f\xac\x08\xc9\x85\xd3\x4e\xde\xda\xc5\xc7\x2e\xf0\x30\xc0\x9d\xcc\xb2\x03\xd5\x47\x3b\x1b\x73\x26\x91\x0e\xaa\xb9\x49\x38\x5a\xba\x59\x8f\xf7\x82\xff\x56\x32\x72\x7a\x1c\x7a\x36\x32\xa5\xb9\x36\x56\x72\xa5\x35\x1d\x81\xa3\xe2\xb0\x77\x98\xd3\x7f\x4b\x41\x4e\xbe\xbf\x74\x53\xd9\xdf\x40\x02\x37\x14\x80\xf4\xdf\xa5\x62\x56\x35\x6a\xad\x87\x1d\xfa\x91\xe6\x75\x2f\xfb\x39\x39\xa6\x86\xa2\x0a\x86\xd2\x4c\x56\x15\xa6\xb0\x13\x86\x90\xf9\xe3\xcb\x87\x1b\x6a\xd1\x64\xfd\x6a\x90\xe5\xa0\xb3\xe6\x98\x52\xf6\xe7\xef\x2f\x4e\xd7\xa0\x44\x25\x70\x0a\x8f\xdf\xca\xb4\x23\x4d\x0a\xe0\x3d\x8e\x70\x54\x92\xdb\x61\xc9\x99\x14\xac\x07\xc2\x8e\x58\x69\xe7\xfe\xf3\x67\xc5\xcd\x43\x2b\x26\xab\xab\xf5\xf1\xef\x57\xac\x93\xb7\xb6\x87\xff\x59\x54\x19\x0f\x30\x0e\x20\x55\x9c\x22\x30\xcc\xe4\x90\x38\x69\xb0\xce\x37\x7e\x7f\x71\xda\xd9\x0b\xbf\xbf\x38\xdd\xdc\x97\xed\xd0\x38\x98\xb7\x0d\x2a\xfd\xad\xc2\x5e\x9d\x57\xfa\x57\xd7\xf8\x07\x5d\xe9\xfa\xeb\xa2\xf4\x35\x17\x8d\xb3\xc2\xea\xa2\xe3\xc4\xd7\x47\xba\x48\x0d\x94\x64\xa7\xaf\x48\x5e\x66\x06\xca\xdf\x80\xb1\x2c\xa7\x69\x7b\x7a\x7b\x16\x23\x0e\x0a\x82\x90\x63\x86\xe1\x85\xf4\x95\x4f\x48\x08\xbf\x58\xfe\x83\xb7\x54\xd0\xb1\xbd\x1d\xce\x43\x92\xe3\x9f\x11\x47\xef\xa1\x03\x5d\x84\xaf\xe8\x94\xf2\x8c\x0e\x79\xc6\x0d\xb4\xff\xdf\x1f\x78\x45\x4c\x63\x2d\xac\x9d\xf2\xda\x84\x5a\xa7\x2a\x6c\x5c\x1f\x04\x0a\x26\xd9\xb3\xe3\x1f\xdc\x58\xc1\xbd\x3f\xa8\xb4\x57\x40\x23\x83\x44\x79\x54\x71\x6b\xaa\xad\x47\x79\x98\xd3\x6c\xdb\xb1\x6b\x53\xb5\x12\x96\xf9\x75\x43\x08\xe8\x45\xb5\xc7\x8e\xb4\x54\xed\x81\x2f\x1c\xe8\xc4\x33\xd7\x7c\xb0\x83\x54\x0b\xdd\x07\xb6\x4c\xc3\xdf\xb7\xd5\x7e\xb6\xfb\xe5\xfe\xab\x5a\xe0\x4e\xa8\x14\x83\x08\xe1\xd0\x73\x69\xd2\xb8\x83\x2e\x9d\xa8\xf6\xe0\x42\xa0\x5d\xd9\x7d\xd3\xa4\x88\x02\xaf\xd6\xd2\x35\x70\x6a\x27\x84\x40\xd8\x95\xc6\x1b\xa7\xe5\xfb\x24\xac\x98\x8c\xda\xd7\x40\x1e\xb1\x62\xf2\xfa\xb2\x1e\x4a\xb1\x9f\x91\xd7\x97\x4b\xe4\x1e\xe6\xca\xd8\xf7\xd6\x18\x60\xd9\xd5\x24\xe3\x23\x66\x78\x23\x22\xac\x59\xf2\xe5\x52\x70\x23\x95\x5e\x47\xcd\x87\x7b\x74\x37\x7a\xd7\x85\x27\x04\x79\xeb\xc6\xc5\x84\xcf\x44\x66\x19\x4b\x8c\xeb\x79\x08\xcb\xea\x1f\xbc\xcc\x11\xe2\x52\x01\xb4\xef\xf1\xeb\x9c\x1e\x07\xc8\x6a\x07\x17\x27\x87\xc7\x6f\x4f\x06\x79\xfa\xa7\x89\xbc\xe9\x1b\xd9\x2f\x35\xeb\x73\xd3\x4e\x57\x5a\x63\x51\x48\x07\x0e\x68\x33\xe9\x66\x01\x2b\x44\xa2\xf7\xba\xc2\x0c\xf3\x81\x5f\x25\xa5\x59\x44\x0d\x1b\x95\x59\x86\x6b\x6a\x14\x63\xbd\xd8\x9d\xf8\x40\x4c\xb5\xea\xda\x2c\xfd\x75\x77\x79\x5f\xdf\xee\x8f\xe6\x4d\xd9\x0c\xed\x4f\xf9\xa6\xaa\x31\xb9\x83\xf6\x97\x61\x64\x9f\xd0\x67\x19\xdf\xae\xc4\x35\x9b\x11\xc8\xee\x1f\x49\x05\x48\x9b\x75\x2e\x64\x26\x01\x72\x1d\x40\x4b\x45\xa7\x2b\x6c\x08\xa9\xdb\x68\x11\xf0\x22\x17\x6c\xf4\x38\x84\xbe\x60\x23\x2c\xa0\xf0\x39\xce\xce\xba\xa0\xa5\x99\x60\x26\x24\x22\x1f\x21\x39\x97\x52\xde\x55\x64\x6c\x08\xa9\x5b\xe5\xd2\x77\x51\xef\xd5\x06\x78\x9f\x2c\xac\x57\xec\x26\x74\x8b\x64\x1e\x1c\x57\x90\x53\x6b\x5b\xb2\x9b\x83\x1b\xa9\xae\xb9\x18\xf7\x6f\xb8\x99\xf4\x91\x52\xfa\x00\x70\xd8\x0e\xfe\x04\xff\xb8\x68\xed\x61\x9a\xba\xcc\xb2\x52\xb3\x51\x99\x61\xce\x97\x1e\x10\x5a\xf0\x9f\x98\xd2\x90\xc2\x78\xcd\x45\xda\x23\x25\x4f\xbf\x6b\xba\x62\xa4\x8b\x0d\xd2\xbc\x8b\xd8\x9d\xe7\xa2\xf2\xe2\x47\xd1\x54\x6a\x44\xe1\xb5\x24\xaa\xb1\x3e\x4d\x73\x2e\x36\x85\xf3\x9b\xaa\xf6\x5c\xa4\xcd\x28\x58\xa7\xde\x11\x8c\x53\xd7\xed\x71\x6c\x1f\x33\x0e\x59\x34\xd4\xfb\x32\xb0\x4b\x95\xcb\xa7\xa9\x67\xd3\xac\x24\x50\xf2\x99\xfe\x2d\xeb\xe3\x53\xfa\x45\x5a\xd1\x75\x9b\x1a\xf3\x90\xeb\x31\x53\x63\xba\x75\x7f\x7f\x82\x84\x97\x47\xe5\x31\xb2\x55\x7b\xd7\x40\xeb\xf6\x9a\xee\x23\xe8\x5f\x80\x03\xaf\x7d\x71\x32\xa8\x57\x28\x7b\xbc\x6f\x0b\x3b\xf3\x05\xe0\x61\x5f\x66\x94\x48\x21\x1c\x26\xdd\xbb\x82\x89\x4b\x43\x93\xeb\x96\x71\xd1\xad\xce\xf4\x07\xd3\x99\xba\xcd\x95\xf1\x69\xd0\x69\xe0\x51\xac\xa2\x72\x29\x65\x55\x96\x34\x6e\xec\x27\x28\x75\x11\x61\xfd\x2d\x2d\xda\x7b\x40\xfd\x48\x73\x8a\x52\xf8\xd8\x39\x3d\xa1\xaa\xa6\x90\x45\x99\x21\xe4\x1a\xd7\x8e\x8e\x9f\x5e\xb1\x69\xbb\xc1\x9d\xbe\xdc\x5d\xce\x48\x25\x43\x73\x99\x32\x32\xe4\xa6\x92\x8e\x9a\x19\xac\xdd\x75\x40\x34\x52\x90\xc4\x81\xcd\x81\xd6\x61\x35\x0c\x37\xa1\x48\x23\x11\x44\x26\xc6\xd7\xfc\x85\x32\xdf\x17\x2f\x5e\xbc\xc0\xa2\xcb\xbf\xfe\xf5\xaf\x44\x2a\xe8\xf8\x90\xf0\x7c\xf1\x46\xb8\xeb\xcf\x2f\x5f\x0e\xc8\xdf\x0f\xdf\xbe\x81\xdc\xff\xc2\x68\xc4\x01\xc7\x91\xed\x0d\xb5\x1f\xeb\x1e\xf9\xbf\x97\xef\xce\xbc\xda\xa8\xe7\xbe\x05\x53\x3b\xbc\x5e\x1d\x7d\xf1\xc5\x5f\xbe\xfa\x6a\x40\x8e\xb9\x82\xda\x27\xce\x42\x6b\xae\xe0\x2d\xa1\x8a\x61\x91\x28\x40\x04\x7a\xbd\x8a\x07\x10\x7d\x87\x9f\x80\xbd\x07\xb1\x9e\xd1\x72\x60\xc6\x13\x83\x65\x56\x28\xc8\x42\x57\x61\x00\x6e\x74\x50\xa8\x2e\x59\x17\x26\xd7\x23\x19\xbf\x66\x64\xa4\xa1\x25\x67\x55\x4c\xef\xda\xdd\xb8\x92\x12\x1c\xac\x5a\x2b\xcd\xcc\x13\xcf\xfd\x6c\xe5\x0b\x9e\x07\x30\xae\x35\x5c\x83\x52\xcf\x6b\x36\xeb\x23\x87\x15\x94\x87\x82\x11\x48\x8e\xab\xf5\x58\x08\x5e\x9b\x34\x92\x2b\x1e\x63\xb1\x50\xf2\x5f\xb8\xf8\x50\x43\x1a\x49\x62\xa8\x44\xc5\x16\xb5\x00\x96\x20\xa2\x86\x1d\xbe\x0e\xd6\x35\xf5\xf2\x1f\x3b\xa4\xd0\x45\xb8\xe5\x8c\x6b\xfb\x88\x6b\x36\xd3\x77\x3d\xb9\xea\x15\x63\xf9\x53\x23\xa7\x94\x62\xe1\xd7\x0e\x79\xdf\x49\x46\xd7\x64\xc1\x21\xde\x54\x63\x60\xf9\xbf\x2b\x84\x76\xf7\x7a\x2a\x05\x42\xd4\xd2\x95\x35\x33\xa5\x23\x0d\xe4\x9d\xdb\x67\x43\x03\x00\x78\xc3\x9c\xaa\x6b\xe6\x3b\xf3\xd2\x6c\x40\xce\xed\x24\x03\xe4\x48\x68\x8c\x0c\x76\x2b\x9d\xc1\x63\x9d\x92\x06\x0f\xd9\x1d\x0c\x76\x71\xe3\x49\x45\xb4\xa1\xca\xed\x22\xfb\xf9\xf3\x40\xb1\x7a\x4b\x0b\x8d\xa8\x2a\x56\x2b\x05\xc4\x21\x09\x48\xad\x66\x52\xf5\x05\x44\x5a\x6f\x91\xa7\x48\x1f\x08\xd3\x78\x80\x4d\x44\x9d\xba\x72\xb2\xc1\x48\xbf\xbd\x37\x02\x0b\x29\x6f\xa1\x54\xe0\xd5\x4a\xb5\x70\x30\xbb\x19\x7b\x52\xba\xc4\xf2\xb6\x1a\x4e\x52\x46\xda\xda\x5c\x33\xcf\xa7\xaa\x32\xe0\xd5\x85\xe2\x80\x57\x7b\xf5\x01\xaf\x36\x01\x5d\xbc\x16\x76\x68\x38\xa9\xf0\x30\x1a\x55\xa4\x07\xd0\xf3\x22\x1c\xf1\x46\x62\x87\x10\xdf\xe9\x46\x10\x3a\xd4\x32\x2b\x0d\xfe\xb4\xfa\x32\x3e\xe6\x60\x50\x0f\xbe\x04\x67\x5b\xb8\x2d\x3a\xf4\xe0\xb8\xc7\x73\xa2\xcd\xf9\x87\x57\x6b\x31\xd1\x59\x1b\xe4\xe7\xed\x55\x68\x4d\x67\xaf\x3b\x75\x93\xeb\xe4\x8a\xa1\x6e\x26\xcc\x65\x21\x44\x7a\x9d\x15\x9e\x56\x24\x80\xd2\xe8\x55\x34\x6c\x3b\x9e\xae\xc5\x4b\x98\x68\xde\xde\x2d\x70\x79\x4a\xf6\x42\xbb\xd1\x90\xce\x76\x2a\x0c\x53\x23\x9a\xb0\xfd\xd8\x5d\xc0\x8a\x09\xcb\x99\xa2\x59\xc8\x50\xf6\x75\xca\x13\x2a\xd2\xcc\x15\xef\x33\x05\x1b\x97\x7d\x34\x4c\x09\x9a\xc1\x23\x52\xc5\xa7\x4c\x69\xb2\xf7\x3d\xb3\xb6\x04\xb6\x29\xdd\x7f\x82\x69\xa4\xf8\x22\xeb\x70\x66\xc0\x83\xbb\x49\x00\x85\xa1\x96\x75\x4a\xac\x96\xca\x63\x16\xd9\x65\xd5\xb1\x1b\x68\x60\x37\x04\x9c\x98\x20\x74\xa1\x23\x10\x46\x23\x7d\x03\x3c\x00\x2e\x4e\x0c\x0e\x4c\xb5\x6b\x88\x07\x88\x30\x4e\x9e\x3b\xa8\x90\xb5\x95\x02\x7c\x92\xa2\x8b\xbb\x4a\x26\x46\xce\x80\x94\x53\x9e\x7a\x35\x08\xb2\x19\x2a\xd4\xad\x82\xea\xa8\x92\x9f\x6a\x2d\x5d\xbf\xcf\x68\x8d\xd0\x1c\x05\x65\xa9\x8e\x29\xed\x23\xc5\x71\xbc\x4b\x02\x32\x6b\xa3\x86\x16\xa4\x93\x03\x51\xa6\xec\xbc\x1c\x66\x5c\x4f\x2e\x3b\x0d\x6d\x9c\x2d\x19\x18\x13\x03\x17\x92\x4b\x6e\x0d\x77\x68\x26\x34\x77\xfd\xc7\x50\xcd\xe2\x56\xcb\x96\xb0\x0c\xfe\xd7\xf1\xee\x90\x50\x28\x0e\x5d\xcd\xfc\x57\xd1\x3c\x1c\x72\x07\xb6\xd3\x49\xd9\x7b\x51\xd4\x3e\x4f\x68\x96\xe9\xf9\x46\xd2\xfe\x20\x43\xcd\xd4\xa3\x79\x20\x57\x70\xcb\x30\x7e\xf6\x90\x35\x83\x52\x2c\x20\x9b\x2e\x7d\x31\x4d\x72\x89\x15\xff\x82\x48\xe1\x6f\x82\xae\x40\xfe\x07\x81\x42\x88\x37\x86\x4c\xb7\x46\x4c\xc9\x6d\x4c\xe7\xe9\xc5\x74\x3a\x8d\x0a\x5f\x86\x16\x0d\x14\x06\xee\x43\x61\x93\x6f\x34\x4b\x43\xe1\x7f\x65\x38\x0e\xee\x0b\x1f\xaf\x2d\x82\x8b\xf3\x3b\x34\x0e\x16\xb4\x1b\xbf\xed\x4f\x73\x83\x82\x2a\x66\x2d\x6f\x10\x4c\x7d\x67\x5b\x27\xd1\x4e\x72\x26\x71\xd8\xde\x8b\xe2\xac\x3a\xd3\xe1\x38\xc7\x0f\x77\x35\x49\x65\x52\x5a\x9b\xab\x22\x7b\x95\x30\xd1\x0e\xed\xfd\x79\xc1\xcf\xa6\xf2\x46\xdc\x50\x95\x1e\x9e\x37\xaa\x5a\xad\x2b\x67\xd5\x58\xb1\xea\xed\x1f\x41\xec\xe7\x74\xe8\x1b\xfe\x07\xf0\xa7\x6d\xe0\x6e\x7e\x88\xfb\xbc\x6b\xae\x0d\xf8\x6a\x71\x3a\xb2\x0d\xfd\x6d\x43\x7f\xcf\x26\xf4\x67\x47\xaa\x77\x4a\xa9\x89\x17\xe7\x90\xb5\x14\x7f\x16\x31\xa4\x48\xa4\xe2\xe9\x39\x5f\x0f\x3b\xa7\xf3\xe3\xe6\xad\xb8\x2e\xb2\x13\xbc\xcc\x05\x75\xec\x39\xc4\x9b\x36\x20\x5e\x04\xb4\x6c\x61\x0c\xe2\x75\x5b\xa9\x18\x22\xb5\x62\xe0\x39\x8a\x60\x17\x32\x7d\x85\xc0\xa9\xd0\x39\x1d\x7b\x76\xf4\x1c\x6e\x73\xcf\xf9\x2e\x44\xd4\x2b\x1c\x5b\x33\x7b\xf5\xa7\x93\x98\x40\x4b\x06\x20\x1d\x31\x01\x01\x46\x00\xea\x9c\xb7\xe1\x06\xd2\x19\x47\xd8\xab\x32\x74\xda\x8e\x34\xaf\x40\xe3\xa8\x9e\x11\x74\x32\x61\x39\xf6\x0f\x7f\xed\x49\x60\x65\xa3\x35\x1e\x0c\x43\x84\x34\xa6\x72\x4d\xe4\xa8\x57\x83\x50\xd8\x99\xbe\xdc\x69\x17\x63\x20\xdd\x85\x23\x89\xdf\x47\xe7\xad\x63\x3b\x64\x9e\x60\xe7\xb5\x90\x8e\xdd\x43\xa0\xf3\x64\xd8\xba\x78\x2e\xcb\x02\xce\x0f\xa4\xf0\xc6\x10\x67\x53\x62\xb5\xbd\x10\x35\x78\x02\xca\xdf\x36\x56\xfb\x1c\x63\xb5\xd1\xc1\xe8\x05\x9d\x23\x6c\x1c\xbf\x8d\x43\x02\x3e\x88\x3b\x64\xde\xa8\x71\x36\x8c\x8f\xe0\xfa\xf0\xad\x54\xf5\xd4\xa4\xdd\xc1\x60\x77\xd7\x07\x75\x1d\xdf\x97\x66\xd4\xff\x9a\x30\x91\xc8\x14\x99\xc5\x8e\xaf\xb4\x01\x75\xaf\xf2\xb2\xc5\x73\xc9\xfd\xb3\xe2\xf4\x26\x18\xbb\x8b\xa5\x6e\x2d\x5b\x3c\x1a\xdf\xeb\x47\x50\x62\x2a\xd5\x25\x60\xfe\x39\x12\x05\x4c\x67\xa7\xc3\xf8\xef\x35\xc9\x78\xce\x5d\xff\x30\xbb\xd1\x99\x36\x9a\xec\xe1\x87\x83\xa4\x28\x7b\xee\x86\x41\xce\x72\xa9\x66\xbd\x70\x93\xfd\xb2\xf6\x2b\x77\xc7\x3e\xf6\xa1\x28\x95\x62\xc2\x64\xb3\xe7\xac\x01\x79\x22\x6e\x88\x02\x14\xd6\xb8\x0d\x92\x47\x75\xcd\xd5\xcc\x85\x88\x2f\x78\xcb\x23\x8c\xfd\x00\xd6\xaa\x7b\x21\x24\x01\x9f\x32\x31\x25\x53\xaa\x1e\x88\x9e\xbe\xec\xea\x50\xe7\x49\xf9\x94\xeb\xb6\xcd\xfd\xc8\xed\x4e\x68\x68\xdd\x55\x9a\xa2\x34\x4e\xa2\xfb\x1d\xe8\x91\xb6\xc3\xce\x9b\x53\x0e\x5f\xee\xb4\x9e\x52\x41\x8d\x61\x4a\xbc\x22\xff\xbd\xf7\xe1\xf3\xdf\xfb\xfb\xdf\xed\xed\xfd\xf2\xa2\xff\x9f\xbf\x7e\xbe\xf7\x61\x00\xff\xf1\xd9\xfe\x77\xfb\xbf\xfb\x3f\x3e\xdf\xdf\xdf\xdb\xfb\xe5\xc7\xb7\x3f\x5c\x9d\x9f\xfc\xca\xf7\x7f\xff\x45\x94\xf9\x35\xfe\xf5\xfb\xde\x2f\xec\xe4\xd7\x15\x07\xd9\xdf\xff\xee\x3f\x5a\x4f\x9d\x8a\xd9\xbb\x96\xa2\x10\xaf\x7e\x87\x47\x72\x7d\xc4\x4e\xd8\x6f\xae\xb5\x02\x17\xa6\x2f\x55\x1f\x87\x7e\x45\x8c\x2a\xdb\x09\x93\xea\x78\xe9\x7a\xff\x57\x6a\x40\x05\x39\xef\x95\xfa\x35\x6f\x70\x88\x78\x1e\xf3\x0e\x0a\x83\x4f\xdc\x48\xf5\x8a\x17\xc3\xf2\x42\x2a\xaa\x66\x24\x75\xde\xcc\xd9\x12\xc0\x9f\x08\xf1\xa7\x35\x9a\x2e\xbc\x51\xca\xd5\x1a\x6a\x83\x5b\x03\xf8\xb0\x94\x97\x79\x37\x4e\xf8\x9f\x01\x79\xde\xa1\xd6\xfb\x04\x22\x7c\x80\x0f\x5f\x0c\x69\x72\x8d\xf6\x52\x58\x1b\xd4\x12\x63\x10\xe9\x1d\x97\xf7\x90\x33\x2a\x82\x1b\x1f\x32\x59\x64\xca\xec\xc2\xf9\x9b\x71\xec\x9a\xcb\x1d\xc3\xe9\x2e\x4b\xb0\x6a\xc3\x24\x15\x79\x0b\xea\xce\x5a\xd7\x9a\x74\x02\xdb\xc1\xff\xcd\xde\x58\x1d\xaf\x23\xb8\x78\x09\xc6\xa4\xc3\xc8\x1a\x41\x23\xa9\x2a\xfd\xab\xa6\x36\xc0\xba\x85\x3d\xe7\x83\xb3\x76\xf5\xec\x9c\x50\xf1\x04\xaf\x73\xa6\x31\x17\x85\x27\xd0\xe8\x08\x0c\x4f\xa0\x7e\x58\xb1\xab\xa8\x21\x62\xa9\xed\x93\xa4\xa8\xdf\x53\x3d\x08\xfb\x40\x0d\x91\x05\x5c\x7b\xc3\x39\x73\xd9\x7e\x73\xe9\xe9\x12\x39\x2b\xa0\x9c\xd8\xdb\x96\xba\x04\x0b\xc4\x3d\xc5\xe9\xd1\x72\x04\xd9\x12\x51\x43\x1a\xdf\x73\x65\x81\x2f\x05\xcf\xea\x8c\xe9\x1b\x2d\x84\x17\x2f\x85\xcb\x16\x5c\xe0\xb2\xe5\x4c\x56\x6a\xa6\xfa\xe3\x92\xa7\xdd\xb1\xd7\x93\xd3\x29\x5a\x6a\x12\x5d\xe9\x0f\x9d\x68\x0d\x9d\xeb\x0a\x21\x1f\xb3\xf5\x59\xb9\x73\x12\x52\x3b\x6b\x87\x65\xdc\x18\xa2\x9e\xe6\x49\x43\xc3\x2f\x2f\x0c\x7c\x2e\xc1\x55\xf0\x13\xb9\x43\x34\x99\x25\x0e\x54\x89\xd7\x7a\xd3\xe0\xb0\xb8\x27\xa0\x22\xaa\x6f\xff\xcf\xfb\x93\x7c\x08\x75\xc8\x46\x98\xc5\x84\xbf\x01\x37\x80\xab\xe3\x4a\x59\xc6\x0c\x94\x65\x31\x51\x75\xbc\xd3\x44\xb1\x5c\x4e\xed\x36\xfb\x20\xc8\x7b\xed\x82\xe1\x7c\xf4\x8a\xd0\xfd\x5a\x61\xb0\x6b\xb3\x2b\x18\x4b\xb1\xb8\x2b\x6a\x9c\xa7\x4a\xa1\x7b\x64\xb8\xef\x93\x55\x35\xf6\x76\x54\xe0\x31\x73\xed\xab\xc0\x49\xa5\x98\x25\x00\xc0\x43\x29\x99\x13\x2d\x68\xa1\x27\xd2\x80\x3f\x84\x16\x34\xe1\x66\x66\xc9\x6d\x14\x4d\xae\xa1\x45\xb4\x62\xee\x89\x3d\x92\xec\xbb\xac\xf5\x98\x82\xf5\x92\x33\x33\x51\xb2\x1c\x4f\xa0\x06\x0a\xef\x4a\x32\xaa\x3d\x01\x96\xfe\xde\xd9\xe8\x9a\xa4\x33\x41\x73\x9e\x84\xd6\x19\x4a\x4e\xb9\xe6\xd2\x45\xb2\x70\x5c\xbb\xc7\xc8\x79\xe8\x31\x80\x01\xb2\xa3\x8c\xf2\x9c\xec\x69\xc6\x48\x60\x0c\xfc\xe6\x12\x95\x45\x74\x16\x2a\x66\x7f\x1e\x47\xcf\x1c\x8a\xa2\x83\x0a\xb0\x9f\x54\x32\x38\x24\x24\xa0\x12\x00\x9b\x3b\x5d\xfe\xe8\xfd\xb0\x74\xcb\x67\x26\x15\x24\xb4\xf9\xee\x37\x4c\xa4\x32\x4a\x7d\x39\x3c\x3f\xd5\xb1\x21\xeb\x7a\x06\xe2\x48\xf0\x45\x26\xc5\x38\x06\x99\xab\xb8\xd4\x0a\x7c\x01\xfd\x1f\xa7\x3c\x2d\x69\x86\xa2\xde\x4d\xe6\xe8\xf2\x14\x7f\xce\xc7\x13\xd3\xbf\x61\xe0\xe6\xc4\x13\xb1\x4a\x8d\xf6\x0f\xe5\x0b\x29\xb5\x5c\xc3\xd1\x60\x9c\x3b\x0d\x5d\xc6\xd0\x61\x91\xce\x00\xa1\xd6\x25\x6f\xd6\xb2\x6e\x3c\x52\x3b\x0e\x11\xe8\x1e\x11\x1d\xa6\x77\x18\xba\x01\x5a\x6d\x08\xfc\xc0\x96\xca\xc0\xb5\x8b\x73\x83\xd6\x86\x55\x5f\x89\xf0\xb1\x89\xba\x8b\x82\xe6\xfb\x41\xa0\x47\x17\x82\xc5\xc3\x28\x77\xbb\xea\xda\xe8\x90\xa6\xa1\xa8\xd3\x6d\xc3\x1f\x98\x60\x8a\x27\x73\xac\x13\x7e\x3a\xa6\x06\x36\x1f\x13\xf6\x67\xe9\xa0\x89\xa9\xbc\x66\xbd\x78\x5a\x31\xe3\x15\xcb\x8b\x8c\x9a\x6e\x32\x55\x76\x7e\x8e\xbc\xe9\x51\x2c\xda\xee\x7e\x2a\xd2\x3e\xcd\x2c\xdf\x9f\xff\x74\xe4\xea\xe1\x70\x3f\xd7\xb2\xe1\xae\xaa\xce\x9f\xa8\x8e\xa0\x5e\xb6\x74\x1b\x03\x88\xda\x90\xa5\x20\xfe\xdc\x93\xc1\xe5\x71\x23\xb0\x15\xac\xfd\xe3\xfc\xa7\xa3\x1e\xe1\x03\x36\xf0\x7f\x85\x5b\xbd\xfc\x35\x72\x8c\xf5\x12\xa1\x0e\x07\x76\x0d\x4c\x25\xf6\x25\xc7\xbf\xfd\xe7\x37\x76\x92\xf6\xdb\x6f\xfb\xdf\x44\x9d\x83\xbe\xfd\xa7\xe5\x23\x65\x6f\xa8\x7f\x1a\xa7\xab\x83\xa4\xb5\x7f\xfd\xf3\x5c\xa6\x97\x05\x4b\x06\xf8\x5a\xfa\x9f\xae\x8f\x3a\x13\xc6\x2a\xf3\xe7\x12\x12\xd5\x78\x8a\x7b\x09\x9e\xad\xd8\xbf\x7c\xbc\xc1\x35\x20\x75\x12\x2b\xa1\x86\x09\x38\x72\x7c\x5d\xb2\x90\x06\x7f\x8e\xad\x4b\x61\xfe\x7b\xa3\xb8\x9b\xa8\x91\x12\x84\x09\x0a\xac\x43\x41\xd8\x47\xae\x01\x85\x06\xdf\x15\xc8\x41\x5d\x2e\xbc\x3f\x45\xed\xb0\x96\xc2\x01\x75\x08\xda\x99\xda\xb9\x7d\x26\xa4\xf9\x2c\x2c\xbf\xcf\x73\x84\xa3\x52\x12\x3a\x95\x80\x74\x01\x87\x88\x20\xa5\x00\x47\x79\xd5\x0d\x70\x38\x23\x39\xd7\x86\x5e\xb3\x01\xb9\xb4\xa7\x64\x9c\xb0\x80\xd4\x13\x04\xfa\xb9\xb0\x94\x94\xc2\xf0\x0c\xbe\xad\xc6\xb1\x53\x8e\x4f\xcf\xd3\x11\xd1\x65\x02\x2d\x6f\x15\xeb\xfb\xf3\xd8\xdd\xb5\x20\xc9\xaa\x77\xe9\x85\xc5\x9e\x50\x34\xd0\x8a\x14\x7e\x8a\x0d\x74\x85\x63\xaf\x85\xec\x6c\x3b\x4f\x29\x92\xea\x0c\x06\x62\x42\x17\x65\x7b\xec\x66\x3e\x9f\x08\x6d\x45\x17\x7f\x10\x2c\x61\x5a\x53\x35\xc3\x06\xa3\x3c\xf4\x41\x74\x89\xb3\x20\x94\x72\x2a\x4a\x18\x40\x31\xec\x56\x5b\x26\x40\x1d\x4a\x86\x4a\x5e\x33\x11\x2a\x12\x82\xc0\x0b\x69\xd9\x55\x12\x2a\xa4\x03\x48\x92\x4c\xa8\x18\xb3\xaa\xe8\x3c\xa7\x29\xd0\xfe\xc7\xa0\xdb\xf9\xf7\xb1\x14\xa0\x23\xab\x22\x71\x03\xa4\x18\xda\x83\x30\x44\x51\x3e\x08\xe2\xdd\x30\xbd\x2a\xcc\x61\x5f\x89\x67\x8d\x64\x22\xe9\xc6\xaf\xde\xde\xa3\xde\x07\xfd\x65\x8d\x29\xe0\x39\x33\x34\xa5\x86\x76\x96\x06\xfe\x96\x86\x46\x9a\x2e\x47\x04\xd8\x21\xca\x1d\x71\x27\xb9\x57\x5e\x65\xc1\x63\x18\x02\x90\x06\x13\xbf\xfa\xd8\x83\xde\xf2\xb5\x8b\x61\x62\x76\x37\xa8\x86\xae\xbd\x3a\x0c\xef\x47\x43\x91\xc5\x52\x92\x96\xa0\x68\x56\x22\xad\x4d\x8c\xbd\x93\x10\x8c\x5d\xe8\xce\xa8\x7c\x55\xa5\x12\x24\xf5\x54\xef\xa5\x6a\x20\x9e\x75\x4c\x18\x8e\xad\xd2\x3d\x6e\x84\x23\x7e\x29\x70\xab\xce\x2d\x03\xac\xd3\x98\x19\x5d\x25\x69\xe2\x69\x62\x45\xa4\x3b\xcb\x9d\xdb\x02\x8e\x1a\xb7\x34\xce\xf2\x5f\xae\x8f\xe2\xc2\x69\xe9\x4e\x0b\x7b\x7e\xad\x7d\x65\xba\x8b\x45\x61\x47\xd9\xb7\x32\x6d\x1f\xd4\x9a\x6b\x8d\x5a\x0d\x5c\xd5\xac\x60\xfd\x92\x06\xb7\x12\x3e\x19\x42\xfc\xba\x86\xaa\x81\x47\xc0\x84\x4e\x9b\x7b\x67\x2b\xfd\xb7\x1f\xda\x9e\xc1\xe3\xfa\xf0\xb8\xfe\xcb\xb6\x7e\xf0\xf6\x49\x90\xfe\x6a\x99\x0c\x59\x9f\x50\x07\x81\x0f\x2b\x5a\x2f\x3b\x89\x4b\xcc\xf7\xa6\x0c\x27\xaf\x4b\xf1\x08\x69\x35\xae\x30\x97\x71\x2b\x2f\x5f\x91\xcf\x6a\xba\x96\xd3\x69\x83\xe5\x8d\x55\x50\x7b\xde\x14\x1f\xb8\x25\xf7\x10\x5f\xf5\xdb\xf7\xe7\x06\x03\x25\x6f\xb9\x55\xea\xab\xad\x82\xe2\x6d\x95\x64\xe8\x69\x1f\x8a\x5d\x2d\x1b\x2b\x99\x65\xbe\x11\x3a\x9a\xe2\x73\x49\x52\xd0\xb7\x07\xc3\x2e\xbd\xe0\xf2\x08\x9a\xbe\x60\x37\x41\xa5\xa3\x1a\x91\x4a\x7d\xd0\x1f\xdc\x32\x3e\x73\x6d\xd9\x78\xa1\x22\xec\x50\xcc\x70\xea\xc7\x61\xb1\x6e\x33\xc0\x7a\x3e\x45\xc9\x12\x1e\xe6\x42\xb3\x1b\x3a\xd3\xb0\xbf\x2a\x8b\x30\x3c\xdf\xe1\xb6\x57\x03\x5f\xb0\x51\x8b\xe6\xec\xf1\xd5\x59\x5a\x40\x77\x89\x01\x80\xca\xc2\x45\xf3\x6c\xdf\x6a\x98\x06\xfd\xac\xe7\xaf\xee\xf2\x0b\x20\xc5\x12\xf2\xab\xba\x08\xd4\xd6\x9b\x0e\x9d\x9f\xc2\xc0\xde\x66\x1b\xc3\x1f\xfe\x2c\x0f\x11\xc7\x21\xb3\xfb\xad\xc2\x92\x02\xde\x8d\x7f\xbb\x24\x01\xad\x62\xfa\x1f\xa1\x31\x91\x0b\xed\xf8\xc2\x62\x7b\x14\x1c\x9e\x9f\xe2\x13\x07\xd0\x7a\x96\x8a\x99\xd3\xb2\xcc\x84\xab\xb4\x5f\x50\x65\x66\xe8\x1c\xe9\xd5\x9e\x16\x8a\x2a\x3b\x20\x47\xa7\x31\xe6\x36\x9d\xcb\xe2\xab\xb6\x46\x40\x3e\xb7\x3e\x3e\x28\x77\xeb\xca\x6c\x1a\x45\xda\x96\x78\xfa\xab\x5e\x47\x1c\xa1\x91\x79\xaf\xc5\x93\xa0\x48\x1a\x0b\xe2\x6e\x4f\xe4\xb9\x4c\x18\x3c\x58\x41\x5f\x76\xbe\x25\x19\x97\x9c\x05\xfd\x0c\x0c\x7d\x3b\xad\x1e\xe1\x23\x7b\xa4\x49\xd1\x77\xf5\xed\xc1\xf5\xee\x74\x3c\x9f\x32\x8a\x46\xbb\xdd\xac\xe8\x50\x8d\x9f\x15\x0f\x10\x76\x37\xd9\x13\x52\xe0\x8e\xc7\x7b\xf7\x31\x63\xf6\x16\x8f\x31\xdc\x32\x20\x3f\x4f\x98\x88\x8f\xbb\xd8\xd7\xde\x0b\xc7\x2e\x17\xa9\x5d\x6e\x38\x0b\xc1\xf6\xd7\x65\x92\x30\x16\xbc\x45\x71\xef\xf5\x4a\x22\xb9\x29\xe7\xd4\x24\x13\xa6\x89\x96\x00\x3e\xaa\x0d\xcd\xb2\xca\x4b\xe3\xc8\x25\x41\x73\xf0\x0e\xfa\x48\xa1\xa8\x95\x85\x3b\x87\x55\x91\x51\xe7\x15\x19\x95\x22\xc1\x9c\x2c\x6e\x66\x7e\x06\xf1\x09\x0f\x3f\x03\xd3\x54\xa3\xf3\x86\x8f\xd0\x1b\x1c\x99\x98\x81\x98\x20\x52\x67\x28\x44\xeb\x67\xbd\x83\xdd\xb3\xf2\x73\x48\x93\xeb\x1b\xaa\x52\x0d\x15\xef\xd4\x70\x6c\x2a\xd8\xab\x0d\xbb\x17\xcd\xc1\x3e\xbd\xa6\x1b\xec\x07\x43\x16\x1a\x4a\xcb\xb9\xc7\x10\x5a\x1a\x99\x53\xc3\x13\x70\xd1\xf0\x51\xe4\xdb\xcf\x43\x9f\x87\x10\xa7\x45\x59\x0e\xa7\x83\x7b\x0d\xb0\xd6\x14\x56\x68\x98\x1b\x49\x78\x6e\x75\x2e\x0a\x0d\x93\x47\xa1\xbe\xdd\x07\x22\xee\x9a\xa9\x55\x2c\x7f\x86\x30\x50\x74\x17\x3a\x7f\xac\x59\xae\x61\xf8\x10\x67\x08\x0e\x76\x57\xc8\xdd\x9b\x53\x89\x88\xff\x95\xe5\x6a\x3b\xdb\x88\x59\x7b\x76\x81\x6e\x98\xd5\xb5\xf4\x9d\x2c\xab\x07\xcb\xe6\xc4\xc7\x02\xab\x7e\xb9\xf6\x0e\x03\x97\xc6\xbd\x97\x2a\x59\x14\xce\xf5\x97\xef\x2f\xce\x09\xa2\x7b\x6a\xca\x34\x44\xb6\x7d\x6a\xb8\x25\xc5\x98\x09\xa6\xa8\x81\xf8\x80\x43\x2b\x84\xdd\x3b\xff\x10\xc8\x1a\x26\x11\x98\xf9\xde\x61\x56\x4c\xe8\x3e\x79\xef\x9a\xe6\x07\xfe\x0d\xb9\xe6\x2b\x69\xa4\xe8\x4c\xf4\x51\x81\xad\x2a\x79\xd7\x30\x5b\x55\x72\xab\x4a\x36\xb8\xb6\xaa\xe4\xfc\xb5\x55\x25\xe3\x2b\xa4\x33\x77\xab\x46\x5e\x84\xfa\x84\x28\xbb\x24\xce\xd7\xaa\x0a\x18\x1e\xdf\xcb\x17\x9e\xb5\x41\x27\x4c\x97\xb2\x18\x53\xd7\x3a\xe7\xe9\xdd\x37\x98\x12\x87\x1f\x0e\xdd\x52\xf9\x2c\xbd\x2a\x43\xd0\x6a\x89\xa5\x61\xd1\x92\x3a\xe5\xe1\xc1\x6b\x58\x43\x7d\x39\xc0\xce\xd6\xfd\x30\x6c\xbf\x4a\xca\x6b\xdc\x08\x30\xbe\x3a\x5c\x4d\xd2\x39\x3c\x49\x7c\x3d\xb9\x1c\xbe\xfa\xd5\x59\x6d\x00\x79\x94\xfa\x00\xd2\x7d\x8d\x00\x79\xfc\x3a\x01\x12\xea\xb6\xba\xdf\xf7\x17\xbe\x8e\x6c\x6e\xe7\x3b\xd1\x7d\xd7\xce\xaf\xe1\x94\x85\x71\xb8\x26\x32\xe7\xc6\x30\x9f\x57\x11\x76\x32\x78\xc3\xe3\x3a\x1a\x27\x73\xc0\xec\xc6\xe4\x09\xf6\x31\x74\x5a\x8a\xf4\x39\xd0\xca\x6e\xb8\x06\x23\x82\x0a\x6b\x02\x22\x5c\x2c\xc8\x8e\xbe\xcb\xbb\xf5\x66\xed\x56\x0e\xb5\x1f\x77\x2b\x87\xe2\x6b\x2b\x87\x08\xb4\xac\xca\xa0\x68\xa3\x53\xe5\xf1\x10\x13\x2e\xc8\x6f\x25\x53\x33\x22\xa7\x2c\xca\xeb\x84\xa6\x54\x9a\xa7\x2e\x33\xd2\xf9\xed\xda\x5a\x5d\x1b\xaa\xd7\x81\x5f\xf1\xe4\xa3\xd5\x9f\x01\x5b\xa0\x73\x49\x3f\xff\x80\x3a\x44\x10\xae\x82\x5f\x62\x2f\xda\xad\x8c\xd5\x03\x87\x01\x5e\x7d\x02\xbe\xb8\xc3\xb3\xe3\x2e\x4d\xe0\x2e\x22\xe9\xa4\xbb\x68\x3a\xb9\x8d\x51\x97\x91\x08\x49\x19\xbe\x81\xc3\x2c\x64\x3c\x04\x1f\x1c\xb9\x66\xb3\x9e\x4b\x2c\x72\x5d\x08\xfd\xcd\x98\xa3\x57\x6f\x95\xd2\x0e\x82\xaf\x7e\x75\x7c\xea\x74\xe9\x33\xc3\xab\x6d\x6b\x8c\xfa\x58\x9e\xb8\xdd\x1c\x84\x1d\x1f\xac\x1d\xb4\xd0\x88\xaf\x1a\x93\xba\x96\x36\x90\xf4\x0e\xdc\x0a\xa0\xfc\xbe\x54\x29\x30\x28\x94\x67\x81\x84\xed\x86\xbd\x48\xd7\x6e\x1b\xbc\xfc\x32\x3e\x12\xb1\xc2\x16\xac\xd5\xc4\x5c\xb3\xd9\xae\x76\x28\x15\x52\xe8\x09\x2f\x7c\x2f\x45\x90\x93\x6e\x57\x92\x9f\x20\x15\xcc\x0f\x81\x12\xf1\x54\xf4\xc8\x99\x34\xf6\x9f\x13\xc8\x6d\xc5\x10\x84\x64\xfa\x4c\x1a\xf8\x64\xa3\xc9\x8d\xaf\xf6\x48\xc4\x76\xf1\x0b\x0e\xd1\x07\xcc\xe2\x86\x3a\x51\x9f\xf1\x08\x44\x75\xc9\x2d\x61\x61\xb8\x26\xa7\x82\x48\xe5\xa9\x6a\x7c\xcb\x28\xed\x86\xf0\x5e\xdd\x28\x58\xb4\x64\x0c\xb7\x18\x52\xd5\xd6\xe2\x8e\xe1\x42\xdc\x89\xfb\x6f\xc0\xeb\x0b\x81\xba\x90\xa6\x09\x6d\x8b\xa8\x61\x63\x9e\x90\x9c\xa9\x31\x20\x9a\x24\x93\xae\x97\xb8\xab\x73\x11\xaf\x0e\x4f\x47\xbc\x3a\xe5\x43\x50\x51\xde\x40\x02\xee\xe3\xa8\x3f\x38\x36\x1e\xd7\x39\x2d\x2c\x0b\xfe\x8f\x3d\x95\x81\x0b\xfe\x17\xda\xa2\xe9\x01\x39\x24\x9a\x8b\x71\xc6\x6a\xdf\xb9\xc0\x41\x3c\x8c\x1d\xc1\xda\xac\xbf\x95\x7c\x4a\x33\x86\x09\xf3\x54\x84\x5e\x26\x72\xb4\xa0\x74\xf5\x5c\x6f\x34\x2b\x97\x43\x88\x7a\xe7\x9a\xcd\x76\x7a\x0b\x6c\xbb\x73\x2a\x76\x2a\x70\xa4\x1a\xa3\x06\xe5\x02\xa2\x97\x3b\xf0\xdd\xce\xa7\xd1\xd3\x9e\x80\xe9\xda\x19\x4f\x3a\x37\xf3\x51\x46\xb5\xee\x02\xa7\xe5\x76\xec\xf1\xcb\xe8\x49\x55\xdd\xb5\x2b\xba\x48\x30\x1d\xba\x3b\x1f\x39\xd4\x18\x76\x95\x02\xdb\x01\x9d\xa7\xae\xa1\x73\x5b\x20\xb7\xf9\x33\x27\x0c\x1b\xca\x50\x6f\x62\x94\x82\x2a\x5b\xe5\x16\x8a\xff\x04\xf1\x70\x39\x8a\xfb\x40\x70\x0d\xee\x27\xee\x0b\x53\x85\x34\x84\x8b\x24\x2b\x53\xec\x80\x01\x3f\x05\xe7\x55\x37\x86\x6a\x67\xe4\xed\x9c\x81\x7f\x0a\xc3\x7a\x9d\xd3\x67\xd6\x2c\xd4\xfe\xcc\xa7\x40\x40\xda\x49\xc8\x26\x40\x6a\xaf\x93\x5a\xa3\x46\x55\x0e\xf5\x56\x21\x47\x75\x3d\xf2\x35\x1f\x2a\x46\x8e\x26\x54\x08\x96\x45\x38\x2c\xce\xd1\x49\x8d\xa1\xc9\x04\xd3\x9f\x29\xb1\xfb\x38\x63\x66\x57\x63\x8b\xfa\x9c\x26\x13\x2e\x02\x78\x81\x08\x78\x44\x55\x29\xd5\x1a\x9a\xeb\xb4\x35\x84\x3a\xec\xcb\xb2\x7b\x7b\x63\x96\x0a\xd4\x7b\x34\x77\x4f\x85\x6e\xef\x76\x39\xd0\x1a\x4f\x5c\xe8\x12\x02\xf7\xde\xdd\xda\x25\x0f\xee\x69\x2e\x46\x4c\x29\x5c\x93\x21\x73\x3f\x20\xbc\xd6\x77\x75\xe0\xfa\x3d\x4c\xe4\x0d\x49\x25\xb9\x81\x0e\xa4\x53\xab\x1a\x40\xfe\x8d\xf6\x4a\x45\x34\x53\xc8\x88\x4b\x64\x5e\x28\x99\x73\xed\x6b\xfc\x1c\x43\xac\x0d\x76\x24\x2b\x1b\xe3\xb4\xde\x06\xae\xf9\xfa\x88\x18\xaa\xc6\xcc\xd8\xc1\x89\x28\xf3\x21\x6b\x09\xab\xb2\x6e\x08\xef\x4e\x3b\x65\x44\x94\xba\xa7\x01\x06\xb9\x70\xcf\x45\xc0\x13\x48\xc6\x1b\x49\xe5\x52\x0a\xc3\x97\x0e\xa7\xdd\xb2\xdc\x4f\xee\x5c\x2c\x85\xd1\x2d\x61\xd3\xdb\x34\xd0\xc0\xe5\xff\xf9\xe7\xb3\x6e\x70\xcf\x97\xf2\xd6\x8d\x54\x59\x7a\xc3\x53\x4c\xd4\xd0\x64\xcf\x3e\x6e\xbf\xdd\x3b\xaf\x11\xf8\xbc\xf5\x46\xbe\xb9\xe1\xe9\x63\x90\xdb\x67\x06\x5b\x72\x13\xa0\xb7\xeb\xd5\xcf\xa1\x2f\x1c\x3c\x76\x9f\x9c\x70\xac\x23\xb7\x7f\x21\xa2\x68\x3e\xe4\xa2\x42\x42\x08\x0c\x01\x27\x9f\x95\x0b\xde\x22\xd7\xcc\x60\x05\x30\x14\xd1\x4a\x33\x21\x9a\xe7\x65\x66\xa8\x60\xb2\xd4\xd9\xac\x25\x1b\x3f\xd5\x25\x1d\x65\xec\x23\xee\xe6\xf6\xfa\x4b\x18\xaa\xae\xc7\x8c\x11\xed\xc1\xaf\xf0\x82\x22\x53\x25\x37\xa7\x07\x41\xa9\x09\x65\xec\xec\x23\x4b\x5c\x9d\x53\x91\x95\x63\xde\xa8\xa4\x75\xdb\x14\xb0\xd1\xaf\x57\x6b\x0a\x58\xb5\x3c\x2b\x35\xab\x90\xbe\xda\x35\xdd\x7e\x1a\x3d\xfc\x1e\x55\x55\xbc\x5a\xde\xa8\x2f\x65\x05\x13\x29\x20\x87\x47\x3b\x0e\xa7\xbb\x36\x6a\x3b\xc4\xee\xae\xcf\x85\x93\x8f\x46\x51\x2b\xe4\x73\x80\x93\x71\xb0\xe0\x7c\x44\xa8\x68\x2b\xb0\x9f\x4b\x6f\x29\xb2\xd5\x1b\x1f\x7c\xe9\x4e\xfb\x4b\x46\x04\xab\xf5\x97\xec\xb8\xbb\x24\x9e\x7e\x6e\xa3\xeb\x7a\x59\xd4\x92\x2e\x90\xee\x29\x71\xfd\x52\xdb\x6e\x90\x7a\x49\x93\xb8\xb9\x59\xad\x71\x4f\x6e\x5b\x43\x3e\xad\xd6\x90\x23\x40\x1a\x6a\x0f\xe3\xfb\x1a\xc7\x99\xf3\x9d\xb9\x0f\x9d\xce\xb9\x8a\xaf\xcc\xed\xa8\xe8\x78\x85\x9e\x2f\x6e\x20\x57\xb7\x4f\xb4\x5d\x8d\x2a\x49\xbf\x14\xa2\x99\xd0\x5e\x77\x07\x3d\x6a\xa8\x66\xa6\x8d\x47\x77\xb1\xa0\xc1\xeb\x83\x38\x36\x36\x9e\x84\x42\x43\x0f\xb7\x43\xfa\xdf\x3a\xcd\x51\xd4\xee\xb4\x3a\xa3\x27\xb4\x47\xfa\x65\x21\x75\x0b\xc7\x48\xed\xf2\x26\xd4\xb4\xec\xa5\xde\xe2\x94\x75\xb3\x7d\xff\xfe\xf4\xb8\x13\x9a\xd9\x81\xe6\x68\x36\x08\x68\x7a\xa5\xe0\xbf\x95\xb1\x0d\x0c\xc8\x83\x81\x4a\xee\xfe\x75\x90\x62\x9c\xb0\xca\x19\x7f\xcc\xf5\x75\x7b\x20\xee\x1f\x8e\x4e\xea\x43\xd6\x37\xf3\x0f\x47\x27\xc4\x7d\xba\x92\x0f\xfc\x21\x4e\xf0\xb6\x78\xce\xe3\x84\x55\xe1\xb1\x94\xeb\xeb\x35\x80\x78\xb7\x35\x4f\x8b\xf4\xac\x59\xb5\xe0\x26\xfb\xf3\x3d\xf6\x67\x04\x50\x3b\x93\x25\xb9\x71\xa8\x74\xce\x80\xbb\xe2\xc5\x2b\x72\x22\x74\xa9\x58\x95\xe5\x34\x6f\xcb\x59\x1d\x6a\x65\x73\x0e\x80\xff\xf4\xab\xce\xfc\xff\x5d\xf3\xe7\x73\x09\x28\x14\x54\x19\xb0\xc1\x3a\xc2\x31\x87\x36\xa5\x6e\x48\x4f\x84\x7b\x98\xe7\x74\xe4\xeb\x14\x7a\x0e\x95\x2a\x80\x7d\xfb\x9b\x2c\xbb\x44\x30\x95\x31\x83\xbc\x0e\x00\xb4\xe4\x20\x65\xd3\x03\x9d\xd2\x97\x3d\x78\x8c\x07\x33\x32\xb5\x39\x51\x4d\x76\x5e\xee\x0c\xc8\x25\xcf\x79\x46\x55\x36\xab\x75\xdc\xaa\xee\xb3\x87\xa9\x1f\x10\x92\x40\x5e\xec\x90\x3d\xa9\x60\xe4\x84\x0a\x92\x31\x5f\xc9\xef\xb6\xef\x0c\xcd\x87\xfd\xcd\x90\x85\x64\x63\xa2\x31\x28\x16\xbb\x61\xaf\xf7\x78\x9c\xd7\xc0\x4e\x8f\xab\xf3\x8c\x0b\x7b\xc8\x0d\xc8\x7b\x77\x3a\xb9\x63\x1f\x59\x00\x76\xad\xbf\x63\xb3\x96\x68\x63\x7c\x16\xed\x3c\x11\x8b\x8e\x8e\x4d\x23\x74\x53\x6f\xc7\x98\x9b\x0b\x56\xc8\x0e\x54\x34\x1c\x68\xce\xb3\xcf\x8d\xfd\x40\x6a\x0e\x5d\x52\xa8\x21\x14\x05\x51\x52\x66\xd4\x5a\x64\xe8\xd7\x1f\x90\xe3\x93\xf3\x8b\x93\xa3\xc3\xab\x93\xe3\x57\xc4\x8f\xc4\x63\x9d\x7e\x40\xae\x62\xbc\xe2\xa8\xe4\xcb\x81\xc2\x86\x67\xf5\x9c\x60\xa5\xa2\x6a\xf1\x00\xf8\x8d\x54\x90\x53\xc1\x4d\xd5\xb9\x0a\x93\xe8\x33\x29\x5c\x5a\xbc\xfd\xb5\x8b\x2b\x8c\x39\x26\x6f\x0a\x37\x98\xfd\xba\x3e\x1a\xec\x50\xec\xf3\x12\xa6\xd2\xc8\xbb\xb1\x66\xdd\xae\x5a\x9e\x75\x58\x99\xbe\x49\x4b\x27\x9b\xfc\x0a\x03\xb2\x55\x57\x1e\x3c\x51\x43\xb3\x41\x8f\xbf\x2a\x55\xad\x17\xe0\x60\xb0\x3b\x20\xf6\xac\xde\x1d\xec\x7a\x55\x2e\x5b\x68\x58\x19\x06\x8d\x61\xae\xeb\xfc\x3d\x20\xe4\x9d\x2f\x23\x04\xdc\xa2\xe5\xbd\x2f\x11\xac\x2f\xea\x74\x38\xb7\x4b\x7c\x4b\xd4\x72\x18\x3f\xd4\xe1\x62\x8f\xf9\x94\x09\x7c\xb1\xf5\x09\x66\x3f\xd5\x4e\x56\xed\xa2\x7a\xf3\xf7\x17\x6f\xd6\xf7\x52\x28\x59\x3a\x79\xa5\x23\x99\xe7\x88\xd8\x3c\x09\x48\x23\x15\x58\x48\x90\x7a\x6b\x31\xce\x11\xa7\x7a\xd4\x68\xc3\xce\x49\x7c\x3f\xd4\x9c\x31\x1e\x3e\x76\x75\xbd\xa2\xb2\x87\x1e\xde\x26\xcb\x01\xa5\x6b\x0f\xbd\xe9\x8e\xcf\x83\xf0\x1e\x07\x17\x27\x87\xc7\x6f\x4f\x06\x79\xfa\x04\x85\x2f\x13\x69\x21\xb9\x30\xba\xa9\x61\xde\xac\xdd\x76\x5b\xb1\x1d\xa6\xdd\x8d\x6e\x76\xe2\x87\x8b\x13\x3d\xfd\x33\x22\xe4\xfb\x94\x19\xca\x33\x1d\x71\x98\x91\x85\xcc\xe4\x78\x79\xd7\xad\x07\xb0\xce\x9f\x10\x3b\xb5\x4f\xfb\x96\x27\xd7\x67\xb1\x36\x6f\xd5\x5b\xa7\xa8\x6f\xcd\x0b\xbd\x34\x02\xb5\x82\x25\x08\x1d\x75\x9f\x01\xc1\x3e\xa1\x89\xb0\x40\x45\xf4\xc9\x80\x88\xf3\x8d\x09\x2a\xa4\xff\xa8\x81\xf7\xaa\xb6\xc3\x7a\x88\xdf\xd4\x6c\xb0\xd2\xbc\x69\xa7\xf8\x3a\xd5\xff\xe6\x46\xaa\x1f\x22\x85\x62\xfd\x00\xa8\x0c\x1d\xa4\xa5\x8a\x74\xb0\xf8\x4c\xf1\x4e\x5c\xef\xf2\xc5\xbb\xb2\xd9\xbc\x33\xb7\xd2\xd2\x83\x0f\x1d\xf1\xea\xb2\x6c\x56\xb5\xcb\x70\x2e\x2d\x3a\x46\xa0\x64\xe5\x22\x65\x85\xe2\x53\x9e\xb1\x31\x34\xdc\xe1\x62\xec\x5b\x8f\x47\x78\xfb\xd0\xfe\x92\x2d\xcc\xcb\x2e\xb6\x36\x71\x03\x38\xe0\xac\xb3\x77\x57\xd0\xc4\x09\x52\x61\x5a\x1b\x93\xf6\x81\xd0\xec\xba\xdf\xef\x83\xff\x6e\xef\x5f\xd6\xaa\x49\xb3\x7d\xf2\x33\x73\xcf\x91\xd0\x68\x4a\x41\x27\xf5\x89\x0c\x9d\x7e\x60\xae\x15\x65\x81\xa1\x31\x39\xce\xdd\x75\x60\xef\xb4\xea\x33\x1e\xe7\xb5\xfb\x39\x03\x30\xe7\x2a\xe6\xff\x14\x2d\xa0\x35\x1d\xa2\x1d\x4b\x7b\x1f\x27\x5a\xb6\x47\x42\x5c\xbf\x70\xe7\x02\x25\x7a\x96\x67\x5c\x5c\x57\xe8\xe1\x23\x69\xf9\x18\xeb\x7a\xb9\xb8\xf6\xbb\x46\x31\x9a\xdd\x7e\x62\x34\xe1\xd1\xb5\x9d\x16\xa6\xb3\x50\xc2\xd5\xac\xc0\x3c\xb6\x20\xbc\x5c\x92\x55\x2c\xea\x77\x76\x9e\x34\xc5\xb8\x4e\x34\x6f\x2f\xde\x4f\x2f\x8f\x2e\x4f\x6b\xb2\x5d\x10\xfc\xec\x53\x06\xec\x6e\x3b\x5c\xe1\x25\x9f\xb4\x05\xc1\x7f\x6b\x96\xe1\xd4\x27\x59\xd9\xf4\x97\x98\x44\x7d\x2e\x95\xa1\xd9\x1a\x04\x67\x32\xa1\xc5\x61\x69\x26\xc7\x5c\x27\x72\xca\x3a\x72\x43\xdc\x4c\xb0\x03\x99\x6f\xb8\xc0\x3d\x93\xe2\x33\xc8\xd1\xdf\x0e\xcf\x09\x2d\x2d\xd7\x19\xd7\x5c\x66\x6d\xe9\x69\x9e\x02\x97\x58\xf2\xfb\x88\xef\xef\x9e\xb0\x51\x6f\xbf\x0d\x0a\x3f\x7a\x50\x18\xe4\xe2\x73\x09\x04\x73\xc1\x0d\xa7\x46\xaa\xce\xa2\x75\x47\xa5\x36\x32\x77\x5b\xe4\xd4\x0f\x0f\x39\x4e\xa0\x6a\xd5\x9e\x58\xef\xc6\x0a\x86\x22\x90\xf7\x54\x58\xb3\x8e\x26\x6c\xae\xce\xa4\x07\xfd\x5b\x70\x6c\x1e\xee\xf9\xc6\x55\x1b\x01\x30\x79\xf6\xed\xab\x5a\x6f\xc3\x85\x96\xb7\xde\xe9\x58\xb5\x51\x5d\x9b\xb7\x98\xff\xd6\x8d\x7c\x72\xce\x7d\xa4\xcb\x7f\x95\x34\x43\x7a\x9e\xad\xd3\x13\x5e\x5f\xc7\x4e\x5e\xd3\xf3\x94\x5f\xf7\xb3\xe0\xfd\x2a\x35\xe2\xaa\xe3\x1d\x46\x51\xa1\x2d\x33\xd4\xfd\x0b\xbb\x2e\xc5\x60\x97\xec\x99\xa4\xd8\x5f\x1b\x65\xba\xaa\xe6\xc4\x97\x75\x6b\xff\x26\x54\x71\xb6\x7b\xaf\xb5\xe7\x0d\xc0\x1e\xee\xc6\x79\x5a\x23\x10\xaa\x64\xe4\x0d\xd7\xc6\xb7\x71\x85\x0f\xb8\x76\x7d\xaf\x40\xfb\x3e\x27\x52\x11\x5e\xfc\x83\xa6\xa9\x7a\x85\x67\xbd\xb3\x0e\xe1\xbf\x75\x40\x28\xa7\x22\x64\xac\xec\x99\x59\xe1\xda\x2b\x5c\x1d\x9d\x13\xec\x0e\xfd\xf5\x5f\x5e\x80\x26\xfe\xe5\x17\x7f\x79\xd1\x92\xd5\x9e\x6a\x75\x1c\xe9\xda\x0b\xd9\x79\x9e\xc2\x33\xa9\xa1\x00\x05\x14\xab\x27\xe0\x74\x73\x52\x10\xf9\xde\x32\x61\x38\x73\xbb\x54\x53\xb7\xf5\x06\x7f\xa0\x7a\x03\x12\x0a\xc6\x51\x8e\x3e\x96\x7c\x46\xd1\x7c\xfe\x54\x44\x73\x43\x6a\x36\xe5\xdc\x3a\xc7\xa2\x74\xdb\xdd\xd5\x71\x2e\x07\xd4\x53\x1e\x9f\x5d\xfe\xe3\xcd\xe1\xf7\x27\x6f\xe0\x3d\x5d\x36\xbc\x65\x45\x67\x96\x34\xc9\xdd\x5e\x9d\xb5\x9b\x7b\x8a\x9a\x92\xb3\x8b\x88\xfd\xd9\xeb\xcb\x39\x57\x9c\xfd\xe4\x81\x61\xfa\xb6\xb6\xa5\x18\xb5\xa0\xde\x53\x0b\x12\x40\x2b\x6b\xa6\xd6\x53\xdc\xdd\x71\x84\x21\x02\x50\xaf\x39\x35\x2c\x0f\xe1\x3b\xb6\xf6\x3b\x34\xe4\x0d\xb2\x71\x6a\xdc\xdd\xc1\x64\x4b\x31\xa4\x62\xe7\x61\xe4\x4f\x4a\xed\x76\xea\xa1\xea\x0a\x79\x60\xf7\x12\xc6\xf2\x09\x0f\x56\x84\x61\x1e\xb5\xb2\x27\xaa\x3d\x4b\x99\x0e\x4d\x6f\x9f\x01\xb7\x16\xcb\xba\xbd\xb5\x3f\x1d\x96\x36\x91\x73\xad\x8e\x31\x48\x53\x0b\xd1\xd7\xaa\x97\x6f\xeb\x9a\xe8\x73\x19\xa9\x73\x55\xe9\x82\x26\x9d\xf6\xe2\xa9\x3e\xc2\x4f\x00\xe8\xed\x29\x1e\x30\x30\xf1\x35\x95\x59\x85\x67\x77\xb3\x1d\x8f\xfc\x70\xf3\x60\x20\x0f\xe2\x12\xdf\x25\xba\x90\x1e\xec\x25\x46\x0d\xd9\x48\x16\x22\x1b\x77\x0e\xfd\xdc\xd0\x81\xb0\x4e\xe7\x41\x31\x91\x46\x8a\x8e\x4b\x48\xcf\x97\x0c\x5a\x97\x67\x78\xc7\x51\xd5\x7e\xbd\xe2\x0b\xac\xb0\x09\xa1\x69\x6b\x70\xf8\x13\x5b\x0a\x1f\xa4\xae\x87\xa8\x9f\x9e\x00\x2a\xd2\xd3\xe3\x35\xc8\x9e\xa7\x0f\xc3\xf3\xd0\xe0\xdc\xda\xd2\x4b\xd3\x8e\xea\xd2\x4f\x8f\x9d\x2d\xe0\x6b\xcf\xb5\xdb\x3c\xe4\xf6\xdd\xb3\x16\x3d\x49\x2a\x73\x23\x55\x57\xf0\x65\xe7\xb5\xe1\xe6\xf2\x15\xdd\x77\x0b\x78\x12\xcf\x53\x56\xe0\x5b\x3e\x79\x79\x71\x09\x89\x5c\x73\x1d\x25\xe7\x25\x44\xa8\xd4\x7d\x04\x21\xf2\x74\x84\x47\xa7\x5a\xc9\xe3\xc2\x46\xad\xcd\xa4\xf5\xbb\xa2\x13\x1a\xfd\xe4\x06\x73\xae\x4d\xcb\x1f\x95\xb8\xa5\x41\x18\xb9\x87\xae\x45\xbc\x2a\x69\xc5\x4f\x33\x29\x52\x3f\x50\x0c\xcb\x35\xb6\xf2\xcb\x32\xbb\x9e\x52\xc4\x4d\x00\x1d\xb8\x54\x8f\x60\x1f\xbd\x9c\x16\xae\xdf\x78\x2a\x6f\xc4\x0d\x55\x29\x39\x3c\x3f\xfd\xf4\x42\xb4\x75\xf1\x23\xee\x82\x36\x98\xf4\x35\x2a\x02\x0a\xfd\x90\x1b\x8d\xd9\xec\x90\x8f\x6e\x62\x1f\x92\x3d\x80\x42\x86\x88\x15\x61\x56\x5c\xb9\x59\x44\x3a\x92\x20\x32\x31\xd4\x75\x76\x0f\x5d\xef\x5f\xbc\x78\x81\x21\x85\x17\x7f\xfd\xeb\x5f\x09\x74\x5d\x4c\x59\xc2\xf3\xc5\x1b\xe1\xae\x3f\xbf\x7c\x39\x20\x7f\x3f\x7c\xfb\x86\xd0\x04\x2c\x30\x84\x54\xc5\x91\x61\xed\xe2\x1f\xeb\x1e\xf9\xbf\x97\xef\xce\xaa\x76\xef\xf5\x6f\x81\x35\x72\xff\x7a\x03\x72\x1c\xa5\x9f\xc7\x2e\x7f\x6a\x26\x90\x92\x2f\xa4\x21\x74\x34\x02\xe6\x44\x91\xcc\xb5\x17\x17\x1e\x17\x8d\x8f\x27\xbe\x5b\xb7\x65\xab\x0c\xf2\xe2\xb9\x9d\x22\x84\x58\x3c\x94\x20\xa6\xf9\xc3\x58\xe1\x74\x80\xa9\xf4\x48\xc6\xaf\x19\x19\x69\xe8\xd9\x5d\x35\xd1\x50\x4c\x5b\xfb\x29\xa1\xc2\x8e\x8e\x83\x85\xa9\xdb\x49\x3c\xed\xdc\x85\x96\xdd\x9d\x6b\x0c\xeb\x1b\xc3\xf9\xba\x24\x94\x27\x96\xec\x4f\x35\x97\xa0\xae\x2f\x86\xf7\x41\x2e\x72\x50\x7c\x41\x6c\x12\x9a\x49\x31\x8e\x99\xae\xd2\x23\x7c\x02\xe2\xac\x60\x4d\x89\xd1\x51\x37\x95\x6e\x7a\x93\xa1\xe4\x7e\x4b\x5b\xf6\xf7\xaf\x87\x56\x23\x28\x44\x3a\x94\xa5\xf1\x29\x6f\xf8\x24\x80\xc0\x02\x8c\x44\x24\x78\xab\x07\x77\xd6\x98\xa6\xbb\x56\x6f\x1d\xf5\x59\xaa\x1f\xc4\x35\x65\xb3\x47\x18\x4d\x26\xe4\x9a\xcd\xfa\x28\xe2\x0b\x0a\xe8\x07\x40\xe7\x63\x4b\x5d\xec\x2f\x54\xcf\x28\x48\x58\x6a\xed\x40\xb7\x08\x3e\x33\xb1\xe2\xfa\x80\x9e\xe0\x4d\x25\xed\x34\x6a\xd7\xb7\x48\x44\x8e\x43\xdf\xa8\x30\x91\xc2\xb8\x26\x88\xa1\x51\x11\x64\x5a\xce\x55\xd8\x5b\x89\xc2\x52\xfb\x33\x7d\xd7\x93\xab\x74\x4c\x7b\x64\x38\x65\xa2\x14\x0b\xbf\x06\x24\x70\xc8\x7b\xd5\xcc\xe1\xf9\x50\xdf\x00\x2f\x4a\xe9\x9c\xf0\x04\xaa\x6a\xec\xed\xee\x5e\x4f\xa5\x40\x88\x1a\x02\x80\x66\xa6\x74\xa4\x81\x5c\x5a\xfb\x6c\xa6\x35\xe1\xf0\x86\x39\x55\xd7\xcc\x83\xd9\xd2\x6c\x40\xce\xed\x24\x03\x4e\x39\xf6\x8d\x9b\x62\x11\x84\x95\x29\x31\xb4\x81\x7d\xc8\xee\x60\xb0\x8b\x67\xe1\x12\xa0\x83\xd6\xfc\xd2\x65\xcb\xb0\xce\x5a\x85\xd5\xf5\x20\x5a\x68\x6c\x9d\x66\xad\x03\x68\x4f\x28\x01\x77\xc4\x4c\xbc\xb6\x40\x5b\x82\x4f\xc7\x57\xc7\x3d\xab\xba\x6d\x7b\xd9\x5d\xd3\xcb\x16\x21\xf0\xfa\xd5\x75\xb3\xcb\x0e\x5b\x5d\xd6\x13\x8e\x9d\xfc\xa9\x4e\x90\xae\xfa\xee\x75\xde\x58\x31\xef\xa0\xad\x95\xbf\x6e\x43\x2e\xce\x57\xb1\x2e\x40\xd1\xb6\xb2\xfc\x49\x99\x13\xa7\x23\x90\xa1\xcb\xd1\x5a\x22\x2b\x2d\x1c\x29\x96\x02\xeb\xb7\x23\xba\xe8\x15\x4f\x3a\x32\x2c\xe6\xaf\xf6\x86\xc6\xfc\xd5\x26\x99\x65\xfe\x5a\xd8\xe7\xe1\x4c\x2d\xa2\x52\x5a\x58\x22\x23\xa1\x07\xa3\x09\xc2\x60\x40\xde\xba\x33\x17\x99\x9b\x0e\xb5\xcc\x4a\x13\x60\x15\x96\x1c\xc8\x30\xa8\xef\xd8\x88\x70\x43\xfe\xb6\xe8\x78\x06\xc5\x04\xcf\xac\x6e\x4e\x6a\xbc\x3a\x14\x36\x6d\x93\x51\xf1\xfa\x83\xa5\xa4\xe2\xd5\xe1\x2a\x78\xbd\xb0\xe3\x95\xb8\x74\x98\x92\xbe\x0e\xb0\xa6\xbd\x42\x5a\xaa\xd1\xa8\x1a\x7b\x45\x14\x1b\x1e\x36\x45\x5b\xae\xae\xf6\x8e\x57\xf7\x3a\xce\x1b\x78\x78\x7e\xfa\xe8\x56\x66\xf4\xac\xad\x9d\xb9\xd2\xb5\xc4\xe1\x0b\x40\x04\xde\x09\x74\x5c\x51\xd4\x05\xd8\xac\xfc\xfd\x03\x98\x2b\x0b\x2f\xfe\xda\x9e\x3b\x51\x50\x6a\xae\xe5\x03\x7a\x70\xab\x13\x2a\x6a\x13\xe1\xd3\x65\x40\x9a\x3d\x7f\xd3\x66\x43\x0d\x12\xa0\x7e\x8b\xba\x97\xf9\x6b\x3e\xb1\xd4\x11\x91\x5c\x42\xaf\x7d\xf4\x9e\x44\x6e\x98\x42\xa6\xaf\xb0\x69\x33\x15\x42\x1a\xec\x31\xdf\xc3\x66\xfd\xba\x87\xee\x15\xab\x64\x46\x89\x56\x2a\x0a\x61\x76\xac\x56\x76\xc6\x3c\xa4\x73\x06\x22\xc0\x44\x40\xbb\xf3\x6e\x38\x89\x3c\x02\x37\xd9\xab\xd2\x4a\xba\xec\xab\x5e\x0f\x37\xe2\xf8\x9e\x89\x74\x32\x61\x39\xc5\x06\x17\x9e\x40\x56\x5e\xdf\x28\x6e\x0c\x43\xfc\x6b\xa6\x72\x4d\xe4\xa8\xe7\x4d\x24\x44\x3d\x99\xbe\xdc\xe9\xae\x3f\xfd\x23\xd8\xca\xc4\xef\xd0\xa6\xf0\x55\xb7\x5d\x75\xdf\x7f\xcd\x8e\xb0\xbb\x13\x0c\xe6\x0c\x3a\xee\x88\x39\x27\xa4\x55\x22\xa6\x48\xff\x8d\x26\xdd\xe6\xb9\x19\x7a\x41\x19\xdd\xba\x19\xb6\x6e\x86\x2e\x46\x7c\x34\x37\x43\x74\x70\x7b\x61\xea\x16\x20\x76\x3d\xc4\xf8\xef\xde\xff\x50\xe1\x3a\x44\x58\xc6\x96\xe5\xbd\xe7\x41\xaa\xba\xff\x7f\x77\x30\xd8\xdd\xf5\xfe\x08\xb7\x3f\x4a\x33\xea\x7f\x4d\x98\x48\x64\x8a\x4c\x65\xc7\x57\xda\x80\x52\x5b\x19\xe0\xf1\x5c\x72\xff\xac\x38\x86\x00\x63\x77\xcb\x12\x1d\x4a\x28\x9f\x33\xf2\xfa\x51\x55\xb0\x4a\xf1\x0a\xf0\x55\x8e\x80\x01\xe5\xcf\x69\x60\x55\x0e\x4b\xc6\x73\xee\x70\xf5\xac\xb8\x60\xda\x68\xb2\x87\x1f\x0e\x92\xa2\xec\xb9\x1b\x06\x39\xcb\xa5\x9a\xf5\xc2\x4d\xf6\xcb\xda\xaf\xdc\x1d\xfb\xa0\xb5\x25\xa5\x52\x4c\x98\x6c\xf6\xc7\xd5\xdf\x3c\x89\x37\x58\x7d\x0b\x5c\xd1\xa6\xc4\x62\xd9\x35\x57\x76\x11\x80\xed\xc1\x51\x17\xa8\x0d\xe7\x90\x2b\x76\xe8\x05\xf7\x11\x7c\xca\xc4\x94\x4c\xa9\x6a\x5c\xec\xb0\xec\x7a\x14\x8d\x2d\xe5\x53\xae\x65\xe3\x72\xb1\xa5\x43\x2e\x7a\xbf\xb8\x6b\x04\x20\x4b\x53\x94\xc6\x9d\x2e\x7e\x6f\x7b\xa8\xb9\xb0\xa7\xe7\x14\xdf\x97\x3b\x1d\x4e\xae\xa0\xc6\x30\x25\x5e\x91\xff\xde\xfb\xf0\xf9\xef\xfd\xfd\xef\xf6\xf6\x7e\x79\xd1\xff\xcf\x5f\x3f\xdf\xfb\x30\x80\xff\xf8\x6c\xff\xbb\xfd\xdf\xfd\x1f\x9f\xef\xef\xef\xed\xfd\xf2\xe3\xdb\x1f\xae\xce\x4f\x7e\xe5\xfb\xbf\xff\x22\xca\xfc\x1a\xff\xfa\x7d\xef\x17\x76\xf2\xeb\x8a\x83\xec\xef\x7f\xf7\x1f\x1d\xbe\x04\x15\xb3\x77\x9d\x89\x60\xbc\xfa\x8f\xa2\x46\xd4\xc7\xee\x98\x75\x09\xf9\xd8\xaf\x9c\xd7\x7d\x2e\x4c\x5f\xaa\x3e\x3e\xe4\x15\x31\xaa\xec\x4a\x74\x55\xc7\xdf\xe3\xc9\x98\x4a\x89\xa9\x90\x1b\xbd\x61\xb3\x81\x42\x04\x33\x47\x1f\xdd\x1b\xec\xda\xa5\x6e\x1d\xc1\xab\x5c\x8f\x92\x70\xe4\x90\x61\xfe\xe0\xd9\x46\x97\xae\x23\xef\x36\xd5\x68\xe1\xda\xa6\x1a\x2d\x5e\xdb\x54\xa3\x07\x5e\xdb\x54\xa3\x0d\xf4\x01\x6e\x53\x8d\xb6\x3e\xc0\x27\xe2\x03\xdc\xa6\x1a\xad\x7a\x6d\x53\x8d\x1a\x5f\x4f\x33\xd5\xc8\x29\xf0\x55\x9e\xd1\xc6\xa6\x19\xb9\x06\xff\x87\x49\x22\x4b\x61\xae\xe4\x35\x6b\x19\x95\x5d\xc9\xc0\x5c\x78\xe6\x66\x5a\x9b\x5d\xa9\x94\x1d\xa8\x80\xdd\x29\x7f\xb4\x4c\xb9\x35\x33\x3b\xde\x06\x87\x6e\x58\x6f\x67\xda\x63\x51\xa4\x2c\x0d\xcf\xf3\xc2\xca\xd8\xf5\x1e\x90\x43\xa2\x58\xc2\x0b\x6e\x45\x3b\x80\xe9\xc0\xe7\xb8\x4f\x42\x3f\x60\x6e\x34\xcb\x46\xae\x27\xaa\xa8\x6a\x86\x55\x64\x42\xba\xb3\x62\xe9\x63\x50\x2b\x90\xbe\x8d\x25\xd1\x13\x59\x66\x29\x51\xec\x5f\x5e\x9d\x70\xb3\xb9\x8a\x47\x88\x1d\xa1\xf0\x2a\xd5\x63\xdd\xe0\xb4\xe0\x0e\x75\x6b\x93\x04\x1c\xfb\x58\x70\x05\x9b\xed\x92\x25\x52\xa4\x5d\xbb\x37\x4e\xe6\xc7\xf7\x6b\xed\xa2\x39\x2c\x25\x69\x89\x37\x40\x21\x24\xcd\x78\xca\xcd\x2c\x64\x61\xe0\xb6\xb7\x8a\x28\x76\xa1\x75\x8c\xa0\xab\x85\x20\xb4\x28\x94\xa4\xc9\x84\xe9\xe8\x6d\x50\xad\x74\x60\x13\xa1\xbe\x32\x2b\xc7\x5c\xa0\x66\x09\xbf\xb1\x6a\x48\x36\x23\x4a\x1a\x9f\x50\x76\xcb\x03\xaf\xa2\xc1\xe0\xe7\xa8\x4b\x18\x35\x83\xac\x33\x19\x0f\x81\xb3\xe2\xa3\xf8\x0f\x4d\x64\x96\x7a\xdc\xd2\xaf\x5f\x58\x55\x3e\x71\x5c\x6c\xa5\x3d\xa0\x4a\x1a\x49\x32\xab\x16\xd9\x13\xe0\xf6\x1f\x7f\xf1\x15\x99\xc8\x52\xe9\x41\x0c\x21\xf0\x12\x3e\x43\x27\x85\x37\x05\x0c\xc9\x18\xd5\x86\xbc\x7c\x41\x72\x2e\x4a\x7b\x96\x77\xc4\x78\x5d\x69\xaf\x91\xde\xfa\x97\xaf\x5a\x8e\xd6\x8d\xc6\xba\x98\xc1\xe2\xb8\xb5\xc0\xfe\x6c\x4e\x71\x75\x7b\x1c\x41\x31\xb0\x47\xe3\x9c\x1a\xeb\x8e\xa4\x78\x15\x85\x91\x6b\xde\xf9\xbf\x95\x72\x38\x33\xed\x61\x60\xfe\x0b\xc7\xa9\xe3\xbf\xf8\x0f\x57\xc1\x52\xad\xa0\x54\x1b\x4c\x65\xed\xdd\xa2\xc7\x5c\x9b\x46\xbd\xa2\x2b\xdc\x98\x06\x3f\x6e\x7b\x98\x8f\xad\xc5\xdb\x49\xd1\x3a\xd8\xce\xde\x56\xf3\x4e\xe5\x24\x61\x1a\x44\x91\x87\x4f\x03\xff\x2c\x3e\xb5\xe1\x43\x37\x0b\xb1\xe5\x4e\x44\x16\xcf\xfc\x1d\x74\xc6\x6c\x45\xac\x36\xba\xbd\x67\xec\x8e\xa8\x85\x83\xd5\x65\x84\xe6\x62\x8c\x8d\x2c\xf3\x32\x33\xbc\xc8\x2a\xca\x85\x1f\xb8\x03\x38\x76\xf8\xd3\xc8\xc3\x4c\x11\x38\x0a\xa1\xc1\x21\x38\xb2\x17\xc6\x62\xc2\x60\x3f\x46\x65\xcf\xf1\x82\x2a\x1a\xc8\x9f\xc8\x3c\xa7\x7a\xdf\xc5\x0e\x28\xe4\xae\xa0\x64\xb7\xc7\xb0\xa2\x59\x78\xfd\x38\x57\x60\x5d\x8c\x6b\x98\xa0\xa2\x71\xd0\xae\xee\x70\x81\xa1\x88\xbc\x09\xe9\xf1\xd8\x3f\x7d\x8e\x63\x9d\x42\xfc\x3d\x4d\xae\x99\x48\xc9\x7b\xed\x09\x97\xce\x04\xcd\x1d\xb8\x7a\xa1\x24\xf6\xed\x66\xe9\xdc\xef\x75\xcf\x39\x12\x11\x65\xc4\x83\x40\xa1\xbe\xb5\x2e\x2a\x96\xba\x23\x74\xdd\xf7\xda\x2a\x5f\x77\xcb\x3b\x8d\x4e\x5a\xc5\xa7\x09\xf3\xba\xa3\x9d\xc0\xba\x5e\x7e\xda\x18\xf1\x8d\x2c\xc7\x61\x72\x4d\x33\x71\x17\xc2\x91\x1e\x82\x8f\x80\xa3\x4e\x33\x2b\xe2\x66\x01\x5e\x67\x8e\xc1\x86\xb3\xf5\xb5\xec\x57\xc3\xf6\x00\x4d\xbb\x17\xdf\x1f\xd7\x85\xd9\x05\x4d\xa5\x26\xdf\x67\x32\xb9\x26\xc7\x0c\x8c\x86\xc7\x6c\xf7\xae\x86\xe9\xd3\x6e\xd3\x98\xd3\x71\xb3\x3c\x8f\x3e\xc9\xa5\xe0\x46\xaa\x26\xf2\x78\x83\xc0\xf6\xb6\xad\xf6\x96\x83\x88\xab\x61\xfa\x6c\x1a\xed\x59\x26\xef\xa8\xc3\xee\x84\x11\x05\x22\x06\x06\xf5\xdd\x3f\x1a\x0a\x8c\x3f\x4d\xe4\x4d\xdf\xc8\x7e\xa9\x59\x9f\x37\xce\x53\x6a\x4d\x9f\x6b\x36\x83\xa4\xaf\x4e\x28\xf4\x23\x0e\x56\x33\xd1\x8d\x04\xcf\x39\x7c\x6e\x15\xb9\x8b\xef\x8f\xed\xe9\x3d\x88\xcd\x92\x03\x66\x92\x83\x84\x15\x93\x03\x37\x9d\x27\x4f\x56\x2f\x1f\xbb\xa1\xeb\x21\x49\x64\x96\x39\xdc\x2e\x39\x22\x47\xac\x98\x84\x47\x6c\x06\xad\x9e\x72\xb3\xb4\x42\xca\x6e\x1a\x2b\x45\x22\xc2\x8e\xe9\x24\x44\xc4\xe8\x6a\xf8\xb0\x5e\xd0\x9b\xc8\xda\x9f\xb0\x27\x49\x93\xde\x72\x1b\x41\xde\xcd\xe9\x51\xb7\x7b\xe9\x87\x03\xff\x4f\x14\x6e\xae\xb7\xa4\xf3\xf9\xa2\x35\x11\x7d\x3a\x42\x0b\x33\x65\x29\x91\x53\xa6\x14\x4f\x99\x26\x41\x46\xc7\x8e\x25\x9e\x6d\x06\xe5\xb7\xdd\xf1\x9e\x56\x7e\xc0\xe6\xf8\x14\x22\xe1\x6d\xc7\x5c\x14\xde\x34\xcd\xb9\xd8\x0c\x2e\x6f\x48\x2f\x9d\xd0\x8c\x9d\xbe\x6b\x6d\x7a\x5f\xe2\x38\x75\xeb\xdb\x7f\x18\x81\xec\xdf\x03\x3c\xff\x63\xe0\x59\x22\x64\xda\x2c\x1a\xb6\x66\x1b\x7a\x4c\x0d\xbb\x69\xa8\xf8\xf4\x2b\x51\xdf\xf4\xf7\x60\x79\x3d\x6d\x1b\x7c\x4d\x0d\x32\xa2\x7d\x8d\xa8\xf7\xeb\x52\xa7\x1c\x07\x75\xe3\x5a\xf6\xa4\x98\xeb\x2f\xe6\xb7\xe6\xe1\xf9\x29\xf9\x01\x9f\xb7\xbe\x8e\x1f\x4a\x1a\xb4\x64\x8e\x65\x4e\x79\x47\x8d\xd8\xa3\x86\x4e\xf1\x0b\x9f\x87\x87\x11\x7c\x5a\xdc\x85\x7e\xc4\xc7\xa5\x62\x29\x71\xde\x8f\x6d\x1b\x83\x0d\x6e\x63\xd0\xad\x52\x5c\xe9\xc4\x91\xc7\xdc\x57\xc6\x54\x7a\xb0\xe7\x22\x50\x07\x42\x0a\x12\xd1\x4c\x68\x0e\x59\x07\x51\x62\x1c\x28\xcb\x90\xff\x1d\xca\x60\x50\x71\xee\x91\x37\x72\xcc\x85\x97\x4e\xd2\x25\xbb\x8c\x28\xcf\xda\x91\x73\xab\xe9\xfe\xc1\x34\x5d\xad\xb3\x13\x41\x87\x59\xf3\x4c\xc6\xfa\xc1\x9b\x51\xc8\x93\x62\x30\xe6\x41\xca\xb5\xfd\x97\x5c\x5e\xbe\x81\xd8\x6c\x29\xbc\x65\x08\x51\x47\x77\x6c\x84\xfa\x62\x14\x2e\xeb\x93\x07\x28\xb3\x3b\xeb\x53\x71\x2a\x52\xfb\xba\x4c\xd7\x12\x80\xdd\x53\xb0\x0b\x48\xa8\x5e\xc3\xec\xc3\x21\x23\x57\x13\x9e\x5c\x9f\x47\x21\x58\xa9\xec\x67\x22\xfa\xa8\xa6\x68\xcc\x7f\xb7\xae\x03\xc7\xbd\xd6\x79\x57\x6e\xaf\xab\xe8\xc4\xbd\x74\x24\xb3\x83\x13\xaa\xb5\x4c\x78\x15\xf3\x07\xa7\x70\x75\x24\xa7\x70\x24\xaf\x8f\x0c\xa0\x25\x3e\x8a\xfe\xe1\x19\xc7\x29\xad\x54\xc7\xfa\x06\x17\x9e\x5a\x6b\x7b\x75\x64\xe5\xce\xba\x6b\x5e\xd5\xfa\x69\x7a\xab\x6f\x2e\xfc\xec\xeb\x41\x1d\xa3\x78\x7d\xde\x35\x70\x5e\x64\x95\xd0\x57\xd3\xf5\xf7\x58\x0b\xb1\x9a\x17\x6b\x2f\xf3\xc2\xcd\xe5\xde\xe0\x67\x2e\x20\x0d\x42\xa5\x90\x45\x99\x61\xd6\x6a\xfb\xb6\xa2\x3e\x9a\x87\xcf\x59\x43\x80\x7a\xd3\x9a\x11\x3d\xb4\x9c\xef\x79\xf4\x25\x8a\x0c\x82\x17\x7f\xf9\xea\xab\xa7\xde\xa9\xa8\x9d\xe3\x6c\xdd\xad\x8a\x5a\x85\xba\xb6\x28\x05\x5b\x94\x82\xbb\xae\xb5\x47\x62\x3f\x3d\x0e\x41\x27\x45\x62\x5d\x14\x88\xb5\x45\x1a\x68\x59\x5c\xd6\x4d\x61\x59\x6b\x2c\x81\x47\x45\x10\xe8\xa8\xc6\xaa\x3d\x5a\xc0\x16\x23\xe0\x8f\x81\x11\xd0\x5d\x6d\x55\x57\x78\x00\xed\x6b\xaa\x9e\x7f\xed\x7f\x6b\x31\xd1\xb6\xc2\xfc\xe1\x75\xe5\x5d\xf5\xaf\xe8\xca\xcf\xde\x99\x63\xa0\xe6\xd5\x75\xf6\xae\xe7\x0c\xcc\xbc\xae\x10\xdf\x8d\xb4\x42\x63\x8d\xd6\x2e\x69\xed\x2c\xc0\xa9\xc8\x46\x67\x70\x9d\x6b\x70\xa4\x77\x97\x73\x21\xf6\xf0\xf1\xe6\x47\xd6\xb7\x21\xe6\x6d\x1b\xf5\x6d\xfc\x31\x5c\xb7\xc4\x1f\x75\x0d\xe3\xd5\x7b\x04\x41\x12\x82\x0a\x26\x87\x71\x1f\x95\x6a\xff\x1f\x9e\x9f\x92\x44\x31\x80\x34\xa0\x99\x1e\x90\x25\x1a\x9a\x8f\xd4\x38\x8d\xce\x6b\x66\xd4\x18\x96\x17\xa6\x2d\xc3\x6d\xc3\x8f\x7f\xb0\xf0\x63\xc7\x31\x83\x9f\xc2\x70\xde\x5b\x34\x29\x73\x2a\xfa\x56\x5a\x40\x20\xb2\x96\xcf\x31\x77\xf0\x0d\x88\xaf\x81\x43\x6a\x52\xc5\x10\xdc\xbc\x14\xfc\xb7\x92\x55\xfe\x85\xa0\x5e\x6c\x40\xa8\x05\xe6\xd1\x31\xed\x50\x75\x9a\x93\x22\x89\x5c\x28\x65\x72\x04\x09\x74\xf4\x02\x23\xd2\xbf\x6a\xbe\x32\x33\x61\xa8\xa6\x9d\x03\x38\x40\x75\x57\xdd\xbe\x43\x03\x8f\x66\x99\xbc\xc1\x67\xc7\x8a\x87\x5d\x3f\x3b\x17\x87\xc7\x31\x64\x24\xe7\x4a\x49\xe5\x42\x3c\xf1\x74\x30\x2d\xc7\xda\x89\x4c\xa1\xc1\xa5\x5c\x56\xc5\x25\x33\x31\xab\x18\x49\xa8\xc0\xc2\x45\xfb\xdf\x3e\x29\x19\xfb\x9f\x39\x79\x37\x64\x13\x3a\xe5\xb2\x54\xf8\x6b\x23\xc9\x8e\xfb\x0a\x8e\xdc\x99\x2c\x83\x9b\xbb\x84\x3a\xa5\xf0\x76\x7a\x09\x9d\xce\xaa\x2f\xc1\x40\x4d\xa5\xf7\x1f\xf6\xd9\x47\xae\xcd\xe2\xbb\x78\x12\xf9\x06\x09\xeb\xe0\xbc\xa9\x2e\xec\x01\xfb\x53\xe3\x9a\xd3\x3a\xbf\xc5\xa3\xd5\x55\xd2\xe9\x25\x7c\x75\x9f\x42\xea\x90\x5a\xb0\x54\xdc\x17\x85\x3d\xbd\x74\x4f\x7c\xcb\x86\x9d\x99\xb6\x1a\xf1\x53\xd1\x88\x43\x82\x44\xc6\x93\xd9\xe9\x71\x37\x3a\x5f\x48\x8c\xb0\x83\x92\xef\xa9\x66\x29\x79\x4b\x05\x1d\xa3\x73\x64\xef\xf2\xfc\xfb\xb7\xfb\x96\x49\xc0\xf9\x72\x7a\xbc\x34\x7b\xe2\x32\x9e\xd9\xd9\xba\xca\xb7\xc9\x3c\x8d\x3a\xd3\x0a\x1e\x48\xa5\xb5\x15\xb0\x93\x70\xb2\xb7\x69\xd9\xb5\x08\x6e\x84\xe9\x10\x1e\xa9\x4c\xcf\x8b\xd7\x69\x9e\x5e\x3f\xe6\xeb\x46\xbe\xea\xbb\xde\x69\xb5\x40\xd3\x0a\xc1\xa4\xb9\xb5\x57\xd4\xb0\xf1\xec\x98\x15\x99\x9c\xd9\xe5\x3e\x8f\x5c\xe7\x78\xeb\x10\x8f\x7a\x35\xa4\x09\x51\x65\xc6\xb0\x7b\xcd\x3c\x44\x98\x60\x2c\xad\xe4\x14\x17\xda\x50\x00\x08\xc3\xf1\xef\x9c\xd1\xca\x07\xcc\xaa\x47\x49\x1f\xe7\x79\xef\x5d\x75\x38\x45\xbb\xa1\xee\xfc\xc9\xea\x87\x09\x3c\xfe\x7e\x0e\x7d\x48\xf0\x70\xe5\x30\x61\x9d\xc1\x61\x4f\x5f\x94\x99\x3d\x3a\xb2\x74\xae\x89\x28\xe8\x56\x6e\x8d\x11\x99\x01\x24\x80\x9d\x7d\x8f\x0c\x4b\xab\x78\x31\x5d\xf3\x2f\x2f\xc2\x52\xde\x4c\x30\x6e\x6c\x7f\x44\x68\x51\x64\x1c\xf3\x7a\xa5\x72\xc1\xdf\xc8\xdb\xb8\x78\xdb\x2a\x82\xe4\x81\xfa\xc7\xc3\xf4\x8d\x3e\x99\x32\x35\x5c\x05\x53\xe1\xa1\xaa\x04\x2d\x38\xc4\x4e\x56\xd6\x3c\xea\xa0\x90\xe7\xa7\xf8\x6b\x6f\xa9\xc5\xa6\x99\xff\x12\x57\xd0\xad\x8d\x07\x14\x74\x5d\x69\xd0\xda\x08\xa8\x40\x87\xe7\xa7\x08\x43\xe5\x80\x81\x2a\x97\x85\xd5\xed\x29\x26\x07\x56\x68\x84\x74\x6c\x47\x34\x44\x8a\xf0\x50\x26\xca\x9c\x21\x98\x50\xd5\xce\xca\x1a\x7c\x62\x56\x8d\x5e\x79\x3c\xac\x7d\xb2\xba\x3a\xf1\xf0\x30\xfa\x03\xc3\xe6\x0f\x3e\x79\x84\x14\x17\xee\x35\xdf\x5f\xbc\x69\xb6\x88\x67\xf5\x31\x1c\x78\x0c\x03\x9c\xbc\x82\x2a\xc3\x69\x46\x4a\x95\xf9\x30\x1c\x26\xbd\xbb\xb4\xb4\x09\x9d\x46\x00\x3b\x03\x42\x3e\xc3\x95\x73\x84\xc5\xfd\x89\xed\x5d\x71\xe5\x47\x65\x96\xf5\xc8\x88\x0b\x6a\xc5\x2e\x2b\x48\x1c\x0e\xba\xe4\x22\xb1\xe6\x97\xb5\xf5\x5d\xbf\x16\x98\x91\x37\xca\xc2\x26\x85\x28\x23\x44\x4b\x59\x96\x02\xe8\x22\x3c\xc2\x6e\xd8\x04\x5c\x04\xd6\x6a\x3c\xca\x4a\x6d\x98\xba\x90\xf6\x30\x88\xf2\x5a\x00\x8e\x82\xc6\x5f\x7f\xcf\x45\x0a\x29\x4c\x17\x70\x70\x24\x54\x10\xc6\xc1\xf9\x62\x87\x84\x38\xb5\xe5\x9d\x8a\xa1\xf6\x74\x99\x4c\xec\x2b\xed\x14\x32\xd5\x3b\x56\x8c\xec\xa0\x8b\x4e\xef\xec\xdb\xbf\xe6\xdf\x01\xd3\x54\xa2\xdf\x1d\xd0\x82\xef\xec\xf7\x08\x10\x08\x02\x67\xd2\x4c\x9e\x2e\x1f\xfa\x77\x05\x9b\xb8\x11\x17\x5e\xc4\x23\x00\x0f\x8a\xaa\xfb\xd7\xcd\x84\x1b\x16\x9a\x6f\xa3\x67\x27\xe0\xab\xcc\x0b\x6b\x42\x0e\x05\x61\x79\x61\xc0\x5b\x4c\x72\x46\x7d\x08\x99\x4d\x99\x9a\x59\x9b\x1c\x80\x28\x9e\xfc\xe6\x0f\xfc\xd8\x8a\xe0\x73\x9d\xcd\x2b\x26\x87\x1d\xb6\x40\xdc\xdd\xcf\x76\x6b\x76\x7e\x96\x45\xd2\xfc\xc9\x92\x12\x8e\xd7\x46\x64\xfc\xc9\xfe\xb2\x4e\x42\xfc\x08\xa5\x65\x90\x1f\x6f\xde\xb8\x40\x06\xd2\xea\x47\x2e\x52\x54\x51\x0f\x8d\x51\x7c\x58\x1a\x76\xc1\xec\x84\x13\x4c\x79\xf0\x5d\xf8\x5c\x76\xb4\x5b\x89\xa5\xe4\x87\xb9\x3f\x45\xd2\x2f\x2a\xb6\xab\x2a\xa3\x77\x0c\xef\x75\xf9\xdb\x86\xba\x73\x00\x67\x10\xbc\x95\xe9\xf2\x4d\x35\x57\x19\x52\xdd\xec\x54\x95\xa8\xb3\xa5\x1f\xcb\x29\xb1\xb3\x62\xa9\xa6\x7f\xf7\x72\xdc\x41\xfa\xdb\x66\x52\xf9\x06\x40\x82\x46\xdf\x5c\xcd\x0a\xe6\x90\xb6\xc9\x28\xa3\xe3\x8a\x8d\x40\x1e\xa2\xfa\x74\x74\xf9\x93\x7f\x05\x4d\xf8\x72\x45\xf6\x5e\x4d\xf7\x3e\xdd\xb6\x5f\x51\xe9\xd6\x3b\xec\x43\x96\x7e\x79\xbf\x82\x1b\x06\xbf\x9d\x9b\x56\x09\xfb\x99\x3b\x5d\x6a\xb7\xd1\xff\xca\x21\x7c\xd1\x88\x13\x3c\x80\x98\x37\x37\x21\x13\x09\x34\x94\xcb\x9f\x6a\x6c\x72\xcf\x7c\x6f\x61\xda\x6b\x36\xbb\x91\x6a\x39\x1a\x78\x63\xfe\xba\xf3\x89\xd8\x9d\xff\xde\x0d\xf2\x96\x16\xf6\xb5\xab\x3c\x4f\x14\x78\x2e\xea\x88\x56\x01\x66\x68\xf9\xac\x38\xa9\xc6\x54\xf0\x7f\x63\x72\x6c\x62\xf7\xb1\x54\xf6\xcf\x3d\x8c\x5c\xa0\x45\x9f\xb1\xc4\xec\x3b\xfe\x5b\x2a\xf7\xee\x61\x50\x9a\xa6\x1c\xf5\x8a\xf3\x7b\x78\xe9\x6e\x22\x70\x71\xfd\x18\x34\xbf\x63\x63\xdd\xcf\xfb\x77\x87\x3e\x57\x90\xcd\xa5\xba\x23\xbb\xe9\xce\xdf\xe7\x94\xbb\x8e\xae\x1b\x47\x15\x96\x53\xde\xf4\xb5\xf0\x6a\x41\xd7\x9c\x9a\x52\x71\xb3\xf4\x40\xba\xfb\x87\x5c\xfc\x58\x0e\x99\x8b\xf6\x3e\xf8\xe7\x02\x92\xf7\x0e\xcf\x4f\xbb\x5d\x8e\x45\x78\x69\x37\x41\xab\xd1\x90\x52\xd0\x7c\xc8\xc7\xa5\x2c\x75\x36\x8b\xdd\x95\x14\x82\xd5\xd6\xdc\x47\x7f\x8d\xd8\x35\x84\x0a\x29\x66\xb9\xbb\x55\x24\x59\x99\xb2\xda\x88\x10\xd3\x9b\x4a\x9e\x12\x5a\x1a\x99\x53\xc3\x13\x92\x48\xfc\xae\x3e\x52\xa9\x19\xa1\xb7\xfc\x36\x29\xb5\x91\x39\xc9\xa9\xd2\x13\x9a\x65\xb7\xad\x71\x07\xa7\xda\x5d\x00\xda\x7d\x78\xff\x5b\xbf\x9c\xe2\xac\x1b\xf2\xf7\x3d\x78\xe1\x2b\xf0\xb7\x9d\x5c\xab\x01\xa6\xb7\x73\xe9\x0a\x63\xb8\x92\xf8\xa5\x70\x3d\xf7\x2c\xcc\x7d\xd4\xb9\x6b\xe7\xde\xfb\x5e\x77\x48\xc3\x3b\x7f\x0b\xa9\xb3\x2c\x3d\xcd\xe9\x78\x05\x45\xf2\x8d\xb5\x1b\xa8\x98\xf9\x9f\x21\x8a\xa4\xee\x11\xa9\x5c\x0e\x48\xe8\xc9\xed\xbe\x0a\x00\xa4\x8a\xbc\x83\x30\x9b\x54\x2e\x99\xda\x71\x29\xa4\xd6\x33\x35\x92\x2a\xb7\x7a\x1d\x57\x64\x54\x0a\x34\x2d\x5c\xee\x35\x18\x2b\xce\x8b\x43\x33\x2d\xc3\x0e\x84\xb8\x9d\xf0\x93\x20\x54\x93\x1b\x96\x65\x03\x72\x98\x65\x0e\xde\x32\x82\x46\xa8\x4a\x9e\xab\x0c\x81\xe1\x8c\xa4\x7c\xcc\xb4\x21\x7b\x97\x7f\x3b\xdc\x87\x53\x1b\x3c\x1c\x33\x62\xa8\xaf\x13\xab\x7b\x6e\xe0\xfc\x4f\x4b\xd0\x13\x12\x6a\x68\x26\xc7\x18\x24\x07\x0f\xae\x48\x49\x91\xd1\x19\x80\xd4\x17\x54\x41\xa2\x68\x82\xde\x1b\xa2\x4a\x01\xf0\xbc\x9f\xf4\xc4\xb9\x5f\x14\xdc\x85\xa0\xdb\x07\x9e\x6c\xb8\xd5\xef\x41\x2d\x7d\xdc\xa3\x4c\xb1\x22\xa3\xb7\xf8\x1b\xee\x28\xfb\xb5\x6a\x2e\x98\xb0\x52\xb0\x30\xc6\x80\x5c\x22\xef\xe4\xd4\x24\x18\xc2\xfc\x67\xce\x0c\x4d\xa9\xa1\x03\x6b\x0b\xfe\xb3\x5e\x98\x26\xb3\xd4\x0e\x74\xfb\x42\xdf\x32\x67\xd4\x17\x97\x37\x63\xaf\xef\x42\xab\xd4\x86\xdb\x41\x3f\xf7\xfb\xf1\x4e\x07\x47\x4b\xf9\x04\xaf\x7f\xf2\xd1\x9a\x62\x77\x46\xd7\x6a\x73\x9d\xff\x51\xdd\xff\x90\xd5\xdf\xc4\x71\x6b\xce\x00\x17\xf1\xca\xf5\xf3\xf1\x9f\x80\x73\xf5\xf0\xec\xf8\x76\x47\xd8\xfd\x2e\x83\x7b\x5c\x04\xf5\x90\xc1\x1d\xd3\xf3\xae\x67\xf7\x4d\x3d\x6e\xe0\x8b\x53\xa0\x7e\x0f\x4b\x3d\xa8\x07\x4f\xf1\x37\xe3\x82\xd5\x2b\x0f\xf1\x77\xb7\xfb\x47\x56\x0a\xdc\xac\x12\xae\xb9\xaf\xd0\xab\x1f\x26\x7b\xeb\x4d\xab\x45\x6f\xee\x2d\xc6\xaa\x11\xdc\x55\x3b\x42\x71\x25\x50\x1e\x4a\x36\xbc\xf3\x34\x10\x7b\xd5\x68\xd7\x8a\xfe\x1d\xff\xaa\x0f\x98\x68\x58\xca\x5a\x1a\xd1\x35\x9b\xed\x6a\x57\x8b\x22\x85\x9e\xf0\x02\xab\x05\x5d\x80\xc2\xad\x2e\xf9\x89\x66\x3c\x0d\x43\x20\x57\x9f\x8a\x1e\x39\x93\xc6\xfe\x73\xf2\x91\x6b\x83\xe6\xe7\xb1\x64\xfa\x4c\x1a\xf8\xa4\x93\x57\xc5\x29\x3c\xe0\x45\x9d\x01\x8c\x3e\x6e\xd8\x57\x91\x99\xec\x5f\xe8\xd4\x89\x3d\x4f\x14\xae\xc9\xa9\xb0\x1a\x81\x7b\xa3\x50\x45\xab\xdd\x10\xbe\x50\x44\x48\xd1\x07\xef\xf7\xd2\x31\x1c\x21\xa4\xaa\xd1\xe1\x8e\xe1\xdc\x50\x98\xce\x07\xdf\x70\xed\x85\x78\x38\xb3\xa9\x77\xbb\xf1\x84\xe4\x4c\x8d\x21\x9e\x93\xdc\x13\xcf\x58\xd5\x15\xb9\x92\x03\xf2\xde\xb5\x02\x91\xf9\xe6\x56\xc7\xc5\xc2\x22\x45\xf7\xa3\x58\xca\xd1\x9b\xf1\x3f\x56\xfa\x00\xa5\xfe\x17\x4a\xa9\xf5\x80\x1c\xfa\x66\x29\xf1\x77\x2e\xae\x15\x0f\x63\x47\xe0\x9a\x58\x51\x32\xa5\x19\x43\xe4\x78\x2a\x42\x15\x94\x1c\x2d\x08\xf6\x9e\x2b\xa9\xb6\x7b\x36\xa8\x4c\x3b\xd7\x6c\xb6\xd3\x5b\x58\xda\x9d\x53\xb1\x53\x95\xc0\xd5\x16\x33\x08\x51\xd0\xb6\x76\xe0\xbb\x9d\xe6\x67\xc1\x9d\xc2\x72\x75\xf7\xca\xbd\xeb\xa6\xaf\xf9\xf2\xc0\xf4\x52\x65\x63\x4f\xef\x5b\x12\x42\x30\x58\x91\x5c\x2a\x70\x67\xda\x4f\x63\x20\x0d\xab\xaa\x5e\xf3\xa2\xa8\x70\x47\xca\x62\xac\x68\xca\xc8\x58\xd1\x62\xf2\x50\xb5\x04\x75\x9b\x65\xc3\x3f\x19\x45\xf7\x16\xe2\xdf\x61\xd1\xd5\xc8\xef\x0d\x10\x6f\x78\xc3\x66\xb9\x51\xb4\x28\x98\x22\x54\xc9\x12\x9c\x76\xf9\x94\xa9\x81\xbf\x05\x53\x2e\x82\x9f\x39\x91\x4a\xb1\xc4\x78\x13\xdd\x65\x05\x63\xc1\xaa\x48\xa1\x1a\xf5\xc1\x6a\xdf\x0d\x1b\x4e\xa4\xbc\x86\xaa\x39\x60\xc7\x47\xf4\x82\xfc\x8c\xcf\x3a\xae\x3e\xf3\x06\xad\x26\x29\x33\x94\x67\x90\x6b\xf2\xee\xcd\x5b\x97\x8d\xe2\xb5\x09\x3f\xcb\xe5\x89\x1d\x1d\x98\x21\x34\x75\x59\x52\x17\x6c\xca\xd9\x8d\xa3\xff\x6d\x79\x24\x7d\x32\x66\x02\x92\x27\xee\x48\x32\xea\x13\xcd\x53\x76\x02\xc5\xb8\xb7\x0f\xd4\xc2\x7d\x7f\xcb\x9c\xef\x13\x21\x77\x9f\x23\xf7\x9e\x21\x2b\x9c\xf5\xc1\x08\x3f\x97\xea\x0e\xe0\x9f\xd5\x6a\x83\x57\xab\xfb\x75\xd9\xe9\xaf\xc8\x57\x5f\x7d\x79\xeb\x4d\x39\xfd\xc8\xf3\x32\x7f\x45\xfe\xf2\xe7\x3f\x7f\xf9\xe7\xdb\x6f\xe3\x02\x6f\x7b\x79\xfb\xfb\xb9\x3d\x7f\x74\x71\xbc\x01\xf4\x4e\x43\xb6\xdf\xdd\xa1\xc1\x15\x86\x1a\x51\x9e\x95\xca\xa5\xa4\xae\x68\xa8\xbc\x8e\x7f\x03\x61\x9d\xaa\x98\x82\xfa\x11\x7d\x32\x9a\x4b\x52\x1b\x71\xc1\x34\xb4\x46\x29\x85\x62\x89\x1c\x0b\xfe\x6f\x96\xfa\xce\x28\x90\x78\x02\x00\xeb\x9e\xc5\x09\x13\x29\xf6\xa4\xb4\x27\xef\x84\x8a\x34\xbb\x2b\x21\x61\x85\x37\x8d\x77\x70\x2b\x92\xc1\xf9\xf7\x20\x82\xbd\xad\x7e\x31\x47\x2e\xe8\xac\xe9\x82\x60\x78\xae\x22\xd9\x5a\xbd\x29\x0a\xc6\xcb\x3b\xcc\xfb\x25\x73\x5c\xb0\x3e\xd1\x70\x86\xcf\x7e\x2b\x99\x9a\x41\xe1\x48\x65\x5e\x44\x89\x6a\x57\x15\xae\x80\x7f\x0d\xa7\xd7\x21\x92\xcb\x9c\x45\x5e\xa9\x52\x55\x3a\xca\xdc\xb3\xe1\x37\x0c\x83\xf8\x3e\x9c\x45\x0e\x89\x28\xb3\xec\xb6\x5b\x85\xbc\x2b\xf0\x15\xd3\xee\x1e\x83\x76\x35\x4b\x73\x55\xe7\xc4\x12\x4a\x7f\x52\x17\x45\xfc\xe2\x1d\x19\x14\x9b\xed\xb4\x88\x5f\x78\xa5\x9c\xd3\xd5\xf3\x4d\x57\xc3\xab\x59\xc1\x99\x81\xd7\x43\x12\x52\x57\x44\x99\x79\x4c\xf7\x06\x5e\x0f\xca\x1f\x5a\xcd\xd5\xb1\x64\xea\x1b\xe7\xf0\x68\xf0\xf2\xab\x38\x3f\x96\xbc\xfa\xd6\x05\xb2\x40\xf0\x55\x73\xb2\x1e\x90\x8f\xb5\xe2\x4a\xae\xe0\x1a\xc1\x6b\xeb\x20\x79\xd0\x49\xb4\x82\x60\x7e\x98\xb3\x64\xe5\x55\x55\x8c\x8b\xa9\x44\x94\xe6\x07\xe9\x70\x17\x0b\x3f\x9c\x53\xe5\x6e\x40\xb2\x3a\x5d\x2e\x28\xbf\xb1\x4a\x6b\x0d\x5a\x52\xea\xfb\x5d\xee\x77\xbf\xc1\xdd\xb5\x29\x9d\xd8\x20\xf5\x37\x2f\x33\xf6\x33\x37\x93\x77\x1e\x8d\xdd\x71\xb5\x29\x8b\x0c\x5e\x36\xfa\xc2\xb2\xd0\x45\xa5\x19\x9e\x62\x07\x2f\x96\xc8\x3c\x67\x22\xc5\x54\xa6\x9c\x5e\x33\x52\x35\x82\xb4\x3a\x1e\xa8\xc1\x30\x1c\xfb\x58\x50\x51\xe9\x89\x53\x2b\xcb\xef\xe2\xa8\x15\xf9\x69\xd5\xb3\x76\xe5\xa2\x8f\xbb\x8b\x3d\xa2\x6a\x8d\x5a\x51\x07\x19\xb2\x4c\x82\x13\x07\xf3\x55\x31\xd7\xda\xdd\x0a\x22\xd9\x7d\xea\x4e\x3d\x87\xfc\xc8\xc4\xb8\xc2\x99\xd2\x19\x34\x69\x75\x12\x58\x0a\x36\x20\x17\x4e\x85\x59\x4d\x2b\x5a\x45\x9c\xae\x28\x4a\x57\x3e\x10\x2b\x6c\x86\x07\x53\xd6\xff\x2e\xa6\xed\xd4\x7f\xb6\x0a\x75\xfd\xcd\xcf\x99\xbe\xa1\x53\xc2\xc3\xc8\x5b\xdf\xd2\xd5\xa9\x10\x68\x3b\x27\xbc\x12\x6c\x01\x0c\xae\xba\x3e\x39\xba\x38\x39\xbc\x3a\xe9\x91\xf7\xe7\xc7\xf0\xef\xf1\xc9\x9b\x13\xfb\xef\xd1\xbb\xb3\xb3\x93\xa3\x2b\xab\x47\x7c\x86\x38\xf0\xd6\x8c\xb3\xd4\xb5\xe7\x91\xac\x4b\x0b\x2a\x66\x64\x54\x1a\x2b\x0e\xaa\x87\xd5\x66\x41\xd1\x07\x40\xd3\xd4\x9a\x8c\x4f\x6e\x0d\x97\x13\x7c\xde\x6d\x12\x37\xbb\x40\xe8\x7c\x57\xcc\x75\xbf\x9a\xb4\x32\x93\xac\x5c\x15\x51\x9b\xf2\x4e\xc3\x72\x88\x0f\x82\xbc\x96\x8a\xb8\x3e\x5f\xaf\xc8\x6e\x21\x53\xbd\xeb\x8a\x4e\xec\x7f\x0f\xf0\xa3\x83\x4c\x8e\x77\x43\x2d\x0a\x23\x99\x1c\x13\x5d\x0e\x43\x8d\x10\x9c\xa6\x70\xf7\x67\xfe\xb6\x5a\x69\x45\x2f\x14\x0a\x45\xbf\x0a\x83\xd7\x7e\x13\xdf\x10\x8f\x7b\x00\x4d\xbe\x6a\x77\xda\x0f\xe6\x07\xfc\xec\x60\xf9\x0c\xbc\xe2\xc4\xd5\xdc\x2f\x3e\x08\xcb\xae\x37\x3c\x4b\x13\xaa\xd2\x05\x9e\x85\xc3\x0d\x97\x1c\xa8\x87\xb8\xb9\xd8\x23\xb9\x1a\xdc\x81\x67\xc8\x29\x53\x19\x2d\x30\x4f\x1d\x80\x8b\x21\x01\x0a\x1e\x72\xcc\x0a\x06\x75\x5a\xbe\x6b\x37\x13\x49\x26\x01\xa7\x03\x4f\xc6\x5e\xfd\xd5\x31\x21\xca\x83\x12\xba\x62\x9f\x6a\x87\xec\x6c\xac\x98\x83\x64\xe7\x07\x71\x2f\xa6\x47\xdf\x0a\xf6\x12\xaa\x47\xd0\x68\x0c\x9a\x2f\x23\x3b\xae\x0a\x6e\xa7\x47\x76\x02\x9e\x49\xea\xb4\xe4\x9d\xcf\x76\xaa\x1b\xe2\x3a\x2a\x50\x92\x5d\x60\xaa\x0f\xcf\x89\xab\x2d\x61\x81\x7d\xf8\x2c\x3c\xba\xc2\xa4\xb1\x47\x9b\x73\x62\xc1\x1c\xea\x03\x0d\x6a\x13\x59\x78\x6a\x55\x02\x78\xef\x13\xed\xf4\xa3\x9f\x1b\x28\x97\xc7\x52\x42\x47\x1c\x15\x55\xdc\x0c\xc8\x65\x8d\x79\x42\xf8\x2f\x06\xcd\xe1\x8a\x14\x54\x59\x53\xc4\xdf\x59\xef\x17\xf6\xd9\xbd\xdd\xc2\x56\x60\x82\x28\xbe\xb2\xa2\xd6\x7e\x19\x7e\x71\x94\x51\xad\x97\x78\x5e\x41\x10\xd8\x81\x09\xc3\x91\x09\xf5\xc1\x27\x00\xa1\x9e\xd0\xe9\x1d\x70\x09\x2b\x4c\xda\x50\x35\x66\xe6\xee\xc8\x08\x15\xb3\x77\x77\xc2\xa4\xf5\x57\x06\x56\xed\xaf\xb6\x9b\x3e\xf6\x2b\x50\xae\x3e\x17\xa6\x2f\x55\x1f\x7f\xf2\x8a\x18\x55\xde\x16\xe3\x32\x3c\x67\xb2\x34\x97\x2c\x91\x62\x79\x5d\x85\xbb\xaf\xb3\x50\xcf\x03\x8a\x4d\x5c\xb4\xf1\xd0\xab\x11\xbe\xe2\x24\x76\xb2\x57\x3a\x86\x8f\x30\xd6\x41\x5a\xde\xbd\x79\xdb\x66\xb1\x09\x94\x59\xdf\xbd\x92\x3f\x39\xb1\x2f\xc6\x61\xa6\x6e\xe6\x77\xfe\xec\x6d\x69\x1e\xfe\xa3\xff\x8f\xb9\x2b\xcb\x6d\x9b\x07\xc2\xef\x39\x05\xdf\xfe\xbf\x40\xe3\x9e\xa1\x70\xde\xba\xa0\xb0\xd3\x03\x30\x12\x1d\x0b\xb5\x25\x83\x94\xe2\x2e\xe8\xdd\x0b\xce\x0c\x29\x53\xe6\xa6\x48\x76\xac\x47\x9b\x1c\x2e\xe2\x50\xb3\x7e\xb3\xb4\x9e\xab\x78\x6b\xda\x8c\x38\x30\x47\x70\xfd\xaa\xe5\x6d\x77\x76\x1a\x9c\x77\x43\x97\xe5\x1a\x13\xdb\x48\xa6\x5f\x43\xbf\x53\x23\xdf\x39\x3e\x01\xe2\xdc\x42\x3b\x13\x32\xb9\x60\xd4\x51\xf3\x67\x2b\x79\x85\x0a\x24\x2f\xda\x0e\x72\xa7\x79\x4b\xe1\x95\x04\xaf\x73\xe7\x5b\x86\x57\x65\x8c\xa9\x89\x85\x90\xad\xfa\xcc\x55\xfb\xfd\x50\xf2\x40\x0e\xd5\x20\x6c\x52\xb5\xc0\x30\x28\x58\x1f\x6b\x51\xea\x1b\x9e\xb6\x00\xe9\xb1\xa3\xbe\x7a\x3b\xa4\x38\xd6\x93\xdf\x33\x90\xee\x7e\xaf\x87\xf2\xcf\x7a\xd5\xe8\x3d\xf9\xe8\xbd\x80\xdc\x80\x91\xd4\x6c\xf5\xe7\x44\x02\x35\x56\x8b\x9f\x3e\x8d\x7b\xfa\x8c\x77\x82\xd7\xfe\xa0\xfd\xc1\x89\x82\x76\xe3\xcf\x10\x0d\xc0\x8e\xdb\x4a\x8b\xac\x98\x6b\xa6\x98\x11\xa1\x4a\xb1\x13\x81\x94\xb3\x89\x01\xad\x34\xc2\x03\x0d\x90\x15\x6c\xf5\xcd\xed\x63\x0d\xfa\x24\x84\x53\x0a\x47\x2f\x2c\x93\xf4\x60\xb5\xa6\xe1\xaa\x40\x7c\x79\xda\x35\xc5\x0f\x04\x19\x03\xbc\x81\xea\xb7\x90\x26\xfa\xbd\xb2\x55\xbd\xa8\xf2\xd4\xb3\xa9\x8a\x69\xf6\xcd\x94\x1f\x02\x2a\x9a\xb6\xde\x40\x4b\xbf\x91\xbd\x65\xb1\xab\x29\x87\xef\x3a\x01\xb4\x46\x51\x81\xac\x01\xc7\x73\x70\xae\xb3\x60\xa0\x0d\x60\x20\x92\xca\xc8\xf7\x94\x63\xf3\xe1\x53\x38\x1f\x65\xd6\xa0\xd8\x58\x56\x0c\xb6\x80\xed\xab\x8b\x28\x14\x4e\x34\x7f\x26\xd7\xf2\x95\xc8\x93\x61\xf9\x42\xba\x9d\x72\x0e\xb5\x59\x43\x1c\x67\xf7\xf6\x05\x93\x11\xfa\x67\x8c\x0f\x2f\x17\x7c\x75\x94\x97\xa9\x1e\x03\x92\xe9\x82\x9b\x58\xb5\x83\x52\x4d\xd1\x13\xbf\x69\x64\x50\x81\x99\x6f\xf2\xf1\xac\xaa\x24\x21\x2d\x7d\x86\x63\xd7\xce\x53\x88\xf4\xed\x65\xbb\xbc\x67\x9c\x6d\x2b\xd5\x36\x92\x5c\x6b\x50\x3c\x4c\x72\xa8\x50\xea\x8f\x01\x9b\x27\x1a\x6e\x69\xa7\xc0\xf8\xe1\x20\xb8\x2d\x36\x44\xdf\x26\xa8\x16\x24\x45\xd1\xc8\xd2\x3b\x31\xa3\xdd\x7b\x65\x29\xef\xf0\x33\x64\x88\xee\xb8\x6a\x1f\xed\x1c\xb4\x80\x90\x79\x1b\xbb\xe2\x0f\x2d\xb1\x5f\x8d\x81\x9b\x69\xea\xfe\xcf\x86\xf1\x1a\xad\x1a\xd3\x64\xf0\xb4\x90\xd1\xaf\x0d\xa5\xb9\x57\xad\xeb\x68\x25\xb7\x93\x25\x5e\x67\xe6\x7b\xa1\x54\x34\xdd\x69\x10\xa4\x01\x38\xc1\xcc\xe2\x04\x53\x77\xf3\xb1\x47\x01\x01\xc3\x31\x0d\x2a\xd8\xaf\xf0\x51\x63\x20\x26\xa0\x41\xc1\xb2\xd5\xa4\x57\x76\xd8\x72\x95\xbb\x18\xcb\x45\x36\xd0\x38\x9b\x1d\x32\x67\x23\x05\x57\xb1\x84\xcd\xc1\xde\x3e\xc9\x4a\x6c\xd8\x92\xef\xc5\x6e\xc9\xd5\x9c\x9b\x0b\x37\xc0\x82\x89\xc5\xf3\x82\xfd\xb7\x3a\xf1\xb6\x7e\x6d\xda\x2f\xb1\x82\x0d\x09\x8c\x82\x1c\x8e\xbe\x28\x2f\x4f\x56\x12\xd2\x9c\x3b\x91\x67\x27\xcf\x30\xc2\xa1\x37\xc1\x9b\xf1\xac\xe3\x10\x3f\xba\x9c\xd8\x49\xb0\xf8\x15\xaf\xe5\xc8\x44\x4a\x65\x88\x0b\x6f\x99\xff\x12\x4b\xb2\x24\xd6\x5e\x93\xc9\xd9\xea\x1e\x1d\xcd\x15\xcc\xfe\xa7\x01\x76\x58\x99\xbf\x52\x5a\x05\x9b\x53\x6c\x79\xdb\x94\x7f\x7a\x81\xc1\xff\x23\x72\xf9\x7d\xfc\x2b\x3c\x15\x4e\xa0\x04\x47\x8b\x3e\x01\xd7\x0c\xc0\x78\x30\xa3\x92\xad\x83\x6c\x00\x74\x2e\x36\x54\xe5\x8c\xda\x38\xe7\xe3\x7f\xa8\x23\x27\x5e\xb0\x6a\x23\x24\x7c\x08\x56\x0b\xa5\x99\xe2\x5d\x64\xf8\x4c\x85\x2a\x4f\x99\x4a\x2b\xba\x49\x25\x96\xa5\x5f\xad\x69\x14\x7b\xc1\xf8\xe4\xea\x6c\x19\x3a\xf1\x08\x65\x2d\xad\xf1\x8c\x20\x96\x14\xff\x46\xd2\xf3\x1b\x70\x87\xcf\x00\x79\x58\x77\x59\xc1\x25\x8d\x8e\xe1\x42\xdf\xc0\x05\xa0\x4f\xe3\xdd\x4d\xd7\x93\x6b\xbf\x5d\x0d\xef\x40\x08\x37\x74\x4f\xf8\x5c\xcb\xea\xba\x6a\xbe\x3d\x4f\xe2\x78\x64\xd3\xbb\x01\x50\x92\xe4\x01\xba\x2c\x5c\x02\x3e\xa9\x53\xf7\xf6\xe7\x2d\x07\x16\x2a\x7a\xc6\x2e\x84\x0f\xa3\x84\x7c\x11\xa5\xe3\xa9\x23\x6c\x79\xf7\xb7\x13\xbf\x6d\x4f\x9f\xb6\x9d\xfd\xf9\x7b\xf7\x2f\x00\x00\xff\xff\x66\xd5\x65\xa6\x7e\x88\x07\x00") +var _operatorsCoreosCom_clusterserviceversionsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xfd\x7b\x73\xe4\xb6\x95\x30\x8c\xff\x9f\x4f\x81\x92\xbd\x8f\xa4\x75\x77\x6b\x26\xc9\xe6\xb7\x3b\xbf\xbc\xeb\xd2\x4a\xb2\xa3\xd7\x33\x1a\x95\x24\xdb\x4f\xca\xf1\x3a\x68\xf2\x74\x37\x56\x24\xc0\x00\x60\x4b\x9d\xc7\xcf\x77\x7f\x0b\x07\x00\x09\xf6\x45\xea\x26\x39\xa3\x8b\x81\x54\xc5\xa3\x26\x09\x82\x07\x07\xe7\x7e\xa1\x05\xfb\x01\xa4\x62\x82\xbf\x23\xb4\x60\x70\xaf\x81\x9b\xbf\xd4\xe8\xf6\xdf\xd5\x88\x89\xa3\xf9\xdb\xdf\xdd\x32\x9e\xbe\x23\x27\xa5\xd2\x22\xbf\x02\x25\x4a\x99\xc0\x29\x4c\x18\x67\x9a\x09\xfe\xbb\x1c\x34\x4d\xa9\xa6\xef\x7e\x47\x08\xe5\x5c\x68\x6a\x7e\x56\xe6\x4f\x42\x12\xc1\xb5\x14\x59\x06\x72\x38\x05\x3e\xba\x2d\xc7\x30\x2e\x59\x96\x82\xc4\xc9\xfd\xab\xe7\x6f\x46\x7f\x1a\xfd\xfe\x77\x84\x24\x12\xf0\xf1\x1b\x96\x83\xd2\x34\x2f\xde\x11\x5e\x66\xd9\xef\x08\xe1\x34\x87\x77\x24\xc9\x4a\xa5\x41\x2a\x90\x73\x96\x80\x7b\x5e\x8d\x44\x01\x92\x6a\x21\xd5\x28\x11\x12\x84\xf9\x4f\xfe\x3b\x55\x40\x62\x56\x31\x95\xa2\x2c\xde\x91\xb5\xf7\xd8\x79\xfd\x62\xa9\x86\xa9\x90\xcc\xff\x4d\xc8\x90\x88\x2c\xc7\x7f\x3b\x20\xd8\xd7\x5f\xdb\xd7\x3b\xc8\xe1\xf5\x8c\x29\xfd\xdd\xe6\x7b\xde\x33\xa5\xf1\xbe\x22\x2b\x25\xcd\x36\x7d\x08\xde\xa2\x66\x42\xea\x8b\x7a\x59\x66\x19\x89\x9a\x87\xff\x76\x37\x32\x3e\x2d\x33\x2a\x37\xcc\xf6\x3b\x42\x54\x22\x0a\x78\x47\x70\xb2\x82\x26\x90\xfe\x8e\x10\xff\x2e\x3b\xf9\x90\xd0\x34\xc5\x8d\xa4\xd9\xa5\x64\x5c\x83\x3c\x11\x59\x99\xf3\xea\xe5\xe6\x9e\x14\x54\x22\x59\xa1\x71\xb3\x6e\x66\x80\x50\x23\x62\x42\xf4\x0c\xc8\xc9\xf5\x0f\xd5\xad\x84\xfc\x8f\x12\xfc\x92\xea\xd9\x3b\x32\x32\x1b\x30\x4a\x99\x2a\x32\xba\x30\x4b\x08\xee\xb2\xbb\x79\x6a\xaf\x05\xbf\xeb\x85\x59\xaf\xd2\x92\xf1\xe9\x43\xef\x77\x1f\xb1\xdd\x12\xe6\xc1\x3e\x85\xaf\xff\x61\xe5\xf7\x6d\x5f\xef\x3f\x9f\x9a\x37\x13\x3d\xa3\x9a\xe8\x19\x53\x44\x70\x20\x12\x8a\x8c\x26\xa0\x1e\x58\xd0\x9a\x5b\xec\x8a\xae\x56\x2f\x6c\x58\x52\x38\xa5\xa6\xba\x54\xa3\x62\x46\xd5\x2a\x88\x2f\x97\x7e\x5d\x33\x9d\xbd\x71\xfe\x96\x66\xc5\x8c\xbe\x75\x3f\xaa\x64\x06\x39\xad\x71\x40\x14\xc0\x8f\x2f\xcf\x7f\xf8\xc3\xf5\xd2\x05\xd2\x84\xce\x5a\xec\x27\x4c\x19\x50\x21\x05\x21\x9e\x84\xe0\xde\x2d\x0a\x20\x7f\x5f\xfb\xcc\x75\x01\xc9\xdf\x47\x2b\x2b\x17\xe3\xff\x81\x44\x07\x3f\x4b\xf8\x47\xc9\x24\xa4\xe1\x8a\x0c\x80\x3c\x59\x5a\xfa\xd9\xc0\x3f\xf8\xa9\x90\x86\x2c\xe8\xe0\xc8\xdb\x11\xd0\xc5\xc6\xef\x4b\x5f\xbb\x6f\x40\xe2\xbe\x31\x35\x24\x11\x14\xe2\xa3\xc3\x38\x48\x1d\x1c\x2d\x9e\x32\x65\x90\x43\x82\x02\x6e\x89\x24\xa2\x10\x77\xdf\x34\x22\x06\x00\x20\x95\x21\x00\x65\x96\x1a\xda\x39\x07\xa9\x89\x84\x44\x4c\x39\xfb\x67\x35\x9b\x22\x5a\xe0\x6b\x32\xaa\x41\x69\x82\xa7\x96\xd3\x8c\xcc\x69\x56\xc2\x80\x50\x9e\x92\x9c\x2e\x88\x04\x33\x2f\x29\x79\x30\x03\xde\xa2\x46\xe4\x83\x90\x40\x18\x9f\x88\x77\x64\xa6\x75\xa1\xde\x1d\x1d\x4d\x99\xf6\x54\x3f\x11\x79\x5e\x72\xa6\x17\x47\x48\xc0\xd9\xb8\x34\x84\xf3\x28\x85\x39\x64\x47\x8a\x4d\x87\x54\x26\x33\xa6\x21\xd1\xa5\x84\x23\x5a\xb0\x21\x2e\x96\x23\xe5\x1f\xe5\xe9\x17\xd2\x6d\xb2\xda\x5f\x02\xdf\x5a\x74\x26\x9e\xc0\x3e\x08\x6b\x43\x5e\x2d\x26\xd9\xc7\xed\xb7\xd4\x20\x35\x3f\x19\xa8\x5c\x9d\x5d\xdf\x10\xbf\x00\x77\x2e\x11\xc2\xf5\xad\xaa\x06\xb6\x01\x14\xe3\x13\x90\xf6\xce\x89\x14\x39\xce\x02\x3c\x2d\x04\xe3\x1a\xff\x48\x32\x06\x5c\x13\x55\x8e\x73\xa6\x15\xe2\x1c\x28\x6d\xf6\x61\x44\x4e\x90\xe9\x91\x31\x90\xb2\x48\xa9\x86\x74\x44\xce\x39\x39\xa1\x39\x64\x27\x54\xc1\x27\x07\xb5\x81\xa8\x1a\x1a\xf0\x6d\x0f\xec\x90\x67\xaf\x3e\xb0\x72\xc6\x08\xf1\xbc\x74\xe3\xee\x6c\x3c\xc3\x24\x85\x24\xa3\xd2\x0a\x05\x44\x43\x96\x91\x8f\xef\x3f\x90\x99\xb8\x33\x58\xcc\xb8\xd2\x34\xcb\xf0\x14\x38\xfe\x6c\xc9\x69\x42\x39\xc9\x29\xa7\x53\x20\xb4\x28\x14\x99\x08\x49\x28\x99\xb2\x39\x70\x7f\xba\x46\xdb\x2e\x7e\x13\x91\x20\x96\xb8\xaf\x65\x50\xfe\xaa\x5b\xe0\xd2\x95\x4d\x64\xc3\x8c\x15\x19\xe8\x01\xa8\x1d\xd7\xf7\x22\x66\x73\x52\x72\xa5\x65\x89\x9b\x9d\x92\x5b\x58\x38\x24\xcf\x69\x41\x94\x16\xe6\xc7\x3b\xa6\x67\x84\x86\x08\x4e\x35\x62\xf1\x18\x88\x02\x4d\xc6\x0b\x62\xc4\x38\x24\x08\x5a\x88\x0c\xa9\x05\x3e\x8b\x84\x41\x82\x96\x0c\xe6\x40\xa8\x1c\x33\x2d\xa9\x5c\x54\xd8\xb0\x0c\xd0\x47\x80\x8a\x1f\x1b\x08\x0f\x9b\x41\x42\x1e\xc2\x45\x62\xc9\xad\x93\x5d\xd2\x4a\xb0\xdc\x02\x7a\x97\xe7\x0e\xdf\x6a\x71\x54\x39\x7c\x03\x45\x0c\x5e\x39\xf9\xa0\x92\x6b\xf1\x4d\x0e\xb1\x52\x22\x64\x85\x19\x06\x6c\x21\x12\x8e\xc1\x90\x13\x49\xb9\xb9\xb0\x16\xb9\x5b\x40\xeb\x21\xb4\x31\x43\xdc\xf1\x75\x38\x1a\xce\x4d\xa5\x6c\x08\x4c\xe1\x60\x1a\xf2\x0d\x33\x3f\x08\xbb\xea\x67\xb3\xc0\x39\x4b\xc1\x00\x51\x53\x66\x51\xc7\x9c\x56\x3a\x16\xa5\xb6\xb0\x73\xb7\xa4\x64\xce\x28\xa1\xd3\xa9\x84\x29\x22\xf0\xc6\xd7\x3e\x02\x13\x3b\x36\x1f\xd0\x7a\x0c\xad\x24\xff\xe0\x1d\x86\x0c\x3e\x78\x03\x5f\x77\xcc\xc3\x1b\x56\x85\xc5\xe6\x78\x6c\x0f\xed\xa0\x89\x81\x89\x07\xad\x90\x0f\xde\xbc\xcd\xde\xda\xf1\xc8\x0e\xdb\xd1\xdc\xe7\xa5\x85\xb8\xab\x63\x73\x3e\x6a\xd2\x6c\xc8\x01\xde\x58\x13\xdf\x31\x90\x02\xe4\x44\xc8\xdc\x1c\x14\x4e\x28\x49\xac\xfc\x56\x11\x1e\x24\x8d\x3c\x79\x08\x9c\x64\xdb\xfd\xb7\x63\x1b\x2c\xb0\x63\x48\x0a\xaa\x67\x8f\xdc\xb6\xdd\x56\xd9\x11\x02\xed\xd1\x9b\x1f\xa1\x66\x2b\x73\xd7\x1c\xa6\xf7\xb9\x0d\x18\x7a\x9f\x14\x79\xce\x36\xb3\x36\x50\xed\x8a\xde\x7d\x00\xa5\x0c\xcb\x46\x29\x4d\xd2\x3b\x02\x3c\x11\x86\x58\xfc\xbf\xd7\x1f\x2f\xec\xb4\x23\x72\xae\x09\xcb\x8b\x0c\x72\x23\x88\x91\x0f\x54\xaa\x19\xcd\x40\x22\x77\xfa\x9e\xe7\x8d\xbf\x1d\x26\x96\x0a\x52\x43\x8b\x52\xc8\xe8\xc2\x4e\x96\x42\x22\x52\x43\xa3\x85\x24\x85\x11\x70\xf3\xa2\xd4\x40\xa8\xbd\x8a\xef\x65\x7c\xba\x8e\x48\x77\x02\x0d\x31\x92\x48\x4e\xf5\x3b\x32\x5e\xe8\xc7\x50\x9f\x90\xfb\x61\xba\x2d\x0d\x08\x17\xf3\x38\x25\xb0\x63\x2b\x7a\x10\x4e\xfc\xe8\x57\x1a\x21\x94\x32\x0e\xf2\x52\x48\xbd\x0d\xd1\x32\xca\xc7\x14\xe4\x83\x77\x7a\x90\x31\xae\xff\xf0\xfb\x07\xee\x4c\xa1\xc8\xc4\xc2\xe0\xc5\xe3\x67\x65\xcb\xef\xd9\xfa\x5c\x6f\x3b\xdf\xb6\x67\x79\xcb\xf9\xac\x71\xaa\x8f\x99\xd6\x29\x50\xad\x26\xe2\x7d\x7d\x5b\xa5\x04\x3e\x19\xf3\xbb\x3c\xf7\xd6\x86\x2b\x98\x80\x04\x9e\x38\xda\xf4\x5d\x39\x06\xc9\x41\x83\x0a\x04\xe9\x45\xe1\x28\x8d\x91\x05\x97\xd9\xdd\xd3\x70\xb9\x47\xe4\x19\x7f\xdb\x23\x52\x8d\xbf\xed\x31\xd9\xc6\x8e\x5d\xd8\xe6\xe3\x48\x67\xc7\x4e\x34\xf6\x71\x04\x6c\x31\xe9\x7c\xbd\x39\xa7\xc3\xbc\x46\x27\x7e\x06\x12\xde\x75\x63\x19\x0d\xf9\x6e\xc2\x20\x4b\x09\x33\xc2\x9b\x59\x2c\x19\x67\x22\xb9\x75\x76\xcb\xab\x53\xa2\x84\x15\xf7\x8c\x84\x6f\x18\x6d\x22\xb8\x2a\x73\x20\xec\x31\x0c\x8e\x22\x5d\x14\xe9\xa2\x48\xf7\x52\x44\x3a\xeb\x1f\x78\x0e\x94\x6a\x69\x21\x1b\x69\x15\xde\x17\xa9\xd5\x43\x23\x52\x2b\x1c\x91\x5a\x3d\x32\x5e\x1c\xb5\xda\x4a\x4e\x7b\x74\xae\xc7\x0e\x72\x34\xa6\x46\x63\x6a\x34\xa6\xba\x11\x79\x99\x1b\x91\x97\x45\x5e\x16\x8d\xa9\x0f\x4d\x19\x8d\xa9\x3b\x4e\x14\x8d\xa9\xd1\x98\x1a\x8d\xa9\xd1\x98\xfa\xd8\xc7\x44\x91\x2e\x8a\x74\x51\xa4\xdb\x76\x31\xd1\x98\x1a\x8d\xa9\x0f\x8d\x48\xad\x82\x11\xa9\xd5\x03\xe3\x75\x53\xab\xee\xc6\xd4\x24\x03\xca\xd7\x2b\x55\x4b\xf1\xdf\x78\x1f\x8a\x46\x6c\xc2\x5c\x1e\x84\x7b\x9a\x8c\x61\x46\xe7\x4c\x94\x92\xdc\xcd\x80\xfb\x94\x1d\x32\x05\xad\x0c\x16\x80\x86\x75\x82\xf9\x23\xb4\xe6\x61\xfa\x32\x24\xc0\xe9\x38\x5b\x3b\xf1\x63\xa4\xc4\x3d\xf9\xb0\xf1\x78\x2c\x84\xf9\xba\x55\x88\xa1\xaa\xe3\x35\x9d\x5d\xe2\x99\xf7\x36\xe5\xd8\xad\x0f\x6a\x3e\xb9\x3a\xed\x2b\x94\x99\xfc\x8d\x93\xf3\x6a\x56\x82\x96\x69\x4c\x94\x30\x3c\xc4\xfc\xfa\xf1\x8e\x43\x8a\x49\x6e\x03\xc2\xb4\xb9\xc1\x1c\x7a\x96\x30\x9d\x2d\xaa\x17\x8f\xf6\x76\xdf\xc4\x67\x14\x12\x7d\x72\x75\xba\xbd\xf9\xde\x6f\xc0\xe7\xb0\xd4\x47\x3b\x7c\xb4\xc3\x57\x23\x8a\x41\x2d\x27\x8d\x62\xd0\x03\xe3\x75\x8b\x41\xcf\xdd\x6e\x1d\xad\xcd\x24\x5a\x9b\x1f\xbe\x2d\x5a\x9b\xa3\xb5\x39\xda\x6f\x36\x8c\x28\xb8\xe0\x88\x82\xcb\x23\xe3\xc5\x09\x2e\xd1\xda\x1c\xa9\x55\xa4\x56\x91\x5a\xbd\x0c\x6a\xf5\x12\x43\x77\xa3\xd1\x2f\x1a\xfd\xa2\xd1\x2f\x72\xa3\xc8\x8d\x1e\x19\x2f\x8e\x1b\x45\xa3\xdf\xae\x13\x45\xa3\xdf\xda\x11\x8d\x7e\x8f\x8c\x68\xf4\x8b\x46\xbf\x0d\x23\x0a\x2e\x2d\x27\x8d\x82\xcb\x03\xe3\x75\x0b\x2e\xd1\xe8\x17\xa9\x55\xa4\x56\x91\x5a\xbd\x0c\x6a\xd5\xdd\xe8\xf7\xc8\x49\x7a\xf8\xd9\x87\x4f\xca\x83\xcf\xb2\xe4\xa1\x17\x6e\x82\xe8\x03\x10\x7c\x94\x70\x3d\x46\xae\x86\x64\x4c\x15\xfc\xe9\x8f\x2b\x75\xcb\xc3\x5b\x72\x48\x19\x35\xaf\x5a\x7b\xc7\xe3\x24\xac\x7e\xc5\xe6\x3d\xdb\x62\xef\xab\x65\xb4\x9c\xc5\x15\x56\x7e\x34\x28\xd6\x6c\x6d\x7a\x6e\x6f\xbe\xd6\x92\x6a\x98\x2e\x82\x42\xde\x68\x93\xad\x39\x0f\xdf\x50\x80\xbe\x52\x1a\xef\x66\x20\x01\x1f\xf2\xa5\xa7\x95\x9f\x94\xa9\x2a\x7a\x39\x6d\x51\xdc\xf7\xb1\x70\x64\xff\x9e\x35\x97\x1f\xdb\xb4\x75\xd5\xb7\xd7\x02\xcb\x03\xe8\xd4\x5a\xaf\x4f\xab\x14\xe0\x65\x88\x15\x54\x1a\x0a\xe9\xad\xdc\xc8\xb4\x83\xbb\x97\xe0\xbd\x89\x28\x6e\xc1\xa9\x1f\xe7\xd0\xc3\x20\x53\x79\x93\x65\x7d\x1b\xc6\xec\x7a\x60\x5c\x82\xcc\x99\x52\x9b\x02\xae\x9b\x4b\x7f\x8c\x6c\x6e\x41\x2e\x37\xc0\xdf\x7f\x51\xb0\x9c\x4a\x7c\xc2\x1d\x90\x63\x9a\x10\x59\x66\x46\x98\xe2\x29\x71\xe5\xaf\x09\x4d\x12\x51\x72\x4d\x38\x40\x6a\x2d\x1b\xeb\x70\x75\x0b\x62\xbb\x85\xfc\xb4\xad\xf4\x34\xb4\xeb\x7c\xf4\x2e\xf7\x0d\xc7\xf6\x13\xd6\x16\x54\x0f\xc7\xf6\xd2\x16\xbe\xfe\x71\xae\xb5\x0b\x2b\xdc\x9a\x11\x36\xf6\xf7\x52\x64\x2c\x59\x5c\x95\x19\x90\x99\xc8\x52\x85\x65\xfd\x0d\x77\xaf\x1c\x0e\xa1\x88\x5c\xe0\xdd\xb8\xfa\x01\x19\x97\x9a\xa4\x02\x14\xe1\x42\xfb\xc2\x00\x8d\xc7\xad\x8b\xe9\x6e\x66\x5b\x3b\x98\x87\x08\x2d\x8a\x0c\x53\x29\x84\x11\x5a\xee\x66\x2c\x99\xd9\x7e\x35\x05\x4d\x60\xdd\x6d\xdb\x4b\x2f\x5b\x89\xd7\x64\x27\x11\x9b\x78\x9b\xd5\xf8\x31\x54\x21\x3b\xca\xda\xc4\x96\x88\xff\x56\x8a\xb2\xd8\xf2\xf6\x55\xcb\xa2\x7d\xda\x50\x79\xbd\xd4\xc0\xc6\x5f\x74\x2e\x23\xbb\x37\xf6\xb6\xca\x24\x3a\x22\xe4\x7c\x42\xf2\x32\xd3\xac\xc8\xf0\x11\x5b\x6d\x40\x11\x2a\xa1\xe6\x1b\x03\x42\xf9\xc2\x7b\xa0\x5c\x9b\x08\x48\x09\x9d\x9a\x19\x35\xf6\x87\xf1\x25\xe9\x79\x99\x83\x39\xcd\x69\xfd\x12\x54\xa7\xf8\xa2\x9e\x9d\xdc\xb1\x2c\x33\xf2\x2c\xcd\x32\x71\xb7\x9e\x2d\xad\x1b\xbb\x09\x85\x64\x37\xc1\x90\xec\x2e\x02\x13\xc2\x05\xf7\xa6\xdd\xef\xaf\xde\xb7\xdb\xc4\x8b\xe6\x1c\xae\x17\x08\x68\x03\xd2\x82\x4a\xcd\x68\x46\x4a\x99\x29\xbb\x8f\xd4\x28\x01\xd2\x37\x53\x99\x51\xf4\x0c\x26\xa0\x6c\xd7\x0e\xf2\xaf\x76\xe7\x1c\x60\xed\xf9\x14\x3c\x5b\x10\x6a\x77\x7e\x52\x66\xd9\x80\x4c\x18\xa7\x86\xec\x42\xe1\x33\x61\x8c\xfe\x44\xae\x19\x4f\xc0\x7c\xd3\xb0\x12\x2c\x70\x45\x66\x46\x73\xbe\xab\x43\x9a\x0e\x5c\x5b\x11\xab\x2d\x2b\xf7\x0a\x73\x60\x13\x3a\xce\x00\xfb\x5a\x38\x91\xe5\x4a\x64\x68\xde\x76\x86\xef\xd4\xf6\x22\xa1\xe1\xe5\xff\x62\x1c\x95\x14\x72\x85\x8c\xc3\x28\x3b\xc0\xf4\xcc\xe8\x3e\x45\x91\x2d\x0c\xa1\x30\xb8\x53\x23\xd4\x81\x2a\x93\x99\xf9\xa4\xbd\x42\xa4\x6a\xcf\x90\x91\x3d\x05\x89\x04\xad\xf6\x0e\xcd\x5f\xcb\xdf\x80\xdf\x17\x3e\x77\x44\x0b\xb6\x77\x38\x20\x08\x20\x6c\x74\x22\xf4\xec\xe5\xe2\xa1\xff\xd6\x46\x7f\xad\xc7\x46\x53\x6b\x0d\x67\x70\x5d\x3b\x44\x61\x9b\x60\x18\x1a\xad\x01\xf3\xa4\x0c\x52\x22\x1a\xf8\xf6\x50\xab\xc4\x9a\x90\x63\x4e\x20\x2f\xf4\x02\xb1\x38\x07\xca\xdd\xdd\x30\x07\xb9\xd0\x33\xa3\xad\x32\xf5\xf2\x0f\xff\x96\x8e\xa5\x7a\xac\x05\xb8\x3b\xf0\x1e\xb8\x35\x92\xdb\xce\x4a\xcb\xc0\xdd\xff\xd7\xfd\x50\xea\x35\xe2\x53\x4d\xcd\x5f\x2c\x28\x91\xbd\xb6\x02\xe3\x0f\xe6\xc9\x26\x08\xed\x4f\x96\x5a\x56\xf4\xe3\xfd\x7b\xdb\x45\xc9\xc1\xea\x3b\xc6\x53\x2b\xa2\x1e\x6b\xdb\x9e\x08\xae\xc0\x2c\x38\xb1\x99\x89\xbe\xc6\x51\x6a\x09\xa4\xdb\x89\xb5\xe0\xc7\xb5\xbf\x44\xd0\xaf\x0a\xb6\xdb\x0a\xa3\x8f\x4c\x1f\x68\x3e\xcf\x41\x59\xc1\x7e\x4d\x0d\xf9\xc7\x50\xb0\x81\x75\x46\x19\x14\xc8\xe8\x18\x32\xdb\x8c\xc9\x5c\xad\x97\x4f\x8e\xdf\x7f\xa8\xfa\x96\x49\xa0\x8f\x58\xba\x3e\x81\x8a\xb2\x85\x4b\x75\xa5\xfb\xdb\xea\xd8\x5e\x2a\x45\x50\xec\x66\x26\x26\xd7\xa0\xed\x01\xcc\x69\x61\xce\x9f\x9d\x63\xad\x95\xf3\x3d\x42\xfa\xf1\xc3\xb2\x93\x34\xbf\x7d\xb7\xa6\x75\x2f\xd9\xea\xa8\x6c\xe7\x0b\xde\xe5\xec\x3d\x60\xfb\xa8\x47\x03\xcc\x4b\x08\xed\x24\x7e\x27\xa3\x27\x55\xe7\x3d\x8b\xc1\xca\xa6\x4c\xdb\x04\x75\xe9\x7f\xaf\xa7\xe8\x79\x0b\x76\x51\xa7\x8c\x46\x9d\x41\xa2\xc5\xc3\x05\xe1\xfc\xcd\x1a\xf2\x22\x7b\xec\xe4\x91\x9d\x55\xaf\x9c\xf1\x2b\xa0\xe9\xe2\x1a\x12\xc1\xd3\x2d\x09\x6c\x63\x3f\x3e\x30\xce\xf2\x32\x27\xbc\xcc\xc7\x80\x20\x56\x76\x2e\x24\x24\x56\xad\xa5\x84\xc3\x5d\xb6\x70\xc4\x23\x25\x85\x48\x3d\x3d\x19\x1b\x35\x8c\xa6\x0b\xec\x7c\x86\xa5\x53\xf9\xc2\x4c\xc2\x74\xcd\x7d\x24\x49\x24\x55\x46\x60\x1a\xe0\xa4\x4c\x1b\x5e\x36\x06\xf4\x3a\xb1\x14\xcc\x1e\xd3\x39\x65\x99\x11\xba\x47\xe4\x14\x26\xb4\xcc\xb0\x81\x1f\x79\x43\x0e\xcc\xcb\xbc\xa6\xb5\xee\x01\x23\x08\x2b\x61\x74\x74\xe5\xb2\xdf\x71\x41\x87\x3b\xd8\xd1\xb7\xa9\xec\xe7\xc7\xb6\x15\xfe\xfc\x28\x68\xa9\xb6\x55\xd0\x1b\x1b\x73\xce\x53\x73\x1e\x42\x19\x35\x20\xe9\x4c\xb9\x99\xb7\x63\xd9\x0f\x57\x45\x58\xb3\x6a\x29\xa6\x12\x94\x3a\x05\x9a\x66\x8c\x43\x7b\xfc\xba\x99\x01\xc9\xe9\x3d\xe2\x98\x66\x39\x18\x49\x24\xc4\x30\x1a\x7e\x95\x16\x24\xa7\xb7\x50\xbd\x9e\x8c\x61\x82\x0d\x1a\xf1\x83\x83\xdd\xb7\xf8\x33\xa1\x2c\x83\x74\x84\xef\x08\x66\xa9\xfb\x1a\x5b\xc4\x31\x7f\x33\x5e\x82\x79\xaa\x90\x02\xd5\x4c\xfb\x68\xc8\xe3\x91\x87\x52\x73\xb3\xa5\xc3\xbe\x97\xdf\xe5\x12\x28\xce\xee\x13\x6b\xfe\x93\x40\x15\xde\x66\x71\x53\x95\x72\x62\x94\x4a\xaf\x8b\x06\x0b\x72\x4d\x60\xc9\x85\xd0\xae\x25\x60\xf5\x81\xf8\xb4\x6b\x51\x09\x4a\xb3\x1c\x0f\x58\x5a\x4a\xdf\x30\x13\x61\x46\xd7\x6f\x7d\xe3\xa8\xfc\xe9\xcd\x9b\x2d\xe5\xb7\x4f\x8f\xf4\x12\x50\x87\x6e\x83\x2f\x17\x15\x1d\xf2\xe4\xdf\x28\xc7\x66\x8f\x99\x13\x90\xb1\xf3\x27\x48\xf4\x20\x32\xa5\x19\x9f\x96\x4c\xcd\xc8\x18\xf4\x1d\x00\x27\x70\x6f\x6b\x5f\x90\x7f\x82\x14\xb8\xa9\x06\xbc\xb5\xf3\xa0\x01\xb4\xb7\xcf\x07\x62\x73\xa6\x98\xe0\x7f\x61\x4a\x0b\xb9\x78\xcf\x72\xf6\x48\x51\x52\x3f\x56\xfb\x1f\x57\x10\x14\x59\x8a\x5d\x8b\x59\x42\xaf\xc1\x7e\xb0\x04\xb4\x6d\x6a\x61\x15\x57\x62\xce\xc9\x98\x26\xb7\x9f\x0c\xc0\x6f\x9e\x0b\x84\x3d\xbb\x6e\x01\x55\x94\xf7\xaa\x09\x90\x6c\x59\xa4\x3c\xbb\xb7\xf0\x69\x40\xf9\x6e\x26\x14\xe0\x0d\xd6\xfc\x88\x8f\x79\x77\x01\x53\x15\xc1\x30\xa7\x5b\x70\x50\x84\x4e\x26\xcd\x3b\xea\xc3\x8e\x92\x67\x5e\x2a\x4d\x72\xaa\x93\x99\x35\x72\x89\xb4\x12\x27\xf6\x95\x13\xfb\x77\x81\xf2\xd6\xe6\xe5\xdd\x0d\xc1\xc4\xae\xf3\xec\xde\xe8\x96\x8f\xfa\x79\x9a\xa3\x01\xf2\xe5\x69\x9a\xba\x71\xd6\xdc\x10\x27\xb7\xe5\xb6\x79\xf0\x0d\x9a\x86\xeb\x5f\x70\x17\x8e\x2f\x4e\xb7\x37\xd2\xb4\x51\x70\x77\x56\x71\x97\x8d\xe0\x0f\x7c\x94\x37\xa6\xba\x2b\x4d\x4b\xb8\x6d\x1a\x3d\x20\x94\xdc\xc2\xc2\xf6\x97\x5e\x69\xd8\x2b\x21\x73\x92\x04\x60\xdf\x5a\x73\x93\x6b\x36\xbd\xc3\x7a\x77\xc6\x1e\x3b\x76\x73\x52\xf8\x31\x34\x0b\xdd\xf1\x09\xff\xd1\x3b\x3c\xb6\x3b\x82\xdb\x71\x0b\x8b\xdd\x1e\x58\xda\x6e\xb3\x0b\x4e\xf7\xb1\xfb\x6e\x7e\xa8\x04\xbd\x6a\xab\x77\xf3\x1e\x85\x63\x67\xe3\x95\x1f\x1e\x88\x9d\x3e\xaf\x42\xbf\xd0\xca\x64\xbe\x71\x5f\x59\x64\x34\x67\x7a\xc6\x0a\x64\x44\xde\x4d\xe0\xdb\x9f\xff\x40\x33\x96\x56\x53\xd8\xf3\x7b\xce\x07\x46\x7c\x32\xff\x41\xa2\x6b\xc5\xb5\x53\x01\xea\x42\x68\xfc\xe5\xb3\x01\xc8\x2e\xb3\x13\x78\xec\x14\xce\x3e\x8d\x54\x06\x15\xaf\xa0\x73\xba\x1a\xf9\x9a\x5f\x15\x28\x99\x22\xe7\x9c\x08\xe9\xe1\x80\xbd\xec\xed\x44\x76\x0a\xe4\x13\x63\xeb\xfa\x40\xcb\xf5\xda\x39\x1c\xf8\x84\x6c\x40\xef\x81\xe9\xdc\x54\x28\x1f\xd8\x2b\xb6\x57\x7e\x86\xd2\xae\x13\x55\xa9\x77\x7f\xb3\x84\xe4\x20\xa7\xe8\x8b\x49\xb6\xf6\x45\x34\x37\x65\x37\xba\x6b\xc7\xce\xd4\x37\x7c\xe1\x4e\x58\x80\xac\xc9\x9a\x80\xba\x30\x37\x3b\x43\xc3\xe4\xf4\x7f\x0c\x05\xc7\x3d\xf8\xbf\xa4\xa0\x4c\xaa\x11\x39\x26\x8a\xf1\x69\x06\x8d\x6b\x4e\xc3\x08\xa7\x31\x33\x30\x45\x0c\xa9\x9d\xd3\xcc\xe9\x52\x94\x13\xb0\x36\x2b\x33\xfb\x32\x4b\x1d\x38\x49\xc5\x50\x9e\xca\x05\xb6\x77\x0b\x8b\xbd\xc1\x0a\xd2\xec\x9d\xf3\x3d\xcb\x5b\x56\xd0\xa4\x62\x44\xe8\x3d\xdb\xc3\x6b\x7b\x7d\x72\xe1\x1d\x19\x4e\x5b\x3b\x5a\xf3\xa5\x5b\x63\x84\x8f\xfa\x68\x29\xac\x37\xb4\x44\x17\xeb\xa4\x05\x29\x15\x58\x69\x1d\x4f\x19\x01\x2f\x67\xa2\x54\x89\x8a\x29\x87\x3b\x94\x1e\x9f\x8d\xe0\x67\x34\x09\xc6\xa7\xdf\x17\x29\xd5\x5b\x85\x9b\xda\xd1\x80\xc8\xfe\x95\x9d\x84\x94\x38\x8b\xc1\xad\x09\x9b\x92\x82\x4a\x9a\xab\x11\xb9\x74\x75\x0f\x11\xd3\xd8\x24\xb4\x25\x3a\xd8\xdd\x2c\x0a\x20\xff\x0f\xb9\x0a\xd7\x32\x22\xc3\xe1\x90\xdc\x7c\x3c\xfd\xf8\x8e\xd8\x5f\xac\x94\xad\x05\x99\x08\x54\x82\x44\x29\xcd\xab\xe6\xc0\x51\xf1\x37\xf2\xbd\xe0\xf0\x71\x62\x4e\x08\xd5\x30\x07\x49\xee\xcc\x56\x25\x2c\x85\xca\x7a\x35\xda\xff\xb4\x78\xdc\x4e\x32\xc9\xe9\xfd\x75\x29\xa7\x3b\x6c\x00\x59\xd9\x84\xd0\x64\x53\x2b\x93\x88\x7a\x61\xde\xae\x4a\x66\x90\x96\x19\xa4\x84\x8e\xc5\x1c\x1a\x26\xdb\xe6\x63\xc8\xd2\x4b\xf0\x0f\x1a\x9e\x37\x56\x22\x2b\x75\xa5\xac\x1e\xc0\xfd\x3b\xf2\x6f\xe8\xf4\xa6\xa4\x00\x99\x00\xd7\x74\x0a\xcb\x66\x00\x7b\xdf\xdb\x37\xff\x72\xe8\xf8\x91\x99\xd1\x59\x4f\xde\x18\x8c\xf8\x40\xef\xbf\xe7\xb5\x69\x90\x29\xf2\x66\x44\x8e\x97\x5e\x86\xcf\x65\x49\x99\xa1\xad\x05\x1d\xf9\xc1\x2b\xc7\x0b\x22\x45\x89\xae\x7c\x52\x16\x4d\x6d\xf6\xf7\xff\xf6\x2f\x46\xe9\xa3\x79\x91\xc1\x3b\x5f\x2e\xd5\xaa\xcd\x46\x86\xd1\x82\xfc\xe1\xcd\xbf\x58\xea\x69\xce\x67\xad\x15\xd6\x30\xa3\x06\x60\x65\x41\x58\x6e\x83\x34\x21\x5b\xd4\x75\x57\x65\x13\xfd\x95\xa6\x52\xab\x01\x41\x7f\x7f\x25\x1c\x6a\xa1\x69\xb6\xa4\xe5\xa3\x16\x0e\x77\x16\x48\xa9\x40\x98\x00\x1a\xaa\xc8\xdb\x3f\xbc\xf9\x97\x55\x73\xca\x47\x9e\x00\x3e\x89\x4f\x60\x00\xc6\xd8\x28\xf7\xb7\x2c\xcb\x20\x1d\x3c\xba\xfc\x49\x29\xf5\x0c\xe4\x80\x00\x57\xde\x58\x65\xd6\xb7\xb4\x36\x9c\x5d\x96\x9c\xa3\x8c\x60\xad\xc3\x68\xd1\x0a\x2c\x5c\xee\x63\x0d\x23\xd4\x24\x17\x4a\xaf\x5f\xf2\xf6\xc7\xcd\x0c\xca\x17\x1f\x27\xbb\x8a\x03\xc3\x16\x66\x88\xd5\xa7\x5b\x88\x94\xf7\xc3\xdb\x2a\x87\x72\xc8\xb8\x1e\x0a\x39\xb4\xd3\xbc\x23\x5a\x96\x8f\x7b\x0d\xea\x91\x37\x4e\xc0\x67\x20\x03\x65\x70\xde\x56\x76\xf5\x93\x9c\xfc\xf6\xe7\x39\x15\x77\x7c\x33\xe5\x40\xc2\xe9\x68\x46\xcb\x53\xdf\xb4\xb8\x2d\x1d\x1b\xf3\x76\x73\xf7\xff\x6f\x15\xbb\x77\x20\x07\xee\xec\x56\xa7\xdd\xc8\x55\xe8\xf1\x18\x6c\xf1\xf6\xea\xd8\x5a\xce\x67\x6d\x4e\xe6\x06\xfb\x9a\x35\x94\x6b\xe5\x84\xaf\xa1\x40\x76\x1d\xb5\x43\x46\x63\x44\x81\x39\xe7\x6a\xe3\x41\xcf\x80\x2a\xbd\x0e\x14\xf1\xa0\x3f\x3e\x1e\x0e\xed\x5f\x1e\x4d\xa1\xd3\x48\x48\x08\xf2\xda\xc6\x78\x62\x11\x65\xef\x0a\xac\x87\xcf\x86\xa2\x35\x84\xa8\xbd\xea\x48\x98\xfd\x6b\xca\x57\x9f\x2a\xa0\xc6\x1b\x39\xdb\x88\xd6\xee\xd1\x20\xe4\xd7\x99\x4e\x1d\xf1\xaa\x3c\x8a\xd6\xa5\xf9\x6c\xa4\xe8\x1c\x34\x7d\x38\xfd\x63\x79\x34\x89\xf6\xb5\xa6\x3c\xa5\x32\x75\xab\xdc\xdf\x57\xd5\x94\x23\xf2\x01\x7d\x69\x7c\x22\xde\x91\x99\xd6\x85\x7a\x77\x74\x34\x65\x7a\x74\xfb\xef\x6a\xc4\xc4\x51\x22\xf2\xbc\xe4\x4c\x2f\x8e\xd0\x81\xc6\xc6\xa5\x16\x52\x1d\xa5\x30\x87\xec\x48\xb1\xe9\x90\xca\x64\xc6\x34\x24\xba\x94\x70\x44\x0b\x36\xac\x65\x66\x35\xca\xd3\x2f\xfc\x8b\x3e\xb1\x60\xdc\x38\x43\x68\x5d\x92\x73\x18\x96\xfc\x96\x8b\x3b\x3e\x44\x4d\x56\xed\x74\x9a\xb6\x8b\x62\xf0\x63\x09\xde\xbb\x04\x2e\x14\x22\xfd\xe4\x9b\x60\x3e\x66\x48\x79\x3a\xb4\x4e\xc7\x4f\xbc\x17\x6d\x6c\xbb\xc3\x3a\x30\x60\x9b\x58\x74\x3b\xda\x69\x43\x34\xd1\x6c\x0e\xad\x9c\xd8\x7e\x34\xb6\xfb\xa3\x0f\x25\x4d\x4b\x69\x77\x3c\xf0\x66\x7b\xdf\x4c\x4e\x17\x28\xeb\xe0\xbb\x89\xb0\xac\x9c\x8b\x14\x9c\xe5\x73\x8e\xaa\xfd\xb5\x61\xe6\x37\x46\x14\x76\x3e\x6e\xb4\xfb\x2e\x94\x86\xdc\x12\x27\xfb\x7c\xb6\x20\x5a\x2e\xac\x63\x5c\xde\x1a\xe5\xd3\x79\xae\x8d\xc4\x7f\x8b\xf7\x29\x25\x12\x86\xa2\x4f\x0d\x57\x2f\x77\x79\x1b\x1e\x25\x85\x50\x0c\xdf\xed\x78\xde\x6e\x96\xb9\xf6\xec\x32\x70\xd3\xfd\xe9\x8f\xbb\x6c\xdd\x04\x1b\x2c\xec\x68\x65\x6f\x46\x50\x4c\xc2\xd8\x7f\xb7\x3d\xfb\xca\x2b\xae\x46\x2c\x49\x04\x57\x5a\x52\xb6\x39\xbb\x69\xfd\x68\xe9\x0a\x69\xef\x6f\x20\x88\x41\xc7\xad\x80\x42\x56\x63\xb0\x3c\x53\x44\xb4\xf4\xa0\x0e\x01\x63\x93\x9f\x7c\x2c\xa1\x21\x5c\x2d\x4d\xab\x2d\x60\x44\x3a\xc1\xc9\x3e\x0d\x13\x90\x12\xd2\x53\x94\x3e\xaf\xab\xef\x3a\x9f\x72\x51\xfd\x7c\x76\x0f\x49\xb9\x6d\x8e\xf8\xea\x58\xb1\xe5\x79\x83\x88\x0b\x3b\xb1\x8b\x30\x47\xd7\x5f\x70\xf2\x87\x40\xb0\x3b\x41\x44\x51\xcd\xd4\xc4\x66\x92\x55\x1b\x01\x81\xe3\xb3\x42\xe1\xca\x3d\x8c\x2c\xce\x26\x45\x30\x8d\xe4\x26\x99\x09\xa1\xcc\x29\xc7\xfd\xc4\x79\xe7\x4c\x58\x9f\x1f\xa6\xb5\x48\x92\x1b\x1a\xe3\xd3\x5b\xea\xe9\xad\xa1\xb6\x7e\x8c\x29\xab\x82\x57\x10\xf4\x5e\x2a\x33\x0d\x1a\x1e\xcd\x1f\x53\x94\x9a\x94\x26\xaa\xcc\xcd\xa4\x77\xc0\xa6\x33\xad\x06\x84\x8d\x60\x84\x58\x03\x34\x99\x05\xd3\xe6\x00\xba\xd1\x1f\x25\x44\xb5\xd0\x4a\x7c\x50\xe5\x3b\xb8\x04\x9d\x41\xc5\x63\x96\xf7\x72\x2d\xb8\x06\x04\x74\x32\x3a\x1c\x90\x3a\x85\xdc\xac\x71\xbc\x20\x4c\x83\xa1\xd9\xa8\x8b\x48\x51\x4e\xed\x97\x80\x8f\xe9\xc4\x75\x55\xc9\x20\xe8\x45\x4d\x51\x67\xdc\xb3\x1f\xb7\x67\xf6\x0d\x57\x5e\xe6\x46\x5f\xac\x88\x3a\x9a\xd5\x7d\x4b\x1d\x21\x25\xa8\x42\x58\x6d\x73\xd9\xe0\xfe\xff\xaf\x1e\x3a\x50\x87\x35\x30\x67\x6c\x3a\xf3\xb0\xa4\x8e\x11\x34\xf7\x60\xf7\xb3\x47\x3a\xf9\x52\xec\x68\xe9\x51\xb1\xa3\xe9\xdb\xf6\x99\x14\x35\x56\x05\xfb\xaf\x41\xe6\x15\x14\x11\x45\x90\x64\x38\x3b\xb7\x6f\x65\xe3\x70\x8c\xbc\x21\x07\x88\x64\x4c\xef\x2b\x44\xf8\xa1\x28\x0e\x47\xe4\x98\xf0\xb2\x3a\x73\x0f\xbd\x80\x8b\x6a\x7e\x37\x91\x79\xa9\x12\xf5\x5c\x2d\xbf\xb8\x13\xb9\xb3\xa3\x9d\xa7\x3c\x1c\x43\x07\x01\x78\xbc\x60\xe2\x43\x93\x58\x58\xb7\x9c\xa0\x1b\xe9\xf6\x73\xf8\xaf\x68\x3f\xc7\x4a\x80\x05\x1e\xd7\x3a\x8a\x02\x64\x3e\x08\xa5\xa7\xea\x40\x36\x4f\xb1\x85\x45\x5b\xac\x20\xfd\x60\x06\xe9\x09\xae\xa4\x53\x84\xce\xfa\xb1\x1c\xc6\xe2\xf3\xab\x1a\xd0\x6e\x10\xf9\xf1\x02\xaf\xee\x18\xbc\xb4\x79\x74\xa5\x74\xf5\xe8\x44\xf3\xea\xf1\x20\xe2\x3d\xbf\xc0\x9e\xf5\xa3\x27\xb4\xb5\xa3\x3b\x69\xab\xc7\xee\xa1\x41\x9b\xe6\x69\x11\x30\xb4\x7e\xf4\x75\x36\xed\x68\x11\x5c\xb4\x7e\xac\x88\xa8\x9f\x26\xd6\x68\xfd\x68\x6d\x24\x5d\x3f\xda\xc6\x25\xad\x1f\x4b\x49\x8c\x9f\x28\x48\x69\xd0\x8c\x50\x22\xdf\x6a\x7b\x8e\xdf\x77\xe2\x27\xf5\xe8\x19\xc4\xed\x22\x9b\xd6\x8f\x65\x01\xf0\x85\x44\x39\xad\x99\xea\x5b\x6d\xa6\x79\xbf\xf1\x61\x9b\xbd\xee\xe3\x74\x9c\x42\x31\x70\xa9\x33\xde\xce\x8c\x11\xd5\x85\x04\x2c\x38\x80\x61\x5f\xde\x0e\xf3\x79\x02\xab\xd6\x8f\xfe\x18\xa7\x1d\x3d\xb1\x4f\x3b\x7a\x43\x6e\x14\x78\xbe\xb1\x76\xe1\x27\x94\x75\xac\x65\x3a\xca\x3a\x51\xd6\xd9\x61\x44\x59\x67\xdb\x11\x65\x9d\x4d\x23\xca\x3a\x6b\x46\x94\x75\xa2\xac\xd3\x69\x3c\x3f\x59\xc7\x5a\xaa\x7a\x33\x98\xfd\x68\x0d\xae\xcb\x16\x32\x94\xa6\x7c\x48\x4f\xd3\x54\x66\x78\xff\xb5\x23\xb1\x37\x68\x5e\x73\x91\xea\x92\xf2\x29\x90\xb7\xc3\xb7\x6f\xb6\x4c\x07\x5c\x3f\xba\x04\xed\x84\x63\xd7\xd4\xc1\xe5\xb1\xc9\x23\xf1\xc9\xbc\x4b\xee\xa4\x56\x0e\x8f\x86\x84\xb9\xc1\x41\x54\xd5\xbb\xca\x41\x13\xaa\x1b\x06\x71\x96\x43\xe5\x10\x6d\xa4\x20\xd7\x31\xbd\x82\x3b\x7f\x87\xd9\xd4\x51\xbb\x15\x24\x40\x6d\x1c\xfb\x18\xaa\x55\x88\x1c\x6c\x82\xa9\x3f\xf4\x66\x09\xe0\x61\x45\x0e\x60\x34\x1d\x91\xd4\x26\x6b\x53\xee\x62\xc6\x0e\x07\xa1\x7b\x3c\x37\xc4\x55\xe2\x7f\xcc\xb2\x9d\x7f\x1c\xe6\xc0\x75\x49\xb3\x6c\x41\x60\xce\x12\x5d\x7d\x1f\x06\x04\x32\x6d\x9d\x9d\x5d\x5c\x29\x1d\xc4\xc3\xae\x22\xe1\x70\xe5\x6c\xed\xe6\xaf\xf6\xa3\xbb\xec\xb6\xb2\x8e\xf6\xf4\x66\x49\x2e\xb1\x10\x1a\x6d\x54\xab\xb4\x79\x9b\xf5\x57\xe2\x3f\x11\xc1\x3f\x5e\xb5\x75\x8f\x91\x9e\x78\x42\x67\x3e\xb0\xac\x40\x95\x59\x66\xd0\xdb\x7a\xcc\x56\x41\xb0\xc6\x93\xb5\x26\xdb\xc6\xba\x59\xf3\x20\xeb\x06\xef\xb9\x11\x85\xc8\xc4\x74\x11\xee\xa0\xed\xd5\x12\x94\xb7\xa1\x44\x95\x63\x27\x02\x9a\x43\x74\xb1\xb4\xe5\xd1\x17\xb2\x71\x44\x5f\xc8\xca\x88\xf6\x81\xe5\x11\xed\x03\x3b\x8c\x68\x1f\x58\x33\xa2\x7d\x60\x75\x44\xfb\x40\xb4\x0f\x74\x19\xaf\xdf\x3e\x40\xa2\x2f\x64\xd3\x88\xb2\x4e\x3d\xa2\xac\xb3\xfd\x88\xb2\xce\xea\x88\xb2\x4e\x94\x75\xa2\xac\x13\x65\x9d\xb6\xa3\x03\x72\x17\x22\xed\x3d\x45\xa6\x10\xe9\x03\x19\x32\xd6\x5e\x9d\x88\x61\x26\x92\xaa\xb2\x88\x79\xc4\x79\x3e\x14\xcd\xad\x09\x7d\x40\xfe\x29\x38\xd8\xf4\x04\x5b\xb2\x36\x07\x22\xb0\x3d\x44\x21\xd2\x03\x75\xd8\x22\xf0\x3c\x66\xd8\xc4\x0c\x9b\xdf\x40\x86\xcd\x8c\x2a\x57\xf8\x08\x49\xeb\xe6\x84\x9b\xe0\xf8\xdf\x80\xcc\x7f\xb3\xf9\x36\x06\xe1\x1c\xc2\x60\xf7\xb8\x1a\x29\x2c\xec\x52\xe7\xdb\x85\xf4\xb2\x09\x31\xa7\x97\xd9\xe6\x3b\x69\x0a\x29\x29\x40\x0e\x2d\x92\x09\x32\x61\xae\xfe\xd7\x12\xfe\x3a\x08\xbf\xf0\xbc\x99\x26\x24\x5e\x74\xf2\x4c\xf3\x53\x7a\xf3\x4d\x85\x2e\xba\x06\x57\x7c\x71\xa9\x34\xfd\x68\xa5\x43\xa2\x9d\x3b\xed\xbb\x4e\x7a\x69\x5f\x4a\x24\x2a\x79\xd7\x3b\x95\x39\xde\x3c\xd6\x16\xa7\xfd\x47\x09\x72\x41\xc4\x1c\x64\xad\x18\x55\x7d\x7b\x06\x55\x93\x99\x84\xba\x02\xc8\xfd\x18\x78\x7a\x31\x45\xf4\xa9\xa9\xf7\xed\x35\x24\xcf\xac\xfa\xf1\xe6\xd1\xaf\xe2\xd0\xa3\xda\xf0\xd2\x6a\x29\x6f\x1e\xbd\x9a\xdf\x48\xcf\x26\x38\xd2\xa3\x19\x8e\xf4\x6b\x8a\x23\xbd\x9b\xe3\x48\x9f\x26\x39\xf2\xd9\x2b\x40\x6f\x1e\x3d\x9b\x8f\x48\xef\x56\x3a\xf2\x02\xeb\x49\x6f\x1e\x9f\x00\xdc\x7d\x5a\xec\x48\xac\x4e\xdd\x79\xf4\x6d\x50\x23\x7d\x1b\xd5\x48\xdf\x78\xd8\xaa\x0a\xf6\xe6\x11\xeb\x63\x7f\x02\x39\xad\x37\x21\xa2\x6b\x4d\xed\xc7\x16\xda\x03\x4e\x56\x5d\x7d\x3f\x97\x02\x64\xb9\x74\xdd\x4a\xd6\xbc\x3b\xe8\xd5\x85\xa1\x9a\x61\xcb\x53\x1f\xb7\x8a\x18\x8d\xbf\xa7\xde\xe0\x55\xf2\xa0\x78\x5c\x30\xd9\x4a\xeb\x98\xda\x74\x56\x35\x8f\x31\x4a\x41\xdd\x74\x2a\x78\x18\xef\x1d\xd9\x70\xd2\x5a\x9a\xe0\xe9\x72\x80\x69\xfd\x04\xea\x17\xb6\xd1\xed\x9e\xb7\x63\xef\xab\xfa\x8e\xbd\x51\xd8\x13\xd7\xcd\x78\xf0\x7f\xfe\xef\x61\xa3\x7a\x4b\x3d\xa1\xa3\xca\xd5\xd9\x19\x83\xa6\xc3\x0c\xe6\x90\xe1\x3a\x7c\xc3\xe5\x99\x40\x8b\xb1\x2d\x7b\x1a\x18\xa4\x2e\x96\x77\x94\x4c\x80\xea\x52\x62\x05\x51\xe0\x74\x9c\x75\x3f\x2b\x51\xc1\x8c\x0a\xe6\x76\x23\x2a\x98\x1b\x47\x54\x30\x3b\x8c\xa8\x60\x6e\x37\xa2\x82\xb9\x79\x44\x05\x33\x2a\x98\x2d\x46\x54\x30\xa3\x82\xd9\x76\xfc\x86\x15\xcc\x7e\x03\xa7\x43\x75\xcf\xc5\xa1\xa0\xfc\xa8\xa9\x66\x49\x1d\x54\xed\xef\xb2\xff\xea\x57\xcd\x0c\x55\xc8\xf5\x4a\x66\xa8\x88\xae\x28\xda\xa3\x47\x34\xca\x4a\xe7\x5c\x79\xf2\x41\x65\xf3\xb5\xc5\x86\xf7\x86\x88\x81\xd3\xb9\x57\x4c\xbc\xf1\xa1\x6b\x75\x6b\xf7\x2a\xae\x2d\x25\x07\xde\xdb\x8f\xad\x5a\xb8\xd0\xcd\x8b\x5c\xb3\x61\x7d\x47\xe5\xff\xc7\xb0\x9d\x46\xc5\x80\x86\x93\xba\x8a\x92\xab\x22\xb0\x6a\xe4\x31\xd4\x11\x64\x63\x0d\xd8\x1a\x77\xc2\xb8\x8d\xa5\xf4\x6d\x85\x04\xf7\x61\x59\x96\x9c\x22\x01\xf4\x68\x6e\x25\x5f\x5c\x0f\x8a\xbf\x35\xec\x82\x38\x22\x8a\x67\x8c\x72\x97\x6e\x2b\xb8\xef\x7b\x6f\x7b\xd9\xd7\xe2\x72\xd5\xad\xa5\x7a\xfb\x88\x9c\x21\xd2\x87\x13\x33\x85\xf0\xa1\xb6\xc3\x4a\x3f\x26\x8a\xe7\x55\x1a\xe2\x6e\xe7\xd2\x10\x4b\x31\x29\xb1\x32\x44\xac\x0c\xd1\xa9\x32\x04\x5e\xb4\x87\xbb\xf7\x12\x11\xe4\x47\xd7\x80\x49\x02\x82\x2a\x2f\x33\xcd\x8a\x3a\xc6\x5b\xd9\x57\x65\x56\x91\x98\xb8\x58\xd3\x26\xbe\x9b\xb7\xd1\x64\xb6\x8c\xf7\x38\x1f\xc6\x84\x2b\x24\x27\x2e\x9e\x13\xdb\x25\x61\x4d\x03\xaf\x75\xd8\xa0\x55\xf6\xf2\x63\x11\x4f\x91\x60\xab\x5a\x69\xb6\xdd\xbc\x0c\x9d\xcf\x0c\x4a\x18\x8a\xfd\x00\x83\x08\x5b\x66\x60\x5c\x2c\x9b\x03\xaf\xb9\xc4\x81\x3a\x3c\xf4\xc2\x50\xaf\xdc\xeb\x93\x70\x9f\x3f\x07\x5c\xe2\x3f\xb7\xe1\x3f\xf8\x41\x15\x07\xaa\xc1\x57\xf3\x9f\x97\x1d\x74\xd9\x3d\x7e\xae\x0f\x83\x5c\x6f\x71\x73\x4f\x1e\x33\xf7\x5b\xaa\xae\xf1\x2c\x5d\x18\xcf\x4e\xeb\x78\x1d\x6e\x8b\x98\x92\xba\xfd\x78\x09\x29\xa9\x4f\xe4\x9a\x78\x39\x99\xa9\x2f\xd6\x1d\xf1\x52\x32\x53\xa3\x0b\x62\xa7\xf1\x5a\x13\x46\x9b\xa3\x47\x97\x43\x74\x37\xf4\x2c\x53\xf5\xc2\xfc\x3f\x8d\x9b\xa1\x17\xfc\xeb\x35\x7e\x2d\xc6\xae\xbd\xf2\xd8\xb5\xa8\xe8\x45\x45\xaf\x39\xa2\xa2\xb7\x32\xa2\xa2\xb7\xc3\x88\x8a\xde\xe6\x11\x15\xbd\xd5\x11\x15\xbd\xa8\xe8\x6d\x31\xa2\xa2\x17\x15\xbd\x6d\xc7\x6f\x4c\xd1\xeb\xaf\x68\x7c\x8c\x21\xeb\x3f\x86\xac\x1f\x42\xd8\x03\xf9\xeb\x05\xe9\x7a\x8a\x19\x8b\xf1\x62\xcf\x3b\x5e\xac\x63\xe9\x3c\xae\xd9\xa7\x29\x9f\x17\xee\xf6\xa6\x1a\x7a\x74\x2e\x58\x4a\x8a\x52\xbb\x0a\x62\xb1\x8e\xde\x73\xae\xa3\xd7\xd8\xd1\x58\x4c\x6f\xab\x62\x7a\x9b\x60\x16\x2b\xea\x6d\x18\xcf\x27\x8a\x2d\x56\xd4\xdb\x75\xc4\x8a\x7a\xeb\x47\xac\xa8\xf7\xc0\x88\x15\xf5\x62\x45\xbd\x58\xf0\xa0\xc3\x88\x05\x0f\xd6\x8c\x58\xf0\xa0\xfd\x88\x05\x0f\xb6\x1a\xb1\xe0\x41\x2c\x78\xd0\x1c\xd1\x09\xd5\x6d\xc4\x82\x07\x1d\x47\x74\x4c\xc5\x82\x07\x9d\x26\x8c\x15\xf5\x62\x54\xe2\xee\x23\x2a\x98\x51\xc1\xdc\x6e\x44\x05\x73\xe3\x88\x0a\x66\x87\x11\x15\xcc\xed\x46\x54\x30\x37\x8f\xa8\x60\x46\x05\xb3\xc5\x88\x0a\x66\x54\x30\xdb\x8e\xdf\xb0\x82\x19\x2b\xea\x3d\xf7\x68\x48\xf2\x1c\x53\x9e\x62\x45\xbd\x18\x21\xd9\x6a\xbb\x63\x45\xbd\xc7\xc7\x6f\xbe\xa2\x5e\x23\x5a\xef\xe9\xca\xea\xed\xbe\x8c\x58\x5b\x2f\xd6\xd6\x8b\xb5\xf5\x62\x6d\xbd\x58\x5b\x2f\xd6\xd6\xdb\x7e\x3c\x7f\x67\xc6\xb3\xd3\x3f\x5e\x87\x03\x23\x96\x5c\xd8\x7e\xc4\x92\x0b\x1b\x47\x2c\xb9\x10\x4b\x2e\x44\x67\x44\x9b\x11\x4b\x2e\xec\x38\xa2\xe3\x21\x96\x5c\xd8\x69\xc4\xda\x7a\x31\x8a\x6d\xfb\x11\x15\xbd\xa8\xe8\x35\x47\x54\xf4\x56\x46\x54\xf4\x76\x18\x51\xd1\xdb\x3c\xa2\xa2\xb7\x3a\xa2\xa2\x17\x15\xbd\x2d\x46\x54\xf4\xa2\xa2\xb7\xed\xf8\x8d\x29\x7a\xb1\xb6\xde\x73\x8e\x26\x8b\xb5\xf5\xd6\x8c\x18\x39\xf6\xbc\x23\xc7\x5a\xe2\x0a\x2d\xb5\xc8\x45\xc9\xf5\x35\xc8\x39\x4b\xe0\x38\x49\xcc\x5f\x37\xe2\x16\x76\x8c\x56\x6a\x6a\xa1\x0f\x4c\x4b\x18\x4f\x59\x82\x7a\xe4\xdd\x0c\xb0\x34\x9e\x11\x6f\xf1\x3e\x42\xed\x8d\x44\xe3\x9d\x35\x7a\xe1\x3a\x0d\x4d\xc3\x10\x1e\x9c\x7a\x57\x78\x59\x08\x8d\x85\xc8\x80\xf2\x1d\x9e\x74\xcc\x10\xe4\x8e\xa7\xb9\x01\x90\xf7\x8e\x12\xd7\x93\x91\x31\x64\x82\x4f\x5d\xc4\x90\x3b\x01\x23\x72\x52\xdf\x90\x50\x8e\x87\xa7\x94\x12\xb8\xce\x16\x08\x07\x2c\xd2\x85\x4a\x43\x2e\xe6\x90\x22\xc5\xc6\x40\x25\x2b\x46\x52\x4d\x32\xa0\xe6\x5d\x1c\xea\x97\x99\xc3\x43\xc9\x25\xce\x6f\x27\x1d\x83\x0b\x9e\x6a\x05\xc4\xdd\x69\x63\x2b\x6a\xb8\x64\xd8\x70\x52\x13\xb2\xa5\x04\xd5\xa3\xe0\x0b\xf1\x68\x2e\x44\x49\xee\xa8\x15\x94\x64\xc9\xf1\x30\xe3\xa7\x1b\xd0\xee\xf8\xf2\x0e\x22\x49\x7b\xeb\xc3\x10\xa9\xda\x8e\x8f\x75\xb1\x06\x50\x39\x6d\xc5\xa4\x1a\x5b\xb3\x7f\x2c\xa7\xa5\x95\x08\x1d\x2a\x03\xd7\x72\x81\x11\x7d\x56\xa4\x48\x45\x72\x6b\xd0\x30\xa7\x53\xd8\xdf\x57\xe4\xe4\xc3\xa9\xa1\x7d\xa5\x32\xa4\xda\x95\x09\x74\xb4\xb0\x90\x62\xce\x52\x83\xd9\x3f\x50\xc9\xe8\x38\x33\x32\xe7\x04\x24\x70\x23\x12\x7c\x79\xf0\xc3\xf1\xd5\x2f\x17\xc7\x1f\xce\x0e\x51\xfa\x84\xfb\x82\x72\x73\x24\x4a\x55\xc7\xa1\x3a\x9c\x30\x2f\x02\x3e\x67\x52\x70\xb3\x38\xd4\xd3\x28\x99\xfb\x59\x93\xea\x24\x48\x50\x22\x9b\x43\x6a\x65\xe4\xea\x6d\x9e\xe5\x30\x5e\x94\xda\xeb\x8d\x18\x1d\x69\x4e\x0f\x4f\x66\x94\x4f\xcd\x3a\x4f\x45\x69\xe6\xfb\xf2\x4b\x5c\x91\x84\xb4\x4c\xac\xd4\x44\x3d\xca\x7e\x39\xf0\x6c\xc2\x10\x7a\x65\x6b\x3a\xaa\x84\x16\x7e\xcd\xe1\x67\xa9\x05\xd7\xf4\xfe\x9d\x0d\x0f\xdc\xfb\x32\xb8\xb4\xe7\xeb\x61\x0a\xf3\x0a\xcb\x6c\xec\xaa\x32\x2c\xc5\x98\x91\xbd\xf0\xee\x11\x39\x33\xef\x80\x34\x04\xa0\x8d\xee\x84\x39\x48\xd4\x3a\x1d\xf8\x06\x44\xc2\x94\xca\x34\x03\x85\x71\x8d\x9e\x30\x5b\xcd\xc0\x01\x0c\x2a\x9d\x96\x0b\xbd\x8e\x92\x90\x0f\x02\x63\x1c\x27\xe2\x1d\x99\x69\x5d\xa8\x77\x47\x47\xb7\xe5\x18\x24\x07\x0d\x6a\xc4\xc4\x51\x2a\x12\x75\xa4\xa9\xba\x55\x47\x8c\x9b\x93\x35\x4c\xa9\xa6\xc3\xe0\x48\x1f\x59\xb6\x3d\x4c\x44\x9e\x53\x9e\x0e\xa9\x43\xad\x61\xb5\xad\x47\x5f\x38\x86\x3a\xa4\xd5\x5d\x8c\x0f\xe9\x50\xcd\x20\xcb\xf6\x5b\x20\x73\x37\x81\xaf\x83\xa0\xd7\x49\xc0\x73\xdf\xde\xfd\xf4\x9e\x55\x87\xd5\xc2\x60\x44\x2e\x84\x76\xe1\xb7\x2e\xd2\x1b\x89\x28\xc2\x77\xfd\x79\x3e\xbb\xb8\xb9\xfa\xeb\xe5\xc7\xf3\x8b\x9b\x78\xac\xe3\xb1\x8e\xc7\xba\xc3\xb1\x06\x3e\xef\x7c\xa4\xbd\xb4\x19\x1c\x93\x6a\xbf\x91\x47\x2b\xd0\xfe\x18\x54\x1b\xd0\x59\x36\xb4\xe3\xc9\xa0\xde\x80\xc0\x19\x9f\xff\x40\x9b\xa6\x75\xbe\x16\x1c\xc4\xdd\x60\x45\xe4\x4a\xfa\xee\x12\x7b\xdf\xc1\x8c\xd5\xd5\x6f\xd5\x4a\x7e\xb4\xa3\xbb\x4f\xc9\xbc\xba\xbd\x89\xa1\xb1\x7d\x17\x34\xaf\xeb\x6b\xaf\xd9\xb5\x11\xf9\xe0\x15\x1e\x72\xf2\xcb\xf9\xe9\xd9\xc5\xcd\xf9\x37\xe7\x67\x57\xed\x35\xe8\x1e\x6c\x2d\x68\x4d\xe8\x09\x00\xfb\x2d\xb9\x64\x21\x61\xce\x44\xa9\xb2\x45\x65\xff\x58\x4f\x04\x96\x4f\xbf\x73\xf8\x2e\x2a\x4d\x7c\xed\x63\x91\xd9\xf6\xcb\x6c\x4f\x61\x42\xcb\xcc\xea\x4d\x7b\x7b\xa3\x36\x5c\xce\x8e\xbe\xd0\xf7\x1b\x29\x3a\xd4\x8f\x6e\xa0\xf0\xb5\xad\x3c\x3f\x11\x72\xe3\x31\xde\x77\x61\x07\x0d\xd6\xe3\x84\x47\x6b\x9b\x73\xd2\xa3\xf5\x8e\x75\x84\x4e\x47\xf7\x42\x3f\x4e\xf7\x44\xf0\x09\x9b\x7e\xa0\xc5\x77\xb0\xb8\x82\x49\x37\x03\x71\x13\xde\x68\x77\x74\x3e\x64\xb4\x52\x1a\x76\x66\x5f\xd6\xcd\x3f\xd3\x9b\x77\xa6\xaf\xb0\x8c\xee\x21\x19\xfd\x45\x50\xf4\x12\x3d\xb1\x52\xcd\xdf\x5a\xa0\x9d\x2d\xb9\xaf\xe0\x9a\x5e\x5c\xf6\xdd\xb8\xbc\x1f\x4d\x66\x17\xb2\x7b\x47\x67\xf5\xb6\x6a\x47\x22\x78\x02\x85\x56\x47\x62\x6e\x38\x17\xdc\x1d\xdd\x09\x79\x6b\xf4\x08\xa3\xb8\x0e\x2d\xd6\xaa\x23\xf4\x16\x1c\x7d\x61\xfd\x5f\x37\x1f\x4f\x3f\xbe\x23\xc7\x69\xea\x5a\xb3\x94\x0a\x26\x65\xe6\x9a\x21\x8c\x08\x2d\xd8\x0f\x20\x15\x13\x7c\x40\x6e\x19\x4f\x07\xa4\x64\xe9\xd7\xed\x89\xb3\x1f\x3d\xee\x82\x28\xac\x8f\xb3\xe7\x9d\xb8\x46\xef\xca\xa2\xc1\xbb\x2a\x22\x62\xb8\x16\xd3\x0a\x71\xd3\xdb\x9b\x9d\x90\xd1\x13\x68\x76\x37\xce\x2f\x0f\xdc\xc2\x7e\xe9\xea\x7e\x4d\x58\xad\x6f\xd3\x21\x6a\x21\xd2\x77\x44\x95\x45\x21\xa4\x56\x24\x07\x4d\x8d\xd2\x3b\x32\x18\x36\x68\xfe\x89\x5e\xaa\x01\xf9\x7b\xf5\x23\xba\x9a\xd4\x4f\xfb\xfb\x7f\xfe\xee\xec\xaf\xff\xb9\xbf\xff\xf3\xdf\xc3\xab\xc8\x0a\x6d\xf8\x4f\xf3\x16\x55\x40\x32\xe2\x22\x85\x0b\x7c\x07\xfe\xa9\x1a\x0e\x16\x77\x41\x53\x5d\xaa\xd1\x4c\x28\x7d\x7e\x59\xfd\x59\x88\x74\xf9\x2f\xd5\x41\xe2\x20\xcf\x93\x31\xe0\x16\x5d\x52\x3d\x7b\x26\xec\xa1\xa6\x25\x3d\x1f\x55\x37\x6b\xd8\x02\x28\xa7\xf8\xcf\x6f\x3c\x08\x8c\xf4\x74\x27\x99\xd6\xe8\x74\x73\x69\xe6\x62\x32\x30\xa7\xb6\x16\x3b\xe7\x6f\xf7\x9e\x15\x83\xa9\x76\xb0\x67\x80\x21\x44\x1c\xb4\xec\x41\xae\x18\xec\xaa\x73\xf9\xf8\xf2\x9c\xcc\x2d\x84\x9f\x0d\x70\x7c\xea\xf0\x37\x9f\x94\xc6\x55\x2d\xa3\x1c\xa8\x2a\x0d\xf1\x9d\x8d\x06\xaa\x12\x98\x49\xc6\x72\xe6\x82\x0c\x5d\x7b\x29\x45\x0e\xec\x8f\xa3\xa4\x28\x07\xee\x86\x51\x0e\xb9\x90\x8b\xea\x4f\x28\x66\x90\x1b\x4d\x6b\xa8\xb4\x90\x74\x0a\x83\xea\x71\xfb\x58\xf5\x97\x7d\xb0\xf1\x82\xd5\xa7\xad\x2a\x5c\x3b\x49\x1d\x45\x86\xf4\xf5\xd1\x36\x0f\xfa\x67\x42\xda\x2a\xcc\xb8\xf8\x04\x22\x61\x65\x89\xb3\x02\x67\x05\x45\xd4\x27\xe7\x22\x2b\x73\x50\x83\x4a\x0c\xb2\xd6\x00\x3e\x37\x9a\xa5\x7a\x56\x82\x5a\xca\xe6\x4c\xf5\x11\x3f\xbc\x46\x4e\x63\x2e\x14\x5f\x94\xba\x28\xb5\xab\x65\x13\xb4\xa5\x13\x0a\xed\x16\x55\xc1\x81\x06\xd9\x7f\xdb\xb5\xe0\x16\x21\x05\xd5\x1a\x24\x7f\x47\xfe\xfb\xe0\x6f\x5f\xfd\x3a\x3c\xfc\xfa\xe0\xe0\xa7\x37\xc3\xff\xf8\xf9\xab\x83\xbf\x8d\xf0\x1f\xff\x7a\xf8\xf5\xe1\xaf\xfe\x8f\xaf\x0e\x0f\x0f\x0e\x7e\xfa\xee\xc3\xb7\x37\x97\x67\x3f\xb3\xc3\x5f\x7f\xe2\x65\x7e\x6b\xff\xfa\xf5\xe0\x27\x38\xfb\x79\xcb\x49\x0e\x0f\xbf\xfe\xb2\xf3\xd2\x29\x5f\x7c\xec\x48\x40\xed\x18\xf6\x56\x8a\x68\x79\xc6\x9e\x02\xac\xef\x87\xb5\xd2\x34\x64\x5c\x0f\x85\x1c\xda\xa9\xdf\x11\x2d\xcb\x6e\xc4\xa4\x66\x4a\x7d\x9f\x7f\xdf\x7b\xec\x5d\xcd\x90\x2a\x76\xfd\x6c\x0e\xb8\x82\x44\x82\xfe\x1c\x96\x1c\xfb\x26\x2f\xa7\x2c\x05\x3b\xbe\x36\x3e\xf7\x5b\x30\xee\x54\xc1\x82\xb8\xaf\xb5\x24\x3a\x91\x22\x1f\x91\xc0\xbd\x31\xc7\x4c\x0f\x77\xdf\x2d\x74\xb0\x82\xfa\x11\x8d\x41\xd1\x18\xb4\x61\x3c\x6a\x0c\xba\xb6\x78\xf8\x6c\x2d\x41\xc0\xe7\x6d\x5d\x18\x6b\x3d\xe8\x5e\xd7\xd1\x82\x14\xa2\x28\x33\xaa\x37\x78\xc6\xd6\xb8\xd3\xdd\x51\xaf\x23\x91\xeb\x48\x1a\xcb\xd0\xf2\xf5\x3e\x4c\x72\x9c\x65\x84\x71\x7b\xf0\x71\x02\xef\x30\x93\x60\x55\x1b\x42\xad\x3f\x7b\x6e\x96\x70\xe7\x4a\xd6\x85\xe1\x9e\x8a\x28\x4d\xa5\xc6\xa8\x63\x2c\x69\x67\x59\x89\xf3\x3e\x31\x5e\x17\xb6\xab\x84\xc3\x2a\x09\x64\x6d\x5f\xcf\x8c\x2a\xed\x97\x8d\xab\xd1\xf4\x16\xbd\x8d\x09\xa4\xc0\x13\xc0\x8c\xb4\x12\xea\x6f\x1d\x1b\xbd\x8d\x9c\xf1\xb9\x9d\x83\x92\xb4\xb4\xc1\x20\x96\xfc\xad\x9f\xe3\x75\x05\x20\x18\x44\xbc\xf6\xed\x97\xab\x38\x04\xa4\xfa\x95\x86\x5d\x25\xf6\x55\x56\x56\xf5\x34\x91\x07\xdd\x79\x66\xe5\xd9\xea\x24\x0c\xad\x30\xcb\xda\xfc\xdc\x64\x92\xaf\xc1\x19\xd8\x9d\x7d\xfe\xe6\x58\x67\x4f\x6c\xb3\x1f\x96\xb9\x83\xef\xa4\x4f\x36\xd9\x87\xb3\xa4\x90\x30\x61\xf7\x3d\x9d\xd3\x63\x5e\x5b\x62\x58\x0a\x5c\xb3\x09\xb3\x1d\xfb\x0b\x09\x05\xf0\xb4\x2a\x8a\x8a\x59\xe1\xbc\x09\x9b\x67\x19\xcc\x63\x05\xee\x7e\x49\xd9\xf5\x3a\x61\x3f\xd2\x31\x12\xe9\x58\xeb\xf1\x99\xe8\x98\xc3\xdc\xe7\x43\xc4\x30\xf2\xbc\x7b\xe8\xfb\x69\x10\xc7\x8e\x58\xbc\x33\x96\xd5\x09\x5d\x47\x38\x8b\x5a\xaa\x1e\x54\xd1\x45\x2d\x6c\xe4\x1a\x99\xb1\xa9\x01\xab\xad\x28\x64\x85\x26\x92\x53\x4e\xa7\x36\xab\x5b\x0b\x6f\xa7\x35\x5a\x96\x41\x62\xc9\xd2\x86\x70\x6f\x5f\xc3\x38\x31\x88\x9d\x09\x9a\xe2\x45\x29\xb2\x0c\xa4\x22\x19\xbb\x05\x72\x0a\x45\x26\x16\x2e\x49\x9b\xa7\xe4\x5a\x53\x6d\x50\xfa\x1a\x74\x3b\x9f\x6f\x27\x74\xc5\x15\x5f\x96\x59\x76\x29\x32\x96\xb4\xb2\xa8\x34\xb7\xed\x1c\xf7\xab\x28\xb3\x8c\x14\x38\xe5\x88\x7c\xe4\x48\x31\x8e\xb3\x3b\xba\x50\x03\x72\x01\x73\x90\x03\x72\x3e\xb9\x10\xfa\xd2\x8a\xde\xcd\x68\x3b\x7b\x23\x61\x13\xf2\x0e\x6b\xda\x68\xa2\xe9\x14\x15\x27\xef\x03\x1c\x18\xf8\x87\x13\x58\xe2\x70\xc7\xd4\x5a\x4d\xa5\x33\xe2\x7c\x81\x33\x19\x42\x65\xff\xfe\xec\xdb\x94\xb1\x09\x24\x8b\x24\xeb\x7e\xae\x8e\x13\x8c\x5e\xa8\xf3\xcc\x03\xfc\x76\x65\xda\x5d\x6a\x27\xaa\x80\x8c\x13\x5b\x3f\xdd\x16\x86\xaf\x51\xbd\x5a\x91\x55\x75\x55\xaf\x1a\x62\x6b\xce\xd9\x95\x67\x16\x42\xe9\x6b\xa3\x9e\xf7\x52\x65\x7d\xff\xd2\x4f\x47\xb0\x96\x74\x96\x41\x4a\x58\x9e\x43\x6a\x54\xf8\x6c\x41\xe8\x44\x63\x8a\x6d\xc3\x3c\x90\x48\xb0\x58\xeb\x6a\x97\xcc\x28\x4f\x33\x90\x64\x42\x59\xe6\x8c\x01\x8d\xfb\x35\xc8\x9c\x71\xb4\x09\x58\x77\x2c\xda\x17\xcc\x5f\x49\x22\xa4\xaf\x7b\xcf\xb4\xf2\x97\xea\x83\x89\x4c\x24\x40\x80\x65\xbf\x32\x19\x67\x22\xb9\x55\xa4\xe4\x9a\x65\x76\x31\x42\xdc\x92\x44\xe4\x45\x86\x47\xa7\xc3\xc9\xaa\xfe\x39\xac\x50\x69\x68\x66\x57\x47\x5f\xd4\x97\xf0\x87\xb6\xdc\xbc\x07\x29\xac\x0f\x19\x0c\xee\x21\xe9\x2d\xbd\xdf\xd0\x52\xb3\xcb\xe8\xef\x17\xbc\x12\xc5\x26\xc2\x30\x30\xb3\xd7\x75\x62\x76\x45\x2e\x47\xe4\xec\x1e\x92\xa0\x0a\x05\xf6\x87\x40\x42\x80\x59\xa1\xf4\x16\x5e\x51\xd9\xbb\x0e\xc9\x77\xe1\x68\x80\xfd\xc4\xce\xe9\xab\x66\xb9\x57\x90\x8c\x71\x24\x8b\x2e\x21\x8f\x30\xae\x8c\x40\xd0\x38\x43\xf6\xc4\x3a\x41\x97\xa4\x4c\x62\xcd\x84\x45\x15\x7c\xed\xe7\xc2\x72\x04\x42\x68\x72\xb0\x7f\xb4\x7f\xb8\x62\xb3\xdc\x37\x82\x4b\x06\x96\x44\x5b\x03\x66\x52\x2f\x4a\xb1\xbc\xc8\x16\xb8\x8e\xfd\x74\x40\x98\xf6\xd1\xd9\xb2\xe4\x7e\x55\x2e\x4b\x70\x40\x94\x20\x5a\x52\x5f\x8a\xc5\xfe\x6a\x6e\xd2\xb2\x74\xcc\xe1\x60\xff\xd7\xfd\x01\x01\x9d\x1c\x92\x3b\xc1\xf7\x35\x2e\x7f\x44\x6e\x84\x11\xbf\xeb\x89\x16\xa2\x24\x1c\x6c\x32\x00\xdc\x17\x19\x4b\x98\xce\x16\x48\xe8\x88\x28\xb5\xcd\x38\xa6\xda\x67\x27\x9e\xdd\x33\xed\x62\xdc\x0c\xda\xbe\x41\x68\x5a\x62\x47\xa8\x91\x8e\xe6\x70\x34\x03\x9a\xe9\x99\x0d\x2c\xe1\x82\x0f\xff\x09\x52\x60\xde\x22\x77\x57\x5e\x5d\x89\xc0\x5e\xb4\x0d\x43\x7b\xbf\x85\xfe\x9a\x0a\xfd\xe5\xe6\xe6\xf2\x5b\xd0\x4b\x24\xc3\xbc\xc5\x87\xfb\xa0\x05\x01\xe4\x44\xc8\xfc\x19\xd0\x8e\x7e\x1c\x9c\x43\x52\x08\xf9\x1c\x48\xd8\x4c\xa8\x4e\x7b\x49\x56\xf6\x53\x28\x8d\x4a\x94\x13\xe2\x38\x24\x66\x07\x9b\x71\x27\xbe\xef\xce\xf9\xe5\x88\xfc\x55\x94\xe6\x6b\xc6\x74\x9c\x2d\xaa\xba\x0d\x0a\x34\xd9\x33\x53\xed\x19\xf2\x64\xb0\xe1\x2f\x40\x53\xa3\xd9\x18\xea\x01\xf4\x79\xf4\xd7\x22\xee\x3c\xb8\xb5\xf5\xcb\x07\x4a\xa5\x45\x4e\x66\xee\xb3\x9b\xe9\x9a\xee\x64\x8c\xf0\xf4\xf8\x5c\x28\x09\x85\xa5\x70\xee\x99\x57\x47\xbf\x56\xe8\x86\x85\xbb\xfb\x7d\x8c\x35\xaf\x92\x10\x6c\xae\xc1\x94\x4d\x26\xe2\x16\x58\x06\xd5\xa0\x9d\x7b\x25\x1c\xcf\xb8\x50\x69\xeb\xe4\xcf\xe5\x89\xd0\x11\xd8\x3d\x3e\xac\xd7\x32\xa5\xfd\xc4\x1a\x90\x75\x86\x59\x87\x33\xd6\x68\xd3\x13\x10\x3f\x4d\x9d\xcc\xcf\x01\x80\x7e\x36\x9f\xf4\x09\x81\xa2\x87\x70\xf0\xd5\x60\x70\x2d\x8c\xfa\x8a\xe9\x9a\x96\xb8\x22\x99\x50\x20\xe7\x6d\x13\xc0\xeb\xd1\xdf\xa7\x8b\xf6\x86\x02\x3f\xd6\xe4\x56\x4b\xc2\xcb\x7c\x0c\xb2\xce\x66\x91\x7a\x15\x20\x41\x34\xc3\x85\xbd\xdd\x9b\x80\x9b\xed\x1c\xcd\x93\x7f\xfa\xb7\x7f\xfb\xc3\xbf\x8d\xec\xf4\x55\x64\x03\x27\xe7\xc7\x17\xc7\xbf\x5c\xff\x70\x82\x09\xb5\x5d\xa1\xda\x53\xd8\x66\xdf\x41\x9b\xbd\x86\x6c\x7e\xd2\x80\x4d\x4c\x13\xe9\x4c\x45\x9a\xfe\x02\x9c\xd2\x60\x80\xd1\xdb\x8c\xc6\xe9\x64\xbf\xa0\xb4\x99\x91\x35\x9b\xf6\x57\x73\xd4\x9e\xc5\x19\xd3\x49\x71\x2d\x92\xdb\x1e\xf5\x9a\xfd\x9b\x93\x4b\x3b\x65\x58\x93\x93\x7b\x63\x08\xe3\x73\x91\xcd\x6d\x39\xdf\x9b\x93\x4b\x3c\x79\x23\xfc\x17\x1a\xa2\x50\xa3\x5e\x98\x67\x7d\x22\x83\x73\x4f\x19\xed\xdb\x5a\xd0\x28\x91\x40\x33\xa6\x34\x4b\xf0\xb9\xda\x4c\x6a\x66\xe8\xe2\x97\x8a\x9a\xd2\xba\xd1\xbb\xa6\xb4\xff\xd1\xbb\xed\x76\x56\x9a\xba\x06\x1e\x3e\x63\xbe\xe4\xf8\x91\xcd\xf8\x88\x7c\xe9\x37\xc1\x97\x0a\x09\xd7\x5a\x14\x3d\x79\x42\xec\x64\x1b\xfc\x20\x63\x98\x08\x09\xcb\x8e\x90\xc0\xb1\xe1\x1b\x0c\x73\xcc\xfe\xf3\x26\x28\xd1\x70\x5e\xd8\x90\x4b\x55\x26\x33\x6f\x4d\xe4\xa0\xd4\x11\xba\x3c\xca\xc2\xaa\x98\xe8\x44\x29\x25\x0c\xcc\xd7\x41\x8e\xab\x1b\xd4\x69\x0c\xe6\xf5\xc0\xed\x8f\xa0\x13\x6b\x66\xf5\xfe\x17\x67\x51\xf5\xcb\x5f\x76\x95\x24\x92\xaa\x19\x60\xfd\x10\xb8\x67\x75\x9f\x13\xaa\x04\xb7\xc6\x5e\xf7\x39\xc8\x68\x14\x29\xa8\x52\x75\x05\x67\xf7\x12\xfb\xd0\xa5\x48\xf7\xf7\x55\xe3\x81\xa9\xa4\x09\x90\x02\x24\x13\x29\xc1\x7c\xe2\x54\xdc\x71\x32\x86\x29\xe3\xca\xc3\xcf\x4c\xe4\x01\x6d\xd8\x8d\x2d\xb6\xeb\xab\xc5\x8d\xc8\x55\xa3\x08\x8a\x4b\x4f\x4a\x44\x7d\xa2\xdd\x2a\x96\x9d\x4c\x18\x11\x1a\xb4\x69\xae\x36\xc6\x87\xcd\xea\xc7\x17\xdd\x83\xb7\xc9\x80\xb6\xbe\xb6\x11\x3a\x58\x9c\x9f\x26\xb3\x6e\x8e\xdf\xe8\x9e\xda\x72\x44\xf7\xd4\x6e\x23\xba\xa7\xa2\x7b\x6a\xf3\x78\x76\xe6\xdd\xe8\x9e\x8a\x4a\xd7\xf2\x88\xee\xa9\xe8\x9e\xda\x30\x9e\x1d\xfd\x8a\xee\xa9\x2d\x46\x74\x4f\x6d\x39\xa2\x7b\x2a\xba\xa7\xa2\x7b\x2a\xba\xa7\x7e\x43\x66\x40\x3f\xa2\x7b\x6a\x65\x92\xe8\x9e\x0a\x80\x11\x35\xa5\x35\x23\xba\xa7\xd6\x8c\xe8\x9e\x0a\x46\xe4\x4b\x2d\xf8\x92\x77\xee\x5c\x1a\xbd\xac\x7b\xce\xda\x25\x3a\x0e\x58\xe2\x7c\x44\x61\x2f\xb8\xea\x55\x41\xfb\xb7\xa0\xe6\x87\x4f\xb5\x71\xde\xa0\xda\xc7\xb4\x36\x1f\x6a\x57\x77\x84\x4f\x22\x54\x47\x85\xb0\xff\x57\x3b\x23\x02\x2f\x84\xd5\x4e\xdb\xe7\xa4\x3d\x59\xb6\x55\x17\xd7\xc3\xb3\x76\x3b\x3c\x13\xd7\x4e\x0f\xae\x86\xe8\x66\x78\x75\x6e\x86\xd7\xd3\x43\xd7\x39\xf3\x6f\x66\x12\xd4\x4c\x64\xad\x11\xbd\x81\xe4\x1f\x18\x67\x79\x99\x1b\x9c\x53\x06\x9f\xd9\xbc\x8a\x1a\x50\x15\xba\x5a\x42\x6f\x2d\x85\xe6\x46\x96\x02\x16\x40\xa5\x2c\x33\xdb\x88\x69\x9d\x33\x8a\xa2\xba\x2a\x93\x04\x00\xdb\xab\x85\x5a\xcc\x1f\x46\xd5\x9b\xaa\x76\x1a\x6f\xbb\xd1\x9b\x6e\xbc\xdf\x96\x28\xc5\x59\xfe\xf0\xfb\x56\x73\x74\xf4\xf2\x7c\x7e\x0f\x4f\x0f\x64\xba\xbb\xbe\xd2\x49\x57\xe9\x83\x4b\x74\xd5\x51\x5e\x9a\x27\xa7\x37\x8f\x66\x0f\x1e\x9c\x67\xe4\xbd\x79\x36\x6c\xe1\xb9\x78\x6c\x9e\x61\xf5\xd5\x1e\x1c\x0c\x7d\x78\x68\xfa\xf3\xce\x7c\x82\x22\xa5\x9f\xc6\x2b\xd3\xa3\x36\xdc\x93\x37\xe6\x73\x78\x62\x7a\xf9\xea\xae\x1e\x98\xcf\xe7\x7d\xe9\xe7\x73\x3b\x5a\xb7\x5e\x85\xc7\xa5\x07\xab\x56\x9f\x16\xad\xde\xac\x59\x9f\xcc\xc3\xd2\xdd\xbb\xf2\x0c\x3c\x2b\x9d\x81\xcc\x38\xd3\x8c\x66\xa7\x90\xd1\xc5\x35\x24\x82\xa7\xad\x39\xcc\x52\xd5\xba\xea\xfc\x28\x3b\xad\xd3\xd1\x9a\xf1\xc7\x33\xea\x8a\xf3\x42\xea\x43\xaa\xbd\xf9\xcf\x09\x14\xd8\xd0\xc4\xae\xf2\x59\x1a\xf4\xc8\xb3\x51\x06\x6d\x30\x76\x9f\x9b\xf8\x17\x71\x47\xc4\x44\x03\x27\x07\x8c\xfb\x7d\x3c\x0c\xd4\xc0\x5a\x33\xaf\xd0\xda\x5c\x7d\xfb\xc6\xdf\xfc\xfa\x54\x6e\x34\x2e\x28\xf5\xe9\x2d\x20\xee\x45\x8f\x9b\x40\xdc\x8d\x93\x32\x6b\x9a\x41\xac\x69\xa4\x49\x6f\xde\xd6\xe5\x45\xdf\xe2\xbc\xd5\x69\xa3\x3c\x25\x2e\x71\xe3\xf5\x6d\x5a\x67\xbf\xf1\x6b\xf0\x19\x47\xdb\x0b\xe9\xdb\xf6\xf2\x44\xbe\xe1\x67\x28\x35\xbf\x50\x7f\x70\x94\x9a\x77\x18\x41\xfe\xd7\xb7\x92\x26\x70\xd9\xbb\xc0\xe1\x8f\x13\x49\x4b\xe9\xd2\xf6\x2a\xb9\xa3\x3a\x3c\x1c\x20\xb5\xa7\xa9\x4a\x8a\xc3\x6c\xb4\x49\x99\x65\x0b\x52\x16\x82\x37\x33\x0f\xad\xd3\x6a\x39\x61\xcd\xcc\xb6\xee\x2d\xb5\x94\x5a\x48\xe1\x18\xb0\x2c\x39\x37\xf4\xbc\x6e\x38\x84\x52\xa9\xb2\xb4\x3a\x4c\x8b\x53\x6c\x6a\x96\x6f\x98\x29\x66\xcc\xb1\x1c\xea\x96\x14\xf5\x84\xe6\xe9\x89\x90\x09\x1b\x67\x0b\x32\xa3\x59\xd5\x5d\x82\x92\x5b\x96\x65\x6e\x9a\x11\xb9\x06\x4d\xf4\x8c\xb9\xc6\xe0\x24\x13\x7c\x8a\x8b\xa3\xdc\x77\x35\x83\xc4\x3c\x9b\x64\x40\x79\x59\xd8\xf7\x19\xb6\xbe\x10\xa5\xf4\xef\x73\x65\x2d\xab\x59\x98\x22\x9c\x65\x83\xa0\x77\xd2\x83\x1b\x5b\x37\xa8\x57\xe0\x73\x0a\xef\x98\x82\x41\x38\xa7\xaf\xcc\xab\x82\xce\x19\x85\x14\x73\x96\xda\xee\x17\x1e\x6c\xd8\xa5\xd5\x76\xc7\xa8\xce\x33\x17\x7c\xc8\x61\x4a\x51\xea\x71\xa7\xc8\xee\x99\x9d\xc7\xba\xe2\x78\x8a\xfd\x32\x8c\xba\x20\x8a\x46\x2a\xeb\x9c\xd9\x4e\x9f\x01\xe4\xc8\x01\x17\x44\x20\x7b\x2d\x39\xd3\xb6\x7b\xf4\xac\xd4\x24\x15\x77\xfc\x70\x64\xab\x12\x33\x45\x28\x19\x83\xf6\x9d\x6c\x7d\x67\x45\x26\x41\x11\xe0\x74\x9c\x99\x3d\xc7\x80\x87\x9b\xb5\x00\x22\x13\xa0\xba\x94\x40\xa6\x54\xc3\x5a\xa1\xc9\x7e\xef\xc3\xe0\x65\xaa\xea\xf2\x5e\x72\x05\xad\xfb\x5b\xf7\x2c\x69\xfd\xe9\x8f\xed\x68\x04\xcb\x41\x94\xfa\xb3\xa8\x92\x77\x33\x96\xcc\x42\xc9\x98\xe5\xa0\x88\x28\x97\x74\xec\xb7\xee\xb1\xf5\x3b\x14\xf5\xc9\x75\xa3\xad\x95\x78\x8d\x29\x6d\x39\xe5\xb8\x6e\x2b\x4b\xcd\x01\x3c\xbd\xb8\xfe\xe5\xfd\xf1\x7f\x9d\xbd\x1f\x91\x33\x9a\xcc\xc2\x7c\x74\x4e\x28\x12\x0d\x24\x14\x33\x3a\x07\x42\x49\xc9\xd9\x3f\x4a\x5b\x9d\x9c\x1c\x54\xcf\x1e\xf6\x5a\x0b\xb9\x25\xf7\xc5\xd6\xd7\xbd\xf5\x5a\xb2\x8d\xb4\x6d\x80\x83\x50\x80\xdd\x11\x96\xc5\xa7\x33\x73\xc9\x2a\x1a\x28\x6a\xcd\xc0\x10\x23\x36\x77\x64\xd8\x15\x97\xa6\x69\x15\x72\x61\xf0\xdc\xa0\x85\x61\x55\x74\x8c\xa1\x12\x33\x20\x1c\xb4\x41\xeb\xca\x60\x25\xb8\x6a\x14\x06\x28\x15\xa8\x01\x19\x97\x18\xdc\x51\x48\x96\x53\xc9\xb2\x45\x38\x99\xe1\x55\x17\xc2\xab\x43\x8b\xe5\x25\x9d\x7e\x3c\xbb\x26\x17\x1f\x6f\x48\x21\x6d\xc9\x00\x8c\xce\xc0\xeb\xf8\x59\x63\x30\x4f\xb8\x1e\x9d\x23\x72\xcc\x17\xf6\xa2\x3d\xe0\x4c\x11\xa3\x0b\x01\xb2\x60\x27\x43\xfa\xa2\xf0\x7b\x6f\x46\xf8\xbf\x3d\xf3\x95\xd2\x08\x99\x55\xd0\x49\xb2\x12\x3c\x66\xc5\x50\x36\xce\x02\x68\xba\x6f\x7f\x55\xdd\x96\xaa\xb0\xb9\x4b\x03\xc4\xa0\xdb\x12\xad\xb6\x1a\xc1\x6b\xbb\x6f\x31\x3e\xcd\x42\xac\x6a\x47\xf6\xbb\xea\x96\x5d\x35\xcb\x61\xfd\x05\x97\x6d\x15\xcc\x5e\xba\x3e\xd5\x6b\xe8\xa9\x57\x4a\xcd\xfd\xbc\x3a\xe5\x28\x82\x08\xdb\x5f\x9e\x5f\xfa\x13\xe0\xa4\x9b\x7c\xa9\x67\x22\x3e\x6c\x9d\x1a\x03\xf2\x86\xfc\x99\xdc\x93\x3f\xa3\x7a\xf5\xa7\xae\x9d\x65\xba\x2a\x3e\xdd\xcd\x3b\x56\xab\x3f\xbf\xec\x09\xe2\x3f\x1a\xea\x64\x66\x34\x50\xd5\x82\x8c\x99\x13\xe7\xe1\x5e\x83\x34\x74\xd4\xed\xc4\x93\xf6\xe4\x31\x0b\xfc\x8c\x68\x66\x7d\x17\xe7\x93\xb0\x25\x84\xde\x11\xd1\xcc\xe3\x7f\x11\x4a\x5f\x38\x2a\xd4\x6c\x30\x51\xcf\x96\x53\x9d\xcc\x9a\x64\xcc\x08\x6a\x4a\xd7\x07\x4c\x91\x54\xa0\x25\xcd\xc6\x01\xce\x58\x87\x48\x8c\xe7\x83\xc6\xdd\x9c\xf3\x8d\xfd\x7c\x68\xa7\x96\x0c\x28\xa8\xf9\x38\xc1\x2a\x28\x2f\x53\x88\xd4\xc9\x64\x66\x59\x69\xc0\x33\x1e\x10\xca\x9c\xad\xa6\x32\x59\x23\x2e\x99\xf3\x94\x50\x6e\x03\xb8\x27\x20\xa5\x0d\xdd\x1c\x2f\xd0\x83\xcc\x12\xe8\xbc\x79\x9d\x4e\x52\x21\x85\x16\x89\xe8\xd0\x36\xa8\xe9\x30\x77\xd3\x21\x10\xac\xf1\xd7\xdb\xdc\xbf\x3f\xbd\x1c\x90\x9b\x93\x4b\xec\xa6\x72\x7d\x72\x73\xd9\xd4\x54\xf6\x6e\x4e\x2e\xf7\x9e\x14\x14\xc4\x4b\x56\xef\xcc\x32\x5b\x4c\xd2\x30\x3c\x19\xb1\x6d\x98\xd3\x62\x78\x0b\x8b\x96\x3c\xb5\x0f\xbe\x3e\xac\x76\xb8\x97\x0f\xb2\x60\xce\x69\xb1\xf3\x6c\x12\x68\xca\x3e\x53\x16\x85\x3b\x59\xf5\x3b\xd7\xa7\x53\xe4\x62\x0e\xa9\x15\x87\xfd\x13\xc0\xd3\x42\x30\x23\x2f\xc6\x1c\x8b\xdd\x9f\x8e\x39\x16\x0f\x8d\x98\x63\x11\x73\x2c\x62\x8e\xc5\xc3\x23\xe6\x58\xb8\xf1\xf4\x66\x50\x12\x73\x2c\x5a\x8e\xd7\xe5\xe7\x8f\x39\x16\x3b\x8d\x98\x63\xb1\x3a\x62\x8e\xc5\x86\x11\x73\x2c\x36\x8c\x98\x63\x11\x73\x2c\x62\x8e\x45\x8c\x16\x7b\x74\xae\xe7\x19\x2d\x46\x62\x8e\x85\x1b\x31\xc7\xe2\x55\xc4\xc4\x90\x98\x63\xb1\xd5\x88\x39\x16\x31\xc7\xa2\xcd\x88\x39\x16\x38\xa2\xed\x25\xe6\x58\xf8\x11\x73\x2c\xec\xf8\xed\x48\xcd\x31\xc7\x22\xe6\x58\xc4\x1c\x8b\x98\x63\xf1\xe0\x2a\x62\x8e\xc5\x6b\xd0\x27\x7d\x0f\xbc\xee\x39\x03\xfb\x27\x22\x2f\x4a\x0d\xe4\xca\x4f\x59\x49\x91\x96\x30\x30\x15\x4a\x04\xdd\x43\x78\x12\xc1\x27\x6c\xea\x28\xfb\x91\x6d\x30\x37\xac\xbe\x67\x18\x34\x75\x7b\x81\xf1\x3b\x19\xcb\x59\xbb\x44\x0e\xb2\xb2\x31\xef\x71\xae\xc0\xc9\x63\x4e\x52\x4e\xef\xf1\x88\xd0\x5c\x94\xb6\x29\x5f\xe2\xf6\xaf\x02\xa1\x75\x85\x3d\xbb\x9d\x21\xfd\xa8\x38\x75\x46\xca\x65\x0f\xda\x46\x41\xb5\x06\xc9\xdf\x91\xff\x3e\xf8\xdb\x57\xbf\x0e\x0f\xbf\x3e\x38\xf8\xe9\xcd\xf0\x3f\x7e\xfe\xea\xe0\x6f\x23\xfc\xc7\xbf\x1e\x7e\x7d\xf8\xab\xff\xe3\xab\xc3\xc3\x83\x83\x9f\xbe\xfb\xf0\xed\xcd\xe5\xd9\xcf\xec\xf0\xd7\x9f\x78\x99\xdf\xda\xbf\x7e\x3d\xf8\x09\xce\x7e\xde\x72\x92\xc3\xc3\xaf\xbf\x6c\xbd\xe4\xce\x22\x71\x7f\x02\x71\x4f\xe2\xf0\x27\x11\x86\x9d\x77\xb8\xa7\xb3\x78\xe5\x66\x5b\x3e\x8d\x8e\x61\x3d\x74\x1a\x3d\x35\x45\x31\xaf\x9a\x87\x29\x22\x72\xa6\x8d\x70\x68\xe4\x41\x1a\xc6\x85\x31\xdd\x50\x4a\x1d\x1d\xc0\x80\x4a\xaa\x6d\x8f\xd0\x2a\xa6\x2a\x88\xd3\x16\x5e\xf2\x73\xbd\x57\x2b\x7b\x05\x9e\xe7\x61\x0a\x13\xc6\xc1\xf9\xc1\x22\x6d\x78\x7c\x44\xda\xf0\x1a\x69\x83\x82\xa4\x94\x4c\x2f\x4e\x04\xd7\x70\xdf\xca\xc2\xd2\x24\x0d\xd7\xcd\x09\x89\x3d\x67\x2e\x8b\xd2\x5d\x23\xa2\xb0\x01\x94\x4b\xe9\xac\x55\x08\xae\x2c\x39\x2a\x98\x36\x4b\x06\xb4\xd5\xfe\x50\xef\xc1\x98\xc8\xe5\x97\x78\x7d\xce\xaa\x99\xff\x28\xd9\x9c\x66\x46\xdb\xad\x9f\xb8\x44\x0d\x26\x7c\x68\xdb\x33\xaf\xa9\xba\xad\x0f\x3c\x0c\x8d\x0c\x5d\xad\xf9\xc8\x7f\x12\xfe\x04\xf7\xfa\x25\x4a\x69\x28\x20\x5d\x4a\x36\x67\x19\x4c\xe1\x4c\x25\x34\x43\xba\xd6\x0f\xaf\x38\xde\x30\x3b\x6e\xbc\x14\x99\x22\x77\x33\xc0\xee\xca\xd4\x9b\x00\x30\xc3\x65\x4a\x19\x27\xb9\xd9\xa2\xc2\x3f\xac\xac\x2d\xc1\x90\xff\x82\x4a\xb3\xc1\x95\xcd\x00\x55\xe4\xb1\x10\x99\x0b\x1d\xce\x16\xf5\xfc\x2e\xf6\x9e\x8b\x5f\x38\xdc\xfd\x62\x66\x53\x64\x92\xd1\x69\x65\x2a\x50\xa0\x57\xac\x7d\xf5\xd4\x1b\x3f\x00\xe3\x72\x4b\x20\x34\xbb\xa3\x0b\x55\x1b\x4e\xc2\x3e\xe0\xef\xc8\xdb\x43\x44\x67\xaa\x48\x35\x47\x4a\x7e\x7f\x88\xbe\xc4\x93\xe3\xcb\x5f\xae\xff\x7a\xfd\xcb\xf1\xe9\x87\xf3\x8b\x6e\x9c\xc2\x7c\x3b\x50\xde\x6a\x8e\x84\x16\x74\xcc\x32\xd6\x85\x41\xac\x44\x9b\x84\x93\x22\x0b\x4e\xd3\xa3\x54\x8a\xc2\xc2\xc9\xdb\xa8\x6a\x4e\xd9\xd4\x82\xc3\xcc\x64\xdc\x9e\x49\x73\xc2\xa9\xa4\x5c\xd7\xc6\x9a\x1a\xe4\xb2\xe4\x46\xb1\x7e\xe1\x81\xf9\x34\xed\x2f\x28\xff\x38\x4d\x21\x6d\x40\xef\xd5\x05\x01\x9e\xf8\x8f\x5b\xd4\x39\xda\xe4\xf2\xe3\xf5\xf9\xff\x5e\x42\xc3\x45\xd1\x2d\xe6\xa9\x9f\xbc\x30\x29\x8a\xde\x76\xf7\xca\xe5\x1d\xc5\xfd\x7d\x16\xfb\x5b\xf1\xaa\x7e\x3c\xed\x57\x25\x6f\x96\xf1\xa8\xe7\x27\xb9\x48\x61\x44\x2e\x2b\x2b\x7d\xf3\x6a\x90\xde\x4b\x25\x10\x73\x0b\xd7\x8c\x66\xd9\x22\x14\x90\xb4\xb0\xc9\x34\x8d\xcc\xe4\x90\x0e\x4f\x68\xa6\x3a\x12\xd3\x2e\x9c\xc9\x30\xe1\x0f\x46\x99\xec\x05\x9a\xd5\x6c\x24\x05\x2e\xb4\x93\x4a\xcd\x2a\x31\x59\x5b\x8a\x84\x58\xcd\x35\x08\x8b\x6a\x70\x17\x65\x0d\xfd\x9e\x31\x31\xe5\x61\x75\x59\xcd\x6c\xad\xbc\xa5\x82\x65\xe9\xd6\x31\xa6\x5a\x97\x35\xb3\x4b\xa0\x29\xe6\xa4\x15\x54\xcf\x6c\x54\x43\x4e\xd5\x2d\xa4\xf6\x07\x27\xd7\x54\x66\x7e\x33\x63\xf5\xaa\x1b\xb3\x6e\x6f\xd3\x47\x79\xc6\xc6\x5a\xa0\x2f\xa0\x5d\xd1\x0d\xd2\xc7\x11\x30\xdf\xf4\x91\x67\x8b\x2b\x21\xf4\x37\x55\x2e\x56\x2f\x1b\xf8\xa3\x93\x14\x9b\x66\x58\x14\xa5\x30\x08\x21\x1d\x22\x30\x11\xa5\xc3\x34\xb0\xd3\x7a\xc3\x9e\x18\xa1\x65\xc9\x8f\xd5\xb7\x52\x94\xad\x39\xc0\x8a\xa0\xf5\xed\xf9\x29\x9e\xe3\xd2\x79\xd9\xb8\x96\x0b\xcc\x3a\x5d\x2d\x18\x54\xc9\xb4\xdf\x3b\x3f\x61\x88\x91\xb5\x4b\x87\x7c\xa0\x0b\x42\x33\x25\xbc\x70\xcc\xf8\x5a\x05\xca\x69\x67\xe6\xf2\x58\xe8\xd9\x8a\x5a\x66\xd0\x79\xf5\xb9\x41\xe0\x74\xab\x2b\x18\x31\xbe\xf2\xb8\xa6\xb7\xa0\x48\x21\x21\x81\x14\x78\xd2\x71\xd7\x9e\xda\xd5\x84\x3b\x7f\x21\xb8\x39\x16\xbd\xec\xfd\x79\xe5\x63\x44\x43\x58\x73\xa7\xd1\x5b\xe9\xf4\x0e\x8a\x3e\x4b\x3c\x14\xa5\x02\x69\x1d\xac\xb2\x04\xbb\x11\xdf\x95\x63\xc8\x40\x5b\x65\x08\xeb\x4e\x50\x6d\x15\x69\x96\xd3\x29\x10\xaa\x2b\x44\xd1\x82\x00\x57\x86\xdc\x58\xd3\x9b\x26\xa9\x80\x3a\x81\x92\x2a\xf2\xfd\xf9\x29\x79\x43\x0e\xcc\xbb\x0e\x71\xfb\x27\x94\x65\xe8\xce\xd4\x54\x2e\xaf\x91\x4d\xfc\x14\xb8\x24\xc4\x3d\x22\xa4\x3d\xa2\x03\xc2\x05\x51\x65\x32\xf3\x6b\x32\x1a\x97\x57\xd8\x5c\x3c\x1f\x1a\xf5\x5f\x21\xaa\x76\x26\x30\xdf\x2b\x90\xbd\xd1\x97\xef\x5b\xd0\x97\x50\x84\x30\x38\xd7\x84\x9e\x45\xac\x1c\x34\x4d\xa9\xa6\x8e\xee\xd4\x59\xd7\xaf\x71\x4b\x9f\x9a\xfa\x28\x78\xcf\x78\x79\x6f\x23\x56\xfa\x53\xf2\xaf\xcf\x70\x5a\x92\x78\xa0\xe1\xa6\xd1\xa2\xc8\x98\xcd\x77\x5e\x8a\xa0\x3a\x6f\x6c\xf5\x60\x83\x88\x84\xc7\x9c\x66\x99\x30\xe4\xcd\x70\x76\xca\x53\x91\xaf\xbc\xcc\x08\x50\xd0\x28\x74\x37\x22\xaf\x12\x79\x9e\xdc\x1c\x91\xc1\x1c\x3a\xd4\x74\x59\xae\xcb\x67\x66\x33\xb2\x98\xdf\x50\x9c\x9e\x64\x74\x0c\x99\xe5\x2c\x16\x81\xd4\x2a\x02\x3d\x75\x14\xa2\x14\x59\x7f\x39\x18\x57\x22\x03\x1b\xd6\xe3\x01\x61\xa6\x7f\x11\x70\xc0\x49\xfa\x82\x03\x2a\x32\x0d\x38\xa0\x4a\xf6\x12\xe0\x50\x76\x60\xb4\x64\x19\x0e\x86\x6b\x37\xe1\x80\xac\xf3\xb9\xc3\x41\x41\x92\x88\xbc\xb8\x94\xc2\xa8\x5c\xbd\xb1\x16\x37\x6d\xed\x2b\xb2\x3a\xf9\x9a\x20\x1c\x24\xe5\xcd\x9b\xa9\x0c\x02\xfa\xa8\xb6\x34\xde\x47\xf5\xfd\xaf\xb0\x43\xb2\x21\x3d\xcb\x7c\xc8\xcf\xd2\x70\x2b\x99\x27\xdd\x85\x17\x5e\x4e\xa0\x83\x95\xac\x17\x66\x22\x12\x9a\x61\xc9\xbd\x6e\x18\x43\x96\xb1\x66\x79\xe2\x20\x0a\x13\x5d\x4b\xf8\x9b\xf7\xfb\x63\xf5\x35\xfc\xc5\xd9\xbe\xb8\x48\x21\x70\x41\xda\xf0\xd1\x1b\x1b\xad\x87\xf7\xf9\x00\x50\xc3\xd5\xbd\x37\x30\x6d\x3c\xad\x85\xab\x00\xf3\xa1\x2a\xe4\x67\x16\x08\x3c\x65\x7c\x8a\x16\x9d\x01\x91\x90\xd9\xd0\x51\x77\x86\x6f\xad\xfa\xb5\x8f\x18\xed\x27\xf5\xe8\xec\x5f\x8d\x92\x10\x13\xdc\xcd\x8c\x46\x0e\x2f\xdf\x4c\x2c\xb5\x64\x8a\xec\xbd\xf7\x00\xe8\x50\xf9\xec\x39\x32\x88\x3d\xfb\x85\xd5\x6e\x5a\x1b\xdb\x2d\xe3\xa9\x8b\xb2\x6c\x00\xab\xaa\x51\x6b\xa5\x50\x8c\xdf\x65\x69\x48\x1a\xde\x91\xbf\x71\x52\x01\x8b\x0c\x5b\xa3\xc7\x95\x15\x58\xbd\x79\x69\xf8\xb0\xc9\xaf\x7a\xc9\xf2\x34\xdf\x73\xdc\x7b\xf3\xde\xa1\x51\x7b\x57\xef\xf3\xdf\xb2\xf7\x94\xfb\x7a\xc7\x78\x2a\xee\x54\xdf\x3a\xc4\x8f\x76\x5a\x2f\x50\x27\x06\xad\x35\xe3\x53\x15\xea\x11\x34\xcb\x1a\x66\xd8\x75\x8a\x84\xdf\xe1\xaa\x22\xf1\xaa\x00\xbf\x14\x1d\x1e\x95\x80\x1d\xc6\x34\x57\xf4\x44\x9a\x4f\xd1\x8c\x66\xd7\x45\xfb\xd2\x6c\x64\x19\x0d\xbe\xfd\x70\x7d\xdc\x9c\xda\xd0\xb3\x3b\xac\x78\x6d\x80\x6d\xae\x13\x9a\xe6\x4c\x29\x34\x03\xc1\x78\x26\xc4\x2d\x39\xf0\x61\x1b\x53\xa6\x67\xe5\x78\x94\x88\x3c\x88\xe0\x18\x2a\x36\x55\x47\x0e\x69\x87\x66\xf5\x87\x84\xf1\xac\x8a\x46\x41\x35\x92\x6b\xe5\xcd\x18\xf8\x92\xa4\x5a\x05\xee\xad\xab\xd7\xe9\xbc\xcc\xab\xcb\xb4\x15\x3a\x19\x64\x4f\x5f\x70\x66\x75\x7b\x2e\x3a\xd6\xce\x78\x64\x8b\xf0\xdb\x5d\x6a\x4a\x98\x46\xb5\x16\x8e\x56\x7a\x7b\x72\x20\x39\xe9\x20\x01\xd5\x5f\x55\x9e\xbf\xd4\x73\x92\x14\x6c\xf6\x04\x60\xd4\x09\xdd\x18\xdc\x84\x56\xd9\x7d\x4c\xc2\x73\x8f\xee\x87\x12\x2d\x7a\x7d\x6c\x9a\x87\xd1\x07\xb2\x62\x46\x87\x56\x49\x36\x24\x09\x69\x98\x97\x01\x66\x82\x0b\x17\x9c\x6e\xb8\xa0\xe0\x88\xd2\xa8\x2d\x58\x47\x10\xee\x89\xa3\xb1\xc1\x52\x4f\x6a\xff\x60\xe8\x43\xc2\x24\x1e\x5b\x04\xa0\x5e\xc3\x1d\xd3\x33\x5f\xe1\xbe\xe1\x70\xc2\x95\x48\x50\xe8\x3d\xe0\x04\xa4\x14\xd2\x05\xc2\x78\xab\x2d\xce\x84\xa4\x18\x23\x69\x0c\x92\x50\xf3\xd7\xbe\x0a\x5d\x94\x75\x09\x5c\x8c\x13\x33\xd8\x04\x93\x09\x24\x28\x29\x85\x00\xb6\x64\xf7\xa0\xae\xdc\xe7\xa2\xbb\x0d\x82\xb9\x12\xba\x39\xbb\x37\x6f\x09\x9f\x0a\x9d\xa1\xae\x62\xde\xfa\xcb\x87\x23\x42\xce\x79\x15\x39\x39\x30\xbb\x18\xde\xe9\x43\x7e\xb4\xf9\xc4\xb0\xfe\x32\x7e\x40\x68\x77\x32\xe2\x9d\x2c\x7b\xc0\xf8\x2e\xc6\x60\x12\x1a\x84\x7b\x25\x07\x68\x18\x76\x93\x9a\xad\xf7\x4c\xbc\x8b\xa1\xd8\xdc\xf2\xa9\x8c\xc5\x2f\x83\xd3\x93\xae\x74\xce\xa5\xc4\xf7\x54\x14\xf7\x3a\x98\x2d\x10\xbf\x2b\x77\xd3\xa5\x48\x6d\x49\x8c\x2a\xa5\x1f\x7b\x59\x60\x89\x0e\xf6\x4f\x2f\x60\xd5\x42\x1a\x17\x36\x2a\x3b\xac\x95\xe1\x6a\x82\xa6\xc4\xc8\xca\x99\xd7\xed\xf3\x22\x03\xcc\x9e\x0b\x66\xae\x13\x03\x83\x2a\xba\x83\x6a\x21\x75\x21\x5e\x57\xa1\x63\x40\xfe\x07\x0f\x65\x15\x00\xe8\x8b\x07\x5c\x56\x8f\x5b\x15\x8f\x29\x5f\x52\x1b\x33\xdb\xb4\xf0\xa6\x03\x92\xb2\xc9\x04\x7c\xa0\xa1\x51\xfd\xa8\xa4\xb9\x21\xf1\x8a\x38\x10\x8c\x61\xca\x6c\x24\x5b\x45\xd8\xf6\x55\x9d\x01\x3f\xb0\xc4\x90\x69\x92\xb3\xe9\xcc\x22\x0a\xa1\x98\x19\x49\xbc\x4b\x2d\x13\x34\x25\x88\xdb\x42\x92\x3b\x2a\x73\xc3\x37\x68\x32\x43\xff\x1c\xe5\x24\x2d\x25\x96\x89\xd4\x40\xd3\xc5\x50\x69\xaa\x8d\xa8\x0b\xd2\x69\x84\x7e\xfd\xb1\x94\xf0\x83\x23\x96\x12\xde\x3c\x62\x29\xe1\x58\x4a\x38\x96\x12\x7e\x78\xc4\x52\xc2\x6e\x3c\x7d\xb6\x2f\x89\xa5\x84\x5b\x8e\xd7\x55\xce\x26\x96\x12\xde\x69\xc4\x52\xc2\xab\x23\x96\x12\xde\x30\x62\x29\xe1\x0d\x23\x96\x12\x8e\xa5\x84\x63\x29\xe1\x58\x14\xed\xd1\xb9\x9e\x67\x51\x34\x12\x4b\x09\xbb\x11\x4b\x09\xbf\x8a\xd2\x4f\x24\x96\x12\xde\x6a\xc4\x52\xc2\xb1\x94\x70\x9b\x11\x4b\x09\xe3\x88\xb6\x97\x58\x4a\xd8\x8f\x58\x4a\xd8\x8e\xdf\x8e\xd4\x1c\x4b\x09\xc7\x52\xc2\xb1\x94\x70\x2c\x25\xfc\xe0\x2a\x62\x29\xe1\xd7\xa0\x4f\x2a\x9d\xb2\x56\x95\xcf\xb6\x29\x54\xe1\x22\x43\x82\xd4\xd6\x71\x39\x99\x80\x44\xca\x85\x6f\x5e\x89\x42\xa8\x0a\x5a\x55\xb4\xcc\xc5\x19\x60\x59\x3c\x09\x34\x75\x01\xef\x1b\x1e\x77\xb9\xb4\x58\xa1\xac\x8e\xd4\x3c\xfb\xf8\x4d\x3f\x55\x31\xba\xc5\x28\xe2\x9a\x3f\xf2\xa4\x7b\xac\x5a\x0d\xf0\x75\x09\x18\x0e\xee\x49\x26\x94\x8b\x30\x45\x60\x25\x33\xca\x39\x78\xe5\x91\x69\x34\xca\x8c\x01\x38\x11\x05\x70\x4b\xbf\x29\x51\x8c\x4f\x33\x20\x54\x6b\x9a\xcc\x46\xe6\x4d\xdc\x03\xbb\x8e\x06\x75\xbf\x28\x2d\x81\xe6\x3e\x2e\x36\xa7\xcc\x4e\x45\x68\x22\x85\x52\x24\x2f\x33\xcd\x8a\x6a\x32\xa2\x00\x03\xda\x2d\xa3\xaa\x80\x81\xe1\x25\x75\x08\xe9\xa0\x7e\x9b\x5b\x96\x08\x8b\x02\xa1\xea\x3a\xc0\x3a\xa8\x79\xa1\x17\x55\x1c\x1d\x90\x09\x93\x4a\x93\x24\x63\xc8\xad\xf1\x8d\x36\x77\x10\xe7\x1b\x78\x5e\xcd\xdd\x4a\x95\x5b\x2a\x4f\x51\x6c\x2d\xb4\xb2\x51\x69\xf5\x84\x6e\xaa\x94\x29\x27\xe6\xab\x01\xa1\xbe\xe4\x8d\x05\xb4\x5f\x29\x82\xda\x73\x16\x3b\xbb\xfb\x29\x98\x2e\xa8\x93\x57\x87\xed\xd5\x88\x8e\x21\xc6\x1e\x39\x07\x8d\x68\xea\x5a\xa0\xc0\x70\x97\x95\x63\x80\x1b\xc0\x61\x6e\x70\x00\x12\x30\xfc\x95\x6e\xc0\xfa\xcf\x8e\xf4\x01\x53\xfc\x00\x4a\xd1\x29\x5c\xb6\xf4\x5a\x6c\xd2\xc8\xd0\x71\x51\x6f\x0c\xa2\x42\x66\xd3\xd3\xaa\x5f\xea\x30\xa7\xa6\x18\x44\x72\xbb\xa6\x4a\xf8\xb9\x93\x4c\x6b\xc0\x4d\xc5\xe2\x48\xe8\xf8\x5c\x4e\x40\xdd\x5f\x0a\x96\xfa\xe0\x27\xa9\x1f\x36\x44\x9d\xa7\x36\x74\x69\x0c\x64\x2c\x19\x4c\xc8\x84\x61\x3c\x14\x46\x28\x0d\x6c\xb9\x0f\x6a\x2d\x0a\x4a\x19\x7d\x57\x70\x2f\xcb\xfa\x75\x8d\xc8\x8f\x6e\x61\x5a\x96\x3c\xa1\x41\x11\x40\x4c\xd1\x62\x13\x32\xc5\x08\x27\x27\x2d\xfe\xf1\xcd\x7f\xfc\x89\x8c\x17\x86\xa5\xa1\x64\xa5\x85\xa6\x59\xf5\x91\x19\xf0\xa9\x81\x95\x3d\x9e\xcd\x24\xa3\x0a\x02\x58\xc5\xdc\x2e\xfc\xed\xef\x6f\xc7\x4d\x1e\x7b\x94\xc2\xfc\x28\x80\xdf\x30\x13\xd3\x75\x75\xe1\xdb\x87\x4c\xb6\x54\x89\xd6\xa0\x99\xc8\x58\xb2\xe8\x8c\x68\xbe\xee\x0c\x99\x89\x3b\x2b\xeb\xaf\xc1\x9e\x3a\x06\xb2\x10\x45\x99\x59\x0b\xf6\x37\x55\x7a\x5e\xa9\x60\x35\x07\x67\xed\xb9\x40\x9b\xab\x9b\x62\xb9\x5e\xac\x0d\x6c\xf3\xaf\x14\x2e\xb6\xdb\x59\x05\xab\xf2\x33\xa8\x08\x7d\x43\xb3\x6c\x4c\x93\xdb\x1b\xf1\x5e\x4c\xd5\x47\x7e\x26\xa5\x90\xcd\xb5\x64\xd4\x50\xcb\x59\xc9\x6f\x6d\xe5\xea\x2a\x45\x58\x4c\x8d\x68\x55\x94\xda\x07\x12\xaf\xfb\x60\x9b\x70\xea\x89\xb0\x57\x83\xea\x59\xe0\x9e\xd5\xba\x8e\x4b\x95\xb0\x18\x19\xce\xaf\x42\x64\xfb\xfd\x9b\x3f\xfe\xbb\x45\x5d\x22\x24\xf9\xf7\x37\x18\xfc\xa8\x06\xf6\x10\x23\x6d\x33\x8c\x22\xa7\x59\x66\xd4\x86\x10\x29\x0d\xa0\xd7\x21\xe1\x67\xc7\x41\xdd\x1d\xdd\xb6\x16\xa5\x6e\x6e\xfe\x8a\x72\x14\xd3\x0a\xb2\xc9\xc0\x66\x05\x54\x6a\xcd\x3e\x32\x86\x7d\x47\x7d\x30\x35\xe3\x19\x08\x40\x73\x91\x95\x39\x9c\xc2\x9c\xf5\xd1\xbc\xa2\x31\x9b\x57\xf5\x33\xa6\x30\x01\x63\x9c\x89\xe4\x96\xa4\xee\x62\x10\xc6\xb2\x5c\x42\xb5\x3d\x14\xda\x06\xf4\x74\x08\xe4\xd9\xf8\xfd\x8d\x10\x9e\x9c\x16\x45\x15\xa3\x2f\xe9\x5d\x03\x18\x78\x26\x31\xdf\xb7\x63\x3d\x85\xce\x66\xe6\xae\x46\xe6\xa1\xfb\x22\x43\x37\x5b\x4f\xd1\x3a\x84\xa5\xbb\x8d\xba\x5e\x7d\x7b\xc3\x64\x03\x21\xea\x09\xfd\x69\x28\xf0\xdf\x36\x3c\x7b\x25\x2b\xa9\x4a\x6c\xa9\x10\xc3\x0a\x00\x06\x7d\x90\x24\xb7\x37\xb8\xf6\x60\xdd\xec\x16\xbf\xd4\x80\x0b\xaf\xac\xca\x39\xd5\x4e\x20\xf4\xe6\x6b\x4a\x0a\x90\x8a\x29\xc3\x97\x7f\xc0\x03\x75\x92\x51\x96\x07\x26\xc0\xa7\x01\x82\x3d\xdc\x58\xf9\xb2\x3b\xa5\xbc\x14\xa9\x9b\x10\x49\xa1\xad\xfa\xb9\x46\xac\x6d\x4a\xb5\x3d\x32\xd4\xa7\x26\x95\x3f\xd4\xd0\x6c\x52\x4a\xf3\x4b\x45\x2a\xed\x5d\xaf\x89\x40\xe2\xf7\xbd\x54\xfa\x58\x2d\xbe\x27\x32\x80\x84\xd1\x6d\x6e\x93\x12\x36\x94\x47\x7b\x50\x02\x91\xde\xe9\x81\x23\x62\x5d\xea\xe6\x4c\xb8\x47\xc9\xfe\xbb\xfd\x27\x25\x92\x16\x44\x52\x14\x74\xda\xa9\x87\xc1\x12\xa4\x96\xa7\x0d\x13\xbd\x8d\x1a\x84\xd7\xab\xb2\x43\x78\x17\xa4\x75\x21\x0a\x2c\x33\x62\xbd\xa3\x1e\xc0\x4e\x41\xb0\xf9\x90\x77\x74\x41\xa8\x14\x25\x4f\x9d\x7d\xa9\x32\xf0\x7d\x58\x7a\xf1\x85\xe0\xe0\x0d\xe7\xcb\x79\xe2\x68\xd1\x67\x9c\xbc\x1d\xbd\x7d\xf3\x5a\x38\x15\x7e\xe1\x12\xa7\xba\xa8\x38\x95\xa5\x4f\x4f\xfa\xad\xbe\xda\x71\x4f\xdf\xfb\xc1\x99\x58\xea\x62\xc6\xcc\x17\x6b\xc5\x9f\xee\x24\xd3\x10\xf4\x36\x3a\x40\xc5\xc5\xe8\x87\x41\x56\xf4\x61\x8f\x35\xbc\xfb\x49\x43\x57\xe5\xf8\x13\xd2\x2d\x47\xa0\xf0\xb8\xad\xb3\x70\xa9\x07\x48\x58\x08\xa8\xbd\x3d\x72\x60\xef\xdc\xb7\x99\x81\x87\x4f\x8a\x5a\x0e\x68\x67\xf7\x45\x87\x1a\x73\x0d\xc0\x9d\xdd\x17\x14\x6d\x70\x45\x8f\x10\xfc\x2f\x98\xd1\x39\x60\x46\x24\xcb\xa8\xcc\xd0\xe7\x78\x6d\xd7\x4e\xc6\xa5\x26\xc0\xe7\x4c\x0a\x8e\x01\x3e\x73\x2a\x19\x56\xa5\x90\x80\x99\xd5\x46\x17\xfd\xf2\xe0\x87\xe3\x2b\x0c\x68\x38\x74\x29\xe1\x6e\x95\xa5\xf2\xe5\x23\xc2\x95\x04\xd3\x3d\xba\x7d\x7e\x1d\x06\x86\x48\x73\xfd\xba\xcc\x7b\xf2\x52\x97\xb6\x20\xfe\x7d\x92\x95\x8a\xcd\x9f\x8a\x92\xb8\x54\xd5\x53\xd6\x6a\x9f\x97\xd2\x66\x6b\x40\xad\x64\xc0\xa2\x69\x1d\x59\xcb\x23\x15\x58\xf7\x55\x55\xb3\x2a\xf4\x81\x3b\xd3\x93\xcb\x65\xb7\xb1\x78\xbe\x64\xd9\x8a\x08\x81\x75\x1b\x9e\xd6\x08\x95\x72\x75\x82\x2b\xdc\x0d\xac\xcd\xe8\xe6\x46\x52\xe0\xe9\xc5\x75\x58\x04\xc0\xaa\x4b\x22\x1d\x91\xcb\xfa\xc7\xba\x52\x04\xd6\x2f\xaa\x94\x48\x90\xd3\xba\x26\xee\x14\x38\x48\x14\x12\xcc\x94\x8d\x76\x72\x64\x4c\x95\x75\xf2\x9c\x5e\x5c\x5b\x9b\xed\x6e\x30\x6b\x2d\x66\xb7\x97\x50\x0d\xc7\xb7\x39\x11\x2d\x84\xdb\x66\xb7\x9a\xca\x60\x65\x00\x83\x4a\xa9\x9d\x98\x9c\x5f\x12\x9a\xa6\x12\xdd\x3e\x4e\xf4\x09\x4a\xbd\x55\xbe\x05\xac\xca\x40\x15\x84\x6b\x0a\xc0\x8d\x24\xae\x06\x2c\x39\x2d\x8b\x8c\x59\x37\x42\xf8\x40\x5d\x4d\x02\xdb\xab\xec\x8e\xb4\x5d\xd4\xbc\xd6\x4a\x5e\x07\x2a\x24\xda\x56\x75\x7b\x60\xf7\x24\x28\x91\xcd\xeb\x82\x9a\x4b\xbb\xe6\x4e\x04\x9a\xc4\xab\x5d\xf3\x45\xdc\xb6\xda\x31\xe0\x5a\x9a\xa3\xb9\xbc\x5b\xd8\xbd\x37\x2b\xf1\x34\x55\x13\xb2\x39\xa0\x7f\xdc\xd5\xaf\x73\x65\x94\xea\x12\x9f\xd6\x37\x6c\xab\xac\x02\x95\x9e\xa2\xe1\xaa\x5a\x9e\x44\xf2\x54\x88\xb0\x6c\xec\x38\xbd\xb8\xb6\x94\xd0\x7e\x7c\xd5\x95\x6f\xdd\x2e\xd5\x54\xad\x35\x06\x3e\x59\x95\x8f\x2e\x9a\xc7\x52\x5b\x25\xd7\xa6\xb4\x53\x20\x4b\x07\xf1\xaf\x53\xe6\x5e\x87\xb7\x2b\xa0\x32\x99\xb5\x81\xff\x03\x84\xc0\x4e\x4a\x52\x61\x23\x01\x26\x42\xa2\x4a\x3c\x44\xf2\x9e\x09\x71\x5b\x16\xdb\x50\x74\x37\x8d\xed\x95\xb3\x15\x81\x68\x3c\xf1\x9b\xa2\xe9\x29\x57\x6d\xfc\xbd\x4d\xd9\x07\xb4\x95\x78\x70\xa2\x3a\x1b\x43\x2c\xeb\x4d\x27\x59\xa9\x34\xc8\x6f\x98\x54\x7a\xcf\x17\x5c\x45\x0c\xb6\x36\x91\xfd\xf0\x86\x1f\x99\x9e\xb9\xd2\x69\xfb\x83\xe6\x25\xf3\xb7\x9b\x78\xdf\xe8\xb4\xfb\x17\x82\xc3\xfe\x68\x59\xec\xaa\x48\x79\x45\xd6\x36\xf2\x14\xb7\x74\x05\x99\x8d\x17\xc5\x0b\x01\xae\xdc\xb8\xb2\x71\xe6\x0d\x9e\xfe\x29\xd0\x84\x62\x89\x26\xbc\x7b\x56\x97\x79\xb3\x05\x58\x6c\x9d\x3a\xe1\x04\xbd\x45\x08\xa2\xa0\x26\x8b\x16\x9b\x3f\xbb\x8d\x3c\xb7\x33\x06\xd8\xf2\x7f\xd7\x20\xe7\x2c\x81\xf7\x8c\xdf\xee\x88\x7e\xcd\xe8\x92\xb3\x95\xd9\x1a\x05\x79\xad\x8f\x96\x71\x1b\x7c\x67\x58\x0c\x1d\x8b\x52\xa3\xec\x86\x0e\xc7\x5a\x71\x64\xfc\x7f\xec\x5e\xa0\xbd\xbd\xb0\x15\xb3\xd6\xe9\x88\x6a\x60\x8d\x3e\x5e\x09\x54\x0b\xae\x29\xd6\xf6\x3b\x15\xc9\x2d\x48\x92\x99\x65\x8c\x48\x1d\xf8\xd2\xa8\x26\x27\x4b\xd8\x31\xea\xa2\xad\xa5\x03\x8a\x19\xe4\x20\x69\x56\x17\x55\xec\x00\xea\xf7\x8e\x70\x56\xb3\x86\x31\x29\xb6\xba\x90\x2b\x83\x66\xce\xe1\xd9\xba\xbb\x72\xba\xf0\x95\x26\x19\xc7\x70\x83\x7b\xa6\xd0\xac\x5f\x88\x34\xcc\x62\x2b\x15\xc8\x61\x95\x63\xe8\xf2\x78\x54\x15\x88\x93\xc2\xb8\x9c\x4e\x19\x9f\x3a\xea\x8c\x34\xbd\xae\x35\x56\x6b\x3a\x18\xe9\x9d\x48\xb0\x05\x1f\x51\x7a\xb0\xf1\x65\x2c\xbc\x3f\x17\xa9\xbd\x7d\xbc\xb0\xda\xa0\xdf\xd9\x3a\x40\xfa\x9c\x13\x21\x5d\x9d\x05\x9a\xa6\xb8\xf6\xd5\x2f\x74\x2d\xbd\xc3\xaf\x1a\x54\x71\x1c\x36\xb2\xbb\x7a\x2a\x00\x8b\x2a\xc7\xbe\x47\xf7\x63\x35\x36\x99\xb2\x05\xbe\x82\xf2\x9a\x5e\x35\x58\xae\xad\x79\xb6\xba\xfb\x3e\x3e\xba\xcd\x39\xdf\x9d\xbd\xb4\x62\x2d\x4d\x6e\xcd\xd7\x7c\x85\x0d\x13\x5f\xf2\x8e\x3a\xcc\xa2\xd8\x53\x54\x43\x5e\x08\x49\x25\xb3\xe4\x6e\x19\xcf\x0c\xbf\x58\x83\x60\x73\xdb\xab\x71\x0d\x8e\xad\xc5\x65\xa4\xb6\x5c\x54\x2d\xe4\x0d\x5f\x50\xc9\x0c\xd2\x12\xa3\xd4\xa7\x25\xc5\x56\xb0\x86\x5a\x38\xa3\xfa\xc2\x85\xff\x59\xa4\xab\x02\x0b\xab\x74\x84\x05\x06\xe3\x60\xb5\x3d\xf3\x0b\x62\xab\x0d\x41\xb4\xad\x34\xb1\x2f\x5f\x18\x8d\xb8\x01\x09\x13\x8a\x6d\xfe\xa8\x3f\x54\x70\x9f\x80\x21\x6b\x5a\xd5\x8b\x75\xf1\x29\x58\x4b\xd4\x63\xba\x83\x21\xcc\x59\x82\x6f\xd8\x78\x84\xdd\x17\x58\x60\x8f\x17\x75\x6b\xe3\x0d\x87\xe7\xc6\x7c\x5b\x95\x2c\x84\x4f\xf9\x14\x81\xad\x0e\xc5\x32\x04\x9b\x8a\x90\x7f\x0f\x11\x3c\x71\xd3\x07\xf9\x04\xdc\x1e\xa1\x2a\x33\xc0\x75\x21\xf4\xd1\x25\x0f\x1c\x12\x5b\x77\x76\x47\xf4\xed\xa0\x67\xb4\x77\x22\xb6\x72\xfe\x75\x51\x69\xa8\x9c\x76\x57\xff\xf6\x8f\xe5\xb4\xcc\x6d\x59\x60\xb1\x54\x99\xd5\xf5\xb3\xb4\xec\x14\x2d\x76\x86\x19\x9f\x7c\x38\x0d\x93\x33\xc2\xa8\x73\x9f\xda\x62\x84\xbc\x8e\x96\xdc\x65\x53\xae\x39\x68\xb5\x7d\xb8\xe6\x1a\x4e\x3f\x75\xb6\xca\xea\x6d\x1e\x2d\x19\x2f\x8c\x9c\x81\xd2\x51\x6d\xad\xe4\xc9\x8c\xf2\x29\x1a\xf8\x45\x69\xe6\xfb\xf2\x4b\x5c\x91\x84\xb4\x4c\x5c\x49\x79\x1f\xd9\xfd\xa5\xb7\x6b\xba\x4a\x47\xd8\x57\x4a\x25\xb4\xf0\x6b\x0e\x3f\xcb\x0a\x21\xef\x08\x1b\xc1\x88\xec\x7d\x19\x5c\xda\xb3\x6f\x2f\xa4\x30\xaf\x70\x41\xe1\xb8\xaa\x8c\x69\x3c\xde\x7b\xe1\xdd\x23\x72\x66\xde\x81\xbe\x9e\x0a\x80\x41\xdc\xf2\xb8\x06\xdf\x80\x48\x98\x52\x99\x66\x98\x4b\x38\xa9\xc4\x2d\x9b\x71\xe4\x00\x86\xa4\x17\x23\x05\xb9\xd0\xeb\xec\xae\x3b\xf5\xbb\xb7\x42\xda\x30\xa5\x9a\x0e\xb1\x0c\xbf\x25\x62\x47\xd6\x70\x30\x74\x85\x10\x87\xd4\xa1\x56\xd0\x11\xff\x0b\x97\x33\x36\xa4\xd5\x5d\x8c\x0f\xe9\x10\x4b\x12\xb6\x8f\x82\x7d\x82\x80\x89\x4e\x3a\x7c\x87\x7a\x98\xcb\x82\x77\x55\x46\x19\x61\x30\x22\x17\x42\xd7\x65\x73\xab\xd8\x0c\x57\xf2\x71\xdd\x79\x3e\xbb\xb8\xb9\xfa\xeb\xe5\xc7\xf3\x8b\x9b\x78\xac\xe3\xb1\x8e\xc7\xba\xc3\xb1\x06\x3e\xef\x7c\xa4\x2b\x05\x6f\x9d\xce\xbb\x54\x8a\x2f\x48\x19\x7f\x45\xd1\x67\x67\x7c\xfe\x03\x95\x75\x2f\x77\x94\x1f\xd7\xba\x89\x7d\xb3\x77\x24\x71\x27\x2f\x3e\xfc\xec\x09\x83\xc7\x7a\x0c\xca\xb9\x08\x2a\x1d\xac\xdb\xb5\xb0\x01\xd6\xc9\x2f\xe7\xa7\x67\x17\x37\xe7\xdf\x9c\x9f\x5d\x3d\x69\x34\x45\xc7\x52\x78\x4d\xa6\xdc\x92\x4b\x16\x12\xe6\x4c\x94\x2a\x5b\x54\x8d\xa6\xd6\x13\x81\xd5\x80\x3c\x9e\x12\xca\x17\xde\x9e\xb6\xfe\xb1\xc8\x6c\xfb\x65\xb6\xcd\xe0\x92\x0e\x85\x4b\xfa\x42\xdf\x6f\xa4\x68\xdd\x48\x7f\xd9\xb6\x6f\xed\x13\xde\xa6\xbf\x0e\x9f\xf6\x5d\x8d\x83\x06\xeb\x71\xc2\x63\x5d\x50\xc1\x08\xa3\x79\xa1\x3b\x94\x09\xef\xa5\xf8\x69\x3f\x75\x42\x6d\x20\xc6\x07\x5a\x7c\x07\x8b\x2b\xe8\x58\x1f\x65\xc9\x97\x92\x41\x62\x18\x1d\xb9\x85\x85\x75\xb1\x9e\xf8\x97\x75\xa9\xe3\xf2\x2c\x6b\xc7\xde\x42\x97\xba\xbe\x7d\x16\x7d\xbd\x85\x0e\x91\x99\x7e\xac\x94\x3f\x35\x5b\x88\x72\x9a\xd9\xd3\x6e\xbb\x47\xfa\x2d\xf8\xfa\x09\x8a\xdc\xee\x87\xec\xde\xd1\x59\xbd\x73\xf9\x08\x31\x37\x9c\x0b\xee\x8e\x5c\x54\xda\xd0\x28\xae\x43\x8b\xb5\xea\x08\x43\x6f\x8e\xbe\xc0\xff\xb8\xa2\x60\xc7\x69\xea\xa2\xa3\x4b\x05\x93\x32\xb3\xb6\x7a\x35\x22\xb4\x60\x3f\x80\x54\x68\x52\xbd\x65\x3c\x1d\x90\x92\xa5\x5f\x77\xa9\x2a\x65\x47\x8f\xbb\x20\xbc\x47\xaa\xdf\x9d\xb8\x76\x0e\xc7\x90\x77\x55\x44\x84\xd8\xd4\x47\xc4\x4d\x6f\x03\x76\x42\x46\x4f\xa0\xe9\xda\x89\x8a\xd8\x2d\xec\x97\xae\xee\xd7\x84\xd5\x3a\x73\xaa\x0a\x5c\xe9\x3b\x5f\x68\x4e\x55\xed\xa3\x46\x06\xc3\x06\xcd\x3f\x55\x41\x13\x18\x90\xbf\x57\x3f\x62\xc3\x65\xf5\xd3\xfe\xfe\x9f\xbf\x3b\xfb\xeb\x7f\xee\xef\xff\xfc\xf7\xf0\x2a\xb2\x42\xd4\x9a\x97\x6e\x41\x1b\x3c\x17\x29\x5c\xe0\x3b\xf0\x4f\x27\xae\x1d\x27\x89\x28\xb9\x76\x17\x30\x6d\x79\x34\x13\x4a\x9f\x5f\x56\x7f\x16\x22\x5d\xfe\x4b\x75\x2a\x95\xf6\x2c\x19\x03\x6e\x51\x87\xf4\x1b\x3b\xfa\x63\x0f\x35\x2d\xe9\xf9\xa8\xba\x59\x3d\x36\x62\xc9\x5d\xeb\x89\xf9\xc6\x83\x00\x5b\x5c\xfa\xfa\x08\x1c\x93\xca\x8d\x64\xda\xac\x9b\xb7\x37\x7f\xdb\xa9\x99\xaf\x1d\x3d\x92\xb6\x6a\x07\x7b\x06\x18\x42\xc4\xb7\x52\xc2\x83\x5c\x31\x58\xaf\xa5\xd4\xee\xe6\xe3\xcb\x73\x32\xb7\x10\x7e\x36\xc0\xf1\x4e\xb4\x6f\x3e\x29\x8d\xab\xbd\xa0\x4b\xc9\xab\xef\xac\xbf\xda\x5f\x77\x85\x04\x54\x55\xdb\x0b\x8c\x62\x73\x60\x7f\x1c\x25\x45\x39\x70\x37\x8c\x72\xc8\x85\x5c\x54\x7f\x56\x2e\xc2\xa1\xd2\x42\xd2\x29\x26\x9e\xd8\xc7\xed\x63\xd5\x5f\xf6\xc1\xc6\x0b\x56\x9f\xb6\xaa\x70\x52\x4a\x23\x34\x64\x8b\xba\xf4\xe7\xeb\xa3\x6d\x1e\xf4\xcf\x84\xb4\x55\x98\xd1\xb5\xef\xa3\x1d\x4d\x84\xac\x83\x04\x50\xe0\xac\xa0\x88\xfa\xa4\x4b\xac\x1d\x54\x62\x90\xb5\x06\xf0\xb9\xd1\x2c\x5b\x97\x06\xab\x47\x8f\xd4\x2c\x65\x73\xa6\x44\x87\xf4\x9a\x6a\xa2\xcd\x39\x03\xae\xb6\x87\x8d\x8c\xaa\xcc\x66\xf7\x05\x56\x43\xaa\xce\xeb\x12\xd9\x7f\xdb\xa5\xd3\xb7\x1d\x05\xd5\x1a\x24\x7f\x47\xfe\xfb\xe0\x6f\x5f\xfd\x3a\x3c\xfc\xfa\xe0\xe0\xa7\x37\xc3\xff\xf8\xf9\xab\x83\xbf\x8d\xf0\x1f\xff\x7a\xf8\xf5\xe1\xaf\xfe\x8f\xaf\x0e\x0f\x0f\x0e\x7e\xfa\xee\xc3\xb7\x37\x97\x67\x3f\xb3\xc3\x5f\x7f\xe2\x65\x7e\x6b\xff\xfa\xf5\xe0\x27\x38\xfb\x79\xcb\x49\x0e\x0f\xbf\xfe\xb2\xf3\xd2\x7b\x28\x4e\x6a\x47\x9f\x25\x4a\x9b\x33\xf6\x82\x7e\x9f\xb0\xc8\xbf\x1d\x1e\xbd\xfa\x3e\xff\x3e\x3c\xfa\x5d\xcd\x90\x2a\x76\xfd\x6c\x0e\xb8\x82\x44\x82\xfe\x1c\x96\x1c\xfb\xa6\x20\x50\x66\x5f\x91\x4a\xb5\x78\x6d\x7c\xee\xb7\x60\xdc\xf1\x62\xbb\xdd\xd7\x5a\x12\x9d\x48\x91\xfb\xb4\x77\x74\x6f\x60\x9b\x6b\x7f\xdf\x2d\x74\x6a\x96\x68\x47\x34\x06\x45\x63\xd0\x86\xf1\xa8\x31\xe8\xda\xe2\xe1\xb3\xb5\x04\x01\x9f\xb7\x75\x61\xac\xf5\xa0\x7b\x5d\x27\xac\x11\xb7\x9d\x43\x6d\xe4\x8f\xba\xaa\x3c\x71\x75\x24\x8d\x65\x68\xf9\x7a\x1f\x26\x76\xb1\x67\xdc\x1e\x7c\x9c\xa0\xce\x2b\x71\x5d\x0d\x6c\x09\x43\x98\x9b\x25\x54\x35\xb0\x1b\xd5\x2e\x31\xba\x14\x63\x5e\x7f\xb4\x21\xa8\xb7\x36\x2a\xd5\x28\x69\x8c\xd7\x75\x42\x2b\xe1\xb0\x2e\x2e\x4d\x95\x12\x89\x8d\xa6\xad\xb2\x1c\xb0\x74\x9d\x5b\x36\xae\x06\xfb\x4c\x07\xfd\xc8\x6d\xe1\xe9\xfa\x5b\xc7\x0b\xac\x87\xc9\xe7\xbe\xf8\x76\xea\x73\x66\x70\x25\xeb\xe7\x78\x5d\x01\x08\x06\x11\x9d\x13\x2c\x88\x43\x40\xaa\x5f\x69\xd8\x14\x43\x31\xc4\xa4\xb6\xb2\xb6\x6b\xf3\xd7\x99\x8b\x77\xe7\x99\x95\x67\xab\x93\x30\xb4\xc2\x2c\x6b\xf3\x73\x93\x49\xbe\x06\x67\x60\x77\xf6\xf9\x9b\x63\x9d\x3d\xb1\xcd\x7e\x58\xe6\x0e\xbe\x93\x3e\xd9\x64\x1f\xce\x92\x42\xc2\x84\xdd\xf7\x74\x4e\x8f\x79\x6d\x89\x61\x29\x70\xcd\x26\xcc\xe6\xd0\x14\x12\x0a\xe0\x36\x79\x81\x26\x33\xa4\xfd\x8e\x53\xd6\xce\xe9\xe7\x18\xcc\x63\x05\xee\x7e\x49\xd9\xf5\x3a\x61\x3f\xd2\x31\x12\xe9\x58\xeb\xf1\x99\xe8\x98\xc3\xdc\xe7\x43\xc4\x30\xf2\xbc\x7b\xe8\xfb\x69\x10\xc7\x8e\x58\xbc\x33\x96\xd5\x79\x4e\x47\x38\x4b\x2b\xeb\x73\x27\x64\xc0\xd7\x5e\x96\x59\xd6\x53\xf5\xed\xfd\x73\x84\x46\x51\x66\x99\x4b\x3a\x1e\x91\x8f\x1c\xcf\xe3\x31\x76\x79\x18\x90\x0b\x98\x83\x1c\x90\xf3\xc9\x85\xd0\x97\x56\xb0\x6d\xc6\xb2\xd9\x1b\x09\x9b\x90\x77\x46\x65\x52\x9a\x68\x5b\x69\x3f\xa8\x0b\x24\x64\x63\x82\xba\xe4\x58\x87\x18\xf4\xcd\xdb\xf2\x85\xcf\x68\x1b\x3e\xd1\x36\x55\xad\x4c\x7a\xd0\x4d\x7d\xcb\x3a\x17\x1d\x87\x11\x91\xce\x35\xb2\x2e\xa7\xf7\x05\x96\xd9\x28\x84\xd2\xd7\x46\x85\xed\xa7\xcd\xcd\xa5\x9f\x0e\x3b\x47\xd0\x2c\x83\xb4\xd1\xe7\xc8\xf6\xe7\xa0\x4d\x15\x1a\xb3\x8d\xab\x76\x11\x40\x66\x94\xa7\x19\x48\x2c\xf9\xae\x96\xeb\x5a\xb1\xba\xc7\x41\xd5\x95\xc2\xa7\x85\xd2\x24\x11\x32\x75\xcd\x6a\x5d\xf2\x26\x2e\xa6\x3a\x5e\x48\x68\x73\xca\xe9\xd4\x76\x29\x5c\x29\x1c\x8c\xe5\xa4\x55\xd0\xda\x62\x26\xc4\x2d\x49\x44\x5e\x64\x78\x00\x3a\x9c\x8f\xba\xb3\x4e\x85\xa2\x43\xec\xa6\x78\x14\x34\xdd\xc1\x1f\x9e\xb0\x3b\x62\x1f\x72\x0a\xdc\x43\xd2\x5b\x57\x3e\x43\x11\xcd\x2e\xa3\x4f\x5c\xf0\x4a\x5c\x99\x08\x73\x18\xcd\x5e\xd7\xf5\x08\x2a\xa2\x37\x22\x67\xf7\x90\x04\x9d\x2d\xcd\x13\xae\xb5\xa5\x16\x68\x0f\xe9\xde\xb1\xb8\xb3\x29\xbf\x2f\xf3\x79\x87\x04\xb5\x70\x2c\x55\x9f\xc3\x39\x7d\xb1\x6d\xf7\x0a\xec\x5b\x60\x13\xa4\x31\x69\xcd\xd7\xdf\x6e\x9c\x21\x7b\x62\x57\x4a\xd6\x55\x01\xca\x7e\x2e\x4c\xd4\x16\x42\x93\x83\xfd\xa3\xfd\xc3\x15\xbb\xde\x52\xc5\xe6\x9b\xe0\x49\x86\x25\x0a\x0b\xac\xf7\x07\xc9\x7e\x3a\x20\x4c\x7b\x1a\x6d\x2b\x25\xe0\xaa\x5c\x26\xdd\x80\x28\x41\xb4\xa4\x29\x73\x9a\x13\xfe\x6a\x6e\xd2\xb2\x74\x65\x12\x0e\xf6\x7f\xdd\x1f\x10\xd0\xc9\x21\xb9\x13\x7c\x5f\xe3\xf2\xb1\xa6\x48\xa9\x82\x89\x16\xa2\xc4\xd6\x7d\x16\x04\x55\x81\x10\x43\xe8\x88\x28\x6d\x9f\x9f\x19\xd5\x3e\x83\xef\xec\x9e\x69\xdf\xdb\x42\x4c\xc8\x1b\xdb\x66\x08\xa8\xb3\x2c\x66\x6c\x0e\x47\x33\xa0\x99\x9e\xd9\xe0\x0b\x2e\xf8\xd0\x76\x8a\x33\x14\xc8\x5d\xe9\xea\x87\xe8\x66\xa6\x0b\x47\x07\x93\xdd\xea\x82\x3a\x4a\xe4\x86\xf6\x7e\xdb\xbe\x17\x2e\x59\x69\x13\x7d\x73\x73\xf9\x6d\xa3\x19\x2e\x12\x7f\xad\x0b\x1f\x12\x13\x14\xdb\x78\x06\xb4\xa3\x1f\x27\x60\xa7\x4e\xb6\xa4\x47\x12\xd6\xb5\xa3\x2d\x59\x6d\xfb\xbd\x5b\x2b\x5b\xf2\x57\x51\x62\x0b\x3e\x3a\xce\x16\xe4\x8e\x72\xed\xd3\xf7\xf6\xcc\x54\x7b\x86\x3c\x19\x6c\xf8\x0b\xd0\x14\xa4\x42\xea\x01\xb4\x75\x51\x31\x3f\x7a\x73\x4e\x05\x6b\xeb\x97\x0f\x94\x4a\x8b\x9c\xcc\xdc\x67\x37\x53\x1a\xdd\xc9\x18\xe1\xe9\xf1\xf9\x42\x12\x0a\x4b\xe1\xdc\x33\xaf\x8e\x7e\xad\xd0\x0d\x0b\xf7\x46\xf1\xfd\x24\x04\x5b\xd8\xa2\x85\x71\x0b\x2c\xdb\x5c\xb1\x27\x5a\xda\x43\x50\x01\xe9\x31\xb0\x80\x74\x4b\x90\x5c\x9e\x08\x9d\x65\xdd\x63\xa8\x7a\x8b\x55\x20\xbd\xf9\xe3\xc9\x3a\xe3\xa5\xc3\x19\x1b\x39\xdb\x13\x10\x7b\xf5\x82\x93\xee\x29\x98\xe1\x78\x18\x00\xfd\x6c\x3e\xe9\x13\x02\x45\x0f\x21\xd3\xab\x01\xd3\x2b\x2d\xc6\x91\x4c\xd8\x4a\x55\xcf\x86\xcb\x74\xed\xb7\x4e\xd6\xe7\x1f\x4b\xc2\xab\xf6\xb8\xfa\x45\xf4\x5c\x27\xfd\x85\x36\xf6\x1d\xd8\xd8\x6b\x58\xe3\x27\x0d\x6a\xc4\x54\x8a\xce\x54\xa4\x69\x53\xc7\x29\x0d\x06\x18\xbd\xcd\x68\x9c\x4e\xf6\x73\x46\x21\xdf\xc2\xa3\x69\x45\x35\x47\xed\x59\x9c\x31\x9d\x14\xd7\x22\xb9\xed\x51\xaf\xd9\xbf\x39\xb9\xb4\x53\x06\xaa\x0d\xe5\xde\x18\xc2\xf8\x5c\x64\x73\x5b\xe9\xef\xe6\xe4\x12\x4f\xde\x08\xff\x85\x86\x28\xd4\xa8\x17\xe6\x59\x1f\xec\xef\x5c\x38\x46\xfb\xb6\x16\x34\x4a\x24\xd0\x8c\x29\xcd\x12\x7c\xae\xb2\x6d\xe1\x0c\x5d\x7c\x37\x51\x53\x5a\x37\x7a\xd7\x94\x82\x6e\xb3\xbb\x2a\x4d\x5d\x83\xf3\x9e\x31\x5f\x72\xfc\x48\x56\xcd\xd4\x22\x5f\xea\x69\xbe\xe7\xcb\x97\x0a\x09\xd7\x5a\x14\x3d\x79\x42\xec\x64\x1b\xfc\x20\x63\x98\x08\x09\xcb\x8e\x90\xc0\xb1\x91\x96\xe0\x0a\x71\x1e\x5f\x9e\x57\x26\x28\xd1\x70\x5e\xd8\xb0\x44\x5f\x7d\x33\x63\x73\xe0\xa0\xd4\x11\xba\x3c\xca\xc2\xaa\x98\xbe\x6f\xee\xc0\x7c\x1d\xe4\x85\xad\x5f\x59\x85\xfa\xbb\xae\xbd\xf8\x23\x68\x5b\x78\xb2\xf2\xbf\x38\x8b\xaa\x5f\xfe\xb2\xab\x24\x91\x54\xcd\x6c\x47\x5b\xb8\x67\xda\x75\x65\x96\x40\x95\xe0\xd6\xd8\x1b\x34\xd7\x65\x8a\x14\x54\xa9\xba\x0c\xb8\x7b\x89\x7d\xe8\xd2\x96\x0e\x0e\x1f\x98\x4a\x9a\x00\x29\x40\x32\x91\x12\xcc\xb9\x4d\xc5\x1d\x27\x63\x98\x32\xae\x3c\xfc\xcc\x44\x1e\xd0\x86\xdd\x00\xda\x86\x7d\x45\xb5\x11\xb9\x6a\x14\x0a\x71\x29\x3c\x89\xa8\x4f\xb4\x5b\xc5\xb2\x93\x09\xa3\x26\x11\xbc\xb6\xad\x4c\xb5\x31\x61\xa7\x9d\x47\x16\xdd\x83\xb7\xc9\x36\x83\xf2\xd7\x36\x42\x07\x0b\x9e\xd2\x64\xd6\xcd\x7d\x1b\xdd\x53\x5b\x8e\xe8\x9e\xda\x6d\x44\xf7\x54\x74\x4f\x6d\x1e\xcf\xce\xbc\x1b\xdd\x53\x51\xe9\x5a\x1e\xd1\x3d\x15\xdd\x53\x1b\xc6\xb3\xa3\x5f\xd1\x3d\xb5\xc5\x88\xee\xa9\x2d\x47\x74\x4f\x45\xf7\x54\x74\x4f\x45\xf7\xd4\x6f\xc8\x0c\xe8\x47\x74\x4f\xad\x4c\x12\xdd\x53\x01\x30\xa2\xa6\xb4\x66\x44\xf7\xd4\x9a\x11\xdd\x53\xc1\x88\x7c\xa9\x05\x5f\xf2\xce\x9d\x4b\xa3\x97\x75\x6f\x23\x8c\xda\x1d\xd6\xf3\x7b\xa5\x69\x4d\x5d\x6c\xfc\xcf\xda\xbe\xff\x4c\x7c\x28\x3d\xd8\xf4\xa3\x3d\xff\xd5\xd9\xf3\xfb\xb1\x85\xf5\x60\x07\xeb\x4c\xca\x9d\xd7\xfc\x66\x26\x41\xcd\x44\xd6\x1a\xd1\x1b\x48\xfe\x81\x71\x96\x97\xb9\xc1\x39\x65\xf0\x99\xcd\x2b\xf7\xbc\xaa\x5b\x32\xa3\xd7\xde\x9a\xe4\xcc\x8d\x2c\x05\xac\xc6\x49\x59\x66\xb6\x11\xf3\x27\x67\x14\x65\x62\x55\x26\x09\x00\xf6\xfa\x0a\xd5\x85\x3f\x8c\xaa\x37\x55\xbd\x1d\xde\x76\xa3\x37\xdd\x98\xac\xad\x97\x89\xb3\xfc\xe1\xf7\xad\xe6\xe8\xe8\x4e\xf9\xfc\xae\x94\x1e\xc8\x74\x77\xc5\xa0\x93\x52\xd0\x07\x97\xe8\xaa\x0c\xbc\x34\x97\x49\x6f\xae\xc3\x1e\x5c\x25\xcf\xc8\x4d\xf2\x6c\xd8\xc2\x73\x71\x8d\x3c\xc3\x52\xa0\x3d\x58\xf2\xfb\x70\x85\xf4\xe7\x06\xf9\x04\x15\x33\x3f\x8d\xfb\xa3\x47\xb5\xb3\x27\xb7\xc7\xe7\x70\x79\xf4\xf2\xd5\x5d\x5d\x1d\x9f\xcf\xcd\xd1\xcf\xe7\x76\x34\x23\xbd\x0a\xd7\x46\x0f\xe6\xa3\x3e\x4d\x47\xbd\x99\x8d\x3e\x99\x2b\xa3\xbb\x1b\xe3\x19\xb8\x30\x3a\x03\x99\x71\xa6\x19\xcd\x4e\x21\xa3\x8b\x6b\x48\x04\x4f\x5b\x73\x98\xa5\x12\x6a\xd5\xf9\x51\x76\x5a\xa7\xa3\x35\x03\x7d\x67\xd4\x55\x8a\x85\xd4\xc7\x2e\x7b\x93\x9e\x13\x28\xd0\x1a\x67\x57\xd9\xa6\x0e\xd3\x9d\x90\xb7\x99\xa0\xa9\x3a\x2a\x84\xfd\xbf\x3a\x8c\x37\x88\xdf\xb5\xef\xea\x16\xc0\xfb\xd4\xca\xa0\x8d\x7a\xee\x73\x13\xff\x22\xee\x88\x98\x68\xe0\xe4\x80\x71\xbf\x8f\x87\x81\x1a\x58\x6b\xe6\x15\x5a\x9b\xab\x6f\xdf\xf8\x9b\x5f\x9f\xca\x8d\xc6\x05\xa5\x3e\xbd\x05\xc4\xbd\xe8\x71\x13\x88\xbb\x71\x52\x66\x4d\x33\x88\x35\x8d\x34\xe9\xcd\xdb\xba\xd6\xe5\x5b\x9c\xb7\x3a\x6d\x94\xa7\xc4\x65\x48\xbc\xbe\x4d\xeb\xec\xa0\x7d\x0d\xce\xd9\x68\x7b\x21\x7d\xdb\x5e\x9e\xc8\x09\xfb\x0c\xa5\xe6\x17\xea\x78\x8d\x52\xf3\x0e\x23\x48\xb4\xfa\x56\xd2\x04\x2e\x7b\x17\x38\xfc\x71\x22\x69\x29\x5d\x7e\x5c\x25\x77\x54\x87\x87\x03\xa4\xf6\x34\x55\xd9\x67\x98\xf6\x35\x29\xb3\x6c\x41\xca\x42\xf0\x66\x8a\x9f\x75\x5a\x2d\x67\x86\x99\xd9\xd6\xbd\xa5\x96\x52\x0b\x29\x1c\x03\x96\x25\xe7\x86\x9e\xd7\xdd\x6f\x50\x2a\x55\x96\x56\x87\xf9\x67\x8a\x4d\xcd\xf2\x0d\x33\xc5\xd4\x34\x96\x43\xdd\x1f\xa1\x9e\xd0\x3c\x3d\x11\x32\x61\xe3\x6c\x41\x66\x34\xab\x5a\x1d\x50\x72\xcb\xb2\xcc\x4d\x33\x22\xd7\xa0\x89\x9e\x31\xd7\xa5\x9a\x64\x82\x4f\x71\x71\x94\xfb\x16\x5b\x90\x98\x67\x93\x0c\x28\x2f\x0b\xfb\x3e\xc3\xd6\x17\xa2\x94\xfe\x7d\xae\x7e\x64\x35\x0b\x53\x84\xb3\x6c\x10\x34\xf2\x79\x70\x63\xeb\x6e\xe9\x0a\x7c\xf2\xde\x1d\x53\x30\x08\xe7\x14\x73\x90\x92\xa5\xce\x69\x60\x7f\x2b\xa4\x98\xb3\xd4\xb6\x62\xf0\x60\xc3\x96\xa1\xb6\x55\x43\x75\x9e\xb9\xe0\x43\x0e\x53\x8a\x52\x8f\x3b\x45\x76\xcf\xec\x3c\xd6\x15\xc7\x53\x6c\xde\x60\xd4\x05\x51\x34\x72\x46\xe7\xcc\xb6\x9d\x0c\x20\x47\x0e\xb8\x20\x02\xd9\x6b\xc9\x99\xb6\xad\x8c\x67\xa5\x26\xa9\xb8\xe3\x87\x66\x72\xa6\x0c\x1c\x28\x19\x83\xf6\x6d\x55\x7d\x9b\x3f\x26\x41\x11\xe0\x74\x9c\x99\x3d\xc7\x98\x80\x9b\xb5\x00\x22\x13\xa0\xba\x94\x40\xa6\x54\xc3\x5a\xa1\xc9\x7e\xef\xc3\xe0\x65\xaa\x6a\x39\x5e\x72\x05\xad\x9b\x2d\xf7\x2c\x69\xfd\xe9\x8f\xed\x68\x04\xcb\x41\x94\xfa\xb3\xa8\x92\xb6\x1d\x7f\x20\x19\xb3\x1c\x14\x11\xe5\x92\x8e\xfd\xd6\x3d\xb6\x7e\x87\xa2\x3e\xb9\x6e\xb4\xb5\x12\xaf\x31\xa5\xb9\x6e\x80\xab\xf1\x33\x41\xb7\x53\x6a\x8e\xe2\xe9\xc5\xf5\x2f\xef\x8f\xff\xeb\xec\xbd\x3b\x9f\x3c\x64\xfa\x25\x67\xff\x28\x81\xd0\x5c\x18\xb9\x3a\x0b\xc3\x70\x06\x68\x1e\x08\x7e\xc0\x93\xdc\x6f\xc0\x4e\x4b\x86\x8c\xad\x99\xbb\x87\x25\x61\x83\xe7\x4f\x1f\x95\xf4\xd4\x2d\x6b\xaa\x96\x9b\xe6\x83\xc3\x96\x35\x94\x70\xd0\xe6\xe4\x59\x89\xd2\xb6\x30\x62\x7c\x9a\x85\xc2\x64\x3b\x72\xd5\x55\x27\xea\xaa\x11\x0d\xeb\x2f\xb8\x6c\xab\x18\xf5\xd2\x3a\xa7\x5e\x43\x4f\x0d\x27\x6a\xaa\xed\xd5\x00\xdb\x11\xd4\xab\x01\x56\xf4\x38\xbf\x24\x34\x4d\x25\x8a\x29\x78\xea\xf3\xa5\xc6\x73\xf8\xb0\x35\xc6\x0f\xc8\x1b\xf2\x67\x72\x4f\xfe\x8c\x6a\xc1\x9f\xba\xb6\xe7\xe8\x2a\xb0\x77\x37\x4b\x58\x6d\xf4\xfc\xb2\x27\x88\xff\x38\xa3\x1a\x67\x34\x50\xd5\x82\x8c\x99\x13\x43\xe1\x5e\x83\x34\x62\x91\xdb\x89\x27\x6d\x6c\x62\x16\xf8\x19\xd1\xcc\xda\xdc\xcf\x27\x61\xe5\x7f\xbd\x23\xa2\x99\xc7\x8d\x7e\x7f\xe1\xa8\x50\xb3\x8f\x40\x3d\x5b\x4e\x75\x32\x6b\x92\x31\x23\x60\xa8\x06\x73\x4a\x05\x92\x71\x1b\xbf\x36\x63\x1d\x22\x08\x9e\x0f\x1a\x77\x73\x2a\x37\xf6\xf3\xa1\x9d\x5a\x52\xfc\x91\xcf\x3b\xc1\x20\xa8\x3f\x52\x88\x74\x44\xce\x68\x32\xc3\x65\xa5\x01\xcf\x30\x1a\x08\x4e\x36\xa3\x73\xb3\xf1\xee\x59\xdb\x77\x03\xa5\x95\xca\xd4\x8a\xb8\x64\xce\x53\x42\xb9\xed\x7c\x37\x01\x29\x6d\xc8\xe1\x78\x81\x9e\x4f\x96\x40\xe7\xcd\xeb\x74\x92\x0a\x29\xb4\x48\x44\x87\xde\x2b\xcb\xd1\xcf\x38\x1d\x02\xc1\x1a\x2d\xbd\xad\xf8\xfb\xd3\xcb\x01\xb9\x39\xb9\xc4\xa6\x19\xd7\x27\x37\x97\x4d\x09\x7b\xef\xe6\xe4\xb2\x43\x0f\xff\x5e\x6c\x1e\xce\xcc\xf6\xce\x2c\x73\xe7\x49\x24\xd0\x94\xc5\x38\xf2\xed\x47\x8c\x23\xdf\x3c\x62\x1c\x79\x8c\x23\x8f\x71\xe4\x0f\x8f\x18\x47\xee\xc6\xd3\x9b\x7a\x48\x8c\x23\x6f\x39\x5e\x97\x2f\x33\xc6\x91\xef\x34\x62\x1c\xf9\xea\x88\x71\xe4\x1b\x46\x8c\x23\xdf\x30\x62\x1c\x79\x8c\x23\x8f\x71\xe4\x31\x22\xe6\xd1\xb9\x9e\x67\x44\x0c\x89\x71\xe4\x6e\xc4\x38\xf2\x57\xe1\xf7\x27\x31\x8e\x7c\xab\x11\xe3\xc8\x63\x1c\x79\x9b\x11\xe3\xc8\x71\x44\xdb\x4b\x8c\x23\xf7\x23\xc6\x91\xdb\xf1\xdb\x91\x9a\x63\x1c\x79\x8c\x23\x8f\x71\xe4\x31\x8e\xfc\xc1\x55\xc4\x38\xf2\xd7\xa0\x4f\xfa\x86\x5a\xdd\x83\xa0\xaf\xfc\x4c\xdb\x87\xd5\x90\xb3\x35\xbf\xa2\x59\x45\x15\x66\x12\x59\x4f\x99\x49\xa0\xe9\x02\xa7\x4c\xd0\x2d\x53\x0b\x59\x2f\x30\x3a\x27\x63\x39\x6b\x17\x77\x4e\x56\x0e\xcd\x7b\x9c\x2b\x70\xe1\x18\xb0\xe4\xf4\x1e\x0f\x00\xcd\x45\x69\xfb\x77\x25\x22\x2f\x4a\xdd\x84\x29\x6e\x4f\x9b\xd6\x5b\x13\x36\x75\x1c\xf5\xc8\x76\x09\x1b\x56\xd3\x0e\x83\xce\x5c\x4f\xa8\xc0\xd0\xd4\x87\x9f\x5c\xf6\xa0\x4b\x14\x54\x6b\x90\xfc\x1d\xf9\xef\x83\xbf\x7d\xf5\xeb\xf0\xf0\xeb\x83\x83\x9f\xde\x0c\xff\xe3\xe7\xaf\x0e\xfe\x36\xc2\x7f\xfc\xeb\xe1\xd7\x87\xbf\xfa\x3f\xbe\x3a\x3c\x3c\x38\xf8\xe9\xbb\x0f\xdf\xde\x5c\x9e\xfd\xcc\x0e\x7f\xfd\x89\x97\xf9\xad\xfd\xeb\xd7\x83\x9f\xe0\xec\xe7\x2d\x27\x39\x3c\xfc\xfa\xcb\xd6\x4b\xee\x2c\xf0\xf6\x27\xee\xf6\x24\xec\x7e\x12\x51\xd7\xf9\x7e\x7b\x3a\x8b\x57\x6e\xb6\xe5\xd3\xe8\xd8\xd1\x43\xa7\xd1\x6b\xdc\x28\xc4\x55\xf3\x30\x45\x44\xce\xb4\x76\x54\x94\x86\x51\x5f\x4c\x37\x54\x4e\x47\x07\xb0\xdb\x21\xd5\xb6\x9d\x60\x15\x31\x15\x44\xec\x0a\x2f\xd7\xb9\x36\x8d\x95\x35\x02\xcf\xf3\x30\x85\x09\xe3\xe0\xbc\x5c\x91\x36\x3c\x3e\x22\x6d\x78\x8d\xb4\x41\x41\x52\x4a\xa6\x17\x27\x82\x6b\xb8\x6f\x65\x3f\xd9\x64\x40\xba\x6e\x4e\x4d\xec\x89\xb3\x94\xc2\xbf\x96\x88\xc2\x06\x4a\x6e\x4c\xcd\xab\x82\x6e\x65\xc9\x51\xa5\xb4\x39\x14\xa0\xad\xbe\x87\x9a\x0e\x46\x41\x2e\xbf\xce\x6b\x70\x76\xea\x7f\x94\x6c\x4e\x33\xa3\xdf\xd6\x4f\x5c\xa2\xce\x12\x3e\xd4\xca\x88\xf5\xc4\x32\x16\x8a\x37\x97\x92\xcd\x59\x06\x53\x38\x53\x09\xcd\x90\x2a\xf5\x43\xe9\x8f\x37\xcc\x8e\x5b\x24\x45\xa6\xc8\xdd\x0c\xb0\x8d\x2a\xf5\xea\x39\x66\x2a\x4c\x29\xe3\x24\x37\x44\xb5\xf0\x0f\x2b\xab\xe7\x1b\xe2\x6d\xa4\x5e\xae\x6b\x7d\x1e\xd5\xd7\xb1\x10\x99\x0b\xeb\xcd\x16\xf5\xfc\xae\xad\x2d\x17\xbf\x70\xb8\xfb\xc5\xcc\xa6\xc8\x24\xa3\xd3\x4a\x8d\x57\xa0\x57\x2c\x71\xf5\xd4\x1b\x3f\x00\x63\x66\x4b\x20\x34\xbb\xa3\x0b\x55\x1b\x35\xc2\x86\xbf\xef\xc8\xdb\x43\x44\x3c\xaa\x48\x35\x47\x4a\x7e\x7f\x88\x7e\xbe\x93\xe3\xcb\x5f\xae\xff\x7a\xfd\xcb\xf1\xe9\x87\xf3\x8b\x6e\x74\xde\x7c\x3b\x50\xde\x6a\x8e\x84\x16\x74\xcc\x32\xd6\x85\xbc\xaf\x44\x82\x84\x93\x22\x03\x4d\xd3\xa3\x54\x8a\xc2\xc2\xc9\xdb\x8f\x42\x1d\xe7\x74\xc9\x2c\xec\x78\xb6\xdd\x9e\x49\x73\xc2\xa9\xa4\x5c\xd7\x86\x94\x1a\xe4\xb2\xe4\x46\xe9\x7d\xe1\x41\xf3\x34\xed\x2f\x60\xfe\x38\x4d\x21\x6d\x40\xef\xd5\x05\xe8\x9d\xf8\x8f\x5b\xd4\xb9\xb6\xe4\xf2\xe3\xf5\xf9\xff\x5e\x42\xc3\x45\xd1\x2d\x1e\xa9\x9f\xfc\x1e\xd9\xbe\x03\x39\x59\x35\x26\xe4\x62\x1e\xf7\xf7\xb9\xec\x6f\xc5\xab\xfa\xf1\x82\x5f\x95\x3c\x64\x27\x3c\x98\x9f\xe4\x22\x85\x11\xb9\xac\x2c\xe8\xcd\xab\x61\x0d\x01\x09\xc4\xdc\xc2\x35\xc3\x56\xe7\x81\x28\xa3\x85\x4d\x74\x69\x64\x98\x86\x74\x78\x42\x33\xd5\x91\x98\x76\xe1\x4c\x86\x09\x7f\x30\xaa\x60\x2f\xd0\xac\x66\x23\x29\x70\xa1\x9d\x24\x69\x56\x89\x49\xb7\x52\x24\xc4\xea\x9d\x41\xc8\x52\x83\xbb\xb8\x06\xf8\x9e\x31\x31\xe5\x61\x75\x59\xcd\x6c\x2d\xb0\xa5\x02\xb5\x9e\x31\xd5\x9a\xa8\x99\x5d\x02\x4d\x31\x5f\xac\xa0\x7a\x66\x23\x0e\x72\xaa\x6e\x21\xb5\x3f\x38\xb9\xa6\x32\xc1\xdb\x66\xf8\xee\x55\x37\x66\xdd\xde\xde\x8e\xf2\x8c\x8d\x83\x40\x3b\x3d\xb4\x8e\x4e\xef\x7c\x04\xcc\x37\x7d\xe4\xd9\xe2\x4a\x08\xfd\x4d\x95\x27\xd5\xcb\x06\xfe\xe8\x24\x45\x74\xb3\x34\x43\xa6\x30\x40\x20\x1d\x22\x30\x11\xa5\xc3\x14\xad\xd3\x7a\xc3\x9e\x18\xa1\x65\xc9\x8f\xd5\xb7\x52\x94\xad\x39\xc0\x8a\xa0\xf5\xed\xf9\x29\x9e\xe3\xd2\x79\xc0\xb8\x96\x8b\x42\x30\x6b\x3e\xd9\x20\xd3\x7e\xef\x7c\x78\x21\x46\xd6\xee\x16\xf2\x81\x2e\x08\xcd\x94\xf0\xc2\x31\xe3\xeb\x54\x1d\xe2\xf4\x28\x73\x79\x2c\xf4\x6c\x45\x81\x32\xe8\xbc\xfa\xdc\x20\x70\x88\xd5\x75\x53\x18\x5f\x79\x5c\xd3\x5b\x50\xa4\x90\x90\x40\x0a\x3c\xe9\xb8\x6b\x4f\xed\x06\xc2\x9d\xbf\x10\xdc\x1c\x8b\x5e\xf6\xfe\xbc\xf2\xff\xa1\x19\xab\xb9\xd3\xe8\x49\x74\x7a\x07\x45\x7f\x22\x1e\x8a\x52\x81\xb4\xce\x4f\x59\x82\xdd\x88\xef\xca\x31\x64\xa0\xad\x32\x84\xf5\x03\xa8\xb6\x2a\x2f\xcb\xe9\x14\x08\xd5\x15\xa2\x68\x41\x80\x2b\x43\x6e\xac\xe1\x4c\x93\x54\x40\x9d\xdc\x48\x15\xf9\xfe\xfc\x94\xbc\x21\x07\xe6\x5d\x87\xb8\xfd\x13\xca\x32\x74\x35\x6a\x2a\x97\xd7\xc8\x26\x7e\x0a\x5c\x12\xe2\x1e\x11\xd2\x1e\xd1\x01\xe1\x82\xa8\x32\x99\xf9\x35\x19\x8d\xcb\x2b\x6c\x2e\xd6\x0e\x4d\xf2\xaf\x10\x55\x3b\x13\x98\xef\x15\xc8\xde\xe8\xcb\xf7\x2d\xe8\x4b\x28\x42\x18\x9c\x6b\x42\xcf\x22\x56\x0e\x9a\xa6\x54\x53\x47\x77\xea\x8c\xe8\xd7\xb8\xa5\x4f\x4d\x7d\x14\xbc\x67\xbc\xbc\xb7\xb6\xb5\xfe\x94\xfc\xeb\x33\x9c\x16\x51\x00\x81\x86\x9b\x46\x8b\x22\x63\xb5\xe7\x31\x88\x6e\x3a\x6f\x6c\xf5\x60\x83\x88\x84\xc7\xdc\x3b\x30\x0d\x67\xa7\x3c\x15\xf9\xca\xcb\xd0\x5b\x4a\x93\x59\xf8\x82\x57\x89\x3c\x4f\x6e\x8e\xc8\x60\x0e\x1d\x6a\x73\x2c\x21\xce\x7b\x33\x9b\x91\xc5\xfc\x86\xe2\xf4\x24\xa3\x63\xc8\x2c\x67\xb1\x08\xa4\x56\x11\xe8\xa9\x23\x04\xa5\xc8\xfa\xcb\x8f\xb8\x12\x19\xd8\x90\x1b\x0f\x08\x33\xfd\x8b\x80\x03\x4e\xd2\x17\x1c\x50\x91\x69\xc0\x01\x55\xb2\x97\x00\x87\xb2\x03\xa3\x25\xcb\x70\x30\x5c\xbb\x09\x07\x64\x9d\xcf\x1d\x0e\x0a\x92\x44\xe4\xc5\xa5\x14\x46\xe5\xea\x8d\xb5\xb8\x69\x6b\xff\x8e\xd5\xc9\xd1\xe0\x1b\x6a\x7f\xce\x9b\xd3\xbc\x99\xca\x20\xd8\x8e\x6a\x4b\xe3\x7d\xc4\xdd\xff\x0a\x58\x0e\x92\x9e\x65\x3e\xe4\x67\x69\x38\x80\xcc\x93\xee\xc2\x0b\x4f\xf5\xef\x60\x25\xeb\x85\x99\x88\x84\x66\x58\x3a\xad\x1b\xc6\x90\x65\xac\x59\x9e\x38\x88\x90\x44\xd7\x12\xfe\xe6\xbd\xf6\x58\x45\x0b\x7f\x71\xb6\x2f\x2e\x52\x08\x9c\x85\x36\xb4\xf3\xc6\x46\xd2\xe1\x7d\x3e\x38\xd3\x70\x75\xe7\xbc\x87\xb4\xf1\xb4\x16\xae\x3a\xcb\x87\xaa\x20\x9b\x59\x20\xf0\x94\xf1\x29\x5a\x74\x06\x44\x42\x66\xc3\x3a\xdd\x19\xbe\xb5\xea\xd7\x3e\x62\xb4\x9f\xd4\xa3\xb3\x7f\x35\x4a\x42\x4c\x70\x37\x33\x1a\x39\xbc\x7c\x33\xb1\xd4\x92\x29\xb2\xf7\xde\x03\xa0\x43\x05\xab\xe7\xc8\x20\xf6\xec\x17\x56\xbb\x69\x6d\x6c\xb7\x8c\xa7\x2e\x02\xb2\x01\x2c\xaf\x24\x3a\x29\x14\x63\x6b\x59\x1a\x92\x86\x77\xe4\x6f\x9c\x54\xc0\x22\xc3\xd6\xe8\x71\x65\x05\x56\x6f\x5e\x1a\x3e\x6c\xf2\xab\x5e\xb2\x3c\xcd\xf7\x1c\xf7\xde\xbc\x77\x68\xd4\xde\xd5\xfb\xfc\xb7\xec\x3d\xe5\xbe\xde\x31\x9e\x8a\x3b\xd5\xb7\x0e\xf1\xa3\x9d\xd6\x0b\xd4\x89\x41\x6b\xcd\xf8\x54\x85\x7a\x44\xb3\x4e\xee\x7a\x45\xc2\xef\xf0\x44\x0a\x9b\x86\xb7\x2a\xc0\x2f\x45\x6e\x47\x25\x60\x87\x31\xcd\x15\x3d\x91\xe6\x53\x34\xa3\xd9\x75\xd1\xbe\x6c\x1a\x59\x46\x83\x6f\x3f\x5c\x1f\x37\xa7\x36\xf4\xec\x6e\x06\xd2\xf2\x5e\x73\x9d\xd0\x34\x67\x4a\xa1\x19\x08\xc6\x33\x21\x6e\xc9\x81\x0f\xb4\x9a\x32\x3d\x2b\xc7\xa3\x44\xe4\x41\xcc\xd5\x50\xb1\xa9\x3a\x72\x48\x3b\x34\xab\x3f\x24\x8c\x67\x55\x04\x09\xaa\x91\x5c\x2b\x6f\xc6\xc0\x97\x24\xd5\x2a\x70\x6f\x5d\xdd\x45\xe7\x65\x5e\x5d\xa6\xad\xb4\xc8\x20\x7b\xfa\x62\x30\xab\xdb\x73\xd1\xb1\xae\xc5\x23\x5b\x84\xdf\xee\xd2\x46\xc2\x14\xa7\xb5\x70\xb4\xd2\xdb\x93\x03\xc9\x49\x07\x09\xa8\xfe\x2a\xe6\xfc\xa5\x9e\x93\xa4\x60\x33\x1b\x00\xa3\x4e\xe8\xc6\x30\x24\xb4\xca\xee\x63\x82\x9c\x7b\x74\x3f\x94\x68\xd1\xeb\x63\x53\x30\x8c\x3e\x90\x15\x33\x3a\xb4\x4a\xb2\x21\x49\x48\xc3\xbc\x0c\x30\x13\x5c\x48\x8b\xa2\x86\x0b\x0a\x8e\x28\x8d\xda\x82\x75\x04\xe1\x9e\x38\x1a\x1b\x2c\xf5\xa4\xf6\x0f\x86\x3e\x24\x4c\xb0\xb1\x09\xfa\xf5\x1a\xee\x98\x9e\x61\x11\xb9\xd9\x92\xc3\x09\x57\x22\x41\xa1\xf7\x80\x13\x90\x52\x48\x17\x08\xe3\xad\xb6\x38\x13\x92\x62\x8c\xa4\x31\x48\x42\xcd\x5f\xfb\x2a\x74\x51\xd6\xa5\x4c\x31\xb6\xcb\x60\x13\x4c\x26\x90\xa0\xa4\x14\x02\xd8\x92\xdd\x83\xba\xaa\x9e\x0f\x9d\xd7\xc2\x97\x42\xcd\xd9\xbd\x79\x4b\xf8\xd4\x52\x41\x75\x2e\xf8\x70\xfd\xe5\xc3\x11\x21\xe7\xbc\x8a\x7b\x1c\x98\x5d\x0c\xef\xf4\x21\x3f\xda\x7c\x62\x58\x47\x17\x3f\x20\xb4\x3b\x19\xf1\x4e\x96\x3d\x60\x7c\x17\x63\x30\x09\x0d\xc2\xbd\x92\x03\x34\x0c\xbb\x49\xcd\xd6\x7b\x26\xde\xc5\x50\x6c\x6e\xf9\x54\xc6\xe2\x97\xc1\xe9\x49\x57\x3a\xe7\xd2\xd5\x63\xed\xd7\xed\x46\xac\xfd\xba\x79\xc4\xda\xaf\xb1\xf6\x6b\xac\xfd\xfa\xf0\x88\xb5\x5f\xdd\x78\xfa\xf4\x4c\x12\x6b\xbf\xb6\x1c\xaf\xab\xfe\x48\xac\xfd\xba\xd3\x88\xb5\x5f\x57\x47\xac\xfd\xba\x61\xc4\xda\xaf\x1b\x46\xac\xfd\x1a\x6b\xbf\xc6\xda\xaf\xb1\x8a\xd5\xa3\x73\x3d\xcf\x2a\x56\x24\xd6\x7e\x75\x23\xd6\x7e\x7d\x15\xb5\x7a\x48\xac\xfd\xba\xd5\x88\xb5\x5f\x63\xed\xd7\x36\x23\xd6\x7e\xc5\x11\x6d\x2f\xb1\xf6\xab\x1f\xb1\xf6\xab\x1d\xbf\x1d\xa9\x39\xd6\x7e\x8d\xb5\x5f\x63\xed\xd7\x58\xfb\xf5\xc1\x55\xc4\xda\xaf\xaf\x41\x9f\x54\x3a\x65\xad\xca\x61\x6d\x53\xbd\xc0\x45\x86\x04\xf9\x8e\xe3\x72\x32\x01\x89\x94\x0b\xdf\xbc\x12\x85\x50\x55\x39\xaa\x68\x99\x8b\x33\xc0\xaa\x66\x12\x68\xea\xa2\xa0\x37\x3c\xee\x12\x2c\xb1\x6c\x55\x1d\xbe\x77\xf6\xf1\x9b\x7e\x4a\x25\x74\x0b\x5c\xc3\x35\x7f\xe4\x49\xf7\x00\xa6\x1a\xe0\xeb\xa2\xf2\x1d\xdc\x93\x4c\x28\x17\x76\x88\xc0\x4a\x66\x94\x73\xf0\xca\x23\xd3\x68\x94\x19\x03\x70\x22\x0a\xe0\x96\x7e\x53\xa2\x18\x9f\x66\x40\xa8\xd6\x34\x99\x8d\xcc\x9b\xb8\x07\x76\x1d\x22\xe8\x7e\x51\x5a\x02\xcd\x7d\xb0\x64\x4e\x99\x9d\x8a\xd0\x44\x0a\xa5\x48\x5e\x66\x9a\x15\xd5\x64\x44\x01\x46\x39\x5b\x46\x55\x01\x03\xc3\x4b\xea\xb8\xc2\x41\xfd\x36\xb7\x2c\x11\x56\x8a\x41\xd5\x75\x80\xa5\x2d\xf3\x42\x2f\x88\xf9\xe4\xcc\x95\xbb\x93\x4a\x93\x24\x63\xc8\xad\xf1\x8d\x36\xa1\x0c\xe7\x1b\x78\x5e\xcd\xdd\x4a\x95\x5b\x2a\x4f\x51\x6c\x2d\xb4\x22\x18\x86\x57\x4f\xe8\xa6\x4a\x99\x72\x62\xbe\x1a\x10\xea\xeb\xa0\x58\x40\xfb\x95\x22\xa8\x3d\x67\xb1\xb3\xbb\x9f\x82\xe9\x82\xe2\x69\x06\x37\xad\x35\xac\x46\x74\x8c\x3b\xf5\xc8\x39\x68\x84\xd8\xd6\x02\x05\x86\xbb\xac\x1c\x03\xdc\x00\x0e\x73\x83\x03\x90\x80\xe1\xaf\x74\x03\xd6\x7f\x76\xa4\xd7\x54\x4e\x41\x57\x41\xb9\x6d\x63\x35\x9b\x05\x22\x82\x2a\x87\xa1\x1e\x52\x43\x0c\x81\x73\x29\x52\x8c\xb8\x77\x55\x24\x0c\xce\xac\x29\xa3\x68\x17\xe8\x0a\xe0\xac\xbb\xc1\xcb\x45\x36\xd4\xa9\x7a\xa9\x2a\x68\x02\x8a\x1c\x9c\x5f\x9e\x0c\xc8\xe5\xf9\xa9\x8b\x67\x12\x93\x75\x69\x7c\x8e\x84\x59\x04\xdc\x54\xd0\x91\x29\xff\x8e\xbb\x19\xd5\xb8\x9d\xc1\x8b\x50\x12\x9d\x51\xe9\x02\x15\x7d\xe5\x6b\x72\x21\x34\xac\x2b\x94\xe1\xa9\x01\x8a\x5f\xce\x06\xe1\x30\xcd\x8a\x33\xed\x09\x60\x4b\xb5\x25\x90\x8f\x3e\x80\x52\x74\x0a\x97\x2d\x1d\x58\x9b\x94\x73\xf4\x61\xd5\x67\x14\xa9\x42\x66\xd3\xd7\xaa\x5f\xea\x88\xb7\xa6\x44\x4c\x72\xbb\xa6\x6a\xbf\xef\x24\xd3\x1a\xf0\x7c\x63\xf1\x24\xf4\x81\x2f\x27\xa8\xee\x2f\xc5\xcd\x7d\xf0\x93\xd4\x0f\x1b\xfe\xce\x53\x1b\xc5\x36\x06\x32\x96\x0c\x26\x64\xc2\x30\x34\x0e\x83\xd5\x06\xb6\x1c\x08\xb5\xc6\x25\xa5\x40\xe2\x7a\x9c\x5a\xe3\xd7\x35\x22\x3f\xba\x85\x69\x59\x72\x5b\x01\xdd\x49\xdc\x98\xc2\xc5\x26\x64\x8a\xc1\x6e\x4e\x71\xf8\xe3\x9b\xff\xf8\x13\x19\x2f\x8c\x74\x83\xa8\xad\x85\xa6\x59\xf5\x91\x19\xf0\xa9\x81\x95\xa5\xd4\xcd\x24\xa4\x0a\x02\x58\xa3\xdc\x2e\xfc\xed\xef\x6f\xc7\x4d\x71\xeb\x28\x85\xf9\x51\x00\xbf\x61\x26\xa6\x23\x72\x42\xb9\xc1\x75\xa3\x46\x14\x29\x5a\xf2\xdb\xd7\x0d\xed\x0f\xcd\x44\xc6\x92\x45\x77\xb2\xe3\x74\x13\x32\x13\x77\x56\xed\x5b\x83\x3d\x75\x38\x6c\x21\x8a\x32\xb3\xce\x8c\x6f\xaa\xf4\xbd\x52\xc1\x6a\x8e\xce\xda\x73\x81\xe6\x77\x37\xc5\xd2\xd1\x76\x31\x8e\xfe\x95\xc2\xc5\x7e\x3b\x03\x71\x55\x9e\x06\x75\xe2\x6f\x68\x96\x8d\x69\x72\x7b\x23\xde\x8b\xa9\xfa\xc8\xcf\xa4\x14\xb2\xb9\x96\x8c\x1a\xc6\x39\x2b\xf9\xad\xad\x4b\x5d\xa5\x10\x8b\xa9\x91\xb2\x8b\x52\xfb\x4a\xa3\xeb\x3e\xd8\x26\xa4\x7a\x7e\xec\x35\xe2\x7a\x16\xb8\x67\xb5\xda\xeb\x52\x29\x2c\x46\x86\xf3\xab\x10\xd9\x7e\xff\xe6\x8f\xff\x6e\x51\x97\x08\x49\xfe\xfd\x0d\xc6\xc1\xaa\x81\x3d\xc4\x48\x17\x8d\xcc\x90\xd3\x2c\x33\xe4\x35\x44\x4a\x03\xe8\x75\x48\xf8\xd9\x71\x50\x77\x47\xb7\xad\xa5\xea\x9b\x9b\xbf\x22\x4b\x60\x5a\x41\x36\x19\xd8\xac\x81\x4a\xc3\xdd\x47\x19\x61\xdf\x51\x1f\x4c\xdd\x78\x06\xb2\xf0\x5c\x64\x65\x0e\xa7\x30\x67\x7d\x34\x9e\x68\xcc\xe6\xad\x3e\x19\x53\x98\xa0\x31\xce\x44\x72\x4b\x52\x77\x31\x88\x68\x5a\x2e\xb1\xda\x1e\x0a\x6d\x63\xbb\x3a\xc4\x74\x6d\xfc\xfe\x46\x34\x57\x4e\x8b\x82\xf1\xa9\x4d\x4e\x92\xf4\xae\x01\x0c\x3c\x93\x98\x0f\xdc\xb1\xde\x42\x67\x8f\x43\x57\x7f\xc3\xd0\x7d\x91\xa1\x9b\xad\xa7\x68\x1d\xcd\xd4\xdd\x5d\x51\xaf\xbe\xbd\x8d\xba\x81\x10\xf5\x84\xfe\x34\x14\xf8\x6f\x1b\xa9\xbf\x22\x2e\x57\xe2\x63\x85\x18\x56\x00\x30\xe8\x83\x24\xb9\xbd\xed\xbd\x07\x43\x77\xb7\x50\xb6\x06\x5c\x78\xe5\x60\xc8\xa9\x76\x02\xa1\xd7\x20\x28\x29\x40\x2a\xa6\x0c\x5f\xfe\x01\x0f\xd4\x49\x46\x59\x1e\x58\x83\x9f\x06\x08\xf6\x70\x63\x65\xcc\xee\x94\xf2\x52\xa4\x6e\x42\x24\x85\xb6\x2a\xe8\x1a\xb1\xb6\x29\xd5\xf6\xc8\x50\x9f\x9a\x54\xfe\x50\x43\xb3\x49\x29\xcd\x2f\x15\xa9\xb4\x77\xbd\x26\x02\x89\xdf\xf7\x52\xe9\x63\xb5\xf8\x9e\xc8\x00\x12\x46\xb7\xb9\x4d\x4a\xd8\x50\x1e\xed\x41\x09\x44\x7a\xa7\x07\x8e\x88\x8d\xae\x30\x67\xc2\x3d\x4a\xf6\xdf\xed\x3f\x29\x91\xb4\x20\x92\xa2\xa0\xd3\x4e\x3d\x0e\x96\x20\xb5\x3c\x6d\x98\x08\x6e\xd4\x20\xbc\x5e\x95\x25\xc2\xbb\x20\xad\x0b\x55\x60\x19\x12\xeb\x28\xf7\x00\x76\x0a\x02\xf6\xa0\x21\x77\x74\x41\xa8\x14\x25\x4f\x9d\xa9\xb1\xb2\xf5\x7e\x58\x7a\xf1\x85\xe0\xe0\x7d\x28\xcb\x79\xe4\xe8\xdc\x61\x9c\xbc\x1d\xbd\x7d\xf3\x5a\x38\x15\x7e\xe1\x12\xa7\xba\xa8\x38\x95\xa5\x4f\x4f\xfa\xad\xbe\x1a\x72\x4f\xdf\xfb\xc1\x99\x58\xea\x62\xc7\xcc\x17\x73\xc5\x9f\xee\x24\xd3\x10\x74\x2e\x3a\x40\xc5\xc5\xe8\x87\x41\xd6\xf4\x61\x8f\x35\xbe\xfb\x49\x53\x57\xe5\xf8\x13\xd2\x2d\x47\xa0\xf0\xb8\xad\xb3\x70\xa9\x07\x48\x58\x08\xa8\xbd\x3d\x72\x60\xef\xdc\xb7\x49\xa2\x87\x4f\x8a\x5a\x0e\x68\x67\xf7\x45\x87\x1a\x74\x0d\xc0\x9d\xdd\x17\x14\x6d\x70\x45\x8f\x10\xfc\x2f\x98\xd1\x39\x60\x72\x2c\xcb\xa8\xcc\xd0\xfd\x7c\x6d\xd7\x4e\xc6\xa5\x26\xc0\xe7\x4c\x0a\x8e\xb1\x5e\x73\x2a\x19\x56\xad\x90\x30\x01\x09\xdc\xe8\xa2\x5f\x1e\xfc\x70\x7c\x85\xb1\x2d\x87\xb6\x96\xbd\x5f\x65\xa9\x7c\x79\x89\x70\x25\xc1\x74\x8f\x6e\x9f\x5f\x87\x81\x21\xd2\x5c\xbf\x2e\xf3\x9e\xbc\xd4\xa5\x2d\x98\x7f\x9f\x64\xa5\x62\xf3\xa7\xa2\x24\x2e\x6b\xf9\x94\xb5\xda\xe7\xa5\x0c\xea\x1a\x50\x2b\xc9\xd0\xb5\x0d\xfe\x91\x0a\xad\xfb\xaa\xaa\x69\x15\x86\x43\x38\xd3\x13\xc9\xd9\x74\xa6\x5d\x58\xa6\x2f\x69\xb6\x22\x42\x60\x5d\x87\xa7\x35\x42\x19\xb6\x7b\x9c\x31\xaa\x76\x15\xb9\x56\x32\x0e\xdd\x2c\x18\x44\xc1\x5d\x21\x2a\x9a\x55\xb6\x15\xf3\x22\x6b\x70\x3c\xbf\x74\xde\x29\x0f\x37\xc6\xff\xc7\x06\xad\x54\xda\x85\x0d\x42\xb1\x8f\x58\xab\xe1\x24\xac\x19\xe0\x83\x35\x90\xf8\x63\x95\x15\xb4\x6a\x71\xc1\x87\xb3\xa0\x20\x49\x21\xd2\x1d\xb3\xf1\xda\x2a\x1e\xad\x54\x8e\xf5\x10\x24\x33\x91\xa5\xbe\x2f\xa7\x35\xc9\x8c\x41\xdf\x01\x70\x72\x7e\x89\xf0\x33\x9f\x88\xde\x9e\x0d\x50\xb4\xde\x01\x2c\x3d\x12\x68\xa4\x0d\x78\xee\x8a\x60\x1d\xb4\x92\x2e\x22\x7d\xf5\xa5\x9d\xcf\xfc\x5f\x2a\x98\x79\x8f\x18\x1d\x8b\x39\x20\x48\xd3\x54\x82\xea\x50\xba\xe3\x09\xf4\xd4\x4e\xa4\x94\xb5\xea\xbb\xd0\xf4\x6f\x54\x60\xf3\x16\x22\x14\xdf\xf1\xa8\x22\xe2\x7d\x66\x0a\x76\x7e\x79\xd2\x81\x7a\xed\x7f\xef\xdc\x1b\x66\xaa\xfd\x7d\x45\x58\x91\xd4\xfe\xd4\x11\xa9\xbd\x86\x41\x46\x83\x95\x18\x77\x73\x59\xb5\x15\x13\x03\xa2\xd6\x91\x48\x13\x6e\xa7\x31\x64\xc5\x65\x33\x57\x5e\x62\xa6\xac\x9b\xb8\x01\x0d\xe5\x9f\x08\x01\xe2\x03\x11\x2c\x91\x77\x61\x19\x83\x2a\xc0\x77\x89\x30\xa1\x05\xdd\x87\xf6\x05\x54\x7c\x05\x98\x9f\x0d\x96\x97\xe7\xa7\x7d\xa2\x4b\xc1\xd2\x67\x87\x2e\xbb\xeb\x97\xcd\xdc\xb5\x66\xc9\x07\x37\xa1\x3f\xec\x97\x22\xdd\x20\x26\xd5\x8c\x06\xef\x0f\xbb\x0b\x6a\x41\x28\xb1\x66\xc2\xa5\xbe\xb1\x2d\x80\xb2\x33\x95\x40\x51\xeb\xb2\xcc\xb2\x6b\x48\x24\xec\x6a\x1e\x6d\xee\xff\xf9\xd2\x5c\x9b\x44\x9e\x40\x7e\xc7\x3a\x02\xee\x66\x5e\x17\x78\xab\xb0\x26\xcc\x12\x2c\xca\x0c\xe3\x4c\x29\x5f\x78\x80\xe3\xea\x55\xe0\x8b\x62\xca\xc7\xac\xd8\x10\xa9\xc6\x2e\x28\xa8\x5e\x56\x75\x0b\xa1\x4a\x59\x8f\x29\xe3\x29\x9b\xb3\xb4\xa4\x19\xbe\x08\xa5\xd0\xb0\xa7\x6f\xc5\x21\x73\x5f\xb0\x90\x7c\x23\x24\x81\x7b\x6a\x6e\x1b\x54\x42\x2c\x55\x88\x0e\xa9\x48\x6e\x41\x0e\xac\x28\x76\x8a\x7f\x9c\xa0\xc4\x6b\x4b\xf2\xfa\x75\x18\x5d\xc2\x95\xe9\x6b\xd3\x26\xd8\xf7\x01\xb6\x70\xf8\xc2\x7e\xee\x82\xf1\xe9\x10\x7f\x31\x1f\xe2\xde\x34\x14\x7c\x48\x87\x06\x0d\x5f\x88\xe0\x87\x35\x78\x3f\xa2\x64\x75\xe5\xf1\xc5\xab\x08\x46\x91\x13\xe5\x74\x86\xc0\x92\x39\xf5\x65\xb1\x32\xd0\x58\xf1\xc8\xf9\x75\x6d\x69\x0a\xf7\x6c\xea\xc4\xb4\xb0\x02\x54\x13\xd7\x5e\x88\xf0\xd7\xd6\x42\xb6\x14\x29\x1c\x90\x2d\x07\x23\xbd\x33\x06\x8a\x39\xc8\x39\x83\xbb\x23\xc7\x3a\x87\x77\x4c\xcf\x86\x16\x22\xea\x08\x01\x7b\xf4\x85\x15\x2f\x6d\xe2\xd6\x71\x9a\x3a\xb3\x65\xa9\x60\x52\x66\xae\x5f\xee\x88\xd0\x82\xfd\x00\x52\x61\x5d\xc5\x5b\xc6\xd3\x01\x29\x59\xfa\xf5\x67\x0c\x7c\x61\x9c\xd5\x21\x76\x9d\xa8\xe0\x7b\x47\xe5\x5c\xbe\x30\xfb\x67\xdd\xd2\xd6\x05\x07\x8d\x21\x13\x7c\x1a\x64\x3b\xa3\x78\x71\xce\x99\x5e\x69\xcd\x67\xab\x96\xa1\x8a\x2c\x64\x8a\x81\x8c\x4c\xc8\x86\x3d\xd8\xcc\x87\xb5\x9c\x82\x70\x48\x43\x22\x59\x63\x3e\x0c\x67\x51\x15\x33\x22\x36\x20\xc2\x27\x46\xfa\x0a\x99\xbe\x46\x94\x2d\x59\x36\xa3\x3c\xc5\x3f\x93\x44\xc8\xd4\xad\x97\xe9\x2a\xf6\xd2\x06\x05\xd9\x48\x14\x64\x6b\xd8\x5d\x9d\x2f\xbf\x19\x35\x50\x99\x37\x02\xf5\xbc\xd8\x53\x72\xf6\x8f\x12\x08\xcd\x85\x21\xec\xcb\x85\x9c\x97\x20\x92\xd3\x05\xf2\x56\x5c\xea\xfb\x2a\xd3\xcf\x26\x13\xaa\x01\xb9\x02\x9a\xb2\x20\x21\x7a\x40\xde\x37\x33\xa4\x07\x66\x2d\xd7\x36\x75\xd3\xfd\x64\x57\xef\x9b\xab\x5f\x59\x27\x51\xee\xe3\x8a\x56\x3f\xc6\xec\x8a\xa6\xb7\xc0\xad\x52\x6e\x40\x83\x7e\xb0\x52\xe2\x1e\x24\x33\x48\x4b\xe4\x52\xe3\x05\x99\x30\x5b\xdd\x1d\x45\x05\x36\x9d\x81\xd2\x5e\xb8\x3c\xc2\x58\x9d\xba\x4d\x8d\x5f\x00\xa2\x6f\x10\x69\x5b\x9b\xb1\x72\x8a\xa5\x4b\x85\xeb\x4c\xef\x92\x49\xac\xce\xa6\xca\xdc\x9f\xe5\x65\x48\xab\x91\xef\x69\x6f\x56\x1e\x54\xcd\x66\x4b\xc0\x45\x27\x9d\xb3\xc3\x91\x09\x55\x33\xac\x29\xbf\xbc\x05\x89\x35\xc9\x24\xa5\x34\x04\xc3\x96\x99\xa5\xd8\x44\x16\x3b\x16\x62\xbf\xd1\x75\x86\x9b\x8e\xc9\x03\x66\xb1\xed\xfb\xde\x3f\x1d\x13\x3b\xae\x82\xc1\x0d\xe0\x93\x25\x4a\x60\x77\xd2\x30\x2c\x5f\x5b\xca\xb7\x21\xc7\xcd\x30\x54\xe1\xf3\xb1\xa4\xf6\xfe\xd1\x56\x7e\xcd\x2e\x1c\x90\xca\x69\x77\xcb\xc7\xfe\xb1\x9c\x96\xf6\xa0\x3b\x2a\x5c\x17\xa5\x75\xad\x3c\x51\x6a\xb3\x32\xa6\x51\x67\x4e\x3e\x9c\x86\x29\x48\x61\x6e\x85\x4f\xe0\x1a\x91\x1f\xba\x1a\xa9\x97\xad\xd4\x86\x9a\xd7\xa6\xef\xa4\x3a\x59\x86\x62\x64\x73\xaf\x5f\x54\x6f\xf3\x72\x28\xe3\x45\xa9\x1d\x1b\xac\x35\x4e\x9e\xcc\x28\x9f\xa2\x92\x29\x4a\x33\xdf\x97\x5f\xe2\x8a\x24\xa4\x65\xe2\xaa\xe9\x7b\x94\xfd\xd2\x9b\x6c\x5d\x3d\x2f\xa4\x55\x2a\xa1\x85\x5f\x73\xf8\x59\x6a\xc1\x35\xbd\x7f\x47\xd8\x08\x46\x64\xef\xcb\xe0\xd2\x9e\x7d\x7b\x21\x85\x79\x85\x4b\x7d\xc0\x55\x65\x4c\x63\xf8\xf6\x5e\x78\xf7\x88\x9c\x99\x77\xa0\x1b\xab\x02\x60\x10\x9d\x3f\xae\xc1\x37\x20\x12\xa6\x54\xa6\x99\x33\xb7\xdc\x05\x29\x1d\x15\xc0\xe0\x9e\x29\xad\x2c\x0f\xd2\x1d\x28\x93\xa6\xea\xd6\xd0\x21\x73\xb2\x86\x29\xd5\x74\x18\x1c\xe9\x23\xab\xb7\x0d\x5d\xb9\xcf\x21\x75\xa8\x55\x93\xac\xa3\x2f\x5c\x66\xe4\x90\x56\x77\x31\x23\x91\x63\xe1\xcd\xf6\x72\xce\x4b\xb3\xb1\x75\xa8\xfa\xda\x3c\xbd\x67\x75\x05\x69\x84\x01\x46\xf1\xd7\xf2\x52\x45\x44\x5d\x61\xd3\x75\xe7\xf9\xec\xe2\xe6\xea\xaf\x97\x1f\xcf\x2f\x6e\xe2\xb1\x8e\xc7\x3a\x1e\xeb\x0e\xc7\x1a\xf8\xbc\xf3\x91\xf6\x7a\xd3\x3a\x97\xef\x72\xc1\xc9\x20\x35\xe8\x15\x05\xd6\x9d\xf1\xf9\x0f\x54\xd6\x6d\xec\x9d\xbf\x6a\x8d\x07\xdc\xf7\xb9\x47\x12\x77\xf2\xe2\x23\xeb\x9e\x30\x2e\xae\xc7\x78\xa3\xd0\xa4\xb2\x6e\xd7\xc2\xde\x5f\x27\xbf\x9c\x9f\x9e\x5d\xdc\x9c\x7f\x73\x7e\x76\xf5\xa4\x81\x22\x1d\x0b\x3e\x36\x99\x72\x4b\x2e\x59\x48\x98\x33\x51\xaa\x6c\x51\xf5\xd8\x5a\x4f\x04\x56\x63\x0d\x79\x8a\xb6\x0e\x05\x12\xa3\xae\xd7\x3e\x16\x99\x6d\xbf\xcc\xb6\x19\x37\xd3\xa1\x3c\x4f\x5f\xe8\xfb\x8d\x14\x79\x4f\x28\x7c\x6d\xad\x30\xde\x19\xbe\x0e\x9f\xf6\x5d\x25\x8f\x06\xeb\x71\xc2\x63\x5d\x36\xc4\x08\xa3\x79\xa1\x3b\x14\xc3\xef\xa5\xc4\x6f\x3f\xd5\x70\x6d\xac\xce\x07\x5a\x7c\x07\x8b\x2b\xe8\x58\x05\xa8\x09\x6f\xc8\x20\x31\x8c\x8e\xdc\xc2\xc2\x06\x66\x9e\xf8\x97\x75\xa9\x56\xf4\xff\xb1\xf7\x3f\xdc\x8d\xdb\x48\xde\x28\xfc\x55\x70\x3c\x7b\x5e\xdb\x89\x24\x77\x27\x99\x99\x6c\x3f\x79\x93\xe3\xd8\xee\x8c\x9f\x74\xbb\xbd\xb6\x3b\xb9\x73\xd3\xd9\x19\x88\x84\x24\x8c\x49\x80\x01\x40\xb9\x35\x9b\xfd\xee\xf7\xa0\x0a\x00\x41\x49\xb6\x65\x92\x6e\xc9\x8e\x38\xe7\x4c\xc7\x12\x05\x82\x85\x42\xa1\xfe\xfe\x6a\x23\x11\x92\xaf\x59\x1b\xf4\xea\x2e\xa1\x8d\xaf\x59\x8b\xa4\x53\x7f\x2d\x80\xfc\xda\x25\x04\x3d\xcd\xae\x69\xbb\xd5\x23\xdd\xc2\x1a\x3f\x02\x94\xf3\xf3\x8d\xa0\xd4\xaf\x0e\x57\xc1\x07\x82\x3b\x5e\x09\x8c\xc9\xcf\x6a\x67\x57\x10\x22\x04\xab\x3a\x81\x37\x7d\xd0\xc1\x29\x19\x1d\x91\xa6\x6d\x13\x2e\x82\x4b\xd8\xad\x5c\xdd\xad\x04\x2b\xe6\xf8\x07\x9c\xb9\xf4\x95\x87\x32\xd0\xa1\x73\xd6\xc0\x72\x58\xaf\xfe\x27\x84\x44\x7b\xe4\x9f\xe1\x43\xe8\x35\xad\x7f\xd9\xdd\xfd\xe6\xc7\x93\xbf\x7f\xbb\xbb\xfb\xeb\x3f\xe3\x6f\xe1\x28\xc4\x40\x79\xfd\x16\xc0\x75\x12\x32\x65\x67\xf0\x0c\xf8\xd3\xa9\x6b\x87\x18\x3c\x71\x5f\x40\x45\xf6\x00\xb3\x96\xc2\x9f\x85\x4c\xe7\xff\xd2\xad\x00\x01\x37\xf2\x60\x80\x25\x6a\x51\x59\x84\x57\x77\xc7\x43\x25\x4b\x3a\xde\xaa\x6e\x54\xcf\x8d\x00\x2c\x8d\x90\x64\xaf\x3d\x09\xa0\xbb\xa7\x87\x7e\x10\x50\x2f\x6f\x35\xd3\x3a\x3a\xe4\xce\xf4\x65\xab\x3e\xc6\x78\x75\x28\xda\xc2\x0a\x76\x4c\x30\xa0\x88\x6f\x18\x06\x1b\x39\x1c\xb0\x21\x61\x26\x74\x9f\x3b\x3c\x3f\x25\x53\xa4\xf0\xc6\x10\xc7\x07\x36\x5f\x3f\xaa\x8c\x0b\xe1\xd3\xf9\xba\xdc\x57\x98\x80\xe3\xbf\x77\x18\x09\x3a\x20\xd8\x31\x6b\xd8\xec\xe1\x87\x83\xa4\x28\x7b\xee\x86\x41\xce\x72\xa9\x66\xe1\xcf\x00\x36\xd3\xd7\x46\x2a\x3a\x86\x9a\x1a\xfc\x39\xfe\x2c\xfc\x85\x3f\xac\x3d\x60\xf1\xd7\x68\x0a\x57\x51\xd4\x00\x70\xfb\xfc\x64\x9b\x27\xfd\x86\x88\xb6\xa4\x2d\x8c\x52\xfd\xaa\x33\x64\xf0\xc4\xa1\xc2\x19\xa8\x08\xf6\xa4\xab\x19\xee\x55\xf9\x70\xe0\x0d\x10\x53\x6b\x59\x36\x06\xc0\xab\xae\x0e\xa5\x59\xca\xa7\x5c\xcb\x16\x95\x43\x61\xa0\xdb\x73\x27\x1d\x6c\x09\xe6\x6f\x05\xb7\xd9\xc7\x02\x30\xbf\xc2\x7e\x9d\x13\xfb\x2f\xdb\x34\x39\xc7\xab\xa0\xc6\x30\x25\x5e\x91\xff\xde\xfb\xf0\xf9\xef\xfd\xfd\xef\xf6\xf6\x7e\x79\xd1\xff\xcf\x5f\x3f\xdf\xfb\x30\x80\xff\xf8\x6c\xff\xbb\xfd\xdf\xfd\x1f\x9f\xef\xef\xef\xed\xfd\xf2\xe3\xdb\x1f\xae\xce\x4f\x7e\xe5\xfb\xbf\xff\x22\xca\xfc\x1a\xff\xfa\x7d\xef\x17\x76\xf2\xeb\x8a\x83\xec\xef\x7f\xf7\x1f\xad\xa7\xde\x01\x04\x2f\x5e\x5d\x02\xf1\xd6\x47\xec\x84\xfd\x1e\xb1\x95\x05\x5e\x9e\xbd\xba\xde\xff\x17\x5e\x6a\x46\xf9\x3c\xfe\xb8\xde\x98\x0d\x8e\x09\xa1\x9f\xc2\x93\x83\x4f\xaa\xd7\xda\x04\xd3\xe2\xb9\x9d\x73\x7f\x04\xe7\x8e\x57\xdb\x71\x5d\x2b\x4d\x74\xa4\x64\xee\x2b\xfa\x21\xbc\x81\xb5\x67\xee\xbe\x6b\xd6\xaa\x25\x28\x5e\x5b\x67\xd0\xd6\x19\x74\xcb\x75\xaf\x33\x08\xcb\x11\x36\xd7\x13\xc4\xc4\xb4\x69\x08\x63\x69\x04\xdd\xdb\x3a\x31\xfc\xdd\x6a\x01\xb5\x81\xdf\xea\x3a\x44\xe2\xaa\x4c\x1a\x3c\xd0\xf2\xe5\x31\x4c\x68\xe0\xcf\x05\x6e\x7c\x18\x20\x80\x7e\x32\xd7\xbb\xc3\xd5\x5f\x4e\xed\x14\x02\xd2\x7b\x0d\xbb\x13\xb2\x8a\xb9\x18\x3b\x24\x0b\x3c\x4a\x5c\xf4\x89\x8b\x0a\x0d\x37\x28\x87\x15\x84\x3a\xd5\x5a\x26\xd0\xf8\x08\x71\xf2\x02\x2a\x9f\x9b\x36\xcc\xc6\xd0\x6b\x16\xb7\x62\x47\x78\xf5\xea\x5d\x87\x33\x40\x7d\x15\x53\x0f\x31\x9f\x96\x98\x0c\x82\xe2\x6f\xf9\x18\xcf\x2b\x01\xc1\x32\xa2\x0b\x82\x45\x79\x08\x20\xf5\x83\x85\x4d\x21\x15\x43\x8e\x2a\x2f\x6b\xb3\x66\x96\xad\x4f\xf1\xf6\x67\x66\x88\x6c\xb5\x52\x86\x16\x0e\xcb\xca\xfd\x5c\x3f\x24\x9f\x43\x30\xb0\xfd\xf1\xf9\x87\x3b\x3a\x3b\x3a\x36\xbb\x39\x32\x1f\x10\x3b\xe9\xf2\x98\xec\x22\x58\x52\x28\x36\xe2\x1f\x3b\xda\xa7\x87\x51\x65\x22\x4f\x99\x30\x7c\xc4\xb1\x5f\x6f\xa1\x58\xc1\x04\xf6\xcc\xa7\xc9\x04\x64\xbf\x3b\x29\xab\xe0\xf4\x26\x26\xf3\xa0\xc2\xdd\xad\x28\xbb\x5c\xa6\xec\x6f\xe5\x18\xd9\xca\xb1\xc6\xd7\x27\x92\x63\x8e\x73\x37\x47\x88\x41\xe6\x79\xfb\xd4\xf7\xe3\x28\x8f\x1d\xb8\xb8\x7d\xe5\xf0\x1c\x1a\x5c\x90\x8b\x46\x62\xe6\x1a\x96\xaf\x29\x92\xb1\x29\xcb\x9c\xd2\x44\x72\x2a\xe8\x18\xdb\xf0\x19\x19\x40\x7f\xa4\x0a\x2d\x8e\xe6\x11\x7d\x40\x89\xf7\x95\x5d\xf0\xa5\x92\x59\xc6\x94\x26\x19\xbf\x66\xe4\x98\x15\x99\x9c\xe5\x2e\xf1\x35\x25\x97\x86\x1a\xcb\xd2\x97\xcc\x34\x8b\xf9\xb6\x43\x03\xf1\xc5\xec\x1d\x41\x9f\x63\x75\x3c\xd4\x96\x93\xc2\x15\x4e\xbe\x13\x20\x31\x0e\xa1\xdb\x4a\x8f\x9c\xb1\x29\x53\x3d\x72\x3a\x3a\x93\xe6\x1c\x55\xef\x7a\xb6\x1d\xde\x48\xf8\x88\xbc\xb2\x46\x9d\x36\xc4\x60\xc7\x8b\xa8\xce\x5d\xaa\xda\x00\x15\xde\x5b\x17\x65\x79\x8b\x25\xe7\x30\x52\x28\x38\x6f\x14\xc6\x68\xb5\x4c\xa1\xa5\x50\xeb\x05\x3a\xc4\x32\xd2\x0a\xc9\x37\xe2\x6f\x84\x67\xf0\x08\x66\x60\x02\x72\x41\x14\xd3\x85\x14\x9a\xd5\xe1\x19\xab\x16\x94\x60\xea\xea\x4e\x2d\xc4\xc6\x27\x67\xdb\x33\xb3\x90\xda\x40\xe5\x6c\x37\x8d\xaa\xce\xfd\x70\x50\x88\x4c\xb3\x8c\xa5\xb5\x4e\x65\xd8\x61\x87\xd6\xdd\x03\x09\x34\x67\xf0\x0d\x5f\x98\xab\x4f\xae\x95\x36\xd7\xee\x0f\x5d\xef\x7c\x5f\x19\xdf\x3f\xf9\xb6\x82\xe6\x6a\x63\xc2\x21\x12\x31\xc0\x02\xde\x33\xa0\x80\xeb\xa8\x39\xcd\x44\xca\x6b\x92\xc8\xbc\xc8\x60\xeb\xb4\xd8\x59\x55\x6f\xac\xc0\x4a\x7d\xe8\x87\x7a\x10\xb5\xcd\x82\x0f\xd6\xd8\xdf\xb4\x0b\x1d\x8c\x7d\x64\x49\x67\x7d\x35\xad\x2c\xb5\xab\x0c\xf1\x7e\x29\x82\x2a\x36\x92\xf6\x00\x83\xe2\xec\x80\x3f\x18\x81\xed\x9c\x7c\x64\x49\xd4\x9b\x16\x10\xb0\x12\x8f\x27\x61\x37\x7a\xfb\x9e\xe3\xad\xc3\x14\x5d\x85\x06\x5a\x14\xdf\xc5\xd7\x1c\x68\x20\x8c\xe9\x31\xd2\xdd\x23\xa0\xdd\x04\xd8\x4f\x58\x90\x17\x83\x6e\x04\x1e\xc6\x1d\xbb\x80\x34\x18\x92\xaf\xfd\x58\xd0\xd5\x47\x4a\x43\xf6\x76\x0f\x76\xf7\x17\x7c\x96\x73\x40\xdb\x57\xd1\x2f\x39\x20\x4b\x16\x00\xd3\xc8\x92\xdd\xb4\x47\xb8\xf1\xd9\xd9\xd8\x27\x08\x66\xe5\xaa\x04\x7b\x44\x4b\x62\x14\x4d\xb9\xd3\x7e\xe0\x53\x7b\x93\x51\xa5\x3b\x1c\xf6\x76\x7f\xdf\x75\x6d\x8a\x6e\xa4\xd8\x35\x30\xfd\x01\xb9\x42\x94\x9a\x30\xd0\x4c\x96\xd0\x7c\x13\x49\x50\x64\x3c\xe1\x26\x9b\x81\xa0\x23\xb2\xc4\x4e\x5d\xf6\x98\x71\xd5\x89\x27\x1f\xb9\xf1\x2d\x49\xe4\x88\xbc\xc0\x46\x61\x8c\x3a\xaf\x69\xc6\xa7\xec\x60\xc2\x68\x66\x26\x98\x58\x22\xa4\xe8\x63\xaf\x47\x2b\x81\xdc\x37\x6d\x63\x2c\xed\x5c\x90\xf1\xd5\xc2\x1d\xb9\x38\xa1\x96\xd6\x86\x95\xbd\x3f\x34\xef\x66\x4d\x16\xc0\xc2\xae\xae\xce\x7f\xa8\xb5\xb3\x06\xe1\x6f\x4c\xe1\xd3\x7d\xa2\xa6\xef\x1b\x20\x3b\xba\x09\x70\xb6\xea\x45\x4d\x3a\x14\x61\x6d\x7b\x52\x93\xe5\xe0\x6f\xab\x37\xa3\x26\x7f\x97\x25\x40\x87\xd0\x61\x36\x0b\xb8\x0d\x9a\x19\xb2\x63\x87\xda\xb1\xe2\xc9\x72\xc3\xdf\x18\x4d\x11\x56\x43\x1b\x46\x1b\x69\x7c\xf1\xd5\x59\xe0\x2d\x9a\x5b\xb7\xe7\x40\xa9\x8d\xcc\xc9\xc4\xbd\x76\xbd\x5c\xd3\xed\x8c\x01\xec\x1e\x5f\x0b\xa5\x58\x81\x12\xce\xfd\xe6\xd9\xc9\xaf\x05\xb9\x81\x74\xaf\xf5\x4c\x48\x62\xb2\xc5\x9d\x75\xb8\x40\x62\x21\x4a\x4d\x47\xb2\xb4\x83\x84\x09\xd2\x61\xd2\x04\x69\x57\xfc\x39\x3f\x10\x04\x02\xdb\xe7\x87\x75\x96\x87\x41\x3a\xcb\x35\x20\xcb\x1c\xb3\x8e\x67\xd0\x69\xd3\x11\x11\x3b\x8d\xf0\x93\xf6\xe5\xa5\xf1\x75\x37\x01\xba\x59\x7c\xd2\x25\x05\x8a\x0e\xd2\xc1\x17\x93\xc1\x11\x74\x0a\xca\x35\x51\xb8\x82\x98\xd0\x4c\x4d\x9b\x16\x80\x57\x57\x77\xaf\x2e\x9b\x3b\x0a\xfc\xb5\xa4\xb6\x5a\x11\x11\x1a\x5c\x7b\x50\xd5\x45\x82\x44\xd9\x0c\xae\x1f\xb6\x77\x01\xfb\xe3\x88\x8a\x31\x23\x2f\xed\x2f\xff\xf2\xe7\x3f\x7f\xf9\xe7\x01\x0e\x1f\x32\x1b\x04\x39\x3d\x3c\x3b\xfc\xc7\xe5\x4f\x47\x50\x50\xdb\x96\xaa\x1d\xa5\x6d\x76\x9d\xb4\xd9\x69\xca\xe6\xa3\x26\x6c\x42\x99\x48\x6b\x29\x52\x8f\x17\xc0\x90\x31\xba\xa8\xd3\xfd\x22\x54\x3e\xab\x6b\xd6\xfd\xaf\x76\xab\x6d\xc4\x1e\x33\x49\x71\x29\x93\xeb\x0e\xed\x9a\xdd\xab\xa3\x73\x1c\x32\x32\x6d\xa8\xf0\xce\x10\x2e\xa6\x32\x9b\x02\xfa\x2a\xb9\x3a\x3a\x87\x9d\x37\x80\xff\x02\x47\x14\x58\xd4\x33\x66\xaa\x42\x06\x17\x9e\x0a\x18\xaa\x50\xa4\x41\x33\xae\x0d\x4f\xe0\x77\x95\x9b\xd4\x8e\xd0\x26\x2e\xb5\xb5\x94\x96\x5d\x9d\x5b\x4a\x51\x93\xe0\x87\x1a\x4d\x6d\x13\x0f\x37\xf8\x5c\x72\xe7\x91\xaa\x75\xd1\xde\x9e\x4b\x1d\x8c\xb7\xb9\xe7\x52\xa1\xd8\xa5\x91\x8d\xba\x05\x90\xc5\x48\x08\x0e\x76\x4b\x1c\x64\xc8\x46\x52\xb1\xf9\x40\x48\x14\xd8\x48\x4b\xd8\x84\x54\x40\xf5\x9f\x77\x41\xc9\x5a\xf0\x02\x53\x2e\x7d\x87\xec\xcc\x61\xa2\x1e\xe8\x18\x08\xd5\xb7\x3b\xee\xd9\xb7\x63\x39\xcc\xae\x57\x95\x31\xb8\x66\xcb\xf0\x21\x33\x09\xba\x59\x7d\xfc\xc5\x79\x54\xfd\xf4\xe7\x43\x25\x89\xa2\x7a\x82\x8d\x88\xd9\x47\x6e\x02\xe4\x2a\xd5\x52\xa0\xb3\x37\xea\x89\xcc\x75\x84\xc9\x1d\x05\x79\xf0\x47\xe7\x32\x9d\xef\x39\x3e\x56\x34\x61\xa4\x60\x8a\xcb\x94\x40\x3d\x71\x2a\x6f\x04\x19\xb2\x31\x17\xda\xd3\x0f\xc0\xd9\x1d\xa1\xed\x71\xc3\xc0\x37\xec\xd1\xe2\x06\xe4\xa2\x06\x82\xe2\xca\x93\x12\x59\xed\x68\x37\x8b\xf9\x20\x13\x64\x84\x02\x79\xb1\x1b\x50\x58\x98\xb8\x41\xd2\x3d\x93\xee\x20\xda\x84\x3d\xbc\xfc\x77\xb7\x52\x87\x6b\x4b\xf5\x64\xd2\x2e\xf0\xbb\x0d\x4f\xad\x78\x6d\xc3\x53\x0f\xbb\xb6\xe1\xa9\x6d\x78\xea\xf6\x6b\xe3\xdc\xbb\xdb\xf0\xd4\xd6\xe8\x9a\xbf\xb6\xe1\xa9\x6d\x78\xea\x96\x6b\xe3\xe4\xd7\x36\x3c\xb5\xc2\xb5\x0d\x4f\xad\x78\x6d\xc3\x53\xdb\xf0\xd4\x36\x3c\xb5\x0d\x4f\xfd\x81\xdc\x80\xfe\xda\x86\xa7\x16\x06\xd9\x86\xa7\x22\x62\x6c\x2d\xa5\x25\xd7\x36\x3c\xb5\xe4\xda\x86\xa7\xa2\x6b\x7b\x2e\x35\x38\x97\x7c\x70\xe7\xdc\xda\x65\xed\x6b\xd6\xce\x21\x70\xc0\x13\x17\x23\x92\xa3\x5a\x9d\x13\x3e\x6a\x50\x35\xa0\x88\x30\x3f\x7c\xa9\x8d\x8b\x06\x55\x31\xa6\xa5\xf5\x50\x2d\xdb\xc3\x15\x32\xad\x82\x11\x51\x14\x02\xad\xd3\xe6\x35\x69\x6b\xab\xb6\x6a\x13\x7a\xd8\xe8\xb0\xc3\x86\x84\x76\x3a\x08\x35\x6c\xc3\x0c\xcf\x2e\xcc\xd0\x8d\x8b\xae\x03\xf7\x5c\xeb\x13\xc6\x05\xf3\xaf\x26\x8a\xe9\x89\xcc\x1a\x33\x7a\x8d\xc9\xdf\x72\xc1\xf3\x32\x87\xbe\xb1\x96\x9f\xf9\x34\x64\x0d\x84\xe6\xd8\x4e\xd0\xa3\xa7\x30\x6a\x30\xeb\x1b\xcb\x42\x59\xe7\x84\x82\xaa\xae\xcb\x24\x61\x2c\x8d\x5a\xde\x83\x62\xf6\xe5\x20\x3c\x29\xb4\xd3\x78\xd9\x4e\xde\xb4\x3b\xfb\x11\xa2\x14\x46\xf9\xf2\x8b\x46\x63\xb4\x8c\xf2\x7c\xfa\x08\x4f\x07\x62\xba\xbd\xbd\xd2\xca\x56\xe9\xe2\x94\x68\x6b\xa3\x3c\xb5\x48\x4e\x67\x11\xcd\x0e\x22\x38\x1b\x14\xbd\xd9\x98\x63\x61\x53\x22\x36\x1b\x88\xbe\xda\x41\x80\xa1\x8b\x08\x4d\x77\xd1\x99\x47\x00\x29\x7d\x9c\xa8\x4c\x87\xd6\x70\x47\xd1\x98\x4f\x11\x89\xe9\xe4\xad\xdb\x46\x60\x3e\x5d\xf4\xa5\x9b\xd7\x6d\xe9\xdd\x7a\x16\x11\x97\x0e\xbc\x5a\x5d\x7a\xb4\x3a\xf3\x66\x3d\x5a\x84\xa5\x7d\x74\x65\x03\x22\x2b\xad\x89\xcc\x05\x37\x9c\x66\xc7\x2c\xa3\xb3\x4b\x96\x48\x91\x36\x3e\x61\xe6\x50\xeb\xc2\xfe\xd1\x38\xac\xb3\xd1\xea\xf9\xc7\x13\xea\xc0\x79\x59\xea\x53\xaa\xbd\xfb\xcf\x29\x14\xd0\xd0\x04\x67\xb9\x91\x0e\x3d\xb2\x31\xc6\x20\x26\x63\x77\xb9\x88\x7f\x93\x37\x44\x8e\x0c\x13\x64\x8f\x0b\xbf\x8e\xfb\x91\x19\x58\x59\xe6\x81\xad\xed\xb7\x2f\x5f\xf8\x9b\x9f\x9f\xc9\x0d\xce\x05\xad\x1f\xdf\x03\xe2\x1e\x74\xbf\x0b\xc4\xdd\x38\x2a\xb3\xba\x1b\x04\x5d\x23\x75\x79\xf3\xb2\x82\x17\x7d\x09\xe3\x86\xdd\x46\x45\x4a\x5c\xe1\xc6\xf3\x5b\xb4\xd6\x71\xe3\xe7\x10\x33\xde\xfa\x5e\x48\xd7\xbe\x97\x35\xc5\x86\x37\x50\x6b\x7e\xa2\xf1\xe0\xad\xd6\xfc\x80\x2b\xaa\xff\xfa\x41\xd1\x84\x9d\x77\xae\x70\xf8\xed\x44\xd2\x52\xb9\xb2\xbd\xa0\x77\x84\xcd\x23\x18\x4b\x71\x37\x85\xa2\x38\xa8\x46\x1b\x95\x59\x36\x23\x65\x21\x45\xbd\xf2\x10\x83\x56\xf3\x05\x6b\x76\xb4\x65\x4f\xa9\xb4\xd4\x42\x49\x77\x00\xab\x52\x08\x2b\xcf\xab\x86\x43\xa0\x95\x6a\x94\xd5\x71\x59\x9c\xe6\x63\x3b\x7d\x7b\x98\x42\xc5\x1c\xcf\x59\xd5\x92\xa2\x1a\xd0\xfe\x7a\x24\x55\xc2\x87\xd9\x8c\x4c\x68\x16\xba\x4b\x50\x72\xcd\xb3\xcc\x0d\x33\x20\x97\xcc\x10\x33\xe1\xae\x31\x38\xc9\xa4\x18\xc3\xe4\xa8\xf0\x5d\xcd\x58\x62\x7f\x9b\x64\x8c\x8a\xb2\xc0\xe7\xd9\x63\x7d\x26\x4b\xe5\x9f\xe7\x60\x2d\xc3\x28\x5c\x13\xc1\xb3\x5e\xd4\x3b\xe9\xce\x85\xad\x1a\xd4\x6b\xe6\x6b\x0a\x6f\xb8\x66\xbd\x78\x4c\x8f\xcc\xab\xa3\xce\x19\x85\x92\x53\x9e\x62\xf7\x0b\x4f\x36\xe8\xd2\x8a\xdd\x31\xc2\x7e\x16\x52\xf4\x05\x1b\x53\xd0\x7a\xdc\x2e\xc2\x35\xc3\x71\x30\x14\x27\x52\xe8\x97\x61\xcd\x05\x59\xd4\x4a\x59\xa7\x1c\x3b\x7d\x46\x94\x23\x7b\x42\x12\x09\xc7\x6b\x29\xb8\xc1\xee\xd1\x93\xd2\x90\x54\xde\x88\xfd\x01\xa2\x12\x73\x4d\x28\x19\x32\xe3\x3b\xd9\xfa\xce\x8a\x5c\x31\x4d\x98\xa0\xc3\xcc\xae\x39\x24\x3c\x5c\x2d\x25\x10\x19\x31\x6a\x4a\xc5\xc8\x98\x1a\xb6\x54\x69\xc2\xf7\xbd\x9b\xbc\x5c\x87\x2e\xef\xa5\xd0\xac\x71\x7f\xeb\x8e\x35\xad\xbf\x7c\xd5\x4c\x46\xf0\x9c\xc9\xd2\x7c\x12\x53\xf2\x66\xc2\x93\x49\xac\x19\xf3\x9c\x69\x22\xcb\x39\x1b\xfb\xa5\xfb\xd9\xf2\x15\xda\xda\x93\xcb\xae\xa6\x5e\xe2\x25\xae\xb4\xf9\x92\xe3\xaa\xad\x2c\xb5\x1b\xf0\xf8\xec\xf2\x1f\x6f\x0e\xbf\x3f\x79\x33\x20\x27\x34\x99\xc4\xf5\xe8\x82\x50\x10\x1a\x20\x28\x26\x74\xca\x08\x25\xa5\xe0\xbf\x95\x88\x4e\x4e\xf6\xc2\x6f\xf7\x3b\xc5\x42\x6e\x78\xfa\x42\xeb\xeb\xce\x7a\x2d\x61\x23\x6d\x4c\x70\x90\x9a\x41\x77\x84\x79\xf5\xe9\xc4\x7e\x85\x86\x06\xa8\x5a\x13\x66\x85\x11\x9f\x3a\x31\xec\xc0\xa5\x69\x1a\x52\x2e\x2c\x9f\x5b\xb6\xb0\x47\x15\x1d\x42\xaa\xc4\x84\x11\xc1\x8c\x65\xeb\xe0\xb0\x92\x42\xd7\x80\x01\x4a\xcd\x74\x8f\x0c\x4b\x48\xee\x28\x14\xcf\xa9\xe2\xd9\x2c\x1e\xcc\x9e\x55\x67\xd2\x9b\x43\xb3\xf9\x29\x1d\xbf\x3b\xb9\x24\x67\xef\xae\x48\xa1\x10\x32\x00\xb2\x33\xe0\x7b\x78\xad\x21\xb3\xbf\x70\x3d\x3a\x07\xe4\x50\xcc\xf0\x4b\xdc\xe0\x5c\x13\x6b\x0b\x31\x38\x82\x9d\x0e\xe9\x41\xe1\x77\x5e\x0c\xe0\x7f\x3b\xf6\x2d\x95\x55\x32\x43\xd2\x49\xb2\x90\x3c\x86\x6a\x28\x1f\x66\x11\x35\xdd\xbb\x3f\xab\x6e\x4b\x21\x6d\xee\xdc\x12\x31\xea\xb6\x44\xc3\x52\x03\x79\xb1\xfb\x16\x17\xe3\x2c\xe6\xaa\x66\x62\xbf\xad\x6d\xd9\xd6\xb2\xec\x57\x6f\x70\xde\xd4\xc0\xec\xa4\xeb\x53\x35\x87\x8e\x7a\xa5\x54\xa7\x9f\x37\xa7\x9c\x44\x90\x71\xfb\xcb\xd3\x73\xbf\x03\x9c\x76\x93\xcf\xf5\x4c\x84\x1f\x63\x50\xa3\x47\x5e\x90\x6f\xc8\x47\xf2\x0d\x98\x57\x7f\x69\xdb\x59\xa6\xad\xe1\xd3\xde\xbd\x83\x56\xfd\xe9\x79\x47\x14\xff\xd9\x4a\x27\x3b\xa2\xa5\xaa\x91\x64\xc8\x9d\x3a\xcf\x3e\x1a\xa6\xac\x1c\x75\x2b\xb1\xd6\x9e\x3c\x76\x82\x9f\x90\xcd\x30\x76\x71\x3a\x8a\x5b\x42\x98\x07\x32\x9a\xfd\xf9\xdf\xa4\x36\x67\x4e\x0a\xd5\x1b\x4c\x54\xa3\xe5\xd4\x24\x93\xba\x18\xb3\x8a\x9a\x36\xd5\x06\xd3\x24\x95\xe0\x49\xc3\x3c\xc0\x09\x6f\x91\x89\xb1\x39\x6c\xdc\x2e\x38\x5f\x5b\xcf\xbb\x56\x6a\xce\x81\x02\x96\x8f\x53\xac\x22\x78\x99\x42\xa6\x4e\x27\xb3\xd3\x4a\xa3\x33\xe3\x0e\xa5\xcc\xf9\x6a\x82\xcb\x1a\x78\xc9\xee\xa7\x84\x0a\x4c\xe0\x1e\x31\xa5\x30\x75\x73\x38\x83\x08\x32\x4f\x58\xeb\xc5\x6b\xb5\x93\x0a\x25\x8d\x4c\x64\x8b\xb6\x41\xf5\x80\xb9\x1b\x0e\x88\x80\xce\x5f\xef\x73\x7f\x7f\x7c\xde\x23\x57\x47\xe7\xd0\x4d\xe5\xf2\xe8\xea\xbc\x6e\xa9\xec\x5c\x1d\x9d\xef\xac\x95\x14\xc4\x6b\x56\xaf\xec\x34\x1b\x0c\x52\x73\x3c\x59\xb5\xad\x9f\xd3\xa2\x7f\xcd\x66\x0d\xcf\xd4\x2e\xce\xf5\x7e\x58\xe1\x4e\x5e\x08\xc9\x9c\xd3\xe2\xc1\xa3\x29\x46\x53\xfe\x89\xaa\x28\xdc\xce\xaa\x9e\xb9\xbc\x9c\x22\x97\x53\x96\xa2\x3a\xec\x7f\xc1\x44\x5a\x48\x6e\xf5\xc5\x6d\x8d\xc5\xc3\x7f\xbd\xad\xb1\xb8\xeb\xda\xd6\x58\x6c\x6b\x2c\xb6\x35\x16\x77\x5f\xdb\x1a\x0b\x77\xad\xdf\x0d\x4a\xb6\x35\x16\x0d\xaf\xe7\x15\xe7\xdf\xd6\x58\x3c\xe8\xda\xd6\x58\x2c\x5e\xdb\x1a\x8b\x5b\xae\x6d\x8d\xc5\x2d\xd7\xb6\xc6\x62\x5b\x63\xb1\xad\xb1\xd8\x66\x8b\xdd\x3b\xd6\x66\x66\x8b\x91\x6d\x8d\x85\xbb\xb6\x35\x16\xcf\x22\x27\x86\x6c\x6b\x2c\x56\xba\xb6\x35\x16\xdb\x1a\x8b\x26\xd7\xb6\xc6\x02\xae\xad\xef\x65\x5b\x63\xe1\xaf\x6d\x8d\x05\x5e\x7f\x1c\xad\x79\x5b\x63\xb1\xad\xb1\xd8\xd6\x58\x6c\x6b\x2c\xee\x9c\xc5\xb6\xc6\xe2\x39\xd8\x93\xbe\x07\x5e\xfb\x9a\x81\xdd\x23\x99\x17\xa5\x61\xe4\xc2\x0f\x19\xb4\x48\x14\x0c\x5c\xc7\x1a\x41\xfb\x14\x9e\x44\x8a\x11\x1f\x3b\xc9\x7e\x80\x0d\xe6\xfa\xe1\x7d\xfa\x51\x53\xb7\x27\x98\xbf\x93\xf1\x9c\x37\x2b\xe4\x20\x0b\x0b\xf3\x06\xc6\x8a\x82\x3c\x76\x27\xe5\xf4\x23\x6c\x11\x9a\xcb\x12\x9b\xf2\x25\x6e\xfd\x02\x09\x31\x14\xb6\x71\x2b\x43\xba\x31\x71\xaa\x8a\x94\xf3\x0e\xac\x8d\x82\x1a\xc3\x94\x78\x45\xfe\x7b\xef\xc3\xe7\xbf\xf7\xf7\xbf\xdb\xdb\xfb\xe5\x45\xff\x3f\x7f\xfd\x7c\xef\xc3\x00\xfe\xe3\xb3\xfd\xef\xf6\x7f\xf7\x7f\x7c\xbe\xbf\xbf\xb7\xf7\xcb\x8f\x6f\x7f\xb8\x3a\x3f\xf9\x95\xef\xff\xfe\x8b\x28\xf3\x6b\xfc\xeb\xf7\xbd\x5f\xd8\xc9\xaf\x2b\x0e\xb2\xbf\xff\xdd\x7f\x34\x9e\x72\x6b\x95\xb8\x3b\x85\xb8\x23\x75\xf8\x51\x94\x61\x17\x1d\xee\x68\x2f\x5e\xb8\xd1\xe6\x77\xa3\x3b\xb0\xee\xda\x8d\x5e\x9a\x82\x9a\x17\xc6\xe1\x9a\xc8\x9c\x1b\xab\x1c\x5a\x7d\x90\xc6\x79\x61\xdc\xd4\x8c\x52\x27\x07\x20\xa1\x92\x1a\xec\x11\x1a\x72\xaa\xa2\x3c\x6d\xe9\x35\x3f\xd7\x7b\x35\xf8\x2b\x60\x3f\xf7\x53\x36\xe2\x82\xb9\x38\xd8\x56\x36\xdc\x7f\x6d\x65\xc3\x73\x94\x0d\x9a\x25\xa5\xe2\x66\x76\x24\x85\x61\x1f\x1b\x79\x58\xea\xa2\xe1\xb2\x3e\x20\xc1\x7d\xe6\xaa\x28\xdd\x77\x44\x16\x98\x40\x39\x57\xce\x1a\x52\x70\x55\x29\xc0\xc0\xc4\x2a\x19\x66\xd0\xfa\x03\xbb\x07\x72\x22\xe7\x1f\xe2\xed\x39\x34\x33\x7f\x2b\xf9\x94\x66\xd6\xda\xad\x7e\x71\x0e\x16\x4c\xfc\xa3\x55\xf7\xbc\xa1\xfa\xba\xda\xf0\xac\x6f\x75\xe8\x30\xe7\x03\xff\x4a\xf0\x11\xfb\x68\x9e\xa2\x96\x06\x0a\xd2\xb9\xe2\x53\x9e\xb1\x31\x3b\xd1\x09\xcd\x40\xae\x75\x73\x56\x1c\xde\x32\x3a\x2c\xbc\x92\x99\x26\x37\x13\x06\xdd\x95\xa9\x77\x01\x40\x85\xcb\x98\x72\x41\x72\xbb\x44\x85\xff\xb1\x46\x5f\x82\x15\xff\x05\x55\x76\x81\x83\xcf\x00\x4c\xe4\xa1\x94\x99\x4b\x1d\xce\x66\xd5\xf8\x2e\xf7\x5e\xc8\x7f\x08\x76\xf3\x0f\x3b\x9a\x26\xa3\x8c\x8e\x83\xab\x40\x33\xb3\xe0\xed\xab\x86\xbe\xf5\x05\x20\x2f\xb7\x64\x84\x66\x37\x74\xa6\x2b\xc7\x49\xdc\x07\xfc\x15\x79\xb9\x0f\xec\x4c\x35\x09\x63\xa4\xe4\x8b\x7d\x88\x25\x1e\x1d\x9e\xff\xe3\xf2\xef\x97\xff\x38\x3c\x7e\x7b\x7a\xd6\xee\xa4\xb0\xef\xce\xa8\x68\x34\x46\x42\x0b\x3a\xe4\x19\x6f\x73\x40\x2c\x64\x9b\xc4\x83\xc2\x11\x9c\xa6\x07\xa9\x92\x05\xd2\xc9\xfb\xa8\xaa\x93\xb2\x6e\x05\xc7\x95\xc9\xb0\x3c\xa3\xfa\x80\x63\x45\x85\xa9\x9c\x35\x15\xc9\x55\x29\xac\x61\xfd\xc4\x13\xf3\x69\xda\x5d\x52\xfe\x61\x9a\xb2\xb4\x46\xbd\x67\x97\x04\x78\xe4\x5f\x6e\x56\xd5\x68\x93\xf3\x77\x97\xa7\xff\xcf\x1c\x1b\xce\x8a\x76\x39\x4f\xdd\xd4\x85\x29\x59\x74\xb6\xba\x17\xae\xee\x68\xbb\xbe\x1b\xb1\xbe\xe1\xac\xea\x26\xd2\x7e\x51\x8a\x3a\x8c\x47\x35\x3e\xc9\x65\xca\x06\xe4\x3c\x78\xe9\xeb\xdf\x46\xe5\xbd\x54\x31\x62\x6f\x11\x86\xd3\x2c\x9b\xc5\x0a\x92\x91\x58\x4c\x53\xab\x4c\x8e\xe5\xf0\x88\x66\xba\xa5\x30\x6d\x73\x32\xd9\x43\xf8\xad\x35\x26\x3b\xa1\x66\x18\x8d\xa4\x4c\x48\xe3\xb4\x52\x3b\x4b\x28\xd6\x56\x32\x21\x68\xb9\x46\x69\x51\xb5\xd3\x45\xa3\xa3\xdf\x1f\x4c\x5c\x7b\x5a\x9d\x87\x91\xd1\xcb\x5b\x6a\x36\xaf\xdd\xba\x83\xa9\xb2\x65\xed\xe8\x8a\xd1\x14\x6a\xd2\x0a\x6a\x26\x98\xd5\x90\x53\x7d\xcd\x52\xfc\xc0\xe9\x35\xc1\xcd\x6f\x47\x0c\x8f\xba\xb2\xf3\xf6\x3e\x7d\xd0\x67\x30\xd7\x02\x62\x01\xcd\x40\x37\x48\x17\x5b\xc0\xbe\xd3\x3b\x91\xcd\x2e\xa4\x34\xaf\x43\x2d\x56\x27\x0b\xf8\xb3\xd3\x14\xeb\x6e\x58\x50\xa5\x20\x09\x21\xed\x03\x31\x81\xa5\xe3\x32\xb0\xe3\x6a\xc1\xd6\xcc\xd0\xaa\x14\x87\xfa\x07\x25\xcb\xc6\x27\xc0\x82\xa2\xf5\xc3\xe9\x31\xec\xe3\xd2\x45\xd9\x84\x51\x33\xa8\x3a\x5d\x04\x0c\x0a\x3a\xed\x7b\x17\x27\x8c\x39\xb2\x0a\xe9\x90\xb7\x74\x46\x68\xa6\xa5\x57\x8e\xb9\x58\x6a\x40\x39\xeb\xcc\x7e\x3d\x94\x66\xb2\x60\x96\x59\x76\x5e\xfc\x5d\x2f\x0a\xba\x55\x08\x46\x5c\x2c\xfc\xdc\xd0\x6b\xa6\x49\xa1\x58\xc2\x52\x26\x92\x96\xab\xb6\xee\x50\x13\xac\xfc\x99\x14\x76\x5b\x74\xb2\xf6\xa7\x21\xc6\x08\x8e\xb0\xfa\x4a\x43\xb4\xd2\xd9\x1d\x14\x62\x96\xb0\x29\x4a\xcd\x14\x06\x58\x55\xc9\x70\x21\x7e\x2c\x87\x2c\x63\x06\x8d\x21\xc0\x9d\xa0\x06\x0d\x69\x9e\xd3\x31\x23\xd4\x04\x46\x31\x92\x30\xa1\xad\xb8\x41\xd7\x9b\x21\xa9\x64\x55\x01\x25\xd5\xe4\xfd\xe9\x31\x79\x41\xf6\xec\xb3\xf6\x61\xf9\x47\x94\x67\x10\xce\x34\x54\xcd\xcf\x91\x8f\xfc\x10\x30\x25\xe0\x3d\x22\x15\x6e\xd1\x1e\x11\x92\xe8\x32\x99\xf8\x39\x59\x8b\xcb\x1b\x6c\x2e\x9f\x0f\x9c\xfa\xcf\x90\x55\x5b\x0b\x98\xf7\x9a\xa9\xce\xe4\xcb\xfb\x06\xf2\x25\x56\x21\x2c\xcf\xd5\xa9\x87\x8c\x95\x33\x43\x53\x6a\xa8\x93\x3b\x55\xd5\xf5\x73\x5c\xd2\x75\x4b\x1f\xcd\xde\x70\x51\x7e\xc4\x8c\x95\xee\x8c\xfc\xcb\x13\x18\x96\x24\x9e\x68\xb0\x68\xb4\x28\x32\x8e\xf5\xce\x73\x19\x54\xa7\xb5\xa5\xee\xdd\xa2\x22\xc1\x36\xa7\x59\x26\xad\x78\xb3\x27\x3b\x15\xa9\xcc\x17\x1e\x66\x15\x28\x56\x03\xba\x1b\x90\x67\xc9\x3c\x6b\x77\x47\x64\x6c\xca\x5a\x60\xba\xcc\xe3\xf2\xd9\xd1\xac\x2e\xe6\x17\x14\x86\x27\x19\x1d\xb2\x0c\x4f\x16\x64\x20\xbd\xc8\x40\xeb\xce\x42\x54\x32\xeb\xae\x06\xe3\x42\x66\x0c\xd3\x7a\x3c\x21\xec\xf0\x4f\x82\x0e\x30\x48\x57\x74\x00\x43\xa6\x46\x07\x30\xc9\x9e\x02\x1d\xca\x16\x07\x2d\x99\xa7\x83\x3d\xb5\xeb\x74\x80\xa3\x73\xd3\xe9\xa0\x59\x92\xc8\xbc\x38\x57\xd2\x9a\x5c\x9d\x1d\x2d\x6e\xd8\x2a\x56\x84\x36\xf9\x92\x24\x1c\x10\xe5\xf5\x9b\xa9\x8a\x12\xfa\xa8\x41\x19\xef\xb3\xfa\xfe\x7f\x71\x87\x64\x2b\x7a\xe6\xcf\x21\x3f\x4a\x2d\xac\x64\x7f\xe9\xbe\x78\xe2\x70\x02\x2d\xbc\x64\x9d\x1c\x26\x32\xa1\x19\x40\xee\xb5\xe3\x18\x32\xcf\x35\xf3\x03\x47\x59\x98\x10\x5a\x82\xcf\x7c\xdc\x1f\xd0\xd7\xe0\x13\xe7\xfb\x12\x32\x65\x51\x08\x12\xd3\x47\xaf\x30\x5b\x0f\xee\xf3\x09\xa0\xf6\x54\xf7\xd1\xc0\xb4\xf6\x6b\x23\x1d\x02\xcc\xdb\x00\xe4\x67\x27\xc8\x44\xca\xc5\x18\x3c\x3a\x3d\xa2\x58\x86\xa9\xa3\x6e\x0f\x5f\xa3\xf9\xb5\x0b\x1c\xed\x07\xf5\xec\xec\x1f\x0d\x9a\x10\x97\xc2\x8d\x0c\x4e\x0e\xaf\xdf\x8c\x50\x5a\x72\x4d\x76\xde\x78\x02\xb4\x40\x3e\xdb\xc4\x03\x62\x07\xdf\x30\xac\x26\xfa\xd8\xae\xb9\x48\x5d\x96\x65\x8d\x58\x01\xa3\x16\xb5\x50\xc8\xdf\xe5\x69\x2c\x1a\x5e\x91\x0f\x82\x04\x62\x91\x7e\x63\xf6\xb8\x40\x85\xd5\xbb\x97\xfa\x77\xbb\xfc\xc2\x43\xe6\x87\x79\x2f\x60\xed\xed\x73\xfb\xd6\xec\x5d\xbc\xcf\xbf\xcb\xce\x3a\xd7\xf5\x86\x8b\x54\xde\xe8\xae\x6d\x88\x9f\x71\x58\xaf\x50\x27\x96\xad\x0d\x17\x63\x1d\xdb\x11\x34\xcb\x6a\x6e\xd8\x65\x86\x84\x5f\xe1\x80\x48\xbc\xa8\xc0\xcf\x65\x87\x6f\x8d\x80\x07\x5c\xe3\x5c\xd3\x23\x65\x5f\xc5\x70\x9a\x5d\x16\xcd\xa1\xd9\xc8\x3c\x1b\xfc\xf0\xf6\xf2\xb0\x3e\xb4\x95\x67\x37\x80\x78\x6d\x89\x6d\xbf\x27\x34\xcd\xb9\xd6\xe0\x06\x62\xc3\x89\x94\xd7\x64\xcf\xa7\x6d\x8c\xb9\x99\x94\xc3\x41\x22\xf3\x28\x83\xa3\xaf\xf9\x58\x1f\x38\xa6\xed\xdb\xd9\xef\x13\x2e\xb2\x90\x8d\x02\x66\xa4\x30\xda\xbb\x31\xe0\x21\x49\x98\x05\xac\xad\xc3\xeb\x74\x51\xe6\xc5\x69\x22\x42\x27\x67\xd9\xfa\x01\x67\x16\x97\xe7\xac\x25\x76\xc6\x3d\x4b\x04\xef\xee\x4a\x53\xe2\x32\xaa\xa5\x74\x44\xed\x6d\xed\x44\x72\xda\x41\xc2\x74\x77\xa8\x3c\x7f\xab\xc6\x24\x29\xc3\xea\x09\x06\x59\x27\xf4\xd6\xe4\x26\xf0\xca\xee\x42\x11\x9e\xfb\xe9\x6e\xac\xd1\x42\xd4\x07\xcb\x3c\xac\x3d\x90\x15\x13\xda\x47\x23\xd9\x8a\x24\x90\x61\x5e\x07\x98\x48\x21\x5d\x72\xba\x3d\x05\xa5\x00\x96\x06\x6b\x01\x03\x41\xb0\x26\x4e\xc6\x46\x53\x3d\xaa\xe2\x83\x71\x0c\x09\x8a\x78\x10\x04\xa0\x9a\xc3\x0d\x37\x13\x8f\x70\x5f\x0b\x38\xc1\x4c\x14\xd3\x10\x3d\x10\x84\x29\x25\x95\x4b\x84\xf1\x5e\x5b\x18\x09\x44\x31\x64\xd2\x58\x26\xa1\xf6\xaf\x5d\x1d\x87\x28\x2b\x08\x5c\xc8\x13\xb3\xdc\xc4\x46\x23\x96\x80\xa6\x14\x13\x18\xc5\xee\x5e\x85\xdc\xe7\xb2\xbb\x2d\x83\x39\x08\xdd\x9c\x7f\xb4\x4f\x89\x7f\x15\x07\x43\x1d\x62\xde\xf2\xaf\xf7\x07\x84\x9c\x8a\x90\x39\xd9\xb3\xab\x18\xdf\xe9\x53\x7e\x8c\x7d\xc5\x18\x7f\x19\x5e\x20\xf6\x3b\x59\xf5\x4e\x95\x1d\x70\x7c\x1b\x67\x30\x89\x1d\xc2\x9d\x8a\x03\x70\x0c\xbb\x41\xed\xd2\xfb\x43\xbc\x8d\xa3\xd8\xde\xf2\x58\xce\xe2\xa7\x71\xd2\x93\xb6\x72\xce\x95\xc4\x77\x04\x8a\x7b\x19\x8d\x16\xa9\xdf\x21\xdc\x74\x2e\x53\x84\xc4\x08\x25\xfd\xd0\xcb\x02\x20\x3a\xf8\xbf\xbd\x82\x55\x29\x69\x42\x62\x56\x76\x8c\x95\xe1\x30\x41\x53\x62\x75\xe5\xcc\xdb\xf6\x79\x91\x31\xa8\x9e\x8b\x46\xae\x0a\x03\x23\x14\xdd\x5e\x98\x48\x05\xc4\xeb\x10\x3a\x7a\xe4\x5f\xb0\x29\x43\x02\xa0\x07\x0f\x38\x0f\x3f\x47\x13\x8f\x6b\x0f\xa9\x0d\x95\x6d\x46\x7a\xd7\x01\x49\xf9\x68\xc4\x7c\xa2\xa1\x35\xfd\xa8\xa2\xb9\x15\xf1\x9a\x38\x12\x0c\xd9\x98\x63\x26\x5b\x10\x6c\xbb\xba\xaa\x80\xef\xa1\x30\xe4\x86\xe4\x7c\x3c\x41\x46\x21\x14\x2a\x23\x89\x0f\xa9\x65\x92\xa6\x04\x78\x5b\x2a\x72\x43\x55\x6e\xcf\x0d\x9a\x4c\x20\x3e\x47\x05\x49\x4b\x05\x30\x91\x86\xd1\x74\xd6\xd7\x86\x1a\xab\xea\x32\xe5\x2c\x42\x3f\xff\x2d\x94\xf0\x9d\xd7\x16\x4a\xf8\xf6\x6b\x0b\x25\xbc\x85\x12\xde\x42\x09\xdf\x7d\x6d\xa1\x84\xdd\xb5\xfe\x6a\x5f\xb2\x85\x12\x6e\x78\x3d\x2f\x38\x9b\x2d\x94\xf0\x83\xae\x2d\x94\xf0\xe2\xb5\x85\x12\xbe\xe5\xda\x42\x09\xdf\x72\x6d\xa1\x84\xb7\x50\xc2\x5b\x28\xe1\x2d\x28\xda\xbd\x63\x6d\x26\x28\x1a\xd9\x42\x09\xbb\x6b\x0b\x25\xfc\x2c\xa0\x9f\xc8\x16\x4a\x78\xa5\x6b\x0b\x25\xbc\x85\x12\x6e\x72\x6d\xa1\x84\xe1\xda\xfa\x5e\xb6\x50\xc2\xfe\xda\x42\x09\xe3\xf5\xc7\xd1\x9a\xb7\x50\xc2\x5b\x28\xe1\x2d\x94\xf0\x16\x4a\xf8\xce\x59\x6c\xa1\x84\x9f\x83\x3d\xa9\x4d\xca\x1b\x21\x9f\xad\x02\x54\xe1\x32\x43\xa2\xd2\xd6\x61\x39\x1a\x31\x05\x92\x0b\x9e\xbc\x90\x85\x10\x00\xad\x82\x2c\x73\x79\x06\x00\x8b\xa7\x18\x4d\x5d\xc2\xfb\x2d\x3f\x77\xb5\xb4\x80\x50\x56\x65\x6a\x9e\xbc\x7b\xdd\x0d\x2a\x46\xbb\x1c\x45\x98\xf3\x3b\x91\xb4\xcf\x55\xab\x08\xbe\xac\x00\xc3\xd1\x3d\xc9\xa4\x76\x19\xa6\x40\xac\x64\x42\x85\x60\xde\x78\xe4\x06\x9c\x32\x43\xc6\x04\x91\x05\x13\x28\xbf\x29\xd1\x5c\x8c\x33\x46\xa8\x31\x34\x99\x0c\xec\x93\x84\x27\x76\x95\x0d\xea\x3e\xd1\x46\x31\x9a\xfb\xbc\xd8\x9c\x72\x1c\x8a\xd0\x44\x49\xad\x49\x5e\x66\x86\x17\x61\x30\xa2\x19\x24\xb4\xe3\x41\x15\x88\x01\xe9\x25\x55\x0a\x69\xaf\x7a\x9a\x9b\x96\x8c\x41\x81\xc0\x74\xed\x01\x0e\x6a\x5e\x98\x59\xc8\xa3\x63\x64\xc4\x95\x36\x24\xc9\x38\x9c\xd6\xf0\x44\xac\x1d\x84\xf1\x7a\xfe\xac\x16\x6e\xa6\xda\x4d\x55\xa4\xa0\xb6\x16\x46\x63\x56\x5a\x35\xa0\x1b\x2a\xe5\xda\xa9\xf9\xba\x47\xa8\x87\xbc\x41\x42\xfb\x99\x02\xa9\xfd\xc9\x82\xa3\xbb\x8f\xa2\xe1\x22\x9c\xbc\x2a\x6d\xaf\x62\x74\x48\x31\xf6\xcc\xd9\xab\x65\x53\x57\x0a\x05\xa4\xbb\x2c\x6c\x03\x58\x00\xc1\xa6\x96\x07\x58\xc2\xec\xf9\x4a\x6f\xe1\xfa\x4f\xce\xf4\xd1\xa1\xf8\x96\x69\x4d\xc7\xec\xbc\x61\xd4\xe2\x36\x8b\x0c\x02\x17\xd5\xc2\x00\x2b\x64\x58\x9e\x16\x3e\xa9\xd2\x9c\xea\x6a\x10\xc9\x71\x4e\x41\xf9\xb9\x51\xdc\x18\x06\x8b\x0a\xe0\x48\x10\xf8\x9c\x2f\x40\xdd\x9d\x4b\x96\x7a\xeb\x07\xa9\x7e\x6c\x85\xba\x48\x31\x75\x69\xc8\xc8\x50\x71\x36\x22\x23\x0e\xf9\x50\x90\xa1\xd4\x43\xb8\x0f\x8a\x1e\x05\xad\xad\xbd\x2b\x85\xd7\x65\xfd\xbc\x06\xe4\x67\x37\x31\xa3\x4a\x91\xd0\x08\x04\x10\x4a\xb4\xf8\x88\x8c\x21\xc3\xc9\x69\x8b\x5f\xbd\xf8\xcf\xbf\x90\xe1\xcc\x1e\x69\xa0\x59\x19\x69\x68\x16\x5e\x32\x63\x62\x6c\x69\x85\xdb\xb3\x5e\x64\x14\x28\x00\x28\xe6\x38\xf1\x97\x5f\x5c\x0f\xeb\x67\xec\x41\xca\xa6\x07\x11\xfd\xfa\x99\x1c\x2f\xc3\x85\x6f\x9e\x32\xd9\xd0\x24\x5a\xc2\x66\x32\xe3\xc9\xac\x35\xa3\x79\xdc\x19\x32\x91\x37\xa8\xeb\x2f\xe1\x9e\x2a\x07\xb2\x90\x45\x99\xa1\x07\xfb\x75\x28\xcf\x2b\x35\x5b\xac\xc1\x59\xba\x2f\xc0\xe7\xea\x86\x98\xc7\x8b\xc5\xc4\x36\xff\x48\xe9\x72\xbb\x9d\x57\x30\xc0\xcf\x80\x21\xf4\x9a\x66\xd9\x90\x26\xd7\x57\xf2\x8d\x1c\xeb\x77\xe2\x44\x29\xa9\xea\x73\xc9\xa8\x95\x96\x93\x52\x5c\x23\x72\x75\x28\x11\x96\x63\xab\x5a\x15\xa5\xf1\x89\xc4\xcb\x5e\x18\x0b\x4e\xbd\x10\xf6\x66\x50\x35\x0a\xfb\xc8\x2b\x5b\xc7\x95\x4a\x20\x47\xc6\xe3\xeb\x98\xd9\xbe\x78\xf1\xd5\xd7\xc8\xba\x44\x2a\xf2\xf5\x0b\x48\x7e\xd4\x3d\xdc\xc4\x20\xdb\xec\x41\x91\xd3\x2c\xb3\x66\x43\xcc\x94\x96\xd0\xcb\x98\xf0\x93\xf3\xa0\x69\xcf\x6e\x2b\xab\x52\x57\x57\x7f\x07\x3d\x8a\x1b\xcd\xb2\x51\x0f\xab\x02\x82\x59\xb3\x0b\x07\xc3\xae\x93\x3e\x50\x9a\xb1\x01\x0a\xd0\x54\x66\x65\xce\x8e\xd9\x94\x77\xd1\xbc\xa2\x36\x9a\x37\xf5\x33\xae\xa1\x00\x63\x98\xc9\xe4\x9a\xa4\xee\xcb\x28\x8d\x65\x1e\x42\xb5\x39\x15\x9a\x26\xf4\xb4\x48\xe4\xb9\xf5\xfd\x6b\x29\x3c\x39\x2d\x8a\x90\xa3\xaf\xe8\x4d\x8d\x18\xb0\x27\xa1\xde\xb7\x25\x9e\x42\x6b\x37\x73\x5b\x27\x73\xdf\xbd\x91\x95\x9b\x8d\x87\x68\x9c\xc2\xd2\xde\x47\x5d\xcd\xbe\xb9\x63\xb2\xc6\x10\xd5\x80\x7e\x37\x14\xf0\xdf\x98\x9e\xbd\x50\x95\x14\x0a\x5b\x02\x63\xa0\x02\x60\xd9\x07\x44\x72\x73\x87\x6b\x07\xde\xcd\x76\xf9\x4b\x35\xba\x88\xe0\x55\xce\xa9\x71\x0a\xa1\x77\x5f\x53\x52\x30\xa5\xb9\xb6\xe7\xf2\x4f\xb0\xa1\x8e\x32\xca\xf3\xc8\x05\xb8\x1e\x22\xe0\xe6\x06\xe4\xcb\xf6\x92\xf2\x5c\xa6\x6e\x40\x10\x85\x88\xfa\xb9\x44\xad\xad\x6b\xb5\x1d\x1e\xa8\xeb\x16\x95\x3f\x55\xd4\xac\x4b\x4a\xfb\x49\x10\x95\x78\xd7\x73\x12\x90\xf0\x7e\x4f\x55\x3e\x86\xc9\x77\x24\x06\x40\x30\xba\xc5\xad\x4b\xc2\x9a\xf1\x88\x1b\x25\x52\xe9\x9d\x1d\x38\x20\x18\x52\xb7\x7b\xc2\xfd\x94\xec\xbe\xda\x5d\xab\x90\x44\x12\x29\x59\xd0\x71\xab\x1e\x06\x73\x94\x9a\x1f\x36\x2e\xf4\xb6\x66\x10\x7c\x1f\x60\x87\xe0\x2e\x96\x56\x40\x14\x00\x33\x82\xd1\x51\x4f\x60\x67\x20\x60\x3d\xe4\x0d\x9d\x11\xaa\x64\x29\x52\xe7\x5f\x0a\x0e\xbe\xb7\x73\x0f\x3e\x93\x82\x79\xc7\xf9\x7c\x9d\x38\x78\xf4\xb9\x20\x2f\x07\x2f\x5f\x3c\x97\x93\x0a\xde\x70\xee\xa4\x3a\x0b\x27\x15\xca\xa7\xb5\xbe\xab\x47\x3b\xee\xe8\x7d\xdf\x3a\x17\x4b\x05\x66\xcc\x3d\x58\x2b\x7c\x74\xa3\xb8\x61\x51\x6f\xa3\x3d\x30\x5c\xac\x7d\x18\x55\x45\xef\x77\x88\xe1\xdd\x4d\x19\xba\x2e\x87\x8f\x28\xb7\x9c\x80\x82\xed\xb6\xcc\xc3\xa5\xef\x10\x61\x31\xa1\x76\x76\xc8\x1e\xde\xb9\x8b\x95\x81\xfb\x6b\x65\x2d\x47\xb4\x93\x8f\x45\x0b\x8c\xb9\x1a\xe1\x4e\x3e\x16\x14\x7c\x70\x45\x87\x14\xfc\x9e\x4d\xe8\x94\x41\x45\x24\xcf\xa8\xca\x20\xe6\x78\x89\x73\x27\xc3\xd2\x10\x26\xa6\x5c\x49\x01\x09\x3e\x53\xaa\x38\xa0\x52\x28\x06\x95\xd5\xd6\x16\xfd\x8f\xbd\x9f\x0e\x2f\x20\xa1\x61\xdf\x95\x84\xbb\x59\x96\xda\xc3\x47\xc4\x33\x89\x86\xbb\x77\xf9\xfc\x3c\x2c\x0d\x41\xe6\xfa\x79\xd9\xe7\xe4\xa5\x29\x11\x10\xff\x63\x92\x95\x9a\x4f\xd7\x25\x49\x5c\xa9\xea\x31\x6f\xb4\xce\x73\x65\xb3\x15\xa1\x16\x2a\x60\xc1\xb5\x0e\x47\xcb\x3d\x08\xac\xbb\x3a\x60\x56\xc5\x31\x70\xe7\x7a\x72\xb5\xec\x98\x8b\xe7\x21\xcb\x16\x54\x08\xc0\x6d\x58\xaf\x13\x4a\xc8\x94\x3d\x1c\xf5\xa2\x9e\xde\xe3\x86\xc0\x98\x79\x54\x0e\xa8\x93\x09\x4b\x4b\x80\x57\xe1\x1a\xc1\x01\xad\xf9\x40\x2b\x18\x2b\x01\xfd\x19\x4e\x47\xa1\x36\x58\xf4\xc1\x39\x88\x34\xf7\xbf\x57\xbe\x92\xd8\x7f\xa0\xe7\x46\x04\xa3\xd4\x8e\xd5\x23\x54\xeb\x32\xc7\x2d\x81\xf0\xdb\x23\x6e\x74\xe8\xad\xe7\xb5\x63\xbb\x31\x1e\x58\x9d\xd5\x82\xbe\x97\x2c\x03\xe6\x6a\x41\xe3\xdd\xb3\x68\x1c\x24\xb4\xf6\x7f\x39\x86\x73\x09\x13\x10\x6d\x0b\x49\xa1\x12\xbc\xa4\x23\x0e\xed\x2b\xa8\xa3\xf7\xe5\x92\x5f\xa2\xea\x80\x77\x00\x3c\x03\x1d\xb2\x4c\xcf\x0f\x34\xac\x16\xc5\xc1\xfa\x39\xc2\xb7\xec\x0e\x48\xb5\xe6\x63\x01\x7d\xc3\xec\x68\x0f\xec\x10\xd6\xd8\x66\xea\xa2\xfb\x5f\x63\xa9\x56\xcb\xc2\xca\x69\xd1\x77\x56\xaf\x91\x39\x4f\x1e\x30\x92\x9c\x32\x35\x61\xf4\x81\x06\xdf\x5c\x5c\xcc\x8d\x51\xb5\x8e\xd1\xae\xca\xd1\xed\x1b\xff\x10\xbb\xbf\x64\x02\xd9\xf6\xe8\xa7\xf7\xd9\x4f\x14\x58\x04\x1b\x53\x8e\xf9\x94\x09\x0f\xfc\x77\x94\xd1\xd0\x7c\xcc\x43\x25\x39\xf0\xc1\xd2\xc8\x10\xf9\xb0\xe6\x54\x85\x5e\x06\x81\x52\xe7\x74\x8d\xc7\x89\x6e\x71\xad\xcb\x32\x0f\xd6\xbf\xca\x9d\x10\x7c\xc0\xd6\x1f\xbd\xea\x95\x72\x6f\xa0\xd5\xe0\x71\x48\x02\x21\xb2\xd0\x15\x14\x03\x11\xf7\x3f\xc2\xc5\xb5\x2d\x2f\x2e\x1b\xc6\xed\xb9\x80\xe3\x54\x11\x36\xb3\xca\xeb\x8c\x40\x73\x89\xd3\x51\xfd\x49\xbc\x06\x7d\x09\xd9\xd8\xb0\x87\xab\x43\xe5\x5c\xa6\x97\x05\x4b\x7a\x24\x2c\x65\xdc\xb9\xcd\x39\x6d\x30\xb5\x25\xc2\x6f\xc4\xe3\x48\x29\xa6\x0b\x89\x08\x9c\xf1\x63\xe3\x06\xa1\xdc\xd4\x22\xf6\xd8\x88\x00\x2c\xb4\x0a\x2b\xe1\xdf\x4c\xc9\xa5\x82\x60\xcc\xcd\xe0\xfa\x6b\x90\x02\x4c\x4c\xa8\x48\x50\x00\x1f\x5c\xb3\x42\x1f\x68\x3e\xc6\x4d\xff\x97\xaf\xbf\x06\x09\xe0\x49\x72\x70\x71\x72\x78\xfc\xf6\x64\x90\xa7\x4b\x8c\x38\x8f\xf5\x05\x61\xb1\x1f\xc3\x46\x22\xd3\x97\x83\x97\x5f\x63\xdc\x9e\x6b\x04\x20\x89\xe0\xbf\xb0\x26\x6d\x11\xfb\xeb\x5c\xa6\x81\x6e\x2e\x6f\xeb\x81\xd1\xc8\xb5\xca\xa0\x27\xd3\x77\xb4\x61\x46\x6d\xdb\x2c\xda\x56\x99\xb3\x1d\x66\xcb\x16\x8a\x59\xf5\x86\x4b\xd1\x24\xce\x5c\xb7\xef\xe6\x86\xf2\xce\x7b\xf7\x97\x15\xc4\xfe\x69\x62\x6c\x65\xb3\x46\x79\x9d\xc9\x1b\xc8\x0d\xe1\x52\x71\x33\x1b\x00\x54\x8f\x1c\x91\x33\x36\x65\xaa\xe7\x47\x7d\x63\x6f\x3a\x0f\xf7\xc4\x06\xc4\xb2\x3b\xa2\xae\x38\xb7\x6d\xd4\x1e\x19\xc7\x69\x08\x67\x52\x9c\x87\xd9\x85\x61\xdc\xce\xeb\x43\xc6\xe4\xa7\x50\xce\x3c\x19\x5a\xac\x03\xa2\x1f\xbb\x17\x70\x8d\x92\x7f\xa2\x8a\xcb\x52\x13\xf4\x89\xc7\x98\x83\x18\x47\x0f\x24\x02\xd5\xcc\x79\xb9\xc2\x20\x21\x3d\xde\x3b\xba\x02\x7d\x0e\xc3\x79\x73\xb4\xfc\x48\xe3\xc6\x2e\xfa\xd4\x3f\x4a\xf9\x7c\x9f\x05\xb8\x42\x3c\xcc\x96\x9e\x5f\xfe\x44\xd6\xf1\x44\x61\x18\x3f\x0f\x38\x1b\xac\xc2\x8f\xa3\x4c\xf8\xd8\x67\x95\xc1\xfb\xa3\xee\x1e\x7d\x1a\x98\xad\xc1\x92\x36\xd9\xf1\x4d\x93\x1b\x8b\xf9\xf7\x6b\xc1\x16\x75\x50\xb7\x18\x17\xce\xa7\x55\x57\x5b\x70\x07\xf9\x04\x0e\xc1\x7e\xa2\xb8\xe1\x09\xcd\x76\xe0\x08\xf3\x5f\x59\xdb\xdb\x30\x15\x7f\xab\x18\x31\x37\x12\x9f\x42\x33\x72\xcd\x66\x37\x52\xa5\x5e\xbf\xf0\x4f\xac\xd6\x42\x1b\xff\x48\xce\x9c\x2c\x40\x48\x2e\x95\x33\x45\x86\xcc\xbb\x11\xe6\x6e\x9e\x0d\xc8\xa1\x98\x39\x1f\xac\x88\x2b\x2d\xbc\x1a\x31\x9c\xa1\x8e\x83\x5a\x60\x8d\x49\xdc\x79\xe8\x9f\x46\xb1\x06\xe6\x36\x13\xdb\x2a\x90\x61\x17\x78\xed\xc5\xdb\xd8\x52\xb9\x54\x6f\xd8\x1d\x0a\x13\xd5\xa5\xff\xfa\x93\x48\x0b\xab\x9f\x71\xc1\xb4\xfe\xc1\x2e\x65\x1b\x75\xbb\xce\x1d\x14\xd4\x2a\x37\x36\xc8\xc9\x2a\xaf\x8a\xd9\x2d\x45\x7d\xcf\x77\x4b\xa1\x70\xe7\x80\x1c\xc2\x07\x90\x18\x68\x35\x47\x28\x25\xb0\x83\x59\x8b\x77\xae\xb7\x21\xde\x71\x78\x76\xec\x13\xb8\x50\xe9\xd0\x75\xcc\x46\x54\xf9\xeb\x33\x01\x4d\xd5\xa5\x11\xb1\xdf\x4a\x0a\xad\xaa\x76\xae\x54\xc9\x76\x9a\xa9\x7a\x88\x06\x7a\xf0\xe7\xaf\x5f\x80\xb6\x17\x9e\x07\x62\xff\x81\x59\xd1\x4d\x03\x85\x8d\x42\x84\xf3\xd1\xd1\x8b\x98\x1f\x3c\xc1\xbd\xdd\xe4\x3c\x77\x50\xe0\x04\xcb\x14\x68\xde\xc8\xbe\x6c\x14\x10\x6c\x1e\x0a\xec\x57\xd3\xbd\x7a\x78\x27\x84\x36\x51\xbc\xda\x73\xbb\x70\xf5\x55\xa3\xe1\xaa\x60\xa3\xe5\xea\x39\x51\xd0\x1e\xf1\x76\xdd\xc7\x90\x13\x04\x82\x0b\x5c\x23\x20\x1e\x67\x45\x8b\xfc\xa7\x06\xf2\x06\xd2\x7d\x5b\xab\x8a\xbb\x17\x38\x10\x29\x2a\xdd\x70\x21\x8d\x33\xb8\xb9\x41\xef\x70\x5a\xe1\x21\xe4\xc4\xf7\xc8\x3b\xf1\x1a\x93\x04\x7b\xa8\x28\xd6\xea\xb9\xf1\xa6\x4e\x6b\x25\x0e\xfe\xe4\xde\xbd\x8f\x53\x6e\x22\x14\x1e\x4e\xee\xc8\xf2\x6d\x79\xfa\xef\x5e\xcc\x8d\x55\x63\xbd\x9a\x65\xef\x4e\x48\x5e\x75\x50\x70\xe2\x93\x8c\x95\x2c\x0b\xef\x4e\xae\xb7\x43\xa8\x20\x84\xd1\x0b\x8a\xbd\xba\x84\xac\x0f\x1d\x9c\x37\xc0\xc0\xac\x42\x21\x4f\x49\x82\xe6\xbd\x3f\x75\x31\x15\x1c\x3d\x20\xaa\x14\xf5\x56\x83\x91\x43\x76\x27\x63\x63\x9a\xcc\x76\xea\xcf\x59\xe6\xfe\xe6\x90\xa1\xcc\x73\x84\x5f\xc4\xe7\x55\x89\x9d\x90\xff\x09\xfa\x03\xee\x35\x50\x0d\x42\x3f\x58\x7f\xe4\xfb\xca\x84\x09\x15\x29\xb8\x79\x1a\x7b\x16\xfe\xfc\xf5\x9f\xfb\x6e\xb4\x3e\x4e\x65\xbe\xc6\xcb\xd5\x6a\x2d\x75\x27\x7c\xd5\xc8\x15\xf0\x60\xfe\x0b\xde\xee\x4e\x55\xcf\xda\x12\x5b\x7d\x8a\xeb\x02\xd8\x01\xfd\x21\xe1\xf4\x0f\x4f\xbf\x4b\x3b\x5b\x3e\x48\xe8\x41\x1f\x86\xf8\x24\xe4\xaa\xe3\x4b\xb7\xd9\xad\xf3\x50\xd5\x13\x99\xa5\xb0\xaf\x9c\x93\xc9\x3f\x8a\x50\x63\x14\x1f\x96\xd0\x2d\x47\xa4\x00\x75\x5a\xaf\x33\x71\x5d\x39\x06\xa4\x2a\x34\x88\x8d\x67\x60\xfc\x01\x21\x97\xcc\xb5\x54\x8e\xe6\x01\x62\xd9\x93\x12\x0c\x29\xe0\x45\x68\xde\x87\x36\xdb\x27\x72\x48\x35\x3f\xbd\x47\x4d\xbb\xf6\xd6\x3b\xd9\x1c\x06\xa3\x46\x97\x85\x43\x3d\xa0\x19\xca\xc3\x85\x1e\x5f\x73\x07\x19\xa4\x60\x81\x44\xbc\x94\x79\x88\xd9\x5a\x5a\x68\x04\xe9\x03\x5e\xf6\xfd\x5c\x8d\x84\xfa\xa6\xb1\x73\xc5\xde\xd8\x21\x26\xbc\x40\x13\x9c\x9a\xf0\x73\x08\x7c\xd8\xaf\xe3\x72\x55\xe8\x90\xf3\x12\x6d\x60\x79\x03\x4e\xf0\x1f\x4e\x8f\xc3\x1e\xb1\x77\xbd\xbe\x04\x82\x90\x2f\x06\xae\x5d\x97\x19\xf3\x94\x0c\x31\xd8\x65\xc5\xeb\x9e\x60\x37\x98\x3e\xe7\xfc\xc4\x41\x0d\x9f\xfa\xb4\x32\x1c\x2d\x3c\xdc\x0d\xb9\x4f\xbe\x74\x9d\x97\x98\xf2\x46\xfc\x90\xbb\xf4\x9a\x77\x17\xbb\xde\x3b\x7f\xd3\x57\x37\xfd\x7e\xbf\x6f\xe7\xea\x85\xfa\x92\x9e\xb6\x76\xbf\xe7\x32\xe5\xa3\xd9\x1c\x25\x2c\x9b\x57\x8f\x00\x8e\xa4\x62\xe6\x66\xd7\xa0\xd5\x4e\x3b\x3f\x5e\x9b\x0a\x54\xc7\x9c\x47\xb0\xde\x4d\xcb\x3c\xea\x72\x63\xc9\x90\xce\x2a\xd6\x64\xc8\x26\x74\xca\x25\x14\xa6\x02\x8f\x41\xc2\xe0\x2d\x74\xf5\x3e\x1f\xb7\xe8\x0e\xeb\x08\x6d\x72\xf6\xb1\x90\x88\xa4\x08\x09\xb9\xd0\x24\x62\x3e\x98\x02\x6e\x6e\xbb\x29\x20\xaf\xa0\xc6\xf4\x4e\x7d\x40\x34\x11\x4f\x04\x32\xa4\x76\xc8\x30\x9d\xbd\xb9\x65\xde\x1f\x90\x53\xc7\x19\x60\xfe\x09\xe9\x5a\x4d\x10\x29\x08\x2b\x26\x2c\x67\x8a\x66\xf5\x07\xb9\xc2\xa4\x57\x56\x5a\x2a\xcb\x64\x18\xb0\xc8\x69\x81\xc2\x12\x64\x5f\xca\x95\xef\x35\xe5\x44\x9c\xe5\xd7\x9d\x77\xd0\xf1\xf9\x2d\xd7\xa0\xa9\x38\xd7\x07\xea\x95\x3b\xcb\xce\x23\xff\x5d\xc8\xf2\x7a\x78\xe5\x50\x0b\x87\x70\x9b\xfe\xe4\x6b\xea\x4c\xbe\xee\xde\xae\x2e\x8e\x4c\x4d\x9b\xf4\xd8\xf5\xc9\x8e\x76\x7d\xc9\xb7\x1d\xc9\x57\xe9\x48\xbe\x6e\x16\x6d\xca\x8f\xcd\x92\xfe\x5a\xb4\x20\xdf\xc8\xe6\xe3\xeb\x5e\xbd\x27\x2e\x60\xda\xb6\x1e\x7f\x78\xd3\xf1\x55\x9a\x05\x3e\x7a\xd7\xf1\x67\xc4\x35\x0d\x2b\x36\xda\x15\x3c\xb4\xe8\x39\xbe\xd6\x6e\xe3\x2d\x13\x7f\x9b\x77\x18\x5f\x6b\x6f\xf1\x96\x6f\xdd\xbc\x5d\xec\x5a\x3b\x89\xb7\x7c\xeb\xe6\xdd\xc3\xd7\xda\x37\xbc\xc5\x5b\xb7\xed\x15\xfe\xa0\x2e\xe1\x6c\xce\x79\x12\x3c\xca\x9f\x56\x0c\xb6\x29\x5a\x6b\xd8\xac\xbb\xa5\xe4\xed\xa4\x41\xf7\xb6\x35\x77\x97\xad\xb9\x37\x43\xbe\x6e\x1b\x71\xb7\x6b\xc4\xdd\x46\x72\x46\xee\x62\xf0\xcf\xb4\xd5\xa4\x0f\x03\x32\x04\x38\x9f\x6b\xdd\xb6\x2b\xf4\x28\x67\x54\xb9\xae\x66\x73\x8a\x6f\x0f\x56\xc7\xe5\x78\x2e\x1c\x2e\x98\x07\x94\x53\x35\x23\x3f\x9c\x1e\xa3\xfe\x5b\x53\xc3\x85\xf4\x8f\x0e\x9c\x92\x3a\x80\x20\x2a\x66\xed\xd5\xd6\x66\x35\xd6\x8d\x2b\xac\xdb\x62\xd7\xb5\xb2\xb1\x66\x3a\x31\x59\x5b\x96\xb8\xc4\x51\x20\x46\x44\x68\xe0\x0f\x41\x73\xa6\x0b\x9a\x58\xe9\xe7\xee\x80\x40\x6d\x54\x3f\x31\xb0\x96\x8b\x0b\x82\x96\xa2\xc2\x77\xf6\xf7\xef\xcd\x1f\xc8\x7e\x4b\xee\xbb\x62\x22\xef\x95\xc9\x68\x29\x92\xc9\x13\x59\xf1\x25\xc4\x0b\x3e\x72\x4a\xae\x99\x12\x2c\xab\x7a\x86\xfa\x1a\x13\xd6\xa4\xf6\xbd\x65\xe9\x7c\xbb\xc2\xf9\x16\x45\xef\xcd\x5b\x00\xb5\x2d\x97\x6f\x53\x84\xbc\xa4\x2f\xca\x08\xcf\x26\x3b\xa5\x99\x6b\x97\xd5\x70\xf0\xd6\x95\xa1\xad\x9a\xfa\xd4\x51\x20\x10\xc2\x76\x23\xde\xcd\x35\xea\xef\xce\x4d\xe4\x5b\x52\x87\x82\x3c\x1f\xc1\x7e\xa8\xab\xc8\x2b\x2c\x8b\x30\x18\xbb\x7a\xc1\x0d\x53\xc7\x0c\x7e\x1a\x6e\xde\xb5\xf8\x77\xc6\xb9\xa6\x47\xca\x4e\xdc\x70\x9a\x5d\x16\x4d\xdb\xf3\xd6\xd6\xfd\x87\xb7\x97\x87\xf5\x41\xad\xf6\x7d\x03\x49\xb5\x96\xa8\xf6\xfb\x28\x35\xfc\x86\x0d\x27\x52\x5e\x93\xbd\x28\xe5\x66\x52\x0e\x07\x89\xcc\xa3\xfc\xae\xbe\xe6\x63\x7d\xe0\xf8\xb3\x6f\xe7\xbd\x4f\xb8\x00\x30\xb6\x45\x10\x3b\xff\x90\x24\xcc\x02\xd6\xd0\xe5\x26\xb9\x63\x70\x71\x9a\x20\x64\x30\x15\x62\x1d\xf6\xc1\xe2\x62\x34\xef\x16\x7f\xcf\x82\xf8\x6a\xda\x18\x73\xe8\x56\xaa\xa1\x39\xbf\x16\x92\x4c\xaa\xb6\xff\x1d\xd0\xe1\x6f\xd5\x68\x31\x76\x08\x1f\xd5\x60\x4d\x2b\x3b\x23\x04\xca\x76\xa1\xbd\x82\xfb\xe9\x6e\xec\x74\xae\x97\xa3\xd0\xac\x98\x84\xc2\x31\x11\xc7\xce\x87\x2c\xae\x12\x8b\x0a\x36\xe6\x0b\xc5\x9c\xc0\x8c\xa6\x7a\x54\xf9\x4f\x7c\x16\xd9\x28\xa3\x63\x80\x67\x9f\xab\xba\x00\xe9\x08\x2d\x88\xad\xed\x10\xdd\xec\x4b\xeb\x3c\xf4\x30\x20\x1f\x6a\x4c\xe8\xf6\x81\x34\x97\x9e\x0f\xf1\xff\x43\x3b\x6f\xdf\x4b\xbd\x96\xeb\x0d\x56\x7e\x28\x2e\xd4\x96\x77\x30\x72\x6f\x6d\xf6\x98\xc0\x28\x3a\xf7\xaa\x9e\xcc\x90\x1d\x83\x02\x1f\x7e\x4f\x49\xce\x3f\xda\xa7\xc4\xbf\x8a\xb3\xca\x5d\x2f\xe4\xe5\x5f\xef\x5b\x5b\xa6\x32\x7c\x7a\x76\x15\xe3\x3b\x23\x58\x60\x01\x5f\x9c\x61\x5a\x38\xbe\x40\x1c\x26\x70\x08\xbf\x6d\xf8\xbb\x39\x2e\x47\x08\xd3\x75\xb4\xd5\x21\x5c\xe7\x86\xb3\x0b\xed\xcf\xdf\x36\xe1\x3b\x7b\x4b\x17\x21\xbc\xc5\x43\x76\xf3\xcf\x66\xd2\x26\x7f\x50\x4d\x79\xc2\x0e\x93\x44\x96\xa2\x55\xfa\xe0\x31\xb3\xaf\x40\x0d\x4b\x2f\x6b\x63\xa2\xbf\x39\x85\x6f\xb1\x62\x9a\x66\x9c\x62\x4d\x7d\xfd\x4e\x2c\xa6\xaa\xc6\x01\x7f\xf5\xdc\x0c\x1d\xcb\x60\xbb\xdd\x4f\x93\x90\xba\xf0\xfc\x76\x49\x96\x8b\x6f\xb3\x78\xc2\xcd\x51\xd0\xb9\xaa\x17\xd2\x9d\x57\xcb\x35\x37\x54\x5f\x57\x48\x03\x0c\xca\x4d\xc2\x66\x8a\x3e\x77\x2f\xda\xa7\xf8\xd4\x46\xe8\x03\x0d\xa8\x6b\xac\xdc\xb3\x2f\x7f\xa8\x5f\xff\xd7\xf1\x59\xbb\x94\xdf\x00\xb2\x8e\x75\x0c\x13\x37\x74\xd0\xb5\xe3\xf2\xf1\xb8\x0c\xcd\x3e\xb9\x47\x14\x75\xf8\xb1\xae\x77\x48\xc6\x28\xfa\x34\xc8\x5e\x94\x91\xbd\x3f\xb0\x32\xbd\x0a\xf5\xa2\xa8\x77\xad\x3e\x72\x46\x85\x8e\x4a\x0d\x19\x0c\xed\xd3\x19\xc3\x7c\xf0\x20\x74\xab\xed\xcc\xff\x3d\xef\xb3\xac\xdf\x81\xad\xff\x49\x69\xb4\xfd\x1c\x1f\xee\x05\xe6\x0a\x8f\x57\x6c\xcc\xb5\x51\x33\xdf\x84\x64\x14\x4d\xc2\x79\x65\xc2\x2d\xd7\x6c\x46\xfe\xf6\xe3\xc9\xdf\xff\xf1\xe6\xdd\xd1\xe1\x9b\x7f\xbc\x3d\x3c\xfa\xdb\xe9\xd9\xc9\x87\x0f\x97\x7f\xbf\xbc\x3a\x79\xfb\xe1\xc3\x51\xa9\x14\x13\xc6\x95\x5d\x5e\x32\xf3\xe1\x83\xe3\x54\xfd\xe1\xc3\x55\x52\xf0\xe2\xc3\x87\x73\xef\xc4\x40\x78\xe1\xff\x3a\x3e\x03\xf9\x89\xd5\x3f\x21\xe5\x06\xce\x56\x24\x3a\xcc\x7b\x42\x75\x95\x5e\x57\xab\xab\x68\x00\x49\xd5\xf4\xb8\xd3\x13\xaa\x98\x3b\x9a\xcf\xbc\x27\xab\xd5\x66\xb7\x03\x56\x7d\x01\xbc\x87\x34\x78\xc9\xc8\x90\x99\x1b\xe6\xca\xd5\xe6\x8f\xb9\x38\x8b\xf7\x67\x6c\x8f\x83\xc9\xfa\xf6\x28\x5a\x82\x3d\x8e\xca\x99\x24\x53\xce\x6e\x10\x1b\x01\xdb\xbc\x54\x00\xf8\x50\xbe\x8a\x25\x8c\xf3\xe1\x2e\xa7\x24\x15\x32\x0d\x60\xff\x73\x6e\xdd\x05\x97\x6e\xad\x5c\x02\x91\x4b\x58\x4a\xce\x4f\x8f\xc9\xcb\x01\x2a\x39\xa7\xc7\x08\xa4\xb4\x8c\xac\x24\x71\x68\x3f\xf6\x40\xc5\xd3\x77\x49\xba\x78\xc5\x00\x4d\x84\x51\x03\x0e\x28\x87\xa9\xcc\xe9\x43\xdb\x7a\xdc\x53\x78\x80\x4d\x97\x7e\x2b\x69\x86\x3a\xc0\xb9\x4c\x17\x25\xd3\xce\x37\xfe\xa3\x6f\x07\xdf\x84\x79\x7c\x3b\xf8\x06\xda\x39\x79\xb2\x7d\x3b\xd0\xd3\x64\xf0\x8d\x2b\x84\x25\xee\xa6\xa5\xd9\xa1\x0b\x55\x2d\x4e\x9f\xc5\xdf\xc0\xb3\x29\xe8\xbb\x9f\xa4\x4e\xa1\xc3\xbe\x58\x1d\x77\xc3\x42\x2d\x10\x6a\x6c\x13\xc5\xa8\x6b\xd7\x9e\xb2\x8c\x99\xa8\xbf\xfd\xda\xdb\x31\xdd\xde\x9f\xca\x87\xaa\x6a\xdd\xbb\x62\xe7\x52\xd0\x97\xfe\xf0\x4d\xbe\x62\x83\xe1\xcb\xaa\x01\x6b\x83\x0d\xd0\xb2\x22\xff\x41\x61\x1b\x23\x33\x86\xeb\xd3\x66\xa7\x2c\x2d\x88\xda\xd5\xf1\xe8\x4d\x08\xb1\x8e\xaa\xe3\x2b\x0f\xc5\x65\x39\xe2\x2a\xcc\x1f\x2c\x0d\x6c\x5e\x83\xb1\x49\xfc\x06\xca\x94\x66\xc4\x9e\x5a\x06\x3d\x19\x71\x25\xa0\x51\xd0\x66\xe7\x9b\x6b\x36\xeb\x21\x70\x03\x2a\x21\xdf\x46\x98\x82\xa1\xf4\x55\x16\x76\x40\xa9\xc8\x37\xfe\xbf\xbe\x7d\xa8\xb5\xd6\xc2\x8f\xda\xc6\x8b\x8a\x2f\xd5\x3a\x74\x75\x82\xf5\x0f\x75\x24\x07\xa4\xac\x2b\x8d\x30\x12\xc9\x35\x20\x27\x50\xdf\x88\x1a\xa9\xc3\x55\xcb\xb2\xda\xcd\xda\xf7\x48\xaa\xa1\x00\x80\xff\x25\xaa\x8b\x38\x93\x97\xae\xa4\x0e\x90\x59\x46\x4c\x55\x9f\x80\x80\x39\x93\x27\x1f\x59\x52\x3e\x14\x2d\x05\xaf\x56\xbe\xbf\x6b\xd6\xbe\x6b\xc5\x8f\x2c\xa0\xd6\x20\x6d\xac\x16\x1e\xb2\xe2\xab\xdd\x19\xa5\x66\xdd\x4d\xdb\x6b\x36\xd3\x01\x0c\xec\x1a\x47\x77\xd5\xab\x81\x7f\xfd\x41\x76\xf2\x91\x6b\xa3\xff\x8f\x6f\x99\x91\x0f\xab\x66\x25\x14\x73\xa4\xaa\xd1\xfd\x92\x08\xe8\xa5\x81\x8f\xf9\xd4\x04\xf7\x2f\xd0\x9a\xea\xef\x3c\x25\x22\xa8\x37\x6a\xdf\x69\x57\xbb\xec\x1e\x29\xa0\x44\x29\xc6\x0c\xab\xf2\x52\xf0\xc7\xc8\x9f\x48\x43\xa0\xcb\x89\x55\xf2\xea\xc7\x8c\xfb\xc8\xdd\xc4\x01\x3d\x82\x4f\x69\xc6\xd0\xae\xbf\xe1\x59\x9a\x50\x85\x21\x72\x07\x1c\xa3\x1d\x94\xa3\x43\x4c\xb0\x67\x9c\x93\x64\xd5\x2a\x6b\x17\x8b\xa3\xca\xf0\xa4\xcc\xa8\x22\x76\x3f\x8e\xa5\x7a\x20\xbe\x0c\x5e\xed\x5a\xb7\x04\x16\x6d\xd1\xd1\xb0\x2e\xdf\xe7\x47\x9c\x07\xe4\x73\xda\x8b\x35\x99\xa0\xb6\xa3\xbe\x51\xf6\xea\x50\x90\x72\xe4\x65\x53\x10\x14\x31\xa4\x9b\xa9\x39\xc7\xf9\x18\xfc\xdf\xfb\xd1\xe1\x11\x76\xe6\x80\x7c\x1f\xca\x7c\x7b\xa4\xf2\x19\x43\x31\xa1\x7b\xa6\xdb\x36\x6e\xb9\xaa\x4d\x3d\x92\x0a\xfa\xf0\xec\xa5\x12\x7e\xc3\xa6\x3c\x31\xfb\x03\xf2\xff\x5a\x4d\x11\x9c\xc8\x5e\x9d\x74\xdb\x2c\x14\x50\x56\xc0\x72\x2f\xc8\x1e\xfc\x2c\x56\x25\xf7\x7d\xa0\xc8\x75\x1e\x78\x62\xd9\x28\x2d\x42\xd4\x4b\xc2\xd3\x35\x31\x8a\x9a\xe2\x1c\x6b\x84\x93\x5f\x06\x09\x19\x64\x22\xd7\x6e\x97\xd6\x3c\xb7\x21\xce\xe2\x45\x68\x60\x9c\x7f\x81\x8f\x9e\x28\x36\x86\xfd\x87\xbb\xe7\x13\xee\x3e\x23\x0b\x99\xc9\xf1\xec\xb2\x50\x8c\xa6\x47\x52\x68\xa3\x40\x34\xb4\xc1\xf1\xba\x6d\xcc\xa8\xf5\xc3\x44\xde\x10\xea\xea\x90\xe5\x08\x41\xd5\x64\x39\x9e\x20\xd8\x2d\xfc\xd0\xb7\x49\xf3\x53\x74\x46\xa7\x1e\x90\xcb\x00\x66\x0b\x0c\x1e\xb0\x71\x61\x14\x70\x78\xdc\xd0\x99\xdb\x4c\x74\x08\xdd\x72\xab\x84\x20\x3f\x19\x0c\xfd\xdc\xfa\xfe\x20\x95\x0f\xcf\x8e\x1f\x8a\x20\xbc\x46\x85\xf6\x96\x57\x89\x7a\xe7\x43\x0b\xb5\x40\xdf\xa0\x91\x02\xdd\x68\x2e\x9d\xa6\x8a\x98\xa3\x9e\x32\x9f\x50\x37\x6d\x03\xb2\x93\xd3\x8f\x97\xd7\xec\xa6\xc1\x2f\xfd\x8b\xfe\xc8\x1e\x9e\xcb\xd5\x07\x7b\xf4\xbd\xd0\xd4\x70\x3d\x02\xa8\xf1\x4f\xa8\x8f\x43\xca\x7d\x33\x44\x64\xbc\xea\x95\x2b\xf1\x68\xa1\x5b\xb2\xc7\xd5\xab\x31\x8b\xcb\xbf\xab\xec\x20\x3c\x00\xb1\x04\x20\x80\x29\xdb\x1d\x94\xb8\x06\x03\x46\x56\x71\x68\x8c\x54\x84\x5e\xc3\x7e\xd7\x9a\x09\xe3\x6a\x0e\x42\x75\x6e\xef\x37\x17\x8c\x8d\x53\xd9\xda\xe6\x85\x01\x79\x4e\x3e\x5a\xcd\x43\x37\xcb\x34\xc2\xab\xde\x1f\x64\x6e\x50\x0c\x8f\xf9\x04\xca\xb9\x65\xa8\xe1\x74\x83\xd9\x1b\x7f\xd2\x54\xce\x55\x57\xbb\x0e\x43\xa4\x5d\x97\x21\xb2\x24\xcf\xf8\xd6\xd7\x9f\x03\xfb\x8e\xab\xd5\x9c\x53\x48\xf7\x50\x81\x47\x07\x36\x15\xd5\xc1\xee\x1a\xbf\x66\x41\x9b\xb3\x46\x91\xbd\x09\x7f\xd7\x16\xca\xbf\x45\x97\x22\xd2\x41\xa7\x22\x02\xb2\xec\xba\x81\x04\x8c\x7f\xef\x89\xd5\x78\x90\xf6\x3d\x8b\x48\x73\x83\xba\xba\x6a\x0c\x75\x5d\x99\xd6\xc8\x59\x35\xd3\xba\x12\x76\x95\x61\xdd\xea\xd9\x1d\x34\xf2\x20\x2d\x6d\xdc\xea\xaa\x11\x42\x3e\xc0\xda\xa5\x10\x60\x92\x23\xbf\x3b\x96\xda\xbc\xa7\xa2\x47\xce\xa4\xb1\xff\x44\xe6\xef\xb1\x64\xfa\x4c\x1a\xf8\x64\x23\x48\x89\xaf\xd0\x21\x21\x9d\x71\x86\xb8\x5e\x20\x37\x5d\x88\xd6\x9e\x78\x9e\x60\x4b\x0c\x8b\x53\x41\xa4\xf2\x14\x0b\xd6\x85\x76\x43\xc4\x61\x05\x07\x8e\x74\xab\x71\x62\xc7\x89\xe9\x7c\xc7\x70\x6e\x28\xc8\xfe\xc2\x6f\x00\x24\xb3\xc8\x20\x41\x3f\x2d\x15\x62\x95\x5a\x5d\xd3\xb0\x31\x4f\x48\xce\xd4\x18\x1a\x1f\x36\xc9\xab\x8f\xaf\xf6\xe7\x0a\x5e\x2d\x4f\x97\x78\x32\x2d\x78\x09\x8e\x6c\x50\xb1\x3a\x54\x01\x70\x3c\x3c\xd6\x72\x0a\x96\xd4\xff\x04\x1f\xf4\xff\x92\x82\x72\x05\xd8\xa6\x2e\x76\x1c\x7f\xe7\xa2\x2f\xf1\x30\x76\x84\x05\xdf\x12\x15\x84\x61\x21\x90\x1d\x7d\x5e\xf1\xe8\x91\x9b\x89\xd4\x78\x18\x06\xf7\xc7\xce\x35\x9b\xed\xf4\x16\x58\x6f\xe7\x54\xec\x54\x81\xe1\x1a\xb3\x85\x43\x18\x32\x08\x77\xe0\xbb\x9d\xc7\xd3\x55\x5a\x1d\xb6\x5d\x80\xcc\xcf\x4f\xa8\x21\x5f\x39\x9b\xa7\x7d\x2f\xf7\xb7\x38\x50\x64\x9f\x63\x4c\x70\xac\x58\xd4\xc7\x1d\x14\xf5\x1c\xe3\x9c\xa5\x60\x53\x66\x17\x2b\xe5\xda\x01\xb9\xf9\x14\x83\x7f\x2e\x98\x44\xff\xff\x63\x79\x26\x8d\xb7\xda\xff\xe9\xdd\x5e\xc8\x7f\x1f\x79\x5e\xe6\x88\x98\x64\xac\xa5\x90\xf2\x91\x07\x7c\xf5\x99\x0d\x75\x7b\xa1\x6e\xb6\x3a\x3e\x36\x54\x8d\x21\xc3\xd1\xd9\x0b\x9e\xcd\xc6\x99\x1c\xd2\x8c\xe4\x5c\xd8\xc7\x0c\xc8\x6b\xa9\x08\xfb\x48\xf3\x22\x63\x58\x4e\x46\xbe\xec\xff\x5b\x0a\x46\x5c\x34\xbc\x47\x3c\x2d\x5c\x92\x84\x91\xe4\x25\x72\x6d\x05\xfc\x1e\x52\x1d\x6a\x06\x58\x70\x5b\x68\xf2\xf2\xe0\xe5\xc1\x8b\x57\xe4\x77\x62\x87\x7e\xe9\xfe\xfd\xc2\xfd\xfb\x25\xf9\x9d\xfc\x4e\x08\x39\x27\xa4\xf6\x2f\x81\x7f\xfb\x84\x8f\xe2\x39\xbc\xb4\xd3\x4c\x64\xee\x5e\x18\x3c\xb9\xa1\xea\x33\xf4\x8f\x31\xd2\x0d\x0d\x45\x3f\x89\xcc\x19\xcc\xe1\xe5\xff\xf1\xf7\x40\xc0\xd5\x60\x8b\x1f\x98\xd4\x1e\x4c\x69\x9f\xdc\x80\x6b\x2a\xa7\xd7\x68\x96\x1d\x26\xa6\xa4\x99\x7d\xf8\xde\x17\xfd\x17\xfb\x44\x8a\xfa\xed\x53\x2e\xa1\x35\xba\x9b\xe1\xde\xcb\xfd\xc1\xc2\x94\xbf\x58\x32\xe5\xb9\x6e\x37\xae\xe6\xce\x0e\x7a\x3b\xd7\x78\x86\x39\x14\xb3\x1b\x3a\x0b\x6c\xe3\xcd\xd2\x31\x9f\x06\x6c\xf4\x08\x87\x02\x62\x76\xc0\x05\xdc\x23\x03\xe1\xa0\x33\xc2\xcd\x80\x9c\x9a\xdd\x5d\xdf\x5b\xc9\x6a\xcc\x1e\xc4\xfd\x38\x86\x0b\x04\xc2\xc3\xa2\xbf\x98\xcb\xe9\x6d\xd1\x58\xbf\x13\xe7\xe8\x83\x50\xd8\xdd\xd3\x2b\xff\x46\x07\x4e\xf5\x30\x96\xdf\xc1\x56\xf4\xcb\x11\xd6\xc9\x62\xa7\xa3\x01\xb4\xb1\x72\xb4\x77\x09\x23\xa8\x3a\xbb\xdd\xc3\x75\xb0\x9e\x38\xe4\xdf\x27\x34\x8b\x83\x75\x89\x04\x80\x36\xc5\x7c\xa3\xa4\x38\xbd\x28\xf8\xa5\xc8\xcf\xd5\x9d\x98\x56\x04\xf1\x57\x1c\xe8\x5b\x4c\x67\xdf\x19\x96\xc9\x35\x33\xfe\xdc\x51\x90\x11\x51\x94\x86\x0c\x69\x46\x85\xd5\x60\x16\xfc\x10\x46\xe2\x60\xf8\x4b\x60\x98\x25\xfc\xf2\xa9\xe3\x23\x0b\xbb\xa3\xbd\xd0\xff\x79\x7e\xc8\x28\x22\xeb\x1c\x85\x29\xa3\x99\x4f\xa5\x00\x7c\xf4\x00\x58\x25\x76\x77\xab\x7d\x05\x6b\x83\xc2\xaf\x72\xb0\x5a\xb9\x50\x93\xfb\x64\xcf\xe7\x3e\x12\xc3\xb2\x0c\xb9\xa7\xea\x4b\x66\x37\x59\xdc\xe8\x8c\xc3\x08\x75\x19\xb0\xf4\x87\xf5\xee\x68\x18\xd4\xb7\x92\x5d\xcc\x42\xb5\x7c\x8f\x10\x68\x0d\x38\xe6\x53\x2b\x94\x56\x12\x1a\x28\x18\x27\x2c\x2b\x88\x62\x69\x99\xe0\xe0\x84\xe8\x6b\x76\x63\x75\xaa\xea\x4d\x5d\x4b\x21\xcf\xb2\x3b\x35\xa2\xee\x20\x46\xb4\xa8\x8b\x44\x3e\x02\x86\xf4\x1d\x37\xd9\x94\xa9\x19\x29\xa4\xd6\xdc\xae\x03\xec\x25\xc8\x86\x03\xbd\x2b\x20\xeb\x40\x26\x16\x4c\xcb\x8b\xe1\x1d\x27\x76\x77\xac\xa0\xd6\xb2\xb6\x3d\x3e\xcd\x51\xf7\xa5\x3d\x66\xee\x3e\xea\xce\xe1\x7f\x8b\x47\xde\xe9\x88\x2c\xe1\xc1\x30\x97\x1a\xf3\x3c\xe4\x14\xfc\x02\x0e\xab\x2f\xf7\xa3\xc3\xf0\xcb\x83\x2f\x0e\x5e\xee\xd9\xb9\x7e\xb1\x6f\x67\x5d\x3b\xe6\x5e\x86\x63\x2e\xfc\xd2\xcd\x88\xe9\xda\x41\x67\x0d\x30\x6c\xa0\x2b\x55\xea\x22\x3c\x3e\x8b\xce\xce\x48\x1b\x17\x6f\xe3\xb9\x97\x2f\x3d\xe0\xbb\x8a\x59\x6f\x24\xec\x1c\x38\x6f\xb9\x21\x9f\xe5\x52\xb1\xcf\xa2\xfb\x6f\x3d\xa0\x9a\x9f\x3b\x6d\xfb\xa9\x65\x5c\x1b\x68\xaa\x76\xcd\x66\x0f\xd6\x74\xdb\xb8\xd7\xdb\x3a\xd7\x17\xdf\x02\x09\x92\xd3\xe2\x01\xe3\xb8\xbe\xed\x6d\x52\x78\xdf\x38\xc7\x6c\x68\x01\x0f\x8e\x47\xd4\x8a\x5c\x5f\x53\xac\x95\x0a\xf9\xb4\x43\x96\x49\xc4\x39\x75\xa9\x03\x0f\x48\xd5\x0f\xb0\xf0\xda\x48\x45\xc7\xec\xc0\x3d\xf6\xa9\xb4\x83\x70\x5d\xe0\x6b\x5e\x26\x2c\x67\x74\x20\xa9\x3e\xa5\xd9\xc7\x1f\x40\x0a\xd0\x04\xb2\x01\x81\x90\x35\x38\x87\x28\xcf\xf0\x89\x84\xb2\x1a\x54\xbf\xb7\x71\x9c\xd2\x1b\x7d\x92\x51\x6d\x78\xf2\x7d\x26\x93\xeb\x4b\x23\x55\x07\xda\xc5\xe1\xcf\x97\x0b\xa3\xd6\xd6\x54\x90\xc3\x9f\x2f\xc9\x31\xd7\xd7\x15\xba\x3e\xa2\x6a\xd6\x13\xf0\x68\x00\xc6\x71\xb5\x18\x24\xa7\xd6\xfe\x63\xde\xc6\x13\x01\xd7\xb7\xbb\xbd\xf2\x27\x7a\xa3\x19\x4e\x7f\x68\xa7\x6f\xbf\x66\xcd\x45\xf0\xda\x80\x14\xf0\x75\x4e\x8f\xd7\x10\xf8\x1a\xe9\xa6\x6d\x47\xc8\x02\x33\xbd\xe6\x19\x73\x1d\xc0\x00\x12\xa8\x8e\xf1\x0c\x5c\x33\x93\x25\xb9\xa1\xe8\xb3\x02\x99\x3a\x20\x57\xbc\x78\x45\x4e\x22\xbc\x56\x2c\x48\xa8\x0f\x65\xf5\x8d\x80\x1f\xe2\xb2\x04\x80\xcb\xd0\x75\x65\x45\xb0\xcb\x8a\x21\x27\xa8\x4c\xe9\x57\x64\x87\x7d\x34\x5f\xed\xf4\xc8\xce\xc7\x91\xb6\xff\x08\x33\x02\x74\x65\xd7\xa3\xc1\x2a\x75\x62\xc4\x54\x65\xc0\xe0\x0f\x16\x4b\x07\xbb\x67\x52\x72\xf5\xee\xf8\xdd\x2b\x50\xe0\x53\x49\x6e\x98\xef\x62\xe6\x0b\x61\x9d\x34\x8c\xc8\x00\x15\x1d\x89\xcc\x0b\x25\x73\x1e\xa5\xab\xc2\x26\x6b\xc2\xf3\xa4\x0b\x7f\x29\x24\xa5\xc1\xf2\x77\xc2\x41\x90\xed\xeb\x87\x9c\x03\x86\xbf\x8d\x7f\x4e\x47\x44\xa2\x53\xaa\x9e\x23\xcf\x75\xb8\xc9\x72\x8c\x1b\x05\xdb\x71\x55\x3c\x62\xd5\x6f\xf7\xd5\x41\xca\xa6\x07\x3a\xa5\x2f\x7b\xf0\x18\x64\x00\x07\x7e\x1f\xe6\x44\x35\xd9\x79\xb9\x33\x20\x97\xbe\xaf\x79\x2f\x9e\x63\x75\x9f\xb5\x06\xfc\x80\xe0\x56\x7d\xb1\x43\xf6\x30\x49\x1d\x74\x8a\x8c\xf9\x92\xe5\x80\xb1\x01\x3e\xfc\xfd\x46\x2a\x24\xe9\xc0\x7d\x41\x5a\xbb\x30\x88\x6b\x19\xf6\x4e\x64\x8d\x43\x7b\x73\x55\x55\x6e\x0d\x76\x0c\x74\xdf\x32\x12\x2a\x08\x98\xeb\x07\x8b\xa2\xe2\xc2\x3d\xb1\x22\x24\x17\x4e\x3b\x79\x6b\x17\x1f\xbb\xc0\xc3\x00\x77\x32\xcb\x0e\x54\x1f\xed\x6c\xcc\x99\x44\x3a\xa8\xe6\x26\xe1\x68\xe9\x66\x3d\xde\x0b\xfe\x5b\xc9\xc8\xe9\x71\xe8\xd9\xc8\x94\xe6\xda\x58\xc9\x95\xd6\x74\x04\x8e\x8a\xc3\xde\x61\x4e\xff\x2d\x05\x39\xf9\xfe\xd2\x4d\x65\x7f\x03\x09\xdc\x50\x00\xd2\x7f\x97\x8a\x59\xd5\xa8\xb5\x1e\x76\xe8\x47\x9a\xd7\xbd\xec\xe7\xe4\x98\x1a\x8a\x2a\x18\x4a\x33\x59\x55\x98\xc2\x4e\x18\x42\xe6\x8f\x2f\x1f\x6e\xa8\x45\x93\xf5\xab\x41\x96\x83\xce\x9a\x63\x4a\xd9\x9f\xbf\xbf\x38\x5d\x83\x12\x95\xc0\x29\x3c\x7e\x2b\xd3\x8e\x34\x29\x80\xf7\x38\xc2\x51\x49\x6e\x87\x25\x67\x52\xb0\x1e\x08\x3b\x62\xa5\x9d\xfb\xcf\x9f\x15\x37\x0f\xad\x98\xac\xae\xd6\xc7\xbf\x5f\xb1\x4e\xde\xda\x1e\xfe\x67\x51\x65\x3c\xc0\x38\x80\x54\x71\x8a\xc0\x30\x93\x43\xe2\xa4\xc1\x3a\xdf\xf8\xfd\xc5\x69\x67\x2f\xfc\xfe\xe2\x74\x73\x5f\xb6\x43\xe3\x60\xde\x36\xa8\xf4\xb7\x0a\x7b\x75\x5e\xe9\x5f\x5d\xe3\x1f\x74\xa5\xeb\xaf\x8b\xd2\xd7\x5c\x34\xce\x0a\xab\x8b\x8e\x13\x5f\x1f\xe9\x22\x35\x50\x92\x9d\xbe\x22\x79\x99\x19\x28\x7f\x03\xc6\xb2\x9c\xa6\xed\xe9\xed\x59\x8c\x38\x28\x08\x42\x8e\x19\x86\x17\xd2\x57\x3e\x21\x21\xfc\x62\xf9\x0f\xde\x52\x41\xc7\xf6\x76\x38\x0f\x49\x8e\x7f\x46\x1c\xbd\x87\x0e\x74\x11\xbe\xa2\x53\xca\x33\x3a\xe4\x19\x37\xd0\xfe\x7f\x7f\xe0\x15\x31\x8d\xb5\xb0\x76\xca\x6b\x13\x6a\x9d\xaa\xb0\x71\x7d\x10\x28\x98\x64\xcf\x8e\x7f\x70\x63\x05\xf7\xfe\xa0\xd2\x5e\x01\x8d\x0c\x12\xe5\x51\xc5\xad\xa9\xb6\x1e\xe5\x61\x4e\xb3\x6d\xc7\xae\x4d\xd5\x4a\x58\xe6\xd7\x0d\x21\xa0\x17\xd5\x1e\x3b\xd2\x52\xb5\x07\xbe\x70\xa0\x13\xcf\x5c\xf3\xc1\x0e\x52\x2d\x74\x1f\xd8\x32\x0d\x7f\xdf\x56\xfb\xd9\xee\x97\xfb\xaf\x6a\x81\x3b\xa1\x52\x0c\x22\x84\x43\xcf\xa5\x49\xe3\x0e\xba\x74\xa2\xda\x83\x0b\x81\x76\x65\xf7\x4d\x93\x22\x0a\xbc\x5a\x4b\xd7\xc0\xa9\x9d\x10\x02\x61\x57\x1a\x6f\x9c\x96\xef\x93\xb0\x62\x32\x6a\x5f\x03\x79\xc4\x8a\xc9\xeb\xcb\x7a\x28\xc5\x7e\x46\x5e\x5f\x2e\x91\x7b\x98\x2b\x63\xdf\x5b\x63\x80\x65\x57\x93\x8c\x8f\x98\xe1\x8d\x88\xb0\x66\xc9\x97\x4b\xc1\x8d\x54\x7a\x1d\x35\x1f\xee\xd1\xdd\xe8\x5d\x17\x9e\x10\xe4\xad\x1b\x17\x13\x3e\x13\x99\x65\x2c\x31\xae\xe7\x21\x2c\xab\x7f\xf0\x32\x47\x88\x4b\x05\xd0\xbe\xc7\xaf\x73\x7a\x1c\x20\xab\x1d\x5c\x9c\x1c\x1e\xbf\x3d\x19\xe4\xe9\x9f\x26\xf2\xa6\x6f\x64\xbf\xd4\xac\xcf\x4d\x3b\x5d\x69\x8d\x45\x21\x1d\x38\xa0\xcd\xa4\x9b\x05\xac\x10\x89\xde\xeb\x0a\x33\xcc\x07\x7e\x95\x94\x66\x11\x35\x6c\x54\x66\x19\xae\xa9\x51\x8c\xf5\x62\x77\xe2\x03\x31\xd5\xaa\x6b\xb3\xf4\xd7\xdd\xe5\x7d\x7d\xbb\x3f\x9a\x37\x65\x33\xb4\x3f\xe5\x9b\xaa\xc6\xe4\x0e\xda\x5f\x86\x91\x7d\x42\x9f\x65\x7c\xbb\x12\xd7\x6c\x46\x20\xbb\x7f\x24\x15\x20\x6d\xd6\xb9\x90\x99\x04\xc8\x75\x00\x2d\x15\x9d\xae\xb0\x21\xa4\x6e\xa3\x45\xc0\x8b\x5c\xb0\xd1\xe3\x10\xfa\x82\x8d\xb0\x80\xc2\xe7\x38\x3b\xeb\x82\x96\x66\x82\x99\x90\x88\x7c\x84\xe4\x5c\x4a\x79\x57\x91\xb1\x21\xa4\x6e\x95\x4b\xdf\x45\xbd\x57\x1b\xe0\x7d\xb2\xb0\x5e\xb1\x9b\xd0\x2d\x92\x79\x70\x5c\x41\x4e\xad\x6d\xc9\x6e\x0e\x6e\xa4\xba\xe6\x62\xdc\xbf\xe1\x66\xd2\x47\x4a\xe9\x03\xc0\x61\x3b\xf8\x13\xfc\xe3\xa2\xb5\x87\x69\xea\x32\xcb\x4a\xcd\x46\x65\x86\x39\x5f\x7a\x40\x68\xc1\x7f\x62\x4a\x43\x0a\xe3\x35\x17\x69\x8f\x94\x3c\xfd\xae\xe9\x8a\x91\x2e\x36\x48\xf3\x2e\x62\x77\x9e\x8b\xca\x8b\x1f\x45\x53\xa9\x11\x85\xd7\x92\xa8\xc6\xfa\x34\xcd\xb9\xd8\x14\xce\x6f\xaa\xda\x73\x91\x36\xa3\x60\x9d\x7a\x47\x30\x4e\x5d\xb7\xc7\xb1\x7d\xcc\x38\x64\xd1\x50\xef\xcb\xc0\x2e\x55\x2e\x9f\xa6\x9e\x4d\xb3\x92\x40\xc9\x67\xfa\xb7\xac\x8f\x4f\xe9\x17\x69\x45\xd7\x6d\x6a\xcc\x43\xae\xc7\x4c\x8d\xe9\xd6\xfd\xfd\x09\x12\x5e\x1e\x95\xc7\xc8\x56\xed\x5d\x03\xad\xdb\x6b\xba\x8f\xa0\x7f\x01\x0e\xbc\xf6\xc5\xc9\xa0\x5e\xa1\xec\xf1\xbe\x2d\xec\xcc\x17\x80\x87\x7d\x99\x51\x22\x85\x70\x98\x74\xef\x0a\x26\x2e\x0d\x4d\xae\x5b\xc6\x45\xb7\x3a\xd3\x1f\x4c\x67\xea\x36\x57\xc6\xa7\x41\xa7\x81\x47\xb1\x8a\xca\xa5\x94\x55\x59\xd2\xb8\xb1\x9f\xa0\xd4\x45\x84\xf5\xb7\xb4\x68\xef\x01\xf5\x23\xcd\x29\x4a\xe1\x63\xe7\xf4\x84\xaa\x9a\x42\x16\x65\x86\x90\x6b\x5c\x3b\x3a\x7e\x7a\xc5\xa6\xed\x06\x77\xfa\x72\x77\x39\x23\x95\x0c\xcd\x65\xca\xc8\x90\x9b\x4a\x3a\x6a\x66\xb0\x76\xd7\x01\xd1\x48\x41\x12\x07\x36\x07\x5a\x87\xd5\x30\xdc\x84\x22\x8d\x44\x10\x99\x18\x5f\xf3\x17\xca\x7c\x5f\xbc\x78\xf1\x02\x8b\x2e\xff\xfa\xd7\xbf\x12\xa9\xa0\xe3\x43\xc2\xf3\xc5\x1b\xe1\xae\x3f\xbf\x7c\x39\x20\x7f\x3f\x7c\xfb\x06\x72\xff\x0b\xa3\x11\x07\x1c\x47\xb6\x37\xd4\x7e\xac\x7b\xe4\xff\x5e\xbe\x3b\xf3\x6a\xa3\x9e\xfb\x16\x4c\xed\xf0\x7a\x75\xf4\xc5\x17\x7f\xf9\xea\xab\x01\x39\xe6\x0a\x6a\x9f\x38\x0b\xad\xb9\x82\xb7\x84\x2a\x86\x45\xa2\x00\x11\xe8\xf5\x2a\x1e\x40\xf4\x1d\x7e\x02\xf6\x1e\xc4\x7a\x46\xcb\x81\x19\x4f\x0c\x96\x59\xa1\x20\x0b\x5d\x85\x01\xb8\xd1\x41\xa1\xba\x64\x5d\x98\x5c\x8f\x64\xfc\x9a\x91\x91\x86\x96\x9c\x55\x31\xbd\x6b\x77\xe3\x4a\x4a\x70\xb0\x6a\xad\x34\x33\x4f\x3c\xf7\xb3\x95\x2f\x78\x1e\xc0\xb8\xd6\x70\x0d\x4a\x3d\xaf\xd9\xac\x8f\x1c\x56\x50\x1e\x0a\x46\x20\x39\xae\xd6\x63\x21\x78\x6d\xd2\x48\xae\x78\x8c\xc5\x42\xc9\x7f\xe1\xe2\x43\x0d\x69\x24\x89\xa1\x12\x15\x5b\xd4\x02\x58\x82\x88\x1a\x76\xf8\x3a\x58\xd7\xd4\xcb\x7f\xec\x90\x42\x17\xe1\x96\x33\xae\xed\x23\xae\xd9\x4c\xdf\xf5\xe4\xaa\x57\x8c\xe5\x4f\x8d\x9c\x52\x8a\x85\x5f\x3b\xe4\x7d\x27\x19\x5d\x93\x05\x87\x78\x53\x8d\x81\xe5\xff\xae\x10\xda\xdd\xeb\xa9\x14\x08\x51\x4b\x57\xd6\xcc\x94\x8e\x34\x90\x77\x6e\x9f\x0d\x0d\x00\xe0\x0d\x73\xaa\xae\x99\xef\xcc\x4b\xb3\x01\x39\xb7\x93\x0c\x90\x23\xa1\x31\x32\xd8\xad\x74\x06\x8f\x75\x4a\x1a\x3c\x64\x77\x30\xd8\xc5\x8d\x27\x15\xd1\x86\x2a\xb7\x8b\xec\xe7\xcf\x03\xc5\xea\x2d\x2d\x34\xa2\xaa\x58\xad\x14\x10\x87\x24\x20\xb5\x9a\x49\xd5\x17\x10\x69\xbd\x45\x9e\x22\x7d\x20\x4c\xe3\x01\x36\x11\x75\xea\xca\xc9\x06\x23\xfd\xf6\xde\x08\x2c\xa4\xbc\x85\x52\x81\x57\x2b\xd5\xc2\xc1\xec\x66\xec\x49\xe9\x12\xcb\xdb\x6a\x38\x49\x19\x69\x6b\x73\xcd\x3c\x9f\xaa\xca\x80\x57\x17\x8a\x03\x5e\xed\xd5\x07\xbc\xda\x04\x74\xf1\x5a\xd8\xa1\xe1\xa4\xc2\xc3\x68\x54\x91\x1e\x40\xcf\x8b\x70\xc4\x1b\x89\x1d\x42\x7c\xa7\x1b\x41\xe8\x50\xcb\xac\x34\xf8\xd3\xea\xcb\xf8\x98\x83\x41\x3d\xf8\x12\x9c\x6d\xe1\xb6\xe8\xd0\x83\xe3\x1e\xcf\x89\x36\xe7\x1f\x5e\xad\xc5\x44\x67\x6d\x90\x9f\xb7\x57\xa1\x35\x9d\xbd\xee\xd4\x4d\xae\x93\x2b\x86\xba\x99\x30\x97\x85\x10\xe9\x75\x56\x78\x5a\x91\x00\x4a\xa3\x57\xd1\xb0\xed\x78\xba\x16\x2f\x61\xa2\x79\x7b\xb7\xc0\xe5\x29\xd9\x0b\xed\x46\x43\x3a\xdb\xa9\x30\x4c\x8d\x68\xc2\xf6\x63\x77\x01\x2b\x26\x2c\x67\x8a\x66\x21\x43\xd9\xd7\x29\x4f\xa8\x48\x33\x57\xbc\xcf\x14\x6c\x5c\xf6\xd1\x30\x25\x68\x06\x8f\x48\x15\x9f\x32\xa5\xc9\xde\xf7\xcc\xda\x12\xd8\xa6\x74\xff\x09\xa6\x91\xe2\x8b\xac\xc3\x99\x01\x0f\xee\x26\x01\x14\x86\x5a\xd6\x29\xb1\x5a\x2a\x8f\x59\x64\x97\x55\xc7\x6e\xa0\x81\xdd\x10\x70\x62\x82\xd0\x85\x8e\x40\x18\x8d\xf4\x0d\xf0\x00\xb8\x38\x31\x38\x30\xd5\xae\x21\x1e\x20\xc2\x38\x79\xee\xa0\x42\xd6\x56\x0a\xf0\x49\x8a\x2e\xee\x2a\x99\x18\x39\x03\x52\x4e\x79\xea\xd5\x20\xc8\x66\xa8\x50\xb7\x0a\xaa\xa3\x4a\x7e\xaa\xb5\x74\xfd\x3e\xa3\x35\x42\x73\x14\x94\xa5\x3a\xa6\xb4\x8f\x14\xc7\xf1\x2e\x09\xc8\xac\x8d\x1a\x5a\x90\x4e\x0e\x44\x99\xb2\xf3\x72\x98\x71\x3d\xb9\xec\x34\xb4\x71\xb6\x64\x60\x4c\x0c\x5c\x48\x2e\xb9\x35\xdc\xa1\x99\xd0\xdc\xf5\x1f\x43\x35\x8b\x5b\x2d\x5b\xc2\x32\xf8\x5f\xc7\xbb\x43\x42\xa1\x38\x74\x35\xf3\x5f\x45\xf3\x70\xc8\x1d\xd8\x4e\x27\x65\xef\x45\x51\xfb\x3c\xa1\x59\xa6\xe7\x1b\x49\xfb\x83\x0c\x35\x53\x8f\xe6\x81\x5c\xc1\x2d\xc3\xf8\xd9\x43\xd6\x0c\x4a\xb1\x80\x6c\xba\xf4\xc5\x34\xc9\x25\x56\xfc\x0b\x22\x85\xbf\x09\xba\x02\xf9\x1f\x04\x0a\x21\xde\x18\x32\xdd\x1a\x31\x25\xb7\x31\x9d\xa7\x17\xd3\xe9\x34\x2a\x7c\x19\x5a\x34\x50\x18\xb8\x0f\x85\x4d\xbe\xd1\x2c\x0d\x85\xff\x95\xe1\x38\xb8\x2f\x7c\xbc\xb6\x08\x2e\xce\xef\xd0\x38\x58\xd0\x6e\xfc\xb6\x3f\xcd\x0d\x0a\xaa\x98\xb5\xbc\x41\x30\xf5\x9d\x6d\x9d\x44\x3b\xc9\x99\xc4\x61\x7b\x2f\x8a\xb3\xea\x4c\x87\xe3\x1c\x3f\xdc\xd5\x24\x95\x49\x69\x6d\xae\x8a\xec\x55\xc2\x44\x3b\xb4\xf7\xe7\x05\x3f\x9b\xca\x1b\x71\x43\x55\x7a\x78\xde\xa8\x6a\xb5\xae\x9c\x55\x63\xc5\xaa\xb7\x7f\x04\xb1\x9f\xd3\xa1\x6f\xf8\x1f\xc0\x9f\xb6\x81\xbb\xf9\x21\xee\xf3\xae\xb9\x36\xe0\xab\xc5\xe9\xc8\x36\xf4\xb7\x0d\xfd\x3d\x9b\xd0\x9f\x1d\xa9\xde\x29\xa5\x26\x5e\x9c\x43\xd6\x52\xfc\x59\xc4\x90\x22\x91\x8a\xa7\xe7\x7c\x3d\xec\x9c\xce\x8f\x9b\xb7\xe2\xba\xc8\x4e\xf0\x32\x17\xd4\xb1\xe7\x10\x6f\xda\x80\x78\x11\xd0\xb2\x85\x31\x88\xd7\x6d\xa5\x62\x88\xd4\x8a\x81\xe7\x28\x82\x5d\xc8\xf4\x15\x02\xa7\x42\xe7\x74\xec\xd9\xd1\x73\xb8\xcd\x3d\xe7\xbb\x10\x51\xaf\x70\x6c\xcd\xec\xd5\x9f\x4e\x62\x02\x2d\x19\x80\x74\xc4\x04\x04\x18\x01\xa8\x73\xde\x86\x1b\x48\x67\x1c\x61\xaf\xca\xd0\x69\x3b\xd2\xbc\x02\x8d\xa3\x7a\x46\xd0\xc9\x84\xe5\xd8\x3f\xfc\xb5\x27\x81\x95\x8d\xd6\x78\x30\x0c\x11\xd2\x98\xca\x35\x91\xa3\x5e\x0d\x42\x61\x67\xfa\x72\xa7\x5d\x8c\x81\x74\x17\x8e\x24\x7e\x1f\x9d\xb7\x8e\xed\x90\x79\x82\x9d\xd7\x42\x3a\x76\x0f\x81\xce\x93\x61\xeb\xe2\xb9\x2c\x0b\x38\x3f\x90\xc2\x1b\x43\x9c\x4d\x89\xd5\xf6\x42\xd4\xe0\x09\x28\x7f\xdb\x58\xed\x73\x8c\xd5\x46\x07\xa3\x17\x74\x8e\xb0\x71\xfc\x36\x0e\x09\xf8\x20\xee\x90\x79\xa3\xc6\xd9\x30\x3e\x82\xeb\xc3\xb7\x52\xd5\x53\x93\x76\x07\x83\xdd\x5d\x1f\xd4\x75\x7c\x5f\x9a\x51\xff\x6b\xc2\x44\x22\x53\x64\x16\x3b\xbe\xd2\x06\xd4\xbd\xca\xcb\x16\xcf\x25\xf7\xcf\x8a\xd3\x9b\x60\xec\x2e\x96\xba\xb5\x6c\xf1\x68\x7c\xaf\x1f\x41\x89\xa9\x54\x97\x80\xf9\xe7\x48\x14\x30\x9d\x9d\x0e\xe3\xbf\xd7\x24\xe3\x39\x77\xfd\xc3\xec\x46\x67\xda\x68\xb2\x87\x1f\x0e\x92\xa2\xec\xb9\x1b\x06\x39\xcb\xa5\x9a\xf5\xc2\x4d\xf6\xcb\xda\xaf\xdc\x1d\xfb\xd8\x87\xa2\x54\x8a\x09\x93\xcd\x9e\xb3\x06\xe4\x89\xb8\x21\x0a\x50\x58\xe3\x36\x48\x1e\xd5\x35\x57\x33\x17\x22\xbe\xe0\x2d\x8f\x30\xf6\x03\x58\xab\xee\x85\x90\x04\x7c\xca\xc4\x94\x4c\xa9\x7a\x20\x7a\xfa\xb2\xab\x43\x9d\x27\xe5\x53\xae\xdb\x36\xf7\x23\xb7\x3b\xa1\xa1\x75\x57\x69\x8a\xd2\x38\x89\xee\x77\xa0\x47\xda\x0e\x3b\x6f\x4e\x39\x7c\xb9\xd3\x7a\x4a\x05\x35\x86\x29\xf1\x8a\xfc\xf7\xde\x87\xcf\x7f\xef\xef\x7f\xb7\xb7\xf7\xcb\x8b\xfe\x7f\xfe\xfa\xf9\xde\x87\x01\xfc\xc7\x67\xfb\xdf\xed\xff\xee\xff\xf8\x7c\x7f\x7f\x6f\xef\x97\x1f\xdf\xfe\x70\x75\x7e\xf2\x2b\xdf\xff\xfd\x17\x51\xe6\xd7\xf8\xd7\xef\x7b\xbf\xb0\x93\x5f\x57\x1c\x64\x7f\xff\xbb\xff\x68\x3d\x75\x2a\x66\xef\x5a\x8a\x42\xbc\xfa\x1d\x1e\xc9\xf5\x11\x3b\x61\xbf\xb9\xd6\x0a\x5c\x98\xbe\x54\x7d\x1c\xfa\x15\x31\xaa\x6c\x27\x4c\xaa\xe3\xa5\xeb\xfd\x5f\xa9\x01\x15\xe4\xbc\x57\xea\xd7\xbc\xc1\x21\xe2\x79\xcc\x3b\x28\x0c\x3e\x71\x23\xd5\x2b\x5e\x0c\xcb\x0b\xa9\xa8\x9a\x91\xd4\x79\x33\x67\x4b\x00\x7f\x22\xc4\x9f\xd6\x68\xba\xf0\x46\x29\x57\x6b\xa8\x0d\x6e\x0d\xe0\xc3\x52\x5e\xe6\xdd\x38\xe1\x7f\x06\xe4\x79\x87\x5a\xef\x13\x88\xf0\x01\x3e\x7c\x31\xa4\xc9\x35\xda\x4b\x61\x6d\x50\x4b\x8c\x41\xa4\x77\x5c\xde\x43\xce\xa8\x08\x6e\x7c\xc8\x64\x91\x29\xb3\x0b\xe7\x6f\xc6\xb1\x6b\x2e\x77\x0c\xa7\xbb\x2c\xc1\xaa\x0d\x93\x54\xe4\x2d\xa8\x3b\x6b\x5d\x6b\xd2\x09\x6c\x07\xff\x37\x7b\x63\x75\xbc\x8e\xe0\xe2\x25\x18\x93\x0e\x23\x6b\x04\x8d\xa4\xaa\xf4\xaf\x9a\xda\x00\xeb\x16\xf6\x9c\x0f\xce\xda\xd5\xb3\x73\x42\xc5\x13\xbc\xce\x99\xc6\x5c\x14\x9e\x40\xa3\x23\x30\x3c\x81\xfa\x61\xc5\xae\xa2\x86\x88\xa5\xb6\x4f\x92\xa2\x7e\x4f\xf5\x20\xec\x03\x35\x44\x16\x70\xed\x0d\xe7\xcc\x65\xfb\xcd\xa5\xa7\x4b\xe4\xac\x80\x72\x62\x6f\x5b\xea\x12\x2c\x10\xf7\x14\xa7\x47\xcb\x11\x64\x4b\x44\x0d\x69\x7c\xcf\x95\x05\xbe\x14\x3c\xab\x33\xa6\x6f\xb4\x10\x5e\xbc\x14\x2e\x5b\x70\x81\xcb\x96\x33\x59\xa9\x99\xea\x8f\x4b\x9e\x76\xc7\x5e\x4f\x4e\xa7\x68\xa9\x49\x74\xa5\x3f\x74\xa2\x35\x74\xae\x2b\x84\x7c\xcc\xd6\x67\xe5\xce\x49\x48\xed\xac\x1d\x96\x71\x63\x88\x7a\x9a\x27\x0d\x0d\xbf\xbc\x30\xf0\xb9\x04\x57\xc1\x4f\xe4\x0e\xd1\x64\x96\x38\x50\x25\x5e\xeb\x4d\x83\xc3\xe2\x9e\x80\x8a\xa8\xbe\xfd\x3f\xef\x4f\xf2\x21\xd4\x21\x1b\x61\x16\x13\xfe\x06\xdc\x00\xae\x8e\x2b\x65\x19\x33\x50\x96\xc5\x44\xd5\xf1\x4e\x13\xc5\x72\x39\xb5\xdb\xec\x83\x20\xef\xb5\x0b\x86\xf3\xd1\x2b\x42\xf7\x6b\x85\xc1\xae\xcd\xae\x60\x2c\xc5\xe2\xae\xa8\x71\x9e\x2a\x85\xee\x91\xe1\xbe\x4f\x56\xd5\xd8\xdb\x51\x81\xc7\xcc\xb5\xaf\x02\x27\x95\x62\x96\x00\x00\x0f\xa5\x64\x4e\xb4\xa0\x85\x9e\x48\x03\xfe\x10\x5a\xd0\x84\x9b\x99\x25\xb7\x51\x34\xb9\x86\x16\xd1\x8a\xb9\x27\xf6\x48\xb2\xef\xb2\xd6\x63\x0a\xd6\x4b\xce\xcc\x44\xc9\x72\x3c\x81\x1a\x28\xbc\x2b\xc9\xa8\xf6\x04\x58\xfa\x7b\x67\xa3\x6b\x92\xce\x04\xcd\x79\x12\x5a\x67\x28\x39\xe5\x9a\x4b\x17\xc9\xc2\x71\xed\x1e\x23\xe7\xa1\xc7\x00\x06\xc8\x8e\x32\xca\x73\xb2\xa7\x19\x23\x81\x31\xf0\x9b\x4b\x54\x16\xd1\x59\xa8\x98\xfd\x79\x1c\x3d\x73\x28\x8a\x0e\x2a\xc0\x7e\x52\xc9\xe0\x90\x90\x80\x4a\x00\x6c\xee\x74\xf9\xa3\xf7\xc3\xd2\x2d\x9f\x99\x54\x90\xd0\xe6\xbb\xdf\x30\x91\xca\x28\xf5\xe5\xf0\xfc\x54\xc7\x86\xac\xeb\x19\x88\x23\xc1\x17\x99\x14\xe3\x18\x64\xae\xe2\x52\x2b\xf0\x05\xf4\x7f\x9c\xf2\xb4\xa4\x19\x8a\x7a\x37\x99\xa3\xcb\x53\xfc\x39\x1f\x4f\x4c\xff\x86\x81\x9b\x13\x4f\xc4\x2a\x35\xda\x3f\x94\x2f\xa4\xd4\x72\x0d\x47\x83\x71\xee\x34\x74\x19\x43\x87\x45\x3a\x03\x84\x5a\x97\xbc\x59\xcb\xba\xf1\x48\xed\x38\x44\xa0\x7b\x44\x74\x98\xde\x61\xe8\x06\x68\xb5\x21\xf0\x03\x5b\x2a\x03\xd7\x2e\xce\x0d\x5a\x1b\x56\x7d\x25\xc2\xc7\x26\xea\x2e\x0a\x9a\xef\x07\x81\x1e\x5d\x08\x16\x0f\xa3\xdc\xed\xaa\x6b\xa3\x43\x9a\x86\xa2\x4e\xb7\x0d\x7f\x60\x82\x29\x9e\xcc\xb1\x4e\xf8\xe9\x98\x1a\xd8\x7c\x4c\xd8\x9f\xa5\x83\x26\xa6\xf2\x9a\xf5\xe2\x69\xc5\x8c\x57\x2c\x2f\x32\x6a\xba\xc9\x54\xd9\xf9\x39\xf2\xa6\x47\xb1\x68\xbb\xfb\xa9\x48\xfb\x34\xb3\x7c\x7f\xfe\xd3\x91\xab\x87\xc3\xfd\x5c\xcb\x86\xbb\xaa\x3a\x7f\xa2\x3a\x82\x7a\xd9\xd2\x6d\x0c\x20\x6a\x43\x96\x82\xf8\x73\x4f\x06\x97\xc7\x8d\xc0\x56\xb0\xf6\x8f\xf3\x9f\x8e\x7a\x84\x0f\xd8\xc0\xff\x15\x6e\xf5\xf2\xd7\xc8\x31\xd6\x4b\x84\x3a\x1c\xd8\x35\x30\x95\xd8\x97\x1c\xff\xf6\x9f\xdf\xd8\x49\xda\x6f\xbf\xed\x7f\x13\x75\x0e\xfa\xf6\x9f\x96\x8f\x94\xbd\xa1\xfe\x69\x9c\xae\x0e\x92\xd6\xfe\xf5\xcf\x73\x99\x5e\x16\x2c\x19\xe0\x6b\xe9\x7f\xba\x3e\xea\x4c\x18\xab\xcc\x9f\x4b\x48\x54\xe3\x29\xee\x25\x78\xb6\x62\xff\xf2\xf1\x06\xd7\x80\xd4\x49\xac\x84\x1a\x26\xe0\xc8\xf1\x75\xc9\x42\x1a\xfc\x39\xb6\x2e\x85\xf9\xef\x8d\xe2\x6e\xa2\x46\x4a\x10\x26\x28\xb0\x0e\x05\x61\x1f\xb9\x06\x14\x1a\x7c\x57\x20\x07\x75\xb9\xf0\xfe\x14\xb5\xc3\x5a\x0a\x07\xd4\x21\x68\x67\x6a\xe7\xf6\x99\x90\xe6\xb3\xb0\xfc\x3e\xcf\x11\x8e\x4a\x49\xe8\x54\x02\xd2\x05\x1c\x22\x82\x94\x02\x1c\xe5\x55\x37\xc0\xe1\x8c\xe4\x5c\x1b\x7a\xcd\x06\xe4\xd2\x9e\x92\x71\xc2\x02\x52\x4f\x10\xe8\xe7\xc2\x52\x52\x0a\xc3\x33\xf8\xb6\x1a\xc7\x4e\x39\x3e\x3d\x4f\x47\x44\x97\x09\xb4\xbc\x55\xac\xef\xcf\x63\x77\xd7\x82\x24\xab\xde\xa5\x17\x16\x7b\x42\xd1\x40\x2b\x52\xf8\x29\x36\xd0\x15\x8e\xbd\x16\xb2\xb3\xed\x3c\xa5\x48\xaa\x33\x18\x88\x09\x5d\x94\xed\xb1\x9b\xf9\x7c\x22\xb4\x15\x5d\xfc\x41\xb0\x84\x69\x4d\xd5\x0c\x1b\x8c\xf2\xd0\x07\xd1\x25\xce\x82\x50\xca\xa9\x28\x61\x00\xc5\xb0\x5b\x6d\x99\x00\x75\x28\x19\x2a\x79\xcd\x44\xa8\x48\x08\x02\x2f\xa4\x65\x57\x49\xa8\x90\x0e\x20\x49\x32\xa1\x62\xcc\xaa\xa2\xf3\x9c\xa6\x40\xfb\x1f\x83\x6e\xe7\xdf\xc7\x52\x80\x8e\xac\x8a\xc4\x0d\x90\x62\x68\x0f\xc2\x10\x45\xf9\x20\x88\x77\xc3\xf4\xaa\x30\x87\x7d\x25\x9e\x35\x92\x89\xa4\x1b\xbf\x7a\x7b\x8f\x7a\x1f\xf4\x97\x35\xa6\x80\xe7\xcc\xd0\x94\x1a\xda\x59\x1a\xf8\x5b\x1a\x1a\x69\xba\x1c\x11\x60\x87\x28\x77\xc4\x9d\xe4\x5e\x79\x95\x05\x8f\x61\x08\x40\x1a\x4c\xfc\xea\x63\x0f\x7a\xcb\xd7\x2e\x86\x89\xd9\xdd\xa0\x1a\xba\xf6\xea\x30\xbc\x1f\x0d\x45\x16\x4b\x49\x5a\x82\xa2\x59\x89\xb4\x36\x31\xf6\x4e\x42\x30\x76\xa1\x3b\xa3\xf2\x55\x95\x4a\x90\xd4\x53\xbd\x97\xaa\x81\x78\xd6\x31\x61\x38\xb6\x4a\xf7\xb8\x11\x8e\xf8\xa5\xc0\xad\x3a\xb7\x0c\xb0\x4e\x63\x66\x74\x95\xa4\x89\xa7\x89\x15\x91\xee\x2c\x77\x6e\x0b\x38\x6a\xdc\xd2\x38\xcb\x7f\xb9\x3e\x8a\x0b\xa7\xa5\x3b\x2d\xec\xf9\xb5\xf6\x95\xe9\x2e\x16\x85\x1d\x65\xdf\xca\xb4\x7d\x50\x6b\xae\x35\x6a\x35\x70\x55\xb3\x82\xf5\x4b\x1a\xdc\x4a\xf8\x64\x08\xf1\xeb\x1a\xaa\x06\x1e\x01\x13\x3a\x6d\xee\x9d\xad\xf4\xdf\x7e\x68\x7b\x06\x8f\xeb\xc3\xe3\xfa\x2f\xdb\xfa\xc1\xdb\x27\x41\xfa\xab\x65\x32\x64\x7d\x42\x1d\x04\x3e\xac\x68\xbd\xec\x24\x2e\x31\xdf\x9b\x32\x9c\xbc\x2e\xc5\x23\xa4\xd5\xb8\xc2\x5c\xc6\xad\xbc\x7c\x45\x3e\xab\xe9\x5a\x4e\xa7\x0d\x96\x37\x56\x41\xed\x79\x53\x7c\xe0\x96\xdc\x43\x7c\xd5\x6f\xdf\x9f\x1b\x0c\x94\xbc\xe5\x56\xa9\xaf\xb6\x0a\x8a\xb7\x55\x92\xa1\xa7\x7d\x28\x76\xb5\x6c\xac\x64\x96\xf9\x46\xe8\x68\x8a\xcf\x25\x49\x41\xdf\x1e\x0c\xbb\xf4\x82\xcb\x23\x68\xfa\x82\xdd\x04\x95\x8e\x6a\x44\x2a\xf5\x41\x7f\x70\xcb\xf8\xcc\xb5\x65\xe3\x85\x8a\xb0\x43\x31\xc3\xa9\x1f\x87\xc5\xba\xcd\x00\xeb\xf9\x14\x25\x4b\x78\x98\x0b\xcd\x6e\xe8\x4c\xc3\xfe\xaa\x2c\xc2\xf0\x7c\x87\xdb\x5e\x0d\x7c\xc1\x46\x2d\x9a\xb3\xc7\x57\x67\x69\x01\xdd\x25\x06\x00\x2a\x0b\x17\xcd\xb3\x7d\xab\x61\x1a\xf4\xb3\x9e\xbf\xba\xcb\x2f\x80\x14\x4b\xc8\xaf\xea\x22\x50\x5b\x6f\x3a\x74\x7e\x0a\x03\x7b\x9b\x6d\x0c\x7f\xf8\xb3\x3c\x44\x1c\x87\xcc\xee\xb7\x0a\x4b\x0a\x78\x37\xfe\xed\x92\x04\xb4\x8a\xe9\x7f\x84\xc6\x44\x2e\xb4\xe3\x0b\x8b\xed\x51\x70\x78\x7e\x8a\x4f\x1c\x40\xeb\x59\x2a\x66\x4e\xcb\x32\x13\xae\xd2\x7e\x41\x95\x99\xa1\x73\xa4\x57\x7b\x5a\x28\xaa\xec\x80\x1c\x9d\xc6\x98\xdb\x74\x2e\x8b\xaf\xda\x1a\x01\xf9\xdc\xfa\xf8\xa0\xdc\xad\x2b\xb3\x69\x14\x69\x5b\xe2\xe9\xaf\x7a\x1d\x71\x84\x46\xe6\xbd\x16\x4f\x82\x22\x69\x2c\x88\xbb\x3d\x91\xe7\x32\x61\xf0\x60\x05\x7d\xd9\xf9\x96\x64\x5c\x72\x16\xf4\x33\x30\xf4\xed\xb4\x7a\x84\x8f\xec\x91\x26\x45\xdf\xd5\xb7\x07\xd7\xbb\xd3\xf1\x7c\xca\x28\x1a\xed\x76\xb3\xa2\x43\x35\x7e\x56\x3c\x40\xd8\xdd\x64\x4f\x48\x81\x3b\x1e\xef\xdd\xc7\x8c\xd9\x5b\x3c\xc6\x70\xcb\x80\xfc\x3c\x61\x22\x3e\xee\x62\x5f\x7b\x2f\x1c\xbb\x5c\xa4\x76\xb9\xe1\x2c\x04\xdb\x5f\x97\x49\xc2\x58\xf0\x16\xc5\xbd\xd7\x2b\x89\xe4\xa6\x9c\x53\x93\x4c\x98\x26\x5a\x02\xf8\xa8\x36\x34\xcb\x2a\x2f\x8d\x23\x97\x04\xcd\xc1\x3b\xe8\x23\x85\xa2\x56\x16\xee\x1c\x56\x45\x46\x9d\x57\x64\x54\x8a\x04\x73\xb2\xb8\x99\xf9\x19\xc4\x27\x3c\xfc\x0c\x4c\x53\x8d\xce\x1b\x3e\x42\x6f\x70\x64\x62\x06\x62\x82\x48\x9d\xa1\x10\xad\x9f\xf5\x0e\x76\xcf\xca\xcf\x21\x4d\xae\x6f\xa8\x4a\x35\x54\xbc\x53\xc3\xb1\xa9\x60\xaf\x36\xec\x5e\x34\x07\xfb\xf4\x9a\x6e\xb0\x1f\x0c\x59\x68\x28\x2d\xe7\x1e\x43\x68\x69\x64\x4e\x0d\x4f\xc0\x45\xc3\x47\x91\x6f\x3f\x0f\x7d\x1e\x42\x9c\x16\x65\x39\x9c\x0e\xee\x35\xc0\x5a\x53\x58\xa1\x61\x6e\x24\xe1\xb9\xd5\xb9\x28\x34\x4c\x1e\x85\xfa\x76\x1f\x88\xb8\x6b\xa6\x56\xb1\xfc\x19\xc2\x40\xd1\x5d\xe8\xfc\xb1\x66\xb9\x86\xe1\x43\x9c\x21\x38\xd8\x5d\x21\x77\x6f\x4e\x25\x22\xfe\x57\x96\xab\xed\x6c\x23\x66\xed\xd9\x05\xba\x61\x56\xd7\xd2\x77\xb2\xac\x1e\x2c\x9b\x13\x1f\x0b\xac\xfa\xe5\xda\x3b\x0c\x5c\x1a\xf7\x5e\xaa\x64\x51\x38\xd7\x5f\xbe\xbf\x38\x27\x88\xee\xa9\x29\xd3\x10\xd9\xf6\xa9\xe1\x96\x14\x63\x26\x98\xa2\x06\xe2\x03\x0e\xad\x10\x76\xef\xfc\x43\x20\x6b\x98\x44\x60\xe6\x7b\x87\x59\x31\xa1\xfb\xe4\xbd\x6b\x9a\x1f\xf8\x37\xe4\x9a\xaf\xa4\x91\xa2\x33\xd1\x47\x05\xb6\xaa\xe4\x5d\xc3\x6c\x55\xc9\xad\x2a\xd9\xe0\xda\xaa\x92\xf3\xd7\x56\x95\x8c\xaf\x90\xce\xdc\xad\x1a\x79\x11\xea\x13\xa2\xec\x92\x38\x5f\xab\x2a\x60\x78\x7c\x2f\x5f\x78\xd6\x06\x9d\x30\x5d\xca\x62\x4c\x5d\xeb\x9c\xa7\x77\xdf\x60\x4a\x1c\x7e\x38\x74\x4b\xe5\xb3\xf4\xaa\x0c\x41\xab\x25\x96\x86\x45\x4b\xea\x94\x87\x07\xaf\x61\x0d\xf5\xe5\x00\x3b\x5b\xf7\xc3\xb0\xfd\x2a\x29\xaf\x71\x23\xc0\xf8\xea\x70\x35\x49\xe7\xf0\x24\xf1\xf5\xe4\x72\xf8\xea\x57\x67\xb5\x01\xe4\x51\xea\x03\x48\xf7\x35\x02\xe4\xf1\xeb\x04\x48\xa8\xdb\xea\x7e\xdf\x5f\xf8\x3a\xb2\xb9\x9d\xef\x44\xf7\x5d\x3b\xbf\x86\x53\x16\xc6\xe1\x9a\xc8\x9c\x1b\xc3\x7c\x5e\x45\xd8\xc9\xe0\x0d\x8f\xeb\x68\x9c\xcc\x01\xb3\x1b\x93\x27\xd8\xc7\xd0\x69\x29\xd2\xe7\x40\x2b\xbb\xe1\x1a\x8c\x08\x2a\xac\x09\x88\x70\xb1\x20\x3b\xfa\x2e\xef\xd6\x9b\xb5\x5b\x39\xd4\x7e\xdc\xad\x1c\x8a\xaf\xad\x1c\x22\xd0\xb2\x2a\x83\xa2\x8d\x4e\x95\xc7\x43\x4c\xb8\x20\xbf\x95\x4c\xcd\x88\x9c\xb2\x28\xaf\x13\x9a\x52\x69\x9e\xba\xcc\x48\xe7\xb7\x6b\x6b\x75\x6d\xa8\x5e\x07\x7e\xc5\x93\x8f\x56\x7f\x06\x6c\x81\xce\x25\xfd\xfc\x03\xea\x10\x41\xb8\x0a\x7e\x89\xbd\x68\xb7\x32\x56\x0f\x1c\x06\x78\xf5\x09\xf8\xe2\x0e\xcf\x8e\xbb\x34\x81\xbb\x88\xa4\x93\xee\xa2\xe9\xe4\x36\x46\x5d\x46\x22\x24\x65\xf8\x06\x0e\xb3\x90\xf1\x10\x7c\x70\xe4\x9a\xcd\x7a\x2e\xb1\xc8\x75\x21\xf4\x37\x63\x8e\x5e\xbd\x55\x4a\x3b\x08\xbe\xfa\xd5\xf1\xa9\xd3\xa5\xcf\x0c\xaf\xb6\xad\x31\xea\x63\x79\xe2\x76\x73\x10\x76\x7c\xb0\x76\xd0\x42\x23\xbe\x6a\x4c\xea\x5a\xda\x40\xd2\x3b\x70\x2b\x80\xf2\xfb\x52\xa5\xc0\xa0\x50\x9e\x05\x12\xb6\x1b\xf6\x22\x5d\xbb\x6d\xf0\xf2\xcb\xf8\x48\xc4\x0a\x5b\xb0\x56\x13\x73\xcd\x66\xbb\xda\xa1\x54\x48\xa1\x27\xbc\xf0\xbd\x14\x41\x4e\xba\x5d\x49\x7e\x82\x54\x30\x3f\x04\x4a\xc4\x53\xd1\x23\x67\xd2\xd8\x7f\x4e\x20\xb7\x15\x43\x10\x92\xe9\x33\x69\xe0\x93\x8d\x26\x37\xbe\xda\x23\x11\xdb\xc5\x2f\x38\x44\x1f\x30\x8b\x1b\xea\x44\x7d\xc6\x23\x10\xd5\x25\xb7\x84\x85\xe1\x9a\x9c\x0a\x22\x95\xa7\xaa\xf1\x2d\xa3\xb4\x1b\xc2\x7b\x75\xa3\x60\xd1\x92\x31\xdc\x62\x48\x55\x5b\x8b\x3b\x86\x0b\x71\x27\xee\xbf\x01\xaf\x2f\x04\xea\x42\x9a\x26\xb4\x2d\xa2\x86\x8d\x79\x42\x72\xa6\xc6\x80\x68\x92\x4c\xba\x5e\xe2\xae\xce\x45\xbc\x3a\x3c\x1d\xf1\xea\x94\x0f\x41\x45\x79\x03\x09\xb8\x8f\xa3\xfe\xe0\xd8\x78\x5c\xe7\xb4\xb0\x2c\xf8\x3f\xf6\x54\x06\x2e\xf8\x5f\x68\x8b\xa6\x07\xe4\x90\x68\x2e\xc6\x19\xab\x7d\xe7\x02\x07\xf1\x30\x76\x04\x6b\xb3\xfe\x56\xf2\x29\xcd\x18\x26\xcc\x53\x11\x7a\x99\xc8\xd1\x82\xd2\xd5\x73\xbd\xd1\xac\x5c\x0e\x21\xea\x9d\x6b\x36\xdb\xe9\x2d\xb0\xed\xce\xa9\xd8\xa9\xc0\x91\x6a\x8c\x1a\x94\x0b\x88\x5e\xee\xc0\x77\x3b\x9f\x46\x4f\x7b\x02\xa6\x6b\x67\x3c\xe9\xdc\xcc\x47\x19\xd5\xba\x0b\x9c\x96\xdb\xb1\xc7\x2f\xa3\x27\x55\x75\xd7\xae\xe8\x22\xc1\x74\xe8\xee\x7c\xe4\x50\x63\xd8\x55\x0a\x6c\x07\x74\x9e\xba\x86\xce\x6d\x81\xdc\xe6\xcf\x9c\x30\x6c\x28\x43\xbd\x89\x51\x0a\xaa\x6c\x95\x5b\x28\xfe\x13\xc4\xc3\xe5\x28\xee\x03\xc1\x35\xb8\x9f\xb8\x2f\x4c\x15\xd2\x10\x2e\x92\xac\x4c\xb1\x03\x06\xfc\x14\x9c\x57\xdd\x18\xaa\x9d\x91\xb7\x73\x06\xfe\x29\x0c\xeb\x75\x4e\x9f\x59\xb3\x50\xfb\x33\x9f\x02\x01\x69\x27\x21\x9b\x00\xa9\xbd\x4e\x6a\x8d\x1a\x55\x39\xd4\x5b\x85\x1c\xd5\xf5\xc8\xd7\x7c\xa8\x18\x39\x9a\x50\x21\x58\x16\xe1\xb0\x38\x47\x27\x35\x86\x26\x13\x4c\x7f\xa6\xc4\xee\xe3\x8c\x99\x5d\x8d\x2d\xea\x73\x9a\x4c\xb8\x08\xe0\x05\x22\xe0\x11\x55\xa5\x54\x6b\x68\xae\xd3\xd6\x10\xea\xb0\x2f\xcb\xee\xed\x8d\x59\x2a\x50\xef\xd1\xdc\x3d\x15\xba\xbd\xdb\xe5\x40\x6b\x3c\x71\xa1\x4b\x08\xdc\x7b\x77\x6b\x97\x3c\xb8\xa7\xb9\x18\x31\xa5\x70\x4d\x86\xcc\xfd\x80\xf0\x5a\xdf\xd5\x81\xeb\xf7\x30\x91\x37\x24\x95\xe4\x06\x3a\x90\x4e\xad\x6a\x00\xf9\x37\xda\x2b\x15\xd1\x4c\x21\x23\x2e\x91\x79\xa1\x64\xce\xb5\xaf\xf1\x73\x0c\xb1\x36\xd8\x91\xac\x6c\x8c\xd3\x7a\x1b\xb8\xe6\xeb\x23\x62\xa8\x1a\x33\x63\x07\x27\xa2\xcc\x87\xac\x25\xac\xca\xba\x21\xbc\x3b\xed\x94\x11\x51\xea\x9e\x06\x18\xe4\xc2\x3d\x17\x01\x4f\x20\x19\x6f\x24\x95\x4b\x29\x0c\x5f\x3a\x9c\x76\xcb\x72\x3f\xb9\x73\xb1\x14\x46\xb7\x84\x4d\x6f\xd3\x40\x03\x97\xff\xe7\x9f\xcf\xba\xc1\x3d\x5f\xca\x5b\x37\x52\x65\xe9\x0d\x4f\x31\x51\x43\x93\x3d\xfb\xb8\xfd\x76\xef\xbc\x46\xe0\xf3\xd6\x1b\xf9\xe6\x86\xa7\x8f\x41\x6e\x9f\x19\x6c\xc9\x4d\x80\xde\xae\x57\x3f\x87\xbe\x70\xf0\xd8\x7d\x72\xc2\xb1\x8e\xdc\xfe\x85\x88\xa2\xf9\x90\x8b\x0a\x09\x21\x30\x04\x9c\x7c\x56\x2e\x78\x8b\x5c\x33\x83\x15\xc0\x50\x44\x2b\xcd\x84\x68\x9e\x97\x99\xa1\x82\xc9\x52\x67\xb3\x96\x6c\xfc\x54\x97\x74\x94\xb1\x8f\xb8\x9b\xdb\xeb\x2f\x61\xa8\xba\x1e\x33\x46\xb4\x07\xbf\xc2\x0b\x8a\x4c\x95\xdc\x9c\x1e\x04\xa5\x26\x94\xb1\xb3\x8f\x2c\x71\x75\x4e\x45\x56\x8e\x79\xa3\x92\xd6\x6d\x53\xc0\x46\xbf\x5e\xad\x29\x60\xd5\xf2\xac\xd4\xac\x42\xfa\x6a\xd7\x74\xfb\x69\xf4\xf0\x7b\x54\x55\xf1\x6a\x79\xa3\xbe\x94\x15\x4c\xa4\x80\x1c\x1e\xed\x38\x9c\xee\xda\xa8\xed\x10\xbb\xbb\x3e\x17\x4e\x3e\x1a\x45\xad\x90\xcf\x01\x4e\xc6\xc1\x82\xf3\x11\xa1\xa2\xad\xc0\x7e\x2e\xbd\xa5\xc8\x56\x6f\x7c\xf0\xa5\x3b\xed\x2f\x19\x11\xac\xd6\x5f\xb2\xe3\xee\x92\x78\xfa\xb9\x8d\xae\xeb\x65\x51\x4b\xba\x40\xba\xa7\xc4\xf5\x4b\x6d\xbb\x41\xea\x25\x4d\xe2\xe6\x66\xb5\xc6\x3d\xb9\x6d\x0d\xf9\xb4\x5a\x43\x8e\x00\x69\xa8\x3d\x8c\xef\x6b\x1c\x67\xce\x77\xe6\x3e\x74\x3a\xe7\x2a\xbe\x32\xb7\xa3\xa2\xe3\x15\x7a\xbe\xb8\x81\x5c\xdd\x3e\xd1\x76\x35\xaa\x24\xfd\x52\x88\x66\x42\x7b\xdd\x1d\xf4\xa8\xa1\x9a\x99\x36\x1e\xdd\xc5\x82\x06\xaf\x0f\xe2\xd8\xd8\x78\x12\x0a\x0d\x3d\xdc\x0e\xe9\x7f\xeb\x34\x47\x51\xbb\xd3\xea\x8c\x9e\xd0\x1e\xe9\x97\x85\xd4\x2d\x1c\x23\xb5\xcb\x9b\x50\xd3\xb2\x97\x7a\x8b\x53\xd6\xcd\xf6\xfd\xfb\xd3\xe3\x4e\x68\x66\x07\x9a\xa3\xd9\x20\xa0\xe9\x95\x82\xff\x56\xc6\x36\x30\x20\x0f\x06\x2a\xb9\xfb\xd7\x41\x8a\x71\xc2\x2a\x67\xfc\x31\xd7\xd7\xed\x81\xb8\x7f\x38\x3a\xa9\x0f\x59\xdf\xcc\x3f\x1c\x9d\x10\xf7\xe9\x4a\x3e\xf0\x87\x38\xc1\xdb\xe2\x39\x8f\x13\x56\x85\xc7\x52\xae\xaf\xd7\x00\xe2\xdd\xd6\x3c\x2d\xd2\xb3\x66\xd5\x82\x9b\xec\xcf\xf7\xd8\x9f\x11\x40\xed\x4c\x96\xe4\xc6\xa1\xd2\x39\x03\xee\x8a\x17\xaf\xc8\x89\xd0\xa5\x62\x55\x96\xd3\xbc\x2d\x67\x75\xa8\x95\xcd\x39\x00\xfe\xd3\xaf\x3a\xf3\xff\x77\xcd\x9f\xcf\x25\xa0\x50\x50\x65\xc0\x06\xeb\x08\xc7\x1c\xda\x94\xba\x21\x3d\x11\xee\x61\x9e\xd3\x91\xaf\x53\xe8\x39\x54\xaa\x00\xf6\xed\x6f\xb2\xec\x12\xc1\x54\xc6\x0c\xf2\x3a\x00\xd0\x92\x83\x94\x4d\x0f\x74\x4a\x5f\xf6\xe0\x31\x1e\xcc\xc8\xd4\xe6\x44\x35\xd9\x79\xb9\x33\x20\x97\x3c\xe7\x19\x55\xd9\xac\xd6\x71\xab\xba\xcf\x1e\xa6\x7e\x40\x48\x02\x79\xb1\x43\xf6\xa4\x82\x91\x13\x2a\x48\xc6\x7c\x25\xbf\xdb\xbe\x33\x34\x1f\xf6\x37\x43\x16\x92\x8d\x89\xc6\xa0\x58\xec\x86\xbd\xde\xe3\x71\x5e\x03\x3b\x3d\xae\xce\x33\x2e\xec\x21\x37\x20\xef\xdd\xe9\xe4\x8e\x7d\x64\x01\xd8\xb5\xfe\x8e\xcd\x5a\xa2\x8d\xf1\x59\xb4\xf3\x44\x2c\x3a\x3a\x36\x8d\xd0\x4d\xbd\x1d\x63\x6e\x2e\x58\x21\x3b\x50\xd1\x70\xa0\x39\xcf\x3e\x37\xf6\x03\xa9\x39\x74\x49\xa1\x86\x50\x14\x44\x49\x99\x51\x6b\x91\xa1\x5f\x7f\x40\x8e\x4f\xce\x2f\x4e\x8e\x0e\xaf\x4e\x8e\x5f\x11\x3f\x12\x8f\x75\xfa\x01\xb9\x8a\xf1\x8a\xa3\x92\x2f\x07\x0a\x1b\x9e\xd5\x73\x82\x95\x8a\xaa\xc5\x03\xe0\x37\x52\x41\x4e\x05\x37\x55\xe7\x2a\x4c\xa2\xcf\xa4\x70\x69\xf1\xf6\xd7\x2e\xae\x30\xe6\x98\xbc\x29\xdc\x60\xf6\xeb\xfa\x68\xb0\x43\xb1\xcf\x4b\x98\x4a\x23\xef\xc6\x9a\x75\xbb\x6a\x79\xd6\x61\x65\xfa\x26\x2d\x9d\x6c\xf2\x2b\x0c\xc8\x56\x5d\x79\xf0\x44\x0d\xcd\x06\x3d\xfe\xaa\x54\xb5\x5e\x80\x83\xc1\xee\x80\xd8\xb3\x7a\x77\xb0\xeb\x55\xb9\x6c\xa1\x61\x65\x18\x34\x86\xb9\xae\xf3\xf7\x80\x90\x77\xbe\x8c\x10\x70\x8b\x96\xf7\xbe\x44\xb0\xbe\xa8\xd3\xe1\xdc\x2e\xf1\x2d\x51\xcb\x61\xfc\x50\x87\x8b\x3d\xe6\x53\x26\xf0\xc5\xd6\x27\x98\xfd\x54\x3b\x59\xb5\x8b\xea\xcd\xdf\x5f\xbc\x59\xdf\x4b\xa1\x64\xe9\xe4\x95\x8e\x64\x9e\x23\x62\xf3\x24\x20\x8d\x54\x60\x21\x41\xea\xad\xc5\x38\x47\x9c\xea\x51\xa3\x0d\x3b\x27\xf1\xfd\x50\x73\xc6\x78\xf8\xd8\xd5\xf5\x8a\xca\x1e\x7a\x78\x9b\x2c\x07\x94\xae\x3d\xf4\xa6\x3b\x3e\x0f\xc2\x7b\x1c\x5c\x9c\x1c\x1e\xbf\x3d\x19\xe4\xe9\x13\x14\xbe\x4c\xa4\x85\xe4\xc2\xe8\xa6\x86\x79\xb3\x76\xdb\x6d\xc5\x76\x98\x76\x37\xba\xd9\x89\x1f\x2e\x4e\xf4\xf4\xcf\x88\x90\xef\x53\x66\x28\xcf\x74\xc4\x61\x46\x16\x32\x93\xe3\xe5\x5d\xb7\x1e\xc0\x3a\x7f\x42\xec\xd4\x3e\xed\x5b\x9e\x5c\x9f\xc5\xda\xbc\x55\x6f\x9d\xa2\xbe\x35\x2f\xf4\xd2\x08\xd4\x0a\x96\x20\x74\xd4\x7d\x06\x04\xfb\x84\x26\xc2\x02\x15\xd1\x27\x03\x22\xce\x37\x26\xa8\x90\xfe\xa3\x06\xde\xab\xda\x0e\xeb\x21\x7e\x53\xb3\xc1\x4a\xf3\xa6\x9d\xe2\xeb\x54\xff\x9b\x1b\xa9\x7e\x88\x14\x8a\xf5\x03\xa0\x32\x74\x90\x96\x2a\xd2\xc1\xe2\x33\xc5\x3b\x71\xbd\xcb\x17\xef\xca\x66\xf3\xce\xdc\x4a\x4b\x0f\x3e\x74\xc4\xab\xcb\xb2\x59\xd5\x2e\xc3\xb9\xb4\xe8\x18\x81\x92\x95\x8b\x94\x15\x8a\x4f\x79\xc6\xc6\xd0\x70\x87\x8b\xb1\x6f\x3d\x1e\xe1\xed\x43\xfb\x4b\xb6\x30\x2f\xbb\xd8\xda\xc4\x0d\xe0\x80\xb3\xce\xde\x5d\x41\x13\x27\x48\x85\x69\x6d\x4c\xda\x07\x42\xb3\xeb\x7e\xbf\x0f\xfe\xbb\xbd\x7f\x59\xab\x26\xcd\xf6\xc9\xcf\xcc\x3d\x47\x42\xa3\x29\x05\x9d\xd4\x27\x32\x74\xfa\x81\xb9\x56\x94\x05\x86\xc6\xe4\x38\x77\xd7\x81\xbd\xd3\xaa\xcf\x78\x9c\xd7\xee\xe7\x0c\xc0\x9c\xab\x98\xff\x53\xb4\x80\xd6\x74\x88\x76\x2c\xed\x7d\x9c\x68\xd9\x1e\x09\x71\xfd\xc2\x9d\x0b\x94\xe8\x59\x9e\x71\x71\x5d\xa1\x87\x8f\xa4\xe5\x63\xac\xeb\xe5\xe2\xda\xef\x1a\xc5\x68\x76\xfb\x89\xd1\x84\x47\xd7\x76\x5a\x98\xce\x42\x09\x57\xb3\x02\xf3\xd8\x82\xf0\x72\x49\x56\xb1\xa8\xdf\xd9\x79\xd2\x14\xe3\x3a\xd1\xbc\xbd\x78\x3f\xbd\x3c\xba\x3c\xad\xc9\x76\x41\xf0\xb3\x4f\x19\xb0\xbb\xed\x70\x85\x97\x7c\xd2\x16\x04\xff\xad\x59\x86\x53\x9f\x64\x65\xd3\x5f\x62\x12\xf5\xb9\x54\x86\x66\x6b\x10\x9c\xc9\x84\x16\x87\xa5\x99\x1c\x73\x9d\xc8\x29\xeb\xc8\x0d\x71\x33\xc1\x0e\x64\xbe\xe1\x02\xf7\x4c\x8a\xcf\x20\x47\x7f\x3b\x3c\x27\xb4\xb4\x5c\x67\x5c\x73\x99\xb5\xa5\xa7\x79\x0a\x5c\x62\xc9\xef\x23\xbe\xbf\x7b\xc2\x46\xbd\xfd\x36\x28\xfc\xe8\x41\x61\x90\x8b\xcf\x25\x10\xcc\x05\x37\x9c\x1a\xa9\x3a\x8b\xd6\x1d\x95\xda\xc8\xdc\x6d\x91\x53\x3f\x3c\xe4\x38\x81\xaa\x55\x7b\x62\xbd\x1b\x2b\x18\x8a\x40\xde\x53\x61\xcd\x3a\x9a\xb0\xb9\x3a\x93\x1e\xf4\x6f\xc1\xb1\x79\xb8\xe7\x1b\x57\x6d\x04\xc0\xe4\xd9\xb7\xaf\x6a\xbd\x0d\x17\x5a\xde\x7a\xa7\x63\xd5\x46\x75\x6d\xde\x62\xfe\x5b\x37\xf2\xc9\x39\xf7\x91\x2e\xff\x55\xd2\x0c\xe9\x79\xb6\x4e\x4f\x78\x7d\x1d\x3b\x79\x4d\xcf\x53\x7e\xdd\xcf\x82\xf7\xab\xd4\x88\xab\x8e\x77\x18\x45\x85\xb6\xcc\x50\xf7\x2f\xec\xba\x14\x83\x5d\xb2\x67\x92\x62\x7f\x6d\x94\xe9\xaa\x9a\x13\x5f\xd6\xad\xfd\x9b\x50\xc5\xd9\xee\xbd\xd6\x9e\x37\x00\x7b\xb8\x1b\xe7\x69\x8d\x40\xa8\x92\x91\x37\x5c\x1b\xdf\xc6\x15\x3e\xe0\xda\xf5\xbd\x02\xed\xfb\x9c\x48\x45\x78\xf1\x0f\x9a\xa6\xea\x15\x9e\xf5\xce\x3a\x84\xff\xd6\x01\xa1\x9c\x8a\x90\xb1\xb2\x67\x66\x85\x6b\xaf\x70\x75\x74\x4e\xb0\x3b\xf4\xd7\x7f\x79\x01\x9a\xf8\x97\x5f\xfc\xe5\x45\x4b\x56\x7b\xaa\xd5\x71\xa4\x6b\x2f\x64\xe7\x79\x0a\xcf\xa4\x86\x02\x14\x50\xac\x9e\x80\xd3\xcd\x49\x41\xe4\x7b\xcb\x84\xe1\xcc\xed\x52\x4d\xdd\xd6\x1b\xfc\x81\xea\x0d\x48\x28\x18\x47\x39\xfa\x58\xf2\x19\x45\xf3\xf9\x53\x11\xcd\x0d\xa9\xd9\x94\x73\xeb\x1c\x8b\xd2\x6d\x77\x57\xc7\xb9\x1c\x50\x4f\x79\x7c\x76\xf9\x8f\x37\x87\xdf\x9f\xbc\x81\xf7\x74\xd9\xf0\x96\x15\x9d\x59\xd2\x24\x77\x7b\x75\xd6\x6e\xee\x29\x6a\x4a\xce\x2e\x22\xf6\x67\xaf\x2f\xe7\x5c\x71\xf6\x93\x07\x86\xe9\xdb\xda\x96\x62\xd4\x82\x7a\x4f\x2d\x48\x00\xad\xac\x99\x5a\x4f\x71\x77\xc7\x11\x86\x08\x40\xbd\xe6\xd4\xb0\x3c\x84\xef\xd8\xda\xef\xd0\x90\x37\xc8\xc6\xa9\x71\x77\x07\x93\x2d\xc5\x90\x8a\x9d\x87\x91\x3f\x29\xb5\xdb\xa9\x87\xaa\x2b\xe4\x81\xdd\x4b\x18\xcb\x27\x3c\x58\x11\x86\x79\xd4\xca\x9e\xa8\xf6\x2c\x65\x3a\x34\xbd\x7d\x06\xdc\x5a\x2c\xeb\xf6\xd6\xfe\x74\x58\xda\x44\xce\xb5\x3a\xc6\x20\x4d\x2d\x44\x5f\xab\x5e\xbe\xad\x6b\xa2\xcf\x65\xa4\xce\x55\xa5\x0b\x9a\x74\xda\x8b\xa7\xfa\x08\x3f\x01\xa0\xb7\xa7\x78\xc0\xc0\xc4\xd7\x54\x66\x15\x9e\xdd\xcd\x76\x3c\xf2\xc3\xcd\x83\x81\x3c\x88\x4b\x7c\x97\xe8\x42\x7a\xb0\x97\x18\x35\x64\x23\x59\x88\x6c\xdc\x39\xf4\x73\x43\x07\xc2\x3a\x9d\x07\xc5\x44\x1a\x29\x3a\x2e\x21\x3d\x5f\x32\x68\x5d\x9e\xe1\x1d\x47\x55\xfb\xf5\x8a\x2f\xb0\xc2\x26\x84\xa6\xad\xc1\xe1\x4f\x6c\x29\x7c\x90\xba\x1e\xa2\x7e\x7a\x02\xa8\x48\x4f\x8f\xd7\x20\x7b\x9e\x3e\x0c\xcf\x43\x83\x73\x6b\x4b\x2f\x4d\x3b\xaa\x4b\x3f\x3d\x76\xb6\x80\xaf\x3d\xd7\x6e\xf3\x90\xdb\x77\xcf\x5a\xf4\x24\xa9\xcc\x8d\x54\x5d\xc1\x97\x9d\xd7\x86\x9b\xcb\x57\x74\xdf\x2d\xe0\x49\x3c\x4f\x59\x81\x6f\xf9\xe4\xe5\xc5\x25\x24\x72\xcd\x75\x94\x9c\x97\x10\xa1\x52\xf7\x11\x84\xc8\xd3\x11\x1e\x9d\x6a\x25\x8f\x0b\x1b\xb5\x36\x93\xd6\xef\x8a\x4e\x68\xf4\x93\x1b\xcc\xb9\x36\x2d\x7f\x54\xe2\x96\x06\x61\xe4\x1e\xba\x16\xf1\xaa\xa4\x15\x3f\xcd\xa4\x48\xfd\x40\x31\x2c\xd7\xd8\xca\x2f\xcb\xec\x7a\x4a\x11\x37\x01\x74\xe0\x52\x3d\x82\x7d\xf4\x72\x5a\xb8\x7e\xe3\xa9\xbc\x11\x37\x54\xa5\xe4\xf0\xfc\xf4\xd3\x0b\xd1\xd6\xc5\x8f\xb8\x0b\xda\x60\xd2\xd7\xa8\x08\x28\xf4\x43\x6e\x34\x66\xb3\x43\x3e\xba\x89\x7d\x48\xf6\x00\x0a\x19\x22\x56\x84\x59\x71\xe5\x66\x11\xe9\x48\x82\xc8\xc4\x50\xd7\xd9\x3d\x74\xbd\x7f\xf1\xe2\x05\x86\x14\x5e\xfc\xf5\xaf\x7f\x25\xd0\x75\x31\x65\x09\xcf\x17\x6f\x84\xbb\xfe\xfc\xf2\xe5\x80\xfc\xfd\xf0\xed\x1b\x42\x13\xb0\xc0\x10\x52\x15\x47\x86\xb5\x8b\x7f\xac\x7b\xe4\xff\x5e\xbe\x3b\xab\xda\xbd\xd7\xbf\x05\xd6\xc8\xfd\xeb\x0d\xc8\x71\x94\x7e\x1e\xbb\xfc\xa9\x99\x40\x4a\xbe\x90\x86\xd0\xd1\x08\x98\x13\x45\x32\xd7\x5e\x5c\x78\x5c\x34\x3e\x9e\xf8\x6e\xdd\x96\xad\x32\xc8\x8b\xe7\x76\x8a\x10\x62\xf1\x50\x82\x98\xe6\x0f\x63\x85\xd3\x01\xa6\xd2\x23\x19\xbf\x66\x64\xa4\xa1\x67\x77\xd5\x44\x43\x31\x6d\xed\xa7\x84\x0a\x3b\x3a\x0e\x16\xa6\x6e\x27\xf1\xb4\x73\x17\x5a\x76\x77\xae\x31\xac\x6f\x0c\xe7\xeb\x92\x50\x9e\x58\xb2\x3f\xd5\x5c\x82\xba\xbe\x18\xde\x07\xb9\xc8\x41\xf1\x05\xb1\x49\x68\x26\xc5\x38\x66\xba\x4a\x8f\xf0\x09\x88\xb3\x82\x35\x25\x46\x47\xdd\x54\xba\xe9\x4d\x86\x92\xfb\x2d\x6d\xd9\xdf\xbf\x1e\x5a\x8d\xa0\x10\xe9\x50\x96\xc6\xa7\xbc\xe1\x93\x00\x02\x0b\x30\x12\x91\xe0\xad\x1e\xdc\x59\x63\x9a\xee\x5a\xbd\x75\xd4\x67\xa9\x7e\x10\xd7\x94\xcd\x1e\x61\x34\x99\x90\x6b\x36\xeb\xa3\x88\x2f\x28\xa0\x1f\x00\x9d\x8f\x2d\x75\xb1\xbf\x50\x3d\xa3\x20\x61\xa9\xb5\x03\xdd\x22\xf8\xcc\xc4\x8a\xeb\x03\x7a\x82\x37\x95\xb4\xd3\xa8\x5d\xdf\x22\x11\x39\x0e\x7d\xa3\xc2\x44\x0a\xe3\x9a\x20\x86\x46\x45\x90\x69\x39\x57\x61\x6f\x25\x0a\x4b\xed\xcf\xf4\x5d\x4f\xae\xd2\x31\xed\x91\xe1\x94\x89\x52\x2c\xfc\x1a\x90\xc0\x21\xef\x55\x33\x87\xe7\x43\x7d\x03\xbc\x28\xa5\x73\xc2\x13\xa8\xaa\xb1\xb7\xbb\x7b\x3d\x95\x02\x21\x6a\x08\x00\x9a\x99\xd2\x91\x06\x72\x69\xed\xb3\x99\xd6\x84\xc3\x1b\xe6\x54\x5d\x33\x0f\x66\x4b\xb3\x01\x39\xb7\x93\x0c\x38\xe5\xd8\x37\x6e\x8a\x45\x10\x56\xa6\xc4\xd0\x06\xf6\x21\xbb\x83\xc1\x2e\x9e\x85\x4b\x80\x0e\x5a\xf3\x4b\x97\x2d\xc3\x3a\x6b\x15\x56\xd7\x83\x68\xa1\xb1\x75\x9a\xb5\x0e\xa0\x3d\xa1\x04\xdc\x11\x33\xf1\xda\x02\x6d\x09\x3e\x1d\x5f\x1d\xf7\xac\xea\xb6\xed\x65\x77\x4d\x2f\x5b\x84\xc0\xeb\x57\xd7\xcd\x2e\x3b\x6c\x75\x59\x4f\x38\x76\xf2\xa7\x3a\x41\xba\xea\xbb\xd7\x79\x63\xc5\xbc\x83\xb6\x56\xfe\xba\x0d\xb9\x38\x5f\xc5\xba\x00\x45\xdb\xca\xf2\x27\x65\x4e\x9c\x8e\x40\x86\x2e\x47\x6b\x89\xac\xb4\x70\xa4\x58\x0a\xac\xdf\x8e\xe8\xa2\x57\x3c\xe9\xc8\xb0\x98\xbf\xda\x1b\x1a\xf3\x57\x9b\x64\x96\xf9\x6b\x61\x9f\x87\x33\xb5\x88\x4a\x69\x61\x89\x8c\x84\x1e\x8c\x26\x08\x83\x01\x79\xeb\xce\x5c\x64\x6e\x3a\xd4\x32\x2b\x4d\x80\x55\x58\x72\x20\xc3\xa0\xbe\x63\x23\xc2\x0d\xf9\xdb\xa2\xe3\x19\x14\x13\x3c\xb3\xba\x39\xa9\xf1\xea\x50\xd8\xb4\x4d\x46\xc5\xeb\x0f\x96\x92\x8a\x57\x87\xab\xe0\xf5\xc2\x8e\x57\xe2\xd2\x61\x4a\xfa\x3a\xc0\x9a\xf6\x0a\x69\xa9\x46\xa3\x6a\xec\x15\x51\x6c\x78\xd8\x14\x6d\xb9\xba\xda\x3b\x5e\xdd\xeb\x38\x6f\xe0\xe1\xf9\xe9\xa3\x5b\x99\xd1\xb3\xb6\x76\xe6\x4a\xd7\x12\x87\x2f\x00\x11\x78\x27\xd0\x71\x45\x51\x17\x60\xb3\xf2\xf7\x0f\x60\xae\x2c\xbc\xf8\x6b\x7b\xee\x44\x41\xa9\xb9\x96\x0f\xe8\xc1\xad\x4e\xa8\xa8\x4d\x84\x4f\x97\x01\x69\xf6\xfc\x4d\x9b\x0d\x35\x48\x80\xfa\x2d\xea\x5e\xe6\xaf\xf9\xc4\x52\x47\x44\x72\x09\xbd\xf6\xd1\x7b\x12\xb9\x61\x0a\x99\xbe\xc2\xa6\xcd\x54\x08\x69\xb0\xc7\x7c\x0f\x9b\xf5\xeb\x1e\xba\x57\xac\x92\x19\x25\x5a\xa9\x28\x84\xd9\xb1\x5a\xd9\x19\xf3\x90\xce\x19\x88\x00\x13\x01\xed\xce\xbb\xe1\x24\xf2\x08\xdc\x64\xaf\x4a\x2b\xe9\xb2\xaf\x7a\x3d\xdc\x88\xe3\x7b\x26\xd2\xc9\x84\xe5\x14\x1b\x5c\x78\x02\x59\x79\x7d\xa3\xb8\x31\x0c\xf1\xaf\x99\xca\x35\x91\xa3\x9e\x37\x91\x10\xf5\x64\xfa\x72\xa7\xbb\xfe\xf4\x8f\x60\x2b\x13\xbf\x43\x9b\xc2\x57\xdd\x76\xd5\x7d\xff\x35\x3b\xc2\xee\x4e\x30\x98\x33\xe8\xb8\x23\xe6\x9c\x90\x56\x89\x98\x22\xfd\x37\x9a\x74\x9b\xe7\x66\xe8\x05\x65\x74\xeb\x66\xd8\xba\x19\xba\x18\xf1\xd1\xdc\x0c\xd1\xc1\xed\x85\xa9\x5b\x80\xd8\xf5\x10\xe3\xbf\x7b\xff\x43\x85\xeb\x10\x61\x19\x5b\x96\xf7\x9e\x07\xa9\xea\xfe\xff\xdd\xc1\x60\x77\xd7\xfb\x23\xdc\xfe\x28\xcd\xa8\xff\x35\x61\x22\x91\x29\x32\x95\x1d\x5f\x69\x03\x4a\x6d\x65\x80\xc7\x73\xc9\xfd\xb3\xe2\x18\x02\x8c\xdd\x2d\x4b\x74\x28\xa1\x7c\xce\xc8\xeb\x47\x55\xc1\x2a\xc5\x2b\xc0\x57\x39\x02\x06\x94\x3f\xa7\x81\x55\x39\x2c\x19\xcf\xb9\xc3\xd5\xb3\xe2\x82\x69\xa3\xc9\x1e\x7e\x38\x48\x8a\xb2\xe7\x6e\x18\xe4\x2c\x97\x6a\xd6\x0b\x37\xd9\x2f\x6b\xbf\x72\x77\xec\x83\xd6\x96\x94\x4a\x31\x61\xb2\xd9\x1f\x57\x7f\xf3\x24\xde\x60\xf5\x2d\x70\x45\x9b\x12\x8b\x65\xd7\x5c\xd9\x45\x00\xb6\x07\x47\x5d\xa0\x36\x9c\x43\xae\xd8\xa1\x17\xdc\x47\xf0\x29\x13\x53\x32\xa5\xaa\x71\xb1\xc3\xb2\xeb\x51\x34\xb6\x94\x4f\xb9\x96\x8d\xcb\xc5\x96\x0e\xb9\xe8\xfd\xe2\xae\x11\x80\x2c\x4d\x51\x1a\x77\xba\xf8\xbd\xed\xa1\xe6\xc2\x9e\x9e\x53\x7c\x5f\xee\x74\x38\xb9\x82\x1a\xc3\x94\x78\x45\xfe\x7b\xef\xc3\xe7\xbf\xf7\xf7\xbf\xdb\xdb\xfb\xe5\x45\xff\x3f\x7f\xfd\x7c\xef\xc3\x00\xfe\xe3\xb3\xfd\xef\xf6\x7f\xf7\x7f\x7c\xbe\xbf\xbf\xb7\xf7\xcb\x8f\x6f\x7f\xb8\x3a\x3f\xf9\x95\xef\xff\xfe\x8b\x28\xf3\x6b\xfc\xeb\xf7\xbd\x5f\xd8\xc9\xaf\x2b\x0e\xb2\xbf\xff\xdd\x7f\x74\xf8\x12\x54\xcc\xde\x75\x26\x82\xf1\xea\x3f\x8a\x1a\x51\x1f\xbb\x63\xd6\x25\xe4\x63\xbf\x72\x5e\xf7\xb9\x30\x7d\xa9\xfa\xf8\x90\x57\xc4\xa8\xb2\x2b\xd1\x55\x1d\x7f\x8f\x27\x63\x2a\x25\xa6\x42\x6e\xf4\x86\xcd\x06\x0a\x11\xcc\x1c\x7d\x74\x6f\xb0\x6b\x97\xba\x75\x04\xaf\x72\x3d\x4a\xc2\x91\x43\x86\xf9\x83\x67\x1b\x5d\xba\x8e\xbc\xdb\x54\xa3\x85\x6b\x9b\x6a\xb4\x78\x6d\x53\x8d\x1e\x78\x6d\x53\x8d\x36\xd0\x07\xb8\x4d\x35\xda\xfa\x00\x9f\x88\x0f\x70\x9b\x6a\xb4\xea\xb5\x4d\x35\x6a\x7c\x3d\xcd\x54\x23\xa7\xc0\x57\x79\x46\x1b\x9b\x66\xe4\x1a\xfc\x1f\x26\x89\x2c\x85\xb9\x92\xd7\xac\x65\x54\x76\x25\x03\x73\xe1\x99\x9b\x69\x6d\x76\xa5\x52\x76\xa0\x02\x76\xa7\xfc\xd1\x32\xe5\xd6\xcc\xec\x78\x1b\x1c\xba\x61\xbd\x9d\x69\x8f\x45\x91\xb2\x34\x3c\xcf\x0b\x2b\x63\xd7\x7b\x40\x0e\x89\x62\x09\x2f\xb8\x15\xed\x00\xa6\x03\x9f\xe3\x3e\x09\xfd\x80\xb9\xd1\x2c\x1b\xb9\x9e\xa8\xa2\xaa\x19\x56\x91\x09\xe9\xce\x8a\xa5\x8f\x41\xad\x40\xfa\x36\x96\x44\x4f\x64\x99\xa5\x44\xb1\x7f\x79\x75\xc2\xcd\xe6\x2a\x1e\x21\x76\x84\xc2\xab\x54\x8f\x75\x83\xd3\x82\x3b\xd4\xad\x4d\x12\x70\xec\x63\xc1\x15\x6c\xb6\x4b\x96\x48\x91\x76\xed\xde\x38\x99\x1f\xdf\xaf\xb5\x8b\xe6\xb0\x94\xa4\x25\xde\x00\x85\x90\x34\xe3\x29\x37\xb3\x90\x85\x81\xdb\xde\x2a\xa2\xd8\x85\xd6\x31\x82\xae\x16\x82\xd0\xa2\x50\x92\x26\x13\xa6\xa3\xb7\x41\xb5\xd2\x81\x4d\x84\xfa\xca\xac\x1c\x73\x81\x9a\x25\xfc\xc6\xaa\x21\xd9\x8c\x28\x69\x7c\x42\xd9\x2d\x0f\xbc\x8a\x06\x83\x9f\xa3\x2e\x61\xd4\x0c\xb2\xce\x64\x3c\x04\xce\x8a\x8f\xe2\x3f\x34\x91\x59\xea\x71\x4b\xbf\x7e\x61\x55\xf9\xc4\x71\xb1\x95\xf6\x80\x2a\x69\x24\xc9\xac\x5a\x64\x4f\x80\xdb\x7f\xfc\xc5\x57\x64\x22\x4b\xa5\x07\x31\x84\xc0\x4b\xf8\x0c\x9d\x14\xde\x14\x30\x24\x63\x54\x1b\xf2\xf2\x05\xc9\xb9\x28\xed\x59\xde\x11\xe3\x75\xa5\xbd\x46\x7a\xeb\x5f\xbe\x6a\x39\x5a\x37\x1a\xeb\x62\x06\x8b\xe3\xd6\x02\xfb\xb3\x39\xc5\xd5\xed\x71\x04\xc5\xc0\x1e\x8d\x73\x6a\xac\x3b\x92\xe2\x55\x14\x46\xae\x79\xe7\xff\x56\xca\xe1\xcc\xb4\x87\x81\xf9\x2f\x1c\xa7\x8e\xff\xe2\x3f\x5c\x05\x4b\xb5\x82\x52\x6d\x30\x95\xb5\x77\x8b\x1e\x73\x6d\x1a\xf5\x8a\xae\x70\x63\x1a\xfc\xb8\xed\x61\x3e\xb6\x16\x6f\x27\x45\xeb\x60\x3b\x7b\x5b\xcd\x3b\x95\x93\x84\x69\x10\x45\x1e\x3e\x0d\xfc\xb3\xf8\xd4\x86\x0f\xdd\x2c\xc4\x96\x3b\x11\x59\x3c\xf3\x77\xd0\x19\xb3\x15\xb1\xda\xe8\xf6\x9e\xb1\x3b\xa2\x16\x0e\x56\x97\x11\x9a\x8b\x31\x36\xb2\xcc\xcb\xcc\xf0\x22\xab\x28\x17\x7e\xe0\x0e\xe0\xd8\xe1\x4f\x23\x0f\x33\x45\xe0\x28\x84\x06\x87\xe0\xc8\x5e\x18\x8b\x09\x83\xfd\x18\x95\x3d\xc7\x0b\xaa\x68\x20\x7f\x22\xf3\x9c\xea\x7d\x17\x3b\xa0\x90\xbb\x82\x92\xdd\x1e\xc3\x8a\x66\xe1\xf5\xe3\x5c\x81\x75\x31\xae\x61\x82\x8a\xc6\x41\xbb\xba\xc3\x05\x86\x22\xf2\x26\xa4\xc7\x63\xff\xf4\x39\x8e\x75\x0a\xf1\xf7\x34\xb9\x66\x22\x25\xef\xb5\x27\x5c\x3a\x13\x34\x77\xe0\xea\x85\x92\xd8\xb7\x9b\xa5\x73\xbf\xd7\x3d\xe7\x48\x44\x94\x11\x0f\x02\x85\xfa\xd6\xba\xa8\x58\xea\x8e\xd0\x75\xdf\x6b\xab\x7c\xdd\x2d\xef\x34\x3a\x69\x15\x9f\x26\xcc\xeb\x8e\x76\x02\xeb\x7a\xf9\x69\x63\xc4\x37\xb2\x1c\x87\xc9\x35\xcd\xc4\x5d\x08\x47\x7a\x08\x3e\x02\x8e\x3a\xcd\xac\x88\x9b\x05\x78\x9d\x39\x06\x1b\xce\xd6\xd7\xb2\x5f\x0d\xdb\x03\x34\xed\x5e\x7c\x7f\x5c\x17\x66\x17\x34\x95\x9a\x7c\x9f\xc9\xe4\x9a\x1c\x33\x30\x1a\x1e\xb3\xdd\xbb\x1a\xa6\x4f\xbb\x4d\x63\x4e\xc7\xcd\xf2\x3c\xfa\x24\x97\x82\x1b\xa9\x9a\xc8\xe3\x0d\x02\xdb\xdb\xb6\xda\x5b\x0e\x22\xae\x86\xe9\xb3\x69\xb4\x67\x99\xbc\xa3\x0e\xbb\x13\x46\x14\x88\x18\x18\xd4\x77\xff\x68\x28\x30\xfe\x34\x91\x37\x7d\x23\xfb\xa5\x66\x7d\xde\x38\x4f\xa9\x35\x7d\xae\xd9\x0c\x92\xbe\x3a\xa1\xd0\x8f\x38\x58\xcd\x44\x37\x12\x3c\xe7\xf0\xb9\x55\xe4\x2e\xbe\x3f\xb6\xa7\xf7\x20\x36\x4b\x0e\x98\x49\x0e\x12\x56\x4c\x0e\xdc\x74\x9e\x3c\x59\xbd\x7c\xec\x86\xae\x87\x24\x91\x59\xe6\x70\xbb\xe4\x88\x1c\xb1\x62\x12\x1e\xb1\x19\xb4\x7a\xca\xcd\xd2\x0a\x29\xbb\x69\xac\x14\x89\x08\x3b\xa6\x93\x10\x11\xa3\xab\xe1\xc3\x7a\x41\x6f\x22\x6b\x7f\xc2\x9e\x24\x4d\x7a\xcb\x6d\x04\x79\x37\xa7\x47\xdd\xee\xa5\x1f\x0e\xfc\x3f\x51\xb8\xb9\xde\x92\xce\xe7\x8b\xd6\x44\xf4\xe9\x08\x2d\xcc\x94\xa5\x44\x4e\x99\x52\x3c\x65\x9a\x04\x19\x1d\x3b\x96\x78\xb6\x19\x94\xdf\x76\xc7\x7b\x5a\xf9\x01\x9b\xe3\x53\x88\x84\xb7\x1d\x73\x51\x78\xd3\x34\xe7\x62\x33\xb8\xbc\x21\xbd\x74\x42\x33\x76\xfa\xae\xb5\xe9\x7d\x89\xe3\xd4\xad\x6f\xff\x61\x04\xb2\x7f\x0f\xf0\xfc\x8f\x81\x67\x89\x90\x69\xb3\x68\xd8\x9a\x6d\xe8\x31\x35\xec\xa6\xa1\xe2\xd3\xaf\x44\x7d\xd3\xdf\x83\xe5\xf5\xb4\x6d\xf0\x35\x35\xc8\x88\xf6\x35\xa2\xde\xaf\x4b\x9d\x72\x1c\xd4\x8d\x6b\xd9\x93\x62\xae\xbf\x98\xdf\x9a\x87\xe7\xa7\xe4\x07\x7c\xde\xfa\x3a\x7e\x28\x69\xd0\x92\x39\x96\x39\xe5\x1d\x35\x62\x8f\x1a\x3a\xc5\x2f\x7c\x1e\x1e\x46\xf0\x69\x71\x17\xfa\x11\x1f\x97\x8a\xa5\xc4\x79\x3f\xb6\x6d\x0c\x36\xb8\x8d\x41\xb7\x4a\x71\xa5\x13\x47\x1e\x73\x5f\x19\x53\xe9\xc1\x9e\x8b\x40\x1d\x08\x29\x48\x44\x33\xa1\x39\x64\x1d\x44\x89\x71\xa0\x2c\x43\xfe\x77\x28\x83\x41\xc5\xb9\x47\xde\xc8\x31\x17\x5e\x3a\x49\x97\xec\x32\xa2\x3c\x6b\x47\xce\xad\xa6\xfb\x07\xd3\x74\xb5\xce\x4e\x04\x1d\x66\xcd\x33\x19\xeb\x07\x6f\x46\x21\x4f\x8a\xc1\x98\x07\x29\xd7\xf6\x5f\x72\x79\xf9\x06\x62\xb3\xa5\xf0\x96\x21\x44\x1d\xdd\xb1\x11\xea\x8b\x51\xb8\xac\x4f\x1e\xa0\xcc\xee\xac\x4f\xc5\xa9\x48\xed\xeb\x32\x5d\x4b\x00\x76\x4f\xc1\x2e\x20\xa1\x7a\x0d\xb3\x0f\x87\x8c\x5c\x4d\x78\x72\x7d\x1e\x85\x60\xa5\xb2\x9f\x89\xe8\xa3\x9a\xa2\x31\xff\xdd\xba\x0e\x1c\xf7\x5a\xe7\x5d\xb9\xbd\xae\xa2\x13\xf7\xd2\x91\xcc\x0e\x4e\xa8\xd6\x32\xe1\x55\xcc\x1f\x9c\xc2\xd5\x91\x9c\xc2\x91\xbc\x3e\x32\x80\x96\xf8\x28\xfa\x87\x67\x1c\xa7\xb4\x52\x1d\xeb\x1b\x5c\x78\x6a\xad\xed\xd5\x91\x95\x3b\xeb\xae\x79\x55\xeb\xa7\xe9\xad\xbe\xb9\xf0\xb3\xaf\x07\x75\x8c\xe2\xf5\x79\xd7\xc0\x79\x91\x55\x42\x5f\x4d\xd7\xdf\x63\x2d\xc4\x6a\x5e\xac\xbd\xcc\x0b\x37\x97\x7b\x83\x9f\xb9\x80\x34\x08\x95\x42\x16\x65\x86\x59\xab\xed\xdb\x8a\xfa\x68\x1e\x3e\x67\x0d\x01\xea\x4d\x6b\x46\xf4\xd0\x72\xbe\xe7\xd1\x97\x28\x32\x08\x5e\xfc\xe5\xab\xaf\x9e\x7a\xa7\xa2\x76\x8e\xb3\x75\xb7\x2a\x6a\x15\xea\xda\xa2\x14\x6c\x51\x0a\xee\xba\xd6\x1e\x89\xfd\xf4\x38\x04\x9d\x14\x89\x75\x51\x20\xd6\x16\x69\xa0\x65\x71\x59\x37\x85\x65\xad\xb1\x04\x1e\x15\x41\xa0\xa3\x1a\xab\xf6\x68\x01\x5b\x8c\x80\x3f\x06\x46\x40\x77\xb5\x55\x5d\xe1\x01\xb4\xaf\xa9\x7a\xfe\xb5\xff\xad\xc5\x44\xdb\x0a\xf3\x87\xd7\x95\x77\xd5\xbf\xa2\x2b\x3f\x7b\x67\x8e\x81\x9a\x57\xd7\xd9\xbb\x9e\x33\x30\xf3\xba\x42\x7c\x37\xd2\x0a\x8d\x35\x5a\xbb\xa4\xb5\xb3\x00\xa7\x22\x1b\x9d\xc1\x75\xae\xc1\x91\xde\x5d\xce\x85\xd8\xc3\xc7\x9b\x1f\x59\xdf\x86\x98\xb7\x6d\xd4\xb7\xf1\xc7\x70\xdd\x12\x7f\xd4\x35\x8c\x57\xef\x11\x04\x49\x08\x2a\x98\x1c\xc6\x7d\x54\xaa\xfd\x7f\x78\x7e\x4a\x12\xc5\x00\xd2\x80\x66\x7a\x40\x96\x68\x68\x3e\x52\xe3\x34\x3a\xaf\x99\x51\x63\x58\x5e\x98\xb6\x0c\xb7\x0d\x3f\xfe\xc1\xc2\x8f\x1d\xc7\x0c\x7e\x0a\xc3\x79\x6f\xd1\xa4\xcc\xa9\xe8\x5b\x69\x01\x81\xc8\x5a\x3e\xc7\xdc\xc1\x37\x20\xbe\x06\x0e\xa9\x49\x15\x43\x70\xf3\x52\xf0\xdf\x4a\x56\xf9\x17\x82\x7a\xb1\x01\xa1\x16\x98\x47\xc7\xb4\x43\xd5\x69\x4e\x8a\x24\x72\xa1\x94\xc9\x11\x24\xd0\xd1\x0b\x8c\x48\xff\xaa\xf9\xca\xcc\x84\xa1\x9a\x76\x0e\xe0\x00\xd5\x5d\x75\xfb\x0e\x0d\x3c\x9a\x65\xf2\x06\x9f\x1d\x2b\x1e\x76\xfd\xec\x5c\x1c\x1e\xc7\x90\x91\x9c\x2b\x25\x95\x0b\xf1\xc4\xd3\xc1\xb4\x1c\x6b\x27\x32\x85\x06\x97\x72\x59\x15\x97\xcc\xc4\xac\x62\x24\xa1\x02\x0b\x17\xed\x7f\xfb\xa4\x64\xec\x7f\xe6\xe4\xdd\x90\x4d\xe8\x94\xcb\x52\xe1\xaf\x8d\x24\x3b\xee\x2b\x38\x72\x67\xb2\x0c\x6e\xee\x12\xea\x94\xc2\xdb\xe9\x25\x74\x3a\xab\xbe\x04\x03\x35\x95\xde\x7f\xd8\x67\x1f\xb9\x36\x8b\xef\xe2\x49\xe4\x1b\x24\xac\x83\xf3\xa6\xba\xb0\x07\xec\x4f\x8d\x6b\x4e\xeb\xfc\x16\x8f\x56\x57\x49\xa7\x97\xf0\xd5\x7d\x0a\xa9\x43\x6a\xc1\x52\x71\x5f\x14\xf6\xf4\xd2\x3d\xf1\x2d\x1b\x76\x66\xda\x6a\xc4\x4f\x45\x23\x0e\x09\x12\x19\x4f\x66\xa7\xc7\xdd\xe8\x7c\x21\x31\xc2\x0e\x4a\xbe\xa7\x9a\xa5\xe4\x2d\x15\x74\x8c\xce\x91\xbd\xcb\xf3\xef\xdf\xee\x5b\x26\x01\xe7\xcb\xe9\xf1\xd2\xec\x89\xcb\x78\x66\x67\xeb\x2a\xdf\x26\xf3\x34\xea\x4c\x2b\x78\x20\x95\xd6\x56\xc0\x4e\xc2\xc9\xde\xa6\x65\xd7\x22\xb8\x11\xa6\x43\x78\xa4\x32\x3d\x2f\x5e\xa7\x79\x7a\xfd\x98\xaf\x1b\xf9\xaa\xef\x7a\xa7\xd5\x02\x4d\x2b\x04\x93\xe6\xd6\x5e\x51\xc3\xc6\xb3\x63\x56\x64\x72\x66\x97\xfb\x3c\x72\x9d\xe3\xad\x43\x3c\xea\xd5\x90\x26\x44\x95\x19\xc3\xee\x35\xf3\x10\x61\x82\xb1\xb4\x92\x53\x5c\x68\x43\x01\x20\x0c\xc7\xbf\x73\x46\x2b\x1f\x30\xab\x1e\x25\x7d\x9c\xe7\xbd\x77\xd5\xe1\x14\xed\x86\xba\xf3\x27\xab\x1f\x26\xf0\xf8\xfb\x39\xf4\x21\xc1\xc3\x95\xc3\x84\x75\x06\x87\x3d\x7d\x51\x66\xf6\xe8\xc8\xd2\xb9\x26\xa2\xa0\x5b\xb9\x35\x46\x64\x06\x90\x00\x76\xf6\x3d\x32\x2c\xad\xe2\xc5\x74\xcd\xbf\xbc\x08\x4b\x79\x33\xc1\xb8\xb1\xfd\x11\xa1\x45\x91\x71\xcc\xeb\x95\xca\x05\x7f\x23\x6f\xe3\xe2\x6d\xab\x08\x92\x07\xea\x1f\x0f\xd3\x37\xfa\x64\xca\xd4\x70\x15\x4c\x85\x87\xaa\x12\xb4\xe0\x10\x3b\x59\x59\xf3\xa8\x83\x42\x9e\x9f\xe2\xaf\xbd\xa5\x16\x9b\x66\xfe\x4b\x5c\x41\xb7\x36\x1e\x50\xd0\x75\xa5\x41\x6b\x23\xa0\x02\x1d\x9e\x9f\x22\x0c\x95\x03\x06\xaa\x5c\x16\x56\xb7\xa7\x98\x1c\x58\xa1\x11\xd2\xb1\x1d\xd1\x10\x29\xc2\x43\x99\x28\x73\x86\x60\x42\x55\x3b\x2b\x6b\xf0\x89\x59\x35\x7a\xe5\xf1\xb0\xf6\xc9\xea\xea\xc4\xc3\xc3\xe8\x0f\x0c\x9b\x3f\xf8\xe4\x11\x52\x5c\xb8\xd7\x7c\x7f\xf1\xa6\xd9\x22\x9e\xd5\xc7\x70\xe0\x31\x0c\x70\xf2\x0a\xaa\x0c\xa7\x19\x29\x55\xe6\xc3\x70\x98\xf4\xee\xd2\xd2\x26\x74\x1a\x01\xec\x0c\x08\xf9\x0c\x57\xce\x11\x16\xf7\x27\xb6\x77\xc5\x95\x1f\x95\x59\xd6\x23\x23\x2e\xa8\x15\xbb\xac\x20\x71\x38\xe8\x92\x8b\xc4\x9a\x5f\xd6\xd6\x77\xfd\x5a\x60\x46\xde\x28\x0b\x9b\x14\xa2\x8c\x10\x2d\x65\x59\x0a\xa0\x8b\xf0\x08\xbb\x61\x13\x70\x11\x58\xab\xf1\x28\x2b\xb5\x61\xea\x42\xda\xc3\x20\xca\x6b\x01\x38\x0a\x1a\x7f\xfd\x3d\x17\x29\xa4\x30\x5d\xc0\xc1\x91\x50\x41\x18\x07\xe7\x8b\x1d\x12\xe2\xd4\x96\x77\x2a\x86\xda\xd3\x65\x32\xb1\xaf\xb4\x53\xc8\x54\xef\x58\x31\xb2\x83\x2e\x3a\xbd\xb3\x6f\xff\x9a\x7f\x07\x4c\x53\x89\x7e\x77\x40\x0b\xbe\xb3\xdf\x23\x40\x20\x08\x9c\x49\x33\x79\xba\x7c\xe8\xdf\x15\x6c\xe2\x46\x5c\x78\x11\x8f\x00\x3c\x28\xaa\xee\x5f\x37\x13\x6e\x58\x68\xbe\x8d\x9e\x9d\x80\xaf\x32\x2f\xac\x09\x39\x14\x84\xe5\x85\x01\x6f\x31\xc9\x19\xf5\x21\x64\x36\x65\x6a\x66\x6d\x72\x00\xa2\x78\xf2\x9b\x3f\xf0\x63\x2b\x82\xcf\x75\x36\xaf\x98\x1c\x76\xd8\x02\x71\x77\x3f\xdb\xad\xd9\xf9\x59\x16\x49\xf3\x27\x4b\x4a\x38\x5e\x1b\x91\xf1\x27\xfb\xcb\x3a\x09\xf1\x23\x94\x96\x41\x7e\xbc\x79\xe3\x02\x19\x48\xab\x1f\xb9\x48\x51\x45\x3d\x34\x46\xf1\x61\x69\xd8\x05\xb3\x13\x4e\x30\xe5\xc1\x77\xe1\x73\xd9\xd1\x6e\x25\x96\x92\x1f\xe6\xfe\x14\x49\xbf\xa8\xd8\xae\xaa\x8c\xde\x31\xbc\xd7\xe5\x6f\x1b\xea\xce\x01\x9c\x41\xf0\x56\xa6\xcb\x37\xd5\x5c\x65\x48\x75\xb3\x53\x55\xa2\xce\x96\x7e\x2c\xa7\xc4\xce\x8a\xa5\x9a\xfe\xdd\xcb\x71\x07\xe9\x6f\x9b\x49\xe5\x1b\x00\x09\x1a\x7d\x73\x35\x2b\x98\x43\xda\x26\xa3\x8c\x8e\x2b\x36\x02\x79\x88\xea\xd3\xd1\xe5\x4f\xfe\x15\x34\xe1\xcb\x15\xd9\x7b\x35\xdd\xfb\x74\xdb\x7e\x45\xa5\x5b\xef\xb0\x0f\x59\xfa\xe5\xfd\x0a\x6e\x18\xfc\x76\x6e\x5a\x25\xec\x67\xee\x74\xa9\xdd\x46\xff\x2b\x87\xf0\x45\x23\x4e\xf0\x00\x62\xde\xdc\x84\x4c\x24\xd0\x50\x2e\x7f\xaa\xb1\xc9\x3d\xf3\xbd\x85\x69\xaf\xd9\xec\x46\xaa\xe5\x68\xe0\x8d\xf9\xeb\xce\x27\x62\x77\xfe\x7b\x37\xc8\x5b\x5a\xd8\xd7\xae\xf2\x3c\x51\xe0\xb9\xa8\x23\x5a\x05\x98\xa1\xe5\xb3\xe2\xa4\x1a\x53\xc1\xff\x8d\xc9\xb1\x89\xdd\xc7\x52\xd9\x3f\xf7\x30\x72\x81\x16\x7d\xc6\x12\xb3\xef\xf8\x6f\xa9\xdc\xbb\x87\x41\x69\x9a\x72\xd4\x2b\xce\xef\xe1\xa5\xbb\x89\xc0\xc5\xf5\x63\xd0\xfc\x8e\x8d\x75\x3f\xef\xdf\x1d\xfa\x5c\x41\x36\x97\xea\x8e\xec\xa6\x3b\x7f\x9f\x53\xee\x3a\xba\x6e\x1c\x55\x58\x4e\x79\xd3\xd7\xc2\xab\x05\x5d\x73\x6a\x4a\xc5\xcd\xd2\x03\xe9\xee\x1f\x72\xf1\x63\x39\x64\x2e\xda\xfb\xe0\x9f\x0b\x48\xde\x3b\x3c\x3f\xed\x76\x39\x16\xe1\xa5\xdd\x04\xad\x46\x43\x4a\x41\xf3\x21\x1f\x97\xb2\xd4\xd9\x2c\x76\x57\x52\x08\x56\x5b\x73\x1f\xfd\x35\x62\xd7\x10\x2a\xa4\x98\xe5\xee\x56\x91\x64\x65\xca\x6a\x23\x42\x4c\x6f\x2a\x79\x4a\x68\x69\x64\x4e\x0d\x4f\x48\x22\xf1\xbb\xfa\x48\xa5\x66\x84\xde\xf2\xdb\xa4\xd4\x46\xe6\x24\xa7\x4a\x4f\x68\x96\xdd\xb6\xc6\x1d\x9c\x6a\x77\x01\x68\xf7\xe1\xfd\x6f\xfd\x72\x8a\xb3\x6e\xc8\xdf\xf7\xe0\x85\xaf\xc0\xdf\x76\x72\xad\x06\x98\xde\xce\xa5\x2b\x8c\xe1\x4a\xe2\x97\xc2\xf5\xdc\xb3\x30\xf7\x51\xe7\xae\x9d\x7b\xef\x7b\xdd\x21\x0d\xef\xfc\x2d\xa4\xce\xb2\xf4\x34\xa7\xe3\x15\x14\xc9\x37\xd6\x6e\xa0\x62\xe6\x7f\x86\x28\x92\xba\x47\xa4\x72\x39\x20\xa1\x27\xb7\xfb\x2a\x00\x90\x2a\xf2\x0e\xc2\x6c\x52\xb9\x64\x6a\xc7\xa5\x90\x5a\xcf\xd4\x48\xaa\xdc\xea\x75\x5c\x91\x51\x29\xd0\xb4\x70\xb9\xd7\x60\xac\x38\x2f\x0e\xcd\xb4\x0c\x3b\x10\xe2\x76\xc2\x4f\x82\x50\x4d\x6e\x58\x96\x0d\xc8\x61\x96\x39\x78\xcb\x08\x1a\xa1\x2a\x79\xae\x32\x04\x86\x33\x92\xf2\x31\xd3\x86\xec\x5d\xfe\xed\x70\x1f\x4e\x6d\xf0\x70\xcc\x88\xa1\xbe\x4e\xac\xee\xb9\x81\xf3\x3f\x2d\x41\x4f\x48\xa8\xa1\x99\x1c\x63\x90\x1c\x3c\xb8\x22\x25\x45\x46\x67\x00\x52\x5f\x50\x05\x89\xa2\x09\x7a\x6f\x88\x2a\x05\xc0\xf3\x7e\xd2\x13\xe7\x7e\x51\x70\x17\x82\x6e\x1f\x78\xb2\xe1\x56\xbf\x07\xb5\xf4\x71\x8f\x32\xc5\x8a\x8c\xde\xe2\x6f\xb8\xa3\xec\xd7\xaa\xb9\x60\xc2\x4a\xc1\xc2\x18\x03\x72\x89\xbc\x93\x53\x93\x60\x08\xf3\x9f\x39\x33\x34\xa5\x86\x0e\xac\x2d\xf8\xcf\x7a\x61\x9a\xcc\x52\x3b\xd0\xed\x0b\x7d\xcb\x9c\x51\x5f\x5c\xde\x8c\xbd\xbe\x0b\xad\x52\x1b\x6e\x07\xfd\xdc\xef\xc7\x3b\x1d\x1c\x2d\xe5\x13\xbc\xfe\xc9\x47\x6b\x8a\xdd\x19\x5d\xab\xcd\x75\xfe\x47\x75\xff\x43\x56\x7f\x13\xc7\xad\x39\x03\x5c\xc4\x2b\xd7\xcf\xc7\x7f\x02\xce\xd5\xc3\xb3\xe3\xdb\x1d\x61\xf7\xbb\x0c\xee\x71\x11\xd4\x43\x06\x77\x4c\xcf\xbb\x9e\xdd\x37\xf5\xb8\x81\x2f\x4e\x81\xfa\x3d\x2c\xf5\xa0\x1e\x3c\xc5\xdf\x8c\x0b\x56\xaf\x3c\xc4\xdf\xdd\xee\x1f\x59\x29\x70\xb3\x4a\xb8\xe6\xbe\x42\xaf\x7e\x98\xec\xad\x37\xad\x16\xbd\xb9\xb7\x18\xab\x46\x70\x57\xed\x08\xc5\x95\x40\x79\x28\xd9\xf0\xce\xd3\x40\xec\x55\xa3\x5d\x2b\xfa\x77\xfc\xab\x3e\x60\xa2\x61\x29\x6b\x69\x44\xd7\x6c\xb6\xab\x5d\x2d\x8a\x14\x7a\xc2\x0b\xac\x16\x74\x01\x0a\xb7\xba\xe4\x27\x9a\xf1\x34\x0c\x81\x5c\x7d\x2a\x7a\xe4\x4c\x1a\xfb\xcf\xc9\x47\xae\x0d\x9a\x9f\xc7\x92\xe9\x33\x69\xe0\x93\x4e\x5e\x15\xa7\xf0\x80\x17\x75\x06\x30\xfa\xb8\x61\x5f\x45\x66\xb2\x7f\xa1\x53\x27\xf6\x3c\x51\xb8\x26\xa7\xc2\x6a\x04\xee\x8d\x42\x15\xad\x76\x43\xf8\x42\x11\x21\x45\x1f\xbc\xdf\x4b\xc7\x70\x84\x90\xaa\x46\x87\x3b\x86\x73\x43\x61\x3a\x1f\x7c\xc3\xb5\x17\xe2\xe1\xcc\xa6\xde\xed\xc6\x13\x92\x33\x35\x86\x78\x4e\x72\x4f\x3c\x63\x55\x57\xe4\x4a\x0e\xc8\x7b\xd7\x0a\x44\xe6\x9b\x5b\x1d\x17\x0b\x8b\x14\xdd\x8f\x62\x29\x47\x6f\xc6\xff\x58\xe9\x03\x94\xfa\x5f\x28\xa5\xd6\x03\x72\xe8\x9b\xa5\xc4\xdf\xb9\xb8\x56\x3c\x8c\x1d\x81\x6b\x62\x45\xc9\x94\x66\x0c\x91\xe3\xa9\x08\x55\x50\x72\xb4\x20\xd8\x7b\xae\xa4\xda\xee\xd9\xa0\x32\xed\x5c\xb3\xd9\x4e\x6f\x61\x69\x77\x4e\xc5\x4e\x55\x02\x57\x5b\xcc\x20\x44\x41\xdb\xda\x81\xef\x76\x9a\x9f\x05\x77\x0a\xcb\xd5\xdd\x2b\xf7\xae\x9b\xbe\xe6\xcb\x03\xd3\x4b\x95\x8d\x3d\xbd\x6f\x49\x08\xc1\x60\x45\x72\xa9\xc0\x9d\x69\x3f\x8d\x81\x34\xac\xaa\x7a\xcd\x8b\xa2\xc2\x1d\x29\x8b\xb1\xa2\x29\x23\x63\x45\x8b\xc9\x43\xd5\x12\xd4\x6d\x96\x0d\xff\x64\x14\xdd\x5b\x88\x7f\x87\x45\x57\x23\xbf\x37\x40\xbc\xe1\x0d\x9b\xe5\x46\xd1\xa2\x60\x8a\x50\x25\x4b\x70\xda\xe5\x53\xa6\x06\xfe\x16\x4c\xb9\x08\x7e\xe6\x44\x2a\xc5\x12\xe3\x4d\x74\x97\x15\x8c\x05\xab\x22\x85\x6a\xd4\x07\xab\x7d\x37\x6c\x38\x91\xf2\x1a\xaa\xe6\x80\x1d\x1f\xd1\x0b\xf2\x33\x3e\xeb\xb8\xfa\xcc\x1b\xb4\x9a\xa4\xcc\x50\x9e\x41\xae\xc9\xbb\x37\x6f\x5d\x36\x8a\xd7\x26\xfc\x2c\x97\x27\x76\x74\x60\x86\xd0\xd4\x65\x49\x5d\xb0\x29\x67\x37\x8e\xfe\xb7\xe5\x91\xf4\xc9\x98\x09\x48\x9e\xb8\x23\xc9\xa8\x4f\x34\x4f\xd9\x09\x14\xe3\xde\x3e\x50\x0b\xf7\xfd\x2d\x73\xbe\x4f\x84\xdc\x7d\x8e\xdc\x7b\x86\xac\x70\xd6\x07\x23\xfc\x5c\xaa\x3b\x80\x7f\x56\xab\x0d\x5e\xad\xee\xd7\x65\xa7\xbf\x22\x5f\x7d\xf5\xe5\xad\x37\xe5\xf4\x23\xcf\xcb\xfc\x15\xf9\xcb\x9f\xff\xfc\xe5\x9f\x6f\xbf\x8d\x0b\xbc\xed\xe5\xed\xef\xe7\xf6\xfc\xd1\xc5\xf1\x06\xd0\x3b\x0d\xd9\x7e\x77\x87\x06\x57\x18\x6a\x44\x79\x56\x2a\x97\x92\xba\xa2\xa1\xf2\x3a\xfe\x0d\x84\x75\xaa\x62\x0a\xea\x47\xf4\xc9\x68\x2e\x49\x6d\xc4\x05\xd3\xd0\x1a\xa5\x14\x8a\x25\x72\x2c\xf8\xbf\x59\xea\x3b\xa3\x40\xe2\x09\x00\xac\x7b\x16\x27\x4c\xa4\xd8\x93\xd2\x9e\xbc\x13\x2a\xd2\xec\xae\x84\x84\x15\xde\x34\xde\xc1\xad\x48\x06\xe7\xdf\x83\x08\xf6\xb6\xfa\xc5\x1c\xb9\xa0\xb3\xa6\x0b\x82\xe1\xb9\x8a\x64\x6b\xf5\xa6\x28\x18\x2f\xef\x30\xef\x97\xcc\x71\xc1\xfa\x44\xc3\x19\x3e\xfb\xad\x64\x6a\x06\x85\x23\x95\x79\x11\x25\xaa\x5d\x55\xb8\x02\xfe\x35\x9c\x5e\x87\x48\x2e\x73\x16\x79\xa5\x4a\x55\xe9\x28\x73\xcf\x86\xdf\x30\x0c\xe2\xfb\x70\x16\x39\x24\xa2\xcc\xb2\xdb\x6e\x15\xf2\xae\xc0\x57\x4c\xbb\x7b\x0c\xda\xd5\x2c\xcd\x55\x9d\x13\x4b\x28\xfd\x49\x5d\x14\xf1\x8b\x77\x64\x50\x6c\xb6\xd3\x22\x7e\xe1\x95\x72\x4e\x57\xcf\x37\x5d\x0d\xaf\x66\x05\x67\x06\x5e\x0f\x49\x48\x5d\x11\x65\xe6\x31\xdd\x1b\x78\x3d\x28\x7f\x68\x35\x57\xc7\x92\xa9\x6f\x9c\xc3\xa3\xc1\xcb\xaf\xe2\xfc\x58\xf2\xea\x5b\x17\xc8\x02\xc1\x57\xcd\xc9\x7a\x40\x3e\xd6\x8a\x2b\xb9\x82\x6b\x04\xaf\xad\x83\xe4\x41\x27\xd1\x0a\x82\xf9\x61\xce\x92\x95\x57\x55\x31\x2e\xa6\x12\x51\x9a\x1f\xa4\xc3\x5d\x2c\xfc\x70\x4e\x95\xbb\x01\xc9\xea\x74\xb9\xa0\xfc\xc6\x2a\xad\x35\x68\x49\xa9\xef\x77\xb9\xdf\xfd\x06\x77\xd7\xa6\x74\x62\x83\xd4\xdf\xbc\xcc\xd8\xcf\xdc\x4c\xde\x79\x34\x76\xc7\xd5\xa6\x2c\x32\x78\xd9\xe8\x0b\xcb\x42\x17\x95\x66\x78\x8a\x1d\xbc\x58\x22\xf3\x9c\x89\x14\x53\x99\x72\x7a\xcd\x48\xd5\x08\xd2\xea\x78\xa0\x06\xc3\x70\xec\x63\x41\x45\xa5\x27\x4e\xad\x2c\xbf\x8b\xa3\x56\xe4\xa7\x55\xcf\xda\x95\x8b\x3e\xee\x2e\xf6\x88\xaa\x35\x6a\x45\x1d\x64\xc8\x32\x09\x4e\x1c\xcc\x57\xc5\x5c\x6b\x77\x2b\x88\x64\xf7\xa9\x3b\xf5\x1c\xf2\x23\x13\xe3\x0a\x67\x4a\x67\xd0\xa4\xd5\x49\x60\x29\xd8\x80\x5c\x38\x15\x66\x35\xad\x68\x15\x71\xba\xa2\x28\x5d\xf9\x40\xac\xb0\x19\x1e\x4c\x59\xff\xbb\x98\xb6\x53\xff\xd9\x2a\xd4\xf5\x37\x3f\x67\xfa\x86\x4e\x09\x0f\x23\x6f\x7d\x4b\x57\xa7\x42\xa0\xed\x9c\xf0\x4a\xb0\x05\x30\xb8\xea\xfa\xe4\xe8\xe2\xe4\xf0\xea\xa4\x47\xde\x9f\x1f\xc3\xbf\xc7\x27\x6f\x4e\xec\xbf\x47\xef\xce\xce\x4e\x8e\xae\xac\x1e\xf1\x19\xe2\xc0\x5b\x33\xce\x52\xd7\x9e\x47\xb2\x2e\x2d\xa8\x98\x91\x51\x69\xac\x38\xa8\x1e\x56\x9b\x05\x45\x1f\x00\x4d\x53\x6b\x32\x3e\xb9\x35\x5c\x4e\xf0\x79\xb7\x49\xdc\xec\x02\xa1\xf3\x5d\x31\xd7\xfd\x6a\xd2\xca\x4c\xb2\x72\x55\x44\x6d\xca\x3b\x0d\xcb\x21\x3e\x08\xf2\x5a\x2a\xe2\xfa\x7c\xbd\x22\xbb\x85\x4c\xf5\xae\x2b\x3a\xb1\xff\x3d\xc0\x8f\x0e\x32\x39\xde\x0d\xb5\x28\x8c\x64\x72\x4c\x74\x39\x0c\x35\x42\x70\x9a\xc2\xdd\x9f\xf9\xdb\x6a\xa5\x15\xbd\x50\x28\x14\xfd\x2a\x0c\x5e\xfb\x4d\x7c\x43\x3c\xee\x01\x34\xf9\xaa\xdd\x69\x3f\x98\x1f\xf0\xb3\x83\xe5\x33\xf0\x8a\x13\x57\x73\xbf\xf8\x20\x2c\xbb\xde\xf0\x2c\x4d\xa8\x4a\x17\x78\x16\x0e\x37\x5c\x72\xa0\x1e\xe2\xe6\x62\x8f\xe4\x6a\x70\x07\x9e\x21\xa7\x4c\x65\xb4\xc0\x3c\x75\x00\x2e\x86\x04\x28\x78\xc8\x31\x2b\x18\xd4\x69\xf9\xae\xdd\x4c\x24\x99\x04\x9c\x0e\x3c\x19\x7b\xf5\x57\xc7\x84\x28\x0f\x4a\xe8\x8a\x7d\xaa\x1d\xb2\xb3\xb1\x62\x0e\x92\x9d\x1f\xc4\xbd\x98\x1e\x7d\x2b\xd8\x4b\xa8\x1e\x41\xa3\x31\x68\xbe\x8c\xec\xb8\x2a\xb8\x9d\x1e\xd9\x09\x78\x26\xa9\xd3\x92\x77\x3e\xdb\xa9\x6e\x88\xeb\xa8\x40\x49\x76\x81\xa9\x3e\x3c\x27\xae\xb6\x84\x05\xf6\xe1\xb3\xf0\xe8\x0a\x93\xc6\x1e\x6d\xce\x89\x05\x73\xa8\x0f\x34\xa8\x4d\x64\xe1\xa9\x55\x09\xe0\xbd\x4f\xb4\xd3\x8f\x7e\x6e\xa0\x5c\x1e\x4b\x09\x1d\x71\x54\x54\x71\x33\x20\x97\x35\xe6\x09\xe1\xbf\x18\x34\x87\x2b\x52\x50\x65\x4d\x11\x7f\x67\xbd\x5f\xd8\x67\xf7\x76\x0b\x5b\x81\x09\xa2\xf8\xca\x8a\x5a\xfb\x65\xf8\xc5\x51\x46\xb5\x5e\xe2\x79\x05\x41\x60\x07\x26\x0c\x47\x26\xd4\x07\x9f\x00\x84\x7a\x42\xa7\x77\xc0\x25\xac\x30\x69\x43\xd5\x98\x99\xbb\x23\x23\x54\xcc\xde\xdd\x09\x93\xd6\x5f\x19\x58\xb5\xbf\xda\x6e\xfa\xd8\xaf\x40\xb9\xfa\x5c\x98\xbe\x54\x7d\xfc\xc9\x2b\x62\x54\x79\x5b\x8c\xcb\xf0\x9c\xc9\xd2\x5c\xb2\x44\x8a\xe5\x75\x15\xee\xbe\xce\x42\x3d\x0f\x28\x36\x71\xd1\xc6\x43\xaf\x46\xf8\x8a\x93\xd8\xc9\x5e\xe9\x18\x3e\xc2\x58\x07\x69\x79\xf7\xe6\x6d\x9b\xc5\x26\x50\x66\x7d\xf7\x4a\xfe\xe4\xc4\xbe\x18\x87\x99\xba\x99\xdf\xf9\xb3\xb7\xa5\x79\xf8\x8f\xfe\x3f\xe6\xae\x2c\xb7\x6d\x1e\x08\xbf\xe7\x14\x7c\xfb\xff\x02\x8d\x7b\x86\xc2\x79\xeb\x82\xc2\x4e\x0f\xc0\x48\x74\x2c\xd4\x96\x0c\x52\x8a\xbb\xa0\x77\x2f\x38\x33\xa4\x4c\x99\x9b\x22\xd9\xb1\x1e\x6d\x72\xb8\x88\x43\xcd\xfa\xcd\xd2\x7a\xae\xe2\xad\x69\x33\xe2\xc0\x1c\xc1\xf5\xab\x96\xb7\xdd\xd9\x69\x70\xde\x0d\x5d\x96\x6b\x4c\x6c\x23\x99\x7e\x0d\xfd\x4e\x8d\x7c\xe7\xf8\x04\x88\x73\x0b\xed\x4c\xc8\xe4\x82\x51\x47\xcd\x9f\xad\xe4\x15\x2a\x90\xbc\x68\x3b\xc8\x9d\xe6\x2d\x85\x57\x12\xbc\xce\x9d\x6f\x19\x5e\x95\x31\xa6\x26\x16\x42\xb6\xea\x33\x57\xed\xf7\x43\xc9\x03\x39\x54\x83\xb0\x49\xd5\x02\xc3\xa0\x60\x7d\xac\x45\xa9\x6f\x78\xda\x02\xa4\xc7\x8e\xfa\xea\xed\x90\xe2\x58\x4f\x7e\xcf\x40\xba\xfb\xbd\x1e\xca\x3f\xeb\x55\xa3\xf7\xe4\xa3\xf7\x02\x72\x03\x46\x52\xb3\xd5\x9f\x13\x09\xd4\x58\x2d\x7e\xfa\x34\xee\xe9\x33\xde\x09\x5e\xfb\x83\xf6\x07\x27\x0a\xda\x8d\x3f\x43\x34\x00\x3b\x6e\x2b\x2d\xb2\x62\xae\x99\x62\x46\x84\x2a\xc5\x4e\x04\x52\xce\x26\x06\xb4\xd2\x08\x0f\x34\x40\x56\xb0\xd5\x37\xb7\x8f\x35\xe8\x93\x10\x4e\x29\x1c\xbd\xb0\x4c\xd2\x83\xd5\x9a\x86\xab\x02\xf1\xe5\x69\xd7\x14\x3f\x10\x64\x0c\xf0\x06\xaa\xdf\x42\x9a\xe8\xf7\xca\x56\xf5\xa2\xca\x53\xcf\xa6\x2a\xa6\xd9\x37\x53\x7e\x08\xa8\x68\xda\x7a\x03\x2d\xfd\x46\xf6\x96\xc5\xae\xa6\x1c\xbe\xeb\x04\xd0\x1a\x45\x05\xb2\x06\x1c\xcf\xc1\xb9\xce\x82\x81\x36\x80\x81\x48\x2a\x23\xdf\x53\x8e\xcd\x87\x4f\xe1\x7c\x94\x59\x83\x62\x63\x59\x31\xd8\x02\xb6\xaf\x2e\xa2\x50\x38\xd1\xfc\x99\x5c\xcb\x57\x22\x4f\x86\xe5\x0b\xe9\x76\xca\x39\xd4\x66\x0d\x71\x9c\xdd\xdb\x17\x4c\x46\xe8\x9f\x31\x3e\xbc\x5c\xf0\xd5\x51\x5e\xa6\x7a\x0c\x48\xa6\x0b\x6e\x62\xd5\x0e\x4a\x35\x45\x4f\xfc\xa6\x91\x41\x05\x66\xbe\xc9\xc7\xb3\xaa\x92\x84\xb4\xf4\x19\x8e\x5d\x3b\x4f\x21\xd2\xb7\x97\xed\xf2\x9e\x71\xb6\xad\x54\xdb\x48\x72\xad\x41\xf1\x30\xc9\xa1\x42\xa9\x3f\x06\x6c\x9e\x68\xb8\xa5\x9d\x02\xe3\x87\x83\xe0\xb6\xd8\x10\x7d\x9b\xa0\x5a\x90\x14\x45\x23\x4b\xef\xc4\x8c\x76\xef\x95\xa5\xbc\xc3\xcf\x90\x21\xba\xe3\xaa\x7d\xb4\x73\xd0\x02\x42\xe6\x6d\xec\x8a\x3f\xb4\xc4\x7e\x35\x06\x6e\xa6\xa9\xfb\x3f\x1b\xc6\x6b\xb4\x6a\x4c\x93\xc1\xd3\x42\x46\xbf\x36\x94\xe6\x5e\xb5\xae\xa3\x95\xdc\x4e\x96\x78\x9d\x99\xef\x85\x52\xd1\x74\xa7\x41\x90\x06\xe0\x04\x33\x8b\x13\x4c\xdd\xcd\xc7\x1e\x05\x04\x0c\xc7\x34\xa8\x60\xbf\xc2\x47\x8d\x81\x98\x80\x06\x05\xcb\x56\x93\x5e\xd9\x61\xcb\x55\xee\x62\x2c\x17\xd9\x40\xe3\x6c\x76\xc8\x9c\x8d\x14\x5c\xc5\x12\x36\x07\x7b\xfb\x24\x2b\xb1\x61\x4b\xbe\x17\xbb\x25\x57\x73\x6e\x2e\xdc\x00\x0b\x26\x16\xcf\x0b\xf6\xdf\xea\xc4\xdb\xfa\xb5\x69\xbf\xc4\x0a\x36\x24\x30\x0a\x72\x38\xfa\xa2\xbc\x3c\x59\x49\x48\x73\xee\x44\x9e\x9d\x3c\xc3\x08\x87\xde\x04\x6f\xc6\xb3\x8e\x43\xfc\xe8\x72\x62\x27\xc1\xe2\x57\xbc\x96\x23\x13\x29\x95\x21\x2e\xbc\x65\xfe\x4b\x2c\xc9\x92\x58\x7b\x4d\x26\x67\xab\x7b\x74\x34\x57\x30\xfb\x9f\x06\xd8\x61\x65\xfe\x4a\x69\x15\x6c\x4e\xb1\xe5\x6d\x53\xfe\xe9\x05\x06\xff\x8f\xc8\xe5\xf7\xf1\xaf\xf0\x54\x38\x81\x12\x1c\x2d\xfa\x04\x5c\x33\x00\xe3\xc1\x8c\x4a\xb6\x0e\xb2\x01\xd0\xb9\xd8\x50\x95\x33\x6a\xe3\x9c\x8f\xff\xa1\x8e\x9c\x78\xc1\xaa\x8d\x90\xf0\x21\x58\x2d\x94\x66\x8a\x77\x91\xe1\x33\x15\xaa\x3c\x65\x2a\xad\xe8\x26\x95\x58\x96\x7e\xb5\xa6\x51\xec\x05\xe3\x93\xab\xb3\x65\xe8\xc4\x23\x94\xb5\xb4\xc6\x33\x82\x58\x52\xfc\x1b\x49\xcf\x6f\xc0\x1d\x3e\x03\xe4\x61\xdd\x65\x05\x97\x34\x3a\x86\x0b\x7d\x03\x17\x80\x3e\x8d\x77\x37\x5d\x4f\xae\xfd\x76\x35\xbc\x03\x21\xdc\xd0\x3d\xe1\x73\x2d\xab\xeb\xaa\xf9\xf6\x3c\x89\xe3\x91\x4d\xef\x06\x40\x49\x92\x07\xe8\xb2\x70\x09\xf8\xa4\x4e\xdd\xdb\x9f\xb7\x1c\x58\xa8\xe8\x19\xbb\x10\x3e\x8c\x12\xf2\x45\x94\x8e\xa7\x8e\xb0\xe5\xdd\xdf\x4e\xfc\xb6\x3d\x7d\xda\x76\xf6\xe7\xef\xdd\xbf\x00\x00\x00\xff\xff\x12\xac\x7d\xb1\x7e\x88\x07\x00") func operatorsCoreosCom_clusterserviceversionsYamlBytes() ([]byte, error) { return bindataRead( @@ -124,7 +124,7 @@ func operatorsCoreosCom_clusterserviceversionsYaml() (*asset, error) { return a, nil } -var _operatorsCoreosCom_installplansYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5b\x4b\x8f\x23\xb7\x11\xbe\xcf\xaf\x28\x8c\x0f\x6b\x03\x2b\x8d\xed\x00\x41\xa0\xdb\x66\x1c\x07\x93\xf8\xb1\xd8\x19\xef\xc5\xf1\xa1\xd4\x5d\x52\xd3\xc3\x26\x69\x3e\xa4\x55\x0c\xff\xf7\xa0\xc8\x7e\x4a\xdd\xad\xd6\xec\x78\xbd\x08\xdc\x97\xdd\xe9\x2e\x92\xf5\xae\xaf\x48\x0a\x8d\x78\x4b\xd6\x09\xad\x56\x80\x46\xd0\x3b\x4f\x8a\xff\x72\xcb\xc7\xbf\xb9\xa5\xd0\x37\xbb\x2f\xae\x1e\x85\xca\x57\x70\x1b\x9c\xd7\xe5\x1b\x72\x3a\xd8\x8c\xbe\xa2\x8d\x50\xc2\x0b\xad\xae\x4a\xf2\x98\xa3\xc7\xd5\x15\x00\x2a\xa5\x3d\xf2\x6b\xc7\x7f\x02\x64\x5a\x79\xab\xa5\x24\xbb\xd8\x92\x5a\x3e\x86\x35\xad\x83\x90\x39\xd9\x38\x79\xbd\xf4\xee\xf3\xe5\x5f\x97\x9f\x5f\x01\x64\x96\xe2\xf0\x07\x51\x92\xf3\x58\x9a\x15\xa8\x20\xe5\x15\x80\xc2\x92\x56\x20\x94\xf3\x28\xa5\x91\xa8\xdc\x52\x1b\xb2\xe8\xb5\x75\xcb\x4c\x5b\xd2\xfc\x4f\x79\xe5\x0c\x65\xbc\xf6\xd6\xea\x60\x56\x30\x48\x93\x66\xab\x59\x44\x4f\x5b\x6d\x45\xfd\x37\xc0\x02\xb4\x2c\xe3\xff\x93\xe8\x77\x69\xd1\xd7\x12\x55\x7c\x2b\x85\xf3\xff\x3e\xfe\xf2\x8d\x70\x3e\x7e\x35\x32\x58\x94\x7d\x56\xe3\x07\x57\x68\xeb\xbf\x6b\x17\xe6\x85\x84\x49\x9f\x84\xda\x06\x89\xb6\x37\xea\x0a\xc0\x65\xda\xd0\x0a\xe2\x20\x83\x19\xe5\x57\x00\x95\xd2\xaa\x49\x16\x80\x79\x1e\x0d\x81\xf2\xb5\x15\xca\x93\xbd\xd5\x32\x94\xaa\x59\x84\x69\x72\x72\x99\x15\xc6\x47\x65\x3f\x14\x04\x1b\x61\x9d\x87\xdb\xfb\xb7\x20\x14\xf8\x82\xa2\x4c\xa0\x37\x90\xc9\xe0\x3c\xd9\x7b\xb2\x3b\x91\x51\xe5\x1b\x71\xfd\x66\x3a\x80\x9f\x9d\x56\xaf\xd1\x17\x2b\x58\xb2\xba\x97\xe3\x83\x7e\xfc\xfc\xa7\xce\xb8\x64\xc3\xdb\xfb\xb7\x9d\x77\xfe\xc0\x12\x3a\x6f\x85\xda\x4e\x71\x8c\xc6\x58\xbd\x43\x09\xa5\xce\x69\x82\x97\x9a\xee\x64\xd9\x57\xa7\x1f\x46\xd6\x1e\x9e\x32\x2a\x7f\x68\xca\xde\x87\x34\xe5\x5a\x6b\x49\x95\xb7\xd4\xc4\xbb\x2f\x50\x9a\x02\xbf\xa8\x5e\xba\xac\xa0\x12\x5b\x23\x69\x43\xea\xd5\xeb\xbb\xb7\x7f\xb9\x3f\xfa\x00\x7d\x5d\x74\x5c\x0e\x72\x8e\x42\x72\xd1\x80\x95\xe3\xc4\xe8\x61\x43\x22\x38\x8a\x16\x6d\x23\xe0\x84\x4d\xbd\xfe\x99\x32\xdf\x79\x6d\xe9\x97\x20\x2c\xe5\xdd\xd5\x59\x23\x75\x8c\x1f\xbd\x66\xed\x74\x5e\x19\xcb\x6b\xf9\x4e\x24\xa5\xa7\x93\x64\x7a\xef\x8f\x24\x7b\xc1\xe2\x27\xba\x9e\x64\x95\xc3\x53\x5e\xe9\x8c\x85\xf2\x85\x70\x60\xc9\x58\x72\xa4\x7c\x2b\xb4\xaa\x64\x5a\x02\x3b\x23\x59\xc7\x51\x17\x64\xce\x89\x68\x47\xd6\x83\xa5\x4c\x6f\x95\xf8\x6f\x33\x9b\x03\xaf\x53\x04\xa0\x27\xe7\x21\x86\x90\x42\x09\x3b\x94\x81\x5e\x02\xaa\x1c\x4a\x3c\x80\x25\x9e\x17\x82\xea\xcc\x10\x49\xdc\x12\xbe\xd5\x96\x0d\xb0\xd1\x2b\x28\xbc\x37\x6e\x75\x73\xb3\x15\xbe\x4e\xa1\x99\x2e\xcb\xa0\x84\x3f\xdc\xc4\x6c\x28\xd6\x81\xad\x71\x93\xd3\x8e\xe4\x8d\x13\xdb\x05\xda\xac\x10\x9e\x32\x1f\x2c\xdd\xa0\x11\x8b\xc8\xac\x8a\x69\x74\x59\xe6\x9f\xd8\x2a\xe9\xba\x17\x47\xea\x1b\xf4\x5f\xa8\xf3\xd6\xa4\xae\x39\x7f\x81\x70\xec\x26\x71\x78\x92\xa5\x55\x29\xbf\x62\xad\xbc\xf9\xc7\xfd\x03\xd4\x0c\x24\xb5\x27\x0d\xb7\xa4\xae\x55\x36\x2b\x4a\xa8\x0d\xd9\x44\xb9\xb1\xba\x8c\xb3\x90\xca\x8d\x16\xca\xc7\x3f\x32\x29\x48\x79\x70\x61\x5d\x0a\xef\xa2\xcf\x91\xf3\x6c\x87\x25\xdc\xc6\x0a\x02\x6b\x82\x60\x72\xf4\x94\x2f\xe1\x4e\xc1\x2d\x96\x24\x6f\xd1\xd1\xef\xae\x6a\xd6\xa8\x5b\xb0\xfa\xe6\x2b\xbb\x5b\x00\x4f\x07\x9c\xc4\x18\x40\x5d\xa2\x46\xad\xd3\x89\xf1\x7b\x43\x59\x13\x0d\x4d\x4c\xbf\x32\x46\x8a\x2c\xb9\x7d\xe3\x1d\xec\xc8\xeb\x26\x11\xf4\xb2\xd2\x24\x3b\x63\x61\x0f\xa9\xbc\x9c\xa6\xcd\xfe\xa7\x93\x85\xf8\xd3\xac\x32\x02\x13\x39\x03\x62\xde\x48\x4b\x9f\x7e\x39\xd2\x57\x9d\xda\xd9\xa1\xd9\xc3\x82\x23\xdb\x16\x0c\xa3\xa5\xc8\x0e\xb0\xd1\x96\xf3\x43\x47\xb7\x4b\xb8\xf3\x50\x06\x17\xfd\x4d\x2b\x62\xcd\x5e\xbf\x0a\x5e\x97\xe8\x45\x76\x0d\xda\xc2\xf5\xb7\xa8\x02\xca\xeb\xe5\x00\x0b\xa3\x0e\xd1\xf2\x3e\xa4\xd2\xe1\x1a\xd1\x3e\xe3\xaa\x1b\x9f\x0b\xad\xc5\xc3\xc0\x57\xe1\xa9\x1c\x1c\x76\x86\xfb\x2d\x29\x2e\x1a\x03\x19\xbb\x1d\xca\x89\x72\x4b\xf6\xe4\x7b\xf2\xc6\xf1\x71\x23\x4b\xa6\x61\x0d\xd2\xb9\x68\xbc\xf3\xe8\xc3\x89\x9c\x3d\x17\xb9\xee\xc6\x54\x24\xef\x24\xb0\xaa\x80\x6e\xb4\x2d\x53\x4c\xe1\x5a\x87\x94\xac\xd2\xd4\xec\x19\xce\x93\x71\x4d\xa8\x70\xb0\x65\xba\x34\x92\x7c\xbf\xf6\x2e\xe1\x3f\x0a\xaa\x15\x38\x1d\x7a\x8b\x42\xc6\xa9\x30\xf3\x01\x65\x9c\x91\xaa\x0a\x7d\x70\x9e\xca\xe5\xf5\xf3\x44\x6a\x86\x1e\xa5\xde\xde\xa7\x6c\x30\x40\x60\x0a\x74\x74\x49\xfc\x79\x4f\x2a\x70\x16\xae\x9c\xf1\x55\x96\xe9\xa0\xfc\x1b\xda\x9c\x0f\xc9\xf1\xb1\x60\x69\x43\x96\x54\x56\xd5\x77\x97\x08\x00\x13\x05\xf8\x02\x3d\x47\x72\x70\x49\xcd\xb9\x4e\x38\x38\x6f\xa0\x4c\xad\xf0\xf1\xa8\x1c\x54\xde\x39\x79\x61\x12\xab\x0c\x8b\xf9\xfa\xae\xc6\x27\x09\x96\x50\x2d\x9d\x1f\x62\x0e\xce\x45\x01\x3f\x1b\x41\x32\x8f\xf8\x73\x0e\x07\x2f\xee\x2a\x85\xc6\x2a\xee\x35\x20\x18\x41\x19\xf5\xe0\x50\x54\x18\x61\x5e\xbd\xe4\x82\x67\xa9\xfa\xf6\x32\xd5\xea\x0a\x06\xb4\x70\xc9\xa3\x50\x80\x8c\x0b\x44\x0e\xff\xba\xff\xfe\xbb\x9b\x7f\xea\xc4\x1b\x5b\x8a\x9c\x4b\x9e\x5c\x92\xf2\x2f\xc1\x85\xac\x00\x74\xcc\x1a\xbb\x27\xfb\x3f\x2d\x4b\x54\x62\x43\xce\x2f\xab\xd9\xc8\xba\x1f\xbf\xfc\x69\x09\x5f\x6b\x0b\xf4\x0e\x39\x78\x5e\x82\x48\x5a\x6b\x40\x45\xe5\x1a\x31\x95\xb3\x30\xcd\x58\xd8\x0b\x5f\x44\x96\x8c\xce\x2b\xa6\xf7\x91\x59\x8f\x8f\x9c\xbf\x13\xb3\x81\x7b\x99\x47\x5a\xc1\x75\x6a\x4d\x9a\xa5\x7f\x65\x18\xfe\xdb\x35\x7c\xba\x2f\xc8\x12\x5c\xf3\x9f\xd7\x69\xc1\x06\x03\xf2\xbb\xda\x8e\xed\xc2\xd1\x21\xbd\x15\xdb\x2d\xc5\xc8\x67\x40\xc3\xa0\xe1\x33\xae\x10\x62\x03\x4a\x77\x88\xe3\x14\xac\x4f\x43\x99\xd8\x08\xca\x4f\x18\xf9\xf1\xcb\x9f\xae\xe1\xd3\xbe\x5c\x20\x54\x4e\xef\xe0\xcb\xd4\x8e\x09\xc7\x32\x7e\xb6\x84\x87\x68\x99\x83\xf2\xf8\x8e\xe7\xcc\x0a\xed\x48\x81\x56\xf2\xc0\x1c\x17\xb8\x23\x70\xba\x24\xd8\x93\x94\x8b\x84\x12\x72\xd8\xe3\x81\x65\xa8\x55\xc9\x56\x45\x30\x68\xfd\x11\x42\x7e\xf8\xfe\xab\xef\x57\x69\x35\x36\xdb\x56\xf1\x12\x8c\xbe\x36\x82\xf1\x2f\x03\xdf\x84\xe2\xa2\xcd\x99\x91\x90\x8c\xc4\xa9\xaf\x40\xb5\xa5\xba\x79\xdc\x04\xc6\x53\xcb\x63\xc4\x34\xdb\xe3\x87\xe0\xea\xb0\xb3\x47\xd8\x7a\x1c\x68\x7f\x20\x28\x9c\x2d\x62\xec\x01\x67\x89\xf8\x5d\xc7\x07\x27\x45\x7c\x0c\x6b\xb2\x8a\x3c\x45\x29\x73\x9d\x39\x16\x30\x23\xe3\xdd\x8d\xde\x71\x52\xa5\xfd\xcd\x5e\xdb\x47\xa1\xb6\x0b\x76\xb2\x45\xb2\xbc\xbb\x89\xbb\x1f\x37\x9f\xc4\x7f\xde\x4b\xa2\xd1\x52\x3d\x2c\x56\x24\xff\x10\xb2\xf1\x3a\xee\xe6\xc9\xa2\xd5\x90\xfa\x92\x4a\xf0\xe2\x3e\x05\x7c\x76\x3c\x9a\xc3\x65\x5f\x88\xac\xa8\x9b\xd6\x4e\x86\x2b\x31\x4f\x29\x10\xd5\xe1\x77\x77\x63\x56\x60\xb0\xbc\xf6\x61\x51\xed\xcb\x2d\x50\xe5\xfc\x7f\x27\x9c\xe7\xf7\x4f\xd6\x58\x10\x33\x03\xf8\x87\xbb\xaf\x3e\x8c\x73\x07\xf1\xc4\x68\x5d\x07\x95\x4b\xfa\x46\xeb\xc7\x60\x06\x41\x42\x4f\xa0\xbf\x77\xa9\xeb\xfe\xa3\xea\xd2\x84\x5a\x18\xab\xb7\x96\x6b\x65\xa7\xcb\x05\x13\x64\x4a\xaf\x41\x19\xcc\x1e\x71\x4b\xd5\xa2\xb1\x8c\x70\x6f\x5c\x95\xa3\xaa\x15\x18\x87\x39\x4f\xc0\xfd\xa3\xdc\xa7\xdd\x80\x8a\xcf\x11\x36\xeb\xba\xc8\x3c\x46\x04\x5b\xf1\x7d\x9e\xdf\xb3\xc0\x6c\x0a\xdb\xa6\xe7\x08\xe1\xbe\xa1\xcd\x28\xa1\xc8\xd9\xef\x37\x62\xa0\x3d\xa9\x49\x0c\xfa\x62\xf4\xa3\x25\x23\x71\x08\x44\xc3\x0c\x08\x09\x27\x7c\x8e\xd1\x1d\x59\xe3\xf6\x68\x58\x6d\x91\x3a\x61\x54\x5a\xee\x91\xc5\x37\x95\x15\x58\x24\xd8\xa3\x8b\x19\x48\xee\x28\x8f\x1b\x30\x63\x38\x74\x86\x45\xe6\x49\x0b\xb3\x60\xf3\x80\xbc\x4f\x00\xcf\x5d\xc6\x27\xd2\x51\x7a\xce\x02\xe9\x01\x9e\xfe\x84\xd3\x7f\xc2\xe9\x8f\x1c\x4e\x5f\x14\x03\x53\xd0\x7a\xc8\xfd\x3f\x56\x80\x7d\x91\xd0\x53\x60\x7b\x48\xe8\x8f\x04\x72\x5f\x2c\xe3\x24\xfc\x1e\x13\xf4\x23\x01\xe1\x17\x09\x3b\x13\x90\x0f\x89\xfc\xff\x0c\xcb\x2f\xd2\xe1\x04\x44\x1f\xd2\xdb\x47\x01\xd4\x67\x0b\x98\x69\x95\x4e\xc1\x27\x50\x4a\x1f\x6b\x35\x03\x8e\xf7\x81\x99\x69\x94\xbd\x7d\xda\x2e\x4c\x3e\x07\xa7\xc6\x20\x79\x7a\x26\x80\x79\x77\x92\x33\x98\xec\x3c\x56\x4e\xcf\xa2\xda\xbe\x3e\x43\xc4\x6b\x4e\x90\xcc\x43\x80\x00\x12\x9d\x7f\xb0\xa8\x9c\xa8\x6f\x70\x4c\xd3\x1f\x59\xe4\x1b\xe4\xb6\x43\x94\x4d\x97\x91\xec\x03\xbe\x99\xb2\x02\xb4\xf1\xa8\xa6\xda\x97\x67\x4c\xa3\xb4\x2f\xc6\x9a\x8e\xf6\x99\x19\x25\xfc\xa4\x73\x80\x15\xe4\xe8\x69\xc1\x1c\x9d\x15\xfb\x87\x78\x58\xf9\x6c\x22\x33\x86\x37\x56\xaf\x29\xff\xc3\xa4\x2a\xc9\x39\xdc\x5e\x26\xce\x2b\x28\x42\x89\x0a\x2c\x61\x8e\x6b\x49\xf5\x24\x8c\xc6\xe2\x69\xa5\xda\x42\x4e\x1e\x85\x74\x9d\x13\x96\xd6\xbe\xcf\x26\xac\x25\x74\xe7\xaa\x04\x9c\x5e\x31\x49\xc3\xe2\x41\x61\xcf\x1e\x2f\x5c\x34\xf2\xef\xc1\xe9\xf0\xc9\xd5\x24\xa7\xf7\xcd\x89\x54\x8f\xc9\x97\xf5\x09\xe6\x83\x0d\xf4\x12\xbe\x46\xe9\xe8\x25\xfc\xa0\x1e\x95\xde\x3f\x1f\xbf\x91\xf0\x22\xbd\x1e\x4c\xe4\xaa\xe1\xf3\x19\x58\x69\xbb\xfb\x99\xc9\xfe\xae\x19\x50\xef\xd0\x54\x1d\xfa\x22\x28\xf1\x4b\xe8\x37\x2a\xcd\x21\xd3\xa7\xc7\x2d\xcc\xed\xfd\xdb\xe8\x1c\xa9\xdd\x76\xa9\x91\xa9\x5b\xbb\xdb\xfb\xb7\xee\xb3\x33\xb5\x61\x52\x2a\x33\xd9\xa8\xf6\xe4\xe1\x9e\xf6\xa8\xd5\x92\x3a\xeb\x5c\xfd\x69\xb7\x65\x4c\x90\x72\x09\x77\xfe\x85\x63\x1e\x44\x86\x52\x1e\xb8\x6b\x11\x25\x07\x66\x83\x7a\xce\x55\xb5\x69\xce\x67\x14\x88\x93\x60\xa3\xcd\x86\x32\x2f\x76\xd4\x19\x5e\x2b\x3a\x6d\x38\x51\x5e\xc9\xf1\x5e\xcc\xd5\x5b\x39\x33\x59\x7b\x53\x91\xd7\x8e\xd2\xb5\x7f\xab\xd5\x6a\xd2\xd4\x6b\x46\xa7\x51\x04\x1b\x1d\x54\x0e\xe8\xa3\x79\x9e\xc8\x73\xff\x0c\xf7\xc3\x1d\xf8\x4f\xe3\xa7\xe7\xd9\x6c\xec\x9c\xc0\x37\xe8\x6b\x0a\x7c\xb5\x49\x8e\xde\x51\x16\x3a\x77\xbc\xba\x77\x38\x9e\xb6\xd7\x78\xde\x65\x2f\x41\x33\xb3\xd2\xe7\xdc\xfa\x3b\x17\x4f\x3c\xeb\xa2\x67\xcb\xfd\xac\x48\x9b\xae\xba\xc3\xf8\xfb\x4d\x2a\xba\x71\xab\x33\xc3\x92\x64\x86\x8e\xf2\xe3\x5a\x9c\xc0\xf8\x9c\x02\x3c\x83\xd1\x73\x45\x77\xc6\x14\xd3\x75\xf0\xac\xdb\xc7\xaa\x98\xa8\xd6\xf5\x2d\x88\xa6\xdd\xe8\xf9\x37\xe7\x13\x84\x8c\x6c\x2c\x32\xe9\x12\x1d\xb2\xae\xf6\x85\x7e\x72\x66\x9c\xb0\x76\x8f\xf5\x6f\x6b\xfc\xc6\x0b\x46\x6c\xb7\x38\xc1\x76\x55\xfd\x6b\xb1\x1d\xe5\xbd\xab\x34\xb1\x48\x96\x78\x88\x57\xd3\x4a\xa3\xad\xc7\x74\xc0\x11\x54\x4e\xd6\x79\x54\x39\x8f\xdd\x17\x87\xa8\x06\xc3\x32\x17\xe8\x40\x78\x07\xa9\x2f\xf6\x95\xc1\x2e\xbe\x83\x15\xef\xbb\x9c\x15\xb2\xa3\xec\xd7\x3c\xa0\x81\x08\xbd\xc5\x53\x5d\xed\x19\x66\xd2\x0a\xd3\x8c\x49\x9c\xb8\x58\xf5\xbe\x79\xf6\xde\x93\x39\xce\xab\x1d\x21\x54\x84\xe3\x3b\x91\xa7\xcb\x48\x64\x40\xa8\xe7\x49\xaa\xe7\x0f\x70\xd2\xc1\xc4\x78\x58\x2d\x9a\x5d\x9a\x51\x82\x89\x8e\xf6\x7c\x52\x6f\xd6\x7f\xcf\x44\x37\x7e\xc7\x2d\x3d\x27\xf6\xa8\x7f\x37\x31\x61\x97\xce\x2d\xdb\x78\x8f\xd3\xdb\x0a\x03\x1d\x66\x59\x07\xe6\x6e\x1e\xcc\xd9\x3a\x58\xa4\x9f\x4f\x4c\x52\x3c\x0a\x75\x7a\xf3\xb3\x4b\xc0\xd0\x69\x92\xa0\xbd\xf2\x37\x93\x2c\x6e\x29\x4e\xd2\x56\xc7\x49\xef\x79\x9a\x95\x7e\x3b\xf2\x61\xb6\xdf\x67\x4e\x54\x1f\xfe\x3c\xcb\x64\xe7\xf7\xc7\x67\x4e\xd4\x9a\xe6\x99\xa7\x9b\xb1\xb3\x3d\x73\xce\xdd\x9c\x2d\xe3\x67\x00\x0d\x27\x21\x5f\xf5\xe9\x13\xd5\xc4\xa0\xf5\x22\x0b\x12\x6d\x1b\xfb\x31\x3d\x9f\xfc\xe2\xe8\x62\x9e\x9d\x47\xeb\xc7\xf0\xe3\xf1\x76\x42\xa2\xac\x39\x8d\xfb\x51\xfb\x82\x54\x73\x6c\x97\x7e\xc0\x05\x6b\xda\x72\xd9\x33\x46\x1e\xea\x5f\x07\xb4\x77\xcf\xa5\x70\x3e\x56\xfe\xb6\x8a\xcf\xbd\xc4\x30\xaa\xf6\x31\xf0\xea\xc8\xee\x28\x5f\x81\xb7\xa1\x79\xe5\xb5\x65\x44\xd3\x7b\x17\xd6\x0d\x7f\xad\x1a\x2a\x3b\xc2\xaf\xbf\x5d\xfd\x2f\x00\x00\xff\xff\xf9\x92\xd3\x00\xfd\x36\x00\x00") +var _operatorsCoreosCom_installplansYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5b\xdd\x6f\x1b\x37\x12\x7f\xf7\x5f\x31\x70\x1f\xd2\x02\x96\xdc\xe6\x80\xc3\x41\x6f\x39\xf7\x7a\xf0\x5d\x3f\x82\xd8\xcd\x4b\xaf\x0f\xa3\xdd\x91\x96\x35\x97\x64\xf9\x21\x47\x57\xf4\x7f\x3f\x0c\xb9\x9f\xd2\xee\x6a\xe5\x38\x69\x70\xe8\xbe\x24\xde\x1d\x92\xf3\x3d\xbf\x21\x29\x34\xe2\x2d\x59\x27\xb4\x5a\x01\x1a\x41\xef\x3c\x29\xfe\xcb\x2d\x1f\xfe\xe6\x96\x42\x5f\xef\xbe\xba\x78\x10\x2a\x5f\xc1\x4d\x70\x5e\x97\x6f\xc8\xe9\x60\x33\xfa\x9a\x36\x42\x09\x2f\xb4\xba\x28\xc9\x63\x8e\x1e\x57\x17\x00\xa8\x94\xf6\xc8\xaf\x1d\xff\x09\x90\x69\xe5\xad\x96\x92\xec\x62\x4b\x6a\xf9\x10\xd6\xb4\x0e\x42\xe6\x64\xe3\xe4\xf5\xd2\xbb\x2f\x97\x7f\x5d\xbe\xbc\x00\xc8\x2c\xc5\xe1\xf7\xa2\x24\xe7\xb1\x34\x2b\x50\x41\xca\x0b\x00\x85\x25\xad\x40\x28\xe7\x51\x4a\x23\x51\xb9\xa5\x36\x64\xd1\x6b\xeb\x96\x99\xb6\xa4\xf9\x9f\xf2\xc2\x19\xca\x78\xed\xad\xd5\xc1\xac\x60\x90\x26\xcd\x56\xb3\x88\x9e\xb6\xda\x8a\xfa\x6f\x80\x05\x68\x59\xc6\xff\x27\xd1\x6f\xd3\xa2\xaf\x25\xaa\xf8\x56\x0a\xe7\xff\x7d\xf8\xe5\x5b\xe1\x7c\xfc\x6a\x64\xb0\x28\xfb\xac\xc6\x0f\xae\xd0\xd6\x7f\xdf\x2e\xcc\x0b\x09\x93\x3e\x09\xb5\x0d\x12\x6d\x6f\xd4\x05\x80\xcb\xb4\xa1\x15\xc4\x41\x06\x33\xca\x2f\x00\x2a\xa5\x55\x93\x2c\x00\xf3\x3c\x1a\x02\xe5\x6b\x2b\x94\x27\x7b\xa3\x65\x28\x55\xb3\x08\xd3\xe4\xe4\x32\x2b\x8c\x8f\xca\xbe\x2f\x08\x36\xc2\x3a\x0f\x37\x77\x6f\x41\x28\xf0\x05\x45\x99\x40\x6f\x20\x93\xc1\x79\xb2\x77\x64\x77\x22\xa3\xca\x37\xe2\xfa\xcd\x74\x00\xbf\x38\xad\x5e\xa3\x2f\x56\xb0\x64\x75\x2f\xc7\x07\xfd\xf4\xe5\xcf\x9d\x71\xc9\x86\x37\x77\x6f\x3b\xef\xfc\x9e\x25\x74\xde\x0a\xb5\x9d\xe2\x18\x8d\xb1\x7a\x87\x12\x4a\x9d\xd3\x04\x2f\x35\xdd\xd1\xb2\xaf\x8e\x3f\x8c\xac\x3d\x3c\x65\x54\xfe\xd0\x94\xbd\x0f\x69\xca\xb5\xd6\x92\x2a\x6f\xa9\x89\x77\x5f\xa1\x34\x05\x7e\x55\xbd\x74\x59\x41\x25\xb6\x46\xd2\x86\xd4\xab\xd7\xb7\x6f\xff\x72\x77\xf0\x01\xfa\xba\xe8\xb8\x1c\xe4\x1c\x85\xe4\xa2\x01\x2b\xc7\x89\xd1\xc3\x86\x44\x70\x14\x2d\xda\x46\xc0\x11\x9b\x7a\xfd\x0b\x65\xbe\xf3\xda\xd2\xaf\x41\x58\xca\xbb\xab\xb3\x46\xea\x18\x3f\x78\xcd\xda\xe9\xbc\x32\x96\xd7\xf2\x9d\x48\x4a\x4f\x27\xc9\xf4\xde\x1f\x48\xf6\x82\xc5\x4f\x74\x3d\xc9\x2a\x87\xa7\xbc\xd2\x19\x0b\xe5\x0b\xe1\xc0\x92\xb1\xe4\x48\xf9\x56\x68\x55\xc9\xb4\x04\x76\x46\xb2\x8e\xa3\x2e\xc8\x9c\x13\xd1\x8e\xac\x07\x4b\x99\xde\x2a\xf1\xdf\x66\x36\x07\x5e\xa7\x08\x40\x4f\xce\x43\x0c\x21\x85\x12\x76\x28\x03\x5d\x01\xaa\x1c\x4a\xdc\x83\x25\x9e\x17\x82\xea\xcc\x10\x49\xdc\x12\xbe\xd3\x96\x0d\xb0\xd1\x2b\x28\xbc\x37\x6e\x75\x7d\xbd\x15\xbe\x4e\xa1\x99\x2e\xcb\xa0\x84\xdf\x5f\xc7\x6c\x28\xd6\x81\xad\x71\x9d\xd3\x8e\xe4\xb5\x13\xdb\x05\xda\xac\x10\x9e\x32\x1f\x2c\x5d\xa3\x11\x8b\xc8\xac\x8a\x69\x74\x59\xe6\x9f\xd9\x2a\xe9\xba\x17\x07\xea\x1b\xf4\x5f\xa8\xf3\xd6\xa4\xae\x39\x7f\x81\x70\xec\x26\x71\x78\x92\xa5\x55\x29\xbf\x62\xad\xbc\xf9\xc7\xdd\x3d\xd4\x0c\x24\xb5\x27\x0d\xb7\xa4\xae\x55\x36\x2b\x4a\xa8\x0d\xd9\x44\xb9\xb1\xba\x8c\xb3\x90\xca\x8d\x16\xca\xc7\x3f\x32\x29\x48\x79\x70\x61\x5d\x0a\xef\xa2\xcf\x91\xf3\x6c\x87\x25\xdc\xc4\x0a\x02\x6b\x82\x60\x72\xf4\x94\x2f\xe1\x56\xc1\x0d\x96\x24\x6f\xd0\xd1\x07\x57\x35\x6b\xd4\x2d\x58\x7d\xf3\x95\xdd\x2d\x80\xc7\x03\x8e\x62\x0c\xa0\x2e\x51\xa3\xd6\xe9\xc4\xf8\x9d\xa1\xac\x89\x86\x26\xa6\x5f\x19\x23\x45\x96\xdc\xbe\xf1\x0e\x76\xe4\x75\x93\x08\x7a\x59\x69\x92\x9d\xb1\xb0\x87\x54\x5e\x8e\xd3\x66\xff\xd3\xd1\x42\xfc\x69\x56\x19\x81\x89\x9c\x01\x31\x6f\xa4\xa5\x8f\xbf\x1c\xe8\xab\x4e\xed\xec\xd0\xec\x61\xc1\x91\x6d\x0b\x86\xd1\x52\x64\x7b\xd8\x68\xcb\xf9\xa1\xa3\xdb\x25\xdc\x7a\x28\x83\x8b\xfe\xa6\x15\xb1\x66\x2f\x5f\x05\xaf\x4b\xf4\x22\xbb\x04\x6d\xe1\xf2\x3b\x54\x01\xe5\xe5\x72\x80\x85\x51\x87\x68\x79\x1f\x52\xe9\x70\x8d\x68\x9f\x71\xd5\x8d\xcf\x85\xd6\xe2\x7e\xe0\xab\xf0\x54\x0e\x0e\x3b\xc1\xfd\x96\x14\x17\x8d\x81\x8c\xdd\x0e\xe5\x44\xb9\x25\x7b\xf4\x3d\x79\xe3\xf8\xb8\x91\x25\xd3\xb0\x06\xe9\x9c\x35\xde\x79\xf4\xe1\x48\xce\x9e\x8b\x5c\x76\x63\x2a\x92\x77\x12\x58\x55\x40\x37\xda\x96\x29\xa6\x70\xad\x43\x4a\x56\x69\x6a\xf6\x0c\xe7\xc9\xb8\x26\x54\x38\xd8\x32\x5d\x1a\x49\xbe\x5f\x7b\x97\xf0\x1f\x05\xd5\x0a\x9c\x0e\xbd\x45\x21\xe3\x54\x98\xf9\x80\x32\xce\x48\x55\x85\xde\x3b\x4f\xe5\xf2\xf2\x79\x22\x35\x43\x8f\x52\x6f\xef\x52\x36\x18\x20\x30\x05\x3a\x3a\x27\xfe\xbc\x27\x15\x38\x0b\x57\xce\xf8\x2a\xcb\x74\x50\xfe\x0d\x6d\x4e\x87\xe4\xf8\x58\xb0\xb4\x21\x4b\x2a\xab\xea\xbb\x4b\x04\x80\x89\x02\x7c\x81\x9e\x23\x39\xb8\xa4\xe6\x5c\x27\x1c\x9c\x37\x50\xa6\x56\xf8\x78\x54\x0e\x2a\xef\x94\xbc\x30\x89\x55\x86\xc5\x7c\x7d\x5b\xe3\x93\x04\x4b\xa8\x96\xce\x0f\x31\x07\xa7\xa2\x80\x9f\x8d\x20\x99\x47\xfc\x39\x87\x83\x17\xb7\x95\x42\x63\x15\xf7\x1a\x10\x8c\xa0\x8c\x7a\x70\x28\x2a\x8c\x30\xaf\x5e\x72\xc1\xb3\x54\x7d\xbb\x4a\xb5\xba\x82\x01\x2d\x5c\xf2\x28\x14\x20\xe3\x02\x91\xc3\xbf\xee\x7e\xf8\xfe\xfa\x9f\x3a\xf1\xc6\x96\x22\xe7\x92\x27\x97\xa4\xfc\x15\xb8\x90\x15\x80\x8e\x59\x63\xf7\x64\xff\xa7\x65\x89\x4a\x6c\xc8\xf9\x65\x35\x1b\x59\xf7\xd3\xcb\x9f\x97\xf0\x8d\xb6\x40\xef\x90\x83\xe7\x0a\x44\xd2\x5a\x03\x2a\x2a\xd7\x88\xa9\x9c\x85\x69\xc6\xc2\xa3\xf0\x45\x64\xc9\xe8\xbc\x62\xfa\x31\x32\xeb\xf1\x81\xf3\x77\x62\x36\x70\x2f\xf3\x40\x2b\xb8\x4c\xad\x49\xb3\xf4\x6f\x0c\xc3\x7f\xbf\x84\xcf\x1f\x0b\xb2\x04\x97\xfc\xe7\x65\x5a\xb0\xc1\x80\xfc\xae\xb6\x63\xbb\x70\x74\x48\x6f\xc5\x76\x4b\x31\xf2\x19\xd0\x30\x68\xf8\x82\x2b\x84\xd8\x80\xd2\x1d\xe2\x38\x05\xeb\xd3\x50\x26\x36\x82\xf2\x23\x46\x7e\x7a\xf9\xf3\x25\x7c\xde\x97\x0b\x84\xca\xe9\x1d\xbc\x4c\xed\x98\x70\x2c\xe3\x17\x4b\xb8\x8f\x96\xd9\x2b\x8f\xef\x78\xce\xac\xd0\x8e\x14\x68\x25\xf7\xcc\x71\x81\x3b\x02\xa7\x4b\x82\x47\x92\x72\x91\x50\x42\x0e\x8f\xb8\x67\x19\x6a\x55\xb2\x55\x11\x0c\x5a\x7f\x80\x90\xef\x7f\xf8\xfa\x87\x55\x5a\x8d\xcd\xb6\x55\xbc\x04\xa3\xaf\x8d\x60\xfc\xcb\xc0\x37\xa1\xb8\x68\x73\x66\x24\x24\x23\x71\xea\x2b\x50\x6d\xa9\x6e\x1e\x37\x81\xf1\xd4\xf2\x10\x31\xcd\xf6\xf8\x21\xb8\x3a\xec\xec\x11\xb6\x1e\x06\xda\x1f\x08\x0a\x67\x8b\x18\x7b\xc0\x59\x22\x7e\xdf\xf1\xc1\x49\x11\x1f\xc2\x9a\xac\x22\x4f\x51\xca\x5c\x67\x8e\x05\xcc\xc8\x78\x77\xad\x77\x9c\x54\xe9\xf1\xfa\x51\xdb\x07\xa1\xb6\x0b\x76\xb2\x45\xb2\xbc\xbb\x8e\xbb\x1f\xd7\x9f\xc5\x7f\xde\x4b\xa2\xd1\x52\x3d\x2c\x56\x24\xff\x18\xb2\xf1\x3a\xee\xfa\xc9\xa2\xd5\x90\xfa\x9c\x4a\xf0\xe2\x2e\x05\x7c\x76\x38\x9a\xc3\xe5\xb1\x10\x59\x51\x37\xad\x9d\x0c\x57\x62\x9e\x52\x20\xaa\xfd\x07\x77\x63\x56\x60\xb0\xbc\xf6\x7e\x51\xed\xcb\x2d\x50\xe5\xfc\x7f\x27\x9c\xe7\xf7\x4f\xd6\x58\x10\x33\x03\xf8\xc7\xdb\xaf\x3f\x8e\x73\x07\xf1\xc4\x68\x5d\x07\x95\x4b\xfa\x56\xeb\x87\x60\x06\x41\x42\x4f\xa0\xbf\x77\xa9\xeb\xfe\xa3\xea\xd2\x84\x5a\x18\xab\xb7\x96\x6b\x65\xa7\xcb\x05\x13\x64\x4a\xaf\x41\x19\xcc\x1e\x70\x4b\xd5\xa2\xb1\x8c\x70\x6f\x5c\x95\xa3\xaa\x15\x18\x87\x39\x4f\xc0\xfd\xa3\xdc\xa7\xdd\x80\x8a\xcf\x11\x36\xeb\xba\xc8\x3c\x46\x04\x5b\xf1\x7d\x9a\xdf\x93\xc0\x6c\x0a\xdb\xa6\xe7\x00\xe1\xbe\xa1\xcd\x28\xa1\xc8\xd9\xef\x37\x62\xa0\x3d\xa9\x49\x0c\xfa\x62\xf4\xa3\x25\x23\x71\x08\x44\xc3\x0c\x08\x09\x47\x7c\x8e\xd1\x1d\x58\xe3\xe6\x60\x58\x6d\x91\x3a\x61\x54\x5a\xee\x91\xc5\x37\x95\x15\x58\x24\x78\x44\x17\x33\x90\xdc\x51\x1e\x37\x60\xc6\x70\xe8\x0c\x8b\xcc\x93\x16\x66\xc1\xe6\x01\x79\x9f\x00\x9e\xbb\x8c\x4f\xa4\xa3\xf4\x9c\x04\xd2\x03\x3c\xfd\x09\xa7\xff\x84\xd3\x9f\x38\x9c\x3e\x2b\x06\xa6\xa0\xf5\x90\xfb\x7f\xaa\x00\xfb\x2c\xa1\xa7\xc0\xf6\x90\xd0\x9f\x08\xe4\x3e\x5b\xc6\x49\xf8\x3d\x26\xe8\x27\x02\xc2\xcf\x12\x76\x26\x20\x1f\x12\xf9\xff\x19\x96\x9f\xa5\xc3\x09\x88\x3e\xa4\xb7\x4f\x02\xa8\xcf\x16\x30\xd3\x2a\x9d\x82\x4f\xa0\x94\x3e\xd6\x6a\x06\x1c\xee\x03\x33\xd3\x28\x7b\xfb\xb4\x5d\x98\x7c\x0a\x4e\x8d\x41\xf2\xf4\x4c\x00\xf3\xee\x24\x27\x30\xd9\x69\xac\x9c\x9e\x45\xb5\x7d\x7d\x82\x88\xd7\x9c\x20\x99\x87\x00\x01\x24\x3a\x7f\x6f\x51\x39\x51\xdf\xe0\x98\xa6\x3f\xb0\xc8\xb7\xc8\x6d\x87\x28\x9b\x2e\x23\xd9\x07\x7c\x33\x65\x05\x68\xe3\x51\x4d\xb5\x2f\xcf\x98\x46\x69\x5f\x8c\x35\x1d\xed\x33\x33\x4a\xf8\x49\xe7\x00\x2b\xc8\xd1\xd3\x82\x39\x3a\x29\xf6\x8f\xf1\xb0\xf2\xd9\x44\x66\x0c\x6f\xac\x5e\x53\xfe\x87\x49\x55\x92\x73\xb8\x3d\x4f\x9c\x57\x50\x84\x12\x15\x58\xc2\x1c\xd7\x92\xea\x49\x18\x8d\xc5\xd3\x4a\xb5\x85\x9c\x3c\x0a\xe9\x3a\x27\x2c\xad\x7d\x9f\x4d\x58\x4b\xe8\x4e\x55\x09\x38\xbe\x62\x92\x86\xc5\x83\xc2\x9e\x3d\x5e\xb8\x68\xe4\x0f\xc1\xe9\xf0\xc9\xd5\x24\xa7\x77\xcd\x89\x54\x8f\xc9\xab\xfa\x04\xf3\xde\x06\xba\x82\x6f\x50\x3a\xba\x82\x1f\xd5\x83\xd2\x8f\xcf\xc7\x6f\x24\x3c\x4b\xaf\x7b\x13\xb9\x6a\xf8\x7c\x06\x56\xda\xee\x7e\x66\xb2\xbf\x6d\x06\xd4\x3b\x34\x55\x87\xbe\x08\x4a\xfc\x1a\xfa\x8d\x4a\x73\xc8\xf4\xf9\x61\x0b\x73\x73\xf7\x36\x3a\x47\x6a\xb7\x5d\x6a\x64\xea\xd6\xee\xe6\xee\xad\xfb\xe2\x44\x6d\x98\x94\xca\x4c\x36\xaa\x3d\x79\xb8\xa7\x3d\x68\xb5\xa4\xce\x3a\x57\x7f\xda\x6d\x19\x13\xa4\x5c\xc2\xad\x7f\xe1\x98\x07\x91\xa1\x94\x7b\xee\x5a\x44\xc9\x81\xd9\xa0\x9e\x53\x55\x6d\x9a\xf3\x19\x05\xe2\x28\xd8\x68\xb3\xa1\xcc\x8b\x1d\x75\x86\xd7\x8a\x4e\x1b\x4e\x94\x57\x72\xbc\x17\x73\xf5\x56\xce\x4c\xd6\xde\x54\xe4\xb5\xa3\x74\xed\xdf\x6a\xb5\x9a\x34\xf5\x9a\xd1\x69\x14\xc1\x46\x07\x95\x03\xfa\x68\x9e\x27\xf2\xdc\x3f\xc3\xfd\x78\x07\xfe\xd3\xf8\xe9\x79\x36\x1b\x3b\x27\xf0\x0d\xfa\x9a\x02\x5f\x6d\x92\xa3\x77\x94\x85\xce\x1d\xaf\xee\x1d\x8e\xa7\xed\x35\x9e\x76\xd9\x73\xd0\xcc\xac\xf4\x39\xb7\xfe\xce\xc5\x13\xcf\xba\xe8\xc9\x72\x3f\x2b\xd2\xa6\xab\xee\x30\xfe\x7e\x93\x8a\x6e\xdc\xea\xcc\xb0\x24\x99\xa1\xa3\xfc\xb0\x16\x27\x30\x3e\xa7\x00\xcf\x60\xf4\x54\xd1\x9d\x31\xc5\x74\x1d\x3c\xe9\xf6\xb1\x2a\x26\xaa\x75\x7d\x0b\xa2\x69\x37\x7a\xfe\xcd\xf9\x04\x21\x23\x1b\x8b\x4c\xba\x44\x87\xac\xab\xc7\x42\x3f\x39\x33\x4e\x58\xbb\xc7\xfa\x77\x35\x7e\xe3\x05\x23\xb6\x5b\x1c\x61\xbb\xaa\xfe\xb5\xd8\x8e\xf2\xde\x55\x9a\x58\x24\x4b\xdc\xc7\xab\x69\xa5\xd1\xd6\x63\x3a\xe0\x08\x2a\x27\xeb\x3c\xaa\x9c\xc7\x3e\x16\xfb\xa8\x06\xc3\x32\x17\xe8\x40\x78\x07\xa9\x2f\xf6\x95\xc1\xce\xbe\x83\x15\xef\xbb\x9c\x14\xb2\xa3\xec\xd7\x3c\xa0\x81\x08\xbd\xc5\x53\x5d\xed\x19\x66\xd2\x0a\xd3\x8c\x49\x9c\xb8\x58\xf5\xbe\x79\xf6\xce\x93\x39\xcc\xab\x1d\x21\x54\x84\xe3\x3b\x91\xa7\xcb\x48\x64\x40\xa8\xe7\x49\xaa\xa7\x0f\x70\xd2\xc1\xc4\x78\x58\x2d\x9a\x5d\x9a\x51\x82\x89\x8e\xf6\x74\x52\x6f\xd6\x7f\xcf\x44\x37\x7e\xc7\x2d\x3d\x47\xf6\xa8\x7f\x37\x31\x61\x97\xce\x2d\xdb\x78\x8f\xd3\xdb\x0a\x03\xed\x67\x59\x07\xe6\x6e\x1e\xcc\xd9\x3a\x58\xa4\x9f\x4f\x4c\x52\x3c\x08\x75\x7c\xf3\xb3\x4b\xc0\xd0\x69\x92\xa0\xbd\xf2\x37\x93\x2c\x6e\x29\x4e\xd2\x56\xc7\x49\xef\x79\x9a\x95\x7e\x3b\xf2\x71\xb6\xdf\x67\x4e\x54\x1f\xfe\x3c\xcb\x64\xa7\xf7\xc7\x67\x4e\xd4\x9a\xe6\x99\xa7\x9b\xb1\xb3\x3d\x73\xce\xdd\x9c\x2d\xe3\x67\x00\x0d\x47\x21\x5f\xf5\xe9\x13\xd5\xc4\xa0\xf5\x22\x0b\x12\x6d\x1b\xfb\x31\x3d\x1f\xfd\xe2\xe8\x6c\x9e\x9d\x47\xeb\xc7\xf0\xe3\xe1\x76\x42\xa2\xac\x39\x8d\xfb\x51\x8f\x05\xa9\xe6\xd8\x2e\xfd\x80\x0b\xd6\xb4\xe5\xb2\x67\x8c\xdc\xd7\xbf\x0e\x68\xef\x9e\x4b\xe1\x7c\xac\xfc\x6d\x15\x9f\x7b\x89\x61\x54\xed\x63\xe0\xd5\x91\xdd\x51\xbe\x02\x6f\x43\xf3\xca\x6b\xcb\x88\xa6\xf7\x2e\xac\x1b\xfe\x5a\x35\x54\x76\x84\xdf\x7e\xbf\xf8\x5f\x00\x00\x00\xff\xff\xaa\x07\xfe\xc9\xfd\x36\x00\x00") func operatorsCoreosCom_installplansYamlBytes() ([]byte, error) { return bindataRead( @@ -144,7 +144,7 @@ func operatorsCoreosCom_installplansYaml() (*asset, error) { return a, nil } -var _operatorsCoreosCom_operatorconditionsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5b\x5f\x6f\x1b\xb9\x11\x7f\xf7\xa7\x18\xa8\x05\x62\xa7\xd2\x3a\xce\x15\xe9\x9d\x80\x20\x08\x72\x4d\x11\x24\xbe\x04\xb1\x7b\x0f\xb5\xdc\x66\x76\x39\x92\x78\xd9\x25\xf7\xf8\x47\xb6\xee\x70\xdf\xbd\x18\x72\x57\xbb\xb2\x56\x8a\x8b\xa4\xc1\xb5\x20\x5f\x2c\x91\xb3\xc3\xe1\xfc\xff\xd1\x2b\xac\xe5\x8f\x64\xac\xd4\x6a\x0a\x58\x4b\xba\x75\xa4\xf8\x9b\xcd\x3e\x7e\x6b\x33\xa9\x4f\x57\x67\x47\x1f\xa5\x12\x53\x78\xe1\xad\xd3\xd5\x7b\xb2\xda\x9b\x82\xbe\xa7\xb9\x54\xd2\x49\xad\x8e\x2a\x72\x28\xd0\xe1\xf4\x08\x00\x95\xd2\x0e\x79\xda\xf2\x57\x80\x42\x2b\x67\x74\x59\x92\x99\x2c\x48\x65\x1f\x7d\x4e\xb9\x97\xa5\x20\x13\x98\xb7\x5b\xaf\x1e\x65\x4f\xb2\x47\x47\x00\x85\xa1\xf0\xf8\xa5\xac\xc8\x3a\xac\xea\x29\x28\x5f\x96\x47\x00\x0a\x2b\x9a\x82\xae\xc9\xa0\xd3\xa6\xd0\x4a\x84\xed\x6d\xd6\x4e\xd9\xac\xd0\x86\x34\xff\xa9\x8e\x6c\x4d\x05\x4b\xb0\x30\xda\xd7\xdd\x63\x5b\x34\x91\x67\x2b\x28\x3a\x5a\x68\x23\xdb\xef\x00\x13\xd0\x65\x15\x3e\x47\x05\xbc\x6d\x78\xbc\x68\xb7\x0e\x6b\xa5\xb4\xee\xf5\xf0\xfa\x1b\x69\x5d\xa0\xa9\x4b\x6f\xb0\x1c\x12\x3e\x2c\xdb\xa5\x36\xee\x87\x4e\x14\xde\xba\xd8\xda\xc4\x4a\xb5\xf0\x25\x9a\x01\x16\x47\x00\xb6\xd0\x35\x4d\x21\x70\xa8\xb1\x20\x71\x04\xd0\x68\xb6\xe1\x38\x69\xb4\xb7\x3a\x6b\x36\xb0\xc5\x92\x2a\x6c\xb7\x03\x66\xab\x9e\xbf\x7b\xf5\xe3\x37\x17\x77\x16\x00\x04\xd9\xc2\xc8\xda\x05\x3b\xed\x9c\x11\xa4\x05\x6c\x7c\x03\x5a\xe7\x00\x3d\x07\xb7\xae\x09\x3e\xec\xd0\x7f\x80\x9b\xa5\x2c\x96\xfc\x98\xb7\x24\xc0\x69\x3e\xea\x8a\xd6\x20\xd5\x5c\x9b\x2a\x18\x9f\x67\xdf\xbe\x39\x07\xcc\xb5\x77\xe0\x96\x04\xd6\xa1\x0b\x6c\x51\x6d\x54\x90\xf5\x84\xe4\xdd\xa6\xa0\xf3\x9f\xa8\x70\xbd\x69\x43\x3f\x7b\x69\x48\xf4\xcf\xc3\xda\x68\x5d\xb6\x37\x5d\x1b\xe6\xeb\x7a\xf6\x8f\xa3\x17\x20\x5b\xf3\x77\x14\xf3\x80\xb5\x17\xe9\x40\x70\x6c\x90\x0d\x82\x37\x76\x20\xd1\xa8\x3c\xa8\x66\x29\x2d\x18\xaa\x0d\x59\x52\x31\x5a\xda\xa3\x85\x03\x64\x70\x41\x86\x1f\x64\xcf\xf0\xa5\x88\x1a\x32\x0e\x0c\x15\x7a\xa1\xe4\x2f\x1b\x6e\x96\x35\xc5\xdb\x94\xe8\xc8\x3a\x90\xca\x91\x51\x58\xc2\x0a\x4b\x4f\x63\x40\x25\xa0\xc2\x35\x18\x62\xbe\xe0\x55\x8f\x43\x20\xb1\x19\x9c\x6b\x43\x41\xf9\x53\x58\x3a\x57\xdb\xe9\xe9\xe9\x42\xba\x36\xfc\x0b\x5d\x55\x5e\x49\xb7\x3e\x0d\x91\x2c\x73\xcf\x51\x74\x2a\x68\x45\xe5\xa9\x95\x8b\x09\x9a\x62\x29\x1d\x15\xce\x1b\x3a\xc5\x5a\x4e\x82\xb0\x2a\x86\x66\x25\xfe\x60\x1a\x9f\xb0\x0f\xee\xa8\x2f\x9a\xcc\x3a\x23\xd5\x62\x6b\x29\x44\xdb\x41\x5d\x73\xbc\x45\xc7\x8b\x8f\xc7\xb3\x74\x2a\xe5\x29\xd6\xca\xfb\xbf\x5e\x5c\x42\x2b\x40\x54\x7b\xd4\x70\x47\x6a\x3b\x65\xb3\xa2\xa4\x9a\x93\x89\x94\x73\xa3\xab\xc0\x85\x94\xa8\xb5\x54\xd1\x11\x8b\x52\x92\x72\x60\x7d\x5e\x49\x67\x83\x83\x91\x75\x6c\x87\x0c\x5e\x84\xec\x07\x39\x81\xaf\x05\x3a\x12\x19\xbc\x52\xf0\x02\x2b\x2a\x5f\xa0\xa5\xff\xba\xaa\x59\xa3\x76\xc2\xea\xbb\xbf\xb2\xfb\xc9\x7b\xf7\x81\x9d\x80\x02\x68\x13\xeb\x5e\xeb\xec\x84\xfc\x45\x4d\x05\x60\x59\xea\x1b\xb6\x58\x51\x7a\xeb\xc8\x00\x8a\x4a\xaa\x3d\xe1\x7f\x38\xee\x9b\xec\x30\x86\x5a\x3b\x3e\x3d\x96\xe5\x1a\xf4\x8a\x8c\x91\x82\x2d\x1f\x9f\x31\x54\x6b\xe3\x48\x40\xbe\x0e\x9c\x86\xb2\xc6\xc1\x83\xee\x4f\x09\xf1\xc8\x75\xa9\xd7\x15\x7b\xd0\xee\x62\xcb\x15\x8d\xc1\xf5\xc0\xaa\x74\x54\x0d\x3e\x76\xc0\x50\x3c\x9a\x43\x0e\xc9\xf3\x19\x5b\x6e\x59\x6f\xd4\x65\x76\xf6\x42\x94\xca\x82\x20\x87\xb2\xb4\x30\xd7\x06\xb4\x22\x40\xf6\x01\x17\x33\x19\x41\xe1\x8d\x09\x21\xd1\x9a\x2a\x44\xcf\xf3\x77\xaf\x36\xe5\x20\x83\xc9\x64\x02\x97\x3c\x6d\x9d\xf1\x85\xe3\xd8\xe5\x54\xa5\x04\x89\xc0\x55\x48\x13\xf2\x93\x65\xe6\x6c\xeb\x70\x0c\xc0\xe8\x04\x73\x49\xa5\x80\x1a\xdd\x12\x32\xde\xc5\x73\xf9\xde\x94\x7f\x80\x97\xda\x00\xdd\x62\x55\x97\x34\x8e\x75\xe7\xa5\xd6\x17\x81\xb0\xd9\xf0\xd7\x70\xd0\xd3\x53\x78\xbf\x89\xfb\xe8\x14\xb9\x25\xb3\x8a\xfd\x4a\xf0\x32\x98\x6b\xfd\xc0\x6e\x9f\x29\x6b\x1f\x7e\xad\xf4\x8d\x1a\x12\x21\xec\x89\x86\xa6\x30\x1b\x3d\x5f\xa1\x2c\x31\x2f\x69\x36\x1a\xc3\x6c\xf4\xce\xe8\x85\x21\xcb\x05\x9c\x27\x38\x21\xcf\x46\xdf\xd3\xc2\xa0\x20\x31\x1b\xb5\xac\xff\x54\xa3\x2b\x96\xe7\x64\x16\xf4\x9a\xd6\x4f\x03\xc3\xad\xa5\x0b\x67\xb8\x41\x59\x3f\xad\x98\x66\xb3\xc6\xdd\xc7\xe5\xba\xa6\xa7\x15\xd6\x5b\x93\xe7\x58\x6f\x31\xda\x98\xd5\xc2\xd5\x35\x07\xfd\xea\x2c\xeb\x4c\xfd\xe1\x27\xab\xd5\x74\x36\xea\xce\x34\xd6\x15\xbb\x4c\xed\xd6\xb3\x11\x6c\x49\x30\x9d\x8d\x82\x0c\xed\x7c\x2b\xf4\x74\x36\xe2\xdd\x78\xda\x68\xa7\x73\x3f\x9f\xce\x46\xf9\xda\x91\x1d\x9f\x8d\x0d\xd5\x63\x6e\x41\x9e\x76\x3b\xcc\x46\x1f\x60\xa6\x5a\xa1\xb5\x5b\x92\x89\x96\xb6\xf0\xdb\xe8\x40\x6c\x0c\x86\x6a\x1c\xc3\xe5\xbe\x1b\x5c\xf8\xad\xc5\x05\xed\x5d\x37\x84\xb6\xe9\xb9\x86\x96\xa3\xe9\xf7\x2e\xb3\x80\x83\x8b\x87\x32\x49\x1c\x25\x5a\x77\x69\x50\x59\xd9\x76\xbf\xfb\x28\xef\x04\xec\xee\x83\x1c\x5d\xb1\x27\xb0\x0e\x1c\x4f\x84\x30\xdd\x18\xdb\x6d\xa8\x39\xfa\xb8\xca\x71\x50\xc7\xa3\x71\x6e\x45\x15\x8c\x91\x35\x11\x1b\x5b\x90\x9c\xe0\x66\x49\x2a\xb0\xf2\x4a\x90\x29\xd7\x9c\x6b\x3b\xae\xc5\x12\xd5\x82\x4b\x1e\xbc\xe2\x14\x80\x21\xc8\xb9\x1c\x7e\xe4\xa8\x19\xf3\x83\x0a\xbc\x6d\x4b\x73\x90\x6b\xc3\x91\xb3\x45\x8c\xf2\x86\x4d\xa8\xee\x45\x41\xb5\xe3\x50\xba\x9b\xb3\xbb\x71\x30\x5d\xb6\x23\x16\x96\x29\x70\x4d\x9e\xf0\xc6\x7b\x28\x1b\xe7\xb8\xa7\xe2\x1b\xea\xd8\x87\x2c\x7d\x85\x8a\xbd\x47\xb0\xbc\xdd\x9a\x12\xb2\xc0\xd0\x8f\xb4\x49\xb4\xab\x6d\x9d\x1d\x1a\x55\x73\x03\x92\x13\xa7\xbf\x10\x78\xcd\xb1\x3e\xf3\xf0\x15\xde\xbe\x21\xb5\x70\xcb\x29\x7c\xf3\xf8\x2f\x4f\xbe\xdd\x43\x18\x33\x21\x89\xbf\x91\xe2\x3a\x39\xd0\xee\xee\x51\xc3\xee\x83\xbd\xe6\x2a\x9c\x33\x6b\x7b\x8c\x6c\xd1\xd1\x04\x0f\xd9\xf6\xcb\x1b\xb4\x60\xc9\x41\x8e\x0c\x0c\x7c\xcd\x7a\xe1\xd4\x2e\x95\x75\xa8\x0a\x1a\x83\x9c\x0f\x33\x93\x9b\x8c\x5d\xae\xe1\xec\xf1\x18\xf2\x46\xc5\xbb\xb9\xfa\xea\xf6\x3a\x1b\x10\x59\x5a\xf8\x6e\x7c\x47\x1e\xee\x16\x7d\x28\x73\xec\x38\x70\x23\xdd\x92\x9b\xc9\x50\xfb\x9a\xb6\x7b\xa0\xf6\xd1\x46\xde\x4f\x19\x8e\x2b\xe0\x82\xcc\x27\xdd\x56\x2a\xf7\xe4\xcf\xfb\xed\x2b\x95\xac\x7c\x35\x85\x47\x7b\x48\x62\x4a\xbb\xa7\x35\x23\x71\x57\xfa\x91\x53\xd7\xc2\x60\xc5\x9d\x59\x01\x52\x70\xc3\x35\x97\x64\xfa\xae\xcd\x87\x6e\x1e\xe4\x62\xbe\xa5\xc5\x07\xb6\xc9\x43\x3d\x67\x7f\x67\xb4\xf0\x05\xb7\xdc\x7a\x1e\xfa\x49\x39\x97\x45\x3f\x41\x71\x1f\x1b\xa2\x21\x22\x29\xa0\x5b\x56\xfa\x06\xb3\x44\x58\x43\xa8\xa4\x5a\xd8\x66\x4b\x6e\xd8\x39\x81\xc4\x12\x7b\xb3\xa4\x50\x4f\x02\x02\x6b\x9e\x31\x41\x2a\x2b\x05\x19\x12\x80\xb0\xf0\x68\x50\x39\x22\xc1\xe9\x87\x43\xb0\xa1\xed\xa5\x3c\xec\xba\xf7\x36\x1a\x63\xa8\xc6\x64\xc5\x22\x36\x1d\x7f\x88\xd8\x2f\x17\xaa\x67\x8f\x1e\x1f\x34\xf9\x86\x6e\x2f\x51\x8d\x8e\xb1\xe0\x14\xfe\x79\xf5\x7c\xf2\x0f\x9c\xfc\x72\x7d\xdc\x7c\x78\x34\xf9\xee\x5f\xe3\xe9\xf5\xc3\xde\xd7\xeb\x93\x67\x7f\xdc\xc3\x29\x46\xd0\x3d\xdd\xa7\x29\x22\x6d\x67\xd8\x5a\x74\x1c\x2a\x8c\x9e\xc3\xa5\x61\x54\xfa\x12\x4b\x4b\x63\xf8\xbb\x0a\xa5\xe1\x33\x95\x46\xca\x57\xfb\xa5\xe3\xaa\x3c\xe2\x5d\x87\x3b\x8a\x0d\x49\x10\xe9\x30\x4d\x23\xee\x1e\x9a\x20\xeb\xfd\x94\x14\x7a\x32\x3d\xef\x67\x9a\x1e\x4a\x84\x90\xf1\xb8\x0f\xcd\x9a\x9e\x36\x2b\x74\x75\xda\x43\x91\xdc\x4c\x9f\xa3\x5a\x43\x97\xd6\x62\x07\x7a\xd7\xd3\x2d\xc3\x23\xc0\xc2\x68\x6b\x37\x30\xd8\x42\x29\x3f\x12\x6c\xda\xd4\x98\x2c\x73\x2a\x30\x74\xdf\x26\x97\xce\xa0\x59\x77\xd2\x59\x28\x50\x05\x50\x6b\x69\xee\x4b\x38\xb6\x44\x90\x29\x2d\x68\x37\xbb\x9e\xc4\x1c\x8a\xb9\x2c\xa5\x5b\x73\x96\x14\x54\x68\x35\x2f\x65\xd3\xf4\x57\x0c\xca\x50\xb9\x18\x6e\x86\x16\x74\x0b\xd2\x41\xc5\x8d\x24\x59\x26\x39\x16\xca\x9e\x9d\x3d\xfe\xe6\xc2\xe7\x42\x57\x28\xd5\xcb\xca\x9d\x9e\x3c\x3b\xfe\xd9\x63\xc9\x99\x47\xfc\x80\x15\xbd\xac\xdc\xc9\x97\x2b\x8b\x67\x4f\xee\x11\x45\xc7\x57\x31\x56\xae\x8f\xaf\x26\xcd\xa7\x87\xed\xd4\xc9\xb3\xe3\x59\x76\x70\xfd\xe4\x21\x9f\xa1\x17\x81\xd7\x57\x93\x2e\xfc\xb2\xeb\x87\x27\xcf\x7a\x6b\x27\xbb\xc1\xc8\x15\x4b\x16\xf4\xbc\x28\xb4\xff\x6a\x98\x73\x38\xf6\x3f\x81\xf6\x63\x0a\x68\xf1\xfe\x36\x6c\x1f\xc0\xfa\xd2\xd9\xa6\x7c\x46\x58\x1f\x3d\xa3\x49\x24\x9c\x60\x9d\x41\x59\x46\xb7\x2a\x9c\xc7\xb2\x77\x27\x00\x76\x6d\x1d\x55\x5f\x08\xd2\x77\x6e\x9c\xe0\x75\x82\xd7\x09\x5e\xef\x8c\x4f\xc3\xeb\x5d\x30\x9a\x90\x78\x42\xe2\xdd\x48\x48\x3c\x21\xf1\x84\xc4\xef\x65\xcd\x84\xc4\x13\x12\xdf\x1e\x09\x89\x37\x34\x09\x89\x27\x24\xfe\xb5\x91\x78\xac\x53\x53\x70\xc6\xb7\x4d\x8b\x75\xda\x70\x93\x02\x73\x76\xd9\x76\xd2\xe7\x1b\xfb\x76\x5e\xd8\x84\x2e\xfc\xfa\xdb\xf6\xeb\x38\x8f\xd3\xeb\x38\xe9\x75\x9c\xf4\x3a\x4e\x7a\x1d\xa7\x1d\x5f\xfb\x75\x9c\xed\xeb\xb9\xf8\xce\xcc\xd6\x75\x5c\xf0\xd9\xda\xe8\x95\x14\x64\xef\xbc\xbc\x13\xfa\xf0\x3b\x55\xa6\x42\xe5\xfb\x2f\xe4\xd0\xd7\x79\x1d\x27\xdd\xdd\xa5\xbb\xbb\x74\x77\x97\xee\xee\xd2\xdd\x5d\xba\xbb\x4b\x77\x77\xe9\xee\xae\x1b\xe9\xee\x2e\xdd\xdd\xed\x33\x79\xba\xbb\x6b\x47\xba\xbb\x4b\x77\x77\x03\xa6\xf8\xff\xb8\xbb\xeb\x7b\x50\xfa\xd5\x46\x82\xa6\x09\x9a\xfe\x8f\x41\xd3\x84\x37\x13\xde\x4c\x78\x73\x60\x24\xbc\x99\xf0\x66\xc2\x9b\x09\x6f\xee\x8c\x84\x37\x1b\x9a\x84\x37\x13\xde\x4c\xbf\xda\xf8\x0f\x7f\xb5\xf1\xf6\xcd\x79\xef\x4d\x90\xf8\x86\x48\xcf\xb3\x96\xb8\x22\xc8\x89\xd4\xa6\x8d\x48\xff\xc5\x4d\x50\x39\x41\xe5\xdf\x03\x54\x4e\xff\xc5\x4d\xa8\x3a\xa1\xea\x3d\x23\xa1\xea\x84\xaa\x13\xaa\x4e\xa8\x3a\xa1\xea\x43\x24\x09\x55\x27\x54\x3d\x34\x7e\xc7\xbf\xc0\xe8\xcf\x7d\xea\x07\x18\xff\x0e\x00\x00\xff\xff\xa4\x54\x9b\x0f\xf2\x56\x00\x00") +var _operatorsCoreosCom_operatorconditionsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5b\x5f\x6f\x1b\xb9\x11\x7f\xf7\xa7\x18\xa8\x05\x62\xa7\xd2\x2a\xf6\x15\xe9\x9d\x80\x20\x08\x72\x4d\x11\x24\xbe\x04\xb1\x7b\x0f\xb5\xdc\x66\x76\x39\x5a\xf1\xb2\x4b\xee\x91\x5c\xd9\xba\xc3\x7d\xf7\x62\xc8\x5d\xed\xca\x5a\xc9\x2e\x92\x06\xd7\x82\x7c\xb1\x44\xce\x0e\x87\xf3\xff\x47\xaf\xb0\x92\x3f\x92\xb1\x52\xab\x19\x60\x25\xe9\xd6\x91\xe2\x6f\x36\xf9\xf4\xad\x4d\xa4\x9e\xae\x4e\x8f\x3e\x49\x25\x66\xf0\xb2\xb6\x4e\x97\x1f\xc8\xea\xda\x64\xf4\x3d\x2d\xa4\x92\x4e\x6a\x75\x54\x92\x43\x81\x0e\x67\x47\x00\xa8\x94\x76\xc8\xd3\x96\xbf\x02\x64\x5a\x39\xa3\x8b\x82\xcc\x24\x27\x95\x7c\xaa\x53\x4a\x6b\x59\x08\x32\x9e\x79\xbb\xf5\xea\x49\xf2\x34\x39\x3b\x02\xc8\x0c\xf9\xc7\x2f\x65\x49\xd6\x61\x59\xcd\x40\xd5\x45\x71\x04\xa0\xb0\xa4\x19\xe8\x8a\x0c\x3a\x6d\x32\xad\x84\xdf\xde\x26\xed\x94\x4d\x32\x6d\x48\xf3\x9f\xf2\xc8\x56\x94\xb1\x04\xb9\xd1\x75\xd5\x3d\xb6\x45\x13\x78\xb6\x82\xa2\xa3\x5c\x1b\xd9\x7e\x07\x98\x80\x2e\x4a\xff\x39\x28\xe0\x5d\xc3\xe3\x65\xbb\xb5\x5f\x2b\xa4\x75\x6f\x86\xd7\xdf\x4a\xeb\x3c\x4d\x55\xd4\x06\x8b\x21\xe1\xfd\xb2\x5d\x6a\xe3\x7e\xe8\x44\xe1\xad\xb3\xad\x4d\xac\x54\x79\x5d\xa0\x19\x60\x71\x04\x60\x33\x5d\xd1\x0c\x3c\x87\x0a\x33\x12\x47\x00\x8d\x66\x1b\x8e\x93\x46\x7b\xab\xd3\x66\x03\x9b\x2d\xa9\xc4\x76\x3b\x60\xb6\xea\xc5\xfb\xd7\x3f\x7e\x73\x71\x67\x01\x40\x90\xcd\x8c\xac\x9c\xb7\xd3\xce\x19\x41\x5a\xc0\xc6\x37\xa0\x75\x0e\xd0\x0b\x70\xeb\x8a\xe0\xe3\x0e\xfd\x47\xb8\x59\xca\x6c\xc9\x8f\xd5\x96\x04\x38\xcd\x47\x5d\xd1\x1a\xa4\x5a\x68\x53\x7a\xe3\xf3\xec\xbb\xb7\xe7\x80\xa9\xae\x1d\xb8\x25\x81\x75\xe8\x3c\x5b\x54\x1b\x15\x24\x3d\x21\x79\xb7\x19\xe8\xf4\x27\xca\x5c\x6f\xda\xd0\xcf\xb5\x34\x24\xfa\xe7\x61\x6d\xb4\x2e\xdb\x9b\xae\x0c\xf3\x75\x3d\xfb\x87\xd1\x0b\x90\xad\xf9\x3b\x8a\x79\xc4\xda\x0b\x74\x20\x38\x36\xc8\x7a\xc1\x1b\x3b\x90\x68\x54\xee\x55\xb3\x94\x16\x0c\x55\x86\x2c\xa9\x10\x2d\xed\xd1\xfc\x01\x12\xb8\x20\xc3\x0f\xb2\x67\xd4\x85\x08\x1a\x32\x0e\x0c\x65\x3a\x57\xf2\x97\x0d\x37\xcb\x9a\xe2\x6d\x0a\x74\x64\x1d\x48\xe5\xc8\x28\x2c\x60\x85\x45\x4d\x63\x40\x25\xa0\xc4\x35\x18\x62\xbe\x50\xab\x1e\x07\x4f\x62\x13\x38\xd7\x86\xbc\xf2\x67\xb0\x74\xae\xb2\xb3\xe9\x34\x97\xae\x0d\xff\x4c\x97\x65\xad\xa4\x5b\x4f\x7d\x24\xcb\xb4\xe6\x28\x9a\x0a\x5a\x51\x31\xb5\x32\x9f\xa0\xc9\x96\xd2\x51\xe6\x6a\x43\x53\xac\xe4\xc4\x0b\xab\x42\x68\x96\xe2\x0f\xa6\xf1\x09\xfb\xe8\x8e\xfa\x82\xc9\xac\x33\x52\xe5\x5b\x4b\x3e\xda\x0e\xea\x9a\xe3\x2d\x38\x5e\x78\x3c\x9c\xa5\x53\x29\x4f\xb1\x56\x3e\xfc\xf5\xe2\x12\x5a\x01\x82\xda\x83\x86\x3b\x52\xdb\x29\x9b\x15\x25\xd5\x82\x4c\xa0\x5c\x18\x5d\x7a\x2e\xa4\x44\xa5\xa5\x0a\x8e\x98\x15\x92\x94\x03\x5b\xa7\xa5\x74\xd6\x3b\x18\x59\xc7\x76\x48\xe0\xa5\xcf\x7e\x90\x12\xd4\x95\x40\x47\x22\x81\xd7\x0a\x5e\x62\x49\xc5\x4b\xb4\xf4\x5f\x57\x35\x6b\xd4\x4e\x58\x7d\x0f\x57\x76\x3f\x79\xef\x3e\xb0\x13\x50\x00\x6d\x62\xdd\x6b\x9d\x9d\x90\xbf\xa8\x28\x03\x2c\x0a\x7d\xc3\x16\xcb\x8a\xda\x3a\x32\x80\xa2\x94\x6a\x4f\xf8\x1f\x8e\xfb\x26\x3b\x8c\xa1\xd2\x8e\x4f\x8f\x45\xb1\x06\xbd\x22\x63\xa4\x60\xcb\x87\x67\x0c\x55\xda\x38\x12\x90\xae\x3d\xa7\xa1\xac\x71\xf0\xa0\xfb\x53\x42\x38\x72\x55\xe8\x75\xc9\x1e\xb4\xbb\xd8\x72\x45\x63\x70\x3d\xb0\x2a\x1d\x95\x83\x8f\x1d\x30\x14\x8f\xe6\x90\x43\xf2\x7c\xc6\x96\x5b\xd6\x1b\x75\x99\x9d\xbd\x10\xa5\xb2\x20\xc8\xa1\x2c\x2c\x2c\xb4\x01\xad\x08\x90\x7d\xc0\x85\x4c\x46\x90\xd5\xc6\xf8\x90\x68\x4d\xe5\xa3\xe7\xc5\xfb\xd7\x9b\x72\x90\xc0\x64\x32\x81\x4b\x9e\xb6\xce\xd4\x99\xe3\xd8\xe5\x54\xa5\x04\x09\xcf\x55\x48\xe3\xf3\x93\x65\xe6\x6c\x6b\x7f\x0c\xc0\xe0\x04\x0b\x49\x85\x80\x0a\xdd\x12\x12\xde\xa5\xe6\xf2\xbd\x29\xff\x00\xaf\xb4\x01\xba\xc5\xb2\x2a\x68\x1c\xea\xce\x2b\xad\x2f\x3c\x61\xb3\xe1\xaf\xfe\xa0\xd3\x29\x7c\xd8\xc4\x7d\x70\x8a\xd4\x92\x59\x85\x7e\xc5\x7b\x19\x2c\xb4\x7e\x64\xb7\xcf\x94\xb4\x0f\xbf\x51\xfa\x46\x0d\x89\xe0\xf7\x44\x43\x33\x98\x8f\x5e\xac\x50\x16\x98\x16\x34\x1f\x8d\x61\x3e\x7a\x6f\x74\x6e\xc8\x72\x01\xe7\x09\x4e\xc8\xf3\xd1\xf7\x94\x1b\x14\x24\xe6\xa3\x96\xf5\x9f\x2a\x74\xd9\xf2\x9c\x4c\x4e\x6f\x68\xfd\xcc\x33\xdc\x5a\xba\x70\x86\x1b\x94\xf5\xb3\x92\x69\x36\x6b\xdc\x7d\x5c\xae\x2b\x7a\x56\x62\xb5\x35\x79\x8e\xd5\x16\xa3\x8d\x59\x2d\x5c\x5d\x73\xd0\xaf\x4e\x93\xce\xd4\x1f\x7f\xb2\x5a\xcd\xe6\xa3\xee\x4c\x63\x5d\xb2\xcb\x54\x6e\x3d\x1f\xc1\x96\x04\xb3\xf9\xc8\xcb\xd0\xce\xb7\x42\xcf\xe6\x23\xde\x8d\xa7\x8d\x76\x3a\xad\x17\xb3\xf9\x28\x5d\x3b\xb2\xe3\xd3\xb1\xa1\x6a\xcc\x2d\xc8\xb3\x6e\x87\xf9\xe8\x23\xcc\x55\x2b\xb4\x76\x4b\x32\xc1\xd2\x16\x7e\x1b\x1d\x88\x8d\xc1\x50\x0d\x63\xb8\xdc\x77\x83\x0b\xbf\xb5\x98\xd3\xde\x75\x43\x68\x9b\x9e\x6b\x68\x39\x98\x7e\xef\x32\x0b\x38\xb8\x78\x28\x93\x84\x51\xa0\x75\x97\x06\x95\x95\x6d\xf7\xbb\x8f\xf2\x4e\xc0\xee\x3e\xc8\xd1\x15\x7a\x02\xeb\xc0\xf1\x84\x0f\xd3\x8d\xb1\xdd\x86\x9a\xa3\x8f\xab\x1c\x07\x75\x38\x1a\xe7\x56\x54\xde\x18\x49\x13\xb1\xa1\x05\x49\x09\x6e\x96\xa4\x3c\xab\x5a\x09\x32\xc5\x9a\x73\x6d\xc7\x35\x5b\xa2\xca\xb9\xe4\xc1\x6b\x4e\x01\xe8\x83\x9c\xcb\xe1\x27\x8e\x9a\x31\x3f\xa8\xa0\xb6\x6d\x69\xf6\x72\x6d\x38\x72\xb6\x08\x51\xde\xb0\xf1\xd5\x3d\xcb\xa8\x72\x1c\x4a\x77\x73\x76\x37\x0e\xa6\xcb\x76\x84\xc2\x32\x03\xae\xc9\x13\xde\x78\x0f\x65\xe3\x1c\x0f\x54\x7c\x43\x1d\xfa\x90\x65\x5d\xa2\x62\xef\x11\x2c\x6f\xb7\xa6\x84\xcc\xd0\xf7\x23\x6d\x12\xed\x6a\x5b\x67\x87\x46\xd5\xdc\x80\xa4\xc4\xe9\xcf\x07\x5e\x73\xac\xcf\x3c\x7c\x89\xb7\x6f\x49\xe5\x6e\x39\x83\x6f\xce\xfe\xf2\xf4\xdb\x3d\x84\x21\x13\x92\xf8\x1b\x29\xae\x93\x03\xed\xee\x1e\x35\xec\x3e\xd8\x6b\xae\xfc\x39\x93\xb6\xc7\x48\xf2\x8e\xc6\x7b\xc8\xb6\x5f\xde\xa0\x05\x4b\x0e\x52\x64\x60\x50\x57\xac\x17\x4e\xed\x52\x59\x87\x2a\xa3\x31\xc8\xc5\x30\x33\xb9\xc9\xd8\xc5\x1a\x4e\xcf\xc6\x90\x36\x2a\xde\xcd\xd5\x57\xb7\xd7\xc9\x80\xc8\xd2\xc2\x77\xe3\x3b\xf2\x70\xb7\x58\xfb\x32\xc7\x8e\x03\x37\xd2\x2d\xb9\x99\xf4\xb5\xaf\x69\xbb\x07\x6a\x1f\x6d\xe4\xbd\xcf\x70\x5c\x01\x73\x32\xf7\xba\xad\x54\xee\xe9\x9f\xf7\xdb\x57\x2a\x59\xd6\xe5\x0c\x9e\xec\x21\x09\x29\xed\x81\xd6\x0c\xc4\x5d\xe9\x47\x4e\x5d\xb9\xc1\x92\x3b\xb3\x0c\xa4\xe0\x86\x6b\x21\xc9\xf4\x5d\x9b\x0f\xdd\x3c\xc8\xc5\x7c\x4b\x8b\x8f\x6c\x93\x87\x7a\xce\xfe\xde\x68\x51\x67\xdc\x72\xeb\x85\xef\x27\xe5\x42\x66\xfd\x04\xc5\x7d\xac\x8f\x86\x80\xa4\x80\x6e\x59\xe9\x1b\xcc\x12\x60\x0d\xa1\x92\x2a\xb7\xcd\x96\xdc\xb0\x73\x02\x09\x25\xf6\x66\x49\xbe\x9e\x78\x04\xd6\x3c\x63\xbc\x54\x56\x0a\x32\x24\x00\x21\xaf\xd1\xa0\x72\x44\x82\xd3\x0f\x87\x60\x43\xdb\x4b\x79\xd8\x75\xef\x6d\x34\x86\x50\x0d\xc9\x8a\x45\x6c\x3a\x7e\x1f\xb1\x5f\x2e\x54\x4f\x9f\x9c\x1d\x34\xf9\x86\x6e\x2f\x51\x85\x8e\xb1\xe0\x0c\xfe\x79\xf5\x62\xf2\x0f\x9c\xfc\x72\x7d\xdc\x7c\x78\x32\xf9\xee\x5f\xe3\xd9\xf5\xe3\xde\xd7\xeb\x93\xe7\x7f\xdc\xc3\x29\x44\xd0\x03\xdd\xa7\x29\x22\x6d\x67\xd8\x5a\x74\xec\x2b\x8c\x5e\xc0\xa5\x61\x54\xfa\x0a\x0b\x4b\x63\xf8\xbb\xf2\xa5\xe1\x33\x95\x46\xaa\x2e\xf7\x4b\xc7\x55\x79\xc4\xbb\x0e\x77\x14\x1b\x12\x2f\xd2\x61\x9a\x46\xdc\x3d\x34\x5e\xd6\x87\x29\xc9\xf7\x64\x7a\xd1\xcf\x34\x3d\x94\x08\x3e\xe3\x71\x1f\x9a\x34\x3d\x6d\x92\xe9\x72\xda\x43\x91\xdc\x4c\x9f\xa3\x5a\x43\x97\xd6\x42\x07\x7a\xd7\xd3\x2d\xc3\x23\xc0\xcc\x68\x6b\x37\x30\xd8\x42\x21\x3f\x11\x6c\xda\xd4\x90\x2c\x53\xca\xd0\x77\xdf\x26\x95\xce\xa0\x59\x77\xd2\x59\xc8\x50\x79\x50\x6b\x69\x51\x17\x70\x6c\x89\x20\x51\x5a\xd0\x6e\x76\x3d\x09\x39\x14\x53\x59\x48\xb7\xe6\x2c\x29\x28\xd3\x6a\x51\xc8\xa6\xe9\x2f\x19\x94\xa1\x72\x21\xdc\x0c\xe5\x74\x0b\xd2\x41\xc9\x8d\x24\x59\x26\x39\x16\xca\x9e\x9e\x9e\x7d\x73\x51\xa7\x42\x97\x28\xd5\xab\xd2\x4d\x4f\x9e\x1f\xff\x5c\x63\xc1\x99\x47\xfc\x80\x25\xbd\x2a\xdd\xc9\x97\x2b\x8b\xa7\x4f\x1f\x10\x45\xc7\x57\x21\x56\xae\x8f\xaf\x26\xcd\xa7\xc7\xed\xd4\xc9\xf3\xe3\x79\x72\x70\xfd\xe4\x31\x9f\xa1\x17\x81\xd7\x57\x93\x2e\xfc\x92\xeb\xc7\x27\xcf\x7b\x6b\x27\xbb\xc1\xc8\x15\x4b\x66\xf4\x22\xcb\x74\xfd\xd5\x30\xe7\x70\xec\xdf\x83\xf6\x43\x0a\x68\xf1\xfe\x36\x6c\x1f\xc0\xfa\xd2\xd9\xa6\x7c\x06\x58\x1f\x3c\xa3\x49\x24\x9c\x60\x9d\x41\x59\x04\xb7\xca\x5c\x8d\x45\xef\x4e\x00\xec\xda\x3a\x2a\xbf\x10\xa4\xef\xdc\x38\xc2\xeb\x08\xaf\x23\xbc\xde\x19\xf7\xc3\xeb\x5d\x30\x1a\x91\x78\x44\xe2\xdd\x88\x48\x3c\x22\xf1\x88\xc4\x1f\x64\xcd\x88\xc4\x23\x12\xdf\x1e\x11\x89\x37\x34\x11\x89\x47\x24\xfe\xb5\x91\x78\xa8\x53\x33\x70\xa6\x6e\x9b\x16\xeb\xb4\xe1\x26\x05\x16\xec\xb2\xed\x64\x9d\x6e\xec\xdb\x79\x61\x13\xba\xf0\xeb\x6f\xdb\xaf\xe3\x9c\xc5\xd7\x71\xe2\xeb\x38\xf1\x75\x9c\xf8\x3a\x4e\x3b\xbe\xf6\xeb\x38\xdb\xd7\x73\xe1\x9d\x99\xad\xeb\x38\xef\xb3\x95\xd1\x2b\x29\xc8\xde\x79\x79\xc7\xf7\xe1\x77\xaa\x4c\x89\xaa\xee\xbf\x90\x43\x5f\xe7\x75\x9c\x78\x77\x17\xef\xee\xe2\xdd\x5d\xbc\xbb\x8b\x77\x77\xf1\xee\x2e\xde\xdd\xc5\xbb\xbb\x6e\xc4\xbb\xbb\x78\x77\xb7\xcf\xe4\xf1\xee\xae\x1d\xf1\xee\x2e\xde\xdd\x0d\x98\xe2\xff\xe3\xee\xae\xef\x41\xf1\x57\x1b\x11\x9a\x46\x68\xfa\x3f\x06\x4d\x23\xde\x8c\x78\x33\xe2\xcd\x81\x11\xf1\x66\xc4\x9b\x11\x6f\x46\xbc\xb9\x33\x22\xde\x6c\x68\x22\xde\x8c\x78\x33\xfe\x6a\xe3\x3f\xfc\xd5\xc6\xbb\xb7\xe7\xbd\x37\x41\xc2\x1b\x22\x3d\xcf\x5a\xe2\x8a\x20\x25\x52\x9b\x36\x22\xfe\x17\x37\x42\xe5\x08\x95\x7f\x0f\x50\x39\xfe\x17\x37\xa2\xea\x88\xaa\xf7\x8c\x88\xaa\x23\xaa\x8e\xa8\x3a\xa2\xea\x88\xaa\x0f\x91\x44\x54\x1d\x51\xf5\xd0\xf8\x1d\xff\x02\xa3\x3f\x77\xdf\x0f\x30\xfe\x1d\x00\x00\xff\xff\xcd\xc3\xfd\xa8\xf2\x56\x00\x00") func operatorsCoreosCom_operatorconditionsYamlBytes() ([]byte, error) { return bindataRead( @@ -164,7 +164,7 @@ func operatorsCoreosCom_operatorconditionsYaml() (*asset, error) { return a, nil } -var _operatorsCoreosCom_operatorgroupsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5a\xe9\x6f\x1b\x37\x16\xff\xee\xbf\xe2\x41\x5d\x20\x76\x56\x1a\xc5\xee\x22\xdb\x0a\x08\x02\x23\x69\x0a\x6f\x73\x18\xb1\xdb\x0f\x6b\x7b\xb7\xd4\xcc\xd3\x88\x35\x87\x9c\x92\x1c\xdb\x6a\x90\xff\x7d\xf1\x1e\x39\x87\x4e\xcb\x49\xda\xed\x2e\xa4\x2f\xf6\x0c\x8f\x79\xe7\xef\x1d\xa4\x28\xe5\x4f\x68\x9d\x34\x7a\x04\xa2\x94\x78\xe7\x51\xd3\x93\x4b\xae\xbf\x71\x89\x34\xc3\x9b\xc3\xbd\x6b\xa9\xb3\x11\xbc\xa8\x9c\x37\xc5\x7b\x74\xa6\xb2\x29\xbe\xc4\x89\xd4\xd2\x4b\xa3\xf7\x0a\xf4\x22\x13\x5e\x8c\xf6\x00\x84\xd6\xc6\x0b\x7a\xed\xe8\x11\x20\x35\xda\x5b\xa3\x14\xda\x41\x8e\x3a\xb9\xae\xc6\x38\xae\xa4\xca\xd0\xf2\xe6\xf5\xa7\x6f\x9e\x24\x4f\x93\x27\x7b\x00\xa9\x45\x5e\x7e\x2e\x0b\x74\x5e\x14\xe5\x08\x74\xa5\xd4\x1e\x80\x16\x05\x8e\xc0\x94\x68\x85\x37\x36\xb7\xa6\x2a\x5d\x52\x3f\xba\x24\x35\x16\x0d\xfd\x29\xf6\x5c\x89\x29\x7d\x9d\xe7\xb4\x4b\xe6\xe6\x84\xfd\x6a\x22\x85\xc7\xdc\x58\x59\x3f\x03\x0c\xc0\xa8\x82\xff\x0f\xcc\xbf\x8b\x7b\x7c\x4f\x5b\xf2\x7b\x25\x9d\xff\x61\x79\xec\xb5\x74\x9e\xc7\x4b\x55\x59\xa1\x16\x09\xe6\x21\x37\x35\xd6\xbf\x6d\x3f\xcf\x9f\xcb\xc3\x90\xd4\x79\xa5\x84\x5d\x58\xb7\x07\xe0\x52\x53\xe2\x08\x78\x59\x29\x52\xcc\xf6\x00\xa2\xf8\xe2\x36\x83\x28\xa2\x9b\xc3\xb8\xab\x4b\xa7\x58\x88\xfa\x1b\x40\x5b\xea\xe3\xd3\x93\x9f\xbe\x3e\x5b\x18\x00\xc8\xd0\xa5\x56\x96\x9e\x95\x31\xc7\x10\x48\x07\x7e\x8a\x50\x69\xe9\xc1\x4c\xa0\xa8\x94\x97\x1e\xb5\xd0\xe9\x0c\x26\xc6\xc2\xbb\xd7\x6f\xa0\x10\x5a\xe4\x98\x75\x44\x0d\x27\x9e\x74\xef\xbc\x15\x52\x87\x1d\xa4\x76\x5e\x28\xc5\xea\xa5\x9d\x9a\xc9\x20\x35\x48\xef\x82\x46\x88\x37\xf0\x06\x04\x90\x1a\xe5\x44\x62\x06\x0e\xf9\xd3\x5e\xd8\x1c\x7d\x3b\xcd\x25\x1d\x0e\xfc\x8c\xc4\x63\xc6\xbf\x60\xea\x3b\xaf\x2d\xfe\x5a\x49\x8b\x59\x97\x59\x12\x55\x6d\xb4\x9d\xd7\xa5\x25\x8a\x7c\xc7\x0a\xc2\xaf\xe3\x22\x73\xef\x17\xa4\xf6\x88\x44\x1b\xe6\x41\x46\xde\x81\x81\xed\xa8\x24\x62\x83\xc5\xce\x9c\x4c\xa5\x03\x8b\xa5\x45\x87\xda\x37\x12\x11\x3a\x32\x90\xc0\x19\x5a\x5a\x48\xb6\x52\xa9\x8c\x44\x79\x83\xd6\x83\xc5\xd4\xe4\x5a\xfe\xd6\xec\xe6\x48\x56\xf4\x19\x25\x3c\x3a\x0f\x52\x7b\xb4\x5a\x28\xb8\x11\xaa\xc2\x3e\x08\x9d\x41\x21\x66\x60\x91\xf6\x85\x4a\x77\x76\xe0\x29\x2e\x81\x37\xc6\x92\x76\x26\x66\x04\x53\xef\x4b\x37\x1a\x0e\x73\xe9\x6b\x00\x48\x4d\x51\x90\xf2\x67\x43\xf6\x65\x39\xae\x48\x67\xc3\x0c\x6f\x50\x0d\x9d\xcc\x07\xc2\xa6\x53\xe9\x31\xf5\x95\xc5\xa1\x28\xe5\x80\x89\xd5\x0c\x02\x49\x91\x7d\x65\x23\x64\xb8\x47\x0b\xe2\x0b\x2a\x73\xde\x4a\x9d\xcf\x0d\xb1\xcf\x6d\x94\x35\x79\x1e\x59\xa6\x88\xcb\x03\x2f\xad\x48\xe9\x15\x49\xe5\xfd\x77\x67\xe7\x50\x13\x10\xc4\x1e\x24\xdc\x4e\x75\xad\xb0\x49\x50\x52\x4f\xd0\x86\x99\x13\x6b\x0a\xde\x05\x75\x56\x1a\xa9\x3d\x3f\xa4\x4a\xa2\xf6\xe0\xaa\x71\x41\x46\x4b\x06\x86\xce\x93\x1e\x12\x78\xc1\xf8\x07\x63\x84\xaa\xcc\x84\xc7\x2c\x81\x13\x0d\x2f\x44\x81\xea\x85\x70\xf8\xbb\x8b\x9a\x24\xea\x06\x24\xbe\xed\x85\xdd\x85\xef\xe5\x05\x4b\x0e\x05\x50\xc3\xeb\x5a\xed\xcc\xe1\xc7\x59\x89\x69\x8d\x21\xb4\x92\x31\x43\xe8\x05\x90\xa9\x55\x94\x6c\x4b\xc4\x7a\x77\x65\x12\x51\x61\xea\x8d\x5d\x1e\x59\x20\xf5\x2c\x4e\x8c\x2b\x02\x99\x73\xa4\x3d\x72\x9b\x71\x67\x0b\x4a\xef\xa3\x96\xb5\x20\x7c\x3a\xfd\xee\x8e\x6c\xb2\x03\xe9\xf7\x50\xbf\xb8\x28\x78\x04\x45\x26\x42\x13\x25\xc6\xa8\x1a\x51\xd4\x48\x58\x04\x93\x3f\x9f\xe2\xdc\x1b\x10\x16\xe1\xf8\xed\x4b\xcc\x56\x31\xd7\x32\x28\xac\x15\xb3\x35\x33\xa4\xc7\x62\x2d\xe1\x0b\xa4\x1f\x6f\x20\x2f\x3a\x76\x3d\xe2\xa7\x82\x63\x89\xe7\x48\x12\x40\xab\x0f\x02\xae\x71\x16\xf0\x8d\x60\x33\xaa\x2c\x4c\xb6\xc8\x68\xc8\xca\xbc\xc6\x19\x4f\x8a\x60\xb7\x96\xba\x7b\xf4\x17\x7e\xab\xa3\xc9\xfc\x6f\x40\x9f\xdc\x38\x5e\x13\xbb\x76\xd2\x7d\xc6\x12\x7e\xd7\x38\xdb\x34\xbc\x20\x70\x92\x43\x74\xc3\x20\x79\x7a\xc1\xd2\x62\xcf\xac\x85\x2d\xca\x52\x49\x64\x34\xdb\xb8\xf7\x5a\x38\x99\xff\xd5\xac\x3e\x80\xd0\x46\x95\x2d\x42\x07\x65\x3f\x72\x41\xb1\x64\xe9\x53\x59\xc6\x24\x21\xa4\x06\x75\x28\xfb\x49\x28\xd9\x49\x43\xd8\xaa\x4f\x74\x1f\xde\x1a\x4f\x7f\xbe\xbb\x93\x04\xd5\x64\x0f\x2f\x0d\xba\xb7\xc6\xf3\x9b\x2f\xc2\x6a\x20\xe1\x01\x8c\x86\x05\x6c\xec\x3a\xf8\x15\x71\xd2\x8d\x67\x94\x46\x4d\x58\x3f\x8d\x50\xa4\xa3\x88\x62\x6c\xcd\x11\x67\x18\x61\xa3\xb0\x45\x51\x39\x0e\x40\xda\xe8\x01\x16\xa5\x9f\xad\xdc\x23\x0a\xc2\xd8\x39\x39\x6c\xd8\x2e\x6e\x75\x4e\x71\x31\x8c\x84\x0c\x46\x51\x2a\x0a\x59\xc5\x44\x73\x34\xa6\x5c\x5a\xa6\x50\xa0\xcd\x11\x4a\x42\xa8\x6d\xc4\xbb\x09\x57\xc2\xef\x1e\x74\xd9\x52\x57\x0c\x99\xaf\xc9\x01\x1e\x00\xb1\x61\x7e\x80\xa5\x42\x94\xa4\xa6\x0f\x84\x3e\x2c\xa9\x8f\x50\x0a\x49\x19\xef\x31\x67\xef\x0a\xe7\xc6\xa4\x66\x99\x76\xb7\xa1\x1d\xa4\x03\x82\x92\x1b\xa1\x08\xef\xc8\x92\x35\xa0\x0a\xe8\x47\x49\xf6\x02\xb0\xf7\xe1\x76\x6a\x5c\x00\xb3\x89\x44\xc5\xb9\x4f\xef\x1a\x67\xbd\xfe\x92\x6a\x7b\x27\xba\x17\x70\x71\x49\x99\x0d\x88\x1a\xad\x66\xd0\xe3\xb1\xde\xa7\xc7\x82\x8d\x60\x29\xb2\x8c\xcb\x43\xa1\x4e\xb7\x40\xb3\x8d\x7a\x73\x68\x6f\x64\x8a\xc7\x69\x6a\x2a\xcd\x85\xd3\x16\x71\x7d\x71\x49\x0d\x7e\x22\x2b\xa4\x9e\xab\x2d\x78\x26\x88\x30\x15\x6e\xa7\x32\x9d\xc2\xad\x54\x8a\xd3\x38\x87\x19\xa9\x27\xc3\x52\x99\x59\x23\xe7\x7d\x77\x10\x34\x4b\xf9\x64\x2d\x7b\xae\xd4\xd6\xa7\x06\xeb\x98\xa3\xf4\x3f\x3d\xb5\xe6\x46\x66\x98\x1d\x9f\x9e\xac\x94\xd2\x3c\x73\xbc\x04\x3c\x2a\xe5\xb8\xfc\xa2\x9c\xd3\x9b\x98\x73\xae\x4c\x61\xca\xce\xfe\x9d\x22\x7d\x2d\xb1\x63\x63\x14\x8a\xe5\xf1\x90\x0a\x35\x45\xe8\xfd\xb4\x9e\x2f\x2c\x88\x70\x87\x77\xa5\x92\xa9\xf4\x35\x7e\xb7\xb9\x15\xd7\x33\xbc\x88\x81\x4b\x72\x36\xe0\xd0\xf7\xdb\x5c\x4d\x3a\x90\xb9\x36\x76\xb5\x7d\x6e\xc6\x93\x0d\x28\x72\x0f\x76\xdc\x0d\xae\xab\x31\x5a\x8d\x1e\xdd\x80\x72\xac\x41\x5c\x80\x0b\xe9\xb1\x17\xbe\x5a\xfa\xc4\x86\x04\x99\xe7\x37\x29\x72\x78\x5a\x95\x24\xbf\x7f\x78\x8e\xbc\x3e\x5f\x19\x80\x12\xce\xff\x18\xaa\x94\x07\x64\xd6\xa9\xd1\xc1\xaf\xef\x57\xfd\x8b\x66\xea\x62\x8c\x5b\x65\xa1\xed\xc6\x5f\x54\xa9\x73\x14\xf5\x1a\x92\x5a\x28\xcc\xd0\x0b\xa9\x82\xc4\x8d\x46\x10\x04\x0d\xbe\xa6\x32\xad\xac\xe5\x6a\xcf\x93\x67\xd5\x95\xfb\xf1\xe9\x09\x34\xda\x80\xc1\x60\x10\xe2\xa2\xf3\xb6\x4a\xd9\x5e\xa9\x0a\xd7\x19\x66\xbc\x6b\x26\x2d\x97\xde\x8e\x36\x6f\xe5\x10\x33\xaf\x00\xe7\xa5\xf0\x53\x48\x82\xf2\x93\x8e\x28\x00\x5e\x19\x0b\x78\x27\x8a\x52\x61\x9f\xc5\x00\xaf\x8c\x89\x36\x13\x3e\xf8\x81\x19\x1d\x0e\xe1\x7d\x9b\x30\x71\x50\x18\x13\xb6\x85\x7c\x89\xbb\x0b\x30\x31\x86\x24\xdd\xe5\x29\xa9\x17\xff\xa0\xcd\xad\x5e\x45\x02\x7f\x53\x58\x1c\xc1\x65\xef\xf8\x46\x48\x25\xc6\x0a\x2f\x7b\x7d\xb8\xec\x9d\x5a\x93\x73\x88\xd2\xf9\x65\x8c\x39\x97\xbd\x97\x98\x5b\x91\x61\x76\xd9\xab\xb7\xfe\x2b\x67\x01\x6f\x28\x21\xf8\x01\x67\xcf\x78\xc3\xb9\xa1\xb3\x90\x35\xcc\x9e\x85\xa4\xa1\x1e\x23\x27\x3b\x9f\x95\xf8\x8c\x22\x66\xf7\xe5\x1b\x51\xce\x6d\xd4\xb1\xb4\x8b\x2b\xaa\x67\x6f\x0e\x93\x56\xd5\x3f\xff\xe2\x8c\x1e\x5d\xf6\x5a\x9e\xfa\xa6\x20\x93\x29\xfd\xec\xb2\x07\x73\x14\x8c\x2e\x7b\x4c\x43\xfd\xbe\x26\x7a\x74\xd9\xa3\xaf\xd1\x6b\x6b\xbc\x19\x57\x93\xd1\x65\x6f\x3c\xf3\xe8\xfa\x87\x7d\x8b\x65\x9f\x00\xec\x59\xfb\x85\xcb\xde\xcf\x70\xa9\x6b\xa2\x8d\x9f\xa2\x0d\x9a\x76\xf0\xb1\xb7\x01\x7d\x36\x84\xd4\xfb\x6a\x8f\xe0\xd1\xe7\x56\x68\x27\xeb\x0e\xea\xda\xa9\x05\x3a\x27\xf2\xf5\xe3\x16\x85\x5b\x19\x1e\xc2\x70\xb0\x92\xb5\xc3\xc4\xcb\xca\xc1\xfb\x0b\x9b\x65\x1e\xb6\x2c\x28\x97\x17\xb6\xe5\x8e\xf3\xe0\xe9\x05\x7b\x74\x63\x17\xbe\x99\x4d\x8e\x6a\x4d\xc1\xfe\x1f\x01\x98\x53\x32\xd6\x5b\x4c\x7a\x63\x23\x6e\x8c\x70\x3b\x45\x1d\x5b\xa2\x19\x5a\x35\xa3\xcc\xb7\xdd\x35\x9d\x0a\x9d\x63\x96\x40\x48\xbb\x05\xe3\x01\x05\xe8\x6b\x72\x30\x4e\xd7\x34\x54\xae\x6e\x50\x31\x5d\xcd\x8e\x04\x2c\x01\x10\xe2\x36\x8c\x9c\x69\x8a\xa5\x27\xaf\xbb\xaf\x7a\xbd\xa7\x46\x99\x18\x5b\x08\x3f\x02\xc2\xfc\x81\x5f\x6f\x1e\xd1\x38\xb6\x14\x7c\x9c\x1d\xb2\xe3\x69\x55\x08\x4d\xd6\x93\x11\xbd\xed\x98\xce\x64\x2a\xb8\x2b\x57\xe3\xad\x18\x9b\x2a\x20\x60\xab\x87\x28\xea\x42\xcc\x48\xce\x94\x26\x90\x8f\x46\xb6\x3e\x93\xf9\x42\xdc\xbd\x46\x9d\xfb\xe9\x08\xbe\x3e\xfa\xfb\xd3\x6f\xd6\x4c\x0c\xa0\x89\xd9\xf7\xa8\x29\x3e\xad\x68\xfa\xae\x11\xc3\xf2\xc2\x6e\x01\x4b\x7c\x26\x75\xa7\x2d\xc9\xdb\x39\x4d\x05\xde\x5a\xd0\xad\xe0\x84\x07\xc6\x82\x92\xcf\xaa\x24\xb9\x50\x14\xe0\xfe\xb9\x4e\xb1\x0f\x72\xb2\x7a\x33\xd9\x80\xbb\x9a\xc1\xe1\x51\x1f\xc6\x51\xc4\xcb\xb0\x7e\x71\x77\x95\xac\x20\x59\x3a\xf8\xb6\xbf\x40\x0f\xe5\xb8\x15\x47\x44\x4e\x2f\x6f\xa5\x9f\x82\xc5\x10\x26\x63\xf3\x79\x45\x98\xc4\x86\xde\xfb\x14\x47\xc1\x32\xc7\xf5\xdd\x90\xda\x6c\xa5\xf6\x4f\xff\xb6\x5e\xbf\x52\xcb\xa2\x2a\x46\xf0\x64\xcd\x94\x00\x69\x5b\x6a\x33\x4c\x6e\xb3\x04\x41\xd0\x95\x5b\x51\x14\x9c\x7a\xcb\x0c\xb5\xa7\xfa\xc1\x76\x4d\xdb\x73\x1d\xc5\x0b\x27\xdc\x8a\xea\x48\xf1\x91\x8b\x38\xd4\x31\xf6\x53\x6b\xb2\x2a\x45\xcb\xd1\x39\x56\x24\x69\x17\xa0\x66\x25\x06\x6f\x08\xe7\x09\x94\x35\x63\xea\x9b\xce\x7d\x68\xee\xa3\xd0\x52\xe7\x2e\x7e\x52\xba\x00\x20\x21\x1a\xdf\x4e\x91\x43\xcf\x5c\x25\xc8\x54\x39\x99\xa1\xc5\x0c\x04\xe4\x95\xb0\x42\x7b\xc4\x8c\xe0\x27\x54\x83\xa1\x9b\xde\x42\x9e\x68\x7b\xd8\xb5\x37\x06\x57\x0d\x60\x45\x24\xc6\xbe\x77\xe8\x13\x7c\x31\x57\x3d\x7c\x72\xb4\x51\xe5\xcd\xbc\xf5\xbd\x34\xe1\x3d\x5a\x3d\x82\x7f\x5d\x1c\x0f\xfe\x29\x06\xbf\x5d\xed\xc7\x7f\x9e\x0c\xbe\xfd\x77\x7f\x74\xf5\xb8\xf3\x78\x75\xf0\xfc\x2f\x6b\x76\x5a\x9d\xd6\xaf\x31\x9f\x18\x44\xea\x24\xb2\xd6\x68\x9f\x23\x8c\x99\xc0\xb9\xad\xb0\x0f\xaf\x84\x72\xd8\x87\x1f\x35\x87\x86\xcf\x14\x1a\xea\xaa\xd8\xdc\x96\xec\xd1\x57\x57\x27\x1f\xcd\x14\x26\x69\xf3\x9c\x48\xee\xa6\xce\xc0\x76\x42\xe2\xf4\xcd\x4c\xba\x48\xd3\x39\x2b\x01\x46\x3c\x4a\x59\x93\x98\xfe\x26\xa9\x29\x86\x9d\xb3\x14\xca\xbb\xdf\x08\x3d\x83\x16\xd6\x42\xb2\xba\x68\xe9\xce\x13\x36\x89\xd4\x1a\xe7\x9a\x93\x06\x07\x4a\x5e\x23\x34\x19\x6d\x00\xcb\x31\xa6\x82\x13\x75\x3b\x96\xde\x0a\x3b\xeb\xd4\x25\x90\x0a\x1d\x7b\x02\x93\x4a\xc1\xbe\x43\x84\x44\x9b\x0c\x97\xd1\xf5\x20\x60\xa8\x18\x4b\x25\xfd\x2c\x34\x10\x52\xa3\x27\x4a\xc6\xfa\xa0\x28\x8d\xf5\x42\xfb\xba\xf9\x92\xe3\x1d\x95\xba\xdc\xf7\x09\x45\xf2\x7e\xa6\xdd\xe1\xe1\xd1\xd7\x67\xd5\x38\x33\x85\x90\xfa\x55\xe1\x87\x07\xcf\xf7\x7f\xad\x84\xe2\xce\x05\xd5\xd4\xaf\x0a\x7f\xf0\xe5\xc2\xe2\xe1\xd3\x2d\xbc\x68\xff\x22\xf8\xca\xd5\xfe\xc5\x20\xfe\xf7\xb8\x7e\x75\xf0\x7c\xff\x32\xd9\x38\x7e\xf0\x98\x78\xe8\x78\xe0\xd5\xc5\xa0\x75\xbf\xe4\xea\xf1\xc1\xf3\xce\xd8\xc1\xb2\x33\x76\xaa\xd6\x7b\x0b\xd0\xd7\xed\xdc\x90\x9d\xf8\xfa\x52\x41\xed\x99\xf3\xa9\xe1\x62\x49\x1a\xbd\x98\xe2\x71\xdc\xe6\xc1\xdd\x9d\x6d\x92\x2e\xbd\x7d\x37\x65\xbe\x8f\x12\x1a\xf7\xab\x8f\xc6\x9b\x08\x34\xc7\xd4\x9f\xb1\x5f\x02\x4b\x1d\xbe\xf7\x38\x79\x60\x83\xef\x3d\x4e\xc0\xe2\x04\x2d\xea\x14\x6b\xc1\xcc\xf7\xf5\xe2\xb1\x6f\xd3\xf8\xfb\x1d\xce\xf0\xd6\x5f\x14\x58\xc9\x02\x25\xfb\xf1\x72\x40\x6d\x8f\x91\x87\xb5\x07\x12\xf7\xba\x34\xc7\xe3\x53\xe1\xa7\x5b\x51\xf0\xe8\x24\x8a\x8d\xbb\xf7\x7c\x9e\x52\x4a\x4c\x71\xee\x2e\x02\xe7\x71\x28\xb2\xf8\x92\x12\x1f\x8b\x71\xac\x1f\x32\x8e\x78\x66\xd1\xde\x55\xa0\xa4\x09\x04\x01\xb1\xcc\xe0\x1f\x67\xef\xde\x0e\xbf\x37\x31\x57\xa0\x6a\xc6\x05\xdf\xe2\x6e\x73\x1f\x5c\x95\x4e\x41\x38\x22\x8d\xea\xdb\x33\x6e\x4b\x14\x42\xcb\x09\x3a\x9f\xc4\xdd\xd0\xba\x8b\xa3\xab\x64\xbe\x1d\x22\xe3\xc1\x46\x7d\xa2\x1f\x0d\x80\x7d\x83\x98\x69\xd6\x72\xd2\xca\x24\x95\x26\x8b\x44\xdf\x32\xb1\x5e\x5c\x23\x98\x48\x6c\x85\x1c\x14\x46\xd0\x23\x33\xe9\x7c\xfa\x03\x39\xd6\xc7\x1e\xec\xdf\x4e\xd1\x22\xf4\xe8\xb1\x17\x3e\xd8\x5c\xc0\xa0\x77\x9d\x88\x1f\x3f\x1c\xf2\x7b\x2b\xf3\x9c\xd3\x2d\xbe\x4d\x70\x83\xda\x1f\x70\x7c\x9b\x80\x36\x9d\xc9\x3a\xf6\xa9\xdb\xee\xf4\x22\x21\x17\x47\x57\x3d\xd8\x9f\xe7\x8b\x52\x50\xbc\x83\xa3\xa6\x23\x5d\x9a\xec\xa0\xae\x5a\x67\xda\x8b\x3b\x2e\x0c\xa6\xc6\xa1\x0e\x9d\x7f\x6f\x60\x2a\x6e\x10\x9c\xa1\xe2\x13\x95\x1a\x84\x04\x33\x83\xdb\xd0\xa0\xab\x45\x19\x0e\x75\x4a\x61\xfd\xc2\xf5\x94\xf3\x77\x2f\xdf\x8d\xc2\xd7\x48\x6d\xb9\xae\xab\xdc\x89\xd4\x42\xc5\xd3\x87\x26\x3f\x24\x42\xaa\xa0\x24\x6f\x62\x69\x5b\x9f\x8c\x4c\x2a\x5f\x59\x4c\x16\xaf\x2b\x6c\x6d\xf1\xab\xee\x8a\xac\x36\x76\xbe\x33\xb2\xe8\x68\xff\xc5\x1b\x19\x5b\xb3\xa8\xd7\x9c\x78\x2c\xb3\xf8\xb6\x63\x83\x1b\x59\x6c\xa1\x99\xb8\xcc\x4c\xea\x88\xc1\x14\x4b\xef\x86\xe6\x86\xa0\x13\x6f\x87\xb7\xc6\x5e\x4b\x9d\x0f\xc8\xc8\x06\x41\xf3\x6e\xc8\x21\x66\xf8\x15\xff\xf9\x2c\x8e\x38\x4e\x6d\xcf\x56\xb8\x18\xf6\x07\xf0\xc6\xe1\x73\xf8\xc9\xac\xd5\xf9\xe5\x43\x22\xc1\xa3\xb3\xba\xf8\x5b\x58\x4d\xee\x12\x0e\xa4\xe2\x8d\xb1\x0e\xc2\x15\x22\x0b\x10\x28\xf4\xec\x77\x37\x63\x12\x20\xd7\xf8\xe9\x6c\x10\xaf\x74\x0e\x84\xce\x06\x4d\x7e\x9d\xce\x3e\x59\x62\x95\xdc\xd2\x81\x7f\x3c\x79\xf9\xc7\x18\x77\x25\x1f\xe4\xad\xa1\x8b\x32\x02\x6f\xab\x3a\xbb\x73\xde\x58\x91\xe3\xfc\xbb\x6a\xdc\x14\x1f\x2d\xc3\xb1\xae\x84\x0f\x1f\xf9\x55\x7b\x89\x53\xa8\x72\x2a\x8e\xea\xb5\xbb\xab\x9c\xbb\xab\x9c\xbb\xab\x9c\xbb\xab\x9c\x1b\x85\xbd\xbb\xca\xb9\xbb\xca\xb9\xbb\xca\xb9\xbb\xca\xb9\xbb\xca\xf9\x79\xac\xee\xae\x72\xee\xae\x72\xee\xae\x72\x36\xbf\xdd\x55\xce\x2d\x99\xdb\x5d\xe5\xfc\xb3\x5f\xe5\xfc\xff\xbe\x9c\xb9\x3b\x1c\xfb\xdf\x38\x1c\xdb\x1d\x77\xed\x8e\xbb\x76\xc7\x5d\xbb\xe3\xae\x4f\xb0\xf8\xdd\x71\xd7\xee\xb8\x6b\x77\xdc\xb5\x3b\xee\xfa\x93\x1e\x77\x4d\x84\x72\x5b\x9f\x77\xfd\x27\x00\x00\xff\xff\x65\x94\xba\x94\x7c\x46\x00\x00") +var _operatorsCoreosCom_operatorgroupsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5a\xe9\x6f\x1b\x37\x16\xff\xee\xbf\xe2\x41\x5d\x20\x76\x56\x1a\xc5\xee\x22\xdb\x0a\x08\x02\x23\x69\x0a\x6f\x73\x18\xb1\xdb\x0f\x6b\x7b\xb7\xd4\xcc\xd3\x88\x35\x87\x9c\x92\x1c\xdb\x6a\x90\xff\x7d\xf1\x1e\x39\x87\x4e\xcb\x49\xda\xed\x2e\xa4\x2f\xf6\x0c\x8f\x79\xe7\xef\x1d\xa4\x28\xe5\x4f\x68\x9d\x34\x7a\x04\xa2\x94\x78\xe7\x51\xd3\x93\x4b\xae\xbf\x71\x89\x34\xc3\x9b\xc3\xbd\x6b\xa9\xb3\x11\xbc\xa8\x9c\x37\xc5\x7b\x74\xa6\xb2\x29\xbe\xc4\x89\xd4\xd2\x4b\xa3\xf7\x0a\xf4\x22\x13\x5e\x8c\xf6\x00\x84\xd6\xc6\x0b\x7a\xed\xe8\x11\x20\x35\xda\x5b\xa3\x14\xda\x41\x8e\x3a\xb9\xae\xc6\x38\xae\xa4\xca\xd0\xf2\xe6\xf5\xa7\x6f\x9e\x24\x4f\x93\xa3\x3d\x80\xd4\x22\x2f\x3f\x97\x05\x3a\x2f\x8a\x72\x04\xba\x52\x6a\x0f\x40\x8b\x02\x47\x60\x4a\xb4\xc2\x1b\x9b\x5b\x53\x95\x2e\xa9\x1f\x5d\x92\x1a\x8b\x86\xfe\x14\x7b\xae\xc4\x94\xbe\xce\x73\xda\x25\x73\x73\xc2\x7e\x35\x91\xc2\x63\x6e\xac\xac\x9f\x01\x06\x60\x54\xc1\xff\x07\xe6\xdf\xc5\x3d\xbe\xa7\x2d\xf9\xbd\x92\xce\xff\xb0\x3c\xf6\x5a\x3a\xcf\xe3\xa5\xaa\xac\x50\x8b\x04\xf3\x90\x9b\x1a\xeb\xdf\xb6\x9f\xe7\xcf\xe5\x61\x48\xea\xbc\x52\xc2\x2e\xac\xdb\x03\x70\xa9\x29\x71\x04\xbc\xac\x14\x29\x66\x7b\x00\x51\x7c\x71\x9b\x41\x14\xd1\xcd\x61\xdc\xd5\xa5\x53\x2c\x44\xfd\x0d\xa0\x2d\xf5\xf1\xe9\xc9\x4f\x5f\x9f\x2d\x0c\x00\x64\xe8\x52\x2b\x4b\xcf\xca\x98\x63\x08\xa4\x03\x3f\x45\xa8\xb4\xf4\x60\x26\x50\x54\xca\x4b\x8f\x5a\xe8\x74\x06\x13\x63\xe1\xdd\xeb\x37\x50\x08\x2d\x72\xcc\x3a\xa2\x86\x13\x4f\xba\x77\xde\x0a\xa9\xc3\x0e\x52\x3b\x2f\x94\x62\xf5\xd2\x4e\xcd\x64\x90\x1a\xa4\x77\x41\x23\xc4\x1b\x78\x03\x02\x48\x8d\x72\x22\x31\x03\x87\xfc\x69\x2f\x6c\x8e\xbe\x9d\xe6\x92\x0e\x07\x7e\x46\xe2\x31\xe3\x5f\x30\xf5\x9d\xd7\x16\x7f\xad\xa4\xc5\xac\xcb\x2c\x89\xaa\x36\xda\xce\xeb\xd2\x12\x45\xbe\x63\x05\xe1\xd7\x71\x91\xb9\xf7\x0b\x52\x7b\x44\xa2\x0d\xf3\x20\x23\xef\xc0\xc0\x76\x54\x12\xb1\xc1\x62\x67\x4e\xa6\xd2\x81\xc5\xd2\xa2\x43\xed\x1b\x89\x08\x1d\x19\x48\xe0\x0c\x2d\x2d\x24\x5b\xa9\x54\x46\xa2\xbc\x41\xeb\xc1\x62\x6a\x72\x2d\x7f\x6b\x76\x73\x24\x2b\xfa\x8c\x12\x1e\x9d\x07\xa9\x3d\x5a\x2d\x14\xdc\x08\x55\x61\x1f\x84\xce\xa0\x10\x33\xb0\x48\xfb\x42\xa5\x3b\x3b\xf0\x14\x97\xc0\x1b\x63\x49\x3b\x13\x33\x82\xa9\xf7\xa5\x1b\x0d\x87\xb9\xf4\x35\x00\xa4\xa6\x28\x48\xf9\xb3\x21\xfb\xb2\x1c\x57\xa4\xb3\x61\x86\x37\xa8\x86\x4e\xe6\x03\x61\xd3\xa9\xf4\x98\xfa\xca\xe2\x50\x94\x72\xc0\xc4\x6a\x06\x81\xa4\xc8\xbe\xb2\x11\x32\xdc\xa3\x05\xf1\x05\x95\x39\x6f\xa5\xce\xe7\x86\xd8\xe7\x36\xca\x9a\x3c\x8f\x2c\x53\xc4\xe5\x81\x97\x56\xa4\xf4\x8a\xa4\xf2\xfe\xbb\xb3\x73\xa8\x09\x08\x62\x0f\x12\x6e\xa7\xba\x56\xd8\x24\x28\xa9\x27\x68\xc3\xcc\x89\x35\x05\xef\x82\x3a\x2b\x8d\xd4\x9e\x1f\x52\x25\x51\x7b\x70\xd5\xb8\x20\xa3\x25\x03\x43\xe7\x49\x0f\x09\xbc\x60\xfc\x83\x31\x42\x55\x66\xc2\x63\x96\xc0\x89\x86\x17\xa2\x40\xf5\x42\x38\xfc\xdd\x45\x4d\x12\x75\x03\x12\xdf\xf6\xc2\xee\xc2\xf7\xf2\x82\x25\x87\x02\xa8\xe1\x75\xad\x76\xe6\xf0\xe3\xac\xc4\xb4\xc6\x10\x5a\xc9\x98\x21\xf4\x02\xc8\xd4\x2a\x4a\xb6\x25\x62\xbd\xbb\x32\x89\xa8\x30\xf5\xc6\x2e\x8f\x2c\x90\x7a\x16\x27\xc6\x15\x81\xcc\x39\xd2\x1e\xb9\xcd\xb8\xb3\x05\xa5\xf7\x51\xcb\x5a\x10\x3e\x9d\x7e\x77\x47\x36\xd9\x81\xf4\x7b\xa8\x5f\x5c\x14\x3c\x82\x22\x13\xa1\x89\x12\x63\x54\x8d\x28\x6a\x24\x2c\x82\xc9\x9f\x4f\x71\xee\x0d\x08\x8b\x70\xfc\xf6\x25\x66\xab\x98\x6b\x19\x14\xd6\x8a\xd9\x9a\x19\xd2\x63\xb1\x96\xf0\x05\xd2\x8f\x37\x90\x17\x1d\xbb\x1e\xf1\x53\xc1\xb1\xc4\x73\x24\x09\xa0\xd5\x07\x01\xd7\x38\x0b\xf8\x46\xb0\x19\x55\x16\x26\x5b\x64\x34\x64\x65\x5e\xe3\x8c\x27\x45\xb0\x5b\x4b\xdd\x3d\xfa\x0b\xbf\xd5\xd1\x64\xfe\x37\xa0\x4f\x6e\x1c\xaf\x89\x5d\x3b\xe9\x3e\x63\x09\xbf\x6b\x9c\x6d\x1a\x5e\x10\x38\xc9\x21\xba\x61\x90\x3c\xbd\x60\x69\xb1\x67\xd6\xc2\x16\x65\xa9\x24\x32\x9a\x6d\xdc\x7b\x2d\x9c\xcc\xff\x6a\x56\x1f\x40\x68\xa3\xca\x16\xa1\x83\xb2\x1f\xb9\xa0\x58\xb2\xf4\xa9\x2c\x63\x92\x10\x52\x83\x3a\x94\xfd\x24\x94\xec\xa4\x21\x6c\xd5\x27\xba\x0f\x6f\x8d\xa7\x3f\xdf\xdd\x49\x82\x6a\xb2\x87\x97\x06\xdd\x5b\xe3\xf9\xcd\x17\x61\x35\x90\xf0\x00\x46\xc3\x02\x36\x76\x1d\xfc\x8a\x38\xe9\xc6\x33\x4a\xa3\x26\xac\x9f\x46\x28\xd2\x51\x44\x31\xb6\xe6\x88\x33\x8c\xb0\x51\xd8\xa2\xa8\x1c\x07\x20\x6d\xf4\x00\x8b\xd2\xcf\x56\xee\x11\x05\x61\xec\x9c\x1c\x36\x6c\x17\xb7\x3a\xa7\xb8\x18\x46\x42\x06\xa3\x28\x15\x85\xac\x62\xa2\x39\x1a\x53\x2e\x2d\x53\x28\xd0\xe6\x08\x25\x21\xd4\x36\xe2\xdd\x84\x2b\xe1\x77\x0f\xba\x6c\xa9\x2b\x86\xcc\xd7\xe4\x00\x0f\x80\xd8\x30\x3f\xc0\x52\x21\x4a\x52\xd3\x07\x42\x1f\x96\xd4\x47\x28\x85\xa4\x8c\xf7\x98\xb3\x77\x85\x73\x63\x52\xb3\x4c\xbb\xdb\xd0\x0e\xd2\x01\x41\xc9\x8d\x50\x84\x77\x64\xc9\x1a\x50\x05\xf4\xa3\x24\x7b\x01\xd8\xfb\x70\x3b\x35\x2e\x80\xd9\x44\xa2\xe2\xdc\xa7\x77\x8d\xb3\x5e\x7f\x49\xb5\xbd\x13\xdd\x0b\xb8\xb8\xa4\xcc\x06\x44\x8d\x56\x33\xe8\xf1\x58\xef\xd3\x63\xc1\x46\xb0\x14\x59\xc6\xe5\xa1\x50\xa7\x5b\xa0\xd9\x46\xbd\x39\xb4\x37\x32\xc5\xe3\x34\x35\x95\xe6\xc2\x69\x8b\xb8\xbe\xb8\xa4\x06\x3f\x91\x15\x52\xcf\xd5\x16\x3c\x13\x44\x98\x0a\xb7\x53\x99\x4e\xe1\x56\x2a\xc5\x69\x9c\xc3\x8c\xd4\x93\x61\xa9\xcc\xac\x91\xf3\xbe\x3b\x08\x9a\xa5\x7c\xb2\x96\x3d\x57\x6a\xeb\x53\x83\x75\xcc\x51\xfa\x9f\x9e\x5a\x73\x23\x33\xcc\x8e\x4f\x4f\x56\x4a\x69\x9e\x39\x5e\x02\x1e\x95\x72\x5c\x7e\x51\xce\xe9\x4d\xcc\x39\x57\xa6\x30\x65\x67\xff\x4e\x91\xbe\x96\xd8\xb1\x31\x0a\xc5\xf2\x78\x48\x85\x9a\x22\xf4\x7e\x5a\xcf\x17\x16\x44\xb8\xc3\xbb\x52\xc9\x54\xfa\x1a\xbf\xdb\xdc\x8a\xeb\x19\x5e\xc4\xc0\x25\x39\x1b\x70\xe8\xfb\x6d\xae\x26\x1d\xc8\x5c\x1b\xbb\xda\x3e\x37\xe3\xc9\x06\x14\xb9\x07\x3b\xee\x06\xd7\xd5\x18\xad\x46\x8f\x6e\x40\x39\xd6\x20\x2e\xc0\x85\xf4\xd8\x0b\x5f\x2d\x7d\x62\x43\x82\xcc\xf3\x9b\x14\x39\x3c\xad\x4a\x92\xdf\x3f\x3c\x47\x5e\x9f\xaf\x0c\x40\x09\xe7\x7f\x0c\x55\xca\x03\x32\xeb\xd4\xe8\xe0\xd7\xf7\xab\xfe\x45\x33\x75\x31\xc6\xad\xb2\xd0\x76\xe3\x2f\xaa\xd4\x39\x8a\x7a\x0d\x49\x2d\x14\x66\xe8\x85\x54\x41\xe2\x46\x23\x08\x82\x06\x5f\x53\x99\x56\xd6\x72\xb5\xe7\xc9\xb3\xea\xca\xfd\xf8\xf4\x04\x1a\x6d\xc0\x60\x30\x08\x71\xd1\x79\x5b\xa5\x6c\xaf\x54\x85\xeb\x0c\x33\xde\x35\x93\x96\x4b\x6f\x47\x9b\xb7\x72\x88\x99\x57\x80\xf3\x52\xf8\x29\x24\x41\xf9\x49\x47\x14\x00\xaf\x8c\x05\xbc\x13\x45\xa9\xb0\xcf\x62\x80\x57\xc6\x44\x9b\x09\x1f\xfc\xc0\x8c\x0e\x87\xf0\xbe\x4d\x98\x38\x28\x8c\x09\xdb\x42\xbe\xc4\xdd\x05\x98\x18\x43\x92\xee\xf2\x94\xd4\x8b\x7f\xd0\xe6\x56\xaf\x22\x81\xbf\x29\x2c\x8e\xe0\xb2\x77\x7c\x23\xa4\x12\x63\x85\x97\xbd\x3e\x5c\xf6\x4e\xad\xc9\x39\x44\xe9\xfc\x32\xc6\x9c\xcb\xde\x4b\xcc\xad\xc8\x30\xbb\xec\xd5\x5b\xff\x95\xb3\x80\x37\x94\x10\xfc\x80\xb3\x67\xbc\xe1\xdc\xd0\x59\xc8\x1a\x66\xcf\x42\xd2\x50\x8f\x91\x93\x9d\xcf\x4a\x7c\x46\x11\xb3\xfb\xf2\x8d\x28\xe7\x36\xea\x58\xda\xc5\x15\xd5\xb3\x37\x87\x49\xab\xea\x9f\x7f\x71\x46\x8f\x2e\x7b\x2d\x4f\x7d\x53\x90\xc9\x94\x7e\x76\xd9\x83\x39\x0a\x46\x97\x3d\xa6\xa1\x7e\x5f\x13\x3d\xba\xec\xd1\xd7\xe8\xb5\x35\xde\x8c\xab\xc9\xe8\xb2\x37\x9e\x79\x74\xfd\xc3\xbe\xc5\xb2\x4f\x00\xf6\xac\xfd\xc2\x65\xef\x67\xb8\xd4\x35\xd1\xc6\x4f\xd1\x06\x4d\x3b\xf8\xd8\xdb\x80\x3e\x1b\x42\xea\x7d\xb5\x47\xf0\xe8\x73\x2b\xb4\x93\x75\x07\x75\xed\xd4\x02\x9d\x13\xf9\xfa\x71\x8b\xc2\xad\x0c\x0f\x61\x38\x58\xc9\xda\x61\xe2\x65\xe5\xe0\xfd\x85\xcd\x32\x0f\x5b\x16\x94\xcb\x0b\xdb\x72\xc7\x79\xf0\xf4\x82\x3d\xba\xb1\x0b\xdf\xcc\x26\x47\xb5\xa6\x60\xff\x8f\x00\xcc\x29\x19\xeb\x2d\x26\xbd\xb1\x11\x37\x46\xb8\x9d\xa2\x8e\x2d\xd1\x0c\xad\x9a\x51\xe6\xdb\xee\x9a\x4e\x85\xce\x31\x4b\x20\xa4\xdd\x82\xf1\x80\x02\xf4\x35\x39\x18\xa7\x6b\x1a\x2a\x57\x37\xa8\x98\xae\x66\x47\x02\x96\x00\x08\x71\x1b\x46\xce\x34\xc5\xd2\x93\xd7\xdd\x57\xbd\xde\x53\xa3\x4c\x8c\x2d\x84\x1f\x01\x61\xfe\xc0\xaf\x37\x8f\x68\x1c\x5b\x0a\x3e\xce\x0e\xd9\xf1\xb4\x2a\x84\x26\xeb\xc9\x88\xde\x76\x4c\x67\x32\x15\xdc\x95\xab\xf1\x56\x8c\x4d\x15\x10\xb0\xd5\x43\x14\x75\x21\x66\x24\x67\x4a\x13\xc8\x47\x23\x5b\x9f\xc9\x7c\x21\xee\x5e\xa3\xce\xfd\x74\x04\x5f\x1f\xfd\xfd\xe9\x37\x6b\x26\x06\xd0\xc4\xec\x7b\xd4\x14\x9f\x56\x34\x7d\xd7\x88\x61\x79\x61\xb7\x80\x25\x3e\x93\xba\xd3\x96\xe4\xed\x9c\xa6\x02\x6f\x2d\xe8\x56\x70\xc2\x03\x63\x41\xc9\x67\x55\x92\x5c\x28\x0a\x70\xff\x5c\xa7\xd8\x07\x39\x59\xbd\x99\x6c\xc0\x5d\xcd\xe0\xf0\xa8\x0f\xe3\x28\xe2\x65\x58\xbf\xb8\xbb\x4a\x56\x90\x2c\x1d\x7c\xdb\x5f\xa0\x87\x72\xdc\x8a\x23\x22\xa7\x97\xb7\xd2\x4f\xc1\x62\x08\x93\xb1\xf9\xbc\x22\x4c\x62\x43\xef\x7d\x8a\xa3\x60\x99\xe3\xfa\x6e\x48\x6d\xb6\x52\xfb\xa7\x7f\x5b\xaf\x5f\xa9\x65\x51\x15\x23\x78\xb2\x66\x4a\x80\xb4\x2d\xb5\x19\x26\xb7\x59\x82\x20\xe8\xca\xad\x28\x0a\x4e\xbd\x65\x86\xda\x53\xfd\x60\xbb\xa6\xed\xb9\x8e\xe2\x85\x13\x6e\x45\x75\xa4\xf8\xc8\x45\x1c\xea\x18\xfb\xa9\x35\x59\x95\xa2\xe5\xe8\x1c\x2b\x92\xb4\x0b\x50\xb3\x12\x83\x37\x84\xf3\x04\xca\x9a\x31\xf5\x4d\xe7\x3e\x34\xf7\x51\x68\xa9\x73\x17\x3f\x29\x5d\x00\x90\x10\x8d\x6f\xa7\xc8\xa1\x67\xae\x12\x64\xaa\x9c\xcc\xd0\x62\x06\x02\xf2\x4a\x58\xa1\x3d\x62\x46\xf0\x13\xaa\xc1\xd0\x4d\x6f\x21\x4f\xb4\x3d\xec\xda\x1b\x83\xab\x06\xb0\x22\x12\x63\xdf\x3b\xf4\x09\xbe\x98\xab\x1e\x3e\x39\xda\xa8\xf2\x66\xde\xfa\x5e\x9a\xf0\x1e\xad\x1e\xc1\xbf\x2e\x8e\x07\xff\x14\x83\xdf\xae\xf6\xe3\x3f\x4f\x06\xdf\xfe\xbb\x3f\xba\x7a\xdc\x79\xbc\x3a\x78\xfe\x97\x35\x3b\xad\x4e\xeb\xd7\x98\x4f\x0c\x22\x75\x12\x59\x6b\xb4\xcf\x11\xc6\x4c\xe0\xdc\x56\xd8\x87\x57\x42\x39\xec\xc3\x8f\x9a\x43\xc3\x67\x0a\x0d\x75\x55\x6c\x6e\x4b\xf6\xe8\xab\xab\x93\x8f\x66\x0a\x93\xb4\x79\x4e\x24\x77\x53\x67\x60\x3b\x21\x71\xfa\x66\x26\x5d\xa4\xe9\x9c\x95\x00\x23\x1e\xa5\xac\x49\x4c\x7f\x93\xd4\x14\xc3\xce\x59\x0a\xe5\xdd\x6f\x84\x9e\x41\x0b\x6b\x21\x59\x5d\xb4\x74\xe7\x09\x9b\x44\x6a\x8d\x73\xcd\x49\x83\x03\x25\xaf\x11\x9a\x8c\x36\x80\xe5\x18\x53\xc1\x89\xba\x1d\x4b\x6f\x85\x9d\x75\xea\x12\x48\x85\x8e\x3d\x81\x49\xa5\x60\xdf\x21\x42\xa2\x4d\x86\xcb\xe8\x7a\x10\x30\x54\x8c\xa5\x92\x7e\x16\x1a\x08\xa9\xd1\x13\x25\x63\x7d\x50\x94\xc6\x7a\xa1\x7d\xdd\x7c\xc9\xf1\x8e\x4a\x5d\xee\xfb\x84\x22\x79\x3f\xd3\xee\xf0\xf0\xe8\xeb\xb3\x6a\x9c\x99\x42\x48\xfd\xaa\xf0\xc3\x83\xe7\xfb\xbf\x56\x42\x71\xe7\x82\x6a\xea\x57\x85\x3f\xf8\x72\x61\xf1\xf0\xe9\x16\x5e\xb4\x7f\x11\x7c\xe5\x6a\xff\x62\x10\xff\x7b\x5c\xbf\x3a\x78\xbe\x7f\x99\x6c\x1c\x3f\x78\x4c\x3c\x74\x3c\xf0\xea\x62\xd0\xba\x5f\x72\xf5\xf8\xe0\x79\x67\xec\x60\xd9\x19\x3b\x55\xeb\xbd\x05\xe8\xeb\x76\x6e\xc8\x4e\x7c\x7d\xa9\xa0\xf6\xcc\xf9\xd4\x70\xb1\x24\x8d\x5e\x4c\xf1\x38\x6e\xf3\xe0\xee\xce\x36\x49\x97\xde\xbe\x9b\x32\xdf\x47\x09\x8d\xfb\xd5\x47\xe3\x4d\x04\x9a\x63\xea\xcf\xd8\x2f\x81\xa5\x0e\xdf\x7b\x9c\x3c\xb0\xc1\xf7\x1e\x27\x60\x71\x82\x16\x75\x8a\xb5\x60\xe6\xfb\x7a\xf1\xd8\xb7\x69\xfc\xfd\x0e\x67\x78\xeb\x2f\x0a\xac\x64\x81\x92\xfd\x78\x39\xa0\xb6\xc7\xc8\xc3\xda\x03\x89\x7b\x5d\x9a\xe3\xf1\xa9\xf0\xd3\xad\x28\x78\x74\x12\xc5\xc6\xdd\x7b\x3e\x4f\x29\x25\xa6\x38\x77\x17\x81\xf3\x38\x14\x59\x7c\x49\x89\x8f\xc5\x38\xd6\x0f\x19\x47\x3c\xb3\x68\xef\x2a\x50\xd2\x04\x82\x80\x58\x66\xf0\x8f\xb3\x77\x6f\x87\xdf\x9b\x98\x2b\x50\x35\xe3\x82\x6f\x71\xb7\xb9\x0f\xae\x4a\xa7\x20\x1c\x91\x46\xf5\xed\x19\xb7\x25\x0a\xa1\xe5\x04\x9d\x4f\xe2\x6e\x68\xdd\xc5\xd1\x55\x32\xdf\x0e\x91\xf1\x60\xa3\x3e\xd1\x8f\x06\xc0\xbe\x41\xcc\x34\x6b\x39\x69\x65\x92\x4a\x93\x45\xa2\x6f\x99\x58\x2f\xae\x11\x4c\x24\xb6\x42\x0e\x0a\x23\xe8\x91\x99\x74\x3e\xfd\x81\x1c\xeb\x63\x0f\xf6\x6f\xa7\x68\x11\x7a\xf4\xd8\x0b\x1f\x6c\x2e\x60\xd0\xbb\x4e\xc4\x8f\x1f\x0e\xf9\xbd\x95\x79\xce\xe9\x16\xdf\x26\xb8\x41\xed\x0f\x38\xbe\x4d\x40\x9b\xce\x64\x1d\xfb\xd4\x6d\x77\x7a\x91\x90\x8b\xa3\xab\x1e\xec\xcf\xf3\x45\x29\x28\xde\xc1\x51\xd3\x91\x2e\x4d\x76\x50\x57\xad\x33\xed\xc5\x1d\x17\x06\x53\xe3\x50\x87\xce\xbf\x37\x30\x15\x37\x08\xce\x50\xf1\x89\x4a\x0d\x42\x82\x99\xc1\x6d\x68\xd0\xd5\xa2\x0c\x87\x3a\xa5\xb0\x7e\xe1\x7a\xca\xf9\xbb\x97\xef\x46\xe1\x6b\xa4\xb6\x5c\xd7\x55\xee\x44\x6a\xa1\xe2\xe9\x43\x93\x1f\x12\x21\x55\x50\x92\x37\xb1\xb4\xad\x4f\x46\x26\x95\xaf\x2c\x26\x8b\xd7\x15\xb6\xb6\xf8\x55\x77\x45\x56\x1b\x3b\xdf\x19\x59\x74\xb4\xff\xe2\x8d\x8c\xad\x59\xd4\x6b\x4e\x3c\x96\x59\x7c\xdb\xb1\xc1\x8d\x2c\xb6\xd0\x4c\x5c\x66\x26\x75\xc4\x60\x8a\xa5\x77\x43\x73\x43\xd0\x89\xb7\xc3\x5b\x63\xaf\xa5\xce\x07\x64\x64\x83\xa0\x79\x37\xe4\x10\x33\xfc\x8a\xff\x7c\x16\x47\x1c\xa7\xb6\x67\x2b\x5c\x0c\xfb\x03\x78\xe3\xf0\x39\xfc\x64\xd6\xea\xfc\xf2\x21\x91\xe0\xd1\x59\x5d\xfc\x2d\xac\x26\x77\x09\x07\x52\xf1\xc6\x58\x07\xe1\x0a\x91\x05\x08\x14\x7a\xf6\xbb\x9b\x31\x09\x90\x6b\xfc\x74\x36\x88\x57\x3a\x07\x42\x67\x83\x26\xbf\x4e\x67\x9f\x2c\xb1\x4a\x6e\xe9\xc0\x3f\x9e\xbc\xfc\x63\x8c\xbb\x92\x0f\xf2\xd6\xd0\x45\x19\x81\xb7\x55\x9d\xdd\x39\x6f\xac\xc8\x71\xfe\x5d\x35\x6e\x8a\x8f\x96\xe1\x58\x57\xc2\x87\x8f\xfc\xaa\xbd\xc4\x29\x54\x39\x15\x47\xf5\xda\xdd\x55\xce\xdd\x55\xce\xdd\x55\xce\xdd\x55\xce\x8d\xc2\xde\x5d\xe5\xdc\x5d\xe5\xdc\x5d\xe5\xdc\x5d\xe5\xdc\x5d\xe5\xfc\x3c\x56\x77\x57\x39\x77\x57\x39\x77\x57\x39\x9b\xdf\xee\x2a\xe7\x96\xcc\xed\xae\x72\xfe\xd9\xaf\x72\xfe\x7f\x5f\xce\xdc\x1d\x8e\xfd\x6f\x1c\x8e\xed\x8e\xbb\x76\xc7\x5d\xbb\xe3\xae\xdd\x71\xd7\x27\x58\xfc\xee\xb8\x6b\x77\xdc\xb5\x3b\xee\xda\x1d\x77\xfd\x49\x8f\xbb\x26\x42\xb9\xad\xcf\xbb\xfe\x13\x00\x00\xff\xff\xf2\x1a\x66\xa5\x7c\x46\x00\x00") func operatorsCoreosCom_operatorgroupsYamlBytes() ([]byte, error) { return bindataRead( @@ -184,7 +184,7 @@ func operatorsCoreosCom_operatorgroupsYaml() (*asset, error) { return a, nil } -var _operatorsCoreosCom_operatorsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x59\x5f\x8f\xe3\xb6\x11\x7f\xdf\x4f\x31\x70\x1e\x36\x01\xfc\x27\xb9\x02\x45\xe1\xb7\xc5\xee\xa5\xd8\x36\xdd\x3b\xdc\xee\xdd\x4b\x90\x87\xb1\x34\xb6\x58\x53\xa4\xc2\xa1\xec\x75\x0f\xf7\xdd\x8b\x21\x29\x5b\xb2\xbd\xb6\x7c\xdd\x4b\xc3\x17\x5b\x14\x39\x9c\xbf\xbf\x99\xa1\xb0\x52\x9f\xc8\xb1\xb2\x66\x0a\x58\x29\x7a\xf6\x64\xe4\x89\xc7\xcb\xbf\xf1\x58\xd9\xc9\xea\xa7\xab\xa5\x32\xf9\x14\x6e\x6b\xf6\xb6\xfc\x40\x6c\x6b\x97\xd1\x1d\xcd\x95\x51\x5e\x59\x73\x55\x92\xc7\x1c\x3d\x4e\xaf\x00\xd0\x18\xeb\x51\xa6\x59\x1e\x01\x32\x6b\xbc\xb3\x5a\x93\x1b\x2d\xc8\x8c\x97\xf5\x8c\x66\xb5\xd2\x39\xb9\x40\xbc\x39\x7a\xf5\xe3\xf8\xaf\xe3\x1f\xaf\x00\x32\x47\x61\xfb\x93\x2a\x89\x3d\x96\xd5\x14\x4c\xad\xf5\x15\x80\xc1\x92\xa6\x60\x2b\x72\xe8\xad\xe3\xf1\xee\x5f\x66\x1d\x59\xf9\x29\xaf\xb8\xa2\x4c\x0e\x5e\x38\x5b\x57\xed\xd5\xad\x35\x91\x54\xc3\x1f\x7a\x5a\x58\xa7\x9a\x67\x80\x11\x58\x5d\x86\xff\x51\xee\x77\x89\x46\x98\xd2\x8a\xfd\x3f\x3b\xd3\xbf\x28\xf6\xe1\x55\xa5\x6b\x87\xba\x75\x66\x98\x65\x65\x16\xb5\x46\xb7\x9b\xbf\x02\xe0\xcc\x56\x34\x85\x5b\x5d\xb3\x27\x99\x48\x7a\x48\x3c\x8c\x92\xac\xab\x9f\x12\x4b\x9c\x15\x54\x62\xc3\x20\x08\x29\x73\xf3\xfe\xfe\xd3\x5f\x1e\xf7\x5e\x00\xe4\xc4\x99\x53\x95\x0f\x5a\x6d\x78\x04\x47\x95\x23\x26\xe3\x19\x10\xb2\x78\xec\x96\xa1\x71\x6b\xbb\xdf\x08\x63\x76\xf6\x6f\xca\x7c\x6b\xba\x72\xb2\xd8\xb7\xb4\x14\x47\xcb\x7b\x3a\xf3\x7b\x7c\x5c\x0b\xb3\x71\x1d\xe4\xe2\x38\xc4\xe0\x0b\x6a\xc4\xa6\x3c\x49\x08\x76\x0e\xbe\x50\xbc\xe3\x37\xf8\x82\x4c\xa3\x49\x5c\x8d\xe1\x91\x9c\x6c\x04\x2e\x6c\xad\x73\xf1\xb0\x15\x39\x0f\x8e\x32\xbb\x30\xea\x3f\x5b\x6a\x0c\xde\x86\x63\x34\x7a\x62\x0f\xca\x78\x72\x06\x35\xac\x50\xd7\x34\x04\x34\x39\x94\xb8\x01\x47\x42\x17\x6a\xd3\xa2\x10\x96\xf0\x18\xfe\x65\x1d\x81\x32\x73\x3b\x85\xc2\xfb\x8a\xa7\x93\xc9\x42\xf9\x26\x36\x32\x5b\x96\xb5\x51\x7e\x33\x09\x6e\xae\x66\xb5\xd8\x7d\x92\xd3\x8a\xf4\x84\xd5\x62\x84\x2e\x2b\x94\xa7\xcc\xd7\x8e\x26\x58\xa9\x51\x60\xd6\x84\xf8\x18\x97\xf9\x77\x2e\x45\x13\x5f\xef\xa9\x2f\xda\x81\xbd\x53\x66\xd1\x79\x15\x7c\xf2\xa4\xae\xc5\x3d\x41\x89\xa1\xe3\xf6\x28\xcb\x4e\xa5\x32\x25\x5a\xf9\xf0\xf6\xf1\x09\x1a\x06\xa2\xda\xa3\x86\x5b\xde\xb2\x53\xb6\x28\x4a\x99\x39\xb9\xb8\x72\xee\x6c\x19\xa8\x90\xc9\x2b\xab\x8c\x0f\x0f\x99\x56\x64\x3c\x70\x3d\x2b\x95\x17\x2b\xfe\x5e\x13\x7b\xb1\xc3\x18\x6e\x03\x34\xc0\x8c\xa0\xae\x72\xf4\x94\x8f\xe1\xde\xc0\x2d\x96\xa4\x6f\x91\xe9\x9b\xab\x5a\x34\xca\x23\x51\x5f\x7f\x65\xb7\x91\xed\x70\xc3\x41\x94\x00\x34\xf0\xf3\xa2\x75\x9a\x88\x7c\xac\x28\xeb\x84\x42\x4e\xac\x9c\xb8\xae\x47\x4f\xe2\xf0\x1d\xd8\xe9\x73\xb4\x47\x5f\x73\xbf\xc3\xc3\xd2\xce\xf1\x76\xc6\x62\xe8\xd6\xf9\x68\x76\xf0\x21\x91\x22\x06\xcd\x6c\x59\x59\x23\x8e\xd1\x97\xab\x97\xa1\x03\x42\x72\x68\xe8\x1d\xbe\xdb\xe3\xfd\x76\xbb\x34\xcd\xcf\x88\xb7\xde\x2b\x32\xa0\x8f\xe4\x98\xa2\x40\x47\xc0\xad\x07\xb7\x32\xc4\x6d\xc5\x16\xc7\x78\x12\x70\xd6\x38\x23\xfd\x48\x9a\xb2\x43\xf3\x9c\x93\x58\x46\x67\xff\xf1\x25\x7b\xc2\xff\xd2\xde\x11\x63\x3b\x10\x81\xdf\x6b\x72\x1b\xb0\x2b\x72\x12\xee\xe4\xc5\x70\x3b\xa5\xd4\x4c\xb9\x60\x20\x87\x9d\x1d\xb5\x5c\x9f\x30\x66\x4f\x35\xf5\x11\x55\x46\x89\x3e\x2b\xde\x3e\x0b\xa4\xb4\x72\x5c\x0f\xa9\xf7\x37\x26\xc1\x15\x07\x31\xa3\x02\xb8\x51\x4a\x32\x5a\x19\x51\xeb\xa9\xa0\xce\x0c\xa0\x23\xb8\x79\xb8\xa3\xfc\x98\x3f\x74\x05\x46\xe7\x70\x73\x62\x95\xf2\x54\x9e\x14\x62\x4f\x8c\x9b\x13\xac\x26\x9c\x6e\xde\x24\x2f\x36\x1e\x95\xe1\x94\x83\x86\x80\xb0\xa4\x4d\x4c\x57\x92\x05\x9b\xa0\x0c\x8b\x1d\x85\xe4\x16\x6c\xbb\xa4\x4d\x58\x94\x72\xd7\x49\x0e\x7b\xd8\x36\x8e\xd3\xc1\xb0\x1b\x23\x39\xfe\xec\x1a\x7b\x1c\xd4\xba\xa3\x8f\x53\xc5\xb1\xa4\xcd\xb9\x25\x7b\xc6\x10\x1d\x29\x4e\x55\x81\x58\x45\x26\x82\x26\x65\x6a\x6b\x08\xac\x2a\xad\x28\x24\xae\xb3\xf4\x5f\xcc\x1e\x87\xa3\x11\xff\x42\xa6\xed\xd1\x32\x6e\x49\x9b\x6b\x8e\x0e\x20\xd1\x51\xa8\x4a\x62\x7d\x0b\x03\x4d\x05\xf3\x09\xb5\xca\x77\x45\x69\x88\x84\x7b\x33\x84\x07\xeb\xe5\xe7\xed\xb3\x92\x0c\x2d\x7e\x73\x67\x89\x1f\xac\x0f\x33\xaf\x2a\x76\x64\xe5\x42\xa1\xe3\xa6\x10\x20\x26\xc6\xa4\x48\xd5\x2e\x69\x78\x0c\xf7\xf3\x0e\xaa\xc9\xea\x7b\x03\xd6\x35\xd2\x85\x22\x33\x12\x8a\x24\xca\x9a\x43\x0d\x62\xac\x19\x51\x59\xf9\xcd\x51\x1a\x49\x29\xd6\x75\x74\x72\x82\x5c\x22\xf5\x24\xa5\x51\x7c\x13\x8b\x58\x8d\x19\xe5\x90\xd7\x81\xe9\x50\x90\x49\xbb\xa1\x32\x28\xc9\x2d\x08\x2a\x41\xb8\xbe\xaa\x3e\x87\x4b\x71\xf4\x40\xa7\x36\xd1\x33\xf6\x0b\x10\x1c\xb2\xcf\x85\xb0\x1d\xf7\x44\x78\x2b\xb1\x12\xd3\x7d\x16\x14\x0b\xda\xfb\x02\x15\x2a\xc7\x63\xb8\x09\xed\x91\xa6\xce\x3b\x65\x82\x9e\xdb\x64\x84\x82\x62\x10\x28\x5a\xa1\x16\xdc\x14\x4f\x37\x40\x3a\xa2\xa8\x9d\x1f\x24\x8b\x21\xac\x0b\xa9\x05\x24\xbe\xe7\x8a\x74\x28\x89\x07\x4b\xda\x0c\x86\x07\xe6\x1e\xdc\x9b\x41\xc4\xd7\x03\x03\x6f\xc1\xd8\x1a\xbd\x81\x41\x78\x37\xf8\xdf\xf2\xcb\x59\xd0\xc5\x3c\x0f\x8d\x35\xea\xf7\x3d\x91\xf0\xac\x2d\x1d\xcd\x5f\x24\xd1\x31\xde\x07\x9a\x47\x61\x5a\xe5\xc4\x9c\x1c\x99\x50\x64\xd9\x17\x6b\x88\x5d\xd5\x31\x4c\x28\x4a\x39\xac\x95\x2f\xba\xb5\xcb\x4b\xda\x39\xef\xe1\x67\xfc\xba\x2b\x84\xca\x8a\x0f\x0d\xdb\xd1\x07\xb7\x52\x44\x8c\x6c\xb8\x1d\x02\x19\xa7\xb2\xa2\x61\x56\x8a\xdc\x58\x48\x8b\xe5\xa3\x19\x4e\x64\xd2\x5e\x06\xed\x97\xce\x5e\xee\xa4\x4f\x08\x7a\xf3\xfe\xbe\xe9\xa1\x63\xeb\x4c\x8d\xa0\x67\x00\xbc\x27\x78\xef\x74\x70\x01\x53\xb7\xdb\x4d\xed\x7c\xd5\xea\xc3\xb7\x2d\x46\x68\x19\x1b\x0f\xea\xc3\xf0\x79\x08\xec\x05\x7f\xc7\xd9\xdd\x71\xdb\x66\x16\x57\xa8\x34\xce\x74\xd3\x22\xc5\x64\x9b\x1a\xa4\x2d\xf3\xd7\xd1\x6d\xe8\x1c\x96\xf7\x2e\xbb\xfa\x17\x5e\x52\x56\x45\x97\xed\xb1\x50\xce\x3f\xb3\xac\x7f\xf5\x25\x9d\x0c\xfb\x27\x87\x86\x55\x73\x65\xd7\x27\xf3\xec\xb5\x36\xec\xc1\xab\x92\x92\x37\x34\xc6\xf0\x5b\xb2\x94\xc7\xdb\x06\x6b\xa8\x89\xcd\x80\xfe\xd6\x17\xf4\x22\xa0\xb4\xc7\x05\x95\x8a\x8c\xb9\x75\x25\xfa\x29\xe4\xe8\x69\x24\x9c\xf5\x52\xc3\xc7\x70\xa9\xf1\xaa\x2a\x58\x23\x8b\x35\x66\x94\xff\x19\x84\x2c\x89\x19\x17\x97\x4b\x77\x03\x45\x5d\xa2\x44\x17\xe6\x21\x8e\x12\x21\x50\x26\x57\x19\x86\xeb\xa8\x9c\x3c\x2a\xcd\x80\x33\x5b\xc7\xe8\xdb\x99\xff\xd5\x2d\xec\x08\xf9\x1c\xca\x1e\x91\x23\xa6\x7c\xd9\x2a\xca\xeb\x9a\xea\x9a\x83\x0f\x7c\x4b\xae\x8f\x5f\xef\x9c\xe5\x3a\x5d\xf5\x6c\xc1\x36\x31\x3c\x0c\xd1\x64\xe7\xf0\xe4\x6a\x1a\xc2\xcf\xa8\x99\x86\xf0\xd1\x2c\x8d\x5d\xbf\x3e\xef\x61\xf1\xc5\xfa\xde\x54\x81\xc3\x2d\xcf\xaf\xc8\x56\x28\x08\xdf\xa3\x2f\x2e\x48\x6b\xd7\xf7\xa9\x16\x0a\xb5\x7c\xa8\x22\x2a\x45\x19\x75\x2e\xa7\x41\x19\xf6\x84\x79\x9a\x24\xe3\x95\xa3\xf4\x6e\x18\x6f\x4e\x53\x07\xb3\xbb\xbc\x96\xfa\x12\x50\xca\x4e\x95\xc3\x3f\x1e\xdf\x3d\x4c\xfe\x6e\x53\xc9\x8a\x59\x46\x9c\x52\x8b\xd4\x99\x43\xe0\x3a\x2b\x00\xb9\xb9\x2e\x7c\x0c\x49\xa7\x44\xa3\xe6\xc4\x7e\x9c\xa8\x91\xe3\x5f\xdf\xfc\x36\x86\x9f\xad\x03\x7a\xc6\xb2\xd2\x34\x04\x95\xda\x9c\xe6\x8a\xb7\x55\x1e\x05\x61\xb6\x7b\x43\x25\x14\x58\xaa\x6c\x9e\x98\x5e\x07\x66\x3d\x2e\x09\x6c\x62\xb6\x26\xd0\x6a\x49\x53\x18\x70\x45\x59\xeb\xe8\xcf\x06\x4b\xfa\x32\x80\xef\xd7\x05\x39\x82\x81\x3c\x0e\xe2\x81\xdb\x12\x52\xe6\x5a\x4e\x99\x0e\x8e\x7d\xb8\x53\x8b\x05\x39\x8a\xc5\x38\xad\xc8\xf8\x1f\xa4\x13\x53\x73\x30\xb6\xb5\x38\x90\x10\x7d\x56\x94\xa9\xb9\xa2\xfc\x80\x91\x5f\xdf\xfc\x36\x80\xef\xbb\x72\x09\xea\xd0\x33\xbc\x89\x5d\x86\x62\x91\xf1\x87\xd4\xb8\xf1\xc6\x78\x7c\x16\x9a\x99\xb4\x0e\x26\xd6\xfc\xde\x42\x81\x2b\x02\xb6\x25\xc1\x9a\xb4\x1e\xc5\x7b\xd3\x1c\xd6\xb1\x25\x6d\x54\x19\x5b\xbc\x0a\x9d\xdf\xfb\x5e\xf1\xf4\xee\xee\xdd\x34\x9e\x26\x66\x5b\x18\x39\xc2\x58\x0f\x73\x65\x50\xa7\xbe\x43\xf1\xae\x4d\xe1\x3a\x1a\xc9\x5b\xc8\x0a\x34\x01\x2b\x83\x36\xe6\xb5\xaf\x1d\x8d\xf7\xef\xaf\xbf\x2a\x06\x8e\x7d\x48\x38\xe5\xfe\xe1\xb3\xc2\x7e\x91\xf9\x7f\xbc\xb4\xff\x2a\xa1\xc3\x77\xb5\x0b\x84\x7e\x68\xf9\xe9\x49\xa1\x97\xf5\x8c\x9c\x21\x4f\x41\xee\xdc\x66\x2c\x22\x67\x54\x79\x9e\xd8\x15\xb9\x95\xa2\xf5\x64\x6d\xdd\x52\x99\xc5\x48\x1c\x71\x14\xbd\x83\x27\xe1\x5b\xe4\xe4\xbb\xf0\xf3\x6a\x32\x72\x85\xd9\xc5\x82\x86\x4d\x7f\x84\xb4\x72\x0e\x4f\x5e\x45\xd8\xa6\x91\xbb\xbc\x77\xba\x7e\x8c\xc0\x91\xed\xd3\x90\xb0\x5b\x17\x2a\x2b\x9a\x4f\x91\x2d\xa4\x2c\x31\x8f\x50\x8a\x66\xf3\xcd\x9d\x5f\x54\x5a\x3b\x39\x7b\x33\x4a\x9f\xd1\x47\x68\x72\xf9\xcf\x8a\xbd\xcc\xbf\x8a\x0e\x6b\x75\x11\x10\x7c\xbc\xbf\xfb\x63\x42\xa2\x56\x5f\x11\xf5\xf1\x33\xd6\x14\xbc\xab\x9b\x9a\x96\xbd\x75\x52\xb9\x76\xe6\xea\xd9\xf6\xc6\x62\x27\x7c\x2a\xb2\xe0\xf3\x97\xab\xff\x06\x00\x00\xff\xff\x39\x29\x67\x42\x18\x21\x00\x00") +var _operatorsCoreosCom_operatorsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x59\x5f\x8f\xdb\xb8\x11\x7f\xdf\x4f\x31\xf0\x3d\xec\x1d\xe0\x3f\xbd\x14\x28\x0a\xbf\x2d\x76\x73\xc5\xb6\xd7\x4d\x90\xdd\xe4\xe5\x70\x0f\x63\x69\x6c\xb1\xa6\x48\x1d\x87\xb2\xd7\x0d\xf2\xdd\x8b\x21\x29\x5b\xb2\xbd\xb6\x9c\x6e\xd2\xf2\xc5\x16\x45\x0e\xe7\xef\x6f\x66\x28\xac\xd4\x27\x72\xac\xac\x99\x02\x56\x8a\x9e\x3d\x19\x79\xe2\xf1\xf2\xaf\x3c\x56\x76\xb2\xfa\xf9\x6a\xa9\x4c\x3e\x85\xdb\x9a\xbd\x2d\x3f\x10\xdb\xda\x65\x74\x47\x73\x65\x94\x57\xd6\x5c\x95\xe4\x31\x47\x8f\xd3\x2b\x00\x34\xc6\x7a\x94\x69\x96\x47\x80\xcc\x1a\xef\xac\xd6\xe4\x46\x0b\x32\xe3\x65\x3d\xa3\x59\xad\x74\x4e\x2e\x10\x6f\x8e\x5e\xfd\x69\xfc\x97\xf1\x9b\x2b\x80\xcc\x51\xd8\xfe\xa4\x4a\x62\x8f\x65\x35\x05\x53\x6b\x7d\x05\x60\xb0\xa4\x29\xd8\x8a\x1c\x7a\xeb\x78\xbc\xfb\x97\x59\x47\x56\x7e\xca\x2b\xae\x28\x93\x83\x17\xce\xd6\x55\x7b\x75\x6b\x4d\x24\xd5\xf0\x87\x9e\x16\xd6\xa9\xe6\x19\x60\x04\x56\x97\xe1\x7f\x94\xfb\x5d\xa2\x11\xa6\xb4\x62\xff\x8f\xce\xf4\xaf\x8a\x7d\x78\x55\xe9\xda\xa1\x6e\x9d\x19\x66\x59\x99\x45\xad\xd1\xed\xe6\xaf\x00\x38\xb3\x15\x4d\xe1\x56\xd7\xec\x49\x26\x92\x1e\x12\x0f\xa3\x24\xeb\xea\xe7\xc4\x12\x67\x05\x95\xd8\x30\x08\x42\xca\xdc\xbc\xbf\xff\xf4\xe7\xc7\xbd\x17\x00\x39\x71\xe6\x54\xe5\x83\x56\x1b\x1e\xc1\x51\xe5\x88\xc9\x78\x06\x84\x2c\x1e\xbb\x65\x68\xdc\xda\xee\x37\xc2\x98\x9d\xfd\x8b\x32\xdf\x9a\xae\x9c\x2c\xf6\x2d\x2d\xc5\xd1\xf2\x9e\xce\xfc\x1e\x1f\xd7\xc2\x6c\x5c\x07\xb9\x38\x0e\x31\xf8\x82\x1a\xb1\x29\x4f\x12\x82\x9d\x83\x2f\x14\xef\xf8\x0d\xbe\x20\xd3\x68\x12\x57\x63\x78\x24\x27\x1b\x81\x0b\x5b\xeb\x5c\x3c\x6c\x45\xce\x83\xa3\xcc\x2e\x8c\xfa\xf7\x96\x1a\x83\xb7\xe1\x18\x8d\x9e\xd8\x83\x32\x9e\x9c\x41\x0d\x2b\xd4\x35\x0d\x01\x4d\x0e\x25\x6e\xc0\x91\xd0\x85\xda\xb4\x28\x84\x25\x3c\x86\x7f\x5a\x47\xa0\xcc\xdc\x4e\xa1\xf0\xbe\xe2\xe9\x64\xb2\x50\xbe\x89\x8d\xcc\x96\x65\x6d\x94\xdf\x4c\x82\x9b\xab\x59\x2d\x76\x9f\xe4\xb4\x22\x3d\x61\xb5\x18\xa1\xcb\x0a\xe5\x29\xf3\xb5\xa3\x09\x56\x6a\x14\x98\x35\x21\x3e\xc6\x65\xfe\x83\x4b\xd1\xc4\xd7\x7b\xea\x8b\x76\x60\xef\x94\x59\x74\x5e\x05\x9f\x3c\xa9\x6b\x71\x4f\x50\x62\xe8\xb8\x3d\xca\xb2\x53\xa9\x4c\x89\x56\x3e\xbc\x7d\x7c\x82\x86\x81\xa8\xf6\xa8\xe1\x96\xb7\xec\x94\x2d\x8a\x52\x66\x4e\x2e\xae\x9c\x3b\x5b\x06\x2a\x64\xf2\xca\x2a\xe3\xc3\x43\xa6\x15\x19\x0f\x5c\xcf\x4a\xe5\xc5\x8a\x7f\xd4\xc4\x5e\xec\x30\x86\xdb\x00\x0d\x30\x23\xa8\xab\x1c\x3d\xe5\x63\xb8\x37\x70\x8b\x25\xe9\x5b\x64\xfa\xe6\xaa\x16\x8d\xf2\x48\xd4\xd7\x5f\xd9\x6d\x64\x3b\xdc\x70\x10\x25\x00\x0d\xfc\xbc\x68\x9d\x26\x22\x1f\x2b\xca\x3a\xa1\x90\x13\x2b\x27\xae\xeb\xd1\x93\x38\x7c\x07\x76\xfa\x1c\xed\xd1\xd7\xdc\xef\xf0\xb0\xb4\x73\xbc\x9d\xb1\x18\xba\x75\x3e\x9a\x1d\x7c\x48\xa4\x88\x41\x33\x5b\x56\xd6\x88\x63\xf4\xe5\xea\x65\xe8\x80\x90\x1c\x1a\x7a\x87\xef\xf6\x78\xbf\xdd\x2e\x4d\xf3\x33\xe2\xad\xf7\x8a\x0c\xe8\x23\x39\xa6\x28\xd0\x11\x70\xeb\xc1\xad\x0c\x71\x5b\xb1\xc5\x31\x9e\x04\x9c\x35\xce\x48\x3f\x92\xa6\xec\xd0\x3c\xe7\x24\x96\xd1\xd9\x7f\x7c\xc9\x9e\xf0\xbf\xb6\x77\xc4\xd8\x0e\x44\xe0\x8f\x9a\xdc\x06\xec\x8a\x9c\x84\x3b\x79\x31\xdc\x4e\x29\x35\x53\x2e\x18\xc8\x61\x67\x47\x2d\xd7\x27\x8c\xd9\x53\x4d\x7d\x44\x95\x51\xa2\xcf\x8a\xb7\xcf\x02\x29\xad\x1c\xd7\x43\xea\xfd\x8d\x49\x70\xc5\x41\xcc\xa8\x00\x6e\x94\x92\x8c\x56\x46\xd4\x7a\x2a\xa8\x33\x03\xe8\x08\x6e\x1e\xee\x28\x3f\xe6\x0f\x5d\x81\xd1\x39\xdc\x9c\x58\xa5\x3c\x95\x27\x85\xd8\x13\xe3\xe6\x04\xab\x09\xa7\x9b\x37\xc9\x8b\x8d\x47\x65\x38\xe5\xa0\x21\x20\x2c\x69\x13\xd3\x95\x64\xc1\x26\x28\xc3\x62\x47\x21\xb9\x05\xdb\x2e\x69\x13\x16\xa5\xdc\x75\x92\xc3\x1e\xb6\x8d\xe3\x74\x30\xec\xc6\x48\x8e\x3f\xbb\xc6\x1e\x07\xb5\xee\xe8\xe3\x54\x71\x2c\x69\x73\x6e\xc9\x9e\x31\x44\x47\x8a\x53\x55\x20\x56\x91\x89\xa0\x49\x99\xda\x1a\x02\xab\x4a\x2b\x0a\x89\xeb\x2c\xfd\x17\xb3\xc7\xe1\x68\xc4\xbf\x90\x69\x7b\xb4\x8c\x5b\xd2\xe6\x9a\xa3\x03\x48\x74\x14\xaa\x92\x58\xdf\xc2\x40\x53\xc1\x7c\x42\xad\xf2\x5d\x51\x1a\x22\xe1\xde\x0c\xe1\xc1\x7a\xf9\x79\xfb\xac\x24\x43\x8b\xdf\xdc\x59\xe2\x07\xeb\xc3\xcc\xab\x8a\x1d\x59\xb9\x50\xe8\xb8\x29\x04\x88\x89\x31\x29\x52\xb5\x4b\x1a\x1e\xc3\xfd\xbc\x83\x6a\xb2\xfa\xde\x80\x75\x8d\x74\xa1\xc8\x8c\x84\x22\x89\xb2\xe6\x50\x83\x18\x6b\x46\x54\x56\x7e\x73\x94\x46\x52\x8a\x75\x1d\x9d\x9c\x20\x97\x48\x3d\x49\x69\x14\xdf\xc4\x22\x56\x63\x46\x39\xe4\x75\x60\x3a\x14\x64\xd2\x6e\xa8\x0c\x4a\x72\x0b\x82\x4a\x10\xae\xaf\xaa\xcf\xe1\x52\x1c\x3d\xd0\xa9\x4d\xf4\x8c\xfd\x02\x04\x87\xec\x73\x21\x6c\xc7\x3d\x11\xde\x4a\xac\xc4\x74\x9f\x05\xc5\x82\xf6\xbe\x40\x85\xca\xf1\x18\x6e\x42\x7b\xa4\xa9\xf3\x4e\x99\xa0\xe7\x36\x19\xa1\xa0\x18\x04\x8a\x56\xa8\x05\x37\xc5\xd3\x0d\x90\x8e\x28\x6a\xe7\x07\xc9\x62\x08\xeb\x42\x6a\x01\x89\xef\xb9\x22\x1d\x4a\xe2\xc1\x92\x36\x83\xe1\x81\xb9\x07\xf7\x66\x10\xf1\xf5\xc0\xc0\x5b\x30\xb6\x46\x6f\x60\x10\xde\x0d\xfe\xbb\xfc\x72\x16\x74\x31\xcf\x43\x63\x8d\xfa\x7d\x4f\x24\x3c\x6b\x4b\x47\xf3\x17\x49\x74\x8c\xf7\x81\xe6\x51\x98\x56\x39\x31\x27\x47\x26\x14\x59\xf6\xc5\x1a\x62\x57\x75\x0c\x13\x8a\x52\x0e\x6b\xe5\x8b\x6e\xed\xf2\x92\x76\xce\x7b\xf8\x19\xbf\xee\x0a\xa1\xb2\xe2\x43\xc3\x76\xf4\xc1\xad\x14\x11\x23\x1b\x6e\x87\x40\xc6\xa9\xac\x68\x98\x95\x22\x37\x16\xd2\x62\xf9\x68\x86\x13\x99\xb4\x97\x41\xfb\xa5\xb3\x97\x3b\xe9\x13\x82\xde\xbc\xbf\x6f\x7a\xe8\xd8\x3a\x53\x23\xe8\x19\x00\xef\x09\xde\x3b\x1d\x5c\xc0\xd4\xed\x76\x53\x3b\x5f\xb5\xfa\xf0\x6d\x8b\x11\x5a\xc6\xc6\x83\xfa\x30\x7c\x1e\x02\x7b\xc1\xdf\x71\x76\x77\xdc\xb6\x99\xc5\x15\x2a\x8d\x33\xdd\xb4\x48\x31\xd9\xa6\x06\x69\xcb\xfc\x75\x74\x1b\x3a\x87\xe5\xbd\xcb\xae\xfe\x85\x97\x94\x55\xd1\x65\x7b\x2c\x94\xf3\xcf\x2c\xeb\x5f\x7d\x49\x27\xc3\xfe\xc9\xa1\x61\xd5\x5c\xd9\xf5\xc9\x3c\x7b\xad\x0d\x7b\xf0\xaa\xa4\xe4\x0d\x8d\x31\xfc\x96\x2c\xe5\xf1\xb6\xc1\x1a\x6a\x62\x33\xa0\xbf\xf5\x05\xbd\x08\x28\xed\x71\x41\xa5\x22\x63\x6e\x5d\x89\x7e\x0a\x39\x7a\x1a\x09\x67\xbd\xd4\xf0\x31\x5c\x6a\xbc\xaa\x0a\xd6\xc8\x62\x8d\x19\xe5\xff\x0f\x42\x96\xc4\x8c\x8b\xcb\xa5\xbb\x81\xa2\x2e\x51\xa2\x0b\xf3\x10\x47\x89\x10\x28\x93\xab\x0c\xc3\x75\x54\x4e\x1e\x95\x66\xc0\x99\xad\x63\xf4\xed\xcc\xff\xea\x16\x76\x84\x7c\x0e\x65\x8f\xc8\x11\x53\xbe\x6c\x15\xe5\x75\x4d\x75\xcd\xc1\x07\xbe\x25\xd7\xc7\xaf\x77\xce\x72\x9d\xae\x7a\xb6\x60\x9b\x18\x1e\x86\x68\xb2\x73\x78\x72\x35\x0d\xe1\x17\xd4\x4c\x43\xf8\x68\x96\xc6\xae\x5f\x9f\xf7\xb0\xf8\x62\x7d\x6f\xaa\xc0\xe1\x96\xe7\x57\x64\x2b\x14\x84\xef\xd1\x17\x17\xa4\xb5\xeb\xfb\x54\x0b\x85\x5a\x3e\x54\x11\x95\xa2\x8c\x3a\x97\xd3\xa0\x0c\x7b\xc2\x3c\x4d\x92\xf1\xca\x51\x7a\x37\x8c\x37\xa7\xa9\x83\xd9\x5d\x5e\x4b\x7d\x09\x28\x65\xa7\xca\xe1\xef\x8f\xef\x1e\x26\x7f\xb3\xa9\x64\xc5\x2c\x23\x4e\xa9\x45\xea\xcc\x21\x70\x9d\x15\x80\xdc\x5c\x17\x3e\x86\xa4\x53\xa2\x51\x73\x62\x3f\x4e\xd4\xc8\xf1\x6f\x6f\x7e\x1f\xc3\x2f\xd6\x01\x3d\x63\x59\x69\x1a\x82\x4a\x6d\x4e\x73\xc5\xdb\x2a\x8f\x82\x30\xdb\xbd\xa1\x12\x0a\x2c\x55\x36\x4f\x4c\xaf\x03\xb3\x1e\x97\x04\x36\x31\x5b\x13\x68\xb5\xa4\x29\x0c\xb8\xa2\xac\x75\xf4\x67\x83\x25\x7d\x19\xc0\x8f\xeb\x82\x1c\xc1\x40\x1e\x07\xf1\xc0\x6d\x09\x29\x73\x2d\xa7\x4c\x07\xc7\x3e\xdc\xa9\xc5\x82\x1c\xc5\x62\x9c\x56\x64\xfc\x4f\xd2\x89\xa9\x39\x18\xdb\x5a\x1c\x48\x88\x3e\x2b\xca\xd4\x5c\x51\x7e\xc0\xc8\x6f\x6f\x7e\x1f\xc0\x8f\x5d\xb9\x04\x75\xe8\x19\xde\xc4\x2e\x43\xb1\xc8\xf8\x53\x6a\xdc\x78\x63\x3c\x3e\x0b\xcd\x4c\x5a\x07\x13\x6b\x7e\x6f\xa1\xc0\x15\x01\xdb\x92\x60\x4d\x5a\x8f\xe2\xbd\x69\x0e\xeb\xd8\x92\x36\xaa\x8c\x2d\x5e\x85\xce\xef\x7d\xaf\x78\x7a\x77\xf7\x6e\x1a\x4f\x13\xb3\x2d\x8c\x1c\x61\xac\x87\xb9\x32\xa8\x53\xdf\xa1\x78\xd7\xa6\x70\x1d\x8d\xe4\x2d\x64\x05\x9a\x80\x95\x41\x1b\xf3\xda\xd7\x8e\xc6\xfb\xf7\xd7\x5f\x15\x03\xc7\x3e\x24\x9c\x72\xff\xf0\x59\x61\xbf\xc8\xfc\x1f\x5e\xda\x7f\x95\xd0\xe1\xbb\xda\x05\x42\x3f\xb4\xfc\xf4\xa4\xd0\xcb\x7a\x46\xce\x90\xa7\x20\x77\x6e\x33\x16\x91\x33\xaa\x3c\x4f\xec\x8a\xdc\x4a\xd1\x7a\xb2\xb6\x6e\xa9\xcc\x62\x24\x8e\x38\x8a\xde\xc1\x93\xf0\x2d\x72\xf2\x43\xf8\x79\x35\x19\xb9\xc2\xec\x62\x41\xc3\xa6\xef\x21\xad\x9c\xc3\x93\x57\x11\xb6\x69\xe4\x2e\xef\x9d\xae\x1f\x23\x70\x64\xfb\x34\x24\xec\xd6\x85\xca\x8a\xe6\x53\x64\x0b\x29\x4b\xcc\x23\x94\xa2\xd9\x7c\x73\xe7\x17\x95\xd6\x4e\xce\xde\x8c\xd2\x67\xf4\x11\x9a\x5c\xfe\xb3\x62\x2f\xf3\xaf\xa2\xc3\x5a\x5d\x04\x04\x1f\xef\xef\xbe\x4f\x48\xd4\xea\x2b\xa2\x3e\x7e\xc6\x9a\x82\x77\x75\x53\xd3\xb2\xb7\x4e\x2a\xd7\xce\x5c\x3d\xdb\xde\x58\xec\x84\x4f\x45\x16\x7c\xfe\x72\xf5\x9f\x00\x00\x00\xff\xff\xb3\x0d\x9b\xb8\x18\x21\x00\x00") func operatorsCoreosCom_operatorsYamlBytes() ([]byte, error) { return bindataRead( @@ -204,7 +204,7 @@ func operatorsCoreosCom_operatorsYaml() (*asset, error) { return a, nil } -var _operatorsCoreosCom_subscriptionsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x7d\x6b\x73\xe3\xb8\x95\xe8\xf7\xf9\x15\x28\x27\x55\xb6\xb3\x92\xdc\x9d\x9d\x4d\x72\xbd\xa9\xa4\xdc\xb6\x7b\xa2\x9d\x6e\xb7\xb7\xe5\xee\xa9\xdc\x24\x37\x81\x48\x48\xc2\x98\x04\x38\x00\x28\xb7\xf2\xf8\xef\xb7\x70\x0e\x00\x82\xd4\x8b\x94\xe5\xc7\x4c\xcc\x0f\x33\x6d\x0a\x00\x81\x83\x83\xf3\xc2\x79\xd0\x82\x7f\x66\x4a\x73\x29\x4e\x09\x2d\x38\xfb\x62\x98\xb0\x7f\xe9\xc1\xed\x6f\xf4\x80\xcb\x93\xf9\xeb\xaf\x6e\xb9\x48\x4f\xc9\x79\xa9\x8d\xcc\x3f\x32\x2d\x4b\x95\xb0\x0b\x36\xe1\x82\x1b\x2e\xc5\x57\x39\x33\x34\xa5\x86\x9e\x7e\x45\x08\x15\x42\x1a\x6a\x5f\x6b\xfb\x27\x21\x89\x14\x46\xc9\x2c\x63\xaa\x3f\x65\x62\x70\x5b\x8e\xd9\xb8\xe4\x59\xca\x14\x0c\xee\x3f\x3d\x7f\x35\xf8\xd5\xe0\xd5\x57\x84\x24\x8a\x41\xf7\x1b\x9e\x33\x6d\x68\x5e\x9c\x12\x51\x66\xd9\x57\x84\x08\x9a\xb3\x53\xa2\xcb\xb1\x4e\x14\x2f\xe0\x13\x03\x59\x30\x45\x8d\x54\x7a\x90\x48\xc5\xa4\xfd\x5f\xfe\x95\x2e\x58\x62\x3f\x3e\x55\xb2\x2c\x4e\xc9\xca\x36\x38\x9c\x9f\x23\x35\x6c\x2a\x15\xf7\x7f\x13\xd2\x27\x32\xcb\xe1\xdf\xb8\xf6\x51\xf4\x55\x78\x9d\x71\x6d\xbe\x5d\xfa\xe9\x1d\xd7\x06\x7e\x2e\xb2\x52\xd1\xac\x31\x5b\xf8\x45\xcf\xa4\x32\x57\xd5\xb7\xed\xb7\x74\x39\x8e\xff\xed\x1a\x72\x31\x2d\x33\xaa\xea\x83\x7c\x45\x88\x4e\x64\xc1\x4e\x09\x8c\x51\xd0\x84\xa5\x5f\x11\xe2\xe0\xe8\xc6\xec\x13\x9a\xa6\xb0\x37\x34\xbb\x56\x5c\x18\xa6\xce\x65\x56\xe6\x22\x7c\xd3\xb6\x49\x59\x18\xf5\x94\xdc\xcc\x18\x29\x68\x72\x4b\xa7\xcc\x7f\x6f\xcc\x52\x62\x64\xe8\x40\xc8\xf7\x5a\x8a\x6b\x6a\x66\xa7\x64\x60\x41\x3c\xb0\x10\x8c\x7e\xc6\xfd\xb9\xc6\x41\xa2\xf7\x66\x61\xa7\xab\x8d\xe2\x62\xba\xe9\xf3\x09\x35\x34\x93\x53\x82\xf8\x45\x26\x52\x11\x33\x63\xc4\x7e\x8a\x4f\x38\x4b\xfd\xfc\x36\xcc\x08\xbb\x2e\xcd\x69\xd4\x7c\xdd\x7a\x4a\x33\x2a\x04\xcb\x88\x9c\x90\xb2\x48\xa9\x61\x9a\x18\x59\xc1\x67\x33\x78\x5c\xe7\xa5\xd9\x9c\x2f\xbd\x5f\x31\x1d\x6c\x3a\x7f\x4d\xb3\x62\x46\x5f\xbb\x97\x3a\x99\xb1\x9c\x56\x7b\x28\x0b\x26\xce\xae\x87\x9f\xff\x73\xd4\xf8\x81\xd4\x97\x12\xa3\x28\xb9\x65\xac\xd0\xd5\xa1\x20\x65\x61\xd7\x64\x17\x47\xc6\x0b\x62\x14\x4d\x6e\xb9\x98\xc2\xd2\xa7\xb8\xde\x73\xdc\x18\x3d\x58\x9a\xb2\x1c\x7f\xcf\x12\x13\xbd\x56\xec\x87\x92\x2b\x96\xc6\x53\xb1\x90\xf5\x24\xa2\xf1\xda\xc2\x29\x7a\x55\x28\x3b\x2d\x13\x9d\x43\x7c\x22\x1a\x55\x7b\xdf\x58\xe6\xa1\x85\x05\xb6\x23\xa9\x25\x4f\x76\xfa\x33\xe6\x0f\x07\x4b\x1d\x00\xed\x76\x9a\x19\xd7\x44\xb1\x42\x31\xcd\x04\x12\x2c\xfb\x9a\x0a\xb7\xa6\x01\x19\x31\x65\x3b\xda\x03\x5b\x66\xa9\xa5\x63\x73\xa6\x0c\x51\x2c\x91\x53\xc1\xff\x1e\x46\x03\x10\xd9\xcf\x64\x16\x3f\x0c\x81\xe3\x26\x68\x46\xe6\x34\x2b\x59\x8f\x50\x91\x92\x9c\x2e\x88\x62\x76\x5c\x52\x8a\x68\x04\x68\xa2\x07\xe4\xbd\x54\x8c\x70\x31\x91\xa7\x64\x66\x4c\xa1\x4f\x4f\x4e\xa6\xdc\x78\x0a\x9c\xc8\x3c\x2f\x05\x37\x8b\x13\x20\xa6\x7c\x5c\xda\x8d\x3b\x49\xd9\x9c\x65\x27\x9a\x4f\xfb\x54\x25\x33\x6e\x58\x62\x4a\xc5\x4e\x68\xc1\xfb\x30\x59\x81\x24\x32\x4f\x7f\xa6\x1c\xcd\xd6\x87\x0d\xf0\xad\x3c\x07\xc4\x53\xbd\x8d\xb0\xb6\xc4\x8f\x70\x4d\xa8\xeb\x8e\x6b\xa9\x40\x6a\x5f\x59\xa8\x7c\xbc\x1c\xdd\x10\x3f\x01\x04\x3b\x42\xb8\x6a\xaa\x2b\x60\x5b\x40\x71\x31\x61\x0a\x5b\x4e\x94\xcc\x61\x14\x26\xd2\x42\x72\x61\xe0\x8f\x24\xe3\x4c\x18\x7b\x0c\x73\x6e\x34\xe0\x1c\xd3\xc6\xee\xc3\x80\x9c\x03\x03\x22\x63\xe6\x0e\x6c\x3a\x20\x43\x41\xce\x69\xce\xb2\x73\xaa\xd9\x83\x83\xda\x42\x54\xf7\x2d\xf8\xda\x03\x3b\xe6\x9f\xcb\x1d\x96\xce\x18\x21\x9e\xc1\xad\xdd\x9d\xf8\xc0\x8f\x0a\x96\x84\xe3\x40\x05\x39\x2b\x8a\x8c\x27\x88\xf1\x66\x46\x0d\x49\xa8\xb0\xf0\xe2\x42\x1b\x9a\x65\xc0\x4e\x5a\xcd\x62\xdd\x69\x27\x70\xb4\x1b\xcc\xc1\xbf\x5e\xa2\xd0\xf5\x1f\x02\x53\x6b\xb4\x58\x47\x19\xec\xe3\xe8\xec\xf2\x0f\x1b\x40\x4e\x50\x32\x99\xf0\xe9\xaa\x6e\x6b\x61\x79\x0e\x5d\x40\xa6\xa1\x5c\x68\x37\x44\xa9\x10\x9a\x15\xa7\xb2\xbc\x8b\xd6\xf8\xf6\x60\xed\xec\x56\x42\x76\xdb\x9a\xed\xc3\xc4\x7c\xf5\x0f\x8d\x05\x5c\x8a\x39\x1e\x54\x2b\xb3\x58\x22\xc7\xc4\x9c\x2b\x29\x72\x7b\x88\xe6\x54\x71\x3a\xce\x1c\x63\x63\x96\x7c\xe1\x19\xc3\x25\x32\xb5\xea\x48\xad\xf9\x2a\xae\x87\x2a\x45\x17\x6b\x5a\x70\xc3\xf2\x35\xab\x59\x35\xed\xcf\x54\x45\x54\xc2\x22\xef\xaa\xa9\x13\xd7\xc0\x4e\x9d\x92\xf3\x30\xf1\xb5\x9f\xd9\x02\x77\x7c\xd6\xe3\x76\xf5\xac\xc1\x72\xff\x6c\xdb\x40\x7c\x80\xd3\x6f\xf8\xbd\x01\x16\x7b\x42\x90\x81\xb1\x95\xd0\x18\x90\xf7\xa5\x86\xdd\xa2\xe4\xfc\xaf\xc3\x8b\xcb\xab\x9b\xe1\xdb\xe1\xe5\xc7\xf5\xe0\x20\xdb\x0e\x4a\xf5\x00\x8d\xef\x30\xd9\xc3\xcf\x7e\x8f\x14\x9b\x30\xc5\x44\xc2\x34\xf9\xf9\xd1\xe7\xb3\x8f\x7f\xbd\x3a\x7b\x7f\x79\x4c\xa8\x62\x84\x7d\x29\xa8\x48\x59\x4a\x4a\xed\x99\x46\xa1\xd8\x9c\xcb\x52\x67\x0b\x47\xb9\xd2\x35\x48\xdb\xc4\x56\xe0\xb6\x54\x2c\x88\x66\x6a\xce\x93\xd5\x20\xd2\x03\x32\x9c\x10\x5a\x21\x50\x12\x30\xdc\x32\xaa\x6c\xce\xd2\x1e\x0c\x1b\x26\xed\xbf\xc3\x45\x51\x1a\xcf\xf0\xee\x78\x96\xc1\xa9\x10\x28\x2b\xa5\x03\x72\x21\x4b\x3b\xde\xcf\x7f\x0e\x0b\x53\x2c\x2d\x13\x10\xa2\x2d\x31\xe0\x62\x6a\x7f\xea\x91\xbb\x19\x4f\x66\x84\x66\x99\xbc\xd3\x40\x29\x98\x4e\x68\xe1\x97\x1e\x43\x47\x2f\x84\xa1\x5f\x4e\x09\x1f\xb0\x01\x39\xf8\x79\xf4\xd3\x01\x7e\xbd\x50\xd2\x7e\x02\xe5\x64\x9c\x55\xc6\x0d\x53\x34\x23\x07\x71\xeb\x01\xb9\xb4\xdf\x60\x69\xbc\x0f\x30\x82\x60\x73\xa6\xec\x2a\xfc\x2e\xf4\x88\x62\x53\xaa\xd2\x8c\x69\x6d\xf1\xec\x6e\xc6\xcc\x8c\xa1\x28\x1e\x00\xc6\xbe\x70\xcb\x70\xa5\x22\x42\x9a\x01\xb9\x60\x13\x5a\x66\xc0\x81\xc9\xc1\xc1\xa0\xc9\xf8\x76\x47\xb5\xb7\x4a\xe6\x1d\xd0\x6d\x54\xd7\x1c\x56\xed\xfd\xa1\xc6\x91\x6b\x64\x4d\xb3\x94\xf0\x89\x93\x60\xb8\xb6\x8b\x22\x2c\x2f\xcc\xa2\xcd\xa1\xd9\x42\x47\x48\x6b\x42\x40\x02\x4f\x7a\x4f\x8b\x6f\xd9\xe2\x23\x9b\x6c\x6b\xde\x5c\x3f\xcb\x58\x62\x09\x25\xb9\x65\x0b\x10\x67\xc9\xb9\x1f\x70\xf3\x52\x3a\x2d\x87\xb4\x24\x8f\xfe\xe9\xdb\xe9\x6c\x6d\xd7\x1e\x48\xf6\xb9\x65\x8b\x36\xcd\xc8\xb2\x4e\x67\x41\x03\xbc\xce\xc2\x6a\x3b\x54\x48\x7b\x94\xf5\xcf\x76\x8a\xbe\x72\x72\x87\x31\x69\x77\xe7\xd4\xac\x14\x58\x6f\xcb\x31\x53\x82\x19\x06\x32\x6b\x2a\x13\x6d\xc5\xd5\x84\x15\x46\x9f\xc8\xb9\xa5\x7c\xec\xee\xe4\x4e\x2a\xab\xc8\xf5\xef\xb8\x99\xf5\x71\x57\xf5\x09\x18\x3d\x4e\x7e\x06\xff\x23\x37\x1f\x2e\x3e\x9c\x92\xb3\x34\x25\x12\x8e\x78\xa9\xd9\xa4\xcc\xc8\x84\xb3\x2c\xd5\x83\x48\xeb\xea\x81\x3e\xd0\x23\x25\x4f\x7f\xbf\xf9\x70\xef\x08\x31\x59\xa0\xb1\x62\x07\xa8\x8d\x40\xe8\x5a\xd4\xe8\x54\x40\x7a\x4b\xa1\xac\x8a\x60\xf7\x3c\x77\x6c\xd1\x31\x94\x0e\xcb\x18\x4b\x99\x31\x2a\xb6\xf4\x00\xb0\x75\x3f\xb3\x87\xd5\xa1\x85\x11\x3c\x02\x14\x32\x3d\x25\xba\x2c\x0a\xa9\x8c\x0e\x2a\x02\xd8\x5c\x7a\xf5\x3f\x41\x5e\xee\x91\xbf\x85\x97\x19\x1d\xb3\x4c\xff\xe9\xf0\xf0\xb7\xdf\x5e\xfe\xf1\x77\x87\x87\x7f\xf9\x5b\xfc\x6b\x64\xa1\xab\x37\x41\x9b\x8e\x4c\x41\x08\x77\x7f\x3a\x36\x7a\x96\x24\xb2\x14\xc6\xfd\x60\xa8\x29\xf5\x60\x26\xb5\x19\x5e\x87\x3f\x0b\x99\x36\xff\xd2\x5b\x38\x01\x79\x58\xa2\x03\xe0\xbc\xa6\x66\xb6\x67\xd2\xb3\xde\x1a\xb1\xfa\xa9\x6d\xb7\xb7\x4f\xb8\x5d\x76\x06\x09\xfb\xcf\xb7\x7e\xba\x96\x03\xdd\x29\x6e\x0c\x13\x20\x77\x30\x95\x5b\x4e\xdc\xb3\x98\x5b\xb1\xd9\xf9\xeb\x83\x07\x21\x5e\x01\x6a\x3b\x2c\x0e\x66\xef\x56\x86\xc8\x1c\x08\xad\x97\xa0\x2a\x1d\xe9\xec\x7a\xe8\x2d\x33\x7b\x5f\x88\xb7\x37\xbc\xbd\xf7\x99\x0c\x96\x0b\xb7\xac\x20\x69\x9e\x12\x29\xb2\x45\xf8\x5d\x93\x8c\x83\x35\xc2\x0a\xa0\xc1\x22\x71\x84\x2f\x07\x49\x51\xf6\x5c\x83\x41\xce\x72\xa9\x16\xe1\x4f\x56\xcc\x58\x6e\x25\xb6\xbe\x36\x52\xd1\x29\xeb\x85\xee\xd8\x2d\xfc\x85\x1d\x6b\x1f\x58\xee\x8d\x22\x75\x52\x2a\xcb\x3c\xb2\x85\xa7\x20\x2c\x7d\xda\xb3\xe8\xc1\xb4\xe7\xa3\x18\x76\xe3\x6a\x47\x96\x1b\xb4\x45\x67\x70\xf5\xab\x02\x19\x72\x2e\xb3\x32\x67\xba\x17\xd8\x13\x4a\xeb\x62\x6e\xa5\xc9\x25\xf3\xce\xea\xa7\xe3\xe9\x4b\xf9\x9c\x6b\xa9\x76\xe6\x83\xdc\x99\x3c\x65\x69\xac\xa6\x32\x91\x2a\xa7\x26\xa8\x8b\x5f\x0a\xa9\x41\x07\x70\x38\xdb\x20\x29\xaf\x0f\x5a\x7d\xb6\xa0\xc6\x30\x25\x4e\xc9\xff\x3b\xfa\xf3\x7f\xfc\xb3\x7f\xfc\xfb\xa3\xa3\x3f\xbd\xea\xff\x9f\xbf\xfc\xc7\xd1\x9f\x07\xf0\x8f\x5f\x1c\xff\xfe\xf8\x9f\xfe\x8f\xff\x38\x3e\x3e\x3a\xfa\xd3\xb7\xef\xbf\xb9\xb9\xbe\xfc\x0b\x3f\xfe\xe7\x9f\x44\x99\xdf\xe2\x5f\xff\x3c\xfa\x13\xbb\xfc\x4b\xcb\x41\x8e\x8f\x7f\xff\xf3\x56\xd3\xa3\x62\xf1\xa1\xc5\x81\xc7\xa7\xef\x36\x88\x0b\xc3\xa6\x4c\x75\xec\xd5\x7a\x5b\x09\xf9\xd2\xaf\x84\xb6\x3e\x17\xa6\x2f\x55\x1f\xbb\x9f\x12\xa3\xca\xed\x07\xa3\x22\x6a\xbb\xe0\xf9\x47\x7f\x5a\x23\x53\xac\x27\xcd\x7b\x47\x64\xcd\x12\xc5\xcc\xbe\x34\x18\x1c\xcd\xf3\x8f\x42\xa6\x87\x9a\x88\x35\x66\xc2\x75\xd3\xfe\xb7\x50\x6a\xbc\x48\x81\xf0\xaa\x38\xef\x44\xc9\x7c\x40\x22\xb3\xd0\x9c\x66\x3c\xf5\xed\x6e\xd9\x16\x2d\xd7\x3f\x2f\x4a\xd0\x8f\x4b\x09\x1a\xe1\xfe\x3e\xb8\x06\xc4\xc4\x7c\x93\x99\xa6\x69\xd3\xb5\x6d\xeb\xe6\x68\x2f\x40\x19\x49\x0a\x59\x94\x19\x35\x6b\xcc\x76\x2b\x6c\xd3\x0e\xf7\x75\x30\x13\xda\x8d\x06\x3b\xb0\xa3\x72\xf9\x6a\x63\x28\x39\xcb\x32\xc2\x05\x9e\x04\x18\xc0\x5b\xf3\x14\x43\x79\x89\x50\x34\x38\xcf\xed\x14\xee\x66\xac\x69\x68\xe4\xda\xea\x3a\xca\x70\x31\x1d\x90\xef\xec\xef\x48\xb3\x9c\x69\x8c\x0b\x92\x97\x99\xe1\x45\xc6\x48\xe0\xb6\x68\x43\xcb\x4a\x46\xa8\xd6\x32\xe1\xd4\xb8\x19\xbb\xfb\x43\x6d\xfc\xb4\x61\x36\x86\xde\x82\x29\x34\x61\x29\x13\x09\x1b\x90\xcf\x70\x5d\x18\xd6\x3a\xb6\xc2\x20\x98\xf7\x61\x0c\x4a\xd2\x12\xaf\x76\x90\x1e\xac\x1e\x63\x98\xe7\xa5\x01\x43\xf1\x63\x59\xf1\xed\x8e\x3b\xcb\x5c\x64\xcc\x07\x52\x15\x44\x6b\x0a\x77\x0f\x72\x52\xa9\xee\xfa\x7e\xe6\xfb\x76\x84\x37\x98\xdb\xb6\x72\xaa\x25\x8a\x5b\xd9\x18\xea\x94\xf6\xb1\x2d\x86\xed\xe8\xec\x4f\x92\xc6\x76\xa0\xaf\xed\x69\x6b\x07\xe3\x52\x57\x7a\xda\xd6\x9a\x54\x28\x36\xe1\x5f\x3a\xe0\xe3\x99\xa8\x54\x14\x9e\x32\x61\xac\x22\xa0\x80\xa0\x2a\x56\x30\x01\x7a\x38\xa3\xc9\x0c\xe8\x82\xa3\xa2\x95\x65\xf8\x21\x6f\x8c\x50\xca\xe8\x7e\xbc\x46\xab\xa4\x98\x97\xb3\xf5\x13\x3f\x5b\x6e\xd7\xf7\x7f\xb0\x84\x4c\x19\xea\x16\xeb\x95\xeb\xc6\x3e\x46\x3d\x9c\x9f\x8b\xff\x0b\x2f\xf0\xfc\x24\xad\xf6\x16\xae\x9c\x0a\x09\x67\x6d\xc2\x0d\x91\x56\x22\xb0\xdf\x1d\x90\xd1\x8a\x9e\x39\x35\xc9\xcc\xb5\x38\x3c\xd4\x04\x8d\xb6\xcd\x81\xc6\x68\x22\x4c\xcb\x8c\xa5\xc4\x3b\x6c\xe0\xa0\x1d\x51\xaa\xe6\xaa\x70\x42\xb5\xe6\x53\xd1\x2f\x64\xda\xb7\xa3\x9d\xac\x43\x88\x16\x87\x2a\x76\x35\xdc\x7e\xb0\xb6\xe2\x55\x30\x4e\xb4\xdb\xa6\x8f\xc1\xfe\x16\xc9\x16\x89\xcc\x8b\xd2\xb0\xc8\x38\x17\xec\x3a\xe3\x05\x7a\x16\x45\x32\x64\x25\x11\xdd\x0f\xa6\x39\x15\x74\xca\xfa\xee\xe3\xfd\xf0\xf1\x7e\xf8\xd6\x7d\xc0\xdc\x86\x6a\xa1\x49\x71\xd3\x39\xac\x03\xef\x1d\x9a\x2c\xf1\xe5\xd8\x99\x8e\x72\xfa\x85\xe7\x65\x4e\x68\x2e\x4b\x01\x32\xd9\x32\x38\xe1\xf2\x9a\xa5\xfb\x01\xd8\x0a\x40\xe9\xb5\x90\x6a\x09\x2d\xd2\x19\x31\xc9\xf3\xb5\x6c\xb5\xb2\x68\x75\xb3\x64\x75\xb0\x60\xed\x6c\xb9\xf2\x46\xea\xf6\xf8\xf8\xd1\xdb\xcd\x1b\x18\xc9\xc5\x56\x8c\xf4\x07\x1c\x5c\x3b\xc2\x38\x5c\x13\x99\x73\x63\x82\x4b\x56\xc0\xb0\x1e\xe1\xa6\x66\xfd\x74\x67\x81\x4f\x90\xc6\x72\x4d\xd8\x17\xab\x4d\x71\xb0\xa2\xfb\x5b\x8b\x1e\x72\xd9\x3b\xae\xc1\x80\x46\x05\xe1\x79\x91\xb1\xdc\xfb\x90\xf6\xbd\x6e\xe6\x9c\x0c\x5e\xce\xc7\xcb\xf9\x58\xd5\x49\x77\x91\x45\x62\x31\x04\x0d\x05\x63\x96\x55\xe2\x88\xc5\xec\x42\xa6\xda\xc9\x0b\x1e\x87\xec\x59\xb8\xfc\xc2\x35\x78\xe2\x7e\x64\x60\x19\x18\x31\xa3\xc9\xdd\x4c\x6a\x86\x3d\xa8\x62\x6e\x9c\x88\x35\x7a\x4b\x08\xdc\x23\x80\xd3\xe8\x64\x52\x6f\x91\xb2\x22\x93\x8b\x1c\x24\xdb\xa1\x89\xe5\x99\x20\xba\xb0\xbc\xc8\xa8\x61\x41\xb0\xd9\x6c\x6d\xb8\x37\xe7\x83\xaf\x5f\x7e\xb1\x12\x40\x14\x07\xd1\x02\xb6\xcd\x8e\x75\xd3\x54\x03\xd2\x8e\xc8\xe4\xe8\xb3\x7c\x03\x12\x7e\xf5\x06\xa0\x79\x76\x75\xb1\xde\x41\x92\xb4\x32\xaf\x90\xed\x26\x96\xa5\x65\x9c\x6d\x98\x6a\x43\x7a\x45\x9f\x5f\xef\xc1\x8a\x1e\xe8\x3d\x34\x5e\xf5\x9c\xfb\x5c\x88\x0e\xc0\xc6\x8a\x65\x18\xfa\xe0\x0c\xcd\xb6\x91\xf3\x5c\xdf\x8f\x46\xd6\xd6\xee\xde\xc6\xe6\xde\x0f\x93\xdf\x93\x12\xd8\xca\x28\x5f\xdb\x0c\x50\xb2\xe3\xa3\x0a\x2e\x47\x16\x92\x68\x9f\x77\x1b\x41\x8b\x22\x83\xfb\x3a\xd9\xd6\x37\xab\xa5\x3a\x86\xcb\xef\x38\xe9\xb0\xe5\xb1\xc3\xad\x9d\xf9\xa1\x46\x04\xb0\xa7\x63\xc6\x0b\xe7\xcd\x88\xd6\x3a\x1f\xbf\xf0\x19\xec\xa8\x55\x4c\x89\x3d\x09\x43\xd1\x23\x57\xd2\xd8\xff\x5d\xa2\x4d\xd4\xe2\xcd\x85\x64\xfa\x4a\x1a\x78\xb3\xd7\x65\xe3\x54\x3a\x2e\x1a\x3b\xc1\x01\x11\x78\x26\xc1\x20\x1d\x05\x34\xa0\xaf\x28\x90\x42\x0f\x20\xae\xc9\x50\x10\xa9\xfc\xea\x82\x55\x57\xbb\x21\xbc\x66\x28\xa4\xe8\xa3\x1b\xe1\xaa\x31\x2e\x83\x0f\x65\x0c\x93\x0d\xc3\xb9\xa1\x6e\x2c\x05\xc6\x5f\x30\x84\x25\xa3\x09\x4b\x49\x5a\xc2\xa4\x21\x1c\x83\x1a\x36\xe5\x09\xc9\x99\x9a\x32\xcb\xb4\x93\x59\x5b\x50\x6f\xa3\x4b\xf8\xb4\xa0\x4e\xf1\xa0\x5b\xf6\x0f\x48\xf0\x3b\xe0\x12\xdd\xc8\x36\xf6\x41\xf2\x96\xd3\xc2\x6e\xdd\x3f\x2c\x15\x03\xe8\xfd\x8b\x14\x94\x2b\x3d\x20\x67\xde\xf5\x36\xfe\xcd\xd9\xc0\xe2\x61\xec\x08\x56\xea\xfb\xa1\xe4\x73\x9a\x59\xba\x89\x02\x1e\x43\xf1\xce\x8e\xde\x64\x16\x3d\xc7\x4b\xed\xf9\x46\x7f\x17\xae\xc9\xc1\x2d\x5b\x1c\xf4\x96\xb6\xfb\x60\x28\x0e\x90\xbe\x2e\x6d\x70\x20\xc6\xe0\x51\x72\x00\xbf\x1d\xdc\x8f\xbf\x3c\x80\xf0\xb7\x75\x2f\x8d\xcc\x98\x8a\x43\x3f\xb7\xec\xe1\x4d\xd5\x1e\x96\x56\x5d\xef\x46\x23\x3d\xce\x2d\xc5\x8d\x17\x5b\xec\xd9\xaa\xe6\x05\xa8\x65\x0c\x4d\x66\xe8\xc5\xed\xe6\x05\x71\x34\x0b\x62\xf7\xcc\x20\x5d\x07\xc4\x70\x1c\xd2\x28\xb8\xf4\xf9\x6d\xc0\xb6\x1e\x03\xf9\xe9\x77\x91\x7f\x3b\xb4\xb7\x7f\x04\x0c\xf9\xad\xff\xd7\xef\xee\x19\xb7\xd0\x8e\xb1\xe1\x94\x3a\x08\x18\x97\xd0\x81\x70\x91\xc2\x05\x93\x5b\x2a\x40\x00\xc7\xb2\xf0\x81\x65\x0d\xc8\xa5\x25\x54\x24\x67\x54\x68\x6f\xe6\x82\x9b\xa8\xaa\xb1\x76\x57\x66\x91\x5e\xe5\x4c\x0a\xd5\xc9\x60\xe4\x4a\x8e\x9c\xed\xab\x47\xae\xc1\x96\x5a\xbd\x81\x93\x74\x25\x2f\xbf\xb0\xa4\x34\x6b\xef\xb2\x62\xb8\x6d\xe5\x22\x5b\x19\x7d\x0d\x20\xdf\x56\x4c\x1e\x57\x56\x63\xf2\x15\x06\xc7\x6c\x7e\x23\x64\x6e\xd9\xa2\x62\x36\x4e\x84\x00\x92\xdf\xab\xb0\xc4\xb3\x02\xe4\x1d\xff\xed\x4d\x59\xf9\x98\x0b\xfc\x18\x0e\xed\xb7\x02\x46\xf7\x00\xb5\x92\x5d\x96\xe1\x67\xf6\x01\xae\x76\x72\x46\x0d\x66\x1f\x3a\xc8\x18\x81\x4a\xae\x96\x2e\x22\x91\xe2\xf2\x87\x92\x66\xf5\x20\x04\xf7\xca\x35\x5a\xa2\xea\x77\x3c\x4b\x13\xaa\x9c\x97\x17\x86\x69\x6a\x89\xbb\x47\x81\x10\x24\x54\x84\xd3\x5e\xed\x91\xc6\xab\xca\x82\x2a\xc3\x93\x32\xa3\xca\x47\x8e\xb7\x0a\x14\xd8\x0a\xd1\x0a\x69\x46\x2c\x91\x22\xed\xa2\x00\xdc\x34\xfb\x36\xef\x5a\x0b\xa6\xb8\x44\xef\x62\x9e\xb3\x26\x92\x1e\xd5\x6d\xda\x72\xe2\x4f\x75\x38\x62\x35\xcb\x07\xc4\x66\x7a\x86\xc7\xa7\x42\x2a\x96\x1e\x47\xe4\x31\x9c\x8a\x01\x79\xb3\xf0\x66\x16\x30\xb9\xb8\xe8\x0a\xcd\x8c\x0f\x84\xf1\x28\xeb\x80\x5d\x1d\xa8\x89\x54\x10\x9c\x72\x94\x4a\x8c\xc8\x98\xf3\xc4\x1c\x0f\xc8\xff\x65\x4a\xc2\xc6\x0b\x36\xa5\x86\xcf\x03\x37\x0d\x8a\xab\x62\xd4\xdd\xe0\xbf\x22\x47\xd0\x8d\xf0\x3c\x67\x29\xa7\x86\x65\x8b\x63\xd4\x63\x19\xd1\x0b\x6d\x58\xde\x66\xeb\xda\x18\x0d\xd0\xd7\x0e\xda\xfe\xea\xeb\x0d\x2d\xbb\xc6\x50\x7d\xf6\x51\x29\x15\x64\xd0\x87\xa0\xb1\x85\x81\x07\xc9\x0d\xe2\x66\xec\x83\xe0\x02\x9b\xbd\x64\x19\x6f\xf0\xf7\x16\x0f\x28\x51\x0c\x32\x10\x38\xcc\xbd\x27\x8e\xa3\x37\xe5\x7b\x59\x8a\xf5\x26\xc1\xda\xc2\xdf\x39\x25\xfc\x73\xd4\x71\x6d\x94\xe2\xa3\x88\x09\xd1\x4c\x22\x13\x25\x25\x60\x97\x04\x76\x6e\xc9\x03\xb6\xaa\x3c\x51\xb6\x4e\x72\xaf\x11\x89\x30\x97\x2d\x5e\xef\x7b\x89\x5b\x0c\x1f\xea\x80\xcb\xe0\x20\xee\x00\xd3\x88\xdb\x33\x8e\x1c\x00\x7e\x22\x04\x2b\x04\x85\x6f\xb1\xd4\x7b\xb1\x59\x6a\xe0\xba\x92\xc3\xd3\xc3\xbd\x10\x5f\x5c\x8e\x92\x05\x9d\xc2\x79\xea\xb0\xaa\x66\x57\x92\x32\xc3\x54\x0e\x01\xd7\x33\x79\x87\xbf\x23\xdb\x2a\x5c\x2b\x96\x56\xb1\xed\x33\xa9\x81\x2b\xd5\x83\x18\xe1\xfc\xc2\xc5\xe8\x1d\x5d\x10\xaa\x64\x29\x52\x27\x35\x05\x02\xfa\xbe\xf1\xe1\x2b\x29\x80\x52\x94\xda\xc2\xea\xa6\x46\xa5\xc7\xcc\x50\x7b\x6c\x5e\x0f\x5e\xbf\xda\x0b\xc0\x3a\xc6\xad\xc2\x6c\x1a\x96\x42\x7f\x57\xee\xcf\xcc\x5e\xe6\xa5\x18\x4d\x3f\x88\xac\x8b\x2c\xf7\x1e\xd1\x0b\xba\xf6\x41\x09\xe3\x13\xb0\xdd\xf6\xf0\xd5\x9d\xe2\x86\x45\xe4\xf1\x68\x42\x33\xcd\xac\xea\x5e\x8a\x20\xc2\x1e\xd7\x45\x10\x68\xd2\x66\x41\xdb\xfd\x41\x74\x39\xbe\xe7\x39\x73\x07\x0a\x50\xae\x3a\x66\x01\xe1\x0e\xf5\x86\x23\x57\x0f\xee\x24\x47\xd8\xd2\x4a\x6c\x52\x9a\xe3\xfd\x38\x89\xe0\x02\xad\x66\xdd\x45\x25\xf1\x71\xc3\xc5\x1e\x57\xfb\x86\xcd\xe8\x9c\x69\xa2\x79\xce\x33\xaa\x32\x88\x15\x1c\xe1\xfc\xc8\xb8\x34\xab\x23\xd0\xbb\x45\x37\xc7\x33\x89\x86\xdb\x0a\x6a\x3f\x0f\x0b\x27\xa0\x11\x7e\x5e\xf6\x3b\x79\x69\x4a\x9a\x65\x0b\xc2\xbe\x24\x59\xa9\xf9\xfc\xbe\xa7\xc9\x45\x3f\xec\xc0\xaa\x9b\x5c\xba\x90\xe9\xa8\x60\xc9\x63\xf2\xe8\xba\x86\x61\x49\x55\xea\x37\x1d\x78\x32\x2a\xfb\xa0\xb9\x2f\xc0\xf3\x29\x49\x98\xd6\xde\xa7\x72\x11\xfb\x79\x86\x35\xfc\x58\x12\x0a\xd0\x3b\x7d\x99\x51\x6d\x78\xf2\x26\x93\xc9\xed\xc8\x48\xd5\x29\x66\xff\xec\xbb\xd1\x52\xff\x46\x1a\x86\xb3\xef\x46\xe4\x82\xeb\xdb\x38\xb1\x0b\x5e\x9a\xc6\xe6\x12\x4a\x6e\xcb\x31\xcb\x98\x39\x3c\xd4\xc8\xe5\x72\x9a\xcc\xb8\x60\x9e\xc1\x89\x10\x92\xe2\x14\x3e\x0b\xe5\xae\x77\xa6\x2e\xf0\xe9\xc4\xe1\xeb\xcf\xe8\x9d\x66\x38\xfd\xb1\x9d\xbe\xfd\x99\xb5\x89\x48\xdf\xeb\x3d\x05\x4e\x66\x78\xb1\xa7\x3b\x88\x89\xbe\xb1\x73\xec\x66\xdc\x3e\x7c\xcb\x33\x86\x3a\x0e\x2c\xd1\x7b\xa5\xb9\x73\x00\x3b\xb6\x90\x25\xb9\xa3\xa8\x15\x03\x0d\x1c\x90\x1b\x5e\x9c\x92\x4b\xa1\x4b\xc5\x2a\x7b\xc6\xa4\x31\x14\xd7\x55\x64\x99\x57\xa7\x60\x87\x51\xe5\xb0\x94\xce\x69\x57\xe4\xf2\x0b\xcd\x8b\x8c\xe9\x53\x72\xc0\xbe\x98\xaf\x0f\x7a\xe4\xe0\xcb\x44\xdb\xff\x09\x33\xd1\x07\x03\x32\xcc\xc3\x3d\x3b\xa4\xfe\x51\xcc\xbb\x3e\x61\x07\xcb\x8c\x23\x3e\xfb\x20\x08\xe2\xdc\xe8\xac\xb4\x96\x4a\x72\x87\x19\x28\x2c\x89\x67\x4a\x49\x15\x3c\xcf\x23\x30\x00\x77\x49\x64\x5e\x28\x99\xf3\xc8\xb0\x07\x08\xbe\x57\xff\x3a\x30\x37\x6c\x17\x49\x97\xf7\x1f\x73\xba\xb9\xce\xa4\xce\x1c\xd7\xed\xfe\x70\xe2\x3d\x26\x50\x55\x74\xba\x3b\xe8\x9f\xae\x91\xdd\x6f\x37\x8a\xa5\x56\xf1\x0e\xbf\x0d\x51\x73\xe4\x24\x65\xf3\x13\x9d\xd2\xd7\x3d\xf8\x8c\x76\xde\x7e\xa6\x36\x27\xaa\xc9\xc1\xeb\x83\x01\x19\x79\x6e\xdb\x8b\xe7\x58\xb5\x9b\x48\x15\x06\x04\x63\xfa\xab\x03\x72\x24\x15\x8c\x9c\x50\x41\x32\x46\xe7\xce\x80\x8c\x67\x6a\x81\x3a\xed\x71\xeb\xa8\xc7\xb6\x01\x60\x91\x96\xff\x9f\xbf\xdc\xd2\xba\x9d\x24\xba\xbc\x6f\xde\x33\xf2\xc0\x8a\xa0\x07\x20\x4c\x4a\x4b\x63\x2d\xd5\xb4\x6c\x15\xd2\x6a\xb9\xb1\xab\x05\x73\xb1\xa4\x29\xe3\x00\x1b\x37\xf5\x00\xe4\xd4\x83\x27\xa0\xba\xa4\x63\x7c\xbd\x27\xa9\x5d\xa1\xf9\x49\xf0\x1f\x4a\x46\x86\x17\x21\xb2\x9e\x29\xcd\xb5\xb1\xa7\x3b\xad\xf1\x30\x8e\x8c\xed\xe8\x2c\xa7\x7f\x97\x82\x5c\xbe\x19\xb9\x8f\x1e\x3f\x29\x78\xb6\x12\x09\xfa\xf7\x52\x31\xcb\x8e\xbb\x38\x0c\xf8\x3e\x4d\xce\x6e\xdf\x93\x0b\x6a\x28\x32\x78\xe7\x72\x25\x2a\x0a\x6f\xb1\x70\xcc\x45\xea\x7e\x8a\x38\xf7\x63\x33\x59\xbb\x7b\x57\x9b\xe4\xa5\xb8\xe1\xa7\x8f\xc3\x3d\x31\xe3\x04\x68\xfc\xf4\xbd\x4c\x3b\x73\xe4\x3f\x58\x00\x9e\x63\x7f\x92\xdb\x01\x88\xd5\xd9\x7b\x70\x9c\x89\x3d\xcf\xee\x9f\xdf\x59\x8d\xb3\x35\xf1\x6a\xc5\x46\x3c\xb4\x3a\xce\xf9\x26\xd2\xd3\x81\x76\x58\xd4\x80\x73\xe3\x18\xca\x38\x93\x63\xe2\xf0\x7d\xdf\xf3\xfd\xf4\x71\xb8\xc3\x74\x3f\x7d\x1c\x3e\xee\x54\x77\x12\xcf\x9a\xd2\x59\xc5\x83\xab\x70\x8c\xa6\xd8\xd5\x5e\xe6\x1a\xec\x4b\xda\xda\x27\x9c\x56\x65\x95\xdc\x02\xa5\xc3\xcb\x2f\x05\x3a\x9f\x39\x23\xff\x68\x46\x21\x8e\x39\x44\xd7\xc1\xa6\xda\x5d\xd6\x96\xb2\xfb\xed\xb5\x1a\x1d\xd0\x27\x72\xc1\xf0\xca\x32\x3d\xf5\x8e\x00\xa1\xc7\xea\x0e\xef\xc1\xed\x32\x3d\x45\xba\x4a\xd0\x0b\x33\x8d\xb0\xe9\x08\x4d\x44\x22\xfc\x44\xe7\x94\x67\x74\xcc\x33\x6e\x16\x96\x43\x1f\x0f\x6a\xae\xa5\x1a\xa6\xbc\xd7\xc3\xbc\xa3\x68\xb1\x64\xa0\x22\x47\x76\xa4\x13\x30\x70\x1d\x0f\x2a\xa9\x62\xc6\x94\x0b\x42\x44\xd1\xa3\x26\x72\x68\x66\x00\xdb\x1a\x12\x47\x5b\x54\xd9\xce\xee\x01\xf0\xf6\x7c\x74\x65\x68\xb6\xcf\x4a\x86\x06\x3f\x8c\x5c\x4e\xb8\xe7\xcc\xd3\x30\x5e\xaa\x15\x57\x03\xb4\xda\xda\xb2\x3d\x5f\xfb\x69\xe3\x14\x09\xc1\x68\x3b\x30\x41\x3b\x55\xe1\x98\xa0\x8f\xaf\xaf\xb9\x51\x22\x96\x8d\x1c\x29\x71\xe9\x92\x90\x6f\x5a\xdc\xfa\xb6\x45\xaa\x80\x2e\x09\x16\xfc\xce\x77\x0d\xb9\x9a\x81\x5b\xc5\x76\xe4\x6a\x3d\x9b\x84\x15\xb3\x49\x97\x7b\xea\x73\x56\xcc\xde\x8e\xea\xe6\x39\xfb\x8e\xbc\x1d\xad\x38\x97\x00\x64\x58\xad\x46\xa3\xdd\xa1\x26\x19\x9f\x30\xc3\xb7\x2c\xe1\x01\x4e\x66\x2e\x05\x37\x52\xad\x8f\x4b\x26\x9d\x4e\x9b\x1f\xae\x2b\x3f\xac\x32\x79\xbc\x77\x23\xa0\x03\x5c\x22\xb3\x8c\x25\x3e\x8f\x35\x80\xd4\x7f\x62\x95\xf2\xc2\x9c\xce\x1e\xb2\xfc\xa3\xa2\x72\x82\x1b\x7a\xf2\xf1\xf2\xec\xe2\xfd\xe5\x20\x4f\x7f\x36\x93\x77\x7d\x23\xfb\xa5\x66\x7d\xde\x22\x55\xc8\xd3\xb9\x11\xe2\x53\xb4\xca\x5c\x55\x07\xe9\x07\x1f\xc0\x48\x3e\x69\x74\x1b\x00\x53\x8e\xbf\x14\x92\xd2\xf4\x88\xa2\x2e\x48\x91\x3a\x4b\x50\x99\x65\x08\x65\xa3\x18\xeb\xc5\x2a\xf5\xc6\xd8\x8c\xce\x0b\xda\xd5\x88\x50\x2d\xea\x61\x09\xf4\xe3\x23\x57\x17\x5a\xbf\x5d\x88\xd8\x04\xb9\x51\x18\xc3\xfb\x5f\xc0\x55\x93\x91\xe0\x9f\x05\xfe\xb6\x13\xa9\x2c\xd6\xa8\x3a\x06\x30\x93\xc0\x62\x4f\x4a\xcd\xd4\xc0\x71\x8c\x47\x07\x54\x87\x64\x3d\x3b\xe4\x48\x6b\x82\xe9\x23\x9b\xa0\x43\xb2\xcf\x99\xeb\xa4\x28\x5a\x9a\x19\x13\xc6\xa7\x1c\x77\xc0\x58\x09\x37\xe7\xe1\xfc\xe8\x80\x6a\x99\x1e\xa8\x5b\x32\x9f\x97\x04\x38\x5d\xd0\xd0\x1e\x94\x7b\xd1\xed\x10\x1d\xa5\x68\x2a\xc1\x05\x02\x73\xba\xd5\x10\x8c\xa6\x39\x17\xcf\xf0\x20\x26\x5c\xa4\xdb\xd6\xdf\x48\x5c\x07\x3d\xea\x72\x14\x8e\xe2\xad\xe7\xe1\x26\x8e\x7a\xbd\x06\x43\xc8\xdd\x9d\x5c\xfd\x46\xae\xd5\xa1\xcb\x17\xfa\x87\xac\x8f\x5f\xe9\x17\x69\x05\x95\x97\xeb\xb5\xfd\x1b\x70\x1e\xe1\xd2\x6c\x4f\xfb\x4b\xfe\xfd\x04\x9a\x7b\x43\xaa\x8b\x0c\x73\x2f\xde\x0c\x55\x53\xb4\x0f\xda\xc2\x8c\x60\x58\x7e\xc5\xe9\xae\x16\x04\x05\x55\x34\x67\x86\x29\x74\x1d\x73\xce\x68\xc2\x79\xf5\x7f\x28\x98\x18\x19\x9a\xdc\xee\x3b\x85\xe8\x0b\x3f\x7d\x38\x7e\xba\xeb\x6d\x99\x77\x92\x49\x03\x26\xb8\x84\x42\x8b\xf8\x66\x96\x0b\xc7\x6c\x9e\x09\x5d\x09\x79\xbc\xba\x58\x22\x42\x1e\xa7\x3a\x13\xad\xf2\x7a\xa1\xf1\x01\x5c\xc4\x42\x62\x3a\x70\x7d\x47\x28\xec\x87\xe9\xb5\x3f\x04\x4e\x8e\xd9\xe5\xde\xa9\xa2\x07\xb9\x4c\x19\x19\x73\x53\x9d\x74\xcd\x0c\x29\x98\xca\xb9\x0b\x80\x96\x02\x6b\xf0\xb1\x14\xb9\x97\xe5\x54\xee\xd3\x11\x67\x13\x44\x26\xc6\x17\xb9\x22\x63\x66\xee\x18\x13\xe4\xd5\xab\x57\xaf\x40\xde\x78\xf5\xeb\x5f\xff\x9a\x40\xc6\x85\x94\x25\x3c\x5f\x6e\x08\xad\xfe\xeb\xf5\xeb\x01\xf9\xe3\xd9\xfb\x77\xe0\x7f\x55\x18\x4d\xc6\xd2\xcc\xdc\xc8\xb6\x41\xad\xb3\xee\x91\xff\x19\x7d\xb8\xf2\x62\x82\x6e\xfc\x0a\x2a\x45\x58\x5e\xdd\x99\xee\xd5\xaf\xbe\xfe\x7a\x40\x2e\xb8\x82\xc8\x5b\x0e\xb1\x02\xc1\x5d\xb0\xf0\x2e\x74\x42\x9a\xe5\x58\x77\xc7\x26\x9c\x3b\x6d\xce\xa7\x33\x83\xd5\x92\x00\x53\x32\x9e\x18\xcc\xbe\x87\x87\x1d\x73\x21\x69\x17\x4a\xe2\x02\xa3\x9c\xe3\x08\x4c\xae\x47\x32\x7e\xcb\xc8\x44\x7f\xa3\x64\x59\x54\x01\x81\x8a\x69\x2b\xa3\xba\x5a\x4c\x38\x58\xb5\x57\x9a\x99\x27\xf5\x64\x68\x69\xa9\xa9\x21\xdd\xb0\x26\x80\xf4\x42\xfe\xb1\x3e\x62\x42\x41\x79\x70\xae\x83\xeb\xe6\x5a\xf6\xfb\xa0\x45\xa6\xd1\x39\xf5\xf1\x1d\x85\x92\xdf\xe3\x26\x71\xe1\x23\x85\x9c\xcc\xab\x9d\xcc\xe5\x02\x33\xc1\x66\xcb\xeb\x91\xeb\x96\xef\xb9\xa8\xf8\x28\xc6\x68\x38\x89\x83\xd1\x20\x74\x9b\x6b\xfb\x89\x5a\x72\xc8\x15\x5f\x8e\xcb\x13\x9a\x99\xc6\x1d\x2d\xc5\x52\x6f\x57\x6b\xc4\x51\x1a\x57\x81\xc6\x85\x79\x55\x63\xa0\xbb\xaa\x0b\x92\x89\xea\x1a\xd5\x12\xb6\xd5\x9c\x64\x34\x33\xa5\x03\x0d\xf8\x2a\xd9\x6f\x33\xad\x5d\xac\x4d\x4e\xd5\xad\x15\xfb\xdd\xf9\x1f\x80\x67\xb0\x0e\x71\x3e\x18\x74\x35\x67\xa1\x48\x5d\xec\x59\x6f\x3f\x72\x38\x18\x1c\xe2\x01\x91\x0a\xf3\x5d\x22\xb6\xdb\xf7\x4f\x14\x53\x5c\xf7\xdc\xa6\x45\x54\x82\xce\x95\xf6\xa0\x35\x8f\x60\xea\x20\xd5\x26\xcb\x6d\x27\xf1\xa5\x5b\xbe\xe0\xb6\x19\x83\xb1\x65\xd1\xa6\x6c\x41\x57\x09\xaa\x43\x82\xe1\xf5\x75\x53\xdc\x11\x68\x97\x33\xb8\x73\x0e\x5c\x82\x5e\x11\xbb\xcc\xb1\x2b\x93\x73\x41\x6c\xb5\x8a\x59\xcf\x9f\xab\x0d\x27\x18\xfe\x51\xa7\x55\x8e\x16\x44\x12\x42\x55\x9d\xaa\x8a\x05\x79\xd6\xcc\x2b\x46\x97\x6e\xd9\xd8\xbb\x30\x32\x7c\xda\x5d\x12\xe0\xb3\x74\x0e\x02\xcd\x2c\x6a\xd5\x2e\x32\x34\x00\x80\xdc\xe8\x0f\xcb\x80\xbc\x77\x34\x15\x91\x8b\x8e\xb5\xcc\x4a\x83\x5d\xab\x1f\x63\x82\x0b\x83\xfa\x94\x03\x40\x65\x43\xb3\x88\xfc\x9a\xaa\xde\x57\x3b\x4a\x8c\x4f\x87\xc3\xf8\x92\xfa\xf2\xc9\xd2\xca\x56\x19\xbb\xf5\x83\xa5\x98\x4d\x34\xef\xa2\x2a\x8d\x86\xe4\xa8\x2a\x95\xe1\xaf\xb9\x87\xc2\x30\x35\xa1\x09\x3b\x8e\x55\xa8\x50\x92\x24\x78\xd6\xf8\xd8\x80\x19\x15\x69\x86\xa2\x75\xc2\x14\xa0\x3c\xfb\xe2\x8a\xe5\xda\x4f\xa4\x8a\x43\x11\xd8\xa3\x37\xcc\xca\x83\x8c\x9a\x52\xb1\x56\x11\x46\xfb\x75\x2b\x84\x69\xec\x4b\x69\x83\xc1\xba\xba\x54\x40\x27\x2f\xa1\x8a\xe8\x58\x55\x60\x42\xa8\x22\x48\x75\xac\x96\x0e\x2c\x2a\x01\x3d\x06\x52\xb1\x90\xa5\x72\x76\x6f\x9f\x5b\x34\x91\xca\x2a\x42\x38\x30\xd5\x44\xb1\xa9\x95\x56\x15\x88\xb5\xd8\x22\x2b\xed\x8b\xbd\x3a\x7f\xed\xd9\x49\x6e\x93\x8b\xdb\xc4\x89\xcf\x72\xce\x53\xcf\x22\xe1\x6e\xa9\x2a\xf1\x57\x50\x1d\xc5\x9d\x44\xe9\xd8\x23\x08\xa3\x30\x0e\x8c\x34\x44\x74\xd6\xfc\xa7\x63\xeb\xae\x84\x44\x0f\x2d\x6a\x29\x74\x21\xc2\x32\x65\xd7\xe5\x38\xe3\x7a\x36\xda\xd1\x14\x78\xb5\x62\x08\x74\x18\x58\xba\xa8\x5b\x6b\x1e\xd4\x4c\x68\x0e\x2c\xcf\x92\x71\xcb\x6c\xa1\x76\xb0\x04\x20\xfa\xde\x31\x66\x4a\x08\x8c\xc8\x98\x0b\xe7\xb7\x3f\x45\xf3\x70\x11\x5a\x98\xc0\x23\x65\x9f\x44\x51\x7b\x9f\xd0\x2c\xd3\xcd\xe8\x55\x4f\x68\x51\xe6\xf0\x51\x5b\xb8\xa7\xdc\x6e\x77\x28\x13\xd2\x48\x05\xb9\x76\x61\x9a\xe4\x12\x23\x5c\x04\x91\xc2\x37\x82\x3c\x24\xbe\x43\x14\xd5\x07\xb1\xbb\x80\x32\x7b\xae\xa3\xf8\x62\x03\x7d\x38\x1b\xe8\x8e\x37\x0d\x55\x25\x25\x1a\x45\x04\xd7\x4b\x3d\x7b\x52\xea\x49\xee\x96\x2b\x89\xbd\xde\x0a\xe0\x37\xcf\x0c\x96\x27\xef\x9c\xf3\xec\x73\xa3\x3b\xb0\x69\xab\x77\xc0\xe1\xed\x3b\xcd\x22\x89\x30\xd3\x29\x04\xe1\x08\x2c\x1f\xf9\x8a\xe7\x00\xbb\xc1\x97\x87\x9a\xa4\x32\x29\x43\x6e\x54\x00\x5a\x75\x01\xd6\x26\x83\x20\xe9\x7a\x9c\xba\xa7\xb5\x8a\x3f\xb2\x15\xab\x52\x79\x27\xee\xa8\x4a\xcf\xae\xb7\xf8\xa5\xd7\xd9\x79\xd5\x2b\x16\x94\xfc\x60\x50\x09\x8f\x8e\x65\x69\xaa\xf4\x99\x3f\x6d\xd3\xb3\x91\x96\x22\xb4\xb4\x34\x93\x17\xe3\xf5\x8b\xf1\xba\xf9\x3c\xb8\xf1\xda\xf6\xa9\xe7\x82\xad\x1d\x57\x9f\x62\x80\x67\x6d\x5d\x69\x1f\xd2\x0a\x1a\x11\x18\xa4\xee\x4d\x3f\xf8\x86\xdc\x86\x47\xa4\xda\xdb\x48\xd6\xf3\x14\x08\x58\xf5\xd3\x5b\x4c\x1f\xc8\x0e\xda\xbe\x56\x2f\x3e\xeb\x5c\x70\x37\xd5\xee\x05\xa9\x21\x2a\xb6\xdb\x73\x99\x90\x7b\x4e\xef\x12\x69\x55\xc6\x0e\x13\x31\x77\x28\xd5\x89\x4f\x47\xe0\x93\xce\x1b\x40\x3a\x16\xd2\xc5\xa7\xeb\x6e\x90\x1d\x8a\xea\xe2\xf3\xc4\xa5\x75\xf1\xe9\x6c\xe2\x26\xdd\xcb\xec\xae\x58\xee\xc3\x16\xdb\xdd\x71\x69\x8f\x6f\xbd\xef\x55\x25\xde\x9e\x3f\x5b\x7f\xb1\xde\x2f\x3d\x8f\x68\xbd\x8f\x08\xb7\x27\x06\x0e\x00\xb1\x45\x3f\x36\xb7\x79\xb3\xfe\x98\x79\xb1\x72\x50\x65\x20\xb3\x28\xe7\x0d\xfa\x52\xd5\xaf\x4d\x0f\x07\x83\xc3\x43\x6f\xe6\x77\xf8\x59\x9a\x49\xff\x37\x84\x89\x44\xa6\xb8\xa9\x76\x7c\xa5\x0d\x30\xfd\x4a\x3b\x8f\xe7\x92\xfb\x6f\xc5\x57\xaf\x30\x76\xb7\x2d\xe9\x70\x82\xbb\x97\xce\x5e\x05\xe9\xc7\x28\xa0\x1d\x97\xc9\xae\x57\xc5\xc6\x16\xf7\x29\x85\x1d\x03\xef\xc1\xf9\x6b\xeb\xe2\xd8\xf8\xec\xc2\x5e\x77\x28\x94\x8d\xcf\x23\x97\xcb\xc6\x67\x27\x8e\xda\xa9\x74\xf6\x8a\xc5\x3d\x5e\x01\x6d\x7c\x9e\x69\x31\x95\xfa\xd3\xa9\x98\x36\x3e\xbb\x95\xd4\xae\xf7\xed\xb8\xf5\x7b\x29\xaf\x8d\x4f\xb7\x22\xdb\xf8\xec\xbb\xd4\x36\x3e\x2d\x21\x01\x36\xf0\x0b\xde\x29\x78\xe0\xd2\xf5\xa9\x7b\x3e\x1a\x96\x17\x52\x51\xb5\x20\xa9\xb3\x35\x2c\x56\x04\x60\x46\x11\x98\xf7\xce\x8a\x02\x73\x4f\xb9\xda\x53\xfc\x40\x87\xe0\x4b\x96\xf2\x72\x6d\xc9\xe2\x75\x60\xfb\x0e\xb2\x61\xb9\x4c\x5a\xfe\x72\x13\x87\x0a\xa9\x04\x69\x72\xeb\x6a\xe4\x78\x18\x22\xa7\x8f\x53\xee\x1c\x34\x32\x1f\x83\x31\x0c\x6e\xfa\x5c\x2d\x40\xdf\x18\xc7\xae\x19\xae\xf0\xca\xc3\xdd\xfd\x1f\xb9\x86\xc7\x56\xfe\x78\x0f\x4c\xef\x91\xf6\x84\x74\x0c\x32\xe3\x7f\x67\x50\x60\xab\x73\x0a\x2b\x09\x62\x77\x28\xfc\x95\xc9\x24\xba\x58\xae\xb1\x1f\x80\x7a\xc0\x6c\x6f\x98\xb7\xb0\xb7\x5f\x47\xe1\x01\x2c\x3a\x99\xc6\xbb\x3a\x9e\x40\xee\x46\x10\xd1\x01\x76\x01\xde\x37\x51\x19\xbc\x52\xdb\x2f\x41\x6a\xf5\xa8\x4d\xf5\xa1\x3b\x9f\x42\xd2\x44\x95\xca\xea\x8a\x85\xfd\x65\xe4\x21\x10\x29\x65\x10\x9e\xe0\xa5\x70\x5d\x82\x0c\xe8\xbe\xe2\x64\x21\x39\x81\xfb\xa8\xaa\xee\x57\xc8\x5e\xb8\x84\x55\x82\x67\x75\xb4\xf2\xa9\xdb\xc2\xc2\x4b\xe1\xbc\x08\x96\x70\x64\x35\x8a\x94\x9a\xa9\xfe\xb4\xe4\xe9\x2e\xc8\xf1\x8c\xb9\x5b\x6b\x9e\xd6\x9d\x93\x75\xe4\x5f\xf7\xe0\x5a\xc1\xcb\xa2\x03\xdd\x3f\xb8\x0c\xae\x19\x35\xc2\x1f\xa7\x84\xab\xbb\x69\x50\xef\x09\x10\x8e\x9c\xbf\xef\xb9\x09\x7a\xab\x63\x08\xc9\x22\x71\x61\xb2\xbc\x96\xcf\x11\x87\x45\xcc\x03\xaf\xd4\xbe\xfd\x8f\xd7\x6f\xbd\xb1\x7e\xcc\x26\xb2\x2a\x01\x82\xea\x8e\xf3\xa5\x4d\x59\xc6\xa0\x4e\xba\xaf\xc1\x6e\x1b\xc0\x35\x6f\x2e\xe7\x16\x99\xff\x2c\xc8\x27\x9f\x94\x9e\x4f\x4e\x09\x3d\xae\x85\x2a\xb8\xb2\x2a\x82\xb1\x14\x1d\x6c\xb3\xea\x3b\xaa\x14\xba\x47\xc6\xc7\xde\xd9\x04\x4e\x9c\xb0\x32\x5f\xe6\xc5\x59\x54\x9a\x15\xb3\x00\x80\x80\x5f\x25\x73\xa2\x05\x2d\xf4\x4c\x42\x75\xfd\x84\x16\x34\xe1\x66\x61\xc1\x6d\x14\x4d\x6e\xa1\x0c\x8f\x62\xee\x8b\x3d\x92\x1c\x3b\x7f\xad\x18\x82\x75\xb7\x5f\x33\x53\xb2\x9c\xce\xc0\x93\x15\x5b\x25\x19\xd5\x1e\x00\x2b\xfb\x3b\x6d\x46\x93\x74\x21\x68\xce\x93\x90\x34\x4f\xc9\x39\xd7\x5c\x3a\x6b\x2e\x8e\x6b\xb1\x9e\x5c\x87\xbc\x67\x68\x24\x3e\xcf\x28\xcf\xc9\x91\x66\x8c\x04\xc4\xc0\x5f\x5c\xb5\x76\x34\x5e\x28\x66\xbb\xc7\x16\x64\x19\x92\x77\x0b\x97\x71\xa0\xa2\x74\xe1\x8a\x0a\x19\x25\x1c\xb7\x74\xf5\xa7\x8f\xc3\xd6\xad\x9e\x99\x54\x70\x31\xef\xb3\x56\x32\x91\xca\xe8\x7a\xf2\xec\x7a\xa8\x63\xb5\x03\xf1\xcc\xe5\x76\x83\x1f\x32\x29\xa6\x71\xc8\x7e\x85\xa5\x96\xac\x0a\xa8\x65\x32\xe7\x69\x49\x33\x24\xa8\x6e\x32\xe7\xa3\x21\x76\xe7\xd3\x99\xe9\xdf\x31\x30\xbb\x20\xdf\xa9\x5c\x9b\xfc\x47\xf9\x92\x5b\x0e\xd7\x40\x80\x8d\x33\x1b\xa0\x09\xcb\x4e\xed\x8e\x2e\x20\xbf\x8b\x73\x21\xa9\xdd\x8c\xfa\xdc\x5a\x38\x44\x80\x7b\x04\x74\x98\xde\x59\xa8\x4d\x61\x25\x06\xb0\x4b\x59\x28\x03\xd6\x2e\xcf\xcd\x02\x3e\xca\x75\x17\x5e\xbb\x32\x64\xd4\xee\x11\x48\x71\x7f\x16\x68\x61\x82\xeb\x8e\x71\xe4\x7b\x05\x43\xa0\x1d\x1b\x33\x1c\x81\x63\xbd\x3b\x86\xdf\x30\xc1\x14\x4f\x1a\xa8\x13\xba\x4e\xa9\x81\xc3\xc7\x84\xed\x96\x0e\x36\xab\x46\x0f\x20\xe3\xcd\x2b\x54\xba\x71\xd5\x08\x3b\x4a\x1f\x07\xdf\x45\x56\xb8\xe8\xde\xc4\x9e\x52\x2a\xd2\x3e\xcd\x2c\x7e\x5e\x7f\x3e\x77\x7e\xd1\x78\xee\x6a\x7e\x01\xbe\xb0\x10\x17\x21\x13\xb5\x95\x52\x56\x1e\x37\x08\x80\x1f\xb3\x14\xc8\x54\x5c\x83\xf1\xce\x2a\xdc\x0e\x45\xae\x3f\x9f\xf7\x08\x1f\xb0\x81\xff\x2b\x34\xf5\x74\xd2\xc8\x29\x7a\x15\x06\x4f\x51\xc0\x6e\x98\x4a\x6c\xdb\x8a\xfb\xfe\xed\xb7\x76\x92\xf6\xd7\xdf\xf5\x7f\x1b\xe5\xf6\xfc\xdd\xdf\xec\x7e\x2b\xdb\xa0\xfe\x36\x76\x4d\x0b\x89\xec\xff\x76\xed\x12\x3d\xbb\x34\xd0\x7f\x73\xf5\xad\x98\x30\x56\x30\xbd\x96\x70\xe9\xcf\x53\xc4\x79\xf8\xb6\x62\xdf\x7b\x3b\x25\x80\x29\xd8\x88\x12\x6a\x98\x00\xd6\xe0\x63\x38\x84\x34\xd8\xdd\x95\x72\xb5\xf3\x3f\x02\x0b\x03\x86\x9b\xf5\x88\x91\x12\x0e\x3d\x12\x96\x33\x41\x98\x2f\x7f\x89\x6b\x05\x70\x50\xe7\xf7\xe6\xb9\x9d\x1d\xd6\x42\x38\x44\xe4\xda\x79\xc0\xdc\x7e\x21\xa4\xf9\x45\xd8\xfe\x46\x61\x6e\x3a\x97\xdc\xe7\xf4\xb6\xe7\x51\x60\x91\xc4\x90\x65\x7a\xbc\x20\x39\xd7\x86\xde\xb2\x01\x19\x59\x6e\x16\x5f\xae\x21\xf4\x04\x81\x5c\x90\x2c\x25\xa5\x30\x3c\x83\x5f\xab\x71\xec\x94\x63\x2e\x37\x9c\x10\x5d\x42\xc5\xf0\x42\xb1\xbe\xe7\x9b\xae\xd5\x12\xc5\xa9\xd6\xd2\x0b\x9b\x3d\xa3\xa8\x6c\x14\x29\x74\x05\x78\x50\xe1\xd0\x6b\xc9\x1b\xcc\xce\x53\x8a\xa4\xe2\x95\x00\x4c\x3d\x20\x57\xc0\x1e\x33\x7f\xc3\x8c\x7a\x8f\xb3\x87\x0a\x96\x30\xad\xa9\x5a\xf4\x20\x57\x3a\x0f\xf9\xb5\x9d\x03\x10\x10\x8f\x9c\x0a\xcc\x54\xae\x58\x22\x85\x36\xaa\x4c\x0c\x96\xae\x1b\x2b\x79\xcb\x44\xf0\x3e\x0c\x84\x29\xb8\x81\x55\xee\x38\x70\x7d\x26\x49\x32\xa3\x62\x1a\x95\x7e\xc9\x69\x0a\xb0\xff\x36\xc8\x55\x7e\x3d\x16\x02\x74\x62\x45\x19\x6e\x00\x14\x63\xcb\xb0\x82\x55\xf7\xcf\x82\x78\xc5\xbd\x57\x99\x5d\xed\x92\x78\xb6\x85\x76\x75\xa2\x5f\xa4\xa3\x8d\xb0\x0f\x52\xc2\x9e\xdd\xc8\x72\x66\x68\x4a\x0d\xdd\xc1\x95\xec\x7d\x55\xaf\xce\x97\xac\xc7\x9a\xa1\xe1\x9e\xd3\x71\x3b\x2f\xe0\xc9\x82\xc7\xe1\x52\x70\x12\x67\x1e\xf2\x10\x7f\x6d\x2c\x4e\xb9\x7b\x07\xf4\x10\x03\xf1\xc9\x17\x04\xb3\xc3\xfb\xd1\x90\x5c\x54\xd5\x0e\x2b\x72\xd2\xee\x56\xab\xa3\x41\xd7\x82\x7e\x07\x18\xdd\x54\x57\x6f\x49\xdd\x5d\x6c\xa5\xa0\x83\x5c\x82\x09\xc3\x15\x8b\xa3\xd3\x1c\xe8\x4a\x81\x48\xde\x00\x22\x40\x79\xca\x8c\xae\x1c\x5e\x90\x0e\x5b\xe2\xe2\xf8\x9d\x53\x7f\x81\x48\x3b\xc0\x3a\x0d\x72\xb5\xc4\x85\x60\xd7\xd2\xd1\x59\x4b\xf9\x1f\x04\xae\xbb\xd8\xb0\x31\x43\xff\x7b\x99\x76\x31\x7b\x37\x12\xdb\x57\x43\x54\x5e\xa0\xe8\xcf\xab\xc1\x8c\x80\xdf\x80\xcb\x2f\x5d\x8b\xb1\x43\x22\x37\xa3\xf3\xdd\x6d\x5e\x95\x24\xd6\x0f\x49\x81\xe1\x73\x7d\xf8\x5c\xff\x75\x7b\xdb\x60\x17\x87\x12\xff\xb4\x76\x2c\xa9\x7f\xa4\x93\x21\xd6\x92\x94\x51\x47\xeb\x69\x33\x63\x79\xa0\xf6\xee\x3a\x32\x5c\x01\xbb\x90\x09\xc6\x2d\x9d\x38\x25\xbf\xa8\xf1\x77\x27\x47\x05\xad\x0c\x3d\x7d\x8f\xbc\x9a\x36\x70\x9b\xe0\x03\xd2\xeb\xcd\x8f\x1b\x83\x81\x60\xb1\x5a\x63\xf1\x1e\xc5\x41\xd8\xb3\x82\x99\x02\xbb\x9c\x0f\x64\xb0\x88\xa5\x64\x96\x31\x05\x4b\x70\x6a\x5a\xe3\x3a\x1e\x72\x89\xa2\x71\xb8\x17\xd4\xe1\x20\x5d\x0a\x76\x17\xc4\x08\xaa\x31\x6b\x8b\xbf\x3a\x63\xae\x0a\xdd\xda\xf1\x82\xd7\xf3\x99\x58\xe0\xd4\x2f\xc2\xb6\xac\x13\xce\x7b\x71\x45\x37\x98\x0b\xcd\xee\xe8\x42\x03\xc6\x57\xda\x42\xf8\xbe\xcb\x90\x56\x0d\xfc\x91\x4d\xb0\x77\xeb\xab\xb5\x9d\x2e\xd7\x76\xb9\x5e\x83\xb8\x4b\x2e\xda\xf8\x32\x55\x1d\x36\x56\xe1\x68\x3e\xbb\xdc\xc7\x81\xc3\x0b\xdc\xc3\x77\xbb\x5c\xa9\xa7\x3c\xbd\x1e\xc2\x10\x5e\x1a\x9f\xc2\x1f\x9e\xd7\x84\xdb\x87\x31\xb3\x58\x5d\x45\x54\x03\x86\xc4\x7d\x57\xb8\x24\x54\xa8\xf5\x2d\xa4\x45\x75\x06\xe8\x50\xb6\x4b\x31\x70\x29\x81\x2f\x0e\x20\xed\x3f\x15\x0b\xc7\xc3\xcd\x8c\xab\xb4\x5f\x50\x65\x16\xa8\x9e\xf6\x6a\x5f\x0b\xee\xf9\x9d\x16\xbe\xe3\xbd\x50\xbb\x8c\xc3\x6b\x21\x0c\x8b\xf7\xa5\xf7\x9c\xe1\x7f\x2d\x5c\x1f\x63\x3d\xed\x03\x00\x56\xae\xe7\x2a\x8a\x87\xf7\xba\xe0\x93\xad\x27\x8d\xc9\xc7\xae\x1c\xa3\x71\x6b\x8b\x84\x3f\xae\xfc\x24\x63\x07\xea\xc0\xd1\x41\xf9\xb1\x13\xe8\x59\x9d\x93\x56\xa5\xba\x23\xb3\xa1\x93\x0a\xbc\xfb\x8d\x2b\x14\x24\x16\xce\x18\x14\x7f\x2b\x1e\x20\x9c\x0b\x72\x24\xa4\xc0\xb3\x82\x6d\x8f\xd1\xfb\x68\x8d\xb5\x0b\x9a\xb8\x0a\x6f\xf5\x02\x9b\xd1\xd9\xf4\x6c\x81\x8b\xd4\x6e\x16\xd0\x6a\xd0\x87\x74\x99\x24\x8c\x05\x0d\x3a\xae\xf7\x52\x9d\x65\x37\x65\x5f\x29\x52\x4b\x48\xe5\xa2\x0d\xcd\xb2\x4a\x73\x75\xe0\x92\xc0\xd9\xbc\x71\x31\x62\x78\xb5\xd0\x1c\xa7\xc4\x43\x0d\x72\xf4\x98\x29\x45\x82\xb7\xff\xdc\x2c\xfc\x0c\x62\x0e\x04\xdd\x40\x65\xd0\xa8\xd0\xf2\x09\x5a\xb2\x22\xd1\x3f\x00\x13\x88\x91\xab\x80\x5e\xe7\x45\x2e\x6d\x83\xa5\x3c\x63\x9a\xdc\xde\x51\x95\x42\x25\xdc\x82\x1a\x8e\x89\xb8\x7b\xb5\x61\x8f\xa2\x39\x40\x1d\xfa\x18\xf9\x8e\x83\x82\x01\xe5\x35\x64\xe3\x33\x84\x96\x46\xe6\xd4\xf0\x04\xd4\x56\x3e\x89\xec\x92\x79\xc8\x5b\xd8\xa8\xda\x07\x74\x35\xd4\x7f\xbf\xc1\xbb\x1e\xc5\x88\xb9\x93\x84\xe7\x56\x26\xa0\x50\x80\x62\x12\x62\x8c\xbc\x11\x75\xd3\x4c\xad\xe0\xf3\x1d\x98\xb0\xa3\x56\xa8\x10\x5b\x75\x49\xc3\xf0\xc1\x46\x1a\x8c\x83\x2e\x48\xa7\xd7\x60\xd9\xc4\xf7\xb2\x58\x6d\x67\x1b\x21\x6b\xcf\x6e\xd0\x1d\xb3\xb2\x80\xde\x88\xb2\x7a\xb0\x6a\x4e\x58\x14\x56\x93\x94\xeb\x46\x65\xe7\xa3\x54\xc9\xa2\x70\xe6\x90\xfc\x78\x79\x4e\x70\x33\xa1\xe6\x4c\x47\xe5\x8b\xd1\x12\x3e\x65\x22\xd4\xdf\x76\xd9\x2e\xe0\xf4\x36\x3f\x02\x9e\x5d\x24\x4a\x7e\x76\x74\x96\x15\x33\x7a\x4c\x3e\xb9\x42\x3d\x01\x7f\x83\xdf\x5e\x2b\x89\x09\x0d\x2c\xde\xa2\xf9\x22\xea\xb4\x7c\x5e\x44\x9d\x17\x51\xe7\xdf\x5b\xd4\x09\x0e\x63\xbb\x8a\x39\x1f\x83\x97\x64\xa3\xac\xb7\xf7\x38\xa8\xdc\x28\x1f\xde\x6e\x11\xbe\xf5\xc0\x14\x70\x37\x6a\x83\xae\x13\xf7\xc0\x9c\xc3\x77\xe8\x7c\x51\x55\x78\x36\x91\x3f\x48\xe5\x8b\x62\xa5\x8d\xd2\xb0\x08\xf4\x8e\x09\x75\x86\x75\x2d\xb6\xf4\x04\xab\x8a\xf4\xc3\xb0\xfd\xca\xfd\xa3\x45\x6a\xf1\xf8\xd9\x09\xea\xe4\x1e\x61\x94\xf1\xf3\x8c\x3d\x40\x1a\x8b\xed\xee\xe3\x48\xee\xe9\xe7\x48\xee\xe3\xeb\x48\xf6\xe9\xef\x48\x82\xd7\xf4\x7d\x4e\xcc\x47\xef\xaf\xdd\x38\x33\x8e\x38\x6d\x3a\x33\xb5\x68\xfd\x30\x0e\xd7\xbe\x62\x9d\xbb\xed\x0b\x67\x00\xec\x65\xb1\xd7\xad\x3b\xad\xa0\xf8\xe0\x95\x1e\xfb\x12\x72\xe3\x46\xbc\xbe\x2a\xdf\x6c\x24\x5c\xff\xe7\x05\xa6\xd9\x81\x53\xd7\x77\xbe\x51\x5e\xb1\x78\x39\xc1\x2f\x27\xb8\x6d\xff\xa7\x3c\xc1\xe8\x57\xdc\xc5\xed\xbd\x2e\x57\xe3\x25\x1e\xf9\xa1\x64\x6a\x41\xe4\x9c\x45\xfe\x34\x90\x04\x58\xf3\xd4\x79\xa4\x38\x9b\x43\x7b\x59\xf6\x11\x79\x3e\x58\x34\x2e\xbf\x58\xc9\x08\x22\xc4\xee\x41\xcb\x9a\x43\xd5\x83\x80\x11\x5a\x1e\xe8\x9e\x78\x59\x2a\xa2\x07\x2e\x3b\x58\xf5\x06\xf4\xfd\xb3\xab\x8b\xdd\x14\x80\x6e\xf7\x3b\x64\x97\x3b\x9e\xa5\xc5\x9f\x6d\x58\x20\x02\x22\xfc\x52\xaf\x7f\x14\xb4\x74\x72\xcb\x16\x3d\x77\x25\xec\xf2\x9a\xfb\xc6\xe8\xd9\x50\x4f\xc6\xd9\x36\x09\xc4\x2a\x00\xed\x40\x15\x77\xd3\xaa\xf1\x69\x9f\xbe\xb1\xde\xcb\x03\xa1\x2b\xf1\xdd\x99\x6c\x77\x4a\xf3\x18\x3f\x35\x54\x70\xa9\x49\xc1\x71\x0e\x70\x02\x52\xda\x79\xa7\xe2\x80\x06\xe0\x48\x0d\xd4\xa2\xeb\x26\x92\xdd\x55\x43\x7c\x3c\x60\xef\xbd\xd4\x80\xa6\x35\xaf\xd8\x5b\xb6\x38\xd4\x2e\x1e\x4f\x0a\x3d\xe3\x85\xcf\xa2\x0e\x94\xc0\x61\x2e\xf9\x0c\x57\xe5\x7e\x08\x3c\xf3\x43\xd1\x23\x57\xd2\xd8\xff\x5d\x82\xd7\x0c\x1a\xf2\x24\xd3\x57\xd2\xc0\x9b\x47\x07\x16\x4e\xf7\xde\xa0\x72\x36\x3c\x0e\x16\x38\xf4\xee\x82\x58\x08\xef\x8d\x01\x20\x71\x17\x90\x01\xac\x5c\x93\xa1\x20\x52\x79\x98\x18\x9f\x76\x57\xbb\x21\xbc\xcd\x25\x32\x98\xae\x18\xc3\x81\x52\xaa\x1a\x24\x37\x0c\x17\x6c\xaf\xdc\xff\x02\x36\x19\x30\x56\x07\x17\x12\x48\x1e\x4b\x0d\x9b\xf2\x84\xe4\x4c\x4d\x21\xf2\x32\x99\xed\xbe\x41\xdd\xe9\x36\x3e\x3b\x51\xef\xf8\xc3\x9d\x31\x03\x58\xdd\x3b\x70\xe2\xb9\x2f\xc3\xc4\x51\x90\x45\xe4\xb4\xb0\x48\xf1\x0f\xcb\x09\x60\x5f\xfe\x05\xc9\x9e\xf5\x80\x9c\xf9\x0a\x9c\xf1\x6f\xce\xd0\x16\x0f\x63\x47\xb0\x72\xfc\x0f\x25\x9f\xd3\x8c\xa1\x6b\x1b\x15\x21\x2f\xa6\x9c\x2c\xb1\xe9\x9e\xcb\xf8\x6c\xa9\x54\xb8\x38\x39\xb8\x65\x8b\x83\xde\x12\x22\x1d\x0c\xc5\x41\x15\xfe\x5c\x43\x9d\xc0\xd0\xc0\xa6\x7e\x00\xbf\x1d\xec\x9b\xb3\x3f\x91\x38\xbf\x03\x96\x38\x23\xd0\x79\x46\xb5\xee\x16\x39\xba\x3e\xff\xd8\x28\x1a\xb3\x8a\xe0\x71\x0e\x8b\x09\x3a\x44\xed\xcf\x56\x05\x7e\xf4\xdd\x9d\x6b\x3a\x41\x69\xee\xca\x87\xb4\x4f\x7d\xd0\xa4\xaa\x61\x80\x10\x28\x71\x17\xc7\x9a\x55\x77\x92\x6b\xe0\xf5\x19\x6e\x3d\xe4\x24\xce\x97\xc8\x35\xa8\xb8\xdc\x87\x4e\x08\x69\x08\x17\x49\x56\xa6\x98\xe7\x11\xba\x82\x82\xdc\x55\xa4\xdf\x01\x38\xf7\x40\x9e\xcf\x61\x00\x2f\x8f\xf8\xdb\xcf\x25\x9f\xd5\xe6\x35\x15\x5c\x0d\x86\x1b\x1f\x84\xd5\xbe\xd7\x3a\xd9\xe2\x21\x58\x4f\x67\x79\x5e\x97\x31\xde\xf2\xb1\x62\xe4\x7c\x46\x85\x60\x59\x14\x2f\xea\x0c\x19\xa1\x84\x13\x08\x1e\xae\x70\xd3\x61\xbd\x72\x93\xa7\x63\x22\x44\x27\xef\xbd\x7a\xed\x8f\xbb\x90\xd2\xde\x2a\x61\xbb\xac\x86\x33\x79\x47\x52\x49\xee\x20\x97\xff\xdc\xb2\x23\xb8\x89\xd4\x9e\x91\x45\x33\x05\xdf\x80\x44\xe6\x85\x92\x39\xd7\xde\x03\xdc\x6d\xdc\x5e\x03\x2c\xb3\xb2\x45\xde\x9c\x75\x09\x57\xde\x9e\x13\x43\xd5\x94\x19\x3b\x0c\x11\x65\x3e\x66\xad\xc3\x3f\x1f\x22\x61\xd7\x73\xaf\x10\xb5\xdf\x22\x4f\x08\xfa\xef\xbe\xbb\xea\x5c\x0a\x76\xd5\x0e\xde\x49\x95\xa5\x77\x3c\xc5\x4b\x2f\x4d\x8e\xec\xc0\xc7\xcf\xbf\x6e\xeb\xdd\x1d\x4f\xef\x07\x00\xef\xd9\x63\x01\x40\x00\x02\xae\x72\x11\x87\x9c\xd2\xf0\x81\x63\x72\xc9\x31\x36\xc6\xfe\x85\x59\x5b\xf2\x31\x17\x55\x14\x56\xd8\x0c\xa0\xab\xf6\x3c\x78\x6d\x42\x33\x83\x51\x0d\x10\x18\x20\xcd\x8c\x68\x9e\x97\x99\xa1\x82\xc9\x52\x67\x8b\xd6\x68\xf1\x34\x40\x9e\x64\xec\x0b\x62\x71\x17\x7e\x15\x3a\xd5\xf9\xd6\x14\x63\xbf\x3c\xcc\x97\x18\x57\xe5\x2e\x94\x9e\x04\x26\x16\x82\x65\xd8\x17\x96\x38\xcf\xd6\x22\x2b\xa7\x7c\x8b\xf3\xfe\xbf\x59\x8a\xef\x2a\x89\x72\xa9\x59\x15\xd9\xde\xb6\x88\xc9\xd3\x65\xe4\x7e\x50\x66\x7d\xb3\x3a\xed\x76\xca\x0a\x26\x52\xc8\x08\x16\xe1\x2a\x4e\x77\xaf\xb0\x72\xd9\xb5\x76\xa7\x50\x97\x5f\x8c\xa2\x96\xdc\xe4\x10\x54\xe9\x92\x75\xf1\x09\xa1\xa2\x3d\xe9\x78\x1e\x59\x70\xc9\xbf\x1d\x8f\x7e\xf0\x22\xc9\xf7\xcb\xbd\x8e\x54\xd4\xa1\xbd\xae\x3b\xac\xae\xc8\x91\xee\xbe\x12\x7b\x96\xde\x37\x57\xba\x5e\x91\x1e\xba\x31\xab\x97\xe2\x91\x3f\x8a\xc4\xe9\x13\x88\x49\xed\x92\x4e\xe8\x2d\xf6\x68\x68\xb6\xee\x65\xb3\x18\xf1\x06\x4d\xd6\xe1\x6d\x44\xd2\x21\x77\xa7\x1b\xc8\xc5\xd5\x10\x6d\x61\x59\xb9\x70\x95\x42\x6c\x23\x56\x0f\x91\x0f\x9b\x1a\xaa\x99\x69\x67\xd5\x58\x76\x4b\xf3\x9c\x1e\x47\xc1\x04\xec\xe0\x10\xed\x03\x33\x49\xff\x77\x4e\x26\x10\xb5\x96\x56\x1a\xf0\x00\xf1\x19\x87\x58\xb8\xa6\xc5\x31\x52\xbb\x0d\x09\x35\xad\xab\xc5\xb4\xa2\xf7\x6e\x06\x9f\x3e\x75\x2e\x29\x6a\xbb\x34\x56\x3c\x08\xf9\x06\x4a\xc1\x7f\x28\x63\x49\x1d\x72\x33\x84\x35\xba\xf6\xfb\x5a\xc8\x34\x61\x95\x89\xe8\x82\xeb\xdb\x2e\x49\xb3\xbe\x39\xbf\xac\x77\xae\x23\xfc\x37\xe7\x97\xc4\xbd\x6d\x65\xc5\xe9\x62\xc6\xb9\x6f\x4e\xa7\x69\xc2\x2a\xd3\x68\xca\xf5\xed\xa3\x17\xec\x2e\xd2\xab\x6d\x7e\xc6\x8f\x6d\x65\xf2\x79\x45\xa2\xe4\x37\x0b\x59\x92\x3b\x17\x49\xef\x84\xda\x1b\x5e\x9c\x92\x4b\xa1\x4b\xc5\xaa\xdb\xcf\xa6\x7c\x6b\x39\xe9\x73\x2a\xec\x7d\x2f\xdc\x78\xce\x66\xae\x82\x2a\x03\x92\x6d\xe7\x3c\x62\x90\x2a\xdf\x75\xf6\x4b\xd8\xb2\xf5\xc3\x89\xf7\x41\xeb\xb9\x28\xe1\x90\x6c\xcb\x37\xb2\x9b\x1d\x25\xc6\x88\xb7\xf7\x6d\x48\x4d\x43\x4e\x52\x36\x3f\xd1\x29\x7d\xdd\x83\xcf\xf8\x50\x56\x53\x9b\x13\xd5\xe4\xe0\xf5\xc1\x80\x8c\x78\xce\x33\xaa\xb2\x45\x2d\x37\x70\xd5\xce\xb2\x00\x3f\x20\x5c\x66\xbd\x3a\x20\x47\x52\xc1\xc8\x09\x15\x24\x63\x3e\x4e\xc6\x1d\xa8\x05\x8a\x80\xc7\x8f\x4d\x45\xc8\x83\xda\x08\x91\xa0\x74\x45\x83\x4f\xc8\x6e\x6a\x69\x50\x2e\x2a\x8a\xcd\x85\x25\xe3\x03\xf2\x69\x55\xe9\x6b\x38\x1b\xbe\xc5\x53\x81\xf2\x41\x75\xb3\x7b\xd6\xcd\x5f\x52\xe8\x9e\x0e\x4c\xdb\xb5\xba\x29\x37\x1f\x59\x21\x3b\x09\x00\xd8\xa5\x61\x09\xe3\xc6\xbe\x90\x9a\x43\xbe\x4c\x6a\xa0\xfa\xac\x32\x3c\x29\x33\x6a\x65\x62\xb4\x83\x0d\xc8\xc5\xe5\xf5\xc7\xcb\xf3\xb3\x9b\xcb\x8b\x53\xe2\x47\xe2\xb1\xb4\x36\x20\x37\x71\x16\xa1\xc8\xe5\xd5\xa5\x6a\x09\xdf\xea\x39\xe2\x43\x45\x95\x86\x10\x72\x43\x50\x41\x86\x82\x9b\x2a\x4b\x2f\x3a\x69\x65\x52\x38\xb7\x2b\xdb\xdb\xd9\xe1\xa6\x1c\x5d\x27\x84\x1b\xcc\xfe\x5c\x1f\x0d\x4e\x07\x66\xfc\x0c\x53\xd9\xa2\xc5\x3d\x80\xe4\x50\x01\x77\x5f\xb2\xbb\x4f\xcc\xd9\xf1\x78\xdc\xa0\x81\xbd\xca\x8d\x8a\x14\x3f\xa4\x03\xf7\x59\x51\x56\x14\x4a\x26\x96\x97\x1c\x0e\x0e\xbd\xa0\x90\x2d\xa5\x7e\x0f\x83\xc6\x89\x9f\xea\xb8\x35\x20\xe4\x83\x77\x61\x86\xa8\xd5\xd5\x59\xe4\x31\x95\x40\x94\x8b\xbc\x81\xa1\xbe\x34\x40\x39\x8e\x3f\xea\x32\x45\x4d\xf9\x9c\x09\x5c\xd8\x7e\x09\x92\xff\x7c\x47\x98\x7f\xac\xe6\xfd\xe9\xe3\xbb\xfd\x4e\x09\xcf\x59\xc7\x09\x9d\xcb\x3c\xc7\xfc\x41\xb3\x10\x7d\x56\x05\x90\x85\xd3\xbe\x37\x85\x05\x33\x21\x4d\xb6\x20\x75\x83\x4e\xf9\x4e\x0d\x05\x25\xbc\x76\xde\xf8\xa2\x92\x53\xbb\xa7\xf9\x75\x49\xb7\xb4\x4f\xa9\xe1\x48\xf6\x49\x98\xf1\xc9\xc7\xcb\xb3\x8b\xf7\x97\x83\x3c\x7d\x74\x92\xc1\x44\x5a\x48\x2e\x8c\xde\xae\x96\x6c\x2b\x6a\xd2\x9e\xac\x84\x8f\x76\xe5\xba\x97\xbe\x63\xec\xe2\xe0\x47\x8b\x72\x95\xa5\xcc\x50\x9e\xe9\x68\x1f\x8d\x2c\x64\x26\xa7\xab\x73\xfe\x76\xd8\xa0\x9f\x61\xe6\x91\x3e\xed\xdb\x9d\xdf\xaf\xbc\xde\xa6\x54\x43\x1d\x1e\xbe\x34\x03\xe4\x18\x0c\x6b\x0d\x72\x30\x54\x54\x78\xa6\xcb\x7d\x10\xc1\x6b\x09\x06\xa8\x0d\xc2\x21\xf6\x69\xdc\xaa\xbc\x68\x51\x99\x94\xb6\x12\xd9\x43\x83\x6e\xbb\x30\x66\x69\xd0\xf6\x5a\x38\x75\x98\xfd\xc1\xf5\xa9\x13\xb9\x42\xb1\x7e\x48\xe4\x03\xd5\x3b\xa4\x8a\xb8\x6b\x4c\xf3\xbc\xe1\xc5\x9b\x69\xb0\x55\xb6\x68\x1a\x60\x2a\xd9\x27\x58\xad\x30\x0e\x3d\xcb\x16\x55\x6a\x40\xa7\x0a\xd3\x29\x26\xe8\x51\xce\x7e\x5b\x28\x3e\xe7\x19\x9b\x42\x12\x50\x2e\xa6\x51\x2d\x45\x1f\xb1\x0e\xc9\xe1\xd9\xd2\xbc\xec\x56\x69\x13\xa7\x7e\x06\xbc\xb8\xfa\x70\x03\x89\x65\xe1\x52\xf0\xde\x02\xb6\xfd\x20\x14\x1a\xe9\xf7\xfb\xa0\xf7\x1f\x7d\x6f\x65\xc5\x34\x3b\x26\xdf\x31\xf7\x1d\x09\xc9\x6f\x15\x54\x9b\x99\xc9\x90\x7d\x14\xe6\x5a\x41\x16\xd0\x11\x2f\xcd\x5d\xab\x13\xdb\xd2\x0a\x46\xc8\x6e\x6a\xed\xa1\xb8\x26\xa6\xf3\xc3\xfb\x9e\xc7\x97\x2b\xf7\x48\xfa\x77\xa6\x72\xde\x2a\xba\x0a\x3f\xc3\x8d\x4c\xe1\xe8\x21\x25\x7a\x91\x67\x5c\xdc\x56\x19\xa3\x26\xd2\xe2\x10\xfa\xe8\x73\x71\xeb\x31\x56\x31\x9a\xad\xa7\x94\xbb\xe0\xc7\x5e\xa9\xa4\xd9\xc1\x78\x77\xb3\x28\xf0\x2e\x3c\x1c\x7b\x77\xd5\x1b\x93\xb8\x83\x83\x67\xb7\x5e\xae\xbb\x55\x5a\x3f\x1c\x8e\xce\x47\xb5\x2a\xa1\x56\xa7\x83\x77\x8f\x69\x5c\x5e\xc7\x12\x60\x39\x4f\x28\xd9\xf1\x1f\xb6\xdd\xd4\xf6\x49\x56\x6e\x6f\x83\x6e\x3e\xd7\x52\x19\x9a\xed\x89\x08\x24\x33\x5a\x9c\x95\x66\x76\xc1\x75\x22\xe7\xac\xb3\xaa\x73\x37\xc3\xac\xbd\x3e\x61\x1c\xf7\x9b\x8e\xa3\x91\xf3\x3f\x9c\x5d\x13\x5a\xda\x5d\x34\x2e\xad\xe4\x5e\xaf\xb8\xfd\xfc\x47\xe8\x50\xbf\x97\xd9\xbb\xb1\x1e\x7c\xee\x2f\x17\x02\x7b\xbc\x10\x80\x33\xfe\x9c\x2f\x01\xb8\xe0\x86\x53\x23\x5b\xd6\xb2\xaa\xeb\xef\xa5\x36\x32\x77\xe8\x39\xf4\x03\xc1\xad\x2c\x30\xdc\xda\xd8\xf5\x1c\xfd\x20\x68\x03\x70\x86\xc2\x8a\xc5\x34\x61\x0d\x0f\xc0\x1e\x64\x6e\xc4\xb1\x79\x68\xf3\x5b\xe7\x99\x09\x29\x9f\xb2\xdf\x9d\xd6\x32\x69\x2f\x15\x42\xf0\x46\x85\x2a\xb9\xfe\x5e\x2d\x31\xfc\x87\xae\x27\xdb\x99\xbd\x70\x55\xff\x5b\xd2\x0c\xa1\x71\xb5\x6f\x1b\x51\x1d\xb2\x1d\x27\xe9\xf7\xd3\xc3\xfc\x2a\x68\xcd\xa5\xc6\x6c\x51\xd8\xc2\x28\x2a\xb4\xdd\x88\xba\x6e\x74\xe8\xae\x76\x0e\xc9\x91\x49\x8a\xd6\xe5\xda\x1f\xc8\x33\x1b\xa7\xea\xe0\xfe\x2e\x78\x64\xb7\x9d\xd5\x83\xdc\xb6\x00\xee\x76\x35\x6d\xd4\x16\x82\xcc\x96\xbc\xe3\xda\xf8\xb4\xf8\xf0\x82\x6b\x97\xd3\x15\x24\x9d\x6b\xab\x3a\xf1\xe2\xaf\x34\x4d\xd5\x29\x72\x12\x5f\x52\x57\x81\xbc\xe3\xf3\x2e\x51\x11\xee\xe3\x8e\xcc\xa2\x70\xa9\xd9\x6e\xce\xaf\x09\x56\xc5\xf8\xcd\xaf\xb0\x9c\xe7\x7f\xfe\xf2\x57\xaf\x5a\x6f\xe8\xd3\xb9\x3f\xef\x68\x39\xd8\xfb\x8d\xcd\xb3\xf0\x9a\x03\x71\x01\xfd\xe5\x80\x1e\xba\xb3\x8b\x78\x64\x37\x35\x50\xe9\xdd\x84\x8a\x17\x0f\xb3\x27\xf5\x30\x23\x21\xe8\x01\x69\xc2\xfd\xa9\x0a\x12\x94\xeb\xe7\x47\x50\xb6\xc2\x62\x3b\xd6\xd4\xb1\x05\xcf\xaf\xd5\xef\xa2\xdb\x27\xf0\xb9\xbe\xb8\x1a\xfd\xf5\xdd\xd9\x9b\xcb\x77\x30\x4b\xe7\x57\x65\xd1\x80\x8b\x9d\xfd\x88\xda\xa3\x55\x1b\x4d\x70\x3b\x30\xba\xdd\x73\x5c\xbd\x1d\x35\x14\x65\xfb\xa6\xe3\xe5\xc6\x7d\xa5\x65\x31\x69\xb5\xf6\xc7\x35\x5d\x41\xd9\x08\xa6\xf6\x17\xe2\xb0\xb3\x85\x2b\x4a\xc9\x54\x53\x86\xec\x4e\xe1\x0c\xef\xad\xaf\x6c\xdd\x01\xf2\x0c\x8c\xf8\x76\xbd\x08\x83\xbd\x9b\xef\x1f\x08\x56\x6d\x59\xbc\xea\x1e\xfb\x72\x38\x82\x5e\xfe\x92\xc7\x1e\x52\xf4\xc8\x51\x96\x5e\x5b\x4a\xcd\x74\x48\x72\xff\x4c\x31\xa5\x58\x95\x11\xb7\x0b\xf5\x5a\x99\x52\xb7\x56\x0f\xaa\x76\xb1\x51\x8b\x18\x58\x97\x43\xda\xdf\xed\x53\xa7\x5e\xea\x82\x26\x7b\xcd\xfc\x58\xbd\xc2\x37\x10\x52\xfd\xf8\x04\x10\x3e\xbb\x47\x87\xd2\x30\x5e\x57\x44\x3e\xf7\x1d\x9b\x81\x5c\x9d\x76\xc8\xd7\x53\x28\xa4\x0f\x92\x8b\x23\xbe\x9e\x78\xfb\xc8\xa3\x50\xcf\xef\x76\x54\x5d\xf6\xad\xb6\x14\x33\x69\xa4\xd8\xd9\x49\xfc\x7a\x45\xf7\xfa\x39\xc6\x16\xe7\x55\x91\x90\xa8\x42\x1f\x78\x18\x06\x83\xbe\x15\xe3\x3c\x97\x90\xc2\x9b\xf6\xeb\x86\xfd\x47\x97\x3c\xd2\xe1\xc5\x9e\xce\xdc\x8f\x29\xf8\xb0\xab\x09\x76\xaf\x2e\x14\x69\xe7\x88\x8b\xe1\x85\x93\xbb\x7c\x54\x85\x76\x68\x47\xd6\xe3\xdd\xde\xf8\xa2\x54\xe6\x4e\xaa\xee\xa1\xc6\xd7\xb5\x8e\x8d\x5b\x7d\xf7\xdb\x52\x34\xd1\x73\x3c\x23\x38\xc7\x27\x3e\x27\x23\xb8\x30\x6d\xe4\x8a\x6e\x9e\x8c\xe0\xc5\xfe\x00\x87\xe7\x69\x0f\xcd\x8e\x5c\xe8\x61\x43\x52\xf7\x2a\x78\x7b\x2c\xeb\xb8\xc2\xcf\xae\x9b\x33\x10\xd8\xbd\xa9\x88\x04\x0d\x87\xd0\x0d\xbf\x37\xa2\xa0\x24\xd6\xed\xeb\x40\x0f\x86\x86\xe5\x58\xe0\x97\x66\x99\x85\xa5\x14\x71\xda\x60\x17\x76\xda\x23\x98\x79\x37\xa7\x85\xaf\x96\x2c\xef\xc4\x1d\x55\x29\x39\xbb\x1e\xee\xe7\xe8\x77\x70\x2d\x46\xfc\x69\x97\x09\xaa\x5e\x56\x51\xa6\x8c\x8c\xb9\xd1\x55\xc1\x33\x66\x62\x6d\xd0\x92\xb7\x70\x47\x64\x0f\xa9\x3d\x90\xee\x7b\x11\xf7\x13\x44\x26\x86\x66\x8d\x02\xf4\xaf\x5e\xbd\x42\xe3\xd5\xab\x5f\xff\xfa\xd7\x58\x84\x26\x65\x09\xcf\x97\x1b\x42\xab\xff\x7a\xfd\x7a\x40\xfe\x78\xf6\xfe\x1d\x14\xc4\x2b\x8c\xc6\x74\x17\x38\x32\x96\xe4\x8e\x3a\xeb\x1e\xf9\x9f\xd1\x87\xab\xaa\x94\x46\xfd\x57\x57\xcd\xd8\x2d\x6f\x40\x2e\x22\x17\xa0\xd8\x3c\x45\xcd\xcc\xd5\x7e\x31\x84\x4e\x26\x58\xe6\x71\xec\xab\x8c\xe2\x91\xf2\x91\xcd\x50\x92\x19\x6b\x34\xd8\xed\xcf\xc0\x37\xc9\x2a\xd2\x68\xcc\xf3\xc1\xf5\xe8\x6a\x05\x63\x05\xfa\x07\x53\xe9\x61\x51\xef\x89\x86\x4a\x0d\x55\x2a\x38\xc5\xb4\x95\x29\x5d\xe9\x39\x1c\x2c\x4c\xdd\x4e\xe2\x29\xef\x60\x5a\x57\x10\xa8\x21\x96\x4f\x5c\x5b\x55\x07\xff\x1e\xaf\x15\xb7\x39\xc7\x3e\xd0\x9d\x48\x9d\xe7\x87\xd9\xe0\x5e\xb9\x90\xf5\x40\x2e\x08\xcd\x24\x54\x39\x0a\x5b\x5b\xf1\xa3\xa8\xca\xf8\xf6\xa5\x74\xce\xbc\xd7\x35\xfb\x2a\x52\xa1\xf7\xb4\x75\x8d\x93\xba\x49\x3b\x0a\xed\xa7\x63\x59\x1a\x7f\x05\x8c\x63\x62\x79\x3f\xac\x31\xdd\x21\x73\xe0\x0e\xc9\x06\x77\x49\x3a\xdb\x39\x6f\x65\x9d\xcc\xd7\x84\x80\x1e\x61\x34\x99\x91\x5b\xb6\xe8\x23\x61\x2a\x28\x44\xa3\x84\x2a\x52\x2e\xb7\x63\xfd\xbe\x24\x61\xa9\x95\x6c\x1d\xb0\xfc\x8d\x7a\x85\x45\x21\x9a\xc5\x8b\x8f\xda\x49\x3a\x2e\x67\xa4\x88\x14\x78\x9f\x98\x38\xaa\xc3\x1a\x92\x44\x62\x11\xe6\x7a\xd4\x85\x3d\x5f\x2c\xb5\xdd\xf4\xa6\x2f\x57\x6e\x04\x96\xd0\x39\x56\x55\x8a\xa5\xde\xae\xe8\xb0\x13\xdb\xe0\x83\xd4\xa7\xe2\x8d\x5c\x11\xa0\xb4\x99\x2b\x67\xe3\xda\x7a\x28\x05\x40\xd4\xa2\x42\x34\x33\xa5\x03\x0d\xd6\x4d\x2a\x45\xc6\xb4\x26\x1c\x56\x98\x53\x75\xcb\x7c\x52\x12\x9a\x0d\xc8\xb5\x9d\x64\xc8\x7c\x84\x39\x70\xe7\xe8\x46\x66\xcf\x68\x1c\xee\x62\x3f\x72\x38\x18\x1c\x22\x05\x5f\x11\xfc\xd2\x01\x33\x76\x4b\xa0\xba\x43\xe2\xd4\x46\x49\xe3\x42\x63\x1a\x58\x2b\xb5\x41\x9a\x63\x09\x51\x5c\x66\xe6\x39\x14\x6d\x9d\x7e\x67\x79\x39\x3b\x64\xfb\xdc\x35\x49\xf5\x2e\x29\xaa\x5b\x5d\x27\xd4\x9f\xdd\x53\x53\xef\x94\x98\x7a\xa9\xb6\xb2\xdb\x22\x77\xcc\xba\x67\xea\xbd\x47\x22\xe5\xbc\x53\x92\x4f\xff\xac\xcb\x09\x93\xb7\x91\xfa\x5c\xb5\xb2\x8c\xfd\xa8\xc4\xbc\xe1\x64\x55\xad\x2d\x1f\xee\x56\xc9\xc9\x81\x68\x5a\x08\x3c\xbd\x7c\xd7\xad\x3a\x07\xe9\x2c\xf0\x35\x9f\x2e\x02\x60\xf3\x69\x77\x29\xd7\x7c\x96\x4e\x53\xa0\xee\x45\xe4\x92\x0e\xa0\x34\x12\x32\x31\x9b\x70\xe4\x06\x50\xfe\xdd\xf1\x28\x6a\x65\x15\x2d\xb3\xd2\x84\xb0\x9c\x15\xac\x01\x06\xf5\x79\x9b\x31\x18\xd2\x37\x8b\x18\x05\xb0\x48\xa4\xbf\x5d\x79\x06\x3e\x3b\x1d\xe9\xae\x15\xc6\x7e\xb2\x8e\x1b\xf7\x80\xa1\x97\x19\x76\x86\xe3\xc8\x65\x43\xf0\x1e\xc4\x35\x19\x06\x9c\x37\x8c\x46\x01\xc9\x8b\x23\xae\x52\x4f\xe7\x95\xb5\x33\xac\xb8\x29\x3a\x2b\xc2\xd9\xf5\x70\x8f\x12\x7d\x34\xea\x4f\x5a\xa6\x07\xd3\x4d\xad\x6e\xca\x45\xb5\x72\x67\xe0\xb5\x14\xe6\xd9\x8b\x86\x4b\xd3\x7e\x6b\xe9\x62\x64\x56\x6d\x24\x65\x73\x25\xdc\x03\x05\x8d\x12\xb9\xf9\x0b\x3e\x38\xaf\xcf\x5d\x8c\x7c\x44\x91\x10\xe0\xd1\xa9\x00\xb4\x7f\x96\x4b\x90\xc1\x62\xc9\x08\x6a\x93\xa0\x8e\x17\x29\x8b\x85\x4c\x4f\x5d\xa9\x5c\x21\x24\x56\xfd\xd2\x3d\x2c\x6e\xa2\x7b\xa8\x04\x5a\x41\x21\xba\x96\x55\x91\x01\x7c\x67\xd1\x60\xa7\x32\x35\xf7\x29\x54\x63\x37\x10\x56\x7e\xdd\x75\x17\xc9\x3d\xeb\xce\x90\x88\x0b\xed\x56\xc9\xa2\x6e\xac\xc6\x91\x42\x1d\xeb\x64\xc6\x72\x8a\x49\xe1\xfc\xf2\x2c\x95\xb9\x53\xdc\x18\x86\x59\x7d\x98\xca\x35\x91\x93\x5e\xad\x42\xdc\xc1\xfc\xf5\xc1\x2e\xf5\x3c\xee\x59\x72\x85\x54\xbb\xb0\x07\x60\x5c\xd7\xa4\x33\x8b\xd7\xa0\x2e\x64\x90\xc9\x51\x34\x8c\x0c\x96\xc1\xcc\x11\x7a\x8f\xbe\xf0\xa7\x54\x91\x7a\x41\x48\x78\x51\x91\x5e\x54\xa4\xbd\xa8\x48\x11\x63\xf1\x04\xc7\x01\x2a\x56\x9b\xe2\x8c\x52\x5e\x77\xaa\xa2\x7a\xa2\x2c\x31\x16\x35\xbd\xd6\x24\x55\xdd\x8a\x66\x55\x9f\x43\xaf\x4b\x39\x3c\x2e\xcd\xa4\xff\x1b\xc2\x44\x22\x53\xdc\x7c\x3b\xbe\xd2\x06\x44\x9b\x4a\xfd\x88\xe7\x92\xfb\x6f\xc5\x96\x38\x18\x7b\xd7\xad\xdb\x89\x0e\xf8\xbb\xba\xb7\x7b\x62\xf0\x15\x5b\x0f\x41\xb0\x6e\xf9\x21\x46\xde\xf1\xf7\xea\x96\x10\x6b\x01\x03\x72\xfb\x32\xa7\xe4\x08\x5f\x0e\x92\xa2\xec\xb9\x06\x83\x9c\xe5\x52\x2d\x7a\xa1\x91\xfd\xb1\xd6\xcb\xb5\x38\x06\x99\x20\x29\x95\x55\xf6\xb2\xc5\x8f\x55\x3a\xf0\x00\x7a\x64\xe1\x20\xec\x53\xb7\x6a\x30\xf1\xd3\x70\xbf\x0b\x89\xae\x40\x95\xaf\xaa\xe3\x4c\x42\xf2\x3d\xdd\x0b\x2a\x2a\xbc\x65\x62\x4e\xe6\x54\x75\x28\x5d\x1d\x3f\xf7\x94\x07\x52\x3e\xe7\x7a\xb7\x82\x75\x2b\xb5\x66\xee\xd2\x7a\xc9\xd2\x14\xa5\x71\x94\xd2\x9f\x0a\x1f\xea\x1d\x4e\x43\x43\x28\x7a\x7d\xb0\xd3\x34\x7e\x34\x45\x61\xf1\xd9\xb1\x34\x2c\x3e\xf7\x2d\x10\x5b\x1f\x65\x67\xb4\xd9\x6b\xb9\x67\xff\x78\xb4\xd8\xc7\x39\xac\x58\x64\x95\x9f\xc0\x0b\xa7\x8f\x74\xd0\xd0\x1f\x64\x8f\xb6\x1a\x97\x08\xfd\xa7\x6c\xa6\xd9\xd3\xd5\xab\x8b\xd4\xfb\x37\xbf\x77\x1d\xb9\x9c\xf8\x2f\x97\xae\xad\x90\xef\xe5\xd2\xf5\xe5\xd2\xb5\xed\xf3\x72\xe9\xfa\x62\x51\xa8\x3f\x3f\x6a\x8b\xc2\xcb\xa5\xeb\xcb\xa5\xeb\xfd\x60\xf8\x20\x97\xae\x4e\x8c\xab\x6e\x5c\x1f\xf5\xc2\xd5\x95\x75\x39\x4b\x12\x59\x0a\x73\x23\x6f\x59\xeb\x1b\x84\x56\xc2\xfc\xd2\xe8\x8f\x27\xd9\x77\x17\x2c\x3a\x89\x07\xbb\x08\x06\xb4\x4c\xb9\x15\xde\x77\x46\xa0\x33\x37\x80\x97\xd3\x2d\x29\x16\x29\x4b\xc3\xc8\xfe\x90\x1a\x0b\xeb\x01\x39\x23\x8a\x25\xbc\xe0\xae\x7a\x37\xc5\xf7\x88\x61\x21\xcb\x3e\x37\x9a\x65\x13\x97\xed\x5c\xc4\x45\x61\x2a\x11\xdc\x51\xb8\x95\x9f\x41\x9e\x23\x7d\x92\x6c\x5f\x21\x47\xb1\xef\x3d\xb3\x72\xb3\xb9\x89\x47\x88\x8d\x22\xb0\x94\x5a\x2d\x1a\xf8\x58\xc1\x5d\x04\xf2\x43\x1f\x6c\xf6\xa5\xe0\x0a\x90\x77\xc4\x12\x29\xda\x54\xc4\x5c\xb3\x41\x97\xcd\x91\xfc\x4e\x39\x8b\x26\x16\xc0\x0f\x75\x2f\xe7\x34\xe3\x29\x37\x8b\x70\xd7\xe6\xaa\x2c\x51\x3c\x31\x61\x1b\x75\x05\x46\x42\x8b\x42\x49\x9a\xcc\x98\x8e\xe6\x8d\x22\x87\x0b\xc4\x0a\x5e\xe7\x58\x09\x0c\xa4\x0e\xe8\x63\x59\x5f\xb6\x20\x4a\x1a\x7f\x5d\xbe\xe6\x83\x37\xd1\x60\xd0\x1d\xf9\x97\x51\x0b\xb8\x53\x97\xf1\x10\x38\x2b\x3e\x89\xff\xd0\x44\x66\xa9\xcf\xef\xf1\x9b\x57\x56\xcc\x4b\x1c\x0e\x5a\x2a\x07\x19\x20\x8c\x24\x99\x65\xc5\x96\xf2\xad\xef\xfc\xcb\xaf\xc9\x4c\x96\x4a\x0f\xe2\x20\xa1\xd7\xf0\x0e\x55\x34\x2f\x26\x1a\x92\x31\xaa\x0d\x79\xfd\x8a\xe4\x5c\x94\x96\x03\x75\x46\x9b\xee\x92\x4d\x24\xd3\xfc\xea\xeb\xd6\xfd\xba\x4a\x33\xcb\x37\x92\x0e\xab\x0a\xcc\xc4\xeb\x84\x1a\x77\x92\x30\xb8\x0c\xf3\x58\x37\x44\x1c\x47\x74\x63\x68\x0b\x23\x1f\xe0\x7c\xfd\x50\xca\xf1\xc2\x74\x09\x44\xfc\x5f\xec\x51\x8f\x40\xf4\x2f\xdb\x64\x17\xa9\x92\x8b\x6c\xfc\xe8\x83\xd4\x4a\x98\x72\x6d\xb6\x54\x4a\xa8\x62\x14\x37\x36\x6b\xcf\x56\xa6\x56\xde\xef\x18\x96\x02\x3a\x82\x97\x75\xbd\x79\x28\x49\x18\xd6\x34\xbc\xa8\x2a\xed\x08\x89\xe3\x6f\x1d\xfe\x89\x93\x6d\x79\x04\xd9\x43\x8e\xee\x96\x4b\x6d\x27\x5d\x79\x94\xe8\xbc\x56\xec\x56\x3f\x05\x9a\x8b\x29\xa6\xd4\xce\xcb\xcc\xf0\x22\xab\xd6\x1d\x3a\x38\x42\x1e\x9b\xcd\x68\x64\xe9\xa1\x18\x9c\x8b\xa9\x98\xc0\xc4\x78\x14\xc6\x62\xc2\x60\x66\x68\x65\xf9\x41\x41\x15\x0d\xc0\x83\xba\xa9\xfa\xd8\x59\xe0\x28\xdc\x03\x22\xe5\xb1\xe4\x5c\xd1\x2c\x2c\x34\xbe\xfb\xd9\x27\xd2\x18\x26\xa8\x68\x61\x60\xae\xab\x7a\xd0\x89\xc8\xbb\xe0\x02\x86\x15\x36\x1a\xd8\xe2\x84\x9a\x37\x34\xb9\x65\x22\xc5\xf2\x43\xb0\xec\x74\x21\x68\xee\x52\x51\x45\x35\x95\x1b\xfd\x75\xcf\x99\x1a\x30\x52\xce\x87\xea\x22\xd7\xdd\x27\x0c\x4a\xdd\x39\xd7\xcb\x27\x8d\xb5\x8c\x37\x9d\x73\x8d\x46\x18\xc5\xe7\x09\xf3\xfc\xdf\x7e\x6a\x9f\x53\x9f\xb7\x88\x47\x5f\x9a\xbc\x73\x55\xe4\x11\xfe\x02\xb9\x0f\xc6\x6f\xc8\x3a\x45\x33\x7b\xb4\x17\x21\x3c\xb3\xb1\xb9\xe3\xc5\x7e\x0b\xaa\xa8\x71\x97\x30\xda\xc3\x8f\x6f\x2e\xea\x87\xf8\x23\x4d\xa5\x26\x6f\x32\x99\xdc\x92\x0b\x06\x42\xd7\x43\x16\x04\x51\xe3\xf4\x29\x13\x46\xe7\x74\xba\xed\x76\xac\x4f\x72\x29\xb8\x91\x6a\x33\xbd\x78\xa9\x4f\xf8\x24\xe9\x88\xd5\x38\x7d\xd6\xc9\x88\x2d\x82\xed\x52\x8d\x50\xc1\x31\x84\xee\x3e\x97\xdf\x8e\x87\xea\x67\x33\x79\xd7\x37\xb2\x5f\x6a\xd6\xe7\x2d\xee\x5b\x3b\xac\xee\x96\x2d\xe0\x92\xb9\xe3\xfa\xbe\xc5\x6e\x35\xe5\xc0\x48\xb0\x29\xc1\x7b\xcb\xa2\x3f\xbe\xb9\xb0\xbc\x61\x10\x0b\x7b\x27\xcc\x24\x27\x09\x2b\x66\x27\xee\xc3\xcf\x12\x28\x9e\x5a\x74\x85\xca\x19\x49\x64\x96\xb9\x78\x67\x39\x21\xe7\xac\x98\x85\xc1\x1e\x7b\xa5\x4f\x97\xea\xb6\x90\xb2\x6b\xca\xcf\xe8\xc0\xd8\xde\xee\xbc\x44\x88\xa3\xc6\xdd\xea\x18\x3c\x16\xaa\x3c\xeb\x4a\x8c\x0f\x08\x9c\x07\xae\xaa\x5f\xab\xa5\x1f\xbb\x5e\xd6\xd3\x01\x7b\x1f\x8e\x1a\xb9\x19\x4e\x50\x92\x4e\x59\x4a\xe4\x9c\x29\xc5\x53\xa6\x49\xa0\x37\xb1\xea\xc9\xb3\xc7\x86\xdb\x4b\x66\xe2\x27\xcf\x4c\xbc\x83\x8e\x13\x91\x27\xdb\x7b\x99\x3c\xd1\x34\xe7\xe2\xd9\x11\x28\x9d\xd0\x8c\x0d\x3f\x74\x50\x26\x46\xd8\xa3\xae\x4f\xf8\x97\x51\x42\xb1\x2d\x69\xba\xbe\x0d\xf8\x42\x84\x4c\xb7\xd9\x47\x1f\x40\x2b\x98\x52\xc3\xee\xb6\xb2\xbf\x7e\x45\xa0\xb6\xb7\x04\xb9\xf3\x29\xf5\x87\x27\x4a\x8d\x17\x61\x39\xe6\xfd\xda\x27\xfb\x74\xfb\xd4\xd5\xe8\xe2\x17\xd2\xc8\x24\xeb\x11\xf5\xec\x7a\x48\xbe\xc1\x91\xf7\x9b\xa9\x4f\x49\x83\xd2\xdd\x85\xcc\x29\xef\x5c\x68\x63\x56\x2f\x4c\xed\xa7\x7b\x1d\x86\x25\x38\x6e\x5c\x23\x64\xc2\xa7\xa5\xd5\xc0\x9c\xd6\xf4\x92\x44\xed\x51\x04\x90\x4a\xfe\x88\x2c\x41\xde\xe3\xb0\x92\x39\xfc\x0e\x02\x53\x08\x57\x93\x44\x33\xa1\x39\xdc\x93\x44\x97\xd5\xae\xdc\x1b\xd6\x17\x44\xf7\x42\x14\x52\x7a\xe4\x9d\x9c\x72\xe1\x4f\xa5\x74\xd7\x68\x13\xca\xb3\xb6\xc0\x78\x91\x2a\x9e\x5c\xaa\xd0\x3a\xbb\x14\x74\x9c\xb5\xf1\x02\xa8\x93\xf5\x8c\xc2\x3d\x27\x83\xde\x27\x29\xd7\xf6\xff\x64\x34\x7a\x07\x36\xf1\x52\x78\x59\x17\xec\xc5\x8e\xac\x05\x4f\x7f\x3c\x80\xfb\x3d\x33\x48\x69\x76\xc8\x71\x37\x14\xa9\x9d\x2c\xd3\x35\xb7\x13\x37\x1e\x66\xfa\x0b\x9e\xb3\x78\x73\x3f\x66\xe4\x66\xc6\x93\xdb\xeb\xc8\xf4\x2d\x95\x7d\x27\xa2\x57\x35\x26\xd4\xfc\x6d\x9f\x04\xd1\x4d\xf5\xba\xbb\x02\x7b\x13\xd1\xf3\x91\x5b\xb0\x1d\x86\x50\xad\x65\xc2\xab\x7b\x0e\x30\x97\x54\x04\x3f\x05\x82\xbf\xdf\x45\x00\x4f\xbf\x27\x6f\xf2\x9b\xe6\xab\x9e\xea\x98\x17\x71\xe1\xd7\xba\xd7\x89\x23\x6a\xec\x90\xa5\xfb\xa6\x96\x97\xdb\xcb\xa6\x0d\xa3\xbd\xf7\xe2\x76\x9b\xe4\xa5\x24\x5f\x65\x71\x69\x9b\x42\x7e\x6e\x97\x97\x6f\x6f\x4b\x6d\x13\xc8\xb0\x4a\x1b\x6e\xdc\xd4\xe1\x3b\x67\xc6\x87\xc3\x54\xc8\xa2\xcc\xd0\x57\xe2\xfe\xc9\xc5\xbd\x75\x16\xbf\xb3\x27\xb3\xfe\x63\x24\xda\xec\xea\x08\xfc\xd3\xc8\xb9\x19\x89\x64\xaf\x7e\xf5\xf5\xd7\x3f\xf6\x2c\x9c\x6d\x55\xe0\x87\x48\xc3\xd9\xd2\x24\xfa\x12\x69\xf3\x12\x69\x13\xa3\xe2\x43\xa6\x51\xdd\x73\x2c\x4d\x47\x17\xd7\x6e\xee\xad\xed\xa3\x65\x5a\x3b\xc1\x76\x75\x80\xed\x10\x0f\xb3\xa7\x28\x98\xce\xbe\xa0\x5d\x22\x5e\x5e\xe2\x5c\x7e\x6a\x71\x2e\xbb\xf8\x80\x76\x8f\x69\xe9\xe2\xfb\xf9\x53\x8a\x5f\xe9\x70\x18\xdb\xc7\x59\x74\x8f\xae\xe8\x9e\xcf\xae\xbb\x65\x6b\x97\x92\x46\xb1\x7d\xc6\x69\x11\x55\x05\x41\x5f\x78\x10\xf3\x63\x19\x69\x0f\xd6\xa3\xe8\x10\xa4\x83\x02\x85\xc3\xcb\x2e\xb5\x04\x9d\x4e\xfe\x61\xd4\xb8\xda\x08\xaf\x9f\xe6\x46\xe3\xa7\x79\x65\xf0\x52\x18\xe4\x79\xdb\xb4\x75\x2d\xb7\x88\xb7\x24\xc0\x59\x07\x46\x2c\xc7\x71\x4e\xc3\xea\x8c\x9c\x5d\x0f\xad\xba\x0c\xe1\x33\x34\xd3\x03\xb2\x82\x4f\x7b\xbb\xa4\xe3\xeb\x9e\x3f\x53\x63\x58\x5e\x98\xf6\x9b\xfd\x62\xd2\x7e\x72\x93\xf6\xce\xf6\xb8\xcf\xa1\x63\xa8\x00\x59\xe6\x54\xf4\xed\x89\x02\xe3\x76\xed\x16\xac\x41\x82\x07\xc4\x7b\xe5\x22\x2c\xa8\x62\x98\xf4\xa9\x5e\xf1\x96\x46\xf5\x0f\x1f\xc6\x08\x09\x63\xef\xbc\x72\x64\xa0\x8d\x93\x96\xc8\x25\xb7\x4f\xb7\x9c\x00\x05\x7f\xa8\x22\x2e\x5c\xd3\x9b\xcd\x8c\x21\xb3\xbe\x86\x40\x94\xaa\x55\x5d\x12\x46\x51\x98\x66\x99\xbc\xc3\x6f\xc7\x0c\xcc\x42\xdf\xce\xc5\x45\x58\x8d\x19\xc9\xb9\x55\xaa\x9d\xf1\x33\x9e\x0e\x5e\x45\x5a\x89\x9a\x29\x14\x58\x95\xbb\xcd\x1a\x31\x13\x6f\xb4\x55\x48\x05\x3a\x42\xdb\x7f\x7b\xc7\x1b\xcc\x8a\xeb\x68\xc2\x98\xcd\xe8\x9c\xcb\x52\x61\x6f\x23\xc9\x81\xfb\x09\x58\xc2\x42\x96\xc1\x34\x85\x55\x12\xc3\xea\xf4\x0a\x38\x5d\x55\x3f\x82\x28\x9f\x4a\x6f\x4b\xe8\xb3\x2f\x5c\x9b\xe5\xb5\x78\x10\xf9\xa4\x6d\xfb\xc2\x9b\xb9\x2e\x2c\x5b\xe8\x5c\x11\xed\x73\xdc\xaf\x2e\x98\xcc\x47\xf0\xd3\x8f\xa8\x1e\xda\xd6\x5c\xa4\x2f\xb2\xce\xbe\x65\x9d\x70\x5d\x95\xf1\x64\xd1\xb9\x52\x58\x75\x4d\x65\xbb\x93\x37\x54\xb3\x94\xbc\xa7\x82\x4e\x51\x2d\x3b\x1a\x5d\xbf\x79\x7f\x6c\xb7\x0d\xd4\xbe\xe1\xc5\xca\xbb\xac\x51\x3c\x87\xab\x7d\x86\x41\x2c\xad\x70\x07\x4e\xd4\x71\x8d\x7b\x0d\xe3\x20\x81\x9b\xb4\x4b\x10\xbb\x1c\x7a\xd9\xac\xf1\xd8\x20\x0a\xf3\x3c\xbd\x67\x55\x47\x2e\xb4\xa1\x59\x76\x9d\x51\x71\x56\x14\x4a\xce\x57\x6b\xc2\xf5\xc0\x70\xd7\xd0\xb3\x76\xf4\x7d\xf0\x2f\x0b\x04\x34\xdc\xf5\x0a\x32\xac\xc6\x1f\x90\xa1\x09\x0a\xb1\x14\xc0\x06\x0f\xce\x4a\x23\x73\x6a\x78\x72\x60\xf5\xe6\x83\xf7\x54\x94\x34\x5b\xe9\x61\xb4\x71\x19\xeb\xc4\xba\x8d\x9d\xd6\x27\x47\x6b\xd1\x6d\xa3\x7c\xb0\xb9\xbf\xa1\xca\xd2\x96\xf3\xd1\xe7\x4e\x7d\xb5\xa1\xa6\x5c\xa2\x9c\x1b\xa8\xf9\x7a\xfa\xdd\x27\x19\xd5\xe6\x53\x91\xda\x93\xdc\xf8\x75\x13\x91\x4e\xa8\xa1\x99\x9c\xfe\x81\xd1\x6c\x35\x3e\xd7\xf0\xe4\x3c\x6e\xed\x8d\x3f\x88\x32\xa3\x72\x1c\x1a\x1e\x6a\x62\x85\x62\x1f\xaf\xad\x58\xc6\xe6\x54\x18\xdf\x1d\x2b\x65\xeb\x43\xb7\x7e\xc0\x22\x5e\x19\x3c\x53\x66\x98\xca\xb9\xa8\x8f\x39\x82\xb6\xe7\x52\xa4\x1c\x4d\x7d\x60\xcc\xc2\x1e\xf5\x71\xd7\xa3\xda\x3a\x73\xfe\x06\x03\x7e\x9d\xf2\x44\xf3\xa9\x83\x02\x9b\x8d\x9d\x4c\x38\xc3\x97\x70\x73\x5d\x9b\xdb\x12\xa4\xc8\xad\xb0\xc2\x1c\xe4\xbc\x58\x4d\xa4\xb6\xf2\xf6\x6d\x3c\xbd\xef\xf7\x18\xa7\xb0\xde\x2f\xb2\xef\xe6\xbd\xce\xd0\xbf\x09\xc5\xf0\xd9\x2e\x0d\x34\xa7\xb2\x9e\x82\xae\xc2\xbb\xd0\x0d\x83\xfb\x1a\xd5\xd5\x6b\x8d\xd6\x53\xfc\x56\xc2\x52\x3b\xb9\xa6\x6d\xde\xf4\x3a\xad\xad\xb2\x7c\x2f\xa9\x9f\x2d\xa4\xbc\xad\x2c\xaa\x65\xfa\xf2\xba\x32\x3c\x74\x4e\x71\xca\xa9\x0f\x94\x14\x9c\x61\xa2\x0e\x2a\x1c\xb0\x80\xb3\x30\x9a\xba\x97\x96\x83\x59\x35\x0e\x7e\xeb\xb9\xbb\x66\x34\xec\x3a\xdf\x05\x6f\x1c\xa6\x98\xa8\x02\x2e\x0b\x4e\xbe\x91\xee\xa2\xd4\x05\x94\x5a\x1a\x00\x7c\xbb\x47\x74\x99\xcc\x08\xd5\x76\x6a\x16\xa1\xed\x89\x67\x83\x9c\x0a\x3e\x61\xda\x0c\x42\x1e\x5a\xfd\xa7\x5f\xfe\x65\x40\xde\x4a\x45\x9c\x1f\x76\xcf\x67\x80\x70\xf3\xac\xf0\x82\x6b\x5c\x4c\xe8\x5b\x69\x9a\x85\x4c\xdd\xa4\xef\x60\xb2\x86\xde\x5a\x1e\x86\x93\x2d\x19\x5c\x17\x9c\x92\x03\x2b\xe4\x45\x9f\xfe\x87\x65\x4b\xff\x3a\x20\x47\x77\xc0\xb4\x0f\xec\x9f\x07\xf8\xc1\xe0\x4b\x18\x2b\xc2\xd5\x87\x31\xcc\x4f\xf1\xe9\x94\x29\x54\xf9\x08\x84\xc3\x1d\xbb\x0c\x16\x42\x46\x8d\xfd\xcd\x6f\xa5\x22\x36\x27\xf2\xa7\x5f\xfe\xe5\x80\x1c\xd5\xd7\x45\xb8\x48\xd9\x17\xf2\x4b\x34\xfd\x72\x6d\xd7\x78\xec\x2e\x50\xf4\x42\x18\xfa\xc5\x8e\x99\xcc\xa4\x66\x02\xd5\x6f\x23\xc9\x8c\xce\x19\xd1\xd2\x6a\xad\x2c\xcb\xfa\xce\xac\x4d\xee\x28\x64\x15\xf1\xa0\x84\x20\x70\x52\x50\x65\x6a\x28\x31\x70\x56\x0d\xf8\x9a\xdd\xb6\xa9\xf0\xd7\xbf\x13\x2e\xdc\x9d\x91\xbb\xad\xb2\x7b\x0e\x21\x8d\xb8\x49\x46\x92\x64\x46\xc5\x34\xc4\x51\x4f\x4a\x53\x2a\xb6\xe5\xba\xa5\xe5\x19\xb8\xe5\xa2\x53\xb8\xed\xb7\x5c\x34\x6f\xee\x57\xdb\x82\xa6\xdc\x78\xa7\x7f\xe7\xc8\x67\x16\x27\x76\x17\x14\x1f\x97\x46\x2a\x7d\x92\xb2\x39\xcb\x4e\x34\x9f\xf6\xa9\x4a\x66\xdc\xb0\xc4\x2e\xeb\x84\x16\xbc\x9f\x48\x61\x77\x1c\x32\x08\xe4\xe9\xcf\xa0\x08\x66\xdf\x4e\x75\x4b\x5e\xe3\x96\x8b\xde\x6e\x08\x7b\x52\x03\xd8\xde\xd6\xd8\xc2\x86\xb3\xbc\x50\xb4\xa7\x3c\xc2\x6a\xc1\x78\x71\xb2\x97\xc5\xfa\xb4\xbc\xdd\x79\xcc\xa1\xcb\x34\x9d\x34\xc7\xb0\xc7\x0e\xbd\x34\xe0\x54\xd6\x28\x65\x4e\x53\x24\xa5\x54\x2c\x1e\x1c\xf9\x2d\x48\x21\x21\x7b\xb2\xe8\x27\x58\xdf\xbe\x4f\x45\x6a\xff\x8d\xf1\x28\xc9\x62\x2f\x30\x2c\x79\x27\x42\xf0\x69\x78\xf1\x38\x47\xa2\xe4\x7b\x38\xf5\x4e\x5e\x6b\x29\x44\xa1\xa8\x0a\x2e\x3b\x46\x95\xcc\x33\xcd\xba\x80\xca\xb5\x1f\xf5\xbf\xdd\x9d\x49\xc8\xcc\xb5\x4d\xa4\xda\x7c\xd3\x11\xc9\x8e\x2d\xe7\xfb\xae\xea\xd1\xac\x89\x6f\x07\x73\x69\xa0\x7c\xf4\x7c\x6d\x19\x5e\x41\x01\x06\xb3\xfe\x8e\xb6\x15\x0e\xf9\x3b\x7a\x3b\x91\xfe\xca\xfc\x40\x49\x50\x4a\xb6\x2b\x50\x95\xfe\x52\xab\xb4\x85\x8b\x32\x4c\x1b\x42\xe7\x94\x67\x60\x51\x97\x63\xcd\xd4\x1c\x4b\x1e\xb9\xb4\x78\xb4\xa9\x67\xb9\xaa\x06\x28\x46\x3d\x92\xe6\xe3\xd7\xb0\xbc\x2b\x9b\x16\x00\xda\x50\x63\xf6\x6b\x67\xbd\x17\xbd\x07\xd5\xcb\xb5\x3f\xdb\x2f\xec\xa8\xc6\x58\xfc\xfb\x03\xa3\xca\x8c\x19\x35\x37\x7c\x13\xdf\x5d\x42\xe9\x5a\x3f\x6f\x70\xa9\x10\xfa\x8e\x91\xa9\x34\x56\xc4\x2a\x01\xf7\x51\x26\xc5\x04\x34\x01\xd1\x1e\x1a\xa3\xab\x55\xde\x28\x0a\x71\x2f\x52\x74\x5c\x66\xbd\xe3\xf2\x3a\x9d\x74\xec\x30\xc9\x60\x6b\x4c\x01\x21\x05\x73\x7b\x87\x37\x10\x40\x81\x1e\x67\xc9\x39\xd3\x7a\x63\x6a\x88\xba\x0b\x1f\xb6\xc6\xa3\xdc\xb8\x0e\xcb\xfd\x6f\x18\x3f\x61\x05\xe8\x94\x19\xca\x33\x7f\x94\x11\x14\x01\x4a\xdb\xa8\xeb\xc6\x05\x2a\x46\xf5\x26\x01\xa1\x99\x11\x4b\x4b\x81\x93\x96\x82\xf5\xef\xa4\x4a\xc9\x39\xcd\x59\x76\x4e\x35\x73\x63\xc5\xe1\x6a\xb8\x47\x87\x7a\xaf\x53\x5e\x6d\xfb\x5a\x33\x65\x34\xfe\x78\x24\x72\xb8\x51\xa9\x58\x38\xc1\x9e\x37\x41\xde\xa8\x92\xf5\xc8\x5b\xcb\xbd\x7a\xe4\x93\xb8\x15\xf2\xee\x7e\x73\x35\x1b\x6f\x2e\xea\x6e\x56\x2e\x73\x0b\xa4\xc8\x73\x09\x61\x6a\x06\x9f\x30\xdd\x1d\x67\xe4\x08\xfe\x1a\x53\x63\x9d\xd9\x84\xa6\x7e\x46\xf6\x9f\x4b\x26\x28\xab\x28\x2a\x39\x55\x4c\x63\xce\x95\x95\x09\xfd\xda\x9a\x9c\xbf\x61\xc2\x45\xbc\x6d\x9d\xde\x70\x55\x2f\x3f\x53\xcf\xd7\xa6\xd5\x2f\x6e\xbf\xdd\xc7\x8a\x6c\xa5\xa8\xb1\xd9\x0b\x2f\x9a\xe8\x1a\xe3\xd3\xba\x19\xae\x36\x3a\x45\x5c\x2f\x6a\x8b\x42\xc9\x26\xeb\xa8\x5f\xdd\xf9\xe8\xf3\x7a\x60\xaf\xe5\x7d\xdb\xf8\xd3\x76\xb3\xd4\x7d\x0d\x52\x5b\xcf\xcc\x56\x23\xd4\x8b\xf9\xe9\xc5\xfc\xf4\x63\x32\x3f\x6d\xc5\xf8\x4d\x26\xa7\x1f\x87\xb1\x69\xeb\x12\x37\x19\x98\x9e\xa5\x69\xa9\xd5\x8a\x36\x9a\x93\x9e\xad\x21\x69\xeb\xd2\x5a\x1a\x8f\xfe\x7d\xcc\x46\x5b\x21\xb6\xc1\x54\xf4\x0c\x8d\x44\x6d\x04\x32\x96\xb6\x11\x13\x87\x51\xe3\x58\x50\xac\x0a\x26\x86\xe1\xbc\x4b\x4d\x2c\xce\xec\x2a\x2d\x5a\x01\x6e\xeb\xdc\x0e\xdd\xe4\xda\xcb\x5e\x4e\x60\x74\xe5\x04\x97\x26\x4b\x2e\x2e\xaf\x3f\x5e\x9e\x9f\xdd\x5c\x5e\x34\xe5\xbb\x55\x90\xde\x22\x89\x6d\xb6\x41\xf4\x23\x49\x6c\x4d\x03\x4b\x90\xd7\xfc\x64\x71\x60\xcd\x4f\x65\xc9\x57\xf5\xba\xbf\x5c\x78\x2f\x2e\x77\x2f\xfe\xb1\xfd\x74\xb6\x3d\x9e\xf6\x74\x02\xb6\xa0\xc7\x98\x95\x7b\x66\x32\x4b\xb5\xf7\x35\x1d\x5e\x84\xe8\x25\x2e\x92\xac\x4c\xad\x70\xf1\xe9\xd3\xf0\x42\x0f\x08\x79\xc3\x12\x5a\x6a\xb0\xc2\xa4\x52\x1c\x1a\xf2\xe1\xea\xdd\x1f\xc1\x87\x1a\x5a\xf4\x42\xb2\x0f\xc8\x20\xcb\x29\x26\xc1\x35\x98\x85\x8c\xbc\x61\x28\xa8\xc0\x97\x13\x5a\x58\x2a\xa6\xb1\xca\x82\x01\x59\x64\xc6\xb2\xc2\x52\xcc\x5b\x46\xaa\xdc\x9f\x76\xe0\xaa\x86\xb9\x77\x79\x9c\x32\x83\x91\x4e\x9b\xbc\x1a\x37\x42\x6d\x8b\xc5\xf5\x1e\xb6\xd6\x9a\xfa\xe8\xb4\xf1\x3b\xaa\x9d\xc5\x6a\xe5\x6c\xb7\xec\xef\x76\xfb\xcc\x7a\x13\xc7\x1a\xe3\x06\x92\x67\xf8\x6b\x69\xce\x76\xb2\x95\x1d\x03\x9d\x48\xb8\x69\x6d\x4d\x5d\xef\x06\xb4\x3a\x67\xfd\x92\x2d\x83\x35\x81\x5c\xfb\x70\xf0\xa2\x8e\xa6\xdc\x6e\x2e\x50\xf0\x22\xad\x55\x97\x74\xde\x76\xf5\x77\xe5\x38\xd4\x17\xad\xe6\xeb\x2c\x32\xe4\x1f\xff\xfa\xea\xff\x07\x00\x00\xff\xff\xda\x8b\x54\xf8\x5f\xac\x01\x00") +var _operatorsCoreosCom_subscriptionsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x7d\x6b\x73\xe3\xb8\x95\xe8\xf7\xf9\x15\x28\x27\x55\xb6\xb3\x92\xdc\x9d\x9d\x4d\x72\xbd\xa9\xa4\xdc\xb6\x7b\xa2\x9d\x6e\xb7\xb7\xe5\xee\xa9\xdc\x24\x37\x81\x48\x48\xc2\x98\x04\x38\x00\x28\xb7\xf2\xf8\xef\xb7\x70\x0e\x00\x82\xd4\x8b\x94\xe5\xc7\x4c\xcc\x0f\x33\x6d\x0a\x00\x81\x83\x83\xf3\xc2\x79\xd0\x82\x7f\x66\x4a\x73\x29\x4e\x09\x2d\x38\xfb\x62\x98\xb0\x7f\xe9\xc1\xed\x6f\xf4\x80\xcb\x93\xf9\xeb\xaf\x6e\xb9\x48\x4f\xc9\x79\xa9\x8d\xcc\x3f\x32\x2d\x4b\x95\xb0\x0b\x36\xe1\x82\x1b\x2e\xc5\x57\x39\x33\x34\xa5\x86\x9e\x7e\x45\x08\x15\x42\x1a\x6a\x5f\x6b\xfb\x27\x21\x89\x14\x46\xc9\x2c\x63\xaa\x3f\x65\x62\x70\x5b\x8e\xd9\xb8\xe4\x59\xca\x14\x0c\xee\x3f\x3d\x7f\x35\xf8\xd5\xe0\x97\x5f\x11\x92\x28\x06\xdd\x6f\x78\xce\xb4\xa1\x79\x71\x4a\x44\x99\x65\x5f\x11\x22\x68\xce\x4e\x89\x2e\xc7\x3a\x51\xbc\x80\x4f\x0c\x64\xc1\x14\x35\x52\xe9\x41\x22\x15\x93\xf6\x7f\xf9\x57\xba\x60\x89\xfd\xf8\x54\xc9\xb2\x38\x25\x2b\xdb\xe0\x70\x7e\x8e\xd4\xb0\xa9\x54\xdc\xff\x4d\x48\x9f\xc8\x2c\x87\x7f\xe3\xda\x47\xd1\x57\xe1\x75\xc6\xb5\xf9\x76\xe9\xa7\x77\x5c\x1b\xf8\xb9\xc8\x4a\x45\xb3\xc6\x6c\xe1\x17\x3d\x93\xca\x5c\x55\xdf\xb6\xdf\xd2\xe5\x38\xfe\xb7\x6b\xc8\xc5\xb4\xcc\xa8\xaa\x0f\xf2\x15\x21\x3a\x91\x05\x3b\x25\x30\x46\x41\x13\x96\x7e\x45\x88\x83\xa3\x1b\xb3\x4f\x68\x9a\xc2\xde\xd0\xec\x5a\x71\x61\x98\x3a\x97\x59\x99\x8b\xf0\x4d\xdb\x26\x65\x61\xd4\x53\x72\x33\x63\xa4\xa0\xc9\x2d\x9d\x32\xff\xbd\x31\x4b\x89\x91\xa1\x03\x21\xdf\x6b\x29\xae\xa9\x99\x9d\x92\x81\x05\xf1\xc0\x42\x30\xfa\x19\xf7\xe7\x1a\x07\x89\xde\x9b\x85\x9d\xae\x36\x8a\x8b\xe9\xa6\xcf\x27\xd4\xd0\x4c\x4e\x09\xe2\x17\x99\x48\x45\xcc\x8c\x11\xfb\x29\x3e\xe1\x2c\xf5\xf3\xdb\x30\x23\xec\xba\x34\xa7\x51\xf3\x75\xeb\x29\xcd\xa8\x10\x2c\x23\x72\x42\xca\x22\xa5\x86\x69\x62\x64\x05\x9f\xcd\xe0\x71\x9d\x97\x66\x73\xbe\xf4\x7e\xc5\x74\xb0\xe9\xfc\x35\xcd\x8a\x19\x7d\xed\x5e\xea\x64\xc6\x72\x5a\xed\xa1\x2c\x98\x38\xbb\x1e\x7e\xfe\xcf\x51\xe3\x07\x52\x5f\x4a\x8c\xa2\xe4\x96\xb1\x42\x57\x87\x82\x94\x85\x5d\x93\x5d\x1c\x19\x2f\x88\x51\x34\xb9\xe5\x62\x0a\x4b\x9f\xe2\x7a\xcf\x71\x63\xf4\x60\x69\xca\x72\xfc\x3d\x4b\x4c\xf4\x5a\xb1\x1f\x4a\xae\x58\x1a\x4f\xc5\x42\xd6\x93\x88\xc6\x6b\x0b\xa7\xe8\x55\xa1\xec\xb4\x4c\x74\x0e\xf1\x89\x68\x54\xed\x7d\x63\x99\x87\x16\x16\xd8\x8e\xa4\x96\x3c\xd9\xe9\xcf\x98\x3f\x1c\x2c\x75\x00\xb4\xdb\x69\x66\x5c\x13\xc5\x0a\xc5\x34\x13\x48\xb0\xec\x6b\x2a\xdc\x9a\x06\x64\xc4\x94\xed\x68\x0f\x6c\x99\xa5\x96\x8e\xcd\x99\x32\x44\xb1\x44\x4e\x05\xff\x7b\x18\x0d\x40\x64\x3f\x93\x59\xfc\x30\x04\x8e\x9b\xa0\x19\x99\xd3\xac\x64\x3d\x42\x45\x4a\x72\xba\x20\x8a\xd9\x71\x49\x29\xa2\x11\xa0\x89\x1e\x90\xf7\x52\x31\xc2\xc5\x44\x9e\x92\x99\x31\x85\x3e\x3d\x39\x99\x72\xe3\x29\x70\x22\xf3\xbc\x14\xdc\x2c\x4e\x80\x98\xf2\x71\x69\x37\xee\x24\x65\x73\x96\x9d\x68\x3e\xed\x53\x95\xcc\xb8\x61\x89\x29\x15\x3b\xa1\x05\xef\xc3\x64\x05\x92\xc8\x3c\xfd\x99\x72\x34\x5b\x1f\x36\xc0\xb7\xf2\x1c\x10\x4f\xf5\x36\xc2\xda\x12\x3f\xc2\x35\xa1\xae\x3b\xae\xa5\x02\xa9\x7d\x65\xa1\xf2\xf1\x72\x74\x43\xfc\x04\x10\xec\x08\xe1\xaa\xa9\xae\x80\x6d\x01\xc5\xc5\x84\x29\x6c\x39\x51\x32\x87\x51\x98\x48\x0b\xc9\x85\x81\x3f\x92\x8c\x33\x61\xec\x31\xcc\xb9\xd1\x80\x73\x4c\x1b\xbb\x0f\x03\x72\x0e\x0c\x88\x8c\x99\x3b\xb0\xe9\x80\x0c\x05\x39\xa7\x39\xcb\xce\xa9\x66\x0f\x0e\x6a\x0b\x51\xdd\xb7\xe0\x6b\x0f\xec\x98\x7f\x2e\x77\x58\x3a\x63\x84\x78\x06\xb7\x76\x77\xe2\x03\x3f\x2a\x58\x12\x8e\x03\x15\xe4\xac\x28\x32\x9e\x20\xc6\x9b\x19\x35\x24\xa1\xc2\xc2\x8b\x0b\x6d\x68\x96\x01\x3b\x69\x35\x8b\x75\xa7\x9d\xc0\xd1\x6e\x30\x07\xff\x7a\x89\x42\xd7\x7f\x08\x4c\xad\xd1\x62\x1d\x65\xb0\x8f\xa3\xb3\xcb\x3f\x6c\x00\x39\x41\xc9\x64\xc2\xa7\xab\xba\xad\x85\xe5\x39\x74\x01\x99\x86\x72\xa1\xdd\x10\xa5\x42\x68\x56\x9c\xca\xf2\x2e\x5a\xe3\xdb\x83\xb5\xb3\x5b\x09\xd9\x6d\x6b\xb6\x0f\x13\xf3\xd5\x3f\x34\x16\x70\x29\xe6\x78\x50\xad\xcc\x62\x89\x1c\x13\x73\xae\xa4\xc8\xed\x21\x9a\x53\xc5\xe9\x38\x73\x8c\x8d\x59\xf2\x85\x67\x0c\x97\xc8\xd4\xaa\x23\xb5\xe6\xab\xb8\x1e\xaa\x14\x5d\xac\x69\xc1\x0d\xcb\xd7\xac\x66\xd5\xb4\x3f\x53\x15\x51\x09\x8b\xbc\xab\xa6\x4e\x5c\x03\x3b\x75\x4a\xce\xc3\xc4\xd7\x7e\x66\x0b\xdc\xf1\x59\x8f\xdb\xd5\xb3\x06\xcb\xfd\xb3\x6d\x03\xf1\x01\x4e\xbf\xe1\xf7\x06\x58\xec\x09\x41\x06\xc6\x56\x42\x63\x40\xde\x97\x1a\x76\x8b\x92\xf3\xbf\x0e\x2f\x2e\xaf\x6e\x86\x6f\x87\x97\x1f\xd7\x83\x83\x6c\x3b\x28\xd5\x03\x34\xbe\xc3\x64\x0f\x3f\xfb\x3d\x52\x6c\xc2\x14\x13\x09\xd3\xe4\xe7\x47\x9f\xcf\x3e\xfe\xf5\xea\xec\xfd\xe5\x31\xa1\x8a\x11\xf6\xa5\xa0\x22\x65\x29\x29\xb5\x67\x1a\x85\x62\x73\x2e\x4b\x9d\x2d\x1c\xe5\x4a\xd7\x20\x6d\x13\x5b\x81\xdb\x52\xb1\x20\x9a\xa9\x39\x4f\x56\x83\x48\x0f\xc8\x70\x42\x68\x85\x40\x49\xc0\x70\xcb\xa8\xb2\x39\x4b\x7b\x30\x6c\x98\xb4\xff\x0e\x17\x45\x69\x3c\xc3\xbb\xe3\x59\x06\xa7\x42\xa0\xac\x94\x0e\xc8\x85\x2c\xed\x78\x3f\xff\x39\x2c\x4c\xb1\xb4\x4c\x40\x88\xb6\xc4\x80\x8b\xa9\xfd\xa9\x47\xee\x66\x3c\x99\x11\x9a\x65\xf2\x4e\x03\xa5\x60\x3a\xa1\x85\x5f\x7a\x0c\x1d\xbd\x10\x86\x7e\x39\x25\x7c\xc0\x06\xe4\xe0\xe7\xd1\x4f\x07\xf8\xf5\x42\x49\xfb\x09\x94\x93\x71\x56\x19\x37\x4c\xd1\x8c\x1c\xc4\xad\x07\xe4\xd2\x7e\x83\xa5\xf1\x3e\xc0\x08\x82\xcd\x99\xb2\xab\xf0\xbb\xd0\x23\x8a\x4d\xa9\x4a\x33\xa6\xb5\xc5\xb3\xbb\x19\x33\x33\x86\xa2\x78\x00\x18\xfb\xc2\x2d\xc3\x95\x8a\x08\x69\x06\xe4\x82\x4d\x68\x99\x01\x07\x26\x07\x07\x83\x26\xe3\xdb\x1d\xd5\xde\x2a\x99\x77\x40\xb7\x51\x5d\x73\x58\xb5\xf7\x87\x1a\x47\xae\x91\x35\xcd\x52\xc2\x27\x4e\x82\xe1\xda\x2e\x8a\xb0\xbc\x30\x8b\x36\x87\x66\x0b\x1d\x21\xad\x09\x01\x09\x3c\xe9\x3d\x2d\xbe\x65\x8b\x8f\x6c\xb2\xad\x79\x73\xfd\x2c\x63\x89\x25\x94\xe4\x96\x2d\x40\x9c\x25\xe7\x7e\xc0\xcd\x4b\xe9\xb4\x1c\xd2\x92\x3c\xfa\xa7\x6f\xa7\xb3\xb5\x5d\x7b\x20\xd9\xe7\x96\x2d\xda\x34\x23\xcb\x3a\x9d\x05\x0d\xf0\x3a\x0b\xab\xed\x50\x21\xed\x51\xd6\x3f\xdb\x29\xfa\xca\xc9\x1d\xc6\xa4\xdd\x9d\x53\xb3\x52\x60\xbd\x2d\xc7\x4c\x09\x66\x18\xc8\xac\xa9\x4c\xb4\x15\x57\x13\x56\x18\x7d\x22\xe7\x96\xf2\xb1\xbb\x93\x3b\xa9\xac\x22\xd7\xbf\xe3\x66\xd6\xc7\x5d\xd5\x27\x60\xf4\x38\xf9\x19\xfc\x8f\xdc\x7c\xb8\xf8\x70\x4a\xce\xd2\x94\x48\x38\xe2\xa5\x66\x93\x32\x23\x13\xce\xb2\x54\x0f\x22\xad\xab\x07\xfa\x40\x8f\x94\x3c\xfd\xfd\xe6\xc3\xbd\x23\xc4\x64\x81\xc6\x8a\x1d\xa0\x36\x02\xa1\x6b\x51\xa3\x53\x01\xe9\x2d\x85\xb2\x2a\x82\xdd\xf3\xdc\xb1\x45\xc7\x50\x3a\x2c\x63\x2c\x65\xc6\xa8\xd8\xd2\x03\xc0\xd6\xfd\xcc\x1e\x56\x87\x16\x46\xf0\x08\x50\xc8\xf4\x94\xe8\xb2\x28\xa4\x32\x3a\xa8\x08\x60\x73\xe9\xd5\xff\x04\x79\xb9\x47\xfe\x16\x5e\x66\x74\xcc\x32\xfd\xa7\xc3\xc3\xdf\x7e\x7b\xf9\xc7\xdf\x1d\x1e\xfe\xe5\x6f\xf1\xaf\x91\x85\xae\xde\x04\x6d\x3a\x32\x05\x21\xdc\xfd\xe9\xd8\xe8\x59\x92\xc8\x52\x18\xf7\x83\xa1\xa6\xd4\x83\x99\xd4\x66\x78\x1d\xfe\x2c\x64\xda\xfc\x4b\x6f\xe1\x04\xe4\x61\x89\x0e\x80\xf3\x9a\x9a\xd9\x9e\x49\xcf\x7a\x6b\xc4\xea\xa7\xb6\xdd\xde\x3e\xe1\x76\xd9\x19\x24\xec\x3f\xdf\xfa\xe9\x5a\x0e\x74\xa7\xb8\x31\x4c\x80\xdc\xc1\x54\x6e\x39\x71\xcf\x62\x6e\xc5\x66\xe7\xaf\x0f\x1e\x84\x78\x05\xa8\xed\xb0\x38\x98\xbd\x5b\x19\x22\x73\x20\xb4\x5e\x82\xaa\x74\xa4\xb3\xeb\xa1\xb7\xcc\xec\x7d\x21\xde\xde\xf0\xf6\xde\x67\x32\x58\x2e\xdc\xb2\x82\xa4\x79\x4a\xa4\xc8\x16\xe1\x77\x4d\x32\x0e\xd6\x08\x2b\x80\x06\x8b\xc4\x11\xbe\x1c\x24\x45\xd9\x73\x0d\x06\x39\xcb\xa5\x5a\x84\x3f\x59\x31\x63\xb9\x95\xd8\xfa\xda\x48\x45\xa7\xac\x17\xba\x63\xb7\xf0\x17\x76\xac\x7d\x60\xb9\x37\x8a\xd4\x49\xa9\x2c\xf3\xc8\x16\x9e\x82\xb0\xf4\x69\xcf\xa2\x07\xd3\x9e\x8f\x62\xd8\x8d\xab\x1d\x59\x6e\xd0\x16\x9d\xc1\xd5\xaf\x0a\x64\xc8\xb9\xcc\xca\x9c\xe9\x5e\x60\x4f\x28\xad\x8b\xb9\x95\x26\x97\xcc\x3b\xab\x9f\x8e\xa7\x2f\xe5\x73\xae\xa5\xda\x99\x0f\x72\x67\xf2\x94\xa5\xb1\x9a\xca\x44\xaa\x9c\x9a\xa0\x2e\x7e\x29\xa4\x06\x1d\xc0\xe1\x6c\x83\xa4\xbc\x3e\x68\xf5\xd9\x82\x1a\xc3\x94\x38\x25\xff\xef\xe8\xcf\xff\xf1\xcf\xfe\xf1\xef\x8f\x8e\xfe\xf4\xaa\xff\x7f\xfe\xf2\x1f\x47\x7f\x1e\xc0\x3f\x7e\x71\xfc\xfb\xe3\x7f\xfa\x3f\xfe\xe3\xf8\xf8\xe8\xe8\x4f\xdf\xbe\xff\xe6\xe6\xfa\xf2\x2f\xfc\xf8\x9f\x7f\x12\x65\x7e\x8b\x7f\xfd\xf3\xe8\x4f\xec\xf2\x2f\x2d\x07\x39\x3e\xfe\xfd\xcf\x5b\x4d\x8f\x8a\xc5\x87\x16\x07\x1e\x9f\xbe\xdb\x20\x2e\x0c\x9b\x32\xd5\xb1\x57\xeb\x6d\x25\xe4\x4b\xbf\x12\xda\xfa\x5c\x98\xbe\x54\x7d\xec\x7e\x4a\x8c\x2a\xb7\x1f\x8c\x8a\xa8\xed\x82\xe7\x1f\xfd\x69\x8d\x4c\xb1\x9e\x34\xef\x1d\x91\x35\x4b\x14\x33\xfb\xd2\x60\x70\x34\xcf\x3f\x0a\x99\x1e\x6a\x22\xd6\x98\x09\xd7\x4d\xfb\xdf\x42\xa9\xf1\x22\x05\xc2\xab\xe2\xbc\x13\x25\xf3\x01\x89\xcc\x42\x73\x9a\xf1\xd4\xb7\xbb\x65\x5b\xb4\x5c\xff\xbc\x28\x41\x3f\x2e\x25\x68\x84\xfb\xfb\xe0\x1a\x10\x13\xf3\x4d\x66\x9a\xa6\x4d\xd7\xb6\xad\x9b\xa3\xbd\x00\x65\x24\x29\x64\x51\x66\xd4\xac\x31\xdb\xad\xb0\x4d\x3b\xdc\xd7\xc1\x4c\x68\x37\x1a\xec\xc0\x8e\xca\xe5\xab\x8d\xa1\xe4\x2c\xcb\x08\x17\x78\x12\x60\x00\x6f\xcd\x53\x0c\xe5\x25\x42\xd1\xe0\x3c\xb7\x53\xb8\x9b\xb1\xa6\xa1\x91\x6b\xab\xeb\x28\xc3\xc5\x74\x40\xbe\xb3\xbf\x23\xcd\x72\xa6\x31\x2e\x48\x5e\x66\x86\x17\x19\x23\x81\xdb\xa2\x0d\x2d\x2b\x19\xa1\x5a\xcb\x84\x53\xe3\x66\xec\xee\x0f\xb5\xf1\xd3\x86\xd9\x18\x7a\x0b\xa6\xd0\x84\xa5\x4c\x24\x6c\x40\x3e\xc3\x75\x61\x58\xeb\xd8\x0a\x83\x60\xde\x87\x31\x28\x49\x4b\xbc\xda\x41\x7a\xb0\x7a\x8c\x61\x9e\x97\x06\x0c\xc5\x8f\x65\xc5\xb7\x3b\xee\x2c\x73\x91\x31\x1f\x48\x55\x10\xad\x29\xdc\x3d\xc8\x49\xa5\xba\xeb\xfb\x99\xef\xdb\x11\xde\x60\x6e\xdb\xca\xa9\x96\x28\x6e\x65\x63\xa8\x53\xda\xc7\xb6\x18\xb6\xa3\xb3\x3f\x49\x1a\xdb\x81\xbe\xb6\xa7\xad\x1d\x8c\x4b\x5d\xe9\x69\x5b\x6b\x52\xa1\xd8\x84\x7f\xe9\x80\x8f\x67\xa2\x52\x51\x78\xca\x84\xb1\x8a\x80\x02\x82\xaa\x58\xc1\x04\xe8\xe1\x8c\x26\x33\xa0\x0b\x8e\x8a\x56\x96\xe1\x87\xbc\x31\x42\x29\xa3\xfb\xf1\x1a\xad\x92\x62\x5e\xce\xd6\x4f\xfc\x6c\xb9\x5d\xdf\xff\xc1\x12\x32\x65\xa8\x5b\xac\x57\xae\x1b\xfb\x18\xf5\x70\x7e\x2e\xfe\x2f\xbc\xc0\xf3\x93\xb4\xda\x5b\xb8\x72\x2a\x24\x9c\xb5\x09\x37\x44\x5a\x89\xc0\x7e\x77\x40\x46\x2b\x7a\xe6\xd4\x24\x33\xd7\xe2\xf0\x50\x13\x34\xda\x36\x07\x1a\xa3\x89\x30\x2d\x33\x96\x12\xef\xb0\x81\x83\x76\x44\xa9\x9a\xab\xc2\x09\xd5\x9a\x4f\x45\xbf\x90\x69\xdf\x8e\x76\xb2\x0e\x21\x5a\x1c\xaa\xd8\xd5\x70\xfb\xc1\xda\x8a\x57\xc1\x38\xd1\x6e\x9b\x3e\x06\xfb\x5b\x24\x5b\x24\x32\x2f\x4a\xc3\x22\xe3\x5c\xb0\xeb\x8c\x17\xe8\x59\x14\xc9\x90\x95\x44\x74\x3f\x98\xe6\x54\xd0\x29\xeb\xbb\x8f\xf7\xc3\xc7\xfb\xe1\x5b\xf7\x01\x73\x1b\xaa\x85\x26\xc5\x4d\xe7\xb0\x0e\xbc\x77\x68\xb2\xc4\x97\x63\x67\x3a\xca\xe9\x17\x9e\x97\x39\xa1\xb9\x2c\x05\xc8\x64\xcb\xe0\x84\xcb\x6b\x96\xee\x07\x60\x2b\x00\xa5\xd7\x42\xaa\x25\xb4\x48\x67\xc4\x24\xcf\xd7\xb2\xd5\xca\xa2\xd5\xcd\x92\xd5\xc1\x82\xb5\xb3\xe5\xca\x1b\xa9\xdb\xe3\xe3\x47\x6f\x37\x6f\x60\x24\x17\x5b\x31\xd2\x1f\x70\x70\xed\x08\xe3\x70\x4d\x64\xce\x8d\x09\x2e\x59\x01\xc3\x7a\x84\x9b\x9a\xf5\xd3\x9d\x05\x3e\x41\x1a\xcb\x35\x61\x5f\xac\x36\xc5\xc1\x8a\xee\x6f\x2d\x7a\xc8\x65\xef\xb8\x06\x03\x1a\x15\x84\xe7\x45\xc6\x72\xef\x43\xda\xf7\xba\x99\x73\x32\x78\x39\x1f\x2f\xe7\x63\x55\x27\xdd\x45\x16\x89\xc5\x10\x34\x14\x8c\x59\x56\x89\x23\x16\xb3\x0b\x99\x6a\x27\x2f\x78\x1c\xb2\x67\xe1\xf2\x0b\xd7\xe0\x89\xfb\x91\x81\x65\x60\xc4\x8c\x26\x77\x33\xa9\x19\xf6\xa0\x8a\xb9\x71\x22\xd6\xe8\x2d\x21\x70\x8f\x00\x4e\xa3\x93\x49\xbd\x45\xca\x8a\x4c\x2e\x72\x90\x6c\x87\x26\x96\x67\x82\xe8\xc2\xf2\x22\xa3\x86\x05\xc1\x66\xb3\xb5\xe1\xde\x9c\x0f\xbe\x7e\xf9\xc5\x4a\x00\x51\x1c\x44\x0b\xd8\x36\x3b\xd6\x4d\x53\x0d\x48\x3b\x22\x93\xa3\xcf\xf2\x0d\x48\xf8\xd5\x1b\x80\xe6\xd9\xd5\xc5\x7a\x07\x49\xd2\xca\xbc\x42\xb6\x9b\x58\x96\x96\x71\xb6\x61\xaa\x0d\xe9\x15\x7d\x7e\xbd\x07\x2b\x7a\xa0\xf7\xd0\x78\xd5\x73\xee\x73\x21\x3a\x00\x1b\x2b\x96\x61\xe8\x83\x33\x34\xdb\x46\xce\x73\x7d\x3f\x1a\x59\x5b\xbb\x7b\x1b\x9b\x7b\x3f\x4c\x7e\x4f\x4a\x60\x2b\xa3\x7c\x6d\x33\x40\xc9\x8e\x8f\x2a\xb8\x1c\x59\x48\xa2\x7d\xde\x6d\x04\x2d\x8a\x0c\xee\xeb\x64\x5b\xdf\xac\x96\xea\x18\x2e\xbf\xe3\xa4\xc3\x96\xc7\x0e\xb7\x76\xe6\x87\x1a\x11\xc0\x9e\x8e\x19\x2f\x9c\x37\x23\x5a\xeb\x7c\xfc\xc2\x67\xb0\xa3\x56\x31\x25\xf6\x24\x0c\x45\x8f\x5c\x49\x63\xff\x77\x89\x36\x51\x8b\x37\x17\x92\xe9\x2b\x69\xe0\xcd\x5e\x97\x8d\x53\xe9\xb8\x68\xec\x04\x07\x44\xe0\x99\x04\x83\x74\x14\xd0\x80\xbe\xa2\x40\x0a\x3d\x80\xb8\x26\x43\x41\xa4\xf2\xab\x0b\x56\x5d\xed\x86\xf0\x9a\xa1\x90\xa2\x8f\x6e\x84\xab\xc6\xb8\x0c\x3e\x94\x31\x4c\x36\x0c\xe7\x86\xba\xb1\x14\x18\x7f\xc1\x10\x96\x8c\x26\x2c\x25\x69\x09\x93\x86\x70\x0c\x6a\xd8\x94\x27\x24\x67\x6a\xca\x2c\xd3\x4e\x66\x6d\x41\xbd\x8d\x2e\xe1\xd3\x82\x3a\xc5\x83\x6e\xd9\x3f\x20\xc1\xef\x80\x4b\x74\x23\xdb\xd8\x07\xc9\x5b\x4e\x0b\xbb\x75\xff\xb0\x54\x0c\xa0\xf7\x2f\x52\x50\xae\xf4\x80\x9c\x79\xd7\xdb\xf8\x37\x67\x03\x8b\x87\xb1\x23\x58\xa9\xef\x87\x92\xcf\x69\x66\xe9\x26\x0a\x78\x0c\xc5\x3b\x3b\x7a\x93\x59\xf4\x1c\x2f\xb5\xe7\x1b\xfd\x5d\xb8\x26\x07\xb7\x6c\x71\xd0\x5b\xda\xee\x83\xa1\x38\x40\xfa\xba\xb4\xc1\x81\x18\x83\x47\xc9\x01\xfc\x76\x70\x3f\xfe\xf2\x00\xc2\xdf\xd6\xbd\x34\x32\x63\x2a\x0e\xfd\xdc\xb2\x87\x37\x55\x7b\x58\x5a\x75\xbd\x1b\x8d\xf4\x38\xb7\x14\x37\x5e\x6c\xb1\x67\xab\x9a\x17\xa0\x96\x31\x34\x99\xa1\x17\xb7\x9b\x17\xc4\xd1\x2c\x88\xdd\x33\x83\x74\x1d\x10\xc3\x71\x48\xa3\xe0\xd2\xe7\xb7\x01\xdb\x7a\x0c\xe4\xa7\xdf\x45\xfe\xed\xd0\xde\xfe\x11\x30\xe4\xb7\xfe\x5f\xbf\xbb\x67\xdc\x42\x3b\xc6\x86\x53\xea\x20\x60\x5c\x42\x07\xc2\x45\x0a\x17\x4c\x6e\xa9\x00\x01\x1c\xcb\xc2\x07\x96\x35\x20\x97\x96\x50\x91\x9c\x51\xa1\xbd\x99\x0b\x6e\xa2\xaa\xc6\xda\x5d\x99\x45\x7a\x95\x33\x29\x54\x27\x83\x91\x2b\x39\x72\xb6\xaf\x1e\xb9\x06\x5b\x6a\xf5\x06\x4e\xd2\x95\xbc\xfc\xc2\x92\xd2\xac\xbd\xcb\x8a\xe1\xb6\x95\x8b\x6c\x65\xf4\x35\x80\x7c\x5b\x31\x79\x5c\x59\x8d\xc9\x57\x18\x1c\xb3\xf9\x8d\x90\xb9\x65\x8b\x8a\xd9\x38\x11\x02\x48\x7e\xaf\xc2\x12\xcf\x0a\x90\x77\xfc\xb7\x37\x65\xe5\x63\x2e\xf0\x63\x38\xb4\xdf\x0a\x18\xdd\x03\xd4\x4a\x76\x59\x86\x9f\xd9\x07\xb8\xda\xc9\x19\x35\x98\x7d\xe8\x20\x63\x04\x2a\xb9\x5a\xba\x88\x44\x8a\xcb\x1f\x4a\x9a\xd5\x83\x10\xdc\x2b\xd7\x68\x89\xaa\xdf\xf1\x2c\x4d\xa8\x72\x5e\x5e\x18\xa6\xa9\x25\xee\x1e\x05\x42\x90\x50\x11\x4e\x7b\xb5\x47\x1a\xaf\x2a\x0b\xaa\x0c\x4f\xca\x8c\x2a\x1f\x39\xde\x2a\x50\x60\x2b\x44\x2b\xa4\x19\xb1\x44\x8a\xb4\x8b\x02\x70\xd3\xec\xdb\xbc\x6b\x2d\x98\xe2\x12\xbd\x8b\x79\xce\x9a\x48\x7a\x54\xb7\x69\xcb\x89\x3f\xd5\xe1\x88\xd5\x2c\x1f\x10\x9b\xe9\x19\x1e\x9f\x0a\xa9\x58\x7a\x1c\x91\xc7\x70\x2a\x06\xe4\xcd\xc2\x9b\x59\xc0\xe4\xe2\xa2\x2b\x34\x33\x3e\x10\xc6\xa3\xac\x03\x76\x75\xa0\x26\x52\x41\x70\xca\x51\x2a\x31\x22\x63\xce\x13\x73\x3c\x20\xff\x97\x29\x09\x1b\x2f\xd8\x94\x1a\x3e\x0f\xdc\x34\x28\xae\x8a\x51\x77\x83\xff\x8a\x1c\x41\x37\xc2\xf3\x9c\xa5\x9c\x1a\x96\x2d\x8e\x51\x8f\x65\x44\x2f\xb4\x61\x79\x9b\xad\x6b\x63\x34\x40\x5f\x3b\x68\xfb\xab\xaf\x37\xb4\xec\x1a\x43\xf5\xd9\x47\xa5\x54\x90\x41\x1f\x82\xc6\x16\x06\x1e\x24\x37\x88\x9b\xb1\x0f\x82\x0b\x6c\xf6\x92\x65\xbc\xc1\xdf\x5b\x3c\xa0\x44\x31\xc8\x40\xe0\x30\xf7\x9e\x38\x8e\xde\x94\xef\x65\x29\xd6\x9b\x04\x6b\x0b\x7f\xe7\x94\xf0\xcf\x51\xc7\xb5\x51\x8a\x8f\x22\x26\x44\x33\x89\x4c\x94\x94\x80\x5d\x12\xd8\xb9\x25\x0f\xd8\xaa\xf2\x44\xd9\x3a\xc9\xbd\x46\x24\xc2\x5c\xb6\x78\xbd\xef\x25\x6e\x31\x7c\xa8\x03\x2e\x83\x83\xb8\x03\x4c\x23\x6e\xcf\x38\x72\x00\xf8\x89\x10\xac\x10\x14\xbe\xc5\x52\xef\xc5\x66\xa9\x81\xeb\x4a\x0e\x4f\x0f\xf7\x42\x7c\x71\x39\x4a\x16\x74\x0a\xe7\xa9\xc3\xaa\x9a\x5d\x49\xca\x0c\x53\x39\x04\x5c\xcf\xe4\x1d\xfe\x8e\x6c\xab\x70\xad\x58\x5a\xc5\xb6\xcf\xa4\x06\xae\x54\x0f\x62\x84\xf3\x0b\x17\xa3\x77\x74\x41\xa8\x92\xa5\x48\x9d\xd4\x14\x08\xe8\xfb\xc6\x87\xaf\xa4\x00\x4a\x51\x6a\x0b\xab\x9b\x1a\x95\x1e\x33\x43\xed\xb1\x79\x3d\x78\xfd\x6a\x2f\x00\xeb\x18\xb7\x0a\xb3\x69\x58\x0a\xfd\x5d\xb9\x3f\x33\x7b\x99\x97\x62\x34\xfd\x20\xb2\x2e\xb2\xdc\x7b\x44\x2f\xe8\xda\x07\x25\x8c\x4f\xc0\x76\xdb\xc3\x57\x77\x8a\x1b\x16\x91\xc7\xa3\x09\xcd\x34\xb3\xaa\x7b\x29\x82\x08\x7b\x5c\x17\x41\xa0\x49\x9b\x05\x6d\xf7\x07\xd1\xe5\xf8\x9e\xe7\xcc\x1d\x28\x40\xb9\xea\x98\x05\x84\x3b\xd4\x1b\x8e\x5c\x3d\xb8\x93\x1c\x61\x4b\x2b\xb1\x49\x69\x8e\xf7\xe3\x24\x82\x0b\xb4\x9a\x75\x17\x95\xc4\xc7\x0d\x17\x7b\x5c\xed\x1b\x36\xa3\x73\xa6\x89\xe6\x39\xcf\xa8\xca\x20\x56\x70\x84\xf3\x23\xe3\xd2\xac\x8e\x40\xef\x16\xdd\x1c\xcf\x24\x1a\x6e\x2b\xa8\xfd\x3c\x2c\x9c\x80\x46\xf8\x79\xd9\xef\xe4\xa5\x29\x69\x96\x2d\x08\xfb\x92\x64\xa5\xe6\xf3\xfb\x9e\x26\x17\xfd\xb0\x03\xab\x6e\x72\xe9\x42\xa6\xa3\x82\x25\x8f\xc9\xa3\xeb\x1a\x86\x25\x55\xa9\xdf\x74\xe0\xc9\xa8\xec\x83\xe6\xbe\x00\xcf\xa7\x24\x61\x5a\x7b\x9f\xca\x45\xec\xe7\x19\xd6\xf0\x63\x49\x28\x40\xef\xf4\x65\x46\xb5\xe1\xc9\x9b\x4c\x26\xb7\x23\x23\x55\xa7\x98\xfd\xb3\xef\x46\x4b\xfd\x1b\x69\x18\xce\xbe\x1b\x91\x0b\xae\x6f\xe3\xc4\x2e\x78\x69\x1a\x9b\x4b\x28\xb9\x2d\xc7\x2c\x63\xe6\xf0\x50\x23\x97\xcb\x69\x32\xe3\x82\x79\x06\x27\x42\x48\x8a\x53\xf8\x2c\x94\xbb\xde\x99\xba\xc0\xa7\x13\x87\xaf\x3f\xa3\x77\x9a\xe1\xf4\xc7\x76\xfa\xf6\x67\xd6\x26\x22\x7d\xaf\xf7\x14\x38\x99\xe1\xc5\x9e\xee\x20\x26\xfa\xc6\xce\xb1\x9b\x71\xfb\xf0\x2d\xcf\x18\xea\x38\xb0\x44\xef\x95\xe6\xce\x01\xec\xd8\x42\x96\xe4\x8e\xa2\x56\x0c\x34\x70\x40\x6e\x78\x71\x4a\x2e\x85\x2e\x15\xab\xec\x19\x93\xc6\x50\x5c\x57\x91\x65\x5e\x9d\x82\x1d\x46\x95\xc3\x52\x3a\xa7\x5d\x91\xcb\x2f\x34\x2f\x32\xa6\x4f\xc9\x01\xfb\x62\xbe\x3e\xe8\x91\x83\x2f\x13\x6d\xff\x27\xcc\x44\x1f\x0c\xc8\x30\x0f\xf7\xec\x90\xfa\x47\x31\xef\xfa\x84\x1d\x2c\x33\x8e\xf8\xec\x83\x20\x88\x73\xa3\xb3\xd2\x5a\x2a\xc9\x1d\x66\xa0\xb0\x24\x9e\x29\x25\x55\xf0\x3c\x8f\xc0\x00\xdc\x25\x91\x79\xa1\x64\xce\x23\xc3\x1e\x20\xf8\x5e\xfd\xeb\xc0\xdc\xb0\x5d\x24\x5d\xde\x7f\xcc\xe9\xe6\x3a\x93\x3a\x73\x5c\xb7\xfb\xc3\x89\xf7\x98\x40\x55\xd1\xe9\xee\xa0\x7f\xba\x46\x76\xbf\xdd\x28\x96\x5a\xc5\x3b\xfc\x36\x44\xcd\x91\x93\x94\xcd\x4f\x74\x4a\x5f\xf7\xe0\x33\xda\x79\xfb\x99\xda\x9c\xa8\x26\x07\xaf\x0f\x06\x64\xe4\xb9\x6d\x2f\x9e\x63\xd5\x6e\x22\x55\x18\x10\x8c\xe9\xaf\x0e\xc8\x91\x54\x30\x72\x42\x05\xc9\x18\x9d\x3b\x03\x32\x9e\xa9\x05\xea\xb4\xc7\xad\xa3\x1e\xdb\x06\x80\x45\x5a\xfe\x7f\xfe\x72\x4b\xeb\x76\x92\xe8\xf2\xbe\x79\xcf\xc8\x03\x2b\x82\x1e\x80\x30\x29\x2d\x8d\xb5\x54\xd3\xb2\x55\x48\xab\xe5\xc6\xae\x16\xcc\xc5\x92\xa6\x8c\x03\x6c\xdc\xd4\x03\x90\x53\x0f\x9e\x80\xea\x92\x8e\xf1\xf5\x9e\xa4\x76\x85\xe6\x27\xc1\x7f\x28\x19\x19\x5e\x84\xc8\x7a\xa6\x34\xd7\xc6\x9e\xee\xb4\xc6\xc3\x38\x32\xb6\xa3\xb3\x9c\xfe\x5d\x0a\x72\xf9\x66\xe4\x3e\x7a\xfc\xa4\xe0\xd9\x4a\x24\xe8\xdf\x4b\xc5\x2c\x3b\xee\xe2\x30\xe0\xfb\x34\x39\xbb\x7d\x4f\x2e\xa8\xa1\xc8\xe0\x9d\xcb\x95\xa8\x28\xbc\xc5\xc2\x31\x17\xa9\xfb\x29\xe2\xdc\x8f\xcd\x64\xed\xee\x5d\x6d\x92\x97\xe2\x86\x9f\x3e\x0e\xf7\xc4\x8c\x13\xa0\xf1\xd3\xf7\x32\xed\xcc\x91\xff\x60\x01\x78\x8e\xfd\x49\x6e\x07\x20\x56\x67\xef\xc1\x71\x26\xf6\x3c\xbb\x7f\x7e\x67\x35\xce\xd6\xc4\xab\x15\x1b\xf1\xd0\xea\x38\xe7\x9b\x48\x4f\x07\xda\x61\x51\x03\xce\x8d\x63\x28\xe3\x4c\x8e\x89\xc3\xf7\x7d\xcf\xf7\xd3\xc7\xe1\x0e\xd3\xfd\xf4\x71\xf8\xb8\x53\xdd\x49\x3c\x6b\x4a\x67\x15\x0f\xae\xc2\x31\x9a\x62\x57\x7b\x99\x6b\xb0\x2f\x69\x6b\x9f\x70\x5a\x95\x55\x72\x0b\x94\x0e\x2f\xbf\x14\xe8\x7c\xe6\x8c\xfc\xa3\x19\x85\x38\xe6\x10\x5d\x07\x9b\x6a\x77\x59\x5b\xca\xee\xb7\xd7\x6a\x74\x40\x9f\xc8\x05\xc3\x2b\xcb\xf4\xd4\x3b\x02\x84\x1e\xab\x3b\xbc\x07\xb7\xcb\xf4\x14\xe9\x2a\x41\x2f\xcc\x34\xc2\xa6\x23\x34\x11\x89\xf0\x13\x9d\x53\x9e\xd1\x31\xcf\xb8\x59\x58\x0e\x7d\x3c\xa8\xb9\x96\x6a\x98\xf2\x5e\x0f\xf3\x8e\xa2\xc5\x92\x81\x8a\x1c\xd9\x91\x4e\xc0\xc0\x75\x3c\xa8\xa4\x8a\x19\x53\x2e\x08\x11\x45\x8f\x9a\xc8\xa1\x99\x01\x6c\x6b\x48\x1c\x6d\x51\x65\x3b\xbb\x07\xc0\xdb\xf3\xd1\x95\xa1\xd9\x3e\x2b\x19\x1a\xfc\x30\x72\x39\xe1\x9e\x33\x4f\xc3\x78\xa9\x56\x5c\x0d\xd0\x6a\x6b\xcb\xf6\x7c\xed\xa7\x8d\x53\x24\x04\xa3\xed\xc0\x04\xed\x54\x85\x63\x82\x3e\xbe\xbe\xe6\x46\x89\x58\x36\x72\xa4\xc4\xa5\x4b\x42\xbe\x69\x71\xeb\xdb\x16\xa9\x02\xba\x24\x58\xf0\x3b\xdf\x35\xe4\x6a\x06\x6e\x15\xdb\x91\xab\xf5\x6c\x12\x56\xcc\x26\x5d\xee\xa9\xcf\x59\x31\x7b\x3b\xaa\x9b\xe7\xec\x3b\xf2\x76\xb4\xe2\x5c\x02\x90\x61\xb5\x1a\x8d\x76\x87\x9a\x64\x7c\xc2\x0c\xdf\xb2\x84\x07\x38\x99\xb9\x14\xdc\x48\xb5\x3e\x2e\x99\x74\x3a\x6d\x7e\xb8\xae\xfc\xb0\xca\xe4\xf1\xde\x8d\x80\x0e\x70\x89\xcc\x32\x96\xf8\x3c\xd6\x00\x52\xff\x89\x55\xca\x0b\x73\x3a\x7b\xc8\xf2\x8f\x8a\xca\x09\x6e\xe8\xc9\xc7\xcb\xb3\x8b\xf7\x97\x83\x3c\xfd\xd9\x4c\xde\xf5\x8d\xec\x97\x9a\xf5\x79\x8b\x54\x21\x4f\xe7\x46\x88\x4f\xd1\x2a\x73\x55\x1d\xa4\x1f\x7c\x00\x23\xf9\xa4\xd1\x6d\x00\x4c\x39\xfe\x52\x48\x4a\xd3\x23\x8a\xba\x20\x45\xea\x2c\x41\x65\x96\x21\x94\x8d\x62\xac\x17\xab\xd4\x1b\x63\x33\x3a\x2f\x68\x57\x23\x42\xb5\xa8\x87\x25\xd0\x8f\x8f\x5c\x5d\x68\xfd\x76\x21\x62\x13\xe4\x46\x61\x0c\xef\x7f\x01\x57\x4d\x46\x82\x7f\x16\xf8\xdb\x4e\xa4\xb2\x58\xa3\xea\x18\xc0\x4c\x02\x8b\x3d\x29\x35\x53\x03\xc7\x31\x1e\x1d\x50\x1d\x92\xf5\xec\x90\x23\xad\x09\xa6\x8f\x6c\x82\x0e\xc9\x3e\x67\xae\x93\xa2\x68\x69\x66\x4c\x18\x9f\x72\xdc\x01\x63\x25\xdc\x9c\x87\xf3\xa3\x03\xaa\x65\x7a\xa0\x6e\xc9\x7c\x5e\x12\xe0\x74\x41\x43\x7b\x50\xee\x45\xb7\x43\x74\x94\xa2\xa9\x04\x17\x08\xcc\xe9\x56\x43\x30\x9a\xe6\x5c\x3c\xc3\x83\x98\x70\x91\x6e\x5b\x7f\x23\x71\x1d\xf4\xa8\xcb\x51\x38\x8a\xb7\x9e\x87\x9b\x38\xea\xf5\x1a\x0c\x21\x77\x77\x72\xf5\x1b\xb9\x56\x87\x2e\x5f\xe8\x1f\xb2\x3e\x7e\xa5\x5f\xa4\x15\x54\x5e\xae\xd7\xf6\x6f\xc0\x79\x84\x4b\xb3\x3d\xed\x2f\xf9\xf7\x13\x68\xee\x0d\xa9\x2e\x32\xcc\xbd\x78\x33\x54\x4d\xd1\x3e\x68\x0b\x33\x82\x61\xf9\x15\xa7\xbb\x5a\x10\x14\x54\xd1\x9c\x19\xa6\xd0\x75\xcc\x39\xa3\x09\xe7\xd5\xff\xa1\x60\x62\x64\x68\x72\xbb\xef\x14\xa2\x2f\xfc\xf4\xe1\xf8\xe9\xae\xb7\x65\xde\x49\x26\x0d\x98\xe0\x12\x0a\x2d\xe2\x9b\x59\x2e\x1c\xb3\x79\x26\x74\x25\xe4\xf1\xea\x62\x89\x08\x79\x9c\xea\x4c\xb4\xca\xeb\x85\xc6\x07\x70\x11\x0b\x89\xe9\xc0\xf5\x1d\xa1\xb0\x1f\xa6\xd7\xfe\x10\x38\x39\x66\x97\x7b\xa7\x8a\x1e\xe4\x32\x65\x64\xcc\x4d\x75\xd2\x35\x33\xa4\x60\x2a\xe7\x2e\x00\x5a\x0a\xac\xc1\xc7\x52\xe4\x5e\x96\x53\xb9\x4f\x47\x9c\x4d\x10\x99\x18\x5f\xe4\x8a\x8c\x99\xb9\x63\x4c\x90\x57\xaf\x5e\xbd\x02\x79\xe3\xd5\xaf\x7f\xfd\x6b\x02\x19\x17\x52\x96\xf0\x7c\xb9\x21\xb4\xfa\xaf\xd7\xaf\x07\xe4\x8f\x67\xef\xdf\x81\xff\x55\x61\x34\x19\x4b\x33\x73\x23\xdb\x06\xb5\xce\xba\x47\xfe\x67\xf4\xe1\xca\x8b\x09\xba\xf1\x2b\xa8\x14\x61\x79\x75\x67\xba\x57\xbf\xfa\xfa\xeb\x01\xb9\xe0\x0a\x22\x6f\x39\xc4\x0a\x04\x77\xc1\xc2\xbb\xd0\x09\x69\x96\x63\xdd\x1d\x9b\x70\xee\xb4\x39\x9f\xce\x0c\x56\x4b\x02\x4c\xc9\x78\x62\x30\xfb\x1e\x1e\x76\xcc\x85\xa4\x5d\x28\x89\x0b\x8c\x72\x8e\x23\x30\xb9\x1e\xc9\xf8\x2d\x23\x13\xfd\x8d\x92\x65\x51\x05\x04\x2a\xa6\xad\x8c\xea\x6a\x31\xe1\x60\xd5\x5e\x69\x66\x9e\xd4\x93\xa1\xa5\xa5\xa6\x86\x74\xc3\x9a\x00\xd2\x0b\xf9\xc7\xfa\x88\x09\x05\xe5\xc1\xb9\x0e\xae\x9b\x6b\xd9\xef\x83\x16\x99\x46\xe7\xd4\xc7\x77\x14\x4a\x7e\x8f\x9b\xc4\x85\x8f\x14\x72\x32\xaf\x76\x32\x97\x0b\xcc\x04\x9b\x2d\xaf\x47\xae\x5b\xbe\xe7\xa2\xe2\xa3\x18\xa3\xe1\x24\x0e\x46\x83\xd0\x6d\xae\xed\x27\x6a\xc9\x21\x57\x7c\x39\x2e\x4f\x68\x66\x1a\x77\xb4\x14\x4b\xbd\x5d\xad\x11\x47\x69\x5c\x05\x1a\x17\xe6\x55\x8d\x81\xee\xaa\x2e\x48\x26\xaa\x6b\x54\x4b\xd8\x56\x73\x92\xd1\xcc\x94\x0e\x34\xe0\xab\x64\xbf\xcd\xb4\x76\xb1\x36\x39\x55\xb7\x56\xec\x77\xe7\x7f\x00\x9e\xc1\x3a\xc4\xf9\x60\xd0\xd5\x9c\x85\x22\x75\xb1\x67\xbd\xfd\xc8\xe1\x60\x70\x88\x07\x44\x2a\xcc\x77\x89\xd8\x6e\xdf\x3f\x51\x4c\x71\xdd\x73\x9b\x16\x51\x09\x3a\x57\xda\x83\xd6\x3c\x82\xa9\x83\x54\x9b\x2c\xb7\x9d\xc4\x97\x6e\xf9\x82\xdb\x66\x0c\xc6\x96\x45\x9b\xb2\x05\x5d\x25\xa8\x0e\x09\x86\xd7\xd7\x4d\x71\x47\xa0\x5d\xce\xe0\xce\x39\x70\x09\x7a\x45\xec\x32\xc7\xae\x4c\xce\x05\xb1\xd5\x2a\x66\x3d\x7f\xae\x36\x9c\x60\xf8\x47\x9d\x56\x39\x5a\x10\x49\x08\x55\x75\xaa\x2a\x16\xe4\x59\x33\xaf\x18\x5d\xba\x65\x63\xef\xc2\xc8\xf0\x69\x77\x49\x80\xcf\xd2\x39\x08\x34\xb3\xa8\x55\xbb\xc8\xd0\x00\x00\x72\xa3\x3f\x2c\x03\xf2\xde\xd1\x54\x44\x2e\x3a\xd6\x32\x2b\x0d\x76\xad\x7e\x8c\x09\x2e\x0c\xea\x53\x0e\x00\x95\x0d\xcd\x22\xf2\x6b\xaa\x7a\x5f\xed\x28\x31\x3e\x1d\x0e\xe3\x4b\xea\xcb\x27\x4b\x2b\x5b\x65\xec\xd6\x0f\x96\x62\x36\xd1\xbc\x8b\xaa\x34\x1a\x92\xa3\xaa\x54\x86\xbf\xe6\x1e\x0a\xc3\xd4\x84\x26\xec\x38\x56\xa1\x42\x49\x92\xe0\x59\xe3\x63\x03\x66\x54\xa4\x19\x8a\xd6\x09\x53\x80\xf2\xec\x8b\x2b\x96\x6b\x3f\x91\x2a\x0e\x45\x60\x8f\xde\x30\x2b\x0f\x32\x6a\x4a\xc5\x5a\x45\x18\xed\xd7\xad\x10\xa6\xb1\x2f\xa5\x0d\x06\xeb\xea\x52\x01\x9d\xbc\x84\x2a\xa2\x63\x55\x81\x09\xa1\x8a\x20\xd5\xb1\x5a\x3a\xb0\xa8\x04\xf4\x18\x48\xc5\x42\x96\xca\xd9\xbd\x7d\x6e\xd1\x44\x2a\xab\x08\xe1\xc0\x54\x13\xc5\xa6\x56\x5a\x55\x20\xd6\x62\x8b\xac\xb4\x2f\xf6\xea\xfc\xb5\x67\x27\xb9\x4d\x2e\x6e\x13\x27\x3e\xcb\x39\x4f\x3d\x8b\x84\xbb\xa5\xaa\xc4\x5f\x41\x75\x14\x77\x12\xa5\x63\x8f\x20\x8c\xc2\x38\x30\xd2\x10\xd1\x59\xf3\x9f\x8e\xad\xbb\x12\x12\x3d\xb4\xa8\xa5\xd0\x85\x08\xcb\x94\x5d\x97\xe3\x8c\xeb\xd9\x68\x47\x53\xe0\xd5\x8a\x21\xd0\x61\x60\xe9\xa2\x6e\xad\x79\x50\x33\xa1\x39\xb0\x3c\x4b\xc6\x2d\xb3\x85\xda\xc1\x12\x80\xe8\x7b\xc7\x98\x29\x21\x30\x22\x63\x2e\x9c\xdf\xfe\x14\xcd\xc3\x45\x68\x61\x02\x8f\x94\x7d\x12\x45\xed\x7d\x42\xb3\x4c\x37\xa3\x57\x3d\xa1\x45\x99\xc3\x47\x6d\xe1\x9e\x72\xbb\xdd\xa1\x4c\x48\x23\x15\xe4\xda\x85\x69\x92\x4b\x8c\x70\x11\x44\x0a\xdf\x08\xf2\x90\xf8\x0e\x51\x54\x1f\xc4\xee\x02\xca\xec\xb9\x8e\xe2\x8b\x0d\xf4\xe1\x6c\xa0\x3b\xde\x34\x54\x95\x94\x68\x14\x11\x5c\x2f\xf5\xec\x49\xa9\x27\xb9\x5b\xae\x24\xf6\x7a\x2b\x80\xdf\x3c\x33\x58\x9e\xbc\x73\xce\xb3\xcf\x8d\xee\xc0\xa6\xad\xde\x01\x87\xb7\xef\x34\x8b\x24\xc2\x4c\xa7\x10\x84\x23\xb0\x7c\xe4\x2b\x9e\x03\xec\x06\x5f\x1e\x6a\x92\xca\xa4\x0c\xb9\x51\x01\x68\xd5\x05\x58\x9b\x0c\x82\xa4\xeb\x71\xea\x9e\xd6\x2a\xfe\xc8\x56\xac\x4a\xe5\x9d\xb8\xa3\x2a\x3d\xbb\xde\xe2\x97\x5e\x67\xe7\x55\xaf\x58\x50\xf2\x83\x41\x25\x3c\x3a\x96\xa5\xa9\xd2\x67\xfe\xb4\x4d\xcf\x46\x5a\x8a\xd0\xd2\xd2\x4c\x5e\x8c\xd7\x2f\xc6\xeb\xe6\xf3\xe0\xc6\x6b\xdb\xa7\x9e\x0b\xb6\x76\x5c\x7d\x8a\x01\x9e\xb5\x75\xa5\x7d\x48\x2b\x68\x44\x60\x90\xba\x37\xfd\xe0\x1b\x72\x1b\x1e\x91\x6a\x6f\x23\x59\xcf\x53\x20\x60\xd5\x4f\x6f\x31\x7d\x20\x3b\x68\xfb\x5a\xbd\xf8\xac\x73\xc1\xdd\x54\xbb\x17\xa4\x86\xa8\xd8\x6e\xcf\x65\x42\xee\x39\xbd\x4b\xa4\x55\x19\x3b\x4c\xc4\xdc\xa1\x54\x27\x3e\x1d\x81\x4f\x3a\x6f\x00\xe9\x58\x48\x17\x9f\xae\xbb\x41\x76\x28\xaa\x8b\xcf\x13\x97\xd6\xc5\xa7\xb3\x89\x9b\x74\x2f\xb3\xbb\x62\xb9\x0f\x5b\x6c\x77\xc7\xa5\x3d\xbe\xf5\xbe\x57\x95\x78\x7b\xfe\x6c\xfd\xc5\x7a\xbf\xf4\x3c\xa2\xf5\x3e\x22\xdc\x9e\x18\x38\x00\xc4\x16\xfd\xd8\xdc\xe6\xcd\xfa\x63\xe6\xc5\xca\x41\x95\x81\xcc\xa2\x9c\x37\xe8\x4b\x55\xbf\x36\x3d\x1c\x0c\x0e\x0f\xbd\x99\xdf\xe1\x67\x69\x26\xfd\xdf\x10\x26\x12\x99\xe2\xa6\xda\xf1\x95\x36\xc0\xf4\x2b\xed\x3c\x9e\x4b\xee\xbf\x15\x5f\xbd\xc2\xd8\xdd\xb6\xa4\xc3\x09\xee\x5e\x3a\x7b\x15\xa4\x1f\xa3\x80\x76\x5c\x26\xbb\x5e\x15\x1b\x5b\xdc\xa7\x14\x76\x0c\xbc\x07\xe7\xaf\xad\x8b\x63\xe3\xb3\x0b\x7b\xdd\xa1\x50\x36\x3e\x8f\x5c\x2e\x1b\x9f\x9d\x38\x6a\xa7\xd2\xd9\x2b\x16\xf7\x78\x05\xb4\xf1\x79\xa6\xc5\x54\xea\x4f\xa7\x62\xda\xf8\xec\x56\x52\xbb\xde\xb7\xe3\xd6\xef\xa5\xbc\x36\x3e\xdd\x8a\x6c\xe3\xb3\xef\x52\xdb\xf8\xb4\x84\x04\xd8\xc0\x2f\x78\xa7\xe0\x81\x4b\xd7\xa7\xee\xf9\x68\x58\x5e\x48\x45\xd5\x82\xa4\xce\xd6\xb0\x58\x11\x80\x19\x45\x60\xde\x3b\x2b\x0a\xcc\x3d\xe5\x6a\x4f\xf1\x03\x1d\x82\x2f\x59\xca\xcb\xb5\x25\x8b\xd7\x81\xed\x3b\xc8\x86\xe5\x32\x69\xf9\xcb\x4d\x1c\x2a\xa4\x12\xa4\xc9\xad\xab\x91\xe3\x61\x88\x9c\x3e\x4e\xb9\x73\xd0\xc8\x7c\x0c\xc6\x30\xb8\xe9\x73\xb5\x00\x7d\x63\x1c\xbb\x66\xb8\xc2\x2b\x0f\x77\xf7\x7f\xe4\x1a\x1e\x5b\xf9\xe3\x3d\x30\xbd\x47\xda\x13\xd2\x31\xc8\x8c\xff\x9d\x41\x81\xad\xce\x29\xac\x24\x88\xdd\xa1\xf0\x57\x26\x93\xe8\x62\xb9\xc6\x7e\x00\xea\x01\xb3\xbd\x61\xde\xc2\xde\x7e\x1d\x85\x07\xb0\xe8\x64\x1a\xef\xea\x78\x02\xb9\x1b\x41\x44\x07\xd8\x05\x78\xdf\x44\x65\xf0\x4a\x6d\xbf\x04\xa9\xd5\xa3\x36\xd5\x87\xee\x7c\x0a\x49\x13\x55\x2a\xab\x2b\x16\xf6\x97\x91\x87\x40\xa4\x94\x41\x78\x82\x97\xc2\x75\x09\x32\xa0\xfb\x8a\x93\x85\xe4\x04\xee\xa3\xaa\xba\x5f\x21\x7b\xe1\x12\x56\x09\x9e\xd5\xd1\xca\xa7\x6e\x0b\x0b\x2f\x85\xf3\x22\x58\xc2\x91\xd5\x28\x52\x6a\xa6\xfa\xd3\x92\xa7\xbb\x20\xc7\x33\xe6\x6e\xad\x79\x5a\x77\x4e\xd6\x91\x7f\xdd\x83\x6b\x05\x2f\x8b\x0e\x74\xff\xe0\x32\xb8\x66\xd4\x08\x7f\x9c\x12\xae\xee\xa6\x41\xbd\x27\x40\x38\x72\xfe\xbe\xe7\x26\xe8\xad\x8e\x21\x24\x8b\xc4\x85\xc9\xf2\x5a\x3e\x47\x1c\x16\x31\x0f\xbc\x52\xfb\xf6\x3f\x5e\xbf\xf5\xc6\xfa\x31\x9b\xc8\xaa\x04\x08\xaa\x3b\xce\x97\x36\x65\x19\x83\x3a\xe9\xbe\x06\xbb\x6d\x00\xd7\xbc\xb9\x9c\x5b\x64\xfe\xb3\x20\x9f\x7c\x52\x7a\x3e\x39\x25\xf4\xb8\x16\xaa\xe0\xca\xaa\x08\xc6\x52\x74\xb0\xcd\xaa\xef\xa8\x52\xe8\x1e\x19\x1f\x7b\x67\x13\x38\x71\xc2\xca\x7c\x99\x17\x67\x51\x69\x56\xcc\x02\x00\x02\x7e\x95\xcc\x89\x16\xb4\xd0\x33\x09\xd5\xf5\x13\x5a\xd0\x84\x9b\x85\x05\xb7\x51\x34\xb9\x85\x32\x3c\x8a\xb9\x2f\xf6\x48\x72\xec\xfc\xb5\x62\x08\xd6\xdd\x7e\xcd\x4c\xc9\x72\x3a\x03\x4f\x56\x6c\x95\x64\x54\x7b\x00\xac\xec\xef\xb4\x19\x4d\xd2\x85\xa0\x39\x4f\x42\xd2\x3c\x25\xe7\x5c\x73\xe9\xac\xb9\x38\xae\xc5\x7a\x72\x1d\xf2\x9e\xa1\x91\xf8\x3c\xa3\x3c\x27\x47\x9a\x31\x12\x10\x03\x7f\x71\xd5\xda\xd1\x78\xa1\x98\xed\x1e\x5b\x90\x65\x48\xde\x2d\x5c\xc6\x81\x8a\xd2\x85\x2b\x2a\x64\x94\x70\xdc\xd2\xd5\x9f\x3e\x0e\x5b\xb7\x7a\x66\x52\xc1\xc5\xbc\xcf\x5a\xc9\x44\x2a\xa3\xeb\xc9\xb3\xeb\xa1\x8e\xd5\x0e\xc4\x33\x97\xdb\x0d\x7e\xc8\xa4\x98\xc6\x21\xfb\x15\x96\x5a\xb2\x2a\xa0\x96\xc9\x9c\xa7\x25\xcd\x90\xa0\xba\xc9\x9c\x8f\x86\xd8\x9d\x4f\x67\xa6\x7f\xc7\xc0\xec\x82\x7c\xa7\x72\x6d\xf2\x1f\xe5\x4b\x6e\x39\x5c\x03\x01\x36\xce\x6c\x80\x26\x2c\x3b\xb5\x3b\xba\x80\xfc\x2e\xce\x85\xa4\x76\x33\xea\x73\x6b\xe1\x10\x01\xee\x11\xd0\x61\x7a\x67\xa1\x36\x85\x95\x18\xc0\x2e\x65\xa1\x0c\x58\xbb\x3c\x37\x0b\xf8\x28\xd7\x5d\x78\xed\xca\x90\x51\xbb\x47\x20\xc5\xfd\x59\xa0\x85\x09\xae\x3b\xc6\x91\xef\x15\x0c\x81\x76\x6c\xcc\x70\x04\x8e\xf5\xee\x18\x7e\xc3\x04\x53\x3c\x69\xa0\x4e\xe8\x3a\xa5\x06\x0e\x1f\x13\xb6\x5b\x3a\xd8\xac\x1a\x3d\x80\x8c\x37\xaf\x50\xe9\xc6\x55\x23\xec\x28\x7d\x1c\x7c\x17\x59\xe1\xa2\x7b\x13\x7b\x4a\xa9\x48\xfb\x34\xb3\xf8\x79\xfd\xf9\xdc\xf9\x45\xe3\xb9\xab\xf9\x05\xf8\xc2\x42\x5c\x84\x4c\xd4\x56\x4a\x59\x79\xdc\x20\x00\x7e\xcc\x52\x20\x53\x71\x0d\xc6\x3b\xab\x70\x3b\x14\xb9\xfe\x7c\xde\x23\x7c\xc0\x06\xfe\xaf\xd0\xd4\xd3\x49\x23\xa7\xe8\x55\x18\x3c\x45\x01\xbb\x61\x2a\xb1\x6d\x2b\xee\xfb\xb7\xdf\xda\x49\xda\x5f\x7f\xd7\xff\x6d\x94\xdb\xf3\x77\x7f\xb3\xfb\xad\x6c\x83\xfa\xdb\xd8\x35\x2d\x24\xb2\xff\xdb\xb5\x4b\xf4\xec\xd2\x40\xff\xcd\xd5\xb7\x62\xc2\x58\xc1\xf4\x5a\xc2\xa5\x3f\x4f\x11\xe7\xe1\xdb\x8a\x7d\xef\xed\x94\x00\xa6\x60\x23\x4a\xa8\x61\x02\x58\x83\x8f\xe1\x10\xd2\x60\x77\x57\xca\xd5\xce\xff\x08\x2c\x0c\x18\x6e\xd6\x23\x46\x4a\x38\xf4\x48\x58\xce\x04\x61\xbe\xfc\x25\xae\x15\xc0\x41\x9d\xdf\x9b\xe7\x76\x76\x58\x0b\xe1\x10\x91\x6b\xe7\x01\x73\xfb\x85\x90\xe6\x17\x61\xfb\x1b\x85\xb9\xe9\x5c\x72\x9f\xd3\xdb\x9e\x47\x81\x45\x12\x43\x96\xe9\xf1\x82\xe4\x5c\x1b\x7a\xcb\x06\x64\x64\xb9\x59\x7c\xb9\x86\xd0\x13\x04\x72\x41\xb2\x94\x94\xc2\xf0\x0c\x7e\xad\xc6\xb1\x53\x8e\xb9\xdc\x70\x42\x74\x09\x15\xc3\x0b\xc5\xfa\x9e\x6f\xba\x56\x4b\x14\xa7\x5a\x4b\x2f\x6c\xf6\x8c\xa2\xb2\x51\xa4\xd0\x15\xe0\x41\x85\x43\xaf\x25\x6f\x30\x3b\x4f\x29\x92\x8a\x57\x02\x30\xf5\x80\x5c\x01\x7b\xcc\xfc\x0d\x33\xea\x3d\xce\x1e\x2a\x58\xc2\xb4\xa6\x6a\xd1\x83\x5c\xe9\x3c\xe4\xd7\x76\x0e\x40\x40\x3c\x72\x2a\x30\x53\xb9\x62\x89\x14\xda\xa8\x32\x31\x58\xba\x6e\xac\xe4\x2d\x13\xc1\xfb\x30\x10\xa6\xe0\x06\x56\xb9\xe3\xc0\xf5\x99\x24\xc9\x8c\x8a\x69\x54\xfa\x25\xa7\x29\xc0\xfe\xdb\x20\x57\xf9\xf5\x58\x08\xd0\x89\x15\x65\xb8\x01\x50\x8c\x2d\xc3\x0a\x56\xdd\x3f\x0b\xe2\x15\xf7\x5e\x65\x76\xb5\x4b\xe2\xd9\x16\xda\xd5\x89\x7e\x91\x8e\x36\xc2\x3e\x48\x09\x7b\x76\x23\xcb\x99\xa1\x29\x35\x74\x07\x57\xb2\xf7\x55\xbd\x3a\x5f\xb2\x1e\x6b\x86\x86\x7b\x4e\xc7\xed\xbc\x80\x27\x0b\x1e\x87\x4b\xc1\x49\x9c\x79\xc8\x43\xfc\xb5\xb1\x38\xe5\xee\x1d\xd0\x43\x0c\xc4\x27\x5f\x10\xcc\x0e\xef\x47\x43\x72\x51\x55\x3b\xac\xc8\x49\xbb\x5b\xad\x8e\x06\x5d\x0b\xfa\x1d\x60\x74\x53\x5d\xbd\x25\x75\x77\xb1\x95\x82\x0e\x72\x09\x26\x0c\x57\x2c\x8e\x4e\x73\xa0\x2b\x05\x22\x79\x03\x88\x00\xe5\x29\x33\xba\x72\x78\x41\x3a\x6c\x89\x8b\xe3\x77\x4e\xfd\x05\x22\xed\x00\xeb\x34\xc8\xd5\x12\x17\x82\x5d\x4b\x47\x67\x2d\xe5\x7f\x10\xb8\xee\x62\xc3\xc6\x0c\xfd\xef\x65\xda\xc5\xec\xdd\x48\x6c\x5f\x0d\x51\x79\x81\xa2\x3f\xaf\x06\x33\x02\x7e\x03\x2e\xbf\x74\x2d\xc6\x0e\x89\xdc\x8c\xce\x77\xb7\x79\x55\x92\x58\x3f\x24\x05\x86\xcf\xf5\xe1\x73\xfd\xd7\xed\x6d\x83\x5d\x1c\x4a\xfc\xd3\xda\xb1\xa4\xfe\x91\x4e\x86\x58\x4b\x52\x46\x1d\xad\xa7\xcd\x8c\xe5\x81\xda\xbb\xeb\xc8\x70\x05\xec\x42\x26\x18\xb7\x74\xe2\x94\xfc\xa2\xc6\xdf\x9d\x1c\x15\xb4\x32\xf4\xf4\x3d\xf2\x6a\xda\xc0\x6d\x82\x0f\x48\xaf\x37\x3f\x6e\x0c\x06\x82\xc5\x6a\x8d\xc5\x7b\x14\x07\x61\xcf\x0a\x66\x0a\xec\x72\x3e\x90\xc1\x22\x96\x92\x59\xc6\x14\x2c\xc1\xa9\x69\x8d\xeb\x78\xc8\x25\x8a\xc6\xe1\x5e\x50\x87\x83\x74\x29\xd8\x5d\x10\x23\xa8\xc6\xac\x2d\xfe\xea\x8c\xb9\x2a\x74\x6b\xc7\x0b\x5e\xcf\x67\x62\x81\x53\xbf\x08\xdb\xb2\x4e\x38\xef\xc5\x15\xdd\x60\x2e\x34\xbb\xa3\x0b\x0d\x18\x5f\x69\x0b\xe1\xfb\x2e\x43\x5a\x35\xf0\x47\x36\xc1\xde\xad\xaf\xd6\x76\xba\x5c\xdb\xe5\x7a\x0d\xe2\x2e\xb9\x68\xe3\xcb\x54\x75\xd8\x58\x85\xa3\xf9\xec\x72\x1f\x07\x0e\x2f\x70\x0f\xdf\xed\x72\xa5\x9e\xf2\xf4\x7a\x08\x43\x78\x69\x7c\x0a\x7f\x78\x5e\x13\x6e\x1f\xc6\xcc\x62\x75\x15\x51\x0d\x18\x12\xf7\x5d\xe1\x92\x50\xa1\xd6\xb7\x90\x16\xd5\x19\xa0\x43\xd9\x2e\xc5\xc0\xa5\x04\xbe\x38\x80\xb4\xff\x54\x2c\x1c\x0f\x37\x33\xae\xd2\x7e\x41\x95\x59\xa0\x7a\xda\xab\x7d\x2d\xb8\xe7\x77\x5a\xf8\x8e\xf7\x42\xed\x32\x0e\xaf\x85\x30\x2c\xde\x97\xde\x73\x86\xff\xb5\x70\x7d\x8c\xf5\xb4\x0f\x00\x58\xb9\x9e\xab\x28\x1e\xde\xeb\x82\x4f\xb6\x9e\x34\x26\x1f\xbb\x72\x8c\xc6\xad\x2d\x12\xfe\xb8\xf2\x93\x8c\x1d\xa8\x03\x47\x07\xe5\xc7\x4e\xa0\x67\x75\x4e\x5a\x95\xea\x8e\xcc\x86\x4e\x2a\xf0\xee\x37\xae\x50\x90\x58\x38\x63\x50\xfc\xad\x78\x80\x70\x2e\xc8\x91\x90\x02\xcf\x0a\xb6\x3d\x46\xef\xa3\x35\xd6\x2e\x68\xe2\x2a\xbc\xd5\x0b\x6c\x46\x67\xd3\xb3\x05\x2e\x52\xbb\x59\x40\xab\x41\x1f\xd2\x65\x92\x30\x16\x34\xe8\xb8\xde\x4b\x75\x96\xdd\x94\x7d\xa5\x48\x2d\x21\x95\x8b\x36\x34\xcb\x2a\xcd\xd5\x81\x4b\x02\x67\xf3\xc6\xc5\x88\xe1\xd5\x42\x73\x9c\x12\x0f\x35\xc8\xd1\x63\xa6\x14\x09\xde\xfe\x73\xb3\xf0\x33\x88\x39\x10\x74\x03\x95\x41\xa3\x42\xcb\x27\x68\xc9\x8a\x44\xff\x00\x4c\x20\x46\xae\x02\x7a\x9d\x17\xb9\xb4\x0d\x96\xf2\x8c\x69\x72\x7b\x47\x55\x0a\x95\x70\x0b\x6a\x38\x26\xe2\xee\xd5\x86\x3d\x8a\xe6\x00\x75\xe8\x63\xe4\x3b\x0e\x0a\x06\x94\xd7\x90\x8d\xcf\x10\x5a\x1a\x99\x53\xc3\x13\x50\x5b\xf9\x24\xb2\x4b\xe6\x21\x6f\x61\xa3\x6a\x1f\xd0\xd5\x50\xff\xfd\x06\xef\x7a\x14\x23\xe6\x4e\x12\x9e\x5b\x99\x80\x42\x01\x8a\x49\x88\x31\xf2\x46\xd4\x4d\x33\xb5\x82\xcf\x77\x60\xc2\x8e\x5a\xa1\x42\x6c\xd5\x25\x0d\xc3\x07\x1b\x69\x30\x0e\xba\x20\x9d\x5e\x83\x65\x13\xdf\xcb\x62\xb5\x9d\x6d\x84\xac\x3d\xbb\x41\x77\xcc\xca\x02\x7a\x23\xca\xea\xc1\xaa\x39\x61\x51\x58\x4d\x52\xae\x1b\x95\x9d\x8f\x52\x25\x8b\xc2\x99\x43\xf2\xe3\xe5\x39\xc1\xcd\x84\x9a\x33\x1d\x95\x2f\x46\x4b\xf8\x94\x89\x50\x7f\xdb\x65\xbb\x80\xd3\xdb\xfc\x08\x78\x76\x91\x28\xf9\xd9\xd1\x59\x56\xcc\xe8\x31\xf9\xe4\x0a\xf5\x04\xfc\x0d\x7e\x7b\xad\x24\x26\x34\xb0\x78\x8b\xe6\x8b\xa8\xd3\xf2\x79\x11\x75\x5e\x44\x9d\x7f\x6f\x51\x27\x38\x8c\xed\x2a\xe6\x7c\x0c\x5e\x92\x8d\xb2\xde\xde\xe3\xa0\x72\xa3\x7c\x78\xbb\x45\xf8\xd6\x03\x53\xc0\xdd\xa8\x0d\xba\x4e\xdc\x03\x73\x0e\xdf\xa1\xf3\x45\x55\xe1\xd9\x44\xfe\x20\x95\x2f\x8a\x95\x36\x4a\xc3\x22\xd0\x3b\x26\xd4\x19\xd6\xb5\xd8\xd2\x13\xac\x2a\xd2\x0f\xc3\xf6\x2b\xf7\x8f\x16\xa9\xc5\xe3\x67\x27\xa8\x93\x7b\x84\x51\xc6\xcf\x33\xf6\x00\x69\x2c\xb6\xbb\x8f\x23\xb9\xa7\x9f\x23\xb9\x8f\xaf\x23\xd9\xa7\xbf\x23\x09\x5e\xd3\xf7\x39\x31\x1f\xbd\xbf\x76\xe3\xcc\x38\xe2\xb4\xe9\xcc\xd4\xa2\xf5\xc3\x38\x5c\xfb\x8a\x75\xee\xb6\x2f\x9c\x01\xb0\x97\xc5\x5e\xb7\xee\xb4\x82\xe2\x83\x57\x7a\xec\x4b\xc8\x8d\x1b\xf1\xfa\xaa\x7c\xb3\x91\x70\xfd\x9f\x17\x98\x66\x07\x4e\x5d\xdf\xf9\x46\x79\xc5\xe2\xe5\x04\xbf\x9c\xe0\xb6\xfd\x9f\xf2\x04\xa3\x5f\x71\x17\xb7\xf7\xba\x5c\x8d\x97\x78\xe4\x87\x92\xa9\x05\x91\x73\x16\xf9\xd3\x40\x12\x60\xcd\x53\xe7\x91\xe2\x6c\x0e\xed\x65\xd9\x47\xe4\xf9\x60\xd1\xb8\xfc\x62\x25\x23\x88\x10\xbb\x07\x2d\x6b\x0e\x55\x0f\x02\x46\x68\x79\xa0\x7b\xe2\x65\xa9\x88\x1e\xb8\xec\x60\xd5\x1b\xd0\xf7\xcf\xae\x2e\x76\x53\x00\xba\xdd\xef\x90\x5d\xee\x78\x96\x16\x7f\xb6\x61\x81\x08\x88\xf0\x4b\xbd\xfe\x51\xd0\xd2\xc9\x2d\x5b\xf4\xdc\x95\xb0\xcb\x6b\xee\x1b\xa3\x67\x43\x3d\x19\x67\xdb\x24\x10\xab\x00\xb4\x03\x55\xdc\x4d\xab\xc6\xa7\x7d\xfa\xc6\x7a\x2f\x0f\x84\xae\xc4\x77\x67\xb2\xdd\x29\xcd\x63\xfc\xd4\x50\xc1\xa5\x26\x05\xc7\x39\xc0\x09\x48\x69\xe7\x9d\x8a\x03\x1a\x80\x23\x35\x50\x8b\xae\x9b\x48\x76\x57\x0d\xf1\xf1\x80\xbd\xf7\x52\x03\x9a\xd6\xbc\x62\x6f\xd9\xe2\x50\xbb\x78\x3c\x29\xf4\x8c\x17\x3e\x8b\x3a\x50\x02\x87\xb9\xe4\x33\x5c\x95\xfb\x21\xf0\xcc\x0f\x45\x8f\x5c\x49\x63\xff\x77\x09\x5e\x33\x68\xc8\x93\x4c\x5f\x49\x03\x6f\x1e\x1d\x58\x38\xdd\x7b\x83\xca\xd9\xf0\x38\x58\xe0\xd0\xbb\x0b\x62\x21\xbc\x37\x06\x80\xc4\x5d\x40\x06\xb0\x72\x4d\x86\x82\x48\xe5\x61\x62\x7c\xda\x5d\xed\x86\xf0\x36\x97\xc8\x60\xba\x62\x0c\x07\x4a\xa9\x6a\x90\xdc\x30\x5c\xb0\xbd\x72\xff\x0b\xd8\x64\xc0\x58\x1d\x5c\x48\x20\x79\x2c\x35\x6c\xca\x13\x92\x33\x35\x85\xc8\xcb\x64\xb6\xfb\x06\x75\xa7\xdb\xf8\xec\x44\xbd\xe3\x0f\x77\xc6\x0c\x60\x75\xef\xc0\x89\xe7\xbe\x0c\x13\x47\x41\x16\x91\xd3\xc2\x22\xc5\x3f\x2c\x27\x80\x7d\xf9\x17\x24\x7b\xd6\x03\x72\xe6\x2b\x70\xc6\xbf\x39\x43\x5b\x3c\x8c\x1d\xc1\xca\xf1\x3f\x94\x7c\x4e\x33\x86\xae\x6d\x54\x84\xbc\x98\x72\xb2\xc4\xa6\x7b\x2e\xe3\xb3\xa5\x52\xe1\xe2\xe4\xe0\x96\x2d\x0e\x7a\x4b\x88\x74\x30\x14\x07\x55\xf8\x73\x0d\x75\x02\x43\x03\x9b\xfa\x01\xfc\x76\xb0\x6f\xce\xfe\x44\xe2\xfc\x0e\x58\xe2\x8c\x40\xe7\x19\xd5\xba\x5b\xe4\xe8\xfa\xfc\x63\xa3\x68\xcc\x2a\x82\xc7\x39\x2c\x26\xe8\x10\xb5\x3f\x5b\x15\xf8\xd1\x77\x77\xae\xe9\x04\xa5\xb9\x2b\x1f\xd2\x3e\xf5\x41\x93\xaa\x86\x01\x42\xa0\xc4\x5d\x1c\x6b\x56\xdd\x49\xae\x81\xd7\x67\xb8\xf5\x90\x93\x38\x5f\x22\xd7\xa0\xe2\x72\x1f\x3a\x21\xa4\x21\x5c\x24\x59\x99\x62\x9e\x47\xe8\x0a\x0a\x72\x57\x91\x7e\x07\xe0\xdc\x03\x79\x3e\x87\x01\xbc\x3c\xe2\x6f\x3f\x97\x7c\x56\x9b\xd7\x54\x70\x35\x18\x6e\x7c\x10\x56\xfb\x5e\xeb\x64\x8b\x87\x60\x3d\x9d\xe5\x79\x5d\xc6\x78\xcb\xc7\x8a\x91\xf3\x19\x15\x82\x65\x51\xbc\xa8\x33\x64\x84\x12\x4e\x20\x78\xb8\xc2\x4d\x87\xf5\xca\x4d\x9e\x8e\x89\x10\x9d\xbc\xf7\xea\xb5\x3f\xee\x42\x4a\x7b\xab\x84\xed\xb2\x1a\xce\xe4\x1d\x49\x25\xb9\x83\x5c\xfe\x73\xcb\x8e\xe0\x26\x52\x7b\x46\x16\xcd\x14\x7c\x03\x12\x99\x17\x4a\xe6\x5c\x7b\x0f\x70\xb7\x71\x7b\x0d\xb0\xcc\xca\x16\x79\x73\xd6\x25\x5c\x79\x7b\x4e\x0c\x55\x53\x66\xec\x30\x44\x94\xf9\x98\xb5\x0e\xff\x7c\x88\x84\x5d\xcf\xbd\x42\xd4\x7e\x8b\x3c\x21\xe8\xbf\xfb\xee\xaa\x73\x29\xd8\x55\x3b\x78\x27\x55\x96\xde\xf1\x14\x2f\xbd\x34\x39\xb2\x03\x1f\x3f\xff\xba\xad\x77\x77\x3c\xbd\x1f\x00\xbc\x67\x8f\x05\x00\x01\x08\xb8\xca\x45\x1c\x72\x4a\xc3\x07\x8e\xc9\x25\xc7\xd8\x18\xfb\x17\x66\x6d\xc9\xc7\x5c\x54\x51\x58\x61\x33\x80\xae\xda\xf3\xe0\xb5\x09\xcd\x0c\x46\x35\x40\x60\x80\x34\x33\xa2\x79\x5e\x66\x86\x0a\x26\x4b\x9d\x2d\x5a\xa3\xc5\xd3\x00\x79\x92\xb1\x2f\x88\xc5\x5d\xf8\x55\xe8\x54\xe7\x5b\x53\x8c\xfd\xf2\x30\x5f\x62\x5c\x95\xbb\x50\x7a\x12\x98\x58\x08\x96\x61\x5f\x58\xe2\x3c\x5b\x8b\xac\x9c\xf2\x2d\xce\xfb\xff\x66\x29\xbe\xab\x24\xca\xa5\x66\x55\x64\x7b\xdb\x22\x26\x4f\x97\x91\xfb\x41\x99\xf5\xcd\xea\xb4\xdb\x29\x2b\x98\x48\x21\x23\x58\x84\xab\x38\xdd\xbd\xc2\xca\x65\xd7\xda\x9d\x42\x5d\x7e\x31\x8a\x5a\x72\x93\x43\x50\xa5\x4b\xd6\xc5\x27\x84\x8a\xf6\xa4\xe3\x79\x64\xc1\x25\xff\x76\x3c\xfa\xc1\x8b\x24\xdf\x2f\xf7\x3a\x52\x51\x87\xf6\xba\xee\xb0\xba\x22\x47\xba\xfb\x4a\xec\x59\x7a\xdf\x5c\xe9\x7a\x45\x7a\xe8\xc6\xac\x5e\x8a\x47\xfe\x28\x12\xa7\x4f\x20\x26\xb5\x4b\x3a\xa1\xb7\xd8\xa3\xa1\xd9\xba\x97\xcd\x62\xc4\x1b\x34\x59\x87\xb7\x11\x49\x87\xdc\x9d\x6e\x20\x17\x57\x43\xb4\x85\x65\xe5\xc2\x55\x0a\xb1\x8d\x58\x3d\x44\x3e\x6c\x6a\xa8\x66\xa6\x9d\x55\x63\xd9\x2d\xcd\x73\x7a\x1c\x05\x13\xb0\x83\x43\xb4\x0f\xcc\x24\xfd\xdf\x39\x99\x40\xd4\x5a\x5a\x69\xc0\x03\xc4\x67\x1c\x62\xe1\x9a\x16\xc7\x48\xed\x36\x24\xd4\xb4\xae\x16\xd3\x8a\xde\xbb\x19\x7c\xfa\xd4\xb9\xa4\xa8\xed\xd2\x58\xf1\x20\xe4\x1b\x28\x05\xff\xa1\x8c\x25\x75\xc8\xcd\x10\xd6\xe8\xda\xef\x6b\x21\xd3\x84\x55\x26\xa2\x0b\xae\x6f\xbb\x24\xcd\xfa\xe6\xfc\xb2\xde\xb9\x8e\xf0\xdf\x9c\x5f\x12\xf7\xb6\x95\x15\xa7\x8b\x19\xe7\xbe\x39\x9d\xa6\x09\xab\x4c\xa3\x29\xd7\xb7\x8f\x5e\xb0\xbb\x48\xaf\xb6\xf9\x19\x3f\xb6\x95\xc9\xe7\x15\x89\x92\xdf\x2c\x64\x49\xee\x5c\x24\xbd\x13\x6a\x6f\x78\x71\x4a\x2e\x85\x2e\x15\xab\x6e\x3f\x9b\xf2\xad\xe5\xa4\xcf\xa9\xb0\xf7\xbd\x70\xe3\x39\x9b\xb9\x0a\xaa\x0c\x48\xb6\x9d\xf3\x88\x41\xaa\x7c\xd7\xd9\x2f\x61\xcb\xd6\x0f\x27\xde\x07\xad\xe7\xa2\x84\x43\xb2\x2d\xdf\xc8\x6e\x76\x94\x18\x23\xde\xde\xb7\x21\x35\x0d\x39\x49\xd9\xfc\x44\xa7\xf4\x75\x0f\x3e\xe3\x43\x59\x4d\x6d\x4e\x54\x93\x83\xd7\x07\x03\x32\xe2\x39\xcf\xa8\xca\x16\xb5\xdc\xc0\x55\x3b\xcb\x02\xfc\x80\x70\x99\xf5\xea\x80\x1c\x49\x05\x23\x27\x54\x90\x8c\xf9\x38\x19\x77\xa0\x16\x28\x02\x1e\x3f\x36\x15\x21\x0f\x6a\x23\x44\x82\xd2\x15\x0d\x3e\x21\xbb\xa9\xa5\x41\xb9\xa8\x28\x36\x17\x96\x8c\x0f\xc8\xa7\x55\xa5\xaf\xe1\x6c\xf8\x16\x4f\x05\xca\x07\xd5\xcd\xee\x59\x37\x7f\x49\xa1\x7b\x3a\x30\x6d\xd7\xea\xa6\xdc\x7c\x64\x85\xec\x24\x00\x60\x97\x86\x25\x8c\x1b\xfb\x42\x6a\x0e\xf9\x32\xa9\x81\xea\xb3\xca\xf0\xa4\xcc\xa8\x95\x89\xd1\x0e\x36\x20\x17\x97\xd7\x1f\x2f\xcf\xcf\x6e\x2e\x2f\x4e\x89\x1f\x89\xc7\xd2\xda\x80\xdc\xc4\x59\x84\x22\x97\x57\x97\xaa\x25\x7c\xab\xe7\x88\x0f\x15\x55\x1a\x42\xc8\x0d\x41\x05\x19\x0a\x6e\xaa\x2c\xbd\xe8\xa4\x95\x49\xe1\xdc\xae\x6c\x6f\x67\x87\x9b\x72\x74\x9d\x10\x6e\x30\xfb\x73\x7d\x34\x38\x1d\x98\xf1\x33\x4c\x65\x8b\x16\xf7\x00\x92\x43\x05\xdc\x7d\xc9\xee\x3e\x31\x67\xc7\xe3\x71\x83\x06\xf6\x2a\x37\x2a\x52\xfc\x90\x0e\xdc\x67\x45\x59\x51\x28\x99\x58\x5e\x72\x38\x38\xf4\x82\x42\xb6\x94\xfa\x3d\x0c\x1a\x27\x7e\xaa\xe3\xd6\x80\x90\x0f\xde\x85\x19\xa2\x56\x57\x67\x91\xc7\x54\x02\x51\x2e\xf2\x06\x86\xfa\xd2\x00\xe5\x38\xfe\xa8\xcb\x14\x35\xe5\x73\x26\x70\x61\xfb\x25\x48\xfe\xf3\x1d\x61\xfe\xb1\x9a\xf7\xa7\x8f\xef\xf6\x3b\x25\x3c\x67\x1d\x27\x74\x2e\xf3\x1c\xf3\x07\xcd\x42\xf4\x59\x15\x40\x16\x4e\xfb\xde\x14\x16\xcc\x84\x34\xd9\x82\xd4\x0d\x3a\xe5\x3b\x35\x14\x94\xf0\xda\x79\xe3\x8b\x4a\x4e\xed\x9e\xe6\xd7\x25\xdd\xd2\x3e\xa5\x86\x23\xd9\x27\x61\xc6\x27\x1f\x2f\xcf\x2e\xde\x5f\x0e\xf2\xf4\xd1\x49\x06\x13\x69\x21\xb9\x30\x7a\xbb\x5a\xb2\xad\xa8\x49\x7b\xb2\x12\x3e\xda\x95\xeb\x5e\xfa\x8e\xb1\x8b\x83\x1f\x2d\xca\x55\x96\x32\x43\x79\xa6\xa3\x7d\x34\xb2\x90\x99\x9c\xae\xce\xf9\xdb\x61\x83\x7e\x86\x99\x47\xfa\xb4\x6f\x77\x7e\xbf\xf2\x7a\x9b\x52\x0d\x75\x78\xf8\xd2\x0c\x90\x63\x30\xac\x35\xc8\xc1\x50\x51\xe1\x99\x2e\xf7\x41\x04\xaf\x25\x18\xa0\x36\x08\x87\xd8\xa7\x71\xab\xf2\xa2\x45\x65\x52\xda\x4a\x64\x0f\x0d\xba\xed\xc2\x98\xa5\x41\xdb\x6b\xe1\xd4\x61\xf6\x07\xd7\xa7\x4e\xe4\x0a\xc5\xfa\x21\x91\x0f\x54\xef\x90\x2a\xe2\xae\x31\xcd\xf3\x86\x17\x6f\xa6\xc1\x56\xd9\xa2\x69\x80\xa9\x64\x9f\x60\xb5\xc2\x38\xf4\x2c\x5b\x54\xa9\x01\x9d\x2a\x4c\xa7\x98\xa0\x47\x39\xfb\x6d\xa1\xf8\x9c\x67\x6c\x0a\x49\x40\xb9\x98\x46\xb5\x14\x7d\xc4\x3a\x24\x87\x67\x4b\xf3\xb2\x5b\xa5\x4d\x9c\xfa\x19\xf0\xe2\xea\xc3\x0d\x24\x96\x85\x4b\xc1\x7b\x0b\xd8\xf6\x83\x50\x68\xa4\xdf\xef\x83\xde\x7f\xf4\xbd\x95\x15\xd3\xec\x98\x7c\xc7\xdc\x77\x24\x24\xbf\x55\x50\x6d\x66\x26\x43\xf6\x51\x98\x6b\x05\x59\x40\x47\xbc\x34\x77\xad\x4e\x6c\x4b\x2b\x18\x21\xbb\xa9\xb5\x87\xe2\x9a\x98\xce\x0f\xef\x7b\x1e\x5f\xae\xdc\x23\xe9\xdf\x99\xca\x79\xab\xe8\x2a\xfc\x0c\x37\x32\x85\xa3\x87\x94\xe8\x45\x9e\x71\x71\x5b\x65\x8c\x9a\x48\x8b\x43\xe8\xa3\xcf\xc5\xad\xc7\x58\xc5\x68\xb6\x9e\x52\xee\x82\x1f\x7b\xa5\x92\x66\x07\xe3\xdd\xcd\xa2\xc0\xbb\xf0\x70\xec\xdd\x55\x6f\x4c\xe2\x0e\x0e\x9e\xdd\x7a\xb9\xee\x56\x69\xfd\x70\x38\x3a\x1f\xd5\xaa\x84\x5a\x9d\x0e\xde\x3d\xa6\x71\x79\x1d\x4b\x80\xe5\x3c\xa1\x64\xc7\x7f\xd8\x76\x53\xdb\x27\x59\xb9\xbd\x0d\xba\xf9\x5c\x4b\x65\x68\xb6\x27\x22\x90\xcc\x68\x71\x56\x9a\xd9\x05\xd7\x89\x9c\xb3\xce\xaa\xce\xdd\x0c\xb3\xf6\xfa\x84\x71\xdc\x6f\x3a\x8e\x46\xce\xff\x70\x76\x4d\x68\x69\x77\xd1\xb8\xb4\x92\x7b\xbd\xe2\xf6\xf3\x1f\xa1\x43\xfd\x5e\x66\xef\xc6\x7a\xf0\xb9\xbf\x5c\x08\xec\xf1\x42\x00\xce\xf8\x73\xbe\x04\xe0\x82\x1b\x4e\x8d\x6c\x59\xcb\xaa\xae\xbf\x97\xda\xc8\xdc\xa1\xe7\xd0\x0f\x04\xb7\xb2\xc0\x70\x6b\x63\xd7\x73\xf4\x83\xa0\x0d\xc0\x19\x0a\x2b\x16\xd3\x84\x35\x3c\x00\x7b\x90\xb9\x11\xc7\xe6\xa1\xcd\x6f\x9d\x67\x26\xa4\x7c\xca\x7e\x77\x5a\xcb\xa4\xbd\x54\x08\xc1\x1b\x15\xaa\xe4\xfa\x7b\xb5\xc4\xf0\x1f\xba\x9e\x6c\x67\xf6\xc2\x55\xfd\x6f\x49\x33\x84\xc6\xd5\xbe\x6d\x44\x75\xc8\x76\x9c\xa4\xdf\x4f\x0f\xf3\xab\xa0\x35\x97\x1a\xb3\x45\x61\x0b\xa3\xa8\xd0\x76\x23\xea\xba\xd1\xa1\xbb\xda\x39\x24\x47\x26\x29\x5a\x97\x6b\x7f\x20\xcf\x6c\x9c\xaa\x83\xfb\xbb\xe0\x91\xdd\x76\x56\x0f\x72\xdb\x02\xb8\xdb\xd5\xb4\x51\x5b\x08\x32\x5b\xf2\x8e\x6b\xe3\xd3\xe2\xc3\x0b\xae\x5d\x4e\x57\x90\x74\xae\xad\xea\xc4\x8b\xbf\xd2\x34\x55\xa7\xc8\x49\x7c\x49\x5d\x05\xf2\x8e\xcf\xbb\x44\x45\xb8\x8f\x3b\x32\x8b\xc2\xa5\x66\xbb\x39\xbf\x26\x58\x15\xe3\x37\xbf\xc2\x72\x9e\xff\xf9\xcb\x5f\xbd\x6a\xbd\xa1\x4f\xe7\xfe\xbc\xa3\xe5\x60\xef\x37\x36\xcf\xc2\x6b\x0e\xc4\x05\xf4\x97\x03\x7a\xe8\xce\x2e\xe2\x91\xdd\xd4\x40\xa5\x77\x13\x2a\x5e\x3c\xcc\x9e\xd4\xc3\x8c\x84\xa0\x07\xa4\x09\xf7\xa7\x2a\x48\x50\xae\x9f\x1f\x41\xd9\x0a\x8b\xed\x58\x53\xc7\x16\x3c\xbf\x56\xbf\x8b\x6e\x9f\xc0\xe7\xfa\xe2\x6a\xf4\xd7\x77\x67\x6f\x2e\xdf\xc1\x2c\x9d\x5f\x95\x45\x03\x2e\x76\xf6\x23\x6a\x8f\x56\x6d\x34\xc1\xed\xc0\xe8\x76\xcf\x71\xf5\x76\xd4\x50\x94\xed\x9b\x8e\x97\x1b\xf7\x95\x96\xc5\xa4\xd5\xda\x1f\xd7\x74\x05\x65\x23\x98\xda\x5f\x88\xc3\xce\x16\xae\x28\x25\x53\x4d\x19\xb2\x3b\x85\x33\xbc\xb7\xbe\xb2\x75\x07\xc8\x33\x30\xe2\xdb\xf5\x22\x0c\xf6\x6e\xbe\x7f\x20\x58\xb5\x65\xf1\xaa\x7b\xec\xcb\xe1\x08\x7a\xf9\x4b\x1e\x7b\x48\xd1\x23\x47\x59\x7a\x6d\x29\x35\xd3\x21\xc9\xfd\x33\xc5\x94\x62\x55\x46\xdc\x2e\xd4\x6b\x65\x4a\xdd\x5a\x3d\xa8\xda\xc5\x46\x2d\x62\x60\x5d\x0e\x69\x7f\xb7\x4f\x9d\x7a\xa9\x0b\x9a\xec\x35\xf3\x63\xf5\x0a\xdf\x40\x48\xf5\xe3\x13\x40\xf8\xec\x1e\x1d\x4a\xc3\x78\x5d\x11\xf9\xdc\x77\x6c\x06\x72\x75\xda\x21\x5f\x4f\xa1\x90\x3e\x48\x2e\x8e\xf8\x7a\xe2\xed\x23\x8f\x42\x3d\xbf\xdb\x51\x75\xd9\xb7\xda\x52\xcc\xa4\x91\x62\x67\x27\xf1\xeb\x15\xdd\xeb\xe7\x18\x5b\x9c\x57\x45\x42\xa2\x0a\x7d\xe0\x61\x18\x0c\xfa\x56\x8c\xf3\x5c\x42\x0a\x6f\xda\xaf\x1b\xf6\x1f\x5d\xf2\x48\x87\x17\x7b\x3a\x73\x3f\xa6\xe0\xc3\xae\x26\xd8\xbd\xba\x50\xa4\x9d\x23\x2e\x86\x17\x4e\xee\xf2\x51\x15\xda\xa1\x1d\x59\x8f\x77\x7b\xe3\x8b\x52\x99\x3b\xa9\xba\x87\x1a\x5f\xd7\x3a\x36\x6e\xf5\xdd\x6f\x4b\xd1\x44\xcf\xf1\x8c\xe0\x1c\x9f\xf8\x9c\x8c\xe0\xc2\xb4\x91\x2b\xba\x79\x32\x82\x17\xfb\x03\x1c\x9e\xa7\x3d\x34\x3b\x72\xa1\x87\x0d\x49\xdd\xab\xe0\xed\xb1\xac\xe3\x0a\x3f\xbb\x6e\xce\x40\x60\xf7\xa6\x22\x12\x34\x1c\x42\x37\xfc\xde\x88\x82\x92\x58\xb7\xaf\x03\x3d\x18\x1a\x96\x63\x81\x5f\x9a\x65\x16\x96\x52\xc4\x69\x83\x5d\xd8\x69\x8f\x60\xe6\xdd\x9c\x16\xbe\x5a\xb2\xbc\x13\x77\x54\xa5\xe4\xec\x7a\xb8\x9f\xa3\xdf\xc1\xb5\x18\xf1\xa7\x5d\x26\xa8\x7a\x59\x45\x99\x32\x32\xe6\x46\x57\x05\xcf\x98\x89\xb5\x41\x4b\xde\xc2\x1d\x91\x3d\xa4\xf6\x40\xba\xef\x45\xdc\x4f\x10\x99\x18\x9a\x35\x0a\xd0\xbf\x7a\xf5\x0a\x8d\x57\xaf\x7e\xfd\xeb\x5f\x63\x11\x9a\x94\x25\x3c\x5f\x6e\x08\xad\xfe\xeb\xf5\xeb\x01\xf9\xe3\xd9\xfb\x77\x50\x10\xaf\x30\x1a\xd3\x5d\xe0\xc8\x58\x92\x3b\xea\xac\x7b\xe4\x7f\x46\x1f\xae\xaa\x52\x1a\xf5\x5f\x5d\x35\x63\xb7\xbc\x01\xb9\x88\x5c\x80\x62\xf3\x14\x35\x33\x57\xfb\xc5\x10\x3a\x99\x60\x99\xc7\xb1\xaf\x32\x8a\x47\xca\x47\x36\x43\x49\x66\xac\xd1\x60\xb7\x3f\x03\xdf\x24\xab\x48\xa3\x31\xcf\x07\xd7\xa3\xab\x15\x8c\x15\xe8\x1f\x4c\xa5\x87\x45\xbd\x27\x1a\x2a\x35\x54\xa9\xe0\x14\xd3\x56\xa6\x74\xa5\xe7\x70\xb0\x30\x75\x3b\x89\xa7\xbc\x83\x69\x5d\x41\xa0\x86\x58\x3e\x71\x6d\x55\x1d\xfc\x7b\xbc\x56\xdc\xe6\x1c\xfb\x40\x77\x22\x75\x9e\x1f\x66\x83\x7b\xe5\x42\xd6\x03\xb9\x20\x34\x93\x50\xe5\x28\x6c\x6d\xc5\x8f\xa2\x2a\xe3\xdb\x97\xd2\x39\xf3\x5e\xd7\xec\xab\x48\x85\xde\xd3\xd6\x35\x4e\xea\x26\xed\x28\xb4\x9f\x8e\x65\x69\xfc\x15\x30\x8e\x89\xe5\xfd\xb0\xc6\x74\x87\xcc\x81\x3b\x24\x1b\xdc\x25\xe9\x6c\xe7\xbc\x95\x75\x32\x5f\x13\x02\x7a\x84\xd1\x64\x46\x6e\xd9\xa2\x8f\x84\xa9\xa0\x10\x8d\x12\xaa\x48\xb9\xdc\x8e\xf5\xfb\x92\x84\xa5\x56\xb2\x75\xc0\xf2\x37\xea\x15\x16\x85\x68\x16\x2f\x3e\x6a\x27\xe9\xb8\x9c\x91\x22\x52\xe0\x7d\x62\xe2\xa8\x0e\x6b\x48\x12\x89\x45\x98\xeb\x51\x17\xf6\x7c\xb1\xd4\x76\xd3\x9b\xbe\x5c\xb9\x11\x58\x42\xe7\x58\x55\x29\x96\x7a\xbb\xa2\xc3\x4e\x6c\x83\x0f\x52\x9f\x8a\x37\x72\x45\x80\xd2\x66\xae\x9c\x8d\x6b\xeb\xa1\x14\x00\x51\x8b\x0a\xd1\xcc\x94\x0e\x34\x58\x37\xa9\x14\x19\xd3\x9a\x70\x58\x61\x4e\xd5\x2d\xf3\x49\x49\x68\x36\x20\xd7\x76\x92\x21\xf3\x11\xe6\xc0\x9d\xa3\x1b\x99\x3d\xa3\x71\xb8\x8b\xfd\xc8\xe1\x60\x70\x88\x14\x7c\x45\xf0\x4b\x07\xcc\xd8\x2d\x81\xea\x0e\x89\x53\x1b\x25\x8d\x0b\x8d\x69\x60\xad\xd4\x06\x69\x8e\x25\x44\x71\x99\x99\xe7\x50\xb4\x75\xfa\x9d\xe5\xe5\xec\x90\xed\x73\xd7\x24\xd5\xbb\xa4\xa8\x6e\x75\x9d\x50\x7f\x76\x4f\x4d\xbd\x53\x62\xea\xa5\xda\xca\x6e\x8b\xdc\x31\xeb\x9e\xa9\xf7\x1e\x89\x94\xf3\x4e\x49\x3e\xfd\xb3\x2e\x27\x4c\xde\x46\xea\x73\xd5\xca\x32\xf6\xa3\x12\xf3\x86\x93\x55\xb5\xb6\x7c\xb8\x5b\x25\x27\x07\xa2\x69\x21\xf0\xf4\xf2\x5d\xb7\xea\x1c\xa4\xb3\xc0\xd7\x7c\xba\x08\x80\xcd\xa7\xdd\xa5\x5c\xf3\x59\x3a\x4d\x81\xba\x17\x91\x4b\x3a\x80\xd2\x48\xc8\xc4\x6c\xc2\x91\x1b\x40\xf9\x77\xc7\xa3\xa8\x95\x55\xb4\xcc\x4a\x13\xc2\x72\x56\xb0\x06\x18\xd4\xe7\x6d\xc6\x60\x48\xdf\x2c\x62\x14\xc0\x22\x91\xfe\x76\xe5\x19\xf8\xec\x74\xa4\xbb\x56\x18\xfb\xc9\x3a\x6e\xdc\x03\x86\x5e\x66\xd8\x19\x8e\x23\x97\x0d\xc1\x7b\x10\xd7\x64\x18\x70\xde\x30\x1a\x05\x24\x2f\x8e\xb8\x4a\x3d\x9d\x57\xd6\xce\xb0\xe2\xa6\xe8\xac\x08\x67\xd7\xc3\x3d\x4a\xf4\xd1\xa8\x3f\x69\x99\x1e\x4c\x37\xb5\xba\x29\x17\xd5\xca\x9d\x81\xd7\x52\x98\x67\x2f\x1a\x2e\x4d\xfb\xad\xa5\x8b\x91\x59\xb5\x91\x94\xcd\x95\x70\x0f\x14\x34\x4a\xe4\xe6\x2f\xf8\xe0\xbc\x3e\x77\x31\xf2\x11\x45\x42\x80\x47\xa7\x02\xd0\xfe\x59\x2e\x41\x06\x8b\x25\x23\xa8\x4d\x82\x3a\x5e\xa4\x2c\x16\x32\x3d\x75\xa5\x72\x85\x90\x58\xf5\x4b\xf7\xb0\xb8\x89\xee\xa1\x12\x68\x05\x85\xe8\x5a\x56\x45\x06\xf0\x9d\x45\x83\x9d\xca\xd4\xdc\xa7\x50\x8d\xdd\x40\x58\xf9\x75\xd7\x5d\x24\xf7\xac\x3b\x43\x22\x2e\xb4\x5b\x25\x8b\xba\xb1\x1a\x47\x0a\x75\xac\x93\x19\xcb\x29\x26\x85\xf3\xcb\xb3\x54\xe6\x4e\x71\x63\x18\x66\xf5\x61\x2a\xd7\x44\x4e\x7a\xb5\x0a\x71\x07\xf3\xd7\x07\xbb\xd4\xf3\xb8\x67\xc9\x15\x52\xed\xc2\x1e\x80\x71\x5d\x93\xce\x2c\x5e\x83\xba\x90\x41\x26\x47\xd1\x30\x32\x58\x06\x33\x47\xe8\x3d\xfa\xc2\x9f\x52\x45\xea\x05\x21\xe1\x45\x45\x7a\x51\x91\xf6\xa2\x22\x45\x8c\xc5\x13\x1c\x07\xa8\x58\x6d\x8a\x33\x4a\x79\xdd\xa9\x8a\xea\x89\xb2\xc4\x58\xd4\xf4\x5a\x93\x54\x75\x2b\x9a\x55\x7d\x0e\xbd\x2e\xe5\xf0\xb8\x34\x93\xfe\x6f\x08\x13\x89\x4c\x71\xf3\xed\xf8\x4a\x1b\x10\x6d\x2a\xf5\x23\x9e\x4b\xee\xbf\x15\x5b\xe2\x60\xec\x5d\xb7\x6e\x27\x3a\xe0\xef\xea\xde\xee\x89\xc1\x57\x6c\x3d\x04\xc1\xba\xe5\x87\x18\x79\xc7\xdf\xab\x5b\x42\xac\x05\x0c\xc8\xed\xcb\x9c\x92\x23\x7c\x39\x48\x8a\xb2\xe7\x1a\x0c\x72\x96\x4b\xb5\xe8\x85\x46\xf6\xc7\x5a\x2f\xd7\xe2\x18\x64\x82\xa4\x54\x56\xd9\xcb\x16\x3f\x56\xe9\xc0\x03\xe8\x91\x85\x83\xb0\x4f\xdd\xaa\xc1\xc4\x4f\xc3\xfd\x2e\x24\xba\x02\x55\xbe\xaa\x8e\x33\x09\xc9\xf7\x74\x2f\xa8\xa8\xf0\x96\x89\x39\x99\x53\xd5\xa1\x74\x75\xfc\xdc\x53\x1e\x48\xf9\x9c\xeb\xdd\x0a\xd6\xad\xd4\x9a\xb9\x4b\xeb\x25\x4b\x53\x94\xc6\x51\x4a\x7f\x2a\x7c\xa8\x77\x38\x0d\x0d\xa1\xe8\xf5\xc1\x4e\xd3\xf8\xd1\x14\x85\xc5\x67\xc7\xd2\xb0\xf8\xdc\xb7\x40\x6c\x7d\x94\x9d\xd1\x66\xaf\xe5\x9e\xfd\xe3\xd1\x62\x1f\xe7\xb0\x62\x91\x55\x7e\x02\x2f\x9c\x3e\xd2\x41\x43\x7f\x90\x3d\xda\x6a\x5c\x22\xf4\x9f\xb2\x99\x66\x4f\x57\xaf\x2e\x52\xef\xdf\xfc\xde\x75\xe4\x72\xe2\xbf\x5c\xba\xb6\x42\xbe\x97\x4b\xd7\x97\x4b\xd7\xb6\xcf\xcb\xa5\xeb\x8b\x45\xa1\xfe\xfc\xa8\x2d\x0a\x2f\x97\xae\x2f\x97\xae\xf7\x83\xe1\x83\x5c\xba\x3a\x31\xae\xba\x71\x7d\xd4\x0b\x57\x57\xd6\xe5\x2c\x49\x64\x29\xcc\x8d\xbc\x65\xad\x6f\x10\x5a\x09\xf3\x4b\xa3\x3f\x9e\x64\xdf\x5d\xb0\xe8\x24\x1e\xec\x22\x18\xd0\x32\xe5\x56\x78\xdf\x19\x81\xce\xdc\x00\x5e\x4e\xb7\xa4\x58\xa4\x2c\x0d\x23\xfb\x43\x6a\x2c\xac\x07\xe4\x8c\x28\x96\xf0\x82\xbb\xea\xdd\x14\xdf\x23\x86\x85\x2c\xfb\xdc\x68\x96\x4d\x5c\xb6\x73\x11\x17\x85\xa9\x44\x70\x47\xe1\x56\x7e\x06\x79\x8e\xf4\x49\xb2\x7d\x85\x1c\xc5\xbe\xf7\xcc\xca\xcd\xe6\x26\x1e\x21\x36\x8a\xc0\x52\x6a\xb5\x68\xe0\x63\x05\x77\x11\xc8\x0f\x7d\xb0\xd9\x97\x82\x2b\x40\xde\x11\x4b\xa4\x68\x53\x11\x73\xcd\x06\x5d\x36\x47\xf2\x3b\xe5\x2c\x9a\x58\x00\x3f\xd4\xbd\x9c\xd3\x8c\xa7\xdc\x2c\xc2\x5d\x9b\xab\xb2\x44\xf1\xc4\x84\x6d\xd4\x15\x18\x09\x2d\x0a\x25\x69\x32\x63\x3a\x9a\x37\x8a\x1c\x2e\x10\x2b\x78\x9d\x63\x25\x30\x90\x3a\xa0\x8f\x65\x7d\xd9\x82\x28\x69\xfc\x75\xf9\x9a\x0f\xde\x44\x83\x41\x77\xe4\x5f\x46\x2d\xe0\x4e\x5d\xc6\x43\xe0\xac\xf8\x24\xfe\x43\x13\x99\xa5\x3e\xbf\xc7\x6f\x5e\x59\x31\x2f\x71\x38\x68\xa9\x1c\x64\x80\x30\x92\x64\x96\x15\x5b\xca\xb7\xbe\xf3\x2f\xbf\x26\x33\x59\x2a\x3d\x88\x83\x84\x5e\xc3\x3b\x54\xd1\xbc\x98\x68\x48\xc6\xa8\x36\xe4\xf5\x2b\x92\x73\x51\x5a\x0e\xd4\x19\x6d\xba\x4b\x36\x91\x4c\xf3\xab\xaf\x5b\xf7\xeb\x2a\xcd\x2c\xdf\x48\x3a\xac\x2a\x30\x13\xaf\x13\x6a\xdc\x49\xc2\xe0\x32\xcc\x63\xdd\x10\x71\x1c\xd1\x8d\xa1\x2d\x8c\x7c\x80\xf3\xf5\x43\x29\xc7\x0b\xd3\x25\x10\xf1\x7f\xb1\x47\x3d\x02\xd1\xbf\x6c\x93\x5d\xa4\x4a\x2e\xb2\xf1\xa3\x0f\x52\x2b\x61\xca\xb5\xd9\x52\x29\xa1\x8a\x51\xdc\xd8\xac\x3d\x5b\x99\x5a\x79\xbf\x63\x58\x0a\xe8\x08\x5e\xd6\xf5\xe6\xa1\x24\x61\x58\xd3\xf0\xa2\xaa\xb4\x23\x24\x8e\xbf\x75\xf8\x27\x4e\xb6\xe5\x11\x64\x0f\x39\xba\x5b\x2e\xb5\x9d\x74\xe5\x51\xa2\xf3\x5a\xb1\x5b\xfd\x14\x68\x2e\xa6\x98\x52\x3b\x2f\x33\xc3\x8b\xac\x5a\x77\xe8\xe0\x08\x79\x6c\x36\xa3\x91\xa5\x87\x62\x70\x2e\xa6\x62\x02\x13\xe3\x51\x18\x8b\x09\x83\x99\xa1\x95\xe5\x07\x05\x55\x34\x00\x0f\xea\xa6\xea\x63\x67\x81\xa3\x70\x0f\x88\x94\xc7\x92\x73\x45\xb3\xb0\xd0\xf8\xee\x67\x9f\x48\x63\x98\xa0\xa2\x85\x81\xb9\xae\xea\x41\x27\x22\xef\x82\x0b\x18\x56\xd8\x68\x60\x8b\x13\x6a\xde\xd0\xe4\x96\x89\x14\xcb\x0f\xc1\xb2\xd3\x85\xa0\xb9\x4b\x45\x15\xd5\x54\x6e\xf4\xd7\x3d\x67\x6a\xc0\x48\x39\x1f\xaa\x8b\x5c\x77\x9f\x30\x28\x75\xe7\x5c\x2f\x9f\x34\xd6\x32\xde\x74\xce\x35\x1a\x61\x14\x9f\x27\xcc\xf3\x7f\xfb\xa9\x7d\x4e\x7d\xde\x22\x1e\x7d\x69\xf2\xce\x55\x91\x47\xf8\x0b\xe4\x3e\x18\xbf\x21\xeb\x14\xcd\xec\xd1\x5e\x84\xf0\xcc\xc6\xe6\x8e\x17\xfb\x2d\xa8\xa2\xc6\x5d\xc2\x68\x0f\x3f\xbe\xb9\xa8\x1f\xe2\x8f\x34\x95\x9a\xbc\xc9\x64\x72\x4b\x2e\x18\x08\x5d\x0f\x59\x10\x44\x8d\xd3\xa7\x4c\x18\x9d\xd3\xe9\xb6\xdb\xb1\x3e\xc9\xa5\xe0\x46\xaa\xcd\xf4\xe2\xa5\x3e\xe1\x93\xa4\x23\x56\xe3\xf4\x59\x27\x23\xb6\x08\xb6\x4b\x35\x42\x05\xc7\x10\xba\xfb\x5c\x7e\x3b\x1e\xaa\x9f\xcd\xe4\x5d\xdf\xc8\x7e\xa9\x59\x9f\xb7\xb8\x6f\xed\xb0\xba\x5b\xb6\x80\x4b\xe6\x8e\xeb\xfb\x16\xbb\xd5\x94\x03\x23\xc1\xa6\x04\xef\x2d\x8b\xfe\xf8\xe6\xc2\xf2\x86\x41\x2c\xec\x9d\x30\x93\x9c\x24\xac\x98\x9d\xb8\x0f\x3f\x4b\xa0\x78\x6a\xd1\x15\x2a\x67\x24\x91\x59\xe6\xe2\x9d\xe5\x84\x9c\xb3\x62\x16\x06\x7b\xec\x95\x3e\x5d\xaa\xdb\x42\xca\xae\x29\x3f\xa3\x03\x63\x7b\xbb\xf3\x12\x21\x8e\x1a\x77\xab\x63\xf0\x58\xa8\xf2\xac\x2b\x31\x3e\x20\x70\x1e\xb8\xaa\x7e\xad\x96\x7e\xec\x7a\x59\x4f\x07\xec\x7d\x38\x6a\xe4\x66\x38\x41\x49\x3a\x65\x29\x91\x73\xa6\x14\x4f\x99\x26\x81\xde\xc4\xaa\x27\xcf\x1e\x1b\x6e\x2f\x99\x89\x9f\x3c\x33\xf1\x0e\x3a\x4e\x44\x9e\x6c\xef\x65\xf2\x44\xd3\x9c\x8b\x67\x47\xa0\x74\x42\x33\x36\xfc\xd0\x41\x99\x18\x61\x8f\xba\x3e\xe1\x5f\x46\x09\xc5\xb6\xa4\xe9\xfa\x36\xe0\x0b\x11\x32\xdd\x66\x1f\x7d\x00\xad\x60\x4a\x0d\xbb\xdb\xca\xfe\xfa\x15\x81\xda\xde\x12\xe4\xce\xa7\xd4\x1f\x9e\x28\x35\x5e\x84\xe5\x98\xf7\x6b\x9f\xec\xd3\xed\x53\x57\xa3\x8b\x5f\x48\x23\x93\xac\x47\xd4\xb3\xeb\x21\xf9\x06\x47\xde\x6f\xa6\x3e\x25\x0d\x4a\x77\x17\x32\xa7\xbc\x73\xa1\x8d\x59\xbd\x30\xb5\x9f\xee\x75\x18\x96\xe0\xb8\x71\x8d\x90\x09\x9f\x96\x56\x03\x73\x5a\xd3\x4b\x12\xb5\x47\x11\x40\x2a\xf9\x23\xb2\x04\x79\x8f\xc3\x4a\xe6\xf0\x3b\x08\x4c\x21\x5c\x4d\x12\xcd\x84\xe6\x70\x4f\x12\x5d\x56\xbb\x72\x6f\x58\x5f\x10\xdd\x0b\x51\x48\xe9\x91\x77\x72\xca\x85\x3f\x95\xd2\x5d\xa3\x4d\x28\xcf\xda\x02\xe3\x45\xaa\x78\x72\xa9\x42\xeb\xec\x52\xd0\x71\xd6\xc6\x0b\xa0\x4e\xd6\x33\x0a\xf7\x9c\x0c\x7a\x9f\xa4\x5c\xdb\xff\x93\xd1\xe8\x1d\xd8\xc4\x4b\xe1\x65\x5d\xb0\x17\x3b\xb2\x16\x3c\xfd\xf1\x00\xee\xf7\xcc\x20\xa5\xd9\x21\xc7\xdd\x50\xa4\x76\xb2\x4c\xd7\xdc\x4e\xdc\x78\x98\xe9\x2f\x78\xce\xe2\xcd\xfd\x98\x91\x9b\x19\x4f\x6e\xaf\x23\xd3\xb7\x54\xf6\x9d\x88\x5e\xd5\x98\x50\xf3\xb7\x7d\x12\x44\x37\xd5\xeb\xee\x0a\xec\x4d\x44\xcf\x47\x6e\xc1\x76\x18\x42\xb5\x96\x09\xaf\xee\x39\xc0\x5c\x52\x11\xfc\x14\x08\xfe\x7e\x17\x01\x3c\xfd\x9e\xbc\xc9\x6f\x9a\xaf\x7a\xaa\x63\x5e\xc4\x85\x5f\xeb\x5e\x27\x8e\xa8\xb1\x43\x96\xee\x9b\x5a\x5e\x6e\x2f\x9b\x36\x8c\xf6\xde\x8b\xdb\x6d\x92\x97\x92\x7c\x95\xc5\xa5\x6d\x0a\xf9\xb9\x5d\x5e\xbe\xbd\x2d\xb5\x4d\x20\xc3\x2a\x6d\xb8\x71\x53\x87\xef\x9c\x19\x1f\x0e\x53\x21\x8b\x32\x43\x5f\x89\xfb\x27\x17\xf7\xd6\x59\xfc\xce\x9e\xcc\xfa\x8f\x91\x68\xb3\xab\x23\xf0\x4f\x23\xe7\x66\x24\x92\xbd\xfa\xd5\xd7\x5f\xff\xd8\xb3\x70\xb6\x55\x81\x1f\x22\x0d\x67\x4b\x93\xe8\x4b\xa4\xcd\x4b\xa4\x4d\x8c\x8a\x0f\x99\x46\x75\xcf\xb1\x34\x1d\x5d\x5c\xbb\xb9\xb7\xb6\x8f\x96\x69\xed\x04\xdb\xd5\x01\xb6\x43\x3c\xcc\x9e\xa2\x60\x3a\xfb\x82\x76\x89\x78\x79\x89\x73\xf9\xa9\xc5\xb9\xec\xe2\x03\xda\x3d\xa6\xa5\x8b\xef\xe7\x4f\x29\x7e\xa5\xc3\x61\x6c\x1f\x67\xd1\x3d\xba\xa2\x7b\x3e\xbb\xee\x96\xad\x5d\x4a\x1a\xc5\xf6\x19\xa7\x45\x54\x15\x04\x7d\xe1\x41\xcc\x8f\x65\xa4\x3d\x58\x8f\xa2\x43\x90\x0e\x0a\x14\x0e\x2f\xbb\xd4\x12\x74\x3a\xf9\x87\x51\xe3\x6a\x23\xbc\x7e\x9a\x1b\x8d\x9f\xe6\x95\xc1\x4b\x61\x90\xe7\x6d\xd3\xd6\xb5\xdc\x22\xde\x92\x00\x67\x1d\x18\xb1\x1c\xc7\x39\x0d\xab\x33\x72\x76\x3d\xb4\xea\x32\x84\xcf\xd0\x4c\x0f\xc8\x0a\x3e\xed\xed\x92\x8e\xaf\x7b\xfe\x4c\x8d\x61\x79\x61\xda\x6f\xf6\x8b\x49\xfb\xc9\x4d\xda\x3b\xdb\xe3\x3e\x87\x8e\xa1\x02\x64\x99\x53\xd1\xb7\x27\x0a\x8c\xdb\xb5\x5b\xb0\x06\x09\x1e\x10\xef\x95\x8b\xb0\xa0\x8a\x61\xd2\xa7\x7a\xc5\x5b\x1a\xd5\x3f\x7c\x18\x23\x24\x8c\xbd\xf3\xca\x91\x81\x36\x4e\x5a\x22\x97\xdc\x3e\xdd\x72\x02\x14\xfc\xa1\x8a\xb8\x70\x4d\x6f\x36\x33\x86\xcc\xfa\x1a\x02\x51\xaa\x56\x75\x49\x18\x45\x61\x9a\x65\xf2\x0e\xbf\x1d\x33\x30\x0b\x7d\x3b\x17\x17\x61\x35\x66\x24\xe7\x56\xa9\x76\xc6\xcf\x78\x3a\x78\x15\x69\x25\x6a\xa6\x50\x60\x55\xee\x36\x6b\xc4\x4c\xbc\xd1\x56\x21\x15\xe8\x08\x6d\xff\xed\x1d\x6f\x30\x2b\xae\xa3\x09\x63\x36\xa3\x73\x2e\x4b\x85\xbd\x8d\x24\x07\xee\x27\x60\x09\x0b\x59\x06\xd3\x14\x56\x49\x0c\xab\xd3\x2b\xe0\x74\x55\xfd\x08\xa2\x7c\x2a\xbd\x2d\xa1\xcf\xbe\x70\x6d\x96\xd7\xe2\x41\xe4\x93\xb6\xed\x0b\x6f\xe6\xba\xb0\x6c\xa1\x73\x45\xb4\xcf\x71\xbf\xba\x60\x32\x1f\xc1\x4f\x3f\xa2\x7a\x68\x5b\x73\x91\xbe\xc8\x3a\xfb\x96\x75\xc2\x75\x55\xc6\x93\x45\xe7\x4a\x61\xd5\x35\x95\xed\x4e\xde\x50\xcd\x52\xf2\x9e\x0a\x3a\x45\xb5\xec\x68\x74\xfd\xe6\xfd\xb1\xdd\x36\x50\xfb\x86\x17\x2b\xef\xb2\x46\xf1\x1c\xae\xf6\x19\x06\xb1\xb4\xc2\x1d\x38\x51\xc7\x35\xee\x35\x8c\x83\x04\x6e\xd2\x2e\x41\xec\x72\xe8\x65\xb3\xc6\x63\x83\x28\xcc\xf3\xf4\x9e\x55\x1d\xb9\xd0\x86\x66\xd9\x75\x46\xc5\x59\x51\x28\x39\x5f\xad\x09\xd7\x03\xc3\x5d\x43\xcf\xda\xd1\xf7\xc1\xbf\x2c\x10\xd0\x70\xd7\x2b\xc8\xb0\x1a\x7f\x40\x86\x26\x28\xc4\x52\x00\x1b\x3c\x38\x2b\x8d\xcc\xa9\xe1\xc9\x81\xd5\x9b\x0f\xde\x53\x51\xd2\x6c\xa5\x87\xd1\xc6\x65\xac\x13\xeb\x36\x76\x5a\x9f\x1c\xad\x45\xb7\x8d\xf2\xc1\xe6\xfe\x86\x2a\x4b\x5b\xce\x47\x9f\x3b\xf5\xd5\x86\x9a\x72\x89\x72\x6e\xa0\xe6\xeb\xe9\x77\x9f\x64\x54\x9b\x4f\x45\x6a\x4f\x72\xe3\xd7\x4d\x44\x3a\xa1\x86\x66\x72\xfa\x07\x46\xb3\xd5\xf8\x5c\xc3\x93\xf3\xb8\xb5\x37\xfe\x20\xca\x8c\xca\x71\x68\x78\xa8\x89\x15\x8a\x7d\xbc\xb6\x62\x19\x9b\x53\x61\x7c\x77\xac\x94\xad\x0f\xdd\xfa\x01\x8b\x78\x65\xf0\x4c\x99\x61\x2a\xe7\xa2\x3e\xe6\x08\xda\x9e\x4b\x91\x72\x34\xf5\x81\x31\x0b\x7b\xd4\xc7\x5d\x8f\x6a\xeb\xcc\xf9\x1b\x0c\xf8\x75\xca\x13\xcd\xa7\x0e\x0a\x6c\x36\x76\x32\xe1\x0c\x5f\xc2\xcd\x75\x6d\x6e\x4b\x90\x22\xb7\xc2\x0a\x73\x90\xf3\x62\x35\x91\xda\xca\xdb\xb7\xf1\xf4\xbe\xdf\x63\x9c\xc2\x7a\xbf\xc8\xbe\x9b\xf7\x3a\x43\xff\x26\x14\xc3\x67\xbb\x34\xd0\x9c\xca\x7a\x0a\xba\x0a\xef\x42\x37\x0c\xee\x6b\x54\x57\xaf\x35\x5a\x4f\xf1\x5b\x09\x4b\xed\xe4\x9a\xb6\x79\xd3\xeb\xb4\xb6\xca\xf2\xbd\xa4\x7e\xb6\x90\xf2\xb6\xb2\xa8\x96\xe9\xcb\xeb\xca\xf0\xd0\x39\xc5\x29\xa7\x3e\x50\x52\x70\x86\x89\x3a\xa8\x70\xc0\x02\xce\xc2\x68\xea\x5e\x5a\x0e\x66\xd5\x38\xf8\xad\xe7\xee\x9a\xd1\xb0\xeb\x7c\x17\xbc\x71\x98\x62\xa2\x0a\xb8\x2c\x38\xf9\x46\xba\x8b\x52\x17\x50\x6a\x69\x00\xf0\xed\x1e\xd1\x65\x32\x23\x54\xdb\xa9\x59\x84\xb6\x27\x9e\x0d\x72\x2a\xf8\x84\x69\x33\x08\x79\x68\xf5\x9f\x7e\xf9\x97\x01\x79\x2b\x15\x71\x7e\xd8\x3d\x9f\x01\xc2\xcd\xb3\xc2\x0b\xae\x71\x31\xa1\x6f\xa5\x69\x16\x32\x75\x93\xbe\x83\xc9\x1a\x7a\x6b\x79\x18\x4e\xb6\x64\x70\x5d\x70\x4a\x0e\xac\x90\x17\x7d\xfa\x1f\x96\x2d\xfd\xeb\x80\x1c\xdd\x01\xd3\x3e\xb0\x7f\x1e\xe0\x07\x83\x2f\x61\xac\x08\x57\x1f\xc6\x30\x3f\xc5\xa7\x53\xa6\x50\xe5\x23\x10\x0e\x77\xec\x32\x58\x08\x19\x35\xf6\x37\xbf\x95\x8a\xd8\x9c\xc8\x9f\x7e\xf9\x97\x03\x72\x54\x5f\x17\xe1\x22\x65\x5f\xc8\x2f\xd1\xf4\xcb\xb5\x5d\xe3\xb1\xbb\x40\xd1\x0b\x61\xe8\x17\x3b\x66\x32\x93\x9a\x09\x54\xbf\x8d\x24\x33\x3a\x67\x44\x4b\xab\xb5\xb2\x2c\xeb\x3b\xb3\x36\xb9\xa3\x90\x55\xc4\x83\x12\x82\xc0\x49\x41\x95\xa9\xa1\xc4\xc0\x59\x35\xe0\x6b\x76\xdb\xa6\xc2\x5f\xff\x4e\xb8\x70\x77\x46\xee\xb6\xca\xee\x39\x84\x34\xe2\x26\x19\x49\x92\x19\x15\xd3\x10\x47\x3d\x29\x4d\xa9\xd8\x96\xeb\x96\x96\x67\xe0\x96\x8b\x4e\xe1\xb6\xdf\x72\xd1\xbc\xb9\x5f\x6d\x0b\x9a\x72\xe3\x9d\xfe\x9d\x23\x9f\x59\x9c\xd8\x5d\x50\x7c\x5c\x1a\xa9\xf4\x49\xca\xe6\x2c\x3b\xd1\x7c\xda\xa7\x2a\x99\x71\xc3\x12\xbb\xac\x13\x5a\xf0\x7e\x22\x85\xdd\x71\xc8\x20\x90\xa7\x3f\x83\x22\x98\x7d\x3b\xd5\x2d\x79\x8d\x5b\x2e\x7a\xbb\x21\xec\x49\x0d\x60\x7b\x5b\x63\x0b\x1b\xce\xf2\x42\xd1\x9e\xf2\x08\xab\x05\xe3\xc5\xc9\x5e\x16\xeb\xd3\xf2\x76\xe7\x31\x87\x2e\xd3\x74\xd2\x1c\xc3\x1e\x3b\xf4\xd2\x80\x53\x59\xa3\x94\x39\x4d\x91\x94\x52\xb1\x78\x70\xe4\xb7\x20\x85\x84\xec\xc9\xa2\x9f\x60\x7d\xfb\x3e\x15\xa9\xfd\x37\xc6\xa3\x24\x8b\xbd\xc0\xb0\xe4\x9d\x08\xc1\xa7\xe1\xc5\xe3\x1c\x89\x92\xef\xe1\xd4\x3b\x79\xad\xa5\x10\x85\xa2\x2a\xb8\xec\x18\x55\x32\xcf\x34\xeb\x02\x2a\xd7\x7e\xd4\xff\x76\x77\x26\x21\x33\xd7\x36\x91\x6a\xf3\x4d\x47\x24\x3b\xb6\x9c\xef\xbb\xaa\x47\xb3\x26\xbe\x1d\xcc\xa5\x81\xf2\xd1\xf3\xb5\x65\x78\x05\x05\x18\xcc\xfa\x3b\xda\x56\x38\xe4\xef\xe8\xed\x44\xfa\x2b\xf3\x03\x25\x41\x29\xd9\xae\x40\x55\xfa\x4b\xad\xd2\x16\x2e\xca\x30\x6d\x08\x9d\x53\x9e\x81\x45\x5d\x8e\x35\x53\x73\x2c\x79\xe4\xd2\xe2\xd1\xa6\x9e\xe5\xaa\x1a\xa0\x18\xf5\x48\x9a\x8f\x5f\xc3\xf2\xae\x6c\x5a\x00\x68\x43\x8d\xd9\xaf\x9d\xf5\x5e\xf4\x1e\x54\x2f\xd7\xfe\x6c\xbf\xb0\xa3\x1a\x63\xf1\xef\x0f\x8c\x2a\x33\x66\xd4\xdc\xf0\x4d\x7c\x77\x09\xa5\x6b\xfd\xbc\xc1\xa5\x42\xe8\x3b\x46\xa6\xd2\x58\x11\xab\x04\xdc\x47\x99\x14\x13\xd0\x04\x44\x7b\x68\x8c\xae\x56\x79\xa3\x28\xc4\xbd\x48\xd1\x71\x99\xf5\x8e\xcb\xeb\x74\xd2\xb1\xc3\x24\x83\xad\x31\x05\x84\x14\xcc\xed\x1d\xde\x40\x00\x05\x7a\x9c\x25\xe7\x4c\xeb\x8d\xa9\x21\xea\x2e\x7c\xd8\x1a\x8f\x72\xe3\x3a\x2c\xf7\xbf\x61\xfc\x84\x15\xa0\x53\x66\x28\xcf\xfc\x51\x46\x50\x04\x28\x6d\xa3\xae\x1b\x17\xa8\x18\xd5\x9b\x04\x84\x66\x46\x2c\x2d\x05\x4e\x5a\x0a\xd6\xbf\x93\x2a\x25\xe7\x34\x67\xd9\x39\xd5\xcc\x8d\x15\x87\xab\xe1\x1e\x1d\xea\xbd\x4e\x79\xb5\xed\x6b\xcd\x94\xd1\xf8\xe3\x91\xc8\xe1\x46\xa5\x62\xe1\x04\x7b\xde\x04\x79\xa3\x4a\xd6\x23\x6f\x2d\xf7\xea\x91\x4f\xe2\x56\xc8\xbb\xfb\xcd\xd5\x6c\xbc\xb9\xa8\xbb\x59\xb9\xcc\x2d\x90\x22\xcf\x25\x84\xa9\x19\x7c\xc2\x74\x77\x9c\x91\x23\xf8\x6b\x4c\x8d\x75\x66\x13\x9a\xfa\x19\xd9\x7f\x2e\x99\xa0\xac\xa2\xa8\xe4\x54\x31\x8d\x39\x57\x56\x26\xf4\x6b\x6b\x72\xfe\x86\x09\x17\xf1\xb6\x75\x7a\xc3\x55\xbd\xfc\x4c\x3d\x5f\x9b\x56\xbf\xb8\xfd\x76\x1f\x2b\xb2\x95\xa2\xc6\x66\x2f\xbc\x68\xa2\x6b\x8c\x4f\xeb\x66\xb8\xda\xe8\x14\x71\xbd\xa8\x2d\x0a\x25\x9b\xac\xa3\x7e\x75\xe7\xa3\xcf\xeb\x81\xbd\x96\xf7\x6d\xe3\x4f\xdb\xcd\x52\xf7\x35\x48\x6d\x3d\x33\x5b\x8d\x50\x2f\xe6\xa7\x17\xf3\xd3\x8f\xc9\xfc\xb4\x15\xe3\x37\x99\x9c\x7e\x1c\xc6\xa6\xad\x4b\xdc\x64\x60\x7a\x96\xa6\xa5\x56\x2b\xda\x68\x4e\x7a\xb6\x86\xa4\xad\x4b\x6b\x69\x3c\xfa\xf7\x31\x1b\x6d\x85\xd8\x06\x53\xd1\x33\x34\x12\xb5\x11\xc8\x58\xda\x46\x4c\x1c\x46\x8d\x63\x41\xb1\x2a\x98\x18\x86\xf3\x2e\x35\xb1\x38\xb3\xab\xb4\x68\x05\xb8\xad\x73\x3b\x74\x93\x6b\x2f\x7b\x39\x81\xd1\x95\x13\x5c\x9a\x2c\xb9\xb8\xbc\xfe\x78\x79\x7e\x76\x73\x79\xd1\x94\xef\x56\x41\x7a\x8b\x24\xb6\xd9\x06\xd1\x8f\x24\xb1\x35\x0d\x2c\x41\x5e\xf3\x93\xc5\x81\x35\x3f\x95\x25\x5f\xd5\xeb\xfe\x72\xe1\xbd\xb8\xdc\xbd\xf8\xc7\xf6\xd3\xd9\xf6\x78\xda\xd3\x09\xd8\x82\x1e\x63\x56\xee\x99\xc9\x2c\xd5\xde\xd7\x74\x78\x11\xa2\x97\xb8\x48\xb2\x32\xb5\xc2\xc5\xa7\x4f\xc3\x0b\x3d\x20\xe4\x0d\x4b\x68\xa9\xc1\x0a\x93\x4a\x71\x68\xc8\x87\xab\x77\x7f\x04\x1f\x6a\x68\xd1\x0b\xc9\x3e\x20\x83\x2c\xa7\x98\x04\xd7\x60\x16\x32\xf2\x86\xa1\xa0\x02\x5f\x4e\x68\x61\xa9\x98\xc6\x2a\x0b\x06\x64\x91\x19\xcb\x0a\x4b\x31\x6f\x19\xa9\x72\x7f\xda\x81\xab\x1a\xe6\xde\xe5\x71\xca\x0c\x46\x3a\x6d\xf2\x6a\xdc\x08\xb5\x2d\x16\xd7\x7b\xd8\x5a\x6b\xea\xa3\xd3\xc6\xef\xa8\x76\x16\xab\x95\xb3\xdd\xb2\xbf\xdb\xed\x33\xeb\x4d\x1c\x6b\x8c\x1b\x48\x9e\xe1\xaf\xa5\x39\xdb\xc9\x56\x76\x0c\x74\x22\xe1\xa6\xb5\x35\x75\xbd\x1b\xd0\xea\x9c\xf5\x4b\xb6\x0c\xd6\x04\x72\xed\xc3\xc1\x8b\x3a\x9a\x72\xbb\xb9\x40\xc1\x8b\xb4\x56\x5d\xd2\x79\xdb\xd5\xdf\x95\xe3\x50\x5f\xb4\x9a\xaf\xb3\xc8\x90\x7f\xfc\xeb\xab\xff\x1f\x00\x00\xff\xff\x19\x53\xdb\x44\x5f\xac\x01\x00") func operatorsCoreosCom_subscriptionsYamlBytes() ([]byte, error) { return bindataRead( diff --git a/vendor/github.com/spf13/cobra/.travis.yml b/vendor/github.com/spf13/cobra/.travis.yml deleted file mode 100644 index e0a3b50043..0000000000 --- a/vendor/github.com/spf13/cobra/.travis.yml +++ /dev/null @@ -1,28 +0,0 @@ -language: go - -stages: - - test - - build - -go: - - 1.12.x - - 1.13.x - - tip - -env: GO111MODULE=on - -before_install: - - go get -u github.com/kyoh86/richgo - - go get -u github.com/mitchellh/gox - - curl -sfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin latest - -matrix: - allow_failures: - - go: tip - include: - - stage: build - go: 1.13.x - script: make cobra_generator - -script: - - make test diff --git a/vendor/github.com/spf13/cobra/README.md b/vendor/github.com/spf13/cobra/README.md index a1b13ddda6..074e3979f8 100644 --- a/vendor/github.com/spf13/cobra/README.md +++ b/vendor/github.com/spf13/cobra/README.md @@ -7,7 +7,6 @@ Cobra is used in many Go projects such as [Kubernetes](http://kubernetes.io/), name a few. [This list](./projects_using_cobra.md) contains a more extensive list of projects using Cobra. [![](https://img.shields.io/github/workflow/status/spf13/cobra/Test?longCache=tru&label=Test&logo=github%20actions&logoColor=fff)](https://github.com/spf13/cobra/actions?query=workflow%3ATest) -[![Build Status](https://travis-ci.org/spf13/cobra.svg "Travis CI status")](https://travis-ci.org/spf13/cobra) [![GoDoc](https://godoc.org/github.com/spf13/cobra?status.svg)](https://godoc.org/github.com/spf13/cobra) [![Go Report Card](https://goreportcard.com/badge/github.com/spf13/cobra)](https://goreportcard.com/report/github.com/spf13/cobra) [![Slack](https://img.shields.io/badge/Slack-cobra-brightgreen)](https://gophers.slack.com/archives/CD3LP1199) @@ -19,18 +18,18 @@ name a few. [This list](./projects_using_cobra.md) contains a more extensive lis * [Commands](#commands) * [Flags](#flags) - [Installing](#installing) -- [Getting Started](#getting-started) - * [Using the Cobra Generator](#using-the-cobra-generator) - * [Using the Cobra Library](#using-the-cobra-library) - * [Working with Flags](#working-with-flags) - * [Positional and Custom Arguments](#positional-and-custom-arguments) - * [Example](#example) - * [Help Command](#help-command) - * [Usage Message](#usage-message) - * [PreRun and PostRun Hooks](#prerun-and-postrun-hooks) - * [Suggestions when "unknown command" happens](#suggestions-when-unknown-command-happens) - * [Generating documentation for your command](#generating-documentation-for-your-command) - * [Generating shell completions](#generating-shell-completions) +- [Usage](#usage) + * [Using the Cobra Generator](user_guide.md#using-the-cobra-generator) + * [Using the Cobra Library](user_guide.md#using-the-cobra-library) + * [Working with Flags](user_guide.md#working-with-flags) + * [Positional and Custom Arguments](user_guide.md#positional-and-custom-arguments) + * [Example](user_guide.md#example) + * [Help Command](user_guide.md#help-command) + * [Usage Message](user_guide.md#usage-message) + * [PreRun and PostRun Hooks](user_guide.md#prerun-and-postrun-hooks) + * [Suggestions when "unknown command" happens](user_guide.md#suggestions-when-unknown-command-happens) + * [Generating documentation for your command](user_guide.md#generating-documentation-for-your-command) + * [Generating shell completions](user_guide.md#generating-shell-completions) - [Contributing](CONTRIBUTING.md) - [License](#license) @@ -117,643 +116,9 @@ Next, include Cobra in your application: import "github.com/spf13/cobra" ``` -# Getting Started +# Usage -While you are welcome to provide your own organization, typically a Cobra-based -application will follow the following organizational structure: - -``` - ▾ appName/ - ▾ cmd/ - add.go - your.go - commands.go - here.go - main.go -``` - -In a Cobra app, typically the main.go file is very bare. It serves one purpose: initializing Cobra. - -```go -package main - -import ( - "{pathToYourApp}/cmd" -) - -func main() { - cmd.Execute() -} -``` - -## Using the Cobra Generator - -Cobra provides its own program that will create your application and add any -commands you want. It's the easiest way to incorporate Cobra into your application. - -[Here](https://github.com/spf13/cobra/blob/master/cobra/README.md) you can find more information about it. - -## Using the Cobra Library - -To manually implement Cobra you need to create a bare main.go file and a rootCmd file. -You will optionally provide additional commands as you see fit. - -### Create rootCmd - -Cobra doesn't require any special constructors. Simply create your commands. - -Ideally you place this in app/cmd/root.go: - -```go -var rootCmd = &cobra.Command{ - Use: "hugo", - Short: "Hugo is a very fast static site generator", - Long: `A Fast and Flexible Static Site Generator built with - love by spf13 and friends in Go. - Complete documentation is available at http://hugo.spf13.com`, - Run: func(cmd *cobra.Command, args []string) { - // Do Stuff Here - }, -} - -func Execute() { - if err := rootCmd.Execute(); err != nil { - fmt.Fprintln(os.Stderr, err) - os.Exit(1) - } -} -``` - -You will additionally define flags and handle configuration in your init() function. - -For example cmd/root.go: - -```go -package cmd - -import ( - "fmt" - "os" - - homedir "github.com/mitchellh/go-homedir" - "github.com/spf13/cobra" - "github.com/spf13/viper" -) - -var ( - // Used for flags. - cfgFile string - userLicense string - - rootCmd = &cobra.Command{ - Use: "cobra", - Short: "A generator for Cobra based Applications", - Long: `Cobra is a CLI library for Go that empowers applications. -This application is a tool to generate the needed files -to quickly create a Cobra application.`, - } -) - -// Execute executes the root command. -func Execute() error { - return rootCmd.Execute() -} - -func init() { - cobra.OnInitialize(initConfig) - - rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.cobra.yaml)") - rootCmd.PersistentFlags().StringP("author", "a", "YOUR NAME", "author name for copyright attribution") - rootCmd.PersistentFlags().StringVarP(&userLicense, "license", "l", "", "name of license for the project") - rootCmd.PersistentFlags().Bool("viper", true, "use Viper for configuration") - viper.BindPFlag("author", rootCmd.PersistentFlags().Lookup("author")) - viper.BindPFlag("useViper", rootCmd.PersistentFlags().Lookup("viper")) - viper.SetDefault("author", "NAME HERE ") - viper.SetDefault("license", "apache") - - rootCmd.AddCommand(addCmd) - rootCmd.AddCommand(initCmd) -} - -func initConfig() { - if cfgFile != "" { - // Use config file from the flag. - viper.SetConfigFile(cfgFile) - } else { - // Find home directory. - home, err := homedir.Dir() - cobra.CheckErr(err) - - // Search config in home directory with name ".cobra" (without extension). - viper.AddConfigPath(home) - viper.SetConfigName(".cobra") - } - - viper.AutomaticEnv() - - if err := viper.ReadInConfig(); err == nil { - fmt.Println("Using config file:", viper.ConfigFileUsed()) - } -} -``` - -### Create your main.go - -With the root command you need to have your main function execute it. -Execute should be run on the root for clarity, though it can be called on any command. - -In a Cobra app, typically the main.go file is very bare. It serves one purpose: to initialize Cobra. - -```go -package main - -import ( - "{pathToYourApp}/cmd" -) - -func main() { - cmd.Execute() -} -``` - -### Create additional commands - -Additional commands can be defined and typically are each given their own file -inside of the cmd/ directory. - -If you wanted to create a version command you would create cmd/version.go and -populate it with the following: - -```go -package cmd - -import ( - "fmt" - - "github.com/spf13/cobra" -) - -func init() { - rootCmd.AddCommand(versionCmd) -} - -var versionCmd = &cobra.Command{ - Use: "version", - Short: "Print the version number of Hugo", - Long: `All software has versions. This is Hugo's`, - Run: func(cmd *cobra.Command, args []string) { - fmt.Println("Hugo Static Site Generator v0.9 -- HEAD") - }, -} -``` - -### Returning and handling errors - -If you wish to return an error to the caller of a command, `RunE` can be used. - -```go -package cmd - -import ( - "fmt" - - "github.com/spf13/cobra" -) - -func init() { - rootCmd.AddCommand(tryCmd) -} - -var tryCmd = &cobra.Command{ - Use: "try", - Short: "Try and possibly fail at something", - RunE: func(cmd *cobra.Command, args []string) error { - if err := someFunc(); err != nil { - return err - } - return nil - }, -} -``` - -The error can then be caught at the execute function call. - -## Working with Flags - -Flags provide modifiers to control how the action command operates. - -### Assign flags to a command - -Since the flags are defined and used in different locations, we need to -define a variable outside with the correct scope to assign the flag to -work with. - -```go -var Verbose bool -var Source string -``` - -There are two different approaches to assign a flag. - -### Persistent Flags - -A flag can be 'persistent', meaning that this flag will be available to the -command it's assigned to as well as every command under that command. For -global flags, assign a flag as a persistent flag on the root. - -```go -rootCmd.PersistentFlags().BoolVarP(&Verbose, "verbose", "v", false, "verbose output") -``` - -### Local Flags - -A flag can also be assigned locally, which will only apply to that specific command. - -```go -localCmd.Flags().StringVarP(&Source, "source", "s", "", "Source directory to read from") -``` - -### Local Flag on Parent Commands - -By default, Cobra only parses local flags on the target command, and any local flags on -parent commands are ignored. By enabling `Command.TraverseChildren`, Cobra will -parse local flags on each command before executing the target command. - -```go -command := cobra.Command{ - Use: "print [OPTIONS] [COMMANDS]", - TraverseChildren: true, -} -``` - -### Bind Flags with Config - -You can also bind your flags with [viper](https://github.com/spf13/viper): -```go -var author string - -func init() { - rootCmd.PersistentFlags().StringVar(&author, "author", "YOUR NAME", "Author name for copyright attribution") - viper.BindPFlag("author", rootCmd.PersistentFlags().Lookup("author")) -} -``` - -In this example, the persistent flag `author` is bound with `viper`. -**Note**: the variable `author` will not be set to the value from config, -when the `--author` flag is not provided by user. - -More in [viper documentation](https://github.com/spf13/viper#working-with-flags). - -### Required flags - -Flags are optional by default. If instead you wish your command to report an error -when a flag has not been set, mark it as required: -```go -rootCmd.Flags().StringVarP(&Region, "region", "r", "", "AWS region (required)") -rootCmd.MarkFlagRequired("region") -``` - -Or, for persistent flags: -```go -rootCmd.PersistentFlags().StringVarP(&Region, "region", "r", "", "AWS region (required)") -rootCmd.MarkPersistentFlagRequired("region") -``` - -## Positional and Custom Arguments - -Validation of positional arguments can be specified using the `Args` field -of `Command`. - -The following validators are built in: - -- `NoArgs` - the command will report an error if there are any positional args. -- `ArbitraryArgs` - the command will accept any args. -- `OnlyValidArgs` - the command will report an error if there are any positional args that are not in the `ValidArgs` field of `Command`. -- `MinimumNArgs(int)` - the command will report an error if there are not at least N positional args. -- `MaximumNArgs(int)` - the command will report an error if there are more than N positional args. -- `ExactArgs(int)` - the command will report an error if there are not exactly N positional args. -- `ExactValidArgs(int)` - the command will report an error if there are not exactly N positional args OR if there are any positional args that are not in the `ValidArgs` field of `Command` -- `RangeArgs(min, max)` - the command will report an error if the number of args is not between the minimum and maximum number of expected args. - -An example of setting the custom validator: - -```go -var cmd = &cobra.Command{ - Short: "hello", - Args: func(cmd *cobra.Command, args []string) error { - if len(args) < 1 { - return errors.New("requires a color argument") - } - if myapp.IsValidColor(args[0]) { - return nil - } - return fmt.Errorf("invalid color specified: %s", args[0]) - }, - Run: func(cmd *cobra.Command, args []string) { - fmt.Println("Hello, World!") - }, -} -``` - -## Example - -In the example below, we have defined three commands. Two are at the top level -and one (cmdTimes) is a child of one of the top commands. In this case the root -is not executable, meaning that a subcommand is required. This is accomplished -by not providing a 'Run' for the 'rootCmd'. - -We have only defined one flag for a single command. - -More documentation about flags is available at https://github.com/spf13/pflag - -```go -package main - -import ( - "fmt" - "strings" - - "github.com/spf13/cobra" -) - -func main() { - var echoTimes int - - var cmdPrint = &cobra.Command{ - Use: "print [string to print]", - Short: "Print anything to the screen", - Long: `print is for printing anything back to the screen. -For many years people have printed back to the screen.`, - Args: cobra.MinimumNArgs(1), - Run: func(cmd *cobra.Command, args []string) { - fmt.Println("Print: " + strings.Join(args, " ")) - }, - } - - var cmdEcho = &cobra.Command{ - Use: "echo [string to echo]", - Short: "Echo anything to the screen", - Long: `echo is for echoing anything back. -Echo works a lot like print, except it has a child command.`, - Args: cobra.MinimumNArgs(1), - Run: func(cmd *cobra.Command, args []string) { - fmt.Println("Echo: " + strings.Join(args, " ")) - }, - } - - var cmdTimes = &cobra.Command{ - Use: "times [string to echo]", - Short: "Echo anything to the screen more times", - Long: `echo things multiple times back to the user by providing -a count and a string.`, - Args: cobra.MinimumNArgs(1), - Run: func(cmd *cobra.Command, args []string) { - for i := 0; i < echoTimes; i++ { - fmt.Println("Echo: " + strings.Join(args, " ")) - } - }, - } - - cmdTimes.Flags().IntVarP(&echoTimes, "times", "t", 1, "times to echo the input") - - var rootCmd = &cobra.Command{Use: "app"} - rootCmd.AddCommand(cmdPrint, cmdEcho) - cmdEcho.AddCommand(cmdTimes) - rootCmd.Execute() -} -``` - -For a more complete example of a larger application, please checkout [Hugo](http://gohugo.io/). - -## Help Command - -Cobra automatically adds a help command to your application when you have subcommands. -This will be called when a user runs 'app help'. Additionally, help will also -support all other commands as input. Say, for instance, you have a command called -'create' without any additional configuration; Cobra will work when 'app help -create' is called. Every command will automatically have the '--help' flag added. - -### Example - -The following output is automatically generated by Cobra. Nothing beyond the -command and flag definitions are needed. - - $ cobra help - - Cobra is a CLI library for Go that empowers applications. - This application is a tool to generate the needed files - to quickly create a Cobra application. - - Usage: - cobra [command] - - Available Commands: - add Add a command to a Cobra Application - help Help about any command - init Initialize a Cobra Application - - Flags: - -a, --author string author name for copyright attribution (default "YOUR NAME") - --config string config file (default is $HOME/.cobra.yaml) - -h, --help help for cobra - -l, --license string name of license for the project - --viper use Viper for configuration (default true) - - Use "cobra [command] --help" for more information about a command. - - -Help is just a command like any other. There is no special logic or behavior -around it. In fact, you can provide your own if you want. - -### Defining your own help - -You can provide your own Help command or your own template for the default command to use -with following functions: - -```go -cmd.SetHelpCommand(cmd *Command) -cmd.SetHelpFunc(f func(*Command, []string)) -cmd.SetHelpTemplate(s string) -``` - -The latter two will also apply to any children commands. - -## Usage Message - -When the user provides an invalid flag or invalid command, Cobra responds by -showing the user the 'usage'. - -### Example -You may recognize this from the help above. That's because the default help -embeds the usage as part of its output. - - $ cobra --invalid - Error: unknown flag: --invalid - Usage: - cobra [command] - - Available Commands: - add Add a command to a Cobra Application - help Help about any command - init Initialize a Cobra Application - - Flags: - -a, --author string author name for copyright attribution (default "YOUR NAME") - --config string config file (default is $HOME/.cobra.yaml) - -h, --help help for cobra - -l, --license string name of license for the project - --viper use Viper for configuration (default true) - - Use "cobra [command] --help" for more information about a command. - -### Defining your own usage -You can provide your own usage function or template for Cobra to use. -Like help, the function and template are overridable through public methods: - -```go -cmd.SetUsageFunc(f func(*Command) error) -cmd.SetUsageTemplate(s string) -``` - -## Version Flag - -Cobra adds a top-level '--version' flag if the Version field is set on the root command. -Running an application with the '--version' flag will print the version to stdout using -the version template. The template can be customized using the -`cmd.SetVersionTemplate(s string)` function. - -## PreRun and PostRun Hooks - -It is possible to run functions before or after the main `Run` function of your command. The `PersistentPreRun` and `PreRun` functions will be executed before `Run`. `PersistentPostRun` and `PostRun` will be executed after `Run`. The `Persistent*Run` functions will be inherited by children if they do not declare their own. These functions are run in the following order: - -- `PersistentPreRun` -- `PreRun` -- `Run` -- `PostRun` -- `PersistentPostRun` - -An example of two commands which use all of these features is below. When the subcommand is executed, it will run the root command's `PersistentPreRun` but not the root command's `PersistentPostRun`: - -```go -package main - -import ( - "fmt" - - "github.com/spf13/cobra" -) - -func main() { - - var rootCmd = &cobra.Command{ - Use: "root [sub]", - Short: "My root command", - PersistentPreRun: func(cmd *cobra.Command, args []string) { - fmt.Printf("Inside rootCmd PersistentPreRun with args: %v\n", args) - }, - PreRun: func(cmd *cobra.Command, args []string) { - fmt.Printf("Inside rootCmd PreRun with args: %v\n", args) - }, - Run: func(cmd *cobra.Command, args []string) { - fmt.Printf("Inside rootCmd Run with args: %v\n", args) - }, - PostRun: func(cmd *cobra.Command, args []string) { - fmt.Printf("Inside rootCmd PostRun with args: %v\n", args) - }, - PersistentPostRun: func(cmd *cobra.Command, args []string) { - fmt.Printf("Inside rootCmd PersistentPostRun with args: %v\n", args) - }, - } - - var subCmd = &cobra.Command{ - Use: "sub [no options!]", - Short: "My subcommand", - PreRun: func(cmd *cobra.Command, args []string) { - fmt.Printf("Inside subCmd PreRun with args: %v\n", args) - }, - Run: func(cmd *cobra.Command, args []string) { - fmt.Printf("Inside subCmd Run with args: %v\n", args) - }, - PostRun: func(cmd *cobra.Command, args []string) { - fmt.Printf("Inside subCmd PostRun with args: %v\n", args) - }, - PersistentPostRun: func(cmd *cobra.Command, args []string) { - fmt.Printf("Inside subCmd PersistentPostRun with args: %v\n", args) - }, - } - - rootCmd.AddCommand(subCmd) - - rootCmd.SetArgs([]string{""}) - rootCmd.Execute() - fmt.Println() - rootCmd.SetArgs([]string{"sub", "arg1", "arg2"}) - rootCmd.Execute() -} -``` - -Output: -``` -Inside rootCmd PersistentPreRun with args: [] -Inside rootCmd PreRun with args: [] -Inside rootCmd Run with args: [] -Inside rootCmd PostRun with args: [] -Inside rootCmd PersistentPostRun with args: [] - -Inside rootCmd PersistentPreRun with args: [arg1 arg2] -Inside subCmd PreRun with args: [arg1 arg2] -Inside subCmd Run with args: [arg1 arg2] -Inside subCmd PostRun with args: [arg1 arg2] -Inside subCmd PersistentPostRun with args: [arg1 arg2] -``` - -## Suggestions when "unknown command" happens - -Cobra will print automatic suggestions when "unknown command" errors happen. This allows Cobra to behave similarly to the `git` command when a typo happens. For example: - -``` -$ hugo srever -Error: unknown command "srever" for "hugo" - -Did you mean this? - server - -Run 'hugo --help' for usage. -``` - -Suggestions are automatic based on every subcommand registered and use an implementation of [Levenshtein distance](http://en.wikipedia.org/wiki/Levenshtein_distance). Every registered command that matches a minimum distance of 2 (ignoring case) will be displayed as a suggestion. - -If you need to disable suggestions or tweak the string distance in your command, use: - -```go -command.DisableSuggestions = true -``` - -or - -```go -command.SuggestionsMinimumDistance = 1 -``` - -You can also explicitly set names for which a given command will be suggested using the `SuggestFor` attribute. This allows suggestions for strings that are not close in terms of string distance, but makes sense in your set of commands and for some which you don't want aliases. Example: - -``` -$ kubectl remove -Error: unknown command "remove" for "kubectl" - -Did you mean this? - delete - -Run 'kubectl help' for usage. -``` - -## Generating documentation for your command - -Cobra can generate documentation based on subcommands, flags, etc. Read more about it in the [docs generation documentation](doc/README.md). - -## Generating shell completions - -Cobra can generate a shell-completion file for the following shells: bash, zsh, fish, PowerShell. If you add more information to your commands, these completions can be amazingly powerful and flexible. Read more about it in [Shell Completions](shell_completions.md). +See [User Guide](user_guide.md). # License diff --git a/vendor/github.com/spf13/cobra/bash_completions.go b/vendor/github.com/spf13/cobra/bash_completions.go index 7106147937..733f4d1211 100644 --- a/vendor/github.com/spf13/cobra/bash_completions.go +++ b/vendor/github.com/spf13/cobra/bash_completions.go @@ -384,7 +384,7 @@ func writePostscript(buf io.StringWriter, name string) { name = strings.Replace(name, ":", "__", -1) WriteStringAndCheck(buf, fmt.Sprintf("__start_%s()\n", name)) WriteStringAndCheck(buf, fmt.Sprintf(`{ - local cur prev words cword + local cur prev words cword split declare -A flaghash 2>/dev/null || : declare -A aliashash 2>/dev/null || : if declare -F _init_completion >/dev/null 2>&1; then @@ -400,11 +400,13 @@ func writePostscript(buf io.StringWriter, name string) { local flags_with_completion=() local flags_completion=() local commands=("%[1]s") + local command_aliases=() local must_have_one_flag=() local must_have_one_noun=() local has_completion_function local last_command local nouns=() + local noun_aliases=() __%[1]s_handle_word } @@ -510,6 +512,8 @@ func writeLocalNonPersistentFlag(buf io.StringWriter, flag *pflag.Flag) { // Setup annotations for go completions for registered flags func prepareCustomAnnotationsForFlags(cmd *Command) { + flagCompletionMutex.RLock() + defer flagCompletionMutex.RUnlock() for flag := range flagCompletionFunctions { // Make sure the completion script calls the __*_go_custom_completion function for // every registered flag. We need to do this here (and not when the flag was registered diff --git a/vendor/github.com/spf13/cobra/bash_completions.md b/vendor/github.com/spf13/cobra/bash_completions.md index 130f99b923..52919b2fa6 100644 --- a/vendor/github.com/spf13/cobra/bash_completions.md +++ b/vendor/github.com/spf13/cobra/bash_completions.md @@ -6,6 +6,8 @@ Please refer to [Shell Completions](shell_completions.md) for details. For backward compatibility, Cobra still supports its legacy dynamic completion solution (described below). Unlike the `ValidArgsFunction` solution, the legacy solution will only work for Bash shell-completion and not for other shells. This legacy solution can be used along-side `ValidArgsFunction` and `RegisterFlagCompletionFunc()`, as long as both solutions are not used for the same command. This provides a path to gradually migrate from the legacy solution to the new solution. +**Note**: Cobra's default `completion` command uses bash completion V2. If you are currently using Cobra's legacy dynamic completion solution, you should not use the default `completion` command but continue using your own. + The legacy solution allows you to inject bash functions into the bash completion script. Those bash functions are responsible for providing the completion choices for your own completions. Some code that works in kubernetes: diff --git a/vendor/github.com/spf13/cobra/bash_completionsV2.go b/vendor/github.com/spf13/cobra/bash_completionsV2.go new file mode 100644 index 0000000000..8859b57c42 --- /dev/null +++ b/vendor/github.com/spf13/cobra/bash_completionsV2.go @@ -0,0 +1,302 @@ +package cobra + +import ( + "bytes" + "fmt" + "io" + "os" +) + +func (c *Command) genBashCompletion(w io.Writer, includeDesc bool) error { + buf := new(bytes.Buffer) + genBashComp(buf, c.Name(), includeDesc) + _, err := buf.WriteTo(w) + return err +} + +func genBashComp(buf io.StringWriter, name string, includeDesc bool) { + compCmd := ShellCompRequestCmd + if !includeDesc { + compCmd = ShellCompNoDescRequestCmd + } + + WriteStringAndCheck(buf, fmt.Sprintf(`# bash completion V2 for %-36[1]s -*- shell-script -*- + +__%[1]s_debug() +{ + if [[ -n ${BASH_COMP_DEBUG_FILE:-} ]]; then + echo "$*" >> "${BASH_COMP_DEBUG_FILE}" + fi +} + +# Macs have bash3 for which the bash-completion package doesn't include +# _init_completion. This is a minimal version of that function. +__%[1]s_init_completion() +{ + COMPREPLY=() + _get_comp_words_by_ref "$@" cur prev words cword +} + +# This function calls the %[1]s program to obtain the completion +# results and the directive. It fills the 'out' and 'directive' vars. +__%[1]s_get_completion_results() { + local requestComp lastParam lastChar args + + # Prepare the command to request completions for the program. + # Calling ${words[0]} instead of directly %[1]s allows to handle aliases + args=("${words[@]:1}") + requestComp="${words[0]} %[2]s ${args[*]}" + + lastParam=${words[$((${#words[@]}-1))]} + lastChar=${lastParam:$((${#lastParam}-1)):1} + __%[1]s_debug "lastParam ${lastParam}, lastChar ${lastChar}" + + if [ -z "${cur}" ] && [ "${lastChar}" != "=" ]; then + # If the last parameter is complete (there is a space following it) + # We add an extra empty parameter so we can indicate this to the go method. + __%[1]s_debug "Adding extra empty parameter" + requestComp="${requestComp} ''" + fi + + # When completing a flag with an = (e.g., %[1]s -n=) + # bash focuses on the part after the =, so we need to remove + # the flag part from $cur + if [[ "${cur}" == -*=* ]]; then + cur="${cur#*=}" + fi + + __%[1]s_debug "Calling ${requestComp}" + # Use eval to handle any environment variables and such + out=$(eval "${requestComp}" 2>/dev/null) + + # Extract the directive integer at the very end of the output following a colon (:) + directive=${out##*:} + # Remove the directive + out=${out%%:*} + if [ "${directive}" = "${out}" ]; then + # There is not directive specified + directive=0 + fi + __%[1]s_debug "The completion directive is: ${directive}" + __%[1]s_debug "The completions are: ${out[*]}" +} + +__%[1]s_process_completion_results() { + local shellCompDirectiveError=%[3]d + local shellCompDirectiveNoSpace=%[4]d + local shellCompDirectiveNoFileComp=%[5]d + local shellCompDirectiveFilterFileExt=%[6]d + local shellCompDirectiveFilterDirs=%[7]d + + if [ $((directive & shellCompDirectiveError)) -ne 0 ]; then + # Error code. No completion. + __%[1]s_debug "Received error from custom completion go code" + return + else + if [ $((directive & shellCompDirectiveNoSpace)) -ne 0 ]; then + if [[ $(type -t compopt) = "builtin" ]]; then + __%[1]s_debug "Activating no space" + compopt -o nospace + else + __%[1]s_debug "No space directive not supported in this version of bash" + fi + fi + if [ $((directive & shellCompDirectiveNoFileComp)) -ne 0 ]; then + if [[ $(type -t compopt) = "builtin" ]]; then + __%[1]s_debug "Activating no file completion" + compopt +o default + else + __%[1]s_debug "No file completion directive not supported in this version of bash" + fi + fi + fi + + if [ $((directive & shellCompDirectiveFilterFileExt)) -ne 0 ]; then + # File extension filtering + local fullFilter filter filteringCmd + + # Do not use quotes around the $out variable or else newline + # characters will be kept. + for filter in ${out[*]}; do + fullFilter+="$filter|" + done + + filteringCmd="_filedir $fullFilter" + __%[1]s_debug "File filtering command: $filteringCmd" + $filteringCmd + elif [ $((directive & shellCompDirectiveFilterDirs)) -ne 0 ]; then + # File completion for directories only + + # Use printf to strip any trailing newline + local subdir + subdir=$(printf "%%s" "${out[0]}") + if [ -n "$subdir" ]; then + __%[1]s_debug "Listing directories in $subdir" + pushd "$subdir" >/dev/null 2>&1 && _filedir -d && popd >/dev/null 2>&1 || return + else + __%[1]s_debug "Listing directories in ." + _filedir -d + fi + else + __%[1]s_handle_standard_completion_case + fi + + __%[1]s_handle_special_char "$cur" : + __%[1]s_handle_special_char "$cur" = +} + +__%[1]s_handle_standard_completion_case() { + local tab comp + tab=$(printf '\t') + + local longest=0 + # Look for the longest completion so that we can format things nicely + while IFS='' read -r comp; do + # Strip any description before checking the length + comp=${comp%%%%$tab*} + # Only consider the completions that match + comp=$(compgen -W "$comp" -- "$cur") + if ((${#comp}>longest)); then + longest=${#comp} + fi + done < <(printf "%%s\n" "${out[@]}") + + local completions=() + while IFS='' read -r comp; do + if [ -z "$comp" ]; then + continue + fi + + __%[1]s_debug "Original comp: $comp" + comp="$(__%[1]s_format_comp_descriptions "$comp" "$longest")" + __%[1]s_debug "Final comp: $comp" + completions+=("$comp") + done < <(printf "%%s\n" "${out[@]}") + + while IFS='' read -r comp; do + COMPREPLY+=("$comp") + done < <(compgen -W "${completions[*]}" -- "$cur") + + # If there is a single completion left, remove the description text + if [ ${#COMPREPLY[*]} -eq 1 ]; then + __%[1]s_debug "COMPREPLY[0]: ${COMPREPLY[0]}" + comp="${COMPREPLY[0]%%%% *}" + __%[1]s_debug "Removed description from single completion, which is now: ${comp}" + COMPREPLY=() + COMPREPLY+=("$comp") + fi +} + +__%[1]s_handle_special_char() +{ + local comp="$1" + local char=$2 + if [[ "$comp" == *${char}* && "$COMP_WORDBREAKS" == *${char}* ]]; then + local word=${comp%%"${comp##*${char}}"} + local idx=${#COMPREPLY[*]} + while [[ $((--idx)) -ge 0 ]]; do + COMPREPLY[$idx]=${COMPREPLY[$idx]#"$word"} + done + fi +} + +__%[1]s_format_comp_descriptions() +{ + local tab + tab=$(printf '\t') + local comp="$1" + local longest=$2 + + # Properly format the description string which follows a tab character if there is one + if [[ "$comp" == *$tab* ]]; then + desc=${comp#*$tab} + comp=${comp%%%%$tab*} + + # $COLUMNS stores the current shell width. + # Remove an extra 4 because we add 2 spaces and 2 parentheses. + maxdesclength=$(( COLUMNS - longest - 4 )) + + # Make sure we can fit a description of at least 8 characters + # if we are to align the descriptions. + if [[ $maxdesclength -gt 8 ]]; then + # Add the proper number of spaces to align the descriptions + for ((i = ${#comp} ; i < longest ; i++)); do + comp+=" " + done + else + # Don't pad the descriptions so we can fit more text after the completion + maxdesclength=$(( COLUMNS - ${#comp} - 4 )) + fi + + # If there is enough space for any description text, + # truncate the descriptions that are too long for the shell width + if [ $maxdesclength -gt 0 ]; then + if [ ${#desc} -gt $maxdesclength ]; then + desc=${desc:0:$(( maxdesclength - 1 ))} + desc+="…" + fi + comp+=" ($desc)" + fi + fi + + # Must use printf to escape all special characters + printf "%%q" "${comp}" +} + +__start_%[1]s() +{ + local cur prev words cword split + + COMPREPLY=() + + # Call _init_completion from the bash-completion package + # to prepare the arguments properly + if declare -F _init_completion >/dev/null 2>&1; then + _init_completion -n "=:" || return + else + __%[1]s_init_completion -n "=:" || return + fi + + __%[1]s_debug + __%[1]s_debug "========= starting completion logic ==========" + __%[1]s_debug "cur is ${cur}, words[*] is ${words[*]}, #words[@] is ${#words[@]}, cword is $cword" + + # The user could have moved the cursor backwards on the command-line. + # We need to trigger completion from the $cword location, so we need + # to truncate the command-line ($words) up to the $cword location. + words=("${words[@]:0:$cword+1}") + __%[1]s_debug "Truncated words[*]: ${words[*]}," + + local out directive + __%[1]s_get_completion_results + __%[1]s_process_completion_results +} + +if [[ $(type -t compopt) = "builtin" ]]; then + complete -o default -F __start_%[1]s %[1]s +else + complete -o default -o nospace -F __start_%[1]s %[1]s +fi + +# ex: ts=4 sw=4 et filetype=sh +`, name, compCmd, + ShellCompDirectiveError, ShellCompDirectiveNoSpace, ShellCompDirectiveNoFileComp, + ShellCompDirectiveFilterFileExt, ShellCompDirectiveFilterDirs)) +} + +// GenBashCompletionFileV2 generates Bash completion version 2. +func (c *Command) GenBashCompletionFileV2(filename string, includeDesc bool) error { + outFile, err := os.Create(filename) + if err != nil { + return err + } + defer outFile.Close() + + return c.GenBashCompletionV2(outFile, includeDesc) +} + +// GenBashCompletionV2 generates Bash completion file version 2 +// and writes it to the passed writer. +func (c *Command) GenBashCompletionV2(w io.Writer, includeDesc bool) error { + return c.genBashCompletion(w, includeDesc) +} diff --git a/vendor/github.com/spf13/cobra/command.go b/vendor/github.com/spf13/cobra/command.go index d6732ad115..2cc18891d7 100644 --- a/vendor/github.com/spf13/cobra/command.go +++ b/vendor/github.com/spf13/cobra/command.go @@ -63,9 +63,9 @@ type Command struct { // Example is examples of how to use the command. Example string - // ValidArgs is list of all valid non-flag arguments that are accepted in bash completions + // ValidArgs is list of all valid non-flag arguments that are accepted in shell completions ValidArgs []string - // ValidArgsFunction is an optional function that provides valid non-flag arguments for bash completion. + // ValidArgsFunction is an optional function that provides valid non-flag arguments for shell completion. // It is a dynamic version of using ValidArgs. // Only one of ValidArgs and ValidArgsFunction can be used for a command. ValidArgsFunction func(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective) @@ -74,11 +74,12 @@ type Command struct { Args PositionalArgs // ArgAliases is List of aliases for ValidArgs. - // These are not suggested to the user in the bash completion, + // These are not suggested to the user in the shell completion, // but accepted if entered manually. ArgAliases []string - // BashCompletionFunction is custom functions used by the bash autocompletion generator. + // BashCompletionFunction is custom bash functions used by the legacy bash autocompletion generator. + // For portability with other shells, it is recommended to instead use ValidArgsFunction BashCompletionFunction string // Deprecated defines, if this command is deprecated and should print this string when used. @@ -168,6 +169,9 @@ type Command struct { //FParseErrWhitelist flag parse errors to be ignored FParseErrWhitelist FParseErrWhitelist + // CompletionOptions is a set of options to control the handling of shell completion + CompletionOptions CompletionOptions + // commandsAreSorted defines, if command slice are sorted or not. commandsAreSorted bool // commandCalledAs is the name or alias value used to call this command. @@ -884,7 +888,8 @@ func (c *Command) preRun() { } // ExecuteContext is the same as Execute(), but sets the ctx on the command. -// Retrieve ctx by calling cmd.Context() inside your *Run lifecycle functions. +// Retrieve ctx by calling cmd.Context() inside your *Run lifecycle or ValidArgs +// functions. func (c *Command) ExecuteContext(ctx context.Context) error { c.ctx = ctx return c.Execute() @@ -898,6 +903,14 @@ func (c *Command) Execute() error { return err } +// ExecuteContextC is the same as ExecuteC(), but sets the ctx on the command. +// Retrieve ctx by calling cmd.Context() inside your *Run lifecycle or ValidArgs +// functions. +func (c *Command) ExecuteContextC(ctx context.Context) (*Command, error) { + c.ctx = ctx + return c.ExecuteC() +} + // ExecuteC executes the command. func (c *Command) ExecuteC() (cmd *Command, err error) { if c.ctx == nil { @@ -914,9 +927,10 @@ func (c *Command) ExecuteC() (cmd *Command, err error) { preExecHookFn(c) } - // initialize help as the last point possible to allow for user - // overriding + // initialize help at the last point to allow for user overriding c.InitDefaultHelpCmd() + // initialize completion at the last point to allow for user overriding + c.initDefaultCompletionCmd() args := c.args @@ -925,7 +939,7 @@ func (c *Command) ExecuteC() (cmd *Command, err error) { args = os.Args[1:] } - // initialize the hidden command to be used for bash completion + // initialize the hidden command to be used for shell completion c.initCompleteCmd(args) var flags []string diff --git a/vendor/github.com/spf13/cobra/custom_completions.go b/vendor/github.com/spf13/cobra/completions.go similarity index 70% rename from vendor/github.com/spf13/cobra/custom_completions.go rename to vendor/github.com/spf13/cobra/completions.go index fa060c147b..b849b9c844 100644 --- a/vendor/github.com/spf13/cobra/custom_completions.go +++ b/vendor/github.com/spf13/cobra/completions.go @@ -4,6 +4,7 @@ import ( "fmt" "os" "strings" + "sync" "github.com/spf13/pflag" ) @@ -17,13 +18,25 @@ const ( ShellCompNoDescRequestCmd = "__completeNoDesc" ) -// Global map of flag completion functions. +// Global map of flag completion functions. Make sure to use flagCompletionMutex before you try to read and write from it. var flagCompletionFunctions = map[*pflag.Flag]func(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective){} +// lock for reading and writing from flagCompletionFunctions +var flagCompletionMutex = &sync.RWMutex{} + // ShellCompDirective is a bit map representing the different behaviors the shell // can be instructed to have once completions have been provided. type ShellCompDirective int +type flagCompError struct { + subCommand string + flagName string +} + +func (e *flagCompError) Error() string { + return "Subcommand '" + e.subCommand + "' does not support flag '" + e.flagName + "'" +} + const ( // ShellCompDirectiveError indicates an error occurred and completions should be ignored. ShellCompDirectiveError ShellCompDirective = 1 << iota @@ -34,7 +47,6 @@ const ( // ShellCompDirectiveNoFileComp indicates that the shell should not provide // file completion even when no completion is provided. - // This currently does not work for zsh or bash < 4 ShellCompDirectiveNoFileComp // ShellCompDirectiveFilterFileExt indicates that the provided completions @@ -63,12 +75,41 @@ const ( ShellCompDirectiveDefault ShellCompDirective = 0 ) +const ( + // Constants for the completion command + compCmdName = "completion" + compCmdNoDescFlagName = "no-descriptions" + compCmdNoDescFlagDesc = "disable completion descriptions" + compCmdNoDescFlagDefault = false +) + +// CompletionOptions are the options to control shell completion +type CompletionOptions struct { + // DisableDefaultCmd prevents Cobra from creating a default 'completion' command + DisableDefaultCmd bool + // DisableNoDescFlag prevents Cobra from creating the '--no-descriptions' flag + // for shells that support completion descriptions + DisableNoDescFlag bool + // DisableDescriptions turns off all completion descriptions for shells + // that support them + DisableDescriptions bool +} + +// NoFileCompletions can be used to disable file completion for commands that should +// not trigger file completions. +func NoFileCompletions(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective) { + return nil, ShellCompDirectiveNoFileComp +} + // RegisterFlagCompletionFunc should be called to register a function to provide completion for a flag. func (c *Command) RegisterFlagCompletionFunc(flagName string, f func(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective)) error { flag := c.Flag(flagName) if flag == nil { return fmt.Errorf("RegisterFlagCompletionFunc: flag '%s' does not exist", flagName) } + flagCompletionMutex.Lock() + defer flagCompletionMutex.Unlock() + if _, exists := flagCompletionFunctions[flag]; exists { return fmt.Errorf("RegisterFlagCompletionFunc: flag '%s' already registered", flagName) } @@ -149,10 +190,6 @@ func (c *Command) initCompleteCmd(args []string) { fmt.Fprintln(finalCmd.OutOrStdout(), comp) } - if directive >= shellCompDirectiveMaxValue { - directive = ShellCompDirectiveDefault - } - // As the last printout, print the completion directive for the completion script to parse. // The directive integer must be that last character following a single colon (:). // The completion script expects : @@ -195,23 +232,41 @@ func (c *Command) getCompletions(args []string) (*Command, []string, ShellCompDi // Unable to find the real command. E.g., someInvalidCmd return c, []string{}, ShellCompDirectiveDefault, fmt.Errorf("Unable to find a command for arguments: %v", trimmedArgs) } + finalCmd.ctx = c.ctx // Check if we are doing flag value completion before parsing the flags. // This is important because if we are completing a flag value, we need to also // remove the flag name argument from the list of finalArgs or else the parsing // could fail due to an invalid value (incomplete) for the flag. - flag, finalArgs, toComplete, err := checkIfFlagCompletion(finalCmd, finalArgs, toComplete) - if err != nil { - // Error while attempting to parse flags - return finalCmd, []string{}, ShellCompDirectiveDefault, err - } + flag, finalArgs, toComplete, flagErr := checkIfFlagCompletion(finalCmd, finalArgs, toComplete) + + // Check if interspersed is false or -- was set on a previous arg. + // This works by counting the arguments. Normally -- is not counted as arg but + // if -- was already set or interspersed is false and there is already one arg then + // the extra added -- is counted as arg. + flagCompletion := true + _ = finalCmd.ParseFlags(append(finalArgs, "--")) + newArgCount := finalCmd.Flags().NArg() // Parse the flags early so we can check if required flags are set if err = finalCmd.ParseFlags(finalArgs); err != nil { return finalCmd, []string{}, ShellCompDirectiveDefault, fmt.Errorf("Error while parsing flags from args %v: %s", finalArgs, err.Error()) } - if flag != nil { + realArgCount := finalCmd.Flags().NArg() + if newArgCount > realArgCount { + // don't do flag completion (see above) + flagCompletion = false + } + // Error while attempting to parse flags + if flagErr != nil { + // If error type is flagCompError and we don't want flagCompletion we should ignore the error + if _, ok := flagErr.(*flagCompError); !(ok && !flagCompletion) { + return finalCmd, []string{}, ShellCompDirectiveDefault, flagErr + } + } + + if flag != nil && flagCompletion { // Check if we are completing a flag value subject to annotations if validExts, present := flag.Annotations[BashCompFilenameExt]; present { if len(validExts) != 0 { @@ -238,7 +293,7 @@ func (c *Command) getCompletions(args []string) (*Command, []string, ShellCompDi // When doing completion of a flag name, as soon as an argument starts with // a '-' we know it is a flag. We cannot use isFlagArg() here as it requires // the flag name to be complete - if flag == nil && len(toComplete) > 0 && toComplete[0] == '-' && !strings.Contains(toComplete, "=") { + if flag == nil && len(toComplete) > 0 && toComplete[0] == '-' && !strings.Contains(toComplete, "=") && flagCompletion { var completions []string // First check for required flags @@ -302,7 +357,7 @@ func (c *Command) getCompletions(args []string) (*Command, []string, ShellCompDi if len(finalArgs) == 0 && !foundLocalNonPersistentFlag { // We only complete sub-commands if: // - there are no arguments on the command-line and - // - there are no local, non-peristent flag on the command-line or TraverseChildren is true + // - there are no local, non-persistent flags on the command-line or TraverseChildren is true for _, subCmd := range finalCmd.Commands() { if subCmd.IsAvailableCommand() || subCmd == finalCmd.helpCommand { if strings.HasPrefix(subCmd.Name(), toComplete) { @@ -351,8 +406,10 @@ func (c *Command) getCompletions(args []string) (*Command, []string, ShellCompDi // Find the completion function for the flag or command var completionFn func(cmd *Command, args []string, toComplete string) ([]string, ShellCompDirective) - if flag != nil { + if flag != nil && flagCompletion { + flagCompletionMutex.RLock() completionFn = flagCompletionFunctions[flag] + flagCompletionMutex.RUnlock() } else { completionFn = finalCmd.ValidArgsFunction } @@ -435,6 +492,7 @@ func checkIfFlagCompletion(finalCmd *Command, args []string, lastArg string) (*p var flagName string trimmedArgs := args flagWithEqual := false + orgLastArg := lastArg // When doing completion of a flag name, as soon as an argument starts with // a '-' we know it is a flag. We cannot use isFlagArg() here as that function @@ -442,7 +500,16 @@ func checkIfFlagCompletion(finalCmd *Command, args []string, lastArg string) (*p if len(lastArg) > 0 && lastArg[0] == '-' { if index := strings.Index(lastArg, "="); index >= 0 { // Flag with an = - flagName = strings.TrimLeft(lastArg[:index], "-") + if strings.HasPrefix(lastArg[:index], "--") { + // Flag has full name + flagName = lastArg[2:index] + } else { + // Flag is shorthand + // We have to get the last shorthand flag name + // e.g. `-asd` => d to provide the correct completion + // https://github.com/spf13/cobra/issues/1257 + flagName = lastArg[index-1 : index] + } lastArg = lastArg[index+1:] flagWithEqual = true } else { @@ -459,8 +526,16 @@ func checkIfFlagCompletion(finalCmd *Command, args []string, lastArg string) (*p // If the flag contains an = it means it has already been fully processed, // so we don't need to deal with it here. if index := strings.Index(prevArg, "="); index < 0 { - flagName = strings.TrimLeft(prevArg, "-") - + if strings.HasPrefix(prevArg, "--") { + // Flag has full name + flagName = prevArg[2:] + } else { + // Flag is shorthand + // We have to get the last shorthand flag name + // e.g. `-asd` => d to provide the correct completion + // https://github.com/spf13/cobra/issues/1257 + flagName = prevArg[len(prevArg)-1:] + } // Remove the uncompleted flag or else there could be an error created // for an invalid value for that flag trimmedArgs = args[:len(args)-1] @@ -476,9 +551,8 @@ func checkIfFlagCompletion(finalCmd *Command, args []string, lastArg string) (*p flag := findFlag(finalCmd, flagName) if flag == nil { - // Flag not supported by this command, nothing to complete - err := fmt.Errorf("Subcommand '%s' does not support flag '%s'", finalCmd.Name(), flagName) - return nil, nil, "", err + // Flag not supported by this command, the interspersed option might be set so return the original args + return nil, args, orgLastArg, &flagCompError{subCommand: finalCmd.Name(), flagName: flagName} } if !flagWithEqual { @@ -494,6 +568,156 @@ func checkIfFlagCompletion(finalCmd *Command, args []string, lastArg string) (*p return flag, trimmedArgs, lastArg, nil } +// initDefaultCompletionCmd adds a default 'completion' command to c. +// This function will do nothing if any of the following is true: +// 1- the feature has been explicitly disabled by the program, +// 2- c has no subcommands (to avoid creating one), +// 3- c already has a 'completion' command provided by the program. +func (c *Command) initDefaultCompletionCmd() { + if c.CompletionOptions.DisableDefaultCmd || !c.HasSubCommands() { + return + } + + for _, cmd := range c.commands { + if cmd.Name() == compCmdName || cmd.HasAlias(compCmdName) { + // A completion command is already available + return + } + } + + haveNoDescFlag := !c.CompletionOptions.DisableNoDescFlag && !c.CompletionOptions.DisableDescriptions + + completionCmd := &Command{ + Use: compCmdName, + Short: "generate the autocompletion script for the specified shell", + Long: fmt.Sprintf(` +Generate the autocompletion script for %[1]s for the specified shell. +See each sub-command's help for details on how to use the generated script. +`, c.Root().Name()), + Args: NoArgs, + ValidArgsFunction: NoFileCompletions, + } + c.AddCommand(completionCmd) + + out := c.OutOrStdout() + noDesc := c.CompletionOptions.DisableDescriptions + shortDesc := "generate the autocompletion script for %s" + bash := &Command{ + Use: "bash", + Short: fmt.Sprintf(shortDesc, "bash"), + Long: fmt.Sprintf(` +Generate the autocompletion script for the bash shell. + +This script depends on the 'bash-completion' package. +If it is not installed already, you can install it via your OS's package manager. + +To load completions in your current shell session: +$ source <(%[1]s completion bash) + +To load completions for every new session, execute once: +Linux: + $ %[1]s completion bash > /etc/bash_completion.d/%[1]s +MacOS: + $ %[1]s completion bash > /usr/local/etc/bash_completion.d/%[1]s + +You will need to start a new shell for this setup to take effect. + `, c.Root().Name()), + Args: NoArgs, + DisableFlagsInUseLine: true, + ValidArgsFunction: NoFileCompletions, + RunE: func(cmd *Command, args []string) error { + return cmd.Root().GenBashCompletionV2(out, !noDesc) + }, + } + if haveNoDescFlag { + bash.Flags().BoolVar(&noDesc, compCmdNoDescFlagName, compCmdNoDescFlagDefault, compCmdNoDescFlagDesc) + } + + zsh := &Command{ + Use: "zsh", + Short: fmt.Sprintf(shortDesc, "zsh"), + Long: fmt.Sprintf(` +Generate the autocompletion script for the zsh shell. + +If shell completion is not already enabled in your environment you will need +to enable it. You can execute the following once: + +$ echo "autoload -U compinit; compinit" >> ~/.zshrc + +To load completions for every new session, execute once: +# Linux: +$ %[1]s completion zsh > "${fpath[1]}/_%[1]s" +# macOS: +$ %[1]s completion zsh > /usr/local/share/zsh/site-functions/_%[1]s + +You will need to start a new shell for this setup to take effect. +`, c.Root().Name()), + Args: NoArgs, + ValidArgsFunction: NoFileCompletions, + RunE: func(cmd *Command, args []string) error { + if noDesc { + return cmd.Root().GenZshCompletionNoDesc(out) + } + return cmd.Root().GenZshCompletion(out) + }, + } + if haveNoDescFlag { + zsh.Flags().BoolVar(&noDesc, compCmdNoDescFlagName, compCmdNoDescFlagDefault, compCmdNoDescFlagDesc) + } + + fish := &Command{ + Use: "fish", + Short: fmt.Sprintf(shortDesc, "fish"), + Long: fmt.Sprintf(` +Generate the autocompletion script for the fish shell. + +To load completions in your current shell session: +$ %[1]s completion fish | source + +To load completions for every new session, execute once: +$ %[1]s completion fish > ~/.config/fish/completions/%[1]s.fish + +You will need to start a new shell for this setup to take effect. +`, c.Root().Name()), + Args: NoArgs, + ValidArgsFunction: NoFileCompletions, + RunE: func(cmd *Command, args []string) error { + return cmd.Root().GenFishCompletion(out, !noDesc) + }, + } + if haveNoDescFlag { + fish.Flags().BoolVar(&noDesc, compCmdNoDescFlagName, compCmdNoDescFlagDefault, compCmdNoDescFlagDesc) + } + + powershell := &Command{ + Use: "powershell", + Short: fmt.Sprintf(shortDesc, "powershell"), + Long: fmt.Sprintf(` +Generate the autocompletion script for powershell. + +To load completions in your current shell session: +PS C:\> %[1]s completion powershell | Out-String | Invoke-Expression + +To load completions for every new session, add the output of the above command +to your powershell profile. +`, c.Root().Name()), + Args: NoArgs, + ValidArgsFunction: NoFileCompletions, + RunE: func(cmd *Command, args []string) error { + if noDesc { + return cmd.Root().GenPowerShellCompletion(out) + } + return cmd.Root().GenPowerShellCompletionWithDesc(out) + + }, + } + if haveNoDescFlag { + powershell.Flags().BoolVar(&noDesc, compCmdNoDescFlagName, compCmdNoDescFlagDefault, compCmdNoDescFlagDesc) + } + + completionCmd.AddCommand(bash, zsh, fish, powershell) +} + func findFlag(cmd *Command, name string) *pflag.Flag { flagSet := cmd.Flags() if len(name) == 1 { diff --git a/vendor/github.com/spf13/cobra/fish_completions.go b/vendor/github.com/spf13/cobra/fish_completions.go index 3e112347d7..bb57fd5685 100644 --- a/vendor/github.com/spf13/cobra/fish_completions.go +++ b/vendor/github.com/spf13/cobra/fish_completions.go @@ -21,44 +21,47 @@ func genFishComp(buf io.StringWriter, name string, includeDesc bool) { WriteStringAndCheck(buf, fmt.Sprintf("# fish completion for %-36s -*- shell-script -*-\n", name)) WriteStringAndCheck(buf, fmt.Sprintf(` function __%[1]s_debug - set file "$BASH_COMP_DEBUG_FILE" + set -l file "$BASH_COMP_DEBUG_FILE" if test -n "$file" echo "$argv" >> $file end end function __%[1]s_perform_completion - __%[1]s_debug "Starting __%[1]s_perform_completion with: $argv" + __%[1]s_debug "Starting __%[1]s_perform_completion" - set args (string split -- " " "$argv") - set lastArg "$args[-1]" + # Extract all args except the last one + set -l args (commandline -opc) + # Extract the last arg and escape it in case it is a space + set -l lastArg (string escape -- (commandline -ct)) __%[1]s_debug "args: $args" __%[1]s_debug "last arg: $lastArg" - set emptyArg "" - if test -z "$lastArg" - __%[1]s_debug "Setting emptyArg" - set emptyArg \"\" - end - __%[1]s_debug "emptyArg: $emptyArg" - - if not type -q "$args[1]" - # This can happen when "complete --do-complete %[2]s" is called when running this script. - __%[1]s_debug "Cannot find $args[1]. No completions." - return - end + set -l requestComp "$args[1] %[3]s $args[2..-1] $lastArg" - set requestComp "$args[1] %[3]s $args[2..-1] $emptyArg" __%[1]s_debug "Calling $requestComp" + set -l results (eval $requestComp 2> /dev/null) + + # Some programs may output extra empty lines after the directive. + # Let's ignore them or else it will break completion. + # Ref: https://github.com/spf13/cobra/issues/1279 + for line in $results[-1..1] + if test (string trim -- $line) = "" + # Found an empty line, remove it + set results $results[1..-2] + else + # Found non-empty line, we have our proper output + break + end + end - set results (eval $requestComp 2> /dev/null) - set comps $results[1..-2] - set directiveLine $results[-1] + set -l comps $results[1..-2] + set -l directiveLine $results[-1] # For Fish, when completing a flag with an = (e.g., -n=) # completions must be prefixed with the flag - set flagPrefix (string match -r -- '-.*=' "$lastArg") + set -l flagPrefix (string match -r -- '-.*=' "$lastArg") __%[1]s_debug "Comps: $comps" __%[1]s_debug "DirectiveLine: $directiveLine" @@ -71,115 +74,124 @@ function __%[1]s_perform_completion printf "%%s\n" "$directiveLine" end -# This function does three things: -# 1- Obtain the completions and store them in the global __%[1]s_comp_results -# 2- Set the __%[1]s_comp_do_file_comp flag if file completion should be performed -# and unset it otherwise -# 3- Return true if the completion results are not empty +# This function does two things: +# - Obtain the completions and store them in the global __%[1]s_comp_results +# - Return false if file completion should be performed function __%[1]s_prepare_completions + __%[1]s_debug "" + __%[1]s_debug "========= starting completion logic ==========" + # Start fresh - set --erase __%[1]s_comp_do_file_comp set --erase __%[1]s_comp_results - # Check if the command-line is already provided. This is useful for testing. - if not set --query __%[1]s_comp_commandLine - # Use the -c flag to allow for completion in the middle of the line - set __%[1]s_comp_commandLine (commandline -c) - end - __%[1]s_debug "commandLine is: $__%[1]s_comp_commandLine" - - set results (__%[1]s_perform_completion "$__%[1]s_comp_commandLine") - set --erase __%[1]s_comp_commandLine + set -l results (__%[1]s_perform_completion) __%[1]s_debug "Completion results: $results" if test -z "$results" __%[1]s_debug "No completion, probably due to a failure" # Might as well do file completion, in case it helps - set --global __%[1]s_comp_do_file_comp 1 return 1 end - set directive (string sub --start 2 $results[-1]) + set -l directive (string sub --start 2 $results[-1]) set --global __%[1]s_comp_results $results[1..-2] __%[1]s_debug "Completions are: $__%[1]s_comp_results" __%[1]s_debug "Directive is: $directive" - set shellCompDirectiveError %[4]d - set shellCompDirectiveNoSpace %[5]d - set shellCompDirectiveNoFileComp %[6]d - set shellCompDirectiveFilterFileExt %[7]d - set shellCompDirectiveFilterDirs %[8]d + set -l shellCompDirectiveError %[4]d + set -l shellCompDirectiveNoSpace %[5]d + set -l shellCompDirectiveNoFileComp %[6]d + set -l shellCompDirectiveFilterFileExt %[7]d + set -l shellCompDirectiveFilterDirs %[8]d if test -z "$directive" set directive 0 end - set compErr (math (math --scale 0 $directive / $shellCompDirectiveError) %% 2) + set -l compErr (math (math --scale 0 $directive / $shellCompDirectiveError) %% 2) if test $compErr -eq 1 __%[1]s_debug "Received error directive: aborting." # Might as well do file completion, in case it helps - set --global __%[1]s_comp_do_file_comp 1 return 1 end - set filefilter (math (math --scale 0 $directive / $shellCompDirectiveFilterFileExt) %% 2) - set dirfilter (math (math --scale 0 $directive / $shellCompDirectiveFilterDirs) %% 2) + set -l filefilter (math (math --scale 0 $directive / $shellCompDirectiveFilterFileExt) %% 2) + set -l dirfilter (math (math --scale 0 $directive / $shellCompDirectiveFilterDirs) %% 2) if test $filefilter -eq 1; or test $dirfilter -eq 1 __%[1]s_debug "File extension filtering or directory filtering not supported" # Do full file completion instead - set --global __%[1]s_comp_do_file_comp 1 return 1 end - set nospace (math (math --scale 0 $directive / $shellCompDirectiveNoSpace) %% 2) - set nofiles (math (math --scale 0 $directive / $shellCompDirectiveNoFileComp) %% 2) + set -l nospace (math (math --scale 0 $directive / $shellCompDirectiveNoSpace) %% 2) + set -l nofiles (math (math --scale 0 $directive / $shellCompDirectiveNoFileComp) %% 2) __%[1]s_debug "nospace: $nospace, nofiles: $nofiles" - # Important not to quote the variable for count to work - set numComps (count $__%[1]s_comp_results) - __%[1]s_debug "numComps: $numComps" - - if test $numComps -eq 1; and test $nospace -ne 0 - # To support the "nospace" directive we trick the shell - # by outputting an extra, longer completion. - __%[1]s_debug "Adding second completion to perform nospace directive" - set --append __%[1]s_comp_results $__%[1]s_comp_results[1]. - end - - if test $numComps -eq 0; and test $nofiles -eq 0 - __%[1]s_debug "Requesting file completion" - set --global __%[1]s_comp_do_file_comp 1 + # If we want to prevent a space, or if file completion is NOT disabled, + # we need to count the number of valid completions. + # To do so, we will filter on prefix as the completions we have received + # may not already be filtered so as to allow fish to match on different + # criteria than the prefix. + if test $nospace -ne 0; or test $nofiles -eq 0 + set -l prefix (commandline -t | string escape --style=regex) + __%[1]s_debug "prefix: $prefix" + + set -l completions (string match -r -- "^$prefix.*" $__%[1]s_comp_results) + set --global __%[1]s_comp_results $completions + __%[1]s_debug "Filtered completions are: $__%[1]s_comp_results" + + # Important not to quote the variable for count to work + set -l numComps (count $__%[1]s_comp_results) + __%[1]s_debug "numComps: $numComps" + + if test $numComps -eq 1; and test $nospace -ne 0 + # We must first split on \t to get rid of the descriptions to be + # able to check what the actual completion will be. + # We don't need descriptions anyway since there is only a single + # real completion which the shell will expand immediately. + set -l split (string split --max 1 \t $__%[1]s_comp_results[1]) + + # Fish won't add a space if the completion ends with any + # of the following characters: @=/:., + set -l lastChar (string sub -s -1 -- $split) + if not string match -r -q "[@=/:.,]" -- "$lastChar" + # In other cases, to support the "nospace" directive we trick the shell + # by outputting an extra, longer completion. + __%[1]s_debug "Adding second completion to perform nospace directive" + set --global __%[1]s_comp_results $split[1] $split[1]. + __%[1]s_debug "Completions are now: $__%[1]s_comp_results" + end + end + + if test $numComps -eq 0; and test $nofiles -eq 0 + # To be consistent with bash and zsh, we only trigger file + # completion when there are no other completions + __%[1]s_debug "Requesting file completion" + return 1 + end end - # If we don't want file completion, we must return true even if there - # are no completions found. This is because fish will perform the last - # completion command, even if its condition is false, if no other - # completion command was triggered - return (not set --query __%[1]s_comp_do_file_comp) + return 0 end # Since Fish completions are only loaded once the user triggers them, we trigger them ourselves # so we can properly delete any completions provided by another script. -# The space after the the program name is essential to trigger completion for the program -# and not completion of the program name itself. -complete --do-complete "%[2]s " > /dev/null 2>&1 -# Using '> /dev/null 2>&1' since '&>' is not supported in older versions of fish. +# Only do this if the program can be found, or else fish may print some errors; besides, +# the existing completions will only be loaded if the program can be found. +if type -q "%[2]s" + # The space after the program name is essential to trigger completion for the program + # and not completion of the program name itself. + # Also, we use '> /dev/null 2>&1' since '&>' is not supported in older versions of fish. + complete --do-complete "%[2]s " > /dev/null 2>&1 +end # Remove any pre-existing completions for the program since we will be handling all of them. complete -c %[2]s -e -# The order in which the below two lines are defined is very important so that __%[1]s_prepare_completions -# is called first. It is __%[1]s_prepare_completions that sets up the __%[1]s_comp_do_file_comp variable. -# -# This completion will be run second as complete commands are added FILO. -# It triggers file completion choices when __%[1]s_comp_do_file_comp is set. -complete -c %[2]s -n 'set --query __%[1]s_comp_do_file_comp' - -# This completion will be run first as complete commands are added FILO. -# The call to __%[1]s_prepare_completions will setup both __%[1]s_comp_results and __%[1]s_comp_do_file_comp. -# It provides the program's completion choices. +# The call to __%[1]s_prepare_completions will setup __%[1]s_comp_results +# which provides the program's completion choices. complete -c %[2]s -n '__%[1]s_prepare_completions' -f -a '$__%[1]s_comp_results' `, nameForVar, name, compCmd, diff --git a/vendor/github.com/spf13/cobra/go.mod b/vendor/github.com/spf13/cobra/go.mod index ff56144056..1fb9439dd8 100644 --- a/vendor/github.com/spf13/cobra/go.mod +++ b/vendor/github.com/spf13/cobra/go.mod @@ -1,12 +1,11 @@ module github.com/spf13/cobra -go 1.12 +go 1.14 require ( github.com/cpuguy83/go-md2man/v2 v2.0.0 github.com/inconshreveable/mousetrap v1.0.0 - github.com/mitchellh/go-homedir v1.1.0 github.com/spf13/pflag v1.0.5 - github.com/spf13/viper v1.7.0 + github.com/spf13/viper v1.8.1 gopkg.in/yaml.v2 v2.4.0 ) diff --git a/vendor/github.com/spf13/cobra/go.sum b/vendor/github.com/spf13/cobra/go.sum index 9328ee3ee7..3e22df29a3 100644 --- a/vendor/github.com/spf13/cobra/go.sum +++ b/vendor/github.com/spf13/cobra/go.sum @@ -5,74 +5,141 @@ cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6A cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= +cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= +cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= +cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= +cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= -github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= -github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -94,61 +161,50 @@ github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4= -github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/magiconair/properties v1.8.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls= +github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= -github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/mitchellh/mapstructure v1.4.1 h1:CpVNEelQCZBooIPDn+AR3NpivK/TIKU8bDxdASFVQag= +github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= -github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pelletier/go-toml v1.9.3 h1:zeC5b1GviRUyKYd6OJPvBU/mcVDVoL1OhT17FCt5dSQ= +github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= @@ -156,49 +212,65 @@ github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.1.2 h1:m8/z1t7/fwjysjQRYbP0RD+bUIF/8tJwPdEZsI83ACI= -github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk= -github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/afero v1.6.0 h1:xoax2sJ2DT8S8xA2paPFjDCScCNeWsg75VG0DLRreiY= +github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= +github.com/spf13/cast v1.3.1 h1:nFm6S0SMdyzrzcmThSipiEubIDy8WEXKNZ0UOgiRpng= +github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= +github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.7.0 h1:xVKxvI7ouOI5I+U9s2eeiUfMaWBVoXA3AWskkrqK0VM= -github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= +github.com/spf13/viper v1.8.1 h1:Kq1fyeebqsBfbjZj4EL7gj2IO0mMaiyjYUWcUsl2O44= +github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= -github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= +go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= +go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -208,16 +280,26 @@ golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHl golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -226,35 +308,107 @@ golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0 h1:HyfiK1WMnHj5FXFXatD+Qs1A/xC2Run6RzeW1SyHxpc= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007 h1:gG67DSER+11cZvqIMb8S8bt0vZtiN6xWYARwirrOSfE= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.5 h1:i6eZZ+zk0SOf0xgBpEpPD18qWcJda6q1sxt3S0kzyUQ= +golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= @@ -264,6 +418,7 @@ golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3 golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= @@ -271,16 +426,73 @@ golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= +golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= +google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= +google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= +google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= +google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= +google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= +google.golang.org/api v0.44.0/go.mod h1:EBOGZqzyhtvMDoxwS97ctnh0zUmYY6CxqXsc1AvkYD8= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= @@ -290,24 +502,91 @@ google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98 google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= +google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/ini.v1 v1.51.0 h1:AQvPpx3LzTDM0AjnIRlVFwFFGC+npRopjZxLJj6gdno= -gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/ini.v1 v1.62.0 h1:duBzk771uxoUuOlyRLkHsygud9+5lrlGjdFBb4mSKDU= +gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= +rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= diff --git a/vendor/github.com/spf13/cobra/powershell_completions.go b/vendor/github.com/spf13/cobra/powershell_completions.go index c55be71cd1..59234c09f1 100644 --- a/vendor/github.com/spf13/cobra/powershell_completions.go +++ b/vendor/github.com/spf13/cobra/powershell_completions.go @@ -86,7 +86,7 @@ Register-ArgumentCompleter -CommandName '%[1]s' -ScriptBlock { # We add an extra empty parameter so we can indicate this to the go method. __%[1]s_debug "Adding extra empty parameter" `+" # We need to use `\"`\" to pass an empty argument a \"\" or '' does not work!!!"+` -`+" $RequestComp=\"$RequestComp\" + ' `\"`\"' "+` +`+" $RequestComp=\"$RequestComp\" + ' `\"`\"'"+` } __%[1]s_debug "Calling $RequestComp" @@ -140,19 +140,6 @@ Register-ArgumentCompleter -CommandName '%[1]s' -ScriptBlock { $Space = "" } - if (($Directive -band $ShellCompDirectiveNoFileComp) -ne 0 ) { - __%[1]s_debug "ShellCompDirectiveNoFileComp is called" - - if ($Values.Length -eq 0) { - # Just print an empty string here so the - # shell does not start to complete paths. - # We cannot use CompletionResult here because - # it does not accept an empty string as argument. - "" - return - } - } - if ((($Directive -band $ShellCompDirectiveFilterFileExt) -ne 0 ) -or (($Directive -band $ShellCompDirectiveFilterDirs) -ne 0 )) { __%[1]s_debug "ShellCompDirectiveFilterFileExt ShellCompDirectiveFilterDirs are not supported" @@ -165,20 +152,33 @@ Register-ArgumentCompleter -CommandName '%[1]s' -ScriptBlock { # filter the result $_.Name -like "$WordToComplete*" - # Join the flag back if we have a equal sign flag + # Join the flag back if we have an equal sign flag if ( $IsEqualFlag ) { __%[1]s_debug "Join the equal sign flag back to the completion value" $_.Name = $Flag + "=" + $_.Name } } + if (($Directive -band $ShellCompDirectiveNoFileComp) -ne 0 ) { + __%[1]s_debug "ShellCompDirectiveNoFileComp is called" + + if ($Values.Length -eq 0) { + # Just print an empty string here so the + # shell does not start to complete paths. + # We cannot use CompletionResult here because + # it does not accept an empty string as argument. + "" + return + } + } + # Get the current mode $Mode = (Get-PSReadLineKeyHandler | Where-Object {$_.Key -eq "Tab" }).Function __%[1]s_debug "Mode: $Mode" $Values | ForEach-Object { - # store temporay because switch will overwrite $_ + # store temporary because switch will overwrite $_ $comp = $_ # PowerShell supports three different completion modes diff --git a/vendor/github.com/spf13/cobra/shell_completions.md b/vendor/github.com/spf13/cobra/shell_completions.md index cd533ac3d4..4ba06a11c0 100644 --- a/vendor/github.com/spf13/cobra/shell_completions.md +++ b/vendor/github.com/spf13/cobra/shell_completions.md @@ -7,6 +7,15 @@ The currently supported shells are: - fish - PowerShell +Cobra will automatically provide your program with a fully functional `completion` command, +similarly to how it provides the `help` command. + +## Creating your own completion command + +If you do not wish to use the default `completion` command, you can choose to +provide your own, which will take precedence over the default one. (This also provides +backwards-compatibility with programs that already have their own `completion` command.) + If you are using the generator, you can create a completion command by running ```bash @@ -70,7 +79,7 @@ PowerShell: case "fish": cmd.Root().GenFishCompletion(os.Stdout, true) case "powershell": - cmd.Root().GenPowerShellCompletion(os.Stdout) + cmd.Root().GenPowerShellCompletionWithDesc(os.Stdout) } }, } @@ -78,6 +87,26 @@ PowerShell: **Note:** The cobra generator may include messages printed to stdout, for example, if the config file is loaded; this will break the auto-completion script so must be removed. +## Adapting the default completion command + +Cobra provides a few options for the default `completion` command. To configure such options you must set +the `CompletionOptions` field on the *root* command. + +To tell Cobra *not* to provide the default `completion` command: +``` +rootCmd.CompletionOptions.DisableDefaultCmd = true +``` + +To tell Cobra *not* to provide the user with the `--no-descriptions` flag to the completion sub-commands: +``` +rootCmd.CompletionOptions.DisableNoDescFlag = true +``` + +To tell Cobra to completely disable descriptions for completions: +``` +rootCmd.CompletionOptions.DisableDescriptions = true +``` + # Customizing completions The generated completion scripts will automatically handle completing commands and flags. However, you can make your completions much more powerful by providing information to complete your program's nouns and flag values. @@ -323,7 +352,10 @@ cmd.RegisterFlagCompletionFunc(flagName, func(cmd *cobra.Command, args []string, ``` ### Descriptions for completions -`zsh`, `fish` and `powershell` allow for descriptions to annotate completion choices. For commands and flags, Cobra will provide the descriptions automatically, based on usage information. For example, using zsh: +Cobra provides support for completion descriptions. Such descriptions are supported for each shell +(however, for bash, it is only available in the [completion V2 version](#bash-completion-v2)). +For commands and flags, Cobra will provide the descriptions automatically, based on usage information. +For example, using zsh: ``` $ helm s[tab] search -- search for a keyword in charts @@ -336,7 +368,7 @@ $ helm s[tab] search (search for a keyword in charts) show (show information of a chart) status (displays the status of the named release) ``` -Cobra allows you to add annotations to your own completions. Simply add the annotation text after each completion, following a `\t` separator. This technique applies to completions returned by `ValidArgs`, `ValidArgsFunction` and `RegisterFlagCompletionFunc()`. For example: +Cobra allows you to add descriptions to your own completions. Simply add the description text after each completion, following a `\t` separator. This technique applies to completions returned by `ValidArgs`, `ValidArgsFunction` and `RegisterFlagCompletionFunc()`. For example: ```go ValidArgsFunction: func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { return []string{"harbor\tAn image registry", "thanos\tLong-term metrics"}, cobra.ShellCompDirectiveNoFileComp @@ -371,6 +403,37 @@ completion firstcommand secondcommand For backward compatibility, Cobra still supports its bash legacy dynamic completion solution. Please refer to [Bash Completions](bash_completions.md) for details. +### Bash completion V2 + +Cobra provides two versions for bash completion. The original bash completion (which started it all!) can be used by calling +`GenBashCompletion()` or `GenBashCompletionFile()`. + +A new V2 bash completion version is also available. This version can be used by calling `GenBashCompletionV2()` or +`GenBashCompletionFileV2()`. The V2 version does **not** support the legacy dynamic completion +(see [Bash Completions](bash_completions.md)) but instead works only with the Go dynamic completion +solution described in this document. +Unless your program already uses the legacy dynamic completion solution, it is recommended that you use the bash +completion V2 solution which provides the following extra features: +- Supports completion descriptions (like the other shells) +- Small completion script of less than 300 lines (v1 generates scripts of thousands of lines; `kubectl` for example has a bash v1 completion script of over 13K lines) +- Streamlined user experience thanks to a completion behavior aligned with the other shells + +`Bash` completion V2 supports descriptions for completions. When calling `GenBashCompletionV2()` or `GenBashCompletionFileV2()` +you must provide these functions with a parameter indicating if the completions should be annotated with a description; Cobra +will provide the description automatically based on usage information. You can choose to make this option configurable by +your users. + +``` +# With descriptions +$ helm s[tab][tab] +search (search for a keyword in charts) status (display the status of the named release) +show (show information of a chart) + +# Without descriptions +$ helm s[tab][tab] +search show status +``` +**Note**: Cobra's default `completion` command uses bash completion V2. If for some reason you need to use bash completion V1, you will need to implement your own `completion` command. ## Zsh completions Cobra supports native zsh completion generated from the root `cobra.Command`. diff --git a/vendor/github.com/spf13/cobra/user_guide.md b/vendor/github.com/spf13/cobra/user_guide.md new file mode 100644 index 0000000000..311abce284 --- /dev/null +++ b/vendor/github.com/spf13/cobra/user_guide.md @@ -0,0 +1,637 @@ +# User Guide + +While you are welcome to provide your own organization, typically a Cobra-based +application will follow the following organizational structure: + +``` + ▾ appName/ + ▾ cmd/ + add.go + your.go + commands.go + here.go + main.go +``` + +In a Cobra app, typically the main.go file is very bare. It serves one purpose: initializing Cobra. + +```go +package main + +import ( + "{pathToYourApp}/cmd" +) + +func main() { + cmd.Execute() +} +``` + +## Using the Cobra Generator + +Cobra provides its own program that will create your application and add any +commands you want. It's the easiest way to incorporate Cobra into your application. + +[Here](https://github.com/spf13/cobra/blob/master/cobra/README.md) you can find more information about it. + +## Using the Cobra Library + +To manually implement Cobra you need to create a bare main.go file and a rootCmd file. +You will optionally provide additional commands as you see fit. + +### Create rootCmd + +Cobra doesn't require any special constructors. Simply create your commands. + +Ideally you place this in app/cmd/root.go: + +```go +var rootCmd = &cobra.Command{ + Use: "hugo", + Short: "Hugo is a very fast static site generator", + Long: `A Fast and Flexible Static Site Generator built with + love by spf13 and friends in Go. + Complete documentation is available at http://hugo.spf13.com`, + Run: func(cmd *cobra.Command, args []string) { + // Do Stuff Here + }, +} + +func Execute() { + if err := rootCmd.Execute(); err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } +} +``` + +You will additionally define flags and handle configuration in your init() function. + +For example cmd/root.go: + +```go +package cmd + +import ( + "fmt" + "os" + + "github.com/spf13/cobra" + "github.com/spf13/viper" +) + +var ( + // Used for flags. + cfgFile string + userLicense string + + rootCmd = &cobra.Command{ + Use: "cobra", + Short: "A generator for Cobra based Applications", + Long: `Cobra is a CLI library for Go that empowers applications. +This application is a tool to generate the needed files +to quickly create a Cobra application.`, + } +) + +// Execute executes the root command. +func Execute() error { + return rootCmd.Execute() +} + +func init() { + cobra.OnInitialize(initConfig) + + rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.cobra.yaml)") + rootCmd.PersistentFlags().StringP("author", "a", "YOUR NAME", "author name for copyright attribution") + rootCmd.PersistentFlags().StringVarP(&userLicense, "license", "l", "", "name of license for the project") + rootCmd.PersistentFlags().Bool("viper", true, "use Viper for configuration") + viper.BindPFlag("author", rootCmd.PersistentFlags().Lookup("author")) + viper.BindPFlag("useViper", rootCmd.PersistentFlags().Lookup("viper")) + viper.SetDefault("author", "NAME HERE ") + viper.SetDefault("license", "apache") + + rootCmd.AddCommand(addCmd) + rootCmd.AddCommand(initCmd) +} + +func initConfig() { + if cfgFile != "" { + // Use config file from the flag. + viper.SetConfigFile(cfgFile) + } else { + // Find home directory. + home, err := os.UserHomeDir() + cobra.CheckErr(err) + + // Search config in home directory with name ".cobra" (without extension). + viper.AddConfigPath(home) + viper.SetConfigType("yaml") + viper.SetConfigName(".cobra") + } + + viper.AutomaticEnv() + + if err := viper.ReadInConfig(); err == nil { + fmt.Println("Using config file:", viper.ConfigFileUsed()) + } +} +``` + +### Create your main.go + +With the root command you need to have your main function execute it. +Execute should be run on the root for clarity, though it can be called on any command. + +In a Cobra app, typically the main.go file is very bare. It serves one purpose: to initialize Cobra. + +```go +package main + +import ( + "{pathToYourApp}/cmd" +) + +func main() { + cmd.Execute() +} +``` + +### Create additional commands + +Additional commands can be defined and typically are each given their own file +inside of the cmd/ directory. + +If you wanted to create a version command you would create cmd/version.go and +populate it with the following: + +```go +package cmd + +import ( + "fmt" + + "github.com/spf13/cobra" +) + +func init() { + rootCmd.AddCommand(versionCmd) +} + +var versionCmd = &cobra.Command{ + Use: "version", + Short: "Print the version number of Hugo", + Long: `All software has versions. This is Hugo's`, + Run: func(cmd *cobra.Command, args []string) { + fmt.Println("Hugo Static Site Generator v0.9 -- HEAD") + }, +} +``` + +### Returning and handling errors + +If you wish to return an error to the caller of a command, `RunE` can be used. + +```go +package cmd + +import ( + "fmt" + + "github.com/spf13/cobra" +) + +func init() { + rootCmd.AddCommand(tryCmd) +} + +var tryCmd = &cobra.Command{ + Use: "try", + Short: "Try and possibly fail at something", + RunE: func(cmd *cobra.Command, args []string) error { + if err := someFunc(); err != nil { + return err + } + return nil + }, +} +``` + +The error can then be caught at the execute function call. + +## Working with Flags + +Flags provide modifiers to control how the action command operates. + +### Assign flags to a command + +Since the flags are defined and used in different locations, we need to +define a variable outside with the correct scope to assign the flag to +work with. + +```go +var Verbose bool +var Source string +``` + +There are two different approaches to assign a flag. + +### Persistent Flags + +A flag can be 'persistent', meaning that this flag will be available to the +command it's assigned to as well as every command under that command. For +global flags, assign a flag as a persistent flag on the root. + +```go +rootCmd.PersistentFlags().BoolVarP(&Verbose, "verbose", "v", false, "verbose output") +``` + +### Local Flags + +A flag can also be assigned locally, which will only apply to that specific command. + +```go +localCmd.Flags().StringVarP(&Source, "source", "s", "", "Source directory to read from") +``` + +### Local Flag on Parent Commands + +By default, Cobra only parses local flags on the target command, and any local flags on +parent commands are ignored. By enabling `Command.TraverseChildren`, Cobra will +parse local flags on each command before executing the target command. + +```go +command := cobra.Command{ + Use: "print [OPTIONS] [COMMANDS]", + TraverseChildren: true, +} +``` + +### Bind Flags with Config + +You can also bind your flags with [viper](https://github.com/spf13/viper): +```go +var author string + +func init() { + rootCmd.PersistentFlags().StringVar(&author, "author", "YOUR NAME", "Author name for copyright attribution") + viper.BindPFlag("author", rootCmd.PersistentFlags().Lookup("author")) +} +``` + +In this example, the persistent flag `author` is bound with `viper`. +**Note**: the variable `author` will not be set to the value from config, +when the `--author` flag is not provided by user. + +More in [viper documentation](https://github.com/spf13/viper#working-with-flags). + +### Required flags + +Flags are optional by default. If instead you wish your command to report an error +when a flag has not been set, mark it as required: +```go +rootCmd.Flags().StringVarP(&Region, "region", "r", "", "AWS region (required)") +rootCmd.MarkFlagRequired("region") +``` + +Or, for persistent flags: +```go +rootCmd.PersistentFlags().StringVarP(&Region, "region", "r", "", "AWS region (required)") +rootCmd.MarkPersistentFlagRequired("region") +``` + +## Positional and Custom Arguments + +Validation of positional arguments can be specified using the `Args` field +of `Command`. + +The following validators are built in: + +- `NoArgs` - the command will report an error if there are any positional args. +- `ArbitraryArgs` - the command will accept any args. +- `OnlyValidArgs` - the command will report an error if there are any positional args that are not in the `ValidArgs` field of `Command`. +- `MinimumNArgs(int)` - the command will report an error if there are not at least N positional args. +- `MaximumNArgs(int)` - the command will report an error if there are more than N positional args. +- `ExactArgs(int)` - the command will report an error if there are not exactly N positional args. +- `ExactValidArgs(int)` - the command will report an error if there are not exactly N positional args OR if there are any positional args that are not in the `ValidArgs` field of `Command` +- `RangeArgs(min, max)` - the command will report an error if the number of args is not between the minimum and maximum number of expected args. + +An example of setting the custom validator: + +```go +var cmd = &cobra.Command{ + Short: "hello", + Args: func(cmd *cobra.Command, args []string) error { + if len(args) < 1 { + return errors.New("requires a color argument") + } + if myapp.IsValidColor(args[0]) { + return nil + } + return fmt.Errorf("invalid color specified: %s", args[0]) + }, + Run: func(cmd *cobra.Command, args []string) { + fmt.Println("Hello, World!") + }, +} +``` + +## Example + +In the example below, we have defined three commands. Two are at the top level +and one (cmdTimes) is a child of one of the top commands. In this case the root +is not executable, meaning that a subcommand is required. This is accomplished +by not providing a 'Run' for the 'rootCmd'. + +We have only defined one flag for a single command. + +More documentation about flags is available at https://github.com/spf13/pflag + +```go +package main + +import ( + "fmt" + "strings" + + "github.com/spf13/cobra" +) + +func main() { + var echoTimes int + + var cmdPrint = &cobra.Command{ + Use: "print [string to print]", + Short: "Print anything to the screen", + Long: `print is for printing anything back to the screen. +For many years people have printed back to the screen.`, + Args: cobra.MinimumNArgs(1), + Run: func(cmd *cobra.Command, args []string) { + fmt.Println("Print: " + strings.Join(args, " ")) + }, + } + + var cmdEcho = &cobra.Command{ + Use: "echo [string to echo]", + Short: "Echo anything to the screen", + Long: `echo is for echoing anything back. +Echo works a lot like print, except it has a child command.`, + Args: cobra.MinimumNArgs(1), + Run: func(cmd *cobra.Command, args []string) { + fmt.Println("Echo: " + strings.Join(args, " ")) + }, + } + + var cmdTimes = &cobra.Command{ + Use: "times [string to echo]", + Short: "Echo anything to the screen more times", + Long: `echo things multiple times back to the user by providing +a count and a string.`, + Args: cobra.MinimumNArgs(1), + Run: func(cmd *cobra.Command, args []string) { + for i := 0; i < echoTimes; i++ { + fmt.Println("Echo: " + strings.Join(args, " ")) + } + }, + } + + cmdTimes.Flags().IntVarP(&echoTimes, "times", "t", 1, "times to echo the input") + + var rootCmd = &cobra.Command{Use: "app"} + rootCmd.AddCommand(cmdPrint, cmdEcho) + cmdEcho.AddCommand(cmdTimes) + rootCmd.Execute() +} +``` + +For a more complete example of a larger application, please checkout [Hugo](http://gohugo.io/). + +## Help Command + +Cobra automatically adds a help command to your application when you have subcommands. +This will be called when a user runs 'app help'. Additionally, help will also +support all other commands as input. Say, for instance, you have a command called +'create' without any additional configuration; Cobra will work when 'app help +create' is called. Every command will automatically have the '--help' flag added. + +### Example + +The following output is automatically generated by Cobra. Nothing beyond the +command and flag definitions are needed. + + $ cobra help + + Cobra is a CLI library for Go that empowers applications. + This application is a tool to generate the needed files + to quickly create a Cobra application. + + Usage: + cobra [command] + + Available Commands: + add Add a command to a Cobra Application + help Help about any command + init Initialize a Cobra Application + + Flags: + -a, --author string author name for copyright attribution (default "YOUR NAME") + --config string config file (default is $HOME/.cobra.yaml) + -h, --help help for cobra + -l, --license string name of license for the project + --viper use Viper for configuration (default true) + + Use "cobra [command] --help" for more information about a command. + + +Help is just a command like any other. There is no special logic or behavior +around it. In fact, you can provide your own if you want. + +### Defining your own help + +You can provide your own Help command or your own template for the default command to use +with following functions: + +```go +cmd.SetHelpCommand(cmd *Command) +cmd.SetHelpFunc(f func(*Command, []string)) +cmd.SetHelpTemplate(s string) +``` + +The latter two will also apply to any children commands. + +## Usage Message + +When the user provides an invalid flag or invalid command, Cobra responds by +showing the user the 'usage'. + +### Example +You may recognize this from the help above. That's because the default help +embeds the usage as part of its output. + + $ cobra --invalid + Error: unknown flag: --invalid + Usage: + cobra [command] + + Available Commands: + add Add a command to a Cobra Application + help Help about any command + init Initialize a Cobra Application + + Flags: + -a, --author string author name for copyright attribution (default "YOUR NAME") + --config string config file (default is $HOME/.cobra.yaml) + -h, --help help for cobra + -l, --license string name of license for the project + --viper use Viper for configuration (default true) + + Use "cobra [command] --help" for more information about a command. + +### Defining your own usage +You can provide your own usage function or template for Cobra to use. +Like help, the function and template are overridable through public methods: + +```go +cmd.SetUsageFunc(f func(*Command) error) +cmd.SetUsageTemplate(s string) +``` + +## Version Flag + +Cobra adds a top-level '--version' flag if the Version field is set on the root command. +Running an application with the '--version' flag will print the version to stdout using +the version template. The template can be customized using the +`cmd.SetVersionTemplate(s string)` function. + +## PreRun and PostRun Hooks + +It is possible to run functions before or after the main `Run` function of your command. The `PersistentPreRun` and `PreRun` functions will be executed before `Run`. `PersistentPostRun` and `PostRun` will be executed after `Run`. The `Persistent*Run` functions will be inherited by children if they do not declare their own. These functions are run in the following order: + +- `PersistentPreRun` +- `PreRun` +- `Run` +- `PostRun` +- `PersistentPostRun` + +An example of two commands which use all of these features is below. When the subcommand is executed, it will run the root command's `PersistentPreRun` but not the root command's `PersistentPostRun`: + +```go +package main + +import ( + "fmt" + + "github.com/spf13/cobra" +) + +func main() { + + var rootCmd = &cobra.Command{ + Use: "root [sub]", + Short: "My root command", + PersistentPreRun: func(cmd *cobra.Command, args []string) { + fmt.Printf("Inside rootCmd PersistentPreRun with args: %v\n", args) + }, + PreRun: func(cmd *cobra.Command, args []string) { + fmt.Printf("Inside rootCmd PreRun with args: %v\n", args) + }, + Run: func(cmd *cobra.Command, args []string) { + fmt.Printf("Inside rootCmd Run with args: %v\n", args) + }, + PostRun: func(cmd *cobra.Command, args []string) { + fmt.Printf("Inside rootCmd PostRun with args: %v\n", args) + }, + PersistentPostRun: func(cmd *cobra.Command, args []string) { + fmt.Printf("Inside rootCmd PersistentPostRun with args: %v\n", args) + }, + } + + var subCmd = &cobra.Command{ + Use: "sub [no options!]", + Short: "My subcommand", + PreRun: func(cmd *cobra.Command, args []string) { + fmt.Printf("Inside subCmd PreRun with args: %v\n", args) + }, + Run: func(cmd *cobra.Command, args []string) { + fmt.Printf("Inside subCmd Run with args: %v\n", args) + }, + PostRun: func(cmd *cobra.Command, args []string) { + fmt.Printf("Inside subCmd PostRun with args: %v\n", args) + }, + PersistentPostRun: func(cmd *cobra.Command, args []string) { + fmt.Printf("Inside subCmd PersistentPostRun with args: %v\n", args) + }, + } + + rootCmd.AddCommand(subCmd) + + rootCmd.SetArgs([]string{""}) + rootCmd.Execute() + fmt.Println() + rootCmd.SetArgs([]string{"sub", "arg1", "arg2"}) + rootCmd.Execute() +} +``` + +Output: +``` +Inside rootCmd PersistentPreRun with args: [] +Inside rootCmd PreRun with args: [] +Inside rootCmd Run with args: [] +Inside rootCmd PostRun with args: [] +Inside rootCmd PersistentPostRun with args: [] + +Inside rootCmd PersistentPreRun with args: [arg1 arg2] +Inside subCmd PreRun with args: [arg1 arg2] +Inside subCmd Run with args: [arg1 arg2] +Inside subCmd PostRun with args: [arg1 arg2] +Inside subCmd PersistentPostRun with args: [arg1 arg2] +``` + +## Suggestions when "unknown command" happens + +Cobra will print automatic suggestions when "unknown command" errors happen. This allows Cobra to behave similarly to the `git` command when a typo happens. For example: + +``` +$ hugo srever +Error: unknown command "srever" for "hugo" + +Did you mean this? + server + +Run 'hugo --help' for usage. +``` + +Suggestions are automatic based on every subcommand registered and use an implementation of [Levenshtein distance](http://en.wikipedia.org/wiki/Levenshtein_distance). Every registered command that matches a minimum distance of 2 (ignoring case) will be displayed as a suggestion. + +If you need to disable suggestions or tweak the string distance in your command, use: + +```go +command.DisableSuggestions = true +``` + +or + +```go +command.SuggestionsMinimumDistance = 1 +``` + +You can also explicitly set names for which a given command will be suggested using the `SuggestFor` attribute. This allows suggestions for strings that are not close in terms of string distance, but makes sense in your set of commands and for some which you don't want aliases. Example: + +``` +$ kubectl remove +Error: unknown command "remove" for "kubectl" + +Did you mean this? + delete + +Run 'kubectl help' for usage. +``` + +## Generating documentation for your command + +Cobra can generate documentation based on subcommands, flags, etc. Read more about it in the [docs generation documentation](doc/README.md). + +## Generating shell completions + +Cobra can generate a shell-completion file for the following shells: bash, zsh, fish, PowerShell. If you add more information to your commands, these completions can be amazingly powerful and flexible. Read more about it in [Shell Completions](shell_completions.md). diff --git a/vendor/github.com/spf13/cobra/zsh_completions.go b/vendor/github.com/spf13/cobra/zsh_completions.go index 2e840285f3..1afec30ea9 100644 --- a/vendor/github.com/spf13/cobra/zsh_completions.go +++ b/vendor/github.com/spf13/cobra/zsh_completions.go @@ -95,7 +95,7 @@ _%[1]s() local shellCompDirectiveFilterFileExt=%[6]d local shellCompDirectiveFilterDirs=%[7]d - local lastParam lastChar flagPrefix requestComp out directive compCount comp lastComp + local lastParam lastChar flagPrefix requestComp out directive comp lastComp noSpace local -a completions __%[1]s_debug "\n========= starting completion logic ==========" @@ -163,7 +163,6 @@ _%[1]s() return fi - compCount=0 while IFS='\n' read -r comp; do if [ -n "$comp" ]; then # If requested, completions are returned with a description. @@ -175,13 +174,17 @@ _%[1]s() local tab=$(printf '\t') comp=${comp//$tab/:} - ((compCount++)) __%[1]s_debug "Adding completion: ${comp}" completions+=${comp} lastComp=$comp fi done < <(printf "%%s\n" "${out[@]}") + if [ $((directive & shellCompDirectiveNoSpace)) -ne 0 ]; then + __%[1]s_debug "Activating nospace." + noSpace="-S ''" + fi + if [ $((directive & shellCompDirectiveFilterFileExt)) -ne 0 ]; then # File extension filtering local filteringCmd @@ -208,25 +211,40 @@ _%[1]s() __%[1]s_debug "Listing directories in ." fi + local result _arguments '*:dirname:_files -/'" ${flagPrefix}" + result=$? if [ -n "$subdir" ]; then popd >/dev/null 2>&1 fi - elif [ $((directive & shellCompDirectiveNoSpace)) -ne 0 ] && [ ${compCount} -eq 1 ]; then - __%[1]s_debug "Activating nospace." - # We can use compadd here as there is no description when - # there is only one completion. - compadd -S '' "${lastComp}" - elif [ ${compCount} -eq 0 ]; then - if [ $((directive & shellCompDirectiveNoFileComp)) -ne 0 ]; then - __%[1]s_debug "deactivating file completion" + return $result + else + __%[1]s_debug "Calling _describe" + if eval _describe "completions" completions $flagPrefix $noSpace; then + __%[1]s_debug "_describe found some completions" + + # Return the success of having called _describe + return 0 else - # Perform file completion - __%[1]s_debug "activating file completion" - _arguments '*:filename:_files'" ${flagPrefix}" + __%[1]s_debug "_describe did not find completions." + __%[1]s_debug "Checking if we should do file completion." + if [ $((directive & shellCompDirectiveNoFileComp)) -ne 0 ]; then + __%[1]s_debug "deactivating file completion" + + # We must return an error code here to let zsh know that there were no + # completions found by _describe; this is what will trigger other + # matching algorithms to attempt to find completions. + # For example zsh can match letters in the middle of words. + return 1 + else + # Perform file completion + __%[1]s_debug "Activating file completion" + + # We must return the result of this command, so it must be the + # last command, or else we must store its result to return it. + _arguments '*:filename:_files'" ${flagPrefix}" + fi fi - else - _describe "completions" completions $(echo $flagPrefix) fi } diff --git a/vendor/go.opencensus.io/.travis.yml b/vendor/go.opencensus.io/.travis.yml deleted file mode 100644 index bd6b66ee83..0000000000 --- a/vendor/go.opencensus.io/.travis.yml +++ /dev/null @@ -1,17 +0,0 @@ -language: go - -go_import_path: go.opencensus.io - -go: - - 1.11.x - -env: - global: - GO111MODULE=on - -before_script: - - make install-tools - -script: - - make travis-ci - - go run internal/check/version.go # TODO move this to makefile diff --git a/vendor/go.opencensus.io/Makefile b/vendor/go.opencensus.io/Makefile index 457866cb1f..b3ce3df303 100644 --- a/vendor/go.opencensus.io/Makefile +++ b/vendor/go.opencensus.io/Makefile @@ -8,7 +8,7 @@ ALL_PKGS := $(shell go list $(sort $(dir $(ALL_SRC)))) GOTEST_OPT?=-v -race -timeout 30s GOTEST_OPT_WITH_COVERAGE = $(GOTEST_OPT) -coverprofile=coverage.txt -covermode=atomic GOTEST=go test -GOFMT=gofmt +GOIMPORTS=goimports GOLINT=golint GOVET=go vet EMBEDMD=embedmd @@ -17,14 +17,14 @@ TRACE_ID_LINT_EXCEPTION="type name will be used as trace.TraceID by other packag TRACE_OPTION_LINT_EXCEPTION="type name will be used as trace.TraceOptions by other packages" README_FILES := $(shell find . -name '*README.md' | sort | tr '\n' ' ') -.DEFAULT_GOAL := fmt-lint-vet-embedmd-test +.DEFAULT_GOAL := imports-lint-vet-embedmd-test -.PHONY: fmt-lint-vet-embedmd-test -fmt-lint-vet-embedmd-test: fmt lint vet embedmd test +.PHONY: imports-lint-vet-embedmd-test +imports-lint-vet-embedmd-test: imports lint vet embedmd test # TODO enable test-with-coverage in tavis .PHONY: travis-ci -travis-ci: fmt lint vet embedmd test test-386 +travis-ci: imports lint vet embedmd test test-386 all-pkgs: @echo $(ALL_PKGS) | tr ' ' '\n' | sort @@ -44,15 +44,15 @@ test-386: test-with-coverage: $(GOTEST) $(GOTEST_OPT_WITH_COVERAGE) $(ALL_PKGS) -.PHONY: fmt -fmt: - @FMTOUT=`$(GOFMT) -s -l $(ALL_SRC) 2>&1`; \ - if [ "$$FMTOUT" ]; then \ - echo "$(GOFMT) FAILED => gofmt the following files:\n"; \ - echo "$$FMTOUT\n"; \ +.PHONY: imports +imports: + @IMPORTSOUT=`$(GOIMPORTS) -l $(ALL_SRC) 2>&1`; \ + if [ "$$IMPORTSOUT" ]; then \ + echo "$(GOIMPORTS) FAILED => goimports the following files:\n"; \ + echo "$$IMPORTSOUT\n"; \ exit 1; \ else \ - echo "Fmt finished successfully"; \ + echo "Imports finished successfully"; \ fi .PHONY: lint @@ -91,6 +91,7 @@ embedmd: .PHONY: install-tools install-tools: - go get -u golang.org/x/tools/cmd/cover go get -u golang.org/x/lint/golint + go get -u golang.org/x/tools/cmd/cover + go get -u golang.org/x/tools/cmd/goimports go get -u github.com/rakyll/embedmd diff --git a/vendor/go.opencensus.io/go.mod b/vendor/go.opencensus.io/go.mod index c867df5f5c..95b2522a7f 100644 --- a/vendor/go.opencensus.io/go.mod +++ b/vendor/go.opencensus.io/go.mod @@ -1,15 +1,12 @@ module go.opencensus.io require ( - github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6 - github.com/golang/protobuf v1.3.1 - github.com/google/go-cmp v0.3.0 - github.com/stretchr/testify v1.4.0 - golang.org/x/net v0.0.0-20190620200207-3b0461eec859 - golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd // indirect - golang.org/x/text v0.3.2 // indirect - google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb // indirect - google.golang.org/grpc v1.20.1 + github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e + github.com/golang/protobuf v1.4.3 + github.com/google/go-cmp v0.5.3 + github.com/stretchr/testify v1.6.1 + golang.org/x/net v0.0.0-20201110031124-69a78807bb2b + google.golang.org/grpc v1.33.2 ) go 1.13 diff --git a/vendor/go.opencensus.io/go.sum b/vendor/go.opencensus.io/go.sum index 01c02972c7..c97cd1b551 100644 --- a/vendor/go.opencensus.io/go.sum +++ b/vendor/go.opencensus.io/go.sum @@ -1,25 +1,47 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6 h1:ZgQEtGgCBiWRM39fZuwSd1LwSqqSW0hOdXCYYDX0R3I= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1 h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.3 h1:JjCZWpVbqXDqFVmTfYWEVTMIYrL/NPdPSCHPJ0T/raM= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0 h1:crn/baboCvb5fXaQ0IJ1SGTsTVrWpDsCWC8EGETZijY= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.3 h1:x95R7cp+rSeeqAMI2knLtQ0DKlaBhv2NrtrOvafPHRo= +github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -30,24 +52,25 @@ golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a h1:oWX7TPOiFAMXLq8o0ikBYfCJVlRHBcsciT5bXOrH628= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859 h1:R/3boaszxrf1GEUWTVDzSKVwLmSJpwZ1yqXm8j0v2QI= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20201110031124-69a78807bb2b h1:uwuIcX0g4Yl1NC5XAz37xsr2lTtcqevgzYNVt49waME= +golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f h1:wMNYb4v58l5UBM7MYRLPG6ZhfOqbKu7X5eyFl8ZhKvA= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f h1:Bl/8QSvNqXvPGPGXa2z5xUTmV7VDcZyvRZ+QQXkXTZQ= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6 h1:bjcUS9ztw9kFmmIxJInhon/0Is3p+EHBKNgquIzo1OI= -golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd h1:r7DufRZuZbWB7j439YfAzP8RPDa9unLkpwQKUYbIMPI= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f h1:+Nyd8tzPX9R7BWHguqsrbFdRx3WQ/1ib8I44HXV5yTA= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= -golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -55,20 +78,39 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3 golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd h1:/e+gpKk9r3dJobndpTytxS2gOy6m5uvpg+ISQoEcusQ= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8 h1:Nw54tB0rB7hY/N0NQvRW8DG4Yk3Q6T9cu9RcFQDu1tc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb h1:i1Ppqkc3WQXikh8bXiwHqAN5Rv3/qDCcRk0/Otx73BY= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 h1:+kGHl1aib/qcwaRi1CbqBZ1rk19r85MNUf8HaBghugY= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/grpc v1.19.0 h1:cfg4PD8YEdSFnm7qLV4++93WcmhH2nIUhMjhdCvl3j8= google.golang.org/grpc v1.19.0 h1:cfg4PD8YEdSFnm7qLV4++93WcmhH2nIUhMjhdCvl3j8= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.1 h1:Hz2g2wirWK7H0qIIhGIqRGTuMwTE8HEKFnDZZ7lm9NU= -google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.33.2 h1:EQyQC3sa8M+p6Ulc8yy9SWSS2GVwyRc83gAbG8lrl4o= +google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0 h1:4MY060fB1DLGMB/7MBTLnwQUY6+F09GEiz6SsrNqyzM= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/vendor/go.opencensus.io/trace/basetypes.go b/vendor/go.opencensus.io/trace/basetypes.go index 0c54492a2b..c8e26ed635 100644 --- a/vendor/go.opencensus.io/trace/basetypes.go +++ b/vendor/go.opencensus.io/trace/basetypes.go @@ -49,6 +49,16 @@ type Attribute struct { value interface{} } +// Key returns the attribute's key +func (a *Attribute) Key() string { + return a.key +} + +// Value returns the attribute's value +func (a *Attribute) Value() interface{} { + return a.value +} + // BoolAttribute returns a bool-valued attribute. func BoolAttribute(key string, value bool) Attribute { return Attribute{key: key, value: value} diff --git a/vendor/go.opencensus.io/trace/lrumap.go b/vendor/go.opencensus.io/trace/lrumap.go index dc7a295c77..908c2497ed 100644 --- a/vendor/go.opencensus.io/trace/lrumap.go +++ b/vendor/go.opencensus.io/trace/lrumap.go @@ -44,7 +44,7 @@ func (lm lruMap) len() int { } func (lm lruMap) keys() []interface{} { - keys := []interface{}{} + keys := make([]interface{}, len(lm.cacheKeys)) for k := range lm.cacheKeys { keys = append(keys, k) } diff --git a/vendor/go.opencensus.io/trace/spanstore.go b/vendor/go.opencensus.io/trace/spanstore.go index c442d99021..e601f76f2c 100644 --- a/vendor/go.opencensus.io/trace/spanstore.go +++ b/vendor/go.opencensus.io/trace/spanstore.go @@ -48,8 +48,10 @@ func (i internalOnly) ReportActiveSpans(name string) []*SpanData { var out []*SpanData s.mu.Lock() defer s.mu.Unlock() - for span := range s.active { - out = append(out, span.makeSpanData()) + for activeSpan := range s.active { + if s, ok := activeSpan.(*span); ok { + out = append(out, s.makeSpanData()) + } } return out } @@ -185,7 +187,7 @@ func (i internalOnly) ReportSpansByLatency(name string, minLatency, maxLatency t // bucketed by latency. type spanStore struct { mu sync.Mutex // protects everything below. - active map[*Span]struct{} + active map[SpanInterface]struct{} errors map[int32]*bucket latency []bucket maxSpansPerErrorBucket int @@ -194,7 +196,7 @@ type spanStore struct { // newSpanStore creates a span store. func newSpanStore(name string, latencyBucketSize int, errorBucketSize int) *spanStore { s := &spanStore{ - active: make(map[*Span]struct{}), + active: make(map[SpanInterface]struct{}), latency: make([]bucket, len(defaultLatencies)+1), maxSpansPerErrorBucket: errorBucketSize, } @@ -271,7 +273,7 @@ func (s *spanStore) resize(latencyBucketSize int, errorBucketSize int) { } // add adds a span to the active bucket of the spanStore. -func (s *spanStore) add(span *Span) { +func (s *spanStore) add(span SpanInterface) { s.mu.Lock() s.active[span] = struct{}{} s.mu.Unlock() @@ -279,7 +281,7 @@ func (s *spanStore) add(span *Span) { // finished removes a span from the active set, and adds a corresponding // SpanData to a latency or error bucket. -func (s *spanStore) finished(span *Span, sd *SpanData) { +func (s *spanStore) finished(span SpanInterface, sd *SpanData) { latency := sd.EndTime.Sub(sd.StartTime) if latency < 0 { latency = 0 diff --git a/vendor/go.opencensus.io/trace/trace.go b/vendor/go.opencensus.io/trace/trace.go index 3f8977b41b..861df9d391 100644 --- a/vendor/go.opencensus.io/trace/trace.go +++ b/vendor/go.opencensus.io/trace/trace.go @@ -28,12 +28,16 @@ import ( "go.opencensus.io/trace/tracestate" ) +type tracer struct{} + +var _ Tracer = &tracer{} + // Span represents a span of a trace. It has an associated SpanContext, and // stores data accumulated while the span is active. // // Ideally users should interact with Spans by calling the functions in this // package that take a Context parameter. -type Span struct { +type span struct { // data contains information recorded about the span. // // It will be non-nil if we are exporting the span or recording events for it. @@ -66,7 +70,7 @@ type Span struct { // IsRecordingEvents returns true if events are being recorded for this span. // Use this check to avoid computing expensive annotations when they will never // be used. -func (s *Span) IsRecordingEvents() bool { +func (s *span) IsRecordingEvents() bool { if s == nil { return false } @@ -109,13 +113,13 @@ type SpanContext struct { type contextKey struct{} // FromContext returns the Span stored in a context, or nil if there isn't one. -func FromContext(ctx context.Context) *Span { +func (t *tracer) FromContext(ctx context.Context) *Span { s, _ := ctx.Value(contextKey{}).(*Span) return s } // NewContext returns a new context with the given Span attached. -func NewContext(parent context.Context, s *Span) context.Context { +func (t *tracer) NewContext(parent context.Context, s *Span) context.Context { return context.WithValue(parent, contextKey{}, s) } @@ -166,12 +170,14 @@ func WithSampler(sampler Sampler) StartOption { // // Returned context contains the newly created span. You can use it to // propagate the returned span in process. -func StartSpan(ctx context.Context, name string, o ...StartOption) (context.Context, *Span) { +func (t *tracer) StartSpan(ctx context.Context, name string, o ...StartOption) (context.Context, *Span) { var opts StartOptions var parent SpanContext - if p := FromContext(ctx); p != nil { - p.addChild() - parent = p.spanContext + if p := t.FromContext(ctx); p != nil { + if ps, ok := p.internal.(*span); ok { + ps.addChild() + } + parent = p.SpanContext() } for _, op := range o { op(&opts) @@ -180,7 +186,8 @@ func StartSpan(ctx context.Context, name string, o ...StartOption) (context.Cont ctx, end := startExecutionTracerTask(ctx, name) span.executionTracerTaskEnd = end - return NewContext(ctx, span), span + extSpan := NewSpan(span) + return t.NewContext(ctx, extSpan), extSpan } // StartSpanWithRemoteParent starts a new child span of the span from the given parent. @@ -190,7 +197,7 @@ func StartSpan(ctx context.Context, name string, o ...StartOption) (context.Cont // // Returned context contains the newly created span. You can use it to // propagate the returned span in process. -func StartSpanWithRemoteParent(ctx context.Context, name string, parent SpanContext, o ...StartOption) (context.Context, *Span) { +func (t *tracer) StartSpanWithRemoteParent(ctx context.Context, name string, parent SpanContext, o ...StartOption) (context.Context, *Span) { var opts StartOptions for _, op := range o { op(&opts) @@ -198,19 +205,24 @@ func StartSpanWithRemoteParent(ctx context.Context, name string, parent SpanCont span := startSpanInternal(name, parent != SpanContext{}, parent, true, opts) ctx, end := startExecutionTracerTask(ctx, name) span.executionTracerTaskEnd = end - return NewContext(ctx, span), span + extSpan := NewSpan(span) + return t.NewContext(ctx, extSpan), extSpan } -func startSpanInternal(name string, hasParent bool, parent SpanContext, remoteParent bool, o StartOptions) *Span { - span := &Span{} - span.spanContext = parent +func startSpanInternal(name string, hasParent bool, parent SpanContext, remoteParent bool, o StartOptions) *span { + s := &span{} + s.spanContext = parent cfg := config.Load().(*Config) + if gen, ok := cfg.IDGenerator.(*defaultIDGenerator); ok { + // lazy initialization + gen.init() + } if !hasParent { - span.spanContext.TraceID = cfg.IDGenerator.NewTraceID() + s.spanContext.TraceID = cfg.IDGenerator.NewTraceID() } - span.spanContext.SpanID = cfg.IDGenerator.NewSpanID() + s.spanContext.SpanID = cfg.IDGenerator.NewSpanID() sampler := cfg.DefaultSampler if !hasParent || remoteParent || o.Sampler != nil { @@ -222,47 +234,47 @@ func startSpanInternal(name string, hasParent bool, parent SpanContext, remotePa if o.Sampler != nil { sampler = o.Sampler } - span.spanContext.setIsSampled(sampler(SamplingParameters{ + s.spanContext.setIsSampled(sampler(SamplingParameters{ ParentContext: parent, - TraceID: span.spanContext.TraceID, - SpanID: span.spanContext.SpanID, + TraceID: s.spanContext.TraceID, + SpanID: s.spanContext.SpanID, Name: name, HasRemoteParent: remoteParent}).Sample) } - if !internal.LocalSpanStoreEnabled && !span.spanContext.IsSampled() { - return span + if !internal.LocalSpanStoreEnabled && !s.spanContext.IsSampled() { + return s } - span.data = &SpanData{ - SpanContext: span.spanContext, + s.data = &SpanData{ + SpanContext: s.spanContext, StartTime: time.Now(), SpanKind: o.SpanKind, Name: name, HasRemoteParent: remoteParent, } - span.lruAttributes = newLruMap(cfg.MaxAttributesPerSpan) - span.annotations = newEvictedQueue(cfg.MaxAnnotationEventsPerSpan) - span.messageEvents = newEvictedQueue(cfg.MaxMessageEventsPerSpan) - span.links = newEvictedQueue(cfg.MaxLinksPerSpan) + s.lruAttributes = newLruMap(cfg.MaxAttributesPerSpan) + s.annotations = newEvictedQueue(cfg.MaxAnnotationEventsPerSpan) + s.messageEvents = newEvictedQueue(cfg.MaxMessageEventsPerSpan) + s.links = newEvictedQueue(cfg.MaxLinksPerSpan) if hasParent { - span.data.ParentSpanID = parent.SpanID + s.data.ParentSpanID = parent.SpanID } if internal.LocalSpanStoreEnabled { var ss *spanStore ss = spanStoreForNameCreateIfNew(name) if ss != nil { - span.spanStore = ss - ss.add(span) + s.spanStore = ss + ss.add(s) } } - return span + return s } // End ends the span. -func (s *Span) End() { +func (s *span) End() { if s == nil { return } @@ -292,7 +304,7 @@ func (s *Span) End() { // makeSpanData produces a SpanData representing the current state of the Span. // It requires that s.data is non-nil. -func (s *Span) makeSpanData() *SpanData { +func (s *span) makeSpanData() *SpanData { var sd SpanData s.mu.Lock() sd = *s.data @@ -317,7 +329,7 @@ func (s *Span) makeSpanData() *SpanData { } // SpanContext returns the SpanContext of the span. -func (s *Span) SpanContext() SpanContext { +func (s *span) SpanContext() SpanContext { if s == nil { return SpanContext{} } @@ -325,7 +337,7 @@ func (s *Span) SpanContext() SpanContext { } // SetName sets the name of the span, if it is recording events. -func (s *Span) SetName(name string) { +func (s *span) SetName(name string) { if !s.IsRecordingEvents() { return } @@ -335,7 +347,7 @@ func (s *Span) SetName(name string) { } // SetStatus sets the status of the span, if it is recording events. -func (s *Span) SetStatus(status Status) { +func (s *span) SetStatus(status Status) { if !s.IsRecordingEvents() { return } @@ -344,32 +356,32 @@ func (s *Span) SetStatus(status Status) { s.mu.Unlock() } -func (s *Span) interfaceArrayToLinksArray() []Link { - linksArr := make([]Link, 0) +func (s *span) interfaceArrayToLinksArray() []Link { + linksArr := make([]Link, 0, len(s.links.queue)) for _, value := range s.links.queue { linksArr = append(linksArr, value.(Link)) } return linksArr } -func (s *Span) interfaceArrayToMessageEventArray() []MessageEvent { - messageEventArr := make([]MessageEvent, 0) +func (s *span) interfaceArrayToMessageEventArray() []MessageEvent { + messageEventArr := make([]MessageEvent, 0, len(s.messageEvents.queue)) for _, value := range s.messageEvents.queue { messageEventArr = append(messageEventArr, value.(MessageEvent)) } return messageEventArr } -func (s *Span) interfaceArrayToAnnotationArray() []Annotation { - annotationArr := make([]Annotation, 0) +func (s *span) interfaceArrayToAnnotationArray() []Annotation { + annotationArr := make([]Annotation, 0, len(s.annotations.queue)) for _, value := range s.annotations.queue { annotationArr = append(annotationArr, value.(Annotation)) } return annotationArr } -func (s *Span) lruAttributesToAttributeMap() map[string]interface{} { - attributes := make(map[string]interface{}) +func (s *span) lruAttributesToAttributeMap() map[string]interface{} { + attributes := make(map[string]interface{}, s.lruAttributes.len()) for _, key := range s.lruAttributes.keys() { value, ok := s.lruAttributes.get(key) if ok { @@ -380,13 +392,13 @@ func (s *Span) lruAttributesToAttributeMap() map[string]interface{} { return attributes } -func (s *Span) copyToCappedAttributes(attributes []Attribute) { +func (s *span) copyToCappedAttributes(attributes []Attribute) { for _, a := range attributes { s.lruAttributes.add(a.key, a.value) } } -func (s *Span) addChild() { +func (s *span) addChild() { if !s.IsRecordingEvents() { return } @@ -398,7 +410,7 @@ func (s *Span) addChild() { // AddAttributes sets attributes in the span. // // Existing attributes whose keys appear in the attributes parameter are overwritten. -func (s *Span) AddAttributes(attributes ...Attribute) { +func (s *span) AddAttributes(attributes ...Attribute) { if !s.IsRecordingEvents() { return } @@ -407,49 +419,27 @@ func (s *Span) AddAttributes(attributes ...Attribute) { s.mu.Unlock() } -// copyAttributes copies a slice of Attributes into a map. -func copyAttributes(m map[string]interface{}, attributes []Attribute) { - for _, a := range attributes { - m[a.key] = a.value - } -} - -func (s *Span) lazyPrintfInternal(attributes []Attribute, format string, a ...interface{}) { +func (s *span) printStringInternal(attributes []Attribute, str string) { now := time.Now() - msg := fmt.Sprintf(format, a...) - var m map[string]interface{} - s.mu.Lock() + var am map[string]interface{} if len(attributes) != 0 { - m = make(map[string]interface{}) - copyAttributes(m, attributes) + am = make(map[string]interface{}, len(attributes)) + for _, attr := range attributes { + am[attr.key] = attr.value + } } - s.annotations.add(Annotation{ - Time: now, - Message: msg, - Attributes: m, - }) - s.mu.Unlock() -} - -func (s *Span) printStringInternal(attributes []Attribute, str string) { - now := time.Now() - var a map[string]interface{} s.mu.Lock() - if len(attributes) != 0 { - a = make(map[string]interface{}) - copyAttributes(a, attributes) - } s.annotations.add(Annotation{ Time: now, Message: str, - Attributes: a, + Attributes: am, }) s.mu.Unlock() } // Annotate adds an annotation with attributes. // Attributes can be nil. -func (s *Span) Annotate(attributes []Attribute, str string) { +func (s *span) Annotate(attributes []Attribute, str string) { if !s.IsRecordingEvents() { return } @@ -457,11 +447,11 @@ func (s *Span) Annotate(attributes []Attribute, str string) { } // Annotatef adds an annotation with attributes. -func (s *Span) Annotatef(attributes []Attribute, format string, a ...interface{}) { +func (s *span) Annotatef(attributes []Attribute, format string, a ...interface{}) { if !s.IsRecordingEvents() { return } - s.lazyPrintfInternal(attributes, format, a...) + s.printStringInternal(attributes, fmt.Sprintf(format, a...)) } // AddMessageSendEvent adds a message send event to the span. @@ -470,7 +460,7 @@ func (s *Span) Annotatef(attributes []Attribute, format string, a ...interface{} // unique in this span and the same between the send event and the receive // event (this allows to identify a message between the sender and receiver). // For example, this could be a sequence id. -func (s *Span) AddMessageSendEvent(messageID, uncompressedByteSize, compressedByteSize int64) { +func (s *span) AddMessageSendEvent(messageID, uncompressedByteSize, compressedByteSize int64) { if !s.IsRecordingEvents() { return } @@ -492,7 +482,7 @@ func (s *Span) AddMessageSendEvent(messageID, uncompressedByteSize, compressedBy // unique in this span and the same between the send event and the receive // event (this allows to identify a message between the sender and receiver). // For example, this could be a sequence id. -func (s *Span) AddMessageReceiveEvent(messageID, uncompressedByteSize, compressedByteSize int64) { +func (s *span) AddMessageReceiveEvent(messageID, uncompressedByteSize, compressedByteSize int64) { if !s.IsRecordingEvents() { return } @@ -509,7 +499,7 @@ func (s *Span) AddMessageReceiveEvent(messageID, uncompressedByteSize, compresse } // AddLink adds a link to the span. -func (s *Span) AddLink(l Link) { +func (s *span) AddLink(l Link) { if !s.IsRecordingEvents() { return } @@ -518,7 +508,7 @@ func (s *Span) AddLink(l Link) { s.mu.Unlock() } -func (s *Span) String() string { +func (s *span) String() string { if s == nil { return "" } @@ -534,20 +524,9 @@ func (s *Span) String() string { var config atomic.Value // access atomically func init() { - gen := &defaultIDGenerator{} - // initialize traceID and spanID generators. - var rngSeed int64 - for _, p := range []interface{}{ - &rngSeed, &gen.traceIDAdd, &gen.nextSpanID, &gen.spanIDInc, - } { - binary.Read(crand.Reader, binary.LittleEndian, p) - } - gen.traceIDRand = rand.New(rand.NewSource(rngSeed)) - gen.spanIDInc |= 1 - config.Store(&Config{ DefaultSampler: ProbabilitySampler(defaultSamplingProbability), - IDGenerator: gen, + IDGenerator: &defaultIDGenerator{}, MaxAttributesPerSpan: DefaultMaxAttributesPerSpan, MaxAnnotationEventsPerSpan: DefaultMaxAnnotationEventsPerSpan, MaxMessageEventsPerSpan: DefaultMaxMessageEventsPerSpan, @@ -571,6 +550,24 @@ type defaultIDGenerator struct { traceIDAdd [2]uint64 traceIDRand *rand.Rand + + initOnce sync.Once +} + +// init initializes the generator on the first call to avoid consuming entropy +// unnecessarily. +func (gen *defaultIDGenerator) init() { + gen.initOnce.Do(func() { + // initialize traceID and spanID generators. + var rngSeed int64 + for _, p := range []interface{}{ + &rngSeed, &gen.traceIDAdd, &gen.nextSpanID, &gen.spanIDInc, + } { + binary.Read(crand.Reader, binary.LittleEndian, p) + } + gen.traceIDRand = rand.New(rand.NewSource(rngSeed)) + gen.spanIDInc |= 1 + }) } // NewSpanID returns a non-zero span ID from a randomly-chosen sequence. diff --git a/vendor/go.opencensus.io/trace/trace_api.go b/vendor/go.opencensus.io/trace/trace_api.go new file mode 100644 index 0000000000..9e2c3a9992 --- /dev/null +++ b/vendor/go.opencensus.io/trace/trace_api.go @@ -0,0 +1,265 @@ +// Copyright 2020, OpenCensus Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package trace + +import ( + "context" +) + +// DefaultTracer is the tracer used when package-level exported functions are invoked. +var DefaultTracer Tracer = &tracer{} + +// Tracer can start spans and access context functions. +type Tracer interface { + + // StartSpan starts a new child span of the current span in the context. If + // there is no span in the context, creates a new trace and span. + // + // Returned context contains the newly created span. You can use it to + // propagate the returned span in process. + StartSpan(ctx context.Context, name string, o ...StartOption) (context.Context, *Span) + + // StartSpanWithRemoteParent starts a new child span of the span from the given parent. + // + // If the incoming context contains a parent, it ignores. StartSpanWithRemoteParent is + // preferred for cases where the parent is propagated via an incoming request. + // + // Returned context contains the newly created span. You can use it to + // propagate the returned span in process. + StartSpanWithRemoteParent(ctx context.Context, name string, parent SpanContext, o ...StartOption) (context.Context, *Span) + + // FromContext returns the Span stored in a context, or nil if there isn't one. + FromContext(ctx context.Context) *Span + + // NewContext returns a new context with the given Span attached. + NewContext(parent context.Context, s *Span) context.Context +} + +// StartSpan starts a new child span of the current span in the context. If +// there is no span in the context, creates a new trace and span. +// +// Returned context contains the newly created span. You can use it to +// propagate the returned span in process. +func StartSpan(ctx context.Context, name string, o ...StartOption) (context.Context, *Span) { + return DefaultTracer.StartSpan(ctx, name, o...) +} + +// StartSpanWithRemoteParent starts a new child span of the span from the given parent. +// +// If the incoming context contains a parent, it ignores. StartSpanWithRemoteParent is +// preferred for cases where the parent is propagated via an incoming request. +// +// Returned context contains the newly created span. You can use it to +// propagate the returned span in process. +func StartSpanWithRemoteParent(ctx context.Context, name string, parent SpanContext, o ...StartOption) (context.Context, *Span) { + return DefaultTracer.StartSpanWithRemoteParent(ctx, name, parent, o...) +} + +// FromContext returns the Span stored in a context, or a Span that is not +// recording events if there isn't one. +func FromContext(ctx context.Context) *Span { + return DefaultTracer.FromContext(ctx) +} + +// NewContext returns a new context with the given Span attached. +func NewContext(parent context.Context, s *Span) context.Context { + return DefaultTracer.NewContext(parent, s) +} + +// SpanInterface represents a span of a trace. It has an associated SpanContext, and +// stores data accumulated while the span is active. +// +// Ideally users should interact with Spans by calling the functions in this +// package that take a Context parameter. +type SpanInterface interface { + + // IsRecordingEvents returns true if events are being recorded for this span. + // Use this check to avoid computing expensive annotations when they will never + // be used. + IsRecordingEvents() bool + + // End ends the span. + End() + + // SpanContext returns the SpanContext of the span. + SpanContext() SpanContext + + // SetName sets the name of the span, if it is recording events. + SetName(name string) + + // SetStatus sets the status of the span, if it is recording events. + SetStatus(status Status) + + // AddAttributes sets attributes in the span. + // + // Existing attributes whose keys appear in the attributes parameter are overwritten. + AddAttributes(attributes ...Attribute) + + // Annotate adds an annotation with attributes. + // Attributes can be nil. + Annotate(attributes []Attribute, str string) + + // Annotatef adds an annotation with attributes. + Annotatef(attributes []Attribute, format string, a ...interface{}) + + // AddMessageSendEvent adds a message send event to the span. + // + // messageID is an identifier for the message, which is recommended to be + // unique in this span and the same between the send event and the receive + // event (this allows to identify a message between the sender and receiver). + // For example, this could be a sequence id. + AddMessageSendEvent(messageID, uncompressedByteSize, compressedByteSize int64) + + // AddMessageReceiveEvent adds a message receive event to the span. + // + // messageID is an identifier for the message, which is recommended to be + // unique in this span and the same between the send event and the receive + // event (this allows to identify a message between the sender and receiver). + // For example, this could be a sequence id. + AddMessageReceiveEvent(messageID, uncompressedByteSize, compressedByteSize int64) + + // AddLink adds a link to the span. + AddLink(l Link) + + // String prints a string representation of a span. + String() string +} + +// NewSpan is a convenience function for creating a *Span out of a *span +func NewSpan(s SpanInterface) *Span { + return &Span{internal: s} +} + +// Span is a struct wrapper around the SpanInt interface, which allows correctly handling +// nil spans, while also allowing the SpanInterface implementation to be swapped out. +type Span struct { + internal SpanInterface +} + +// Internal returns the underlying implementation of the Span +func (s *Span) Internal() SpanInterface { + return s.internal +} + +// IsRecordingEvents returns true if events are being recorded for this span. +// Use this check to avoid computing expensive annotations when they will never +// be used. +func (s *Span) IsRecordingEvents() bool { + if s == nil { + return false + } + return s.internal.IsRecordingEvents() +} + +// End ends the span. +func (s *Span) End() { + if s == nil { + return + } + s.internal.End() +} + +// SpanContext returns the SpanContext of the span. +func (s *Span) SpanContext() SpanContext { + if s == nil { + return SpanContext{} + } + return s.internal.SpanContext() +} + +// SetName sets the name of the span, if it is recording events. +func (s *Span) SetName(name string) { + if !s.IsRecordingEvents() { + return + } + s.internal.SetName(name) +} + +// SetStatus sets the status of the span, if it is recording events. +func (s *Span) SetStatus(status Status) { + if !s.IsRecordingEvents() { + return + } + s.internal.SetStatus(status) +} + +// AddAttributes sets attributes in the span. +// +// Existing attributes whose keys appear in the attributes parameter are overwritten. +func (s *Span) AddAttributes(attributes ...Attribute) { + if !s.IsRecordingEvents() { + return + } + s.internal.AddAttributes(attributes...) +} + +// Annotate adds an annotation with attributes. +// Attributes can be nil. +func (s *Span) Annotate(attributes []Attribute, str string) { + if !s.IsRecordingEvents() { + return + } + s.internal.Annotate(attributes, str) +} + +// Annotatef adds an annotation with attributes. +func (s *Span) Annotatef(attributes []Attribute, format string, a ...interface{}) { + if !s.IsRecordingEvents() { + return + } + s.internal.Annotatef(attributes, format, a...) +} + +// AddMessageSendEvent adds a message send event to the span. +// +// messageID is an identifier for the message, which is recommended to be +// unique in this span and the same between the send event and the receive +// event (this allows to identify a message between the sender and receiver). +// For example, this could be a sequence id. +func (s *Span) AddMessageSendEvent(messageID, uncompressedByteSize, compressedByteSize int64) { + if !s.IsRecordingEvents() { + return + } + s.internal.AddMessageSendEvent(messageID, uncompressedByteSize, compressedByteSize) +} + +// AddMessageReceiveEvent adds a message receive event to the span. +// +// messageID is an identifier for the message, which is recommended to be +// unique in this span and the same between the send event and the receive +// event (this allows to identify a message between the sender and receiver). +// For example, this could be a sequence id. +func (s *Span) AddMessageReceiveEvent(messageID, uncompressedByteSize, compressedByteSize int64) { + if !s.IsRecordingEvents() { + return + } + s.internal.AddMessageReceiveEvent(messageID, uncompressedByteSize, compressedByteSize) +} + +// AddLink adds a link to the span. +func (s *Span) AddLink(l Link) { + if !s.IsRecordingEvents() { + return + } + s.internal.AddLink(l) +} + +// String prints a string representation of a span. +func (s *Span) String() string { + if s == nil { + return "" + } + return s.internal.String() +} diff --git a/vendor/go.uber.org/zap/CHANGELOG.md b/vendor/go.uber.org/zap/CHANGELOG.md index 3b99bf0ac8..fdfef8808a 100644 --- a/vendor/go.uber.org/zap/CHANGELOG.md +++ b/vendor/go.uber.org/zap/CHANGELOG.md @@ -1,5 +1,49 @@ # Changelog +## 1.19.0 (9 Aug 2021) + +Enhancements: +* [#975][]: Avoid panicking in Sampler core if the level is out of bounds. +* [#984][]: Reduce the size of BufferedWriteSyncer by aligning the fields + better. + +[#975]: https://github.com/uber-go/zap/pull/975 +[#984]: https://github.com/uber-go/zap/pull/984 + +Thanks to @lancoLiu and @thockin for their contributions to this release. + +## 1.18.1 (28 Jun 2021) + +Bugfixes: +* [#974][]: Fix nil dereference in logger constructed by `zap.NewNop`. + +[#974]: https://github.com/uber-go/zap/pull/974 + +## 1.18.0 (28 Jun 2021) + +Enhancements: +* [#961][]: Add `zapcore.BufferedWriteSyncer`, a new `WriteSyncer` that buffers + messages in-memory and flushes them periodically. +* [#971][]: Add `zapio.Writer` to use a Zap logger as an `io.Writer`. +* [#897][]: Add `zap.WithClock` option to control the source of time via the + new `zapcore.Clock` interface. +* [#949][]: Avoid panicking in `zap.SugaredLogger` when arguments of `*w` + methods don't match expectations. +* [#943][]: Add support for filtering by level or arbitrary matcher function to + `zaptest/observer`. +* [#691][]: Comply with `io.StringWriter` and `io.ByteWriter` in Zap's + `buffer.Buffer`. + +Thanks to @atrn0, @ernado, @heyanfu, @hnlq715, @zchee +for their contributions to this release. + +[#691]: https://github.com/uber-go/zap/pull/691 +[#897]: https://github.com/uber-go/zap/pull/897 +[#943]: https://github.com/uber-go/zap/pull/943 +[#949]: https://github.com/uber-go/zap/pull/949 +[#961]: https://github.com/uber-go/zap/pull/961 +[#971]: https://github.com/uber-go/zap/pull/971 + ## 1.17.0 (25 May 2021) Bugfixes: diff --git a/vendor/go.uber.org/zap/buffer/buffer.go b/vendor/go.uber.org/zap/buffer/buffer.go index 3f4b86e081..9e929cd98e 100644 --- a/vendor/go.uber.org/zap/buffer/buffer.go +++ b/vendor/go.uber.org/zap/buffer/buffer.go @@ -106,6 +106,24 @@ func (b *Buffer) Write(bs []byte) (int, error) { return len(bs), nil } +// WriteByte writes a single byte to the Buffer. +// +// Error returned is always nil, function signature is compatible +// with bytes.Buffer and bufio.Writer +func (b *Buffer) WriteByte(v byte) error { + b.AppendByte(v) + return nil +} + +// WriteString writes a string to the Buffer. +// +// Error returned is always nil, function signature is compatible +// with bytes.Buffer and bufio.Writer +func (b *Buffer) WriteString(s string) (int, error) { + b.AppendString(s) + return len(s), nil +} + // TrimNewline trims any final "\n" byte from the end of the buffer. func (b *Buffer) TrimNewline() { if i := len(b.bs) - 1; i >= 0 { diff --git a/vendor/go.uber.org/zap/go.mod b/vendor/go.uber.org/zap/go.mod index 6578a35454..9455c99cc9 100644 --- a/vendor/go.uber.org/zap/go.mod +++ b/vendor/go.uber.org/zap/go.mod @@ -3,9 +3,11 @@ module go.uber.org/zap go 1.13 require ( + github.com/benbjohnson/clock v1.1.0 github.com/pkg/errors v0.8.1 github.com/stretchr/testify v1.7.0 go.uber.org/atomic v1.7.0 + go.uber.org/goleak v1.1.10 go.uber.org/multierr v1.6.0 gopkg.in/yaml.v2 v2.2.8 gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect diff --git a/vendor/go.uber.org/zap/go.sum b/vendor/go.uber.org/zap/go.sum index 911a87ae1c..9031a6131a 100644 --- a/vendor/go.uber.org/zap/go.sum +++ b/vendor/go.uber.org/zap/go.sum @@ -1,20 +1,44 @@ +github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= +github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/goleak v1.1.10 h1:z+mqJhf6ss6BSfSM671tgKyZBFPTTJM+HLxnhPC3wu0= +go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de h1:5hukYrvBGR8/eNkX5mdUezrA6JiaEZDtJb9Ei+1LlBs= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20191108193012-7d206e10da11 h1:Yq9t9jnGoR+dBuitxdo9l6Q7xh/zOyNnYUtDKaQ3x0E= +golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/vendor/go.uber.org/zap/logger.go b/vendor/go.uber.org/zap/logger.go index 553f258e74..f116bd936f 100644 --- a/vendor/go.uber.org/zap/logger.go +++ b/vendor/go.uber.org/zap/logger.go @@ -26,7 +26,6 @@ import ( "os" "runtime" "strings" - "time" "go.uber.org/zap/zapcore" ) @@ -51,6 +50,8 @@ type Logger struct { addStack zapcore.LevelEnabler callerSkip int + + clock zapcore.Clock } // New constructs a new Logger from the provided zapcore.Core and Options. If @@ -71,6 +72,7 @@ func New(core zapcore.Core, options ...Option) *Logger { core: core, errorOutput: zapcore.Lock(os.Stderr), addStack: zapcore.FatalLevel + 1, + clock: zapcore.DefaultClock, } return log.WithOptions(options...) } @@ -85,6 +87,7 @@ func NewNop() *Logger { core: zapcore.NewNopCore(), errorOutput: zapcore.AddSync(ioutil.Discard), addStack: zapcore.FatalLevel + 1, + clock: zapcore.DefaultClock, } } @@ -270,7 +273,7 @@ func (log *Logger) check(lvl zapcore.Level, msg string) *zapcore.CheckedEntry { // log message will actually be written somewhere. ent := zapcore.Entry{ LoggerName: log.name, - Time: time.Now(), + Time: log.clock.Now(), Level: lvl, Message: msg, } @@ -307,7 +310,7 @@ func (log *Logger) check(lvl zapcore.Level, msg string) *zapcore.CheckedEntry { if log.addCaller { frame, defined := getCallerFrame(log.callerSkip + callerSkipOffset) if !defined { - fmt.Fprintf(log.errorOutput, "%v Logger.check error: failed to get caller\n", time.Now().UTC()) + fmt.Fprintf(log.errorOutput, "%v Logger.check error: failed to get caller\n", ent.Time.UTC()) log.errorOutput.Sync() } diff --git a/vendor/go.uber.org/zap/options.go b/vendor/go.uber.org/zap/options.go index 0135c20923..e9e66161f5 100644 --- a/vendor/go.uber.org/zap/options.go +++ b/vendor/go.uber.org/zap/options.go @@ -138,3 +138,11 @@ func OnFatal(action zapcore.CheckWriteAction) Option { log.onFatal = action }) } + +// WithClock specifies the clock used by the logger to determine the current +// time for logged entries. Defaults to the system clock with time.Now. +func WithClock(clock zapcore.Clock) Option { + return optionFunc(func(log *Logger) { + log.clock = clock + }) +} diff --git a/vendor/go.uber.org/zap/sugar.go b/vendor/go.uber.org/zap/sugar.go index 4084dada79..0b9651981a 100644 --- a/vendor/go.uber.org/zap/sugar.go +++ b/vendor/go.uber.org/zap/sugar.go @@ -266,7 +266,7 @@ func (s *SugaredLogger) sweetenFields(args []interface{}) []Field { // Make sure this element isn't a dangling key. if i == len(args)-1 { - s.base.DPanic(_oddNumberErrMsg, Any("ignored", args[i])) + s.base.Error(_oddNumberErrMsg, Any("ignored", args[i])) break } @@ -287,7 +287,7 @@ func (s *SugaredLogger) sweetenFields(args []interface{}) []Field { // If we encountered any invalid key-value pairs, log an error. if len(invalid) > 0 { - s.base.DPanic(_nonStringKeyErrMsg, Array("invalid", invalid)) + s.base.Error(_nonStringKeyErrMsg, Array("invalid", invalid)) } return fields } diff --git a/vendor/go.uber.org/zap/zapcore/buffered_write_syncer.go b/vendor/go.uber.org/zap/zapcore/buffered_write_syncer.go new file mode 100644 index 0000000000..ef2f7d9637 --- /dev/null +++ b/vendor/go.uber.org/zap/zapcore/buffered_write_syncer.go @@ -0,0 +1,188 @@ +// Copyright (c) 2021 Uber Technologies, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +package zapcore + +import ( + "bufio" + "sync" + "time" + + "go.uber.org/multierr" +) + +const ( + // _defaultBufferSize specifies the default size used by Buffer. + _defaultBufferSize = 256 * 1024 // 256 kB + + // _defaultFlushInterval specifies the default flush interval for + // Buffer. + _defaultFlushInterval = 30 * time.Second +) + +// A BufferedWriteSyncer is a WriteSyncer that buffers writes in-memory before +// flushing them to a wrapped WriteSyncer after reaching some limit, or at some +// fixed interval--whichever comes first. +// +// BufferedWriteSyncer is safe for concurrent use. You don't need to use +// zapcore.Lock for WriteSyncers with BufferedWriteSyncer. +type BufferedWriteSyncer struct { + // WS is the WriteSyncer around which BufferedWriteSyncer will buffer + // writes. + // + // This field is required. + WS WriteSyncer + + // Size specifies the maximum amount of data the writer will buffered + // before flushing. + // + // Defaults to 256 kB if unspecified. + Size int + + // FlushInterval specifies how often the writer should flush data if + // there have been no writes. + // + // Defaults to 30 seconds if unspecified. + FlushInterval time.Duration + + // Clock, if specified, provides control of the source of time for the + // writer. + // + // Defaults to the system clock. + Clock Clock + + // unexported fields for state + mu sync.Mutex + initialized bool // whether initialize() has run + stopped bool // whether Stop() has run + writer *bufio.Writer + ticker *time.Ticker + stop chan struct{} // closed when flushLoop should stop + done chan struct{} // closed when flushLoop has stopped +} + +func (s *BufferedWriteSyncer) initialize() { + size := s.Size + if size == 0 { + size = _defaultBufferSize + } + + flushInterval := s.FlushInterval + if flushInterval == 0 { + flushInterval = _defaultFlushInterval + } + + if s.Clock == nil { + s.Clock = DefaultClock + } + + s.ticker = s.Clock.NewTicker(flushInterval) + s.writer = bufio.NewWriterSize(s.WS, size) + s.stop = make(chan struct{}) + s.done = make(chan struct{}) + s.initialized = true + go s.flushLoop() +} + +// Write writes log data into buffer syncer directly, multiple Write calls will be batched, +// and log data will be flushed to disk when the buffer is full or periodically. +func (s *BufferedWriteSyncer) Write(bs []byte) (int, error) { + s.mu.Lock() + defer s.mu.Unlock() + + if !s.initialized { + s.initialize() + } + + // To avoid partial writes from being flushed, we manually flush the existing buffer if: + // * The current write doesn't fit into the buffer fully, and + // * The buffer is not empty (since bufio will not split large writes when the buffer is empty) + if len(bs) > s.writer.Available() && s.writer.Buffered() > 0 { + if err := s.writer.Flush(); err != nil { + return 0, err + } + } + + return s.writer.Write(bs) +} + +// Sync flushes buffered log data into disk directly. +func (s *BufferedWriteSyncer) Sync() error { + s.mu.Lock() + defer s.mu.Unlock() + + var err error + if s.initialized { + err = s.writer.Flush() + } + + return multierr.Append(err, s.WS.Sync()) +} + +// flushLoop flushes the buffer at the configured interval until Stop is +// called. +func (s *BufferedWriteSyncer) flushLoop() { + defer close(s.done) + + for { + select { + case <-s.ticker.C: + // we just simply ignore error here + // because the underlying bufio writer stores any errors + // and we return any error from Sync() as part of the close + _ = s.Sync() + case <-s.stop: + return + } + } +} + +// Stop closes the buffer, cleans up background goroutines, and flushes +// remaining unwritten data. +func (s *BufferedWriteSyncer) Stop() (err error) { + var stopped bool + + // Critical section. + func() { + s.mu.Lock() + defer s.mu.Unlock() + + if !s.initialized { + return + } + + stopped = s.stopped + if stopped { + return + } + s.stopped = true + + s.ticker.Stop() + close(s.stop) // tell flushLoop to stop + <-s.done // and wait until it has + }() + + // Don't call Sync on consecutive Stops. + if !stopped { + err = s.Sync() + } + + return err +} diff --git a/vendor/go.uber.org/zap/zapcore/clock.go b/vendor/go.uber.org/zap/zapcore/clock.go new file mode 100644 index 0000000000..d2ea95b394 --- /dev/null +++ b/vendor/go.uber.org/zap/zapcore/clock.go @@ -0,0 +1,50 @@ +// Copyright (c) 2021 Uber Technologies, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +package zapcore + +import ( + "time" +) + +// DefaultClock is the default clock used by Zap in operations that require +// time. This clock uses the system clock for all operations. +var DefaultClock = systemClock{} + +// Clock is a source of time for logged entries. +type Clock interface { + // Now returns the current local time. + Now() time.Time + + // NewTicker returns *time.Ticker that holds a channel + // that delivers "ticks" of a clock. + NewTicker(time.Duration) *time.Ticker +} + +// systemClock implements default Clock that uses system time. +type systemClock struct{} + +func (systemClock) Now() time.Time { + return time.Now() +} + +func (systemClock) NewTicker(duration time.Duration) *time.Ticker { + return time.NewTicker(duration) +} diff --git a/vendor/go.uber.org/zap/zapcore/entry.go b/vendor/go.uber.org/zap/zapcore/entry.go index 4aa8b4f90b..0885505b75 100644 --- a/vendor/go.uber.org/zap/zapcore/entry.go +++ b/vendor/go.uber.org/zap/zapcore/entry.go @@ -208,7 +208,7 @@ func (ce *CheckedEntry) Write(fields ...Field) { // If the entry is dirty, log an internal error; because the // CheckedEntry is being used after it was returned to the pool, // the message may be an amalgamation from multiple call sites. - fmt.Fprintf(ce.ErrorOutput, "%v Unsafe CheckedEntry re-use near Entry %+v.\n", time.Now(), ce.Entry) + fmt.Fprintf(ce.ErrorOutput, "%v Unsafe CheckedEntry re-use near Entry %+v.\n", ce.Time, ce.Entry) ce.ErrorOutput.Sync() } return @@ -219,11 +219,9 @@ func (ce *CheckedEntry) Write(fields ...Field) { for i := range ce.cores { err = multierr.Append(err, ce.cores[i].Write(ce.Entry, fields)) } - if ce.ErrorOutput != nil { - if err != nil { - fmt.Fprintf(ce.ErrorOutput, "%v write error: %v\n", time.Now(), err) - ce.ErrorOutput.Sync() - } + if err != nil && ce.ErrorOutput != nil { + fmt.Fprintf(ce.ErrorOutput, "%v write error: %v\n", ce.Time, err) + ce.ErrorOutput.Sync() } should, msg := ce.should, ce.Message diff --git a/vendor/go.uber.org/zap/zapcore/error.go b/vendor/go.uber.org/zap/zapcore/error.go index f2a07d7864..74919b0ccb 100644 --- a/vendor/go.uber.org/zap/zapcore/error.go +++ b/vendor/go.uber.org/zap/zapcore/error.go @@ -83,7 +83,7 @@ type errorGroup interface { Errors() []error } -// Note that errArry and errArrayElem are very similar to the version +// Note that errArray and errArrayElem are very similar to the version // implemented in the top-level error.go file. We can't re-use this because // that would require exporting errArray as part of the zapcore API. diff --git a/vendor/go.uber.org/zap/zapcore/sampler.go b/vendor/go.uber.org/zap/zapcore/sampler.go index 25f10ca1d7..31ed96e129 100644 --- a/vendor/go.uber.org/zap/zapcore/sampler.go +++ b/vendor/go.uber.org/zap/zapcore/sampler.go @@ -197,12 +197,14 @@ func (s *sampler) Check(ent Entry, ce *CheckedEntry) *CheckedEntry { return ce } - counter := s.counts.get(ent.Level, ent.Message) - n := counter.IncCheckReset(ent.Time, s.tick) - if n > s.first && (n-s.first)%s.thereafter != 0 { - s.hook(ent, LogDropped) - return ce + if ent.Level >= _minLevel && ent.Level <= _maxLevel { + counter := s.counts.get(ent.Level, ent.Message) + n := counter.IncCheckReset(ent.Time, s.tick) + if n > s.first && (n-s.first)%s.thereafter != 0 { + s.hook(ent, LogDropped) + return ce + } + s.hook(ent, LogSampled) } - s.hook(ent, LogSampled) return s.Core.Check(ent, ce) } diff --git a/vendor/golang.org/x/oauth2/README.md b/vendor/golang.org/x/oauth2/README.md index 8cfd6063e7..1473e1296d 100644 --- a/vendor/golang.org/x/oauth2/README.md +++ b/vendor/golang.org/x/oauth2/README.md @@ -1,7 +1,7 @@ # OAuth2 for Go +[![Go Reference](https://pkg.go.dev/badge/golang.org/x/oauth2.svg)](https://pkg.go.dev/golang.org/x/oauth2) [![Build Status](https://travis-ci.org/golang/oauth2.svg?branch=master)](https://travis-ci.org/golang/oauth2) -[![GoDoc](https://godoc.org/golang.org/x/oauth2?status.svg)](https://godoc.org/golang.org/x/oauth2) oauth2 package contains a client implementation for OAuth 2.0 spec. @@ -14,17 +14,17 @@ go get golang.org/x/oauth2 Or you can manually git clone the repository to `$(go env GOPATH)/src/golang.org/x/oauth2`. -See godoc for further documentation and examples. +See pkg.go.dev for further documentation and examples. -* [godoc.org/golang.org/x/oauth2](https://godoc.org/golang.org/x/oauth2) -* [godoc.org/golang.org/x/oauth2/google](https://godoc.org/golang.org/x/oauth2/google) +* [pkg.go.dev/golang.org/x/oauth2](https://pkg.go.dev/golang.org/x/oauth2) +* [pkg.go.dev/golang.org/x/oauth2/google](https://pkg.go.dev/golang.org/x/oauth2/google) ## Policy for new packages We no longer accept new provider-specific packages in this repo if all they do is add a single endpoint variable. If you just want to add a single endpoint, add it to the -[godoc.org/golang.org/x/oauth2/endpoints](https://godoc.org/golang.org/x/oauth2/endpoints) +[pkg.go.dev/golang.org/x/oauth2/endpoints](https://pkg.go.dev/golang.org/x/oauth2/endpoints) package. ## Report Issues / Send Patches diff --git a/vendor/golang.org/x/oauth2/go.mod b/vendor/golang.org/x/oauth2/go.mod index b345781552..2b13f0b34c 100644 --- a/vendor/golang.org/x/oauth2/go.mod +++ b/vendor/golang.org/x/oauth2/go.mod @@ -3,8 +3,7 @@ module golang.org/x/oauth2 go 1.11 require ( - cloud.google.com/go v0.34.0 - golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e - golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4 // indirect - google.golang.org/appengine v1.4.0 + cloud.google.com/go v0.65.0 + golang.org/x/net v0.0.0-20200822124328-c89045814202 + google.golang.org/appengine v1.6.6 ) diff --git a/vendor/golang.org/x/oauth2/go.sum b/vendor/golang.org/x/oauth2/go.sum index 6f0079b0d7..eab5833c42 100644 --- a/vendor/golang.org/x/oauth2/go.sum +++ b/vendor/golang.org/x/oauth2/go.sum @@ -1,12 +1,361 @@ -cloud.google.com/go v0.34.0 h1:eOI3/cP2VTU6uZLDYAoic+eyzzB9YyGmJ7eIjl8rOPg= +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0 h1:Dg9iHVQfrhq82rUNu9ZxUDrJLaxFUe/HlCVaLyRruq8= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1 h1:JFrFEBb2xKufg6XkJsJr+WbKb4FQlURi5RUcBveYu9k= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e h1:bRhVy7zSSasaqNksaRZiA5EEI+Ei4I1nO5Jh72wfHlg= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4 h1:YUO/7uOKsKeq9UokNS62b8FYywz3ker1l1vDZRCRefw= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202 h1:VvcQYSHwXgi7W+TpUR6A9g6Up98WAHf3f/ulnJ62IyA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -google.golang.org/appengine v1.4.0 h1:/wp5JvzpHIxhs/dumFmF7BXTf3Z+dd4uXta4kVyO508= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= +google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6 h1:lMO5rYAqUxkmaj76jAkRUvt5JZgFymx/+Q5Mzfivuhc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= +rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= diff --git a/vendor/golang.org/x/oauth2/google/appengine_gen1.go b/vendor/golang.org/x/oauth2/google/appengine_gen1.go index 83dacac320..16c6c6b90c 100644 --- a/vendor/golang.org/x/oauth2/google/appengine_gen1.go +++ b/vendor/golang.org/x/oauth2/google/appengine_gen1.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build appengine // +build appengine // This file applies to App Engine first generation runtimes (<= Go 1.9). diff --git a/vendor/golang.org/x/oauth2/google/appengine_gen2_flex.go b/vendor/golang.org/x/oauth2/google/appengine_gen2_flex.go index 04c2c2216a..a7e27b3d29 100644 --- a/vendor/golang.org/x/oauth2/google/appengine_gen2_flex.go +++ b/vendor/golang.org/x/oauth2/google/appengine_gen2_flex.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build !appengine // +build !appengine // This file applies to App Engine second generation runtimes (>= Go 1.11) and App Engine flexible. diff --git a/vendor/golang.org/x/oauth2/google/default.go b/vendor/golang.org/x/oauth2/google/default.go index ad2c09236c..ae391313d2 100644 --- a/vendor/golang.org/x/oauth2/google/default.go +++ b/vendor/golang.org/x/oauth2/google/default.go @@ -21,6 +21,10 @@ import ( // Credentials holds Google credentials, including "Application Default Credentials". // For more details, see: // https://developers.google.com/accounts/docs/application-default-credentials +// Credentials from external accounts (workload identity federation) are used to +// identify a particular application from an on-prem or non-Google Cloud platform +// including Amazon Web Services (AWS), Microsoft Azure or any identity provider +// that supports OpenID Connect (OIDC). type Credentials struct { ProjectID string // may be empty TokenSource oauth2.TokenSource @@ -65,6 +69,10 @@ func DefaultTokenSource(ctx context.Context, scope ...string) (oauth2.TokenSourc // // 1. A JSON file whose path is specified by the // GOOGLE_APPLICATION_CREDENTIALS environment variable. +// For workload identity federation, refer to +// https://cloud.google.com/iam/docs/how-to#using-workload-identity-federation on +// how to generate the JSON configuration file for on-prem/non-Google cloud +// platforms. // 2. A JSON file in a location known to the gcloud command-line tool. // On Windows, this is %APPDATA%/gcloud/application_default_credentials.json. // On other systems, $HOME/.config/gcloud/application_default_credentials.json. @@ -119,8 +127,10 @@ func FindDefaultCredentials(ctx context.Context, scopes ...string) (*Credentials // CredentialsFromJSON obtains Google credentials from a JSON value. The JSON can // represent either a Google Developers Console client_credentials.json file (as in -// ConfigFromJSON) or a Google Developers service account key file (as in -// JWTConfigFromJSON). +// ConfigFromJSON), a Google Developers service account key file (as in +// JWTConfigFromJSON) or the JSON configuration file for workload identity federation +// in non-Google cloud platforms (see +// https://cloud.google.com/iam/docs/how-to#using-workload-identity-federation). func CredentialsFromJSON(ctx context.Context, jsonData []byte, scopes ...string) (*Credentials, error) { var f credentialsFile if err := json.Unmarshal(jsonData, &f); err != nil { diff --git a/vendor/golang.org/x/oauth2/google/doc.go b/vendor/golang.org/x/oauth2/google/doc.go index 73be629033..b241c728a6 100644 --- a/vendor/golang.org/x/oauth2/google/doc.go +++ b/vendor/golang.org/x/oauth2/google/doc.go @@ -4,13 +4,16 @@ // Package google provides support for making OAuth2 authorized and authenticated // HTTP requests to Google APIs. It supports the Web server flow, client-side -// credentials, service accounts, Google Compute Engine service accounts, and Google -// App Engine service accounts. +// credentials, service accounts, Google Compute Engine service accounts, Google +// App Engine service accounts and workload identity federation from non-Google +// cloud platforms. // // A brief overview of the package follows. For more information, please read // https://developers.google.com/accounts/docs/OAuth2 // and // https://developers.google.com/accounts/docs/application-default-credentials. +// For more information on using workload identity federation, refer to +// https://cloud.google.com/iam/docs/how-to#using-workload-identity-federation. // // OAuth2 Configs // @@ -19,6 +22,35 @@ // the other by JWTConfigFromJSON. The returned Config can be used to obtain a TokenSource or // create an http.Client. // +// Workload Identity Federation +// +// Using workload identity federation, your application can access Google Cloud +// resources from Amazon Web Services (AWS), Microsoft Azure or any identity +// provider that supports OpenID Connect (OIDC). +// Traditionally, applications running outside Google Cloud have used service +// account keys to access Google Cloud resources. Using identity federation, +// you can allow your workload to impersonate a service account. +// This lets you access Google Cloud resources directly, eliminating the +// maintenance and security burden associated with service account keys. +// +// Follow the detailed instructions on how to configure Workload Identity Federation +// in various platforms: +// +// Amazon Web Services (AWS): https://cloud.google.com/iam/docs/access-resources-aws +// Microsoft Azure: https://cloud.google.com/iam/docs/access-resources-azure +// OIDC identity provider: https://cloud.google.com/iam/docs/access-resources-oidc +// +// For OIDC providers, the library can retrieve OIDC tokens either from a +// local file location (file-sourced credentials) or from a local server +// (URL-sourced credentials). +// For file-sourced credentials, a background process needs to be continuously +// refreshing the file location with a new OIDC token prior to expiration. +// For tokens with one hour lifetimes, the token needs to be updated in the file +// every hour. The token can be stored directly as plain text or in JSON format. +// For URL-sourced credentials, a local server needs to host a GET endpoint to +// return the OIDC token. The response can be in plain text or JSON. +// Additional required request headers can also be specified. +// // // Credentials // @@ -29,6 +61,13 @@ // FindDefaultCredentials looks in some well-known places for a credentials file, and // will call AppEngineTokenSource or ComputeTokenSource as needed. // +// Application Default Credentials also support workload identity federation to +// access Google Cloud resources from non-Google Cloud platforms including Amazon +// Web Services (AWS), Microsoft Azure or any identity provider that supports +// OpenID Connect (OIDC). Workload identity federation is recommended for +// non-Google Cloud environments as it avoids the need to download, manage and +// store service account private keys locally. +// // DefaultClient and DefaultTokenSource are convenience methods. They first call FindDefaultCredentials, // then use the credentials to construct an http.Client or an oauth2.TokenSource. // diff --git a/vendor/golang.org/x/oauth2/google/google.go b/vendor/golang.org/x/oauth2/google/google.go index 81de32b360..2c8f1bd5ad 100644 --- a/vendor/golang.org/x/oauth2/google/google.go +++ b/vendor/golang.org/x/oauth2/google/google.go @@ -15,6 +15,7 @@ import ( "cloud.google.com/go/compute/metadata" "golang.org/x/oauth2" + "golang.org/x/oauth2/google/internal/externalaccount" "golang.org/x/oauth2/jwt" ) @@ -93,6 +94,7 @@ func JWTConfigFromJSON(jsonKey []byte, scope ...string) (*jwt.Config, error) { const ( serviceAccountKey = "service_account" userCredentialsKey = "authorized_user" + externalAccountKey = "external_account" ) // credentialsFile is the unmarshalled representation of a credentials file. @@ -111,6 +113,15 @@ type credentialsFile struct { ClientSecret string `json:"client_secret"` ClientID string `json:"client_id"` RefreshToken string `json:"refresh_token"` + + // External Account fields + Audience string `json:"audience"` + SubjectTokenType string `json:"subject_token_type"` + TokenURLExternal string `json:"token_url"` + TokenInfoURL string `json:"token_info_url"` + ServiceAccountImpersonationURL string `json:"service_account_impersonation_url"` + CredentialSource externalaccount.CredentialSource `json:"credential_source"` + QuotaProjectID string `json:"quota_project_id"` } func (f *credentialsFile) jwtConfig(scopes []string) *jwt.Config { @@ -141,6 +152,20 @@ func (f *credentialsFile) tokenSource(ctx context.Context, scopes []string) (oau } tok := &oauth2.Token{RefreshToken: f.RefreshToken} return cfg.TokenSource(ctx, tok), nil + case externalAccountKey: + cfg := &externalaccount.Config{ + Audience: f.Audience, + SubjectTokenType: f.SubjectTokenType, + TokenURL: f.TokenURLExternal, + TokenInfoURL: f.TokenInfoURL, + ServiceAccountImpersonationURL: f.ServiceAccountImpersonationURL, + ClientSecret: f.ClientSecret, + ClientID: f.ClientID, + CredentialSource: f.CredentialSource, + QuotaProjectID: f.QuotaProjectID, + Scopes: scopes, + } + return cfg.TokenSource(ctx), nil case "": return nil, errors.New("missing 'type' field in credentials") default: diff --git a/vendor/golang.org/x/oauth2/google/internal/externalaccount/aws.go b/vendor/golang.org/x/oauth2/google/internal/externalaccount/aws.go new file mode 100644 index 0000000000..fbcefb474e --- /dev/null +++ b/vendor/golang.org/x/oauth2/google/internal/externalaccount/aws.go @@ -0,0 +1,466 @@ +// Copyright 2021 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package externalaccount + +import ( + "bytes" + "context" + "crypto/hmac" + "crypto/sha256" + "encoding/hex" + "encoding/json" + "errors" + "fmt" + "golang.org/x/oauth2" + "io" + "io/ioutil" + "net/http" + "net/url" + "os" + "path" + "sort" + "strings" + "time" +) + +type awsSecurityCredentials struct { + AccessKeyID string `json:"AccessKeyID"` + SecretAccessKey string `json:"SecretAccessKey"` + SecurityToken string `json:"Token"` +} + +// awsRequestSigner is a utility class to sign http requests using a AWS V4 signature. +type awsRequestSigner struct { + RegionName string + AwsSecurityCredentials awsSecurityCredentials +} + +// getenv aliases os.Getenv for testing +var getenv = os.Getenv + +const ( + // AWS Signature Version 4 signing algorithm identifier. + awsAlgorithm = "AWS4-HMAC-SHA256" + + // The termination string for the AWS credential scope value as defined in + // https://docs.aws.amazon.com/general/latest/gr/sigv4-create-string-to-sign.html + awsRequestType = "aws4_request" + + // The AWS authorization header name for the security session token if available. + awsSecurityTokenHeader = "x-amz-security-token" + + // The AWS authorization header name for the auto-generated date. + awsDateHeader = "x-amz-date" + + awsTimeFormatLong = "20060102T150405Z" + awsTimeFormatShort = "20060102" +) + +func getSha256(input []byte) (string, error) { + hash := sha256.New() + if _, err := hash.Write(input); err != nil { + return "", err + } + return hex.EncodeToString(hash.Sum(nil)), nil +} + +func getHmacSha256(key, input []byte) ([]byte, error) { + hash := hmac.New(sha256.New, key) + if _, err := hash.Write(input); err != nil { + return nil, err + } + return hash.Sum(nil), nil +} + +func cloneRequest(r *http.Request) *http.Request { + r2 := new(http.Request) + *r2 = *r + if r.Header != nil { + r2.Header = make(http.Header, len(r.Header)) + + // Find total number of values. + headerCount := 0 + for _, headerValues := range r.Header { + headerCount += len(headerValues) + } + copiedHeaders := make([]string, headerCount) // shared backing array for headers' values + + for headerKey, headerValues := range r.Header { + headerCount = copy(copiedHeaders, headerValues) + r2.Header[headerKey] = copiedHeaders[:headerCount:headerCount] + copiedHeaders = copiedHeaders[headerCount:] + } + } + return r2 +} + +func canonicalPath(req *http.Request) string { + result := req.URL.EscapedPath() + if result == "" { + return "/" + } + return path.Clean(result) +} + +func canonicalQuery(req *http.Request) string { + queryValues := req.URL.Query() + for queryKey := range queryValues { + sort.Strings(queryValues[queryKey]) + } + return queryValues.Encode() +} + +func canonicalHeaders(req *http.Request) (string, string) { + // Header keys need to be sorted alphabetically. + var headers []string + lowerCaseHeaders := make(http.Header) + for k, v := range req.Header { + k := strings.ToLower(k) + if _, ok := lowerCaseHeaders[k]; ok { + // include additional values + lowerCaseHeaders[k] = append(lowerCaseHeaders[k], v...) + } else { + headers = append(headers, k) + lowerCaseHeaders[k] = v + } + } + sort.Strings(headers) + + var fullHeaders bytes.Buffer + for _, header := range headers { + headerValue := strings.Join(lowerCaseHeaders[header], ",") + fullHeaders.WriteString(header) + fullHeaders.WriteRune(':') + fullHeaders.WriteString(headerValue) + fullHeaders.WriteRune('\n') + } + + return strings.Join(headers, ";"), fullHeaders.String() +} + +func requestDataHash(req *http.Request) (string, error) { + var requestData []byte + if req.Body != nil { + requestBody, err := req.GetBody() + if err != nil { + return "", err + } + defer requestBody.Close() + + requestData, err = ioutil.ReadAll(io.LimitReader(requestBody, 1<<20)) + if err != nil { + return "", err + } + } + + return getSha256(requestData) +} + +func requestHost(req *http.Request) string { + if req.Host != "" { + return req.Host + } + return req.URL.Host +} + +func canonicalRequest(req *http.Request, canonicalHeaderColumns, canonicalHeaderData string) (string, error) { + dataHash, err := requestDataHash(req) + if err != nil { + return "", err + } + + return fmt.Sprintf("%s\n%s\n%s\n%s\n%s\n%s", req.Method, canonicalPath(req), canonicalQuery(req), canonicalHeaderData, canonicalHeaderColumns, dataHash), nil +} + +// SignRequest adds the appropriate headers to an http.Request +// or returns an error if something prevented this. +func (rs *awsRequestSigner) SignRequest(req *http.Request) error { + signedRequest := cloneRequest(req) + timestamp := now() + + signedRequest.Header.Add("host", requestHost(req)) + + if rs.AwsSecurityCredentials.SecurityToken != "" { + signedRequest.Header.Add(awsSecurityTokenHeader, rs.AwsSecurityCredentials.SecurityToken) + } + + if signedRequest.Header.Get("date") == "" { + signedRequest.Header.Add(awsDateHeader, timestamp.Format(awsTimeFormatLong)) + } + + authorizationCode, err := rs.generateAuthentication(signedRequest, timestamp) + if err != nil { + return err + } + signedRequest.Header.Set("Authorization", authorizationCode) + + req.Header = signedRequest.Header + return nil +} + +func (rs *awsRequestSigner) generateAuthentication(req *http.Request, timestamp time.Time) (string, error) { + canonicalHeaderColumns, canonicalHeaderData := canonicalHeaders(req) + + dateStamp := timestamp.Format(awsTimeFormatShort) + serviceName := "" + if splitHost := strings.Split(requestHost(req), "."); len(splitHost) > 0 { + serviceName = splitHost[0] + } + + credentialScope := fmt.Sprintf("%s/%s/%s/%s", dateStamp, rs.RegionName, serviceName, awsRequestType) + + requestString, err := canonicalRequest(req, canonicalHeaderColumns, canonicalHeaderData) + if err != nil { + return "", err + } + requestHash, err := getSha256([]byte(requestString)) + if err != nil { + return "", err + } + + stringToSign := fmt.Sprintf("%s\n%s\n%s\n%s", awsAlgorithm, timestamp.Format(awsTimeFormatLong), credentialScope, requestHash) + + signingKey := []byte("AWS4" + rs.AwsSecurityCredentials.SecretAccessKey) + for _, signingInput := range []string{ + dateStamp, rs.RegionName, serviceName, awsRequestType, stringToSign, + } { + signingKey, err = getHmacSha256(signingKey, []byte(signingInput)) + if err != nil { + return "", err + } + } + + return fmt.Sprintf("%s Credential=%s/%s, SignedHeaders=%s, Signature=%s", awsAlgorithm, rs.AwsSecurityCredentials.AccessKeyID, credentialScope, canonicalHeaderColumns, hex.EncodeToString(signingKey)), nil +} + +type awsCredentialSource struct { + EnvironmentID string + RegionURL string + RegionalCredVerificationURL string + CredVerificationURL string + TargetResource string + requestSigner *awsRequestSigner + region string + ctx context.Context + client *http.Client +} + +type awsRequestHeader struct { + Key string `json:"key"` + Value string `json:"value"` +} + +type awsRequest struct { + URL string `json:"url"` + Method string `json:"method"` + Headers []awsRequestHeader `json:"headers"` +} + +func (cs awsCredentialSource) doRequest(req *http.Request) (*http.Response, error) { + if cs.client == nil { + cs.client = oauth2.NewClient(cs.ctx, nil) + } + return cs.client.Do(req.WithContext(cs.ctx)) +} + +func (cs awsCredentialSource) subjectToken() (string, error) { + if cs.requestSigner == nil { + awsSecurityCredentials, err := cs.getSecurityCredentials() + if err != nil { + return "", err + } + + if cs.region, err = cs.getRegion(); err != nil { + return "", err + } + + cs.requestSigner = &awsRequestSigner{ + RegionName: cs.region, + AwsSecurityCredentials: awsSecurityCredentials, + } + } + + // Generate the signed request to AWS STS GetCallerIdentity API. + // Use the required regional endpoint. Otherwise, the request will fail. + req, err := http.NewRequest("POST", strings.Replace(cs.RegionalCredVerificationURL, "{region}", cs.region, 1), nil) + if err != nil { + return "", err + } + // The full, canonical resource name of the workload identity pool + // provider, with or without the HTTPS prefix. + // Including this header as part of the signature is recommended to + // ensure data integrity. + if cs.TargetResource != "" { + req.Header.Add("x-goog-cloud-target-resource", cs.TargetResource) + } + cs.requestSigner.SignRequest(req) + + /* + The GCP STS endpoint expects the headers to be formatted as: + # [ + # {key: 'x-amz-date', value: '...'}, + # {key: 'Authorization', value: '...'}, + # ... + # ] + # And then serialized as: + # quote(json.dumps({ + # url: '...', + # method: 'POST', + # headers: [{key: 'x-amz-date', value: '...'}, ...] + # })) + */ + + awsSignedReq := awsRequest{ + URL: req.URL.String(), + Method: "POST", + } + for headerKey, headerList := range req.Header { + for _, headerValue := range headerList { + awsSignedReq.Headers = append(awsSignedReq.Headers, awsRequestHeader{ + Key: headerKey, + Value: headerValue, + }) + } + } + sort.Slice(awsSignedReq.Headers, func(i, j int) bool { + headerCompare := strings.Compare(awsSignedReq.Headers[i].Key, awsSignedReq.Headers[j].Key) + if headerCompare == 0 { + return strings.Compare(awsSignedReq.Headers[i].Value, awsSignedReq.Headers[j].Value) < 0 + } + return headerCompare < 0 + }) + + result, err := json.Marshal(awsSignedReq) + if err != nil { + return "", err + } + return url.QueryEscape(string(result)), nil +} + +func (cs *awsCredentialSource) getRegion() (string, error) { + if envAwsRegion := getenv("AWS_REGION"); envAwsRegion != "" { + return envAwsRegion, nil + } + + if cs.RegionURL == "" { + return "", errors.New("oauth2/google: unable to determine AWS region") + } + + req, err := http.NewRequest("GET", cs.RegionURL, nil) + if err != nil { + return "", err + } + + resp, err := cs.doRequest(req) + if err != nil { + return "", err + } + defer resp.Body.Close() + + respBody, err := ioutil.ReadAll(io.LimitReader(resp.Body, 1<<20)) + if err != nil { + return "", err + } + + if resp.StatusCode != 200 { + return "", fmt.Errorf("oauth2/google: unable to retrieve AWS region - %s", string(respBody)) + } + + // This endpoint will return the region in format: us-east-2b. + // Only the us-east-2 part should be used. + respBodyEnd := 0 + if len(respBody) > 1 { + respBodyEnd = len(respBody) - 1 + } + return string(respBody[:respBodyEnd]), nil +} + +func (cs *awsCredentialSource) getSecurityCredentials() (result awsSecurityCredentials, err error) { + if accessKeyID := getenv("AWS_ACCESS_KEY_ID"); accessKeyID != "" { + if secretAccessKey := getenv("AWS_SECRET_ACCESS_KEY"); secretAccessKey != "" { + return awsSecurityCredentials{ + AccessKeyID: accessKeyID, + SecretAccessKey: secretAccessKey, + SecurityToken: getenv("AWS_SESSION_TOKEN"), + }, nil + } + } + + roleName, err := cs.getMetadataRoleName() + if err != nil { + return + } + + credentials, err := cs.getMetadataSecurityCredentials(roleName) + if err != nil { + return + } + + if credentials.AccessKeyID == "" { + return result, errors.New("oauth2/google: missing AccessKeyId credential") + } + + if credentials.SecretAccessKey == "" { + return result, errors.New("oauth2/google: missing SecretAccessKey credential") + } + + return credentials, nil +} + +func (cs *awsCredentialSource) getMetadataSecurityCredentials(roleName string) (awsSecurityCredentials, error) { + var result awsSecurityCredentials + + req, err := http.NewRequest("GET", fmt.Sprintf("%s/%s", cs.CredVerificationURL, roleName), nil) + if err != nil { + return result, err + } + req.Header.Add("Content-Type", "application/json") + + resp, err := cs.doRequest(req) + if err != nil { + return result, err + } + defer resp.Body.Close() + + respBody, err := ioutil.ReadAll(io.LimitReader(resp.Body, 1<<20)) + if err != nil { + return result, err + } + + if resp.StatusCode != 200 { + return result, fmt.Errorf("oauth2/google: unable to retrieve AWS security credentials - %s", string(respBody)) + } + + err = json.Unmarshal(respBody, &result) + return result, err +} + +func (cs *awsCredentialSource) getMetadataRoleName() (string, error) { + if cs.CredVerificationURL == "" { + return "", errors.New("oauth2/google: unable to determine the AWS metadata server security credentials endpoint") + } + + req, err := http.NewRequest("GET", cs.CredVerificationURL, nil) + if err != nil { + return "", err + } + + resp, err := cs.doRequest(req) + if err != nil { + return "", err + } + defer resp.Body.Close() + + respBody, err := ioutil.ReadAll(io.LimitReader(resp.Body, 1<<20)) + if err != nil { + return "", err + } + + if resp.StatusCode != 200 { + return "", fmt.Errorf("oauth2/google: unable to retrieve AWS role name - %s", string(respBody)) + } + + return string(respBody), nil +} diff --git a/vendor/golang.org/x/oauth2/google/internal/externalaccount/basecredentials.go b/vendor/golang.org/x/oauth2/google/internal/externalaccount/basecredentials.go new file mode 100644 index 0000000000..1a6e93cec7 --- /dev/null +++ b/vendor/golang.org/x/oauth2/google/internal/externalaccount/basecredentials.go @@ -0,0 +1,163 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package externalaccount + +import ( + "context" + "fmt" + "golang.org/x/oauth2" + "net/http" + "strconv" + "time" +) + +// now aliases time.Now for testing +var now = func() time.Time { + return time.Now().UTC() +} + +// Config stores the configuration for fetching tokens with external credentials. +type Config struct { + Audience string + SubjectTokenType string + TokenURL string + TokenInfoURL string + ServiceAccountImpersonationURL string + ClientSecret string + ClientID string + CredentialSource CredentialSource + QuotaProjectID string + Scopes []string +} + +// TokenSource Returns an external account TokenSource struct. This is to be called by package google to construct a google.Credentials. +func (c *Config) TokenSource(ctx context.Context) oauth2.TokenSource { + ts := tokenSource{ + ctx: ctx, + conf: c, + } + if c.ServiceAccountImpersonationURL == "" { + return oauth2.ReuseTokenSource(nil, ts) + } + scopes := c.Scopes + ts.conf.Scopes = []string{"https://www.googleapis.com/auth/cloud-platform"} + imp := impersonateTokenSource{ + ctx: ctx, + url: c.ServiceAccountImpersonationURL, + scopes: scopes, + ts: oauth2.ReuseTokenSource(nil, ts), + } + return oauth2.ReuseTokenSource(nil, imp) +} + +// Subject token file types. +const ( + fileTypeText = "text" + fileTypeJSON = "json" +) + +type format struct { + // Type is either "text" or "json". When not provided "text" type is assumed. + Type string `json:"type"` + // SubjectTokenFieldName is only required for JSON format. This would be "access_token" for azure. + SubjectTokenFieldName string `json:"subject_token_field_name"` +} + +// CredentialSource stores the information necessary to retrieve the credentials for the STS exchange. +type CredentialSource struct { + File string `json:"file"` + + URL string `json:"url"` + Headers map[string]string `json:"headers"` + + EnvironmentID string `json:"environment_id"` + RegionURL string `json:"region_url"` + RegionalCredVerificationURL string `json:"regional_cred_verification_url"` + CredVerificationURL string `json:"cred_verification_url"` + Format format `json:"format"` +} + +// parse determines the type of CredentialSource needed +func (c *Config) parse(ctx context.Context) (baseCredentialSource, error) { + if len(c.CredentialSource.EnvironmentID) > 3 && c.CredentialSource.EnvironmentID[:3] == "aws" { + if awsVersion, err := strconv.Atoi(c.CredentialSource.EnvironmentID[3:]); err == nil { + if awsVersion != 1 { + return nil, fmt.Errorf("oauth2/google: aws version '%d' is not supported in the current build", awsVersion) + } + return awsCredentialSource{ + EnvironmentID: c.CredentialSource.EnvironmentID, + RegionURL: c.CredentialSource.RegionURL, + RegionalCredVerificationURL: c.CredentialSource.RegionalCredVerificationURL, + CredVerificationURL: c.CredentialSource.URL, + TargetResource: c.Audience, + ctx: ctx, + }, nil + } + } else if c.CredentialSource.File != "" { + return fileCredentialSource{File: c.CredentialSource.File, Format: c.CredentialSource.Format}, nil + } else if c.CredentialSource.URL != "" { + return urlCredentialSource{URL: c.CredentialSource.URL, Headers: c.CredentialSource.Headers, Format: c.CredentialSource.Format, ctx: ctx}, nil + } + return nil, fmt.Errorf("oauth2/google: unable to parse credential source") +} + +type baseCredentialSource interface { + subjectToken() (string, error) +} + +// tokenSource is the source that handles external credentials. +type tokenSource struct { + ctx context.Context + conf *Config +} + +// Token allows tokenSource to conform to the oauth2.TokenSource interface. +func (ts tokenSource) Token() (*oauth2.Token, error) { + conf := ts.conf + + credSource, err := conf.parse(ts.ctx) + if err != nil { + return nil, err + } + subjectToken, err := credSource.subjectToken() + + if err != nil { + return nil, err + } + stsRequest := stsTokenExchangeRequest{ + GrantType: "urn:ietf:params:oauth:grant-type:token-exchange", + Audience: conf.Audience, + Scope: conf.Scopes, + RequestedTokenType: "urn:ietf:params:oauth:token-type:access_token", + SubjectToken: subjectToken, + SubjectTokenType: conf.SubjectTokenType, + } + header := make(http.Header) + header.Add("Content-Type", "application/x-www-form-urlencoded") + clientAuth := clientAuthentication{ + AuthStyle: oauth2.AuthStyleInHeader, + ClientID: conf.ClientID, + ClientSecret: conf.ClientSecret, + } + stsResp, err := exchangeToken(ts.ctx, conf.TokenURL, &stsRequest, clientAuth, header, nil) + if err != nil { + return nil, err + } + + accessToken := &oauth2.Token{ + AccessToken: stsResp.AccessToken, + TokenType: stsResp.TokenType, + } + if stsResp.ExpiresIn < 0 { + return nil, fmt.Errorf("oauth2/google: got invalid expiry from security token service") + } else if stsResp.ExpiresIn >= 0 { + accessToken.Expiry = now().Add(time.Duration(stsResp.ExpiresIn) * time.Second) + } + + if stsResp.RefreshToken != "" { + accessToken.RefreshToken = stsResp.RefreshToken + } + return accessToken, nil +} diff --git a/vendor/golang.org/x/oauth2/google/internal/externalaccount/clientauth.go b/vendor/golang.org/x/oauth2/google/internal/externalaccount/clientauth.go new file mode 100644 index 0000000000..feccf8b68e --- /dev/null +++ b/vendor/golang.org/x/oauth2/google/internal/externalaccount/clientauth.go @@ -0,0 +1,41 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package externalaccount + +import ( + "encoding/base64" + "golang.org/x/oauth2" + "net/http" + "net/url" +) + +// clientAuthentication represents an OAuth client ID and secret and the mechanism for passing these credentials as stated in rfc6749#2.3.1. +type clientAuthentication struct { + // AuthStyle can be either basic or request-body + AuthStyle oauth2.AuthStyle + ClientID string + ClientSecret string +} + +func (c *clientAuthentication) InjectAuthentication(values url.Values, headers http.Header) { + if c.ClientID == "" || c.ClientSecret == "" || values == nil || headers == nil { + return + } + + switch c.AuthStyle { + case oauth2.AuthStyleInHeader: // AuthStyleInHeader corresponds to basic authentication as defined in rfc7617#2 + plainHeader := c.ClientID + ":" + c.ClientSecret + headers.Add("Authorization", "Basic "+base64.StdEncoding.EncodeToString([]byte(plainHeader))) + case oauth2.AuthStyleInParams: // AuthStyleInParams corresponds to request-body authentication with ClientID and ClientSecret in the message body. + values.Set("client_id", c.ClientID) + values.Set("client_secret", c.ClientSecret) + case oauth2.AuthStyleAutoDetect: + values.Set("client_id", c.ClientID) + values.Set("client_secret", c.ClientSecret) + default: + values.Set("client_id", c.ClientID) + values.Set("client_secret", c.ClientSecret) + } +} diff --git a/vendor/golang.org/x/oauth2/google/internal/externalaccount/err.go b/vendor/golang.org/x/oauth2/google/internal/externalaccount/err.go new file mode 100644 index 0000000000..233a78cef2 --- /dev/null +++ b/vendor/golang.org/x/oauth2/google/internal/externalaccount/err.go @@ -0,0 +1,18 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package externalaccount + +import "fmt" + +// Error for handling OAuth related error responses as stated in rfc6749#5.2. +type Error struct { + Code string + URI string + Description string +} + +func (err *Error) Error() string { + return fmt.Sprintf("got error code %s from %s: %s", err.Code, err.URI, err.Description) +} diff --git a/vendor/golang.org/x/oauth2/google/internal/externalaccount/filecredsource.go b/vendor/golang.org/x/oauth2/google/internal/externalaccount/filecredsource.go new file mode 100644 index 0000000000..e953ddb473 --- /dev/null +++ b/vendor/golang.org/x/oauth2/google/internal/externalaccount/filecredsource.go @@ -0,0 +1,57 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package externalaccount + +import ( + "bytes" + "encoding/json" + "errors" + "fmt" + "io" + "io/ioutil" + "os" +) + +type fileCredentialSource struct { + File string + Format format +} + +func (cs fileCredentialSource) subjectToken() (string, error) { + tokenFile, err := os.Open(cs.File) + if err != nil { + return "", fmt.Errorf("oauth2/google: failed to open credential file %q", cs.File) + } + defer tokenFile.Close() + tokenBytes, err := ioutil.ReadAll(io.LimitReader(tokenFile, 1<<20)) + if err != nil { + return "", fmt.Errorf("oauth2/google: failed to read credential file: %v", err) + } + tokenBytes = bytes.TrimSpace(tokenBytes) + switch cs.Format.Type { + case "json": + jsonData := make(map[string]interface{}) + err = json.Unmarshal(tokenBytes, &jsonData) + if err != nil { + return "", fmt.Errorf("oauth2/google: failed to unmarshal subject token file: %v", err) + } + val, ok := jsonData[cs.Format.SubjectTokenFieldName] + if !ok { + return "", errors.New("oauth2/google: provided subject_token_field_name not found in credentials") + } + token, ok := val.(string) + if !ok { + return "", errors.New("oauth2/google: improperly formatted subject token") + } + return token, nil + case "text": + return string(tokenBytes), nil + case "": + return string(tokenBytes), nil + default: + return "", errors.New("oauth2/google: invalid credential_source file format type") + } + +} diff --git a/vendor/golang.org/x/oauth2/google/internal/externalaccount/impersonate.go b/vendor/golang.org/x/oauth2/google/internal/externalaccount/impersonate.go new file mode 100644 index 0000000000..1d29c467f7 --- /dev/null +++ b/vendor/golang.org/x/oauth2/google/internal/externalaccount/impersonate.go @@ -0,0 +1,83 @@ +// Copyright 2021 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package externalaccount + +import ( + "bytes" + "context" + "encoding/json" + "fmt" + "golang.org/x/oauth2" + "io" + "io/ioutil" + "net/http" + "time" +) + +// generateAccesstokenReq is used for service account impersonation +type generateAccessTokenReq struct { + Delegates []string `json:"delegates,omitempty"` + Lifetime string `json:"lifetime,omitempty"` + Scope []string `json:"scope,omitempty"` +} + +type impersonateTokenResponse struct { + AccessToken string `json:"accessToken"` + ExpireTime string `json:"expireTime"` +} + +type impersonateTokenSource struct { + ctx context.Context + ts oauth2.TokenSource + + url string + scopes []string +} + +// Token performs the exchange to get a temporary service account +func (its impersonateTokenSource) Token() (*oauth2.Token, error) { + reqBody := generateAccessTokenReq{ + Lifetime: "3600s", + Scope: its.scopes, + } + b, err := json.Marshal(reqBody) + if err != nil { + return nil, fmt.Errorf("oauth2/google: unable to marshal request: %v", err) + } + client := oauth2.NewClient(its.ctx, its.ts) + req, err := http.NewRequest("POST", its.url, bytes.NewReader(b)) + if err != nil { + return nil, fmt.Errorf("oauth2/google: unable to create impersonation request: %v", err) + } + req = req.WithContext(its.ctx) + req.Header.Set("Content-Type", "application/json") + + resp, err := client.Do(req) + if err != nil { + return nil, fmt.Errorf("oauth2/google: unable to generate access token: %v", err) + } + defer resp.Body.Close() + body, err := ioutil.ReadAll(io.LimitReader(resp.Body, 1<<20)) + if err != nil { + return nil, fmt.Errorf("oauth2/google: unable to read body: %v", err) + } + if c := resp.StatusCode; c < 200 || c > 299 { + return nil, fmt.Errorf("oauth2/google: status code %d: %s", c, body) + } + + var accessTokenResp impersonateTokenResponse + if err := json.Unmarshal(body, &accessTokenResp); err != nil { + return nil, fmt.Errorf("oauth2/google: unable to parse response: %v", err) + } + expiry, err := time.Parse(time.RFC3339, accessTokenResp.ExpireTime) + if err != nil { + return nil, fmt.Errorf("oauth2/google: unable to parse expiry: %v", err) + } + return &oauth2.Token{ + AccessToken: accessTokenResp.AccessToken, + Expiry: expiry, + TokenType: "Bearer", + }, nil +} diff --git a/vendor/golang.org/x/oauth2/google/internal/externalaccount/sts_exchange.go b/vendor/golang.org/x/oauth2/google/internal/externalaccount/sts_exchange.go new file mode 100644 index 0000000000..a8a704bb41 --- /dev/null +++ b/vendor/golang.org/x/oauth2/google/internal/externalaccount/sts_exchange.go @@ -0,0 +1,104 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package externalaccount + +import ( + "context" + "encoding/json" + "fmt" + "io" + "io/ioutil" + "net/http" + "net/url" + "strconv" + "strings" + + "golang.org/x/oauth2" +) + +// exchangeToken performs an oauth2 token exchange with the provided endpoint. +// The first 4 fields are all mandatory. headers can be used to pass additional +// headers beyond the bare minimum required by the token exchange. options can +// be used to pass additional JSON-structured options to the remote server. +func exchangeToken(ctx context.Context, endpoint string, request *stsTokenExchangeRequest, authentication clientAuthentication, headers http.Header, options map[string]interface{}) (*stsTokenExchangeResponse, error) { + + client := oauth2.NewClient(ctx, nil) + + data := url.Values{} + data.Set("audience", request.Audience) + data.Set("grant_type", "urn:ietf:params:oauth:grant-type:token-exchange") + data.Set("requested_token_type", "urn:ietf:params:oauth:token-type:access_token") + data.Set("subject_token_type", request.SubjectTokenType) + data.Set("subject_token", request.SubjectToken) + data.Set("scope", strings.Join(request.Scope, " ")) + if options != nil { + opts, err := json.Marshal(options) + if err != nil { + return nil, fmt.Errorf("oauth2/google: failed to marshal additional options: %v", err) + } + data.Set("options", string(opts)) + } + + authentication.InjectAuthentication(data, headers) + encodedData := data.Encode() + + req, err := http.NewRequest("POST", endpoint, strings.NewReader(encodedData)) + if err != nil { + return nil, fmt.Errorf("oauth2/google: failed to properly build http request: %v", err) + + } + req = req.WithContext(ctx) + for key, list := range headers { + for _, val := range list { + req.Header.Add(key, val) + } + } + req.Header.Add("Content-Length", strconv.Itoa(len(encodedData))) + + resp, err := client.Do(req) + + if err != nil { + return nil, fmt.Errorf("oauth2/google: invalid response from Secure Token Server: %v", err) + } + defer resp.Body.Close() + + body, err := ioutil.ReadAll(io.LimitReader(resp.Body, 1<<20)) + if c := resp.StatusCode; c < 200 || c > 299 { + return nil, fmt.Errorf("oauth2/google: status code %d: %s", c, body) + } + var stsResp stsTokenExchangeResponse + err = json.Unmarshal(body, &stsResp) + if err != nil { + return nil, fmt.Errorf("oauth2/google: failed to unmarshal response body from Secure Token Server: %v", err) + + } + + return &stsResp, nil +} + +// stsTokenExchangeRequest contains fields necessary to make an oauth2 token exchange. +type stsTokenExchangeRequest struct { + ActingParty struct { + ActorToken string + ActorTokenType string + } + GrantType string + Resource string + Audience string + Scope []string + RequestedTokenType string + SubjectToken string + SubjectTokenType string +} + +// stsTokenExchangeResponse is used to decode the remote server response during an oauth2 token exchange. +type stsTokenExchangeResponse struct { + AccessToken string `json:"access_token"` + IssuedTokenType string `json:"issued_token_type"` + TokenType string `json:"token_type"` + ExpiresIn int `json:"expires_in"` + Scope string `json:"scope"` + RefreshToken string `json:"refresh_token"` +} diff --git a/vendor/golang.org/x/oauth2/google/internal/externalaccount/urlcredsource.go b/vendor/golang.org/x/oauth2/google/internal/externalaccount/urlcredsource.go new file mode 100644 index 0000000000..91b8f2002a --- /dev/null +++ b/vendor/golang.org/x/oauth2/google/internal/externalaccount/urlcredsource.go @@ -0,0 +1,74 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package externalaccount + +import ( + "context" + "encoding/json" + "errors" + "fmt" + "golang.org/x/oauth2" + "io" + "io/ioutil" + "net/http" +) + +type urlCredentialSource struct { + URL string + Headers map[string]string + Format format + ctx context.Context +} + +func (cs urlCredentialSource) subjectToken() (string, error) { + client := oauth2.NewClient(cs.ctx, nil) + req, err := http.NewRequest("GET", cs.URL, nil) + if err != nil { + return "", fmt.Errorf("oauth2/google: HTTP request for URL-sourced credential failed: %v", err) + } + req = req.WithContext(cs.ctx) + + for key, val := range cs.Headers { + req.Header.Add(key, val) + } + resp, err := client.Do(req) + if err != nil { + return "", fmt.Errorf("oauth2/google: invalid response when retrieving subject token: %v", err) + } + defer resp.Body.Close() + + respBody, err := ioutil.ReadAll(io.LimitReader(resp.Body, 1<<20)) + if err != nil { + return "", fmt.Errorf("oauth2/google: invalid body in subject token URL query: %v", err) + } + if c := resp.StatusCode; c < 200 || c > 299 { + return "", fmt.Errorf("oauth2/google: status code %d: %s", c, respBody) + } + + switch cs.Format.Type { + case "json": + jsonData := make(map[string]interface{}) + err = json.Unmarshal(respBody, &jsonData) + if err != nil { + return "", fmt.Errorf("oauth2/google: failed to unmarshal subject token file: %v", err) + } + val, ok := jsonData[cs.Format.SubjectTokenFieldName] + if !ok { + return "", errors.New("oauth2/google: provided subject_token_field_name not found in credentials") + } + token, ok := val.(string) + if !ok { + return "", errors.New("oauth2/google: improperly formatted subject token") + } + return token, nil + case "text": + return string(respBody), nil + case "": + return string(respBody), nil + default: + return "", errors.New("oauth2/google: invalid credential_source file format type") + } + +} diff --git a/vendor/golang.org/x/oauth2/internal/client_appengine.go b/vendor/golang.org/x/oauth2/internal/client_appengine.go index 7434871880..e1755d1d9a 100644 --- a/vendor/golang.org/x/oauth2/internal/client_appengine.go +++ b/vendor/golang.org/x/oauth2/internal/client_appengine.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build appengine // +build appengine package internal diff --git a/vendor/golang.org/x/sys/unix/ifreq_linux.go b/vendor/golang.org/x/sys/unix/ifreq_linux.go new file mode 100644 index 0000000000..fd3eeccc3c --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ifreq_linux.go @@ -0,0 +1,109 @@ +// Copyright 2021 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux +// +build linux + +package unix + +import ( + "bytes" + "unsafe" +) + +// Helpers for dealing with ifreq since it contains a union and thus requires a +// lot of unsafe.Pointer casts to use properly. + +// An Ifreq is a type-safe wrapper around the raw ifreq struct. An Ifreq +// contains an interface name and a union of arbitrary data which can be +// accessed using the Ifreq's methods. To create an Ifreq, use the NewIfreq +// function. +// +// Use the Name method to access the stored interface name. The union data +// fields can be get and set using the following methods: +// - Uint16/SetUint16: flags +// - Uint32/SetUint32: ifindex, metric, mtu +type Ifreq struct{ raw ifreq } + +// NewIfreq creates an Ifreq with the input network interface name after +// validating the name does not exceed IFNAMSIZ-1 (trailing NULL required) +// bytes. +func NewIfreq(name string) (*Ifreq, error) { + // Leave room for terminating NULL byte. + if len(name) >= IFNAMSIZ { + return nil, EINVAL + } + + var ifr ifreq + copy(ifr.Ifrn[:], name) + + return &Ifreq{raw: ifr}, nil +} + +// TODO(mdlayher): get/set methods for sockaddr, char array, etc. + +// Name returns the interface name associated with the Ifreq. +func (ifr *Ifreq) Name() string { + // BytePtrToString requires a NULL terminator or the program may crash. If + // one is not present, just return the empty string. + if !bytes.Contains(ifr.raw.Ifrn[:], []byte{0x00}) { + return "" + } + + return BytePtrToString(&ifr.raw.Ifrn[0]) +} + +// Uint16 returns the Ifreq union data as a C short/Go uint16 value. +func (ifr *Ifreq) Uint16() uint16 { + return *(*uint16)(unsafe.Pointer(&ifr.raw.Ifru[:2][0])) +} + +// SetUint16 sets a C short/Go uint16 value as the Ifreq's union data. +func (ifr *Ifreq) SetUint16(v uint16) { + ifr.clear() + *(*uint16)(unsafe.Pointer(&ifr.raw.Ifru[:2][0])) = v +} + +// Uint32 returns the Ifreq union data as a C int/Go uint32 value. +func (ifr *Ifreq) Uint32() uint32 { + return *(*uint32)(unsafe.Pointer(&ifr.raw.Ifru[:4][0])) +} + +// SetUint32 sets a C int/Go uint32 value as the Ifreq's union data. +func (ifr *Ifreq) SetUint32(v uint32) { + ifr.clear() + *(*uint32)(unsafe.Pointer(&ifr.raw.Ifru[:4][0])) = v +} + +// clear zeroes the ifreq's union field to prevent trailing garbage data from +// being sent to the kernel if an ifreq is reused. +func (ifr *Ifreq) clear() { + for i := range ifr.raw.Ifru { + ifr.raw.Ifru[i] = 0 + } +} + +// TODO(mdlayher): export as IfreqData? For now we can provide helpers such as +// IoctlGetEthtoolDrvinfo which use these APIs under the hood. + +// An ifreqData is an Ifreq which carries pointer data. To produce an ifreqData, +// use the Ifreq.withData method. +type ifreqData struct { + name [IFNAMSIZ]byte + // A type separate from ifreq is required in order to comply with the + // unsafe.Pointer rules since the "pointer-ness" of data would not be + // preserved if it were cast into the byte array of a raw ifreq. + data unsafe.Pointer + // Pad to the same size as ifreq. + _ [len(ifreq{}.Ifru) - SizeofPtr]byte +} + +// withData produces an ifreqData with the pointer p set for ioctls which require +// arbitrary pointer data. +func (ifr Ifreq) withData(p unsafe.Pointer) ifreqData { + return ifreqData{ + name: ifr.raw.Ifrn, + data: p, + } +} diff --git a/vendor/golang.org/x/sys/unix/ioctl_linux.go b/vendor/golang.org/x/sys/unix/ioctl_linux.go index 48773f730a..1dadead21e 100644 --- a/vendor/golang.org/x/sys/unix/ioctl_linux.go +++ b/vendor/golang.org/x/sys/unix/ioctl_linux.go @@ -5,7 +5,6 @@ package unix import ( - "runtime" "unsafe" ) @@ -22,56 +21,42 @@ func IoctlRetInt(fd int, req uint) (int, error) { func IoctlGetUint32(fd int, req uint) (uint32, error) { var value uint32 - err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + err := ioctlPtr(fd, req, unsafe.Pointer(&value)) return value, err } func IoctlGetRTCTime(fd int) (*RTCTime, error) { var value RTCTime - err := ioctl(fd, RTC_RD_TIME, uintptr(unsafe.Pointer(&value))) + err := ioctlPtr(fd, RTC_RD_TIME, unsafe.Pointer(&value)) return &value, err } func IoctlSetRTCTime(fd int, value *RTCTime) error { - err := ioctl(fd, RTC_SET_TIME, uintptr(unsafe.Pointer(value))) - runtime.KeepAlive(value) - return err + return ioctlPtr(fd, RTC_SET_TIME, unsafe.Pointer(value)) } func IoctlGetRTCWkAlrm(fd int) (*RTCWkAlrm, error) { var value RTCWkAlrm - err := ioctl(fd, RTC_WKALM_RD, uintptr(unsafe.Pointer(&value))) + err := ioctlPtr(fd, RTC_WKALM_RD, unsafe.Pointer(&value)) return &value, err } func IoctlSetRTCWkAlrm(fd int, value *RTCWkAlrm) error { - err := ioctl(fd, RTC_WKALM_SET, uintptr(unsafe.Pointer(value))) - runtime.KeepAlive(value) - return err -} - -type ifreqEthtool struct { - name [IFNAMSIZ]byte - data unsafe.Pointer + return ioctlPtr(fd, RTC_WKALM_SET, unsafe.Pointer(value)) } // IoctlGetEthtoolDrvinfo fetches ethtool driver information for the network // device specified by ifname. func IoctlGetEthtoolDrvinfo(fd int, ifname string) (*EthtoolDrvinfo, error) { - // Leave room for terminating NULL byte. - if len(ifname) >= IFNAMSIZ { - return nil, EINVAL + ifr, err := NewIfreq(ifname) + if err != nil { + return nil, err } - value := EthtoolDrvinfo{ - Cmd: ETHTOOL_GDRVINFO, - } - ifreq := ifreqEthtool{ - data: unsafe.Pointer(&value), - } - copy(ifreq.name[:], ifname) - err := ioctl(fd, SIOCETHTOOL, uintptr(unsafe.Pointer(&ifreq))) - runtime.KeepAlive(ifreq) + value := EthtoolDrvinfo{Cmd: ETHTOOL_GDRVINFO} + ifrd := ifr.withData(unsafe.Pointer(&value)) + + err = ioctlIfreqData(fd, SIOCETHTOOL, &ifrd) return &value, err } @@ -80,7 +65,7 @@ func IoctlGetEthtoolDrvinfo(fd int, ifname string) (*EthtoolDrvinfo, error) { // https://www.kernel.org/doc/html/latest/watchdog/watchdog-api.html. func IoctlGetWatchdogInfo(fd int) (*WatchdogInfo, error) { var value WatchdogInfo - err := ioctl(fd, WDIOC_GETSUPPORT, uintptr(unsafe.Pointer(&value))) + err := ioctlPtr(fd, WDIOC_GETSUPPORT, unsafe.Pointer(&value)) return &value, err } @@ -88,6 +73,7 @@ func IoctlGetWatchdogInfo(fd int) (*WatchdogInfo, error) { // more information, see: // https://www.kernel.org/doc/html/latest/watchdog/watchdog-api.html. func IoctlWatchdogKeepalive(fd int) error { + // arg is ignored and not a pointer, so ioctl is fine instead of ioctlPtr. return ioctl(fd, WDIOC_KEEPALIVE, 0) } @@ -95,9 +81,7 @@ func IoctlWatchdogKeepalive(fd int) error { // range of data conveyed in value to the file associated with the file // descriptor destFd. See the ioctl_ficlonerange(2) man page for details. func IoctlFileCloneRange(destFd int, value *FileCloneRange) error { - err := ioctl(destFd, FICLONERANGE, uintptr(unsafe.Pointer(value))) - runtime.KeepAlive(value) - return err + return ioctlPtr(destFd, FICLONERANGE, unsafe.Pointer(value)) } // IoctlFileClone performs an FICLONE ioctl operation to clone the entire file @@ -148,7 +132,7 @@ func IoctlFileDedupeRange(srcFd int, value *FileDedupeRange) error { rawinfo.Reserved = value.Info[i].Reserved } - err := ioctl(srcFd, FIDEDUPERANGE, uintptr(unsafe.Pointer(&buf[0]))) + err := ioctlPtr(srcFd, FIDEDUPERANGE, unsafe.Pointer(&buf[0])) // Output for i := range value.Info { @@ -166,31 +150,47 @@ func IoctlFileDedupeRange(srcFd int, value *FileDedupeRange) error { } func IoctlHIDGetDesc(fd int, value *HIDRawReportDescriptor) error { - err := ioctl(fd, HIDIOCGRDESC, uintptr(unsafe.Pointer(value))) - runtime.KeepAlive(value) - return err + return ioctlPtr(fd, HIDIOCGRDESC, unsafe.Pointer(value)) } func IoctlHIDGetRawInfo(fd int) (*HIDRawDevInfo, error) { var value HIDRawDevInfo - err := ioctl(fd, HIDIOCGRAWINFO, uintptr(unsafe.Pointer(&value))) + err := ioctlPtr(fd, HIDIOCGRAWINFO, unsafe.Pointer(&value)) return &value, err } func IoctlHIDGetRawName(fd int) (string, error) { var value [_HIDIOCGRAWNAME_LEN]byte - err := ioctl(fd, _HIDIOCGRAWNAME, uintptr(unsafe.Pointer(&value[0]))) + err := ioctlPtr(fd, _HIDIOCGRAWNAME, unsafe.Pointer(&value[0])) return ByteSliceToString(value[:]), err } func IoctlHIDGetRawPhys(fd int) (string, error) { var value [_HIDIOCGRAWPHYS_LEN]byte - err := ioctl(fd, _HIDIOCGRAWPHYS, uintptr(unsafe.Pointer(&value[0]))) + err := ioctlPtr(fd, _HIDIOCGRAWPHYS, unsafe.Pointer(&value[0])) return ByteSliceToString(value[:]), err } func IoctlHIDGetRawUniq(fd int) (string, error) { var value [_HIDIOCGRAWUNIQ_LEN]byte - err := ioctl(fd, _HIDIOCGRAWUNIQ, uintptr(unsafe.Pointer(&value[0]))) + err := ioctlPtr(fd, _HIDIOCGRAWUNIQ, unsafe.Pointer(&value[0])) return ByteSliceToString(value[:]), err } + +// IoctlIfreq performs an ioctl using an Ifreq structure for input and/or +// output. See the netdevice(7) man page for details. +func IoctlIfreq(fd int, req uint, value *Ifreq) error { + // It is possible we will add more fields to *Ifreq itself later to prevent + // misuse, so pass the raw *ifreq directly. + return ioctlPtr(fd, req, unsafe.Pointer(&value.raw)) +} + +// TODO(mdlayher): export if and when IfreqData is exported. + +// ioctlIfreqData performs an ioctl using an ifreqData structure for input +// and/or output. See the netdevice(7) man page for details. +func ioctlIfreqData(fd int, req uint, value *ifreqData) error { + // The memory layout of IfreqData (type-safe) and ifreq (not type-safe) are + // identical so pass *IfreqData directly. + return ioctlPtr(fd, req, unsafe.Pointer(value)) +} diff --git a/vendor/golang.org/x/sys/unix/mkerrors.sh b/vendor/golang.org/x/sys/unix/mkerrors.sh index 6e6afcaa1d..2ed4b6d920 100644 --- a/vendor/golang.org/x/sys/unix/mkerrors.sh +++ b/vendor/golang.org/x/sys/unix/mkerrors.sh @@ -217,8 +217,6 @@ struct ltchars { #include #include #include -#include -#include #include #include #include diff --git a/vendor/golang.org/x/sys/unix/syscall_linux.go b/vendor/golang.org/x/sys/unix/syscall_linux.go index 41b91fdfba..43569fe7c5 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux.go @@ -66,11 +66,18 @@ func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { return fchmodat(dirfd, path, mode) } -//sys ioctl(fd int, req uint, arg uintptr) (err error) +//sys ioctl(fd int, req uint, arg uintptr) (err error) = SYS_IOCTL +//sys ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_IOCTL -// ioctl itself should not be exposed directly, but additional get/set -// functions for specific types are permissible. -// These are defined in ioctl.go and ioctl_linux.go. +// ioctl itself should not be exposed directly, but additional get/set functions +// for specific types are permissible. These are defined in ioctl.go and +// ioctl_linux.go. +// +// The third argument to ioctl is often a pointer but sometimes an integer. +// Callers should use ioctlPtr when the third argument is a pointer and ioctl +// when the third argument is an integer. +// +// TODO: some existing code incorrectly uses ioctl when it should use ioctlPtr. //sys Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) @@ -1859,7 +1866,7 @@ func Getpgrp() (pid int) { //sys Nanosleep(time *Timespec, leftover *Timespec) (err error) //sys PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) //sys PivotRoot(newroot string, putold string) (err error) = SYS_PIVOT_ROOT -//sysnb prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) = SYS_PRLIMIT64 +//sysnb Prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) = SYS_PRLIMIT64 //sys Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) //sys Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) = SYS_PSELECT6 //sys read(fd int, p []byte) (n int, err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_386.go b/vendor/golang.org/x/sys/unix/syscall_linux_386.go index b430536c8a..91317d749a 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_386.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_386.go @@ -105,7 +105,7 @@ const rlimInf32 = ^uint32(0) const rlimInf64 = ^uint64(0) func Getrlimit(resource int, rlim *Rlimit) (err error) { - err = prlimit(0, resource, nil, rlim) + err = Prlimit(0, resource, nil, rlim) if err != ENOSYS { return err } @@ -133,7 +133,7 @@ func Getrlimit(resource int, rlim *Rlimit) (err error) { //sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT func Setrlimit(resource int, rlim *Rlimit) (err error) { - err = prlimit(0, resource, rlim, nil) + err = Prlimit(0, resource, rlim, nil) if err != ENOSYS { return err } diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_arm.go b/vendor/golang.org/x/sys/unix/syscall_linux_arm.go index 39a864d4e9..b961a620e9 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_arm.go @@ -184,7 +184,7 @@ const rlimInf32 = ^uint32(0) const rlimInf64 = ^uint64(0) func Getrlimit(resource int, rlim *Rlimit) (err error) { - err = prlimit(0, resource, nil, rlim) + err = Prlimit(0, resource, nil, rlim) if err != ENOSYS { return err } @@ -212,7 +212,7 @@ func Getrlimit(resource int, rlim *Rlimit) (err error) { //sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT func Setrlimit(resource int, rlim *Rlimit) (err error) { - err = prlimit(0, resource, rlim, nil) + err = Prlimit(0, resource, rlim, nil) if err != ENOSYS { return err } diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go b/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go index 7f27ebf2fc..4b977ba44b 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go @@ -171,7 +171,7 @@ func Pipe2(p []int, flags int) (err error) { // Getrlimit prefers the prlimit64 system call. See issue 38604. func Getrlimit(resource int, rlim *Rlimit) error { - err := prlimit(0, resource, nil, rlim) + err := Prlimit(0, resource, nil, rlim) if err != ENOSYS { return err } @@ -180,7 +180,7 @@ func Getrlimit(resource int, rlim *Rlimit) error { // Setrlimit prefers the prlimit64 system call. See issue 38604. func Setrlimit(resource int, rlim *Rlimit) error { - err := prlimit(0, resource, rlim, nil) + err := Prlimit(0, resource, rlim, nil) if err != ENOSYS { return err } diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go b/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go index 3a5621e37f..21d74e2fbe 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go @@ -157,7 +157,7 @@ type rlimit32 struct { //sysnb getrlimit(resource int, rlim *rlimit32) (err error) = SYS_GETRLIMIT func Getrlimit(resource int, rlim *Rlimit) (err error) { - err = prlimit(0, resource, nil, rlim) + err = Prlimit(0, resource, nil, rlim) if err != ENOSYS { return err } @@ -185,7 +185,7 @@ func Getrlimit(resource int, rlim *Rlimit) (err error) { //sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT func Setrlimit(resource int, rlim *Rlimit) (err error) { - err = prlimit(0, resource, rlim, nil) + err = Prlimit(0, resource, rlim, nil) if err != ENOSYS { return err } diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_ppc.go b/vendor/golang.org/x/sys/unix/syscall_linux_ppc.go index cf0d36f76e..e475d09663 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_ppc.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_ppc.go @@ -143,7 +143,7 @@ const rlimInf32 = ^uint32(0) const rlimInf64 = ^uint64(0) func Getrlimit(resource int, rlim *Rlimit) (err error) { - err = prlimit(0, resource, nil, rlim) + err = Prlimit(0, resource, nil, rlim) if err != ENOSYS { return err } @@ -171,7 +171,7 @@ func Getrlimit(resource int, rlim *Rlimit) (err error) { //sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT func Setrlimit(resource int, rlim *Rlimit) (err error) { - err = prlimit(0, resource, rlim, nil) + err = Prlimit(0, resource, rlim, nil) if err != ENOSYS { return err } diff --git a/vendor/golang.org/x/sys/unix/syscall_solaris.go b/vendor/golang.org/x/sys/unix/syscall_solaris.go index 77fcde7c18..d2a6495c7e 100644 --- a/vendor/golang.org/x/sys/unix/syscall_solaris.go +++ b/vendor/golang.org/x/sys/unix/syscall_solaris.go @@ -13,7 +13,10 @@ package unix import ( + "fmt" + "os" "runtime" + "sync" "syscall" "unsafe" ) @@ -744,3 +747,240 @@ func Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, e func Munmap(b []byte) (err error) { return mapper.Munmap(b) } + +// Event Ports + +type fileObjCookie struct { + fobj *fileObj + cookie interface{} +} + +// EventPort provides a safe abstraction on top of Solaris/illumos Event Ports. +type EventPort struct { + port int + mu sync.Mutex + fds map[uintptr]interface{} + paths map[string]*fileObjCookie +} + +// PortEvent is an abstraction of the port_event C struct. +// Compare Source against PORT_SOURCE_FILE or PORT_SOURCE_FD +// to see if Path or Fd was the event source. The other will be +// uninitialized. +type PortEvent struct { + Cookie interface{} + Events int32 + Fd uintptr + Path string + Source uint16 + fobj *fileObj +} + +// NewEventPort creates a new EventPort including the +// underlying call to port_create(3c). +func NewEventPort() (*EventPort, error) { + port, err := port_create() + if err != nil { + return nil, err + } + e := &EventPort{ + port: port, + fds: make(map[uintptr]interface{}), + paths: make(map[string]*fileObjCookie), + } + return e, nil +} + +//sys port_create() (n int, err error) +//sys port_associate(port int, source int, object uintptr, events int, user *byte) (n int, err error) +//sys port_dissociate(port int, source int, object uintptr) (n int, err error) +//sys port_get(port int, pe *portEvent, timeout *Timespec) (n int, err error) +//sys port_getn(port int, pe *portEvent, max uint32, nget *uint32, timeout *Timespec) (n int, err error) + +// Close closes the event port. +func (e *EventPort) Close() error { + e.mu.Lock() + defer e.mu.Unlock() + e.fds = nil + e.paths = nil + return Close(e.port) +} + +// PathIsWatched checks to see if path is associated with this EventPort. +func (e *EventPort) PathIsWatched(path string) bool { + e.mu.Lock() + defer e.mu.Unlock() + _, found := e.paths[path] + return found +} + +// FdIsWatched checks to see if fd is associated with this EventPort. +func (e *EventPort) FdIsWatched(fd uintptr) bool { + e.mu.Lock() + defer e.mu.Unlock() + _, found := e.fds[fd] + return found +} + +// AssociatePath wraps port_associate(3c) for a filesystem path including +// creating the necessary file_obj from the provided stat information. +func (e *EventPort) AssociatePath(path string, stat os.FileInfo, events int, cookie interface{}) error { + e.mu.Lock() + defer e.mu.Unlock() + if _, found := e.paths[path]; found { + return fmt.Errorf("%v is already associated with this Event Port", path) + } + fobj, err := createFileObj(path, stat) + if err != nil { + return err + } + fCookie := &fileObjCookie{fobj, cookie} + _, err = port_associate(e.port, PORT_SOURCE_FILE, uintptr(unsafe.Pointer(fobj)), events, (*byte)(unsafe.Pointer(&fCookie.cookie))) + if err != nil { + return err + } + e.paths[path] = fCookie + return nil +} + +// DissociatePath wraps port_dissociate(3c) for a filesystem path. +func (e *EventPort) DissociatePath(path string) error { + e.mu.Lock() + defer e.mu.Unlock() + f, ok := e.paths[path] + if !ok { + return fmt.Errorf("%v is not associated with this Event Port", path) + } + _, err := port_dissociate(e.port, PORT_SOURCE_FILE, uintptr(unsafe.Pointer(f.fobj))) + if err != nil { + return err + } + delete(e.paths, path) + return nil +} + +// AssociateFd wraps calls to port_associate(3c) on file descriptors. +func (e *EventPort) AssociateFd(fd uintptr, events int, cookie interface{}) error { + e.mu.Lock() + defer e.mu.Unlock() + if _, found := e.fds[fd]; found { + return fmt.Errorf("%v is already associated with this Event Port", fd) + } + pcookie := &cookie + _, err := port_associate(e.port, PORT_SOURCE_FD, fd, events, (*byte)(unsafe.Pointer(pcookie))) + if err != nil { + return err + } + e.fds[fd] = pcookie + return nil +} + +// DissociateFd wraps calls to port_dissociate(3c) on file descriptors. +func (e *EventPort) DissociateFd(fd uintptr) error { + e.mu.Lock() + defer e.mu.Unlock() + _, ok := e.fds[fd] + if !ok { + return fmt.Errorf("%v is not associated with this Event Port", fd) + } + _, err := port_dissociate(e.port, PORT_SOURCE_FD, fd) + if err != nil { + return err + } + delete(e.fds, fd) + return nil +} + +func createFileObj(name string, stat os.FileInfo) (*fileObj, error) { + fobj := new(fileObj) + bs, err := ByteSliceFromString(name) + if err != nil { + return nil, err + } + fobj.Name = (*int8)(unsafe.Pointer(&bs[0])) + s := stat.Sys().(*syscall.Stat_t) + fobj.Atim.Sec = s.Atim.Sec + fobj.Atim.Nsec = s.Atim.Nsec + fobj.Mtim.Sec = s.Mtim.Sec + fobj.Mtim.Nsec = s.Mtim.Nsec + fobj.Ctim.Sec = s.Ctim.Sec + fobj.Ctim.Nsec = s.Ctim.Nsec + return fobj, nil +} + +// GetOne wraps port_get(3c) and returns a single PortEvent. +func (e *EventPort) GetOne(t *Timespec) (*PortEvent, error) { + pe := new(portEvent) + _, err := port_get(e.port, pe, t) + if err != nil { + return nil, err + } + p := new(PortEvent) + p.Events = pe.Events + p.Source = pe.Source + e.mu.Lock() + defer e.mu.Unlock() + switch pe.Source { + case PORT_SOURCE_FD: + p.Fd = uintptr(pe.Object) + cookie := (*interface{})(unsafe.Pointer(pe.User)) + p.Cookie = *cookie + delete(e.fds, p.Fd) + case PORT_SOURCE_FILE: + p.fobj = (*fileObj)(unsafe.Pointer(uintptr(pe.Object))) + p.Path = BytePtrToString((*byte)(unsafe.Pointer(p.fobj.Name))) + cookie := (*interface{})(unsafe.Pointer(pe.User)) + p.Cookie = *cookie + delete(e.paths, p.Path) + } + return p, nil +} + +// Pending wraps port_getn(3c) and returns how many events are pending. +func (e *EventPort) Pending() (int, error) { + var n uint32 = 0 + _, err := port_getn(e.port, nil, 0, &n, nil) + return int(n), err +} + +// Get wraps port_getn(3c) and fills a slice of PortEvent. +// It will block until either min events have been received +// or the timeout has been exceeded. It will return how many +// events were actually received along with any error information. +func (e *EventPort) Get(s []PortEvent, min int, timeout *Timespec) (int, error) { + if min == 0 { + return 0, fmt.Errorf("need to request at least one event or use Pending() instead") + } + if len(s) < min { + return 0, fmt.Errorf("len(s) (%d) is less than min events requested (%d)", len(s), min) + } + got := uint32(min) + max := uint32(len(s)) + var err error + ps := make([]portEvent, max, max) + _, err = port_getn(e.port, &ps[0], max, &got, timeout) + // got will be trustworthy with ETIME, but not any other error. + if err != nil && err != ETIME { + return 0, err + } + e.mu.Lock() + defer e.mu.Unlock() + for i := 0; i < int(got); i++ { + s[i].Events = ps[i].Events + s[i].Source = ps[i].Source + switch ps[i].Source { + case PORT_SOURCE_FD: + s[i].Fd = uintptr(ps[i].Object) + cookie := (*interface{})(unsafe.Pointer(ps[i].User)) + s[i].Cookie = *cookie + delete(e.fds, s[i].Fd) + case PORT_SOURCE_FILE: + s[i].fobj = (*fileObj)(unsafe.Pointer(uintptr(ps[i].Object))) + s[i].Path = BytePtrToString((*byte)(unsafe.Pointer(s[i].fobj.Name))) + cookie := (*interface{})(unsafe.Pointer(ps[i].User)) + s[i].Cookie = *cookie + delete(e.paths, s[i].Path) + } + } + return int(got), err +} diff --git a/vendor/golang.org/x/sys/unix/syscall_unix.go b/vendor/golang.org/x/sys/unix/syscall_unix.go index a7618ceb55..cf296a2433 100644 --- a/vendor/golang.org/x/sys/unix/syscall_unix.go +++ b/vendor/golang.org/x/sys/unix/syscall_unix.go @@ -313,6 +313,10 @@ func Recvfrom(fd int, p []byte, flags int) (n int, from Sockaddr, err error) { return } +func Send(s int, buf []byte, flags int) (err error) { + return sendto(s, buf, flags, nil, 0) +} + func Sendto(fd int, p []byte, flags int, to Sockaddr) (err error) { ptr, n, err := to.sockaddr() if err != nil { diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux.go b/vendor/golang.org/x/sys/unix/zerrors_linux.go index 52f5bbc14c..5ed10c4a0b 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux.go @@ -228,6 +228,8 @@ const ( BPF_OR = 0x40 BPF_PSEUDO_BTF_ID = 0x3 BPF_PSEUDO_CALL = 0x1 + BPF_PSEUDO_FUNC = 0x4 + BPF_PSEUDO_KFUNC_CALL = 0x2 BPF_PSEUDO_MAP_FD = 0x1 BPF_PSEUDO_MAP_VALUE = 0x2 BPF_RET = 0x6 @@ -475,6 +477,8 @@ const ( DM_LIST_VERSIONS = 0xc138fd0d DM_MAX_TYPE_NAME = 0x10 DM_NAME_LEN = 0x80 + DM_NAME_LIST_FLAG_DOESNT_HAVE_UUID = 0x2 + DM_NAME_LIST_FLAG_HAS_UUID = 0x1 DM_NOFLUSH_FLAG = 0x800 DM_PERSISTENT_DEV_FLAG = 0x8 DM_QUERY_INACTIVE_TABLE_FLAG = 0x1000 @@ -494,9 +498,9 @@ const ( DM_UUID_FLAG = 0x4000 DM_UUID_LEN = 0x81 DM_VERSION = 0xc138fd00 - DM_VERSION_EXTRA = "-ioctl (2021-02-01)" + DM_VERSION_EXTRA = "-ioctl (2021-03-22)" DM_VERSION_MAJOR = 0x4 - DM_VERSION_MINOR = 0x2c + DM_VERSION_MINOR = 0x2d DM_VERSION_PATCHLEVEL = 0x0 DT_BLK = 0x6 DT_CHR = 0x2 @@ -981,12 +985,6 @@ const ( HPFS_SUPER_MAGIC = 0xf995e849 HUGETLBFS_MAGIC = 0x958458f6 IBSHIFT = 0x10 - ICMPV6_FILTER = 0x1 - ICMPV6_FILTER_BLOCK = 0x1 - ICMPV6_FILTER_BLOCKOTHERS = 0x3 - ICMPV6_FILTER_PASS = 0x2 - ICMPV6_FILTER_PASSONLY = 0x4 - ICMP_FILTER = 0x1 ICRNL = 0x100 IFA_F_DADFAILED = 0x8 IFA_F_DEPRECATED = 0x20 @@ -1257,6 +1255,7 @@ const ( KEXEC_ARCH_PARISC = 0xf0000 KEXEC_ARCH_PPC = 0x140000 KEXEC_ARCH_PPC64 = 0x150000 + KEXEC_ARCH_RISCV = 0xf30000 KEXEC_ARCH_S390 = 0x160000 KEXEC_ARCH_SH = 0x2a0000 KEXEC_ARCH_X86_64 = 0x3e0000 @@ -1756,14 +1755,19 @@ const ( PERF_ATTR_SIZE_VER4 = 0x68 PERF_ATTR_SIZE_VER5 = 0x70 PERF_ATTR_SIZE_VER6 = 0x78 + PERF_ATTR_SIZE_VER7 = 0x80 PERF_AUX_FLAG_COLLISION = 0x8 + PERF_AUX_FLAG_CORESIGHT_FORMAT_CORESIGHT = 0x0 + PERF_AUX_FLAG_CORESIGHT_FORMAT_RAW = 0x100 PERF_AUX_FLAG_OVERWRITE = 0x2 PERF_AUX_FLAG_PARTIAL = 0x4 + PERF_AUX_FLAG_PMU_FORMAT_TYPE_MASK = 0xff00 PERF_AUX_FLAG_TRUNCATED = 0x1 PERF_FLAG_FD_CLOEXEC = 0x8 PERF_FLAG_FD_NO_GROUP = 0x1 PERF_FLAG_FD_OUTPUT = 0x2 PERF_FLAG_PID_CGROUP = 0x4 + PERF_HW_EVENT_MASK = 0xffffffff PERF_MAX_CONTEXTS_PER_STACK = 0x8 PERF_MAX_STACK_DEPTH = 0x7f PERF_MEM_BLK_ADDR = 0x4 @@ -1822,6 +1826,7 @@ const ( PERF_MEM_TLB_OS = 0x40 PERF_MEM_TLB_SHIFT = 0x1a PERF_MEM_TLB_WK = 0x20 + PERF_PMU_TYPE_SHIFT = 0x20 PERF_RECORD_KSYMBOL_FLAGS_UNREGISTER = 0x1 PERF_RECORD_MISC_COMM_EXEC = 0x2000 PERF_RECORD_MISC_CPUMODE_MASK = 0x7 @@ -1921,7 +1926,9 @@ const ( PR_PAC_APGAKEY = 0x10 PR_PAC_APIAKEY = 0x1 PR_PAC_APIBKEY = 0x2 + PR_PAC_GET_ENABLED_KEYS = 0x3d PR_PAC_RESET_KEYS = 0x36 + PR_PAC_SET_ENABLED_KEYS = 0x3c PR_SET_CHILD_SUBREAPER = 0x24 PR_SET_DUMPABLE = 0x4 PR_SET_ENDIAN = 0x14 @@ -2003,6 +2010,7 @@ const ( PTRACE_GETREGSET = 0x4204 PTRACE_GETSIGINFO = 0x4202 PTRACE_GETSIGMASK = 0x420a + PTRACE_GET_RSEQ_CONFIGURATION = 0x420f PTRACE_GET_SYSCALL_INFO = 0x420e PTRACE_INTERRUPT = 0x4207 PTRACE_KILL = 0x8 @@ -2163,6 +2171,7 @@ const ( RTM_DELNEIGH = 0x1d RTM_DELNETCONF = 0x51 RTM_DELNEXTHOP = 0x69 + RTM_DELNEXTHOPBUCKET = 0x75 RTM_DELNSID = 0x59 RTM_DELQDISC = 0x25 RTM_DELROUTE = 0x19 @@ -2193,6 +2202,7 @@ const ( RTM_GETNEIGHTBL = 0x42 RTM_GETNETCONF = 0x52 RTM_GETNEXTHOP = 0x6a + RTM_GETNEXTHOPBUCKET = 0x76 RTM_GETNSID = 0x5a RTM_GETQDISC = 0x26 RTM_GETROUTE = 0x1a @@ -2201,7 +2211,7 @@ const ( RTM_GETTCLASS = 0x2a RTM_GETTFILTER = 0x2e RTM_GETVLAN = 0x72 - RTM_MAX = 0x73 + RTM_MAX = 0x77 RTM_NEWACTION = 0x30 RTM_NEWADDR = 0x14 RTM_NEWADDRLABEL = 0x48 @@ -2215,6 +2225,7 @@ const ( RTM_NEWNEIGHTBL = 0x40 RTM_NEWNETCONF = 0x50 RTM_NEWNEXTHOP = 0x68 + RTM_NEWNEXTHOPBUCKET = 0x74 RTM_NEWNSID = 0x58 RTM_NEWNVLAN = 0x70 RTM_NEWPREFIX = 0x34 @@ -2224,8 +2235,8 @@ const ( RTM_NEWSTATS = 0x5c RTM_NEWTCLASS = 0x28 RTM_NEWTFILTER = 0x2c - RTM_NR_FAMILIES = 0x19 - RTM_NR_MSGTYPES = 0x64 + RTM_NR_FAMILIES = 0x1a + RTM_NR_MSGTYPES = 0x68 RTM_SETDCB = 0x4f RTM_SETLINK = 0x13 RTM_SETNEIGHTBL = 0x43 @@ -2253,6 +2264,7 @@ const ( RTPROT_MROUTED = 0x11 RTPROT_MRT = 0xa RTPROT_NTK = 0xf + RTPROT_OPENR = 0x63 RTPROT_OSPF = 0xbc RTPROT_RA = 0x9 RTPROT_REDIRECT = 0x1 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go index 09fc559ed2..cca248d1df 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go @@ -147,6 +147,7 @@ const ( NS_GET_USERNS = 0xb701 OLCUC = 0x2 ONLCR = 0x4 + OTPERASE = 0x400c4d19 OTPGETREGIONCOUNT = 0x40044d0e OTPGETREGIONINFO = 0x400c4d0f OTPLOCK = 0x800c4d10 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go index 75730cc22b..9521a4804a 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go @@ -147,6 +147,7 @@ const ( NS_GET_USERNS = 0xb701 OLCUC = 0x2 ONLCR = 0x4 + OTPERASE = 0x400c4d19 OTPGETREGIONCOUNT = 0x40044d0e OTPGETREGIONINFO = 0x400c4d0f OTPLOCK = 0x800c4d10 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go index 127cf17add..ddb40a40d3 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go @@ -145,6 +145,7 @@ const ( NS_GET_USERNS = 0xb701 OLCUC = 0x2 ONLCR = 0x4 + OTPERASE = 0x400c4d19 OTPGETREGIONCOUNT = 0x40044d0e OTPGETREGIONINFO = 0x400c4d0f OTPLOCK = 0x800c4d10 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go index 957ca1ff13..3df31e0d42 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go @@ -148,6 +148,7 @@ const ( NS_GET_USERNS = 0xb701 OLCUC = 0x2 ONLCR = 0x4 + OTPERASE = 0x400c4d19 OTPGETREGIONCOUNT = 0x40044d0e OTPGETREGIONINFO = 0x400c4d0f OTPLOCK = 0x800c4d10 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go index 314a2054fc..179c7d68de 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go @@ -145,6 +145,7 @@ const ( NS_GET_USERNS = 0x2000b701 OLCUC = 0x2 ONLCR = 0x4 + OTPERASE = 0x800c4d19 OTPGETREGIONCOUNT = 0x80044d0e OTPGETREGIONINFO = 0x800c4d0f OTPLOCK = 0x400c4d10 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go index 457e8de97d..84ab15a85d 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go @@ -145,6 +145,7 @@ const ( NS_GET_USERNS = 0x2000b701 OLCUC = 0x2 ONLCR = 0x4 + OTPERASE = 0x800c4d19 OTPGETREGIONCOUNT = 0x80044d0e OTPGETREGIONINFO = 0x800c4d0f OTPLOCK = 0x400c4d10 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go index 33cd28f6bd..6aa064da5e 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go @@ -145,6 +145,7 @@ const ( NS_GET_USERNS = 0x2000b701 OLCUC = 0x2 ONLCR = 0x4 + OTPERASE = 0x800c4d19 OTPGETREGIONCOUNT = 0x80044d0e OTPGETREGIONINFO = 0x800c4d0f OTPLOCK = 0x400c4d10 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go index 0e085ba147..960650f2b3 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go @@ -145,6 +145,7 @@ const ( NS_GET_USERNS = 0x2000b701 OLCUC = 0x2 ONLCR = 0x4 + OTPERASE = 0x800c4d19 OTPGETREGIONCOUNT = 0x80044d0e OTPGETREGIONINFO = 0x800c4d0f OTPLOCK = 0x400c4d10 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go index 1b5928cffb..7365221d09 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go @@ -147,6 +147,7 @@ const ( NS_GET_USERNS = 0x2000b701 OLCUC = 0x4 ONLCR = 0x2 + OTPERASE = 0x800c4d19 OTPGETREGIONCOUNT = 0x80044d0e OTPGETREGIONINFO = 0x800c4d0f OTPLOCK = 0x400c4d10 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go index f3a41d6ecb..5967db35c0 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go @@ -147,6 +147,7 @@ const ( NS_GET_USERNS = 0x2000b701 OLCUC = 0x4 ONLCR = 0x2 + OTPERASE = 0x800c4d19 OTPGETREGIONCOUNT = 0x80044d0e OTPGETREGIONINFO = 0x800c4d0f OTPLOCK = 0x400c4d10 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go index 6a5a555d5e..f88869849b 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go @@ -147,6 +147,7 @@ const ( NS_GET_USERNS = 0x2000b701 OLCUC = 0x4 ONLCR = 0x2 + OTPERASE = 0x800c4d19 OTPGETREGIONCOUNT = 0x80044d0e OTPGETREGIONINFO = 0x800c4d0f OTPLOCK = 0x400c4d10 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go index a4da67edbb..8048706f39 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go @@ -145,6 +145,7 @@ const ( NS_GET_USERNS = 0xb701 OLCUC = 0x2 ONLCR = 0x4 + OTPERASE = 0x400c4d19 OTPGETREGIONCOUNT = 0x40044d0e OTPGETREGIONINFO = 0x400c4d0f OTPLOCK = 0x800c4d10 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go index a7028e0efb..fb78594174 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go @@ -145,6 +145,7 @@ const ( NS_GET_USERNS = 0xb701 OLCUC = 0x2 ONLCR = 0x4 + OTPERASE = 0x400c4d19 OTPGETREGIONCOUNT = 0x40044d0e OTPGETREGIONINFO = 0x400c4d0f OTPLOCK = 0x800c4d10 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go index ed3b3286c1..81e18d23ff 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go @@ -150,6 +150,7 @@ const ( NS_GET_USERNS = 0x2000b701 OLCUC = 0x2 ONLCR = 0x4 + OTPERASE = 0x800c4d19 OTPGETREGIONCOUNT = 0x80044d0e OTPGETREGIONINFO = 0x800c4d0f OTPLOCK = 0x400c4d10 diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go index 593cc0feff..6d56edc05a 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go @@ -1020,7 +1020,10 @@ const ( RLIMIT_CPU = 0x0 RLIMIT_DATA = 0x2 RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 RLIMIT_STACK = 0x3 RLIM_INFINITY = 0x7fffffffffffffff RTAX_AUTHOR = 0x6 diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go index a4e4c22314..aef6c08560 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go @@ -1020,7 +1020,10 @@ const ( RLIMIT_CPU = 0x0 RLIMIT_DATA = 0x2 RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 RLIMIT_STACK = 0x3 RLIM_INFINITY = 0x7fffffffffffffff RTAX_AUTHOR = 0x6 diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux.go b/vendor/golang.org/x/sys/unix/zsyscall_linux.go index 7305cc915b..2dbe3da7a0 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux.go @@ -48,6 +48,16 @@ func ioctl(fd int, req uint, arg uintptr) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(oldpath) @@ -1201,7 +1211,7 @@ func PivotRoot(newroot string, putold string) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { +func Prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) if e1 != 0 { err = errnoErr(e1) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go index 4e18d5c99f..b5f926cee2 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go @@ -141,6 +141,11 @@ import ( //go:cgo_import_dynamic libc_getpeername getpeername "libsocket.so" //go:cgo_import_dynamic libc_setsockopt setsockopt "libsocket.so" //go:cgo_import_dynamic libc_recvfrom recvfrom "libsocket.so" +//go:cgo_import_dynamic libc_port_create port_create "libc.so" +//go:cgo_import_dynamic libc_port_associate port_associate "libc.so" +//go:cgo_import_dynamic libc_port_dissociate port_dissociate "libc.so" +//go:cgo_import_dynamic libc_port_get port_get "libc.so" +//go:cgo_import_dynamic libc_port_getn port_getn "libc.so" //go:linkname procpipe libc_pipe //go:linkname procpipe2 libc_pipe2 @@ -272,6 +277,11 @@ import ( //go:linkname procgetpeername libc_getpeername //go:linkname procsetsockopt libc_setsockopt //go:linkname procrecvfrom libc_recvfrom +//go:linkname procport_create libc_port_create +//go:linkname procport_associate libc_port_associate +//go:linkname procport_dissociate libc_port_dissociate +//go:linkname procport_get libc_port_get +//go:linkname procport_getn libc_port_getn var ( procpipe, @@ -403,7 +413,12 @@ var ( proc__xnet_getsockopt, procgetpeername, procsetsockopt, - procrecvfrom syscallFunc + procrecvfrom, + procport_create, + procport_associate, + procport_dissociate, + procport_get, + procport_getn syscallFunc ) // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT @@ -1981,3 +1996,58 @@ func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Sockl } return } + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func port_create() (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_create)), 0, 0, 0, 0, 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func port_associate(port int, source int, object uintptr, events int, user *byte) (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_associate)), 5, uintptr(port), uintptr(source), uintptr(object), uintptr(events), uintptr(unsafe.Pointer(user)), 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func port_dissociate(port int, source int, object uintptr) (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_dissociate)), 3, uintptr(port), uintptr(source), uintptr(object), 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func port_get(port int, pe *portEvent, timeout *Timespec) (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_get)), 3, uintptr(port), uintptr(unsafe.Pointer(pe)), uintptr(unsafe.Pointer(timeout)), 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func port_getn(port int, pe *portEvent, max uint32, nget *uint32, timeout *Timespec) (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_getn)), 5, uintptr(port), uintptr(unsafe.Pointer(pe)), uintptr(max), uintptr(unsafe.Pointer(nget)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go index fbc59b7fdd..eb3afe6789 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go @@ -439,4 +439,7 @@ const ( SYS_PROCESS_MADVISE = 440 SYS_EPOLL_PWAIT2 = 441 SYS_MOUNT_SETATTR = 442 + SYS_LANDLOCK_CREATE_RULESET = 444 + SYS_LANDLOCK_ADD_RULE = 445 + SYS_LANDLOCK_RESTRICT_SELF = 446 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go index 04d16d771e..8e7e3aedcf 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go @@ -7,358 +7,361 @@ package unix const ( - SYS_READ = 0 - SYS_WRITE = 1 - SYS_OPEN = 2 - SYS_CLOSE = 3 - SYS_STAT = 4 - SYS_FSTAT = 5 - SYS_LSTAT = 6 - SYS_POLL = 7 - SYS_LSEEK = 8 - SYS_MMAP = 9 - SYS_MPROTECT = 10 - SYS_MUNMAP = 11 - SYS_BRK = 12 - SYS_RT_SIGACTION = 13 - SYS_RT_SIGPROCMASK = 14 - SYS_RT_SIGRETURN = 15 - SYS_IOCTL = 16 - SYS_PREAD64 = 17 - SYS_PWRITE64 = 18 - SYS_READV = 19 - SYS_WRITEV = 20 - SYS_ACCESS = 21 - SYS_PIPE = 22 - SYS_SELECT = 23 - SYS_SCHED_YIELD = 24 - SYS_MREMAP = 25 - SYS_MSYNC = 26 - SYS_MINCORE = 27 - SYS_MADVISE = 28 - SYS_SHMGET = 29 - SYS_SHMAT = 30 - SYS_SHMCTL = 31 - SYS_DUP = 32 - SYS_DUP2 = 33 - SYS_PAUSE = 34 - SYS_NANOSLEEP = 35 - SYS_GETITIMER = 36 - SYS_ALARM = 37 - SYS_SETITIMER = 38 - SYS_GETPID = 39 - SYS_SENDFILE = 40 - SYS_SOCKET = 41 - SYS_CONNECT = 42 - SYS_ACCEPT = 43 - SYS_SENDTO = 44 - SYS_RECVFROM = 45 - SYS_SENDMSG = 46 - SYS_RECVMSG = 47 - SYS_SHUTDOWN = 48 - SYS_BIND = 49 - SYS_LISTEN = 50 - SYS_GETSOCKNAME = 51 - SYS_GETPEERNAME = 52 - SYS_SOCKETPAIR = 53 - SYS_SETSOCKOPT = 54 - SYS_GETSOCKOPT = 55 - SYS_CLONE = 56 - SYS_FORK = 57 - SYS_VFORK = 58 - SYS_EXECVE = 59 - SYS_EXIT = 60 - SYS_WAIT4 = 61 - SYS_KILL = 62 - SYS_UNAME = 63 - SYS_SEMGET = 64 - SYS_SEMOP = 65 - SYS_SEMCTL = 66 - SYS_SHMDT = 67 - SYS_MSGGET = 68 - SYS_MSGSND = 69 - SYS_MSGRCV = 70 - SYS_MSGCTL = 71 - SYS_FCNTL = 72 - SYS_FLOCK = 73 - SYS_FSYNC = 74 - SYS_FDATASYNC = 75 - SYS_TRUNCATE = 76 - SYS_FTRUNCATE = 77 - SYS_GETDENTS = 78 - SYS_GETCWD = 79 - SYS_CHDIR = 80 - SYS_FCHDIR = 81 - SYS_RENAME = 82 - SYS_MKDIR = 83 - SYS_RMDIR = 84 - SYS_CREAT = 85 - SYS_LINK = 86 - SYS_UNLINK = 87 - SYS_SYMLINK = 88 - SYS_READLINK = 89 - SYS_CHMOD = 90 - SYS_FCHMOD = 91 - SYS_CHOWN = 92 - SYS_FCHOWN = 93 - SYS_LCHOWN = 94 - SYS_UMASK = 95 - SYS_GETTIMEOFDAY = 96 - SYS_GETRLIMIT = 97 - SYS_GETRUSAGE = 98 - SYS_SYSINFO = 99 - SYS_TIMES = 100 - SYS_PTRACE = 101 - SYS_GETUID = 102 - SYS_SYSLOG = 103 - SYS_GETGID = 104 - SYS_SETUID = 105 - SYS_SETGID = 106 - SYS_GETEUID = 107 - SYS_GETEGID = 108 - SYS_SETPGID = 109 - SYS_GETPPID = 110 - SYS_GETPGRP = 111 - SYS_SETSID = 112 - SYS_SETREUID = 113 - SYS_SETREGID = 114 - SYS_GETGROUPS = 115 - SYS_SETGROUPS = 116 - SYS_SETRESUID = 117 - SYS_GETRESUID = 118 - SYS_SETRESGID = 119 - SYS_GETRESGID = 120 - SYS_GETPGID = 121 - SYS_SETFSUID = 122 - SYS_SETFSGID = 123 - SYS_GETSID = 124 - SYS_CAPGET = 125 - SYS_CAPSET = 126 - SYS_RT_SIGPENDING = 127 - SYS_RT_SIGTIMEDWAIT = 128 - SYS_RT_SIGQUEUEINFO = 129 - SYS_RT_SIGSUSPEND = 130 - SYS_SIGALTSTACK = 131 - SYS_UTIME = 132 - SYS_MKNOD = 133 - SYS_USELIB = 134 - SYS_PERSONALITY = 135 - SYS_USTAT = 136 - SYS_STATFS = 137 - SYS_FSTATFS = 138 - SYS_SYSFS = 139 - SYS_GETPRIORITY = 140 - SYS_SETPRIORITY = 141 - SYS_SCHED_SETPARAM = 142 - SYS_SCHED_GETPARAM = 143 - SYS_SCHED_SETSCHEDULER = 144 - SYS_SCHED_GETSCHEDULER = 145 - SYS_SCHED_GET_PRIORITY_MAX = 146 - SYS_SCHED_GET_PRIORITY_MIN = 147 - SYS_SCHED_RR_GET_INTERVAL = 148 - SYS_MLOCK = 149 - SYS_MUNLOCK = 150 - SYS_MLOCKALL = 151 - SYS_MUNLOCKALL = 152 - SYS_VHANGUP = 153 - SYS_MODIFY_LDT = 154 - SYS_PIVOT_ROOT = 155 - SYS__SYSCTL = 156 - SYS_PRCTL = 157 - SYS_ARCH_PRCTL = 158 - SYS_ADJTIMEX = 159 - SYS_SETRLIMIT = 160 - SYS_CHROOT = 161 - SYS_SYNC = 162 - SYS_ACCT = 163 - SYS_SETTIMEOFDAY = 164 - SYS_MOUNT = 165 - SYS_UMOUNT2 = 166 - SYS_SWAPON = 167 - SYS_SWAPOFF = 168 - SYS_REBOOT = 169 - SYS_SETHOSTNAME = 170 - SYS_SETDOMAINNAME = 171 - SYS_IOPL = 172 - SYS_IOPERM = 173 - SYS_CREATE_MODULE = 174 - SYS_INIT_MODULE = 175 - SYS_DELETE_MODULE = 176 - SYS_GET_KERNEL_SYMS = 177 - SYS_QUERY_MODULE = 178 - SYS_QUOTACTL = 179 - SYS_NFSSERVCTL = 180 - SYS_GETPMSG = 181 - SYS_PUTPMSG = 182 - SYS_AFS_SYSCALL = 183 - SYS_TUXCALL = 184 - SYS_SECURITY = 185 - SYS_GETTID = 186 - SYS_READAHEAD = 187 - SYS_SETXATTR = 188 - SYS_LSETXATTR = 189 - SYS_FSETXATTR = 190 - SYS_GETXATTR = 191 - SYS_LGETXATTR = 192 - SYS_FGETXATTR = 193 - SYS_LISTXATTR = 194 - SYS_LLISTXATTR = 195 - SYS_FLISTXATTR = 196 - SYS_REMOVEXATTR = 197 - SYS_LREMOVEXATTR = 198 - SYS_FREMOVEXATTR = 199 - SYS_TKILL = 200 - SYS_TIME = 201 - SYS_FUTEX = 202 - SYS_SCHED_SETAFFINITY = 203 - SYS_SCHED_GETAFFINITY = 204 - SYS_SET_THREAD_AREA = 205 - SYS_IO_SETUP = 206 - SYS_IO_DESTROY = 207 - SYS_IO_GETEVENTS = 208 - SYS_IO_SUBMIT = 209 - SYS_IO_CANCEL = 210 - SYS_GET_THREAD_AREA = 211 - SYS_LOOKUP_DCOOKIE = 212 - SYS_EPOLL_CREATE = 213 - SYS_EPOLL_CTL_OLD = 214 - SYS_EPOLL_WAIT_OLD = 215 - SYS_REMAP_FILE_PAGES = 216 - SYS_GETDENTS64 = 217 - SYS_SET_TID_ADDRESS = 218 - SYS_RESTART_SYSCALL = 219 - SYS_SEMTIMEDOP = 220 - SYS_FADVISE64 = 221 - SYS_TIMER_CREATE = 222 - SYS_TIMER_SETTIME = 223 - SYS_TIMER_GETTIME = 224 - SYS_TIMER_GETOVERRUN = 225 - SYS_TIMER_DELETE = 226 - SYS_CLOCK_SETTIME = 227 - SYS_CLOCK_GETTIME = 228 - SYS_CLOCK_GETRES = 229 - SYS_CLOCK_NANOSLEEP = 230 - SYS_EXIT_GROUP = 231 - SYS_EPOLL_WAIT = 232 - SYS_EPOLL_CTL = 233 - SYS_TGKILL = 234 - SYS_UTIMES = 235 - SYS_VSERVER = 236 - SYS_MBIND = 237 - SYS_SET_MEMPOLICY = 238 - SYS_GET_MEMPOLICY = 239 - SYS_MQ_OPEN = 240 - SYS_MQ_UNLINK = 241 - SYS_MQ_TIMEDSEND = 242 - SYS_MQ_TIMEDRECEIVE = 243 - SYS_MQ_NOTIFY = 244 - SYS_MQ_GETSETATTR = 245 - SYS_KEXEC_LOAD = 246 - SYS_WAITID = 247 - SYS_ADD_KEY = 248 - SYS_REQUEST_KEY = 249 - SYS_KEYCTL = 250 - SYS_IOPRIO_SET = 251 - SYS_IOPRIO_GET = 252 - SYS_INOTIFY_INIT = 253 - SYS_INOTIFY_ADD_WATCH = 254 - SYS_INOTIFY_RM_WATCH = 255 - SYS_MIGRATE_PAGES = 256 - SYS_OPENAT = 257 - SYS_MKDIRAT = 258 - SYS_MKNODAT = 259 - SYS_FCHOWNAT = 260 - SYS_FUTIMESAT = 261 - SYS_NEWFSTATAT = 262 - SYS_UNLINKAT = 263 - SYS_RENAMEAT = 264 - SYS_LINKAT = 265 - SYS_SYMLINKAT = 266 - SYS_READLINKAT = 267 - SYS_FCHMODAT = 268 - SYS_FACCESSAT = 269 - SYS_PSELECT6 = 270 - SYS_PPOLL = 271 - SYS_UNSHARE = 272 - SYS_SET_ROBUST_LIST = 273 - SYS_GET_ROBUST_LIST = 274 - SYS_SPLICE = 275 - SYS_TEE = 276 - SYS_SYNC_FILE_RANGE = 277 - SYS_VMSPLICE = 278 - SYS_MOVE_PAGES = 279 - SYS_UTIMENSAT = 280 - SYS_EPOLL_PWAIT = 281 - SYS_SIGNALFD = 282 - SYS_TIMERFD_CREATE = 283 - SYS_EVENTFD = 284 - SYS_FALLOCATE = 285 - SYS_TIMERFD_SETTIME = 286 - SYS_TIMERFD_GETTIME = 287 - SYS_ACCEPT4 = 288 - SYS_SIGNALFD4 = 289 - SYS_EVENTFD2 = 290 - SYS_EPOLL_CREATE1 = 291 - SYS_DUP3 = 292 - SYS_PIPE2 = 293 - SYS_INOTIFY_INIT1 = 294 - SYS_PREADV = 295 - SYS_PWRITEV = 296 - SYS_RT_TGSIGQUEUEINFO = 297 - SYS_PERF_EVENT_OPEN = 298 - SYS_RECVMMSG = 299 - SYS_FANOTIFY_INIT = 300 - SYS_FANOTIFY_MARK = 301 - SYS_PRLIMIT64 = 302 - SYS_NAME_TO_HANDLE_AT = 303 - SYS_OPEN_BY_HANDLE_AT = 304 - SYS_CLOCK_ADJTIME = 305 - SYS_SYNCFS = 306 - SYS_SENDMMSG = 307 - SYS_SETNS = 308 - SYS_GETCPU = 309 - SYS_PROCESS_VM_READV = 310 - SYS_PROCESS_VM_WRITEV = 311 - SYS_KCMP = 312 - SYS_FINIT_MODULE = 313 - SYS_SCHED_SETATTR = 314 - SYS_SCHED_GETATTR = 315 - SYS_RENAMEAT2 = 316 - SYS_SECCOMP = 317 - SYS_GETRANDOM = 318 - SYS_MEMFD_CREATE = 319 - SYS_KEXEC_FILE_LOAD = 320 - SYS_BPF = 321 - SYS_EXECVEAT = 322 - SYS_USERFAULTFD = 323 - SYS_MEMBARRIER = 324 - SYS_MLOCK2 = 325 - SYS_COPY_FILE_RANGE = 326 - SYS_PREADV2 = 327 - SYS_PWRITEV2 = 328 - SYS_PKEY_MPROTECT = 329 - SYS_PKEY_ALLOC = 330 - SYS_PKEY_FREE = 331 - SYS_STATX = 332 - SYS_IO_PGETEVENTS = 333 - SYS_RSEQ = 334 - SYS_PIDFD_SEND_SIGNAL = 424 - SYS_IO_URING_SETUP = 425 - SYS_IO_URING_ENTER = 426 - SYS_IO_URING_REGISTER = 427 - SYS_OPEN_TREE = 428 - SYS_MOVE_MOUNT = 429 - SYS_FSOPEN = 430 - SYS_FSCONFIG = 431 - SYS_FSMOUNT = 432 - SYS_FSPICK = 433 - SYS_PIDFD_OPEN = 434 - SYS_CLONE3 = 435 - SYS_CLOSE_RANGE = 436 - SYS_OPENAT2 = 437 - SYS_PIDFD_GETFD = 438 - SYS_FACCESSAT2 = 439 - SYS_PROCESS_MADVISE = 440 - SYS_EPOLL_PWAIT2 = 441 - SYS_MOUNT_SETATTR = 442 + SYS_READ = 0 + SYS_WRITE = 1 + SYS_OPEN = 2 + SYS_CLOSE = 3 + SYS_STAT = 4 + SYS_FSTAT = 5 + SYS_LSTAT = 6 + SYS_POLL = 7 + SYS_LSEEK = 8 + SYS_MMAP = 9 + SYS_MPROTECT = 10 + SYS_MUNMAP = 11 + SYS_BRK = 12 + SYS_RT_SIGACTION = 13 + SYS_RT_SIGPROCMASK = 14 + SYS_RT_SIGRETURN = 15 + SYS_IOCTL = 16 + SYS_PREAD64 = 17 + SYS_PWRITE64 = 18 + SYS_READV = 19 + SYS_WRITEV = 20 + SYS_ACCESS = 21 + SYS_PIPE = 22 + SYS_SELECT = 23 + SYS_SCHED_YIELD = 24 + SYS_MREMAP = 25 + SYS_MSYNC = 26 + SYS_MINCORE = 27 + SYS_MADVISE = 28 + SYS_SHMGET = 29 + SYS_SHMAT = 30 + SYS_SHMCTL = 31 + SYS_DUP = 32 + SYS_DUP2 = 33 + SYS_PAUSE = 34 + SYS_NANOSLEEP = 35 + SYS_GETITIMER = 36 + SYS_ALARM = 37 + SYS_SETITIMER = 38 + SYS_GETPID = 39 + SYS_SENDFILE = 40 + SYS_SOCKET = 41 + SYS_CONNECT = 42 + SYS_ACCEPT = 43 + SYS_SENDTO = 44 + SYS_RECVFROM = 45 + SYS_SENDMSG = 46 + SYS_RECVMSG = 47 + SYS_SHUTDOWN = 48 + SYS_BIND = 49 + SYS_LISTEN = 50 + SYS_GETSOCKNAME = 51 + SYS_GETPEERNAME = 52 + SYS_SOCKETPAIR = 53 + SYS_SETSOCKOPT = 54 + SYS_GETSOCKOPT = 55 + SYS_CLONE = 56 + SYS_FORK = 57 + SYS_VFORK = 58 + SYS_EXECVE = 59 + SYS_EXIT = 60 + SYS_WAIT4 = 61 + SYS_KILL = 62 + SYS_UNAME = 63 + SYS_SEMGET = 64 + SYS_SEMOP = 65 + SYS_SEMCTL = 66 + SYS_SHMDT = 67 + SYS_MSGGET = 68 + SYS_MSGSND = 69 + SYS_MSGRCV = 70 + SYS_MSGCTL = 71 + SYS_FCNTL = 72 + SYS_FLOCK = 73 + SYS_FSYNC = 74 + SYS_FDATASYNC = 75 + SYS_TRUNCATE = 76 + SYS_FTRUNCATE = 77 + SYS_GETDENTS = 78 + SYS_GETCWD = 79 + SYS_CHDIR = 80 + SYS_FCHDIR = 81 + SYS_RENAME = 82 + SYS_MKDIR = 83 + SYS_RMDIR = 84 + SYS_CREAT = 85 + SYS_LINK = 86 + SYS_UNLINK = 87 + SYS_SYMLINK = 88 + SYS_READLINK = 89 + SYS_CHMOD = 90 + SYS_FCHMOD = 91 + SYS_CHOWN = 92 + SYS_FCHOWN = 93 + SYS_LCHOWN = 94 + SYS_UMASK = 95 + SYS_GETTIMEOFDAY = 96 + SYS_GETRLIMIT = 97 + SYS_GETRUSAGE = 98 + SYS_SYSINFO = 99 + SYS_TIMES = 100 + SYS_PTRACE = 101 + SYS_GETUID = 102 + SYS_SYSLOG = 103 + SYS_GETGID = 104 + SYS_SETUID = 105 + SYS_SETGID = 106 + SYS_GETEUID = 107 + SYS_GETEGID = 108 + SYS_SETPGID = 109 + SYS_GETPPID = 110 + SYS_GETPGRP = 111 + SYS_SETSID = 112 + SYS_SETREUID = 113 + SYS_SETREGID = 114 + SYS_GETGROUPS = 115 + SYS_SETGROUPS = 116 + SYS_SETRESUID = 117 + SYS_GETRESUID = 118 + SYS_SETRESGID = 119 + SYS_GETRESGID = 120 + SYS_GETPGID = 121 + SYS_SETFSUID = 122 + SYS_SETFSGID = 123 + SYS_GETSID = 124 + SYS_CAPGET = 125 + SYS_CAPSET = 126 + SYS_RT_SIGPENDING = 127 + SYS_RT_SIGTIMEDWAIT = 128 + SYS_RT_SIGQUEUEINFO = 129 + SYS_RT_SIGSUSPEND = 130 + SYS_SIGALTSTACK = 131 + SYS_UTIME = 132 + SYS_MKNOD = 133 + SYS_USELIB = 134 + SYS_PERSONALITY = 135 + SYS_USTAT = 136 + SYS_STATFS = 137 + SYS_FSTATFS = 138 + SYS_SYSFS = 139 + SYS_GETPRIORITY = 140 + SYS_SETPRIORITY = 141 + SYS_SCHED_SETPARAM = 142 + SYS_SCHED_GETPARAM = 143 + SYS_SCHED_SETSCHEDULER = 144 + SYS_SCHED_GETSCHEDULER = 145 + SYS_SCHED_GET_PRIORITY_MAX = 146 + SYS_SCHED_GET_PRIORITY_MIN = 147 + SYS_SCHED_RR_GET_INTERVAL = 148 + SYS_MLOCK = 149 + SYS_MUNLOCK = 150 + SYS_MLOCKALL = 151 + SYS_MUNLOCKALL = 152 + SYS_VHANGUP = 153 + SYS_MODIFY_LDT = 154 + SYS_PIVOT_ROOT = 155 + SYS__SYSCTL = 156 + SYS_PRCTL = 157 + SYS_ARCH_PRCTL = 158 + SYS_ADJTIMEX = 159 + SYS_SETRLIMIT = 160 + SYS_CHROOT = 161 + SYS_SYNC = 162 + SYS_ACCT = 163 + SYS_SETTIMEOFDAY = 164 + SYS_MOUNT = 165 + SYS_UMOUNT2 = 166 + SYS_SWAPON = 167 + SYS_SWAPOFF = 168 + SYS_REBOOT = 169 + SYS_SETHOSTNAME = 170 + SYS_SETDOMAINNAME = 171 + SYS_IOPL = 172 + SYS_IOPERM = 173 + SYS_CREATE_MODULE = 174 + SYS_INIT_MODULE = 175 + SYS_DELETE_MODULE = 176 + SYS_GET_KERNEL_SYMS = 177 + SYS_QUERY_MODULE = 178 + SYS_QUOTACTL = 179 + SYS_NFSSERVCTL = 180 + SYS_GETPMSG = 181 + SYS_PUTPMSG = 182 + SYS_AFS_SYSCALL = 183 + SYS_TUXCALL = 184 + SYS_SECURITY = 185 + SYS_GETTID = 186 + SYS_READAHEAD = 187 + SYS_SETXATTR = 188 + SYS_LSETXATTR = 189 + SYS_FSETXATTR = 190 + SYS_GETXATTR = 191 + SYS_LGETXATTR = 192 + SYS_FGETXATTR = 193 + SYS_LISTXATTR = 194 + SYS_LLISTXATTR = 195 + SYS_FLISTXATTR = 196 + SYS_REMOVEXATTR = 197 + SYS_LREMOVEXATTR = 198 + SYS_FREMOVEXATTR = 199 + SYS_TKILL = 200 + SYS_TIME = 201 + SYS_FUTEX = 202 + SYS_SCHED_SETAFFINITY = 203 + SYS_SCHED_GETAFFINITY = 204 + SYS_SET_THREAD_AREA = 205 + SYS_IO_SETUP = 206 + SYS_IO_DESTROY = 207 + SYS_IO_GETEVENTS = 208 + SYS_IO_SUBMIT = 209 + SYS_IO_CANCEL = 210 + SYS_GET_THREAD_AREA = 211 + SYS_LOOKUP_DCOOKIE = 212 + SYS_EPOLL_CREATE = 213 + SYS_EPOLL_CTL_OLD = 214 + SYS_EPOLL_WAIT_OLD = 215 + SYS_REMAP_FILE_PAGES = 216 + SYS_GETDENTS64 = 217 + SYS_SET_TID_ADDRESS = 218 + SYS_RESTART_SYSCALL = 219 + SYS_SEMTIMEDOP = 220 + SYS_FADVISE64 = 221 + SYS_TIMER_CREATE = 222 + SYS_TIMER_SETTIME = 223 + SYS_TIMER_GETTIME = 224 + SYS_TIMER_GETOVERRUN = 225 + SYS_TIMER_DELETE = 226 + SYS_CLOCK_SETTIME = 227 + SYS_CLOCK_GETTIME = 228 + SYS_CLOCK_GETRES = 229 + SYS_CLOCK_NANOSLEEP = 230 + SYS_EXIT_GROUP = 231 + SYS_EPOLL_WAIT = 232 + SYS_EPOLL_CTL = 233 + SYS_TGKILL = 234 + SYS_UTIMES = 235 + SYS_VSERVER = 236 + SYS_MBIND = 237 + SYS_SET_MEMPOLICY = 238 + SYS_GET_MEMPOLICY = 239 + SYS_MQ_OPEN = 240 + SYS_MQ_UNLINK = 241 + SYS_MQ_TIMEDSEND = 242 + SYS_MQ_TIMEDRECEIVE = 243 + SYS_MQ_NOTIFY = 244 + SYS_MQ_GETSETATTR = 245 + SYS_KEXEC_LOAD = 246 + SYS_WAITID = 247 + SYS_ADD_KEY = 248 + SYS_REQUEST_KEY = 249 + SYS_KEYCTL = 250 + SYS_IOPRIO_SET = 251 + SYS_IOPRIO_GET = 252 + SYS_INOTIFY_INIT = 253 + SYS_INOTIFY_ADD_WATCH = 254 + SYS_INOTIFY_RM_WATCH = 255 + SYS_MIGRATE_PAGES = 256 + SYS_OPENAT = 257 + SYS_MKDIRAT = 258 + SYS_MKNODAT = 259 + SYS_FCHOWNAT = 260 + SYS_FUTIMESAT = 261 + SYS_NEWFSTATAT = 262 + SYS_UNLINKAT = 263 + SYS_RENAMEAT = 264 + SYS_LINKAT = 265 + SYS_SYMLINKAT = 266 + SYS_READLINKAT = 267 + SYS_FCHMODAT = 268 + SYS_FACCESSAT = 269 + SYS_PSELECT6 = 270 + SYS_PPOLL = 271 + SYS_UNSHARE = 272 + SYS_SET_ROBUST_LIST = 273 + SYS_GET_ROBUST_LIST = 274 + SYS_SPLICE = 275 + SYS_TEE = 276 + SYS_SYNC_FILE_RANGE = 277 + SYS_VMSPLICE = 278 + SYS_MOVE_PAGES = 279 + SYS_UTIMENSAT = 280 + SYS_EPOLL_PWAIT = 281 + SYS_SIGNALFD = 282 + SYS_TIMERFD_CREATE = 283 + SYS_EVENTFD = 284 + SYS_FALLOCATE = 285 + SYS_TIMERFD_SETTIME = 286 + SYS_TIMERFD_GETTIME = 287 + SYS_ACCEPT4 = 288 + SYS_SIGNALFD4 = 289 + SYS_EVENTFD2 = 290 + SYS_EPOLL_CREATE1 = 291 + SYS_DUP3 = 292 + SYS_PIPE2 = 293 + SYS_INOTIFY_INIT1 = 294 + SYS_PREADV = 295 + SYS_PWRITEV = 296 + SYS_RT_TGSIGQUEUEINFO = 297 + SYS_PERF_EVENT_OPEN = 298 + SYS_RECVMMSG = 299 + SYS_FANOTIFY_INIT = 300 + SYS_FANOTIFY_MARK = 301 + SYS_PRLIMIT64 = 302 + SYS_NAME_TO_HANDLE_AT = 303 + SYS_OPEN_BY_HANDLE_AT = 304 + SYS_CLOCK_ADJTIME = 305 + SYS_SYNCFS = 306 + SYS_SENDMMSG = 307 + SYS_SETNS = 308 + SYS_GETCPU = 309 + SYS_PROCESS_VM_READV = 310 + SYS_PROCESS_VM_WRITEV = 311 + SYS_KCMP = 312 + SYS_FINIT_MODULE = 313 + SYS_SCHED_SETATTR = 314 + SYS_SCHED_GETATTR = 315 + SYS_RENAMEAT2 = 316 + SYS_SECCOMP = 317 + SYS_GETRANDOM = 318 + SYS_MEMFD_CREATE = 319 + SYS_KEXEC_FILE_LOAD = 320 + SYS_BPF = 321 + SYS_EXECVEAT = 322 + SYS_USERFAULTFD = 323 + SYS_MEMBARRIER = 324 + SYS_MLOCK2 = 325 + SYS_COPY_FILE_RANGE = 326 + SYS_PREADV2 = 327 + SYS_PWRITEV2 = 328 + SYS_PKEY_MPROTECT = 329 + SYS_PKEY_ALLOC = 330 + SYS_PKEY_FREE = 331 + SYS_STATX = 332 + SYS_IO_PGETEVENTS = 333 + SYS_RSEQ = 334 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLONE3 = 435 + SYS_CLOSE_RANGE = 436 + SYS_OPENAT2 = 437 + SYS_PIDFD_GETFD = 438 + SYS_FACCESSAT2 = 439 + SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 + SYS_MOUNT_SETATTR = 442 + SYS_LANDLOCK_CREATE_RULESET = 444 + SYS_LANDLOCK_ADD_RULE = 445 + SYS_LANDLOCK_RESTRICT_SELF = 446 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go index 3b1c105137..0e6ebfef09 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go @@ -403,4 +403,7 @@ const ( SYS_PROCESS_MADVISE = 440 SYS_EPOLL_PWAIT2 = 441 SYS_MOUNT_SETATTR = 442 + SYS_LANDLOCK_CREATE_RULESET = 444 + SYS_LANDLOCK_ADD_RULE = 445 + SYS_LANDLOCK_RESTRICT_SELF = 446 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go index 3198adcf77..cd2a3ef41c 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go @@ -7,303 +7,306 @@ package unix const ( - SYS_IO_SETUP = 0 - SYS_IO_DESTROY = 1 - SYS_IO_SUBMIT = 2 - SYS_IO_CANCEL = 3 - SYS_IO_GETEVENTS = 4 - SYS_SETXATTR = 5 - SYS_LSETXATTR = 6 - SYS_FSETXATTR = 7 - SYS_GETXATTR = 8 - SYS_LGETXATTR = 9 - SYS_FGETXATTR = 10 - SYS_LISTXATTR = 11 - SYS_LLISTXATTR = 12 - SYS_FLISTXATTR = 13 - SYS_REMOVEXATTR = 14 - SYS_LREMOVEXATTR = 15 - SYS_FREMOVEXATTR = 16 - SYS_GETCWD = 17 - SYS_LOOKUP_DCOOKIE = 18 - SYS_EVENTFD2 = 19 - SYS_EPOLL_CREATE1 = 20 - SYS_EPOLL_CTL = 21 - SYS_EPOLL_PWAIT = 22 - SYS_DUP = 23 - SYS_DUP3 = 24 - SYS_FCNTL = 25 - SYS_INOTIFY_INIT1 = 26 - SYS_INOTIFY_ADD_WATCH = 27 - SYS_INOTIFY_RM_WATCH = 28 - SYS_IOCTL = 29 - SYS_IOPRIO_SET = 30 - SYS_IOPRIO_GET = 31 - SYS_FLOCK = 32 - SYS_MKNODAT = 33 - SYS_MKDIRAT = 34 - SYS_UNLINKAT = 35 - SYS_SYMLINKAT = 36 - SYS_LINKAT = 37 - SYS_RENAMEAT = 38 - SYS_UMOUNT2 = 39 - SYS_MOUNT = 40 - SYS_PIVOT_ROOT = 41 - SYS_NFSSERVCTL = 42 - SYS_STATFS = 43 - SYS_FSTATFS = 44 - SYS_TRUNCATE = 45 - SYS_FTRUNCATE = 46 - SYS_FALLOCATE = 47 - SYS_FACCESSAT = 48 - SYS_CHDIR = 49 - SYS_FCHDIR = 50 - SYS_CHROOT = 51 - SYS_FCHMOD = 52 - SYS_FCHMODAT = 53 - SYS_FCHOWNAT = 54 - SYS_FCHOWN = 55 - SYS_OPENAT = 56 - SYS_CLOSE = 57 - SYS_VHANGUP = 58 - SYS_PIPE2 = 59 - SYS_QUOTACTL = 60 - SYS_GETDENTS64 = 61 - SYS_LSEEK = 62 - SYS_READ = 63 - SYS_WRITE = 64 - SYS_READV = 65 - SYS_WRITEV = 66 - SYS_PREAD64 = 67 - SYS_PWRITE64 = 68 - SYS_PREADV = 69 - SYS_PWRITEV = 70 - SYS_SENDFILE = 71 - SYS_PSELECT6 = 72 - SYS_PPOLL = 73 - SYS_SIGNALFD4 = 74 - SYS_VMSPLICE = 75 - SYS_SPLICE = 76 - SYS_TEE = 77 - SYS_READLINKAT = 78 - SYS_FSTATAT = 79 - SYS_FSTAT = 80 - SYS_SYNC = 81 - SYS_FSYNC = 82 - SYS_FDATASYNC = 83 - SYS_SYNC_FILE_RANGE = 84 - SYS_TIMERFD_CREATE = 85 - SYS_TIMERFD_SETTIME = 86 - SYS_TIMERFD_GETTIME = 87 - SYS_UTIMENSAT = 88 - SYS_ACCT = 89 - SYS_CAPGET = 90 - SYS_CAPSET = 91 - SYS_PERSONALITY = 92 - SYS_EXIT = 93 - SYS_EXIT_GROUP = 94 - SYS_WAITID = 95 - SYS_SET_TID_ADDRESS = 96 - SYS_UNSHARE = 97 - SYS_FUTEX = 98 - SYS_SET_ROBUST_LIST = 99 - SYS_GET_ROBUST_LIST = 100 - SYS_NANOSLEEP = 101 - SYS_GETITIMER = 102 - SYS_SETITIMER = 103 - SYS_KEXEC_LOAD = 104 - SYS_INIT_MODULE = 105 - SYS_DELETE_MODULE = 106 - SYS_TIMER_CREATE = 107 - SYS_TIMER_GETTIME = 108 - SYS_TIMER_GETOVERRUN = 109 - SYS_TIMER_SETTIME = 110 - SYS_TIMER_DELETE = 111 - SYS_CLOCK_SETTIME = 112 - SYS_CLOCK_GETTIME = 113 - SYS_CLOCK_GETRES = 114 - SYS_CLOCK_NANOSLEEP = 115 - SYS_SYSLOG = 116 - SYS_PTRACE = 117 - SYS_SCHED_SETPARAM = 118 - SYS_SCHED_SETSCHEDULER = 119 - SYS_SCHED_GETSCHEDULER = 120 - SYS_SCHED_GETPARAM = 121 - SYS_SCHED_SETAFFINITY = 122 - SYS_SCHED_GETAFFINITY = 123 - SYS_SCHED_YIELD = 124 - SYS_SCHED_GET_PRIORITY_MAX = 125 - SYS_SCHED_GET_PRIORITY_MIN = 126 - SYS_SCHED_RR_GET_INTERVAL = 127 - SYS_RESTART_SYSCALL = 128 - SYS_KILL = 129 - SYS_TKILL = 130 - SYS_TGKILL = 131 - SYS_SIGALTSTACK = 132 - SYS_RT_SIGSUSPEND = 133 - SYS_RT_SIGACTION = 134 - SYS_RT_SIGPROCMASK = 135 - SYS_RT_SIGPENDING = 136 - SYS_RT_SIGTIMEDWAIT = 137 - SYS_RT_SIGQUEUEINFO = 138 - SYS_RT_SIGRETURN = 139 - SYS_SETPRIORITY = 140 - SYS_GETPRIORITY = 141 - SYS_REBOOT = 142 - SYS_SETREGID = 143 - SYS_SETGID = 144 - SYS_SETREUID = 145 - SYS_SETUID = 146 - SYS_SETRESUID = 147 - SYS_GETRESUID = 148 - SYS_SETRESGID = 149 - SYS_GETRESGID = 150 - SYS_SETFSUID = 151 - SYS_SETFSGID = 152 - SYS_TIMES = 153 - SYS_SETPGID = 154 - SYS_GETPGID = 155 - SYS_GETSID = 156 - SYS_SETSID = 157 - SYS_GETGROUPS = 158 - SYS_SETGROUPS = 159 - SYS_UNAME = 160 - SYS_SETHOSTNAME = 161 - SYS_SETDOMAINNAME = 162 - SYS_GETRLIMIT = 163 - SYS_SETRLIMIT = 164 - SYS_GETRUSAGE = 165 - SYS_UMASK = 166 - SYS_PRCTL = 167 - SYS_GETCPU = 168 - SYS_GETTIMEOFDAY = 169 - SYS_SETTIMEOFDAY = 170 - SYS_ADJTIMEX = 171 - SYS_GETPID = 172 - SYS_GETPPID = 173 - SYS_GETUID = 174 - SYS_GETEUID = 175 - SYS_GETGID = 176 - SYS_GETEGID = 177 - SYS_GETTID = 178 - SYS_SYSINFO = 179 - SYS_MQ_OPEN = 180 - SYS_MQ_UNLINK = 181 - SYS_MQ_TIMEDSEND = 182 - SYS_MQ_TIMEDRECEIVE = 183 - SYS_MQ_NOTIFY = 184 - SYS_MQ_GETSETATTR = 185 - SYS_MSGGET = 186 - SYS_MSGCTL = 187 - SYS_MSGRCV = 188 - SYS_MSGSND = 189 - SYS_SEMGET = 190 - SYS_SEMCTL = 191 - SYS_SEMTIMEDOP = 192 - SYS_SEMOP = 193 - SYS_SHMGET = 194 - SYS_SHMCTL = 195 - SYS_SHMAT = 196 - SYS_SHMDT = 197 - SYS_SOCKET = 198 - SYS_SOCKETPAIR = 199 - SYS_BIND = 200 - SYS_LISTEN = 201 - SYS_ACCEPT = 202 - SYS_CONNECT = 203 - SYS_GETSOCKNAME = 204 - SYS_GETPEERNAME = 205 - SYS_SENDTO = 206 - SYS_RECVFROM = 207 - SYS_SETSOCKOPT = 208 - SYS_GETSOCKOPT = 209 - SYS_SHUTDOWN = 210 - SYS_SENDMSG = 211 - SYS_RECVMSG = 212 - SYS_READAHEAD = 213 - SYS_BRK = 214 - SYS_MUNMAP = 215 - SYS_MREMAP = 216 - SYS_ADD_KEY = 217 - SYS_REQUEST_KEY = 218 - SYS_KEYCTL = 219 - SYS_CLONE = 220 - SYS_EXECVE = 221 - SYS_MMAP = 222 - SYS_FADVISE64 = 223 - SYS_SWAPON = 224 - SYS_SWAPOFF = 225 - SYS_MPROTECT = 226 - SYS_MSYNC = 227 - SYS_MLOCK = 228 - SYS_MUNLOCK = 229 - SYS_MLOCKALL = 230 - SYS_MUNLOCKALL = 231 - SYS_MINCORE = 232 - SYS_MADVISE = 233 - SYS_REMAP_FILE_PAGES = 234 - SYS_MBIND = 235 - SYS_GET_MEMPOLICY = 236 - SYS_SET_MEMPOLICY = 237 - SYS_MIGRATE_PAGES = 238 - SYS_MOVE_PAGES = 239 - SYS_RT_TGSIGQUEUEINFO = 240 - SYS_PERF_EVENT_OPEN = 241 - SYS_ACCEPT4 = 242 - SYS_RECVMMSG = 243 - SYS_ARCH_SPECIFIC_SYSCALL = 244 - SYS_WAIT4 = 260 - SYS_PRLIMIT64 = 261 - SYS_FANOTIFY_INIT = 262 - SYS_FANOTIFY_MARK = 263 - SYS_NAME_TO_HANDLE_AT = 264 - SYS_OPEN_BY_HANDLE_AT = 265 - SYS_CLOCK_ADJTIME = 266 - SYS_SYNCFS = 267 - SYS_SETNS = 268 - SYS_SENDMMSG = 269 - SYS_PROCESS_VM_READV = 270 - SYS_PROCESS_VM_WRITEV = 271 - SYS_KCMP = 272 - SYS_FINIT_MODULE = 273 - SYS_SCHED_SETATTR = 274 - SYS_SCHED_GETATTR = 275 - SYS_RENAMEAT2 = 276 - SYS_SECCOMP = 277 - SYS_GETRANDOM = 278 - SYS_MEMFD_CREATE = 279 - SYS_BPF = 280 - SYS_EXECVEAT = 281 - SYS_USERFAULTFD = 282 - SYS_MEMBARRIER = 283 - SYS_MLOCK2 = 284 - SYS_COPY_FILE_RANGE = 285 - SYS_PREADV2 = 286 - SYS_PWRITEV2 = 287 - SYS_PKEY_MPROTECT = 288 - SYS_PKEY_ALLOC = 289 - SYS_PKEY_FREE = 290 - SYS_STATX = 291 - SYS_IO_PGETEVENTS = 292 - SYS_RSEQ = 293 - SYS_KEXEC_FILE_LOAD = 294 - SYS_PIDFD_SEND_SIGNAL = 424 - SYS_IO_URING_SETUP = 425 - SYS_IO_URING_ENTER = 426 - SYS_IO_URING_REGISTER = 427 - SYS_OPEN_TREE = 428 - SYS_MOVE_MOUNT = 429 - SYS_FSOPEN = 430 - SYS_FSCONFIG = 431 - SYS_FSMOUNT = 432 - SYS_FSPICK = 433 - SYS_PIDFD_OPEN = 434 - SYS_CLONE3 = 435 - SYS_CLOSE_RANGE = 436 - SYS_OPENAT2 = 437 - SYS_PIDFD_GETFD = 438 - SYS_FACCESSAT2 = 439 - SYS_PROCESS_MADVISE = 440 - SYS_EPOLL_PWAIT2 = 441 - SYS_MOUNT_SETATTR = 442 + SYS_IO_SETUP = 0 + SYS_IO_DESTROY = 1 + SYS_IO_SUBMIT = 2 + SYS_IO_CANCEL = 3 + SYS_IO_GETEVENTS = 4 + SYS_SETXATTR = 5 + SYS_LSETXATTR = 6 + SYS_FSETXATTR = 7 + SYS_GETXATTR = 8 + SYS_LGETXATTR = 9 + SYS_FGETXATTR = 10 + SYS_LISTXATTR = 11 + SYS_LLISTXATTR = 12 + SYS_FLISTXATTR = 13 + SYS_REMOVEXATTR = 14 + SYS_LREMOVEXATTR = 15 + SYS_FREMOVEXATTR = 16 + SYS_GETCWD = 17 + SYS_LOOKUP_DCOOKIE = 18 + SYS_EVENTFD2 = 19 + SYS_EPOLL_CREATE1 = 20 + SYS_EPOLL_CTL = 21 + SYS_EPOLL_PWAIT = 22 + SYS_DUP = 23 + SYS_DUP3 = 24 + SYS_FCNTL = 25 + SYS_INOTIFY_INIT1 = 26 + SYS_INOTIFY_ADD_WATCH = 27 + SYS_INOTIFY_RM_WATCH = 28 + SYS_IOCTL = 29 + SYS_IOPRIO_SET = 30 + SYS_IOPRIO_GET = 31 + SYS_FLOCK = 32 + SYS_MKNODAT = 33 + SYS_MKDIRAT = 34 + SYS_UNLINKAT = 35 + SYS_SYMLINKAT = 36 + SYS_LINKAT = 37 + SYS_RENAMEAT = 38 + SYS_UMOUNT2 = 39 + SYS_MOUNT = 40 + SYS_PIVOT_ROOT = 41 + SYS_NFSSERVCTL = 42 + SYS_STATFS = 43 + SYS_FSTATFS = 44 + SYS_TRUNCATE = 45 + SYS_FTRUNCATE = 46 + SYS_FALLOCATE = 47 + SYS_FACCESSAT = 48 + SYS_CHDIR = 49 + SYS_FCHDIR = 50 + SYS_CHROOT = 51 + SYS_FCHMOD = 52 + SYS_FCHMODAT = 53 + SYS_FCHOWNAT = 54 + SYS_FCHOWN = 55 + SYS_OPENAT = 56 + SYS_CLOSE = 57 + SYS_VHANGUP = 58 + SYS_PIPE2 = 59 + SYS_QUOTACTL = 60 + SYS_GETDENTS64 = 61 + SYS_LSEEK = 62 + SYS_READ = 63 + SYS_WRITE = 64 + SYS_READV = 65 + SYS_WRITEV = 66 + SYS_PREAD64 = 67 + SYS_PWRITE64 = 68 + SYS_PREADV = 69 + SYS_PWRITEV = 70 + SYS_SENDFILE = 71 + SYS_PSELECT6 = 72 + SYS_PPOLL = 73 + SYS_SIGNALFD4 = 74 + SYS_VMSPLICE = 75 + SYS_SPLICE = 76 + SYS_TEE = 77 + SYS_READLINKAT = 78 + SYS_FSTATAT = 79 + SYS_FSTAT = 80 + SYS_SYNC = 81 + SYS_FSYNC = 82 + SYS_FDATASYNC = 83 + SYS_SYNC_FILE_RANGE = 84 + SYS_TIMERFD_CREATE = 85 + SYS_TIMERFD_SETTIME = 86 + SYS_TIMERFD_GETTIME = 87 + SYS_UTIMENSAT = 88 + SYS_ACCT = 89 + SYS_CAPGET = 90 + SYS_CAPSET = 91 + SYS_PERSONALITY = 92 + SYS_EXIT = 93 + SYS_EXIT_GROUP = 94 + SYS_WAITID = 95 + SYS_SET_TID_ADDRESS = 96 + SYS_UNSHARE = 97 + SYS_FUTEX = 98 + SYS_SET_ROBUST_LIST = 99 + SYS_GET_ROBUST_LIST = 100 + SYS_NANOSLEEP = 101 + SYS_GETITIMER = 102 + SYS_SETITIMER = 103 + SYS_KEXEC_LOAD = 104 + SYS_INIT_MODULE = 105 + SYS_DELETE_MODULE = 106 + SYS_TIMER_CREATE = 107 + SYS_TIMER_GETTIME = 108 + SYS_TIMER_GETOVERRUN = 109 + SYS_TIMER_SETTIME = 110 + SYS_TIMER_DELETE = 111 + SYS_CLOCK_SETTIME = 112 + SYS_CLOCK_GETTIME = 113 + SYS_CLOCK_GETRES = 114 + SYS_CLOCK_NANOSLEEP = 115 + SYS_SYSLOG = 116 + SYS_PTRACE = 117 + SYS_SCHED_SETPARAM = 118 + SYS_SCHED_SETSCHEDULER = 119 + SYS_SCHED_GETSCHEDULER = 120 + SYS_SCHED_GETPARAM = 121 + SYS_SCHED_SETAFFINITY = 122 + SYS_SCHED_GETAFFINITY = 123 + SYS_SCHED_YIELD = 124 + SYS_SCHED_GET_PRIORITY_MAX = 125 + SYS_SCHED_GET_PRIORITY_MIN = 126 + SYS_SCHED_RR_GET_INTERVAL = 127 + SYS_RESTART_SYSCALL = 128 + SYS_KILL = 129 + SYS_TKILL = 130 + SYS_TGKILL = 131 + SYS_SIGALTSTACK = 132 + SYS_RT_SIGSUSPEND = 133 + SYS_RT_SIGACTION = 134 + SYS_RT_SIGPROCMASK = 135 + SYS_RT_SIGPENDING = 136 + SYS_RT_SIGTIMEDWAIT = 137 + SYS_RT_SIGQUEUEINFO = 138 + SYS_RT_SIGRETURN = 139 + SYS_SETPRIORITY = 140 + SYS_GETPRIORITY = 141 + SYS_REBOOT = 142 + SYS_SETREGID = 143 + SYS_SETGID = 144 + SYS_SETREUID = 145 + SYS_SETUID = 146 + SYS_SETRESUID = 147 + SYS_GETRESUID = 148 + SYS_SETRESGID = 149 + SYS_GETRESGID = 150 + SYS_SETFSUID = 151 + SYS_SETFSGID = 152 + SYS_TIMES = 153 + SYS_SETPGID = 154 + SYS_GETPGID = 155 + SYS_GETSID = 156 + SYS_SETSID = 157 + SYS_GETGROUPS = 158 + SYS_SETGROUPS = 159 + SYS_UNAME = 160 + SYS_SETHOSTNAME = 161 + SYS_SETDOMAINNAME = 162 + SYS_GETRLIMIT = 163 + SYS_SETRLIMIT = 164 + SYS_GETRUSAGE = 165 + SYS_UMASK = 166 + SYS_PRCTL = 167 + SYS_GETCPU = 168 + SYS_GETTIMEOFDAY = 169 + SYS_SETTIMEOFDAY = 170 + SYS_ADJTIMEX = 171 + SYS_GETPID = 172 + SYS_GETPPID = 173 + SYS_GETUID = 174 + SYS_GETEUID = 175 + SYS_GETGID = 176 + SYS_GETEGID = 177 + SYS_GETTID = 178 + SYS_SYSINFO = 179 + SYS_MQ_OPEN = 180 + SYS_MQ_UNLINK = 181 + SYS_MQ_TIMEDSEND = 182 + SYS_MQ_TIMEDRECEIVE = 183 + SYS_MQ_NOTIFY = 184 + SYS_MQ_GETSETATTR = 185 + SYS_MSGGET = 186 + SYS_MSGCTL = 187 + SYS_MSGRCV = 188 + SYS_MSGSND = 189 + SYS_SEMGET = 190 + SYS_SEMCTL = 191 + SYS_SEMTIMEDOP = 192 + SYS_SEMOP = 193 + SYS_SHMGET = 194 + SYS_SHMCTL = 195 + SYS_SHMAT = 196 + SYS_SHMDT = 197 + SYS_SOCKET = 198 + SYS_SOCKETPAIR = 199 + SYS_BIND = 200 + SYS_LISTEN = 201 + SYS_ACCEPT = 202 + SYS_CONNECT = 203 + SYS_GETSOCKNAME = 204 + SYS_GETPEERNAME = 205 + SYS_SENDTO = 206 + SYS_RECVFROM = 207 + SYS_SETSOCKOPT = 208 + SYS_GETSOCKOPT = 209 + SYS_SHUTDOWN = 210 + SYS_SENDMSG = 211 + SYS_RECVMSG = 212 + SYS_READAHEAD = 213 + SYS_BRK = 214 + SYS_MUNMAP = 215 + SYS_MREMAP = 216 + SYS_ADD_KEY = 217 + SYS_REQUEST_KEY = 218 + SYS_KEYCTL = 219 + SYS_CLONE = 220 + SYS_EXECVE = 221 + SYS_MMAP = 222 + SYS_FADVISE64 = 223 + SYS_SWAPON = 224 + SYS_SWAPOFF = 225 + SYS_MPROTECT = 226 + SYS_MSYNC = 227 + SYS_MLOCK = 228 + SYS_MUNLOCK = 229 + SYS_MLOCKALL = 230 + SYS_MUNLOCKALL = 231 + SYS_MINCORE = 232 + SYS_MADVISE = 233 + SYS_REMAP_FILE_PAGES = 234 + SYS_MBIND = 235 + SYS_GET_MEMPOLICY = 236 + SYS_SET_MEMPOLICY = 237 + SYS_MIGRATE_PAGES = 238 + SYS_MOVE_PAGES = 239 + SYS_RT_TGSIGQUEUEINFO = 240 + SYS_PERF_EVENT_OPEN = 241 + SYS_ACCEPT4 = 242 + SYS_RECVMMSG = 243 + SYS_ARCH_SPECIFIC_SYSCALL = 244 + SYS_WAIT4 = 260 + SYS_PRLIMIT64 = 261 + SYS_FANOTIFY_INIT = 262 + SYS_FANOTIFY_MARK = 263 + SYS_NAME_TO_HANDLE_AT = 264 + SYS_OPEN_BY_HANDLE_AT = 265 + SYS_CLOCK_ADJTIME = 266 + SYS_SYNCFS = 267 + SYS_SETNS = 268 + SYS_SENDMMSG = 269 + SYS_PROCESS_VM_READV = 270 + SYS_PROCESS_VM_WRITEV = 271 + SYS_KCMP = 272 + SYS_FINIT_MODULE = 273 + SYS_SCHED_SETATTR = 274 + SYS_SCHED_GETATTR = 275 + SYS_RENAMEAT2 = 276 + SYS_SECCOMP = 277 + SYS_GETRANDOM = 278 + SYS_MEMFD_CREATE = 279 + SYS_BPF = 280 + SYS_EXECVEAT = 281 + SYS_USERFAULTFD = 282 + SYS_MEMBARRIER = 283 + SYS_MLOCK2 = 284 + SYS_COPY_FILE_RANGE = 285 + SYS_PREADV2 = 286 + SYS_PWRITEV2 = 287 + SYS_PKEY_MPROTECT = 288 + SYS_PKEY_ALLOC = 289 + SYS_PKEY_FREE = 290 + SYS_STATX = 291 + SYS_IO_PGETEVENTS = 292 + SYS_RSEQ = 293 + SYS_KEXEC_FILE_LOAD = 294 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLONE3 = 435 + SYS_CLOSE_RANGE = 436 + SYS_OPENAT2 = 437 + SYS_PIDFD_GETFD = 438 + SYS_FACCESSAT2 = 439 + SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 + SYS_MOUNT_SETATTR = 442 + SYS_LANDLOCK_CREATE_RULESET = 444 + SYS_LANDLOCK_ADD_RULE = 445 + SYS_LANDLOCK_RESTRICT_SELF = 446 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go index c877ec6e68..773640b831 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go @@ -424,4 +424,7 @@ const ( SYS_PROCESS_MADVISE = 4440 SYS_EPOLL_PWAIT2 = 4441 SYS_MOUNT_SETATTR = 4442 + SYS_LANDLOCK_CREATE_RULESET = 4444 + SYS_LANDLOCK_ADD_RULE = 4445 + SYS_LANDLOCK_RESTRICT_SELF = 4446 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go index b5f2903729..86a41e5688 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go @@ -7,351 +7,354 @@ package unix const ( - SYS_READ = 5000 - SYS_WRITE = 5001 - SYS_OPEN = 5002 - SYS_CLOSE = 5003 - SYS_STAT = 5004 - SYS_FSTAT = 5005 - SYS_LSTAT = 5006 - SYS_POLL = 5007 - SYS_LSEEK = 5008 - SYS_MMAP = 5009 - SYS_MPROTECT = 5010 - SYS_MUNMAP = 5011 - SYS_BRK = 5012 - SYS_RT_SIGACTION = 5013 - SYS_RT_SIGPROCMASK = 5014 - SYS_IOCTL = 5015 - SYS_PREAD64 = 5016 - SYS_PWRITE64 = 5017 - SYS_READV = 5018 - SYS_WRITEV = 5019 - SYS_ACCESS = 5020 - SYS_PIPE = 5021 - SYS__NEWSELECT = 5022 - SYS_SCHED_YIELD = 5023 - SYS_MREMAP = 5024 - SYS_MSYNC = 5025 - SYS_MINCORE = 5026 - SYS_MADVISE = 5027 - SYS_SHMGET = 5028 - SYS_SHMAT = 5029 - SYS_SHMCTL = 5030 - SYS_DUP = 5031 - SYS_DUP2 = 5032 - SYS_PAUSE = 5033 - SYS_NANOSLEEP = 5034 - SYS_GETITIMER = 5035 - SYS_SETITIMER = 5036 - SYS_ALARM = 5037 - SYS_GETPID = 5038 - SYS_SENDFILE = 5039 - SYS_SOCKET = 5040 - SYS_CONNECT = 5041 - SYS_ACCEPT = 5042 - SYS_SENDTO = 5043 - SYS_RECVFROM = 5044 - SYS_SENDMSG = 5045 - SYS_RECVMSG = 5046 - SYS_SHUTDOWN = 5047 - SYS_BIND = 5048 - SYS_LISTEN = 5049 - SYS_GETSOCKNAME = 5050 - SYS_GETPEERNAME = 5051 - SYS_SOCKETPAIR = 5052 - SYS_SETSOCKOPT = 5053 - SYS_GETSOCKOPT = 5054 - SYS_CLONE = 5055 - SYS_FORK = 5056 - SYS_EXECVE = 5057 - SYS_EXIT = 5058 - SYS_WAIT4 = 5059 - SYS_KILL = 5060 - SYS_UNAME = 5061 - SYS_SEMGET = 5062 - SYS_SEMOP = 5063 - SYS_SEMCTL = 5064 - SYS_SHMDT = 5065 - SYS_MSGGET = 5066 - SYS_MSGSND = 5067 - SYS_MSGRCV = 5068 - SYS_MSGCTL = 5069 - SYS_FCNTL = 5070 - SYS_FLOCK = 5071 - SYS_FSYNC = 5072 - SYS_FDATASYNC = 5073 - SYS_TRUNCATE = 5074 - SYS_FTRUNCATE = 5075 - SYS_GETDENTS = 5076 - SYS_GETCWD = 5077 - SYS_CHDIR = 5078 - SYS_FCHDIR = 5079 - SYS_RENAME = 5080 - SYS_MKDIR = 5081 - SYS_RMDIR = 5082 - SYS_CREAT = 5083 - SYS_LINK = 5084 - SYS_UNLINK = 5085 - SYS_SYMLINK = 5086 - SYS_READLINK = 5087 - SYS_CHMOD = 5088 - SYS_FCHMOD = 5089 - SYS_CHOWN = 5090 - SYS_FCHOWN = 5091 - SYS_LCHOWN = 5092 - SYS_UMASK = 5093 - SYS_GETTIMEOFDAY = 5094 - SYS_GETRLIMIT = 5095 - SYS_GETRUSAGE = 5096 - SYS_SYSINFO = 5097 - SYS_TIMES = 5098 - SYS_PTRACE = 5099 - SYS_GETUID = 5100 - SYS_SYSLOG = 5101 - SYS_GETGID = 5102 - SYS_SETUID = 5103 - SYS_SETGID = 5104 - SYS_GETEUID = 5105 - SYS_GETEGID = 5106 - SYS_SETPGID = 5107 - SYS_GETPPID = 5108 - SYS_GETPGRP = 5109 - SYS_SETSID = 5110 - SYS_SETREUID = 5111 - SYS_SETREGID = 5112 - SYS_GETGROUPS = 5113 - SYS_SETGROUPS = 5114 - SYS_SETRESUID = 5115 - SYS_GETRESUID = 5116 - SYS_SETRESGID = 5117 - SYS_GETRESGID = 5118 - SYS_GETPGID = 5119 - SYS_SETFSUID = 5120 - SYS_SETFSGID = 5121 - SYS_GETSID = 5122 - SYS_CAPGET = 5123 - SYS_CAPSET = 5124 - SYS_RT_SIGPENDING = 5125 - SYS_RT_SIGTIMEDWAIT = 5126 - SYS_RT_SIGQUEUEINFO = 5127 - SYS_RT_SIGSUSPEND = 5128 - SYS_SIGALTSTACK = 5129 - SYS_UTIME = 5130 - SYS_MKNOD = 5131 - SYS_PERSONALITY = 5132 - SYS_USTAT = 5133 - SYS_STATFS = 5134 - SYS_FSTATFS = 5135 - SYS_SYSFS = 5136 - SYS_GETPRIORITY = 5137 - SYS_SETPRIORITY = 5138 - SYS_SCHED_SETPARAM = 5139 - SYS_SCHED_GETPARAM = 5140 - SYS_SCHED_SETSCHEDULER = 5141 - SYS_SCHED_GETSCHEDULER = 5142 - SYS_SCHED_GET_PRIORITY_MAX = 5143 - SYS_SCHED_GET_PRIORITY_MIN = 5144 - SYS_SCHED_RR_GET_INTERVAL = 5145 - SYS_MLOCK = 5146 - SYS_MUNLOCK = 5147 - SYS_MLOCKALL = 5148 - SYS_MUNLOCKALL = 5149 - SYS_VHANGUP = 5150 - SYS_PIVOT_ROOT = 5151 - SYS__SYSCTL = 5152 - SYS_PRCTL = 5153 - SYS_ADJTIMEX = 5154 - SYS_SETRLIMIT = 5155 - SYS_CHROOT = 5156 - SYS_SYNC = 5157 - SYS_ACCT = 5158 - SYS_SETTIMEOFDAY = 5159 - SYS_MOUNT = 5160 - SYS_UMOUNT2 = 5161 - SYS_SWAPON = 5162 - SYS_SWAPOFF = 5163 - SYS_REBOOT = 5164 - SYS_SETHOSTNAME = 5165 - SYS_SETDOMAINNAME = 5166 - SYS_CREATE_MODULE = 5167 - SYS_INIT_MODULE = 5168 - SYS_DELETE_MODULE = 5169 - SYS_GET_KERNEL_SYMS = 5170 - SYS_QUERY_MODULE = 5171 - SYS_QUOTACTL = 5172 - SYS_NFSSERVCTL = 5173 - SYS_GETPMSG = 5174 - SYS_PUTPMSG = 5175 - SYS_AFS_SYSCALL = 5176 - SYS_RESERVED177 = 5177 - SYS_GETTID = 5178 - SYS_READAHEAD = 5179 - SYS_SETXATTR = 5180 - SYS_LSETXATTR = 5181 - SYS_FSETXATTR = 5182 - SYS_GETXATTR = 5183 - SYS_LGETXATTR = 5184 - SYS_FGETXATTR = 5185 - SYS_LISTXATTR = 5186 - SYS_LLISTXATTR = 5187 - SYS_FLISTXATTR = 5188 - SYS_REMOVEXATTR = 5189 - SYS_LREMOVEXATTR = 5190 - SYS_FREMOVEXATTR = 5191 - SYS_TKILL = 5192 - SYS_RESERVED193 = 5193 - SYS_FUTEX = 5194 - SYS_SCHED_SETAFFINITY = 5195 - SYS_SCHED_GETAFFINITY = 5196 - SYS_CACHEFLUSH = 5197 - SYS_CACHECTL = 5198 - SYS_SYSMIPS = 5199 - SYS_IO_SETUP = 5200 - SYS_IO_DESTROY = 5201 - SYS_IO_GETEVENTS = 5202 - SYS_IO_SUBMIT = 5203 - SYS_IO_CANCEL = 5204 - SYS_EXIT_GROUP = 5205 - SYS_LOOKUP_DCOOKIE = 5206 - SYS_EPOLL_CREATE = 5207 - SYS_EPOLL_CTL = 5208 - SYS_EPOLL_WAIT = 5209 - SYS_REMAP_FILE_PAGES = 5210 - SYS_RT_SIGRETURN = 5211 - SYS_SET_TID_ADDRESS = 5212 - SYS_RESTART_SYSCALL = 5213 - SYS_SEMTIMEDOP = 5214 - SYS_FADVISE64 = 5215 - SYS_TIMER_CREATE = 5216 - SYS_TIMER_SETTIME = 5217 - SYS_TIMER_GETTIME = 5218 - SYS_TIMER_GETOVERRUN = 5219 - SYS_TIMER_DELETE = 5220 - SYS_CLOCK_SETTIME = 5221 - SYS_CLOCK_GETTIME = 5222 - SYS_CLOCK_GETRES = 5223 - SYS_CLOCK_NANOSLEEP = 5224 - SYS_TGKILL = 5225 - SYS_UTIMES = 5226 - SYS_MBIND = 5227 - SYS_GET_MEMPOLICY = 5228 - SYS_SET_MEMPOLICY = 5229 - SYS_MQ_OPEN = 5230 - SYS_MQ_UNLINK = 5231 - SYS_MQ_TIMEDSEND = 5232 - SYS_MQ_TIMEDRECEIVE = 5233 - SYS_MQ_NOTIFY = 5234 - SYS_MQ_GETSETATTR = 5235 - SYS_VSERVER = 5236 - SYS_WAITID = 5237 - SYS_ADD_KEY = 5239 - SYS_REQUEST_KEY = 5240 - SYS_KEYCTL = 5241 - SYS_SET_THREAD_AREA = 5242 - SYS_INOTIFY_INIT = 5243 - SYS_INOTIFY_ADD_WATCH = 5244 - SYS_INOTIFY_RM_WATCH = 5245 - SYS_MIGRATE_PAGES = 5246 - SYS_OPENAT = 5247 - SYS_MKDIRAT = 5248 - SYS_MKNODAT = 5249 - SYS_FCHOWNAT = 5250 - SYS_FUTIMESAT = 5251 - SYS_NEWFSTATAT = 5252 - SYS_UNLINKAT = 5253 - SYS_RENAMEAT = 5254 - SYS_LINKAT = 5255 - SYS_SYMLINKAT = 5256 - SYS_READLINKAT = 5257 - SYS_FCHMODAT = 5258 - SYS_FACCESSAT = 5259 - SYS_PSELECT6 = 5260 - SYS_PPOLL = 5261 - SYS_UNSHARE = 5262 - SYS_SPLICE = 5263 - SYS_SYNC_FILE_RANGE = 5264 - SYS_TEE = 5265 - SYS_VMSPLICE = 5266 - SYS_MOVE_PAGES = 5267 - SYS_SET_ROBUST_LIST = 5268 - SYS_GET_ROBUST_LIST = 5269 - SYS_KEXEC_LOAD = 5270 - SYS_GETCPU = 5271 - SYS_EPOLL_PWAIT = 5272 - SYS_IOPRIO_SET = 5273 - SYS_IOPRIO_GET = 5274 - SYS_UTIMENSAT = 5275 - SYS_SIGNALFD = 5276 - SYS_TIMERFD = 5277 - SYS_EVENTFD = 5278 - SYS_FALLOCATE = 5279 - SYS_TIMERFD_CREATE = 5280 - SYS_TIMERFD_GETTIME = 5281 - SYS_TIMERFD_SETTIME = 5282 - SYS_SIGNALFD4 = 5283 - SYS_EVENTFD2 = 5284 - SYS_EPOLL_CREATE1 = 5285 - SYS_DUP3 = 5286 - SYS_PIPE2 = 5287 - SYS_INOTIFY_INIT1 = 5288 - SYS_PREADV = 5289 - SYS_PWRITEV = 5290 - SYS_RT_TGSIGQUEUEINFO = 5291 - SYS_PERF_EVENT_OPEN = 5292 - SYS_ACCEPT4 = 5293 - SYS_RECVMMSG = 5294 - SYS_FANOTIFY_INIT = 5295 - SYS_FANOTIFY_MARK = 5296 - SYS_PRLIMIT64 = 5297 - SYS_NAME_TO_HANDLE_AT = 5298 - SYS_OPEN_BY_HANDLE_AT = 5299 - SYS_CLOCK_ADJTIME = 5300 - SYS_SYNCFS = 5301 - SYS_SENDMMSG = 5302 - SYS_SETNS = 5303 - SYS_PROCESS_VM_READV = 5304 - SYS_PROCESS_VM_WRITEV = 5305 - SYS_KCMP = 5306 - SYS_FINIT_MODULE = 5307 - SYS_GETDENTS64 = 5308 - SYS_SCHED_SETATTR = 5309 - SYS_SCHED_GETATTR = 5310 - SYS_RENAMEAT2 = 5311 - SYS_SECCOMP = 5312 - SYS_GETRANDOM = 5313 - SYS_MEMFD_CREATE = 5314 - SYS_BPF = 5315 - SYS_EXECVEAT = 5316 - SYS_USERFAULTFD = 5317 - SYS_MEMBARRIER = 5318 - SYS_MLOCK2 = 5319 - SYS_COPY_FILE_RANGE = 5320 - SYS_PREADV2 = 5321 - SYS_PWRITEV2 = 5322 - SYS_PKEY_MPROTECT = 5323 - SYS_PKEY_ALLOC = 5324 - SYS_PKEY_FREE = 5325 - SYS_STATX = 5326 - SYS_RSEQ = 5327 - SYS_IO_PGETEVENTS = 5328 - SYS_PIDFD_SEND_SIGNAL = 5424 - SYS_IO_URING_SETUP = 5425 - SYS_IO_URING_ENTER = 5426 - SYS_IO_URING_REGISTER = 5427 - SYS_OPEN_TREE = 5428 - SYS_MOVE_MOUNT = 5429 - SYS_FSOPEN = 5430 - SYS_FSCONFIG = 5431 - SYS_FSMOUNT = 5432 - SYS_FSPICK = 5433 - SYS_PIDFD_OPEN = 5434 - SYS_CLONE3 = 5435 - SYS_CLOSE_RANGE = 5436 - SYS_OPENAT2 = 5437 - SYS_PIDFD_GETFD = 5438 - SYS_FACCESSAT2 = 5439 - SYS_PROCESS_MADVISE = 5440 - SYS_EPOLL_PWAIT2 = 5441 - SYS_MOUNT_SETATTR = 5442 + SYS_READ = 5000 + SYS_WRITE = 5001 + SYS_OPEN = 5002 + SYS_CLOSE = 5003 + SYS_STAT = 5004 + SYS_FSTAT = 5005 + SYS_LSTAT = 5006 + SYS_POLL = 5007 + SYS_LSEEK = 5008 + SYS_MMAP = 5009 + SYS_MPROTECT = 5010 + SYS_MUNMAP = 5011 + SYS_BRK = 5012 + SYS_RT_SIGACTION = 5013 + SYS_RT_SIGPROCMASK = 5014 + SYS_IOCTL = 5015 + SYS_PREAD64 = 5016 + SYS_PWRITE64 = 5017 + SYS_READV = 5018 + SYS_WRITEV = 5019 + SYS_ACCESS = 5020 + SYS_PIPE = 5021 + SYS__NEWSELECT = 5022 + SYS_SCHED_YIELD = 5023 + SYS_MREMAP = 5024 + SYS_MSYNC = 5025 + SYS_MINCORE = 5026 + SYS_MADVISE = 5027 + SYS_SHMGET = 5028 + SYS_SHMAT = 5029 + SYS_SHMCTL = 5030 + SYS_DUP = 5031 + SYS_DUP2 = 5032 + SYS_PAUSE = 5033 + SYS_NANOSLEEP = 5034 + SYS_GETITIMER = 5035 + SYS_SETITIMER = 5036 + SYS_ALARM = 5037 + SYS_GETPID = 5038 + SYS_SENDFILE = 5039 + SYS_SOCKET = 5040 + SYS_CONNECT = 5041 + SYS_ACCEPT = 5042 + SYS_SENDTO = 5043 + SYS_RECVFROM = 5044 + SYS_SENDMSG = 5045 + SYS_RECVMSG = 5046 + SYS_SHUTDOWN = 5047 + SYS_BIND = 5048 + SYS_LISTEN = 5049 + SYS_GETSOCKNAME = 5050 + SYS_GETPEERNAME = 5051 + SYS_SOCKETPAIR = 5052 + SYS_SETSOCKOPT = 5053 + SYS_GETSOCKOPT = 5054 + SYS_CLONE = 5055 + SYS_FORK = 5056 + SYS_EXECVE = 5057 + SYS_EXIT = 5058 + SYS_WAIT4 = 5059 + SYS_KILL = 5060 + SYS_UNAME = 5061 + SYS_SEMGET = 5062 + SYS_SEMOP = 5063 + SYS_SEMCTL = 5064 + SYS_SHMDT = 5065 + SYS_MSGGET = 5066 + SYS_MSGSND = 5067 + SYS_MSGRCV = 5068 + SYS_MSGCTL = 5069 + SYS_FCNTL = 5070 + SYS_FLOCK = 5071 + SYS_FSYNC = 5072 + SYS_FDATASYNC = 5073 + SYS_TRUNCATE = 5074 + SYS_FTRUNCATE = 5075 + SYS_GETDENTS = 5076 + SYS_GETCWD = 5077 + SYS_CHDIR = 5078 + SYS_FCHDIR = 5079 + SYS_RENAME = 5080 + SYS_MKDIR = 5081 + SYS_RMDIR = 5082 + SYS_CREAT = 5083 + SYS_LINK = 5084 + SYS_UNLINK = 5085 + SYS_SYMLINK = 5086 + SYS_READLINK = 5087 + SYS_CHMOD = 5088 + SYS_FCHMOD = 5089 + SYS_CHOWN = 5090 + SYS_FCHOWN = 5091 + SYS_LCHOWN = 5092 + SYS_UMASK = 5093 + SYS_GETTIMEOFDAY = 5094 + SYS_GETRLIMIT = 5095 + SYS_GETRUSAGE = 5096 + SYS_SYSINFO = 5097 + SYS_TIMES = 5098 + SYS_PTRACE = 5099 + SYS_GETUID = 5100 + SYS_SYSLOG = 5101 + SYS_GETGID = 5102 + SYS_SETUID = 5103 + SYS_SETGID = 5104 + SYS_GETEUID = 5105 + SYS_GETEGID = 5106 + SYS_SETPGID = 5107 + SYS_GETPPID = 5108 + SYS_GETPGRP = 5109 + SYS_SETSID = 5110 + SYS_SETREUID = 5111 + SYS_SETREGID = 5112 + SYS_GETGROUPS = 5113 + SYS_SETGROUPS = 5114 + SYS_SETRESUID = 5115 + SYS_GETRESUID = 5116 + SYS_SETRESGID = 5117 + SYS_GETRESGID = 5118 + SYS_GETPGID = 5119 + SYS_SETFSUID = 5120 + SYS_SETFSGID = 5121 + SYS_GETSID = 5122 + SYS_CAPGET = 5123 + SYS_CAPSET = 5124 + SYS_RT_SIGPENDING = 5125 + SYS_RT_SIGTIMEDWAIT = 5126 + SYS_RT_SIGQUEUEINFO = 5127 + SYS_RT_SIGSUSPEND = 5128 + SYS_SIGALTSTACK = 5129 + SYS_UTIME = 5130 + SYS_MKNOD = 5131 + SYS_PERSONALITY = 5132 + SYS_USTAT = 5133 + SYS_STATFS = 5134 + SYS_FSTATFS = 5135 + SYS_SYSFS = 5136 + SYS_GETPRIORITY = 5137 + SYS_SETPRIORITY = 5138 + SYS_SCHED_SETPARAM = 5139 + SYS_SCHED_GETPARAM = 5140 + SYS_SCHED_SETSCHEDULER = 5141 + SYS_SCHED_GETSCHEDULER = 5142 + SYS_SCHED_GET_PRIORITY_MAX = 5143 + SYS_SCHED_GET_PRIORITY_MIN = 5144 + SYS_SCHED_RR_GET_INTERVAL = 5145 + SYS_MLOCK = 5146 + SYS_MUNLOCK = 5147 + SYS_MLOCKALL = 5148 + SYS_MUNLOCKALL = 5149 + SYS_VHANGUP = 5150 + SYS_PIVOT_ROOT = 5151 + SYS__SYSCTL = 5152 + SYS_PRCTL = 5153 + SYS_ADJTIMEX = 5154 + SYS_SETRLIMIT = 5155 + SYS_CHROOT = 5156 + SYS_SYNC = 5157 + SYS_ACCT = 5158 + SYS_SETTIMEOFDAY = 5159 + SYS_MOUNT = 5160 + SYS_UMOUNT2 = 5161 + SYS_SWAPON = 5162 + SYS_SWAPOFF = 5163 + SYS_REBOOT = 5164 + SYS_SETHOSTNAME = 5165 + SYS_SETDOMAINNAME = 5166 + SYS_CREATE_MODULE = 5167 + SYS_INIT_MODULE = 5168 + SYS_DELETE_MODULE = 5169 + SYS_GET_KERNEL_SYMS = 5170 + SYS_QUERY_MODULE = 5171 + SYS_QUOTACTL = 5172 + SYS_NFSSERVCTL = 5173 + SYS_GETPMSG = 5174 + SYS_PUTPMSG = 5175 + SYS_AFS_SYSCALL = 5176 + SYS_RESERVED177 = 5177 + SYS_GETTID = 5178 + SYS_READAHEAD = 5179 + SYS_SETXATTR = 5180 + SYS_LSETXATTR = 5181 + SYS_FSETXATTR = 5182 + SYS_GETXATTR = 5183 + SYS_LGETXATTR = 5184 + SYS_FGETXATTR = 5185 + SYS_LISTXATTR = 5186 + SYS_LLISTXATTR = 5187 + SYS_FLISTXATTR = 5188 + SYS_REMOVEXATTR = 5189 + SYS_LREMOVEXATTR = 5190 + SYS_FREMOVEXATTR = 5191 + SYS_TKILL = 5192 + SYS_RESERVED193 = 5193 + SYS_FUTEX = 5194 + SYS_SCHED_SETAFFINITY = 5195 + SYS_SCHED_GETAFFINITY = 5196 + SYS_CACHEFLUSH = 5197 + SYS_CACHECTL = 5198 + SYS_SYSMIPS = 5199 + SYS_IO_SETUP = 5200 + SYS_IO_DESTROY = 5201 + SYS_IO_GETEVENTS = 5202 + SYS_IO_SUBMIT = 5203 + SYS_IO_CANCEL = 5204 + SYS_EXIT_GROUP = 5205 + SYS_LOOKUP_DCOOKIE = 5206 + SYS_EPOLL_CREATE = 5207 + SYS_EPOLL_CTL = 5208 + SYS_EPOLL_WAIT = 5209 + SYS_REMAP_FILE_PAGES = 5210 + SYS_RT_SIGRETURN = 5211 + SYS_SET_TID_ADDRESS = 5212 + SYS_RESTART_SYSCALL = 5213 + SYS_SEMTIMEDOP = 5214 + SYS_FADVISE64 = 5215 + SYS_TIMER_CREATE = 5216 + SYS_TIMER_SETTIME = 5217 + SYS_TIMER_GETTIME = 5218 + SYS_TIMER_GETOVERRUN = 5219 + SYS_TIMER_DELETE = 5220 + SYS_CLOCK_SETTIME = 5221 + SYS_CLOCK_GETTIME = 5222 + SYS_CLOCK_GETRES = 5223 + SYS_CLOCK_NANOSLEEP = 5224 + SYS_TGKILL = 5225 + SYS_UTIMES = 5226 + SYS_MBIND = 5227 + SYS_GET_MEMPOLICY = 5228 + SYS_SET_MEMPOLICY = 5229 + SYS_MQ_OPEN = 5230 + SYS_MQ_UNLINK = 5231 + SYS_MQ_TIMEDSEND = 5232 + SYS_MQ_TIMEDRECEIVE = 5233 + SYS_MQ_NOTIFY = 5234 + SYS_MQ_GETSETATTR = 5235 + SYS_VSERVER = 5236 + SYS_WAITID = 5237 + SYS_ADD_KEY = 5239 + SYS_REQUEST_KEY = 5240 + SYS_KEYCTL = 5241 + SYS_SET_THREAD_AREA = 5242 + SYS_INOTIFY_INIT = 5243 + SYS_INOTIFY_ADD_WATCH = 5244 + SYS_INOTIFY_RM_WATCH = 5245 + SYS_MIGRATE_PAGES = 5246 + SYS_OPENAT = 5247 + SYS_MKDIRAT = 5248 + SYS_MKNODAT = 5249 + SYS_FCHOWNAT = 5250 + SYS_FUTIMESAT = 5251 + SYS_NEWFSTATAT = 5252 + SYS_UNLINKAT = 5253 + SYS_RENAMEAT = 5254 + SYS_LINKAT = 5255 + SYS_SYMLINKAT = 5256 + SYS_READLINKAT = 5257 + SYS_FCHMODAT = 5258 + SYS_FACCESSAT = 5259 + SYS_PSELECT6 = 5260 + SYS_PPOLL = 5261 + SYS_UNSHARE = 5262 + SYS_SPLICE = 5263 + SYS_SYNC_FILE_RANGE = 5264 + SYS_TEE = 5265 + SYS_VMSPLICE = 5266 + SYS_MOVE_PAGES = 5267 + SYS_SET_ROBUST_LIST = 5268 + SYS_GET_ROBUST_LIST = 5269 + SYS_KEXEC_LOAD = 5270 + SYS_GETCPU = 5271 + SYS_EPOLL_PWAIT = 5272 + SYS_IOPRIO_SET = 5273 + SYS_IOPRIO_GET = 5274 + SYS_UTIMENSAT = 5275 + SYS_SIGNALFD = 5276 + SYS_TIMERFD = 5277 + SYS_EVENTFD = 5278 + SYS_FALLOCATE = 5279 + SYS_TIMERFD_CREATE = 5280 + SYS_TIMERFD_GETTIME = 5281 + SYS_TIMERFD_SETTIME = 5282 + SYS_SIGNALFD4 = 5283 + SYS_EVENTFD2 = 5284 + SYS_EPOLL_CREATE1 = 5285 + SYS_DUP3 = 5286 + SYS_PIPE2 = 5287 + SYS_INOTIFY_INIT1 = 5288 + SYS_PREADV = 5289 + SYS_PWRITEV = 5290 + SYS_RT_TGSIGQUEUEINFO = 5291 + SYS_PERF_EVENT_OPEN = 5292 + SYS_ACCEPT4 = 5293 + SYS_RECVMMSG = 5294 + SYS_FANOTIFY_INIT = 5295 + SYS_FANOTIFY_MARK = 5296 + SYS_PRLIMIT64 = 5297 + SYS_NAME_TO_HANDLE_AT = 5298 + SYS_OPEN_BY_HANDLE_AT = 5299 + SYS_CLOCK_ADJTIME = 5300 + SYS_SYNCFS = 5301 + SYS_SENDMMSG = 5302 + SYS_SETNS = 5303 + SYS_PROCESS_VM_READV = 5304 + SYS_PROCESS_VM_WRITEV = 5305 + SYS_KCMP = 5306 + SYS_FINIT_MODULE = 5307 + SYS_GETDENTS64 = 5308 + SYS_SCHED_SETATTR = 5309 + SYS_SCHED_GETATTR = 5310 + SYS_RENAMEAT2 = 5311 + SYS_SECCOMP = 5312 + SYS_GETRANDOM = 5313 + SYS_MEMFD_CREATE = 5314 + SYS_BPF = 5315 + SYS_EXECVEAT = 5316 + SYS_USERFAULTFD = 5317 + SYS_MEMBARRIER = 5318 + SYS_MLOCK2 = 5319 + SYS_COPY_FILE_RANGE = 5320 + SYS_PREADV2 = 5321 + SYS_PWRITEV2 = 5322 + SYS_PKEY_MPROTECT = 5323 + SYS_PKEY_ALLOC = 5324 + SYS_PKEY_FREE = 5325 + SYS_STATX = 5326 + SYS_RSEQ = 5327 + SYS_IO_PGETEVENTS = 5328 + SYS_PIDFD_SEND_SIGNAL = 5424 + SYS_IO_URING_SETUP = 5425 + SYS_IO_URING_ENTER = 5426 + SYS_IO_URING_REGISTER = 5427 + SYS_OPEN_TREE = 5428 + SYS_MOVE_MOUNT = 5429 + SYS_FSOPEN = 5430 + SYS_FSCONFIG = 5431 + SYS_FSMOUNT = 5432 + SYS_FSPICK = 5433 + SYS_PIDFD_OPEN = 5434 + SYS_CLONE3 = 5435 + SYS_CLOSE_RANGE = 5436 + SYS_OPENAT2 = 5437 + SYS_PIDFD_GETFD = 5438 + SYS_FACCESSAT2 = 5439 + SYS_PROCESS_MADVISE = 5440 + SYS_EPOLL_PWAIT2 = 5441 + SYS_MOUNT_SETATTR = 5442 + SYS_LANDLOCK_CREATE_RULESET = 5444 + SYS_LANDLOCK_ADD_RULE = 5445 + SYS_LANDLOCK_RESTRICT_SELF = 5446 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go index 46077689ab..77f5728da6 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go @@ -7,351 +7,354 @@ package unix const ( - SYS_READ = 5000 - SYS_WRITE = 5001 - SYS_OPEN = 5002 - SYS_CLOSE = 5003 - SYS_STAT = 5004 - SYS_FSTAT = 5005 - SYS_LSTAT = 5006 - SYS_POLL = 5007 - SYS_LSEEK = 5008 - SYS_MMAP = 5009 - SYS_MPROTECT = 5010 - SYS_MUNMAP = 5011 - SYS_BRK = 5012 - SYS_RT_SIGACTION = 5013 - SYS_RT_SIGPROCMASK = 5014 - SYS_IOCTL = 5015 - SYS_PREAD64 = 5016 - SYS_PWRITE64 = 5017 - SYS_READV = 5018 - SYS_WRITEV = 5019 - SYS_ACCESS = 5020 - SYS_PIPE = 5021 - SYS__NEWSELECT = 5022 - SYS_SCHED_YIELD = 5023 - SYS_MREMAP = 5024 - SYS_MSYNC = 5025 - SYS_MINCORE = 5026 - SYS_MADVISE = 5027 - SYS_SHMGET = 5028 - SYS_SHMAT = 5029 - SYS_SHMCTL = 5030 - SYS_DUP = 5031 - SYS_DUP2 = 5032 - SYS_PAUSE = 5033 - SYS_NANOSLEEP = 5034 - SYS_GETITIMER = 5035 - SYS_SETITIMER = 5036 - SYS_ALARM = 5037 - SYS_GETPID = 5038 - SYS_SENDFILE = 5039 - SYS_SOCKET = 5040 - SYS_CONNECT = 5041 - SYS_ACCEPT = 5042 - SYS_SENDTO = 5043 - SYS_RECVFROM = 5044 - SYS_SENDMSG = 5045 - SYS_RECVMSG = 5046 - SYS_SHUTDOWN = 5047 - SYS_BIND = 5048 - SYS_LISTEN = 5049 - SYS_GETSOCKNAME = 5050 - SYS_GETPEERNAME = 5051 - SYS_SOCKETPAIR = 5052 - SYS_SETSOCKOPT = 5053 - SYS_GETSOCKOPT = 5054 - SYS_CLONE = 5055 - SYS_FORK = 5056 - SYS_EXECVE = 5057 - SYS_EXIT = 5058 - SYS_WAIT4 = 5059 - SYS_KILL = 5060 - SYS_UNAME = 5061 - SYS_SEMGET = 5062 - SYS_SEMOP = 5063 - SYS_SEMCTL = 5064 - SYS_SHMDT = 5065 - SYS_MSGGET = 5066 - SYS_MSGSND = 5067 - SYS_MSGRCV = 5068 - SYS_MSGCTL = 5069 - SYS_FCNTL = 5070 - SYS_FLOCK = 5071 - SYS_FSYNC = 5072 - SYS_FDATASYNC = 5073 - SYS_TRUNCATE = 5074 - SYS_FTRUNCATE = 5075 - SYS_GETDENTS = 5076 - SYS_GETCWD = 5077 - SYS_CHDIR = 5078 - SYS_FCHDIR = 5079 - SYS_RENAME = 5080 - SYS_MKDIR = 5081 - SYS_RMDIR = 5082 - SYS_CREAT = 5083 - SYS_LINK = 5084 - SYS_UNLINK = 5085 - SYS_SYMLINK = 5086 - SYS_READLINK = 5087 - SYS_CHMOD = 5088 - SYS_FCHMOD = 5089 - SYS_CHOWN = 5090 - SYS_FCHOWN = 5091 - SYS_LCHOWN = 5092 - SYS_UMASK = 5093 - SYS_GETTIMEOFDAY = 5094 - SYS_GETRLIMIT = 5095 - SYS_GETRUSAGE = 5096 - SYS_SYSINFO = 5097 - SYS_TIMES = 5098 - SYS_PTRACE = 5099 - SYS_GETUID = 5100 - SYS_SYSLOG = 5101 - SYS_GETGID = 5102 - SYS_SETUID = 5103 - SYS_SETGID = 5104 - SYS_GETEUID = 5105 - SYS_GETEGID = 5106 - SYS_SETPGID = 5107 - SYS_GETPPID = 5108 - SYS_GETPGRP = 5109 - SYS_SETSID = 5110 - SYS_SETREUID = 5111 - SYS_SETREGID = 5112 - SYS_GETGROUPS = 5113 - SYS_SETGROUPS = 5114 - SYS_SETRESUID = 5115 - SYS_GETRESUID = 5116 - SYS_SETRESGID = 5117 - SYS_GETRESGID = 5118 - SYS_GETPGID = 5119 - SYS_SETFSUID = 5120 - SYS_SETFSGID = 5121 - SYS_GETSID = 5122 - SYS_CAPGET = 5123 - SYS_CAPSET = 5124 - SYS_RT_SIGPENDING = 5125 - SYS_RT_SIGTIMEDWAIT = 5126 - SYS_RT_SIGQUEUEINFO = 5127 - SYS_RT_SIGSUSPEND = 5128 - SYS_SIGALTSTACK = 5129 - SYS_UTIME = 5130 - SYS_MKNOD = 5131 - SYS_PERSONALITY = 5132 - SYS_USTAT = 5133 - SYS_STATFS = 5134 - SYS_FSTATFS = 5135 - SYS_SYSFS = 5136 - SYS_GETPRIORITY = 5137 - SYS_SETPRIORITY = 5138 - SYS_SCHED_SETPARAM = 5139 - SYS_SCHED_GETPARAM = 5140 - SYS_SCHED_SETSCHEDULER = 5141 - SYS_SCHED_GETSCHEDULER = 5142 - SYS_SCHED_GET_PRIORITY_MAX = 5143 - SYS_SCHED_GET_PRIORITY_MIN = 5144 - SYS_SCHED_RR_GET_INTERVAL = 5145 - SYS_MLOCK = 5146 - SYS_MUNLOCK = 5147 - SYS_MLOCKALL = 5148 - SYS_MUNLOCKALL = 5149 - SYS_VHANGUP = 5150 - SYS_PIVOT_ROOT = 5151 - SYS__SYSCTL = 5152 - SYS_PRCTL = 5153 - SYS_ADJTIMEX = 5154 - SYS_SETRLIMIT = 5155 - SYS_CHROOT = 5156 - SYS_SYNC = 5157 - SYS_ACCT = 5158 - SYS_SETTIMEOFDAY = 5159 - SYS_MOUNT = 5160 - SYS_UMOUNT2 = 5161 - SYS_SWAPON = 5162 - SYS_SWAPOFF = 5163 - SYS_REBOOT = 5164 - SYS_SETHOSTNAME = 5165 - SYS_SETDOMAINNAME = 5166 - SYS_CREATE_MODULE = 5167 - SYS_INIT_MODULE = 5168 - SYS_DELETE_MODULE = 5169 - SYS_GET_KERNEL_SYMS = 5170 - SYS_QUERY_MODULE = 5171 - SYS_QUOTACTL = 5172 - SYS_NFSSERVCTL = 5173 - SYS_GETPMSG = 5174 - SYS_PUTPMSG = 5175 - SYS_AFS_SYSCALL = 5176 - SYS_RESERVED177 = 5177 - SYS_GETTID = 5178 - SYS_READAHEAD = 5179 - SYS_SETXATTR = 5180 - SYS_LSETXATTR = 5181 - SYS_FSETXATTR = 5182 - SYS_GETXATTR = 5183 - SYS_LGETXATTR = 5184 - SYS_FGETXATTR = 5185 - SYS_LISTXATTR = 5186 - SYS_LLISTXATTR = 5187 - SYS_FLISTXATTR = 5188 - SYS_REMOVEXATTR = 5189 - SYS_LREMOVEXATTR = 5190 - SYS_FREMOVEXATTR = 5191 - SYS_TKILL = 5192 - SYS_RESERVED193 = 5193 - SYS_FUTEX = 5194 - SYS_SCHED_SETAFFINITY = 5195 - SYS_SCHED_GETAFFINITY = 5196 - SYS_CACHEFLUSH = 5197 - SYS_CACHECTL = 5198 - SYS_SYSMIPS = 5199 - SYS_IO_SETUP = 5200 - SYS_IO_DESTROY = 5201 - SYS_IO_GETEVENTS = 5202 - SYS_IO_SUBMIT = 5203 - SYS_IO_CANCEL = 5204 - SYS_EXIT_GROUP = 5205 - SYS_LOOKUP_DCOOKIE = 5206 - SYS_EPOLL_CREATE = 5207 - SYS_EPOLL_CTL = 5208 - SYS_EPOLL_WAIT = 5209 - SYS_REMAP_FILE_PAGES = 5210 - SYS_RT_SIGRETURN = 5211 - SYS_SET_TID_ADDRESS = 5212 - SYS_RESTART_SYSCALL = 5213 - SYS_SEMTIMEDOP = 5214 - SYS_FADVISE64 = 5215 - SYS_TIMER_CREATE = 5216 - SYS_TIMER_SETTIME = 5217 - SYS_TIMER_GETTIME = 5218 - SYS_TIMER_GETOVERRUN = 5219 - SYS_TIMER_DELETE = 5220 - SYS_CLOCK_SETTIME = 5221 - SYS_CLOCK_GETTIME = 5222 - SYS_CLOCK_GETRES = 5223 - SYS_CLOCK_NANOSLEEP = 5224 - SYS_TGKILL = 5225 - SYS_UTIMES = 5226 - SYS_MBIND = 5227 - SYS_GET_MEMPOLICY = 5228 - SYS_SET_MEMPOLICY = 5229 - SYS_MQ_OPEN = 5230 - SYS_MQ_UNLINK = 5231 - SYS_MQ_TIMEDSEND = 5232 - SYS_MQ_TIMEDRECEIVE = 5233 - SYS_MQ_NOTIFY = 5234 - SYS_MQ_GETSETATTR = 5235 - SYS_VSERVER = 5236 - SYS_WAITID = 5237 - SYS_ADD_KEY = 5239 - SYS_REQUEST_KEY = 5240 - SYS_KEYCTL = 5241 - SYS_SET_THREAD_AREA = 5242 - SYS_INOTIFY_INIT = 5243 - SYS_INOTIFY_ADD_WATCH = 5244 - SYS_INOTIFY_RM_WATCH = 5245 - SYS_MIGRATE_PAGES = 5246 - SYS_OPENAT = 5247 - SYS_MKDIRAT = 5248 - SYS_MKNODAT = 5249 - SYS_FCHOWNAT = 5250 - SYS_FUTIMESAT = 5251 - SYS_NEWFSTATAT = 5252 - SYS_UNLINKAT = 5253 - SYS_RENAMEAT = 5254 - SYS_LINKAT = 5255 - SYS_SYMLINKAT = 5256 - SYS_READLINKAT = 5257 - SYS_FCHMODAT = 5258 - SYS_FACCESSAT = 5259 - SYS_PSELECT6 = 5260 - SYS_PPOLL = 5261 - SYS_UNSHARE = 5262 - SYS_SPLICE = 5263 - SYS_SYNC_FILE_RANGE = 5264 - SYS_TEE = 5265 - SYS_VMSPLICE = 5266 - SYS_MOVE_PAGES = 5267 - SYS_SET_ROBUST_LIST = 5268 - SYS_GET_ROBUST_LIST = 5269 - SYS_KEXEC_LOAD = 5270 - SYS_GETCPU = 5271 - SYS_EPOLL_PWAIT = 5272 - SYS_IOPRIO_SET = 5273 - SYS_IOPRIO_GET = 5274 - SYS_UTIMENSAT = 5275 - SYS_SIGNALFD = 5276 - SYS_TIMERFD = 5277 - SYS_EVENTFD = 5278 - SYS_FALLOCATE = 5279 - SYS_TIMERFD_CREATE = 5280 - SYS_TIMERFD_GETTIME = 5281 - SYS_TIMERFD_SETTIME = 5282 - SYS_SIGNALFD4 = 5283 - SYS_EVENTFD2 = 5284 - SYS_EPOLL_CREATE1 = 5285 - SYS_DUP3 = 5286 - SYS_PIPE2 = 5287 - SYS_INOTIFY_INIT1 = 5288 - SYS_PREADV = 5289 - SYS_PWRITEV = 5290 - SYS_RT_TGSIGQUEUEINFO = 5291 - SYS_PERF_EVENT_OPEN = 5292 - SYS_ACCEPT4 = 5293 - SYS_RECVMMSG = 5294 - SYS_FANOTIFY_INIT = 5295 - SYS_FANOTIFY_MARK = 5296 - SYS_PRLIMIT64 = 5297 - SYS_NAME_TO_HANDLE_AT = 5298 - SYS_OPEN_BY_HANDLE_AT = 5299 - SYS_CLOCK_ADJTIME = 5300 - SYS_SYNCFS = 5301 - SYS_SENDMMSG = 5302 - SYS_SETNS = 5303 - SYS_PROCESS_VM_READV = 5304 - SYS_PROCESS_VM_WRITEV = 5305 - SYS_KCMP = 5306 - SYS_FINIT_MODULE = 5307 - SYS_GETDENTS64 = 5308 - SYS_SCHED_SETATTR = 5309 - SYS_SCHED_GETATTR = 5310 - SYS_RENAMEAT2 = 5311 - SYS_SECCOMP = 5312 - SYS_GETRANDOM = 5313 - SYS_MEMFD_CREATE = 5314 - SYS_BPF = 5315 - SYS_EXECVEAT = 5316 - SYS_USERFAULTFD = 5317 - SYS_MEMBARRIER = 5318 - SYS_MLOCK2 = 5319 - SYS_COPY_FILE_RANGE = 5320 - SYS_PREADV2 = 5321 - SYS_PWRITEV2 = 5322 - SYS_PKEY_MPROTECT = 5323 - SYS_PKEY_ALLOC = 5324 - SYS_PKEY_FREE = 5325 - SYS_STATX = 5326 - SYS_RSEQ = 5327 - SYS_IO_PGETEVENTS = 5328 - SYS_PIDFD_SEND_SIGNAL = 5424 - SYS_IO_URING_SETUP = 5425 - SYS_IO_URING_ENTER = 5426 - SYS_IO_URING_REGISTER = 5427 - SYS_OPEN_TREE = 5428 - SYS_MOVE_MOUNT = 5429 - SYS_FSOPEN = 5430 - SYS_FSCONFIG = 5431 - SYS_FSMOUNT = 5432 - SYS_FSPICK = 5433 - SYS_PIDFD_OPEN = 5434 - SYS_CLONE3 = 5435 - SYS_CLOSE_RANGE = 5436 - SYS_OPENAT2 = 5437 - SYS_PIDFD_GETFD = 5438 - SYS_FACCESSAT2 = 5439 - SYS_PROCESS_MADVISE = 5440 - SYS_EPOLL_PWAIT2 = 5441 - SYS_MOUNT_SETATTR = 5442 + SYS_READ = 5000 + SYS_WRITE = 5001 + SYS_OPEN = 5002 + SYS_CLOSE = 5003 + SYS_STAT = 5004 + SYS_FSTAT = 5005 + SYS_LSTAT = 5006 + SYS_POLL = 5007 + SYS_LSEEK = 5008 + SYS_MMAP = 5009 + SYS_MPROTECT = 5010 + SYS_MUNMAP = 5011 + SYS_BRK = 5012 + SYS_RT_SIGACTION = 5013 + SYS_RT_SIGPROCMASK = 5014 + SYS_IOCTL = 5015 + SYS_PREAD64 = 5016 + SYS_PWRITE64 = 5017 + SYS_READV = 5018 + SYS_WRITEV = 5019 + SYS_ACCESS = 5020 + SYS_PIPE = 5021 + SYS__NEWSELECT = 5022 + SYS_SCHED_YIELD = 5023 + SYS_MREMAP = 5024 + SYS_MSYNC = 5025 + SYS_MINCORE = 5026 + SYS_MADVISE = 5027 + SYS_SHMGET = 5028 + SYS_SHMAT = 5029 + SYS_SHMCTL = 5030 + SYS_DUP = 5031 + SYS_DUP2 = 5032 + SYS_PAUSE = 5033 + SYS_NANOSLEEP = 5034 + SYS_GETITIMER = 5035 + SYS_SETITIMER = 5036 + SYS_ALARM = 5037 + SYS_GETPID = 5038 + SYS_SENDFILE = 5039 + SYS_SOCKET = 5040 + SYS_CONNECT = 5041 + SYS_ACCEPT = 5042 + SYS_SENDTO = 5043 + SYS_RECVFROM = 5044 + SYS_SENDMSG = 5045 + SYS_RECVMSG = 5046 + SYS_SHUTDOWN = 5047 + SYS_BIND = 5048 + SYS_LISTEN = 5049 + SYS_GETSOCKNAME = 5050 + SYS_GETPEERNAME = 5051 + SYS_SOCKETPAIR = 5052 + SYS_SETSOCKOPT = 5053 + SYS_GETSOCKOPT = 5054 + SYS_CLONE = 5055 + SYS_FORK = 5056 + SYS_EXECVE = 5057 + SYS_EXIT = 5058 + SYS_WAIT4 = 5059 + SYS_KILL = 5060 + SYS_UNAME = 5061 + SYS_SEMGET = 5062 + SYS_SEMOP = 5063 + SYS_SEMCTL = 5064 + SYS_SHMDT = 5065 + SYS_MSGGET = 5066 + SYS_MSGSND = 5067 + SYS_MSGRCV = 5068 + SYS_MSGCTL = 5069 + SYS_FCNTL = 5070 + SYS_FLOCK = 5071 + SYS_FSYNC = 5072 + SYS_FDATASYNC = 5073 + SYS_TRUNCATE = 5074 + SYS_FTRUNCATE = 5075 + SYS_GETDENTS = 5076 + SYS_GETCWD = 5077 + SYS_CHDIR = 5078 + SYS_FCHDIR = 5079 + SYS_RENAME = 5080 + SYS_MKDIR = 5081 + SYS_RMDIR = 5082 + SYS_CREAT = 5083 + SYS_LINK = 5084 + SYS_UNLINK = 5085 + SYS_SYMLINK = 5086 + SYS_READLINK = 5087 + SYS_CHMOD = 5088 + SYS_FCHMOD = 5089 + SYS_CHOWN = 5090 + SYS_FCHOWN = 5091 + SYS_LCHOWN = 5092 + SYS_UMASK = 5093 + SYS_GETTIMEOFDAY = 5094 + SYS_GETRLIMIT = 5095 + SYS_GETRUSAGE = 5096 + SYS_SYSINFO = 5097 + SYS_TIMES = 5098 + SYS_PTRACE = 5099 + SYS_GETUID = 5100 + SYS_SYSLOG = 5101 + SYS_GETGID = 5102 + SYS_SETUID = 5103 + SYS_SETGID = 5104 + SYS_GETEUID = 5105 + SYS_GETEGID = 5106 + SYS_SETPGID = 5107 + SYS_GETPPID = 5108 + SYS_GETPGRP = 5109 + SYS_SETSID = 5110 + SYS_SETREUID = 5111 + SYS_SETREGID = 5112 + SYS_GETGROUPS = 5113 + SYS_SETGROUPS = 5114 + SYS_SETRESUID = 5115 + SYS_GETRESUID = 5116 + SYS_SETRESGID = 5117 + SYS_GETRESGID = 5118 + SYS_GETPGID = 5119 + SYS_SETFSUID = 5120 + SYS_SETFSGID = 5121 + SYS_GETSID = 5122 + SYS_CAPGET = 5123 + SYS_CAPSET = 5124 + SYS_RT_SIGPENDING = 5125 + SYS_RT_SIGTIMEDWAIT = 5126 + SYS_RT_SIGQUEUEINFO = 5127 + SYS_RT_SIGSUSPEND = 5128 + SYS_SIGALTSTACK = 5129 + SYS_UTIME = 5130 + SYS_MKNOD = 5131 + SYS_PERSONALITY = 5132 + SYS_USTAT = 5133 + SYS_STATFS = 5134 + SYS_FSTATFS = 5135 + SYS_SYSFS = 5136 + SYS_GETPRIORITY = 5137 + SYS_SETPRIORITY = 5138 + SYS_SCHED_SETPARAM = 5139 + SYS_SCHED_GETPARAM = 5140 + SYS_SCHED_SETSCHEDULER = 5141 + SYS_SCHED_GETSCHEDULER = 5142 + SYS_SCHED_GET_PRIORITY_MAX = 5143 + SYS_SCHED_GET_PRIORITY_MIN = 5144 + SYS_SCHED_RR_GET_INTERVAL = 5145 + SYS_MLOCK = 5146 + SYS_MUNLOCK = 5147 + SYS_MLOCKALL = 5148 + SYS_MUNLOCKALL = 5149 + SYS_VHANGUP = 5150 + SYS_PIVOT_ROOT = 5151 + SYS__SYSCTL = 5152 + SYS_PRCTL = 5153 + SYS_ADJTIMEX = 5154 + SYS_SETRLIMIT = 5155 + SYS_CHROOT = 5156 + SYS_SYNC = 5157 + SYS_ACCT = 5158 + SYS_SETTIMEOFDAY = 5159 + SYS_MOUNT = 5160 + SYS_UMOUNT2 = 5161 + SYS_SWAPON = 5162 + SYS_SWAPOFF = 5163 + SYS_REBOOT = 5164 + SYS_SETHOSTNAME = 5165 + SYS_SETDOMAINNAME = 5166 + SYS_CREATE_MODULE = 5167 + SYS_INIT_MODULE = 5168 + SYS_DELETE_MODULE = 5169 + SYS_GET_KERNEL_SYMS = 5170 + SYS_QUERY_MODULE = 5171 + SYS_QUOTACTL = 5172 + SYS_NFSSERVCTL = 5173 + SYS_GETPMSG = 5174 + SYS_PUTPMSG = 5175 + SYS_AFS_SYSCALL = 5176 + SYS_RESERVED177 = 5177 + SYS_GETTID = 5178 + SYS_READAHEAD = 5179 + SYS_SETXATTR = 5180 + SYS_LSETXATTR = 5181 + SYS_FSETXATTR = 5182 + SYS_GETXATTR = 5183 + SYS_LGETXATTR = 5184 + SYS_FGETXATTR = 5185 + SYS_LISTXATTR = 5186 + SYS_LLISTXATTR = 5187 + SYS_FLISTXATTR = 5188 + SYS_REMOVEXATTR = 5189 + SYS_LREMOVEXATTR = 5190 + SYS_FREMOVEXATTR = 5191 + SYS_TKILL = 5192 + SYS_RESERVED193 = 5193 + SYS_FUTEX = 5194 + SYS_SCHED_SETAFFINITY = 5195 + SYS_SCHED_GETAFFINITY = 5196 + SYS_CACHEFLUSH = 5197 + SYS_CACHECTL = 5198 + SYS_SYSMIPS = 5199 + SYS_IO_SETUP = 5200 + SYS_IO_DESTROY = 5201 + SYS_IO_GETEVENTS = 5202 + SYS_IO_SUBMIT = 5203 + SYS_IO_CANCEL = 5204 + SYS_EXIT_GROUP = 5205 + SYS_LOOKUP_DCOOKIE = 5206 + SYS_EPOLL_CREATE = 5207 + SYS_EPOLL_CTL = 5208 + SYS_EPOLL_WAIT = 5209 + SYS_REMAP_FILE_PAGES = 5210 + SYS_RT_SIGRETURN = 5211 + SYS_SET_TID_ADDRESS = 5212 + SYS_RESTART_SYSCALL = 5213 + SYS_SEMTIMEDOP = 5214 + SYS_FADVISE64 = 5215 + SYS_TIMER_CREATE = 5216 + SYS_TIMER_SETTIME = 5217 + SYS_TIMER_GETTIME = 5218 + SYS_TIMER_GETOVERRUN = 5219 + SYS_TIMER_DELETE = 5220 + SYS_CLOCK_SETTIME = 5221 + SYS_CLOCK_GETTIME = 5222 + SYS_CLOCK_GETRES = 5223 + SYS_CLOCK_NANOSLEEP = 5224 + SYS_TGKILL = 5225 + SYS_UTIMES = 5226 + SYS_MBIND = 5227 + SYS_GET_MEMPOLICY = 5228 + SYS_SET_MEMPOLICY = 5229 + SYS_MQ_OPEN = 5230 + SYS_MQ_UNLINK = 5231 + SYS_MQ_TIMEDSEND = 5232 + SYS_MQ_TIMEDRECEIVE = 5233 + SYS_MQ_NOTIFY = 5234 + SYS_MQ_GETSETATTR = 5235 + SYS_VSERVER = 5236 + SYS_WAITID = 5237 + SYS_ADD_KEY = 5239 + SYS_REQUEST_KEY = 5240 + SYS_KEYCTL = 5241 + SYS_SET_THREAD_AREA = 5242 + SYS_INOTIFY_INIT = 5243 + SYS_INOTIFY_ADD_WATCH = 5244 + SYS_INOTIFY_RM_WATCH = 5245 + SYS_MIGRATE_PAGES = 5246 + SYS_OPENAT = 5247 + SYS_MKDIRAT = 5248 + SYS_MKNODAT = 5249 + SYS_FCHOWNAT = 5250 + SYS_FUTIMESAT = 5251 + SYS_NEWFSTATAT = 5252 + SYS_UNLINKAT = 5253 + SYS_RENAMEAT = 5254 + SYS_LINKAT = 5255 + SYS_SYMLINKAT = 5256 + SYS_READLINKAT = 5257 + SYS_FCHMODAT = 5258 + SYS_FACCESSAT = 5259 + SYS_PSELECT6 = 5260 + SYS_PPOLL = 5261 + SYS_UNSHARE = 5262 + SYS_SPLICE = 5263 + SYS_SYNC_FILE_RANGE = 5264 + SYS_TEE = 5265 + SYS_VMSPLICE = 5266 + SYS_MOVE_PAGES = 5267 + SYS_SET_ROBUST_LIST = 5268 + SYS_GET_ROBUST_LIST = 5269 + SYS_KEXEC_LOAD = 5270 + SYS_GETCPU = 5271 + SYS_EPOLL_PWAIT = 5272 + SYS_IOPRIO_SET = 5273 + SYS_IOPRIO_GET = 5274 + SYS_UTIMENSAT = 5275 + SYS_SIGNALFD = 5276 + SYS_TIMERFD = 5277 + SYS_EVENTFD = 5278 + SYS_FALLOCATE = 5279 + SYS_TIMERFD_CREATE = 5280 + SYS_TIMERFD_GETTIME = 5281 + SYS_TIMERFD_SETTIME = 5282 + SYS_SIGNALFD4 = 5283 + SYS_EVENTFD2 = 5284 + SYS_EPOLL_CREATE1 = 5285 + SYS_DUP3 = 5286 + SYS_PIPE2 = 5287 + SYS_INOTIFY_INIT1 = 5288 + SYS_PREADV = 5289 + SYS_PWRITEV = 5290 + SYS_RT_TGSIGQUEUEINFO = 5291 + SYS_PERF_EVENT_OPEN = 5292 + SYS_ACCEPT4 = 5293 + SYS_RECVMMSG = 5294 + SYS_FANOTIFY_INIT = 5295 + SYS_FANOTIFY_MARK = 5296 + SYS_PRLIMIT64 = 5297 + SYS_NAME_TO_HANDLE_AT = 5298 + SYS_OPEN_BY_HANDLE_AT = 5299 + SYS_CLOCK_ADJTIME = 5300 + SYS_SYNCFS = 5301 + SYS_SENDMMSG = 5302 + SYS_SETNS = 5303 + SYS_PROCESS_VM_READV = 5304 + SYS_PROCESS_VM_WRITEV = 5305 + SYS_KCMP = 5306 + SYS_FINIT_MODULE = 5307 + SYS_GETDENTS64 = 5308 + SYS_SCHED_SETATTR = 5309 + SYS_SCHED_GETATTR = 5310 + SYS_RENAMEAT2 = 5311 + SYS_SECCOMP = 5312 + SYS_GETRANDOM = 5313 + SYS_MEMFD_CREATE = 5314 + SYS_BPF = 5315 + SYS_EXECVEAT = 5316 + SYS_USERFAULTFD = 5317 + SYS_MEMBARRIER = 5318 + SYS_MLOCK2 = 5319 + SYS_COPY_FILE_RANGE = 5320 + SYS_PREADV2 = 5321 + SYS_PWRITEV2 = 5322 + SYS_PKEY_MPROTECT = 5323 + SYS_PKEY_ALLOC = 5324 + SYS_PKEY_FREE = 5325 + SYS_STATX = 5326 + SYS_RSEQ = 5327 + SYS_IO_PGETEVENTS = 5328 + SYS_PIDFD_SEND_SIGNAL = 5424 + SYS_IO_URING_SETUP = 5425 + SYS_IO_URING_ENTER = 5426 + SYS_IO_URING_REGISTER = 5427 + SYS_OPEN_TREE = 5428 + SYS_MOVE_MOUNT = 5429 + SYS_FSOPEN = 5430 + SYS_FSCONFIG = 5431 + SYS_FSMOUNT = 5432 + SYS_FSPICK = 5433 + SYS_PIDFD_OPEN = 5434 + SYS_CLONE3 = 5435 + SYS_CLOSE_RANGE = 5436 + SYS_OPENAT2 = 5437 + SYS_PIDFD_GETFD = 5438 + SYS_FACCESSAT2 = 5439 + SYS_PROCESS_MADVISE = 5440 + SYS_EPOLL_PWAIT2 = 5441 + SYS_MOUNT_SETATTR = 5442 + SYS_LANDLOCK_CREATE_RULESET = 5444 + SYS_LANDLOCK_ADD_RULE = 5445 + SYS_LANDLOCK_RESTRICT_SELF = 5446 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go index 80e6696b39..dcd9265137 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go @@ -424,4 +424,7 @@ const ( SYS_PROCESS_MADVISE = 4440 SYS_EPOLL_PWAIT2 = 4441 SYS_MOUNT_SETATTR = 4442 + SYS_LANDLOCK_CREATE_RULESET = 4444 + SYS_LANDLOCK_ADD_RULE = 4445 + SYS_LANDLOCK_RESTRICT_SELF = 4446 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go index b9d697ffb1..d5ee2c9358 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go @@ -431,4 +431,7 @@ const ( SYS_PROCESS_MADVISE = 440 SYS_EPOLL_PWAIT2 = 441 SYS_MOUNT_SETATTR = 442 + SYS_LANDLOCK_CREATE_RULESET = 444 + SYS_LANDLOCK_ADD_RULE = 445 + SYS_LANDLOCK_RESTRICT_SELF = 446 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go index 08edc54d35..fec32207c8 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go @@ -7,400 +7,403 @@ package unix const ( - SYS_RESTART_SYSCALL = 0 - SYS_EXIT = 1 - SYS_FORK = 2 - SYS_READ = 3 - SYS_WRITE = 4 - SYS_OPEN = 5 - SYS_CLOSE = 6 - SYS_WAITPID = 7 - SYS_CREAT = 8 - SYS_LINK = 9 - SYS_UNLINK = 10 - SYS_EXECVE = 11 - SYS_CHDIR = 12 - SYS_TIME = 13 - SYS_MKNOD = 14 - SYS_CHMOD = 15 - SYS_LCHOWN = 16 - SYS_BREAK = 17 - SYS_OLDSTAT = 18 - SYS_LSEEK = 19 - SYS_GETPID = 20 - SYS_MOUNT = 21 - SYS_UMOUNT = 22 - SYS_SETUID = 23 - SYS_GETUID = 24 - SYS_STIME = 25 - SYS_PTRACE = 26 - SYS_ALARM = 27 - SYS_OLDFSTAT = 28 - SYS_PAUSE = 29 - SYS_UTIME = 30 - SYS_STTY = 31 - SYS_GTTY = 32 - SYS_ACCESS = 33 - SYS_NICE = 34 - SYS_FTIME = 35 - SYS_SYNC = 36 - SYS_KILL = 37 - SYS_RENAME = 38 - SYS_MKDIR = 39 - SYS_RMDIR = 40 - SYS_DUP = 41 - SYS_PIPE = 42 - SYS_TIMES = 43 - SYS_PROF = 44 - SYS_BRK = 45 - SYS_SETGID = 46 - SYS_GETGID = 47 - SYS_SIGNAL = 48 - SYS_GETEUID = 49 - SYS_GETEGID = 50 - SYS_ACCT = 51 - SYS_UMOUNT2 = 52 - SYS_LOCK = 53 - SYS_IOCTL = 54 - SYS_FCNTL = 55 - SYS_MPX = 56 - SYS_SETPGID = 57 - SYS_ULIMIT = 58 - SYS_OLDOLDUNAME = 59 - SYS_UMASK = 60 - SYS_CHROOT = 61 - SYS_USTAT = 62 - SYS_DUP2 = 63 - SYS_GETPPID = 64 - SYS_GETPGRP = 65 - SYS_SETSID = 66 - SYS_SIGACTION = 67 - SYS_SGETMASK = 68 - SYS_SSETMASK = 69 - SYS_SETREUID = 70 - SYS_SETREGID = 71 - SYS_SIGSUSPEND = 72 - SYS_SIGPENDING = 73 - SYS_SETHOSTNAME = 74 - SYS_SETRLIMIT = 75 - SYS_GETRLIMIT = 76 - SYS_GETRUSAGE = 77 - SYS_GETTIMEOFDAY = 78 - SYS_SETTIMEOFDAY = 79 - SYS_GETGROUPS = 80 - SYS_SETGROUPS = 81 - SYS_SELECT = 82 - SYS_SYMLINK = 83 - SYS_OLDLSTAT = 84 - SYS_READLINK = 85 - SYS_USELIB = 86 - SYS_SWAPON = 87 - SYS_REBOOT = 88 - SYS_READDIR = 89 - SYS_MMAP = 90 - SYS_MUNMAP = 91 - SYS_TRUNCATE = 92 - SYS_FTRUNCATE = 93 - SYS_FCHMOD = 94 - SYS_FCHOWN = 95 - SYS_GETPRIORITY = 96 - SYS_SETPRIORITY = 97 - SYS_PROFIL = 98 - SYS_STATFS = 99 - SYS_FSTATFS = 100 - SYS_IOPERM = 101 - SYS_SOCKETCALL = 102 - SYS_SYSLOG = 103 - SYS_SETITIMER = 104 - SYS_GETITIMER = 105 - SYS_STAT = 106 - SYS_LSTAT = 107 - SYS_FSTAT = 108 - SYS_OLDUNAME = 109 - SYS_IOPL = 110 - SYS_VHANGUP = 111 - SYS_IDLE = 112 - SYS_VM86 = 113 - SYS_WAIT4 = 114 - SYS_SWAPOFF = 115 - SYS_SYSINFO = 116 - SYS_IPC = 117 - SYS_FSYNC = 118 - SYS_SIGRETURN = 119 - SYS_CLONE = 120 - SYS_SETDOMAINNAME = 121 - SYS_UNAME = 122 - SYS_MODIFY_LDT = 123 - SYS_ADJTIMEX = 124 - SYS_MPROTECT = 125 - SYS_SIGPROCMASK = 126 - SYS_CREATE_MODULE = 127 - SYS_INIT_MODULE = 128 - SYS_DELETE_MODULE = 129 - SYS_GET_KERNEL_SYMS = 130 - SYS_QUOTACTL = 131 - SYS_GETPGID = 132 - SYS_FCHDIR = 133 - SYS_BDFLUSH = 134 - SYS_SYSFS = 135 - SYS_PERSONALITY = 136 - SYS_AFS_SYSCALL = 137 - SYS_SETFSUID = 138 - SYS_SETFSGID = 139 - SYS__LLSEEK = 140 - SYS_GETDENTS = 141 - SYS__NEWSELECT = 142 - SYS_FLOCK = 143 - SYS_MSYNC = 144 - SYS_READV = 145 - SYS_WRITEV = 146 - SYS_GETSID = 147 - SYS_FDATASYNC = 148 - SYS__SYSCTL = 149 - SYS_MLOCK = 150 - SYS_MUNLOCK = 151 - SYS_MLOCKALL = 152 - SYS_MUNLOCKALL = 153 - SYS_SCHED_SETPARAM = 154 - SYS_SCHED_GETPARAM = 155 - SYS_SCHED_SETSCHEDULER = 156 - SYS_SCHED_GETSCHEDULER = 157 - SYS_SCHED_YIELD = 158 - SYS_SCHED_GET_PRIORITY_MAX = 159 - SYS_SCHED_GET_PRIORITY_MIN = 160 - SYS_SCHED_RR_GET_INTERVAL = 161 - SYS_NANOSLEEP = 162 - SYS_MREMAP = 163 - SYS_SETRESUID = 164 - SYS_GETRESUID = 165 - SYS_QUERY_MODULE = 166 - SYS_POLL = 167 - SYS_NFSSERVCTL = 168 - SYS_SETRESGID = 169 - SYS_GETRESGID = 170 - SYS_PRCTL = 171 - SYS_RT_SIGRETURN = 172 - SYS_RT_SIGACTION = 173 - SYS_RT_SIGPROCMASK = 174 - SYS_RT_SIGPENDING = 175 - SYS_RT_SIGTIMEDWAIT = 176 - SYS_RT_SIGQUEUEINFO = 177 - SYS_RT_SIGSUSPEND = 178 - SYS_PREAD64 = 179 - SYS_PWRITE64 = 180 - SYS_CHOWN = 181 - SYS_GETCWD = 182 - SYS_CAPGET = 183 - SYS_CAPSET = 184 - SYS_SIGALTSTACK = 185 - SYS_SENDFILE = 186 - SYS_GETPMSG = 187 - SYS_PUTPMSG = 188 - SYS_VFORK = 189 - SYS_UGETRLIMIT = 190 - SYS_READAHEAD = 191 - SYS_PCICONFIG_READ = 198 - SYS_PCICONFIG_WRITE = 199 - SYS_PCICONFIG_IOBASE = 200 - SYS_MULTIPLEXER = 201 - SYS_GETDENTS64 = 202 - SYS_PIVOT_ROOT = 203 - SYS_MADVISE = 205 - SYS_MINCORE = 206 - SYS_GETTID = 207 - SYS_TKILL = 208 - SYS_SETXATTR = 209 - SYS_LSETXATTR = 210 - SYS_FSETXATTR = 211 - SYS_GETXATTR = 212 - SYS_LGETXATTR = 213 - SYS_FGETXATTR = 214 - SYS_LISTXATTR = 215 - SYS_LLISTXATTR = 216 - SYS_FLISTXATTR = 217 - SYS_REMOVEXATTR = 218 - SYS_LREMOVEXATTR = 219 - SYS_FREMOVEXATTR = 220 - SYS_FUTEX = 221 - SYS_SCHED_SETAFFINITY = 222 - SYS_SCHED_GETAFFINITY = 223 - SYS_TUXCALL = 225 - SYS_IO_SETUP = 227 - SYS_IO_DESTROY = 228 - SYS_IO_GETEVENTS = 229 - SYS_IO_SUBMIT = 230 - SYS_IO_CANCEL = 231 - SYS_SET_TID_ADDRESS = 232 - SYS_FADVISE64 = 233 - SYS_EXIT_GROUP = 234 - SYS_LOOKUP_DCOOKIE = 235 - SYS_EPOLL_CREATE = 236 - SYS_EPOLL_CTL = 237 - SYS_EPOLL_WAIT = 238 - SYS_REMAP_FILE_PAGES = 239 - SYS_TIMER_CREATE = 240 - SYS_TIMER_SETTIME = 241 - SYS_TIMER_GETTIME = 242 - SYS_TIMER_GETOVERRUN = 243 - SYS_TIMER_DELETE = 244 - SYS_CLOCK_SETTIME = 245 - SYS_CLOCK_GETTIME = 246 - SYS_CLOCK_GETRES = 247 - SYS_CLOCK_NANOSLEEP = 248 - SYS_SWAPCONTEXT = 249 - SYS_TGKILL = 250 - SYS_UTIMES = 251 - SYS_STATFS64 = 252 - SYS_FSTATFS64 = 253 - SYS_RTAS = 255 - SYS_SYS_DEBUG_SETCONTEXT = 256 - SYS_MIGRATE_PAGES = 258 - SYS_MBIND = 259 - SYS_GET_MEMPOLICY = 260 - SYS_SET_MEMPOLICY = 261 - SYS_MQ_OPEN = 262 - SYS_MQ_UNLINK = 263 - SYS_MQ_TIMEDSEND = 264 - SYS_MQ_TIMEDRECEIVE = 265 - SYS_MQ_NOTIFY = 266 - SYS_MQ_GETSETATTR = 267 - SYS_KEXEC_LOAD = 268 - SYS_ADD_KEY = 269 - SYS_REQUEST_KEY = 270 - SYS_KEYCTL = 271 - SYS_WAITID = 272 - SYS_IOPRIO_SET = 273 - SYS_IOPRIO_GET = 274 - SYS_INOTIFY_INIT = 275 - SYS_INOTIFY_ADD_WATCH = 276 - SYS_INOTIFY_RM_WATCH = 277 - SYS_SPU_RUN = 278 - SYS_SPU_CREATE = 279 - SYS_PSELECT6 = 280 - SYS_PPOLL = 281 - SYS_UNSHARE = 282 - SYS_SPLICE = 283 - SYS_TEE = 284 - SYS_VMSPLICE = 285 - SYS_OPENAT = 286 - SYS_MKDIRAT = 287 - SYS_MKNODAT = 288 - SYS_FCHOWNAT = 289 - SYS_FUTIMESAT = 290 - SYS_NEWFSTATAT = 291 - SYS_UNLINKAT = 292 - SYS_RENAMEAT = 293 - SYS_LINKAT = 294 - SYS_SYMLINKAT = 295 - SYS_READLINKAT = 296 - SYS_FCHMODAT = 297 - SYS_FACCESSAT = 298 - SYS_GET_ROBUST_LIST = 299 - SYS_SET_ROBUST_LIST = 300 - SYS_MOVE_PAGES = 301 - SYS_GETCPU = 302 - SYS_EPOLL_PWAIT = 303 - SYS_UTIMENSAT = 304 - SYS_SIGNALFD = 305 - SYS_TIMERFD_CREATE = 306 - SYS_EVENTFD = 307 - SYS_SYNC_FILE_RANGE2 = 308 - SYS_FALLOCATE = 309 - SYS_SUBPAGE_PROT = 310 - SYS_TIMERFD_SETTIME = 311 - SYS_TIMERFD_GETTIME = 312 - SYS_SIGNALFD4 = 313 - SYS_EVENTFD2 = 314 - SYS_EPOLL_CREATE1 = 315 - SYS_DUP3 = 316 - SYS_PIPE2 = 317 - SYS_INOTIFY_INIT1 = 318 - SYS_PERF_EVENT_OPEN = 319 - SYS_PREADV = 320 - SYS_PWRITEV = 321 - SYS_RT_TGSIGQUEUEINFO = 322 - SYS_FANOTIFY_INIT = 323 - SYS_FANOTIFY_MARK = 324 - SYS_PRLIMIT64 = 325 - SYS_SOCKET = 326 - SYS_BIND = 327 - SYS_CONNECT = 328 - SYS_LISTEN = 329 - SYS_ACCEPT = 330 - SYS_GETSOCKNAME = 331 - SYS_GETPEERNAME = 332 - SYS_SOCKETPAIR = 333 - SYS_SEND = 334 - SYS_SENDTO = 335 - SYS_RECV = 336 - SYS_RECVFROM = 337 - SYS_SHUTDOWN = 338 - SYS_SETSOCKOPT = 339 - SYS_GETSOCKOPT = 340 - SYS_SENDMSG = 341 - SYS_RECVMSG = 342 - SYS_RECVMMSG = 343 - SYS_ACCEPT4 = 344 - SYS_NAME_TO_HANDLE_AT = 345 - SYS_OPEN_BY_HANDLE_AT = 346 - SYS_CLOCK_ADJTIME = 347 - SYS_SYNCFS = 348 - SYS_SENDMMSG = 349 - SYS_SETNS = 350 - SYS_PROCESS_VM_READV = 351 - SYS_PROCESS_VM_WRITEV = 352 - SYS_FINIT_MODULE = 353 - SYS_KCMP = 354 - SYS_SCHED_SETATTR = 355 - SYS_SCHED_GETATTR = 356 - SYS_RENAMEAT2 = 357 - SYS_SECCOMP = 358 - SYS_GETRANDOM = 359 - SYS_MEMFD_CREATE = 360 - SYS_BPF = 361 - SYS_EXECVEAT = 362 - SYS_SWITCH_ENDIAN = 363 - SYS_USERFAULTFD = 364 - SYS_MEMBARRIER = 365 - SYS_MLOCK2 = 378 - SYS_COPY_FILE_RANGE = 379 - SYS_PREADV2 = 380 - SYS_PWRITEV2 = 381 - SYS_KEXEC_FILE_LOAD = 382 - SYS_STATX = 383 - SYS_PKEY_ALLOC = 384 - SYS_PKEY_FREE = 385 - SYS_PKEY_MPROTECT = 386 - SYS_RSEQ = 387 - SYS_IO_PGETEVENTS = 388 - SYS_SEMTIMEDOP = 392 - SYS_SEMGET = 393 - SYS_SEMCTL = 394 - SYS_SHMGET = 395 - SYS_SHMCTL = 396 - SYS_SHMAT = 397 - SYS_SHMDT = 398 - SYS_MSGGET = 399 - SYS_MSGSND = 400 - SYS_MSGRCV = 401 - SYS_MSGCTL = 402 - SYS_PIDFD_SEND_SIGNAL = 424 - SYS_IO_URING_SETUP = 425 - SYS_IO_URING_ENTER = 426 - SYS_IO_URING_REGISTER = 427 - SYS_OPEN_TREE = 428 - SYS_MOVE_MOUNT = 429 - SYS_FSOPEN = 430 - SYS_FSCONFIG = 431 - SYS_FSMOUNT = 432 - SYS_FSPICK = 433 - SYS_PIDFD_OPEN = 434 - SYS_CLONE3 = 435 - SYS_CLOSE_RANGE = 436 - SYS_OPENAT2 = 437 - SYS_PIDFD_GETFD = 438 - SYS_FACCESSAT2 = 439 - SYS_PROCESS_MADVISE = 440 - SYS_EPOLL_PWAIT2 = 441 - SYS_MOUNT_SETATTR = 442 + SYS_RESTART_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_WAITPID = 7 + SYS_CREAT = 8 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_EXECVE = 11 + SYS_CHDIR = 12 + SYS_TIME = 13 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_LCHOWN = 16 + SYS_BREAK = 17 + SYS_OLDSTAT = 18 + SYS_LSEEK = 19 + SYS_GETPID = 20 + SYS_MOUNT = 21 + SYS_UMOUNT = 22 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_STIME = 25 + SYS_PTRACE = 26 + SYS_ALARM = 27 + SYS_OLDFSTAT = 28 + SYS_PAUSE = 29 + SYS_UTIME = 30 + SYS_STTY = 31 + SYS_GTTY = 32 + SYS_ACCESS = 33 + SYS_NICE = 34 + SYS_FTIME = 35 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_RENAME = 38 + SYS_MKDIR = 39 + SYS_RMDIR = 40 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_TIMES = 43 + SYS_PROF = 44 + SYS_BRK = 45 + SYS_SETGID = 46 + SYS_GETGID = 47 + SYS_SIGNAL = 48 + SYS_GETEUID = 49 + SYS_GETEGID = 50 + SYS_ACCT = 51 + SYS_UMOUNT2 = 52 + SYS_LOCK = 53 + SYS_IOCTL = 54 + SYS_FCNTL = 55 + SYS_MPX = 56 + SYS_SETPGID = 57 + SYS_ULIMIT = 58 + SYS_OLDOLDUNAME = 59 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_USTAT = 62 + SYS_DUP2 = 63 + SYS_GETPPID = 64 + SYS_GETPGRP = 65 + SYS_SETSID = 66 + SYS_SIGACTION = 67 + SYS_SGETMASK = 68 + SYS_SSETMASK = 69 + SYS_SETREUID = 70 + SYS_SETREGID = 71 + SYS_SIGSUSPEND = 72 + SYS_SIGPENDING = 73 + SYS_SETHOSTNAME = 74 + SYS_SETRLIMIT = 75 + SYS_GETRLIMIT = 76 + SYS_GETRUSAGE = 77 + SYS_GETTIMEOFDAY = 78 + SYS_SETTIMEOFDAY = 79 + SYS_GETGROUPS = 80 + SYS_SETGROUPS = 81 + SYS_SELECT = 82 + SYS_SYMLINK = 83 + SYS_OLDLSTAT = 84 + SYS_READLINK = 85 + SYS_USELIB = 86 + SYS_SWAPON = 87 + SYS_REBOOT = 88 + SYS_READDIR = 89 + SYS_MMAP = 90 + SYS_MUNMAP = 91 + SYS_TRUNCATE = 92 + SYS_FTRUNCATE = 93 + SYS_FCHMOD = 94 + SYS_FCHOWN = 95 + SYS_GETPRIORITY = 96 + SYS_SETPRIORITY = 97 + SYS_PROFIL = 98 + SYS_STATFS = 99 + SYS_FSTATFS = 100 + SYS_IOPERM = 101 + SYS_SOCKETCALL = 102 + SYS_SYSLOG = 103 + SYS_SETITIMER = 104 + SYS_GETITIMER = 105 + SYS_STAT = 106 + SYS_LSTAT = 107 + SYS_FSTAT = 108 + SYS_OLDUNAME = 109 + SYS_IOPL = 110 + SYS_VHANGUP = 111 + SYS_IDLE = 112 + SYS_VM86 = 113 + SYS_WAIT4 = 114 + SYS_SWAPOFF = 115 + SYS_SYSINFO = 116 + SYS_IPC = 117 + SYS_FSYNC = 118 + SYS_SIGRETURN = 119 + SYS_CLONE = 120 + SYS_SETDOMAINNAME = 121 + SYS_UNAME = 122 + SYS_MODIFY_LDT = 123 + SYS_ADJTIMEX = 124 + SYS_MPROTECT = 125 + SYS_SIGPROCMASK = 126 + SYS_CREATE_MODULE = 127 + SYS_INIT_MODULE = 128 + SYS_DELETE_MODULE = 129 + SYS_GET_KERNEL_SYMS = 130 + SYS_QUOTACTL = 131 + SYS_GETPGID = 132 + SYS_FCHDIR = 133 + SYS_BDFLUSH = 134 + SYS_SYSFS = 135 + SYS_PERSONALITY = 136 + SYS_AFS_SYSCALL = 137 + SYS_SETFSUID = 138 + SYS_SETFSGID = 139 + SYS__LLSEEK = 140 + SYS_GETDENTS = 141 + SYS__NEWSELECT = 142 + SYS_FLOCK = 143 + SYS_MSYNC = 144 + SYS_READV = 145 + SYS_WRITEV = 146 + SYS_GETSID = 147 + SYS_FDATASYNC = 148 + SYS__SYSCTL = 149 + SYS_MLOCK = 150 + SYS_MUNLOCK = 151 + SYS_MLOCKALL = 152 + SYS_MUNLOCKALL = 153 + SYS_SCHED_SETPARAM = 154 + SYS_SCHED_GETPARAM = 155 + SYS_SCHED_SETSCHEDULER = 156 + SYS_SCHED_GETSCHEDULER = 157 + SYS_SCHED_YIELD = 158 + SYS_SCHED_GET_PRIORITY_MAX = 159 + SYS_SCHED_GET_PRIORITY_MIN = 160 + SYS_SCHED_RR_GET_INTERVAL = 161 + SYS_NANOSLEEP = 162 + SYS_MREMAP = 163 + SYS_SETRESUID = 164 + SYS_GETRESUID = 165 + SYS_QUERY_MODULE = 166 + SYS_POLL = 167 + SYS_NFSSERVCTL = 168 + SYS_SETRESGID = 169 + SYS_GETRESGID = 170 + SYS_PRCTL = 171 + SYS_RT_SIGRETURN = 172 + SYS_RT_SIGACTION = 173 + SYS_RT_SIGPROCMASK = 174 + SYS_RT_SIGPENDING = 175 + SYS_RT_SIGTIMEDWAIT = 176 + SYS_RT_SIGQUEUEINFO = 177 + SYS_RT_SIGSUSPEND = 178 + SYS_PREAD64 = 179 + SYS_PWRITE64 = 180 + SYS_CHOWN = 181 + SYS_GETCWD = 182 + SYS_CAPGET = 183 + SYS_CAPSET = 184 + SYS_SIGALTSTACK = 185 + SYS_SENDFILE = 186 + SYS_GETPMSG = 187 + SYS_PUTPMSG = 188 + SYS_VFORK = 189 + SYS_UGETRLIMIT = 190 + SYS_READAHEAD = 191 + SYS_PCICONFIG_READ = 198 + SYS_PCICONFIG_WRITE = 199 + SYS_PCICONFIG_IOBASE = 200 + SYS_MULTIPLEXER = 201 + SYS_GETDENTS64 = 202 + SYS_PIVOT_ROOT = 203 + SYS_MADVISE = 205 + SYS_MINCORE = 206 + SYS_GETTID = 207 + SYS_TKILL = 208 + SYS_SETXATTR = 209 + SYS_LSETXATTR = 210 + SYS_FSETXATTR = 211 + SYS_GETXATTR = 212 + SYS_LGETXATTR = 213 + SYS_FGETXATTR = 214 + SYS_LISTXATTR = 215 + SYS_LLISTXATTR = 216 + SYS_FLISTXATTR = 217 + SYS_REMOVEXATTR = 218 + SYS_LREMOVEXATTR = 219 + SYS_FREMOVEXATTR = 220 + SYS_FUTEX = 221 + SYS_SCHED_SETAFFINITY = 222 + SYS_SCHED_GETAFFINITY = 223 + SYS_TUXCALL = 225 + SYS_IO_SETUP = 227 + SYS_IO_DESTROY = 228 + SYS_IO_GETEVENTS = 229 + SYS_IO_SUBMIT = 230 + SYS_IO_CANCEL = 231 + SYS_SET_TID_ADDRESS = 232 + SYS_FADVISE64 = 233 + SYS_EXIT_GROUP = 234 + SYS_LOOKUP_DCOOKIE = 235 + SYS_EPOLL_CREATE = 236 + SYS_EPOLL_CTL = 237 + SYS_EPOLL_WAIT = 238 + SYS_REMAP_FILE_PAGES = 239 + SYS_TIMER_CREATE = 240 + SYS_TIMER_SETTIME = 241 + SYS_TIMER_GETTIME = 242 + SYS_TIMER_GETOVERRUN = 243 + SYS_TIMER_DELETE = 244 + SYS_CLOCK_SETTIME = 245 + SYS_CLOCK_GETTIME = 246 + SYS_CLOCK_GETRES = 247 + SYS_CLOCK_NANOSLEEP = 248 + SYS_SWAPCONTEXT = 249 + SYS_TGKILL = 250 + SYS_UTIMES = 251 + SYS_STATFS64 = 252 + SYS_FSTATFS64 = 253 + SYS_RTAS = 255 + SYS_SYS_DEBUG_SETCONTEXT = 256 + SYS_MIGRATE_PAGES = 258 + SYS_MBIND = 259 + SYS_GET_MEMPOLICY = 260 + SYS_SET_MEMPOLICY = 261 + SYS_MQ_OPEN = 262 + SYS_MQ_UNLINK = 263 + SYS_MQ_TIMEDSEND = 264 + SYS_MQ_TIMEDRECEIVE = 265 + SYS_MQ_NOTIFY = 266 + SYS_MQ_GETSETATTR = 267 + SYS_KEXEC_LOAD = 268 + SYS_ADD_KEY = 269 + SYS_REQUEST_KEY = 270 + SYS_KEYCTL = 271 + SYS_WAITID = 272 + SYS_IOPRIO_SET = 273 + SYS_IOPRIO_GET = 274 + SYS_INOTIFY_INIT = 275 + SYS_INOTIFY_ADD_WATCH = 276 + SYS_INOTIFY_RM_WATCH = 277 + SYS_SPU_RUN = 278 + SYS_SPU_CREATE = 279 + SYS_PSELECT6 = 280 + SYS_PPOLL = 281 + SYS_UNSHARE = 282 + SYS_SPLICE = 283 + SYS_TEE = 284 + SYS_VMSPLICE = 285 + SYS_OPENAT = 286 + SYS_MKDIRAT = 287 + SYS_MKNODAT = 288 + SYS_FCHOWNAT = 289 + SYS_FUTIMESAT = 290 + SYS_NEWFSTATAT = 291 + SYS_UNLINKAT = 292 + SYS_RENAMEAT = 293 + SYS_LINKAT = 294 + SYS_SYMLINKAT = 295 + SYS_READLINKAT = 296 + SYS_FCHMODAT = 297 + SYS_FACCESSAT = 298 + SYS_GET_ROBUST_LIST = 299 + SYS_SET_ROBUST_LIST = 300 + SYS_MOVE_PAGES = 301 + SYS_GETCPU = 302 + SYS_EPOLL_PWAIT = 303 + SYS_UTIMENSAT = 304 + SYS_SIGNALFD = 305 + SYS_TIMERFD_CREATE = 306 + SYS_EVENTFD = 307 + SYS_SYNC_FILE_RANGE2 = 308 + SYS_FALLOCATE = 309 + SYS_SUBPAGE_PROT = 310 + SYS_TIMERFD_SETTIME = 311 + SYS_TIMERFD_GETTIME = 312 + SYS_SIGNALFD4 = 313 + SYS_EVENTFD2 = 314 + SYS_EPOLL_CREATE1 = 315 + SYS_DUP3 = 316 + SYS_PIPE2 = 317 + SYS_INOTIFY_INIT1 = 318 + SYS_PERF_EVENT_OPEN = 319 + SYS_PREADV = 320 + SYS_PWRITEV = 321 + SYS_RT_TGSIGQUEUEINFO = 322 + SYS_FANOTIFY_INIT = 323 + SYS_FANOTIFY_MARK = 324 + SYS_PRLIMIT64 = 325 + SYS_SOCKET = 326 + SYS_BIND = 327 + SYS_CONNECT = 328 + SYS_LISTEN = 329 + SYS_ACCEPT = 330 + SYS_GETSOCKNAME = 331 + SYS_GETPEERNAME = 332 + SYS_SOCKETPAIR = 333 + SYS_SEND = 334 + SYS_SENDTO = 335 + SYS_RECV = 336 + SYS_RECVFROM = 337 + SYS_SHUTDOWN = 338 + SYS_SETSOCKOPT = 339 + SYS_GETSOCKOPT = 340 + SYS_SENDMSG = 341 + SYS_RECVMSG = 342 + SYS_RECVMMSG = 343 + SYS_ACCEPT4 = 344 + SYS_NAME_TO_HANDLE_AT = 345 + SYS_OPEN_BY_HANDLE_AT = 346 + SYS_CLOCK_ADJTIME = 347 + SYS_SYNCFS = 348 + SYS_SENDMMSG = 349 + SYS_SETNS = 350 + SYS_PROCESS_VM_READV = 351 + SYS_PROCESS_VM_WRITEV = 352 + SYS_FINIT_MODULE = 353 + SYS_KCMP = 354 + SYS_SCHED_SETATTR = 355 + SYS_SCHED_GETATTR = 356 + SYS_RENAMEAT2 = 357 + SYS_SECCOMP = 358 + SYS_GETRANDOM = 359 + SYS_MEMFD_CREATE = 360 + SYS_BPF = 361 + SYS_EXECVEAT = 362 + SYS_SWITCH_ENDIAN = 363 + SYS_USERFAULTFD = 364 + SYS_MEMBARRIER = 365 + SYS_MLOCK2 = 378 + SYS_COPY_FILE_RANGE = 379 + SYS_PREADV2 = 380 + SYS_PWRITEV2 = 381 + SYS_KEXEC_FILE_LOAD = 382 + SYS_STATX = 383 + SYS_PKEY_ALLOC = 384 + SYS_PKEY_FREE = 385 + SYS_PKEY_MPROTECT = 386 + SYS_RSEQ = 387 + SYS_IO_PGETEVENTS = 388 + SYS_SEMTIMEDOP = 392 + SYS_SEMGET = 393 + SYS_SEMCTL = 394 + SYS_SHMGET = 395 + SYS_SHMCTL = 396 + SYS_SHMAT = 397 + SYS_SHMDT = 398 + SYS_MSGGET = 399 + SYS_MSGSND = 400 + SYS_MSGRCV = 401 + SYS_MSGCTL = 402 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLONE3 = 435 + SYS_CLOSE_RANGE = 436 + SYS_OPENAT2 = 437 + SYS_PIDFD_GETFD = 438 + SYS_FACCESSAT2 = 439 + SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 + SYS_MOUNT_SETATTR = 442 + SYS_LANDLOCK_CREATE_RULESET = 444 + SYS_LANDLOCK_ADD_RULE = 445 + SYS_LANDLOCK_RESTRICT_SELF = 446 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go index 33b33b0834..53a89b2063 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go @@ -7,400 +7,403 @@ package unix const ( - SYS_RESTART_SYSCALL = 0 - SYS_EXIT = 1 - SYS_FORK = 2 - SYS_READ = 3 - SYS_WRITE = 4 - SYS_OPEN = 5 - SYS_CLOSE = 6 - SYS_WAITPID = 7 - SYS_CREAT = 8 - SYS_LINK = 9 - SYS_UNLINK = 10 - SYS_EXECVE = 11 - SYS_CHDIR = 12 - SYS_TIME = 13 - SYS_MKNOD = 14 - SYS_CHMOD = 15 - SYS_LCHOWN = 16 - SYS_BREAK = 17 - SYS_OLDSTAT = 18 - SYS_LSEEK = 19 - SYS_GETPID = 20 - SYS_MOUNT = 21 - SYS_UMOUNT = 22 - SYS_SETUID = 23 - SYS_GETUID = 24 - SYS_STIME = 25 - SYS_PTRACE = 26 - SYS_ALARM = 27 - SYS_OLDFSTAT = 28 - SYS_PAUSE = 29 - SYS_UTIME = 30 - SYS_STTY = 31 - SYS_GTTY = 32 - SYS_ACCESS = 33 - SYS_NICE = 34 - SYS_FTIME = 35 - SYS_SYNC = 36 - SYS_KILL = 37 - SYS_RENAME = 38 - SYS_MKDIR = 39 - SYS_RMDIR = 40 - SYS_DUP = 41 - SYS_PIPE = 42 - SYS_TIMES = 43 - SYS_PROF = 44 - SYS_BRK = 45 - SYS_SETGID = 46 - SYS_GETGID = 47 - SYS_SIGNAL = 48 - SYS_GETEUID = 49 - SYS_GETEGID = 50 - SYS_ACCT = 51 - SYS_UMOUNT2 = 52 - SYS_LOCK = 53 - SYS_IOCTL = 54 - SYS_FCNTL = 55 - SYS_MPX = 56 - SYS_SETPGID = 57 - SYS_ULIMIT = 58 - SYS_OLDOLDUNAME = 59 - SYS_UMASK = 60 - SYS_CHROOT = 61 - SYS_USTAT = 62 - SYS_DUP2 = 63 - SYS_GETPPID = 64 - SYS_GETPGRP = 65 - SYS_SETSID = 66 - SYS_SIGACTION = 67 - SYS_SGETMASK = 68 - SYS_SSETMASK = 69 - SYS_SETREUID = 70 - SYS_SETREGID = 71 - SYS_SIGSUSPEND = 72 - SYS_SIGPENDING = 73 - SYS_SETHOSTNAME = 74 - SYS_SETRLIMIT = 75 - SYS_GETRLIMIT = 76 - SYS_GETRUSAGE = 77 - SYS_GETTIMEOFDAY = 78 - SYS_SETTIMEOFDAY = 79 - SYS_GETGROUPS = 80 - SYS_SETGROUPS = 81 - SYS_SELECT = 82 - SYS_SYMLINK = 83 - SYS_OLDLSTAT = 84 - SYS_READLINK = 85 - SYS_USELIB = 86 - SYS_SWAPON = 87 - SYS_REBOOT = 88 - SYS_READDIR = 89 - SYS_MMAP = 90 - SYS_MUNMAP = 91 - SYS_TRUNCATE = 92 - SYS_FTRUNCATE = 93 - SYS_FCHMOD = 94 - SYS_FCHOWN = 95 - SYS_GETPRIORITY = 96 - SYS_SETPRIORITY = 97 - SYS_PROFIL = 98 - SYS_STATFS = 99 - SYS_FSTATFS = 100 - SYS_IOPERM = 101 - SYS_SOCKETCALL = 102 - SYS_SYSLOG = 103 - SYS_SETITIMER = 104 - SYS_GETITIMER = 105 - SYS_STAT = 106 - SYS_LSTAT = 107 - SYS_FSTAT = 108 - SYS_OLDUNAME = 109 - SYS_IOPL = 110 - SYS_VHANGUP = 111 - SYS_IDLE = 112 - SYS_VM86 = 113 - SYS_WAIT4 = 114 - SYS_SWAPOFF = 115 - SYS_SYSINFO = 116 - SYS_IPC = 117 - SYS_FSYNC = 118 - SYS_SIGRETURN = 119 - SYS_CLONE = 120 - SYS_SETDOMAINNAME = 121 - SYS_UNAME = 122 - SYS_MODIFY_LDT = 123 - SYS_ADJTIMEX = 124 - SYS_MPROTECT = 125 - SYS_SIGPROCMASK = 126 - SYS_CREATE_MODULE = 127 - SYS_INIT_MODULE = 128 - SYS_DELETE_MODULE = 129 - SYS_GET_KERNEL_SYMS = 130 - SYS_QUOTACTL = 131 - SYS_GETPGID = 132 - SYS_FCHDIR = 133 - SYS_BDFLUSH = 134 - SYS_SYSFS = 135 - SYS_PERSONALITY = 136 - SYS_AFS_SYSCALL = 137 - SYS_SETFSUID = 138 - SYS_SETFSGID = 139 - SYS__LLSEEK = 140 - SYS_GETDENTS = 141 - SYS__NEWSELECT = 142 - SYS_FLOCK = 143 - SYS_MSYNC = 144 - SYS_READV = 145 - SYS_WRITEV = 146 - SYS_GETSID = 147 - SYS_FDATASYNC = 148 - SYS__SYSCTL = 149 - SYS_MLOCK = 150 - SYS_MUNLOCK = 151 - SYS_MLOCKALL = 152 - SYS_MUNLOCKALL = 153 - SYS_SCHED_SETPARAM = 154 - SYS_SCHED_GETPARAM = 155 - SYS_SCHED_SETSCHEDULER = 156 - SYS_SCHED_GETSCHEDULER = 157 - SYS_SCHED_YIELD = 158 - SYS_SCHED_GET_PRIORITY_MAX = 159 - SYS_SCHED_GET_PRIORITY_MIN = 160 - SYS_SCHED_RR_GET_INTERVAL = 161 - SYS_NANOSLEEP = 162 - SYS_MREMAP = 163 - SYS_SETRESUID = 164 - SYS_GETRESUID = 165 - SYS_QUERY_MODULE = 166 - SYS_POLL = 167 - SYS_NFSSERVCTL = 168 - SYS_SETRESGID = 169 - SYS_GETRESGID = 170 - SYS_PRCTL = 171 - SYS_RT_SIGRETURN = 172 - SYS_RT_SIGACTION = 173 - SYS_RT_SIGPROCMASK = 174 - SYS_RT_SIGPENDING = 175 - SYS_RT_SIGTIMEDWAIT = 176 - SYS_RT_SIGQUEUEINFO = 177 - SYS_RT_SIGSUSPEND = 178 - SYS_PREAD64 = 179 - SYS_PWRITE64 = 180 - SYS_CHOWN = 181 - SYS_GETCWD = 182 - SYS_CAPGET = 183 - SYS_CAPSET = 184 - SYS_SIGALTSTACK = 185 - SYS_SENDFILE = 186 - SYS_GETPMSG = 187 - SYS_PUTPMSG = 188 - SYS_VFORK = 189 - SYS_UGETRLIMIT = 190 - SYS_READAHEAD = 191 - SYS_PCICONFIG_READ = 198 - SYS_PCICONFIG_WRITE = 199 - SYS_PCICONFIG_IOBASE = 200 - SYS_MULTIPLEXER = 201 - SYS_GETDENTS64 = 202 - SYS_PIVOT_ROOT = 203 - SYS_MADVISE = 205 - SYS_MINCORE = 206 - SYS_GETTID = 207 - SYS_TKILL = 208 - SYS_SETXATTR = 209 - SYS_LSETXATTR = 210 - SYS_FSETXATTR = 211 - SYS_GETXATTR = 212 - SYS_LGETXATTR = 213 - SYS_FGETXATTR = 214 - SYS_LISTXATTR = 215 - SYS_LLISTXATTR = 216 - SYS_FLISTXATTR = 217 - SYS_REMOVEXATTR = 218 - SYS_LREMOVEXATTR = 219 - SYS_FREMOVEXATTR = 220 - SYS_FUTEX = 221 - SYS_SCHED_SETAFFINITY = 222 - SYS_SCHED_GETAFFINITY = 223 - SYS_TUXCALL = 225 - SYS_IO_SETUP = 227 - SYS_IO_DESTROY = 228 - SYS_IO_GETEVENTS = 229 - SYS_IO_SUBMIT = 230 - SYS_IO_CANCEL = 231 - SYS_SET_TID_ADDRESS = 232 - SYS_FADVISE64 = 233 - SYS_EXIT_GROUP = 234 - SYS_LOOKUP_DCOOKIE = 235 - SYS_EPOLL_CREATE = 236 - SYS_EPOLL_CTL = 237 - SYS_EPOLL_WAIT = 238 - SYS_REMAP_FILE_PAGES = 239 - SYS_TIMER_CREATE = 240 - SYS_TIMER_SETTIME = 241 - SYS_TIMER_GETTIME = 242 - SYS_TIMER_GETOVERRUN = 243 - SYS_TIMER_DELETE = 244 - SYS_CLOCK_SETTIME = 245 - SYS_CLOCK_GETTIME = 246 - SYS_CLOCK_GETRES = 247 - SYS_CLOCK_NANOSLEEP = 248 - SYS_SWAPCONTEXT = 249 - SYS_TGKILL = 250 - SYS_UTIMES = 251 - SYS_STATFS64 = 252 - SYS_FSTATFS64 = 253 - SYS_RTAS = 255 - SYS_SYS_DEBUG_SETCONTEXT = 256 - SYS_MIGRATE_PAGES = 258 - SYS_MBIND = 259 - SYS_GET_MEMPOLICY = 260 - SYS_SET_MEMPOLICY = 261 - SYS_MQ_OPEN = 262 - SYS_MQ_UNLINK = 263 - SYS_MQ_TIMEDSEND = 264 - SYS_MQ_TIMEDRECEIVE = 265 - SYS_MQ_NOTIFY = 266 - SYS_MQ_GETSETATTR = 267 - SYS_KEXEC_LOAD = 268 - SYS_ADD_KEY = 269 - SYS_REQUEST_KEY = 270 - SYS_KEYCTL = 271 - SYS_WAITID = 272 - SYS_IOPRIO_SET = 273 - SYS_IOPRIO_GET = 274 - SYS_INOTIFY_INIT = 275 - SYS_INOTIFY_ADD_WATCH = 276 - SYS_INOTIFY_RM_WATCH = 277 - SYS_SPU_RUN = 278 - SYS_SPU_CREATE = 279 - SYS_PSELECT6 = 280 - SYS_PPOLL = 281 - SYS_UNSHARE = 282 - SYS_SPLICE = 283 - SYS_TEE = 284 - SYS_VMSPLICE = 285 - SYS_OPENAT = 286 - SYS_MKDIRAT = 287 - SYS_MKNODAT = 288 - SYS_FCHOWNAT = 289 - SYS_FUTIMESAT = 290 - SYS_NEWFSTATAT = 291 - SYS_UNLINKAT = 292 - SYS_RENAMEAT = 293 - SYS_LINKAT = 294 - SYS_SYMLINKAT = 295 - SYS_READLINKAT = 296 - SYS_FCHMODAT = 297 - SYS_FACCESSAT = 298 - SYS_GET_ROBUST_LIST = 299 - SYS_SET_ROBUST_LIST = 300 - SYS_MOVE_PAGES = 301 - SYS_GETCPU = 302 - SYS_EPOLL_PWAIT = 303 - SYS_UTIMENSAT = 304 - SYS_SIGNALFD = 305 - SYS_TIMERFD_CREATE = 306 - SYS_EVENTFD = 307 - SYS_SYNC_FILE_RANGE2 = 308 - SYS_FALLOCATE = 309 - SYS_SUBPAGE_PROT = 310 - SYS_TIMERFD_SETTIME = 311 - SYS_TIMERFD_GETTIME = 312 - SYS_SIGNALFD4 = 313 - SYS_EVENTFD2 = 314 - SYS_EPOLL_CREATE1 = 315 - SYS_DUP3 = 316 - SYS_PIPE2 = 317 - SYS_INOTIFY_INIT1 = 318 - SYS_PERF_EVENT_OPEN = 319 - SYS_PREADV = 320 - SYS_PWRITEV = 321 - SYS_RT_TGSIGQUEUEINFO = 322 - SYS_FANOTIFY_INIT = 323 - SYS_FANOTIFY_MARK = 324 - SYS_PRLIMIT64 = 325 - SYS_SOCKET = 326 - SYS_BIND = 327 - SYS_CONNECT = 328 - SYS_LISTEN = 329 - SYS_ACCEPT = 330 - SYS_GETSOCKNAME = 331 - SYS_GETPEERNAME = 332 - SYS_SOCKETPAIR = 333 - SYS_SEND = 334 - SYS_SENDTO = 335 - SYS_RECV = 336 - SYS_RECVFROM = 337 - SYS_SHUTDOWN = 338 - SYS_SETSOCKOPT = 339 - SYS_GETSOCKOPT = 340 - SYS_SENDMSG = 341 - SYS_RECVMSG = 342 - SYS_RECVMMSG = 343 - SYS_ACCEPT4 = 344 - SYS_NAME_TO_HANDLE_AT = 345 - SYS_OPEN_BY_HANDLE_AT = 346 - SYS_CLOCK_ADJTIME = 347 - SYS_SYNCFS = 348 - SYS_SENDMMSG = 349 - SYS_SETNS = 350 - SYS_PROCESS_VM_READV = 351 - SYS_PROCESS_VM_WRITEV = 352 - SYS_FINIT_MODULE = 353 - SYS_KCMP = 354 - SYS_SCHED_SETATTR = 355 - SYS_SCHED_GETATTR = 356 - SYS_RENAMEAT2 = 357 - SYS_SECCOMP = 358 - SYS_GETRANDOM = 359 - SYS_MEMFD_CREATE = 360 - SYS_BPF = 361 - SYS_EXECVEAT = 362 - SYS_SWITCH_ENDIAN = 363 - SYS_USERFAULTFD = 364 - SYS_MEMBARRIER = 365 - SYS_MLOCK2 = 378 - SYS_COPY_FILE_RANGE = 379 - SYS_PREADV2 = 380 - SYS_PWRITEV2 = 381 - SYS_KEXEC_FILE_LOAD = 382 - SYS_STATX = 383 - SYS_PKEY_ALLOC = 384 - SYS_PKEY_FREE = 385 - SYS_PKEY_MPROTECT = 386 - SYS_RSEQ = 387 - SYS_IO_PGETEVENTS = 388 - SYS_SEMTIMEDOP = 392 - SYS_SEMGET = 393 - SYS_SEMCTL = 394 - SYS_SHMGET = 395 - SYS_SHMCTL = 396 - SYS_SHMAT = 397 - SYS_SHMDT = 398 - SYS_MSGGET = 399 - SYS_MSGSND = 400 - SYS_MSGRCV = 401 - SYS_MSGCTL = 402 - SYS_PIDFD_SEND_SIGNAL = 424 - SYS_IO_URING_SETUP = 425 - SYS_IO_URING_ENTER = 426 - SYS_IO_URING_REGISTER = 427 - SYS_OPEN_TREE = 428 - SYS_MOVE_MOUNT = 429 - SYS_FSOPEN = 430 - SYS_FSCONFIG = 431 - SYS_FSMOUNT = 432 - SYS_FSPICK = 433 - SYS_PIDFD_OPEN = 434 - SYS_CLONE3 = 435 - SYS_CLOSE_RANGE = 436 - SYS_OPENAT2 = 437 - SYS_PIDFD_GETFD = 438 - SYS_FACCESSAT2 = 439 - SYS_PROCESS_MADVISE = 440 - SYS_EPOLL_PWAIT2 = 441 - SYS_MOUNT_SETATTR = 442 + SYS_RESTART_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_WAITPID = 7 + SYS_CREAT = 8 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_EXECVE = 11 + SYS_CHDIR = 12 + SYS_TIME = 13 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_LCHOWN = 16 + SYS_BREAK = 17 + SYS_OLDSTAT = 18 + SYS_LSEEK = 19 + SYS_GETPID = 20 + SYS_MOUNT = 21 + SYS_UMOUNT = 22 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_STIME = 25 + SYS_PTRACE = 26 + SYS_ALARM = 27 + SYS_OLDFSTAT = 28 + SYS_PAUSE = 29 + SYS_UTIME = 30 + SYS_STTY = 31 + SYS_GTTY = 32 + SYS_ACCESS = 33 + SYS_NICE = 34 + SYS_FTIME = 35 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_RENAME = 38 + SYS_MKDIR = 39 + SYS_RMDIR = 40 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_TIMES = 43 + SYS_PROF = 44 + SYS_BRK = 45 + SYS_SETGID = 46 + SYS_GETGID = 47 + SYS_SIGNAL = 48 + SYS_GETEUID = 49 + SYS_GETEGID = 50 + SYS_ACCT = 51 + SYS_UMOUNT2 = 52 + SYS_LOCK = 53 + SYS_IOCTL = 54 + SYS_FCNTL = 55 + SYS_MPX = 56 + SYS_SETPGID = 57 + SYS_ULIMIT = 58 + SYS_OLDOLDUNAME = 59 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_USTAT = 62 + SYS_DUP2 = 63 + SYS_GETPPID = 64 + SYS_GETPGRP = 65 + SYS_SETSID = 66 + SYS_SIGACTION = 67 + SYS_SGETMASK = 68 + SYS_SSETMASK = 69 + SYS_SETREUID = 70 + SYS_SETREGID = 71 + SYS_SIGSUSPEND = 72 + SYS_SIGPENDING = 73 + SYS_SETHOSTNAME = 74 + SYS_SETRLIMIT = 75 + SYS_GETRLIMIT = 76 + SYS_GETRUSAGE = 77 + SYS_GETTIMEOFDAY = 78 + SYS_SETTIMEOFDAY = 79 + SYS_GETGROUPS = 80 + SYS_SETGROUPS = 81 + SYS_SELECT = 82 + SYS_SYMLINK = 83 + SYS_OLDLSTAT = 84 + SYS_READLINK = 85 + SYS_USELIB = 86 + SYS_SWAPON = 87 + SYS_REBOOT = 88 + SYS_READDIR = 89 + SYS_MMAP = 90 + SYS_MUNMAP = 91 + SYS_TRUNCATE = 92 + SYS_FTRUNCATE = 93 + SYS_FCHMOD = 94 + SYS_FCHOWN = 95 + SYS_GETPRIORITY = 96 + SYS_SETPRIORITY = 97 + SYS_PROFIL = 98 + SYS_STATFS = 99 + SYS_FSTATFS = 100 + SYS_IOPERM = 101 + SYS_SOCKETCALL = 102 + SYS_SYSLOG = 103 + SYS_SETITIMER = 104 + SYS_GETITIMER = 105 + SYS_STAT = 106 + SYS_LSTAT = 107 + SYS_FSTAT = 108 + SYS_OLDUNAME = 109 + SYS_IOPL = 110 + SYS_VHANGUP = 111 + SYS_IDLE = 112 + SYS_VM86 = 113 + SYS_WAIT4 = 114 + SYS_SWAPOFF = 115 + SYS_SYSINFO = 116 + SYS_IPC = 117 + SYS_FSYNC = 118 + SYS_SIGRETURN = 119 + SYS_CLONE = 120 + SYS_SETDOMAINNAME = 121 + SYS_UNAME = 122 + SYS_MODIFY_LDT = 123 + SYS_ADJTIMEX = 124 + SYS_MPROTECT = 125 + SYS_SIGPROCMASK = 126 + SYS_CREATE_MODULE = 127 + SYS_INIT_MODULE = 128 + SYS_DELETE_MODULE = 129 + SYS_GET_KERNEL_SYMS = 130 + SYS_QUOTACTL = 131 + SYS_GETPGID = 132 + SYS_FCHDIR = 133 + SYS_BDFLUSH = 134 + SYS_SYSFS = 135 + SYS_PERSONALITY = 136 + SYS_AFS_SYSCALL = 137 + SYS_SETFSUID = 138 + SYS_SETFSGID = 139 + SYS__LLSEEK = 140 + SYS_GETDENTS = 141 + SYS__NEWSELECT = 142 + SYS_FLOCK = 143 + SYS_MSYNC = 144 + SYS_READV = 145 + SYS_WRITEV = 146 + SYS_GETSID = 147 + SYS_FDATASYNC = 148 + SYS__SYSCTL = 149 + SYS_MLOCK = 150 + SYS_MUNLOCK = 151 + SYS_MLOCKALL = 152 + SYS_MUNLOCKALL = 153 + SYS_SCHED_SETPARAM = 154 + SYS_SCHED_GETPARAM = 155 + SYS_SCHED_SETSCHEDULER = 156 + SYS_SCHED_GETSCHEDULER = 157 + SYS_SCHED_YIELD = 158 + SYS_SCHED_GET_PRIORITY_MAX = 159 + SYS_SCHED_GET_PRIORITY_MIN = 160 + SYS_SCHED_RR_GET_INTERVAL = 161 + SYS_NANOSLEEP = 162 + SYS_MREMAP = 163 + SYS_SETRESUID = 164 + SYS_GETRESUID = 165 + SYS_QUERY_MODULE = 166 + SYS_POLL = 167 + SYS_NFSSERVCTL = 168 + SYS_SETRESGID = 169 + SYS_GETRESGID = 170 + SYS_PRCTL = 171 + SYS_RT_SIGRETURN = 172 + SYS_RT_SIGACTION = 173 + SYS_RT_SIGPROCMASK = 174 + SYS_RT_SIGPENDING = 175 + SYS_RT_SIGTIMEDWAIT = 176 + SYS_RT_SIGQUEUEINFO = 177 + SYS_RT_SIGSUSPEND = 178 + SYS_PREAD64 = 179 + SYS_PWRITE64 = 180 + SYS_CHOWN = 181 + SYS_GETCWD = 182 + SYS_CAPGET = 183 + SYS_CAPSET = 184 + SYS_SIGALTSTACK = 185 + SYS_SENDFILE = 186 + SYS_GETPMSG = 187 + SYS_PUTPMSG = 188 + SYS_VFORK = 189 + SYS_UGETRLIMIT = 190 + SYS_READAHEAD = 191 + SYS_PCICONFIG_READ = 198 + SYS_PCICONFIG_WRITE = 199 + SYS_PCICONFIG_IOBASE = 200 + SYS_MULTIPLEXER = 201 + SYS_GETDENTS64 = 202 + SYS_PIVOT_ROOT = 203 + SYS_MADVISE = 205 + SYS_MINCORE = 206 + SYS_GETTID = 207 + SYS_TKILL = 208 + SYS_SETXATTR = 209 + SYS_LSETXATTR = 210 + SYS_FSETXATTR = 211 + SYS_GETXATTR = 212 + SYS_LGETXATTR = 213 + SYS_FGETXATTR = 214 + SYS_LISTXATTR = 215 + SYS_LLISTXATTR = 216 + SYS_FLISTXATTR = 217 + SYS_REMOVEXATTR = 218 + SYS_LREMOVEXATTR = 219 + SYS_FREMOVEXATTR = 220 + SYS_FUTEX = 221 + SYS_SCHED_SETAFFINITY = 222 + SYS_SCHED_GETAFFINITY = 223 + SYS_TUXCALL = 225 + SYS_IO_SETUP = 227 + SYS_IO_DESTROY = 228 + SYS_IO_GETEVENTS = 229 + SYS_IO_SUBMIT = 230 + SYS_IO_CANCEL = 231 + SYS_SET_TID_ADDRESS = 232 + SYS_FADVISE64 = 233 + SYS_EXIT_GROUP = 234 + SYS_LOOKUP_DCOOKIE = 235 + SYS_EPOLL_CREATE = 236 + SYS_EPOLL_CTL = 237 + SYS_EPOLL_WAIT = 238 + SYS_REMAP_FILE_PAGES = 239 + SYS_TIMER_CREATE = 240 + SYS_TIMER_SETTIME = 241 + SYS_TIMER_GETTIME = 242 + SYS_TIMER_GETOVERRUN = 243 + SYS_TIMER_DELETE = 244 + SYS_CLOCK_SETTIME = 245 + SYS_CLOCK_GETTIME = 246 + SYS_CLOCK_GETRES = 247 + SYS_CLOCK_NANOSLEEP = 248 + SYS_SWAPCONTEXT = 249 + SYS_TGKILL = 250 + SYS_UTIMES = 251 + SYS_STATFS64 = 252 + SYS_FSTATFS64 = 253 + SYS_RTAS = 255 + SYS_SYS_DEBUG_SETCONTEXT = 256 + SYS_MIGRATE_PAGES = 258 + SYS_MBIND = 259 + SYS_GET_MEMPOLICY = 260 + SYS_SET_MEMPOLICY = 261 + SYS_MQ_OPEN = 262 + SYS_MQ_UNLINK = 263 + SYS_MQ_TIMEDSEND = 264 + SYS_MQ_TIMEDRECEIVE = 265 + SYS_MQ_NOTIFY = 266 + SYS_MQ_GETSETATTR = 267 + SYS_KEXEC_LOAD = 268 + SYS_ADD_KEY = 269 + SYS_REQUEST_KEY = 270 + SYS_KEYCTL = 271 + SYS_WAITID = 272 + SYS_IOPRIO_SET = 273 + SYS_IOPRIO_GET = 274 + SYS_INOTIFY_INIT = 275 + SYS_INOTIFY_ADD_WATCH = 276 + SYS_INOTIFY_RM_WATCH = 277 + SYS_SPU_RUN = 278 + SYS_SPU_CREATE = 279 + SYS_PSELECT6 = 280 + SYS_PPOLL = 281 + SYS_UNSHARE = 282 + SYS_SPLICE = 283 + SYS_TEE = 284 + SYS_VMSPLICE = 285 + SYS_OPENAT = 286 + SYS_MKDIRAT = 287 + SYS_MKNODAT = 288 + SYS_FCHOWNAT = 289 + SYS_FUTIMESAT = 290 + SYS_NEWFSTATAT = 291 + SYS_UNLINKAT = 292 + SYS_RENAMEAT = 293 + SYS_LINKAT = 294 + SYS_SYMLINKAT = 295 + SYS_READLINKAT = 296 + SYS_FCHMODAT = 297 + SYS_FACCESSAT = 298 + SYS_GET_ROBUST_LIST = 299 + SYS_SET_ROBUST_LIST = 300 + SYS_MOVE_PAGES = 301 + SYS_GETCPU = 302 + SYS_EPOLL_PWAIT = 303 + SYS_UTIMENSAT = 304 + SYS_SIGNALFD = 305 + SYS_TIMERFD_CREATE = 306 + SYS_EVENTFD = 307 + SYS_SYNC_FILE_RANGE2 = 308 + SYS_FALLOCATE = 309 + SYS_SUBPAGE_PROT = 310 + SYS_TIMERFD_SETTIME = 311 + SYS_TIMERFD_GETTIME = 312 + SYS_SIGNALFD4 = 313 + SYS_EVENTFD2 = 314 + SYS_EPOLL_CREATE1 = 315 + SYS_DUP3 = 316 + SYS_PIPE2 = 317 + SYS_INOTIFY_INIT1 = 318 + SYS_PERF_EVENT_OPEN = 319 + SYS_PREADV = 320 + SYS_PWRITEV = 321 + SYS_RT_TGSIGQUEUEINFO = 322 + SYS_FANOTIFY_INIT = 323 + SYS_FANOTIFY_MARK = 324 + SYS_PRLIMIT64 = 325 + SYS_SOCKET = 326 + SYS_BIND = 327 + SYS_CONNECT = 328 + SYS_LISTEN = 329 + SYS_ACCEPT = 330 + SYS_GETSOCKNAME = 331 + SYS_GETPEERNAME = 332 + SYS_SOCKETPAIR = 333 + SYS_SEND = 334 + SYS_SENDTO = 335 + SYS_RECV = 336 + SYS_RECVFROM = 337 + SYS_SHUTDOWN = 338 + SYS_SETSOCKOPT = 339 + SYS_GETSOCKOPT = 340 + SYS_SENDMSG = 341 + SYS_RECVMSG = 342 + SYS_RECVMMSG = 343 + SYS_ACCEPT4 = 344 + SYS_NAME_TO_HANDLE_AT = 345 + SYS_OPEN_BY_HANDLE_AT = 346 + SYS_CLOCK_ADJTIME = 347 + SYS_SYNCFS = 348 + SYS_SENDMMSG = 349 + SYS_SETNS = 350 + SYS_PROCESS_VM_READV = 351 + SYS_PROCESS_VM_WRITEV = 352 + SYS_FINIT_MODULE = 353 + SYS_KCMP = 354 + SYS_SCHED_SETATTR = 355 + SYS_SCHED_GETATTR = 356 + SYS_RENAMEAT2 = 357 + SYS_SECCOMP = 358 + SYS_GETRANDOM = 359 + SYS_MEMFD_CREATE = 360 + SYS_BPF = 361 + SYS_EXECVEAT = 362 + SYS_SWITCH_ENDIAN = 363 + SYS_USERFAULTFD = 364 + SYS_MEMBARRIER = 365 + SYS_MLOCK2 = 378 + SYS_COPY_FILE_RANGE = 379 + SYS_PREADV2 = 380 + SYS_PWRITEV2 = 381 + SYS_KEXEC_FILE_LOAD = 382 + SYS_STATX = 383 + SYS_PKEY_ALLOC = 384 + SYS_PKEY_FREE = 385 + SYS_PKEY_MPROTECT = 386 + SYS_RSEQ = 387 + SYS_IO_PGETEVENTS = 388 + SYS_SEMTIMEDOP = 392 + SYS_SEMGET = 393 + SYS_SEMCTL = 394 + SYS_SHMGET = 395 + SYS_SHMCTL = 396 + SYS_SHMAT = 397 + SYS_SHMDT = 398 + SYS_MSGGET = 399 + SYS_MSGSND = 400 + SYS_MSGRCV = 401 + SYS_MSGCTL = 402 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLONE3 = 435 + SYS_CLOSE_RANGE = 436 + SYS_OPENAT2 = 437 + SYS_PIDFD_GETFD = 438 + SYS_FACCESSAT2 = 439 + SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 + SYS_MOUNT_SETATTR = 442 + SYS_LANDLOCK_CREATE_RULESET = 444 + SYS_LANDLOCK_ADD_RULE = 445 + SYS_LANDLOCK_RESTRICT_SELF = 446 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go index 66c8a8e09e..0db9fbba5f 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go @@ -7,302 +7,305 @@ package unix const ( - SYS_IO_SETUP = 0 - SYS_IO_DESTROY = 1 - SYS_IO_SUBMIT = 2 - SYS_IO_CANCEL = 3 - SYS_IO_GETEVENTS = 4 - SYS_SETXATTR = 5 - SYS_LSETXATTR = 6 - SYS_FSETXATTR = 7 - SYS_GETXATTR = 8 - SYS_LGETXATTR = 9 - SYS_FGETXATTR = 10 - SYS_LISTXATTR = 11 - SYS_LLISTXATTR = 12 - SYS_FLISTXATTR = 13 - SYS_REMOVEXATTR = 14 - SYS_LREMOVEXATTR = 15 - SYS_FREMOVEXATTR = 16 - SYS_GETCWD = 17 - SYS_LOOKUP_DCOOKIE = 18 - SYS_EVENTFD2 = 19 - SYS_EPOLL_CREATE1 = 20 - SYS_EPOLL_CTL = 21 - SYS_EPOLL_PWAIT = 22 - SYS_DUP = 23 - SYS_DUP3 = 24 - SYS_FCNTL = 25 - SYS_INOTIFY_INIT1 = 26 - SYS_INOTIFY_ADD_WATCH = 27 - SYS_INOTIFY_RM_WATCH = 28 - SYS_IOCTL = 29 - SYS_IOPRIO_SET = 30 - SYS_IOPRIO_GET = 31 - SYS_FLOCK = 32 - SYS_MKNODAT = 33 - SYS_MKDIRAT = 34 - SYS_UNLINKAT = 35 - SYS_SYMLINKAT = 36 - SYS_LINKAT = 37 - SYS_UMOUNT2 = 39 - SYS_MOUNT = 40 - SYS_PIVOT_ROOT = 41 - SYS_NFSSERVCTL = 42 - SYS_STATFS = 43 - SYS_FSTATFS = 44 - SYS_TRUNCATE = 45 - SYS_FTRUNCATE = 46 - SYS_FALLOCATE = 47 - SYS_FACCESSAT = 48 - SYS_CHDIR = 49 - SYS_FCHDIR = 50 - SYS_CHROOT = 51 - SYS_FCHMOD = 52 - SYS_FCHMODAT = 53 - SYS_FCHOWNAT = 54 - SYS_FCHOWN = 55 - SYS_OPENAT = 56 - SYS_CLOSE = 57 - SYS_VHANGUP = 58 - SYS_PIPE2 = 59 - SYS_QUOTACTL = 60 - SYS_GETDENTS64 = 61 - SYS_LSEEK = 62 - SYS_READ = 63 - SYS_WRITE = 64 - SYS_READV = 65 - SYS_WRITEV = 66 - SYS_PREAD64 = 67 - SYS_PWRITE64 = 68 - SYS_PREADV = 69 - SYS_PWRITEV = 70 - SYS_SENDFILE = 71 - SYS_PSELECT6 = 72 - SYS_PPOLL = 73 - SYS_SIGNALFD4 = 74 - SYS_VMSPLICE = 75 - SYS_SPLICE = 76 - SYS_TEE = 77 - SYS_READLINKAT = 78 - SYS_FSTATAT = 79 - SYS_FSTAT = 80 - SYS_SYNC = 81 - SYS_FSYNC = 82 - SYS_FDATASYNC = 83 - SYS_SYNC_FILE_RANGE = 84 - SYS_TIMERFD_CREATE = 85 - SYS_TIMERFD_SETTIME = 86 - SYS_TIMERFD_GETTIME = 87 - SYS_UTIMENSAT = 88 - SYS_ACCT = 89 - SYS_CAPGET = 90 - SYS_CAPSET = 91 - SYS_PERSONALITY = 92 - SYS_EXIT = 93 - SYS_EXIT_GROUP = 94 - SYS_WAITID = 95 - SYS_SET_TID_ADDRESS = 96 - SYS_UNSHARE = 97 - SYS_FUTEX = 98 - SYS_SET_ROBUST_LIST = 99 - SYS_GET_ROBUST_LIST = 100 - SYS_NANOSLEEP = 101 - SYS_GETITIMER = 102 - SYS_SETITIMER = 103 - SYS_KEXEC_LOAD = 104 - SYS_INIT_MODULE = 105 - SYS_DELETE_MODULE = 106 - SYS_TIMER_CREATE = 107 - SYS_TIMER_GETTIME = 108 - SYS_TIMER_GETOVERRUN = 109 - SYS_TIMER_SETTIME = 110 - SYS_TIMER_DELETE = 111 - SYS_CLOCK_SETTIME = 112 - SYS_CLOCK_GETTIME = 113 - SYS_CLOCK_GETRES = 114 - SYS_CLOCK_NANOSLEEP = 115 - SYS_SYSLOG = 116 - SYS_PTRACE = 117 - SYS_SCHED_SETPARAM = 118 - SYS_SCHED_SETSCHEDULER = 119 - SYS_SCHED_GETSCHEDULER = 120 - SYS_SCHED_GETPARAM = 121 - SYS_SCHED_SETAFFINITY = 122 - SYS_SCHED_GETAFFINITY = 123 - SYS_SCHED_YIELD = 124 - SYS_SCHED_GET_PRIORITY_MAX = 125 - SYS_SCHED_GET_PRIORITY_MIN = 126 - SYS_SCHED_RR_GET_INTERVAL = 127 - SYS_RESTART_SYSCALL = 128 - SYS_KILL = 129 - SYS_TKILL = 130 - SYS_TGKILL = 131 - SYS_SIGALTSTACK = 132 - SYS_RT_SIGSUSPEND = 133 - SYS_RT_SIGACTION = 134 - SYS_RT_SIGPROCMASK = 135 - SYS_RT_SIGPENDING = 136 - SYS_RT_SIGTIMEDWAIT = 137 - SYS_RT_SIGQUEUEINFO = 138 - SYS_RT_SIGRETURN = 139 - SYS_SETPRIORITY = 140 - SYS_GETPRIORITY = 141 - SYS_REBOOT = 142 - SYS_SETREGID = 143 - SYS_SETGID = 144 - SYS_SETREUID = 145 - SYS_SETUID = 146 - SYS_SETRESUID = 147 - SYS_GETRESUID = 148 - SYS_SETRESGID = 149 - SYS_GETRESGID = 150 - SYS_SETFSUID = 151 - SYS_SETFSGID = 152 - SYS_TIMES = 153 - SYS_SETPGID = 154 - SYS_GETPGID = 155 - SYS_GETSID = 156 - SYS_SETSID = 157 - SYS_GETGROUPS = 158 - SYS_SETGROUPS = 159 - SYS_UNAME = 160 - SYS_SETHOSTNAME = 161 - SYS_SETDOMAINNAME = 162 - SYS_GETRLIMIT = 163 - SYS_SETRLIMIT = 164 - SYS_GETRUSAGE = 165 - SYS_UMASK = 166 - SYS_PRCTL = 167 - SYS_GETCPU = 168 - SYS_GETTIMEOFDAY = 169 - SYS_SETTIMEOFDAY = 170 - SYS_ADJTIMEX = 171 - SYS_GETPID = 172 - SYS_GETPPID = 173 - SYS_GETUID = 174 - SYS_GETEUID = 175 - SYS_GETGID = 176 - SYS_GETEGID = 177 - SYS_GETTID = 178 - SYS_SYSINFO = 179 - SYS_MQ_OPEN = 180 - SYS_MQ_UNLINK = 181 - SYS_MQ_TIMEDSEND = 182 - SYS_MQ_TIMEDRECEIVE = 183 - SYS_MQ_NOTIFY = 184 - SYS_MQ_GETSETATTR = 185 - SYS_MSGGET = 186 - SYS_MSGCTL = 187 - SYS_MSGRCV = 188 - SYS_MSGSND = 189 - SYS_SEMGET = 190 - SYS_SEMCTL = 191 - SYS_SEMTIMEDOP = 192 - SYS_SEMOP = 193 - SYS_SHMGET = 194 - SYS_SHMCTL = 195 - SYS_SHMAT = 196 - SYS_SHMDT = 197 - SYS_SOCKET = 198 - SYS_SOCKETPAIR = 199 - SYS_BIND = 200 - SYS_LISTEN = 201 - SYS_ACCEPT = 202 - SYS_CONNECT = 203 - SYS_GETSOCKNAME = 204 - SYS_GETPEERNAME = 205 - SYS_SENDTO = 206 - SYS_RECVFROM = 207 - SYS_SETSOCKOPT = 208 - SYS_GETSOCKOPT = 209 - SYS_SHUTDOWN = 210 - SYS_SENDMSG = 211 - SYS_RECVMSG = 212 - SYS_READAHEAD = 213 - SYS_BRK = 214 - SYS_MUNMAP = 215 - SYS_MREMAP = 216 - SYS_ADD_KEY = 217 - SYS_REQUEST_KEY = 218 - SYS_KEYCTL = 219 - SYS_CLONE = 220 - SYS_EXECVE = 221 - SYS_MMAP = 222 - SYS_FADVISE64 = 223 - SYS_SWAPON = 224 - SYS_SWAPOFF = 225 - SYS_MPROTECT = 226 - SYS_MSYNC = 227 - SYS_MLOCK = 228 - SYS_MUNLOCK = 229 - SYS_MLOCKALL = 230 - SYS_MUNLOCKALL = 231 - SYS_MINCORE = 232 - SYS_MADVISE = 233 - SYS_REMAP_FILE_PAGES = 234 - SYS_MBIND = 235 - SYS_GET_MEMPOLICY = 236 - SYS_SET_MEMPOLICY = 237 - SYS_MIGRATE_PAGES = 238 - SYS_MOVE_PAGES = 239 - SYS_RT_TGSIGQUEUEINFO = 240 - SYS_PERF_EVENT_OPEN = 241 - SYS_ACCEPT4 = 242 - SYS_RECVMMSG = 243 - SYS_ARCH_SPECIFIC_SYSCALL = 244 - SYS_WAIT4 = 260 - SYS_PRLIMIT64 = 261 - SYS_FANOTIFY_INIT = 262 - SYS_FANOTIFY_MARK = 263 - SYS_NAME_TO_HANDLE_AT = 264 - SYS_OPEN_BY_HANDLE_AT = 265 - SYS_CLOCK_ADJTIME = 266 - SYS_SYNCFS = 267 - SYS_SETNS = 268 - SYS_SENDMMSG = 269 - SYS_PROCESS_VM_READV = 270 - SYS_PROCESS_VM_WRITEV = 271 - SYS_KCMP = 272 - SYS_FINIT_MODULE = 273 - SYS_SCHED_SETATTR = 274 - SYS_SCHED_GETATTR = 275 - SYS_RENAMEAT2 = 276 - SYS_SECCOMP = 277 - SYS_GETRANDOM = 278 - SYS_MEMFD_CREATE = 279 - SYS_BPF = 280 - SYS_EXECVEAT = 281 - SYS_USERFAULTFD = 282 - SYS_MEMBARRIER = 283 - SYS_MLOCK2 = 284 - SYS_COPY_FILE_RANGE = 285 - SYS_PREADV2 = 286 - SYS_PWRITEV2 = 287 - SYS_PKEY_MPROTECT = 288 - SYS_PKEY_ALLOC = 289 - SYS_PKEY_FREE = 290 - SYS_STATX = 291 - SYS_IO_PGETEVENTS = 292 - SYS_RSEQ = 293 - SYS_KEXEC_FILE_LOAD = 294 - SYS_PIDFD_SEND_SIGNAL = 424 - SYS_IO_URING_SETUP = 425 - SYS_IO_URING_ENTER = 426 - SYS_IO_URING_REGISTER = 427 - SYS_OPEN_TREE = 428 - SYS_MOVE_MOUNT = 429 - SYS_FSOPEN = 430 - SYS_FSCONFIG = 431 - SYS_FSMOUNT = 432 - SYS_FSPICK = 433 - SYS_PIDFD_OPEN = 434 - SYS_CLONE3 = 435 - SYS_CLOSE_RANGE = 436 - SYS_OPENAT2 = 437 - SYS_PIDFD_GETFD = 438 - SYS_FACCESSAT2 = 439 - SYS_PROCESS_MADVISE = 440 - SYS_EPOLL_PWAIT2 = 441 - SYS_MOUNT_SETATTR = 442 + SYS_IO_SETUP = 0 + SYS_IO_DESTROY = 1 + SYS_IO_SUBMIT = 2 + SYS_IO_CANCEL = 3 + SYS_IO_GETEVENTS = 4 + SYS_SETXATTR = 5 + SYS_LSETXATTR = 6 + SYS_FSETXATTR = 7 + SYS_GETXATTR = 8 + SYS_LGETXATTR = 9 + SYS_FGETXATTR = 10 + SYS_LISTXATTR = 11 + SYS_LLISTXATTR = 12 + SYS_FLISTXATTR = 13 + SYS_REMOVEXATTR = 14 + SYS_LREMOVEXATTR = 15 + SYS_FREMOVEXATTR = 16 + SYS_GETCWD = 17 + SYS_LOOKUP_DCOOKIE = 18 + SYS_EVENTFD2 = 19 + SYS_EPOLL_CREATE1 = 20 + SYS_EPOLL_CTL = 21 + SYS_EPOLL_PWAIT = 22 + SYS_DUP = 23 + SYS_DUP3 = 24 + SYS_FCNTL = 25 + SYS_INOTIFY_INIT1 = 26 + SYS_INOTIFY_ADD_WATCH = 27 + SYS_INOTIFY_RM_WATCH = 28 + SYS_IOCTL = 29 + SYS_IOPRIO_SET = 30 + SYS_IOPRIO_GET = 31 + SYS_FLOCK = 32 + SYS_MKNODAT = 33 + SYS_MKDIRAT = 34 + SYS_UNLINKAT = 35 + SYS_SYMLINKAT = 36 + SYS_LINKAT = 37 + SYS_UMOUNT2 = 39 + SYS_MOUNT = 40 + SYS_PIVOT_ROOT = 41 + SYS_NFSSERVCTL = 42 + SYS_STATFS = 43 + SYS_FSTATFS = 44 + SYS_TRUNCATE = 45 + SYS_FTRUNCATE = 46 + SYS_FALLOCATE = 47 + SYS_FACCESSAT = 48 + SYS_CHDIR = 49 + SYS_FCHDIR = 50 + SYS_CHROOT = 51 + SYS_FCHMOD = 52 + SYS_FCHMODAT = 53 + SYS_FCHOWNAT = 54 + SYS_FCHOWN = 55 + SYS_OPENAT = 56 + SYS_CLOSE = 57 + SYS_VHANGUP = 58 + SYS_PIPE2 = 59 + SYS_QUOTACTL = 60 + SYS_GETDENTS64 = 61 + SYS_LSEEK = 62 + SYS_READ = 63 + SYS_WRITE = 64 + SYS_READV = 65 + SYS_WRITEV = 66 + SYS_PREAD64 = 67 + SYS_PWRITE64 = 68 + SYS_PREADV = 69 + SYS_PWRITEV = 70 + SYS_SENDFILE = 71 + SYS_PSELECT6 = 72 + SYS_PPOLL = 73 + SYS_SIGNALFD4 = 74 + SYS_VMSPLICE = 75 + SYS_SPLICE = 76 + SYS_TEE = 77 + SYS_READLINKAT = 78 + SYS_FSTATAT = 79 + SYS_FSTAT = 80 + SYS_SYNC = 81 + SYS_FSYNC = 82 + SYS_FDATASYNC = 83 + SYS_SYNC_FILE_RANGE = 84 + SYS_TIMERFD_CREATE = 85 + SYS_TIMERFD_SETTIME = 86 + SYS_TIMERFD_GETTIME = 87 + SYS_UTIMENSAT = 88 + SYS_ACCT = 89 + SYS_CAPGET = 90 + SYS_CAPSET = 91 + SYS_PERSONALITY = 92 + SYS_EXIT = 93 + SYS_EXIT_GROUP = 94 + SYS_WAITID = 95 + SYS_SET_TID_ADDRESS = 96 + SYS_UNSHARE = 97 + SYS_FUTEX = 98 + SYS_SET_ROBUST_LIST = 99 + SYS_GET_ROBUST_LIST = 100 + SYS_NANOSLEEP = 101 + SYS_GETITIMER = 102 + SYS_SETITIMER = 103 + SYS_KEXEC_LOAD = 104 + SYS_INIT_MODULE = 105 + SYS_DELETE_MODULE = 106 + SYS_TIMER_CREATE = 107 + SYS_TIMER_GETTIME = 108 + SYS_TIMER_GETOVERRUN = 109 + SYS_TIMER_SETTIME = 110 + SYS_TIMER_DELETE = 111 + SYS_CLOCK_SETTIME = 112 + SYS_CLOCK_GETTIME = 113 + SYS_CLOCK_GETRES = 114 + SYS_CLOCK_NANOSLEEP = 115 + SYS_SYSLOG = 116 + SYS_PTRACE = 117 + SYS_SCHED_SETPARAM = 118 + SYS_SCHED_SETSCHEDULER = 119 + SYS_SCHED_GETSCHEDULER = 120 + SYS_SCHED_GETPARAM = 121 + SYS_SCHED_SETAFFINITY = 122 + SYS_SCHED_GETAFFINITY = 123 + SYS_SCHED_YIELD = 124 + SYS_SCHED_GET_PRIORITY_MAX = 125 + SYS_SCHED_GET_PRIORITY_MIN = 126 + SYS_SCHED_RR_GET_INTERVAL = 127 + SYS_RESTART_SYSCALL = 128 + SYS_KILL = 129 + SYS_TKILL = 130 + SYS_TGKILL = 131 + SYS_SIGALTSTACK = 132 + SYS_RT_SIGSUSPEND = 133 + SYS_RT_SIGACTION = 134 + SYS_RT_SIGPROCMASK = 135 + SYS_RT_SIGPENDING = 136 + SYS_RT_SIGTIMEDWAIT = 137 + SYS_RT_SIGQUEUEINFO = 138 + SYS_RT_SIGRETURN = 139 + SYS_SETPRIORITY = 140 + SYS_GETPRIORITY = 141 + SYS_REBOOT = 142 + SYS_SETREGID = 143 + SYS_SETGID = 144 + SYS_SETREUID = 145 + SYS_SETUID = 146 + SYS_SETRESUID = 147 + SYS_GETRESUID = 148 + SYS_SETRESGID = 149 + SYS_GETRESGID = 150 + SYS_SETFSUID = 151 + SYS_SETFSGID = 152 + SYS_TIMES = 153 + SYS_SETPGID = 154 + SYS_GETPGID = 155 + SYS_GETSID = 156 + SYS_SETSID = 157 + SYS_GETGROUPS = 158 + SYS_SETGROUPS = 159 + SYS_UNAME = 160 + SYS_SETHOSTNAME = 161 + SYS_SETDOMAINNAME = 162 + SYS_GETRLIMIT = 163 + SYS_SETRLIMIT = 164 + SYS_GETRUSAGE = 165 + SYS_UMASK = 166 + SYS_PRCTL = 167 + SYS_GETCPU = 168 + SYS_GETTIMEOFDAY = 169 + SYS_SETTIMEOFDAY = 170 + SYS_ADJTIMEX = 171 + SYS_GETPID = 172 + SYS_GETPPID = 173 + SYS_GETUID = 174 + SYS_GETEUID = 175 + SYS_GETGID = 176 + SYS_GETEGID = 177 + SYS_GETTID = 178 + SYS_SYSINFO = 179 + SYS_MQ_OPEN = 180 + SYS_MQ_UNLINK = 181 + SYS_MQ_TIMEDSEND = 182 + SYS_MQ_TIMEDRECEIVE = 183 + SYS_MQ_NOTIFY = 184 + SYS_MQ_GETSETATTR = 185 + SYS_MSGGET = 186 + SYS_MSGCTL = 187 + SYS_MSGRCV = 188 + SYS_MSGSND = 189 + SYS_SEMGET = 190 + SYS_SEMCTL = 191 + SYS_SEMTIMEDOP = 192 + SYS_SEMOP = 193 + SYS_SHMGET = 194 + SYS_SHMCTL = 195 + SYS_SHMAT = 196 + SYS_SHMDT = 197 + SYS_SOCKET = 198 + SYS_SOCKETPAIR = 199 + SYS_BIND = 200 + SYS_LISTEN = 201 + SYS_ACCEPT = 202 + SYS_CONNECT = 203 + SYS_GETSOCKNAME = 204 + SYS_GETPEERNAME = 205 + SYS_SENDTO = 206 + SYS_RECVFROM = 207 + SYS_SETSOCKOPT = 208 + SYS_GETSOCKOPT = 209 + SYS_SHUTDOWN = 210 + SYS_SENDMSG = 211 + SYS_RECVMSG = 212 + SYS_READAHEAD = 213 + SYS_BRK = 214 + SYS_MUNMAP = 215 + SYS_MREMAP = 216 + SYS_ADD_KEY = 217 + SYS_REQUEST_KEY = 218 + SYS_KEYCTL = 219 + SYS_CLONE = 220 + SYS_EXECVE = 221 + SYS_MMAP = 222 + SYS_FADVISE64 = 223 + SYS_SWAPON = 224 + SYS_SWAPOFF = 225 + SYS_MPROTECT = 226 + SYS_MSYNC = 227 + SYS_MLOCK = 228 + SYS_MUNLOCK = 229 + SYS_MLOCKALL = 230 + SYS_MUNLOCKALL = 231 + SYS_MINCORE = 232 + SYS_MADVISE = 233 + SYS_REMAP_FILE_PAGES = 234 + SYS_MBIND = 235 + SYS_GET_MEMPOLICY = 236 + SYS_SET_MEMPOLICY = 237 + SYS_MIGRATE_PAGES = 238 + SYS_MOVE_PAGES = 239 + SYS_RT_TGSIGQUEUEINFO = 240 + SYS_PERF_EVENT_OPEN = 241 + SYS_ACCEPT4 = 242 + SYS_RECVMMSG = 243 + SYS_ARCH_SPECIFIC_SYSCALL = 244 + SYS_WAIT4 = 260 + SYS_PRLIMIT64 = 261 + SYS_FANOTIFY_INIT = 262 + SYS_FANOTIFY_MARK = 263 + SYS_NAME_TO_HANDLE_AT = 264 + SYS_OPEN_BY_HANDLE_AT = 265 + SYS_CLOCK_ADJTIME = 266 + SYS_SYNCFS = 267 + SYS_SETNS = 268 + SYS_SENDMMSG = 269 + SYS_PROCESS_VM_READV = 270 + SYS_PROCESS_VM_WRITEV = 271 + SYS_KCMP = 272 + SYS_FINIT_MODULE = 273 + SYS_SCHED_SETATTR = 274 + SYS_SCHED_GETATTR = 275 + SYS_RENAMEAT2 = 276 + SYS_SECCOMP = 277 + SYS_GETRANDOM = 278 + SYS_MEMFD_CREATE = 279 + SYS_BPF = 280 + SYS_EXECVEAT = 281 + SYS_USERFAULTFD = 282 + SYS_MEMBARRIER = 283 + SYS_MLOCK2 = 284 + SYS_COPY_FILE_RANGE = 285 + SYS_PREADV2 = 286 + SYS_PWRITEV2 = 287 + SYS_PKEY_MPROTECT = 288 + SYS_PKEY_ALLOC = 289 + SYS_PKEY_FREE = 290 + SYS_STATX = 291 + SYS_IO_PGETEVENTS = 292 + SYS_RSEQ = 293 + SYS_KEXEC_FILE_LOAD = 294 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLONE3 = 435 + SYS_CLOSE_RANGE = 436 + SYS_OPENAT2 = 437 + SYS_PIDFD_GETFD = 438 + SYS_FACCESSAT2 = 439 + SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 + SYS_MOUNT_SETATTR = 442 + SYS_LANDLOCK_CREATE_RULESET = 444 + SYS_LANDLOCK_ADD_RULE = 445 + SYS_LANDLOCK_RESTRICT_SELF = 446 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go index aea5760cea..378e6ec8b1 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go @@ -7,365 +7,368 @@ package unix const ( - SYS_EXIT = 1 - SYS_FORK = 2 - SYS_READ = 3 - SYS_WRITE = 4 - SYS_OPEN = 5 - SYS_CLOSE = 6 - SYS_RESTART_SYSCALL = 7 - SYS_CREAT = 8 - SYS_LINK = 9 - SYS_UNLINK = 10 - SYS_EXECVE = 11 - SYS_CHDIR = 12 - SYS_MKNOD = 14 - SYS_CHMOD = 15 - SYS_LSEEK = 19 - SYS_GETPID = 20 - SYS_MOUNT = 21 - SYS_UMOUNT = 22 - SYS_PTRACE = 26 - SYS_ALARM = 27 - SYS_PAUSE = 29 - SYS_UTIME = 30 - SYS_ACCESS = 33 - SYS_NICE = 34 - SYS_SYNC = 36 - SYS_KILL = 37 - SYS_RENAME = 38 - SYS_MKDIR = 39 - SYS_RMDIR = 40 - SYS_DUP = 41 - SYS_PIPE = 42 - SYS_TIMES = 43 - SYS_BRK = 45 - SYS_SIGNAL = 48 - SYS_ACCT = 51 - SYS_UMOUNT2 = 52 - SYS_IOCTL = 54 - SYS_FCNTL = 55 - SYS_SETPGID = 57 - SYS_UMASK = 60 - SYS_CHROOT = 61 - SYS_USTAT = 62 - SYS_DUP2 = 63 - SYS_GETPPID = 64 - SYS_GETPGRP = 65 - SYS_SETSID = 66 - SYS_SIGACTION = 67 - SYS_SIGSUSPEND = 72 - SYS_SIGPENDING = 73 - SYS_SETHOSTNAME = 74 - SYS_SETRLIMIT = 75 - SYS_GETRUSAGE = 77 - SYS_GETTIMEOFDAY = 78 - SYS_SETTIMEOFDAY = 79 - SYS_SYMLINK = 83 - SYS_READLINK = 85 - SYS_USELIB = 86 - SYS_SWAPON = 87 - SYS_REBOOT = 88 - SYS_READDIR = 89 - SYS_MMAP = 90 - SYS_MUNMAP = 91 - SYS_TRUNCATE = 92 - SYS_FTRUNCATE = 93 - SYS_FCHMOD = 94 - SYS_GETPRIORITY = 96 - SYS_SETPRIORITY = 97 - SYS_STATFS = 99 - SYS_FSTATFS = 100 - SYS_SOCKETCALL = 102 - SYS_SYSLOG = 103 - SYS_SETITIMER = 104 - SYS_GETITIMER = 105 - SYS_STAT = 106 - SYS_LSTAT = 107 - SYS_FSTAT = 108 - SYS_LOOKUP_DCOOKIE = 110 - SYS_VHANGUP = 111 - SYS_IDLE = 112 - SYS_WAIT4 = 114 - SYS_SWAPOFF = 115 - SYS_SYSINFO = 116 - SYS_IPC = 117 - SYS_FSYNC = 118 - SYS_SIGRETURN = 119 - SYS_CLONE = 120 - SYS_SETDOMAINNAME = 121 - SYS_UNAME = 122 - SYS_ADJTIMEX = 124 - SYS_MPROTECT = 125 - SYS_SIGPROCMASK = 126 - SYS_CREATE_MODULE = 127 - SYS_INIT_MODULE = 128 - SYS_DELETE_MODULE = 129 - SYS_GET_KERNEL_SYMS = 130 - SYS_QUOTACTL = 131 - SYS_GETPGID = 132 - SYS_FCHDIR = 133 - SYS_BDFLUSH = 134 - SYS_SYSFS = 135 - SYS_PERSONALITY = 136 - SYS_AFS_SYSCALL = 137 - SYS_GETDENTS = 141 - SYS_SELECT = 142 - SYS_FLOCK = 143 - SYS_MSYNC = 144 - SYS_READV = 145 - SYS_WRITEV = 146 - SYS_GETSID = 147 - SYS_FDATASYNC = 148 - SYS__SYSCTL = 149 - SYS_MLOCK = 150 - SYS_MUNLOCK = 151 - SYS_MLOCKALL = 152 - SYS_MUNLOCKALL = 153 - SYS_SCHED_SETPARAM = 154 - SYS_SCHED_GETPARAM = 155 - SYS_SCHED_SETSCHEDULER = 156 - SYS_SCHED_GETSCHEDULER = 157 - SYS_SCHED_YIELD = 158 - SYS_SCHED_GET_PRIORITY_MAX = 159 - SYS_SCHED_GET_PRIORITY_MIN = 160 - SYS_SCHED_RR_GET_INTERVAL = 161 - SYS_NANOSLEEP = 162 - SYS_MREMAP = 163 - SYS_QUERY_MODULE = 167 - SYS_POLL = 168 - SYS_NFSSERVCTL = 169 - SYS_PRCTL = 172 - SYS_RT_SIGRETURN = 173 - SYS_RT_SIGACTION = 174 - SYS_RT_SIGPROCMASK = 175 - SYS_RT_SIGPENDING = 176 - SYS_RT_SIGTIMEDWAIT = 177 - SYS_RT_SIGQUEUEINFO = 178 - SYS_RT_SIGSUSPEND = 179 - SYS_PREAD64 = 180 - SYS_PWRITE64 = 181 - SYS_GETCWD = 183 - SYS_CAPGET = 184 - SYS_CAPSET = 185 - SYS_SIGALTSTACK = 186 - SYS_SENDFILE = 187 - SYS_GETPMSG = 188 - SYS_PUTPMSG = 189 - SYS_VFORK = 190 - SYS_GETRLIMIT = 191 - SYS_LCHOWN = 198 - SYS_GETUID = 199 - SYS_GETGID = 200 - SYS_GETEUID = 201 - SYS_GETEGID = 202 - SYS_SETREUID = 203 - SYS_SETREGID = 204 - SYS_GETGROUPS = 205 - SYS_SETGROUPS = 206 - SYS_FCHOWN = 207 - SYS_SETRESUID = 208 - SYS_GETRESUID = 209 - SYS_SETRESGID = 210 - SYS_GETRESGID = 211 - SYS_CHOWN = 212 - SYS_SETUID = 213 - SYS_SETGID = 214 - SYS_SETFSUID = 215 - SYS_SETFSGID = 216 - SYS_PIVOT_ROOT = 217 - SYS_MINCORE = 218 - SYS_MADVISE = 219 - SYS_GETDENTS64 = 220 - SYS_READAHEAD = 222 - SYS_SETXATTR = 224 - SYS_LSETXATTR = 225 - SYS_FSETXATTR = 226 - SYS_GETXATTR = 227 - SYS_LGETXATTR = 228 - SYS_FGETXATTR = 229 - SYS_LISTXATTR = 230 - SYS_LLISTXATTR = 231 - SYS_FLISTXATTR = 232 - SYS_REMOVEXATTR = 233 - SYS_LREMOVEXATTR = 234 - SYS_FREMOVEXATTR = 235 - SYS_GETTID = 236 - SYS_TKILL = 237 - SYS_FUTEX = 238 - SYS_SCHED_SETAFFINITY = 239 - SYS_SCHED_GETAFFINITY = 240 - SYS_TGKILL = 241 - SYS_IO_SETUP = 243 - SYS_IO_DESTROY = 244 - SYS_IO_GETEVENTS = 245 - SYS_IO_SUBMIT = 246 - SYS_IO_CANCEL = 247 - SYS_EXIT_GROUP = 248 - SYS_EPOLL_CREATE = 249 - SYS_EPOLL_CTL = 250 - SYS_EPOLL_WAIT = 251 - SYS_SET_TID_ADDRESS = 252 - SYS_FADVISE64 = 253 - SYS_TIMER_CREATE = 254 - SYS_TIMER_SETTIME = 255 - SYS_TIMER_GETTIME = 256 - SYS_TIMER_GETOVERRUN = 257 - SYS_TIMER_DELETE = 258 - SYS_CLOCK_SETTIME = 259 - SYS_CLOCK_GETTIME = 260 - SYS_CLOCK_GETRES = 261 - SYS_CLOCK_NANOSLEEP = 262 - SYS_STATFS64 = 265 - SYS_FSTATFS64 = 266 - SYS_REMAP_FILE_PAGES = 267 - SYS_MBIND = 268 - SYS_GET_MEMPOLICY = 269 - SYS_SET_MEMPOLICY = 270 - SYS_MQ_OPEN = 271 - SYS_MQ_UNLINK = 272 - SYS_MQ_TIMEDSEND = 273 - SYS_MQ_TIMEDRECEIVE = 274 - SYS_MQ_NOTIFY = 275 - SYS_MQ_GETSETATTR = 276 - SYS_KEXEC_LOAD = 277 - SYS_ADD_KEY = 278 - SYS_REQUEST_KEY = 279 - SYS_KEYCTL = 280 - SYS_WAITID = 281 - SYS_IOPRIO_SET = 282 - SYS_IOPRIO_GET = 283 - SYS_INOTIFY_INIT = 284 - SYS_INOTIFY_ADD_WATCH = 285 - SYS_INOTIFY_RM_WATCH = 286 - SYS_MIGRATE_PAGES = 287 - SYS_OPENAT = 288 - SYS_MKDIRAT = 289 - SYS_MKNODAT = 290 - SYS_FCHOWNAT = 291 - SYS_FUTIMESAT = 292 - SYS_NEWFSTATAT = 293 - SYS_UNLINKAT = 294 - SYS_RENAMEAT = 295 - SYS_LINKAT = 296 - SYS_SYMLINKAT = 297 - SYS_READLINKAT = 298 - SYS_FCHMODAT = 299 - SYS_FACCESSAT = 300 - SYS_PSELECT6 = 301 - SYS_PPOLL = 302 - SYS_UNSHARE = 303 - SYS_SET_ROBUST_LIST = 304 - SYS_GET_ROBUST_LIST = 305 - SYS_SPLICE = 306 - SYS_SYNC_FILE_RANGE = 307 - SYS_TEE = 308 - SYS_VMSPLICE = 309 - SYS_MOVE_PAGES = 310 - SYS_GETCPU = 311 - SYS_EPOLL_PWAIT = 312 - SYS_UTIMES = 313 - SYS_FALLOCATE = 314 - SYS_UTIMENSAT = 315 - SYS_SIGNALFD = 316 - SYS_TIMERFD = 317 - SYS_EVENTFD = 318 - SYS_TIMERFD_CREATE = 319 - SYS_TIMERFD_SETTIME = 320 - SYS_TIMERFD_GETTIME = 321 - SYS_SIGNALFD4 = 322 - SYS_EVENTFD2 = 323 - SYS_INOTIFY_INIT1 = 324 - SYS_PIPE2 = 325 - SYS_DUP3 = 326 - SYS_EPOLL_CREATE1 = 327 - SYS_PREADV = 328 - SYS_PWRITEV = 329 - SYS_RT_TGSIGQUEUEINFO = 330 - SYS_PERF_EVENT_OPEN = 331 - SYS_FANOTIFY_INIT = 332 - SYS_FANOTIFY_MARK = 333 - SYS_PRLIMIT64 = 334 - SYS_NAME_TO_HANDLE_AT = 335 - SYS_OPEN_BY_HANDLE_AT = 336 - SYS_CLOCK_ADJTIME = 337 - SYS_SYNCFS = 338 - SYS_SETNS = 339 - SYS_PROCESS_VM_READV = 340 - SYS_PROCESS_VM_WRITEV = 341 - SYS_S390_RUNTIME_INSTR = 342 - SYS_KCMP = 343 - SYS_FINIT_MODULE = 344 - SYS_SCHED_SETATTR = 345 - SYS_SCHED_GETATTR = 346 - SYS_RENAMEAT2 = 347 - SYS_SECCOMP = 348 - SYS_GETRANDOM = 349 - SYS_MEMFD_CREATE = 350 - SYS_BPF = 351 - SYS_S390_PCI_MMIO_WRITE = 352 - SYS_S390_PCI_MMIO_READ = 353 - SYS_EXECVEAT = 354 - SYS_USERFAULTFD = 355 - SYS_MEMBARRIER = 356 - SYS_RECVMMSG = 357 - SYS_SENDMMSG = 358 - SYS_SOCKET = 359 - SYS_SOCKETPAIR = 360 - SYS_BIND = 361 - SYS_CONNECT = 362 - SYS_LISTEN = 363 - SYS_ACCEPT4 = 364 - SYS_GETSOCKOPT = 365 - SYS_SETSOCKOPT = 366 - SYS_GETSOCKNAME = 367 - SYS_GETPEERNAME = 368 - SYS_SENDTO = 369 - SYS_SENDMSG = 370 - SYS_RECVFROM = 371 - SYS_RECVMSG = 372 - SYS_SHUTDOWN = 373 - SYS_MLOCK2 = 374 - SYS_COPY_FILE_RANGE = 375 - SYS_PREADV2 = 376 - SYS_PWRITEV2 = 377 - SYS_S390_GUARDED_STORAGE = 378 - SYS_STATX = 379 - SYS_S390_STHYI = 380 - SYS_KEXEC_FILE_LOAD = 381 - SYS_IO_PGETEVENTS = 382 - SYS_RSEQ = 383 - SYS_PKEY_MPROTECT = 384 - SYS_PKEY_ALLOC = 385 - SYS_PKEY_FREE = 386 - SYS_SEMTIMEDOP = 392 - SYS_SEMGET = 393 - SYS_SEMCTL = 394 - SYS_SHMGET = 395 - SYS_SHMCTL = 396 - SYS_SHMAT = 397 - SYS_SHMDT = 398 - SYS_MSGGET = 399 - SYS_MSGSND = 400 - SYS_MSGRCV = 401 - SYS_MSGCTL = 402 - SYS_PIDFD_SEND_SIGNAL = 424 - SYS_IO_URING_SETUP = 425 - SYS_IO_URING_ENTER = 426 - SYS_IO_URING_REGISTER = 427 - SYS_OPEN_TREE = 428 - SYS_MOVE_MOUNT = 429 - SYS_FSOPEN = 430 - SYS_FSCONFIG = 431 - SYS_FSMOUNT = 432 - SYS_FSPICK = 433 - SYS_PIDFD_OPEN = 434 - SYS_CLONE3 = 435 - SYS_CLOSE_RANGE = 436 - SYS_OPENAT2 = 437 - SYS_PIDFD_GETFD = 438 - SYS_FACCESSAT2 = 439 - SYS_PROCESS_MADVISE = 440 - SYS_EPOLL_PWAIT2 = 441 - SYS_MOUNT_SETATTR = 442 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_RESTART_SYSCALL = 7 + SYS_CREAT = 8 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_EXECVE = 11 + SYS_CHDIR = 12 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_LSEEK = 19 + SYS_GETPID = 20 + SYS_MOUNT = 21 + SYS_UMOUNT = 22 + SYS_PTRACE = 26 + SYS_ALARM = 27 + SYS_PAUSE = 29 + SYS_UTIME = 30 + SYS_ACCESS = 33 + SYS_NICE = 34 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_RENAME = 38 + SYS_MKDIR = 39 + SYS_RMDIR = 40 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_TIMES = 43 + SYS_BRK = 45 + SYS_SIGNAL = 48 + SYS_ACCT = 51 + SYS_UMOUNT2 = 52 + SYS_IOCTL = 54 + SYS_FCNTL = 55 + SYS_SETPGID = 57 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_USTAT = 62 + SYS_DUP2 = 63 + SYS_GETPPID = 64 + SYS_GETPGRP = 65 + SYS_SETSID = 66 + SYS_SIGACTION = 67 + SYS_SIGSUSPEND = 72 + SYS_SIGPENDING = 73 + SYS_SETHOSTNAME = 74 + SYS_SETRLIMIT = 75 + SYS_GETRUSAGE = 77 + SYS_GETTIMEOFDAY = 78 + SYS_SETTIMEOFDAY = 79 + SYS_SYMLINK = 83 + SYS_READLINK = 85 + SYS_USELIB = 86 + SYS_SWAPON = 87 + SYS_REBOOT = 88 + SYS_READDIR = 89 + SYS_MMAP = 90 + SYS_MUNMAP = 91 + SYS_TRUNCATE = 92 + SYS_FTRUNCATE = 93 + SYS_FCHMOD = 94 + SYS_GETPRIORITY = 96 + SYS_SETPRIORITY = 97 + SYS_STATFS = 99 + SYS_FSTATFS = 100 + SYS_SOCKETCALL = 102 + SYS_SYSLOG = 103 + SYS_SETITIMER = 104 + SYS_GETITIMER = 105 + SYS_STAT = 106 + SYS_LSTAT = 107 + SYS_FSTAT = 108 + SYS_LOOKUP_DCOOKIE = 110 + SYS_VHANGUP = 111 + SYS_IDLE = 112 + SYS_WAIT4 = 114 + SYS_SWAPOFF = 115 + SYS_SYSINFO = 116 + SYS_IPC = 117 + SYS_FSYNC = 118 + SYS_SIGRETURN = 119 + SYS_CLONE = 120 + SYS_SETDOMAINNAME = 121 + SYS_UNAME = 122 + SYS_ADJTIMEX = 124 + SYS_MPROTECT = 125 + SYS_SIGPROCMASK = 126 + SYS_CREATE_MODULE = 127 + SYS_INIT_MODULE = 128 + SYS_DELETE_MODULE = 129 + SYS_GET_KERNEL_SYMS = 130 + SYS_QUOTACTL = 131 + SYS_GETPGID = 132 + SYS_FCHDIR = 133 + SYS_BDFLUSH = 134 + SYS_SYSFS = 135 + SYS_PERSONALITY = 136 + SYS_AFS_SYSCALL = 137 + SYS_GETDENTS = 141 + SYS_SELECT = 142 + SYS_FLOCK = 143 + SYS_MSYNC = 144 + SYS_READV = 145 + SYS_WRITEV = 146 + SYS_GETSID = 147 + SYS_FDATASYNC = 148 + SYS__SYSCTL = 149 + SYS_MLOCK = 150 + SYS_MUNLOCK = 151 + SYS_MLOCKALL = 152 + SYS_MUNLOCKALL = 153 + SYS_SCHED_SETPARAM = 154 + SYS_SCHED_GETPARAM = 155 + SYS_SCHED_SETSCHEDULER = 156 + SYS_SCHED_GETSCHEDULER = 157 + SYS_SCHED_YIELD = 158 + SYS_SCHED_GET_PRIORITY_MAX = 159 + SYS_SCHED_GET_PRIORITY_MIN = 160 + SYS_SCHED_RR_GET_INTERVAL = 161 + SYS_NANOSLEEP = 162 + SYS_MREMAP = 163 + SYS_QUERY_MODULE = 167 + SYS_POLL = 168 + SYS_NFSSERVCTL = 169 + SYS_PRCTL = 172 + SYS_RT_SIGRETURN = 173 + SYS_RT_SIGACTION = 174 + SYS_RT_SIGPROCMASK = 175 + SYS_RT_SIGPENDING = 176 + SYS_RT_SIGTIMEDWAIT = 177 + SYS_RT_SIGQUEUEINFO = 178 + SYS_RT_SIGSUSPEND = 179 + SYS_PREAD64 = 180 + SYS_PWRITE64 = 181 + SYS_GETCWD = 183 + SYS_CAPGET = 184 + SYS_CAPSET = 185 + SYS_SIGALTSTACK = 186 + SYS_SENDFILE = 187 + SYS_GETPMSG = 188 + SYS_PUTPMSG = 189 + SYS_VFORK = 190 + SYS_GETRLIMIT = 191 + SYS_LCHOWN = 198 + SYS_GETUID = 199 + SYS_GETGID = 200 + SYS_GETEUID = 201 + SYS_GETEGID = 202 + SYS_SETREUID = 203 + SYS_SETREGID = 204 + SYS_GETGROUPS = 205 + SYS_SETGROUPS = 206 + SYS_FCHOWN = 207 + SYS_SETRESUID = 208 + SYS_GETRESUID = 209 + SYS_SETRESGID = 210 + SYS_GETRESGID = 211 + SYS_CHOWN = 212 + SYS_SETUID = 213 + SYS_SETGID = 214 + SYS_SETFSUID = 215 + SYS_SETFSGID = 216 + SYS_PIVOT_ROOT = 217 + SYS_MINCORE = 218 + SYS_MADVISE = 219 + SYS_GETDENTS64 = 220 + SYS_READAHEAD = 222 + SYS_SETXATTR = 224 + SYS_LSETXATTR = 225 + SYS_FSETXATTR = 226 + SYS_GETXATTR = 227 + SYS_LGETXATTR = 228 + SYS_FGETXATTR = 229 + SYS_LISTXATTR = 230 + SYS_LLISTXATTR = 231 + SYS_FLISTXATTR = 232 + SYS_REMOVEXATTR = 233 + SYS_LREMOVEXATTR = 234 + SYS_FREMOVEXATTR = 235 + SYS_GETTID = 236 + SYS_TKILL = 237 + SYS_FUTEX = 238 + SYS_SCHED_SETAFFINITY = 239 + SYS_SCHED_GETAFFINITY = 240 + SYS_TGKILL = 241 + SYS_IO_SETUP = 243 + SYS_IO_DESTROY = 244 + SYS_IO_GETEVENTS = 245 + SYS_IO_SUBMIT = 246 + SYS_IO_CANCEL = 247 + SYS_EXIT_GROUP = 248 + SYS_EPOLL_CREATE = 249 + SYS_EPOLL_CTL = 250 + SYS_EPOLL_WAIT = 251 + SYS_SET_TID_ADDRESS = 252 + SYS_FADVISE64 = 253 + SYS_TIMER_CREATE = 254 + SYS_TIMER_SETTIME = 255 + SYS_TIMER_GETTIME = 256 + SYS_TIMER_GETOVERRUN = 257 + SYS_TIMER_DELETE = 258 + SYS_CLOCK_SETTIME = 259 + SYS_CLOCK_GETTIME = 260 + SYS_CLOCK_GETRES = 261 + SYS_CLOCK_NANOSLEEP = 262 + SYS_STATFS64 = 265 + SYS_FSTATFS64 = 266 + SYS_REMAP_FILE_PAGES = 267 + SYS_MBIND = 268 + SYS_GET_MEMPOLICY = 269 + SYS_SET_MEMPOLICY = 270 + SYS_MQ_OPEN = 271 + SYS_MQ_UNLINK = 272 + SYS_MQ_TIMEDSEND = 273 + SYS_MQ_TIMEDRECEIVE = 274 + SYS_MQ_NOTIFY = 275 + SYS_MQ_GETSETATTR = 276 + SYS_KEXEC_LOAD = 277 + SYS_ADD_KEY = 278 + SYS_REQUEST_KEY = 279 + SYS_KEYCTL = 280 + SYS_WAITID = 281 + SYS_IOPRIO_SET = 282 + SYS_IOPRIO_GET = 283 + SYS_INOTIFY_INIT = 284 + SYS_INOTIFY_ADD_WATCH = 285 + SYS_INOTIFY_RM_WATCH = 286 + SYS_MIGRATE_PAGES = 287 + SYS_OPENAT = 288 + SYS_MKDIRAT = 289 + SYS_MKNODAT = 290 + SYS_FCHOWNAT = 291 + SYS_FUTIMESAT = 292 + SYS_NEWFSTATAT = 293 + SYS_UNLINKAT = 294 + SYS_RENAMEAT = 295 + SYS_LINKAT = 296 + SYS_SYMLINKAT = 297 + SYS_READLINKAT = 298 + SYS_FCHMODAT = 299 + SYS_FACCESSAT = 300 + SYS_PSELECT6 = 301 + SYS_PPOLL = 302 + SYS_UNSHARE = 303 + SYS_SET_ROBUST_LIST = 304 + SYS_GET_ROBUST_LIST = 305 + SYS_SPLICE = 306 + SYS_SYNC_FILE_RANGE = 307 + SYS_TEE = 308 + SYS_VMSPLICE = 309 + SYS_MOVE_PAGES = 310 + SYS_GETCPU = 311 + SYS_EPOLL_PWAIT = 312 + SYS_UTIMES = 313 + SYS_FALLOCATE = 314 + SYS_UTIMENSAT = 315 + SYS_SIGNALFD = 316 + SYS_TIMERFD = 317 + SYS_EVENTFD = 318 + SYS_TIMERFD_CREATE = 319 + SYS_TIMERFD_SETTIME = 320 + SYS_TIMERFD_GETTIME = 321 + SYS_SIGNALFD4 = 322 + SYS_EVENTFD2 = 323 + SYS_INOTIFY_INIT1 = 324 + SYS_PIPE2 = 325 + SYS_DUP3 = 326 + SYS_EPOLL_CREATE1 = 327 + SYS_PREADV = 328 + SYS_PWRITEV = 329 + SYS_RT_TGSIGQUEUEINFO = 330 + SYS_PERF_EVENT_OPEN = 331 + SYS_FANOTIFY_INIT = 332 + SYS_FANOTIFY_MARK = 333 + SYS_PRLIMIT64 = 334 + SYS_NAME_TO_HANDLE_AT = 335 + SYS_OPEN_BY_HANDLE_AT = 336 + SYS_CLOCK_ADJTIME = 337 + SYS_SYNCFS = 338 + SYS_SETNS = 339 + SYS_PROCESS_VM_READV = 340 + SYS_PROCESS_VM_WRITEV = 341 + SYS_S390_RUNTIME_INSTR = 342 + SYS_KCMP = 343 + SYS_FINIT_MODULE = 344 + SYS_SCHED_SETATTR = 345 + SYS_SCHED_GETATTR = 346 + SYS_RENAMEAT2 = 347 + SYS_SECCOMP = 348 + SYS_GETRANDOM = 349 + SYS_MEMFD_CREATE = 350 + SYS_BPF = 351 + SYS_S390_PCI_MMIO_WRITE = 352 + SYS_S390_PCI_MMIO_READ = 353 + SYS_EXECVEAT = 354 + SYS_USERFAULTFD = 355 + SYS_MEMBARRIER = 356 + SYS_RECVMMSG = 357 + SYS_SENDMMSG = 358 + SYS_SOCKET = 359 + SYS_SOCKETPAIR = 360 + SYS_BIND = 361 + SYS_CONNECT = 362 + SYS_LISTEN = 363 + SYS_ACCEPT4 = 364 + SYS_GETSOCKOPT = 365 + SYS_SETSOCKOPT = 366 + SYS_GETSOCKNAME = 367 + SYS_GETPEERNAME = 368 + SYS_SENDTO = 369 + SYS_SENDMSG = 370 + SYS_RECVFROM = 371 + SYS_RECVMSG = 372 + SYS_SHUTDOWN = 373 + SYS_MLOCK2 = 374 + SYS_COPY_FILE_RANGE = 375 + SYS_PREADV2 = 376 + SYS_PWRITEV2 = 377 + SYS_S390_GUARDED_STORAGE = 378 + SYS_STATX = 379 + SYS_S390_STHYI = 380 + SYS_KEXEC_FILE_LOAD = 381 + SYS_IO_PGETEVENTS = 382 + SYS_RSEQ = 383 + SYS_PKEY_MPROTECT = 384 + SYS_PKEY_ALLOC = 385 + SYS_PKEY_FREE = 386 + SYS_SEMTIMEDOP = 392 + SYS_SEMGET = 393 + SYS_SEMCTL = 394 + SYS_SHMGET = 395 + SYS_SHMCTL = 396 + SYS_SHMAT = 397 + SYS_SHMDT = 398 + SYS_MSGGET = 399 + SYS_MSGSND = 400 + SYS_MSGRCV = 401 + SYS_MSGCTL = 402 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLONE3 = 435 + SYS_CLOSE_RANGE = 436 + SYS_OPENAT2 = 437 + SYS_PIDFD_GETFD = 438 + SYS_FACCESSAT2 = 439 + SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 + SYS_MOUNT_SETATTR = 442 + SYS_LANDLOCK_CREATE_RULESET = 444 + SYS_LANDLOCK_ADD_RULE = 445 + SYS_LANDLOCK_RESTRICT_SELF = 446 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go index 488ca848d1..58e72b0cb5 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go @@ -7,379 +7,382 @@ package unix const ( - SYS_RESTART_SYSCALL = 0 - SYS_EXIT = 1 - SYS_FORK = 2 - SYS_READ = 3 - SYS_WRITE = 4 - SYS_OPEN = 5 - SYS_CLOSE = 6 - SYS_WAIT4 = 7 - SYS_CREAT = 8 - SYS_LINK = 9 - SYS_UNLINK = 10 - SYS_EXECV = 11 - SYS_CHDIR = 12 - SYS_CHOWN = 13 - SYS_MKNOD = 14 - SYS_CHMOD = 15 - SYS_LCHOWN = 16 - SYS_BRK = 17 - SYS_PERFCTR = 18 - SYS_LSEEK = 19 - SYS_GETPID = 20 - SYS_CAPGET = 21 - SYS_CAPSET = 22 - SYS_SETUID = 23 - SYS_GETUID = 24 - SYS_VMSPLICE = 25 - SYS_PTRACE = 26 - SYS_ALARM = 27 - SYS_SIGALTSTACK = 28 - SYS_PAUSE = 29 - SYS_UTIME = 30 - SYS_ACCESS = 33 - SYS_NICE = 34 - SYS_SYNC = 36 - SYS_KILL = 37 - SYS_STAT = 38 - SYS_SENDFILE = 39 - SYS_LSTAT = 40 - SYS_DUP = 41 - SYS_PIPE = 42 - SYS_TIMES = 43 - SYS_UMOUNT2 = 45 - SYS_SETGID = 46 - SYS_GETGID = 47 - SYS_SIGNAL = 48 - SYS_GETEUID = 49 - SYS_GETEGID = 50 - SYS_ACCT = 51 - SYS_MEMORY_ORDERING = 52 - SYS_IOCTL = 54 - SYS_REBOOT = 55 - SYS_SYMLINK = 57 - SYS_READLINK = 58 - SYS_EXECVE = 59 - SYS_UMASK = 60 - SYS_CHROOT = 61 - SYS_FSTAT = 62 - SYS_FSTAT64 = 63 - SYS_GETPAGESIZE = 64 - SYS_MSYNC = 65 - SYS_VFORK = 66 - SYS_PREAD64 = 67 - SYS_PWRITE64 = 68 - SYS_MMAP = 71 - SYS_MUNMAP = 73 - SYS_MPROTECT = 74 - SYS_MADVISE = 75 - SYS_VHANGUP = 76 - SYS_MINCORE = 78 - SYS_GETGROUPS = 79 - SYS_SETGROUPS = 80 - SYS_GETPGRP = 81 - SYS_SETITIMER = 83 - SYS_SWAPON = 85 - SYS_GETITIMER = 86 - SYS_SETHOSTNAME = 88 - SYS_DUP2 = 90 - SYS_FCNTL = 92 - SYS_SELECT = 93 - SYS_FSYNC = 95 - SYS_SETPRIORITY = 96 - SYS_SOCKET = 97 - SYS_CONNECT = 98 - SYS_ACCEPT = 99 - SYS_GETPRIORITY = 100 - SYS_RT_SIGRETURN = 101 - SYS_RT_SIGACTION = 102 - SYS_RT_SIGPROCMASK = 103 - SYS_RT_SIGPENDING = 104 - SYS_RT_SIGTIMEDWAIT = 105 - SYS_RT_SIGQUEUEINFO = 106 - SYS_RT_SIGSUSPEND = 107 - SYS_SETRESUID = 108 - SYS_GETRESUID = 109 - SYS_SETRESGID = 110 - SYS_GETRESGID = 111 - SYS_RECVMSG = 113 - SYS_SENDMSG = 114 - SYS_GETTIMEOFDAY = 116 - SYS_GETRUSAGE = 117 - SYS_GETSOCKOPT = 118 - SYS_GETCWD = 119 - SYS_READV = 120 - SYS_WRITEV = 121 - SYS_SETTIMEOFDAY = 122 - SYS_FCHOWN = 123 - SYS_FCHMOD = 124 - SYS_RECVFROM = 125 - SYS_SETREUID = 126 - SYS_SETREGID = 127 - SYS_RENAME = 128 - SYS_TRUNCATE = 129 - SYS_FTRUNCATE = 130 - SYS_FLOCK = 131 - SYS_LSTAT64 = 132 - SYS_SENDTO = 133 - SYS_SHUTDOWN = 134 - SYS_SOCKETPAIR = 135 - SYS_MKDIR = 136 - SYS_RMDIR = 137 - SYS_UTIMES = 138 - SYS_STAT64 = 139 - SYS_SENDFILE64 = 140 - SYS_GETPEERNAME = 141 - SYS_FUTEX = 142 - SYS_GETTID = 143 - SYS_GETRLIMIT = 144 - SYS_SETRLIMIT = 145 - SYS_PIVOT_ROOT = 146 - SYS_PRCTL = 147 - SYS_PCICONFIG_READ = 148 - SYS_PCICONFIG_WRITE = 149 - SYS_GETSOCKNAME = 150 - SYS_INOTIFY_INIT = 151 - SYS_INOTIFY_ADD_WATCH = 152 - SYS_POLL = 153 - SYS_GETDENTS64 = 154 - SYS_INOTIFY_RM_WATCH = 156 - SYS_STATFS = 157 - SYS_FSTATFS = 158 - SYS_UMOUNT = 159 - SYS_SCHED_SET_AFFINITY = 160 - SYS_SCHED_GET_AFFINITY = 161 - SYS_GETDOMAINNAME = 162 - SYS_SETDOMAINNAME = 163 - SYS_UTRAP_INSTALL = 164 - SYS_QUOTACTL = 165 - SYS_SET_TID_ADDRESS = 166 - SYS_MOUNT = 167 - SYS_USTAT = 168 - SYS_SETXATTR = 169 - SYS_LSETXATTR = 170 - SYS_FSETXATTR = 171 - SYS_GETXATTR = 172 - SYS_LGETXATTR = 173 - SYS_GETDENTS = 174 - SYS_SETSID = 175 - SYS_FCHDIR = 176 - SYS_FGETXATTR = 177 - SYS_LISTXATTR = 178 - SYS_LLISTXATTR = 179 - SYS_FLISTXATTR = 180 - SYS_REMOVEXATTR = 181 - SYS_LREMOVEXATTR = 182 - SYS_SIGPENDING = 183 - SYS_QUERY_MODULE = 184 - SYS_SETPGID = 185 - SYS_FREMOVEXATTR = 186 - SYS_TKILL = 187 - SYS_EXIT_GROUP = 188 - SYS_UNAME = 189 - SYS_INIT_MODULE = 190 - SYS_PERSONALITY = 191 - SYS_REMAP_FILE_PAGES = 192 - SYS_EPOLL_CREATE = 193 - SYS_EPOLL_CTL = 194 - SYS_EPOLL_WAIT = 195 - SYS_IOPRIO_SET = 196 - SYS_GETPPID = 197 - SYS_SIGACTION = 198 - SYS_SGETMASK = 199 - SYS_SSETMASK = 200 - SYS_SIGSUSPEND = 201 - SYS_OLDLSTAT = 202 - SYS_USELIB = 203 - SYS_READDIR = 204 - SYS_READAHEAD = 205 - SYS_SOCKETCALL = 206 - SYS_SYSLOG = 207 - SYS_LOOKUP_DCOOKIE = 208 - SYS_FADVISE64 = 209 - SYS_FADVISE64_64 = 210 - SYS_TGKILL = 211 - SYS_WAITPID = 212 - SYS_SWAPOFF = 213 - SYS_SYSINFO = 214 - SYS_IPC = 215 - SYS_SIGRETURN = 216 - SYS_CLONE = 217 - SYS_IOPRIO_GET = 218 - SYS_ADJTIMEX = 219 - SYS_SIGPROCMASK = 220 - SYS_CREATE_MODULE = 221 - SYS_DELETE_MODULE = 222 - SYS_GET_KERNEL_SYMS = 223 - SYS_GETPGID = 224 - SYS_BDFLUSH = 225 - SYS_SYSFS = 226 - SYS_AFS_SYSCALL = 227 - SYS_SETFSUID = 228 - SYS_SETFSGID = 229 - SYS__NEWSELECT = 230 - SYS_SPLICE = 232 - SYS_STIME = 233 - SYS_STATFS64 = 234 - SYS_FSTATFS64 = 235 - SYS__LLSEEK = 236 - SYS_MLOCK = 237 - SYS_MUNLOCK = 238 - SYS_MLOCKALL = 239 - SYS_MUNLOCKALL = 240 - SYS_SCHED_SETPARAM = 241 - SYS_SCHED_GETPARAM = 242 - SYS_SCHED_SETSCHEDULER = 243 - SYS_SCHED_GETSCHEDULER = 244 - SYS_SCHED_YIELD = 245 - SYS_SCHED_GET_PRIORITY_MAX = 246 - SYS_SCHED_GET_PRIORITY_MIN = 247 - SYS_SCHED_RR_GET_INTERVAL = 248 - SYS_NANOSLEEP = 249 - SYS_MREMAP = 250 - SYS__SYSCTL = 251 - SYS_GETSID = 252 - SYS_FDATASYNC = 253 - SYS_NFSSERVCTL = 254 - SYS_SYNC_FILE_RANGE = 255 - SYS_CLOCK_SETTIME = 256 - SYS_CLOCK_GETTIME = 257 - SYS_CLOCK_GETRES = 258 - SYS_CLOCK_NANOSLEEP = 259 - SYS_SCHED_GETAFFINITY = 260 - SYS_SCHED_SETAFFINITY = 261 - SYS_TIMER_SETTIME = 262 - SYS_TIMER_GETTIME = 263 - SYS_TIMER_GETOVERRUN = 264 - SYS_TIMER_DELETE = 265 - SYS_TIMER_CREATE = 266 - SYS_VSERVER = 267 - SYS_IO_SETUP = 268 - SYS_IO_DESTROY = 269 - SYS_IO_SUBMIT = 270 - SYS_IO_CANCEL = 271 - SYS_IO_GETEVENTS = 272 - SYS_MQ_OPEN = 273 - SYS_MQ_UNLINK = 274 - SYS_MQ_TIMEDSEND = 275 - SYS_MQ_TIMEDRECEIVE = 276 - SYS_MQ_NOTIFY = 277 - SYS_MQ_GETSETATTR = 278 - SYS_WAITID = 279 - SYS_TEE = 280 - SYS_ADD_KEY = 281 - SYS_REQUEST_KEY = 282 - SYS_KEYCTL = 283 - SYS_OPENAT = 284 - SYS_MKDIRAT = 285 - SYS_MKNODAT = 286 - SYS_FCHOWNAT = 287 - SYS_FUTIMESAT = 288 - SYS_FSTATAT64 = 289 - SYS_UNLINKAT = 290 - SYS_RENAMEAT = 291 - SYS_LINKAT = 292 - SYS_SYMLINKAT = 293 - SYS_READLINKAT = 294 - SYS_FCHMODAT = 295 - SYS_FACCESSAT = 296 - SYS_PSELECT6 = 297 - SYS_PPOLL = 298 - SYS_UNSHARE = 299 - SYS_SET_ROBUST_LIST = 300 - SYS_GET_ROBUST_LIST = 301 - SYS_MIGRATE_PAGES = 302 - SYS_MBIND = 303 - SYS_GET_MEMPOLICY = 304 - SYS_SET_MEMPOLICY = 305 - SYS_KEXEC_LOAD = 306 - SYS_MOVE_PAGES = 307 - SYS_GETCPU = 308 - SYS_EPOLL_PWAIT = 309 - SYS_UTIMENSAT = 310 - SYS_SIGNALFD = 311 - SYS_TIMERFD_CREATE = 312 - SYS_EVENTFD = 313 - SYS_FALLOCATE = 314 - SYS_TIMERFD_SETTIME = 315 - SYS_TIMERFD_GETTIME = 316 - SYS_SIGNALFD4 = 317 - SYS_EVENTFD2 = 318 - SYS_EPOLL_CREATE1 = 319 - SYS_DUP3 = 320 - SYS_PIPE2 = 321 - SYS_INOTIFY_INIT1 = 322 - SYS_ACCEPT4 = 323 - SYS_PREADV = 324 - SYS_PWRITEV = 325 - SYS_RT_TGSIGQUEUEINFO = 326 - SYS_PERF_EVENT_OPEN = 327 - SYS_RECVMMSG = 328 - SYS_FANOTIFY_INIT = 329 - SYS_FANOTIFY_MARK = 330 - SYS_PRLIMIT64 = 331 - SYS_NAME_TO_HANDLE_AT = 332 - SYS_OPEN_BY_HANDLE_AT = 333 - SYS_CLOCK_ADJTIME = 334 - SYS_SYNCFS = 335 - SYS_SENDMMSG = 336 - SYS_SETNS = 337 - SYS_PROCESS_VM_READV = 338 - SYS_PROCESS_VM_WRITEV = 339 - SYS_KERN_FEATURES = 340 - SYS_KCMP = 341 - SYS_FINIT_MODULE = 342 - SYS_SCHED_SETATTR = 343 - SYS_SCHED_GETATTR = 344 - SYS_RENAMEAT2 = 345 - SYS_SECCOMP = 346 - SYS_GETRANDOM = 347 - SYS_MEMFD_CREATE = 348 - SYS_BPF = 349 - SYS_EXECVEAT = 350 - SYS_MEMBARRIER = 351 - SYS_USERFAULTFD = 352 - SYS_BIND = 353 - SYS_LISTEN = 354 - SYS_SETSOCKOPT = 355 - SYS_MLOCK2 = 356 - SYS_COPY_FILE_RANGE = 357 - SYS_PREADV2 = 358 - SYS_PWRITEV2 = 359 - SYS_STATX = 360 - SYS_IO_PGETEVENTS = 361 - SYS_PKEY_MPROTECT = 362 - SYS_PKEY_ALLOC = 363 - SYS_PKEY_FREE = 364 - SYS_RSEQ = 365 - SYS_SEMTIMEDOP = 392 - SYS_SEMGET = 393 - SYS_SEMCTL = 394 - SYS_SHMGET = 395 - SYS_SHMCTL = 396 - SYS_SHMAT = 397 - SYS_SHMDT = 398 - SYS_MSGGET = 399 - SYS_MSGSND = 400 - SYS_MSGRCV = 401 - SYS_MSGCTL = 402 - SYS_PIDFD_SEND_SIGNAL = 424 - SYS_IO_URING_SETUP = 425 - SYS_IO_URING_ENTER = 426 - SYS_IO_URING_REGISTER = 427 - SYS_OPEN_TREE = 428 - SYS_MOVE_MOUNT = 429 - SYS_FSOPEN = 430 - SYS_FSCONFIG = 431 - SYS_FSMOUNT = 432 - SYS_FSPICK = 433 - SYS_PIDFD_OPEN = 434 - SYS_CLOSE_RANGE = 436 - SYS_OPENAT2 = 437 - SYS_PIDFD_GETFD = 438 - SYS_FACCESSAT2 = 439 - SYS_PROCESS_MADVISE = 440 - SYS_EPOLL_PWAIT2 = 441 - SYS_MOUNT_SETATTR = 442 + SYS_RESTART_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_WAIT4 = 7 + SYS_CREAT = 8 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_EXECV = 11 + SYS_CHDIR = 12 + SYS_CHOWN = 13 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_LCHOWN = 16 + SYS_BRK = 17 + SYS_PERFCTR = 18 + SYS_LSEEK = 19 + SYS_GETPID = 20 + SYS_CAPGET = 21 + SYS_CAPSET = 22 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_VMSPLICE = 25 + SYS_PTRACE = 26 + SYS_ALARM = 27 + SYS_SIGALTSTACK = 28 + SYS_PAUSE = 29 + SYS_UTIME = 30 + SYS_ACCESS = 33 + SYS_NICE = 34 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_STAT = 38 + SYS_SENDFILE = 39 + SYS_LSTAT = 40 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_TIMES = 43 + SYS_UMOUNT2 = 45 + SYS_SETGID = 46 + SYS_GETGID = 47 + SYS_SIGNAL = 48 + SYS_GETEUID = 49 + SYS_GETEGID = 50 + SYS_ACCT = 51 + SYS_MEMORY_ORDERING = 52 + SYS_IOCTL = 54 + SYS_REBOOT = 55 + SYS_SYMLINK = 57 + SYS_READLINK = 58 + SYS_EXECVE = 59 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_FSTAT = 62 + SYS_FSTAT64 = 63 + SYS_GETPAGESIZE = 64 + SYS_MSYNC = 65 + SYS_VFORK = 66 + SYS_PREAD64 = 67 + SYS_PWRITE64 = 68 + SYS_MMAP = 71 + SYS_MUNMAP = 73 + SYS_MPROTECT = 74 + SYS_MADVISE = 75 + SYS_VHANGUP = 76 + SYS_MINCORE = 78 + SYS_GETGROUPS = 79 + SYS_SETGROUPS = 80 + SYS_GETPGRP = 81 + SYS_SETITIMER = 83 + SYS_SWAPON = 85 + SYS_GETITIMER = 86 + SYS_SETHOSTNAME = 88 + SYS_DUP2 = 90 + SYS_FCNTL = 92 + SYS_SELECT = 93 + SYS_FSYNC = 95 + SYS_SETPRIORITY = 96 + SYS_SOCKET = 97 + SYS_CONNECT = 98 + SYS_ACCEPT = 99 + SYS_GETPRIORITY = 100 + SYS_RT_SIGRETURN = 101 + SYS_RT_SIGACTION = 102 + SYS_RT_SIGPROCMASK = 103 + SYS_RT_SIGPENDING = 104 + SYS_RT_SIGTIMEDWAIT = 105 + SYS_RT_SIGQUEUEINFO = 106 + SYS_RT_SIGSUSPEND = 107 + SYS_SETRESUID = 108 + SYS_GETRESUID = 109 + SYS_SETRESGID = 110 + SYS_GETRESGID = 111 + SYS_RECVMSG = 113 + SYS_SENDMSG = 114 + SYS_GETTIMEOFDAY = 116 + SYS_GETRUSAGE = 117 + SYS_GETSOCKOPT = 118 + SYS_GETCWD = 119 + SYS_READV = 120 + SYS_WRITEV = 121 + SYS_SETTIMEOFDAY = 122 + SYS_FCHOWN = 123 + SYS_FCHMOD = 124 + SYS_RECVFROM = 125 + SYS_SETREUID = 126 + SYS_SETREGID = 127 + SYS_RENAME = 128 + SYS_TRUNCATE = 129 + SYS_FTRUNCATE = 130 + SYS_FLOCK = 131 + SYS_LSTAT64 = 132 + SYS_SENDTO = 133 + SYS_SHUTDOWN = 134 + SYS_SOCKETPAIR = 135 + SYS_MKDIR = 136 + SYS_RMDIR = 137 + SYS_UTIMES = 138 + SYS_STAT64 = 139 + SYS_SENDFILE64 = 140 + SYS_GETPEERNAME = 141 + SYS_FUTEX = 142 + SYS_GETTID = 143 + SYS_GETRLIMIT = 144 + SYS_SETRLIMIT = 145 + SYS_PIVOT_ROOT = 146 + SYS_PRCTL = 147 + SYS_PCICONFIG_READ = 148 + SYS_PCICONFIG_WRITE = 149 + SYS_GETSOCKNAME = 150 + SYS_INOTIFY_INIT = 151 + SYS_INOTIFY_ADD_WATCH = 152 + SYS_POLL = 153 + SYS_GETDENTS64 = 154 + SYS_INOTIFY_RM_WATCH = 156 + SYS_STATFS = 157 + SYS_FSTATFS = 158 + SYS_UMOUNT = 159 + SYS_SCHED_SET_AFFINITY = 160 + SYS_SCHED_GET_AFFINITY = 161 + SYS_GETDOMAINNAME = 162 + SYS_SETDOMAINNAME = 163 + SYS_UTRAP_INSTALL = 164 + SYS_QUOTACTL = 165 + SYS_SET_TID_ADDRESS = 166 + SYS_MOUNT = 167 + SYS_USTAT = 168 + SYS_SETXATTR = 169 + SYS_LSETXATTR = 170 + SYS_FSETXATTR = 171 + SYS_GETXATTR = 172 + SYS_LGETXATTR = 173 + SYS_GETDENTS = 174 + SYS_SETSID = 175 + SYS_FCHDIR = 176 + SYS_FGETXATTR = 177 + SYS_LISTXATTR = 178 + SYS_LLISTXATTR = 179 + SYS_FLISTXATTR = 180 + SYS_REMOVEXATTR = 181 + SYS_LREMOVEXATTR = 182 + SYS_SIGPENDING = 183 + SYS_QUERY_MODULE = 184 + SYS_SETPGID = 185 + SYS_FREMOVEXATTR = 186 + SYS_TKILL = 187 + SYS_EXIT_GROUP = 188 + SYS_UNAME = 189 + SYS_INIT_MODULE = 190 + SYS_PERSONALITY = 191 + SYS_REMAP_FILE_PAGES = 192 + SYS_EPOLL_CREATE = 193 + SYS_EPOLL_CTL = 194 + SYS_EPOLL_WAIT = 195 + SYS_IOPRIO_SET = 196 + SYS_GETPPID = 197 + SYS_SIGACTION = 198 + SYS_SGETMASK = 199 + SYS_SSETMASK = 200 + SYS_SIGSUSPEND = 201 + SYS_OLDLSTAT = 202 + SYS_USELIB = 203 + SYS_READDIR = 204 + SYS_READAHEAD = 205 + SYS_SOCKETCALL = 206 + SYS_SYSLOG = 207 + SYS_LOOKUP_DCOOKIE = 208 + SYS_FADVISE64 = 209 + SYS_FADVISE64_64 = 210 + SYS_TGKILL = 211 + SYS_WAITPID = 212 + SYS_SWAPOFF = 213 + SYS_SYSINFO = 214 + SYS_IPC = 215 + SYS_SIGRETURN = 216 + SYS_CLONE = 217 + SYS_IOPRIO_GET = 218 + SYS_ADJTIMEX = 219 + SYS_SIGPROCMASK = 220 + SYS_CREATE_MODULE = 221 + SYS_DELETE_MODULE = 222 + SYS_GET_KERNEL_SYMS = 223 + SYS_GETPGID = 224 + SYS_BDFLUSH = 225 + SYS_SYSFS = 226 + SYS_AFS_SYSCALL = 227 + SYS_SETFSUID = 228 + SYS_SETFSGID = 229 + SYS__NEWSELECT = 230 + SYS_SPLICE = 232 + SYS_STIME = 233 + SYS_STATFS64 = 234 + SYS_FSTATFS64 = 235 + SYS__LLSEEK = 236 + SYS_MLOCK = 237 + SYS_MUNLOCK = 238 + SYS_MLOCKALL = 239 + SYS_MUNLOCKALL = 240 + SYS_SCHED_SETPARAM = 241 + SYS_SCHED_GETPARAM = 242 + SYS_SCHED_SETSCHEDULER = 243 + SYS_SCHED_GETSCHEDULER = 244 + SYS_SCHED_YIELD = 245 + SYS_SCHED_GET_PRIORITY_MAX = 246 + SYS_SCHED_GET_PRIORITY_MIN = 247 + SYS_SCHED_RR_GET_INTERVAL = 248 + SYS_NANOSLEEP = 249 + SYS_MREMAP = 250 + SYS__SYSCTL = 251 + SYS_GETSID = 252 + SYS_FDATASYNC = 253 + SYS_NFSSERVCTL = 254 + SYS_SYNC_FILE_RANGE = 255 + SYS_CLOCK_SETTIME = 256 + SYS_CLOCK_GETTIME = 257 + SYS_CLOCK_GETRES = 258 + SYS_CLOCK_NANOSLEEP = 259 + SYS_SCHED_GETAFFINITY = 260 + SYS_SCHED_SETAFFINITY = 261 + SYS_TIMER_SETTIME = 262 + SYS_TIMER_GETTIME = 263 + SYS_TIMER_GETOVERRUN = 264 + SYS_TIMER_DELETE = 265 + SYS_TIMER_CREATE = 266 + SYS_VSERVER = 267 + SYS_IO_SETUP = 268 + SYS_IO_DESTROY = 269 + SYS_IO_SUBMIT = 270 + SYS_IO_CANCEL = 271 + SYS_IO_GETEVENTS = 272 + SYS_MQ_OPEN = 273 + SYS_MQ_UNLINK = 274 + SYS_MQ_TIMEDSEND = 275 + SYS_MQ_TIMEDRECEIVE = 276 + SYS_MQ_NOTIFY = 277 + SYS_MQ_GETSETATTR = 278 + SYS_WAITID = 279 + SYS_TEE = 280 + SYS_ADD_KEY = 281 + SYS_REQUEST_KEY = 282 + SYS_KEYCTL = 283 + SYS_OPENAT = 284 + SYS_MKDIRAT = 285 + SYS_MKNODAT = 286 + SYS_FCHOWNAT = 287 + SYS_FUTIMESAT = 288 + SYS_FSTATAT64 = 289 + SYS_UNLINKAT = 290 + SYS_RENAMEAT = 291 + SYS_LINKAT = 292 + SYS_SYMLINKAT = 293 + SYS_READLINKAT = 294 + SYS_FCHMODAT = 295 + SYS_FACCESSAT = 296 + SYS_PSELECT6 = 297 + SYS_PPOLL = 298 + SYS_UNSHARE = 299 + SYS_SET_ROBUST_LIST = 300 + SYS_GET_ROBUST_LIST = 301 + SYS_MIGRATE_PAGES = 302 + SYS_MBIND = 303 + SYS_GET_MEMPOLICY = 304 + SYS_SET_MEMPOLICY = 305 + SYS_KEXEC_LOAD = 306 + SYS_MOVE_PAGES = 307 + SYS_GETCPU = 308 + SYS_EPOLL_PWAIT = 309 + SYS_UTIMENSAT = 310 + SYS_SIGNALFD = 311 + SYS_TIMERFD_CREATE = 312 + SYS_EVENTFD = 313 + SYS_FALLOCATE = 314 + SYS_TIMERFD_SETTIME = 315 + SYS_TIMERFD_GETTIME = 316 + SYS_SIGNALFD4 = 317 + SYS_EVENTFD2 = 318 + SYS_EPOLL_CREATE1 = 319 + SYS_DUP3 = 320 + SYS_PIPE2 = 321 + SYS_INOTIFY_INIT1 = 322 + SYS_ACCEPT4 = 323 + SYS_PREADV = 324 + SYS_PWRITEV = 325 + SYS_RT_TGSIGQUEUEINFO = 326 + SYS_PERF_EVENT_OPEN = 327 + SYS_RECVMMSG = 328 + SYS_FANOTIFY_INIT = 329 + SYS_FANOTIFY_MARK = 330 + SYS_PRLIMIT64 = 331 + SYS_NAME_TO_HANDLE_AT = 332 + SYS_OPEN_BY_HANDLE_AT = 333 + SYS_CLOCK_ADJTIME = 334 + SYS_SYNCFS = 335 + SYS_SENDMMSG = 336 + SYS_SETNS = 337 + SYS_PROCESS_VM_READV = 338 + SYS_PROCESS_VM_WRITEV = 339 + SYS_KERN_FEATURES = 340 + SYS_KCMP = 341 + SYS_FINIT_MODULE = 342 + SYS_SCHED_SETATTR = 343 + SYS_SCHED_GETATTR = 344 + SYS_RENAMEAT2 = 345 + SYS_SECCOMP = 346 + SYS_GETRANDOM = 347 + SYS_MEMFD_CREATE = 348 + SYS_BPF = 349 + SYS_EXECVEAT = 350 + SYS_MEMBARRIER = 351 + SYS_USERFAULTFD = 352 + SYS_BIND = 353 + SYS_LISTEN = 354 + SYS_SETSOCKOPT = 355 + SYS_MLOCK2 = 356 + SYS_COPY_FILE_RANGE = 357 + SYS_PREADV2 = 358 + SYS_PWRITEV2 = 359 + SYS_STATX = 360 + SYS_IO_PGETEVENTS = 361 + SYS_PKEY_MPROTECT = 362 + SYS_PKEY_ALLOC = 363 + SYS_PKEY_FREE = 364 + SYS_RSEQ = 365 + SYS_SEMTIMEDOP = 392 + SYS_SEMGET = 393 + SYS_SEMCTL = 394 + SYS_SHMGET = 395 + SYS_SHMCTL = 396 + SYS_SHMAT = 397 + SYS_SHMDT = 398 + SYS_MSGGET = 399 + SYS_MSGSND = 400 + SYS_MSGRCV = 401 + SYS_MSGCTL = 402 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLOSE_RANGE = 436 + SYS_OPENAT2 = 437 + SYS_PIDFD_GETFD = 438 + SYS_FACCESSAT2 = 439 + SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 + SYS_MOUNT_SETATTR = 442 + SYS_LANDLOCK_CREATE_RULESET = 444 + SYS_LANDLOCK_ADD_RULE = 445 + SYS_LANDLOCK_RESTRICT_SELF = 446 ) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux.go b/vendor/golang.org/x/sys/unix/ztypes_linux.go index 72887abe55..93a64c188a 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux.go @@ -681,6 +681,16 @@ type NdMsg struct { Type uint8 } +const ( + ICMP_FILTER = 0x1 + + ICMPV6_FILTER = 0x1 + ICMPV6_FILTER_BLOCK = 0x1 + ICMPV6_FILTER_BLOCKOTHERS = 0x3 + ICMPV6_FILTER_PASS = 0x2 + ICMPV6_FILTER_PASSONLY = 0x4 +) + const ( SizeofSockFilter = 0x8 ) @@ -1001,7 +1011,7 @@ const ( PERF_COUNT_SW_EMULATION_FAULTS = 0x8 PERF_COUNT_SW_DUMMY = 0x9 PERF_COUNT_SW_BPF_OUTPUT = 0xa - PERF_COUNT_SW_MAX = 0xb + PERF_COUNT_SW_MAX = 0xc PERF_SAMPLE_IP = 0x1 PERF_SAMPLE_TID = 0x2 PERF_SAMPLE_TIME = 0x4 @@ -1773,6 +1783,8 @@ const ( NFPROTO_NUMPROTO = 0xd ) +const SO_ORIGINAL_DST = 0x50 + type Nfgenmsg struct { Nfgen_family uint8 Version uint8 @@ -3434,7 +3446,7 @@ const ( ETHTOOL_MSG_CABLE_TEST_ACT = 0x1a ETHTOOL_MSG_CABLE_TEST_TDR_ACT = 0x1b ETHTOOL_MSG_TUNNEL_INFO_GET = 0x1c - ETHTOOL_MSG_USER_MAX = 0x1c + ETHTOOL_MSG_USER_MAX = 0x20 ETHTOOL_MSG_KERNEL_NONE = 0x0 ETHTOOL_MSG_STRSET_GET_REPLY = 0x1 ETHTOOL_MSG_LINKINFO_GET_REPLY = 0x2 @@ -3465,7 +3477,7 @@ const ( ETHTOOL_MSG_CABLE_TEST_NTF = 0x1b ETHTOOL_MSG_CABLE_TEST_TDR_NTF = 0x1c ETHTOOL_MSG_TUNNEL_INFO_GET_REPLY = 0x1d - ETHTOOL_MSG_KERNEL_MAX = 0x1d + ETHTOOL_MSG_KERNEL_MAX = 0x21 ETHTOOL_A_HEADER_UNSPEC = 0x0 ETHTOOL_A_HEADER_DEV_INDEX = 0x1 ETHTOOL_A_HEADER_DEV_NAME = 0x2 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_386.go b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go index 235c62e46f..72f2e96f32 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go @@ -170,6 +170,11 @@ type Cmsghdr struct { Type int32 } +type ifreq struct { + Ifrn [16]byte + Ifru [16]byte +} + const ( SizeofSockaddrNFCLLCP = 0x58 SizeofIovec = 0x8 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go index 99b1e5b6ad..d5f018d13d 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go @@ -173,6 +173,11 @@ type Cmsghdr struct { Type int32 } +type ifreq struct { + Ifrn [16]byte + Ifru [24]byte +} + const ( SizeofSockaddrNFCLLCP = 0x60 SizeofIovec = 0x10 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go index cc8bba7918..675446d936 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go @@ -176,6 +176,11 @@ type Cmsghdr struct { Type int32 } +type ifreq struct { + Ifrn [16]byte + Ifru [16]byte +} + const ( SizeofSockaddrNFCLLCP = 0x58 SizeofIovec = 0x8 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go index fa8fe3a75c..711d0711cd 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go @@ -174,6 +174,11 @@ type Cmsghdr struct { Type int32 } +type ifreq struct { + Ifrn [16]byte + Ifru [24]byte +} + const ( SizeofSockaddrNFCLLCP = 0x60 SizeofIovec = 0x10 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go index e7fb8d9b7a..c1131c7411 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go @@ -175,6 +175,11 @@ type Cmsghdr struct { Type int32 } +type ifreq struct { + Ifrn [16]byte + Ifru [16]byte +} + const ( SizeofSockaddrNFCLLCP = 0x58 SizeofIovec = 0x8 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go index 2fa61d593b..91d5574ff9 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go @@ -174,6 +174,11 @@ type Cmsghdr struct { Type int32 } +type ifreq struct { + Ifrn [16]byte + Ifru [24]byte +} + const ( SizeofSockaddrNFCLLCP = 0x60 SizeofIovec = 0x10 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go index 7f36399338..5d721497b7 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go @@ -174,6 +174,11 @@ type Cmsghdr struct { Type int32 } +type ifreq struct { + Ifrn [16]byte + Ifru [24]byte +} + const ( SizeofSockaddrNFCLLCP = 0x60 SizeofIovec = 0x10 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go index f3c20cb863..a5addd06aa 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go @@ -175,6 +175,11 @@ type Cmsghdr struct { Type int32 } +type ifreq struct { + Ifrn [16]byte + Ifru [16]byte +} + const ( SizeofSockaddrNFCLLCP = 0x58 SizeofIovec = 0x8 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go index 885d27950d..bb6b03dfcb 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go @@ -176,6 +176,11 @@ type Cmsghdr struct { Type int32 } +type ifreq struct { + Ifrn [16]byte + Ifru [16]byte +} + const ( SizeofSockaddrNFCLLCP = 0x58 SizeofIovec = 0x8 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go index a94eb8e180..7637243b7b 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go @@ -175,6 +175,11 @@ type Cmsghdr struct { Type int32 } +type ifreq struct { + Ifrn [16]byte + Ifru [24]byte +} + const ( SizeofSockaddrNFCLLCP = 0x60 SizeofIovec = 0x10 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go index 659e32ebd5..a1a28e525f 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go @@ -175,6 +175,11 @@ type Cmsghdr struct { Type int32 } +type ifreq struct { + Ifrn [16]byte + Ifru [24]byte +} + const ( SizeofSockaddrNFCLLCP = 0x60 SizeofIovec = 0x10 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go index ab8ec604f0..e0a8a13622 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go @@ -174,6 +174,11 @@ type Cmsghdr struct { Type int32 } +type ifreq struct { + Ifrn [16]byte + Ifru [24]byte +} + const ( SizeofSockaddrNFCLLCP = 0x60 SizeofIovec = 0x10 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go index 3ec08237fd..21d6e56c70 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go @@ -173,6 +173,11 @@ type Cmsghdr struct { Type int32 } +type ifreq struct { + Ifrn [16]byte + Ifru [24]byte +} + const ( SizeofSockaddrNFCLLCP = 0x60 SizeofIovec = 0x10 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go index 23d474470a..0531e98f64 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go @@ -177,6 +177,11 @@ type Cmsghdr struct { Type int32 } +type ifreq struct { + Ifrn [16]byte + Ifru [24]byte +} + const ( SizeofSockaddrNFCLLCP = 0x60 SizeofIovec = 0x10 diff --git a/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go index 85effef9c1..ad4aad2796 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go @@ -440,3 +440,43 @@ const ( POLLWRBAND = 0x100 POLLWRNORM = 0x4 ) + +type fileObj struct { + Atim Timespec + Mtim Timespec + Ctim Timespec + Pad [3]uint64 + Name *int8 +} + +type portEvent struct { + Events int32 + Source uint16 + Pad uint16 + Object uint64 + User *byte +} + +const ( + PORT_SOURCE_AIO = 0x1 + PORT_SOURCE_TIMER = 0x2 + PORT_SOURCE_USER = 0x3 + PORT_SOURCE_FD = 0x4 + PORT_SOURCE_ALERT = 0x5 + PORT_SOURCE_MQ = 0x6 + PORT_SOURCE_FILE = 0x7 + PORT_ALERT_SET = 0x1 + PORT_ALERT_UPDATE = 0x2 + PORT_ALERT_INVALID = 0x3 + FILE_ACCESS = 0x1 + FILE_MODIFIED = 0x2 + FILE_ATTRIB = 0x4 + FILE_TRUNC = 0x100000 + FILE_NOFOLLOW = 0x10000000 + FILE_DELETE = 0x10 + FILE_RENAME_TO = 0x20 + FILE_RENAME_FROM = 0x40 + UNMOUNTED = 0x20000000 + MOUNTEDOVER = 0x40000000 + FILE_EXCEPTION = 0x60000070 +) diff --git a/vendor/golang.org/x/sys/windows/types_windows.go b/vendor/golang.org/x/sys/windows/types_windows.go index 1f733398ee..17f03312df 100644 --- a/vendor/golang.org/x/sys/windows/types_windows.go +++ b/vendor/golang.org/x/sys/windows/types_windows.go @@ -680,7 +680,7 @@ const ( WTD_CHOICE_CERT = 5 WTD_STATEACTION_IGNORE = 0x00000000 - WTD_STATEACTION_VERIFY = 0x00000010 + WTD_STATEACTION_VERIFY = 0x00000001 WTD_STATEACTION_CLOSE = 0x00000002 WTD_STATEACTION_AUTO_CACHE = 0x00000003 WTD_STATEACTION_AUTO_CACHE_FLUSH = 0x00000004 diff --git a/vendor/k8s.io/apiserver/pkg/endpoints/metrics/metrics.go b/vendor/k8s.io/apiserver/pkg/endpoints/metrics/metrics.go index 7e0715eb5a..5efc0a8347 100644 --- a/vendor/k8s.io/apiserver/pkg/endpoints/metrics/metrics.go +++ b/vendor/k8s.io/apiserver/pkg/endpoints/metrics/metrics.go @@ -370,7 +370,7 @@ func RecordRequestAbort(req *http.Request, requestInfo *request.RequestInfo) { } scope := CleanScope(requestInfo) - reportedVerb := cleanVerb(CanonicalVerb(strings.ToUpper(req.Method), scope), req) + reportedVerb := cleanVerb(CanonicalVerb(strings.ToUpper(req.Method), scope), "", req) resource := requestInfo.Resource subresource := requestInfo.Subresource group := requestInfo.APIGroup @@ -393,7 +393,7 @@ func RecordRequestTermination(req *http.Request, requestInfo *request.RequestInf // InstrumentRouteFunc which is registered in installer.go with predefined // list of verbs (different than those translated to RequestInfo). // However, we need to tweak it e.g. to differentiate GET from LIST. - reportedVerb := cleanVerb(CanonicalVerb(strings.ToUpper(req.Method), scope), req) + reportedVerb := cleanVerb(CanonicalVerb(strings.ToUpper(req.Method), scope), "", req) if requestInfo.IsResourceRequest { requestTerminationsTotal.WithContext(req.Context()).WithLabelValues(reportedVerb, requestInfo.APIGroup, requestInfo.APIVersion, requestInfo.Resource, requestInfo.Subresource, scope, component, codeToString(code)).Inc() @@ -415,7 +415,7 @@ func RecordLongRunning(req *http.Request, requestInfo *request.RequestInfo, comp // InstrumentRouteFunc which is registered in installer.go with predefined // list of verbs (different than those translated to RequestInfo). // However, we need to tweak it e.g. to differentiate GET from LIST. - reportedVerb := cleanVerb(CanonicalVerb(strings.ToUpper(req.Method), scope), req) + reportedVerb := cleanVerb(CanonicalVerb(strings.ToUpper(req.Method), scope), "", req) if requestInfo.IsResourceRequest { g = longRunningRequestGauge.WithContext(req.Context()).WithLabelValues(reportedVerb, requestInfo.APIGroup, requestInfo.APIVersion, requestInfo.Resource, requestInfo.Subresource, scope, component) @@ -434,7 +434,7 @@ func MonitorRequest(req *http.Request, verb, group, version, resource, subresour // InstrumentRouteFunc which is registered in installer.go with predefined // list of verbs (different than those translated to RequestInfo). // However, we need to tweak it e.g. to differentiate GET from LIST. - reportedVerb := cleanVerb(CanonicalVerb(strings.ToUpper(req.Method), scope), req) + reportedVerb := cleanVerb(CanonicalVerb(strings.ToUpper(req.Method), scope), verb, req) dryRun := cleanDryRun(req.URL) elapsedSeconds := elapsed.Seconds() @@ -564,8 +564,15 @@ func CleanVerb(verb string, request *http.Request) string { } // cleanVerb additionally ensures that unknown verbs don't clog up the metrics. -func cleanVerb(verb string, request *http.Request) string { +func cleanVerb(verb, suggestedVerb string, request *http.Request) string { reportedVerb := CleanVerb(verb, request) + // CanonicalVerb (being an input for this function) doesn't handle correctly the + // deprecated path pattern for watch of: + // GET /api/{version}/watch/{resource} + // We correct it manually based on the pass verb from the installer. + if suggestedVerb == "WATCH" || suggestedVerb == "WATCHLIST" { + reportedVerb = "WATCH" + } if validRequestMethods.Has(reportedVerb) { return reportedVerb } diff --git a/vendor/k8s.io/apiserver/pkg/server/deprecated_insecure_serving.go b/vendor/k8s.io/apiserver/pkg/server/deprecated_insecure_serving.go index 1de20682af..04375d1dd7 100644 --- a/vendor/k8s.io/apiserver/pkg/server/deprecated_insecure_serving.go +++ b/vendor/k8s.io/apiserver/pkg/server/deprecated_insecure_serving.go @@ -45,6 +45,9 @@ func (s *DeprecatedInsecureServingInfo) Serve(handler http.Handler, shutdownTime Addr: s.Listener.Addr().String(), Handler: handler, MaxHeaderBytes: 1 << 20, + + IdleTimeout: 90 * time.Second, // matches http.DefaultTransport keep-alive timeout + ReadHeaderTimeout: 32 * time.Second, // just shy of requestTimeoutUpperBound } if len(s.Name) > 0 { diff --git a/vendor/k8s.io/apiserver/pkg/server/secure_serving.go b/vendor/k8s.io/apiserver/pkg/server/secure_serving.go index c706afb5f5..5626cb3a90 100644 --- a/vendor/k8s.io/apiserver/pkg/server/secure_serving.go +++ b/vendor/k8s.io/apiserver/pkg/server/secure_serving.go @@ -157,6 +157,9 @@ func (s *SecureServingInfo) Serve(handler http.Handler, shutdownTimeout time.Dur Handler: handler, MaxHeaderBytes: 1 << 20, TLSConfig: tlsConfig, + + IdleTimeout: 90 * time.Second, // matches http.DefaultTransport keep-alive timeout + ReadHeaderTimeout: 32 * time.Second, // just shy of requestTimeoutUpperBound } // At least 99% of serialized resources in surveyed clusters were smaller than 256kb. @@ -164,7 +167,9 @@ func (s *SecureServingInfo) Serve(handler http.Handler, shutdownTimeout time.Dur // and small enough to allow a per connection buffer of this size multiplied by `MaxConcurrentStreams`. const resourceBody99Percentile = 256 * 1024 - http2Options := &http2.Server{} + http2Options := &http2.Server{ + IdleTimeout: 90 * time.Second, // matches http.DefaultTransport keep-alive timeout + } // shrink the per-stream buffer and max framesize from the 1MB default while still accommodating most API POST requests in a single frame http2Options.MaxUploadBufferPerStream = resourceBody99Percentile @@ -218,6 +223,9 @@ func (s *SecureServingInfo) ServeWithListenerStopped(handler http.Handler, shutd Handler: handler, MaxHeaderBytes: 1 << 20, TLSConfig: tlsConfig, + + IdleTimeout: 90 * time.Second, // matches http.DefaultTransport keep-alive timeout + ReadHeaderTimeout: 32 * time.Second, // just shy of requestTimeoutUpperBound } // At least 99% of serialized resources in surveyed clusters were smaller than 256kb. @@ -225,7 +233,9 @@ func (s *SecureServingInfo) ServeWithListenerStopped(handler http.Handler, shutd // and small enough to allow a per connection buffer of this size multiplied by `MaxConcurrentStreams`. const resourceBody99Percentile = 256 * 1024 - http2Options := &http2.Server{} + http2Options := &http2.Server{ + IdleTimeout: 90 * time.Second, // matches http.DefaultTransport keep-alive timeout + } // shrink the per-stream buffer and max framesize from the 1MB default while still accommodating most API POST requests in a single frame http2Options.MaxUploadBufferPerStream = resourceBody99Percentile diff --git a/vendor/k8s.io/apiserver/pkg/storage/etcd3/store.go b/vendor/k8s.io/apiserver/pkg/storage/etcd3/store.go index 5f36b7108d..7f558a5886 100644 --- a/vendor/k8s.io/apiserver/pkg/storage/etcd3/store.go +++ b/vendor/k8s.io/apiserver/pkg/storage/etcd3/store.go @@ -230,12 +230,22 @@ func (s *store) conditionalDelete( } // It's possible we're working with stale data. + // Remember the revision of the potentially stale data and the resulting update error + cachedRev := origState.rev + cachedUpdateErr := err + // Actually fetch origState, err = getCurrentState() if err != nil { return err } origStateIsCurrent = true + + // it turns out our cached data was not stale, return the error + if cachedRev == origState.rev { + return cachedUpdateErr + } + // Retry continue } @@ -246,12 +256,22 @@ func (s *store) conditionalDelete( } // It's possible we're working with stale data. + // Remember the revision of the potentially stale data and the resulting update error + cachedRev := origState.rev + cachedUpdateErr := err + // Actually fetch origState, err = getCurrentState() if err != nil { return err } origStateIsCurrent = true + + // it turns out our cached data was not stale, return the error + if cachedRev == origState.rev { + return cachedUpdateErr + } + // Retry continue } @@ -345,12 +365,22 @@ func (s *store) GuaranteedUpdate( } // It's possible we were working with stale data + // Remember the revision of the potentially stale data and the resulting update error + cachedRev := origState.rev + cachedUpdateErr := err + // Actually fetch origState, err = getCurrentState() if err != nil { return err } origStateIsCurrent = true + + // it turns out our cached data was not stale, return the error + if cachedRev == origState.rev { + return cachedUpdateErr + } + // Retry continue } diff --git a/vendor/k8s.io/utils/pointer/pointer.go b/vendor/k8s.io/utils/pointer/pointer.go index 1da6f6664a..2cab2c5800 100644 --- a/vendor/k8s.io/utils/pointer/pointer.go +++ b/vendor/k8s.io/utils/pointer/pointer.go @@ -46,6 +46,24 @@ func AllPtrFieldsNil(obj interface{}) bool { return true } +// Int returns a pointer to an int +func Int(i int) *int { + return &i +} + +var IntPtr = Int // for back-compat + +// IntDeref dereferences the int ptr and returns it if not nil, or else +// returns def. +func IntDeref(ptr *int, def int) int { + if ptr != nil { + return *ptr + } + return def +} + +var IntPtrDerefOr = IntDeref // for back-compat + // Int32 returns a pointer to an int32. func Int32(i int32) *int32 { return &i diff --git a/vendor/modules.txt b/vendor/modules.txt index 5ce7c4a3a8..32ab85daf7 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1,4 +1,4 @@ -# cloud.google.com/go v0.54.0 +# cloud.google.com/go v0.81.0 cloud.google.com/go/compute/metadata # github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 github.com/Azure/go-ansiterm @@ -403,7 +403,7 @@ github.com/mitchellh/go-wordwrap github.com/mitchellh/hashstructure # github.com/mitchellh/hashstructure/v2 v2.0.2 github.com/mitchellh/hashstructure/v2 -# github.com/mitchellh/mapstructure v1.1.2 +# github.com/mitchellh/mapstructure v1.4.1 github.com/mitchellh/mapstructure # github.com/mitchellh/reflectwalk v1.0.1 github.com/mitchellh/reflectwalk @@ -454,7 +454,7 @@ github.com/onsi/ginkgo/reporters/stenographer github.com/onsi/ginkgo/reporters/stenographer/support/go-colorable github.com/onsi/ginkgo/reporters/stenographer/support/go-isatty github.com/onsi/ginkgo/types -# github.com/onsi/gomega v1.13.0 +# github.com/onsi/gomega v1.15.0 github.com/onsi/gomega/gstruct/errors github.com/onsi/gomega/types # github.com/opencontainers/go-digest v1.0.0 @@ -676,7 +676,7 @@ github.com/shurcooL/sanitized_anchor_name github.com/sirupsen/logrus # github.com/spf13/cast v1.3.1 github.com/spf13/cast -# github.com/spf13/cobra v1.1.3 +# github.com/spf13/cobra v1.2.1 ## explicit github.com/spf13/cobra github.com/spf13/cobra/doc @@ -732,7 +732,7 @@ go.etcd.io/etcd/client/v3 go.etcd.io/etcd/client/v3/credentials go.etcd.io/etcd/client/v3/internal/endpoint go.etcd.io/etcd/client/v3/internal/resolver -# go.opencensus.io v0.22.3 +# go.opencensus.io v0.23.0 go.opencensus.io go.opencensus.io/internal go.opencensus.io/trace @@ -807,7 +807,7 @@ go.starlark.net/syntax go.uber.org/atomic # go.uber.org/multierr v1.6.0 go.uber.org/multierr -# go.uber.org/zap v1.17.0 +# go.uber.org/zap v1.19.0 go.uber.org/zap go.uber.org/zap/buffer go.uber.org/zap/internal/bufferpool @@ -858,9 +858,10 @@ golang.org/x/net/internal/timeseries golang.org/x/net/proxy golang.org/x/net/trace golang.org/x/net/websocket -# golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d +# golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602 golang.org/x/oauth2 golang.org/x/oauth2/google +golang.org/x/oauth2/google/internal/externalaccount golang.org/x/oauth2/internal golang.org/x/oauth2/jws golang.org/x/oauth2/jwt @@ -868,7 +869,7 @@ golang.org/x/oauth2/jwt golang.org/x/sync/errgroup golang.org/x/sync/semaphore golang.org/x/sync/singleflight -# golang.org/x/sys v0.0.0-20210616094352-59db8d763f22 +# golang.org/x/sys v0.0.0-20210817190340-bfb29a6856f2 golang.org/x/sys/cpu golang.org/x/sys/execabs golang.org/x/sys/internal/unsafeheader @@ -891,7 +892,7 @@ golang.org/x/text/unicode/norm golang.org/x/text/width # golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac golang.org/x/time/rate -# golang.org/x/tools v0.1.3 +# golang.org/x/tools v0.1.5 golang.org/x/tools/go/ast/astutil golang.org/x/tools/go/ast/inspector golang.org/x/tools/go/gcexportdata @@ -1094,7 +1095,7 @@ helm.sh/helm/v3/pkg/storage helm.sh/helm/v3/pkg/storage/driver helm.sh/helm/v3/pkg/strvals helm.sh/helm/v3/pkg/time -# k8s.io/api v0.22.0 +# k8s.io/api v0.22.1 ## explicit k8s.io/api/admission/v1 k8s.io/api/admission/v1beta1 @@ -1142,7 +1143,7 @@ k8s.io/api/scheduling/v1beta1 k8s.io/api/storage/v1 k8s.io/api/storage/v1alpha1 k8s.io/api/storage/v1beta1 -# k8s.io/apiextensions-apiserver v0.22.0 +# k8s.io/apiextensions-apiserver v0.22.1 k8s.io/apiextensions-apiserver/pkg/apihelpers k8s.io/apiextensions-apiserver/pkg/apis/apiextensions k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/install @@ -1165,7 +1166,7 @@ k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/apiextensio k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions/internalinterfaces k8s.io/apiextensions-apiserver/pkg/client/listers/apiextensions/v1 k8s.io/apiextensions-apiserver/pkg/client/listers/apiextensions/v1beta1 -# k8s.io/apimachinery v0.22.0 +# k8s.io/apimachinery v0.22.1 ## explicit k8s.io/apimachinery/pkg/api/equality k8s.io/apimachinery/pkg/api/errors @@ -1227,7 +1228,7 @@ k8s.io/apimachinery/pkg/watch k8s.io/apimachinery/third_party/forked/golang/json k8s.io/apimachinery/third_party/forked/golang/netutil k8s.io/apimachinery/third_party/forked/golang/reflect -# k8s.io/apiserver v0.22.0 +# k8s.io/apiserver v0.22.1 k8s.io/apiserver/pkg/admission k8s.io/apiserver/pkg/admission/configuration k8s.io/apiserver/pkg/admission/initializer @@ -1359,7 +1360,7 @@ k8s.io/apiserver/plugin/pkg/authorizer/webhook k8s.io/cli-runtime/pkg/genericclioptions k8s.io/cli-runtime/pkg/printers k8s.io/cli-runtime/pkg/resource -# k8s.io/client-go v0.22.0 +# k8s.io/client-go v0.22.1 ## explicit k8s.io/client-go/applyconfigurations/admissionregistration/v1 k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1 @@ -1601,7 +1602,7 @@ k8s.io/client-go/util/jsonpath k8s.io/client-go/util/keyutil k8s.io/client-go/util/retry k8s.io/client-go/util/workqueue -# k8s.io/code-generator v0.22.0 +# k8s.io/code-generator v0.22.1 ## explicit k8s.io/code-generator k8s.io/code-generator/cmd/client-gen @@ -1636,7 +1637,7 @@ k8s.io/code-generator/cmd/set-gen k8s.io/code-generator/pkg/namer k8s.io/code-generator/pkg/util k8s.io/code-generator/third_party/forked/golang/reflect -# k8s.io/component-base v0.22.0 +# k8s.io/component-base v0.22.1 k8s.io/component-base/cli/flag k8s.io/component-base/config k8s.io/component-base/config/v1alpha1 @@ -1708,7 +1709,7 @@ k8s.io/kubectl/pkg/util/openapi/validation k8s.io/kubectl/pkg/util/templates k8s.io/kubectl/pkg/util/term k8s.io/kubectl/pkg/validation -# k8s.io/utils v0.0.0-20210707171843-4b05e18ac7d9 +# k8s.io/utils v0.0.0-20210802155522-efc7438f0176 ## explicit k8s.io/utils/buffer k8s.io/utils/exec @@ -1723,7 +1724,7 @@ k8s.io/utils/trace # sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.22 sigs.k8s.io/apiserver-network-proxy/konnectivity-client/pkg/client sigs.k8s.io/apiserver-network-proxy/konnectivity-client/proto/client -# sigs.k8s.io/controller-runtime v0.9.2 +# sigs.k8s.io/controller-runtime v0.10.0 ## explicit sigs.k8s.io/controller-runtime sigs.k8s.io/controller-runtime/pkg/builder @@ -1766,7 +1767,7 @@ sigs.k8s.io/controller-runtime/pkg/webhook sigs.k8s.io/controller-runtime/pkg/webhook/admission sigs.k8s.io/controller-runtime/pkg/webhook/conversion sigs.k8s.io/controller-runtime/pkg/webhook/internal/metrics -# sigs.k8s.io/controller-tools v0.6.1 +# sigs.k8s.io/controller-tools v0.6.2 ## explicit sigs.k8s.io/controller-tools/cmd/controller-gen sigs.k8s.io/controller-tools/pkg/crd diff --git a/vendor/sigs.k8s.io/controller-runtime/FAQ.md b/vendor/sigs.k8s.io/controller-runtime/FAQ.md index cfc2997924..86c7f93369 100644 --- a/vendor/sigs.k8s.io/controller-runtime/FAQ.md +++ b/vendor/sigs.k8s.io/controller-runtime/FAQ.md @@ -55,7 +55,7 @@ to test against a real API server. In our experience, tests using fake clients gradually re-implement poorly-written impressions of a real API server, which leads to hard-to-maintain, complex test code. -### Q: How should I write tests? Any suggestions for getting started? +### Q: How should I write tests? Any suggestions for getting started? - Use the aforementioned [envtest.Environment](https://godoc.org/sigs.k8s.io/controller-runtime/pkg/envtest#Environment) diff --git a/vendor/sigs.k8s.io/controller-runtime/Makefile b/vendor/sigs.k8s.io/controller-runtime/Makefile index f2cd38cad8..36647c697f 100644 --- a/vendor/sigs.k8s.io/controller-runtime/Makefile +++ b/vendor/sigs.k8s.io/controller-runtime/Makefile @@ -40,6 +40,7 @@ TOOLS_BIN_DIR := $(TOOLS_DIR)/bin GOLANGCI_LINT := $(abspath $(TOOLS_BIN_DIR)/golangci-lint) GO_APIDIFF := $(TOOLS_BIN_DIR)/go-apidiff CONTROLLER_GEN := $(TOOLS_BIN_DIR)/controller-gen +ENVTEST_DIR := $(abspath tools/setup-envtest) # The help will print out all targets with their descriptions organized bellow their categories. The categories are represented by `##@` and the target descriptions by `##`. # The awk commands is responsible to read the entire set of makefiles included in this invocation, looking for lines of the file as xyz: ## something, and then pretty-format the target and help. Then, if there's a line with ##@ something, that gets pretty-printed as a category. @@ -97,6 +98,7 @@ lint-fix: $(GOLANGCI_LINT) ## Lint the codebase and run auto-fixers if supported modules: ## Runs go mod to ensure modules are up to date. go mod tidy cd $(TOOLS_DIR); go mod tidy + cd $(ENVTEST_DIR); go mod tidy .PHONY: generate generate: $(CONTROLLER_GEN) ## Runs controller-gen for internal types for config file diff --git a/vendor/sigs.k8s.io/controller-runtime/OWNERS_ALIASES b/vendor/sigs.k8s.io/controller-runtime/OWNERS_ALIASES index d93e1794fb..290dcc192e 100644 --- a/vendor/sigs.k8s.io/controller-runtime/OWNERS_ALIASES +++ b/vendor/sigs.k8s.io/controller-runtime/OWNERS_ALIASES @@ -11,12 +11,12 @@ aliases: # non-admin folks who have write-access and can approve any PRs in the repo controller-runtime-maintainers: - vincepri + - joelanford # non-admin folks who can approve any PRs in the repo controller-runtime-approvers: - gerred - shawn-hurley - - joelanford - alvaroaleman # folks who can review and LGTM any PRs in the repo (doesn't @@ -26,6 +26,7 @@ aliases: - alenkacz - vincepri - alexeldeib + - varshaprasad96 # folks to can approve things in the directly-ported # testing_frameworks portions of the codebase diff --git a/vendor/sigs.k8s.io/controller-runtime/README.md b/vendor/sigs.k8s.io/controller-runtime/README.md index e4cbabb00a..d857d3e76a 100644 --- a/vendor/sigs.k8s.io/controller-runtime/README.md +++ b/vendor/sigs.k8s.io/controller-runtime/README.md @@ -1,4 +1,5 @@ [![Go Report Card](https://goreportcard.com/badge/sigs.k8s.io/controller-runtime)](https://goreportcard.com/report/sigs.k8s.io/controller-runtime) +[![godoc](https://godoc.org/sigs.k8s.io/controller-runtime?status.svg)](https://godoc.org/sigs.k8s.io/controller-runtime) # Kubernetes controller-runtime Project diff --git a/vendor/sigs.k8s.io/controller-runtime/TMP-LOGGING.md b/vendor/sigs.k8s.io/controller-runtime/TMP-LOGGING.md index 9ee4b2a431..b3cfc66517 100644 --- a/vendor/sigs.k8s.io/controller-runtime/TMP-LOGGING.md +++ b/vendor/sigs.k8s.io/controller-runtime/TMP-LOGGING.md @@ -75,7 +75,7 @@ allKubernetesObjectsEverywhere) ``` While it's possible to use higher log levels, it's recommended that you -stick with `V(1)` or V(0)` (which is equivalent to not specifying `V`), +stick with `V(1)` or `V(0)` (which is equivalent to not specifying `V`), and then filter later based on key-value pairs or messages; different numbers tend to lose meaning easily over time, and you'll be left wondering why particular logs lines are at `V(5)` instead of `V(7)`. diff --git a/vendor/sigs.k8s.io/controller-runtime/doc.go b/vendor/sigs.k8s.io/controller-runtime/doc.go index 758662085d..429eb129f9 100644 --- a/vendor/sigs.k8s.io/controller-runtime/doc.go +++ b/vendor/sigs.k8s.io/controller-runtime/doc.go @@ -58,7 +58,7 @@ limitations under the License. // // Controllers // -// Controllers (pkg/controller) use events (pkg/events) to eventually trigger +// Controllers (pkg/controller) use events (pkg/event) to eventually trigger // reconcile requests. They may be constructed manually, but are often // constructed with a Builder (pkg/builder), which eases the wiring of event // sources (pkg/source), like Kubernetes API object changes, to event handlers diff --git a/vendor/sigs.k8s.io/controller-runtime/go.mod b/vendor/sigs.k8s.io/controller-runtime/go.mod index 0ce3b6c132..53596f3b14 100644 --- a/vendor/sigs.k8s.io/controller-runtime/go.mod +++ b/vendor/sigs.k8s.io/controller-runtime/go.mod @@ -7,24 +7,22 @@ require ( github.com/fsnotify/fsnotify v1.4.9 github.com/go-logr/logr v0.4.0 github.com/go-logr/zapr v0.4.0 - github.com/googleapis/gnostic v0.5.5 // indirect - github.com/hashicorp/golang-lru v0.5.4 // indirect github.com/imdario/mergo v0.3.12 // indirect github.com/onsi/ginkgo v1.16.4 - github.com/onsi/gomega v1.13.0 + github.com/onsi/gomega v1.15.0 github.com/prometheus/client_golang v1.11.0 github.com/prometheus/client_model v0.2.0 go.uber.org/goleak v1.1.10 - go.uber.org/zap v1.17.0 - golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40 - golang.org/x/time v0.0.0-20210611083556-38a9dc6acbc6 + go.uber.org/zap v1.19.0 + golang.org/x/sys v0.0.0-20210817190340-bfb29a6856f2 + golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac gomodules.xyz/jsonpatch/v2 v2.2.0 google.golang.org/appengine v1.6.7 // indirect - k8s.io/api v0.21.2 - k8s.io/apiextensions-apiserver v0.21.2 - k8s.io/apimachinery v0.21.2 - k8s.io/client-go v0.21.2 - k8s.io/component-base v0.21.2 - k8s.io/utils v0.0.0-20210527160623-6fdb442a123b + k8s.io/api v0.22.1 + k8s.io/apiextensions-apiserver v0.22.1 + k8s.io/apimachinery v0.22.1 + k8s.io/client-go v0.22.1 + k8s.io/component-base v0.22.1 + k8s.io/utils v0.0.0-20210802155522-efc7438f0176 sigs.k8s.io/yaml v1.2.0 ) diff --git a/vendor/sigs.k8s.io/controller-runtime/go.sum b/vendor/sigs.k8s.io/controller-runtime/go.sum index 12cf1b35ba..82d98e7e53 100644 --- a/vendor/sigs.k8s.io/controller-runtime/go.sum +++ b/vendor/sigs.k8s.io/controller-runtime/go.sum @@ -23,13 +23,14 @@ cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiy cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= +github.com/Azure/go-ansiterm v0.0.0-20210608223527-2377c96fe795/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= +github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= -github.com/Azure/go-autorest/autorest v0.11.12/go.mod h1:eipySxLmqSyC5s5k1CLupqet0PSENBEDP93LQ9a8QYw= -github.com/Azure/go-autorest/autorest/adal v0.9.5/go.mod h1:B7KF7jKIeC9Mct5spmyCB/A8CG/sEz1vwIRGv/bbw7A= +github.com/Azure/go-autorest/autorest v0.11.18/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA= +github.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M= github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= -github.com/Azure/go-autorest/logger v0.2.0/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= +github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= @@ -43,10 +44,14 @@ github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuy github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= +github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= +github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= +github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= @@ -55,6 +60,8 @@ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kB github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= +github.com/certifi/gocertifi v0.0.0-20200922220541-2c3bb06c6054/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= @@ -63,18 +70,19 @@ github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWR github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cockroachdb/datadriven v0.0.0-20200714090401-bf6692d28da5/go.mod h1:h6jFvWxBdQXxjopDMZyH2UVceIRfR84bdzbkoKrsWNo= +github.com/cockroachdb/errors v1.2.4/go.mod h1:rQD95gz6FARkaKkQXUksEje/d9a6wBJoCr5oaCLELYA= +github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -83,22 +91,27 @@ github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= -github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/evanphx/json-patch v0.5.2/go.mod h1:ZWS5hhDbVDyob71nXKNL0+PWn6ToqBHMikGIFbs31qQ= -github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch v4.11.0+incompatible h1:glyUF9yIYtMHzn8xaKw5rMhdWcwsYV8dZHIq5567/xs= github.com/evanphx/json-patch v4.11.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= +github.com/form3tech-oss/jwt-go v3.2.3+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/getsentry/raven-go v0.2.0/go.mod h1:KungGk8q33+aIAZUIVWZDr2OfAEBsO49PX4NzFV5kcQ= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -115,27 +128,27 @@ github.com/go-logr/logr v0.4.0 h1:K7/B1jt6fIBQVd4Owv2MqGQClcgf0R266+7C/QjRcLc= github.com/go-logr/logr v0.4.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= github.com/go-logr/zapr v0.4.0 h1:uc1uML3hRYL9/ZZPdgHS/n8Nzo+eaYL/Efxkkamf7OM= github.com/go-logr/zapr v0.4.0/go.mod h1:tabnROwaDl0UNxkVeFRbY8bwB37GwRv0P8lg6aAiEnk= -github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= +github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= -github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= -github.com/go-openapi/spec v0.19.5/go.mod h1:Hm2Jr4jv8G1ciIAo+frC/Ft+rR2kQDh8JHKHb3gWUSk= -github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-openapi/jsonreference v0.19.5/go.mod h1:RdybgQwPxbL4UEjuAruzK1x3nE69AqPYEJeo/TWfEeg= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-openapi/swag v0.19.14/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= @@ -155,10 +168,12 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -177,24 +192,22 @@ github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= +github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU= github.com/googleapis/gnostic v0.5.5 h1:9fHAtK0uDfpveeqqo1hkEZJcFvYXAiCN3UutL8F9xHw= github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97DwqyJO1AENw9kA= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -210,8 +223,6 @@ github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/b github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= -github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= @@ -225,9 +236,10 @@ github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= +github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.11 h1:uVUAXhF2To8cbw/3xN3pxj6kk7TYKs98NIrTqPlMWAQ= github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= @@ -237,6 +249,7 @@ github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfV github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -245,18 +258,15 @@ github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFB github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= +github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= @@ -270,7 +280,7 @@ github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0Qu github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= -github.com/moby/term v0.0.0-20201216013528-df9cb8a40635/go.mod h1:FBS0z0QWA44HXygs7VXDUOGoN/1TV3RuWkLO04am3wc= +github.com/moby/term v0.0.0-20210610120745-9d4ed1856297/go.mod h1:vgPCkQMyxTZ7IDy8SXRufE172gr8+K/JE/7hHFxHW3A= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -288,20 +298,18 @@ github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= -github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= -github.com/onsi/ginkgo v1.16.2/go.mod h1:CObGmKUOKaSC0RjmoAK7tKyn4Azo5P2IWuoMnvwxz1E= +github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= -github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.13.0 h1:7lLHu94wT9Ij0o6EWWclhu0aOh32VxhkwEJvzuWPeak= -github.com/onsi/gomega v1.13.0/go.mod h1:lRk9szgn8TxENtWd0Tp4c3wjlRfMTMH27I+3Je41yGY= +github.com/onsi/gomega v1.15.0 h1:WjP/FQ/sk43MRmnEcT+MlDw2TFvkrXlprrPST/IudjU= +github.com/onsi/gomega v1.15.0/go.mod h1:cIuvLEne0aoVhAgh/O6ac0Op8WWw9H6eYCriF+tEHG0= +github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= @@ -334,11 +342,11 @@ github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.6.0 h1:mxy4L2jP6qMonqmq+aTtOx1ifVWUgG/TAmntgbh3xv4= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= @@ -348,18 +356,18 @@ github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPx github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/cobra v1.1.1/go.mod h1:WnodtKOvamDL/PwE2M4iKs8aMDBZ5Q5klgD3qfVJQMI= +github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= @@ -367,7 +375,6 @@ github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5q github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= @@ -376,21 +383,37 @@ github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= -github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= +github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= -go.etcd.io/etcd v0.5.0-alpha.5.0.20200910180754-dd1b699fc489/go.mod h1:yVHk9ub3CSBatqGNg7GRmsnfLWtoW60w4eDYfh7vHDg= +go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= +go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= +go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= +go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= +go.etcd.io/etcd/client/v3 v3.5.0/go.mod h1:AIKXXVX/DQXtfTEqBryiLTUXwON+GuvO6Z7lLS/oTh0= +go.etcd.io/etcd/pkg/v3 v3.5.0/go.mod h1:UzJGatBQ1lXChBkQF0AuAtkRQMYnHubxAEYIrC3MSsE= +go.etcd.io/etcd/raft/v3 v3.5.0/go.mod h1:UFOHSIvO/nKwd4lhkwabrTD3cqW5yVyYYf/KlD00Szc= +go.etcd.io/etcd/server/v3 v3.5.0/go.mod h1:3Ah5ruV+M+7RZr0+Y/5mNLwC+eQlni+mQmOVdCRJoS4= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.opentelemetry.io/contrib v0.20.0/go.mod h1:G/EtFaa6qaN7+LxqfIAT3GiZa7Wv5DTBUzl5H4LY0Kc= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.20.0/go.mod h1:oVGt1LRbBOBq1A5BQLlUg9UaU/54aiHw8cgjV3aWZ/E= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.20.0/go.mod h1:2AboqHi0CiIZU0qwhtUfCYD1GeUzvvIXWNkhDt7ZMG4= +go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo= +go.opentelemetry.io/otel/exporters/otlp v0.20.0/go.mod h1:YIieizyaN77rtLJra0buKiNBOm9XQfkPEKBeuhoMwAM= +go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU= +go.opentelemetry.io/otel/oteltest v0.20.0/go.mod h1:L7bgKf9ZB7qCwT9Up7i9/pn0PWIa9FqQ2IQ8LoxiGnw= +go.opentelemetry.io/otel/sdk v0.20.0/go.mod h1:g/IcepuwNsoiX5Byy2nNV0ySUF1em498m7hBWC279Yc= +go.opentelemetry.io/otel/sdk/export/metric v0.20.0/go.mod h1:h7RBNMsDJ5pmI1zExLi+bJK+Dr8NQCh0qGhm1KDnNlE= +go.opentelemetry.io/otel/sdk/metric v0.20.0/go.mod h1:knxiS8Xd4E/N+ZqKmUPf3gTTZ4/0TjTXukfxjzSTpHE= +go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16gUEi0Nf1iBdgw= +go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= @@ -400,14 +423,14 @@ go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/ go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.17.0 h1:MTjgFu6ZLKvY6Pvaqk97GlxNBuMpV4Hy/3P6tRGlI2U= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= +go.uber.org/zap v1.19.0 h1:mZQZefskPPCMIBCSEH0v2/iUqqLrYtaeqwD6FUGUnFE= +go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -433,8 +456,9 @@ golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHl golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b h1:Wh+f8QHJXR411sJR8/vRBTZ7YapZaRvUcLFFJhusH0k= golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= @@ -443,7 +467,7 @@ golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzB golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.1-0.20200828183125-ce943fd02449/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -461,7 +485,6 @@ golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -472,10 +495,13 @@ golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20210224082022-3d97a244fca7/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210428140749-89ef3d95e781 h1:DzZ89McO9/gWPsQXS/FVKAlG02ZjaQ6AlZRBimEYOd0= +golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= +golang.org/x/net v0.0.0-20210520170846-37e1c6afe023 h1:ADo5wSpq2gqaCGQWzk7S5vd//0iyyLeAratkEoG5dLE= +golang.org/x/net v0.0.0-20210520170846-37e1c6afe023/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -490,6 +516,7 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -504,10 +531,8 @@ golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -523,18 +548,23 @@ golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40 h1:JWgyZ1qgdTaF3N3oxC+MdTV7qvEEgHo3otj+HB5CM7Q= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210817190340-bfb29a6856f2 h1:c8PlLMqBbOHoqtjteWm5/kbe6rNY2pbRfbIMVnepueo= +golang.org/x/sys v0.0.0-20210817190340-bfb29a6856f2/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d h1:SZxvLBoTP5yHO3Frd4z4vrF+DBX9vMVanchswa69toE= @@ -544,18 +574,18 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20210611083556-38a9dc6acbc6 h1:Vv0JUPWTyeqUq42B2WJ1FeIDjjvGKoA2Ss+Ts0lAVbs= -golang.org/x/time v0.0.0-20210611083556-38a9dc6acbc6/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac h1:7zkz7BUtwNFFqcowJ+RIgu2MaV/MapERkDIy+mwPyjs= +golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= @@ -566,7 +596,6 @@ golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBn golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= @@ -594,8 +623,8 @@ golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.0 h1:po9/4sTYwZU9lPhi1tOrb4hCv3qrhiQ77LZfGa2OjwY= -golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/tools v0.1.2 h1:kRBLX7v7Af8W7Gdbbc908OJcdgtK8bOz9Uaj8/F1ACA= +golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -638,16 +667,24 @@ google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4 google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201110150050-8816d57aaa9a/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -667,7 +704,6 @@ gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= @@ -681,6 +717,7 @@ gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWD gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -699,36 +736,35 @@ honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -k8s.io/api v0.21.2 h1:vz7DqmRsXTCSa6pNxXwQ1IYeAZgdIsua+DZU+o+SX3Y= -k8s.io/api v0.21.2/go.mod h1:Lv6UGJZ1rlMI1qusN8ruAp9PUBFyBwpEHAdG24vIsiU= -k8s.io/apiextensions-apiserver v0.21.2 h1:+exKMRep4pDrphEafRvpEi79wTnCFMqKf8LBtlA3yrE= -k8s.io/apiextensions-apiserver v0.21.2/go.mod h1:+Axoz5/l3AYpGLlhJDfcVQzCerVYq3K3CvDMvw6X1RA= -k8s.io/apimachinery v0.21.2 h1:vezUc/BHqWlQDnZ+XkrpXSmnANSLbpnlpwo0Lhk0gpc= -k8s.io/apimachinery v0.21.2/go.mod h1:CdTY8fU/BlvAbJ2z/8kBwimGki5Zp8/fbVuLY8gJumM= -k8s.io/apiserver v0.21.2/go.mod h1:lN4yBoGyiNT7SC1dmNk0ue6a5Wi6O3SWOIw91TsucQw= -k8s.io/client-go v0.21.2 h1:Q1j4L/iMN4pTw6Y4DWppBoUxgKO8LbffEMVEV00MUp0= -k8s.io/client-go v0.21.2/go.mod h1:HdJ9iknWpbl3vMGtib6T2PyI/VYxiZfq936WNVHBRrA= -k8s.io/code-generator v0.21.2/go.mod h1:8mXJDCB7HcRo1xiEQstcguZkbxZaqeUOrO9SsicWs3U= -k8s.io/component-base v0.21.2 h1:EsnmFFoJ86cEywC0DoIkAUiEV6fjgauNugiw1lmIjs4= -k8s.io/component-base v0.21.2/go.mod h1:9lvmIThzdlrJj5Hp8Z/TOgIkdfsNARQ1pT+3PByuiuc= +k8s.io/api v0.22.1 h1:ISu3tD/jRhYfSW8jI/Q1e+lRxkR7w9UwQEZ7FgslrwY= +k8s.io/api v0.22.1/go.mod h1:bh13rkTp3F1XEaLGykbyRD2QaTTzPm0e/BMd8ptFONY= +k8s.io/apiextensions-apiserver v0.22.1 h1:YSJYzlFNFSfUle+yeEXX0lSQyLEoxoPJySRupepb0gE= +k8s.io/apiextensions-apiserver v0.22.1/go.mod h1:HeGmorjtRmRLE+Q8dJu6AYRoZccvCMsghwS8XTUYb2c= +k8s.io/apimachinery v0.22.1 h1:DTARnyzmdHMz7bFWFDDm22AM4pLWTQECMpRTFu2d2OM= +k8s.io/apimachinery v0.22.1/go.mod h1:O3oNtNadZdeOMxHFVxOreoznohCpy0z6mocxbZr7oJ0= +k8s.io/apiserver v0.22.1/go.mod h1:2mcM6dzSt+XndzVQJX21Gx0/Klo7Aen7i0Ai6tIa400= +k8s.io/client-go v0.22.1 h1:jW0ZSHi8wW260FvcXHkIa0NLxFBQszTlhiAVsU5mopw= +k8s.io/client-go v0.22.1/go.mod h1:BquC5A4UOo4qVDUtoc04/+Nxp1MeHcVc1HJm1KmG8kk= +k8s.io/code-generator v0.22.1/go.mod h1:eV77Y09IopzeXOJzndrDyCI88UBok2h6WxAlBwpxa+o= +k8s.io/component-base v0.22.1 h1:SFqIXsEN3v3Kkr1bS6rstrs1wd45StJqbtgbQ4nRQdo= +k8s.io/component-base v0.22.1/go.mod h1:0D+Bl8rrnsPN9v0dyYvkqFfBeAd4u7n77ze+p8CMiPo= k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20201214224949-b6c5ce23f027/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= -k8s.io/klog/v2 v2.8.0 h1:Q3gmuM9hKEjefWFFYF0Mat+YyFJvsUyYuwyNNJ5C9Ts= -k8s.io/klog/v2 v2.8.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec= -k8s.io/kube-openapi v0.0.0-20210305001622-591a79e4bda7 h1:vEx13qjvaZ4yfObSSXW7BrMc/KQBBT/Jyee8XtLf4x0= -k8s.io/kube-openapi v0.0.0-20210305001622-591a79e4bda7/go.mod h1:wXW5VT87nVfh/iLV8FpR2uDvrFyomxbtb1KivDbvPTE= -k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20210527160623-6fdb442a123b h1:MSqsVQ3pZvPGTqCjptfimO2WjG7A9un2zcpiHkA6M/s= -k8s.io/utils v0.0.0-20210527160623-6fdb442a123b/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/klog/v2 v2.9.0 h1:D7HV+n1V57XeZ0m6tdRkfknthUaM06VFbWldOFh8kzM= +k8s.io/klog/v2 v2.9.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec= +k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e h1:KLHHjkdQFomZy8+06csTWZ0m1343QqxZhR2LJ1OxCYM= +k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= +k8s.io/utils v0.0.0-20210707171843-4b05e18ac7d9/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/utils v0.0.0-20210802155522-efc7438f0176 h1:Mx0aa+SUAcNRQbs5jUzV8lkDlGFU8laZsY9jrcVX5SY= +k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.19/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.22/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= -sigs.k8s.io/structured-merge-diff/v4 v4.1.0 h1:C4r9BgJ98vrKnnVCjwCSXcWjWe0NKcUQkmzDXZXGwH8= -sigs.k8s.io/structured-merge-diff/v4 v4.1.0/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= -sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= +sigs.k8s.io/structured-merge-diff/v4 v4.1.2 h1:Hr/htKFmJEbtMgS/UD0N+gtgctAqz81t3nu+sPzynno= +sigs.k8s.io/structured-merge-diff/v4 v4.1.2/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4= sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q= sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= diff --git a/vendor/sigs.k8s.io/controller-runtime/pkg/builder/doc.go b/vendor/sigs.k8s.io/controller-runtime/pkg/builder/doc.go index 09126576b2..e4df1b709f 100644 --- a/vendor/sigs.k8s.io/controller-runtime/pkg/builder/doc.go +++ b/vendor/sigs.k8s.io/controller-runtime/pkg/builder/doc.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -// Package builder provides wraps other controller-runtime libraries and exposes simple +// Package builder wraps other controller-runtime libraries and exposes simple // patterns for building common Controllers. // // Projects built with the builder package can trivially be rebased on top of the underlying diff --git a/vendor/sigs.k8s.io/controller-runtime/pkg/cache/cache.go b/vendor/sigs.k8s.io/controller-runtime/pkg/cache/cache.go index 6862fd62bd..f89800ca2f 100644 --- a/vendor/sigs.k8s.io/controller-runtime/pkg/cache/cache.go +++ b/vendor/sigs.k8s.io/controller-runtime/pkg/cache/cache.go @@ -113,6 +113,12 @@ type Options struct { // [1] https://pkg.go.dev/k8s.io/apimachinery/pkg/fields#Selector // [2] https://pkg.go.dev/k8s.io/apimachinery/pkg/fields#Set SelectorsByObject SelectorsByObject + + // UnsafeDisableDeepCopyByObject indicates not to deep copy objects during get or + // list objects per GVK at the specified object. + // Be very careful with this, when enabled you must DeepCopy any object before mutating it, + // otherwise you will mutate the object in the cache. + UnsafeDisableDeepCopyByObject DisableDeepCopyByObject } var defaultResyncTime = 10 * time.Hour @@ -127,7 +133,11 @@ func New(config *rest.Config, opts Options) (Cache, error) { if err != nil { return nil, err } - im := internal.NewInformersMap(config, opts.Scheme, opts.Mapper, *opts.Resync, opts.Namespace, selectorsByGVK) + disableDeepCopyByGVK, err := convertToDisableDeepCopyByGVK(opts.UnsafeDisableDeepCopyByObject, opts.Scheme) + if err != nil { + return nil, err + } + im := internal.NewInformersMap(config, opts.Scheme, opts.Mapper, *opts.Resync, opts.Namespace, selectorsByGVK, disableDeepCopyByGVK) return &informerCache{InformersMap: im}, nil } @@ -136,6 +146,8 @@ func New(config *rest.Config, opts Options) (Cache, error) { // SelectorsByObject // WARNING: if SelectorsByObject is specified. filtered out resources are not // returned. +// WARNING: if UnsafeDisableDeepCopy is enabled, you must DeepCopy any object +// returned from cache get/list before mutating it. func BuilderWithOptions(options Options) NewCacheFunc { return func(config *rest.Config, opts Options) (Cache, error) { if opts.Scheme == nil { @@ -151,6 +163,7 @@ func BuilderWithOptions(options Options) NewCacheFunc { opts.Namespace = options.Namespace } opts.SelectorsByObject = options.SelectorsByObject + opts.UnsafeDisableDeepCopyByObject = options.UnsafeDisableDeepCopyByObject return New(config, opts) } } @@ -189,3 +202,30 @@ func convertToSelectorsByGVK(selectorsByObject SelectorsByObject, scheme *runtim } return selectorsByGVK, nil } + +// DisableDeepCopyByObject associate a client.Object's GVK to disable DeepCopy during get or list from cache. +type DisableDeepCopyByObject map[client.Object]bool + +var _ client.Object = &ObjectAll{} + +// ObjectAll is the argument to represent all objects' types. +type ObjectAll struct { + client.Object +} + +func convertToDisableDeepCopyByGVK(disableDeepCopyByObject DisableDeepCopyByObject, scheme *runtime.Scheme) (internal.DisableDeepCopyByGVK, error) { + disableDeepCopyByGVK := internal.DisableDeepCopyByGVK{} + for obj, disable := range disableDeepCopyByObject { + switch obj.(type) { + case ObjectAll, *ObjectAll: + disableDeepCopyByGVK[internal.GroupVersionKindAll] = disable + default: + gvk, err := apiutil.GVKForObject(obj, scheme) + if err != nil { + return nil, err + } + disableDeepCopyByGVK[gvk] = disable + } + } + return disableDeepCopyByGVK, nil +} diff --git a/vendor/sigs.k8s.io/controller-runtime/pkg/cache/internal/cache_reader.go b/vendor/sigs.k8s.io/controller-runtime/pkg/cache/internal/cache_reader.go index 5a495693ed..b95af18d78 100644 --- a/vendor/sigs.k8s.io/controller-runtime/pkg/cache/internal/cache_reader.go +++ b/vendor/sigs.k8s.io/controller-runtime/pkg/cache/internal/cache_reader.go @@ -46,6 +46,11 @@ type CacheReader struct { // scopeName is the scope of the resource (namespaced or cluster-scoped). scopeName apimeta.RESTScopeName + + // disableDeepCopy indicates not to deep copy objects during get or list objects. + // Be very careful with this, when enabled you must DeepCopy any object before mutating it, + // otherwise you will mutate the object in the cache. + disableDeepCopy bool } // Get checks the indexer for the object and writes a copy of it if found. @@ -76,9 +81,13 @@ func (c *CacheReader) Get(_ context.Context, key client.ObjectKey, out client.Ob return fmt.Errorf("cache contained %T, which is not an Object", obj) } - // deep copy to avoid mutating cache - // TODO(directxman12): revisit the decision to always deepcopy - obj = obj.(runtime.Object).DeepCopyObject() + if c.disableDeepCopy { + // skip deep copy which might be unsafe + // you must DeepCopy any object before mutating it outside + } else { + // deep copy to avoid mutating cache + obj = obj.(runtime.Object).DeepCopyObject() + } // Copy the value of the item in the cache to the returned value // TODO(directxman12): this is a terrible hack, pls fix (we should have deepcopyinto) @@ -88,7 +97,9 @@ func (c *CacheReader) Get(_ context.Context, key client.ObjectKey, out client.Ob return fmt.Errorf("cache had type %s, but %s was asked for", objVal.Type(), outVal.Type()) } reflect.Indirect(outVal).Set(reflect.Indirect(objVal)) - out.GetObjectKind().SetGroupVersionKind(c.groupVersionKind) + if !c.disableDeepCopy { + out.GetObjectKind().SetGroupVersionKind(c.groupVersionKind) + } return nil } @@ -129,10 +140,10 @@ func (c *CacheReader) List(_ context.Context, out client.ObjectList, opts ...cli limitSet := listOpts.Limit > 0 runtimeObjs := make([]runtime.Object, 0, len(objs)) - for i, item := range objs { + for _, item := range objs { // if the Limit option is set and the number of items // listed exceeds this limit, then stop reading. - if limitSet && int64(i) >= listOpts.Limit { + if limitSet && int64(len(runtimeObjs)) >= listOpts.Limit { break } obj, isObj := item.(runtime.Object) @@ -150,8 +161,15 @@ func (c *CacheReader) List(_ context.Context, out client.ObjectList, opts ...cli } } - outObj := obj.DeepCopyObject() - outObj.GetObjectKind().SetGroupVersionKind(c.groupVersionKind) + var outObj runtime.Object + if c.disableDeepCopy { + // skip deep copy which might be unsafe + // you must DeepCopy any object before mutating it outside + outObj = obj + } else { + outObj = obj.DeepCopyObject() + outObj.GetObjectKind().SetGroupVersionKind(c.groupVersionKind) + } runtimeObjs = append(runtimeObjs, outObj) } return apimeta.SetList(out, runtimeObjs) diff --git a/vendor/sigs.k8s.io/controller-runtime/pkg/cache/internal/deleg_map.go b/vendor/sigs.k8s.io/controller-runtime/pkg/cache/internal/deleg_map.go index 841f1657eb..9bfc8463fd 100644 --- a/vendor/sigs.k8s.io/controller-runtime/pkg/cache/internal/deleg_map.go +++ b/vendor/sigs.k8s.io/controller-runtime/pkg/cache/internal/deleg_map.go @@ -51,11 +51,12 @@ func NewInformersMap(config *rest.Config, resync time.Duration, namespace string, selectors SelectorsByGVK, + disableDeepCopy DisableDeepCopyByGVK, ) *InformersMap { return &InformersMap{ - structured: newStructuredInformersMap(config, scheme, mapper, resync, namespace, selectors), - unstructured: newUnstructuredInformersMap(config, scheme, mapper, resync, namespace, selectors), - metadata: newMetadataInformersMap(config, scheme, mapper, resync, namespace, selectors), + structured: newStructuredInformersMap(config, scheme, mapper, resync, namespace, selectors, disableDeepCopy), + unstructured: newUnstructuredInformersMap(config, scheme, mapper, resync, namespace, selectors, disableDeepCopy), + metadata: newMetadataInformersMap(config, scheme, mapper, resync, namespace, selectors, disableDeepCopy), Scheme: scheme, } @@ -107,18 +108,18 @@ func (m *InformersMap) Get(ctx context.Context, gvk schema.GroupVersionKind, obj // newStructuredInformersMap creates a new InformersMap for structured objects. func newStructuredInformersMap(config *rest.Config, scheme *runtime.Scheme, mapper meta.RESTMapper, resync time.Duration, - namespace string, selectors SelectorsByGVK) *specificInformersMap { - return newSpecificInformersMap(config, scheme, mapper, resync, namespace, selectors, createStructuredListWatch) + namespace string, selectors SelectorsByGVK, disableDeepCopy DisableDeepCopyByGVK) *specificInformersMap { + return newSpecificInformersMap(config, scheme, mapper, resync, namespace, selectors, disableDeepCopy, createStructuredListWatch) } // newUnstructuredInformersMap creates a new InformersMap for unstructured objects. func newUnstructuredInformersMap(config *rest.Config, scheme *runtime.Scheme, mapper meta.RESTMapper, resync time.Duration, - namespace string, selectors SelectorsByGVK) *specificInformersMap { - return newSpecificInformersMap(config, scheme, mapper, resync, namespace, selectors, createUnstructuredListWatch) + namespace string, selectors SelectorsByGVK, disableDeepCopy DisableDeepCopyByGVK) *specificInformersMap { + return newSpecificInformersMap(config, scheme, mapper, resync, namespace, selectors, disableDeepCopy, createUnstructuredListWatch) } // newMetadataInformersMap creates a new InformersMap for metadata-only objects. func newMetadataInformersMap(config *rest.Config, scheme *runtime.Scheme, mapper meta.RESTMapper, resync time.Duration, - namespace string, selectors SelectorsByGVK) *specificInformersMap { - return newSpecificInformersMap(config, scheme, mapper, resync, namespace, selectors, createMetadataListWatch) + namespace string, selectors SelectorsByGVK, disableDeepCopy DisableDeepCopyByGVK) *specificInformersMap { + return newSpecificInformersMap(config, scheme, mapper, resync, namespace, selectors, disableDeepCopy, createMetadataListWatch) } diff --git a/vendor/sigs.k8s.io/controller-runtime/pkg/cache/internal/disabledeepcopy.go b/vendor/sigs.k8s.io/controller-runtime/pkg/cache/internal/disabledeepcopy.go new file mode 100644 index 0000000000..54bd7eec93 --- /dev/null +++ b/vendor/sigs.k8s.io/controller-runtime/pkg/cache/internal/disabledeepcopy.go @@ -0,0 +1,35 @@ +/* +Copyright 2021 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package internal + +import "k8s.io/apimachinery/pkg/runtime/schema" + +// GroupVersionKindAll is the argument to represent all GroupVersionKind types. +var GroupVersionKindAll = schema.GroupVersionKind{} + +// DisableDeepCopyByGVK associate a GroupVersionKind to disable DeepCopy during get or list from cache. +type DisableDeepCopyByGVK map[schema.GroupVersionKind]bool + +// IsDisabled returns whether a GroupVersionKind is disabled DeepCopy. +func (disableByGVK DisableDeepCopyByGVK) IsDisabled(gvk schema.GroupVersionKind) bool { + if d, ok := disableByGVK[gvk]; ok { + return d + } else if d, ok = disableByGVK[GroupVersionKindAll]; ok { + return d + } + return false +} diff --git a/vendor/sigs.k8s.io/controller-runtime/pkg/cache/internal/informers_map.go b/vendor/sigs.k8s.io/controller-runtime/pkg/cache/internal/informers_map.go index bef54d302e..413b048f0c 100644 --- a/vendor/sigs.k8s.io/controller-runtime/pkg/cache/internal/informers_map.go +++ b/vendor/sigs.k8s.io/controller-runtime/pkg/cache/internal/informers_map.go @@ -52,6 +52,7 @@ func newSpecificInformersMap(config *rest.Config, resync time.Duration, namespace string, selectors SelectorsByGVK, + disableDeepCopy DisableDeepCopyByGVK, createListWatcher createListWatcherFunc) *specificInformersMap { ip := &specificInformersMap{ config: config, @@ -65,6 +66,7 @@ func newSpecificInformersMap(config *rest.Config, createListWatcher: createListWatcher, namespace: namespace, selectors: selectors, + disableDeepCopy: disableDeepCopy, } return ip } @@ -129,6 +131,9 @@ type specificInformersMap struct { // selectors are the label or field selectors that will be added to the // ListWatch ListOptions. selectors SelectorsByGVK + + // disableDeepCopy indicates not to deep copy objects during get or list objects. + disableDeepCopy DisableDeepCopyByGVK } // Start calls Run on each of the informers and sets started to true. Blocks on the context. @@ -234,7 +239,12 @@ func (ip *specificInformersMap) addInformerToMap(gvk schema.GroupVersionKind, ob i := &MapEntry{ Informer: ni, - Reader: CacheReader{indexer: ni.GetIndexer(), groupVersionKind: gvk, scopeName: rm.Scope.Name()}, + Reader: CacheReader{ + indexer: ni.GetIndexer(), + groupVersionKind: gvk, + scopeName: rm.Scope.Name(), + disableDeepCopy: ip.disableDeepCopy.IsDisabled(gvk), + }, } ip.informersByGVK[gvk] = i @@ -274,8 +284,9 @@ func createStructuredListWatch(gvk schema.GroupVersionKind, ip *specificInformer ListFunc: func(opts metav1.ListOptions) (runtime.Object, error) { ip.selectors[gvk].ApplyToList(&opts) res := listObj.DeepCopyObject() - isNamespaceScoped := ip.namespace != "" && mapping.Scope.Name() != meta.RESTScopeNameRoot - err := client.Get().NamespaceIfScoped(ip.namespace, isNamespaceScoped).Resource(mapping.Resource.Resource).VersionedParams(&opts, ip.paramCodec).Do(ctx).Into(res) + namespace := restrictNamespaceBySelector(ip.namespace, ip.selectors[gvk]) + isNamespaceScoped := namespace != "" && mapping.Scope.Name() != meta.RESTScopeNameRoot + err := client.Get().NamespaceIfScoped(namespace, isNamespaceScoped).Resource(mapping.Resource.Resource).VersionedParams(&opts, ip.paramCodec).Do(ctx).Into(res) return res, err }, // Setup the watch function @@ -283,8 +294,9 @@ func createStructuredListWatch(gvk schema.GroupVersionKind, ip *specificInformer ip.selectors[gvk].ApplyToList(&opts) // Watch needs to be set to true separately opts.Watch = true - isNamespaceScoped := ip.namespace != "" && mapping.Scope.Name() != meta.RESTScopeNameRoot - return client.Get().NamespaceIfScoped(ip.namespace, isNamespaceScoped).Resource(mapping.Resource.Resource).VersionedParams(&opts, ip.paramCodec).Watch(ctx) + namespace := restrictNamespaceBySelector(ip.namespace, ip.selectors[gvk]) + isNamespaceScoped := namespace != "" && mapping.Scope.Name() != meta.RESTScopeNameRoot + return client.Get().NamespaceIfScoped(namespace, isNamespaceScoped).Resource(mapping.Resource.Resource).VersionedParams(&opts, ip.paramCodec).Watch(ctx) }, }, nil } @@ -313,8 +325,9 @@ func createUnstructuredListWatch(gvk schema.GroupVersionKind, ip *specificInform return &cache.ListWatch{ ListFunc: func(opts metav1.ListOptions) (runtime.Object, error) { ip.selectors[gvk].ApplyToList(&opts) - if ip.namespace != "" && mapping.Scope.Name() != meta.RESTScopeNameRoot { - return dynamicClient.Resource(mapping.Resource).Namespace(ip.namespace).List(ctx, opts) + namespace := restrictNamespaceBySelector(ip.namespace, ip.selectors[gvk]) + if namespace != "" && mapping.Scope.Name() != meta.RESTScopeNameRoot { + return dynamicClient.Resource(mapping.Resource).Namespace(namespace).List(ctx, opts) } return dynamicClient.Resource(mapping.Resource).List(ctx, opts) }, @@ -323,8 +336,9 @@ func createUnstructuredListWatch(gvk schema.GroupVersionKind, ip *specificInform ip.selectors[gvk].ApplyToList(&opts) // Watch needs to be set to true separately opts.Watch = true - if ip.namespace != "" && mapping.Scope.Name() != meta.RESTScopeNameRoot { - return dynamicClient.Resource(mapping.Resource).Namespace(ip.namespace).Watch(ctx, opts) + namespace := restrictNamespaceBySelector(ip.namespace, ip.selectors[gvk]) + if namespace != "" && mapping.Scope.Name() != meta.RESTScopeNameRoot { + return dynamicClient.Resource(mapping.Resource).Namespace(namespace).Watch(ctx, opts) } return dynamicClient.Resource(mapping.Resource).Watch(ctx, opts) }, @@ -358,8 +372,9 @@ func createMetadataListWatch(gvk schema.GroupVersionKind, ip *specificInformersM return &cache.ListWatch{ ListFunc: func(opts metav1.ListOptions) (runtime.Object, error) { ip.selectors[gvk].ApplyToList(&opts) - if ip.namespace != "" && mapping.Scope.Name() != meta.RESTScopeNameRoot { - return client.Resource(mapping.Resource).Namespace(ip.namespace).List(ctx, opts) + namespace := restrictNamespaceBySelector(ip.namespace, ip.selectors[gvk]) + if namespace != "" && mapping.Scope.Name() != meta.RESTScopeNameRoot { + return client.Resource(mapping.Resource).Namespace(namespace).List(ctx, opts) } return client.Resource(mapping.Resource).List(ctx, opts) }, @@ -368,8 +383,9 @@ func createMetadataListWatch(gvk schema.GroupVersionKind, ip *specificInformersM ip.selectors[gvk].ApplyToList(&opts) // Watch needs to be set to true separately opts.Watch = true - if ip.namespace != "" && mapping.Scope.Name() != meta.RESTScopeNameRoot { - return client.Resource(mapping.Resource).Namespace(ip.namespace).Watch(ctx, opts) + namespace := restrictNamespaceBySelector(ip.namespace, ip.selectors[gvk]) + if namespace != "" && mapping.Scope.Name() != meta.RESTScopeNameRoot { + return client.Resource(mapping.Resource).Namespace(namespace).Watch(ctx, opts) } return client.Resource(mapping.Resource).Watch(ctx, opts) }, @@ -386,3 +402,23 @@ func resyncPeriod(resync time.Duration) func() time.Duration { return time.Duration(float64(resync.Nanoseconds()) * factor) } } + +// restrictNamespaceBySelector returns either a global restriction for all ListWatches +// if not default/empty, or the namespace that a ListWatch for the specific resource +// is restricted to, based on a specified field selector for metadata.namespace field. +func restrictNamespaceBySelector(namespaceOpt string, s Selector) string { + if namespaceOpt != "" { + // namespace is already restricted + return namespaceOpt + } + fieldSelector := s.Field + if fieldSelector == nil || fieldSelector.Empty() { + return "" + } + // check whether a selector includes the namespace field + value, found := fieldSelector.RequiresExactMatch("metadata.namespace") + if found { + return value + } + return "" +} diff --git a/vendor/sigs.k8s.io/controller-runtime/pkg/client/apiutil/apimachinery.go b/vendor/sigs.k8s.io/controller-runtime/pkg/client/apiutil/apimachinery.go index 2611a20c64..e21eb22389 100644 --- a/vendor/sigs.k8s.io/controller-runtime/pkg/client/apiutil/apimachinery.go +++ b/vendor/sigs.k8s.io/controller-runtime/pkg/client/apiutil/apimachinery.go @@ -21,6 +21,7 @@ package apiutil import ( "fmt" + "reflect" "sync" "k8s.io/apimachinery/pkg/api/meta" @@ -163,9 +164,35 @@ func createRestConfig(gvk schema.GroupVersionKind, isUnstructured bool, baseConf // Use our own custom serializer. cfg.NegotiatedSerializer = serializerWithDecodedGVK{serializer.WithoutConversionCodecFactory{CodecFactory: codecs}} } else { - cfg.NegotiatedSerializer = serializer.WithoutConversionCodecFactory{CodecFactory: codecs} + cfg.NegotiatedSerializer = serializerWithTargetZeroingDecode{NegotiatedSerializer: serializer.WithoutConversionCodecFactory{CodecFactory: codecs}} } } return cfg } + +type serializerWithTargetZeroingDecode struct { + runtime.NegotiatedSerializer +} + +func (s serializerWithTargetZeroingDecode) DecoderToVersion(serializer runtime.Decoder, r runtime.GroupVersioner) runtime.Decoder { + return targetZeroingDecoder{upstream: s.NegotiatedSerializer.DecoderToVersion(serializer, r)} +} + +type targetZeroingDecoder struct { + upstream runtime.Decoder +} + +func (t targetZeroingDecoder) Decode(data []byte, defaults *schema.GroupVersionKind, into runtime.Object) (runtime.Object, *schema.GroupVersionKind, error) { + zero(into) + return t.upstream.Decode(data, defaults, into) +} + +// zero zeros the value of a pointer. +func zero(x interface{}) { + if x == nil { + return + } + res := reflect.ValueOf(x).Elem() + res.Set(reflect.Zero(res.Type())) +} diff --git a/vendor/sigs.k8s.io/controller-runtime/pkg/client/fake/client.go b/vendor/sigs.k8s.io/controller-runtime/pkg/client/fake/client.go index ded8a60d33..f254523b7f 100644 --- a/vendor/sigs.k8s.io/controller-runtime/pkg/client/fake/client.go +++ b/vendor/sigs.k8s.io/controller-runtime/pkg/client/fake/client.go @@ -419,6 +419,28 @@ func (c *fakeClient) Delete(ctx context.Context, obj client.Object, opts ...clie delOptions := client.DeleteOptions{} delOptions.ApplyOptions(opts) + // Check the ResourceVersion if that Precondition was specified. + if delOptions.Preconditions != nil && delOptions.Preconditions.ResourceVersion != nil { + name := accessor.GetName() + dbObj, err := c.tracker.Get(gvr, accessor.GetNamespace(), name) + if err != nil { + return err + } + oldAccessor, err := meta.Accessor(dbObj) + if err != nil { + return err + } + actualRV := oldAccessor.GetResourceVersion() + expectRV := *delOptions.Preconditions.ResourceVersion + if actualRV != expectRV { + msg := fmt.Sprintf( + "the ResourceVersion in the precondition (%s) does not match the ResourceVersion in record (%s). "+ + "The object might have been modified", + expectRV, actualRV) + return apierrors.NewConflict(gvr.GroupResource(), name, errors.New(msg)) + } + } + return c.deleteObject(gvr, accessor) } diff --git a/vendor/sigs.k8s.io/controller-runtime/pkg/client/namespaced_client.go b/vendor/sigs.k8s.io/controller-runtime/pkg/client/namespaced_client.go index d73cc5135a..557598727c 100644 --- a/vendor/sigs.k8s.io/controller-runtime/pkg/client/namespaced_client.go +++ b/vendor/sigs.k8s.io/controller-runtime/pkg/client/namespaced_client.go @@ -18,14 +18,11 @@ package client import ( "context" - "errors" "fmt" "k8s.io/apimachinery/pkg/api/meta" - "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/runtime" - "k8s.io/apimachinery/pkg/runtime/schema" - "sigs.k8s.io/controller-runtime/pkg/client/apiutil" + "sigs.k8s.io/controller-runtime/pkg/internal/objectutil" ) // NewNamespacedClient wraps an existing client enforcing the namespace value. @@ -55,49 +52,9 @@ func (n *namespacedClient) RESTMapper() meta.RESTMapper { return n.client.RESTMapper() } -// isNamespaced returns true if the object is namespace scoped. -// For unstructured objects the gvk is found from the object itself. -// TODO: this is repetitive code. Remove this and use ojectutil.IsNamespaced. -func isNamespaced(c Client, obj runtime.Object) (bool, error) { - var gvk schema.GroupVersionKind - var err error - - _, isUnstructured := obj.(*unstructured.Unstructured) - _, isUnstructuredList := obj.(*unstructured.UnstructuredList) - - isUnstructured = isUnstructured || isUnstructuredList - if isUnstructured { - gvk = obj.GetObjectKind().GroupVersionKind() - } else { - gvk, err = apiutil.GVKForObject(obj, c.Scheme()) - if err != nil { - return false, err - } - } - - gk := schema.GroupKind{ - Group: gvk.Group, - Kind: gvk.Kind, - } - restmapping, err := c.RESTMapper().RESTMapping(gk) - if err != nil { - return false, fmt.Errorf("failed to get restmapping: %w", err) - } - scope := restmapping.Scope.Name() - - if scope == "" { - return false, errors.New("scope cannot be identified, empty scope returned") - } - - if scope != meta.RESTScopeNameRoot { - return true, nil - } - return false, nil -} - // Create implements clinet.Client. func (n *namespacedClient) Create(ctx context.Context, obj Object, opts ...CreateOption) error { - isNamespaceScoped, err := isNamespaced(n.client, obj) + isNamespaceScoped, err := objectutil.IsAPINamespaced(obj, n.Scheme(), n.RESTMapper()) if err != nil { return fmt.Errorf("error finding the scope of the object: %v", err) } @@ -115,7 +72,7 @@ func (n *namespacedClient) Create(ctx context.Context, obj Object, opts ...Creat // Update implements client.Client. func (n *namespacedClient) Update(ctx context.Context, obj Object, opts ...UpdateOption) error { - isNamespaceScoped, err := isNamespaced(n.client, obj) + isNamespaceScoped, err := objectutil.IsAPINamespaced(obj, n.Scheme(), n.RESTMapper()) if err != nil { return fmt.Errorf("error finding the scope of the object: %v", err) } @@ -133,7 +90,7 @@ func (n *namespacedClient) Update(ctx context.Context, obj Object, opts ...Updat // Delete implements client.Client. func (n *namespacedClient) Delete(ctx context.Context, obj Object, opts ...DeleteOption) error { - isNamespaceScoped, err := isNamespaced(n.client, obj) + isNamespaceScoped, err := objectutil.IsAPINamespaced(obj, n.Scheme(), n.RESTMapper()) if err != nil { return fmt.Errorf("error finding the scope of the object: %v", err) } @@ -151,7 +108,7 @@ func (n *namespacedClient) Delete(ctx context.Context, obj Object, opts ...Delet // DeleteAllOf implements client.Client. func (n *namespacedClient) DeleteAllOf(ctx context.Context, obj Object, opts ...DeleteAllOfOption) error { - isNamespaceScoped, err := isNamespaced(n.client, obj) + isNamespaceScoped, err := objectutil.IsAPINamespaced(obj, n.Scheme(), n.RESTMapper()) if err != nil { return fmt.Errorf("error finding the scope of the object: %v", err) } @@ -164,7 +121,7 @@ func (n *namespacedClient) DeleteAllOf(ctx context.Context, obj Object, opts ... // Patch implements client.Client. func (n *namespacedClient) Patch(ctx context.Context, obj Object, patch Patch, opts ...PatchOption) error { - isNamespaceScoped, err := isNamespaced(n.client, obj) + isNamespaceScoped, err := objectutil.IsAPINamespaced(obj, n.Scheme(), n.RESTMapper()) if err != nil { return fmt.Errorf("error finding the scope of the object: %v", err) } @@ -182,7 +139,7 @@ func (n *namespacedClient) Patch(ctx context.Context, obj Object, patch Patch, o // Get implements client.Client. func (n *namespacedClient) Get(ctx context.Context, key ObjectKey, obj Object) error { - isNamespaceScoped, err := isNamespaced(n.client, obj) + isNamespaceScoped, err := objectutil.IsAPINamespaced(obj, n.Scheme(), n.RESTMapper()) if err != nil { return fmt.Errorf("error finding the scope of the object: %v", err) } @@ -219,7 +176,8 @@ type namespacedClientStatusWriter struct { // Update implements client.StatusWriter. func (nsw *namespacedClientStatusWriter) Update(ctx context.Context, obj Object, opts ...UpdateOption) error { - isNamespaceScoped, err := isNamespaced(nsw.namespacedclient, obj) + isNamespaceScoped, err := objectutil.IsAPINamespaced(obj, nsw.namespacedclient.Scheme(), nsw.namespacedclient.RESTMapper()) + if err != nil { return fmt.Errorf("error finding the scope of the object: %v", err) } @@ -237,7 +195,8 @@ func (nsw *namespacedClientStatusWriter) Update(ctx context.Context, obj Object, // Patch implements client.StatusWriter. func (nsw *namespacedClientStatusWriter) Patch(ctx context.Context, obj Object, patch Patch, opts ...PatchOption) error { - isNamespaceScoped, err := isNamespaced(nsw.namespacedclient, obj) + isNamespaceScoped, err := objectutil.IsAPINamespaced(obj, nsw.namespacedclient.Scheme(), nsw.namespacedclient.RESTMapper()) + if err != nil { return fmt.Errorf("error finding the scope of the object: %v", err) } diff --git a/vendor/sigs.k8s.io/controller-runtime/pkg/controller/controller.go b/vendor/sigs.k8s.io/controller-runtime/pkg/controller/controller.go index c9e07562a3..88ba786717 100644 --- a/vendor/sigs.k8s.io/controller-runtime/pkg/controller/controller.go +++ b/vendor/sigs.k8s.io/controller-runtime/pkg/controller/controller.go @@ -52,6 +52,9 @@ type Options struct { // CacheSyncTimeout refers to the time limit set to wait for syncing caches. // Defaults to 2 minutes if not set. CacheSyncTimeout time.Duration + + // RecoverPanic indicates whether the panic caused by reconcile should be recovered. + RecoverPanic bool } // Controller implements a Kubernetes API. A Controller manages a work queue fed reconcile.Requests @@ -133,5 +136,6 @@ func NewUnmanaged(name string, mgr manager.Manager, options Options) (Controller SetFields: mgr.SetFields, Name: name, Log: options.Log.WithName("controller").WithName(name), + RecoverPanic: options.RecoverPanic, }, nil } diff --git a/vendor/sigs.k8s.io/controller-runtime/pkg/controller/controllerutil/controllerutil.go b/vendor/sigs.k8s.io/controller-runtime/pkg/controller/controllerutil/controllerutil.go index 7863c3deec..13f14a7ed3 100644 --- a/vendor/sigs.k8s.io/controller-runtime/pkg/controller/controllerutil/controllerutil.go +++ b/vendor/sigs.k8s.io/controller-runtime/pkg/controller/controllerutil/controllerutil.go @@ -207,7 +207,7 @@ func CreateOrUpdate(ctx context.Context, c client.Client, obj client.Object, f M return OperationResultCreated, nil } - existing := obj.DeepCopyObject() //nolint:ifshort + existing := obj.DeepCopyObject() //nolint if err := mutate(f, key, obj); err != nil { return OperationResultNone, err } diff --git a/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go b/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go index 224d300b89..87431a438f 100644 --- a/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go +++ b/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go @@ -85,6 +85,9 @@ type Controller struct { // Log is used to log messages to users during reconciliation, or for example when a watch is started. Log logr.Logger + + // RecoverPanic indicates whether the panic caused by reconcile should be recovered. + RecoverPanic bool } // watchDescription contains all the information necessary to start a watch. @@ -95,7 +98,17 @@ type watchDescription struct { } // Reconcile implements reconcile.Reconciler. -func (c *Controller) Reconcile(ctx context.Context, req reconcile.Request) (reconcile.Result, error) { +func (c *Controller) Reconcile(ctx context.Context, req reconcile.Request) (_ reconcile.Result, err error) { + if c.RecoverPanic { + defer func() { + if r := recover(); r != nil { + for _, fn := range utilruntime.PanicHandlers { + fn(r) + } + err = fmt.Errorf("panic: %v [recovered]", r) + } + }() + } log := c.Log.WithValues("name", req.Name, "namespace", req.Namespace) ctx = logf.IntoContext(ctx, log) return c.Do.Reconcile(ctx, req) @@ -295,7 +308,7 @@ func (c *Controller) reconcileHandler(ctx context.Context, obj interface{}) { // RunInformersAndControllers the syncHandler, passing it the Namespace/Name string of the // resource to be synced. - result, err := c.Do.Reconcile(ctx, req) + result, err := c.Reconcile(ctx, req) switch { case err != nil: c.Queue.AddRateLimited(req) diff --git a/vendor/sigs.k8s.io/controller-runtime/pkg/internal/recorder/recorder.go b/vendor/sigs.k8s.io/controller-runtime/pkg/internal/recorder/recorder.go index cb8b7b6d63..46cc1714bd 100644 --- a/vendor/sigs.k8s.io/controller-runtime/pkg/internal/recorder/recorder.go +++ b/vendor/sigs.k8s.io/controller-runtime/pkg/internal/recorder/recorder.go @@ -24,8 +24,7 @@ import ( "github.com/go-logr/logr" corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/runtime" - "k8s.io/client-go/kubernetes" - typedcorev1 "k8s.io/client-go/kubernetes/typed/core/v1" + corev1client "k8s.io/client-go/kubernetes/typed/core/v1" "k8s.io/client-go/rest" "k8s.io/client-go/tools/record" ) @@ -45,7 +44,7 @@ type Provider struct { scheme *runtime.Scheme // logger is the logger to use when logging diagnostic event info logger logr.Logger - evtClient typedcorev1.EventInterface + evtClient corev1client.EventInterface makeBroadcaster EventBroadcasterProducer broadcasterOnce sync.Once @@ -98,7 +97,7 @@ func (p *Provider) getBroadcaster() record.EventBroadcaster { p.broadcasterOnce.Do(func() { broadcaster, stop := p.makeBroadcaster() - broadcaster.StartRecordingToSink(&typedcorev1.EventSinkImpl{Interface: p.evtClient}) + broadcaster.StartRecordingToSink(&corev1client.EventSinkImpl{Interface: p.evtClient}) broadcaster.StartEventWatcher( func(e *corev1.Event) { p.logger.V(1).Info(e.Type, "object", e.InvolvedObject, "reason", e.Reason, "message", e.Message) @@ -112,12 +111,12 @@ func (p *Provider) getBroadcaster() record.EventBroadcaster { // NewProvider create a new Provider instance. func NewProvider(config *rest.Config, scheme *runtime.Scheme, logger logr.Logger, makeBroadcaster EventBroadcasterProducer) (*Provider, error) { - clientSet, err := kubernetes.NewForConfig(config) + corev1Client, err := corev1client.NewForConfig(config) if err != nil { - return nil, fmt.Errorf("failed to init clientSet: %w", err) + return nil, fmt.Errorf("failed to init client: %w", err) } - p := &Provider{scheme: scheme, logger: logger, makeBroadcaster: makeBroadcaster, evtClient: clientSet.CoreV1().Events("")} + p := &Provider{scheme: scheme, logger: logger, makeBroadcaster: makeBroadcaster, evtClient: corev1Client.Events("")} return p, nil } diff --git a/vendor/sigs.k8s.io/controller-runtime/pkg/leaderelection/leader_election.go b/vendor/sigs.k8s.io/controller-runtime/pkg/leaderelection/leader_election.go index 55fd228690..3dedd462f3 100644 --- a/vendor/sigs.k8s.io/controller-runtime/pkg/leaderelection/leader_election.go +++ b/vendor/sigs.k8s.io/controller-runtime/pkg/leaderelection/leader_election.go @@ -23,7 +23,8 @@ import ( "os" "k8s.io/apimachinery/pkg/util/uuid" - "k8s.io/client-go/kubernetes" + coordinationv1client "k8s.io/client-go/kubernetes/typed/coordination/v1" + corev1client "k8s.io/client-go/kubernetes/typed/core/v1" "k8s.io/client-go/rest" "k8s.io/client-go/tools/leaderelection/resourcelock" "sigs.k8s.io/controller-runtime/pkg/recorder" @@ -84,8 +85,14 @@ func NewResourceLock(config *rest.Config, recorderProvider recorder.Provider, op } id = id + "_" + string(uuid.NewUUID()) - // Construct client for leader election - client, err := kubernetes.NewForConfig(rest.AddUserAgent(config, "leader-election")) + // Construct clients for leader election + rest.AddUserAgent(config, "leader-election") + corev1Client, err := corev1client.NewForConfig(config) + if err != nil { + return nil, err + } + + coordinationClient, err := coordinationv1client.NewForConfig(config) if err != nil { return nil, err } @@ -93,8 +100,8 @@ func NewResourceLock(config *rest.Config, recorderProvider recorder.Provider, op return resourcelock.New(options.LeaderElectionResourceLock, options.LeaderElectionNamespace, options.LeaderElectionID, - client.CoreV1(), - client.CoordinationV1(), + corev1Client, + coordinationClient, resourcelock.ResourceLockConfig{ Identity: id, EventRecorder: recorderProvider.GetEventRecorderFor(id), diff --git a/vendor/sigs.k8s.io/controller-runtime/pkg/log/deleg.go b/vendor/sigs.k8s.io/controller-runtime/pkg/log/deleg.go index bbd9c9c756..9d73947dac 100644 --- a/vendor/sigs.k8s.io/controller-runtime/pkg/log/deleg.go +++ b/vendor/sigs.k8s.io/controller-runtime/pkg/log/deleg.go @@ -76,7 +76,7 @@ func (p *loggerPromise) V(l *DelegatingLogger, level int) *loggerPromise { // Fulfill instantiates the Logger with the provided logger. func (p *loggerPromise) Fulfill(parentLogger logr.Logger) { - var logger = parentLogger + logger := logr.WithCallDepth(parentLogger, 1) if p.name != nil { logger = logger.WithName(*p.name) } diff --git a/vendor/sigs.k8s.io/controller-runtime/pkg/manager/internal.go b/vendor/sigs.k8s.io/controller-runtime/pkg/manager/internal.go index 5f85e10c90..7c25bd3c60 100644 --- a/vendor/sigs.k8s.io/controller-runtime/pkg/manager/internal.go +++ b/vendor/sigs.k8s.io/controller-runtime/pkg/manager/internal.go @@ -47,7 +47,7 @@ import ( ) const ( - // Values taken from: https://github.com/kubernetes/apiserver/blob/master/pkg/apis/config/v1alpha1/defaults.go + // Values taken from: https://github.com/kubernetes/component-base/blob/master/config/v1alpha1/defaults.go defaultLeaseDuration = 15 * time.Second defaultRenewDeadline = 10 * time.Second defaultRetryPeriod = 2 * time.Second diff --git a/vendor/sigs.k8s.io/controller-runtime/pkg/manager/manager.go b/vendor/sigs.k8s.io/controller-runtime/pkg/manager/manager.go index 903e3e47f9..2d2733f0a6 100644 --- a/vendor/sigs.k8s.io/controller-runtime/pkg/manager/manager.go +++ b/vendor/sigs.k8s.io/controller-runtime/pkg/manager/manager.go @@ -37,9 +37,9 @@ import ( "sigs.k8s.io/controller-runtime/pkg/config" "sigs.k8s.io/controller-runtime/pkg/config/v1alpha1" "sigs.k8s.io/controller-runtime/pkg/healthz" - logf "sigs.k8s.io/controller-runtime/pkg/internal/log" intrec "sigs.k8s.io/controller-runtime/pkg/internal/recorder" "sigs.k8s.io/controller-runtime/pkg/leaderelection" + "sigs.k8s.io/controller-runtime/pkg/log" "sigs.k8s.io/controller-runtime/pkg/metrics" "sigs.k8s.io/controller-runtime/pkg/recorder" "sigs.k8s.io/controller-runtime/pkg/runtime/inject" @@ -572,7 +572,7 @@ func setOptionsDefaults(options Options) Options { } if options.Logger == nil { - options.Logger = logf.RuntimeLog.WithName("manager") + options.Logger = log.Log } return options diff --git a/vendor/sigs.k8s.io/controller-runtime/pkg/metrics/client_go_adapter.go b/vendor/sigs.k8s.io/controller-runtime/pkg/metrics/client_go_adapter.go index 90754269dd..d32ce25348 100644 --- a/vendor/sigs.k8s.io/controller-runtime/pkg/metrics/client_go_adapter.go +++ b/vendor/sigs.k8s.io/controller-runtime/pkg/metrics/client_go_adapter.go @@ -52,7 +52,24 @@ const ( var ( // client metrics. - requestLatency = prometheus.NewHistogramVec(prometheus.HistogramOpts{ + + // RequestLatency reports the request latency in seconds per verb/URL. + // Deprecated: This metric is deprecated for removal in a future release: using the URL as a + // dimension results in cardinality explosion for some consumers. It was deprecated upstream + // in k8s v1.14 and hidden in v1.17 via https://github.com/kubernetes/kubernetes/pull/83836. + // It is not registered by default. To register: + // import ( + // clientmetrics "k8s.io/client-go/tools/metrics" + // clmetrics "sigs.k8s.io/controller-runtime/metrics" + // ) + // + // func init() { + // clmetrics.Registry.MustRegister(clmetrics.RequestLatency) + // clientmetrics.Register(clientmetrics.RegisterOpts{ + // RequestLatency: clmetrics.LatencyAdapter + // }) + // } + RequestLatency = prometheus.NewHistogramVec(prometheus.HistogramOpts{ Subsystem: RestClientSubsystem, Name: LatencyKey, Help: "Request latency in seconds. Broken down by verb and URL.", @@ -127,13 +144,11 @@ func init() { // registerClientMetrics sets up the client latency metrics from client-go. func registerClientMetrics() { // register the metrics with our registry - Registry.MustRegister(requestLatency) Registry.MustRegister(requestResult) // register the metrics with client-go clientmetrics.Register(clientmetrics.RegisterOpts{ - RequestLatency: &latencyAdapter{metric: requestLatency}, - RequestResult: &resultAdapter{metric: requestResult}, + RequestResult: &resultAdapter{metric: requestResult}, }) } @@ -159,11 +174,13 @@ func registerReflectorMetrics() { // copied (more-or-less directly) from k8s.io/kubernetes setup code // (which isn't anywhere in an easily-importable place). -type latencyAdapter struct { +// LatencyAdapter implements LatencyMetric. +type LatencyAdapter struct { metric *prometheus.HistogramVec } -func (l *latencyAdapter) Observe(_ context.Context, verb string, u url.URL, latency time.Duration) { +// Observe increments the request latency metric for the given verb/URL. +func (l *LatencyAdapter) Observe(_ context.Context, verb string, u url.URL, latency time.Duration) { l.metric.WithLabelValues(verb, u.String()).Observe(latency.Seconds()) } diff --git a/vendor/sigs.k8s.io/controller-runtime/pkg/webhook/conversion/conversion.go b/vendor/sigs.k8s.io/controller-runtime/pkg/webhook/conversion/conversion.go index af9e673ccb..a5b7a282ce 100644 --- a/vendor/sigs.k8s.io/controller-runtime/pkg/webhook/conversion/conversion.go +++ b/vendor/sigs.k8s.io/controller-runtime/pkg/webhook/conversion/conversion.go @@ -26,7 +26,7 @@ import ( "fmt" "net/http" - apix "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" + apix "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" "k8s.io/apimachinery/pkg/api/meta" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" diff --git a/vendor/sigs.k8s.io/controller-runtime/pkg/webhook/server.go b/vendor/sigs.k8s.io/controller-runtime/pkg/webhook/server.go index 99b6ae9eb4..d2338d0b77 100644 --- a/vendor/sigs.k8s.io/controller-runtime/pkg/webhook/server.go +++ b/vendor/sigs.k8s.io/controller-runtime/pkg/webhook/server.go @@ -28,10 +28,12 @@ import ( "path/filepath" "strconv" "sync" + "time" "k8s.io/apimachinery/pkg/runtime" kscheme "k8s.io/client-go/kubernetes/scheme" "sigs.k8s.io/controller-runtime/pkg/certwatcher" + "sigs.k8s.io/controller-runtime/pkg/healthz" "sigs.k8s.io/controller-runtime/pkg/runtime/inject" "sigs.k8s.io/controller-runtime/pkg/webhook/internal/metrics" ) @@ -87,6 +89,10 @@ type Server struct { // defaultingOnce ensures that the default fields are only ever set once. defaultingOnce sync.Once + // started is set to true immediately before the server is started + // and thus can be used to check if the server has been started + started bool + // mu protects access to the webhook map & setFields for Start, Register, etc mu sync.Mutex } @@ -272,6 +278,9 @@ func (s *Server) Start(ctx context.Context) error { close(idleConnsClosed) }() + s.mu.Lock() + s.started = true + s.mu.Unlock() if err := srv.Serve(listener); err != nil && err != http.ErrServerClosed { return err } @@ -280,6 +289,34 @@ func (s *Server) Start(ctx context.Context) error { return nil } +// StartedChecker returns an healthz.Checker which is healthy after the +// server has been started. +func (s *Server) StartedChecker() healthz.Checker { + config := &tls.Config{ + InsecureSkipVerify: true, // nolint:gosec // config is used to connect to our own webhook port. + } + return func(req *http.Request) error { + s.mu.Lock() + defer s.mu.Unlock() + + if !s.started { + return fmt.Errorf("webhook server has not been started yet") + } + + d := &net.Dialer{Timeout: 10 * time.Second} + conn, err := tls.DialWithDialer(d, "tcp", net.JoinHostPort(s.Host, strconv.Itoa(s.Port)), config) + if err != nil { + return fmt.Errorf("webhook server is not reachable: %v", err) + } + + if err := conn.Close(); err != nil { + return fmt.Errorf("webhook server is not reachable: closing connection: %v", err) + } + + return nil + } +} + // InjectFunc injects the field setter into the server. func (s *Server) InjectFunc(f inject.Func) error { s.setFields = f diff --git a/vendor/sigs.k8s.io/controller-tools/pkg/loader/loader.go b/vendor/sigs.k8s.io/controller-tools/pkg/loader/loader.go index cb34baf234..35c2713357 100644 --- a/vendor/sigs.k8s.io/controller-tools/pkg/loader/loader.go +++ b/vendor/sigs.k8s.io/controller-tools/pkg/loader/loader.go @@ -249,7 +249,7 @@ func (l *loader) typeCheck(pkg *Package) { // it's possible to have a call to check in parallel to a call to this // if one package in the package graph gets its dependency filtered out, - // but another doesn't (so one wants a "dummy" package here, and another + // but another doesn't (so one wants a "placeholder" package here, and another // wants the full check). // // Thus, we need to lock here (at least for the time being) to avoid From f610b098589711cea13f35df58c6800e2d0e475b Mon Sep 17 00:00:00 2001 From: Ankita Thomas Date: Thu, 9 Sep 2021 17:02:35 -0400 Subject: [PATCH 08/15] chore: update manifests --- manifests/0000_50_olm_00-catalogsources.crd.yaml | 2 +- manifests/0000_50_olm_00-clusterserviceversions.crd.yaml | 2 +- manifests/0000_50_olm_00-installplans.crd.yaml | 2 +- manifests/0000_50_olm_00-operatorconditions.crd.yaml | 2 +- manifests/0000_50_olm_00-operatorgroups.crd.yaml | 2 +- manifests/0000_50_olm_00-operators.crd.yaml | 2 +- manifests/0000_50_olm_00-subscriptions.crd.yaml | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/manifests/0000_50_olm_00-catalogsources.crd.yaml b/manifests/0000_50_olm_00-catalogsources.crd.yaml index 588c39e908..10f0d5106e 100644 --- a/manifests/0000_50_olm_00-catalogsources.crd.yaml +++ b/manifests/0000_50_olm_00-catalogsources.crd.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.6.1 + controller-gen.kubebuilder.io/version: v0.6.2 include.release.openshift.io/ibm-cloud-managed: "true" include.release.openshift.io/self-managed-high-availability: "true" include.release.openshift.io/single-node-developer: "true" diff --git a/manifests/0000_50_olm_00-clusterserviceversions.crd.yaml b/manifests/0000_50_olm_00-clusterserviceversions.crd.yaml index 0ee2f89d5c..e00c809741 100644 --- a/manifests/0000_50_olm_00-clusterserviceversions.crd.yaml +++ b/manifests/0000_50_olm_00-clusterserviceversions.crd.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.6.1 + controller-gen.kubebuilder.io/version: v0.6.2 include.release.openshift.io/ibm-cloud-managed: "true" include.release.openshift.io/self-managed-high-availability: "true" include.release.openshift.io/single-node-developer: "true" diff --git a/manifests/0000_50_olm_00-installplans.crd.yaml b/manifests/0000_50_olm_00-installplans.crd.yaml index 72b3fa5f9c..caca9039dd 100644 --- a/manifests/0000_50_olm_00-installplans.crd.yaml +++ b/manifests/0000_50_olm_00-installplans.crd.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.6.1 + controller-gen.kubebuilder.io/version: v0.6.2 include.release.openshift.io/ibm-cloud-managed: "true" include.release.openshift.io/self-managed-high-availability: "true" include.release.openshift.io/single-node-developer: "true" diff --git a/manifests/0000_50_olm_00-operatorconditions.crd.yaml b/manifests/0000_50_olm_00-operatorconditions.crd.yaml index 3abef967a6..5a494000ac 100644 --- a/manifests/0000_50_olm_00-operatorconditions.crd.yaml +++ b/manifests/0000_50_olm_00-operatorconditions.crd.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.6.1 + controller-gen.kubebuilder.io/version: v0.6.2 include.release.openshift.io/ibm-cloud-managed: "true" include.release.openshift.io/self-managed-high-availability: "true" include.release.openshift.io/single-node-developer: "true" diff --git a/manifests/0000_50_olm_00-operatorgroups.crd.yaml b/manifests/0000_50_olm_00-operatorgroups.crd.yaml index 14e09284aa..0a1c2d1090 100644 --- a/manifests/0000_50_olm_00-operatorgroups.crd.yaml +++ b/manifests/0000_50_olm_00-operatorgroups.crd.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.6.1 + controller-gen.kubebuilder.io/version: v0.6.2 include.release.openshift.io/ibm-cloud-managed: "true" include.release.openshift.io/self-managed-high-availability: "true" include.release.openshift.io/single-node-developer: "true" diff --git a/manifests/0000_50_olm_00-operators.crd.yaml b/manifests/0000_50_olm_00-operators.crd.yaml index b33ab1a9ee..05a7736e18 100644 --- a/manifests/0000_50_olm_00-operators.crd.yaml +++ b/manifests/0000_50_olm_00-operators.crd.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.6.1 + controller-gen.kubebuilder.io/version: v0.6.2 include.release.openshift.io/ibm-cloud-managed: "true" include.release.openshift.io/self-managed-high-availability: "true" include.release.openshift.io/single-node-developer: "true" diff --git a/manifests/0000_50_olm_00-subscriptions.crd.yaml b/manifests/0000_50_olm_00-subscriptions.crd.yaml index d619bbfbef..201fa91f60 100644 --- a/manifests/0000_50_olm_00-subscriptions.crd.yaml +++ b/manifests/0000_50_olm_00-subscriptions.crd.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.6.1 + controller-gen.kubebuilder.io/version: v0.6.2 include.release.openshift.io/ibm-cloud-managed: "true" include.release.openshift.io/self-managed-high-availability: "true" include.release.openshift.io/single-node-developer: "true" From f1f6a3343b2091572149b7ca29e51ffecfa575ab Mon Sep 17 00:00:00 2001 From: Tim Flannagan Date: Wed, 8 Sep 2021 13:15:22 -0400 Subject: [PATCH 09/15] .github/workflows: Separate out the e2e jobs into workflows (#2158) * .github/workflows: Separate out the e2e jobs into workflows Update the .github/workflows/test-scripts.yml GH action workflow and move all the jobs listed there into separate workflows. This allows us to retest a single workflow at a time as a workaround to GH not allowing you to retest individual jobs in a workflow. Signed-off-by: timflannagan * .github/workflows: Add the 'ci' workflow name to all e2e-related jobs Signed-off-by: timflannagan Upstream-repository: operator-lifecycle-manager Upstream-commit: 966ce43d5bde93848c45e1aaf4c6a5c110c37740 --- .../.github/workflows/build.yml | 19 +++++++ .../.github/workflows/e2e-kind.yml | 28 +++++++++++ .../.github/workflows/e2e-minikube.yml | 27 ++++++++++ .../.github/workflows/e2e-tests.yml | 4 +- .../.github/workflows/test-scripts.yml | 49 ------------------- .../.github/workflows/unit.yml | 2 +- .../.github/workflows/verify.yml | 2 +- 7 files changed, 78 insertions(+), 53 deletions(-) create mode 100644 staging/operator-lifecycle-manager/.github/workflows/build.yml create mode 100644 staging/operator-lifecycle-manager/.github/workflows/e2e-kind.yml create mode 100644 staging/operator-lifecycle-manager/.github/workflows/e2e-minikube.yml delete mode 100644 staging/operator-lifecycle-manager/.github/workflows/test-scripts.yml diff --git a/staging/operator-lifecycle-manager/.github/workflows/build.yml b/staging/operator-lifecycle-manager/.github/workflows/build.yml new file mode 100644 index 0000000000..e8c024b187 --- /dev/null +++ b/staging/operator-lifecycle-manager/.github/workflows/build.yml @@ -0,0 +1,19 @@ +name: ci +on: + pull_request: + paths: + - '**' + - '!doc/contributors/**' + - '!doc/design/**' +jobs: + image: + runs-on: ubuntu-latest + steps: + - name: Check out the repo + uses: actions/checkout@v2 + - name: Build the container image + uses: docker/build-push-action@v1 + with: + repository: operator-framework/olm + dockerfile: ./Dockerfile + push: false diff --git a/staging/operator-lifecycle-manager/.github/workflows/e2e-kind.yml b/staging/operator-lifecycle-manager/.github/workflows/e2e-kind.yml new file mode 100644 index 0000000000..a38cf6d188 --- /dev/null +++ b/staging/operator-lifecycle-manager/.github/workflows/e2e-kind.yml @@ -0,0 +1,28 @@ +name: ci +on: + pull_request: + paths: + - '**' + - '!doc/contributors/**' + - '!doc/design/**' + schedule: + - cron: '0 0 * * *' # daily to pick up releases +jobs: + e2e-kind: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-go@v2 + with: + go-version: '~1.16' + - name: Install kind + run: | + curl -sLo kind "$(curl -sL https://api.github.com/repos/kubernetes-sigs/kind/releases/latest | jq -r '[.assets[] | select(.name == "kind-linux-amd64")] | first | .browser_download_url')" + chmod +x kind + sudo mv kind /bin/ + - name: Create kind cluster + run: | + kind create cluster + kind export kubeconfig + - name: Run e2e tests + run: make run-local diff --git a/staging/operator-lifecycle-manager/.github/workflows/e2e-minikube.yml b/staging/operator-lifecycle-manager/.github/workflows/e2e-minikube.yml new file mode 100644 index 0000000000..db344264c3 --- /dev/null +++ b/staging/operator-lifecycle-manager/.github/workflows/e2e-minikube.yml @@ -0,0 +1,27 @@ +name: ci +on: + pull_request: + paths: + - '**' + - '!doc/contributors/**' + - '!doc/design/**' + schedule: + - cron: '0 0 * * *' # daily to pick up releases +jobs: + e2e-minikube: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-go@v2 + with: + go-version: '~1.16' + - name: Install minikube + run: | + sudo apt-get install conntrack + curl -sLo minikube "$(curl -sL https://api.github.com/repos/kubernetes/minikube/releases/latest | jq -r '[.assets[] | select(.name == "minikube-linux-amd64")] | first | .browser_download_url')" + chmod +x minikube + sudo mv minikube /bin/ + - name: Setup minikube + run: minikube config set vm-driver docker + - name: Run e2e tests + run: make run-local diff --git a/staging/operator-lifecycle-manager/.github/workflows/e2e-tests.yml b/staging/operator-lifecycle-manager/.github/workflows/e2e-tests.yml index 18b857ae66..da7af5b751 100644 --- a/staging/operator-lifecycle-manager/.github/workflows/e2e-tests.yml +++ b/staging/operator-lifecycle-manager/.github/workflows/e2e-tests.yml @@ -1,4 +1,4 @@ -name: e2e-tests +name: ci on: push: branches: @@ -8,7 +8,7 @@ on: - '**' - '!doc/**' jobs: - run-e2e-tests: + e2e-tests: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 diff --git a/staging/operator-lifecycle-manager/.github/workflows/test-scripts.yml b/staging/operator-lifecycle-manager/.github/workflows/test-scripts.yml deleted file mode 100644 index 1c18d7a9c9..0000000000 --- a/staging/operator-lifecycle-manager/.github/workflows/test-scripts.yml +++ /dev/null @@ -1,49 +0,0 @@ -name: upstream-tests -on: - pull_request: - paths: - - '**' - - '!doc/contributors/**' - - '!doc/design/**' - schedule: - - cron: '0 0 * * *' # daily to pick up releases -jobs: - image-build: - runs-on: ubuntu-latest - steps: - - name: Check out the repo - uses: actions/checkout@v2 - - name: Build the container image - uses: docker/build-push-action@v1 - with: - repository: operator-framework/olm - dockerfile: ./Dockerfile - push: false - run-local-minikube: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-go@v2 - with: - go-version: '~1.16' - - run: | - sudo apt-get install conntrack - curl -sLo minikube "$(curl -sL https://api.github.com/repos/kubernetes/minikube/releases/latest | jq -r '[.assets[] | select(.name == "minikube-linux-amd64")] | first | .browser_download_url')" - chmod +x minikube - sudo mv minikube /bin/ - minikube config set vm-driver docker - make run-local - run-local-kind: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-go@v2 - with: - go-version: '~1.16' - - run: | - curl -sLo kind "$(curl -sL https://api.github.com/repos/kubernetes-sigs/kind/releases/latest | jq -r '[.assets[] | select(.name == "kind-linux-amd64")] | first | .browser_download_url')" - chmod +x kind - sudo mv kind /bin/ - kind create cluster - kind export kubeconfig - make run-local diff --git a/staging/operator-lifecycle-manager/.github/workflows/unit.yml b/staging/operator-lifecycle-manager/.github/workflows/unit.yml index ff854dee6d..31c84356b1 100644 --- a/staging/operator-lifecycle-manager/.github/workflows/unit.yml +++ b/staging/operator-lifecycle-manager/.github/workflows/unit.yml @@ -1,4 +1,4 @@ -name: unit +name: ci on: push: branches: diff --git a/staging/operator-lifecycle-manager/.github/workflows/verify.yml b/staging/operator-lifecycle-manager/.github/workflows/verify.yml index c2351b4622..eb3550ac5b 100644 --- a/staging/operator-lifecycle-manager/.github/workflows/verify.yml +++ b/staging/operator-lifecycle-manager/.github/workflows/verify.yml @@ -1,4 +1,4 @@ -name: verify +name: ci on: push: branches: From d7faee734a3e481f55b5d803d4c4c7f8646fc191 Mon Sep 17 00:00:00 2001 From: Nick Hale Date: Wed, 8 Sep 2021 16:12:23 -0400 Subject: [PATCH 10/15] doc(readme): add chat badge (#2345) Add a badge that links to the olm-dev channel in the Kubernetes Slack instance. Signed-off-by: Nick Hale Upstream-repository: operator-lifecycle-manager Upstream-commit: 94af95a7580f45f6a0b45bd12d5aa37649b74a47 --- staging/operator-lifecycle-manager/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/staging/operator-lifecycle-manager/README.md b/staging/operator-lifecycle-manager/README.md index 12c246d81f..dbd8dc9134 100644 --- a/staging/operator-lifecycle-manager/README.md +++ b/staging/operator-lifecycle-manager/README.md @@ -3,6 +3,7 @@ [![Container Repository on Quay.io](https://quay.io/repository/operator-framework/olm/status "Container Repository on Quay.io")](https://quay.io/repository/operator-framework/olm) [![License](http://img.shields.io/:license-apache-blue.svg)](http://www.apache.org/licenses/LICENSE-2.0.html) [![Go Report Card](https://goreportcard.com/badge/github.com/operator-framework/operator-lifecycle-manager)](https://goreportcard.com/report/github.com/operator-framework/operator-lifecycle-manager) +[![Slack Channel](https://img.shields.io/badge/chat-4A154B?logo=slack&logoColor=white "Slack Channel")](https://kubernetes.slack.com/archives/C0181L6JYQ2) ## Documentation @@ -191,4 +192,4 @@ Operator Lifecycle Manager is under Apache 2.0 license. See the [LICENSE][licens [operator-framework-meetings]: https://github.com/operator-framework/community#meetings [contributor-documentation]: https://olm.operatorframework.io/docs/contribution-guidelines/ [olm-getting-started]: https://olm.operatorframework.io/docs/getting-started/ -[installation-guide]: doc/install/install.md \ No newline at end of file +[installation-guide]: doc/install/install.md From b3bc3eba329bcaff6772fa2e9d35c35fc9261a8e Mon Sep 17 00:00:00 2001 From: Tim Flannagan Date: Wed, 8 Sep 2021 17:34:26 -0400 Subject: [PATCH 11/15] Bump OLM_VERSION to 0.19.0 (#2348) Signed-off-by: timflannagan Upstream-repository: operator-lifecycle-manager Upstream-commit: 864b58ddc63742b53ecdf21f463e13ac2ce9de7e --- staging/operator-lifecycle-manager/OLM_VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/staging/operator-lifecycle-manager/OLM_VERSION b/staging/operator-lifecycle-manager/OLM_VERSION index 267d7e011f..1cf0537c34 100644 --- a/staging/operator-lifecycle-manager/OLM_VERSION +++ b/staging/operator-lifecycle-manager/OLM_VERSION @@ -1 +1 @@ -0.18.3 +0.19.0 From e3dc18c5c2218b1dd4fa02fea27ae1c83373aef5 Mon Sep 17 00:00:00 2001 From: Ankita Thomas Date: Thu, 9 Sep 2021 17:16:52 -0400 Subject: [PATCH 12/15] chore: update manifests --- pkg/manifests/csv.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/manifests/csv.yaml b/pkg/manifests/csv.yaml index 737a295527..368b6dfcc7 100644 --- a/pkg/manifests/csv.yaml +++ b/pkg/manifests/csv.yaml @@ -5,7 +5,7 @@ metadata: name: packageserver namespace: openshift-operator-lifecycle-manager labels: - olm.version: 0.18.3 + olm.version: 0.19.0 olm.clusteroperator.name: operator-lifecycle-manager-packageserver annotations: include.release.openshift.io/single-node-developer: "true" @@ -152,7 +152,7 @@ spec: - packageserver topologyKey: "kubernetes.io/hostname" maturity: alpha - version: 0.18.3 + version: 0.19.0 apiservicedefinitions: owned: - group: packages.operators.coreos.com From b1e86958c5da78f487283db0e0f6f3300843e437 Mon Sep 17 00:00:00 2001 From: Eric Stroczynski Date: Wed, 8 Sep 2021 15:45:26 -0700 Subject: [PATCH 13/15] fix(release): upgrade goreleaser so script requests correct checksum file (#773) Signed-off-by: Eric Stroczynski Upstream-repository: operator-registry Upstream-commit: 1c8557637731bbe28166d854ea8a16fd86c2995e --- staging/operator-registry/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/staging/operator-registry/Makefile b/staging/operator-registry/Makefile index 74aa69f4a9..09780e55f2 100644 --- a/staging/operator-registry/Makefile +++ b/staging/operator-registry/Makefile @@ -136,7 +136,7 @@ export LATEST_IMAGE_OR_EMPTY ?= $(shell \ && echo "$(OPM_IMAGE_REPO):latest" || echo "") release: RELEASE_ARGS ?= release --rm-dist --snapshot release: - ./scripts/fetch goreleaser 0.173.2 && ./bin/goreleaser $(RELEASE_ARGS) + ./scripts/fetch goreleaser 0.177.0 && ./bin/goreleaser $(RELEASE_ARGS) # tagged-or-empty returns $(OPM_IMAGE_REPO):$(1) when HEAD is assigned a non-prerelease semver tag, # otherwise the empty string. An empty string causes goreleaser to skip building From 8fa95ac5c8723d87dd4ca2d50aec27231bdac97e Mon Sep 17 00:00:00 2001 From: Tim Flannagan Date: Wed, 8 Sep 2021 19:53:24 -0400 Subject: [PATCH 14/15] .github/workflows: Don't run CI checks for markdown-only updates (#2347) * .github/workflows: Don't run CI checks for markdown-only updates Update the ci-prefixed workflows and ensure that CI isn't running when only markdown files are updated. Signed-off-by: timflannagan * .github/workflows: Use paths-ignore instead of paths for ignoring certain files/paths Signed-off-by: timflannagan * .github/workflows: Remove the need to ignore the root doc/ path The '**/*.md' filter pattern [1] should ignore _all_ markdown extension files anywhere in the repository. [1] https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#patterns-to-match-file-paths Signed-off-by: timflannagan Upstream-repository: operator-lifecycle-manager Upstream-commit: 2fd014019ca8cc86ae859da797e814b72c299257 --- .../operator-lifecycle-manager/.github/workflows/build.yml | 6 ++---- .../.github/workflows/e2e-kind.yml | 6 ++---- .../.github/workflows/e2e-minikube.yml | 6 ++---- .../.github/workflows/e2e-tests.yml | 5 ++--- .../operator-lifecycle-manager/.github/workflows/unit.yml | 5 ++--- .../operator-lifecycle-manager/.github/workflows/verify.yml | 5 ++--- 6 files changed, 12 insertions(+), 21 deletions(-) diff --git a/staging/operator-lifecycle-manager/.github/workflows/build.yml b/staging/operator-lifecycle-manager/.github/workflows/build.yml index e8c024b187..68b4775e9f 100644 --- a/staging/operator-lifecycle-manager/.github/workflows/build.yml +++ b/staging/operator-lifecycle-manager/.github/workflows/build.yml @@ -1,10 +1,8 @@ name: ci on: pull_request: - paths: - - '**' - - '!doc/contributors/**' - - '!doc/design/**' + paths-ignore: + - '**/*.md' jobs: image: runs-on: ubuntu-latest diff --git a/staging/operator-lifecycle-manager/.github/workflows/e2e-kind.yml b/staging/operator-lifecycle-manager/.github/workflows/e2e-kind.yml index a38cf6d188..8a573b89ed 100644 --- a/staging/operator-lifecycle-manager/.github/workflows/e2e-kind.yml +++ b/staging/operator-lifecycle-manager/.github/workflows/e2e-kind.yml @@ -1,10 +1,8 @@ name: ci on: pull_request: - paths: - - '**' - - '!doc/contributors/**' - - '!doc/design/**' + paths-ignore: + - '**/*.md' schedule: - cron: '0 0 * * *' # daily to pick up releases jobs: diff --git a/staging/operator-lifecycle-manager/.github/workflows/e2e-minikube.yml b/staging/operator-lifecycle-manager/.github/workflows/e2e-minikube.yml index db344264c3..3b3d0f40c4 100644 --- a/staging/operator-lifecycle-manager/.github/workflows/e2e-minikube.yml +++ b/staging/operator-lifecycle-manager/.github/workflows/e2e-minikube.yml @@ -1,10 +1,8 @@ name: ci on: pull_request: - paths: - - '**' - - '!doc/contributors/**' - - '!doc/design/**' + paths-ignore: + - '**/*.md' schedule: - cron: '0 0 * * *' # daily to pick up releases jobs: diff --git a/staging/operator-lifecycle-manager/.github/workflows/e2e-tests.yml b/staging/operator-lifecycle-manager/.github/workflows/e2e-tests.yml index da7af5b751..42fe6ef038 100644 --- a/staging/operator-lifecycle-manager/.github/workflows/e2e-tests.yml +++ b/staging/operator-lifecycle-manager/.github/workflows/e2e-tests.yml @@ -4,9 +4,8 @@ on: branches: - master pull_request: - paths: - - '**' - - '!doc/**' + paths-ignore: + - '**/*.md' jobs: e2e-tests: runs-on: ubuntu-latest diff --git a/staging/operator-lifecycle-manager/.github/workflows/unit.yml b/staging/operator-lifecycle-manager/.github/workflows/unit.yml index 31c84356b1..c277788a24 100644 --- a/staging/operator-lifecycle-manager/.github/workflows/unit.yml +++ b/staging/operator-lifecycle-manager/.github/workflows/unit.yml @@ -4,9 +4,8 @@ on: branches: - master pull_request: - paths: - - '**' - - '!doc/**' + paths-ignore: + - '**/*.md' jobs: unit: runs-on: ubuntu-latest diff --git a/staging/operator-lifecycle-manager/.github/workflows/verify.yml b/staging/operator-lifecycle-manager/.github/workflows/verify.yml index eb3550ac5b..0fa15aef4c 100644 --- a/staging/operator-lifecycle-manager/.github/workflows/verify.yml +++ b/staging/operator-lifecycle-manager/.github/workflows/verify.yml @@ -4,9 +4,8 @@ on: branches: - master pull_request: - paths: - - '**' - - '!doc/**' + paths-ignore: + - '**/*.md' jobs: verify: runs-on: ubuntu-latest From 6a39a9a46582652321f1b6ea5d4c8a6aeab9b3ba Mon Sep 17 00:00:00 2001 From: Eric Stroczynski Date: Thu, 9 Sep 2021 12:18:12 -0700 Subject: [PATCH 15/15] feat(opm): fine-grained dependency selection in diffs (#756) Signed-off-by: Eric Stroczynski Upstream-repository: operator-registry Upstream-commit: a3253eb2fa97be52883af0a0c195d4a95500c04a --- .../index-declcfgs/exp-headsonly/index.yaml | 1 + .../testdata/index-declcfgs/latest/index.yaml | 1 + .../testdata/index-declcfgs/old/index.yaml | 1 + .../operator-registry/alpha/declcfg/diff.go | 94 ++++++--- .../alpha/declcfg/diff_include.go | 87 ++++++++ .../alpha/declcfg/diff_include_test.go | 183 +++++++++++++++++ .../alpha/declcfg/diff_test.go | 185 ++++++++++++++++++ .../index-declcfgs/exp-headsonly/index.yaml | 1 + .../testdata/index-declcfgs/latest/index.yaml | 1 + .../testdata/index-declcfgs/old/index.yaml | 1 + .../operator-registry/alpha/declcfg/diff.go | 94 ++++++--- .../alpha/declcfg/diff_include.go | 87 ++++++++ 12 files changed, 692 insertions(+), 44 deletions(-) create mode 100644 staging/operator-registry/alpha/declcfg/diff_include.go create mode 100644 staging/operator-registry/alpha/declcfg/diff_include_test.go create mode 100644 vendor/github.com/operator-framework/operator-registry/alpha/declcfg/diff_include.go diff --git a/staging/operator-registry/alpha/action/testdata/index-declcfgs/exp-headsonly/index.yaml b/staging/operator-registry/alpha/action/testdata/index-declcfgs/exp-headsonly/index.yaml index f3b349d646..6aef07f88e 100644 --- a/staging/operator-registry/alpha/action/testdata/index-declcfgs/exp-headsonly/index.yaml +++ b/staging/operator-registry/alpha/action/testdata/index-declcfgs/exp-headsonly/index.yaml @@ -9,6 +9,7 @@ schema: olm.channel entries: - name: bar.v0.1.0 - name: bar.v0.2.0 + replaces: bar.v0.1.0 skips: - bar.v0.1.0 - name: bar.v1.0.0 diff --git a/staging/operator-registry/alpha/action/testdata/index-declcfgs/latest/index.yaml b/staging/operator-registry/alpha/action/testdata/index-declcfgs/latest/index.yaml index 7ef42c6a9b..4b06fbacf6 100644 --- a/staging/operator-registry/alpha/action/testdata/index-declcfgs/latest/index.yaml +++ b/staging/operator-registry/alpha/action/testdata/index-declcfgs/latest/index.yaml @@ -9,6 +9,7 @@ schema: olm.channel entries: - name: bar.v0.1.0 - name: bar.v0.2.0 + replaces: bar.v0.1.0 skipRange: <0.2.0 skips: - bar.v0.1.0 diff --git a/staging/operator-registry/alpha/action/testdata/index-declcfgs/old/index.yaml b/staging/operator-registry/alpha/action/testdata/index-declcfgs/old/index.yaml index 4e77597bcb..f3cc41dfd4 100644 --- a/staging/operator-registry/alpha/action/testdata/index-declcfgs/old/index.yaml +++ b/staging/operator-registry/alpha/action/testdata/index-declcfgs/old/index.yaml @@ -9,6 +9,7 @@ name: alpha entries: - name: bar.v0.1.0 - name: bar.v0.2.0 + replaces: bar.v0.1.0 skipRange: <0.2.0 skips: - bar.v0.1.0 diff --git a/staging/operator-registry/alpha/declcfg/diff.go b/staging/operator-registry/alpha/declcfg/diff.go index 37cf72b052..c4f78d660f 100644 --- a/staging/operator-registry/alpha/declcfg/diff.go +++ b/staging/operator-registry/alpha/declcfg/diff.go @@ -1,6 +1,7 @@ package declcfg import ( + "fmt" "reflect" "sort" "sync" @@ -167,7 +168,7 @@ func bundlesEqual(b1, b2 *model.Bundle) (bool, error) { func addAllDependencies(newModel, oldModel, outputModel model.Model) error { // Get every oldModel's bundle's dependencies, and their dependencies, etc. by BFS. - allProvidingBundles := []*model.Bundle{} + providingBundlesByPackage := map[string][]*model.Bundle{} for curr := getBundles(outputModel); len(curr) != 0; { reqGVKs, reqPkgs, err := findDependencies(curr) if err != nil { @@ -183,36 +184,85 @@ func addAllDependencies(newModel, oldModel, outputModel model.Model) error { for _, pkg := range newModel { providingBundles := getBundlesThatProvide(pkg, reqGVKs, reqPkgs) curr = append(curr, providingBundles...) - allProvidingBundles = append(allProvidingBundles, providingBundles...) + + oldPkg, oldHasPkg := oldModel[pkg.Name] + for _, b := range providingBundles { + // If the bundle is not in oldModel, add it to the set. + // outputModel is checked below. + add := true + if oldHasPkg { + if oldCh, oldHasCh := oldPkg.Channels[b.Channel.Name]; oldHasCh { + _, oldHasBundle := oldCh.Bundles[b.Name] + add = !oldHasBundle + } + } + if add { + providingBundlesByPackage[b.Package.Name] = append(providingBundlesByPackage[b.Package.Name], b) + } + } } } // Add the diff between an oldModel dependency package and its new counterpart // or the entire package if oldModel does not have it. - // - // TODO(estroz): add bundles then fill in dependency upgrade graph - // by selecting latest versions, as the EP specifies. - dependencyPkgs := map[string]*model.Package{} - for _, b := range allProvidingBundles { - if _, copied := dependencyPkgs[b.Package.Name]; !copied { - dependencyPkgs[b.Package.Name] = copyPackage(b.Package) - } - } - for _, newDepPkg := range dependencyPkgs { - // newDepPkg is a copy of a newModel pkg, so running diffPackages - // on it and oldPkg, which may have some but not all bundles, - // will produce a set of all bundles that outputModel doesn't have. - // Otherwise, just add the whole package. - if oldPkg, oldHasPkg := oldModel[newDepPkg.Name]; oldHasPkg { - if err := diffPackages(oldPkg, newDepPkg); err != nil { + for pkgName, bundles := range providingBundlesByPackage { + newPkg := newModel[pkgName] + heads := make(map[string]*model.Bundle, len(newPkg.Channels)) + for _, ch := range newPkg.Channels { + var err error + if heads[ch.Name], err = ch.Head(); err != nil { return err } - if len(newDepPkg.Channels) == 0 { - // Skip empty packages. - continue + } + + // Sort by version then channel so bundles lower in the full graph are more likely + // to be included in previous loops. + sort.Slice(bundles, func(i, j int) bool { + if bundles[i].Channel.Name == bundles[j].Channel.Name { + return bundles[i].Version.LT(bundles[j].Version) + } + return bundles[i].Channel.Name < bundles[j].Channel.Name + }) + + for _, b := range bundles { + newCh := b.Channel + + // Continue if b was added in a previous loop iteration. + // Otherwise create a new package/channel for b if they do not exist. + var ( + outputPkg *model.Package + outputCh *model.Channel + + outHasPkg, outHasCh bool + ) + if outputPkg, outHasPkg = outputModel[b.Package.Name]; outHasPkg { + if outputCh, outHasCh = outputPkg.Channels[b.Channel.Name]; outHasCh { + if _, outputHasBundle := outputCh.Bundles[b.Name]; outputHasBundle { + continue + } + } + } else { + outputPkg = copyPackageNoChannels(newPkg) + outputModel[outputPkg.Name] = outputPkg + } + if !outHasCh { + outputCh = copyChannelNoBundles(newCh, outputPkg) + outputPkg.Channels[outputCh.Name] = outputCh + } + + head := heads[newCh.Name] + graph := makeUpgradeGraph(newCh) + intersectingBundles, intersectionFound := findIntersectingBundles(newCh, b, head, graph) + if !intersectionFound { + // This should never happen, since b and head are from the same model. + return fmt.Errorf("channel %s: head %q not reachable from bundle %q", newCh.Name, head.Name, b.Name) + } + for _, ib := range intersectingBundles { + if _, outHasBundle := outputCh.Bundles[ib.Name]; !outHasBundle { + outputCh.Bundles[ib.Name] = copyBundle(ib, outputCh, outputPkg) + } } } - outputModel[newDepPkg.Name] = newDepPkg } return nil diff --git a/staging/operator-registry/alpha/declcfg/diff_include.go b/staging/operator-registry/alpha/declcfg/diff_include.go new file mode 100644 index 0000000000..14a4d5c890 --- /dev/null +++ b/staging/operator-registry/alpha/declcfg/diff_include.go @@ -0,0 +1,87 @@ +package declcfg + +import ( + "github.com/operator-framework/operator-registry/alpha/model" +) + +// makeUpgradeGraph creates a DAG of bundles with map key Bundle.Replaces. +func makeUpgradeGraph(ch *model.Channel) map[string][]*model.Bundle { + graph := map[string][]*model.Bundle{} + for _, b := range ch.Bundles { + b := b + if b.Replaces != "" { + graph[b.Replaces] = append(graph[b.Replaces], b) + } + } + return graph +} + +// findIntersectingBundles finds the intersecting bundle of start and end in the +// replaces upgrade graph graph by traversing down to the lowest graph node, +// then returns every bundle higher than the intersection. It is possible +// to find no intersection; this should only happen when start and end +// are not part of the same upgrade graph. +// Output bundle order is not guaranteed. +// Precondition: start must be a bundle in ch. +// Precondition: end must be ch's head. +func findIntersectingBundles(ch *model.Channel, start, end *model.Bundle, graph map[string][]*model.Bundle) ([]*model.Bundle, bool) { + // The intersecting set is equal to end if start is end. + if start.Name == end.Name { + return []*model.Bundle{end}, true + } + + // Construct start's replaces chain for comparison against end's. + startChain := map[string]*model.Bundle{start.Name: nil} + for curr := start; curr != nil && curr.Replaces != ""; curr = ch.Bundles[curr.Replaces] { + startChain[curr.Replaces] = curr + } + + // Trace end's replaces chain until it intersects with start's, or the root is reached. + var intersection string + if _, inChain := startChain[end.Name]; inChain { + intersection = end.Name + } else { + for curr := end; curr != nil && curr.Replaces != ""; curr = ch.Bundles[curr.Replaces] { + if _, inChain := startChain[curr.Replaces]; inChain { + intersection = curr.Replaces + break + } + } + } + + // No intersection is found, delegate behavior to caller. + if intersection == "" { + return nil, false + } + + // Find all bundles that replace the intersection via BFS, + // i.e. the set of bundles that fill the update graph between start and end. + replacesIntersection := graph[intersection] + replacesSet := map[string]*model.Bundle{} + for _, b := range replacesIntersection { + currName := "" + for next := []*model.Bundle{b}; len(next) > 0; next = next[1:] { + currName = next[0].Name + if _, hasReplaces := replacesSet[currName]; !hasReplaces { + replacers := graph[currName] + next = append(next, replacers...) + replacesSet[currName] = ch.Bundles[currName] + } + } + } + + // Remove every bundle between start and intersection exclusively, + // since these bundles must already exist in the destination channel. + for rep := start; rep != nil && rep.Name != intersection; rep = ch.Bundles[rep.Replaces] { + delete(replacesSet, rep.Name) + } + + // Ensure both start and end are added to the output. + replacesSet[start.Name] = start + replacesSet[end.Name] = end + var intersectingBundles []*model.Bundle + for _, b := range replacesSet { + intersectingBundles = append(intersectingBundles, b) + } + return intersectingBundles, true +} diff --git a/staging/operator-registry/alpha/declcfg/diff_include_test.go b/staging/operator-registry/alpha/declcfg/diff_include_test.go new file mode 100644 index 0000000000..2a5467b0b0 --- /dev/null +++ b/staging/operator-registry/alpha/declcfg/diff_include_test.go @@ -0,0 +1,183 @@ +package declcfg + +import ( + "fmt" + "sort" + "strings" + "testing" + + "github.com/stretchr/testify/require" + + "github.com/operator-framework/operator-registry/alpha/model" + "github.com/operator-framework/operator-registry/alpha/property" +) + +func TestFindIntersectingBundles(t *testing.T) { + type bundleSpec struct { + name, replaces string + skips []string + } + + inputBundles1 := []bundleSpec{ + {"foo.v0.1.0", "", nil}, + {"foo.v0.1.1", "foo.v0.1.0", nil}, + {"foo.v0.2.0", "foo.v0.1.1", nil}, + {"foo.v0.3.0", "foo.v0.2.0", nil}, + {"foo.v1.0.0", "foo.v0.1.0", []string{"foo.v0.1.1", "foo.v0.2.0", "foo.v0.3.0"}}, + {"foo.v1.1.0", "foo.v1.0.0", nil}, + {"foo.v2.0.0", "foo.v0.1.0", []string{"foo.v0.1.1", "foo.v0.2.0", "foo.v0.3.0", "foo.v1.0.0", "foo.v1.1.0"}}, + {"foo.v2.1.0", "foo.v2.0.0", nil}, + {"foo.v3.0.0", "foo.v1.1.0", []string{"foo.v2.0.0", "foo.v2.1.0"}}, + } + + type spec struct { + name string + pkgName string + channelName string + inputBundles []bundleSpec + start, end bundleSpec + headName string + assertion require.BoolAssertionFunc + expIntersecting []bundleSpec + } + + specs := []spec{ + { + name: "Success/StartEndEqual", + inputBundles: inputBundles1, + start: bundleSpec{"foo.v0.2.0", "foo.v0.1.1", nil}, + end: bundleSpec{"foo.v0.2.0", "foo.v0.1.1", nil}, + headName: "foo.v3.0.0", + assertion: require.True, + expIntersecting: []bundleSpec{{"foo.v0.2.0", "foo.v0.1.1", nil}}, + }, + { + name: "Success/FullGraph", + inputBundles: inputBundles1, + start: bundleSpec{"foo.v0.1.0", "", nil}, + end: bundleSpec{"foo.v3.0.0", "foo.v1.1.0", nil}, + headName: "foo.v3.0.0", + assertion: require.True, + expIntersecting: inputBundles1, + }, + { + name: "Success/SubGraph1", + inputBundles: inputBundles1, + start: bundleSpec{"foo.v0.2.0", "foo.v0.1.1", nil}, + end: bundleSpec{"foo.v3.0.0", "foo.v1.1.0", nil}, + headName: "foo.v3.0.0", + assertion: require.True, + expIntersecting: []bundleSpec{ + {"foo.v0.2.0", "foo.v0.1.1", nil}, + {"foo.v0.3.0", "foo.v0.2.0", nil}, + {"foo.v1.0.0", "foo.v0.1.0", []string{"foo.v0.1.1", "foo.v0.2.0", "foo.v0.3.0"}}, + {"foo.v1.1.0", "foo.v1.0.0", nil}, + {"foo.v2.0.0", "foo.v0.1.0", []string{"foo.v0.1.1", "foo.v0.2.0", "foo.v0.3.0", "foo.v1.0.0", "foo.v1.1.0"}}, + {"foo.v2.1.0", "foo.v2.0.0", nil}, + {"foo.v3.0.0", "foo.v1.1.0", []string{"foo.v2.0.0", "foo.v2.1.0"}}, + }, + }, + { + name: "Success/SubGraph2", + inputBundles: inputBundles1, + start: bundleSpec{"foo.v0.1.1", "foo.v0.1.0", nil}, + end: bundleSpec{"foo.v0.3.0", "foo.v0.2.0", nil}, + headName: "foo.v3.0.0", + assertion: require.True, + expIntersecting: []bundleSpec{ + {"foo.v0.1.1", "foo.v0.1.0", nil}, + {"foo.v0.2.0", "foo.v0.1.1", nil}, + {"foo.v0.3.0", "foo.v0.2.0", nil}, + }, + }, + { + // This case returns inputBundles1 minus foo.v0.1.0, which is the intersection, + // because foo.v2.0.0 is a leaf node (disregarding skips). + name: "Success/SubGraph3", + inputBundles: inputBundles1, + start: bundleSpec{"foo.v0.1.1", "foo.v0.1.0", nil}, + end: bundleSpec{"foo.v2.0.0", "foo.v0.1.0", nil}, + headName: "foo.v3.0.0", + assertion: require.True, + expIntersecting: inputBundles1[1:], + }, + { + // Even though foo.v0.4.0 is not in the channel, it's replaces (foo.v0.1.1) is. + name: "Success/ReplacesInChannel", + inputBundles: inputBundles1, + start: bundleSpec{"foo.v0.2.0", "foo.v0.1.1", nil}, + end: bundleSpec{"foo.v0.4.0", "foo.v0.1.1", nil}, + headName: "foo.v3.0.0", + assertion: require.True, + expIntersecting: []bundleSpec{ + {"foo.v0.2.0", "foo.v0.1.1", nil}, + {"foo.v0.3.0", "foo.v0.2.0", nil}, + {"foo.v0.4.0", "foo.v0.1.1", nil}, + }, + }, + { + name: "Fail/ReplacesNotInChannel", + inputBundles: inputBundles1, + start: bundleSpec{"foo.v0.2.0", "foo.v0.1.1", nil}, + end: bundleSpec{"foo.v0.4.0", "foo.v0.1.2", nil}, + headName: "foo.v3.0.0", + assertion: require.False, + }, + } + + for _, s := range specs { + t.Run(s.name, func(t *testing.T) { + // Construct test + pkg := &model.Package{Name: "foo"} + ch := &model.Channel{Name: "stable", Bundles: make(map[string]*model.Bundle, len(s.inputBundles))} + ch.Package = pkg + for _, b := range s.inputBundles { + ch.Bundles[b.name] = newReplacingBundle(b.name, b.replaces, b.skips, ch, pkg) + } + expIntersecting := make([]*model.Bundle, len(s.expIntersecting)) + for i, b := range s.expIntersecting { + expIntersecting[i] = newReplacingBundle(b.name, b.replaces, b.skips, ch, pkg) + } + + // Ensure the channel is valid and has the correct head. + require.NoError(t, ch.Validate()) + head, err := ch.Head() + require.NoError(t, err) + require.Equal(t, ch.Bundles[s.headName], head) + + start := newReplacingBundle(s.start.name, s.start.replaces, s.start.skips, ch, pkg) + end := newReplacingBundle(s.end.name, s.end.replaces, s.end.skips, ch, pkg) + graph := makeUpgradeGraph(ch) + intersecting, found := findIntersectingBundles(ch, start, end, graph) + s.assertion(t, found) + // Compare bundle names only, since mismatch output is too verbose. + require.ElementsMatch(t, getBundleNames(expIntersecting), getBundleNames(intersecting)) + }) + } + +} + +func newReplacingBundle(name, replaces string, skips []string, ch *model.Channel, pkg *model.Package) *model.Bundle { + split := strings.SplitN(name, ".", 2) + nameStr, verStr := split[0], split[1] + b := &model.Bundle{ + Name: name, + Replaces: replaces, + Skips: skips, + Channel: ch, + Package: pkg, + Image: fmt.Sprintf("namespace/%s:%s", nameStr, verStr), + Properties: []property.Property{ + property.MustBuildPackage(ch.Package.Name, verStr), + }, + } + return b +} + +func getBundleNames(bundles []*model.Bundle) (names []string) { + for _, b := range bundles { + names = append(names, b.Name) + } + sort.Strings(names) + return names +} diff --git a/staging/operator-registry/alpha/declcfg/diff_test.go b/staging/operator-registry/alpha/declcfg/diff_test.go index 0f0a25fff1..51f92a9083 100644 --- a/staging/operator-registry/alpha/declcfg/diff_test.go +++ b/staging/operator-registry/alpha/declcfg/diff_test.go @@ -1309,6 +1309,191 @@ func TestDiffHeadsOnly(t *testing.T) { }, }, }, + { + name: "HasDiff/SelectDependencies", + newCfg: DeclarativeConfig{ + Packages: []Package{ + {Schema: schemaPackage, Name: "etcd", DefaultChannel: "stable"}, + {Schema: schemaPackage, Name: "foo", DefaultChannel: "stable"}, + {Schema: schemaPackage, Name: "bar", DefaultChannel: "stable"}, + }, + Channels: []Channel{ + {Schema: schemaChannel, Name: "stable", Package: "etcd", Entries: []ChannelEntry{ + {Name: "etcd.v0.9.0"}, + {Name: "etcd.v0.9.1", Replaces: "etcd.v0.9.0"}, + {Name: "etcd.v0.9.2", Replaces: "etcd.v0.9.1"}, + {Name: "etcd.v0.9.3", Replaces: "etcd.v0.9.2"}, + {Name: "etcd.v1.0.0", Replaces: "etcd.v0.9.3", Skips: []string{"etcd.v0.9.1", "etcd.v0.9.2", "etcd.v0.9.3"}}, + }}, + {Schema: schemaChannel, Name: "stable", Package: "foo", Entries: []ChannelEntry{ + {Name: "foo.v0.1.0"}, + }}, + {Schema: schemaChannel, Name: "stable", Package: "bar", Entries: []ChannelEntry{ + {Name: "bar.v0.1.0"}, + }}, + }, + Bundles: []Bundle{ + { + Schema: schemaBundle, + Name: "foo.v0.1.0", + Package: "foo", + Image: "reg/foo:latest", + Properties: []property.Property{ + property.MustBuildPackageRequired("etcd", "<0.9.2"), + property.MustBuildPackage("foo", "0.1.0"), + }, + }, + { + Schema: schemaBundle, + Name: "bar.v0.1.0", + Package: "bar", + Image: "reg/bar:latest", + Properties: []property.Property{ + property.MustBuildGVKRequired("etcd.database.coreos.com", "v1", "EtcdBackup"), + property.MustBuildPackage("bar", "0.1.0"), + }, + }, + { + Schema: schemaBundle, + Name: "etcd.v0.9.0", + Package: "etcd", + Image: "reg/etcd:latest", + Properties: []property.Property{ + property.MustBuildGVK("etcd.database.coreos.com", "v1beta2", "EtcdBackup"), + property.MustBuildPackage("etcd", "0.9.0"), + }, + }, + { + Schema: schemaBundle, + Name: "etcd.v0.9.1", + Package: "etcd", + Image: "reg/etcd:latest", + Properties: []property.Property{ + property.MustBuildGVK("etcd.database.coreos.com", "v1beta2", "EtcdBackup"), + property.MustBuildPackage("etcd", "0.9.1"), + }, + }, + { + Schema: schemaBundle, + Name: "etcd.v0.9.2", + Package: "etcd", + Image: "reg/etcd:latest", + Properties: []property.Property{ + property.MustBuildGVK("etcd.database.coreos.com", "v1beta2", "EtcdBackup"), + property.MustBuildPackage("etcd", "0.9.2"), + }, + }, + { + Schema: schemaBundle, + Name: "etcd.v0.9.3", + Package: "etcd", + Image: "reg/etcd:latest", + Properties: []property.Property{ + property.MustBuildGVK("etcd.database.coreos.com", "v1beta2", "EtcdBackup"), + property.MustBuildGVK("etcd.database.coreos.com", "v1", "EtcdBackup"), + property.MustBuildPackage("etcd", "0.9.3"), + }, + }, + { + Schema: schemaBundle, + Name: "etcd.v1.0.0", + Package: "etcd", + Image: "reg/etcd:latest", + Properties: []property.Property{ + property.MustBuildGVK("etcd.database.coreos.com", "v1beta2", "EtcdBackup"), + property.MustBuildGVK("etcd.database.coreos.com", "v1", "EtcdBackup"), + property.MustBuildPackage("etcd", "1.0.0"), + }, + }, + }, + }, + g: &DiffGenerator{}, + expCfg: DeclarativeConfig{ + Packages: []Package{ + {Schema: schemaPackage, Name: "bar", DefaultChannel: "stable"}, + {Schema: schemaPackage, Name: "etcd", DefaultChannel: "stable"}, + {Schema: schemaPackage, Name: "foo", DefaultChannel: "stable"}, + }, + Channels: []Channel{ + {Schema: schemaChannel, Name: "stable", Package: "bar", Entries: []ChannelEntry{ + {Name: "bar.v0.1.0"}, + }}, + {Schema: schemaChannel, Name: "stable", Package: "etcd", Entries: []ChannelEntry{ + {Name: "etcd.v0.9.1", Replaces: "etcd.v0.9.0"}, + {Name: "etcd.v0.9.2", Replaces: "etcd.v0.9.1"}, + {Name: "etcd.v0.9.3", Replaces: "etcd.v0.9.2"}, + {Name: "etcd.v1.0.0", Replaces: "etcd.v0.9.3", Skips: []string{"etcd.v0.9.1", "etcd.v0.9.2", "etcd.v0.9.3"}}, + }}, + {Schema: schemaChannel, Name: "stable", Package: "foo", Entries: []ChannelEntry{ + {Name: "foo.v0.1.0"}, + }}, + }, + Bundles: []Bundle{ + { + Schema: schemaBundle, + Name: "bar.v0.1.0", + Package: "bar", + Image: "reg/bar:latest", + Properties: []property.Property{ + property.MustBuildGVKRequired("etcd.database.coreos.com", "v1", "EtcdBackup"), + property.MustBuildPackage("bar", "0.1.0"), + }, + }, + { + Schema: schemaBundle, + Name: "etcd.v0.9.1", + Package: "etcd", + Image: "reg/etcd:latest", + Properties: []property.Property{ + property.MustBuildGVK("etcd.database.coreos.com", "v1beta2", "EtcdBackup"), + property.MustBuildPackage("etcd", "0.9.1"), + }, + }, + { + Schema: schemaBundle, + Name: "etcd.v0.9.2", + Package: "etcd", + Image: "reg/etcd:latest", + Properties: []property.Property{ + property.MustBuildGVK("etcd.database.coreos.com", "v1beta2", "EtcdBackup"), + property.MustBuildPackage("etcd", "0.9.2"), + }, + }, + { + Schema: schemaBundle, + Name: "etcd.v0.9.3", + Package: "etcd", + Image: "reg/etcd:latest", + Properties: []property.Property{ + property.MustBuildGVK("etcd.database.coreos.com", "v1", "EtcdBackup"), + property.MustBuildGVK("etcd.database.coreos.com", "v1beta2", "EtcdBackup"), + property.MustBuildPackage("etcd", "0.9.3"), + }, + }, + { + Schema: schemaBundle, + Name: "etcd.v1.0.0", + Package: "etcd", + Image: "reg/etcd:latest", + Properties: []property.Property{ + property.MustBuildGVK("etcd.database.coreos.com", "v1", "EtcdBackup"), + property.MustBuildGVK("etcd.database.coreos.com", "v1beta2", "EtcdBackup"), + property.MustBuildPackage("etcd", "1.0.0"), + }, + }, + { + Schema: schemaBundle, + Name: "foo.v0.1.0", + Package: "foo", + Image: "reg/foo:latest", + Properties: []property.Property{ + property.MustBuildPackage("foo", "0.1.0"), + property.MustBuildPackageRequired("etcd", "<0.9.2"), + }, + }, + }, + }, + }, } for _, s := range specs { diff --git a/vendor/github.com/operator-framework/operator-registry/alpha/action/testdata/index-declcfgs/exp-headsonly/index.yaml b/vendor/github.com/operator-framework/operator-registry/alpha/action/testdata/index-declcfgs/exp-headsonly/index.yaml index f3b349d646..6aef07f88e 100644 --- a/vendor/github.com/operator-framework/operator-registry/alpha/action/testdata/index-declcfgs/exp-headsonly/index.yaml +++ b/vendor/github.com/operator-framework/operator-registry/alpha/action/testdata/index-declcfgs/exp-headsonly/index.yaml @@ -9,6 +9,7 @@ schema: olm.channel entries: - name: bar.v0.1.0 - name: bar.v0.2.0 + replaces: bar.v0.1.0 skips: - bar.v0.1.0 - name: bar.v1.0.0 diff --git a/vendor/github.com/operator-framework/operator-registry/alpha/action/testdata/index-declcfgs/latest/index.yaml b/vendor/github.com/operator-framework/operator-registry/alpha/action/testdata/index-declcfgs/latest/index.yaml index 7ef42c6a9b..4b06fbacf6 100644 --- a/vendor/github.com/operator-framework/operator-registry/alpha/action/testdata/index-declcfgs/latest/index.yaml +++ b/vendor/github.com/operator-framework/operator-registry/alpha/action/testdata/index-declcfgs/latest/index.yaml @@ -9,6 +9,7 @@ schema: olm.channel entries: - name: bar.v0.1.0 - name: bar.v0.2.0 + replaces: bar.v0.1.0 skipRange: <0.2.0 skips: - bar.v0.1.0 diff --git a/vendor/github.com/operator-framework/operator-registry/alpha/action/testdata/index-declcfgs/old/index.yaml b/vendor/github.com/operator-framework/operator-registry/alpha/action/testdata/index-declcfgs/old/index.yaml index 4e77597bcb..f3cc41dfd4 100644 --- a/vendor/github.com/operator-framework/operator-registry/alpha/action/testdata/index-declcfgs/old/index.yaml +++ b/vendor/github.com/operator-framework/operator-registry/alpha/action/testdata/index-declcfgs/old/index.yaml @@ -9,6 +9,7 @@ name: alpha entries: - name: bar.v0.1.0 - name: bar.v0.2.0 + replaces: bar.v0.1.0 skipRange: <0.2.0 skips: - bar.v0.1.0 diff --git a/vendor/github.com/operator-framework/operator-registry/alpha/declcfg/diff.go b/vendor/github.com/operator-framework/operator-registry/alpha/declcfg/diff.go index 37cf72b052..c4f78d660f 100644 --- a/vendor/github.com/operator-framework/operator-registry/alpha/declcfg/diff.go +++ b/vendor/github.com/operator-framework/operator-registry/alpha/declcfg/diff.go @@ -1,6 +1,7 @@ package declcfg import ( + "fmt" "reflect" "sort" "sync" @@ -167,7 +168,7 @@ func bundlesEqual(b1, b2 *model.Bundle) (bool, error) { func addAllDependencies(newModel, oldModel, outputModel model.Model) error { // Get every oldModel's bundle's dependencies, and their dependencies, etc. by BFS. - allProvidingBundles := []*model.Bundle{} + providingBundlesByPackage := map[string][]*model.Bundle{} for curr := getBundles(outputModel); len(curr) != 0; { reqGVKs, reqPkgs, err := findDependencies(curr) if err != nil { @@ -183,36 +184,85 @@ func addAllDependencies(newModel, oldModel, outputModel model.Model) error { for _, pkg := range newModel { providingBundles := getBundlesThatProvide(pkg, reqGVKs, reqPkgs) curr = append(curr, providingBundles...) - allProvidingBundles = append(allProvidingBundles, providingBundles...) + + oldPkg, oldHasPkg := oldModel[pkg.Name] + for _, b := range providingBundles { + // If the bundle is not in oldModel, add it to the set. + // outputModel is checked below. + add := true + if oldHasPkg { + if oldCh, oldHasCh := oldPkg.Channels[b.Channel.Name]; oldHasCh { + _, oldHasBundle := oldCh.Bundles[b.Name] + add = !oldHasBundle + } + } + if add { + providingBundlesByPackage[b.Package.Name] = append(providingBundlesByPackage[b.Package.Name], b) + } + } } } // Add the diff between an oldModel dependency package and its new counterpart // or the entire package if oldModel does not have it. - // - // TODO(estroz): add bundles then fill in dependency upgrade graph - // by selecting latest versions, as the EP specifies. - dependencyPkgs := map[string]*model.Package{} - for _, b := range allProvidingBundles { - if _, copied := dependencyPkgs[b.Package.Name]; !copied { - dependencyPkgs[b.Package.Name] = copyPackage(b.Package) - } - } - for _, newDepPkg := range dependencyPkgs { - // newDepPkg is a copy of a newModel pkg, so running diffPackages - // on it and oldPkg, which may have some but not all bundles, - // will produce a set of all bundles that outputModel doesn't have. - // Otherwise, just add the whole package. - if oldPkg, oldHasPkg := oldModel[newDepPkg.Name]; oldHasPkg { - if err := diffPackages(oldPkg, newDepPkg); err != nil { + for pkgName, bundles := range providingBundlesByPackage { + newPkg := newModel[pkgName] + heads := make(map[string]*model.Bundle, len(newPkg.Channels)) + for _, ch := range newPkg.Channels { + var err error + if heads[ch.Name], err = ch.Head(); err != nil { return err } - if len(newDepPkg.Channels) == 0 { - // Skip empty packages. - continue + } + + // Sort by version then channel so bundles lower in the full graph are more likely + // to be included in previous loops. + sort.Slice(bundles, func(i, j int) bool { + if bundles[i].Channel.Name == bundles[j].Channel.Name { + return bundles[i].Version.LT(bundles[j].Version) + } + return bundles[i].Channel.Name < bundles[j].Channel.Name + }) + + for _, b := range bundles { + newCh := b.Channel + + // Continue if b was added in a previous loop iteration. + // Otherwise create a new package/channel for b if they do not exist. + var ( + outputPkg *model.Package + outputCh *model.Channel + + outHasPkg, outHasCh bool + ) + if outputPkg, outHasPkg = outputModel[b.Package.Name]; outHasPkg { + if outputCh, outHasCh = outputPkg.Channels[b.Channel.Name]; outHasCh { + if _, outputHasBundle := outputCh.Bundles[b.Name]; outputHasBundle { + continue + } + } + } else { + outputPkg = copyPackageNoChannels(newPkg) + outputModel[outputPkg.Name] = outputPkg + } + if !outHasCh { + outputCh = copyChannelNoBundles(newCh, outputPkg) + outputPkg.Channels[outputCh.Name] = outputCh + } + + head := heads[newCh.Name] + graph := makeUpgradeGraph(newCh) + intersectingBundles, intersectionFound := findIntersectingBundles(newCh, b, head, graph) + if !intersectionFound { + // This should never happen, since b and head are from the same model. + return fmt.Errorf("channel %s: head %q not reachable from bundle %q", newCh.Name, head.Name, b.Name) + } + for _, ib := range intersectingBundles { + if _, outHasBundle := outputCh.Bundles[ib.Name]; !outHasBundle { + outputCh.Bundles[ib.Name] = copyBundle(ib, outputCh, outputPkg) + } } } - outputModel[newDepPkg.Name] = newDepPkg } return nil diff --git a/vendor/github.com/operator-framework/operator-registry/alpha/declcfg/diff_include.go b/vendor/github.com/operator-framework/operator-registry/alpha/declcfg/diff_include.go new file mode 100644 index 0000000000..14a4d5c890 --- /dev/null +++ b/vendor/github.com/operator-framework/operator-registry/alpha/declcfg/diff_include.go @@ -0,0 +1,87 @@ +package declcfg + +import ( + "github.com/operator-framework/operator-registry/alpha/model" +) + +// makeUpgradeGraph creates a DAG of bundles with map key Bundle.Replaces. +func makeUpgradeGraph(ch *model.Channel) map[string][]*model.Bundle { + graph := map[string][]*model.Bundle{} + for _, b := range ch.Bundles { + b := b + if b.Replaces != "" { + graph[b.Replaces] = append(graph[b.Replaces], b) + } + } + return graph +} + +// findIntersectingBundles finds the intersecting bundle of start and end in the +// replaces upgrade graph graph by traversing down to the lowest graph node, +// then returns every bundle higher than the intersection. It is possible +// to find no intersection; this should only happen when start and end +// are not part of the same upgrade graph. +// Output bundle order is not guaranteed. +// Precondition: start must be a bundle in ch. +// Precondition: end must be ch's head. +func findIntersectingBundles(ch *model.Channel, start, end *model.Bundle, graph map[string][]*model.Bundle) ([]*model.Bundle, bool) { + // The intersecting set is equal to end if start is end. + if start.Name == end.Name { + return []*model.Bundle{end}, true + } + + // Construct start's replaces chain for comparison against end's. + startChain := map[string]*model.Bundle{start.Name: nil} + for curr := start; curr != nil && curr.Replaces != ""; curr = ch.Bundles[curr.Replaces] { + startChain[curr.Replaces] = curr + } + + // Trace end's replaces chain until it intersects with start's, or the root is reached. + var intersection string + if _, inChain := startChain[end.Name]; inChain { + intersection = end.Name + } else { + for curr := end; curr != nil && curr.Replaces != ""; curr = ch.Bundles[curr.Replaces] { + if _, inChain := startChain[curr.Replaces]; inChain { + intersection = curr.Replaces + break + } + } + } + + // No intersection is found, delegate behavior to caller. + if intersection == "" { + return nil, false + } + + // Find all bundles that replace the intersection via BFS, + // i.e. the set of bundles that fill the update graph between start and end. + replacesIntersection := graph[intersection] + replacesSet := map[string]*model.Bundle{} + for _, b := range replacesIntersection { + currName := "" + for next := []*model.Bundle{b}; len(next) > 0; next = next[1:] { + currName = next[0].Name + if _, hasReplaces := replacesSet[currName]; !hasReplaces { + replacers := graph[currName] + next = append(next, replacers...) + replacesSet[currName] = ch.Bundles[currName] + } + } + } + + // Remove every bundle between start and intersection exclusively, + // since these bundles must already exist in the destination channel. + for rep := start; rep != nil && rep.Name != intersection; rep = ch.Bundles[rep.Replaces] { + delete(replacesSet, rep.Name) + } + + // Ensure both start and end are added to the output. + replacesSet[start.Name] = start + replacesSet[end.Name] = end + var intersectingBundles []*model.Bundle + for _, b := range replacesSet { + intersectingBundles = append(intersectingBundles, b) + } + return intersectingBundles, true +}