From bfd485b9e66e3bee003307123be413ea7f36d8ee Mon Sep 17 00:00:00 2001 From: asjervanasten Date: Tue, 2 Jul 2024 06:55:51 +0200 Subject: [PATCH] Fixes https://github.com/argoproj/argo-cd/issues/9607 for BitBucketServer by allowing to pass a CM holding trusted certificates. Refactors implementation for GitLab. Signed-off-by: asjervanasten --- applicationset/generators/pull_request.go | 41 +- .../generators/pull_request_test.go | 67 + applicationset/generators/scm_provider.go | 43 +- .../generators/scm_provider_test.go | 68 + .../services/pull_request/bitbucket_server.go | 15 +- .../pull_request/bitbucket_server_test.go | 87 +- .../services/pull_request/gitlab.go | 5 +- .../services/pull_request/gitlab_test.go | 81 +- .../services/scm_provider/bitbucket_server.go | 15 +- .../scm_provider/bitbucket_server_test.go | 96 +- .../services/scm_provider/gitlab.go | 5 +- .../services/scm_provider/gitlab_test.go | 79 +- applicationset/utils/utils.go | 12 +- applicationset/utils/utils_test.go | 54 +- assets/swagger.json | 32 + manifests/core-install.yaml | 12 + manifests/crds/applicationset-crd.yaml | 12 + manifests/ha/install.yaml | 12 + manifests/install.yaml | 12 + .../v1alpha1/applicationset_types.go | 18 + pkg/apis/application/v1alpha1/generated.pb.go | 2388 ++++++++++------- pkg/apis/application/v1alpha1/generated.proto | 25 + .../application/v1alpha1/openapi_generated.go | 75 +- 23 files changed, 2231 insertions(+), 1023 deletions(-) diff --git a/applicationset/generators/pull_request.go b/applicationset/generators/pull_request.go index a453edfc83d553..b9ac67d448e9ba 100644 --- a/applicationset/generators/pull_request.go +++ b/applicationset/generators/pull_request.go @@ -129,11 +129,19 @@ func (g *PullRequestGenerator) selectServiceProvider(ctx context.Context, genera } if generatorConfig.GitLab != nil { providerConfig := generatorConfig.GitLab + var caCerts []byte + var prErr error + if providerConfig.CAConfigMapKeyRef != nil { + caCerts, prErr = g.getConfigMapData(ctx, providerConfig.CAConfigMapKeyRef, applicationSetInfo.Namespace) + if prErr != nil { + return nil, fmt.Errorf("error fetching CA certificates from ConfigMap: %w", prErr) + } + } token, err := g.getSecretRef(ctx, providerConfig.TokenRef, applicationSetInfo.Namespace) if err != nil { return nil, fmt.Errorf("error fetching Secret token: %w", err) } - return pullrequest.NewGitLabService(ctx, token, providerConfig.API, providerConfig.Project, providerConfig.Labels, providerConfig.PullRequestState, g.scmRootCAPath, providerConfig.Insecure) + return pullrequest.NewGitLabService(ctx, token, providerConfig.API, providerConfig.Project, providerConfig.Labels, providerConfig.PullRequestState, g.scmRootCAPath, providerConfig.Insecure, caCerts) } if generatorConfig.Gitea != nil { providerConfig := generatorConfig.Gitea @@ -145,14 +153,22 @@ func (g *PullRequestGenerator) selectServiceProvider(ctx context.Context, genera } if generatorConfig.BitbucketServer != nil { providerConfig := generatorConfig.BitbucketServer + var caCerts []byte + var prErr error + if providerConfig.CAConfigMapKeyRef != nil { + caCerts, prErr = g.getConfigMapData(ctx, providerConfig.CAConfigMapKeyRef, applicationSetInfo.Namespace) + if prErr != nil { + return nil, fmt.Errorf("error fetching CA certificates from ConfigMap: %w", prErr) + } + } if providerConfig.BasicAuth != nil { password, err := g.getSecretRef(ctx, providerConfig.BasicAuth.PasswordRef, applicationSetInfo.Namespace) if err != nil { return nil, fmt.Errorf("error fetching Secret token: %w", err) } - return pullrequest.NewBitbucketServiceBasicAuth(ctx, providerConfig.BasicAuth.Username, password, providerConfig.API, providerConfig.Project, providerConfig.Repo) + return pullrequest.NewBitbucketServiceBasicAuth(ctx, providerConfig.BasicAuth.Username, password, providerConfig.API, providerConfig.Project, providerConfig.Repo, g.scmRootCAPath, providerConfig.Insecure, caCerts) } else { - return pullrequest.NewBitbucketServiceNoAuth(ctx, providerConfig.API, providerConfig.Project, providerConfig.Repo) + return pullrequest.NewBitbucketServiceNoAuth(ctx, providerConfig.API, providerConfig.Project, providerConfig.Repo, g.scmRootCAPath, providerConfig.Insecure, caCerts) } } if generatorConfig.Bitbucket != nil { @@ -225,3 +241,22 @@ func (g *PullRequestGenerator) getSecretRef(ctx context.Context, ref *argoprojio } return string(tokenBytes), nil } + +func (g *PullRequestGenerator) getConfigMapData(ctx context.Context, ref *argoprojiov1alpha1.ConfigMapKeyRef, namespace string) ([]byte, error) { + if ref == nil { + return nil, nil + } + + configMap := &corev1.ConfigMap{} + err := g.client.Get(ctx, client.ObjectKey{Name: ref.ConfigMapName, Namespace: namespace}, configMap) + if err != nil { + return nil, err + } + + data, ok := configMap.Data[ref.Key] + if !ok { + return nil, fmt.Errorf("key %s not found in ConfigMap %s", ref.Key, configMap.Name) + } + + return []byte(data), nil +} diff --git a/applicationset/generators/pull_request_test.go b/applicationset/generators/pull_request_test.go index 7c95057c0c0ab7..aa8162140d0bfd 100644 --- a/applicationset/generators/pull_request_test.go +++ b/applicationset/generators/pull_request_test.go @@ -279,6 +279,73 @@ func TestPullRequestGetSecretRef(t *testing.T) { } } +func TestPullRequestGetConfigMapData(t *testing.T) { + configMap := &corev1.ConfigMap{ + ObjectMeta: metav1.ObjectMeta{Name: "test-configmap", Namespace: "test"}, + Data: map[string]string{ + "my-data": "configmap-data", + }, + } + gen := &PullRequestGenerator{client: fake.NewClientBuilder().WithObjects(configMap).Build()} + ctx := context.Background() + + cases := []struct { + name, namespace, data string + ref *argoprojiov1alpha1.ConfigMapKeyRef + hasError bool + }{ + { + name: "valid ref", + ref: &argoprojiov1alpha1.ConfigMapKeyRef{ConfigMapName: "test-configmap", Key: "my-data"}, + namespace: "test", + data: "configmap-data", + hasError: false, + }, + { + name: "nil ref", + ref: nil, + namespace: "test", + data: "", + hasError: false, + }, + { + name: "wrong name", + ref: &argoprojiov1alpha1.ConfigMapKeyRef{ConfigMapName: "other", Key: "my-data"}, + namespace: "test", + data: "", + hasError: true, + }, + { + name: "wrong key", + ref: &argoprojiov1alpha1.ConfigMapKeyRef{ConfigMapName: "test-configmap", Key: "other-data"}, + namespace: "test", + data: "", + hasError: true, + }, + { + name: "wrong namespace", + ref: &argoprojiov1alpha1.ConfigMapKeyRef{ConfigMapName: "test-configmap", Key: "my-data"}, + namespace: "other", + data: "", + hasError: true, + }, + } + + for _, c := range cases { + t.Run(c.name, func(t *testing.T) { + data, err := gen.getConfigMapData(ctx, c.ref, c.namespace) + if c.hasError { + require.Error(t, err) + } else { + require.NoError(t, err) + } + if !c.hasError { + assert.Equal(t, c.data, string(data)) + } + }) + } +} + func TestAllowedSCMProviderPullRequest(t *testing.T) { cases := []struct { name string diff --git a/applicationset/generators/scm_provider.go b/applicationset/generators/scm_provider.go index 7a3c66754f90c4..6cdb802089bc4d 100644 --- a/applicationset/generators/scm_provider.go +++ b/applicationset/generators/scm_provider.go @@ -146,11 +146,20 @@ func (g *SCMProviderGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha return nil, fmt.Errorf("scm provider: %w", err) } } else if providerConfig.Gitlab != nil { - token, err := g.getSecretRef(ctx, providerConfig.Gitlab.TokenRef, applicationSetInfo.Namespace) + providerConfig := providerConfig.Gitlab + var caCerts []byte + var scmError error + if providerConfig.CAConfigMapKeyRef != nil { + caCerts, scmError = g.getConfigMapData(ctx, providerConfig.CAConfigMapKeyRef, applicationSetInfo.Namespace) + if scmError != nil { + return nil, fmt.Errorf("error fetching CA certificates from ConfigMap: %w", scmError) + } + } + token, err := g.getSecretRef(ctx, providerConfig.TokenRef, applicationSetInfo.Namespace) if err != nil { return nil, fmt.Errorf("error fetching Gitlab token: %w", err) } - provider, err = scm_provider.NewGitlabProvider(ctx, providerConfig.Gitlab.Group, token, providerConfig.Gitlab.API, providerConfig.Gitlab.AllBranches, providerConfig.Gitlab.IncludeSubgroups, providerConfig.Gitlab.WillIncludeSharedProjects(), providerConfig.Gitlab.Insecure, g.scmRootCAPath, providerConfig.Gitlab.Topic) + provider, err = scm_provider.NewGitlabProvider(ctx, providerConfig.Group, token, providerConfig.API, providerConfig.AllBranches, providerConfig.IncludeSubgroups, providerConfig.WillIncludeSharedProjects(), providerConfig.Insecure, g.scmRootCAPath, providerConfig.Topic, caCerts) if err != nil { return nil, fmt.Errorf("error initializing Gitlab service: %w", err) } @@ -165,15 +174,22 @@ func (g *SCMProviderGenerator) GenerateParams(appSetGenerator *argoprojiov1alpha } } else if providerConfig.BitbucketServer != nil { providerConfig := providerConfig.BitbucketServer + var caCerts []byte var scmError error + if providerConfig.CAConfigMapKeyRef != nil { + caCerts, scmError = g.getConfigMapData(ctx, providerConfig.CAConfigMapKeyRef, applicationSetInfo.Namespace) + if scmError != nil { + return nil, fmt.Errorf("error fetching CA certificates from ConfigMap: %w", scmError) + } + } if providerConfig.BasicAuth != nil { password, err := g.getSecretRef(ctx, providerConfig.BasicAuth.PasswordRef, applicationSetInfo.Namespace) if err != nil { return nil, fmt.Errorf("error fetching Secret token: %w", err) } - provider, scmError = scm_provider.NewBitbucketServerProviderBasicAuth(ctx, providerConfig.BasicAuth.Username, password, providerConfig.API, providerConfig.Project, providerConfig.AllBranches) + provider, scmError = scm_provider.NewBitbucketServerProviderBasicAuth(ctx, providerConfig.BasicAuth.Username, password, providerConfig.API, providerConfig.Project, providerConfig.AllBranches, g.scmRootCAPath, providerConfig.Insecure, caCerts) } else { - provider, scmError = scm_provider.NewBitbucketServerProviderNoAuth(ctx, providerConfig.API, providerConfig.Project, providerConfig.AllBranches) + provider, scmError = scm_provider.NewBitbucketServerProviderNoAuth(ctx, providerConfig.API, providerConfig.Project, providerConfig.AllBranches, g.scmRootCAPath, providerConfig.Insecure, caCerts) } if scmError != nil { return nil, fmt.Errorf("error initializing Bitbucket Server service: %w", scmError) @@ -270,6 +286,25 @@ func (g *SCMProviderGenerator) getSecretRef(ctx context.Context, ref *argoprojio return string(tokenBytes), nil } +func (g *SCMProviderGenerator) getConfigMapData(ctx context.Context, ref *argoprojiov1alpha1.ConfigMapKeyRef, namespace string) ([]byte, error) { + if ref == nil { + return nil, nil + } + + configMap := &corev1.ConfigMap{} + err := g.client.Get(ctx, client.ObjectKey{Name: ref.ConfigMapName, Namespace: namespace}, configMap) + if err != nil { + return nil, err + } + + data, ok := configMap.Data[ref.Key] + if !ok { + return nil, fmt.Errorf("key %s not found in ConfigMap %s", ref.Key, configMap.Name) + } + + return []byte(data), nil +} + func (g *SCMProviderGenerator) githubProvider(ctx context.Context, github *argoprojiov1alpha1.SCMProviderGeneratorGithub, applicationSetInfo *argoprojiov1alpha1.ApplicationSet) (scm_provider.SCMProviderService, error) { if github.AppSecretName != "" { auth, err := g.GitHubApps.GetAuthSecret(ctx, github.AppSecretName) diff --git a/applicationset/generators/scm_provider_test.go b/applicationset/generators/scm_provider_test.go index 0b50b4b8b308ad..b07b3e72dd5a21 100644 --- a/applicationset/generators/scm_provider_test.go +++ b/applicationset/generators/scm_provider_test.go @@ -79,6 +79,74 @@ func TestSCMProviderGetSecretRef(t *testing.T) { } } +func TestSCMProviderGetConfigMapData(t *testing.T) { + configMap := &corev1.ConfigMap{ + ObjectMeta: metav1.ObjectMeta{Name: "test-configmap", Namespace: "test"}, + Data: map[string]string{ + "my-data": "configmap-data", + }, + } + gen := &SCMProviderGenerator{client: fake.NewClientBuilder().WithObjects(configMap).Build()} + ctx := context.Background() + + cases := []struct { + name, namespace, data string + ref *argoprojiov1alpha1.ConfigMapKeyRef + hasError bool + }{ + { + name: "valid ref", + ref: &argoprojiov1alpha1.ConfigMapKeyRef{ConfigMapName: "test-configmap", Key: "my-data"}, + namespace: "test", + data: "configmap-data", + hasError: false, + }, + { + name: "nil ref", + ref: nil, + namespace: "test", + data: "", + hasError: false, + }, + { + name: "wrong name", + ref: &argoprojiov1alpha1.ConfigMapKeyRef{ConfigMapName: "other", Key: "my-data"}, + namespace: "test", + data: "", + hasError: true, + }, + { + name: "wrong key", + ref: &argoprojiov1alpha1.ConfigMapKeyRef{ConfigMapName: "test-configmap", Key: "other-data"}, + namespace: "test", + data: "", + hasError: true, + }, + { + name: "wrong namespace", + ref: &argoprojiov1alpha1.ConfigMapKeyRef{ConfigMapName: "test-configmap", Key: "my-data"}, + namespace: "other", + data: "", + hasError: true, + }, + } + + for _, c := range cases { + t.Run(c.name, func(t *testing.T) { + data, err := gen.getConfigMapData(ctx, c.ref, c.namespace) + if c.hasError { + require.Error(t, err) + } else { + require.NoError(t, err) + } + if !c.hasError { + assert.Equal(t, c.data, string(data)) + } + }) + } +} + + func TestSCMProviderGenerateParams(t *testing.T) { cases := []struct { name string diff --git a/applicationset/services/pull_request/bitbucket_server.go b/applicationset/services/pull_request/bitbucket_server.go index 22c78f5323418e..d81767ce9ae3a6 100644 --- a/applicationset/services/pull_request/bitbucket_server.go +++ b/applicationset/services/pull_request/bitbucket_server.go @@ -3,6 +3,7 @@ package pull_request import ( "context" "fmt" + "net/http" bitbucketv1 "github.com/gfleury/go-bitbucket-v1" log "github.com/sirupsen/logrus" @@ -20,7 +21,7 @@ type BitbucketService struct { var _ PullRequestService = (*BitbucketService)(nil) -func NewBitbucketServiceBasicAuth(ctx context.Context, username, password, url, projectKey, repositorySlug string) (PullRequestService, error) { +func NewBitbucketServiceBasicAuth(ctx context.Context, username, password, url, projectKey, repositorySlug string, scmRootCAPath string, insecure bool, caCerts []byte) (PullRequestService, error) { bitbucketConfig := bitbucketv1.NewConfiguration(url) // Avoid the XSRF check bitbucketConfig.AddDefaultHeader("x-atlassian-token", "no-check") @@ -30,15 +31,19 @@ func NewBitbucketServiceBasicAuth(ctx context.Context, username, password, url, UserName: username, Password: password, }) - return newBitbucketService(ctx, bitbucketConfig, projectKey, repositorySlug) + return newBitbucketService(ctx, bitbucketConfig, projectKey, repositorySlug, scmRootCAPath, insecure, caCerts) } -func NewBitbucketServiceNoAuth(ctx context.Context, url, projectKey, repositorySlug string) (PullRequestService, error) { - return newBitbucketService(ctx, bitbucketv1.NewConfiguration(url), projectKey, repositorySlug) +func NewBitbucketServiceNoAuth(ctx context.Context, url, projectKey, repositorySlug string, scmRootCAPath string, insecure bool, caCerts []byte) (PullRequestService, error) { + return newBitbucketService(ctx, bitbucketv1.NewConfiguration(url), projectKey, repositorySlug, scmRootCAPath, insecure, caCerts) } -func newBitbucketService(ctx context.Context, bitbucketConfig *bitbucketv1.Configuration, projectKey, repositorySlug string) (PullRequestService, error) { +func newBitbucketService(ctx context.Context, bitbucketConfig *bitbucketv1.Configuration, projectKey, repositorySlug string, scmRootCAPath string, insecure bool, caCerts []byte) (PullRequestService, error) { bitbucketConfig.BasePath = utils.NormalizeBitbucketBasePath(bitbucketConfig.BasePath) + tlsConfig := utils.GetTlsConfig(scmRootCAPath, insecure, caCerts) + bitbucketConfig.HTTPClient = &http.Client{Transport: &http.Transport{ + TLSClientConfig: tlsConfig, + }} bitbucketClient := bitbucketv1.NewAPIClient(ctx, bitbucketConfig) return &BitbucketService{ diff --git a/applicationset/services/pull_request/bitbucket_server_test.go b/applicationset/services/pull_request/bitbucket_server_test.go index cc3f6863205d60..d66da937eacdf1 100644 --- a/applicationset/services/pull_request/bitbucket_server_test.go +++ b/applicationset/services/pull_request/bitbucket_server_test.go @@ -2,6 +2,8 @@ package pull_request import ( "context" + "crypto/x509" + "encoding/pem" "io" "net/http" "net/http/httptest" @@ -55,7 +57,7 @@ func TestListPullRequestNoAuth(t *testing.T) { defaultHandler(t)(w, r) })) defer ts.Close() - svc, err := NewBitbucketServiceNoAuth(context.Background(), ts.URL, "PROJECT", "REPO") + svc, err := NewBitbucketServiceNoAuth(context.Background(), ts.URL, "PROJECT", "REPO", "", false, nil) require.NoError(t, err) pullRequests, err := ListPullRequests(context.Background(), svc, []v1alpha1.PullRequestGeneratorFilter{}) require.NoError(t, err) @@ -136,7 +138,7 @@ func TestListPullRequestPagination(t *testing.T) { } })) defer ts.Close() - svc, err := NewBitbucketServiceNoAuth(context.Background(), ts.URL, "PROJECT", "REPO") + svc, err := NewBitbucketServiceNoAuth(context.Background(), ts.URL, "PROJECT", "REPO", "", false, nil) require.NoError(t, err) pullRequests, err := ListPullRequests(context.Background(), svc, []v1alpha1.PullRequestGeneratorFilter{}) require.NoError(t, err) @@ -172,7 +174,7 @@ func TestListPullRequestBasicAuth(t *testing.T) { defaultHandler(t)(w, r) })) defer ts.Close() - svc, err := NewBitbucketServiceBasicAuth(context.Background(), "user", "password", ts.URL, "PROJECT", "REPO") + svc, err := NewBitbucketServiceBasicAuth(context.Background(), "user", "password", ts.URL, "PROJECT", "REPO", "", false, nil) require.NoError(t, err) pullRequests, err := ListPullRequests(context.Background(), svc, []v1alpha1.PullRequestGeneratorFilter{}) require.NoError(t, err) @@ -182,12 +184,79 @@ func TestListPullRequestBasicAuth(t *testing.T) { assert.Equal(t, "cb3cf2e4d1517c83e720d2585b9402dbef71f992", pullRequests[0].HeadSHA) } +func TestListPullRequestTLS(t *testing.T) { + tests := []struct { + name string + tlsInsecure bool + passCerts bool + requireErr bool + }{ + { + name: "TLS Insecure: true, No Certs", + tlsInsecure: true, + passCerts: false, + requireErr: false, + }, + { + name: "TLS Insecure: true, With Certs", + tlsInsecure: true, + passCerts: true, + requireErr: false, + }, + { + name: "TLS Insecure: false, With Certs", + tlsInsecure: false, + passCerts: true, + requireErr: false, + }, + { + name: "TLS Insecure: false, No Certs", + tlsInsecure: false, + passCerts: false, + requireErr: true, + }, + } + + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + ts := httptest.NewTLSServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + defaultHandler(t)(w, r) + })) + defer ts.Close() + + var certs []byte + if test.passCerts == true { + for _, cert := range ts.TLS.Certificates { + for _, c := range cert.Certificate { + parsedCert, err := x509.ParseCertificate(c) + require.NoError(t, err, "Failed to parse certificate") + certs = append(certs, pem.EncodeToMemory(&pem.Block{ + Type: "CERTIFICATE", + Bytes: parsedCert.Raw, + })...) + } + } + } + + svc, err := NewBitbucketServiceBasicAuth(context.Background(), "user", "password", ts.URL, "PROJECT", "REPO", "", test.tlsInsecure, certs) + require.NoError(t, err) + _, err = ListPullRequests(context.Background(), svc, []v1alpha1.PullRequestGeneratorFilter{}) + if test.requireErr { + require.Error(t, err) + } else { + require.NoError(t, err) + } + }) + } +} + func TestListResponseError(t *testing.T) { ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusInternalServerError) })) defer ts.Close() - svc, _ := NewBitbucketServiceNoAuth(context.Background(), ts.URL, "PROJECT", "REPO") + svc, _ := NewBitbucketServiceNoAuth(context.Background(), ts.URL, "PROJECT", "REPO", "", false, nil) _, err := ListPullRequests(context.Background(), svc, []v1alpha1.PullRequestGeneratorFilter{}) require.Error(t, err) } @@ -212,7 +281,7 @@ func TestListResponseMalformed(t *testing.T) { } })) defer ts.Close() - svc, _ := NewBitbucketServiceNoAuth(context.Background(), ts.URL, "PROJECT", "REPO") + svc, _ := NewBitbucketServiceNoAuth(context.Background(), ts.URL, "PROJECT", "REPO", "", false, nil) _, err := ListPullRequests(context.Background(), svc, []v1alpha1.PullRequestGeneratorFilter{}) require.Error(t, err) } @@ -237,7 +306,7 @@ func TestListResponseEmpty(t *testing.T) { } })) defer ts.Close() - svc, err := NewBitbucketServiceNoAuth(context.Background(), ts.URL, "PROJECT", "REPO") + svc, err := NewBitbucketServiceNoAuth(context.Background(), ts.URL, "PROJECT", "REPO", "", false, nil) require.NoError(t, err) pullRequests, err := ListPullRequests(context.Background(), svc, []v1alpha1.PullRequestGeneratorFilter{}) require.NoError(t, err) @@ -315,7 +384,7 @@ func TestListPullRequestBranchMatch(t *testing.T) { })) defer ts.Close() regexp := `feature-1[\d]{2}` - svc, err := NewBitbucketServiceNoAuth(context.Background(), ts.URL, "PROJECT", "REPO") + svc, err := NewBitbucketServiceNoAuth(context.Background(), ts.URL, "PROJECT", "REPO", "", false, nil) require.NoError(t, err) pullRequests, err := ListPullRequests(context.Background(), svc, []v1alpha1.PullRequestGeneratorFilter{ { @@ -340,7 +409,7 @@ func TestListPullRequestBranchMatch(t *testing.T) { }, *pullRequests[1]) regexp = `.*2$` - svc, err = NewBitbucketServiceNoAuth(context.Background(), ts.URL, "PROJECT", "REPO") + svc, err = NewBitbucketServiceNoAuth(context.Background(), ts.URL, "PROJECT", "REPO", "", false, nil) require.NoError(t, err) pullRequests, err = ListPullRequests(context.Background(), svc, []v1alpha1.PullRequestGeneratorFilter{ { @@ -358,7 +427,7 @@ func TestListPullRequestBranchMatch(t *testing.T) { }, *pullRequests[0]) regexp = `[\d{2}` - svc, err = NewBitbucketServiceNoAuth(context.Background(), ts.URL, "PROJECT", "REPO") + svc, err = NewBitbucketServiceNoAuth(context.Background(), ts.URL, "PROJECT", "REPO", "", false, nil) require.NoError(t, err) _, err = ListPullRequests(context.Background(), svc, []v1alpha1.PullRequestGeneratorFilter{ { diff --git a/applicationset/services/pull_request/gitlab.go b/applicationset/services/pull_request/gitlab.go index 7f88c4a2307065..4772ecf60e74ac 100644 --- a/applicationset/services/pull_request/gitlab.go +++ b/applicationset/services/pull_request/gitlab.go @@ -20,8 +20,7 @@ type GitLabService struct { } var _ PullRequestService = (*GitLabService)(nil) - -func NewGitLabService(ctx context.Context, token, url, project string, labels []string, pullRequestState string, scmRootCAPath string, insecure bool) (PullRequestService, error) { +func NewGitLabService(ctx context.Context, token, url, project string, labels []string, pullRequestState string, scmRootCAPath string, insecure bool, caCerts []byte) (PullRequestService, error) { var clientOptionFns []gitlab.ClientOptionFunc // Set a custom Gitlab base URL if one is provided @@ -34,7 +33,7 @@ func NewGitLabService(ctx context.Context, token, url, project string, labels [] } tr := http.DefaultTransport.(*http.Transport).Clone() - tr.TLSClientConfig = utils.GetTlsConfig(scmRootCAPath, insecure) + tr.TLSClientConfig = utils.GetTlsConfig(scmRootCAPath, insecure, caCerts) retryClient := retryablehttp.NewClient() retryClient.HTTPClient.Transport = tr diff --git a/applicationset/services/pull_request/gitlab_test.go b/applicationset/services/pull_request/gitlab_test.go index cc8eed7bea1029..b04d2bc35df9d2 100644 --- a/applicationset/services/pull_request/gitlab_test.go +++ b/applicationset/services/pull_request/gitlab_test.go @@ -2,6 +2,8 @@ package pull_request import ( "context" + "crypto/x509" + "encoding/pem" "io" "net/http" "net/http/httptest" @@ -12,6 +14,7 @@ import ( "github.com/stretchr/testify/require" ) + func writeMRListResponse(t *testing.T, w io.Writer) { f, err := os.Open("fixtures/gitlab_mr_list_response.json") if err != nil { @@ -35,7 +38,7 @@ func TestGitLabServiceCustomBaseURL(t *testing.T) { writeMRListResponse(t, w) }) - svc, err := NewGitLabService(context.Background(), "", server.URL, "278964", nil, "", "", false) + svc, err := NewGitLabService(context.Background(), "", server.URL, "278964", nil, "", "", false, nil) require.NoError(t, err) _, err = svc.List(context.Background()) @@ -54,7 +57,7 @@ func TestGitLabServiceToken(t *testing.T) { writeMRListResponse(t, w) }) - svc, err := NewGitLabService(context.Background(), "token-123", server.URL, "278964", nil, "", "", false) + svc, err := NewGitLabService(context.Background(), "token-123", server.URL, "278964", nil, "", "", false, nil) require.NoError(t, err) _, err = svc.List(context.Background()) @@ -73,7 +76,7 @@ func TestList(t *testing.T) { writeMRListResponse(t, w) }) - svc, err := NewGitLabService(context.Background(), "", server.URL, "278964", []string{}, "", "", false) + svc, err := NewGitLabService(context.Background(), "", server.URL, "278964", []string{}, "", "", false, nil) require.NoError(t, err) prs, err := svc.List(context.Background()) @@ -97,7 +100,7 @@ func TestListWithLabels(t *testing.T) { writeMRListResponse(t, w) }) - svc, err := NewGitLabService(context.Background(), "", server.URL, "278964", []string{"feature", "ready"}, "", "", false) + svc, err := NewGitLabService(context.Background(), "", server.URL, "278964", []string{"feature", "ready"}, "", "", false, nil) require.NoError(t, err) _, err = svc.List(context.Background()) @@ -116,9 +119,77 @@ func TestListWithState(t *testing.T) { writeMRListResponse(t, w) }) - svc, err := NewGitLabService(context.Background(), "", server.URL, "278964", []string{}, "opened", "", false) + svc, err := NewGitLabService(context.Background(), "", server.URL, "278964", []string{}, "opened", "", false, nil) require.NoError(t, err) _, err = svc.List(context.Background()) require.NoError(t, err) } + +func TestListWithStateTLS(t *testing.T) { + tests := []struct { + name string + tlsInsecure bool + passCerts bool + requireErr bool + }{ + { + name: "TLS Insecure: true, No Certs", + tlsInsecure: true, + passCerts: false, + requireErr: false, + }, + { + name: "TLS Insecure: true, With Certs", + tlsInsecure: true, + passCerts: true, + requireErr: false, + }, + { + name: "TLS Insecure: false, With Certs", + tlsInsecure: false, + passCerts: true, + requireErr: false, + }, + { + name: "TLS Insecure: false, No Certs", + tlsInsecure: false, + passCerts: false, + requireErr: true, + }, + } + + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + ts := httptest.NewTLSServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + writeMRListResponse(t, w) + })) + defer ts.Close() + + var certs []byte + if test.passCerts == true { + for _, cert := range ts.TLS.Certificates { + for _, c := range cert.Certificate { + parsedCert, err := x509.ParseCertificate(c) + require.NoError(t, err, "Failed to parse certificate") + certs = append(certs, pem.EncodeToMemory(&pem.Block{ + Type: "CERTIFICATE", + Bytes: parsedCert.Raw, + })...) + } + } + } + + svc, err := NewGitLabService(context.Background(), "", ts.URL, "278964", []string{}, "opened", "", test.tlsInsecure, certs) + require.NoError(t, err) + + _, err = svc.List(context.Background()) + if test.requireErr { + require.Error(t, err) + } else { + require.NoError(t, err) + } + }) + } +} \ No newline at end of file diff --git a/applicationset/services/scm_provider/bitbucket_server.go b/applicationset/services/scm_provider/bitbucket_server.go index d1b66c89a66c3c..fe8823d04c4f22 100644 --- a/applicationset/services/scm_provider/bitbucket_server.go +++ b/applicationset/services/scm_provider/bitbucket_server.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "io" + "net/http" bitbucketv1 "github.com/gfleury/go-bitbucket-v1" log "github.com/sirupsen/logrus" @@ -20,7 +21,7 @@ type BitbucketServerProvider struct { var _ SCMProviderService = &BitbucketServerProvider{} -func NewBitbucketServerProviderBasicAuth(ctx context.Context, username, password, url, projectKey string, allBranches bool) (*BitbucketServerProvider, error) { +func NewBitbucketServerProviderBasicAuth(ctx context.Context, username, password, url, projectKey string, allBranches bool, scmRootCAPath string, insecure bool, caCerts []byte) (*BitbucketServerProvider, error) { bitbucketConfig := bitbucketv1.NewConfiguration(url) // Avoid the XSRF check bitbucketConfig.AddDefaultHeader("x-atlassian-token", "no-check") @@ -30,15 +31,19 @@ func NewBitbucketServerProviderBasicAuth(ctx context.Context, username, password UserName: username, Password: password, }) - return newBitbucketServerProvider(ctx, bitbucketConfig, projectKey, allBranches) + return newBitbucketServerProvider(ctx, bitbucketConfig, projectKey, allBranches, scmRootCAPath, insecure, caCerts) } -func NewBitbucketServerProviderNoAuth(ctx context.Context, url, projectKey string, allBranches bool) (*BitbucketServerProvider, error) { - return newBitbucketServerProvider(ctx, bitbucketv1.NewConfiguration(url), projectKey, allBranches) +func NewBitbucketServerProviderNoAuth(ctx context.Context, url, projectKey string, allBranches bool, scmRootCAPath string, insecure bool, caCerts []byte) (*BitbucketServerProvider, error) { + return newBitbucketServerProvider(ctx, bitbucketv1.NewConfiguration(url), projectKey, allBranches, scmRootCAPath, insecure, caCerts) } -func newBitbucketServerProvider(ctx context.Context, bitbucketConfig *bitbucketv1.Configuration, projectKey string, allBranches bool) (*BitbucketServerProvider, error) { +func newBitbucketServerProvider(ctx context.Context, bitbucketConfig *bitbucketv1.Configuration, projectKey string, allBranches bool, scmRootCAPath string, insecure bool, caCerts []byte) (*BitbucketServerProvider, error) { bitbucketConfig.BasePath = utils.NormalizeBitbucketBasePath(bitbucketConfig.BasePath) + tlsConfig := utils.GetTlsConfig(scmRootCAPath, insecure, caCerts) + bitbucketConfig.HTTPClient = &http.Client{Transport: &http.Transport{ + TLSClientConfig: tlsConfig, + }} bitbucketClient := bitbucketv1.NewAPIClient(ctx, bitbucketConfig) return &BitbucketServerProvider{ diff --git a/applicationset/services/scm_provider/bitbucket_server_test.go b/applicationset/services/scm_provider/bitbucket_server_test.go index a8fc7afac55807..ad6d015c75e744 100644 --- a/applicationset/services/scm_provider/bitbucket_server_test.go +++ b/applicationset/services/scm_provider/bitbucket_server_test.go @@ -2,6 +2,8 @@ package scm_provider import ( "context" + "crypto/x509" + "encoding/pem" "io" "net/http" "net/http/httptest" @@ -99,7 +101,7 @@ func TestListReposNoAuth(t *testing.T) { defaultHandler(t)(w, r) })) defer ts.Close() - provider, err := NewBitbucketServerProviderNoAuth(context.Background(), ts.URL, "PROJECT", true) + provider, err := NewBitbucketServerProviderNoAuth(context.Background(), ts.URL, "PROJECT", true, "", false, nil) require.NoError(t, err) repos, err := provider.ListRepos(context.Background(), "ssh") verifyDefaultRepo(t, err, repos) @@ -191,7 +193,7 @@ func TestListReposPagination(t *testing.T) { } })) defer ts.Close() - provider, err := NewBitbucketServerProviderNoAuth(context.Background(), ts.URL, "PROJECT", true) + provider, err := NewBitbucketServerProviderNoAuth(context.Background(), ts.URL, "PROJECT", true, "", false, nil) require.NoError(t, err) repos, err := provider.ListRepos(context.Background(), "ssh") require.NoError(t, err) @@ -268,7 +270,7 @@ func TestGetBranchesBranchPagination(t *testing.T) { defaultHandler(t)(w, r) })) defer ts.Close() - provider, err := NewBitbucketServerProviderNoAuth(context.Background(), ts.URL, "PROJECT", true) + provider, err := NewBitbucketServerProviderNoAuth(context.Background(), ts.URL, "PROJECT", true, "", false, nil) require.NoError(t, err) repos, err := provider.GetBranches(context.Background(), &Repository{ Organization: "PROJECT", @@ -321,7 +323,7 @@ func TestGetBranchesDefaultOnly(t *testing.T) { defaultHandler(t)(w, r) })) defer ts.Close() - provider, err := NewBitbucketServerProviderNoAuth(context.Background(), ts.URL, "PROJECT", false) + provider, err := NewBitbucketServerProviderNoAuth(context.Background(), ts.URL, "PROJECT", false, "", false, nil) require.NoError(t, err) repos, err := provider.GetBranches(context.Background(), &Repository{ Organization: "PROJECT", @@ -353,7 +355,7 @@ func TestGetBranchesMissingDefault(t *testing.T) { defaultHandler(t)(w, r) })) defer ts.Close() - provider, err := NewBitbucketServerProviderNoAuth(context.Background(), ts.URL, "PROJECT", false) + provider, err := NewBitbucketServerProviderNoAuth(context.Background(), ts.URL, "PROJECT", false, "", false, nil) require.NoError(t, err) repos, err := provider.GetBranches(context.Background(), &Repository{ Organization: "PROJECT", @@ -375,7 +377,7 @@ func TestGetBranchesEmptyRepo(t *testing.T) { } })) defer ts.Close() - provider, err := NewBitbucketServerProviderNoAuth(context.Background(), ts.URL, "PROJECT", false) + provider, err := NewBitbucketServerProviderNoAuth(context.Background(), ts.URL, "PROJECT", false, "", false, nil) require.NoError(t, err) repos, err := provider.GetBranches(context.Background(), &Repository{ Organization: "PROJECT", @@ -398,7 +400,7 @@ func TestGetBranchesErrorDefaultBranch(t *testing.T) { defaultHandler(t)(w, r) })) defer ts.Close() - provider, err := NewBitbucketServerProviderNoAuth(context.Background(), ts.URL, "PROJECT", false) + provider, err := NewBitbucketServerProviderNoAuth(context.Background(), ts.URL, "PROJECT", false, "", false, nil) require.NoError(t, err) _, err = provider.GetBranches(context.Background(), &Repository{ Organization: "PROJECT", @@ -409,6 +411,72 @@ func TestGetBranchesErrorDefaultBranch(t *testing.T) { }) require.Error(t, err) } +func TestListReposTLS(t *testing.T) { + tests := []struct { + name string + tlsInsecure bool + passCerts bool + requireErr bool + }{ + { + name: "TLS Insecure: true, No Certs", + tlsInsecure: true, + passCerts: false, + requireErr: false, + }, + { + name: "TLS Insecure: true, With Certs", + tlsInsecure: true, + passCerts: true, + requireErr: false, + }, + { + name: "TLS Insecure: false, With Certs", + tlsInsecure: false, + passCerts: true, + requireErr: false, + }, + { + name: "TLS Insecure: false, No Certs", + tlsInsecure: false, + passCerts: false, + requireErr: true, + }, + } + + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + ts := httptest.NewTLSServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + defaultHandler(t)(w, r) + })) + defer ts.Close() + + var certs []byte + if test.passCerts == true { + for _, cert := range ts.TLS.Certificates { + for _, c := range cert.Certificate { + parsedCert, err := x509.ParseCertificate(c) + require.NoError(t, err, "Failed to parse certificate") + certs = append(certs, pem.EncodeToMemory(&pem.Block{ + Type: "CERTIFICATE", + Bytes: parsedCert.Raw, + })...) + } + } + } + + provider, err := NewBitbucketServerProviderBasicAuth(context.Background(), "user", "password", ts.URL, "PROJECT", true, "", test.tlsInsecure, certs) + require.NoError(t, err) + _, err = provider.ListRepos(context.Background(), "ssh") + if test.requireErr { + require.Error(t, err) + } else { + require.NoError(t, err) + } + }) + } +} func TestListReposBasicAuth(t *testing.T) { ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { @@ -417,7 +485,7 @@ func TestListReposBasicAuth(t *testing.T) { defaultHandler(t)(w, r) })) defer ts.Close() - provider, err := NewBitbucketServerProviderBasicAuth(context.Background(), "user", "password", ts.URL, "PROJECT", true) + provider, err := NewBitbucketServerProviderBasicAuth(context.Background(), "user", "password", ts.URL, "PROJECT", true, "", false, nil) require.NoError(t, err) repos, err := provider.ListRepos(context.Background(), "ssh") verifyDefaultRepo(t, err, repos) @@ -444,7 +512,7 @@ func TestListReposDefaultBranch(t *testing.T) { defaultHandler(t)(w, r) })) defer ts.Close() - provider, err := NewBitbucketServerProviderNoAuth(context.Background(), ts.URL, "PROJECT", false) + provider, err := NewBitbucketServerProviderNoAuth(context.Background(), ts.URL, "PROJECT", false, "", false, nil) require.NoError(t, err) repos, err := provider.ListRepos(context.Background(), "ssh") require.NoError(t, err) @@ -470,7 +538,7 @@ func TestListReposMissingDefaultBranch(t *testing.T) { defaultHandler(t)(w, r) })) defer ts.Close() - provider, err := NewBitbucketServerProviderNoAuth(context.Background(), ts.URL, "PROJECT", false) + provider, err := NewBitbucketServerProviderNoAuth(context.Background(), ts.URL, "PROJECT", false, "", false, nil) require.NoError(t, err) repos, err := provider.ListRepos(context.Background(), "ssh") require.NoError(t, err) @@ -487,7 +555,7 @@ func TestListReposErrorDefaultBranch(t *testing.T) { defaultHandler(t)(w, r) })) defer ts.Close() - provider, err := NewBitbucketServerProviderNoAuth(context.Background(), ts.URL, "PROJECT", false) + provider, err := NewBitbucketServerProviderNoAuth(context.Background(), ts.URL, "PROJECT", false, "", false, nil) require.NoError(t, err) _, err = provider.ListRepos(context.Background(), "ssh") require.Error(t, err) @@ -499,7 +567,7 @@ func TestListReposCloneProtocol(t *testing.T) { defaultHandler(t)(w, r) })) defer ts.Close() - provider, err := NewBitbucketServerProviderNoAuth(context.Background(), ts.URL, "PROJECT", true) + provider, err := NewBitbucketServerProviderNoAuth(context.Background(), ts.URL, "PROJECT", true, "", false, nil) require.NoError(t, err) repos, err := provider.ListRepos(context.Background(), "https") require.NoError(t, err) @@ -521,7 +589,7 @@ func TestListReposUnknownProtocol(t *testing.T) { defaultHandler(t)(w, r) })) defer ts.Close() - provider, err := NewBitbucketServerProviderNoAuth(context.Background(), ts.URL, "PROJECT", true) + provider, err := NewBitbucketServerProviderNoAuth(context.Background(), ts.URL, "PROJECT", true, "", false, nil) require.NoError(t, err) _, errProtocol := provider.ListRepos(context.Background(), "http") require.Error(t, errProtocol) @@ -559,7 +627,7 @@ func TestBitbucketServerHasPath(t *testing.T) { } })) defer ts.Close() - provider, err := NewBitbucketServerProviderNoAuth(context.Background(), ts.URL, "PROJECT", true) + provider, err := NewBitbucketServerProviderNoAuth(context.Background(), ts.URL, "PROJECT", true, "", false, nil) require.NoError(t, err) repo := &Repository{ Organization: "PROJECT", diff --git a/applicationset/services/scm_provider/gitlab.go b/applicationset/services/scm_provider/gitlab.go index 974be7bc21e161..f7ffc017fdfa8b 100644 --- a/applicationset/services/scm_provider/gitlab.go +++ b/applicationset/services/scm_provider/gitlab.go @@ -23,8 +23,7 @@ type GitlabProvider struct { } var _ SCMProviderService = &GitlabProvider{} - -func NewGitlabProvider(ctx context.Context, organization string, token string, url string, allBranches, includeSubgroups, includeSharedProjects, insecure bool, scmRootCAPath, topic string) (*GitlabProvider, error) { +func NewGitlabProvider(ctx context.Context, organization string, token string, url string, allBranches, includeSubgroups, includeSharedProjects, insecure bool, scmRootCAPath, topic string, caCerts []byte) (*GitlabProvider, error) { // Undocumented environment variable to set a default token, to be used in testing to dodge anonymous rate limits. if token == "" { token = os.Getenv("GITLAB_TOKEN") @@ -32,7 +31,7 @@ func NewGitlabProvider(ctx context.Context, organization string, token string, u var client *gitlab.Client tr := http.DefaultTransport.(*http.Transport).Clone() - tr.TLSClientConfig = utils.GetTlsConfig(scmRootCAPath, insecure) + tr.TLSClientConfig = utils.GetTlsConfig(scmRootCAPath, insecure, caCerts) retryClient := retryablehttp.NewClient() retryClient.HTTPClient.Transport = tr diff --git a/applicationset/services/scm_provider/gitlab_test.go b/applicationset/services/scm_provider/gitlab_test.go index c897e9b3183de9..12f2b8b377a2ad 100644 --- a/applicationset/services/scm_provider/gitlab_test.go +++ b/applicationset/services/scm_provider/gitlab_test.go @@ -2,6 +2,8 @@ package scm_provider import ( "context" + "crypto/x509" + "encoding/pem" "fmt" "io" "net/http" @@ -1121,7 +1123,7 @@ func TestGitlabListRepos(t *testing.T) { })) for _, c := range cases { t.Run(c.name, func(t *testing.T) { - provider, _ := NewGitlabProvider(context.Background(), "test-argocd-proton", "", ts.URL, c.allBranches, c.includeSubgroups, c.includeSharedProjects, c.insecure, "", c.topic) + provider, _ := NewGitlabProvider(context.Background(), "test-argocd-proton", "", ts.URL, c.allBranches, c.includeSubgroups, c.includeSharedProjects, c.insecure, "", c.topic, nil) rawRepos, err := ListRepos(context.Background(), provider, c.filters, c.proto) if c.hasError { require.Error(t, err) @@ -1160,7 +1162,7 @@ func TestGitlabHasPath(t *testing.T) { ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { gitlabMockHandler(t)(w, r) })) - host, _ := NewGitlabProvider(context.Background(), "test-argocd-proton", "", ts.URL, false, true, true, false, "", "") + host, _ := NewGitlabProvider(context.Background(), "test-argocd-proton", "", ts.URL, false, true, true, false, "", "", nil) repo := &Repository{ Organization: "test-argocd-proton", Repository: "argocd", @@ -1206,7 +1208,7 @@ func TestGitlabGetBranches(t *testing.T) { ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { gitlabMockHandler(t)(w, r) })) - host, _ := NewGitlabProvider(context.Background(), "test-argocd-proton", "", ts.URL, false, true, true, false, "", "") + host, _ := NewGitlabProvider(context.Background(), "test-argocd-proton", "", ts.URL, false, true, true, false, "", "", nil) repo := &Repository{ RepositoryId: 27084533, @@ -1227,3 +1229,74 @@ func TestGitlabGetBranches(t *testing.T) { require.NoError(t, err) }) } + +func TestGetBranchesTLS(t *testing.T) { + tests := []struct { + name string + tlsInsecure bool + passCerts bool + requireErr bool + }{ + { + name: "TLS Insecure: true, No Certs", + tlsInsecure: true, + passCerts: false, + requireErr: false, + }, + { + name: "TLS Insecure: true, With Certs", + tlsInsecure: true, + passCerts: true, + requireErr: false, + }, + { + name: "TLS Insecure: false, With Certs", + tlsInsecure: false, + passCerts: true, + requireErr: false, + }, + { + name: "TLS Insecure: false, No Certs", + tlsInsecure: false, + passCerts: false, + requireErr: true, + }, + } + + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + ts := httptest.NewTLSServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + gitlabMockHandler(t)(w, r) + })) + defer ts.Close() + + var certs []byte + if test.passCerts == true { + for _, cert := range ts.TLS.Certificates { + for _, c := range cert.Certificate { + parsedCert, err := x509.ParseCertificate(c) + require.NoError(t, err, "Failed to parse certificate") + certs = append(certs, pem.EncodeToMemory(&pem.Block{ + Type: "CERTIFICATE", + Bytes: parsedCert.Raw, + })...) + } + } + } + + host, err := NewGitlabProvider(context.Background(), "test-argocd-proton", "", ts.URL, false, true, true, test.tlsInsecure, "", "", certs) + require.NoError(t, err) + repo := &Repository{ + RepositoryId: 27084533, + Branch: "master", + } + _, err = host.GetBranches(context.Background(), repo) + if test.requireErr { + require.Error(t, err) + } else { + require.NoError(t, err) + } + }) + } +} diff --git a/applicationset/utils/utils.go b/applicationset/utils/utils.go index c387c2c47ebb6a..587db4f5046bab 100644 --- a/applicationset/utils/utils.go +++ b/applicationset/utils/utils.go @@ -485,7 +485,7 @@ func SlugifyName(args ...interface{}) string { return urlSlug } -func getTlsConfigWithCACert(scmRootCAPath string) *tls.Config { +func getTlsConfigWithCACert(scmRootCAPath string, caCerts []byte) *tls.Config { tlsConfig := &tls.Config{} if scmRootCAPath != "" { @@ -499,8 +499,12 @@ func getTlsConfigWithCACert(scmRootCAPath string) *tls.Config { log.Errorf("error reading certificate from file '%s', proceeding without custom rootCA : %s", scmRootCAPath, err) return tlsConfig } + caCerts = append(caCerts, rootCA...) + } + + if len(caCerts) > 0 { certPool := x509.NewCertPool() - ok := certPool.AppendCertsFromPEM([]byte(rootCA)) + ok := certPool.AppendCertsFromPEM(caCerts) if !ok { log.Errorf("failed to append certificates from PEM: proceeding without custom rootCA") } else { @@ -510,8 +514,8 @@ func getTlsConfigWithCACert(scmRootCAPath string) *tls.Config { return tlsConfig } -func GetTlsConfig(scmRootCAPath string, insecure bool) *tls.Config { - tlsConfig := getTlsConfigWithCACert(scmRootCAPath) +func GetTlsConfig(scmRootCAPath string, insecure bool, caCerts []byte) *tls.Config { + tlsConfig := getTlsConfigWithCACert(scmRootCAPath, caCerts) if insecure { tlsConfig.InsecureSkipVerify = true diff --git a/applicationset/utils/utils_test.go b/applicationset/utils/utils_test.go index 5b9ed9295780be..9662fd0661e7df 100644 --- a/applicationset/utils/utils_test.go +++ b/applicationset/utils/utils_test.go @@ -1264,7 +1264,7 @@ func TestGetTLSConfig(t *testing.T) { // require.NoError(t, err) temppath := t.TempDir() - cert := ` + certFromFile := ` -----BEGIN CERTIFICATE----- MIIFvTCCA6WgAwIBAgIUGrTmW3qc39zqnE08e3qNDhUkeWswDQYJKoZIhvcNAQEL BQAwbjELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAklMMRAwDgYDVQQHDAdDaGljYWdv @@ -1298,48 +1298,92 @@ NoB2rjufaB0GQi1azdboMvdGSOxhSCAR8otWT5yDrywCqVnEvjw0oxKmuRduNe2/ r2AaraPFgrprnxUibP4L7jxdr+iiw5bWN9/B81PodrS7n5TNtnfnpZD6X6rThqOP xO7Tr5lAo74vNUkF2EHNaI28/RGnJPm2TIxZqy4rNH6L -----END CERTIFICATE----- +` + + certFromCM := ` +-----BEGIN CERTIFICATE----- +MIICwDCCAaigAwIBAgIEIKJnYjANBgkqhkiG9w0BAQsFADARMQ8wDQYDVQQDDAZy +b290Q0EwHhcNMjQwNzA3MTUxMDQzWhcNMjUxMjMxMDAwMDAwWjARMQ8wDQYDVQQD +DAZyb290Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCSmh5UlAxx +JnhjYuh4zBTJ+ZolAfxwcByRvS0026GvdorHQ6ha9hWVBueZ8lLLhfyvGYazjKFw +4OKaHXOpUzjHYVl8BkQk7sRks/Gojeyey5p4CQjiHQlkgp+Aa6Dv4uy4f05Pn5Bv +SsGaBELL59cYCNUQULHLhFYLTJ0zd/vYHEloTDLF006S+84LcQeFgG2qsmlXcFtM +MKJDWsjsT09JtGLXiYarH8e7W+lsKKTu9Tdi55DshCBsmBfpUcuS14yveIY+T9pz +Xd0Ir9yLk18AqQ2UAkcwE5LVhO5TOQGpqhN+muX+AQ21eoQXU+PXjh9ECR0EhA/4 +j4cerY7F1GzbAgMBAAGjIDAeMA4GA1UdDwEB/wQEAwICBDAMBgNVHRMEBTADAQH/ +MA0GCSqGSIb3DQEBCwUAA4IBAQAYhaekvXzcIMeRIKw7xhDYPeaweLASxzasJHsb +8ZRs0ntR1YlUANTIjXIkvEPuz9m00A13ydWvPmmZiacMbkViCLx5o0l2P5lzbTY9 +1Wvjc1E5UoFQOqZttoJ/RNczUTXnQaVDNLIYIimykKlVfqxA5g31SkgnHEzJVjU4 +XiJCFZREqegRhvwearOOQfIkVHrlCEh50rV5y6gTquUPeQEn4xIeKiCSyy7JJfbs +O2g+GOa0wIgfRhmfKIL4WNpY3tWumI2Fb/rdyhm+vI5EToKD9hcu8/z4O+KiPi3R +iZ9kAmBeyKlIun1FXJ43Cqy/mUCf9wp0gXXmtVWskOof/grK +-----END CERTIFICATE----- ` rootCAPath := path.Join(temppath, "foo.example.com") - err := os.WriteFile(rootCAPath, []byte(cert), 0o666) + err := os.WriteFile(rootCAPath, []byte(certFromFile), 0o666) if err != nil { panic(err) } certPool := x509.NewCertPool() - ok := certPool.AppendCertsFromPEM([]byte(cert)) - assert.True(t, ok) testCases := []struct { name string scmRootCAPath string insecure bool + caCerts []byte validateCertInTlsConfig bool }{ { name: "Insecure mode configured, SCM Root CA Path not set", scmRootCAPath: "", insecure: true, + caCerts: nil, validateCertInTlsConfig: false, }, { name: "SCM Root CA Path set, Insecure mode set to false", scmRootCAPath: rootCAPath, insecure: false, + caCerts: nil, validateCertInTlsConfig: true, }, { name: "SCM Root CA Path set, Insecure mode set to true", scmRootCAPath: rootCAPath, insecure: true, + caCerts: nil, + validateCertInTlsConfig: true, + }, + { + name: "Cert passed, Insecure mode set to false", + scmRootCAPath: "", + insecure: false, + caCerts: []byte(certFromCM), + validateCertInTlsConfig: true, + }, + { + name: "SCM Root CA Path set, cert passed, Insecure mode set to false", + scmRootCAPath: rootCAPath, + insecure: false, + caCerts: []byte(certFromCM), validateCertInTlsConfig: true, }, } for _, testCase := range testCases { t.Run(testCase.name, func(t *testing.T) { - tlsConfig := GetTlsConfig(testCase.scmRootCAPath, testCase.insecure) + tlsConfig := GetTlsConfig(testCase.scmRootCAPath, testCase.insecure, testCase.caCerts) assert.Equal(t, testCase.insecure, tlsConfig.InsecureSkipVerify) + if testCase.caCerts != nil { + ok := certPool.AppendCertsFromPEM([]byte(certFromCM)) + assert.True(t, ok) + } + if testCase.scmRootCAPath != "" { + ok := certPool.AppendCertsFromPEM([]byte(certFromFile)) + assert.True(t, ok) + } if testCase.validateCertInTlsConfig { assert.NotNil(t, tlsConfig) assert.True(t, tlsConfig.RootCAs.Equal(certPool)) diff --git a/assets/swagger.json b/assets/swagger.json index fb3f457322cac3..b6c24124584164 100644 --- a/assets/swagger.json +++ b/assets/swagger.json @@ -7143,6 +7143,18 @@ } } }, + "v1alpha1ConfigMapKeyRef": { + "description": "Utility struct for a reference to a configmap key.", + "type": "object", + "properties": { + "configMapName": { + "type": "string" + }, + "key": { + "type": "string" + } + } + }, "v1alpha1ConnectionState": { "type": "object", "title": "ConnectionState contains information about remote resource connection state, currently used for clusters and repositories", @@ -7967,6 +7979,13 @@ "basicAuth": { "$ref": "#/definitions/v1alpha1BasicAuthBitbucketServer" }, + "caConfigMapKeyRef": { + "$ref": "#/definitions/v1alpha1ConfigMapKeyRef" + }, + "insecure": { + "type": "boolean", + "title": "Allow self-signed TLS / Certificates; default: false" + }, "project": { "description": "Project to scan. Required.", "type": "string" @@ -7997,6 +8016,9 @@ "description": "The GitLab API URL to talk to. If blank, uses https://gitlab.com/.", "type": "string" }, + "caConfigMapKeyRef": { + "$ref": "#/definitions/v1alpha1ConfigMapKeyRef" + }, "insecure": { "type": "boolean", "title": "Skips validating the SCM provider's TLS certificate - useful for self-signed certificates.; default: false" @@ -8874,6 +8896,13 @@ "basicAuth": { "$ref": "#/definitions/v1alpha1BasicAuthBitbucketServer" }, + "caConfigMapKeyRef": { + "$ref": "#/definitions/v1alpha1ConfigMapKeyRef" + }, + "insecure": { + "type": "boolean", + "title": "Allow self-signed TLS / Certificates; default: false" + }, "project": { "description": "Project to scan. Required.", "type": "string" @@ -8974,6 +9003,9 @@ "description": "The Gitlab API URL to talk to.", "type": "string" }, + "caConfigMapKeyRef": { + "$ref": "#/definitions/v1alpha1ConfigMapKeyRef" + }, "group": { "description": "Gitlab group to scan. Required. You can use either the project id (recommended) or the full namespaced path.", "type": "string" diff --git a/manifests/core-install.yaml b/manifests/core-install.yaml index 33af6be5d3b01e..074e537996acfb 100644 --- a/manifests/core-install.yaml +++ b/manifests/core-install.yaml @@ -10437,6 +10437,8 @@ spec: - passwordRef - username type: object + insecure: + type: boolean project: type: string repo: @@ -11192,6 +11194,8 @@ spec: - passwordRef - username type: object + insecure: + type: boolean project: type: string required: @@ -15497,6 +15501,8 @@ spec: - passwordRef - username type: object + insecure: + type: boolean project: type: string repo: @@ -16252,6 +16258,8 @@ spec: - passwordRef - username type: object + insecure: + type: boolean project: type: string required: @@ -18198,6 +18206,8 @@ spec: - passwordRef - username type: object + insecure: + type: boolean project: type: string repo: @@ -18953,6 +18963,8 @@ spec: - passwordRef - username type: object + insecure: + type: boolean project: type: string required: diff --git a/manifests/crds/applicationset-crd.yaml b/manifests/crds/applicationset-crd.yaml index 8b33949da37868..dda76c2b4b0a41 100644 --- a/manifests/crds/applicationset-crd.yaml +++ b/manifests/crds/applicationset-crd.yaml @@ -5436,6 +5436,8 @@ spec: - passwordRef - username type: object + insecure: + type: boolean project: type: string repo: @@ -6191,6 +6193,8 @@ spec: - passwordRef - username type: object + insecure: + type: boolean project: type: string required: @@ -10496,6 +10500,8 @@ spec: - passwordRef - username type: object + insecure: + type: boolean project: type: string repo: @@ -11251,6 +11257,8 @@ spec: - passwordRef - username type: object + insecure: + type: boolean project: type: string required: @@ -13197,6 +13205,8 @@ spec: - passwordRef - username type: object + insecure: + type: boolean project: type: string repo: @@ -13952,6 +13962,8 @@ spec: - passwordRef - username type: object + insecure: + type: boolean project: type: string required: diff --git a/manifests/ha/install.yaml b/manifests/ha/install.yaml index 6a533553a0e180..8272df1a696b87 100644 --- a/manifests/ha/install.yaml +++ b/manifests/ha/install.yaml @@ -10437,6 +10437,8 @@ spec: - passwordRef - username type: object + insecure: + type: boolean project: type: string repo: @@ -11192,6 +11194,8 @@ spec: - passwordRef - username type: object + insecure: + type: boolean project: type: string required: @@ -15497,6 +15501,8 @@ spec: - passwordRef - username type: object + insecure: + type: boolean project: type: string repo: @@ -16252,6 +16258,8 @@ spec: - passwordRef - username type: object + insecure: + type: boolean project: type: string required: @@ -18198,6 +18206,8 @@ spec: - passwordRef - username type: object + insecure: + type: boolean project: type: string repo: @@ -18953,6 +18963,8 @@ spec: - passwordRef - username type: object + insecure: + type: boolean project: type: string required: diff --git a/manifests/install.yaml b/manifests/install.yaml index bfeeb639d2645c..e3d146e5f7da91 100644 --- a/manifests/install.yaml +++ b/manifests/install.yaml @@ -10437,6 +10437,8 @@ spec: - passwordRef - username type: object + insecure: + type: boolean project: type: string repo: @@ -11192,6 +11194,8 @@ spec: - passwordRef - username type: object + insecure: + type: boolean project: type: string required: @@ -15497,6 +15501,8 @@ spec: - passwordRef - username type: object + insecure: + type: boolean project: type: string repo: @@ -16252,6 +16258,8 @@ spec: - passwordRef - username type: object + insecure: + type: boolean project: type: string required: @@ -18198,6 +18206,8 @@ spec: - passwordRef - username type: object + insecure: + type: boolean project: type: string repo: @@ -18953,6 +18963,8 @@ spec: - passwordRef - username type: object + insecure: + type: boolean project: type: string required: diff --git a/pkg/apis/application/v1alpha1/applicationset_types.go b/pkg/apis/application/v1alpha1/applicationset_types.go index 6c2b629dfdaa90..c2eb387c76ac9e 100644 --- a/pkg/apis/application/v1alpha1/applicationset_types.go +++ b/pkg/apis/application/v1alpha1/applicationset_types.go @@ -35,6 +35,12 @@ type SecretRef struct { Key string `json:"key" protobuf:"bytes,2,opt,name=key"` } +// Utility struct for a reference to a configmap key. +type ConfigMapKeyRef struct { + ConfigMapName string `json:"configMapName" protobuf:"bytes,1,opt,name=configMapName"` + Key string `json:"key" protobuf:"bytes,2,opt,name=key"` +} + // ApplicationSet is a set of Application resources // +genclient // +genclient:noStatus @@ -498,6 +504,8 @@ type SCMProviderGeneratorGitlab struct { IncludeSharedProjects *bool `json:"includeSharedProjects,omitempty" protobuf:"varint,7,opt,name=includeSharedProjects"` // Filter repos list based on Gitlab Topic. Topic string `json:"topic,omitempty" protobuf:"bytes,8,opt,name=topic"` + // ConfigMap key holding the trusted certificates + CAConfigMapKeyRef *ConfigMapKeyRef `json:"caConfigMapKeyRef,omitempty" protobuf:"bytes,9,opt,name=caConfigMapKeyRef"` } func (s *SCMProviderGeneratorGitlab) WillIncludeSharedProjects() bool { @@ -526,6 +534,10 @@ type SCMProviderGeneratorBitbucketServer struct { BasicAuth *BasicAuthBitbucketServer `json:"basicAuth,omitempty" protobuf:"bytes,3,opt,name=basicAuth"` // Scan all branches instead of just the default branch. AllBranches bool `json:"allBranches,omitempty" protobuf:"varint,4,opt,name=allBranches"` + // Allow self-signed TLS / Certificates; default: false + Insecure bool `json:"insecure,omitempty" protobuf:"varint,5,opt,name=insecure"` + // ConfigMap key holding the trusted certificates + CAConfigMapKeyRef *ConfigMapKeyRef `json:"caConfigMapKeyRef,omitempty" protobuf:"bytes,6,opt,name=caConfigMapKeyRef"` } // SCMProviderGeneratorAzureDevOps defines connection info specific to Azure DevOps. @@ -677,6 +689,8 @@ type PullRequestGeneratorGitLab struct { PullRequestState string `json:"pullRequestState,omitempty" protobuf:"bytes,5,rep,name=pullRequestState"` // Skips validating the SCM provider's TLS certificate - useful for self-signed certificates.; default: false Insecure bool `json:"insecure,omitempty" protobuf:"varint,6,opt,name=insecure"` + // ConfigMap key holding the trusted certificates + CAConfigMapKeyRef *ConfigMapKeyRef `json:"caConfigMapKeyRef,omitempty" protobuf:"bytes,7,opt,name=caConfigMapKeyRef"` } // PullRequestGeneratorBitbucketServer defines connection info specific to BitbucketServer. @@ -689,6 +703,10 @@ type PullRequestGeneratorBitbucketServer struct { API string `json:"api" protobuf:"bytes,3,opt,name=api"` // Credentials for Basic auth BasicAuth *BasicAuthBitbucketServer `json:"basicAuth,omitempty" protobuf:"bytes,4,opt,name=basicAuth"` + // Allow self-signed TLS / Certificates; default: false + Insecure bool `json:"insecure,omitempty" protobuf:"varint,5,opt,name=insecure"` + // ConfigMap key holding the trusted certificates + CAConfigMapKeyRef *ConfigMapKeyRef `json:"caConfigMapKeyRef,omitempty" protobuf:"bytes,6,opt,name=caConfigMapKeyRef"` } // PullRequestGeneratorBitbucket defines connection info specific to Bitbucket. diff --git a/pkg/apis/application/v1alpha1/generated.pb.go b/pkg/apis/application/v1alpha1/generated.pb.go index 46f72d9eab6efe..62965422f585e2 100644 --- a/pkg/apis/application/v1alpha1/generated.pb.go +++ b/pkg/apis/application/v1alpha1/generated.pb.go @@ -1553,10 +1553,38 @@ func (m *ConfigManagementPlugin) XXX_DiscardUnknown() { var xxx_messageInfo_ConfigManagementPlugin proto.InternalMessageInfo +func (m *ConfigMapKeyRef) Reset() { *m = ConfigMapKeyRef{} } +func (*ConfigMapKeyRef) ProtoMessage() {} +func (*ConfigMapKeyRef) Descriptor() ([]byte, []int) { + return fileDescriptor_030104ce3b95bcac, []int{54} +} +func (m *ConfigMapKeyRef) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ConfigMapKeyRef) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *ConfigMapKeyRef) XXX_Merge(src proto.Message) { + xxx_messageInfo_ConfigMapKeyRef.Merge(m, src) +} +func (m *ConfigMapKeyRef) XXX_Size() int { + return m.Size() +} +func (m *ConfigMapKeyRef) XXX_DiscardUnknown() { + xxx_messageInfo_ConfigMapKeyRef.DiscardUnknown(m) +} + +var xxx_messageInfo_ConfigMapKeyRef proto.InternalMessageInfo + func (m *ConnectionState) Reset() { *m = ConnectionState{} } func (*ConnectionState) ProtoMessage() {} func (*ConnectionState) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{54} + return fileDescriptor_030104ce3b95bcac, []int{55} } func (m *ConnectionState) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1584,7 +1612,7 @@ var xxx_messageInfo_ConnectionState proto.InternalMessageInfo func (m *DuckTypeGenerator) Reset() { *m = DuckTypeGenerator{} } func (*DuckTypeGenerator) ProtoMessage() {} func (*DuckTypeGenerator) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{55} + return fileDescriptor_030104ce3b95bcac, []int{56} } func (m *DuckTypeGenerator) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1612,7 +1640,7 @@ var xxx_messageInfo_DuckTypeGenerator proto.InternalMessageInfo func (m *EnvEntry) Reset() { *m = EnvEntry{} } func (*EnvEntry) ProtoMessage() {} func (*EnvEntry) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{56} + return fileDescriptor_030104ce3b95bcac, []int{57} } func (m *EnvEntry) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1640,7 +1668,7 @@ var xxx_messageInfo_EnvEntry proto.InternalMessageInfo func (m *ErrApplicationNotAllowedToUseProject) Reset() { *m = ErrApplicationNotAllowedToUseProject{} } func (*ErrApplicationNotAllowedToUseProject) ProtoMessage() {} func (*ErrApplicationNotAllowedToUseProject) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{57} + return fileDescriptor_030104ce3b95bcac, []int{58} } func (m *ErrApplicationNotAllowedToUseProject) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1668,7 +1696,7 @@ var xxx_messageInfo_ErrApplicationNotAllowedToUseProject proto.InternalMessageIn func (m *ExecProviderConfig) Reset() { *m = ExecProviderConfig{} } func (*ExecProviderConfig) ProtoMessage() {} func (*ExecProviderConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{58} + return fileDescriptor_030104ce3b95bcac, []int{59} } func (m *ExecProviderConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1696,7 +1724,7 @@ var xxx_messageInfo_ExecProviderConfig proto.InternalMessageInfo func (m *GitDirectoryGeneratorItem) Reset() { *m = GitDirectoryGeneratorItem{} } func (*GitDirectoryGeneratorItem) ProtoMessage() {} func (*GitDirectoryGeneratorItem) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{59} + return fileDescriptor_030104ce3b95bcac, []int{60} } func (m *GitDirectoryGeneratorItem) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1724,7 +1752,7 @@ var xxx_messageInfo_GitDirectoryGeneratorItem proto.InternalMessageInfo func (m *GitFileGeneratorItem) Reset() { *m = GitFileGeneratorItem{} } func (*GitFileGeneratorItem) ProtoMessage() {} func (*GitFileGeneratorItem) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{60} + return fileDescriptor_030104ce3b95bcac, []int{61} } func (m *GitFileGeneratorItem) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1752,7 +1780,7 @@ var xxx_messageInfo_GitFileGeneratorItem proto.InternalMessageInfo func (m *GitGenerator) Reset() { *m = GitGenerator{} } func (*GitGenerator) ProtoMessage() {} func (*GitGenerator) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{61} + return fileDescriptor_030104ce3b95bcac, []int{62} } func (m *GitGenerator) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1780,7 +1808,7 @@ var xxx_messageInfo_GitGenerator proto.InternalMessageInfo func (m *GnuPGPublicKey) Reset() { *m = GnuPGPublicKey{} } func (*GnuPGPublicKey) ProtoMessage() {} func (*GnuPGPublicKey) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{62} + return fileDescriptor_030104ce3b95bcac, []int{63} } func (m *GnuPGPublicKey) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1808,7 +1836,7 @@ var xxx_messageInfo_GnuPGPublicKey proto.InternalMessageInfo func (m *GnuPGPublicKeyList) Reset() { *m = GnuPGPublicKeyList{} } func (*GnuPGPublicKeyList) ProtoMessage() {} func (*GnuPGPublicKeyList) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{63} + return fileDescriptor_030104ce3b95bcac, []int{64} } func (m *GnuPGPublicKeyList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1836,7 +1864,7 @@ var xxx_messageInfo_GnuPGPublicKeyList proto.InternalMessageInfo func (m *HealthStatus) Reset() { *m = HealthStatus{} } func (*HealthStatus) ProtoMessage() {} func (*HealthStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{64} + return fileDescriptor_030104ce3b95bcac, []int{65} } func (m *HealthStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1864,7 +1892,7 @@ var xxx_messageInfo_HealthStatus proto.InternalMessageInfo func (m *HelmFileParameter) Reset() { *m = HelmFileParameter{} } func (*HelmFileParameter) ProtoMessage() {} func (*HelmFileParameter) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{65} + return fileDescriptor_030104ce3b95bcac, []int{66} } func (m *HelmFileParameter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1892,7 +1920,7 @@ var xxx_messageInfo_HelmFileParameter proto.InternalMessageInfo func (m *HelmOptions) Reset() { *m = HelmOptions{} } func (*HelmOptions) ProtoMessage() {} func (*HelmOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{66} + return fileDescriptor_030104ce3b95bcac, []int{67} } func (m *HelmOptions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1920,7 +1948,7 @@ var xxx_messageInfo_HelmOptions proto.InternalMessageInfo func (m *HelmParameter) Reset() { *m = HelmParameter{} } func (*HelmParameter) ProtoMessage() {} func (*HelmParameter) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{67} + return fileDescriptor_030104ce3b95bcac, []int{68} } func (m *HelmParameter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1948,7 +1976,7 @@ var xxx_messageInfo_HelmParameter proto.InternalMessageInfo func (m *HostInfo) Reset() { *m = HostInfo{} } func (*HostInfo) ProtoMessage() {} func (*HostInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{68} + return fileDescriptor_030104ce3b95bcac, []int{69} } func (m *HostInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1976,7 +2004,7 @@ var xxx_messageInfo_HostInfo proto.InternalMessageInfo func (m *HostResourceInfo) Reset() { *m = HostResourceInfo{} } func (*HostResourceInfo) ProtoMessage() {} func (*HostResourceInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{69} + return fileDescriptor_030104ce3b95bcac, []int{70} } func (m *HostResourceInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2004,7 +2032,7 @@ var xxx_messageInfo_HostResourceInfo proto.InternalMessageInfo func (m *Info) Reset() { *m = Info{} } func (*Info) ProtoMessage() {} func (*Info) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{70} + return fileDescriptor_030104ce3b95bcac, []int{71} } func (m *Info) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2032,7 +2060,7 @@ var xxx_messageInfo_Info proto.InternalMessageInfo func (m *InfoItem) Reset() { *m = InfoItem{} } func (*InfoItem) ProtoMessage() {} func (*InfoItem) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{71} + return fileDescriptor_030104ce3b95bcac, []int{72} } func (m *InfoItem) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2060,7 +2088,7 @@ var xxx_messageInfo_InfoItem proto.InternalMessageInfo func (m *JWTToken) Reset() { *m = JWTToken{} } func (*JWTToken) ProtoMessage() {} func (*JWTToken) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{72} + return fileDescriptor_030104ce3b95bcac, []int{73} } func (m *JWTToken) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2088,7 +2116,7 @@ var xxx_messageInfo_JWTToken proto.InternalMessageInfo func (m *JWTTokens) Reset() { *m = JWTTokens{} } func (*JWTTokens) ProtoMessage() {} func (*JWTTokens) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{73} + return fileDescriptor_030104ce3b95bcac, []int{74} } func (m *JWTTokens) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2116,7 +2144,7 @@ var xxx_messageInfo_JWTTokens proto.InternalMessageInfo func (m *JsonnetVar) Reset() { *m = JsonnetVar{} } func (*JsonnetVar) ProtoMessage() {} func (*JsonnetVar) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{74} + return fileDescriptor_030104ce3b95bcac, []int{75} } func (m *JsonnetVar) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2144,7 +2172,7 @@ var xxx_messageInfo_JsonnetVar proto.InternalMessageInfo func (m *KnownTypeField) Reset() { *m = KnownTypeField{} } func (*KnownTypeField) ProtoMessage() {} func (*KnownTypeField) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{75} + return fileDescriptor_030104ce3b95bcac, []int{76} } func (m *KnownTypeField) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2172,7 +2200,7 @@ var xxx_messageInfo_KnownTypeField proto.InternalMessageInfo func (m *KustomizeGvk) Reset() { *m = KustomizeGvk{} } func (*KustomizeGvk) ProtoMessage() {} func (*KustomizeGvk) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{76} + return fileDescriptor_030104ce3b95bcac, []int{77} } func (m *KustomizeGvk) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2200,7 +2228,7 @@ var xxx_messageInfo_KustomizeGvk proto.InternalMessageInfo func (m *KustomizeOptions) Reset() { *m = KustomizeOptions{} } func (*KustomizeOptions) ProtoMessage() {} func (*KustomizeOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{77} + return fileDescriptor_030104ce3b95bcac, []int{78} } func (m *KustomizeOptions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2228,7 +2256,7 @@ var xxx_messageInfo_KustomizeOptions proto.InternalMessageInfo func (m *KustomizePatch) Reset() { *m = KustomizePatch{} } func (*KustomizePatch) ProtoMessage() {} func (*KustomizePatch) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{78} + return fileDescriptor_030104ce3b95bcac, []int{79} } func (m *KustomizePatch) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2256,7 +2284,7 @@ var xxx_messageInfo_KustomizePatch proto.InternalMessageInfo func (m *KustomizeReplica) Reset() { *m = KustomizeReplica{} } func (*KustomizeReplica) ProtoMessage() {} func (*KustomizeReplica) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{79} + return fileDescriptor_030104ce3b95bcac, []int{80} } func (m *KustomizeReplica) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2284,7 +2312,7 @@ var xxx_messageInfo_KustomizeReplica proto.InternalMessageInfo func (m *KustomizeResId) Reset() { *m = KustomizeResId{} } func (*KustomizeResId) ProtoMessage() {} func (*KustomizeResId) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{80} + return fileDescriptor_030104ce3b95bcac, []int{81} } func (m *KustomizeResId) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2312,7 +2340,7 @@ var xxx_messageInfo_KustomizeResId proto.InternalMessageInfo func (m *KustomizeSelector) Reset() { *m = KustomizeSelector{} } func (*KustomizeSelector) ProtoMessage() {} func (*KustomizeSelector) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{81} + return fileDescriptor_030104ce3b95bcac, []int{82} } func (m *KustomizeSelector) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2340,7 +2368,7 @@ var xxx_messageInfo_KustomizeSelector proto.InternalMessageInfo func (m *ListGenerator) Reset() { *m = ListGenerator{} } func (*ListGenerator) ProtoMessage() {} func (*ListGenerator) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{82} + return fileDescriptor_030104ce3b95bcac, []int{83} } func (m *ListGenerator) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2368,7 +2396,7 @@ var xxx_messageInfo_ListGenerator proto.InternalMessageInfo func (m *ManagedNamespaceMetadata) Reset() { *m = ManagedNamespaceMetadata{} } func (*ManagedNamespaceMetadata) ProtoMessage() {} func (*ManagedNamespaceMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{83} + return fileDescriptor_030104ce3b95bcac, []int{84} } func (m *ManagedNamespaceMetadata) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2396,7 +2424,7 @@ var xxx_messageInfo_ManagedNamespaceMetadata proto.InternalMessageInfo func (m *MatrixGenerator) Reset() { *m = MatrixGenerator{} } func (*MatrixGenerator) ProtoMessage() {} func (*MatrixGenerator) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{84} + return fileDescriptor_030104ce3b95bcac, []int{85} } func (m *MatrixGenerator) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2424,7 +2452,7 @@ var xxx_messageInfo_MatrixGenerator proto.InternalMessageInfo func (m *MergeGenerator) Reset() { *m = MergeGenerator{} } func (*MergeGenerator) ProtoMessage() {} func (*MergeGenerator) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{85} + return fileDescriptor_030104ce3b95bcac, []int{86} } func (m *MergeGenerator) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2452,7 +2480,7 @@ var xxx_messageInfo_MergeGenerator proto.InternalMessageInfo func (m *NestedMatrixGenerator) Reset() { *m = NestedMatrixGenerator{} } func (*NestedMatrixGenerator) ProtoMessage() {} func (*NestedMatrixGenerator) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{86} + return fileDescriptor_030104ce3b95bcac, []int{87} } func (m *NestedMatrixGenerator) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2480,7 +2508,7 @@ var xxx_messageInfo_NestedMatrixGenerator proto.InternalMessageInfo func (m *NestedMergeGenerator) Reset() { *m = NestedMergeGenerator{} } func (*NestedMergeGenerator) ProtoMessage() {} func (*NestedMergeGenerator) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{87} + return fileDescriptor_030104ce3b95bcac, []int{88} } func (m *NestedMergeGenerator) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2508,7 +2536,7 @@ var xxx_messageInfo_NestedMergeGenerator proto.InternalMessageInfo func (m *Operation) Reset() { *m = Operation{} } func (*Operation) ProtoMessage() {} func (*Operation) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{88} + return fileDescriptor_030104ce3b95bcac, []int{89} } func (m *Operation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2536,7 +2564,7 @@ var xxx_messageInfo_Operation proto.InternalMessageInfo func (m *OperationInitiator) Reset() { *m = OperationInitiator{} } func (*OperationInitiator) ProtoMessage() {} func (*OperationInitiator) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{89} + return fileDescriptor_030104ce3b95bcac, []int{90} } func (m *OperationInitiator) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2564,7 +2592,7 @@ var xxx_messageInfo_OperationInitiator proto.InternalMessageInfo func (m *OperationState) Reset() { *m = OperationState{} } func (*OperationState) ProtoMessage() {} func (*OperationState) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{90} + return fileDescriptor_030104ce3b95bcac, []int{91} } func (m *OperationState) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2592,7 +2620,7 @@ var xxx_messageInfo_OperationState proto.InternalMessageInfo func (m *OptionalArray) Reset() { *m = OptionalArray{} } func (*OptionalArray) ProtoMessage() {} func (*OptionalArray) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{91} + return fileDescriptor_030104ce3b95bcac, []int{92} } func (m *OptionalArray) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2620,7 +2648,7 @@ var xxx_messageInfo_OptionalArray proto.InternalMessageInfo func (m *OptionalMap) Reset() { *m = OptionalMap{} } func (*OptionalMap) ProtoMessage() {} func (*OptionalMap) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{92} + return fileDescriptor_030104ce3b95bcac, []int{93} } func (m *OptionalMap) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2648,7 +2676,7 @@ var xxx_messageInfo_OptionalMap proto.InternalMessageInfo func (m *OrphanedResourceKey) Reset() { *m = OrphanedResourceKey{} } func (*OrphanedResourceKey) ProtoMessage() {} func (*OrphanedResourceKey) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{93} + return fileDescriptor_030104ce3b95bcac, []int{94} } func (m *OrphanedResourceKey) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2676,7 +2704,7 @@ var xxx_messageInfo_OrphanedResourceKey proto.InternalMessageInfo func (m *OrphanedResourcesMonitorSettings) Reset() { *m = OrphanedResourcesMonitorSettings{} } func (*OrphanedResourcesMonitorSettings) ProtoMessage() {} func (*OrphanedResourcesMonitorSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{94} + return fileDescriptor_030104ce3b95bcac, []int{95} } func (m *OrphanedResourcesMonitorSettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2704,7 +2732,7 @@ var xxx_messageInfo_OrphanedResourcesMonitorSettings proto.InternalMessageInfo func (m *OverrideIgnoreDiff) Reset() { *m = OverrideIgnoreDiff{} } func (*OverrideIgnoreDiff) ProtoMessage() {} func (*OverrideIgnoreDiff) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{95} + return fileDescriptor_030104ce3b95bcac, []int{96} } func (m *OverrideIgnoreDiff) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2732,7 +2760,7 @@ var xxx_messageInfo_OverrideIgnoreDiff proto.InternalMessageInfo func (m *PluginConfigMapRef) Reset() { *m = PluginConfigMapRef{} } func (*PluginConfigMapRef) ProtoMessage() {} func (*PluginConfigMapRef) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{96} + return fileDescriptor_030104ce3b95bcac, []int{97} } func (m *PluginConfigMapRef) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2760,7 +2788,7 @@ var xxx_messageInfo_PluginConfigMapRef proto.InternalMessageInfo func (m *PluginGenerator) Reset() { *m = PluginGenerator{} } func (*PluginGenerator) ProtoMessage() {} func (*PluginGenerator) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{97} + return fileDescriptor_030104ce3b95bcac, []int{98} } func (m *PluginGenerator) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2788,7 +2816,7 @@ var xxx_messageInfo_PluginGenerator proto.InternalMessageInfo func (m *PluginInput) Reset() { *m = PluginInput{} } func (*PluginInput) ProtoMessage() {} func (*PluginInput) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{98} + return fileDescriptor_030104ce3b95bcac, []int{99} } func (m *PluginInput) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2816,7 +2844,7 @@ var xxx_messageInfo_PluginInput proto.InternalMessageInfo func (m *ProjectRole) Reset() { *m = ProjectRole{} } func (*ProjectRole) ProtoMessage() {} func (*ProjectRole) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{99} + return fileDescriptor_030104ce3b95bcac, []int{100} } func (m *ProjectRole) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2844,7 +2872,7 @@ var xxx_messageInfo_ProjectRole proto.InternalMessageInfo func (m *PullRequestGenerator) Reset() { *m = PullRequestGenerator{} } func (*PullRequestGenerator) ProtoMessage() {} func (*PullRequestGenerator) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{100} + return fileDescriptor_030104ce3b95bcac, []int{101} } func (m *PullRequestGenerator) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2872,7 +2900,7 @@ var xxx_messageInfo_PullRequestGenerator proto.InternalMessageInfo func (m *PullRequestGeneratorAzureDevOps) Reset() { *m = PullRequestGeneratorAzureDevOps{} } func (*PullRequestGeneratorAzureDevOps) ProtoMessage() {} func (*PullRequestGeneratorAzureDevOps) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{101} + return fileDescriptor_030104ce3b95bcac, []int{102} } func (m *PullRequestGeneratorAzureDevOps) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2900,7 +2928,7 @@ var xxx_messageInfo_PullRequestGeneratorAzureDevOps proto.InternalMessageInfo func (m *PullRequestGeneratorBitbucket) Reset() { *m = PullRequestGeneratorBitbucket{} } func (*PullRequestGeneratorBitbucket) ProtoMessage() {} func (*PullRequestGeneratorBitbucket) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{102} + return fileDescriptor_030104ce3b95bcac, []int{103} } func (m *PullRequestGeneratorBitbucket) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2928,7 +2956,7 @@ var xxx_messageInfo_PullRequestGeneratorBitbucket proto.InternalMessageInfo func (m *PullRequestGeneratorBitbucketServer) Reset() { *m = PullRequestGeneratorBitbucketServer{} } func (*PullRequestGeneratorBitbucketServer) ProtoMessage() {} func (*PullRequestGeneratorBitbucketServer) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{103} + return fileDescriptor_030104ce3b95bcac, []int{104} } func (m *PullRequestGeneratorBitbucketServer) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2956,7 +2984,7 @@ var xxx_messageInfo_PullRequestGeneratorBitbucketServer proto.InternalMessageInf func (m *PullRequestGeneratorFilter) Reset() { *m = PullRequestGeneratorFilter{} } func (*PullRequestGeneratorFilter) ProtoMessage() {} func (*PullRequestGeneratorFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{104} + return fileDescriptor_030104ce3b95bcac, []int{105} } func (m *PullRequestGeneratorFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2984,7 +3012,7 @@ var xxx_messageInfo_PullRequestGeneratorFilter proto.InternalMessageInfo func (m *PullRequestGeneratorGitLab) Reset() { *m = PullRequestGeneratorGitLab{} } func (*PullRequestGeneratorGitLab) ProtoMessage() {} func (*PullRequestGeneratorGitLab) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{105} + return fileDescriptor_030104ce3b95bcac, []int{106} } func (m *PullRequestGeneratorGitLab) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3012,7 +3040,7 @@ var xxx_messageInfo_PullRequestGeneratorGitLab proto.InternalMessageInfo func (m *PullRequestGeneratorGitea) Reset() { *m = PullRequestGeneratorGitea{} } func (*PullRequestGeneratorGitea) ProtoMessage() {} func (*PullRequestGeneratorGitea) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{106} + return fileDescriptor_030104ce3b95bcac, []int{107} } func (m *PullRequestGeneratorGitea) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3040,7 +3068,7 @@ var xxx_messageInfo_PullRequestGeneratorGitea proto.InternalMessageInfo func (m *PullRequestGeneratorGithub) Reset() { *m = PullRequestGeneratorGithub{} } func (*PullRequestGeneratorGithub) ProtoMessage() {} func (*PullRequestGeneratorGithub) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{107} + return fileDescriptor_030104ce3b95bcac, []int{108} } func (m *PullRequestGeneratorGithub) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3068,7 +3096,7 @@ var xxx_messageInfo_PullRequestGeneratorGithub proto.InternalMessageInfo func (m *RefTarget) Reset() { *m = RefTarget{} } func (*RefTarget) ProtoMessage() {} func (*RefTarget) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{108} + return fileDescriptor_030104ce3b95bcac, []int{109} } func (m *RefTarget) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3096,7 +3124,7 @@ var xxx_messageInfo_RefTarget proto.InternalMessageInfo func (m *RepoCreds) Reset() { *m = RepoCreds{} } func (*RepoCreds) ProtoMessage() {} func (*RepoCreds) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{109} + return fileDescriptor_030104ce3b95bcac, []int{110} } func (m *RepoCreds) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3124,7 +3152,7 @@ var xxx_messageInfo_RepoCreds proto.InternalMessageInfo func (m *RepoCredsList) Reset() { *m = RepoCredsList{} } func (*RepoCredsList) ProtoMessage() {} func (*RepoCredsList) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{110} + return fileDescriptor_030104ce3b95bcac, []int{111} } func (m *RepoCredsList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3152,7 +3180,7 @@ var xxx_messageInfo_RepoCredsList proto.InternalMessageInfo func (m *Repository) Reset() { *m = Repository{} } func (*Repository) ProtoMessage() {} func (*Repository) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{111} + return fileDescriptor_030104ce3b95bcac, []int{112} } func (m *Repository) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3180,7 +3208,7 @@ var xxx_messageInfo_Repository proto.InternalMessageInfo func (m *RepositoryCertificate) Reset() { *m = RepositoryCertificate{} } func (*RepositoryCertificate) ProtoMessage() {} func (*RepositoryCertificate) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{112} + return fileDescriptor_030104ce3b95bcac, []int{113} } func (m *RepositoryCertificate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3208,7 +3236,7 @@ var xxx_messageInfo_RepositoryCertificate proto.InternalMessageInfo func (m *RepositoryCertificateList) Reset() { *m = RepositoryCertificateList{} } func (*RepositoryCertificateList) ProtoMessage() {} func (*RepositoryCertificateList) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{113} + return fileDescriptor_030104ce3b95bcac, []int{114} } func (m *RepositoryCertificateList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3236,7 +3264,7 @@ var xxx_messageInfo_RepositoryCertificateList proto.InternalMessageInfo func (m *RepositoryList) Reset() { *m = RepositoryList{} } func (*RepositoryList) ProtoMessage() {} func (*RepositoryList) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{114} + return fileDescriptor_030104ce3b95bcac, []int{115} } func (m *RepositoryList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3264,7 +3292,7 @@ var xxx_messageInfo_RepositoryList proto.InternalMessageInfo func (m *ResourceAction) Reset() { *m = ResourceAction{} } func (*ResourceAction) ProtoMessage() {} func (*ResourceAction) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{115} + return fileDescriptor_030104ce3b95bcac, []int{116} } func (m *ResourceAction) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3292,7 +3320,7 @@ var xxx_messageInfo_ResourceAction proto.InternalMessageInfo func (m *ResourceActionDefinition) Reset() { *m = ResourceActionDefinition{} } func (*ResourceActionDefinition) ProtoMessage() {} func (*ResourceActionDefinition) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{116} + return fileDescriptor_030104ce3b95bcac, []int{117} } func (m *ResourceActionDefinition) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3320,7 +3348,7 @@ var xxx_messageInfo_ResourceActionDefinition proto.InternalMessageInfo func (m *ResourceActionParam) Reset() { *m = ResourceActionParam{} } func (*ResourceActionParam) ProtoMessage() {} func (*ResourceActionParam) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{117} + return fileDescriptor_030104ce3b95bcac, []int{118} } func (m *ResourceActionParam) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3348,7 +3376,7 @@ var xxx_messageInfo_ResourceActionParam proto.InternalMessageInfo func (m *ResourceActions) Reset() { *m = ResourceActions{} } func (*ResourceActions) ProtoMessage() {} func (*ResourceActions) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{118} + return fileDescriptor_030104ce3b95bcac, []int{119} } func (m *ResourceActions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3376,7 +3404,7 @@ var xxx_messageInfo_ResourceActions proto.InternalMessageInfo func (m *ResourceDiff) Reset() { *m = ResourceDiff{} } func (*ResourceDiff) ProtoMessage() {} func (*ResourceDiff) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{119} + return fileDescriptor_030104ce3b95bcac, []int{120} } func (m *ResourceDiff) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3404,7 +3432,7 @@ var xxx_messageInfo_ResourceDiff proto.InternalMessageInfo func (m *ResourceIgnoreDifferences) Reset() { *m = ResourceIgnoreDifferences{} } func (*ResourceIgnoreDifferences) ProtoMessage() {} func (*ResourceIgnoreDifferences) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{120} + return fileDescriptor_030104ce3b95bcac, []int{121} } func (m *ResourceIgnoreDifferences) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3432,7 +3460,7 @@ var xxx_messageInfo_ResourceIgnoreDifferences proto.InternalMessageInfo func (m *ResourceNetworkingInfo) Reset() { *m = ResourceNetworkingInfo{} } func (*ResourceNetworkingInfo) ProtoMessage() {} func (*ResourceNetworkingInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{121} + return fileDescriptor_030104ce3b95bcac, []int{122} } func (m *ResourceNetworkingInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3460,7 +3488,7 @@ var xxx_messageInfo_ResourceNetworkingInfo proto.InternalMessageInfo func (m *ResourceNode) Reset() { *m = ResourceNode{} } func (*ResourceNode) ProtoMessage() {} func (*ResourceNode) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{122} + return fileDescriptor_030104ce3b95bcac, []int{123} } func (m *ResourceNode) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3488,7 +3516,7 @@ var xxx_messageInfo_ResourceNode proto.InternalMessageInfo func (m *ResourceOverride) Reset() { *m = ResourceOverride{} } func (*ResourceOverride) ProtoMessage() {} func (*ResourceOverride) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{123} + return fileDescriptor_030104ce3b95bcac, []int{124} } func (m *ResourceOverride) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3516,7 +3544,7 @@ var xxx_messageInfo_ResourceOverride proto.InternalMessageInfo func (m *ResourceRef) Reset() { *m = ResourceRef{} } func (*ResourceRef) ProtoMessage() {} func (*ResourceRef) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{124} + return fileDescriptor_030104ce3b95bcac, []int{125} } func (m *ResourceRef) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3544,7 +3572,7 @@ var xxx_messageInfo_ResourceRef proto.InternalMessageInfo func (m *ResourceResult) Reset() { *m = ResourceResult{} } func (*ResourceResult) ProtoMessage() {} func (*ResourceResult) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{125} + return fileDescriptor_030104ce3b95bcac, []int{126} } func (m *ResourceResult) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3572,7 +3600,7 @@ var xxx_messageInfo_ResourceResult proto.InternalMessageInfo func (m *ResourceStatus) Reset() { *m = ResourceStatus{} } func (*ResourceStatus) ProtoMessage() {} func (*ResourceStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{126} + return fileDescriptor_030104ce3b95bcac, []int{127} } func (m *ResourceStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3600,7 +3628,7 @@ var xxx_messageInfo_ResourceStatus proto.InternalMessageInfo func (m *RetryStrategy) Reset() { *m = RetryStrategy{} } func (*RetryStrategy) ProtoMessage() {} func (*RetryStrategy) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{127} + return fileDescriptor_030104ce3b95bcac, []int{128} } func (m *RetryStrategy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3628,7 +3656,7 @@ var xxx_messageInfo_RetryStrategy proto.InternalMessageInfo func (m *RevisionHistory) Reset() { *m = RevisionHistory{} } func (*RevisionHistory) ProtoMessage() {} func (*RevisionHistory) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{128} + return fileDescriptor_030104ce3b95bcac, []int{129} } func (m *RevisionHistory) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3656,7 +3684,7 @@ var xxx_messageInfo_RevisionHistory proto.InternalMessageInfo func (m *RevisionMetadata) Reset() { *m = RevisionMetadata{} } func (*RevisionMetadata) ProtoMessage() {} func (*RevisionMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{129} + return fileDescriptor_030104ce3b95bcac, []int{130} } func (m *RevisionMetadata) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3684,7 +3712,7 @@ var xxx_messageInfo_RevisionMetadata proto.InternalMessageInfo func (m *SCMProviderGenerator) Reset() { *m = SCMProviderGenerator{} } func (*SCMProviderGenerator) ProtoMessage() {} func (*SCMProviderGenerator) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{130} + return fileDescriptor_030104ce3b95bcac, []int{131} } func (m *SCMProviderGenerator) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3712,7 +3740,7 @@ var xxx_messageInfo_SCMProviderGenerator proto.InternalMessageInfo func (m *SCMProviderGeneratorAWSCodeCommit) Reset() { *m = SCMProviderGeneratorAWSCodeCommit{} } func (*SCMProviderGeneratorAWSCodeCommit) ProtoMessage() {} func (*SCMProviderGeneratorAWSCodeCommit) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{131} + return fileDescriptor_030104ce3b95bcac, []int{132} } func (m *SCMProviderGeneratorAWSCodeCommit) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3740,7 +3768,7 @@ var xxx_messageInfo_SCMProviderGeneratorAWSCodeCommit proto.InternalMessageInfo func (m *SCMProviderGeneratorAzureDevOps) Reset() { *m = SCMProviderGeneratorAzureDevOps{} } func (*SCMProviderGeneratorAzureDevOps) ProtoMessage() {} func (*SCMProviderGeneratorAzureDevOps) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{132} + return fileDescriptor_030104ce3b95bcac, []int{133} } func (m *SCMProviderGeneratorAzureDevOps) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3768,7 +3796,7 @@ var xxx_messageInfo_SCMProviderGeneratorAzureDevOps proto.InternalMessageInfo func (m *SCMProviderGeneratorBitbucket) Reset() { *m = SCMProviderGeneratorBitbucket{} } func (*SCMProviderGeneratorBitbucket) ProtoMessage() {} func (*SCMProviderGeneratorBitbucket) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{133} + return fileDescriptor_030104ce3b95bcac, []int{134} } func (m *SCMProviderGeneratorBitbucket) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3796,7 +3824,7 @@ var xxx_messageInfo_SCMProviderGeneratorBitbucket proto.InternalMessageInfo func (m *SCMProviderGeneratorBitbucketServer) Reset() { *m = SCMProviderGeneratorBitbucketServer{} } func (*SCMProviderGeneratorBitbucketServer) ProtoMessage() {} func (*SCMProviderGeneratorBitbucketServer) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{134} + return fileDescriptor_030104ce3b95bcac, []int{135} } func (m *SCMProviderGeneratorBitbucketServer) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3824,7 +3852,7 @@ var xxx_messageInfo_SCMProviderGeneratorBitbucketServer proto.InternalMessageInf func (m *SCMProviderGeneratorFilter) Reset() { *m = SCMProviderGeneratorFilter{} } func (*SCMProviderGeneratorFilter) ProtoMessage() {} func (*SCMProviderGeneratorFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{135} + return fileDescriptor_030104ce3b95bcac, []int{136} } func (m *SCMProviderGeneratorFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3852,7 +3880,7 @@ var xxx_messageInfo_SCMProviderGeneratorFilter proto.InternalMessageInfo func (m *SCMProviderGeneratorGitea) Reset() { *m = SCMProviderGeneratorGitea{} } func (*SCMProviderGeneratorGitea) ProtoMessage() {} func (*SCMProviderGeneratorGitea) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{136} + return fileDescriptor_030104ce3b95bcac, []int{137} } func (m *SCMProviderGeneratorGitea) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3880,7 +3908,7 @@ var xxx_messageInfo_SCMProviderGeneratorGitea proto.InternalMessageInfo func (m *SCMProviderGeneratorGithub) Reset() { *m = SCMProviderGeneratorGithub{} } func (*SCMProviderGeneratorGithub) ProtoMessage() {} func (*SCMProviderGeneratorGithub) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{137} + return fileDescriptor_030104ce3b95bcac, []int{138} } func (m *SCMProviderGeneratorGithub) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3908,7 +3936,7 @@ var xxx_messageInfo_SCMProviderGeneratorGithub proto.InternalMessageInfo func (m *SCMProviderGeneratorGitlab) Reset() { *m = SCMProviderGeneratorGitlab{} } func (*SCMProviderGeneratorGitlab) ProtoMessage() {} func (*SCMProviderGeneratorGitlab) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{138} + return fileDescriptor_030104ce3b95bcac, []int{139} } func (m *SCMProviderGeneratorGitlab) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3936,7 +3964,7 @@ var xxx_messageInfo_SCMProviderGeneratorGitlab proto.InternalMessageInfo func (m *SecretRef) Reset() { *m = SecretRef{} } func (*SecretRef) ProtoMessage() {} func (*SecretRef) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{139} + return fileDescriptor_030104ce3b95bcac, []int{140} } func (m *SecretRef) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3964,7 +3992,7 @@ var xxx_messageInfo_SecretRef proto.InternalMessageInfo func (m *SignatureKey) Reset() { *m = SignatureKey{} } func (*SignatureKey) ProtoMessage() {} func (*SignatureKey) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{140} + return fileDescriptor_030104ce3b95bcac, []int{141} } func (m *SignatureKey) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3992,7 +4020,7 @@ var xxx_messageInfo_SignatureKey proto.InternalMessageInfo func (m *SyncOperation) Reset() { *m = SyncOperation{} } func (*SyncOperation) ProtoMessage() {} func (*SyncOperation) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{141} + return fileDescriptor_030104ce3b95bcac, []int{142} } func (m *SyncOperation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4020,7 +4048,7 @@ var xxx_messageInfo_SyncOperation proto.InternalMessageInfo func (m *SyncOperationResource) Reset() { *m = SyncOperationResource{} } func (*SyncOperationResource) ProtoMessage() {} func (*SyncOperationResource) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{142} + return fileDescriptor_030104ce3b95bcac, []int{143} } func (m *SyncOperationResource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4048,7 +4076,7 @@ var xxx_messageInfo_SyncOperationResource proto.InternalMessageInfo func (m *SyncOperationResult) Reset() { *m = SyncOperationResult{} } func (*SyncOperationResult) ProtoMessage() {} func (*SyncOperationResult) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{143} + return fileDescriptor_030104ce3b95bcac, []int{144} } func (m *SyncOperationResult) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4076,7 +4104,7 @@ var xxx_messageInfo_SyncOperationResult proto.InternalMessageInfo func (m *SyncPolicy) Reset() { *m = SyncPolicy{} } func (*SyncPolicy) ProtoMessage() {} func (*SyncPolicy) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{144} + return fileDescriptor_030104ce3b95bcac, []int{145} } func (m *SyncPolicy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4104,7 +4132,7 @@ var xxx_messageInfo_SyncPolicy proto.InternalMessageInfo func (m *SyncPolicyAutomated) Reset() { *m = SyncPolicyAutomated{} } func (*SyncPolicyAutomated) ProtoMessage() {} func (*SyncPolicyAutomated) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{145} + return fileDescriptor_030104ce3b95bcac, []int{146} } func (m *SyncPolicyAutomated) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4132,7 +4160,7 @@ var xxx_messageInfo_SyncPolicyAutomated proto.InternalMessageInfo func (m *SyncStatus) Reset() { *m = SyncStatus{} } func (*SyncStatus) ProtoMessage() {} func (*SyncStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{146} + return fileDescriptor_030104ce3b95bcac, []int{147} } func (m *SyncStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4160,7 +4188,7 @@ var xxx_messageInfo_SyncStatus proto.InternalMessageInfo func (m *SyncStrategy) Reset() { *m = SyncStrategy{} } func (*SyncStrategy) ProtoMessage() {} func (*SyncStrategy) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{147} + return fileDescriptor_030104ce3b95bcac, []int{148} } func (m *SyncStrategy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4188,7 +4216,7 @@ var xxx_messageInfo_SyncStrategy proto.InternalMessageInfo func (m *SyncStrategyApply) Reset() { *m = SyncStrategyApply{} } func (*SyncStrategyApply) ProtoMessage() {} func (*SyncStrategyApply) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{148} + return fileDescriptor_030104ce3b95bcac, []int{149} } func (m *SyncStrategyApply) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4216,7 +4244,7 @@ var xxx_messageInfo_SyncStrategyApply proto.InternalMessageInfo func (m *SyncStrategyHook) Reset() { *m = SyncStrategyHook{} } func (*SyncStrategyHook) ProtoMessage() {} func (*SyncStrategyHook) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{149} + return fileDescriptor_030104ce3b95bcac, []int{150} } func (m *SyncStrategyHook) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4244,7 +4272,7 @@ var xxx_messageInfo_SyncStrategyHook proto.InternalMessageInfo func (m *SyncWindow) Reset() { *m = SyncWindow{} } func (*SyncWindow) ProtoMessage() {} func (*SyncWindow) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{150} + return fileDescriptor_030104ce3b95bcac, []int{151} } func (m *SyncWindow) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4272,7 +4300,7 @@ var xxx_messageInfo_SyncWindow proto.InternalMessageInfo func (m *TLSClientConfig) Reset() { *m = TLSClientConfig{} } func (*TLSClientConfig) ProtoMessage() {} func (*TLSClientConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{151} + return fileDescriptor_030104ce3b95bcac, []int{152} } func (m *TLSClientConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4300,7 +4328,7 @@ var xxx_messageInfo_TLSClientConfig proto.InternalMessageInfo func (m *TagFilter) Reset() { *m = TagFilter{} } func (*TagFilter) ProtoMessage() {} func (*TagFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{152} + return fileDescriptor_030104ce3b95bcac, []int{153} } func (m *TagFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4388,6 +4416,7 @@ func init() { proto.RegisterType((*ComparedTo)(nil), "github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.ComparedTo") proto.RegisterType((*ComponentParameter)(nil), "github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.ComponentParameter") proto.RegisterType((*ConfigManagementPlugin)(nil), "github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.ConfigManagementPlugin") + proto.RegisterType((*ConfigMapKeyRef)(nil), "github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.ConfigMapKeyRef") proto.RegisterType((*ConnectionState)(nil), "github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.ConnectionState") proto.RegisterType((*DuckTypeGenerator)(nil), "github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.DuckTypeGenerator") proto.RegisterMapType((map[string]string)(nil), "github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.DuckTypeGenerator.ValuesEntry") @@ -4506,701 +4535,705 @@ func init() { } var fileDescriptor_030104ce3b95bcac = []byte{ - // 11095 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x6f, 0x70, 0x24, 0xc7, - 0x75, 0x18, 0xae, 0xd9, 0xc5, 0x02, 0xbb, 0x0f, 0x7f, 0xee, 0xae, 0xef, 0x8e, 0x04, 0x4f, 0x24, - 0x71, 0x1e, 0xda, 0x14, 0xf5, 0x13, 0x09, 0x98, 0x27, 0x52, 0xe6, 0x4f, 0xb4, 0x24, 0x63, 0x81, - 0x3b, 0x1c, 0xee, 0x80, 0x03, 0xd8, 0xc0, 0xdd, 0x49, 0x94, 0x29, 0x6a, 0xb0, 0xdb, 0x58, 0xcc, - 0x61, 0x76, 0x66, 0x38, 0x33, 0x8b, 0x03, 0x68, 0x49, 0x96, 0x2c, 0xc9, 0x56, 0xa2, 0x3f, 0x54, - 0xa4, 0xa4, 0x4c, 0x27, 0x96, 0x22, 0x5b, 0x4e, 0x2a, 0xae, 0x44, 0x15, 0x27, 0xf9, 0x10, 0x27, - 0x4e, 0xca, 0x15, 0x3b, 0x95, 0x52, 0xe2, 0xa4, 0xec, 0x72, 0xb9, 0x2c, 0x27, 0xb1, 0x11, 0xe9, - 0x52, 0xa9, 0xa4, 0x52, 0x15, 0x57, 0x39, 0xf1, 0x87, 0xe4, 0x92, 0x0f, 0xa9, 0xfe, 0xdf, 0x33, - 0x3b, 0x0b, 0x2c, 0x80, 0xc1, 0xdd, 0x49, 0xe1, 0xb7, 0xdd, 0x7e, 0x6f, 0xde, 0xeb, 0xe9, 0xe9, - 0x7e, 0xef, 0xf5, 0xeb, 0xf7, 0x5e, 0xc3, 0x42, 0xcb, 0x4d, 0x36, 0x3a, 0x6b, 0x93, 0x8d, 0xa0, - 0x3d, 0xe5, 0x44, 0xad, 0x20, 0x8c, 0x82, 0x5b, 0xec, 0xc7, 0x33, 0x8d, 0xe6, 0xd4, 0xd6, 0x85, - 0xa9, 0x70, 0xb3, 0x35, 0xe5, 0x84, 0x6e, 0x3c, 0xe5, 0x84, 0xa1, 0xe7, 0x36, 0x9c, 0xc4, 0x0d, - 0xfc, 0xa9, 0xad, 0x67, 0x1d, 0x2f, 0xdc, 0x70, 0x9e, 0x9d, 0x6a, 0x11, 0x9f, 0x44, 0x4e, 0x42, - 0x9a, 0x93, 0x61, 0x14, 0x24, 0x01, 0xfa, 0x71, 0x4d, 0x6d, 0x52, 0x52, 0x63, 0x3f, 0x5e, 0x6d, - 0x34, 0x27, 0xb7, 0x2e, 0x4c, 0x86, 0x9b, 0xad, 0x49, 0x4a, 0x6d, 0xd2, 0xa0, 0x36, 0x29, 0xa9, - 0x9d, 0x7b, 0xc6, 0xe8, 0x4b, 0x2b, 0x68, 0x05, 0x53, 0x8c, 0xe8, 0x5a, 0x67, 0x9d, 0xfd, 0x63, - 0x7f, 0xd8, 0x2f, 0xce, 0xec, 0x9c, 0xbd, 0xf9, 0x42, 0x3c, 0xe9, 0x06, 0xb4, 0x7b, 0x53, 0x8d, - 0x20, 0x22, 0x53, 0x5b, 0x5d, 0x1d, 0x3a, 0x77, 0x59, 0xe3, 0x90, 0xed, 0x84, 0xf8, 0xb1, 0x1b, - 0xf8, 0xf1, 0x33, 0xb4, 0x0b, 0x24, 0xda, 0x22, 0x91, 0xf9, 0x7a, 0x06, 0x42, 0x1e, 0xa5, 0xe7, - 0x34, 0xa5, 0xb6, 0xd3, 0xd8, 0x70, 0x7d, 0x12, 0xed, 0xe8, 0xc7, 0xdb, 0x24, 0x71, 0xf2, 0x9e, - 0x9a, 0xea, 0xf5, 0x54, 0xd4, 0xf1, 0x13, 0xb7, 0x4d, 0xba, 0x1e, 0x78, 0xcf, 0x7e, 0x0f, 0xc4, - 0x8d, 0x0d, 0xd2, 0x76, 0xba, 0x9e, 0x7b, 0x77, 0xaf, 0xe7, 0x3a, 0x89, 0xeb, 0x4d, 0xb9, 0x7e, - 0x12, 0x27, 0x51, 0xf6, 0x21, 0xfb, 0x17, 0x2d, 0x18, 0x9d, 0xbe, 0xb9, 0x32, 0xdd, 0x49, 0x36, - 0x66, 0x02, 0x7f, 0xdd, 0x6d, 0xa1, 0xe7, 0x61, 0xb8, 0xe1, 0x75, 0xe2, 0x84, 0x44, 0xd7, 0x9c, - 0x36, 0x19, 0xb7, 0xce, 0x5b, 0x4f, 0xd5, 0xea, 0xa7, 0xbf, 0xbd, 0x3b, 0xf1, 0xb6, 0x3b, 0xbb, - 0x13, 0xc3, 0x33, 0x1a, 0x84, 0x4d, 0x3c, 0xf4, 0x4e, 0x18, 0x8a, 0x02, 0x8f, 0x4c, 0xe3, 0x6b, - 0xe3, 0x25, 0xf6, 0xc8, 0x09, 0xf1, 0xc8, 0x10, 0xe6, 0xcd, 0x58, 0xc2, 0x29, 0x6a, 0x18, 0x05, - 0xeb, 0xae, 0x47, 0xc6, 0xcb, 0x69, 0xd4, 0x65, 0xde, 0x8c, 0x25, 0xdc, 0xfe, 0xc3, 0x12, 0xc0, - 0x74, 0x18, 0x2e, 0x47, 0xc1, 0x2d, 0xd2, 0x48, 0xd0, 0x47, 0xa1, 0x4a, 0x87, 0xb9, 0xe9, 0x24, - 0x0e, 0xeb, 0xd8, 0xf0, 0x85, 0x1f, 0x9d, 0xe4, 0x6f, 0x3d, 0x69, 0xbe, 0xb5, 0x9e, 0x64, 0x14, - 0x7b, 0x72, 0xeb, 0xd9, 0xc9, 0xa5, 0x35, 0xfa, 0xfc, 0x22, 0x49, 0x9c, 0x3a, 0x12, 0xcc, 0x40, - 0xb7, 0x61, 0x45, 0x15, 0xf9, 0x30, 0x10, 0x87, 0xa4, 0xc1, 0xde, 0x61, 0xf8, 0xc2, 0xc2, 0xe4, - 0x51, 0x66, 0xf3, 0xa4, 0xee, 0xf9, 0x4a, 0x48, 0x1a, 0xf5, 0x11, 0xc1, 0x79, 0x80, 0xfe, 0xc3, - 0x8c, 0x0f, 0xda, 0x82, 0xc1, 0x38, 0x71, 0x92, 0x4e, 0xcc, 0x86, 0x62, 0xf8, 0xc2, 0xb5, 0xc2, - 0x38, 0x32, 0xaa, 0xf5, 0x31, 0xc1, 0x73, 0x90, 0xff, 0xc7, 0x82, 0x9b, 0xfd, 0x27, 0x16, 0x8c, - 0x69, 0xe4, 0x05, 0x37, 0x4e, 0xd0, 0x4f, 0x76, 0x0d, 0xee, 0x64, 0x7f, 0x83, 0x4b, 0x9f, 0x66, - 0x43, 0x7b, 0x52, 0x30, 0xab, 0xca, 0x16, 0x63, 0x60, 0xdb, 0x50, 0x71, 0x13, 0xd2, 0x8e, 0xc7, - 0x4b, 0xe7, 0xcb, 0x4f, 0x0d, 0x5f, 0xb8, 0x5c, 0xd4, 0x7b, 0xd6, 0x47, 0x05, 0xd3, 0xca, 0x3c, - 0x25, 0x8f, 0x39, 0x17, 0xfb, 0x57, 0x47, 0xcc, 0xf7, 0xa3, 0x03, 0x8e, 0x9e, 0x85, 0xe1, 0x38, - 0xe8, 0x44, 0x0d, 0x82, 0x49, 0x18, 0xc4, 0xe3, 0xd6, 0xf9, 0x32, 0x9d, 0x7a, 0x74, 0x52, 0xaf, - 0xe8, 0x66, 0x6c, 0xe2, 0xa0, 0x2f, 0x59, 0x30, 0xd2, 0x24, 0x71, 0xe2, 0xfa, 0x8c, 0xbf, 0xec, - 0xfc, 0xea, 0x91, 0x3b, 0x2f, 0x1b, 0x67, 0x35, 0xf1, 0xfa, 0x19, 0xf1, 0x22, 0x23, 0x46, 0x63, - 0x8c, 0x53, 0xfc, 0xe9, 0xe2, 0x6c, 0x92, 0xb8, 0x11, 0xb9, 0x21, 0xfd, 0x2f, 0x96, 0x8f, 0x5a, - 0x9c, 0xb3, 0x1a, 0x84, 0x4d, 0x3c, 0xe4, 0x43, 0x85, 0x2e, 0xbe, 0x78, 0x7c, 0x80, 0xf5, 0x7f, - 0xfe, 0x68, 0xfd, 0x17, 0x83, 0x4a, 0xd7, 0xb5, 0x1e, 0x7d, 0xfa, 0x2f, 0xc6, 0x9c, 0x0d, 0xfa, - 0xa2, 0x05, 0xe3, 0x42, 0x38, 0x60, 0xc2, 0x07, 0xf4, 0xe6, 0x86, 0x9b, 0x10, 0xcf, 0x8d, 0x93, - 0xf1, 0x0a, 0xeb, 0xc3, 0x54, 0x7f, 0x73, 0x6b, 0x2e, 0x0a, 0x3a, 0xe1, 0x55, 0xd7, 0x6f, 0xd6, - 0xcf, 0x0b, 0x4e, 0xe3, 0x33, 0x3d, 0x08, 0xe3, 0x9e, 0x2c, 0xd1, 0x57, 0x2d, 0x38, 0xe7, 0x3b, - 0x6d, 0x12, 0x87, 0x0e, 0xfd, 0xb4, 0x1c, 0x5c, 0xf7, 0x9c, 0xc6, 0x26, 0xeb, 0xd1, 0xe0, 0xe1, - 0x7a, 0x64, 0x8b, 0x1e, 0x9d, 0xbb, 0xd6, 0x93, 0x34, 0xde, 0x83, 0x2d, 0xfa, 0xa6, 0x05, 0xa7, - 0x82, 0x28, 0xdc, 0x70, 0x7c, 0xd2, 0x94, 0xd0, 0x78, 0x7c, 0x88, 0x2d, 0xbd, 0x8f, 0x1c, 0xed, - 0x13, 0x2d, 0x65, 0xc9, 0x2e, 0x06, 0xbe, 0x9b, 0x04, 0xd1, 0x0a, 0x49, 0x12, 0xd7, 0x6f, 0xc5, - 0xf5, 0xb3, 0x77, 0x76, 0x27, 0x4e, 0x75, 0x61, 0xe1, 0xee, 0xfe, 0xa0, 0x9f, 0x82, 0xe1, 0x78, - 0xc7, 0x6f, 0xdc, 0x74, 0xfd, 0x66, 0x70, 0x3b, 0x1e, 0xaf, 0x16, 0xb1, 0x7c, 0x57, 0x14, 0x41, - 0xb1, 0x00, 0x35, 0x03, 0x6c, 0x72, 0xcb, 0xff, 0x70, 0x7a, 0x2a, 0xd5, 0x8a, 0xfe, 0x70, 0x7a, - 0x32, 0xed, 0xc1, 0x16, 0xfd, 0x9c, 0x05, 0xa3, 0xb1, 0xdb, 0xf2, 0x9d, 0xa4, 0x13, 0x91, 0xab, - 0x64, 0x27, 0x1e, 0x07, 0xd6, 0x91, 0x2b, 0x47, 0x1c, 0x15, 0x83, 0x64, 0xfd, 0xac, 0xe8, 0xe3, - 0xa8, 0xd9, 0x1a, 0xe3, 0x34, 0xdf, 0xbc, 0x85, 0xa6, 0xa7, 0xf5, 0x70, 0xb1, 0x0b, 0x4d, 0x4f, - 0xea, 0x9e, 0x2c, 0xd1, 0x4f, 0xc0, 0x49, 0xde, 0xa4, 0x46, 0x36, 0x1e, 0x1f, 0x61, 0x82, 0xf6, - 0xcc, 0x9d, 0xdd, 0x89, 0x93, 0x2b, 0x19, 0x18, 0xee, 0xc2, 0x46, 0xaf, 0xc1, 0x44, 0x48, 0xa2, - 0xb6, 0x9b, 0x2c, 0xf9, 0xde, 0x8e, 0x14, 0xdf, 0x8d, 0x20, 0x24, 0x4d, 0xd1, 0x9d, 0x78, 0x7c, - 0xf4, 0xbc, 0xf5, 0x54, 0xb5, 0xfe, 0x0e, 0xd1, 0xcd, 0x89, 0xe5, 0xbd, 0xd1, 0xf1, 0x7e, 0xf4, - 0xec, 0x7f, 0x59, 0x82, 0x93, 0x59, 0xc5, 0x89, 0xfe, 0xa6, 0x05, 0x27, 0x6e, 0xdd, 0x4e, 0x56, - 0x83, 0x4d, 0xe2, 0xc7, 0xf5, 0x1d, 0x2a, 0xde, 0x98, 0xca, 0x18, 0xbe, 0xd0, 0x28, 0x56, 0x45, - 0x4f, 0x5e, 0x49, 0x73, 0xb9, 0xe8, 0x27, 0xd1, 0x4e, 0xfd, 0x61, 0xf1, 0x76, 0x27, 0xae, 0xdc, - 0x5c, 0x35, 0xa1, 0x38, 0xdb, 0xa9, 0x73, 0x9f, 0xb7, 0xe0, 0x4c, 0x1e, 0x09, 0x74, 0x12, 0xca, - 0x9b, 0x64, 0x87, 0x1b, 0x70, 0x98, 0xfe, 0x44, 0xaf, 0x40, 0x65, 0xcb, 0xf1, 0x3a, 0x44, 0x58, - 0x37, 0x73, 0x47, 0x7b, 0x11, 0xd5, 0x33, 0xcc, 0xa9, 0xbe, 0xb7, 0xf4, 0x82, 0x65, 0xff, 0x6e, - 0x19, 0x86, 0x0d, 0xfd, 0x76, 0x0f, 0x2c, 0xb6, 0x20, 0x65, 0xb1, 0x2d, 0x16, 0xa6, 0x9a, 0x7b, - 0x9a, 0x6c, 0xb7, 0x33, 0x26, 0xdb, 0x52, 0x71, 0x2c, 0xf7, 0xb4, 0xd9, 0x50, 0x02, 0xb5, 0x20, - 0xa4, 0xd6, 0x3b, 0x55, 0xfd, 0x03, 0x45, 0x7c, 0xc2, 0x25, 0x49, 0xae, 0x3e, 0x7a, 0x67, 0x77, - 0xa2, 0xa6, 0xfe, 0x62, 0xcd, 0xc8, 0xfe, 0x8e, 0x05, 0x67, 0x8c, 0x3e, 0xce, 0x04, 0x7e, 0xd3, - 0x65, 0x9f, 0xf6, 0x3c, 0x0c, 0x24, 0x3b, 0xa1, 0xdc, 0x21, 0xa8, 0x91, 0x5a, 0xdd, 0x09, 0x09, - 0x66, 0x10, 0x6a, 0xe8, 0xb7, 0x49, 0x1c, 0x3b, 0x2d, 0x92, 0xdd, 0x13, 0x2c, 0xf2, 0x66, 0x2c, - 0xe1, 0x28, 0x02, 0xe4, 0x39, 0x71, 0xb2, 0x1a, 0x39, 0x7e, 0xcc, 0xc8, 0xaf, 0xba, 0x6d, 0x22, - 0x06, 0xf8, 0xff, 0xeb, 0x6f, 0xc6, 0xd0, 0x27, 0xea, 0x0f, 0xdd, 0xd9, 0x9d, 0x40, 0x0b, 0x5d, - 0x94, 0x70, 0x0e, 0x75, 0xfb, 0xab, 0x16, 0x3c, 0x94, 0x6f, 0x8b, 0xa1, 0x27, 0x61, 0x90, 0x6f, - 0x0f, 0xc5, 0xdb, 0xe9, 0x4f, 0xc2, 0x5a, 0xb1, 0x80, 0xa2, 0x29, 0xa8, 0x29, 0x3d, 0x21, 0xde, - 0xf1, 0x94, 0x40, 0xad, 0x69, 0xe5, 0xa2, 0x71, 0xe8, 0xa0, 0xd1, 0x3f, 0xc2, 0x72, 0x53, 0x83, - 0xc6, 0xf6, 0x53, 0x0c, 0x62, 0xff, 0x07, 0x0b, 0x4e, 0x18, 0xbd, 0xba, 0x07, 0xa6, 0xb9, 0x9f, - 0x36, 0xcd, 0xe7, 0x0b, 0x9b, 0xcf, 0x3d, 0x6c, 0xf3, 0x2f, 0x5a, 0x70, 0xce, 0xc0, 0x5a, 0x74, - 0x92, 0xc6, 0xc6, 0xc5, 0xed, 0x30, 0x22, 0x31, 0xdd, 0x7a, 0xa3, 0xc7, 0x0c, 0xb9, 0x55, 0x1f, - 0x16, 0x14, 0xca, 0x57, 0xc9, 0x0e, 0x17, 0x62, 0x4f, 0x43, 0x95, 0x4f, 0xce, 0x20, 0x12, 0x23, - 0xae, 0xde, 0x6d, 0x49, 0xb4, 0x63, 0x85, 0x81, 0x6c, 0x18, 0x64, 0xc2, 0x89, 0x2e, 0x56, 0xaa, - 0x86, 0x80, 0x7e, 0xc4, 0x1b, 0xac, 0x05, 0x0b, 0x88, 0x1d, 0xa7, 0xba, 0xb3, 0x1c, 0x11, 0xf6, - 0x71, 0x9b, 0x97, 0x5c, 0xe2, 0x35, 0x63, 0xba, 0x6d, 0x70, 0x7c, 0x3f, 0x48, 0xc4, 0x0e, 0xc0, - 0xd8, 0x36, 0x4c, 0xeb, 0x66, 0x6c, 0xe2, 0x50, 0xa6, 0x9e, 0xb3, 0x46, 0x3c, 0x3e, 0xa2, 0x82, - 0xe9, 0x02, 0x6b, 0xc1, 0x02, 0x62, 0xdf, 0x29, 0xb1, 0x0d, 0x8a, 0x5a, 0xfa, 0xe4, 0x5e, 0xec, - 0x6e, 0xa3, 0x94, 0xac, 0x5c, 0x2e, 0x4e, 0x70, 0x91, 0xde, 0x3b, 0xdc, 0xd7, 0x33, 0xe2, 0x12, - 0x17, 0xca, 0x75, 0xef, 0x5d, 0xee, 0x27, 0xcb, 0x30, 0x91, 0x7e, 0xa0, 0x4b, 0xda, 0xd2, 0x2d, - 0x95, 0xc1, 0x28, 0xeb, 0xef, 0x30, 0xf0, 0xb1, 0x89, 0xd7, 0x43, 0x60, 0x95, 0x8e, 0x53, 0x60, - 0x99, 0xf2, 0xb4, 0xbc, 0x8f, 0x3c, 0x7d, 0x52, 0x8d, 0xfa, 0x40, 0x46, 0x80, 0xa5, 0x75, 0xca, - 0x79, 0x18, 0x88, 0x13, 0x12, 0x8e, 0x57, 0xd2, 0xf2, 0x68, 0x25, 0x21, 0x21, 0x66, 0x10, 0xf4, - 0x3e, 0x38, 0x91, 0x38, 0x51, 0x8b, 0x24, 0x11, 0xd9, 0x72, 0x99, 0x6f, 0x8c, 0xed, 0x97, 0x6a, - 0xf5, 0xd3, 0xd4, 0x3c, 0x59, 0x65, 0x20, 0x2c, 0x41, 0x38, 0x8b, 0x6b, 0xff, 0xd7, 0x12, 0x3c, - 0x9c, 0xfe, 0x04, 0x5a, 0x83, 0x7c, 0x20, 0xa5, 0x41, 0xde, 0x65, 0x6a, 0x90, 0xbb, 0xbb, 0x13, - 0x6f, 0xef, 0xf1, 0xd8, 0xf7, 0x8d, 0x82, 0x41, 0x73, 0x99, 0x8f, 0x30, 0x95, 0xfe, 0x08, 0x77, - 0x77, 0x27, 0x1e, 0xeb, 0xf1, 0x8e, 0x99, 0xaf, 0xf4, 0x24, 0x0c, 0x46, 0xc4, 0x89, 0x03, 0x5f, - 0x7c, 0x27, 0xf5, 0x35, 0x31, 0x6b, 0xc5, 0x02, 0x6a, 0xff, 0x7e, 0x2d, 0x3b, 0xd8, 0x73, 0xdc, - 0xdf, 0x17, 0x44, 0xc8, 0x85, 0x01, 0xb6, 0x2b, 0xe0, 0x92, 0xe5, 0xea, 0xd1, 0x56, 0x21, 0xd5, - 0x22, 0x8a, 0x74, 0xbd, 0x4a, 0xbf, 0x1a, 0x6d, 0xc2, 0x8c, 0x05, 0xda, 0x86, 0x6a, 0x43, 0x1a, - 0xeb, 0xa5, 0x22, 0xdc, 0x5a, 0xc2, 0x54, 0xd7, 0x1c, 0x47, 0xa8, 0xb8, 0x57, 0x16, 0xbe, 0xe2, - 0x86, 0x08, 0x94, 0x5b, 0x6e, 0x22, 0x3e, 0xeb, 0x11, 0xb7, 0x63, 0x73, 0xae, 0xf1, 0x8a, 0x43, - 0x54, 0x07, 0xcd, 0xb9, 0x09, 0xa6, 0xf4, 0xd1, 0x67, 0x2d, 0x18, 0x8e, 0x1b, 0xed, 0xe5, 0x28, - 0xd8, 0x72, 0x9b, 0x24, 0x12, 0xc6, 0xd8, 0x11, 0x25, 0xdb, 0xca, 0xcc, 0xa2, 0x24, 0xa8, 0xf9, - 0xf2, 0xed, 0xb1, 0x86, 0x60, 0x93, 0x2f, 0xdd, 0xa4, 0x3c, 0x2c, 0xde, 0x7d, 0x96, 0x34, 0xd8, - 0x8a, 0x93, 0x7b, 0x32, 0x36, 0x53, 0x8e, 0x6c, 0x9c, 0xce, 0x76, 0x1a, 0x9b, 0x74, 0xbd, 0xe9, - 0x0e, 0xbd, 0xfd, 0xce, 0xee, 0xc4, 0xc3, 0x33, 0xf9, 0x3c, 0x71, 0xaf, 0xce, 0xb0, 0x01, 0x0b, - 0x3b, 0x9e, 0x87, 0xc9, 0x6b, 0x1d, 0xc2, 0x3c, 0x2e, 0x05, 0x0c, 0xd8, 0xb2, 0x26, 0x98, 0x19, - 0x30, 0x03, 0x82, 0x4d, 0xbe, 0xe8, 0x35, 0x18, 0x6c, 0x3b, 0x49, 0xe4, 0x6e, 0x0b, 0x37, 0xcb, - 0x11, 0xb7, 0x0b, 0x8b, 0x8c, 0x96, 0x66, 0xce, 0x14, 0x3d, 0x6f, 0xc4, 0x82, 0x11, 0x6a, 0x43, - 0xa5, 0x4d, 0xa2, 0x16, 0x19, 0xaf, 0x16, 0xe1, 0x52, 0x5e, 0xa4, 0xa4, 0x34, 0xc3, 0x1a, 0x35, - 0xae, 0x58, 0x1b, 0xe6, 0x5c, 0xd0, 0x2b, 0x50, 0x8d, 0x89, 0x47, 0x1a, 0xd4, 0x3c, 0xaa, 0x31, - 0x8e, 0xef, 0xee, 0xd3, 0x54, 0xa4, 0x76, 0xc9, 0x8a, 0x78, 0x94, 0x2f, 0x30, 0xf9, 0x0f, 0x2b, - 0x92, 0x74, 0x00, 0x43, 0xaf, 0xd3, 0x72, 0xfd, 0x71, 0x28, 0x62, 0x00, 0x97, 0x19, 0xad, 0xcc, - 0x00, 0xf2, 0x46, 0x2c, 0x18, 0xd9, 0xff, 0xc9, 0x02, 0x94, 0x16, 0x6a, 0xf7, 0xc0, 0x26, 0x7e, - 0x2d, 0x6d, 0x13, 0x2f, 0x14, 0x69, 0xb4, 0xf4, 0x30, 0x8b, 0x7f, 0xa3, 0x06, 0x19, 0x75, 0x70, - 0x8d, 0xc4, 0x09, 0x69, 0xbe, 0x25, 0xc2, 0xdf, 0x12, 0xe1, 0x6f, 0x89, 0x70, 0x25, 0xc2, 0xd7, - 0x32, 0x22, 0xfc, 0xfd, 0xc6, 0xaa, 0xd7, 0xe7, 0xb7, 0xaf, 0xaa, 0x03, 0x5e, 0xb3, 0x07, 0x06, - 0x02, 0x95, 0x04, 0x57, 0x56, 0x96, 0xae, 0xe5, 0xca, 0xec, 0x57, 0xd3, 0x32, 0xfb, 0xa8, 0x2c, - 0xfe, 0x5f, 0x90, 0xd2, 0xff, 0xc2, 0x82, 0x77, 0xa4, 0xa5, 0x97, 0x9c, 0x39, 0xf3, 0x2d, 0x3f, - 0x88, 0xc8, 0xac, 0xbb, 0xbe, 0x4e, 0x22, 0xe2, 0x37, 0x48, 0xac, 0x9c, 0x20, 0x56, 0x2f, 0x27, - 0x08, 0x7a, 0x0e, 0x46, 0x6e, 0xc5, 0x81, 0xbf, 0x1c, 0xb8, 0xbe, 0x10, 0x41, 0x74, 0xc7, 0x71, - 0xf2, 0xce, 0xee, 0xc4, 0x08, 0x1d, 0x51, 0xd9, 0x8e, 0x53, 0x58, 0x68, 0x06, 0x4e, 0xdd, 0x7a, - 0x6d, 0xd9, 0x49, 0x0c, 0x6f, 0x82, 0xdc, 0xf7, 0xb3, 0xf3, 0x8e, 0x2b, 0x2f, 0x65, 0x80, 0xb8, - 0x1b, 0xdf, 0xfe, 0x6b, 0x25, 0x78, 0x24, 0xf3, 0x22, 0x81, 0xe7, 0x05, 0x9d, 0x84, 0xee, 0x89, - 0xd0, 0xd7, 0x2d, 0x38, 0xd9, 0x4e, 0x3b, 0x2c, 0x62, 0xe1, 0x17, 0xfe, 0x60, 0x61, 0x3a, 0x22, - 0xe3, 0x11, 0xa9, 0x8f, 0x8b, 0x11, 0x3a, 0x99, 0x01, 0xc4, 0xb8, 0xab, 0x2f, 0xe8, 0x15, 0xa8, - 0xb5, 0x9d, 0xed, 0xeb, 0x61, 0xd3, 0x49, 0xe4, 0x76, 0xb4, 0xb7, 0x17, 0xa1, 0x93, 0xb8, 0xde, - 0x24, 0x8f, 0x0c, 0x98, 0x9c, 0xf7, 0x93, 0xa5, 0x68, 0x25, 0x89, 0x5c, 0xbf, 0xc5, 0xbd, 0x81, - 0x8b, 0x92, 0x0c, 0xd6, 0x14, 0xed, 0xaf, 0x59, 0x59, 0x25, 0xa5, 0x46, 0x27, 0x72, 0x12, 0xd2, - 0xda, 0x41, 0x1f, 0x83, 0x0a, 0xdd, 0x37, 0xca, 0x51, 0xb9, 0x59, 0xa4, 0xe6, 0x34, 0xbe, 0x84, - 0x56, 0xa2, 0xf4, 0x5f, 0x8c, 0x39, 0x53, 0xfb, 0xeb, 0xb5, 0xac, 0xb1, 0xc0, 0xce, 0x7e, 0x2f, - 0x00, 0xb4, 0x82, 0x55, 0xd2, 0x0e, 0x3d, 0x3a, 0x2c, 0x16, 0x3b, 0x40, 0x50, 0xae, 0x92, 0x39, - 0x05, 0xc1, 0x06, 0x16, 0xfa, 0x0b, 0x16, 0x40, 0x4b, 0xce, 0x79, 0x69, 0x08, 0x5c, 0x2f, 0xf2, - 0x75, 0xf4, 0x8a, 0xd2, 0x7d, 0x51, 0x0c, 0xb1, 0xc1, 0x1c, 0xfd, 0x8c, 0x05, 0xd5, 0x44, 0x76, - 0x9f, 0xab, 0xc6, 0xd5, 0x22, 0x7b, 0x22, 0x5f, 0x5a, 0xdb, 0x44, 0x6a, 0x48, 0x14, 0x5f, 0xf4, - 0xb3, 0x16, 0x40, 0xbc, 0xe3, 0x37, 0x96, 0x03, 0xcf, 0x6d, 0xec, 0x08, 0x8d, 0x79, 0xa3, 0x50, - 0x77, 0x8e, 0xa2, 0x5e, 0x1f, 0xa3, 0xa3, 0xa1, 0xff, 0x63, 0x83, 0x33, 0xfa, 0x04, 0x54, 0x63, - 0x31, 0xdd, 0x84, 0x8e, 0x5c, 0x2d, 0xd6, 0xa9, 0xc4, 0x69, 0x0b, 0xf1, 0x2a, 0xfe, 0x61, 0xc5, - 0x13, 0xfd, 0xbc, 0x05, 0x27, 0xc2, 0xb4, 0x9b, 0x50, 0xa8, 0xc3, 0xe2, 0x64, 0x40, 0xc6, 0x0d, - 0xc9, 0xbd, 0x2d, 0x99, 0x46, 0x9c, 0xed, 0x05, 0x95, 0x80, 0x7a, 0x06, 0x2f, 0x85, 0xdc, 0x65, - 0x39, 0xa4, 0x25, 0xe0, 0x5c, 0x16, 0x88, 0xbb, 0xf1, 0xd1, 0x32, 0x9c, 0xa1, 0xbd, 0xdb, 0xe1, - 0xe6, 0xa7, 0x54, 0x2f, 0x31, 0x53, 0x86, 0xd5, 0xfa, 0xa3, 0x62, 0x86, 0xb0, 0x43, 0x81, 0x2c, - 0x0e, 0xce, 0x7d, 0x12, 0xfd, 0xae, 0x05, 0x8f, 0xba, 0x4c, 0x0d, 0x98, 0xfe, 0x76, 0xad, 0x11, - 0xc4, 0x41, 0x2e, 0x29, 0x54, 0x56, 0xf4, 0x52, 0x3f, 0xf5, 0x1f, 0x16, 0x6f, 0xf0, 0xe8, 0xfc, - 0x1e, 0x5d, 0xc2, 0x7b, 0x76, 0x18, 0xfd, 0x18, 0x8c, 0xca, 0x75, 0xb1, 0x4c, 0x45, 0x30, 0x53, - 0xb4, 0xb5, 0xfa, 0xa9, 0x3b, 0xbb, 0x13, 0xa3, 0xab, 0x26, 0x00, 0xa7, 0xf1, 0xec, 0x7f, 0x55, - 0x4e, 0x1d, 0xa7, 0x28, 0x1f, 0x26, 0x13, 0x37, 0x0d, 0xe9, 0xff, 0x91, 0xd2, 0xb3, 0x50, 0x71, - 0xa3, 0xbc, 0x4b, 0x5a, 0xdc, 0xa8, 0xa6, 0x18, 0x1b, 0xcc, 0xa9, 0x51, 0x7a, 0xca, 0xc9, 0x7a, - 0x4a, 0x85, 0x04, 0x7c, 0xa5, 0xc8, 0x2e, 0x75, 0x1f, 0x7e, 0x3d, 0x22, 0xba, 0x76, 0xaa, 0x0b, - 0x84, 0xbb, 0xbb, 0x84, 0x3e, 0x0e, 0xb5, 0x48, 0x45, 0x4e, 0x94, 0x8b, 0xd8, 0xaa, 0xc9, 0x69, - 0x23, 0xba, 0xa3, 0x4e, 0x73, 0x74, 0x8c, 0x84, 0xe6, 0x68, 0xff, 0x4e, 0xfa, 0x04, 0xc9, 0x90, - 0x1d, 0x7d, 0x9c, 0x8e, 0x7d, 0xc9, 0x82, 0xe1, 0x28, 0xf0, 0x3c, 0xd7, 0x6f, 0x51, 0x39, 0x27, - 0x94, 0xf5, 0x87, 0x8f, 0x45, 0x5f, 0x0a, 0x81, 0xc6, 0x2c, 0x6b, 0xac, 0x79, 0x62, 0xb3, 0x03, - 0xf6, 0x9f, 0x58, 0x30, 0xde, 0x4b, 0x1e, 0x23, 0x02, 0x6f, 0x97, 0xc2, 0x46, 0x0d, 0xc5, 0x92, - 0x3f, 0x4b, 0x3c, 0xa2, 0xdc, 0xe6, 0xd5, 0xfa, 0x13, 0xe2, 0x35, 0xdf, 0xbe, 0xdc, 0x1b, 0x15, - 0xef, 0x45, 0x07, 0xbd, 0x0c, 0x27, 0x8d, 0xf7, 0x8a, 0xd5, 0xc0, 0xd4, 0xea, 0x93, 0xd4, 0x00, - 0x9a, 0xce, 0xc0, 0xee, 0xee, 0x4e, 0x3c, 0x94, 0x6d, 0x13, 0x0a, 0xa3, 0x8b, 0x8e, 0xfd, 0x2b, - 0xa5, 0xec, 0xd7, 0x52, 0xba, 0xfe, 0x4d, 0xab, 0xcb, 0x9b, 0xf0, 0xc1, 0xe3, 0xd0, 0xaf, 0xcc, - 0xef, 0xa0, 0xc2, 0x4f, 0x7a, 0xe3, 0xdc, 0xc7, 0xf3, 0x6d, 0xfb, 0x5f, 0x0f, 0xc0, 0x1e, 0x3d, - 0xeb, 0xc3, 0x78, 0x3f, 0xf0, 0xa1, 0xe8, 0x17, 0x2c, 0x75, 0x60, 0xc6, 0xd7, 0x70, 0xf3, 0xb8, - 0xc6, 0x9e, 0xef, 0x9f, 0x62, 0x1e, 0x63, 0xa1, 0xbc, 0xe8, 0xe9, 0xa3, 0x39, 0xf4, 0x0d, 0x2b, - 0x7d, 0xe4, 0xc7, 0x83, 0xe6, 0xdc, 0x63, 0xeb, 0x93, 0x71, 0x8e, 0xc8, 0x3b, 0xa6, 0x4f, 0x9f, - 0x7a, 0x9d, 0x30, 0x4e, 0x02, 0xac, 0xbb, 0xbe, 0xe3, 0xb9, 0xaf, 0xd3, 0xdd, 0x51, 0x85, 0x29, - 0x78, 0x66, 0x31, 0x5d, 0x52, 0xad, 0xd8, 0xc0, 0x38, 0xf7, 0xff, 0xc3, 0xb0, 0xf1, 0xe6, 0x39, - 0xa1, 0x21, 0x67, 0xcc, 0xd0, 0x90, 0x9a, 0x11, 0xd1, 0x71, 0xee, 0xfd, 0x70, 0x32, 0xdb, 0xc1, - 0x83, 0x3c, 0x6f, 0xff, 0xcf, 0xa1, 0xec, 0x19, 0xdc, 0x2a, 0x89, 0xda, 0xb4, 0x6b, 0x6f, 0x39, - 0xb6, 0xde, 0x72, 0x6c, 0xbd, 0xe5, 0xd8, 0x32, 0xcf, 0x26, 0x84, 0xd3, 0x66, 0xe8, 0x1e, 0x39, - 0x6d, 0x52, 0x6e, 0xa8, 0x6a, 0xe1, 0x6e, 0x28, 0xfb, 0xb3, 0x5d, 0x9e, 0xfb, 0xd5, 0x88, 0x10, - 0x14, 0x40, 0xc5, 0x0f, 0x9a, 0x44, 0xda, 0xb8, 0x57, 0x8a, 0x31, 0xd8, 0xae, 0x05, 0x4d, 0x23, - 0x1c, 0x99, 0xfe, 0x8b, 0x31, 0xe7, 0x63, 0xdf, 0xa9, 0x40, 0xca, 0x9c, 0xe4, 0xdf, 0xfd, 0x9d, - 0x30, 0x14, 0x91, 0x30, 0xb8, 0x8e, 0x17, 0x84, 0x2e, 0xd3, 0x19, 0x0b, 0xbc, 0x19, 0x4b, 0x38, - 0xd5, 0x79, 0xa1, 0x93, 0x6c, 0x08, 0x65, 0xa6, 0x74, 0xde, 0xb2, 0x93, 0x6c, 0x60, 0x06, 0x41, - 0xef, 0x87, 0xb1, 0x24, 0x75, 0x14, 0x2e, 0x8e, 0x7c, 0x1f, 0x12, 0xb8, 0x63, 0xe9, 0x83, 0x72, - 0x9c, 0xc1, 0x46, 0xaf, 0xc1, 0xc0, 0x06, 0xf1, 0xda, 0xe2, 0xd3, 0xaf, 0x14, 0xa7, 0x6b, 0xd8, - 0xbb, 0x5e, 0x26, 0x5e, 0x9b, 0x4b, 0x42, 0xfa, 0x0b, 0x33, 0x56, 0x74, 0xde, 0xd7, 0x36, 0x3b, - 0x71, 0x12, 0xb4, 0xdd, 0xd7, 0xa5, 0xa7, 0xf3, 0x83, 0x05, 0x33, 0xbe, 0x2a, 0xe9, 0x73, 0x97, - 0x92, 0xfa, 0x8b, 0x35, 0x67, 0xd6, 0x8f, 0xa6, 0x1b, 0xb1, 0x29, 0xb3, 0x23, 0x1c, 0x96, 0x45, - 0xf7, 0x63, 0x56, 0xd2, 0xe7, 0xfd, 0x50, 0x7f, 0xb1, 0xe6, 0x8c, 0x76, 0xd4, 0xfa, 0x1b, 0x66, - 0x7d, 0xb8, 0x5e, 0x70, 0x1f, 0xf8, 0xda, 0xcb, 0x5d, 0x87, 0x4f, 0x40, 0xa5, 0xb1, 0xe1, 0x44, - 0xc9, 0xf8, 0x08, 0x9b, 0x34, 0x6a, 0x16, 0xcf, 0xd0, 0x46, 0xcc, 0x61, 0xe8, 0x31, 0x28, 0x47, - 0x64, 0x9d, 0x45, 0xbf, 0x1a, 0x71, 0x51, 0x98, 0xac, 0x63, 0xda, 0x6e, 0xff, 0x52, 0x29, 0x6d, - 0xb6, 0xa5, 0xdf, 0x9b, 0xcf, 0xf6, 0x46, 0x27, 0x8a, 0xa5, 0xfb, 0xcb, 0x98, 0xed, 0xac, 0x19, - 0x4b, 0x38, 0xfa, 0x94, 0x05, 0x43, 0xb7, 0xe2, 0xc0, 0xf7, 0x49, 0x22, 0x54, 0xe4, 0x8d, 0x82, - 0x87, 0xe2, 0x0a, 0xa7, 0xae, 0xfb, 0x20, 0x1a, 0xb0, 0xe4, 0x4b, 0xbb, 0x4b, 0xb6, 0x1b, 0x5e, - 0xa7, 0xd9, 0x15, 0xea, 0x72, 0x91, 0x37, 0x63, 0x09, 0xa7, 0xa8, 0xae, 0xcf, 0x51, 0x07, 0xd2, - 0xa8, 0xf3, 0xbe, 0x40, 0x15, 0x70, 0xfb, 0xaf, 0x0c, 0xc2, 0xd9, 0xdc, 0xc5, 0x41, 0x0d, 0x2a, - 0x66, 0xb2, 0x5c, 0x72, 0x3d, 0x22, 0x83, 0xbc, 0x98, 0x41, 0x75, 0x43, 0xb5, 0x62, 0x03, 0x03, - 0xfd, 0x34, 0x40, 0xe8, 0x44, 0x4e, 0x9b, 0x28, 0xf7, 0xf4, 0x91, 0xed, 0x16, 0xda, 0x8f, 0x65, - 0x49, 0x53, 0x6f, 0xd1, 0x55, 0x53, 0x8c, 0x0d, 0x96, 0xe8, 0x79, 0x18, 0x8e, 0x88, 0x47, 0x9c, - 0x98, 0x05, 0x4f, 0x67, 0x33, 0x41, 0xb0, 0x06, 0x61, 0x13, 0x0f, 0x3d, 0xa9, 0xe2, 0xe1, 0x32, - 0x71, 0x41, 0xe9, 0x98, 0x38, 0xf4, 0x86, 0x05, 0x63, 0xeb, 0xae, 0x47, 0x34, 0x77, 0x91, 0xb7, - 0xb1, 0x74, 0xf4, 0x97, 0xbc, 0x64, 0xd2, 0xd5, 0x12, 0x32, 0xd5, 0x1c, 0xe3, 0x0c, 0x7b, 0xfa, - 0x99, 0xb7, 0x48, 0xc4, 0x44, 0xeb, 0x60, 0xfa, 0x33, 0xdf, 0xe0, 0xcd, 0x58, 0xc2, 0xd1, 0x34, - 0x9c, 0x08, 0x9d, 0x38, 0x9e, 0x89, 0x48, 0x93, 0xf8, 0x89, 0xeb, 0x78, 0x3c, 0xab, 0xa2, 0xaa, - 0xa3, 0xaa, 0x97, 0xd3, 0x60, 0x9c, 0xc5, 0x47, 0x1f, 0x82, 0x87, 0xb9, 0xff, 0x67, 0xd1, 0x8d, - 0x63, 0xd7, 0x6f, 0xe9, 0x69, 0x20, 0xdc, 0x60, 0x13, 0x82, 0xd4, 0xc3, 0xf3, 0xf9, 0x68, 0xb8, - 0xd7, 0xf3, 0xe8, 0x69, 0xa8, 0xc6, 0x9b, 0x6e, 0x38, 0x13, 0x35, 0x63, 0x76, 0xf6, 0x53, 0xd5, - 0x4e, 0xd7, 0x15, 0xd1, 0x8e, 0x15, 0x06, 0x6a, 0xc0, 0x08, 0xff, 0x24, 0x3c, 0xa0, 0x4f, 0xc8, - 0xc7, 0x67, 0x7a, 0xaa, 0x69, 0x91, 0x24, 0x38, 0x89, 0x9d, 0xdb, 0x17, 0xe5, 0x49, 0x14, 0x3f, - 0x38, 0xb9, 0x61, 0x90, 0xc1, 0x29, 0xa2, 0xf6, 0x2f, 0x94, 0xd2, 0x3b, 0x7f, 0x73, 0x91, 0xa2, - 0x98, 0x2e, 0xc5, 0xe4, 0x86, 0x13, 0x49, 0x85, 0x7d, 0xc4, 0xe4, 0x0f, 0x41, 0xf7, 0x86, 0x13, - 0x99, 0x8b, 0x9a, 0x31, 0xc0, 0x92, 0x13, 0xba, 0x05, 0x03, 0x89, 0xe7, 0x14, 0x94, 0x2d, 0x66, - 0x70, 0xd4, 0x8e, 0x98, 0x85, 0xe9, 0x18, 0x33, 0x1e, 0xe8, 0x51, 0xba, 0xfb, 0x58, 0x93, 0x27, - 0x45, 0x62, 0xc3, 0xb0, 0x16, 0x63, 0xd6, 0x6a, 0xdf, 0x85, 0x1c, 0xb9, 0xaa, 0x14, 0x19, 0xba, - 0x00, 0x40, 0x37, 0xb2, 0xcb, 0x11, 0x59, 0x77, 0xb7, 0x85, 0x21, 0xa1, 0xd6, 0xee, 0x35, 0x05, - 0xc1, 0x06, 0x96, 0x7c, 0x66, 0xa5, 0xb3, 0x4e, 0x9f, 0x29, 0x75, 0x3f, 0xc3, 0x21, 0xd8, 0xc0, - 0x42, 0xcf, 0xc1, 0xa0, 0xdb, 0x76, 0x5a, 0x2a, 0x90, 0xf5, 0x51, 0xba, 0x68, 0xe7, 0x59, 0xcb, - 0xdd, 0xdd, 0x89, 0x31, 0xd5, 0x21, 0xd6, 0x84, 0x05, 0x2e, 0xfa, 0x15, 0x0b, 0x46, 0x1a, 0x41, - 0xbb, 0x1d, 0xf8, 0x7c, 0xfb, 0x27, 0xf6, 0xb2, 0xb7, 0x8e, 0x4b, 0xcd, 0x4f, 0xce, 0x18, 0xcc, - 0xf8, 0x66, 0x56, 0xa5, 0xb5, 0x99, 0x20, 0x9c, 0xea, 0x95, 0xb9, 0xb6, 0x2b, 0xfb, 0xac, 0xed, - 0x5f, 0xb7, 0xe0, 0x14, 0x7f, 0xd6, 0xd8, 0x95, 0x8a, 0x0c, 0xae, 0xe0, 0x98, 0x5f, 0xab, 0x6b, - 0xa3, 0xae, 0x9c, 0x95, 0x5d, 0x70, 0xdc, 0xdd, 0x49, 0x34, 0x07, 0xa7, 0xd6, 0x83, 0xa8, 0x41, - 0xcc, 0x81, 0x10, 0x82, 0x49, 0x11, 0xba, 0x94, 0x45, 0xc0, 0xdd, 0xcf, 0xa0, 0x1b, 0xf0, 0x90, - 0xd1, 0x68, 0x8e, 0x03, 0x97, 0x4d, 0x8f, 0x0b, 0x6a, 0x0f, 0x5d, 0xca, 0xc5, 0xc2, 0x3d, 0x9e, - 0x4e, 0x3b, 0x6e, 0x6a, 0x7d, 0x38, 0x6e, 0x5e, 0x85, 0x47, 0x1a, 0xdd, 0x23, 0xb3, 0x15, 0x77, - 0xd6, 0x62, 0x2e, 0xa9, 0xaa, 0xf5, 0x1f, 0x12, 0x04, 0x1e, 0x99, 0xe9, 0x85, 0x88, 0x7b, 0xd3, - 0x40, 0x1f, 0x83, 0x6a, 0x44, 0xd8, 0x57, 0x89, 0x45, 0x3a, 0xd3, 0x11, 0x77, 0xeb, 0xda, 0x02, - 0xe5, 0x64, 0xb5, 0xec, 0x15, 0x0d, 0x31, 0x56, 0x1c, 0xd1, 0x6d, 0x18, 0x0a, 0x9d, 0xa4, 0xb1, - 0x21, 0x92, 0x98, 0x8e, 0xec, 0x5b, 0x56, 0xcc, 0xd9, 0x51, 0x80, 0x91, 0xf6, 0xcc, 0x99, 0x60, - 0xc9, 0x8d, 0x5a, 0x23, 0x8d, 0xa0, 0x1d, 0x06, 0x3e, 0xf1, 0x93, 0x78, 0x7c, 0x54, 0x5b, 0x23, - 0x33, 0xaa, 0x15, 0x1b, 0x18, 0x68, 0x19, 0xce, 0x30, 0xdf, 0xd5, 0x4d, 0x37, 0xd9, 0x08, 0x3a, - 0x89, 0xdc, 0x8a, 0x8d, 0x8f, 0xa5, 0x4f, 0x6c, 0x16, 0x72, 0x70, 0x70, 0xee, 0x93, 0xe7, 0x3e, - 0x00, 0xa7, 0xba, 0x96, 0xf2, 0x81, 0xdc, 0x46, 0xb3, 0xf0, 0x50, 0xfe, 0xa2, 0x39, 0x90, 0xf3, - 0xe8, 0x1f, 0x64, 0xa2, 0x87, 0x0d, 0x43, 0xba, 0x0f, 0x47, 0xa4, 0x03, 0x65, 0xe2, 0x6f, 0x09, - 0x1d, 0x72, 0xe9, 0x68, 0xdf, 0xee, 0xa2, 0xbf, 0xc5, 0xd7, 0x3c, 0xf3, 0xb6, 0x5c, 0xf4, 0xb7, - 0x30, 0xa5, 0x8d, 0xbe, 0x62, 0xa5, 0x0c, 0x41, 0xee, 0xbe, 0xfc, 0xc8, 0xb1, 0xec, 0x1c, 0xfa, - 0xb6, 0x0d, 0xed, 0x7f, 0x53, 0x82, 0xf3, 0xfb, 0x11, 0xe9, 0x63, 0xf8, 0x9e, 0x80, 0xc1, 0x98, - 0xc5, 0x03, 0x08, 0xa1, 0x3c, 0x4c, 0xe7, 0x2a, 0x8f, 0x10, 0x78, 0x15, 0x0b, 0x10, 0xf2, 0xa0, - 0xdc, 0x76, 0x42, 0xe1, 0xd5, 0x9a, 0x3f, 0x6a, 0x3a, 0x12, 0xfd, 0xef, 0x78, 0x8b, 0x4e, 0xc8, - 0x7d, 0x25, 0x46, 0x03, 0xa6, 0x6c, 0x50, 0x02, 0x15, 0x27, 0x8a, 0x1c, 0x79, 0xf8, 0x7c, 0xb5, - 0x18, 0x7e, 0xd3, 0x94, 0x24, 0x3f, 0xbb, 0x4b, 0x35, 0x61, 0xce, 0xcc, 0xfe, 0xc2, 0x50, 0x2a, - 0x25, 0x87, 0x45, 0x14, 0xc4, 0x30, 0x28, 0x9c, 0x59, 0x56, 0xd1, 0x59, 0x60, 0x3c, 0xa7, 0x92, - 0xed, 0x13, 0x45, 0x66, 0xba, 0x60, 0x85, 0x3e, 0x6f, 0xb1, 0xfc, 0x6f, 0x99, 0xa6, 0x24, 0x76, - 0x67, 0xc7, 0x93, 0x8e, 0x6e, 0x66, 0x95, 0xcb, 0x46, 0x6c, 0x72, 0x17, 0x75, 0x1c, 0x98, 0x55, - 0xda, 0x5d, 0xc7, 0x81, 0x59, 0x99, 0x12, 0x8e, 0xb6, 0x73, 0x22, 0x07, 0x0a, 0xc8, 0x21, 0xee, - 0x23, 0x56, 0xe0, 0x1b, 0x16, 0x9c, 0x72, 0xb3, 0x47, 0xc0, 0x62, 0x2f, 0x73, 0xb3, 0x18, 0xcf, - 0x53, 0xf7, 0x09, 0xb3, 0x52, 0xe7, 0x5d, 0x20, 0xdc, 0xdd, 0x19, 0xd4, 0x84, 0x01, 0xd7, 0x5f, - 0x0f, 0x84, 0x11, 0x53, 0x3f, 0x5a, 0xa7, 0xe6, 0xfd, 0xf5, 0x40, 0xaf, 0x66, 0xfa, 0x0f, 0x33, - 0xea, 0x68, 0x01, 0xce, 0xc8, 0xac, 0x8c, 0xcb, 0x6e, 0x9c, 0x04, 0xd1, 0xce, 0x82, 0xdb, 0x76, - 0x13, 0x66, 0x80, 0x94, 0xeb, 0xe3, 0x54, 0x3f, 0xe0, 0x1c, 0x38, 0xce, 0x7d, 0x0a, 0xbd, 0x0e, - 0x43, 0xf2, 0xd8, 0xb5, 0x5a, 0xc4, 0xbe, 0xb0, 0x7b, 0xfe, 0xab, 0xc9, 0xb4, 0x22, 0xce, 0x5d, - 0x25, 0x43, 0xfb, 0x8d, 0x61, 0xe8, 0x3e, 0x1d, 0x4e, 0x1f, 0x05, 0x5b, 0xf7, 0xfa, 0x28, 0x98, - 0x6e, 0x58, 0x62, 0x7d, 0x8a, 0x5b, 0xc0, 0xdc, 0x16, 0x5c, 0xf5, 0x09, 0xdd, 0x8e, 0xdf, 0xc0, - 0x8c, 0x07, 0x8a, 0x60, 0x70, 0x83, 0x38, 0x5e, 0xb2, 0x51, 0xcc, 0x61, 0xc2, 0x65, 0x46, 0x2b, - 0x9b, 0x4a, 0xc5, 0x5b, 0xb1, 0xe0, 0x84, 0xb6, 0x61, 0x68, 0x83, 0x4f, 0x00, 0xb1, 0x87, 0x58, - 0x3c, 0xea, 0xe0, 0xa6, 0x66, 0x95, 0xfe, 0xdc, 0xa2, 0x01, 0x4b, 0x76, 0x2c, 0xec, 0xc8, 0x08, - 0x8c, 0xe0, 0x4b, 0xb7, 0xb8, 0x2c, 0xb2, 0xfe, 0xa3, 0x22, 0x3e, 0x0a, 0x23, 0x11, 0x69, 0x04, - 0x7e, 0xc3, 0xf5, 0x48, 0x73, 0x5a, 0x1e, 0x14, 0x1c, 0x24, 0x79, 0x88, 0xed, 0xc3, 0xb1, 0x41, - 0x03, 0xa7, 0x28, 0xa2, 0xcf, 0x59, 0x30, 0xa6, 0x32, 0x6f, 0xe9, 0x07, 0x21, 0xc2, 0x21, 0xbc, - 0x50, 0x50, 0x9e, 0x2f, 0xa3, 0x59, 0x47, 0x77, 0x76, 0x27, 0xc6, 0xd2, 0x6d, 0x38, 0xc3, 0x17, - 0xbd, 0x0c, 0x10, 0xac, 0xf1, 0xd8, 0xa2, 0xe9, 0x44, 0x78, 0x87, 0x0f, 0xf2, 0xaa, 0x63, 0x3c, - 0x09, 0x51, 0x52, 0xc0, 0x06, 0x35, 0x74, 0x15, 0x80, 0x2f, 0x9b, 0xd5, 0x9d, 0x50, 0x6e, 0x34, - 0x64, 0xf6, 0x17, 0xac, 0x28, 0xc8, 0xdd, 0xdd, 0x89, 0x6e, 0x6f, 0x1d, 0x0b, 0xa0, 0x30, 0x1e, - 0x47, 0x3f, 0x05, 0x43, 0x71, 0xa7, 0xdd, 0x76, 0x94, 0xef, 0xb8, 0xc0, 0xb4, 0x46, 0x4e, 0xd7, - 0x10, 0x45, 0xbc, 0x01, 0x4b, 0x8e, 0xe8, 0x16, 0x15, 0xaa, 0xb1, 0x70, 0x23, 0xb2, 0x55, 0xc4, - 0x6d, 0x82, 0x61, 0xf6, 0x4e, 0xef, 0x91, 0x86, 0x37, 0xce, 0xc1, 0xb9, 0xbb, 0x3b, 0xf1, 0x50, - 0xba, 0x7d, 0x21, 0x10, 0x89, 0x86, 0xb9, 0x34, 0xd1, 0x15, 0x59, 0xbf, 0x86, 0xbe, 0xb6, 0x2c, - 0xab, 0xf0, 0x94, 0xae, 0x5f, 0xc3, 0x9a, 0x7b, 0x8f, 0x99, 0xf9, 0x30, 0x5a, 0x84, 0xd3, 0x8d, - 0xc0, 0x4f, 0xa2, 0xc0, 0xf3, 0x78, 0xfd, 0x26, 0xbe, 0xe7, 0xe3, 0xbe, 0xe5, 0xb7, 0x8b, 0x6e, - 0x9f, 0x9e, 0xe9, 0x46, 0xc1, 0x79, 0xcf, 0xd9, 0x7e, 0xfa, 0x9c, 0x47, 0x0c, 0xce, 0x73, 0x30, - 0x42, 0xb6, 0x13, 0x12, 0xf9, 0x8e, 0x77, 0x1d, 0x2f, 0x48, 0xaf, 0x2a, 0x5b, 0x03, 0x17, 0x8d, - 0x76, 0x9c, 0xc2, 0x42, 0xb6, 0x72, 0x74, 0x18, 0xc9, 0xb3, 0xdc, 0xd1, 0x21, 0xdd, 0x1a, 0xf6, - 0xff, 0x2a, 0xa5, 0x0c, 0xb2, 0xfb, 0x72, 0xaa, 0xc4, 0xaa, 0x80, 0xc8, 0x72, 0x29, 0x0c, 0x20, - 0x36, 0x1a, 0x45, 0x72, 0x56, 0x55, 0x40, 0x96, 0x4c, 0x46, 0x38, 0xcd, 0x17, 0x6d, 0x42, 0x65, - 0x23, 0x88, 0x13, 0xb9, 0xfd, 0x38, 0xe2, 0x4e, 0xe7, 0x72, 0x10, 0x27, 0xcc, 0x8a, 0x50, 0xaf, - 0x4d, 0x5b, 0x62, 0xcc, 0x79, 0xd8, 0xff, 0xd9, 0x4a, 0xf9, 0xd0, 0x6f, 0xb2, 0x00, 0xe4, 0x2d, - 0xe2, 0xd3, 0x65, 0x6d, 0x86, 0x3c, 0xfd, 0x58, 0x26, 0x9d, 0xf3, 0x1d, 0xbd, 0xca, 0x93, 0xdd, - 0xa6, 0x14, 0x26, 0x19, 0x09, 0x23, 0x3a, 0xea, 0x93, 0x56, 0x3a, 0x2f, 0xb7, 0x54, 0xc4, 0x06, - 0xc3, 0xcc, 0x4d, 0xdf, 0x37, 0xc5, 0xd7, 0xfe, 0x8a, 0x05, 0x43, 0x75, 0xa7, 0xb1, 0x19, 0xac, - 0xaf, 0xa3, 0xa7, 0xa1, 0xda, 0xec, 0x44, 0x66, 0x8a, 0xb0, 0x72, 0x1c, 0xcc, 0x8a, 0x76, 0xac, - 0x30, 0xe8, 0x1c, 0x5e, 0x77, 0x1a, 0x32, 0x43, 0xbd, 0xcc, 0xe7, 0xf0, 0x25, 0xd6, 0x82, 0x05, - 0x04, 0x3d, 0x0f, 0xc3, 0x6d, 0x67, 0x5b, 0x3e, 0x9c, 0x75, 0xe0, 0x2f, 0x6a, 0x10, 0x36, 0xf1, - 0xec, 0x7f, 0x6e, 0xc1, 0x78, 0xdd, 0x89, 0xdd, 0xc6, 0x74, 0x27, 0xd9, 0xa8, 0xbb, 0xc9, 0x5a, - 0xa7, 0xb1, 0x49, 0x12, 0x5e, 0x96, 0x80, 0xf6, 0xb2, 0x13, 0xd3, 0xa5, 0xa4, 0xf6, 0x75, 0xaa, - 0x97, 0xd7, 0x45, 0x3b, 0x56, 0x18, 0xe8, 0x75, 0x18, 0x0e, 0x9d, 0x38, 0xbe, 0x1d, 0x44, 0x4d, - 0x4c, 0xd6, 0x8b, 0x29, 0x0a, 0xb2, 0x42, 0x1a, 0x11, 0x49, 0x30, 0x59, 0x17, 0x87, 0xdd, 0x9a, - 0x3e, 0x36, 0x99, 0xd9, 0x5f, 0xb2, 0xe0, 0x91, 0x3a, 0x71, 0x22, 0x12, 0xb1, 0x1a, 0x22, 0xea, - 0x45, 0x66, 0xbc, 0xa0, 0xd3, 0x44, 0xaf, 0x41, 0x35, 0xa1, 0xcd, 0xb4, 0x5b, 0x56, 0xb1, 0xdd, - 0x62, 0x67, 0xd5, 0xab, 0x82, 0x38, 0x56, 0x6c, 0xec, 0xbf, 0x6a, 0xc1, 0x08, 0x3b, 0x6e, 0x9b, - 0x25, 0x89, 0xe3, 0x7a, 0x5d, 0xa5, 0xb6, 0xac, 0x3e, 0x4b, 0x6d, 0x9d, 0x87, 0x81, 0x8d, 0xa0, - 0x4d, 0xb2, 0x47, 0xc5, 0x97, 0x03, 0xba, 0xad, 0xa6, 0x10, 0xf4, 0x2c, 0xfd, 0xf0, 0xae, 0x9f, - 0x38, 0x74, 0x09, 0x48, 0x77, 0xee, 0x09, 0xfe, 0xd1, 0x55, 0x33, 0x36, 0x71, 0xec, 0x7f, 0x56, - 0x83, 0x21, 0x11, 0xd7, 0xd0, 0x77, 0x69, 0x0a, 0xb9, 0xbf, 0x2f, 0xf5, 0xdc, 0xdf, 0xc7, 0x30, - 0xd8, 0x60, 0x35, 0xff, 0x84, 0x19, 0x79, 0xb5, 0x90, 0x40, 0x18, 0x5e, 0x46, 0x50, 0x77, 0x8b, - 0xff, 0xc7, 0x82, 0x15, 0xfa, 0xb2, 0x05, 0x27, 0x1a, 0x81, 0xef, 0x93, 0x86, 0xb6, 0x71, 0x06, - 0x8a, 0x88, 0x77, 0x98, 0x49, 0x13, 0xd5, 0x67, 0x3d, 0x19, 0x00, 0xce, 0xb2, 0x47, 0x2f, 0xc2, - 0x28, 0x1f, 0xb3, 0x1b, 0x29, 0x1f, 0xb4, 0xae, 0xc0, 0x64, 0x02, 0x71, 0x1a, 0x17, 0x4d, 0x72, - 0x5f, 0xbe, 0xa8, 0x75, 0x34, 0xa8, 0x5d, 0x75, 0x46, 0x95, 0x23, 0x03, 0x03, 0x45, 0x80, 0x22, - 0xb2, 0x1e, 0x91, 0x78, 0x43, 0xc4, 0x7d, 0x30, 0xfb, 0x6a, 0xe8, 0x70, 0x79, 0xe8, 0xb8, 0x8b, - 0x12, 0xce, 0xa1, 0x8e, 0x36, 0xc5, 0x06, 0xb3, 0x5a, 0x84, 0x0c, 0x15, 0x9f, 0xb9, 0xe7, 0x3e, - 0x73, 0x02, 0x2a, 0xf1, 0x86, 0x13, 0x35, 0x99, 0x5d, 0x57, 0xe6, 0xb9, 0x4f, 0x2b, 0xb4, 0x01, - 0xf3, 0x76, 0x34, 0x0b, 0x27, 0x33, 0xf5, 0xa3, 0x62, 0xe1, 0x2b, 0x56, 0x79, 0x2e, 0x99, 0xca, - 0x53, 0x31, 0xee, 0x7a, 0xc2, 0x74, 0x3e, 0x0c, 0xef, 0xe3, 0x7c, 0xd8, 0x51, 0xd1, 0x85, 0xdc, - 0x8b, 0xfb, 0x52, 0x21, 0x03, 0xd0, 0x57, 0x28, 0xe1, 0x17, 0x33, 0xa1, 0x84, 0xa3, 0xac, 0x03, - 0x37, 0x8a, 0xe9, 0xc0, 0xc1, 0xe3, 0x06, 0xef, 0x67, 0x1c, 0xe0, 0x9f, 0x5b, 0x20, 0xbf, 0xeb, - 0x8c, 0xd3, 0xd8, 0x20, 0x74, 0xca, 0xa0, 0xf7, 0xc3, 0x98, 0xda, 0x42, 0xcf, 0x04, 0x1d, 0x9f, - 0x87, 0x00, 0x96, 0xf5, 0xa1, 0x30, 0x4e, 0x41, 0x71, 0x06, 0x1b, 0x4d, 0x41, 0x8d, 0x8e, 0x13, - 0x7f, 0x94, 0xeb, 0x5a, 0xb5, 0x4d, 0x9f, 0x5e, 0x9e, 0x17, 0x4f, 0x69, 0x1c, 0x14, 0xc0, 0x29, - 0xcf, 0x89, 0x13, 0xd6, 0x03, 0xba, 0xa3, 0x3e, 0x64, 0x15, 0x08, 0x96, 0x4c, 0xb1, 0x90, 0x25, - 0x84, 0xbb, 0x69, 0xdb, 0xdf, 0x19, 0x80, 0xd1, 0x94, 0x64, 0x3c, 0xa0, 0x92, 0x7e, 0x1a, 0xaa, - 0x52, 0x6f, 0x66, 0xcb, 0xdd, 0x28, 0xe5, 0xaa, 0x30, 0xa8, 0xd2, 0x5a, 0xd3, 0x5a, 0x35, 0x6b, - 0x54, 0x18, 0x0a, 0x17, 0x9b, 0x78, 0x4c, 0x28, 0x27, 0x5e, 0x3c, 0xe3, 0xb9, 0xc4, 0x4f, 0x78, - 0x37, 0x8b, 0x11, 0xca, 0xab, 0x0b, 0x2b, 0x26, 0x51, 0x2d, 0x94, 0x33, 0x00, 0x9c, 0x65, 0x8f, - 0x3e, 0x63, 0xc1, 0xa8, 0x73, 0x3b, 0xd6, 0x85, 0x69, 0x45, 0xd0, 0xe0, 0x11, 0x95, 0x54, 0xaa, - 0xd6, 0x2d, 0x77, 0xf9, 0xa6, 0x9a, 0x70, 0x9a, 0x29, 0x7a, 0xd3, 0x02, 0x44, 0xb6, 0x49, 0x43, - 0x86, 0x35, 0x8a, 0xbe, 0x0c, 0x16, 0xb1, 0xd3, 0xbc, 0xd8, 0x45, 0x97, 0x4b, 0xf5, 0xee, 0x76, - 0x9c, 0xd3, 0x07, 0xfb, 0x1f, 0x97, 0xd5, 0x82, 0xd2, 0x91, 0xb4, 0x8e, 0x11, 0xd1, 0x67, 0x1d, - 0x3e, 0xa2, 0x4f, 0x47, 0x24, 0x74, 0x27, 0x97, 0xa6, 0x72, 0xd1, 0x4a, 0xf7, 0x29, 0x17, 0xed, - 0x67, 0xac, 0x54, 0x61, 0xa7, 0xe1, 0x0b, 0x2f, 0x17, 0x1b, 0xc5, 0x3b, 0xc9, 0xa3, 0x25, 0x32, - 0xd2, 0x3d, 0x1d, 0x24, 0x43, 0xa5, 0xa9, 0x81, 0x76, 0x20, 0x69, 0xf8, 0xef, 0xca, 0x30, 0x6c, - 0x68, 0xd2, 0x5c, 0xb3, 0xc8, 0x7a, 0xc0, 0xcc, 0xa2, 0xd2, 0x01, 0xcc, 0xa2, 0x9f, 0x86, 0x5a, - 0x43, 0x4a, 0xf9, 0x62, 0x4a, 0x1b, 0x67, 0x75, 0x87, 0x16, 0xf4, 0xaa, 0x09, 0x6b, 0x9e, 0x68, - 0x2e, 0x95, 0xc1, 0x24, 0x34, 0xc4, 0x00, 0xd3, 0x10, 0x79, 0x29, 0x46, 0x42, 0x53, 0x74, 0x3f, - 0xc3, 0xea, 0x7f, 0x85, 0xae, 0x78, 0x2f, 0x19, 0x6b, 0xcf, 0xeb, 0x7f, 0x2d, 0xcf, 0xcb, 0x66, - 0x6c, 0xe2, 0xd8, 0xdf, 0xb1, 0xd4, 0xc7, 0xbd, 0x07, 0xa5, 0x2a, 0x6e, 0xa5, 0x4b, 0x55, 0x5c, - 0x2c, 0x64, 0x98, 0x7b, 0xd4, 0xa8, 0xb8, 0x06, 0x43, 0x33, 0x41, 0xbb, 0xed, 0xf8, 0x4d, 0xf4, - 0x23, 0x30, 0xd4, 0xe0, 0x3f, 0x85, 0x63, 0x87, 0x1d, 0x0f, 0x0a, 0x28, 0x96, 0x30, 0xf4, 0x28, - 0x0c, 0x38, 0x51, 0x4b, 0x3a, 0x73, 0x58, 0x70, 0xcd, 0x74, 0xd4, 0x8a, 0x31, 0x6b, 0xb5, 0xff, - 0xfe, 0x00, 0xb0, 0x33, 0x6d, 0x27, 0x22, 0xcd, 0xd5, 0x80, 0x95, 0x56, 0x3c, 0xd6, 0x43, 0x35, - 0xbd, 0x59, 0x7a, 0x90, 0x0f, 0xd6, 0x8c, 0xc3, 0x95, 0xf2, 0x3d, 0x3e, 0x5c, 0xe9, 0x71, 0x5e, - 0x36, 0xf0, 0x00, 0x9d, 0x97, 0xd9, 0x5f, 0xb0, 0x00, 0xa9, 0x40, 0x08, 0x7d, 0xa0, 0x3d, 0x05, - 0x35, 0x15, 0x12, 0x21, 0x0c, 0x2b, 0x2d, 0x22, 0x24, 0x00, 0x6b, 0x9c, 0x3e, 0x76, 0xc8, 0x4f, - 0x48, 0xf9, 0x5d, 0x4e, 0xc7, 0xe5, 0x32, 0xa9, 0x2f, 0xc4, 0xb9, 0xfd, 0x5b, 0x25, 0x78, 0x88, - 0xab, 0xe4, 0x45, 0xc7, 0x77, 0x5a, 0xa4, 0x4d, 0x7b, 0xd5, 0x6f, 0x88, 0x42, 0x83, 0x6e, 0xcd, - 0x5c, 0x19, 0x67, 0x7b, 0xd4, 0xb5, 0xcb, 0xd7, 0x1c, 0x5f, 0x65, 0xf3, 0xbe, 0x9b, 0x60, 0x46, - 0x1c, 0xc5, 0x50, 0x95, 0x75, 0xff, 0x85, 0x2c, 0x2e, 0x88, 0x91, 0x12, 0x4b, 0x42, 0x6f, 0x12, - 0xac, 0x18, 0x51, 0xc3, 0xd5, 0x0b, 0x1a, 0x9b, 0x98, 0x84, 0x01, 0x93, 0xbb, 0x46, 0x98, 0xe3, - 0x82, 0x68, 0xc7, 0x0a, 0xc3, 0xfe, 0x2d, 0x0b, 0xb2, 0x1a, 0xc9, 0xa8, 0x61, 0x67, 0xed, 0x59, - 0xc3, 0xee, 0x00, 0x55, 0xe0, 0x7e, 0x12, 0x86, 0x9d, 0x84, 0x1a, 0x11, 0x7c, 0xdb, 0x5d, 0x3e, - 0xdc, 0xb1, 0xc6, 0x62, 0xd0, 0x74, 0xd7, 0x5d, 0xb6, 0xdd, 0x36, 0xc9, 0xd9, 0xff, 0x7d, 0x00, - 0x4e, 0x75, 0x65, 0xa5, 0xa0, 0x17, 0x60, 0xa4, 0x21, 0xa6, 0x47, 0x28, 0x1d, 0x5a, 0x35, 0x33, - 0x2c, 0x4e, 0xc3, 0x70, 0x0a, 0xb3, 0x8f, 0x09, 0x3a, 0x0f, 0xa7, 0x23, 0xba, 0xd1, 0xef, 0x90, - 0xe9, 0xf5, 0x84, 0x44, 0x2b, 0xa4, 0x11, 0xf8, 0x4d, 0x5e, 0x69, 0xb1, 0x5c, 0x7f, 0xf8, 0xce, - 0xee, 0xc4, 0x69, 0xdc, 0x0d, 0xc6, 0x79, 0xcf, 0xa0, 0x10, 0x46, 0x3d, 0xd3, 0x06, 0x14, 0x1b, - 0x80, 0x43, 0x99, 0x8f, 0xca, 0x46, 0x48, 0x35, 0xe3, 0x34, 0x83, 0xb4, 0x21, 0x59, 0xb9, 0x4f, - 0x86, 0xe4, 0xa7, 0xb5, 0x21, 0xc9, 0xcf, 0xdf, 0x3f, 0x5c, 0x70, 0x56, 0xd2, 0x71, 0x5b, 0x92, - 0x2f, 0x41, 0x55, 0xc6, 0x26, 0xf5, 0x15, 0xd3, 0x63, 0xd2, 0xe9, 0x21, 0xd1, 0x9e, 0x84, 0x1f, - 0xbe, 0x18, 0x45, 0xc6, 0x60, 0x5e, 0x0b, 0x92, 0x69, 0xcf, 0x0b, 0x6e, 0x53, 0x25, 0x7d, 0x3d, - 0x26, 0xc2, 0xc3, 0x62, 0xdf, 0x2d, 0x41, 0xce, 0x66, 0x85, 0xae, 0x47, 0x6d, 0x19, 0xa4, 0xd6, - 0xe3, 0xc1, 0xac, 0x03, 0xb4, 0xcd, 0xe3, 0xb7, 0xb8, 0x0e, 0xfc, 0x50, 0xd1, 0x9b, 0x2d, 0x1d, - 0xd2, 0xa5, 0x92, 0x29, 0x54, 0x58, 0xd7, 0x05, 0x00, 0x6d, 0xd0, 0x89, 0x50, 0x79, 0x75, 0x3c, - 0xac, 0xed, 0x3e, 0x6c, 0x60, 0xd1, 0xbd, 0xb7, 0xeb, 0xc7, 0x89, 0xe3, 0x79, 0x97, 0x5d, 0x3f, - 0x11, 0x4e, 0x44, 0xa5, 0xec, 0xe7, 0x35, 0x08, 0x9b, 0x78, 0xe7, 0xde, 0x63, 0x7c, 0xbf, 0x83, - 0x7c, 0xf7, 0x0d, 0x78, 0x64, 0xce, 0x4d, 0x54, 0x82, 0x87, 0x9a, 0x6f, 0xd4, 0x5e, 0x53, 0x09, - 0x4b, 0x56, 0xcf, 0x84, 0x25, 0x23, 0xc1, 0xa2, 0x94, 0xce, 0x07, 0xc9, 0x26, 0x58, 0xd8, 0x2f, - 0xc0, 0x99, 0x39, 0x37, 0xb9, 0xe4, 0x7a, 0xe4, 0x80, 0x4c, 0xec, 0xdf, 0x1c, 0x84, 0x11, 0x33, - 0x55, 0xf1, 0x20, 0x39, 0x57, 0x5f, 0xa2, 0x26, 0x99, 0x78, 0x3b, 0x57, 0x1d, 0xae, 0xdd, 0x3c, - 0x72, 0xde, 0x64, 0xfe, 0x88, 0x19, 0x56, 0x99, 0xe6, 0x89, 0xcd, 0x0e, 0xa0, 0xdb, 0x50, 0x59, - 0x67, 0x09, 0x00, 0xe5, 0x22, 0x22, 0x10, 0xf2, 0x46, 0x54, 0x2f, 0x47, 0x9e, 0x42, 0xc0, 0xf9, - 0x51, 0x4d, 0x1a, 0xa5, 0xb3, 0xca, 0x8c, 0xa0, 0x55, 0x91, 0x4f, 0xa6, 0x30, 0x7a, 0xa9, 0x84, - 0xca, 0x21, 0x54, 0x42, 0x4a, 0x40, 0x0f, 0xde, 0x27, 0x01, 0xcd, 0x92, 0x39, 0x92, 0x0d, 0x66, - 0xe7, 0x89, 0x28, 0xfb, 0x21, 0x36, 0x08, 0x46, 0x32, 0x47, 0x0a, 0x8c, 0xb3, 0xf8, 0xe8, 0x13, - 0x4a, 0xc4, 0x57, 0x8b, 0xf0, 0xbf, 0x9a, 0x33, 0xfa, 0xb8, 0xa5, 0xfb, 0x17, 0x4a, 0x30, 0x36, - 0xe7, 0x77, 0x96, 0xe7, 0x96, 0x3b, 0x6b, 0x9e, 0xdb, 0xb8, 0x4a, 0x76, 0xa8, 0x08, 0xdf, 0x24, - 0x3b, 0xf3, 0xb3, 0x62, 0x05, 0xa9, 0x39, 0x73, 0x95, 0x36, 0x62, 0x0e, 0xa3, 0xc2, 0x68, 0xdd, - 0xf5, 0x5b, 0x24, 0x0a, 0x23, 0x57, 0xb8, 0x46, 0x0d, 0x61, 0x74, 0x49, 0x83, 0xb0, 0x89, 0x47, - 0x69, 0x07, 0xb7, 0x7d, 0x12, 0x65, 0x0d, 0xde, 0x25, 0xda, 0x88, 0x39, 0x8c, 0x22, 0x25, 0x51, - 0x27, 0x4e, 0xc4, 0x64, 0x54, 0x48, 0xab, 0xb4, 0x11, 0x73, 0x18, 0x5d, 0xe9, 0x71, 0x67, 0x8d, - 0x05, 0x78, 0x64, 0x42, 0xfa, 0x57, 0x78, 0x33, 0x96, 0x70, 0x8a, 0xba, 0x49, 0x76, 0x66, 0xe9, - 0xee, 0x38, 0x93, 0xd9, 0x73, 0x95, 0x37, 0x63, 0x09, 0x67, 0xb5, 0x20, 0xd3, 0xc3, 0xf1, 0x7d, - 0x57, 0x0b, 0x32, 0xdd, 0xfd, 0x1e, 0xfb, 0xec, 0x5f, 0xb6, 0x60, 0xc4, 0x0c, 0xcb, 0x42, 0xad, - 0x8c, 0x2d, 0xbc, 0xd4, 0x55, 0x4a, 0xf8, 0x7d, 0x79, 0xd7, 0xb8, 0xb5, 0xdc, 0x24, 0x08, 0xe3, - 0x67, 0x88, 0xdf, 0x72, 0x7d, 0xc2, 0x4e, 0xdb, 0x79, 0x38, 0x57, 0x2a, 0xe6, 0x6b, 0x26, 0x68, - 0x92, 0x43, 0x18, 0xd3, 0xf6, 0x4d, 0x38, 0xd5, 0x95, 0xce, 0xd5, 0x87, 0x09, 0xb2, 0x6f, 0x32, - 0xad, 0x8d, 0x61, 0x98, 0x12, 0x96, 0xf5, 0x88, 0x66, 0xe0, 0x14, 0x5f, 0x48, 0x94, 0xd3, 0x4a, - 0x63, 0x83, 0xb4, 0x55, 0x8a, 0x1e, 0xf3, 0xc3, 0xdf, 0xc8, 0x02, 0x71, 0x37, 0xbe, 0xfd, 0x45, - 0x0b, 0x46, 0x53, 0x19, 0x76, 0x05, 0x19, 0x4b, 0x6c, 0xa5, 0x05, 0x2c, 0x4a, 0x90, 0x85, 0x4a, - 0x97, 0x99, 0x32, 0xd5, 0x2b, 0x4d, 0x83, 0xb0, 0x89, 0x67, 0x7f, 0xa5, 0x04, 0x55, 0x19, 0x69, - 0xd1, 0x47, 0x57, 0x3e, 0x6f, 0xc1, 0xa8, 0x3a, 0xfb, 0x60, 0x4e, 0xb5, 0x52, 0x11, 0xe9, 0x10, - 0xb4, 0x07, 0x6a, 0x5b, 0xee, 0xaf, 0x07, 0xda, 0x72, 0xc7, 0x26, 0x33, 0x9c, 0xe6, 0x8d, 0x6e, - 0x00, 0xc4, 0x3b, 0x71, 0x42, 0xda, 0x86, 0x7b, 0xcf, 0x36, 0x56, 0xdc, 0x64, 0x23, 0x88, 0x08, - 0x5d, 0x5f, 0xd7, 0x82, 0x26, 0x59, 0x51, 0x98, 0xda, 0x84, 0xd2, 0x6d, 0xd8, 0xa0, 0x64, 0xff, - 0xdd, 0x12, 0x9c, 0xcc, 0x76, 0x09, 0x7d, 0x18, 0x46, 0x24, 0x77, 0xe3, 0x46, 0x3a, 0x19, 0x5e, - 0x32, 0x82, 0x0d, 0xd8, 0xdd, 0xdd, 0x89, 0x89, 0xee, 0x2b, 0x01, 0x27, 0x4d, 0x14, 0x9c, 0x22, - 0xc6, 0x0f, 0xa0, 0xc4, 0x49, 0x69, 0x7d, 0x67, 0x3a, 0x0c, 0xc5, 0x29, 0x92, 0x71, 0x00, 0x65, - 0x42, 0x71, 0x06, 0x1b, 0x2d, 0xc3, 0x19, 0xa3, 0xe5, 0x1a, 0x71, 0x5b, 0x1b, 0x6b, 0x41, 0x24, - 0x77, 0x60, 0x8f, 0xea, 0x00, 0xb0, 0x6e, 0x1c, 0x9c, 0xfb, 0x24, 0xd5, 0xf6, 0x0d, 0x27, 0x74, - 0x1a, 0x6e, 0xb2, 0x23, 0xfc, 0x95, 0x4a, 0x36, 0xcd, 0x88, 0x76, 0xac, 0x30, 0xec, 0x45, 0x18, - 0xe8, 0x73, 0x06, 0xf5, 0x65, 0xf9, 0xbf, 0x04, 0x55, 0x4a, 0x4e, 0x9a, 0x77, 0x45, 0x90, 0x0c, - 0xa0, 0x2a, 0x6f, 0x8a, 0x41, 0x36, 0x94, 0x5d, 0x47, 0x9e, 0xf1, 0xa9, 0xd7, 0x9a, 0x8f, 0xe3, - 0x0e, 0xdb, 0x4c, 0x53, 0x20, 0x7a, 0x02, 0xca, 0x64, 0x3b, 0xcc, 0x1e, 0xe6, 0x5d, 0xdc, 0x0e, - 0xdd, 0x88, 0xc4, 0x14, 0x89, 0x6c, 0x87, 0xe8, 0x1c, 0x94, 0xdc, 0xa6, 0x50, 0x52, 0x20, 0x70, - 0x4a, 0xf3, 0xb3, 0xb8, 0xe4, 0x36, 0xed, 0x6d, 0xa8, 0xa9, 0xab, 0x69, 0xd0, 0xa6, 0x94, 0xdd, - 0x56, 0x11, 0xa1, 0x51, 0x92, 0x6e, 0x0f, 0xa9, 0xdd, 0x01, 0xd0, 0xa9, 0x86, 0x45, 0xc9, 0x97, - 0xf3, 0x30, 0xd0, 0x08, 0x44, 0x1a, 0x74, 0x55, 0x93, 0x61, 0x42, 0x9b, 0x41, 0xec, 0x9b, 0x30, - 0x76, 0xd5, 0x0f, 0x6e, 0xb3, 0xc2, 0xf8, 0xac, 0x0e, 0x1c, 0x25, 0xbc, 0x4e, 0x7f, 0x64, 0x4d, - 0x04, 0x06, 0xc5, 0x1c, 0xa6, 0x2a, 0x54, 0x95, 0x7a, 0x55, 0xa8, 0xb2, 0x3f, 0x69, 0xc1, 0x88, - 0xca, 0x59, 0x9a, 0xdb, 0xda, 0xa4, 0x74, 0x5b, 0x51, 0xd0, 0x09, 0xb3, 0x74, 0xd9, 0xe5, 0x51, - 0x98, 0xc3, 0xcc, 0x64, 0xbe, 0xd2, 0x3e, 0xc9, 0x7c, 0xe7, 0x61, 0x60, 0xd3, 0xf5, 0x9b, 0xd9, - 0xdb, 0x50, 0xae, 0xba, 0x7e, 0x13, 0x33, 0x08, 0xed, 0xc2, 0x49, 0xd5, 0x05, 0xa9, 0x10, 0x5e, - 0x80, 0x91, 0xb5, 0x8e, 0xeb, 0x35, 0x65, 0x81, 0xbb, 0x8c, 0x47, 0xa5, 0x6e, 0xc0, 0x70, 0x0a, - 0x93, 0xee, 0xeb, 0xd6, 0x5c, 0xdf, 0x89, 0x76, 0x96, 0xb5, 0x06, 0x52, 0x42, 0xa9, 0xae, 0x20, - 0xd8, 0xc0, 0xb2, 0xdf, 0x28, 0xc3, 0x58, 0x3a, 0x73, 0xab, 0x8f, 0xed, 0xd5, 0x13, 0x50, 0x61, - 0xc9, 0x5c, 0xd9, 0x4f, 0xcb, 0x6b, 0xc2, 0x71, 0x18, 0x8a, 0x61, 0x90, 0x97, 0x81, 0x28, 0xe6, - 0x26, 0x21, 0xd5, 0x49, 0xe5, 0x87, 0x61, 0x71, 0x67, 0xa2, 0xf2, 0x84, 0x60, 0x85, 0x3e, 0x63, - 0xc1, 0x50, 0x10, 0x9a, 0x95, 0x8d, 0x3e, 0x54, 0x64, 0x56, 0x9b, 0x48, 0xaa, 0x11, 0x16, 0xb1, - 0xfa, 0xf4, 0xf2, 0x73, 0x48, 0xd6, 0xe7, 0xde, 0x0b, 0x23, 0x26, 0xe6, 0x7e, 0x46, 0x71, 0xd5, - 0x34, 0x8a, 0x3f, 0x6f, 0x4e, 0x0a, 0x91, 0xb7, 0xd7, 0xc7, 0x72, 0xbb, 0x0e, 0x95, 0x86, 0x0a, - 0x14, 0x38, 0x54, 0x59, 0x54, 0x55, 0x97, 0x81, 0x1d, 0x16, 0x71, 0x6a, 0xf6, 0x77, 0x2c, 0x63, - 0x7e, 0x60, 0x12, 0xcf, 0x37, 0x51, 0x04, 0xe5, 0xd6, 0xd6, 0xa6, 0x30, 0x45, 0xaf, 0x14, 0x34, - 0xbc, 0x73, 0x5b, 0x9b, 0x7a, 0x8e, 0x9b, 0xad, 0x98, 0x32, 0xeb, 0xc3, 0x59, 0x98, 0x4a, 0xef, - 0x2c, 0xef, 0x9f, 0xde, 0x69, 0xbf, 0x59, 0x82, 0x53, 0x5d, 0x93, 0x0a, 0xbd, 0x0e, 0x95, 0x88, - 0xbe, 0xa5, 0x78, 0xbd, 0x85, 0xc2, 0x12, 0x32, 0xe3, 0xf9, 0xa6, 0xd6, 0xbb, 0xe9, 0x76, 0xcc, - 0x59, 0xa2, 0x2b, 0x80, 0x74, 0x38, 0x8b, 0xf2, 0x54, 0xf2, 0x57, 0x3e, 0x27, 0x1e, 0x45, 0xd3, - 0x5d, 0x18, 0x38, 0xe7, 0x29, 0xf4, 0x62, 0xd6, 0xe1, 0x59, 0x4e, 0x9f, 0x6f, 0xee, 0xe5, 0xbb, - 0xb4, 0xff, 0x49, 0x09, 0x46, 0x53, 0x85, 0xa6, 0x90, 0x07, 0x55, 0xe2, 0x31, 0xe7, 0xbf, 0x54, - 0x36, 0x47, 0x2d, 0x1b, 0xad, 0x14, 0xe4, 0x45, 0x41, 0x17, 0x2b, 0x0e, 0x0f, 0xc6, 0x21, 0xfc, - 0x0b, 0x30, 0x22, 0x3b, 0xf4, 0x21, 0xa7, 0xed, 0x89, 0x01, 0x54, 0x73, 0xf4, 0xa2, 0x01, 0xc3, - 0x29, 0x4c, 0xfb, 0xb7, 0xcb, 0x30, 0xce, 0x4f, 0x4b, 0x9a, 0x6a, 0xe6, 0x2d, 0xca, 0xfd, 0xd6, - 0x5f, 0xd4, 0xe5, 0xe0, 0xf8, 0x40, 0xae, 0x1d, 0xf5, 0x96, 0x86, 0x7c, 0x46, 0x7d, 0x45, 0x70, - 0x7d, 0x3d, 0x13, 0xc1, 0xc5, 0xcd, 0xee, 0xd6, 0x31, 0xf5, 0xe8, 0xfb, 0x2b, 0xa4, 0xeb, 0x6f, - 0x95, 0xe0, 0x44, 0xe6, 0x0a, 0x0c, 0xf4, 0x46, 0xba, 0x6a, 0xb2, 0x55, 0x84, 0x4f, 0x7d, 0xcf, - 0x5b, 0x11, 0x0e, 0x56, 0x3b, 0xf9, 0x3e, 0x2d, 0x15, 0xfb, 0x0f, 0x4a, 0x30, 0x96, 0xbe, 0xbb, - 0xe3, 0x01, 0x1c, 0xa9, 0x77, 0x41, 0x8d, 0x95, 0xa7, 0x67, 0x57, 0x9a, 0x72, 0x97, 0x3c, 0xaf, - 0x04, 0x2e, 0x1b, 0xb1, 0x86, 0x3f, 0x10, 0x25, 0xa9, 0xed, 0xbf, 0x6d, 0xc1, 0x59, 0xfe, 0x96, - 0xd9, 0x79, 0xf8, 0x97, 0xf2, 0x46, 0xf7, 0x95, 0x62, 0x3b, 0x98, 0x29, 0x63, 0xb8, 0xdf, 0xf8, - 0xb2, 0xab, 0x14, 0x45, 0x6f, 0xd3, 0x53, 0xe1, 0x01, 0xec, 0xec, 0x81, 0x26, 0x83, 0xfd, 0x07, - 0x65, 0xd0, 0xb7, 0x47, 0x22, 0x57, 0xe4, 0x42, 0x16, 0x52, 0xce, 0x71, 0x65, 0xc7, 0x6f, 0xe8, - 0x7b, 0x2a, 0xab, 0x99, 0x54, 0xc8, 0x9f, 0xb3, 0x60, 0xd8, 0xf5, 0xdd, 0xc4, 0x75, 0xd8, 0x36, - 0xba, 0x98, 0x9b, 0xed, 0x14, 0xbb, 0x79, 0x4e, 0x39, 0x88, 0xcc, 0x73, 0x1c, 0xc5, 0x0c, 0x9b, - 0x9c, 0xd1, 0x47, 0x45, 0x90, 0x75, 0xb9, 0xb0, 0x2c, 0xde, 0x6a, 0x26, 0xb2, 0x3a, 0xa4, 0x86, - 0x57, 0x12, 0x15, 0x94, 0xfc, 0x8e, 0x29, 0x29, 0x55, 0x19, 0x58, 0xdf, 0xe3, 0x4d, 0x9b, 0x31, - 0x67, 0x64, 0xc7, 0x80, 0xba, 0xc7, 0xe2, 0x80, 0x01, 0xac, 0x53, 0x50, 0x73, 0x3a, 0x49, 0xd0, - 0xa6, 0xc3, 0x24, 0x8e, 0x9a, 0x74, 0x88, 0xae, 0x04, 0x60, 0x8d, 0x63, 0xbf, 0x51, 0x81, 0x4c, - 0x72, 0x22, 0xda, 0x36, 0x6f, 0x3e, 0xb5, 0x8a, 0xbd, 0xf9, 0x54, 0x75, 0x26, 0xef, 0xf6, 0x53, - 0xd4, 0x82, 0x4a, 0xb8, 0xe1, 0xc4, 0xd2, 0xac, 0x7e, 0x49, 0xed, 0xe3, 0x68, 0xe3, 0xdd, 0xdd, - 0x89, 0x9f, 0xe8, 0xcf, 0xeb, 0x4a, 0xe7, 0xea, 0x14, 0x2f, 0x73, 0xa2, 0x59, 0x33, 0x1a, 0x98, - 0xd3, 0x3f, 0xc8, 0xdd, 0x7e, 0x9f, 0x12, 0x75, 0xf8, 0x31, 0x89, 0x3b, 0x5e, 0x22, 0x66, 0xc3, - 0x4b, 0x05, 0xae, 0x32, 0x4e, 0x58, 0xa7, 0xd5, 0xf3, 0xff, 0xd8, 0x60, 0x8a, 0x3e, 0x0c, 0xb5, - 0x38, 0x71, 0xa2, 0xe4, 0x90, 0x89, 0xb0, 0x6a, 0xd0, 0x57, 0x24, 0x11, 0xac, 0xe9, 0xa1, 0x97, - 0x59, 0x75, 0x5b, 0x37, 0xde, 0x38, 0x64, 0x6e, 0x84, 0xac, 0x84, 0x2b, 0x28, 0x60, 0x83, 0x1a, - 0xba, 0x00, 0xc0, 0xe6, 0x36, 0x0f, 0x08, 0xac, 0x32, 0x2f, 0x93, 0x12, 0x85, 0x58, 0x41, 0xb0, - 0x81, 0x65, 0xff, 0x28, 0xa4, 0xeb, 0x42, 0xa0, 0x09, 0x59, 0x86, 0x82, 0x7b, 0xa1, 0x59, 0x8e, - 0x43, 0xaa, 0x62, 0xc4, 0xaf, 0x5b, 0x60, 0x16, 0xaf, 0x40, 0xaf, 0xf1, 0x2a, 0x19, 0x56, 0x11, - 0x27, 0x87, 0x06, 0xdd, 0xc9, 0x45, 0x27, 0xcc, 0x1c, 0x61, 0xcb, 0x52, 0x19, 0xe7, 0xde, 0x03, - 0x55, 0x09, 0x3d, 0x90, 0x51, 0xf7, 0x09, 0x38, 0x9d, 0xbd, 0x17, 0x5e, 0x9c, 0x3a, 0xed, 0xef, - 0xfa, 0x91, 0xfe, 0x9c, 0x52, 0x2f, 0x7f, 0x4e, 0x1f, 0xf7, 0xdf, 0xfe, 0x86, 0x05, 0xe7, 0xf7, - 0xbb, 0xbe, 0x1e, 0x3d, 0x0a, 0x03, 0xb7, 0x9d, 0x48, 0x96, 0x1d, 0x67, 0x82, 0xf2, 0xa6, 0x13, - 0xf9, 0x98, 0xb5, 0xa2, 0x1d, 0x18, 0xe4, 0x51, 0x63, 0xc2, 0x5a, 0x7f, 0xa9, 0xd8, 0xcb, 0xf4, - 0xaf, 0x12, 0x63, 0xbb, 0xc0, 0x23, 0xd6, 0xb0, 0x60, 0x68, 0x7f, 0xd7, 0x02, 0xb4, 0xb4, 0x45, - 0xa2, 0xc8, 0x6d, 0x1a, 0x71, 0x6e, 0xec, 0x3e, 0x1b, 0xe3, 0xde, 0x1a, 0x33, 0x15, 0x36, 0x73, - 0x9f, 0x8d, 0xf1, 0x2f, 0xff, 0x3e, 0x9b, 0xd2, 0xc1, 0xee, 0xb3, 0x41, 0x4b, 0x70, 0xb6, 0xcd, - 0xb7, 0x1b, 0xfc, 0x8e, 0x08, 0xbe, 0xf7, 0x50, 0x89, 0x67, 0x8f, 0xdc, 0xd9, 0x9d, 0x38, 0xbb, - 0x98, 0x87, 0x80, 0xf3, 0x9f, 0xb3, 0xdf, 0x03, 0x88, 0x87, 0xb7, 0xcd, 0xe4, 0xc5, 0x2a, 0xf5, - 0x74, 0xbf, 0xd8, 0x5f, 0xab, 0xc0, 0x89, 0x4c, 0x51, 0x5a, 0xba, 0xd5, 0xeb, 0x0e, 0x8e, 0x3a, - 0xb2, 0xfe, 0xee, 0xee, 0x5e, 0x5f, 0xe1, 0x56, 0x3e, 0x54, 0x5c, 0x3f, 0xec, 0x24, 0xc5, 0xe4, - 0x9a, 0xf2, 0x4e, 0xcc, 0x53, 0x82, 0x86, 0xbb, 0x98, 0xfe, 0xc5, 0x9c, 0x4d, 0x91, 0xc1, 0x5b, - 0x29, 0x63, 0x7c, 0xe0, 0x3e, 0xb9, 0x03, 0x3e, 0xa5, 0x43, 0xa9, 0x2a, 0x45, 0x38, 0x16, 0x33, - 0x93, 0xe5, 0xb8, 0x8f, 0xda, 0x7f, 0xad, 0x04, 0xc3, 0xc6, 0x47, 0x43, 0xbf, 0x94, 0x2e, 0xed, - 0x64, 0x15, 0xf7, 0x4a, 0x8c, 0xfe, 0xa4, 0x2e, 0xde, 0xc4, 0x5f, 0xe9, 0xc9, 0xee, 0xaa, 0x4e, - 0x77, 0x77, 0x27, 0x4e, 0x66, 0xea, 0x36, 0xa5, 0x2a, 0x3d, 0x9d, 0xfb, 0x38, 0x9c, 0xc8, 0x90, - 0xc9, 0x79, 0xe5, 0xd5, 0xf4, 0xb5, 0xff, 0x47, 0x74, 0x4b, 0x99, 0x43, 0xf6, 0x2d, 0x3a, 0x64, - 0x22, 0xdd, 0x2e, 0xf0, 0x48, 0x1f, 0x3e, 0xd8, 0x4c, 0x56, 0x6d, 0xa9, 0xcf, 0xac, 0xda, 0xa7, - 0xa0, 0x1a, 0x06, 0x9e, 0xdb, 0x70, 0x55, 0xfd, 0x43, 0x96, 0xc7, 0xbb, 0x2c, 0xda, 0xb0, 0x82, - 0xa2, 0xdb, 0x50, 0xbb, 0x75, 0x3b, 0xe1, 0xa7, 0x3f, 0xc2, 0xbf, 0x5d, 0xd4, 0xa1, 0x8f, 0x32, - 0x5a, 0xd4, 0xf1, 0x12, 0xd6, 0xbc, 0x90, 0x0d, 0x83, 0x4c, 0x09, 0xca, 0x14, 0x01, 0xe6, 0x7b, - 0x67, 0xda, 0x31, 0xc6, 0x02, 0x62, 0x7f, 0xb3, 0x06, 0x67, 0xf2, 0x2a, 0x83, 0xa3, 0x8f, 0xc1, - 0x20, 0xef, 0x63, 0x31, 0x97, 0x4f, 0xe4, 0xf1, 0x98, 0x63, 0x04, 0x45, 0xb7, 0xd8, 0x6f, 0x2c, - 0x78, 0x0a, 0xee, 0x9e, 0xb3, 0x26, 0x66, 0xc8, 0xf1, 0x70, 0x5f, 0x70, 0x34, 0xf7, 0x05, 0x87, - 0x73, 0xf7, 0x9c, 0x35, 0xb4, 0x0d, 0x95, 0x96, 0x9b, 0x10, 0x47, 0x38, 0x11, 0x6e, 0x1e, 0x0b, - 0x73, 0xe2, 0x70, 0x2b, 0x8d, 0xfd, 0xc4, 0x9c, 0x21, 0xfa, 0x86, 0x05, 0x27, 0xd6, 0xd2, 0x29, - 0xf4, 0x42, 0x78, 0x3a, 0xc7, 0x50, 0xfd, 0x3d, 0xcd, 0x88, 0x5f, 0xe8, 0x94, 0x69, 0xc4, 0xd9, - 0xee, 0xa0, 0x4f, 0x5b, 0x30, 0xb4, 0xee, 0x7a, 0x46, 0x01, 0xde, 0x63, 0xf8, 0x38, 0x97, 0x18, - 0x03, 0xbd, 0xe3, 0xe0, 0xff, 0x63, 0x2c, 0x39, 0xf7, 0xd2, 0x54, 0x83, 0x47, 0xd5, 0x54, 0x43, - 0xf7, 0x49, 0x53, 0x7d, 0xce, 0x82, 0x9a, 0x1a, 0x69, 0x91, 0x16, 0xfd, 0xe1, 0x63, 0xfc, 0xe4, - 0xdc, 0x73, 0xa2, 0xfe, 0x62, 0xcd, 0x1c, 0x7d, 0xd9, 0x82, 0x61, 0xe7, 0xf5, 0x4e, 0x44, 0x9a, - 0x64, 0x2b, 0x08, 0x63, 0x71, 0x1b, 0xe4, 0x2b, 0xc5, 0x77, 0x66, 0x9a, 0x32, 0x99, 0x25, 0x5b, - 0x4b, 0x61, 0x2c, 0xd2, 0x97, 0x74, 0x03, 0x36, 0xbb, 0x60, 0xef, 0x96, 0x60, 0x62, 0x1f, 0x0a, - 0xe8, 0x05, 0x18, 0x09, 0xa2, 0x96, 0xe3, 0xbb, 0xaf, 0x9b, 0x35, 0x31, 0x94, 0x95, 0xb5, 0x64, - 0xc0, 0x70, 0x0a, 0xd3, 0x4c, 0xdc, 0x2e, 0xed, 0x93, 0xb8, 0x7d, 0x1e, 0x06, 0x22, 0x12, 0x06, - 0xd9, 0xcd, 0x02, 0x4b, 0x1d, 0x60, 0x10, 0xf4, 0x18, 0x94, 0x9d, 0xd0, 0x15, 0x81, 0x68, 0x6a, - 0x0f, 0x34, 0xbd, 0x3c, 0x8f, 0x69, 0x7b, 0xaa, 0x8e, 0x44, 0xe5, 0x9e, 0xd4, 0x91, 0xa0, 0x6a, - 0x40, 0x9c, 0x5d, 0x0c, 0x6a, 0x35, 0x90, 0x3e, 0x53, 0xb0, 0xdf, 0x2c, 0xc3, 0x63, 0x7b, 0xce, - 0x17, 0x1d, 0x87, 0x67, 0xed, 0x11, 0x87, 0x27, 0x87, 0xa7, 0xb4, 0xdf, 0xf0, 0x94, 0x7b, 0x0c, - 0xcf, 0xa7, 0xe9, 0x32, 0x90, 0xb5, 0x44, 0x8a, 0xb9, 0xcf, 0xaf, 0x57, 0x69, 0x12, 0xb1, 0x02, - 0x24, 0x14, 0x6b, 0xbe, 0x74, 0x0f, 0x90, 0x4a, 0x5a, 0xae, 0x14, 0xa1, 0x06, 0x7a, 0xd6, 0x16, - 0xe1, 0x73, 0xbf, 0x57, 0x26, 0xb4, 0xfd, 0xf3, 0x25, 0x78, 0xa2, 0x0f, 0xe9, 0x6d, 0xce, 0x62, - 0xab, 0xcf, 0x59, 0xfc, 0xfd, 0xfd, 0x99, 0xec, 0xbf, 0x6c, 0xc1, 0xb9, 0xde, 0xca, 0x03, 0x3d, - 0x0b, 0xc3, 0x6b, 0x91, 0xe3, 0x37, 0x36, 0xd8, 0x1d, 0xa5, 0x72, 0x50, 0xd8, 0x58, 0xeb, 0x66, - 0x6c, 0xe2, 0xd0, 0xed, 0x2d, 0x8f, 0x49, 0x30, 0x30, 0x64, 0x92, 0x29, 0xdd, 0xde, 0xae, 0x66, - 0x81, 0xb8, 0x1b, 0xdf, 0xfe, 0xb3, 0x52, 0x7e, 0xb7, 0xb8, 0x91, 0x71, 0x90, 0xef, 0x24, 0xbe, - 0x42, 0xa9, 0x0f, 0x59, 0x52, 0xbe, 0xd7, 0xb2, 0x64, 0xa0, 0x97, 0x2c, 0x41, 0xb3, 0x70, 0xd2, - 0xb8, 0x44, 0x86, 0x27, 0x0e, 0xf3, 0x80, 0x5b, 0x55, 0x4d, 0x63, 0x39, 0x03, 0xc7, 0x5d, 0x4f, - 0xa0, 0xa7, 0xa1, 0xea, 0xfa, 0x31, 0x69, 0x74, 0x22, 0x1e, 0xe8, 0x6d, 0x24, 0x6b, 0xcd, 0x8b, - 0x76, 0xac, 0x30, 0xec, 0x5f, 0x2e, 0xc1, 0x23, 0x3d, 0xed, 0xac, 0x7b, 0x24, 0xbb, 0xcc, 0xcf, - 0x31, 0x70, 0x6f, 0x3e, 0x87, 0x39, 0x48, 0x95, 0x7d, 0x07, 0xe9, 0x0f, 0x7b, 0x4f, 0x4c, 0x6a, - 0x73, 0xff, 0xc0, 0x8e, 0xd2, 0x8b, 0x30, 0xea, 0x84, 0x21, 0xc7, 0x63, 0xf1, 0x9a, 0x99, 0x6a, - 0x3a, 0xd3, 0x26, 0x10, 0xa7, 0x71, 0xfb, 0xd2, 0x9e, 0x7f, 0x6c, 0x41, 0x0d, 0x93, 0x75, 0x2e, - 0x1d, 0xd0, 0x2d, 0x31, 0x44, 0x56, 0x11, 0x75, 0x37, 0xe9, 0xc0, 0xc6, 0x2e, 0xab, 0x47, 0x99, - 0x37, 0xd8, 0xdd, 0x97, 0xfc, 0x94, 0x0e, 0x74, 0xc9, 0x8f, 0xba, 0xe6, 0xa5, 0xdc, 0xfb, 0x9a, - 0x17, 0xfb, 0x5b, 0x43, 0xf4, 0xf5, 0xc2, 0x60, 0x26, 0x22, 0xcd, 0x98, 0x7e, 0xdf, 0x4e, 0xe4, - 0x89, 0x49, 0xa2, 0xbe, 0xef, 0x75, 0xbc, 0x80, 0x69, 0x7b, 0xea, 0x28, 0xa6, 0x74, 0xa0, 0x5a, - 0x22, 0xe5, 0x7d, 0x6b, 0x89, 0xbc, 0x08, 0xa3, 0x71, 0xbc, 0xb1, 0x1c, 0xb9, 0x5b, 0x4e, 0x42, - 0xae, 0x92, 0x1d, 0x61, 0x65, 0xe9, 0xfc, 0xff, 0x95, 0xcb, 0x1a, 0x88, 0xd3, 0xb8, 0x68, 0x0e, - 0x4e, 0xe9, 0x8a, 0x1e, 0x24, 0x4a, 0x58, 0x74, 0x3f, 0x9f, 0x09, 0x2a, 0xd9, 0x57, 0xd7, 0x00, - 0x11, 0x08, 0xb8, 0xfb, 0x19, 0x2a, 0xdf, 0x52, 0x8d, 0xb4, 0x23, 0x83, 0x69, 0xf9, 0x96, 0xa2, - 0x43, 0xfb, 0xd2, 0xf5, 0x04, 0x5a, 0x84, 0xd3, 0x7c, 0x62, 0x4c, 0x87, 0xa1, 0xf1, 0x46, 0x43, - 0xe9, 0x7a, 0x87, 0x73, 0xdd, 0x28, 0x38, 0xef, 0x39, 0xf4, 0x3c, 0x0c, 0xab, 0xe6, 0xf9, 0x59, - 0x71, 0x8a, 0xa0, 0xbc, 0x18, 0x8a, 0xcc, 0x7c, 0x13, 0x9b, 0x78, 0xe8, 0x43, 0xf0, 0xb0, 0xfe, - 0xcb, 0x53, 0xc0, 0xf8, 0xd1, 0xda, 0xac, 0x28, 0x96, 0xa4, 0x2e, 0x15, 0x99, 0xcb, 0x45, 0x6b, - 0xe2, 0x5e, 0xcf, 0xa3, 0x35, 0x38, 0xa7, 0x40, 0x17, 0xfd, 0x84, 0xe5, 0x73, 0xc4, 0xa4, 0xee, - 0xc4, 0xe4, 0x7a, 0xe4, 0x89, 0xcb, 0x69, 0xd5, 0xbd, 0x93, 0x73, 0x6e, 0x72, 0x39, 0x0f, 0x13, - 0x2f, 0xe0, 0x3d, 0xa8, 0xa0, 0x29, 0xa8, 0x11, 0xdf, 0x59, 0xf3, 0xc8, 0xd2, 0xcc, 0x3c, 0x2b, - 0xba, 0x64, 0x9c, 0xe4, 0x5d, 0x94, 0x00, 0xac, 0x71, 0x54, 0x84, 0xe9, 0x48, 0xcf, 0x3b, 0x50, - 0x97, 0xe1, 0x4c, 0xab, 0x11, 0x52, 0xdb, 0xc3, 0x6d, 0x90, 0xe9, 0x06, 0x0b, 0xa8, 0xa3, 0x1f, - 0x86, 0x17, 0xa2, 0x54, 0xe1, 0xd3, 0x73, 0x33, 0xcb, 0x5d, 0x38, 0x38, 0xf7, 0x49, 0x16, 0x78, - 0x19, 0x05, 0xdb, 0x3b, 0xe3, 0xa7, 0x33, 0x81, 0x97, 0xb4, 0x11, 0x73, 0x18, 0xba, 0x02, 0x88, - 0xc5, 0xe2, 0x5f, 0x4e, 0x92, 0x50, 0x19, 0x3b, 0xe3, 0x67, 0xd8, 0x2b, 0xa9, 0x30, 0xb2, 0x4b, - 0x5d, 0x18, 0x38, 0xe7, 0x29, 0xfb, 0xdf, 0x5b, 0x30, 0xaa, 0xd6, 0xeb, 0x3d, 0xc8, 0x46, 0xf1, - 0xd2, 0xd9, 0x28, 0x73, 0x47, 0x97, 0x78, 0xac, 0xe7, 0x3d, 0x42, 0x9a, 0x3f, 0x3b, 0x0c, 0xa0, - 0xa5, 0xa2, 0x52, 0x48, 0x56, 0x4f, 0x85, 0xf4, 0xc0, 0x4a, 0xa4, 0xbc, 0x0a, 0x2b, 0x95, 0xfb, - 0x5b, 0x61, 0x65, 0x05, 0xce, 0x4a, 0x73, 0x81, 0x9f, 0x15, 0x5d, 0x0e, 0x62, 0x25, 0xe0, 0xaa, - 0xf5, 0xc7, 0x04, 0xa1, 0xb3, 0xf3, 0x79, 0x48, 0x38, 0xff, 0xd9, 0x94, 0x95, 0x32, 0xb4, 0x9f, - 0x95, 0xa2, 0xd7, 0xf4, 0xc2, 0xba, 0xbc, 0x3d, 0x24, 0xb3, 0xa6, 0x17, 0x2e, 0xad, 0x60, 0x8d, - 0x93, 0x2f, 0xd8, 0x6b, 0x05, 0x09, 0x76, 0x38, 0xb0, 0x60, 0x97, 0x22, 0x66, 0xb8, 0xa7, 0x88, - 0x91, 0x3e, 0xe9, 0x91, 0x9e, 0x3e, 0xe9, 0xf7, 0xc3, 0x98, 0xeb, 0x6f, 0x90, 0xc8, 0x4d, 0x48, - 0x93, 0xad, 0x05, 0x26, 0x7e, 0xaa, 0x5a, 0xad, 0xcf, 0xa7, 0xa0, 0x38, 0x83, 0x9d, 0x96, 0x8b, - 0x63, 0x7d, 0xc8, 0xc5, 0x1e, 0xda, 0xe8, 0x44, 0x31, 0xda, 0xe8, 0xe4, 0xd1, 0xb5, 0xd1, 0xa9, - 0x63, 0xd5, 0x46, 0xa8, 0x10, 0x6d, 0xd4, 0x97, 0xa0, 0x37, 0xb6, 0x7f, 0x67, 0xf6, 0xd9, 0xfe, - 0xf5, 0x52, 0x45, 0x67, 0x0f, 0xad, 0x8a, 0xf2, 0xb5, 0xcc, 0x43, 0x87, 0xd2, 0x32, 0x9f, 0x2b, - 0xc1, 0x59, 0x2d, 0x87, 0xe9, 0xec, 0x77, 0xd7, 0xa9, 0x24, 0x62, 0x17, 0x50, 0xf1, 0x73, 0x1b, - 0x23, 0x39, 0x4a, 0xe7, 0x59, 0x29, 0x08, 0x36, 0xb0, 0x58, 0x8e, 0x11, 0x89, 0x58, 0xb9, 0xdd, - 0xac, 0x90, 0x9e, 0x11, 0xed, 0x58, 0x61, 0xd0, 0xf9, 0x45, 0x7f, 0x8b, 0xbc, 0xcd, 0x6c, 0x51, - 0xb9, 0x19, 0x0d, 0xc2, 0x26, 0x1e, 0x7a, 0x8a, 0x33, 0x61, 0x02, 0x82, 0x0a, 0xea, 0x11, 0x71, - 0x33, 0xae, 0x94, 0x09, 0x0a, 0x2a, 0xbb, 0xc3, 0x92, 0xc9, 0x2a, 0xdd, 0xdd, 0x61, 0x21, 0x50, - 0x0a, 0xc3, 0xfe, 0x1f, 0x16, 0x3c, 0x92, 0x3b, 0x14, 0xf7, 0x40, 0xf9, 0x6e, 0xa7, 0x95, 0xef, - 0x4a, 0x51, 0xdb, 0x0d, 0xe3, 0x2d, 0x7a, 0x28, 0xe2, 0x7f, 0x6b, 0xc1, 0x98, 0xc6, 0xbf, 0x07, - 0xaf, 0xea, 0xa6, 0x5f, 0xb5, 0xb8, 0x9d, 0x55, 0xad, 0xeb, 0xdd, 0x7e, 0xbb, 0x04, 0xaa, 0xd0, - 0xe3, 0x74, 0x43, 0x96, 0xd1, 0xdd, 0xe7, 0x24, 0x71, 0x07, 0x06, 0xd9, 0x41, 0x68, 0x5c, 0x4c, - 0x90, 0x47, 0x9a, 0x3f, 0x3b, 0x54, 0xd5, 0x87, 0xcc, 0xec, 0x6f, 0x8c, 0x05, 0x43, 0x56, 0x0c, - 0xda, 0x8d, 0xa9, 0x34, 0x6f, 0x8a, 0xb4, 0x2c, 0x5d, 0x0c, 0x5a, 0xb4, 0x63, 0x85, 0x41, 0xd5, - 0x83, 0xdb, 0x08, 0xfc, 0x19, 0xcf, 0x89, 0xe5, 0xad, 0x8b, 0x4a, 0x3d, 0xcc, 0x4b, 0x00, 0xd6, - 0x38, 0xec, 0x8c, 0xd4, 0x8d, 0x43, 0xcf, 0xd9, 0x31, 0xf6, 0xcf, 0x46, 0x7d, 0x02, 0x05, 0xc2, - 0x26, 0x9e, 0xdd, 0x86, 0xf1, 0xf4, 0x4b, 0xcc, 0x92, 0x75, 0x16, 0xa0, 0xd8, 0xd7, 0x70, 0x4e, - 0x41, 0xcd, 0x61, 0x4f, 0x2d, 0x74, 0x9c, 0xec, 0xa5, 0xed, 0xd3, 0x12, 0x80, 0x35, 0x8e, 0xfd, - 0xab, 0x16, 0x9c, 0xce, 0x19, 0xb4, 0x02, 0xd3, 0xde, 0x12, 0x2d, 0x6d, 0xf2, 0x14, 0xfb, 0x3b, - 0x61, 0xa8, 0x49, 0xd6, 0x1d, 0x19, 0x02, 0x67, 0xc8, 0xf6, 0x59, 0xde, 0x8c, 0x25, 0xdc, 0xfe, - 0x6f, 0x16, 0x9c, 0x48, 0xf7, 0x35, 0x66, 0xa9, 0x24, 0x7c, 0x98, 0xdc, 0xb8, 0x11, 0x6c, 0x91, - 0x68, 0x87, 0xbe, 0xb9, 0x95, 0x49, 0x25, 0xe9, 0xc2, 0xc0, 0x39, 0x4f, 0xb1, 0x32, 0xaf, 0x4d, - 0x35, 0xda, 0x72, 0x46, 0xde, 0x28, 0x72, 0x46, 0xea, 0x8f, 0x69, 0x1e, 0x97, 0x2b, 0x96, 0xd8, - 0xe4, 0x6f, 0x7f, 0x77, 0x00, 0x54, 0x5e, 0x2c, 0x8b, 0x3f, 0x2a, 0x28, 0x7a, 0xeb, 0xa0, 0x19, - 0x44, 0x6a, 0x32, 0x0c, 0xec, 0x15, 0x10, 0xc0, 0xbd, 0x24, 0xa6, 0xeb, 0x52, 0xbd, 0xe1, 0xaa, - 0x06, 0x61, 0x13, 0x8f, 0xf6, 0xc4, 0x73, 0xb7, 0x08, 0x7f, 0x68, 0x30, 0xdd, 0x93, 0x05, 0x09, - 0xc0, 0x1a, 0x87, 0xf6, 0xa4, 0xe9, 0xae, 0xaf, 0x8b, 0x2d, 0xbf, 0xea, 0x09, 0x1d, 0x1d, 0xcc, - 0x20, 0xbc, 0x72, 0x77, 0xb0, 0x29, 0xac, 0x60, 0xa3, 0x72, 0x77, 0xb0, 0x89, 0x19, 0x84, 0xda, - 0x6d, 0x7e, 0x10, 0xb5, 0xd9, 0xa5, 0xfa, 0x4d, 0xc5, 0x45, 0x58, 0xbf, 0xca, 0x6e, 0xbb, 0xd6, - 0x8d, 0x82, 0xf3, 0x9e, 0xa3, 0x33, 0x30, 0x8c, 0x48, 0xd3, 0x6d, 0x24, 0x26, 0x35, 0x48, 0xcf, - 0xc0, 0xe5, 0x2e, 0x0c, 0x9c, 0xf3, 0x14, 0x9a, 0x86, 0x13, 0x32, 0xaf, 0x59, 0x56, 0xad, 0x19, - 0x4e, 0x57, 0xc9, 0xc0, 0x69, 0x30, 0xce, 0xe2, 0x53, 0xa9, 0xd6, 0x16, 0x85, 0xad, 0x98, 0xb1, - 0x6c, 0x48, 0x35, 0x59, 0xf0, 0x0a, 0x2b, 0x0c, 0xfb, 0x53, 0x65, 0xaa, 0x85, 0x7b, 0x14, 0x74, - 0xbb, 0x67, 0xd1, 0x82, 0xe9, 0x19, 0x39, 0xd0, 0xc7, 0x8c, 0x7c, 0x0e, 0x46, 0x6e, 0xc5, 0x81, - 0xaf, 0x22, 0xf1, 0x2a, 0x3d, 0x23, 0xf1, 0x0c, 0xac, 0xfc, 0x48, 0xbc, 0xc1, 0xa2, 0x22, 0xf1, - 0x86, 0x0e, 0x19, 0x89, 0xf7, 0x3b, 0x15, 0x50, 0x57, 0x88, 0x5c, 0x23, 0xc9, 0xed, 0x20, 0xda, - 0x74, 0xfd, 0x16, 0xcb, 0x07, 0xff, 0x86, 0x05, 0x23, 0x7c, 0xbd, 0x2c, 0x98, 0x99, 0x54, 0xeb, - 0x05, 0xdd, 0x4d, 0x91, 0x62, 0x36, 0xb9, 0x6a, 0x30, 0xca, 0x5c, 0xfa, 0x69, 0x82, 0x70, 0xaa, - 0x47, 0xe8, 0xe3, 0x00, 0xd2, 0x3f, 0xba, 0x2e, 0x45, 0xe6, 0x7c, 0x31, 0xfd, 0xc3, 0x64, 0x5d, - 0xdb, 0xc0, 0xab, 0x8a, 0x09, 0x36, 0x18, 0xa2, 0xcf, 0xe9, 0x2c, 0x33, 0x1e, 0xb2, 0xff, 0xd1, - 0x63, 0x19, 0x9b, 0x7e, 0x72, 0xcc, 0x30, 0x0c, 0xb9, 0x7e, 0x8b, 0xce, 0x13, 0x11, 0xb1, 0xf4, - 0x8e, 0xbc, 0x5a, 0x0a, 0x0b, 0x81, 0xd3, 0xac, 0x3b, 0x9e, 0xe3, 0x37, 0x48, 0x34, 0xcf, 0xd1, - 0xcd, 0xab, 0xae, 0x59, 0x03, 0x96, 0x84, 0xba, 0x2e, 0x5f, 0xa9, 0xf4, 0x73, 0xf9, 0xca, 0xb9, - 0x0f, 0xc0, 0xa9, 0xae, 0x8f, 0x79, 0xa0, 0x94, 0xb2, 0xc3, 0x67, 0xa3, 0xd9, 0xff, 0x74, 0x50, - 0x2b, 0xad, 0x6b, 0x41, 0x93, 0x5f, 0x01, 0x12, 0xe9, 0x2f, 0x2a, 0x6c, 0xdc, 0x02, 0xa7, 0x88, - 0x71, 0x5d, 0xb6, 0x6a, 0xc4, 0x26, 0x4b, 0x3a, 0x47, 0x43, 0x27, 0x22, 0xfe, 0x71, 0xcf, 0xd1, - 0x65, 0xc5, 0x04, 0x1b, 0x0c, 0xd1, 0x46, 0x2a, 0xa7, 0xe4, 0xd2, 0xd1, 0x73, 0x4a, 0x58, 0x95, - 0xa9, 0xbc, 0xaa, 0xfd, 0x5f, 0xb6, 0x60, 0xcc, 0x4f, 0xcd, 0xdc, 0x62, 0xc2, 0x48, 0xf3, 0x57, - 0x05, 0xbf, 0x81, 0x2a, 0xdd, 0x86, 0x33, 0xfc, 0xf3, 0x54, 0x5a, 0xe5, 0x80, 0x2a, 0x4d, 0xdf, - 0x25, 0x34, 0xd8, 0xeb, 0x2e, 0x21, 0xe4, 0xab, 0xcb, 0xd4, 0x86, 0x0a, 0xbf, 0x4c, 0x0d, 0x72, - 0x2e, 0x52, 0xbb, 0x09, 0xb5, 0x46, 0x44, 0x9c, 0xe4, 0x90, 0xf7, 0x6a, 0xb1, 0x03, 0xfa, 0x19, - 0x49, 0x00, 0x6b, 0x5a, 0xf6, 0xff, 0x1e, 0x80, 0x93, 0x72, 0x44, 0x64, 0x08, 0x3a, 0xd5, 0x8f, - 0x9c, 0xaf, 0x36, 0x6e, 0x95, 0x7e, 0xbc, 0x2c, 0x01, 0x58, 0xe3, 0x50, 0x7b, 0xac, 0x13, 0x93, - 0xa5, 0x90, 0xf8, 0x0b, 0xee, 0x5a, 0x2c, 0xce, 0x39, 0xd5, 0x42, 0xb9, 0xae, 0x41, 0xd8, 0xc4, - 0xa3, 0xc6, 0x38, 0xb7, 0x8b, 0xe3, 0x6c, 0xfa, 0x8a, 0xb0, 0xb7, 0xb1, 0x84, 0xa3, 0x5f, 0xc8, - 0xad, 0x30, 0x5b, 0x4c, 0xe2, 0x56, 0x57, 0xe4, 0xfd, 0x01, 0xaf, 0x62, 0xfc, 0x1b, 0x16, 0x9c, - 0xe5, 0xad, 0x72, 0x24, 0xaf, 0x87, 0x4d, 0x27, 0x21, 0x71, 0x31, 0x15, 0xdf, 0x73, 0xfa, 0xa7, - 0x9d, 0xbc, 0x79, 0x6c, 0x71, 0x7e, 0x6f, 0xd0, 0x1b, 0x16, 0x9c, 0xd8, 0x4c, 0xd5, 0xfc, 0x90, - 0xaa, 0xe3, 0xa8, 0xe9, 0xf8, 0x29, 0xa2, 0x7a, 0xa9, 0xa5, 0xdb, 0x63, 0x9c, 0xe5, 0x6e, 0xff, - 0x99, 0x05, 0xa6, 0x18, 0xbd, 0xf7, 0xa5, 0x42, 0x0e, 0x6e, 0x0a, 0x4a, 0xeb, 0xb2, 0xd2, 0xd3, - 0xba, 0x7c, 0x0c, 0xca, 0x1d, 0xb7, 0x29, 0xf6, 0x17, 0xfa, 0xf4, 0x75, 0x7e, 0x16, 0xd3, 0x76, - 0xfb, 0x1f, 0x55, 0xb4, 0xdf, 0x42, 0xe4, 0x45, 0xfd, 0x40, 0xbc, 0xf6, 0xba, 0x2a, 0x36, 0xc6, - 0xdf, 0xfc, 0x5a, 0x57, 0xb1, 0xb1, 0x1f, 0x3f, 0x78, 0xda, 0x1b, 0x1f, 0xa0, 0x5e, 0xb5, 0xc6, - 0x86, 0xf6, 0xc9, 0x79, 0xbb, 0x05, 0x55, 0xba, 0x05, 0x63, 0x0e, 0xc8, 0x6a, 0xaa, 0x53, 0xd5, - 0xcb, 0xa2, 0xfd, 0xee, 0xee, 0xc4, 0x7b, 0x0f, 0xde, 0x2d, 0xf9, 0x34, 0x56, 0xf4, 0x51, 0x0c, - 0x35, 0xfa, 0x9b, 0xa5, 0xe7, 0x89, 0xcd, 0xdd, 0x75, 0x25, 0x33, 0x25, 0xa0, 0x90, 0xdc, 0x3f, - 0xcd, 0x07, 0xf9, 0x50, 0x63, 0xb7, 0xd6, 0x32, 0xa6, 0x7c, 0x0f, 0xb8, 0xac, 0x92, 0xe4, 0x24, - 0xe0, 0xee, 0xee, 0xc4, 0x8b, 0x07, 0x67, 0xaa, 0x1e, 0xc7, 0x9a, 0x85, 0xfd, 0x95, 0x01, 0x3d, - 0x77, 0x45, 0x8d, 0xb9, 0x1f, 0x88, 0xb9, 0xfb, 0x42, 0x66, 0xee, 0x9e, 0xef, 0x9a, 0xbb, 0x63, - 0xfa, 0x76, 0xd5, 0xd4, 0x6c, 0xbc, 0xd7, 0x86, 0xc0, 0xfe, 0xfe, 0x06, 0x66, 0x01, 0xbd, 0xd6, - 0x71, 0x23, 0x12, 0x2f, 0x47, 0x1d, 0xdf, 0xf5, 0x5b, 0x6c, 0x3a, 0x56, 0x4d, 0x0b, 0x28, 0x05, - 0xc6, 0x59, 0x7c, 0xba, 0xa9, 0xa7, 0xdf, 0xfc, 0xa6, 0xb3, 0xc5, 0x67, 0x95, 0x51, 0x76, 0x6b, - 0x45, 0xb4, 0x63, 0x85, 0x61, 0x7f, 0x8b, 0x9d, 0x65, 0x1b, 0x79, 0xc1, 0x74, 0x4e, 0x78, 0xec, - 0x9a, 0x60, 0x5e, 0xb3, 0x4b, 0xcd, 0x09, 0x7e, 0x37, 0x30, 0x87, 0xa1, 0xdb, 0x30, 0xb4, 0xc6, - 0xef, 0xc9, 0x2b, 0xa6, 0x8e, 0xb9, 0xb8, 0x74, 0x8f, 0xdd, 0x86, 0x22, 0x6f, 0xe0, 0xbb, 0xab, - 0x7f, 0x62, 0xc9, 0xcd, 0xfe, 0xfd, 0x0a, 0x9c, 0xc8, 0x5c, 0x24, 0x9b, 0xaa, 0x96, 0x5a, 0xda, - 0xb7, 0x5a, 0xea, 0x47, 0x00, 0x9a, 0x24, 0xf4, 0x82, 0x1d, 0x66, 0x8e, 0x0d, 0x1c, 0xd8, 0x1c, - 0x53, 0x16, 0xfc, 0xac, 0xa2, 0x82, 0x0d, 0x8a, 0xa2, 0x50, 0x19, 0x2f, 0xbe, 0x9a, 0x29, 0x54, - 0x66, 0xdc, 0x76, 0x30, 0x78, 0x6f, 0x6f, 0x3b, 0x70, 0xe1, 0x04, 0xef, 0xa2, 0xca, 0xbe, 0x3d, - 0x44, 0x92, 0x2d, 0xcb, 0x5f, 0x98, 0x4d, 0x93, 0xc1, 0x59, 0xba, 0xf7, 0xf3, 0x9e, 0x68, 0xf4, - 0x2e, 0xa8, 0xc9, 0xef, 0x1c, 0x8f, 0xd7, 0x74, 0x05, 0x03, 0x39, 0x0d, 0xd8, 0xfd, 0xcd, 0xe2, - 0x67, 0x57, 0x21, 0x01, 0xb8, 0x5f, 0x85, 0x04, 0xec, 0x2f, 0x95, 0xa8, 0x1d, 0xcf, 0xfb, 0xa5, - 0x6a, 0xe2, 0x3c, 0x09, 0x83, 0x4e, 0x27, 0xd9, 0x08, 0xba, 0x6e, 0xfd, 0x9b, 0x66, 0xad, 0x58, - 0x40, 0xd1, 0x02, 0x0c, 0x34, 0x75, 0x9d, 0x93, 0x83, 0x7c, 0x4f, 0xed, 0x12, 0x75, 0x12, 0x82, - 0x19, 0x15, 0xf4, 0x28, 0x0c, 0x24, 0x4e, 0x4b, 0xa6, 0x5c, 0xb1, 0x34, 0xdb, 0x55, 0xa7, 0x15, - 0x63, 0xd6, 0x6a, 0xaa, 0xef, 0x81, 0x7d, 0xd4, 0xf7, 0x8b, 0x30, 0x1a, 0xbb, 0x2d, 0xdf, 0x49, - 0x3a, 0x11, 0x31, 0x8e, 0xf9, 0x74, 0xe4, 0x86, 0x09, 0xc4, 0x69, 0x5c, 0xfb, 0x37, 0x47, 0xe0, - 0xcc, 0xca, 0xcc, 0xa2, 0xac, 0xde, 0x7d, 0x6c, 0x59, 0x53, 0x79, 0x3c, 0xee, 0x5d, 0xd6, 0x54, - 0x0f, 0xee, 0x9e, 0x91, 0x35, 0xe5, 0x19, 0x59, 0x53, 0xe9, 0x14, 0x96, 0x72, 0x11, 0x29, 0x2c, - 0x79, 0x3d, 0xe8, 0x27, 0x85, 0xe5, 0xd8, 0xd2, 0xa8, 0xf6, 0xec, 0xd0, 0x81, 0xd2, 0xa8, 0x54, - 0x8e, 0x59, 0x21, 0xc9, 0x05, 0x3d, 0x3e, 0x55, 0x6e, 0x8e, 0x99, 0xca, 0xef, 0xe1, 0x89, 0x33, - 0x42, 0xd4, 0xbf, 0x52, 0x7c, 0x07, 0xfa, 0xc8, 0xef, 0x11, 0xb9, 0x3b, 0x66, 0x4e, 0xd9, 0x50, - 0x11, 0x39, 0x65, 0x79, 0xdd, 0xd9, 0x37, 0xa7, 0xec, 0x45, 0x18, 0x6d, 0x78, 0x81, 0x4f, 0x96, - 0xa3, 0x20, 0x09, 0x1a, 0x81, 0x27, 0xcc, 0x7a, 0x25, 0x12, 0x66, 0x4c, 0x20, 0x4e, 0xe3, 0xf6, - 0x4a, 0x48, 0xab, 0x1d, 0x35, 0x21, 0x0d, 0xee, 0x53, 0x42, 0xda, 0xcf, 0xea, 0xd4, 0xe9, 0x61, - 0xf6, 0x45, 0x3e, 0x52, 0xfc, 0x17, 0xe9, 0x27, 0x7f, 0x1a, 0xbd, 0xc9, 0xaf, 0xdd, 0xa3, 0x86, - 0xf1, 0x4c, 0xd0, 0xa6, 0x86, 0xdf, 0x08, 0x1b, 0x92, 0x57, 0x8f, 0x61, 0xc2, 0xde, 0x5c, 0xd1, - 0x6c, 0xd4, 0x55, 0x7c, 0xba, 0x09, 0xa7, 0x3b, 0x72, 0x94, 0xd4, 0xee, 0xaf, 0x95, 0xe0, 0x87, - 0xf6, 0xed, 0x02, 0xba, 0x0d, 0x90, 0x38, 0x2d, 0x31, 0x51, 0xc5, 0x81, 0xc9, 0x11, 0xc3, 0x2b, - 0x57, 0x25, 0x3d, 0x5e, 0x93, 0x44, 0xfd, 0x65, 0x47, 0x11, 0xf2, 0x37, 0x8b, 0xaa, 0x0c, 0xbc, - 0xae, 0xd2, 0x8d, 0x38, 0xf0, 0x08, 0x66, 0x10, 0xaa, 0xfe, 0x23, 0xd2, 0xd2, 0xf7, 0x44, 0xab, - 0xcf, 0x87, 0x59, 0x2b, 0x16, 0x50, 0xf4, 0x3c, 0x0c, 0x3b, 0x9e, 0xc7, 0xf3, 0x63, 0x48, 0x2c, - 0xee, 0xdd, 0xd1, 0x35, 0xe4, 0x34, 0x08, 0x9b, 0x78, 0xf6, 0x9f, 0x96, 0x60, 0x62, 0x1f, 0x99, - 0xd2, 0x95, 0xf1, 0x57, 0xe9, 0x3b, 0xe3, 0x4f, 0xe4, 0x28, 0x0c, 0xf6, 0xc8, 0x51, 0x78, 0x1e, - 0x86, 0x13, 0xe2, 0xb4, 0x45, 0x40, 0x96, 0xf0, 0x04, 0xe8, 0x13, 0x60, 0x0d, 0xc2, 0x26, 0x1e, - 0x95, 0x62, 0x63, 0x4e, 0xa3, 0x41, 0xe2, 0x58, 0x26, 0x21, 0x08, 0x6f, 0x6a, 0x61, 0x19, 0x0e, - 0xcc, 0x49, 0x3d, 0x9d, 0x62, 0x81, 0x33, 0x2c, 0xb3, 0x03, 0x5e, 0xeb, 0x73, 0xc0, 0xbf, 0x59, - 0x82, 0xc7, 0xf6, 0xd4, 0x6e, 0x7d, 0xe7, 0x87, 0x74, 0x62, 0x12, 0x65, 0x27, 0xce, 0xf5, 0x98, - 0x44, 0x98, 0x41, 0xf8, 0x28, 0x85, 0xa1, 0x71, 0x0f, 0x77, 0xd1, 0xc9, 0x4b, 0x7c, 0x94, 0x52, - 0x2c, 0x70, 0x86, 0xe5, 0x61, 0xa7, 0xe5, 0xdf, 0x29, 0xc1, 0x13, 0x7d, 0xd8, 0x00, 0x05, 0x26, - 0x79, 0xa5, 0x53, 0xed, 0xca, 0xf7, 0x29, 0x23, 0xf2, 0x90, 0xc3, 0xf5, 0xad, 0x12, 0x9c, 0xeb, - 0xad, 0x8a, 0xd1, 0xfb, 0xe0, 0x44, 0xa4, 0xa2, 0xb0, 0xcc, 0x2c, 0xbd, 0xd3, 0xdc, 0x93, 0x90, - 0x02, 0xe1, 0x2c, 0x2e, 0x9a, 0x04, 0x08, 0x9d, 0x64, 0x23, 0xbe, 0xb8, 0xed, 0xc6, 0x89, 0xa8, - 0x42, 0x33, 0xc6, 0xcf, 0xae, 0x64, 0x2b, 0x36, 0x30, 0x28, 0x3b, 0xf6, 0x6f, 0x36, 0xb8, 0x16, - 0x24, 0xfc, 0x21, 0xbe, 0x8d, 0x38, 0x2d, 0xef, 0xec, 0x30, 0x40, 0x38, 0x8b, 0x4b, 0xd9, 0xb1, - 0xd3, 0x51, 0xde, 0x51, 0xbe, 0xbf, 0x60, 0xec, 0x16, 0x54, 0x2b, 0x36, 0x30, 0xb2, 0xf9, 0x87, - 0x95, 0xfd, 0xf3, 0x0f, 0xed, 0x7f, 0x58, 0x82, 0x47, 0x7a, 0x9a, 0x72, 0xfd, 0x2d, 0xc0, 0x07, - 0x2f, 0x67, 0xf0, 0x70, 0x73, 0xe7, 0x80, 0xb9, 0x6d, 0x7f, 0xdc, 0x63, 0xa6, 0x89, 0xdc, 0xb6, - 0xc3, 0x27, 0x87, 0x3f, 0x78, 0xe3, 0xd9, 0x95, 0xce, 0x36, 0x70, 0x80, 0x74, 0xb6, 0xcc, 0xc7, - 0xa8, 0xf4, 0xb9, 0x90, 0xff, 0xbc, 0xdc, 0x73, 0x78, 0xe9, 0xd6, 0xaf, 0x2f, 0x3f, 0xed, 0x2c, - 0x9c, 0x74, 0x7d, 0x76, 0x7f, 0xd3, 0x4a, 0x67, 0x4d, 0x14, 0x26, 0x29, 0xa5, 0x6f, 0x59, 0x9f, - 0xcf, 0xc0, 0x71, 0xd7, 0x13, 0x0f, 0x60, 0x7a, 0xe1, 0xe1, 0x86, 0xf4, 0x60, 0x09, 0xae, 0x68, - 0x09, 0xce, 0xca, 0xa1, 0xd8, 0x70, 0x22, 0xd2, 0x14, 0x6a, 0x24, 0x16, 0x09, 0x15, 0x8f, 0xf0, - 0xa4, 0x8c, 0x1c, 0x04, 0x9c, 0xff, 0x1c, 0xbb, 0x32, 0x27, 0x08, 0xdd, 0x86, 0xd8, 0xe4, 0xe8, - 0x2b, 0x73, 0x68, 0x23, 0xe6, 0x30, 0xfb, 0x23, 0x50, 0x53, 0xef, 0xcf, 0xc3, 0xba, 0xd5, 0xa4, - 0xeb, 0x0a, 0xeb, 0x56, 0x33, 0xce, 0xc0, 0xa2, 0x5f, 0x8b, 0x9a, 0xc4, 0x99, 0xd5, 0x73, 0x95, - 0xec, 0x30, 0xfb, 0xd8, 0x7e, 0x37, 0x8c, 0x28, 0x3f, 0x4b, 0xbf, 0x17, 0x09, 0xd9, 0x5f, 0x19, - 0x84, 0xd1, 0x54, 0x71, 0xc0, 0x94, 0x83, 0xd5, 0xda, 0xd7, 0xc1, 0xca, 0xc2, 0xf4, 0x3b, 0xbe, - 0xbc, 0x65, 0xcc, 0x08, 0xd3, 0xef, 0xf8, 0x04, 0x73, 0x18, 0x35, 0x6f, 0x9b, 0xd1, 0x0e, 0xee, - 0xf8, 0x22, 0x9c, 0x56, 0x99, 0xb7, 0xb3, 0xac, 0x15, 0x0b, 0x28, 0xfa, 0xa4, 0x05, 0x23, 0x31, - 0xf3, 0xde, 0x73, 0xf7, 0xb4, 0x98, 0x74, 0x57, 0x8e, 0x5e, 0xfb, 0x50, 0x15, 0xc2, 0x64, 0x11, - 0x32, 0x66, 0x0b, 0x4e, 0x71, 0x44, 0x9f, 0xb1, 0xa0, 0xa6, 0x2e, 0x43, 0x11, 0x57, 0x06, 0xae, - 0x14, 0x5b, 0x7b, 0x91, 0xfb, 0x35, 0xd5, 0x41, 0x88, 0x2a, 0x82, 0x87, 0x35, 0x63, 0x14, 0x2b, - 0xdf, 0xf1, 0xd0, 0xf1, 0xf8, 0x8e, 0x21, 0xc7, 0x6f, 0xfc, 0x2e, 0xa8, 0xb5, 0x1d, 0xdf, 0x5d, - 0x27, 0x71, 0xc2, 0xdd, 0xb9, 0xb2, 0x24, 0xac, 0x6c, 0xc4, 0x1a, 0x4e, 0x15, 0x72, 0xcc, 0x5e, - 0x2c, 0x31, 0xfc, 0xaf, 0x4c, 0x21, 0xaf, 0xe8, 0x66, 0x6c, 0xe2, 0x98, 0xce, 0x62, 0xb8, 0xaf, - 0xce, 0xe2, 0xe1, 0xbd, 0x9d, 0xc5, 0xf6, 0xdf, 0xb3, 0xe0, 0x6c, 0xee, 0x57, 0x7b, 0x70, 0x03, - 0x1f, 0xed, 0xaf, 0x56, 0xe0, 0x74, 0x4e, 0x95, 0x4f, 0xb4, 0x63, 0xce, 0x67, 0xab, 0x88, 0x18, - 0x82, 0xf4, 0x91, 0xb8, 0x1c, 0xc6, 0x9c, 0x49, 0x7c, 0xb0, 0xa3, 0x1a, 0x7d, 0x5c, 0x52, 0xbe, - 0xb7, 0xc7, 0x25, 0xc6, 0xb4, 0x1c, 0xb8, 0xaf, 0xd3, 0xb2, 0xb2, 0xcf, 0x19, 0xc6, 0xaf, 0x59, - 0x30, 0xde, 0xee, 0x51, 0x5a, 0x5e, 0x38, 0x1e, 0x6f, 0x1c, 0x4f, 0xe1, 0xfa, 0xfa, 0xa3, 0x77, - 0x76, 0x27, 0x7a, 0x56, 0xf4, 0xc7, 0x3d, 0x7b, 0x65, 0x7f, 0xb7, 0x0c, 0xac, 0xc4, 0x2c, 0xab, - 0xe4, 0xb6, 0x83, 0x3e, 0x61, 0x16, 0x0b, 0xb6, 0x8a, 0x2a, 0x6c, 0xcb, 0x89, 0xab, 0x62, 0xc3, - 0x7c, 0x04, 0xf3, 0x6a, 0x0f, 0x67, 0x85, 0x56, 0xa9, 0x0f, 0xa1, 0xe5, 0xc9, 0xaa, 0xcc, 0xe5, - 0xe2, 0xab, 0x32, 0xd7, 0xb2, 0x15, 0x99, 0xf7, 0xfe, 0xc4, 0x03, 0x0f, 0xe4, 0x27, 0xfe, 0x45, - 0x8b, 0x0b, 0x9e, 0xcc, 0x57, 0xd0, 0x96, 0x81, 0xb5, 0x87, 0x65, 0xf0, 0x34, 0x54, 0x63, 0xe2, - 0xad, 0x5f, 0x26, 0x8e, 0x27, 0x2c, 0x08, 0x7d, 0x7e, 0x2d, 0xda, 0xb1, 0xc2, 0x60, 0xd7, 0xb6, - 0x7a, 0x5e, 0x70, 0xfb, 0x62, 0x3b, 0x4c, 0x76, 0x84, 0x2d, 0xa1, 0xaf, 0x6d, 0x55, 0x10, 0x6c, - 0x60, 0xd9, 0x7f, 0xbd, 0xc4, 0x67, 0xa0, 0x08, 0x82, 0x78, 0x21, 0x73, 0xd1, 0x5e, 0xff, 0xf1, - 0x03, 0x1f, 0x03, 0x68, 0xa8, 0xab, 0xec, 0xc5, 0x99, 0xd0, 0xe5, 0x23, 0xdf, 0xb3, 0x2d, 0xe8, - 0xe9, 0xd7, 0xd0, 0x6d, 0xd8, 0xe0, 0x97, 0x92, 0xa5, 0xe5, 0x7d, 0x65, 0x69, 0x4a, 0xac, 0x0c, - 0xec, 0xa3, 0xed, 0xfe, 0xd4, 0x82, 0x94, 0x45, 0x84, 0x42, 0xa8, 0xd0, 0xee, 0xee, 0x14, 0x73, - 0x4b, 0xbf, 0x49, 0x9a, 0x8a, 0x46, 0x31, 0xed, 0xd9, 0x4f, 0xcc, 0x19, 0x21, 0x4f, 0xc4, 0x4a, - 0xf0, 0x51, 0xbd, 0x56, 0x1c, 0xc3, 0xcb, 0x41, 0xb0, 0xc9, 0x0f, 0x36, 0x75, 0xdc, 0x85, 0xfd, - 0x02, 0x9c, 0xea, 0xea, 0x14, 0xbb, 0x53, 0x2b, 0xa0, 0xda, 0x27, 0x33, 0x5d, 0x59, 0x02, 0x27, - 0xe6, 0x30, 0xfb, 0x5b, 0x16, 0x9c, 0xcc, 0x92, 0x47, 0x6f, 0x5a, 0x70, 0x2a, 0xce, 0xd2, 0x3b, - 0xae, 0xb1, 0x53, 0xf1, 0x8e, 0x5d, 0x20, 0xdc, 0xdd, 0x09, 0xfb, 0xff, 0x88, 0xc9, 0x7f, 0xd3, - 0xf5, 0x9b, 0xc1, 0x6d, 0x65, 0x98, 0x58, 0x3d, 0x0d, 0x13, 0xba, 0x1e, 0x1b, 0x1b, 0xa4, 0xd9, - 0xf1, 0xba, 0x32, 0x47, 0x57, 0x44, 0x3b, 0x56, 0x18, 0x2c, 0x51, 0xae, 0x23, 0xca, 0xb6, 0x67, - 0x26, 0xe5, 0xac, 0x68, 0xc7, 0x0a, 0x03, 0x3d, 0x07, 0x23, 0xc6, 0x4b, 0xca, 0x79, 0xc9, 0x0c, - 0x72, 0x43, 0x65, 0xc6, 0x38, 0x85, 0x85, 0x26, 0x01, 0x94, 0x91, 0x23, 0x55, 0x24, 0x73, 0x14, - 0x29, 0x49, 0x14, 0x63, 0x03, 0x83, 0xa5, 0xa5, 0x7a, 0x9d, 0x98, 0xf9, 0xf8, 0x07, 0x75, 0x29, - 0xd1, 0x19, 0xd1, 0x86, 0x15, 0x94, 0x4a, 0x93, 0xb6, 0xe3, 0x77, 0x1c, 0x8f, 0x8e, 0x90, 0xd8, - 0xfa, 0xa9, 0x65, 0xb8, 0xa8, 0x20, 0xd8, 0xc0, 0xa2, 0x6f, 0x9c, 0xb8, 0x6d, 0xf2, 0x72, 0xe0, - 0xcb, 0x38, 0x35, 0x7d, 0xec, 0x23, 0xda, 0xb1, 0xc2, 0xb0, 0xff, 0x8b, 0x05, 0x27, 0x74, 0x92, - 0x3b, 0xbf, 0x3d, 0xdb, 0xdc, 0xa9, 0x5a, 0xfb, 0xee, 0x54, 0xd3, 0xd9, 0xbf, 0xa5, 0xbe, 0xb2, - 0x7f, 0xcd, 0xc4, 0xdc, 0xf2, 0x9e, 0x89, 0xb9, 0x3f, 0xa2, 0x6f, 0x66, 0xe5, 0x19, 0xbc, 0xc3, - 0x79, 0xb7, 0xb2, 0x22, 0x1b, 0x06, 0x1b, 0x8e, 0xaa, 0xf0, 0x32, 0xc2, 0xf7, 0x0e, 0x33, 0xd3, - 0x0c, 0x49, 0x40, 0xec, 0x25, 0xa8, 0xa9, 0xd3, 0x0f, 0xb9, 0x51, 0xb5, 0xf2, 0x37, 0xaa, 0x7d, - 0x25, 0x08, 0xd6, 0xd7, 0xbe, 0xfd, 0xbd, 0xc7, 0xdf, 0xf6, 0x7b, 0xdf, 0x7b, 0xfc, 0x6d, 0x7f, - 0xf4, 0xbd, 0xc7, 0xdf, 0xf6, 0xc9, 0x3b, 0x8f, 0x5b, 0xdf, 0xbe, 0xf3, 0xb8, 0xf5, 0x7b, 0x77, - 0x1e, 0xb7, 0xfe, 0xe8, 0xce, 0xe3, 0xd6, 0x77, 0xef, 0x3c, 0x6e, 0x7d, 0xf9, 0x3f, 0x3e, 0xfe, - 0xb6, 0x97, 0x73, 0x03, 0x15, 0xe9, 0x8f, 0x67, 0x1a, 0xcd, 0xa9, 0xad, 0x0b, 0x2c, 0x56, 0x8e, - 0x2e, 0xaf, 0x29, 0x63, 0x4e, 0x4d, 0xc9, 0xe5, 0xf5, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x9f, - 0x9a, 0x22, 0xa4, 0x1b, 0xe3, 0x00, 0x00, + // 11161 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x6d, 0x70, 0x24, 0xc7, + 0x75, 0x98, 0x66, 0x3f, 0x80, 0xdd, 0x87, 0xaf, 0x43, 0xdf, 0x1d, 0x89, 0x3b, 0x91, 0xc4, 0x79, + 0x68, 0x53, 0x74, 0x44, 0x02, 0xe6, 0x89, 0x94, 0x19, 0xd1, 0x92, 0x8c, 0x8f, 0x3b, 0x1c, 0xee, + 0x80, 0x03, 0xd8, 0xc0, 0xdd, 0x49, 0x94, 0x29, 0x6a, 0xb0, 0xdb, 0x58, 0xcc, 0x61, 0x76, 0x66, + 0x39, 0x33, 0x8b, 0x03, 0x68, 0x49, 0x96, 0xac, 0x0f, 0xcb, 0xd1, 0x07, 0x15, 0x2a, 0xa9, 0xd0, + 0x89, 0xa5, 0xc8, 0x96, 0x93, 0x8a, 0x2b, 0xc5, 0x8a, 0x93, 0xfc, 0x88, 0x13, 0x27, 0xe5, 0x8a, + 0x9d, 0x4a, 0x29, 0x71, 0x52, 0x76, 0xb9, 0x5c, 0x96, 0xe3, 0xd8, 0x88, 0x74, 0xa9, 0x54, 0x52, + 0xa9, 0x8a, 0x53, 0xf9, 0xf8, 0x91, 0x5c, 0xf2, 0x23, 0xd5, 0xdf, 0x3d, 0xb3, 0xb3, 0xc0, 0x02, + 0x18, 0xe0, 0x4e, 0x0a, 0xff, 0xed, 0xf6, 0x7b, 0xf3, 0x5e, 0x4f, 0x4f, 0xf7, 0x7b, 0xaf, 0x5f, + 0xbf, 0xf7, 0x1a, 0x16, 0x1a, 0x6e, 0xbc, 0xd1, 0x5e, 0x9b, 0xa8, 0x05, 0xcd, 0x49, 0x27, 0x6c, + 0x04, 0xad, 0x30, 0xb8, 0xcd, 0x7e, 0x3c, 0x5d, 0xab, 0x4f, 0x6e, 0x5d, 0x9c, 0x6c, 0x6d, 0x36, + 0x26, 0x9d, 0x96, 0x1b, 0x4d, 0x3a, 0xad, 0x96, 0xe7, 0xd6, 0x9c, 0xd8, 0x0d, 0xfc, 0xc9, 0xad, + 0x67, 0x1c, 0xaf, 0xb5, 0xe1, 0x3c, 0x33, 0xd9, 0x20, 0x3e, 0x09, 0x9d, 0x98, 0xd4, 0x27, 0x5a, + 0x61, 0x10, 0x07, 0xe8, 0x27, 0x34, 0xb5, 0x09, 0x49, 0x8d, 0xfd, 0x78, 0xa5, 0x56, 0x9f, 0xd8, + 0xba, 0x38, 0xd1, 0xda, 0x6c, 0x4c, 0x50, 0x6a, 0x13, 0x06, 0xb5, 0x09, 0x49, 0xed, 0xfc, 0xd3, + 0x46, 0x5f, 0x1a, 0x41, 0x23, 0x98, 0x64, 0x44, 0xd7, 0xda, 0xeb, 0xec, 0x1f, 0xfb, 0xc3, 0x7e, + 0x71, 0x66, 0xe7, 0xed, 0xcd, 0xe7, 0xa3, 0x09, 0x37, 0xa0, 0xdd, 0x9b, 0xac, 0x05, 0x21, 0x99, + 0xdc, 0xea, 0xe8, 0xd0, 0xf9, 0x2b, 0x1a, 0x87, 0x6c, 0xc7, 0xc4, 0x8f, 0xdc, 0xc0, 0x8f, 0x9e, + 0xa6, 0x5d, 0x20, 0xe1, 0x16, 0x09, 0xcd, 0xd7, 0x33, 0x10, 0xb2, 0x28, 0x3d, 0xab, 0x29, 0x35, + 0x9d, 0xda, 0x86, 0xeb, 0x93, 0x70, 0x47, 0x3f, 0xde, 0x24, 0xb1, 0x93, 0xf5, 0xd4, 0x64, 0xb7, + 0xa7, 0xc2, 0xb6, 0x1f, 0xbb, 0x4d, 0xd2, 0xf1, 0xc0, 0x7b, 0xf7, 0x7b, 0x20, 0xaa, 0x6d, 0x90, + 0xa6, 0xd3, 0xf1, 0xdc, 0x7b, 0xba, 0x3d, 0xd7, 0x8e, 0x5d, 0x6f, 0xd2, 0xf5, 0xe3, 0x28, 0x0e, + 0xd3, 0x0f, 0xd9, 0xbf, 0x68, 0xc1, 0xd0, 0xd4, 0xad, 0x95, 0xa9, 0x76, 0xbc, 0x31, 0x13, 0xf8, + 0xeb, 0x6e, 0x03, 0x3d, 0x07, 0x03, 0x35, 0xaf, 0x1d, 0xc5, 0x24, 0xbc, 0xee, 0x34, 0xc9, 0x98, + 0x75, 0xc1, 0x7a, 0xb2, 0x3a, 0x7d, 0xfa, 0xdb, 0xbb, 0xe3, 0xef, 0xb8, 0xbb, 0x3b, 0x3e, 0x30, + 0xa3, 0x41, 0xd8, 0xc4, 0x43, 0x3f, 0x0a, 0xfd, 0x61, 0xe0, 0x91, 0x29, 0x7c, 0x7d, 0xac, 0xc0, + 0x1e, 0x19, 0x11, 0x8f, 0xf4, 0x63, 0xde, 0x8c, 0x25, 0x9c, 0xa2, 0xb6, 0xc2, 0x60, 0xdd, 0xf5, + 0xc8, 0x58, 0x31, 0x89, 0xba, 0xcc, 0x9b, 0xb1, 0x84, 0xdb, 0x7f, 0x58, 0x00, 0x98, 0x6a, 0xb5, + 0x96, 0xc3, 0xe0, 0x36, 0xa9, 0xc5, 0xe8, 0x63, 0x50, 0xa1, 0xc3, 0x5c, 0x77, 0x62, 0x87, 0x75, + 0x6c, 0xe0, 0xe2, 0x8f, 0x4d, 0xf0, 0xb7, 0x9e, 0x30, 0xdf, 0x5a, 0x4f, 0x32, 0x8a, 0x3d, 0xb1, + 0xf5, 0xcc, 0xc4, 0xd2, 0x1a, 0x7d, 0x7e, 0x91, 0xc4, 0xce, 0x34, 0x12, 0xcc, 0x40, 0xb7, 0x61, + 0x45, 0x15, 0xf9, 0x50, 0x8a, 0x5a, 0xa4, 0xc6, 0xde, 0x61, 0xe0, 0xe2, 0xc2, 0xc4, 0x51, 0x66, + 0xf3, 0x84, 0xee, 0xf9, 0x4a, 0x8b, 0xd4, 0xa6, 0x07, 0x05, 0xe7, 0x12, 0xfd, 0x87, 0x19, 0x1f, + 0xb4, 0x05, 0x7d, 0x51, 0xec, 0xc4, 0xed, 0x88, 0x0d, 0xc5, 0xc0, 0xc5, 0xeb, 0xb9, 0x71, 0x64, + 0x54, 0xa7, 0x87, 0x05, 0xcf, 0x3e, 0xfe, 0x1f, 0x0b, 0x6e, 0xf6, 0x9f, 0x5a, 0x30, 0xac, 0x91, + 0x17, 0xdc, 0x28, 0x46, 0x3f, 0xd5, 0x31, 0xb8, 0x13, 0xbd, 0x0d, 0x2e, 0x7d, 0x9a, 0x0d, 0xed, + 0x29, 0xc1, 0xac, 0x22, 0x5b, 0x8c, 0x81, 0x6d, 0x42, 0xd9, 0x8d, 0x49, 0x33, 0x1a, 0x2b, 0x5c, + 0x28, 0x3e, 0x39, 0x70, 0xf1, 0x4a, 0x5e, 0xef, 0x39, 0x3d, 0x24, 0x98, 0x96, 0xe7, 0x29, 0x79, + 0xcc, 0xb9, 0xd8, 0xbf, 0x3a, 0x68, 0xbe, 0x1f, 0x1d, 0x70, 0xf4, 0x0c, 0x0c, 0x44, 0x41, 0x3b, + 0xac, 0x11, 0x4c, 0x5a, 0x41, 0x34, 0x66, 0x5d, 0x28, 0xd2, 0xa9, 0x47, 0x27, 0xf5, 0x8a, 0x6e, + 0xc6, 0x26, 0x0e, 0xfa, 0x8a, 0x05, 0x83, 0x75, 0x12, 0xc5, 0xae, 0xcf, 0xf8, 0xcb, 0xce, 0xaf, + 0x1e, 0xb9, 0xf3, 0xb2, 0x71, 0x56, 0x13, 0x9f, 0x3e, 0x23, 0x5e, 0x64, 0xd0, 0x68, 0x8c, 0x70, + 0x82, 0x3f, 0x5d, 0x9c, 0x75, 0x12, 0xd5, 0x42, 0xb7, 0x45, 0xff, 0x8b, 0xe5, 0xa3, 0x16, 0xe7, + 0xac, 0x06, 0x61, 0x13, 0x0f, 0xf9, 0x50, 0xa6, 0x8b, 0x2f, 0x1a, 0x2b, 0xb1, 0xfe, 0xcf, 0x1f, + 0xad, 0xff, 0x62, 0x50, 0xe9, 0xba, 0xd6, 0xa3, 0x4f, 0xff, 0x45, 0x98, 0xb3, 0x41, 0x5f, 0xb6, + 0x60, 0x4c, 0x08, 0x07, 0x4c, 0xf8, 0x80, 0xde, 0xda, 0x70, 0x63, 0xe2, 0xb9, 0x51, 0x3c, 0x56, + 0x66, 0x7d, 0x98, 0xec, 0x6d, 0x6e, 0xcd, 0x85, 0x41, 0xbb, 0x75, 0xcd, 0xf5, 0xeb, 0xd3, 0x17, + 0x04, 0xa7, 0xb1, 0x99, 0x2e, 0x84, 0x71, 0x57, 0x96, 0xe8, 0x6b, 0x16, 0x9c, 0xf7, 0x9d, 0x26, + 0x89, 0x5a, 0x0e, 0xfd, 0xb4, 0x1c, 0x3c, 0xed, 0x39, 0xb5, 0x4d, 0xd6, 0xa3, 0xbe, 0xc3, 0xf5, + 0xc8, 0x16, 0x3d, 0x3a, 0x7f, 0xbd, 0x2b, 0x69, 0xbc, 0x07, 0x5b, 0xf4, 0x2d, 0x0b, 0x46, 0x83, + 0xb0, 0xb5, 0xe1, 0xf8, 0xa4, 0x2e, 0xa1, 0xd1, 0x58, 0x3f, 0x5b, 0x7a, 0x1f, 0x3d, 0xda, 0x27, + 0x5a, 0x4a, 0x93, 0x5d, 0x0c, 0x7c, 0x37, 0x0e, 0xc2, 0x15, 0x12, 0xc7, 0xae, 0xdf, 0x88, 0xa6, + 0xcf, 0xde, 0xdd, 0x1d, 0x1f, 0xed, 0xc0, 0xc2, 0x9d, 0xfd, 0x41, 0x3f, 0x0d, 0x03, 0xd1, 0x8e, + 0x5f, 0xbb, 0xe5, 0xfa, 0xf5, 0xe0, 0x4e, 0x34, 0x56, 0xc9, 0x63, 0xf9, 0xae, 0x28, 0x82, 0x62, + 0x01, 0x6a, 0x06, 0xd8, 0xe4, 0x96, 0xfd, 0xe1, 0xf4, 0x54, 0xaa, 0xe6, 0xfd, 0xe1, 0xf4, 0x64, + 0xda, 0x83, 0x2d, 0xfa, 0x39, 0x0b, 0x86, 0x22, 0xb7, 0xe1, 0x3b, 0x71, 0x3b, 0x24, 0xd7, 0xc8, + 0x4e, 0x34, 0x06, 0xac, 0x23, 0x57, 0x8f, 0x38, 0x2a, 0x06, 0xc9, 0xe9, 0xb3, 0xa2, 0x8f, 0x43, + 0x66, 0x6b, 0x84, 0x93, 0x7c, 0xb3, 0x16, 0x9a, 0x9e, 0xd6, 0x03, 0xf9, 0x2e, 0x34, 0x3d, 0xa9, + 0xbb, 0xb2, 0x44, 0x3f, 0x09, 0xa7, 0x78, 0x93, 0x1a, 0xd9, 0x68, 0x6c, 0x90, 0x09, 0xda, 0x33, + 0x77, 0x77, 0xc7, 0x4f, 0xad, 0xa4, 0x60, 0xb8, 0x03, 0x1b, 0xbd, 0x0a, 0xe3, 0x2d, 0x12, 0x36, + 0xdd, 0x78, 0xc9, 0xf7, 0x76, 0xa4, 0xf8, 0xae, 0x05, 0x2d, 0x52, 0x17, 0xdd, 0x89, 0xc6, 0x86, + 0x2e, 0x58, 0x4f, 0x56, 0xa6, 0xdf, 0x25, 0xba, 0x39, 0xbe, 0xbc, 0x37, 0x3a, 0xde, 0x8f, 0x9e, + 0xfd, 0x2f, 0x0a, 0x70, 0x2a, 0xad, 0x38, 0xd1, 0xdf, 0xb4, 0x60, 0xe4, 0xf6, 0x9d, 0x78, 0x35, + 0xd8, 0x24, 0x7e, 0x34, 0xbd, 0x43, 0xc5, 0x1b, 0x53, 0x19, 0x03, 0x17, 0x6b, 0xf9, 0xaa, 0xe8, + 0x89, 0xab, 0x49, 0x2e, 0x97, 0xfc, 0x38, 0xdc, 0x99, 0x7e, 0x58, 0xbc, 0xdd, 0xc8, 0xd5, 0x5b, + 0xab, 0x26, 0x14, 0xa7, 0x3b, 0x75, 0xfe, 0x8b, 0x16, 0x9c, 0xc9, 0x22, 0x81, 0x4e, 0x41, 0x71, + 0x93, 0xec, 0x70, 0x03, 0x0e, 0xd3, 0x9f, 0xe8, 0x65, 0x28, 0x6f, 0x39, 0x5e, 0x9b, 0x08, 0xeb, + 0x66, 0xee, 0x68, 0x2f, 0xa2, 0x7a, 0x86, 0x39, 0xd5, 0xf7, 0x15, 0x9e, 0xb7, 0xec, 0xdf, 0x2d, + 0xc2, 0x80, 0xa1, 0xdf, 0x4e, 0xc0, 0x62, 0x0b, 0x12, 0x16, 0xdb, 0x62, 0x6e, 0xaa, 0xb9, 0xab, + 0xc9, 0x76, 0x27, 0x65, 0xb2, 0x2d, 0xe5, 0xc7, 0x72, 0x4f, 0x9b, 0x0d, 0xc5, 0x50, 0x0d, 0x5a, + 0xd4, 0x7a, 0xa7, 0xaa, 0xbf, 0x94, 0xc7, 0x27, 0x5c, 0x92, 0xe4, 0xa6, 0x87, 0xee, 0xee, 0x8e, + 0x57, 0xd5, 0x5f, 0xac, 0x19, 0xd9, 0xdf, 0xb1, 0xe0, 0x8c, 0xd1, 0xc7, 0x99, 0xc0, 0xaf, 0xbb, + 0xec, 0xd3, 0x5e, 0x80, 0x52, 0xbc, 0xd3, 0x92, 0x3b, 0x04, 0x35, 0x52, 0xab, 0x3b, 0x2d, 0x82, + 0x19, 0x84, 0x1a, 0xfa, 0x4d, 0x12, 0x45, 0x4e, 0x83, 0xa4, 0xf7, 0x04, 0x8b, 0xbc, 0x19, 0x4b, + 0x38, 0x0a, 0x01, 0x79, 0x4e, 0x14, 0xaf, 0x86, 0x8e, 0x1f, 0x31, 0xf2, 0xab, 0x6e, 0x93, 0x88, + 0x01, 0xfe, 0x73, 0xbd, 0xcd, 0x18, 0xfa, 0xc4, 0xf4, 0x43, 0x77, 0x77, 0xc7, 0xd1, 0x42, 0x07, + 0x25, 0x9c, 0x41, 0xdd, 0xfe, 0x9a, 0x05, 0x0f, 0x65, 0xdb, 0x62, 0xe8, 0x09, 0xe8, 0xe3, 0xdb, + 0x43, 0xf1, 0x76, 0xfa, 0x93, 0xb0, 0x56, 0x2c, 0xa0, 0x68, 0x12, 0xaa, 0x4a, 0x4f, 0x88, 0x77, + 0x1c, 0x15, 0xa8, 0x55, 0xad, 0x5c, 0x34, 0x0e, 0x1d, 0x34, 0xfa, 0x47, 0x58, 0x6e, 0x6a, 0xd0, + 0xd8, 0x7e, 0x8a, 0x41, 0xec, 0x7f, 0x67, 0xc1, 0x88, 0xd1, 0xab, 0x13, 0x30, 0xcd, 0xfd, 0xa4, + 0x69, 0x3e, 0x9f, 0xdb, 0x7c, 0xee, 0x62, 0x9b, 0x7f, 0xd9, 0x82, 0xf3, 0x06, 0xd6, 0xa2, 0x13, + 0xd7, 0x36, 0x2e, 0x6d, 0xb7, 0x42, 0x12, 0xd1, 0xad, 0x37, 0x7a, 0xd4, 0x90, 0x5b, 0xd3, 0x03, + 0x82, 0x42, 0xf1, 0x1a, 0xd9, 0xe1, 0x42, 0xec, 0x29, 0xa8, 0xf0, 0xc9, 0x19, 0x84, 0x62, 0xc4, + 0xd5, 0xbb, 0x2d, 0x89, 0x76, 0xac, 0x30, 0x90, 0x0d, 0x7d, 0x4c, 0x38, 0xd1, 0xc5, 0x4a, 0xd5, + 0x10, 0xd0, 0x8f, 0x78, 0x93, 0xb5, 0x60, 0x01, 0xb1, 0xa3, 0x44, 0x77, 0x96, 0x43, 0xc2, 0x3e, + 0x6e, 0xfd, 0xb2, 0x4b, 0xbc, 0x7a, 0x44, 0xb7, 0x0d, 0x8e, 0xef, 0x07, 0xb1, 0xd8, 0x01, 0x18, + 0xdb, 0x86, 0x29, 0xdd, 0x8c, 0x4d, 0x1c, 0xca, 0xd4, 0x73, 0xd6, 0x88, 0xc7, 0x47, 0x54, 0x30, + 0x5d, 0x60, 0x2d, 0x58, 0x40, 0xec, 0xbb, 0x05, 0xb6, 0x41, 0x51, 0x4b, 0x9f, 0x9c, 0xc4, 0xee, + 0x36, 0x4c, 0xc8, 0xca, 0xe5, 0xfc, 0x04, 0x17, 0xe9, 0xbe, 0xc3, 0x7d, 0x2d, 0x25, 0x2e, 0x71, + 0xae, 0x5c, 0xf7, 0xde, 0xe5, 0x7e, 0xaa, 0x08, 0xe3, 0xc9, 0x07, 0x3a, 0xa4, 0x2d, 0xdd, 0x52, + 0x19, 0x8c, 0xd2, 0xfe, 0x0e, 0x03, 0x1f, 0x9b, 0x78, 0x5d, 0x04, 0x56, 0xe1, 0x38, 0x05, 0x96, + 0x29, 0x4f, 0x8b, 0xfb, 0xc8, 0xd3, 0x27, 0xd4, 0xa8, 0x97, 0x52, 0x02, 0x2c, 0xa9, 0x53, 0x2e, + 0x40, 0x29, 0x8a, 0x49, 0x6b, 0xac, 0x9c, 0x94, 0x47, 0x2b, 0x31, 0x69, 0x61, 0x06, 0x41, 0xef, + 0x87, 0x91, 0xd8, 0x09, 0x1b, 0x24, 0x0e, 0xc9, 0x96, 0xcb, 0x7c, 0x63, 0x6c, 0xbf, 0x54, 0x9d, + 0x3e, 0x4d, 0xcd, 0x93, 0x55, 0x06, 0xc2, 0x12, 0x84, 0xd3, 0xb8, 0xf6, 0x7f, 0x2e, 0xc0, 0xc3, + 0xc9, 0x4f, 0xa0, 0x35, 0xc8, 0x07, 0x13, 0x1a, 0xe4, 0xdd, 0xa6, 0x06, 0xb9, 0xb7, 0x3b, 0xfe, + 0xce, 0x2e, 0x8f, 0x7d, 0xdf, 0x28, 0x18, 0x34, 0x97, 0xfa, 0x08, 0x93, 0xc9, 0x8f, 0x70, 0x6f, + 0x77, 0xfc, 0xd1, 0x2e, 0xef, 0x98, 0xfa, 0x4a, 0x4f, 0x40, 0x5f, 0x48, 0x9c, 0x28, 0xf0, 0xc5, + 0x77, 0x52, 0x5f, 0x13, 0xb3, 0x56, 0x2c, 0xa0, 0xf6, 0xef, 0x57, 0xd3, 0x83, 0x3d, 0xc7, 0xfd, + 0x7d, 0x41, 0x88, 0x5c, 0x28, 0xb1, 0x5d, 0x01, 0x97, 0x2c, 0xd7, 0x8e, 0xb6, 0x0a, 0xa9, 0x16, + 0x51, 0xa4, 0xa7, 0x2b, 0xf4, 0xab, 0xd1, 0x26, 0xcc, 0x58, 0xa0, 0x6d, 0xa8, 0xd4, 0xa4, 0xb1, + 0x5e, 0xc8, 0xc3, 0xad, 0x25, 0x4c, 0x75, 0xcd, 0x71, 0x90, 0x8a, 0x7b, 0x65, 0xe1, 0x2b, 0x6e, + 0x88, 0x40, 0xb1, 0xe1, 0xc6, 0xe2, 0xb3, 0x1e, 0x71, 0x3b, 0x36, 0xe7, 0x1a, 0xaf, 0xd8, 0x4f, + 0x75, 0xd0, 0x9c, 0x1b, 0x63, 0x4a, 0x1f, 0x7d, 0xce, 0x82, 0x81, 0xa8, 0xd6, 0x5c, 0x0e, 0x83, + 0x2d, 0xb7, 0x4e, 0x42, 0x61, 0x8c, 0x1d, 0x51, 0xb2, 0xad, 0xcc, 0x2c, 0x4a, 0x82, 0x9a, 0x2f, + 0xdf, 0x1e, 0x6b, 0x08, 0x36, 0xf9, 0xd2, 0x4d, 0xca, 0xc3, 0xe2, 0xdd, 0x67, 0x49, 0x8d, 0xad, + 0x38, 0xb9, 0x27, 0x63, 0x33, 0xe5, 0xc8, 0xc6, 0xe9, 0x6c, 0xbb, 0xb6, 0x49, 0xd7, 0x9b, 0xee, + 0xd0, 0x3b, 0xef, 0xee, 0x8e, 0x3f, 0x3c, 0x93, 0xcd, 0x13, 0x77, 0xeb, 0x0c, 0x1b, 0xb0, 0x56, + 0xdb, 0xf3, 0x30, 0x79, 0xb5, 0x4d, 0x98, 0xc7, 0x25, 0x87, 0x01, 0x5b, 0xd6, 0x04, 0x53, 0x03, + 0x66, 0x40, 0xb0, 0xc9, 0x17, 0xbd, 0x0a, 0x7d, 0x4d, 0x27, 0x0e, 0xdd, 0x6d, 0xe1, 0x66, 0x39, + 0xe2, 0x76, 0x61, 0x91, 0xd1, 0xd2, 0xcc, 0x99, 0xa2, 0xe7, 0x8d, 0x58, 0x30, 0x42, 0x4d, 0x28, + 0x37, 0x49, 0xd8, 0x20, 0x63, 0x95, 0x3c, 0x5c, 0xca, 0x8b, 0x94, 0x94, 0x66, 0x58, 0xa5, 0xc6, + 0x15, 0x6b, 0xc3, 0x9c, 0x0b, 0x7a, 0x19, 0x2a, 0x11, 0xf1, 0x48, 0x8d, 0x9a, 0x47, 0x55, 0xc6, + 0xf1, 0x3d, 0x3d, 0x9a, 0x8a, 0xd4, 0x2e, 0x59, 0x11, 0x8f, 0xf2, 0x05, 0x26, 0xff, 0x61, 0x45, + 0x92, 0x0e, 0x60, 0xcb, 0x6b, 0x37, 0x5c, 0x7f, 0x0c, 0xf2, 0x18, 0xc0, 0x65, 0x46, 0x2b, 0x35, + 0x80, 0xbc, 0x11, 0x0b, 0x46, 0xf6, 0x7f, 0xb0, 0x00, 0x25, 0x85, 0xda, 0x09, 0xd8, 0xc4, 0xaf, + 0x26, 0x6d, 0xe2, 0x85, 0x3c, 0x8d, 0x96, 0x2e, 0x66, 0xf1, 0x6f, 0x54, 0x21, 0xa5, 0x0e, 0xae, + 0x93, 0x28, 0x26, 0xf5, 0xb7, 0x45, 0xf8, 0xdb, 0x22, 0xfc, 0x6d, 0x11, 0xae, 0x44, 0xf8, 0x5a, + 0x4a, 0x84, 0x7f, 0xc0, 0x58, 0xf5, 0xfa, 0xfc, 0xf6, 0x15, 0x75, 0xc0, 0x6b, 0xf6, 0xc0, 0x40, + 0xa0, 0x92, 0xe0, 0xea, 0xca, 0xd2, 0xf5, 0x4c, 0x99, 0xfd, 0x4a, 0x52, 0x66, 0x1f, 0x95, 0xc5, + 0xff, 0x0f, 0x52, 0xfa, 0x9f, 0x5b, 0xf0, 0xae, 0xa4, 0xf4, 0x92, 0x33, 0x67, 0xbe, 0xe1, 0x07, + 0x21, 0x99, 0x75, 0xd7, 0xd7, 0x49, 0x48, 0xfc, 0x1a, 0x89, 0x94, 0x13, 0xc4, 0xea, 0xe6, 0x04, + 0x41, 0xcf, 0xc2, 0xe0, 0xed, 0x28, 0xf0, 0x97, 0x03, 0xd7, 0x17, 0x22, 0x88, 0xee, 0x38, 0x4e, + 0xdd, 0xdd, 0x1d, 0x1f, 0xa4, 0x23, 0x2a, 0xdb, 0x71, 0x02, 0x0b, 0xcd, 0xc0, 0xe8, 0xed, 0x57, + 0x97, 0x9d, 0xd8, 0xf0, 0x26, 0xc8, 0x7d, 0x3f, 0x3b, 0xef, 0xb8, 0xfa, 0x62, 0x0a, 0x88, 0x3b, + 0xf1, 0xed, 0xbf, 0x56, 0x80, 0x73, 0xa9, 0x17, 0x09, 0x3c, 0x2f, 0x68, 0xc7, 0x74, 0x4f, 0x84, + 0xbe, 0x61, 0xc1, 0xa9, 0x66, 0xd2, 0x61, 0x11, 0x09, 0xbf, 0xf0, 0x87, 0x72, 0xd3, 0x11, 0x29, + 0x8f, 0xc8, 0xf4, 0x98, 0x18, 0xa1, 0x53, 0x29, 0x40, 0x84, 0x3b, 0xfa, 0x82, 0x5e, 0x86, 0x6a, + 0xd3, 0xd9, 0xbe, 0xd1, 0xaa, 0x3b, 0xb1, 0xdc, 0x8e, 0x76, 0xf7, 0x22, 0xb4, 0x63, 0xd7, 0x9b, + 0xe0, 0x91, 0x01, 0x13, 0xf3, 0x7e, 0xbc, 0x14, 0xae, 0xc4, 0xa1, 0xeb, 0x37, 0xb8, 0x37, 0x70, + 0x51, 0x92, 0xc1, 0x9a, 0xa2, 0xfd, 0x75, 0x2b, 0xad, 0xa4, 0xd4, 0xe8, 0x84, 0x4e, 0x4c, 0x1a, + 0x3b, 0xe8, 0xe3, 0x50, 0xa6, 0xfb, 0x46, 0x39, 0x2a, 0xb7, 0xf2, 0xd4, 0x9c, 0xc6, 0x97, 0xd0, + 0x4a, 0x94, 0xfe, 0x8b, 0x30, 0x67, 0x6a, 0x7f, 0xa3, 0x9a, 0x36, 0x16, 0xd8, 0xd9, 0xef, 0x45, + 0x80, 0x46, 0xb0, 0x4a, 0x9a, 0x2d, 0x8f, 0x0e, 0x8b, 0xc5, 0x0e, 0x10, 0x94, 0xab, 0x64, 0x4e, + 0x41, 0xb0, 0x81, 0x85, 0x7e, 0xde, 0x02, 0x68, 0xc8, 0x39, 0x2f, 0x0d, 0x81, 0x1b, 0x79, 0xbe, + 0x8e, 0x5e, 0x51, 0xba, 0x2f, 0x8a, 0x21, 0x36, 0x98, 0xa3, 0x9f, 0xb5, 0xa0, 0x12, 0xcb, 0xee, + 0x73, 0xd5, 0xb8, 0x9a, 0x67, 0x4f, 0xe4, 0x4b, 0x6b, 0x9b, 0x48, 0x0d, 0x89, 0xe2, 0x8b, 0x3e, + 0x6f, 0x01, 0x44, 0x3b, 0x7e, 0x6d, 0x39, 0xf0, 0xdc, 0xda, 0x8e, 0xd0, 0x98, 0x37, 0x73, 0x75, + 0xe7, 0x28, 0xea, 0xd3, 0xc3, 0x74, 0x34, 0xf4, 0x7f, 0x6c, 0x70, 0x46, 0x9f, 0x84, 0x4a, 0x24, + 0xa6, 0x9b, 0xd0, 0x91, 0xab, 0xf9, 0x3a, 0x95, 0x38, 0x6d, 0x21, 0x5e, 0xc5, 0x3f, 0xac, 0x78, + 0xa2, 0xbf, 0x62, 0xc1, 0x48, 0x2b, 0xe9, 0x26, 0x14, 0xea, 0x30, 0x3f, 0x19, 0x90, 0x72, 0x43, + 0x72, 0x6f, 0x4b, 0xaa, 0x11, 0xa7, 0x7b, 0x41, 0x25, 0xa0, 0x9e, 0xc1, 0x4b, 0x2d, 0xee, 0xb2, + 0xec, 0xd7, 0x12, 0x70, 0x2e, 0x0d, 0xc4, 0x9d, 0xf8, 0x68, 0x19, 0xce, 0xd0, 0xde, 0xed, 0x70, + 0xf3, 0x53, 0xaa, 0x97, 0x88, 0x29, 0xc3, 0xca, 0xf4, 0x23, 0x62, 0x86, 0xb0, 0x43, 0x81, 0x34, + 0x0e, 0xce, 0x7c, 0x12, 0xfd, 0xae, 0x05, 0x8f, 0xb8, 0x4c, 0x0d, 0x98, 0xfe, 0x76, 0xad, 0x11, + 0xc4, 0x41, 0x2e, 0xc9, 0x55, 0x56, 0x74, 0x53, 0x3f, 0xd3, 0x3f, 0x2c, 0xde, 0xe0, 0x91, 0xf9, + 0x3d, 0xba, 0x84, 0xf7, 0xec, 0x30, 0xfa, 0x71, 0x18, 0x92, 0xeb, 0x62, 0x99, 0x8a, 0x60, 0xa6, + 0x68, 0xab, 0xd3, 0xa3, 0x77, 0x77, 0xc7, 0x87, 0x56, 0x4d, 0x00, 0x4e, 0xe2, 0xd9, 0xff, 0xb2, + 0x98, 0x38, 0x4e, 0x51, 0x3e, 0x4c, 0x26, 0x6e, 0x6a, 0xd2, 0xff, 0x23, 0xa5, 0x67, 0xae, 0xe2, + 0x46, 0x79, 0x97, 0xb4, 0xb8, 0x51, 0x4d, 0x11, 0x36, 0x98, 0x53, 0xa3, 0x74, 0xd4, 0x49, 0x7b, + 0x4a, 0x85, 0x04, 0x7c, 0x39, 0xcf, 0x2e, 0x75, 0x1e, 0x7e, 0x9d, 0x13, 0x5d, 0x1b, 0xed, 0x00, + 0xe1, 0xce, 0x2e, 0xa1, 0x4f, 0x40, 0x35, 0x54, 0x91, 0x13, 0xc5, 0x3c, 0xb6, 0x6a, 0x72, 0xda, + 0x88, 0xee, 0xa8, 0xd3, 0x1c, 0x1d, 0x23, 0xa1, 0x39, 0xda, 0xbf, 0x93, 0x3c, 0x41, 0x32, 0x64, + 0x47, 0x0f, 0xa7, 0x63, 0x5f, 0xb1, 0x60, 0x20, 0x0c, 0x3c, 0xcf, 0xf5, 0x1b, 0x54, 0xce, 0x09, + 0x65, 0xfd, 0x91, 0x63, 0xd1, 0x97, 0x42, 0xa0, 0x31, 0xcb, 0x1a, 0x6b, 0x9e, 0xd8, 0xec, 0x80, + 0xfd, 0xa7, 0x16, 0x8c, 0x75, 0x93, 0xc7, 0x88, 0xc0, 0x3b, 0xa5, 0xb0, 0x51, 0x43, 0xb1, 0xe4, + 0xcf, 0x12, 0x8f, 0x28, 0xb7, 0x79, 0x65, 0xfa, 0x71, 0xf1, 0x9a, 0xef, 0x5c, 0xee, 0x8e, 0x8a, + 0xf7, 0xa2, 0x83, 0x5e, 0x82, 0x53, 0xc6, 0x7b, 0x45, 0x6a, 0x60, 0xaa, 0xd3, 0x13, 0xd4, 0x00, + 0x9a, 0x4a, 0xc1, 0xee, 0xed, 0x8e, 0x3f, 0x94, 0x6e, 0x13, 0x0a, 0xa3, 0x83, 0x8e, 0xfd, 0x2b, + 0x85, 0xf4, 0xd7, 0x52, 0xba, 0xfe, 0x4d, 0xab, 0xc3, 0x9b, 0xf0, 0xa1, 0xe3, 0xd0, 0xaf, 0xcc, + 0xef, 0xa0, 0xc2, 0x4f, 0xba, 0xe3, 0xdc, 0xc7, 0xf3, 0x6d, 0xfb, 0x5f, 0x95, 0x60, 0x8f, 0x9e, + 0xf5, 0x60, 0xbc, 0x1f, 0xf8, 0x50, 0xf4, 0x4b, 0x96, 0x3a, 0x30, 0xe3, 0x6b, 0xb8, 0x7e, 0x5c, + 0x63, 0xcf, 0xf7, 0x4f, 0x11, 0x8f, 0xb1, 0x50, 0x5e, 0xf4, 0xe4, 0xd1, 0x1c, 0xfa, 0xa6, 0x95, + 0x3c, 0xf2, 0xe3, 0x41, 0x73, 0xee, 0xb1, 0xf5, 0xc9, 0x38, 0x47, 0xe4, 0x1d, 0xd3, 0xa7, 0x4f, + 0xdd, 0x4e, 0x18, 0x27, 0x00, 0xd6, 0x5d, 0xdf, 0xf1, 0xdc, 0xd7, 0xe8, 0xee, 0xa8, 0xcc, 0x14, + 0x3c, 0xb3, 0x98, 0x2e, 0xab, 0x56, 0x6c, 0x60, 0x9c, 0xff, 0xf3, 0x30, 0x60, 0xbc, 0x79, 0x46, + 0x68, 0xc8, 0x19, 0x33, 0x34, 0xa4, 0x6a, 0x44, 0x74, 0x9c, 0xff, 0x00, 0x9c, 0x4a, 0x77, 0xf0, + 0x20, 0xcf, 0xdb, 0xff, 0xab, 0x3f, 0x7d, 0x06, 0xb7, 0x4a, 0xc2, 0x26, 0xed, 0xda, 0xdb, 0x8e, + 0xad, 0xb7, 0x1d, 0x5b, 0x6f, 0x3b, 0xb6, 0xcc, 0xb3, 0x09, 0xe1, 0xb4, 0xe9, 0x3f, 0x21, 0xa7, + 0x4d, 0xc2, 0x0d, 0x55, 0xc9, 0xdd, 0x0d, 0x65, 0x7f, 0xae, 0xc3, 0x73, 0xbf, 0x1a, 0x12, 0x82, + 0x02, 0x28, 0xfb, 0x41, 0x9d, 0x48, 0x1b, 0xf7, 0x6a, 0x3e, 0x06, 0xdb, 0xf5, 0xa0, 0x6e, 0x84, + 0x23, 0xd3, 0x7f, 0x11, 0xe6, 0x7c, 0xec, 0xbb, 0x65, 0x48, 0x98, 0x93, 0xfc, 0xbb, 0xff, 0x28, + 0xf4, 0x87, 0xa4, 0x15, 0xdc, 0xc0, 0x0b, 0x42, 0x97, 0xe9, 0x8c, 0x05, 0xde, 0x8c, 0x25, 0x9c, + 0xea, 0xbc, 0x96, 0x13, 0x6f, 0x08, 0x65, 0xa6, 0x74, 0xde, 0xb2, 0x13, 0x6f, 0x60, 0x06, 0x41, + 0x1f, 0x80, 0xe1, 0x38, 0x71, 0x14, 0x2e, 0x8e, 0x7c, 0x1f, 0x12, 0xb8, 0xc3, 0xc9, 0x83, 0x72, + 0x9c, 0xc2, 0x46, 0xaf, 0x42, 0x69, 0x83, 0x78, 0x4d, 0xf1, 0xe9, 0x57, 0xf2, 0xd3, 0x35, 0xec, + 0x5d, 0xaf, 0x10, 0xaf, 0xc9, 0x25, 0x21, 0xfd, 0x85, 0x19, 0x2b, 0x3a, 0xef, 0xab, 0x9b, 0xed, + 0x28, 0x0e, 0x9a, 0xee, 0x6b, 0xd2, 0xd3, 0xf9, 0xa1, 0x9c, 0x19, 0x5f, 0x93, 0xf4, 0xb9, 0x4b, + 0x49, 0xfd, 0xc5, 0x9a, 0x33, 0xeb, 0x47, 0xdd, 0x0d, 0xd9, 0x94, 0xd9, 0x11, 0x0e, 0xcb, 0xbc, + 0xfb, 0x31, 0x2b, 0xe9, 0xf3, 0x7e, 0xa8, 0xbf, 0x58, 0x73, 0x46, 0x3b, 0x6a, 0xfd, 0x0d, 0xb0, + 0x3e, 0xdc, 0xc8, 0xb9, 0x0f, 0x7c, 0xed, 0x65, 0xae, 0xc3, 0xc7, 0xa1, 0x5c, 0xdb, 0x70, 0xc2, + 0x78, 0x6c, 0x90, 0x4d, 0x1a, 0x35, 0x8b, 0x67, 0x68, 0x23, 0xe6, 0x30, 0xf4, 0x28, 0x14, 0x43, + 0xb2, 0xce, 0xa2, 0x5f, 0x8d, 0xb8, 0x28, 0x4c, 0xd6, 0x31, 0x6d, 0xb7, 0x7f, 0xa9, 0x90, 0x34, + 0xdb, 0x92, 0xef, 0xcd, 0x67, 0x7b, 0xad, 0x1d, 0x46, 0xd2, 0xfd, 0x65, 0xcc, 0x76, 0xd6, 0x8c, + 0x25, 0x1c, 0x7d, 0xda, 0x82, 0xfe, 0xdb, 0x51, 0xe0, 0xfb, 0x24, 0x16, 0x2a, 0xf2, 0x66, 0xce, + 0x43, 0x71, 0x95, 0x53, 0xd7, 0x7d, 0x10, 0x0d, 0x58, 0xf2, 0xa5, 0xdd, 0x25, 0xdb, 0x35, 0xaf, + 0x5d, 0xef, 0x08, 0x75, 0xb9, 0xc4, 0x9b, 0xb1, 0x84, 0x53, 0x54, 0xd7, 0xe7, 0xa8, 0xa5, 0x24, + 0xea, 0xbc, 0x2f, 0x50, 0x05, 0xdc, 0xfe, 0xcb, 0x7d, 0x70, 0x36, 0x73, 0x71, 0x50, 0x83, 0x8a, + 0x99, 0x2c, 0x97, 0x5d, 0x8f, 0xc8, 0x20, 0x2f, 0x66, 0x50, 0xdd, 0x54, 0xad, 0xd8, 0xc0, 0x40, + 0x3f, 0x03, 0xd0, 0x72, 0x42, 0xa7, 0x49, 0x94, 0x7b, 0xfa, 0xc8, 0x76, 0x0b, 0xed, 0xc7, 0xb2, + 0xa4, 0xa9, 0xb7, 0xe8, 0xaa, 0x29, 0xc2, 0x06, 0x4b, 0xf4, 0x1c, 0x0c, 0x84, 0xc4, 0x23, 0x4e, + 0xc4, 0x82, 0xa7, 0xd3, 0x99, 0x20, 0x58, 0x83, 0xb0, 0x89, 0x87, 0x9e, 0x50, 0xf1, 0x70, 0xa9, + 0xb8, 0xa0, 0x64, 0x4c, 0x1c, 0x7a, 0xdd, 0x82, 0xe1, 0x75, 0xd7, 0x23, 0x9a, 0xbb, 0xc8, 0xdb, + 0x58, 0x3a, 0xfa, 0x4b, 0x5e, 0x36, 0xe9, 0x6a, 0x09, 0x99, 0x68, 0x8e, 0x70, 0x8a, 0x3d, 0xfd, + 0xcc, 0x5b, 0x24, 0x64, 0xa2, 0xb5, 0x2f, 0xf9, 0x99, 0x6f, 0xf2, 0x66, 0x2c, 0xe1, 0x68, 0x0a, + 0x46, 0x5a, 0x4e, 0x14, 0xcd, 0x84, 0xa4, 0x4e, 0xfc, 0xd8, 0x75, 0x3c, 0x9e, 0x55, 0x51, 0xd1, + 0x51, 0xd5, 0xcb, 0x49, 0x30, 0x4e, 0xe3, 0xa3, 0x0f, 0xc3, 0xc3, 0xdc, 0xff, 0xb3, 0xe8, 0x46, + 0x91, 0xeb, 0x37, 0xf4, 0x34, 0x10, 0x6e, 0xb0, 0x71, 0x41, 0xea, 0xe1, 0xf9, 0x6c, 0x34, 0xdc, + 0xed, 0x79, 0xf4, 0x14, 0x54, 0xa2, 0x4d, 0xb7, 0x35, 0x13, 0xd6, 0x23, 0x76, 0xf6, 0x53, 0xd1, + 0x4e, 0xd7, 0x15, 0xd1, 0x8e, 0x15, 0x06, 0xaa, 0xc1, 0x20, 0xff, 0x24, 0x3c, 0xa0, 0x4f, 0xc8, + 0xc7, 0xa7, 0xbb, 0xaa, 0x69, 0x91, 0x24, 0x38, 0x81, 0x9d, 0x3b, 0x97, 0xe4, 0x49, 0x14, 0x3f, + 0x38, 0xb9, 0x69, 0x90, 0xc1, 0x09, 0xa2, 0xf6, 0x2f, 0x14, 0x92, 0x3b, 0x7f, 0x73, 0x91, 0xa2, + 0x88, 0x2e, 0xc5, 0xf8, 0xa6, 0x13, 0x4a, 0x85, 0x7d, 0xc4, 0xe4, 0x0f, 0x41, 0xf7, 0xa6, 0x13, + 0x9a, 0x8b, 0x9a, 0x31, 0xc0, 0x92, 0x13, 0xba, 0x0d, 0xa5, 0xd8, 0x73, 0x72, 0xca, 0x16, 0x33, + 0x38, 0x6a, 0x47, 0xcc, 0xc2, 0x54, 0x84, 0x19, 0x0f, 0xf4, 0x08, 0xdd, 0x7d, 0xac, 0xc9, 0x93, + 0x22, 0xb1, 0x61, 0x58, 0x8b, 0x30, 0x6b, 0xb5, 0xef, 0x41, 0x86, 0x5c, 0x55, 0x8a, 0x0c, 0x5d, + 0x04, 0xa0, 0x1b, 0xd9, 0xe5, 0x90, 0xac, 0xbb, 0xdb, 0xc2, 0x90, 0x50, 0x6b, 0xf7, 0xba, 0x82, + 0x60, 0x03, 0x4b, 0x3e, 0xb3, 0xd2, 0x5e, 0xa7, 0xcf, 0x14, 0x3a, 0x9f, 0xe1, 0x10, 0x6c, 0x60, + 0xa1, 0x67, 0xa1, 0xcf, 0x6d, 0x3a, 0x0d, 0x15, 0xc8, 0xfa, 0x08, 0x5d, 0xb4, 0xf3, 0xac, 0xe5, + 0xde, 0xee, 0xf8, 0xb0, 0xea, 0x10, 0x6b, 0xc2, 0x02, 0x17, 0xfd, 0x8a, 0x05, 0x83, 0xb5, 0xa0, + 0xd9, 0x0c, 0x7c, 0xbe, 0xfd, 0x13, 0x7b, 0xd9, 0xdb, 0xc7, 0xa5, 0xe6, 0x27, 0x66, 0x0c, 0x66, + 0x7c, 0x33, 0xab, 0xd2, 0xda, 0x4c, 0x10, 0x4e, 0xf4, 0xca, 0x5c, 0xdb, 0xe5, 0x7d, 0xd6, 0xf6, + 0xaf, 0x5b, 0x30, 0xca, 0x9f, 0x35, 0x76, 0xa5, 0x22, 0x83, 0x2b, 0x38, 0xe6, 0xd7, 0xea, 0xd8, + 0xa8, 0x2b, 0x67, 0x65, 0x07, 0x1c, 0x77, 0x76, 0x12, 0xcd, 0xc1, 0xe8, 0x7a, 0x10, 0xd6, 0x88, + 0x39, 0x10, 0x42, 0x30, 0x29, 0x42, 0x97, 0xd3, 0x08, 0xb8, 0xf3, 0x19, 0x74, 0x13, 0x1e, 0x32, + 0x1a, 0xcd, 0x71, 0xe0, 0xb2, 0xe9, 0x31, 0x41, 0xed, 0xa1, 0xcb, 0x99, 0x58, 0xb8, 0xcb, 0xd3, + 0x49, 0xc7, 0x4d, 0xb5, 0x07, 0xc7, 0xcd, 0x2b, 0x70, 0xae, 0xd6, 0x39, 0x32, 0x5b, 0x51, 0x7b, + 0x2d, 0xe2, 0x92, 0xaa, 0x32, 0xfd, 0x43, 0x82, 0xc0, 0xb9, 0x99, 0x6e, 0x88, 0xb8, 0x3b, 0x0d, + 0xf4, 0x71, 0xa8, 0x84, 0x84, 0x7d, 0x95, 0x48, 0xa4, 0x33, 0x1d, 0x71, 0xb7, 0xae, 0x2d, 0x50, + 0x4e, 0x56, 0xcb, 0x5e, 0xd1, 0x10, 0x61, 0xc5, 0x11, 0xdd, 0x81, 0xfe, 0x96, 0x13, 0xd7, 0x36, + 0x44, 0x12, 0xd3, 0x91, 0x7d, 0xcb, 0x8a, 0x39, 0x3b, 0x0a, 0x30, 0xd2, 0x9e, 0x39, 0x13, 0x2c, + 0xb9, 0x51, 0x6b, 0xa4, 0x16, 0x34, 0x5b, 0x81, 0x4f, 0xfc, 0x38, 0x1a, 0x1b, 0xd2, 0xd6, 0xc8, + 0x8c, 0x6a, 0xc5, 0x06, 0x06, 0x5a, 0x86, 0x33, 0xcc, 0x77, 0x75, 0xcb, 0x8d, 0x37, 0x82, 0x76, + 0x2c, 0xb7, 0x62, 0x63, 0xc3, 0xc9, 0x13, 0x9b, 0x85, 0x0c, 0x1c, 0x9c, 0xf9, 0xe4, 0xf9, 0x0f, + 0xc2, 0x68, 0xc7, 0x52, 0x3e, 0x90, 0xdb, 0x68, 0x16, 0x1e, 0xca, 0x5e, 0x34, 0x07, 0x72, 0x1e, + 0xfd, 0xfd, 0x54, 0xf4, 0xb0, 0x61, 0x48, 0xf7, 0xe0, 0x88, 0x74, 0xa0, 0x48, 0xfc, 0x2d, 0xa1, + 0x43, 0x2e, 0x1f, 0xed, 0xdb, 0x5d, 0xf2, 0xb7, 0xf8, 0x9a, 0x67, 0xde, 0x96, 0x4b, 0xfe, 0x16, + 0xa6, 0xb4, 0xd1, 0x1b, 0x56, 0xc2, 0x10, 0xe4, 0xee, 0xcb, 0x8f, 0x1e, 0xcb, 0xce, 0xa1, 0x67, + 0xdb, 0xd0, 0xfe, 0xd7, 0x05, 0xb8, 0xb0, 0x1f, 0x91, 0x1e, 0x86, 0xef, 0x71, 0xe8, 0x8b, 0x58, + 0x3c, 0x80, 0x10, 0xca, 0x03, 0x74, 0xae, 0xf2, 0x08, 0x81, 0x57, 0xb0, 0x00, 0x21, 0x0f, 0x8a, + 0x4d, 0xa7, 0x25, 0xbc, 0x5a, 0xf3, 0x47, 0x4d, 0x47, 0xa2, 0xff, 0x1d, 0x6f, 0xd1, 0x69, 0x71, + 0x5f, 0x89, 0xd1, 0x80, 0x29, 0x1b, 0x14, 0x43, 0xd9, 0x09, 0x43, 0x47, 0x1e, 0x3e, 0x5f, 0xcb, + 0x87, 0xdf, 0x14, 0x25, 0xc9, 0xcf, 0xee, 0x12, 0x4d, 0x98, 0x33, 0xb3, 0xbf, 0xd4, 0x9f, 0x48, + 0xc9, 0x61, 0x11, 0x05, 0x11, 0xf4, 0x09, 0x67, 0x96, 0x95, 0x77, 0x16, 0x18, 0xcf, 0xa9, 0x64, + 0xfb, 0x44, 0x91, 0x99, 0x2e, 0x58, 0xa1, 0x2f, 0x5a, 0x2c, 0xff, 0x5b, 0xa6, 0x29, 0x89, 0xdd, + 0xd9, 0xf1, 0xa4, 0xa3, 0x9b, 0x59, 0xe5, 0xb2, 0x11, 0x9b, 0xdc, 0x45, 0x1d, 0x07, 0x66, 0x95, + 0x76, 0xd6, 0x71, 0x60, 0x56, 0xa6, 0x84, 0xa3, 0xed, 0x8c, 0xc8, 0x81, 0x1c, 0x72, 0x88, 0x7b, + 0x88, 0x15, 0xf8, 0xa6, 0x05, 0xa3, 0x6e, 0xfa, 0x08, 0x58, 0xec, 0x65, 0x6e, 0xe5, 0xe3, 0x79, + 0xea, 0x3c, 0x61, 0x56, 0xea, 0xbc, 0x03, 0x84, 0x3b, 0x3b, 0x83, 0xea, 0x50, 0x72, 0xfd, 0xf5, + 0x40, 0x18, 0x31, 0xd3, 0x47, 0xeb, 0xd4, 0xbc, 0xbf, 0x1e, 0xe8, 0xd5, 0x4c, 0xff, 0x61, 0x46, + 0x1d, 0x2d, 0xc0, 0x19, 0x99, 0x95, 0x71, 0xc5, 0x8d, 0xe2, 0x20, 0xdc, 0x59, 0x70, 0x9b, 0x6e, + 0xcc, 0x0c, 0x90, 0xe2, 0xf4, 0x18, 0xd5, 0x0f, 0x38, 0x03, 0x8e, 0x33, 0x9f, 0x42, 0xaf, 0x41, + 0xbf, 0x3c, 0x76, 0xad, 0xe4, 0xb1, 0x2f, 0xec, 0x9c, 0xff, 0x6a, 0x32, 0xad, 0x88, 0x73, 0x57, + 0xc9, 0xd0, 0x7e, 0x7d, 0x00, 0x3a, 0x4f, 0x87, 0x93, 0x47, 0xc1, 0xd6, 0x49, 0x1f, 0x05, 0xd3, + 0x0d, 0x4b, 0xa4, 0x4f, 0x71, 0x73, 0x98, 0xdb, 0x82, 0xab, 0x3e, 0xa1, 0xdb, 0xf1, 0x6b, 0x98, + 0xf1, 0x40, 0x21, 0xf4, 0x6d, 0x10, 0xc7, 0x8b, 0x37, 0xf2, 0x39, 0x4c, 0xb8, 0xc2, 0x68, 0xa5, + 0x53, 0xa9, 0x78, 0x2b, 0x16, 0x9c, 0xd0, 0x36, 0xf4, 0x6f, 0xf0, 0x09, 0x20, 0xf6, 0x10, 0x8b, + 0x47, 0x1d, 0xdc, 0xc4, 0xac, 0xd2, 0x9f, 0x5b, 0x34, 0x60, 0xc9, 0x8e, 0x85, 0x1d, 0x19, 0x81, + 0x11, 0x7c, 0xe9, 0xe6, 0x97, 0x45, 0xd6, 0x7b, 0x54, 0xc4, 0xc7, 0x60, 0x30, 0x24, 0xb5, 0xc0, + 0xaf, 0xb9, 0x1e, 0xa9, 0x4f, 0xc9, 0x83, 0x82, 0x83, 0x24, 0x0f, 0xb1, 0x7d, 0x38, 0x36, 0x68, + 0xe0, 0x04, 0x45, 0xf4, 0x05, 0x0b, 0x86, 0x55, 0xe6, 0x2d, 0xfd, 0x20, 0x44, 0x38, 0x84, 0x17, + 0x72, 0xca, 0xf3, 0x65, 0x34, 0xa7, 0xd1, 0xdd, 0xdd, 0xf1, 0xe1, 0x64, 0x1b, 0x4e, 0xf1, 0x45, + 0x2f, 0x01, 0x04, 0x6b, 0x3c, 0xb6, 0x68, 0x2a, 0x16, 0xde, 0xe1, 0x83, 0xbc, 0xea, 0x30, 0x4f, + 0x42, 0x94, 0x14, 0xb0, 0x41, 0x0d, 0x5d, 0x03, 0xe0, 0xcb, 0x66, 0x75, 0xa7, 0x25, 0x37, 0x1a, + 0x32, 0xfb, 0x0b, 0x56, 0x14, 0xe4, 0xde, 0xee, 0x78, 0xa7, 0xb7, 0x8e, 0x05, 0x50, 0x18, 0x8f, + 0xa3, 0x9f, 0x86, 0xfe, 0xa8, 0xdd, 0x6c, 0x3a, 0xca, 0x77, 0x9c, 0x63, 0x5a, 0x23, 0xa7, 0x6b, + 0x88, 0x22, 0xde, 0x80, 0x25, 0x47, 0x74, 0x9b, 0x0a, 0xd5, 0x48, 0xb8, 0x11, 0xd9, 0x2a, 0xe2, + 0x36, 0xc1, 0x00, 0x7b, 0xa7, 0xf7, 0x4a, 0xc3, 0x1b, 0x67, 0xe0, 0xdc, 0xdb, 0x1d, 0x7f, 0x28, + 0xd9, 0xbe, 0x10, 0x88, 0x44, 0xc3, 0x4c, 0x9a, 0xe8, 0xaa, 0xac, 0x5f, 0x43, 0x5f, 0x5b, 0x96, + 0x55, 0x78, 0x52, 0xd7, 0xaf, 0x61, 0xcd, 0xdd, 0xc7, 0xcc, 0x7c, 0x18, 0x2d, 0xc2, 0xe9, 0x5a, + 0xe0, 0xc7, 0x61, 0xe0, 0x79, 0xbc, 0x7e, 0x13, 0xdf, 0xf3, 0x71, 0xdf, 0xf2, 0x3b, 0x45, 0xb7, + 0x4f, 0xcf, 0x74, 0xa2, 0xe0, 0xac, 0xe7, 0x6c, 0x3f, 0x79, 0xce, 0x23, 0x06, 0xe7, 0x59, 0x18, + 0x24, 0xdb, 0x31, 0x09, 0x7d, 0xc7, 0xbb, 0x81, 0x17, 0xa4, 0x57, 0x95, 0xad, 0x81, 0x4b, 0x46, + 0x3b, 0x4e, 0x60, 0x21, 0x5b, 0x39, 0x3a, 0x8c, 0xe4, 0x59, 0xee, 0xe8, 0x90, 0x6e, 0x0d, 0xfb, + 0x7f, 0x17, 0x12, 0x06, 0xd9, 0x7d, 0x39, 0x55, 0x62, 0x55, 0x40, 0x64, 0xb9, 0x14, 0x06, 0x10, + 0x1b, 0x8d, 0x3c, 0x39, 0xab, 0x2a, 0x20, 0x4b, 0x26, 0x23, 0x9c, 0xe4, 0x8b, 0x36, 0xa1, 0xbc, + 0x11, 0x44, 0xb1, 0xdc, 0x7e, 0x1c, 0x71, 0xa7, 0x73, 0x25, 0x88, 0x62, 0x66, 0x45, 0xa8, 0xd7, + 0xa6, 0x2d, 0x11, 0xe6, 0x3c, 0xec, 0xff, 0x68, 0x25, 0x7c, 0xe8, 0xb7, 0x58, 0x00, 0xf2, 0x16, + 0xf1, 0xe9, 0xb2, 0x36, 0x43, 0x9e, 0x7e, 0x3c, 0x95, 0xce, 0xf9, 0xae, 0x6e, 0xe5, 0xc9, 0xee, + 0x50, 0x0a, 0x13, 0x8c, 0x84, 0x11, 0x1d, 0xf5, 0x29, 0x2b, 0x99, 0x97, 0x5b, 0xc8, 0x63, 0x83, + 0x61, 0xe6, 0xa6, 0xef, 0x9b, 0xe2, 0x6b, 0xbf, 0x61, 0x41, 0xff, 0xb4, 0x53, 0xdb, 0x0c, 0xd6, + 0xd7, 0xd1, 0x53, 0x50, 0xa9, 0xb7, 0x43, 0x33, 0x45, 0x58, 0x39, 0x0e, 0x66, 0x45, 0x3b, 0x56, + 0x18, 0x74, 0x0e, 0xaf, 0x3b, 0x35, 0x99, 0xa1, 0x5e, 0xe4, 0x73, 0xf8, 0x32, 0x6b, 0xc1, 0x02, + 0x82, 0x9e, 0x83, 0x81, 0xa6, 0xb3, 0x2d, 0x1f, 0x4e, 0x3b, 0xf0, 0x17, 0x35, 0x08, 0x9b, 0x78, + 0xf6, 0x3f, 0xb3, 0x60, 0x6c, 0xda, 0x89, 0xdc, 0xda, 0x54, 0x3b, 0xde, 0x98, 0x76, 0xe3, 0xb5, + 0x76, 0x6d, 0x93, 0xc4, 0xbc, 0x2c, 0x01, 0xed, 0x65, 0x3b, 0xa2, 0x4b, 0x49, 0xed, 0xeb, 0x54, + 0x2f, 0x6f, 0x88, 0x76, 0xac, 0x30, 0xd0, 0x6b, 0x30, 0xd0, 0x72, 0xa2, 0xe8, 0x4e, 0x10, 0xd6, + 0x31, 0x59, 0xcf, 0xa7, 0x28, 0xc8, 0x0a, 0xa9, 0x85, 0x24, 0xc6, 0x64, 0x5d, 0x1c, 0x76, 0x6b, + 0xfa, 0xd8, 0x64, 0x66, 0x7f, 0xc5, 0x82, 0x73, 0xd3, 0xc4, 0x09, 0x49, 0xc8, 0x6a, 0x88, 0xa8, + 0x17, 0x99, 0xf1, 0x82, 0x76, 0x1d, 0xbd, 0x0a, 0x95, 0x98, 0x36, 0xd3, 0x6e, 0x59, 0xf9, 0x76, + 0x8b, 0x9d, 0x55, 0xaf, 0x0a, 0xe2, 0x58, 0xb1, 0xb1, 0xff, 0xaa, 0x05, 0x83, 0xec, 0xb8, 0x6d, + 0x96, 0xc4, 0x8e, 0xeb, 0x75, 0x94, 0xda, 0xb2, 0x7a, 0x2c, 0xb5, 0x75, 0x01, 0x4a, 0x1b, 0x41, + 0x93, 0xa4, 0x8f, 0x8a, 0xaf, 0x04, 0x74, 0x5b, 0x4d, 0x21, 0xe8, 0x19, 0xfa, 0xe1, 0x5d, 0x3f, + 0x76, 0xe8, 0x12, 0x90, 0xee, 0xdc, 0x11, 0xfe, 0xd1, 0x55, 0x33, 0x36, 0x71, 0xec, 0x7f, 0x5a, + 0x85, 0x7e, 0x11, 0xd7, 0xd0, 0x73, 0x69, 0x0a, 0xb9, 0xbf, 0x2f, 0x74, 0xdd, 0xdf, 0x47, 0xd0, + 0x57, 0x63, 0x35, 0xff, 0x84, 0x19, 0x79, 0x2d, 0x97, 0x40, 0x18, 0x5e, 0x46, 0x50, 0x77, 0x8b, + 0xff, 0xc7, 0x82, 0x15, 0xfa, 0xaa, 0x05, 0x23, 0xb5, 0xc0, 0xf7, 0x49, 0x4d, 0xdb, 0x38, 0xa5, + 0x3c, 0xe2, 0x1d, 0x66, 0x92, 0x44, 0xf5, 0x59, 0x4f, 0x0a, 0x80, 0xd3, 0xec, 0xd1, 0x0b, 0x30, + 0xc4, 0xc7, 0xec, 0x66, 0xc2, 0x07, 0xad, 0x2b, 0x30, 0x99, 0x40, 0x9c, 0xc4, 0x45, 0x13, 0xdc, + 0x97, 0x2f, 0x6a, 0x1d, 0xf5, 0x69, 0x57, 0x9d, 0x51, 0xe5, 0xc8, 0xc0, 0x40, 0x21, 0xa0, 0x90, + 0xac, 0x87, 0x24, 0xda, 0x10, 0x71, 0x1f, 0xcc, 0xbe, 0xea, 0x3f, 0x5c, 0x1e, 0x3a, 0xee, 0xa0, + 0x84, 0x33, 0xa8, 0xa3, 0x4d, 0xb1, 0xc1, 0xac, 0xe4, 0x21, 0x43, 0xc5, 0x67, 0xee, 0xba, 0xcf, + 0x1c, 0x87, 0x72, 0xb4, 0xe1, 0x84, 0x75, 0x66, 0xd7, 0x15, 0x79, 0xee, 0xd3, 0x0a, 0x6d, 0xc0, + 0xbc, 0x1d, 0xcd, 0xc2, 0xa9, 0x54, 0xfd, 0xa8, 0x48, 0xf8, 0x8a, 0x55, 0x9e, 0x4b, 0xaa, 0xf2, + 0x54, 0x84, 0x3b, 0x9e, 0x30, 0x9d, 0x0f, 0x03, 0xfb, 0x38, 0x1f, 0x76, 0x54, 0x74, 0x21, 0xf7, + 0xe2, 0xbe, 0x98, 0xcb, 0x00, 0xf4, 0x14, 0x4a, 0xf8, 0xe5, 0x54, 0x28, 0xe1, 0x10, 0xeb, 0xc0, + 0xcd, 0x7c, 0x3a, 0x70, 0xf0, 0xb8, 0xc1, 0xfb, 0x19, 0x07, 0xf8, 0x3f, 0x2d, 0x90, 0xdf, 0x75, + 0xc6, 0xa9, 0x6d, 0x10, 0x3a, 0x65, 0xd0, 0x07, 0x60, 0x58, 0x6d, 0xa1, 0x67, 0x82, 0xb6, 0xcf, + 0x43, 0x00, 0x8b, 0xfa, 0x50, 0x18, 0x27, 0xa0, 0x38, 0x85, 0x8d, 0x26, 0xa1, 0x4a, 0xc7, 0x89, + 0x3f, 0xca, 0x75, 0xad, 0xda, 0xa6, 0x4f, 0x2d, 0xcf, 0x8b, 0xa7, 0x34, 0x0e, 0x0a, 0x60, 0xd4, + 0x73, 0xa2, 0x98, 0xf5, 0x80, 0xee, 0xa8, 0x0f, 0x59, 0x05, 0x82, 0x25, 0x53, 0x2c, 0xa4, 0x09, + 0xe1, 0x4e, 0xda, 0xf6, 0x77, 0x4a, 0x30, 0x94, 0x90, 0x8c, 0x07, 0x54, 0xd2, 0x4f, 0x41, 0x45, + 0xea, 0xcd, 0x74, 0xb9, 0x1b, 0xa5, 0x5c, 0x15, 0x06, 0x55, 0x5a, 0x6b, 0x5a, 0xab, 0xa6, 0x8d, + 0x0a, 0x43, 0xe1, 0x62, 0x13, 0x8f, 0x09, 0xe5, 0xd8, 0x8b, 0x66, 0x3c, 0x97, 0xf8, 0x31, 0xef, + 0x66, 0x3e, 0x42, 0x79, 0x75, 0x61, 0xc5, 0x24, 0xaa, 0x85, 0x72, 0x0a, 0x80, 0xd3, 0xec, 0xd1, + 0x67, 0x2d, 0x18, 0x72, 0xee, 0x44, 0xba, 0x30, 0xad, 0x08, 0x1a, 0x3c, 0xa2, 0x92, 0x4a, 0xd4, + 0xba, 0xe5, 0x2e, 0xdf, 0x44, 0x13, 0x4e, 0x32, 0x45, 0x6f, 0x5a, 0x80, 0xc8, 0x36, 0xa9, 0xc9, + 0xb0, 0x46, 0xd1, 0x97, 0xbe, 0x3c, 0x76, 0x9a, 0x97, 0x3a, 0xe8, 0x72, 0xa9, 0xde, 0xd9, 0x8e, + 0x33, 0xfa, 0x60, 0xff, 0xa3, 0xa2, 0x5a, 0x50, 0x3a, 0x92, 0xd6, 0x31, 0x22, 0xfa, 0xac, 0xc3, + 0x47, 0xf4, 0xe9, 0x88, 0x84, 0xce, 0xe4, 0xd2, 0x44, 0x2e, 0x5a, 0xe1, 0x3e, 0xe5, 0xa2, 0xfd, + 0xac, 0x95, 0x28, 0xec, 0x34, 0x70, 0xf1, 0xa5, 0x7c, 0xa3, 0x78, 0x27, 0x78, 0xb4, 0x44, 0x4a, + 0xba, 0x27, 0x83, 0x64, 0xa8, 0x34, 0x35, 0xd0, 0x0e, 0x24, 0x0d, 0xff, 0xb8, 0x08, 0x03, 0x86, + 0x26, 0xcd, 0x34, 0x8b, 0xac, 0x07, 0xcc, 0x2c, 0x2a, 0x1c, 0xc0, 0x2c, 0xfa, 0x19, 0xa8, 0xd6, + 0xa4, 0x94, 0xcf, 0xa7, 0xb4, 0x71, 0x5a, 0x77, 0x68, 0x41, 0xaf, 0x9a, 0xb0, 0xe6, 0x89, 0xe6, + 0x12, 0x19, 0x4c, 0x42, 0x43, 0x94, 0x98, 0x86, 0xc8, 0x4a, 0x31, 0x12, 0x9a, 0xa2, 0xf3, 0x19, + 0x56, 0xff, 0xab, 0xe5, 0x8a, 0xf7, 0x92, 0xb1, 0xf6, 0xbc, 0xfe, 0xd7, 0xf2, 0xbc, 0x6c, 0xc6, + 0x26, 0x8e, 0xfd, 0x1d, 0x4b, 0x7d, 0xdc, 0x13, 0x28, 0x55, 0x71, 0x3b, 0x59, 0xaa, 0xe2, 0x52, + 0x2e, 0xc3, 0xdc, 0xa5, 0x46, 0xc5, 0x75, 0xe8, 0x9f, 0x09, 0x9a, 0x4d, 0xc7, 0xaf, 0xa3, 0x1f, + 0x81, 0xfe, 0x1a, 0xff, 0x29, 0x1c, 0x3b, 0xec, 0x78, 0x50, 0x40, 0xb1, 0x84, 0xa1, 0x47, 0xa0, + 0xe4, 0x84, 0x0d, 0xe9, 0xcc, 0x61, 0xc1, 0x35, 0x53, 0x61, 0x23, 0xc2, 0xac, 0xd5, 0xfe, 0x7b, + 0x25, 0x60, 0x67, 0xda, 0x4e, 0x48, 0xea, 0xab, 0x01, 0x2b, 0xad, 0x78, 0xac, 0x87, 0x6a, 0x7a, + 0xb3, 0xf4, 0x20, 0x1f, 0xac, 0x19, 0x87, 0x2b, 0xc5, 0x13, 0x3e, 0x5c, 0xe9, 0x72, 0x5e, 0x56, + 0x7a, 0x80, 0xce, 0xcb, 0xec, 0x2f, 0x59, 0x80, 0x54, 0x20, 0x84, 0x3e, 0xd0, 0x9e, 0x84, 0xaa, + 0x0a, 0x89, 0x10, 0x86, 0x95, 0x16, 0x11, 0x12, 0x80, 0x35, 0x4e, 0x0f, 0x3b, 0xe4, 0xc7, 0xa5, + 0xfc, 0x2e, 0x26, 0xe3, 0x72, 0x99, 0xd4, 0x17, 0xe2, 0xdc, 0xfe, 0xad, 0x02, 0x3c, 0xc4, 0x55, + 0xf2, 0xa2, 0xe3, 0x3b, 0x0d, 0xd2, 0xa4, 0xbd, 0xea, 0x35, 0x44, 0xa1, 0x46, 0xb7, 0x66, 0xae, + 0x8c, 0xb3, 0x3d, 0xea, 0xda, 0xe5, 0x6b, 0x8e, 0xaf, 0xb2, 0x79, 0xdf, 0x8d, 0x31, 0x23, 0x8e, + 0x22, 0xa8, 0xc8, 0xba, 0xff, 0x42, 0x16, 0xe7, 0xc4, 0x48, 0x89, 0x25, 0xa1, 0x37, 0x09, 0x56, + 0x8c, 0xa8, 0xe1, 0xea, 0x05, 0xb5, 0x4d, 0x4c, 0x5a, 0x01, 0x93, 0xbb, 0x46, 0x98, 0xe3, 0x82, + 0x68, 0xc7, 0x0a, 0xc3, 0x6e, 0xc2, 0x88, 0x1c, 0xc3, 0xd6, 0x35, 0xb2, 0x83, 0xc9, 0x3a, 0xd5, + 0x3f, 0x35, 0xd9, 0x64, 0x5c, 0x45, 0xa0, 0xf4, 0xcf, 0x8c, 0x09, 0xc4, 0x49, 0x5c, 0x59, 0x44, + 0xb2, 0x90, 0x5d, 0x44, 0xd2, 0xfe, 0x2d, 0x0b, 0xd2, 0x0a, 0xd0, 0x28, 0x99, 0x67, 0xed, 0x59, + 0x32, 0xef, 0x00, 0x45, 0xe7, 0x7e, 0x0a, 0x06, 0x9c, 0x98, 0xda, 0x2c, 0x7c, 0x97, 0x5f, 0x3c, + 0xdc, 0x29, 0xca, 0x62, 0x50, 0x77, 0xd7, 0x5d, 0xb6, 0xbb, 0x37, 0xc9, 0xd9, 0xff, 0xbd, 0x04, + 0xa3, 0x1d, 0x49, 0x30, 0xe8, 0x79, 0x18, 0x54, 0x43, 0x21, 0xfd, 0x67, 0x55, 0x33, 0x0a, 0x4f, + 0xc3, 0x70, 0x02, 0xb3, 0x87, 0xf5, 0x30, 0x0f, 0xa7, 0x43, 0xf2, 0x6a, 0x9b, 0xb4, 0xc9, 0xd4, + 0x7a, 0x4c, 0xc2, 0x15, 0x52, 0x0b, 0xfc, 0x3a, 0x2f, 0xec, 0x58, 0x9c, 0x7e, 0xf8, 0xee, 0xee, + 0xf8, 0x69, 0xdc, 0x09, 0xc6, 0x59, 0xcf, 0xa0, 0x16, 0x0c, 0x79, 0xa6, 0xc9, 0x29, 0xf6, 0x1b, + 0x87, 0xb2, 0x56, 0xd5, 0x94, 0x48, 0x34, 0xe3, 0x24, 0x83, 0xa4, 0xdd, 0x5a, 0xbe, 0x4f, 0x76, + 0xeb, 0x67, 0xb4, 0xdd, 0xca, 0x8f, 0xfb, 0x3f, 0x92, 0x73, 0x12, 0xd4, 0x71, 0x1b, 0xae, 0x2f, + 0x42, 0x45, 0x86, 0x42, 0xf5, 0x14, 0x42, 0x64, 0xd2, 0xe9, 0x22, 0x40, 0x9f, 0x80, 0x1f, 0xbe, + 0x14, 0x86, 0xc6, 0x60, 0x5e, 0x0f, 0xe2, 0x29, 0xcf, 0x0b, 0xee, 0x50, 0x9b, 0xe0, 0x46, 0x44, + 0x84, 0x43, 0xc7, 0xbe, 0x57, 0x80, 0x8c, 0xbd, 0x11, 0x5d, 0x8f, 0xda, 0x10, 0x49, 0xac, 0xc7, + 0x83, 0x19, 0x23, 0x68, 0x9b, 0x87, 0x8b, 0x71, 0x95, 0xfb, 0xe1, 0xbc, 0xf7, 0x76, 0x3a, 0x82, + 0x4c, 0x89, 0x23, 0x15, 0x45, 0x76, 0x11, 0x40, 0xdb, 0x8f, 0x22, 0x32, 0x5f, 0x9d, 0x46, 0x6b, + 0x33, 0x13, 0x1b, 0x58, 0x74, 0xab, 0xef, 0xfa, 0x51, 0xec, 0x78, 0xde, 0x15, 0xd7, 0x8f, 0x85, + 0xcf, 0x52, 0xd9, 0x16, 0xf3, 0x1a, 0x84, 0x4d, 0xbc, 0xf3, 0xef, 0x35, 0xbe, 0xdf, 0x41, 0xbe, + 0xfb, 0x06, 0x9c, 0x9b, 0x73, 0x63, 0x95, 0x4f, 0xa2, 0xe6, 0x1b, 0x35, 0x0f, 0x55, 0x7e, 0x94, + 0xd5, 0x35, 0x3f, 0xca, 0xc8, 0xe7, 0x28, 0x24, 0xd3, 0x4f, 0xd2, 0xf9, 0x1c, 0xf6, 0xf3, 0x70, + 0x66, 0xce, 0x8d, 0x2f, 0xbb, 0x1e, 0x39, 0x20, 0x13, 0xfb, 0x37, 0xfb, 0x60, 0xd0, 0xcc, 0x8c, + 0x3c, 0x48, 0x8a, 0xd7, 0x57, 0xa8, 0x05, 0x28, 0xde, 0xce, 0x55, 0x67, 0x79, 0xb7, 0x8e, 0x9c, + 0xa6, 0x99, 0x3d, 0x62, 0x86, 0x11, 0xa8, 0x79, 0x62, 0xb3, 0x03, 0xe8, 0x0e, 0x94, 0xd7, 0x59, + 0xbe, 0x41, 0x31, 0x8f, 0x80, 0x87, 0xac, 0x11, 0xd5, 0xcb, 0x91, 0x67, 0x2c, 0x70, 0x7e, 0x54, + 0x71, 0x87, 0xc9, 0x24, 0x36, 0x23, 0x46, 0x56, 0xa4, 0xaf, 0x29, 0x8c, 0x6e, 0x2a, 0xa1, 0x7c, + 0x08, 0x95, 0x90, 0x10, 0xd0, 0x7d, 0xf7, 0x49, 0x40, 0xb3, 0xdc, 0x91, 0x78, 0x83, 0x99, 0x95, + 0x22, 0xa8, 0xbf, 0x9f, 0x0d, 0x82, 0x91, 0x3b, 0x92, 0x00, 0xe3, 0x34, 0x3e, 0xfa, 0xa4, 0x12, + 0xf1, 0x95, 0x3c, 0xdc, 0xbd, 0xe6, 0x8c, 0x3e, 0x6e, 0xe9, 0xfe, 0xa5, 0x02, 0x0c, 0xcf, 0xf9, + 0xed, 0xe5, 0xb9, 0xe5, 0xf6, 0x9a, 0xe7, 0xd6, 0xae, 0x91, 0x1d, 0x2a, 0xc2, 0x37, 0xc9, 0xce, + 0xfc, 0xac, 0x58, 0x41, 0x6a, 0xce, 0x5c, 0xa3, 0x8d, 0x98, 0xc3, 0xa8, 0x30, 0x5a, 0x77, 0xfd, + 0x06, 0x09, 0x5b, 0xa1, 0x2b, 0x3c, 0xb1, 0x86, 0x30, 0xba, 0xac, 0x41, 0xd8, 0xc4, 0xa3, 0xb4, + 0x83, 0x3b, 0x3e, 0x09, 0xd3, 0xf6, 0xf5, 0x12, 0x6d, 0xc4, 0x1c, 0x46, 0x91, 0xe2, 0xb0, 0x1d, + 0xc5, 0x62, 0x32, 0x2a, 0xa4, 0x55, 0xda, 0x88, 0x39, 0x8c, 0xae, 0xf4, 0xa8, 0xbd, 0xc6, 0xe2, + 0x49, 0x52, 0x19, 0x04, 0x2b, 0xbc, 0x19, 0x4b, 0x38, 0x45, 0xdd, 0x24, 0x3b, 0xb3, 0x74, 0x33, + 0x9e, 0x4a, 0x24, 0xba, 0xc6, 0x9b, 0xb1, 0x84, 0xb3, 0xd2, 0x93, 0xc9, 0xe1, 0xf8, 0xbe, 0x2b, + 0x3d, 0x99, 0xec, 0x7e, 0x97, 0x6d, 0xfd, 0x2f, 0x5b, 0x30, 0x68, 0x46, 0x81, 0xa1, 0x46, 0xca, + 0x16, 0x5e, 0xea, 0xa8, 0x5c, 0xfc, 0xfe, 0xac, 0x5b, 0xe3, 0x1a, 0x6e, 0x1c, 0xb4, 0xa2, 0xa7, + 0x89, 0xdf, 0x70, 0x7d, 0xc2, 0x0e, 0xf7, 0x79, 0xf4, 0x58, 0x22, 0xc4, 0x6c, 0x26, 0xa8, 0x93, + 0x43, 0x18, 0xd3, 0xf6, 0x2d, 0x18, 0xed, 0xc8, 0x1e, 0xeb, 0xc1, 0x04, 0xd9, 0x37, 0x77, 0xd7, + 0xc6, 0x30, 0x40, 0x09, 0xcb, 0xf2, 0x47, 0x33, 0x30, 0xca, 0x17, 0x12, 0xe5, 0xb4, 0x52, 0xdb, + 0x20, 0x4d, 0x95, 0x11, 0xc8, 0xdc, 0xfe, 0x37, 0xd3, 0x40, 0xdc, 0x89, 0x6f, 0x7f, 0xd9, 0x82, + 0xa1, 0x44, 0x42, 0x5f, 0x4e, 0xc6, 0x12, 0x5b, 0x69, 0x01, 0x0b, 0x4a, 0x64, 0x91, 0xd9, 0x45, + 0xa6, 0x4c, 0xf5, 0x4a, 0xd3, 0x20, 0x6c, 0xe2, 0xd9, 0x6f, 0x14, 0xa0, 0x22, 0x03, 0x3b, 0x7a, + 0xe8, 0xca, 0x17, 0x2d, 0x18, 0x52, 0x47, 0x2d, 0xcc, 0x87, 0x57, 0xc8, 0x23, 0xfb, 0x82, 0xf6, + 0x40, 0x79, 0x01, 0xfc, 0xf5, 0x40, 0x5b, 0xee, 0xd8, 0x64, 0x86, 0x93, 0xbc, 0xd1, 0x4d, 0x80, + 0x68, 0x27, 0x8a, 0x49, 0xd3, 0xf0, 0x26, 0xda, 0xc6, 0x8a, 0x9b, 0xa8, 0x05, 0x21, 0xa1, 0xeb, + 0xeb, 0x7a, 0x50, 0x27, 0x2b, 0x0a, 0x53, 0x9b, 0x50, 0xba, 0x0d, 0x1b, 0x94, 0xec, 0xbf, 0x53, + 0x80, 0x53, 0xe9, 0x2e, 0xa1, 0x8f, 0xc0, 0xa0, 0xe4, 0x6e, 0xec, 0x3a, 0x65, 0x34, 0xcb, 0x20, + 0x36, 0x60, 0xf7, 0x76, 0xc7, 0xc7, 0x3b, 0x6f, 0x20, 0x9c, 0x30, 0x51, 0x70, 0x82, 0x18, 0x3f, + 0xef, 0x12, 0x07, 0xb3, 0xd3, 0x3b, 0x53, 0xad, 0x96, 0x38, 0xb4, 0x32, 0xce, 0xbb, 0x4c, 0x28, + 0x4e, 0x61, 0xa3, 0x65, 0x38, 0x63, 0xb4, 0x5c, 0x27, 0x6e, 0x63, 0x63, 0x2d, 0x08, 0xe5, 0x0e, + 0xec, 0x11, 0x1d, 0x6f, 0xd6, 0x89, 0x83, 0x33, 0x9f, 0xa4, 0xda, 0xbe, 0xe6, 0xb4, 0x9c, 0x9a, + 0x1b, 0xef, 0x08, 0xf7, 0xa8, 0x92, 0x4d, 0x33, 0xa2, 0x1d, 0x2b, 0x0c, 0x7b, 0x11, 0x4a, 0x3d, + 0xce, 0xa0, 0x9e, 0x2c, 0xff, 0x17, 0xa1, 0x42, 0xc9, 0x49, 0xf3, 0x2e, 0x0f, 0x92, 0x01, 0x54, + 0xe4, 0xc5, 0x34, 0xc8, 0x86, 0xa2, 0xeb, 0xc8, 0x23, 0x45, 0xf5, 0x5a, 0xf3, 0x51, 0xd4, 0x66, + 0x9b, 0x69, 0x0a, 0x44, 0x8f, 0x43, 0x91, 0x6c, 0xb7, 0xd2, 0x67, 0x87, 0x97, 0xb6, 0x5b, 0x6e, + 0x48, 0x22, 0x8a, 0x44, 0xb6, 0x5b, 0xe8, 0x3c, 0x14, 0xdc, 0xba, 0x50, 0x52, 0x20, 0x70, 0x0a, + 0xf3, 0xb3, 0xb8, 0xe0, 0xd6, 0xed, 0x6d, 0xa8, 0xaa, 0x9b, 0x70, 0xd0, 0xa6, 0x94, 0xdd, 0x56, + 0x1e, 0x91, 0x58, 0x92, 0x6e, 0x17, 0xa9, 0xdd, 0x06, 0xd0, 0x99, 0x8d, 0x79, 0xc9, 0x97, 0x0b, + 0x50, 0xaa, 0x05, 0x22, 0xeb, 0xba, 0xa2, 0xc9, 0x30, 0xa1, 0xcd, 0x20, 0xf6, 0x2d, 0x18, 0xbe, + 0xe6, 0x07, 0x77, 0x58, 0x1d, 0x7e, 0x56, 0x76, 0x8e, 0x12, 0x5e, 0xa7, 0x3f, 0xd2, 0x26, 0x02, + 0x83, 0x62, 0x0e, 0x53, 0x05, 0xb1, 0x0a, 0xdd, 0x0a, 0x62, 0xd9, 0x9f, 0xb2, 0x60, 0x50, 0xa5, + 0x48, 0xcd, 0x6d, 0x6d, 0x52, 0xba, 0x8d, 0x30, 0x68, 0xb7, 0xd2, 0x74, 0xd9, 0x5d, 0x55, 0x98, + 0xc3, 0xcc, 0xdc, 0xc1, 0xc2, 0x3e, 0xb9, 0x83, 0x17, 0xa0, 0xb4, 0xe9, 0xfa, 0xf5, 0xf4, 0xe5, + 0x2b, 0xd7, 0x5c, 0xbf, 0x8e, 0x19, 0x84, 0x76, 0xe1, 0x94, 0xea, 0x82, 0x54, 0x08, 0xcf, 0xc3, + 0xe0, 0x5a, 0xdb, 0xf5, 0xea, 0xb2, 0x9e, 0x5e, 0xca, 0xa3, 0x32, 0x6d, 0xc0, 0x70, 0x02, 0x93, + 0xee, 0xeb, 0xd6, 0x5c, 0xdf, 0x09, 0x77, 0x96, 0xb5, 0x06, 0x52, 0x42, 0x69, 0x5a, 0x41, 0xb0, + 0x81, 0x65, 0xbf, 0x5e, 0x84, 0xe1, 0x64, 0xa2, 0x58, 0x0f, 0xdb, 0xab, 0xc7, 0xa1, 0xcc, 0x72, + 0xc7, 0xd2, 0x9f, 0x96, 0x97, 0xa0, 0xe3, 0x30, 0x14, 0x41, 0x1f, 0xaf, 0x3a, 0x91, 0xcf, 0xc5, + 0x45, 0xaa, 0x93, 0xca, 0x0f, 0xc3, 0xc2, 0xdc, 0x44, 0xa1, 0x0b, 0xc1, 0x0a, 0x7d, 0xd6, 0x82, + 0xfe, 0xa0, 0x65, 0x16, 0x52, 0xfa, 0x70, 0x9e, 0x49, 0x74, 0x22, 0x87, 0x47, 0x58, 0xc4, 0xea, + 0xd3, 0xcb, 0xcf, 0x21, 0x59, 0x9f, 0x7f, 0x1f, 0x0c, 0x9a, 0x98, 0xfb, 0x19, 0xc5, 0x15, 0xd3, + 0x28, 0xfe, 0xa2, 0x39, 0x29, 0x44, 0x9a, 0x60, 0x0f, 0xcb, 0xed, 0x06, 0x94, 0x6b, 0x2a, 0x2e, + 0xe1, 0x50, 0x55, 0x58, 0x55, 0x19, 0x08, 0x76, 0x36, 0xc5, 0xa9, 0xd9, 0xdf, 0xb1, 0x8c, 0xf9, + 0x81, 0x49, 0x34, 0x5f, 0x47, 0x21, 0x14, 0x1b, 0x5b, 0x9b, 0xc2, 0x14, 0xbd, 0x9a, 0xd3, 0xf0, + 0xce, 0x6d, 0x6d, 0xea, 0x39, 0x6e, 0xb6, 0x62, 0xca, 0xac, 0x07, 0x67, 0x61, 0x22, 0x9b, 0xb4, + 0xb8, 0x7f, 0x36, 0xa9, 0xfd, 0x66, 0x01, 0x46, 0x3b, 0x26, 0x15, 0x7a, 0x0d, 0xca, 0x21, 0x7d, + 0x4b, 0xf1, 0x7a, 0x0b, 0xb9, 0xe5, 0x7f, 0x46, 0xf3, 0x75, 0xad, 0x77, 0x93, 0xed, 0x98, 0xb3, + 0x44, 0x57, 0x01, 0xe9, 0xe8, 0x19, 0xe5, 0xa9, 0xe4, 0xaf, 0x7c, 0x5e, 0x3c, 0x8a, 0xa6, 0x3a, + 0x30, 0x70, 0xc6, 0x53, 0xe8, 0x85, 0xb4, 0xc3, 0xb3, 0x98, 0x74, 0x67, 0xef, 0xe5, 0xbb, 0xb4, + 0xff, 0x71, 0x01, 0x86, 0x12, 0x75, 0xad, 0x90, 0x07, 0x15, 0xe2, 0xb1, 0xb3, 0x06, 0xa9, 0x6c, + 0x8e, 0x5a, 0xa5, 0x5a, 0x29, 0xc8, 0x4b, 0x82, 0x2e, 0x56, 0x1c, 0x1e, 0x8c, 0x33, 0xff, 0xe7, + 0x61, 0x50, 0x76, 0xe8, 0xc3, 0x4e, 0xd3, 0x13, 0x03, 0xa8, 0xe6, 0xe8, 0x25, 0x03, 0x86, 0x13, + 0x98, 0xf6, 0x6f, 0x17, 0x61, 0x8c, 0x1f, 0xce, 0xd4, 0xd5, 0xcc, 0x5b, 0x94, 0xfb, 0xad, 0xbf, + 0xa0, 0xab, 0xcf, 0xf1, 0x81, 0x5c, 0x3b, 0xea, 0xa5, 0x10, 0xd9, 0x8c, 0x7a, 0x0a, 0x18, 0xfb, + 0x46, 0x2a, 0x60, 0x8c, 0x9b, 0xdd, 0x8d, 0x63, 0xea, 0xd1, 0xf7, 0x57, 0x04, 0xd9, 0xdf, 0x2a, + 0xc0, 0x48, 0xea, 0xc6, 0x0d, 0xf4, 0x7a, 0xb2, 0x48, 0xb3, 0x95, 0x87, 0x4f, 0x7d, 0xcf, 0x4b, + 0x18, 0x0e, 0x56, 0xaa, 0xf9, 0x3e, 0x2d, 0x15, 0xfb, 0x0f, 0x0a, 0x30, 0x9c, 0xbc, 0x2a, 0xe4, + 0x01, 0x1c, 0xa9, 0x77, 0x43, 0x95, 0x55, 0xc3, 0x67, 0x37, 0xa8, 0x72, 0x97, 0x3c, 0x2f, 0x3c, + 0x2e, 0x1b, 0xb1, 0x86, 0x3f, 0x10, 0x15, 0xb0, 0xed, 0xbf, 0x6d, 0xc1, 0x59, 0xfe, 0x96, 0xe9, + 0x79, 0xf8, 0x17, 0xb3, 0x46, 0xf7, 0xe5, 0x7c, 0x3b, 0x98, 0xaa, 0x9a, 0xb8, 0xdf, 0xf8, 0xb2, + 0x9b, 0x1b, 0x45, 0x6f, 0x93, 0x53, 0xe1, 0x01, 0xec, 0xec, 0x81, 0x26, 0x83, 0xfd, 0x07, 0x45, + 0xd0, 0x97, 0x55, 0x22, 0x57, 0xa4, 0x5e, 0xe6, 0x52, 0x3d, 0x72, 0x65, 0xc7, 0xaf, 0xe9, 0x6b, + 0x31, 0x2b, 0xa9, 0xcc, 0xcb, 0x9f, 0xb3, 0x60, 0xc0, 0xf5, 0xdd, 0xd8, 0x75, 0xd8, 0x36, 0x3a, + 0x9f, 0x8b, 0xf4, 0x14, 0xbb, 0x79, 0x4e, 0x39, 0x08, 0xcd, 0x73, 0x1c, 0xc5, 0x0c, 0x9b, 0x9c, + 0xd1, 0xc7, 0x44, 0x4c, 0x77, 0x31, 0xb7, 0xa4, 0xe1, 0x4a, 0x2a, 0x90, 0xbb, 0x45, 0x0d, 0xaf, + 0x38, 0xcc, 0x29, 0xd7, 0x1e, 0x53, 0x52, 0xaa, 0x10, 0xb1, 0xbe, 0x36, 0x9c, 0x36, 0x63, 0xce, + 0xc8, 0x8e, 0x00, 0x75, 0x8e, 0xc5, 0x01, 0xe3, 0x65, 0x27, 0xa1, 0xea, 0xb4, 0xe3, 0xa0, 0x49, + 0x87, 0x49, 0x1c, 0x35, 0xe9, 0x88, 0x60, 0x09, 0xc0, 0x1a, 0xc7, 0x7e, 0xbd, 0x0c, 0xa9, 0x5c, + 0x48, 0xb4, 0x6d, 0x5e, 0xb4, 0x6a, 0xe5, 0x7b, 0xd1, 0xaa, 0xea, 0x4c, 0xd6, 0x65, 0xab, 0xa8, + 0x01, 0xe5, 0xd6, 0x86, 0x13, 0x49, 0xb3, 0xfa, 0x45, 0xb5, 0x8f, 0xa3, 0x8d, 0xf7, 0x76, 0xc7, + 0x7f, 0xb2, 0x37, 0xaf, 0x2b, 0x9d, 0xab, 0x93, 0xbc, 0xaa, 0x8a, 0x66, 0xcd, 0x68, 0x60, 0x4e, + 0xff, 0x20, 0x57, 0x09, 0x7e, 0x5a, 0x94, 0xfd, 0xc7, 0x24, 0x6a, 0x7b, 0xb1, 0x98, 0x0d, 0x2f, + 0xe6, 0xb8, 0xca, 0x38, 0x61, 0x9d, 0xc5, 0xcf, 0xff, 0x63, 0x83, 0x29, 0xfa, 0x08, 0x54, 0xa3, + 0xd8, 0x09, 0xe3, 0x43, 0xe6, 0xdd, 0xaa, 0x41, 0x5f, 0x91, 0x44, 0xb0, 0xa6, 0x87, 0x5e, 0x62, + 0xc5, 0x74, 0xdd, 0x68, 0xe3, 0x90, 0xa9, 0x18, 0xb2, 0xf0, 0xae, 0xa0, 0x80, 0x0d, 0x6a, 0xe8, + 0x22, 0x00, 0x9b, 0xdb, 0x3c, 0xfe, 0xb0, 0xc2, 0xbc, 0x4c, 0x4a, 0x14, 0x62, 0x05, 0xc1, 0x06, + 0x96, 0xfd, 0x63, 0x90, 0x2c, 0x43, 0x81, 0xc6, 0x65, 0xd5, 0x0b, 0xee, 0x85, 0x66, 0x29, 0x15, + 0x89, 0x02, 0x15, 0xbf, 0x6e, 0x81, 0x59, 0x2b, 0x03, 0xbd, 0xca, 0x8b, 0x72, 0x58, 0x79, 0x9c, + 0x1c, 0x1a, 0x74, 0x27, 0x16, 0x9d, 0x56, 0xea, 0x08, 0x5b, 0x56, 0xe6, 0x38, 0xff, 0x5e, 0xa8, + 0x48, 0xe8, 0x81, 0x8c, 0xba, 0x4f, 0xc2, 0xe9, 0xf4, 0x35, 0xf4, 0xe2, 0xd4, 0x69, 0x7f, 0xd7, + 0x8f, 0xf4, 0xe7, 0x14, 0xba, 0xf9, 0x73, 0x7a, 0xb8, 0x6e, 0xf7, 0x37, 0x2c, 0xb8, 0xb0, 0xdf, + 0x6d, 0xf9, 0xe8, 0x11, 0x28, 0xdd, 0x71, 0x42, 0x59, 0xe5, 0x9c, 0x09, 0xca, 0x5b, 0x4e, 0xe8, + 0x63, 0xd6, 0x8a, 0x76, 0xa0, 0x8f, 0x07, 0xa9, 0x09, 0x6b, 0xfd, 0xc5, 0x7c, 0xef, 0xee, 0xbf, + 0x46, 0x8c, 0xed, 0x02, 0x0f, 0x90, 0xc3, 0x82, 0xa1, 0xfd, 0x5d, 0x0b, 0xd0, 0xd2, 0x16, 0x09, + 0x43, 0xb7, 0x6e, 0x84, 0xd5, 0xb1, 0xeb, 0x73, 0x8c, 0x6b, 0x72, 0xcc, 0xcc, 0xdb, 0xd4, 0xf5, + 0x39, 0xc6, 0xbf, 0xec, 0xeb, 0x73, 0x0a, 0x07, 0xbb, 0x3e, 0x07, 0x2d, 0xc1, 0xd9, 0x26, 0xdf, + 0x6e, 0xf0, 0x2b, 0x29, 0xf8, 0xde, 0x43, 0xe5, 0xb9, 0x9d, 0xbb, 0xbb, 0x3b, 0x7e, 0x76, 0x31, + 0x0b, 0x01, 0x67, 0x3f, 0x67, 0xbf, 0x17, 0x10, 0x8f, 0xa6, 0x9b, 0xc9, 0x8a, 0x55, 0xea, 0xea, + 0x7e, 0xb1, 0xbf, 0x5e, 0x86, 0x91, 0x54, 0x0d, 0x5c, 0xba, 0xd5, 0xeb, 0x0c, 0x8e, 0x3a, 0xb2, + 0xfe, 0xee, 0xec, 0x5e, 0x4f, 0xe1, 0x56, 0x3e, 0x94, 0x5d, 0xbf, 0xd5, 0x8e, 0xf3, 0x49, 0x6d, + 0xe5, 0x9d, 0x98, 0xa7, 0x04, 0x0d, 0x77, 0x31, 0xfd, 0x8b, 0x39, 0x9b, 0x3c, 0x83, 0xb7, 0x12, + 0xc6, 0x78, 0xe9, 0x3e, 0xb9, 0x03, 0x3e, 0xad, 0x43, 0xa9, 0xca, 0x79, 0x38, 0x16, 0x53, 0x93, + 0xe5, 0xb8, 0x8f, 0xda, 0x7f, 0xad, 0x00, 0x03, 0xc6, 0x47, 0x43, 0xbf, 0x94, 0xac, 0x24, 0x65, + 0xe5, 0xf7, 0x4a, 0x8c, 0xfe, 0x84, 0xae, 0x15, 0xc5, 0x5f, 0xe9, 0x89, 0xce, 0x22, 0x52, 0xf7, + 0x76, 0xc7, 0x4f, 0xa5, 0xca, 0x44, 0x25, 0x0a, 0x4b, 0x9d, 0xff, 0x04, 0x8c, 0xa4, 0xc8, 0x64, + 0xbc, 0xf2, 0xaa, 0xf9, 0xca, 0x47, 0x76, 0x4b, 0x99, 0x43, 0xf6, 0x16, 0x1d, 0x32, 0x91, 0xdd, + 0x17, 0x78, 0xa4, 0x07, 0x1f, 0x6c, 0x2a, 0x89, 0xb7, 0xd0, 0x63, 0x12, 0xef, 0x93, 0x50, 0x69, + 0x05, 0x9e, 0x5b, 0x73, 0x55, 0xb9, 0x45, 0x96, 0x36, 0xbc, 0x2c, 0xda, 0xb0, 0x82, 0xa2, 0x3b, + 0x50, 0xbd, 0x7d, 0x27, 0xe6, 0xa7, 0x3f, 0xc2, 0xbf, 0x9d, 0xd7, 0xa1, 0x8f, 0x32, 0x5a, 0xd4, + 0xf1, 0x12, 0xd6, 0xbc, 0x90, 0x0d, 0x7d, 0x4c, 0x09, 0xca, 0x8c, 0x04, 0xe6, 0x7b, 0x67, 0xda, + 0x31, 0xc2, 0x02, 0x62, 0x7f, 0xab, 0x0a, 0x67, 0xb2, 0x0a, 0x91, 0xa3, 0x8f, 0x43, 0x1f, 0xef, + 0x63, 0x3e, 0x77, 0x5d, 0x64, 0xf1, 0x98, 0x63, 0x04, 0x45, 0xb7, 0xd8, 0x6f, 0x2c, 0x78, 0x0a, + 0xee, 0x9e, 0xb3, 0x26, 0x66, 0xc8, 0xf1, 0x70, 0x5f, 0x70, 0x34, 0xf7, 0x05, 0x87, 0x73, 0xf7, + 0x9c, 0x35, 0xb4, 0x0d, 0xe5, 0x86, 0x1b, 0x13, 0x47, 0x38, 0x11, 0x6e, 0x1d, 0x0b, 0x73, 0xe2, + 0x70, 0x2b, 0x8d, 0xfd, 0xc4, 0x9c, 0x21, 0xfa, 0xa6, 0x05, 0x23, 0x6b, 0xc9, 0x8c, 0x7d, 0x21, + 0x3c, 0x9d, 0x63, 0x28, 0x36, 0x9f, 0x64, 0xc4, 0xef, 0x8f, 0x4a, 0x35, 0xe2, 0x74, 0x77, 0xd0, + 0x67, 0x2c, 0xe8, 0x5f, 0x77, 0x3d, 0xa3, 0xde, 0xef, 0x31, 0x7c, 0x9c, 0xcb, 0x8c, 0x81, 0xde, + 0x71, 0xf0, 0xff, 0x11, 0x96, 0x9c, 0xbb, 0x69, 0xaa, 0xbe, 0xa3, 0x6a, 0xaa, 0xfe, 0xfb, 0xa4, + 0xa9, 0xbe, 0x60, 0x41, 0x55, 0x8d, 0xb4, 0xc8, 0xc2, 0xfe, 0xc8, 0x31, 0x7e, 0x72, 0xee, 0x39, + 0x51, 0x7f, 0xb1, 0x66, 0x8e, 0xbe, 0x6a, 0xc1, 0x80, 0xf3, 0x5a, 0x3b, 0x24, 0x75, 0xb2, 0x15, + 0xb4, 0x22, 0x71, 0xf9, 0xe4, 0xcb, 0xf9, 0x77, 0x66, 0x8a, 0x32, 0x99, 0x25, 0x5b, 0x4b, 0xad, + 0x48, 0x64, 0x4b, 0xe9, 0x06, 0x6c, 0x76, 0xc1, 0xde, 0x2d, 0xc0, 0xf8, 0x3e, 0x14, 0xd0, 0xf3, + 0x30, 0x18, 0x84, 0x0d, 0xc7, 0x77, 0x5f, 0x33, 0x4b, 0x70, 0x28, 0x2b, 0x6b, 0xc9, 0x80, 0xe1, + 0x04, 0xa6, 0x99, 0x27, 0x5e, 0xd8, 0x27, 0x4f, 0xfc, 0x02, 0x94, 0x42, 0xd2, 0x0a, 0xd2, 0x9b, + 0x05, 0x96, 0xa9, 0xc0, 0x20, 0xe8, 0x51, 0x28, 0x3a, 0x2d, 0x57, 0x04, 0xa2, 0xa9, 0x3d, 0xd0, + 0xd4, 0xf2, 0x3c, 0xa6, 0xed, 0x89, 0xb2, 0x15, 0xe5, 0x13, 0x29, 0x5b, 0x41, 0xd5, 0x80, 0x38, + 0xbb, 0xe8, 0xd3, 0x6a, 0x20, 0x79, 0xa6, 0x60, 0xbf, 0x59, 0x84, 0x47, 0xf7, 0x9c, 0x2f, 0x3a, + 0x0e, 0xcf, 0xda, 0x23, 0x0e, 0x4f, 0x0e, 0x4f, 0x61, 0xbf, 0xe1, 0x29, 0x76, 0x19, 0x9e, 0xcf, + 0xd0, 0x65, 0x20, 0x4b, 0x97, 0xe4, 0x73, 0x7d, 0x60, 0xb7, 0x4a, 0x28, 0x62, 0x05, 0x48, 0x28, + 0xd6, 0x7c, 0xe9, 0x1e, 0x20, 0x91, 0x23, 0x5d, 0xce, 0x43, 0x0d, 0x74, 0x2d, 0x65, 0xc2, 0xe7, + 0x7e, 0xb7, 0xc4, 0x6b, 0xfb, 0x8f, 0x8b, 0xf0, 0x78, 0x0f, 0xd2, 0xdb, 0x9c, 0xc5, 0x56, 0x8f, + 0xb3, 0xf8, 0xfb, 0xfc, 0x33, 0x3d, 0x05, 0x15, 0xd7, 0x8f, 0x48, 0xad, 0x1d, 0xf2, 0x88, 0x4e, + 0x23, 0x7d, 0x68, 0x5e, 0xb4, 0x63, 0x85, 0x81, 0xde, 0xb0, 0x60, 0xb4, 0xe6, 0xa4, 0x32, 0x88, + 0x84, 0xa3, 0xe8, 0xe8, 0x09, 0xb4, 0x26, 0x51, 0xbe, 0x15, 0x9e, 0x99, 0x4a, 0x35, 0xe3, 0x4e, + 0xf6, 0xf6, 0x5f, 0xb2, 0xe0, 0x7c, 0x77, 0xfd, 0x87, 0x9e, 0x81, 0x81, 0xb5, 0xd0, 0xf1, 0x6b, + 0x1b, 0xec, 0x56, 0x57, 0xf9, 0x5d, 0xd9, 0x74, 0xd1, 0xcd, 0xd8, 0xc4, 0xa1, 0x3b, 0x74, 0x1e, + 0x56, 0x61, 0x60, 0xc8, 0xb4, 0x5c, 0xda, 0xad, 0xd5, 0x34, 0x10, 0x77, 0xe2, 0xdb, 0x9f, 0x2f, + 0x65, 0x77, 0x8b, 0xdb, 0x49, 0x07, 0x99, 0x6a, 0x62, 0x22, 0x15, 0x7a, 0x10, 0x87, 0xc5, 0x93, + 0x16, 0x87, 0xa5, 0x6e, 0xe2, 0x10, 0xcd, 0xc2, 0x29, 0xe3, 0xda, 0x1d, 0x9e, 0x6a, 0xcd, 0x63, + 0x86, 0x55, 0xfd, 0x91, 0xe5, 0x14, 0x1c, 0x77, 0x3c, 0x91, 0x98, 0x9f, 0x7d, 0x87, 0x9c, 0x9f, + 0xfd, 0xf7, 0x77, 0x7e, 0xfe, 0x72, 0x01, 0xce, 0x75, 0xb5, 0x5f, 0x4f, 0x48, 0x27, 0x98, 0x73, + 0xa4, 0x74, 0x32, 0x73, 0xe4, 0x40, 0x92, 0xc5, 0xfe, 0xc3, 0x42, 0xd7, 0xd5, 0x42, 0xf7, 0x32, + 0x3f, 0xb0, 0xa3, 0xf4, 0x02, 0x0c, 0x39, 0xad, 0x16, 0xc7, 0x63, 0x71, 0xb0, 0xa9, 0xa2, 0x48, + 0x53, 0x26, 0x10, 0x27, 0x71, 0x7b, 0xb2, 0x4a, 0xfe, 0xc4, 0x82, 0x2a, 0x26, 0xeb, 0x5c, 0x64, + 0xa1, 0xdb, 0x62, 0x88, 0xac, 0x3c, 0xca, 0xa7, 0xd2, 0x81, 0x8d, 0x5c, 0x56, 0x56, 0x34, 0x6b, + 0xb0, 0x3b, 0xef, 0x6a, 0x2a, 0x1c, 0xe8, 0xae, 0x26, 0x75, 0x5b, 0x4f, 0xb1, 0xfb, 0x6d, 0x3d, + 0xf6, 0x5b, 0xfd, 0xf4, 0xf5, 0x5a, 0xc1, 0x4c, 0x48, 0xea, 0x11, 0xfd, 0xbe, 0xed, 0xd0, 0x13, + 0x93, 0x44, 0x7d, 0xdf, 0x1b, 0x78, 0x01, 0xd3, 0xf6, 0xc4, 0x11, 0x57, 0xe1, 0x40, 0x25, 0x61, + 0x8a, 0xfb, 0x96, 0x84, 0x79, 0x01, 0x86, 0xa2, 0x68, 0x63, 0x39, 0x74, 0xb7, 0x9c, 0x98, 0x5c, + 0x23, 0x3b, 0xc2, 0x7a, 0xd5, 0x65, 0x1c, 0x56, 0xae, 0x68, 0x20, 0x4e, 0xe2, 0xa2, 0x39, 0x18, + 0xd5, 0x85, 0x59, 0x48, 0x18, 0xb3, 0xac, 0x09, 0x3e, 0x13, 0x54, 0xce, 0xb6, 0x2e, 0xe5, 0x22, + 0x10, 0x70, 0xe7, 0x33, 0x54, 0xe8, 0x26, 0x1a, 0x69, 0x47, 0xfa, 0x92, 0x42, 0x37, 0x41, 0x87, + 0xf6, 0xa5, 0xe3, 0x09, 0xb4, 0x08, 0xa7, 0xf9, 0xc4, 0x98, 0x6a, 0xb5, 0x8c, 0x37, 0xea, 0x4f, + 0x96, 0xad, 0x9c, 0xeb, 0x44, 0xc1, 0x59, 0xcf, 0xa1, 0xe7, 0x60, 0x40, 0x35, 0xcf, 0xcf, 0x8a, + 0xd3, 0x19, 0xe5, 0x1d, 0x52, 0x64, 0xe6, 0xeb, 0xd8, 0xc4, 0x43, 0x1f, 0x86, 0x87, 0xf5, 0x5f, + 0x9e, 0x5a, 0xc7, 0x8f, 0x2c, 0x67, 0x45, 0xcd, 0x2b, 0x75, 0x37, 0xcc, 0x5c, 0x26, 0x5a, 0x1d, + 0x77, 0x7b, 0x1e, 0xad, 0xc1, 0x79, 0x05, 0xba, 0xe4, 0xc7, 0x2c, 0x4f, 0x26, 0x22, 0xd3, 0x4e, + 0x44, 0x6e, 0x84, 0x9e, 0xb8, 0x63, 0x58, 0x5d, 0x1f, 0x3a, 0xe7, 0xc6, 0x57, 0xb2, 0x30, 0xf1, + 0x02, 0xde, 0x83, 0x0a, 0x9a, 0x84, 0x2a, 0xf1, 0x9d, 0x35, 0x8f, 0x2c, 0xcd, 0xcc, 0xb3, 0xda, + 0x59, 0xc6, 0x09, 0xe9, 0x25, 0x09, 0xc0, 0x1a, 0x47, 0x45, 0xee, 0x0e, 0x76, 0xbd, 0xca, 0x76, + 0x19, 0xce, 0x34, 0x6a, 0x2d, 0x6a, 0xd3, 0xb9, 0x35, 0x32, 0x55, 0x63, 0x81, 0x8a, 0xf4, 0xc3, + 0xf0, 0x7a, 0xa2, 0x2a, 0x2c, 0x7d, 0x6e, 0x66, 0xb9, 0x03, 0x07, 0x67, 0x3e, 0xc9, 0x02, 0x5a, + 0xc3, 0x60, 0x7b, 0x67, 0xec, 0x74, 0x2a, 0xa0, 0x95, 0x36, 0x62, 0x0e, 0x43, 0x57, 0x01, 0xb1, + 0x1c, 0x87, 0x2b, 0x71, 0xdc, 0x52, 0x46, 0xe4, 0xd8, 0x19, 0xf6, 0x4a, 0x2a, 0x3c, 0xef, 0x72, + 0x07, 0x06, 0xce, 0x78, 0xca, 0xfe, 0xb7, 0x16, 0x0c, 0xa9, 0xf5, 0x7a, 0x02, 0x59, 0x3e, 0x5e, + 0x32, 0xcb, 0x67, 0xee, 0xe8, 0x12, 0x8f, 0xf5, 0xbc, 0x4b, 0xa8, 0xf8, 0xe7, 0x06, 0x00, 0xb4, + 0x54, 0x54, 0x0a, 0xc9, 0xea, 0xaa, 0x90, 0x1e, 0x58, 0x89, 0x94, 0x55, 0x28, 0xa7, 0x7c, 0x7f, + 0x0b, 0xe5, 0xac, 0xc0, 0x59, 0x69, 0x2e, 0xf0, 0x33, 0xb8, 0x2b, 0x41, 0xa4, 0x04, 0x5c, 0x65, + 0xfa, 0x51, 0x41, 0xe8, 0xec, 0x7c, 0x16, 0x12, 0xce, 0x7e, 0x36, 0x61, 0xa5, 0xf4, 0xef, 0x6b, + 0x5f, 0xaa, 0x35, 0xbd, 0xb0, 0x2e, 0x2f, 0x81, 0x49, 0xad, 0xe9, 0x85, 0xcb, 0x2b, 0x58, 0xe3, + 0x64, 0x0b, 0xf6, 0x6a, 0x4e, 0x82, 0x1d, 0x0e, 0x2c, 0xd8, 0xa5, 0x88, 0x19, 0xe8, 0x2a, 0x62, + 0xa4, 0xaf, 0x7f, 0xb0, 0xab, 0xaf, 0xff, 0x03, 0x30, 0xec, 0xfa, 0x1b, 0x24, 0x74, 0x63, 0x52, + 0x67, 0x6b, 0x81, 0x89, 0x9f, 0x8a, 0x56, 0xeb, 0xf3, 0x09, 0x28, 0x4e, 0x61, 0x27, 0xe5, 0xe2, + 0x70, 0x0f, 0x72, 0xb1, 0x8b, 0x36, 0x1a, 0xc9, 0x47, 0x1b, 0x9d, 0x3a, 0xba, 0x36, 0x1a, 0x3d, + 0x56, 0x6d, 0x84, 0x72, 0xd1, 0x46, 0x3d, 0x09, 0x7a, 0x63, 0x4f, 0x7a, 0x66, 0x9f, 0x3d, 0x69, + 0x37, 0x55, 0x74, 0xf6, 0xd0, 0xaa, 0x28, 0x5b, 0xcb, 0x3c, 0x74, 0x28, 0x2d, 0xf3, 0x85, 0x02, + 0x9c, 0xd5, 0x72, 0x98, 0xce, 0x7e, 0x77, 0x9d, 0x4a, 0x22, 0x76, 0x8f, 0x18, 0x3f, 0x0f, 0x33, + 0x92, 0xce, 0x74, 0xfe, 0x9a, 0x82, 0x60, 0x03, 0x8b, 0xe5, 0x6e, 0x91, 0x90, 0x55, 0x4d, 0x4e, + 0x0b, 0xe9, 0x19, 0xd1, 0x8e, 0x15, 0x06, 0x9d, 0x5f, 0xf4, 0xb7, 0xc8, 0x87, 0x4d, 0xd7, 0x06, + 0x9c, 0xd1, 0x20, 0x6c, 0xe2, 0xa1, 0x27, 0x39, 0x13, 0x26, 0x20, 0xa8, 0xa0, 0x1e, 0x14, 0x17, + 0x1c, 0x4b, 0x99, 0xa0, 0xa0, 0xb2, 0x3b, 0x2c, 0x49, 0xaf, 0xdc, 0xd9, 0x1d, 0x16, 0x5a, 0xa6, + 0x30, 0xec, 0xff, 0x61, 0xc1, 0xb9, 0xcc, 0xa1, 0x38, 0x01, 0xe5, 0xbb, 0x9d, 0x54, 0xbe, 0x2b, + 0x79, 0x6d, 0x37, 0x8c, 0xb7, 0xe8, 0xa2, 0x88, 0xff, 0x8d, 0x05, 0xc3, 0x1a, 0xff, 0x04, 0x5e, + 0xd5, 0x4d, 0xbe, 0x6a, 0x7e, 0x3b, 0xab, 0x6a, 0xc7, 0xbb, 0xfd, 0x76, 0x01, 0x54, 0xbd, 0xce, + 0xa9, 0x9a, 0xac, 0x86, 0xbc, 0xcf, 0x09, 0xed, 0x0e, 0xf4, 0xb1, 0x03, 0xe6, 0x28, 0x9f, 0xe0, + 0x99, 0x24, 0x7f, 0x76, 0x58, 0xad, 0x0f, 0xef, 0xd9, 0xdf, 0x08, 0x0b, 0x86, 0xac, 0xa6, 0xb7, + 0x1b, 0x51, 0x69, 0x5e, 0x17, 0xe9, 0x6e, 0xba, 0xa6, 0xb7, 0x68, 0xc7, 0x0a, 0x83, 0xaa, 0x07, + 0xb7, 0x16, 0xf8, 0x33, 0x9e, 0x13, 0xc9, 0xcb, 0x33, 0x95, 0x7a, 0x98, 0x97, 0x00, 0xac, 0x71, + 0xd8, 0xd9, 0xb3, 0x1b, 0xb5, 0x3c, 0x67, 0xc7, 0xd8, 0x3f, 0x1b, 0x75, 0x1f, 0x14, 0x08, 0x9b, + 0x78, 0x76, 0x13, 0xc6, 0x92, 0x2f, 0x31, 0x4b, 0xd6, 0x59, 0xe0, 0x67, 0x4f, 0xc3, 0x39, 0x09, + 0x55, 0x87, 0x3d, 0xb5, 0xd0, 0x76, 0xd2, 0x77, 0xef, 0x4f, 0x49, 0x00, 0xd6, 0x38, 0xf6, 0xaf, + 0x5a, 0x70, 0x3a, 0x63, 0xd0, 0x72, 0x4c, 0x27, 0x8c, 0xb5, 0xb4, 0xc9, 0x52, 0xec, 0x3f, 0x0a, + 0xfd, 0x75, 0xb2, 0xee, 0xc8, 0xd0, 0x42, 0x43, 0xb6, 0xcf, 0xf2, 0x66, 0x2c, 0xe1, 0xf6, 0x7f, + 0xb1, 0x60, 0x24, 0xd9, 0xd7, 0x88, 0xa5, 0xe8, 0xf0, 0x61, 0x72, 0xa3, 0x5a, 0xb0, 0x45, 0xc2, + 0x1d, 0xfa, 0xe6, 0x56, 0x2a, 0x45, 0xa7, 0x03, 0x03, 0x67, 0x3c, 0xc5, 0xaa, 0xf5, 0xd6, 0xd5, + 0x68, 0xcb, 0x19, 0x79, 0x33, 0xcf, 0x19, 0xa9, 0x3f, 0xa6, 0x19, 0x86, 0xa0, 0x58, 0x62, 0x93, + 0xbf, 0xfd, 0xdd, 0x12, 0xa8, 0x7c, 0x63, 0x16, 0xd7, 0x95, 0x53, 0x54, 0xdc, 0x41, 0x33, 0xb3, + 0xd4, 0x64, 0x28, 0xed, 0x15, 0x68, 0xc1, 0xbd, 0x24, 0xa6, 0x3f, 0x55, 0xbd, 0xe1, 0xaa, 0x06, + 0x61, 0x13, 0x8f, 0xf6, 0xc4, 0x73, 0xb7, 0x08, 0x7f, 0xa8, 0x2f, 0xd9, 0x93, 0x05, 0x09, 0xc0, + 0x1a, 0x87, 0xf6, 0xa4, 0xee, 0xae, 0xaf, 0x8b, 0x2d, 0xbf, 0xea, 0x09, 0x1d, 0x1d, 0xcc, 0x20, + 0xbc, 0x00, 0x7b, 0xb0, 0x29, 0xac, 0x60, 0xa3, 0x00, 0x7b, 0xb0, 0x89, 0x19, 0x84, 0xda, 0x6d, + 0x7e, 0x10, 0x36, 0x1d, 0xcf, 0x7d, 0x8d, 0xd4, 0x15, 0x17, 0x61, 0xfd, 0x2a, 0xbb, 0xed, 0x7a, + 0x27, 0x0a, 0xce, 0x7a, 0x8e, 0xce, 0xc0, 0x56, 0x48, 0xea, 0x6e, 0x2d, 0x36, 0xa9, 0x41, 0x72, + 0x06, 0x2e, 0x77, 0x60, 0xe0, 0x8c, 0xa7, 0xd0, 0x14, 0x8c, 0xc8, 0x7c, 0x71, 0x59, 0x0d, 0x68, + 0x20, 0x59, 0x7d, 0x04, 0x27, 0xc1, 0x38, 0x8d, 0x4f, 0xa5, 0x5a, 0x53, 0x14, 0x0c, 0x63, 0xc6, + 0xb2, 0x21, 0xd5, 0x64, 0x21, 0x31, 0xac, 0x30, 0xec, 0x4f, 0x17, 0xa9, 0x16, 0xee, 0x52, 0x97, + 0xef, 0xc4, 0xa2, 0x30, 0x93, 0x33, 0xb2, 0xd4, 0xc3, 0x8c, 0x7c, 0x16, 0x06, 0x6f, 0x47, 0x81, + 0xaf, 0x22, 0x1c, 0xcb, 0x5d, 0x23, 0x1c, 0x0d, 0xac, 0xec, 0x08, 0xc7, 0xbe, 0xbc, 0x22, 0x1c, + 0xfb, 0x0f, 0x19, 0xe1, 0xf8, 0x3b, 0x65, 0x50, 0x37, 0xc1, 0x5c, 0x27, 0xf1, 0x9d, 0x20, 0xdc, + 0x74, 0xfd, 0x06, 0xcb, 0xb3, 0xff, 0xa6, 0x05, 0x83, 0x7c, 0xbd, 0x2c, 0x98, 0x19, 0x6a, 0xeb, + 0x39, 0x5d, 0x31, 0x92, 0x60, 0x36, 0xb1, 0x6a, 0x30, 0x4a, 0xdd, 0xdd, 0x6a, 0x82, 0x70, 0xa2, + 0x47, 0xe8, 0x13, 0x00, 0xd2, 0x3f, 0xba, 0x2e, 0x45, 0xe6, 0x7c, 0x3e, 0xfd, 0xc3, 0x64, 0x5d, + 0xdb, 0xc0, 0xab, 0x8a, 0x09, 0x36, 0x18, 0xa2, 0x2f, 0xe8, 0xec, 0x3d, 0x9e, 0x0a, 0xf1, 0xb1, + 0x63, 0x19, 0x9b, 0x5e, 0x72, 0xf7, 0x30, 0xf4, 0xbb, 0x7e, 0x83, 0xce, 0x13, 0x11, 0x09, 0xf6, + 0xae, 0xac, 0x1a, 0x15, 0x0b, 0x81, 0x53, 0x9f, 0x76, 0x3c, 0xc7, 0xaf, 0x91, 0x70, 0x9e, 0xa3, + 0x9b, 0x37, 0x96, 0xb3, 0x06, 0x2c, 0x09, 0x75, 0xdc, 0xa1, 0x53, 0xee, 0xe5, 0x0e, 0x9d, 0xf3, + 0x1f, 0x84, 0xd1, 0x8e, 0x8f, 0x79, 0xa0, 0x54, 0xbd, 0xc3, 0x67, 0xf9, 0xd9, 0xff, 0xa4, 0x4f, + 0x2b, 0xad, 0xeb, 0x41, 0x9d, 0xdf, 0xe4, 0x12, 0xea, 0x2f, 0x2a, 0x6c, 0xdc, 0x1c, 0xa7, 0x88, + 0x71, 0xeb, 0xb9, 0x6a, 0xc4, 0x26, 0x4b, 0x3a, 0x47, 0x5b, 0x4e, 0x48, 0xfc, 0xe3, 0x9e, 0xa3, + 0xcb, 0x8a, 0x09, 0x36, 0x18, 0xa2, 0x8d, 0x44, 0xae, 0xce, 0xe5, 0xa3, 0xe7, 0xea, 0xb0, 0xea, + 0x5d, 0x59, 0x97, 0x2f, 0x7c, 0xd5, 0x82, 0x61, 0x3f, 0x31, 0x73, 0xf3, 0x09, 0xcf, 0xcd, 0x5e, + 0x15, 0xfc, 0x22, 0xb1, 0x64, 0x1b, 0x4e, 0xf1, 0xcf, 0x52, 0x69, 0xe5, 0x03, 0xaa, 0x34, 0x7d, + 0x25, 0x54, 0x5f, 0xb7, 0x2b, 0xa1, 0x90, 0xaf, 0xee, 0xc4, 0xeb, 0xcf, 0xfd, 0x4e, 0x3c, 0xc8, + 0xb8, 0x0f, 0xef, 0x16, 0x54, 0x6b, 0x21, 0x71, 0xe2, 0x43, 0x5e, 0x8f, 0xc6, 0x02, 0x1f, 0x66, + 0x24, 0x01, 0xac, 0x69, 0xd9, 0xff, 0xa7, 0x04, 0xa7, 0xe4, 0x88, 0xc8, 0xd0, 0x7e, 0xaa, 0x1f, + 0x39, 0x5f, 0x6d, 0xdc, 0x2a, 0xfd, 0x78, 0x45, 0x02, 0xb0, 0xc6, 0xa1, 0xf6, 0x58, 0x3b, 0x22, + 0x4b, 0x2d, 0xe2, 0x2f, 0xb8, 0x6b, 0x91, 0x38, 0xe7, 0x54, 0x0b, 0xe5, 0x86, 0x06, 0x61, 0x13, + 0x8f, 0x1a, 0xe3, 0xdc, 0x2e, 0x8e, 0xd2, 0x69, 0x41, 0xc2, 0xde, 0xc6, 0x12, 0x8e, 0x7e, 0x21, + 0xb3, 0x50, 0x70, 0x3e, 0x09, 0x71, 0x1d, 0x19, 0x0d, 0x07, 0xbc, 0x51, 0xf3, 0x6f, 0x58, 0x70, + 0x96, 0xb7, 0xca, 0x91, 0xbc, 0xd1, 0xaa, 0x3b, 0x31, 0x89, 0xf2, 0x29, 0xdc, 0x9f, 0xd1, 0x3f, + 0xed, 0xe4, 0xcd, 0x62, 0x8b, 0xb3, 0x7b, 0x83, 0x5e, 0xb7, 0x60, 0x64, 0x33, 0x51, 0x4b, 0x45, + 0xaa, 0x8e, 0xa3, 0x96, 0x39, 0x48, 0x10, 0xd5, 0x4b, 0x2d, 0xd9, 0x1e, 0xe1, 0x34, 0x77, 0xfb, + 0xbf, 0x59, 0x60, 0x8a, 0xd1, 0x93, 0x2f, 0xc1, 0x72, 0x70, 0x53, 0x50, 0x5a, 0x97, 0xe5, 0xae, + 0xd6, 0xe5, 0xa3, 0x50, 0x6c, 0xbb, 0x75, 0xb1, 0xbf, 0xd0, 0xa7, 0xaf, 0xf3, 0xb3, 0x98, 0xb6, + 0xdb, 0xff, 0xb0, 0xac, 0xfd, 0x16, 0x22, 0xdf, 0xec, 0x07, 0xe2, 0xb5, 0xd7, 0x55, 0x11, 0x37, + 0xfe, 0xe6, 0xd7, 0x3b, 0x8a, 0xb8, 0xfd, 0xc4, 0xc1, 0xd3, 0x09, 0xf9, 0x00, 0x75, 0xab, 0xe1, + 0xd6, 0xbf, 0x4f, 0x2e, 0xe1, 0x6d, 0xa8, 0xd0, 0x2d, 0x18, 0x73, 0x40, 0x56, 0x12, 0x9d, 0xaa, + 0x5c, 0x11, 0xed, 0xf7, 0x76, 0xc7, 0xdf, 0x77, 0xf0, 0x6e, 0xc9, 0xa7, 0xb1, 0xa2, 0x8f, 0x22, + 0xa8, 0xd2, 0xdf, 0x2c, 0xed, 0x51, 0x6c, 0xee, 0x6e, 0x28, 0x99, 0x29, 0x01, 0xb9, 0xe4, 0x54, + 0x6a, 0x3e, 0xc8, 0x87, 0x2a, 0xbb, 0x7c, 0x98, 0x31, 0xe5, 0x7b, 0xc0, 0x65, 0x95, 0x7c, 0x28, + 0x01, 0xf7, 0x76, 0xc7, 0x5f, 0x38, 0x38, 0x53, 0xf5, 0x38, 0xd6, 0x2c, 0xec, 0x37, 0x4a, 0x7a, + 0xee, 0x8a, 0xda, 0x7d, 0x3f, 0x10, 0x73, 0xf7, 0xf9, 0xd4, 0xdc, 0xbd, 0xd0, 0x31, 0x77, 0x87, + 0xf5, 0x25, 0xb9, 0x89, 0xd9, 0x78, 0xd2, 0x86, 0xc0, 0xfe, 0xfe, 0x06, 0x66, 0x01, 0xbd, 0xda, + 0x76, 0x43, 0x12, 0x2d, 0x87, 0x6d, 0xdf, 0xf5, 0x1b, 0x6c, 0x3a, 0x56, 0x4c, 0x0b, 0x28, 0x01, + 0xc6, 0x69, 0x7c, 0xba, 0xa9, 0xa7, 0xdf, 0xfc, 0x96, 0xb3, 0xc5, 0x67, 0x95, 0x51, 0xce, 0x6c, + 0x45, 0xb4, 0x63, 0x85, 0x61, 0xbf, 0xc5, 0xce, 0xb2, 0x8d, 0x7c, 0x6b, 0x3a, 0x27, 0x3c, 0x76, + 0xdb, 0x33, 0xaf, 0x85, 0xa6, 0xe6, 0x04, 0xbf, 0xe2, 0x99, 0xc3, 0xd0, 0x1d, 0xe8, 0x5f, 0xe3, + 0xd7, 0x1d, 0xe6, 0x53, 0x8e, 0x5e, 0xdc, 0x9d, 0xc8, 0x2e, 0xb5, 0x91, 0x17, 0x29, 0xde, 0xd3, + 0x3f, 0xb1, 0xe4, 0x66, 0xff, 0x7e, 0x19, 0x46, 0x52, 0xf7, 0x01, 0x27, 0xaa, 0xd0, 0x16, 0xf6, + 0xad, 0x42, 0xfb, 0x51, 0x80, 0x3a, 0x69, 0x79, 0xc1, 0x0e, 0x33, 0xc7, 0x4a, 0x07, 0x36, 0xc7, + 0x94, 0x05, 0x3f, 0xab, 0xa8, 0x60, 0x83, 0xa2, 0x28, 0x00, 0xc7, 0x8b, 0xda, 0xa6, 0x0a, 0xc0, + 0x19, 0x97, 0x56, 0xf4, 0x9d, 0xec, 0xa5, 0x15, 0x2e, 0x8c, 0xf0, 0x2e, 0xaa, 0xac, 0xe6, 0x43, + 0x24, 0x2f, 0xb3, 0xbc, 0x90, 0xd9, 0x24, 0x19, 0x9c, 0xa6, 0x7b, 0x3f, 0xaf, 0xfb, 0x46, 0xef, + 0x86, 0xaa, 0xfc, 0xce, 0xd1, 0x58, 0x55, 0x57, 0x86, 0x90, 0xd3, 0x80, 0x5d, 0xc3, 0x2d, 0x7e, + 0x76, 0x14, 0x68, 0x80, 0xfb, 0x55, 0xa0, 0xc1, 0xfe, 0x4a, 0x81, 0xda, 0xf1, 0xbc, 0x5f, 0xaa, + 0xd6, 0xd0, 0x13, 0xd0, 0xe7, 0xb4, 0xe3, 0x8d, 0xa0, 0xe3, 0xf2, 0xc6, 0x29, 0xd6, 0x8a, 0x05, + 0x14, 0x2d, 0x40, 0xa9, 0xae, 0xeb, 0xc7, 0x1c, 0xe4, 0x7b, 0x6a, 0x97, 0xa8, 0x13, 0x13, 0xcc, + 0xa8, 0xa0, 0x47, 0xa0, 0x14, 0x3b, 0x0d, 0x99, 0xca, 0xc6, 0xd2, 0x97, 0x57, 0x9d, 0x46, 0x84, + 0x59, 0xab, 0xa9, 0xbe, 0x4b, 0xfb, 0xa8, 0xef, 0x17, 0x60, 0x28, 0x72, 0x1b, 0xbe, 0x13, 0xb7, + 0x43, 0x62, 0x1c, 0xf3, 0xe9, 0xc8, 0x0d, 0x13, 0x88, 0x93, 0xb8, 0xf6, 0x6f, 0x0e, 0xc2, 0x99, + 0x95, 0x99, 0x45, 0x59, 0x15, 0xfd, 0xd8, 0xb2, 0xd1, 0xb2, 0x78, 0x9c, 0x5c, 0x36, 0x5a, 0x17, + 0xee, 0x9e, 0x91, 0x8d, 0xe6, 0x19, 0xd9, 0x68, 0xc9, 0xd4, 0xa0, 0x62, 0x1e, 0xa9, 0x41, 0x59, + 0x3d, 0xe8, 0x25, 0x35, 0xe8, 0xd8, 0xd2, 0xd3, 0xf6, 0xec, 0xd0, 0x81, 0xd2, 0xd3, 0x54, 0xee, + 0x5e, 0x2e, 0x49, 0x1b, 0x5d, 0x3e, 0x55, 0x66, 0xee, 0x9e, 0xca, 0x9b, 0xe2, 0x09, 0x49, 0x42, + 0xd4, 0xbf, 0x9c, 0x7f, 0x07, 0x7a, 0xc8, 0x9b, 0x12, 0x39, 0x51, 0x66, 0xae, 0x5e, 0x7f, 0x1e, + 0xb9, 0x7a, 0x59, 0xdd, 0xd9, 0x37, 0x57, 0xef, 0x05, 0x18, 0xaa, 0x79, 0x81, 0x4f, 0x96, 0xc3, + 0x20, 0x0e, 0x6a, 0x81, 0x27, 0xcc, 0x7a, 0x7d, 0x4b, 0x8b, 0x09, 0xc4, 0x49, 0xdc, 0x6e, 0x89, + 0x7e, 0xd5, 0xa3, 0x26, 0xfa, 0xc1, 0x7d, 0x4a, 0xf4, 0xfb, 0xbc, 0x4e, 0x49, 0x1f, 0x60, 0x5f, + 0xe4, 0xa3, 0xf9, 0x7f, 0x91, 0x5e, 0xf2, 0xd2, 0xd1, 0x9b, 0xfc, 0xf6, 0x44, 0x6a, 0x18, 0xcf, + 0x04, 0x4d, 0x6a, 0xf8, 0x0d, 0xb2, 0x21, 0x79, 0xe5, 0x18, 0x26, 0xec, 0xad, 0x15, 0xcd, 0x46, + 0xdd, 0xa8, 0xa8, 0x9b, 0x70, 0xb2, 0x23, 0x47, 0x49, 0x99, 0xff, 0x7a, 0x01, 0x7e, 0x68, 0xdf, + 0x2e, 0xa0, 0x3b, 0x00, 0xb1, 0xd3, 0x10, 0x13, 0x55, 0x1c, 0x98, 0x1c, 0x31, 0xbc, 0x72, 0x55, + 0xd2, 0xe3, 0xb5, 0x5e, 0xd4, 0x5f, 0x76, 0x14, 0x21, 0x7f, 0xb3, 0xa8, 0xca, 0xc0, 0xeb, 0x28, + 0x89, 0x89, 0x03, 0x8f, 0x60, 0x06, 0xa1, 0xea, 0x3f, 0x24, 0x0d, 0x7d, 0xdd, 0xb7, 0xfa, 0x7c, + 0x98, 0xb5, 0x62, 0x01, 0x45, 0xcf, 0xc1, 0x80, 0xe3, 0x79, 0x3c, 0x69, 0x87, 0x44, 0xe2, 0xfa, + 0x24, 0x5d, 0x9b, 0x4f, 0x83, 0xb0, 0x89, 0x67, 0xff, 0x59, 0x01, 0xc6, 0xf7, 0x91, 0x29, 0x1d, + 0x99, 0x94, 0xe5, 0x9e, 0x33, 0x29, 0x45, 0x8e, 0x42, 0x5f, 0x97, 0x1c, 0x85, 0xe7, 0x60, 0x20, + 0x26, 0x4e, 0x53, 0x04, 0x64, 0x09, 0x4f, 0x80, 0x3e, 0x01, 0xd6, 0x20, 0x6c, 0xe2, 0x51, 0x29, + 0x36, 0xec, 0xd4, 0x6a, 0x24, 0x8a, 0x64, 0x12, 0x82, 0xf0, 0xa6, 0xe6, 0x96, 0xe1, 0xc0, 0x9c, + 0xd4, 0x53, 0x09, 0x16, 0x38, 0xc5, 0x32, 0x3d, 0xe0, 0xd5, 0x1e, 0x07, 0xfc, 0x5b, 0x05, 0x78, + 0x74, 0x4f, 0xed, 0xd6, 0x73, 0x7e, 0x48, 0x3b, 0x22, 0x61, 0x7a, 0xe2, 0xdc, 0x88, 0x48, 0x88, + 0x19, 0x84, 0x8f, 0x52, 0xab, 0x65, 0x5c, 0xa7, 0x9e, 0x77, 0x46, 0x15, 0x1f, 0xa5, 0x04, 0x0b, + 0x9c, 0x62, 0x79, 0xd8, 0x69, 0xf9, 0x5f, 0x8b, 0xf0, 0x78, 0x0f, 0x36, 0x40, 0x8e, 0x99, 0x67, + 0xc9, 0x14, 0xc6, 0xe2, 0x7d, 0x4a, 0x61, 0x3c, 0xdc, 0x70, 0xfd, 0x20, 0x64, 0x3e, 0xbe, 0x55, + 0x80, 0xf3, 0xdd, 0xad, 0x09, 0xf4, 0x7e, 0x18, 0x09, 0x55, 0x20, 0x99, 0x99, 0xfd, 0x78, 0x9a, + 0x3b, 0x43, 0x12, 0x20, 0x9c, 0xc6, 0x45, 0x13, 0x00, 0x2d, 0x27, 0xde, 0x88, 0x2e, 0x6d, 0xbb, + 0x51, 0x2c, 0x0a, 0x14, 0x0d, 0xf3, 0xe3, 0x37, 0xd9, 0x8a, 0x0d, 0x0c, 0xca, 0x8e, 0xfd, 0x9b, + 0x0d, 0xae, 0x07, 0x31, 0x7f, 0x88, 0xef, 0x84, 0x4e, 0xcb, 0xeb, 0x5c, 0x0c, 0x10, 0x4e, 0xe3, + 0x52, 0x76, 0xec, 0x80, 0x97, 0x77, 0x94, 0x6f, 0x91, 0x18, 0xbb, 0x05, 0xd5, 0x8a, 0x0d, 0x8c, + 0x74, 0x5e, 0x67, 0x79, 0xff, 0xbc, 0x4e, 0xfb, 0x1f, 0x14, 0xe0, 0x5c, 0x57, 0x6b, 0xb4, 0x37, + 0x19, 0xf2, 0xe0, 0xe5, 0x62, 0x9e, 0xc4, 0xf4, 0xb7, 0xff, 0xa4, 0xcb, 0x4c, 0x13, 0xe9, 0x79, + 0x87, 0xaf, 0x1b, 0xf0, 0xe0, 0x8d, 0x67, 0x47, 0x46, 0x5e, 0xe9, 0x00, 0x19, 0x79, 0xa9, 0x8f, + 0x51, 0xee, 0x51, 0x74, 0xff, 0x7c, 0xb9, 0xeb, 0xf0, 0xd2, 0xdd, 0x6b, 0x4f, 0xae, 0xe6, 0x59, + 0x38, 0xe5, 0xfa, 0xec, 0x6a, 0xaf, 0x95, 0xf6, 0x9a, 0xa8, 0x59, 0x53, 0x48, 0xde, 0xf7, 0x3f, + 0x9f, 0x82, 0xe3, 0x8e, 0x27, 0x1e, 0xc0, 0x0c, 0xc9, 0xc3, 0x0d, 0xe9, 0x01, 0x13, 0x87, 0x97, + 0xe0, 0xac, 0x1c, 0x8a, 0x0d, 0x27, 0x24, 0x75, 0xa1, 0x09, 0x23, 0x91, 0x13, 0x72, 0x8e, 0xe7, + 0x95, 0x64, 0x20, 0xe0, 0xec, 0xe7, 0xd8, 0x6d, 0x4a, 0x41, 0xcb, 0xad, 0x89, 0x7d, 0x9a, 0xbe, + 0x4d, 0x89, 0x36, 0x62, 0x0e, 0xeb, 0xa2, 0x54, 0xaa, 0xf7, 0x57, 0xa9, 0x7c, 0x14, 0xaa, 0xea, + 0xa3, 0xf0, 0x70, 0x79, 0xb5, 0x12, 0x3a, 0xc2, 0xe5, 0xd5, 0x32, 0x30, 0xb0, 0xf6, 0xbb, 0x13, + 0xf4, 0x3d, 0x30, 0xa8, 0xfc, 0x57, 0xbd, 0x5e, 0x7c, 0x65, 0xbf, 0xd1, 0x07, 0x43, 0x89, 0x62, + 0x96, 0x09, 0xc7, 0xb5, 0xb5, 0xaf, 0xe3, 0x9a, 0xa5, 0x3f, 0xb4, 0x7d, 0x79, 0x2b, 0x9e, 0x91, + 0xfe, 0xd0, 0xf6, 0x09, 0xe6, 0x30, 0xba, 0x6d, 0xa8, 0x87, 0x3b, 0xb8, 0xed, 0x8b, 0x30, 0x65, + 0xb5, 0x6d, 0x98, 0x65, 0xad, 0x58, 0x40, 0xd1, 0xa7, 0x2c, 0x18, 0x8c, 0xd8, 0xa9, 0x08, 0x77, + 0xfb, 0x8b, 0x95, 0x70, 0xf5, 0xe8, 0xb5, 0x3a, 0x55, 0xe1, 0x56, 0x16, 0x79, 0x64, 0xb6, 0xe0, + 0x04, 0x47, 0xf4, 0x59, 0x0b, 0xaa, 0xea, 0xf2, 0x1e, 0x71, 0xc5, 0xe5, 0x4a, 0xbe, 0xb5, 0x42, + 0xb9, 0xbf, 0x58, 0x1d, 0x30, 0xa9, 0xa2, 0x8d, 0x58, 0x33, 0x46, 0x91, 0xf2, 0xc9, 0xf7, 0x1f, + 0x8f, 0x4f, 0x1e, 0x32, 0xfc, 0xf1, 0xef, 0x86, 0x6a, 0xd3, 0xf1, 0xdd, 0x75, 0x12, 0xc5, 0xdc, + 0x4d, 0x2e, 0x4b, 0x18, 0xcb, 0x46, 0xac, 0xe1, 0xd4, 0x4a, 0x88, 0xd8, 0x8b, 0xc5, 0x86, 0x5f, + 0x9b, 0x59, 0x09, 0x2b, 0xba, 0x19, 0x9b, 0x38, 0xa6, 0x13, 0x1e, 0xee, 0xab, 0x13, 0x7e, 0x60, + 0x6f, 0x27, 0xbc, 0xfd, 0x77, 0x2d, 0x38, 0x9b, 0xf9, 0xd5, 0x1e, 0xdc, 0x80, 0x52, 0xfb, 0x6b, + 0x65, 0x38, 0x9d, 0x51, 0x95, 0x16, 0xed, 0x98, 0xf3, 0xd9, 0xca, 0x23, 0x36, 0x23, 0x19, 0x6a, + 0x20, 0x87, 0x31, 0x63, 0x12, 0x1f, 0xec, 0x08, 0x4c, 0x1f, 0x43, 0x15, 0x4f, 0xf6, 0x18, 0xca, + 0x98, 0x96, 0xa5, 0xfb, 0x3a, 0x2d, 0xcb, 0xfb, 0x9c, 0x0d, 0xfd, 0x9a, 0x05, 0x63, 0xcd, 0x2e, + 0x57, 0x21, 0x88, 0x1d, 0xd3, 0xcd, 0xe3, 0xb9, 0x68, 0x61, 0xfa, 0x91, 0xbb, 0xbb, 0xe3, 0x5d, + 0x6f, 0xa0, 0xc0, 0x5d, 0x7b, 0x65, 0x7f, 0xb7, 0x08, 0xac, 0x24, 0x32, 0xab, 0x3c, 0xb8, 0x83, + 0x3e, 0x69, 0x16, 0xb7, 0xb6, 0xf2, 0x2a, 0xc4, 0xcc, 0x89, 0xab, 0xe2, 0xd8, 0x7c, 0x04, 0xb3, + 0x6a, 0x65, 0xa7, 0x85, 0x56, 0xa1, 0x07, 0xa1, 0xe5, 0xc9, 0x2a, 0xe2, 0xc5, 0xfc, 0xab, 0x88, + 0x57, 0xd3, 0x15, 0xc4, 0xf7, 0xfe, 0xc4, 0xa5, 0x07, 0xf2, 0x13, 0xff, 0xa2, 0xc5, 0x05, 0x4f, + 0xea, 0x2b, 0x68, 0xcb, 0xc0, 0xda, 0xc3, 0x32, 0x78, 0x0a, 0x2a, 0x11, 0xf1, 0xd6, 0xaf, 0x10, + 0xc7, 0x13, 0x16, 0x84, 0x8e, 0x0b, 0x10, 0xed, 0x58, 0x61, 0xb0, 0x6b, 0x86, 0x3d, 0x2f, 0xb8, + 0x73, 0xa9, 0xd9, 0x8a, 0x77, 0x84, 0x2d, 0xa1, 0xaf, 0x19, 0x56, 0x10, 0x6c, 0x60, 0xd9, 0x7f, + 0xbd, 0xc0, 0x67, 0xa0, 0x08, 0x2e, 0x79, 0x3e, 0x75, 0x31, 0x64, 0xef, 0x71, 0x19, 0x1f, 0x07, + 0xa8, 0x05, 0xcd, 0x16, 0x35, 0x46, 0x57, 0x03, 0x71, 0xd6, 0x76, 0xe5, 0xc8, 0xd7, 0xd0, 0x0b, + 0x7a, 0xfa, 0x35, 0x74, 0x1b, 0x36, 0xf8, 0x25, 0x64, 0x69, 0x71, 0x5f, 0x59, 0x9a, 0x10, 0x2b, + 0xa5, 0x7d, 0xb4, 0xdd, 0x9f, 0x59, 0x90, 0xb0, 0x88, 0x50, 0x0b, 0xca, 0xb4, 0xbb, 0x3b, 0x62, + 0x85, 0x2e, 0xe5, 0x67, 0x7e, 0x51, 0xd1, 0x28, 0xa6, 0x3d, 0xfb, 0x89, 0x39, 0x23, 0xe4, 0x89, + 0x18, 0x14, 0x3e, 0xaa, 0xd7, 0xf3, 0x63, 0x78, 0x25, 0x08, 0x36, 0xf9, 0x81, 0xb1, 0x8e, 0x67, + 0xb1, 0x9f, 0x87, 0xd1, 0x8e, 0x4e, 0xb1, 0x3b, 0xe0, 0x02, 0xaa, 0x7d, 0x52, 0xd3, 0x95, 0x25, + 0xc6, 0x62, 0x0e, 0xb3, 0xdf, 0xb2, 0xe0, 0x54, 0x9a, 0x3c, 0x7a, 0xd3, 0x82, 0xd1, 0x28, 0x4d, + 0xef, 0xb8, 0xc6, 0x4e, 0xc5, 0x91, 0x76, 0x80, 0x70, 0x67, 0x27, 0xec, 0xff, 0x2b, 0x26, 0xff, + 0x2d, 0xd7, 0xaf, 0x07, 0x77, 0x94, 0x61, 0x62, 0x75, 0x35, 0x4c, 0xe8, 0x7a, 0xac, 0x6d, 0x90, + 0x7a, 0xdb, 0xeb, 0xc8, 0xc8, 0x5d, 0x11, 0xed, 0x58, 0x61, 0xb0, 0x04, 0xc4, 0xb6, 0xb8, 0x66, + 0x20, 0x35, 0x29, 0x67, 0x45, 0x3b, 0x56, 0x18, 0xe8, 0x59, 0x18, 0x34, 0x5e, 0x52, 0xce, 0x4b, + 0x66, 0x90, 0x1b, 0x2a, 0x33, 0xc2, 0x09, 0x2c, 0x34, 0x01, 0xa0, 0x8c, 0x1c, 0xa9, 0x22, 0x99, + 0xf7, 0x4a, 0x49, 0xa2, 0x08, 0x1b, 0x18, 0x2c, 0xdd, 0xd7, 0x6b, 0x47, 0xec, 0xec, 0xa4, 0x4f, + 0x97, 0xbe, 0x9d, 0x11, 0x6d, 0x58, 0x41, 0xa9, 0x34, 0x69, 0x3a, 0x7e, 0xdb, 0xf1, 0xe8, 0x08, + 0x89, 0xfd, 0xa8, 0x5a, 0x86, 0x8b, 0x0a, 0x82, 0x0d, 0x2c, 0xfa, 0xc6, 0xb1, 0xdb, 0x24, 0x2f, + 0x05, 0xbe, 0x8c, 0xff, 0xd3, 0xc7, 0x69, 0xa2, 0x1d, 0x2b, 0x0c, 0xfb, 0x3f, 0x59, 0x30, 0xa2, + 0x8b, 0x07, 0xf0, 0xdb, 0xde, 0xcd, 0xed, 0xb3, 0xb5, 0xef, 0xf6, 0x39, 0x99, 0x55, 0x5d, 0xe8, + 0x29, 0xab, 0xda, 0x4c, 0x78, 0x2e, 0xee, 0x99, 0xf0, 0xfc, 0x23, 0xfa, 0x26, 0x61, 0x9e, 0x19, + 0x3d, 0x90, 0x75, 0x8b, 0x30, 0xb2, 0xa1, 0xaf, 0xe6, 0xa8, 0xca, 0x39, 0x83, 0x7c, 0xef, 0x30, + 0x33, 0xc5, 0x90, 0x04, 0xc4, 0x5e, 0x82, 0xaa, 0x3a, 0x55, 0x92, 0x1b, 0x55, 0x2b, 0x7b, 0xa3, + 0xda, 0x53, 0xe2, 0xe5, 0xf4, 0xda, 0xb7, 0xbf, 0xf7, 0xd8, 0x3b, 0x7e, 0xef, 0x7b, 0x8f, 0xbd, + 0xe3, 0x8f, 0xbe, 0xf7, 0xd8, 0x3b, 0x3e, 0x75, 0xf7, 0x31, 0xeb, 0xdb, 0x77, 0x1f, 0xb3, 0x7e, + 0xef, 0xee, 0x63, 0xd6, 0x1f, 0xdd, 0x7d, 0xcc, 0xfa, 0xee, 0xdd, 0xc7, 0xac, 0xaf, 0xfe, 0xfb, + 0xc7, 0xde, 0xf1, 0x52, 0x66, 0x00, 0x28, 0xfd, 0xf1, 0x74, 0xad, 0x3e, 0xb9, 0x75, 0x91, 0xc5, + 0x20, 0xd2, 0xe5, 0x35, 0x69, 0xcc, 0xa9, 0x49, 0xb9, 0xbc, 0xfe, 0x5f, 0x00, 0x00, 0x00, 0xff, + 0xff, 0xfc, 0x85, 0x76, 0x0e, 0x3a, 0xe6, 0x00, 0x00, } func (m *AWSAuthConfig) Marshal() (dAtA []byte, err error) { @@ -8862,6 +8895,39 @@ func (m *ConfigManagementPlugin) MarshalToSizedBuffer(dAtA []byte) (int, error) return len(dAtA) - i, nil } +func (m *ConfigMapKeyRef) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ConfigMapKeyRef) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ConfigMapKeyRef) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + i -= len(m.Key) + copy(dAtA[i:], m.Key) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Key))) + i-- + dAtA[i] = 0x12 + i -= len(m.ConfigMapName) + copy(dAtA[i:], m.ConfigMapName) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.ConfigMapName))) + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + func (m *ConnectionState) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -11296,6 +11362,26 @@ func (m *PullRequestGeneratorBitbucketServer) MarshalToSizedBuffer(dAtA []byte) _ = i var l int _ = l + if m.CAConfigMapKeyRef != nil { + { + size, err := m.CAConfigMapKeyRef.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } + i-- + if m.Insecure { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x28 if m.BasicAuth != nil { { size, err := m.BasicAuth.MarshalToSizedBuffer(dAtA[:i]) @@ -11383,6 +11469,18 @@ func (m *PullRequestGeneratorGitLab) MarshalToSizedBuffer(dAtA []byte) (int, err _ = i var l int _ = l + if m.CAConfigMapKeyRef != nil { + { + size, err := m.CAConfigMapKeyRef.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + } i-- if m.Insecure { dAtA[i] = 1 @@ -13439,6 +13537,26 @@ func (m *SCMProviderGeneratorBitbucketServer) MarshalToSizedBuffer(dAtA []byte) _ = i var l int _ = l + if m.CAConfigMapKeyRef != nil { + { + size, err := m.CAConfigMapKeyRef.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } + i-- + if m.Insecure { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x28 i-- if m.AllBranches { dAtA[i] = 1 @@ -13673,6 +13791,18 @@ func (m *SCMProviderGeneratorGitlab) MarshalToSizedBuffer(dAtA []byte) (int, err _ = i var l int _ = l + if m.CAConfigMapKeyRef != nil { + { + size, err := m.CAConfigMapKeyRef.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x4a + } i -= len(m.Topic) copy(dAtA[i:], m.Topic) i = encodeVarintGenerated(dAtA, i, uint64(len(m.Topic))) @@ -15879,6 +16009,19 @@ func (m *ConfigManagementPlugin) Size() (n int) { return n } +func (m *ConfigMapKeyRef) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ConfigMapName) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Key) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + func (m *ConnectionState) Size() (n int) { if m == nil { return 0 @@ -16810,6 +16953,11 @@ func (m *PullRequestGeneratorBitbucketServer) Size() (n int) { l = m.BasicAuth.Size() n += 1 + l + sovGenerated(uint64(l)) } + n += 2 + if m.CAConfigMapKeyRef != nil { + l = m.CAConfigMapKeyRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + } return n } @@ -16853,6 +17001,10 @@ func (m *PullRequestGeneratorGitLab) Size() (n int) { l = len(m.PullRequestState) n += 1 + l + sovGenerated(uint64(l)) n += 2 + if m.CAConfigMapKeyRef != nil { + l = m.CAConfigMapKeyRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + } return n } @@ -17595,6 +17747,11 @@ func (m *SCMProviderGeneratorBitbucketServer) Size() (n int) { n += 1 + l + sovGenerated(uint64(l)) } n += 2 + n += 2 + if m.CAConfigMapKeyRef != nil { + l = m.CAConfigMapKeyRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + } return n } @@ -17692,6 +17849,10 @@ func (m *SCMProviderGeneratorGitlab) Size() (n int) { } l = len(m.Topic) n += 1 + l + sovGenerated(uint64(l)) + if m.CAConfigMapKeyRef != nil { + l = m.CAConfigMapKeyRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + } return n } @@ -19003,6 +19164,17 @@ func (this *ConfigManagementPlugin) String() string { }, "") return s } +func (this *ConfigMapKeyRef) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ConfigMapKeyRef{`, + `ConfigMapName:` + fmt.Sprintf("%v", this.ConfigMapName) + `,`, + `Key:` + fmt.Sprintf("%v", this.Key) + `,`, + `}`, + }, "") + return s +} func (this *ConnectionState) String() string { if this == nil { return "nil" @@ -19761,6 +19933,8 @@ func (this *PullRequestGeneratorBitbucketServer) String() string { `Repo:` + fmt.Sprintf("%v", this.Repo) + `,`, `API:` + fmt.Sprintf("%v", this.API) + `,`, `BasicAuth:` + strings.Replace(this.BasicAuth.String(), "BasicAuthBitbucketServer", "BasicAuthBitbucketServer", 1) + `,`, + `Insecure:` + fmt.Sprintf("%v", this.Insecure) + `,`, + `CAConfigMapKeyRef:` + strings.Replace(this.CAConfigMapKeyRef.String(), "ConfigMapKeyRef", "ConfigMapKeyRef", 1) + `,`, `}`, }, "") return s @@ -19787,6 +19961,7 @@ func (this *PullRequestGeneratorGitLab) String() string { `Labels:` + fmt.Sprintf("%v", this.Labels) + `,`, `PullRequestState:` + fmt.Sprintf("%v", this.PullRequestState) + `,`, `Insecure:` + fmt.Sprintf("%v", this.Insecure) + `,`, + `CAConfigMapKeyRef:` + strings.Replace(this.CAConfigMapKeyRef.String(), "ConfigMapKeyRef", "ConfigMapKeyRef", 1) + `,`, `}`, }, "") return s @@ -20326,6 +20501,8 @@ func (this *SCMProviderGeneratorBitbucketServer) String() string { `API:` + fmt.Sprintf("%v", this.API) + `,`, `BasicAuth:` + strings.Replace(this.BasicAuth.String(), "BasicAuthBitbucketServer", "BasicAuthBitbucketServer", 1) + `,`, `AllBranches:` + fmt.Sprintf("%v", this.AllBranches) + `,`, + `Insecure:` + fmt.Sprintf("%v", this.Insecure) + `,`, + `CAConfigMapKeyRef:` + strings.Replace(this.CAConfigMapKeyRef.String(), "ConfigMapKeyRef", "ConfigMapKeyRef", 1) + `,`, `}`, }, "") return s @@ -20385,6 +20562,7 @@ func (this *SCMProviderGeneratorGitlab) String() string { `Insecure:` + fmt.Sprintf("%v", this.Insecure) + `,`, `IncludeSharedProjects:` + valueToStringGenerated(this.IncludeSharedProjects) + `,`, `Topic:` + fmt.Sprintf("%v", this.Topic) + `,`, + `CAConfigMapKeyRef:` + strings.Replace(this.CAConfigMapKeyRef.String(), "ConfigMapKeyRef", "ConfigMapKeyRef", 1) + `,`, `}`, }, "") return s @@ -31933,6 +32111,120 @@ func (m *ConfigManagementPlugin) Unmarshal(dAtA []byte) error { } return nil } +func (m *ConfigMapKeyRef) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ConfigMapKeyRef: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ConfigMapKeyRef: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ConfigMapName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ConfigMapName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Key = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *ConnectionState) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -40043,6 +40335,62 @@ func (m *PullRequestGeneratorBitbucketServer) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Insecure", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Insecure = bool(v != 0) + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CAConfigMapKeyRef", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.CAConfigMapKeyRef == nil { + m.CAConfigMapKeyRef = &ConfigMapKeyRef{} + } + if err := m.CAConfigMapKeyRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -40156,62 +40504,194 @@ func (m *PullRequestGeneratorFilter) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - s := string(dAtA[iNdEx:postIndex]) - m.TargetBranchMatch = &s + s := string(dAtA[iNdEx:postIndex]) + m.TargetBranchMatch = &s + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PullRequestGeneratorGitLab) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PullRequestGeneratorGitLab: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PullRequestGeneratorGitLab: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Project", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Project = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field API", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.API = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TokenRef", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.TokenRef == nil { + m.TokenRef = &SecretRef{} + } + if err := m.TokenRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Labels", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Labels = append(m.Labels, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGenerated(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *PullRequestGeneratorGitLab) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: PullRequestGeneratorGitLab: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: PullRequestGeneratorGitLab: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: + case 5: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Project", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field PullRequestState", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -40239,13 +40719,13 @@ func (m *PullRequestGeneratorGitLab) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Project = string(dAtA[iNdEx:postIndex]) + m.PullRequestState = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field API", wireType) + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Insecure", wireType) } - var stringLen uint64 + var v int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -40255,27 +40735,15 @@ func (m *PullRequestGeneratorGitLab) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + v |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.API = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: + m.Insecure = bool(v != 0) + case 7: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field TokenRef", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field CAConfigMapKeyRef", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -40302,97 +40770,13 @@ func (m *PullRequestGeneratorGitLab) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.TokenRef == nil { - m.TokenRef = &SecretRef{} + if m.CAConfigMapKeyRef == nil { + m.CAConfigMapKeyRef = &ConfigMapKeyRef{} } - if err := m.TokenRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.CAConfigMapKeyRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Labels", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Labels = append(m.Labels, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PullRequestState", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.PullRequestState = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 6: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Insecure", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Insecure = bool(v != 0) default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -47766,6 +48150,62 @@ func (m *SCMProviderGeneratorBitbucketServer) Unmarshal(dAtA []byte) error { } } m.AllBranches = bool(v != 0) + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Insecure", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Insecure = bool(v != 0) + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CAConfigMapKeyRef", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.CAConfigMapKeyRef == nil { + m.CAConfigMapKeyRef = &ConfigMapKeyRef{} + } + if err := m.CAConfigMapKeyRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -48634,6 +49074,42 @@ func (m *SCMProviderGeneratorGitlab) Unmarshal(dAtA []byte) error { } m.Topic = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CAConfigMapKeyRef", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.CAConfigMapKeyRef == nil { + m.CAConfigMapKeyRef = &ConfigMapKeyRef{} + } + if err := m.CAConfigMapKeyRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) diff --git a/pkg/apis/application/v1alpha1/generated.proto b/pkg/apis/application/v1alpha1/generated.proto index bc162dca1fc3f1..1e6ee42c8a1799 100644 --- a/pkg/apis/application/v1alpha1/generated.proto +++ b/pkg/apis/application/v1alpha1/generated.proto @@ -877,6 +877,13 @@ message ConfigManagementPlugin { optional bool lockRepo = 4; } +// Utility struct for a reference to a configmap key. +message ConfigMapKeyRef { + optional string configMapName = 1; + + optional string key = 2; +} + // ConnectionState contains information about remote resource connection state, currently used for clusters and repositories message ConnectionState { // Status contains the current status indicator for the connection @@ -1432,6 +1439,12 @@ message PullRequestGeneratorBitbucketServer { // Credentials for Basic auth optional BasicAuthBitbucketServer basicAuth = 4; + + // Allow self-signed TLS / Certificates; default: false + optional bool insecure = 5; + + // ConfigMap key holding the trusted certificates + optional ConfigMapKeyRef caConfigMapKeyRef = 6; } // PullRequestGeneratorFilter is a single pull request filter. @@ -1462,6 +1475,9 @@ message PullRequestGeneratorGitLab { // Skips validating the SCM provider's TLS certificate - useful for self-signed certificates.; default: false optional bool insecure = 6; + + // ConfigMap key holding the trusted certificates + optional ConfigMapKeyRef caConfigMapKeyRef = 7; } // PullRequestGeneratorGitea defines connection info specific to Gitea. @@ -2041,6 +2057,12 @@ message SCMProviderGeneratorBitbucketServer { // Scan all branches instead of just the default branch. optional bool allBranches = 4; + + // Allow self-signed TLS / Certificates; default: false + optional bool insecure = 5; + + // ConfigMap key holding the trusted certificates + optional ConfigMapKeyRef caConfigMapKeyRef = 6; } // SCMProviderGeneratorFilter is a single repository filter. @@ -2124,6 +2146,9 @@ message SCMProviderGeneratorGitlab { // Filter repos list based on Gitlab Topic. optional string topic = 8; + + // ConfigMap key holding the trusted certificates + optional ConfigMapKeyRef caConfigMapKeyRef = 9; } // Utility struct for a reference to a secret key. diff --git a/pkg/apis/application/v1alpha1/openapi_generated.go b/pkg/apis/application/v1alpha1/openapi_generated.go index 2fcbbb94edb0bc..028b0382dfd4c2 100644 --- a/pkg/apis/application/v1alpha1/openapi_generated.go +++ b/pkg/apis/application/v1alpha1/openapi_generated.go @@ -68,6 +68,7 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.ComparedTo": schema_pkg_apis_application_v1alpha1_ComparedTo(ref), "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.ComponentParameter": schema_pkg_apis_application_v1alpha1_ComponentParameter(ref), "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.ConfigManagementPlugin": schema_pkg_apis_application_v1alpha1_ConfigManagementPlugin(ref), + "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.ConfigMapKeyRef": schema_pkg_apis_application_v1alpha1_ConfigMapKeyRef(ref), "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.ConnectionState": schema_pkg_apis_application_v1alpha1_ConnectionState(ref), "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.DuckTypeGenerator": schema_pkg_apis_application_v1alpha1_DuckTypeGenerator(ref), "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.EnvEntry": schema_pkg_apis_application_v1alpha1_EnvEntry(ref), @@ -3149,6 +3150,34 @@ func schema_pkg_apis_application_v1alpha1_ConfigManagementPlugin(ref common.Refe } } +func schema_pkg_apis_application_v1alpha1_ConfigMapKeyRef(ref common.ReferenceCallback) common.OpenAPIDefinition { + return common.OpenAPIDefinition{ + Schema: spec.Schema{ + SchemaProps: spec.SchemaProps{ + Description: "Utility struct for a reference to a configmap key.", + Type: []string{"object"}, + Properties: map[string]spec.Schema{ + "configMapName": { + SchemaProps: spec.SchemaProps{ + Default: "", + Type: []string{"string"}, + Format: "", + }, + }, + "key": { + SchemaProps: spec.SchemaProps{ + Default: "", + Type: []string{"string"}, + Format: "", + }, + }, + }, + Required: []string{"configMapName", "key"}, + }, + }, + } +} + func schema_pkg_apis_application_v1alpha1_ConnectionState(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.OpenAPIDefinition{ Schema: spec.Schema{ @@ -5172,12 +5201,25 @@ func schema_pkg_apis_application_v1alpha1_PullRequestGeneratorBitbucketServer(re Ref: ref("github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.BasicAuthBitbucketServer"), }, }, + "insecure": { + SchemaProps: spec.SchemaProps{ + Description: "Allow self-signed TLS / Certificates; default: false", + Type: []string{"boolean"}, + Format: "", + }, + }, + "caConfigMapKeyRef": { + SchemaProps: spec.SchemaProps{ + Description: "ConfigMap key holding the trusted certificates", + Ref: ref("github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.ConfigMapKeyRef"), + }, + }, }, Required: []string{"project", "repo", "api"}, }, }, Dependencies: []string{ - "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.BasicAuthBitbucketServer"}, + "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.BasicAuthBitbucketServer", "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.ConfigMapKeyRef"}, } } @@ -5263,12 +5305,18 @@ func schema_pkg_apis_application_v1alpha1_PullRequestGeneratorGitLab(ref common. Format: "", }, }, + "caConfigMapKeyRef": { + SchemaProps: spec.SchemaProps{ + Description: "ConfigMap key holding the trusted certificates", + Ref: ref("github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.ConfigMapKeyRef"), + }, + }, }, Required: []string{"project"}, }, }, Dependencies: []string{ - "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.SecretRef"}, + "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.ConfigMapKeyRef", "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.SecretRef"}, } } @@ -7122,12 +7170,25 @@ func schema_pkg_apis_application_v1alpha1_SCMProviderGeneratorBitbucketServer(re Format: "", }, }, + "insecure": { + SchemaProps: spec.SchemaProps{ + Description: "Allow self-signed TLS / Certificates; default: false", + Type: []string{"boolean"}, + Format: "", + }, + }, + "caConfigMapKeyRef": { + SchemaProps: spec.SchemaProps{ + Description: "ConfigMap key holding the trusted certificates", + Ref: ref("github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.ConfigMapKeyRef"), + }, + }, }, Required: []string{"project", "api"}, }, }, Dependencies: []string{ - "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.BasicAuthBitbucketServer"}, + "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.BasicAuthBitbucketServer", "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.ConfigMapKeyRef"}, } } @@ -7361,12 +7422,18 @@ func schema_pkg_apis_application_v1alpha1_SCMProviderGeneratorGitlab(ref common. Format: "", }, }, + "caConfigMapKeyRef": { + SchemaProps: spec.SchemaProps{ + Description: "ConfigMap key holding the trusted certificates", + Ref: ref("github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.ConfigMapKeyRef"), + }, + }, }, Required: []string{"group"}, }, }, Dependencies: []string{ - "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.SecretRef"}, + "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.ConfigMapKeyRef", "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.SecretRef"}, } }