diff --git a/assets/swagger.json b/assets/swagger.json index 9e9ff5407713e..f14080a199611 100644 --- a/assets/swagger.json +++ b/assets/swagger.json @@ -4796,6 +4796,13 @@ "type": "object", "title": "ApplicationSourceHelm holds helm specific options", "properties": { + "externalValueFiles": { + "type": "array", + "title": "ValuesFilesExternalValueFiles is a list of Helm value files to use when generating a template that come from an external git repo", + "items": { + "$ref": "#/definitions/v1alpha1HelmExternalValue" + } + }, "fileParameters": { "type": "array", "title": "FileParameters are file parameters to the helm template", @@ -5389,6 +5396,27 @@ } } }, + "v1alpha1HelmExternalValue": { + "type": "object", + "title": "HelmExternalValue are values from other git repositories", + "properties": { + "repoURL": { + "type": "string", + "title": "RepoURL is the URL of the external git repo" + }, + "targetRevision": { + "type": "string", + "title": "TargetRevision is the revision of the git repo" + }, + "valueFiles": { + "type": "array", + "title": "FileParameters are file parameters to the helm template", + "items": { + "type": "string" + } + } + } + }, "v1alpha1HelmFileParameter": { "type": "object", "title": "HelmFileParameter is a file parameter that's passed to helm template during manifest generation", diff --git a/controller/appcontroller.go b/controller/appcontroller.go index eb253619d507a..a7eaf0a4c5624 100644 --- a/controller/appcontroller.go +++ b/controller/appcontroller.go @@ -1153,7 +1153,6 @@ func (ctrl *ApplicationController) processAppRefreshQueueItem() (processNext boo } origApp = origApp.DeepCopy() needRefresh, refreshType, comparisonLevel := ctrl.needRefreshAppStatus(origApp, ctrl.statusRefreshTimeout) - if !needRefresh { return } diff --git a/controller/state.go b/controller/state.go index a6819a88afb55..2ebc5678709e5 100644 --- a/controller/state.go +++ b/controller/state.go @@ -124,6 +124,18 @@ func (m *appStateManager) getRepoObjs(app *v1alpha1.Application, source v1alpha1 if err != nil { return nil, nil, err } + helmExternalValueCredentials := []*v1alpha1.RepoCreds{} + if app.Spec.Source.Helm != nil && app.Spec.Source.Helm.ExternalValueFiles != nil { + for _, helmExternalValueFile := range app.Spec.Source.Helm.ExternalValueFiles { + helmExternalValueCredential, err := m.db.GetRepositoryCredentials(context.Background(), helmExternalValueFile.RepoURL) + if err != nil { + return nil, nil, err + } + if helmExternalValueCredential != nil { + helmExternalValueCredentials = append(helmExternalValueCredentials, helmExternalValueCredential) + } + } + } conn, repoClient, err := m.repoClientset.NewRepoServerClient() if err != nil { return nil, nil, err @@ -159,21 +171,22 @@ func (m *appStateManager) getRepoObjs(app *v1alpha1.Application, source v1alpha1 } ts.AddCheckpoint("version_ms") manifestInfo, err := repoClient.GenerateManifest(context.Background(), &apiclient.ManifestRequest{ - Repo: repo, - Repos: permittedHelmRepos, - Revision: revision, - NoCache: noCache, - NoRevisionCache: noRevisionCache, - AppLabelKey: appLabelKey, - AppName: app.Name, - Namespace: app.Spec.Destination.Namespace, - ApplicationSource: &source, - Plugins: tools, - KustomizeOptions: kustomizeOptions, - KubeVersion: serverVersion, - ApiVersions: argo.APIGroupsToVersions(apiGroups), - VerifySignature: verifySignature, - HelmRepoCreds: permittedHelmCredentials, + Repo: repo, + Repos: permittedHelmRepos, + Revision: revision, + NoCache: noCache, + NoRevisionCache: noRevisionCache, + AppLabelKey: appLabelKey, + AppName: app.Name, + Namespace: app.Spec.Destination.Namespace, + ApplicationSource: &source, + Plugins: tools, + KustomizeOptions: kustomizeOptions, + KubeVersion: serverVersion, + ApiVersions: argo.APIGroupsToVersions(apiGroups), + VerifySignature: verifySignature, + HelmRepoCreds: permittedHelmCredentials, + HelmExternalValueRepoCreds: helmExternalValueCredentials, }) if err != nil { return nil, nil, err diff --git a/docs/operator-manual/application.yaml b/docs/operator-manual/application.yaml index a071e6d49aba4..9c0460fd99600 100644 --- a/docs/operator-manual/application.yaml +++ b/docs/operator-manual/application.yaml @@ -35,6 +35,13 @@ spec: valueFiles: - values-prod.yaml +# # Helm value files that are stored in a different git repository +# externalValueFiles: +# - repoURL: https://git.example.gom/example.git +# targetRevision: main +# valueFiles: +# - values.yaml + # Values file as block file values: | ingress: diff --git a/hack/generate-proto.sh b/hack/generate-proto.sh index 5019924cd46f6..709c063c781be 100755 --- a/hack/generate-proto.sh +++ b/hack/generate-proto.sh @@ -125,7 +125,7 @@ clean_swagger() { } echo "If additional types are added, the number of expected collisions may need to be increased" -EXPECTED_COLLISION_COUNT=55 +EXPECTED_COLLISION_COUNT=56 collect_swagger server ${EXPECTED_COLLISION_COUNT} clean_swagger server clean_swagger reposerver diff --git a/manifests/core-install.yaml b/manifests/core-install.yaml index 0820a5ff95bc3..f1e2911fabe47 100644 --- a/manifests/core-install.yaml +++ b/manifests/core-install.yaml @@ -218,6 +218,30 @@ spec: helm: description: Helm holds helm specific options properties: + externalValueFiles: + description: ValuesFilesExternalValueFiles is a list of + Helm value files to use when generating a template that + come from an external git repo + items: + description: HelmExternalValue are values from other + git repositories + properties: + repoURL: + description: RepoURL is the URL of the external + git repo + type: string + targetRevision: + description: TargetRevision is the revision of the + git repo + type: string + valueFiles: + description: FileParameters are file parameters + to the helm template + items: + type: string + type: array + type: object + type: array fileParameters: description: FileParameters are file parameters to the helm template @@ -571,6 +595,30 @@ spec: helm: description: Helm holds helm specific options properties: + externalValueFiles: + description: ValuesFilesExternalValueFiles is a list of Helm + value files to use when generating a template that come + from an external git repo + items: + description: HelmExternalValue are values from other git + repositories + properties: + repoURL: + description: RepoURL is the URL of the external git + repo + type: string + targetRevision: + description: TargetRevision is the revision of the git + repo + type: string + valueFiles: + description: FileParameters are file parameters to the + helm template + items: + type: string + type: array + type: object + type: array fileParameters: description: FileParameters are file parameters to the helm template @@ -935,6 +983,30 @@ spec: helm: description: Helm holds helm specific options properties: + externalValueFiles: + description: ValuesFilesExternalValueFiles is a list + of Helm value files to use when generating a template + that come from an external git repo + items: + description: HelmExternalValue are values from other + git repositories + properties: + repoURL: + description: RepoURL is the URL of the external + git repo + type: string + targetRevision: + description: TargetRevision is the revision of + the git repo + type: string + valueFiles: + description: FileParameters are file parameters + to the helm template + items: + type: string + type: array + type: object + type: array fileParameters: description: FileParameters are file parameters to the helm template @@ -1312,6 +1384,30 @@ spec: helm: description: Helm holds helm specific options properties: + externalValueFiles: + description: ValuesFilesExternalValueFiles is + a list of Helm value files to use when generating + a template that come from an external git repo + items: + description: HelmExternalValue are values from + other git repositories + properties: + repoURL: + description: RepoURL is the URL of the external + git repo + type: string + targetRevision: + description: TargetRevision is the revision + of the git repo + type: string + valueFiles: + description: FileParameters are file parameters + to the helm template + items: + type: string + type: array + type: object + type: array fileParameters: description: FileParameters are file parameters to the helm template @@ -1674,6 +1770,30 @@ spec: helm: description: Helm holds helm specific options properties: + externalValueFiles: + description: ValuesFilesExternalValueFiles is a list + of Helm value files to use when generating a template + that come from an external git repo + items: + description: HelmExternalValue are values from other + git repositories + properties: + repoURL: + description: RepoURL is the URL of the external + git repo + type: string + targetRevision: + description: TargetRevision is the revision + of the git repo + type: string + valueFiles: + description: FileParameters are file parameters + to the helm template + items: + type: string + type: array + type: object + type: array fileParameters: description: FileParameters are file parameters to the helm template @@ -2021,6 +2141,30 @@ spec: helm: description: Helm holds helm specific options properties: + externalValueFiles: + description: ValuesFilesExternalValueFiles is a list + of Helm value files to use when generating a template + that come from an external git repo + items: + description: HelmExternalValue are values from other + git repositories + properties: + repoURL: + description: RepoURL is the URL of the external + git repo + type: string + targetRevision: + description: TargetRevision is the revision + of the git repo + type: string + valueFiles: + description: FileParameters are file parameters + to the helm template + items: + type: string + type: array + type: object + type: array fileParameters: description: FileParameters are file parameters to the helm template diff --git a/manifests/crds/application-crd.yaml b/manifests/crds/application-crd.yaml index 94053a7934fda..b421c2cc574f8 100644 --- a/manifests/crds/application-crd.yaml +++ b/manifests/crds/application-crd.yaml @@ -217,6 +217,30 @@ spec: helm: description: Helm holds helm specific options properties: + externalValueFiles: + description: ValuesFilesExternalValueFiles is a list of + Helm value files to use when generating a template that + come from an external git repo + items: + description: HelmExternalValue are values from other + git repositories + properties: + repoURL: + description: RepoURL is the URL of the external + git repo + type: string + targetRevision: + description: TargetRevision is the revision of the + git repo + type: string + valueFiles: + description: FileParameters are file parameters + to the helm template + items: + type: string + type: array + type: object + type: array fileParameters: description: FileParameters are file parameters to the helm template @@ -570,6 +594,30 @@ spec: helm: description: Helm holds helm specific options properties: + externalValueFiles: + description: ValuesFilesExternalValueFiles is a list of Helm + value files to use when generating a template that come + from an external git repo + items: + description: HelmExternalValue are values from other git + repositories + properties: + repoURL: + description: RepoURL is the URL of the external git + repo + type: string + targetRevision: + description: TargetRevision is the revision of the git + repo + type: string + valueFiles: + description: FileParameters are file parameters to the + helm template + items: + type: string + type: array + type: object + type: array fileParameters: description: FileParameters are file parameters to the helm template @@ -934,6 +982,30 @@ spec: helm: description: Helm holds helm specific options properties: + externalValueFiles: + description: ValuesFilesExternalValueFiles is a list + of Helm value files to use when generating a template + that come from an external git repo + items: + description: HelmExternalValue are values from other + git repositories + properties: + repoURL: + description: RepoURL is the URL of the external + git repo + type: string + targetRevision: + description: TargetRevision is the revision of + the git repo + type: string + valueFiles: + description: FileParameters are file parameters + to the helm template + items: + type: string + type: array + type: object + type: array fileParameters: description: FileParameters are file parameters to the helm template @@ -1311,6 +1383,30 @@ spec: helm: description: Helm holds helm specific options properties: + externalValueFiles: + description: ValuesFilesExternalValueFiles is + a list of Helm value files to use when generating + a template that come from an external git repo + items: + description: HelmExternalValue are values from + other git repositories + properties: + repoURL: + description: RepoURL is the URL of the external + git repo + type: string + targetRevision: + description: TargetRevision is the revision + of the git repo + type: string + valueFiles: + description: FileParameters are file parameters + to the helm template + items: + type: string + type: array + type: object + type: array fileParameters: description: FileParameters are file parameters to the helm template @@ -1673,6 +1769,30 @@ spec: helm: description: Helm holds helm specific options properties: + externalValueFiles: + description: ValuesFilesExternalValueFiles is a list + of Helm value files to use when generating a template + that come from an external git repo + items: + description: HelmExternalValue are values from other + git repositories + properties: + repoURL: + description: RepoURL is the URL of the external + git repo + type: string + targetRevision: + description: TargetRevision is the revision + of the git repo + type: string + valueFiles: + description: FileParameters are file parameters + to the helm template + items: + type: string + type: array + type: object + type: array fileParameters: description: FileParameters are file parameters to the helm template @@ -2020,6 +2140,30 @@ spec: helm: description: Helm holds helm specific options properties: + externalValueFiles: + description: ValuesFilesExternalValueFiles is a list + of Helm value files to use when generating a template + that come from an external git repo + items: + description: HelmExternalValue are values from other + git repositories + properties: + repoURL: + description: RepoURL is the URL of the external + git repo + type: string + targetRevision: + description: TargetRevision is the revision + of the git repo + type: string + valueFiles: + description: FileParameters are file parameters + to the helm template + items: + type: string + type: array + type: object + type: array fileParameters: description: FileParameters are file parameters to the helm template diff --git a/manifests/ha/install.yaml b/manifests/ha/install.yaml index 09a662e34aec1..c541c173aeeed 100644 --- a/manifests/ha/install.yaml +++ b/manifests/ha/install.yaml @@ -218,6 +218,30 @@ spec: helm: description: Helm holds helm specific options properties: + externalValueFiles: + description: ValuesFilesExternalValueFiles is a list of + Helm value files to use when generating a template that + come from an external git repo + items: + description: HelmExternalValue are values from other + git repositories + properties: + repoURL: + description: RepoURL is the URL of the external + git repo + type: string + targetRevision: + description: TargetRevision is the revision of the + git repo + type: string + valueFiles: + description: FileParameters are file parameters + to the helm template + items: + type: string + type: array + type: object + type: array fileParameters: description: FileParameters are file parameters to the helm template @@ -571,6 +595,30 @@ spec: helm: description: Helm holds helm specific options properties: + externalValueFiles: + description: ValuesFilesExternalValueFiles is a list of Helm + value files to use when generating a template that come + from an external git repo + items: + description: HelmExternalValue are values from other git + repositories + properties: + repoURL: + description: RepoURL is the URL of the external git + repo + type: string + targetRevision: + description: TargetRevision is the revision of the git + repo + type: string + valueFiles: + description: FileParameters are file parameters to the + helm template + items: + type: string + type: array + type: object + type: array fileParameters: description: FileParameters are file parameters to the helm template @@ -935,6 +983,30 @@ spec: helm: description: Helm holds helm specific options properties: + externalValueFiles: + description: ValuesFilesExternalValueFiles is a list + of Helm value files to use when generating a template + that come from an external git repo + items: + description: HelmExternalValue are values from other + git repositories + properties: + repoURL: + description: RepoURL is the URL of the external + git repo + type: string + targetRevision: + description: TargetRevision is the revision of + the git repo + type: string + valueFiles: + description: FileParameters are file parameters + to the helm template + items: + type: string + type: array + type: object + type: array fileParameters: description: FileParameters are file parameters to the helm template @@ -1312,6 +1384,30 @@ spec: helm: description: Helm holds helm specific options properties: + externalValueFiles: + description: ValuesFilesExternalValueFiles is + a list of Helm value files to use when generating + a template that come from an external git repo + items: + description: HelmExternalValue are values from + other git repositories + properties: + repoURL: + description: RepoURL is the URL of the external + git repo + type: string + targetRevision: + description: TargetRevision is the revision + of the git repo + type: string + valueFiles: + description: FileParameters are file parameters + to the helm template + items: + type: string + type: array + type: object + type: array fileParameters: description: FileParameters are file parameters to the helm template @@ -1674,6 +1770,30 @@ spec: helm: description: Helm holds helm specific options properties: + externalValueFiles: + description: ValuesFilesExternalValueFiles is a list + of Helm value files to use when generating a template + that come from an external git repo + items: + description: HelmExternalValue are values from other + git repositories + properties: + repoURL: + description: RepoURL is the URL of the external + git repo + type: string + targetRevision: + description: TargetRevision is the revision + of the git repo + type: string + valueFiles: + description: FileParameters are file parameters + to the helm template + items: + type: string + type: array + type: object + type: array fileParameters: description: FileParameters are file parameters to the helm template @@ -2021,6 +2141,30 @@ spec: helm: description: Helm holds helm specific options properties: + externalValueFiles: + description: ValuesFilesExternalValueFiles is a list + of Helm value files to use when generating a template + that come from an external git repo + items: + description: HelmExternalValue are values from other + git repositories + properties: + repoURL: + description: RepoURL is the URL of the external + git repo + type: string + targetRevision: + description: TargetRevision is the revision + of the git repo + type: string + valueFiles: + description: FileParameters are file parameters + to the helm template + items: + type: string + type: array + type: object + type: array fileParameters: description: FileParameters are file parameters to the helm template diff --git a/manifests/install.yaml b/manifests/install.yaml index 182f9fba16fce..b5495757c1e62 100644 --- a/manifests/install.yaml +++ b/manifests/install.yaml @@ -218,6 +218,30 @@ spec: helm: description: Helm holds helm specific options properties: + externalValueFiles: + description: ValuesFilesExternalValueFiles is a list of + Helm value files to use when generating a template that + come from an external git repo + items: + description: HelmExternalValue are values from other + git repositories + properties: + repoURL: + description: RepoURL is the URL of the external + git repo + type: string + targetRevision: + description: TargetRevision is the revision of the + git repo + type: string + valueFiles: + description: FileParameters are file parameters + to the helm template + items: + type: string + type: array + type: object + type: array fileParameters: description: FileParameters are file parameters to the helm template @@ -571,6 +595,30 @@ spec: helm: description: Helm holds helm specific options properties: + externalValueFiles: + description: ValuesFilesExternalValueFiles is a list of Helm + value files to use when generating a template that come + from an external git repo + items: + description: HelmExternalValue are values from other git + repositories + properties: + repoURL: + description: RepoURL is the URL of the external git + repo + type: string + targetRevision: + description: TargetRevision is the revision of the git + repo + type: string + valueFiles: + description: FileParameters are file parameters to the + helm template + items: + type: string + type: array + type: object + type: array fileParameters: description: FileParameters are file parameters to the helm template @@ -935,6 +983,30 @@ spec: helm: description: Helm holds helm specific options properties: + externalValueFiles: + description: ValuesFilesExternalValueFiles is a list + of Helm value files to use when generating a template + that come from an external git repo + items: + description: HelmExternalValue are values from other + git repositories + properties: + repoURL: + description: RepoURL is the URL of the external + git repo + type: string + targetRevision: + description: TargetRevision is the revision of + the git repo + type: string + valueFiles: + description: FileParameters are file parameters + to the helm template + items: + type: string + type: array + type: object + type: array fileParameters: description: FileParameters are file parameters to the helm template @@ -1312,6 +1384,30 @@ spec: helm: description: Helm holds helm specific options properties: + externalValueFiles: + description: ValuesFilesExternalValueFiles is + a list of Helm value files to use when generating + a template that come from an external git repo + items: + description: HelmExternalValue are values from + other git repositories + properties: + repoURL: + description: RepoURL is the URL of the external + git repo + type: string + targetRevision: + description: TargetRevision is the revision + of the git repo + type: string + valueFiles: + description: FileParameters are file parameters + to the helm template + items: + type: string + type: array + type: object + type: array fileParameters: description: FileParameters are file parameters to the helm template @@ -1674,6 +1770,30 @@ spec: helm: description: Helm holds helm specific options properties: + externalValueFiles: + description: ValuesFilesExternalValueFiles is a list + of Helm value files to use when generating a template + that come from an external git repo + items: + description: HelmExternalValue are values from other + git repositories + properties: + repoURL: + description: RepoURL is the URL of the external + git repo + type: string + targetRevision: + description: TargetRevision is the revision + of the git repo + type: string + valueFiles: + description: FileParameters are file parameters + to the helm template + items: + type: string + type: array + type: object + type: array fileParameters: description: FileParameters are file parameters to the helm template @@ -2021,6 +2141,30 @@ spec: helm: description: Helm holds helm specific options properties: + externalValueFiles: + description: ValuesFilesExternalValueFiles is a list + of Helm value files to use when generating a template + that come from an external git repo + items: + description: HelmExternalValue are values from other + git repositories + properties: + repoURL: + description: RepoURL is the URL of the external + git repo + type: string + targetRevision: + description: TargetRevision is the revision + of the git repo + type: string + valueFiles: + description: FileParameters are file parameters + to the helm template + items: + type: string + type: array + type: object + type: array fileParameters: description: FileParameters are file parameters to the helm template diff --git a/pkg/apis/api-rules/violation_exceptions.list b/pkg/apis/api-rules/violation_exceptions.list index 8a1f20c3e477e..4125e681e1caf 100644 --- a/pkg/apis/api-rules/violation_exceptions.list +++ b/pkg/apis/api-rules/violation_exceptions.list @@ -6,6 +6,7 @@ API rule violation: list_type_missing,github.com/argoproj/argo-cd/v2/pkg/apis/ap API rule violation: list_type_missing,github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1,AppProjectSpec,Roles API rule violation: list_type_missing,github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1,AppProjectSpec,SignatureKeys API rule violation: list_type_missing,github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1,AppProjectSpec,SourceRepos +API rule violation: list_type_missing,github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1,ApplicationSourceHelm,ExternalValueFiles API rule violation: list_type_missing,github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1,ApplicationSourceHelm,FileParameters API rule violation: list_type_missing,github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1,ApplicationSourceHelm,Parameters API rule violation: list_type_missing,github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1,ApplicationSourceHelm,ValueFiles @@ -27,6 +28,7 @@ API rule violation: list_type_missing,github.com/argoproj/argo-cd/v2/pkg/apis/ap API rule violation: list_type_missing,github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1,Command,Args API rule violation: list_type_missing,github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1,Command,Command API rule violation: list_type_missing,github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1,ExecProviderConfig,Args +API rule violation: list_type_missing,github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1,HelmExternalValue,ValueFiles API rule violation: list_type_missing,github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1,HostInfo,ResourcesInfo API rule violation: list_type_missing,github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1,JWTTokens,Items API rule violation: list_type_missing,github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1,Operation,Info diff --git a/pkg/apis/application/v1alpha1/generated.pb.go b/pkg/apis/application/v1alpha1/generated.pb.go index 056068c382db2..fa54d2aaedaf5 100644 --- a/pkg/apis/application/v1alpha1/generated.pb.go +++ b/pkg/apis/application/v1alpha1/generated.pb.go @@ -1072,10 +1072,38 @@ func (m *HealthStatus) XXX_DiscardUnknown() { var xxx_messageInfo_HealthStatus proto.InternalMessageInfo +func (m *HelmExternalValue) Reset() { *m = HelmExternalValue{} } +func (*HelmExternalValue) ProtoMessage() {} +func (*HelmExternalValue) Descriptor() ([]byte, []int) { + return fileDescriptor_030104ce3b95bcac, []int{37} +} +func (m *HelmExternalValue) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *HelmExternalValue) 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 *HelmExternalValue) XXX_Merge(src proto.Message) { + xxx_messageInfo_HelmExternalValue.Merge(m, src) +} +func (m *HelmExternalValue) XXX_Size() int { + return m.Size() +} +func (m *HelmExternalValue) XXX_DiscardUnknown() { + xxx_messageInfo_HelmExternalValue.DiscardUnknown(m) +} + +var xxx_messageInfo_HelmExternalValue proto.InternalMessageInfo + func (m *HelmFileParameter) Reset() { *m = HelmFileParameter{} } func (*HelmFileParameter) ProtoMessage() {} func (*HelmFileParameter) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{37} + return fileDescriptor_030104ce3b95bcac, []int{38} } func (m *HelmFileParameter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1103,7 +1131,7 @@ var xxx_messageInfo_HelmFileParameter proto.InternalMessageInfo func (m *HelmParameter) Reset() { *m = HelmParameter{} } func (*HelmParameter) ProtoMessage() {} func (*HelmParameter) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{38} + return fileDescriptor_030104ce3b95bcac, []int{39} } func (m *HelmParameter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1131,7 +1159,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{39} + return fileDescriptor_030104ce3b95bcac, []int{40} } func (m *HostInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1159,7 +1187,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{40} + return fileDescriptor_030104ce3b95bcac, []int{41} } func (m *HostResourceInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1187,7 +1215,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{41} + return fileDescriptor_030104ce3b95bcac, []int{42} } func (m *Info) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1215,7 +1243,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{42} + return fileDescriptor_030104ce3b95bcac, []int{43} } func (m *InfoItem) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1243,7 +1271,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{43} + return fileDescriptor_030104ce3b95bcac, []int{44} } func (m *JWTToken) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1271,7 +1299,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{44} + return fileDescriptor_030104ce3b95bcac, []int{45} } func (m *JWTTokens) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1299,7 +1327,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{45} + return fileDescriptor_030104ce3b95bcac, []int{46} } func (m *JsonnetVar) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1327,7 +1355,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{46} + return fileDescriptor_030104ce3b95bcac, []int{47} } func (m *KnownTypeField) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1355,7 +1383,7 @@ var xxx_messageInfo_KnownTypeField proto.InternalMessageInfo func (m *KsonnetParameter) Reset() { *m = KsonnetParameter{} } func (*KsonnetParameter) ProtoMessage() {} func (*KsonnetParameter) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{47} + return fileDescriptor_030104ce3b95bcac, []int{48} } func (m *KsonnetParameter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1383,7 +1411,7 @@ var xxx_messageInfo_KsonnetParameter proto.InternalMessageInfo func (m *KustomizeOptions) Reset() { *m = KustomizeOptions{} } func (*KustomizeOptions) ProtoMessage() {} func (*KustomizeOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{48} + return fileDescriptor_030104ce3b95bcac, []int{49} } func (m *KustomizeOptions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1411,7 +1439,7 @@ var xxx_messageInfo_KustomizeOptions proto.InternalMessageInfo func (m *Operation) Reset() { *m = Operation{} } func (*Operation) ProtoMessage() {} func (*Operation) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{49} + return fileDescriptor_030104ce3b95bcac, []int{50} } func (m *Operation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1439,7 +1467,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{50} + return fileDescriptor_030104ce3b95bcac, []int{51} } func (m *OperationInitiator) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1467,7 +1495,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{51} + return fileDescriptor_030104ce3b95bcac, []int{52} } func (m *OperationState) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1495,7 +1523,7 @@ var xxx_messageInfo_OperationState proto.InternalMessageInfo func (m *OrphanedResourceKey) Reset() { *m = OrphanedResourceKey{} } func (*OrphanedResourceKey) ProtoMessage() {} func (*OrphanedResourceKey) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{52} + return fileDescriptor_030104ce3b95bcac, []int{53} } func (m *OrphanedResourceKey) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1523,7 +1551,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{53} + return fileDescriptor_030104ce3b95bcac, []int{54} } func (m *OrphanedResourcesMonitorSettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1551,7 +1579,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{54} + return fileDescriptor_030104ce3b95bcac, []int{55} } func (m *OverrideIgnoreDiff) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1579,7 +1607,7 @@ var xxx_messageInfo_OverrideIgnoreDiff proto.InternalMessageInfo func (m *ProjectRole) Reset() { *m = ProjectRole{} } func (*ProjectRole) ProtoMessage() {} func (*ProjectRole) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{55} + return fileDescriptor_030104ce3b95bcac, []int{56} } func (m *ProjectRole) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1607,7 +1635,7 @@ var xxx_messageInfo_ProjectRole proto.InternalMessageInfo func (m *RepoCreds) Reset() { *m = RepoCreds{} } func (*RepoCreds) ProtoMessage() {} func (*RepoCreds) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{56} + return fileDescriptor_030104ce3b95bcac, []int{57} } func (m *RepoCreds) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1635,7 +1663,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{57} + return fileDescriptor_030104ce3b95bcac, []int{58} } func (m *RepoCredsList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1663,7 +1691,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{58} + return fileDescriptor_030104ce3b95bcac, []int{59} } func (m *Repository) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1691,7 +1719,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{59} + return fileDescriptor_030104ce3b95bcac, []int{60} } func (m *RepositoryCertificate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1719,7 +1747,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{60} + return fileDescriptor_030104ce3b95bcac, []int{61} } func (m *RepositoryCertificateList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1747,7 +1775,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{61} + return fileDescriptor_030104ce3b95bcac, []int{62} } func (m *RepositoryList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1775,7 +1803,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{62} + return fileDescriptor_030104ce3b95bcac, []int{63} } func (m *ResourceAction) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1803,7 +1831,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{63} + return fileDescriptor_030104ce3b95bcac, []int{64} } func (m *ResourceActionDefinition) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1831,7 +1859,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{64} + return fileDescriptor_030104ce3b95bcac, []int{65} } func (m *ResourceActionParam) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1859,7 +1887,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{65} + return fileDescriptor_030104ce3b95bcac, []int{66} } func (m *ResourceActions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1887,7 +1915,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{66} + return fileDescriptor_030104ce3b95bcac, []int{67} } func (m *ResourceDiff) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1915,7 +1943,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{67} + return fileDescriptor_030104ce3b95bcac, []int{68} } func (m *ResourceIgnoreDifferences) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1943,7 +1971,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{68} + return fileDescriptor_030104ce3b95bcac, []int{69} } func (m *ResourceNetworkingInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1971,7 +1999,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{69} + return fileDescriptor_030104ce3b95bcac, []int{70} } func (m *ResourceNode) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1999,7 +2027,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{70} + return fileDescriptor_030104ce3b95bcac, []int{71} } func (m *ResourceOverride) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2027,7 +2055,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{71} + return fileDescriptor_030104ce3b95bcac, []int{72} } func (m *ResourceRef) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2055,7 +2083,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{72} + return fileDescriptor_030104ce3b95bcac, []int{73} } func (m *ResourceResult) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2083,7 +2111,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{73} + return fileDescriptor_030104ce3b95bcac, []int{74} } func (m *ResourceStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2111,7 +2139,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{74} + return fileDescriptor_030104ce3b95bcac, []int{75} } func (m *RetryStrategy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2139,7 +2167,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{75} + return fileDescriptor_030104ce3b95bcac, []int{76} } func (m *RevisionHistory) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2167,7 +2195,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{76} + return fileDescriptor_030104ce3b95bcac, []int{77} } func (m *RevisionMetadata) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2195,7 +2223,7 @@ var xxx_messageInfo_RevisionMetadata proto.InternalMessageInfo func (m *SignatureKey) Reset() { *m = SignatureKey{} } func (*SignatureKey) ProtoMessage() {} func (*SignatureKey) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{77} + return fileDescriptor_030104ce3b95bcac, []int{78} } func (m *SignatureKey) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2223,7 +2251,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{78} + return fileDescriptor_030104ce3b95bcac, []int{79} } func (m *SyncOperation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2251,7 +2279,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{79} + return fileDescriptor_030104ce3b95bcac, []int{80} } func (m *SyncOperationResource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2279,7 +2307,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{80} + return fileDescriptor_030104ce3b95bcac, []int{81} } func (m *SyncOperationResult) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2307,7 +2335,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{81} + return fileDescriptor_030104ce3b95bcac, []int{82} } func (m *SyncPolicy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2335,7 +2363,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{82} + return fileDescriptor_030104ce3b95bcac, []int{83} } func (m *SyncPolicyAutomated) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2363,7 +2391,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{83} + return fileDescriptor_030104ce3b95bcac, []int{84} } func (m *SyncStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2391,7 +2419,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{84} + return fileDescriptor_030104ce3b95bcac, []int{85} } func (m *SyncStrategy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2419,7 +2447,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{85} + return fileDescriptor_030104ce3b95bcac, []int{86} } func (m *SyncStrategyApply) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2447,7 +2475,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{86} + return fileDescriptor_030104ce3b95bcac, []int{87} } func (m *SyncStrategyHook) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2475,7 +2503,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{87} + return fileDescriptor_030104ce3b95bcac, []int{88} } func (m *SyncWindow) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2503,7 +2531,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{88} + return fileDescriptor_030104ce3b95bcac, []int{89} } func (m *TLSClientConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2570,6 +2598,7 @@ func init() { proto.RegisterType((*GnuPGPublicKey)(nil), "github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.GnuPGPublicKey") proto.RegisterType((*GnuPGPublicKeyList)(nil), "github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.GnuPGPublicKeyList") proto.RegisterType((*HealthStatus)(nil), "github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.HealthStatus") + proto.RegisterType((*HelmExternalValue)(nil), "github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.HelmExternalValue") proto.RegisterType((*HelmFileParameter)(nil), "github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.HelmFileParameter") proto.RegisterType((*HelmParameter)(nil), "github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.HelmParameter") proto.RegisterType((*HostInfo)(nil), "github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.HostInfo") @@ -2631,423 +2660,426 @@ func init() { } var fileDescriptor_030104ce3b95bcac = []byte{ - // 6644 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x6b, 0x6c, 0x24, 0xd9, - 0x55, 0xf0, 0x56, 0xb7, 0x1f, 0xdd, 0xc7, 0x8f, 0x19, 0xdf, 0x79, 0xac, 0x33, 0xdf, 0x66, 0x3c, - 0xaa, 0x55, 0x92, 0xfd, 0x48, 0x62, 0xb3, 0xc3, 0x12, 0x96, 0x6c, 0x48, 0x70, 0xdb, 0xf3, 0xf0, - 0x8c, 0x67, 0xc6, 0x7b, 0xec, 0x99, 0x21, 0x0f, 0xc2, 0x96, 0xab, 0x6f, 0xb7, 0x6b, 0xdc, 0x5d, - 0xd5, 0x5b, 0x55, 0xed, 0x71, 0x27, 0xe4, 0x85, 0x02, 0x59, 0x91, 0xc7, 0xae, 0x92, 0xfc, 0x48, - 0x24, 0x04, 0xe1, 0x21, 0x24, 0x7e, 0x44, 0xc0, 0x2f, 0x40, 0xc0, 0x9f, 0xfc, 0x0a, 0x42, 0x82, - 0x48, 0xa0, 0x24, 0x10, 0x61, 0x92, 0x21, 0x88, 0x87, 0x04, 0x08, 0xc8, 0x1f, 0xe6, 0x17, 0xba, - 0xef, 0x5b, 0xd5, 0xdd, 0x63, 0x7b, 0x5c, 0x33, 0x89, 0x22, 0xfe, 0xb9, 0xcf, 0x39, 0x75, 0xce, - 0xb9, 0xaf, 0x73, 0xcf, 0x3d, 0xe7, 0xdc, 0x6b, 0x58, 0x6d, 0x06, 0xe9, 0x56, 0x77, 0x73, 0xde, - 0x8f, 0xda, 0x0b, 0x5e, 0xdc, 0x8c, 0x3a, 0x71, 0x74, 0x87, 0xff, 0xf1, 0x56, 0xbf, 0xbe, 0xb0, - 0x73, 0x7e, 0xa1, 0xb3, 0xdd, 0x5c, 0xf0, 0x3a, 0x41, 0xb2, 0xe0, 0x75, 0x3a, 0xad, 0xc0, 0xf7, - 0xd2, 0x20, 0x0a, 0x17, 0x76, 0x9e, 0xf5, 0x5a, 0x9d, 0x2d, 0xef, 0xd9, 0x85, 0x26, 0x0d, 0x69, - 0xec, 0xa5, 0xb4, 0x3e, 0xdf, 0x89, 0xa3, 0x34, 0x22, 0xef, 0x30, 0xdc, 0xe6, 0x15, 0x37, 0xfe, - 0xc7, 0xcf, 0xf9, 0xf5, 0xf9, 0x9d, 0xf3, 0xf3, 0x9d, 0xed, 0xe6, 0x3c, 0xe3, 0x36, 0x6f, 0x71, - 0x9b, 0x57, 0xdc, 0xce, 0xbc, 0xd5, 0xd2, 0xa5, 0x19, 0x35, 0xa3, 0x05, 0xce, 0x74, 0xb3, 0xdb, - 0xe0, 0xbf, 0xf8, 0x0f, 0xfe, 0x97, 0x10, 0x76, 0xc6, 0xdd, 0x7e, 0x3e, 0x99, 0x0f, 0x22, 0xa6, - 0xde, 0x82, 0x1f, 0xc5, 0x74, 0x61, 0xa7, 0x4f, 0xa1, 0x33, 0xcf, 0x19, 0x9a, 0xb6, 0xe7, 0x6f, - 0x05, 0x21, 0x8d, 0x7b, 0xa6, 0x4d, 0x6d, 0x9a, 0x7a, 0x83, 0xbe, 0x5a, 0x18, 0xf6, 0x55, 0xdc, - 0x0d, 0xd3, 0xa0, 0x4d, 0xfb, 0x3e, 0x78, 0xdb, 0x7e, 0x1f, 0x24, 0xfe, 0x16, 0x6d, 0x7b, 0xf9, - 0xef, 0xdc, 0x97, 0x61, 0x6a, 0xf1, 0xf6, 0xfa, 0x62, 0x37, 0xdd, 0x5a, 0x8a, 0xc2, 0x46, 0xd0, - 0x24, 0x3f, 0x0e, 0x13, 0x7e, 0xab, 0x9b, 0xa4, 0x34, 0xbe, 0xee, 0xb5, 0xe9, 0xac, 0x73, 0xce, - 0x79, 0xa6, 0x5a, 0x3b, 0xf1, 0xd5, 0xbd, 0xb9, 0x27, 0xee, 0xed, 0xcd, 0x4d, 0x2c, 0x19, 0x14, - 0xda, 0x74, 0xe4, 0xff, 0xc3, 0x78, 0x1c, 0xb5, 0xe8, 0x22, 0x5e, 0x9f, 0x2d, 0xf1, 0x4f, 0x8e, - 0xc9, 0x4f, 0xc6, 0x51, 0x80, 0x51, 0xe1, 0xdd, 0xaf, 0x97, 0x00, 0x16, 0x3b, 0x9d, 0xb5, 0x38, - 0xba, 0x43, 0xfd, 0x94, 0xbc, 0x04, 0x15, 0xd6, 0x0b, 0x75, 0x2f, 0xf5, 0xb8, 0xb4, 0x89, 0xf3, - 0x3f, 0x3a, 0x2f, 0x1a, 0x33, 0x6f, 0x37, 0xc6, 0x8c, 0x1c, 0xa3, 0x9e, 0xdf, 0x79, 0x76, 0xfe, - 0xc6, 0x26, 0xfb, 0xfe, 0x1a, 0x4d, 0xbd, 0x1a, 0x91, 0xc2, 0xc0, 0xc0, 0x50, 0x73, 0x25, 0x21, - 0x8c, 0x24, 0x1d, 0xea, 0x73, 0xc5, 0x26, 0xce, 0xaf, 0xce, 0x1f, 0x65, 0x8a, 0xcc, 0x1b, 0xcd, - 0xd7, 0x3b, 0xd4, 0xaf, 0x4d, 0x4a, 0xc9, 0x23, 0xec, 0x17, 0x72, 0x39, 0x64, 0x07, 0xc6, 0x92, - 0xd4, 0x4b, 0xbb, 0xc9, 0x6c, 0x99, 0x4b, 0xbc, 0x5e, 0x98, 0x44, 0xce, 0xb5, 0x36, 0x2d, 0x65, - 0x8e, 0x89, 0xdf, 0x28, 0xa5, 0xb9, 0x7f, 0xe7, 0xc0, 0xb4, 0x21, 0x5e, 0x0d, 0x92, 0x94, 0xbc, - 0xaf, 0xaf, 0x73, 0xe7, 0x0f, 0xd6, 0xb9, 0xec, 0x6b, 0xde, 0xb5, 0xc7, 0xa5, 0xb0, 0x8a, 0x82, - 0x58, 0x1d, 0xdb, 0x86, 0xd1, 0x20, 0xa5, 0xed, 0x64, 0xb6, 0x74, 0xae, 0xfc, 0xcc, 0xc4, 0xf9, - 0xcb, 0x45, 0xb5, 0xb3, 0x36, 0x25, 0x85, 0x8e, 0xae, 0x30, 0xf6, 0x28, 0xa4, 0xb8, 0xdf, 0x03, - 0xbb, 0x7d, 0xac, 0xc3, 0xc9, 0xb3, 0x30, 0x91, 0x44, 0xdd, 0xd8, 0xa7, 0x48, 0x3b, 0x51, 0x32, - 0xeb, 0x9c, 0x2b, 0xb3, 0xa9, 0xc7, 0x66, 0xea, 0xba, 0x01, 0xa3, 0x4d, 0x43, 0x3e, 0xe3, 0xc0, - 0x64, 0x9d, 0x26, 0x69, 0x10, 0x72, 0xf9, 0x4a, 0xf9, 0x8d, 0x23, 0x2b, 0xaf, 0x80, 0xcb, 0x86, - 0x79, 0xed, 0xa4, 0x6c, 0xc8, 0xa4, 0x05, 0x4c, 0x30, 0x23, 0x9f, 0xad, 0xb8, 0x3a, 0x4d, 0xfc, - 0x38, 0xe8, 0xb0, 0xdf, 0x7c, 0xce, 0x58, 0x2b, 0x6e, 0xd9, 0xa0, 0xd0, 0xa6, 0x23, 0x21, 0x8c, - 0xb2, 0x15, 0x95, 0xcc, 0x8e, 0x70, 0xfd, 0x57, 0x8e, 0xa6, 0xbf, 0xec, 0x54, 0xb6, 0x58, 0x4d, - 0xef, 0xb3, 0x5f, 0x09, 0x0a, 0x31, 0xe4, 0xd3, 0x0e, 0xcc, 0xca, 0x15, 0x8f, 0x54, 0x74, 0xe8, - 0xed, 0xad, 0x20, 0xa5, 0xad, 0x20, 0x49, 0x67, 0x47, 0xb9, 0x0e, 0x0b, 0x07, 0x9b, 0x5b, 0x97, - 0xe2, 0xa8, 0xdb, 0xb9, 0x1a, 0x84, 0xf5, 0xda, 0x39, 0x29, 0x69, 0x76, 0x69, 0x08, 0x63, 0x1c, - 0x2a, 0x92, 0x7c, 0xce, 0x81, 0x33, 0xa1, 0xd7, 0xa6, 0x49, 0xc7, 0x63, 0x43, 0x2b, 0xd0, 0xb5, - 0x96, 0xe7, 0x6f, 0x73, 0x8d, 0xc6, 0x1e, 0x4e, 0x23, 0x57, 0x6a, 0x74, 0xe6, 0xfa, 0x50, 0xd6, - 0xf8, 0x00, 0xb1, 0xe4, 0x37, 0x1d, 0x98, 0x89, 0xe2, 0xce, 0x96, 0x17, 0xd2, 0xba, 0xc2, 0x26, - 0xb3, 0xe3, 0x7c, 0xe9, 0xbd, 0xff, 0x68, 0x43, 0x74, 0x23, 0xcf, 0xf6, 0x5a, 0x14, 0x06, 0x69, - 0x14, 0xaf, 0xd3, 0x34, 0x0d, 0xc2, 0x66, 0x52, 0x3b, 0x75, 0x6f, 0x6f, 0x6e, 0xa6, 0x8f, 0x0a, - 0xfb, 0xf5, 0x21, 0x1f, 0x84, 0x89, 0xa4, 0x17, 0xfa, 0xb7, 0x83, 0xb0, 0x1e, 0xdd, 0x4d, 0x66, - 0x2b, 0x45, 0x2c, 0xdf, 0x75, 0xcd, 0x50, 0x2e, 0x40, 0x23, 0x00, 0x6d, 0x69, 0x83, 0x07, 0xce, - 0x4c, 0xa5, 0x6a, 0xd1, 0x03, 0x67, 0x26, 0xd3, 0x03, 0xc4, 0x92, 0x4f, 0x38, 0x30, 0x95, 0x04, - 0xcd, 0xd0, 0x4b, 0xbb, 0x31, 0xbd, 0x4a, 0x7b, 0xc9, 0x2c, 0x70, 0x45, 0xae, 0x1c, 0xb1, 0x57, - 0x2c, 0x96, 0xb5, 0x53, 0x52, 0xc7, 0x29, 0x1b, 0x9a, 0x60, 0x56, 0xee, 0xa0, 0x85, 0x66, 0xa6, - 0xf5, 0x44, 0xb1, 0x0b, 0xcd, 0x4c, 0xea, 0xa1, 0x22, 0xdd, 0x3f, 0x2b, 0xc1, 0xf1, 0xfc, 0x1e, - 0x44, 0x7e, 0xdb, 0x81, 0x63, 0x77, 0xee, 0xa6, 0x1b, 0xd1, 0x36, 0x0d, 0x93, 0x5a, 0x8f, 0x59, - 0x0a, 0x6e, 0x7d, 0x27, 0xce, 0xfb, 0xc5, 0xee, 0x76, 0xf3, 0x57, 0xb2, 0x52, 0x2e, 0x84, 0x69, - 0xdc, 0xab, 0x3d, 0x29, 0xdb, 0x73, 0xec, 0xca, 0xed, 0x0d, 0x1b, 0x8b, 0x79, 0xa5, 0xce, 0x7c, - 0xd2, 0x81, 0x93, 0x83, 0x58, 0x90, 0xe3, 0x50, 0xde, 0xa6, 0x3d, 0xe1, 0xe0, 0x20, 0xfb, 0x93, - 0xfc, 0x2c, 0x8c, 0xee, 0x78, 0xad, 0x2e, 0x95, 0x8e, 0xc2, 0xa5, 0xa3, 0x35, 0x44, 0x6b, 0x86, - 0x82, 0xeb, 0xdb, 0x4b, 0xcf, 0x3b, 0xee, 0x5f, 0x96, 0x61, 0xc2, 0xda, 0x2a, 0x1e, 0x83, 0xf3, - 0x13, 0x65, 0x9c, 0x9f, 0x6b, 0x85, 0xed, 0x72, 0x43, 0xbd, 0x9f, 0xbb, 0x39, 0xef, 0xe7, 0x46, - 0x71, 0x22, 0x1f, 0xe8, 0xfe, 0x90, 0x14, 0xaa, 0x51, 0x87, 0x39, 0xb7, 0x6c, 0x17, 0x1d, 0x29, - 0x62, 0x08, 0x6f, 0x28, 0x76, 0xb5, 0xa9, 0x7b, 0x7b, 0x73, 0x55, 0xfd, 0x13, 0x8d, 0x20, 0xf7, - 0x1b, 0x0e, 0x9c, 0xb4, 0x74, 0x5c, 0x8a, 0xc2, 0x7a, 0xc0, 0x87, 0xf6, 0x1c, 0x8c, 0xa4, 0xbd, - 0x8e, 0xf2, 0xa0, 0x75, 0x4f, 0x6d, 0xf4, 0x3a, 0x14, 0x39, 0x86, 0xf9, 0xcc, 0x6d, 0x9a, 0x24, - 0x5e, 0x93, 0xe6, 0x7d, 0xe6, 0x6b, 0x02, 0x8c, 0x0a, 0x4f, 0x62, 0x20, 0x2d, 0x2f, 0x49, 0x37, - 0x62, 0x2f, 0x4c, 0x38, 0xfb, 0x8d, 0xa0, 0x4d, 0x65, 0x07, 0xff, 0xc8, 0xc1, 0x66, 0x0c, 0xfb, - 0xa2, 0x76, 0xfa, 0xde, 0xde, 0x1c, 0x59, 0xed, 0xe3, 0x84, 0x03, 0xb8, 0xbb, 0x9f, 0x73, 0xe0, - 0xf4, 0x60, 0xb7, 0x86, 0xbc, 0x11, 0xc6, 0x12, 0x1a, 0xef, 0xd0, 0x58, 0xb6, 0xce, 0x0c, 0x09, - 0x87, 0xa2, 0xc4, 0x92, 0x05, 0xa8, 0x6a, 0x93, 0x2b, 0xdb, 0x38, 0x23, 0x49, 0xab, 0xc6, 0x4e, - 0x1b, 0x1a, 0xd6, 0x69, 0xec, 0x87, 0x74, 0x82, 0x74, 0xa7, 0xf1, 0xf3, 0x06, 0xc7, 0xb8, 0x7f, - 0xef, 0xc0, 0x31, 0x4b, 0xab, 0xc7, 0xe0, 0xe5, 0x86, 0x59, 0x2f, 0x77, 0xa5, 0xb0, 0xf9, 0x3c, - 0xc4, 0xcd, 0xfd, 0xca, 0x18, 0xcc, 0xd8, 0xb3, 0x9e, 0x9b, 0x63, 0x7e, 0xc0, 0xa2, 0x9d, 0xe8, - 0x26, 0xae, 0xca, 0x3e, 0x37, 0x07, 0x2c, 0x01, 0x46, 0x85, 0x67, 0x9d, 0xd8, 0xf1, 0xd2, 0x2d, - 0xd9, 0xe1, 0xba, 0x13, 0xd7, 0xbc, 0x74, 0x0b, 0x39, 0x86, 0xbc, 0x13, 0xa6, 0x53, 0x2f, 0x6e, - 0xd2, 0x14, 0xe9, 0x4e, 0x90, 0xa8, 0xf5, 0x52, 0xad, 0x9d, 0x96, 0xb4, 0xd3, 0x1b, 0x19, 0x2c, - 0xe6, 0xa8, 0xc9, 0xcb, 0x30, 0xb2, 0x45, 0x5b, 0x6d, 0xe9, 0xd7, 0xac, 0x17, 0xb7, 0xc2, 0x79, - 0x5b, 0x2f, 0xd3, 0x56, 0xbb, 0x56, 0x61, 0x2a, 0xb3, 0xbf, 0x90, 0x8b, 0x22, 0xbf, 0xe8, 0x40, - 0x75, 0xbb, 0x9b, 0xa4, 0x51, 0x3b, 0xf8, 0x00, 0x9d, 0xad, 0x70, 0xc1, 0x3f, 0x53, 0xb0, 0xe0, - 0xab, 0x8a, 0xbf, 0x58, 0xef, 0xfa, 0x27, 0x1a, 0xc9, 0xe4, 0x43, 0x30, 0xbe, 0x9d, 0x44, 0x61, - 0x48, 0x99, 0xa7, 0xc2, 0x94, 0xb8, 0x55, 0xb4, 0x12, 0x82, 0x7b, 0x6d, 0x82, 0x8d, 0xad, 0xfc, - 0x81, 0x4a, 0x26, 0xef, 0x86, 0x7a, 0x10, 0x53, 0x3f, 0x8d, 0xe2, 0xde, 0x2c, 0x3c, 0x92, 0x6e, - 0x58, 0x56, 0xfc, 0x45, 0x37, 0xe8, 0x9f, 0x68, 0x24, 0x93, 0x1e, 0x8c, 0x75, 0x5a, 0xdd, 0x66, - 0x10, 0xce, 0x4e, 0x70, 0x1d, 0x6e, 0x16, 0xac, 0xc3, 0x1a, 0x67, 0x5e, 0x03, 0x66, 0x54, 0xc4, - 0xdf, 0x28, 0x05, 0x92, 0xa7, 0x61, 0xd4, 0xdf, 0xf2, 0xe2, 0x74, 0x76, 0x92, 0xcf, 0x59, 0xbd, - 0x88, 0x96, 0x18, 0x10, 0x05, 0xce, 0xfd, 0xf5, 0x12, 0x9c, 0x19, 0xde, 0x30, 0xb1, 0x9a, 0xfc, - 0x6e, 0x9c, 0x08, 0xfb, 0x5c, 0xb1, 0x57, 0x13, 0x07, 0xa3, 0xc2, 0x93, 0x8f, 0x39, 0x30, 0x7e, - 0x47, 0x8e, 0x78, 0xe9, 0x91, 0x8c, 0xf8, 0x15, 0x39, 0xe2, 0x5a, 0x87, 0x2b, 0x6a, 0xd4, 0xa5, - 0x5c, 0xa6, 0x2e, 0xdd, 0xf5, 0x5b, 0xdd, 0xba, 0xb2, 0x8c, 0x9a, 0xf4, 0x82, 0x00, 0xa3, 0xc2, - 0x33, 0xd2, 0x20, 0x14, 0xa4, 0x23, 0x59, 0xd2, 0x95, 0x50, 0x92, 0x4a, 0xbc, 0xfb, 0xdd, 0x32, - 0x9c, 0x1a, 0xb8, 0xf8, 0xc8, 0x3c, 0x00, 0xf7, 0x59, 0x2e, 0x06, 0xec, 0x80, 0x29, 0x4e, 0xd5, - 0xd3, 0xcc, 0xc5, 0xb8, 0xa5, 0xa1, 0x68, 0x51, 0x90, 0x8f, 0x00, 0x74, 0xbc, 0xd8, 0x6b, 0xd3, - 0x94, 0xc6, 0xca, 0x4e, 0x5e, 0x3d, 0x5a, 0x2f, 0x31, 0x3d, 0xd6, 0x14, 0x4f, 0xe3, 0xe3, 0x68, - 0x50, 0x82, 0x96, 0x48, 0x76, 0x86, 0x8e, 0x69, 0x8b, 0x7a, 0x09, 0xbd, 0x6e, 0xb6, 0x0f, 0x7d, - 0x86, 0x46, 0x83, 0x42, 0x9b, 0x8e, 0xed, 0x63, 0xbc, 0x15, 0x89, 0xec, 0x2b, 0xbd, 0x8f, 0xf1, - 0x76, 0x26, 0x28, 0xb1, 0xe4, 0x55, 0x07, 0xa6, 0x1b, 0x41, 0x8b, 0x1a, 0xe9, 0xf2, 0xc4, 0x7b, - 0xe3, 0xe8, 0x8d, 0xbc, 0x68, 0xf3, 0x35, 0x16, 0x38, 0x03, 0x4e, 0x30, 0x27, 0x9e, 0x0d, 0xf3, - 0x0e, 0x8d, 0xb9, 0xe9, 0x1e, 0xcb, 0x0e, 0xf3, 0x2d, 0x01, 0x46, 0x85, 0x77, 0xbf, 0x58, 0x82, - 0xd9, 0x61, 0x73, 0x8e, 0x24, 0x6c, 0x66, 0xa5, 0xb7, 0xbc, 0x38, 0x91, 0xee, 0xfb, 0x11, 0x4f, - 0x81, 0x92, 0xef, 0x2d, 0x2f, 0xb6, 0xe7, 0x28, 0x17, 0x80, 0x4a, 0x12, 0xb9, 0x03, 0x23, 0x69, - 0xcb, 0x2b, 0x28, 0x6c, 0x64, 0x49, 0x34, 0x4e, 0xd6, 0xea, 0x62, 0x82, 0x5c, 0x06, 0x79, 0x0a, - 0x46, 0x5a, 0xc1, 0x26, 0x73, 0x46, 0xd9, 0x24, 0xe6, 0xbb, 0xca, 0x6a, 0xb0, 0x99, 0x20, 0x87, - 0xba, 0x5f, 0x77, 0x06, 0xf4, 0x8d, 0x34, 0xba, 0x6c, 0x52, 0xd1, 0x70, 0x27, 0x88, 0xa3, 0xb0, - 0x4d, 0xc3, 0x34, 0x1f, 0x0a, 0xbd, 0x60, 0x50, 0x68, 0xd3, 0x91, 0x5f, 0x70, 0x06, 0xac, 0x86, - 0x23, 0xc6, 0x00, 0xa5, 0x4a, 0x07, 0x5e, 0x10, 0xee, 0x7f, 0x8c, 0x0d, 0xb0, 0x7f, 0x7a, 0x43, - 0x23, 0xe7, 0x01, 0x98, 0x37, 0xb5, 0x16, 0xd3, 0x46, 0xb0, 0x2b, 0x5b, 0xa6, 0x59, 0x5e, 0xd7, - 0x18, 0xb4, 0xa8, 0xd4, 0x37, 0xeb, 0xdd, 0x06, 0xfb, 0xa6, 0xd4, 0xff, 0x8d, 0xc0, 0xa0, 0x45, - 0x45, 0x9e, 0x83, 0xb1, 0xa0, 0xed, 0x35, 0xa9, 0xea, 0xff, 0xa7, 0xd8, 0xe2, 0x5a, 0xe1, 0x90, - 0xfb, 0x7b, 0x73, 0xd3, 0x5a, 0x21, 0x0e, 0x42, 0x49, 0x4b, 0x7e, 0xcb, 0x81, 0x49, 0x3f, 0x6a, - 0xb7, 0xa3, 0x70, 0xd5, 0xdb, 0xa4, 0x2d, 0x15, 0xe2, 0xba, 0xf3, 0xa8, 0xb6, 0xfb, 0xf9, 0x25, - 0x4b, 0x98, 0x38, 0x60, 0xea, 0xc0, 0x9d, 0x8d, 0xc2, 0x8c, 0x56, 0xf6, 0x1a, 0x1c, 0x7d, 0xf0, - 0x1a, 0x24, 0x7f, 0xe8, 0xc0, 0x8c, 0xf8, 0x76, 0x31, 0x0c, 0xa3, 0x54, 0x46, 0x1e, 0x45, 0x8c, - 0x2a, 0x7a, 0xc4, 0xcd, 0xb2, 0x24, 0x8a, 0xb6, 0xbd, 0x4e, 0xaa, 0x39, 0xd3, 0x87, 0xc7, 0x7e, - 0x25, 0xc9, 0x25, 0x98, 0x69, 0x44, 0xb1, 0x4f, 0xed, 0x8e, 0xe0, 0x8e, 0x5f, 0xc5, 0x30, 0xba, - 0x98, 0x27, 0xc0, 0xfe, 0x6f, 0xc8, 0x2d, 0x38, 0x6d, 0x01, 0xed, 0x7e, 0xa8, 0x70, 0x6e, 0x67, - 0x25, 0xb7, 0xd3, 0x17, 0x07, 0x52, 0xe1, 0x90, 0xaf, 0xcf, 0xbc, 0x0b, 0x66, 0xfa, 0xc6, 0x6f, - 0xc0, 0xe9, 0xfe, 0xa4, 0x7d, 0xba, 0xaf, 0x5a, 0x87, 0xf2, 0x33, 0xcb, 0x70, 0x7a, 0x70, 0x4f, - 0x1d, 0x86, 0x8b, 0xfb, 0xab, 0x0e, 0x3c, 0x39, 0xc4, 0x8d, 0xd1, 0xc7, 0x1a, 0x67, 0xd8, 0xb1, - 0x86, 0x78, 0x50, 0xa6, 0xe1, 0x8e, 0x34, 0x16, 0x17, 0x8f, 0x36, 0x23, 0x2e, 0x84, 0x3b, 0x62, - 0xa0, 0xc7, 0xef, 0xed, 0xcd, 0x95, 0x2f, 0x84, 0x3b, 0xc8, 0x78, 0xbb, 0x9f, 0x1f, 0xcb, 0x9c, - 0x9c, 0xd6, 0xd5, 0x61, 0x9d, 0x2b, 0x2a, 0xcf, 0x4d, 0x37, 0x0a, 0x9e, 0x8b, 0xd6, 0xc9, 0x50, - 0x84, 0xe0, 0xa5, 0x38, 0xf2, 0x49, 0x87, 0x47, 0xbd, 0xd5, 0x89, 0x52, 0x7a, 0x56, 0x8f, 0x26, - 0x08, 0x6f, 0xc7, 0xd2, 0x15, 0x10, 0x6d, 0xe9, 0x6c, 0x25, 0x77, 0x44, 0xd0, 0x29, 0xef, 0x5f, - 0xa9, 0xb8, 0xb8, 0xc2, 0x93, 0x5d, 0x80, 0xa4, 0x17, 0xfa, 0x6b, 0x51, 0x2b, 0xf0, 0x7b, 0x32, - 0xcc, 0x50, 0x40, 0xe4, 0x54, 0xf0, 0x13, 0x4e, 0x96, 0xf9, 0x8d, 0x96, 0x2c, 0xf2, 0x25, 0x07, - 0x66, 0x82, 0x66, 0x18, 0xc5, 0x74, 0x39, 0x68, 0x34, 0x68, 0x4c, 0x43, 0x9f, 0x2a, 0x3f, 0xe4, - 0xf6, 0xd1, 0x34, 0x50, 0x41, 0xbf, 0x95, 0x3c, 0x7b, 0xb3, 0xc4, 0xfb, 0x50, 0xd8, 0xaf, 0x0c, - 0xa9, 0xc3, 0x48, 0x10, 0x36, 0x22, 0x69, 0xd8, 0x6a, 0x47, 0x53, 0x6a, 0x25, 0x6c, 0x44, 0x66, - 0xad, 0xb0, 0x5f, 0xc8, 0xb9, 0x93, 0x55, 0x38, 0x19, 0xcb, 0x93, 0xe8, 0xe5, 0x20, 0x61, 0xfe, - 0xfc, 0x6a, 0xd0, 0x0e, 0x52, 0x6e, 0x94, 0xca, 0xb5, 0xd9, 0x7b, 0x7b, 0x73, 0x27, 0x71, 0x00, - 0x1e, 0x07, 0x7e, 0xe5, 0xbe, 0x52, 0xcd, 0x1e, 0xb7, 0x45, 0x30, 0xe9, 0x43, 0x50, 0x8d, 0x75, - 0xf8, 0x5e, 0x78, 0x46, 0xab, 0xc5, 0xf4, 0xb1, 0x8c, 0x62, 0xe9, 0x38, 0x88, 0x09, 0xd4, 0x1b, - 0x89, 0xcc, 0x43, 0x62, 0x23, 0x2f, 0x97, 0x45, 0x01, 0xf3, 0x4b, 0x4a, 0x35, 0x01, 0xbb, 0x5e, - 0xe8, 0x23, 0x97, 0x41, 0x62, 0x18, 0xdb, 0xa2, 0x5e, 0x2b, 0xdd, 0x92, 0xf1, 0xa4, 0x2b, 0x47, - 0xf5, 0x69, 0x19, 0xaf, 0x7c, 0xac, 0x4e, 0x40, 0x51, 0x4a, 0x22, 0xbb, 0x30, 0xbe, 0x25, 0x06, - 0x41, 0xee, 0xed, 0xd7, 0x8e, 0xda, 0xb9, 0x99, 0x91, 0x35, 0xeb, 0x57, 0x02, 0x50, 0x89, 0x23, - 0xbf, 0xe4, 0x00, 0xf8, 0x2a, 0x48, 0xa7, 0x96, 0x0f, 0x16, 0x66, 0x77, 0x74, 0xfc, 0xcf, 0xb8, - 0x46, 0x1a, 0x94, 0xa0, 0x25, 0x99, 0xbc, 0x04, 0x93, 0x31, 0xf5, 0xa3, 0xd0, 0x0f, 0x5a, 0xb4, - 0xbe, 0x98, 0x72, 0x37, 0xfe, 0x70, 0xc1, 0xbc, 0xe3, 0xcc, 0x3f, 0x41, 0x8b, 0x07, 0x66, 0x38, - 0x92, 0x57, 0x1c, 0x98, 0xd6, 0x81, 0x4a, 0x36, 0x20, 0x54, 0x06, 0x6c, 0x56, 0x0b, 0x0a, 0x8b, - 0x72, 0x9e, 0x35, 0xc2, 0x8e, 0x2b, 0x59, 0x18, 0xe6, 0xe4, 0x92, 0xf7, 0x00, 0x44, 0x9b, 0x3c, - 0x28, 0xc8, 0x9a, 0x5a, 0x39, 0x74, 0x53, 0xa7, 0x45, 0x7c, 0x5b, 0x71, 0x40, 0x8b, 0x1b, 0xb9, - 0x0a, 0x20, 0x96, 0xcd, 0x46, 0xaf, 0x43, 0x79, 0x50, 0xa6, 0x5a, 0x7b, 0xb3, 0xea, 0xfc, 0x75, - 0x8d, 0xb9, 0xbf, 0x37, 0xd7, 0x7f, 0xda, 0xe5, 0xd1, 0x58, 0xeb, 0x73, 0xf2, 0x41, 0x18, 0x4f, - 0xba, 0xed, 0xb6, 0xa7, 0x83, 0x2b, 0x6b, 0xc5, 0xed, 0x88, 0x82, 0xaf, 0x99, 0x9b, 0x12, 0x80, - 0x4a, 0xa2, 0x1b, 0x02, 0xe9, 0xa7, 0x27, 0xcf, 0xc1, 0x24, 0xdd, 0x4d, 0x69, 0x1c, 0x7a, 0xad, - 0x9b, 0xb8, 0xaa, 0x8e, 0xe3, 0x7c, 0xf0, 0x2f, 0x58, 0x70, 0xcc, 0x50, 0x11, 0x57, 0x7b, 0xde, - 0x25, 0x4e, 0x0f, 0xc6, 0xf3, 0x56, 0x7e, 0xb6, 0xfb, 0x3f, 0xa5, 0x8c, 0x47, 0xb0, 0x11, 0x53, - 0x4a, 0x22, 0x18, 0x0d, 0xa3, 0xba, 0x36, 0x7a, 0x57, 0x8a, 0x31, 0x7a, 0xd7, 0xa3, 0xba, 0x95, - 0x57, 0x66, 0xbf, 0x12, 0x14, 0x72, 0x78, 0xe2, 0x4d, 0x65, 0x28, 0x39, 0x42, 0x3a, 0x41, 0x45, - 0x4a, 0xd6, 0x89, 0xb7, 0x1b, 0xb6, 0x20, 0xcc, 0xca, 0x25, 0xdb, 0x30, 0xba, 0x15, 0x25, 0xa9, - 0x38, 0xab, 0x1c, 0xd9, 0x0b, 0xbb, 0x1c, 0x25, 0x29, 0xdf, 0xc2, 0x74, 0xb3, 0x19, 0x24, 0x41, - 0x21, 0xc3, 0xfd, 0x27, 0x27, 0x13, 0x7c, 0xb9, 0xed, 0xa5, 0xfe, 0xd6, 0x85, 0x1d, 0x76, 0x7e, - 0xbc, 0x9a, 0x49, 0x1c, 0xfc, 0x84, 0x9d, 0x38, 0xb8, 0xbf, 0x37, 0xf7, 0xa6, 0x61, 0x85, 0x3e, - 0x77, 0x19, 0x87, 0x79, 0xce, 0xc2, 0xca, 0x31, 0x7c, 0xd4, 0x81, 0x09, 0x4b, 0x3d, 0xb9, 0xa1, - 0x14, 0x18, 0xc3, 0xd6, 0xce, 0x95, 0x05, 0x44, 0x5b, 0xa4, 0xfb, 0x59, 0x07, 0xc6, 0x6b, 0x9e, - 0xbf, 0x1d, 0x35, 0x1a, 0xe4, 0x2d, 0x50, 0xa9, 0x77, 0x65, 0x8a, 0x46, 0xb4, 0x4f, 0x47, 0xde, - 0x97, 0x25, 0x1c, 0x35, 0x05, 0x9b, 0xc3, 0x0d, 0xcf, 0x4f, 0xa3, 0x98, 0xab, 0x5d, 0x16, 0x73, - 0xf8, 0x22, 0x87, 0xa0, 0xc4, 0xb0, 0x43, 0x7a, 0xdb, 0xdb, 0x55, 0x1f, 0xe7, 0x23, 0x3f, 0xd7, - 0x0c, 0x0a, 0x6d, 0x3a, 0xf7, 0xb5, 0x31, 0x18, 0x97, 0xb9, 0xd0, 0x03, 0x67, 0x33, 0x94, 0x17, - 0x5f, 0x1a, 0xea, 0xc5, 0x27, 0x30, 0xe6, 0xf3, 0x32, 0x2a, 0xb9, 0x95, 0x1e, 0x31, 0x06, 0x26, - 0x15, 0x14, 0x95, 0x59, 0x46, 0x2d, 0xf1, 0x1b, 0xa5, 0x28, 0xf2, 0x9a, 0x03, 0xc7, 0xfc, 0x28, - 0x0c, 0xa9, 0x6f, 0xec, 0xfc, 0x48, 0x11, 0xd9, 0xbe, 0xa5, 0x2c, 0x53, 0x93, 0x74, 0xcd, 0x21, - 0x30, 0x2f, 0x9e, 0xbc, 0x00, 0x53, 0xa2, 0xcf, 0x6e, 0x65, 0xce, 0xc7, 0x26, 0xff, 0x6d, 0x23, - 0x31, 0x4b, 0x4b, 0xe6, 0x45, 0x9c, 0x81, 0x27, 0x84, 0xc4, 0x19, 0x59, 0x06, 0x1f, 0x75, 0xc6, - 0x28, 0x41, 0x8b, 0x82, 0xc4, 0x40, 0x62, 0xda, 0x88, 0x69, 0xb2, 0x85, 0xf4, 0xe5, 0x2e, 0x4d, - 0x52, 0xbe, 0xc7, 0x8c, 0x3f, 0x5c, 0x6e, 0x0c, 0xfb, 0x38, 0xe1, 0x00, 0xee, 0x64, 0x5b, 0x3a, - 0xba, 0x95, 0x22, 0x96, 0x93, 0x1c, 0xe6, 0xa1, 0xfe, 0xee, 0x1c, 0x8c, 0x26, 0x5b, 0x5e, 0x5c, - 0xe7, 0x7b, 0x5b, 0xb9, 0x56, 0x65, 0xb6, 0x64, 0x9d, 0x01, 0x50, 0xc0, 0xc9, 0x32, 0x1c, 0xcf, - 0x65, 0xef, 0x13, 0xbe, 0x7b, 0x55, 0x6a, 0xb3, 0x92, 0xdd, 0xf1, 0x5c, 0xde, 0x3f, 0xc1, 0xbe, - 0x2f, 0xdc, 0xef, 0x39, 0xa0, 0xc8, 0x96, 0x3c, 0x7f, 0x8b, 0x32, 0x0d, 0xc8, 0x3b, 0x61, 0x5a, - 0x7b, 0xa5, 0x4b, 0x51, 0x57, 0x86, 0xc1, 0xca, 0x26, 0x4e, 0x89, 0x19, 0x2c, 0xe6, 0xa8, 0xc9, - 0x02, 0x54, 0x59, 0xc3, 0xc5, 0xa7, 0x62, 0x15, 0x6b, 0xcf, 0x77, 0x71, 0x6d, 0x45, 0x7e, 0x65, - 0x68, 0x48, 0x04, 0x33, 0x2d, 0x2f, 0x49, 0xb9, 0x06, 0xcc, 0x49, 0x7d, 0xc8, 0x44, 0x27, 0xaf, - 0x85, 0x59, 0xcd, 0x33, 0xc2, 0x7e, 0xde, 0xee, 0x37, 0x46, 0x60, 0x2a, 0xb3, 0xd0, 0x98, 0x91, - 0xea, 0x26, 0x6c, 0x27, 0xd5, 0x27, 0x76, 0x6d, 0xa4, 0x6e, 0x4a, 0x38, 0x6a, 0x0a, 0x46, 0xdd, - 0xf1, 0x92, 0xe4, 0x6e, 0x14, 0xd7, 0xa5, 0x65, 0xd0, 0xd4, 0x6b, 0x12, 0x8e, 0x9a, 0x82, 0x99, - 0xab, 0x4d, 0xea, 0xc5, 0x34, 0xe6, 0xb5, 0x01, 0x79, 0x73, 0x55, 0x33, 0x28, 0xb4, 0xe9, 0xf8, - 0x1a, 0x4f, 0x5b, 0xc9, 0x52, 0x2b, 0xa0, 0x61, 0x2a, 0xd4, 0x2c, 0x66, 0x8d, 0x6f, 0xac, 0xae, - 0xdb, 0x4c, 0xcd, 0x1a, 0xcf, 0x21, 0x30, 0x2f, 0x9e, 0x7c, 0xdc, 0x81, 0x29, 0xef, 0x6e, 0x62, - 0x4a, 0x47, 0xf9, 0x22, 0x3f, 0xb2, 0xcd, 0xcb, 0x54, 0xa3, 0xd6, 0x66, 0x98, 0xb5, 0xc8, 0x80, - 0x30, 0x2b, 0x94, 0x7c, 0xc1, 0x01, 0x42, 0x77, 0xa9, 0xbf, 0x16, 0x47, 0x3b, 0x41, 0x5d, 0x8d, - 0xa1, 0xf4, 0xa6, 0x8f, 0xe8, 0xbc, 0x5d, 0xe8, 0xe3, 0x2b, 0x8c, 0x44, 0x3f, 0x1c, 0x07, 0xe8, - 0xe0, 0xfe, 0x6d, 0x19, 0x26, 0xac, 0xb5, 0x3d, 0xd0, 0x50, 0x3b, 0x3f, 0x60, 0x86, 0xba, 0x74, - 0x08, 0x43, 0xfd, 0x11, 0xa8, 0xfa, 0xca, 0x50, 0x14, 0x53, 0xea, 0x9a, 0x37, 0x3f, 0xc6, 0x56, - 0x68, 0x10, 0x1a, 0x99, 0xe4, 0x12, 0xcc, 0x58, 0x6c, 0xa4, 0x91, 0x19, 0xe1, 0x46, 0x46, 0xc7, - 0x2d, 0x16, 0xf3, 0x04, 0xd8, 0xff, 0x0d, 0x79, 0x96, 0x39, 0x49, 0x81, 0x6c, 0x97, 0x38, 0x14, - 0xca, 0x32, 0xd2, 0xc5, 0xb5, 0x15, 0x05, 0x46, 0x9b, 0xc6, 0xfd, 0x86, 0xa3, 0x07, 0xf7, 0x31, - 0xd4, 0x20, 0xdc, 0xc9, 0xd6, 0x20, 0x5c, 0x28, 0xa4, 0x9b, 0x87, 0xd4, 0x1f, 0x5c, 0x87, 0xf1, - 0xa5, 0xa8, 0xdd, 0xf6, 0xc2, 0x3a, 0x79, 0x03, 0x8c, 0xfb, 0xe2, 0x4f, 0x79, 0xea, 0xe0, 0x49, - 0x69, 0x89, 0x45, 0x85, 0x23, 0x4f, 0xc1, 0x88, 0x17, 0x37, 0xd5, 0x49, 0x83, 0xe7, 0x58, 0x16, - 0xe3, 0x66, 0x82, 0x1c, 0xea, 0x7e, 0xae, 0x04, 0xb0, 0x14, 0xb5, 0x3b, 0x5e, 0x4c, 0xeb, 0x1b, - 0xd1, 0xff, 0x85, 0x1c, 0x85, 0x03, 0xfa, 0x29, 0x07, 0x08, 0xeb, 0x95, 0x28, 0xa4, 0xa1, 0xc9, - 0xeb, 0xb0, 0xfd, 0xd2, 0x57, 0x50, 0xb9, 0xf9, 0x98, 0x35, 0xa0, 0x10, 0x68, 0x68, 0x0e, 0xe0, - 0x94, 0x3e, 0xad, 0x42, 0xd6, 0xe5, 0x6c, 0xbe, 0x9c, 0xe7, 0x38, 0x65, 0x04, 0xdb, 0xfd, 0x7c, - 0x09, 0x4e, 0x0b, 0xb3, 0x75, 0xcd, 0x0b, 0xbd, 0x26, 0x6d, 0x33, 0xad, 0x0e, 0x1a, 0xbc, 0xf6, - 0x99, 0x37, 0x14, 0xa8, 0xf4, 0xf8, 0x51, 0x27, 0xa7, 0x98, 0x54, 0x62, 0x1a, 0xad, 0x84, 0x41, - 0x8a, 0x9c, 0x39, 0x49, 0xa0, 0xa2, 0x2e, 0x2f, 0x48, 0x63, 0x53, 0x90, 0x20, 0xbd, 0xee, 0x2e, - 0x49, 0xf6, 0xa8, 0x05, 0xb9, 0x5f, 0x71, 0x20, 0x6f, 0x44, 0xf9, 0x71, 0x41, 0x14, 0xb8, 0xe5, - 0x8f, 0x0b, 0xd9, 0x7a, 0xb4, 0x43, 0x94, 0x77, 0xbd, 0x0f, 0x26, 0xbc, 0x34, 0xa5, 0xed, 0x8e, - 0xf0, 0x5d, 0xcb, 0x0f, 0x17, 0x1f, 0xb9, 0x16, 0xd5, 0x83, 0x46, 0xc0, 0x7d, 0x56, 0x9b, 0x9d, - 0xfb, 0x22, 0x54, 0x54, 0x4a, 0xe0, 0x00, 0x83, 0xf9, 0x74, 0x26, 0xc3, 0x31, 0x64, 0xba, 0xdc, - 0x2f, 0xc1, 0x80, 0x5d, 0x90, 0x35, 0xd9, 0xd8, 0x8b, 0x4c, 0x93, 0x0f, 0x67, 0x33, 0xc8, 0xae, - 0x48, 0x87, 0x88, 0x83, 0xf8, 0xbb, 0x8b, 0xde, 0xc5, 0x4d, 0x86, 0x64, 0x42, 0xea, 0xa7, 0xb3, - 0x24, 0xe4, 0x3c, 0x80, 0x31, 0xf3, 0xb2, 0x2c, 0x40, 0x87, 0xf2, 0xcc, 0x6e, 0x80, 0x16, 0x15, - 0x73, 0xea, 0x82, 0x30, 0x49, 0xbd, 0x56, 0xeb, 0x72, 0x10, 0xa6, 0xf2, 0xb0, 0xa3, 0x4d, 0xc0, - 0x8a, 0x41, 0xa1, 0x4d, 0x77, 0xe6, 0x6d, 0xd6, 0xb8, 0x1c, 0x26, 0xd3, 0xf4, 0xa9, 0x12, 0x4c, - 0x5f, 0x0a, 0xbb, 0x6b, 0x97, 0xd6, 0xba, 0x9b, 0xad, 0xc0, 0xbf, 0x4a, 0x7b, 0x6c, 0xd0, 0xb6, - 0x69, 0x6f, 0x65, 0x59, 0x76, 0xbb, 0x1e, 0xb4, 0xab, 0x0c, 0x88, 0x02, 0xc7, 0xd4, 0x6c, 0x04, - 0x61, 0x93, 0xc6, 0x9d, 0x38, 0x90, 0xde, 0xb8, 0xa5, 0xe6, 0x45, 0x83, 0x42, 0x9b, 0x8e, 0xf1, - 0x8e, 0xee, 0x86, 0x34, 0xce, 0xdb, 0x8f, 0x1b, 0x0c, 0x88, 0x02, 0xc7, 0x88, 0xd2, 0xb8, 0x9b, - 0xa4, 0xb2, 0xc7, 0x34, 0xd1, 0x06, 0x03, 0xa2, 0xc0, 0xb1, 0xe9, 0x91, 0x74, 0x37, 0x79, 0x98, - 0x2e, 0x97, 0x30, 0x5d, 0x17, 0x60, 0x54, 0x78, 0x46, 0xba, 0x4d, 0x7b, 0xcb, 0x6c, 0x37, 0xcd, - 0xd5, 0x37, 0x5c, 0x15, 0x60, 0x54, 0x78, 0xf7, 0x1f, 0x1d, 0x20, 0xd9, 0xee, 0x78, 0x0c, 0x1b, - 0xf2, 0xcb, 0xd9, 0x0d, 0xf9, 0x88, 0x11, 0xd5, 0xac, 0xfa, 0x43, 0xf6, 0xe5, 0xdf, 0x70, 0x60, - 0xd2, 0x0e, 0xae, 0x93, 0x66, 0xce, 0x10, 0xdd, 0xc8, 0x1a, 0xa2, 0xfb, 0x7b, 0x73, 0x3f, 0x35, - 0xe8, 0x6e, 0x5d, 0x33, 0x48, 0xa3, 0x4e, 0xf2, 0x56, 0x1a, 0x36, 0x83, 0x90, 0xf2, 0xd0, 0x91, - 0x08, 0xca, 0x67, 0x22, 0xf7, 0x4b, 0x51, 0x9d, 0x3e, 0x84, 0x25, 0x73, 0x6f, 0xc3, 0x4c, 0x5f, - 0x51, 0xcb, 0x01, 0x8c, 0xce, 0xbe, 0x25, 0x8b, 0xee, 0xa7, 0x1d, 0x98, 0xca, 0xd4, 0x04, 0x15, - 0x64, 0xca, 0xf8, 0xaa, 0x88, 0x78, 0x5e, 0x26, 0x0e, 0x42, 0x11, 0xb8, 0xa9, 0x58, 0xab, 0xc2, - 0xa0, 0xd0, 0xa6, 0x73, 0x3f, 0x5b, 0x82, 0x8a, 0x0a, 0xf1, 0x1d, 0x40, 0x95, 0x4f, 0x3a, 0x30, - 0xa5, 0x8f, 0xc6, 0xdc, 0x61, 0x2e, 0xa4, 0x2e, 0x84, 0x69, 0xa0, 0x93, 0x77, 0xcc, 0x61, 0xd6, - 0x9e, 0x3b, 0xda, 0xc2, 0x30, 0x2b, 0x9b, 0xdc, 0x02, 0x48, 0x7a, 0x49, 0x4a, 0xdb, 0x96, 0xeb, - 0xee, 0x5a, 0xab, 0x63, 0xde, 0x8f, 0x62, 0xca, 0xd6, 0xc2, 0xf5, 0xa8, 0x4e, 0xd7, 0x35, 0xa5, - 0x31, 0x84, 0x06, 0x86, 0x16, 0x27, 0xf7, 0x77, 0x4b, 0x70, 0x3c, 0xaf, 0x12, 0x79, 0x2f, 0x4c, - 0x2a, 0xe9, 0xd6, 0x95, 0x42, 0x15, 0xd7, 0x9c, 0x44, 0x0b, 0x77, 0x7f, 0x6f, 0x6e, 0xae, 0xff, - 0x4e, 0xe5, 0xbc, 0x4d, 0x82, 0x19, 0x66, 0x22, 0x3e, 0x21, 0xe3, 0x32, 0xb5, 0xde, 0x62, 0xa7, - 0x23, 0x83, 0x0c, 0x56, 0x7c, 0xc2, 0xc6, 0x62, 0x8e, 0x9a, 0xac, 0xc1, 0x49, 0x0b, 0x72, 0x9d, - 0x06, 0xcd, 0xad, 0xcd, 0x28, 0x16, 0xb5, 0xeb, 0xe5, 0xda, 0x53, 0x92, 0xcb, 0x49, 0x1c, 0x40, - 0x83, 0x03, 0xbf, 0x24, 0x6f, 0x81, 0x8a, 0xef, 0x75, 0x3c, 0x3f, 0x48, 0x7b, 0xf2, 0x2c, 0xa2, - 0xed, 0xc8, 0x92, 0x84, 0xa3, 0xa6, 0x70, 0xaf, 0xc1, 0xc8, 0x01, 0x67, 0xd0, 0x81, 0xf6, 0xe5, - 0x17, 0xa1, 0xc2, 0xd8, 0x31, 0xbb, 0x51, 0x14, 0xcb, 0x08, 0x2a, 0xea, 0x2a, 0x03, 0x71, 0xa1, - 0x1c, 0x78, 0x2a, 0x04, 0xa4, 0x9b, 0xb5, 0x92, 0x24, 0x5d, 0xee, 0x75, 0x30, 0x24, 0x79, 0x1a, - 0xca, 0x74, 0xb7, 0x93, 0x8f, 0xf5, 0x5c, 0xd8, 0xed, 0x04, 0x31, 0x4d, 0x18, 0x11, 0xdd, 0xed, - 0x90, 0x33, 0x50, 0x0a, 0xea, 0x72, 0x43, 0x01, 0x49, 0x53, 0x5a, 0x59, 0xc6, 0x52, 0x50, 0x77, - 0x77, 0xa1, 0xaa, 0xef, 0x4e, 0x90, 0x6d, 0x65, 0x67, 0x9d, 0x22, 0x62, 0xf2, 0x8a, 0xef, 0x10, - 0x0b, 0xdb, 0x05, 0x30, 0xd5, 0x64, 0x45, 0xd9, 0x97, 0x73, 0x30, 0xe2, 0x47, 0xb2, 0x70, 0xb3, - 0x62, 0xd8, 0x70, 0x03, 0xcb, 0x31, 0xee, 0x6d, 0x98, 0xbe, 0x1a, 0x46, 0x77, 0x43, 0xb6, 0xf1, - 0x5d, 0x0c, 0x68, 0xab, 0xce, 0x18, 0x37, 0xd8, 0x1f, 0xf9, 0xed, 0x9c, 0x63, 0x51, 0xe0, 0xf4, - 0x05, 0x83, 0xd2, 0xb0, 0x0b, 0x06, 0xee, 0x2f, 0x3b, 0x70, 0x3c, 0x5f, 0x39, 0xf6, 0x7d, 0x3b, - 0x61, 0x7c, 0x94, 0x29, 0xa3, 0x4a, 0x93, 0x6e, 0x74, 0x44, 0x12, 0xf4, 0x79, 0x98, 0xdc, 0xec, - 0x06, 0xad, 0xba, 0xfc, 0x2d, 0xf5, 0xd1, 0xc5, 0x57, 0x35, 0x0b, 0x87, 0x19, 0x4a, 0xe6, 0xa7, - 0x6d, 0x06, 0xa1, 0x17, 0xf7, 0xd6, 0xcc, 0xbe, 0xa1, 0xcd, 0x53, 0x4d, 0x63, 0xd0, 0xa2, 0x72, - 0xff, 0xba, 0x0c, 0xe6, 0x12, 0x07, 0x09, 0x64, 0x8e, 0xdd, 0x29, 0x22, 0x6c, 0xb5, 0xde, 0x0b, - 0x7d, 0x73, 0x5d, 0xa4, 0x92, 0x4b, 0xb1, 0x7f, 0xc2, 0x61, 0x1e, 0x62, 0x90, 0x06, 0x1e, 0x37, - 0x16, 0xf2, 0xa0, 0xb4, 0x56, 0x50, 0x1a, 0x76, 0x45, 0x70, 0x8e, 0x62, 0xdb, 0xe7, 0xd4, 0xc2, - 0xd0, 0x96, 0x4c, 0x5e, 0x92, 0x81, 0xeb, 0x72, 0x61, 0x15, 0x1a, 0x95, 0x5c, 0xb4, 0xba, 0x03, - 0xa3, 0x31, 0x4d, 0x63, 0x55, 0x1b, 0x73, 0xf5, 0xa8, 0x69, 0xbc, 0x34, 0xee, 0xad, 0xa7, 0xec, - 0x30, 0xd6, 0xb4, 0x1c, 0x23, 0x0e, 0x46, 0x21, 0xc8, 0x4d, 0x80, 0xf4, 0xf7, 0xc5, 0x21, 0xa3, - 0xb8, 0x0b, 0x50, 0xf5, 0xba, 0x69, 0xd4, 0x66, 0xdd, 0xc4, 0x87, 0xa7, 0x62, 0xc5, 0xa9, 0x15, - 0x02, 0x0d, 0x8d, 0xfb, 0xea, 0x28, 0xe4, 0x92, 0xde, 0x64, 0xd7, 0xbe, 0x80, 0xe4, 0x14, 0x7b, - 0x01, 0x49, 0x2b, 0x33, 0xe8, 0x12, 0x12, 0x69, 0xc2, 0x68, 0x67, 0xcb, 0x4b, 0xd4, 0x1a, 0x7d, - 0x51, 0x75, 0xd3, 0x1a, 0x03, 0xde, 0xdf, 0x9b, 0xfb, 0xe9, 0x83, 0xf9, 0x81, 0x6c, 0xae, 0x2e, - 0x88, 0x0a, 0x40, 0x23, 0x9a, 0xf3, 0x40, 0xc1, 0xdf, 0xf6, 0x04, 0xcb, 0xfb, 0x9c, 0x69, 0x3f, - 0xe6, 0x88, 0x4a, 0x29, 0xa4, 0x49, 0xb7, 0x95, 0xca, 0xd9, 0xf0, 0x62, 0x81, 0xab, 0x4c, 0x30, - 0x36, 0x25, 0x53, 0xe2, 0x37, 0x5a, 0x42, 0xc9, 0x7b, 0xa1, 0x9a, 0xa4, 0x5e, 0x9c, 0x3e, 0x64, - 0x81, 0x85, 0xee, 0xf4, 0x75, 0xc5, 0x04, 0x0d, 0x3f, 0xf2, 0x1e, 0x80, 0x46, 0x10, 0x06, 0xc9, - 0xd6, 0x43, 0xe6, 0x9b, 0xb8, 0xe2, 0x17, 0x35, 0x07, 0xb4, 0xb8, 0x31, 0xeb, 0xc6, 0xe7, 0xb6, - 0x08, 0x69, 0x56, 0xf8, 0x5e, 0xaa, 0xad, 0x1b, 0x6a, 0x0c, 0x5a, 0x54, 0xee, 0x87, 0xe1, 0x44, - 0xfe, 0xf2, 0xaf, 0x3c, 0x1a, 0x36, 0xe3, 0xa8, 0xdb, 0xc9, 0xef, 0x25, 0xfc, 0x72, 0x28, 0x0a, - 0x1c, 0xb3, 0xf1, 0xdb, 0x41, 0x58, 0xcf, 0xdb, 0xf8, 0xab, 0x41, 0x58, 0x47, 0x8e, 0x39, 0xc0, - 0xcd, 0xac, 0x3f, 0x76, 0xe0, 0xdc, 0x7e, 0x77, 0x94, 0xd9, 0xb1, 0xff, 0xae, 0x17, 0x87, 0xf2, - 0xd6, 0x05, 0xb7, 0x1d, 0xb7, 0xbd, 0x38, 0x44, 0x0e, 0x25, 0x3d, 0x18, 0x13, 0x45, 0x65, 0xd2, - 0x3b, 0x7e, 0xb1, 0xd8, 0x1b, 0xd3, 0xec, 0x6c, 0xa5, 0xa3, 0x35, 0xa2, 0xa0, 0x0d, 0xa5, 0x40, - 0xf7, 0x55, 0x07, 0xc8, 0x8d, 0x1d, 0x1a, 0xc7, 0x41, 0xdd, 0x2a, 0x83, 0x23, 0xcf, 0xc1, 0xe4, - 0x9d, 0xf5, 0x1b, 0xd7, 0xd7, 0xa2, 0x20, 0xe4, 0xd5, 0xdc, 0x56, 0xf1, 0xc5, 0x15, 0x0b, 0x8e, - 0x19, 0x2a, 0xb2, 0x04, 0x33, 0x77, 0x5e, 0x66, 0x5b, 0xce, 0x85, 0xdd, 0x4e, 0x4c, 0x93, 0x44, - 0xbf, 0x33, 0x50, 0x15, 0x89, 0xa9, 0x2b, 0x2f, 0xe6, 0x90, 0xd8, 0x4f, 0xef, 0x7e, 0xb9, 0x04, - 0x13, 0xd6, 0xb5, 0xfc, 0x03, 0xf8, 0x23, 0xb9, 0x97, 0x04, 0x4a, 0x07, 0x7c, 0x49, 0xe0, 0x19, - 0xa8, 0x74, 0xa2, 0x56, 0xe0, 0x07, 0xba, 0x4c, 0x7b, 0x92, 0x67, 0xaf, 0x24, 0x0c, 0x35, 0x96, - 0xdc, 0x85, 0xaa, 0xbe, 0x5f, 0x2b, 0x0b, 0xb7, 0x8a, 0xf2, 0xc8, 0xf4, 0x5a, 0x33, 0xf7, 0x66, - 0x8d, 0x2c, 0xe2, 0xc2, 0x18, 0x9f, 0xa8, 0x2a, 0x36, 0xcf, 0x2b, 0x01, 0xf8, 0x0c, 0x4e, 0x50, - 0x62, 0xdc, 0x7f, 0x1d, 0x85, 0x2a, 0xd2, 0x4e, 0xb4, 0x14, 0xd3, 0x7a, 0x42, 0x5e, 0x0f, 0xe5, - 0x6e, 0xdc, 0x92, 0x9d, 0xa5, 0xc3, 0x3c, 0x37, 0x71, 0x15, 0x19, 0x3c, 0xb3, 0x3b, 0x94, 0x0e, - 0x95, 0xe3, 0x2b, 0xef, 0x9b, 0xe3, 0x7b, 0x01, 0xa6, 0x92, 0x64, 0x6b, 0x2d, 0x0e, 0x76, 0xbc, - 0x94, 0xcd, 0x39, 0x19, 0x13, 0x31, 0x49, 0x95, 0xf5, 0xcb, 0x06, 0x89, 0x59, 0x5a, 0x72, 0x09, - 0x66, 0x4c, 0xa6, 0x8d, 0xc6, 0x29, 0x0f, 0x81, 0x88, 0x68, 0x89, 0xce, 0x69, 0x98, 0xdc, 0x9c, - 0x24, 0xc0, 0xfe, 0x6f, 0xc8, 0x32, 0x1c, 0xcf, 0x00, 0x99, 0x22, 0x22, 0x94, 0xa2, 0x93, 0xc2, - 0x19, 0x3e, 0x4c, 0x97, 0xbe, 0x2f, 0xc8, 0x35, 0x38, 0x21, 0xc6, 0x97, 0xdf, 0xcb, 0xd6, 0x2d, - 0x1a, 0xe7, 0x8c, 0xfe, 0x9f, 0x64, 0x74, 0xe2, 0x52, 0x3f, 0x09, 0x0e, 0xfa, 0x8e, 0xcd, 0x50, - 0x0d, 0x5e, 0x59, 0x96, 0x86, 0x4d, 0xcf, 0x50, 0xcd, 0x66, 0xa5, 0x8e, 0x36, 0x1d, 0x79, 0x37, - 0x3c, 0x69, 0x7e, 0x8a, 0x08, 0x9a, 0xd8, 0xed, 0x97, 0x65, 0x4e, 0x7c, 0x4e, 0xb2, 0x78, 0xf2, - 0xd2, 0x40, 0xb2, 0x3a, 0x0e, 0xfb, 0x9e, 0x6c, 0xc2, 0x19, 0x8d, 0xba, 0xc0, 0x56, 0x6f, 0x27, - 0x0e, 0x12, 0x5a, 0xf3, 0x12, 0x7a, 0x33, 0x6e, 0xf1, 0x2c, 0x7a, 0xd5, 0xbc, 0x2d, 0x70, 0x29, - 0x48, 0x2f, 0x0f, 0xa2, 0xc4, 0x55, 0x7c, 0x00, 0x17, 0xe6, 0x5c, 0xd0, 0xd0, 0xdb, 0x6c, 0xd1, - 0x1b, 0x4b, 0x2b, 0xfc, 0xbe, 0x9c, 0xe5, 0x5c, 0x5c, 0x50, 0x08, 0x34, 0x34, 0xda, 0xb5, 0x9f, - 0x1c, 0xea, 0xda, 0x7f, 0xcb, 0x81, 0x29, 0x3d, 0xd9, 0x1f, 0x43, 0xbc, 0xab, 0x95, 0x8d, 0x77, - 0x5d, 0x3a, 0xaa, 0x57, 0x27, 0x35, 0x1f, 0x72, 0x10, 0xfb, 0x93, 0x2a, 0x00, 0x7f, 0xad, 0x25, - 0xe0, 0x35, 0x9b, 0xe7, 0x60, 0x24, 0xa6, 0x9d, 0x28, 0x6f, 0xf9, 0x18, 0x05, 0x72, 0xcc, 0x0f, - 0xee, 0x72, 0x1e, 0x94, 0xf3, 0x1d, 0xfd, 0xfe, 0xe6, 0x7c, 0xd7, 0xe1, 0x54, 0x10, 0x26, 0xd4, - 0xef, 0xc6, 0x72, 0xa3, 0xbb, 0x1c, 0x25, 0xda, 0x3a, 0x54, 0x6a, 0xaf, 0x97, 0x8c, 0x4e, 0xad, - 0x0c, 0x22, 0xc2, 0xc1, 0xdf, 0xb2, 0x2e, 0x55, 0x08, 0x79, 0x39, 0xc4, 0x84, 0x07, 0x24, 0x1c, - 0x35, 0x85, 0x59, 0x10, 0xab, 0x0d, 0x75, 0xfb, 0x23, 0xb7, 0x20, 0x56, 0x2f, 0xae, 0xa3, 0xa1, - 0x19, 0x6c, 0x15, 0xab, 0x05, 0x59, 0x45, 0x38, 0xb4, 0x55, 0x54, 0xeb, 0x73, 0x62, 0xe8, 0xdd, - 0x7e, 0xb5, 0x59, 0x4f, 0x0e, 0xdd, 0xac, 0xdf, 0x09, 0xd3, 0x41, 0xb8, 0x45, 0xe3, 0x20, 0xa5, - 0x75, 0xbe, 0x16, 0x66, 0xa7, 0x78, 0x47, 0xe8, 0xc8, 0xd5, 0x4a, 0x06, 0x8b, 0x39, 0xea, 0xac, - 0x51, 0x99, 0x3e, 0x80, 0x51, 0x19, 0x62, 0xca, 0x8f, 0x15, 0x63, 0xca, 0x8f, 0x1f, 0xdd, 0x94, - 0xcf, 0x3c, 0x52, 0x53, 0x4e, 0x0a, 0x31, 0xe5, 0x4f, 0xc3, 0x68, 0x27, 0x8e, 0x76, 0x7b, 0xb3, - 0x27, 0xb2, 0xde, 0xf4, 0x1a, 0x03, 0xa2, 0xc0, 0xb9, 0xaf, 0x94, 0xe0, 0x94, 0x31, 0x5f, 0x6c, - 0xd2, 0x04, 0x0d, 0xb6, 0x80, 0xf9, 0xbd, 0x3b, 0x51, 0x43, 0x61, 0x45, 0x42, 0x4d, 0x50, 0x55, - 0x63, 0xd0, 0xa2, 0xe2, 0x01, 0x45, 0x1a, 0xf3, 0xa2, 0xce, 0xbc, 0x6d, 0x5b, 0x92, 0x70, 0xd4, - 0x14, 0xfc, 0xfd, 0x36, 0x1a, 0xa7, 0x32, 0xa1, 0x92, 0x2f, 0x30, 0x5a, 0x32, 0x28, 0xb4, 0xe9, - 0x98, 0x0f, 0xe8, 0xab, 0x75, 0xc5, 0xec, 0xdb, 0xa4, 0xf0, 0x01, 0xf5, 0x52, 0xd2, 0x58, 0xa5, - 0x0e, 0x8f, 0x1c, 0x8f, 0xf6, 0xab, 0xc3, 0x23, 0x01, 0x9a, 0xc2, 0xfd, 0x6f, 0x07, 0x5e, 0x37, - 0xb0, 0x2b, 0x1e, 0xc3, 0x9e, 0xb5, 0x9b, 0xdd, 0xb3, 0xd6, 0x8f, 0xbe, 0x67, 0xf5, 0xb5, 0x62, - 0xc8, 0xfe, 0xf5, 0x37, 0x0e, 0x4c, 0x1b, 0xfa, 0xc7, 0xd0, 0xd4, 0xa0, 0xd0, 0x97, 0xd8, 0x8c, - 0xea, 0xa2, 0xd8, 0x30, 0xd3, 0xb6, 0x6f, 0xf1, 0xb6, 0x89, 0x03, 0xd5, 0xa2, 0xaf, 0x9e, 0x3a, - 0xd9, 0xe7, 0x64, 0xd2, 0x83, 0x31, 0x7e, 0x39, 0x35, 0x29, 0xe6, 0x60, 0x97, 0x95, 0xcf, 0x63, - 0x9b, 0xe6, 0x60, 0xc7, 0x7f, 0x26, 0x28, 0x05, 0xf2, 0x92, 0xe3, 0x20, 0x61, 0x46, 0xb0, 0x2e, - 0x63, 0xb0, 0xa6, 0xe4, 0x58, 0xc2, 0x51, 0x53, 0xb8, 0x6d, 0x98, 0xcd, 0x32, 0x5f, 0xa6, 0x0d, - 0x1e, 0x3f, 0x3b, 0x50, 0x33, 0x17, 0xa0, 0xea, 0xf1, 0xaf, 0x56, 0xbb, 0x5e, 0xfe, 0xbd, 0x93, - 0x45, 0x85, 0x40, 0x43, 0xe3, 0xfe, 0x8e, 0x03, 0x27, 0x06, 0x34, 0xa6, 0xc0, 0xd8, 0x73, 0x6a, - 0xac, 0xc0, 0x90, 0x37, 0x68, 0xea, 0xb4, 0xe1, 0xa9, 0x08, 0x8d, 0x15, 0xd0, 0x59, 0x16, 0x60, - 0x54, 0x78, 0xf7, 0xdf, 0x1c, 0x38, 0x96, 0xd5, 0x35, 0x21, 0x57, 0x80, 0x88, 0xc6, 0x2c, 0x07, - 0x89, 0x1f, 0xed, 0xd0, 0xb8, 0xc7, 0x5a, 0x2e, 0xb4, 0x3e, 0x23, 0x39, 0x91, 0xc5, 0x3e, 0x0a, - 0x1c, 0xf0, 0x15, 0xf9, 0x34, 0xaf, 0xcf, 0x51, 0xbd, 0xad, 0x66, 0xca, 0xad, 0x22, 0x67, 0x8a, - 0x19, 0x4c, 0xfb, 0x58, 0xac, 0x45, 0xa2, 0x2d, 0xdf, 0xfd, 0xf6, 0x08, 0xe8, 0xe4, 0x14, 0x8f, - 0x05, 0x14, 0x14, 0x49, 0xc9, 0x3c, 0x8a, 0x53, 0x3e, 0xc4, 0xa3, 0x38, 0x23, 0x0f, 0x3a, 0xf8, - 0x8b, 0x17, 0x5a, 0x8c, 0x83, 0x69, 0x19, 0xfd, 0x0d, 0x83, 0x42, 0x9b, 0x8e, 0x69, 0xd2, 0x0a, - 0x76, 0xa8, 0xf8, 0x68, 0x2c, 0xab, 0xc9, 0xaa, 0x42, 0xa0, 0xa1, 0x61, 0x9a, 0xd4, 0x83, 0x46, - 0x43, 0x1e, 0xff, 0xb4, 0x26, 0xac, 0x77, 0x90, 0x63, 0x18, 0xc5, 0x56, 0x14, 0x6d, 0x4b, 0xa7, - 0x4e, 0x53, 0x5c, 0x8e, 0xa2, 0x6d, 0xe4, 0x18, 0xe6, 0x86, 0x84, 0x51, 0xdc, 0xf6, 0x5a, 0xc1, - 0x07, 0x68, 0x5d, 0x4b, 0x91, 0xce, 0x9c, 0x76, 0x43, 0xae, 0xf7, 0x93, 0xe0, 0xa0, 0xef, 0xd8, - 0x0c, 0xec, 0xc4, 0xb4, 0x1e, 0xf8, 0xa9, 0xcd, 0x0d, 0xb2, 0x33, 0x70, 0xad, 0x8f, 0x02, 0x07, - 0x7c, 0x45, 0x16, 0xe1, 0x98, 0x4a, 0x2e, 0xaa, 0x02, 0x10, 0xe1, 0xe1, 0x69, 0xe7, 0x1a, 0xb3, - 0x68, 0xcc, 0xd3, 0x33, 0x6b, 0xd3, 0x96, 0x65, 0x38, 0xdc, 0xf7, 0xb3, 0xac, 0x8d, 0x2a, 0xcf, - 0x41, 0x4d, 0xe1, 0xfe, 0x5e, 0x89, 0xed, 0x8e, 0x43, 0xee, 0x5e, 0x3e, 0xb6, 0xc8, 0x5d, 0x76, - 0x46, 0x8e, 0x1c, 0x60, 0x46, 0x3e, 0x07, 0x93, 0x77, 0x92, 0x28, 0xd4, 0x51, 0xb1, 0xd1, 0xa1, - 0x51, 0x31, 0x8b, 0x6a, 0x70, 0x54, 0x6c, 0xec, 0x90, 0x51, 0xb1, 0x3f, 0x1f, 0x85, 0xd3, 0x3a, - 0x1f, 0x4c, 0xd3, 0xbb, 0x51, 0xbc, 0x1d, 0x84, 0x4d, 0x9e, 0x43, 0xfd, 0x92, 0x03, 0x93, 0x62, - 0x7a, 0xcb, 0x5b, 0xea, 0x22, 0x67, 0xd8, 0x28, 0xe8, 0x22, 0x51, 0x46, 0xd8, 0xfc, 0x86, 0x25, - 0x28, 0xf7, 0x64, 0x80, 0x8d, 0xc2, 0x8c, 0x46, 0xe4, 0x43, 0x00, 0xea, 0x29, 0xa5, 0x46, 0x41, - 0x0f, 0x4a, 0x29, 0xfd, 0x90, 0x36, 0x8c, 0x2b, 0xb9, 0xa1, 0x85, 0xa0, 0x25, 0x90, 0xbc, 0xe2, - 0xc0, 0x58, 0x4b, 0xf4, 0x8d, 0x48, 0x00, 0xbd, 0xf4, 0x48, 0xfa, 0xc6, 0xee, 0x15, 0xbd, 0x2d, - 0xcb, 0xfe, 0x90, 0xf2, 0x09, 0xc2, 0x78, 0x10, 0x36, 0xd9, 0xb0, 0xca, 0x40, 0xe2, 0x9b, 0x06, - 0xd5, 0x1f, 0xac, 0x46, 0x5e, 0xbd, 0xe6, 0xb5, 0xbc, 0xd0, 0xa7, 0xf1, 0x8a, 0x20, 0xb7, 0x1f, - 0xb4, 0xe1, 0x00, 0x54, 0x8c, 0xfa, 0x6e, 0xca, 0x8d, 0x1e, 0xe4, 0xa6, 0xdc, 0x99, 0x77, 0xc1, - 0x4c, 0xdf, 0x60, 0x1e, 0xea, 0xfd, 0x80, 0x9f, 0x84, 0x89, 0x87, 0xfc, 0xd4, 0xfd, 0xd3, 0x31, - 0xb3, 0xc7, 0x5c, 0x8f, 0xea, 0xe2, 0xbe, 0x56, 0x6c, 0x46, 0x54, 0xba, 0x8a, 0x05, 0x4e, 0x11, - 0xeb, 0x51, 0x1c, 0x0d, 0x44, 0x5b, 0x24, 0x9b, 0xa3, 0x1d, 0x2f, 0xa6, 0xe1, 0xa3, 0x9e, 0xa3, - 0x6b, 0x5a, 0x08, 0x5a, 0x02, 0xc9, 0x56, 0x26, 0x43, 0x79, 0xf1, 0xe8, 0x19, 0x4a, 0xe6, 0xbd, - 0x0e, 0xbc, 0x57, 0xf3, 0x9a, 0x03, 0xd3, 0x61, 0x66, 0xe6, 0xca, 0x2c, 0xd5, 0xc6, 0xa3, 0x58, - 0x15, 0xe2, 0x9e, 0x6c, 0x16, 0x86, 0x39, 0xf9, 0x83, 0x76, 0xa0, 0xd1, 0x43, 0xee, 0x40, 0xe6, - 0xe2, 0xe7, 0xd8, 0xb0, 0x8b, 0x9f, 0x24, 0xd4, 0x57, 0xbe, 0xc7, 0x0b, 0xbf, 0xf2, 0x0d, 0x03, - 0xae, 0x7b, 0xdf, 0x86, 0xaa, 0x1f, 0x53, 0x2f, 0x7d, 0xc8, 0xdb, 0xbf, 0xfc, 0x19, 0xb2, 0x25, - 0xc5, 0x00, 0x0d, 0x2f, 0xf7, 0xaf, 0xca, 0x70, 0x5c, 0xf5, 0x88, 0xca, 0xde, 0xb0, 0xed, 0x4c, - 0xc8, 0x35, 0xbe, 0xa8, 0xde, 0xce, 0x2e, 0x2b, 0x04, 0x1a, 0x1a, 0xe6, 0x3e, 0x75, 0x13, 0x7a, - 0xa3, 0x43, 0xc3, 0xd5, 0x60, 0x33, 0xe1, 0x3d, 0x6e, 0x95, 0x80, 0xdd, 0x34, 0x28, 0xb4, 0xe9, - 0x98, 0xef, 0x2c, 0xdc, 0xd8, 0x24, 0x9f, 0x0c, 0x95, 0xee, 0x31, 0x2a, 0x3c, 0xf9, 0xe2, 0xc0, - 0xb7, 0x1b, 0x8a, 0x29, 0x03, 0xe8, 0x4b, 0x5a, 0x1d, 0xf2, 0xd1, 0x86, 0x57, 0x1d, 0x38, 0xb6, - 0x9d, 0xa9, 0x3f, 0x51, 0x26, 0xf9, 0x88, 0x55, 0x8d, 0xd9, 0xa2, 0x16, 0x33, 0x85, 0xb3, 0xf0, - 0x04, 0xf3, 0xd2, 0xdd, 0xff, 0x74, 0xc0, 0x36, 0x4f, 0x07, 0x73, 0x84, 0xac, 0xd7, 0x78, 0x4a, - 0xfb, 0xbc, 0xc6, 0xa3, 0x7c, 0xa6, 0xf2, 0xc1, 0x7c, 0xf4, 0x91, 0x43, 0xf8, 0xe8, 0xa3, 0x43, - 0x9d, 0xac, 0xd7, 0x43, 0xb9, 0x1b, 0xd4, 0xa5, 0x9b, 0x6d, 0x12, 0x52, 0x2b, 0xcb, 0xc8, 0xe0, - 0xee, 0x1f, 0x8d, 0x9a, 0x63, 0xb5, 0xcc, 0x5e, 0xff, 0x50, 0x34, 0xbb, 0xa1, 0x8b, 0x54, 0x45, - 0xcb, 0xaf, 0xf7, 0x15, 0xa9, 0xbe, 0xe3, 0xf0, 0xc5, 0x09, 0xa2, 0x83, 0x86, 0xd5, 0xa8, 0x8e, - 0xef, 0x53, 0x99, 0x70, 0x07, 0x2a, 0xec, 0x24, 0xc2, 0xe3, 0x63, 0x95, 0x8c, 0x52, 0x95, 0xcb, - 0x12, 0x7e, 0x7f, 0x6f, 0xee, 0xed, 0x87, 0x57, 0x4b, 0x7d, 0x8d, 0x9a, 0x3f, 0x49, 0xa0, 0xca, - 0xfe, 0xe6, 0x45, 0x14, 0xf2, 0x8c, 0x73, 0x53, 0xdb, 0x22, 0x85, 0x28, 0xa4, 0x42, 0xc3, 0xc8, - 0x21, 0x21, 0x54, 0xf9, 0xbb, 0x31, 0x5c, 0xa8, 0x38, 0x0a, 0xad, 0xe9, 0x52, 0x06, 0x85, 0xb8, - 0xbf, 0x37, 0xf7, 0xc2, 0xe1, 0x85, 0xea, 0xcf, 0xd1, 0x88, 0x70, 0xbf, 0x5b, 0x36, 0x73, 0x57, - 0xd6, 0x26, 0xff, 0x50, 0xcc, 0xdd, 0xe7, 0x73, 0x73, 0xf7, 0x5c, 0xdf, 0xdc, 0x9d, 0x36, 0x6f, - 0xab, 0x64, 0x66, 0xe3, 0xe3, 0xde, 0x60, 0xf7, 0x3f, 0x76, 0x73, 0xcf, 0xe2, 0xe5, 0x6e, 0x10, - 0xd3, 0x64, 0x2d, 0xee, 0x86, 0x41, 0xd8, 0xe4, 0xd3, 0xb1, 0x62, 0x7b, 0x16, 0x19, 0x34, 0xe6, - 0xe9, 0xdd, 0x2f, 0xf3, 0x9c, 0xa3, 0x55, 0x8f, 0xc5, 0x46, 0xb9, 0xc5, 0x9f, 0xde, 0x11, 0x15, - 0xa1, 0x7a, 0x94, 0xc5, 0x7b, 0x3b, 0x02, 0x47, 0xee, 0xc2, 0xf8, 0xa6, 0xb8, 0xfe, 0x5f, 0xcc, - 0x05, 0x21, 0xf9, 0x96, 0x00, 0xbf, 0x8a, 0xa9, 0x1e, 0x16, 0xb8, 0x6f, 0xfe, 0x44, 0x25, 0xcd, - 0xfd, 0xb5, 0x32, 0x1c, 0xcb, 0x3d, 0x0c, 0xc3, 0xce, 0xe7, 0xea, 0x15, 0xa0, 0x7c, 0x30, 0x5d, - 0xbf, 0x76, 0xab, 0x29, 0xc8, 0xfb, 0x01, 0xea, 0xb4, 0xd3, 0x8a, 0x7a, 0xdc, 0x71, 0x19, 0x39, - 0xb4, 0xe3, 0xa2, 0x7d, 0xdd, 0x65, 0xcd, 0x05, 0x2d, 0x8e, 0xb2, 0x0c, 0x76, 0x54, 0x3c, 0x6e, - 0x90, 0x2d, 0x83, 0xb5, 0xee, 0xc9, 0x8d, 0x3d, 0xde, 0x7b, 0x72, 0x01, 0x1c, 0x13, 0x2a, 0xea, - 0xaa, 0xa7, 0x87, 0x28, 0x6e, 0x3a, 0xc1, 0x66, 0xd4, 0x72, 0x96, 0x0d, 0xe6, 0xf9, 0xba, 0x9f, - 0x29, 0x31, 0xf7, 0x4d, 0x74, 0xf6, 0x35, 0x15, 0xcb, 0x7e, 0x23, 0x8c, 0x79, 0xdd, 0x74, 0x2b, - 0xea, 0x7b, 0x8e, 0x61, 0x91, 0x43, 0x51, 0x62, 0xc9, 0x2a, 0x8c, 0xd4, 0xbd, 0x54, 0xbd, 0xd6, - 0x7e, 0x18, 0xe5, 0x4c, 0xe0, 0xca, 0x4b, 0x29, 0x72, 0x2e, 0xe4, 0x29, 0x18, 0x49, 0xbd, 0x66, - 0xe6, 0x9d, 0xc8, 0x0d, 0xaf, 0x99, 0x20, 0x87, 0xda, 0xbb, 0xcb, 0xc8, 0x3e, 0xbb, 0xcb, 0x0b, - 0xd6, 0xff, 0x11, 0xb0, 0x92, 0x24, 0xfd, 0x6f, 0xff, 0x8b, 0xc2, 0xfc, 0x0c, 0xad, 0xfb, 0x63, - 0x30, 0x69, 0xff, 0x6f, 0x80, 0x03, 0xdd, 0xeb, 0x71, 0xff, 0x65, 0x04, 0xa6, 0x32, 0x95, 0x71, - 0x99, 0x59, 0xee, 0xec, 0x3b, 0xcb, 0x79, 0x4e, 0xab, 0x1b, 0x52, 0x59, 0xf7, 0x68, 0xe5, 0xb4, - 0xba, 0x21, 0x45, 0x81, 0x63, 0xa3, 0x52, 0x8f, 0x7b, 0xd8, 0x0d, 0x65, 0x10, 0x5d, 0x8f, 0xca, - 0x32, 0x87, 0xa2, 0xc4, 0xb2, 0x03, 0xec, 0x64, 0xc2, 0x8d, 0xa2, 0xb0, 0x11, 0x72, 0xd5, 0x5c, - 0x29, 0xe2, 0x09, 0x2b, 0x59, 0x05, 0xca, 0x0f, 0xf4, 0x36, 0x04, 0x33, 0x12, 0xc9, 0xc7, 0x1d, - 0xfb, 0xf1, 0xae, 0xb1, 0x22, 0x92, 0x3f, 0xf9, 0xc2, 0x43, 0xb1, 0x82, 0x1e, 0xfc, 0x86, 0x57, - 0xa2, 0x17, 0xf0, 0xf8, 0xa3, 0x59, 0xc0, 0x30, 0x60, 0xf1, 0xbe, 0x19, 0xaa, 0x6d, 0x2f, 0x0c, - 0x1a, 0x34, 0x49, 0xc5, 0xff, 0xf5, 0xa8, 0x8a, 0xd3, 0xd3, 0x35, 0x05, 0x44, 0x83, 0xe7, 0xff, - 0x3d, 0x87, 0x37, 0x4c, 0x1c, 0x62, 0xaa, 0xd6, 0x7f, 0xcf, 0x31, 0x60, 0xb4, 0x69, 0xdc, 0xdf, - 0x77, 0xe0, 0xd4, 0xc0, 0xce, 0xf8, 0xc1, 0x8d, 0x56, 0xba, 0x7f, 0x50, 0x82, 0x13, 0x03, 0x2a, - 0x47, 0x49, 0xef, 0x91, 0xbd, 0xf1, 0x26, 0x4b, 0x53, 0xa7, 0x86, 0xce, 0x8d, 0xc3, 0x6d, 0x43, - 0x66, 0x2b, 0x28, 0x3f, 0xd6, 0xad, 0xc0, 0xfd, 0x72, 0x09, 0xac, 0xd7, 0x08, 0xc9, 0x87, 0xed, - 0x22, 0x69, 0xa7, 0xa8, 0x82, 0x5e, 0xc1, 0x5c, 0x17, 0x59, 0x8b, 0x5e, 0x1b, 0x54, 0x73, 0x9d, - 0x9f, 0xaf, 0xa5, 0xfd, 0xe7, 0x2b, 0x69, 0xa9, 0x6a, 0xf4, 0x72, 0xf1, 0xd5, 0xe8, 0xd5, 0xbe, - 0x4a, 0xf4, 0x5f, 0x71, 0xc4, 0x4c, 0xcb, 0x35, 0xc9, 0x58, 0x58, 0xe7, 0x01, 0x16, 0xf6, 0x2d, - 0x50, 0x49, 0x68, 0xab, 0xc1, 0x3c, 0x3b, 0x69, 0x89, 0xf5, 0x9c, 0x58, 0x97, 0x70, 0xd4, 0x14, - 0xfc, 0x9e, 0x6a, 0xab, 0x15, 0xdd, 0xbd, 0xd0, 0xee, 0xa4, 0x3d, 0x69, 0x93, 0xcd, 0x3d, 0x55, - 0x8d, 0x41, 0x8b, 0xca, 0xfd, 0x2f, 0x47, 0x0c, 0xa7, 0xf4, 0xd1, 0x9f, 0xcf, 0xdd, 0x1f, 0x3c, - 0xb8, 0x7b, 0xfb, 0xf3, 0x00, 0xbe, 0xbe, 0xd1, 0x5f, 0xcc, 0x23, 0x85, 0xe6, 0x85, 0x00, 0xfb, - 0xe5, 0x3c, 0x05, 0x43, 0x4b, 0x5e, 0x66, 0xf1, 0x94, 0xf7, 0x5b, 0x3c, 0xee, 0xbf, 0x3b, 0x90, - 0xd9, 0x2c, 0x48, 0x07, 0x46, 0x99, 0x06, 0xbd, 0x62, 0xde, 0x1f, 0xb0, 0x59, 0xb3, 0x85, 0x25, - 0xa7, 0x05, 0xff, 0x13, 0x85, 0x20, 0xd2, 0x92, 0xde, 0x79, 0xa9, 0x88, 0x37, 0x32, 0x6c, 0x81, - 0xcc, 0xbf, 0x97, 0xff, 0x29, 0x41, 0x7b, 0xfa, 0xee, 0xf3, 0x30, 0xd3, 0xa7, 0x14, 0xbf, 0x51, - 0x14, 0xa9, 0x47, 0x17, 0xac, 0x19, 0xc8, 0xef, 0x37, 0xa2, 0xc0, 0x31, 0x07, 0xff, 0x78, 0x9e, - 0x3d, 0xf9, 0x82, 0x03, 0x33, 0x49, 0x9e, 0xdf, 0xa3, 0xea, 0x3b, 0x1d, 0xb9, 0xea, 0x43, 0x61, - 0xbf, 0x12, 0xee, 0x5f, 0x48, 0xf3, 0x24, 0xfe, 0xb3, 0x94, 0xde, 0x5c, 0x9c, 0xa1, 0x9b, 0x0b, - 0x5b, 0x62, 0xfe, 0x16, 0xad, 0x77, 0x5b, 0x7d, 0xa5, 0x34, 0xeb, 0x12, 0x8e, 0x9a, 0x22, 0xf3, - 0x58, 0x59, 0x79, 0xdf, 0xc7, 0xca, 0x9e, 0x83, 0x49, 0xfb, 0x61, 0x11, 0x1e, 0x42, 0x93, 0xc9, - 0x07, 0xfb, 0x0d, 0x12, 0xcc, 0x50, 0xe5, 0x1e, 0xbb, 0x1a, 0xdd, 0xf7, 0xb1, 0xab, 0x67, 0xa0, - 0x22, 0x1f, 0x6e, 0x52, 0xf1, 0x5d, 0x51, 0xa7, 0x23, 0x61, 0xa8, 0xb1, 0xcc, 0x40, 0xb4, 0xbd, - 0xb0, 0xeb, 0xb5, 0x58, 0x0f, 0xc9, 0x9a, 0x3c, 0xbd, 0xb2, 0xae, 0x69, 0x0c, 0x5a, 0x54, 0xee, - 0x3f, 0x3b, 0x90, 0x7f, 0xf8, 0x27, 0x53, 0xd9, 0xe7, 0xec, 0x5b, 0xd9, 0x97, 0x2d, 0x70, 0x2a, - 0x1d, 0xa8, 0xc0, 0xc9, 0xae, 0x3d, 0x2a, 0x3f, 0xb0, 0xf6, 0xe8, 0x0d, 0xe6, 0x56, 0xb8, 0x28, - 0x52, 0x9a, 0x18, 0x74, 0x23, 0x9c, 0xb8, 0x30, 0xe6, 0x7b, 0xba, 0x70, 0x7a, 0x52, 0x38, 0x4a, - 0x4b, 0x8b, 0x9c, 0x48, 0x62, 0x6a, 0xf3, 0x5f, 0xfd, 0xce, 0xd9, 0x27, 0xbe, 0xf6, 0x9d, 0xb3, - 0x4f, 0x7c, 0xf3, 0x3b, 0x67, 0x9f, 0xf8, 0xe8, 0xbd, 0xb3, 0xce, 0x57, 0xef, 0x9d, 0x75, 0xbe, - 0x76, 0xef, 0xac, 0xf3, 0xcd, 0x7b, 0x67, 0x9d, 0x6f, 0xdf, 0x3b, 0xeb, 0xbc, 0xf6, 0x0f, 0x67, - 0x9f, 0x78, 0x4f, 0x45, 0xcd, 0xd5, 0xff, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x86, 0x48, 0x26, 0x48, - 0xa7, 0x74, 0x00, 0x00, + // 6698 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x5b, 0x6c, 0x1c, 0xd9, + 0x71, 0xe8, 0xf6, 0x0c, 0x1f, 0x33, 0xc5, 0x87, 0xc4, 0x23, 0xad, 0x96, 0xd6, 0x5d, 0x8b, 0x42, + 0x2f, 0x6c, 0xef, 0xbd, 0xb6, 0xc9, 0xbb, 0xba, 0x7b, 0x9d, 0x8d, 0xd7, 0xb1, 0xc3, 0x21, 0x29, + 0x89, 0x12, 0x25, 0x71, 0x8b, 0x5c, 0x29, 0x7e, 0xc4, 0xd9, 0x66, 0xcf, 0x99, 0x61, 0x8b, 0x33, + 0xdd, 0xb3, 0xdd, 0x3d, 0x14, 0xc7, 0x8e, 0x9f, 0x70, 0xe2, 0x45, 0xfc, 0xd8, 0x85, 0xed, 0x0f, + 0x1b, 0x09, 0x12, 0xe7, 0x81, 0x00, 0xf9, 0x70, 0x1e, 0x5f, 0x49, 0x90, 0xe4, 0xc7, 0x5f, 0x0e, + 0x02, 0x24, 0x06, 0x12, 0xd8, 0x4e, 0x8c, 0x30, 0xb6, 0x92, 0x20, 0x0f, 0x20, 0x09, 0x92, 0xf8, + 0x27, 0xfa, 0x0a, 0xce, 0xfb, 0x74, 0xcf, 0x8c, 0x48, 0x8a, 0x2d, 0xd9, 0x30, 0xf2, 0xc7, 0xa9, + 0xaa, 0xae, 0xaa, 0xf3, 0xaa, 0x53, 0xa7, 0xaa, 0xce, 0x21, 0xac, 0x35, 0x83, 0x74, 0xbb, 0xbb, + 0x35, 0xef, 0x47, 0xed, 0x05, 0x2f, 0x6e, 0x46, 0x9d, 0x38, 0xba, 0xcd, 0xff, 0x78, 0xab, 0x5f, + 0x5f, 0xd8, 0xbd, 0xb0, 0xd0, 0xd9, 0x69, 0x2e, 0x78, 0x9d, 0x20, 0x59, 0xf0, 0x3a, 0x9d, 0x56, + 0xe0, 0x7b, 0x69, 0x10, 0x85, 0x0b, 0xbb, 0xcf, 0x78, 0xad, 0xce, 0xb6, 0xf7, 0xcc, 0x42, 0x93, + 0x86, 0x34, 0xf6, 0x52, 0x5a, 0x9f, 0xef, 0xc4, 0x51, 0x1a, 0x91, 0x77, 0x18, 0x6e, 0xf3, 0x8a, + 0x1b, 0xff, 0xe3, 0xa7, 0xfc, 0xfa, 0xfc, 0xee, 0x85, 0xf9, 0xce, 0x4e, 0x73, 0x9e, 0x71, 0x9b, + 0xb7, 0xb8, 0xcd, 0x2b, 0x6e, 0x67, 0xdf, 0x6a, 0xe9, 0xd2, 0x8c, 0x9a, 0xd1, 0x02, 0x67, 0xba, + 0xd5, 0x6d, 0xf0, 0x5f, 0xfc, 0x07, 0xff, 0x4b, 0x08, 0x3b, 0xeb, 0xee, 0x3c, 0x97, 0xcc, 0x07, + 0x11, 0x53, 0x6f, 0xc1, 0x8f, 0x62, 0xba, 0xb0, 0xdb, 0xa7, 0xd0, 0xd9, 0x67, 0x0d, 0x4d, 0xdb, + 0xf3, 0xb7, 0x83, 0x90, 0xc6, 0x3d, 0xd3, 0xa6, 0x36, 0x4d, 0xbd, 0x41, 0x5f, 0x2d, 0x0c, 0xfb, + 0x2a, 0xee, 0x86, 0x69, 0xd0, 0xa6, 0x7d, 0x1f, 0xbc, 0xed, 0xa0, 0x0f, 0x12, 0x7f, 0x9b, 0xb6, + 0xbd, 0xfc, 0x77, 0xee, 0xcb, 0x30, 0xb5, 0x78, 0x6b, 0x63, 0xb1, 0x9b, 0x6e, 0x2f, 0x45, 0x61, + 0x23, 0x68, 0x92, 0xff, 0x0f, 0x13, 0x7e, 0xab, 0x9b, 0xa4, 0x34, 0xbe, 0xee, 0xb5, 0xe9, 0xac, + 0x73, 0xde, 0x79, 0xba, 0x5a, 0x3b, 0xf5, 0xb5, 0xfd, 0xb9, 0xc7, 0xee, 0xee, 0xcf, 0x4d, 0x2c, + 0x19, 0x14, 0xda, 0x74, 0xe4, 0x7f, 0xc3, 0x78, 0x1c, 0xb5, 0xe8, 0x22, 0x5e, 0x9f, 0x2d, 0xf1, + 0x4f, 0x4e, 0xc8, 0x4f, 0xc6, 0x51, 0x80, 0x51, 0xe1, 0xdd, 0x6f, 0x94, 0x00, 0x16, 0x3b, 0x9d, + 0xf5, 0x38, 0xba, 0x4d, 0xfd, 0x94, 0xbc, 0x04, 0x15, 0xd6, 0x0b, 0x75, 0x2f, 0xf5, 0xb8, 0xb4, + 0x89, 0x0b, 0xff, 0x77, 0x5e, 0x34, 0x66, 0xde, 0x6e, 0x8c, 0x19, 0x39, 0x46, 0x3d, 0xbf, 0xfb, + 0xcc, 0xfc, 0x8d, 0x2d, 0xf6, 0xfd, 0x35, 0x9a, 0x7a, 0x35, 0x22, 0x85, 0x81, 0x81, 0xa1, 0xe6, + 0x4a, 0x42, 0x18, 0x49, 0x3a, 0xd4, 0xe7, 0x8a, 0x4d, 0x5c, 0x58, 0x9b, 0x3f, 0xce, 0x14, 0x99, + 0x37, 0x9a, 0x6f, 0x74, 0xa8, 0x5f, 0x9b, 0x94, 0x92, 0x47, 0xd8, 0x2f, 0xe4, 0x72, 0xc8, 0x2e, + 0x8c, 0x25, 0xa9, 0x97, 0x76, 0x93, 0xd9, 0x32, 0x97, 0x78, 0xbd, 0x30, 0x89, 0x9c, 0x6b, 0x6d, + 0x5a, 0xca, 0x1c, 0x13, 0xbf, 0x51, 0x4a, 0x73, 0xff, 0xda, 0x81, 0x69, 0x43, 0xbc, 0x16, 0x24, + 0x29, 0x79, 0x5f, 0x5f, 0xe7, 0xce, 0x1f, 0xae, 0x73, 0xd9, 0xd7, 0xbc, 0x6b, 0x4f, 0x4a, 0x61, + 0x15, 0x05, 0xb1, 0x3a, 0xb6, 0x0d, 0xa3, 0x41, 0x4a, 0xdb, 0xc9, 0x6c, 0xe9, 0x7c, 0xf9, 0xe9, + 0x89, 0x0b, 0x97, 0x8b, 0x6a, 0x67, 0x6d, 0x4a, 0x0a, 0x1d, 0x5d, 0x65, 0xec, 0x51, 0x48, 0x71, + 0xbf, 0x07, 0x76, 0xfb, 0x58, 0x87, 0x93, 0x67, 0x60, 0x22, 0x89, 0xba, 0xb1, 0x4f, 0x91, 0x76, + 0xa2, 0x64, 0xd6, 0x39, 0x5f, 0x66, 0x53, 0x8f, 0xcd, 0xd4, 0x0d, 0x03, 0x46, 0x9b, 0x86, 0x7c, + 0xd6, 0x81, 0xc9, 0x3a, 0x4d, 0xd2, 0x20, 0xe4, 0xf2, 0x95, 0xf2, 0x9b, 0xc7, 0x56, 0x5e, 0x01, + 0x97, 0x0d, 0xf3, 0xda, 0x69, 0xd9, 0x90, 0x49, 0x0b, 0x98, 0x60, 0x46, 0x3e, 0x5b, 0x71, 0x75, + 0x9a, 0xf8, 0x71, 0xd0, 0x61, 0xbf, 0xf9, 0x9c, 0xb1, 0x56, 0xdc, 0xb2, 0x41, 0xa1, 0x4d, 0x47, + 0x42, 0x18, 0x65, 0x2b, 0x2a, 0x99, 0x1d, 0xe1, 0xfa, 0xaf, 0x1e, 0x4f, 0x7f, 0xd9, 0xa9, 0x6c, + 0xb1, 0x9a, 0xde, 0x67, 0xbf, 0x12, 0x14, 0x62, 0xc8, 0x67, 0x1c, 0x98, 0x95, 0x2b, 0x1e, 0xa9, + 0xe8, 0xd0, 0x5b, 0xdb, 0x41, 0x4a, 0x5b, 0x41, 0x92, 0xce, 0x8e, 0x72, 0x1d, 0x16, 0x0e, 0x37, + 0xb7, 0x2e, 0xc5, 0x51, 0xb7, 0x73, 0x35, 0x08, 0xeb, 0xb5, 0xf3, 0x52, 0xd2, 0xec, 0xd2, 0x10, + 0xc6, 0x38, 0x54, 0x24, 0xf9, 0xbc, 0x03, 0x67, 0x43, 0xaf, 0x4d, 0x93, 0x8e, 0xc7, 0x86, 0x56, + 0xa0, 0x6b, 0x2d, 0xcf, 0xdf, 0xe1, 0x1a, 0x8d, 0x3d, 0x98, 0x46, 0xae, 0xd4, 0xe8, 0xec, 0xf5, + 0xa1, 0xac, 0xf1, 0x3e, 0x62, 0xc9, 0xaf, 0x3a, 0x30, 0x13, 0xc5, 0x9d, 0x6d, 0x2f, 0xa4, 0x75, + 0x85, 0x4d, 0x66, 0xc7, 0xf9, 0xd2, 0x7b, 0xff, 0xf1, 0x86, 0xe8, 0x46, 0x9e, 0xed, 0xb5, 0x28, + 0x0c, 0xd2, 0x28, 0xde, 0xa0, 0x69, 0x1a, 0x84, 0xcd, 0xa4, 0xf6, 0xf8, 0xdd, 0xfd, 0xb9, 0x99, + 0x3e, 0x2a, 0xec, 0xd7, 0x87, 0x7c, 0x10, 0x26, 0x92, 0x5e, 0xe8, 0xdf, 0x0a, 0xc2, 0x7a, 0x74, + 0x27, 0x99, 0xad, 0x14, 0xb1, 0x7c, 0x37, 0x34, 0x43, 0xb9, 0x00, 0x8d, 0x00, 0xb4, 0xa5, 0x0d, + 0x1e, 0x38, 0x33, 0x95, 0xaa, 0x45, 0x0f, 0x9c, 0x99, 0x4c, 0xf7, 0x11, 0x4b, 0x3e, 0xe9, 0xc0, + 0x54, 0x12, 0x34, 0x43, 0x2f, 0xed, 0xc6, 0xf4, 0x2a, 0xed, 0x25, 0xb3, 0xc0, 0x15, 0xb9, 0x72, + 0xcc, 0x5e, 0xb1, 0x58, 0xd6, 0x1e, 0x97, 0x3a, 0x4e, 0xd9, 0xd0, 0x04, 0xb3, 0x72, 0x07, 0x2d, + 0x34, 0x33, 0xad, 0x27, 0x8a, 0x5d, 0x68, 0x66, 0x52, 0x0f, 0x15, 0xe9, 0xfe, 0x71, 0x09, 0x4e, + 0xe6, 0xf7, 0x20, 0xf2, 0xeb, 0x0e, 0x9c, 0xb8, 0x7d, 0x27, 0xdd, 0x8c, 0x76, 0x68, 0x98, 0xd4, + 0x7a, 0xcc, 0x52, 0x70, 0xeb, 0x3b, 0x71, 0xc1, 0x2f, 0x76, 0xb7, 0x9b, 0xbf, 0x92, 0x95, 0xb2, + 0x12, 0xa6, 0x71, 0xaf, 0xf6, 0x84, 0x6c, 0xcf, 0x89, 0x2b, 0xb7, 0x36, 0x6d, 0x2c, 0xe6, 0x95, + 0x3a, 0xfb, 0x29, 0x07, 0x4e, 0x0f, 0x62, 0x41, 0x4e, 0x42, 0x79, 0x87, 0xf6, 0x84, 0x83, 0x83, + 0xec, 0x4f, 0xf2, 0x93, 0x30, 0xba, 0xeb, 0xb5, 0xba, 0x54, 0x3a, 0x0a, 0x97, 0x8e, 0xd7, 0x10, + 0xad, 0x19, 0x0a, 0xae, 0x6f, 0x2f, 0x3d, 0xe7, 0xb8, 0x7f, 0x56, 0x86, 0x09, 0x6b, 0xab, 0x78, + 0x04, 0xce, 0x4f, 0x94, 0x71, 0x7e, 0xae, 0x15, 0xb6, 0xcb, 0x0d, 0xf5, 0x7e, 0xee, 0xe4, 0xbc, + 0x9f, 0x1b, 0xc5, 0x89, 0xbc, 0xaf, 0xfb, 0x43, 0x52, 0xa8, 0x46, 0x1d, 0xe6, 0xdc, 0xb2, 0x5d, + 0x74, 0xa4, 0x88, 0x21, 0xbc, 0xa1, 0xd8, 0xd5, 0xa6, 0xee, 0xee, 0xcf, 0x55, 0xf5, 0x4f, 0x34, + 0x82, 0xdc, 0x6f, 0x3a, 0x70, 0xda, 0xd2, 0x71, 0x29, 0x0a, 0xeb, 0x01, 0x1f, 0xda, 0xf3, 0x30, + 0x92, 0xf6, 0x3a, 0xca, 0x83, 0xd6, 0x3d, 0xb5, 0xd9, 0xeb, 0x50, 0xe4, 0x18, 0xe6, 0x33, 0xb7, + 0x69, 0x92, 0x78, 0x4d, 0x9a, 0xf7, 0x99, 0xaf, 0x09, 0x30, 0x2a, 0x3c, 0x89, 0x81, 0xb4, 0xbc, + 0x24, 0xdd, 0x8c, 0xbd, 0x30, 0xe1, 0xec, 0x37, 0x83, 0x36, 0x95, 0x1d, 0xfc, 0x7f, 0x0e, 0x37, + 0x63, 0xd8, 0x17, 0xb5, 0x33, 0x77, 0xf7, 0xe7, 0xc8, 0x5a, 0x1f, 0x27, 0x1c, 0xc0, 0xdd, 0xfd, + 0xbc, 0x03, 0x67, 0x06, 0xbb, 0x35, 0xe4, 0x8d, 0x30, 0x96, 0xd0, 0x78, 0x97, 0xc6, 0xb2, 0x75, + 0x66, 0x48, 0x38, 0x14, 0x25, 0x96, 0x2c, 0x40, 0x55, 0x9b, 0x5c, 0xd9, 0xc6, 0x19, 0x49, 0x5a, + 0x35, 0x76, 0xda, 0xd0, 0xb0, 0x4e, 0x63, 0x3f, 0xa4, 0x13, 0xa4, 0x3b, 0x8d, 0x9f, 0x37, 0x38, + 0xc6, 0xfd, 0x1b, 0x07, 0x4e, 0x58, 0x5a, 0x3d, 0x02, 0x2f, 0x37, 0xcc, 0x7a, 0xb9, 0xab, 0x85, + 0xcd, 0xe7, 0x21, 0x6e, 0xee, 0x57, 0xc7, 0x60, 0xc6, 0x9e, 0xf5, 0xdc, 0x1c, 0xf3, 0x03, 0x16, + 0xed, 0x44, 0x2f, 0xe2, 0x9a, 0xec, 0x73, 0x73, 0xc0, 0x12, 0x60, 0x54, 0x78, 0xd6, 0x89, 0x1d, + 0x2f, 0xdd, 0x96, 0x1d, 0xae, 0x3b, 0x71, 0xdd, 0x4b, 0xb7, 0x91, 0x63, 0xc8, 0x3b, 0x61, 0x3a, + 0xf5, 0xe2, 0x26, 0x4d, 0x91, 0xee, 0x06, 0x89, 0x5a, 0x2f, 0xd5, 0xda, 0x19, 0x49, 0x3b, 0xbd, + 0x99, 0xc1, 0x62, 0x8e, 0x9a, 0xbc, 0x0c, 0x23, 0xdb, 0xb4, 0xd5, 0x96, 0x7e, 0xcd, 0x46, 0x71, + 0x2b, 0x9c, 0xb7, 0xf5, 0x32, 0x6d, 0xb5, 0x6b, 0x15, 0xa6, 0x32, 0xfb, 0x0b, 0xb9, 0x28, 0xf2, + 0x33, 0x0e, 0x54, 0x77, 0xba, 0x49, 0x1a, 0xb5, 0x83, 0x0f, 0xd0, 0xd9, 0x0a, 0x17, 0xfc, 0x13, + 0x05, 0x0b, 0xbe, 0xaa, 0xf8, 0x8b, 0xf5, 0xae, 0x7f, 0xa2, 0x91, 0x4c, 0x3e, 0x04, 0xe3, 0x3b, + 0x49, 0x14, 0x86, 0x94, 0x79, 0x2a, 0x4c, 0x89, 0x9b, 0x45, 0x2b, 0x21, 0xb8, 0xd7, 0x26, 0xd8, + 0xd8, 0xca, 0x1f, 0xa8, 0x64, 0xf2, 0x6e, 0xa8, 0x07, 0x31, 0xf5, 0xd3, 0x28, 0xee, 0xcd, 0xc2, + 0x43, 0xe9, 0x86, 0x65, 0xc5, 0x5f, 0x74, 0x83, 0xfe, 0x89, 0x46, 0x32, 0xe9, 0xc1, 0x58, 0xa7, + 0xd5, 0x6d, 0x06, 0xe1, 0xec, 0x04, 0xd7, 0xe1, 0xc5, 0x82, 0x75, 0x58, 0xe7, 0xcc, 0x6b, 0xc0, + 0x8c, 0x8a, 0xf8, 0x1b, 0xa5, 0x40, 0xf2, 0x14, 0x8c, 0xfa, 0xdb, 0x5e, 0x9c, 0xce, 0x4e, 0xf2, + 0x39, 0xab, 0x17, 0xd1, 0x12, 0x03, 0xa2, 0xc0, 0xb9, 0xbf, 0x5c, 0x82, 0xb3, 0xc3, 0x1b, 0x26, + 0x56, 0x93, 0xdf, 0x8d, 0x13, 0x61, 0x9f, 0x2b, 0xf6, 0x6a, 0xe2, 0x60, 0x54, 0x78, 0xf2, 0x31, + 0x07, 0xc6, 0x6f, 0xcb, 0x11, 0x2f, 0x3d, 0x94, 0x11, 0xbf, 0x22, 0x47, 0x5c, 0xeb, 0x70, 0x45, + 0x8d, 0xba, 0x94, 0xcb, 0xd4, 0xa5, 0x7b, 0x7e, 0xab, 0x5b, 0x57, 0x96, 0x51, 0x93, 0xae, 0x08, + 0x30, 0x2a, 0x3c, 0x23, 0x0d, 0x42, 0x41, 0x3a, 0x92, 0x25, 0x5d, 0x0d, 0x25, 0xa9, 0xc4, 0xbb, + 0x1f, 0x1f, 0x85, 0xc7, 0x07, 0x2e, 0x3e, 0x32, 0x0f, 0xc0, 0x7d, 0x96, 0x8b, 0x01, 0x3b, 0x60, + 0x8a, 0x53, 0xf5, 0x34, 0x73, 0x31, 0x6e, 0x6a, 0x28, 0x5a, 0x14, 0xe4, 0x23, 0x00, 0x1d, 0x2f, + 0xf6, 0xda, 0x34, 0xa5, 0xb1, 0xb2, 0x93, 0x57, 0x8f, 0xd7, 0x4b, 0x4c, 0x8f, 0x75, 0xc5, 0xd3, + 0xf8, 0x38, 0x1a, 0x94, 0xa0, 0x25, 0x92, 0x9d, 0xa1, 0x63, 0xda, 0xa2, 0x5e, 0x42, 0xaf, 0x9b, + 0xed, 0x43, 0x9f, 0xa1, 0xd1, 0xa0, 0xd0, 0xa6, 0x63, 0xfb, 0x18, 0x6f, 0x45, 0x22, 0xfb, 0x4a, + 0xef, 0x63, 0xbc, 0x9d, 0x09, 0x4a, 0x2c, 0x79, 0xd5, 0x81, 0xe9, 0x46, 0xd0, 0xa2, 0x46, 0xba, + 0x3c, 0xf1, 0xde, 0x38, 0x7e, 0x23, 0x2f, 0xda, 0x7c, 0x8d, 0x05, 0xce, 0x80, 0x13, 0xcc, 0x89, + 0x67, 0xc3, 0xbc, 0x4b, 0x63, 0x6e, 0xba, 0xc7, 0xb2, 0xc3, 0x7c, 0x53, 0x80, 0x51, 0xe1, 0xc9, + 0xcf, 0x3b, 0x40, 0xe8, 0x5e, 0x4a, 0xe3, 0xd0, 0x6b, 0x99, 0xf1, 0x9b, 0x1d, 0x2f, 0xaa, 0x01, + 0x2b, 0x36, 0xef, 0xda, 0x59, 0xa9, 0x07, 0x59, 0xe9, 0x13, 0x89, 0x03, 0xd4, 0x70, 0xbf, 0x54, + 0x82, 0xd9, 0x61, 0x2b, 0x82, 0x24, 0x6c, 0xde, 0xa7, 0x37, 0xbd, 0x38, 0x91, 0x87, 0x8b, 0x63, + 0x9e, 0x51, 0x25, 0xdf, 0x9b, 0x5e, 0x6c, 0xaf, 0x20, 0x2e, 0x00, 0x95, 0x24, 0x72, 0x1b, 0x46, + 0xd2, 0x96, 0x57, 0x50, 0x50, 0xcb, 0x92, 0x68, 0x5c, 0xc0, 0xb5, 0xc5, 0x04, 0xb9, 0x0c, 0xf2, + 0x24, 0x8c, 0xb4, 0x82, 0x2d, 0xe6, 0x2a, 0xb3, 0x25, 0xc6, 0xf7, 0xbc, 0xb5, 0x60, 0x2b, 0x41, + 0x0e, 0x75, 0xbf, 0xe1, 0x0c, 0xe8, 0x1b, 0xb9, 0x25, 0xb0, 0x29, 0x4f, 0xc3, 0xdd, 0x20, 0x8e, + 0xc2, 0x36, 0x0d, 0xd3, 0x7c, 0xa0, 0x76, 0xc5, 0xa0, 0xd0, 0xa6, 0x23, 0x1f, 0x77, 0x06, 0xac, + 0xd5, 0x63, 0x46, 0x28, 0xa5, 0x4a, 0x87, 0x5e, 0xae, 0xee, 0xbf, 0x8d, 0x0d, 0xb0, 0xce, 0x7a, + 0xbb, 0x25, 0x17, 0x00, 0x98, 0xaf, 0xb7, 0x1e, 0xd3, 0x46, 0xb0, 0x27, 0x5b, 0xa6, 0x59, 0x5e, + 0xd7, 0x18, 0xb4, 0xa8, 0xd4, 0x37, 0x1b, 0xdd, 0x06, 0xfb, 0xa6, 0xd4, 0xff, 0x8d, 0xc0, 0xa0, + 0x45, 0x45, 0x9e, 0x85, 0xb1, 0xa0, 0xed, 0x35, 0xa9, 0xea, 0xff, 0x27, 0xd9, 0xd2, 0x5f, 0xe5, + 0x90, 0x7b, 0xfb, 0x73, 0xd3, 0x5a, 0x21, 0x0e, 0x42, 0x49, 0x4b, 0x7e, 0xcd, 0x81, 0x49, 0x3f, + 0x6a, 0xb7, 0xa3, 0x70, 0xcd, 0xdb, 0xa2, 0x2d, 0x15, 0x80, 0xbb, 0xfd, 0xb0, 0x9c, 0x91, 0xf9, + 0x25, 0x4b, 0x98, 0x38, 0xfe, 0xea, 0xb0, 0xa2, 0x8d, 0xc2, 0x8c, 0x56, 0xb6, 0x85, 0x18, 0x3d, + 0xc0, 0x42, 0xfc, 0x9e, 0x03, 0x33, 0xe2, 0xdb, 0xc5, 0x30, 0x8c, 0x52, 0x19, 0x17, 0x15, 0x11, + 0xb4, 0xe8, 0x21, 0x37, 0xcb, 0x92, 0x28, 0xda, 0xf6, 0x3a, 0xa9, 0xe6, 0x4c, 0x1f, 0x1e, 0xfb, + 0x95, 0x24, 0x97, 0x60, 0xa6, 0x11, 0xc5, 0x3e, 0xb5, 0x3b, 0x82, 0xbb, 0xa5, 0x15, 0xc3, 0xe8, + 0x62, 0x9e, 0x00, 0xfb, 0xbf, 0x21, 0x37, 0xe1, 0x8c, 0x05, 0xb4, 0xfb, 0xa1, 0xc2, 0xb9, 0x9d, + 0x93, 0xdc, 0xce, 0x5c, 0x1c, 0x48, 0x85, 0x43, 0xbe, 0x3e, 0xfb, 0x2e, 0x98, 0xe9, 0x1b, 0xbf, + 0x01, 0xb1, 0x87, 0xd3, 0x76, 0xec, 0xa1, 0x6a, 0x85, 0x0c, 0xce, 0x2e, 0xc3, 0x99, 0xc1, 0x3d, + 0x75, 0x14, 0x2e, 0xee, 0x2f, 0x3a, 0xf0, 0xc4, 0x10, 0x27, 0x4b, 0x1f, 0xba, 0x9c, 0x61, 0x87, + 0x2e, 0xe2, 0x41, 0x99, 0x86, 0xbb, 0xd2, 0x58, 0x5c, 0x3c, 0xde, 0x8c, 0x58, 0x09, 0x77, 0xc5, + 0x40, 0x8f, 0xdf, 0xdd, 0x9f, 0x2b, 0xaf, 0x84, 0xbb, 0xc8, 0x78, 0xbb, 0x5f, 0x18, 0xcb, 0x9c, + 0xeb, 0x36, 0x54, 0x28, 0x81, 0x2b, 0x2a, 0x4f, 0x75, 0x37, 0x0a, 0x9e, 0x8b, 0xd6, 0xb9, 0x55, + 0x24, 0x08, 0xa4, 0x38, 0xf2, 0x29, 0x87, 0xc7, 0xe4, 0xd5, 0x79, 0x57, 0xfa, 0x7d, 0x0f, 0x27, + 0x45, 0x60, 0x47, 0xfa, 0x15, 0x10, 0x6d, 0xe9, 0x6c, 0x25, 0x77, 0x44, 0x48, 0x2c, 0xef, 0xfd, + 0xa9, 0xa8, 0xbd, 0xc2, 0x93, 0x3d, 0x80, 0xa4, 0x17, 0xfa, 0xeb, 0x51, 0x2b, 0xf0, 0x7b, 0x32, + 0x08, 0x52, 0x40, 0x5c, 0x57, 0xf0, 0x13, 0x2e, 0xa0, 0xf9, 0x8d, 0x96, 0x2c, 0xf2, 0x65, 0x07, + 0x66, 0x82, 0x66, 0x18, 0xc5, 0x74, 0x39, 0x68, 0x34, 0x68, 0x4c, 0x43, 0x9f, 0x2a, 0x2f, 0xe9, + 0xd6, 0xf1, 0x34, 0x50, 0x21, 0xc9, 0xd5, 0x3c, 0x7b, 0xb3, 0xc4, 0xfb, 0x50, 0xd8, 0xaf, 0x0c, + 0xa9, 0xc3, 0x48, 0x10, 0x36, 0x22, 0x69, 0xd8, 0x6a, 0xc7, 0x53, 0x6a, 0x35, 0x6c, 0x44, 0x66, + 0xad, 0xb0, 0x5f, 0xc8, 0xb9, 0x93, 0x35, 0x38, 0x1d, 0xcb, 0x73, 0xf2, 0xe5, 0x20, 0x61, 0xa7, + 0x8d, 0xb5, 0xa0, 0x1d, 0xa4, 0xdc, 0x28, 0x95, 0x6b, 0xb3, 0x77, 0xf7, 0xe7, 0x4e, 0xe3, 0x00, + 0x3c, 0x0e, 0xfc, 0xca, 0x7d, 0xa5, 0x9a, 0x0d, 0x06, 0x88, 0x50, 0xd7, 0x87, 0xa0, 0x1a, 0xeb, + 0xe4, 0x82, 0xf0, 0x8c, 0xd6, 0x8a, 0xe9, 0x63, 0x19, 0x63, 0xd3, 0x51, 0x1a, 0x93, 0x46, 0x30, + 0x12, 0x99, 0x87, 0xc4, 0x46, 0x5e, 0x2e, 0x8b, 0x02, 0xe6, 0x97, 0x94, 0x6a, 0xc2, 0x89, 0xbd, + 0xd0, 0x47, 0x2e, 0x83, 0xc4, 0x30, 0xb6, 0x4d, 0xbd, 0x56, 0xba, 0x2d, 0xa3, 0x5d, 0x57, 0x8e, + 0xeb, 0xb0, 0x32, 0x5e, 0xf9, 0x48, 0xa2, 0x80, 0xa2, 0x94, 0x44, 0xf6, 0x60, 0x7c, 0x5b, 0x0c, + 0x82, 0xdc, 0xdb, 0xaf, 0x1d, 0xb7, 0x73, 0x33, 0x23, 0x6b, 0xd6, 0xaf, 0x04, 0xa0, 0x12, 0x47, + 0x7e, 0xd6, 0x01, 0xf0, 0x55, 0x08, 0x51, 0x2d, 0x1f, 0x2c, 0xcc, 0xee, 0xe8, 0xe8, 0xa4, 0x71, + 0x8d, 0x34, 0x28, 0x41, 0x4b, 0x32, 0x79, 0x09, 0x26, 0x63, 0xea, 0x47, 0xa1, 0x1f, 0xb4, 0x68, + 0x7d, 0x31, 0xe5, 0x87, 0x8c, 0xa3, 0x85, 0x1a, 0x4f, 0x32, 0xff, 0x04, 0x2d, 0x1e, 0x98, 0xe1, + 0x48, 0x5e, 0x71, 0x60, 0x5a, 0x87, 0x51, 0xd9, 0x80, 0x50, 0x19, 0x4e, 0x5a, 0x2b, 0x28, 0x68, + 0xcb, 0x79, 0xd6, 0x08, 0x3b, 0x4c, 0x65, 0x61, 0x98, 0x93, 0x4b, 0xde, 0x03, 0x10, 0x6d, 0xf1, + 0x90, 0x25, 0x6b, 0x6a, 0xe5, 0xc8, 0x4d, 0x9d, 0x16, 0xd1, 0x77, 0xc5, 0x01, 0x2d, 0x6e, 0xe4, + 0x2a, 0x80, 0x58, 0x36, 0x9b, 0xbd, 0x0e, 0xe5, 0x21, 0xa3, 0x6a, 0xed, 0xcd, 0xaa, 0xf3, 0x37, + 0x34, 0xe6, 0xde, 0xfe, 0x5c, 0xff, 0x59, 0x9c, 0xc7, 0x8a, 0xad, 0xcf, 0xc9, 0x07, 0x61, 0x3c, + 0xe9, 0xb6, 0xdb, 0x9e, 0x0e, 0xfd, 0xac, 0x17, 0xb7, 0x23, 0x0a, 0xbe, 0x66, 0x6e, 0x4a, 0x00, + 0x2a, 0x89, 0x6e, 0x08, 0xa4, 0x9f, 0x9e, 0x3c, 0x0b, 0x93, 0xea, 0x54, 0xf7, 0x22, 0xae, 0xa9, + 0x60, 0x01, 0x1f, 0xfc, 0x15, 0x0b, 0x8e, 0x19, 0x2a, 0xe2, 0x6a, 0xcf, 0xbb, 0xc4, 0xe9, 0xc1, + 0x78, 0xde, 0xca, 0xcf, 0x76, 0xff, 0xab, 0x94, 0xf1, 0x08, 0x36, 0x63, 0x4a, 0x49, 0x04, 0xa3, + 0x61, 0x54, 0xd7, 0x46, 0xef, 0x4a, 0x31, 0x46, 0xef, 0x7a, 0x54, 0xb7, 0xb2, 0xde, 0xec, 0x57, + 0x82, 0x42, 0x0e, 0x4f, 0x0b, 0xaa, 0xfc, 0x29, 0x47, 0x48, 0x27, 0xa8, 0x48, 0xc9, 0x3a, 0x2d, + 0x78, 0xc3, 0x16, 0x84, 0x59, 0xb9, 0x64, 0x07, 0x46, 0xb7, 0xa3, 0x24, 0x15, 0x67, 0x95, 0x63, + 0x7b, 0x61, 0x97, 0xa3, 0x24, 0xe5, 0x5b, 0x98, 0x6e, 0x36, 0x83, 0x24, 0x28, 0x64, 0xb8, 0xff, + 0xe0, 0x64, 0x42, 0x43, 0xb7, 0xbc, 0xd4, 0xdf, 0x5e, 0xd9, 0x65, 0xe7, 0xc7, 0xab, 0x99, 0xb4, + 0xc6, 0x8f, 0xd8, 0x69, 0x8d, 0x7b, 0xfb, 0x73, 0x6f, 0x1a, 0x56, 0x86, 0x74, 0x87, 0x71, 0x98, + 0xe7, 0x2c, 0xac, 0x0c, 0xc8, 0x47, 0x1d, 0x98, 0xb0, 0xd4, 0x93, 0x1b, 0x4a, 0x81, 0x11, 0x76, + 0xed, 0x5c, 0x59, 0x40, 0xb4, 0x45, 0xba, 0x9f, 0x73, 0x60, 0xbc, 0xe6, 0xf9, 0x3b, 0x51, 0xa3, + 0x41, 0xde, 0x02, 0x95, 0x7a, 0x57, 0x26, 0x90, 0x44, 0xfb, 0x74, 0x5e, 0x60, 0x59, 0xc2, 0x51, + 0x53, 0xb0, 0x39, 0xdc, 0xf0, 0xfc, 0x34, 0x8a, 0xb9, 0xda, 0x65, 0x31, 0x87, 0x2f, 0x72, 0x08, + 0x4a, 0x0c, 0x3b, 0xa4, 0xb7, 0xbd, 0x3d, 0xf5, 0x71, 0x3e, 0x2e, 0x75, 0xcd, 0xa0, 0xd0, 0xa6, + 0x73, 0x5f, 0x1b, 0x83, 0x71, 0x99, 0xa9, 0x3d, 0x74, 0xae, 0x45, 0x79, 0xf1, 0xa5, 0xa1, 0x5e, + 0x7c, 0x02, 0x63, 0x3e, 0x2f, 0xf2, 0x92, 0x5b, 0xe9, 0x31, 0x23, 0x74, 0x52, 0x41, 0x51, 0x37, + 0x66, 0xd4, 0x12, 0xbf, 0x51, 0x8a, 0x22, 0xaf, 0x39, 0x70, 0xc2, 0x8f, 0xc2, 0x90, 0xfa, 0xc6, + 0xce, 0x8f, 0x14, 0x91, 0x8b, 0x5c, 0xca, 0x32, 0x35, 0x29, 0xe1, 0x1c, 0x02, 0xf3, 0xe2, 0xc9, + 0xf3, 0x30, 0x25, 0xfa, 0xec, 0x66, 0xe6, 0x7c, 0x6c, 0xb2, 0xf3, 0x36, 0x12, 0xb3, 0xb4, 0x64, + 0x5e, 0xc4, 0x19, 0x78, 0xba, 0x4a, 0x9c, 0x91, 0x65, 0x68, 0x54, 0xe7, 0xb3, 0x12, 0xb4, 0x28, + 0x48, 0x0c, 0x24, 0xa6, 0x8d, 0x98, 0x26, 0xdb, 0x48, 0x5f, 0xee, 0xd2, 0x24, 0xe5, 0x7b, 0xcc, + 0xf8, 0x83, 0x65, 0xee, 0xb0, 0x8f, 0x13, 0x0e, 0xe0, 0x4e, 0x76, 0xa4, 0xa3, 0x5b, 0x29, 0x62, + 0x39, 0xc9, 0x61, 0x1e, 0xea, 0xef, 0xce, 0xc1, 0x68, 0xb2, 0xed, 0xc5, 0x75, 0xbe, 0xb7, 0x95, + 0x6b, 0x55, 0x66, 0x4b, 0x36, 0x18, 0x00, 0x05, 0x9c, 0x2c, 0xc3, 0xc9, 0x5c, 0x6d, 0x41, 0xc2, + 0x77, 0xaf, 0x4a, 0x6d, 0x56, 0xb2, 0x3b, 0x99, 0xab, 0x4a, 0x48, 0xb0, 0xef, 0x0b, 0xf7, 0x7b, + 0x0e, 0x28, 0xb2, 0x25, 0xcf, 0xdf, 0xa6, 0x4c, 0x03, 0xf2, 0x4e, 0x98, 0xd6, 0x5e, 0xe9, 0x52, + 0xd4, 0x95, 0x61, 0xb0, 0xb2, 0x89, 0xa2, 0x62, 0x06, 0x8b, 0x39, 0x6a, 0xb2, 0x00, 0x55, 0xd6, + 0x70, 0xf1, 0xa9, 0x58, 0xc5, 0xda, 0xf3, 0x5d, 0x5c, 0x5f, 0x95, 0x5f, 0x19, 0x1a, 0x12, 0xc1, + 0x4c, 0xcb, 0x4b, 0x52, 0xae, 0x01, 0x73, 0x52, 0x1f, 0x30, 0x0d, 0xcb, 0x2b, 0x75, 0xd6, 0xf2, + 0x8c, 0xb0, 0x9f, 0xb7, 0xfb, 0xcd, 0x11, 0x98, 0xca, 0x2c, 0x34, 0x66, 0xa4, 0xba, 0x09, 0xdb, + 0x49, 0xf5, 0x89, 0x5d, 0x1b, 0xa9, 0x17, 0x25, 0x1c, 0x35, 0x05, 0xa3, 0xee, 0x78, 0x49, 0x72, + 0x27, 0x8a, 0xeb, 0xd2, 0x32, 0x68, 0xea, 0x75, 0x09, 0x47, 0x4d, 0xc1, 0xcc, 0xd5, 0x16, 0xf5, + 0x62, 0x1a, 0xf3, 0xca, 0x85, 0xbc, 0xb9, 0xaa, 0x19, 0x14, 0xda, 0x74, 0x7c, 0x8d, 0xa7, 0xad, + 0x64, 0xa9, 0x15, 0xd0, 0x30, 0x15, 0x6a, 0x16, 0xb3, 0xc6, 0x37, 0xd7, 0x36, 0x6c, 0xa6, 0x66, + 0x8d, 0xe7, 0x10, 0x98, 0x17, 0x4f, 0x3e, 0xe1, 0xc0, 0x94, 0x77, 0x27, 0x31, 0x85, 0xad, 0x7c, + 0x91, 0x1f, 0xdb, 0xe6, 0x65, 0x6a, 0x65, 0x6b, 0x33, 0xcc, 0x5a, 0x64, 0x40, 0x98, 0x15, 0x4a, + 0xbe, 0xc8, 0x63, 0xef, 0xd4, 0x5f, 0x8f, 0xa3, 0xdd, 0xa0, 0xae, 0xc6, 0x50, 0x7a, 0xd3, 0xc7, + 0x74, 0xde, 0x56, 0xfa, 0xf8, 0x0a, 0x23, 0xd1, 0x0f, 0xc7, 0x01, 0x3a, 0xb8, 0x7f, 0x55, 0x86, + 0x09, 0x6b, 0x6d, 0x0f, 0x34, 0xd4, 0xce, 0x0f, 0x98, 0xa1, 0x2e, 0x1d, 0xc1, 0x50, 0x7f, 0x04, + 0xaa, 0xbe, 0x32, 0x14, 0xc5, 0x14, 0xe2, 0xe6, 0xcd, 0x8f, 0xb1, 0x15, 0x1a, 0x84, 0x46, 0x26, + 0xb9, 0x04, 0x33, 0x16, 0x1b, 0x69, 0x64, 0x46, 0xb8, 0x91, 0xd1, 0x71, 0x8b, 0xc5, 0x3c, 0x01, + 0xf6, 0x7f, 0x43, 0x9e, 0x61, 0x4e, 0x52, 0x20, 0xdb, 0x25, 0x0e, 0x85, 0xb2, 0xc8, 0x75, 0x71, + 0x7d, 0x55, 0x81, 0xd1, 0xa6, 0x71, 0xbf, 0xe9, 0xe8, 0xc1, 0x7d, 0x04, 0x15, 0x12, 0xb7, 0xb3, + 0x15, 0x12, 0x2b, 0x85, 0x74, 0xf3, 0x90, 0xea, 0x88, 0xeb, 0x30, 0xbe, 0x14, 0xb5, 0xdb, 0x5e, + 0x58, 0x27, 0x6f, 0x80, 0x71, 0x5f, 0xfc, 0x29, 0x4f, 0x1d, 0x3c, 0x65, 0x2e, 0xb1, 0xa8, 0x70, + 0xe4, 0x49, 0x18, 0xf1, 0xe2, 0xa6, 0x3a, 0x69, 0xf0, 0x1c, 0xcb, 0x62, 0xdc, 0x4c, 0x90, 0x43, + 0xdd, 0xcf, 0x97, 0x00, 0x96, 0xa2, 0x76, 0xc7, 0x8b, 0x69, 0x7d, 0x33, 0xfa, 0x9f, 0x90, 0xa3, + 0x70, 0x40, 0x3f, 0xed, 0x00, 0x61, 0xbd, 0x12, 0x85, 0x34, 0x34, 0x79, 0x1d, 0xb6, 0x5f, 0xfa, + 0x0a, 0x2a, 0x37, 0x1f, 0xb3, 0x06, 0x14, 0x02, 0x0d, 0xcd, 0x21, 0x9c, 0xd2, 0xa7, 0x54, 0xc8, + 0xba, 0x9c, 0xcd, 0xe6, 0xf3, 0x14, 0xa1, 0x8c, 0x60, 0xbb, 0x5f, 0x28, 0xc1, 0x19, 0x61, 0xb6, + 0xae, 0x79, 0xa1, 0xd7, 0xa4, 0x6d, 0xa6, 0xd5, 0x61, 0x83, 0xd7, 0x3e, 0xf3, 0x86, 0x02, 0x95, + 0xbc, 0x3f, 0xee, 0xe4, 0x14, 0x93, 0x4a, 0x4c, 0xa3, 0xd5, 0x30, 0x48, 0x91, 0x33, 0x27, 0x09, + 0x54, 0xd4, 0xd5, 0x0a, 0x69, 0x6c, 0x0a, 0x12, 0xa4, 0xd7, 0xdd, 0x25, 0xc9, 0x1e, 0xb5, 0x20, + 0xf7, 0xab, 0x0e, 0xe4, 0x8d, 0x28, 0x3f, 0x2e, 0x88, 0xf2, 0xbb, 0xfc, 0x71, 0x21, 0x5b, 0x2d, + 0x77, 0x84, 0xe2, 0xb3, 0xf7, 0xc1, 0x84, 0x97, 0xa6, 0xb4, 0xdd, 0x11, 0xbe, 0x6b, 0xf9, 0xc1, + 0xe2, 0x23, 0xd7, 0xa2, 0x7a, 0xd0, 0x08, 0xb8, 0xcf, 0x6a, 0xb3, 0x73, 0x5f, 0x80, 0x8a, 0x4a, + 0x09, 0x1c, 0x62, 0x30, 0x9f, 0xca, 0x64, 0x38, 0x86, 0x4c, 0x97, 0x7b, 0x25, 0x18, 0xb0, 0x0b, + 0xb2, 0x26, 0x1b, 0x7b, 0x91, 0x69, 0xf2, 0xd1, 0x6c, 0x06, 0xd9, 0x13, 0xe9, 0x10, 0x71, 0x10, + 0x7f, 0x77, 0xd1, 0xbb, 0xb8, 0xc9, 0x90, 0x4c, 0x48, 0xfd, 0x74, 0x96, 0x84, 0x5c, 0x00, 0x30, + 0x66, 0x5e, 0x16, 0x2d, 0xe8, 0x50, 0x9e, 0xd9, 0x0d, 0xd0, 0xa2, 0x62, 0x4e, 0x5d, 0x10, 0x26, + 0xa9, 0xd7, 0x6a, 0x5d, 0x0e, 0xc2, 0x54, 0x1e, 0x76, 0xb4, 0x09, 0x58, 0x35, 0x28, 0xb4, 0xe9, + 0xce, 0xbe, 0xcd, 0x1a, 0x97, 0xa3, 0x64, 0x9a, 0x3e, 0x5d, 0x82, 0xe9, 0x4b, 0x61, 0x77, 0xfd, + 0xd2, 0x7a, 0x77, 0xab, 0x15, 0xf8, 0x57, 0x69, 0x8f, 0x0d, 0xda, 0x0e, 0xed, 0xad, 0x2e, 0xcb, + 0x6e, 0xd7, 0x83, 0x76, 0x95, 0x01, 0x51, 0xe0, 0x98, 0x9a, 0x8d, 0x20, 0x6c, 0xd2, 0xb8, 0x13, + 0x07, 0xd2, 0x1b, 0xb7, 0xd4, 0xbc, 0x68, 0x50, 0x68, 0xd3, 0x31, 0xde, 0xd1, 0x9d, 0x90, 0xc6, + 0x79, 0xfb, 0x71, 0x83, 0x01, 0x51, 0xe0, 0x18, 0x51, 0x1a, 0x77, 0x93, 0x54, 0xf6, 0x98, 0x26, + 0xda, 0x64, 0x40, 0x14, 0x38, 0x36, 0x3d, 0x92, 0xee, 0x16, 0x0f, 0xd3, 0xe5, 0x12, 0xa6, 0x1b, + 0x02, 0x8c, 0x0a, 0xcf, 0x48, 0x77, 0x68, 0x6f, 0x99, 0xed, 0xa6, 0xb9, 0xea, 0x8b, 0xab, 0x02, + 0x8c, 0x0a, 0xef, 0xfe, 0xbd, 0x03, 0x24, 0xdb, 0x1d, 0x8f, 0x60, 0x43, 0x7e, 0x39, 0xbb, 0x21, + 0x1f, 0x33, 0xa2, 0x9a, 0x55, 0x7f, 0xc8, 0xbe, 0xfc, 0x2b, 0x0e, 0x4c, 0xda, 0xc1, 0x75, 0xd2, + 0xcc, 0x19, 0xa2, 0x1b, 0x59, 0x43, 0x74, 0x6f, 0x7f, 0xee, 0xc7, 0x06, 0xdd, 0xfc, 0x6b, 0x06, + 0x69, 0xd4, 0x49, 0xde, 0x4a, 0xc3, 0x66, 0x10, 0x52, 0x1e, 0x3a, 0x12, 0x41, 0xf9, 0x4c, 0xe4, + 0x7e, 0x29, 0xaa, 0xd3, 0x07, 0xb0, 0x64, 0xee, 0x6f, 0x3a, 0x30, 0xd3, 0x57, 0xb2, 0x72, 0x94, + 0xd2, 0xca, 0xfe, 0xc2, 0xc9, 0xd2, 0x91, 0x0a, 0x27, 0xb3, 0x85, 0x55, 0xe5, 0x83, 0x0a, 0xab, + 0xdc, 0x5b, 0x42, 0xdf, 0x4c, 0x31, 0xd0, 0x21, 0xac, 0xe4, 0x81, 0x15, 0xa0, 0xee, 0x67, 0x1c, + 0x98, 0xca, 0x94, 0x58, 0x15, 0x64, 0x7b, 0xf9, 0x32, 0x8e, 0x78, 0x22, 0x29, 0x0e, 0x42, 0x11, + 0x69, 0xaa, 0x58, 0xcb, 0xd8, 0xa0, 0xd0, 0xa6, 0x73, 0x3f, 0x57, 0x82, 0x8a, 0x8a, 0x49, 0x1e, + 0x42, 0x95, 0x4f, 0x39, 0x30, 0xa5, 0xcf, 0xf2, 0xdc, 0xc3, 0x2f, 0xa4, 0x90, 0x85, 0x69, 0xa0, + 0xb3, 0x8d, 0xcc, 0xc3, 0xd7, 0x47, 0x0d, 0xb4, 0x85, 0x61, 0x56, 0x36, 0xb9, 0x09, 0x90, 0xf4, + 0x92, 0x94, 0xb6, 0xad, 0xb3, 0x86, 0x6b, 0x2d, 0xe7, 0x79, 0x3f, 0x8a, 0x29, 0x5b, 0xbc, 0xd7, + 0xa3, 0x3a, 0xdd, 0xd0, 0x94, 0xc6, 0x72, 0x1b, 0x18, 0x5a, 0x9c, 0xdc, 0xdf, 0x2a, 0xc1, 0xc9, + 0xbc, 0x4a, 0xe4, 0xbd, 0x30, 0xa9, 0xa4, 0x5b, 0x37, 0x34, 0x55, 0x20, 0x76, 0x12, 0x2d, 0xdc, + 0xbd, 0xfd, 0xb9, 0xb9, 0xfe, 0x2b, 0xaa, 0xf3, 0x36, 0x09, 0x66, 0x98, 0x89, 0x80, 0x8a, 0x0c, + 0x24, 0xd5, 0x7a, 0x8b, 0x9d, 0x8e, 0x8c, 0x8a, 0x58, 0x01, 0x15, 0x1b, 0x8b, 0x39, 0x6a, 0xb2, + 0x0e, 0xa7, 0x2d, 0xc8, 0x75, 0x1a, 0x34, 0xb7, 0xb7, 0xa2, 0x58, 0x5c, 0x05, 0x28, 0xd7, 0x9e, + 0x94, 0x5c, 0x4e, 0xe3, 0x00, 0x1a, 0x1c, 0xf8, 0x25, 0x79, 0x0b, 0x54, 0x7c, 0xaf, 0xe3, 0xf9, + 0x41, 0xda, 0x93, 0x87, 0x27, 0x6d, 0xf8, 0x96, 0x24, 0x1c, 0x35, 0x85, 0x7b, 0x0d, 0x46, 0x0e, + 0x39, 0x83, 0x0e, 0xe5, 0x48, 0xbc, 0x00, 0x15, 0xc6, 0x8e, 0x19, 0xba, 0xa2, 0x58, 0x46, 0x50, + 0x51, 0x37, 0x43, 0x88, 0x0b, 0xe5, 0xc0, 0x53, 0x31, 0x2b, 0xdd, 0xac, 0xd5, 0x24, 0xe9, 0x72, + 0x37, 0x89, 0x21, 0xc9, 0x53, 0x50, 0xa6, 0x7b, 0x9d, 0x7c, 0x70, 0x6a, 0x65, 0xaf, 0x13, 0xc4, + 0x34, 0x61, 0x44, 0x74, 0xaf, 0x43, 0xce, 0x42, 0x29, 0xa8, 0xcb, 0x1d, 0x10, 0x24, 0x4d, 0x69, + 0x75, 0x19, 0x4b, 0x41, 0xdd, 0xdd, 0x83, 0xaa, 0xbe, 0x8a, 0x42, 0x76, 0xd4, 0xc6, 0xe0, 0x14, + 0x91, 0x44, 0x50, 0x7c, 0x87, 0x6c, 0x09, 0x5d, 0x00, 0x53, 0xfe, 0x56, 0x94, 0x7d, 0x39, 0x0f, + 0x23, 0x7e, 0x24, 0xeb, 0x60, 0x2b, 0x86, 0x0d, 0xdf, 0x11, 0x38, 0xc6, 0xbd, 0x05, 0xd3, 0x57, + 0xc3, 0xe8, 0x4e, 0xc8, 0x76, 0xea, 0x8b, 0x01, 0x6d, 0xd5, 0x19, 0xe3, 0x06, 0xfb, 0x23, 0xef, + 0x7f, 0x70, 0x2c, 0x0a, 0x9c, 0xbe, 0xaf, 0x51, 0x1a, 0x76, 0x5f, 0xc3, 0xfd, 0x39, 0x07, 0x4e, + 0xe6, 0x4b, 0xdd, 0xbe, 0x6f, 0x47, 0xa2, 0x8f, 0x32, 0x65, 0x54, 0x2d, 0xd5, 0x8d, 0x8e, 0xc8, + 0xda, 0x3e, 0x07, 0x93, 0x5b, 0xdd, 0xa0, 0x55, 0x97, 0xbf, 0xa5, 0x3e, 0xba, 0x5a, 0xac, 0x66, + 0xe1, 0x30, 0x43, 0xc9, 0x1c, 0xcb, 0xad, 0x20, 0xf4, 0xe2, 0xde, 0xba, 0xd9, 0x37, 0xb4, 0x79, + 0xaa, 0x69, 0x0c, 0x5a, 0x54, 0xee, 0x5f, 0x94, 0xc1, 0xdc, 0x89, 0x21, 0x81, 0x2c, 0x0a, 0x70, + 0x8a, 0x88, 0xb3, 0x6d, 0xf4, 0x42, 0xdf, 0xdc, 0xbe, 0xa9, 0xe4, 0x6a, 0x02, 0x3e, 0xe9, 0x30, + 0x97, 0x36, 0x48, 0x03, 0x8f, 0x1b, 0x0b, 0x79, 0xb2, 0x5b, 0x2f, 0x28, 0x6f, 0xbc, 0x2a, 0x38, + 0x47, 0xb1, 0xed, 0x24, 0x6b, 0x61, 0x68, 0x4b, 0x26, 0x2f, 0xc9, 0x48, 0x7b, 0xb9, 0xb0, 0x92, + 0x92, 0x4a, 0x2e, 0xbc, 0xde, 0x81, 0xd1, 0x98, 0xa6, 0xb1, 0x2a, 0xe6, 0xb9, 0x7a, 0xdc, 0xbc, + 0x63, 0x1a, 0xf7, 0x36, 0x52, 0x76, 0x7a, 0x6c, 0x5a, 0x9e, 0x1c, 0x07, 0xa3, 0x10, 0xe4, 0x26, + 0x40, 0xfa, 0xfb, 0xe2, 0x88, 0x61, 0xe7, 0x05, 0xa8, 0x7a, 0xdd, 0x34, 0x6a, 0xb3, 0x6e, 0xe2, + 0xc3, 0x53, 0xb1, 0x02, 0xeb, 0x0a, 0x81, 0x86, 0xc6, 0x7d, 0x75, 0x14, 0x72, 0x59, 0x7a, 0xb2, + 0x67, 0xdf, 0xe7, 0x72, 0x8a, 0xbd, 0xcf, 0xa5, 0x95, 0x19, 0x74, 0xa7, 0x8b, 0x34, 0x61, 0xb4, + 0xb3, 0xed, 0x25, 0x6a, 0x8d, 0xbe, 0xa0, 0xba, 0x69, 0x9d, 0x01, 0xef, 0xed, 0xcf, 0xfd, 0xf8, + 0xe1, 0x1c, 0x57, 0x36, 0x57, 0x17, 0x44, 0xc9, 0xa2, 0x11, 0xcd, 0x79, 0xa0, 0xe0, 0x6f, 0xbb, + 0xae, 0xe5, 0x03, 0x0e, 0xe1, 0x1f, 0x73, 0x44, 0x69, 0x17, 0xd2, 0xa4, 0xdb, 0x4a, 0xe5, 0x6c, + 0x78, 0xa1, 0xc0, 0x55, 0x26, 0x18, 0x9b, 0x1a, 0x2f, 0xf1, 0x1b, 0x2d, 0xa1, 0xe4, 0xbd, 0x50, + 0x4d, 0x52, 0x2f, 0x4e, 0x1f, 0xb0, 0x22, 0x44, 0x77, 0xfa, 0x86, 0x62, 0x82, 0x86, 0x1f, 0x79, + 0x0f, 0x40, 0x23, 0x08, 0x83, 0x64, 0xfb, 0x01, 0x13, 0x64, 0x5c, 0xf1, 0x8b, 0x9a, 0x03, 0x5a, + 0xdc, 0x98, 0x75, 0xe3, 0x73, 0x5b, 0xc4, 0x60, 0x2b, 0x7c, 0x2f, 0xd5, 0xd6, 0x0d, 0x35, 0x06, + 0x2d, 0x2a, 0xf7, 0xc3, 0x70, 0x2a, 0x7f, 0x97, 0x5a, 0x9e, 0x65, 0x9b, 0x71, 0xd4, 0xed, 0xe4, + 0xf7, 0x12, 0x7e, 0xd7, 0x16, 0x05, 0x8e, 0xd9, 0xf8, 0x9d, 0x20, 0xac, 0xe7, 0x6d, 0xfc, 0xd5, + 0x20, 0xac, 0x23, 0xc7, 0x1c, 0xe2, 0xa2, 0xdb, 0x1f, 0x38, 0x70, 0xfe, 0xa0, 0x2b, 0xdf, 0xe4, + 0x49, 0x18, 0xb9, 0xe3, 0xc5, 0xa1, 0xbc, 0xc4, 0xc2, 0x6d, 0xc7, 0x2d, 0x2f, 0x0e, 0x91, 0x43, + 0x49, 0x0f, 0xc6, 0x44, 0x15, 0x9c, 0xf4, 0x8e, 0x5f, 0x28, 0xf6, 0x02, 0x3a, 0x3b, 0x0c, 0xea, + 0xf0, 0x92, 0xa8, 0xc0, 0x43, 0x29, 0xd0, 0x7d, 0xd5, 0x01, 0x72, 0x63, 0x97, 0xc6, 0x71, 0x50, + 0xb7, 0xea, 0xf6, 0xc8, 0xb3, 0x30, 0x79, 0x7b, 0xe3, 0xc6, 0xf5, 0xf5, 0x28, 0x08, 0x79, 0xf9, + 0xb9, 0x55, 0x2d, 0x72, 0xc5, 0x82, 0x63, 0x86, 0x8a, 0x2c, 0xc1, 0xcc, 0xed, 0x97, 0xd9, 0x96, + 0xb3, 0xb2, 0xd7, 0x89, 0x69, 0x92, 0xe8, 0x67, 0x1b, 0xaa, 0x22, 0x93, 0x76, 0xe5, 0x85, 0x1c, + 0x12, 0xfb, 0xe9, 0xdd, 0xaf, 0x94, 0x60, 0xc2, 0x7a, 0xe5, 0xe0, 0x10, 0xfe, 0x48, 0xee, 0x61, + 0x86, 0xd2, 0x21, 0x1f, 0x66, 0x78, 0x1a, 0x2a, 0x9d, 0xa8, 0x15, 0xf8, 0x81, 0x3e, 0xe1, 0x4d, + 0xf2, 0x74, 0x9b, 0x84, 0xa1, 0xc6, 0x92, 0x3b, 0x50, 0xd5, 0xd7, 0x95, 0x65, 0xa5, 0x59, 0x51, + 0x1e, 0x99, 0x5e, 0x6b, 0xe6, 0x1a, 0xb2, 0x91, 0x45, 0x5c, 0x18, 0xe3, 0x13, 0x55, 0x25, 0x13, + 0x78, 0xe9, 0x02, 0x9f, 0xc1, 0x09, 0x4a, 0x8c, 0xfb, 0xcf, 0xa3, 0x50, 0x65, 0xe7, 0xdf, 0xa5, + 0x98, 0xd6, 0x13, 0xf2, 0x7a, 0x28, 0x77, 0xe3, 0x96, 0xec, 0x2c, 0x1d, 0x97, 0x62, 0x67, 0x63, + 0x06, 0xcf, 0xec, 0x0e, 0xa5, 0x23, 0x25, 0x25, 0xcb, 0x07, 0x26, 0x25, 0x9f, 0x87, 0xa9, 0x24, + 0xd9, 0x5e, 0x8f, 0x83, 0x5d, 0x2f, 0x65, 0x73, 0x4e, 0x06, 0x71, 0x4c, 0x16, 0x68, 0xe3, 0xb2, + 0x41, 0x62, 0x96, 0x96, 0x5c, 0x82, 0x19, 0x93, 0x1a, 0xa4, 0x71, 0xca, 0x63, 0x36, 0x22, 0xbc, + 0xa3, 0x93, 0x30, 0x26, 0x99, 0x28, 0x09, 0xb0, 0xff, 0x1b, 0xb2, 0x0c, 0x27, 0x33, 0x40, 0xa6, + 0x88, 0x88, 0xfd, 0xe8, 0x2c, 0x76, 0x86, 0x0f, 0xd3, 0xa5, 0xef, 0x0b, 0x72, 0x0d, 0x4e, 0x89, + 0xf1, 0xe5, 0xd7, 0xdc, 0x75, 0x8b, 0xc6, 0x39, 0xa3, 0xff, 0x25, 0x19, 0x9d, 0xba, 0xd4, 0x4f, + 0x82, 0x83, 0xbe, 0x63, 0x33, 0x54, 0x83, 0x57, 0x97, 0xa5, 0x61, 0xd3, 0x33, 0x54, 0xb3, 0x59, + 0xad, 0xa3, 0x4d, 0x47, 0xde, 0x0d, 0x4f, 0x98, 0x9f, 0x22, 0xe4, 0x27, 0x76, 0xfb, 0x65, 0x99, + 0xc4, 0x9f, 0x93, 0x2c, 0x9e, 0xb8, 0x34, 0x90, 0xac, 0x8e, 0xc3, 0xbe, 0x27, 0x5b, 0x70, 0x56, + 0xa3, 0x56, 0xd8, 0xea, 0xed, 0xc4, 0x41, 0x42, 0x6b, 0x5e, 0x42, 0x5f, 0x8c, 0x5b, 0x3c, 0xed, + 0x5f, 0x35, 0x4f, 0x35, 0x5c, 0x0a, 0xd2, 0xcb, 0x83, 0x28, 0x71, 0x0d, 0xef, 0xc3, 0x85, 0x39, + 0x17, 0x34, 0xf4, 0xb6, 0x5a, 0xf4, 0xc6, 0xd2, 0x2a, 0xbf, 0x7e, 0x68, 0x39, 0x17, 0x2b, 0x0a, + 0x81, 0x86, 0x46, 0xbb, 0xf6, 0x93, 0x43, 0x5d, 0xfb, 0x6f, 0x3b, 0x30, 0xa5, 0x27, 0xfb, 0x23, + 0x08, 0xd0, 0xb5, 0xb2, 0x01, 0xba, 0x4b, 0xc7, 0xf5, 0xea, 0xa4, 0xe6, 0x43, 0x0e, 0x62, 0x7f, + 0x58, 0x05, 0xe0, 0x8f, 0xdf, 0x04, 0xbc, 0xc8, 0xf4, 0x3c, 0x8c, 0xc4, 0xb4, 0x13, 0xe5, 0x2d, + 0x1f, 0xa3, 0x40, 0x8e, 0xf9, 0xc1, 0x5d, 0xce, 0x83, 0x92, 0xd4, 0xa3, 0xdf, 0xdf, 0x24, 0xf5, + 0x06, 0x3c, 0x1e, 0x84, 0x09, 0xf5, 0xbb, 0xb1, 0xdc, 0xe8, 0x2e, 0x47, 0x89, 0xb6, 0x0e, 0x95, + 0xda, 0xeb, 0x25, 0xa3, 0xc7, 0x57, 0x07, 0x11, 0xe1, 0xe0, 0x6f, 0x59, 0x97, 0x2a, 0x84, 0xbc, + 0xcd, 0x62, 0xc2, 0x03, 0x12, 0x8e, 0x9a, 0xc2, 0x2c, 0x88, 0xb5, 0x86, 0xba, 0xae, 0x92, 0x5b, + 0x10, 0x6b, 0x17, 0x37, 0xd0, 0xd0, 0x0c, 0xb6, 0x8a, 0xd5, 0x82, 0xac, 0x22, 0x1c, 0xd9, 0x2a, + 0xaa, 0xf5, 0x39, 0x31, 0xf4, 0xa9, 0x04, 0xb5, 0x59, 0x4f, 0x0e, 0xdd, 0xac, 0xdf, 0x09, 0xd3, + 0x41, 0xb8, 0x4d, 0xe3, 0x20, 0xa5, 0x75, 0xbe, 0x16, 0x66, 0xa7, 0x78, 0x47, 0xe8, 0xc8, 0xd5, + 0x6a, 0x06, 0x8b, 0x39, 0xea, 0xac, 0x51, 0x99, 0x3e, 0x84, 0x51, 0x19, 0x62, 0xca, 0x4f, 0x14, + 0x63, 0xca, 0x4f, 0x1e, 0xdf, 0x94, 0xcf, 0x3c, 0x54, 0x53, 0x4e, 0x0a, 0x31, 0xe5, 0x4f, 0xc1, + 0x68, 0x27, 0x8e, 0xf6, 0x7a, 0xb3, 0xa7, 0xb2, 0xde, 0xf4, 0x3a, 0x03, 0xa2, 0xc0, 0xb9, 0xaf, + 0x94, 0xe0, 0x71, 0x63, 0xbe, 0xd8, 0xa4, 0x09, 0x1a, 0x6c, 0x01, 0xf3, 0x8b, 0x82, 0xa2, 0xe8, + 0xc3, 0x8a, 0x84, 0x9a, 0xa0, 0xaa, 0xc6, 0xa0, 0x45, 0xc5, 0x03, 0x8a, 0x34, 0xe6, 0x55, 0xa8, + 0x79, 0xdb, 0xb6, 0x24, 0xe1, 0xa8, 0x29, 0xf8, 0x73, 0x78, 0x34, 0x4e, 0x65, 0x06, 0x28, 0x5f, + 0x11, 0xb5, 0x64, 0x50, 0x68, 0xd3, 0x31, 0x1f, 0xd0, 0x57, 0xeb, 0x8a, 0xd9, 0xb7, 0x49, 0xe1, + 0x03, 0xea, 0xa5, 0xa4, 0xb1, 0x4a, 0x1d, 0x1e, 0x39, 0x1e, 0xed, 0x57, 0x87, 0x47, 0x02, 0x34, + 0x85, 0xfb, 0x9f, 0x0e, 0xbc, 0x6e, 0x60, 0x57, 0x3c, 0x82, 0x3d, 0x6b, 0x2f, 0xbb, 0x67, 0x6d, + 0x1c, 0x7f, 0xcf, 0xea, 0x6b, 0xc5, 0x90, 0xfd, 0xeb, 0x2f, 0x1d, 0x98, 0x36, 0xf4, 0x8f, 0xa0, + 0xa9, 0x41, 0xa1, 0x0f, 0xdb, 0x19, 0xd5, 0x45, 0x75, 0x64, 0xa6, 0x6d, 0xdf, 0xe6, 0x6d, 0x13, + 0x07, 0xaa, 0x45, 0x5f, 0xbd, 0x1c, 0x73, 0xc0, 0xc9, 0xa4, 0x07, 0x63, 0xfc, 0x36, 0x6d, 0x52, + 0xcc, 0xc1, 0x2e, 0x2b, 0x9f, 0xc7, 0x36, 0xcd, 0xc1, 0x8e, 0xff, 0x4c, 0x50, 0x0a, 0xe4, 0x35, + 0xd2, 0x41, 0xc2, 0x8c, 0x60, 0x5d, 0xc6, 0x60, 0x4d, 0x8d, 0xb4, 0x84, 0xa3, 0xa6, 0x70, 0xdb, + 0x30, 0x9b, 0x65, 0xbe, 0x4c, 0x1b, 0x3c, 0x7e, 0x76, 0xa8, 0x66, 0x2e, 0x40, 0xd5, 0xe3, 0x5f, + 0xad, 0x75, 0xbd, 0xfc, 0xf3, 0x31, 0x8b, 0x0a, 0x81, 0x86, 0xc6, 0xfd, 0x0d, 0x07, 0x4e, 0x0d, + 0x68, 0x4c, 0x81, 0xb1, 0xe7, 0xd4, 0x58, 0x81, 0x21, 0x4f, 0xfa, 0xd4, 0x69, 0xc3, 0x53, 0x11, + 0x1a, 0x2b, 0xa0, 0xb3, 0x2c, 0xc0, 0xa8, 0xf0, 0xee, 0xbf, 0x38, 0x70, 0x22, 0xab, 0x6b, 0x42, + 0xae, 0x00, 0x11, 0x8d, 0x59, 0x0e, 0x12, 0x3f, 0xda, 0xa5, 0x71, 0x8f, 0xb5, 0x5c, 0x68, 0xad, + 0x2f, 0xd6, 0x2f, 0xf6, 0x51, 0xe0, 0x80, 0xaf, 0xc8, 0x67, 0x78, 0x41, 0x91, 0xea, 0x6d, 0x35, + 0x53, 0x6e, 0x16, 0x39, 0x53, 0xcc, 0x60, 0xda, 0xc7, 0x62, 0x2d, 0x12, 0x6d, 0xf9, 0xee, 0x77, + 0x46, 0x40, 0x27, 0xa7, 0x78, 0x2c, 0xa0, 0xa0, 0x48, 0x4a, 0xe6, 0x8d, 0xa1, 0xf2, 0x11, 0xde, + 0x18, 0x1a, 0xb9, 0xdf, 0xc1, 0x5f, 0xe4, 0x6d, 0x8d, 0x83, 0x69, 0x19, 0xfd, 0x4d, 0x83, 0x42, + 0x9b, 0x8e, 0x69, 0xd2, 0x0a, 0x76, 0xa9, 0xf8, 0x68, 0x2c, 0xab, 0xc9, 0x9a, 0x42, 0xa0, 0xa1, + 0x61, 0x9a, 0xd4, 0x83, 0x46, 0x43, 0x1e, 0xff, 0xb4, 0x26, 0xac, 0x77, 0x90, 0x63, 0x18, 0xc5, + 0x76, 0x14, 0xed, 0x48, 0xa7, 0x4e, 0x53, 0x5c, 0x8e, 0xa2, 0x1d, 0xe4, 0x18, 0xe6, 0x86, 0x84, + 0x51, 0xdc, 0xf6, 0x5a, 0xc1, 0x07, 0x68, 0x5d, 0x4b, 0x91, 0xce, 0x9c, 0x76, 0x43, 0xae, 0xf7, + 0x93, 0xe0, 0xa0, 0xef, 0xd8, 0x0c, 0xec, 0xc4, 0xb4, 0x1e, 0xf8, 0xa9, 0xcd, 0x0d, 0xb2, 0x33, + 0x70, 0xbd, 0x8f, 0x02, 0x07, 0x7c, 0x45, 0x16, 0xe1, 0x84, 0x4a, 0x2e, 0xaa, 0x8a, 0x15, 0xe1, + 0xe1, 0x69, 0xe7, 0x1a, 0xb3, 0x68, 0xcc, 0xd3, 0x33, 0x6b, 0xd3, 0x96, 0x75, 0x43, 0xdc, 0xf7, + 0xb3, 0xac, 0x8d, 0xaa, 0x27, 0x42, 0x4d, 0xe1, 0xfe, 0x76, 0x89, 0xed, 0x8e, 0x43, 0x2e, 0x8b, + 0x3e, 0xb2, 0xc8, 0x5d, 0x76, 0x46, 0x8e, 0x1c, 0x62, 0x46, 0x3e, 0x0b, 0x93, 0xb7, 0x93, 0x28, + 0xd4, 0x51, 0xb1, 0xd1, 0xa1, 0x51, 0x31, 0x8b, 0x6a, 0x70, 0x54, 0x6c, 0xec, 0x88, 0x51, 0xb1, + 0x3f, 0x19, 0x85, 0x33, 0x3a, 0x1f, 0x4c, 0xd3, 0x3b, 0x51, 0xbc, 0x13, 0x84, 0x4d, 0x9e, 0x43, + 0xfd, 0xb2, 0x03, 0x93, 0x62, 0x7a, 0xcb, 0x6b, 0xf5, 0x22, 0x67, 0xd8, 0x28, 0xe8, 0xe6, 0x53, + 0x46, 0xd8, 0xfc, 0xa6, 0x25, 0x28, 0xf7, 0xc6, 0x81, 0x8d, 0xc2, 0x8c, 0x46, 0xe4, 0x43, 0x00, + 0xaa, 0xc0, 0xa2, 0x51, 0xd0, 0xfb, 0x5c, 0x4a, 0x3f, 0xa4, 0x0d, 0xe3, 0x4a, 0x6e, 0x6a, 0x21, + 0x68, 0x09, 0x24, 0xaf, 0x38, 0x30, 0xd6, 0x12, 0x7d, 0x23, 0x12, 0x40, 0x2f, 0x3d, 0x94, 0xbe, + 0xb1, 0x7b, 0x45, 0x6f, 0xcb, 0xb2, 0x3f, 0xa4, 0x7c, 0x82, 0x30, 0x1e, 0x84, 0x4d, 0x36, 0xac, + 0x32, 0x90, 0xf8, 0xa6, 0x41, 0xf5, 0x07, 0x6b, 0x91, 0x57, 0xaf, 0x79, 0x2d, 0x2f, 0xf4, 0x69, + 0xbc, 0x2a, 0xc8, 0xed, 0xf7, 0x81, 0x38, 0x00, 0x15, 0xa3, 0xbe, 0xab, 0x7d, 0xa3, 0x87, 0xb9, + 0xda, 0x77, 0xf6, 0x5d, 0x30, 0xd3, 0x37, 0x98, 0x47, 0x7a, 0xf0, 0xe0, 0x47, 0x61, 0xe2, 0x01, + 0x3f, 0x75, 0xff, 0x68, 0xcc, 0xec, 0x31, 0xd7, 0xa3, 0xba, 0xb8, 0x60, 0x16, 0x9b, 0x11, 0x95, + 0xae, 0x62, 0x81, 0x53, 0xc4, 0x7a, 0x63, 0x48, 0x03, 0xd1, 0x16, 0xc9, 0xe6, 0x68, 0xc7, 0x8b, + 0x69, 0xf8, 0xb0, 0xe7, 0xe8, 0xba, 0x16, 0x82, 0x96, 0x40, 0xb2, 0x9d, 0xc9, 0x50, 0x5e, 0x3c, + 0x7e, 0x86, 0x92, 0x79, 0xaf, 0x03, 0x2f, 0x02, 0xbd, 0xe6, 0xc0, 0x74, 0x98, 0x99, 0xb9, 0x32, + 0x4b, 0xb5, 0xf9, 0x30, 0x56, 0x85, 0xb8, 0xd8, 0x9b, 0x85, 0x61, 0x4e, 0xfe, 0xa0, 0x1d, 0x68, + 0xf4, 0x88, 0x3b, 0x90, 0xb9, 0xa9, 0x3a, 0x36, 0xec, 0xa6, 0x2a, 0x09, 0xf5, 0x1d, 0xf5, 0xf1, + 0xc2, 0xef, 0xa8, 0xc3, 0x80, 0xfb, 0xe9, 0xb7, 0xa0, 0xea, 0xc7, 0xd4, 0x4b, 0x1f, 0xf0, 0xba, + 0x32, 0x7f, 0xd5, 0x6d, 0x49, 0x31, 0x40, 0xc3, 0xcb, 0xfd, 0xf3, 0x32, 0x9c, 0x54, 0x3d, 0xa2, + 0xb2, 0x37, 0x6c, 0x3b, 0x13, 0x72, 0x8d, 0x2f, 0xaa, 0xb7, 0xb3, 0xcb, 0x0a, 0x81, 0x86, 0x86, + 0xb9, 0x4f, 0xdd, 0x84, 0xde, 0xe8, 0xd0, 0x70, 0x2d, 0xd8, 0x4a, 0x78, 0x8f, 0x5b, 0x25, 0x60, + 0x2f, 0x1a, 0x14, 0xda, 0x74, 0xcc, 0x77, 0x16, 0x6e, 0x6c, 0x92, 0x4f, 0x86, 0x4a, 0xf7, 0x18, + 0x15, 0x9e, 0x7c, 0x69, 0xe0, 0x63, 0x13, 0xc5, 0x94, 0x01, 0xf4, 0x25, 0xad, 0x8e, 0xf8, 0xca, + 0xc4, 0xab, 0x0e, 0x9c, 0xd8, 0xc9, 0xd4, 0x9f, 0x28, 0x93, 0x7c, 0xcc, 0x32, 0xcc, 0x6c, 0x51, + 0x8b, 0x99, 0xc2, 0x59, 0x78, 0x82, 0x79, 0xe9, 0xee, 0xbf, 0x3b, 0x60, 0x9b, 0xa7, 0xc3, 0x39, + 0x42, 0xd6, 0xf3, 0x41, 0xa5, 0x03, 0x9e, 0x0f, 0x52, 0x3e, 0x53, 0xf9, 0x70, 0x3e, 0xfa, 0xc8, + 0x11, 0x7c, 0xf4, 0xd1, 0xa1, 0x4e, 0xd6, 0xeb, 0xa1, 0xdc, 0x0d, 0xea, 0xd2, 0xcd, 0x36, 0x09, + 0xa9, 0xd5, 0x65, 0x64, 0x70, 0xf7, 0xf7, 0x47, 0xcd, 0xb1, 0x5a, 0x66, 0xaf, 0x7f, 0x28, 0x9a, + 0xdd, 0xd0, 0x55, 0xb5, 0xa2, 0xe5, 0xd7, 0xfb, 0xaa, 0x6a, 0xdf, 0x71, 0xf4, 0xe2, 0x04, 0xd1, + 0x41, 0xc3, 0x8a, 0x6a, 0xc7, 0x0f, 0xa8, 0x4c, 0xb8, 0x0d, 0x15, 0x76, 0x12, 0xe1, 0xf1, 0xb1, + 0x4a, 0x46, 0xa9, 0xca, 0x65, 0x09, 0xbf, 0xb7, 0x3f, 0xf7, 0xf6, 0xa3, 0xab, 0xa5, 0xbe, 0x46, + 0xcd, 0x9f, 0x24, 0x50, 0x65, 0x7f, 0xf3, 0x22, 0x0a, 0x79, 0xc6, 0x79, 0x51, 0xdb, 0x22, 0x85, + 0x28, 0xa4, 0x42, 0xc3, 0xc8, 0x21, 0x21, 0x54, 0xf9, 0x43, 0x37, 0x5c, 0xa8, 0x38, 0x0a, 0xad, + 0xeb, 0x52, 0x06, 0x85, 0xb8, 0xb7, 0x3f, 0xf7, 0xfc, 0xd1, 0x85, 0xea, 0xcf, 0xd1, 0x88, 0x70, + 0xff, 0xae, 0x6c, 0xe6, 0xae, 0x2c, 0xa6, 0xfe, 0xa1, 0x98, 0xbb, 0xcf, 0xe5, 0xe6, 0xee, 0xf9, + 0xbe, 0xb9, 0x3b, 0x6d, 0x1e, 0x83, 0xc9, 0xcc, 0xc6, 0x47, 0xbd, 0xc1, 0x1e, 0x7c, 0xec, 0xe6, + 0x9e, 0xc5, 0xcb, 0xdd, 0x20, 0xa6, 0xc9, 0x7a, 0xdc, 0x0d, 0x83, 0xb0, 0xc9, 0xa7, 0x63, 0xc5, + 0xf6, 0x2c, 0x32, 0x68, 0xcc, 0xd3, 0xbb, 0x5f, 0xe1, 0x39, 0x47, 0xab, 0x1e, 0x8b, 0x8d, 0x72, + 0x8b, 0xbf, 0x15, 0x24, 0x2a, 0x42, 0xf5, 0x28, 0x8b, 0x07, 0x82, 0x04, 0x8e, 0xdc, 0x81, 0xf1, + 0x2d, 0xf1, 0x5e, 0x41, 0x31, 0x37, 0x9a, 0xe4, 0xe3, 0x07, 0xfc, 0xee, 0xa8, 0x7a, 0x09, 0xe1, + 0x9e, 0xf9, 0x13, 0x95, 0x34, 0xf7, 0x97, 0xca, 0x70, 0x22, 0xf7, 0x92, 0x0d, 0x3b, 0x9f, 0xc7, + 0xd9, 0x4a, 0x78, 0x7d, 0x3e, 0xd7, 0x35, 0xf0, 0x9a, 0x82, 0xbc, 0x1f, 0xa0, 0x4e, 0x3b, 0xad, + 0xa8, 0xc7, 0x1d, 0x97, 0x91, 0x23, 0x3b, 0x2e, 0xda, 0xd7, 0x5d, 0xd6, 0x5c, 0xd0, 0xe2, 0x28, + 0xcb, 0x60, 0x47, 0xc5, 0x6b, 0x0c, 0xd9, 0x32, 0x58, 0xeb, 0x62, 0xdf, 0xd8, 0xa3, 0xbd, 0xd8, + 0x17, 0xc0, 0x09, 0xa1, 0xa2, 0xae, 0x7a, 0x7a, 0x80, 0xe2, 0xa6, 0x53, 0x6c, 0x46, 0x2d, 0x67, + 0xd9, 0x60, 0x9e, 0xaf, 0xfb, 0xd9, 0x12, 0x73, 0xdf, 0x44, 0x67, 0x5f, 0x53, 0xb1, 0xec, 0x37, + 0xc2, 0x98, 0xd7, 0x4d, 0xb7, 0xa3, 0xbe, 0xf7, 0x23, 0x16, 0x39, 0x14, 0x25, 0x96, 0xac, 0xc1, + 0x48, 0xdd, 0x4b, 0xd5, 0xe3, 0xf7, 0x47, 0x51, 0xce, 0x04, 0xae, 0xbc, 0x94, 0x22, 0xe7, 0x42, + 0x9e, 0x84, 0x91, 0xd4, 0x6b, 0x66, 0x1e, 0xb6, 0xdc, 0xf4, 0x9a, 0x09, 0x72, 0xa8, 0xbd, 0xbb, + 0x8c, 0x1c, 0xb0, 0xbb, 0x3c, 0x6f, 0xfd, 0x5b, 0x06, 0x2b, 0x49, 0xd2, 0xff, 0xaf, 0x14, 0x44, + 0x61, 0x7e, 0x86, 0xd6, 0xfd, 0x7f, 0x30, 0x69, 0xff, 0xab, 0x85, 0x43, 0x5d, 0x44, 0x72, 0xff, + 0x69, 0x04, 0xa6, 0x32, 0x95, 0x71, 0x99, 0x59, 0xee, 0x1c, 0x38, 0xcb, 0x79, 0x4e, 0xab, 0x1b, + 0x52, 0x59, 0xf7, 0x68, 0xe5, 0xb4, 0xba, 0x21, 0x45, 0x81, 0x63, 0xa3, 0x52, 0x8f, 0x7b, 0xd8, + 0x0d, 0x65, 0x10, 0x5d, 0x8f, 0xca, 0x32, 0x87, 0xa2, 0xc4, 0xb2, 0x03, 0xec, 0x64, 0xc2, 0x8d, + 0xa2, 0xb0, 0x11, 0x72, 0xd5, 0x5c, 0x29, 0xe2, 0xcd, 0x2d, 0x59, 0x05, 0xca, 0x0f, 0xf4, 0x36, + 0x04, 0x33, 0x12, 0xc9, 0x27, 0x1c, 0xfb, 0xb5, 0xb1, 0xb1, 0x22, 0x92, 0x3f, 0xf9, 0xc2, 0x43, + 0xb1, 0x82, 0xee, 0xff, 0xe8, 0x58, 0xa2, 0x17, 0xf0, 0xf8, 0xc3, 0x59, 0xc0, 0x30, 0x60, 0xf1, + 0xbe, 0x19, 0xaa, 0x6d, 0x2f, 0x0c, 0x1a, 0x34, 0x49, 0xc5, 0xbf, 0x49, 0xa9, 0x8a, 0xd3, 0xd3, + 0x35, 0x05, 0x44, 0x83, 0xe7, 0xff, 0x8c, 0x88, 0x37, 0x4c, 0x1c, 0x62, 0xaa, 0xd6, 0x3f, 0x23, + 0x32, 0x60, 0xb4, 0x69, 0xdc, 0xdf, 0x71, 0xe0, 0xf1, 0x81, 0x9d, 0xf1, 0x83, 0x1b, 0xad, 0x74, + 0x7f, 0xb7, 0x04, 0xa7, 0x06, 0x54, 0x8e, 0x92, 0xde, 0x43, 0x7b, 0x94, 0x4e, 0x96, 0xa6, 0x4e, + 0x0d, 0x9d, 0x1b, 0x47, 0xdb, 0x86, 0xcc, 0x56, 0x50, 0x7e, 0xa4, 0x5b, 0x81, 0xfb, 0x95, 0x12, + 0x58, 0xcf, 0x27, 0x92, 0x0f, 0xdb, 0x45, 0xd2, 0x4e, 0x51, 0x05, 0xbd, 0x82, 0xb9, 0x2e, 0xb2, + 0x16, 0xbd, 0x36, 0xa8, 0xe6, 0x3a, 0x3f, 0x5f, 0x4b, 0x07, 0xcf, 0x57, 0xd2, 0x52, 0xd5, 0xe8, + 0xe5, 0xe2, 0xab, 0xd1, 0xab, 0x7d, 0x95, 0xe8, 0xbf, 0xe0, 0x88, 0x99, 0x96, 0x6b, 0x92, 0xb1, + 0xb0, 0xce, 0x7d, 0x2c, 0xec, 0x5b, 0xa0, 0x92, 0xd0, 0x56, 0x83, 0x79, 0x76, 0xd2, 0x12, 0xeb, + 0x39, 0xb1, 0x21, 0xe1, 0xa8, 0x29, 0xf8, 0xc5, 0xda, 0x56, 0x2b, 0xba, 0xb3, 0xd2, 0xee, 0xa4, + 0x3d, 0x69, 0x93, 0xcd, 0xc5, 0x5a, 0x8d, 0x41, 0x8b, 0xca, 0xfd, 0x0f, 0x47, 0x0c, 0xa7, 0xf4, + 0xd1, 0x9f, 0xcb, 0x5d, 0x78, 0x3c, 0xbc, 0x7b, 0xfb, 0xd3, 0x00, 0xbe, 0x7e, 0x82, 0xa0, 0x98, + 0x57, 0x15, 0xcd, 0x93, 0x06, 0xf6, 0x53, 0x7f, 0x0a, 0x86, 0x96, 0xbc, 0xcc, 0xe2, 0x29, 0x1f, + 0xb4, 0x78, 0xdc, 0x7f, 0x75, 0x20, 0xb3, 0x59, 0x90, 0x0e, 0x8c, 0x32, 0x0d, 0x7a, 0xc5, 0x3c, + 0x98, 0x60, 0xb3, 0x66, 0x0b, 0x4b, 0x4e, 0x0b, 0xfe, 0x27, 0x0a, 0x41, 0xa4, 0x25, 0xbd, 0xf3, + 0x52, 0x11, 0x8f, 0x7a, 0xd8, 0x02, 0x99, 0x7f, 0x2f, 0xff, 0xf1, 0x84, 0xf6, 0xf4, 0xdd, 0xe7, + 0x60, 0xa6, 0x4f, 0x29, 0x7e, 0xa3, 0x28, 0x52, 0xaf, 0x44, 0x58, 0x33, 0x90, 0xdf, 0x6f, 0x44, + 0x81, 0x63, 0x0e, 0xfe, 0xc9, 0x3c, 0x7b, 0xf2, 0x45, 0x07, 0x66, 0x92, 0x3c, 0xbf, 0x87, 0xd5, + 0x77, 0x3a, 0x72, 0xd5, 0x87, 0xc2, 0x7e, 0x25, 0xdc, 0x3f, 0x95, 0xe6, 0x49, 0xfc, 0xa3, 0x2e, + 0xbd, 0xb9, 0x38, 0x43, 0x37, 0x17, 0xb6, 0xc4, 0xfc, 0x6d, 0x5a, 0xef, 0xb6, 0xfa, 0x4a, 0x69, + 0x36, 0x24, 0x1c, 0x35, 0x45, 0xe6, 0x75, 0xb5, 0xf2, 0x81, 0xaf, 0xab, 0x3d, 0x0b, 0x93, 0xf6, + 0x4b, 0x28, 0x3c, 0x84, 0x26, 0x93, 0x0f, 0xf6, 0xa3, 0x29, 0x98, 0xa1, 0xca, 0xbd, 0xce, 0x35, + 0x7a, 0xe0, 0xeb, 0x5c, 0x4f, 0x43, 0x45, 0xbe, 0x34, 0xa5, 0xe2, 0xbb, 0xa2, 0x4e, 0x47, 0xc2, + 0x50, 0x63, 0x99, 0x81, 0x68, 0x7b, 0x61, 0xd7, 0x6b, 0xb1, 0x1e, 0x92, 0x35, 0x79, 0x7a, 0x65, + 0x5d, 0xd3, 0x18, 0xb4, 0xa8, 0xdc, 0x7f, 0x74, 0x20, 0xff, 0x52, 0x51, 0xa6, 0xb2, 0xcf, 0x39, + 0xb0, 0xb2, 0x2f, 0x5b, 0xe0, 0x54, 0x3a, 0x54, 0x81, 0x93, 0x5d, 0x7b, 0x54, 0xbe, 0x6f, 0xed, + 0xd1, 0x1b, 0xcc, 0x35, 0x76, 0x51, 0xa4, 0x34, 0x31, 0xe8, 0x0a, 0x3b, 0x71, 0x61, 0xcc, 0xf7, + 0x74, 0xe1, 0xf4, 0xa4, 0x70, 0x94, 0x96, 0x16, 0x39, 0x91, 0xc4, 0xd4, 0xe6, 0xbf, 0xf6, 0xdd, + 0x73, 0x8f, 0x7d, 0xfd, 0xbb, 0xe7, 0x1e, 0xfb, 0xd6, 0x77, 0xcf, 0x3d, 0xf6, 0xd1, 0xbb, 0xe7, + 0x9c, 0xaf, 0xdd, 0x3d, 0xe7, 0x7c, 0xfd, 0xee, 0x39, 0xe7, 0x5b, 0x77, 0xcf, 0x39, 0xdf, 0xb9, + 0x7b, 0xce, 0x79, 0xed, 0x6f, 0xcf, 0x3d, 0xf6, 0x9e, 0x8a, 0x9a, 0xab, 0xff, 0x1d, 0x00, 0x00, + 0xff, 0xff, 0xc5, 0xce, 0x00, 0x82, 0xf6, 0x75, 0x00, 0x00, } func (m *AWSAuthConfig) Marshal() (dAtA []byte, err error) { @@ -3765,6 +3797,20 @@ func (m *ApplicationSourceHelm) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.ExternalValueFiles) > 0 { + for iNdEx := len(m.ExternalValueFiles) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.ExternalValueFiles[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + } + } i -= len(m.Version) copy(dAtA[i:], m.Version) i = encodeVarintGenerated(dAtA, i, uint64(len(m.Version))) @@ -5262,6 +5308,48 @@ func (m *HealthStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *HelmExternalValue) 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 *HelmExternalValue) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *HelmExternalValue) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.ValueFiles) > 0 { + for iNdEx := len(m.ValueFiles) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.ValueFiles[iNdEx]) + copy(dAtA[i:], m.ValueFiles[iNdEx]) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.ValueFiles[iNdEx]))) + i-- + dAtA[i] = 0x1a + } + } + i -= len(m.TargetRevision) + copy(dAtA[i:], m.TargetRevision) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.TargetRevision))) + i-- + dAtA[i] = 0x12 + i -= len(m.RepoURL) + copy(dAtA[i:], m.RepoURL) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.RepoURL))) + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + func (m *HelmFileParameter) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -8369,6 +8457,12 @@ func (m *ApplicationSourceHelm) Size() (n int) { } l = len(m.Version) n += 1 + l + sovGenerated(uint64(l)) + if len(m.ExternalValueFiles) > 0 { + for _, e := range m.ExternalValueFiles { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } return n } @@ -8920,6 +9014,25 @@ func (m *HealthStatus) Size() (n int) { return n } +func (m *HelmExternalValue) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.RepoURL) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.TargetRevision) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.ValueFiles) > 0 { + for _, s := range m.ValueFiles { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + func (m *HelmFileParameter) Size() (n int) { if m == nil { return 0 @@ -10199,6 +10312,11 @@ func (this *ApplicationSourceHelm) String() string { repeatedStringForFileParameters += strings.Replace(strings.Replace(f.String(), "HelmFileParameter", "HelmFileParameter", 1), `&`, ``, 1) + "," } repeatedStringForFileParameters += "}" + repeatedStringForExternalValueFiles := "[]HelmExternalValue{" + for _, f := range this.ExternalValueFiles { + repeatedStringForExternalValueFiles += strings.Replace(strings.Replace(f.String(), "HelmExternalValue", "HelmExternalValue", 1), `&`, ``, 1) + "," + } + repeatedStringForExternalValueFiles += "}" s := strings.Join([]string{`&ApplicationSourceHelm{`, `ValueFiles:` + fmt.Sprintf("%v", this.ValueFiles) + `,`, `Parameters:` + repeatedStringForParameters + `,`, @@ -10206,6 +10324,7 @@ func (this *ApplicationSourceHelm) String() string { `Values:` + fmt.Sprintf("%v", this.Values) + `,`, `FileParameters:` + repeatedStringForFileParameters + `,`, `Version:` + fmt.Sprintf("%v", this.Version) + `,`, + `ExternalValueFiles:` + repeatedStringForExternalValueFiles + `,`, `}`, }, "") return s @@ -10633,6 +10752,18 @@ func (this *HealthStatus) String() string { }, "") return s } +func (this *HelmExternalValue) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&HelmExternalValue{`, + `RepoURL:` + fmt.Sprintf("%v", this.RepoURL) + `,`, + `TargetRevision:` + fmt.Sprintf("%v", this.TargetRevision) + `,`, + `ValueFiles:` + fmt.Sprintf("%v", this.ValueFiles) + `,`, + `}`, + }, "") + return s +} func (this *HelmFileParameter) String() string { if this == nil { return "nil" @@ -13765,6 +13896,40 @@ func (m *ApplicationSourceHelm) Unmarshal(dAtA []byte) error { } m.Version = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ExternalValueFiles", 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 + } + m.ExternalValueFiles = append(m.ExternalValueFiles, HelmExternalValue{}) + if err := m.ExternalValueFiles[len(m.ExternalValueFiles)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -18431,6 +18596,152 @@ func (m *HealthStatus) Unmarshal(dAtA []byte) error { } return nil } +func (m *HelmExternalValue) 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: HelmExternalValue: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: HelmExternalValue: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RepoURL", 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.RepoURL = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TargetRevision", 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.TargetRevision = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ValueFiles", 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.ValueFiles = append(m.ValueFiles, 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 *HelmFileParameter) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/pkg/apis/application/v1alpha1/generated.proto b/pkg/apis/application/v1alpha1/generated.proto index f6cf037815846..29c8f46aae7f1 100644 --- a/pkg/apis/application/v1alpha1/generated.proto +++ b/pkg/apis/application/v1alpha1/generated.proto @@ -207,6 +207,9 @@ message ApplicationSourceHelm { // Version is the Helm version to use for templating (either "2" or "3") optional string version = 6; + + // ValuesFilesExternalValueFiles is a list of Helm value files to use when generating a template that come from an external git repo + repeated HelmExternalValue externalValueFiles = 7; } // ApplicationSourceJsonnet holds options specific to applications of type Jsonnet @@ -579,6 +582,18 @@ message HealthStatus { optional string message = 2; } +// HelmExternalValue are values from other git repositories +message HelmExternalValue { + // RepoURL is the URL of the external git repo + optional string repoURL = 1; + + // TargetRevision is the revision of the git repo + optional string targetRevision = 2; + + // FileParameters are file parameters to the helm template + repeated string valueFiles = 3; +} + // HelmFileParameter is a file parameter that's passed to helm template during manifest generation message HelmFileParameter { // Name is the name of the Helm parameter diff --git a/pkg/apis/application/v1alpha1/openapi_generated.go b/pkg/apis/application/v1alpha1/openapi_generated.go index 7f8d8d0f11012..ee82110e9c519 100644 --- a/pkg/apis/application/v1alpha1/openapi_generated.go +++ b/pkg/apis/application/v1alpha1/openapi_generated.go @@ -50,6 +50,7 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.GnuPGPublicKey": schema_pkg_apis_application_v1alpha1_GnuPGPublicKey(ref), "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.GnuPGPublicKeyList": schema_pkg_apis_application_v1alpha1_GnuPGPublicKeyList(ref), "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.HealthStatus": schema_pkg_apis_application_v1alpha1_HealthStatus(ref), + "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.HelmExternalValue": schema_pkg_apis_application_v1alpha1_HelmExternalValue(ref), "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.HelmFileParameter": schema_pkg_apis_application_v1alpha1_HelmFileParameter(ref), "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.HelmParameter": schema_pkg_apis_application_v1alpha1_HelmParameter(ref), "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.HostInfo": schema_pkg_apis_application_v1alpha1_HostInfo(ref), @@ -778,11 +779,25 @@ func schema_pkg_apis_application_v1alpha1_ApplicationSourceHelm(ref common.Refer Format: "", }, }, + "externalValueFiles": { + SchemaProps: spec.SchemaProps{ + Description: "ValuesFilesExternalValueFiles is a list of Helm value files to use when generating a template that come from an external git repo", + Type: []string{"array"}, + Items: &spec.SchemaOrArray{ + Schema: &spec.Schema{ + SchemaProps: spec.SchemaProps{ + Default: map[string]interface{}{}, + Ref: ref("github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.HelmExternalValue"), + }, + }, + }, + }, + }, }, }, }, Dependencies: []string{ - "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.HelmFileParameter", "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.HelmParameter"}, + "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.HelmExternalValue", "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.HelmFileParameter", "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.HelmParameter"}, } } @@ -2025,6 +2040,48 @@ func schema_pkg_apis_application_v1alpha1_HealthStatus(ref common.ReferenceCallb } } +func schema_pkg_apis_application_v1alpha1_HelmExternalValue(ref common.ReferenceCallback) common.OpenAPIDefinition { + return common.OpenAPIDefinition{ + Schema: spec.Schema{ + SchemaProps: spec.SchemaProps{ + Description: "HelmExternalValue are values from other git repositories", + Type: []string{"object"}, + Properties: map[string]spec.Schema{ + "repoURL": { + SchemaProps: spec.SchemaProps{ + Description: "RepoURL is the URL of the external git repo", + Type: []string{"string"}, + Format: "", + }, + }, + "targetRevision": { + SchemaProps: spec.SchemaProps{ + Description: "TargetRevision is the revision of the git repo", + Type: []string{"string"}, + Format: "", + }, + }, + "valueFiles": { + SchemaProps: spec.SchemaProps{ + Description: "FileParameters are file parameters to the helm template", + Type: []string{"array"}, + Items: &spec.SchemaOrArray{ + Schema: &spec.Schema{ + SchemaProps: spec.SchemaProps{ + Default: "", + Type: []string{"string"}, + Format: "", + }, + }, + }, + }, + }, + }, + }, + }, + } +} + func schema_pkg_apis_application_v1alpha1_HelmFileParameter(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.OpenAPIDefinition{ Schema: spec.Schema{ diff --git a/pkg/apis/application/v1alpha1/types.go b/pkg/apis/application/v1alpha1/types.go index 8abb52a6127ec..ee5018a574616 100644 --- a/pkg/apis/application/v1alpha1/types.go +++ b/pkg/apis/application/v1alpha1/types.go @@ -234,6 +234,18 @@ type ApplicationSourceHelm struct { FileParameters []HelmFileParameter `json:"fileParameters,omitempty" protobuf:"bytes,5,opt,name=fileParameters"` // Version is the Helm version to use for templating (either "2" or "3") Version string `json:"version,omitempty" protobuf:"bytes,6,opt,name=version"` + // ValuesFilesExternalValueFiles is a list of Helm value files to use when generating a template that come from an external git repo + ExternalValueFiles []HelmExternalValue `json:"externalValueFiles,omitempty" protobuf:"bytes,7,opt,name=externalValueFiles"` +} + +// HelmExternalValue are values from other git repositories +type HelmExternalValue struct { + // RepoURL is the URL of the external git repo + RepoURL string `json:"repoURL,omitempty" protobuf:"bytes,1,opt,name=repoURL"` + // TargetRevision is the revision of the git repo + TargetRevision string `json:"targetRevision,omitempty" protobuf:"bytes,2,opt,name=targetRevision"` + // FileParameters are file parameters to the helm template + ValueFiles []string `json:"valueFiles,omitempty" protobuf:"bytes,3,opt,name=valueFiles"` } // HelmParameter is a parameter that's passed to helm template during manifest generation diff --git a/pkg/apis/application/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/application/v1alpha1/zz_generated.deepcopy.go index 85ece26b4d483..10d77c95752e1 100644 --- a/pkg/apis/application/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/application/v1alpha1/zz_generated.deepcopy.go @@ -362,6 +362,13 @@ func (in *ApplicationSourceHelm) DeepCopyInto(out *ApplicationSourceHelm) { *out = make([]HelmFileParameter, len(*in)) copy(*out, *in) } + if in.ExternalValueFiles != nil { + in, out := &in.ExternalValueFiles, &out.ExternalValueFiles + *out = make([]HelmExternalValue, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } return } @@ -1036,6 +1043,27 @@ func (in *HealthStatus) DeepCopy() *HealthStatus { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *HelmExternalValue) DeepCopyInto(out *HelmExternalValue) { + *out = *in + if in.ValueFiles != nil { + in, out := &in.ValueFiles, &out.ValueFiles + *out = make([]string, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HelmExternalValue. +func (in *HelmExternalValue) DeepCopy() *HelmExternalValue { + if in == nil { + return nil + } + out := new(HelmExternalValue) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *HelmFileParameter) DeepCopyInto(out *HelmFileParameter) { *out = *in diff --git a/reposerver/apiclient/repository.pb.go b/reposerver/apiclient/repository.pb.go index d8b0f1e182584..9499bca5cafb1 100644 --- a/reposerver/apiclient/repository.pb.go +++ b/reposerver/apiclient/repository.pb.go @@ -47,12 +47,13 @@ type ManifestRequest struct { KubeVersion string `protobuf:"bytes,14,opt,name=kubeVersion,proto3" json:"kubeVersion,omitempty"` ApiVersions []string `protobuf:"bytes,15,rep,name=apiVersions,proto3" json:"apiVersions,omitempty"` // Request to verify the signature when generating the manifests (only for Git repositories) - VerifySignature bool `protobuf:"varint,16,opt,name=verifySignature,proto3" json:"verifySignature,omitempty"` - HelmRepoCreds []*v1alpha1.RepoCreds `protobuf:"bytes,17,rep,name=helmRepoCreds,proto3" json:"helmRepoCreds,omitempty"` - NoRevisionCache bool `protobuf:"varint,18,opt,name=noRevisionCache,proto3" json:"noRevisionCache,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + VerifySignature bool `protobuf:"varint,16,opt,name=verifySignature,proto3" json:"verifySignature,omitempty"` + HelmRepoCreds []*v1alpha1.RepoCreds `protobuf:"bytes,17,rep,name=helmRepoCreds,proto3" json:"helmRepoCreds,omitempty"` + NoRevisionCache bool `protobuf:"varint,18,opt,name=noRevisionCache,proto3" json:"noRevisionCache,omitempty"` + HelmExternalValueRepoCreds []*v1alpha1.RepoCreds `protobuf:"bytes,19,rep,name=helmExternalValueRepoCreds,proto3" json:"helmExternalValueRepoCreds,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *ManifestRequest) Reset() { *m = ManifestRequest{} } @@ -193,6 +194,13 @@ func (m *ManifestRequest) GetNoRevisionCache() bool { return false } +func (m *ManifestRequest) GetHelmExternalValueRepoCreds() []*v1alpha1.RepoCreds { + if m != nil { + return m.HelmExternalValueRepoCreds + } + return nil +} + // TestRepositoryRequest is a query to test repository is valid or not and has valid access. type TestRepositoryRequest struct { Repo *v1alpha1.Repository `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"` @@ -588,15 +596,16 @@ func (m *AppList) GetApps() map[string]string { // RepoServerAppDetailsQuery contains query information for app details request type RepoServerAppDetailsQuery struct { - Repo *v1alpha1.Repository `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"` - Source *v1alpha1.ApplicationSource `protobuf:"bytes,2,opt,name=source,proto3" json:"source,omitempty"` - Repos []*v1alpha1.Repository `protobuf:"bytes,3,rep,name=repos,proto3" json:"repos,omitempty"` - KustomizeOptions *v1alpha1.KustomizeOptions `protobuf:"bytes,4,opt,name=kustomizeOptions,proto3" json:"kustomizeOptions,omitempty"` - AppName string `protobuf:"bytes,5,opt,name=appName,proto3" json:"appName,omitempty"` - NoCache bool `protobuf:"varint,6,opt,name=noCache,proto3" json:"noCache,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Repo *v1alpha1.Repository `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"` + Source *v1alpha1.ApplicationSource `protobuf:"bytes,2,opt,name=source,proto3" json:"source,omitempty"` + Repos []*v1alpha1.Repository `protobuf:"bytes,3,rep,name=repos,proto3" json:"repos,omitempty"` + KustomizeOptions *v1alpha1.KustomizeOptions `protobuf:"bytes,4,opt,name=kustomizeOptions,proto3" json:"kustomizeOptions,omitempty"` + AppName string `protobuf:"bytes,5,opt,name=appName,proto3" json:"appName,omitempty"` + NoCache bool `protobuf:"varint,6,opt,name=noCache,proto3" json:"noCache,omitempty"` + HelmExternalValueRepoCreds []*v1alpha1.RepoCreds `protobuf:"bytes,7,rep,name=helmExternalValueRepoCreds,proto3" json:"helmExternalValueRepoCreds,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *RepoServerAppDetailsQuery) Reset() { *m = RepoServerAppDetailsQuery{} } @@ -674,6 +683,13 @@ func (m *RepoServerAppDetailsQuery) GetNoCache() bool { return false } +func (m *RepoServerAppDetailsQuery) GetHelmExternalValueRepoCreds() []*v1alpha1.RepoCreds { + if m != nil { + return m.HelmExternalValueRepoCreds + } + return nil +} + // RepoAppDetailsResponse application details type RepoAppDetailsResponse struct { Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` @@ -1359,94 +1375,96 @@ func init() { } var fileDescriptor_dd8723cfcc820480 = []byte{ - // 1392 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x18, 0xcb, 0x6e, 0xdb, 0xc6, - 0xd6, 0x94, 0xe4, 0x87, 0x8e, 0x12, 0x5b, 0x9e, 0x3c, 0x2e, 0xaf, 0xae, 0x23, 0x38, 0x04, 0x6e, - 0xe0, 0x36, 0x0d, 0x85, 0x28, 0x41, 0x1b, 0x24, 0x40, 0x01, 0xd5, 0x49, 0x1c, 0xc0, 0x49, 0xec, - 0xd2, 0x69, 0x81, 0x16, 0x41, 0x83, 0x31, 0x75, 0x4c, 0x4d, 0x25, 0x91, 0x13, 0x92, 0x52, 0xe1, - 0x00, 0x5d, 0x16, 0x5d, 0x74, 0xdd, 0xfe, 0x4e, 0x57, 0x7d, 0x2c, 0xdb, 0x3f, 0x28, 0xf2, 0x09, - 0xfd, 0x82, 0x62, 0x86, 0xaf, 0x21, 0x45, 0xbb, 0x0b, 0x25, 0xce, 0xc6, 0x9e, 0x39, 0xef, 0x73, - 0xe6, 0xbc, 0x28, 0xb8, 0xe6, 0x23, 0xf7, 0x02, 0xf4, 0xa7, 0xe8, 0x77, 0xe4, 0x91, 0x85, 0x9e, - 0x7f, 0xac, 0x1c, 0x4d, 0xee, 0x7b, 0xa1, 0x47, 0x20, 0x83, 0xb4, 0x2e, 0x3a, 0x9e, 0xe3, 0x49, - 0x70, 0x47, 0x9c, 0x22, 0x8a, 0xd6, 0x86, 0xe3, 0x79, 0xce, 0x08, 0x3b, 0x94, 0xb3, 0x0e, 0x75, - 0x5d, 0x2f, 0xa4, 0x21, 0xf3, 0xdc, 0x20, 0xc6, 0x1a, 0xc3, 0x3b, 0x81, 0xc9, 0x3c, 0x89, 0xb5, - 0x3d, 0x1f, 0x3b, 0xd3, 0x9b, 0x1d, 0x07, 0x5d, 0xf4, 0x69, 0x88, 0xfd, 0x98, 0xe6, 0xb1, 0xc3, - 0xc2, 0xc1, 0xe4, 0xd0, 0xb4, 0xbd, 0x71, 0x87, 0xfa, 0x52, 0xc5, 0xd7, 0xf2, 0x70, 0xc3, 0xee, - 0x77, 0xa6, 0xdd, 0x0e, 0x1f, 0x3a, 0x82, 0x3f, 0xe8, 0x50, 0xce, 0x47, 0xcc, 0x96, 0xf2, 0x3b, - 0xd3, 0x9b, 0x74, 0xc4, 0x07, 0x74, 0x46, 0x9a, 0xf1, 0xe7, 0x32, 0xac, 0x3d, 0xa1, 0x2e, 0x3b, - 0xc2, 0x20, 0xb4, 0xf0, 0xe5, 0x04, 0x83, 0x90, 0x3c, 0x87, 0x9a, 0xf0, 0x43, 0xd7, 0x36, 0xb5, - 0xad, 0x46, 0xf7, 0x91, 0x99, 0x29, 0x34, 0x13, 0x85, 0xf2, 0xf0, 0xc2, 0xee, 0x9b, 0xd3, 0xae, - 0xc9, 0x87, 0x8e, 0x29, 0x14, 0x9a, 0x8a, 0x42, 0x33, 0x51, 0x68, 0x5a, 0x69, 0x44, 0x2c, 0x29, - 0x95, 0xb4, 0x60, 0xc5, 0xc7, 0x29, 0x0b, 0x98, 0xe7, 0xea, 0x95, 0x4d, 0x6d, 0xab, 0x6e, 0xa5, - 0x77, 0xa2, 0xc3, 0xb2, 0xeb, 0x6d, 0x53, 0x7b, 0x80, 0x7a, 0x75, 0x53, 0xdb, 0x5a, 0xb1, 0x92, - 0x2b, 0xd9, 0x84, 0x06, 0xe5, 0xfc, 0x31, 0x3d, 0xc4, 0xd1, 0x2e, 0x1e, 0xeb, 0x35, 0xc9, 0xa8, - 0x82, 0x04, 0x2f, 0xe5, 0xfc, 0x29, 0x1d, 0xa3, 0xbe, 0x28, 0xb1, 0xc9, 0x95, 0x6c, 0x40, 0xdd, - 0xa5, 0x63, 0x0c, 0x38, 0xb5, 0x51, 0x5f, 0x91, 0xb8, 0x0c, 0x40, 0xbe, 0x85, 0x75, 0xc5, 0xf0, - 0x03, 0x6f, 0xe2, 0xdb, 0xa8, 0x83, 0x74, 0x7d, 0x6f, 0x3e, 0xd7, 0x7b, 0x45, 0xb1, 0xd6, 0xac, - 0x26, 0xf2, 0x15, 0x2c, 0xca, 0xa4, 0xd1, 0x1b, 0x9b, 0xd5, 0x37, 0x1a, 0xed, 0x48, 0x2c, 0x71, - 0x61, 0x99, 0x8f, 0x26, 0x0e, 0x73, 0x03, 0xfd, 0x9c, 0xd4, 0xf0, 0x6c, 0x3e, 0x0d, 0xdb, 0x9e, - 0x7b, 0xc4, 0x9c, 0x27, 0xd4, 0xa5, 0x0e, 0x8e, 0xd1, 0x0d, 0xf7, 0xa5, 0x70, 0x2b, 0x51, 0x42, - 0x5e, 0x41, 0x73, 0x38, 0x09, 0x42, 0x6f, 0xcc, 0x5e, 0xe1, 0x1e, 0x97, 0xc9, 0xad, 0x9f, 0x97, - 0xd1, 0x7c, 0x3a, 0x9f, 0xe2, 0xdd, 0x82, 0x54, 0x6b, 0x46, 0x8f, 0x48, 0x92, 0xe1, 0xe4, 0x10, - 0x3f, 0x47, 0x5f, 0x66, 0xd7, 0x6a, 0x94, 0x24, 0x0a, 0x28, 0x4a, 0x23, 0x16, 0xdf, 0x02, 0x7d, - 0x6d, 0xb3, 0x1a, 0xa5, 0x51, 0x0a, 0x22, 0x5b, 0xb0, 0x36, 0x45, 0x9f, 0x1d, 0x1d, 0x1f, 0x30, - 0xc7, 0xa5, 0xe1, 0xc4, 0x47, 0xbd, 0x29, 0x53, 0xb1, 0x08, 0x26, 0x63, 0x38, 0x3f, 0xc0, 0xd1, - 0x58, 0x84, 0x7c, 0xdb, 0xc7, 0x7e, 0xa0, 0xaf, 0xcb, 0xf8, 0xee, 0xcc, 0xff, 0x82, 0x52, 0x9c, - 0x95, 0x97, 0x2e, 0x0c, 0x73, 0x3d, 0x2b, 0xae, 0x94, 0xa8, 0x46, 0x48, 0x64, 0x58, 0x01, 0x6c, - 0x4c, 0xe0, 0xd2, 0x33, 0x59, 0xce, 0x69, 0x2e, 0x9c, 0x45, 0x61, 0x1b, 0x8f, 0xe0, 0x72, 0x51, - 0x6d, 0xc0, 0x3d, 0x37, 0x40, 0x62, 0x02, 0x91, 0xc1, 0x63, 0xd8, 0xcf, 0xb0, 0xd2, 0x8a, 0x15, - 0xab, 0x04, 0x63, 0xfc, 0xaa, 0x41, 0x33, 0x6b, 0x4a, 0xb1, 0x90, 0x0d, 0xa8, 0x8f, 0x63, 0x58, - 0xa0, 0x6b, 0xf2, 0xe1, 0x32, 0x40, 0xbe, 0xc6, 0x2b, 0xc5, 0x1a, 0xbf, 0x0c, 0x4b, 0x51, 0xf7, - 0x96, 0x6d, 0xa5, 0x6e, 0xc5, 0xb7, 0x5c, 0x2f, 0xaa, 0x15, 0x7a, 0x51, 0x1b, 0x20, 0x90, 0x25, - 0xfa, 0xec, 0x98, 0xa3, 0xbe, 0x24, 0xb1, 0x0a, 0x84, 0x18, 0x70, 0x2e, 0xca, 0x08, 0x0b, 0x83, - 0xc9, 0x28, 0xd4, 0x97, 0x25, 0x45, 0x0e, 0x66, 0x78, 0xb0, 0xf6, 0x98, 0x09, 0x1f, 0x8e, 0x82, - 0xb3, 0x79, 0x83, 0x0f, 0xa1, 0x26, 0x94, 0x09, 0xc7, 0x0e, 0x7d, 0xea, 0xda, 0x03, 0x4c, 0x62, - 0x95, 0xde, 0x09, 0x81, 0x5a, 0x48, 0x9d, 0x40, 0xaf, 0x48, 0xb8, 0x3c, 0x1b, 0x3f, 0x68, 0x91, - 0xa5, 0x3d, 0xce, 0x83, 0x77, 0x3e, 0x06, 0x8c, 0x09, 0x2c, 0xf7, 0x38, 0x17, 0xf6, 0x90, 0x9b, - 0x50, 0xa3, 0x9c, 0x47, 0x4e, 0x34, 0xba, 0x57, 0x4c, 0x65, 0xe4, 0xc6, 0x24, 0xe2, 0x7f, 0xf0, - 0xc0, 0x0d, 0x85, 0x64, 0x41, 0xda, 0xfa, 0x08, 0xea, 0x29, 0x88, 0x34, 0xa1, 0x3a, 0xc4, 0x28, - 0xd7, 0xea, 0x96, 0x38, 0x92, 0x8b, 0xb0, 0x38, 0xa5, 0xa3, 0x49, 0x92, 0x25, 0xd1, 0xe5, 0x6e, - 0xe5, 0x8e, 0x66, 0xfc, 0x5d, 0x85, 0xff, 0x0a, 0x3b, 0x0f, 0x64, 0x72, 0xf4, 0x38, 0xbf, 0x8f, - 0x21, 0x65, 0xa3, 0xe0, 0xd3, 0x09, 0xfa, 0xc7, 0x6f, 0x39, 0x1c, 0x0e, 0x2c, 0x45, 0xb9, 0x25, - 0xcd, 0x7a, 0x0b, 0xa3, 0x27, 0x16, 0x9f, 0xcd, 0x9b, 0xea, 0xdb, 0x99, 0x37, 0x65, 0xfd, 0xbf, - 0x76, 0x46, 0xfd, 0xff, 0xe4, 0x15, 0x40, 0x59, 0x2c, 0x96, 0x72, 0x8b, 0x85, 0xf1, 0x7d, 0x05, - 0x2e, 0x0b, 0x2f, 0xb2, 0xe7, 0x4e, 0x3b, 0x8e, 0x28, 0x14, 0x51, 0xfb, 0x51, 0xf2, 0xc8, 0x33, - 0xb9, 0x0d, 0xcb, 0xc3, 0xc0, 0x73, 0x5d, 0x0c, 0xe3, 0x87, 0x6a, 0xa9, 0x29, 0xb9, 0x1b, 0xa1, - 0x7a, 0x9c, 0x1f, 0x70, 0xb4, 0xad, 0x84, 0x94, 0x5c, 0x87, 0x9a, 0x68, 0xe6, 0xb2, 0xfb, 0x34, - 0xba, 0xff, 0x51, 0x59, 0x1e, 0xe1, 0x68, 0x9c, 0xd0, 0x4b, 0x22, 0x72, 0x17, 0xea, 0xa9, 0x67, - 0x71, 0xe8, 0x36, 0x72, 0x4a, 0x12, 0x64, 0xc2, 0x96, 0x91, 0x0b, 0xde, 0x3e, 0xf3, 0xd1, 0x96, - 0x0d, 0x76, 0x71, 0x96, 0xf7, 0x7e, 0x82, 0x4c, 0x79, 0x53, 0x72, 0xe3, 0x17, 0x0d, 0xae, 0x66, - 0xe9, 0x9f, 0x8c, 0x94, 0x27, 0x18, 0xd2, 0x3e, 0x0d, 0xe9, 0xbb, 0x5f, 0x0e, 0xaf, 0xc1, 0xaa, - 0x3d, 0x40, 0x7b, 0x98, 0x0d, 0xe6, 0x68, 0x47, 0x2c, 0x40, 0x8d, 0xdf, 0x2a, 0xb0, 0x9a, 0x7f, - 0x08, 0xf1, 0x92, 0x62, 0x18, 0x24, 0x2f, 0x29, 0xce, 0x64, 0x1f, 0xce, 0xa1, 0x3b, 0x65, 0xbe, - 0xe7, 0x8a, 0x35, 0x26, 0xa9, 0x87, 0x0f, 0x4e, 0x7e, 0x4e, 0xf3, 0x81, 0x42, 0x1e, 0x35, 0x9c, - 0x9c, 0x04, 0xe2, 0x02, 0x70, 0xea, 0xd3, 0x31, 0x86, 0xe8, 0x8b, 0xa4, 0xaf, 0xbe, 0x81, 0xa4, - 0x8f, 0x2c, 0xd8, 0x4f, 0xc4, 0x5a, 0x8a, 0x86, 0xd6, 0x0b, 0x58, 0x9f, 0x31, 0xa9, 0xa4, 0xe1, - 0xdd, 0x56, 0x1b, 0x5e, 0xa3, 0xdb, 0x2e, 0xf1, 0x50, 0x11, 0xa3, 0x36, 0xc4, 0x9f, 0x2b, 0xd0, - 0x50, 0xf2, 0xb3, 0x34, 0x8c, 0x6d, 0x00, 0xc9, 0xf0, 0x90, 0x8d, 0x30, 0x0a, 0x62, 0xdd, 0x52, - 0x20, 0x64, 0x58, 0x12, 0x94, 0xdd, 0xf9, 0x82, 0x22, 0x4c, 0x2a, 0x8d, 0x88, 0x98, 0xf3, 0x52, - 0x75, 0x10, 0xd7, 0x7f, 0x7c, 0x23, 0xdf, 0xc0, 0xea, 0x11, 0x1b, 0xe1, 0x7e, 0x66, 0xc8, 0x92, - 0x34, 0x64, 0x6f, 0x7e, 0x43, 0x1e, 0xaa, 0x72, 0xad, 0x82, 0x1a, 0xe3, 0x7d, 0x68, 0x16, 0xcb, - 0x55, 0x18, 0xc9, 0xc6, 0xd4, 0x49, 0xa3, 0x15, 0xdf, 0x8c, 0x1f, 0x35, 0x20, 0xb3, 0xef, 0x71, - 0x52, 0xd0, 0x87, 0x77, 0x82, 0x64, 0xcf, 0x8d, 0x0a, 0x45, 0x81, 0x90, 0x5d, 0x68, 0xf4, 0x31, - 0x08, 0x99, 0x2b, 0x0d, 0x8e, 0x9b, 0xc8, 0x7b, 0xa7, 0x3f, 0xfc, 0xfd, 0x8c, 0xc1, 0x52, 0xb9, - 0x8d, 0xcf, 0xe0, 0xca, 0xa9, 0xd4, 0xca, 0x76, 0xa5, 0xe5, 0xb6, 0xab, 0x53, 0x77, 0x32, 0x83, - 0x40, 0xb3, 0xd8, 0x8d, 0x8c, 0x97, 0xb0, 0x2e, 0x62, 0xba, 0x3d, 0xa0, 0x7e, 0x78, 0x46, 0x1b, - 0xd3, 0x3d, 0xa8, 0xa7, 0x2a, 0x4b, 0x63, 0xdd, 0x82, 0x95, 0x69, 0xf2, 0xbd, 0x10, 0xad, 0x4c, - 0xe9, 0xdd, 0xe8, 0x01, 0x51, 0xed, 0x8d, 0xe7, 0xc6, 0x75, 0x58, 0x64, 0x21, 0x8e, 0x93, 0xa5, - 0xe5, 0x52, 0xb1, 0xdd, 0x4b, 0x72, 0x2b, 0xa2, 0xe9, 0x7e, 0xb7, 0x08, 0xeb, 0x59, 0xd7, 0x15, - 0x7f, 0x99, 0x8d, 0x64, 0x0f, 0x9a, 0x3b, 0xf1, 0x97, 0x7a, 0xb2, 0x08, 0x93, 0xff, 0xa9, 0x72, - 0x0a, 0xdf, 0xec, 0xad, 0x8d, 0x72, 0x64, 0x64, 0x91, 0xb1, 0x40, 0xbe, 0x80, 0xd5, 0xfc, 0x72, - 0x4e, 0xae, 0xaa, 0x1c, 0xa5, 0xdf, 0x0b, 0x2d, 0xe3, 0x34, 0x92, 0x54, 0xf4, 0x3d, 0x58, 0x49, - 0x96, 0xdc, 0xbc, 0x8d, 0x85, 0xd5, 0xb7, 0xd5, 0x54, 0x91, 0x02, 0x61, 0x2c, 0x90, 0x8f, 0x23, - 0x66, 0xb1, 0xb0, 0xcd, 0x32, 0x2b, 0xdb, 0x68, 0xeb, 0x42, 0xc9, 0xea, 0x67, 0x2c, 0x90, 0xe7, - 0x70, 0x7e, 0x47, 0x76, 0xe8, 0x78, 0x78, 0x93, 0xff, 0xe7, 0x95, 0x9c, 0xb0, 0xcd, 0xe5, 0x5d, - 0x2b, 0x9f, 0xff, 0xc6, 0x02, 0xf9, 0x49, 0x83, 0x0b, 0x3b, 0x18, 0x16, 0x67, 0x21, 0xb9, 0x51, - 0xae, 0xe4, 0x84, 0x99, 0xd9, 0x7a, 0x3a, 0x6f, 0xce, 0xe6, 0xc5, 0x1a, 0x0b, 0x64, 0x5f, 0xba, - 0x9d, 0xe5, 0x1e, 0xb9, 0x52, 0x9a, 0x64, 0x69, 0xf4, 0xda, 0x27, 0xa1, 0x13, 0x57, 0x3f, 0xe9, - 0xfd, 0xfe, 0xba, 0xad, 0xfd, 0xf1, 0xba, 0xad, 0xfd, 0xf5, 0xba, 0xad, 0x7d, 0x79, 0xeb, 0x5f, - 0x7e, 0x64, 0x52, 0x7e, 0x0f, 0xa3, 0x9c, 0xd9, 0x23, 0x86, 0x6e, 0x78, 0xb8, 0x24, 0x7f, 0x52, - 0xba, 0xf5, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf6, 0x7e, 0x8e, 0xd3, 0x2e, 0x13, 0x00, 0x00, + // 1422 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x58, 0xcd, 0x6f, 0x13, 0x47, + 0x14, 0xcf, 0x3a, 0x4e, 0x62, 0x3f, 0x43, 0xe2, 0x0c, 0x1f, 0xdd, 0xba, 0xc1, 0x0a, 0x2b, 0x15, + 0xa5, 0xa5, 0xac, 0x85, 0x41, 0x2d, 0x02, 0xa9, 0x92, 0x1b, 0x20, 0x48, 0x01, 0x92, 0x6e, 0x28, + 0x52, 0x2b, 0x54, 0x34, 0x59, 0xbf, 0xac, 0xa7, 0x5e, 0xef, 0x0e, 0xbb, 0x6b, 0xb7, 0x41, 0xea, + 0xb1, 0xe2, 0xd0, 0x73, 0xfb, 0xef, 0xf4, 0xd4, 0x8f, 0x63, 0xef, 0xbd, 0x54, 0xfc, 0x1d, 0x3d, + 0x54, 0x33, 0xfb, 0xbd, 0xde, 0x84, 0x83, 0x49, 0xb8, 0x24, 0x33, 0xef, 0x7b, 0xde, 0xbc, 0xf9, + 0xbd, 0xe7, 0x85, 0x2b, 0x1e, 0x72, 0xd7, 0x47, 0x6f, 0x82, 0x5e, 0x47, 0x2e, 0x59, 0xe0, 0x7a, + 0x87, 0x99, 0xa5, 0xce, 0x3d, 0x37, 0x70, 0x09, 0xa4, 0x94, 0xd6, 0x79, 0xcb, 0xb5, 0x5c, 0x49, + 0xee, 0x88, 0x55, 0x28, 0xd1, 0x5a, 0xb3, 0x5c, 0xd7, 0xb2, 0xb1, 0x43, 0x39, 0xeb, 0x50, 0xc7, + 0x71, 0x03, 0x1a, 0x30, 0xd7, 0xf1, 0x23, 0xae, 0x36, 0xbc, 0xe5, 0xeb, 0xcc, 0x95, 0x5c, 0xd3, + 0xf5, 0xb0, 0x33, 0xb9, 0xde, 0xb1, 0xd0, 0x41, 0x8f, 0x06, 0xd8, 0x8f, 0x64, 0x1e, 0x5a, 0x2c, + 0x18, 0x8c, 0xf7, 0x75, 0xd3, 0x1d, 0x75, 0xa8, 0x27, 0x5d, 0x7c, 0x27, 0x17, 0xd7, 0xcc, 0x7e, + 0x67, 0xd2, 0xed, 0xf0, 0xa1, 0x25, 0xf4, 0xfd, 0x0e, 0xe5, 0xdc, 0x66, 0xa6, 0xb4, 0xdf, 0x99, + 0x5c, 0xa7, 0x36, 0x1f, 0xd0, 0x29, 0x6b, 0xda, 0x3f, 0x35, 0x58, 0x79, 0x44, 0x1d, 0x76, 0x80, + 0x7e, 0x60, 0xe0, 0x8b, 0x31, 0xfa, 0x01, 0x79, 0x06, 0x55, 0x71, 0x0e, 0x55, 0x59, 0x57, 0x36, + 0x1a, 0xdd, 0x07, 0x7a, 0xea, 0x50, 0x8f, 0x1d, 0xca, 0xc5, 0x73, 0xb3, 0xaf, 0x4f, 0xba, 0x3a, + 0x1f, 0x5a, 0xba, 0x70, 0xa8, 0x67, 0x1c, 0xea, 0xb1, 0x43, 0xdd, 0x48, 0x32, 0x62, 0x48, 0xab, + 0xa4, 0x05, 0x35, 0x0f, 0x27, 0xcc, 0x67, 0xae, 0xa3, 0x56, 0xd6, 0x95, 0x8d, 0xba, 0x91, 0xec, + 0x89, 0x0a, 0x4b, 0x8e, 0xbb, 0x49, 0xcd, 0x01, 0xaa, 0xf3, 0xeb, 0xca, 0x46, 0xcd, 0x88, 0xb7, + 0x64, 0x1d, 0x1a, 0x94, 0xf3, 0x87, 0x74, 0x1f, 0xed, 0x6d, 0x3c, 0x54, 0xab, 0x52, 0x31, 0x4b, + 0x12, 0xba, 0x94, 0xf3, 0xc7, 0x74, 0x84, 0xea, 0x82, 0xe4, 0xc6, 0x5b, 0xb2, 0x06, 0x75, 0x87, + 0x8e, 0xd0, 0xe7, 0xd4, 0x44, 0xb5, 0x26, 0x79, 0x29, 0x81, 0xfc, 0x08, 0xab, 0x99, 0xc0, 0xf7, + 0xdc, 0xb1, 0x67, 0xa2, 0x0a, 0xf2, 0xe8, 0x3b, 0xb3, 0x1d, 0xbd, 0x57, 0x34, 0x6b, 0x4c, 0x7b, + 0x22, 0xdf, 0xc2, 0x82, 0x2c, 0x1a, 0xb5, 0xb1, 0x3e, 0xff, 0x56, 0xb3, 0x1d, 0x9a, 0x25, 0x0e, + 0x2c, 0x71, 0x7b, 0x6c, 0x31, 0xc7, 0x57, 0xcf, 0x48, 0x0f, 0x4f, 0x66, 0xf3, 0xb0, 0xe9, 0x3a, + 0x07, 0xcc, 0x7a, 0x44, 0x1d, 0x6a, 0xe1, 0x08, 0x9d, 0x60, 0x57, 0x1a, 0x37, 0x62, 0x27, 0xe4, + 0x25, 0x34, 0x87, 0x63, 0x3f, 0x70, 0x47, 0xec, 0x25, 0xee, 0x70, 0x59, 0xdc, 0xea, 0x59, 0x99, + 0xcd, 0xc7, 0xb3, 0x39, 0xde, 0x2e, 0x58, 0x35, 0xa6, 0xfc, 0x88, 0x22, 0x19, 0x8e, 0xf7, 0xf1, + 0x29, 0x7a, 0xb2, 0xba, 0x96, 0xc3, 0x22, 0xc9, 0x90, 0xc2, 0x32, 0x62, 0xd1, 0xce, 0x57, 0x57, + 0xd6, 0xe7, 0xc3, 0x32, 0x4a, 0x48, 0x64, 0x03, 0x56, 0x26, 0xe8, 0xb1, 0x83, 0xc3, 0x3d, 0x66, + 0x39, 0x34, 0x18, 0x7b, 0xa8, 0x36, 0x65, 0x29, 0x16, 0xc9, 0x64, 0x04, 0x67, 0x07, 0x68, 0x8f, + 0x44, 0xca, 0x37, 0x3d, 0xec, 0xfb, 0xea, 0xaa, 0xcc, 0xef, 0xd6, 0xec, 0x37, 0x28, 0xcd, 0x19, + 0x79, 0xeb, 0x22, 0x30, 0xc7, 0x35, 0xa2, 0x97, 0x12, 0xbe, 0x11, 0x12, 0x06, 0x56, 0x20, 0x93, + 0x57, 0x0a, 0xb4, 0x84, 0xee, 0xbd, 0x1f, 0x02, 0xf4, 0x1c, 0x6a, 0x3f, 0xa5, 0xf6, 0x18, 0xd3, + 0x30, 0xcf, 0xbd, 0xdd, 0x30, 0x8f, 0x71, 0xa5, 0x8d, 0xe1, 0xc2, 0x13, 0x09, 0x2c, 0x49, 0x55, + 0x9e, 0x06, 0xc4, 0x68, 0x0f, 0xe0, 0x62, 0xd1, 0xad, 0xcf, 0x5d, 0xc7, 0x47, 0xa2, 0x03, 0x91, + 0xd7, 0xc8, 0xb0, 0x9f, 0x72, 0x65, 0x14, 0x35, 0xa3, 0x84, 0xa3, 0xfd, 0xa1, 0x40, 0x33, 0x85, + 0xc7, 0xc8, 0xc8, 0x1a, 0xd4, 0x47, 0x11, 0xcd, 0x57, 0x15, 0x59, 0x42, 0x29, 0x21, 0x8f, 0x36, + 0x95, 0x22, 0xda, 0x5c, 0x84, 0xc5, 0xb0, 0x8f, 0x48, 0x80, 0xab, 0x1b, 0xd1, 0x2e, 0x87, 0x8a, + 0xd5, 0x02, 0x2a, 0xb6, 0x01, 0x7c, 0x09, 0x16, 0x4f, 0x0e, 0x39, 0xaa, 0x8b, 0x92, 0x9b, 0xa1, + 0x10, 0x0d, 0xce, 0x84, 0xb5, 0x69, 0xa0, 0x3f, 0xb6, 0x03, 0x75, 0x49, 0x4a, 0xe4, 0x68, 0x9a, + 0x0b, 0x2b, 0x0f, 0x99, 0x38, 0xc3, 0x81, 0x7f, 0x3a, 0x77, 0xf0, 0x29, 0x54, 0x85, 0x33, 0x71, + 0xb0, 0x7d, 0x8f, 0x3a, 0xe6, 0x00, 0xe3, 0x5c, 0x25, 0x7b, 0x42, 0xa0, 0x1a, 0x50, 0xcb, 0x57, + 0x2b, 0x92, 0x2e, 0xd7, 0xda, 0xcf, 0x4a, 0x18, 0x69, 0x8f, 0x73, 0xff, 0x9d, 0x37, 0x24, 0x6d, + 0x0c, 0x4b, 0x3d, 0xce, 0x45, 0x3c, 0xe4, 0x3a, 0x54, 0x29, 0xe7, 0xe1, 0x21, 0x1a, 0xdd, 0x4b, + 0x7a, 0xa6, 0xf9, 0x47, 0x22, 0xe2, 0xbf, 0x7f, 0xcf, 0x09, 0x84, 0x65, 0x21, 0xda, 0xfa, 0x0c, + 0xea, 0x09, 0x89, 0x34, 0x61, 0x7e, 0x88, 0x61, 0xad, 0xd5, 0x0d, 0xb1, 0x24, 0xe7, 0x61, 0x61, + 0x22, 0xde, 0x4b, 0xe4, 0x35, 0xdc, 0xdc, 0xae, 0xdc, 0x52, 0xb4, 0xff, 0xaa, 0xf0, 0xbe, 0x88, + 0x73, 0x4f, 0x16, 0x47, 0x8f, 0xf3, 0xbb, 0x18, 0x50, 0x66, 0xfb, 0x5f, 0x8e, 0xd1, 0x3b, 0x3c, + 0xe1, 0x74, 0x58, 0xb0, 0x18, 0xd6, 0x96, 0x0c, 0xeb, 0x04, 0x9a, 0x60, 0x64, 0x3e, 0xed, 0x7c, + 0xf3, 0x27, 0xd3, 0xf9, 0xca, 0x3a, 0x51, 0xf5, 0x94, 0x3a, 0xd1, 0xd1, 0xc3, 0x48, 0x66, 0xc4, + 0x59, 0xcc, 0x8f, 0x38, 0x6f, 0x80, 0xed, 0xa5, 0xd3, 0x83, 0xed, 0x57, 0x15, 0xb8, 0x28, 0x76, + 0x69, 0xe1, 0x25, 0xd8, 0x27, 0x9e, 0xac, 0x40, 0xa1, 0xb0, 0x8c, 0xe5, 0x9a, 0xdc, 0x84, 0xa5, + 0xa1, 0xef, 0x3a, 0x0e, 0x06, 0x51, 0xc9, 0xb4, 0xb2, 0x8f, 0x63, 0x3b, 0x64, 0xf5, 0x38, 0xdf, + 0xe3, 0x68, 0x1a, 0xb1, 0x28, 0xb9, 0x0a, 0x55, 0x11, 0x82, 0xc4, 0xc1, 0x46, 0xf7, 0xbd, 0xac, + 0xca, 0x03, 0xb4, 0x47, 0xb1, 0xbc, 0x14, 0x22, 0xb7, 0xa1, 0x9e, 0xe4, 0x38, 0xba, 0xc4, 0xb5, + 0x9c, 0x93, 0x98, 0x19, 0xab, 0xa5, 0xe2, 0x42, 0xb7, 0xcf, 0x3c, 0x34, 0x25, 0xd4, 0x2f, 0x4c, + 0xeb, 0xde, 0x8d, 0x99, 0x89, 0x6e, 0x22, 0xae, 0xfd, 0xae, 0xc0, 0xe5, 0xf4, 0x21, 0xc6, 0x6d, + 0xf6, 0x11, 0x06, 0xb4, 0x4f, 0x03, 0xfa, 0xee, 0x07, 0xe6, 0x2b, 0xb0, 0x6c, 0x0e, 0xd0, 0x1c, + 0xa6, 0xc3, 0x4a, 0x38, 0x37, 0x17, 0xa8, 0xda, 0x9f, 0x15, 0x58, 0xce, 0x5f, 0x84, 0xb8, 0x49, + 0xd1, 0x96, 0xe2, 0x9b, 0x14, 0x6b, 0xb2, 0x0b, 0x67, 0xd0, 0x99, 0x30, 0xcf, 0x75, 0xc4, 0x68, + 0x17, 0xbf, 0xcc, 0x4f, 0x8e, 0xbe, 0x4e, 0xfd, 0x5e, 0x46, 0x3c, 0x84, 0xbe, 0x9c, 0x05, 0xe2, + 0x00, 0x70, 0xea, 0xd1, 0x11, 0x06, 0xe8, 0x89, 0xe7, 0x37, 0xff, 0x16, 0x9e, 0x5f, 0x18, 0xc1, + 0x6e, 0x6c, 0xd6, 0xc8, 0x78, 0x68, 0x3d, 0x87, 0xd5, 0xa9, 0x90, 0x4a, 0xa0, 0xf7, 0x66, 0x16, + 0x7a, 0x1b, 0xdd, 0x76, 0xc9, 0x09, 0x33, 0x66, 0xb2, 0xd0, 0xfc, 0x5b, 0x05, 0x1a, 0x99, 0xfa, + 0x2c, 0x4d, 0x63, 0x1b, 0x40, 0x2a, 0xdc, 0x67, 0x36, 0x86, 0x49, 0xac, 0x1b, 0x19, 0x0a, 0x19, + 0x96, 0x24, 0x65, 0x7b, 0xb6, 0xa4, 0x88, 0x90, 0x4a, 0x33, 0x22, 0x26, 0x0e, 0xe9, 0xda, 0x8f, + 0x90, 0x28, 0xda, 0x91, 0xef, 0x61, 0xf9, 0x80, 0xd9, 0xb8, 0x9b, 0x06, 0xb2, 0x28, 0x03, 0xd9, + 0x99, 0x3d, 0x90, 0xfb, 0x59, 0xbb, 0x46, 0xc1, 0x8d, 0xf6, 0x31, 0x34, 0x8b, 0xcf, 0x55, 0x04, + 0xc9, 0x46, 0xd4, 0x4a, 0xb2, 0x15, 0xed, 0xb4, 0x5f, 0x14, 0x20, 0xd3, 0xf7, 0x71, 0x54, 0xd2, + 0x87, 0xb7, 0xfc, 0x78, 0xf6, 0x0f, 0x1f, 0x4a, 0x86, 0x42, 0xb6, 0xa1, 0xd1, 0x47, 0x3f, 0x60, + 0x8e, 0x0c, 0x38, 0x02, 0x91, 0x8f, 0x8e, 0xbf, 0xf8, 0xbb, 0xa9, 0x82, 0x91, 0xd5, 0xd6, 0xbe, + 0x82, 0x4b, 0xc7, 0x4a, 0x67, 0xe6, 0x3c, 0x25, 0x37, 0xe7, 0x1d, 0x3b, 0x1d, 0x6a, 0x04, 0x9a, + 0x45, 0x34, 0xd2, 0x5e, 0xc0, 0xaa, 0xc8, 0xe9, 0xe6, 0x80, 0x7a, 0xc1, 0x29, 0xcd, 0x6e, 0x77, + 0xa0, 0x9e, 0xb8, 0x2c, 0xcd, 0x75, 0x0b, 0x6a, 0x93, 0xf8, 0x37, 0x54, 0x38, 0xbc, 0x25, 0x7b, + 0xad, 0x07, 0x24, 0x1b, 0x6f, 0xd4, 0x37, 0xae, 0xc2, 0x02, 0x0b, 0x70, 0x14, 0x8f, 0x4f, 0x17, + 0x8a, 0x70, 0x2f, 0xc5, 0x8d, 0x50, 0xa6, 0xfb, 0xd3, 0x02, 0xac, 0xa6, 0xa8, 0x2b, 0xfe, 0x32, + 0x13, 0xc9, 0x0e, 0x34, 0xb7, 0xa2, 0xaf, 0x17, 0xf1, 0x48, 0x4e, 0x3e, 0xc8, 0xda, 0x29, 0x7c, + 0xc7, 0x68, 0xad, 0x95, 0x33, 0xc3, 0x88, 0xb4, 0x39, 0xf2, 0x35, 0x2c, 0xe7, 0x7f, 0x26, 0x90, + 0xcb, 0x59, 0x8d, 0xd2, 0x5f, 0x2e, 0x2d, 0xed, 0x38, 0x91, 0xc4, 0xf4, 0x1d, 0xa8, 0xc5, 0xe3, + 0x76, 0x3e, 0xc6, 0xc2, 0x10, 0xde, 0x6a, 0x66, 0x99, 0x82, 0xa1, 0xcd, 0x91, 0xcf, 0x43, 0x65, + 0x31, 0x3a, 0x4e, 0x2b, 0x67, 0xe6, 0xe2, 0xd6, 0xb9, 0x92, 0x21, 0x54, 0x9b, 0x23, 0xcf, 0xe0, + 0xec, 0x96, 0x44, 0xe8, 0xa8, 0x79, 0x93, 0x0f, 0xf3, 0x4e, 0x8e, 0x98, 0x2b, 0xf3, 0x47, 0x2b, + 0xef, 0xff, 0xda, 0x1c, 0xf9, 0x55, 0x81, 0x73, 0x5b, 0x18, 0x14, 0x7b, 0x21, 0xb9, 0x56, 0xee, + 0xe4, 0x88, 0x9e, 0xd9, 0x7a, 0x3c, 0x6b, 0xcd, 0xe6, 0xcd, 0x6a, 0x73, 0x64, 0x57, 0x1e, 0x3b, + 0xad, 0x3d, 0x72, 0xa9, 0xb4, 0xc8, 0x92, 0xec, 0xb5, 0x8f, 0x62, 0xc7, 0x47, 0xfd, 0xa2, 0xf7, + 0xd7, 0xeb, 0xb6, 0xf2, 0xf7, 0xeb, 0xb6, 0xf2, 0xef, 0xeb, 0xb6, 0xf2, 0xcd, 0x8d, 0x37, 0x7c, + 0x78, 0xcb, 0x7c, 0x23, 0xa4, 0x9c, 0x99, 0x36, 0x43, 0x27, 0xd8, 0x5f, 0x94, 0x9f, 0xd9, 0x6e, + 0xfc, 0x1f, 0x00, 0x00, 0xff, 0xff, 0x1c, 0x99, 0x14, 0xda, 0x42, 0x14, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1783,6 +1801,22 @@ func (m *ManifestRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } + if len(m.HelmExternalValueRepoCreds) > 0 { + for iNdEx := len(m.HelmExternalValueRepoCreds) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.HelmExternalValueRepoCreds[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintRepository(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x9a + } + } if m.NoRevisionCache { i-- if m.NoRevisionCache { @@ -2291,6 +2325,20 @@ func (m *RepoServerAppDetailsQuery) MarshalToSizedBuffer(dAtA []byte) (int, erro i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } + if len(m.HelmExternalValueRepoCreds) > 0 { + for iNdEx := len(m.HelmExternalValueRepoCreds) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.HelmExternalValueRepoCreds[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintRepository(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + } + } if m.NoCache { i-- if m.NoCache { @@ -3013,6 +3061,12 @@ func (m *ManifestRequest) Size() (n int) { if m.NoRevisionCache { n += 3 } + if len(m.HelmExternalValueRepoCreds) > 0 { + for _, e := range m.HelmExternalValueRepoCreds { + l = e.Size() + n += 2 + l + sovRepository(uint64(l)) + } + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -3199,6 +3253,12 @@ func (m *RepoServerAppDetailsQuery) Size() (n int) { if m.NoCache { n += 2 } + if len(m.HelmExternalValueRepoCreds) > 0 { + for _, e := range m.HelmExternalValueRepoCreds { + l = e.Size() + n += 1 + l + sovRepository(uint64(l)) + } + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -3960,6 +4020,40 @@ func (m *ManifestRequest) Unmarshal(dAtA []byte) error { } } m.NoRevisionCache = bool(v != 0) + case 19: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field HelmExternalValueRepoCreds", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRepository + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthRepository + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthRepository + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.HelmExternalValueRepoCreds = append(m.HelmExternalValueRepoCreds, &v1alpha1.RepoCreds{}) + if err := m.HelmExternalValueRepoCreds[len(m.HelmExternalValueRepoCreds)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipRepository(dAtA[iNdEx:]) @@ -5105,6 +5199,40 @@ func (m *RepoServerAppDetailsQuery) Unmarshal(dAtA []byte) error { } } m.NoCache = bool(v != 0) + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field HelmExternalValueRepoCreds", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRepository + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthRepository + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthRepository + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.HelmExternalValueRepoCreds = append(m.HelmExternalValueRepoCreds, &v1alpha1.RepoCreds{}) + if err := m.HelmExternalValueRepoCreds[len(m.HelmExternalValueRepoCreds)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipRepository(dAtA[iNdEx:]) diff --git a/reposerver/repository/repository.go b/reposerver/repository/repository.go index 6f84981dd2949..74c3601ce4ce4 100644 --- a/reposerver/repository/repository.go +++ b/reposerver/repository/repository.go @@ -193,6 +193,7 @@ func (s *Service) runRepoOperation( ctx context.Context, revision string, repo *v1alpha1.Repository, + helmExternalValueCreds []*v1alpha1.RepoCreds, source *v1alpha1.ApplicationSource, verifyCommit bool, cacheFn func(cacheKey string, firstInvocation bool) (bool, error), @@ -232,6 +233,38 @@ func (s *Service) runRepoOperation( defer settings.sem.Release(1) } + if source.Helm != nil && source.Helm.ExternalValueFiles != nil { + // load values files from external git repo + for _, exVal := range source.Helm.ExternalValueFiles { + exRepo := v1alpha1.Repository{Repo: exVal.RepoURL} + if helmExternalValueCreds != nil { + creds := getRepoCredential(helmExternalValueCreds, exVal.RepoURL) + if creds != nil { + exRepo.CopyCredentialsFrom(creds) + } + } + + exGitClient, exRevision, err := s.newClientResolveRevision(&exRepo, exVal.TargetRevision, git.WithCache(s.cache, !settings.noRevisionCache && !settings.noCache)) + if err != nil { + return err + } + + err = DoGitCheckoutOperationForRepoOperation( + s, + exGitClient, + exRevision, + settings, + cacheFn, + nil, + verifyCommit, + "", + ) + if err != nil { + return err + } + } + } + if source.IsHelm() { if settings.noCache { err = helmClient.CleanChartCache(source.Chart, revision) @@ -244,48 +277,75 @@ func (s *Service) runRepoOperation( return err } defer io.Close(closer) + return operation(chartPath, revision, revision, func() (*operationContext, error) { return &operationContext{chartPath, ""}, nil }) } else { - closer, err := s.repoLock.Lock(gitClient.Root(), revision, settings.allowConcurrent, func() error { - return checkoutRevision(gitClient, revision) - }) + return DoGitCheckoutOperationForRepoOperation( + s, + gitClient, + revision, + settings, + cacheFn, + operation, + verifyCommit, + source.Path, + ) + } +} - if err != nil { - return err - } +func DoGitCheckoutOperationForRepoOperation( + s *Service, + gitClient git.Client, + revision string, + settings operationSettings, + cacheFn func(cacheKey string, firstInvocation bool) (bool, error), + operation func(repoRoot, commitSHA, cacheKey string, ctxSrc operationContextSrc) error, + verifyCommit bool, + path string, +) error { - defer io.Close(closer) + closer, err := s.repoLock.Lock(gitClient.Root(), revision, settings.allowConcurrent, func() error { + return checkoutRevision(gitClient, revision) + }) - commitSHA, err := gitClient.CommitSHA() - if err != nil { - return err - } + if err != nil { + return err + } - // double-check locking - if !settings.noCache { - if ok, err := cacheFn(revision, false); ok { - return err - } + defer io.Close(closer) + + commitSHA, err := gitClient.CommitSHA() + if err != nil { + return err + } + + // double-check locking + if !settings.noCache { + if ok, err := cacheFn(revision, false); ok { + return err } - // Here commitSHA refers to the SHA of the actual commit, whereas revision refers to the branch/tag name etc - // We use the commitSHA to generate manifests and store them in cache, and revision to retrieve them from cache - return operation(gitClient.Root(), commitSHA, revision, func() (*operationContext, error) { - var signature string - if verifyCommit { - signature, err = gitClient.VerifyCommitSignature(revision) - if err != nil { - return nil, err - } - } - appPath, err := argopath.Path(gitClient.Root(), source.Path) + } + if operation == nil { + return nil + } + // Here commitSHA refers to the SHA of the actual commit, whereas revision refers to the branch/tag name etc + // We use the commitSHA to generate manifests and store them in cache, and revision to retrieve them from cache + return operation(gitClient.Root(), commitSHA, revision, func() (*operationContext, error) { + var signature string + if verifyCommit { + signature, err = gitClient.VerifyCommitSignature(revision) if err != nil { return nil, err } - return &operationContext{appPath, signature}, nil - }) - } + } + appPath, err := argopath.Path(gitClient.Root(), path) + if err != nil { + return nil, err + } + return &operationContext{appPath, signature}, nil + }) } func (s *Service) GenerateManifest(ctx context.Context, q *apiclient.ManifestRequest) (*apiclient.ManifestResponse, error) { @@ -305,7 +365,7 @@ func (s *Service) GenerateManifest(ctx context.Context, q *apiclient.ManifestReq settings := operationSettings{sem: s.parallelismLimitSemaphore, noCache: q.NoCache, noRevisionCache: q.NoRevisionCache, allowConcurrent: q.ApplicationSource.AllowsConcurrentProcessing()} - err = s.runRepoOperation(ctx, q.Revision, q.Repo, q.ApplicationSource, q.VerifySignature, cacheFn, operation, settings) + err = s.runRepoOperation(ctx, q.Revision, q.Repo, q.HelmExternalValueRepoCreds, q.ApplicationSource, q.VerifySignature, cacheFn, operation, settings) return res, err } @@ -544,6 +604,7 @@ func runHelmBuild(appPath string, h helm.Helm) error { } func helmTemplate(appPath string, repoRoot string, env *v1alpha1.Env, q *apiclient.ManifestRequest, isLocal bool) ([]*unstructured.Unstructured, error) { + log.Debugf("RUNNING repository.helmTemplate") concurrencyAllowed := isConcurrencyAllowed(appPath) if !concurrencyAllowed { manifestGenerateLock.Lock(appPath) @@ -597,6 +658,20 @@ func helmTemplate(appPath string, repoRoot string, env *v1alpha1.Env, q *apiclie } templateOpts.Values = append(templateOpts.Values, val) } + for _, exVal := range appHelm.ExternalValueFiles { + repoFilePath := "" + if strings.HasPrefix(exVal.RepoURL, "file://") { + repoFilePath = exVal.RepoURL[7:] + } else { + r := regexp.MustCompile("(/|:)") + repoFilePath = filepath.Join(os.TempDir(), r.ReplaceAllString(git.NormalizeGitURL(exVal.RepoURL), "_")) + } + + for _, file := range exVal.ValueFiles { + valueFilePath := filepath.Join(repoFilePath, file) + templateOpts.Values = append(templateOpts.Values, valueFilePath) + } + } if appHelm.Values != "" { file, err := ioutil.TempFile("", "values-*.yaml") @@ -694,6 +769,7 @@ func helmTemplate(appPath string, repoRoot string, env *v1alpha1.Env, q *apiclie return nil, err } } + log.Debugf("FINISHED repository.helmTemplate") return kube.SplitYAML([]byte(out)) } @@ -1180,7 +1256,7 @@ func (s *Service) GetAppDetails(ctx context.Context, q *apiclient.RepoServerAppD } settings := operationSettings{allowConcurrent: q.Source.AllowsConcurrentProcessing(), noCache: q.NoCache, noRevisionCache: q.NoCache} - err := s.runRepoOperation(ctx, q.Source.TargetRevision, q.Repo, q.Source, false, cacheFn, operation, settings) + err := s.runRepoOperation(ctx, q.Source.TargetRevision, q.Repo, q.HelmExternalValueRepoCreds, q.Source, false, cacheFn, operation, settings) return res, err } diff --git a/reposerver/repository/repository.proto b/reposerver/repository/repository.proto index ff98ccb68d05b..e35b4524f59dc 100644 --- a/reposerver/repository/repository.proto +++ b/reposerver/repository/repository.proto @@ -28,6 +28,7 @@ message ManifestRequest { bool verifySignature = 16; repeated github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.RepoCreds helmRepoCreds = 17; bool noRevisionCache = 18; + repeated github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.RepoCreds helmExternalValueRepoCreds = 19; } // TestRepositoryRequest is a query to test repository is valid or not and has valid access. @@ -81,6 +82,7 @@ message RepoServerAppDetailsQuery { github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.KustomizeOptions kustomizeOptions = 4; string appName = 5; bool noCache = 6; + repeated github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.RepoCreds helmExternalValueRepoCreds = 7; } // RepoAppDetailsResponse application details diff --git a/server/application/application.go b/server/application/application.go index 640d8eaf11ded..c8a4acb0ea225 100644 --- a/server/application/application.go +++ b/server/application/application.go @@ -229,6 +229,7 @@ func (s *Server) queryRepoServer(ctx context.Context, a *v1alpha1.Application, a repo *appv1.Repository, helmRepos []*appv1.Repository, helmCreds []*v1alpha1.RepoCreds, + helmExternaValueCreds []*v1alpha1.RepoCreds, kustomizeOptions *v1alpha1.KustomizeOptions, ) error) error { @@ -270,11 +271,31 @@ func (s *Server) queryRepoServer(ctx context.Context, a *v1alpha1.Application, a if err != nil { return err } + permittedHelmCredentials, err := argo.GetPermittedReposCredentials(proj, helmRepositoryCredentials) if err != nil { return err } - return action(client, repo, permittedHelmRepos, permittedHelmCredentials, kustomizeOptions) + + helmExternalValueCredentials := []*v1alpha1.RepoCreds{} + if a.Spec.Source.Helm != nil && a.Spec.Source.Helm.ExternalValueFiles != nil { + for _, helmExternalValueFile := range a.Spec.Source.Helm.ExternalValueFiles { + helmExternalValueCredential, err := s.db.GetRepositoryCredentials(ctx, helmExternalValueFile.RepoURL) + if err != nil { + return err + } + if helmExternalValueCredential != nil { + helmExternalValueCredentials = append(helmExternalValueCredentials, helmExternalValueCredential) + } + } + } + permittedHelmExternalValueCredentials, err := argo.GetPermittedReposCredentials(proj, helmExternalValueCredentials) + + if err != nil { + return err + } + + return action(client, repo, permittedHelmRepos, permittedHelmCredentials, permittedHelmExternalValueCredentials, kustomizeOptions) } // GetManifests returns application manifests @@ -289,7 +310,7 @@ func (s *Server) GetManifests(ctx context.Context, q *application.ApplicationMan var manifestInfo *apiclient.ManifestResponse err = s.queryRepoServer(ctx, a, func( - client apiclient.RepoServerServiceClient, repo *appv1.Repository, helmRepos []*appv1.Repository, helmCreds []*appv1.RepoCreds, kustomizeOptions *appv1.KustomizeOptions) error { + client apiclient.RepoServerServiceClient, repo *appv1.Repository, helmRepos []*appv1.Repository, helmCreds []*appv1.RepoCreds, helmExternalValueCreds []*appv1.RepoCreds, kustomizeOptions *appv1.KustomizeOptions) error { revision := a.Spec.Source.TargetRevision if q.Revision != "" { revision = q.Revision @@ -319,18 +340,19 @@ func (s *Server) GetManifests(ctx context.Context, q *application.ApplicationMan } manifestInfo, err = client.GenerateManifest(ctx, &apiclient.ManifestRequest{ - Repo: repo, - Revision: revision, - AppLabelKey: appInstanceLabelKey, - AppName: a.Name, - Namespace: a.Spec.Destination.Namespace, - ApplicationSource: &a.Spec.Source, - Repos: helmRepos, - Plugins: plugins, - KustomizeOptions: kustomizeOptions, - KubeVersion: serverVersion, - ApiVersions: argo.APIGroupsToVersions(apiGroups), - HelmRepoCreds: helmCreds, + Repo: repo, + Revision: revision, + AppLabelKey: appInstanceLabelKey, + AppName: a.Name, + Namespace: a.Spec.Destination.Namespace, + ApplicationSource: &a.Spec.Source, + Repos: helmRepos, + Plugins: plugins, + KustomizeOptions: kustomizeOptions, + KubeVersion: serverVersion, + ApiVersions: argo.APIGroupsToVersions(apiGroups), + HelmRepoCreds: helmCreds, + HelmExternalValueRepoCreds: helmExternalValueCreds, }) return err }) @@ -405,15 +427,17 @@ func (s *Server) Get(ctx context.Context, q *application.ApplicationQuery) (*app repo *appv1.Repository, helmRepos []*appv1.Repository, _ []*appv1.RepoCreds, + helmExternalValueCreds []*appv1.RepoCreds, kustomizeOptions *appv1.KustomizeOptions, ) error { _, err := client.GetAppDetails(ctx, &apiclient.RepoServerAppDetailsQuery{ - Repo: repo, - Source: &app.Spec.Source, - AppName: app.Name, - KustomizeOptions: kustomizeOptions, - Repos: helmRepos, - NoCache: true, + Repo: repo, + Source: &app.Spec.Source, + AppName: app.Name, + KustomizeOptions: kustomizeOptions, + Repos: helmRepos, + HelmExternalValueRepoCreds: helmExternalValueCreds, + NoCache: true, }) return err }); err != nil { diff --git a/test/e2e/helm_test.go b/test/e2e/helm_test.go index 910e32ccfe2f7..f181c8d33e7ae 100644 --- a/test/e2e/helm_test.go +++ b/test/e2e/helm_test.go @@ -114,6 +114,29 @@ func TestHelmRepo(t *testing.T) { Expect(SyncStatusIs(SyncStatusCodeSynced)) } +func TestHelmExternalValuesAdded(t *testing.T) { + Given(t). + Path("helm-external-values/chart"). + When(). + Declarative("helm-external-values/app.yaml"). + Sync(). + Then(). + Expect(OperationPhaseIs(OperationSucceeded)). + Expect(HealthIs(health.HealthStatusHealthy)). + Expect(SyncStatusIs(SyncStatusCodeSynced)). + And(func(app *Application) { + assert.Equal(t, []string{"helm-external-values/chart/values_external.yaml"}, app.Spec.Source.Helm.ExternalValueFiles[0].ValueFiles) + assert.Equal(t, []string{"helm-external-values/chart/values_external_2.yaml"}, app.Spec.Source.Helm.ExternalValueFiles[1].ValueFiles) + }). + And(func(app *Application) { + output, err := RunCli("app", "manifests", app.Name) + assert.NoError(t, err) + assert.Contains(t, output, "defaultValue") + assert.Contains(t, output, "external1Value") + assert.Contains(t, output, "external2Value") + }) +} + func TestHelmValues(t *testing.T) { Given(t). Path("helm"). diff --git a/test/e2e/testdata/helm-external-values/app.yaml b/test/e2e/testdata/helm-external-values/app.yaml new file mode 100644 index 0000000000000..16ca2faccdefb --- /dev/null +++ b/test/e2e/testdata/helm-external-values/app.yaml @@ -0,0 +1,26 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: {{.Name}} + namespace: {{.ArgoCDNamespace}} +spec: + project: {{.Project}} + source: + repoURL: {{.RepoURL}} + targetRevision: HEAD + path: {{.Path}} + helm: + valueFiles: + - values.yaml + externalValueFiles: + - repoURL: {{.RepoURL}} + targetRevision: HEAD + valueFiles: + - {{.Path}}/values_external.yaml + - repoURL: {{.RepoURL}} + targetRevision: HEAD + valueFiles: + - {{.Path}}/values_external_2.yaml + destination: + server: https://kubernetes.default.svc + namespace: {{.DeploymentNamespace}} diff --git a/test/e2e/testdata/helm-external-values/chart/Chart.yaml b/test/e2e/testdata/helm-external-values/chart/Chart.yaml new file mode 100644 index 0000000000000..4fbb07a6a3ea3 --- /dev/null +++ b/test/e2e/testdata/helm-external-values/chart/Chart.yaml @@ -0,0 +1,3 @@ +apiVersion: v2 +version: 1.0.0 +name: helm diff --git a/test/e2e/testdata/helm-external-values/chart/templates/configmap.yaml b/test/e2e/testdata/helm-external-values/chart/templates/configmap.yaml new file mode 100644 index 0000000000000..04969389b29fc --- /dev/null +++ b/test/e2e/testdata/helm-external-values/chart/templates/configmap.yaml @@ -0,0 +1,24 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: default +data: + foo: "{{ .Values.defaultValue }}" + +--- + +apiVersion: v1 +kind: ConfigMap +metadata: + name: external-override-1 +data: + foo: "{{ .Values.external1Override }}" + +--- + +apiVersion: v1 +kind: ConfigMap +metadata: + name: external-override-2 +data: + foo: "{{ .Values.external2Override }}" diff --git a/test/e2e/testdata/helm-external-values/chart/values.yaml b/test/e2e/testdata/helm-external-values/chart/values.yaml new file mode 100644 index 0000000000000..a7dae84f092f1 --- /dev/null +++ b/test/e2e/testdata/helm-external-values/chart/values.yaml @@ -0,0 +1,3 @@ +defaultValue: "defaultValue" +external1Override: "defaultValue" +external2Override: "defaultValue" diff --git a/test/e2e/testdata/helm-external-values/chart/values_external.yaml b/test/e2e/testdata/helm-external-values/chart/values_external.yaml new file mode 100644 index 0000000000000..29782c6639b90 --- /dev/null +++ b/test/e2e/testdata/helm-external-values/chart/values_external.yaml @@ -0,0 +1,2 @@ +external1Override: "external1Value" +external2Override: "external1Value" diff --git a/test/e2e/testdata/helm-external-values/chart/values_external_2.yaml b/test/e2e/testdata/helm-external-values/chart/values_external_2.yaml new file mode 100644 index 0000000000000..246c52430273e --- /dev/null +++ b/test/e2e/testdata/helm-external-values/chart/values_external_2.yaml @@ -0,0 +1 @@ +external2Override: "external2Value" diff --git a/ui/src/app/applications/components/application-parameters/application-parameters.tsx b/ui/src/app/applications/components/application-parameters/application-parameters.tsx index 0ed589c8f20d5..a9a88aa9c29e9 100644 --- a/ui/src/app/applications/components/application-parameters/application-parameters.tsx +++ b/ui/src/app/applications/components/application-parameters/application-parameters.tsx @@ -231,6 +231,21 @@ export const ApplicationParameters = (props: { /> ) }); + if (app.spec.source.helm && app.spec.source.helm.externalValueFiles) { + app.spec.source.helm.externalValueFiles.forEach((externalValue, index) => { + attributes.push({ + title: 'EXTERNAL VALUES ' + (index + 1), + view: ( + + {externalValue.repoURL} ({externalValue.targetRevision})
+ {externalValue.valueFiles.join(', ')} +
+ ), + edit: (formApi: FormApi) => Only editable in Manifest! + }); + }); + } + attributes.push({ title: 'VALUES', view: app.spec.source.helm && ( diff --git a/ui/src/app/shared/models.ts b/ui/src/app/shared/models.ts index b7870411bf2f7..acb4a70acdcf8 100644 --- a/ui/src/app/shared/models.ts +++ b/ui/src/app/shared/models.ts @@ -182,6 +182,7 @@ export interface ApplicationSource { export interface ApplicationSourceHelm { valueFiles: string[]; values?: string; + externalValueFiles?: ExternalValuesFile[]; parameters: HelmParameter[]; fileParameters: HelmFileParameter[]; } @@ -554,6 +555,12 @@ export interface AppInfo { path: string; } +export interface ExternalValuesFile { + repoURL: string; + targetRevision: string; + valueFiles: string[]; +} + export interface HelmParameter { name: string; value: string; @@ -569,6 +576,7 @@ export interface HelmAppSpec { path: string; valueFiles: string[]; values?: string; + externalValueFiles?: ExternalValuesFile; parameters: HelmParameter[]; fileParameters: HelmFileParameter[]; }