From e734ae5241f31dcdb64756049dcabff4286daa27 Mon Sep 17 00:00:00 2001 From: Julie Vogelman Date: Thu, 6 Apr 2023 17:55:07 -0700 Subject: [PATCH] feat: Enable configuration for finalizer removal if artifact GC fails (#10810) Signed-off-by: Julie Vogelmani --- api/jsonschema/schema.json | 26 +- api/openapi-spec/swagger.json | 26 +- docs/executor_swagger.md | 2 +- docs/fields.md | 25 +- .../argoproj.io_clusterworkflowtemplates.yaml | 2 + .../crds/full/argoproj.io_cronworkflows.yaml | 2 + .../base/crds/full/argoproj.io_workflows.yaml | 4 + .../full/argoproj.io_workflowtemplates.yaml | 2 + pkg/apis/workflow/v1alpha1/generated.pb.go | 1564 ++++++++++------- pkg/apis/workflow/v1alpha1/generated.proto | 13 +- .../workflow/v1alpha1/openapi_generated.go | 49 +- pkg/apis/workflow/v1alpha1/workflow_types.go | 25 +- .../workflow/v1alpha1/workflow_types_test.go | 6 +- .../v1alpha1/zz_generated.deepcopy.go | 19 +- pkg/plugins/executor/swagger.yml | 2 + .../IoArgoprojWorkflowV1alpha1ArtifactGC.md | 2 +- ...WorkflowV1alpha1WorkflowLevelArtifactGC.md | 17 + .../IoArgoprojWorkflowV1alpha1WorkflowSpec.md | 2 +- ...low_v1alpha1_workflow_level_artifact_gc.py | 273 +++ ...rgoproj_workflow_v1alpha1_workflow_spec.py | 10 +- .../client/argo_workflows/models/__init__.py | 1 + .../docs/ClusterWorkflowTemplateServiceApi.md | 9 +- .../client/docs/CronWorkflowServiceApi.md | 9 +- .../IoArgoprojWorkflowV1alpha1ArtifactGC.md | 2 +- ...WorkflowV1alpha1WorkflowLevelArtifactGC.md | 16 + .../IoArgoprojWorkflowV1alpha1WorkflowSpec.md | 2 +- sdks/python/client/docs/WorkflowServiceApi.md | 12 +- .../client/docs/WorkflowTemplateServiceApi.md | 9 +- test/e2e/artifacts_test.go | 123 +- workflow/controller/artifact_gc.go | 20 +- 30 files changed, 1504 insertions(+), 770 deletions(-) create mode 100644 sdks/java/client/docs/IoArgoprojWorkflowV1alpha1WorkflowLevelArtifactGC.md create mode 100644 sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_workflow_level_artifact_gc.py create mode 100644 sdks/python/client/docs/IoArgoprojWorkflowV1alpha1WorkflowLevelArtifactGC.md diff --git a/api/jsonschema/schema.json b/api/jsonschema/schema.json index f7a84c3d3f55..b8a563f83ad5 100644 --- a/api/jsonschema/schema.json +++ b/api/jsonschema/schema.json @@ -3577,7 +3577,7 @@ "type": "object" }, "io.argoproj.workflow.v1alpha1.ArtifactGC": { - "description": "ArtifactGC describes how to delete artifacts from completed Workflows", + "description": "ArtifactGC describes how to delete artifacts from completed Workflows - this is embedded into the WorkflowLevelArtifactGC, and also used for individual Artifacts to override that as needed", "properties": { "podMetadata": { "$ref": "#/definitions/io.argoproj.workflow.v1alpha1.Metadata", @@ -7091,6 +7091,28 @@ ], "type": "object" }, + "io.argoproj.workflow.v1alpha1.WorkflowLevelArtifactGC": { + "description": "WorkflowLevelArtifactGC describes how to delete artifacts from completed Workflows - this spec is used on the Workflow level", + "properties": { + "forceFinalizerRemoval": { + "description": "ForceFinalizerRemoval: if set to true, the finalizer will be removed in the case that Artifact GC fails", + "type": "boolean" + }, + "podMetadata": { + "$ref": "#/definitions/io.argoproj.workflow.v1alpha1.Metadata", + "description": "PodMetadata is an optional field for specifying the Labels and Annotations that should be assigned to the Pod doing the deletion" + }, + "serviceAccountName": { + "description": "ServiceAccountName is an optional field for specifying the Service Account that should be assigned to the Pod doing the deletion", + "type": "string" + }, + "strategy": { + "description": "Strategy is the strategy to use.", + "type": "string" + } + }, + "type": "object" + }, "io.argoproj.workflow.v1alpha1.WorkflowLintRequest": { "properties": { "namespace": { @@ -7252,7 +7274,7 @@ "description": "Arguments contain the parameters and artifacts sent to the workflow entrypoint Parameters are referencable globally using the 'workflow' variable prefix. e.g. {{io.argoproj.workflow.v1alpha1.parameters.myparam}}" }, "artifactGC": { - "$ref": "#/definitions/io.argoproj.workflow.v1alpha1.ArtifactGC", + "$ref": "#/definitions/io.argoproj.workflow.v1alpha1.WorkflowLevelArtifactGC", "description": "ArtifactGC describes the strategy to use when deleting artifacts from completed or deleted workflows (applies to all output Artifacts unless Artifact.ArtifactGC is specified, which overrides this)" }, "artifactRepositoryRef": { diff --git a/api/openapi-spec/swagger.json b/api/openapi-spec/swagger.json index 06d90e376c70..51944d234c3a 100644 --- a/api/openapi-spec/swagger.json +++ b/api/openapi-spec/swagger.json @@ -7525,7 +7525,7 @@ } }, "io.argoproj.workflow.v1alpha1.ArtifactGC": { - "description": "ArtifactGC describes how to delete artifacts from completed Workflows", + "description": "ArtifactGC describes how to delete artifacts from completed Workflows - this is embedded into the WorkflowLevelArtifactGC, and also used for individual Artifacts to override that as needed", "type": "object", "properties": { "podMetadata": { @@ -11003,6 +11003,28 @@ } } }, + "io.argoproj.workflow.v1alpha1.WorkflowLevelArtifactGC": { + "description": "WorkflowLevelArtifactGC describes how to delete artifacts from completed Workflows - this spec is used on the Workflow level", + "type": "object", + "properties": { + "forceFinalizerRemoval": { + "description": "ForceFinalizerRemoval: if set to true, the finalizer will be removed in the case that Artifact GC fails", + "type": "boolean" + }, + "podMetadata": { + "description": "PodMetadata is an optional field for specifying the Labels and Annotations that should be assigned to the Pod doing the deletion", + "$ref": "#/definitions/io.argoproj.workflow.v1alpha1.Metadata" + }, + "serviceAccountName": { + "description": "ServiceAccountName is an optional field for specifying the Service Account that should be assigned to the Pod doing the deletion", + "type": "string" + }, + "strategy": { + "description": "Strategy is the strategy to use.", + "type": "string" + } + } + }, "io.argoproj.workflow.v1alpha1.WorkflowLintRequest": { "type": "object", "properties": { @@ -11166,7 +11188,7 @@ }, "artifactGC": { "description": "ArtifactGC describes the strategy to use when deleting artifacts from completed or deleted workflows (applies to all output Artifacts unless Artifact.ArtifactGC is specified, which overrides this)", - "$ref": "#/definitions/io.argoproj.workflow.v1alpha1.ArtifactGC" + "$ref": "#/definitions/io.argoproj.workflow.v1alpha1.WorkflowLevelArtifactGC" }, "artifactRepositoryRef": { "description": "ArtifactRepositoryRef specifies the configMap name and key containing the artifact repository config.", diff --git a/docs/executor_swagger.md b/docs/executor_swagger.md index 61201056eb21..a4645a914ec6 100644 --- a/docs/executor_swagger.md +++ b/docs/executor_swagger.md @@ -228,7 +228,7 @@ set when loading input artifacts. | | ### ArtifactGC -> ArtifactGC describes how to delete artifacts from completed Workflows +> ArtifactGC describes how to delete artifacts from completed Workflows - this is embedded into the WorkflowLevelArtifactGC, and also used for individual Artifacts to override that as needed diff --git a/docs/fields.md b/docs/fields.md index d37bc7253e9c..003dd4017260 100644 --- a/docs/fields.md +++ b/docs/fields.md @@ -789,7 +789,7 @@ WorkflowSpec is the specification of a Workflow. |`affinity`|[`Affinity`](#affinity)|Affinity sets the scheduling constraints for all pods in the io.argoproj.workflow.v1alpha1. Can be overridden by an affinity specified in the template| |`archiveLogs`|`boolean`|ArchiveLogs indicates if the container logs should be archived| |`arguments`|[`Arguments`](#arguments)|Arguments contain the parameters and artifacts sent to the workflow entrypoint Parameters are referencable globally using the 'workflow' variable prefix. e.g. {{io.argoproj.workflow.v1alpha1.parameters.myparam}}| -|`artifactGC`|[`ArtifactGC`](#artifactgc)|ArtifactGC describes the strategy to use when deleting artifacts from completed or deleted workflows (applies to all output Artifacts unless Artifact.ArtifactGC is specified, which overrides this)| +|`artifactGC`|[`WorkflowLevelArtifactGC`](#workflowlevelartifactgc)|ArtifactGC describes the strategy to use when deleting artifacts from completed or deleted workflows (applies to all output Artifacts unless Artifact.ArtifactGC is specified, which overrides this)| |`artifactRepositoryRef`|[`ArtifactRepositoryRef`](#artifactrepositoryref)|ArtifactRepositoryRef specifies the configMap name and key containing the artifact repository config.| |`automountServiceAccountToken`|`boolean`|AutomountServiceAccountToken indicates whether a service account token should be automatically mounted in pods. ServiceAccountName of ExecutorConfig must be specified if this value is false.| |`dnsConfig`|[`PodDNSConfig`](#poddnsconfig)|PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy.| @@ -1432,9 +1432,9 @@ Arguments to a template |`artifacts`|`Array<`[`Artifact`](#artifact)`>`|Artifacts is the list of artifacts to pass to the template or workflow| |`parameters`|`Array<`[`Parameter`](#parameter)`>`|Parameters is the list of parameters to pass to the template or workflow| -## ArtifactGC +## WorkflowLevelArtifactGC -ArtifactGC describes how to delete artifacts from completed Workflows +WorkflowLevelArtifactGC describes how to delete artifacts from completed Workflows - this spec is used on the Workflow level
Examples with this field (click to open) @@ -1446,6 +1446,7 @@ ArtifactGC describes how to delete artifacts from completed Workflows ### Fields | Field Name | Field Type | Description | |:----------:|:----------:|---------------| +|`forceFinalizerRemoval`|`boolean`|ForceFinalizerRemoval: if set to true, the finalizer will be removed in the case that Artifact GC fails| |`podMetadata`|[`Metadata`](#metadata)|PodMetadata is an optional field for specifying the Labels and Annotations that should be assigned to the Pod doing the deletion| |`serviceAccountName`|`string`|ServiceAccountName is an optional field for specifying the Service Account that should be assigned to the Pod doing the deletion| |`strategy`|`string`|Strategy is the strategy to use.| @@ -3247,6 +3248,24 @@ ArchiveStrategy describes how to archive files/directory when saving artifacts |`tar`|[`TarStrategy`](#tarstrategy)|_No description available_| |`zip`|[`ZipStrategy`](#zipstrategy)|_No description available_| +## ArtifactGC + +ArtifactGC describes how to delete artifacts from completed Workflows - this is embedded into the WorkflowLevelArtifactGC, and also used for individual Artifacts to override that as needed + +
+Examples with this field (click to open) +
+ +- [`artifact-gc-workflow.yaml`](https://github.com/argoproj/argo-workflows/blob/master/examples/artifact-gc-workflow.yaml) +
+ +### Fields +| Field Name | Field Type | Description | +|:----------:|:----------:|---------------| +|`podMetadata`|[`Metadata`](#metadata)|PodMetadata is an optional field for specifying the Labels and Annotations that should be assigned to the Pod doing the deletion| +|`serviceAccountName`|`string`|ServiceAccountName is an optional field for specifying the Service Account that should be assigned to the Pod doing the deletion| +|`strategy`|`string`|Strategy is the strategy to use.| + ## ArtifactoryArtifact ArtifactoryArtifact is the location of an artifactory artifact diff --git a/manifests/base/crds/full/argoproj.io_clusterworkflowtemplates.yaml b/manifests/base/crds/full/argoproj.io_clusterworkflowtemplates.yaml index 304819ab9df8..151da8e4f906 100644 --- a/manifests/base/crds/full/argoproj.io_clusterworkflowtemplates.yaml +++ b/manifests/base/crds/full/argoproj.io_clusterworkflowtemplates.yaml @@ -934,6 +934,8 @@ spec: type: object artifactGC: properties: + forceFinalizerRemoval: + type: boolean podMetadata: properties: annotations: diff --git a/manifests/base/crds/full/argoproj.io_cronworkflows.yaml b/manifests/base/crds/full/argoproj.io_cronworkflows.yaml index db6d4c5c741d..25d5f5831986 100644 --- a/manifests/base/crds/full/argoproj.io_cronworkflows.yaml +++ b/manifests/base/crds/full/argoproj.io_cronworkflows.yaml @@ -955,6 +955,8 @@ spec: type: object artifactGC: properties: + forceFinalizerRemoval: + type: boolean podMetadata: properties: annotations: diff --git a/manifests/base/crds/full/argoproj.io_workflows.yaml b/manifests/base/crds/full/argoproj.io_workflows.yaml index cecd175d765d..a3ab137eaf6f 100644 --- a/manifests/base/crds/full/argoproj.io_workflows.yaml +++ b/manifests/base/crds/full/argoproj.io_workflows.yaml @@ -948,6 +948,8 @@ spec: type: object artifactGC: properties: + forceFinalizerRemoval: + type: boolean podMetadata: properties: annotations: @@ -30631,6 +30633,8 @@ spec: type: object artifactGC: properties: + forceFinalizerRemoval: + type: boolean podMetadata: properties: annotations: diff --git a/manifests/base/crds/full/argoproj.io_workflowtemplates.yaml b/manifests/base/crds/full/argoproj.io_workflowtemplates.yaml index 0f794456fdca..af1682ab9ee4 100644 --- a/manifests/base/crds/full/argoproj.io_workflowtemplates.yaml +++ b/manifests/base/crds/full/argoproj.io_workflowtemplates.yaml @@ -933,6 +933,8 @@ spec: type: object artifactGC: properties: + forceFinalizerRemoval: + type: boolean podMetadata: properties: annotations: diff --git a/pkg/apis/workflow/v1alpha1/generated.pb.go b/pkg/apis/workflow/v1alpha1/generated.pb.go index 57b68ccd7ce8..7cf71c7e03ba 100644 --- a/pkg/apis/workflow/v1alpha1/generated.pb.go +++ b/pkg/apis/workflow/v1alpha1/generated.pb.go @@ -3760,10 +3760,38 @@ func (m *WorkflowEventBindingSpec) XXX_DiscardUnknown() { var xxx_messageInfo_WorkflowEventBindingSpec proto.InternalMessageInfo +func (m *WorkflowLevelArtifactGC) Reset() { *m = WorkflowLevelArtifactGC{} } +func (*WorkflowLevelArtifactGC) ProtoMessage() {} +func (*WorkflowLevelArtifactGC) Descriptor() ([]byte, []int) { + return fileDescriptor_724696e352c3df5f, []int{133} +} +func (m *WorkflowLevelArtifactGC) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *WorkflowLevelArtifactGC) 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 *WorkflowLevelArtifactGC) XXX_Merge(src proto.Message) { + xxx_messageInfo_WorkflowLevelArtifactGC.Merge(m, src) +} +func (m *WorkflowLevelArtifactGC) XXX_Size() int { + return m.Size() +} +func (m *WorkflowLevelArtifactGC) XXX_DiscardUnknown() { + xxx_messageInfo_WorkflowLevelArtifactGC.DiscardUnknown(m) +} + +var xxx_messageInfo_WorkflowLevelArtifactGC proto.InternalMessageInfo + func (m *WorkflowList) Reset() { *m = WorkflowList{} } func (*WorkflowList) ProtoMessage() {} func (*WorkflowList) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{133} + return fileDescriptor_724696e352c3df5f, []int{134} } func (m *WorkflowList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3791,7 +3819,7 @@ var xxx_messageInfo_WorkflowList proto.InternalMessageInfo func (m *WorkflowMetadata) Reset() { *m = WorkflowMetadata{} } func (*WorkflowMetadata) ProtoMessage() {} func (*WorkflowMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{134} + return fileDescriptor_724696e352c3df5f, []int{135} } func (m *WorkflowMetadata) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3819,7 +3847,7 @@ var xxx_messageInfo_WorkflowMetadata proto.InternalMessageInfo func (m *WorkflowSpec) Reset() { *m = WorkflowSpec{} } func (*WorkflowSpec) ProtoMessage() {} func (*WorkflowSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{135} + return fileDescriptor_724696e352c3df5f, []int{136} } func (m *WorkflowSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3847,7 +3875,7 @@ var xxx_messageInfo_WorkflowSpec proto.InternalMessageInfo func (m *WorkflowStatus) Reset() { *m = WorkflowStatus{} } func (*WorkflowStatus) ProtoMessage() {} func (*WorkflowStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{136} + return fileDescriptor_724696e352c3df5f, []int{137} } func (m *WorkflowStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3875,7 +3903,7 @@ var xxx_messageInfo_WorkflowStatus proto.InternalMessageInfo func (m *WorkflowStep) Reset() { *m = WorkflowStep{} } func (*WorkflowStep) ProtoMessage() {} func (*WorkflowStep) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{137} + return fileDescriptor_724696e352c3df5f, []int{138} } func (m *WorkflowStep) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3903,7 +3931,7 @@ var xxx_messageInfo_WorkflowStep proto.InternalMessageInfo func (m *WorkflowTaskResult) Reset() { *m = WorkflowTaskResult{} } func (*WorkflowTaskResult) ProtoMessage() {} func (*WorkflowTaskResult) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{138} + return fileDescriptor_724696e352c3df5f, []int{139} } func (m *WorkflowTaskResult) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3931,7 +3959,7 @@ var xxx_messageInfo_WorkflowTaskResult proto.InternalMessageInfo func (m *WorkflowTaskResultList) Reset() { *m = WorkflowTaskResultList{} } func (*WorkflowTaskResultList) ProtoMessage() {} func (*WorkflowTaskResultList) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{139} + return fileDescriptor_724696e352c3df5f, []int{140} } func (m *WorkflowTaskResultList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3959,7 +3987,7 @@ var xxx_messageInfo_WorkflowTaskResultList proto.InternalMessageInfo func (m *WorkflowTaskSet) Reset() { *m = WorkflowTaskSet{} } func (*WorkflowTaskSet) ProtoMessage() {} func (*WorkflowTaskSet) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{140} + return fileDescriptor_724696e352c3df5f, []int{141} } func (m *WorkflowTaskSet) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3987,7 +4015,7 @@ var xxx_messageInfo_WorkflowTaskSet proto.InternalMessageInfo func (m *WorkflowTaskSetList) Reset() { *m = WorkflowTaskSetList{} } func (*WorkflowTaskSetList) ProtoMessage() {} func (*WorkflowTaskSetList) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{141} + return fileDescriptor_724696e352c3df5f, []int{142} } func (m *WorkflowTaskSetList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4015,7 +4043,7 @@ var xxx_messageInfo_WorkflowTaskSetList proto.InternalMessageInfo func (m *WorkflowTaskSetSpec) Reset() { *m = WorkflowTaskSetSpec{} } func (*WorkflowTaskSetSpec) ProtoMessage() {} func (*WorkflowTaskSetSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{142} + return fileDescriptor_724696e352c3df5f, []int{143} } func (m *WorkflowTaskSetSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4043,7 +4071,7 @@ var xxx_messageInfo_WorkflowTaskSetSpec proto.InternalMessageInfo func (m *WorkflowTaskSetStatus) Reset() { *m = WorkflowTaskSetStatus{} } func (*WorkflowTaskSetStatus) ProtoMessage() {} func (*WorkflowTaskSetStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{143} + return fileDescriptor_724696e352c3df5f, []int{144} } func (m *WorkflowTaskSetStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4071,7 +4099,7 @@ var xxx_messageInfo_WorkflowTaskSetStatus proto.InternalMessageInfo func (m *WorkflowTemplate) Reset() { *m = WorkflowTemplate{} } func (*WorkflowTemplate) ProtoMessage() {} func (*WorkflowTemplate) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{144} + return fileDescriptor_724696e352c3df5f, []int{145} } func (m *WorkflowTemplate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4099,7 +4127,7 @@ var xxx_messageInfo_WorkflowTemplate proto.InternalMessageInfo func (m *WorkflowTemplateList) Reset() { *m = WorkflowTemplateList{} } func (*WorkflowTemplateList) ProtoMessage() {} func (*WorkflowTemplateList) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{145} + return fileDescriptor_724696e352c3df5f, []int{146} } func (m *WorkflowTemplateList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4127,7 +4155,7 @@ var xxx_messageInfo_WorkflowTemplateList proto.InternalMessageInfo func (m *WorkflowTemplateRef) Reset() { *m = WorkflowTemplateRef{} } func (*WorkflowTemplateRef) ProtoMessage() {} func (*WorkflowTemplateRef) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{146} + return fileDescriptor_724696e352c3df5f, []int{147} } func (m *WorkflowTemplateRef) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4155,7 +4183,7 @@ var xxx_messageInfo_WorkflowTemplateRef proto.InternalMessageInfo func (m *ZipStrategy) Reset() { *m = ZipStrategy{} } func (*ZipStrategy) ProtoMessage() {} func (*ZipStrategy) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{147} + return fileDescriptor_724696e352c3df5f, []int{148} } func (m *ZipStrategy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4327,6 +4355,7 @@ func init() { proto.RegisterType((*WorkflowEventBinding)(nil), "github.com.argoproj.argo_workflows.v3.pkg.apis.workflow.v1alpha1.WorkflowEventBinding") proto.RegisterType((*WorkflowEventBindingList)(nil), "github.com.argoproj.argo_workflows.v3.pkg.apis.workflow.v1alpha1.WorkflowEventBindingList") proto.RegisterType((*WorkflowEventBindingSpec)(nil), "github.com.argoproj.argo_workflows.v3.pkg.apis.workflow.v1alpha1.WorkflowEventBindingSpec") + proto.RegisterType((*WorkflowLevelArtifactGC)(nil), "github.com.argoproj.argo_workflows.v3.pkg.apis.workflow.v1alpha1.WorkflowLevelArtifactGC") proto.RegisterType((*WorkflowList)(nil), "github.com.argoproj.argo_workflows.v3.pkg.apis.workflow.v1alpha1.WorkflowList") proto.RegisterType((*WorkflowMetadata)(nil), "github.com.argoproj.argo_workflows.v3.pkg.apis.workflow.v1alpha1.WorkflowMetadata") proto.RegisterMapType((map[string]string)(nil), "github.com.argoproj.argo_workflows.v3.pkg.apis.workflow.v1alpha1.WorkflowMetadata.AnnotationsEntry") @@ -4360,671 +4389,675 @@ func init() { } var fileDescriptor_724696e352c3df5f = []byte{ - // 10621 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x7d, 0x6b, 0x70, 0x24, 0xc7, - 0x79, 0x18, 0x67, 0x81, 0xc5, 0xe3, 0xc3, 0xf3, 0xfa, 0x5e, 0x4b, 0x90, 0x3c, 0xd0, 0x43, 0x91, - 0x21, 0x6d, 0x0a, 0x67, 0xde, 0x49, 0x09, 0x23, 0x25, 0x92, 0xf0, 0x38, 0xe0, 0x40, 0x00, 0x07, - 0xb0, 0x17, 0x77, 0x67, 0x52, 0x8c, 0xa4, 0xc1, 0x6e, 0x63, 0x77, 0x88, 0xdd, 0x99, 0xd5, 0xcc, - 0x2c, 0x70, 0x20, 0x8f, 0x92, 0x22, 0xeb, 0x19, 0x2b, 0x56, 0x62, 0x4b, 0xb2, 0xa4, 0x24, 0x55, - 0x8a, 0x22, 0x25, 0x2a, 0xc5, 0x95, 0x94, 0x5c, 0xf9, 0x91, 0xb2, 0xff, 0xa5, 0x52, 0x2e, 0xa5, - 0x9c, 0xaa, 0xc8, 0x65, 0x26, 0xd2, 0x8f, 0x18, 0x8c, 0x90, 0x44, 0x55, 0x49, 0x4a, 0x55, 0x89, - 0x2a, 0x76, 0xec, 0xcb, 0xa3, 0x52, 0xfd, 0x9c, 0xee, 0xd9, 0x59, 0x1c, 0x70, 0xd7, 0xc0, 0xb1, - 0xec, 0x5f, 0xc0, 0x7e, 0xfd, 0xf5, 0xf7, 0x75, 0xf7, 0xf4, 0x7c, 0xfd, 0xbd, 0xfa, 0x1b, 0x58, - 0xab, 0xf9, 0x49, 0xbd, 0xbd, 0x31, 0x55, 0x09, 0x9b, 0x17, 0xbd, 0xa8, 0x16, 0xb6, 0xa2, 0xf0, - 0x55, 0xf6, 0xcf, 0x3b, 0x77, 0xc2, 0x68, 0x6b, 0xb3, 0x11, 0xee, 0xc4, 0x17, 0xb7, 0x2f, 0x5f, - 0x6c, 0x6d, 0xd5, 0x2e, 0x7a, 0x2d, 0x3f, 0xbe, 0x28, 0xa1, 0x17, 0xb7, 0x9f, 0xf3, 0x1a, 0xad, - 0xba, 0xf7, 0xdc, 0xc5, 0x1a, 0x09, 0x48, 0xe4, 0x25, 0xa4, 0x3a, 0xd5, 0x8a, 0xc2, 0x24, 0x44, - 0x1f, 0x48, 0x29, 0x4e, 0x49, 0x8a, 0xec, 0x9f, 0x0f, 0x2b, 0x8a, 0x53, 0xdb, 0x97, 0xa7, 0x5a, - 0x5b, 0xb5, 0x29, 0x4a, 0x71, 0x4a, 0x42, 0xa7, 0x24, 0xc5, 0x89, 0x77, 0x6a, 0x63, 0xaa, 0x85, - 0xb5, 0xf0, 0x22, 0x23, 0xbc, 0xd1, 0xde, 0x64, 0xbf, 0xd8, 0x0f, 0xf6, 0x1f, 0x67, 0x38, 0xe1, - 0x6e, 0x3d, 0x1f, 0x4f, 0xf9, 0x21, 0x1d, 0xdf, 0xc5, 0x4a, 0x18, 0x91, 0x8b, 0xdb, 0x1d, 0x83, - 0x9a, 0x78, 0x87, 0x86, 0xd3, 0x0a, 0x1b, 0x7e, 0x65, 0x37, 0x0f, 0xeb, 0x5d, 0x29, 0x56, 0xd3, - 0xab, 0xd4, 0xfd, 0x80, 0x44, 0xbb, 0xe9, 0xd4, 0x9b, 0x24, 0xf1, 0xf2, 0x7a, 0x5d, 0xec, 0xd6, - 0x2b, 0x6a, 0x07, 0x89, 0xdf, 0x24, 0x1d, 0x1d, 0xfe, 0xe2, 0xdd, 0x3a, 0xc4, 0x95, 0x3a, 0x69, - 0x7a, 0x1d, 0xfd, 0x2e, 0x77, 0xeb, 0xd7, 0x4e, 0xfc, 0xc6, 0x45, 0x3f, 0x48, 0xe2, 0x24, 0xca, - 0x76, 0x72, 0xaf, 0x40, 0xdf, 0x74, 0x33, 0x6c, 0x07, 0x09, 0x7a, 0x2f, 0x14, 0xb7, 0xbd, 0x46, - 0x9b, 0x94, 0x9c, 0xc7, 0x9d, 0xa7, 0x07, 0x67, 0x9e, 0xfc, 0xfe, 0xde, 0xe4, 0x43, 0xfb, 0x7b, - 0x93, 0xc5, 0x1b, 0x14, 0x78, 0x67, 0x6f, 0xf2, 0x0c, 0x09, 0x2a, 0x61, 0xd5, 0x0f, 0x6a, 0x17, - 0x5f, 0x8d, 0xc3, 0x60, 0xea, 0x5a, 0xbb, 0xb9, 0x41, 0x22, 0xcc, 0xfb, 0xb8, 0x7f, 0x50, 0x80, - 0xb1, 0xe9, 0xa8, 0x52, 0xf7, 0xb7, 0x49, 0x39, 0xa1, 0xf4, 0x6b, 0xbb, 0xa8, 0x0e, 0x3d, 0x89, - 0x17, 0x31, 0x72, 0x43, 0x97, 0x56, 0xa6, 0xee, 0xf7, 0xb9, 0x4f, 0xad, 0x7b, 0x91, 0xa4, 0x3d, - 0xd3, 0xbf, 0xbf, 0x37, 0xd9, 0xb3, 0xee, 0x45, 0x98, 0xb2, 0x40, 0x0d, 0xe8, 0x0d, 0xc2, 0x80, - 0x94, 0x0a, 0x8c, 0xd5, 0xb5, 0xfb, 0x67, 0x75, 0x2d, 0x0c, 0xd4, 0x3c, 0x66, 0x06, 0xf6, 0xf7, - 0x26, 0x7b, 0x29, 0x04, 0x33, 0x2e, 0x74, 0x5e, 0xaf, 0xf9, 0xad, 0x52, 0x8f, 0xad, 0x79, 0xbd, - 0xec, 0xb7, 0xcc, 0x79, 0xbd, 0xec, 0xb7, 0x30, 0x65, 0xe1, 0x7e, 0xbe, 0x00, 0x83, 0xd3, 0x51, - 0xad, 0xdd, 0x24, 0x41, 0x12, 0xa3, 0x8f, 0x03, 0xb4, 0xbc, 0xc8, 0x6b, 0x92, 0x84, 0x44, 0x71, - 0xc9, 0x79, 0xbc, 0xe7, 0xe9, 0xa1, 0x4b, 0x4b, 0xf7, 0xcf, 0x7e, 0x4d, 0xd2, 0x9c, 0x41, 0xe2, - 0x91, 0x83, 0x02, 0xc5, 0x58, 0x63, 0x89, 0x5e, 0x87, 0x41, 0x2f, 0x4a, 0xfc, 0x4d, 0xaf, 0x92, - 0xc4, 0xa5, 0x02, 0xe3, 0xff, 0xc2, 0xfd, 0xf3, 0x9f, 0x16, 0x24, 0x67, 0x4e, 0x09, 0xf6, 0x83, - 0x12, 0x12, 0xe3, 0x94, 0x9f, 0xfb, 0xdb, 0xbd, 0x30, 0x34, 0x1d, 0x25, 0x0b, 0xb3, 0xe5, 0xc4, - 0x4b, 0xda, 0x31, 0xfa, 0x3d, 0x07, 0x4e, 0xc7, 0x7c, 0xd9, 0x7c, 0x12, 0xaf, 0x45, 0x61, 0x85, - 0xc4, 0x31, 0xa9, 0x8a, 0x75, 0xd9, 0xb4, 0x32, 0x2e, 0xc9, 0x6c, 0xaa, 0xdc, 0xc9, 0xe8, 0x4a, - 0x90, 0x44, 0xbb, 0x33, 0xcf, 0x89, 0x31, 0x9f, 0xce, 0xc1, 0xf8, 0xe4, 0x5b, 0x93, 0x48, 0x4e, - 0x85, 0x52, 0xe2, 0x8f, 0x18, 0xe7, 0x8d, 0x1a, 0x7d, 0xcd, 0x81, 0xe1, 0x56, 0x58, 0x8d, 0x31, - 0xa9, 0x84, 0xed, 0x16, 0xa9, 0x8a, 0xe5, 0xfd, 0xb0, 0xdd, 0x69, 0xac, 0x69, 0x1c, 0xf8, 0xf8, - 0xcf, 0x88, 0xf1, 0x0f, 0xeb, 0x4d, 0xd8, 0x18, 0x0a, 0x7a, 0x1e, 0x86, 0x83, 0x30, 0x29, 0xb7, - 0x48, 0xc5, 0xdf, 0xf4, 0x49, 0x95, 0x6d, 0xfc, 0x81, 0xb4, 0xe7, 0x35, 0xad, 0x0d, 0x1b, 0x98, - 0x13, 0xf3, 0x50, 0xea, 0xb6, 0x72, 0x68, 0x1c, 0x7a, 0xb6, 0xc8, 0x2e, 0x17, 0x36, 0x98, 0xfe, - 0x8b, 0xce, 0x48, 0x01, 0x44, 0x5f, 0xe3, 0x01, 0x21, 0x59, 0xde, 0x53, 0x78, 0xde, 0x99, 0x78, - 0x3f, 0x9c, 0xea, 0x18, 0xfa, 0x51, 0x08, 0xb8, 0x3f, 0xe8, 0x83, 0x01, 0xf9, 0x28, 0xd0, 0xe3, - 0xd0, 0x1b, 0x78, 0x4d, 0x29, 0xe7, 0x86, 0xc5, 0x3c, 0x7a, 0xaf, 0x79, 0x4d, 0xfa, 0x86, 0x7b, - 0x4d, 0x42, 0x31, 0x5a, 0x5e, 0x52, 0x67, 0x74, 0x34, 0x8c, 0x35, 0x2f, 0xa9, 0x63, 0xd6, 0x82, - 0x1e, 0x85, 0xde, 0x66, 0x58, 0x25, 0x6c, 0x2d, 0x8a, 0x5c, 0x42, 0xac, 0x84, 0x55, 0x82, 0x19, - 0x94, 0xf6, 0xdf, 0x8c, 0xc2, 0x66, 0xa9, 0xd7, 0xec, 0x3f, 0x1f, 0x85, 0x4d, 0xcc, 0x5a, 0xd0, - 0x57, 0x1d, 0x18, 0x97, 0x7b, 0x7b, 0x39, 0xac, 0x78, 0x89, 0x1f, 0x06, 0xa5, 0x22, 0x93, 0x28, - 0xd8, 0xde, 0x2b, 0x25, 0x29, 0xcf, 0x94, 0xc4, 0x10, 0xc6, 0xb3, 0x2d, 0xb8, 0x63, 0x14, 0xe8, - 0x12, 0x40, 0xad, 0x11, 0x6e, 0x78, 0x0d, 0xba, 0x20, 0xa5, 0x3e, 0x36, 0x05, 0x25, 0x19, 0x16, - 0x54, 0x0b, 0xd6, 0xb0, 0xd0, 0x2d, 0xe8, 0xf7, 0xb8, 0xf4, 0x2f, 0xf5, 0xb3, 0x49, 0xbc, 0x68, - 0x63, 0x12, 0xc6, 0x71, 0x32, 0x33, 0xb4, 0xbf, 0x37, 0xd9, 0x2f, 0x80, 0x58, 0xb2, 0x43, 0xcf, - 0xc2, 0x40, 0xd8, 0xa2, 0xe3, 0xf6, 0x1a, 0xa5, 0x01, 0xb6, 0x31, 0xc7, 0xc5, 0x58, 0x07, 0x56, - 0x05, 0x1c, 0x2b, 0x0c, 0xf4, 0x0c, 0xf4, 0xc7, 0xed, 0x0d, 0xfa, 0x1c, 0x4b, 0x83, 0x6c, 0x62, - 0x63, 0x02, 0xb9, 0xbf, 0xcc, 0xc1, 0x58, 0xb6, 0xa3, 0x77, 0xc3, 0x50, 0x44, 0x2a, 0xed, 0x28, - 0x26, 0xf4, 0xc1, 0x96, 0x80, 0xd1, 0x3e, 0x2d, 0xd0, 0x87, 0x70, 0xda, 0x84, 0x75, 0x3c, 0xf4, - 0x3e, 0x18, 0xa5, 0x0f, 0xf8, 0xca, 0xad, 0x56, 0x44, 0xe2, 0x98, 0x3e, 0xd5, 0x21, 0xc6, 0xe8, - 0x9c, 0xe8, 0x39, 0x3a, 0x6f, 0xb4, 0xe2, 0x0c, 0x36, 0xba, 0x0d, 0xe0, 0x29, 0x99, 0x51, 0x1a, - 0x66, 0x8b, 0xb9, 0x6c, 0x6f, 0x47, 0x2c, 0xcc, 0xce, 0x8c, 0xd2, 0xe7, 0x98, 0xfe, 0xc6, 0x1a, - 0x3f, 0xba, 0x3e, 0x55, 0xd2, 0x20, 0x09, 0xa9, 0x96, 0x46, 0xd8, 0x84, 0xd5, 0xfa, 0xcc, 0x71, - 0x30, 0x96, 0xed, 0xee, 0xdf, 0x29, 0x80, 0x46, 0x05, 0xcd, 0xc0, 0x80, 0x90, 0x6b, 0xe2, 0x95, - 0x9c, 0x79, 0x4a, 0x3e, 0x07, 0xf9, 0x04, 0xef, 0xec, 0xe5, 0xca, 0x43, 0xd5, 0x0f, 0xbd, 0x01, - 0x43, 0xad, 0xb0, 0xba, 0x42, 0x12, 0xaf, 0xea, 0x25, 0x9e, 0x38, 0xcd, 0x2d, 0x9c, 0x30, 0x92, - 0xe2, 0xcc, 0x18, 0x7d, 0x74, 0x6b, 0x29, 0x0b, 0xac, 0xf3, 0x43, 0x2f, 0x00, 0x8a, 0x49, 0xb4, - 0xed, 0x57, 0xc8, 0x74, 0xa5, 0x42, 0x55, 0x22, 0xf6, 0x02, 0xf4, 0xb0, 0xc9, 0x4c, 0x88, 0xc9, - 0xa0, 0x72, 0x07, 0x06, 0xce, 0xe9, 0xe5, 0xbe, 0x59, 0x80, 0x51, 0x6d, 0xae, 0x2d, 0x52, 0x41, - 0xdf, 0x71, 0x60, 0x4c, 0x1d, 0x67, 0x33, 0xbb, 0xd7, 0xe8, 0xae, 0xe2, 0x87, 0x15, 0xb1, 0xf9, - 0x7c, 0x29, 0x2f, 0xf5, 0x53, 0xf0, 0xe1, 0xb2, 0xfe, 0xbc, 0x98, 0xc3, 0x58, 0xa6, 0x15, 0x67, - 0x87, 0x35, 0xf1, 0x15, 0x07, 0xce, 0xe4, 0x91, 0xc8, 0x91, 0xb9, 0x75, 0x5d, 0xe6, 0x5a, 0x15, - 0x5e, 0x94, 0x2b, 0x9d, 0x8c, 0x2e, 0xc7, 0xff, 0x5f, 0x01, 0xc6, 0xf5, 0x2d, 0xc4, 0x34, 0x81, - 0x7f, 0xe1, 0xc0, 0x59, 0x39, 0x03, 0x4c, 0xe2, 0x76, 0x23, 0xb3, 0xbc, 0x4d, 0xab, 0xcb, 0xcb, - 0x4f, 0xd2, 0xe9, 0x3c, 0x7e, 0x7c, 0x99, 0x1f, 0x13, 0xcb, 0x7c, 0x36, 0x17, 0x07, 0xe7, 0x0f, - 0x75, 0xe2, 0x5b, 0x0e, 0x4c, 0x74, 0x27, 0x9a, 0xb3, 0xf0, 0x2d, 0x73, 0xe1, 0x5f, 0xb6, 0x37, - 0x49, 0xce, 0x9e, 0x2d, 0x3f, 0x9b, 0xac, 0xfe, 0x00, 0x7e, 0x73, 0x00, 0x3a, 0xce, 0x10, 0xf4, - 0x1c, 0x0c, 0x09, 0x71, 0xbc, 0x1c, 0xd6, 0x62, 0x36, 0xc8, 0x01, 0xfe, 0xae, 0x4d, 0xa7, 0x60, - 0xac, 0xe3, 0xa0, 0x2a, 0x14, 0xe2, 0xcb, 0x62, 0xe8, 0x16, 0xc4, 0x5b, 0xf9, 0xb2, 0xd2, 0x22, - 0xfb, 0xf6, 0xf7, 0x26, 0x0b, 0xe5, 0xcb, 0xb8, 0x10, 0x5f, 0xa6, 0x9a, 0x7a, 0xcd, 0x4f, 0xec, - 0x69, 0xea, 0x0b, 0x7e, 0xa2, 0xf8, 0x30, 0x4d, 0x7d, 0xc1, 0x4f, 0x30, 0x65, 0x41, 0x2d, 0x90, - 0x7a, 0x92, 0xb4, 0xd8, 0x89, 0x6f, 0xc5, 0x02, 0xb9, 0xba, 0xbe, 0xbe, 0xa6, 0x78, 0x31, 0xfd, - 0x82, 0x42, 0x30, 0xe3, 0x82, 0x3e, 0xe7, 0xd0, 0x15, 0xe7, 0x8d, 0x61, 0xb4, 0x2b, 0x14, 0x87, - 0xeb, 0xf6, 0xb6, 0x40, 0x18, 0xed, 0x2a, 0xe6, 0xe2, 0x41, 0xaa, 0x06, 0xac, 0xb3, 0x66, 0x13, - 0xaf, 0x6e, 0xc6, 0x4c, 0x4f, 0xb0, 0x33, 0xf1, 0xb9, 0xf9, 0x72, 0x66, 0xe2, 0x73, 0xf3, 0x65, - 0xcc, 0xb8, 0xd0, 0x07, 0x1a, 0x79, 0x3b, 0x42, 0xc7, 0xb0, 0xf0, 0x40, 0xb1, 0xb7, 0x63, 0x3e, - 0x50, 0xec, 0xed, 0x60, 0xca, 0x82, 0x72, 0x0a, 0xe3, 0x98, 0xa9, 0x14, 0x56, 0x38, 0xad, 0x96, - 0xcb, 0x26, 0xa7, 0xd5, 0x72, 0x19, 0x53, 0x16, 0x6c, 0x93, 0x56, 0x62, 0xa6, 0x8f, 0xd8, 0xd9, - 0xa4, 0xb3, 0x19, 0x4e, 0x0b, 0xb3, 0x65, 0x4c, 0x59, 0x50, 0x91, 0xe1, 0xbd, 0xd6, 0x8e, 0xb8, - 0x32, 0x33, 0x74, 0x69, 0xd5, 0xc2, 0x7e, 0xa1, 0xe4, 0x14, 0xb7, 0xc1, 0xfd, 0xbd, 0xc9, 0x22, - 0x03, 0x61, 0xce, 0xc8, 0xfd, 0xdd, 0x9e, 0x54, 0x5c, 0x48, 0x79, 0x8e, 0xfe, 0x36, 0x3b, 0x08, - 0x85, 0x2c, 0x10, 0xaa, 0xaf, 0x73, 0x6c, 0xaa, 0xef, 0x69, 0x7e, 0xe2, 0x19, 0xec, 0x70, 0x96, - 0x3f, 0xfa, 0x35, 0xa7, 0xd3, 0xb6, 0xf5, 0xec, 0x9f, 0x65, 0xe9, 0xc1, 0xcc, 0xcf, 0x8a, 0x03, - 0x4d, 0xde, 0x89, 0xcf, 0x39, 0xa9, 0x12, 0x11, 0x77, 0x3b, 0x07, 0x3e, 0x62, 0x9e, 0x03, 0x16, - 0x0d, 0x72, 0x5d, 0xee, 0x7f, 0xde, 0x81, 0x11, 0x09, 0xa7, 0xea, 0x71, 0x8c, 0x6e, 0xc1, 0x80, - 0x1c, 0xa9, 0x78, 0x7a, 0x36, 0x7d, 0x01, 0x4a, 0x89, 0x57, 0x83, 0x51, 0xdc, 0xdc, 0xef, 0xf4, - 0x01, 0x4a, 0xcf, 0xaa, 0x56, 0x18, 0xfb, 0x4c, 0x12, 0xdd, 0xc3, 0x29, 0x14, 0x68, 0xa7, 0xd0, - 0x0d, 0x9b, 0xa7, 0x50, 0x3a, 0x2c, 0xe3, 0x3c, 0xfa, 0xb5, 0x8c, 0xdc, 0xe6, 0x07, 0xd3, 0x87, - 0x8f, 0x45, 0x6e, 0x6b, 0x43, 0x38, 0x58, 0x82, 0x6f, 0x0b, 0x09, 0xce, 0x8f, 0xae, 0x5f, 0xb2, - 0x2b, 0xc1, 0xb5, 0x51, 0x64, 0x65, 0x79, 0xc4, 0x25, 0x2c, 0x3f, 0xbb, 0x6e, 0x5a, 0x95, 0xb0, - 0x1a, 0x57, 0x53, 0xd6, 0x46, 0x5c, 0xd6, 0xf6, 0xd9, 0xe2, 0xa9, 0xc9, 0xda, 0x2c, 0x4f, 0x25, - 0x75, 0x5f, 0x93, 0x52, 0x97, 0x9f, 0x5a, 0x2f, 0x59, 0x96, 0xba, 0x1a, 0xdf, 0x4e, 0xf9, 0xfb, - 0x51, 0x38, 0xdb, 0x89, 0x87, 0xc9, 0x26, 0xba, 0x08, 0x83, 0x95, 0x30, 0xd8, 0xf4, 0x6b, 0x2b, - 0x5e, 0x4b, 0xd8, 0x6b, 0x4a, 0x16, 0xcd, 0xca, 0x06, 0x9c, 0xe2, 0xa0, 0xc7, 0xb8, 0xe0, 0xe1, - 0x1e, 0x91, 0x21, 0x81, 0xda, 0xb3, 0x44, 0x76, 0x99, 0x14, 0x7a, 0xcf, 0xc0, 0x57, 0xbf, 0x31, - 0xf9, 0xd0, 0x27, 0xfe, 0xfd, 0xe3, 0x0f, 0xb9, 0xbf, 0xdf, 0x03, 0x8f, 0xe4, 0xf2, 0x14, 0xda, - 0xfa, 0x6f, 0x1a, 0xda, 0xba, 0xd6, 0x2e, 0xa4, 0xc8, 0x4d, 0x9b, 0x8a, 0xac, 0x46, 0x3e, 0x4f, - 0x2f, 0xd7, 0x9a, 0x71, 0xfe, 0xa0, 0xe8, 0x42, 0x05, 0x5e, 0x93, 0xc4, 0x2d, 0xaf, 0x42, 0xc4, - 0xec, 0xd5, 0x42, 0x5d, 0x93, 0x0d, 0x38, 0xc5, 0xe1, 0x26, 0xf4, 0xa6, 0xd7, 0x6e, 0x24, 0xc2, - 0x51, 0xa6, 0x99, 0xd0, 0x0c, 0x8c, 0x65, 0x3b, 0xfa, 0xbb, 0x0e, 0xa0, 0x4e, 0xae, 0xe2, 0x45, - 0x5c, 0x3f, 0x8e, 0x75, 0x98, 0x39, 0xb7, 0xaf, 0x19, 0xe1, 0xda, 0x4c, 0x73, 0xc6, 0xa1, 0x3d, - 0xd3, 0x8f, 0xa5, 0xe7, 0x10, 0x37, 0x0e, 0x0e, 0xe1, 0x43, 0x63, 0xae, 0x96, 0x4a, 0x85, 0xc4, - 0x31, 0x77, 0xc7, 0xe9, 0xae, 0x16, 0x06, 0xc6, 0xb2, 0x1d, 0x4d, 0x42, 0x91, 0x44, 0x51, 0x18, - 0x09, 0x5b, 0x9b, 0x6d, 0xe3, 0x2b, 0x14, 0x80, 0x39, 0xdc, 0xfd, 0x49, 0x01, 0x4a, 0xdd, 0xac, - 0x13, 0xf4, 0x5b, 0x9a, 0x5d, 0x2d, 0x2c, 0x27, 0x61, 0xf8, 0x85, 0xc7, 0x67, 0x13, 0x65, 0x0d, - 0xc0, 0x2e, 0x16, 0xb6, 0x68, 0xc5, 0xd9, 0x01, 0x4e, 0x7c, 0x49, 0xb3, 0xb0, 0x75, 0x12, 0x39, - 0x07, 0xfc, 0xa6, 0x79, 0xc0, 0xaf, 0xd9, 0x9e, 0x94, 0x7e, 0xcc, 0xff, 0x61, 0x11, 0x4e, 0xcb, - 0xd6, 0x32, 0xa1, 0x47, 0xe5, 0x8b, 0x6d, 0x12, 0xed, 0xa2, 0x1f, 0x3a, 0x70, 0xc6, 0xcb, 0xba, - 0x6e, 0x7c, 0x72, 0x0c, 0x0b, 0xad, 0x71, 0x9d, 0x9a, 0xce, 0xe1, 0xc8, 0x17, 0xfa, 0x92, 0x58, - 0xe8, 0x33, 0x79, 0x28, 0x5d, 0xfc, 0xee, 0xb9, 0x13, 0x40, 0xcf, 0xc3, 0xb0, 0x84, 0x33, 0x77, - 0x0f, 0x7f, 0xc5, 0x95, 0x73, 0x7b, 0x5a, 0x6b, 0xc3, 0x06, 0x26, 0xed, 0x99, 0x90, 0x66, 0xab, - 0xe1, 0x25, 0x44, 0x73, 0x14, 0xa9, 0x9e, 0xeb, 0x5a, 0x1b, 0x36, 0x30, 0xd1, 0x53, 0xd0, 0x17, - 0x84, 0x55, 0xb2, 0x58, 0x15, 0x0e, 0xe2, 0x51, 0xd1, 0xa7, 0xef, 0x1a, 0x83, 0x62, 0xd1, 0x8a, - 0x9e, 0x4c, 0xbd, 0x71, 0x45, 0xf6, 0x0a, 0x0d, 0xe5, 0x79, 0xe2, 0xd0, 0xdf, 0x77, 0x60, 0x90, - 0xf6, 0x58, 0xdf, 0x6d, 0x11, 0x7a, 0xb6, 0xd1, 0x27, 0x52, 0x3d, 0x9e, 0x27, 0x72, 0x4d, 0xb2, - 0x31, 0x5d, 0x1d, 0x83, 0x0a, 0xfe, 0xc9, 0xb7, 0x26, 0x07, 0xe4, 0x0f, 0x9c, 0x8e, 0x6a, 0x62, - 0x01, 0x1e, 0xee, 0xfa, 0x34, 0x8f, 0x14, 0x0a, 0xf8, 0x2b, 0x30, 0x6a, 0x0e, 0xe2, 0x48, 0x71, - 0x80, 0x7f, 0xae, 0xbd, 0x76, 0x7c, 0x5e, 0x42, 0x9e, 0x3d, 0x30, 0x6d, 0x56, 0x6d, 0x86, 0x39, - 0xb1, 0xf5, 0xcc, 0xcd, 0x30, 0x27, 0x36, 0xc3, 0x9c, 0xfb, 0x7b, 0x4e, 0xfa, 0x6a, 0x6a, 0x6a, - 0x1e, 0x3d, 0x98, 0xdb, 0x51, 0x43, 0x08, 0x62, 0x75, 0x30, 0x5f, 0xc7, 0xcb, 0x98, 0xc2, 0xd1, - 0x97, 0x34, 0xe9, 0x48, 0xbb, 0xb5, 0x45, 0x58, 0xc3, 0x92, 0x8b, 0xde, 0x20, 0xdc, 0x29, 0xff, - 0x44, 0x03, 0xce, 0x0e, 0xc1, 0xfd, 0xb1, 0x03, 0x8f, 0x1d, 0xa8, 0xb4, 0xe6, 0x0e, 0xdc, 0x79, - 0xe0, 0x03, 0xa7, 0xc7, 0x5a, 0x44, 0x5a, 0xe1, 0x75, 0xbc, 0x2c, 0x9e, 0x97, 0x3a, 0xd6, 0x30, - 0x07, 0x63, 0xd9, 0xee, 0xfe, 0xd0, 0x81, 0x2c, 0x3d, 0xe4, 0xc1, 0x68, 0x3b, 0x26, 0x11, 0x3d, - 0x21, 0xcb, 0xa4, 0x12, 0x11, 0xb9, 0xdb, 0x9e, 0x9c, 0xe2, 0xc1, 0x7b, 0x3a, 0xe0, 0xa9, 0x4a, - 0x18, 0x91, 0xa9, 0xed, 0xe7, 0xa6, 0x38, 0xc6, 0x12, 0xd9, 0x2d, 0x93, 0x06, 0xa1, 0x34, 0x66, - 0xd0, 0xfe, 0xde, 0xe4, 0xe8, 0x75, 0x83, 0x00, 0xce, 0x10, 0xa4, 0x2c, 0x5a, 0x5e, 0x1c, 0xef, - 0x84, 0x51, 0x55, 0xb0, 0x28, 0x1c, 0x99, 0xc5, 0x9a, 0x41, 0x00, 0x67, 0x08, 0xba, 0x6f, 0x52, - 0x6b, 0x50, 0x57, 0x42, 0xd1, 0x37, 0xa8, 0x2a, 0x43, 0x21, 0x33, 0x8d, 0x70, 0x63, 0x36, 0x0c, - 0x12, 0xcf, 0x0f, 0x88, 0x8c, 0xfd, 0xaf, 0x5b, 0x52, 0x79, 0x0d, 0xda, 0xa9, 0x4b, 0xbe, 0xb3, - 0x0d, 0xe7, 0x8c, 0x85, 0xaa, 0x2c, 0x1b, 0x8d, 0x70, 0x23, 0x1b, 0xd4, 0xa3, 0x48, 0x98, 0xb5, - 0xb8, 0x3f, 0x73, 0xe0, 0x7c, 0x17, 0xdd, 0x1a, 0x7d, 0xc5, 0x81, 0x91, 0x8d, 0xb7, 0xc5, 0xdc, - 0xcc, 0x61, 0xa0, 0xf7, 0xc1, 0x28, 0x05, 0xd0, 0x83, 0x65, 0x3e, 0x8c, 0x9a, 0x5e, 0x22, 0x26, - 0xa8, 0x02, 0x4e, 0x33, 0x46, 0x2b, 0xce, 0x60, 0xbb, 0xbf, 0x5e, 0x80, 0x1c, 0x2e, 0xe8, 0x59, - 0x18, 0x20, 0x41, 0xb5, 0x15, 0xfa, 0x41, 0x22, 0x64, 0x8b, 0x12, 0x62, 0x57, 0x04, 0x1c, 0x2b, - 0x0c, 0x61, 0x4e, 0x88, 0x85, 0x29, 0x74, 0x98, 0x13, 0x62, 0xe4, 0x29, 0x0e, 0xaa, 0xc1, 0xb8, - 0xc7, 0xc3, 0x25, 0x6c, 0xef, 0xb1, 0x6d, 0xda, 0x73, 0x94, 0x6d, 0x7a, 0x86, 0x45, 0x33, 0x33, - 0x24, 0x70, 0x07, 0x51, 0xf4, 0x6e, 0x18, 0x6a, 0xc7, 0xa4, 0x3c, 0xb7, 0x34, 0x1b, 0x91, 0x2a, - 0x37, 0x72, 0xb5, 0x30, 0xde, 0xf5, 0xb4, 0x09, 0xeb, 0x78, 0xee, 0xbf, 0x74, 0xa0, 0x7f, 0xc6, - 0xab, 0x6c, 0x85, 0x9b, 0x9b, 0x74, 0x29, 0xaa, 0xed, 0x28, 0xf5, 0x53, 0x69, 0x4b, 0x31, 0x27, - 0xe0, 0x58, 0x61, 0xa0, 0x75, 0xe8, 0xe3, 0x2f, 0xbc, 0x78, 0xed, 0x7e, 0x51, 0x9b, 0x8f, 0x4a, - 0xcb, 0x61, 0xdb, 0xa1, 0x9d, 0xf8, 0x8d, 0x29, 0x9e, 0x96, 0x33, 0xb5, 0x18, 0x24, 0xab, 0x51, - 0x39, 0x89, 0xfc, 0xa0, 0x36, 0x03, 0x54, 0xfa, 0xcf, 0x33, 0x1a, 0x58, 0xd0, 0xa2, 0xd3, 0x68, - 0x7a, 0xb7, 0x24, 0x3b, 0xa1, 0x6b, 0xa8, 0x69, 0xac, 0xa4, 0x4d, 0x58, 0xc7, 0x73, 0x7f, 0xdf, - 0x81, 0xc1, 0x19, 0x2f, 0xf6, 0x2b, 0x7f, 0x86, 0x84, 0xcf, 0x87, 0xa0, 0x38, 0xeb, 0x55, 0xea, - 0x04, 0x5d, 0xcf, 0xda, 0xb0, 0x43, 0x97, 0x9e, 0xce, 0x63, 0xa3, 0xec, 0x59, 0x9d, 0xd3, 0x48, - 0x37, 0x4b, 0xd7, 0x7d, 0xcb, 0x81, 0xd1, 0xd9, 0x86, 0x4f, 0x82, 0x64, 0x96, 0x44, 0x09, 0x5b, - 0xb8, 0x1a, 0x8c, 0x57, 0x14, 0xe4, 0x5e, 0x96, 0x8e, 0xed, 0xd6, 0xd9, 0x0c, 0x09, 0xdc, 0x41, - 0x14, 0x55, 0x61, 0x8c, 0xc3, 0xd2, 0xb7, 0xe2, 0x48, 0xeb, 0xc7, 0x9c, 0x9d, 0xb3, 0x26, 0x05, - 0x9c, 0x25, 0xe9, 0xfe, 0xd4, 0x81, 0xf3, 0xb3, 0x8d, 0x76, 0x9c, 0x90, 0xe8, 0xa6, 0x90, 0x46, - 0x52, 0x5b, 0x45, 0x1f, 0x81, 0x81, 0xa6, 0x0c, 0xc0, 0x3a, 0x77, 0xd9, 0xc0, 0x4c, 0x9e, 0x51, - 0x6c, 0x3a, 0x98, 0xd5, 0x8d, 0x57, 0x49, 0x25, 0x59, 0x21, 0x89, 0x97, 0x66, 0x0b, 0xa4, 0x30, - 0xac, 0xa8, 0xa2, 0x16, 0xf4, 0xc6, 0x2d, 0x52, 0xb1, 0x97, 0xac, 0x25, 0xe7, 0x50, 0x6e, 0x91, - 0x4a, 0x2a, 0xd7, 0x59, 0xe8, 0x90, 0x71, 0x72, 0xff, 0xb7, 0x03, 0x8f, 0x74, 0x99, 0xef, 0xb2, - 0x1f, 0x27, 0xe8, 0x95, 0x8e, 0x39, 0x4f, 0x1d, 0x6e, 0xce, 0xb4, 0x37, 0x9b, 0xb1, 0x12, 0x08, - 0x12, 0xa2, 0xcd, 0xf7, 0x63, 0x50, 0xf4, 0x13, 0xd2, 0x94, 0x5e, 0x65, 0x0b, 0xfe, 0x9f, 0x2e, - 0x73, 0x99, 0x19, 0x91, 0x29, 0x7b, 0x8b, 0x94, 0x1f, 0xe6, 0x6c, 0xdd, 0x2d, 0xe8, 0x9b, 0x0d, - 0x1b, 0xed, 0x66, 0x70, 0xb8, 0xc4, 0x97, 0x64, 0xb7, 0x45, 0xb2, 0x67, 0x24, 0xd3, 0xe6, 0x59, - 0x8b, 0xf4, 0x03, 0xf5, 0xe4, 0xfb, 0x81, 0xdc, 0x7f, 0xe5, 0x00, 0x7d, 0xab, 0xaa, 0xbe, 0x08, - 0x0c, 0x72, 0x72, 0x9c, 0xe1, 0x63, 0x3a, 0xb9, 0x3b, 0x7b, 0x93, 0x23, 0x0a, 0x51, 0xa3, 0xff, - 0x21, 0xe8, 0x8b, 0x99, 0x85, 0x2d, 0xc6, 0x30, 0x2f, 0xd5, 0x61, 0x6e, 0x77, 0xdf, 0xd9, 0x9b, - 0x3c, 0x54, 0x16, 0xe6, 0x94, 0xa2, 0x2d, 0x62, 0x98, 0x82, 0x2a, 0xd5, 0xdf, 0x9a, 0x24, 0x8e, - 0xbd, 0x9a, 0x34, 0xd8, 0x94, 0xfe, 0xb6, 0xc2, 0xc1, 0x58, 0xb6, 0xbb, 0x5f, 0x76, 0x60, 0x44, - 0x1d, 0x5e, 0x54, 0x1b, 0x47, 0xd7, 0xf4, 0x63, 0x8e, 0xef, 0x94, 0xc7, 0xba, 0x48, 0x1c, 0x71, - 0x90, 0x1f, 0x7c, 0x0a, 0xbe, 0x0b, 0x86, 0xab, 0xa4, 0x45, 0x82, 0x2a, 0x09, 0x2a, 0xd4, 0x9a, - 0xa6, 0x3b, 0x64, 0x70, 0x66, 0x9c, 0x9a, 0x8f, 0x73, 0x1a, 0x1c, 0x1b, 0x58, 0xee, 0x37, 0x1d, - 0x78, 0x58, 0x91, 0x2b, 0x93, 0x04, 0x93, 0x24, 0xda, 0x55, 0x59, 0x97, 0x47, 0x3b, 0xad, 0x6e, - 0x52, 0x75, 0x36, 0x89, 0x38, 0xf3, 0x7b, 0x3b, 0xae, 0x86, 0xb8, 0xf2, 0xcb, 0x88, 0x60, 0x49, - 0xcd, 0xfd, 0xd5, 0x1e, 0x38, 0xa3, 0x0f, 0x52, 0x09, 0x98, 0x5f, 0x76, 0x00, 0xd4, 0x0a, 0xd0, - 0x03, 0xb9, 0xc7, 0x4e, 0x28, 0xca, 0x78, 0x52, 0xa9, 0x08, 0x52, 0xe0, 0x18, 0x6b, 0x6c, 0xd1, - 0x4b, 0x30, 0xbc, 0x4d, 0x5f, 0x0a, 0xb2, 0x42, 0xd5, 0x85, 0xb8, 0xd4, 0xc3, 0x86, 0x31, 0x99, - 0xf7, 0x30, 0x6f, 0xa4, 0x78, 0xa9, 0x75, 0xaf, 0x01, 0x63, 0x6c, 0x90, 0xa2, 0x86, 0xcb, 0x48, - 0xa4, 0x3f, 0x12, 0xe1, 0xe2, 0xfe, 0xa0, 0xc5, 0x39, 0x66, 0x9f, 0xfa, 0xcc, 0xa9, 0xfd, 0xbd, - 0xc9, 0x11, 0x03, 0x84, 0xcd, 0x41, 0xb8, 0x2f, 0x01, 0x5b, 0x0b, 0x3f, 0x68, 0x93, 0xd5, 0x00, - 0x3d, 0x21, 0x5d, 0x6e, 0x3c, 0x4c, 0xa2, 0x24, 0x87, 0xee, 0x76, 0xa3, 0xa6, 0xe9, 0xa6, 0xe7, - 0x37, 0x58, 0x36, 0x22, 0xc5, 0x52, 0xa6, 0xe9, 0x3c, 0x83, 0x62, 0xd1, 0xea, 0x4e, 0x41, 0xff, - 0x2c, 0x9d, 0x3b, 0x89, 0x28, 0x5d, 0x3d, 0x89, 0x78, 0xc4, 0x48, 0x22, 0x96, 0xc9, 0xc2, 0xeb, - 0x70, 0x76, 0x36, 0x22, 0x5e, 0x42, 0xca, 0x97, 0x67, 0xda, 0x95, 0x2d, 0x92, 0xf0, 0x4c, 0xad, - 0x18, 0xbd, 0x17, 0x46, 0x42, 0x76, 0x64, 0x2c, 0x87, 0x95, 0x2d, 0x3f, 0xa8, 0x09, 0x0f, 0xea, - 0x59, 0x41, 0x65, 0x64, 0x55, 0x6f, 0xc4, 0x26, 0xae, 0xfb, 0x9f, 0x0a, 0x30, 0x3c, 0x1b, 0x85, - 0x81, 0x14, 0x8b, 0x27, 0x70, 0x94, 0x25, 0xc6, 0x51, 0x66, 0x21, 0x7a, 0xa9, 0x8f, 0xbf, 0xdb, - 0x71, 0x86, 0x6e, 0x2b, 0x11, 0xd9, 0x63, 0xcb, 0x04, 0x31, 0xf8, 0x32, 0xda, 0xe9, 0xc3, 0x36, - 0x05, 0xa8, 0xfb, 0x9f, 0x1d, 0x18, 0xd7, 0xd1, 0x4f, 0xe0, 0x04, 0x8d, 0xcd, 0x13, 0xf4, 0x9a, - 0xdd, 0xf9, 0x76, 0x39, 0x36, 0x3f, 0xdf, 0x67, 0xce, 0x93, 0x85, 0xae, 0xbf, 0xea, 0xc0, 0xf0, - 0x8e, 0x06, 0x10, 0x93, 0xb5, 0xad, 0xc4, 0xbc, 0x43, 0x8a, 0x19, 0x1d, 0x7a, 0x27, 0xf3, 0x1b, - 0x1b, 0x23, 0xa1, 0x72, 0x3f, 0xae, 0xd4, 0x49, 0xb5, 0xdd, 0x90, 0xc7, 0xb7, 0x5a, 0xd2, 0xb2, - 0x80, 0x63, 0x85, 0x81, 0x5e, 0x81, 0x53, 0x95, 0x30, 0xa8, 0xb4, 0xa3, 0x88, 0x04, 0x95, 0xdd, - 0x35, 0x76, 0xe5, 0x41, 0x1c, 0x88, 0x53, 0xa2, 0xdb, 0xa9, 0xd9, 0x2c, 0xc2, 0x9d, 0x3c, 0x20, - 0xee, 0x24, 0xc4, 0x7d, 0xff, 0x31, 0x3d, 0xb2, 0x84, 0xc1, 0xa5, 0xf9, 0xfe, 0x19, 0x18, 0xcb, - 0x76, 0x74, 0x1d, 0xce, 0xc7, 0x89, 0x17, 0x25, 0x7e, 0x50, 0x9b, 0x23, 0x5e, 0xb5, 0xe1, 0x07, - 0xd4, 0x94, 0x08, 0x83, 0x2a, 0x8f, 0x0c, 0xf6, 0xcc, 0x3c, 0xb2, 0xbf, 0x37, 0x79, 0xbe, 0x9c, - 0x8f, 0x82, 0xbb, 0xf5, 0x45, 0x1f, 0x82, 0x09, 0x11, 0x5d, 0xd8, 0x6c, 0x37, 0x5e, 0x08, 0x37, - 0xe2, 0xab, 0x7e, 0x4c, 0xed, 0xf8, 0x65, 0xbf, 0xe9, 0x27, 0x2c, 0xfe, 0x57, 0x9c, 0xb9, 0xb0, - 0xbf, 0x37, 0x39, 0x51, 0xee, 0x8a, 0x85, 0x0f, 0xa0, 0x80, 0x30, 0x9c, 0xe3, 0xc2, 0xaf, 0x83, - 0x76, 0x3f, 0xa3, 0x3d, 0xb1, 0xbf, 0x37, 0x79, 0x6e, 0x3e, 0x17, 0x03, 0x77, 0xe9, 0x49, 0x9f, - 0x60, 0xe2, 0x37, 0xc9, 0x6b, 0x61, 0x40, 0x58, 0xde, 0x89, 0xf6, 0x04, 0xd7, 0x05, 0x1c, 0x2b, - 0x0c, 0xf4, 0x6a, 0xba, 0x13, 0xe9, 0xeb, 0x22, 0xf2, 0x47, 0x8e, 0x2e, 0xe1, 0x98, 0x69, 0x72, - 0x53, 0xa3, 0xc4, 0x12, 0x23, 0x0d, 0xda, 0xee, 0x1f, 0x14, 0x00, 0x75, 0x8a, 0x08, 0xb4, 0x04, - 0x7d, 0x5e, 0x25, 0xf1, 0xb7, 0x65, 0xa2, 0xdd, 0x13, 0x79, 0xc7, 0x27, 0x67, 0x85, 0xc9, 0x26, - 0xa1, 0x3b, 0x84, 0xa4, 0x72, 0x65, 0x9a, 0x75, 0xc5, 0x82, 0x04, 0x0a, 0xe1, 0x54, 0xc3, 0x8b, - 0x13, 0xb9, 0x57, 0xab, 0x74, 0xca, 0x42, 0xb0, 0xfe, 0xfc, 0xe1, 0x26, 0x45, 0x7b, 0xcc, 0x9c, - 0xa5, 0x3b, 0x77, 0x39, 0x4b, 0x08, 0x77, 0xd2, 0x46, 0x1f, 0x67, 0x7a, 0x08, 0x57, 0x12, 0xa5, - 0x02, 0xb0, 0x64, 0xe5, 0x8c, 0xe6, 0x34, 0x0d, 0x1d, 0x44, 0xb0, 0xc1, 0x1a, 0x4b, 0xf7, 0x5f, - 0x03, 0xf4, 0xcf, 0x4d, 0x2f, 0xac, 0x7b, 0xf1, 0xd6, 0x21, 0x54, 0x73, 0xba, 0x3b, 0x84, 0x0e, - 0x95, 0x7d, 0xbf, 0xa5, 0x6e, 0x85, 0x15, 0x06, 0x0a, 0xa0, 0xcf, 0x0f, 0xe8, 0x0b, 0x51, 0x1a, - 0xb5, 0xe5, 0xcd, 0x56, 0x66, 0x06, 0xf3, 0x4f, 0x2c, 0x32, 0xea, 0x58, 0x70, 0x41, 0xb7, 0x61, - 0xd0, 0x93, 0x17, 0x55, 0xc4, 0xb1, 0xb4, 0x64, 0xc3, 0x4d, 0x2b, 0x48, 0xea, 0x89, 0x32, 0x02, - 0x84, 0x53, 0x86, 0xe8, 0x13, 0x0e, 0x0c, 0xc9, 0xa9, 0x63, 0xb2, 0x29, 0x22, 0xa8, 0x2b, 0xf6, - 0xe6, 0x8c, 0xc9, 0x26, 0xcf, 0xa2, 0xd0, 0x00, 0x58, 0x67, 0xd9, 0xa1, 0xca, 0x17, 0x0f, 0xa3, - 0xca, 0xa3, 0x1d, 0x18, 0xdc, 0xf1, 0x93, 0x3a, 0x3b, 0x78, 0x44, 0xe4, 0x66, 0xfe, 0xfe, 0x47, - 0x4d, 0xc9, 0xa5, 0x2b, 0x76, 0x53, 0x32, 0xc0, 0x29, 0x2f, 0x74, 0x91, 0x33, 0x66, 0x17, 0x7d, - 0x98, 0xc8, 0x1a, 0x34, 0x3b, 0xb0, 0x06, 0x9c, 0xe2, 0xd0, 0x25, 0x1e, 0xa6, 0xbf, 0xca, 0xe4, - 0xa3, 0x6d, 0xfa, 0x1e, 0x8b, 0xcc, 0x38, 0x0b, 0xfb, 0x4a, 0x52, 0xe4, 0x8b, 0x75, 0x53, 0xe3, - 0x81, 0x0d, 0x8e, 0xf4, 0x1d, 0xd9, 0xa9, 0x93, 0x40, 0x64, 0xee, 0xab, 0x77, 0xe4, 0x66, 0x9d, - 0x04, 0x98, 0xb5, 0xa0, 0xdb, 0xdc, 0xb4, 0xe0, 0x3a, 0xae, 0xc8, 0x72, 0x5b, 0xb6, 0xa3, 0x76, - 0x73, 0x9a, 0x3c, 0x79, 0x3e, 0xfd, 0x8d, 0x35, 0x7e, 0x54, 0x5d, 0x0e, 0x83, 0x2b, 0xb7, 0xfc, - 0x44, 0xa4, 0xfc, 0x2b, 0x49, 0xb7, 0xca, 0xa0, 0x58, 0xb4, 0xf2, 0x0c, 0x01, 0xba, 0x09, 0x62, - 0x96, 0xdf, 0x3f, 0xa8, 0x67, 0x08, 0x30, 0x30, 0x96, 0xed, 0xe8, 0xef, 0x39, 0x50, 0xac, 0x87, - 0xe1, 0x56, 0x5c, 0x1a, 0x61, 0x9b, 0xc3, 0x82, 0xaa, 0x27, 0x24, 0xce, 0xd4, 0x55, 0x4a, 0xd6, - 0xbc, 0xc4, 0x54, 0x64, 0xb0, 0x3b, 0x7b, 0x93, 0xa3, 0xcb, 0xfe, 0x26, 0xa9, 0xec, 0x56, 0x1a, - 0x84, 0x41, 0x3e, 0xf9, 0x96, 0x06, 0xb9, 0xb2, 0x4d, 0x82, 0x04, 0xf3, 0x51, 0x4d, 0x7c, 0xde, - 0x01, 0x48, 0x09, 0xe5, 0x84, 0xe2, 0x88, 0x19, 0xbc, 0xb6, 0x60, 0xe7, 0x19, 0x43, 0xd3, 0x63, - 0x7b, 0xff, 0xc6, 0x81, 0x21, 0x3a, 0x39, 0x29, 0x02, 0x9f, 0x82, 0xbe, 0xc4, 0x8b, 0x6a, 0x44, - 0xfa, 0xaf, 0xd5, 0xe3, 0x58, 0x67, 0x50, 0x2c, 0x5a, 0x51, 0x00, 0xc5, 0xc4, 0x8b, 0xb7, 0xa4, - 0x76, 0xb9, 0x68, 0x6d, 0x89, 0x53, 0xc5, 0x92, 0xfe, 0x8a, 0x31, 0x67, 0x83, 0x9e, 0x86, 0x01, - 0xaa, 0x00, 0xcc, 0x7b, 0xb1, 0xcc, 0x10, 0x19, 0xa6, 0x42, 0x7c, 0x5e, 0xc0, 0xb0, 0x6a, 0x75, - 0x7f, 0xbd, 0x00, 0xbd, 0x73, 0xdc, 0xce, 0xe8, 0x8b, 0xc3, 0x76, 0x54, 0x21, 0x42, 0xdf, 0xb4, - 0xb0, 0xa7, 0x29, 0xdd, 0x32, 0xa3, 0xa9, 0x69, 0xfa, 0xec, 0x37, 0x16, 0xbc, 0xa8, 0x21, 0x3b, - 0x9a, 0x44, 0x5e, 0x10, 0x6f, 0xb2, 0x48, 0x81, 0x1f, 0x06, 0x62, 0x89, 0x2c, 0xec, 0xc2, 0x75, - 0x83, 0x6e, 0x39, 0x21, 0xad, 0x34, 0x60, 0x61, 0xb6, 0xe1, 0xcc, 0x18, 0xdc, 0xdf, 0x70, 0x00, - 0xd2, 0xd1, 0xa3, 0xcf, 0x39, 0x30, 0xe2, 0xe9, 0x99, 0x89, 0x62, 0x8d, 0x56, 0xed, 0x45, 0x09, - 0x19, 0x59, 0x6e, 0x62, 0x1b, 0x20, 0x6c, 0x32, 0x76, 0xdf, 0x0d, 0x45, 0xf6, 0x76, 0x30, 0x5d, - 0x5c, 0xb8, 0x64, 0xb3, 0x3e, 0x18, 0xe9, 0xaa, 0xc5, 0x0a, 0xc3, 0x7d, 0x05, 0x46, 0xaf, 0xdc, - 0x22, 0x95, 0x76, 0x12, 0x46, 0xdc, 0x21, 0xdd, 0xe5, 0x26, 0x8a, 0x73, 0x4f, 0x37, 0x51, 0xbe, - 0xeb, 0xc0, 0x90, 0x96, 0xa6, 0x46, 0x4f, 0xea, 0xda, 0x6c, 0x99, 0xdb, 0xdd, 0x62, 0xa9, 0x96, - 0xac, 0x24, 0xc2, 0x71, 0x92, 0xe9, 0x31, 0xa2, 0x40, 0x38, 0x65, 0x78, 0x97, 0x34, 0x32, 0xf7, - 0x77, 0x1d, 0x38, 0x9b, 0x9b, 0x53, 0xf7, 0x80, 0x87, 0x7d, 0x11, 0x06, 0xb7, 0xc8, 0xae, 0x11, - 0x5f, 0x53, 0x1d, 0x96, 0x64, 0x03, 0x4e, 0x71, 0xdc, 0xef, 0x39, 0x90, 0x52, 0xa2, 0xa2, 0x68, - 0x23, 0x1d, 0xb9, 0x26, 0x8a, 0x04, 0x27, 0xd1, 0x8a, 0x6e, 0xc3, 0x79, 0xf3, 0x09, 0xde, 0x63, - 0x18, 0x80, 0xdb, 0x4c, 0xf9, 0x94, 0x70, 0x37, 0x16, 0xee, 0x0d, 0x28, 0x2e, 0x78, 0xed, 0x1a, - 0x39, 0x94, 0x13, 0x87, 0x8a, 0xb1, 0x88, 0x78, 0x8d, 0x44, 0xaa, 0xe9, 0x42, 0x8c, 0x61, 0x01, - 0xc3, 0xaa, 0xd5, 0xfd, 0x61, 0x11, 0x86, 0xb4, 0x9b, 0x13, 0xf4, 0x1c, 0x8f, 0x48, 0x2b, 0xcc, - 0xea, 0xba, 0xf4, 0x61, 0x63, 0xd6, 0x42, 0xdf, 0x9f, 0x88, 0x6c, 0xfb, 0x31, 0x17, 0x39, 0xc6, - 0xfb, 0x83, 0x05, 0x1c, 0x2b, 0x0c, 0x34, 0x09, 0xc5, 0x2a, 0x69, 0x25, 0x75, 0x26, 0x4d, 0x7b, - 0x79, 0xfa, 0xd8, 0x1c, 0x05, 0x60, 0x0e, 0xa7, 0x08, 0x9b, 0x24, 0xa9, 0xd4, 0x99, 0xb3, 0x51, - 0xe4, 0x97, 0xcd, 0x53, 0x00, 0xe6, 0xf0, 0x9c, 0xc0, 0x58, 0xf1, 0xf8, 0x03, 0x63, 0x7d, 0x96, - 0x03, 0x63, 0xa8, 0x05, 0xa7, 0xe3, 0xb8, 0xbe, 0x16, 0xf9, 0xdb, 0x5e, 0x42, 0xd2, 0x9d, 0xd3, - 0x7f, 0x14, 0x3e, 0xe7, 0xd9, 0x5d, 0xe6, 0xf2, 0xd5, 0x2c, 0x15, 0x9c, 0x47, 0x1a, 0x95, 0xe1, - 0xac, 0x1f, 0xc4, 0xa4, 0xd2, 0x8e, 0xc8, 0x62, 0x2d, 0x08, 0x23, 0x72, 0x35, 0x8c, 0x29, 0x39, - 0x71, 0x13, 0x53, 0x65, 0x5c, 0x2e, 0xe6, 0x21, 0xe1, 0xfc, 0xbe, 0x68, 0x01, 0x4e, 0x55, 0xfd, - 0xd8, 0xdb, 0x68, 0x90, 0x72, 0x7b, 0xa3, 0x19, 0x52, 0x83, 0x8d, 0xdf, 0x8e, 0x18, 0x98, 0x79, - 0x58, 0xba, 0x26, 0xe6, 0xb2, 0x08, 0xb8, 0xb3, 0x0f, 0x7a, 0x1e, 0x86, 0x63, 0x3f, 0xa8, 0x35, - 0xc8, 0x4c, 0xe4, 0x05, 0x95, 0xba, 0xb8, 0xc2, 0xa9, 0x5c, 0xb8, 0x65, 0xad, 0x0d, 0x1b, 0x98, - 0xec, 0x7d, 0xe5, 0x7d, 0x32, 0x9a, 0x9c, 0xc0, 0x16, 0xad, 0xee, 0x8f, 0x1c, 0x18, 0xd6, 0xb3, - 0x9d, 0xa9, 0x96, 0x0c, 0xf5, 0xb9, 0xf9, 0x32, 0x97, 0xe3, 0xf6, 0x4e, 0xeb, 0xab, 0x8a, 0x66, - 0x6a, 0x55, 0xa6, 0x30, 0xac, 0xf1, 0x3c, 0xc4, 0xdd, 0xe5, 0x27, 0xa0, 0xb8, 0x19, 0x52, 0x65, - 0xa2, 0xc7, 0xf4, 0xfd, 0xce, 0x53, 0x20, 0xe6, 0x6d, 0xee, 0xff, 0x74, 0xe0, 0x5c, 0x7e, 0x22, - 0xf7, 0xdb, 0x61, 0x92, 0x97, 0x00, 0xe8, 0x54, 0x0c, 0x81, 0xac, 0x55, 0x2f, 0x90, 0x2d, 0x58, - 0xc3, 0x3a, 0xdc, 0xb4, 0xff, 0x98, 0x2a, 0xb4, 0x29, 0x9f, 0x2f, 0x38, 0x30, 0x42, 0xd9, 0x2e, - 0x45, 0x1b, 0xc6, 0x6c, 0x57, 0xed, 0xcc, 0x56, 0x91, 0x4d, 0x5d, 0xdc, 0x06, 0x18, 0x9b, 0xcc, - 0xd1, 0x2f, 0xc0, 0xa0, 0x57, 0xad, 0x46, 0x24, 0x8e, 0x55, 0xb0, 0x88, 0xc5, 0xb1, 0xa7, 0x25, - 0x10, 0xa7, 0xed, 0x54, 0x88, 0xd6, 0xab, 0x9b, 0x31, 0x95, 0x4b, 0xc2, 0xb3, 0xa7, 0x84, 0x28, - 0x65, 0x42, 0xe1, 0x58, 0x61, 0xb8, 0x7f, 0xb3, 0x17, 0x4c, 0xde, 0xa8, 0x0a, 0x63, 0x5b, 0xd1, - 0xc6, 0x2c, 0x8b, 0xb5, 0xdf, 0x4b, 0xcc, 0x9b, 0xc5, 0xa2, 0x97, 0x4c, 0x0a, 0x38, 0x4b, 0x52, - 0x70, 0x59, 0x22, 0xbb, 0x89, 0xb7, 0x71, 0xcf, 0x11, 0xef, 0x25, 0x93, 0x02, 0xce, 0x92, 0x44, - 0xef, 0x86, 0xa1, 0xad, 0x68, 0x43, 0x8a, 0xe8, 0x6c, 0xfa, 0xc4, 0x52, 0xda, 0x84, 0x75, 0x3c, - 0xba, 0x84, 0x5b, 0xd1, 0x06, 0x3d, 0xd2, 0xe4, 0x5d, 0x7e, 0xb5, 0x84, 0x4b, 0x02, 0x8e, 0x15, - 0x06, 0x6a, 0x01, 0xda, 0x92, 0xab, 0xa7, 0x32, 0x0b, 0xc4, 0x49, 0x72, 0xf8, 0xc4, 0x04, 0x96, - 0xa1, 0xbd, 0xd4, 0x41, 0x07, 0xe7, 0xd0, 0x46, 0x2f, 0xc1, 0xf9, 0xad, 0x68, 0x43, 0x1c, 0xf4, - 0x6b, 0x91, 0x1f, 0x54, 0xfc, 0x96, 0x71, 0x6f, 0x7f, 0x52, 0x0c, 0xf7, 0xfc, 0x52, 0x3e, 0x1a, - 0xee, 0xd6, 0xdf, 0xfd, 0xad, 0x5e, 0x60, 0x37, 0x0e, 0xa9, 0x2c, 0x6c, 0x92, 0xa4, 0x1e, 0x56, - 0xb3, 0xba, 0xcb, 0x0a, 0x83, 0x62, 0xd1, 0x2a, 0xf3, 0x10, 0x0b, 0x5d, 0xf2, 0x10, 0x77, 0xa0, - 0xbf, 0x4e, 0xbc, 0x2a, 0x89, 0xa4, 0xab, 0x6d, 0xd9, 0xce, 0x1d, 0xc9, 0xab, 0x8c, 0x68, 0x6a, - 0x42, 0xf3, 0xdf, 0x31, 0x96, 0xdc, 0xd0, 0x7b, 0x60, 0x94, 0x6a, 0x21, 0x61, 0x3b, 0x91, 0x7e, - 0xe5, 0x5e, 0xe6, 0x57, 0x66, 0x27, 0xea, 0xba, 0xd1, 0x82, 0x33, 0x98, 0x68, 0x0e, 0xc6, 0x85, - 0x0f, 0x58, 0xb9, 0xf0, 0xc4, 0xc2, 0xaa, 0x82, 0x0a, 0xe5, 0x4c, 0x3b, 0xee, 0xe8, 0xc1, 0x12, - 0xcf, 0xc2, 0x2a, 0x0f, 0x03, 0xea, 0x89, 0x67, 0x61, 0x75, 0x17, 0xb3, 0x16, 0xf4, 0x1a, 0x0c, - 0xd0, 0xbf, 0xf3, 0x51, 0xd8, 0x14, 0x7e, 0x95, 0x35, 0x3b, 0xab, 0x43, 0x79, 0x08, 0x2b, 0x8f, - 0x69, 0x67, 0x33, 0x82, 0x0b, 0x56, 0xfc, 0xa8, 0xad, 0x21, 0xcf, 0xe1, 0xf2, 0x96, 0xdf, 0xba, - 0x41, 0x22, 0x7f, 0x73, 0x97, 0x29, 0x0d, 0x03, 0xa9, 0xad, 0xb1, 0xd8, 0x81, 0x81, 0x73, 0x7a, - 0xb9, 0x5f, 0x28, 0xc0, 0xb0, 0x7e, 0x71, 0xf5, 0x6e, 0xc9, 0xa9, 0x71, 0xba, 0x29, 0xb8, 0x65, - 0x79, 0xd5, 0xc2, 0xb4, 0xef, 0xb6, 0x21, 0xea, 0xd0, 0xeb, 0xb5, 0x85, 0xb6, 0x68, 0xc5, 0x81, - 0xc5, 0x66, 0xdc, 0x4e, 0xea, 0xfc, 0x86, 0x13, 0x4b, 0x1b, 0x65, 0x1c, 0xdc, 0x4f, 0xf7, 0xc0, - 0x80, 0x6c, 0x44, 0x9f, 0x72, 0x00, 0xd2, 0x7c, 0x1f, 0x21, 0x4a, 0xd7, 0x6c, 0x24, 0x83, 0xe8, - 0xa9, 0x4a, 0x9a, 0xd3, 0x59, 0xc1, 0xb1, 0xc6, 0x17, 0x25, 0xd0, 0x17, 0xd2, 0xc1, 0x5d, 0xb2, - 0x77, 0xf9, 0x7a, 0x95, 0x32, 0xbe, 0xc4, 0xb8, 0xa7, 0x2e, 0x2f, 0x06, 0xc3, 0x82, 0x17, 0xb5, - 0xde, 0x36, 0x64, 0x1a, 0x9a, 0x3d, 0xf7, 0xb0, 0xca, 0x6c, 0x4b, 0x8d, 0x31, 0x05, 0xc2, 0x29, - 0x43, 0xf7, 0x39, 0x18, 0x35, 0x5f, 0x06, 0x6a, 0x11, 0x6c, 0xec, 0x26, 0x84, 0xfb, 0x0a, 0x86, - 0xb9, 0x45, 0x30, 0x43, 0x01, 0x98, 0xc3, 0xdd, 0x37, 0xa9, 0x1e, 0xa0, 0xc4, 0xcb, 0x21, 0xdc, - 0xf3, 0x4f, 0xe8, 0x8e, 0xae, 0x6e, 0x36, 0xd3, 0xc7, 0x61, 0x90, 0xfd, 0xc3, 0x5e, 0xf4, 0x1e, - 0x5b, 0x41, 0xe3, 0x74, 0x9c, 0xe2, 0x55, 0x67, 0x3a, 0xc1, 0x0d, 0xc9, 0x08, 0xa7, 0x3c, 0xdd, - 0x10, 0xc6, 0xb3, 0xd8, 0xe8, 0x83, 0x30, 0x1c, 0xcb, 0x63, 0x35, 0xbd, 0x86, 0x75, 0xc8, 0xe3, - 0x97, 0xf9, 0x6c, 0xcb, 0x5a, 0x77, 0x6c, 0x10, 0x73, 0x57, 0xa1, 0xcf, 0xea, 0x12, 0xba, 0xdf, - 0x76, 0x60, 0x90, 0x45, 0xcd, 0x6a, 0x91, 0xd7, 0x4c, 0xbb, 0xf4, 0x1c, 0xb0, 0xea, 0x31, 0xf4, - 0x73, 0xfb, 0x5a, 0x66, 0x9b, 0x58, 0x90, 0x32, 0xbc, 0x66, 0x5a, 0x2a, 0x65, 0xb8, 0x21, 0x1f, - 0x63, 0xc9, 0xc9, 0xfd, 0x4c, 0x01, 0xfa, 0x16, 0x83, 0x56, 0xfb, 0xcf, 0x7d, 0xdd, 0xae, 0x15, - 0xe8, 0x5d, 0x4c, 0x48, 0xd3, 0x2c, 0x2f, 0x37, 0x3c, 0xf3, 0xa4, 0x5e, 0x5a, 0xae, 0x64, 0x96, - 0x96, 0xc3, 0xde, 0x8e, 0x4c, 0xc6, 0x12, 0xfe, 0xdd, 0xf4, 0x2a, 0xda, 0xb3, 0x30, 0xb8, 0xec, - 0x6d, 0x90, 0xc6, 0x12, 0xd9, 0x65, 0x17, 0xc7, 0x78, 0x62, 0x80, 0x93, 0x1a, 0xf6, 0x46, 0x10, - 0x7f, 0x0e, 0x46, 0x19, 0xb6, 0x7a, 0x19, 0xa8, 0xe5, 0x40, 0xd2, 0xda, 0x3c, 0x8e, 0x69, 0x39, - 0x68, 0x75, 0x79, 0x34, 0x2c, 0x77, 0x0a, 0x86, 0x52, 0x2a, 0x87, 0xe0, 0xfa, 0xb3, 0x02, 0x8c, - 0x18, 0x6e, 0x6a, 0x23, 0x78, 0xe7, 0xdc, 0x35, 0x78, 0x67, 0x04, 0xd3, 0x0a, 0x0f, 0x3a, 0x98, - 0xd6, 0x73, 0xf2, 0xc1, 0x34, 0xf3, 0x21, 0xf5, 0x1e, 0xea, 0x21, 0x35, 0xa0, 0x77, 0xd9, 0x0f, - 0xb6, 0x0e, 0x27, 0x67, 0xe2, 0x4a, 0xd8, 0xea, 0x90, 0x33, 0x65, 0x0a, 0xc4, 0xbc, 0x4d, 0x6a, - 0x2e, 0x3d, 0xf9, 0x9a, 0x8b, 0xfb, 0x29, 0x07, 0x86, 0x57, 0xbc, 0xc0, 0xdf, 0x24, 0x71, 0xc2, - 0xf6, 0x55, 0x72, 0xac, 0x17, 0x88, 0x86, 0xbb, 0x5c, 0x85, 0xff, 0xa4, 0x03, 0xa7, 0x56, 0x48, - 0x33, 0xf4, 0x5f, 0xf3, 0xd2, 0x5c, 0x47, 0x3a, 0xf6, 0xba, 0x9f, 0x88, 0xd4, 0x2e, 0x35, 0xf6, - 0xab, 0x7e, 0x82, 0x29, 0xfc, 0x2e, 0x3e, 0x58, 0x96, 0xcb, 0x4f, 0x0d, 0x34, 0xed, 0x52, 0x5b, - 0x9a, 0xc5, 0x28, 0x1b, 0x70, 0x8a, 0xe3, 0xfe, 0xb6, 0x03, 0xfd, 0x7c, 0x10, 0x2a, 0x3d, 0xd4, - 0xe9, 0x42, 0xbb, 0x0e, 0x45, 0xd6, 0x4f, 0xec, 0xea, 0x05, 0x0b, 0xea, 0x0f, 0x25, 0xc7, 0xdf, - 0x41, 0xf6, 0x2f, 0xe6, 0x0c, 0x98, 0xd9, 0xe2, 0xdd, 0x9a, 0x56, 0x69, 0x9e, 0xa9, 0xd9, 0xc2, - 0xa0, 0x58, 0xb4, 0xba, 0x5f, 0xef, 0x81, 0x01, 0x55, 0x01, 0x8a, 0xdd, 0xcf, 0x0f, 0x82, 0x30, - 0xf1, 0x78, 0x52, 0x00, 0x97, 0xd5, 0x1f, 0xb4, 0x57, 0x81, 0x6a, 0x6a, 0x3a, 0xa5, 0xce, 0x63, - 0x6f, 0xca, 0x08, 0xd5, 0x5a, 0xb0, 0x3e, 0x08, 0xf4, 0x31, 0xe8, 0x6b, 0x50, 0xe9, 0x23, 0x45, - 0xf7, 0x0d, 0x8b, 0xc3, 0x61, 0x62, 0x4d, 0x8c, 0x44, 0xad, 0x10, 0x07, 0x62, 0xc1, 0x75, 0xe2, - 0x7d, 0x30, 0x9e, 0x1d, 0xf5, 0xdd, 0xee, 0xdc, 0x0d, 0xea, 0x37, 0xf6, 0xfe, 0xb2, 0x90, 0x9e, - 0x47, 0xef, 0xea, 0xbe, 0x08, 0x43, 0x2b, 0x24, 0x89, 0xfc, 0x0a, 0x23, 0x70, 0xb7, 0xcd, 0x75, - 0x28, 0xfd, 0xe1, 0xb3, 0x6c, 0xb3, 0x52, 0x9a, 0x31, 0xba, 0x0d, 0xd0, 0x8a, 0x42, 0x6a, 0xbf, - 0x92, 0xb6, 0x7c, 0xd8, 0x16, 0xf4, 0xe1, 0x35, 0x45, 0x93, 0x87, 0x8b, 0xd3, 0xdf, 0x58, 0xe3, - 0xe7, 0x3e, 0x03, 0xc5, 0x95, 0x76, 0x42, 0x6e, 0xdd, 0x5d, 0x62, 0xb9, 0x1f, 0x84, 0x61, 0x86, - 0x7a, 0x35, 0x6c, 0xd0, 0x53, 0x92, 0xce, 0xb4, 0x49, 0x7f, 0x67, 0x1d, 0xf4, 0x0c, 0x09, 0xf3, - 0x36, 0xfa, 0x06, 0xd4, 0xc3, 0x46, 0x55, 0x5d, 0xc8, 0x51, 0xcf, 0xf7, 0x2a, 0x83, 0x62, 0xd1, - 0xea, 0xfe, 0x72, 0x01, 0x86, 0x58, 0x47, 0x21, 0x3d, 0x76, 0xa1, 0xbf, 0xce, 0xf9, 0x88, 0x25, - 0xb1, 0x90, 0xdd, 0xa6, 0x8f, 0x5e, 0x33, 0xcd, 0x38, 0x00, 0x4b, 0x7e, 0x94, 0xf5, 0x8e, 0xe7, - 0x27, 0x94, 0x75, 0xe1, 0x78, 0x59, 0xdf, 0xe4, 0x6c, 0xb0, 0xe4, 0xe7, 0x7e, 0xb9, 0x00, 0xc0, - 0xea, 0x73, 0xf1, 0xfb, 0xa0, 0xbf, 0x08, 0xc5, 0x56, 0xdd, 0x8b, 0xb3, 0x41, 0xb7, 0xe2, 0x1a, - 0x05, 0xde, 0x11, 0x37, 0x5e, 0xd9, 0x0f, 0xcc, 0x11, 0xf5, 0xc4, 0xf2, 0xc2, 0xc1, 0x89, 0xe5, - 0xa8, 0x05, 0xfd, 0x61, 0x3b, 0xa1, 0xba, 0xa1, 0x38, 0x5c, 0x2d, 0xc4, 0x9c, 0x57, 0x39, 0x41, - 0x9e, 0x8d, 0x2d, 0x7e, 0x60, 0xc9, 0x06, 0x3d, 0x0f, 0x03, 0xad, 0x28, 0xac, 0xd1, 0xb3, 0x52, - 0x1c, 0xa7, 0x8f, 0x4a, 0xfd, 0x63, 0x4d, 0xc0, 0xef, 0x68, 0xff, 0x63, 0x85, 0xed, 0xfe, 0x64, - 0x8c, 0xaf, 0x8b, 0xd8, 0x1c, 0x13, 0x50, 0xf0, 0xa5, 0x27, 0x08, 0x04, 0x89, 0xc2, 0xe2, 0x1c, - 0x2e, 0xf8, 0x55, 0xb5, 0x8f, 0x0b, 0x5d, 0x4f, 0xde, 0x77, 0xc3, 0x50, 0xd5, 0x8f, 0x5b, 0x0d, - 0x6f, 0xf7, 0x5a, 0x8e, 0x1b, 0x6e, 0x2e, 0x6d, 0xc2, 0x3a, 0x1e, 0x7a, 0x56, 0x5c, 0x23, 0xe8, - 0x35, 0x5c, 0x2f, 0xf2, 0x1a, 0x41, 0x7a, 0xdf, 0x98, 0xdf, 0x20, 0xc8, 0xde, 0xcb, 0x2e, 0x1e, - 0xfa, 0x5e, 0x76, 0x56, 0xf3, 0xe9, 0x3b, 0x79, 0xcd, 0xe7, 0xbd, 0x30, 0x22, 0x7f, 0x32, 0x75, - 0xa4, 0x74, 0x86, 0x8d, 0x5e, 0xb9, 0x87, 0xd7, 0xf5, 0x46, 0x6c, 0xe2, 0xa6, 0x9b, 0xb6, 0xff, - 0xb0, 0x9b, 0xf6, 0x12, 0xc0, 0x46, 0xd8, 0x0e, 0xaa, 0x5e, 0xb4, 0xbb, 0x38, 0x27, 0x92, 0x0e, - 0x95, 0xa2, 0x35, 0xa3, 0x5a, 0xb0, 0x86, 0xa5, 0x6f, 0xf4, 0xc1, 0xbb, 0x6c, 0xf4, 0x0f, 0xc2, - 0x20, 0x4b, 0xd0, 0x24, 0xd5, 0xe9, 0x44, 0xa4, 0xe3, 0x1c, 0x25, 0x97, 0x4f, 0xa9, 0x1d, 0x65, - 0x49, 0x04, 0xa7, 0xf4, 0xd0, 0x87, 0x00, 0x36, 0xfd, 0xc0, 0x8f, 0xeb, 0x8c, 0xfa, 0xd0, 0x91, - 0xa9, 0xab, 0x79, 0xce, 0x2b, 0x2a, 0x58, 0xa3, 0x88, 0x5e, 0x81, 0x53, 0x24, 0x4e, 0xfc, 0xa6, - 0x97, 0x90, 0xaa, 0xba, 0x78, 0x57, 0x62, 0xbe, 0x43, 0x95, 0x22, 0x7b, 0x25, 0x8b, 0x70, 0x27, - 0x0f, 0x88, 0x3b, 0x09, 0x19, 0x6f, 0xe4, 0xc4, 0x51, 0xde, 0x48, 0xf4, 0x27, 0x0e, 0x9c, 0x8a, - 0x08, 0xcf, 0xd1, 0x88, 0xd5, 0xc0, 0xce, 0x32, 0x79, 0x59, 0xb1, 0x51, 0xfa, 0x5a, 0xd5, 0xb8, - 0xc0, 0x59, 0x2e, 0x5c, 0x51, 0x20, 0x72, 0xf6, 0x1d, 0xed, 0x77, 0xf2, 0x80, 0x9f, 0x7c, 0x6b, - 0x72, 0xb2, 0xb3, 0x04, 0xbb, 0x22, 0x4e, 0xdf, 0xbc, 0xbf, 0xf1, 0xd6, 0xe4, 0xb8, 0xfc, 0x9d, - 0x2e, 0x5a, 0xc7, 0x24, 0xe9, 0xb9, 0xd7, 0x0a, 0xab, 0x8b, 0x6b, 0x22, 0x6f, 0x4a, 0x9d, 0x7b, - 0x6b, 0x14, 0x88, 0x79, 0x1b, 0x7a, 0x1a, 0x06, 0xaa, 0x1e, 0x69, 0x86, 0x81, 0x2a, 0x62, 0xca, - 0xb4, 0xe7, 0x39, 0x01, 0xc3, 0xaa, 0x15, 0x35, 0xa0, 0xcf, 0x67, 0x26, 0xba, 0x48, 0x92, 0xb4, - 0xe0, 0x17, 0xe0, 0x26, 0xbf, 0x4c, 0x91, 0x64, 0x42, 0x58, 0xf0, 0xd0, 0xa5, 0xfe, 0xd8, 0xc9, - 0x48, 0xfd, 0xa7, 0x61, 0xa0, 0x52, 0xf7, 0x1b, 0xd5, 0x88, 0x04, 0xa5, 0x71, 0x66, 0xab, 0xb2, - 0x95, 0x98, 0x15, 0x30, 0xac, 0x5a, 0xd1, 0x5f, 0x82, 0x91, 0xb0, 0x9d, 0xb0, 0x97, 0x9c, 0x3e, - 0xff, 0xb8, 0x74, 0x8a, 0xa1, 0xb3, 0x94, 0x97, 0x55, 0xbd, 0x01, 0x9b, 0x78, 0x54, 0xd8, 0xd6, - 0xc3, 0x98, 0x15, 0x46, 0x61, 0xc2, 0xf6, 0x9c, 0x29, 0x6c, 0xaf, 0x6a, 0x6d, 0xd8, 0xc0, 0x44, - 0x5f, 0x75, 0xe0, 0x54, 0x33, 0x6b, 0xba, 0x94, 0xce, 0xb3, 0x95, 0x29, 0xdb, 0x50, 0x71, 0x33, - 0xa4, 0x79, 0x66, 0x70, 0x07, 0x18, 0x77, 0x0e, 0x82, 0x95, 0x28, 0x8a, 0x77, 0x83, 0x4a, 0x3d, - 0x0a, 0x03, 0x73, 0x78, 0x0f, 0xdb, 0xba, 0xc9, 0xc3, 0xde, 0xb2, 0x3c, 0x16, 0x33, 0x0f, 0xef, - 0xef, 0x4d, 0x9e, 0xcd, 0x6d, 0xc2, 0xf9, 0x83, 0x9a, 0x98, 0x83, 0x73, 0xf9, 0x6f, 0xea, 0xdd, - 0x74, 0xed, 0x1e, 0x5d, 0xd7, 0x9e, 0x87, 0x87, 0xbb, 0x0e, 0x8a, 0xca, 0x7c, 0xa9, 0x98, 0x39, - 0xa6, 0xcc, 0xef, 0x50, 0xa4, 0x46, 0x61, 0x58, 0xaf, 0x9e, 0xef, 0xfe, 0xdf, 0x1e, 0x80, 0xd4, - 0x43, 0x8c, 0x3c, 0x18, 0xe5, 0xde, 0xe8, 0xc5, 0xb9, 0x7b, 0xbe, 0x83, 0x3c, 0x6b, 0x10, 0xc0, - 0x19, 0x82, 0xa8, 0x09, 0x88, 0x43, 0xf8, 0xef, 0x7b, 0x89, 0x2a, 0xb2, 0x20, 0xdc, 0x6c, 0x07, - 0x11, 0x9c, 0x43, 0x98, 0xce, 0x28, 0x09, 0xb7, 0x48, 0x70, 0x1d, 0x2f, 0xdf, 0xcb, 0x45, 0x76, - 0x1e, 0x87, 0x32, 0x08, 0xe0, 0x0c, 0x41, 0xe4, 0x42, 0x1f, 0xf3, 0x4a, 0xc8, 0xb4, 0x62, 0x26, - 0x5e, 0xd8, 0x99, 0x1f, 0x63, 0xd1, 0x82, 0xbe, 0xec, 0xc0, 0xa8, 0xbc, 0x8f, 0xcf, 0xfc, 0x80, - 0x32, 0xa1, 0xf8, 0xba, 0x2d, 0x0f, 0xff, 0x15, 0x9d, 0x7a, 0x9a, 0xae, 0x67, 0x80, 0x63, 0x9c, - 0x19, 0x84, 0xfb, 0x12, 0x9c, 0xce, 0xe9, 0x6e, 0xc5, 0x96, 0xfb, 0xae, 0x03, 0x43, 0x5a, 0xd5, - 0x37, 0x74, 0x1b, 0x06, 0xc3, 0xb2, 0xf5, 0x1c, 0xb1, 0xd5, 0x72, 0x47, 0x8e, 0x98, 0x02, 0xe1, - 0x94, 0xe1, 0x61, 0x52, 0xdb, 0x72, 0x4b, 0xd4, 0x3d, 0xe0, 0x61, 0x1f, 0x39, 0xb5, 0xed, 0xdf, - 0xf5, 0x42, 0x4a, 0xe9, 0x88, 0x75, 0x22, 0xd2, 0x44, 0xb8, 0xc2, 0x81, 0x89, 0x70, 0x55, 0x18, - 0xf3, 0x58, 0x14, 0xf5, 0x1e, 0xab, 0x43, 0xf0, 0xa2, 0x9f, 0x26, 0x05, 0x9c, 0x25, 0x49, 0xb9, - 0xc4, 0x69, 0x57, 0xc6, 0xa5, 0xf7, 0xc8, 0x5c, 0xca, 0x26, 0x05, 0x9c, 0x25, 0x89, 0x5e, 0x81, - 0x52, 0x85, 0xdd, 0x76, 0xe4, 0x73, 0x5c, 0xdc, 0xbc, 0x16, 0x26, 0x6b, 0x11, 0x89, 0x49, 0x90, - 0x88, 0xb2, 0x4e, 0x8f, 0x8b, 0x55, 0x28, 0xcd, 0x76, 0xc1, 0xc3, 0x5d, 0x29, 0x50, 0x83, 0x81, - 0x85, 0x61, 0xfd, 0x64, 0x97, 0x09, 0x11, 0x11, 0x9f, 0x56, 0x06, 0x43, 0x59, 0x6f, 0xc4, 0x26, - 0x2e, 0xfa, 0x15, 0x07, 0x46, 0x1a, 0xd2, 0x51, 0x8d, 0xdb, 0x0d, 0x59, 0xa3, 0x10, 0x5b, 0xd9, - 0x7e, 0xcb, 0x3a, 0x65, 0xae, 0x4b, 0x18, 0x20, 0x6c, 0xf2, 0x76, 0xdf, 0x74, 0x60, 0x3c, 0xdb, - 0x0d, 0x6d, 0xc1, 0x63, 0x4d, 0x2f, 0xda, 0x5a, 0x0c, 0x36, 0x23, 0x76, 0x0f, 0x20, 0xe1, 0x4f, - 0x75, 0x7a, 0x33, 0x21, 0xd1, 0x9c, 0xb7, 0xcb, 0x23, 0x78, 0x45, 0xf5, 0xb5, 0x9a, 0xc7, 0x56, - 0x0e, 0x42, 0xc6, 0x07, 0xd3, 0x42, 0x65, 0x38, 0x4b, 0x11, 0x58, 0x85, 0x2d, 0x3f, 0x0c, 0x52, - 0x26, 0x05, 0xc6, 0x44, 0xe5, 0xb3, 0xad, 0xe4, 0x21, 0xe1, 0xfc, 0xbe, 0xee, 0x00, 0xf4, 0xf1, - 0x3b, 0x50, 0xee, 0xbf, 0x2d, 0x80, 0x54, 0xd2, 0xfe, 0x7c, 0x07, 0x85, 0xe8, 0x81, 0x16, 0x31, - 0x47, 0x8b, 0xf0, 0x01, 0xb0, 0x03, 0x4d, 0x94, 0xa3, 0x13, 0x2d, 0x54, 0x7b, 0x25, 0xb7, 0xfc, - 0x64, 0x36, 0xac, 0x4a, 0xcb, 0x9f, 0x69, 0xaf, 0x57, 0x04, 0x0c, 0xab, 0x56, 0xf7, 0x53, 0x0e, - 0x8c, 0xd0, 0x59, 0x36, 0x1a, 0xa4, 0x51, 0x4e, 0x48, 0x2b, 0x46, 0x31, 0x14, 0x63, 0xfa, 0x8f, - 0x3d, 0x0f, 0x56, 0x7a, 0xf5, 0x8d, 0xb4, 0xb4, 0x90, 0x01, 0x65, 0x82, 0x39, 0x2f, 0xf7, 0x3b, - 0x3d, 0x30, 0xa8, 0x16, 0xfb, 0x10, 0x71, 0x88, 0x4b, 0x69, 0xa5, 0x48, 0x2e, 0x0d, 0x4b, 0x5a, - 0x95, 0x48, 0x6a, 0xae, 0x4f, 0x07, 0xbb, 0xfc, 0x8e, 0x7d, 0x5a, 0x32, 0xf2, 0x59, 0x33, 0xe0, - 0x79, 0x4e, 0x8f, 0xa2, 0x69, 0xf8, 0x22, 0xf2, 0x79, 0x4b, 0x8f, 0x37, 0xf7, 0xda, 0x3a, 0x59, - 0x54, 0x30, 0xad, 0x7b, 0xa0, 0x39, 0xf3, 0x11, 0x91, 0xe2, 0xa1, 0x3e, 0x22, 0xf2, 0x0c, 0xf4, - 0x92, 0xa0, 0xdd, 0x64, 0x6a, 0xcb, 0x20, 0x53, 0xd7, 0x7b, 0xaf, 0x04, 0xed, 0xa6, 0x39, 0x33, - 0x86, 0x82, 0xde, 0x07, 0x43, 0x55, 0x12, 0x57, 0x22, 0x9f, 0x5d, 0x1c, 0x17, 0xfe, 0x8e, 0x47, - 0x99, 0x13, 0x29, 0x05, 0x9b, 0x1d, 0xf5, 0x0e, 0xee, 0x6b, 0xd0, 0xb7, 0xd6, 0x68, 0xd7, 0xfc, - 0x00, 0xb5, 0xa0, 0x8f, 0x5f, 0x23, 0x17, 0x27, 0xaf, 0x05, 0x1b, 0x90, 0xbf, 0xed, 0x5a, 0x2e, - 0x04, 0xbf, 0x01, 0x29, 0xf8, 0xb8, 0xff, 0xcc, 0x01, 0x6a, 0xb0, 0x2e, 0xcc, 0xa2, 0xbf, 0xda, - 0xf1, 0xcd, 0x8c, 0x9f, 0xcb, 0xf9, 0x66, 0xc6, 0x08, 0x43, 0xce, 0xf9, 0x5c, 0x46, 0x03, 0x46, - 0x98, 0x8b, 0x5e, 0x9e, 0x47, 0x42, 0xc5, 0xbd, 0x7c, 0xc8, 0x9b, 0xd7, 0x7a, 0x57, 0x21, 0x9d, - 0x75, 0x10, 0x36, 0x89, 0xbb, 0xbf, 0xd3, 0x0b, 0x9a, 0x27, 0xfb, 0x10, 0xdb, 0xfb, 0xa3, 0x99, - 0xb8, 0xc5, 0x8a, 0x95, 0xb8, 0x85, 0x0c, 0x06, 0x70, 0x91, 0x61, 0x86, 0x2a, 0xe8, 0xa0, 0xea, - 0xa4, 0xd1, 0x12, 0x2f, 0x87, 0x1a, 0xd4, 0x55, 0xd2, 0x68, 0x61, 0xd6, 0xa2, 0xee, 0x90, 0xf5, - 0x76, 0xbd, 0x43, 0x56, 0x87, 0x62, 0xcd, 0x6b, 0xd7, 0x88, 0x48, 0xdc, 0xb3, 0x10, 0xa2, 0x62, - 0x49, 0xf5, 0x3c, 0x44, 0xc5, 0xfe, 0xc5, 0x9c, 0x01, 0x7d, 0x3b, 0xeb, 0x32, 0x93, 0x41, 0xf8, - 0x1a, 0x2d, 0xbc, 0x9d, 0x2a, 0x39, 0x82, 0xbf, 0x9d, 0xea, 0x27, 0x4e, 0x99, 0xa1, 0x16, 0xf4, - 0x57, 0x78, 0xc1, 0x06, 0x71, 0xe0, 0x2f, 0xda, 0xb8, 0x24, 0xc7, 0x08, 0x72, 0x57, 0x84, 0xf8, - 0x81, 0x25, 0x1b, 0xf7, 0x22, 0x0c, 0x69, 0xb5, 0xf6, 0xe9, 0x63, 0x50, 0xb5, 0x02, 0xb4, 0xc7, - 0x30, 0xe7, 0x25, 0x1e, 0x66, 0x2d, 0xee, 0x37, 0x7b, 0x41, 0xb9, 0x84, 0xf4, 0x2b, 0x5d, 0x5e, - 0x45, 0xab, 0x6c, 0x62, 0xdc, 0x25, 0x0e, 0x03, 0x2c, 0x5a, 0xa9, 0x52, 0xd4, 0x24, 0x51, 0x4d, - 0x19, 0xa1, 0x42, 0xbe, 0x2a, 0xa5, 0x68, 0x45, 0x6f, 0xc4, 0x26, 0x2e, 0xd5, 0x68, 0x9b, 0x22, - 0xb2, 0x9b, 0xcd, 0x9b, 0x95, 0x11, 0x5f, 0xac, 0x30, 0xd0, 0xa7, 0x1c, 0x18, 0x6e, 0x6a, 0x81, - 0x60, 0x91, 0xbf, 0x67, 0x23, 0x70, 0xa1, 0x51, 0xe5, 0x79, 0x36, 0x3a, 0x04, 0x1b, 0x5c, 0xd1, - 0x02, 0x9c, 0x8a, 0x49, 0xb2, 0xba, 0x13, 0x90, 0x48, 0x5d, 0xb5, 0x16, 0x77, 0xef, 0x55, 0xd2, - 0x7c, 0x39, 0x8b, 0x80, 0x3b, 0xfb, 0xe4, 0xa6, 0x3c, 0x16, 0x8f, 0x9c, 0xf2, 0x38, 0x07, 0xe3, - 0x9b, 0x9e, 0xdf, 0x68, 0x47, 0xa4, 0x6b, 0xe2, 0xe4, 0x7c, 0xa6, 0x1d, 0x77, 0xf4, 0x60, 0xf7, - 0x36, 0x1a, 0x5e, 0x2d, 0x2e, 0xf5, 0x6b, 0xf7, 0x36, 0x28, 0x00, 0x73, 0xb8, 0xfb, 0x8f, 0x1d, - 0xe0, 0x45, 0x4f, 0xa6, 0x37, 0x37, 0xfd, 0xc0, 0x4f, 0x76, 0xd1, 0xd7, 0x1c, 0x18, 0x0f, 0xc2, - 0x2a, 0x99, 0x0e, 0x12, 0x5f, 0x02, 0xed, 0x15, 0x96, 0x66, 0xbc, 0xae, 0x65, 0xc8, 0xf3, 0x1b, - 0xf4, 0x59, 0x28, 0xee, 0x18, 0x86, 0x7b, 0x1e, 0xce, 0xe6, 0x12, 0x70, 0xdf, 0xec, 0x01, 0xb3, - 0x76, 0x0b, 0x7a, 0x11, 0x8a, 0x0d, 0x56, 0x4d, 0xc0, 0xb9, 0xc7, 0xa2, 0x3c, 0x6c, 0xad, 0x78, - 0xb9, 0x01, 0x4e, 0x09, 0xcd, 0xc1, 0x10, 0x2b, 0x08, 0x23, 0x6a, 0x3d, 0xf0, 0x37, 0xc2, 0x4d, - 0xbf, 0x67, 0xa5, 0x9a, 0xee, 0x98, 0x3f, 0xb1, 0xde, 0x0d, 0xbd, 0x0e, 0xfd, 0x1b, 0xbc, 0x2c, - 0x9e, 0xbd, 0xd0, 0x95, 0xa8, 0xb3, 0xc7, 0x94, 0x19, 0x59, 0x74, 0xef, 0x4e, 0xfa, 0x2f, 0x96, - 0x1c, 0xd1, 0x2e, 0x0c, 0x78, 0xf2, 0x99, 0xf6, 0xda, 0xca, 0xc3, 0x37, 0xf6, 0x8f, 0x48, 0xb4, - 0x90, 0xcf, 0x50, 0xb1, 0xcb, 0x64, 0xa4, 0x14, 0x0f, 0x95, 0x91, 0xf2, 0x6d, 0x07, 0x20, 0xfd, - 0x24, 0x00, 0xba, 0x05, 0x03, 0xf1, 0x65, 0xc3, 0xca, 0xb7, 0x71, 0x79, 0x5a, 0x50, 0xd4, 0x2e, - 0x18, 0x0a, 0x08, 0x56, 0xdc, 0xee, 0xe6, 0x99, 0xf8, 0x99, 0x03, 0x67, 0xf2, 0x3e, 0x5d, 0xf0, - 0x00, 0x47, 0x7c, 0x54, 0xa7, 0x84, 0xe8, 0xb0, 0x16, 0x91, 0x4d, 0xff, 0x56, 0x36, 0x69, 0x65, - 0x49, 0x36, 0xe0, 0x14, 0xc7, 0xfd, 0x5e, 0x1f, 0x28, 0xc6, 0xc7, 0xe4, 0xc4, 0x78, 0x8a, 0x1a, - 0x39, 0xb5, 0xb4, 0x5c, 0xa3, 0xc2, 0xc3, 0x0c, 0x8a, 0x45, 0x2b, 0x35, 0x74, 0x64, 0x2e, 0xb5, - 0x10, 0xd9, 0x6c, 0x17, 0xca, 0x9c, 0x6b, 0xac, 0x5a, 0xf3, 0xdc, 0x22, 0xc5, 0x13, 0x71, 0x8b, - 0xf4, 0xd9, 0x77, 0x8b, 0x3c, 0x03, 0xfd, 0x51, 0xd8, 0x20, 0xd3, 0xf8, 0x9a, 0x50, 0xdf, 0xd3, - 0x42, 0xba, 0x1c, 0x8c, 0x65, 0x7b, 0xb6, 0x86, 0xe7, 0xc0, 0xe1, 0x6a, 0x78, 0xa2, 0xef, 0x39, - 0x07, 0x78, 0x5e, 0x06, 0x6d, 0x9d, 0x09, 0xb9, 0x95, 0xac, 0x98, 0x2d, 0x72, 0x2f, 0xee, 0x9c, - 0xaf, 0x3b, 0x70, 0x8a, 0x04, 0x95, 0x68, 0x97, 0xd1, 0x11, 0xd4, 0x44, 0xe8, 0xf4, 0xba, 0x8d, - 0x97, 0xef, 0x4a, 0x96, 0x38, 0x8f, 0x8b, 0x74, 0x80, 0x71, 0xe7, 0x30, 0xdc, 0x9f, 0x14, 0xe0, - 0x74, 0x0e, 0x05, 0x76, 0x4d, 0xa6, 0x49, 0x37, 0xd0, 0x62, 0x35, 0xfb, 0xfa, 0x2c, 0x09, 0x38, - 0x56, 0x18, 0x68, 0x0d, 0xce, 0x6c, 0x35, 0xe3, 0x94, 0xca, 0x6c, 0x18, 0x24, 0xe4, 0x96, 0x7c, - 0x99, 0x64, 0x14, 0xf4, 0xcc, 0x52, 0x0e, 0x0e, 0xce, 0xed, 0x49, 0xb5, 0x0d, 0x12, 0x78, 0x1b, - 0x0d, 0x92, 0x36, 0x89, 0x4b, 0x5e, 0x4a, 0xdb, 0xb8, 0x92, 0x69, 0xc7, 0x1d, 0x3d, 0xd0, 0xe7, - 0x1c, 0x78, 0x24, 0x26, 0xd1, 0x36, 0x89, 0xca, 0x7e, 0x95, 0xcc, 0xb6, 0xe3, 0x24, 0x6c, 0x92, - 0xe8, 0x1e, 0x5d, 0x83, 0x93, 0xfb, 0x7b, 0x93, 0x8f, 0x94, 0xbb, 0x53, 0xc3, 0x07, 0xb1, 0x72, - 0x3f, 0xe7, 0xc0, 0x68, 0x99, 0x19, 0xab, 0x4a, 0xf5, 0xb5, 0x5d, 0x7a, 0xf0, 0x29, 0x55, 0x52, - 0x20, 0x23, 0xc4, 0xcc, 0x22, 0x00, 0xee, 0xab, 0x30, 0x5e, 0x26, 0x4d, 0xaf, 0x55, 0x67, 0x37, - 0x34, 0x79, 0x9a, 0xce, 0x45, 0x18, 0x8c, 0x25, 0x2c, 0xfb, 0xf1, 0x10, 0x85, 0x8c, 0x53, 0x1c, - 0xf4, 0x24, 0x4f, 0x29, 0x92, 0xf7, 0x3c, 0x06, 0xb9, 0x91, 0xc0, 0xf3, 0x90, 0x62, 0x2c, 0xdb, - 0xdc, 0x1d, 0x18, 0x4e, 0xbb, 0x93, 0x4d, 0x54, 0x83, 0xb1, 0x8a, 0x76, 0x45, 0x2a, 0x4d, 0x4e, - 0x3f, 0xfc, 0x6d, 0x2a, 0x5e, 0x10, 0xd5, 0x24, 0x82, 0xb3, 0x54, 0xdd, 0x2f, 0x16, 0x60, 0x4c, - 0x71, 0x16, 0x21, 0xaf, 0x37, 0xb2, 0x69, 0x50, 0xd8, 0x46, 0xa9, 0x13, 0x73, 0x25, 0x0f, 0x48, - 0x85, 0x7a, 0x23, 0x9b, 0x0a, 0x75, 0xac, 0xec, 0x3b, 0xa2, 0x78, 0xdf, 0x2e, 0xc0, 0x80, 0x2a, - 0xbc, 0xf2, 0x22, 0x14, 0x99, 0x1d, 0x77, 0x7f, 0xda, 0x28, 0xb3, 0x09, 0x31, 0xa7, 0x44, 0x49, - 0xb2, 0x4c, 0x8e, 0x7b, 0xae, 0x3a, 0x39, 0xc8, 0xdd, 0x6f, 0x5e, 0x94, 0x60, 0x4e, 0x09, 0x2d, - 0x41, 0x0f, 0x09, 0xaa, 0x42, 0x2d, 0x3d, 0x3a, 0x41, 0xf6, 0xd1, 0x9e, 0x2b, 0x41, 0x15, 0x53, - 0x2a, 0xac, 0xf4, 0x21, 0xd7, 0x3e, 0x32, 0x9f, 0x68, 0x10, 0xaa, 0x87, 0x68, 0x75, 0x7f, 0xa5, - 0x07, 0xfa, 0xca, 0xed, 0x0d, 0xaa, 0x60, 0x7f, 0xcb, 0x81, 0xd3, 0x3b, 0x99, 0x92, 0xac, 0xe9, - 0x96, 0xbd, 0x6e, 0xcf, 0x05, 0xa9, 0x67, 0x13, 0x3d, 0x22, 0xbf, 0x3f, 0x9d, 0xd3, 0x88, 0xf3, - 0x86, 0x63, 0x54, 0x45, 0xec, 0x39, 0x96, 0xaa, 0x88, 0xb7, 0x8e, 0x39, 0x7d, 0x7d, 0xa4, 0x5b, - 0xea, 0xba, 0xfb, 0x3b, 0x45, 0x00, 0xfe, 0x34, 0x56, 0x5b, 0xc9, 0x61, 0x7c, 0x54, 0xcf, 0xc3, - 0xb0, 0xfc, 0x20, 0x7e, 0xde, 0xd7, 0x3f, 0x16, 0xb4, 0x36, 0x6c, 0x60, 0x32, 0x83, 0x20, 0x48, - 0xa2, 0x5d, 0xae, 0x34, 0x66, 0x53, 0xd4, 0x55, 0x0b, 0xd6, 0xb0, 0xd0, 0x94, 0xe1, 0xf3, 0xe7, - 0xa1, 0xdc, 0xd1, 0x03, 0x5c, 0xf4, 0xef, 0x83, 0x51, 0xb3, 0x56, 0x83, 0xd0, 0x94, 0x54, 0xe8, - 0xd5, 0x2c, 0xf1, 0x80, 0x33, 0xd8, 0x74, 0x13, 0x57, 0xa3, 0x5d, 0xdc, 0x0e, 0x84, 0xca, 0xa4, - 0x36, 0xf1, 0x1c, 0x83, 0x62, 0xd1, 0xca, 0x2e, 0xca, 0xb3, 0xd3, 0x88, 0xc3, 0xc5, 0x65, 0xfb, - 0xf4, 0xa2, 0xbc, 0xd6, 0x86, 0x0d, 0x4c, 0xca, 0x41, 0xf8, 0xf8, 0xc0, 0x7c, 0x4d, 0x32, 0x8e, - 0xb9, 0x16, 0x8c, 0x86, 0xa6, 0x6f, 0x82, 0xe7, 0x6b, 0xbd, 0xeb, 0x90, 0x5b, 0xcf, 0xe8, 0xcb, - 0x43, 0xe6, 0x19, 0x57, 0x46, 0x86, 0x3e, 0xd5, 0x19, 0xf5, 0x4c, 0xee, 0x61, 0x33, 0xd5, 0xb0, - 0x6b, 0xb2, 0xf5, 0x1a, 0x9c, 0x69, 0x85, 0xd5, 0xb5, 0xc8, 0x0f, 0x23, 0x3f, 0xd9, 0x9d, 0x6d, - 0x78, 0x71, 0xcc, 0x36, 0xc6, 0x88, 0xa9, 0x9c, 0xac, 0xe5, 0xe0, 0xe0, 0xdc, 0x9e, 0x54, 0xbb, - 0x6f, 0x09, 0x20, 0x4b, 0x33, 0x2a, 0x72, 0xed, 0x5e, 0x22, 0x62, 0xd5, 0xea, 0x9e, 0x86, 0x53, - 0xe5, 0x76, 0xab, 0xd5, 0xf0, 0x49, 0x55, 0xf9, 0xd4, 0xdd, 0xf7, 0xc3, 0x98, 0xa8, 0x99, 0xa8, - 0x54, 0x81, 0x23, 0x55, 0xf8, 0x75, 0xff, 0xc4, 0x81, 0xb1, 0x4c, 0x52, 0x07, 0x7a, 0x3d, 0x7b, - 0x80, 0x5b, 0x71, 0x58, 0xe9, 0x67, 0x37, 0x7f, 0x49, 0x73, 0x95, 0x81, 0xba, 0x4c, 0x5e, 0xb6, - 0x76, 0x07, 0x80, 0xa5, 0xf8, 0xf2, 0x13, 0x41, 0xcf, 0x80, 0x76, 0x3f, 0x5b, 0x80, 0xfc, 0x4c, - 0x1a, 0xf4, 0xb1, 0xce, 0x05, 0x78, 0xd1, 0xe2, 0x02, 0x88, 0x54, 0x9e, 0xee, 0x6b, 0x10, 0x98, - 0x6b, 0xb0, 0x62, 0x69, 0x0d, 0x04, 0xdf, 0xce, 0x95, 0xf8, 0x5f, 0x0e, 0x0c, 0xad, 0xaf, 0x2f, - 0x2b, 0xff, 0x12, 0x86, 0x73, 0x31, 0xbf, 0xe3, 0xcc, 0xe2, 0x94, 0xb3, 0x61, 0xb3, 0xc5, 0xc3, - 0x96, 0x22, 0x9c, 0xca, 0xca, 0x57, 0x96, 0x73, 0x31, 0x70, 0x97, 0x9e, 0x68, 0x11, 0x4e, 0xeb, - 0x2d, 0x65, 0xed, 0xe3, 0x5f, 0x45, 0x51, 0x57, 0xa4, 0xb3, 0x19, 0xe7, 0xf5, 0xc9, 0x92, 0x12, - 0xae, 0x42, 0xf1, 0xb1, 0xfd, 0x0e, 0x52, 0xa2, 0x19, 0xe7, 0xf5, 0x71, 0x57, 0x61, 0x68, 0xdd, - 0x8b, 0xd4, 0xc4, 0x3f, 0x00, 0xe3, 0x95, 0xb0, 0x29, 0x5d, 0x34, 0xcb, 0x64, 0x9b, 0x34, 0xc4, - 0x94, 0x79, 0x89, 0xfe, 0x4c, 0x1b, 0xee, 0xc0, 0x76, 0xff, 0xfb, 0x05, 0x50, 0x77, 0xb6, 0x0e, - 0x71, 0xc2, 0xb4, 0x54, 0x8e, 0x61, 0xd1, 0x72, 0x8e, 0xa1, 0x92, 0xb5, 0x99, 0x3c, 0xc3, 0x24, - 0xcd, 0x33, 0xec, 0xb3, 0x9d, 0x67, 0xa8, 0x14, 0xc6, 0x8e, 0x5c, 0xc3, 0xaf, 0x38, 0x30, 0x1c, - 0x84, 0x55, 0xa2, 0x82, 0x51, 0xfd, 0x4c, 0x6b, 0x7d, 0xc5, 0x5e, 0xf2, 0x34, 0xcf, 0x99, 0x13, - 0xe4, 0x79, 0x26, 0xaa, 0x3a, 0xa2, 0xf4, 0x26, 0x6c, 0x8c, 0x03, 0xcd, 0x6b, 0x4e, 0x43, 0xee, - 0x9b, 0x7f, 0x34, 0xcf, 0x7a, 0xb8, 0xab, 0x07, 0xf0, 0x96, 0xa6, 0x37, 0x0d, 0x5a, 0xff, 0x32, - 0x7d, 0x1a, 0x62, 0x90, 0x15, 0x58, 0x53, 0x7d, 0xca, 0x85, 0x3e, 0x9e, 0xb2, 0x2a, 0x2a, 0xd8, - 0xb0, 0xc8, 0x17, 0x4f, 0x67, 0xc5, 0xa2, 0x05, 0x25, 0x32, 0xe0, 0x3d, 0x64, 0xab, 0x9e, 0xba, - 0x11, 0x50, 0xcf, 0x8f, 0x78, 0xa3, 0x17, 0x74, 0xa3, 0x74, 0xf8, 0x30, 0x46, 0xe9, 0x48, 0x57, - 0x83, 0xf4, 0x0b, 0x0e, 0x0c, 0x57, 0xb4, 0xfa, 0xe6, 0xa5, 0xa7, 0x6d, 0x7d, 0x96, 0x35, 0xaf, - 0x0c, 0x3d, 0x0f, 0xa8, 0x18, 0xf5, 0xd4, 0x0d, 0xee, 0xac, 0xe4, 0x1e, 0xb3, 0xc0, 0xd9, 0xd1, - 0x6f, 0xe5, 0xa6, 0xbe, 0x69, 0xd1, 0xcb, 0x24, 0x3e, 0x0a, 0xc3, 0x82, 0x17, 0xba, 0x0d, 0x03, - 0x32, 0xeb, 0x59, 0xe4, 0x24, 0x63, 0x1b, 0x1e, 0x6e, 0x33, 0x8c, 0x26, 0x0b, 0x75, 0x71, 0x28, - 0x56, 0x1c, 0x51, 0x1d, 0x7a, 0xaa, 0x5e, 0x4d, 0x64, 0x27, 0xaf, 0xd8, 0xa9, 0x83, 0x28, 0x79, - 0x32, 0xf3, 0x6a, 0x6e, 0x7a, 0x01, 0x53, 0x16, 0xe8, 0x56, 0x5a, 0x20, 0x7a, 0xdc, 0xda, 0xe9, - 0x6b, 0xaa, 0x49, 0xdc, 0xc7, 0xd0, 0x51, 0x6f, 0xba, 0x2a, 0x22, 0x8f, 0x7f, 0x81, 0xb1, 0x9d, - 0xb7, 0x53, 0x48, 0x91, 0x57, 0x7e, 0x48, 0xa3, 0x97, 0x94, 0x0b, 0xfb, 0x1c, 0xfc, 0xcf, 0xdb, - 0xe2, 0xc2, 0xea, 0x17, 0x64, 0x3f, 0x03, 0xdf, 0x80, 0xbe, 0x16, 0xcb, 0x62, 0x28, 0xfd, 0x82, - 0xad, 0xb3, 0x85, 0x67, 0x45, 0xf0, 0xbd, 0xc9, 0xff, 0xc7, 0x82, 0x07, 0xba, 0x02, 0xfd, 0xfc, - 0x3b, 0x07, 0x3c, 0x3b, 0x7c, 0xe8, 0xd2, 0x44, 0xf7, 0xaf, 0x25, 0xa4, 0x07, 0x05, 0xff, 0x1d, - 0x63, 0xd9, 0x17, 0x7d, 0xd1, 0x81, 0x51, 0x2a, 0x51, 0xd3, 0x0f, 0x33, 0x94, 0x90, 0x2d, 0x99, - 0x75, 0x3d, 0xa6, 0x1a, 0x89, 0x94, 0x35, 0xca, 0x4c, 0x5a, 0x34, 0xd8, 0xe1, 0x0c, 0x7b, 0xf4, - 0x06, 0x0c, 0xc4, 0x7e, 0x95, 0x54, 0xbc, 0x28, 0x2e, 0x9d, 0x3e, 0x9e, 0xa1, 0xa4, 0xb1, 0x0e, - 0xc1, 0x08, 0x2b, 0x96, 0xb9, 0x9f, 0x43, 0x3f, 0xf3, 0x80, 0x3f, 0x87, 0xfe, 0xd7, 0x1d, 0x38, - 0xcb, 0xeb, 0x72, 0x67, 0x8b, 0xb2, 0x9f, 0xbd, 0x47, 0xf7, 0x0a, 0x4b, 0x6b, 0x9f, 0xce, 0x23, - 0x89, 0xf3, 0x39, 0xb1, 0xc2, 0x9e, 0xe6, 0x77, 0x34, 0xce, 0x59, 0x8d, 0xf9, 0x1d, 0xfe, 0xdb, - 0x19, 0xe8, 0x39, 0x18, 0x6a, 0x89, 0xe3, 0xd0, 0x8f, 0x9b, 0xec, 0x92, 0x42, 0x0f, 0xbf, 0xc8, - 0xb5, 0x96, 0x82, 0xb1, 0x8e, 0x63, 0x54, 0x79, 0x7d, 0xe6, 0xa0, 0x2a, 0xaf, 0xe8, 0x3a, 0x0c, - 0x25, 0x61, 0x83, 0x44, 0xc2, 0x52, 0x2d, 0xb1, 0x1d, 0x78, 0x21, 0xef, 0xdd, 0x5a, 0x57, 0x68, - 0xa9, 0x25, 0x9b, 0xc2, 0x62, 0xac, 0xd3, 0x61, 0x89, 0xa1, 0xa2, 0xde, 0x79, 0xc4, 0x4c, 0xd8, - 0x87, 0x33, 0x89, 0xa1, 0x7a, 0x23, 0x36, 0x71, 0xd1, 0x02, 0x9c, 0x6a, 0x75, 0xd8, 0xc0, 0xfc, - 0x9a, 0x92, 0x4a, 0x27, 0xe8, 0x34, 0x80, 0x3b, 0xfb, 0x18, 0xd6, 0xef, 0x23, 0x07, 0x59, 0xbf, - 0x5d, 0x6a, 0x9e, 0x3e, 0x7a, 0x2f, 0x35, 0x4f, 0x51, 0x15, 0x1e, 0xf5, 0xda, 0x49, 0xc8, 0x6a, - 0x74, 0x98, 0x5d, 0x78, 0x8e, 0xec, 0xe3, 0x3c, 0xed, 0x76, 0x7f, 0x6f, 0xf2, 0xd1, 0xe9, 0x03, - 0xf0, 0xf0, 0x81, 0x54, 0xd0, 0x6b, 0x30, 0x40, 0x44, 0xdd, 0xd6, 0xd2, 0xcf, 0xd9, 0x52, 0x12, - 0xcc, 0x4a, 0xb0, 0x32, 0xe5, 0x91, 0xc3, 0xb0, 0xe2, 0x87, 0xd6, 0x61, 0xa8, 0x1e, 0xc6, 0xc9, - 0x74, 0xc3, 0xf7, 0x62, 0x12, 0x97, 0x1e, 0x63, 0x9b, 0x26, 0x57, 0xf7, 0xba, 0x2a, 0xd1, 0xd2, - 0x3d, 0x73, 0x35, 0xed, 0x89, 0x75, 0x32, 0x88, 0xb0, 0xc8, 0x1f, 0x4b, 0x10, 0x96, 0x51, 0x99, - 0x0b, 0x6c, 0x62, 0x4f, 0xe5, 0x51, 0x5e, 0x0b, 0xab, 0x65, 0x13, 0x5b, 0x85, 0xfe, 0x74, 0x20, - 0xce, 0xd2, 0x44, 0xcf, 0xc3, 0x70, 0x2b, 0xac, 0x96, 0x5b, 0xa4, 0xb2, 0xe6, 0x25, 0x95, 0x7a, - 0x69, 0xd2, 0xf4, 0xba, 0xad, 0x69, 0x6d, 0xd8, 0xc0, 0x44, 0x2d, 0xe8, 0x6f, 0xf2, 0xcb, 0xdb, - 0xa5, 0x27, 0x6c, 0xd9, 0x36, 0xe2, 0x36, 0x38, 0xd7, 0x17, 0xc4, 0x0f, 0x2c, 0xd9, 0xa0, 0x7f, - 0xe0, 0xc0, 0x58, 0xe6, 0xda, 0x4d, 0xe9, 0x1d, 0xd6, 0x54, 0x16, 0x93, 0xf0, 0xcc, 0x53, 0x6c, - 0xf9, 0x4c, 0xe0, 0x9d, 0x4e, 0x10, 0xce, 0x8e, 0x88, 0xaf, 0x0b, 0xab, 0xc0, 0x50, 0x7a, 0xd2, - 0xde, 0xba, 0x30, 0x82, 0x72, 0x5d, 0xd8, 0x0f, 0x2c, 0xd9, 0xa0, 0x67, 0xa0, 0x5f, 0x14, 0x4b, - 0x2b, 0x3d, 0x65, 0x86, 0x6f, 0x45, 0x4d, 0x35, 0x2c, 0xdb, 0x27, 0xde, 0x0f, 0xa7, 0x3a, 0x4c, - 0xb7, 0x23, 0x95, 0x01, 0xf8, 0x0d, 0x07, 0xf4, 0x1b, 0xb3, 0xd6, 0x3f, 0x96, 0xf0, 0x3c, 0x0c, - 0x57, 0xf8, 0x27, 0xd5, 0xf8, 0x9d, 0xdb, 0x5e, 0xd3, 0xff, 0x39, 0xab, 0xb5, 0x61, 0x03, 0xd3, - 0xbd, 0x0a, 0xa8, 0xb3, 0x92, 0xf5, 0x3d, 0xd5, 0x98, 0xf9, 0x47, 0x0e, 0x8c, 0x18, 0x3a, 0x83, - 0xf5, 0x88, 0xdf, 0x3c, 0xa0, 0xa6, 0x1f, 0x45, 0x61, 0xa4, 0x7f, 0xbb, 0x4a, 0x94, 0xee, 0x65, - 0xf7, 0x9d, 0x56, 0x3a, 0x5a, 0x71, 0x4e, 0x0f, 0xf7, 0x9f, 0xf6, 0x42, 0x9a, 0xf3, 0xab, 0xca, - 0x8d, 0x3a, 0x5d, 0xcb, 0x8d, 0x3e, 0x0b, 0x03, 0xaf, 0xc6, 0x61, 0xb0, 0x96, 0x16, 0x25, 0x55, - 0xcf, 0xe2, 0x85, 0xf2, 0xea, 0x35, 0x86, 0xa9, 0x30, 0x18, 0xf6, 0x47, 0xe7, 0xfd, 0x46, 0xd2, - 0x59, 0xb5, 0xf2, 0x85, 0x17, 0x39, 0x1c, 0x2b, 0x0c, 0xf6, 0x19, 0xab, 0x6d, 0xa2, 0x1c, 0xe3, - 0xe9, 0x67, 0xac, 0x78, 0x91, 0x7a, 0xd6, 0x86, 0x2e, 0xc2, 0xa0, 0x72, 0xaa, 0x0b, 0x4f, 0xbd, - 0x5a, 0x29, 0xe5, 0x79, 0xc7, 0x29, 0x0e, 0x53, 0x08, 0x85, 0x23, 0x56, 0xb8, 0x50, 0xca, 0x36, - 0xcc, 0x93, 0x8c, 0x6b, 0x97, 0xcb, 0x76, 0x09, 0xc6, 0x8a, 0x65, 0x5e, 0xd8, 0x73, 0xf0, 0x38, - 0xc2, 0x9e, 0x7a, 0x02, 0x7a, 0xf1, 0xb0, 0x09, 0xe8, 0xe6, 0xde, 0x1e, 0x38, 0xd4, 0xde, 0xfe, - 0x74, 0x0f, 0xf4, 0xdf, 0x20, 0x11, 0x2b, 0xd6, 0xfc, 0x0c, 0xf4, 0x6f, 0xf3, 0x7f, 0xb3, 0x37, - 0x09, 0x05, 0x06, 0x96, 0xed, 0xf4, 0xb9, 0x6d, 0xb4, 0xfd, 0x46, 0x75, 0x2e, 0x7d, 0x8b, 0xd3, - 0x3a, 0x6f, 0xb2, 0x01, 0xa7, 0x38, 0xb4, 0x43, 0x8d, 0x6a, 0xf6, 0xcd, 0xa6, 0x9f, 0x64, 0x93, - 0x80, 0x16, 0x64, 0x03, 0x4e, 0x71, 0xd0, 0x53, 0xd0, 0x57, 0xf3, 0x93, 0x75, 0xaf, 0x96, 0x8d, - 0xf2, 0x2d, 0x30, 0x28, 0x16, 0xad, 0x2c, 0x4c, 0xe4, 0x27, 0xeb, 0x11, 0x61, 0x9e, 0xdd, 0x8e, - 0x92, 0x02, 0x0b, 0x5a, 0x1b, 0x36, 0x30, 0xd9, 0x90, 0x42, 0x31, 0x33, 0x91, 0x01, 0x99, 0x0e, - 0x49, 0x36, 0xe0, 0x14, 0x87, 0xee, 0xff, 0x4a, 0xd8, 0x6c, 0xf9, 0x0d, 0x91, 0x9b, 0xab, 0xed, - 0xff, 0x59, 0x01, 0xc7, 0x0a, 0x83, 0x62, 0x53, 0x11, 0x46, 0xc5, 0x4f, 0xf6, 0x93, 0x41, 0x6b, - 0x02, 0x8e, 0x15, 0x86, 0x7b, 0x03, 0x46, 0xf8, 0x9b, 0x3c, 0xdb, 0xf0, 0xfc, 0xe6, 0xc2, 0x2c, - 0xba, 0xd2, 0x91, 0x80, 0xfe, 0x4c, 0x4e, 0x02, 0xfa, 0x59, 0xa3, 0x53, 0x67, 0x22, 0xba, 0xfb, - 0xa3, 0x02, 0x0c, 0x9c, 0xe0, 0x57, 0xd7, 0x4e, 0xfc, 0x03, 0xa2, 0xe8, 0x56, 0xe6, 0x8b, 0x6b, - 0x6b, 0x36, 0xef, 0x93, 0x1c, 0xf8, 0xb5, 0xb5, 0xff, 0x5a, 0x80, 0x73, 0x12, 0x35, 0xfd, 0x80, - 0x3e, 0xfb, 0x64, 0xd0, 0xf1, 0x2f, 0x74, 0x64, 0x2c, 0xf4, 0x9a, 0x3d, 0x6b, 0x74, 0x61, 0xb6, - 0xeb, 0x52, 0xbf, 0x96, 0x59, 0x6a, 0x6c, 0x95, 0xeb, 0xc1, 0x8b, 0xfd, 0xa7, 0x0e, 0x4c, 0xe4, - 0x2f, 0xf6, 0x09, 0x7c, 0xe4, 0xee, 0x0d, 0xf3, 0x23, 0x77, 0xbf, 0x64, 0x6f, 0x8b, 0x99, 0x53, - 0xe9, 0xf2, 0xb9, 0xbb, 0x3f, 0x76, 0xe0, 0x8c, 0xec, 0xc0, 0x4e, 0xcf, 0x19, 0x3f, 0x60, 0x89, - 0x28, 0xc7, 0xbf, 0xcd, 0x6e, 0x1b, 0xdb, 0xec, 0x65, 0x7b, 0x13, 0xd7, 0xe7, 0xd1, 0xf5, 0xe3, - 0xc0, 0x7f, 0xe4, 0x40, 0x29, 0xaf, 0xc3, 0x09, 0x3c, 0xf2, 0xd7, 0xcd, 0x47, 0x7e, 0xe3, 0x78, - 0x66, 0xde, 0xfd, 0x81, 0x97, 0xba, 0x2d, 0x14, 0x6a, 0x48, 0xbd, 0xca, 0xb1, 0x15, 0xa3, 0xe5, - 0x2c, 0xf2, 0x15, 0xb4, 0x06, 0xf4, 0xc5, 0x2c, 0x6b, 0x43, 0x6c, 0x81, 0xab, 0x36, 0xb4, 0x2d, - 0x4a, 0x4f, 0xf8, 0xd8, 0xd9, 0xff, 0x58, 0xf0, 0x70, 0xff, 0xd0, 0x81, 0xe1, 0x13, 0xfc, 0x78, - 0x65, 0x68, 0x3e, 0xe4, 0x17, 0xec, 0x3d, 0xe4, 0x2e, 0x0f, 0x76, 0xaf, 0x08, 0x1d, 0xdf, 0xf3, - 0x43, 0x9f, 0x71, 0x54, 0xa6, 0x06, 0xcf, 0x66, 0xfb, 0x90, 0xbd, 0x71, 0x1c, 0xa5, 0x9a, 0x1c, - 0xfa, 0x7a, 0xa6, 0xc4, 0x5e, 0xc1, 0x56, 0xdd, 0x9a, 0x8e, 0xd1, 0xdc, 0x43, 0xa9, 0xbd, 0xaf, - 0x38, 0x00, 0x7c, 0x9c, 0xa2, 0x42, 0x2f, 0x1d, 0xdb, 0xc6, 0xb1, 0xad, 0x14, 0x65, 0xc2, 0x87, - 0xa6, 0x04, 0x64, 0xda, 0x80, 0xb5, 0x91, 0xdc, 0x47, 0x0d, 0xbd, 0xfb, 0x2e, 0xdf, 0xf7, 0x45, - 0x07, 0xc6, 0x32, 0xc3, 0xcd, 0xe9, 0xbf, 0x69, 0x7e, 0xe7, 0xcb, 0x82, 0xae, 0x60, 0xd6, 0x6d, - 0xd5, 0xdd, 0x01, 0x7b, 0x2e, 0x18, 0x1f, 0x42, 0x45, 0xaf, 0xc3, 0xa0, 0xb4, 0xe5, 0xe5, 0xf6, - 0xb6, 0xf9, 0xbd, 0x43, 0xa5, 0xb0, 0x4b, 0x48, 0x8c, 0x53, 0x7e, 0x99, 0x44, 0xb0, 0xc2, 0xa1, - 0x12, 0xc1, 0x1e, 0xec, 0xd7, 0x12, 0xf3, 0x3d, 0xad, 0xbd, 0xc7, 0xe2, 0x69, 0x7d, 0xd4, 0xba, - 0xa7, 0xf5, 0xb1, 0x13, 0xf6, 0xb4, 0x6a, 0x61, 0xaf, 0xe2, 0x7d, 0x84, 0xbd, 0x5e, 0x87, 0x33, - 0xdb, 0xa9, 0x19, 0xa5, 0x76, 0x92, 0xa8, 0xd1, 0xf2, 0x4c, 0xae, 0x7f, 0x95, 0x9a, 0x84, 0x71, - 0x42, 0x82, 0x44, 0x33, 0xc0, 0xd2, 0x1c, 0xb4, 0x1b, 0x39, 0xe4, 0x70, 0x2e, 0x93, 0x6c, 0xfc, - 0xa2, 0xff, 0x10, 0xf1, 0x8b, 0xef, 0x38, 0x70, 0xd6, 0xeb, 0xb8, 0x12, 0x84, 0xc9, 0xa6, 0x48, - 0xa2, 0xb8, 0x69, 0x4f, 0x2f, 0x37, 0xc8, 0x8b, 0x40, 0x51, 0x5e, 0x13, 0xce, 0x1f, 0x10, 0x7a, - 0x32, 0x0d, 0x26, 0xf3, 0xcc, 0xc5, 0xfc, 0xc8, 0xef, 0xd7, 0xb3, 0x19, 0x2a, 0xc0, 0x96, 0xfe, - 0x23, 0x76, 0xed, 0x47, 0x0b, 0x59, 0x2a, 0x43, 0xf7, 0x91, 0xa5, 0x92, 0x09, 0x26, 0x0d, 0x5b, - 0x0a, 0x26, 0x05, 0x30, 0xee, 0x37, 0xbd, 0x1a, 0x59, 0x6b, 0x37, 0x1a, 0xfc, 0x8e, 0x82, 0xfc, - 0x22, 0x65, 0xae, 0x4f, 0x6a, 0x39, 0xac, 0x78, 0x8d, 0xec, 0x87, 0x7f, 0xd5, 0x5d, 0x8c, 0xc5, - 0x0c, 0x25, 0xdc, 0x41, 0x9b, 0x6e, 0x58, 0x56, 0x2c, 0x8c, 0x24, 0x74, 0xb5, 0x59, 0x2a, 0xc4, - 0x00, 0xdf, 0xb0, 0x57, 0x53, 0x30, 0xd6, 0x71, 0xd0, 0x12, 0x0c, 0x56, 0x83, 0x58, 0xdc, 0x6e, - 0x1c, 0x63, 0xc2, 0xec, 0x9d, 0x54, 0x04, 0xce, 0x5d, 0x2b, 0xab, 0x7b, 0x8d, 0x8f, 0xe6, 0xd4, - 0xa1, 0x53, 0xed, 0x38, 0xed, 0x8f, 0x56, 0x18, 0x31, 0xf1, 0xc9, 0x1f, 0x9e, 0xa1, 0xf0, 0x78, - 0x97, 0x10, 0xc8, 0xdc, 0x35, 0xf9, 0xd1, 0xa2, 0x11, 0xc1, 0x4e, 0x7c, 0xbb, 0x27, 0xa5, 0xa0, - 0x7d, 0x19, 0xf4, 0xd4, 0x81, 0x5f, 0x06, 0x65, 0x05, 0x28, 0x93, 0x86, 0x0a, 0x78, 0x5e, 0xb0, - 0x56, 0x80, 0x32, 0xcd, 0xfd, 0x13, 0x05, 0x28, 0x53, 0x00, 0xd6, 0x59, 0xa2, 0xd5, 0x6e, 0x81, - 0xdf, 0xd3, 0x4c, 0x68, 0x1c, 0x3d, 0x8c, 0xab, 0x47, 0x00, 0xcf, 0x1c, 0x18, 0x01, 0xec, 0x88, - 0x58, 0x9e, 0x3d, 0x42, 0xc4, 0xb2, 0xce, 0x4a, 0x03, 0x2e, 0xcc, 0x8a, 0x20, 0xb1, 0x05, 0x8b, - 0x85, 0x95, 0x5d, 0xe0, 0xb9, 0x94, 0xec, 0x5f, 0xcc, 0x19, 0x74, 0x4d, 0x11, 0x3e, 0x7f, 0xcf, - 0x29, 0xc2, 0x54, 0x3c, 0xa7, 0x70, 0x56, 0x63, 0xb2, 0x28, 0xc4, 0x73, 0x0a, 0xc6, 0x3a, 0x4e, - 0x36, 0xfe, 0xf7, 0xf0, 0xb1, 0xc5, 0xff, 0x26, 0x4e, 0x20, 0xfe, 0xf7, 0xc8, 0xa1, 0xe3, 0x7f, - 0xb7, 0xe0, 0x74, 0x2b, 0xac, 0xce, 0xf9, 0x71, 0xd4, 0x66, 0x97, 0xb6, 0x66, 0xda, 0xd5, 0x1a, - 0x49, 0x58, 0x00, 0x71, 0xe8, 0xd2, 0x3b, 0xf5, 0x41, 0xb6, 0xd8, 0x8b, 0x2c, 0xdf, 0xd1, 0x4c, - 0x07, 0xe6, 0x0c, 0x60, 0x79, 0xa4, 0x39, 0x8d, 0x38, 0x8f, 0x85, 0x1e, 0x79, 0x7c, 0xfc, 0x64, - 0x22, 0x8f, 0x1f, 0x80, 0x81, 0xb8, 0xde, 0x4e, 0xaa, 0xe1, 0x4e, 0xc0, 0xc2, 0xcb, 0x83, 0x33, - 0xef, 0x50, 0xce, 0x59, 0x01, 0xbf, 0xb3, 0x37, 0x39, 0x2e, 0xff, 0xd7, 0xfc, 0xb2, 0x02, 0x82, - 0xbe, 0xd1, 0xe5, 0x46, 0x8a, 0x7b, 0x9c, 0x37, 0x52, 0xce, 0x1f, 0xe9, 0x36, 0x4a, 0x5e, 0x78, - 0xf5, 0x89, 0xb7, 0x5d, 0x78, 0xf5, 0x6b, 0x0e, 0x8c, 0x6c, 0xeb, 0x4e, 0x70, 0x11, 0x02, 0xb6, - 0x90, 0x8a, 0x62, 0xf8, 0xd6, 0x67, 0x5c, 0x2a, 0xe7, 0x0c, 0xd0, 0x9d, 0x2c, 0x00, 0x9b, 0x23, - 0xc9, 0x49, 0x93, 0x79, 0xf2, 0x41, 0xa5, 0xc9, 0xbc, 0xc1, 0xe4, 0x98, 0x34, 0x72, 0x59, 0x5c, - 0xd8, 0x6e, 0x96, 0xac, 0x94, 0x89, 0x2a, 0x49, 0x56, 0xe7, 0x87, 0xbe, 0xe0, 0xc0, 0xb8, 0xb4, - 0xcb, 0x44, 0x10, 0x2b, 0x16, 0x79, 0x7e, 0x36, 0xcd, 0x41, 0x96, 0x28, 0xbe, 0x9e, 0xe1, 0x83, - 0x3b, 0x38, 0x53, 0xa9, 0xae, 0xd2, 0xaa, 0x6a, 0x31, 0x4b, 0x67, 0x15, 0x3a, 0xcc, 0x74, 0x0a, - 0xc6, 0x3a, 0x0e, 0xfa, 0xa6, 0xfa, 0xdc, 0xf7, 0x33, 0x4c, 0xa0, 0xbf, 0x64, 0x59, 0x37, 0xb5, - 0xf1, 0xcd, 0x6f, 0xf4, 0x25, 0x07, 0xc6, 0x77, 0x32, 0x0e, 0x0d, 0x91, 0xe8, 0x88, 0xed, 0xbb, - 0x4a, 0xf8, 0x72, 0x67, 0xa1, 0xb8, 0x63, 0x04, 0xe8, 0x36, 0x80, 0xa7, 0x1c, 0xdd, 0x22, 0x21, - 0x72, 0xd9, 0x66, 0xf0, 0x80, 0x5f, 0xd5, 0x4a, 0x7f, 0x63, 0x8d, 0xdf, 0x7d, 0xe7, 0x38, 0xbc, - 0xad, 0xbe, 0xa4, 0xfe, 0x5f, 0x4e, 0xc3, 0xa8, 0x19, 0x9f, 0x42, 0xef, 0x32, 0xeb, 0xe1, 0x5f, - 0xc8, 0x96, 0x16, 0x1f, 0x91, 0xf8, 0x46, 0x79, 0x71, 0xa3, 0xfe, 0x77, 0xe1, 0x58, 0xeb, 0x7f, - 0xf7, 0x9c, 0x4c, 0xfd, 0xef, 0xf1, 0xe3, 0xa8, 0xff, 0x7d, 0xea, 0x48, 0xf5, 0xbf, 0xb5, 0xfa, - 0xeb, 0xbd, 0x77, 0xa9, 0xbf, 0x3e, 0x0d, 0x63, 0xf2, 0xfe, 0x0a, 0x11, 0x85, 0x9d, 0x79, 0xe8, - 0xfa, 0xbc, 0xe8, 0x32, 0x36, 0x6b, 0x36, 0xe3, 0x2c, 0x3e, 0xfa, 0xbc, 0x03, 0xc5, 0x80, 0xf5, - 0xec, 0xb3, 0xf5, 0x31, 0x14, 0x73, 0x6b, 0x31, 0x83, 0x59, 0x08, 0x25, 0x99, 0xb1, 0x5b, 0x64, - 0xb0, 0x3b, 0xf2, 0x1f, 0xcc, 0x47, 0x80, 0x5e, 0x81, 0x52, 0xb8, 0xb9, 0xd9, 0x08, 0xbd, 0x6a, - 0x5a, 0xa4, 0x5c, 0xc6, 0xd6, 0xf9, 0xfd, 0x43, 0x55, 0x49, 0x73, 0xb5, 0x0b, 0x1e, 0xee, 0x4a, - 0x01, 0x7d, 0x87, 0xaa, 0x22, 0x49, 0x18, 0x91, 0x6a, 0xea, 0x9d, 0x19, 0x64, 0x73, 0x26, 0xd6, - 0xe7, 0x5c, 0x36, 0xf9, 0xf0, 0xd9, 0xab, 0x87, 0x92, 0x69, 0xc5, 0xd9, 0x61, 0xa1, 0x08, 0xce, - 0xb5, 0xf2, 0x9c, 0x43, 0xb1, 0xb8, 0x75, 0x73, 0x90, 0x8b, 0x4a, 0xbe, 0xba, 0xe7, 0x72, 0xdd, - 0x4b, 0x31, 0xee, 0x42, 0x59, 0x2f, 0x5f, 0x3e, 0x70, 0x32, 0xe5, 0xcb, 0x3f, 0x0e, 0x50, 0x91, - 0xb5, 0xa0, 0xa4, 0xbb, 0x61, 0xc9, 0xca, 0x75, 0x10, 0x4e, 0x53, 0xfb, 0x56, 0xa2, 0x62, 0x83, - 0x35, 0x96, 0xe8, 0xff, 0xe4, 0x56, 0xda, 0xe7, 0x3e, 0x95, 0x9a, 0xf5, 0x3d, 0xf1, 0xb6, 0xab, - 0xb6, 0xff, 0x0f, 0x1d, 0x98, 0xe0, 0x3b, 0x2f, 0xab, 0xce, 0x53, 0x65, 0x42, 0xdc, 0x4f, 0xb1, - 0x9d, 0x7e, 0xc1, 0x32, 0xd1, 0xca, 0x06, 0x57, 0x16, 0xac, 0x3d, 0x60, 0x24, 0xe8, 0x2b, 0x39, - 0x46, 0xc4, 0x98, 0x2d, 0x2f, 0x65, 0x7e, 0x95, 0xf6, 0xd3, 0xfb, 0x87, 0xb1, 0x1b, 0xfe, 0x49, - 0x57, 0x27, 0x2a, 0x62, 0xc3, 0xfb, 0x6b, 0xc7, 0xe4, 0x44, 0xd5, 0x4b, 0xc9, 0x1f, 0xc9, 0x95, - 0xfa, 0x45, 0x07, 0xc6, 0xbd, 0x4c, 0xba, 0x04, 0xf3, 0xfc, 0x58, 0xf1, 0x42, 0x4d, 0x47, 0x69, - 0x0e, 0x06, 0x53, 0xeb, 0xb2, 0x99, 0x19, 0xb8, 0x83, 0xf9, 0xc4, 0x67, 0x1c, 0xfe, 0xfd, 0x99, - 0xae, 0x7a, 0xd1, 0x86, 0xa9, 0x17, 0x2d, 0xdb, 0xfc, 0x02, 0x86, 0xae, 0xa0, 0xfd, 0xaa, 0x03, - 0x67, 0xf2, 0xc4, 0x76, 0xce, 0x90, 0x3e, 0x62, 0x0e, 0xc9, 0xa2, 0xf1, 0xa1, 0x0f, 0xc8, 0x4e, - 0xd9, 0xff, 0x3f, 0x1a, 0xd4, 0x82, 0x69, 0x09, 0x69, 0x59, 0x4f, 0xae, 0x0d, 0xa0, 0xcf, 0x0f, - 0x1a, 0x7e, 0x40, 0xc4, 0x45, 0x3a, 0x9b, 0xa6, 0x98, 0xf8, 0xcc, 0x06, 0xa5, 0x8e, 0x05, 0x97, - 0x07, 0x1c, 0x5b, 0xcb, 0x7e, 0x42, 0xa8, 0xf7, 0xe4, 0x3f, 0x21, 0xb4, 0x03, 0x83, 0x3b, 0x7e, - 0x52, 0x67, 0x39, 0x01, 0x22, 0x64, 0x65, 0xe1, 0x02, 0x1a, 0x25, 0x97, 0xce, 0xfd, 0xa6, 0x64, - 0x80, 0x53, 0x5e, 0xe8, 0x22, 0x67, 0xcc, 0x52, 0x6a, 0xb3, 0xb9, 0x8e, 0x37, 0x65, 0x03, 0x4e, - 0x71, 0xe8, 0x62, 0x0d, 0xd3, 0x5f, 0xb2, 0xd0, 0x8c, 0x28, 0x46, 0x6a, 0xa3, 0xc8, 0x9c, 0xa0, - 0xc8, 0xaf, 0x79, 0xde, 0xd4, 0x78, 0x60, 0x83, 0xa3, 0xaa, 0x07, 0x3b, 0xd0, 0xb5, 0x1e, 0xec, - 0x6d, 0xa6, 0x85, 0x24, 0x7e, 0xd0, 0x26, 0xab, 0x81, 0x48, 0xc4, 0x5d, 0xb6, 0x73, 0x29, 0x95, - 0xd3, 0xe4, 0x76, 0x65, 0xfa, 0x1b, 0x6b, 0xfc, 0xb4, 0xc8, 0xc1, 0xd0, 0x81, 0x91, 0x83, 0xd4, - 0x73, 0x30, 0x6c, 0xdd, 0x73, 0x90, 0x90, 0x96, 0x15, 0xcf, 0xc1, 0xdb, 0xca, 0xc6, 0xfd, 0x53, - 0x07, 0x90, 0x52, 0x26, 0xbc, 0x78, 0x4b, 0x7c, 0xf7, 0xed, 0xf8, 0xb3, 0xdd, 0x3e, 0xe1, 0x00, - 0x04, 0xea, 0x43, 0x73, 0x76, 0x4f, 0x2d, 0x4e, 0x33, 0x1d, 0x40, 0x0a, 0xc3, 0x1a, 0x4f, 0xf7, - 0x7f, 0x38, 0x69, 0x52, 0x69, 0x3a, 0xf7, 0x13, 0xc8, 0x85, 0xda, 0x35, 0x73, 0xa1, 0xd6, 0x2d, - 0x7a, 0xa0, 0xd5, 0x34, 0xba, 0x64, 0x45, 0xfd, 0xb4, 0x00, 0x63, 0x3a, 0x72, 0x99, 0x9c, 0xc4, - 0xc3, 0xde, 0x31, 0x52, 0x1b, 0xaf, 0xdb, 0x9d, 0x6f, 0x59, 0x04, 0x32, 0xf2, 0xd2, 0x68, 0x3f, - 0x9e, 0x49, 0xa3, 0xbd, 0x69, 0x9f, 0xf5, 0xc1, 0xb9, 0xb4, 0xff, 0xcd, 0x81, 0xd3, 0x99, 0x1e, - 0x27, 0xb0, 0xc1, 0xb6, 0xcd, 0x0d, 0xf6, 0xa2, 0xf5, 0x59, 0x77, 0xd9, 0x5d, 0xdf, 0x2a, 0x74, - 0xcc, 0x96, 0x59, 0x26, 0x9f, 0x76, 0xa0, 0x98, 0x78, 0xf1, 0x96, 0x4c, 0x4b, 0xfa, 0xc8, 0xb1, - 0xec, 0x80, 0x29, 0xfa, 0xbf, 0x90, 0xce, 0x6a, 0x7c, 0x0c, 0x86, 0x39, 0xf7, 0x89, 0x4f, 0x39, - 0x00, 0x29, 0xd2, 0x83, 0x52, 0x59, 0xdd, 0xef, 0x16, 0xe0, 0x6c, 0xee, 0x36, 0x42, 0x9f, 0x55, - 0x6e, 0x26, 0xc7, 0x76, 0xd2, 0x9d, 0xc1, 0x48, 0xf7, 0x36, 0x8d, 0x18, 0xde, 0x26, 0xe1, 0x64, - 0x7a, 0x50, 0x06, 0x87, 0x10, 0xd3, 0xda, 0x62, 0xfd, 0xc4, 0x49, 0xf3, 0x38, 0x55, 0xc1, 0x99, - 0x3f, 0x83, 0xb7, 0x2b, 0xdc, 0x9f, 0x6a, 0xa9, 0xe7, 0x72, 0xa2, 0x27, 0x20, 0x2b, 0x76, 0x4c, - 0x59, 0x81, 0xed, 0x87, 0x43, 0xbb, 0x08, 0x8b, 0x8f, 0x42, 0x5e, 0x7c, 0xf4, 0x70, 0xd5, 0xea, - 0x8c, 0x7b, 0x8a, 0x85, 0x43, 0xdf, 0x53, 0x1c, 0x81, 0xa1, 0x97, 0xfd, 0x96, 0x0a, 0xe5, 0x4d, - 0x7d, 0xff, 0xc7, 0x17, 0x1e, 0xfa, 0xc1, 0x8f, 0x2f, 0x3c, 0xf4, 0xa3, 0x1f, 0x5f, 0x78, 0xe8, - 0x13, 0xfb, 0x17, 0x9c, 0xef, 0xef, 0x5f, 0x70, 0x7e, 0xb0, 0x7f, 0xc1, 0xf9, 0xd1, 0xfe, 0x05, - 0xe7, 0x3f, 0xec, 0x5f, 0x70, 0xfe, 0xd6, 0x7f, 0xbc, 0xf0, 0xd0, 0xcb, 0x03, 0x72, 0x62, 0xff, - 0x3f, 0x00, 0x00, 0xff, 0xff, 0xb3, 0xba, 0x03, 0x3b, 0x06, 0xd0, 0x00, 0x00, + // 10681 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x7d, 0x6d, 0x70, 0x24, 0xc7, + 0x75, 0x18, 0x67, 0x81, 0xc5, 0xc7, 0xc3, 0xe7, 0xf5, 0x7d, 0x2d, 0x41, 0xf2, 0x40, 0x0f, 0x45, + 0x86, 0xb4, 0x29, 0x9c, 0x79, 0x94, 0x12, 0xc6, 0x4a, 0x24, 0xe1, 0xe3, 0x80, 0x03, 0x01, 0x1c, + 0xc0, 0x5e, 0xdc, 0x9d, 0x49, 0x31, 0x92, 0x06, 0xbb, 0x8d, 0xdd, 0x21, 0x76, 0x67, 0x56, 0x33, + 0xb3, 0xc0, 0x81, 0x1f, 0x92, 0x22, 0xeb, 0x33, 0x56, 0xac, 0xc4, 0x96, 0x64, 0x49, 0x49, 0xaa, + 0x14, 0x45, 0x4a, 0x54, 0x8a, 0x2b, 0x29, 0xb9, 0xf2, 0x23, 0x65, 0xff, 0x4b, 0xa5, 0x5c, 0x4a, + 0x39, 0x55, 0x91, 0xcb, 0x4c, 0xa4, 0x1f, 0x31, 0x18, 0x21, 0x89, 0xaa, 0xf2, 0xa1, 0xaa, 0x58, + 0x15, 0x3b, 0xf6, 0xe5, 0xa3, 0x52, 0xfd, 0x39, 0xdd, 0xb3, 0xb3, 0x38, 0x00, 0xd7, 0xc0, 0xb1, + 0xec, 0x5f, 0xc0, 0xbe, 0x7e, 0xfd, 0x5e, 0x77, 0x4f, 0xf7, 0xeb, 0xd7, 0xef, 0xbd, 0x7e, 0x0d, + 0x6b, 0x35, 0x3f, 0xa9, 0xb7, 0x37, 0xa6, 0x2a, 0x61, 0xf3, 0xb2, 0x17, 0xd5, 0xc2, 0x56, 0x14, + 0xbe, 0xc2, 0xfe, 0x79, 0xe7, 0x4e, 0x18, 0x6d, 0x6d, 0x36, 0xc2, 0x9d, 0xf8, 0xf2, 0xf6, 0xb3, + 0x97, 0x5b, 0x5b, 0xb5, 0xcb, 0x5e, 0xcb, 0x8f, 0x2f, 0x4b, 0xe8, 0xe5, 0xed, 0x67, 0xbc, 0x46, + 0xab, 0xee, 0x3d, 0x73, 0xb9, 0x46, 0x02, 0x12, 0x79, 0x09, 0xa9, 0x4e, 0xb5, 0xa2, 0x30, 0x09, + 0xd1, 0xfb, 0x53, 0x8a, 0x53, 0x92, 0x22, 0xfb, 0xe7, 0x43, 0x8a, 0xe2, 0xd4, 0xf6, 0xb3, 0x53, + 0xad, 0xad, 0xda, 0x14, 0xa5, 0x38, 0x25, 0xa1, 0x53, 0x92, 0xe2, 0xc4, 0x3b, 0xb5, 0x36, 0xd5, + 0xc2, 0x5a, 0x78, 0x99, 0x11, 0xde, 0x68, 0x6f, 0xb2, 0x5f, 0xec, 0x07, 0xfb, 0x8f, 0x33, 0x9c, + 0x70, 0xb7, 0x9e, 0x8b, 0xa7, 0xfc, 0x90, 0xb6, 0xef, 0x72, 0x25, 0x8c, 0xc8, 0xe5, 0xed, 0x8e, + 0x46, 0x4d, 0xbc, 0x43, 0xc3, 0x69, 0x85, 0x0d, 0xbf, 0xb2, 0x9b, 0x87, 0xf5, 0xae, 0x14, 0xab, + 0xe9, 0x55, 0xea, 0x7e, 0x40, 0xa2, 0xdd, 0xb4, 0xeb, 0x4d, 0x92, 0x78, 0x79, 0xb5, 0x2e, 0x77, + 0xab, 0x15, 0xb5, 0x83, 0xc4, 0x6f, 0x92, 0x8e, 0x0a, 0x7f, 0xf1, 0x6e, 0x15, 0xe2, 0x4a, 0x9d, + 0x34, 0xbd, 0x8e, 0x7a, 0xcf, 0x76, 0xab, 0xd7, 0x4e, 0xfc, 0xc6, 0x65, 0x3f, 0x48, 0xe2, 0x24, + 0xca, 0x56, 0x72, 0xaf, 0x42, 0xdf, 0x74, 0x33, 0x6c, 0x07, 0x09, 0x7a, 0x0f, 0x14, 0xb7, 0xbd, + 0x46, 0x9b, 0x94, 0x9c, 0x47, 0x9d, 0x27, 0x07, 0x67, 0x1e, 0xff, 0xde, 0xde, 0xe4, 0x03, 0xfb, + 0x7b, 0x93, 0xc5, 0x9b, 0x14, 0x78, 0x67, 0x6f, 0xf2, 0x1c, 0x09, 0x2a, 0x61, 0xd5, 0x0f, 0x6a, + 0x97, 0x5f, 0x89, 0xc3, 0x60, 0xea, 0x7a, 0xbb, 0xb9, 0x41, 0x22, 0xcc, 0xeb, 0xb8, 0xbf, 0x5f, + 0x80, 0xb1, 0xe9, 0xa8, 0x52, 0xf7, 0xb7, 0x49, 0x39, 0xa1, 0xf4, 0x6b, 0xbb, 0xa8, 0x0e, 0x3d, + 0x89, 0x17, 0x31, 0x72, 0x43, 0x57, 0x56, 0xa6, 0xee, 0xf5, 0xbb, 0x4f, 0xad, 0x7b, 0x91, 0xa4, + 0x3d, 0xd3, 0xbf, 0xbf, 0x37, 0xd9, 0xb3, 0xee, 0x45, 0x98, 0xb2, 0x40, 0x0d, 0xe8, 0x0d, 0xc2, + 0x80, 0x94, 0x0a, 0x8c, 0xd5, 0xf5, 0x7b, 0x67, 0x75, 0x3d, 0x0c, 0x54, 0x3f, 0x66, 0x06, 0xf6, + 0xf7, 0x26, 0x7b, 0x29, 0x04, 0x33, 0x2e, 0xb4, 0x5f, 0xaf, 0xfa, 0xad, 0x52, 0x8f, 0xad, 0x7e, + 0xbd, 0xe4, 0xb7, 0xcc, 0x7e, 0xbd, 0xe4, 0xb7, 0x30, 0x65, 0xe1, 0x7e, 0xae, 0x00, 0x83, 0xd3, + 0x51, 0xad, 0xdd, 0x24, 0x41, 0x12, 0xa3, 0x8f, 0x01, 0xb4, 0xbc, 0xc8, 0x6b, 0x92, 0x84, 0x44, + 0x71, 0xc9, 0x79, 0xb4, 0xe7, 0xc9, 0xa1, 0x2b, 0x4b, 0xf7, 0xce, 0x7e, 0x4d, 0xd2, 0x9c, 0x41, + 0xe2, 0x93, 0x83, 0x02, 0xc5, 0x58, 0x63, 0x89, 0x5e, 0x83, 0x41, 0x2f, 0x4a, 0xfc, 0x4d, 0xaf, + 0x92, 0xc4, 0xa5, 0x02, 0xe3, 0xff, 0xfc, 0xbd, 0xf3, 0x9f, 0x16, 0x24, 0x67, 0xce, 0x08, 0xf6, + 0x83, 0x12, 0x12, 0xe3, 0x94, 0x9f, 0xfb, 0x5b, 0xbd, 0x30, 0x34, 0x1d, 0x25, 0x0b, 0xb3, 0xe5, + 0xc4, 0x4b, 0xda, 0x31, 0xfa, 0x5d, 0x07, 0xce, 0xc6, 0x7c, 0xd8, 0x7c, 0x12, 0xaf, 0x45, 0x61, + 0x85, 0xc4, 0x31, 0xa9, 0x8a, 0x71, 0xd9, 0xb4, 0xd2, 0x2e, 0xc9, 0x6c, 0xaa, 0xdc, 0xc9, 0xe8, + 0x6a, 0x90, 0x44, 0xbb, 0x33, 0xcf, 0x88, 0x36, 0x9f, 0xcd, 0xc1, 0xf8, 0xc4, 0x5b, 0x93, 0x48, + 0x76, 0x85, 0x52, 0xe2, 0x9f, 0x18, 0xe7, 0xb5, 0x1a, 0x7d, 0xd5, 0x81, 0xe1, 0x56, 0x58, 0x8d, + 0x31, 0xa9, 0x84, 0xed, 0x16, 0xa9, 0x8a, 0xe1, 0xfd, 0x90, 0xdd, 0x6e, 0xac, 0x69, 0x1c, 0x78, + 0xfb, 0xcf, 0x89, 0xf6, 0x0f, 0xeb, 0x45, 0xd8, 0x68, 0x0a, 0x7a, 0x0e, 0x86, 0x83, 0x30, 0x29, + 0xb7, 0x48, 0xc5, 0xdf, 0xf4, 0x49, 0x95, 0x4d, 0xfc, 0x81, 0xb4, 0xe6, 0x75, 0xad, 0x0c, 0x1b, + 0x98, 0x13, 0xf3, 0x50, 0xea, 0x36, 0x72, 0x68, 0x1c, 0x7a, 0xb6, 0xc8, 0x2e, 0x17, 0x36, 0x98, + 0xfe, 0x8b, 0xce, 0x49, 0x01, 0x44, 0x97, 0xf1, 0x80, 0x90, 0x2c, 0xbf, 0x50, 0x78, 0xce, 0x99, + 0x78, 0x1f, 0x9c, 0xe9, 0x68, 0xfa, 0x51, 0x08, 0xb8, 0xdf, 0xef, 0x83, 0x01, 0xf9, 0x29, 0xd0, + 0xa3, 0xd0, 0x1b, 0x78, 0x4d, 0x29, 0xe7, 0x86, 0x45, 0x3f, 0x7a, 0xaf, 0x7b, 0x4d, 0xba, 0xc2, + 0xbd, 0x26, 0xa1, 0x18, 0x2d, 0x2f, 0xa9, 0x33, 0x3a, 0x1a, 0xc6, 0x9a, 0x97, 0xd4, 0x31, 0x2b, + 0x41, 0x0f, 0x43, 0x6f, 0x33, 0xac, 0x12, 0x36, 0x16, 0x45, 0x2e, 0x21, 0x56, 0xc2, 0x2a, 0xc1, + 0x0c, 0x4a, 0xeb, 0x6f, 0x46, 0x61, 0xb3, 0xd4, 0x6b, 0xd6, 0x9f, 0x8f, 0xc2, 0x26, 0x66, 0x25, + 0xe8, 0x2b, 0x0e, 0x8c, 0xcb, 0xb9, 0xbd, 0x1c, 0x56, 0xbc, 0xc4, 0x0f, 0x83, 0x52, 0x91, 0x49, + 0x14, 0x6c, 0x6f, 0x49, 0x49, 0xca, 0x33, 0x25, 0xd1, 0x84, 0xf1, 0x6c, 0x09, 0xee, 0x68, 0x05, + 0xba, 0x02, 0x50, 0x6b, 0x84, 0x1b, 0x5e, 0x83, 0x0e, 0x48, 0xa9, 0x8f, 0x75, 0x41, 0x49, 0x86, + 0x05, 0x55, 0x82, 0x35, 0x2c, 0x74, 0x1b, 0xfa, 0x3d, 0x2e, 0xfd, 0x4b, 0xfd, 0xac, 0x13, 0x2f, + 0xd8, 0xe8, 0x84, 0xb1, 0x9d, 0xcc, 0x0c, 0xed, 0xef, 0x4d, 0xf6, 0x0b, 0x20, 0x96, 0xec, 0xd0, + 0xd3, 0x30, 0x10, 0xb6, 0x68, 0xbb, 0xbd, 0x46, 0x69, 0x80, 0x4d, 0xcc, 0x71, 0xd1, 0xd6, 0x81, + 0x55, 0x01, 0xc7, 0x0a, 0x03, 0x3d, 0x05, 0xfd, 0x71, 0x7b, 0x83, 0x7e, 0xc7, 0xd2, 0x20, 0xeb, + 0xd8, 0x98, 0x40, 0xee, 0x2f, 0x73, 0x30, 0x96, 0xe5, 0xe8, 0xdd, 0x30, 0x14, 0x91, 0x4a, 0x3b, + 0x8a, 0x09, 0xfd, 0xb0, 0x25, 0x60, 0xb4, 0xcf, 0x0a, 0xf4, 0x21, 0x9c, 0x16, 0x61, 0x1d, 0x0f, + 0xbd, 0x17, 0x46, 0xe9, 0x07, 0xbe, 0x7a, 0xbb, 0x15, 0x91, 0x38, 0xa6, 0x5f, 0x75, 0x88, 0x31, + 0xba, 0x20, 0x6a, 0x8e, 0xce, 0x1b, 0xa5, 0x38, 0x83, 0x8d, 0x5e, 0x07, 0xf0, 0x94, 0xcc, 0x28, + 0x0d, 0xb3, 0xc1, 0x5c, 0xb6, 0x37, 0x23, 0x16, 0x66, 0x67, 0x46, 0xe9, 0x77, 0x4c, 0x7f, 0x63, + 0x8d, 0x1f, 0x1d, 0x9f, 0x2a, 0x69, 0x90, 0x84, 0x54, 0x4b, 0x23, 0xac, 0xc3, 0x6a, 0x7c, 0xe6, + 0x38, 0x18, 0xcb, 0x72, 0xf7, 0xef, 0x14, 0x40, 0xa3, 0x82, 0x66, 0x60, 0x40, 0xc8, 0x35, 0xb1, + 0x24, 0x67, 0x9e, 0x90, 0xdf, 0x41, 0x7e, 0xc1, 0x3b, 0x7b, 0xb9, 0xf2, 0x50, 0xd5, 0x43, 0x6f, + 0xc0, 0x50, 0x2b, 0xac, 0xae, 0x90, 0xc4, 0xab, 0x7a, 0x89, 0x27, 0x76, 0x73, 0x0b, 0x3b, 0x8c, + 0xa4, 0x38, 0x33, 0x46, 0x3f, 0xdd, 0x5a, 0xca, 0x02, 0xeb, 0xfc, 0xd0, 0xf3, 0x80, 0x62, 0x12, + 0x6d, 0xfb, 0x15, 0x32, 0x5d, 0xa9, 0x50, 0x95, 0x88, 0x2d, 0x80, 0x1e, 0xd6, 0x99, 0x09, 0xd1, + 0x19, 0x54, 0xee, 0xc0, 0xc0, 0x39, 0xb5, 0xdc, 0x37, 0x0b, 0x30, 0xaa, 0xf5, 0xb5, 0x45, 0x2a, + 0xe8, 0xdb, 0x0e, 0x8c, 0xa9, 0xed, 0x6c, 0x66, 0xf7, 0x3a, 0x9d, 0x55, 0x7c, 0xb3, 0x22, 0x36, + 0xbf, 0x2f, 0xe5, 0xa5, 0x7e, 0x0a, 0x3e, 0x5c, 0xd6, 0x5f, 0x14, 0x7d, 0x18, 0xcb, 0x94, 0xe2, + 0x6c, 0xb3, 0x26, 0xbe, 0xec, 0xc0, 0xb9, 0x3c, 0x12, 0x39, 0x32, 0xb7, 0xae, 0xcb, 0x5c, 0xab, + 0xc2, 0x8b, 0x72, 0xa5, 0x9d, 0xd1, 0xe5, 0xf8, 0xff, 0x2b, 0xc0, 0xb8, 0x3e, 0x85, 0x98, 0x26, + 0xf0, 0x2f, 0x1c, 0x38, 0x2f, 0x7b, 0x80, 0x49, 0xdc, 0x6e, 0x64, 0x86, 0xb7, 0x69, 0x75, 0x78, + 0xf9, 0x4e, 0x3a, 0x9d, 0xc7, 0x8f, 0x0f, 0xf3, 0x23, 0x62, 0x98, 0xcf, 0xe7, 0xe2, 0xe0, 0xfc, + 0xa6, 0x4e, 0x7c, 0xd3, 0x81, 0x89, 0xee, 0x44, 0x73, 0x06, 0xbe, 0x65, 0x0e, 0xfc, 0x4b, 0xf6, + 0x3a, 0xc9, 0xd9, 0xb3, 0xe1, 0x67, 0x9d, 0xd5, 0x3f, 0xc0, 0x6f, 0x0c, 0x40, 0xc7, 0x1e, 0x82, + 0x9e, 0x81, 0x21, 0x21, 0x8e, 0x97, 0xc3, 0x5a, 0xcc, 0x1a, 0x39, 0xc0, 0xd7, 0xda, 0x74, 0x0a, + 0xc6, 0x3a, 0x0e, 0xaa, 0x42, 0x21, 0x7e, 0x56, 0x34, 0xdd, 0x82, 0x78, 0x2b, 0x3f, 0xab, 0xb4, + 0xc8, 0xbe, 0xfd, 0xbd, 0xc9, 0x42, 0xf9, 0x59, 0x5c, 0x88, 0x9f, 0xa5, 0x9a, 0x7a, 0xcd, 0x4f, + 0xec, 0x69, 0xea, 0x0b, 0x7e, 0xa2, 0xf8, 0x30, 0x4d, 0x7d, 0xc1, 0x4f, 0x30, 0x65, 0x41, 0x4f, + 0x20, 0xf5, 0x24, 0x69, 0xb1, 0x1d, 0xdf, 0xca, 0x09, 0xe4, 0xda, 0xfa, 0xfa, 0x9a, 0xe2, 0xc5, + 0xf4, 0x0b, 0x0a, 0xc1, 0x8c, 0x0b, 0xfa, 0xac, 0x43, 0x47, 0x9c, 0x17, 0x86, 0xd1, 0xae, 0x50, + 0x1c, 0x6e, 0xd8, 0x9b, 0x02, 0x61, 0xb4, 0xab, 0x98, 0x8b, 0x0f, 0xa9, 0x0a, 0xb0, 0xce, 0x9a, + 0x75, 0xbc, 0xba, 0x19, 0x33, 0x3d, 0xc1, 0x4e, 0xc7, 0xe7, 0xe6, 0xcb, 0x99, 0x8e, 0xcf, 0xcd, + 0x97, 0x31, 0xe3, 0x42, 0x3f, 0x68, 0xe4, 0xed, 0x08, 0x1d, 0xc3, 0xc2, 0x07, 0xc5, 0xde, 0x8e, + 0xf9, 0x41, 0xb1, 0xb7, 0x83, 0x29, 0x0b, 0xca, 0x29, 0x8c, 0x63, 0xa6, 0x52, 0x58, 0xe1, 0xb4, + 0x5a, 0x2e, 0x9b, 0x9c, 0x56, 0xcb, 0x65, 0x4c, 0x59, 0xb0, 0x49, 0x5a, 0x89, 0x99, 0x3e, 0x62, + 0x67, 0x92, 0xce, 0x66, 0x38, 0x2d, 0xcc, 0x96, 0x31, 0x65, 0x41, 0x45, 0x86, 0xf7, 0x6a, 0x3b, + 0xe2, 0xca, 0xcc, 0xd0, 0x95, 0x55, 0x0b, 0xf3, 0x85, 0x92, 0x53, 0xdc, 0x06, 0xf7, 0xf7, 0x26, + 0x8b, 0x0c, 0x84, 0x39, 0x23, 0xf7, 0x77, 0x7a, 0x52, 0x71, 0x21, 0xe5, 0x39, 0xfa, 0xdb, 0x6c, + 0x23, 0x14, 0xb2, 0x40, 0xa8, 0xbe, 0xce, 0x89, 0xa9, 0xbe, 0x67, 0xf9, 0x8e, 0x67, 0xb0, 0xc3, + 0x59, 0xfe, 0xe8, 0x57, 0x9d, 0xce, 0xb3, 0xad, 0x67, 0x7f, 0x2f, 0x4b, 0x37, 0x66, 0xbe, 0x57, + 0x1c, 0x78, 0xe4, 0x9d, 0xf8, 0xac, 0x93, 0x2a, 0x11, 0x71, 0xb7, 0x7d, 0xe0, 0xc3, 0xe6, 0x3e, + 0x60, 0xf1, 0x40, 0xae, 0xcb, 0xfd, 0xcf, 0x39, 0x30, 0x22, 0xe1, 0x54, 0x3d, 0x8e, 0xd1, 0x6d, + 0x18, 0x90, 0x2d, 0x15, 0x5f, 0xcf, 0xa6, 0x2d, 0x40, 0x29, 0xf1, 0xaa, 0x31, 0x8a, 0x9b, 0xfb, + 0xed, 0x3e, 0x40, 0xe9, 0x5e, 0xd5, 0x0a, 0x63, 0x9f, 0x49, 0xa2, 0x63, 0xec, 0x42, 0x81, 0xb6, + 0x0b, 0xdd, 0xb4, 0xb9, 0x0b, 0xa5, 0xcd, 0x32, 0xf6, 0xa3, 0x5f, 0xcd, 0xc8, 0x6d, 0xbe, 0x31, + 0x7d, 0xe8, 0x44, 0xe4, 0xb6, 0xd6, 0x84, 0x83, 0x25, 0xf8, 0xb6, 0x90, 0xe0, 0x7c, 0xeb, 0xfa, + 0x45, 0xbb, 0x12, 0x5c, 0x6b, 0x45, 0x56, 0x96, 0x47, 0x5c, 0xc2, 0xf2, 0xbd, 0xeb, 0x96, 0x55, + 0x09, 0xab, 0x71, 0x35, 0x65, 0x6d, 0xc4, 0x65, 0x6d, 0x9f, 0x2d, 0x9e, 0x9a, 0xac, 0xcd, 0xf2, + 0x54, 0x52, 0xf7, 0x55, 0x29, 0x75, 0xf9, 0xae, 0xf5, 0xa2, 0x65, 0xa9, 0xab, 0xf1, 0xed, 0x94, + 0xbf, 0x1f, 0x81, 0xf3, 0x9d, 0x78, 0x98, 0x6c, 0xa2, 0xcb, 0x30, 0x58, 0x09, 0x83, 0x4d, 0xbf, + 0xb6, 0xe2, 0xb5, 0xc4, 0x79, 0x4d, 0xc9, 0xa2, 0x59, 0x59, 0x80, 0x53, 0x1c, 0xf4, 0x08, 0x17, + 0x3c, 0xdc, 0x22, 0x32, 0x24, 0x50, 0x7b, 0x96, 0xc8, 0x2e, 0x93, 0x42, 0xbf, 0x30, 0xf0, 0x95, + 0xaf, 0x4f, 0x3e, 0xf0, 0xf1, 0x7f, 0xff, 0xe8, 0x03, 0xee, 0xef, 0xf5, 0xc0, 0x43, 0xb9, 0x3c, + 0x85, 0xb6, 0xfe, 0x1b, 0x86, 0xb6, 0xae, 0x95, 0x0b, 0x29, 0x72, 0xcb, 0xa6, 0x22, 0xab, 0x91, + 0xcf, 0xd3, 0xcb, 0xb5, 0x62, 0x9c, 0xdf, 0x28, 0x3a, 0x50, 0x81, 0xd7, 0x24, 0x71, 0xcb, 0xab, + 0x10, 0xd1, 0x7b, 0x35, 0x50, 0xd7, 0x65, 0x01, 0x4e, 0x71, 0xf8, 0x11, 0x7a, 0xd3, 0x6b, 0x37, + 0x12, 0x61, 0x28, 0xd3, 0x8e, 0xd0, 0x0c, 0x8c, 0x65, 0x39, 0xfa, 0xbb, 0x0e, 0xa0, 0x4e, 0xae, + 0x62, 0x21, 0xae, 0x9f, 0xc4, 0x38, 0xcc, 0x5c, 0xd8, 0xd7, 0x0e, 0xe1, 0x5a, 0x4f, 0x73, 0xda, + 0xa1, 0x7d, 0xd3, 0x8f, 0xa6, 0xfb, 0x10, 0x3f, 0x1c, 0x1c, 0xc2, 0x86, 0xc6, 0x4c, 0x2d, 0x95, + 0x0a, 0x89, 0x63, 0x6e, 0x8e, 0xd3, 0x4d, 0x2d, 0x0c, 0x8c, 0x65, 0x39, 0x9a, 0x84, 0x22, 0x89, + 0xa2, 0x30, 0x12, 0x67, 0x6d, 0x36, 0x8d, 0xaf, 0x52, 0x00, 0xe6, 0x70, 0xf7, 0xc7, 0x05, 0x28, + 0x75, 0x3b, 0x9d, 0xa0, 0xdf, 0xd4, 0xce, 0xd5, 0xe2, 0xe4, 0x24, 0x0e, 0x7e, 0xe1, 0xc9, 0x9d, + 0x89, 0xb2, 0x07, 0xc0, 0x2e, 0x27, 0x6c, 0x51, 0x8a, 0xb3, 0x0d, 0x9c, 0xf8, 0xa2, 0x76, 0xc2, + 0xd6, 0x49, 0xe4, 0x6c, 0xf0, 0x9b, 0xe6, 0x06, 0xbf, 0x66, 0xbb, 0x53, 0xfa, 0x36, 0xff, 0x07, + 0x45, 0x38, 0x2b, 0x4b, 0xcb, 0x84, 0x6e, 0x95, 0x2f, 0xb4, 0x49, 0xb4, 0x8b, 0x7e, 0xe0, 0xc0, + 0x39, 0x2f, 0x6b, 0xba, 0xf1, 0xc9, 0x09, 0x0c, 0xb4, 0xc6, 0x75, 0x6a, 0x3a, 0x87, 0x23, 0x1f, + 0xe8, 0x2b, 0x62, 0xa0, 0xcf, 0xe5, 0xa1, 0x74, 0xb1, 0xbb, 0xe7, 0x76, 0x00, 0x3d, 0x07, 0xc3, + 0x12, 0xce, 0xcc, 0x3d, 0x7c, 0x89, 0x2b, 0xe3, 0xf6, 0xb4, 0x56, 0x86, 0x0d, 0x4c, 0x5a, 0x33, + 0x21, 0xcd, 0x56, 0xc3, 0x4b, 0x88, 0x66, 0x28, 0x52, 0x35, 0xd7, 0xb5, 0x32, 0x6c, 0x60, 0xa2, + 0x27, 0xa0, 0x2f, 0x08, 0xab, 0x64, 0xb1, 0x2a, 0x0c, 0xc4, 0xa3, 0xa2, 0x4e, 0xdf, 0x75, 0x06, + 0xc5, 0xa2, 0x14, 0x3d, 0x9e, 0x5a, 0xe3, 0x8a, 0x6c, 0x09, 0x0d, 0xe5, 0x59, 0xe2, 0xd0, 0xdf, + 0x77, 0x60, 0x90, 0xd6, 0x58, 0xdf, 0x6d, 0x11, 0xba, 0xb7, 0xd1, 0x2f, 0x52, 0x3d, 0x99, 0x2f, + 0x72, 0x5d, 0xb2, 0x31, 0x4d, 0x1d, 0x83, 0x0a, 0xfe, 0x89, 0xb7, 0x26, 0x07, 0xe4, 0x0f, 0x9c, + 0xb6, 0x6a, 0x62, 0x01, 0x1e, 0xec, 0xfa, 0x35, 0x8f, 0xe4, 0x0a, 0xf8, 0x2b, 0x30, 0x6a, 0x36, + 0xe2, 0x48, 0x7e, 0x80, 0x7f, 0xae, 0x2d, 0x3b, 0xde, 0x2f, 0x21, 0xcf, 0xee, 0x9b, 0x36, 0xab, + 0x26, 0xc3, 0x9c, 0x98, 0x7a, 0xe6, 0x64, 0x98, 0x13, 0x93, 0x61, 0xce, 0xfd, 0x5d, 0x27, 0x5d, + 0x9a, 0x9a, 0x9a, 0x47, 0x37, 0xe6, 0x76, 0xd4, 0x10, 0x82, 0x58, 0x6d, 0xcc, 0x37, 0xf0, 0x32, + 0xa6, 0x70, 0xf4, 0x45, 0x4d, 0x3a, 0xd2, 0x6a, 0x6d, 0xe1, 0xd6, 0xb0, 0x64, 0xa2, 0x37, 0x08, + 0x77, 0xca, 0x3f, 0x51, 0x80, 0xb3, 0x4d, 0x70, 0x7f, 0xe4, 0xc0, 0x23, 0x07, 0x2a, 0xad, 0xb9, + 0x0d, 0x77, 0xee, 0x7b, 0xc3, 0xe9, 0xb6, 0x16, 0x91, 0x56, 0x78, 0x03, 0x2f, 0x8b, 0xef, 0xa5, + 0xb6, 0x35, 0xcc, 0xc1, 0x58, 0x96, 0xbb, 0x3f, 0x70, 0x20, 0x4b, 0x0f, 0x79, 0x30, 0xda, 0x8e, + 0x49, 0x44, 0x77, 0xc8, 0x32, 0xa9, 0x44, 0x44, 0xce, 0xb6, 0xc7, 0xa7, 0xb8, 0xf3, 0x9e, 0x36, + 0x78, 0xaa, 0x12, 0x46, 0x64, 0x6a, 0xfb, 0x99, 0x29, 0x8e, 0xb1, 0x44, 0x76, 0xcb, 0xa4, 0x41, + 0x28, 0x8d, 0x19, 0xb4, 0xbf, 0x37, 0x39, 0x7a, 0xc3, 0x20, 0x80, 0x33, 0x04, 0x29, 0x8b, 0x96, + 0x17, 0xc7, 0x3b, 0x61, 0x54, 0x15, 0x2c, 0x0a, 0x47, 0x66, 0xb1, 0x66, 0x10, 0xc0, 0x19, 0x82, + 0xee, 0x9b, 0xf4, 0x34, 0xa8, 0x2b, 0xa1, 0xe8, 0xeb, 0x54, 0x95, 0xa1, 0x90, 0x99, 0x46, 0xb8, + 0x31, 0x1b, 0x06, 0x89, 0xe7, 0x07, 0x44, 0xfa, 0xfe, 0xd7, 0x2d, 0xa9, 0xbc, 0x06, 0xed, 0xd4, + 0x24, 0xdf, 0x59, 0x86, 0x73, 0xda, 0x42, 0x55, 0x96, 0x8d, 0x46, 0xb8, 0x91, 0x75, 0xea, 0x51, + 0x24, 0xcc, 0x4a, 0xdc, 0x9f, 0x3a, 0x70, 0xb1, 0x8b, 0x6e, 0x8d, 0xbe, 0xec, 0xc0, 0xc8, 0xc6, + 0xdb, 0xa2, 0x6f, 0x66, 0x33, 0xd0, 0x7b, 0x61, 0x94, 0x02, 0xe8, 0xc6, 0x32, 0x1f, 0x46, 0x4d, + 0x2f, 0x11, 0x1d, 0x54, 0x0e, 0xa7, 0x19, 0xa3, 0x14, 0x67, 0xb0, 0xdd, 0x5f, 0x2b, 0x40, 0x0e, + 0x17, 0xf4, 0x34, 0x0c, 0x90, 0xa0, 0xda, 0x0a, 0xfd, 0x20, 0x11, 0xb2, 0x45, 0x09, 0xb1, 0xab, + 0x02, 0x8e, 0x15, 0x86, 0x38, 0x4e, 0x88, 0x81, 0x29, 0x74, 0x1c, 0x27, 0x44, 0xcb, 0x53, 0x1c, + 0x54, 0x83, 0x71, 0x8f, 0xbb, 0x4b, 0xd8, 0xdc, 0x63, 0xd3, 0xb4, 0xe7, 0x28, 0xd3, 0xf4, 0x1c, + 0xf3, 0x66, 0x66, 0x48, 0xe0, 0x0e, 0xa2, 0xe8, 0xdd, 0x30, 0xd4, 0x8e, 0x49, 0x79, 0x6e, 0x69, + 0x36, 0x22, 0x55, 0x7e, 0xc8, 0xd5, 0xdc, 0x78, 0x37, 0xd2, 0x22, 0xac, 0xe3, 0xb9, 0xff, 0xd2, + 0x81, 0xfe, 0x19, 0xaf, 0xb2, 0x15, 0x6e, 0x6e, 0xd2, 0xa1, 0xa8, 0xb6, 0xa3, 0xd4, 0x4e, 0xa5, + 0x0d, 0xc5, 0x9c, 0x80, 0x63, 0x85, 0x81, 0xd6, 0xa1, 0x8f, 0x2f, 0x78, 0xb1, 0xec, 0x7e, 0x5e, + 0xeb, 0x8f, 0x0a, 0xcb, 0x61, 0xd3, 0xa1, 0x9d, 0xf8, 0x8d, 0x29, 0x1e, 0x96, 0x33, 0xb5, 0x18, + 0x24, 0xab, 0x51, 0x39, 0x89, 0xfc, 0xa0, 0x36, 0x03, 0x54, 0xfa, 0xcf, 0x33, 0x1a, 0x58, 0xd0, + 0xa2, 0xdd, 0x68, 0x7a, 0xb7, 0x25, 0x3b, 0xa1, 0x6b, 0xa8, 0x6e, 0xac, 0xa4, 0x45, 0x58, 0xc7, + 0x73, 0x7f, 0xcf, 0x81, 0xc1, 0x19, 0x2f, 0xf6, 0x2b, 0x7f, 0x86, 0x84, 0xcf, 0x07, 0xa1, 0x38, + 0xeb, 0x55, 0xea, 0x04, 0xdd, 0xc8, 0x9e, 0x61, 0x87, 0xae, 0x3c, 0x99, 0xc7, 0x46, 0x9d, 0x67, + 0x75, 0x4e, 0x23, 0xdd, 0x4e, 0xba, 0xee, 0x5b, 0x0e, 0x8c, 0xce, 0x36, 0x7c, 0x12, 0x24, 0xb3, + 0x24, 0x4a, 0xd8, 0xc0, 0xd5, 0x60, 0xbc, 0xa2, 0x20, 0xc7, 0x19, 0x3a, 0x36, 0x5b, 0x67, 0x33, + 0x24, 0x70, 0x07, 0x51, 0x54, 0x85, 0x31, 0x0e, 0x4b, 0x57, 0xc5, 0x91, 0xc6, 0x8f, 0x19, 0x3b, + 0x67, 0x4d, 0x0a, 0x38, 0x4b, 0xd2, 0xfd, 0x89, 0x03, 0x17, 0x67, 0x1b, 0xed, 0x38, 0x21, 0xd1, + 0x2d, 0x21, 0x8d, 0xa4, 0xb6, 0x8a, 0x3e, 0x0c, 0x03, 0x4d, 0xe9, 0x80, 0x75, 0xee, 0x32, 0x81, + 0x99, 0x3c, 0xa3, 0xd8, 0xb4, 0x31, 0xab, 0x1b, 0xaf, 0x90, 0x4a, 0xb2, 0x42, 0x12, 0x2f, 0x8d, + 0x16, 0x48, 0x61, 0x58, 0x51, 0x45, 0x2d, 0xe8, 0x8d, 0x5b, 0xa4, 0x62, 0x2f, 0x58, 0x4b, 0xf6, + 0xa1, 0xdc, 0x22, 0x95, 0x54, 0xae, 0x33, 0xd7, 0x21, 0xe3, 0xe4, 0xfe, 0x6f, 0x07, 0x1e, 0xea, + 0xd2, 0xdf, 0x65, 0x3f, 0x4e, 0xd0, 0xcb, 0x1d, 0x7d, 0x9e, 0x3a, 0x5c, 0x9f, 0x69, 0x6d, 0xd6, + 0x63, 0x25, 0x10, 0x24, 0x44, 0xeb, 0xef, 0x47, 0xa1, 0xe8, 0x27, 0xa4, 0x29, 0xad, 0xca, 0x16, + 0xec, 0x3f, 0x5d, 0xfa, 0x32, 0x33, 0x22, 0x43, 0xf6, 0x16, 0x29, 0x3f, 0xcc, 0xd9, 0xba, 0x5b, + 0xd0, 0x37, 0x1b, 0x36, 0xda, 0xcd, 0xe0, 0x70, 0x81, 0x2f, 0xc9, 0x6e, 0x8b, 0x64, 0xf7, 0x48, + 0xa6, 0xcd, 0xb3, 0x12, 0x69, 0x07, 0xea, 0xc9, 0xb7, 0x03, 0xb9, 0xff, 0xca, 0x01, 0xba, 0xaa, + 0xaa, 0xbe, 0x70, 0x0c, 0x72, 0x72, 0x9c, 0xe1, 0x23, 0x3a, 0xb9, 0x3b, 0x7b, 0x93, 0x23, 0x0a, + 0x51, 0xa3, 0xff, 0x41, 0xe8, 0x8b, 0xd9, 0x09, 0x5b, 0xb4, 0x61, 0x5e, 0xaa, 0xc3, 0xfc, 0xdc, + 0x7d, 0x67, 0x6f, 0xf2, 0x50, 0x51, 0x98, 0x53, 0x8a, 0xb6, 0xf0, 0x61, 0x0a, 0xaa, 0x54, 0x7f, + 0x6b, 0x92, 0x38, 0xf6, 0x6a, 0xf2, 0xc0, 0xa6, 0xf4, 0xb7, 0x15, 0x0e, 0xc6, 0xb2, 0xdc, 0xfd, + 0x92, 0x03, 0x23, 0x6a, 0xf3, 0xa2, 0xda, 0x38, 0xba, 0xae, 0x6f, 0x73, 0x7c, 0xa6, 0x3c, 0xd2, + 0x45, 0xe2, 0x88, 0x8d, 0xfc, 0xe0, 0x5d, 0xf0, 0x5d, 0x30, 0x5c, 0x25, 0x2d, 0x12, 0x54, 0x49, + 0x50, 0xa1, 0xa7, 0x69, 0x3a, 0x43, 0x06, 0x67, 0xc6, 0xe9, 0xf1, 0x71, 0x4e, 0x83, 0x63, 0x03, + 0xcb, 0xfd, 0x86, 0x03, 0x0f, 0x2a, 0x72, 0x65, 0x92, 0x60, 0x92, 0x44, 0xbb, 0x2a, 0xea, 0xf2, + 0x68, 0xbb, 0xd5, 0x2d, 0xaa, 0xce, 0x26, 0x11, 0x67, 0x7e, 0xbc, 0xed, 0x6a, 0x88, 0x2b, 0xbf, + 0x8c, 0x08, 0x96, 0xd4, 0xdc, 0x5f, 0xe9, 0x81, 0x73, 0x7a, 0x23, 0x95, 0x80, 0xf9, 0x25, 0x07, + 0x40, 0x8d, 0x00, 0xdd, 0x90, 0x7b, 0xec, 0xb8, 0xa2, 0x8c, 0x2f, 0x95, 0x8a, 0x20, 0x05, 0x8e, + 0xb1, 0xc6, 0x16, 0xbd, 0x08, 0xc3, 0xdb, 0x74, 0x51, 0x90, 0x15, 0xaa, 0x2e, 0xc4, 0xa5, 0x1e, + 0xd6, 0x8c, 0xc9, 0xbc, 0x8f, 0x79, 0x33, 0xc5, 0x4b, 0x4f, 0xf7, 0x1a, 0x30, 0xc6, 0x06, 0x29, + 0x7a, 0x70, 0x19, 0x89, 0xf4, 0x4f, 0x22, 0x4c, 0xdc, 0x1f, 0xb0, 0xd8, 0xc7, 0xec, 0x57, 0x9f, + 0x39, 0xb3, 0xbf, 0x37, 0x39, 0x62, 0x80, 0xb0, 0xd9, 0x08, 0xf7, 0x45, 0x60, 0x63, 0xe1, 0x07, + 0x6d, 0xb2, 0x1a, 0xa0, 0xc7, 0xa4, 0xc9, 0x8d, 0xbb, 0x49, 0x94, 0xe4, 0xd0, 0xcd, 0x6e, 0xf4, + 0x68, 0xba, 0xe9, 0xf9, 0x0d, 0x16, 0x8d, 0x48, 0xb1, 0xd4, 0xd1, 0x74, 0x9e, 0x41, 0xb1, 0x28, + 0x75, 0xa7, 0xa0, 0x7f, 0x96, 0xf6, 0x9d, 0x44, 0x94, 0xae, 0x1e, 0x44, 0x3c, 0x62, 0x04, 0x11, + 0xcb, 0x60, 0xe1, 0x75, 0x38, 0x3f, 0x1b, 0x11, 0x2f, 0x21, 0xe5, 0x67, 0x67, 0xda, 0x95, 0x2d, + 0x92, 0xf0, 0x48, 0xad, 0x18, 0xbd, 0x07, 0x46, 0x42, 0xb6, 0x65, 0x2c, 0x87, 0x95, 0x2d, 0x3f, + 0xa8, 0x09, 0x0b, 0xea, 0x79, 0x41, 0x65, 0x64, 0x55, 0x2f, 0xc4, 0x26, 0xae, 0xfb, 0x9f, 0x0a, + 0x30, 0x3c, 0x1b, 0x85, 0x81, 0x14, 0x8b, 0xa7, 0xb0, 0x95, 0x25, 0xc6, 0x56, 0x66, 0xc1, 0x7b, + 0xa9, 0xb7, 0xbf, 0xdb, 0x76, 0x86, 0x5e, 0x57, 0x22, 0xb2, 0xc7, 0xd6, 0x11, 0xc4, 0xe0, 0xcb, + 0x68, 0xa7, 0x1f, 0xdb, 0x14, 0xa0, 0xee, 0x7f, 0x76, 0x60, 0x5c, 0x47, 0x3f, 0x85, 0x1d, 0x34, + 0x36, 0x77, 0xd0, 0xeb, 0x76, 0xfb, 0xdb, 0x65, 0xdb, 0xfc, 0x5c, 0x9f, 0xd9, 0x4f, 0xe6, 0xba, + 0xfe, 0x8a, 0x03, 0xc3, 0x3b, 0x1a, 0x40, 0x74, 0xd6, 0xb6, 0x12, 0xf3, 0x0e, 0x29, 0x66, 0x74, + 0xe8, 0x9d, 0xcc, 0x6f, 0x6c, 0xb4, 0x84, 0xca, 0xfd, 0xb8, 0x52, 0x27, 0xd5, 0x76, 0x43, 0x6e, + 0xdf, 0x6a, 0x48, 0xcb, 0x02, 0x8e, 0x15, 0x06, 0x7a, 0x19, 0xce, 0x54, 0xc2, 0xa0, 0xd2, 0x8e, + 0x22, 0x12, 0x54, 0x76, 0xd7, 0xd8, 0x95, 0x07, 0xb1, 0x21, 0x4e, 0x89, 0x6a, 0x67, 0x66, 0xb3, + 0x08, 0x77, 0xf2, 0x80, 0xb8, 0x93, 0x10, 0xb7, 0xfd, 0xc7, 0x74, 0xcb, 0x12, 0x07, 0x2e, 0xcd, + 0xf6, 0xcf, 0xc0, 0x58, 0x96, 0xa3, 0x1b, 0x70, 0x31, 0x4e, 0xbc, 0x28, 0xf1, 0x83, 0xda, 0x1c, + 0xf1, 0xaa, 0x0d, 0x3f, 0xa0, 0x47, 0x89, 0x30, 0xa8, 0x72, 0xcf, 0x60, 0xcf, 0xcc, 0x43, 0xfb, + 0x7b, 0x93, 0x17, 0xcb, 0xf9, 0x28, 0xb8, 0x5b, 0x5d, 0xf4, 0x41, 0x98, 0x10, 0xde, 0x85, 0xcd, + 0x76, 0xe3, 0xf9, 0x70, 0x23, 0xbe, 0xe6, 0xc7, 0xf4, 0x1c, 0xbf, 0xec, 0x37, 0xfd, 0x84, 0xf9, + 0xff, 0x8a, 0x33, 0x97, 0xf6, 0xf7, 0x26, 0x27, 0xca, 0x5d, 0xb1, 0xf0, 0x01, 0x14, 0x10, 0x86, + 0x0b, 0x5c, 0xf8, 0x75, 0xd0, 0xee, 0x67, 0xb4, 0x27, 0xf6, 0xf7, 0x26, 0x2f, 0xcc, 0xe7, 0x62, + 0xe0, 0x2e, 0x35, 0xe9, 0x17, 0x4c, 0xfc, 0x26, 0x79, 0x35, 0x0c, 0x08, 0x8b, 0x3b, 0xd1, 0xbe, + 0xe0, 0xba, 0x80, 0x63, 0x85, 0x81, 0x5e, 0x49, 0x67, 0x22, 0x5d, 0x2e, 0x22, 0x7e, 0xe4, 0xe8, + 0x12, 0x8e, 0x1d, 0x4d, 0x6e, 0x69, 0x94, 0x58, 0x60, 0xa4, 0x41, 0xdb, 0xfd, 0xfd, 0x02, 0xa0, + 0x4e, 0x11, 0x81, 0x96, 0xa0, 0xcf, 0xab, 0x24, 0xfe, 0xb6, 0x0c, 0xb4, 0x7b, 0x2c, 0x6f, 0xfb, + 0xe4, 0xac, 0x30, 0xd9, 0x24, 0x74, 0x86, 0x90, 0x54, 0xae, 0x4c, 0xb3, 0xaa, 0x58, 0x90, 0x40, + 0x21, 0x9c, 0x69, 0x78, 0x71, 0x22, 0xe7, 0x6a, 0x95, 0x76, 0x59, 0x08, 0xd6, 0x9f, 0x3d, 0x5c, + 0xa7, 0x68, 0x8d, 0x99, 0xf3, 0x74, 0xe6, 0x2e, 0x67, 0x09, 0xe1, 0x4e, 0xda, 0xe8, 0x63, 0x4c, + 0x0f, 0xe1, 0x4a, 0xa2, 0x54, 0x00, 0x96, 0xac, 0xec, 0xd1, 0x9c, 0xa6, 0xa1, 0x83, 0x08, 0x36, + 0x58, 0x63, 0xe9, 0xfe, 0x6b, 0x80, 0xfe, 0xb9, 0xe9, 0x85, 0x75, 0x2f, 0xde, 0x3a, 0x84, 0x6a, + 0x4e, 0x67, 0x87, 0xd0, 0xa1, 0xb2, 0xeb, 0x5b, 0xea, 0x56, 0x58, 0x61, 0xa0, 0x00, 0xfa, 0xfc, + 0x80, 0x2e, 0x88, 0xd2, 0xa8, 0x2d, 0x6b, 0xb6, 0x3a, 0x66, 0x30, 0xfb, 0xc4, 0x22, 0xa3, 0x8e, + 0x05, 0x17, 0xf4, 0x3a, 0x0c, 0x7a, 0xf2, 0xa2, 0x8a, 0xd8, 0x96, 0x96, 0x6c, 0x98, 0x69, 0x05, + 0x49, 0x3d, 0x50, 0x46, 0x80, 0x70, 0xca, 0x10, 0x7d, 0xdc, 0x81, 0x21, 0xd9, 0x75, 0x4c, 0x36, + 0x85, 0x07, 0x75, 0xc5, 0x5e, 0x9f, 0x31, 0xd9, 0xe4, 0x51, 0x14, 0x1a, 0x00, 0xeb, 0x2c, 0x3b, + 0x54, 0xf9, 0xe2, 0x61, 0x54, 0x79, 0xb4, 0x03, 0x83, 0x3b, 0x7e, 0x52, 0x67, 0x1b, 0x8f, 0xf0, + 0xdc, 0xcc, 0xdf, 0x7b, 0xab, 0x29, 0xb9, 0x74, 0xc4, 0x6e, 0x49, 0x06, 0x38, 0xe5, 0x85, 0x2e, + 0x73, 0xc6, 0xec, 0xa2, 0x0f, 0x13, 0x59, 0x83, 0x66, 0x05, 0x56, 0x80, 0x53, 0x1c, 0x3a, 0xc4, + 0xc3, 0xf4, 0x57, 0x99, 0x7c, 0xa4, 0x4d, 0xd7, 0xb1, 0x88, 0x8c, 0xb3, 0x30, 0xaf, 0x24, 0x45, + 0x3e, 0x58, 0xb7, 0x34, 0x1e, 0xd8, 0xe0, 0x48, 0xd7, 0xc8, 0x4e, 0x9d, 0x04, 0x22, 0x72, 0x5f, + 0xad, 0x91, 0x5b, 0x75, 0x12, 0x60, 0x56, 0x82, 0x5e, 0xe7, 0x47, 0x0b, 0xae, 0xe3, 0x8a, 0x28, + 0xb7, 0x65, 0x3b, 0x6a, 0x37, 0xa7, 0xc9, 0x83, 0xe7, 0xd3, 0xdf, 0x58, 0xe3, 0x47, 0xd5, 0xe5, + 0x30, 0xb8, 0x7a, 0xdb, 0x4f, 0x44, 0xc8, 0xbf, 0x92, 0x74, 0xab, 0x0c, 0x8a, 0x45, 0x29, 0x8f, + 0x10, 0xa0, 0x93, 0x20, 0x66, 0xf1, 0xfd, 0x83, 0x7a, 0x84, 0x00, 0x03, 0x63, 0x59, 0x8e, 0xfe, + 0x9e, 0x03, 0xc5, 0x7a, 0x18, 0x6e, 0xc5, 0xa5, 0x11, 0x36, 0x39, 0x2c, 0xa8, 0x7a, 0x42, 0xe2, + 0x4c, 0x5d, 0xa3, 0x64, 0xcd, 0x4b, 0x4c, 0x45, 0x06, 0xbb, 0xb3, 0x37, 0x39, 0xba, 0xec, 0x6f, + 0x92, 0xca, 0x6e, 0xa5, 0x41, 0x18, 0xe4, 0x13, 0x6f, 0x69, 0x90, 0xab, 0xdb, 0x24, 0x48, 0x30, + 0x6f, 0xd5, 0xc4, 0xe7, 0x1c, 0x80, 0x94, 0x50, 0x8e, 0x2b, 0x8e, 0x98, 0xce, 0x6b, 0x0b, 0xe7, + 0x3c, 0xa3, 0x69, 0xba, 0x6f, 0xef, 0xdf, 0x38, 0x30, 0x44, 0x3b, 0x27, 0x45, 0xe0, 0x13, 0xd0, + 0x97, 0x78, 0x51, 0x8d, 0x48, 0xfb, 0xb5, 0xfa, 0x1c, 0xeb, 0x0c, 0x8a, 0x45, 0x29, 0x0a, 0xa0, + 0x98, 0x78, 0xf1, 0x96, 0xd4, 0x2e, 0x17, 0xad, 0x0d, 0x71, 0xaa, 0x58, 0xd2, 0x5f, 0x31, 0xe6, + 0x6c, 0xd0, 0x93, 0x30, 0x40, 0x15, 0x80, 0x79, 0x2f, 0x96, 0x11, 0x22, 0xc3, 0x54, 0x88, 0xcf, + 0x0b, 0x18, 0x56, 0xa5, 0xee, 0xaf, 0x15, 0xa0, 0x77, 0x8e, 0x9f, 0x33, 0xfa, 0xe2, 0xb0, 0x1d, + 0x55, 0x88, 0xd0, 0x37, 0x2d, 0xcc, 0x69, 0x4a, 0xb7, 0xcc, 0x68, 0x6a, 0x9a, 0x3e, 0xfb, 0x8d, + 0x05, 0x2f, 0x7a, 0x90, 0x1d, 0x4d, 0x22, 0x2f, 0x88, 0x37, 0x99, 0xa7, 0xc0, 0x0f, 0x03, 0x31, + 0x44, 0x16, 0x66, 0xe1, 0xba, 0x41, 0xb7, 0x9c, 0x90, 0x56, 0xea, 0xb0, 0x30, 0xcb, 0x70, 0xa6, + 0x0d, 0xee, 0xaf, 0x3b, 0x00, 0x69, 0xeb, 0xd1, 0x67, 0x1d, 0x18, 0xf1, 0xf4, 0xc8, 0x44, 0x31, + 0x46, 0xab, 0xf6, 0xbc, 0x84, 0x8c, 0x2c, 0x3f, 0x62, 0x1b, 0x20, 0x6c, 0x32, 0x76, 0xdf, 0x0d, + 0x45, 0xb6, 0x3a, 0x98, 0x2e, 0x2e, 0x4c, 0xb2, 0x59, 0x1b, 0x8c, 0x34, 0xd5, 0x62, 0x85, 0xe1, + 0xbe, 0x0c, 0xa3, 0x57, 0x6f, 0x93, 0x4a, 0x3b, 0x09, 0x23, 0x6e, 0x90, 0xee, 0x72, 0x13, 0xc5, + 0x39, 0xd6, 0x4d, 0x94, 0xef, 0x38, 0x30, 0xa4, 0x85, 0xa9, 0xd1, 0x9d, 0xba, 0x36, 0x5b, 0xe6, + 0xe7, 0x6e, 0x31, 0x54, 0x4b, 0x56, 0x02, 0xe1, 0x38, 0xc9, 0x74, 0x1b, 0x51, 0x20, 0x9c, 0x32, + 0xbc, 0x4b, 0x18, 0x99, 0xfb, 0x3b, 0x0e, 0x9c, 0xcf, 0x8d, 0xa9, 0xbb, 0xcf, 0xcd, 0xbe, 0x0c, + 0x83, 0x5b, 0x64, 0xd7, 0xf0, 0xaf, 0xa9, 0x0a, 0x4b, 0xb2, 0x00, 0xa7, 0x38, 0xee, 0x77, 0x1d, + 0x48, 0x29, 0x51, 0x51, 0xb4, 0x91, 0xb6, 0x5c, 0x13, 0x45, 0x82, 0x93, 0x28, 0x45, 0xaf, 0xc3, + 0x45, 0xf3, 0x0b, 0x1e, 0xd3, 0x0d, 0xc0, 0xcf, 0x4c, 0xf9, 0x94, 0x70, 0x37, 0x16, 0xee, 0x4d, + 0x28, 0x2e, 0x78, 0xed, 0x1a, 0x39, 0x94, 0x11, 0x87, 0x8a, 0xb1, 0x88, 0x78, 0x8d, 0x44, 0xaa, + 0xe9, 0x42, 0x8c, 0x61, 0x01, 0xc3, 0xaa, 0xd4, 0xfd, 0x41, 0x11, 0x86, 0xb4, 0x9b, 0x13, 0x74, + 0x1f, 0x8f, 0x48, 0x2b, 0xcc, 0xea, 0xba, 0xf4, 0x63, 0x63, 0x56, 0x42, 0xd7, 0x4f, 0x44, 0xb6, + 0xfd, 0x98, 0x8b, 0x1c, 0x63, 0xfd, 0x60, 0x01, 0xc7, 0x0a, 0x03, 0x4d, 0x42, 0xb1, 0x4a, 0x5a, + 0x49, 0x9d, 0x49, 0xd3, 0x5e, 0x1e, 0x3e, 0x36, 0x47, 0x01, 0x98, 0xc3, 0x29, 0xc2, 0x26, 0x49, + 0x2a, 0x75, 0x66, 0x6c, 0x14, 0xf1, 0x65, 0xf3, 0x14, 0x80, 0x39, 0x3c, 0xc7, 0x31, 0x56, 0x3c, + 0x79, 0xc7, 0x58, 0x9f, 0x65, 0xc7, 0x18, 0x6a, 0xc1, 0xd9, 0x38, 0xae, 0xaf, 0x45, 0xfe, 0xb6, + 0x97, 0x90, 0x74, 0xe6, 0xf4, 0x1f, 0x85, 0xcf, 0x45, 0x76, 0x97, 0xb9, 0x7c, 0x2d, 0x4b, 0x05, + 0xe7, 0x91, 0x46, 0x65, 0x38, 0xef, 0x07, 0x31, 0xa9, 0xb4, 0x23, 0xb2, 0x58, 0x0b, 0xc2, 0x88, + 0x5c, 0x0b, 0x63, 0x4a, 0x4e, 0xdc, 0xc4, 0x54, 0x11, 0x97, 0x8b, 0x79, 0x48, 0x38, 0xbf, 0x2e, + 0x5a, 0x80, 0x33, 0x55, 0x3f, 0xf6, 0x36, 0x1a, 0xa4, 0xdc, 0xde, 0x68, 0x86, 0xf4, 0xc0, 0xc6, + 0x6f, 0x47, 0x0c, 0xcc, 0x3c, 0x28, 0x4d, 0x13, 0x73, 0x59, 0x04, 0xdc, 0x59, 0x07, 0x3d, 0x07, + 0xc3, 0xb1, 0x1f, 0xd4, 0x1a, 0x64, 0x26, 0xf2, 0x82, 0x4a, 0x5d, 0x5c, 0xe1, 0x54, 0x26, 0xdc, + 0xb2, 0x56, 0x86, 0x0d, 0x4c, 0xb6, 0x5e, 0x79, 0x9d, 0x8c, 0x26, 0x27, 0xb0, 0x45, 0xa9, 0xfb, + 0x43, 0x07, 0x86, 0xf5, 0x68, 0x67, 0xaa, 0x25, 0x43, 0x7d, 0x6e, 0xbe, 0xcc, 0xe5, 0xb8, 0xbd, + 0xdd, 0xfa, 0x9a, 0xa2, 0x99, 0x9e, 0x2a, 0x53, 0x18, 0xd6, 0x78, 0x1e, 0xe2, 0xee, 0xf2, 0x63, + 0x50, 0xdc, 0x0c, 0xa9, 0x32, 0xd1, 0x63, 0xda, 0x7e, 0xe7, 0x29, 0x10, 0xf3, 0x32, 0xf7, 0x7f, + 0x3a, 0x70, 0x21, 0x3f, 0x90, 0xfb, 0xed, 0xd0, 0xc9, 0x2b, 0x00, 0xb4, 0x2b, 0x86, 0x40, 0xd6, + 0xb2, 0x17, 0xc8, 0x12, 0xac, 0x61, 0x1d, 0xae, 0xdb, 0x7f, 0x4c, 0x15, 0xda, 0x94, 0xcf, 0xe7, + 0x1d, 0x18, 0xa1, 0x6c, 0x97, 0xa2, 0x0d, 0xa3, 0xb7, 0xab, 0x76, 0x7a, 0xab, 0xc8, 0xa6, 0x26, + 0x6e, 0x03, 0x8c, 0x4d, 0xe6, 0xe8, 0xe7, 0x60, 0xd0, 0xab, 0x56, 0x23, 0x12, 0xc7, 0xca, 0x59, + 0xc4, 0xfc, 0xd8, 0xd3, 0x12, 0x88, 0xd3, 0x72, 0x2a, 0x44, 0xeb, 0xd5, 0xcd, 0x98, 0xca, 0x25, + 0x61, 0xd9, 0x53, 0x42, 0x94, 0x32, 0xa1, 0x70, 0xac, 0x30, 0xdc, 0xbf, 0xd9, 0x0b, 0x26, 0x6f, + 0x54, 0x85, 0xb1, 0xad, 0x68, 0x63, 0x96, 0xf9, 0xda, 0x8f, 0xe3, 0xf3, 0x66, 0xbe, 0xe8, 0x25, + 0x93, 0x02, 0xce, 0x92, 0x14, 0x5c, 0x96, 0xc8, 0x6e, 0xe2, 0x6d, 0x1c, 0xdb, 0xe3, 0xbd, 0x64, + 0x52, 0xc0, 0x59, 0x92, 0xe8, 0xdd, 0x30, 0xb4, 0x15, 0x6d, 0x48, 0x11, 0x9d, 0x0d, 0x9f, 0x58, + 0x4a, 0x8b, 0xb0, 0x8e, 0x47, 0x87, 0x70, 0x2b, 0xda, 0xa0, 0x5b, 0x9a, 0xbc, 0xcb, 0xaf, 0x86, + 0x70, 0x49, 0xc0, 0xb1, 0xc2, 0x40, 0x2d, 0x40, 0x5b, 0x72, 0xf4, 0x54, 0x64, 0x81, 0xd8, 0x49, + 0x0e, 0x1f, 0x98, 0xc0, 0x22, 0xb4, 0x97, 0x3a, 0xe8, 0xe0, 0x1c, 0xda, 0xe8, 0x45, 0xb8, 0xb8, + 0x15, 0x6d, 0x88, 0x8d, 0x7e, 0x2d, 0xf2, 0x83, 0x8a, 0xdf, 0x32, 0xee, 0xed, 0x4f, 0x8a, 0xe6, + 0x5e, 0x5c, 0xca, 0x47, 0xc3, 0xdd, 0xea, 0xbb, 0xbf, 0xd9, 0x0b, 0xec, 0xc6, 0x21, 0x95, 0x85, + 0x4d, 0x92, 0xd4, 0xc3, 0x6a, 0x56, 0x77, 0x59, 0x61, 0x50, 0x2c, 0x4a, 0x65, 0x1c, 0x62, 0xa1, + 0x4b, 0x1c, 0xe2, 0x0e, 0xf4, 0xd7, 0x89, 0x57, 0x25, 0x91, 0x34, 0xb5, 0x2d, 0xdb, 0xb9, 0x23, + 0x79, 0x8d, 0x11, 0x4d, 0x8f, 0xd0, 0xfc, 0x77, 0x8c, 0x25, 0x37, 0xf4, 0x0b, 0x30, 0x4a, 0xb5, + 0x90, 0xb0, 0x9d, 0x48, 0xbb, 0x72, 0x2f, 0xb3, 0x2b, 0xb3, 0x1d, 0x75, 0xdd, 0x28, 0xc1, 0x19, + 0x4c, 0x34, 0x07, 0xe3, 0xc2, 0x06, 0xac, 0x4c, 0x78, 0x62, 0x60, 0x55, 0x42, 0x85, 0x72, 0xa6, + 0x1c, 0x77, 0xd4, 0x60, 0x81, 0x67, 0x61, 0x95, 0xbb, 0x01, 0xf5, 0xc0, 0xb3, 0xb0, 0xba, 0x8b, + 0x59, 0x09, 0x7a, 0x15, 0x06, 0xe8, 0xdf, 0xf9, 0x28, 0x6c, 0x0a, 0xbb, 0xca, 0x9a, 0x9d, 0xd1, + 0xa1, 0x3c, 0xc4, 0x29, 0x8f, 0x69, 0x67, 0x33, 0x82, 0x0b, 0x56, 0xfc, 0xe8, 0x59, 0x43, 0xee, + 0xc3, 0xe5, 0x2d, 0xbf, 0x75, 0x93, 0x44, 0xfe, 0xe6, 0x2e, 0x53, 0x1a, 0x06, 0xd2, 0xb3, 0xc6, + 0x62, 0x07, 0x06, 0xce, 0xa9, 0xe5, 0x7e, 0xbe, 0x00, 0xc3, 0xfa, 0xc5, 0xd5, 0xbb, 0x05, 0xa7, + 0xc6, 0xe9, 0xa4, 0xe0, 0x27, 0xcb, 0x6b, 0x16, 0xba, 0x7d, 0xb7, 0x09, 0x51, 0x87, 0x5e, 0xaf, + 0x2d, 0xb4, 0x45, 0x2b, 0x06, 0x2c, 0xd6, 0xe3, 0x76, 0x52, 0xe7, 0x37, 0x9c, 0x58, 0xd8, 0x28, + 0xe3, 0xe0, 0x7e, 0xaa, 0x07, 0x06, 0x64, 0x21, 0xfa, 0xa4, 0x03, 0x90, 0xc6, 0xfb, 0x08, 0x51, + 0xba, 0x66, 0x23, 0x18, 0x44, 0x0f, 0x55, 0xd2, 0x8c, 0xce, 0x0a, 0x8e, 0x35, 0xbe, 0x28, 0x81, + 0xbe, 0x90, 0x36, 0xee, 0x8a, 0xbd, 0xcb, 0xd7, 0xab, 0x94, 0xf1, 0x15, 0xc6, 0x3d, 0x35, 0x79, + 0x31, 0x18, 0x16, 0xbc, 0xe8, 0xe9, 0x6d, 0x43, 0x86, 0xa1, 0xd9, 0x33, 0x0f, 0xab, 0xc8, 0xb6, + 0xf4, 0x30, 0xa6, 0x40, 0x38, 0x65, 0xe8, 0x3e, 0x03, 0xa3, 0xe6, 0x62, 0xa0, 0x27, 0x82, 0x8d, + 0xdd, 0x84, 0x70, 0x5b, 0xc1, 0x30, 0x3f, 0x11, 0xcc, 0x50, 0x00, 0xe6, 0x70, 0xf7, 0x4d, 0xaa, + 0x07, 0x28, 0xf1, 0x72, 0x08, 0xf3, 0xfc, 0x63, 0xba, 0xa1, 0xab, 0xdb, 0x99, 0xe9, 0x63, 0x30, + 0xc8, 0xfe, 0x61, 0x0b, 0xbd, 0xc7, 0x96, 0xd3, 0x38, 0x6d, 0xa7, 0x58, 0xea, 0x4c, 0x27, 0xb8, + 0x29, 0x19, 0xe1, 0x94, 0xa7, 0x1b, 0xc2, 0x78, 0x16, 0x1b, 0x7d, 0x00, 0x86, 0x63, 0xb9, 0xad, + 0xa6, 0xd7, 0xb0, 0x0e, 0xb9, 0xfd, 0x32, 0x9b, 0x6d, 0x59, 0xab, 0x8e, 0x0d, 0x62, 0xee, 0x2a, + 0xf4, 0x59, 0x1d, 0x42, 0xf7, 0x5b, 0x0e, 0x0c, 0x32, 0xaf, 0x59, 0x2d, 0xf2, 0x9a, 0x69, 0x95, + 0x9e, 0x03, 0x46, 0x3d, 0x86, 0x7e, 0x7e, 0xbe, 0x96, 0xd1, 0x26, 0x16, 0xa4, 0x0c, 0xcf, 0x99, + 0x96, 0x4a, 0x19, 0x7e, 0x90, 0x8f, 0xb1, 0xe4, 0xe4, 0x7e, 0xba, 0x00, 0x7d, 0x8b, 0x41, 0xab, + 0xfd, 0xe7, 0x3e, 0x6f, 0xd7, 0x0a, 0xf4, 0x2e, 0x26, 0xa4, 0x69, 0xa6, 0x97, 0x1b, 0x9e, 0x79, + 0x5c, 0x4f, 0x2d, 0x57, 0x32, 0x53, 0xcb, 0x61, 0x6f, 0x47, 0x06, 0x63, 0x09, 0xfb, 0x6e, 0x7a, + 0x15, 0xed, 0x69, 0x18, 0x5c, 0xf6, 0x36, 0x48, 0x63, 0x89, 0xec, 0xb2, 0x8b, 0x63, 0x3c, 0x30, + 0xc0, 0x49, 0x0f, 0xf6, 0x86, 0x13, 0x7f, 0x0e, 0x46, 0x19, 0xb6, 0x5a, 0x0c, 0xf4, 0xe4, 0x40, + 0xd2, 0xdc, 0x3c, 0x8e, 0x79, 0x72, 0xd0, 0xf2, 0xf2, 0x68, 0x58, 0xee, 0x14, 0x0c, 0xa5, 0x54, + 0x0e, 0xc1, 0xf5, 0xa7, 0x05, 0x18, 0x31, 0xcc, 0xd4, 0x86, 0xf3, 0xce, 0xb9, 0xab, 0xf3, 0xce, + 0x70, 0xa6, 0x15, 0xee, 0xb7, 0x33, 0xad, 0xe7, 0xf4, 0x9d, 0x69, 0xe6, 0x47, 0xea, 0x3d, 0xd4, + 0x47, 0x6a, 0x40, 0xef, 0xb2, 0x1f, 0x6c, 0x1d, 0x4e, 0xce, 0xc4, 0x95, 0xb0, 0xd5, 0x21, 0x67, + 0xca, 0x14, 0x88, 0x79, 0x99, 0xd4, 0x5c, 0x7a, 0xf2, 0x35, 0x17, 0xf7, 0x93, 0x0e, 0x0c, 0xaf, + 0x78, 0x81, 0xbf, 0x49, 0xe2, 0x84, 0xcd, 0xab, 0xe4, 0x44, 0x2f, 0x10, 0x0d, 0x77, 0xb9, 0x0a, + 0xff, 0x09, 0x07, 0xce, 0xac, 0x90, 0x66, 0xe8, 0xbf, 0xea, 0xa5, 0xb1, 0x8e, 0xb4, 0xed, 0x75, + 0x3f, 0x11, 0xa1, 0x5d, 0xaa, 0xed, 0xd7, 0xfc, 0x04, 0x53, 0xf8, 0x5d, 0x6c, 0xb0, 0x2c, 0x96, + 0x9f, 0x1e, 0xd0, 0xb4, 0x4b, 0x6d, 0x69, 0x14, 0xa3, 0x2c, 0xc0, 0x29, 0x8e, 0xfb, 0x5b, 0x0e, + 0xf4, 0xf3, 0x46, 0xa8, 0xf0, 0x50, 0xa7, 0x0b, 0xed, 0x3a, 0x14, 0x59, 0x3d, 0x31, 0xab, 0x17, + 0x2c, 0xa8, 0x3f, 0x94, 0x1c, 0x5f, 0x83, 0xec, 0x5f, 0xcc, 0x19, 0xb0, 0x63, 0x8b, 0x77, 0x7b, + 0x5a, 0x85, 0x79, 0xa6, 0xc7, 0x16, 0x06, 0xc5, 0xa2, 0xd4, 0xfd, 0x5a, 0x0f, 0x0c, 0xa8, 0x0c, + 0x50, 0xec, 0x7e, 0x7e, 0x10, 0x84, 0x89, 0xc7, 0x83, 0x02, 0xb8, 0xac, 0xfe, 0x80, 0xbd, 0x0c, + 0x54, 0x53, 0xd3, 0x29, 0x75, 0xee, 0x7b, 0x53, 0x87, 0x50, 0xad, 0x04, 0xeb, 0x8d, 0x40, 0x1f, + 0x85, 0xbe, 0x06, 0x95, 0x3e, 0x52, 0x74, 0xdf, 0xb4, 0xd8, 0x1c, 0x26, 0xd6, 0x44, 0x4b, 0xd4, + 0x08, 0x71, 0x20, 0x16, 0x5c, 0x27, 0xde, 0x0b, 0xe3, 0xd9, 0x56, 0xdf, 0xed, 0xce, 0xdd, 0xa0, + 0x7e, 0x63, 0xef, 0x2f, 0x0b, 0xe9, 0x79, 0xf4, 0xaa, 0xee, 0x0b, 0x30, 0xb4, 0x42, 0x92, 0xc8, + 0xaf, 0x30, 0x02, 0x77, 0x9b, 0x5c, 0x87, 0xd2, 0x1f, 0x3e, 0xc3, 0x26, 0x2b, 0xa5, 0x19, 0xa3, + 0xd7, 0x01, 0x5a, 0x51, 0x48, 0xcf, 0xaf, 0xa4, 0x2d, 0x3f, 0xb6, 0x05, 0x7d, 0x78, 0x4d, 0xd1, + 0xe4, 0xee, 0xe2, 0xf4, 0x37, 0xd6, 0xf8, 0xb9, 0x4f, 0x41, 0x71, 0xa5, 0x9d, 0x90, 0xdb, 0x77, + 0x97, 0x58, 0xee, 0x07, 0x60, 0x98, 0xa1, 0x5e, 0x0b, 0x1b, 0x74, 0x97, 0xa4, 0x3d, 0x6d, 0xd2, + 0xdf, 0x59, 0x03, 0x3d, 0x43, 0xc2, 0xbc, 0x8c, 0xae, 0x80, 0x7a, 0xd8, 0xa8, 0xaa, 0x0b, 0x39, + 0xea, 0xfb, 0x5e, 0x63, 0x50, 0x2c, 0x4a, 0xdd, 0x5f, 0x2a, 0xc0, 0x10, 0xab, 0x28, 0xa4, 0xc7, + 0x2e, 0xf4, 0xd7, 0x39, 0x1f, 0x31, 0x24, 0x16, 0xa2, 0xdb, 0xf4, 0xd6, 0x6b, 0x47, 0x33, 0x0e, + 0xc0, 0x92, 0x1f, 0x65, 0xbd, 0xe3, 0xf9, 0x09, 0x65, 0x5d, 0x38, 0x59, 0xd6, 0xb7, 0x38, 0x1b, + 0x2c, 0xf9, 0xb9, 0x5f, 0x2a, 0x00, 0xb0, 0xfc, 0x5c, 0xfc, 0x3e, 0xe8, 0xcf, 0x43, 0xb1, 0x55, + 0xf7, 0xe2, 0xac, 0xd3, 0xad, 0xb8, 0x46, 0x81, 0x77, 0xc4, 0x8d, 0x57, 0xf6, 0x03, 0x73, 0x44, + 0x3d, 0xb0, 0xbc, 0x70, 0x70, 0x60, 0x39, 0x6a, 0x41, 0x7f, 0xd8, 0x4e, 0xa8, 0x6e, 0x28, 0x36, + 0x57, 0x0b, 0x3e, 0xe7, 0x55, 0x4e, 0x90, 0x47, 0x63, 0x8b, 0x1f, 0x58, 0xb2, 0x41, 0xcf, 0xc1, + 0x40, 0x2b, 0x0a, 0x6b, 0x74, 0xaf, 0x14, 0xdb, 0xe9, 0xc3, 0x52, 0xff, 0x58, 0x13, 0xf0, 0x3b, + 0xda, 0xff, 0x58, 0x61, 0xbb, 0x3f, 0x1e, 0xe3, 0xe3, 0x22, 0x26, 0xc7, 0x04, 0x14, 0x7c, 0x69, + 0x09, 0x02, 0x41, 0xa2, 0xb0, 0x38, 0x87, 0x0b, 0x7e, 0x55, 0xcd, 0xe3, 0x42, 0xd7, 0x9d, 0xf7, + 0xdd, 0x30, 0x54, 0xf5, 0xe3, 0x56, 0xc3, 0xdb, 0xbd, 0x9e, 0x63, 0x86, 0x9b, 0x4b, 0x8b, 0xb0, + 0x8e, 0x87, 0x9e, 0x16, 0xd7, 0x08, 0x7a, 0x0d, 0xd3, 0x8b, 0xbc, 0x46, 0x90, 0xde, 0x37, 0xe6, + 0x37, 0x08, 0xb2, 0xf7, 0xb2, 0x8b, 0x87, 0xbe, 0x97, 0x9d, 0xd5, 0x7c, 0xfa, 0x4e, 0x5f, 0xf3, + 0x79, 0x0f, 0x8c, 0xc8, 0x9f, 0x4c, 0x1d, 0x29, 0x9d, 0x63, 0xad, 0x57, 0xe6, 0xe1, 0x75, 0xbd, + 0x10, 0x9b, 0xb8, 0xe9, 0xa4, 0xed, 0x3f, 0xec, 0xa4, 0xbd, 0x02, 0xb0, 0x11, 0xb6, 0x83, 0xaa, + 0x17, 0xed, 0x2e, 0xce, 0x89, 0xa0, 0x43, 0xa5, 0x68, 0xcd, 0xa8, 0x12, 0xac, 0x61, 0xe9, 0x13, + 0x7d, 0xf0, 0x2e, 0x13, 0xfd, 0x03, 0x30, 0xc8, 0x02, 0x34, 0x49, 0x75, 0x3a, 0x11, 0xe1, 0x38, + 0x47, 0x89, 0xe5, 0x53, 0x6a, 0x47, 0x59, 0x12, 0xc1, 0x29, 0x3d, 0xf4, 0x41, 0x80, 0x4d, 0x3f, + 0xf0, 0xe3, 0x3a, 0xa3, 0x3e, 0x74, 0x64, 0xea, 0xaa, 0x9f, 0xf3, 0x8a, 0x0a, 0xd6, 0x28, 0xa2, + 0x97, 0xe1, 0x0c, 0x89, 0x13, 0xbf, 0xe9, 0x25, 0xa4, 0xaa, 0x2e, 0xde, 0x95, 0x98, 0xed, 0x50, + 0x85, 0xc8, 0x5e, 0xcd, 0x22, 0xdc, 0xc9, 0x03, 0xe2, 0x4e, 0x42, 0xc6, 0x8a, 0x9c, 0x38, 0xca, + 0x8a, 0x44, 0x7f, 0xe2, 0xc0, 0x99, 0x88, 0xf0, 0x18, 0x8d, 0x58, 0x35, 0xec, 0x3c, 0x93, 0x97, + 0x15, 0x1b, 0xa9, 0xaf, 0x55, 0x8e, 0x0b, 0x9c, 0xe5, 0xc2, 0x15, 0x05, 0x22, 0x7b, 0xdf, 0x51, + 0x7e, 0x27, 0x0f, 0xf8, 0x89, 0xb7, 0x26, 0x27, 0x3b, 0x53, 0xb0, 0x2b, 0xe2, 0x74, 0xe5, 0xfd, + 0x8d, 0xb7, 0x26, 0xc7, 0xe5, 0xef, 0x74, 0xd0, 0x3a, 0x3a, 0x49, 0xf7, 0xbd, 0x56, 0x58, 0x5d, + 0x5c, 0x13, 0x71, 0x53, 0x6a, 0xdf, 0x5b, 0xa3, 0x40, 0xcc, 0xcb, 0xd0, 0x93, 0x30, 0x50, 0xf5, + 0x48, 0x33, 0x0c, 0x54, 0x12, 0x53, 0xa6, 0x3d, 0xcf, 0x09, 0x18, 0x56, 0xa5, 0xa8, 0x01, 0x7d, + 0x3e, 0x3b, 0xa2, 0x8b, 0x20, 0x49, 0x0b, 0x76, 0x01, 0x7e, 0xe4, 0x97, 0x21, 0x92, 0x4c, 0x08, + 0x0b, 0x1e, 0xba, 0xd4, 0x1f, 0x3b, 0x1d, 0xa9, 0xff, 0x24, 0x0c, 0x54, 0xea, 0x7e, 0xa3, 0x1a, + 0x91, 0xa0, 0x34, 0xce, 0xce, 0xaa, 0x6c, 0x24, 0x66, 0x05, 0x0c, 0xab, 0x52, 0xf4, 0x97, 0x60, + 0x24, 0x6c, 0x27, 0x6c, 0x91, 0xd3, 0xef, 0x1f, 0x97, 0xce, 0x30, 0x74, 0x16, 0xf2, 0xb2, 0xaa, + 0x17, 0x60, 0x13, 0x8f, 0x0a, 0xdb, 0x7a, 0x18, 0xb3, 0xc4, 0x28, 0x4c, 0xd8, 0x5e, 0x30, 0x85, + 0xed, 0x35, 0xad, 0x0c, 0x1b, 0x98, 0xe8, 0x2b, 0x0e, 0x9c, 0x69, 0x66, 0x8f, 0x2e, 0xa5, 0x8b, + 0x6c, 0x64, 0xca, 0x36, 0x54, 0xdc, 0x0c, 0x69, 0x1e, 0x19, 0xdc, 0x01, 0xc6, 0x9d, 0x8d, 0x60, + 0x29, 0x8a, 0xe2, 0xdd, 0xa0, 0x52, 0x8f, 0xc2, 0xc0, 0x6c, 0xde, 0x83, 0xb6, 0x6e, 0xf2, 0xb0, + 0x55, 0x96, 0xc7, 0x62, 0xe6, 0xc1, 0xfd, 0xbd, 0xc9, 0xf3, 0xb9, 0x45, 0x38, 0xbf, 0x51, 0x13, + 0x73, 0x70, 0x21, 0x7f, 0xa5, 0xde, 0x4d, 0xd7, 0xee, 0xd1, 0x75, 0xed, 0x79, 0x78, 0xb0, 0x6b, + 0xa3, 0xa8, 0xcc, 0x97, 0x8a, 0x99, 0x63, 0xca, 0xfc, 0x0e, 0x45, 0x6a, 0x14, 0x86, 0xf5, 0xec, + 0xf9, 0xee, 0xff, 0xed, 0x01, 0x48, 0x2d, 0xc4, 0xc8, 0x83, 0x51, 0x6e, 0x8d, 0x5e, 0x9c, 0x3b, + 0xf6, 0x1d, 0xe4, 0x59, 0x83, 0x00, 0xce, 0x10, 0x44, 0x4d, 0x40, 0x1c, 0xc2, 0x7f, 0x1f, 0xc7, + 0xab, 0xc8, 0x9c, 0x70, 0xb3, 0x1d, 0x44, 0x70, 0x0e, 0x61, 0xda, 0xa3, 0x24, 0xdc, 0x22, 0xc1, + 0x0d, 0xbc, 0x7c, 0x9c, 0x8b, 0xec, 0xdc, 0x0f, 0x65, 0x10, 0xc0, 0x19, 0x82, 0xc8, 0x85, 0x3e, + 0x66, 0x95, 0x90, 0x61, 0xc5, 0x4c, 0xbc, 0xb0, 0x3d, 0x3f, 0xc6, 0xa2, 0x04, 0x7d, 0xc9, 0x81, + 0x51, 0x79, 0x1f, 0x9f, 0xd9, 0x01, 0x65, 0x40, 0xf1, 0x0d, 0x5b, 0x16, 0xfe, 0xab, 0x3a, 0xf5, + 0x34, 0x5c, 0xcf, 0x00, 0xc7, 0x38, 0xd3, 0x08, 0xf7, 0x45, 0x38, 0x9b, 0x53, 0xdd, 0xca, 0x59, + 0xee, 0x3b, 0x0e, 0x0c, 0x69, 0x59, 0xdf, 0xd0, 0xeb, 0x30, 0x18, 0x96, 0xad, 0xc7, 0x88, 0xad, + 0x96, 0x3b, 0x62, 0xc4, 0x14, 0x08, 0xa7, 0x0c, 0x0f, 0x13, 0xda, 0x96, 0x9b, 0xa2, 0xee, 0x3e, + 0x37, 0xfb, 0xc8, 0xa1, 0x6d, 0xff, 0xae, 0x17, 0x52, 0x4a, 0x47, 0xcc, 0x13, 0x91, 0x06, 0xc2, + 0x15, 0x0e, 0x0c, 0x84, 0xab, 0xc2, 0x98, 0xc7, 0xbc, 0xa8, 0xc7, 0xcc, 0x0e, 0xc1, 0x93, 0x7e, + 0x9a, 0x14, 0x70, 0x96, 0x24, 0xe5, 0x12, 0xa7, 0x55, 0x19, 0x97, 0xde, 0x23, 0x73, 0x29, 0x9b, + 0x14, 0x70, 0x96, 0x24, 0x7a, 0x19, 0x4a, 0x15, 0x76, 0xdb, 0x91, 0xf7, 0x71, 0x71, 0xf3, 0x7a, + 0x98, 0xac, 0x45, 0x24, 0x26, 0x41, 0x22, 0xd2, 0x3a, 0x3d, 0x2a, 0x46, 0xa1, 0x34, 0xdb, 0x05, + 0x0f, 0x77, 0xa5, 0x40, 0x0f, 0x0c, 0xcc, 0x0d, 0xeb, 0x27, 0xbb, 0x4c, 0x88, 0x08, 0xff, 0xb4, + 0x3a, 0x30, 0x94, 0xf5, 0x42, 0x6c, 0xe2, 0xa2, 0x5f, 0x76, 0x60, 0xa4, 0x21, 0x0d, 0xd5, 0xb8, + 0xdd, 0x90, 0x39, 0x0a, 0xb1, 0x95, 0xe9, 0xb7, 0xac, 0x53, 0xe6, 0xba, 0x84, 0x01, 0xc2, 0x26, + 0x6f, 0xf7, 0x4d, 0x07, 0xc6, 0xb3, 0xd5, 0xd0, 0x16, 0x3c, 0xd2, 0xf4, 0xa2, 0xad, 0xc5, 0x60, + 0x33, 0x62, 0xf7, 0x00, 0x12, 0xfe, 0x55, 0xa7, 0x37, 0x13, 0x12, 0xcd, 0x79, 0xbb, 0xdc, 0x83, + 0x57, 0x54, 0xaf, 0xd5, 0x3c, 0xb2, 0x72, 0x10, 0x32, 0x3e, 0x98, 0x16, 0x2a, 0xc3, 0x79, 0x8a, + 0xc0, 0x32, 0x6c, 0xf9, 0x61, 0x90, 0x32, 0x29, 0x30, 0x26, 0x2a, 0x9e, 0x6d, 0x25, 0x0f, 0x09, + 0xe7, 0xd7, 0x75, 0x07, 0xa0, 0x8f, 0xdf, 0x81, 0x72, 0xff, 0x6d, 0x01, 0xa4, 0x92, 0xf6, 0xe7, + 0xdb, 0x29, 0x44, 0x37, 0xb4, 0x88, 0x19, 0x5a, 0x84, 0x0d, 0x80, 0x6d, 0x68, 0x22, 0x1d, 0x9d, + 0x28, 0xa1, 0xda, 0x2b, 0xb9, 0xed, 0x27, 0xb3, 0x61, 0x55, 0x9e, 0xfc, 0x99, 0xf6, 0x7a, 0x55, + 0xc0, 0xb0, 0x2a, 0x75, 0x3f, 0xe9, 0xc0, 0x08, 0xed, 0x65, 0xa3, 0x41, 0x1a, 0xe5, 0x84, 0xb4, + 0x62, 0x14, 0x43, 0x31, 0xa6, 0xff, 0xd8, 0xb3, 0x60, 0xa5, 0x57, 0xdf, 0x48, 0x4b, 0x73, 0x19, + 0x50, 0x26, 0x98, 0xf3, 0x72, 0xbf, 0xdd, 0x03, 0x83, 0x6a, 0xb0, 0x0f, 0xe1, 0x87, 0xb8, 0x92, + 0x66, 0x8a, 0xe4, 0xd2, 0xb0, 0xa4, 0x65, 0x89, 0xa4, 0xc7, 0xf5, 0xe9, 0x60, 0x97, 0xdf, 0xb1, + 0x4f, 0x53, 0x46, 0x3e, 0x6d, 0x3a, 0x3c, 0x2f, 0xe8, 0x5e, 0x34, 0x0d, 0x5f, 0x78, 0x3e, 0x6f, + 0xeb, 0xfe, 0xe6, 0x5e, 0x5b, 0x3b, 0x8b, 0x72, 0xa6, 0x75, 0x77, 0x34, 0x67, 0x1e, 0x11, 0x29, + 0x1e, 0xea, 0x11, 0x91, 0xa7, 0xa0, 0x97, 0x04, 0xed, 0x26, 0x53, 0x5b, 0x06, 0x99, 0xba, 0xde, + 0x7b, 0x35, 0x68, 0x37, 0xcd, 0x9e, 0x31, 0x14, 0xf4, 0x5e, 0x18, 0xaa, 0x92, 0xb8, 0x12, 0xf9, + 0xec, 0xe2, 0xb8, 0xb0, 0x77, 0x3c, 0xcc, 0x8c, 0x48, 0x29, 0xd8, 0xac, 0xa8, 0x57, 0x70, 0x5f, + 0x85, 0xbe, 0xb5, 0x46, 0xbb, 0xe6, 0x07, 0xa8, 0x05, 0x7d, 0xfc, 0x1a, 0xb9, 0xd8, 0x79, 0x2d, + 0x9c, 0x01, 0xf9, 0x6a, 0xd7, 0x62, 0x21, 0xf8, 0x0d, 0x48, 0xc1, 0xc7, 0xfd, 0x67, 0x0e, 0xd0, + 0x03, 0xeb, 0xc2, 0x2c, 0xfa, 0xab, 0x1d, 0x6f, 0x66, 0xfc, 0x4c, 0xce, 0x9b, 0x19, 0x23, 0x0c, + 0x39, 0xe7, 0xb9, 0x8c, 0x06, 0x8c, 0x30, 0x13, 0xbd, 0xdc, 0x8f, 0x84, 0x8a, 0xfb, 0xec, 0x21, + 0x6f, 0x5e, 0xeb, 0x55, 0x85, 0x74, 0xd6, 0x41, 0xd8, 0x24, 0xee, 0xfe, 0x76, 0x2f, 0x68, 0x96, + 0xec, 0x43, 0x4c, 0xef, 0x8f, 0x64, 0xfc, 0x16, 0x2b, 0x56, 0xfc, 0x16, 0xd2, 0x19, 0xc0, 0x45, + 0x86, 0xe9, 0xaa, 0xa0, 0x8d, 0xaa, 0x93, 0x46, 0x4b, 0x2c, 0x0e, 0xd5, 0xa8, 0x6b, 0xa4, 0xd1, + 0xc2, 0xac, 0x44, 0xdd, 0x21, 0xeb, 0xed, 0x7a, 0x87, 0xac, 0x0e, 0xc5, 0x9a, 0xd7, 0xae, 0x11, + 0x11, 0xb8, 0x67, 0xc1, 0x45, 0xc5, 0x82, 0xea, 0xb9, 0x8b, 0x8a, 0xfd, 0x8b, 0x39, 0x03, 0xba, + 0x3a, 0xeb, 0x32, 0x92, 0x41, 0xd8, 0x1a, 0x2d, 0xac, 0x4e, 0x15, 0x1c, 0xc1, 0x57, 0xa7, 0xfa, + 0x89, 0x53, 0x66, 0xa8, 0x05, 0xfd, 0x15, 0x9e, 0xb0, 0x41, 0x6c, 0xf8, 0x8b, 0x36, 0x2e, 0xc9, + 0x31, 0x82, 0xdc, 0x14, 0x21, 0x7e, 0x60, 0xc9, 0xc6, 0xbd, 0x0c, 0x43, 0x5a, 0xae, 0x7d, 0xfa, + 0x19, 0x54, 0xae, 0x00, 0xed, 0x33, 0xcc, 0x79, 0x89, 0x87, 0x59, 0x89, 0xfb, 0x8d, 0x5e, 0x50, + 0x26, 0x21, 0xfd, 0x4a, 0x97, 0x57, 0xd1, 0x32, 0x9b, 0x18, 0x77, 0x89, 0xc3, 0x00, 0x8b, 0x52, + 0xaa, 0x14, 0x35, 0x49, 0x54, 0x53, 0x87, 0x50, 0x21, 0x5f, 0x95, 0x52, 0xb4, 0xa2, 0x17, 0x62, + 0x13, 0x97, 0x6a, 0xb4, 0x4d, 0xe1, 0xd9, 0xcd, 0xc6, 0xcd, 0x4a, 0x8f, 0x2f, 0x56, 0x18, 0xe8, + 0x93, 0x0e, 0x0c, 0x37, 0x35, 0x47, 0xb0, 0x88, 0xdf, 0xb3, 0xe1, 0xb8, 0xd0, 0xa8, 0xf2, 0x38, + 0x1b, 0x1d, 0x82, 0x0d, 0xae, 0x68, 0x01, 0xce, 0xc4, 0x24, 0x59, 0xdd, 0x09, 0x48, 0xa4, 0xae, + 0x5a, 0x8b, 0xbb, 0xf7, 0x2a, 0x68, 0xbe, 0x9c, 0x45, 0xc0, 0x9d, 0x75, 0x72, 0x43, 0x1e, 0x8b, + 0x47, 0x0e, 0x79, 0x9c, 0x83, 0xf1, 0x4d, 0xcf, 0x6f, 0xb4, 0x23, 0xd2, 0x35, 0x70, 0x72, 0x3e, + 0x53, 0x8e, 0x3b, 0x6a, 0xb0, 0x7b, 0x1b, 0x0d, 0xaf, 0x16, 0x97, 0xfa, 0xb5, 0x7b, 0x1b, 0x14, + 0x80, 0x39, 0xdc, 0xfd, 0xc7, 0x0e, 0xf0, 0xa4, 0x27, 0xd3, 0x9b, 0x9b, 0x7e, 0xe0, 0x27, 0xbb, + 0xe8, 0xab, 0x0e, 0x8c, 0x07, 0x61, 0x95, 0x4c, 0x07, 0x89, 0x2f, 0x81, 0xf6, 0x12, 0x4b, 0x33, + 0x5e, 0xd7, 0x33, 0xe4, 0xf9, 0x0d, 0xfa, 0x2c, 0x14, 0x77, 0x34, 0xc3, 0xbd, 0x08, 0xe7, 0x73, + 0x09, 0xb8, 0x6f, 0xf6, 0x80, 0x99, 0xbb, 0x05, 0xbd, 0x00, 0xc5, 0x06, 0xcb, 0x26, 0xe0, 0x1c, + 0x33, 0x29, 0x0f, 0x1b, 0x2b, 0x9e, 0x6e, 0x80, 0x53, 0x42, 0x73, 0x30, 0xc4, 0x12, 0xc2, 0x88, + 0x5c, 0x0f, 0x7c, 0x45, 0xb8, 0xe9, 0x7b, 0x56, 0xaa, 0xe8, 0x8e, 0xf9, 0x13, 0xeb, 0xd5, 0xd0, + 0x6b, 0xd0, 0xbf, 0xc1, 0xd3, 0xe2, 0xd9, 0x73, 0x5d, 0x89, 0x3c, 0x7b, 0x4c, 0x99, 0x91, 0x49, + 0xf7, 0xee, 0xa4, 0xff, 0x62, 0xc9, 0x11, 0xed, 0xc2, 0x80, 0x27, 0xbf, 0x69, 0xaf, 0xad, 0x38, + 0x7c, 0x63, 0xfe, 0x88, 0x40, 0x0b, 0xf9, 0x0d, 0x15, 0xbb, 0x4c, 0x44, 0x4a, 0xf1, 0x50, 0x11, + 0x29, 0xdf, 0x72, 0x00, 0xd2, 0x27, 0x01, 0xd0, 0x6d, 0x18, 0x88, 0x9f, 0x35, 0x4e, 0xf9, 0x36, + 0x2e, 0x4f, 0x0b, 0x8a, 0xda, 0x05, 0x43, 0x01, 0xc1, 0x8a, 0xdb, 0xdd, 0x2c, 0x13, 0x3f, 0x75, + 0xe0, 0x5c, 0xde, 0xd3, 0x05, 0xf7, 0xb1, 0xc5, 0x47, 0x35, 0x4a, 0x88, 0x0a, 0x6b, 0x11, 0xd9, + 0xf4, 0x6f, 0x67, 0x83, 0x56, 0x96, 0x64, 0x01, 0x4e, 0x71, 0xdc, 0xef, 0xf6, 0x81, 0x62, 0x7c, + 0x42, 0x46, 0x8c, 0x27, 0xe8, 0x21, 0xa7, 0x96, 0xa6, 0x6b, 0x54, 0x78, 0x98, 0x41, 0xb1, 0x28, + 0xa5, 0x07, 0x1d, 0x19, 0x4b, 0x2d, 0x44, 0x36, 0x9b, 0x85, 0x32, 0xe6, 0x1a, 0xab, 0xd2, 0x3c, + 0xb3, 0x48, 0xf1, 0x54, 0xcc, 0x22, 0x7d, 0xf6, 0xcd, 0x22, 0x4f, 0x41, 0x7f, 0x14, 0x36, 0xc8, + 0x34, 0xbe, 0x2e, 0xd4, 0xf7, 0x34, 0x91, 0x2e, 0x07, 0x63, 0x59, 0x9e, 0xcd, 0xe1, 0x39, 0x70, + 0xb8, 0x1c, 0x9e, 0xe8, 0xbb, 0xce, 0x01, 0x96, 0x97, 0x41, 0x5b, 0x7b, 0x42, 0x6e, 0x26, 0x2b, + 0x76, 0x16, 0x39, 0x8e, 0x39, 0xe7, 0x6b, 0x0e, 0x9c, 0x21, 0x41, 0x25, 0xda, 0x65, 0x74, 0x04, + 0x35, 0xe1, 0x3a, 0xbd, 0x61, 0x63, 0xf1, 0x5d, 0xcd, 0x12, 0xe7, 0x7e, 0x91, 0x0e, 0x30, 0xee, + 0x6c, 0x86, 0xfb, 0xe3, 0x02, 0x9c, 0xcd, 0xa1, 0xc0, 0xae, 0xc9, 0x34, 0xe9, 0x04, 0x5a, 0xac, + 0x66, 0x97, 0xcf, 0x92, 0x80, 0x63, 0x85, 0x81, 0xd6, 0xe0, 0xdc, 0x56, 0x33, 0x4e, 0xa9, 0xcc, + 0x86, 0x41, 0x42, 0x6e, 0xcb, 0xc5, 0x24, 0xbd, 0xa0, 0xe7, 0x96, 0x72, 0x70, 0x70, 0x6e, 0x4d, + 0xaa, 0x6d, 0x90, 0xc0, 0xdb, 0x68, 0x90, 0xb4, 0x48, 0x5c, 0xf2, 0x52, 0xda, 0xc6, 0xd5, 0x4c, + 0x39, 0xee, 0xa8, 0x81, 0x3e, 0xeb, 0xc0, 0x43, 0x31, 0x89, 0xb6, 0x49, 0x54, 0xf6, 0xab, 0x64, + 0xb6, 0x1d, 0x27, 0x61, 0x93, 0x44, 0xc7, 0x34, 0x0d, 0x4e, 0xee, 0xef, 0x4d, 0x3e, 0x54, 0xee, + 0x4e, 0x0d, 0x1f, 0xc4, 0xca, 0xfd, 0xac, 0x03, 0xa3, 0x65, 0x76, 0x58, 0x55, 0xaa, 0xaf, 0xed, + 0xd4, 0x83, 0x4f, 0xa8, 0x94, 0x02, 0x19, 0x21, 0x66, 0x26, 0x01, 0x70, 0x5f, 0x81, 0xf1, 0x32, + 0x69, 0x7a, 0xad, 0x3a, 0xbb, 0xa1, 0xc9, 0xc3, 0x74, 0x2e, 0xc3, 0x60, 0x2c, 0x61, 0xd9, 0xc7, + 0x43, 0x14, 0x32, 0x4e, 0x71, 0xd0, 0xe3, 0x3c, 0xa4, 0x48, 0xde, 0xf3, 0x18, 0xe4, 0x87, 0x04, + 0x1e, 0x87, 0x14, 0x63, 0x59, 0xe6, 0xee, 0xc0, 0x70, 0x5a, 0x9d, 0x6c, 0xa2, 0x1a, 0x8c, 0x55, + 0xb4, 0x2b, 0x52, 0x69, 0x70, 0xfa, 0xe1, 0x6f, 0x53, 0xf1, 0x84, 0xa8, 0x26, 0x11, 0x9c, 0xa5, + 0xea, 0x7e, 0xa1, 0x00, 0x63, 0x8a, 0xb3, 0x70, 0x79, 0xbd, 0x91, 0x0d, 0x83, 0xc2, 0x36, 0x52, + 0x9d, 0x98, 0x23, 0x79, 0x40, 0x28, 0xd4, 0x1b, 0xd9, 0x50, 0xa8, 0x13, 0x65, 0xdf, 0xe1, 0xc5, + 0xfb, 0x56, 0x01, 0x06, 0x54, 0xe2, 0x95, 0x17, 0xa0, 0xc8, 0xce, 0x71, 0xf7, 0xa6, 0x8d, 0xb2, + 0x33, 0x21, 0xe6, 0x94, 0x28, 0x49, 0x16, 0xc9, 0x71, 0xec, 0xac, 0x93, 0x83, 0xdc, 0xfc, 0xe6, + 0x45, 0x09, 0xe6, 0x94, 0xd0, 0x12, 0xf4, 0x90, 0xa0, 0x2a, 0xd4, 0xd2, 0xa3, 0x13, 0x64, 0x8f, + 0xf6, 0x5c, 0x0d, 0xaa, 0x98, 0x52, 0x61, 0xa9, 0x0f, 0xb9, 0xf6, 0x91, 0x79, 0xa2, 0x41, 0xa8, + 0x1e, 0xa2, 0xd4, 0xfd, 0xe5, 0x1e, 0xe8, 0x2b, 0xb7, 0x37, 0xa8, 0x82, 0xfd, 0x4d, 0x07, 0xce, + 0xee, 0x64, 0x52, 0xb2, 0xa6, 0x53, 0xf6, 0x86, 0x3d, 0x13, 0xa4, 0x1e, 0x4d, 0xf4, 0x90, 0x7c, + 0x7f, 0x3a, 0xa7, 0x10, 0xe7, 0x35, 0xc7, 0xc8, 0x8a, 0xd8, 0x73, 0x22, 0x59, 0x11, 0x6f, 0x9f, + 0x70, 0xf8, 0xfa, 0x48, 0xb7, 0xd0, 0x75, 0xf7, 0xb7, 0x8b, 0x00, 0xfc, 0x6b, 0xac, 0xb6, 0x92, + 0xc3, 0xd8, 0xa8, 0x9e, 0x83, 0x61, 0xf9, 0x20, 0x7e, 0xde, 0xeb, 0x1f, 0x0b, 0x5a, 0x19, 0x36, + 0x30, 0xd9, 0x81, 0x20, 0x48, 0xa2, 0x5d, 0xae, 0x34, 0x66, 0x43, 0xd4, 0x55, 0x09, 0xd6, 0xb0, + 0xd0, 0x94, 0x61, 0xf3, 0xe7, 0xae, 0xdc, 0xd1, 0x03, 0x4c, 0xf4, 0xef, 0x85, 0x51, 0x33, 0x57, + 0x83, 0xd0, 0x94, 0x94, 0xeb, 0xd5, 0x4c, 0xf1, 0x80, 0x33, 0xd8, 0x74, 0x12, 0x57, 0xa3, 0x5d, + 0xdc, 0x0e, 0x84, 0xca, 0xa4, 0x26, 0xf1, 0x1c, 0x83, 0x62, 0x51, 0xca, 0x2e, 0xca, 0xb3, 0xdd, + 0x88, 0xc3, 0xc5, 0x65, 0xfb, 0xf4, 0xa2, 0xbc, 0x56, 0x86, 0x0d, 0x4c, 0xca, 0x41, 0xd8, 0xf8, + 0xc0, 0x5c, 0x26, 0x19, 0xc3, 0x5c, 0x0b, 0x46, 0x43, 0xd3, 0x36, 0xc1, 0xe3, 0xb5, 0xde, 0x75, + 0xc8, 0xa9, 0x67, 0xd4, 0xe5, 0x2e, 0xf3, 0x8c, 0x29, 0x23, 0x43, 0x9f, 0xea, 0x8c, 0x7a, 0x24, + 0xf7, 0xb0, 0x19, 0x6a, 0xd8, 0x35, 0xd8, 0x7a, 0x0d, 0xce, 0xb5, 0xc2, 0xea, 0x5a, 0xe4, 0x87, + 0x91, 0x9f, 0xec, 0xce, 0x36, 0xbc, 0x38, 0x66, 0x13, 0x63, 0xc4, 0x54, 0x4e, 0xd6, 0x72, 0x70, + 0x70, 0x6e, 0x4d, 0xaa, 0xdd, 0xb7, 0x04, 0x90, 0x85, 0x19, 0x15, 0xb9, 0x76, 0x2f, 0x11, 0xb1, + 0x2a, 0x75, 0xcf, 0xc2, 0x99, 0x72, 0xbb, 0xd5, 0x6a, 0xf8, 0xa4, 0xaa, 0x6c, 0xea, 0xee, 0xfb, + 0x60, 0x4c, 0xe4, 0x4c, 0x54, 0xaa, 0xc0, 0x91, 0x32, 0xfc, 0xba, 0x7f, 0xe2, 0xc0, 0x58, 0x26, + 0xa8, 0x03, 0xbd, 0x96, 0xdd, 0xc0, 0xad, 0x18, 0xac, 0xf4, 0xbd, 0x9b, 0x2f, 0xd2, 0x5c, 0x65, + 0xa0, 0x2e, 0x83, 0x97, 0xad, 0xdd, 0x01, 0x60, 0x21, 0xbe, 0x7c, 0x47, 0xd0, 0x23, 0xa0, 0xdd, + 0xcf, 0x14, 0x20, 0x3f, 0x92, 0x06, 0x7d, 0xb4, 0x73, 0x00, 0x5e, 0xb0, 0x38, 0x00, 0x22, 0x94, + 0xa7, 0xfb, 0x18, 0x04, 0xe6, 0x18, 0xac, 0x58, 0x1a, 0x03, 0xc1, 0xb7, 0x73, 0x24, 0xfe, 0x97, + 0x03, 0x43, 0xeb, 0xeb, 0xcb, 0xca, 0xbe, 0x84, 0xe1, 0x42, 0xcc, 0xef, 0x38, 0x33, 0x3f, 0xe5, + 0x6c, 0xd8, 0x6c, 0x71, 0xb7, 0xa5, 0x70, 0xa7, 0xb2, 0xf4, 0x95, 0xe5, 0x5c, 0x0c, 0xdc, 0xa5, + 0x26, 0x5a, 0x84, 0xb3, 0x7a, 0x49, 0x59, 0x7b, 0xfc, 0xab, 0x28, 0xf2, 0x8a, 0x74, 0x16, 0xe3, + 0xbc, 0x3a, 0x59, 0x52, 0xc2, 0x54, 0x28, 0x1e, 0xdb, 0xef, 0x20, 0x25, 0x8a, 0x71, 0x5e, 0x1d, + 0x77, 0x15, 0x86, 0xd6, 0xbd, 0x48, 0x75, 0xfc, 0xfd, 0x30, 0x5e, 0x09, 0x9b, 0xd2, 0x44, 0xb3, + 0x4c, 0xb6, 0x49, 0x43, 0x74, 0x99, 0xa7, 0xe8, 0xcf, 0x94, 0xe1, 0x0e, 0x6c, 0xf7, 0x7f, 0x5c, + 0x02, 0x75, 0x67, 0xeb, 0x10, 0x3b, 0x4c, 0x4b, 0xc5, 0x18, 0x16, 0x2d, 0xc7, 0x18, 0x2a, 0x59, + 0x9b, 0x89, 0x33, 0x4c, 0xd2, 0x38, 0xc3, 0x3e, 0xdb, 0x71, 0x86, 0x4a, 0x61, 0xec, 0x88, 0x35, + 0xfc, 0xb2, 0x03, 0xc3, 0x41, 0x58, 0x25, 0xca, 0x19, 0xd5, 0xcf, 0xb4, 0xd6, 0x97, 0xed, 0x05, + 0x4f, 0xf3, 0x98, 0x39, 0x41, 0x9e, 0x47, 0xa2, 0xaa, 0x2d, 0x4a, 0x2f, 0xc2, 0x46, 0x3b, 0xd0, + 0xbc, 0x66, 0x34, 0xe4, 0xb6, 0xf9, 0x87, 0xf3, 0x4e, 0x0f, 0x77, 0xb5, 0x00, 0xde, 0xd6, 0xf4, + 0xa6, 0x41, 0xeb, 0x2f, 0xd3, 0xa7, 0x2e, 0x06, 0x99, 0x81, 0x35, 0xd5, 0xa7, 0x5c, 0xe8, 0xe3, + 0x21, 0xab, 0x22, 0x83, 0x0d, 0xf3, 0x7c, 0xf1, 0x70, 0x56, 0x2c, 0x4a, 0x50, 0x22, 0x1d, 0xde, + 0x43, 0xb6, 0xf2, 0xa9, 0x1b, 0x0e, 0xf5, 0x7c, 0x8f, 0x37, 0x7a, 0x5e, 0x3f, 0x94, 0x0e, 0x1f, + 0xe6, 0x50, 0x3a, 0xd2, 0xf5, 0x40, 0xfa, 0x79, 0x07, 0x86, 0x2b, 0x5a, 0x7e, 0xf3, 0xd2, 0x93, + 0xb6, 0x9e, 0x65, 0xcd, 0x4b, 0x43, 0xcf, 0x1d, 0x2a, 0x46, 0x3e, 0x75, 0x83, 0x3b, 0x4b, 0xb9, + 0xc7, 0x4e, 0xe0, 0x6c, 0xeb, 0xb7, 0x72, 0x53, 0xdf, 0x3c, 0xd1, 0xcb, 0x20, 0x3e, 0x0a, 0xc3, + 0x82, 0x17, 0x7a, 0x1d, 0x06, 0x64, 0xd4, 0xb3, 0x88, 0x49, 0xc6, 0x36, 0x2c, 0xdc, 0xa6, 0x1b, + 0x4d, 0x26, 0xea, 0xe2, 0x50, 0xac, 0x38, 0xa2, 0x3a, 0xf4, 0x54, 0xbd, 0x9a, 0x88, 0x4e, 0x5e, + 0xb1, 0x93, 0x07, 0x51, 0xf2, 0x64, 0xc7, 0xab, 0xb9, 0xe9, 0x05, 0x4c, 0x59, 0xa0, 0xdb, 0x69, + 0x82, 0xe8, 0x71, 0x6b, 0xbb, 0xaf, 0xa9, 0x26, 0x71, 0x1b, 0x43, 0x47, 0xbe, 0xe9, 0xaa, 0xf0, + 0x3c, 0xfe, 0x05, 0xc6, 0x76, 0xde, 0x4e, 0x22, 0x45, 0x9e, 0xf9, 0x21, 0xf5, 0x5e, 0x52, 0x2e, + 0xec, 0x39, 0xf8, 0x9f, 0xb5, 0xc5, 0x85, 0xe5, 0x2f, 0xc8, 0x3e, 0x03, 0xdf, 0x80, 0xbe, 0x16, + 0x8b, 0x62, 0x28, 0xfd, 0x9c, 0xad, 0xbd, 0x85, 0x47, 0x45, 0xf0, 0xb9, 0xc9, 0xff, 0xc7, 0x82, + 0x07, 0xba, 0x0a, 0xfd, 0xfc, 0x9d, 0x03, 0x1e, 0x1d, 0x3e, 0x74, 0x65, 0xa2, 0xfb, 0x6b, 0x09, + 0xe9, 0x46, 0xc1, 0x7f, 0xc7, 0x58, 0xd6, 0x45, 0x5f, 0x70, 0x60, 0x94, 0x4a, 0xd4, 0xf4, 0x61, + 0x86, 0x12, 0xb2, 0x25, 0xb3, 0x6e, 0xc4, 0x54, 0x23, 0x91, 0xb2, 0x46, 0x1d, 0x93, 0x16, 0x0d, + 0x76, 0x38, 0xc3, 0x1e, 0xbd, 0x01, 0x03, 0xb1, 0x5f, 0x25, 0x15, 0x2f, 0x8a, 0x4b, 0x67, 0x4f, + 0xa6, 0x29, 0xa9, 0xaf, 0x43, 0x30, 0xc2, 0x8a, 0x65, 0xee, 0x73, 0xe8, 0xe7, 0xee, 0xf3, 0x73, + 0xe8, 0x7f, 0xdd, 0x81, 0xf3, 0x3c, 0x2f, 0x77, 0x36, 0x29, 0xfb, 0xf9, 0x63, 0x9a, 0x57, 0x58, + 0x58, 0xfb, 0x74, 0x1e, 0x49, 0x9c, 0xcf, 0x89, 0x25, 0xf6, 0x34, 0xdf, 0xd1, 0xb8, 0x60, 0xd5, + 0xe7, 0x77, 0xf8, 0xb7, 0x33, 0xd0, 0x33, 0x30, 0xd4, 0x12, 0xdb, 0xa1, 0x1f, 0x37, 0xd9, 0x25, + 0x85, 0x1e, 0x7e, 0x91, 0x6b, 0x2d, 0x05, 0x63, 0x1d, 0xc7, 0xc8, 0xf2, 0xfa, 0xd4, 0x41, 0x59, + 0x5e, 0xd1, 0x0d, 0x18, 0x4a, 0xc2, 0x06, 0x89, 0xc4, 0x49, 0xb5, 0xc4, 0x66, 0xe0, 0xa5, 0xbc, + 0xb5, 0xb5, 0xae, 0xd0, 0xd2, 0x93, 0x6c, 0x0a, 0x8b, 0xb1, 0x4e, 0x87, 0x05, 0x86, 0x8a, 0x7c, + 0xe7, 0x11, 0x3b, 0xc2, 0x3e, 0x98, 0x09, 0x0c, 0xd5, 0x0b, 0xb1, 0x89, 0x8b, 0x16, 0xe0, 0x4c, + 0xab, 0xe3, 0x0c, 0xcc, 0xaf, 0x29, 0xa9, 0x70, 0x82, 0xce, 0x03, 0x70, 0x67, 0x1d, 0xe3, 0xf4, + 0xfb, 0xd0, 0x41, 0xa7, 0xdf, 0x2e, 0x39, 0x4f, 0x1f, 0x3e, 0x4e, 0xce, 0x53, 0x54, 0x85, 0x87, + 0xbd, 0x76, 0x12, 0xb2, 0x1c, 0x1d, 0x66, 0x15, 0x1e, 0x23, 0xfb, 0x28, 0x0f, 0xbb, 0xdd, 0xdf, + 0x9b, 0x7c, 0x78, 0xfa, 0x00, 0x3c, 0x7c, 0x20, 0x15, 0xf4, 0x2a, 0x0c, 0x10, 0x91, 0xb7, 0xb5, + 0xf4, 0x33, 0xb6, 0x94, 0x04, 0x33, 0x13, 0xac, 0x0c, 0x79, 0xe4, 0x30, 0xac, 0xf8, 0xa1, 0x75, + 0x18, 0xaa, 0x87, 0x71, 0x32, 0xdd, 0xf0, 0xbd, 0x98, 0xc4, 0xa5, 0x47, 0xd8, 0xa4, 0xc9, 0xd5, + 0xbd, 0xae, 0x49, 0xb4, 0x74, 0xce, 0x5c, 0x4b, 0x6b, 0x62, 0x9d, 0x0c, 0x22, 0xcc, 0xf3, 0xc7, + 0x02, 0x84, 0xa5, 0x57, 0xe6, 0x12, 0xeb, 0xd8, 0x13, 0x79, 0x94, 0xd7, 0xc2, 0x6a, 0xd9, 0xc4, + 0x56, 0xae, 0x3f, 0x1d, 0x88, 0xb3, 0x34, 0xd1, 0x73, 0x30, 0xdc, 0x0a, 0xab, 0xe5, 0x16, 0xa9, + 0xac, 0x79, 0x49, 0xa5, 0x5e, 0x9a, 0x34, 0xad, 0x6e, 0x6b, 0x5a, 0x19, 0x36, 0x30, 0x51, 0x0b, + 0xfa, 0x9b, 0xfc, 0xf2, 0x76, 0xe9, 0x31, 0x5b, 0x67, 0x1b, 0x71, 0x1b, 0x9c, 0xeb, 0x0b, 0xe2, + 0x07, 0x96, 0x6c, 0xd0, 0x3f, 0x70, 0x60, 0x2c, 0x73, 0xed, 0xa6, 0xf4, 0x0e, 0x6b, 0x2a, 0x8b, + 0x49, 0x78, 0xe6, 0x09, 0x36, 0x7c, 0x26, 0xf0, 0x4e, 0x27, 0x08, 0x67, 0x5b, 0xc4, 0xc7, 0x85, + 0x65, 0x60, 0x28, 0x3d, 0x6e, 0x6f, 0x5c, 0x18, 0x41, 0x39, 0x2e, 0xec, 0x07, 0x96, 0x6c, 0xd0, + 0x53, 0xd0, 0x2f, 0x92, 0xa5, 0x95, 0x9e, 0x30, 0xdd, 0xb7, 0x22, 0xa7, 0x1a, 0x96, 0xe5, 0x13, + 0xef, 0x83, 0x33, 0x1d, 0x47, 0xb7, 0x23, 0xa5, 0x01, 0xf8, 0x75, 0x07, 0xf4, 0x1b, 0xb3, 0xd6, + 0x1f, 0x4b, 0x78, 0x0e, 0x86, 0x2b, 0xfc, 0x49, 0x35, 0x7e, 0xe7, 0xb6, 0xd7, 0xb4, 0x7f, 0xce, + 0x6a, 0x65, 0xd8, 0xc0, 0x74, 0xaf, 0x01, 0xea, 0xcc, 0x64, 0x7d, 0xac, 0x1c, 0x33, 0xff, 0xc8, + 0x81, 0x11, 0x43, 0x67, 0xb0, 0xee, 0xf1, 0x9b, 0x07, 0xd4, 0xf4, 0xa3, 0x28, 0x8c, 0xf4, 0xb7, + 0xab, 0x44, 0xea, 0x5e, 0x76, 0xdf, 0x69, 0xa5, 0xa3, 0x14, 0xe7, 0xd4, 0x70, 0xff, 0x69, 0x2f, + 0xa4, 0x31, 0xbf, 0x2a, 0xdd, 0xa8, 0xd3, 0x35, 0xdd, 0xe8, 0xd3, 0x30, 0xf0, 0x4a, 0x1c, 0x06, + 0x6b, 0x69, 0x52, 0x52, 0xf5, 0x2d, 0x9e, 0x2f, 0xaf, 0x5e, 0x67, 0x98, 0x0a, 0x83, 0x61, 0x7f, + 0x64, 0xde, 0x6f, 0x24, 0x9d, 0x59, 0x2b, 0x9f, 0x7f, 0x81, 0xc3, 0xb1, 0xc2, 0x60, 0xcf, 0x58, + 0x6d, 0x13, 0x65, 0x18, 0x4f, 0x9f, 0xb1, 0xe2, 0x49, 0xea, 0x59, 0x19, 0xba, 0x0c, 0x83, 0xca, + 0xa8, 0x2e, 0x2c, 0xf5, 0x6a, 0xa4, 0x94, 0xe5, 0x1d, 0xa7, 0x38, 0x4c, 0x21, 0x14, 0x86, 0x58, + 0x61, 0x42, 0x29, 0xdb, 0x38, 0x9e, 0x64, 0x4c, 0xbb, 0x5c, 0xb6, 0x4b, 0x30, 0x56, 0x2c, 0xf3, + 0xdc, 0x9e, 0x83, 0x27, 0xe1, 0xf6, 0xd4, 0x03, 0xd0, 0x8b, 0x87, 0x0d, 0x40, 0x37, 0xe7, 0xf6, + 0xc0, 0xa1, 0xe6, 0xf6, 0xa7, 0x7a, 0xa0, 0xff, 0x26, 0x89, 0x58, 0xb2, 0xe6, 0xa7, 0xa0, 0x7f, + 0x9b, 0xff, 0x9b, 0xbd, 0x49, 0x28, 0x30, 0xb0, 0x2c, 0xa7, 0xdf, 0x6d, 0xa3, 0xed, 0x37, 0xaa, + 0x73, 0xe9, 0x2a, 0x4e, 0xf3, 0xbc, 0xc9, 0x02, 0x9c, 0xe2, 0xd0, 0x0a, 0x35, 0xaa, 0xd9, 0x37, + 0x9b, 0x7e, 0x92, 0x0d, 0x02, 0x5a, 0x90, 0x05, 0x38, 0xc5, 0x41, 0x4f, 0x40, 0x5f, 0xcd, 0x4f, + 0xd6, 0xbd, 0x5a, 0xd6, 0xcb, 0xb7, 0xc0, 0xa0, 0x58, 0x94, 0x32, 0x37, 0x91, 0x9f, 0xac, 0x47, + 0x84, 0x59, 0x76, 0x3b, 0x52, 0x0a, 0x2c, 0x68, 0x65, 0xd8, 0xc0, 0x64, 0x4d, 0x0a, 0x45, 0xcf, + 0x44, 0x04, 0x64, 0xda, 0x24, 0x59, 0x80, 0x53, 0x1c, 0x3a, 0xff, 0x2b, 0x61, 0xb3, 0xe5, 0x37, + 0x44, 0x6c, 0xae, 0x36, 0xff, 0x67, 0x05, 0x1c, 0x2b, 0x0c, 0x8a, 0x4d, 0x45, 0x18, 0x15, 0x3f, + 0xd9, 0x27, 0x83, 0xd6, 0x04, 0x1c, 0x2b, 0x0c, 0xf7, 0x26, 0x8c, 0xf0, 0x95, 0x3c, 0xdb, 0xf0, + 0xfc, 0xe6, 0xc2, 0x2c, 0xba, 0xda, 0x11, 0x80, 0xfe, 0x54, 0x4e, 0x00, 0xfa, 0x79, 0xa3, 0x52, + 0x67, 0x20, 0xba, 0xfb, 0xc3, 0x02, 0x0c, 0x9c, 0xe2, 0xab, 0x6b, 0xa7, 0xfe, 0x80, 0x28, 0xba, + 0x9d, 0x79, 0x71, 0x6d, 0xcd, 0xe6, 0x7d, 0x92, 0x03, 0x5f, 0x5b, 0xfb, 0xaf, 0x05, 0xb8, 0x20, + 0x51, 0xd3, 0x07, 0xf4, 0xd9, 0x93, 0x41, 0x27, 0x3f, 0xd0, 0x91, 0x31, 0xd0, 0x6b, 0xf6, 0x4e, + 0xa3, 0x0b, 0xb3, 0x5d, 0x87, 0xfa, 0xd5, 0xcc, 0x50, 0x63, 0xab, 0x5c, 0x0f, 0x1e, 0xec, 0x3f, + 0x75, 0x60, 0x22, 0x7f, 0xb0, 0x4f, 0xe1, 0x91, 0xbb, 0x37, 0xcc, 0x47, 0xee, 0x7e, 0xd1, 0xde, + 0x14, 0x33, 0xbb, 0xd2, 0xe5, 0xb9, 0xbb, 0x3f, 0x76, 0xe0, 0x9c, 0xac, 0xc0, 0x76, 0xcf, 0x19, + 0x3f, 0x60, 0x81, 0x28, 0x27, 0x3f, 0xcd, 0x5e, 0x37, 0xa6, 0xd9, 0x4b, 0xf6, 0x3a, 0xae, 0xf7, + 0xa3, 0xeb, 0xe3, 0xc0, 0x7f, 0xe4, 0x40, 0x29, 0xaf, 0xc2, 0x29, 0x7c, 0xf2, 0xd7, 0xcc, 0x4f, + 0x7e, 0xf3, 0x64, 0x7a, 0xde, 0xfd, 0x83, 0x97, 0xba, 0x0d, 0x14, 0x6a, 0x48, 0xbd, 0xca, 0xb1, + 0xe5, 0xa3, 0xe5, 0x2c, 0xf2, 0x15, 0xb4, 0x06, 0xf4, 0xc5, 0x2c, 0x6a, 0x43, 0x4c, 0x81, 0x6b, + 0x36, 0xb4, 0x2d, 0x4a, 0x4f, 0xd8, 0xd8, 0xd9, 0xff, 0x58, 0xf0, 0x70, 0xff, 0xd0, 0x81, 0x8b, + 0xea, 0xf1, 0x4a, 0xb2, 0x4d, 0x1a, 0xe9, 0xfa, 0x60, 0xa9, 0xed, 0x3d, 0xf5, 0xd3, 0x5e, 0x6a, + 0xfb, 0x94, 0x45, 0xba, 0x16, 0x52, 0x18, 0xd6, 0x78, 0xa2, 0x32, 0x9c, 0x67, 0xa9, 0xe8, 0xe7, + 0xfd, 0xc0, 0x6b, 0xf8, 0xaf, 0x92, 0x08, 0x93, 0x66, 0xb8, 0xed, 0x35, 0x84, 0xa6, 0xae, 0xee, + 0xa0, 0xce, 0xe7, 0x21, 0xe1, 0xfc, 0xba, 0xee, 0x1f, 0x38, 0x30, 0x7c, 0x8a, 0x0f, 0x76, 0x86, + 0xe6, 0xc4, 0x7e, 0xde, 0xde, 0xc4, 0xee, 0x32, 0x99, 0xf7, 0x8a, 0xd0, 0xf1, 0x86, 0x21, 0xfa, + 0xb4, 0xa3, 0xa2, 0x53, 0x78, 0x04, 0xdf, 0x07, 0xed, 0xb5, 0xe3, 0x28, 0x19, 0xf4, 0xd0, 0xd7, + 0x32, 0x69, 0x05, 0x0b, 0xb6, 0x72, 0xf5, 0x74, 0xb4, 0xe6, 0x18, 0xe9, 0x05, 0xbf, 0xec, 0x00, + 0xf0, 0x76, 0x8a, 0xac, 0xc4, 0xb4, 0x6d, 0x1b, 0x27, 0x36, 0x52, 0x94, 0x09, 0x6f, 0x9a, 0x5a, + 0x08, 0x69, 0x01, 0xd6, 0x5a, 0x72, 0x0f, 0x79, 0x03, 0xef, 0x39, 0x65, 0xe1, 0x17, 0x1c, 0x18, + 0xcb, 0x34, 0x37, 0xa7, 0xfe, 0xa6, 0xf9, 0xb6, 0x99, 0x05, 0xfd, 0xc8, 0xcc, 0x55, 0xab, 0x9b, + 0x40, 0xfe, 0xbb, 0x0b, 0xc6, 0xe3, 0xaf, 0xe8, 0x35, 0x18, 0x94, 0xf6, 0x0b, 0x39, 0xbd, 0x6d, + 0xbe, 0xf1, 0xa8, 0x0e, 0x29, 0x12, 0x12, 0xe3, 0x94, 0x5f, 0x26, 0xf8, 0xad, 0x70, 0xa8, 0xe0, + 0xb7, 0xfb, 0xfb, 0x42, 0x64, 0xbe, 0x75, 0xb9, 0xf7, 0x44, 0xac, 0xcb, 0x0f, 0x5b, 0xb7, 0x2e, + 0x3f, 0x72, 0xca, 0xd6, 0x65, 0xcd, 0xd5, 0x57, 0xbc, 0x07, 0x57, 0xdf, 0x6b, 0x70, 0x6e, 0x3b, + 0x3d, 0x3a, 0xaa, 0x99, 0x24, 0xf2, 0xd2, 0x3c, 0x95, 0x6b, 0x53, 0xa6, 0xc7, 0xe0, 0x38, 0x21, + 0x41, 0xa2, 0x1d, 0x3a, 0xd3, 0xb8, 0xbb, 0x9b, 0x39, 0xe4, 0x70, 0x2e, 0x93, 0xac, 0xcf, 0xa6, + 0xff, 0x10, 0x3e, 0x9b, 0x6f, 0x3b, 0x70, 0xde, 0xeb, 0xb8, 0x06, 0x85, 0xc9, 0xa6, 0x08, 0x1c, + 0xb9, 0x65, 0x4f, 0x11, 0x30, 0xc8, 0x0b, 0xe7, 0x58, 0x5e, 0x11, 0xce, 0x6f, 0x10, 0x7a, 0x3c, + 0x75, 0xa0, 0xf3, 0x68, 0xcd, 0x7c, 0x6f, 0xf7, 0xd7, 0xb2, 0x51, 0x39, 0xc0, 0x86, 0xfe, 0xc3, + 0x76, 0xcf, 0xcc, 0x16, 0x22, 0x73, 0x86, 0xee, 0x21, 0x32, 0x27, 0xe3, 0x40, 0x1b, 0xb6, 0xe4, + 0x40, 0x0b, 0x60, 0xdc, 0x6f, 0x7a, 0x35, 0xb2, 0xd6, 0x6e, 0x34, 0xf8, 0xbd, 0x0c, 0xf9, 0x0a, + 0x67, 0xae, 0x1d, 0x6e, 0x39, 0xac, 0x78, 0x8d, 0xec, 0x63, 0xc7, 0xea, 0xfe, 0xc9, 0x62, 0x86, + 0x12, 0xee, 0xa0, 0x4d, 0x27, 0x2c, 0x4b, 0x90, 0x46, 0x12, 0x3a, 0xda, 0x2c, 0xfc, 0x63, 0x80, + 0x4f, 0xd8, 0x6b, 0x29, 0x18, 0xeb, 0x38, 0x68, 0x09, 0x06, 0xab, 0x41, 0x2c, 0x6e, 0x74, 0x8e, + 0x31, 0x61, 0xf6, 0x4e, 0x2a, 0x02, 0xe7, 0xae, 0x97, 0xd5, 0x5d, 0xce, 0x87, 0x73, 0x72, 0xef, + 0xa9, 0x72, 0x9c, 0xd6, 0x47, 0x2b, 0x8c, 0x98, 0x78, 0xe6, 0x88, 0x47, 0x65, 0x3c, 0xda, 0xc5, + 0xed, 0x33, 0x77, 0x5d, 0x3e, 0xd4, 0x34, 0x22, 0xd8, 0x89, 0xf7, 0x8a, 0x52, 0x0a, 0xda, 0x6b, + 0xa8, 0x67, 0x0e, 0x7c, 0x0d, 0x95, 0x25, 0xdd, 0x4c, 0x1a, 0xca, 0xc9, 0x7b, 0xc9, 0x5a, 0xd2, + 0xcd, 0x34, 0xde, 0x51, 0x24, 0xdd, 0x4c, 0x01, 0x58, 0x67, 0x89, 0x56, 0xbb, 0x39, 0xbb, 0xcf, + 0x32, 0xa1, 0x71, 0x74, 0xd7, 0xb5, 0xee, 0xf5, 0x3c, 0x77, 0xa0, 0xd7, 0xb3, 0xc3, 0x4b, 0x7b, + 0xfe, 0x08, 0x5e, 0xda, 0x3a, 0x4b, 0x87, 0xb8, 0x30, 0x2b, 0x1c, 0xe3, 0x16, 0x4e, 0x69, 0x2c, + 0xd5, 0x04, 0x8f, 0x1f, 0x65, 0xff, 0x62, 0xce, 0xa0, 0x6b, 0x58, 0xf4, 0xc5, 0x63, 0x87, 0x45, + 0x53, 0xf1, 0x9c, 0xc2, 0x59, 0x5e, 0xcd, 0xa2, 0x10, 0xcf, 0x29, 0x18, 0xeb, 0x38, 0x59, 0x9f, + 0xe7, 0x83, 0x27, 0xe6, 0xf3, 0x9c, 0x38, 0x05, 0x9f, 0xe7, 0x43, 0x87, 0xf6, 0x79, 0xde, 0x86, + 0xb3, 0xad, 0xb0, 0x3a, 0xe7, 0xc7, 0x51, 0x9b, 0x5d, 0x54, 0x9b, 0x69, 0x57, 0x6b, 0x24, 0x61, + 0x4e, 0xd3, 0xa1, 0x2b, 0xef, 0xd4, 0x1b, 0xd9, 0x62, 0x0b, 0x59, 0xae, 0xd1, 0x4c, 0x05, 0x66, + 0x00, 0x61, 0xb1, 0xb3, 0x39, 0x85, 0x38, 0x8f, 0x85, 0xee, 0x6d, 0x7d, 0xf4, 0x74, 0xbc, 0xad, + 0xef, 0x87, 0x81, 0xb8, 0xde, 0x4e, 0xaa, 0xe1, 0x4e, 0xc0, 0x5c, 0xea, 0x83, 0x33, 0xef, 0x50, + 0x06, 0x69, 0x01, 0xbf, 0xb3, 0x37, 0x39, 0x2e, 0xff, 0xd7, 0x6c, 0xd1, 0x02, 0x82, 0xbe, 0xde, + 0xe5, 0x16, 0x8e, 0x7b, 0x92, 0xb7, 0x70, 0x2e, 0x1e, 0xe9, 0x06, 0x4e, 0x9e, 0x4b, 0xf9, 0xb1, + 0xb7, 0x9d, 0x4b, 0xf9, 0xab, 0x0e, 0x8c, 0x6c, 0xeb, 0x86, 0x7f, 0xe1, 0xf6, 0xb6, 0x10, 0x7e, + 0x63, 0xf8, 0x13, 0x66, 0x5c, 0x2a, 0xe7, 0x0c, 0xd0, 0x9d, 0x2c, 0x00, 0x9b, 0x2d, 0xc9, 0x09, + 0x0d, 0x7a, 0xfc, 0x7e, 0x85, 0x06, 0xbd, 0xc1, 0xe4, 0x98, 0x3c, 0xe4, 0x32, 0x5f, 0xb8, 0xdd, + 0xc8, 0x60, 0x29, 0x13, 0x55, 0x60, 0xb0, 0xce, 0x0f, 0x7d, 0xde, 0x81, 0x71, 0x79, 0x2e, 0x13, + 0x8e, 0xbb, 0x58, 0xc4, 0x36, 0xda, 0x3c, 0x0e, 0xb2, 0xe0, 0xf8, 0xf5, 0x0c, 0x1f, 0xdc, 0xc1, + 0x99, 0x4a, 0x75, 0x15, 0x4a, 0x56, 0x8b, 0x59, 0x08, 0xaf, 0xd0, 0x61, 0xa6, 0x53, 0x30, 0xd6, + 0x71, 0xd0, 0x37, 0xd4, 0x13, 0xe7, 0x4f, 0x31, 0x81, 0xfe, 0xa2, 0x65, 0xdd, 0xd4, 0xc6, 0x3b, + 0xe7, 0xe8, 0x8b, 0x0e, 0x8c, 0xef, 0x64, 0x0c, 0x1a, 0x22, 0xb8, 0x13, 0xdb, 0x37, 0x95, 0xf0, + 0xe1, 0xce, 0x42, 0x71, 0x47, 0x0b, 0xd0, 0xe7, 0x4c, 0x73, 0x25, 0x8f, 0x02, 0xb5, 0x38, 0x80, + 0x19, 0xf3, 0x28, 0xbf, 0xac, 0x96, 0x6f, 0xb7, 0xbc, 0xe7, 0x28, 0x8f, 0xb7, 0xd5, 0x5b, 0xf2, + 0xff, 0xe5, 0x2c, 0x8c, 0x9a, 0x1e, 0x3a, 0xf4, 0x2e, 0xf3, 0x45, 0x80, 0x4b, 0xd9, 0xe4, 0xea, + 0x23, 0x12, 0xdf, 0x48, 0xb0, 0x6e, 0x64, 0x40, 0x2f, 0x9c, 0x68, 0x06, 0xf4, 0x9e, 0xd3, 0xc9, + 0x80, 0x3e, 0x7e, 0x12, 0x19, 0xd0, 0xcf, 0x1c, 0x29, 0x03, 0xba, 0x96, 0x81, 0xbe, 0xf7, 0x2e, + 0x19, 0xe8, 0xa7, 0x61, 0x4c, 0xde, 0xe0, 0x21, 0x22, 0xb5, 0x35, 0x77, 0xde, 0x5f, 0x14, 0x55, + 0xc6, 0x66, 0xcd, 0x62, 0x9c, 0xc5, 0xa7, 0x8b, 0xac, 0x18, 0xb0, 0x9a, 0x7d, 0xb6, 0x9e, 0x83, + 0x31, 0xa7, 0x16, 0x3b, 0x3e, 0x0b, 0x11, 0x25, 0x63, 0x96, 0x8b, 0x0c, 0x76, 0x47, 0xfe, 0x83, + 0x79, 0x0b, 0xd0, 0xcb, 0x50, 0x0a, 0x37, 0x37, 0x1b, 0xa1, 0x57, 0x4d, 0xd3, 0xb4, 0xcb, 0xe8, + 0x02, 0x7e, 0x03, 0x53, 0xe5, 0x12, 0x5d, 0xed, 0x82, 0x87, 0xbb, 0x52, 0x40, 0xdf, 0xa6, 0x8a, + 0x49, 0x12, 0x46, 0xa4, 0x9a, 0xda, 0x6a, 0x06, 0x59, 0x9f, 0x89, 0xf5, 0x3e, 0x97, 0x4d, 0x3e, + 0xbc, 0xf7, 0xea, 0xa3, 0x64, 0x4a, 0x71, 0xb6, 0x59, 0x28, 0x82, 0x0b, 0xad, 0x3c, 0x53, 0x51, + 0x2c, 0xee, 0x1d, 0x1d, 0x64, 0xb0, 0x92, 0x4b, 0xf7, 0x42, 0xae, 0xb1, 0x29, 0xc6, 0x5d, 0x28, + 0xeb, 0x09, 0xdc, 0x07, 0x4e, 0x27, 0x81, 0xfb, 0xc7, 0x00, 0x2a, 0x32, 0x1b, 0x96, 0x34, 0x3e, + 0x2c, 0x59, 0xb9, 0x10, 0xc3, 0x69, 0x6a, 0xaf, 0x45, 0x2a, 0x36, 0x58, 0x63, 0x89, 0xfe, 0x4f, + 0xee, 0x5b, 0x03, 0xdc, 0xc2, 0x52, 0xb3, 0x3e, 0x27, 0xde, 0x76, 0xef, 0x0d, 0xfc, 0x43, 0x07, + 0x26, 0xf8, 0xcc, 0xcb, 0x2a, 0xf7, 0x54, 0xb5, 0x10, 0x37, 0x74, 0x6c, 0x07, 0xa0, 0xb0, 0x58, + 0xbc, 0xb2, 0xc1, 0x95, 0xb9, 0xab, 0x0f, 0x68, 0x09, 0xfa, 0x72, 0xce, 0x91, 0x62, 0xcc, 0x96, + 0xcd, 0x32, 0x3f, 0x4f, 0xfd, 0xd9, 0xfd, 0xc3, 0x9c, 0x22, 0xfe, 0x49, 0x57, 0x93, 0x2a, 0x62, + 0xcd, 0xfb, 0x6b, 0x27, 0x64, 0x52, 0xd5, 0x93, 0xe9, 0x1f, 0xc9, 0xb0, 0xfa, 0x05, 0x07, 0xc6, + 0xbd, 0x4c, 0xc0, 0x08, 0xb3, 0x03, 0x59, 0xb1, 0x49, 0x4d, 0x47, 0x69, 0x14, 0x0a, 0x53, 0xf2, + 0xb2, 0xb1, 0x29, 0xb8, 0x83, 0xf9, 0xc4, 0xa7, 0x1d, 0xfe, 0x02, 0x4f, 0x57, 0xbd, 0x68, 0xc3, + 0xd4, 0x8b, 0x96, 0x6d, 0xbe, 0x01, 0xa2, 0x2b, 0x68, 0xbf, 0xe2, 0xc0, 0xb9, 0x3c, 0xb1, 0x9d, + 0xd3, 0xa4, 0x0f, 0x9b, 0x4d, 0xb2, 0x78, 0x14, 0xd1, 0x1b, 0x64, 0xe7, 0xe1, 0x83, 0x3f, 0x1a, + 0xd4, 0x5c, 0x6b, 0x09, 0x69, 0x59, 0x0f, 0x2f, 0x0e, 0xa0, 0xcf, 0x0f, 0x1a, 0x7e, 0x40, 0xc4, + 0x55, 0x42, 0x9b, 0x07, 0x33, 0xf1, 0xd0, 0x08, 0xa5, 0x8e, 0x05, 0x97, 0xfb, 0xec, 0x69, 0xcb, + 0x3e, 0xa2, 0xd4, 0x7b, 0xfa, 0x8f, 0x28, 0xed, 0xc0, 0xe0, 0x8e, 0x9f, 0xd4, 0x59, 0x84, 0x80, + 0x70, 0x60, 0x59, 0xb8, 0x82, 0x47, 0xc9, 0xa5, 0x7d, 0xbf, 0x25, 0x19, 0xe0, 0x94, 0x17, 0xba, + 0xcc, 0x19, 0xb3, 0xa0, 0xe2, 0x6c, 0xb4, 0xe7, 0x2d, 0x59, 0x80, 0x53, 0x1c, 0x3a, 0x58, 0xc3, + 0xf4, 0x97, 0x4c, 0xb5, 0x23, 0xd2, 0xb1, 0xda, 0x48, 0xb3, 0x27, 0x28, 0xf2, 0x8b, 0xae, 0xb7, + 0x34, 0x1e, 0xd8, 0xe0, 0xa8, 0x32, 0xe2, 0x0e, 0x74, 0xcd, 0x88, 0xfb, 0x3a, 0xd3, 0x42, 0x12, + 0x3f, 0x68, 0x93, 0xd5, 0x40, 0x84, 0x22, 0x2f, 0xdb, 0xb9, 0x96, 0xcb, 0x69, 0xf2, 0x73, 0x65, + 0xfa, 0x1b, 0x6b, 0xfc, 0x34, 0x3f, 0xc2, 0xd0, 0x81, 0x7e, 0x84, 0xd4, 0x8e, 0x30, 0x6c, 0xdd, + 0x8e, 0x90, 0x90, 0x96, 0x15, 0x3b, 0xc2, 0xdb, 0xea, 0x8c, 0xfb, 0xa7, 0x0e, 0x20, 0xa5, 0x4c, + 0x78, 0xf1, 0x96, 0x78, 0xf9, 0xee, 0xe4, 0xe3, 0xfd, 0x3e, 0xee, 0x00, 0x04, 0xea, 0xa9, 0x3d, + 0xbb, 0xbb, 0x16, 0xa7, 0x99, 0x36, 0x20, 0x85, 0x61, 0x8d, 0xa7, 0xfb, 0x87, 0x4e, 0x1a, 0x56, + 0x9b, 0xf6, 0xfd, 0x14, 0x22, 0xa3, 0x76, 0xcd, 0xc8, 0xa8, 0x75, 0x8b, 0xf6, 0x68, 0xd5, 0x8d, + 0x2e, 0x31, 0x52, 0x3f, 0x29, 0xc0, 0x98, 0x8e, 0x5c, 0x26, 0xa7, 0xf1, 0xb1, 0x77, 0x8c, 0xe0, + 0xce, 0x1b, 0x76, 0xfb, 0x5b, 0x16, 0x6e, 0x8d, 0xbc, 0x40, 0xe2, 0x8f, 0x65, 0x02, 0x89, 0x6f, + 0xd9, 0x67, 0x7d, 0x70, 0x34, 0xf1, 0x7f, 0x73, 0xe0, 0x6c, 0xa6, 0xc6, 0x29, 0x4c, 0xb0, 0x6d, + 0x73, 0x82, 0xbd, 0x60, 0xbd, 0xd7, 0x5d, 0x66, 0xd7, 0x37, 0x0b, 0x1d, 0xbd, 0x65, 0x27, 0x93, + 0x4f, 0x39, 0x50, 0x4c, 0xbc, 0x78, 0x4b, 0x06, 0x29, 0x7d, 0xf8, 0x44, 0x66, 0xc0, 0x14, 0xfd, + 0x5f, 0x48, 0x67, 0xd5, 0x3e, 0x06, 0xc3, 0x9c, 0xfb, 0xc4, 0x27, 0x1d, 0x80, 0x14, 0xe9, 0x7e, + 0xa9, 0xac, 0xee, 0x77, 0x0a, 0x70, 0x3e, 0x77, 0x1a, 0xa1, 0xcf, 0x28, 0x33, 0x93, 0x63, 0x3b, + 0x04, 0xcf, 0x60, 0xa4, 0x5b, 0x9b, 0x46, 0x0c, 0x6b, 0x93, 0x30, 0x32, 0xdd, 0xaf, 0x03, 0x87, + 0x10, 0xd3, 0xda, 0x60, 0xfd, 0xd8, 0x49, 0xa3, 0x3a, 0x55, 0xca, 0x9d, 0x3f, 0x83, 0xf7, 0x4b, + 0xdc, 0x9f, 0x68, 0xc1, 0xf7, 0xb2, 0xa3, 0xa7, 0x20, 0x2b, 0x76, 0x4c, 0x59, 0x81, 0xed, 0x3b, + 0x47, 0xbb, 0x08, 0x8b, 0x8f, 0x40, 0x9e, 0xb7, 0xf4, 0x70, 0xf9, 0xfa, 0x8c, 0x9b, 0x9a, 0x85, + 0x43, 0xdf, 0xd4, 0x1c, 0x81, 0xa1, 0x97, 0xfc, 0x96, 0x72, 0xec, 0x4d, 0x7d, 0xef, 0x47, 0x97, + 0x1e, 0xf8, 0xfe, 0x8f, 0x2e, 0x3d, 0xf0, 0xc3, 0x1f, 0x5d, 0x7a, 0xe0, 0xe3, 0xfb, 0x97, 0x9c, + 0xef, 0xed, 0x5f, 0x72, 0xbe, 0xbf, 0x7f, 0xc9, 0xf9, 0xe1, 0xfe, 0x25, 0xe7, 0x3f, 0xec, 0x5f, + 0x72, 0xfe, 0xd6, 0x7f, 0xbc, 0xf4, 0xc0, 0x4b, 0x03, 0xb2, 0x63, 0xff, 0x3f, 0x00, 0x00, 0xff, + 0xff, 0x0b, 0x14, 0x61, 0xf7, 0x08, 0xd1, 0x00, 0x00, } func (m *Amount) Marshal() (dAtA []byte, err error) { @@ -12251,6 +12284,47 @@ func (m *WorkflowEventBindingSpec) MarshalToSizedBuffer(dAtA []byte) (int, error return len(dAtA) - i, nil } +func (m *WorkflowLevelArtifactGC) 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 *WorkflowLevelArtifactGC) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *WorkflowLevelArtifactGC) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + i-- + if m.ForceFinalizerRemoval { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x10 + { + size, err := m.ArtifactGC.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + func (m *WorkflowList) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -16388,6 +16462,18 @@ func (m *WorkflowEventBindingSpec) Size() (n int) { return n } +func (m *WorkflowLevelArtifactGC) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.ArtifactGC.Size() + n += 1 + l + sovGenerated(uint64(l)) + n += 2 + return n +} + func (m *WorkflowList) Size() (n int) { if m == nil { return 0 @@ -18816,6 +18902,17 @@ func (this *WorkflowEventBindingSpec) String() string { }, "") return s } +func (this *WorkflowLevelArtifactGC) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&WorkflowLevelArtifactGC{`, + `ArtifactGC:` + strings.Replace(strings.Replace(this.ArtifactGC.String(), "ArtifactGC", "ArtifactGC", 1), `&`, ``, 1) + `,`, + `ForceFinalizerRemoval:` + fmt.Sprintf("%v", this.ForceFinalizerRemoval) + `,`, + `}`, + }, "") + return s +} func (this *WorkflowList) String() string { if this == nil { return "nil" @@ -18970,7 +19067,7 @@ func (this *WorkflowSpec) String() string { `ArchiveLogs:` + valueToStringGenerated(this.ArchiveLogs) + `,`, `Hooks:` + mapStringForHooks + `,`, `WorkflowMetadata:` + strings.Replace(this.WorkflowMetadata.String(), "WorkflowMetadata", "WorkflowMetadata", 1) + `,`, - `ArtifactGC:` + strings.Replace(this.ArtifactGC.String(), "ArtifactGC", "ArtifactGC", 1) + `,`, + `ArtifactGC:` + strings.Replace(this.ArtifactGC.String(), "WorkflowLevelArtifactGC", "WorkflowLevelArtifactGC", 1) + `,`, `}`, }, "") return s @@ -41461,6 +41558,109 @@ func (m *WorkflowEventBindingSpec) Unmarshal(dAtA []byte) error { } return nil } +func (m *WorkflowLevelArtifactGC) 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: WorkflowLevelArtifactGC: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: WorkflowLevelArtifactGC: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ArtifactGC", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ArtifactGC.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ForceFinalizerRemoval", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.ForceFinalizerRemoval = bool(v != 0) + 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 *WorkflowList) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -43560,7 +43760,7 @@ func (m *WorkflowSpec) Unmarshal(dAtA []byte) error { return io.ErrUnexpectedEOF } if m.ArtifactGC == nil { - m.ArtifactGC = &ArtifactGC{} + m.ArtifactGC = &WorkflowLevelArtifactGC{} } if err := m.ArtifactGC.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err diff --git a/pkg/apis/workflow/v1alpha1/generated.proto b/pkg/apis/workflow/v1alpha1/generated.proto index 5d28c7f787b5..10a850c5ac6b 100644 --- a/pkg/apis/workflow/v1alpha1/generated.proto +++ b/pkg/apis/workflow/v1alpha1/generated.proto @@ -100,7 +100,7 @@ message Artifact { optional bool deleted = 13; } -// ArtifactGC describes how to delete artifacts from completed Workflows +// ArtifactGC describes how to delete artifacts from completed Workflows - this is embedded into the WorkflowLevelArtifactGC, and also used for individual Artifacts to override that as needed message ArtifactGC { // Strategy is the strategy to use. // +kubebuilder:validation:Enum="";OnWorkflowCompletion;OnWorkflowDeletion;Never @@ -1821,6 +1821,15 @@ message WorkflowEventBindingSpec { optional Submit submit = 2; } +// WorkflowLevelArtifactGC describes how to delete artifacts from completed Workflows - this spec is used on the Workflow level +message WorkflowLevelArtifactGC { + // ArtifactGC is an embedded struct + optional ArtifactGC artifactGC = 1; + + // ForceFinalizerRemoval: if set to true, the finalizer will be removed in the case that Artifact GC fails + optional bool forceFinalizerRemoval = 2; +} + // WorkflowList is list of Workflow resources // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object message WorkflowList { @@ -2010,7 +2019,7 @@ message WorkflowSpec { // ArtifactGC describes the strategy to use when deleting artifacts from completed or deleted workflows (applies to all output Artifacts // unless Artifact.ArtifactGC is specified, which overrides this) - optional ArtifactGC artifactGC = 43; + optional WorkflowLevelArtifactGC artifactGC = 43; } // WorkflowStatus contains overall status information about a workflow diff --git a/pkg/apis/workflow/v1alpha1/openapi_generated.go b/pkg/apis/workflow/v1alpha1/openapi_generated.go index 0f08cbea9f72..75231b13fdf9 100644 --- a/pkg/apis/workflow/v1alpha1/openapi_generated.go +++ b/pkg/apis/workflow/v1alpha1/openapi_generated.go @@ -147,6 +147,7 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.WorkflowEventBinding": schema_pkg_apis_workflow_v1alpha1_WorkflowEventBinding(ref), "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.WorkflowEventBindingList": schema_pkg_apis_workflow_v1alpha1_WorkflowEventBindingList(ref), "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.WorkflowEventBindingSpec": schema_pkg_apis_workflow_v1alpha1_WorkflowEventBindingSpec(ref), + "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.WorkflowLevelArtifactGC": schema_pkg_apis_workflow_v1alpha1_WorkflowLevelArtifactGC(ref), "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.WorkflowList": schema_pkg_apis_workflow_v1alpha1_WorkflowList(ref), "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.WorkflowMetadata": schema_pkg_apis_workflow_v1alpha1_WorkflowMetadata(ref), "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.WorkflowSpec": schema_pkg_apis_workflow_v1alpha1_WorkflowSpec(ref), @@ -478,7 +479,7 @@ func schema_pkg_apis_workflow_v1alpha1_ArtifactGC(ref common.ReferenceCallback) return common.OpenAPIDefinition{ Schema: spec.Schema{ SchemaProps: spec.SchemaProps{ - Description: "ArtifactGC describes how to delete artifacts from completed Workflows", + Description: "ArtifactGC describes how to delete artifacts from completed Workflows - this is embedded into the WorkflowLevelArtifactGC, and also used for individual Artifacts to override that as needed", Type: []string{"object"}, Properties: map[string]spec.Schema{ "strategy": { @@ -7030,6 +7031,48 @@ func schema_pkg_apis_workflow_v1alpha1_WorkflowEventBindingSpec(ref common.Refer } } +func schema_pkg_apis_workflow_v1alpha1_WorkflowLevelArtifactGC(ref common.ReferenceCallback) common.OpenAPIDefinition { + return common.OpenAPIDefinition{ + Schema: spec.Schema{ + SchemaProps: spec.SchemaProps{ + Description: "WorkflowLevelArtifactGC describes how to delete artifacts from completed Workflows - this spec is used on the Workflow level", + Type: []string{"object"}, + Properties: map[string]spec.Schema{ + "strategy": { + SchemaProps: spec.SchemaProps{ + Description: "Strategy is the strategy to use.", + Type: []string{"string"}, + Format: "", + }, + }, + "podMetadata": { + SchemaProps: spec.SchemaProps{ + Description: "PodMetadata is an optional field for specifying the Labels and Annotations that should be assigned to the Pod doing the deletion", + Ref: ref("github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.Metadata"), + }, + }, + "serviceAccountName": { + SchemaProps: spec.SchemaProps{ + Description: "ServiceAccountName is an optional field for specifying the Service Account that should be assigned to the Pod doing the deletion", + Type: []string{"string"}, + Format: "", + }, + }, + "forceFinalizerRemoval": { + SchemaProps: spec.SchemaProps{ + Description: "ForceFinalizerRemoval: if set to true, the finalizer will be removed in the case that Artifact GC fails", + Type: []string{"boolean"}, + Format: "", + }, + }, + }, + }, + }, + Dependencies: []string{ + "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.Metadata"}, + } +} + func schema_pkg_apis_workflow_v1alpha1_WorkflowList(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.OpenAPIDefinition{ Schema: spec.Schema{ @@ -7512,14 +7555,14 @@ func schema_pkg_apis_workflow_v1alpha1_WorkflowSpec(ref common.ReferenceCallback "artifactGC": { SchemaProps: spec.SchemaProps{ Description: "ArtifactGC describes the strategy to use when deleting artifacts from completed or deleted workflows (applies to all output Artifacts unless Artifact.ArtifactGC is specified, which overrides this)", - Ref: ref("github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.ArtifactGC"), + Ref: ref("github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.WorkflowLevelArtifactGC"), }, }, }, }, }, Dependencies: []string{ - "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.Arguments", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.ArtifactGC", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.ArtifactRepositoryRef", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.ExecutorConfig", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.LifecycleHook", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.Metadata", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.Metrics", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.PodGC", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.RetryStrategy", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.Synchronization", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.TTLStrategy", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.Template", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.VolumeClaimGC", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.WorkflowMetadata", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.WorkflowTemplateRef", "k8s.io/api/core/v1.Affinity", "k8s.io/api/core/v1.HostAlias", "k8s.io/api/core/v1.LocalObjectReference", "k8s.io/api/core/v1.PersistentVolumeClaim", "k8s.io/api/core/v1.PodDNSConfig", "k8s.io/api/core/v1.PodSecurityContext", "k8s.io/api/core/v1.Toleration", "k8s.io/api/core/v1.Volume", "k8s.io/api/policy/v1.PodDisruptionBudgetSpec"}, + "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.Arguments", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.ArtifactRepositoryRef", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.ExecutorConfig", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.LifecycleHook", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.Metadata", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.Metrics", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.PodGC", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.RetryStrategy", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.Synchronization", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.TTLStrategy", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.Template", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.VolumeClaimGC", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.WorkflowLevelArtifactGC", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.WorkflowMetadata", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.WorkflowTemplateRef", "k8s.io/api/core/v1.Affinity", "k8s.io/api/core/v1.HostAlias", "k8s.io/api/core/v1.LocalObjectReference", "k8s.io/api/core/v1.PersistentVolumeClaim", "k8s.io/api/core/v1.PodDNSConfig", "k8s.io/api/core/v1.PodSecurityContext", "k8s.io/api/core/v1.Toleration", "k8s.io/api/core/v1.Volume", "k8s.io/api/policy/v1.PodDisruptionBudgetSpec"}, } } diff --git a/pkg/apis/workflow/v1alpha1/workflow_types.go b/pkg/apis/workflow/v1alpha1/workflow_types.go index 7a8d8f756261..802d195f3f44 100644 --- a/pkg/apis/workflow/v1alpha1/workflow_types.go +++ b/pkg/apis/workflow/v1alpha1/workflow_types.go @@ -428,7 +428,7 @@ type WorkflowSpec struct { // ArtifactGC describes the strategy to use when deleting artifacts from completed or deleted workflows (applies to all output Artifacts // unless Artifact.ArtifactGC is specified, which overrides this) - ArtifactGC *ArtifactGC `json:"artifactGC,omitempty" protobuf:"bytes,43,opt,name=artifactGC"` + ArtifactGC *WorkflowLevelArtifactGC `json:"artifactGC,omitempty" protobuf:"bytes,43,opt,name=artifactGC"` } type LabelValueFrom struct { @@ -476,7 +476,7 @@ func (wfs WorkflowSpec) GetArtifactGC() *ArtifactGC { return &ArtifactGC{Strategy: ArtifactGCStrategyUndefined} } - return wfs.ArtifactGC + return &wfs.ArtifactGC.ArtifactGC } func (wfs WorkflowSpec) GetTTLStrategy() *TTLStrategy { @@ -1033,7 +1033,15 @@ func (podGC *PodGC) GetStrategy() PodGCStrategy { return PodGCOnPodNone } -// ArtifactGC describes how to delete artifacts from completed Workflows +// WorkflowLevelArtifactGC describes how to delete artifacts from completed Workflows - this spec is used on the Workflow level +type WorkflowLevelArtifactGC struct { + // ArtifactGC is an embedded struct + ArtifactGC `json:",inline" protobuf:"bytes,1,opt,name=artifactGC"` + // ForceFinalizerRemoval: if set to true, the finalizer will be removed in the case that Artifact GC fails + ForceFinalizerRemoval bool `json:"forceFinalizerRemoval,omitempty" protobuf:"bytes,2,opt,name=forceFinalizerRemoval"` +} + +// ArtifactGC describes how to delete artifacts from completed Workflows - this is embedded into the WorkflowLevelArtifactGC, and also used for individual Artifacts to override that as needed type ArtifactGC struct { // Strategy is the strategy to use. // +kubebuilder:validation:Enum="";OnWorkflowCompletion;OnWorkflowDeletion;Never @@ -1349,6 +1357,17 @@ func (gcStatus *ArtGCStatus) IsArtifactGCPodRecouped(podName string) bool { } return false } +func (gcStatus *ArtGCStatus) AllArtifactGCPodsRecouped() bool { + if gcStatus.PodsRecouped == nil { + return false + } + for _, recouped := range gcStatus.PodsRecouped { + if !recouped { + return false + } + } + return true +} type ArtifactSearchResult struct { Artifact `protobuf:"bytes,1,opt,name=artifact"` diff --git a/pkg/apis/workflow/v1alpha1/workflow_types_test.go b/pkg/apis/workflow/v1alpha1/workflow_types_test.go index db258a9a221f..39f840cfe05f 100644 --- a/pkg/apis/workflow/v1alpha1/workflow_types_test.go +++ b/pkg/apis/workflow/v1alpha1/workflow_types_test.go @@ -906,8 +906,10 @@ func TestWorkflow_SearchArtifacts(t *testing.T) { Namespace: "test", }, Spec: WorkflowSpec{ - ArtifactGC: &ArtifactGC{ - Strategy: ArtifactGCOnWorkflowCompletion, + ArtifactGC: &WorkflowLevelArtifactGC{ + ArtifactGC: ArtifactGC{ + Strategy: ArtifactGCOnWorkflowCompletion, + }, }, Templates: []Template{ { diff --git a/pkg/apis/workflow/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/workflow/v1alpha1/zz_generated.deepcopy.go index 307377046b2b..4988193cb4ac 100644 --- a/pkg/apis/workflow/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/workflow/v1alpha1/zz_generated.deepcopy.go @@ -3580,6 +3580,23 @@ func (in *WorkflowEventBindingSpec) DeepCopy() *WorkflowEventBindingSpec { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *WorkflowLevelArtifactGC) DeepCopyInto(out *WorkflowLevelArtifactGC) { + *out = *in + in.ArtifactGC.DeepCopyInto(&out.ArtifactGC) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkflowLevelArtifactGC. +func (in *WorkflowLevelArtifactGC) DeepCopy() *WorkflowLevelArtifactGC { + if in == nil { + return nil + } + out := new(WorkflowLevelArtifactGC) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *WorkflowList) DeepCopyInto(out *WorkflowList) { *out = *in @@ -3835,7 +3852,7 @@ func (in *WorkflowSpec) DeepCopyInto(out *WorkflowSpec) { } if in.ArtifactGC != nil { in, out := &in.ArtifactGC, &out.ArtifactGC - *out = new(ArtifactGC) + *out = new(WorkflowLevelArtifactGC) (*in).DeepCopyInto(*out) } return diff --git a/pkg/plugins/executor/swagger.yml b/pkg/plugins/executor/swagger.yml index 56a198fb2471..b3ecb6bfef15 100644 --- a/pkg/plugins/executor/swagger.yml +++ b/pkg/plugins/executor/swagger.yml @@ -155,6 +155,8 @@ definitions: type: object ArtifactGC: description: ArtifactGC describes how to delete artifacts from completed Workflows + - this is embedded into the WorkflowLevelArtifactGC, and also used for individual + Artifacts to override that as needed properties: podMetadata: $ref: '#/definitions/Metadata' diff --git a/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1ArtifactGC.md b/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1ArtifactGC.md index 642e6004e6a1..f7df9b833509 100644 --- a/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1ArtifactGC.md +++ b/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1ArtifactGC.md @@ -2,7 +2,7 @@ # IoArgoprojWorkflowV1alpha1ArtifactGC -ArtifactGC describes how to delete artifacts from completed Workflows +ArtifactGC describes how to delete artifacts from completed Workflows - this is embedded into the WorkflowLevelArtifactGC, and also used for individual Artifacts to override that as needed ## Properties diff --git a/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1WorkflowLevelArtifactGC.md b/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1WorkflowLevelArtifactGC.md new file mode 100644 index 000000000000..06311494f55c --- /dev/null +++ b/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1WorkflowLevelArtifactGC.md @@ -0,0 +1,17 @@ + + +# IoArgoprojWorkflowV1alpha1WorkflowLevelArtifactGC + +WorkflowLevelArtifactGC describes how to delete artifacts from completed Workflows - this spec is used on the Workflow level + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**forceFinalizerRemoval** | **Boolean** | ForceFinalizerRemoval: if set to true, the finalizer will be removed in the case that Artifact GC fails | [optional] +**podMetadata** | [**IoArgoprojWorkflowV1alpha1Metadata**](IoArgoprojWorkflowV1alpha1Metadata.md) | | [optional] +**serviceAccountName** | **String** | ServiceAccountName is an optional field for specifying the Service Account that should be assigned to the Pod doing the deletion | [optional] +**strategy** | **String** | Strategy is the strategy to use. | [optional] + + + diff --git a/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1WorkflowSpec.md b/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1WorkflowSpec.md index ba17219a72d3..24e847068076 100644 --- a/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1WorkflowSpec.md +++ b/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1WorkflowSpec.md @@ -12,7 +12,7 @@ Name | Type | Description | Notes **affinity** | [**io.kubernetes.client.openapi.models.V1Affinity**](io.kubernetes.client.openapi.models.V1Affinity.md) | | [optional] **archiveLogs** | **Boolean** | ArchiveLogs indicates if the container logs should be archived | [optional] **arguments** | [**IoArgoprojWorkflowV1alpha1Arguments**](IoArgoprojWorkflowV1alpha1Arguments.md) | | [optional] -**artifactGC** | [**IoArgoprojWorkflowV1alpha1ArtifactGC**](IoArgoprojWorkflowV1alpha1ArtifactGC.md) | | [optional] +**artifactGC** | [**IoArgoprojWorkflowV1alpha1WorkflowLevelArtifactGC**](IoArgoprojWorkflowV1alpha1WorkflowLevelArtifactGC.md) | | [optional] **artifactRepositoryRef** | [**IoArgoprojWorkflowV1alpha1ArtifactRepositoryRef**](IoArgoprojWorkflowV1alpha1ArtifactRepositoryRef.md) | | [optional] **automountServiceAccountToken** | **Boolean** | AutomountServiceAccountToken indicates whether a service account token should be automatically mounted in pods. ServiceAccountName of ExecutorConfig must be specified if this value is false. | [optional] **dnsConfig** | [**io.kubernetes.client.openapi.models.V1PodDNSConfig**](io.kubernetes.client.openapi.models.V1PodDNSConfig.md) | | [optional] diff --git a/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_workflow_level_artifact_gc.py b/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_workflow_level_artifact_gc.py new file mode 100644 index 000000000000..68e8f18f3da2 --- /dev/null +++ b/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_workflow_level_artifact_gc.py @@ -0,0 +1,273 @@ +""" + Argo Workflows API + + Argo Workflows is an open source container-native workflow engine for orchestrating parallel jobs on Kubernetes. For more information, please see https://argoproj.github.io/argo-workflows/ # noqa: E501 + + The version of the OpenAPI document: VERSION + Generated by: https://openapi-generator.tech +""" + + +import re # noqa: F401 +import sys # noqa: F401 + +from argo_workflows.model_utils import ( # noqa: F401 + ApiTypeError, + ModelComposed, + ModelNormal, + ModelSimple, + cached_property, + change_keys_js_to_python, + convert_js_args_to_python_args, + date, + datetime, + file_type, + none_type, + validate_get_composed_info, + OpenApiModel +) +from argo_workflows.exceptions import ApiAttributeError + + +def lazy_import(): + from argo_workflows.model.io_argoproj_workflow_v1alpha1_metadata import IoArgoprojWorkflowV1alpha1Metadata + globals()['IoArgoprojWorkflowV1alpha1Metadata'] = IoArgoprojWorkflowV1alpha1Metadata + + +class IoArgoprojWorkflowV1alpha1WorkflowLevelArtifactGC(ModelNormal): + """NOTE: This class is auto generated by OpenAPI Generator. + Ref: https://openapi-generator.tech + + Do not edit the class manually. + + Attributes: + allowed_values (dict): The key is the tuple path to the attribute + and the for var_name this is (var_name,). The value is a dict + with a capitalized key describing the allowed value and an allowed + value. These dicts store the allowed enum values. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + discriminator_value_class_map (dict): A dict to go from the discriminator + variable value to the discriminator class name. + validations (dict): The key is the tuple path to the attribute + and the for var_name this is (var_name,). The value is a dict + that stores validations for max_length, min_length, max_items, + min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum, + inclusive_minimum, and regex. + additional_properties_type (tuple): A tuple of classes accepted + as additional properties values. + """ + + allowed_values = { + } + + validations = { + } + + @cached_property + def additional_properties_type(): + """ + This must be a method because a model may have properties that are + of type self, this must run after the class is loaded + """ + lazy_import() + return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501 + + _nullable = False + + @cached_property + def openapi_types(): + """ + This must be a method because a model may have properties that are + of type self, this must run after the class is loaded + + Returns + openapi_types (dict): The key is attribute name + and the value is attribute type. + """ + lazy_import() + return { + 'force_finalizer_removal': (bool,), # noqa: E501 + 'pod_metadata': (IoArgoprojWorkflowV1alpha1Metadata,), # noqa: E501 + 'service_account_name': (str,), # noqa: E501 + 'strategy': (str,), # noqa: E501 + } + + @cached_property + def discriminator(): + return None + + + attribute_map = { + 'force_finalizer_removal': 'forceFinalizerRemoval', # noqa: E501 + 'pod_metadata': 'podMetadata', # noqa: E501 + 'service_account_name': 'serviceAccountName', # noqa: E501 + 'strategy': 'strategy', # noqa: E501 + } + + read_only_vars = { + } + + _composed_schemas = {} + + @classmethod + @convert_js_args_to_python_args + def _from_openapi_data(cls, *args, **kwargs): # noqa: E501 + """IoArgoprojWorkflowV1alpha1WorkflowLevelArtifactGC - a model defined in OpenAPI + + Keyword Args: + _check_type (bool): if True, values for parameters in openapi_types + will be type checked and a TypeError will be + raised if the wrong type is input. + Defaults to True + _path_to_item (tuple/list): This is a list of keys or values to + drill down to the model in received_data + when deserializing a response + _spec_property_naming (bool): True if the variable names in the input data + are serialized names, as specified in the OpenAPI document. + False if the variable names in the input data + are pythonic names, e.g. snake case (default) + _configuration (Configuration): the instance to use when + deserializing a file_type parameter. + If passed, type conversion is attempted + If omitted no type conversion is done. + _visited_composed_classes (tuple): This stores a tuple of + classes that we have traveled through so that + if we see that class again we will not use its + discriminator again. + When traveling through a discriminator, the + composed schema that is + is traveled through is added to this set. + For example if Animal has a discriminator + petType and we pass in "Dog", and the class Dog + allOf includes Animal, we move through Animal + once using the discriminator, and pick Dog. + Then in Dog, we will make an instance of the + Animal class but this time we won't travel + through its discriminator because we passed in + _visited_composed_classes = (Animal,) + force_finalizer_removal (bool): ForceFinalizerRemoval: if set to true, the finalizer will be removed in the case that Artifact GC fails. [optional] # noqa: E501 + pod_metadata (IoArgoprojWorkflowV1alpha1Metadata): [optional] # noqa: E501 + service_account_name (str): ServiceAccountName is an optional field for specifying the Service Account that should be assigned to the Pod doing the deletion. [optional] # noqa: E501 + strategy (str): Strategy is the strategy to use.. [optional] # noqa: E501 + """ + + _check_type = kwargs.pop('_check_type', True) + _spec_property_naming = kwargs.pop('_spec_property_naming', False) + _path_to_item = kwargs.pop('_path_to_item', ()) + _configuration = kwargs.pop('_configuration', None) + _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) + + self = super(OpenApiModel, cls).__new__(cls) + + if args: + raise ApiTypeError( + "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % ( + args, + self.__class__.__name__, + ), + path_to_item=_path_to_item, + valid_classes=(self.__class__,), + ) + + self._data_store = {} + self._check_type = _check_type + self._spec_property_naming = _spec_property_naming + self._path_to_item = _path_to_item + self._configuration = _configuration + self._visited_composed_classes = _visited_composed_classes + (self.__class__,) + + for var_name, var_value in kwargs.items(): + if var_name not in self.attribute_map and \ + self._configuration is not None and \ + self._configuration.discard_unknown_keys and \ + self.additional_properties_type is None: + # discard variable. + continue + setattr(self, var_name, var_value) + return self + + required_properties = set([ + '_data_store', + '_check_type', + '_spec_property_naming', + '_path_to_item', + '_configuration', + '_visited_composed_classes', + ]) + + @convert_js_args_to_python_args + def __init__(self, *args, **kwargs): # noqa: E501 + """IoArgoprojWorkflowV1alpha1WorkflowLevelArtifactGC - a model defined in OpenAPI + + Keyword Args: + _check_type (bool): if True, values for parameters in openapi_types + will be type checked and a TypeError will be + raised if the wrong type is input. + Defaults to True + _path_to_item (tuple/list): This is a list of keys or values to + drill down to the model in received_data + when deserializing a response + _spec_property_naming (bool): True if the variable names in the input data + are serialized names, as specified in the OpenAPI document. + False if the variable names in the input data + are pythonic names, e.g. snake case (default) + _configuration (Configuration): the instance to use when + deserializing a file_type parameter. + If passed, type conversion is attempted + If omitted no type conversion is done. + _visited_composed_classes (tuple): This stores a tuple of + classes that we have traveled through so that + if we see that class again we will not use its + discriminator again. + When traveling through a discriminator, the + composed schema that is + is traveled through is added to this set. + For example if Animal has a discriminator + petType and we pass in "Dog", and the class Dog + allOf includes Animal, we move through Animal + once using the discriminator, and pick Dog. + Then in Dog, we will make an instance of the + Animal class but this time we won't travel + through its discriminator because we passed in + _visited_composed_classes = (Animal,) + force_finalizer_removal (bool): ForceFinalizerRemoval: if set to true, the finalizer will be removed in the case that Artifact GC fails. [optional] # noqa: E501 + pod_metadata (IoArgoprojWorkflowV1alpha1Metadata): [optional] # noqa: E501 + service_account_name (str): ServiceAccountName is an optional field for specifying the Service Account that should be assigned to the Pod doing the deletion. [optional] # noqa: E501 + strategy (str): Strategy is the strategy to use.. [optional] # noqa: E501 + """ + + _check_type = kwargs.pop('_check_type', True) + _spec_property_naming = kwargs.pop('_spec_property_naming', False) + _path_to_item = kwargs.pop('_path_to_item', ()) + _configuration = kwargs.pop('_configuration', None) + _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) + + if args: + raise ApiTypeError( + "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % ( + args, + self.__class__.__name__, + ), + path_to_item=_path_to_item, + valid_classes=(self.__class__,), + ) + + self._data_store = {} + self._check_type = _check_type + self._spec_property_naming = _spec_property_naming + self._path_to_item = _path_to_item + self._configuration = _configuration + self._visited_composed_classes = _visited_composed_classes + (self.__class__,) + + for var_name, var_value in kwargs.items(): + if var_name not in self.attribute_map and \ + self._configuration is not None and \ + self._configuration.discard_unknown_keys and \ + self.additional_properties_type is None: + # discard variable. + continue + setattr(self, var_name, var_value) + if var_name in self.read_only_vars: + raise ApiAttributeError(f"`{var_name}` is a read-only attribute. Use `from_openapi_data` to instantiate " + f"class with read only attributes.") diff --git a/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_workflow_spec.py b/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_workflow_spec.py index 128ab9285d02..db429772c619 100644 --- a/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_workflow_spec.py +++ b/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_workflow_spec.py @@ -33,7 +33,6 @@ def lazy_import(): from argo_workflows.model.affinity import Affinity from argo_workflows.model.host_alias import HostAlias from argo_workflows.model.io_argoproj_workflow_v1alpha1_arguments import IoArgoprojWorkflowV1alpha1Arguments - from argo_workflows.model.io_argoproj_workflow_v1alpha1_artifact_gc import IoArgoprojWorkflowV1alpha1ArtifactGC from argo_workflows.model.io_argoproj_workflow_v1alpha1_artifact_repository_ref import IoArgoprojWorkflowV1alpha1ArtifactRepositoryRef from argo_workflows.model.io_argoproj_workflow_v1alpha1_executor_config import IoArgoprojWorkflowV1alpha1ExecutorConfig from argo_workflows.model.io_argoproj_workflow_v1alpha1_lifecycle_hook import IoArgoprojWorkflowV1alpha1LifecycleHook @@ -45,6 +44,7 @@ def lazy_import(): from argo_workflows.model.io_argoproj_workflow_v1alpha1_template import IoArgoprojWorkflowV1alpha1Template from argo_workflows.model.io_argoproj_workflow_v1alpha1_ttl_strategy import IoArgoprojWorkflowV1alpha1TTLStrategy from argo_workflows.model.io_argoproj_workflow_v1alpha1_volume_claim_gc import IoArgoprojWorkflowV1alpha1VolumeClaimGC + from argo_workflows.model.io_argoproj_workflow_v1alpha1_workflow_level_artifact_gc import IoArgoprojWorkflowV1alpha1WorkflowLevelArtifactGC from argo_workflows.model.io_argoproj_workflow_v1alpha1_workflow_metadata import IoArgoprojWorkflowV1alpha1WorkflowMetadata from argo_workflows.model.io_argoproj_workflow_v1alpha1_workflow_template_ref import IoArgoprojWorkflowV1alpha1WorkflowTemplateRef from argo_workflows.model.io_k8s_api_policy_v1_pod_disruption_budget_spec import IoK8sApiPolicyV1PodDisruptionBudgetSpec @@ -57,7 +57,6 @@ def lazy_import(): globals()['Affinity'] = Affinity globals()['HostAlias'] = HostAlias globals()['IoArgoprojWorkflowV1alpha1Arguments'] = IoArgoprojWorkflowV1alpha1Arguments - globals()['IoArgoprojWorkflowV1alpha1ArtifactGC'] = IoArgoprojWorkflowV1alpha1ArtifactGC globals()['IoArgoprojWorkflowV1alpha1ArtifactRepositoryRef'] = IoArgoprojWorkflowV1alpha1ArtifactRepositoryRef globals()['IoArgoprojWorkflowV1alpha1ExecutorConfig'] = IoArgoprojWorkflowV1alpha1ExecutorConfig globals()['IoArgoprojWorkflowV1alpha1LifecycleHook'] = IoArgoprojWorkflowV1alpha1LifecycleHook @@ -69,6 +68,7 @@ def lazy_import(): globals()['IoArgoprojWorkflowV1alpha1TTLStrategy'] = IoArgoprojWorkflowV1alpha1TTLStrategy globals()['IoArgoprojWorkflowV1alpha1Template'] = IoArgoprojWorkflowV1alpha1Template globals()['IoArgoprojWorkflowV1alpha1VolumeClaimGC'] = IoArgoprojWorkflowV1alpha1VolumeClaimGC + globals()['IoArgoprojWorkflowV1alpha1WorkflowLevelArtifactGC'] = IoArgoprojWorkflowV1alpha1WorkflowLevelArtifactGC globals()['IoArgoprojWorkflowV1alpha1WorkflowMetadata'] = IoArgoprojWorkflowV1alpha1WorkflowMetadata globals()['IoArgoprojWorkflowV1alpha1WorkflowTemplateRef'] = IoArgoprojWorkflowV1alpha1WorkflowTemplateRef globals()['IoK8sApiPolicyV1PodDisruptionBudgetSpec'] = IoK8sApiPolicyV1PodDisruptionBudgetSpec @@ -137,7 +137,7 @@ def openapi_types(): 'affinity': (Affinity,), # noqa: E501 'archive_logs': (bool,), # noqa: E501 'arguments': (IoArgoprojWorkflowV1alpha1Arguments,), # noqa: E501 - 'artifact_gc': (IoArgoprojWorkflowV1alpha1ArtifactGC,), # noqa: E501 + 'artifact_gc': (IoArgoprojWorkflowV1alpha1WorkflowLevelArtifactGC,), # noqa: E501 'artifact_repository_ref': (IoArgoprojWorkflowV1alpha1ArtifactRepositoryRef,), # noqa: E501 'automount_service_account_token': (bool,), # noqa: E501 'dns_config': (PodDNSConfig,), # noqa: E501 @@ -272,7 +272,7 @@ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501 affinity (Affinity): [optional] # noqa: E501 archive_logs (bool): ArchiveLogs indicates if the container logs should be archived. [optional] # noqa: E501 arguments (IoArgoprojWorkflowV1alpha1Arguments): [optional] # noqa: E501 - artifact_gc (IoArgoprojWorkflowV1alpha1ArtifactGC): [optional] # noqa: E501 + artifact_gc (IoArgoprojWorkflowV1alpha1WorkflowLevelArtifactGC): [optional] # noqa: E501 artifact_repository_ref (IoArgoprojWorkflowV1alpha1ArtifactRepositoryRef): [optional] # noqa: E501 automount_service_account_token (bool): AutomountServiceAccountToken indicates whether a service account token should be automatically mounted in pods. ServiceAccountName of ExecutorConfig must be specified if this value is false.. [optional] # noqa: E501 dns_config (PodDNSConfig): [optional] # noqa: E501 @@ -395,7 +395,7 @@ def __init__(self, *args, **kwargs): # noqa: E501 affinity (Affinity): [optional] # noqa: E501 archive_logs (bool): ArchiveLogs indicates if the container logs should be archived. [optional] # noqa: E501 arguments (IoArgoprojWorkflowV1alpha1Arguments): [optional] # noqa: E501 - artifact_gc (IoArgoprojWorkflowV1alpha1ArtifactGC): [optional] # noqa: E501 + artifact_gc (IoArgoprojWorkflowV1alpha1WorkflowLevelArtifactGC): [optional] # noqa: E501 artifact_repository_ref (IoArgoprojWorkflowV1alpha1ArtifactRepositoryRef): [optional] # noqa: E501 automount_service_account_token (bool): AutomountServiceAccountToken indicates whether a service account token should be automatically mounted in pods. ServiceAccountName of ExecutorConfig must be specified if this value is false.. [optional] # noqa: E501 dns_config (PodDNSConfig): [optional] # noqa: E501 diff --git a/sdks/python/client/argo_workflows/models/__init__.py b/sdks/python/client/argo_workflows/models/__init__.py index 4975b93fff42..4847021d9ae9 100644 --- a/sdks/python/client/argo_workflows/models/__init__.py +++ b/sdks/python/client/argo_workflows/models/__init__.py @@ -294,6 +294,7 @@ from argo_workflows.model.io_argoproj_workflow_v1alpha1_workflow_event_binding import IoArgoprojWorkflowV1alpha1WorkflowEventBinding from argo_workflows.model.io_argoproj_workflow_v1alpha1_workflow_event_binding_list import IoArgoprojWorkflowV1alpha1WorkflowEventBindingList from argo_workflows.model.io_argoproj_workflow_v1alpha1_workflow_event_binding_spec import IoArgoprojWorkflowV1alpha1WorkflowEventBindingSpec +from argo_workflows.model.io_argoproj_workflow_v1alpha1_workflow_level_artifact_gc import IoArgoprojWorkflowV1alpha1WorkflowLevelArtifactGC from argo_workflows.model.io_argoproj_workflow_v1alpha1_workflow_lint_request import IoArgoprojWorkflowV1alpha1WorkflowLintRequest from argo_workflows.model.io_argoproj_workflow_v1alpha1_workflow_list import IoArgoprojWorkflowV1alpha1WorkflowList from argo_workflows.model.io_argoproj_workflow_v1alpha1_workflow_metadata import IoArgoprojWorkflowV1alpha1WorkflowMetadata diff --git a/sdks/python/client/docs/ClusterWorkflowTemplateServiceApi.md b/sdks/python/client/docs/ClusterWorkflowTemplateServiceApi.md index 9f3cd8d10c29..daa416855569 100644 --- a/sdks/python/client/docs/ClusterWorkflowTemplateServiceApi.md +++ b/sdks/python/client/docs/ClusterWorkflowTemplateServiceApi.md @@ -580,7 +580,8 @@ with argo_workflows.ApiClient(configuration) as api_client: ), ], ), - artifact_gc=IoArgoprojWorkflowV1alpha1ArtifactGC( + artifact_gc=IoArgoprojWorkflowV1alpha1WorkflowLevelArtifactGC( + force_finalizer_removal=True, pod_metadata=IoArgoprojWorkflowV1alpha1Metadata( annotations={ "key": "key_example", @@ -11380,7 +11381,8 @@ with argo_workflows.ApiClient(configuration) as api_client: ), ], ), - artifact_gc=IoArgoprojWorkflowV1alpha1ArtifactGC( + artifact_gc=IoArgoprojWorkflowV1alpha1WorkflowLevelArtifactGC( + force_finalizer_removal=True, pod_metadata=IoArgoprojWorkflowV1alpha1Metadata( annotations={ "key": "key_example", @@ -22084,7 +22086,8 @@ with argo_workflows.ApiClient(configuration) as api_client: ), ], ), - artifact_gc=IoArgoprojWorkflowV1alpha1ArtifactGC( + artifact_gc=IoArgoprojWorkflowV1alpha1WorkflowLevelArtifactGC( + force_finalizer_removal=True, pod_metadata=IoArgoprojWorkflowV1alpha1Metadata( annotations={ "key": "key_example", diff --git a/sdks/python/client/docs/CronWorkflowServiceApi.md b/sdks/python/client/docs/CronWorkflowServiceApi.md index b7270215efb5..2b9117a566cc 100644 --- a/sdks/python/client/docs/CronWorkflowServiceApi.md +++ b/sdks/python/client/docs/CronWorkflowServiceApi.md @@ -634,7 +634,8 @@ with argo_workflows.ApiClient(configuration) as api_client: ), ], ), - artifact_gc=IoArgoprojWorkflowV1alpha1ArtifactGC( + artifact_gc=IoArgoprojWorkflowV1alpha1WorkflowLevelArtifactGC( + force_finalizer_removal=True, pod_metadata=IoArgoprojWorkflowV1alpha1Metadata( annotations={ "key": "key_example", @@ -11507,7 +11508,8 @@ with argo_workflows.ApiClient(configuration) as api_client: ), ], ), - artifact_gc=IoArgoprojWorkflowV1alpha1ArtifactGC( + artifact_gc=IoArgoprojWorkflowV1alpha1WorkflowLevelArtifactGC( + force_finalizer_removal=True, pod_metadata=IoArgoprojWorkflowV1alpha1Metadata( annotations={ "key": "key_example", @@ -22465,7 +22467,8 @@ with argo_workflows.ApiClient(configuration) as api_client: ), ], ), - artifact_gc=IoArgoprojWorkflowV1alpha1ArtifactGC( + artifact_gc=IoArgoprojWorkflowV1alpha1WorkflowLevelArtifactGC( + force_finalizer_removal=True, pod_metadata=IoArgoprojWorkflowV1alpha1Metadata( annotations={ "key": "key_example", diff --git a/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1ArtifactGC.md b/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1ArtifactGC.md index 5964b3a8e4ff..38b6a55f9457 100644 --- a/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1ArtifactGC.md +++ b/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1ArtifactGC.md @@ -1,6 +1,6 @@ # IoArgoprojWorkflowV1alpha1ArtifactGC -ArtifactGC describes how to delete artifacts from completed Workflows +ArtifactGC describes how to delete artifacts from completed Workflows - this is embedded into the WorkflowLevelArtifactGC, and also used for individual Artifacts to override that as needed ## Properties Name | Type | Description | Notes diff --git a/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1WorkflowLevelArtifactGC.md b/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1WorkflowLevelArtifactGC.md new file mode 100644 index 000000000000..20d0c4d5d8d5 --- /dev/null +++ b/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1WorkflowLevelArtifactGC.md @@ -0,0 +1,16 @@ +# IoArgoprojWorkflowV1alpha1WorkflowLevelArtifactGC + +WorkflowLevelArtifactGC describes how to delete artifacts from completed Workflows - this spec is used on the Workflow level + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**force_finalizer_removal** | **bool** | ForceFinalizerRemoval: if set to true, the finalizer will be removed in the case that Artifact GC fails | [optional] +**pod_metadata** | [**IoArgoprojWorkflowV1alpha1Metadata**](IoArgoprojWorkflowV1alpha1Metadata.md) | | [optional] +**service_account_name** | **str** | ServiceAccountName is an optional field for specifying the Service Account that should be assigned to the Pod doing the deletion | [optional] +**strategy** | **str** | Strategy is the strategy to use. | [optional] +**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1WorkflowSpec.md b/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1WorkflowSpec.md index 31132da3344f..d0ac0b10fbb6 100644 --- a/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1WorkflowSpec.md +++ b/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1WorkflowSpec.md @@ -9,7 +9,7 @@ Name | Type | Description | Notes **affinity** | [**Affinity**](Affinity.md) | | [optional] **archive_logs** | **bool** | ArchiveLogs indicates if the container logs should be archived | [optional] **arguments** | [**IoArgoprojWorkflowV1alpha1Arguments**](IoArgoprojWorkflowV1alpha1Arguments.md) | | [optional] -**artifact_gc** | [**IoArgoprojWorkflowV1alpha1ArtifactGC**](IoArgoprojWorkflowV1alpha1ArtifactGC.md) | | [optional] +**artifact_gc** | [**IoArgoprojWorkflowV1alpha1WorkflowLevelArtifactGC**](IoArgoprojWorkflowV1alpha1WorkflowLevelArtifactGC.md) | | [optional] **artifact_repository_ref** | [**IoArgoprojWorkflowV1alpha1ArtifactRepositoryRef**](IoArgoprojWorkflowV1alpha1ArtifactRepositoryRef.md) | | [optional] **automount_service_account_token** | **bool** | AutomountServiceAccountToken indicates whether a service account token should be automatically mounted in pods. ServiceAccountName of ExecutorConfig must be specified if this value is false. | [optional] **dns_config** | [**PodDNSConfig**](PodDNSConfig.md) | | [optional] diff --git a/sdks/python/client/docs/WorkflowServiceApi.md b/sdks/python/client/docs/WorkflowServiceApi.md index 1843670077bf..a886911b0811 100644 --- a/sdks/python/client/docs/WorkflowServiceApi.md +++ b/sdks/python/client/docs/WorkflowServiceApi.md @@ -595,7 +595,8 @@ with argo_workflows.ApiClient(configuration) as api_client: ), ], ), - artifact_gc=IoArgoprojWorkflowV1alpha1ArtifactGC( + artifact_gc=IoArgoprojWorkflowV1alpha1WorkflowLevelArtifactGC( + force_finalizer_removal=True, pod_metadata=IoArgoprojWorkflowV1alpha1Metadata( annotations={ "key": "key_example", @@ -16953,7 +16954,8 @@ with argo_workflows.ApiClient(configuration) as api_client: ), ], ), - artifact_gc=IoArgoprojWorkflowV1alpha1ArtifactGC( + artifact_gc=IoArgoprojWorkflowV1alpha1WorkflowLevelArtifactGC( + force_finalizer_removal=True, pod_metadata=IoArgoprojWorkflowV1alpha1Metadata( annotations={ "key": "key_example", @@ -27792,7 +27794,8 @@ with argo_workflows.ApiClient(configuration) as api_client: ), ], ), - artifact_gc=IoArgoprojWorkflowV1alpha1ArtifactGC( + artifact_gc=IoArgoprojWorkflowV1alpha1WorkflowLevelArtifactGC( + force_finalizer_removal=True, pod_metadata=IoArgoprojWorkflowV1alpha1Metadata( annotations={ "key": "key_example", @@ -44150,7 +44153,8 @@ with argo_workflows.ApiClient(configuration) as api_client: ), ], ), - artifact_gc=IoArgoprojWorkflowV1alpha1ArtifactGC( + artifact_gc=IoArgoprojWorkflowV1alpha1WorkflowLevelArtifactGC( + force_finalizer_removal=True, pod_metadata=IoArgoprojWorkflowV1alpha1Metadata( annotations={ "key": "key_example", diff --git a/sdks/python/client/docs/WorkflowTemplateServiceApi.md b/sdks/python/client/docs/WorkflowTemplateServiceApi.md index 3aeb2bad2907..7f45b5ead0a4 100644 --- a/sdks/python/client/docs/WorkflowTemplateServiceApi.md +++ b/sdks/python/client/docs/WorkflowTemplateServiceApi.md @@ -582,7 +582,8 @@ with argo_workflows.ApiClient(configuration) as api_client: ), ], ), - artifact_gc=IoArgoprojWorkflowV1alpha1ArtifactGC( + artifact_gc=IoArgoprojWorkflowV1alpha1WorkflowLevelArtifactGC( + force_finalizer_removal=True, pod_metadata=IoArgoprojWorkflowV1alpha1Metadata( annotations={ "key": "key_example", @@ -11389,7 +11390,8 @@ with argo_workflows.ApiClient(configuration) as api_client: ), ], ), - artifact_gc=IoArgoprojWorkflowV1alpha1ArtifactGC( + artifact_gc=IoArgoprojWorkflowV1alpha1WorkflowLevelArtifactGC( + force_finalizer_removal=True, pod_metadata=IoArgoprojWorkflowV1alpha1Metadata( annotations={ "key": "key_example", @@ -22105,7 +22107,8 @@ with argo_workflows.ApiClient(configuration) as api_client: ), ], ), - artifact_gc=IoArgoprojWorkflowV1alpha1ArtifactGC( + artifact_gc=IoArgoprojWorkflowV1alpha1WorkflowLevelArtifactGC( + force_finalizer_removal=True, pod_metadata=IoArgoprojWorkflowV1alpha1Metadata( annotations={ "key": "key_example", diff --git a/test/e2e/artifacts_test.go b/test/e2e/artifacts_test.go index 0816c038181d..22c1ba0f6447 100644 --- a/test/e2e/artifacts_test.go +++ b/test/e2e/artifacts_test.go @@ -12,6 +12,7 @@ import ( "github.com/stretchr/testify/suite" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "sigs.k8s.io/yaml" "github.com/argoproj/argo-workflows/v3/workflow/common" @@ -237,23 +238,15 @@ func (s *ArtifactsSuite) TestArtifactGC() { } } -// create a ServiceAccount which won't be tied to the artifactgc role and attempt to use that service account in the GC Pod -// Want to verify that this causes the ArtifactGCError Condition in the Workflow -func (s *ArtifactsSuite) TestArtifactGC_InsufficientRole() { - ctx := context.Background() - _, err := s.KubeClient.CoreV1().ServiceAccounts(fixtures.Namespace).Create(ctx, &corev1.ServiceAccount{ObjectMeta: metav1.ObjectMeta{Name: "artgc-role-test-sa"}}, metav1.CreateOptions{}) - assert.NoError(s.T(), err) - s.T().Cleanup(func() { - _ = s.KubeClient.CoreV1().ServiceAccounts(fixtures.Namespace).Delete(ctx, "artgc-role-test-sa", metav1.DeleteOptions{}) - }) - - when := s.Given().Workflow(` +var insufficientRoleWorkflow = ` apiVersion: argoproj.io/v1alpha1 kind: Workflow metadata: generateName: art-gc-simple- spec: entrypoint: main + artifactGC: + forceFinalizerRemoval: true templates: - name: main container: @@ -272,37 +265,89 @@ spec: key: temporary-artifact-on-completion.txt artifactGC: strategy: OnWorkflowCompletion - serviceAccountName: artgc-role-test-sa`). - When(). - SubmitWorkflow(). - WaitForWorkflow(fixtures.ToBeCompleted) - - if when.WorkflowCondition(func(wf *wfv1.Workflow) bool { - return wf.Status.Phase == wfv1.WorkflowFailed || wf.Status.Phase == wfv1.WorkflowError - }) { - fmt.Println("can't reliably verify Artifact GC (Insufficient Role test) since workflow failed") - when.RemoveFinalizers(false) - return + serviceAccountName: artgc-role-test-sa +` + +// create a ServiceAccount which won't be tied to the artifactgc role and attempt to use that service account in the GC Pod +// Want to verify that this causes the ArtifactGCError Condition in the Workflow +func (s *ArtifactsSuite) TestArtifactGC_InsufficientRole() { + ctx := context.Background() + _, err := s.KubeClient.CoreV1().ServiceAccounts(fixtures.Namespace).Create(ctx, &corev1.ServiceAccount{ObjectMeta: metav1.ObjectMeta{Name: "artgc-role-test-sa"}}, metav1.CreateOptions{}) + assert.NoError(s.T(), err) + s.T().Cleanup(func() { + _ = s.KubeClient.CoreV1().ServiceAccounts(fixtures.Namespace).Delete(ctx, "artgc-role-test-sa", metav1.DeleteOptions{}) + }) + + // We can test this failure case in 2 ways + // 1. Workflow sets ForceFinalizerRemoval to false, so finalizer is still present after failure + // 2. Workflow sets ForceFinalizerRemoval to true, so finalizer isn't present after failure + tests := []struct { // I suppose this could just be a slice of bool, but making it a struct in case we want to expand it + forceFinalizerRemoval bool + }{ + { + forceFinalizerRemoval: true, + }, + { + forceFinalizerRemoval: false, + }, } - when.WaitForWorkflow( - fixtures.WorkflowCompletionOkay(true), - fixtures.Condition(func(wf *wfv1.Workflow) (bool, string) { - return wf.Status.ArtifactGCStatus != nil && - len(wf.Status.ArtifactGCStatus.PodsRecouped) == 1, "for pod to have been recouped" - })). - Then(). - ExpectWorkflow(func(t *testing.T, _ *metav1.ObjectMeta, status *wfv1.WorkflowStatus) { - failCondition := false - for _, c := range status.Conditions { - if c.Type == wfv1.ConditionTypeArtifactGCError { - failCondition = true + for _, tt := range tests { + // unmarshal and marshal the yaml so we can modify the Workflow spec + var workflow wfv1.Workflow + err = yaml.Unmarshal([]byte(insufficientRoleWorkflow), &workflow) + if err != nil { + assert.Fail(s.T(), err.Error()) + } + + workflow.Spec.ArtifactGC.ForceFinalizerRemoval = tt.forceFinalizerRemoval + modifiedWorkflow, err := yaml.Marshal(&workflow) + if err != nil { + assert.Fail(s.T(), err.Error()) + } + + // Submit the Workflow + when := s.Given().Workflow(string(modifiedWorkflow)). + When(). + SubmitWorkflow(). + WaitForWorkflow(fixtures.ToBeCompleted) + + // if the Workflow fails for some reason outside of our control, we can't complete this test + if when.WorkflowCondition(func(wf *wfv1.Workflow) bool { + return wf.Status.Phase == wfv1.WorkflowFailed || wf.Status.Phase == wfv1.WorkflowError + }) { + fmt.Println("can't reliably verify Artifact GC (Insufficient Role test) since workflow failed") + when.RemoveFinalizers(false) + return + } + + // Once Workflow completes, check its result + when.WaitForWorkflow( + fixtures.WorkflowCompletionOkay(true), + fixtures.Condition(func(wf *wfv1.Workflow) (bool, string) { + return wf.Status.ArtifactGCStatus != nil && + len(wf.Status.ArtifactGCStatus.PodsRecouped) == 1, "for pod to have been recouped" + })). + Then(). + ExpectWorkflow(func(t *testing.T, _ *metav1.ObjectMeta, status *wfv1.WorkflowStatus) { + failCondition := false + for _, c := range status.Conditions { + if c.Type == wfv1.ConditionTypeArtifactGCError { + failCondition = true + } } - } - assert.Equal(t, true, failCondition) - }). - When(). - RemoveFinalizers(true) + assert.Equal(t, true, failCondition) + }). + ExpectWorkflow(func(t *testing.T, meta *metav1.ObjectMeta, status *wfv1.WorkflowStatus) { + if tt.forceFinalizerRemoval { + assert.NotContains(s.T(), meta.Finalizers, common.FinalizerArtifactGC) + } else { + assert.Contains(s.T(), meta.Finalizers, common.FinalizerArtifactGC) + } + }). + When(). + RemoveFinalizers(true) + } } func (s *ArtifactsSuite) TestDefaultParameterOutputs() { diff --git a/workflow/controller/artifact_gc.go b/workflow/controller/artifact_gc.go index d0debb0b3b02..f52b49097912 100644 --- a/workflow/controller/artifact_gc.go +++ b/workflow/controller/artifact_gc.go @@ -535,14 +535,18 @@ func (woc *wfOperationCtx) processArtifactGCCompletion(ctx context.Context) erro } } - if anyPodSuccess { + removeFinalizer := false + forceFinalizerRemoval := woc.execWf.Spec.ArtifactGC != nil && woc.execWf.Spec.ArtifactGC.ForceFinalizerRemoval + if forceFinalizerRemoval { + removeFinalizer = woc.wf.Status.ArtifactGCStatus.AllArtifactGCPodsRecouped() + } else { // check if all artifacts have been deleted and if so remove Finalizer - if woc.allArtifactsDeleted() { - woc.log.Info("no remaining artifacts to GC, removing artifact GC finalizer") - woc.wf.Finalizers = slice.RemoveString(woc.wf.Finalizers, common.FinalizerArtifactGC) - woc.updated = true - } - + removeFinalizer = anyPodSuccess && woc.allArtifactsDeleted() + } + if removeFinalizer { + woc.log.Infof("no remaining artifacts to GC, removing artifact GC finalizer (forceFinalizerRemoval=%v)", forceFinalizerRemoval) + woc.wf.Finalizers = slice.RemoveString(woc.wf.Finalizers, common.FinalizerArtifactGC) + woc.updated = true } return nil } @@ -679,7 +683,7 @@ func (woc *wfOperationCtx) getArtifactGCPodInfo(artifact *wfv1.Artifact) podInfo // start with Workflow.ArtifactGC and override with Artifact.ArtifactGC podAccessInfo := podInfo{} if woc.execWf.Spec.ArtifactGC != nil { - woc.updateArtifactGCPodInfo(woc.execWf.Spec.ArtifactGC, &podAccessInfo) + woc.updateArtifactGCPodInfo(&woc.execWf.Spec.ArtifactGC.ArtifactGC, &podAccessInfo) } if artifact.ArtifactGC != nil { woc.updateArtifactGCPodInfo(artifact.ArtifactGC, &podAccessInfo)