From 38c00db3a719ca317aa795d5aaca909c14e71cd6 Mon Sep 17 00:00:00 2001 From: shuangkun Date: Mon, 4 Mar 2024 00:35:07 +0800 Subject: [PATCH 01/26] feat: Refactor the logic of delete pod during retry Signed-off-by: shuangkun --- api/jsonschema/schema.json | 29 + api/openapi-spec/swagger.json | 29 + docs/fields.md | 13 + .../argoproj.io_clusterworkflowtemplates.yaml | 13 + .../crds/full/argoproj.io_cronworkflows.yaml | 13 + .../base/crds/full/argoproj.io_workflows.yaml | 28 + .../full/argoproj.io_workflowtemplates.yaml | 13 + pkg/apis/api-rules/violation_exceptions.list | 1 + pkg/apis/workflow/v1alpha1/generated.pb.go | 1844 ++++++++++------- pkg/apis/workflow/v1alpha1/generated.proto | 21 + .../workflow/v1alpha1/openapi_generated.go | 58 +- pkg/apis/workflow/v1alpha1/workflow_types.go | 18 + .../v1alpha1/zz_generated.deepcopy.go | 26 + .../IoArgoprojWorkflowV1alpha1RetryConfig.md | 17 + .../IoArgoprojWorkflowV1alpha1WorkflowSpec.md | 1 + ...argoproj_workflow_v1alpha1_retry_config.py | 267 +++ ...rgoproj_workflow_v1alpha1_workflow_spec.py | 6 + .../client/argo_workflows/models/__init__.py | 1 + .../docs/ClusterWorkflowTemplateServiceApi.md | 24 + .../client/docs/CronWorkflowServiceApi.md | 24 + .../IoArgoprojWorkflowV1alpha1RetryConfig.md | 16 + .../IoArgoprojWorkflowV1alpha1WorkflowSpec.md | 1 + sdks/python/client/docs/WorkflowServiceApi.md | 32 + .../client/docs/WorkflowTemplateServiceApi.md | 24 + server/workflow/workflow_server.go | 40 +- workflow/controller/operator.go | 48 + workflow/util/util.go | 20 +- 27 files changed, 1846 insertions(+), 781 deletions(-) create mode 100644 sdks/java/client/docs/IoArgoprojWorkflowV1alpha1RetryConfig.md create mode 100644 sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_retry_config.py create mode 100644 sdks/python/client/docs/IoArgoprojWorkflowV1alpha1RetryConfig.md diff --git a/api/jsonschema/schema.json b/api/jsonschema/schema.json index f6cd69c3cbbe..b6de26034146 100644 --- a/api/jsonschema/schema.json +++ b/api/jsonschema/schema.json @@ -6493,6 +6493,31 @@ }, "type": "object" }, + "io.argoproj.workflow.v1alpha1.RetryConfig": { + "description": "RetryConfig defines how to retry a workflow", + "properties": { + "nodeFieldSelector": { + "description": "NodeFieldSelector selects nodes to reset", + "type": "string" + }, + "parameters": { + "description": "Parameters are a list of parameters passed", + "items": { + "type": "string" + }, + "type": "array" + }, + "restartSuccessful": { + "description": "RestartSuccessful defines whether or not to retry succeeded node", + "type": "boolean" + }, + "retried": { + "description": "Retried tracks whether or not this workflow was retried by RetryConfig", + "type": "boolean" + } + }, + "type": "object" + }, "io.argoproj.workflow.v1alpha1.RetryNodeAntiAffinity": { "description": "RetryNodeAntiAffinity is a placeholder for future expansion, only empty nodeAntiAffinity is allowed. In order to prevent running steps on the same host, it uses \"kubernetes.io/hostname\".", "type": "object" @@ -7912,6 +7937,10 @@ "description": "Priority is used if controller is configured to process limited number of workflows in parallel. Workflows with higher priority are processed first.", "type": "integer" }, + "retry": { + "$ref": "#/definitions/io.argoproj.workflow.v1alpha1.RetryConfig", + "description": "Retry will retry the workflow according to its RetryConfig" + }, "retryStrategy": { "$ref": "#/definitions/io.argoproj.workflow.v1alpha1.RetryStrategy", "description": "RetryStrategy for all templates in the io.argoproj.workflow.v1alpha1." diff --git a/api/openapi-spec/swagger.json b/api/openapi-spec/swagger.json index 483615edffd0..95c119a9d6f7 100644 --- a/api/openapi-spec/swagger.json +++ b/api/openapi-spec/swagger.json @@ -10433,6 +10433,31 @@ } } }, + "io.argoproj.workflow.v1alpha1.RetryConfig": { + "description": "RetryConfig defines how to retry a workflow", + "type": "object", + "properties": { + "nodeFieldSelector": { + "description": "NodeFieldSelector selects nodes to reset", + "type": "string" + }, + "parameters": { + "description": "Parameters are a list of parameters passed", + "type": "array", + "items": { + "type": "string" + } + }, + "restartSuccessful": { + "description": "RestartSuccessful defines whether or not to retry succeeded node", + "type": "boolean" + }, + "retried": { + "description": "Retried tracks whether or not this workflow was retried by RetryConfig", + "type": "boolean" + } + } + }, "io.argoproj.workflow.v1alpha1.RetryNodeAntiAffinity": { "description": "RetryNodeAntiAffinity is a placeholder for future expansion, only empty nodeAntiAffinity is allowed. In order to prevent running steps on the same host, it uses \"kubernetes.io/hostname\".", "type": "object" @@ -11835,6 +11860,10 @@ "description": "Priority is used if controller is configured to process limited number of workflows in parallel. Workflows with higher priority are processed first.", "type": "integer" }, + "retry": { + "description": "Retry will retry the workflow according to its RetryConfig", + "$ref": "#/definitions/io.argoproj.workflow.v1alpha1.RetryConfig" + }, "retryStrategy": { "description": "RetryStrategy for all templates in the io.argoproj.workflow.v1alpha1.", "$ref": "#/definitions/io.argoproj.workflow.v1alpha1.RetryStrategy" diff --git a/docs/fields.md b/docs/fields.md index 880604d9c1e4..bd2dee113602 100644 --- a/docs/fields.md +++ b/docs/fields.md @@ -819,6 +819,7 @@ WorkflowSpec is the specification of a Workflow. |`podPriorityClassName`|`string`|PriorityClassName to apply to workflow pods.| |`podSpecPatch`|`string`|PodSpecPatch holds strategic merge patch to apply against the pod spec. Allows parameterization of container fields which are not strings (e.g. resource limits).| |`priority`|`integer`|Priority is used if controller is configured to process limited number of workflows in parallel. Workflows with higher priority are processed first.| +|`retry`|[`RetryConfig`](#retryconfig)|Retry will retry the workflow according to its RetryConfig| |`retryStrategy`|[`RetryStrategy`](#retrystrategy)|RetryStrategy for all templates in the io.argoproj.workflow.v1alpha1.| |`schedulerName`|`string`|Set scheduler name for all pods. Will be overridden if container/script template's scheduler name is set. Default scheduler will be used if neither specified.| |`securityContext`|[`PodSecurityContext`](#podsecuritycontext)|SecurityContext holds pod-level security attributes and common container settings. Optional: Defaults to empty. See type description for default values of each field.| @@ -1570,6 +1571,18 @@ Pod metdata |`annotations`|`Map< string , string >`|_No description available_| |`labels`|`Map< string , string >`|_No description available_| +## RetryConfig + +RetryConfig defines how to retry a workflow + +### Fields +| Field Name | Field Type | Description | +|:----------:|:----------:|---------------| +|`nodeFieldSelector`|`string`|NodeFieldSelector selects nodes to reset| +|`parameters`|`Array< string >`|Parameters are a list of parameters passed| +|`restartSuccessful`|`boolean`|RestartSuccessful defines whether or not to retry succeeded node| +|`retried`|`boolean`|Retried tracks whether or not this workflow was retried by RetryConfig| + ## RetryStrategy RetryStrategy provides controls on how to retry a workflow step diff --git a/manifests/base/crds/full/argoproj.io_clusterworkflowtemplates.yaml b/manifests/base/crds/full/argoproj.io_clusterworkflowtemplates.yaml index 78a364fb9e80..1fb1e20991b7 100644 --- a/manifests/base/crds/full/argoproj.io_clusterworkflowtemplates.yaml +++ b/manifests/base/crds/full/argoproj.io_clusterworkflowtemplates.yaml @@ -1829,6 +1829,19 @@ spec: priority: format: int32 type: integer + retry: + properties: + nodeFieldSelector: + type: string + parameters: + items: + type: string + type: array + restartSuccessful: + type: boolean + retried: + type: boolean + type: object retryStrategy: properties: affinity: diff --git a/manifests/base/crds/full/argoproj.io_cronworkflows.yaml b/manifests/base/crds/full/argoproj.io_cronworkflows.yaml index 3bd8d118f6a0..41ae91ba874e 100644 --- a/manifests/base/crds/full/argoproj.io_cronworkflows.yaml +++ b/manifests/base/crds/full/argoproj.io_cronworkflows.yaml @@ -1861,6 +1861,19 @@ spec: priority: format: int32 type: integer + retry: + properties: + nodeFieldSelector: + type: string + parameters: + items: + type: string + type: array + restartSuccessful: + type: boolean + retried: + type: boolean + type: object retryStrategy: properties: affinity: diff --git a/manifests/base/crds/full/argoproj.io_workflows.yaml b/manifests/base/crds/full/argoproj.io_workflows.yaml index d0c5aa874f0d..d4366ebac64a 100644 --- a/manifests/base/crds/full/argoproj.io_workflows.yaml +++ b/manifests/base/crds/full/argoproj.io_workflows.yaml @@ -1843,6 +1843,19 @@ spec: priority: format: int32 type: integer + retry: + properties: + nodeFieldSelector: + type: string + parameters: + items: + type: string + type: array + restartSuccessful: + type: boolean + retried: + type: boolean + type: object retryStrategy: properties: affinity: @@ -22750,6 +22763,8 @@ spec: format: int64 type: integer type: object + retryStatus: + type: boolean startedAt: format: date-time type: string @@ -33044,6 +33059,19 @@ spec: priority: format: int32 type: integer + retry: + properties: + nodeFieldSelector: + type: string + parameters: + items: + type: string + type: array + restartSuccessful: + type: boolean + retried: + type: boolean + type: object retryStrategy: properties: affinity: diff --git a/manifests/base/crds/full/argoproj.io_workflowtemplates.yaml b/manifests/base/crds/full/argoproj.io_workflowtemplates.yaml index e971cf10d51c..be2797d1e7a2 100644 --- a/manifests/base/crds/full/argoproj.io_workflowtemplates.yaml +++ b/manifests/base/crds/full/argoproj.io_workflowtemplates.yaml @@ -1828,6 +1828,19 @@ spec: priority: format: int32 type: integer + retry: + properties: + nodeFieldSelector: + type: string + parameters: + items: + type: string + type: array + restartSuccessful: + type: boolean + retried: + type: boolean + type: object retryStrategy: properties: affinity: diff --git a/pkg/apis/api-rules/violation_exceptions.list b/pkg/apis/api-rules/violation_exceptions.list index ccf495af1bfb..141f87ad67a8 100644 --- a/pkg/apis/api-rules/violation_exceptions.list +++ b/pkg/apis/api-rules/violation_exceptions.list @@ -25,6 +25,7 @@ API rule violation: list_type_missing,github.com/argoproj/argo-workflows/v3/pkg/ API rule violation: list_type_missing,github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1,Parameter,Enum API rule violation: list_type_missing,github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1,Prometheus,Labels API rule violation: list_type_missing,github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1,ResourceTemplate,Flags +API rule violation: list_type_missing,github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1,RetryConfig,Parameters API rule violation: list_type_missing,github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1,SemaphoreStatus,Holding API rule violation: list_type_missing,github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1,SemaphoreStatus,Waiting API rule violation: list_type_missing,github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1,SubmitOpts,Parameters diff --git a/pkg/apis/workflow/v1alpha1/generated.pb.go b/pkg/apis/workflow/v1alpha1/generated.pb.go index e068bc96bf88..5bad5a50090e 100644 --- a/pkg/apis/workflow/v1alpha1/generated.pb.go +++ b/pkg/apis/workflow/v1alpha1/generated.pb.go @@ -2892,10 +2892,38 @@ func (m *RetryAffinity) XXX_DiscardUnknown() { var xxx_messageInfo_RetryAffinity proto.InternalMessageInfo +func (m *RetryConfig) Reset() { *m = RetryConfig{} } +func (*RetryConfig) ProtoMessage() {} +func (*RetryConfig) Descriptor() ([]byte, []int) { + return fileDescriptor_724696e352c3df5f, []int{102} +} +func (m *RetryConfig) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RetryConfig) 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 *RetryConfig) XXX_Merge(src proto.Message) { + xxx_messageInfo_RetryConfig.Merge(m, src) +} +func (m *RetryConfig) XXX_Size() int { + return m.Size() +} +func (m *RetryConfig) XXX_DiscardUnknown() { + xxx_messageInfo_RetryConfig.DiscardUnknown(m) +} + +var xxx_messageInfo_RetryConfig proto.InternalMessageInfo + func (m *RetryNodeAntiAffinity) Reset() { *m = RetryNodeAntiAffinity{} } func (*RetryNodeAntiAffinity) ProtoMessage() {} func (*RetryNodeAntiAffinity) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{102} + return fileDescriptor_724696e352c3df5f, []int{103} } func (m *RetryNodeAntiAffinity) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2923,7 +2951,7 @@ var xxx_messageInfo_RetryNodeAntiAffinity proto.InternalMessageInfo func (m *RetryStrategy) Reset() { *m = RetryStrategy{} } func (*RetryStrategy) ProtoMessage() {} func (*RetryStrategy) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{103} + return fileDescriptor_724696e352c3df5f, []int{104} } func (m *RetryStrategy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2951,7 +2979,7 @@ var xxx_messageInfo_RetryStrategy proto.InternalMessageInfo func (m *S3Artifact) Reset() { *m = S3Artifact{} } func (*S3Artifact) ProtoMessage() {} func (*S3Artifact) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{104} + return fileDescriptor_724696e352c3df5f, []int{105} } func (m *S3Artifact) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2979,7 +3007,7 @@ var xxx_messageInfo_S3Artifact proto.InternalMessageInfo func (m *S3ArtifactRepository) Reset() { *m = S3ArtifactRepository{} } func (*S3ArtifactRepository) ProtoMessage() {} func (*S3ArtifactRepository) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{105} + return fileDescriptor_724696e352c3df5f, []int{106} } func (m *S3ArtifactRepository) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3007,7 +3035,7 @@ var xxx_messageInfo_S3ArtifactRepository proto.InternalMessageInfo func (m *S3Bucket) Reset() { *m = S3Bucket{} } func (*S3Bucket) ProtoMessage() {} func (*S3Bucket) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{106} + return fileDescriptor_724696e352c3df5f, []int{107} } func (m *S3Bucket) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3035,7 +3063,7 @@ var xxx_messageInfo_S3Bucket proto.InternalMessageInfo func (m *S3EncryptionOptions) Reset() { *m = S3EncryptionOptions{} } func (*S3EncryptionOptions) ProtoMessage() {} func (*S3EncryptionOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{107} + return fileDescriptor_724696e352c3df5f, []int{108} } func (m *S3EncryptionOptions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3063,7 +3091,7 @@ var xxx_messageInfo_S3EncryptionOptions proto.InternalMessageInfo func (m *ScriptTemplate) Reset() { *m = ScriptTemplate{} } func (*ScriptTemplate) ProtoMessage() {} func (*ScriptTemplate) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{108} + return fileDescriptor_724696e352c3df5f, []int{109} } func (m *ScriptTemplate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3091,7 +3119,7 @@ var xxx_messageInfo_ScriptTemplate proto.InternalMessageInfo func (m *SemaphoreHolding) Reset() { *m = SemaphoreHolding{} } func (*SemaphoreHolding) ProtoMessage() {} func (*SemaphoreHolding) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{109} + return fileDescriptor_724696e352c3df5f, []int{110} } func (m *SemaphoreHolding) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3119,7 +3147,7 @@ var xxx_messageInfo_SemaphoreHolding proto.InternalMessageInfo func (m *SemaphoreRef) Reset() { *m = SemaphoreRef{} } func (*SemaphoreRef) ProtoMessage() {} func (*SemaphoreRef) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{110} + return fileDescriptor_724696e352c3df5f, []int{111} } func (m *SemaphoreRef) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3147,7 +3175,7 @@ var xxx_messageInfo_SemaphoreRef proto.InternalMessageInfo func (m *SemaphoreStatus) Reset() { *m = SemaphoreStatus{} } func (*SemaphoreStatus) ProtoMessage() {} func (*SemaphoreStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{111} + return fileDescriptor_724696e352c3df5f, []int{112} } func (m *SemaphoreStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3175,7 +3203,7 @@ var xxx_messageInfo_SemaphoreStatus proto.InternalMessageInfo func (m *Sequence) Reset() { *m = Sequence{} } func (*Sequence) ProtoMessage() {} func (*Sequence) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{112} + return fileDescriptor_724696e352c3df5f, []int{113} } func (m *Sequence) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3203,7 +3231,7 @@ var xxx_messageInfo_Sequence proto.InternalMessageInfo func (m *StopStrategy) Reset() { *m = StopStrategy{} } func (*StopStrategy) ProtoMessage() {} func (*StopStrategy) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{113} + return fileDescriptor_724696e352c3df5f, []int{114} } func (m *StopStrategy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3231,7 +3259,7 @@ var xxx_messageInfo_StopStrategy proto.InternalMessageInfo func (m *Submit) Reset() { *m = Submit{} } func (*Submit) ProtoMessage() {} func (*Submit) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{114} + return fileDescriptor_724696e352c3df5f, []int{115} } func (m *Submit) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3259,7 +3287,7 @@ var xxx_messageInfo_Submit proto.InternalMessageInfo func (m *SubmitOpts) Reset() { *m = SubmitOpts{} } func (*SubmitOpts) ProtoMessage() {} func (*SubmitOpts) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{115} + return fileDescriptor_724696e352c3df5f, []int{116} } func (m *SubmitOpts) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3287,7 +3315,7 @@ var xxx_messageInfo_SubmitOpts proto.InternalMessageInfo func (m *SuppliedValueFrom) Reset() { *m = SuppliedValueFrom{} } func (*SuppliedValueFrom) ProtoMessage() {} func (*SuppliedValueFrom) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{116} + return fileDescriptor_724696e352c3df5f, []int{117} } func (m *SuppliedValueFrom) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3315,7 +3343,7 @@ var xxx_messageInfo_SuppliedValueFrom proto.InternalMessageInfo func (m *SuspendTemplate) Reset() { *m = SuspendTemplate{} } func (*SuspendTemplate) ProtoMessage() {} func (*SuspendTemplate) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{117} + return fileDescriptor_724696e352c3df5f, []int{118} } func (m *SuspendTemplate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3343,7 +3371,7 @@ var xxx_messageInfo_SuspendTemplate proto.InternalMessageInfo func (m *Synchronization) Reset() { *m = Synchronization{} } func (*Synchronization) ProtoMessage() {} func (*Synchronization) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{118} + return fileDescriptor_724696e352c3df5f, []int{119} } func (m *Synchronization) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3371,7 +3399,7 @@ var xxx_messageInfo_Synchronization proto.InternalMessageInfo func (m *SynchronizationStatus) Reset() { *m = SynchronizationStatus{} } func (*SynchronizationStatus) ProtoMessage() {} func (*SynchronizationStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{119} + return fileDescriptor_724696e352c3df5f, []int{120} } func (m *SynchronizationStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3399,7 +3427,7 @@ var xxx_messageInfo_SynchronizationStatus proto.InternalMessageInfo func (m *TTLStrategy) Reset() { *m = TTLStrategy{} } func (*TTLStrategy) ProtoMessage() {} func (*TTLStrategy) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{120} + return fileDescriptor_724696e352c3df5f, []int{121} } func (m *TTLStrategy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3427,7 +3455,7 @@ var xxx_messageInfo_TTLStrategy proto.InternalMessageInfo func (m *TarStrategy) Reset() { *m = TarStrategy{} } func (*TarStrategy) ProtoMessage() {} func (*TarStrategy) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{121} + return fileDescriptor_724696e352c3df5f, []int{122} } func (m *TarStrategy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3455,7 +3483,7 @@ var xxx_messageInfo_TarStrategy proto.InternalMessageInfo func (m *Template) Reset() { *m = Template{} } func (*Template) ProtoMessage() {} func (*Template) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{122} + return fileDescriptor_724696e352c3df5f, []int{123} } func (m *Template) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3483,7 +3511,7 @@ var xxx_messageInfo_Template proto.InternalMessageInfo func (m *TemplateRef) Reset() { *m = TemplateRef{} } func (*TemplateRef) ProtoMessage() {} func (*TemplateRef) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{123} + return fileDescriptor_724696e352c3df5f, []int{124} } func (m *TemplateRef) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3511,7 +3539,7 @@ var xxx_messageInfo_TemplateRef proto.InternalMessageInfo func (m *TransformationStep) Reset() { *m = TransformationStep{} } func (*TransformationStep) ProtoMessage() {} func (*TransformationStep) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{124} + return fileDescriptor_724696e352c3df5f, []int{125} } func (m *TransformationStep) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3539,7 +3567,7 @@ var xxx_messageInfo_TransformationStep proto.InternalMessageInfo func (m *UserContainer) Reset() { *m = UserContainer{} } func (*UserContainer) ProtoMessage() {} func (*UserContainer) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{125} + return fileDescriptor_724696e352c3df5f, []int{126} } func (m *UserContainer) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3567,7 +3595,7 @@ var xxx_messageInfo_UserContainer proto.InternalMessageInfo func (m *ValueFrom) Reset() { *m = ValueFrom{} } func (*ValueFrom) ProtoMessage() {} func (*ValueFrom) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{126} + return fileDescriptor_724696e352c3df5f, []int{127} } func (m *ValueFrom) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3595,7 +3623,7 @@ var xxx_messageInfo_ValueFrom proto.InternalMessageInfo func (m *Version) Reset() { *m = Version{} } func (*Version) ProtoMessage() {} func (*Version) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{127} + return fileDescriptor_724696e352c3df5f, []int{128} } func (m *Version) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3623,7 +3651,7 @@ var xxx_messageInfo_Version proto.InternalMessageInfo func (m *VolumeClaimGC) Reset() { *m = VolumeClaimGC{} } func (*VolumeClaimGC) ProtoMessage() {} func (*VolumeClaimGC) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{128} + return fileDescriptor_724696e352c3df5f, []int{129} } func (m *VolumeClaimGC) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3651,7 +3679,7 @@ var xxx_messageInfo_VolumeClaimGC proto.InternalMessageInfo func (m *Workflow) Reset() { *m = Workflow{} } func (*Workflow) ProtoMessage() {} func (*Workflow) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{129} + return fileDescriptor_724696e352c3df5f, []int{130} } func (m *Workflow) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3679,7 +3707,7 @@ var xxx_messageInfo_Workflow proto.InternalMessageInfo func (m *WorkflowArtifactGCTask) Reset() { *m = WorkflowArtifactGCTask{} } func (*WorkflowArtifactGCTask) ProtoMessage() {} func (*WorkflowArtifactGCTask) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{130} + return fileDescriptor_724696e352c3df5f, []int{131} } func (m *WorkflowArtifactGCTask) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3707,7 +3735,7 @@ var xxx_messageInfo_WorkflowArtifactGCTask proto.InternalMessageInfo func (m *WorkflowArtifactGCTaskList) Reset() { *m = WorkflowArtifactGCTaskList{} } func (*WorkflowArtifactGCTaskList) ProtoMessage() {} func (*WorkflowArtifactGCTaskList) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{131} + return fileDescriptor_724696e352c3df5f, []int{132} } func (m *WorkflowArtifactGCTaskList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3735,7 +3763,7 @@ var xxx_messageInfo_WorkflowArtifactGCTaskList proto.InternalMessageInfo func (m *WorkflowEventBinding) Reset() { *m = WorkflowEventBinding{} } func (*WorkflowEventBinding) ProtoMessage() {} func (*WorkflowEventBinding) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{132} + return fileDescriptor_724696e352c3df5f, []int{133} } func (m *WorkflowEventBinding) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3763,7 +3791,7 @@ var xxx_messageInfo_WorkflowEventBinding proto.InternalMessageInfo func (m *WorkflowEventBindingList) Reset() { *m = WorkflowEventBindingList{} } func (*WorkflowEventBindingList) ProtoMessage() {} func (*WorkflowEventBindingList) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{133} + return fileDescriptor_724696e352c3df5f, []int{134} } func (m *WorkflowEventBindingList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3791,7 +3819,7 @@ var xxx_messageInfo_WorkflowEventBindingList proto.InternalMessageInfo func (m *WorkflowEventBindingSpec) Reset() { *m = WorkflowEventBindingSpec{} } func (*WorkflowEventBindingSpec) ProtoMessage() {} func (*WorkflowEventBindingSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{134} + return fileDescriptor_724696e352c3df5f, []int{135} } func (m *WorkflowEventBindingSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3819,7 +3847,7 @@ var xxx_messageInfo_WorkflowEventBindingSpec proto.InternalMessageInfo func (m *WorkflowLevelArtifactGC) Reset() { *m = WorkflowLevelArtifactGC{} } func (*WorkflowLevelArtifactGC) ProtoMessage() {} func (*WorkflowLevelArtifactGC) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{135} + return fileDescriptor_724696e352c3df5f, []int{136} } func (m *WorkflowLevelArtifactGC) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3847,7 +3875,7 @@ var xxx_messageInfo_WorkflowLevelArtifactGC proto.InternalMessageInfo func (m *WorkflowList) Reset() { *m = WorkflowList{} } func (*WorkflowList) ProtoMessage() {} func (*WorkflowList) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{136} + return fileDescriptor_724696e352c3df5f, []int{137} } func (m *WorkflowList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3875,7 +3903,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{137} + return fileDescriptor_724696e352c3df5f, []int{138} } func (m *WorkflowMetadata) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3903,7 +3931,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{138} + return fileDescriptor_724696e352c3df5f, []int{139} } func (m *WorkflowSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3931,7 +3959,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{139} + return fileDescriptor_724696e352c3df5f, []int{140} } func (m *WorkflowStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3959,7 +3987,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{140} + return fileDescriptor_724696e352c3df5f, []int{141} } func (m *WorkflowStep) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3987,7 +4015,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{141} + return fileDescriptor_724696e352c3df5f, []int{142} } func (m *WorkflowTaskResult) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4015,7 +4043,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{142} + return fileDescriptor_724696e352c3df5f, []int{143} } func (m *WorkflowTaskResultList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4043,7 +4071,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{143} + return fileDescriptor_724696e352c3df5f, []int{144} } func (m *WorkflowTaskSet) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4071,7 +4099,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{144} + return fileDescriptor_724696e352c3df5f, []int{145} } func (m *WorkflowTaskSetList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4099,7 +4127,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{145} + return fileDescriptor_724696e352c3df5f, []int{146} } func (m *WorkflowTaskSetSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4127,7 +4155,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{146} + return fileDescriptor_724696e352c3df5f, []int{147} } func (m *WorkflowTaskSetStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4155,7 +4183,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{147} + return fileDescriptor_724696e352c3df5f, []int{148} } func (m *WorkflowTemplate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4183,7 +4211,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{148} + return fileDescriptor_724696e352c3df5f, []int{149} } func (m *WorkflowTemplateList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4211,7 +4239,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{149} + return fileDescriptor_724696e352c3df5f, []int{150} } func (m *WorkflowTemplateRef) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4239,7 +4267,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{150} + return fileDescriptor_724696e352c3df5f, []int{151} } func (m *ZipStrategy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4379,6 +4407,7 @@ func init() { proto.RegisterType((*RawArtifact)(nil), "github.com.argoproj.argo_workflows.v3.pkg.apis.workflow.v1alpha1.RawArtifact") proto.RegisterType((*ResourceTemplate)(nil), "github.com.argoproj.argo_workflows.v3.pkg.apis.workflow.v1alpha1.ResourceTemplate") proto.RegisterType((*RetryAffinity)(nil), "github.com.argoproj.argo_workflows.v3.pkg.apis.workflow.v1alpha1.RetryAffinity") + proto.RegisterType((*RetryConfig)(nil), "github.com.argoproj.argo_workflows.v3.pkg.apis.workflow.v1alpha1.RetryConfig") proto.RegisterType((*RetryNodeAntiAffinity)(nil), "github.com.argoproj.argo_workflows.v3.pkg.apis.workflow.v1alpha1.RetryNodeAntiAffinity") proto.RegisterType((*RetryStrategy)(nil), "github.com.argoproj.argo_workflows.v3.pkg.apis.workflow.v1alpha1.RetryStrategy") proto.RegisterType((*S3Artifact)(nil), "github.com.argoproj.argo_workflows.v3.pkg.apis.workflow.v1alpha1.S3Artifact") @@ -4448,699 +4477,705 @@ func init() { } var fileDescriptor_724696e352c3df5f = []byte{ - // 11059 bytes of a gzipped FileDescriptorProto + // 11162 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, 0x05, 0xb0, 0xdf, 0x02, 0x38, 0x5c, 0xdf, 0x6b, 0x09, 0x92, 0x07, 0x7a, - 0x28, 0x32, 0xa4, 0x4d, 0xe1, 0xcc, 0xa3, 0x94, 0x30, 0x52, 0x22, 0x09, 0x8f, 0x03, 0xee, 0x88, - 0xc3, 0x01, 0xec, 0xc5, 0xf1, 0x4c, 0x8a, 0x96, 0x34, 0xd8, 0x6d, 0xec, 0x0e, 0xb1, 0x3b, 0xb3, - 0x9c, 0x99, 0xc5, 0x1d, 0xf8, 0x90, 0x14, 0x5a, 0xcf, 0x58, 0xb6, 0x62, 0x59, 0x92, 0x25, 0x25, - 0xa9, 0x52, 0x14, 0x29, 0x61, 0xc9, 0xae, 0xb8, 0xec, 0x5f, 0x29, 0xbb, 0xf2, 0x27, 0x95, 0x72, - 0x29, 0xe5, 0x54, 0x45, 0xae, 0x28, 0x25, 0xfd, 0xb0, 0xc1, 0xe8, 0x92, 0xe8, 0x47, 0x12, 0x55, - 0x25, 0xaa, 0xd8, 0xb1, 0x2f, 0x8f, 0x4a, 0xf5, 0x73, 0xba, 0x67, 0x67, 0x71, 0x8b, 0xbb, 0x06, - 0x4e, 0x65, 0xff, 0x02, 0xf6, 0xeb, 0xee, 0xef, 0xeb, 0xee, 0xe9, 0xfe, 0xfa, 0x7b, 0xf5, 0xd7, - 0xb0, 0xde, 0xf0, 0x93, 0x66, 0x77, 0x73, 0xb6, 0x16, 0xb6, 0xcf, 0x79, 0x51, 0x23, 0xec, 0x44, - 0xe1, 0xcb, 0xec, 0x9f, 0x77, 0x5e, 0x0f, 0xa3, 0xed, 0xad, 0x56, 0x78, 0x3d, 0x3e, 0xb7, 0xf3, - 0xf4, 0xb9, 0xce, 0x76, 0xe3, 0x9c, 0xd7, 0xf1, 0xe3, 0x73, 0x12, 0x7a, 0x6e, 0xe7, 0x29, 0xaf, - 0xd5, 0x69, 0x7a, 0x4f, 0x9d, 0x6b, 0x90, 0x80, 0x44, 0x5e, 0x42, 0xea, 0xb3, 0x9d, 0x28, 0x4c, - 0x42, 0xf4, 0x81, 0x14, 0xe3, 0xac, 0xc4, 0xc8, 0xfe, 0xf9, 0xb0, 0xc2, 0x38, 0xbb, 0xf3, 0xf4, - 0x6c, 0x67, 0xbb, 0x31, 0x4b, 0x31, 0xce, 0x4a, 0xe8, 0xac, 0xc4, 0x38, 0xfd, 0x4e, 0xad, 0x4f, - 0x8d, 0xb0, 0x11, 0x9e, 0x63, 0x88, 0x37, 0xbb, 0x5b, 0xec, 0x17, 0xfb, 0xc1, 0xfe, 0xe3, 0x04, - 0xa7, 0xdd, 0xed, 0x67, 0xe2, 0x59, 0x3f, 0xa4, 0xfd, 0x3b, 0x57, 0x0b, 0x23, 0x72, 0x6e, 0xa7, - 0xa7, 0x53, 0xd3, 0xef, 0xd0, 0xea, 0x74, 0xc2, 0x96, 0x5f, 0xdb, 0xcd, 0xab, 0xf5, 0xae, 0xb4, - 0x56, 0xdb, 0xab, 0x35, 0xfd, 0x80, 0x44, 0xbb, 0xe9, 0xd0, 0xdb, 0x24, 0xf1, 0xf2, 0x5a, 0x9d, - 0xeb, 0xd7, 0x2a, 0xea, 0x06, 0x89, 0xdf, 0x26, 0x3d, 0x0d, 0xfe, 0xfa, 0xed, 0x1a, 0xc4, 0xb5, - 0x26, 0x69, 0x7b, 0x3d, 0xed, 0x9e, 0xee, 0xd7, 0xae, 0x9b, 0xf8, 0xad, 0x73, 0x7e, 0x90, 0xc4, - 0x49, 0x94, 0x6d, 0xe4, 0x5e, 0x80, 0x91, 0xb9, 0x76, 0xd8, 0x0d, 0x12, 0xf4, 0x5e, 0x28, 0xee, - 0x78, 0xad, 0x2e, 0xa9, 0x38, 0x0f, 0x3b, 0x8f, 0x97, 0xe6, 0x1f, 0xfd, 0xce, 0xde, 0xcc, 0x7d, - 0x37, 0xf7, 0x66, 0x8a, 0xcf, 0x53, 0xe0, 0xad, 0xbd, 0x99, 0x93, 0x24, 0xa8, 0x85, 0x75, 0x3f, - 0x68, 0x9c, 0x7b, 0x39, 0x0e, 0x83, 0xd9, 0x2b, 0xdd, 0xf6, 0x26, 0x89, 0x30, 0x6f, 0xe3, 0xfe, - 0xbb, 0x02, 0x1c, 0x9b, 0x8b, 0x6a, 0x4d, 0x7f, 0x87, 0x54, 0x13, 0x8a, 0xbf, 0xb1, 0x8b, 0x9a, - 0x30, 0x94, 0x78, 0x11, 0x43, 0x57, 0x3e, 0xbf, 0x3a, 0x7b, 0xb7, 0xdf, 0x7d, 0x76, 0xc3, 0x8b, - 0x24, 0xee, 0xf9, 0xd1, 0x9b, 0x7b, 0x33, 0x43, 0x1b, 0x5e, 0x84, 0x29, 0x09, 0xd4, 0x82, 0xe1, - 0x20, 0x0c, 0x48, 0xa5, 0xc0, 0x48, 0x5d, 0xb9, 0x7b, 0x52, 0x57, 0xc2, 0x40, 0x8d, 0x63, 0x7e, - 0xec, 0xe6, 0xde, 0xcc, 0x30, 0x85, 0x60, 0x46, 0x85, 0x8e, 0xeb, 0x55, 0xbf, 0x53, 0x19, 0xb2, - 0x35, 0xae, 0x17, 0xfd, 0x8e, 0x39, 0xae, 0x17, 0xfd, 0x0e, 0xa6, 0x24, 0xdc, 0xcf, 0x16, 0xa0, - 0x34, 0x17, 0x35, 0xba, 0x6d, 0x12, 0x24, 0x31, 0xfa, 0x18, 0x40, 0xc7, 0x8b, 0xbc, 0x36, 0x49, - 0x48, 0x14, 0x57, 0x9c, 0x87, 0x87, 0x1e, 0x2f, 0x9f, 0x5f, 0xb9, 0x7b, 0xf2, 0xeb, 0x12, 0xe7, - 0x3c, 0x12, 0x9f, 0x1c, 0x14, 0x28, 0xc6, 0x1a, 0x49, 0xf4, 0x1a, 0x94, 0xbc, 0x28, 0xf1, 0xb7, - 0xbc, 0x5a, 0x12, 0x57, 0x0a, 0x8c, 0xfe, 0xb3, 0x77, 0x4f, 0x7f, 0x4e, 0xa0, 0x9c, 0x3f, 0x2e, - 0xc8, 0x97, 0x24, 0x24, 0xc6, 0x29, 0x3d, 0xf7, 0xf7, 0x86, 0xa1, 0x3c, 0x17, 0x25, 0xcb, 0x0b, - 0xd5, 0xc4, 0x4b, 0xba, 0x31, 0xfa, 0x43, 0x07, 0x4e, 0xc4, 0x7c, 0xda, 0x7c, 0x12, 0xaf, 0x47, - 0x61, 0x8d, 0xc4, 0x31, 0xa9, 0x8b, 0x79, 0xd9, 0xb2, 0xd2, 0x2f, 0x49, 0x6c, 0xb6, 0xda, 0x4b, - 0xe8, 0x42, 0x90, 0x44, 0xbb, 0xf3, 0x4f, 0x89, 0x3e, 0x9f, 0xc8, 0xa9, 0xf1, 0xe6, 0xdb, 0x33, - 0x48, 0x0e, 0x85, 0x62, 0xe2, 0x9f, 0x18, 0xe7, 0xf5, 0x1a, 0x7d, 0xd5, 0x81, 0xf1, 0x4e, 0x58, - 0x8f, 0x31, 0xa9, 0x85, 0xdd, 0x0e, 0xa9, 0x8b, 0xe9, 0xfd, 0xb0, 0xdd, 0x61, 0xac, 0x6b, 0x14, - 0x78, 0xff, 0x4f, 0x8a, 0xfe, 0x8f, 0xeb, 0x45, 0xd8, 0xe8, 0x0a, 0x7a, 0x06, 0xc6, 0x83, 0x30, - 0xa9, 0x76, 0x48, 0xcd, 0xdf, 0xf2, 0x49, 0x9d, 0x2d, 0xfc, 0xb1, 0xb4, 0xe5, 0x15, 0xad, 0x0c, - 0x1b, 0x35, 0xa7, 0x97, 0xa0, 0xd2, 0x6f, 0xe6, 0xd0, 0x14, 0x0c, 0x6d, 0x93, 0x5d, 0xce, 0x6c, - 0x30, 0xfd, 0x17, 0x9d, 0x94, 0x0c, 0x88, 0x6e, 0xe3, 0x31, 0xc1, 0x59, 0xde, 0x53, 0x78, 0xc6, - 0x99, 0x7e, 0x3f, 0x1c, 0xef, 0xe9, 0xfa, 0x41, 0x10, 0xb8, 0xdf, 0x1d, 0x81, 0x31, 0xf9, 0x29, - 0xd0, 0xc3, 0x30, 0x1c, 0x78, 0x6d, 0xc9, 0xe7, 0xc6, 0xc5, 0x38, 0x86, 0xaf, 0x78, 0x6d, 0xba, - 0xc3, 0xbd, 0x36, 0xa1, 0x35, 0x3a, 0x5e, 0xd2, 0x64, 0x78, 0xb4, 0x1a, 0xeb, 0x5e, 0xd2, 0xc4, - 0xac, 0x04, 0x3d, 0x08, 0xc3, 0xed, 0xb0, 0x4e, 0xd8, 0x5c, 0x14, 0x39, 0x87, 0x58, 0x0d, 0xeb, - 0x04, 0x33, 0x28, 0x6d, 0xbf, 0x15, 0x85, 0xed, 0xca, 0xb0, 0xd9, 0x7e, 0x29, 0x0a, 0xdb, 0x98, - 0x95, 0xa0, 0xaf, 0x38, 0x30, 0x25, 0xd7, 0xf6, 0xe5, 0xb0, 0xe6, 0x25, 0x7e, 0x18, 0x54, 0x8a, - 0x8c, 0xa3, 0x60, 0x7b, 0x5b, 0x4a, 0x62, 0x9e, 0xaf, 0x88, 0x2e, 0x4c, 0x65, 0x4b, 0x70, 0x4f, - 0x2f, 0xd0, 0x79, 0x80, 0x46, 0x2b, 0xdc, 0xf4, 0x5a, 0x74, 0x42, 0x2a, 0x23, 0x6c, 0x08, 0x8a, - 0x33, 0x2c, 0xab, 0x12, 0xac, 0xd5, 0x42, 0x37, 0x60, 0xd4, 0xe3, 0xdc, 0xbf, 0x32, 0xca, 0x06, - 0xf1, 0x9c, 0x8d, 0x41, 0x18, 0xc7, 0xc9, 0x7c, 0xf9, 0xe6, 0xde, 0xcc, 0xa8, 0x00, 0x62, 0x49, - 0x0e, 0x3d, 0x09, 0x63, 0x61, 0x87, 0xf6, 0xdb, 0x6b, 0x55, 0xc6, 0xd8, 0xc2, 0x9c, 0x12, 0x7d, - 0x1d, 0x5b, 0x13, 0x70, 0xac, 0x6a, 0xa0, 0x27, 0x60, 0x34, 0xee, 0x6e, 0xd2, 0xef, 0x58, 0x29, - 0xb1, 0x81, 0x1d, 0x13, 0x95, 0x47, 0xab, 0x1c, 0x8c, 0x65, 0x39, 0x7a, 0x37, 0x94, 0x23, 0x52, - 0xeb, 0x46, 0x31, 0xa1, 0x1f, 0xb6, 0x02, 0x0c, 0xf7, 0x09, 0x51, 0xbd, 0x8c, 0xd3, 0x22, 0xac, - 0xd7, 0x43, 0xef, 0x83, 0x49, 0xfa, 0x81, 0x2f, 0xdc, 0xe8, 0x44, 0x24, 0x8e, 0xe9, 0x57, 0x2d, - 0x33, 0x42, 0xa7, 0x45, 0xcb, 0xc9, 0x25, 0xa3, 0x14, 0x67, 0x6a, 0xa3, 0xd7, 0x01, 0x3c, 0xc5, - 0x33, 0x2a, 0xe3, 0x6c, 0x32, 0x2f, 0xdb, 0x5b, 0x11, 0xcb, 0x0b, 0xf3, 0x93, 0xf4, 0x3b, 0xa6, - 0xbf, 0xb1, 0x46, 0x8f, 0xce, 0x4f, 0x9d, 0xb4, 0x48, 0x42, 0xea, 0x95, 0x09, 0x36, 0x60, 0x35, - 0x3f, 0x8b, 0x1c, 0x8c, 0x65, 0xb9, 0xfb, 0xf7, 0x0b, 0xa0, 0x61, 0x41, 0xf3, 0x30, 0x26, 0xf8, - 0x9a, 0xd8, 0x92, 0xf3, 0x8f, 0xc9, 0xef, 0x20, 0xbf, 0xe0, 0xad, 0xbd, 0x5c, 0x7e, 0xa8, 0xda, - 0xa1, 0x37, 0xa0, 0xdc, 0x09, 0xeb, 0xab, 0x24, 0xf1, 0xea, 0x5e, 0xe2, 0x89, 0xd3, 0xdc, 0xc2, - 0x09, 0x23, 0x31, 0xce, 0x1f, 0xa3, 0x9f, 0x6e, 0x3d, 0x25, 0x81, 0x75, 0x7a, 0xe8, 0x59, 0x40, - 0x31, 0x89, 0x76, 0xfc, 0x1a, 0x99, 0xab, 0xd5, 0xa8, 0x48, 0xc4, 0x36, 0xc0, 0x10, 0x1b, 0xcc, - 0xb4, 0x18, 0x0c, 0xaa, 0xf6, 0xd4, 0xc0, 0x39, 0xad, 0xdc, 0xef, 0x15, 0x60, 0x52, 0x1b, 0x6b, - 0x87, 0xd4, 0xd0, 0x5b, 0x0e, 0x1c, 0x53, 0xc7, 0xd9, 0xfc, 0xee, 0x15, 0xba, 0xaa, 0xf8, 0x61, + 0x79, 0x18, 0x67, 0x81, 0xc5, 0xe3, 0x5b, 0x00, 0x87, 0xeb, 0x7b, 0x2d, 0x71, 0xe4, 0x81, 0x1e, + 0x8a, 0x0c, 0x69, 0x51, 0x38, 0xf3, 0x28, 0x25, 0x8c, 0x94, 0x48, 0xc2, 0xe3, 0x80, 0x3b, 0x02, + 0x38, 0x80, 0xbd, 0x38, 0x9e, 0x49, 0xd1, 0x92, 0x06, 0xbb, 0x8d, 0xdd, 0x21, 0x76, 0x67, 0x96, + 0x33, 0xb3, 0xb8, 0x03, 0x1f, 0x92, 0x42, 0xeb, 0x19, 0xcb, 0x56, 0x2c, 0x4b, 0xb2, 0xa4, 0x24, + 0x55, 0x8a, 0x22, 0x25, 0x2c, 0xd9, 0x15, 0x97, 0xfd, 0x2b, 0x65, 0x57, 0xfe, 0xa4, 0x52, 0x8e, + 0x52, 0x4e, 0x55, 0xe4, 0x8a, 0x52, 0xd2, 0x0f, 0x19, 0x8c, 0x2e, 0x89, 0x7e, 0x24, 0xa5, 0xaa, + 0x44, 0x15, 0x3b, 0xf6, 0xe5, 0x51, 0xa9, 0x7e, 0x4e, 0xf7, 0xec, 0x2c, 0x6e, 0x71, 0xd7, 0xc0, + 0xb1, 0xec, 0x5f, 0xc0, 0x7e, 0xdd, 0xfd, 0x7d, 0xdd, 0x3d, 0xdd, 0x5f, 0x7f, 0xaf, 0xfe, 0x1a, + 0xd6, 0xeb, 0x7e, 0xd2, 0xe8, 0x6c, 0xce, 0x54, 0xc3, 0xd6, 0x79, 0x2f, 0xaa, 0x87, 0xed, 0x28, + 0x7c, 0x89, 0xfd, 0xf3, 0xae, 0xeb, 0x61, 0xb4, 0xbd, 0xd5, 0x0c, 0xaf, 0xc7, 0xe7, 0x77, 0x9e, + 0x3a, 0xdf, 0xde, 0xae, 0x9f, 0xf7, 0xda, 0x7e, 0x7c, 0x5e, 0x42, 0xcf, 0xef, 0x3c, 0xe9, 0x35, + 0xdb, 0x0d, 0xef, 0xc9, 0xf3, 0x75, 0x12, 0x90, 0xc8, 0x4b, 0x48, 0x6d, 0xa6, 0x1d, 0x85, 0x49, + 0x88, 0x3e, 0x98, 0x62, 0x9c, 0x91, 0x18, 0xd9, 0x3f, 0x1f, 0x51, 0x18, 0x67, 0x76, 0x9e, 0x9a, + 0x69, 0x6f, 0xd7, 0x67, 0x28, 0xc6, 0x19, 0x09, 0x9d, 0x91, 0x18, 0xa7, 0xde, 0xa5, 0xf5, 0xa9, + 0x1e, 0xd6, 0xc3, 0xf3, 0x0c, 0xf1, 0x66, 0x67, 0x8b, 0xfd, 0x62, 0x3f, 0xd8, 0x7f, 0x9c, 0xe0, + 0x94, 0xbb, 0xfd, 0x74, 0x3c, 0xe3, 0x87, 0xb4, 0x7f, 0xe7, 0xab, 0x61, 0x44, 0xce, 0xef, 0x74, + 0x75, 0x6a, 0xea, 0x1d, 0x5a, 0x9d, 0x76, 0xd8, 0xf4, 0xab, 0xbb, 0x79, 0xb5, 0xde, 0x9d, 0xd6, + 0x6a, 0x79, 0xd5, 0x86, 0x1f, 0x90, 0x68, 0x37, 0x1d, 0x7a, 0x8b, 0x24, 0x5e, 0x5e, 0xab, 0xf3, + 0xbd, 0x5a, 0x45, 0x9d, 0x20, 0xf1, 0x5b, 0xa4, 0xab, 0xc1, 0x5f, 0xbf, 0x5d, 0x83, 0xb8, 0xda, + 0x20, 0x2d, 0xaf, 0xab, 0xdd, 0x53, 0xbd, 0xda, 0x75, 0x12, 0xbf, 0x79, 0xde, 0x0f, 0x92, 0x38, + 0x89, 0xb2, 0x8d, 0xdc, 0x8b, 0x30, 0x34, 0xdb, 0x0a, 0x3b, 0x41, 0x82, 0xde, 0x07, 0xc5, 0x1d, + 0xaf, 0xd9, 0x21, 0x65, 0xe7, 0x21, 0xe7, 0xb1, 0xd1, 0xb9, 0x47, 0xbe, 0xbb, 0x37, 0x7d, 0xdf, + 0xcd, 0xbd, 0xe9, 0xe2, 0x73, 0x14, 0x78, 0x6b, 0x6f, 0xfa, 0x24, 0x09, 0xaa, 0x61, 0xcd, 0x0f, + 0xea, 0xe7, 0x5f, 0x8a, 0xc3, 0x60, 0xe6, 0x4a, 0xa7, 0xb5, 0x49, 0x22, 0xcc, 0xdb, 0xb8, 0xff, + 0xbe, 0x00, 0xc7, 0x66, 0xa3, 0x6a, 0xc3, 0xdf, 0x21, 0x95, 0x84, 0xe2, 0xaf, 0xef, 0xa2, 0x06, + 0x0c, 0x24, 0x5e, 0xc4, 0xd0, 0x95, 0x2e, 0xac, 0xce, 0xdc, 0xed, 0x77, 0x9f, 0xd9, 0xf0, 0x22, + 0x89, 0x7b, 0x6e, 0xf8, 0xe6, 0xde, 0xf4, 0xc0, 0x86, 0x17, 0x61, 0x4a, 0x02, 0x35, 0x61, 0x30, + 0x08, 0x03, 0x52, 0x2e, 0x30, 0x52, 0x57, 0xee, 0x9e, 0xd4, 0x95, 0x30, 0x50, 0xe3, 0x98, 0x1b, + 0xb9, 0xb9, 0x37, 0x3d, 0x48, 0x21, 0x98, 0x51, 0xa1, 0xe3, 0x7a, 0xc5, 0x6f, 0x97, 0x07, 0x6c, + 0x8d, 0xeb, 0x05, 0xbf, 0x6d, 0x8e, 0xeb, 0x05, 0xbf, 0x8d, 0x29, 0x09, 0xf7, 0x73, 0x05, 0x18, + 0x9d, 0x8d, 0xea, 0x9d, 0x16, 0x09, 0x92, 0x18, 0x7d, 0x1c, 0xa0, 0xed, 0x45, 0x5e, 0x8b, 0x24, + 0x24, 0x8a, 0xcb, 0xce, 0x43, 0x03, 0x8f, 0x95, 0x2e, 0x2c, 0xdf, 0x3d, 0xf9, 0x75, 0x89, 0x73, + 0x0e, 0x89, 0x4f, 0x0e, 0x0a, 0x14, 0x63, 0x8d, 0x24, 0x7a, 0x15, 0x46, 0xbd, 0x28, 0xf1, 0xb7, + 0xbc, 0x6a, 0x12, 0x97, 0x0b, 0x8c, 0xfe, 0x33, 0x77, 0x4f, 0x7f, 0x56, 0xa0, 0x9c, 0x3b, 0x2e, + 0xc8, 0x8f, 0x4a, 0x48, 0x8c, 0x53, 0x7a, 0xee, 0xef, 0x0f, 0x42, 0x69, 0x36, 0x4a, 0x96, 0xe6, + 0x2b, 0x89, 0x97, 0x74, 0x62, 0xf4, 0x47, 0x0e, 0x9c, 0x88, 0xf9, 0xb4, 0xf9, 0x24, 0x5e, 0x8f, + 0xc2, 0x2a, 0x89, 0x63, 0x52, 0x13, 0xf3, 0xb2, 0x65, 0xa5, 0x5f, 0x92, 0xd8, 0x4c, 0xa5, 0x9b, + 0xd0, 0xc5, 0x20, 0x89, 0x76, 0xe7, 0x9e, 0x14, 0x7d, 0x3e, 0x91, 0x53, 0xe3, 0x8d, 0xb7, 0xa6, + 0x91, 0x1c, 0x0a, 0xc5, 0xc4, 0x3f, 0x31, 0xce, 0xeb, 0x35, 0xfa, 0x9a, 0x03, 0x63, 0xed, 0xb0, + 0x16, 0x63, 0x52, 0x0d, 0x3b, 0x6d, 0x52, 0x13, 0xd3, 0xfb, 0x11, 0xbb, 0xc3, 0x58, 0xd7, 0x28, + 0xf0, 0xfe, 0x9f, 0x14, 0xfd, 0x1f, 0xd3, 0x8b, 0xb0, 0xd1, 0x15, 0xf4, 0x34, 0x8c, 0x05, 0x61, + 0x52, 0x69, 0x93, 0xaa, 0xbf, 0xe5, 0x93, 0x1a, 0x5b, 0xf8, 0x23, 0x69, 0xcb, 0x2b, 0x5a, 0x19, + 0x36, 0x6a, 0x4e, 0x2d, 0x42, 0xb9, 0xd7, 0xcc, 0xa1, 0x49, 0x18, 0xd8, 0x26, 0xbb, 0x9c, 0xd9, + 0x60, 0xfa, 0x2f, 0x3a, 0x29, 0x19, 0x10, 0xdd, 0xc6, 0x23, 0x82, 0xb3, 0xbc, 0xb7, 0xf0, 0xb4, + 0x33, 0xf5, 0x01, 0x38, 0xde, 0xd5, 0xf5, 0x83, 0x20, 0x70, 0xbf, 0x37, 0x04, 0x23, 0xf2, 0x53, + 0xa0, 0x87, 0x60, 0x30, 0xf0, 0x5a, 0x92, 0xcf, 0x8d, 0x89, 0x71, 0x0c, 0x5e, 0xf1, 0x5a, 0x74, + 0x87, 0x7b, 0x2d, 0x42, 0x6b, 0xb4, 0xbd, 0xa4, 0xc1, 0xf0, 0x68, 0x35, 0xd6, 0xbd, 0xa4, 0x81, + 0x59, 0x09, 0x7a, 0x00, 0x06, 0x5b, 0x61, 0x8d, 0xb0, 0xb9, 0x28, 0x72, 0x0e, 0xb1, 0x1a, 0xd6, + 0x08, 0x66, 0x50, 0xda, 0x7e, 0x2b, 0x0a, 0x5b, 0xe5, 0x41, 0xb3, 0xfd, 0x62, 0x14, 0xb6, 0x30, + 0x2b, 0x41, 0x5f, 0x75, 0x60, 0x52, 0xae, 0xed, 0x95, 0xb0, 0xea, 0x25, 0x7e, 0x18, 0x94, 0x8b, + 0x8c, 0xa3, 0x60, 0x7b, 0x5b, 0x4a, 0x62, 0x9e, 0x2b, 0x8b, 0x2e, 0x4c, 0x66, 0x4b, 0x70, 0x57, + 0x2f, 0xd0, 0x05, 0x80, 0x7a, 0x33, 0xdc, 0xf4, 0x9a, 0x74, 0x42, 0xca, 0x43, 0x6c, 0x08, 0x8a, + 0x33, 0x2c, 0xa9, 0x12, 0xac, 0xd5, 0x42, 0x37, 0x60, 0xd8, 0xe3, 0xdc, 0xbf, 0x3c, 0xcc, 0x06, + 0xf1, 0xac, 0x8d, 0x41, 0x18, 0xc7, 0xc9, 0x5c, 0xe9, 0xe6, 0xde, 0xf4, 0xb0, 0x00, 0x62, 0x49, + 0x0e, 0x3d, 0x01, 0x23, 0x61, 0x9b, 0xf6, 0xdb, 0x6b, 0x96, 0x47, 0xd8, 0xc2, 0x9c, 0x14, 0x7d, + 0x1d, 0x59, 0x13, 0x70, 0xac, 0x6a, 0xa0, 0xc7, 0x61, 0x38, 0xee, 0x6c, 0xd2, 0xef, 0x58, 0x1e, + 0x65, 0x03, 0x3b, 0x26, 0x2a, 0x0f, 0x57, 0x38, 0x18, 0xcb, 0x72, 0xf4, 0x1e, 0x28, 0x45, 0xa4, + 0xda, 0x89, 0x62, 0x42, 0x3f, 0x6c, 0x19, 0x18, 0xee, 0x13, 0xa2, 0x7a, 0x09, 0xa7, 0x45, 0x58, + 0xaf, 0x87, 0xde, 0x0f, 0x13, 0xf4, 0x03, 0x5f, 0xbc, 0xd1, 0x8e, 0x48, 0x1c, 0xd3, 0xaf, 0x5a, + 0x62, 0x84, 0x4e, 0x8b, 0x96, 0x13, 0x8b, 0x46, 0x29, 0xce, 0xd4, 0x46, 0xaf, 0x01, 0x78, 0x8a, + 0x67, 0x94, 0xc7, 0xd8, 0x64, 0xae, 0xd8, 0x5b, 0x11, 0x4b, 0xf3, 0x73, 0x13, 0xf4, 0x3b, 0xa6, + 0xbf, 0xb1, 0x46, 0x8f, 0xce, 0x4f, 0x8d, 0x34, 0x49, 0x42, 0x6a, 0xe5, 0x71, 0x36, 0x60, 0x35, + 0x3f, 0x0b, 0x1c, 0x8c, 0x65, 0xb9, 0xfb, 0xf7, 0x0b, 0xa0, 0x61, 0x41, 0x73, 0x30, 0x22, 0xf8, + 0x9a, 0xd8, 0x92, 0x73, 0x8f, 0xca, 0xef, 0x20, 0xbf, 0xe0, 0xad, 0xbd, 0x5c, 0x7e, 0xa8, 0xda, + 0xa1, 0xd7, 0xa1, 0xd4, 0x0e, 0x6b, 0xab, 0x24, 0xf1, 0x6a, 0x5e, 0xe2, 0x89, 0xd3, 0xdc, 0xc2, + 0x09, 0x23, 0x31, 0xce, 0x1d, 0xa3, 0x9f, 0x6e, 0x3d, 0x25, 0x81, 0x75, 0x7a, 0xe8, 0x19, 0x40, + 0x31, 0x89, 0x76, 0xfc, 0x2a, 0x99, 0xad, 0x56, 0xa9, 0x48, 0xc4, 0x36, 0xc0, 0x00, 0x1b, 0xcc, + 0x94, 0x18, 0x0c, 0xaa, 0x74, 0xd5, 0xc0, 0x39, 0xad, 0xdc, 0xef, 0x17, 0x60, 0x42, 0x1b, 0x6b, + 0x9b, 0x54, 0xd1, 0x9b, 0x0e, 0x1c, 0x53, 0xc7, 0xd9, 0xdc, 0xee, 0x15, 0xba, 0xaa, 0xf8, 0x61, 0x45, 0x6c, 0x7e, 0x5f, 0x4a, 0x4b, 0xfd, 0x14, 0x74, 0x38, 0xaf, 0x3f, 0x23, 0xc6, 0x70, 0x2c, - 0x53, 0x8a, 0xb3, 0xdd, 0x9a, 0xfe, 0xb2, 0x03, 0x27, 0xf3, 0x50, 0xe4, 0xf0, 0xdc, 0xa6, 0xce, - 0x73, 0xad, 0x32, 0x2f, 0x4a, 0x95, 0x0e, 0x46, 0xe7, 0xe3, 0xff, 0xaf, 0x00, 0x53, 0xfa, 0x12, - 0x62, 0x92, 0xc0, 0xbf, 0x74, 0xe0, 0x94, 0x1c, 0x01, 0x26, 0x71, 0xb7, 0x95, 0x99, 0xde, 0xb6, - 0xd5, 0xe9, 0xe5, 0x27, 0xe9, 0x5c, 0x1e, 0x3d, 0x3e, 0xcd, 0x0f, 0x89, 0x69, 0x3e, 0x95, 0x5b, - 0x07, 0xe7, 0x77, 0x75, 0xfa, 0x9b, 0x0e, 0x4c, 0xf7, 0x47, 0x9a, 0x33, 0xf1, 0x1d, 0x73, 0xe2, - 0x5f, 0xb4, 0x37, 0x48, 0x4e, 0x9e, 0x4d, 0x3f, 0x1b, 0xac, 0xfe, 0x01, 0x7e, 0x6b, 0x0c, 0x7a, - 0xce, 0x10, 0xf4, 0x14, 0x94, 0x05, 0x3b, 0xbe, 0x1c, 0x36, 0x62, 0xd6, 0xc9, 0x31, 0xbe, 0xd7, - 0xe6, 0x52, 0x30, 0xd6, 0xeb, 0xa0, 0x3a, 0x14, 0xe2, 0xa7, 0x45, 0xd7, 0x2d, 0xb0, 0xb7, 0xea, - 0xd3, 0x4a, 0x8a, 0x1c, 0xb9, 0xb9, 0x37, 0x53, 0xa8, 0x3e, 0x8d, 0x0b, 0xf1, 0xd3, 0x54, 0x52, - 0x6f, 0xf8, 0x89, 0x3d, 0x49, 0x7d, 0xd9, 0x4f, 0x14, 0x1d, 0x26, 0xa9, 0x2f, 0xfb, 0x09, 0xa6, - 0x24, 0xa8, 0x06, 0xd2, 0x4c, 0x92, 0x0e, 0x3b, 0xf1, 0xad, 0x68, 0x20, 0x17, 0x37, 0x36, 0xd6, - 0x15, 0x2d, 0x26, 0x5f, 0x50, 0x08, 0x66, 0x54, 0xd0, 0x67, 0x1c, 0x3a, 0xe3, 0xbc, 0x30, 0x8c, - 0x76, 0x85, 0xe0, 0x70, 0xd5, 0xde, 0x12, 0x08, 0xa3, 0x5d, 0x45, 0x5c, 0x7c, 0x48, 0x55, 0x80, - 0x75, 0xd2, 0x6c, 0xe0, 0xf5, 0xad, 0x98, 0xc9, 0x09, 0x76, 0x06, 0xbe, 0xb8, 0x54, 0xcd, 0x0c, - 0x7c, 0x71, 0xa9, 0x8a, 0x19, 0x15, 0xfa, 0x41, 0x23, 0xef, 0xba, 0x90, 0x31, 0x2c, 0x7c, 0x50, - 0xec, 0x5d, 0x37, 0x3f, 0x28, 0xf6, 0xae, 0x63, 0x4a, 0x82, 0x52, 0x0a, 0xe3, 0x98, 0x89, 0x14, - 0x56, 0x28, 0xad, 0x55, 0xab, 0x26, 0xa5, 0xb5, 0x6a, 0x15, 0x53, 0x12, 0x6c, 0x91, 0xd6, 0x62, - 0x26, 0x8f, 0xd8, 0x59, 0xa4, 0x0b, 0x19, 0x4a, 0xcb, 0x0b, 0x55, 0x4c, 0x49, 0x50, 0x96, 0xe1, - 0xbd, 0xda, 0x8d, 0xb8, 0x30, 0x53, 0x3e, 0xbf, 0x66, 0x61, 0xbd, 0x50, 0x74, 0x8a, 0x5a, 0xe9, - 0xe6, 0xde, 0x4c, 0x91, 0x81, 0x30, 0x27, 0xe4, 0xfe, 0xc1, 0x50, 0xca, 0x2e, 0x24, 0x3f, 0x47, - 0xbf, 0xc6, 0x0e, 0x42, 0xc1, 0x0b, 0x84, 0xe8, 0xeb, 0x1c, 0x9a, 0xe8, 0x7b, 0x82, 0x9f, 0x78, - 0x06, 0x39, 0x9c, 0xa5, 0x8f, 0xbe, 0xe0, 0xf4, 0xea, 0xb6, 0x9e, 0xfd, 0xb3, 0x2c, 0x3d, 0x98, - 0xf9, 0x59, 0xb1, 0xaf, 0xca, 0x3b, 0xfd, 0x19, 0x27, 0x15, 0x22, 0xe2, 0x7e, 0xe7, 0xc0, 0x47, - 0xcc, 0x73, 0xc0, 0xa2, 0x42, 0xae, 0xf3, 0xfd, 0xcf, 0x3a, 0x30, 0x21, 0xe1, 0x54, 0x3c, 0x8e, - 0xd1, 0x0d, 0x18, 0x93, 0x3d, 0x15, 0x5f, 0xcf, 0xa6, 0x2d, 0x40, 0x09, 0xf1, 0xaa, 0x33, 0x8a, - 0x9a, 0xfb, 0xd6, 0x08, 0xa0, 0xf4, 0xac, 0xea, 0x84, 0xb1, 0xcf, 0x38, 0xd1, 0x1d, 0x9c, 0x42, - 0x81, 0x76, 0x0a, 0x3d, 0x6f, 0xf3, 0x14, 0x4a, 0xbb, 0x65, 0x9c, 0x47, 0x5f, 0xc8, 0xf0, 0x6d, - 0x7e, 0x30, 0x7d, 0xf8, 0x50, 0xf8, 0xb6, 0xd6, 0x85, 0xfd, 0x39, 0xf8, 0x8e, 0xe0, 0xe0, 0xfc, - 0xe8, 0xfa, 0x05, 0xbb, 0x1c, 0x5c, 0xeb, 0x45, 0x96, 0x97, 0x47, 0x9c, 0xc3, 0xf2, 0xb3, 0xeb, - 0x9a, 0x55, 0x0e, 0xab, 0x51, 0x35, 0x79, 0x6d, 0xc4, 0x79, 0xed, 0x88, 0x2d, 0x9a, 0x1a, 0xaf, - 0xcd, 0xd2, 0x54, 0x5c, 0xf7, 0x55, 0xc9, 0x75, 0xf9, 0xa9, 0xf5, 0x82, 0x65, 0xae, 0xab, 0xd1, - 0xed, 0xe5, 0xbf, 0xaf, 0xc0, 0xa9, 0xde, 0x7a, 0x98, 0x6c, 0xa1, 0x73, 0x50, 0xaa, 0x85, 0xc1, - 0x96, 0xdf, 0x58, 0xf5, 0x3a, 0x42, 0x5f, 0x53, 0xbc, 0x68, 0x41, 0x16, 0xe0, 0xb4, 0x0e, 0x7a, - 0x88, 0x33, 0x1e, 0x6e, 0x11, 0x29, 0x8b, 0xaa, 0x43, 0x2b, 0x64, 0x97, 0x71, 0xa1, 0xf7, 0x8c, - 0x7d, 0xe5, 0xeb, 0x33, 0xf7, 0x7d, 0xfc, 0x8f, 0x1f, 0xbe, 0xcf, 0xfd, 0xa3, 0x21, 0x78, 0x20, - 0x97, 0xa6, 0x90, 0xd6, 0x7f, 0xcb, 0x90, 0xd6, 0xb5, 0x72, 0xc1, 0x45, 0xae, 0xd9, 0x14, 0x64, - 0x35, 0xf4, 0x79, 0x72, 0xb9, 0x56, 0x8c, 0xf3, 0x3b, 0x45, 0x27, 0x2a, 0xf0, 0xda, 0x24, 0xee, - 0x78, 0x35, 0x22, 0x46, 0xaf, 0x26, 0xea, 0x8a, 0x2c, 0xc0, 0x69, 0x1d, 0xae, 0x42, 0x6f, 0x79, - 0xdd, 0x56, 0x22, 0x0c, 0x65, 0x9a, 0x0a, 0xcd, 0xc0, 0x58, 0x96, 0xa3, 0x7f, 0xe0, 0x00, 0xea, - 0xa5, 0x2a, 0x36, 0xe2, 0xc6, 0x61, 0xcc, 0xc3, 0xfc, 0xe9, 0x9b, 0x9a, 0x12, 0xae, 0x8d, 0x34, - 0xa7, 0x1f, 0xda, 0x37, 0xfd, 0x68, 0x7a, 0x0e, 0x71, 0xe5, 0x60, 0x00, 0x1b, 0x1a, 0x33, 0xb5, - 0xd4, 0x6a, 0x24, 0x8e, 0xb9, 0x39, 0x4e, 0x37, 0xb5, 0x30, 0x30, 0x96, 0xe5, 0x68, 0x06, 0x8a, - 0x24, 0x8a, 0xc2, 0x48, 0xe8, 0xda, 0x6c, 0x19, 0x5f, 0xa0, 0x00, 0xcc, 0xe1, 0xee, 0x8f, 0x0a, - 0x50, 0xe9, 0xa7, 0x9d, 0xa0, 0xdf, 0xd5, 0xf4, 0x6a, 0xa1, 0x39, 0x09, 0xc5, 0x2f, 0x3c, 0x3c, - 0x9d, 0x28, 0xab, 0x00, 0xf6, 0xd1, 0xb0, 0x45, 0x29, 0xce, 0x76, 0x70, 0xfa, 0x8b, 0x9a, 0x86, - 0xad, 0xa3, 0xc8, 0x39, 0xe0, 0xb7, 0xcc, 0x03, 0x7e, 0xdd, 0xf6, 0xa0, 0xf4, 0x63, 0xfe, 0x4f, - 0x8a, 0x70, 0x42, 0x96, 0x56, 0x09, 0x3d, 0x2a, 0x9f, 0xeb, 0x92, 0x68, 0x17, 0x7d, 0xdf, 0x81, - 0x93, 0x5e, 0xd6, 0x74, 0xe3, 0x93, 0x43, 0x98, 0x68, 0x8d, 0xea, 0xec, 0x5c, 0x0e, 0x45, 0x3e, - 0xd1, 0xe7, 0xc5, 0x44, 0x9f, 0xcc, 0xab, 0xd2, 0xc7, 0xee, 0x9e, 0x3b, 0x00, 0xf4, 0x0c, 0x8c, - 0x4b, 0x38, 0x33, 0xf7, 0xf0, 0x2d, 0xae, 0x8c, 0xdb, 0x73, 0x5a, 0x19, 0x36, 0x6a, 0xd2, 0x96, - 0x09, 0x69, 0x77, 0x5a, 0x5e, 0x42, 0x34, 0x43, 0x91, 0x6a, 0xb9, 0xa1, 0x95, 0x61, 0xa3, 0x26, - 0x7a, 0x0c, 0x46, 0x82, 0xb0, 0x4e, 0x2e, 0xd5, 0x85, 0x81, 0x78, 0x52, 0xb4, 0x19, 0xb9, 0xc2, - 0xa0, 0x58, 0x94, 0xa2, 0x47, 0x53, 0x6b, 0x5c, 0x91, 0x6d, 0xa1, 0x72, 0x9e, 0x25, 0x0e, 0xfd, - 0x23, 0x07, 0x4a, 0xb4, 0xc5, 0xc6, 0x6e, 0x87, 0xd0, 0xb3, 0x8d, 0x7e, 0x91, 0xfa, 0xe1, 0x7c, - 0x91, 0x2b, 0x92, 0x8c, 0x69, 0xea, 0x28, 0x29, 0xf8, 0x9b, 0x6f, 0xcf, 0x8c, 0xc9, 0x1f, 0x38, - 0xed, 0xd5, 0xf4, 0x32, 0xdc, 0xdf, 0xf7, 0x6b, 0x1e, 0xc8, 0x15, 0xf0, 0xb7, 0x60, 0xd2, 0xec, - 0xc4, 0x81, 0xfc, 0x00, 0xff, 0x5c, 0xdb, 0x76, 0x7c, 0x5c, 0x82, 0x9f, 0xdd, 0x33, 0x69, 0x56, - 0x2d, 0x86, 0x45, 0xb1, 0xf4, 0xcc, 0xc5, 0xb0, 0x28, 0x16, 0xc3, 0xa2, 0xfb, 0x87, 0x4e, 0xba, - 0x35, 0x35, 0x31, 0x8f, 0x1e, 0xcc, 0xdd, 0xa8, 0x25, 0x18, 0xb1, 0x3a, 0x98, 0xaf, 0xe2, 0xcb, - 0x98, 0xc2, 0xd1, 0x17, 0x35, 0xee, 0x48, 0x9b, 0x75, 0x85, 0x5b, 0xc3, 0x92, 0x89, 0xde, 0x40, - 0xdc, 0xcb, 0xff, 0x44, 0x01, 0xce, 0x76, 0xc1, 0xfd, 0x42, 0x01, 0x1e, 0xda, 0x57, 0x68, 0xcd, - 0xed, 0xb8, 0x73, 0xcf, 0x3b, 0x4e, 0x8f, 0xb5, 0x88, 0x74, 0xc2, 0xab, 0xf8, 0xb2, 0xf8, 0x5e, - 0xea, 0x58, 0xc3, 0x1c, 0x8c, 0x65, 0x39, 0x15, 0x1d, 0xb6, 0xc9, 0xee, 0x52, 0x18, 0xb5, 0xbd, - 0x44, 0x70, 0x07, 0x25, 0x3a, 0xac, 0xc8, 0x02, 0x9c, 0xd6, 0x71, 0xbf, 0xef, 0x40, 0xb6, 0x03, - 0xc8, 0x83, 0xc9, 0x6e, 0x4c, 0x22, 0x7a, 0xa4, 0x56, 0x49, 0x2d, 0x22, 0x72, 0x79, 0x3e, 0x3a, - 0xcb, 0xbd, 0xfd, 0x74, 0x84, 0xb3, 0xb5, 0x30, 0x22, 0xb3, 0x3b, 0x4f, 0xcd, 0xf2, 0x1a, 0x2b, - 0x64, 0xb7, 0x4a, 0x5a, 0x84, 0xe2, 0x98, 0x47, 0x37, 0xf7, 0x66, 0x26, 0xaf, 0x1a, 0x08, 0x70, - 0x06, 0x21, 0x25, 0xd1, 0xf1, 0xe2, 0xf8, 0x7a, 0x18, 0xd5, 0x05, 0x89, 0xc2, 0x81, 0x49, 0xac, - 0x1b, 0x08, 0x70, 0x06, 0xa1, 0xfb, 0x3d, 0xaa, 0x3e, 0xea, 0x52, 0x2b, 0xfa, 0x3a, 0x95, 0x7d, - 0x28, 0x64, 0xbe, 0x15, 0x6e, 0x2e, 0x84, 0x41, 0xe2, 0xf9, 0x01, 0x91, 0xc1, 0x02, 0x1b, 0x96, - 0x64, 0x64, 0x03, 0x77, 0x6a, 0xc3, 0xef, 0x2d, 0xc3, 0x39, 0x7d, 0xa1, 0x32, 0xce, 0x66, 0x2b, - 0xdc, 0xcc, 0x7a, 0x01, 0x69, 0x25, 0xcc, 0x4a, 0xdc, 0x9f, 0x38, 0x70, 0xa6, 0x8f, 0x30, 0x8e, - 0xbe, 0xec, 0xc0, 0xc4, 0xe6, 0x4f, 0xc5, 0xd8, 0xcc, 0x6e, 0xa0, 0xf7, 0xc1, 0x24, 0x05, 0xd0, - 0x93, 0x48, 0xac, 0xcd, 0x82, 0xe9, 0xa1, 0x9a, 0x37, 0x4a, 0x71, 0xa6, 0xb6, 0xfb, 0xeb, 0x05, - 0xc8, 0xa1, 0x82, 0x9e, 0x84, 0x31, 0x12, 0xd4, 0x3b, 0xa1, 0x1f, 0x24, 0x82, 0x19, 0x29, 0xae, - 0x77, 0x41, 0xc0, 0xb1, 0xaa, 0x21, 0xf4, 0x0f, 0x31, 0x31, 0x85, 0x1e, 0xfd, 0x43, 0xf4, 0x3c, - 0xad, 0x83, 0x1a, 0x30, 0xe5, 0x71, 0xff, 0x0a, 0x5b, 0x7b, 0x6c, 0x99, 0x0e, 0x1d, 0x64, 0x99, - 0x9e, 0x64, 0xee, 0xcf, 0x0c, 0x0a, 0xdc, 0x83, 0x14, 0xbd, 0x1b, 0xca, 0xdd, 0x98, 0x54, 0x17, - 0x57, 0x16, 0x22, 0x52, 0xe7, 0x5a, 0xb1, 0xe6, 0xf7, 0xbb, 0x9a, 0x16, 0x61, 0xbd, 0x9e, 0xfb, - 0xaf, 0x1c, 0x18, 0x9d, 0xf7, 0x6a, 0xdb, 0xe1, 0xd6, 0x16, 0x9d, 0x8a, 0x7a, 0x37, 0x4a, 0x0d, - 0x5b, 0xda, 0x54, 0x2c, 0x0a, 0x38, 0x56, 0x35, 0xd0, 0x06, 0x8c, 0xf0, 0x0d, 0x2f, 0xb6, 0xdd, - 0xcf, 0x6b, 0xe3, 0x51, 0x71, 0x3c, 0x6c, 0x39, 0x74, 0x13, 0xbf, 0x35, 0xcb, 0xe3, 0x78, 0x66, - 0x2f, 0x05, 0xc9, 0x5a, 0x54, 0x4d, 0x22, 0x3f, 0x68, 0xcc, 0x03, 0x3d, 0x2e, 0x96, 0x18, 0x0e, - 0x2c, 0x70, 0xd1, 0x61, 0xb4, 0xbd, 0x1b, 0x92, 0x9c, 0x60, 0x3f, 0x6a, 0x18, 0xab, 0x69, 0x11, - 0xd6, 0xeb, 0xb9, 0x7f, 0xe4, 0x40, 0x69, 0xde, 0x8b, 0xfd, 0xda, 0x5f, 0x22, 0xe6, 0xf3, 0x21, - 0x28, 0x2e, 0x78, 0xb5, 0x26, 0x41, 0x57, 0xb3, 0x4a, 0x6f, 0xf9, 0xfc, 0xe3, 0x79, 0x64, 0x94, - 0x02, 0xac, 0x53, 0x9a, 0xe8, 0xa7, 0x1a, 0xbb, 0x6f, 0x3b, 0x30, 0xb9, 0xd0, 0xf2, 0x49, 0x90, - 0x2c, 0x90, 0x28, 0x61, 0x13, 0xd7, 0x80, 0xa9, 0x9a, 0x82, 0xdc, 0xc9, 0xd4, 0xb1, 0xd5, 0xba, - 0x90, 0x41, 0x81, 0x7b, 0x90, 0xa2, 0x3a, 0x1c, 0xe3, 0xb0, 0x74, 0x57, 0x1c, 0x68, 0xfe, 0x98, - 0x75, 0x74, 0xc1, 0xc4, 0x80, 0xb3, 0x28, 0xdd, 0x1f, 0x3b, 0x70, 0x66, 0xa1, 0xd5, 0x8d, 0x13, - 0x12, 0x5d, 0x13, 0xdc, 0x48, 0x8a, 0xb7, 0xe8, 0x23, 0x30, 0xd6, 0x96, 0x1e, 0x5b, 0xe7, 0x36, - 0x0b, 0x98, 0xf1, 0x33, 0x5a, 0x9b, 0x76, 0x66, 0x6d, 0xf3, 0x65, 0x52, 0x4b, 0x56, 0x49, 0xe2, - 0xa5, 0xe1, 0x05, 0x29, 0x0c, 0x2b, 0xac, 0xa8, 0x03, 0xc3, 0x71, 0x87, 0xd4, 0xec, 0x45, 0x77, - 0xc9, 0x31, 0x54, 0x3b, 0xa4, 0x96, 0xf2, 0x75, 0xe6, 0x6b, 0x64, 0x94, 0xdc, 0xff, 0xed, 0xc0, - 0x03, 0x7d, 0xc6, 0x7b, 0xd9, 0x8f, 0x13, 0xf4, 0x52, 0xcf, 0x98, 0x67, 0x07, 0x1b, 0x33, 0x6d, - 0xcd, 0x46, 0xac, 0x18, 0x82, 0x84, 0x68, 0xe3, 0xfd, 0x28, 0x14, 0xfd, 0x84, 0xb4, 0xa5, 0x19, - 0xda, 0x82, 0xc1, 0xa8, 0xcf, 0x58, 0xe6, 0x27, 0x64, 0x8c, 0xdf, 0x25, 0x4a, 0x0f, 0x73, 0xb2, - 0xee, 0x36, 0x8c, 0x2c, 0x84, 0xad, 0x6e, 0x3b, 0x18, 0x2c, 0x52, 0x26, 0xd9, 0xed, 0x90, 0xec, - 0x19, 0xc9, 0xc4, 0x7f, 0x56, 0x22, 0x0d, 0x47, 0x43, 0xf9, 0x86, 0x23, 0xf7, 0x5f, 0x3b, 0x40, - 0x77, 0x55, 0xdd, 0x17, 0x9e, 0x44, 0x8e, 0x8e, 0x13, 0x7c, 0x48, 0x47, 0x77, 0x6b, 0x6f, 0x66, - 0x42, 0x55, 0xd4, 0xf0, 0x7f, 0x08, 0x46, 0x62, 0xa6, 0x92, 0x8b, 0x3e, 0x2c, 0x49, 0xf9, 0x99, - 0x2b, 0xea, 0xb7, 0xf6, 0x66, 0x06, 0x0a, 0xdb, 0x9c, 0x55, 0xb8, 0x85, 0xd3, 0x53, 0x60, 0xa5, - 0x02, 0x5f, 0x9b, 0xc4, 0xb1, 0xd7, 0x90, 0x1a, 0x9e, 0x12, 0xf8, 0x56, 0x39, 0x18, 0xcb, 0x72, - 0xf7, 0x4b, 0x0e, 0x4c, 0xa8, 0xc3, 0x8b, 0x8a, 0xef, 0xe8, 0x8a, 0x7e, 0xcc, 0xf1, 0x95, 0xf2, - 0x50, 0x1f, 0x8e, 0x23, 0x0e, 0xf2, 0xfd, 0x4f, 0xc1, 0x77, 0xc1, 0x78, 0x9d, 0x74, 0x48, 0x50, - 0x27, 0x41, 0x8d, 0xaa, 0xdf, 0x74, 0x85, 0x94, 0xe6, 0xa7, 0xa8, 0xbe, 0xb9, 0xa8, 0xc1, 0xb1, - 0x51, 0xcb, 0xfd, 0x86, 0x03, 0xf7, 0x2b, 0x74, 0x55, 0x92, 0x60, 0x92, 0x44, 0xbb, 0x2a, 0x4c, - 0xf3, 0x60, 0xa7, 0xd5, 0x35, 0x2a, 0xff, 0x26, 0x11, 0x27, 0x7e, 0x67, 0xc7, 0x55, 0x99, 0x4b, - 0xcb, 0x0c, 0x09, 0x96, 0xd8, 0xdc, 0x5f, 0x1d, 0x82, 0x93, 0x7a, 0x27, 0x15, 0x83, 0xf9, 0x25, - 0x07, 0x40, 0xcd, 0x00, 0x3d, 0x90, 0x87, 0xec, 0xf8, 0xae, 0x8c, 0x2f, 0x95, 0xb2, 0x20, 0x05, - 0x8e, 0xb1, 0x46, 0x16, 0xbd, 0x00, 0xe3, 0x3b, 0x74, 0x53, 0x90, 0x55, 0x2a, 0x2e, 0xc4, 0x95, - 0x21, 0xd6, 0x8d, 0x99, 0xbc, 0x8f, 0xf9, 0x7c, 0x5a, 0x2f, 0x35, 0x07, 0x68, 0xc0, 0x18, 0x1b, - 0xa8, 0xa8, 0xa6, 0x33, 0x11, 0xe9, 0x9f, 0x44, 0xd8, 0xc4, 0x3f, 0x68, 0x71, 0x8c, 0xd9, 0xaf, - 0x3e, 0x7f, 0xfc, 0xe6, 0xde, 0xcc, 0x84, 0x01, 0xc2, 0x66, 0x27, 0xdc, 0x17, 0x80, 0xcd, 0x85, - 0x1f, 0x74, 0xc9, 0x5a, 0x80, 0x1e, 0x91, 0x36, 0x3a, 0xee, 0x57, 0x51, 0x9c, 0x43, 0xb7, 0xd3, - 0x51, 0x5d, 0x76, 0xcb, 0xf3, 0x5b, 0x2c, 0x7c, 0x91, 0xd6, 0x52, 0xba, 0xec, 0x12, 0x83, 0x62, - 0x51, 0xea, 0xce, 0xc2, 0xe8, 0x02, 0x1d, 0x3b, 0x89, 0x28, 0x5e, 0x3d, 0xea, 0x78, 0xc2, 0x88, - 0x3a, 0x96, 0xd1, 0xc5, 0x1b, 0x70, 0x6a, 0x21, 0x22, 0x5e, 0x42, 0xaa, 0x4f, 0xcf, 0x77, 0x6b, - 0xdb, 0x24, 0xe1, 0xa1, 0x5d, 0x31, 0x7a, 0x2f, 0x4c, 0x84, 0xec, 0xc8, 0xb8, 0x1c, 0xd6, 0xb6, - 0xfd, 0xa0, 0x21, 0x4c, 0xae, 0xa7, 0x04, 0x96, 0x89, 0x35, 0xbd, 0x10, 0x9b, 0x75, 0xdd, 0xff, - 0x54, 0x80, 0xf1, 0x85, 0x28, 0x0c, 0x24, 0x5b, 0x3c, 0x82, 0xa3, 0x2c, 0x31, 0x8e, 0x32, 0x0b, - 0xee, 0x4e, 0xbd, 0xff, 0xfd, 0x8e, 0x33, 0xf4, 0xba, 0x62, 0x91, 0x43, 0xb6, 0x54, 0x10, 0x83, - 0x2e, 0xc3, 0x9d, 0x7e, 0x6c, 0x93, 0x81, 0xba, 0xff, 0xd9, 0x81, 0x29, 0xbd, 0xfa, 0x11, 0x9c, - 0xa0, 0xb1, 0x79, 0x82, 0x5e, 0xb1, 0x3b, 0xde, 0x3e, 0xc7, 0xe6, 0xbf, 0x18, 0x35, 0xc7, 0xc9, - 0x7c, 0xdd, 0x5f, 0x71, 0x60, 0xfc, 0xba, 0x06, 0x10, 0x83, 0xb5, 0x2d, 0xc4, 0xbc, 0x43, 0xb2, - 0x19, 0x1d, 0x7a, 0x2b, 0xf3, 0x1b, 0x1b, 0x3d, 0xa1, 0x7c, 0x3f, 0xae, 0x35, 0x49, 0xbd, 0xdb, - 0x92, 0xc7, 0xb7, 0x9a, 0xd2, 0xaa, 0x80, 0x63, 0x55, 0x03, 0xbd, 0x04, 0xc7, 0x6b, 0x61, 0x50, - 0xeb, 0x46, 0x11, 0x09, 0x6a, 0xbb, 0xeb, 0xec, 0x8e, 0x84, 0x38, 0x10, 0x67, 0x45, 0xb3, 0xe3, - 0x0b, 0xd9, 0x0a, 0xb7, 0xf2, 0x80, 0xb8, 0x17, 0x11, 0x77, 0x16, 0xc4, 0xf4, 0xc8, 0x12, 0x0a, - 0x97, 0xe6, 0x2c, 0x60, 0x60, 0x2c, 0xcb, 0xd1, 0x55, 0x38, 0x13, 0x27, 0x5e, 0x94, 0xf8, 0x41, - 0x63, 0x91, 0x78, 0xf5, 0x96, 0x1f, 0x50, 0x55, 0x22, 0x0c, 0xea, 0xdc, 0x95, 0x38, 0x34, 0xff, - 0xc0, 0xcd, 0xbd, 0x99, 0x33, 0xd5, 0xfc, 0x2a, 0xb8, 0x5f, 0x5b, 0xf4, 0x21, 0x98, 0x16, 0xee, - 0x88, 0xad, 0x6e, 0xeb, 0xd9, 0x70, 0x33, 0xbe, 0xe8, 0xc7, 0x54, 0x8f, 0xbf, 0xec, 0xb7, 0xfd, - 0x84, 0x39, 0x0c, 0x8b, 0xf3, 0x67, 0x6f, 0xee, 0xcd, 0x4c, 0x57, 0xfb, 0xd6, 0xc2, 0xfb, 0x60, - 0x40, 0x18, 0x4e, 0x73, 0xe6, 0xd7, 0x83, 0x7b, 0x94, 0xe1, 0x9e, 0xbe, 0xb9, 0x37, 0x73, 0x7a, - 0x29, 0xb7, 0x06, 0xee, 0xd3, 0x92, 0x7e, 0xc1, 0xc4, 0x6f, 0x93, 0x57, 0xc3, 0x80, 0xb0, 0x40, - 0x15, 0xed, 0x0b, 0x6e, 0x08, 0x38, 0x56, 0x35, 0xd0, 0xcb, 0xe9, 0x4a, 0xa4, 0xdb, 0x45, 0x04, - 0x9c, 0x1c, 0x9c, 0xc3, 0x31, 0xd5, 0xe4, 0x9a, 0x86, 0x89, 0x45, 0x52, 0x1a, 0xb8, 0xd1, 0x27, - 0x1c, 0x18, 0x8f, 0x93, 0x50, 0xdd, 0x6b, 0x10, 0x11, 0x27, 0x16, 0x96, 0x7d, 0x55, 0xc3, 0xca, - 0x05, 0x1f, 0x1d, 0x82, 0x0d, 0xaa, 0xe8, 0xe7, 0xa0, 0x24, 0x17, 0x70, 0x5c, 0x29, 0x33, 0x59, - 0x89, 0xa9, 0x71, 0x72, 0x7d, 0xc7, 0x38, 0x2d, 0x77, 0x7f, 0x34, 0x04, 0xa8, 0x97, 0xad, 0xa1, - 0x15, 0x18, 0xf1, 0x6a, 0x89, 0xbf, 0x23, 0xa3, 0x09, 0x1f, 0xc9, 0x3b, 0xf2, 0xf9, 0xf4, 0x60, - 0xb2, 0x45, 0xe8, 0xaa, 0x26, 0x29, 0x2f, 0x9c, 0x63, 0x4d, 0xb1, 0x40, 0x81, 0x42, 0x38, 0xde, - 0xf2, 0xe2, 0x44, 0xd2, 0xaf, 0xd3, 0xcf, 0x24, 0x0e, 0x83, 0x9f, 0x1d, 0xec, 0x43, 0xd0, 0x16, - 0xf3, 0xa7, 0xe8, 0x6e, 0xbb, 0x9c, 0x45, 0x84, 0x7b, 0x71, 0xa3, 0x8f, 0x31, 0xd9, 0x89, 0x0b, - 0xb6, 0x52, 0x68, 0x59, 0xb1, 0x22, 0x57, 0x70, 0x9c, 0x86, 0xdc, 0x24, 0xc8, 0x60, 0x8d, 0x24, - 0x3a, 0x07, 0x25, 0xb6, 0x2b, 0x48, 0x9d, 0xf0, 0xbd, 0x3d, 0x94, 0x8a, 0xb8, 0x55, 0x59, 0x80, - 0xd3, 0x3a, 0x9a, 0x0c, 0xc1, 0xb7, 0x73, 0x1f, 0x19, 0x02, 0x3d, 0x03, 0xc5, 0x4e, 0xd3, 0x8b, - 0x65, 0x84, 0xba, 0x2b, 0x79, 0xf2, 0x3a, 0x05, 0x32, 0xc6, 0xa3, 0x7d, 0x4b, 0x06, 0xc4, 0xbc, - 0x81, 0xfb, 0x6f, 0x00, 0x46, 0x17, 0xe7, 0x96, 0x37, 0xbc, 0x78, 0x7b, 0x00, 0x0d, 0x87, 0x6e, - 0x32, 0x21, 0x8a, 0x66, 0xd9, 0xa4, 0x14, 0x51, 0xb1, 0xaa, 0x81, 0x02, 0x18, 0xf1, 0x03, 0xca, - 0x57, 0x2a, 0x93, 0xb6, 0xbc, 0x08, 0x4a, 0x5b, 0x63, 0x66, 0x9e, 0x4b, 0x0c, 0x3b, 0x16, 0x54, - 0xd0, 0xeb, 0x50, 0xf2, 0xe4, 0x05, 0x21, 0x71, 0xba, 0xaf, 0xd8, 0x30, 0x8f, 0x0b, 0x94, 0x7a, - 0x80, 0x92, 0x00, 0xe1, 0x94, 0x20, 0xfa, 0xb8, 0x03, 0x65, 0x39, 0x74, 0x4c, 0xb6, 0x84, 0xe7, - 0x7a, 0xd5, 0xde, 0x98, 0x31, 0xd9, 0xe2, 0xd1, 0x2b, 0x1a, 0x00, 0xeb, 0x24, 0x7b, 0x34, 0xa2, - 0xe2, 0x20, 0x1a, 0x11, 0xba, 0x0e, 0xa5, 0xeb, 0x7e, 0xd2, 0x64, 0xe7, 0xb7, 0xf0, 0x98, 0x2d, - 0xdd, 0x7d, 0xaf, 0x29, 0xba, 0x74, 0xc6, 0xae, 0x49, 0x02, 0x38, 0xa5, 0x45, 0xb7, 0x03, 0xfd, - 0xc1, 0x2e, 0x58, 0x31, 0xce, 0x5f, 0x32, 0x1b, 0xb0, 0x02, 0x9c, 0xd6, 0xa1, 0x53, 0x3c, 0x4e, - 0x7f, 0x55, 0xc9, 0x2b, 0x5d, 0xca, 0x5a, 0x44, 0x44, 0xa2, 0x85, 0x75, 0x25, 0x31, 0xf2, 0xc9, - 0xba, 0xa6, 0xd1, 0xc0, 0x06, 0x45, 0xba, 0x47, 0xae, 0x37, 0x49, 0x20, 0x6e, 0x4c, 0xa8, 0x3d, - 0x72, 0xad, 0x49, 0x02, 0xcc, 0x4a, 0xd0, 0xeb, 0x5c, 0x43, 0xe3, 0xaa, 0x82, 0xe0, 0xf5, 0x97, - 0xed, 0x68, 0x2f, 0x1c, 0x27, 0xbf, 0xb4, 0x90, 0xfe, 0xc6, 0x1a, 0x3d, 0xca, 0x31, 0xc2, 0xe0, - 0xc2, 0x0d, 0x3f, 0x11, 0x57, 0x2d, 0x14, 0xc7, 0x58, 0x63, 0x50, 0x2c, 0x4a, 0x79, 0x64, 0x06, - 0x5d, 0x04, 0x31, 0xbb, 0x57, 0x51, 0xd2, 0x23, 0x33, 0x18, 0x18, 0xcb, 0x72, 0xf4, 0x0f, 0x1d, - 0x28, 0x36, 0xc3, 0x70, 0x3b, 0xae, 0x4c, 0xb0, 0xc5, 0x61, 0x41, 0x62, 0x16, 0x1c, 0x67, 0xf6, - 0x22, 0x45, 0x6b, 0x5e, 0x1e, 0x2b, 0x32, 0xd8, 0xad, 0xbd, 0x99, 0xc9, 0xcb, 0xfe, 0x16, 0xa9, - 0xed, 0xd6, 0x5a, 0x84, 0x41, 0xde, 0x7c, 0x5b, 0x83, 0x5c, 0xd8, 0x21, 0x41, 0x82, 0x79, 0xaf, - 0xa6, 0x3f, 0xeb, 0x00, 0xa4, 0x88, 0x72, 0x5c, 0xa0, 0xc4, 0x0c, 0x1a, 0xb0, 0xa0, 0x2e, 0x1b, - 0x5d, 0xd3, 0x7d, 0xaa, 0xff, 0xd6, 0x81, 0x32, 0x1d, 0x9c, 0x64, 0x81, 0x8f, 0xc1, 0x48, 0xe2, - 0x45, 0x0d, 0x22, 0xdd, 0x00, 0xea, 0x73, 0x6c, 0x30, 0x28, 0x16, 0xa5, 0x28, 0x80, 0x62, 0xe2, - 0xc5, 0xdb, 0x52, 0x48, 0xbf, 0x64, 0x6d, 0x8a, 0x53, 0xf9, 0x9c, 0xfe, 0x8a, 0x31, 0x27, 0x83, - 0x1e, 0x87, 0x31, 0x7a, 0x74, 0x2c, 0x79, 0xb1, 0x8c, 0xcc, 0x19, 0xa7, 0x4c, 0x7c, 0x49, 0xc0, - 0xb0, 0x2a, 0x75, 0x7f, 0xbd, 0x00, 0xc3, 0x8b, 0x5c, 0x5d, 0x1b, 0x89, 0xc3, 0x6e, 0x54, 0x23, - 0x42, 0x6c, 0xb7, 0xb0, 0xa6, 0x29, 0xde, 0x2a, 0xc3, 0xa9, 0x29, 0x4c, 0xec, 0x37, 0x16, 0xb4, - 0xd0, 0x17, 0x1d, 0x98, 0x4c, 0x22, 0x2f, 0x88, 0xb7, 0x98, 0xc3, 0xc5, 0x0f, 0x03, 0x31, 0x45, - 0x16, 0x56, 0xe1, 0x86, 0x81, 0xb7, 0x9a, 0x90, 0x4e, 0xea, 0xf7, 0x31, 0xcb, 0x70, 0xa6, 0x0f, - 0xee, 0x6f, 0x38, 0x00, 0x69, 0xef, 0xd1, 0x67, 0x1c, 0x98, 0xf0, 0xf4, 0x88, 0x50, 0x31, 0x47, - 0x6b, 0xf6, 0xbc, 0xb3, 0x0c, 0x2d, 0xb7, 0x54, 0x18, 0x20, 0x6c, 0x12, 0x76, 0xdf, 0x0d, 0x45, - 0xb6, 0x3b, 0x98, 0x4a, 0x23, 0x2c, 0xdb, 0x59, 0x53, 0x96, 0xb4, 0x78, 0x63, 0x55, 0xc3, 0x7d, - 0x09, 0x26, 0x2f, 0xdc, 0x20, 0xb5, 0x6e, 0x12, 0x46, 0xdc, 0xae, 0xdf, 0xe7, 0x06, 0x90, 0x73, - 0x47, 0x37, 0x80, 0xbe, 0xed, 0x40, 0x59, 0x0b, 0x0f, 0xa4, 0x27, 0x75, 0x63, 0xa1, 0xca, 0xcd, - 0x17, 0x62, 0xaa, 0x56, 0xac, 0x04, 0x20, 0x72, 0x94, 0xe9, 0x31, 0xa2, 0x40, 0x38, 0x25, 0x78, - 0x9b, 0xf0, 0x3d, 0xf7, 0x0f, 0x1c, 0x38, 0x95, 0x1b, 0xcb, 0x78, 0x8f, 0xbb, 0x6d, 0xb8, 0xd0, - 0x0b, 0x03, 0xb8, 0xd0, 0x7f, 0xc7, 0x81, 0x14, 0x13, 0x65, 0x45, 0x9b, 0x69, 0xcf, 0x35, 0x56, - 0x24, 0x28, 0x89, 0x52, 0xf4, 0x3a, 0x9c, 0x31, 0xbf, 0xe0, 0x1d, 0x7a, 0x53, 0xb8, 0xea, 0x99, - 0x8f, 0x09, 0xf7, 0x23, 0xe1, 0x7e, 0xd5, 0x81, 0xe2, 0xb2, 0xd7, 0x6d, 0x90, 0x81, 0x8c, 0x61, - 0x94, 0x8f, 0x45, 0xc4, 0x6b, 0x25, 0x52, 0x75, 0x10, 0x7c, 0x0c, 0x0b, 0x18, 0x56, 0xa5, 0x68, - 0x0e, 0x4a, 0x61, 0x87, 0x18, 0x1e, 0xc0, 0x47, 0xe4, 0xec, 0xad, 0xc9, 0x02, 0x7a, 0xec, 0x30, - 0xea, 0x0a, 0x82, 0xd3, 0x56, 0xee, 0xf7, 0x8b, 0x50, 0xd6, 0x6e, 0xbd, 0x50, 0x59, 0x20, 0x22, - 0x9d, 0x30, 0x2b, 0x2f, 0xd3, 0x05, 0x83, 0x59, 0x09, 0xdd, 0x83, 0x11, 0xd9, 0xf1, 0x63, 0xce, - 0xb6, 0x8c, 0x3d, 0x88, 0x05, 0x1c, 0xab, 0x1a, 0x68, 0x06, 0x8a, 0x75, 0xd2, 0x49, 0x9a, 0xac, - 0x7b, 0xc3, 0x3c, 0xf4, 0x6f, 0x91, 0x02, 0x30, 0x87, 0xd3, 0x0a, 0x5b, 0x24, 0xa9, 0x35, 0x99, - 0xdd, 0x57, 0xc4, 0x06, 0x2e, 0x51, 0x00, 0xe6, 0xf0, 0x1c, 0x1f, 0x65, 0xf1, 0xf0, 0x7d, 0x94, - 0x23, 0x96, 0x7d, 0x94, 0xa8, 0x03, 0x27, 0xe2, 0xb8, 0xb9, 0x1e, 0xf9, 0x3b, 0x5e, 0x42, 0xd2, - 0xd5, 0x37, 0x7a, 0x10, 0x3a, 0x67, 0xd8, 0x3d, 0xf4, 0xea, 0xc5, 0x2c, 0x16, 0x9c, 0x87, 0x1a, - 0x55, 0xe1, 0x94, 0x1f, 0xc4, 0xa4, 0xd6, 0x8d, 0xc8, 0xa5, 0x46, 0x10, 0x46, 0xe4, 0x62, 0x18, - 0x53, 0x74, 0xe2, 0x16, 0xad, 0x8a, 0x96, 0xbd, 0x94, 0x57, 0x09, 0xe7, 0xb7, 0x45, 0xcb, 0x70, - 0xbc, 0xee, 0xc7, 0xde, 0x66, 0x8b, 0x54, 0xbb, 0x9b, 0xed, 0x90, 0x2b, 0xde, 0x25, 0x86, 0xf0, - 0x7e, 0x69, 0x25, 0x5a, 0xcc, 0x56, 0xc0, 0xbd, 0x6d, 0xd0, 0x33, 0x30, 0x1e, 0xfb, 0x41, 0xa3, - 0x45, 0xe6, 0x23, 0x2f, 0xa8, 0x35, 0xc5, 0xf5, 0x5b, 0x65, 0x4d, 0xaf, 0x6a, 0x65, 0xd8, 0xa8, - 0xc9, 0xf6, 0x3c, 0x6f, 0x93, 0x91, 0x06, 0x45, 0x6d, 0x51, 0xea, 0xfe, 0xc0, 0x81, 0x71, 0x3d, - 0x52, 0x9d, 0x4a, 0xda, 0xd0, 0x5c, 0x5c, 0xaa, 0xf2, 0xb3, 0xc0, 0xde, 0x89, 0x7f, 0x51, 0xe1, - 0x4c, 0x95, 0xe5, 0x14, 0x86, 0x35, 0x9a, 0x03, 0xdc, 0x3b, 0x7f, 0x04, 0x8a, 0x5b, 0x21, 0x15, - 0x48, 0x86, 0x4c, 0x33, 0xfc, 0x12, 0x05, 0x62, 0x5e, 0xe6, 0xfe, 0x4f, 0x07, 0x4e, 0xe7, 0x07, - 0xe1, 0xff, 0x34, 0x0c, 0xf2, 0x3c, 0x00, 0x1d, 0x8a, 0xc1, 0xd4, 0xb5, 0xcc, 0x13, 0xb2, 0x04, - 0x6b, 0xb5, 0x06, 0x1b, 0xf6, 0x9f, 0x51, 0xa1, 0x38, 0xa5, 0xf3, 0x39, 0x07, 0x26, 0x28, 0xd9, - 0x95, 0x68, 0xd3, 0x18, 0xed, 0x9a, 0x9d, 0xd1, 0x2a, 0xb4, 0xa9, 0xb7, 0xc1, 0x00, 0x63, 0x93, - 0x38, 0xfa, 0x39, 0x28, 0x79, 0xf5, 0x7a, 0x44, 0xe2, 0x58, 0xf9, 0xed, 0x98, 0x2d, 0x6a, 0x4e, - 0x02, 0x71, 0x5a, 0x4e, 0x99, 0x68, 0xb3, 0xbe, 0x15, 0x53, 0xbe, 0x24, 0x18, 0xb7, 0x62, 0xa2, - 0x94, 0x08, 0x85, 0x63, 0x55, 0xc3, 0xfd, 0x95, 0x61, 0x30, 0x69, 0xa3, 0x3a, 0x1c, 0xdb, 0x8e, - 0x36, 0x17, 0x58, 0xd8, 0xc3, 0x9d, 0x84, 0x1f, 0xb0, 0xb0, 0x80, 0x15, 0x13, 0x03, 0xce, 0xa2, - 0x14, 0x54, 0x56, 0xc8, 0x6e, 0xe2, 0x6d, 0xde, 0x71, 0xf0, 0xc1, 0x8a, 0x89, 0x01, 0x67, 0x51, - 0xa2, 0x77, 0x43, 0x79, 0x3b, 0xda, 0x94, 0x2c, 0x3a, 0x1b, 0xc9, 0xb2, 0x92, 0x16, 0x61, 0xbd, - 0x1e, 0x9d, 0xc2, 0xed, 0x68, 0x93, 0x9e, 0x8a, 0x32, 0x0f, 0x83, 0x9a, 0xc2, 0x15, 0x01, 0xc7, - 0xaa, 0x06, 0xea, 0x00, 0xda, 0x96, 0xb3, 0xa7, 0x82, 0x3c, 0xc4, 0x49, 0x32, 0x78, 0x8c, 0x08, - 0x8b, 0xae, 0x5f, 0xe9, 0xc1, 0x83, 0x73, 0x70, 0xa3, 0x17, 0xe0, 0xcc, 0x76, 0xb4, 0x29, 0x84, - 0x85, 0xf5, 0xc8, 0x0f, 0x6a, 0x7e, 0xc7, 0xc8, 0xb9, 0x30, 0x23, 0xba, 0x7b, 0x66, 0x25, 0xbf, - 0x1a, 0xee, 0xd7, 0xde, 0xfd, 0xdd, 0x61, 0x60, 0xb7, 0x45, 0x29, 0x2f, 0x6c, 0x93, 0xa4, 0x19, - 0xd6, 0xb3, 0xf2, 0xcf, 0x2a, 0x83, 0x62, 0x51, 0x2a, 0x63, 0x48, 0x0b, 0x7d, 0x62, 0x48, 0xaf, - 0xc3, 0x68, 0x93, 0x78, 0x75, 0x12, 0x49, 0x0b, 0xe2, 0x65, 0x3b, 0xf7, 0x5b, 0x2f, 0x32, 0xa4, - 0xa9, 0x1a, 0xce, 0x7f, 0xc7, 0x58, 0x52, 0x43, 0xef, 0x81, 0x49, 0x2a, 0xc8, 0x84, 0xdd, 0x44, - 0x9a, 0xf8, 0xb9, 0x05, 0x91, 0x9d, 0xa8, 0x1b, 0x46, 0x09, 0xce, 0xd4, 0x44, 0x8b, 0x30, 0x25, - 0xcc, 0xf1, 0xca, 0x32, 0x29, 0x26, 0x56, 0x25, 0xc3, 0xa8, 0x66, 0xca, 0x71, 0x4f, 0x0b, 0x16, - 0x03, 0x18, 0xd6, 0xb9, 0x47, 0x56, 0x8f, 0x01, 0x0c, 0xeb, 0xbb, 0x98, 0x95, 0xa0, 0x57, 0x61, - 0x8c, 0xfe, 0x5d, 0x8a, 0xc2, 0xb6, 0xb0, 0xcd, 0xac, 0xdb, 0x99, 0x1d, 0x4a, 0x43, 0x68, 0x8a, - 0x4c, 0xc0, 0x9b, 0x17, 0x54, 0xb0, 0xa2, 0x47, 0xf5, 0x15, 0x79, 0x0e, 0x57, 0xb7, 0xfd, 0xce, - 0xf3, 0x24, 0xf2, 0xb7, 0x76, 0x99, 0xd0, 0x30, 0x96, 0xea, 0x2b, 0x97, 0x7a, 0x6a, 0xe0, 0x9c, - 0x56, 0xee, 0xe7, 0x0a, 0x30, 0xae, 0x5f, 0x3a, 0xbe, 0x5d, 0x60, 0x71, 0x9c, 0x2e, 0x0a, 0xae, - 0x9d, 0x5e, 0xb4, 0x30, 0xec, 0xdb, 0x2d, 0x88, 0x26, 0x0c, 0x7b, 0x5d, 0x21, 0x2d, 0x5a, 0x31, - 0x82, 0xb1, 0x11, 0x77, 0x93, 0x26, 0xbf, 0x9d, 0xc6, 0x42, 0x7e, 0x19, 0x05, 0xf7, 0x93, 0x43, - 0x30, 0x26, 0x0b, 0xd1, 0x27, 0x1c, 0x80, 0x34, 0xf4, 0x4a, 0xb0, 0xd2, 0x75, 0x1b, 0x71, 0x39, - 0x7a, 0xd4, 0x98, 0x66, 0x4b, 0x57, 0x70, 0xac, 0xd1, 0x45, 0x09, 0x8c, 0x84, 0xb4, 0x73, 0xe7, - 0xed, 0x5d, 0x9c, 0x5f, 0xa3, 0x84, 0xcf, 0x33, 0xea, 0xa9, 0xd9, 0x8c, 0xc1, 0xb0, 0xa0, 0x45, - 0x35, 0xc0, 0x4d, 0x19, 0x11, 0x68, 0xcf, 0xc4, 0xac, 0x82, 0x0c, 0x53, 0x85, 0x4e, 0x81, 0x70, - 0x4a, 0xd0, 0x7d, 0x0a, 0x26, 0xcd, 0xcd, 0x40, 0x35, 0x82, 0xcd, 0xdd, 0x84, 0x70, 0x7b, 0xc3, - 0x38, 0xd7, 0x08, 0xe6, 0x29, 0x00, 0x73, 0xb8, 0xfb, 0x3d, 0x2a, 0x07, 0x28, 0xf6, 0x32, 0x80, - 0x89, 0xff, 0x11, 0xdd, 0x58, 0xd6, 0x4f, 0xed, 0xfa, 0x18, 0x94, 0xd8, 0x3f, 0x6c, 0xa3, 0x0f, - 0xd9, 0xf2, 0xdf, 0xa7, 0xfd, 0x14, 0x5b, 0x9d, 0xc9, 0x04, 0xcf, 0x4b, 0x42, 0x38, 0xa5, 0xe9, - 0x86, 0x30, 0x95, 0xad, 0x8d, 0x3e, 0x08, 0xe3, 0xb1, 0x3c, 0x56, 0xd3, 0x2b, 0x74, 0x03, 0x1e, - 0xbf, 0xdc, 0x7b, 0xa6, 0x35, 0xc7, 0x06, 0x32, 0x77, 0x0d, 0x46, 0xac, 0x4e, 0xa1, 0xfb, 0x2d, - 0x07, 0x4a, 0xcc, 0x81, 0xd9, 0x88, 0xbc, 0x76, 0xda, 0x64, 0x68, 0x9f, 0x59, 0x8f, 0x61, 0x94, - 0xeb, 0xe8, 0x32, 0xf0, 0xc7, 0x02, 0x97, 0xe1, 0xf9, 0xee, 0x52, 0x2e, 0xc3, 0x8d, 0x01, 0x31, - 0x96, 0x94, 0xdc, 0x4f, 0x15, 0x60, 0xe4, 0x52, 0xd0, 0xe9, 0xfe, 0x95, 0xcf, 0xb9, 0xb6, 0x0a, - 0xc3, 0x97, 0x12, 0xd2, 0x36, 0x53, 0x03, 0x8e, 0xcf, 0x3f, 0xaa, 0xa7, 0x05, 0xac, 0x98, 0x69, - 0x01, 0xb1, 0x77, 0x5d, 0xc6, 0xc5, 0x09, 0x1b, 0x71, 0x7a, 0x8d, 0xf0, 0x49, 0x28, 0x5d, 0xf6, - 0x36, 0x49, 0x6b, 0x85, 0xec, 0xb2, 0x4b, 0x7f, 0x3c, 0x46, 0xc3, 0x49, 0x15, 0x7b, 0x23, 0x9e, - 0x62, 0x11, 0x26, 0x59, 0x6d, 0xb5, 0x19, 0xa8, 0xe6, 0x40, 0xd2, 0xbc, 0x4a, 0x8e, 0xa9, 0x39, - 0x68, 0x39, 0x95, 0xb4, 0x5a, 0xee, 0x2c, 0x94, 0x53, 0x2c, 0x03, 0x50, 0xfd, 0x49, 0x01, 0x26, - 0x0c, 0x53, 0xb7, 0xe1, 0x00, 0x74, 0x6e, 0xeb, 0x00, 0x34, 0x1c, 0x72, 0x85, 0x7b, 0xed, 0x90, - 0x1b, 0x3a, 0x7a, 0x87, 0x9c, 0xf9, 0x91, 0x86, 0x07, 0xfa, 0x48, 0x2d, 0x18, 0xbe, 0xec, 0x07, - 0xdb, 0x83, 0xf1, 0x99, 0xb8, 0x16, 0x76, 0x7a, 0xf8, 0x4c, 0x95, 0x02, 0x31, 0x2f, 0x93, 0x92, - 0xcb, 0x50, 0xbe, 0xe4, 0xe2, 0x7e, 0xc2, 0x81, 0xf1, 0x55, 0x2f, 0xf0, 0xb7, 0x48, 0x9c, 0xb0, - 0x75, 0x95, 0x1c, 0xea, 0xe5, 0xaf, 0xf1, 0x3e, 0x69, 0x0c, 0xde, 0x74, 0xe0, 0xf8, 0x2a, 0x69, - 0x87, 0xfe, 0xab, 0x5e, 0x1a, 0x76, 0x4a, 0xfb, 0xde, 0xf4, 0x13, 0x11, 0x65, 0xa7, 0xfa, 0x7e, - 0xd1, 0x4f, 0x30, 0x85, 0xdf, 0xc6, 0x8e, 0xcb, 0xae, 0x55, 0x50, 0x05, 0x4d, 0xbb, 0x90, 0x98, - 0x06, 0x94, 0xca, 0x02, 0x9c, 0xd6, 0x71, 0x7f, 0xcf, 0x81, 0x51, 0xde, 0x09, 0x15, 0xa9, 0xeb, - 0xf4, 0xc1, 0xdd, 0x84, 0x22, 0x6b, 0x27, 0x56, 0xf5, 0xb2, 0x05, 0xf1, 0x87, 0xa2, 0xe3, 0x7b, - 0x90, 0xfd, 0x8b, 0x39, 0x01, 0xa6, 0xb6, 0x78, 0x37, 0xe6, 0x54, 0xc4, 0x6d, 0xaa, 0xb6, 0x30, - 0x28, 0x16, 0xa5, 0xee, 0xd7, 0x86, 0x60, 0x4c, 0x65, 0xef, 0x62, 0xb9, 0x15, 0x82, 0x20, 0x4c, - 0x3c, 0x1e, 0xeb, 0xc0, 0x79, 0xf5, 0x07, 0xed, 0x65, 0x0f, 0x9b, 0x9d, 0x4b, 0xb1, 0x73, 0xff, - 0x9d, 0x52, 0x42, 0xb5, 0x12, 0xac, 0x77, 0x02, 0x7d, 0x14, 0x46, 0x5a, 0x94, 0xfb, 0x48, 0xd6, - 0xfd, 0xbc, 0xc5, 0xee, 0x30, 0xb6, 0x26, 0x7a, 0xa2, 0x66, 0x88, 0x03, 0xb1, 0xa0, 0x3a, 0xfd, - 0x3e, 0x98, 0xca, 0xf6, 0xfa, 0x76, 0xf7, 0x25, 0x4b, 0xfa, 0x6d, 0xcb, 0xbf, 0x29, 0xb8, 0xe7, - 0xc1, 0x9b, 0xba, 0xcf, 0x41, 0x79, 0x95, 0x24, 0x91, 0x5f, 0x63, 0x08, 0x6e, 0xb7, 0xb8, 0x06, - 0x92, 0x1f, 0x3e, 0xcd, 0x16, 0x2b, 0xc5, 0x19, 0xa3, 0xd7, 0x01, 0x3a, 0x51, 0x48, 0xf5, 0x57, - 0xd2, 0x95, 0x1f, 0xdb, 0x82, 0x3c, 0xbc, 0xae, 0x70, 0x72, 0x97, 0x73, 0xfa, 0x1b, 0x6b, 0xf4, - 0xdc, 0x17, 0xa1, 0xb8, 0xda, 0x4d, 0xc8, 0x8d, 0x01, 0x38, 0xd6, 0x41, 0x13, 0x08, 0xb8, 0x1f, - 0x84, 0x71, 0x86, 0xfb, 0x62, 0xd8, 0xa2, 0xc7, 0x2a, 0x9d, 0x9a, 0x36, 0xfd, 0x9d, 0x75, 0x0a, - 0xb0, 0x4a, 0x98, 0x97, 0xd1, 0x2d, 0xd3, 0x0c, 0x5b, 0x75, 0x75, 0x99, 0x4a, 0x2d, 0x88, 0x8b, - 0x0c, 0x8a, 0x45, 0xa9, 0xfb, 0x4b, 0x05, 0x28, 0xb3, 0x86, 0x82, 0xdd, 0xec, 0xc2, 0x68, 0x93, - 0xd3, 0x11, 0x73, 0x68, 0x21, 0x44, 0x4b, 0xef, 0xbd, 0xa6, 0xcb, 0x71, 0x00, 0x96, 0xf4, 0x28, - 0xe9, 0xeb, 0x9e, 0x9f, 0x50, 0xd2, 0x85, 0xc3, 0x25, 0x7d, 0x8d, 0x93, 0xc1, 0x92, 0x9e, 0xfb, - 0x8b, 0xc0, 0x2e, 0x29, 0x2f, 0xb5, 0xbc, 0x06, 0x9f, 0xb9, 0x70, 0x9b, 0xd4, 0x05, 0xcf, 0xd5, - 0x66, 0x8e, 0x42, 0xb1, 0x28, 0xe5, 0x17, 0x3f, 0x93, 0xc8, 0x57, 0xc1, 0xcd, 0xda, 0xc5, 0x4f, - 0x06, 0x96, 0xa1, 0xec, 0x75, 0xf7, 0x4b, 0x05, 0x00, 0x96, 0xeb, 0x8d, 0xdf, 0x2d, 0xfe, 0x79, - 0x19, 0xa9, 0x64, 0x3a, 0x12, 0x55, 0xa4, 0x12, 0xbb, 0x3d, 0xad, 0x47, 0x28, 0xe9, 0x77, 0x0e, - 0x0a, 0xfb, 0xdf, 0x39, 0x40, 0x1d, 0x18, 0x0d, 0xbb, 0x09, 0x95, 0x55, 0xc5, 0x61, 0x6f, 0xc1, - 0x8f, 0xbe, 0xc6, 0x11, 0xf2, 0x40, 0x7d, 0xf1, 0x03, 0x4b, 0x32, 0xe8, 0x19, 0x18, 0xeb, 0x44, - 0x61, 0x83, 0x9e, 0xdd, 0xe2, 0x78, 0x7f, 0x50, 0xca, 0x43, 0xeb, 0x02, 0x7e, 0x4b, 0xfb, 0x1f, - 0xab, 0xda, 0xee, 0x1f, 0x4f, 0xf1, 0x79, 0x11, 0x6b, 0x6f, 0x1a, 0x0a, 0xbe, 0xb4, 0x4c, 0x81, - 0x40, 0x51, 0xb8, 0xb4, 0x88, 0x0b, 0x7e, 0x5d, 0xed, 0xab, 0x42, 0xdf, 0x7d, 0xf5, 0x6e, 0x28, - 0xd7, 0xfd, 0xb8, 0xd3, 0xf2, 0x76, 0xaf, 0xe4, 0x98, 0x05, 0x17, 0xd3, 0x22, 0xac, 0xd7, 0x43, - 0x4f, 0x8a, 0x1b, 0x26, 0xc3, 0x86, 0x29, 0x48, 0xde, 0x30, 0x49, 0xef, 0xae, 0xf3, 0xcb, 0x25, - 0xd9, 0x3b, 0xfe, 0xc5, 0x81, 0xef, 0xf8, 0x67, 0x25, 0xb1, 0x91, 0xa3, 0x97, 0xc4, 0xde, 0x0b, - 0x13, 0xf2, 0x27, 0x13, 0x8f, 0x2a, 0x27, 0x59, 0xef, 0x95, 0xb9, 0x7a, 0x43, 0x2f, 0xc4, 0x66, - 0xdd, 0x74, 0xd1, 0x8e, 0x0e, 0xba, 0x68, 0xcf, 0x03, 0x6c, 0x86, 0xdd, 0xa0, 0xee, 0x45, 0xbb, - 0x97, 0x16, 0x45, 0x3c, 0xaa, 0x12, 0xfc, 0xe6, 0x55, 0x09, 0xd6, 0x6a, 0xe9, 0x0b, 0xbd, 0x74, - 0x9b, 0x85, 0xfe, 0x41, 0x28, 0xb1, 0xd8, 0x5d, 0x52, 0x9f, 0x4b, 0x44, 0x88, 0xd1, 0x41, 0x42, - 0x26, 0xd3, 0xa0, 0x43, 0x89, 0x04, 0xa7, 0xf8, 0xd0, 0x87, 0x00, 0xb6, 0xfc, 0xc0, 0x8f, 0x9b, - 0x0c, 0x7b, 0xf9, 0xc0, 0xd8, 0xd5, 0x38, 0x97, 0x14, 0x16, 0xac, 0x61, 0x44, 0x2f, 0xc1, 0x71, - 0x12, 0x27, 0x7e, 0xdb, 0x4b, 0x48, 0x5d, 0xdd, 0xc9, 0xac, 0x30, 0x5b, 0xa6, 0x8a, 0x9e, 0xbe, - 0x90, 0xad, 0x70, 0x2b, 0x0f, 0x88, 0x7b, 0x11, 0x19, 0x3b, 0x72, 0xfa, 0x20, 0x3b, 0x12, 0xfd, - 0xb9, 0x03, 0xc7, 0x23, 0xc2, 0xe3, 0x4e, 0x62, 0xd5, 0xb1, 0x53, 0x8c, 0x1d, 0xd7, 0x6c, 0xa4, - 0x51, 0x57, 0xf9, 0x52, 0x70, 0x96, 0x0a, 0x17, 0x5c, 0x88, 0x1c, 0x7d, 0x4f, 0xf9, 0xad, 0x3c, - 0xe0, 0x9b, 0x6f, 0xcf, 0xcc, 0xf4, 0xa6, 0xf3, 0x57, 0xc8, 0xe9, 0xce, 0xfb, 0xbb, 0x6f, 0xcf, - 0x4c, 0xc9, 0xdf, 0xe9, 0xa4, 0xf5, 0x0c, 0x92, 0x1e, 0xab, 0x9d, 0xb0, 0x7e, 0x69, 0x5d, 0xc4, - 0x82, 0xa9, 0x63, 0x75, 0x9d, 0x02, 0x31, 0x2f, 0x43, 0x8f, 0xc3, 0x58, 0xdd, 0x23, 0xed, 0x30, - 0x50, 0x09, 0x71, 0x99, 0x34, 0xbf, 0x28, 0x60, 0x58, 0x95, 0x52, 0x1d, 0x22, 0x10, 0x47, 0x4a, - 0xe5, 0x01, 0x5b, 0x3a, 0x84, 0x3c, 0xa4, 0x38, 0x55, 0xf9, 0x0b, 0x2b, 0x4a, 0xa8, 0x05, 0x23, - 0x3e, 0x33, 0x54, 0x88, 0x70, 0x53, 0x0b, 0xd6, 0x11, 0x6e, 0xf8, 0x90, 0xc1, 0xa6, 0x8c, 0xf5, - 0x0b, 0x1a, 0xfa, 0x59, 0x73, 0xec, 0x68, 0xce, 0x9a, 0xc7, 0x61, 0xac, 0xd6, 0xf4, 0x5b, 0xf5, - 0x88, 0x04, 0x95, 0x29, 0xa6, 0xb1, 0xb3, 0x99, 0x58, 0x10, 0x30, 0xac, 0x4a, 0xd1, 0xdf, 0x80, - 0x89, 0xb0, 0x9b, 0x30, 0xd6, 0x42, 0xe7, 0x29, 0xae, 0x1c, 0x67, 0xd5, 0x59, 0xf0, 0xd0, 0x9a, - 0x5e, 0x80, 0xcd, 0x7a, 0x94, 0xc5, 0x37, 0xc3, 0x98, 0xa5, 0xf6, 0x61, 0x2c, 0xfe, 0xb4, 0xc9, - 0xe2, 0x2f, 0x6a, 0x65, 0xd8, 0xa8, 0x89, 0xbe, 0xe2, 0xc0, 0xf1, 0x76, 0x56, 0x81, 0xab, 0x9c, - 0x61, 0x33, 0x53, 0xb5, 0x21, 0xe8, 0x67, 0x50, 0xf3, 0xb0, 0xef, 0x1e, 0x30, 0xee, 0xed, 0x04, - 0x4b, 0xb2, 0x15, 0xef, 0x06, 0xb5, 0x66, 0x14, 0x06, 0x66, 0xf7, 0xee, 0xb7, 0x75, 0xb5, 0x8c, - 0xed, 0xed, 0x3c, 0x12, 0xf3, 0xf7, 0xdf, 0xdc, 0x9b, 0x39, 0x95, 0x5b, 0x84, 0xf3, 0x3b, 0x35, - 0xbd, 0x08, 0xa7, 0xf3, 0xf9, 0xc3, 0xed, 0x34, 0x8e, 0x21, 0x5d, 0xe3, 0x58, 0x82, 0xfb, 0xfb, - 0x76, 0x8a, 0x9e, 0x34, 0x52, 0xda, 0x74, 0xcc, 0x93, 0xa6, 0x47, 0x3a, 0x9c, 0x84, 0x71, 0xfd, - 0xfd, 0x07, 0xf7, 0xff, 0x0e, 0x01, 0xa4, 0x76, 0x72, 0xe4, 0xc1, 0x24, 0xb7, 0xc9, 0x5f, 0x5a, - 0xbc, 0xe3, 0x4b, 0xf1, 0x0b, 0x06, 0x02, 0x9c, 0x41, 0x88, 0xda, 0x80, 0x38, 0x84, 0xff, 0xbe, - 0x13, 0xdf, 0x2a, 0x73, 0x45, 0x2e, 0xf4, 0x20, 0xc1, 0x39, 0x88, 0xe9, 0x88, 0x92, 0x70, 0x9b, - 0x04, 0x57, 0xf1, 0xe5, 0x3b, 0xc9, 0xac, 0xc0, 0xbd, 0x71, 0x06, 0x02, 0x9c, 0x41, 0x88, 0x5c, - 0x18, 0x61, 0xb6, 0x19, 0x19, 0xa0, 0xcd, 0xd8, 0x0b, 0x93, 0x34, 0x62, 0x2c, 0x4a, 0xd0, 0x97, - 0x1c, 0x98, 0x94, 0x09, 0x22, 0x98, 0x35, 0x54, 0x86, 0x66, 0x5f, 0xb5, 0xe5, 0xe7, 0xb8, 0xa0, - 0x63, 0x4f, 0x03, 0x1f, 0x0d, 0x70, 0x8c, 0x33, 0x9d, 0x70, 0x5f, 0x80, 0x13, 0x39, 0xcd, 0xad, - 0x68, 0xb4, 0xdf, 0x76, 0xa0, 0xac, 0xe5, 0x2d, 0x44, 0xaf, 0x43, 0x29, 0xac, 0x5a, 0x8f, 0xb6, - 0x5b, 0xab, 0xf6, 0x44, 0xdb, 0x29, 0x10, 0x4e, 0x09, 0x0e, 0x12, 0x24, 0x98, 0x9b, 0x64, 0xf1, - 0x1e, 0x77, 0xfb, 0xc0, 0x41, 0x82, 0xbf, 0x52, 0x84, 0x14, 0xd3, 0x01, 0x13, 0x97, 0xa4, 0x21, - 0x85, 0x85, 0x7d, 0x43, 0x0a, 0xeb, 0x70, 0xcc, 0x63, 0xbe, 0xe4, 0x3b, 0x4c, 0x57, 0xc2, 0xd3, - 0xd6, 0x9a, 0x18, 0x70, 0x16, 0x25, 0xa5, 0x12, 0xa7, 0x4d, 0x19, 0x95, 0xe1, 0x03, 0x53, 0xa9, - 0x9a, 0x18, 0x70, 0x16, 0x25, 0x7a, 0x09, 0x2a, 0x35, 0x76, 0xfd, 0x96, 0x8f, 0xf1, 0xd2, 0xd6, - 0x95, 0x30, 0x59, 0x8f, 0x48, 0x4c, 0x82, 0x44, 0x24, 0x26, 0x7b, 0x58, 0xcc, 0x42, 0x65, 0xa1, - 0x4f, 0x3d, 0xdc, 0x17, 0x03, 0x55, 0x53, 0x98, 0x33, 0xda, 0x4f, 0x76, 0x19, 0x13, 0x11, 0x5e, - 0x7a, 0xa5, 0xa6, 0x54, 0xf5, 0x42, 0x6c, 0xd6, 0x45, 0xbf, 0xec, 0xc0, 0x44, 0x4b, 0x9a, 0xeb, - 0x71, 0xb7, 0x25, 0xb3, 0x6c, 0x62, 0x2b, 0xcb, 0xef, 0xb2, 0x8e, 0x99, 0xcb, 0x12, 0x06, 0x08, - 0x9b, 0xb4, 0xb3, 0xb9, 0x63, 0xc6, 0x06, 0xcc, 0x1d, 0xf3, 0x3d, 0x07, 0xa6, 0xb2, 0xd4, 0xd0, - 0x36, 0x3c, 0xd4, 0xf6, 0xa2, 0xed, 0x4b, 0xc1, 0x56, 0xc4, 0x2e, 0x62, 0x24, 0x7c, 0x31, 0xcc, - 0x6d, 0x25, 0x24, 0x5a, 0xf4, 0x76, 0xb9, 0xfb, 0xb3, 0xa8, 0x9e, 0x69, 0x7a, 0x68, 0x75, 0xbf, - 0xca, 0x78, 0x7f, 0x5c, 0xa8, 0x0a, 0xa7, 0x68, 0x05, 0x96, 0x5a, 0xce, 0x0f, 0x83, 0x94, 0x48, - 0x81, 0x11, 0x51, 0xc1, 0x80, 0xab, 0x79, 0x95, 0x70, 0x7e, 0x5b, 0xf7, 0x02, 0x8c, 0xf0, 0x7b, - 0x71, 0x77, 0xe5, 0x3f, 0x72, 0xff, 0x7d, 0x01, 0xa4, 0x60, 0xf8, 0x57, 0xdb, 0x1d, 0x47, 0x0f, - 0xd1, 0x88, 0x99, 0x94, 0x84, 0xb5, 0x83, 0x1d, 0xa2, 0x22, 0x89, 0xa3, 0x28, 0xa1, 0x12, 0x33, - 0xb9, 0xe1, 0x27, 0x0b, 0x61, 0x5d, 0xda, 0x38, 0x98, 0xc4, 0x7c, 0x41, 0xc0, 0xb0, 0x2a, 0x75, - 0x3f, 0xe1, 0xc0, 0x04, 0x1d, 0x65, 0xab, 0x45, 0x5a, 0xd5, 0x84, 0x74, 0x62, 0x14, 0x43, 0x31, - 0xa6, 0xff, 0xd8, 0x33, 0x05, 0xa6, 0x77, 0x29, 0x49, 0x47, 0x73, 0xd6, 0x50, 0x22, 0x98, 0xd3, - 0x72, 0xdf, 0x1a, 0x82, 0x92, 0x9a, 0xec, 0x01, 0xec, 0xa9, 0xe7, 0xd3, 0xfc, 0xaa, 0x9c, 0x03, - 0x57, 0xb4, 0xdc, 0xaa, 0xb7, 0xe8, 0xd4, 0x05, 0xbb, 0x3c, 0xd1, 0x44, 0x9a, 0x68, 0xf5, 0x49, - 0xd3, 0xd5, 0x7c, 0x5a, 0x5f, 0x7f, 0x5a, 0x7d, 0xe1, 0x73, 0xbe, 0xa1, 0x7b, 0xfa, 0x87, 0x6d, - 0x9d, 0x66, 0xca, 0x8d, 0xd9, 0xdf, 0xc5, 0x9f, 0x79, 0x7a, 0xa7, 0x38, 0xd0, 0xd3, 0x3b, 0x4f, - 0xc0, 0x30, 0x09, 0xba, 0x6d, 0x26, 0x2a, 0x95, 0x98, 0x8a, 0x30, 0x7c, 0x21, 0xe8, 0xb6, 0xcd, - 0x91, 0xb1, 0x2a, 0xe8, 0x7d, 0x50, 0xae, 0x93, 0xb8, 0x16, 0xf9, 0x2c, 0x7b, 0x82, 0xb0, 0xec, - 0x3c, 0xc8, 0xcc, 0x65, 0x29, 0xd8, 0x6c, 0xa8, 0x37, 0x70, 0x5f, 0x85, 0x91, 0xf5, 0x56, 0xb7, - 0xe1, 0x07, 0xa8, 0x03, 0x23, 0x3c, 0x97, 0x82, 0x38, 0xed, 0x2d, 0xe8, 0x9d, 0x9c, 0x55, 0x68, - 0x51, 0x28, 0xfc, 0x4a, 0xad, 0xa0, 0xe3, 0xfe, 0x76, 0x01, 0xa8, 0x6a, 0xbe, 0xbc, 0x80, 0xfe, - 0x76, 0xcf, 0x4b, 0x33, 0x3f, 0x93, 0xf3, 0xd2, 0xcc, 0x04, 0xab, 0x9c, 0xf3, 0xc8, 0x4c, 0x0b, - 0x26, 0x98, 0x73, 0x44, 0x9e, 0x81, 0x42, 0xac, 0x7e, 0x7a, 0xc0, 0xf4, 0x03, 0x7a, 0x53, 0x71, - 0x22, 0xe8, 0x20, 0x6c, 0x22, 0x47, 0xbb, 0x70, 0x82, 0xa7, 0xe9, 0x5c, 0x24, 0x2d, 0x6f, 0xd7, - 0x48, 0xc7, 0x35, 0x70, 0xca, 0x03, 0xd9, 0x8a, 0x07, 0x78, 0x2f, 0xf6, 0xa2, 0xc3, 0x79, 0x34, - 0xdc, 0xdf, 0x1f, 0x06, 0xcd, 0x7d, 0x31, 0xc0, 0xce, 0x7a, 0x25, 0xe3, 0xac, 0x5a, 0xb5, 0xe2, - 0xac, 0x92, 0x1e, 0x20, 0xce, 0xad, 0x4c, 0xff, 0x14, 0xed, 0x54, 0x93, 0xb4, 0x3a, 0x62, 0x5f, - 0xaa, 0x4e, 0x5d, 0x24, 0xad, 0x0e, 0x66, 0x25, 0xea, 0xf2, 0xe1, 0x70, 0xdf, 0xcb, 0x87, 0x4d, - 0x28, 0x36, 0xbc, 0x6e, 0x83, 0x88, 0x68, 0x4d, 0x0b, 0x7e, 0x49, 0x76, 0x1d, 0x82, 0xfb, 0x25, - 0xd9, 0xbf, 0x98, 0x13, 0xa0, 0x8c, 0xa1, 0x29, 0xc3, 0x57, 0x84, 0x41, 0xd7, 0x02, 0x63, 0x50, - 0x11, 0x31, 0x9c, 0x31, 0xa8, 0x9f, 0x38, 0x25, 0x86, 0x3a, 0x30, 0x5a, 0xe3, 0x09, 0x53, 0x84, - 0x7c, 0x73, 0xc9, 0xc6, 0xed, 0x4a, 0x86, 0x90, 0x5b, 0x5e, 0xc4, 0x0f, 0x2c, 0xc9, 0xb8, 0xe7, - 0xa0, 0xac, 0x3d, 0x8e, 0x41, 0x3f, 0x83, 0xca, 0xd5, 0xa1, 0x7d, 0x86, 0x45, 0x2f, 0xf1, 0x30, - 0x2b, 0x71, 0xbf, 0x31, 0x0c, 0xca, 0xee, 0xa6, 0xdf, 0x05, 0xf4, 0x6a, 0x5a, 0x66, 0x21, 0xe3, - 0x5e, 0x7c, 0x18, 0x60, 0x51, 0x4a, 0x65, 0xc0, 0x36, 0x89, 0x1a, 0x4a, 0xe7, 0x16, 0xac, 0x5d, - 0xc9, 0x80, 0xab, 0x7a, 0x21, 0x36, 0xeb, 0x52, 0x01, 0xbe, 0x2d, 0xdc, 0xf9, 0xd9, 0x60, 0x69, - 0xe9, 0xe6, 0xc7, 0xaa, 0x06, 0x4b, 0x4d, 0xd0, 0xd6, 0xbc, 0xff, 0x22, 0x68, 0xd3, 0x86, 0xf3, - 0x49, 0xc3, 0xca, 0x83, 0xab, 0x74, 0x08, 0x36, 0xa8, 0xa2, 0x65, 0x38, 0x1e, 0x93, 0x64, 0xed, - 0x7a, 0x40, 0x22, 0x95, 0x36, 0x40, 0xe4, 0xbe, 0x50, 0x37, 0x25, 0xaa, 0xd9, 0x0a, 0xb8, 0xb7, - 0x4d, 0x6e, 0x9c, 0x6b, 0xf1, 0xc0, 0x71, 0xae, 0x8b, 0x30, 0xb5, 0xe5, 0xf9, 0xad, 0x6e, 0x44, - 0xfa, 0x46, 0xcb, 0x2e, 0x65, 0xca, 0x71, 0x4f, 0x0b, 0x76, 0x59, 0xa7, 0xe5, 0x35, 0xe2, 0xca, - 0xa8, 0x76, 0x59, 0x87, 0x02, 0x30, 0x87, 0xbb, 0xbf, 0xe9, 0x00, 0x4f, 0x3a, 0x34, 0xb7, 0xb5, - 0xe5, 0x07, 0x7e, 0xb2, 0x8b, 0xbe, 0xea, 0xc0, 0x54, 0x10, 0xd6, 0xc9, 0x5c, 0x90, 0xf8, 0x12, - 0x68, 0x2f, 0x13, 0x3c, 0xa3, 0x75, 0x25, 0x83, 0x9e, 0x67, 0xb0, 0xc8, 0x42, 0x71, 0x4f, 0x37, - 0xdc, 0x33, 0x70, 0x2a, 0x17, 0x81, 0xfb, 0xbd, 0x21, 0x30, 0x73, 0x27, 0xa1, 0xe7, 0xa0, 0xd8, - 0x62, 0xd9, 0x3c, 0x9c, 0x3b, 0x4c, 0x8a, 0xc5, 0xe6, 0x8a, 0xa7, 0xfb, 0xe0, 0x98, 0xd0, 0x22, - 0x94, 0x59, 0x42, 0x26, 0x91, 0x6b, 0xa5, 0x60, 0xa4, 0x39, 0x28, 0xe3, 0xb4, 0xe8, 0x96, 0xf9, - 0x13, 0xeb, 0xcd, 0xd0, 0x6b, 0x30, 0xba, 0xc9, 0xd3, 0x52, 0xda, 0xf3, 0x0f, 0x8a, 0x3c, 0x97, - 0x4c, 0x8e, 0x92, 0x49, 0x2f, 0x6f, 0xa5, 0xff, 0x62, 0x49, 0x11, 0xed, 0xc2, 0x98, 0x27, 0xbf, - 0xe9, 0xb0, 0xad, 0xcb, 0x17, 0xc6, 0xfa, 0x11, 0xd1, 0x35, 0xf2, 0x1b, 0x2a, 0x72, 0x99, 0x30, - 0xa4, 0xe2, 0x40, 0x61, 0x48, 0xdf, 0x72, 0x00, 0xd2, 0x37, 0x3c, 0xd0, 0x0d, 0x18, 0x8b, 0x9f, - 0x36, 0x8c, 0x1a, 0x36, 0x6e, 0xdd, 0x0b, 0x8c, 0xda, 0xcd, 0x54, 0x01, 0xc1, 0x8a, 0xda, 0xed, - 0x0c, 0x31, 0x3f, 0x71, 0xe0, 0x64, 0xde, 0x5b, 0x23, 0xf7, 0xb0, 0xc7, 0x07, 0xb5, 0xc1, 0x88, - 0x06, 0xeb, 0x11, 0xd9, 0xf2, 0x6f, 0xe4, 0x24, 0x47, 0xe6, 0x05, 0x38, 0xad, 0xe3, 0xbe, 0x39, - 0x0a, 0x8a, 0xf0, 0x21, 0xd9, 0x6c, 0x1e, 0xa3, 0xfa, 0x55, 0x23, 0xbd, 0x2c, 0xa9, 0xea, 0x61, - 0x06, 0xc5, 0xa2, 0x94, 0xea, 0x58, 0x32, 0x80, 0x5e, 0xb0, 0x6c, 0xb6, 0x0a, 0x65, 0xa0, 0x3d, - 0x56, 0xa5, 0x79, 0x56, 0xa0, 0xe2, 0x91, 0x58, 0x81, 0x46, 0xec, 0x5b, 0x81, 0x9e, 0x80, 0xd1, - 0x28, 0x6c, 0x91, 0x39, 0x7c, 0x45, 0x68, 0x0e, 0x69, 0x00, 0x04, 0x07, 0x63, 0x59, 0x7e, 0x87, - 0x76, 0x10, 0xf4, 0x3b, 0xce, 0x3e, 0x86, 0xa6, 0x92, 0xad, 0x33, 0x21, 0x37, 0x93, 0x1c, 0x53, - 0x83, 0xee, 0xc4, 0x7a, 0xf5, 0x35, 0x07, 0x8e, 0x93, 0xa0, 0x16, 0xed, 0x32, 0x3c, 0x02, 0x9b, - 0xf0, 0x4f, 0x5f, 0xb5, 0xb1, 0xf9, 0x2e, 0x64, 0x91, 0x73, 0x37, 0x50, 0x0f, 0x18, 0xf7, 0x76, - 0x03, 0xad, 0xc1, 0x58, 0xcd, 0x13, 0x2b, 0xa2, 0x7c, 0x90, 0x15, 0xc1, 0xbd, 0x6c, 0x73, 0x62, - 0x29, 0x28, 0x24, 0xee, 0x8f, 0x0a, 0x70, 0x22, 0xa7, 0x4b, 0xec, 0xb2, 0x55, 0x9b, 0xae, 0xc8, - 0x4b, 0xf5, 0xec, 0x7e, 0x5c, 0x11, 0x70, 0xac, 0x6a, 0xa0, 0x75, 0x38, 0xb9, 0xdd, 0x8e, 0x53, - 0x2c, 0x0b, 0x61, 0x90, 0x90, 0x1b, 0x72, 0x77, 0x4a, 0xdf, 0xf5, 0xc9, 0x95, 0x9c, 0x3a, 0x38, - 0xb7, 0x25, 0x15, 0x5f, 0x48, 0xe0, 0x6d, 0xb6, 0x48, 0x5a, 0x24, 0xae, 0x0a, 0x2a, 0xf1, 0xe5, - 0x42, 0xa6, 0x1c, 0xf7, 0xb4, 0x40, 0x9f, 0x71, 0xe0, 0x81, 0x98, 0x44, 0x3b, 0x24, 0xaa, 0xfa, - 0x75, 0xb2, 0xd0, 0x8d, 0x93, 0xb0, 0x4d, 0xa2, 0x3b, 0x34, 0xad, 0xce, 0xdc, 0xdc, 0x9b, 0x79, - 0xa0, 0xda, 0x1f, 0x1b, 0xde, 0x8f, 0x94, 0xfb, 0x19, 0x07, 0x26, 0xab, 0x4c, 0xf1, 0x56, 0xb2, - 0xb4, 0xed, 0x5c, 0xa2, 0x8f, 0xa9, 0xe4, 0x16, 0x19, 0xae, 0x68, 0xa6, 0xa3, 0x70, 0x5f, 0x86, - 0xa9, 0x2a, 0x69, 0x7b, 0x9d, 0x26, 0xbb, 0xe7, 0xcb, 0x63, 0xb7, 0xce, 0x41, 0x29, 0x96, 0xb0, - 0xec, 0xf3, 0x41, 0xaa, 0x32, 0x4e, 0xeb, 0xa0, 0x47, 0x79, 0x9c, 0x99, 0xbc, 0x2d, 0x54, 0xe2, - 0x5a, 0x07, 0x0f, 0x4e, 0x8b, 0xb1, 0x2c, 0x73, 0xdf, 0x72, 0x60, 0x3c, 0x6d, 0x4f, 0xb6, 0x50, - 0x03, 0x8e, 0xd5, 0xb4, 0x9b, 0x76, 0xe9, 0x1d, 0x87, 0xc1, 0x2f, 0xe5, 0xf1, 0x14, 0xc7, 0x26, - 0x12, 0x9c, 0xc5, 0x7a, 0xf0, 0x30, 0xbd, 0xcf, 0x17, 0xe0, 0x98, 0xea, 0xaa, 0x70, 0x32, 0xbe, - 0x91, 0x8d, 0xa6, 0xc3, 0x36, 0xd2, 0xf4, 0x98, 0x73, 0xbf, 0x4f, 0x44, 0xdd, 0x1b, 0xd9, 0x88, - 0xba, 0x43, 0x25, 0xdf, 0xe3, 0x37, 0xfd, 0x56, 0x01, 0xc6, 0x54, 0xd2, 0xa0, 0xe7, 0xa0, 0xc8, - 0x54, 0xc9, 0xbb, 0x13, 0x88, 0x99, 0x5a, 0x8a, 0x39, 0x26, 0x8a, 0x92, 0x45, 0xec, 0xdc, 0x71, - 0xe2, 0xd9, 0x12, 0x37, 0x3e, 0x7a, 0x51, 0x82, 0x39, 0x26, 0xb4, 0x02, 0x43, 0x24, 0xa8, 0x0b, - 0xc9, 0xf8, 0xe0, 0x08, 0xd9, 0x43, 0x5f, 0x17, 0x82, 0x3a, 0xa6, 0x58, 0x58, 0xe6, 0x32, 0x2e, - 0x00, 0x65, 0x9e, 0x75, 0x11, 0xd2, 0x8f, 0x28, 0x75, 0xdf, 0x0f, 0x46, 0xce, 0x3a, 0x91, 0x0b, - 0x5f, 0x28, 0x5d, 0xbd, 0x6f, 0x71, 0x09, 0x6d, 0x2b, 0xad, 0xe3, 0xfe, 0xf2, 0x10, 0x8c, 0x54, - 0xbb, 0x9b, 0x54, 0x49, 0xf8, 0xa6, 0x03, 0x27, 0xae, 0x67, 0xd2, 0x3a, 0xa7, 0x9b, 0xe4, 0xaa, - 0x3d, 0x0b, 0xae, 0x1e, 0x76, 0xf6, 0x80, 0x7c, 0xf4, 0x3e, 0xa7, 0x10, 0xe7, 0x75, 0xc7, 0xc8, - 0xac, 0x3a, 0x74, 0x28, 0x99, 0x55, 0x6f, 0x1c, 0xf2, 0xbd, 0x8b, 0x89, 0x7e, 0x77, 0x2e, 0xdc, - 0xdf, 0x2f, 0x02, 0xf0, 0xaf, 0xb1, 0xd6, 0x49, 0x06, 0xb1, 0xb3, 0x3d, 0x03, 0xe3, 0x0d, 0x12, - 0x90, 0x48, 0x06, 0x15, 0x66, 0x9e, 0x1c, 0x5a, 0xd6, 0xca, 0xb0, 0x51, 0x93, 0x29, 0x35, 0x41, - 0x12, 0xed, 0x72, 0xc1, 0x37, 0x7b, 0xb7, 0x42, 0x95, 0x60, 0xad, 0x16, 0x9a, 0x35, 0x5c, 0x26, - 0xdc, 0xfb, 0x3e, 0xb9, 0x8f, 0x87, 0xe3, 0x7d, 0x30, 0x69, 0x26, 0x2a, 0x11, 0xd2, 0x9e, 0xf2, - 0x96, 0x9b, 0xf9, 0x4d, 0x70, 0xa6, 0x36, 0xdd, 0x05, 0xf5, 0x68, 0x17, 0x77, 0x03, 0x21, 0xf6, - 0xa9, 0x5d, 0xb0, 0xc8, 0xa0, 0x58, 0x94, 0xb2, 0x0c, 0x0f, 0xec, 0x00, 0xe4, 0x70, 0x91, 0x25, - 0x22, 0xcd, 0xf0, 0xa0, 0x95, 0x61, 0xa3, 0x26, 0xa5, 0x20, 0xec, 0x94, 0x60, 0xee, 0xb3, 0x8c, - 0x71, 0xb1, 0x03, 0x93, 0xa1, 0x69, 0x5f, 0xe1, 0x32, 0xd0, 0xbb, 0x06, 0x5c, 0x7a, 0x46, 0x5b, - 0x1e, 0xe5, 0x90, 0x31, 0xc7, 0x64, 0xf0, 0x53, 0xb9, 0x57, 0xbf, 0x82, 0x30, 0x6e, 0xc6, 0xa4, - 0xf6, 0xbd, 0x25, 0xb0, 0x0e, 0x27, 0x3b, 0x61, 0x7d, 0x3d, 0xf2, 0xc3, 0xc8, 0x4f, 0x76, 0x17, - 0x5a, 0x5e, 0x1c, 0xb3, 0x85, 0x31, 0x61, 0xca, 0x43, 0xeb, 0x39, 0x75, 0x70, 0x6e, 0x4b, 0xaa, - 0xa1, 0x74, 0x04, 0x90, 0x45, 0x86, 0x15, 0xb9, 0x44, 0x27, 0x2b, 0x62, 0x55, 0xea, 0x9e, 0x80, - 0xe3, 0xd5, 0x6e, 0xa7, 0xd3, 0xf2, 0x49, 0x5d, 0xb9, 0x24, 0xdc, 0xf7, 0xc3, 0x31, 0x91, 0x77, - 0x55, 0x49, 0x1f, 0x07, 0xca, 0x12, 0xee, 0xfe, 0xb9, 0x03, 0xc7, 0x32, 0x71, 0x38, 0xe8, 0xb5, - 0xac, 0xcc, 0x60, 0x27, 0x1f, 0xa8, 0x26, 0x2d, 0x88, 0xe4, 0x9e, 0x79, 0xf2, 0x47, 0x53, 0x06, - 0xd1, 0x5b, 0xbb, 0xbc, 0xc2, 0x42, 0xcd, 0xf9, 0x91, 0xa2, 0x47, 0xe2, 0xbb, 0x9f, 0x2e, 0x40, - 0x7e, 0xf0, 0x13, 0xfa, 0x68, 0xef, 0x04, 0x3c, 0x67, 0x71, 0x02, 0x44, 0xf4, 0x55, 0xff, 0x39, - 0x08, 0xcc, 0x39, 0x58, 0xb5, 0x34, 0x07, 0x82, 0x6e, 0xef, 0x4c, 0xfc, 0x2f, 0x07, 0xca, 0x1b, - 0x1b, 0x97, 0xd5, 0x39, 0x87, 0xe1, 0x74, 0xcc, 0x2f, 0xe7, 0x33, 0x1f, 0xf1, 0x42, 0xd8, 0xee, - 0x70, 0x97, 0xb1, 0x70, 0x65, 0xb3, 0x14, 0xb8, 0xd5, 0xdc, 0x1a, 0xb8, 0x4f, 0x4b, 0x74, 0x09, - 0x4e, 0xe8, 0x25, 0x55, 0xed, 0xc5, 0xc1, 0xa2, 0x48, 0x88, 0xd3, 0x5b, 0x8c, 0xf3, 0xda, 0x64, - 0x51, 0x09, 0x73, 0x27, 0x3b, 0xae, 0x72, 0x50, 0x89, 0x62, 0x9c, 0xd7, 0xc6, 0x5d, 0x83, 0xf2, - 0x86, 0x17, 0xa9, 0x81, 0x7f, 0x00, 0xa6, 0x6a, 0x61, 0x5b, 0x9a, 0x99, 0x2e, 0x93, 0x1d, 0xd2, - 0x12, 0x43, 0xe6, 0xcf, 0x7c, 0x64, 0xca, 0x70, 0x4f, 0x6d, 0xf7, 0xbf, 0x9f, 0x05, 0x75, 0xd9, - 0x70, 0x80, 0x13, 0xa6, 0xa3, 0xc2, 0x42, 0x8b, 0x96, 0xc3, 0x42, 0x15, 0xaf, 0xcd, 0x84, 0x86, - 0x26, 0x69, 0x68, 0xe8, 0x88, 0xed, 0xd0, 0x50, 0x25, 0x71, 0xf6, 0x84, 0x87, 0x7e, 0xd9, 0x81, - 0xf1, 0x20, 0xac, 0x13, 0xe5, 0xcb, 0x1b, 0x65, 0x62, 0xef, 0x4b, 0xf6, 0xa2, 0xec, 0x79, 0x98, - 0xa3, 0x40, 0xcf, 0x43, 0x96, 0xd5, 0x11, 0xa5, 0x17, 0x61, 0xa3, 0x1f, 0x68, 0x49, 0x33, 0x7c, - 0x72, 0xff, 0xc2, 0x83, 0x79, 0xfa, 0xca, 0x6d, 0xad, 0x98, 0x37, 0x34, 0xb9, 0xa9, 0x64, 0xcb, - 0xa0, 0x27, 0x6f, 0x90, 0x69, 0x6e, 0x12, 0x99, 0xc5, 0x39, 0x95, 0xa7, 0x5c, 0x18, 0xe1, 0xb1, - 0xcd, 0x22, 0xf5, 0x12, 0xf3, 0xde, 0xf1, 0xb8, 0x67, 0x2c, 0x4a, 0x50, 0x22, 0xe3, 0x05, 0xca, - 0xb6, 0xde, 0x64, 0x30, 0xe2, 0x11, 0xf2, 0x03, 0x06, 0xd0, 0xb3, 0xba, 0x1e, 0x3c, 0x3e, 0x88, - 0x1e, 0x3c, 0xd1, 0x57, 0x07, 0xfe, 0x9c, 0x03, 0xe3, 0x35, 0xed, 0x8d, 0x84, 0xca, 0xe3, 0xb6, - 0xde, 0x82, 0xce, 0x7b, 0xca, 0x82, 0x3b, 0x85, 0x8c, 0x37, 0x19, 0x0c, 0xea, 0x2c, 0xdf, 0x24, - 0x53, 0xfa, 0xd9, 0xd1, 0x6f, 0x25, 0xc5, 0x84, 0x69, 0x44, 0x90, 0x71, 0x97, 0x14, 0x86, 0x05, - 0x2d, 0xf4, 0x3a, 0x8c, 0xc9, 0xf0, 0x78, 0x11, 0x46, 0x8e, 0x6d, 0x58, 0xe9, 0x4d, 0x57, 0xa0, - 0x4c, 0x52, 0xc7, 0xa1, 0x58, 0x51, 0x44, 0x4d, 0x18, 0xaa, 0x7b, 0x0d, 0x11, 0x50, 0xbe, 0x6a, - 0x27, 0x09, 0xa8, 0xa4, 0xc9, 0xf4, 0xb3, 0xc5, 0xb9, 0x65, 0x4c, 0x49, 0xa0, 0x1b, 0x69, 0x92, - 0xf9, 0x29, 0x6b, 0xa7, 0xaf, 0x29, 0x26, 0x71, 0xb3, 0x46, 0x4f, 0xce, 0xfa, 0xba, 0xf0, 0x9e, - 0xfe, 0x35, 0x46, 0x76, 0xc9, 0x4e, 0x16, 0x51, 0x9e, 0xb2, 0x24, 0xf5, 0xc0, 0x52, 0x2a, 0xcd, - 0x24, 0xe9, 0x54, 0x7e, 0xd6, 0x16, 0x15, 0x96, 0x78, 0x83, 0x3f, 0xdb, 0xbd, 0xb1, 0xb1, 0x8e, - 0x19, 0x76, 0xd4, 0x82, 0x91, 0x0e, 0x0b, 0x02, 0xa9, 0xfc, 0x9c, 0xad, 0xb3, 0x85, 0x07, 0x95, - 0xf0, 0xb5, 0xc9, 0xff, 0xc7, 0x82, 0x06, 0xba, 0x00, 0xa3, 0xfc, 0xad, 0x14, 0x1e, 0xd0, 0x5f, - 0x3e, 0x3f, 0xdd, 0xff, 0xc5, 0x95, 0xf4, 0xa0, 0xe0, 0xbf, 0x63, 0x2c, 0xdb, 0xa2, 0xcf, 0x3b, - 0x30, 0x49, 0x39, 0x6a, 0xfa, 0xb8, 0x4b, 0x05, 0xd9, 0xe2, 0x59, 0x57, 0x63, 0x2a, 0x91, 0x48, - 0x5e, 0xa3, 0xd4, 0xa4, 0x4b, 0x06, 0x39, 0x9c, 0x21, 0x8f, 0xde, 0x80, 0xb1, 0xd8, 0xaf, 0x93, - 0x9a, 0x17, 0xc5, 0x95, 0x13, 0x87, 0xd3, 0x95, 0xd4, 0x5f, 0x23, 0x08, 0x61, 0x45, 0x12, 0xfd, - 0x1a, 0x7b, 0x5d, 0x53, 0xbc, 0x84, 0x5f, 0xe3, 0x62, 0xfd, 0x49, 0x5b, 0x7b, 0x5f, 0x7a, 0xa6, - 0x24, 0x66, 0xe1, 0xc6, 0x30, 0xc9, 0xe1, 0x2c, 0x7d, 0xf4, 0x77, 0x1c, 0x38, 0xc5, 0xf3, 0xe4, - 0x67, 0x1f, 0x76, 0x38, 0x75, 0x87, 0xf6, 0x19, 0x76, 0x13, 0x61, 0x2e, 0x0f, 0x25, 0xce, 0xa7, - 0xc4, 0xb2, 0xda, 0x9a, 0x6f, 0xf1, 0x9c, 0xb6, 0xea, 0xb7, 0x1c, 0xfc, 0xfd, 0x1d, 0xf4, 0x14, - 0x94, 0x3b, 0xe2, 0x38, 0xf4, 0xe3, 0x36, 0xbb, 0x57, 0x32, 0xc4, 0x6f, 0xfc, 0xad, 0xa7, 0x60, - 0xac, 0xd7, 0x31, 0x52, 0x1c, 0x3f, 0xb1, 0x5f, 0x8a, 0x63, 0x74, 0x15, 0xca, 0x49, 0xd8, 0x12, - 0x59, 0x3e, 0xe3, 0x4a, 0x85, 0xad, 0xc0, 0xb3, 0x79, 0x7b, 0x6b, 0x43, 0x55, 0x4b, 0x35, 0xd9, - 0x14, 0x16, 0x63, 0x1d, 0x0f, 0x8b, 0xe5, 0x15, 0xef, 0x0f, 0x44, 0x4c, 0x85, 0xbd, 0x3f, 0x13, - 0xcb, 0xab, 0x17, 0x62, 0xb3, 0x2e, 0x5a, 0x86, 0xe3, 0x9d, 0x1e, 0x1d, 0x98, 0xdf, 0x67, 0x53, - 0x21, 0x11, 0xbd, 0x0a, 0x70, 0x6f, 0x1b, 0x43, 0xfb, 0x7d, 0x60, 0x3f, 0xed, 0xb7, 0x4f, 0xc2, - 0xdf, 0x07, 0xef, 0x24, 0xe1, 0x2f, 0xaa, 0xc3, 0x83, 0x5e, 0x37, 0x09, 0x59, 0x72, 0x19, 0xb3, - 0x09, 0x0f, 0x6b, 0x7e, 0x98, 0x47, 0x4a, 0xdf, 0xdc, 0x9b, 0x79, 0x70, 0x6e, 0x9f, 0x7a, 0x78, - 0x5f, 0x2c, 0xe8, 0x55, 0x18, 0x23, 0x22, 0x69, 0x71, 0xe5, 0x67, 0x6c, 0x09, 0x09, 0x66, 0x1a, - 0x64, 0x19, 0x31, 0xca, 0x61, 0x58, 0xd1, 0x43, 0x1b, 0x50, 0x6e, 0x86, 0x71, 0x32, 0xd7, 0xf2, - 0xbd, 0x98, 0xc4, 0x95, 0x87, 0xd8, 0xa2, 0xc9, 0x95, 0xbd, 0x2e, 0xca, 0x6a, 0xe9, 0x9a, 0xb9, - 0x98, 0xb6, 0xc4, 0x3a, 0x1a, 0x44, 0x98, 0xf7, 0x92, 0xc5, 0x74, 0x4b, 0x47, 0xd0, 0x59, 0x36, - 0xb0, 0xc7, 0xf2, 0x30, 0xaf, 0x87, 0xf5, 0xaa, 0x59, 0x5b, 0xb9, 0x2f, 0x75, 0x20, 0xce, 0xe2, - 0x44, 0xcf, 0xc0, 0x78, 0x27, 0xac, 0x57, 0x3b, 0xa4, 0xb6, 0xee, 0x25, 0xb5, 0x66, 0x65, 0xc6, - 0xb4, 0xba, 0xad, 0x6b, 0x65, 0xd8, 0xa8, 0x89, 0x3a, 0x30, 0xda, 0xe6, 0x59, 0x07, 0x2a, 0x8f, - 0xd8, 0xd2, 0x6d, 0x44, 0x1a, 0x03, 0x2e, 0x2f, 0x88, 0x1f, 0x58, 0x92, 0x41, 0xff, 0xd8, 0x81, - 0x63, 0x99, 0x9b, 0x52, 0x95, 0x77, 0x58, 0x13, 0x59, 0x4c, 0xc4, 0xf3, 0x8f, 0xb1, 0xe9, 0x33, - 0x81, 0xb7, 0x7a, 0x41, 0x38, 0xdb, 0x23, 0x3e, 0x2f, 0x2c, 0x75, 0x48, 0xe5, 0x51, 0x7b, 0xf3, - 0xc2, 0x10, 0xca, 0x79, 0x61, 0x3f, 0xb0, 0x24, 0x83, 0x9e, 0x80, 0x51, 0x91, 0xe5, 0xaf, 0xf2, - 0x98, 0xe9, 0x82, 0x16, 0xc9, 0x00, 0xb1, 0x2c, 0x9f, 0x7e, 0x3f, 0x1c, 0xef, 0x51, 0xdd, 0x0e, - 0x94, 0xbf, 0xe2, 0x37, 0x1c, 0xd0, 0xaf, 0x56, 0x5b, 0x7f, 0x29, 0xe4, 0x19, 0x18, 0xaf, 0xf1, - 0x67, 0x19, 0xf9, 0xe5, 0xec, 0x61, 0xd3, 0xfe, 0xb9, 0xa0, 0x95, 0x61, 0xa3, 0xa6, 0x7b, 0x11, - 0x50, 0x6f, 0x1a, 0xf7, 0x3b, 0x4a, 0x8e, 0xf4, 0x4f, 0x1d, 0x98, 0x30, 0x64, 0x06, 0xeb, 0x4e, - 0xc6, 0x25, 0x40, 0x6d, 0x3f, 0x8a, 0xc2, 0x48, 0x7f, 0xff, 0x4e, 0x24, 0x50, 0x60, 0x57, 0xd4, - 0x56, 0x7b, 0x4a, 0x71, 0x4e, 0x0b, 0xf7, 0xb7, 0x87, 0x21, 0x0d, 0x99, 0x56, 0x79, 0x72, 0x9d, - 0xbe, 0x79, 0x72, 0x9f, 0x84, 0xb1, 0x97, 0xe3, 0x30, 0x58, 0x4f, 0xb3, 0xe9, 0xaa, 0x6f, 0xf1, - 0x6c, 0x75, 0xed, 0x0a, 0xab, 0xa9, 0x6a, 0xb0, 0xda, 0xaf, 0x2c, 0xf9, 0xad, 0xa4, 0x37, 0xdd, - 0xea, 0xb3, 0xcf, 0x71, 0x38, 0x56, 0x35, 0xd8, 0x53, 0x78, 0x3b, 0x44, 0x19, 0xc6, 0xd3, 0xa7, - 0xf0, 0xf8, 0x0b, 0x0d, 0xac, 0x0c, 0x9d, 0x83, 0x92, 0x32, 0xaa, 0x0b, 0x4b, 0xbd, 0x9a, 0x29, - 0x65, 0x79, 0xc7, 0x69, 0x1d, 0x26, 0x10, 0x0a, 0x43, 0xac, 0x30, 0xa1, 0x54, 0x6d, 0xa8, 0x27, - 0x19, 0xd3, 0x2e, 0xe7, 0xed, 0x12, 0x8c, 0x15, 0xc9, 0x3c, 0x47, 0x6b, 0xe9, 0x50, 0x1c, 0xad, - 0x5a, 0xfc, 0x7e, 0x71, 0xd0, 0xf8, 0x7d, 0x73, 0x6d, 0x8f, 0x0d, 0xb4, 0xb6, 0x3f, 0x39, 0x04, - 0xa3, 0xcf, 0x93, 0x88, 0x65, 0x19, 0x7f, 0x02, 0x46, 0x77, 0xf8, 0xbf, 0xd9, 0xcb, 0x9f, 0xa2, - 0x06, 0x96, 0xe5, 0xf4, 0xbb, 0x6d, 0x76, 0xfd, 0x56, 0x7d, 0x31, 0xdd, 0xc5, 0x69, 0x82, 0x42, - 0x59, 0x80, 0xd3, 0x3a, 0xb4, 0x41, 0x83, 0x4a, 0xf6, 0xed, 0xb6, 0xdf, 0xf3, 0xca, 0xfb, 0xb2, - 0x2c, 0xc0, 0x69, 0x1d, 0xf4, 0x18, 0x8c, 0x34, 0xfc, 0x64, 0xc3, 0x6b, 0x64, 0xdd, 0x84, 0xcb, - 0x0c, 0x8a, 0x45, 0x29, 0x73, 0x13, 0xf9, 0xc9, 0x46, 0x44, 0x98, 0x65, 0xb7, 0x27, 0xf7, 0xc4, - 0xb2, 0x56, 0x86, 0x8d, 0x9a, 0xac, 0x4b, 0xa1, 0x18, 0x99, 0x88, 0xe2, 0x4c, 0xbb, 0x24, 0x0b, - 0x70, 0x5a, 0x87, 0xae, 0xff, 0x5a, 0xd8, 0xee, 0xf8, 0x2d, 0x11, 0x5f, 0xac, 0xad, 0xff, 0x05, - 0x01, 0xc7, 0xaa, 0x06, 0xad, 0x4d, 0x59, 0x18, 0x65, 0x3f, 0xd9, 0x67, 0xc7, 0xd6, 0x05, 0x1c, - 0xab, 0x1a, 0xee, 0xf3, 0x30, 0xc1, 0x77, 0xf2, 0x42, 0xcb, 0xf3, 0xdb, 0xcb, 0x0b, 0xe8, 0x42, - 0x4f, 0xfc, 0xfe, 0x13, 0x39, 0xf1, 0xfb, 0xa7, 0x8c, 0x46, 0xbd, 0x71, 0xfc, 0xee, 0x0f, 0x0a, - 0x30, 0x76, 0x84, 0x2f, 0x37, 0x1e, 0xf9, 0x23, 0xc4, 0xe8, 0x46, 0xe6, 0xd5, 0xc6, 0x75, 0x9b, - 0xd7, 0x71, 0xf6, 0x7d, 0xb1, 0xf1, 0xbf, 0x14, 0xe0, 0xb4, 0xac, 0x2a, 0x75, 0xb9, 0xe5, 0x05, - 0xf6, 0x5e, 0xd6, 0xe1, 0x4f, 0x74, 0x64, 0x4c, 0xf4, 0xba, 0x3d, 0x6d, 0x74, 0x79, 0xa1, 0xef, - 0x54, 0xbf, 0x9a, 0x99, 0x6a, 0x6c, 0x95, 0xea, 0xfe, 0x93, 0xfd, 0x17, 0x0e, 0x4c, 0xe7, 0x4f, - 0xf6, 0x11, 0x3c, 0x94, 0xf9, 0x86, 0xf9, 0x50, 0xe6, 0x2f, 0xd8, 0x5b, 0x62, 0xe6, 0x50, 0xfa, - 0x3c, 0x99, 0xf9, 0x67, 0x0e, 0x9c, 0x94, 0x0d, 0xd8, 0xe9, 0x39, 0xef, 0x07, 0x2c, 0x92, 0xe5, - 0xf0, 0x97, 0xd9, 0xeb, 0xc6, 0x32, 0x7b, 0xd1, 0xde, 0xc0, 0xf5, 0x71, 0xf4, 0x7d, 0x60, 0xfc, - 0x4f, 0x1d, 0xa8, 0xe4, 0x35, 0x38, 0x82, 0x4f, 0xfe, 0x9a, 0xf9, 0xc9, 0x9f, 0x3f, 0x9c, 0x91, - 0xf7, 0xff, 0xe0, 0x95, 0x7e, 0x13, 0x85, 0x5a, 0x52, 0xae, 0x72, 0x6c, 0xf9, 0x68, 0x39, 0x89, - 0x7c, 0x01, 0xad, 0x05, 0x23, 0x31, 0x8b, 0xda, 0x10, 0x4b, 0xe0, 0xa2, 0x0d, 0x69, 0x8b, 0xe2, - 0x13, 0x36, 0x76, 0xf6, 0x3f, 0x16, 0x34, 0xdc, 0xdf, 0x2c, 0xc0, 0x19, 0xf5, 0x00, 0x2e, 0xd9, - 0x21, 0xad, 0x74, 0x7f, 0xb0, 0x37, 0x19, 0x3c, 0xf5, 0xd3, 0xde, 0x9b, 0x0c, 0x29, 0x89, 0x74, - 0x2f, 0xa4, 0x30, 0xac, 0xd1, 0x44, 0x55, 0x38, 0xc5, 0xde, 0x50, 0x58, 0xf2, 0x03, 0xaf, 0xe5, - 0xbf, 0x4a, 0x22, 0x4c, 0xda, 0xe1, 0x8e, 0xd7, 0x12, 0x92, 0xba, 0xba, 0xff, 0xbb, 0x94, 0x57, - 0x09, 0xe7, 0xb7, 0xed, 0xd1, 0xb8, 0x87, 0x06, 0xd5, 0xb8, 0xdd, 0x3f, 0x71, 0x60, 0xfc, 0x08, - 0x9f, 0x0b, 0x0e, 0xcd, 0x2d, 0xf1, 0xac, 0xbd, 0x2d, 0xd1, 0x67, 0x1b, 0xec, 0x15, 0xa1, 0xe7, - 0x05, 0x55, 0xf4, 0x29, 0x47, 0xc5, 0xb5, 0xf0, 0xe0, 0xc1, 0x0f, 0xd9, 0xeb, 0xc7, 0x41, 0x92, - 0x46, 0xa2, 0xaf, 0x65, 0x32, 0x69, 0x16, 0x6c, 0xa5, 0x83, 0xea, 0xe9, 0xcd, 0x1d, 0x64, 0xd4, - 0xfc, 0xb2, 0x03, 0xc0, 0xfb, 0x29, 0x12, 0x71, 0xd3, 0xbe, 0x6d, 0x1e, 0xda, 0x4c, 0x51, 0x22, - 0xbc, 0x6b, 0x6a, 0x0b, 0xa5, 0x05, 0x58, 0xeb, 0xc9, 0x5d, 0xa4, 0xca, 0xbc, 0xeb, 0x2c, 0x9d, - 0x9f, 0x77, 0xe0, 0x58, 0xa6, 0xbb, 0x39, 0xed, 0xb7, 0xcc, 0x27, 0x01, 0x2d, 0x48, 0x56, 0x66, - 0x7a, 0x66, 0xdd, 0x78, 0xf2, 0xdf, 0x5c, 0x30, 0x9e, 0x9e, 0x46, 0xaf, 0x41, 0x49, 0x5a, 0x3e, - 0xe4, 0xf2, 0xb6, 0xf9, 0x34, 0xaa, 0x52, 0x6f, 0x24, 0x24, 0xc6, 0x29, 0xbd, 0x4c, 0xd8, 0x5c, - 0x61, 0xa0, 0xb0, 0xb9, 0x7b, 0xfb, 0xb0, 0x6a, 0xbe, 0x5d, 0x7a, 0xf8, 0x50, 0xec, 0xd2, 0x0f, - 0x5a, 0xb7, 0x4b, 0x3f, 0x74, 0xc4, 0x76, 0x69, 0xcd, 0x49, 0x58, 0xbc, 0x0b, 0x27, 0xe1, 0x6b, - 0x70, 0x72, 0x27, 0x55, 0x3a, 0xd5, 0x4a, 0x12, 0x49, 0x88, 0x9e, 0xc8, 0xb5, 0x46, 0x53, 0x05, - 0x3a, 0x4e, 0x48, 0x90, 0x68, 0xea, 0x6a, 0x1a, 0xb1, 0xf7, 0x7c, 0x0e, 0x3a, 0x9c, 0x4b, 0x24, - 0xeb, 0xed, 0x19, 0x1d, 0xc0, 0xdb, 0xf3, 0x96, 0x03, 0xa7, 0xbc, 0x9e, 0x4b, 0x60, 0x98, 0x6c, + 0x53, 0x8a, 0xb3, 0xdd, 0x9a, 0xfa, 0x8a, 0x03, 0x27, 0xf3, 0x50, 0xe4, 0xf0, 0xdc, 0x86, 0xce, + 0x73, 0xad, 0x32, 0x2f, 0x4a, 0x95, 0x0e, 0x46, 0xe7, 0xe3, 0xff, 0xaf, 0x00, 0x93, 0xfa, 0x12, + 0x62, 0x92, 0xc0, 0xbf, 0x74, 0xe0, 0x94, 0x1c, 0x01, 0x26, 0x71, 0xa7, 0x99, 0x99, 0xde, 0x96, + 0xd5, 0xe9, 0xe5, 0x27, 0xe9, 0x6c, 0x1e, 0x3d, 0x3e, 0xcd, 0x0f, 0x8a, 0x69, 0x3e, 0x95, 0x5b, + 0x07, 0xe7, 0x77, 0x75, 0xea, 0x5b, 0x0e, 0x4c, 0xf5, 0x46, 0x9a, 0x33, 0xf1, 0x6d, 0x73, 0xe2, + 0x5f, 0xb0, 0x37, 0x48, 0x4e, 0x9e, 0x4d, 0x3f, 0x1b, 0xac, 0xfe, 0x01, 0x7e, 0x7b, 0x04, 0xba, + 0xce, 0x10, 0xf4, 0x24, 0x94, 0x04, 0x3b, 0x5e, 0x09, 0xeb, 0x31, 0xeb, 0xe4, 0x08, 0xdf, 0x6b, + 0xb3, 0x29, 0x18, 0xeb, 0x75, 0x50, 0x0d, 0x0a, 0xf1, 0x53, 0xa2, 0xeb, 0x16, 0xd8, 0x5b, 0xe5, + 0x29, 0x25, 0x45, 0x0e, 0xdd, 0xdc, 0x9b, 0x2e, 0x54, 0x9e, 0xc2, 0x85, 0xf8, 0x29, 0x2a, 0xa9, + 0xd7, 0xfd, 0xc4, 0x9e, 0xa4, 0xbe, 0xe4, 0x27, 0x8a, 0x0e, 0x93, 0xd4, 0x97, 0xfc, 0x04, 0x53, + 0x12, 0x54, 0x03, 0x69, 0x24, 0x49, 0x9b, 0x9d, 0xf8, 0x56, 0x34, 0x90, 0x4b, 0x1b, 0x1b, 0xeb, + 0x8a, 0x16, 0x93, 0x2f, 0x28, 0x04, 0x33, 0x2a, 0xe8, 0xb3, 0x0e, 0x9d, 0x71, 0x5e, 0x18, 0x46, + 0xbb, 0x42, 0x70, 0xb8, 0x6a, 0x6f, 0x09, 0x84, 0xd1, 0xae, 0x22, 0x2e, 0x3e, 0xa4, 0x2a, 0xc0, + 0x3a, 0x69, 0x36, 0xf0, 0xda, 0x56, 0xcc, 0xe4, 0x04, 0x3b, 0x03, 0x5f, 0x58, 0xac, 0x64, 0x06, + 0xbe, 0xb0, 0x58, 0xc1, 0x8c, 0x0a, 0xfd, 0xa0, 0x91, 0x77, 0x5d, 0xc8, 0x18, 0x16, 0x3e, 0x28, + 0xf6, 0xae, 0x9b, 0x1f, 0x14, 0x7b, 0xd7, 0x31, 0x25, 0x41, 0x29, 0x85, 0x71, 0xcc, 0x44, 0x0a, + 0x2b, 0x94, 0xd6, 0x2a, 0x15, 0x93, 0xd2, 0x5a, 0xa5, 0x82, 0x29, 0x09, 0xb6, 0x48, 0xab, 0x31, + 0x93, 0x47, 0xec, 0x2c, 0xd2, 0xf9, 0x0c, 0xa5, 0xa5, 0xf9, 0x0a, 0xa6, 0x24, 0x28, 0xcb, 0xf0, + 0x5e, 0xe9, 0x44, 0x5c, 0x98, 0x29, 0x5d, 0x58, 0xb3, 0xb0, 0x5e, 0x28, 0x3a, 0x45, 0x6d, 0xf4, + 0xe6, 0xde, 0x74, 0x91, 0x81, 0x30, 0x27, 0xe4, 0xfe, 0xe1, 0x40, 0xca, 0x2e, 0x24, 0x3f, 0x47, + 0xbf, 0xce, 0x0e, 0x42, 0xc1, 0x0b, 0x84, 0xe8, 0xeb, 0x1c, 0x9a, 0xe8, 0x7b, 0x82, 0x9f, 0x78, + 0x06, 0x39, 0x9c, 0xa5, 0x8f, 0xbe, 0xe8, 0x74, 0xeb, 0xb6, 0x9e, 0xfd, 0xb3, 0x2c, 0x3d, 0x98, + 0xf9, 0x59, 0xb1, 0xaf, 0xca, 0x3b, 0xf5, 0x59, 0x27, 0x15, 0x22, 0xe2, 0x5e, 0xe7, 0xc0, 0x47, + 0xcd, 0x73, 0xc0, 0xa2, 0x42, 0xae, 0xf3, 0xfd, 0xcf, 0x39, 0x30, 0x2e, 0xe1, 0x54, 0x3c, 0x8e, + 0xd1, 0x0d, 0x18, 0x91, 0x3d, 0x15, 0x5f, 0xcf, 0xa6, 0x2d, 0x40, 0x09, 0xf1, 0xaa, 0x33, 0x8a, + 0x9a, 0xfb, 0xe6, 0x10, 0xa0, 0xf4, 0xac, 0x6a, 0x87, 0xb1, 0xcf, 0x38, 0xd1, 0x1d, 0x9c, 0x42, + 0x81, 0x76, 0x0a, 0x3d, 0x67, 0xf3, 0x14, 0x4a, 0xbb, 0x65, 0x9c, 0x47, 0x5f, 0xcc, 0xf0, 0x6d, + 0x7e, 0x30, 0x7d, 0xe4, 0x50, 0xf8, 0xb6, 0xd6, 0x85, 0xfd, 0x39, 0xf8, 0x8e, 0xe0, 0xe0, 0xfc, + 0xe8, 0xfa, 0x45, 0xbb, 0x1c, 0x5c, 0xeb, 0x45, 0x96, 0x97, 0x47, 0x9c, 0xc3, 0xf2, 0xb3, 0xeb, + 0x9a, 0x55, 0x0e, 0xab, 0x51, 0x35, 0x79, 0x6d, 0xc4, 0x79, 0xed, 0x90, 0x2d, 0x9a, 0x1a, 0xaf, + 0xcd, 0xd2, 0x54, 0x5c, 0xf7, 0x15, 0xc9, 0x75, 0xf9, 0xa9, 0xf5, 0xbc, 0x65, 0xae, 0xab, 0xd1, + 0xed, 0xe6, 0xbf, 0x2f, 0xc3, 0xa9, 0xee, 0x7a, 0x98, 0x6c, 0xa1, 0xf3, 0x30, 0x5a, 0x0d, 0x83, + 0x2d, 0xbf, 0xbe, 0xea, 0xb5, 0x85, 0xbe, 0xa6, 0x78, 0xd1, 0xbc, 0x2c, 0xc0, 0x69, 0x1d, 0xf4, + 0x20, 0x67, 0x3c, 0xdc, 0x22, 0x52, 0x12, 0x55, 0x07, 0x96, 0xc9, 0x2e, 0xe3, 0x42, 0xef, 0x1d, + 0xf9, 0xea, 0x37, 0xa6, 0xef, 0xfb, 0xc4, 0x8f, 0x1e, 0xba, 0xcf, 0xfd, 0xe3, 0x01, 0x38, 0x9b, + 0x4b, 0x53, 0x48, 0xeb, 0xbf, 0x6d, 0x48, 0xeb, 0x5a, 0xb9, 0xe0, 0x22, 0xd7, 0x6c, 0x0a, 0xb2, + 0x1a, 0xfa, 0x3c, 0xb9, 0x5c, 0x2b, 0xc6, 0xf9, 0x9d, 0xa2, 0x13, 0x15, 0x78, 0x2d, 0x12, 0xb7, + 0xbd, 0x2a, 0x11, 0xa3, 0x57, 0x13, 0x75, 0x45, 0x16, 0xe0, 0xb4, 0x0e, 0x57, 0xa1, 0xb7, 0xbc, + 0x4e, 0x33, 0x11, 0x86, 0x32, 0x4d, 0x85, 0x66, 0x60, 0x2c, 0xcb, 0xd1, 0x3f, 0x70, 0x00, 0x75, + 0x53, 0x15, 0x1b, 0x71, 0xe3, 0x30, 0xe6, 0x61, 0xee, 0xf4, 0x4d, 0x4d, 0x09, 0xd7, 0x46, 0x9a, + 0xd3, 0x0f, 0xed, 0x9b, 0x7e, 0x2c, 0x3d, 0x87, 0xb8, 0x72, 0xd0, 0x87, 0x0d, 0x8d, 0x99, 0x5a, + 0xaa, 0x55, 0x12, 0xc7, 0xdc, 0x1c, 0xa7, 0x9b, 0x5a, 0x18, 0x18, 0xcb, 0x72, 0x34, 0x0d, 0x45, + 0x12, 0x45, 0x61, 0x24, 0x74, 0x6d, 0xb6, 0x8c, 0x2f, 0x52, 0x00, 0xe6, 0x70, 0xf7, 0x27, 0x05, + 0x28, 0xf7, 0xd2, 0x4e, 0xd0, 0xef, 0x69, 0x7a, 0xb5, 0xd0, 0x9c, 0x84, 0xe2, 0x17, 0x1e, 0x9e, + 0x4e, 0x94, 0x55, 0x00, 0x7b, 0x68, 0xd8, 0xa2, 0x14, 0x67, 0x3b, 0x38, 0xf5, 0x25, 0x4d, 0xc3, + 0xd6, 0x51, 0xe4, 0x1c, 0xf0, 0x5b, 0xe6, 0x01, 0xbf, 0x6e, 0x7b, 0x50, 0xfa, 0x31, 0xff, 0x27, + 0x45, 0x38, 0x21, 0x4b, 0x2b, 0x84, 0x1e, 0x95, 0xcf, 0x76, 0x48, 0xb4, 0x8b, 0x7e, 0xe0, 0xc0, + 0x49, 0x2f, 0x6b, 0xba, 0xf1, 0xc9, 0x21, 0x4c, 0xb4, 0x46, 0x75, 0x66, 0x36, 0x87, 0x22, 0x9f, + 0xe8, 0x0b, 0x62, 0xa2, 0x4f, 0xe6, 0x55, 0xe9, 0x61, 0x77, 0xcf, 0x1d, 0x00, 0x7a, 0x1a, 0xc6, + 0x24, 0x9c, 0x99, 0x7b, 0xf8, 0x16, 0x57, 0xc6, 0xed, 0x59, 0xad, 0x0c, 0x1b, 0x35, 0x69, 0xcb, + 0x84, 0xb4, 0xda, 0x4d, 0x2f, 0x21, 0x9a, 0xa1, 0x48, 0xb5, 0xdc, 0xd0, 0xca, 0xb0, 0x51, 0x13, + 0x3d, 0x0a, 0x43, 0x41, 0x58, 0x23, 0x97, 0x6b, 0xc2, 0x40, 0x3c, 0x21, 0xda, 0x0c, 0x5d, 0x61, + 0x50, 0x2c, 0x4a, 0xd1, 0x23, 0xa9, 0x35, 0xae, 0xc8, 0xb6, 0x50, 0x29, 0xcf, 0x12, 0x87, 0xfe, + 0x91, 0x03, 0xa3, 0xb4, 0xc5, 0xc6, 0x6e, 0x9b, 0xd0, 0xb3, 0x8d, 0x7e, 0x91, 0xda, 0xe1, 0x7c, + 0x91, 0x2b, 0x92, 0x8c, 0x69, 0xea, 0x18, 0x55, 0xf0, 0x37, 0xde, 0x9a, 0x1e, 0x91, 0x3f, 0x70, + 0xda, 0xab, 0xa9, 0x25, 0xb8, 0xbf, 0xe7, 0xd7, 0x3c, 0x90, 0x2b, 0xe0, 0x6f, 0xc1, 0x84, 0xd9, + 0x89, 0x03, 0xf9, 0x01, 0xfe, 0xb9, 0xb6, 0xed, 0xf8, 0xb8, 0x04, 0x3f, 0xbb, 0x67, 0xd2, 0xac, + 0x5a, 0x0c, 0x0b, 0x62, 0xe9, 0x99, 0x8b, 0x61, 0x41, 0x2c, 0x86, 0x05, 0xf7, 0x8f, 0x9c, 0x74, + 0x6b, 0x6a, 0x62, 0x1e, 0x3d, 0x98, 0x3b, 0x51, 0x53, 0x30, 0x62, 0x75, 0x30, 0x5f, 0xc5, 0x2b, + 0x98, 0xc2, 0xd1, 0x97, 0x34, 0xee, 0x48, 0x9b, 0x75, 0x84, 0x5b, 0xc3, 0x92, 0x89, 0xde, 0x40, + 0xdc, 0xcd, 0xff, 0x44, 0x01, 0xce, 0x76, 0xc1, 0xfd, 0x62, 0x01, 0x1e, 0xdc, 0x57, 0x68, 0xcd, + 0xed, 0xb8, 0x73, 0xcf, 0x3b, 0x4e, 0x8f, 0xb5, 0x88, 0xb4, 0xc3, 0xab, 0x78, 0x45, 0x7c, 0x2f, + 0x75, 0xac, 0x61, 0x0e, 0xc6, 0xb2, 0x9c, 0x8a, 0x0e, 0xdb, 0x64, 0x77, 0x31, 0x8c, 0x5a, 0x5e, + 0x22, 0xb8, 0x83, 0x12, 0x1d, 0x96, 0x65, 0x01, 0x4e, 0xeb, 0xb8, 0x3f, 0x70, 0x20, 0xdb, 0x01, + 0xe4, 0xc1, 0x44, 0x27, 0x26, 0x11, 0x3d, 0x52, 0x2b, 0xa4, 0x1a, 0x11, 0xb9, 0x3c, 0x1f, 0x99, + 0xe1, 0xde, 0x7e, 0x3a, 0xc2, 0x99, 0x6a, 0x18, 0x91, 0x99, 0x9d, 0x27, 0x67, 0x78, 0x8d, 0x65, + 0xb2, 0x5b, 0x21, 0x4d, 0x42, 0x71, 0xcc, 0xa1, 0x9b, 0x7b, 0xd3, 0x13, 0x57, 0x0d, 0x04, 0x38, + 0x83, 0x90, 0x92, 0x68, 0x7b, 0x71, 0x7c, 0x3d, 0x8c, 0x6a, 0x82, 0x44, 0xe1, 0xc0, 0x24, 0xd6, + 0x0d, 0x04, 0x38, 0x83, 0xd0, 0xfd, 0x3e, 0x55, 0x1f, 0x75, 0xa9, 0x15, 0x7d, 0x83, 0xca, 0x3e, + 0x14, 0x32, 0xd7, 0x0c, 0x37, 0xe7, 0xc3, 0x20, 0xf1, 0xfc, 0x80, 0xc8, 0x60, 0x81, 0x0d, 0x4b, + 0x32, 0xb2, 0x81, 0x3b, 0xb5, 0xe1, 0x77, 0x97, 0xe1, 0x9c, 0xbe, 0x50, 0x19, 0x67, 0xb3, 0x19, + 0x6e, 0x66, 0xbd, 0x80, 0xb4, 0x12, 0x66, 0x25, 0xee, 0xcf, 0x1c, 0x38, 0xd3, 0x43, 0x18, 0x47, + 0x5f, 0x71, 0x60, 0x7c, 0xf3, 0x6d, 0x31, 0x36, 0xb3, 0x1b, 0xe8, 0xfd, 0x30, 0x41, 0x01, 0xf4, + 0x24, 0x12, 0x6b, 0xb3, 0x60, 0x7a, 0xa8, 0xe6, 0x8c, 0x52, 0x9c, 0xa9, 0xed, 0xfe, 0x46, 0x01, + 0x72, 0xa8, 0xa0, 0x27, 0x60, 0x84, 0x04, 0xb5, 0x76, 0xe8, 0x07, 0x89, 0x60, 0x46, 0x8a, 0xeb, + 0x5d, 0x14, 0x70, 0xac, 0x6a, 0x08, 0xfd, 0x43, 0x4c, 0x4c, 0xa1, 0x4b, 0xff, 0x10, 0x3d, 0x4f, + 0xeb, 0xa0, 0x3a, 0x4c, 0x7a, 0xdc, 0xbf, 0xc2, 0xd6, 0x1e, 0x5b, 0xa6, 0x03, 0x07, 0x59, 0xa6, + 0x27, 0x99, 0xfb, 0x33, 0x83, 0x02, 0x77, 0x21, 0x45, 0xef, 0x81, 0x52, 0x27, 0x26, 0x95, 0x85, + 0xe5, 0xf9, 0x88, 0xd4, 0xb8, 0x56, 0xac, 0xf9, 0xfd, 0xae, 0xa6, 0x45, 0x58, 0xaf, 0xe7, 0xfe, + 0x2b, 0x07, 0x86, 0xe7, 0xbc, 0xea, 0x76, 0xb8, 0xb5, 0x45, 0xa7, 0xa2, 0xd6, 0x89, 0x52, 0xc3, + 0x96, 0x36, 0x15, 0x0b, 0x02, 0x8e, 0x55, 0x0d, 0xb4, 0x01, 0x43, 0x7c, 0xc3, 0x8b, 0x6d, 0xf7, + 0x0b, 0xda, 0x78, 0x54, 0x1c, 0x0f, 0x5b, 0x0e, 0x9d, 0xc4, 0x6f, 0xce, 0xf0, 0x38, 0x9e, 0x99, + 0xcb, 0x41, 0xb2, 0x16, 0x55, 0x92, 0xc8, 0x0f, 0xea, 0x73, 0x40, 0x8f, 0x8b, 0x45, 0x86, 0x03, + 0x0b, 0x5c, 0x74, 0x18, 0x2d, 0xef, 0x86, 0x24, 0x27, 0xd8, 0x8f, 0x1a, 0xc6, 0x6a, 0x5a, 0x84, + 0xf5, 0x7a, 0xee, 0x1f, 0x3b, 0x30, 0x3a, 0xe7, 0xc5, 0x7e, 0xf5, 0x2f, 0x11, 0xf3, 0xf9, 0x30, + 0x14, 0xe7, 0xbd, 0x6a, 0x83, 0xa0, 0xab, 0x59, 0xa5, 0xb7, 0x74, 0xe1, 0xb1, 0x3c, 0x32, 0x4a, + 0x01, 0xd6, 0x29, 0x8d, 0xf7, 0x52, 0x8d, 0xdd, 0xb7, 0x1c, 0x98, 0x98, 0x6f, 0xfa, 0x24, 0x48, + 0xe6, 0x49, 0x94, 0xb0, 0x89, 0xab, 0xc3, 0x64, 0x55, 0x41, 0xee, 0x64, 0xea, 0xd8, 0x6a, 0x9d, + 0xcf, 0xa0, 0xc0, 0x5d, 0x48, 0x51, 0x0d, 0x8e, 0x71, 0x58, 0xba, 0x2b, 0x0e, 0x34, 0x7f, 0xcc, + 0x3a, 0x3a, 0x6f, 0x62, 0xc0, 0x59, 0x94, 0xee, 0x4f, 0x1d, 0x38, 0x33, 0xdf, 0xec, 0xc4, 0x09, + 0x89, 0xae, 0x09, 0x6e, 0x24, 0xc5, 0x5b, 0xf4, 0x51, 0x18, 0x69, 0x49, 0x8f, 0xad, 0x73, 0x9b, + 0x05, 0xcc, 0xf8, 0x19, 0xad, 0x4d, 0x3b, 0xb3, 0xb6, 0xf9, 0x12, 0xa9, 0x26, 0xab, 0x24, 0xf1, + 0xd2, 0xf0, 0x82, 0x14, 0x86, 0x15, 0x56, 0xd4, 0x86, 0xc1, 0xb8, 0x4d, 0xaa, 0xf6, 0xa2, 0xbb, + 0xe4, 0x18, 0x2a, 0x6d, 0x52, 0x4d, 0xf9, 0x3a, 0xf3, 0x35, 0x32, 0x4a, 0xee, 0xff, 0x76, 0xe0, + 0x6c, 0x8f, 0xf1, 0xae, 0xf8, 0x71, 0x82, 0x5e, 0xec, 0x1a, 0xf3, 0x4c, 0x7f, 0x63, 0xa6, 0xad, + 0xd9, 0x88, 0x15, 0x43, 0x90, 0x10, 0x6d, 0xbc, 0x1f, 0x83, 0xa2, 0x9f, 0x90, 0x96, 0x34, 0x43, + 0x5b, 0x30, 0x18, 0xf5, 0x18, 0xcb, 0xdc, 0xb8, 0x8c, 0xf1, 0xbb, 0x4c, 0xe9, 0x61, 0x4e, 0xd6, + 0xdd, 0x86, 0xa1, 0xf9, 0xb0, 0xd9, 0x69, 0x05, 0xfd, 0x45, 0xca, 0x24, 0xbb, 0x6d, 0x92, 0x3d, + 0x23, 0x99, 0xf8, 0xcf, 0x4a, 0xa4, 0xe1, 0x68, 0x20, 0xdf, 0x70, 0xe4, 0xfe, 0x1b, 0x07, 0xe8, + 0xae, 0xaa, 0xf9, 0xc2, 0x93, 0xc8, 0xd1, 0x71, 0x82, 0x0f, 0xea, 0xe8, 0x6e, 0xed, 0x4d, 0x8f, + 0xab, 0x8a, 0x1a, 0xfe, 0x0f, 0xc3, 0x50, 0xcc, 0x54, 0x72, 0xd1, 0x87, 0x45, 0x29, 0x3f, 0x73, + 0x45, 0xfd, 0xd6, 0xde, 0x74, 0x5f, 0x61, 0x9b, 0x33, 0x0a, 0xb7, 0x70, 0x7a, 0x0a, 0xac, 0x54, + 0xe0, 0x6b, 0x91, 0x38, 0xf6, 0xea, 0x52, 0xc3, 0x53, 0x02, 0xdf, 0x2a, 0x07, 0x63, 0x59, 0xee, + 0x7e, 0xd9, 0x81, 0x71, 0x75, 0x78, 0x51, 0xf1, 0x1d, 0x5d, 0xd1, 0x8f, 0x39, 0xbe, 0x52, 0x1e, + 0xec, 0xc1, 0x71, 0xc4, 0x41, 0xbe, 0xff, 0x29, 0xf8, 0x6e, 0x18, 0xab, 0x91, 0x36, 0x09, 0x6a, + 0x24, 0xa8, 0x52, 0xf5, 0x9b, 0xae, 0x90, 0xd1, 0xb9, 0x49, 0xaa, 0x6f, 0x2e, 0x68, 0x70, 0x6c, + 0xd4, 0x72, 0xbf, 0xe9, 0xc0, 0xfd, 0x0a, 0x5d, 0x85, 0x24, 0x98, 0x24, 0xd1, 0xae, 0x0a, 0xd3, + 0x3c, 0xd8, 0x69, 0x75, 0x8d, 0xca, 0xbf, 0x49, 0xc4, 0x89, 0xdf, 0xd9, 0x71, 0x55, 0xe2, 0xd2, + 0x32, 0x43, 0x82, 0x25, 0x36, 0xf7, 0xd7, 0x06, 0xe0, 0xa4, 0xde, 0x49, 0xc5, 0x60, 0x7e, 0xd9, + 0x01, 0x50, 0x33, 0x40, 0x0f, 0xe4, 0x01, 0x3b, 0xbe, 0x2b, 0xe3, 0x4b, 0xa5, 0x2c, 0x48, 0x81, + 0x63, 0xac, 0x91, 0x45, 0xcf, 0xc3, 0xd8, 0x0e, 0xdd, 0x14, 0x64, 0x95, 0x8a, 0x0b, 0x71, 0x79, + 0x80, 0x75, 0x63, 0x3a, 0xef, 0x63, 0x3e, 0x97, 0xd6, 0x4b, 0xcd, 0x01, 0x1a, 0x30, 0xc6, 0x06, + 0x2a, 0xaa, 0xe9, 0x8c, 0x47, 0xfa, 0x27, 0x11, 0x36, 0xf1, 0x0f, 0x59, 0x1c, 0x63, 0xf6, 0xab, + 0xcf, 0x1d, 0xbf, 0xb9, 0x37, 0x3d, 0x6e, 0x80, 0xb0, 0xd9, 0x09, 0xf7, 0x79, 0x60, 0x73, 0xe1, + 0x07, 0x1d, 0xb2, 0x16, 0xa0, 0x87, 0xa5, 0x8d, 0x8e, 0xfb, 0x55, 0x14, 0xe7, 0xd0, 0xed, 0x74, + 0x54, 0x97, 0xdd, 0xf2, 0xfc, 0x26, 0x0b, 0x5f, 0xa4, 0xb5, 0x94, 0x2e, 0xbb, 0xc8, 0xa0, 0x58, + 0x94, 0xba, 0x33, 0x30, 0x3c, 0x4f, 0xc7, 0x4e, 0x22, 0x8a, 0x57, 0x8f, 0x3a, 0x1e, 0x37, 0xa2, + 0x8e, 0x65, 0x74, 0xf1, 0x06, 0x9c, 0x9a, 0x8f, 0x88, 0x97, 0x90, 0xca, 0x53, 0x73, 0x9d, 0xea, + 0x36, 0x49, 0x78, 0x68, 0x57, 0x8c, 0xde, 0x07, 0xe3, 0x21, 0x3b, 0x32, 0x56, 0xc2, 0xea, 0xb6, + 0x1f, 0xd4, 0x85, 0xc9, 0xf5, 0x94, 0xc0, 0x32, 0xbe, 0xa6, 0x17, 0x62, 0xb3, 0xae, 0xfb, 0x9f, + 0x0b, 0x30, 0x36, 0x1f, 0x85, 0x81, 0x64, 0x8b, 0x47, 0x70, 0x94, 0x25, 0xc6, 0x51, 0x66, 0xc1, + 0xdd, 0xa9, 0xf7, 0xbf, 0xd7, 0x71, 0x86, 0x5e, 0x53, 0x2c, 0x72, 0xc0, 0x96, 0x0a, 0x62, 0xd0, + 0x65, 0xb8, 0xd3, 0x8f, 0x6d, 0x32, 0x50, 0xf7, 0xbf, 0x38, 0x30, 0xa9, 0x57, 0x3f, 0x82, 0x13, + 0x34, 0x36, 0x4f, 0xd0, 0x2b, 0x76, 0xc7, 0xdb, 0xe3, 0xd8, 0xfc, 0x17, 0xc3, 0xe6, 0x38, 0x99, + 0xaf, 0xfb, 0xab, 0x0e, 0x8c, 0x5d, 0xd7, 0x00, 0x62, 0xb0, 0xb6, 0x85, 0x98, 0x77, 0x48, 0x36, + 0xa3, 0x43, 0x6f, 0x65, 0x7e, 0x63, 0xa3, 0x27, 0x94, 0xef, 0xc7, 0xd5, 0x06, 0xa9, 0x75, 0x9a, + 0xf2, 0xf8, 0x56, 0x53, 0x5a, 0x11, 0x70, 0xac, 0x6a, 0xa0, 0x17, 0xe1, 0x78, 0x35, 0x0c, 0xaa, + 0x9d, 0x28, 0x22, 0x41, 0x75, 0x77, 0x9d, 0xdd, 0x91, 0x10, 0x07, 0xe2, 0x8c, 0x68, 0x76, 0x7c, + 0x3e, 0x5b, 0xe1, 0x56, 0x1e, 0x10, 0x77, 0x23, 0xe2, 0xce, 0x82, 0x98, 0x1e, 0x59, 0x42, 0xe1, + 0xd2, 0x9c, 0x05, 0x0c, 0x8c, 0x65, 0x39, 0xba, 0x0a, 0x67, 0xe2, 0xc4, 0x8b, 0x12, 0x3f, 0xa8, + 0x2f, 0x10, 0xaf, 0xd6, 0xf4, 0x03, 0xaa, 0x4a, 0x84, 0x41, 0x8d, 0xbb, 0x12, 0x07, 0xe6, 0xce, + 0xde, 0xdc, 0x9b, 0x3e, 0x53, 0xc9, 0xaf, 0x82, 0x7b, 0xb5, 0x45, 0x1f, 0x86, 0x29, 0xe1, 0x8e, + 0xd8, 0xea, 0x34, 0x9f, 0x09, 0x37, 0xe3, 0x4b, 0x7e, 0x4c, 0xf5, 0xf8, 0x15, 0xbf, 0xe5, 0x27, + 0xcc, 0x61, 0x58, 0x9c, 0x3b, 0x77, 0x73, 0x6f, 0x7a, 0xaa, 0xd2, 0xb3, 0x16, 0xde, 0x07, 0x03, + 0xc2, 0x70, 0x9a, 0x33, 0xbf, 0x2e, 0xdc, 0xc3, 0x0c, 0xf7, 0xd4, 0xcd, 0xbd, 0xe9, 0xd3, 0x8b, + 0xb9, 0x35, 0x70, 0x8f, 0x96, 0xf4, 0x0b, 0x26, 0x7e, 0x8b, 0xbc, 0x12, 0x06, 0x84, 0x05, 0xaa, + 0x68, 0x5f, 0x70, 0x43, 0xc0, 0xb1, 0xaa, 0x81, 0x5e, 0x4a, 0x57, 0x22, 0xdd, 0x2e, 0x22, 0xe0, + 0xe4, 0xe0, 0x1c, 0x8e, 0xa9, 0x26, 0xd7, 0x34, 0x4c, 0x2c, 0x92, 0xd2, 0xc0, 0x8d, 0x3e, 0xe9, + 0xc0, 0x58, 0x9c, 0x84, 0xea, 0x5e, 0x83, 0x88, 0x38, 0xb1, 0xb0, 0xec, 0x2b, 0x1a, 0x56, 0x2e, + 0xf8, 0xe8, 0x10, 0x6c, 0x50, 0x45, 0xef, 0x84, 0x51, 0xb9, 0x80, 0xe3, 0x72, 0x89, 0xc9, 0x4a, + 0x4c, 0x8d, 0x93, 0xeb, 0x3b, 0xc6, 0x69, 0xb9, 0xfb, 0x93, 0x01, 0x40, 0xdd, 0x6c, 0x0d, 0x2d, + 0xc3, 0x90, 0x57, 0x4d, 0xfc, 0x1d, 0x19, 0x4d, 0xf8, 0x70, 0xde, 0x91, 0xcf, 0xa7, 0x07, 0x93, + 0x2d, 0x42, 0x57, 0x35, 0x49, 0x79, 0xe1, 0x2c, 0x6b, 0x8a, 0x05, 0x0a, 0x14, 0xc2, 0xf1, 0xa6, + 0x17, 0x27, 0x92, 0x7e, 0x8d, 0x7e, 0x26, 0x71, 0x18, 0xfc, 0x7c, 0x7f, 0x1f, 0x82, 0xb6, 0x98, + 0x3b, 0x45, 0x77, 0xdb, 0x4a, 0x16, 0x11, 0xee, 0xc6, 0x8d, 0x3e, 0xce, 0x64, 0x27, 0x2e, 0xd8, + 0x4a, 0xa1, 0x65, 0xd9, 0x8a, 0x5c, 0xc1, 0x71, 0x1a, 0x72, 0x93, 0x20, 0x83, 0x35, 0x92, 0xe8, + 0x3c, 0x8c, 0xb2, 0x5d, 0x41, 0x6a, 0x84, 0xef, 0xed, 0x81, 0x54, 0xc4, 0xad, 0xc8, 0x02, 0x9c, + 0xd6, 0xd1, 0x64, 0x08, 0xbe, 0x9d, 0x7b, 0xc8, 0x10, 0xe8, 0x69, 0x28, 0xb6, 0x1b, 0x5e, 0x2c, + 0x23, 0xd4, 0x5d, 0xc9, 0x93, 0xd7, 0x29, 0x90, 0x31, 0x1e, 0xed, 0x5b, 0x32, 0x20, 0xe6, 0x0d, + 0xdc, 0x7f, 0x0b, 0x30, 0xbc, 0x30, 0xbb, 0xb4, 0xe1, 0xc5, 0xdb, 0x7d, 0x68, 0x38, 0x74, 0x93, + 0x09, 0x51, 0x34, 0xcb, 0x26, 0xa5, 0x88, 0x8a, 0x55, 0x0d, 0x14, 0xc0, 0x90, 0x1f, 0x50, 0xbe, + 0x52, 0x9e, 0xb0, 0xe5, 0x45, 0x50, 0xda, 0x1a, 0x33, 0xf3, 0x5c, 0x66, 0xd8, 0xb1, 0xa0, 0x82, + 0x5e, 0x83, 0x51, 0x4f, 0x5e, 0x10, 0x12, 0xa7, 0xfb, 0xb2, 0x0d, 0xf3, 0xb8, 0x40, 0xa9, 0x07, + 0x28, 0x09, 0x10, 0x4e, 0x09, 0xa2, 0x4f, 0x38, 0x50, 0x92, 0x43, 0xc7, 0x64, 0x4b, 0x78, 0xae, + 0x57, 0xed, 0x8d, 0x19, 0x93, 0x2d, 0x1e, 0xbd, 0xa2, 0x01, 0xb0, 0x4e, 0xb2, 0x4b, 0x23, 0x2a, + 0xf6, 0xa3, 0x11, 0xa1, 0xeb, 0x30, 0x7a, 0xdd, 0x4f, 0x1a, 0xec, 0xfc, 0x16, 0x1e, 0xb3, 0xc5, + 0xbb, 0xef, 0x35, 0x45, 0x97, 0xce, 0xd8, 0x35, 0x49, 0x00, 0xa7, 0xb4, 0xe8, 0x76, 0xa0, 0x3f, + 0xd8, 0x05, 0x2b, 0xc6, 0xf9, 0x47, 0xcd, 0x06, 0xac, 0x00, 0xa7, 0x75, 0xe8, 0x14, 0x8f, 0xd1, + 0x5f, 0x15, 0xf2, 0x72, 0x87, 0xb2, 0x16, 0x11, 0x91, 0x68, 0x61, 0x5d, 0x49, 0x8c, 0x7c, 0xb2, + 0xae, 0x69, 0x34, 0xb0, 0x41, 0x91, 0xee, 0x91, 0xeb, 0x0d, 0x12, 0x88, 0x1b, 0x13, 0x6a, 0x8f, + 0x5c, 0x6b, 0x90, 0x00, 0xb3, 0x12, 0xf4, 0x1a, 0xd7, 0xd0, 0xb8, 0xaa, 0x20, 0x78, 0xfd, 0x8a, + 0x1d, 0xed, 0x85, 0xe3, 0xe4, 0x97, 0x16, 0xd2, 0xdf, 0x58, 0xa3, 0x47, 0x39, 0x46, 0x18, 0x5c, + 0xbc, 0xe1, 0x27, 0xe2, 0xaa, 0x85, 0xe2, 0x18, 0x6b, 0x0c, 0x8a, 0x45, 0x29, 0x8f, 0xcc, 0xa0, + 0x8b, 0x20, 0x66, 0xf7, 0x2a, 0x46, 0xf5, 0xc8, 0x0c, 0x06, 0xc6, 0xb2, 0x1c, 0xfd, 0x43, 0x07, + 0x8a, 0x8d, 0x30, 0xdc, 0x8e, 0xcb, 0xe3, 0x6c, 0x71, 0x58, 0x90, 0x98, 0x05, 0xc7, 0x99, 0xb9, + 0x44, 0xd1, 0x9a, 0x97, 0xc7, 0x8a, 0x0c, 0x76, 0x6b, 0x6f, 0x7a, 0x62, 0xc5, 0xdf, 0x22, 0xd5, + 0xdd, 0x6a, 0x93, 0x30, 0xc8, 0x1b, 0x6f, 0x69, 0x90, 0x8b, 0x3b, 0x24, 0x48, 0x30, 0xef, 0xd5, + 0xd4, 0xe7, 0x1c, 0x80, 0x14, 0x51, 0x8e, 0x0b, 0x94, 0x98, 0x41, 0x03, 0x16, 0xd4, 0x65, 0xa3, + 0x6b, 0xba, 0x4f, 0xf5, 0xdf, 0x39, 0x50, 0xa2, 0x83, 0x93, 0x2c, 0xf0, 0x51, 0x18, 0x4a, 0xbc, + 0xa8, 0x4e, 0xa4, 0x1b, 0x40, 0x7d, 0x8e, 0x0d, 0x06, 0xc5, 0xa2, 0x14, 0x05, 0x50, 0x4c, 0xbc, + 0x78, 0x5b, 0x0a, 0xe9, 0x97, 0xad, 0x4d, 0x71, 0x2a, 0x9f, 0xd3, 0x5f, 0x31, 0xe6, 0x64, 0xd0, + 0x63, 0x30, 0x42, 0x8f, 0x8e, 0x45, 0x2f, 0x96, 0x91, 0x39, 0x63, 0x94, 0x89, 0x2f, 0x0a, 0x18, + 0x56, 0xa5, 0xee, 0x6f, 0x14, 0x60, 0x70, 0x81, 0xab, 0x6b, 0x43, 0x71, 0xd8, 0x89, 0xaa, 0x44, + 0x88, 0xed, 0x16, 0xd6, 0x34, 0xc5, 0x5b, 0x61, 0x38, 0x35, 0x85, 0x89, 0xfd, 0xc6, 0x82, 0x16, + 0xfa, 0x92, 0x03, 0x13, 0x49, 0xe4, 0x05, 0xf1, 0x16, 0x73, 0xb8, 0xf8, 0x61, 0x20, 0xa6, 0xc8, + 0xc2, 0x2a, 0xdc, 0x30, 0xf0, 0x56, 0x12, 0xd2, 0x4e, 0xfd, 0x3e, 0x66, 0x19, 0xce, 0xf4, 0xc1, + 0xfd, 0x4d, 0x07, 0x20, 0xed, 0x3d, 0xfa, 0xac, 0x03, 0xe3, 0x9e, 0x1e, 0x11, 0x2a, 0xe6, 0x68, + 0xcd, 0x9e, 0x77, 0x96, 0xa1, 0xe5, 0x96, 0x0a, 0x03, 0x84, 0x4d, 0xc2, 0xee, 0x7b, 0xa0, 0xc8, + 0x76, 0x07, 0x53, 0x69, 0x84, 0x65, 0x3b, 0x6b, 0xca, 0x92, 0x16, 0x6f, 0xac, 0x6a, 0xb8, 0x2f, + 0xc2, 0xc4, 0xc5, 0x1b, 0xa4, 0xda, 0x49, 0xc2, 0x88, 0xdb, 0xf5, 0x7b, 0xdc, 0x00, 0x72, 0xee, + 0xe8, 0x06, 0xd0, 0x77, 0x1c, 0x28, 0x69, 0xe1, 0x81, 0xf4, 0xa4, 0xae, 0xcf, 0x57, 0xb8, 0xf9, + 0x42, 0x4c, 0xd5, 0xb2, 0x95, 0x00, 0x44, 0x8e, 0x32, 0x3d, 0x46, 0x14, 0x08, 0xa7, 0x04, 0x6f, + 0x13, 0xbe, 0xe7, 0xfe, 0xa1, 0x03, 0xa7, 0x72, 0x63, 0x19, 0xef, 0x71, 0xb7, 0x0d, 0x17, 0x7a, + 0xa1, 0x0f, 0x17, 0xfa, 0xef, 0x3a, 0x90, 0x62, 0xa2, 0xac, 0x68, 0x33, 0xed, 0xb9, 0xc6, 0x8a, + 0x04, 0x25, 0x51, 0x8a, 0x5e, 0x83, 0x33, 0xe6, 0x17, 0xbc, 0x43, 0x6f, 0x0a, 0x57, 0x3d, 0xf3, + 0x31, 0xe1, 0x5e, 0x24, 0xdc, 0xaf, 0x39, 0x50, 0x5c, 0xf2, 0x3a, 0x75, 0xd2, 0x97, 0x31, 0x8c, + 0xf2, 0xb1, 0x88, 0x78, 0xcd, 0x44, 0xaa, 0x0e, 0x82, 0x8f, 0x61, 0x01, 0xc3, 0xaa, 0x14, 0xcd, + 0xc2, 0x68, 0xd8, 0x26, 0x86, 0x07, 0xf0, 0x61, 0x39, 0x7b, 0x6b, 0xb2, 0x80, 0x1e, 0x3b, 0x8c, + 0xba, 0x82, 0xe0, 0xb4, 0x95, 0xfb, 0x83, 0x22, 0x94, 0xb4, 0x5b, 0x2f, 0x54, 0x16, 0x88, 0x48, + 0x3b, 0xcc, 0xca, 0xcb, 0x74, 0xc1, 0x60, 0x56, 0x42, 0xf7, 0x60, 0x44, 0x76, 0xfc, 0x98, 0xb3, + 0x2d, 0x63, 0x0f, 0x62, 0x01, 0xc7, 0xaa, 0x06, 0x9a, 0x86, 0x62, 0x8d, 0xb4, 0x93, 0x06, 0xeb, + 0xde, 0x20, 0x0f, 0xfd, 0x5b, 0xa0, 0x00, 0xcc, 0xe1, 0xb4, 0xc2, 0x16, 0x49, 0xaa, 0x0d, 0x66, + 0xf7, 0x15, 0xb1, 0x81, 0x8b, 0x14, 0x80, 0x39, 0x3c, 0xc7, 0x47, 0x59, 0x3c, 0x7c, 0x1f, 0xe5, + 0x90, 0x65, 0x1f, 0x25, 0x6a, 0xc3, 0x89, 0x38, 0x6e, 0xac, 0x47, 0xfe, 0x8e, 0x97, 0x90, 0x74, + 0xf5, 0x0d, 0x1f, 0x84, 0xce, 0x19, 0x76, 0x0f, 0xbd, 0x72, 0x29, 0x8b, 0x05, 0xe7, 0xa1, 0x46, + 0x15, 0x38, 0xe5, 0x07, 0x31, 0xa9, 0x76, 0x22, 0x72, 0xb9, 0x1e, 0x84, 0x11, 0xb9, 0x14, 0xc6, + 0x14, 0x9d, 0xb8, 0x45, 0xab, 0xa2, 0x65, 0x2f, 0xe7, 0x55, 0xc2, 0xf9, 0x6d, 0xd1, 0x12, 0x1c, + 0xaf, 0xf9, 0xb1, 0xb7, 0xd9, 0x24, 0x95, 0xce, 0x66, 0x2b, 0xe4, 0x8a, 0xf7, 0x28, 0x43, 0x78, + 0xbf, 0xb4, 0x12, 0x2d, 0x64, 0x2b, 0xe0, 0xee, 0x36, 0xe8, 0x69, 0x18, 0x8b, 0xfd, 0xa0, 0xde, + 0x24, 0x73, 0x91, 0x17, 0x54, 0x1b, 0xe2, 0xfa, 0xad, 0xb2, 0xa6, 0x57, 0xb4, 0x32, 0x6c, 0xd4, + 0x64, 0x7b, 0x9e, 0xb7, 0xc9, 0x48, 0x83, 0xa2, 0xb6, 0x28, 0x75, 0x7f, 0xe8, 0xc0, 0x98, 0x1e, + 0xa9, 0x4e, 0x25, 0x6d, 0x68, 0x2c, 0x2c, 0x56, 0xf8, 0x59, 0x60, 0xef, 0xc4, 0xbf, 0xa4, 0x70, + 0xa6, 0xca, 0x72, 0x0a, 0xc3, 0x1a, 0xcd, 0x3e, 0xee, 0x9d, 0x3f, 0x0c, 0xc5, 0xad, 0x90, 0x0a, + 0x24, 0x03, 0xa6, 0x19, 0x7e, 0x91, 0x02, 0x31, 0x2f, 0x73, 0xff, 0xa7, 0x03, 0xa7, 0xf3, 0x83, + 0xf0, 0xdf, 0x0e, 0x83, 0xbc, 0x00, 0x40, 0x87, 0x62, 0x30, 0x75, 0x2d, 0xf3, 0x84, 0x2c, 0xc1, + 0x5a, 0xad, 0xfe, 0x86, 0xfd, 0x67, 0x54, 0x28, 0x4e, 0xe9, 0x7c, 0xde, 0x81, 0x71, 0x4a, 0x76, + 0x39, 0xda, 0x34, 0x46, 0xbb, 0x66, 0x67, 0xb4, 0x0a, 0x6d, 0xea, 0x6d, 0x30, 0xc0, 0xd8, 0x24, + 0x8e, 0xde, 0x09, 0xa3, 0x5e, 0xad, 0x16, 0x91, 0x38, 0x56, 0x7e, 0x3b, 0x66, 0x8b, 0x9a, 0x95, + 0x40, 0x9c, 0x96, 0x53, 0x26, 0xda, 0xa8, 0x6d, 0xc5, 0x94, 0x2f, 0x09, 0xc6, 0xad, 0x98, 0x28, + 0x25, 0x42, 0xe1, 0x58, 0xd5, 0x70, 0x7f, 0x75, 0x10, 0x4c, 0xda, 0xa8, 0x06, 0xc7, 0xb6, 0xa3, + 0xcd, 0x79, 0x16, 0xf6, 0x70, 0x27, 0xe1, 0x07, 0x2c, 0x2c, 0x60, 0xd9, 0xc4, 0x80, 0xb3, 0x28, + 0x05, 0x95, 0x65, 0xb2, 0x9b, 0x78, 0x9b, 0x77, 0x1c, 0x7c, 0xb0, 0x6c, 0x62, 0xc0, 0x59, 0x94, + 0xe8, 0x3d, 0x50, 0xda, 0x8e, 0x36, 0x25, 0x8b, 0xce, 0x46, 0xb2, 0x2c, 0xa7, 0x45, 0x58, 0xaf, + 0x47, 0xa7, 0x70, 0x3b, 0xda, 0xa4, 0xa7, 0xa2, 0xcc, 0xc3, 0xa0, 0xa6, 0x70, 0x59, 0xc0, 0xb1, + 0xaa, 0x81, 0xda, 0x80, 0xb6, 0xe5, 0xec, 0xa9, 0x20, 0x0f, 0x71, 0x92, 0xf4, 0x1f, 0x23, 0xc2, + 0xa2, 0xeb, 0x97, 0xbb, 0xf0, 0xe0, 0x1c, 0xdc, 0xe8, 0x79, 0x38, 0xb3, 0x1d, 0x6d, 0x0a, 0x61, + 0x61, 0x3d, 0xf2, 0x83, 0xaa, 0xdf, 0x36, 0x72, 0x2e, 0x4c, 0x8b, 0xee, 0x9e, 0x59, 0xce, 0xaf, + 0x86, 0x7b, 0xb5, 0x77, 0x7f, 0x6f, 0x10, 0xd8, 0x6d, 0x51, 0xca, 0x0b, 0x5b, 0x24, 0x69, 0x84, + 0xb5, 0xac, 0xfc, 0xb3, 0xca, 0xa0, 0x58, 0x94, 0xca, 0x18, 0xd2, 0x42, 0x8f, 0x18, 0xd2, 0xeb, + 0x30, 0xdc, 0x20, 0x5e, 0x8d, 0x44, 0xd2, 0x82, 0xb8, 0x62, 0xe7, 0x7e, 0xeb, 0x25, 0x86, 0x34, + 0x55, 0xc3, 0xf9, 0xef, 0x18, 0x4b, 0x6a, 0xe8, 0xbd, 0x30, 0x41, 0x05, 0x99, 0xb0, 0x93, 0x48, + 0x13, 0x3f, 0xb7, 0x20, 0xb2, 0x13, 0x75, 0xc3, 0x28, 0xc1, 0x99, 0x9a, 0x68, 0x01, 0x26, 0x85, + 0x39, 0x5e, 0x59, 0x26, 0xc5, 0xc4, 0xaa, 0x64, 0x18, 0x95, 0x4c, 0x39, 0xee, 0x6a, 0xc1, 0x62, + 0x00, 0xc3, 0x1a, 0xf7, 0xc8, 0xea, 0x31, 0x80, 0x61, 0x6d, 0x17, 0xb3, 0x12, 0xf4, 0x0a, 0x8c, + 0xd0, 0xbf, 0x8b, 0x51, 0xd8, 0x12, 0xb6, 0x99, 0x75, 0x3b, 0xb3, 0x43, 0x69, 0x08, 0x4d, 0x91, + 0x09, 0x78, 0x73, 0x82, 0x0a, 0x56, 0xf4, 0xa8, 0xbe, 0x22, 0xcf, 0xe1, 0xca, 0xb6, 0xdf, 0x7e, + 0x8e, 0x44, 0xfe, 0xd6, 0x2e, 0x13, 0x1a, 0x46, 0x52, 0x7d, 0xe5, 0x72, 0x57, 0x0d, 0x9c, 0xd3, + 0xca, 0xfd, 0x7c, 0x01, 0xc6, 0xf4, 0x4b, 0xc7, 0xb7, 0x0b, 0x2c, 0x8e, 0xd3, 0x45, 0xc1, 0xb5, + 0xd3, 0x4b, 0x16, 0x86, 0x7d, 0xbb, 0x05, 0xd1, 0x80, 0x41, 0xaf, 0x23, 0xa4, 0x45, 0x2b, 0x46, + 0x30, 0x36, 0xe2, 0x4e, 0xd2, 0xe0, 0xb7, 0xd3, 0x58, 0xc8, 0x2f, 0xa3, 0xe0, 0x7e, 0x6a, 0x00, + 0x46, 0x64, 0x21, 0xfa, 0xa4, 0x03, 0x90, 0x86, 0x5e, 0x09, 0x56, 0xba, 0x6e, 0x23, 0x2e, 0x47, + 0x8f, 0x1a, 0xd3, 0x6c, 0xe9, 0x0a, 0x8e, 0x35, 0xba, 0x28, 0x81, 0xa1, 0x90, 0x76, 0xee, 0x82, + 0xbd, 0x8b, 0xf3, 0x6b, 0x94, 0xf0, 0x05, 0x46, 0x3d, 0x35, 0x9b, 0x31, 0x18, 0x16, 0xb4, 0xa8, + 0x06, 0xb8, 0x29, 0x23, 0x02, 0xed, 0x99, 0x98, 0x55, 0x90, 0x61, 0xaa, 0xd0, 0x29, 0x10, 0x4e, + 0x09, 0xba, 0x4f, 0xc2, 0x84, 0xb9, 0x19, 0xa8, 0x46, 0xb0, 0xb9, 0x9b, 0x10, 0x6e, 0x6f, 0x18, + 0xe3, 0x1a, 0xc1, 0x1c, 0x05, 0x60, 0x0e, 0x77, 0xbf, 0x4f, 0xe5, 0x00, 0xc5, 0x5e, 0xfa, 0x30, + 0xf1, 0x3f, 0xac, 0x1b, 0xcb, 0x7a, 0xa9, 0x5d, 0x1f, 0x87, 0x51, 0xf6, 0x0f, 0xdb, 0xe8, 0x03, + 0xb6, 0xfc, 0xf7, 0x69, 0x3f, 0xc5, 0x56, 0x67, 0x32, 0xc1, 0x73, 0x92, 0x10, 0x4e, 0x69, 0xba, + 0x21, 0x4c, 0x66, 0x6b, 0xa3, 0x0f, 0xc1, 0x58, 0x2c, 0x8f, 0xd5, 0xf4, 0x0a, 0x5d, 0x9f, 0xc7, + 0x2f, 0xf7, 0x9e, 0x69, 0xcd, 0xb1, 0x81, 0xcc, 0x5d, 0x83, 0x21, 0xab, 0x53, 0xe8, 0x7e, 0xdb, + 0x81, 0x51, 0xe6, 0xc0, 0xac, 0x47, 0x5e, 0x2b, 0x6d, 0x32, 0xb0, 0xcf, 0xac, 0xc7, 0x30, 0xcc, + 0x75, 0x74, 0x19, 0xf8, 0x63, 0x81, 0xcb, 0xf0, 0x7c, 0x77, 0x29, 0x97, 0xe1, 0xc6, 0x80, 0x18, + 0x4b, 0x4a, 0xee, 0xa7, 0x0b, 0x30, 0x74, 0x39, 0x68, 0x77, 0xfe, 0xca, 0xe7, 0x5c, 0x5b, 0x85, + 0xc1, 0xcb, 0x09, 0x69, 0x99, 0xa9, 0x01, 0xc7, 0xe6, 0x1e, 0xd1, 0xd3, 0x02, 0x96, 0xcd, 0xb4, + 0x80, 0xd8, 0xbb, 0x2e, 0xe3, 0xe2, 0x84, 0x8d, 0x38, 0xbd, 0x46, 0xf8, 0x04, 0x8c, 0xae, 0x78, + 0x9b, 0xa4, 0xb9, 0x4c, 0x76, 0xd9, 0xa5, 0x3f, 0x1e, 0xa3, 0xe1, 0xa4, 0x8a, 0xbd, 0x11, 0x4f, + 0xb1, 0x00, 0x13, 0xac, 0xb6, 0xda, 0x0c, 0x54, 0x73, 0x20, 0x69, 0x5e, 0x25, 0xc7, 0xd4, 0x1c, + 0xb4, 0x9c, 0x4a, 0x5a, 0x2d, 0x77, 0x06, 0x4a, 0x29, 0x96, 0x3e, 0xa8, 0xfe, 0xac, 0x00, 0xe3, + 0x86, 0xa9, 0xdb, 0x70, 0x00, 0x3a, 0xb7, 0x75, 0x00, 0x1a, 0x0e, 0xb9, 0xc2, 0xbd, 0x76, 0xc8, + 0x0d, 0x1c, 0xbd, 0x43, 0xce, 0xfc, 0x48, 0x83, 0x7d, 0x7d, 0xa4, 0x26, 0x0c, 0xae, 0xf8, 0xc1, + 0x76, 0x7f, 0x7c, 0x26, 0xae, 0x86, 0xed, 0x2e, 0x3e, 0x53, 0xa1, 0x40, 0xcc, 0xcb, 0xa4, 0xe4, + 0x32, 0x90, 0x2f, 0xb9, 0xb8, 0x9f, 0x74, 0x60, 0x6c, 0xd5, 0x0b, 0xfc, 0x2d, 0x12, 0x27, 0x6c, + 0x5d, 0x25, 0x87, 0x7a, 0xf9, 0x6b, 0xac, 0x47, 0x1a, 0x83, 0x37, 0x1c, 0x38, 0xbe, 0x4a, 0x5a, + 0xa1, 0xff, 0x8a, 0x97, 0x86, 0x9d, 0xd2, 0xbe, 0x37, 0xfc, 0x44, 0x44, 0xd9, 0xa9, 0xbe, 0x5f, + 0xf2, 0x13, 0x4c, 0xe1, 0xb7, 0xb1, 0xe3, 0xb2, 0x6b, 0x15, 0x54, 0x41, 0xd3, 0x2e, 0x24, 0xa6, + 0x01, 0xa5, 0xb2, 0x00, 0xa7, 0x75, 0xdc, 0xdf, 0x77, 0x60, 0x98, 0x77, 0x42, 0x45, 0xea, 0x3a, + 0x3d, 0x70, 0x37, 0xa0, 0xc8, 0xda, 0x89, 0x55, 0xbd, 0x64, 0x41, 0xfc, 0xa1, 0xe8, 0xf8, 0x1e, + 0x64, 0xff, 0x62, 0x4e, 0x80, 0xa9, 0x2d, 0xde, 0x8d, 0x59, 0x15, 0x71, 0x9b, 0xaa, 0x2d, 0x0c, + 0x8a, 0x45, 0xa9, 0xfb, 0xf5, 0x01, 0x18, 0x51, 0xd9, 0xbb, 0x58, 0x6e, 0x85, 0x20, 0x08, 0x13, + 0x8f, 0xc7, 0x3a, 0x70, 0x5e, 0xfd, 0x21, 0x7b, 0xd9, 0xc3, 0x66, 0x66, 0x53, 0xec, 0xdc, 0x7f, + 0xa7, 0x94, 0x50, 0xad, 0x04, 0xeb, 0x9d, 0x40, 0x1f, 0x83, 0xa1, 0x26, 0xe5, 0x3e, 0x92, 0x75, + 0x3f, 0x67, 0xb1, 0x3b, 0x8c, 0xad, 0x89, 0x9e, 0xa8, 0x19, 0xe2, 0x40, 0x2c, 0xa8, 0x4e, 0xbd, + 0x1f, 0x26, 0xb3, 0xbd, 0xbe, 0xdd, 0x7d, 0xc9, 0x51, 0xfd, 0xb6, 0xe5, 0xdf, 0x14, 0xdc, 0xf3, + 0xe0, 0x4d, 0xdd, 0x67, 0xa1, 0xb4, 0x4a, 0x92, 0xc8, 0xaf, 0x32, 0x04, 0xb7, 0x5b, 0x5c, 0x7d, + 0xc9, 0x0f, 0x9f, 0x61, 0x8b, 0x95, 0xe2, 0x8c, 0xd1, 0x6b, 0x00, 0xed, 0x28, 0xa4, 0xfa, 0x2b, + 0xe9, 0xc8, 0x8f, 0x6d, 0x41, 0x1e, 0x5e, 0x57, 0x38, 0xb9, 0xcb, 0x39, 0xfd, 0x8d, 0x35, 0x7a, + 0xee, 0x0b, 0x50, 0x5c, 0xed, 0x24, 0xe4, 0x46, 0x1f, 0x1c, 0xeb, 0xa0, 0x09, 0x04, 0xdc, 0x0f, + 0xc1, 0x18, 0xc3, 0x7d, 0x29, 0x6c, 0xd2, 0x63, 0x95, 0x4e, 0x4d, 0x8b, 0xfe, 0xce, 0x3a, 0x05, + 0x58, 0x25, 0xcc, 0xcb, 0xe8, 0x96, 0x69, 0x84, 0xcd, 0x9a, 0xba, 0x4c, 0xa5, 0x16, 0xc4, 0x25, + 0x06, 0xc5, 0xa2, 0xd4, 0xfd, 0xe5, 0x02, 0x94, 0x58, 0x43, 0xc1, 0x6e, 0x76, 0x61, 0xb8, 0xc1, + 0xe9, 0x88, 0x39, 0xb4, 0x10, 0xa2, 0xa5, 0xf7, 0x5e, 0xd3, 0xe5, 0x38, 0x00, 0x4b, 0x7a, 0x94, + 0xf4, 0x75, 0xcf, 0x4f, 0x28, 0xe9, 0xc2, 0xe1, 0x92, 0xbe, 0xc6, 0xc9, 0x60, 0x49, 0xcf, 0xfd, + 0x25, 0x60, 0x97, 0x94, 0x17, 0x9b, 0x5e, 0x9d, 0xcf, 0x5c, 0xb8, 0x4d, 0x6a, 0x82, 0xe7, 0x6a, + 0x33, 0x47, 0xa1, 0x58, 0x94, 0xf2, 0x8b, 0x9f, 0x49, 0xe4, 0xab, 0xe0, 0x66, 0xed, 0xe2, 0x27, + 0x03, 0xcb, 0x50, 0xf6, 0x9a, 0xfb, 0xe5, 0x02, 0x00, 0xcb, 0xf5, 0xc6, 0xef, 0x16, 0xff, 0x82, + 0x8c, 0x54, 0x32, 0x1d, 0x89, 0x2a, 0x52, 0x89, 0xdd, 0x9e, 0xd6, 0x23, 0x94, 0xf4, 0x3b, 0x07, + 0x85, 0xfd, 0xef, 0x1c, 0xa0, 0x36, 0x0c, 0x87, 0x9d, 0x84, 0xca, 0xaa, 0xe2, 0xb0, 0xb7, 0xe0, + 0x47, 0x5f, 0xe3, 0x08, 0x79, 0xa0, 0xbe, 0xf8, 0x81, 0x25, 0x19, 0xf4, 0x34, 0x8c, 0xb4, 0xa3, + 0xb0, 0x4e, 0xcf, 0x6e, 0x71, 0xbc, 0x3f, 0x20, 0xe5, 0xa1, 0x75, 0x01, 0xbf, 0xa5, 0xfd, 0x8f, + 0x55, 0x6d, 0xf7, 0x47, 0x93, 0x7c, 0x5e, 0xc4, 0xda, 0x9b, 0x82, 0x82, 0x2f, 0x2d, 0x53, 0x20, + 0x50, 0x14, 0x2e, 0x2f, 0xe0, 0x82, 0x5f, 0x53, 0xfb, 0xaa, 0xd0, 0x73, 0x5f, 0xbd, 0x07, 0x4a, + 0x35, 0x3f, 0x6e, 0x37, 0xbd, 0xdd, 0x2b, 0x39, 0x66, 0xc1, 0x85, 0xb4, 0x08, 0xeb, 0xf5, 0xd0, + 0x13, 0xe2, 0x86, 0xc9, 0xa0, 0x61, 0x0a, 0x92, 0x37, 0x4c, 0xd2, 0xbb, 0xeb, 0xfc, 0x72, 0x49, + 0xf6, 0x8e, 0x7f, 0xb1, 0xef, 0x3b, 0xfe, 0x59, 0x49, 0x6c, 0xe8, 0xe8, 0x25, 0xb1, 0xf7, 0xc1, + 0xb8, 0xfc, 0xc9, 0xc4, 0xa3, 0xf2, 0x49, 0xd6, 0x7b, 0x65, 0xae, 0xde, 0xd0, 0x0b, 0xb1, 0x59, + 0x37, 0x5d, 0xb4, 0xc3, 0xfd, 0x2e, 0xda, 0x0b, 0x00, 0x9b, 0x61, 0x27, 0xa8, 0x79, 0xd1, 0xee, + 0xe5, 0x05, 0x11, 0x8f, 0xaa, 0x04, 0xbf, 0x39, 0x55, 0x82, 0xb5, 0x5a, 0xfa, 0x42, 0x1f, 0xbd, + 0xcd, 0x42, 0xff, 0x10, 0x8c, 0xb2, 0xd8, 0x5d, 0x52, 0x9b, 0x4d, 0x44, 0x88, 0xd1, 0x41, 0x42, + 0x26, 0xd3, 0xa0, 0x43, 0x89, 0x04, 0xa7, 0xf8, 0xd0, 0x87, 0x01, 0xb6, 0xfc, 0xc0, 0x8f, 0x1b, + 0x0c, 0x7b, 0xe9, 0xc0, 0xd8, 0xd5, 0x38, 0x17, 0x15, 0x16, 0xac, 0x61, 0x44, 0x2f, 0xc2, 0x71, + 0x12, 0x27, 0x7e, 0xcb, 0x4b, 0x48, 0x4d, 0xdd, 0xc9, 0x2c, 0x33, 0x5b, 0xa6, 0x8a, 0x9e, 0xbe, + 0x98, 0xad, 0x70, 0x2b, 0x0f, 0x88, 0xbb, 0x11, 0x19, 0x3b, 0x72, 0xea, 0x20, 0x3b, 0x12, 0xfd, + 0xb9, 0x03, 0xc7, 0x23, 0xc2, 0xe3, 0x4e, 0x62, 0xd5, 0xb1, 0x53, 0x8c, 0x1d, 0x57, 0x6d, 0xa4, + 0x51, 0x57, 0xf9, 0x52, 0x70, 0x96, 0x0a, 0x17, 0x5c, 0x88, 0x1c, 0x7d, 0x57, 0xf9, 0xad, 0x3c, + 0xe0, 0x1b, 0x6f, 0x4d, 0x4f, 0x77, 0xa7, 0xf3, 0x57, 0xc8, 0xe9, 0xce, 0xfb, 0xbb, 0x6f, 0x4d, + 0x4f, 0xca, 0xdf, 0xe9, 0xa4, 0x75, 0x0d, 0x92, 0x1e, 0xab, 0xed, 0xb0, 0x76, 0x79, 0x5d, 0xc4, + 0x82, 0xa9, 0x63, 0x75, 0x9d, 0x02, 0x31, 0x2f, 0x43, 0x8f, 0xc1, 0x48, 0xcd, 0x23, 0xad, 0x30, + 0x50, 0x09, 0x71, 0x99, 0x34, 0xbf, 0x20, 0x60, 0x58, 0x95, 0x52, 0x1d, 0x22, 0x10, 0x47, 0x4a, + 0xf9, 0xac, 0x2d, 0x1d, 0x42, 0x1e, 0x52, 0x9c, 0xaa, 0xfc, 0x85, 0x15, 0x25, 0xd4, 0x84, 0x21, + 0x9f, 0x19, 0x2a, 0x44, 0xb8, 0xa9, 0x05, 0xeb, 0x08, 0x37, 0x7c, 0xc8, 0x60, 0x53, 0xc6, 0xfa, + 0x05, 0x0d, 0xfd, 0xac, 0x39, 0x76, 0x34, 0x67, 0xcd, 0x63, 0x30, 0x52, 0x6d, 0xf8, 0xcd, 0x5a, + 0x44, 0x82, 0xf2, 0x24, 0xd3, 0xd8, 0xd9, 0x4c, 0xcc, 0x0b, 0x18, 0x56, 0xa5, 0xe8, 0x6f, 0xc0, + 0x78, 0xd8, 0x49, 0x18, 0x6b, 0xa1, 0xf3, 0x14, 0x97, 0x8f, 0xb3, 0xea, 0x2c, 0x78, 0x68, 0x4d, + 0x2f, 0xc0, 0x66, 0x3d, 0xca, 0xe2, 0x1b, 0x61, 0xcc, 0x52, 0xfb, 0x30, 0x16, 0x7f, 0xda, 0x64, + 0xf1, 0x97, 0xb4, 0x32, 0x6c, 0xd4, 0x44, 0x5f, 0x75, 0xe0, 0x78, 0x2b, 0xab, 0xc0, 0x95, 0xcf, + 0xb0, 0x99, 0xa9, 0xd8, 0x10, 0xf4, 0x33, 0xa8, 0x79, 0xd8, 0x77, 0x17, 0x18, 0x77, 0x77, 0x82, + 0x25, 0xd9, 0x8a, 0x77, 0x83, 0x6a, 0x23, 0x0a, 0x03, 0xb3, 0x7b, 0xf7, 0xdb, 0xba, 0x5a, 0xc6, + 0xf6, 0x76, 0x1e, 0x89, 0xb9, 0xfb, 0x6f, 0xee, 0x4d, 0x9f, 0xca, 0x2d, 0xc2, 0xf9, 0x9d, 0x9a, + 0x5a, 0x80, 0xd3, 0xf9, 0xfc, 0xe1, 0x76, 0x1a, 0xc7, 0x80, 0xae, 0x71, 0x2c, 0xc2, 0xfd, 0x3d, + 0x3b, 0x45, 0x4f, 0x1a, 0x29, 0x6d, 0x3a, 0xe6, 0x49, 0xd3, 0x25, 0x1d, 0x4e, 0xc0, 0x98, 0xfe, + 0xfe, 0x83, 0xfb, 0x7f, 0x07, 0x00, 0x52, 0x3b, 0x39, 0xf2, 0x60, 0x82, 0xdb, 0xe4, 0x2f, 0x2f, + 0xdc, 0xf1, 0xa5, 0xf8, 0x79, 0x03, 0x01, 0xce, 0x20, 0x44, 0x2d, 0x40, 0x1c, 0xc2, 0x7f, 0xdf, + 0x89, 0x6f, 0x95, 0xb9, 0x22, 0xe7, 0xbb, 0x90, 0xe0, 0x1c, 0xc4, 0x74, 0x44, 0x49, 0xb8, 0x4d, + 0x82, 0xab, 0x78, 0xe5, 0x4e, 0x32, 0x2b, 0x70, 0x6f, 0x9c, 0x81, 0x00, 0x67, 0x10, 0x22, 0x17, + 0x86, 0x98, 0x6d, 0x46, 0x06, 0x68, 0x33, 0xf6, 0xc2, 0x24, 0x8d, 0x18, 0x8b, 0x12, 0xf4, 0x65, + 0x07, 0x26, 0x64, 0x82, 0x08, 0x66, 0x0d, 0x95, 0xa1, 0xd9, 0x57, 0x6d, 0xf9, 0x39, 0x2e, 0xea, + 0xd8, 0xd3, 0xc0, 0x47, 0x03, 0x1c, 0xe3, 0x4c, 0x27, 0xdc, 0xe7, 0xe1, 0x44, 0x4e, 0x73, 0x2b, + 0x1a, 0xed, 0x77, 0x1c, 0x28, 0x69, 0x79, 0x0b, 0xd1, 0x6b, 0x30, 0x1a, 0x56, 0xac, 0x47, 0xdb, + 0xad, 0x55, 0xba, 0xa2, 0xed, 0x14, 0x08, 0xa7, 0x04, 0xfb, 0x09, 0x12, 0xcc, 0x4d, 0xb2, 0x78, + 0x8f, 0xbb, 0x7d, 0xe0, 0x20, 0xc1, 0x5f, 0x2d, 0x42, 0x8a, 0xe9, 0x80, 0x89, 0x4b, 0xd2, 0x90, + 0xc2, 0xc2, 0xbe, 0x21, 0x85, 0x35, 0x38, 0xe6, 0x31, 0x5f, 0xf2, 0x1d, 0xa6, 0x2b, 0xe1, 0x69, + 0x6b, 0x4d, 0x0c, 0x38, 0x8b, 0x92, 0x52, 0x89, 0xd3, 0xa6, 0x8c, 0xca, 0xe0, 0x81, 0xa9, 0x54, + 0x4c, 0x0c, 0x38, 0x8b, 0x12, 0xbd, 0x08, 0xe5, 0x2a, 0xbb, 0x7e, 0xcb, 0xc7, 0x78, 0x79, 0xeb, + 0x4a, 0x98, 0xac, 0x47, 0x24, 0x26, 0x41, 0x22, 0x12, 0x93, 0x3d, 0x24, 0x66, 0xa1, 0x3c, 0xdf, + 0xa3, 0x1e, 0xee, 0x89, 0x81, 0xaa, 0x29, 0xcc, 0x19, 0xed, 0x27, 0xbb, 0x8c, 0x89, 0x08, 0x2f, + 0xbd, 0x52, 0x53, 0x2a, 0x7a, 0x21, 0x36, 0xeb, 0xa2, 0x5f, 0x71, 0x60, 0xbc, 0x29, 0xcd, 0xf5, + 0xb8, 0xd3, 0x94, 0x59, 0x36, 0xb1, 0x95, 0xe5, 0xb7, 0xa2, 0x63, 0xe6, 0xb2, 0x84, 0x01, 0xc2, + 0x26, 0xed, 0x6c, 0xee, 0x98, 0x91, 0x3e, 0x73, 0xc7, 0x7c, 0xdf, 0x81, 0xc9, 0x2c, 0x35, 0xb4, + 0x0d, 0x0f, 0xb6, 0xbc, 0x68, 0xfb, 0x72, 0xb0, 0x15, 0xb1, 0x8b, 0x18, 0x09, 0x5f, 0x0c, 0xb3, + 0x5b, 0x09, 0x89, 0x16, 0xbc, 0x5d, 0xee, 0xfe, 0x2c, 0xaa, 0x67, 0x9a, 0x1e, 0x5c, 0xdd, 0xaf, + 0x32, 0xde, 0x1f, 0x17, 0xaa, 0xc0, 0x29, 0x5a, 0x81, 0xa5, 0x96, 0xf3, 0xc3, 0x20, 0x25, 0x52, + 0x60, 0x44, 0x54, 0x30, 0xe0, 0x6a, 0x5e, 0x25, 0x9c, 0xdf, 0xd6, 0xbd, 0x08, 0x43, 0xfc, 0x5e, + 0xdc, 0x5d, 0xf9, 0x8f, 0xdc, 0xff, 0x50, 0x00, 0x29, 0x18, 0xfe, 0xd5, 0x76, 0xc7, 0xd1, 0x43, + 0x34, 0x62, 0x26, 0x25, 0x61, 0xed, 0x60, 0x87, 0xa8, 0x48, 0xe2, 0x28, 0x4a, 0xa8, 0xc4, 0x4c, + 0x6e, 0xf8, 0xc9, 0x7c, 0x58, 0x93, 0x36, 0x0e, 0x26, 0x31, 0x5f, 0x14, 0x30, 0xac, 0x4a, 0xdd, + 0x4f, 0x3a, 0x30, 0x4e, 0x47, 0xd9, 0x6c, 0x92, 0x66, 0x25, 0x21, 0xed, 0x18, 0xc5, 0x50, 0x8c, + 0xe9, 0x3f, 0xf6, 0x4c, 0x81, 0xe9, 0x5d, 0x4a, 0xd2, 0xd6, 0x9c, 0x35, 0x94, 0x08, 0xe6, 0xb4, + 0xdc, 0x37, 0x07, 0x60, 0x54, 0x4d, 0x76, 0x1f, 0xf6, 0xd4, 0x0b, 0x69, 0x7e, 0x55, 0xce, 0x81, + 0xcb, 0x5a, 0x6e, 0xd5, 0x5b, 0x74, 0xea, 0x82, 0x5d, 0x9e, 0x68, 0x22, 0x4d, 0xb4, 0xfa, 0x84, + 0xe9, 0x6a, 0x3e, 0xad, 0xaf, 0x3f, 0xad, 0xbe, 0xf0, 0x39, 0xdf, 0xd0, 0x3d, 0xfd, 0x83, 0xb6, + 0x4e, 0x33, 0xe5, 0xc6, 0xec, 0xed, 0xe2, 0xcf, 0x3c, 0xbd, 0x53, 0xec, 0xeb, 0xe9, 0x9d, 0xc7, + 0x61, 0x90, 0x04, 0x9d, 0x16, 0x13, 0x95, 0x46, 0x99, 0x8a, 0x30, 0x78, 0x31, 0xe8, 0xb4, 0xcc, + 0x91, 0xb1, 0x2a, 0xe8, 0xfd, 0x50, 0xaa, 0x91, 0xb8, 0x1a, 0xf9, 0x2c, 0x7b, 0x82, 0xb0, 0xec, + 0x3c, 0xc0, 0xcc, 0x65, 0x29, 0xd8, 0x6c, 0xa8, 0x37, 0x70, 0x5f, 0x81, 0xa1, 0xf5, 0x66, 0xa7, + 0xee, 0x07, 0xa8, 0x0d, 0x43, 0x3c, 0x97, 0x82, 0x38, 0xed, 0x2d, 0xe8, 0x9d, 0x9c, 0x55, 0x68, + 0x51, 0x28, 0xfc, 0x4a, 0xad, 0xa0, 0xe3, 0xfe, 0x4e, 0x01, 0xa8, 0x6a, 0xbe, 0x34, 0x8f, 0xfe, + 0x76, 0xd7, 0x4b, 0x33, 0x3f, 0x97, 0xf3, 0xd2, 0xcc, 0x38, 0xab, 0x9c, 0xf3, 0xc8, 0x4c, 0x13, + 0xc6, 0x99, 0x73, 0x44, 0x9e, 0x81, 0x42, 0xac, 0x7e, 0xaa, 0xcf, 0xf4, 0x03, 0x7a, 0x53, 0x71, + 0x22, 0xe8, 0x20, 0x6c, 0x22, 0x47, 0xbb, 0x70, 0x82, 0xa7, 0xe9, 0x5c, 0x20, 0x4d, 0x6f, 0xd7, + 0x48, 0xc7, 0xd5, 0x77, 0xca, 0x03, 0xd9, 0x8a, 0x07, 0x78, 0x2f, 0x74, 0xa3, 0xc3, 0x79, 0x34, + 0xdc, 0x3f, 0x18, 0x04, 0xcd, 0x7d, 0xd1, 0xc7, 0xce, 0x7a, 0x39, 0xe3, 0xac, 0x5a, 0xb5, 0xe2, + 0xac, 0x92, 0x1e, 0x20, 0xce, 0xad, 0x4c, 0xff, 0x14, 0xed, 0x54, 0x83, 0x34, 0xdb, 0x62, 0x5f, + 0xaa, 0x4e, 0x5d, 0x22, 0xcd, 0x36, 0x66, 0x25, 0xea, 0xf2, 0xe1, 0x60, 0xcf, 0xcb, 0x87, 0x0d, + 0x28, 0xd6, 0xbd, 0x4e, 0x9d, 0x88, 0x68, 0x4d, 0x0b, 0x7e, 0x49, 0x76, 0x1d, 0x82, 0xfb, 0x25, + 0xd9, 0xbf, 0x98, 0x13, 0xa0, 0x8c, 0xa1, 0x21, 0xc3, 0x57, 0x84, 0x41, 0xd7, 0x02, 0x63, 0x50, + 0x11, 0x31, 0x9c, 0x31, 0xa8, 0x9f, 0x38, 0x25, 0x86, 0xda, 0x30, 0x5c, 0xe5, 0x09, 0x53, 0x84, + 0x7c, 0x73, 0xd9, 0xc6, 0xed, 0x4a, 0x86, 0x90, 0x5b, 0x5e, 0xc4, 0x0f, 0x2c, 0xc9, 0xb8, 0xe7, + 0xa1, 0xa4, 0x3d, 0x8e, 0x41, 0x3f, 0x83, 0xca, 0xd5, 0xa1, 0x7d, 0x86, 0x05, 0x2f, 0xf1, 0x30, + 0x2b, 0x71, 0xbf, 0x39, 0x08, 0xca, 0xee, 0xa6, 0xdf, 0x05, 0xf4, 0xaa, 0x5a, 0x66, 0x21, 0xe3, + 0x5e, 0x7c, 0x18, 0x60, 0x51, 0x4a, 0x65, 0xc0, 0x16, 0x89, 0xea, 0x4a, 0xe7, 0x16, 0xac, 0x5d, + 0xc9, 0x80, 0xab, 0x7a, 0x21, 0x36, 0xeb, 0x52, 0x01, 0xbe, 0x25, 0xdc, 0xf9, 0xd9, 0x60, 0x69, + 0xe9, 0xe6, 0xc7, 0xaa, 0x06, 0x4b, 0x4d, 0xd0, 0xd2, 0xbc, 0xff, 0x22, 0x68, 0xd3, 0x86, 0xf3, + 0x49, 0xc3, 0xca, 0x83, 0xab, 0x74, 0x08, 0x36, 0xa8, 0xa2, 0x25, 0x38, 0x1e, 0x93, 0x64, 0xed, + 0x7a, 0x40, 0x22, 0x95, 0x36, 0x40, 0xe4, 0xbe, 0x50, 0x37, 0x25, 0x2a, 0xd9, 0x0a, 0xb8, 0xbb, + 0x4d, 0x6e, 0x9c, 0x6b, 0xf1, 0xc0, 0x71, 0xae, 0x0b, 0x30, 0xb9, 0xe5, 0xf9, 0xcd, 0x4e, 0x44, + 0x7a, 0x46, 0xcb, 0x2e, 0x66, 0xca, 0x71, 0x57, 0x0b, 0x76, 0x59, 0xa7, 0xe9, 0xd5, 0xe3, 0xf2, + 0xb0, 0x76, 0x59, 0x87, 0x02, 0x30, 0x87, 0xbb, 0xbf, 0xe5, 0x00, 0x4f, 0x3a, 0x34, 0xbb, 0xb5, + 0xe5, 0x07, 0x7e, 0xb2, 0x8b, 0xbe, 0xe6, 0xc0, 0x64, 0x10, 0xd6, 0xc8, 0x6c, 0x90, 0xf8, 0x12, + 0x68, 0x2f, 0x13, 0x3c, 0xa3, 0x75, 0x25, 0x83, 0x9e, 0x67, 0xb0, 0xc8, 0x42, 0x71, 0x57, 0x37, + 0xdc, 0x5b, 0x0e, 0x94, 0x18, 0x06, 0x11, 0x55, 0xaf, 0xb9, 0x00, 0x9d, 0xfd, 0x5d, 0x80, 0xf4, + 0xf3, 0x46, 0x84, 0xf9, 0x17, 0xd2, 0x7c, 0x21, 0xc2, 0x6f, 0x78, 0xbf, 0x66, 0xf2, 0x36, 0x2b, + 0xe0, 0xee, 0x36, 0x14, 0x11, 0xb3, 0xf6, 0xfa, 0xa4, 0x59, 0x53, 0x47, 0x16, 0x5f, 0xe5, 0x0a, + 0xd1, 0x95, 0x6c, 0x05, 0xdc, 0xdd, 0x06, 0xcd, 0x18, 0xa2, 0x33, 0xbf, 0x4d, 0x35, 0xd1, 0x5b, + 0xd2, 0x75, 0xcf, 0xc0, 0xa9, 0xdc, 0xd9, 0x73, 0xbf, 0x3f, 0x00, 0x66, 0xe2, 0x28, 0xf4, 0x2c, + 0x14, 0x9b, 0x2c, 0x95, 0x89, 0x73, 0x87, 0x19, 0xc1, 0xd8, 0x42, 0xe1, 0xb9, 0x4e, 0x38, 0x26, + 0xb4, 0x00, 0x25, 0x96, 0x8d, 0x4a, 0x24, 0x9a, 0x29, 0x18, 0x39, 0x1e, 0xf8, 0x47, 0x51, 0x29, + 0x66, 0xf4, 0x9f, 0x58, 0x6f, 0x86, 0x5e, 0x85, 0xe1, 0x4d, 0x9e, 0x93, 0xd3, 0x9e, 0x73, 0x54, + 0x24, 0xf9, 0x64, 0x42, 0xa4, 0xcc, 0xf8, 0x79, 0x2b, 0xfd, 0x17, 0x4b, 0x8a, 0x68, 0x17, 0x46, + 0x3c, 0xb9, 0xa0, 0x07, 0x6d, 0xdd, 0x3c, 0x31, 0x36, 0x8f, 0x08, 0x2d, 0x92, 0x0b, 0x58, 0x91, + 0xcb, 0xc4, 0x60, 0x15, 0xfb, 0x8a, 0xc1, 0xfa, 0xb6, 0x03, 0x90, 0x3e, 0x60, 0x82, 0x6e, 0xc0, + 0x48, 0xfc, 0x94, 0x61, 0xd1, 0xb1, 0x91, 0x72, 0x40, 0x60, 0xd4, 0xae, 0xe5, 0x0a, 0x08, 0x56, + 0xd4, 0x6e, 0x67, 0x85, 0xfa, 0x99, 0x03, 0x27, 0xf3, 0x1e, 0x5a, 0xb9, 0x87, 0x3d, 0x3e, 0xa8, + 0x01, 0x4a, 0x34, 0x58, 0x8f, 0xc8, 0x96, 0x7f, 0x23, 0x27, 0x33, 0x34, 0x2f, 0xc0, 0x69, 0x1d, + 0xf7, 0x8d, 0x61, 0x50, 0x84, 0x0f, 0xc9, 0x60, 0xf5, 0x28, 0x55, 0x2e, 0xeb, 0xe9, 0x4d, 0x51, + 0x55, 0x0f, 0x33, 0x28, 0x16, 0xa5, 0x54, 0xc1, 0x94, 0xb7, 0x07, 0xc4, 0x79, 0xc5, 0x56, 0xa1, + 0xbc, 0x65, 0x80, 0x55, 0x69, 0x9e, 0x09, 0xac, 0x78, 0x24, 0x26, 0xb0, 0x21, 0xfb, 0x26, 0x30, + 0xca, 0xfa, 0xc3, 0x26, 0x99, 0xc5, 0x57, 0x84, 0xda, 0x94, 0xb2, 0x7e, 0x0e, 0xc6, 0xb2, 0xfc, + 0x0e, 0x8d, 0x40, 0xe8, 0x77, 0x9d, 0x7d, 0xac, 0x6c, 0xa3, 0xb6, 0x0e, 0xc4, 0xdc, 0x34, 0x7a, + 0x4c, 0x07, 0xbc, 0x13, 0xd3, 0xdd, 0xd7, 0x1d, 0x38, 0x4e, 0x82, 0x6a, 0xb4, 0xcb, 0xf0, 0x08, + 0x6c, 0xc2, 0x39, 0x7f, 0xd5, 0xc6, 0xe6, 0xbb, 0x98, 0x45, 0xce, 0x7d, 0x60, 0x5d, 0x60, 0xdc, + 0xdd, 0x0d, 0xb4, 0x06, 0x23, 0x55, 0x4f, 0xac, 0x88, 0xd2, 0x41, 0x56, 0x04, 0x77, 0x31, 0xce, + 0x8a, 0xa5, 0xa0, 0x90, 0xb8, 0x3f, 0x29, 0xc0, 0x89, 0x9c, 0x2e, 0xb1, 0x9b, 0x66, 0x2d, 0xba, + 0x22, 0x2f, 0xd7, 0xb2, 0xfb, 0x71, 0x59, 0xc0, 0xb1, 0xaa, 0x81, 0xd6, 0xe1, 0xe4, 0x76, 0x2b, + 0x4e, 0xb1, 0xcc, 0x87, 0x41, 0x42, 0x6e, 0xc8, 0xdd, 0x29, 0x1d, 0xf7, 0x27, 0x97, 0x73, 0xea, + 0xe0, 0xdc, 0x96, 0x54, 0x76, 0x23, 0x81, 0xb7, 0xd9, 0x24, 0x69, 0x91, 0xb8, 0x27, 0xa9, 0x64, + 0xb7, 0x8b, 0x99, 0x72, 0xdc, 0xd5, 0x02, 0x7d, 0xd6, 0x81, 0xb3, 0x31, 0x89, 0x76, 0x48, 0x54, + 0xf1, 0x6b, 0x64, 0xbe, 0x13, 0x27, 0x61, 0x8b, 0x44, 0x77, 0x68, 0x57, 0x9e, 0xbe, 0xb9, 0x37, + 0x7d, 0xb6, 0xd2, 0x1b, 0x1b, 0xde, 0x8f, 0x94, 0xfb, 0x59, 0x07, 0x26, 0x2a, 0xcc, 0xea, 0xa0, + 0x14, 0x09, 0xdb, 0x89, 0x54, 0x1f, 0x55, 0x99, 0x3d, 0x32, 0x5c, 0xd1, 0xcc, 0xc5, 0xe1, 0xbe, + 0x04, 0x93, 0x15, 0xd2, 0xf2, 0xda, 0x0d, 0x76, 0xc9, 0x99, 0x07, 0xae, 0x9d, 0x87, 0xd1, 0x58, + 0xc2, 0xb2, 0x6f, 0x27, 0xa9, 0xca, 0x38, 0xad, 0x83, 0x1e, 0xe1, 0x41, 0x76, 0xf2, 0xaa, 0xd4, + 0x28, 0x57, 0xb9, 0x78, 0x64, 0x5e, 0x8c, 0x65, 0x99, 0xfb, 0xa6, 0x03, 0x63, 0x69, 0x7b, 0xb2, + 0x85, 0xea, 0x70, 0xac, 0xaa, 0x5d, 0x33, 0x4c, 0x2f, 0x78, 0xf4, 0x7f, 0x23, 0x91, 0xe7, 0x77, + 0x36, 0x91, 0xe0, 0x2c, 0xd6, 0x83, 0xc7, 0x28, 0x7e, 0xa1, 0x00, 0xc7, 0x54, 0x57, 0x85, 0x87, + 0xf5, 0xf5, 0x6c, 0x28, 0x21, 0xb6, 0x91, 0xa3, 0xc8, 0x9c, 0xfb, 0x7d, 0xc2, 0x09, 0x5f, 0xcf, + 0x86, 0x13, 0x1e, 0x2a, 0xf9, 0x2e, 0xa7, 0xf1, 0xb7, 0x0b, 0x30, 0xa2, 0x32, 0x26, 0x3d, 0x0b, + 0x45, 0xa6, 0x47, 0xdf, 0x9d, 0x40, 0xcc, 0x74, 0x72, 0xcc, 0x31, 0x51, 0x94, 0x4c, 0x35, 0xb8, + 0xe3, 0xac, 0xbb, 0xa3, 0xdc, 0xf2, 0xea, 0x45, 0x09, 0xe6, 0x98, 0xd0, 0x32, 0x0c, 0x90, 0xa0, + 0x26, 0x24, 0xe3, 0x83, 0x23, 0x64, 0xaf, 0x9c, 0x5d, 0x0c, 0x6a, 0x98, 0x62, 0x61, 0x69, 0xdb, + 0xb8, 0x00, 0x94, 0x79, 0xd3, 0x46, 0x48, 0x3f, 0xa2, 0xd4, 0xfd, 0x00, 0x18, 0x09, 0xfb, 0xc4, + 0x43, 0x00, 0x42, 0xe3, 0xec, 0x7e, 0x88, 0x4c, 0xa8, 0x9a, 0x69, 0x1d, 0xf7, 0x57, 0x06, 0x60, + 0xa8, 0xd2, 0xd9, 0xa4, 0x4a, 0xc2, 0xb7, 0x1c, 0x38, 0x71, 0x3d, 0x93, 0xd3, 0x3a, 0xdd, 0x24, + 0x57, 0xed, 0x99, 0xaf, 0xf5, 0x98, 0xbb, 0xb3, 0xf2, 0xc5, 0xff, 0x9c, 0x42, 0x9c, 0xd7, 0x1d, + 0x23, 0xad, 0xec, 0xc0, 0xa1, 0xa4, 0x95, 0xbd, 0x71, 0xc8, 0x97, 0x4e, 0xc6, 0x7b, 0x5d, 0x38, + 0x71, 0xff, 0xa0, 0x08, 0xc0, 0xbf, 0xc6, 0x5a, 0x3b, 0xe9, 0xc7, 0xc8, 0xf8, 0x34, 0x8c, 0xd5, + 0x49, 0x40, 0x22, 0x19, 0x51, 0x99, 0x79, 0x6f, 0x69, 0x49, 0x2b, 0xc3, 0x46, 0x4d, 0xa6, 0xd4, + 0x04, 0x49, 0xb4, 0xcb, 0x05, 0xdf, 0xec, 0xc5, 0x12, 0x55, 0x82, 0xb5, 0x5a, 0x19, 0xa5, 0xb7, + 0x78, 0x3b, 0xa5, 0x17, 0xbd, 0x1f, 0x26, 0xcc, 0x2c, 0x2d, 0x42, 0xda, 0x53, 0xa1, 0x02, 0x66, + 0x72, 0x17, 0x9c, 0xa9, 0x4d, 0x77, 0x41, 0x2d, 0xda, 0xc5, 0x9d, 0x40, 0x88, 0x7d, 0x6a, 0x17, + 0x2c, 0x30, 0x28, 0x16, 0xa5, 0x2c, 0xbd, 0x05, 0x3b, 0x00, 0x39, 0x5c, 0xa4, 0xc8, 0x48, 0xd3, + 0x5b, 0x68, 0x65, 0xd8, 0xa8, 0x49, 0x29, 0x08, 0x23, 0x2d, 0x98, 0xfb, 0x2c, 0x63, 0x59, 0x6d, + 0xc3, 0x44, 0x68, 0x1a, 0x97, 0xb8, 0x0c, 0xf4, 0xee, 0x3e, 0x97, 0x9e, 0xd1, 0x96, 0x87, 0x78, + 0x64, 0x6c, 0x51, 0x19, 0xfc, 0x54, 0xee, 0xd5, 0xef, 0x5f, 0x8c, 0x99, 0x01, 0xb9, 0x3d, 0xaf, + 0x48, 0xac, 0xc3, 0xc9, 0x76, 0x58, 0x5b, 0x8f, 0xfc, 0x30, 0xf2, 0x93, 0xdd, 0xf9, 0xa6, 0x17, + 0xc7, 0x6c, 0x61, 0x8c, 0x9b, 0xf2, 0xd0, 0x7a, 0x4e, 0x1d, 0x9c, 0xdb, 0x92, 0x6a, 0x28, 0x6d, + 0x01, 0x64, 0x61, 0x71, 0x45, 0x2e, 0xd1, 0xc9, 0x8a, 0x58, 0x95, 0xba, 0x27, 0xe0, 0x78, 0xa5, + 0xd3, 0x6e, 0x37, 0x7d, 0x52, 0x53, 0xfe, 0x18, 0xf7, 0x03, 0x70, 0x4c, 0x24, 0x9d, 0x55, 0xd2, + 0xc7, 0x81, 0x52, 0xa4, 0xbb, 0x7f, 0xee, 0xc0, 0xb1, 0x4c, 0x10, 0x12, 0x7a, 0x35, 0x2b, 0x33, + 0xd8, 0x49, 0x86, 0xaa, 0x49, 0x0b, 0x22, 0xb3, 0x69, 0x9e, 0xfc, 0xd1, 0x90, 0x37, 0x08, 0xac, + 0xdd, 0xdc, 0x61, 0x71, 0xf6, 0xfc, 0x48, 0xd1, 0xaf, 0x21, 0xb8, 0x9f, 0x29, 0x40, 0x7e, 0xe4, + 0x17, 0xfa, 0x58, 0xf7, 0x04, 0x3c, 0x6b, 0x71, 0x02, 0x44, 0xe8, 0x59, 0xef, 0x39, 0x08, 0xcc, + 0x39, 0x58, 0xb5, 0x34, 0x07, 0x82, 0x6e, 0xf7, 0x4c, 0xfc, 0x2f, 0x07, 0x4a, 0x1b, 0x1b, 0x2b, + 0xea, 0x9c, 0xc3, 0x70, 0x3a, 0xe6, 0x99, 0x09, 0x98, 0x83, 0x7c, 0x3e, 0x6c, 0xb5, 0xb9, 0xbf, + 0x5c, 0xf8, 0xf1, 0x59, 0xfe, 0xdf, 0x4a, 0x6e, 0x0d, 0xdc, 0xa3, 0x25, 0xba, 0x0c, 0x27, 0xf4, + 0x92, 0x8a, 0xf6, 0xdc, 0x62, 0x51, 0x64, 0x03, 0xea, 0x2e, 0xc6, 0x79, 0x6d, 0xb2, 0xa8, 0x84, + 0xad, 0x97, 0x1d, 0x57, 0x39, 0xa8, 0x44, 0x31, 0xce, 0x6b, 0xe3, 0xae, 0x41, 0x69, 0xc3, 0x8b, + 0xd4, 0xc0, 0x3f, 0x08, 0x93, 0xd5, 0xb0, 0x25, 0xcd, 0x4c, 0x2b, 0x64, 0x87, 0x34, 0xc5, 0x90, + 0xf9, 0x1b, 0x27, 0x99, 0x32, 0xdc, 0x55, 0xdb, 0xfd, 0xef, 0xe7, 0x40, 0xdd, 0xb4, 0xec, 0xe3, + 0x84, 0x69, 0xab, 0x98, 0xd8, 0xa2, 0xe5, 0x98, 0x58, 0xc5, 0x6b, 0x33, 0x71, 0xb1, 0x49, 0x1a, + 0x17, 0x3b, 0x64, 0x3b, 0x2e, 0x56, 0x49, 0x9c, 0x5d, 0xb1, 0xb1, 0x5f, 0x71, 0x60, 0x2c, 0x08, + 0x6b, 0x44, 0x59, 0x85, 0x87, 0x99, 0xd8, 0xfb, 0xa2, 0xbd, 0x2b, 0x06, 0x3c, 0xc6, 0x53, 0xa0, + 0xe7, 0xf1, 0xda, 0xea, 0x88, 0xd2, 0x8b, 0xb0, 0xd1, 0x0f, 0xb4, 0xa8, 0x19, 0x3e, 0xb9, 0x73, + 0xe5, 0x81, 0x3c, 0x7d, 0xe5, 0xb6, 0x56, 0xcc, 0x1b, 0x9a, 0xdc, 0x34, 0x6a, 0xcb, 0xa0, 0x27, + 0xaf, 0xcf, 0x69, 0x3e, 0x22, 0x99, 0xc2, 0x3a, 0x95, 0xa7, 0x5c, 0x18, 0xe2, 0x81, 0xdd, 0x22, + 0xef, 0x14, 0x73, 0x5d, 0xf2, 0xa0, 0x6f, 0x2c, 0x4a, 0x50, 0x22, 0x83, 0x25, 0x4a, 0xb6, 0x1e, + 0xa4, 0x30, 0x82, 0x31, 0xf2, 0xa3, 0x25, 0xd0, 0x33, 0xba, 0x1e, 0x3c, 0xd6, 0x8f, 0x1e, 0x3c, + 0xde, 0x53, 0x07, 0xfe, 0xbc, 0x03, 0x63, 0x55, 0xed, 0x81, 0x88, 0xf2, 0x63, 0xb6, 0x1e, 0xc2, + 0xce, 0x7b, 0xc7, 0x83, 0x7b, 0xc4, 0x8c, 0x07, 0x29, 0x0c, 0xea, 0x2c, 0xd9, 0x26, 0x53, 0xfa, + 0xd9, 0xd1, 0x6f, 0x25, 0xbf, 0x86, 0x69, 0x44, 0x90, 0x41, 0xa7, 0x14, 0x86, 0x05, 0x2d, 0xf4, + 0x1a, 0x8c, 0xc8, 0xbb, 0x01, 0x22, 0x86, 0x1e, 0xdb, 0xb0, 0xd2, 0x9b, 0x7e, 0x50, 0x99, 0xa1, + 0x8f, 0x43, 0xb1, 0xa2, 0x88, 0x1a, 0x30, 0x50, 0xf3, 0xea, 0x22, 0x9a, 0x7e, 0xd5, 0x4e, 0x06, + 0x54, 0x49, 0x93, 0xe9, 0x67, 0x0b, 0xb3, 0x4b, 0x98, 0x92, 0x40, 0x37, 0xd2, 0x0c, 0xfb, 0x93, + 0xd6, 0x4e, 0x5f, 0x53, 0x4c, 0xe2, 0x66, 0x8d, 0xae, 0x84, 0xfd, 0x35, 0xe1, 0x3a, 0xfe, 0x6b, + 0x8c, 0xec, 0xa2, 0x9d, 0x14, 0xaa, 0x3c, 0x5f, 0x4b, 0xea, 0x7e, 0xa6, 0x54, 0x1a, 0x49, 0xd2, + 0x2e, 0xff, 0xbc, 0x2d, 0x2a, 0x2c, 0xeb, 0x08, 0x7f, 0xb3, 0x7c, 0x63, 0x63, 0x1d, 0x33, 0xec, + 0xa8, 0x09, 0x43, 0x6d, 0x16, 0x01, 0x53, 0x7e, 0xa7, 0xad, 0xb3, 0x85, 0x47, 0xd4, 0xf0, 0xb5, + 0xc9, 0xff, 0xc7, 0x82, 0x06, 0xba, 0x08, 0xc3, 0xfc, 0xa1, 0x18, 0x7e, 0x9b, 0xa1, 0x74, 0x61, + 0xaa, 0xf7, 0x73, 0x33, 0xe9, 0x41, 0xc1, 0x7f, 0xc7, 0x58, 0xb6, 0x45, 0x5f, 0x70, 0x60, 0x82, + 0x72, 0xd4, 0xf4, 0x65, 0x9b, 0x32, 0xb2, 0xc5, 0xb3, 0xae, 0xc6, 0x54, 0x22, 0x91, 0xbc, 0x46, + 0xa9, 0x49, 0x97, 0x0d, 0x72, 0x38, 0x43, 0x1e, 0xbd, 0x0e, 0x23, 0xb1, 0x5f, 0x23, 0x55, 0x2f, + 0x8a, 0xcb, 0x27, 0x0e, 0xa7, 0x2b, 0xa9, 0xbf, 0x46, 0x10, 0xc2, 0x8a, 0x24, 0xfa, 0x75, 0xf6, + 0xb4, 0x68, 0xb5, 0xe1, 0xef, 0x90, 0x95, 0xb0, 0xca, 0xc5, 0xfa, 0x93, 0xb6, 0xf6, 0xbe, 0xf4, + 0x4c, 0x49, 0xcc, 0xc2, 0x8d, 0x61, 0x92, 0xc3, 0x59, 0xfa, 0xe8, 0xef, 0x38, 0x70, 0x8a, 0x3f, + 0x12, 0x90, 0x7d, 0xd5, 0xe2, 0xd4, 0x1d, 0xda, 0x67, 0xd8, 0x35, 0x8c, 0xd9, 0x3c, 0x94, 0x38, + 0x9f, 0x12, 0x4b, 0xe9, 0x6b, 0x3e, 0x44, 0x74, 0xda, 0xaa, 0xdf, 0xb2, 0xff, 0xc7, 0x87, 0xd0, + 0x93, 0x50, 0x6a, 0x8b, 0xe3, 0xd0, 0x8f, 0x5b, 0xec, 0x52, 0xcd, 0x00, 0xbf, 0xee, 0xb8, 0x9e, + 0x82, 0xb1, 0x5e, 0xc7, 0xc8, 0xef, 0xfc, 0xf8, 0x7e, 0xf9, 0x9d, 0xd1, 0x55, 0x28, 0x25, 0x61, + 0x53, 0xa4, 0x38, 0x8d, 0xcb, 0x65, 0xb6, 0x02, 0xcf, 0xe5, 0xed, 0xad, 0x0d, 0x55, 0x2d, 0xd5, + 0x64, 0x53, 0x58, 0x8c, 0x75, 0x3c, 0x2c, 0x90, 0x59, 0x3c, 0xbe, 0x10, 0x31, 0x15, 0xf6, 0xfe, + 0x4c, 0x20, 0xb3, 0x5e, 0x88, 0xcd, 0xba, 0x68, 0x09, 0x8e, 0xb7, 0xbb, 0x74, 0xe0, 0x29, 0xd3, + 0xcf, 0xdf, 0xad, 0x00, 0x77, 0xb7, 0x31, 0xb4, 0xdf, 0xb3, 0xfb, 0x69, 0xbf, 0x3d, 0xb2, 0x1d, + 0x3f, 0x70, 0x27, 0xd9, 0x8e, 0x51, 0x0d, 0x1e, 0xf0, 0x3a, 0x49, 0xc8, 0x32, 0xeb, 0x98, 0x4d, + 0x78, 0x4c, 0xf7, 0x43, 0x3c, 0x4c, 0xfc, 0xe6, 0xde, 0xf4, 0x03, 0xb3, 0xfb, 0xd4, 0xc3, 0xfb, + 0x62, 0x41, 0xaf, 0xc0, 0x08, 0x11, 0x19, 0x9b, 0xcb, 0x3f, 0x67, 0x4b, 0x48, 0x30, 0x73, 0x40, + 0xcb, 0x70, 0x59, 0x0e, 0xc3, 0x8a, 0x1e, 0xda, 0x80, 0x52, 0x23, 0x8c, 0x93, 0xd9, 0xa6, 0xef, + 0xc5, 0x24, 0x2e, 0x3f, 0xc8, 0x16, 0x4d, 0xae, 0xec, 0x75, 0x49, 0x56, 0x4b, 0xd7, 0xcc, 0xa5, + 0xb4, 0x25, 0xd6, 0xd1, 0x20, 0xc2, 0xbc, 0x97, 0x2c, 0xa0, 0x5d, 0x3a, 0x82, 0xce, 0xb1, 0x81, + 0x3d, 0x9a, 0x87, 0x79, 0x3d, 0xac, 0x55, 0xcc, 0xda, 0xca, 0x7d, 0xa9, 0x03, 0x71, 0x16, 0x27, + 0x7a, 0x1a, 0xc6, 0xda, 0x61, 0xad, 0xd2, 0x26, 0xd5, 0x75, 0x2f, 0xa9, 0x36, 0xca, 0xd3, 0xa6, + 0xd5, 0x6d, 0x5d, 0x2b, 0xc3, 0x46, 0x4d, 0xd4, 0x86, 0xe1, 0x16, 0x4f, 0xb9, 0x50, 0x7e, 0xd8, + 0x96, 0x6e, 0x23, 0x72, 0x38, 0x70, 0x79, 0x41, 0xfc, 0xc0, 0x92, 0x0c, 0xfa, 0xc7, 0x0e, 0x1c, + 0xcb, 0x5c, 0x13, 0x2b, 0xbf, 0xc3, 0x9a, 0xc8, 0x62, 0x22, 0x9e, 0x7b, 0x94, 0x4d, 0x9f, 0x09, + 0xbc, 0xd5, 0x0d, 0xc2, 0xd9, 0x1e, 0xf1, 0x79, 0x61, 0x79, 0x53, 0xca, 0x8f, 0xd8, 0x9b, 0x17, + 0x86, 0x50, 0xce, 0x0b, 0xfb, 0x81, 0x25, 0x19, 0xf4, 0x38, 0x0c, 0x8b, 0x14, 0x87, 0xe5, 0x47, + 0x4d, 0x17, 0xb4, 0xc8, 0x84, 0x88, 0x65, 0xf9, 0xd4, 0x07, 0xe0, 0x78, 0x97, 0xea, 0x76, 0xa0, + 0xe4, 0x1d, 0xbf, 0xe9, 0x80, 0x7e, 0xaf, 0xdc, 0xfa, 0x33, 0x29, 0x4f, 0xc3, 0x58, 0x95, 0xbf, + 0x49, 0xc9, 0x6f, 0xa6, 0x0f, 0x9a, 0xf6, 0xcf, 0x79, 0xad, 0x0c, 0x1b, 0x35, 0xdd, 0x4b, 0x80, + 0xba, 0x73, 0xd8, 0xdf, 0x51, 0x66, 0xa8, 0x7f, 0xea, 0xc0, 0xb8, 0x21, 0x33, 0x58, 0x77, 0x32, + 0x2e, 0x02, 0x6a, 0xf9, 0x51, 0x14, 0x46, 0xfa, 0xe3, 0x7f, 0x22, 0x0a, 0x8c, 0xdd, 0xcf, 0x5b, + 0xed, 0x2a, 0xc5, 0x39, 0x2d, 0xdc, 0xdf, 0x19, 0x84, 0x34, 0x5e, 0x5c, 0x25, 0x09, 0x76, 0x7a, + 0x26, 0x09, 0x7e, 0x02, 0x46, 0x5e, 0x8a, 0xc3, 0x60, 0x3d, 0x4d, 0x25, 0xac, 0xbe, 0xc5, 0x33, + 0x95, 0xb5, 0x2b, 0xac, 0xa6, 0xaa, 0xc1, 0x6a, 0xbf, 0xbc, 0xe8, 0x37, 0x93, 0xee, 0x5c, 0xb3, + 0xcf, 0x3c, 0xcb, 0xe1, 0x58, 0xd5, 0x60, 0xef, 0x00, 0xee, 0x10, 0x65, 0x18, 0x4f, 0xdf, 0x01, + 0xe4, 0xcf, 0x53, 0xb0, 0x32, 0x74, 0x1e, 0x46, 0x95, 0x51, 0x5d, 0x58, 0xea, 0xd5, 0x4c, 0x29, + 0xcb, 0x3b, 0x4e, 0xeb, 0x30, 0x81, 0x50, 0x18, 0x62, 0x85, 0x09, 0xa5, 0x62, 0x43, 0x3d, 0xc9, + 0x98, 0x76, 0x39, 0x6f, 0x97, 0x60, 0xac, 0x48, 0xe6, 0x39, 0x5a, 0x47, 0x0f, 0xc5, 0xd1, 0xaa, + 0x5d, 0x5e, 0x28, 0xf6, 0x7b, 0x79, 0xc1, 0x5c, 0xdb, 0x23, 0x7d, 0xad, 0xed, 0x4f, 0x0d, 0xc0, + 0xf0, 0x73, 0x24, 0x62, 0x29, 0xd6, 0x1f, 0x87, 0xe1, 0x1d, 0xfe, 0x6f, 0xf6, 0xe6, 0xab, 0xa8, + 0x81, 0x65, 0x39, 0xfd, 0x6e, 0x9b, 0x1d, 0xbf, 0x59, 0x5b, 0x48, 0x77, 0x71, 0x9a, 0x9d, 0x51, + 0x16, 0xe0, 0xb4, 0x0e, 0x6d, 0x50, 0xa7, 0x92, 0x7d, 0xab, 0xe5, 0x77, 0x3d, 0x71, 0xbf, 0x24, + 0x0b, 0x70, 0x5a, 0x07, 0x3d, 0x0a, 0x43, 0x75, 0x3f, 0xd9, 0xf0, 0xea, 0x59, 0x37, 0xe1, 0x12, + 0x83, 0x62, 0x51, 0xca, 0xdc, 0x44, 0x7e, 0xb2, 0x11, 0x11, 0x66, 0xd9, 0xed, 0x4a, 0xbc, 0xb1, + 0xa4, 0x95, 0x61, 0xa3, 0x26, 0xeb, 0x52, 0x28, 0x46, 0x26, 0x42, 0x58, 0xd3, 0x2e, 0xc9, 0x02, + 0x9c, 0xd6, 0xa1, 0xeb, 0xbf, 0x1a, 0xb6, 0xda, 0x7e, 0x53, 0x04, 0x57, 0x6b, 0xeb, 0x7f, 0x5e, + 0xc0, 0xb1, 0xaa, 0x41, 0x6b, 0x53, 0x16, 0x46, 0xd9, 0x4f, 0xf6, 0xcd, 0xb5, 0x75, 0x01, 0xc7, + 0xaa, 0x86, 0xfb, 0x1c, 0x8c, 0xf3, 0x9d, 0x3c, 0xdf, 0xf4, 0xfc, 0xd6, 0xd2, 0x3c, 0xba, 0xd8, + 0x75, 0x79, 0xe1, 0xf1, 0x9c, 0xcb, 0x0b, 0xa7, 0x8c, 0x46, 0xdd, 0x97, 0x18, 0xdc, 0x1f, 0x16, + 0x60, 0xe4, 0x08, 0x9f, 0xad, 0x3c, 0xf2, 0x17, 0x98, 0xd1, 0x8d, 0xcc, 0x93, 0x95, 0xeb, 0x36, + 0xef, 0x22, 0xed, 0xfb, 0x5c, 0xe5, 0x7f, 0x2d, 0xc0, 0x69, 0x59, 0x55, 0xea, 0x72, 0x4b, 0xf3, + 0xec, 0xb1, 0xb0, 0xc3, 0x9f, 0xe8, 0xc8, 0x98, 0xe8, 0x75, 0x7b, 0xda, 0xe8, 0xd2, 0x7c, 0xcf, + 0xa9, 0x7e, 0x25, 0x33, 0xd5, 0xd8, 0x2a, 0xd5, 0xfd, 0x27, 0xfb, 0x2f, 0x1c, 0x98, 0xca, 0x9f, + 0xec, 0x23, 0x78, 0x25, 0xf4, 0x75, 0xf3, 0x95, 0xd0, 0x5f, 0xb4, 0xb7, 0xc4, 0xcc, 0xa1, 0xf4, + 0x78, 0x2f, 0xf4, 0xcf, 0x1c, 0x38, 0x29, 0x1b, 0xb0, 0xd3, 0x73, 0xce, 0x0f, 0x58, 0x24, 0xcb, + 0xe1, 0x2f, 0xb3, 0xd7, 0x8c, 0x65, 0xf6, 0x82, 0xbd, 0x81, 0xeb, 0xe3, 0xe8, 0xf9, 0xba, 0xfa, + 0x9f, 0x3a, 0x50, 0xce, 0x6b, 0x70, 0x04, 0x9f, 0xfc, 0x55, 0xf3, 0x93, 0x3f, 0x77, 0x38, 0x23, + 0xef, 0xfd, 0xc1, 0xcb, 0xbd, 0x26, 0x0a, 0x35, 0xa5, 0x5c, 0xe5, 0xd8, 0xf2, 0xd1, 0x72, 0x12, + 0xf9, 0x02, 0x5a, 0x13, 0x86, 0x62, 0x16, 0xb5, 0x21, 0x96, 0xc0, 0x25, 0x1b, 0xd2, 0x16, 0xc5, + 0x27, 0x6c, 0xec, 0xec, 0x7f, 0x2c, 0x68, 0xb8, 0xbf, 0x55, 0x80, 0x33, 0xea, 0xf5, 0x5f, 0xb2, + 0x43, 0x9a, 0xe9, 0xfe, 0x60, 0x0f, 0x52, 0x78, 0xea, 0xa7, 0xbd, 0x07, 0x29, 0x52, 0x12, 0xe9, + 0x5e, 0x48, 0x61, 0x58, 0xa3, 0x89, 0x2a, 0x70, 0x8a, 0x3d, 0x20, 0xb1, 0xe8, 0x07, 0x5e, 0xd3, + 0x7f, 0x85, 0x44, 0x98, 0xb4, 0xc2, 0x1d, 0x4f, 0xde, 0xd7, 0x50, 0x97, 0x9f, 0x17, 0xf3, 0x2a, + 0xe1, 0xfc, 0xb6, 0x5d, 0x1a, 0xf7, 0x40, 0xbf, 0x1a, 0xb7, 0xfb, 0x27, 0x0e, 0x8c, 0x1d, 0xe1, + 0x5b, 0xc9, 0xa1, 0xb9, 0x25, 0x9e, 0xb1, 0xb7, 0x25, 0x7a, 0x6c, 0x83, 0xbd, 0x22, 0x74, 0x3d, + 0x1f, 0x8b, 0x3e, 0xed, 0xa8, 0xb8, 0x16, 0x1e, 0x3c, 0xf8, 0x61, 0x7b, 0xfd, 0x38, 0x48, 0xc6, + 0x4c, 0xf4, 0xf5, 0x4c, 0x1a, 0xd1, 0x82, 0xad, 0x5c, 0x58, 0x5d, 0xbd, 0xb9, 0x83, 0x74, 0xa2, + 0x5f, 0x71, 0x00, 0x78, 0x3f, 0x45, 0x16, 0x72, 0xda, 0xb7, 0xcd, 0x43, 0x9b, 0x29, 0x4a, 0x84, + 0x77, 0x4d, 0x6d, 0xa1, 0xb4, 0x00, 0x6b, 0x3d, 0xb9, 0x8b, 0x3c, 0xa1, 0x77, 0x9d, 0xa2, 0xf4, + 0x0b, 0x0e, 0x1c, 0xcb, 0x74, 0x37, 0xa7, 0xfd, 0x96, 0xf9, 0x1e, 0xa2, 0x05, 0xc9, 0xca, 0xcc, + 0x4d, 0xad, 0x1b, 0x4f, 0x7e, 0xf4, 0x30, 0x18, 0xef, 0x6e, 0xa3, 0x57, 0x61, 0x54, 0x5a, 0x3e, + 0xe4, 0xf2, 0xb6, 0xf9, 0x2e, 0xac, 0x52, 0x6f, 0x24, 0x24, 0xc6, 0x29, 0xbd, 0x4c, 0xd8, 0x5c, + 0xa1, 0xaf, 0xb0, 0xb9, 0x7b, 0xfb, 0xaa, 0x6c, 0xbe, 0x5d, 0x7a, 0xf0, 0x50, 0xec, 0xd2, 0x0f, + 0x58, 0xb7, 0x4b, 0x3f, 0x78, 0xc4, 0x76, 0x69, 0xcd, 0x49, 0x58, 0xbc, 0x0b, 0x27, 0xe1, 0xab, + 0x70, 0x72, 0x27, 0x55, 0x3a, 0xd5, 0x4a, 0x12, 0x19, 0x98, 0x1e, 0xcf, 0xb5, 0x46, 0x53, 0x05, + 0x3a, 0x4e, 0x48, 0x90, 0x68, 0xea, 0x6a, 0x1a, 0xb1, 0xf7, 0x5c, 0x0e, 0x3a, 0x9c, 0x4b, 0x24, + 0xeb, 0xed, 0x19, 0xee, 0xc3, 0xdb, 0xf3, 0xa6, 0x03, 0xa7, 0xbc, 0xae, 0x4b, 0x60, 0x98, 0x6c, 0x89, 0x90, 0x93, 0x6b, 0xf6, 0x44, 0x08, 0x03, 0xbd, 0x70, 0xab, 0xe5, 0x15, 0xe1, 0xfc, 0x0e, - 0xa1, 0x47, 0x53, 0xd7, 0x3b, 0x8f, 0xf3, 0xcc, 0xf7, 0x93, 0x7f, 0x2d, 0x1b, 0xcf, 0x03, 0x6c, - 0xea, 0x3f, 0x62, 0x57, 0xdb, 0xb6, 0x10, 0xd3, 0x53, 0xbe, 0x8b, 0x98, 0x9e, 0x8c, 0xeb, 0x6d, - 0xdc, 0x92, 0xeb, 0x2d, 0x80, 0x29, 0xbf, 0xed, 0x35, 0xc8, 0x7a, 0xb7, 0xd5, 0xe2, 0x97, 0x48, - 0xe4, 0xe3, 0xb5, 0xb9, 0x16, 0xbc, 0xcb, 0x61, 0xcd, 0x6b, 0x65, 0x9f, 0x2d, 0x57, 0x97, 0x65, - 0x2e, 0x65, 0x30, 0xe1, 0x1e, 0xdc, 0x74, 0xc1, 0xb2, 0x6c, 0x78, 0x24, 0xa1, 0xb3, 0xcd, 0x02, - 0x47, 0xc6, 0xf8, 0x82, 0xbd, 0x98, 0x82, 0xb1, 0x5e, 0x07, 0xad, 0x40, 0xa9, 0x1e, 0xc4, 0xe2, - 0x3e, 0xeb, 0x31, 0xc6, 0xcc, 0xde, 0x49, 0x59, 0xe0, 0xe2, 0x95, 0xaa, 0xba, 0xc9, 0xfa, 0x60, - 0x4e, 0x7a, 0x47, 0x55, 0x8e, 0xd3, 0xf6, 0x68, 0x95, 0x21, 0x13, 0x2f, 0x7b, 0xf1, 0x78, 0x8e, - 0x87, 0xfb, 0x38, 0x8c, 0x16, 0xaf, 0xc8, 0xb7, 0xc9, 0x26, 0x04, 0x39, 0xf1, 0x44, 0x57, 0x8a, - 0x41, 0x7b, 0x44, 0xf8, 0xf8, 0xbe, 0x8f, 0x08, 0xb3, 0xbc, 0xae, 0x49, 0x4b, 0xb9, 0x87, 0xcf, - 0x5a, 0xcb, 0xeb, 0x9a, 0x46, 0x4a, 0x8a, 0xbc, 0xae, 0x29, 0x00, 0xeb, 0x24, 0xd1, 0x5a, 0x3f, - 0x37, 0xf9, 0x09, 0xc6, 0x34, 0x0e, 0xee, 0xf4, 0xd6, 0xfd, 0xa5, 0x27, 0xf7, 0xf5, 0x97, 0xf6, - 0xf8, 0x77, 0x4f, 0x1d, 0xc0, 0xbf, 0xdb, 0x64, 0x19, 0x37, 0x97, 0x17, 0x84, 0x4b, 0xdd, 0x82, - 0x7e, 0xc7, 0x72, 0x7c, 0xf0, 0xc8, 0x53, 0xf6, 0x2f, 0xe6, 0x04, 0xfa, 0x06, 0x54, 0x9f, 0xb9, - 0xe3, 0x80, 0x6a, 0xca, 0x9e, 0x53, 0x38, 0x4b, 0xdd, 0x5a, 0x14, 0xec, 0x39, 0x05, 0x63, 0xbd, - 0x4e, 0xd6, 0x5b, 0x7a, 0xff, 0xa1, 0x79, 0x4b, 0xa7, 0x8f, 0xc0, 0x5b, 0xfa, 0xc0, 0xc0, 0xde, - 0xd2, 0x1b, 0x70, 0xa2, 0x13, 0xd6, 0x17, 0xfd, 0x38, 0xea, 0xb2, 0x5b, 0x75, 0xf3, 0xdd, 0x7a, - 0x83, 0x24, 0xcc, 0xdd, 0x5a, 0x3e, 0xff, 0x4e, 0xbd, 0x93, 0x1d, 0xb6, 0x91, 0xe5, 0x1e, 0xcd, - 0x34, 0x60, 0xa6, 0x13, 0x16, 0x75, 0x9b, 0x53, 0x88, 0xf3, 0x48, 0xe8, 0x7e, 0xda, 0x87, 0x8f, - 0xc6, 0x4f, 0xfb, 0x01, 0x18, 0x8b, 0x9b, 0xdd, 0xa4, 0x1e, 0x5e, 0x0f, 0x98, 0x33, 0xbe, 0x34, - 0xff, 0x0e, 0x65, 0xca, 0x16, 0xf0, 0x5b, 0x7b, 0x33, 0x53, 0xf2, 0x7f, 0xcd, 0x8a, 0x2d, 0x20, - 0xe8, 0xeb, 0x7d, 0xee, 0xef, 0xb8, 0x87, 0x79, 0x7f, 0xe7, 0xcc, 0x81, 0xee, 0xee, 0xe4, 0x39, - 0xa3, 0x1f, 0xf9, 0xa9, 0x73, 0x46, 0x7f, 0xd5, 0x81, 0x89, 0x1d, 0xdd, 0x65, 0x20, 0x1c, 0xe6, - 0x16, 0x02, 0x77, 0x0c, 0x4f, 0xc4, 0xbc, 0x4b, 0xf9, 0x9c, 0x01, 0xba, 0x95, 0x05, 0x60, 0xb3, - 0x27, 0x39, 0x41, 0x45, 0x8f, 0xde, 0xab, 0xa0, 0xa2, 0x37, 0x18, 0x1f, 0x93, 0x4a, 0x2e, 0xf3, - 0xa2, 0xdb, 0x8d, 0x29, 0x96, 0x3c, 0x51, 0x85, 0x14, 0xeb, 0xf4, 0xd0, 0xe7, 0x1c, 0x98, 0x92, - 0x7a, 0x99, 0x70, 0xf9, 0xc5, 0x22, 0x2a, 0xd2, 0xa6, 0x3a, 0xc8, 0xc2, 0xea, 0x37, 0x32, 0x74, - 0x70, 0x0f, 0x65, 0xca, 0xd5, 0x55, 0x10, 0x5a, 0x23, 0x66, 0xc1, 0xbf, 0x42, 0x86, 0x99, 0x4b, - 0xc1, 0x58, 0xaf, 0x83, 0xbe, 0xe1, 0x00, 0x7f, 0x83, 0xbf, 0xf2, 0x04, 0x63, 0xe8, 0x2f, 0x58, - 0x96, 0x4d, 0xd3, 0x57, 0xfd, 0xe7, 0x9f, 0x92, 0xb6, 0x23, 0x06, 0xbb, 0xb5, 0x37, 0x33, 0x69, - 0x3c, 0x4c, 0x14, 0xbf, 0xf9, 0xb6, 0x06, 0x11, 0xb6, 0x4d, 0xd6, 0x35, 0xf4, 0x45, 0x07, 0xa6, - 0xae, 0x67, 0x0c, 0x1a, 0x22, 0x2c, 0x14, 0xdb, 0x37, 0x95, 0xf0, 0xe9, 0xce, 0x42, 0x71, 0x4f, - 0x0f, 0xd0, 0x67, 0x4d, 0x43, 0x27, 0x8f, 0x1f, 0xb5, 0x38, 0x81, 0x19, 0xc3, 0x2a, 0xbf, 0xe6, - 0x96, 0x6f, 0xf1, 0xbc, 0xeb, 0xf8, 0x90, 0x69, 0x3a, 0x98, 0xf4, 0x63, 0xe5, 0x34, 0x25, 0xa6, - 0xbd, 0xc5, 0xc2, 0x66, 0x37, 0x3e, 0xbf, 0x6e, 0x6e, 0xf9, 0xe2, 0x69, 0x98, 0x34, 0x7d, 0x7b, - 0xe8, 0x5d, 0xe6, 0xa3, 0x13, 0x67, 0xb3, 0xf9, 0xfb, 0x27, 0x64, 0x7d, 0x23, 0x87, 0xbf, 0x91, - 0x64, 0xbf, 0x70, 0xa8, 0x49, 0xf6, 0x87, 0x8e, 0x26, 0xc9, 0xfe, 0xd4, 0x61, 0x24, 0xd9, 0x3f, - 0x7e, 0xa0, 0x24, 0xfb, 0xda, 0x23, 0x07, 0xc3, 0xb7, 0x79, 0xe4, 0x60, 0x0e, 0x8e, 0xc9, 0xbb, - 0x3f, 0x44, 0xe4, 0x31, 0xe7, 0x6e, 0xff, 0x33, 0xa2, 0xc9, 0xb1, 0x05, 0xb3, 0x18, 0x67, 0xeb, - 0xd3, 0x4d, 0x56, 0x0c, 0x58, 0xcb, 0x11, 0x5b, 0x2f, 0x20, 0x99, 0x4b, 0x8b, 0xa9, 0xcf, 0x82, - 0x45, 0xc9, 0x68, 0xe7, 0x22, 0x83, 0xdd, 0x92, 0xff, 0x60, 0xde, 0x03, 0xf4, 0x12, 0x54, 0xc2, - 0xad, 0xad, 0x56, 0xe8, 0xd5, 0xd3, 0x97, 0x00, 0x64, 0x5c, 0x02, 0xbf, 0xbb, 0xa9, 0x12, 0xc7, - 0xae, 0xf5, 0xa9, 0x87, 0xfb, 0x62, 0x40, 0x6f, 0x51, 0xc1, 0x24, 0x09, 0x23, 0x52, 0x4f, 0x6d, - 0x35, 0x25, 0x36, 0x66, 0x62, 0x7d, 0xcc, 0x55, 0x93, 0x0e, 0x1f, 0xbd, 0xfa, 0x28, 0x99, 0x52, - 0x9c, 0xed, 0x16, 0x8a, 0xe0, 0x74, 0x27, 0xcf, 0x54, 0x14, 0x8b, 0x1b, 0x4b, 0xfb, 0x19, 0xac, - 0xe4, 0xd6, 0x3d, 0x9d, 0x6b, 0x6c, 0x8a, 0x71, 0x1f, 0xcc, 0x7a, 0xb6, 0xfe, 0xb1, 0xa3, 0xc9, - 0xd6, 0xff, 0x31, 0x00, 0x75, 0x49, 0x5d, 0x1a, 0x1f, 0x56, 0xac, 0x5c, 0xa5, 0xe1, 0x38, 0xb5, - 0x07, 0x52, 0x15, 0x19, 0xac, 0x91, 0x44, 0xff, 0x27, 0xf7, 0x39, 0x0b, 0x6e, 0x61, 0x69, 0x58, - 0x5f, 0x13, 0x3f, 0x75, 0x4f, 0x5a, 0xfc, 0x13, 0x07, 0xa6, 0xf9, 0xca, 0xcb, 0x0a, 0xf7, 0x54, - 0xb4, 0x10, 0x77, 0x7b, 0x6c, 0x87, 0xae, 0xb0, 0x28, 0xbe, 0xaa, 0x41, 0x95, 0x39, 0xba, 0xf7, - 0xe9, 0x09, 0xfa, 0x72, 0x8e, 0x4a, 0x71, 0xcc, 0x96, 0xcd, 0x32, 0xff, 0x51, 0x82, 0x13, 0x37, - 0x07, 0xd1, 0x22, 0xfe, 0x59, 0x5f, 0x93, 0x2a, 0x62, 0xdd, 0xfb, 0xc5, 0x43, 0x32, 0xa9, 0xea, - 0x2f, 0x27, 0x1c, 0xc8, 0xb0, 0xfa, 0x79, 0x07, 0xa6, 0xbc, 0x4c, 0xa8, 0x09, 0xb3, 0x03, 0x59, - 0xb1, 0x49, 0xcd, 0x45, 0x69, 0xfc, 0x0a, 0x13, 0xf2, 0xb2, 0x51, 0x2d, 0xb8, 0x87, 0x38, 0xfa, - 0x81, 0x03, 0x0f, 0x24, 0x5e, 0xbc, 0xcd, 0xf3, 0x12, 0xc7, 0xe9, 0x5d, 0x5d, 0xd1, 0xb9, 0x93, - 0x6c, 0x37, 0xbe, 0x62, 0x7d, 0x37, 0x6e, 0xf4, 0xa7, 0xc9, 0xf7, 0xe5, 0x23, 0x62, 0x5f, 0x3e, - 0xb0, 0x4f, 0x4d, 0xbc, 0x5f, 0xd7, 0xa7, 0x3f, 0xe5, 0xf0, 0xf7, 0xab, 0xfa, 0x8a, 0x7c, 0x9b, - 0xa6, 0xc8, 0x77, 0xd9, 0xe6, 0x0b, 0x3a, 0xba, 0xec, 0xf9, 0xab, 0x0e, 0x9c, 0xcc, 0x3b, 0x91, - 0x72, 0xba, 0xf4, 0x11, 0xb3, 0x4b, 0x16, 0xb5, 0x2c, 0xbd, 0x43, 0x56, 0x1e, 0xf0, 0x98, 0xbe, - 0x02, 0x0f, 0xdf, 0xee, 0x2b, 0xde, 0x0e, 0xdf, 0x98, 0x2e, 0x16, 0xff, 0x69, 0x49, 0xf3, 0x42, - 0x26, 0xa4, 0x63, 0x3d, 0x86, 0x3b, 0x80, 0x11, 0x3f, 0x68, 0xf9, 0x01, 0x11, 0xf7, 0x35, 0x6d, - 0xea, 0xb0, 0xe2, 0x01, 0x1e, 0x8a, 0x1d, 0x0b, 0x2a, 0xf7, 0xd8, 0x29, 0x99, 0x7d, 0xd2, 0x6c, - 0xf8, 0xe8, 0x9f, 0x34, 0xbb, 0x0e, 0xa5, 0xeb, 0x7e, 0xd2, 0x64, 0xc1, 0x14, 0xc2, 0xd7, 0x67, - 0xe1, 0x9e, 0x23, 0x45, 0x97, 0x8e, 0xfd, 0x9a, 0x24, 0x80, 0x53, 0x5a, 0xe8, 0x1c, 0x27, 0xcc, - 0x22, 0xb7, 0xb3, 0x21, 0xb5, 0xd7, 0x64, 0x01, 0x4e, 0xeb, 0xd0, 0xc9, 0x1a, 0xa7, 0xbf, 0x64, - 0x42, 0x24, 0x91, 0xb7, 0xd7, 0x46, 0x3e, 0x46, 0x81, 0x91, 0xdf, 0x26, 0xbe, 0xa6, 0xd1, 0xc0, - 0x06, 0x45, 0x95, 0x3a, 0x79, 0xac, 0x6f, 0xea, 0xe4, 0xd7, 0x99, 0xc0, 0x96, 0xf8, 0x41, 0x97, - 0xac, 0x05, 0x22, 0xde, 0xfb, 0xb2, 0x9d, 0xbb, 0xcf, 0x1c, 0x27, 0x57, 0xc1, 0xd3, 0xdf, 0x58, - 0xa3, 0xa7, 0xb9, 0x5c, 0xca, 0xfb, 0xba, 0x5c, 0x52, 0x93, 0xcb, 0xb8, 0x75, 0x93, 0x4b, 0x42, - 0x3a, 0x56, 0x4c, 0x2e, 0x3f, 0x55, 0xe6, 0x80, 0xbf, 0x70, 0x00, 0x29, 0xb9, 0x4b, 0x31, 0xd4, - 0x23, 0x08, 0xaa, 0xfc, 0xb8, 0x03, 0x10, 0xa8, 0x87, 0x2f, 0xed, 0x9e, 0x82, 0x1c, 0x67, 0xda, - 0x81, 0x14, 0x86, 0x35, 0x9a, 0xee, 0xff, 0x70, 0xd2, 0xd8, 0xe5, 0x74, 0xec, 0x47, 0x10, 0x44, - 0xb6, 0x6b, 0x06, 0x91, 0x6d, 0x58, 0x34, 0xdd, 0xab, 0x61, 0xf4, 0x09, 0x27, 0xfb, 0x71, 0x01, - 0x8e, 0xe9, 0x95, 0xab, 0xe4, 0x28, 0x3e, 0xf6, 0x75, 0x23, 0x82, 0xf6, 0xaa, 0xdd, 0xf1, 0x56, - 0x85, 0x07, 0x28, 0x2f, 0x5a, 0xfb, 0x63, 0x99, 0x68, 0xed, 0x6b, 0xf6, 0x49, 0xef, 0x1f, 0xb2, - 0xfd, 0x5f, 0x1d, 0x38, 0x91, 0x69, 0x71, 0x04, 0x0b, 0x6c, 0xc7, 0x5c, 0x60, 0xcf, 0x59, 0x1f, - 0x75, 0x9f, 0xd5, 0xf5, 0xcd, 0x42, 0xcf, 0x68, 0x99, 0x12, 0xf7, 0x49, 0x07, 0x8a, 0x54, 0x5a, - 0x96, 0xf1, 0x5c, 0x1f, 0x39, 0x94, 0x15, 0xc0, 0xe4, 0x7a, 0xc1, 0x9d, 0x55, 0xff, 0x18, 0x0c, - 0x73, 0xea, 0xd3, 0x9f, 0x70, 0x00, 0xd2, 0x4a, 0xf7, 0x4a, 0x04, 0x76, 0xbf, 0x5d, 0x80, 0x53, - 0xb9, 0xcb, 0x08, 0x7d, 0x5a, 0x59, 0xe4, 0x1c, 0xdb, 0xd1, 0x8a, 0x06, 0x21, 0xdd, 0x30, 0x37, - 0x61, 0x18, 0xe6, 0x84, 0x3d, 0xee, 0x5e, 0x29, 0x30, 0x82, 0x4d, 0x6b, 0x93, 0xf5, 0x23, 0x27, - 0x0d, 0x80, 0x55, 0x79, 0x8d, 0xfe, 0x12, 0x5e, 0xe2, 0x71, 0x7f, 0xac, 0xdd, 0x70, 0x90, 0x03, - 0x3d, 0x02, 0x5e, 0x71, 0xdd, 0xe4, 0x15, 0xd8, 0xbe, 0x1f, 0xb9, 0x0f, 0xb3, 0x78, 0x05, 0xf2, - 0x1c, 0xcb, 0x83, 0x25, 0x45, 0x34, 0xae, 0xc3, 0x16, 0x06, 0xbe, 0x0e, 0x3b, 0x01, 0xe5, 0x17, - 0x7d, 0x95, 0x4d, 0x73, 0x7e, 0xf6, 0x3b, 0x3f, 0x3c, 0x7b, 0xdf, 0x77, 0x7f, 0x78, 0xf6, 0xbe, - 0x1f, 0xfc, 0xf0, 0xec, 0x7d, 0x1f, 0xbf, 0x79, 0xd6, 0xf9, 0xce, 0xcd, 0xb3, 0xce, 0x77, 0x6f, - 0x9e, 0x75, 0x7e, 0x70, 0xf3, 0xac, 0xf3, 0x1f, 0x6e, 0x9e, 0x75, 0xfe, 0xde, 0x7f, 0x3c, 0x7b, - 0xdf, 0x8b, 0x63, 0x72, 0x60, 0xff, 0x3f, 0x00, 0x00, 0xff, 0xff, 0x84, 0x02, 0x48, 0xf8, 0xe2, - 0xd6, 0x00, 0x00, + 0xa1, 0x47, 0x52, 0xd7, 0x3b, 0x8f, 0xf3, 0xcc, 0xf7, 0x93, 0x7f, 0x3d, 0x1b, 0xcf, 0x03, 0x6c, + 0xea, 0x3f, 0x6a, 0x57, 0xdb, 0xb6, 0x10, 0xd3, 0x53, 0xba, 0x8b, 0x98, 0x9e, 0x8c, 0xeb, 0x6d, + 0xcc, 0x92, 0xeb, 0x2d, 0x80, 0x49, 0xbf, 0xe5, 0xd5, 0xc9, 0x7a, 0xa7, 0xd9, 0xe4, 0x97, 0x48, + 0xe4, 0xcb, 0xbd, 0xb9, 0x16, 0xbc, 0x95, 0xb0, 0xea, 0x35, 0xb3, 0x6f, 0xb6, 0xab, 0xcb, 0x32, + 0x97, 0x33, 0x98, 0x70, 0x17, 0x6e, 0xba, 0x60, 0x59, 0x2a, 0x40, 0x92, 0xd0, 0xd9, 0x66, 0x81, + 0x23, 0x23, 0x7c, 0xc1, 0x5e, 0x4a, 0xc1, 0x58, 0xaf, 0x83, 0x96, 0x61, 0xb4, 0x16, 0xc4, 0xe2, + 0x3e, 0xeb, 0x31, 0xc6, 0xcc, 0xde, 0x45, 0x59, 0xe0, 0xc2, 0x95, 0x8a, 0xba, 0xc9, 0xfa, 0x40, + 0x4e, 0x6e, 0x4b, 0x55, 0x8e, 0xd3, 0xf6, 0x68, 0x95, 0x21, 0x13, 0xcf, 0x9a, 0xf1, 0x78, 0x8e, + 0x87, 0x7a, 0x38, 0x8c, 0x16, 0xae, 0xc8, 0x87, 0xd9, 0xc6, 0x05, 0x39, 0xf1, 0x3e, 0x59, 0x8a, + 0x41, 0x7b, 0x41, 0xf9, 0xf8, 0xbe, 0x2f, 0x28, 0xb3, 0xa4, 0xb6, 0x49, 0x53, 0xb9, 0x87, 0xcf, + 0x59, 0x4b, 0x6a, 0x9b, 0x46, 0x4a, 0x8a, 0xa4, 0xb6, 0x29, 0x00, 0xeb, 0x24, 0xd1, 0x5a, 0x2f, + 0x37, 0xf9, 0x09, 0xc6, 0x34, 0x0e, 0xee, 0xf4, 0xd6, 0xfd, 0xa5, 0x27, 0xf7, 0xf5, 0x97, 0x76, + 0xf9, 0x77, 0x4f, 0x1d, 0xc0, 0xbf, 0xdb, 0x60, 0xe9, 0x46, 0x97, 0xe6, 0x85, 0x4b, 0xdd, 0x82, + 0x7e, 0xc7, 0x12, 0x9c, 0xf0, 0xc8, 0x53, 0xf6, 0x2f, 0xe6, 0x04, 0x7a, 0x06, 0x54, 0x9f, 0xb9, + 0xe3, 0x80, 0x6a, 0xca, 0x9e, 0x53, 0x38, 0xcb, 0x5b, 0x5b, 0x14, 0xec, 0x39, 0x05, 0x63, 0xbd, + 0x4e, 0xd6, 0x5b, 0x7a, 0xff, 0xa1, 0x79, 0x4b, 0xa7, 0x8e, 0xc0, 0x5b, 0x7a, 0xb6, 0x6f, 0x6f, + 0xe9, 0x0d, 0x38, 0xd1, 0x0e, 0x6b, 0x0b, 0x7e, 0x1c, 0x75, 0xd8, 0xad, 0xba, 0xb9, 0x4e, 0xad, + 0x4e, 0x12, 0xe6, 0x6e, 0x2d, 0x5d, 0x78, 0x97, 0xde, 0xc9, 0x36, 0xdb, 0xc8, 0x72, 0x8f, 0x66, + 0x1a, 0x30, 0xd3, 0x09, 0x8b, 0xba, 0xcd, 0x29, 0xc4, 0x79, 0x24, 0x74, 0x3f, 0xed, 0x43, 0x47, + 0xe3, 0xa7, 0xfd, 0x20, 0x8c, 0xc4, 0x8d, 0x4e, 0x52, 0x0b, 0xaf, 0x07, 0xcc, 0x19, 0x3f, 0x3a, + 0xf7, 0x0e, 0x65, 0xca, 0x16, 0xf0, 0x5b, 0x7b, 0xd3, 0x93, 0xf2, 0x7f, 0xcd, 0x8a, 0x2d, 0x20, + 0xe8, 0x1b, 0x3d, 0xee, 0xef, 0xb8, 0x87, 0x79, 0x7f, 0xe7, 0xcc, 0x81, 0xee, 0xee, 0xe4, 0x39, + 0xa3, 0x1f, 0x7e, 0xdb, 0x39, 0xa3, 0xbf, 0xe6, 0xc0, 0xf8, 0x8e, 0xee, 0x32, 0x10, 0x0e, 0x73, + 0x0b, 0x81, 0x3b, 0x86, 0x27, 0x62, 0xce, 0xa5, 0x7c, 0xce, 0x00, 0xdd, 0xca, 0x02, 0xb0, 0xd9, + 0x93, 0x9c, 0xa0, 0xa2, 0x47, 0xee, 0x55, 0x50, 0xd1, 0xeb, 0x8c, 0x8f, 0x49, 0x25, 0x97, 0x79, + 0xd1, 0xed, 0xc6, 0x14, 0x4b, 0x9e, 0xa8, 0x42, 0x8a, 0x75, 0x7a, 0xe8, 0xf3, 0x0e, 0x4c, 0x4a, + 0xbd, 0x4c, 0xb8, 0xfc, 0x62, 0x11, 0x15, 0x69, 0x53, 0x1d, 0x64, 0x61, 0xf5, 0x1b, 0x19, 0x3a, + 0xb8, 0x8b, 0x32, 0xe5, 0xea, 0x2a, 0x08, 0xad, 0x1e, 0xb3, 0xe0, 0x5f, 0x21, 0xc3, 0xcc, 0xa6, + 0x60, 0xac, 0xd7, 0x41, 0xdf, 0x74, 0xa0, 0xd8, 0x08, 0xc3, 0xed, 0xb8, 0xfc, 0x38, 0x63, 0xe8, + 0xcf, 0x5b, 0x96, 0x4d, 0x2f, 0x51, 0xdc, 0x5c, 0x28, 0x7d, 0x52, 0xda, 0x8e, 0x18, 0xec, 0xd6, + 0xde, 0xf4, 0x84, 0xf1, 0x2a, 0x53, 0xfc, 0xc6, 0x5b, 0x1a, 0x44, 0xd8, 0x36, 0x59, 0xd7, 0xd0, + 0x97, 0x1c, 0x98, 0xbc, 0x9e, 0x31, 0x68, 0x88, 0xb0, 0x50, 0x6c, 0xdf, 0x54, 0xc2, 0xa7, 0x3b, + 0x0b, 0xc5, 0x5d, 0x3d, 0x40, 0x9f, 0x33, 0x0d, 0x9d, 0x3c, 0x7e, 0xd4, 0xe2, 0x04, 0x66, 0x0c, + 0xab, 0xfc, 0x9a, 0x5b, 0x0f, 0x8b, 0x67, 0x00, 0x45, 0xb6, 0x33, 0xca, 0x4f, 0xd8, 0x12, 0xe0, + 0xb4, 0x34, 0x39, 0x5c, 0x24, 0x61, 0x00, 0xcc, 0xc9, 0xdc, 0x75, 0x3c, 0xca, 0x14, 0x9d, 0xbc, + 0x74, 0x71, 0xe4, 0x34, 0x25, 0xa6, 0x7d, 0xc7, 0x02, 0x73, 0x31, 0x96, 0x9b, 0x6e, 0xde, 0xf9, + 0xd7, 0xa7, 0x61, 0xc2, 0xf4, 0x25, 0xa2, 0x77, 0x9b, 0x2f, 0x7c, 0x9c, 0xcb, 0x3e, 0x96, 0x30, + 0x2e, 0xeb, 0x1b, 0x0f, 0x26, 0x18, 0x2f, 0x1a, 0x14, 0x0e, 0xf5, 0x45, 0x83, 0x81, 0xa3, 0x79, + 0xd1, 0x60, 0xf2, 0x30, 0x5e, 0x34, 0x38, 0x7e, 0xa0, 0x17, 0x0d, 0xb4, 0x17, 0x25, 0x06, 0x6f, + 0xf3, 0xa2, 0xc4, 0x2c, 0x1c, 0x93, 0x77, 0x8d, 0x88, 0x48, 0x1a, 0xcf, 0xc3, 0x0c, 0xce, 0x88, + 0x26, 0xc7, 0xe6, 0xcd, 0x62, 0x9c, 0xad, 0x4f, 0x37, 0x75, 0x31, 0x60, 0x2d, 0x87, 0x6c, 0x3d, + 0x37, 0x65, 0x2e, 0x2d, 0xa6, 0xae, 0x0b, 0x96, 0x28, 0xa3, 0xab, 0x8b, 0x0c, 0x76, 0x4b, 0xfe, + 0x83, 0x79, 0x0f, 0xd0, 0x8b, 0x50, 0x0e, 0xb7, 0xb6, 0x9a, 0xa1, 0x57, 0x4b, 0x9f, 0x5d, 0x90, + 0x71, 0x10, 0xfc, 0xae, 0xa8, 0xca, 0xd2, 0xbb, 0xd6, 0xa3, 0x1e, 0xee, 0x89, 0x01, 0xbd, 0x49, + 0x05, 0xa1, 0x24, 0x8c, 0x48, 0x2d, 0xb5, 0x0d, 0x8d, 0xb2, 0x31, 0x13, 0xeb, 0x63, 0xae, 0x98, + 0x74, 0xf8, 0xe8, 0xd5, 0x47, 0xc9, 0x94, 0xe2, 0x6c, 0xb7, 0x50, 0x04, 0xa7, 0xdb, 0x79, 0xa6, + 0xa9, 0x58, 0xdc, 0x90, 0xda, 0xcf, 0x40, 0x26, 0xb7, 0xee, 0xe9, 0x5c, 0xe3, 0x56, 0x8c, 0x7b, + 0x60, 0xd6, 0x9f, 0x46, 0x18, 0x39, 0x9a, 0xa7, 0x11, 0x3e, 0x0e, 0xa0, 0x2e, 0xc5, 0x4b, 0x63, + 0xc7, 0xb2, 0x95, 0xab, 0x3b, 0x1c, 0xa7, 0xf6, 0x1a, 0xad, 0x22, 0x83, 0x35, 0x92, 0xe8, 0xff, + 0xe4, 0xbe, 0x1d, 0xc2, 0x2d, 0x3a, 0x75, 0xeb, 0x6b, 0xe2, 0x6d, 0xf7, 0x7e, 0xc8, 0x3f, 0x71, + 0x60, 0x8a, 0xaf, 0xbc, 0xac, 0x32, 0x41, 0x45, 0x19, 0x71, 0x97, 0xc8, 0x76, 0xa8, 0x0c, 0x8b, + 0x1a, 0xac, 0x18, 0x54, 0x99, 0x63, 0x7d, 0x9f, 0x9e, 0xa0, 0xaf, 0xe4, 0xa8, 0x30, 0xc7, 0x6c, + 0xd9, 0x48, 0xf3, 0x5f, 0x80, 0x38, 0x71, 0xb3, 0x1f, 0xad, 0xe5, 0x9f, 0xf5, 0x34, 0xe1, 0x22, + 0xd6, 0xbd, 0x5f, 0x3a, 0x24, 0x13, 0xae, 0xfe, 0x4c, 0xc5, 0x81, 0x0c, 0xb9, 0x5f, 0x70, 0x60, + 0xd2, 0xcb, 0x84, 0xb6, 0x30, 0xbb, 0x93, 0x15, 0x11, 0x6a, 0x36, 0x4a, 0xe3, 0x65, 0x98, 0x50, + 0x99, 0x8d, 0xa2, 0xc1, 0x5d, 0xc4, 0xd1, 0x0f, 0x1d, 0x38, 0x9b, 0x78, 0xf1, 0x36, 0x4f, 0x02, + 0x1d, 0xa7, 0x77, 0x83, 0x45, 0xe7, 0x4e, 0xb2, 0xdd, 0xf8, 0xb2, 0xf5, 0xdd, 0xb8, 0xd1, 0x9b, + 0x26, 0xdf, 0x97, 0x0f, 0x8b, 0x7d, 0x79, 0x76, 0x9f, 0x9a, 0x78, 0xbf, 0xae, 0x53, 0xf5, 0x44, + 0x68, 0x6f, 0x6c, 0x24, 0xa7, 0x52, 0xf5, 0x04, 0xa7, 0x60, 0xac, 0xd7, 0x99, 0xfa, 0xb4, 0xc3, + 0xdf, 0x17, 0xeb, 0x29, 0x25, 0x6e, 0x9a, 0x52, 0xe2, 0x8a, 0xcd, 0x17, 0x8e, 0x74, 0x71, 0xf5, + 0xd7, 0x1c, 0x38, 0x99, 0x77, 0x88, 0xe5, 0x74, 0xe9, 0xa3, 0x66, 0x97, 0x2c, 0x2a, 0x82, 0x7a, + 0x87, 0xac, 0x3c, 0xb0, 0x32, 0x75, 0x05, 0x1e, 0xba, 0xdd, 0x87, 0xbf, 0x1d, 0xbe, 0x11, 0x5d, + 0x92, 0xfe, 0xd3, 0x51, 0xcd, 0x51, 0x9a, 0x90, 0xb6, 0xf5, 0x30, 0xf3, 0x00, 0x86, 0xfc, 0xa0, + 0xe9, 0x07, 0x44, 0x5c, 0x29, 0xb5, 0xa9, 0x66, 0x8b, 0x07, 0x92, 0x28, 0x76, 0x2c, 0xa8, 0xdc, + 0x63, 0xbf, 0x69, 0xf6, 0xc9, 0xb9, 0xc1, 0xa3, 0x7f, 0x72, 0xee, 0x3a, 0x8c, 0x5e, 0xf7, 0x93, + 0x06, 0x8b, 0xf7, 0x10, 0xee, 0x48, 0x0b, 0x57, 0x31, 0x29, 0xba, 0x74, 0xec, 0xd7, 0x24, 0x01, + 0x9c, 0xd2, 0x42, 0xe7, 0x39, 0x61, 0x16, 0x5c, 0x9e, 0x8d, 0xfa, 0xbd, 0x26, 0x0b, 0x70, 0x5a, + 0x87, 0x4e, 0xd6, 0x18, 0xfd, 0x25, 0x73, 0x36, 0x89, 0xbc, 0xca, 0x36, 0x52, 0x46, 0x0a, 0x8c, + 0xfc, 0xc2, 0xf3, 0x35, 0x8d, 0x06, 0x36, 0x28, 0xaa, 0xd4, 0xd6, 0x23, 0x3d, 0x53, 0x5b, 0xbf, + 0xc6, 0x64, 0xbc, 0xc4, 0x0f, 0x3a, 0x64, 0x2d, 0x10, 0x21, 0xe9, 0x2b, 0x76, 0xae, 0x67, 0x73, + 0x9c, 0xdc, 0x4a, 0x90, 0xfe, 0xc6, 0x1a, 0x3d, 0xcd, 0x2b, 0x54, 0xda, 0xd7, 0x2b, 0x94, 0x5a, + 0x85, 0xc6, 0xac, 0x5b, 0x85, 0x12, 0xd2, 0xb6, 0x62, 0x15, 0x7a, 0x5b, 0x59, 0x10, 0xfe, 0xc2, + 0x01, 0xa4, 0x44, 0x35, 0xc5, 0x50, 0x8f, 0x20, 0xee, 0xf3, 0x13, 0x0e, 0x40, 0xa0, 0x1e, 0x26, + 0xb5, 0x7b, 0x0a, 0x72, 0x9c, 0x69, 0x07, 0x52, 0x18, 0xd6, 0x68, 0xba, 0xff, 0xc3, 0x49, 0xc3, + 0xab, 0xd3, 0xb1, 0x1f, 0x41, 0x9c, 0xdb, 0xae, 0x19, 0xe7, 0xb6, 0x61, 0xd1, 0xbb, 0xa0, 0x86, + 0xd1, 0x23, 0xe2, 0xed, 0xa7, 0x05, 0x38, 0xa6, 0x57, 0xae, 0x90, 0xa3, 0xf8, 0xd8, 0xd7, 0x8d, + 0x20, 0xdf, 0xab, 0x76, 0xc7, 0x5b, 0x11, 0x4e, 0xaa, 0xbc, 0x80, 0xf2, 0x8f, 0x67, 0x02, 0xca, + 0xaf, 0xd9, 0x27, 0xbd, 0x7f, 0x54, 0xf9, 0x7f, 0x73, 0xe0, 0x44, 0xa6, 0xc5, 0x11, 0x2c, 0xb0, + 0x1d, 0x73, 0x81, 0x3d, 0x6b, 0x7d, 0xd4, 0x3d, 0x56, 0xd7, 0xb7, 0x0a, 0x5d, 0xa3, 0x65, 0x7a, + 0xdf, 0xa7, 0x1c, 0x28, 0x52, 0x01, 0x5b, 0x86, 0x9c, 0x7d, 0xf4, 0x50, 0x56, 0x00, 0x53, 0x05, + 0x04, 0x77, 0x56, 0xfd, 0x63, 0x30, 0xcc, 0xa9, 0x4f, 0x7d, 0xd2, 0x01, 0x48, 0x2b, 0xdd, 0x2b, + 0x11, 0xd8, 0xfd, 0x4e, 0x01, 0x4e, 0xe5, 0x2e, 0x23, 0xf4, 0x19, 0x65, 0xc4, 0x73, 0x6c, 0x07, + 0x54, 0x1a, 0x84, 0x74, 0x5b, 0xde, 0xb8, 0x61, 0xcb, 0x13, 0x26, 0xbc, 0x7b, 0xa5, 0xc0, 0x08, + 0x36, 0xad, 0x4d, 0xd6, 0x4f, 0x9c, 0x34, 0x46, 0x57, 0xa5, 0x5e, 0xfa, 0x4b, 0x78, 0xcf, 0xc8, + 0xfd, 0xa9, 0x76, 0x09, 0x43, 0x0e, 0xf4, 0x08, 0x78, 0xc5, 0x75, 0x93, 0x57, 0x60, 0xfb, 0xae, + 0xee, 0x1e, 0xcc, 0xe2, 0x65, 0xc8, 0xf3, 0x7d, 0xf7, 0x97, 0xb7, 0xd1, 0xb8, 0xb1, 0x5b, 0xe8, + 0xfb, 0xc6, 0xee, 0x38, 0x94, 0x5e, 0xf0, 0x55, 0xc2, 0xcf, 0xb9, 0x99, 0xef, 0xfe, 0xf8, 0xdc, + 0x7d, 0xdf, 0xfb, 0xf1, 0xb9, 0xfb, 0x7e, 0xf8, 0xe3, 0x73, 0xf7, 0x7d, 0xe2, 0xe6, 0x39, 0xe7, + 0xbb, 0x37, 0xcf, 0x39, 0xdf, 0xbb, 0x79, 0xce, 0xf9, 0xe1, 0xcd, 0x73, 0xce, 0x7f, 0xbc, 0x79, + 0xce, 0xf9, 0x7b, 0xff, 0xe9, 0xdc, 0x7d, 0x2f, 0x8c, 0xc8, 0x81, 0xfd, 0xff, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x2c, 0x2e, 0xeb, 0x91, 0x82, 0xd8, 0x00, 0x00, } func (m *Amount) Marshal() (dAtA []byte, err error) { @@ -10492,6 +10527,59 @@ func (m *RetryAffinity) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *RetryConfig) 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 *RetryConfig) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RetryConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Parameters) > 0 { + for iNdEx := len(m.Parameters) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Parameters[iNdEx]) + copy(dAtA[i:], m.Parameters[iNdEx]) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Parameters[iNdEx]))) + i-- + dAtA[i] = 0x22 + } + } + i -= len(m.NodeFieldSelector) + copy(dAtA[i:], m.NodeFieldSelector) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.NodeFieldSelector))) + i-- + dAtA[i] = 0x1a + i-- + if m.RestartSuccessful { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x10 + i-- + if m.Retried { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 + return len(dAtA) - i, nil +} + func (m *RetryNodeAntiAffinity) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -12752,6 +12840,20 @@ func (m *WorkflowSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.Retry != nil { + { + size, err := m.Retry.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2 + i-- + dAtA[i] = 0xe2 + } if m.ArtifactGC != nil { { size, err := m.ArtifactGC.MarshalToSizedBuffer(dAtA[:i]) @@ -13282,6 +13384,18 @@ func (m *WorkflowStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.RetryStatus != nil { + i-- + if *m.RetryStatus { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xa8 + } if len(m.TaskResultsCompletionStatus) > 0 { keysForTaskResultsCompletionStatus := make([]string, 0, len(m.TaskResultsCompletionStatus)) for k := range m.TaskResultsCompletionStatus { @@ -16094,6 +16208,25 @@ func (m *RetryAffinity) Size() (n int) { return n } +func (m *RetryConfig) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + n += 2 + n += 2 + l = len(m.NodeFieldSelector) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Parameters) > 0 { + for _, s := range m.Parameters { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + func (m *RetryNodeAntiAffinity) Size() (n int) { if m == nil { return 0 @@ -17048,6 +17181,10 @@ func (m *WorkflowSpec) Size() (n int) { l = m.ArtifactGC.Size() n += 2 + l + sovGenerated(uint64(l)) } + if m.Retry != nil { + l = m.Retry.Size() + n += 2 + l + sovGenerated(uint64(l)) + } return n } @@ -17138,6 +17275,9 @@ func (m *WorkflowStatus) Size() (n int) { n += mapEntrySize + 2 + sovGenerated(uint64(mapEntrySize)) } } + if m.RetryStatus != nil { + n += 3 + } return n } @@ -18801,6 +18941,19 @@ func (this *RetryAffinity) String() string { }, "") return s } +func (this *RetryConfig) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&RetryConfig{`, + `Retried:` + fmt.Sprintf("%v", this.Retried) + `,`, + `RestartSuccessful:` + fmt.Sprintf("%v", this.RestartSuccessful) + `,`, + `NodeFieldSelector:` + fmt.Sprintf("%v", this.NodeFieldSelector) + `,`, + `Parameters:` + fmt.Sprintf("%v", this.Parameters) + `,`, + `}`, + }, "") + return s +} func (this *RetryNodeAntiAffinity) String() string { if this == nil { return "nil" @@ -19464,6 +19617,7 @@ func (this *WorkflowSpec) String() string { `Hooks:` + mapStringForHooks + `,`, `WorkflowMetadata:` + strings.Replace(this.WorkflowMetadata.String(), "WorkflowMetadata", "WorkflowMetadata", 1) + `,`, `ArtifactGC:` + strings.Replace(this.ArtifactGC.String(), "WorkflowLevelArtifactGC", "WorkflowLevelArtifactGC", 1) + `,`, + `Retry:` + strings.Replace(this.Retry.String(), "RetryConfig", "RetryConfig", 1) + `,`, `}`, }, "") return s @@ -19542,6 +19696,7 @@ func (this *WorkflowStatus) String() string { `ArtifactRepositoryRef:` + strings.Replace(fmt.Sprintf("%v", this.ArtifactRepositoryRef), "ArtifactRepositoryRefStatus", "ArtifactRepositoryRefStatus", 1) + `,`, `ArtifactGCStatus:` + strings.Replace(this.ArtifactGCStatus.String(), "ArtGCStatus", "ArtGCStatus", 1) + `,`, `TaskResultsCompletionStatus:` + mapStringForTaskResultsCompletionStatus + `,`, + `RetryStatus:` + valueToStringGenerated(this.RetryStatus) + `,`, `}`, }, "") return s @@ -36370,6 +36525,160 @@ func (m *RetryAffinity) Unmarshal(dAtA []byte) error { } return nil } +func (m *RetryConfig) 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: RetryConfig: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RetryConfig: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Retried", 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.Retried = bool(v != 0) + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RestartSuccessful", 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.RestartSuccessful = bool(v != 0) + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NodeFieldSelector", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.NodeFieldSelector = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Parameters", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Parameters = append(m.Parameters, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *RetryNodeAntiAffinity) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -44805,6 +45114,42 @@ func (m *WorkflowSpec) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 44: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Retry", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Retry == nil { + m.Retry = &RetryConfig{} + } + if err := m.Retry.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -45834,6 +46179,27 @@ func (m *WorkflowStatus) Unmarshal(dAtA []byte) error { } m.TaskResultsCompletionStatus[mapkey] = mapvalue iNdEx = postIndex + case 21: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RetryStatus", 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 + } + } + b := bool(v != 0) + m.RetryStatus = &b default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) diff --git a/pkg/apis/workflow/v1alpha1/generated.proto b/pkg/apis/workflow/v1alpha1/generated.proto index f3910066d35b..760543c2cbbe 100644 --- a/pkg/apis/workflow/v1alpha1/generated.proto +++ b/pkg/apis/workflow/v1alpha1/generated.proto @@ -1333,6 +1333,21 @@ message RetryAffinity { optional RetryNodeAntiAffinity nodeAntiAffinity = 1; } +// RetryConfig defines how to retry a workflow +message RetryConfig { + // Retried tracks whether or not this workflow was retried by RetryConfig + optional bool retried = 1; + + // RestartSuccessful defines whether or not to retry succeeded node + optional bool restartSuccessful = 2; + + // NodeFieldSelector selects nodes to reset + optional string nodeFieldSelector = 3; + + // Parameters are a list of parameters passed + repeated string parameters = 4; +} + // RetryNodeAntiAffinity is a placeholder for future expansion, only empty nodeAntiAffinity is allowed. // In order to prevent running steps on the same host, it uses "kubernetes.io/hostname". message RetryNodeAntiAffinity { @@ -2080,6 +2095,9 @@ 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 WorkflowLevelArtifactGC artifactGC = 43; + + // Retry will retry the workflow according to its RetryConfig + optional RetryConfig retry = 44; } // WorkflowStatus contains overall status information about a workflow @@ -2144,6 +2162,9 @@ message WorkflowStatus { // TaskResultsCompletionStatus tracks task result completion status (mapped by node ID). Used to prevent premature archiving and garbage collection. map taskResultsCompletionStatus = 20; + + // RetryStatus tracks RetryStatus + optional bool retryStatus = 21; } // WorkflowStep is a reference to a template to execute in a series of step diff --git a/pkg/apis/workflow/v1alpha1/openapi_generated.go b/pkg/apis/workflow/v1alpha1/openapi_generated.go index 07904b8206fd..7a2313d36ce1 100644 --- a/pkg/apis/workflow/v1alpha1/openapi_generated.go +++ b/pkg/apis/workflow/v1alpha1/openapi_generated.go @@ -116,6 +116,7 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.RawArtifact": schema_pkg_apis_workflow_v1alpha1_RawArtifact(ref), "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.ResourceTemplate": schema_pkg_apis_workflow_v1alpha1_ResourceTemplate(ref), "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.RetryAffinity": schema_pkg_apis_workflow_v1alpha1_RetryAffinity(ref), + "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.RetryConfig": schema_pkg_apis_workflow_v1alpha1_RetryConfig(ref), "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.RetryNodeAntiAffinity": schema_pkg_apis_workflow_v1alpha1_RetryNodeAntiAffinity(ref), "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.RetryStrategy": schema_pkg_apis_workflow_v1alpha1_RetryStrategy(ref), "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.S3Artifact": schema_pkg_apis_workflow_v1alpha1_S3Artifact(ref), @@ -5034,6 +5035,55 @@ func schema_pkg_apis_workflow_v1alpha1_RetryAffinity(ref common.ReferenceCallbac } } +func schema_pkg_apis_workflow_v1alpha1_RetryConfig(ref common.ReferenceCallback) common.OpenAPIDefinition { + return common.OpenAPIDefinition{ + Schema: spec.Schema{ + SchemaProps: spec.SchemaProps{ + Description: "RetryConfig defines how to retry a workflow", + Type: []string{"object"}, + Properties: map[string]spec.Schema{ + "retried": { + SchemaProps: spec.SchemaProps{ + Description: "Retried tracks whether or not this workflow was retried by RetryConfig", + Type: []string{"boolean"}, + Format: "", + }, + }, + "restartSuccessful": { + SchemaProps: spec.SchemaProps{ + Description: "RestartSuccessful defines whether or not to retry succeeded node", + Type: []string{"boolean"}, + Format: "", + }, + }, + "nodeFieldSelector": { + SchemaProps: spec.SchemaProps{ + Description: "NodeFieldSelector selects nodes to reset", + Type: []string{"string"}, + Format: "", + }, + }, + "parameters": { + SchemaProps: spec.SchemaProps{ + Description: "Parameters are a list of parameters passed", + Type: []string{"array"}, + Items: &spec.SchemaOrArray{ + Schema: &spec.Schema{ + SchemaProps: spec.SchemaProps{ + Default: "", + Type: []string{"string"}, + Format: "", + }, + }, + }, + }, + }, + }, + }, + }, + } +} + func schema_pkg_apis_workflow_v1alpha1_RetryNodeAntiAffinity(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.OpenAPIDefinition{ Schema: spec.Schema{ @@ -7734,11 +7784,17 @@ func schema_pkg_apis_workflow_v1alpha1_WorkflowSpec(ref common.ReferenceCallback Ref: ref("github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.WorkflowLevelArtifactGC"), }, }, + "retry": { + SchemaProps: spec.SchemaProps{ + Description: "Retry will retry the workflow according to its RetryConfig", + Ref: ref("github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.RetryConfig"), + }, + }, }, }, }, Dependencies: []string{ - "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"}, + "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.RetryConfig", "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 b883eb4552cd..c5041d7fb79c 100644 --- a/pkg/apis/workflow/v1alpha1/workflow_types.go +++ b/pkg/apis/workflow/v1alpha1/workflow_types.go @@ -429,6 +429,9 @@ 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 *WorkflowLevelArtifactGC `json:"artifactGC,omitempty" protobuf:"bytes,43,opt,name=artifactGC"` + + // Retry will retry the workflow according to its RetryConfig + Retry *RetryConfig `json:"retry,omitempty" protobuf:"bytes,44,opt,name=retry"` } type LabelValueFrom struct { @@ -1946,6 +1949,9 @@ type WorkflowStatus struct { // TaskResultsCompletionStatus tracks task result completion status (mapped by node ID). Used to prevent premature archiving and garbage collection. TaskResultsCompletionStatus map[string]bool `json:"taskResultsCompletionStatus,omitempty" protobuf:"bytes,20,opt,name=taskResultsCompletionStatus"` + + // RetryStatus tracks RetryStatus + RetryStatus *bool `json:"retryStatus,omitempty" protobuf:"varint,21,opt,name=retryStatus"` } func (ws *WorkflowStatus) MarkTaskResultIncomplete(name string) { @@ -3900,3 +3906,15 @@ type NodeFlag struct { // Retried tracks whether or not this node was retried by retryStrategy Retried bool `json:"retried,omitempty" protobuf:"varint,2,opt,name=retried"` } + +// RetryConfig defines how to retry a workflow +type RetryConfig struct { + // Retried tracks whether or not this workflow was retried by RetryConfig + Retried bool `json:"retried,omitempty" protobuf:"varint,1,opt,name=retried"` + // RestartSuccessful defines whether or not to retry succeeded node + RestartSuccessful bool `json:"restartSuccessful,omitempty" protobuf:"varint,2,opt,name=restartSuccessful"` + // NodeFieldSelector selects nodes to reset + NodeFieldSelector string `json:"nodeFieldSelector,omitempty" protobuf:"bytes,3,opt,name=nodeFieldSelector"` + // Parameters are a list of parameters passed + Parameters []string `json:"parameters,omitempty" protobuf:"bytes,4,opt,name=parameters"` +} diff --git a/pkg/apis/workflow/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/workflow/v1alpha1/zz_generated.deepcopy.go index f71aca040c98..072e46342325 100644 --- a/pkg/apis/workflow/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/workflow/v1alpha1/zz_generated.deepcopy.go @@ -2672,6 +2672,27 @@ func (in *RetryAffinity) DeepCopy() *RetryAffinity { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RetryConfig) DeepCopyInto(out *RetryConfig) { + *out = *in + if in.Parameters != nil { + in, out := &in.Parameters, &out.Parameters + *out = make([]string, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RetryConfig. +func (in *RetryConfig) DeepCopy() *RetryConfig { + if in == nil { + return nil + } + out := new(RetryConfig) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *RetryNodeAntiAffinity) DeepCopyInto(out *RetryNodeAntiAffinity) { *out = *in @@ -3912,6 +3933,11 @@ func (in *WorkflowSpec) DeepCopyInto(out *WorkflowSpec) { *out = new(WorkflowLevelArtifactGC) (*in).DeepCopyInto(*out) } + if in.Retry != nil { + in, out := &in.Retry, &out.Retry + *out = new(RetryConfig) + (*in).DeepCopyInto(*out) + } return } diff --git a/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1RetryConfig.md b/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1RetryConfig.md new file mode 100644 index 000000000000..e720511fc1c0 --- /dev/null +++ b/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1RetryConfig.md @@ -0,0 +1,17 @@ + + +# IoArgoprojWorkflowV1alpha1RetryConfig + +RetryConfig defines how to retry a workflow + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**nodeFieldSelector** | **String** | NodeFieldSelector selects nodes to reset | [optional] +**parameters** | **List<String>** | Parameters are a list of parameters passed | [optional] +**restartSuccessful** | **Boolean** | RestartSuccessful defines whether or not to retry succeeded node | [optional] +**retried** | **Boolean** | Retried tracks whether or not this workflow was retried by RetryConfig | [optional] + + + diff --git a/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1WorkflowSpec.md b/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1WorkflowSpec.md index e889ac8f8756..8b0d2afabf9f 100644 --- a/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1WorkflowSpec.md +++ b/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1WorkflowSpec.md @@ -34,6 +34,7 @@ Name | Type | Description | Notes **podPriorityClassName** | **String** | PriorityClassName to apply to workflow pods. | [optional] **podSpecPatch** | **String** | PodSpecPatch holds strategic merge patch to apply against the pod spec. Allows parameterization of container fields which are not strings (e.g. resource limits). | [optional] **priority** | **Integer** | Priority is used if controller is configured to process limited number of workflows in parallel. Workflows with higher priority are processed first. | [optional] +**retry** | [**IoArgoprojWorkflowV1alpha1RetryConfig**](IoArgoprojWorkflowV1alpha1RetryConfig.md) | | [optional] **retryStrategy** | [**IoArgoprojWorkflowV1alpha1RetryStrategy**](IoArgoprojWorkflowV1alpha1RetryStrategy.md) | | [optional] **schedulerName** | **String** | Set scheduler name for all pods. Will be overridden if container/script template's scheduler name is set. Default scheduler will be used if neither specified. | [optional] **securityContext** | [**io.kubernetes.client.openapi.models.V1PodSecurityContext**](io.kubernetes.client.openapi.models.V1PodSecurityContext.md) | | [optional] diff --git a/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_retry_config.py b/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_retry_config.py new file mode 100644 index 000000000000..e39e5656320a --- /dev/null +++ b/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_retry_config.py @@ -0,0 +1,267 @@ +""" + 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://argo-workflows.readthedocs.io/en/latest/ # 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 + + + +class IoArgoprojWorkflowV1alpha1RetryConfig(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 + """ + 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. + """ + return { + 'node_field_selector': (str,), # noqa: E501 + 'parameters': ([str],), # noqa: E501 + 'restart_successful': (bool,), # noqa: E501 + 'retried': (bool,), # noqa: E501 + } + + @cached_property + def discriminator(): + return None + + + attribute_map = { + 'node_field_selector': 'nodeFieldSelector', # noqa: E501 + 'parameters': 'parameters', # noqa: E501 + 'restart_successful': 'restartSuccessful', # noqa: E501 + 'retried': 'retried', # noqa: E501 + } + + read_only_vars = { + } + + _composed_schemas = {} + + @classmethod + @convert_js_args_to_python_args + def _from_openapi_data(cls, *args, **kwargs): # noqa: E501 + """IoArgoprojWorkflowV1alpha1RetryConfig - 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,) + node_field_selector (str): NodeFieldSelector selects nodes to reset. [optional] # noqa: E501 + parameters ([str]): Parameters are a list of parameters passed. [optional] # noqa: E501 + restart_successful (bool): RestartSuccessful defines whether or not to retry succeeded node. [optional] # noqa: E501 + retried (bool): Retried tracks whether or not this workflow was retried by RetryConfig. [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 + """IoArgoprojWorkflowV1alpha1RetryConfig - 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,) + node_field_selector (str): NodeFieldSelector selects nodes to reset. [optional] # noqa: E501 + parameters ([str]): Parameters are a list of parameters passed. [optional] # noqa: E501 + restart_successful (bool): RestartSuccessful defines whether or not to retry succeeded node. [optional] # noqa: E501 + retried (bool): Retried tracks whether or not this workflow was retried by RetryConfig. [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 3a5e330beda5..1513d328be71 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 @@ -39,6 +39,7 @@ def lazy_import(): from argo_workflows.model.io_argoproj_workflow_v1alpha1_metadata import IoArgoprojWorkflowV1alpha1Metadata from argo_workflows.model.io_argoproj_workflow_v1alpha1_metrics import IoArgoprojWorkflowV1alpha1Metrics from argo_workflows.model.io_argoproj_workflow_v1alpha1_pod_gc import IoArgoprojWorkflowV1alpha1PodGC + from argo_workflows.model.io_argoproj_workflow_v1alpha1_retry_config import IoArgoprojWorkflowV1alpha1RetryConfig from argo_workflows.model.io_argoproj_workflow_v1alpha1_retry_strategy import IoArgoprojWorkflowV1alpha1RetryStrategy from argo_workflows.model.io_argoproj_workflow_v1alpha1_synchronization import IoArgoprojWorkflowV1alpha1Synchronization from argo_workflows.model.io_argoproj_workflow_v1alpha1_template import IoArgoprojWorkflowV1alpha1Template @@ -63,6 +64,7 @@ def lazy_import(): globals()['IoArgoprojWorkflowV1alpha1Metadata'] = IoArgoprojWorkflowV1alpha1Metadata globals()['IoArgoprojWorkflowV1alpha1Metrics'] = IoArgoprojWorkflowV1alpha1Metrics globals()['IoArgoprojWorkflowV1alpha1PodGC'] = IoArgoprojWorkflowV1alpha1PodGC + globals()['IoArgoprojWorkflowV1alpha1RetryConfig'] = IoArgoprojWorkflowV1alpha1RetryConfig globals()['IoArgoprojWorkflowV1alpha1RetryStrategy'] = IoArgoprojWorkflowV1alpha1RetryStrategy globals()['IoArgoprojWorkflowV1alpha1Synchronization'] = IoArgoprojWorkflowV1alpha1Synchronization globals()['IoArgoprojWorkflowV1alpha1TTLStrategy'] = IoArgoprojWorkflowV1alpha1TTLStrategy @@ -159,6 +161,7 @@ def openapi_types(): 'pod_priority_class_name': (str,), # noqa: E501 'pod_spec_patch': (str,), # noqa: E501 'priority': (int,), # noqa: E501 + 'retry': (IoArgoprojWorkflowV1alpha1RetryConfig,), # noqa: E501 'retry_strategy': (IoArgoprojWorkflowV1alpha1RetryStrategy,), # noqa: E501 'scheduler_name': (str,), # noqa: E501 'security_context': (PodSecurityContext,), # noqa: E501 @@ -209,6 +212,7 @@ def discriminator(): 'pod_priority_class_name': 'podPriorityClassName', # noqa: E501 'pod_spec_patch': 'podSpecPatch', # noqa: E501 'priority': 'priority', # noqa: E501 + 'retry': 'retry', # noqa: E501 'retry_strategy': 'retryStrategy', # noqa: E501 'scheduler_name': 'schedulerName', # noqa: E501 'security_context': 'securityContext', # noqa: E501 @@ -294,6 +298,7 @@ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501 pod_priority_class_name (str): PriorityClassName to apply to workflow pods.. [optional] # noqa: E501 pod_spec_patch (str): PodSpecPatch holds strategic merge patch to apply against the pod spec. Allows parameterization of container fields which are not strings (e.g. resource limits).. [optional] # noqa: E501 priority (int): Priority is used if controller is configured to process limited number of workflows in parallel. Workflows with higher priority are processed first.. [optional] # noqa: E501 + retry (IoArgoprojWorkflowV1alpha1RetryConfig): [optional] # noqa: E501 retry_strategy (IoArgoprojWorkflowV1alpha1RetryStrategy): [optional] # noqa: E501 scheduler_name (str): Set scheduler name for all pods. Will be overridden if container/script template's scheduler name is set. Default scheduler will be used if neither specified.. [optional] # noqa: E501 security_context (PodSecurityContext): [optional] # noqa: E501 @@ -417,6 +422,7 @@ def __init__(self, *args, **kwargs): # noqa: E501 pod_priority_class_name (str): PriorityClassName to apply to workflow pods.. [optional] # noqa: E501 pod_spec_patch (str): PodSpecPatch holds strategic merge patch to apply against the pod spec. Allows parameterization of container fields which are not strings (e.g. resource limits).. [optional] # noqa: E501 priority (int): Priority is used if controller is configured to process limited number of workflows in parallel. Workflows with higher priority are processed first.. [optional] # noqa: E501 + retry (IoArgoprojWorkflowV1alpha1RetryConfig): [optional] # noqa: E501 retry_strategy (IoArgoprojWorkflowV1alpha1RetryStrategy): [optional] # noqa: E501 scheduler_name (str): Set scheduler name for all pods. Will be overridden if container/script template's scheduler name is set. Default scheduler will be used if neither specified.. [optional] # noqa: E501 security_context (PodSecurityContext): [optional] # noqa: E501 diff --git a/sdks/python/client/argo_workflows/models/__init__.py b/sdks/python/client/argo_workflows/models/__init__.py index 44ef0697df2c..f2b594e9b34d 100644 --- a/sdks/python/client/argo_workflows/models/__init__.py +++ b/sdks/python/client/argo_workflows/models/__init__.py @@ -276,6 +276,7 @@ from argo_workflows.model.io_argoproj_workflow_v1alpha1_resubmit_archived_workflow_request import IoArgoprojWorkflowV1alpha1ResubmitArchivedWorkflowRequest from argo_workflows.model.io_argoproj_workflow_v1alpha1_retry_affinity import IoArgoprojWorkflowV1alpha1RetryAffinity from argo_workflows.model.io_argoproj_workflow_v1alpha1_retry_archived_workflow_request import IoArgoprojWorkflowV1alpha1RetryArchivedWorkflowRequest +from argo_workflows.model.io_argoproj_workflow_v1alpha1_retry_config import IoArgoprojWorkflowV1alpha1RetryConfig from argo_workflows.model.io_argoproj_workflow_v1alpha1_retry_strategy import IoArgoprojWorkflowV1alpha1RetryStrategy from argo_workflows.model.io_argoproj_workflow_v1alpha1_s3_artifact import IoArgoprojWorkflowV1alpha1S3Artifact from argo_workflows.model.io_argoproj_workflow_v1alpha1_s3_artifact_repository import IoArgoprojWorkflowV1alpha1S3ArtifactRepository diff --git a/sdks/python/client/docs/ClusterWorkflowTemplateServiceApi.md b/sdks/python/client/docs/ClusterWorkflowTemplateServiceApi.md index 5f2d50121d95..08873d6f3bf2 100644 --- a/sdks/python/client/docs/ClusterWorkflowTemplateServiceApi.md +++ b/sdks/python/client/docs/ClusterWorkflowTemplateServiceApi.md @@ -1005,6 +1005,14 @@ with argo_workflows.ApiClient(configuration) as api_client: pod_priority_class_name="pod_priority_class_name_example", pod_spec_patch="pod_spec_patch_example", priority=1, + retry=IoArgoprojWorkflowV1alpha1RetryConfig( + node_field_selector="node_field_selector_example", + parameters=[ + "parameters_example", + ], + restart_successful=True, + retried=True, + ), retry_strategy=IoArgoprojWorkflowV1alpha1RetryStrategy( affinity=IoArgoprojWorkflowV1alpha1RetryAffinity( node_anti_affinity={}, @@ -11939,6 +11947,14 @@ with argo_workflows.ApiClient(configuration) as api_client: pod_priority_class_name="pod_priority_class_name_example", pod_spec_patch="pod_spec_patch_example", priority=1, + retry=IoArgoprojWorkflowV1alpha1RetryConfig( + node_field_selector="node_field_selector_example", + parameters=[ + "parameters_example", + ], + restart_successful=True, + retried=True, + ), retry_strategy=IoArgoprojWorkflowV1alpha1RetryStrategy( affinity=IoArgoprojWorkflowV1alpha1RetryAffinity( node_anti_affinity={}, @@ -22777,6 +22793,14 @@ with argo_workflows.ApiClient(configuration) as api_client: pod_priority_class_name="pod_priority_class_name_example", pod_spec_patch="pod_spec_patch_example", priority=1, + retry=IoArgoprojWorkflowV1alpha1RetryConfig( + node_field_selector="node_field_selector_example", + parameters=[ + "parameters_example", + ], + restart_successful=True, + retried=True, + ), retry_strategy=IoArgoprojWorkflowV1alpha1RetryStrategy( affinity=IoArgoprojWorkflowV1alpha1RetryAffinity( node_anti_affinity={}, diff --git a/sdks/python/client/docs/CronWorkflowServiceApi.md b/sdks/python/client/docs/CronWorkflowServiceApi.md index 455b2749c5cd..a81554e3617c 100644 --- a/sdks/python/client/docs/CronWorkflowServiceApi.md +++ b/sdks/python/client/docs/CronWorkflowServiceApi.md @@ -1065,6 +1065,14 @@ with argo_workflows.ApiClient(configuration) as api_client: pod_priority_class_name="pod_priority_class_name_example", pod_spec_patch="pod_spec_patch_example", priority=1, + retry=IoArgoprojWorkflowV1alpha1RetryConfig( + node_field_selector="node_field_selector_example", + parameters=[ + "parameters_example", + ], + restart_successful=True, + retried=True, + ), retry_strategy=IoArgoprojWorkflowV1alpha1RetryStrategy( affinity=IoArgoprojWorkflowV1alpha1RetryAffinity( node_anti_affinity={}, @@ -12081,6 +12089,14 @@ with argo_workflows.ApiClient(configuration) as api_client: pod_priority_class_name="pod_priority_class_name_example", pod_spec_patch="pod_spec_patch_example", priority=1, + retry=IoArgoprojWorkflowV1alpha1RetryConfig( + node_field_selector="node_field_selector_example", + parameters=[ + "parameters_example", + ], + restart_successful=True, + retried=True, + ), retry_strategy=IoArgoprojWorkflowV1alpha1RetryStrategy( affinity=IoArgoprojWorkflowV1alpha1RetryAffinity( node_anti_affinity={}, @@ -23182,6 +23198,14 @@ with argo_workflows.ApiClient(configuration) as api_client: pod_priority_class_name="pod_priority_class_name_example", pod_spec_patch="pod_spec_patch_example", priority=1, + retry=IoArgoprojWorkflowV1alpha1RetryConfig( + node_field_selector="node_field_selector_example", + parameters=[ + "parameters_example", + ], + restart_successful=True, + retried=True, + ), retry_strategy=IoArgoprojWorkflowV1alpha1RetryStrategy( affinity=IoArgoprojWorkflowV1alpha1RetryAffinity( node_anti_affinity={}, diff --git a/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1RetryConfig.md b/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1RetryConfig.md new file mode 100644 index 000000000000..978195b36798 --- /dev/null +++ b/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1RetryConfig.md @@ -0,0 +1,16 @@ +# IoArgoprojWorkflowV1alpha1RetryConfig + +RetryConfig defines how to retry a workflow + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**node_field_selector** | **str** | NodeFieldSelector selects nodes to reset | [optional] +**parameters** | **[str]** | Parameters are a list of parameters passed | [optional] +**restart_successful** | **bool** | RestartSuccessful defines whether or not to retry succeeded node | [optional] +**retried** | **bool** | Retried tracks whether or not this workflow was retried by RetryConfig | [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 3f9ded2612a9..540bbee1eb28 100644 --- a/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1WorkflowSpec.md +++ b/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1WorkflowSpec.md @@ -31,6 +31,7 @@ Name | Type | Description | Notes **pod_priority_class_name** | **str** | PriorityClassName to apply to workflow pods. | [optional] **pod_spec_patch** | **str** | PodSpecPatch holds strategic merge patch to apply against the pod spec. Allows parameterization of container fields which are not strings (e.g. resource limits). | [optional] **priority** | **int** | Priority is used if controller is configured to process limited number of workflows in parallel. Workflows with higher priority are processed first. | [optional] +**retry** | [**IoArgoprojWorkflowV1alpha1RetryConfig**](IoArgoprojWorkflowV1alpha1RetryConfig.md) | | [optional] **retry_strategy** | [**IoArgoprojWorkflowV1alpha1RetryStrategy**](IoArgoprojWorkflowV1alpha1RetryStrategy.md) | | [optional] **scheduler_name** | **str** | Set scheduler name for all pods. Will be overridden if container/script template's scheduler name is set. Default scheduler will be used if neither specified. | [optional] **security_context** | [**PodSecurityContext**](PodSecurityContext.md) | | [optional] diff --git a/sdks/python/client/docs/WorkflowServiceApi.md b/sdks/python/client/docs/WorkflowServiceApi.md index 4296e4211333..4b4e0856bc58 100644 --- a/sdks/python/client/docs/WorkflowServiceApi.md +++ b/sdks/python/client/docs/WorkflowServiceApi.md @@ -1020,6 +1020,14 @@ with argo_workflows.ApiClient(configuration) as api_client: pod_priority_class_name="pod_priority_class_name_example", pod_spec_patch="pod_spec_patch_example", priority=1, + retry=IoArgoprojWorkflowV1alpha1RetryConfig( + node_field_selector="node_field_selector_example", + parameters=[ + "parameters_example", + ], + restart_successful=True, + retried=True, + ), retry_strategy=IoArgoprojWorkflowV1alpha1RetryStrategy( affinity=IoArgoprojWorkflowV1alpha1RetryAffinity( node_anti_affinity={}, @@ -17598,6 +17606,14 @@ with argo_workflows.ApiClient(configuration) as api_client: pod_priority_class_name="pod_priority_class_name_example", pod_spec_patch="pod_spec_patch_example", priority=1, + retry=IoArgoprojWorkflowV1alpha1RetryConfig( + node_field_selector="node_field_selector_example", + parameters=[ + "parameters_example", + ], + restart_successful=True, + retried=True, + ), retry_strategy=IoArgoprojWorkflowV1alpha1RetryStrategy( affinity=IoArgoprojWorkflowV1alpha1RetryAffinity( node_anti_affinity={}, @@ -28574,6 +28590,14 @@ with argo_workflows.ApiClient(configuration) as api_client: pod_priority_class_name="pod_priority_class_name_example", pod_spec_patch="pod_spec_patch_example", priority=1, + retry=IoArgoprojWorkflowV1alpha1RetryConfig( + node_field_selector="node_field_selector_example", + parameters=[ + "parameters_example", + ], + restart_successful=True, + retried=True, + ), retry_strategy=IoArgoprojWorkflowV1alpha1RetryStrategy( affinity=IoArgoprojWorkflowV1alpha1RetryAffinity( node_anti_affinity={}, @@ -45152,6 +45176,14 @@ with argo_workflows.ApiClient(configuration) as api_client: pod_priority_class_name="pod_priority_class_name_example", pod_spec_patch="pod_spec_patch_example", priority=1, + retry=IoArgoprojWorkflowV1alpha1RetryConfig( + node_field_selector="node_field_selector_example", + parameters=[ + "parameters_example", + ], + restart_successful=True, + retried=True, + ), retry_strategy=IoArgoprojWorkflowV1alpha1RetryStrategy( affinity=IoArgoprojWorkflowV1alpha1RetryAffinity( node_anti_affinity={}, diff --git a/sdks/python/client/docs/WorkflowTemplateServiceApi.md b/sdks/python/client/docs/WorkflowTemplateServiceApi.md index 8f9032d97d57..648805ddbd0a 100644 --- a/sdks/python/client/docs/WorkflowTemplateServiceApi.md +++ b/sdks/python/client/docs/WorkflowTemplateServiceApi.md @@ -1007,6 +1007,14 @@ with argo_workflows.ApiClient(configuration) as api_client: pod_priority_class_name="pod_priority_class_name_example", pod_spec_patch="pod_spec_patch_example", priority=1, + retry=IoArgoprojWorkflowV1alpha1RetryConfig( + node_field_selector="node_field_selector_example", + parameters=[ + "parameters_example", + ], + restart_successful=True, + retried=True, + ), retry_strategy=IoArgoprojWorkflowV1alpha1RetryStrategy( affinity=IoArgoprojWorkflowV1alpha1RetryAffinity( node_anti_affinity={}, @@ -11948,6 +11956,14 @@ with argo_workflows.ApiClient(configuration) as api_client: pod_priority_class_name="pod_priority_class_name_example", pod_spec_patch="pod_spec_patch_example", priority=1, + retry=IoArgoprojWorkflowV1alpha1RetryConfig( + node_field_selector="node_field_selector_example", + parameters=[ + "parameters_example", + ], + restart_successful=True, + retried=True, + ), retry_strategy=IoArgoprojWorkflowV1alpha1RetryStrategy( affinity=IoArgoprojWorkflowV1alpha1RetryAffinity( node_anti_affinity={}, @@ -22800,6 +22816,14 @@ with argo_workflows.ApiClient(configuration) as api_client: pod_priority_class_name="pod_priority_class_name_example", pod_spec_patch="pod_spec_patch_example", priority=1, + retry=IoArgoprojWorkflowV1alpha1RetryConfig( + node_field_selector="node_field_selector_example", + parameters=[ + "parameters_example", + ], + restart_successful=True, + retried=True, + ), retry_strategy=IoArgoprojWorkflowV1alpha1RetryStrategy( affinity=IoArgoprojWorkflowV1alpha1RetryAffinity( node_anti_affinity={}, diff --git a/server/workflow/workflow_server.go b/server/workflow/workflow_server.go index 584278e21c6f..598f938f5ba3 100644 --- a/server/workflow/workflow_server.go +++ b/server/workflow/workflow_server.go @@ -4,17 +4,15 @@ import ( "context" "encoding/json" "fmt" - "io" - "sort" - "sync" - log "github.com/sirupsen/logrus" "google.golang.org/grpc/codes" "google.golang.org/grpc/metadata" + "io" corev1 "k8s.io/api/core/v1" apierr "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" + "sort" "github.com/argoproj/argo-workflows/v3/errors" "github.com/argoproj/argo-workflows/v3/persist/sqldb" @@ -382,7 +380,6 @@ func errorFromChannel(errCh <-chan error) error { func (s *workflowServer) RetryWorkflow(ctx context.Context, req *workflowpkg.WorkflowRetryRequest) (*wfv1.Workflow, error) { wfClient := auth.GetWfClient(ctx) - kubeClient := auth.GetKubeClient(ctx) wf, err := s.getWorkflow(ctx, wfClient, req.Namespace, req.Name, metav1.GetOptions{}) if err != nil { @@ -394,38 +391,7 @@ func (s *workflowServer) RetryWorkflow(ctx context.Context, req *workflowpkg.Wor return nil, sutils.ToStatusError(err, codes.InvalidArgument) } - err = s.hydrator.Hydrate(wf) - if err != nil { - return nil, sutils.ToStatusError(err, codes.Internal) - } - - wf, podsToDelete, err := util.FormulateRetryWorkflow(ctx, wf, req.RestartSuccessful, req.NodeFieldSelector, req.Parameters) - if err != nil { - return nil, sutils.ToStatusError(err, codes.Internal) - } - - errCh := make(chan error, len(podsToDelete)) - var wg sync.WaitGroup - wg.Add(len(podsToDelete)) - for _, podName := range podsToDelete { - log.WithFields(log.Fields{"podDeleted": podName}).Info("Deleting pod") - go func(podName string) { - defer wg.Done() - err := kubeClient.CoreV1().Pods(wf.Namespace).Delete(ctx, podName, metav1.DeleteOptions{}) - if err != nil && !apierr.IsNotFound(err) { - errCh <- err - return - } - }(podName) - } - wg.Wait() - - err = errorFromChannel(errCh) - if err != nil { - return nil, sutils.ToStatusError(err, codes.Internal) - } - - err = s.hydrator.Dehydrate(wf) + wf, err = util.RetryWorkflow(ctx, wf, req.RestartSuccessful, req.NodeFieldSelector, req.Parameters) if err != nil { return nil, sutils.ToStatusError(err, codes.Internal) } diff --git a/workflow/controller/operator.go b/workflow/controller/operator.go index 0e93b2a9b397..d2ea88bbc092 100644 --- a/workflow/controller/operator.go +++ b/workflow/controller/operator.go @@ -214,6 +214,16 @@ func (woc *wfOperationCtx) operate(ctx context.Context) { return } + // Check whether it is a workflow that requires retry + if woc.shouldRetry() { + woc.log.Info("workflow retryed") + err := woc.retryWorkflow(ctx) + if err != nil { + woc.log.WithError(err).Errorf("Retry workflow failed") + } + return + } + if woc.wf.Status.ArtifactRepositoryRef == nil { ref, err := woc.controller.artifactRepositories.Resolve(ctx, woc.execWf.Spec.ArtifactRepositoryRef, woc.wf.Namespace) if err != nil { @@ -3851,6 +3861,44 @@ func (woc *wfOperationCtx) retryStrategy(tmpl *wfv1.Template) *wfv1.RetryStrateg return woc.execWf.Spec.RetryStrategy } +func (woc *wfOperationCtx) shouldRetry() bool { + retryConfig := woc.execWf.Spec.Retry + if retryConfig == nil { + return false + } + if woc.IsRetried() { + _, quit := woc.controller.podCleanupQueue.Get() + if quit { + woc.wf.Status.RetryStatus = pointer.BoolPtr(true) + woc.updated = true + return false + } + } + return true +} + +func (woc *wfOperationCtx) IsRetried() bool { + return woc.wf.Status.RetryStatus != nil && *woc.wf.Status.RetryStatus +} + +func (woc *wfOperationCtx) retryWorkflow(ctx context.Context) error { + if woc.IsRetried() { + return nil + } + retryConfig := woc.execWf.Spec.Retry + // Clean up remaining pods in the workflow + wf, podsToDelete, err := wfutil.FormulateRetryWorkflow(ctx, woc.wf, retryConfig.RestartSuccessful, retryConfig.NodeFieldSelector, retryConfig.Parameters) + if err != nil { + return fmt.Errorf("fail to FormulateRetryWorkflow") + } + for _, podName := range podsToDelete { + woc.controller.queuePodForCleanup(wf.Namespace, podName, deletePod) + } + woc.wf.Status.RetryStatus = pointer.BoolPtr(true) + woc.updated = true + return nil +} + func (woc *wfOperationCtx) setExecWorkflow(ctx context.Context) error { if woc.wf.Spec.WorkflowTemplateRef != nil { // not-woc-misuse err := woc.setStoredWfSpec() diff --git a/workflow/util/util.go b/workflow/util/util.go index 2f69ef282d99..e662a1926814 100644 --- a/workflow/util/util.go +++ b/workflow/util/util.go @@ -827,18 +827,30 @@ func resetConnectedParentGroupNodes(oldWF *wfv1.Workflow, newWF *wfv1.Workflow, return newWF, resetParentGroupNodes } -// FormulateRetryWorkflow formulates a previous workflow to be retried, deleting all failed steps as well as the onExit node (and children) -func FormulateRetryWorkflow(ctx context.Context, wf *wfv1.Workflow, restartSuccessful bool, nodeFieldSelector string, parameters []string) (*wfv1.Workflow, []string, error) { +// RteryWorkflow retry a workflow by setting spec.retry and controller will retry it. +func RetryWorkflow(ctx context.Context, wf *wfv1.Workflow, restartSuccessful bool, nodeFieldSelector string, parameters []string) (*wfv1.Workflow, error) { switch wf.Status.Phase { case wfv1.WorkflowFailed, wfv1.WorkflowError: case wfv1.WorkflowSucceeded: if !(restartSuccessful && len(nodeFieldSelector) > 0) { - return nil, nil, errors.Errorf(errors.CodeBadRequest, "To retry a succeeded workflow, set the options restartSuccessful and nodeFieldSelector") + return nil, errors.Errorf(errors.CodeBadRequest, "To retry a succeeded workflow, set the options restartSuccessful and nodeFieldSelector") } default: - return nil, nil, errors.Errorf(errors.CodeBadRequest, "Cannot retry a workflow in phase %s", wf.Status.Phase) + return nil, errors.Errorf(errors.CodeBadRequest, "Cannot retry a workflow in phase %s", wf.Status.Phase) + } + + wf.Spec.Retry = &wfv1.RetryConfig{ + Retried: false, + RestartSuccessful: restartSuccessful, + NodeFieldSelector: nodeFieldSelector, + Parameters: parameters, } + return wf, nil +} + +// FormulateRetryWorkflow formulates a previous workflow to be retried, deleting all failed steps as well as the onExit node (and children) +func FormulateRetryWorkflow(ctx context.Context, wf *wfv1.Workflow, restartSuccessful bool, nodeFieldSelector string, parameters []string) (*wfv1.Workflow, []string, error) { newWF := wf.DeepCopy() // Delete/reset fields which indicate workflow completed From d08d334ee4d3b0b96caa3c56417f7716c827a7e3 Mon Sep 17 00:00:00 2001 From: shuangkun Date: Mon, 4 Mar 2024 11:38:54 +0800 Subject: [PATCH 02/26] fix: test Signed-off-by: shuangkun --- api/jsonschema/schema.json | 4 ++++ api/openapi-spec/swagger.json | 4 ++++ docs/fields.md | 1 + pkg/apis/workflow/v1alpha1/generated.proto | 2 +- .../workflow/v1alpha1/openapi_generated.go | 7 +++++++ pkg/apis/workflow/v1alpha1/workflow_types.go | 2 +- .../v1alpha1/zz_generated.deepcopy.go | 5 +++++ ...oArgoprojWorkflowV1alpha1WorkflowStatus.md | 1 + ...oproj_workflow_v1alpha1_workflow_status.py | 4 ++++ ...oArgoprojWorkflowV1alpha1WorkflowStatus.md | 1 + sdks/python/client/docs/WorkflowServiceApi.md | 2 ++ server/workflow/workflow_server.go | 9 --------- .../archived_workflow_server.go | 11 +---------- test/e2e/cli_test.go | 2 ++ workflow/controller/operator.go | 1 + workflow/util/util.go | 19 +++++++++---------- 16 files changed, 44 insertions(+), 31 deletions(-) diff --git a/api/jsonschema/schema.json b/api/jsonschema/schema.json index b6de26034146..074e29c68df1 100644 --- a/api/jsonschema/schema.json +++ b/api/jsonschema/schema.json @@ -8098,6 +8098,10 @@ "description": "ResourcesDuration is the total for the workflow", "type": "object" }, + "retryStatus": { + "description": "RetryStatus tracks RetryStatus for this workflow", + "type": "boolean" + }, "startedAt": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time", "description": "Time at which this workflow started" diff --git a/api/openapi-spec/swagger.json b/api/openapi-spec/swagger.json index 95c119a9d6f7..1076d6de6134 100644 --- a/api/openapi-spec/swagger.json +++ b/api/openapi-spec/swagger.json @@ -12021,6 +12021,10 @@ "format": "int64" } }, + "retryStatus": { + "description": "RetryStatus tracks RetryStatus for this workflow", + "type": "boolean" + }, "startedAt": { "description": "Time at which this workflow started", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" diff --git a/docs/fields.md b/docs/fields.md index bd2dee113602..41913d01a8ad 100644 --- a/docs/fields.md +++ b/docs/fields.md @@ -858,6 +858,7 @@ WorkflowStatus contains overall status information about a workflow |`phase`|`string`|Phase a simple, high-level summary of where the workflow is in its lifecycle. Will be "" (Unknown), "Pending", or "Running" before the workflow is completed, and "Succeeded", "Failed" or "Error" once the workflow has completed.| |`progress`|`string`|Progress to completion| |`resourcesDuration`|`Map< integer , int64 >`|ResourcesDuration is the total for the workflow| +|`retryStatus`|`boolean`|RetryStatus tracks RetryStatus for this workflow| |`startedAt`|[`Time`](#time)|Time at which this workflow started| |`storedTemplates`|[`Template`](#template)|StoredTemplates is a mapping between a template ref and the node's status.| |`storedWorkflowTemplateSpec`|[`WorkflowSpec`](#workflowspec)|StoredWorkflowSpec stores the WorkflowTemplate spec for future execution.| diff --git a/pkg/apis/workflow/v1alpha1/generated.proto b/pkg/apis/workflow/v1alpha1/generated.proto index 760543c2cbbe..7410cbb0ca41 100644 --- a/pkg/apis/workflow/v1alpha1/generated.proto +++ b/pkg/apis/workflow/v1alpha1/generated.proto @@ -2163,7 +2163,7 @@ message WorkflowStatus { // TaskResultsCompletionStatus tracks task result completion status (mapped by node ID). Used to prevent premature archiving and garbage collection. map taskResultsCompletionStatus = 20; - // RetryStatus tracks RetryStatus + // RetryStatus tracks RetryStatus for this workflow optional bool retryStatus = 21; } diff --git a/pkg/apis/workflow/v1alpha1/openapi_generated.go b/pkg/apis/workflow/v1alpha1/openapi_generated.go index 7a2313d36ce1..82f5566a77e8 100644 --- a/pkg/apis/workflow/v1alpha1/openapi_generated.go +++ b/pkg/apis/workflow/v1alpha1/openapi_generated.go @@ -7981,6 +7981,13 @@ func schema_pkg_apis_workflow_v1alpha1_WorkflowStatus(ref common.ReferenceCallba }, }, }, + "retryStatus": { + SchemaProps: spec.SchemaProps{ + Description: "RetryStatus tracks RetryStatus for this workflow", + Type: []string{"boolean"}, + Format: "", + }, + }, }, }, }, diff --git a/pkg/apis/workflow/v1alpha1/workflow_types.go b/pkg/apis/workflow/v1alpha1/workflow_types.go index c5041d7fb79c..876eed79c0bc 100644 --- a/pkg/apis/workflow/v1alpha1/workflow_types.go +++ b/pkg/apis/workflow/v1alpha1/workflow_types.go @@ -1950,7 +1950,7 @@ type WorkflowStatus struct { // TaskResultsCompletionStatus tracks task result completion status (mapped by node ID). Used to prevent premature archiving and garbage collection. TaskResultsCompletionStatus map[string]bool `json:"taskResultsCompletionStatus,omitempty" protobuf:"bytes,20,opt,name=taskResultsCompletionStatus"` - // RetryStatus tracks RetryStatus + // RetryStatus tracks RetryStatus for this workflow RetryStatus *bool `json:"retryStatus,omitempty" protobuf:"varint,21,opt,name=retryStatus"` } diff --git a/pkg/apis/workflow/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/workflow/v1alpha1/zz_generated.deepcopy.go index 072e46342325..94690c8a5372 100644 --- a/pkg/apis/workflow/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/workflow/v1alpha1/zz_generated.deepcopy.go @@ -4021,6 +4021,11 @@ func (in *WorkflowStatus) DeepCopyInto(out *WorkflowStatus) { (*out)[key] = val } } + if in.RetryStatus != nil { + in, out := &in.RetryStatus, &out.RetryStatus + *out = new(bool) + **out = **in + } return } diff --git a/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1WorkflowStatus.md b/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1WorkflowStatus.md index 8fa76f9bbbc7..466731f24089 100644 --- a/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1WorkflowStatus.md +++ b/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1WorkflowStatus.md @@ -22,6 +22,7 @@ Name | Type | Description | Notes **phase** | **String** | Phase a simple, high-level summary of where the workflow is in its lifecycle. Will be \"\" (Unknown), \"Pending\", or \"Running\" before the workflow is completed, and \"Succeeded\", \"Failed\" or \"Error\" once the workflow has completed. | [optional] **progress** | **String** | Progress to completion | [optional] **resourcesDuration** | **Map<String, Long>** | ResourcesDuration is the total for the workflow | [optional] +**retryStatus** | **Boolean** | RetryStatus tracks RetryStatus for this workflow | [optional] **startedAt** | **java.time.Instant** | | [optional] **storedTemplates** | [**Map<String, IoArgoprojWorkflowV1alpha1Template>**](IoArgoprojWorkflowV1alpha1Template.md) | StoredTemplates is a mapping between a template ref and the node's status. | [optional] **storedWorkflowTemplateSpec** | [**IoArgoprojWorkflowV1alpha1WorkflowSpec**](IoArgoprojWorkflowV1alpha1WorkflowSpec.md) | | [optional] diff --git a/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_workflow_status.py b/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_workflow_status.py index 86e17c538bbd..841c370a663f 100644 --- a/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_workflow_status.py +++ b/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_workflow_status.py @@ -117,6 +117,7 @@ def openapi_types(): 'phase': (str,), # noqa: E501 'progress': (str,), # noqa: E501 'resources_duration': ({str: (int,)},), # noqa: E501 + 'retry_status': (bool,), # noqa: E501 'started_at': (datetime,), # noqa: E501 'stored_templates': ({str: (IoArgoprojWorkflowV1alpha1Template,)},), # noqa: E501 'stored_workflow_template_spec': (IoArgoprojWorkflowV1alpha1WorkflowSpec,), # noqa: E501 @@ -144,6 +145,7 @@ def discriminator(): 'phase': 'phase', # noqa: E501 'progress': 'progress', # noqa: E501 'resources_duration': 'resourcesDuration', # noqa: E501 + 'retry_status': 'retryStatus', # noqa: E501 'started_at': 'startedAt', # noqa: E501 'stored_templates': 'storedTemplates', # noqa: E501 'stored_workflow_template_spec': 'storedWorkflowTemplateSpec', # noqa: E501 @@ -206,6 +208,7 @@ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501 phase (str): Phase a simple, high-level summary of where the workflow is in its lifecycle. Will be \"\" (Unknown), \"Pending\", or \"Running\" before the workflow is completed, and \"Succeeded\", \"Failed\" or \"Error\" once the workflow has completed.. [optional] # noqa: E501 progress (str): Progress to completion. [optional] # noqa: E501 resources_duration ({str: (int,)}): ResourcesDuration is the total for the workflow. [optional] # noqa: E501 + retry_status (bool): RetryStatus tracks RetryStatus for this workflow. [optional] # noqa: E501 started_at (datetime): Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.. [optional] # noqa: E501 stored_templates ({str: (IoArgoprojWorkflowV1alpha1Template,)}): StoredTemplates is a mapping between a template ref and the node's status.. [optional] # noqa: E501 stored_workflow_template_spec (IoArgoprojWorkflowV1alpha1WorkflowSpec): [optional] # noqa: E501 @@ -306,6 +309,7 @@ def __init__(self, *args, **kwargs): # noqa: E501 phase (str): Phase a simple, high-level summary of where the workflow is in its lifecycle. Will be \"\" (Unknown), \"Pending\", or \"Running\" before the workflow is completed, and \"Succeeded\", \"Failed\" or \"Error\" once the workflow has completed.. [optional] # noqa: E501 progress (str): Progress to completion. [optional] # noqa: E501 resources_duration ({str: (int,)}): ResourcesDuration is the total for the workflow. [optional] # noqa: E501 + retry_status (bool): RetryStatus tracks RetryStatus for this workflow. [optional] # noqa: E501 started_at (datetime): Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.. [optional] # noqa: E501 stored_templates ({str: (IoArgoprojWorkflowV1alpha1Template,)}): StoredTemplates is a mapping between a template ref and the node's status.. [optional] # noqa: E501 stored_workflow_template_spec (IoArgoprojWorkflowV1alpha1WorkflowSpec): [optional] # noqa: E501 diff --git a/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1WorkflowStatus.md b/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1WorkflowStatus.md index c46412b8d3c8..aa2504c42356 100644 --- a/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1WorkflowStatus.md +++ b/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1WorkflowStatus.md @@ -19,6 +19,7 @@ Name | Type | Description | Notes **phase** | **str** | Phase a simple, high-level summary of where the workflow is in its lifecycle. Will be \"\" (Unknown), \"Pending\", or \"Running\" before the workflow is completed, and \"Succeeded\", \"Failed\" or \"Error\" once the workflow has completed. | [optional] **progress** | **str** | Progress to completion | [optional] **resources_duration** | **{str: (int,)}** | ResourcesDuration is the total for the workflow | [optional] +**retry_status** | **bool** | RetryStatus tracks RetryStatus for this workflow | [optional] **started_at** | **datetime** | Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers. | [optional] **stored_templates** | [**{str: (IoArgoprojWorkflowV1alpha1Template,)}**](IoArgoprojWorkflowV1alpha1Template.md) | StoredTemplates is a mapping between a template ref and the node's status. | [optional] **stored_workflow_template_spec** | [**IoArgoprojWorkflowV1alpha1WorkflowSpec**](IoArgoprojWorkflowV1alpha1WorkflowSpec.md) | | [optional] diff --git a/sdks/python/client/docs/WorkflowServiceApi.md b/sdks/python/client/docs/WorkflowServiceApi.md index 4b4e0856bc58..c8c1265a5d07 100644 --- a/sdks/python/client/docs/WorkflowServiceApi.md +++ b/sdks/python/client/docs/WorkflowServiceApi.md @@ -12136,6 +12136,7 @@ with argo_workflows.ApiClient(configuration) as api_client: resources_duration={ "key": 1, }, + retry_status=True, started_at=dateutil_parser('1970-01-01T00:00:00.00Z'), stored_templates={ "key": IoArgoprojWorkflowV1alpha1Template( @@ -39706,6 +39707,7 @@ with argo_workflows.ApiClient(configuration) as api_client: resources_duration={ "key": 1, }, + retry_status=True, started_at=dateutil_parser('1970-01-01T00:00:00.00Z'), stored_templates={ "key": IoArgoprojWorkflowV1alpha1Template( diff --git a/server/workflow/workflow_server.go b/server/workflow/workflow_server.go index 598f938f5ba3..986943161c40 100644 --- a/server/workflow/workflow_server.go +++ b/server/workflow/workflow_server.go @@ -369,15 +369,6 @@ func (s *workflowServer) DeleteWorkflow(ctx context.Context, req *workflowpkg.Wo return &workflowpkg.WorkflowDeleteResponse{}, nil } -func errorFromChannel(errCh <-chan error) error { - select { - case err := <-errCh: - return err - default: - } - return nil -} - func (s *workflowServer) RetryWorkflow(ctx context.Context, req *workflowpkg.WorkflowRetryRequest) (*wfv1.Workflow, error) { wfClient := auth.GetWfClient(ctx) diff --git a/server/workflowarchive/archived_workflow_server.go b/server/workflowarchive/archived_workflow_server.go index 511fe8d3ecc6..4645ff5e0fff 100644 --- a/server/workflowarchive/archived_workflow_server.go +++ b/server/workflowarchive/archived_workflow_server.go @@ -276,7 +276,6 @@ func (w *archivedWorkflowServer) ResubmitArchivedWorkflow(ctx context.Context, r func (w *archivedWorkflowServer) RetryArchivedWorkflow(ctx context.Context, req *workflowarchivepkg.RetryArchivedWorkflowRequest) (*wfv1.Workflow, error) { wfClient := auth.GetWfClient(ctx) - kubeClient := auth.GetKubeClient(ctx) wf, err := w.GetArchivedWorkflow(ctx, &workflowarchivepkg.GetArchivedWorkflowRequest{Uid: req.Uid}) if err != nil { @@ -286,19 +285,11 @@ func (w *archivedWorkflowServer) RetryArchivedWorkflow(ctx context.Context, req _, err = wfClient.ArgoprojV1alpha1().Workflows(req.Namespace).Get(ctx, wf.Name, metav1.GetOptions{}) if apierr.IsNotFound(err) { - wf, podsToDelete, err := util.FormulateRetryWorkflow(ctx, wf, req.RestartSuccessful, req.NodeFieldSelector, req.Parameters) + wf, _, err := util.FormulateRetryWorkflow(ctx, wf, req.RestartSuccessful, req.NodeFieldSelector, req.Parameters) if err != nil { return nil, sutils.ToStatusError(err, codes.Internal) } - for _, podName := range podsToDelete { - log.WithFields(log.Fields{"podDeleted": podName}).Info("Deleting pod") - err := kubeClient.CoreV1().Pods(wf.Namespace).Delete(ctx, podName, metav1.DeleteOptions{}) - if err != nil && !apierr.IsNotFound(err) { - return nil, sutils.ToStatusError(err, codes.Internal) - } - } - wf.ObjectMeta.ResourceVersion = "" wf.ObjectMeta.UID = "" result, err := wfClient.ArgoprojV1alpha1().Workflows(req.Namespace).Create(ctx, wf, metav1.CreateOptions{}) diff --git a/test/e2e/cli_test.go b/test/e2e/cli_test.go index 54dc4fd517ad..b5bd00820e23 100644 --- a/test/e2e/cli_test.go +++ b/test/e2e/cli_test.go @@ -853,6 +853,8 @@ func (s *CLISuite) TestWorkflowRetry() { assert.Contains(t, output, "Namespace:") } }). + ToBeRunning + WaitForWorkflow(fixtures.ToBeRunning). WaitForWorkflow(fixtures.Condition(func(wf *wfv1.Workflow) (bool, string) { return wf.Status.AnyActiveSuspendNode(), "suspended node" }), time.Second*90). diff --git a/workflow/controller/operator.go b/workflow/controller/operator.go index d2ea88bbc092..708dcdb733c6 100644 --- a/workflow/controller/operator.go +++ b/workflow/controller/operator.go @@ -2404,6 +2404,7 @@ func (woc *wfOperationCtx) markWorkflowPhase(ctx context.Context, phase wfv1.Wor } } woc.updated = true + woc.wf.Status.RetryStatus = nil woc.controller.queuePodForCleanup(woc.wf.Namespace, woc.getAgentPodName(), deletePod) } } diff --git a/workflow/util/util.go b/workflow/util/util.go index e662a1926814..5847e5cf22c6 100644 --- a/workflow/util/util.go +++ b/workflow/util/util.go @@ -829,16 +829,6 @@ func resetConnectedParentGroupNodes(oldWF *wfv1.Workflow, newWF *wfv1.Workflow, // RteryWorkflow retry a workflow by setting spec.retry and controller will retry it. func RetryWorkflow(ctx context.Context, wf *wfv1.Workflow, restartSuccessful bool, nodeFieldSelector string, parameters []string) (*wfv1.Workflow, error) { - switch wf.Status.Phase { - case wfv1.WorkflowFailed, wfv1.WorkflowError: - case wfv1.WorkflowSucceeded: - if !(restartSuccessful && len(nodeFieldSelector) > 0) { - return nil, errors.Errorf(errors.CodeBadRequest, "To retry a succeeded workflow, set the options restartSuccessful and nodeFieldSelector") - } - default: - return nil, errors.Errorf(errors.CodeBadRequest, "Cannot retry a workflow in phase %s", wf.Status.Phase) - } - wf.Spec.Retry = &wfv1.RetryConfig{ Retried: false, RestartSuccessful: restartSuccessful, @@ -851,6 +841,15 @@ func RetryWorkflow(ctx context.Context, wf *wfv1.Workflow, restartSuccessful boo // FormulateRetryWorkflow formulates a previous workflow to be retried, deleting all failed steps as well as the onExit node (and children) func FormulateRetryWorkflow(ctx context.Context, wf *wfv1.Workflow, restartSuccessful bool, nodeFieldSelector string, parameters []string) (*wfv1.Workflow, []string, error) { + switch wf.Status.Phase { + case wfv1.WorkflowFailed, wfv1.WorkflowError: + case wfv1.WorkflowSucceeded: + if !(restartSuccessful && len(nodeFieldSelector) > 0) { + return nil, nil, errors.Errorf(errors.CodeBadRequest, "To retry a succeeded workflow, set the options restartSuccessful and nodeFieldSelector") + } + default: + return nil, nil, errors.Errorf(errors.CodeBadRequest, "Cannot retry a workflow in phase %s", wf.Status.Phase) + } newWF := wf.DeepCopy() // Delete/reset fields which indicate workflow completed From 0d93cb68a5387e1a27aa73b62e8582518e348aa2 Mon Sep 17 00:00:00 2001 From: shuangkun Date: Mon, 4 Mar 2024 12:10:14 +0800 Subject: [PATCH 03/26] fix: test-cli Signed-off-by: shuangkun --- test/e2e/cli_test.go | 1 - 1 file changed, 1 deletion(-) diff --git a/test/e2e/cli_test.go b/test/e2e/cli_test.go index b5bd00820e23..2ef827d86b3b 100644 --- a/test/e2e/cli_test.go +++ b/test/e2e/cli_test.go @@ -854,7 +854,6 @@ func (s *CLISuite) TestWorkflowRetry() { } }). ToBeRunning - WaitForWorkflow(fixtures.ToBeRunning). WaitForWorkflow(fixtures.Condition(func(wf *wfv1.Workflow) (bool, string) { return wf.Status.AnyActiveSuspendNode(), "suspended node" }), time.Second*90). From 65d25e2e8f68aeb2658a630a3b4eb1b8d0cc7d3e Mon Sep 17 00:00:00 2001 From: shuangkun Date: Mon, 4 Mar 2024 13:21:44 +0800 Subject: [PATCH 04/26] fix: test-cli Signed-off-by: shuangkun --- test/e2e/cli_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/e2e/cli_test.go b/test/e2e/cli_test.go index 2ef827d86b3b..9da05a953f62 100644 --- a/test/e2e/cli_test.go +++ b/test/e2e/cli_test.go @@ -853,7 +853,7 @@ func (s *CLISuite) TestWorkflowRetry() { assert.Contains(t, output, "Namespace:") } }). - ToBeRunning + WaitForWorkflow(fixtures.ToBeRunning). WaitForWorkflow(fixtures.Condition(func(wf *wfv1.Workflow) (bool, string) { return wf.Status.AnyActiveSuspendNode(), "suspended node" }), time.Second*90). From a196700146eab24afe6f8f130ab5e9bf3b3fcd71 Mon Sep 17 00:00:00 2001 From: shuangkun Date: Mon, 4 Mar 2024 15:41:29 +0800 Subject: [PATCH 05/26] fix: retry Signed-off-by: shuangkun --- test/e2e/cli_test.go | 1 - workflow/controller/operator.go | 6 +++--- workflow/util/util.go | 11 +++++++++++ 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/test/e2e/cli_test.go b/test/e2e/cli_test.go index 9da05a953f62..54dc4fd517ad 100644 --- a/test/e2e/cli_test.go +++ b/test/e2e/cli_test.go @@ -853,7 +853,6 @@ func (s *CLISuite) TestWorkflowRetry() { assert.Contains(t, output, "Namespace:") } }). - WaitForWorkflow(fixtures.ToBeRunning). WaitForWorkflow(fixtures.Condition(func(wf *wfv1.Workflow) (bool, string) { return wf.Status.AnyActiveSuspendNode(), "suspended node" }), time.Second*90). diff --git a/workflow/controller/operator.go b/workflow/controller/operator.go index 708dcdb733c6..fe4a8e40083f 100644 --- a/workflow/controller/operator.go +++ b/workflow/controller/operator.go @@ -216,7 +216,7 @@ func (woc *wfOperationCtx) operate(ctx context.Context) { // Check whether it is a workflow that requires retry if woc.shouldRetry() { - woc.log.Info("workflow retryed") + woc.log.Info("workflow retried") err := woc.retryWorkflow(ctx) if err != nil { woc.log.WithError(err).Errorf("Retry workflow failed") @@ -3868,8 +3868,7 @@ func (woc *wfOperationCtx) shouldRetry() bool { return false } if woc.IsRetried() { - _, quit := woc.controller.podCleanupQueue.Get() - if quit { + if woc.controller.podCleanupQueue.Len() == 0 { woc.wf.Status.RetryStatus = pointer.BoolPtr(true) woc.updated = true return false @@ -3895,6 +3894,7 @@ func (woc *wfOperationCtx) retryWorkflow(ctx context.Context) error { for _, podName := range podsToDelete { woc.controller.queuePodForCleanup(wf.Namespace, podName, deletePod) } + woc.wf = wf woc.wf.Status.RetryStatus = pointer.BoolPtr(true) woc.updated = true return nil diff --git a/workflow/util/util.go b/workflow/util/util.go index 5847e5cf22c6..d18537d57b55 100644 --- a/workflow/util/util.go +++ b/workflow/util/util.go @@ -829,6 +829,16 @@ func resetConnectedParentGroupNodes(oldWF *wfv1.Workflow, newWF *wfv1.Workflow, // RteryWorkflow retry a workflow by setting spec.retry and controller will retry it. func RetryWorkflow(ctx context.Context, wf *wfv1.Workflow, restartSuccessful bool, nodeFieldSelector string, parameters []string) (*wfv1.Workflow, error) { + switch wf.Status.Phase { + case wfv1.WorkflowFailed, wfv1.WorkflowError: + case wfv1.WorkflowSucceeded: + if !(restartSuccessful && len(nodeFieldSelector) > 0) { + return nil, errors.Errorf(errors.CodeBadRequest, "To retry a succeeded workflow, set the options restartSuccessful and nodeFieldSelector") + } + default: + return nil, errors.Errorf(errors.CodeBadRequest, "Cannot retry a workflow in phase %s", wf.Status.Phase) + } + wf.Spec.Retry = &wfv1.RetryConfig{ Retried: false, RestartSuccessful: restartSuccessful, @@ -836,6 +846,7 @@ func RetryWorkflow(ctx context.Context, wf *wfv1.Workflow, restartSuccessful boo Parameters: parameters, } + delete(wf.Labels, common.LabelKeyCompleted) return wf, nil } From 33a6f61ffb8f40f53cd5471da37ec0aed0368feb Mon Sep 17 00:00:00 2001 From: shuangkun Date: Mon, 4 Mar 2024 16:10:40 +0800 Subject: [PATCH 06/26] fix: lint Signed-off-by: shuangkun --- server/workflow/workflow_server.go | 5 +++-- workflow/util/util.go | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/server/workflow/workflow_server.go b/server/workflow/workflow_server.go index 986943161c40..338dc75e60e4 100644 --- a/server/workflow/workflow_server.go +++ b/server/workflow/workflow_server.go @@ -4,15 +4,16 @@ import ( "context" "encoding/json" "fmt" + "io" + "sort" + log "github.com/sirupsen/logrus" "google.golang.org/grpc/codes" "google.golang.org/grpc/metadata" - "io" corev1 "k8s.io/api/core/v1" apierr "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" - "sort" "github.com/argoproj/argo-workflows/v3/errors" "github.com/argoproj/argo-workflows/v3/persist/sqldb" diff --git a/workflow/util/util.go b/workflow/util/util.go index d18537d57b55..17dc41076b2d 100644 --- a/workflow/util/util.go +++ b/workflow/util/util.go @@ -840,10 +840,10 @@ func RetryWorkflow(ctx context.Context, wf *wfv1.Workflow, restartSuccessful boo } wf.Spec.Retry = &wfv1.RetryConfig{ - Retried: false, + Retried: false, RestartSuccessful: restartSuccessful, NodeFieldSelector: nodeFieldSelector, - Parameters: parameters, + Parameters: parameters, } delete(wf.Labels, common.LabelKeyCompleted) From ba01622473c7066f8100f98e9ebcd63b1620f90c Mon Sep 17 00:00:00 2001 From: shuangkun Date: Mon, 4 Mar 2024 16:34:21 +0800 Subject: [PATCH 07/26] fix: delete argo server pod delete rbac Signed-off-by: shuangkun --- .../cluster-install/argo-server-rbac/argo-server-clusterole.yaml | 1 - .../namespace-install/argo-server-rbac/argo-server-role.yaml | 1 - manifests/quick-start-minimal.yaml | 1 - manifests/quick-start-mysql.yaml | 1 - manifests/quick-start-postgres.yaml | 1 - 5 files changed, 5 deletions(-) diff --git a/manifests/cluster-install/argo-server-rbac/argo-server-clusterole.yaml b/manifests/cluster-install/argo-server-rbac/argo-server-clusterole.yaml index 0882c9a7b9c9..ed22044ae989 100644 --- a/manifests/cluster-install/argo-server-rbac/argo-server-clusterole.yaml +++ b/manifests/cluster-install/argo-server-rbac/argo-server-clusterole.yaml @@ -28,7 +28,6 @@ rules: - get - list - watch - - delete - apiGroups: - "" resources: diff --git a/manifests/namespace-install/argo-server-rbac/argo-server-role.yaml b/manifests/namespace-install/argo-server-rbac/argo-server-role.yaml index 314177a3ef8e..f0b091aee49f 100644 --- a/manifests/namespace-install/argo-server-rbac/argo-server-role.yaml +++ b/manifests/namespace-install/argo-server-rbac/argo-server-role.yaml @@ -28,7 +28,6 @@ rules: - get - list - watch - - delete - apiGroups: - "" resources: diff --git a/manifests/quick-start-minimal.yaml b/manifests/quick-start-minimal.yaml index be718d5116f0..f6ca36da45b9 100644 --- a/manifests/quick-start-minimal.yaml +++ b/manifests/quick-start-minimal.yaml @@ -1314,7 +1314,6 @@ rules: - get - list - watch - - delete - apiGroups: - "" resources: diff --git a/manifests/quick-start-mysql.yaml b/manifests/quick-start-mysql.yaml index 6618b9b23d96..5935d213c9e6 100644 --- a/manifests/quick-start-mysql.yaml +++ b/manifests/quick-start-mysql.yaml @@ -1314,7 +1314,6 @@ rules: - get - list - watch - - delete - apiGroups: - "" resources: diff --git a/manifests/quick-start-postgres.yaml b/manifests/quick-start-postgres.yaml index 0f7b46b96d3c..ccd9140ec6b3 100644 --- a/manifests/quick-start-postgres.yaml +++ b/manifests/quick-start-postgres.yaml @@ -1314,7 +1314,6 @@ rules: - get - list - watch - - delete - apiGroups: - "" resources: From 8feee6deed5bfab3765793cf079707d0fce44719 Mon Sep 17 00:00:00 2001 From: shuangkun Date: Sat, 30 Mar 2024 11:41:59 +0800 Subject: [PATCH 08/26] fix: comments Signed-off-by: shuangkun --- server/workflow/workflow_server.go | 2 +- workflow/controller/operator.go | 7 ++----- workflow/util/util.go | 14 ++------------ workflow/util/util_test.go | 9 ++++----- 4 files changed, 9 insertions(+), 23 deletions(-) diff --git a/server/workflow/workflow_server.go b/server/workflow/workflow_server.go index 338dc75e60e4..b5b1ceaed9c4 100644 --- a/server/workflow/workflow_server.go +++ b/server/workflow/workflow_server.go @@ -383,7 +383,7 @@ func (s *workflowServer) RetryWorkflow(ctx context.Context, req *workflowpkg.Wor return nil, sutils.ToStatusError(err, codes.InvalidArgument) } - wf, err = util.RetryWorkflow(ctx, wf, req.RestartSuccessful, req.NodeFieldSelector, req.Parameters) + wf, err = util.MarkWorkflowForRetry(ctx, wf, req.RestartSuccessful, req.NodeFieldSelector, req.Parameters) if err != nil { return nil, sutils.ToStatusError(err, codes.Internal) } diff --git a/workflow/controller/operator.go b/workflow/controller/operator.go index fe4a8e40083f..a6cb2c2f6d84 100644 --- a/workflow/controller/operator.go +++ b/workflow/controller/operator.go @@ -3868,11 +3868,8 @@ func (woc *wfOperationCtx) shouldRetry() bool { return false } if woc.IsRetried() { - if woc.controller.podCleanupQueue.Len() == 0 { - woc.wf.Status.RetryStatus = pointer.BoolPtr(true) - woc.updated = true - return false - } + // TODO make sure all pod in podsToDelete deleted, avoid "create pod exists" + return false } return true } diff --git a/workflow/util/util.go b/workflow/util/util.go index 17dc41076b2d..1c8a2f27611d 100644 --- a/workflow/util/util.go +++ b/workflow/util/util.go @@ -827,8 +827,8 @@ func resetConnectedParentGroupNodes(oldWF *wfv1.Workflow, newWF *wfv1.Workflow, return newWF, resetParentGroupNodes } -// RteryWorkflow retry a workflow by setting spec.retry and controller will retry it. -func RetryWorkflow(ctx context.Context, wf *wfv1.Workflow, restartSuccessful bool, nodeFieldSelector string, parameters []string) (*wfv1.Workflow, error) { +// MarkWorkflowForRetry mark a workflow's spec.retry and controller will retry it. +func MarkWorkflowForRetry(ctx context.Context, wf *wfv1.Workflow, restartSuccessful bool, nodeFieldSelector string, parameters []string) (*wfv1.Workflow, error) { switch wf.Status.Phase { case wfv1.WorkflowFailed, wfv1.WorkflowError: case wfv1.WorkflowSucceeded: @@ -852,19 +852,9 @@ func RetryWorkflow(ctx context.Context, wf *wfv1.Workflow, restartSuccessful boo // FormulateRetryWorkflow formulates a previous workflow to be retried, deleting all failed steps as well as the onExit node (and children) func FormulateRetryWorkflow(ctx context.Context, wf *wfv1.Workflow, restartSuccessful bool, nodeFieldSelector string, parameters []string) (*wfv1.Workflow, []string, error) { - switch wf.Status.Phase { - case wfv1.WorkflowFailed, wfv1.WorkflowError: - case wfv1.WorkflowSucceeded: - if !(restartSuccessful && len(nodeFieldSelector) > 0) { - return nil, nil, errors.Errorf(errors.CodeBadRequest, "To retry a succeeded workflow, set the options restartSuccessful and nodeFieldSelector") - } - default: - return nil, nil, errors.Errorf(errors.CodeBadRequest, "Cannot retry a workflow in phase %s", wf.Status.Phase) - } newWF := wf.DeepCopy() // Delete/reset fields which indicate workflow completed - delete(newWF.Labels, common.LabelKeyCompleted) delete(newWF.Labels, common.LabelKeyWorkflowArchivingStatus) newWF.Status.Conditions.UpsertCondition(wfv1.Condition{Status: metav1.ConditionFalse, Type: wfv1.ConditionTypeCompleted}) newWF.ObjectMeta.Labels[common.LabelKeyPhase] = string(wfv1.NodeRunning) diff --git a/workflow/util/util_test.go b/workflow/util/util_test.go index 0328b37d04ab..c3bd11c350dc 100644 --- a/workflow/util/util_test.go +++ b/workflow/util/util_test.go @@ -1091,7 +1091,6 @@ func TestFormulateRetryWorkflow(t *testing.T) { assert.Equal(t, wfv1.WorkflowRunning, wf.Status.Phase) assert.Equal(t, metav1.Time{}, wf.Status.FinishedAt) assert.True(t, wf.Status.StartedAt.After(createdTime.Time)) - assert.NotContains(t, wf.Labels, common.LabelKeyCompleted) assert.NotContains(t, wf.Labels, common.LabelKeyWorkflowArchivingStatus) for _, node := range wf.Status.Nodes { switch node.Phase { @@ -1296,8 +1295,8 @@ func TestFormulateRetryWorkflow(t *testing.T) { } _, err := wfClient.Create(ctx, wf, metav1.CreateOptions{}) assert.NoError(t, err) - _, _, err = FormulateRetryWorkflow(ctx, wf, false, "", nil) - assert.Error(t, err) + //_, _, err = FormulateRetryWorkflow(ctx, wf, false, "", nil) + assert.Nil(t, err) }) t.Run("Fail on pending workflow", func(t *testing.T) { @@ -1314,7 +1313,7 @@ func TestFormulateRetryWorkflow(t *testing.T) { _, err := wfClient.Create(ctx, wf, metav1.CreateOptions{}) assert.NoError(t, err) _, _, err = FormulateRetryWorkflow(ctx, wf, false, "", nil) - assert.Error(t, err) + assert.Nil(t, err) }) t.Run("Fail on successful workflow without restartSuccessful and nodeFieldSelector", func(t *testing.T) { @@ -1334,7 +1333,7 @@ func TestFormulateRetryWorkflow(t *testing.T) { _, err := wfClient.Create(ctx, wf, metav1.CreateOptions{}) assert.NoError(t, err) _, _, err = FormulateRetryWorkflow(ctx, wf, false, "", nil) - assert.Error(t, err) + assert.Nil(t, err) }) t.Run("Retry successful workflow with restartSuccessful and nodeFieldSelector", func(t *testing.T) { From 4cb1f83547ae91e15052889e856d7f883d1161fa Mon Sep 17 00:00:00 2001 From: shuangkun Date: Sat, 30 Mar 2024 11:58:35 +0800 Subject: [PATCH 09/26] fix: comments Signed-off-by: shuangkun --- workflow/controller/operator.go | 1 + 1 file changed, 1 insertion(+) diff --git a/workflow/controller/operator.go b/workflow/controller/operator.go index a6cb2c2f6d84..de3d3d82c393 100644 --- a/workflow/controller/operator.go +++ b/workflow/controller/operator.go @@ -2403,6 +2403,7 @@ func (woc *wfOperationCtx) markWorkflowPhase(ctx context.Context, phase wfv1.Wor woc.log.Info("Doesn't match with archive label selector. Skipping Archive") } } + woc.wf.Status.RetryStatus = nil woc.updated = true woc.wf.Status.RetryStatus = nil woc.controller.queuePodForCleanup(woc.wf.Namespace, woc.getAgentPodName(), deletePod) From 7d53e3346915d382ebbee4ce69609e971f00c9c6 Mon Sep 17 00:00:00 2001 From: shuangkun Date: Sat, 30 Mar 2024 12:00:08 +0800 Subject: [PATCH 10/26] fix: comments Signed-off-by: shuangkun --- workflow/controller/operator.go | 1 - 1 file changed, 1 deletion(-) diff --git a/workflow/controller/operator.go b/workflow/controller/operator.go index de3d3d82c393..a6cb2c2f6d84 100644 --- a/workflow/controller/operator.go +++ b/workflow/controller/operator.go @@ -2403,7 +2403,6 @@ func (woc *wfOperationCtx) markWorkflowPhase(ctx context.Context, phase wfv1.Wor woc.log.Info("Doesn't match with archive label selector. Skipping Archive") } } - woc.wf.Status.RetryStatus = nil woc.updated = true woc.wf.Status.RetryStatus = nil woc.controller.queuePodForCleanup(woc.wf.Namespace, woc.getAgentPodName(), deletePod) From 7b0dc535c5e3d994c127040d7713ad93ee06218b Mon Sep 17 00:00:00 2001 From: shuangkun Date: Sat, 30 Mar 2024 15:07:15 +0800 Subject: [PATCH 11/26] fix: bool pointer Signed-off-by: shuangkun --- workflow/controller/operator.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflow/controller/operator.go b/workflow/controller/operator.go index a6cb2c2f6d84..a4a1c46b376d 100644 --- a/workflow/controller/operator.go +++ b/workflow/controller/operator.go @@ -3892,7 +3892,7 @@ func (woc *wfOperationCtx) retryWorkflow(ctx context.Context) error { woc.controller.queuePodForCleanup(wf.Namespace, podName, deletePod) } woc.wf = wf - woc.wf.Status.RetryStatus = pointer.BoolPtr(true) + woc.wf.Status.RetryStatus = pointer.Bool(true) woc.updated = true return nil } From 8fbb3bfa6ce099e291cc3ad6d7e590426a71e76f Mon Sep 17 00:00:00 2001 From: shuangkun Date: Mon, 8 Apr 2024 20:37:25 +0800 Subject: [PATCH 12/26] fix: test Signed-off-by: shuangkun --- api/jsonschema/schema.json | 4 - api/openapi-spec/swagger.json | 4 - .../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 | 1425 ++++++++--------- pkg/apis/workflow/v1alpha1/generated.proto | 9 +- .../workflow/v1alpha1/openapi_generated.go | 7 - pkg/apis/workflow/v1alpha1/workflow_types.go | 8 +- .../archived_workflow_server.go | 9 +- workflow/controller/operator.go | 1 + workflow/util/util.go | 1 - 13 files changed, 708 insertions(+), 770 deletions(-) diff --git a/api/jsonschema/schema.json b/api/jsonschema/schema.json index 074e29c68df1..6629b8025b33 100644 --- a/api/jsonschema/schema.json +++ b/api/jsonschema/schema.json @@ -6510,10 +6510,6 @@ "restartSuccessful": { "description": "RestartSuccessful defines whether or not to retry succeeded node", "type": "boolean" - }, - "retried": { - "description": "Retried tracks whether or not this workflow was retried by RetryConfig", - "type": "boolean" } }, "type": "object" diff --git a/api/openapi-spec/swagger.json b/api/openapi-spec/swagger.json index 1076d6de6134..4a10c88b8d5b 100644 --- a/api/openapi-spec/swagger.json +++ b/api/openapi-spec/swagger.json @@ -10451,10 +10451,6 @@ "restartSuccessful": { "description": "RestartSuccessful defines whether or not to retry succeeded node", "type": "boolean" - }, - "retried": { - "description": "Retried tracks whether or not this workflow was retried by RetryConfig", - "type": "boolean" } } }, diff --git a/manifests/base/crds/full/argoproj.io_clusterworkflowtemplates.yaml b/manifests/base/crds/full/argoproj.io_clusterworkflowtemplates.yaml index 1fb1e20991b7..ed07fea38a86 100644 --- a/manifests/base/crds/full/argoproj.io_clusterworkflowtemplates.yaml +++ b/manifests/base/crds/full/argoproj.io_clusterworkflowtemplates.yaml @@ -1839,8 +1839,6 @@ spec: type: array restartSuccessful: type: boolean - retried: - type: boolean type: object retryStrategy: properties: diff --git a/manifests/base/crds/full/argoproj.io_cronworkflows.yaml b/manifests/base/crds/full/argoproj.io_cronworkflows.yaml index 41ae91ba874e..10f9ac488d93 100644 --- a/manifests/base/crds/full/argoproj.io_cronworkflows.yaml +++ b/manifests/base/crds/full/argoproj.io_cronworkflows.yaml @@ -1871,8 +1871,6 @@ spec: type: array restartSuccessful: type: boolean - retried: - type: boolean type: object retryStrategy: properties: diff --git a/manifests/base/crds/full/argoproj.io_workflows.yaml b/manifests/base/crds/full/argoproj.io_workflows.yaml index d4366ebac64a..453989a1b952 100644 --- a/manifests/base/crds/full/argoproj.io_workflows.yaml +++ b/manifests/base/crds/full/argoproj.io_workflows.yaml @@ -1853,8 +1853,6 @@ spec: type: array restartSuccessful: type: boolean - retried: - type: boolean type: object retryStrategy: properties: @@ -33069,8 +33067,6 @@ spec: type: array restartSuccessful: type: boolean - retried: - type: boolean type: object retryStrategy: properties: diff --git a/manifests/base/crds/full/argoproj.io_workflowtemplates.yaml b/manifests/base/crds/full/argoproj.io_workflowtemplates.yaml index be2797d1e7a2..66bae9a35074 100644 --- a/manifests/base/crds/full/argoproj.io_workflowtemplates.yaml +++ b/manifests/base/crds/full/argoproj.io_workflowtemplates.yaml @@ -1838,8 +1838,6 @@ spec: type: array restartSuccessful: type: boolean - retried: - type: boolean type: object retryStrategy: properties: diff --git a/pkg/apis/workflow/v1alpha1/generated.pb.go b/pkg/apis/workflow/v1alpha1/generated.pb.go index 5bad5a50090e..761b6e2d0358 100644 --- a/pkg/apis/workflow/v1alpha1/generated.pb.go +++ b/pkg/apis/workflow/v1alpha1/generated.pb.go @@ -4477,705 +4477,704 @@ func init() { } var fileDescriptor_724696e352c3df5f = []byte{ - // 11162 bytes of a gzipped FileDescriptorProto + // 11152 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, 0x5b, 0x00, 0x87, 0xeb, 0x7b, 0x2d, 0x71, 0xe4, 0x81, 0x1e, - 0x8a, 0x0c, 0x69, 0x51, 0x38, 0xf3, 0x28, 0x25, 0x8c, 0x94, 0x48, 0xc2, 0xe3, 0x80, 0x3b, 0x02, - 0x38, 0x80, 0xbd, 0x38, 0x9e, 0x49, 0xd1, 0x92, 0x06, 0xbb, 0x8d, 0xdd, 0x21, 0x76, 0x67, 0x96, - 0x33, 0xb3, 0xb8, 0x03, 0x1f, 0x92, 0x42, 0xeb, 0x19, 0xcb, 0x56, 0x2c, 0x4b, 0xb2, 0xa4, 0x24, - 0x55, 0x8a, 0x22, 0x25, 0x2c, 0xd9, 0x15, 0x97, 0xfd, 0x2b, 0x65, 0x57, 0xfe, 0xa4, 0x52, 0x8e, - 0x52, 0x4e, 0x55, 0xe4, 0x8a, 0x52, 0xd2, 0x0f, 0x19, 0x8c, 0x2e, 0x89, 0x7e, 0x24, 0xa5, 0xaa, - 0x44, 0x15, 0x3b, 0xf6, 0xe5, 0x51, 0xa9, 0x7e, 0x4e, 0xf7, 0xec, 0x2c, 0x6e, 0x71, 0xd7, 0xc0, + 0x79, 0x18, 0x67, 0x81, 0x05, 0xb0, 0x1f, 0x1e, 0x87, 0xeb, 0x7b, 0x2d, 0x71, 0xe4, 0x81, 0x1e, + 0x8a, 0x0c, 0x69, 0x51, 0x38, 0xf3, 0x28, 0x25, 0x8c, 0x94, 0x48, 0xc2, 0xe3, 0x80, 0x3b, 0xe2, + 0x70, 0x00, 0x7b, 0x71, 0x3c, 0x93, 0xa2, 0x25, 0x0d, 0x76, 0x1b, 0xbb, 0x43, 0xec, 0xce, 0x2c, + 0x67, 0x66, 0x71, 0x07, 0x3e, 0x24, 0x85, 0xd6, 0x33, 0x96, 0xad, 0x58, 0x96, 0x64, 0x49, 0x49, + 0xaa, 0x14, 0x45, 0x4a, 0x58, 0xb2, 0x2b, 0x2e, 0xfb, 0x57, 0xca, 0xae, 0xfc, 0x49, 0xa5, 0x1c, + 0xa5, 0x9c, 0xaa, 0xc8, 0x15, 0xa5, 0xa4, 0x1f, 0x32, 0x18, 0x5d, 0x12, 0xfd, 0x48, 0x4a, 0x55, + 0x89, 0x2a, 0x76, 0xec, 0xcb, 0xa3, 0x52, 0xfd, 0x9c, 0xee, 0xd9, 0x59, 0xdc, 0x02, 0xd7, 0xc0, 0xb1, 0xec, 0x5f, 0xc0, 0x7e, 0xdd, 0xfd, 0x7d, 0xdd, 0x3d, 0xdd, 0x5f, 0x7f, 0xaf, 0xfe, 0x1a, - 0xd6, 0xeb, 0x7e, 0xd2, 0xe8, 0x6c, 0xce, 0x54, 0xc3, 0xd6, 0x79, 0x2f, 0xaa, 0x87, 0xed, 0x28, - 0x7c, 0x89, 0xfd, 0xf3, 0xae, 0xeb, 0x61, 0xb4, 0xbd, 0xd5, 0x0c, 0xaf, 0xc7, 0xe7, 0x77, 0x9e, - 0x3a, 0xdf, 0xde, 0xae, 0x9f, 0xf7, 0xda, 0x7e, 0x7c, 0x5e, 0x42, 0xcf, 0xef, 0x3c, 0xe9, 0x35, + 0xd6, 0xea, 0x7e, 0xd2, 0xe8, 0x6c, 0xcc, 0x54, 0xc3, 0xd6, 0x79, 0x2f, 0xaa, 0x87, 0xed, 0x28, + 0x7c, 0x89, 0xfd, 0xf3, 0xae, 0x1b, 0x61, 0xb4, 0xb5, 0xd9, 0x0c, 0x6f, 0xc4, 0xe7, 0xb7, 0x9f, + 0x3a, 0xdf, 0xde, 0xaa, 0x9f, 0xf7, 0xda, 0x7e, 0x7c, 0x5e, 0x42, 0xcf, 0x6f, 0x3f, 0xe9, 0x35, 0xdb, 0x0d, 0xef, 0xc9, 0xf3, 0x75, 0x12, 0x90, 0xc8, 0x4b, 0x48, 0x6d, 0xa6, 0x1d, 0x85, 0x49, - 0x88, 0x3e, 0x98, 0x62, 0x9c, 0x91, 0x18, 0xd9, 0x3f, 0x1f, 0x51, 0x18, 0x67, 0x76, 0x9e, 0x9a, - 0x69, 0x6f, 0xd7, 0x67, 0x28, 0xc6, 0x19, 0x09, 0x9d, 0x91, 0x18, 0xa7, 0xde, 0xa5, 0xf5, 0xa9, - 0x1e, 0xd6, 0xc3, 0xf3, 0x0c, 0xf1, 0x66, 0x67, 0x8b, 0xfd, 0x62, 0x3f, 0xd8, 0x7f, 0x9c, 0xe0, - 0x94, 0xbb, 0xfd, 0x74, 0x3c, 0xe3, 0x87, 0xb4, 0x7f, 0xe7, 0xab, 0x61, 0x44, 0xce, 0xef, 0x74, - 0x75, 0x6a, 0xea, 0x1d, 0x5a, 0x9d, 0x76, 0xd8, 0xf4, 0xab, 0xbb, 0x79, 0xb5, 0xde, 0x9d, 0xd6, - 0x6a, 0x79, 0xd5, 0x86, 0x1f, 0x90, 0x68, 0x37, 0x1d, 0x7a, 0x8b, 0x24, 0x5e, 0x5e, 0xab, 0xf3, - 0xbd, 0x5a, 0x45, 0x9d, 0x20, 0xf1, 0x5b, 0xa4, 0xab, 0xc1, 0x5f, 0xbf, 0x5d, 0x83, 0xb8, 0xda, + 0x88, 0x3e, 0x98, 0x62, 0x9c, 0x91, 0x18, 0xd9, 0x3f, 0x1f, 0x51, 0x18, 0x67, 0xb6, 0x9f, 0x9a, + 0x69, 0x6f, 0xd5, 0x67, 0x28, 0xc6, 0x19, 0x09, 0x9d, 0x91, 0x18, 0xa7, 0xde, 0xa5, 0xf5, 0xa9, + 0x1e, 0xd6, 0xc3, 0xf3, 0x0c, 0xf1, 0x46, 0x67, 0x93, 0xfd, 0x62, 0x3f, 0xd8, 0x7f, 0x9c, 0xe0, + 0x94, 0xbb, 0xf5, 0x74, 0x3c, 0xe3, 0x87, 0xb4, 0x7f, 0xe7, 0xab, 0x61, 0x44, 0xce, 0x6f, 0x77, + 0x75, 0x6a, 0xea, 0x1d, 0x5a, 0x9d, 0x76, 0xd8, 0xf4, 0xab, 0x3b, 0x79, 0xb5, 0xde, 0x9d, 0xd6, + 0x6a, 0x79, 0xd5, 0x86, 0x1f, 0x90, 0x68, 0x27, 0x1d, 0x7a, 0x8b, 0x24, 0x5e, 0x5e, 0xab, 0xf3, + 0xbd, 0x5a, 0x45, 0x9d, 0x20, 0xf1, 0x5b, 0xa4, 0xab, 0xc1, 0x5f, 0xbf, 0x53, 0x83, 0xb8, 0xda, 0x20, 0x2d, 0xaf, 0xab, 0xdd, 0x53, 0xbd, 0xda, 0x75, 0x12, 0xbf, 0x79, 0xde, 0x0f, 0x92, 0x38, - 0x89, 0xb2, 0x8d, 0xdc, 0x8b, 0x30, 0x34, 0xdb, 0x0a, 0x3b, 0x41, 0x82, 0xde, 0x07, 0xc5, 0x1d, - 0xaf, 0xd9, 0x21, 0x65, 0xe7, 0x21, 0xe7, 0xb1, 0xd1, 0xb9, 0x47, 0xbe, 0xbb, 0x37, 0x7d, 0xdf, - 0xcd, 0xbd, 0xe9, 0xe2, 0x73, 0x14, 0x78, 0x6b, 0x6f, 0xfa, 0x24, 0x09, 0xaa, 0x61, 0xcd, 0x0f, - 0xea, 0xe7, 0x5f, 0x8a, 0xc3, 0x60, 0xe6, 0x4a, 0xa7, 0xb5, 0x49, 0x22, 0xcc, 0xdb, 0xb8, 0xff, - 0xbe, 0x00, 0xc7, 0x66, 0xa3, 0x6a, 0xc3, 0xdf, 0x21, 0x95, 0x84, 0xe2, 0xaf, 0xef, 0xa2, 0x06, - 0x0c, 0x24, 0x5e, 0xc4, 0xd0, 0x95, 0x2e, 0xac, 0xce, 0xdc, 0xed, 0x77, 0x9f, 0xd9, 0xf0, 0x22, - 0x89, 0x7b, 0x6e, 0xf8, 0xe6, 0xde, 0xf4, 0xc0, 0x86, 0x17, 0x61, 0x4a, 0x02, 0x35, 0x61, 0x30, - 0x08, 0x03, 0x52, 0x2e, 0x30, 0x52, 0x57, 0xee, 0x9e, 0xd4, 0x95, 0x30, 0x50, 0xe3, 0x98, 0x1b, - 0xb9, 0xb9, 0x37, 0x3d, 0x48, 0x21, 0x98, 0x51, 0xa1, 0xe3, 0x7a, 0xc5, 0x6f, 0x97, 0x07, 0x6c, - 0x8d, 0xeb, 0x05, 0xbf, 0x6d, 0x8e, 0xeb, 0x05, 0xbf, 0x8d, 0x29, 0x09, 0xf7, 0x73, 0x05, 0x18, - 0x9d, 0x8d, 0xea, 0x9d, 0x16, 0x09, 0x92, 0x18, 0x7d, 0x1c, 0xa0, 0xed, 0x45, 0x5e, 0x8b, 0x24, - 0x24, 0x8a, 0xcb, 0xce, 0x43, 0x03, 0x8f, 0x95, 0x2e, 0x2c, 0xdf, 0x3d, 0xf9, 0x75, 0x89, 0x73, - 0x0e, 0x89, 0x4f, 0x0e, 0x0a, 0x14, 0x63, 0x8d, 0x24, 0x7a, 0x15, 0x46, 0xbd, 0x28, 0xf1, 0xb7, - 0xbc, 0x6a, 0x12, 0x97, 0x0b, 0x8c, 0xfe, 0x33, 0x77, 0x4f, 0x7f, 0x56, 0xa0, 0x9c, 0x3b, 0x2e, - 0xc8, 0x8f, 0x4a, 0x48, 0x8c, 0x53, 0x7a, 0xee, 0xef, 0x0f, 0x42, 0x69, 0x36, 0x4a, 0x96, 0xe6, - 0x2b, 0x89, 0x97, 0x74, 0x62, 0xf4, 0x47, 0x0e, 0x9c, 0x88, 0xf9, 0xb4, 0xf9, 0x24, 0x5e, 0x8f, - 0xc2, 0x2a, 0x89, 0x63, 0x52, 0x13, 0xf3, 0xb2, 0x65, 0xa5, 0x5f, 0x92, 0xd8, 0x4c, 0xa5, 0x9b, - 0xd0, 0xc5, 0x20, 0x89, 0x76, 0xe7, 0x9e, 0x14, 0x7d, 0x3e, 0x91, 0x53, 0xe3, 0x8d, 0xb7, 0xa6, - 0x91, 0x1c, 0x0a, 0xc5, 0xc4, 0x3f, 0x31, 0xce, 0xeb, 0x35, 0xfa, 0x9a, 0x03, 0x63, 0xed, 0xb0, - 0x16, 0x63, 0x52, 0x0d, 0x3b, 0x6d, 0x52, 0x13, 0xd3, 0xfb, 0x11, 0xbb, 0xc3, 0x58, 0xd7, 0x28, - 0xf0, 0xfe, 0x9f, 0x14, 0xfd, 0x1f, 0xd3, 0x8b, 0xb0, 0xd1, 0x15, 0xf4, 0x34, 0x8c, 0x05, 0x61, - 0x52, 0x69, 0x93, 0xaa, 0xbf, 0xe5, 0x93, 0x1a, 0x5b, 0xf8, 0x23, 0x69, 0xcb, 0x2b, 0x5a, 0x19, - 0x36, 0x6a, 0x4e, 0x2d, 0x42, 0xb9, 0xd7, 0xcc, 0xa1, 0x49, 0x18, 0xd8, 0x26, 0xbb, 0x9c, 0xd9, - 0x60, 0xfa, 0x2f, 0x3a, 0x29, 0x19, 0x10, 0xdd, 0xc6, 0x23, 0x82, 0xb3, 0xbc, 0xb7, 0xf0, 0xb4, - 0x33, 0xf5, 0x01, 0x38, 0xde, 0xd5, 0xf5, 0x83, 0x20, 0x70, 0xbf, 0x37, 0x04, 0x23, 0xf2, 0x53, - 0xa0, 0x87, 0x60, 0x30, 0xf0, 0x5a, 0x92, 0xcf, 0x8d, 0x89, 0x71, 0x0c, 0x5e, 0xf1, 0x5a, 0x74, - 0x87, 0x7b, 0x2d, 0x42, 0x6b, 0xb4, 0xbd, 0xa4, 0xc1, 0xf0, 0x68, 0x35, 0xd6, 0xbd, 0xa4, 0x81, - 0x59, 0x09, 0x7a, 0x00, 0x06, 0x5b, 0x61, 0x8d, 0xb0, 0xb9, 0x28, 0x72, 0x0e, 0xb1, 0x1a, 0xd6, - 0x08, 0x66, 0x50, 0xda, 0x7e, 0x2b, 0x0a, 0x5b, 0xe5, 0x41, 0xb3, 0xfd, 0x62, 0x14, 0xb6, 0x30, - 0x2b, 0x41, 0x5f, 0x75, 0x60, 0x52, 0xae, 0xed, 0x95, 0xb0, 0xea, 0x25, 0x7e, 0x18, 0x94, 0x8b, + 0x89, 0xb2, 0x8d, 0xdc, 0x8b, 0x30, 0x34, 0xdb, 0x0a, 0x3b, 0x41, 0x82, 0xde, 0x07, 0xc5, 0x6d, + 0xaf, 0xd9, 0x21, 0x65, 0xe7, 0x21, 0xe7, 0xb1, 0xd2, 0xdc, 0x23, 0xdf, 0xdd, 0x9d, 0xbe, 0xef, + 0xd6, 0xee, 0x74, 0xf1, 0x39, 0x0a, 0xbc, 0xbd, 0x3b, 0x7d, 0x92, 0x04, 0xd5, 0xb0, 0xe6, 0x07, + 0xf5, 0xf3, 0x2f, 0xc5, 0x61, 0x30, 0x73, 0xb5, 0xd3, 0xda, 0x20, 0x11, 0xe6, 0x6d, 0xdc, 0x7f, + 0x5f, 0x80, 0x63, 0xb3, 0x51, 0xb5, 0xe1, 0x6f, 0x93, 0x4a, 0x42, 0xf1, 0xd7, 0x77, 0x50, 0x03, + 0x06, 0x12, 0x2f, 0x62, 0xe8, 0x46, 0x2f, 0xac, 0xcc, 0xdc, 0xed, 0x77, 0x9f, 0x59, 0xf7, 0x22, + 0x89, 0x7b, 0x6e, 0xf8, 0xd6, 0xee, 0xf4, 0xc0, 0xba, 0x17, 0x61, 0x4a, 0x02, 0x35, 0x61, 0x30, + 0x08, 0x03, 0x52, 0x2e, 0x30, 0x52, 0x57, 0xef, 0x9e, 0xd4, 0xd5, 0x30, 0x50, 0xe3, 0x98, 0x1b, + 0xb9, 0xb5, 0x3b, 0x3d, 0x48, 0x21, 0x98, 0x51, 0xa1, 0xe3, 0x7a, 0xc5, 0x6f, 0x97, 0x07, 0x6c, + 0x8d, 0xeb, 0x05, 0xbf, 0x6d, 0x8e, 0xeb, 0x05, 0xbf, 0x8d, 0x29, 0x09, 0xf7, 0x73, 0x05, 0x28, + 0xcd, 0x46, 0xf5, 0x4e, 0x8b, 0x04, 0x49, 0x8c, 0x3e, 0x0e, 0xd0, 0xf6, 0x22, 0xaf, 0x45, 0x12, + 0x12, 0xc5, 0x65, 0xe7, 0xa1, 0x81, 0xc7, 0x46, 0x2f, 0x2c, 0xdf, 0x3d, 0xf9, 0x35, 0x89, 0x73, + 0x0e, 0x89, 0x4f, 0x0e, 0x0a, 0x14, 0x63, 0x8d, 0x24, 0x7a, 0x15, 0x4a, 0x5e, 0x94, 0xf8, 0x9b, + 0x5e, 0x35, 0x89, 0xcb, 0x05, 0x46, 0xff, 0x99, 0xbb, 0xa7, 0x3f, 0x2b, 0x50, 0xce, 0x1d, 0x17, + 0xe4, 0x4b, 0x12, 0x12, 0xe3, 0x94, 0x9e, 0xfb, 0xfb, 0x83, 0x30, 0x3a, 0x1b, 0x25, 0x4b, 0xf3, + 0x95, 0xc4, 0x4b, 0x3a, 0x31, 0xfa, 0x23, 0x07, 0x4e, 0xc4, 0x7c, 0xda, 0x7c, 0x12, 0xaf, 0x45, + 0x61, 0x95, 0xc4, 0x31, 0xa9, 0x89, 0x79, 0xd9, 0xb4, 0xd2, 0x2f, 0x49, 0x6c, 0xa6, 0xd2, 0x4d, + 0xe8, 0x62, 0x90, 0x44, 0x3b, 0x73, 0x4f, 0x8a, 0x3e, 0x9f, 0xc8, 0xa9, 0xf1, 0xc6, 0x5b, 0xd3, + 0x48, 0x0e, 0x85, 0x62, 0xe2, 0x9f, 0x18, 0xe7, 0xf5, 0x1a, 0x7d, 0xcd, 0x81, 0xb1, 0x76, 0x58, + 0x8b, 0x31, 0xa9, 0x86, 0x9d, 0x36, 0xa9, 0x89, 0xe9, 0xfd, 0x88, 0xdd, 0x61, 0xac, 0x69, 0x14, + 0x78, 0xff, 0x4f, 0x8a, 0xfe, 0x8f, 0xe9, 0x45, 0xd8, 0xe8, 0x0a, 0x7a, 0x1a, 0xc6, 0x82, 0x30, + 0xa9, 0xb4, 0x49, 0xd5, 0xdf, 0xf4, 0x49, 0x8d, 0x2d, 0xfc, 0x91, 0xb4, 0xe5, 0x55, 0xad, 0x0c, + 0x1b, 0x35, 0xa7, 0x16, 0xa1, 0xdc, 0x6b, 0xe6, 0xd0, 0x24, 0x0c, 0x6c, 0x91, 0x1d, 0xce, 0x6c, + 0x30, 0xfd, 0x17, 0x9d, 0x94, 0x0c, 0x88, 0x6e, 0xe3, 0x11, 0xc1, 0x59, 0xde, 0x5b, 0x78, 0xda, + 0x99, 0xfa, 0x00, 0x1c, 0xef, 0xea, 0xfa, 0x7e, 0x10, 0xb8, 0xdf, 0x1b, 0x82, 0x11, 0xf9, 0x29, + 0xd0, 0x43, 0x30, 0x18, 0x78, 0x2d, 0xc9, 0xe7, 0xc6, 0xc4, 0x38, 0x06, 0xaf, 0x7a, 0x2d, 0xba, + 0xc3, 0xbd, 0x16, 0xa1, 0x35, 0xda, 0x5e, 0xd2, 0x60, 0x78, 0xb4, 0x1a, 0x6b, 0x5e, 0xd2, 0xc0, + 0xac, 0x04, 0x3d, 0x00, 0x83, 0xad, 0xb0, 0x46, 0xd8, 0x5c, 0x14, 0x39, 0x87, 0x58, 0x09, 0x6b, + 0x04, 0x33, 0x28, 0x6d, 0xbf, 0x19, 0x85, 0xad, 0xf2, 0xa0, 0xd9, 0x7e, 0x31, 0x0a, 0x5b, 0x98, + 0x95, 0xa0, 0xaf, 0x3a, 0x30, 0x29, 0xd7, 0xf6, 0x95, 0xb0, 0xea, 0x25, 0x7e, 0x18, 0x94, 0x8b, 0x8c, 0xa3, 0x60, 0x7b, 0x5b, 0x4a, 0x62, 0x9e, 0x2b, 0x8b, 0x2e, 0x4c, 0x66, 0x4b, 0x70, 0x57, - 0x2f, 0xd0, 0x05, 0x80, 0x7a, 0x33, 0xdc, 0xf4, 0x9a, 0x74, 0x42, 0xca, 0x43, 0x6c, 0x08, 0x8a, - 0x33, 0x2c, 0xa9, 0x12, 0xac, 0xd5, 0x42, 0x37, 0x60, 0xd8, 0xe3, 0xdc, 0xbf, 0x3c, 0xcc, 0x06, - 0xf1, 0xac, 0x8d, 0x41, 0x18, 0xc7, 0xc9, 0x5c, 0xe9, 0xe6, 0xde, 0xf4, 0xb0, 0x00, 0x62, 0x49, - 0x0e, 0x3d, 0x01, 0x23, 0x61, 0x9b, 0xf6, 0xdb, 0x6b, 0x96, 0x47, 0xd8, 0xc2, 0x9c, 0x14, 0x7d, - 0x1d, 0x59, 0x13, 0x70, 0xac, 0x6a, 0xa0, 0xc7, 0x61, 0x38, 0xee, 0x6c, 0xd2, 0xef, 0x58, 0x1e, - 0x65, 0x03, 0x3b, 0x26, 0x2a, 0x0f, 0x57, 0x38, 0x18, 0xcb, 0x72, 0xf4, 0x1e, 0x28, 0x45, 0xa4, - 0xda, 0x89, 0x62, 0x42, 0x3f, 0x6c, 0x19, 0x18, 0xee, 0x13, 0xa2, 0x7a, 0x09, 0xa7, 0x45, 0x58, - 0xaf, 0x87, 0xde, 0x0f, 0x13, 0xf4, 0x03, 0x5f, 0xbc, 0xd1, 0x8e, 0x48, 0x1c, 0xd3, 0xaf, 0x5a, - 0x62, 0x84, 0x4e, 0x8b, 0x96, 0x13, 0x8b, 0x46, 0x29, 0xce, 0xd4, 0x46, 0xaf, 0x01, 0x78, 0x8a, - 0x67, 0x94, 0xc7, 0xd8, 0x64, 0xae, 0xd8, 0x5b, 0x11, 0x4b, 0xf3, 0x73, 0x13, 0xf4, 0x3b, 0xa6, - 0xbf, 0xb1, 0x46, 0x8f, 0xce, 0x4f, 0x8d, 0x34, 0x49, 0x42, 0x6a, 0xe5, 0x71, 0x36, 0x60, 0x35, - 0x3f, 0x0b, 0x1c, 0x8c, 0x65, 0xb9, 0xfb, 0xf7, 0x0b, 0xa0, 0x61, 0x41, 0x73, 0x30, 0x22, 0xf8, - 0x9a, 0xd8, 0x92, 0x73, 0x8f, 0xca, 0xef, 0x20, 0xbf, 0xe0, 0xad, 0xbd, 0x5c, 0x7e, 0xa8, 0xda, - 0xa1, 0xd7, 0xa1, 0xd4, 0x0e, 0x6b, 0xab, 0x24, 0xf1, 0x6a, 0x5e, 0xe2, 0x89, 0xd3, 0xdc, 0xc2, - 0x09, 0x23, 0x31, 0xce, 0x1d, 0xa3, 0x9f, 0x6e, 0x3d, 0x25, 0x81, 0x75, 0x7a, 0xe8, 0x19, 0x40, - 0x31, 0x89, 0x76, 0xfc, 0x2a, 0x99, 0xad, 0x56, 0xa9, 0x48, 0xc4, 0x36, 0xc0, 0x00, 0x1b, 0xcc, - 0x94, 0x18, 0x0c, 0xaa, 0x74, 0xd5, 0xc0, 0x39, 0xad, 0xdc, 0xef, 0x17, 0x60, 0x42, 0x1b, 0x6b, - 0x9b, 0x54, 0xd1, 0x9b, 0x0e, 0x1c, 0x53, 0xc7, 0xd9, 0xdc, 0xee, 0x15, 0xba, 0xaa, 0xf8, 0x61, - 0x45, 0x6c, 0x7e, 0x5f, 0x4a, 0x4b, 0xfd, 0x14, 0x74, 0x38, 0xaf, 0x3f, 0x23, 0xc6, 0x70, 0x2c, - 0x53, 0x8a, 0xb3, 0xdd, 0x9a, 0xfa, 0x8a, 0x03, 0x27, 0xf3, 0x50, 0xe4, 0xf0, 0xdc, 0x86, 0xce, - 0x73, 0xad, 0x32, 0x2f, 0x4a, 0x95, 0x0e, 0x46, 0xe7, 0xe3, 0xff, 0xaf, 0x00, 0x93, 0xfa, 0x12, - 0x62, 0x92, 0xc0, 0xbf, 0x74, 0xe0, 0x94, 0x1c, 0x01, 0x26, 0x71, 0xa7, 0x99, 0x99, 0xde, 0x96, - 0xd5, 0xe9, 0xe5, 0x27, 0xe9, 0x6c, 0x1e, 0x3d, 0x3e, 0xcd, 0x0f, 0x8a, 0x69, 0x3e, 0x95, 0x5b, - 0x07, 0xe7, 0x77, 0x75, 0xea, 0x5b, 0x0e, 0x4c, 0xf5, 0x46, 0x9a, 0x33, 0xf1, 0x6d, 0x73, 0xe2, - 0x5f, 0xb0, 0x37, 0x48, 0x4e, 0x9e, 0x4d, 0x3f, 0x1b, 0xac, 0xfe, 0x01, 0x7e, 0x7b, 0x04, 0xba, - 0xce, 0x10, 0xf4, 0x24, 0x94, 0x04, 0x3b, 0x5e, 0x09, 0xeb, 0x31, 0xeb, 0xe4, 0x08, 0xdf, 0x6b, - 0xb3, 0x29, 0x18, 0xeb, 0x75, 0x50, 0x0d, 0x0a, 0xf1, 0x53, 0xa2, 0xeb, 0x16, 0xd8, 0x5b, 0xe5, - 0x29, 0x25, 0x45, 0x0e, 0xdd, 0xdc, 0x9b, 0x2e, 0x54, 0x9e, 0xc2, 0x85, 0xf8, 0x29, 0x2a, 0xa9, - 0xd7, 0xfd, 0xc4, 0x9e, 0xa4, 0xbe, 0xe4, 0x27, 0x8a, 0x0e, 0x93, 0xd4, 0x97, 0xfc, 0x04, 0x53, - 0x12, 0x54, 0x03, 0x69, 0x24, 0x49, 0x9b, 0x9d, 0xf8, 0x56, 0x34, 0x90, 0x4b, 0x1b, 0x1b, 0xeb, - 0x8a, 0x16, 0x93, 0x2f, 0x28, 0x04, 0x33, 0x2a, 0xe8, 0xb3, 0x0e, 0x9d, 0x71, 0x5e, 0x18, 0x46, - 0xbb, 0x42, 0x70, 0xb8, 0x6a, 0x6f, 0x09, 0x84, 0xd1, 0xae, 0x22, 0x2e, 0x3e, 0xa4, 0x2a, 0xc0, - 0x3a, 0x69, 0x36, 0xf0, 0xda, 0x56, 0xcc, 0xe4, 0x04, 0x3b, 0x03, 0x5f, 0x58, 0xac, 0x64, 0x06, - 0xbe, 0xb0, 0x58, 0xc1, 0x8c, 0x0a, 0xfd, 0xa0, 0x91, 0x77, 0x5d, 0xc8, 0x18, 0x16, 0x3e, 0x28, - 0xf6, 0xae, 0x9b, 0x1f, 0x14, 0x7b, 0xd7, 0x31, 0x25, 0x41, 0x29, 0x85, 0x71, 0xcc, 0x44, 0x0a, - 0x2b, 0x94, 0xd6, 0x2a, 0x15, 0x93, 0xd2, 0x5a, 0xa5, 0x82, 0x29, 0x09, 0xb6, 0x48, 0xab, 0x31, - 0x93, 0x47, 0xec, 0x2c, 0xd2, 0xf9, 0x0c, 0xa5, 0xa5, 0xf9, 0x0a, 0xa6, 0x24, 0x28, 0xcb, 0xf0, - 0x5e, 0xe9, 0x44, 0x5c, 0x98, 0x29, 0x5d, 0x58, 0xb3, 0xb0, 0x5e, 0x28, 0x3a, 0x45, 0x6d, 0xf4, - 0xe6, 0xde, 0x74, 0x91, 0x81, 0x30, 0x27, 0xe4, 0xfe, 0xe1, 0x40, 0xca, 0x2e, 0x24, 0x3f, 0x47, - 0xbf, 0xce, 0x0e, 0x42, 0xc1, 0x0b, 0x84, 0xe8, 0xeb, 0x1c, 0x9a, 0xe8, 0x7b, 0x82, 0x9f, 0x78, - 0x06, 0x39, 0x9c, 0xa5, 0x8f, 0xbe, 0xe8, 0x74, 0xeb, 0xb6, 0x9e, 0xfd, 0xb3, 0x2c, 0x3d, 0x98, - 0xf9, 0x59, 0xb1, 0xaf, 0xca, 0x3b, 0xf5, 0x59, 0x27, 0x15, 0x22, 0xe2, 0x5e, 0xe7, 0xc0, 0x47, - 0xcd, 0x73, 0xc0, 0xa2, 0x42, 0xae, 0xf3, 0xfd, 0xcf, 0x39, 0x30, 0x2e, 0xe1, 0x54, 0x3c, 0x8e, - 0xd1, 0x0d, 0x18, 0x91, 0x3d, 0x15, 0x5f, 0xcf, 0xa6, 0x2d, 0x40, 0x09, 0xf1, 0xaa, 0x33, 0x8a, - 0x9a, 0xfb, 0xe6, 0x10, 0xa0, 0xf4, 0xac, 0x6a, 0x87, 0xb1, 0xcf, 0x38, 0xd1, 0x1d, 0x9c, 0x42, - 0x81, 0x76, 0x0a, 0x3d, 0x67, 0xf3, 0x14, 0x4a, 0xbb, 0x65, 0x9c, 0x47, 0x5f, 0xcc, 0xf0, 0x6d, - 0x7e, 0x30, 0x7d, 0xe4, 0x50, 0xf8, 0xb6, 0xd6, 0x85, 0xfd, 0x39, 0xf8, 0x8e, 0xe0, 0xe0, 0xfc, - 0xe8, 0xfa, 0x45, 0xbb, 0x1c, 0x5c, 0xeb, 0x45, 0x96, 0x97, 0x47, 0x9c, 0xc3, 0xf2, 0xb3, 0xeb, - 0x9a, 0x55, 0x0e, 0xab, 0x51, 0x35, 0x79, 0x6d, 0xc4, 0x79, 0xed, 0x90, 0x2d, 0x9a, 0x1a, 0xaf, - 0xcd, 0xd2, 0x54, 0x5c, 0xf7, 0x15, 0xc9, 0x75, 0xf9, 0xa9, 0xf5, 0xbc, 0x65, 0xae, 0xab, 0xd1, - 0xed, 0xe6, 0xbf, 0x2f, 0xc3, 0xa9, 0xee, 0x7a, 0x98, 0x6c, 0xa1, 0xf3, 0x30, 0x5a, 0x0d, 0x83, - 0x2d, 0xbf, 0xbe, 0xea, 0xb5, 0x85, 0xbe, 0xa6, 0x78, 0xd1, 0xbc, 0x2c, 0xc0, 0x69, 0x1d, 0xf4, - 0x20, 0x67, 0x3c, 0xdc, 0x22, 0x52, 0x12, 0x55, 0x07, 0x96, 0xc9, 0x2e, 0xe3, 0x42, 0xef, 0x1d, - 0xf9, 0xea, 0x37, 0xa6, 0xef, 0xfb, 0xc4, 0x8f, 0x1e, 0xba, 0xcf, 0xfd, 0xe3, 0x01, 0x38, 0x9b, - 0x4b, 0x53, 0x48, 0xeb, 0xbf, 0x6d, 0x48, 0xeb, 0x5a, 0xb9, 0xe0, 0x22, 0xd7, 0x6c, 0x0a, 0xb2, - 0x1a, 0xfa, 0x3c, 0xb9, 0x5c, 0x2b, 0xc6, 0xf9, 0x9d, 0xa2, 0x13, 0x15, 0x78, 0x2d, 0x12, 0xb7, - 0xbd, 0x2a, 0x11, 0xa3, 0x57, 0x13, 0x75, 0x45, 0x16, 0xe0, 0xb4, 0x0e, 0x57, 0xa1, 0xb7, 0xbc, - 0x4e, 0x33, 0x11, 0x86, 0x32, 0x4d, 0x85, 0x66, 0x60, 0x2c, 0xcb, 0xd1, 0x3f, 0x70, 0x00, 0x75, - 0x53, 0x15, 0x1b, 0x71, 0xe3, 0x30, 0xe6, 0x61, 0xee, 0xf4, 0x4d, 0x4d, 0x09, 0xd7, 0x46, 0x9a, - 0xd3, 0x0f, 0xed, 0x9b, 0x7e, 0x2c, 0x3d, 0x87, 0xb8, 0x72, 0xd0, 0x87, 0x0d, 0x8d, 0x99, 0x5a, - 0xaa, 0x55, 0x12, 0xc7, 0xdc, 0x1c, 0xa7, 0x9b, 0x5a, 0x18, 0x18, 0xcb, 0x72, 0x34, 0x0d, 0x45, - 0x12, 0x45, 0x61, 0x24, 0x74, 0x6d, 0xb6, 0x8c, 0x2f, 0x52, 0x00, 0xe6, 0x70, 0xf7, 0x27, 0x05, - 0x28, 0xf7, 0xd2, 0x4e, 0xd0, 0xef, 0x69, 0x7a, 0xb5, 0xd0, 0x9c, 0x84, 0xe2, 0x17, 0x1e, 0x9e, - 0x4e, 0x94, 0x55, 0x00, 0x7b, 0x68, 0xd8, 0xa2, 0x14, 0x67, 0x3b, 0x38, 0xf5, 0x25, 0x4d, 0xc3, - 0xd6, 0x51, 0xe4, 0x1c, 0xf0, 0x5b, 0xe6, 0x01, 0xbf, 0x6e, 0x7b, 0x50, 0xfa, 0x31, 0xff, 0x27, - 0x45, 0x38, 0x21, 0x4b, 0x2b, 0x84, 0x1e, 0x95, 0xcf, 0x76, 0x48, 0xb4, 0x8b, 0x7e, 0xe0, 0xc0, - 0x49, 0x2f, 0x6b, 0xba, 0xf1, 0xc9, 0x21, 0x4c, 0xb4, 0x46, 0x75, 0x66, 0x36, 0x87, 0x22, 0x9f, - 0xe8, 0x0b, 0x62, 0xa2, 0x4f, 0xe6, 0x55, 0xe9, 0x61, 0x77, 0xcf, 0x1d, 0x00, 0x7a, 0x1a, 0xc6, - 0x24, 0x9c, 0x99, 0x7b, 0xf8, 0x16, 0x57, 0xc6, 0xed, 0x59, 0xad, 0x0c, 0x1b, 0x35, 0x69, 0xcb, - 0x84, 0xb4, 0xda, 0x4d, 0x2f, 0x21, 0x9a, 0xa1, 0x48, 0xb5, 0xdc, 0xd0, 0xca, 0xb0, 0x51, 0x13, - 0x3d, 0x0a, 0x43, 0x41, 0x58, 0x23, 0x97, 0x6b, 0xc2, 0x40, 0x3c, 0x21, 0xda, 0x0c, 0x5d, 0x61, - 0x50, 0x2c, 0x4a, 0xd1, 0x23, 0xa9, 0x35, 0xae, 0xc8, 0xb6, 0x50, 0x29, 0xcf, 0x12, 0x87, 0xfe, - 0x91, 0x03, 0xa3, 0xb4, 0xc5, 0xc6, 0x6e, 0x9b, 0xd0, 0xb3, 0x8d, 0x7e, 0x91, 0xda, 0xe1, 0x7c, - 0x91, 0x2b, 0x92, 0x8c, 0x69, 0xea, 0x18, 0x55, 0xf0, 0x37, 0xde, 0x9a, 0x1e, 0x91, 0x3f, 0x70, - 0xda, 0xab, 0xa9, 0x25, 0xb8, 0xbf, 0xe7, 0xd7, 0x3c, 0x90, 0x2b, 0xe0, 0x6f, 0xc1, 0x84, 0xd9, - 0x89, 0x03, 0xf9, 0x01, 0xfe, 0xb9, 0xb6, 0xed, 0xf8, 0xb8, 0x04, 0x3f, 0xbb, 0x67, 0xd2, 0xac, - 0x5a, 0x0c, 0x0b, 0x62, 0xe9, 0x99, 0x8b, 0x61, 0x41, 0x2c, 0x86, 0x05, 0xf7, 0x8f, 0x9c, 0x74, - 0x6b, 0x6a, 0x62, 0x1e, 0x3d, 0x98, 0x3b, 0x51, 0x53, 0x30, 0x62, 0x75, 0x30, 0x5f, 0xc5, 0x2b, - 0x98, 0xc2, 0xd1, 0x97, 0x34, 0xee, 0x48, 0x9b, 0x75, 0x84, 0x5b, 0xc3, 0x92, 0x89, 0xde, 0x40, - 0xdc, 0xcd, 0xff, 0x44, 0x01, 0xce, 0x76, 0xc1, 0xfd, 0x62, 0x01, 0x1e, 0xdc, 0x57, 0x68, 0xcd, - 0xed, 0xb8, 0x73, 0xcf, 0x3b, 0x4e, 0x8f, 0xb5, 0x88, 0xb4, 0xc3, 0xab, 0x78, 0x45, 0x7c, 0x2f, - 0x75, 0xac, 0x61, 0x0e, 0xc6, 0xb2, 0x9c, 0x8a, 0x0e, 0xdb, 0x64, 0x77, 0x31, 0x8c, 0x5a, 0x5e, - 0x22, 0xb8, 0x83, 0x12, 0x1d, 0x96, 0x65, 0x01, 0x4e, 0xeb, 0xb8, 0x3f, 0x70, 0x20, 0xdb, 0x01, - 0xe4, 0xc1, 0x44, 0x27, 0x26, 0x11, 0x3d, 0x52, 0x2b, 0xa4, 0x1a, 0x11, 0xb9, 0x3c, 0x1f, 0x99, - 0xe1, 0xde, 0x7e, 0x3a, 0xc2, 0x99, 0x6a, 0x18, 0x91, 0x99, 0x9d, 0x27, 0x67, 0x78, 0x8d, 0x65, - 0xb2, 0x5b, 0x21, 0x4d, 0x42, 0x71, 0xcc, 0xa1, 0x9b, 0x7b, 0xd3, 0x13, 0x57, 0x0d, 0x04, 0x38, - 0x83, 0x90, 0x92, 0x68, 0x7b, 0x71, 0x7c, 0x3d, 0x8c, 0x6a, 0x82, 0x44, 0xe1, 0xc0, 0x24, 0xd6, - 0x0d, 0x04, 0x38, 0x83, 0xd0, 0xfd, 0x3e, 0x55, 0x1f, 0x75, 0xa9, 0x15, 0x7d, 0x83, 0xca, 0x3e, - 0x14, 0x32, 0xd7, 0x0c, 0x37, 0xe7, 0xc3, 0x20, 0xf1, 0xfc, 0x80, 0xc8, 0x60, 0x81, 0x0d, 0x4b, - 0x32, 0xb2, 0x81, 0x3b, 0xb5, 0xe1, 0x77, 0x97, 0xe1, 0x9c, 0xbe, 0x50, 0x19, 0x67, 0xb3, 0x19, - 0x6e, 0x66, 0xbd, 0x80, 0xb4, 0x12, 0x66, 0x25, 0xee, 0xcf, 0x1c, 0x38, 0xd3, 0x43, 0x18, 0x47, - 0x5f, 0x71, 0x60, 0x7c, 0xf3, 0x6d, 0x31, 0x36, 0xb3, 0x1b, 0xe8, 0xfd, 0x30, 0x41, 0x01, 0xf4, - 0x24, 0x12, 0x6b, 0xb3, 0x60, 0x7a, 0xa8, 0xe6, 0x8c, 0x52, 0x9c, 0xa9, 0xed, 0xfe, 0x46, 0x01, - 0x72, 0xa8, 0xa0, 0x27, 0x60, 0x84, 0x04, 0xb5, 0x76, 0xe8, 0x07, 0x89, 0x60, 0x46, 0x8a, 0xeb, - 0x5d, 0x14, 0x70, 0xac, 0x6a, 0x08, 0xfd, 0x43, 0x4c, 0x4c, 0xa1, 0x4b, 0xff, 0x10, 0x3d, 0x4f, - 0xeb, 0xa0, 0x3a, 0x4c, 0x7a, 0xdc, 0xbf, 0xc2, 0xd6, 0x1e, 0x5b, 0xa6, 0x03, 0x07, 0x59, 0xa6, - 0x27, 0x99, 0xfb, 0x33, 0x83, 0x02, 0x77, 0x21, 0x45, 0xef, 0x81, 0x52, 0x27, 0x26, 0x95, 0x85, - 0xe5, 0xf9, 0x88, 0xd4, 0xb8, 0x56, 0xac, 0xf9, 0xfd, 0xae, 0xa6, 0x45, 0x58, 0xaf, 0xe7, 0xfe, - 0x2b, 0x07, 0x86, 0xe7, 0xbc, 0xea, 0x76, 0xb8, 0xb5, 0x45, 0xa7, 0xa2, 0xd6, 0x89, 0x52, 0xc3, - 0x96, 0x36, 0x15, 0x0b, 0x02, 0x8e, 0x55, 0x0d, 0xb4, 0x01, 0x43, 0x7c, 0xc3, 0x8b, 0x6d, 0xf7, - 0x0b, 0xda, 0x78, 0x54, 0x1c, 0x0f, 0x5b, 0x0e, 0x9d, 0xc4, 0x6f, 0xce, 0xf0, 0x38, 0x9e, 0x99, - 0xcb, 0x41, 0xb2, 0x16, 0x55, 0x92, 0xc8, 0x0f, 0xea, 0x73, 0x40, 0x8f, 0x8b, 0x45, 0x86, 0x03, - 0x0b, 0x5c, 0x74, 0x18, 0x2d, 0xef, 0x86, 0x24, 0x27, 0xd8, 0x8f, 0x1a, 0xc6, 0x6a, 0x5a, 0x84, - 0xf5, 0x7a, 0xee, 0x1f, 0x3b, 0x30, 0x3a, 0xe7, 0xc5, 0x7e, 0xf5, 0x2f, 0x11, 0xf3, 0xf9, 0x30, - 0x14, 0xe7, 0xbd, 0x6a, 0x83, 0xa0, 0xab, 0x59, 0xa5, 0xb7, 0x74, 0xe1, 0xb1, 0x3c, 0x32, 0x4a, - 0x01, 0xd6, 0x29, 0x8d, 0xf7, 0x52, 0x8d, 0xdd, 0xb7, 0x1c, 0x98, 0x98, 0x6f, 0xfa, 0x24, 0x48, - 0xe6, 0x49, 0x94, 0xb0, 0x89, 0xab, 0xc3, 0x64, 0x55, 0x41, 0xee, 0x64, 0xea, 0xd8, 0x6a, 0x9d, - 0xcf, 0xa0, 0xc0, 0x5d, 0x48, 0x51, 0x0d, 0x8e, 0x71, 0x58, 0xba, 0x2b, 0x0e, 0x34, 0x7f, 0xcc, - 0x3a, 0x3a, 0x6f, 0x62, 0xc0, 0x59, 0x94, 0xee, 0x4f, 0x1d, 0x38, 0x33, 0xdf, 0xec, 0xc4, 0x09, - 0x89, 0xae, 0x09, 0x6e, 0x24, 0xc5, 0x5b, 0xf4, 0x51, 0x18, 0x69, 0x49, 0x8f, 0xad, 0x73, 0x9b, - 0x05, 0xcc, 0xf8, 0x19, 0xad, 0x4d, 0x3b, 0xb3, 0xb6, 0xf9, 0x12, 0xa9, 0x26, 0xab, 0x24, 0xf1, - 0xd2, 0xf0, 0x82, 0x14, 0x86, 0x15, 0x56, 0xd4, 0x86, 0xc1, 0xb8, 0x4d, 0xaa, 0xf6, 0xa2, 0xbb, - 0xe4, 0x18, 0x2a, 0x6d, 0x52, 0x4d, 0xf9, 0x3a, 0xf3, 0x35, 0x32, 0x4a, 0xee, 0xff, 0x76, 0xe0, - 0x6c, 0x8f, 0xf1, 0xae, 0xf8, 0x71, 0x82, 0x5e, 0xec, 0x1a, 0xf3, 0x4c, 0x7f, 0x63, 0xa6, 0xad, - 0xd9, 0x88, 0x15, 0x43, 0x90, 0x10, 0x6d, 0xbc, 0x1f, 0x83, 0xa2, 0x9f, 0x90, 0x96, 0x34, 0x43, - 0x5b, 0x30, 0x18, 0xf5, 0x18, 0xcb, 0xdc, 0xb8, 0x8c, 0xf1, 0xbb, 0x4c, 0xe9, 0x61, 0x4e, 0xd6, - 0xdd, 0x86, 0xa1, 0xf9, 0xb0, 0xd9, 0x69, 0x05, 0xfd, 0x45, 0xca, 0x24, 0xbb, 0x6d, 0x92, 0x3d, - 0x23, 0x99, 0xf8, 0xcf, 0x4a, 0xa4, 0xe1, 0x68, 0x20, 0xdf, 0x70, 0xe4, 0xfe, 0x1b, 0x07, 0xe8, - 0xae, 0xaa, 0xf9, 0xc2, 0x93, 0xc8, 0xd1, 0x71, 0x82, 0x0f, 0xea, 0xe8, 0x6e, 0xed, 0x4d, 0x8f, - 0xab, 0x8a, 0x1a, 0xfe, 0x0f, 0xc3, 0x50, 0xcc, 0x54, 0x72, 0xd1, 0x87, 0x45, 0x29, 0x3f, 0x73, - 0x45, 0xfd, 0xd6, 0xde, 0x74, 0x5f, 0x61, 0x9b, 0x33, 0x0a, 0xb7, 0x70, 0x7a, 0x0a, 0xac, 0x54, - 0xe0, 0x6b, 0x91, 0x38, 0xf6, 0xea, 0x52, 0xc3, 0x53, 0x02, 0xdf, 0x2a, 0x07, 0x63, 0x59, 0xee, - 0x7e, 0xd9, 0x81, 0x71, 0x75, 0x78, 0x51, 0xf1, 0x1d, 0x5d, 0xd1, 0x8f, 0x39, 0xbe, 0x52, 0x1e, - 0xec, 0xc1, 0x71, 0xc4, 0x41, 0xbe, 0xff, 0x29, 0xf8, 0x6e, 0x18, 0xab, 0x91, 0x36, 0x09, 0x6a, - 0x24, 0xa8, 0x52, 0xf5, 0x9b, 0xae, 0x90, 0xd1, 0xb9, 0x49, 0xaa, 0x6f, 0x2e, 0x68, 0x70, 0x6c, - 0xd4, 0x72, 0xbf, 0xe9, 0xc0, 0xfd, 0x0a, 0x5d, 0x85, 0x24, 0x98, 0x24, 0xd1, 0xae, 0x0a, 0xd3, - 0x3c, 0xd8, 0x69, 0x75, 0x8d, 0xca, 0xbf, 0x49, 0xc4, 0x89, 0xdf, 0xd9, 0x71, 0x55, 0xe2, 0xd2, - 0x32, 0x43, 0x82, 0x25, 0x36, 0xf7, 0xd7, 0x06, 0xe0, 0xa4, 0xde, 0x49, 0xc5, 0x60, 0x7e, 0xd9, - 0x01, 0x50, 0x33, 0x40, 0x0f, 0xe4, 0x01, 0x3b, 0xbe, 0x2b, 0xe3, 0x4b, 0xa5, 0x2c, 0x48, 0x81, - 0x63, 0xac, 0x91, 0x45, 0xcf, 0xc3, 0xd8, 0x0e, 0xdd, 0x14, 0x64, 0x95, 0x8a, 0x0b, 0x71, 0x79, - 0x80, 0x75, 0x63, 0x3a, 0xef, 0x63, 0x3e, 0x97, 0xd6, 0x4b, 0xcd, 0x01, 0x1a, 0x30, 0xc6, 0x06, - 0x2a, 0xaa, 0xe9, 0x8c, 0x47, 0xfa, 0x27, 0x11, 0x36, 0xf1, 0x0f, 0x59, 0x1c, 0x63, 0xf6, 0xab, - 0xcf, 0x1d, 0xbf, 0xb9, 0x37, 0x3d, 0x6e, 0x80, 0xb0, 0xd9, 0x09, 0xf7, 0x79, 0x60, 0x73, 0xe1, - 0x07, 0x1d, 0xb2, 0x16, 0xa0, 0x87, 0xa5, 0x8d, 0x8e, 0xfb, 0x55, 0x14, 0xe7, 0xd0, 0xed, 0x74, - 0x54, 0x97, 0xdd, 0xf2, 0xfc, 0x26, 0x0b, 0x5f, 0xa4, 0xb5, 0x94, 0x2e, 0xbb, 0xc8, 0xa0, 0x58, - 0x94, 0xba, 0x33, 0x30, 0x3c, 0x4f, 0xc7, 0x4e, 0x22, 0x8a, 0x57, 0x8f, 0x3a, 0x1e, 0x37, 0xa2, - 0x8e, 0x65, 0x74, 0xf1, 0x06, 0x9c, 0x9a, 0x8f, 0x88, 0x97, 0x90, 0xca, 0x53, 0x73, 0x9d, 0xea, - 0x36, 0x49, 0x78, 0x68, 0x57, 0x8c, 0xde, 0x07, 0xe3, 0x21, 0x3b, 0x32, 0x56, 0xc2, 0xea, 0xb6, - 0x1f, 0xd4, 0x85, 0xc9, 0xf5, 0x94, 0xc0, 0x32, 0xbe, 0xa6, 0x17, 0x62, 0xb3, 0xae, 0xfb, 0x9f, - 0x0b, 0x30, 0x36, 0x1f, 0x85, 0x81, 0x64, 0x8b, 0x47, 0x70, 0x94, 0x25, 0xc6, 0x51, 0x66, 0xc1, - 0xdd, 0xa9, 0xf7, 0xbf, 0xd7, 0x71, 0x86, 0x5e, 0x53, 0x2c, 0x72, 0xc0, 0x96, 0x0a, 0x62, 0xd0, - 0x65, 0xb8, 0xd3, 0x8f, 0x6d, 0x32, 0x50, 0xf7, 0xbf, 0x38, 0x30, 0xa9, 0x57, 0x3f, 0x82, 0x13, - 0x34, 0x36, 0x4f, 0xd0, 0x2b, 0x76, 0xc7, 0xdb, 0xe3, 0xd8, 0xfc, 0x17, 0xc3, 0xe6, 0x38, 0x99, - 0xaf, 0xfb, 0xab, 0x0e, 0x8c, 0x5d, 0xd7, 0x00, 0x62, 0xb0, 0xb6, 0x85, 0x98, 0x77, 0x48, 0x36, - 0xa3, 0x43, 0x6f, 0x65, 0x7e, 0x63, 0xa3, 0x27, 0x94, 0xef, 0xc7, 0xd5, 0x06, 0xa9, 0x75, 0x9a, - 0xf2, 0xf8, 0x56, 0x53, 0x5a, 0x11, 0x70, 0xac, 0x6a, 0xa0, 0x17, 0xe1, 0x78, 0x35, 0x0c, 0xaa, - 0x9d, 0x28, 0x22, 0x41, 0x75, 0x77, 0x9d, 0xdd, 0x91, 0x10, 0x07, 0xe2, 0x8c, 0x68, 0x76, 0x7c, - 0x3e, 0x5b, 0xe1, 0x56, 0x1e, 0x10, 0x77, 0x23, 0xe2, 0xce, 0x82, 0x98, 0x1e, 0x59, 0x42, 0xe1, - 0xd2, 0x9c, 0x05, 0x0c, 0x8c, 0x65, 0x39, 0xba, 0x0a, 0x67, 0xe2, 0xc4, 0x8b, 0x12, 0x3f, 0xa8, - 0x2f, 0x10, 0xaf, 0xd6, 0xf4, 0x03, 0xaa, 0x4a, 0x84, 0x41, 0x8d, 0xbb, 0x12, 0x07, 0xe6, 0xce, - 0xde, 0xdc, 0x9b, 0x3e, 0x53, 0xc9, 0xaf, 0x82, 0x7b, 0xb5, 0x45, 0x1f, 0x86, 0x29, 0xe1, 0x8e, - 0xd8, 0xea, 0x34, 0x9f, 0x09, 0x37, 0xe3, 0x4b, 0x7e, 0x4c, 0xf5, 0xf8, 0x15, 0xbf, 0xe5, 0x27, - 0xcc, 0x61, 0x58, 0x9c, 0x3b, 0x77, 0x73, 0x6f, 0x7a, 0xaa, 0xd2, 0xb3, 0x16, 0xde, 0x07, 0x03, - 0xc2, 0x70, 0x9a, 0x33, 0xbf, 0x2e, 0xdc, 0xc3, 0x0c, 0xf7, 0xd4, 0xcd, 0xbd, 0xe9, 0xd3, 0x8b, - 0xb9, 0x35, 0x70, 0x8f, 0x96, 0xf4, 0x0b, 0x26, 0x7e, 0x8b, 0xbc, 0x12, 0x06, 0x84, 0x05, 0xaa, - 0x68, 0x5f, 0x70, 0x43, 0xc0, 0xb1, 0xaa, 0x81, 0x5e, 0x4a, 0x57, 0x22, 0xdd, 0x2e, 0x22, 0xe0, - 0xe4, 0xe0, 0x1c, 0x8e, 0xa9, 0x26, 0xd7, 0x34, 0x4c, 0x2c, 0x92, 0xd2, 0xc0, 0x8d, 0x3e, 0xe9, - 0xc0, 0x58, 0x9c, 0x84, 0xea, 0x5e, 0x83, 0x88, 0x38, 0xb1, 0xb0, 0xec, 0x2b, 0x1a, 0x56, 0x2e, - 0xf8, 0xe8, 0x10, 0x6c, 0x50, 0x45, 0xef, 0x84, 0x51, 0xb9, 0x80, 0xe3, 0x72, 0x89, 0xc9, 0x4a, - 0x4c, 0x8d, 0x93, 0xeb, 0x3b, 0xc6, 0x69, 0xb9, 0xfb, 0x93, 0x01, 0x40, 0xdd, 0x6c, 0x0d, 0x2d, - 0xc3, 0x90, 0x57, 0x4d, 0xfc, 0x1d, 0x19, 0x4d, 0xf8, 0x70, 0xde, 0x91, 0xcf, 0xa7, 0x07, 0x93, - 0x2d, 0x42, 0x57, 0x35, 0x49, 0x79, 0xe1, 0x2c, 0x6b, 0x8a, 0x05, 0x0a, 0x14, 0xc2, 0xf1, 0xa6, - 0x17, 0x27, 0x92, 0x7e, 0x8d, 0x7e, 0x26, 0x71, 0x18, 0xfc, 0x7c, 0x7f, 0x1f, 0x82, 0xb6, 0x98, - 0x3b, 0x45, 0x77, 0xdb, 0x4a, 0x16, 0x11, 0xee, 0xc6, 0x8d, 0x3e, 0xce, 0x64, 0x27, 0x2e, 0xd8, - 0x4a, 0xa1, 0x65, 0xd9, 0x8a, 0x5c, 0xc1, 0x71, 0x1a, 0x72, 0x93, 0x20, 0x83, 0x35, 0x92, 0xe8, - 0x3c, 0x8c, 0xb2, 0x5d, 0x41, 0x6a, 0x84, 0xef, 0xed, 0x81, 0x54, 0xc4, 0xad, 0xc8, 0x02, 0x9c, - 0xd6, 0xd1, 0x64, 0x08, 0xbe, 0x9d, 0x7b, 0xc8, 0x10, 0xe8, 0x69, 0x28, 0xb6, 0x1b, 0x5e, 0x2c, - 0x23, 0xd4, 0x5d, 0xc9, 0x93, 0xd7, 0x29, 0x90, 0x31, 0x1e, 0xed, 0x5b, 0x32, 0x20, 0xe6, 0x0d, - 0xdc, 0x7f, 0x0b, 0x30, 0xbc, 0x30, 0xbb, 0xb4, 0xe1, 0xc5, 0xdb, 0x7d, 0x68, 0x38, 0x74, 0x93, - 0x09, 0x51, 0x34, 0xcb, 0x26, 0xa5, 0x88, 0x8a, 0x55, 0x0d, 0x14, 0xc0, 0x90, 0x1f, 0x50, 0xbe, - 0x52, 0x9e, 0xb0, 0xe5, 0x45, 0x50, 0xda, 0x1a, 0x33, 0xf3, 0x5c, 0x66, 0xd8, 0xb1, 0xa0, 0x82, - 0x5e, 0x83, 0x51, 0x4f, 0x5e, 0x10, 0x12, 0xa7, 0xfb, 0xb2, 0x0d, 0xf3, 0xb8, 0x40, 0xa9, 0x07, - 0x28, 0x09, 0x10, 0x4e, 0x09, 0xa2, 0x4f, 0x38, 0x50, 0x92, 0x43, 0xc7, 0x64, 0x4b, 0x78, 0xae, - 0x57, 0xed, 0x8d, 0x19, 0x93, 0x2d, 0x1e, 0xbd, 0xa2, 0x01, 0xb0, 0x4e, 0xb2, 0x4b, 0x23, 0x2a, - 0xf6, 0xa3, 0x11, 0xa1, 0xeb, 0x30, 0x7a, 0xdd, 0x4f, 0x1a, 0xec, 0xfc, 0x16, 0x1e, 0xb3, 0xc5, - 0xbb, 0xef, 0x35, 0x45, 0x97, 0xce, 0xd8, 0x35, 0x49, 0x00, 0xa7, 0xb4, 0xe8, 0x76, 0xa0, 0x3f, - 0xd8, 0x05, 0x2b, 0xc6, 0xf9, 0x47, 0xcd, 0x06, 0xac, 0x00, 0xa7, 0x75, 0xe8, 0x14, 0x8f, 0xd1, - 0x5f, 0x15, 0xf2, 0x72, 0x87, 0xb2, 0x16, 0x11, 0x91, 0x68, 0x61, 0x5d, 0x49, 0x8c, 0x7c, 0xb2, - 0xae, 0x69, 0x34, 0xb0, 0x41, 0x91, 0xee, 0x91, 0xeb, 0x0d, 0x12, 0x88, 0x1b, 0x13, 0x6a, 0x8f, - 0x5c, 0x6b, 0x90, 0x00, 0xb3, 0x12, 0xf4, 0x1a, 0xd7, 0xd0, 0xb8, 0xaa, 0x20, 0x78, 0xfd, 0x8a, - 0x1d, 0xed, 0x85, 0xe3, 0xe4, 0x97, 0x16, 0xd2, 0xdf, 0x58, 0xa3, 0x47, 0x39, 0x46, 0x18, 0x5c, - 0xbc, 0xe1, 0x27, 0xe2, 0xaa, 0x85, 0xe2, 0x18, 0x6b, 0x0c, 0x8a, 0x45, 0x29, 0x8f, 0xcc, 0xa0, - 0x8b, 0x20, 0x66, 0xf7, 0x2a, 0x46, 0xf5, 0xc8, 0x0c, 0x06, 0xc6, 0xb2, 0x1c, 0xfd, 0x43, 0x07, - 0x8a, 0x8d, 0x30, 0xdc, 0x8e, 0xcb, 0xe3, 0x6c, 0x71, 0x58, 0x90, 0x98, 0x05, 0xc7, 0x99, 0xb9, - 0x44, 0xd1, 0x9a, 0x97, 0xc7, 0x8a, 0x0c, 0x76, 0x6b, 0x6f, 0x7a, 0x62, 0xc5, 0xdf, 0x22, 0xd5, - 0xdd, 0x6a, 0x93, 0x30, 0xc8, 0x1b, 0x6f, 0x69, 0x90, 0x8b, 0x3b, 0x24, 0x48, 0x30, 0xef, 0xd5, - 0xd4, 0xe7, 0x1c, 0x80, 0x14, 0x51, 0x8e, 0x0b, 0x94, 0x98, 0x41, 0x03, 0x16, 0xd4, 0x65, 0xa3, - 0x6b, 0xba, 0x4f, 0xf5, 0xdf, 0x39, 0x50, 0xa2, 0x83, 0x93, 0x2c, 0xf0, 0x51, 0x18, 0x4a, 0xbc, - 0xa8, 0x4e, 0xa4, 0x1b, 0x40, 0x7d, 0x8e, 0x0d, 0x06, 0xc5, 0xa2, 0x14, 0x05, 0x50, 0x4c, 0xbc, - 0x78, 0x5b, 0x0a, 0xe9, 0x97, 0xad, 0x4d, 0x71, 0x2a, 0x9f, 0xd3, 0x5f, 0x31, 0xe6, 0x64, 0xd0, - 0x63, 0x30, 0x42, 0x8f, 0x8e, 0x45, 0x2f, 0x96, 0x91, 0x39, 0x63, 0x94, 0x89, 0x2f, 0x0a, 0x18, - 0x56, 0xa5, 0xee, 0x6f, 0x14, 0x60, 0x70, 0x81, 0xab, 0x6b, 0x43, 0x71, 0xd8, 0x89, 0xaa, 0x44, - 0x88, 0xed, 0x16, 0xd6, 0x34, 0xc5, 0x5b, 0x61, 0x38, 0x35, 0x85, 0x89, 0xfd, 0xc6, 0x82, 0x16, - 0xfa, 0x92, 0x03, 0x13, 0x49, 0xe4, 0x05, 0xf1, 0x16, 0x73, 0xb8, 0xf8, 0x61, 0x20, 0xa6, 0xc8, - 0xc2, 0x2a, 0xdc, 0x30, 0xf0, 0x56, 0x12, 0xd2, 0x4e, 0xfd, 0x3e, 0x66, 0x19, 0xce, 0xf4, 0xc1, - 0xfd, 0x4d, 0x07, 0x20, 0xed, 0x3d, 0xfa, 0xac, 0x03, 0xe3, 0x9e, 0x1e, 0x11, 0x2a, 0xe6, 0x68, - 0xcd, 0x9e, 0x77, 0x96, 0xa1, 0xe5, 0x96, 0x0a, 0x03, 0x84, 0x4d, 0xc2, 0xee, 0x7b, 0xa0, 0xc8, - 0x76, 0x07, 0x53, 0x69, 0x84, 0x65, 0x3b, 0x6b, 0xca, 0x92, 0x16, 0x6f, 0xac, 0x6a, 0xb8, 0x2f, - 0xc2, 0xc4, 0xc5, 0x1b, 0xa4, 0xda, 0x49, 0xc2, 0x88, 0xdb, 0xf5, 0x7b, 0xdc, 0x00, 0x72, 0xee, - 0xe8, 0x06, 0xd0, 0x77, 0x1c, 0x28, 0x69, 0xe1, 0x81, 0xf4, 0xa4, 0xae, 0xcf, 0x57, 0xb8, 0xf9, - 0x42, 0x4c, 0xd5, 0xb2, 0x95, 0x00, 0x44, 0x8e, 0x32, 0x3d, 0x46, 0x14, 0x08, 0xa7, 0x04, 0x6f, - 0x13, 0xbe, 0xe7, 0xfe, 0xa1, 0x03, 0xa7, 0x72, 0x63, 0x19, 0xef, 0x71, 0xb7, 0x0d, 0x17, 0x7a, - 0xa1, 0x0f, 0x17, 0xfa, 0xef, 0x3a, 0x90, 0x62, 0xa2, 0xac, 0x68, 0x33, 0xed, 0xb9, 0xc6, 0x8a, - 0x04, 0x25, 0x51, 0x8a, 0x5e, 0x83, 0x33, 0xe6, 0x17, 0xbc, 0x43, 0x6f, 0x0a, 0x57, 0x3d, 0xf3, - 0x31, 0xe1, 0x5e, 0x24, 0xdc, 0xaf, 0x39, 0x50, 0x5c, 0xf2, 0x3a, 0x75, 0xd2, 0x97, 0x31, 0x8c, - 0xf2, 0xb1, 0x88, 0x78, 0xcd, 0x44, 0xaa, 0x0e, 0x82, 0x8f, 0x61, 0x01, 0xc3, 0xaa, 0x14, 0xcd, - 0xc2, 0x68, 0xd8, 0x26, 0x86, 0x07, 0xf0, 0x61, 0x39, 0x7b, 0x6b, 0xb2, 0x80, 0x1e, 0x3b, 0x8c, - 0xba, 0x82, 0xe0, 0xb4, 0x95, 0xfb, 0x83, 0x22, 0x94, 0xb4, 0x5b, 0x2f, 0x54, 0x16, 0x88, 0x48, - 0x3b, 0xcc, 0xca, 0xcb, 0x74, 0xc1, 0x60, 0x56, 0x42, 0xf7, 0x60, 0x44, 0x76, 0xfc, 0x98, 0xb3, - 0x2d, 0x63, 0x0f, 0x62, 0x01, 0xc7, 0xaa, 0x06, 0x9a, 0x86, 0x62, 0x8d, 0xb4, 0x93, 0x06, 0xeb, - 0xde, 0x20, 0x0f, 0xfd, 0x5b, 0xa0, 0x00, 0xcc, 0xe1, 0xb4, 0xc2, 0x16, 0x49, 0xaa, 0x0d, 0x66, - 0xf7, 0x15, 0xb1, 0x81, 0x8b, 0x14, 0x80, 0x39, 0x3c, 0xc7, 0x47, 0x59, 0x3c, 0x7c, 0x1f, 0xe5, - 0x90, 0x65, 0x1f, 0x25, 0x6a, 0xc3, 0x89, 0x38, 0x6e, 0xac, 0x47, 0xfe, 0x8e, 0x97, 0x90, 0x74, - 0xf5, 0x0d, 0x1f, 0x84, 0xce, 0x19, 0x76, 0x0f, 0xbd, 0x72, 0x29, 0x8b, 0x05, 0xe7, 0xa1, 0x46, - 0x15, 0x38, 0xe5, 0x07, 0x31, 0xa9, 0x76, 0x22, 0x72, 0xb9, 0x1e, 0x84, 0x11, 0xb9, 0x14, 0xc6, - 0x14, 0x9d, 0xb8, 0x45, 0xab, 0xa2, 0x65, 0x2f, 0xe7, 0x55, 0xc2, 0xf9, 0x6d, 0xd1, 0x12, 0x1c, - 0xaf, 0xf9, 0xb1, 0xb7, 0xd9, 0x24, 0x95, 0xce, 0x66, 0x2b, 0xe4, 0x8a, 0xf7, 0x28, 0x43, 0x78, - 0xbf, 0xb4, 0x12, 0x2d, 0x64, 0x2b, 0xe0, 0xee, 0x36, 0xe8, 0x69, 0x18, 0x8b, 0xfd, 0xa0, 0xde, - 0x24, 0x73, 0x91, 0x17, 0x54, 0x1b, 0xe2, 0xfa, 0xad, 0xb2, 0xa6, 0x57, 0xb4, 0x32, 0x6c, 0xd4, - 0x64, 0x7b, 0x9e, 0xb7, 0xc9, 0x48, 0x83, 0xa2, 0xb6, 0x28, 0x75, 0x7f, 0xe8, 0xc0, 0x98, 0x1e, - 0xa9, 0x4e, 0x25, 0x6d, 0x68, 0x2c, 0x2c, 0x56, 0xf8, 0x59, 0x60, 0xef, 0xc4, 0xbf, 0xa4, 0x70, - 0xa6, 0xca, 0x72, 0x0a, 0xc3, 0x1a, 0xcd, 0x3e, 0xee, 0x9d, 0x3f, 0x0c, 0xc5, 0xad, 0x90, 0x0a, - 0x24, 0x03, 0xa6, 0x19, 0x7e, 0x91, 0x02, 0x31, 0x2f, 0x73, 0xff, 0xa7, 0x03, 0xa7, 0xf3, 0x83, - 0xf0, 0xdf, 0x0e, 0x83, 0xbc, 0x00, 0x40, 0x87, 0x62, 0x30, 0x75, 0x2d, 0xf3, 0x84, 0x2c, 0xc1, - 0x5a, 0xad, 0xfe, 0x86, 0xfd, 0x67, 0x54, 0x28, 0x4e, 0xe9, 0x7c, 0xde, 0x81, 0x71, 0x4a, 0x76, - 0x39, 0xda, 0x34, 0x46, 0xbb, 0x66, 0x67, 0xb4, 0x0a, 0x6d, 0xea, 0x6d, 0x30, 0xc0, 0xd8, 0x24, - 0x8e, 0xde, 0x09, 0xa3, 0x5e, 0xad, 0x16, 0x91, 0x38, 0x56, 0x7e, 0x3b, 0x66, 0x8b, 0x9a, 0x95, - 0x40, 0x9c, 0x96, 0x53, 0x26, 0xda, 0xa8, 0x6d, 0xc5, 0x94, 0x2f, 0x09, 0xc6, 0xad, 0x98, 0x28, - 0x25, 0x42, 0xe1, 0x58, 0xd5, 0x70, 0x7f, 0x75, 0x10, 0x4c, 0xda, 0xa8, 0x06, 0xc7, 0xb6, 0xa3, - 0xcd, 0x79, 0x16, 0xf6, 0x70, 0x27, 0xe1, 0x07, 0x2c, 0x2c, 0x60, 0xd9, 0xc4, 0x80, 0xb3, 0x28, - 0x05, 0x95, 0x65, 0xb2, 0x9b, 0x78, 0x9b, 0x77, 0x1c, 0x7c, 0xb0, 0x6c, 0x62, 0xc0, 0x59, 0x94, - 0xe8, 0x3d, 0x50, 0xda, 0x8e, 0x36, 0x25, 0x8b, 0xce, 0x46, 0xb2, 0x2c, 0xa7, 0x45, 0x58, 0xaf, - 0x47, 0xa7, 0x70, 0x3b, 0xda, 0xa4, 0xa7, 0xa2, 0xcc, 0xc3, 0xa0, 0xa6, 0x70, 0x59, 0xc0, 0xb1, - 0xaa, 0x81, 0xda, 0x80, 0xb6, 0xe5, 0xec, 0xa9, 0x20, 0x0f, 0x71, 0x92, 0xf4, 0x1f, 0x23, 0xc2, - 0xa2, 0xeb, 0x97, 0xbb, 0xf0, 0xe0, 0x1c, 0xdc, 0xe8, 0x79, 0x38, 0xb3, 0x1d, 0x6d, 0x0a, 0x61, - 0x61, 0x3d, 0xf2, 0x83, 0xaa, 0xdf, 0x36, 0x72, 0x2e, 0x4c, 0x8b, 0xee, 0x9e, 0x59, 0xce, 0xaf, - 0x86, 0x7b, 0xb5, 0x77, 0x7f, 0x6f, 0x10, 0xd8, 0x6d, 0x51, 0xca, 0x0b, 0x5b, 0x24, 0x69, 0x84, - 0xb5, 0xac, 0xfc, 0xb3, 0xca, 0xa0, 0x58, 0x94, 0xca, 0x18, 0xd2, 0x42, 0x8f, 0x18, 0xd2, 0xeb, - 0x30, 0xdc, 0x20, 0x5e, 0x8d, 0x44, 0xd2, 0x82, 0xb8, 0x62, 0xe7, 0x7e, 0xeb, 0x25, 0x86, 0x34, - 0x55, 0xc3, 0xf9, 0xef, 0x18, 0x4b, 0x6a, 0xe8, 0xbd, 0x30, 0x41, 0x05, 0x99, 0xb0, 0x93, 0x48, - 0x13, 0x3f, 0xb7, 0x20, 0xb2, 0x13, 0x75, 0xc3, 0x28, 0xc1, 0x99, 0x9a, 0x68, 0x01, 0x26, 0x85, - 0x39, 0x5e, 0x59, 0x26, 0xc5, 0xc4, 0xaa, 0x64, 0x18, 0x95, 0x4c, 0x39, 0xee, 0x6a, 0xc1, 0x62, - 0x00, 0xc3, 0x1a, 0xf7, 0xc8, 0xea, 0x31, 0x80, 0x61, 0x6d, 0x17, 0xb3, 0x12, 0xf4, 0x0a, 0x8c, - 0xd0, 0xbf, 0x8b, 0x51, 0xd8, 0x12, 0xb6, 0x99, 0x75, 0x3b, 0xb3, 0x43, 0x69, 0x08, 0x4d, 0x91, - 0x09, 0x78, 0x73, 0x82, 0x0a, 0x56, 0xf4, 0xa8, 0xbe, 0x22, 0xcf, 0xe1, 0xca, 0xb6, 0xdf, 0x7e, - 0x8e, 0x44, 0xfe, 0xd6, 0x2e, 0x13, 0x1a, 0x46, 0x52, 0x7d, 0xe5, 0x72, 0x57, 0x0d, 0x9c, 0xd3, - 0xca, 0xfd, 0x7c, 0x01, 0xc6, 0xf4, 0x4b, 0xc7, 0xb7, 0x0b, 0x2c, 0x8e, 0xd3, 0x45, 0xc1, 0xb5, - 0xd3, 0x4b, 0x16, 0x86, 0x7d, 0xbb, 0x05, 0xd1, 0x80, 0x41, 0xaf, 0x23, 0xa4, 0x45, 0x2b, 0x46, - 0x30, 0x36, 0xe2, 0x4e, 0xd2, 0xe0, 0xb7, 0xd3, 0x58, 0xc8, 0x2f, 0xa3, 0xe0, 0x7e, 0x6a, 0x00, - 0x46, 0x64, 0x21, 0xfa, 0xa4, 0x03, 0x90, 0x86, 0x5e, 0x09, 0x56, 0xba, 0x6e, 0x23, 0x2e, 0x47, - 0x8f, 0x1a, 0xd3, 0x6c, 0xe9, 0x0a, 0x8e, 0x35, 0xba, 0x28, 0x81, 0xa1, 0x90, 0x76, 0xee, 0x82, - 0xbd, 0x8b, 0xf3, 0x6b, 0x94, 0xf0, 0x05, 0x46, 0x3d, 0x35, 0x9b, 0x31, 0x18, 0x16, 0xb4, 0xa8, - 0x06, 0xb8, 0x29, 0x23, 0x02, 0xed, 0x99, 0x98, 0x55, 0x90, 0x61, 0xaa, 0xd0, 0x29, 0x10, 0x4e, - 0x09, 0xba, 0x4f, 0xc2, 0x84, 0xb9, 0x19, 0xa8, 0x46, 0xb0, 0xb9, 0x9b, 0x10, 0x6e, 0x6f, 0x18, - 0xe3, 0x1a, 0xc1, 0x1c, 0x05, 0x60, 0x0e, 0x77, 0xbf, 0x4f, 0xe5, 0x00, 0xc5, 0x5e, 0xfa, 0x30, - 0xf1, 0x3f, 0xac, 0x1b, 0xcb, 0x7a, 0xa9, 0x5d, 0x1f, 0x87, 0x51, 0xf6, 0x0f, 0xdb, 0xe8, 0x03, - 0xb6, 0xfc, 0xf7, 0x69, 0x3f, 0xc5, 0x56, 0x67, 0x32, 0xc1, 0x73, 0x92, 0x10, 0x4e, 0x69, 0xba, - 0x21, 0x4c, 0x66, 0x6b, 0xa3, 0x0f, 0xc1, 0x58, 0x2c, 0x8f, 0xd5, 0xf4, 0x0a, 0x5d, 0x9f, 0xc7, - 0x2f, 0xf7, 0x9e, 0x69, 0xcd, 0xb1, 0x81, 0xcc, 0x5d, 0x83, 0x21, 0xab, 0x53, 0xe8, 0x7e, 0xdb, - 0x81, 0x51, 0xe6, 0xc0, 0xac, 0x47, 0x5e, 0x2b, 0x6d, 0x32, 0xb0, 0xcf, 0xac, 0xc7, 0x30, 0xcc, - 0x75, 0x74, 0x19, 0xf8, 0x63, 0x81, 0xcb, 0xf0, 0x7c, 0x77, 0x29, 0x97, 0xe1, 0xc6, 0x80, 0x18, - 0x4b, 0x4a, 0xee, 0xa7, 0x0b, 0x30, 0x74, 0x39, 0x68, 0x77, 0xfe, 0xca, 0xe7, 0x5c, 0x5b, 0x85, - 0xc1, 0xcb, 0x09, 0x69, 0x99, 0xa9, 0x01, 0xc7, 0xe6, 0x1e, 0xd1, 0xd3, 0x02, 0x96, 0xcd, 0xb4, - 0x80, 0xd8, 0xbb, 0x2e, 0xe3, 0xe2, 0x84, 0x8d, 0x38, 0xbd, 0x46, 0xf8, 0x04, 0x8c, 0xae, 0x78, - 0x9b, 0xa4, 0xb9, 0x4c, 0x76, 0xd9, 0xa5, 0x3f, 0x1e, 0xa3, 0xe1, 0xa4, 0x8a, 0xbd, 0x11, 0x4f, - 0xb1, 0x00, 0x13, 0xac, 0xb6, 0xda, 0x0c, 0x54, 0x73, 0x20, 0x69, 0x5e, 0x25, 0xc7, 0xd4, 0x1c, - 0xb4, 0x9c, 0x4a, 0x5a, 0x2d, 0x77, 0x06, 0x4a, 0x29, 0x96, 0x3e, 0xa8, 0xfe, 0xac, 0x00, 0xe3, - 0x86, 0xa9, 0xdb, 0x70, 0x00, 0x3a, 0xb7, 0x75, 0x00, 0x1a, 0x0e, 0xb9, 0xc2, 0xbd, 0x76, 0xc8, - 0x0d, 0x1c, 0xbd, 0x43, 0xce, 0xfc, 0x48, 0x83, 0x7d, 0x7d, 0xa4, 0x26, 0x0c, 0xae, 0xf8, 0xc1, - 0x76, 0x7f, 0x7c, 0x26, 0xae, 0x86, 0xed, 0x2e, 0x3e, 0x53, 0xa1, 0x40, 0xcc, 0xcb, 0xa4, 0xe4, - 0x32, 0x90, 0x2f, 0xb9, 0xb8, 0x9f, 0x74, 0x60, 0x6c, 0xd5, 0x0b, 0xfc, 0x2d, 0x12, 0x27, 0x6c, - 0x5d, 0x25, 0x87, 0x7a, 0xf9, 0x6b, 0xac, 0x47, 0x1a, 0x83, 0x37, 0x1c, 0x38, 0xbe, 0x4a, 0x5a, - 0xa1, 0xff, 0x8a, 0x97, 0x86, 0x9d, 0xd2, 0xbe, 0x37, 0xfc, 0x44, 0x44, 0xd9, 0xa9, 0xbe, 0x5f, - 0xf2, 0x13, 0x4c, 0xe1, 0xb7, 0xb1, 0xe3, 0xb2, 0x6b, 0x15, 0x54, 0x41, 0xd3, 0x2e, 0x24, 0xa6, - 0x01, 0xa5, 0xb2, 0x00, 0xa7, 0x75, 0xdc, 0xdf, 0x77, 0x60, 0x98, 0x77, 0x42, 0x45, 0xea, 0x3a, - 0x3d, 0x70, 0x37, 0xa0, 0xc8, 0xda, 0x89, 0x55, 0xbd, 0x64, 0x41, 0xfc, 0xa1, 0xe8, 0xf8, 0x1e, - 0x64, 0xff, 0x62, 0x4e, 0x80, 0xa9, 0x2d, 0xde, 0x8d, 0x59, 0x15, 0x71, 0x9b, 0xaa, 0x2d, 0x0c, - 0x8a, 0x45, 0xa9, 0xfb, 0xf5, 0x01, 0x18, 0x51, 0xd9, 0xbb, 0x58, 0x6e, 0x85, 0x20, 0x08, 0x13, - 0x8f, 0xc7, 0x3a, 0x70, 0x5e, 0xfd, 0x21, 0x7b, 0xd9, 0xc3, 0x66, 0x66, 0x53, 0xec, 0xdc, 0x7f, - 0xa7, 0x94, 0x50, 0xad, 0x04, 0xeb, 0x9d, 0x40, 0x1f, 0x83, 0xa1, 0x26, 0xe5, 0x3e, 0x92, 0x75, - 0x3f, 0x67, 0xb1, 0x3b, 0x8c, 0xad, 0x89, 0x9e, 0xa8, 0x19, 0xe2, 0x40, 0x2c, 0xa8, 0x4e, 0xbd, - 0x1f, 0x26, 0xb3, 0xbd, 0xbe, 0xdd, 0x7d, 0xc9, 0x51, 0xfd, 0xb6, 0xe5, 0xdf, 0x14, 0xdc, 0xf3, - 0xe0, 0x4d, 0xdd, 0x67, 0xa1, 0xb4, 0x4a, 0x92, 0xc8, 0xaf, 0x32, 0x04, 0xb7, 0x5b, 0x5c, 0x7d, - 0xc9, 0x0f, 0x9f, 0x61, 0x8b, 0x95, 0xe2, 0x8c, 0xd1, 0x6b, 0x00, 0xed, 0x28, 0xa4, 0xfa, 0x2b, - 0xe9, 0xc8, 0x8f, 0x6d, 0x41, 0x1e, 0x5e, 0x57, 0x38, 0xb9, 0xcb, 0x39, 0xfd, 0x8d, 0x35, 0x7a, - 0xee, 0x0b, 0x50, 0x5c, 0xed, 0x24, 0xe4, 0x46, 0x1f, 0x1c, 0xeb, 0xa0, 0x09, 0x04, 0xdc, 0x0f, - 0xc1, 0x18, 0xc3, 0x7d, 0x29, 0x6c, 0xd2, 0x63, 0x95, 0x4e, 0x4d, 0x8b, 0xfe, 0xce, 0x3a, 0x05, - 0x58, 0x25, 0xcc, 0xcb, 0xe8, 0x96, 0x69, 0x84, 0xcd, 0x9a, 0xba, 0x4c, 0xa5, 0x16, 0xc4, 0x25, - 0x06, 0xc5, 0xa2, 0xd4, 0xfd, 0xe5, 0x02, 0x94, 0x58, 0x43, 0xc1, 0x6e, 0x76, 0x61, 0xb8, 0xc1, - 0xe9, 0x88, 0x39, 0xb4, 0x10, 0xa2, 0xa5, 0xf7, 0x5e, 0xd3, 0xe5, 0x38, 0x00, 0x4b, 0x7a, 0x94, - 0xf4, 0x75, 0xcf, 0x4f, 0x28, 0xe9, 0xc2, 0xe1, 0x92, 0xbe, 0xc6, 0xc9, 0x60, 0x49, 0xcf, 0xfd, - 0x25, 0x60, 0x97, 0x94, 0x17, 0x9b, 0x5e, 0x9d, 0xcf, 0x5c, 0xb8, 0x4d, 0x6a, 0x82, 0xe7, 0x6a, - 0x33, 0x47, 0xa1, 0x58, 0x94, 0xf2, 0x8b, 0x9f, 0x49, 0xe4, 0xab, 0xe0, 0x66, 0xed, 0xe2, 0x27, - 0x03, 0xcb, 0x50, 0xf6, 0x9a, 0xfb, 0xe5, 0x02, 0x00, 0xcb, 0xf5, 0xc6, 0xef, 0x16, 0xff, 0x82, - 0x8c, 0x54, 0x32, 0x1d, 0x89, 0x2a, 0x52, 0x89, 0xdd, 0x9e, 0xd6, 0x23, 0x94, 0xf4, 0x3b, 0x07, - 0x85, 0xfd, 0xef, 0x1c, 0xa0, 0x36, 0x0c, 0x87, 0x9d, 0x84, 0xca, 0xaa, 0xe2, 0xb0, 0xb7, 0xe0, - 0x47, 0x5f, 0xe3, 0x08, 0x79, 0xa0, 0xbe, 0xf8, 0x81, 0x25, 0x19, 0xf4, 0x34, 0x8c, 0xb4, 0xa3, - 0xb0, 0x4e, 0xcf, 0x6e, 0x71, 0xbc, 0x3f, 0x20, 0xe5, 0xa1, 0x75, 0x01, 0xbf, 0xa5, 0xfd, 0x8f, - 0x55, 0x6d, 0xf7, 0x47, 0x93, 0x7c, 0x5e, 0xc4, 0xda, 0x9b, 0x82, 0x82, 0x2f, 0x2d, 0x53, 0x20, - 0x50, 0x14, 0x2e, 0x2f, 0xe0, 0x82, 0x5f, 0x53, 0xfb, 0xaa, 0xd0, 0x73, 0x5f, 0xbd, 0x07, 0x4a, - 0x35, 0x3f, 0x6e, 0x37, 0xbd, 0xdd, 0x2b, 0x39, 0x66, 0xc1, 0x85, 0xb4, 0x08, 0xeb, 0xf5, 0xd0, - 0x13, 0xe2, 0x86, 0xc9, 0xa0, 0x61, 0x0a, 0x92, 0x37, 0x4c, 0xd2, 0xbb, 0xeb, 0xfc, 0x72, 0x49, - 0xf6, 0x8e, 0x7f, 0xb1, 0xef, 0x3b, 0xfe, 0x59, 0x49, 0x6c, 0xe8, 0xe8, 0x25, 0xb1, 0xf7, 0xc1, - 0xb8, 0xfc, 0xc9, 0xc4, 0xa3, 0xf2, 0x49, 0xd6, 0x7b, 0x65, 0xae, 0xde, 0xd0, 0x0b, 0xb1, 0x59, - 0x37, 0x5d, 0xb4, 0xc3, 0xfd, 0x2e, 0xda, 0x0b, 0x00, 0x9b, 0x61, 0x27, 0xa8, 0x79, 0xd1, 0xee, - 0xe5, 0x05, 0x11, 0x8f, 0xaa, 0x04, 0xbf, 0x39, 0x55, 0x82, 0xb5, 0x5a, 0xfa, 0x42, 0x1f, 0xbd, - 0xcd, 0x42, 0xff, 0x10, 0x8c, 0xb2, 0xd8, 0x5d, 0x52, 0x9b, 0x4d, 0x44, 0x88, 0xd1, 0x41, 0x42, - 0x26, 0xd3, 0xa0, 0x43, 0x89, 0x04, 0xa7, 0xf8, 0xd0, 0x87, 0x01, 0xb6, 0xfc, 0xc0, 0x8f, 0x1b, - 0x0c, 0x7b, 0xe9, 0xc0, 0xd8, 0xd5, 0x38, 0x17, 0x15, 0x16, 0xac, 0x61, 0x44, 0x2f, 0xc2, 0x71, - 0x12, 0x27, 0x7e, 0xcb, 0x4b, 0x48, 0x4d, 0xdd, 0xc9, 0x2c, 0x33, 0x5b, 0xa6, 0x8a, 0x9e, 0xbe, - 0x98, 0xad, 0x70, 0x2b, 0x0f, 0x88, 0xbb, 0x11, 0x19, 0x3b, 0x72, 0xea, 0x20, 0x3b, 0x12, 0xfd, - 0xb9, 0x03, 0xc7, 0x23, 0xc2, 0xe3, 0x4e, 0x62, 0xd5, 0xb1, 0x53, 0x8c, 0x1d, 0x57, 0x6d, 0xa4, - 0x51, 0x57, 0xf9, 0x52, 0x70, 0x96, 0x0a, 0x17, 0x5c, 0x88, 0x1c, 0x7d, 0x57, 0xf9, 0xad, 0x3c, - 0xe0, 0x1b, 0x6f, 0x4d, 0x4f, 0x77, 0xa7, 0xf3, 0x57, 0xc8, 0xe9, 0xce, 0xfb, 0xbb, 0x6f, 0x4d, - 0x4f, 0xca, 0xdf, 0xe9, 0xa4, 0x75, 0x0d, 0x92, 0x1e, 0xab, 0xed, 0xb0, 0x76, 0x79, 0x5d, 0xc4, - 0x82, 0xa9, 0x63, 0x75, 0x9d, 0x02, 0x31, 0x2f, 0x43, 0x8f, 0xc1, 0x48, 0xcd, 0x23, 0xad, 0x30, - 0x50, 0x09, 0x71, 0x99, 0x34, 0xbf, 0x20, 0x60, 0x58, 0x95, 0x52, 0x1d, 0x22, 0x10, 0x47, 0x4a, - 0xf9, 0xac, 0x2d, 0x1d, 0x42, 0x1e, 0x52, 0x9c, 0xaa, 0xfc, 0x85, 0x15, 0x25, 0xd4, 0x84, 0x21, - 0x9f, 0x19, 0x2a, 0x44, 0xb8, 0xa9, 0x05, 0xeb, 0x08, 0x37, 0x7c, 0xc8, 0x60, 0x53, 0xc6, 0xfa, - 0x05, 0x0d, 0xfd, 0xac, 0x39, 0x76, 0x34, 0x67, 0xcd, 0x63, 0x30, 0x52, 0x6d, 0xf8, 0xcd, 0x5a, - 0x44, 0x82, 0xf2, 0x24, 0xd3, 0xd8, 0xd9, 0x4c, 0xcc, 0x0b, 0x18, 0x56, 0xa5, 0xe8, 0x6f, 0xc0, - 0x78, 0xd8, 0x49, 0x18, 0x6b, 0xa1, 0xf3, 0x14, 0x97, 0x8f, 0xb3, 0xea, 0x2c, 0x78, 0x68, 0x4d, - 0x2f, 0xc0, 0x66, 0x3d, 0xca, 0xe2, 0x1b, 0x61, 0xcc, 0x52, 0xfb, 0x30, 0x16, 0x7f, 0xda, 0x64, - 0xf1, 0x97, 0xb4, 0x32, 0x6c, 0xd4, 0x44, 0x5f, 0x75, 0xe0, 0x78, 0x2b, 0xab, 0xc0, 0x95, 0xcf, - 0xb0, 0x99, 0xa9, 0xd8, 0x10, 0xf4, 0x33, 0xa8, 0x79, 0xd8, 0x77, 0x17, 0x18, 0x77, 0x77, 0x82, - 0x25, 0xd9, 0x8a, 0x77, 0x83, 0x6a, 0x23, 0x0a, 0x03, 0xb3, 0x7b, 0xf7, 0xdb, 0xba, 0x5a, 0xc6, - 0xf6, 0x76, 0x1e, 0x89, 0xb9, 0xfb, 0x6f, 0xee, 0x4d, 0x9f, 0xca, 0x2d, 0xc2, 0xf9, 0x9d, 0x9a, - 0x5a, 0x80, 0xd3, 0xf9, 0xfc, 0xe1, 0x76, 0x1a, 0xc7, 0x80, 0xae, 0x71, 0x2c, 0xc2, 0xfd, 0x3d, - 0x3b, 0x45, 0x4f, 0x1a, 0x29, 0x6d, 0x3a, 0xe6, 0x49, 0xd3, 0x25, 0x1d, 0x4e, 0xc0, 0x98, 0xfe, - 0xfe, 0x83, 0xfb, 0x7f, 0x07, 0x00, 0x52, 0x3b, 0x39, 0xf2, 0x60, 0x82, 0xdb, 0xe4, 0x2f, 0x2f, - 0xdc, 0xf1, 0xa5, 0xf8, 0x79, 0x03, 0x01, 0xce, 0x20, 0x44, 0x2d, 0x40, 0x1c, 0xc2, 0x7f, 0xdf, - 0x89, 0x6f, 0x95, 0xb9, 0x22, 0xe7, 0xbb, 0x90, 0xe0, 0x1c, 0xc4, 0x74, 0x44, 0x49, 0xb8, 0x4d, - 0x82, 0xab, 0x78, 0xe5, 0x4e, 0x32, 0x2b, 0x70, 0x6f, 0x9c, 0x81, 0x00, 0x67, 0x10, 0x22, 0x17, - 0x86, 0x98, 0x6d, 0x46, 0x06, 0x68, 0x33, 0xf6, 0xc2, 0x24, 0x8d, 0x18, 0x8b, 0x12, 0xf4, 0x65, - 0x07, 0x26, 0x64, 0x82, 0x08, 0x66, 0x0d, 0x95, 0xa1, 0xd9, 0x57, 0x6d, 0xf9, 0x39, 0x2e, 0xea, - 0xd8, 0xd3, 0xc0, 0x47, 0x03, 0x1c, 0xe3, 0x4c, 0x27, 0xdc, 0xe7, 0xe1, 0x44, 0x4e, 0x73, 0x2b, - 0x1a, 0xed, 0x77, 0x1c, 0x28, 0x69, 0x79, 0x0b, 0xd1, 0x6b, 0x30, 0x1a, 0x56, 0xac, 0x47, 0xdb, - 0xad, 0x55, 0xba, 0xa2, 0xed, 0x14, 0x08, 0xa7, 0x04, 0xfb, 0x09, 0x12, 0xcc, 0x4d, 0xb2, 0x78, - 0x8f, 0xbb, 0x7d, 0xe0, 0x20, 0xc1, 0x5f, 0x2d, 0x42, 0x8a, 0xe9, 0x80, 0x89, 0x4b, 0xd2, 0x90, - 0xc2, 0xc2, 0xbe, 0x21, 0x85, 0x35, 0x38, 0xe6, 0x31, 0x5f, 0xf2, 0x1d, 0xa6, 0x2b, 0xe1, 0x69, - 0x6b, 0x4d, 0x0c, 0x38, 0x8b, 0x92, 0x52, 0x89, 0xd3, 0xa6, 0x8c, 0xca, 0xe0, 0x81, 0xa9, 0x54, - 0x4c, 0x0c, 0x38, 0x8b, 0x12, 0xbd, 0x08, 0xe5, 0x2a, 0xbb, 0x7e, 0xcb, 0xc7, 0x78, 0x79, 0xeb, - 0x4a, 0x98, 0xac, 0x47, 0x24, 0x26, 0x41, 0x22, 0x12, 0x93, 0x3d, 0x24, 0x66, 0xa1, 0x3c, 0xdf, - 0xa3, 0x1e, 0xee, 0x89, 0x81, 0xaa, 0x29, 0xcc, 0x19, 0xed, 0x27, 0xbb, 0x8c, 0x89, 0x08, 0x2f, - 0xbd, 0x52, 0x53, 0x2a, 0x7a, 0x21, 0x36, 0xeb, 0xa2, 0x5f, 0x71, 0x60, 0xbc, 0x29, 0xcd, 0xf5, - 0xb8, 0xd3, 0x94, 0x59, 0x36, 0xb1, 0x95, 0xe5, 0xb7, 0xa2, 0x63, 0xe6, 0xb2, 0x84, 0x01, 0xc2, - 0x26, 0xed, 0x6c, 0xee, 0x98, 0x91, 0x3e, 0x73, 0xc7, 0x7c, 0xdf, 0x81, 0xc9, 0x2c, 0x35, 0xb4, - 0x0d, 0x0f, 0xb6, 0xbc, 0x68, 0xfb, 0x72, 0xb0, 0x15, 0xb1, 0x8b, 0x18, 0x09, 0x5f, 0x0c, 0xb3, - 0x5b, 0x09, 0x89, 0x16, 0xbc, 0x5d, 0xee, 0xfe, 0x2c, 0xaa, 0x67, 0x9a, 0x1e, 0x5c, 0xdd, 0xaf, - 0x32, 0xde, 0x1f, 0x17, 0xaa, 0xc0, 0x29, 0x5a, 0x81, 0xa5, 0x96, 0xf3, 0xc3, 0x20, 0x25, 0x52, - 0x60, 0x44, 0x54, 0x30, 0xe0, 0x6a, 0x5e, 0x25, 0x9c, 0xdf, 0xd6, 0xbd, 0x08, 0x43, 0xfc, 0x5e, - 0xdc, 0x5d, 0xf9, 0x8f, 0xdc, 0xff, 0x50, 0x00, 0x29, 0x18, 0xfe, 0xd5, 0x76, 0xc7, 0xd1, 0x43, - 0x34, 0x62, 0x26, 0x25, 0x61, 0xed, 0x60, 0x87, 0xa8, 0x48, 0xe2, 0x28, 0x4a, 0xa8, 0xc4, 0x4c, - 0x6e, 0xf8, 0xc9, 0x7c, 0x58, 0x93, 0x36, 0x0e, 0x26, 0x31, 0x5f, 0x14, 0x30, 0xac, 0x4a, 0xdd, - 0x4f, 0x3a, 0x30, 0x4e, 0x47, 0xd9, 0x6c, 0x92, 0x66, 0x25, 0x21, 0xed, 0x18, 0xc5, 0x50, 0x8c, - 0xe9, 0x3f, 0xf6, 0x4c, 0x81, 0xe9, 0x5d, 0x4a, 0xd2, 0xd6, 0x9c, 0x35, 0x94, 0x08, 0xe6, 0xb4, - 0xdc, 0x37, 0x07, 0x60, 0x54, 0x4d, 0x76, 0x1f, 0xf6, 0xd4, 0x0b, 0x69, 0x7e, 0x55, 0xce, 0x81, - 0xcb, 0x5a, 0x6e, 0xd5, 0x5b, 0x74, 0xea, 0x82, 0x5d, 0x9e, 0x68, 0x22, 0x4d, 0xb4, 0xfa, 0x84, - 0xe9, 0x6a, 0x3e, 0xad, 0xaf, 0x3f, 0xad, 0xbe, 0xf0, 0x39, 0xdf, 0xd0, 0x3d, 0xfd, 0x83, 0xb6, - 0x4e, 0x33, 0xe5, 0xc6, 0xec, 0xed, 0xe2, 0xcf, 0x3c, 0xbd, 0x53, 0xec, 0xeb, 0xe9, 0x9d, 0xc7, - 0x61, 0x90, 0x04, 0x9d, 0x16, 0x13, 0x95, 0x46, 0x99, 0x8a, 0x30, 0x78, 0x31, 0xe8, 0xb4, 0xcc, - 0x91, 0xb1, 0x2a, 0xe8, 0xfd, 0x50, 0xaa, 0x91, 0xb8, 0x1a, 0xf9, 0x2c, 0x7b, 0x82, 0xb0, 0xec, - 0x3c, 0xc0, 0xcc, 0x65, 0x29, 0xd8, 0x6c, 0xa8, 0x37, 0x70, 0x5f, 0x81, 0xa1, 0xf5, 0x66, 0xa7, - 0xee, 0x07, 0xa8, 0x0d, 0x43, 0x3c, 0x97, 0x82, 0x38, 0xed, 0x2d, 0xe8, 0x9d, 0x9c, 0x55, 0x68, - 0x51, 0x28, 0xfc, 0x4a, 0xad, 0xa0, 0xe3, 0xfe, 0x4e, 0x01, 0xa8, 0x6a, 0xbe, 0x34, 0x8f, 0xfe, - 0x76, 0xd7, 0x4b, 0x33, 0x3f, 0x97, 0xf3, 0xd2, 0xcc, 0x38, 0xab, 0x9c, 0xf3, 0xc8, 0x4c, 0x13, - 0xc6, 0x99, 0x73, 0x44, 0x9e, 0x81, 0x42, 0xac, 0x7e, 0xaa, 0xcf, 0xf4, 0x03, 0x7a, 0x53, 0x71, - 0x22, 0xe8, 0x20, 0x6c, 0x22, 0x47, 0xbb, 0x70, 0x82, 0xa7, 0xe9, 0x5c, 0x20, 0x4d, 0x6f, 0xd7, - 0x48, 0xc7, 0xd5, 0x77, 0xca, 0x03, 0xd9, 0x8a, 0x07, 0x78, 0x2f, 0x74, 0xa3, 0xc3, 0x79, 0x34, - 0xdc, 0x3f, 0x18, 0x04, 0xcd, 0x7d, 0xd1, 0xc7, 0xce, 0x7a, 0x39, 0xe3, 0xac, 0x5a, 0xb5, 0xe2, - 0xac, 0x92, 0x1e, 0x20, 0xce, 0xad, 0x4c, 0xff, 0x14, 0xed, 0x54, 0x83, 0x34, 0xdb, 0x62, 0x5f, - 0xaa, 0x4e, 0x5d, 0x22, 0xcd, 0x36, 0x66, 0x25, 0xea, 0xf2, 0xe1, 0x60, 0xcf, 0xcb, 0x87, 0x0d, - 0x28, 0xd6, 0xbd, 0x4e, 0x9d, 0x88, 0x68, 0x4d, 0x0b, 0x7e, 0x49, 0x76, 0x1d, 0x82, 0xfb, 0x25, - 0xd9, 0xbf, 0x98, 0x13, 0xa0, 0x8c, 0xa1, 0x21, 0xc3, 0x57, 0x84, 0x41, 0xd7, 0x02, 0x63, 0x50, - 0x11, 0x31, 0x9c, 0x31, 0xa8, 0x9f, 0x38, 0x25, 0x86, 0xda, 0x30, 0x5c, 0xe5, 0x09, 0x53, 0x84, - 0x7c, 0x73, 0xd9, 0xc6, 0xed, 0x4a, 0x86, 0x90, 0x5b, 0x5e, 0xc4, 0x0f, 0x2c, 0xc9, 0xb8, 0xe7, - 0xa1, 0xa4, 0x3d, 0x8e, 0x41, 0x3f, 0x83, 0xca, 0xd5, 0xa1, 0x7d, 0x86, 0x05, 0x2f, 0xf1, 0x30, - 0x2b, 0x71, 0xbf, 0x39, 0x08, 0xca, 0xee, 0xa6, 0xdf, 0x05, 0xf4, 0xaa, 0x5a, 0x66, 0x21, 0xe3, - 0x5e, 0x7c, 0x18, 0x60, 0x51, 0x4a, 0x65, 0xc0, 0x16, 0x89, 0xea, 0x4a, 0xe7, 0x16, 0xac, 0x5d, - 0xc9, 0x80, 0xab, 0x7a, 0x21, 0x36, 0xeb, 0x52, 0x01, 0xbe, 0x25, 0xdc, 0xf9, 0xd9, 0x60, 0x69, - 0xe9, 0xe6, 0xc7, 0xaa, 0x06, 0x4b, 0x4d, 0xd0, 0xd2, 0xbc, 0xff, 0x22, 0x68, 0xd3, 0x86, 0xf3, - 0x49, 0xc3, 0xca, 0x83, 0xab, 0x74, 0x08, 0x36, 0xa8, 0xa2, 0x25, 0x38, 0x1e, 0x93, 0x64, 0xed, - 0x7a, 0x40, 0x22, 0x95, 0x36, 0x40, 0xe4, 0xbe, 0x50, 0x37, 0x25, 0x2a, 0xd9, 0x0a, 0xb8, 0xbb, - 0x4d, 0x6e, 0x9c, 0x6b, 0xf1, 0xc0, 0x71, 0xae, 0x0b, 0x30, 0xb9, 0xe5, 0xf9, 0xcd, 0x4e, 0x44, - 0x7a, 0x46, 0xcb, 0x2e, 0x66, 0xca, 0x71, 0x57, 0x0b, 0x76, 0x59, 0xa7, 0xe9, 0xd5, 0xe3, 0xf2, - 0xb0, 0x76, 0x59, 0x87, 0x02, 0x30, 0x87, 0xbb, 0xbf, 0xe5, 0x00, 0x4f, 0x3a, 0x34, 0xbb, 0xb5, - 0xe5, 0x07, 0x7e, 0xb2, 0x8b, 0xbe, 0xe6, 0xc0, 0x64, 0x10, 0xd6, 0xc8, 0x6c, 0x90, 0xf8, 0x12, - 0x68, 0x2f, 0x13, 0x3c, 0xa3, 0x75, 0x25, 0x83, 0x9e, 0x67, 0xb0, 0xc8, 0x42, 0x71, 0x57, 0x37, - 0xdc, 0x5b, 0x0e, 0x94, 0x18, 0x06, 0x11, 0x55, 0xaf, 0xb9, 0x00, 0x9d, 0xfd, 0x5d, 0x80, 0xf4, - 0xf3, 0x46, 0x84, 0xf9, 0x17, 0xd2, 0x7c, 0x21, 0xc2, 0x6f, 0x78, 0xbf, 0x66, 0xf2, 0x36, 0x2b, - 0xe0, 0xee, 0x36, 0x14, 0x11, 0xb3, 0xf6, 0xfa, 0xa4, 0x59, 0x53, 0x47, 0x16, 0x5f, 0xe5, 0x0a, - 0xd1, 0x95, 0x6c, 0x05, 0xdc, 0xdd, 0x06, 0xcd, 0x18, 0xa2, 0x33, 0xbf, 0x4d, 0x35, 0xd1, 0x5b, - 0xd2, 0x75, 0xcf, 0xc0, 0xa9, 0xdc, 0xd9, 0x73, 0xbf, 0x3f, 0x00, 0x66, 0xe2, 0x28, 0xf4, 0x2c, - 0x14, 0x9b, 0x2c, 0x95, 0x89, 0x73, 0x87, 0x19, 0xc1, 0xd8, 0x42, 0xe1, 0xb9, 0x4e, 0x38, 0x26, - 0xb4, 0x00, 0x25, 0x96, 0x8d, 0x4a, 0x24, 0x9a, 0x29, 0x18, 0x39, 0x1e, 0xf8, 0x47, 0x51, 0x29, - 0x66, 0xf4, 0x9f, 0x58, 0x6f, 0x86, 0x5e, 0x85, 0xe1, 0x4d, 0x9e, 0x93, 0xd3, 0x9e, 0x73, 0x54, - 0x24, 0xf9, 0x64, 0x42, 0xa4, 0xcc, 0xf8, 0x79, 0x2b, 0xfd, 0x17, 0x4b, 0x8a, 0x68, 0x17, 0x46, - 0x3c, 0xb9, 0xa0, 0x07, 0x6d, 0xdd, 0x3c, 0x31, 0x36, 0x8f, 0x08, 0x2d, 0x92, 0x0b, 0x58, 0x91, - 0xcb, 0xc4, 0x60, 0x15, 0xfb, 0x8a, 0xc1, 0xfa, 0xb6, 0x03, 0x90, 0x3e, 0x60, 0x82, 0x6e, 0xc0, - 0x48, 0xfc, 0x94, 0x61, 0xd1, 0xb1, 0x91, 0x72, 0x40, 0x60, 0xd4, 0xae, 0xe5, 0x0a, 0x08, 0x56, - 0xd4, 0x6e, 0x67, 0x85, 0xfa, 0x99, 0x03, 0x27, 0xf3, 0x1e, 0x5a, 0xb9, 0x87, 0x3d, 0x3e, 0xa8, - 0x01, 0x4a, 0x34, 0x58, 0x8f, 0xc8, 0x96, 0x7f, 0x23, 0x27, 0x33, 0x34, 0x2f, 0xc0, 0x69, 0x1d, - 0xf7, 0x8d, 0x61, 0x50, 0x84, 0x0f, 0xc9, 0x60, 0xf5, 0x28, 0x55, 0x2e, 0xeb, 0xe9, 0x4d, 0x51, - 0x55, 0x0f, 0x33, 0x28, 0x16, 0xa5, 0x54, 0xc1, 0x94, 0xb7, 0x07, 0xc4, 0x79, 0xc5, 0x56, 0xa1, - 0xbc, 0x65, 0x80, 0x55, 0x69, 0x9e, 0x09, 0xac, 0x78, 0x24, 0x26, 0xb0, 0x21, 0xfb, 0x26, 0x30, - 0xca, 0xfa, 0xc3, 0x26, 0x99, 0xc5, 0x57, 0x84, 0xda, 0x94, 0xb2, 0x7e, 0x0e, 0xc6, 0xb2, 0xfc, - 0x0e, 0x8d, 0x40, 0xe8, 0x77, 0x9d, 0x7d, 0xac, 0x6c, 0xa3, 0xb6, 0x0e, 0xc4, 0xdc, 0x34, 0x7a, - 0x4c, 0x07, 0xbc, 0x13, 0xd3, 0xdd, 0xd7, 0x1d, 0x38, 0x4e, 0x82, 0x6a, 0xb4, 0xcb, 0xf0, 0x08, - 0x6c, 0xc2, 0x39, 0x7f, 0xd5, 0xc6, 0xe6, 0xbb, 0x98, 0x45, 0xce, 0x7d, 0x60, 0x5d, 0x60, 0xdc, - 0xdd, 0x0d, 0xb4, 0x06, 0x23, 0x55, 0x4f, 0xac, 0x88, 0xd2, 0x41, 0x56, 0x04, 0x77, 0x31, 0xce, - 0x8a, 0xa5, 0xa0, 0x90, 0xb8, 0x3f, 0x29, 0xc0, 0x89, 0x9c, 0x2e, 0xb1, 0x9b, 0x66, 0x2d, 0xba, - 0x22, 0x2f, 0xd7, 0xb2, 0xfb, 0x71, 0x59, 0xc0, 0xb1, 0xaa, 0x81, 0xd6, 0xe1, 0xe4, 0x76, 0x2b, - 0x4e, 0xb1, 0xcc, 0x87, 0x41, 0x42, 0x6e, 0xc8, 0xdd, 0x29, 0x1d, 0xf7, 0x27, 0x97, 0x73, 0xea, - 0xe0, 0xdc, 0x96, 0x54, 0x76, 0x23, 0x81, 0xb7, 0xd9, 0x24, 0x69, 0x91, 0xb8, 0x27, 0xa9, 0x64, - 0xb7, 0x8b, 0x99, 0x72, 0xdc, 0xd5, 0x02, 0x7d, 0xd6, 0x81, 0xb3, 0x31, 0x89, 0x76, 0x48, 0x54, - 0xf1, 0x6b, 0x64, 0xbe, 0x13, 0x27, 0x61, 0x8b, 0x44, 0x77, 0x68, 0x57, 0x9e, 0xbe, 0xb9, 0x37, - 0x7d, 0xb6, 0xd2, 0x1b, 0x1b, 0xde, 0x8f, 0x94, 0xfb, 0x59, 0x07, 0x26, 0x2a, 0xcc, 0xea, 0xa0, - 0x14, 0x09, 0xdb, 0x89, 0x54, 0x1f, 0x55, 0x99, 0x3d, 0x32, 0x5c, 0xd1, 0xcc, 0xc5, 0xe1, 0xbe, - 0x04, 0x93, 0x15, 0xd2, 0xf2, 0xda, 0x0d, 0x76, 0xc9, 0x99, 0x07, 0xae, 0x9d, 0x87, 0xd1, 0x58, - 0xc2, 0xb2, 0x6f, 0x27, 0xa9, 0xca, 0x38, 0xad, 0x83, 0x1e, 0xe1, 0x41, 0x76, 0xf2, 0xaa, 0xd4, - 0x28, 0x57, 0xb9, 0x78, 0x64, 0x5e, 0x8c, 0x65, 0x99, 0xfb, 0xa6, 0x03, 0x63, 0x69, 0x7b, 0xb2, - 0x85, 0xea, 0x70, 0xac, 0xaa, 0x5d, 0x33, 0x4c, 0x2f, 0x78, 0xf4, 0x7f, 0x23, 0x91, 0xe7, 0x77, - 0x36, 0x91, 0xe0, 0x2c, 0xd6, 0x83, 0xc7, 0x28, 0x7e, 0xa1, 0x00, 0xc7, 0x54, 0x57, 0x85, 0x87, - 0xf5, 0xf5, 0x6c, 0x28, 0x21, 0xb6, 0x91, 0xa3, 0xc8, 0x9c, 0xfb, 0x7d, 0xc2, 0x09, 0x5f, 0xcf, - 0x86, 0x13, 0x1e, 0x2a, 0xf9, 0x2e, 0xa7, 0xf1, 0xb7, 0x0b, 0x30, 0xa2, 0x32, 0x26, 0x3d, 0x0b, - 0x45, 0xa6, 0x47, 0xdf, 0x9d, 0x40, 0xcc, 0x74, 0x72, 0xcc, 0x31, 0x51, 0x94, 0x4c, 0x35, 0xb8, - 0xe3, 0xac, 0xbb, 0xa3, 0xdc, 0xf2, 0xea, 0x45, 0x09, 0xe6, 0x98, 0xd0, 0x32, 0x0c, 0x90, 0xa0, - 0x26, 0x24, 0xe3, 0x83, 0x23, 0x64, 0xaf, 0x9c, 0x5d, 0x0c, 0x6a, 0x98, 0x62, 0x61, 0x69, 0xdb, - 0xb8, 0x00, 0x94, 0x79, 0xd3, 0x46, 0x48, 0x3f, 0xa2, 0xd4, 0xfd, 0x00, 0x18, 0x09, 0xfb, 0xc4, - 0x43, 0x00, 0x42, 0xe3, 0xec, 0x7e, 0x88, 0x4c, 0xa8, 0x9a, 0x69, 0x1d, 0xf7, 0x57, 0x06, 0x60, - 0xa8, 0xd2, 0xd9, 0xa4, 0x4a, 0xc2, 0xb7, 0x1c, 0x38, 0x71, 0x3d, 0x93, 0xd3, 0x3a, 0xdd, 0x24, - 0x57, 0xed, 0x99, 0xaf, 0xf5, 0x98, 0xbb, 0xb3, 0xf2, 0xc5, 0xff, 0x9c, 0x42, 0x9c, 0xd7, 0x1d, - 0x23, 0xad, 0xec, 0xc0, 0xa1, 0xa4, 0x95, 0xbd, 0x71, 0xc8, 0x97, 0x4e, 0xc6, 0x7b, 0x5d, 0x38, - 0x71, 0xff, 0xa0, 0x08, 0xc0, 0xbf, 0xc6, 0x5a, 0x3b, 0xe9, 0xc7, 0xc8, 0xf8, 0x34, 0x8c, 0xd5, - 0x49, 0x40, 0x22, 0x19, 0x51, 0x99, 0x79, 0x6f, 0x69, 0x49, 0x2b, 0xc3, 0x46, 0x4d, 0xa6, 0xd4, - 0x04, 0x49, 0xb4, 0xcb, 0x05, 0xdf, 0xec, 0xc5, 0x12, 0x55, 0x82, 0xb5, 0x5a, 0x19, 0xa5, 0xb7, - 0x78, 0x3b, 0xa5, 0x17, 0xbd, 0x1f, 0x26, 0xcc, 0x2c, 0x2d, 0x42, 0xda, 0x53, 0xa1, 0x02, 0x66, - 0x72, 0x17, 0x9c, 0xa9, 0x4d, 0x77, 0x41, 0x2d, 0xda, 0xc5, 0x9d, 0x40, 0x88, 0x7d, 0x6a, 0x17, - 0x2c, 0x30, 0x28, 0x16, 0xa5, 0x2c, 0xbd, 0x05, 0x3b, 0x00, 0x39, 0x5c, 0xa4, 0xc8, 0x48, 0xd3, - 0x5b, 0x68, 0x65, 0xd8, 0xa8, 0x49, 0x29, 0x08, 0x23, 0x2d, 0x98, 0xfb, 0x2c, 0x63, 0x59, 0x6d, - 0xc3, 0x44, 0x68, 0x1a, 0x97, 0xb8, 0x0c, 0xf4, 0xee, 0x3e, 0x97, 0x9e, 0xd1, 0x96, 0x87, 0x78, - 0x64, 0x6c, 0x51, 0x19, 0xfc, 0x54, 0xee, 0xd5, 0xef, 0x5f, 0x8c, 0x99, 0x01, 0xb9, 0x3d, 0xaf, - 0x48, 0xac, 0xc3, 0xc9, 0x76, 0x58, 0x5b, 0x8f, 0xfc, 0x30, 0xf2, 0x93, 0xdd, 0xf9, 0xa6, 0x17, - 0xc7, 0x6c, 0x61, 0x8c, 0x9b, 0xf2, 0xd0, 0x7a, 0x4e, 0x1d, 0x9c, 0xdb, 0x92, 0x6a, 0x28, 0x6d, - 0x01, 0x64, 0x61, 0x71, 0x45, 0x2e, 0xd1, 0xc9, 0x8a, 0x58, 0x95, 0xba, 0x27, 0xe0, 0x78, 0xa5, - 0xd3, 0x6e, 0x37, 0x7d, 0x52, 0x53, 0xfe, 0x18, 0xf7, 0x03, 0x70, 0x4c, 0x24, 0x9d, 0x55, 0xd2, - 0xc7, 0x81, 0x52, 0xa4, 0xbb, 0x7f, 0xee, 0xc0, 0xb1, 0x4c, 0x10, 0x12, 0x7a, 0x35, 0x2b, 0x33, - 0xd8, 0x49, 0x86, 0xaa, 0x49, 0x0b, 0x22, 0xb3, 0x69, 0x9e, 0xfc, 0xd1, 0x90, 0x37, 0x08, 0xac, - 0xdd, 0xdc, 0x61, 0x71, 0xf6, 0xfc, 0x48, 0xd1, 0xaf, 0x21, 0xb8, 0x9f, 0x29, 0x40, 0x7e, 0xe4, - 0x17, 0xfa, 0x58, 0xf7, 0x04, 0x3c, 0x6b, 0x71, 0x02, 0x44, 0xe8, 0x59, 0xef, 0x39, 0x08, 0xcc, - 0x39, 0x58, 0xb5, 0x34, 0x07, 0x82, 0x6e, 0xf7, 0x4c, 0xfc, 0x2f, 0x07, 0x4a, 0x1b, 0x1b, 0x2b, - 0xea, 0x9c, 0xc3, 0x70, 0x3a, 0xe6, 0x99, 0x09, 0x98, 0x83, 0x7c, 0x3e, 0x6c, 0xb5, 0xb9, 0xbf, - 0x5c, 0xf8, 0xf1, 0x59, 0xfe, 0xdf, 0x4a, 0x6e, 0x0d, 0xdc, 0xa3, 0x25, 0xba, 0x0c, 0x27, 0xf4, - 0x92, 0x8a, 0xf6, 0xdc, 0x62, 0x51, 0x64, 0x03, 0xea, 0x2e, 0xc6, 0x79, 0x6d, 0xb2, 0xa8, 0x84, - 0xad, 0x97, 0x1d, 0x57, 0x39, 0xa8, 0x44, 0x31, 0xce, 0x6b, 0xe3, 0xae, 0x41, 0x69, 0xc3, 0x8b, - 0xd4, 0xc0, 0x3f, 0x08, 0x93, 0xd5, 0xb0, 0x25, 0xcd, 0x4c, 0x2b, 0x64, 0x87, 0x34, 0xc5, 0x90, - 0xf9, 0x1b, 0x27, 0x99, 0x32, 0xdc, 0x55, 0xdb, 0xfd, 0xef, 0xe7, 0x40, 0xdd, 0xb4, 0xec, 0xe3, - 0x84, 0x69, 0xab, 0x98, 0xd8, 0xa2, 0xe5, 0x98, 0x58, 0xc5, 0x6b, 0x33, 0x71, 0xb1, 0x49, 0x1a, - 0x17, 0x3b, 0x64, 0x3b, 0x2e, 0x56, 0x49, 0x9c, 0x5d, 0xb1, 0xb1, 0x5f, 0x71, 0x60, 0x2c, 0x08, - 0x6b, 0x44, 0x59, 0x85, 0x87, 0x99, 0xd8, 0xfb, 0xa2, 0xbd, 0x2b, 0x06, 0x3c, 0xc6, 0x53, 0xa0, - 0xe7, 0xf1, 0xda, 0xea, 0x88, 0xd2, 0x8b, 0xb0, 0xd1, 0x0f, 0xb4, 0xa8, 0x19, 0x3e, 0xb9, 0x73, - 0xe5, 0x81, 0x3c, 0x7d, 0xe5, 0xb6, 0x56, 0xcc, 0x1b, 0x9a, 0xdc, 0x34, 0x6a, 0xcb, 0xa0, 0x27, - 0xaf, 0xcf, 0x69, 0x3e, 0x22, 0x99, 0xc2, 0x3a, 0x95, 0xa7, 0x5c, 0x18, 0xe2, 0x81, 0xdd, 0x22, - 0xef, 0x14, 0x73, 0x5d, 0xf2, 0xa0, 0x6f, 0x2c, 0x4a, 0x50, 0x22, 0x83, 0x25, 0x4a, 0xb6, 0x1e, - 0xa4, 0x30, 0x82, 0x31, 0xf2, 0xa3, 0x25, 0xd0, 0x33, 0xba, 0x1e, 0x3c, 0xd6, 0x8f, 0x1e, 0x3c, - 0xde, 0x53, 0x07, 0xfe, 0xbc, 0x03, 0x63, 0x55, 0xed, 0x81, 0x88, 0xf2, 0x63, 0xb6, 0x1e, 0xc2, - 0xce, 0x7b, 0xc7, 0x83, 0x7b, 0xc4, 0x8c, 0x07, 0x29, 0x0c, 0xea, 0x2c, 0xd9, 0x26, 0x53, 0xfa, - 0xd9, 0xd1, 0x6f, 0x25, 0xbf, 0x86, 0x69, 0x44, 0x90, 0x41, 0xa7, 0x14, 0x86, 0x05, 0x2d, 0xf4, - 0x1a, 0x8c, 0xc8, 0xbb, 0x01, 0x22, 0x86, 0x1e, 0xdb, 0xb0, 0xd2, 0x9b, 0x7e, 0x50, 0x99, 0xa1, - 0x8f, 0x43, 0xb1, 0xa2, 0x88, 0x1a, 0x30, 0x50, 0xf3, 0xea, 0x22, 0x9a, 0x7e, 0xd5, 0x4e, 0x06, - 0x54, 0x49, 0x93, 0xe9, 0x67, 0x0b, 0xb3, 0x4b, 0x98, 0x92, 0x40, 0x37, 0xd2, 0x0c, 0xfb, 0x93, - 0xd6, 0x4e, 0x5f, 0x53, 0x4c, 0xe2, 0x66, 0x8d, 0xae, 0x84, 0xfd, 0x35, 0xe1, 0x3a, 0xfe, 0x6b, - 0x8c, 0xec, 0xa2, 0x9d, 0x14, 0xaa, 0x3c, 0x5f, 0x4b, 0xea, 0x7e, 0xa6, 0x54, 0x1a, 0x49, 0xd2, - 0x2e, 0xff, 0xbc, 0x2d, 0x2a, 0x2c, 0xeb, 0x08, 0x7f, 0xb3, 0x7c, 0x63, 0x63, 0x1d, 0x33, 0xec, - 0xa8, 0x09, 0x43, 0x6d, 0x16, 0x01, 0x53, 0x7e, 0xa7, 0xad, 0xb3, 0x85, 0x47, 0xd4, 0xf0, 0xb5, - 0xc9, 0xff, 0xc7, 0x82, 0x06, 0xba, 0x08, 0xc3, 0xfc, 0xa1, 0x18, 0x7e, 0x9b, 0xa1, 0x74, 0x61, - 0xaa, 0xf7, 0x73, 0x33, 0xe9, 0x41, 0xc1, 0x7f, 0xc7, 0x58, 0xb6, 0x45, 0x5f, 0x70, 0x60, 0x82, - 0x72, 0xd4, 0xf4, 0x65, 0x9b, 0x32, 0xb2, 0xc5, 0xb3, 0xae, 0xc6, 0x54, 0x22, 0x91, 0xbc, 0x46, - 0xa9, 0x49, 0x97, 0x0d, 0x72, 0x38, 0x43, 0x1e, 0xbd, 0x0e, 0x23, 0xb1, 0x5f, 0x23, 0x55, 0x2f, - 0x8a, 0xcb, 0x27, 0x0e, 0xa7, 0x2b, 0xa9, 0xbf, 0x46, 0x10, 0xc2, 0x8a, 0x24, 0xfa, 0x75, 0xf6, - 0xb4, 0x68, 0xb5, 0xe1, 0xef, 0x90, 0x95, 0xb0, 0xca, 0xc5, 0xfa, 0x93, 0xb6, 0xf6, 0xbe, 0xf4, - 0x4c, 0x49, 0xcc, 0xc2, 0x8d, 0x61, 0x92, 0xc3, 0x59, 0xfa, 0xe8, 0xef, 0x38, 0x70, 0x8a, 0x3f, - 0x12, 0x90, 0x7d, 0xd5, 0xe2, 0xd4, 0x1d, 0xda, 0x67, 0xd8, 0x35, 0x8c, 0xd9, 0x3c, 0x94, 0x38, - 0x9f, 0x12, 0x4b, 0xe9, 0x6b, 0x3e, 0x44, 0x74, 0xda, 0xaa, 0xdf, 0xb2, 0xff, 0xc7, 0x87, 0xd0, - 0x93, 0x50, 0x6a, 0x8b, 0xe3, 0xd0, 0x8f, 0x5b, 0xec, 0x52, 0xcd, 0x00, 0xbf, 0xee, 0xb8, 0x9e, - 0x82, 0xb1, 0x5e, 0xc7, 0xc8, 0xef, 0xfc, 0xf8, 0x7e, 0xf9, 0x9d, 0xd1, 0x55, 0x28, 0x25, 0x61, - 0x53, 0xa4, 0x38, 0x8d, 0xcb, 0x65, 0xb6, 0x02, 0xcf, 0xe5, 0xed, 0xad, 0x0d, 0x55, 0x2d, 0xd5, - 0x64, 0x53, 0x58, 0x8c, 0x75, 0x3c, 0x2c, 0x90, 0x59, 0x3c, 0xbe, 0x10, 0x31, 0x15, 0xf6, 0xfe, - 0x4c, 0x20, 0xb3, 0x5e, 0x88, 0xcd, 0xba, 0x68, 0x09, 0x8e, 0xb7, 0xbb, 0x74, 0xe0, 0x29, 0xd3, - 0xcf, 0xdf, 0xad, 0x00, 0x77, 0xb7, 0x31, 0xb4, 0xdf, 0xb3, 0xfb, 0x69, 0xbf, 0x3d, 0xb2, 0x1d, - 0x3f, 0x70, 0x27, 0xd9, 0x8e, 0x51, 0x0d, 0x1e, 0xf0, 0x3a, 0x49, 0xc8, 0x32, 0xeb, 0x98, 0x4d, - 0x78, 0x4c, 0xf7, 0x43, 0x3c, 0x4c, 0xfc, 0xe6, 0xde, 0xf4, 0x03, 0xb3, 0xfb, 0xd4, 0xc3, 0xfb, - 0x62, 0x41, 0xaf, 0xc0, 0x08, 0x11, 0x19, 0x9b, 0xcb, 0x3f, 0x67, 0x4b, 0x48, 0x30, 0x73, 0x40, - 0xcb, 0x70, 0x59, 0x0e, 0xc3, 0x8a, 0x1e, 0xda, 0x80, 0x52, 0x23, 0x8c, 0x93, 0xd9, 0xa6, 0xef, - 0xc5, 0x24, 0x2e, 0x3f, 0xc8, 0x16, 0x4d, 0xae, 0xec, 0x75, 0x49, 0x56, 0x4b, 0xd7, 0xcc, 0xa5, - 0xb4, 0x25, 0xd6, 0xd1, 0x20, 0xc2, 0xbc, 0x97, 0x2c, 0xa0, 0x5d, 0x3a, 0x82, 0xce, 0xb1, 0x81, - 0x3d, 0x9a, 0x87, 0x79, 0x3d, 0xac, 0x55, 0xcc, 0xda, 0xca, 0x7d, 0xa9, 0x03, 0x71, 0x16, 0x27, - 0x7a, 0x1a, 0xc6, 0xda, 0x61, 0xad, 0xd2, 0x26, 0xd5, 0x75, 0x2f, 0xa9, 0x36, 0xca, 0xd3, 0xa6, - 0xd5, 0x6d, 0x5d, 0x2b, 0xc3, 0x46, 0x4d, 0xd4, 0x86, 0xe1, 0x16, 0x4f, 0xb9, 0x50, 0x7e, 0xd8, - 0x96, 0x6e, 0x23, 0x72, 0x38, 0x70, 0x79, 0x41, 0xfc, 0xc0, 0x92, 0x0c, 0xfa, 0xc7, 0x0e, 0x1c, - 0xcb, 0x5c, 0x13, 0x2b, 0xbf, 0xc3, 0x9a, 0xc8, 0x62, 0x22, 0x9e, 0x7b, 0x94, 0x4d, 0x9f, 0x09, - 0xbc, 0xd5, 0x0d, 0xc2, 0xd9, 0x1e, 0xf1, 0x79, 0x61, 0x79, 0x53, 0xca, 0x8f, 0xd8, 0x9b, 0x17, - 0x86, 0x50, 0xce, 0x0b, 0xfb, 0x81, 0x25, 0x19, 0xf4, 0x38, 0x0c, 0x8b, 0x14, 0x87, 0xe5, 0x47, - 0x4d, 0x17, 0xb4, 0xc8, 0x84, 0x88, 0x65, 0xf9, 0xd4, 0x07, 0xe0, 0x78, 0x97, 0xea, 0x76, 0xa0, - 0xe4, 0x1d, 0xbf, 0xe9, 0x80, 0x7e, 0xaf, 0xdc, 0xfa, 0x33, 0x29, 0x4f, 0xc3, 0x58, 0x95, 0xbf, - 0x49, 0xc9, 0x6f, 0xa6, 0x0f, 0x9a, 0xf6, 0xcf, 0x79, 0xad, 0x0c, 0x1b, 0x35, 0xdd, 0x4b, 0x80, - 0xba, 0x73, 0xd8, 0xdf, 0x51, 0x66, 0xa8, 0x7f, 0xea, 0xc0, 0xb8, 0x21, 0x33, 0x58, 0x77, 0x32, - 0x2e, 0x02, 0x6a, 0xf9, 0x51, 0x14, 0x46, 0xfa, 0xe3, 0x7f, 0x22, 0x0a, 0x8c, 0xdd, 0xcf, 0x5b, - 0xed, 0x2a, 0xc5, 0x39, 0x2d, 0xdc, 0xdf, 0x19, 0x84, 0x34, 0x5e, 0x5c, 0x25, 0x09, 0x76, 0x7a, - 0x26, 0x09, 0x7e, 0x02, 0x46, 0x5e, 0x8a, 0xc3, 0x60, 0x3d, 0x4d, 0x25, 0xac, 0xbe, 0xc5, 0x33, - 0x95, 0xb5, 0x2b, 0xac, 0xa6, 0xaa, 0xc1, 0x6a, 0xbf, 0xbc, 0xe8, 0x37, 0x93, 0xee, 0x5c, 0xb3, - 0xcf, 0x3c, 0xcb, 0xe1, 0x58, 0xd5, 0x60, 0xef, 0x00, 0xee, 0x10, 0x65, 0x18, 0x4f, 0xdf, 0x01, - 0xe4, 0xcf, 0x53, 0xb0, 0x32, 0x74, 0x1e, 0x46, 0x95, 0x51, 0x5d, 0x58, 0xea, 0xd5, 0x4c, 0x29, - 0xcb, 0x3b, 0x4e, 0xeb, 0x30, 0x81, 0x50, 0x18, 0x62, 0x85, 0x09, 0xa5, 0x62, 0x43, 0x3d, 0xc9, - 0x98, 0x76, 0x39, 0x6f, 0x97, 0x60, 0xac, 0x48, 0xe6, 0x39, 0x5a, 0x47, 0x0f, 0xc5, 0xd1, 0xaa, - 0x5d, 0x5e, 0x28, 0xf6, 0x7b, 0x79, 0xc1, 0x5c, 0xdb, 0x23, 0x7d, 0xad, 0xed, 0x4f, 0x0d, 0xc0, - 0xf0, 0x73, 0x24, 0x62, 0x29, 0xd6, 0x1f, 0x87, 0xe1, 0x1d, 0xfe, 0x6f, 0xf6, 0xe6, 0xab, 0xa8, - 0x81, 0x65, 0x39, 0xfd, 0x6e, 0x9b, 0x1d, 0xbf, 0x59, 0x5b, 0x48, 0x77, 0x71, 0x9a, 0x9d, 0x51, - 0x16, 0xe0, 0xb4, 0x0e, 0x6d, 0x50, 0xa7, 0x92, 0x7d, 0xab, 0xe5, 0x77, 0x3d, 0x71, 0xbf, 0x24, - 0x0b, 0x70, 0x5a, 0x07, 0x3d, 0x0a, 0x43, 0x75, 0x3f, 0xd9, 0xf0, 0xea, 0x59, 0x37, 0xe1, 0x12, - 0x83, 0x62, 0x51, 0xca, 0xdc, 0x44, 0x7e, 0xb2, 0x11, 0x11, 0x66, 0xd9, 0xed, 0x4a, 0xbc, 0xb1, - 0xa4, 0x95, 0x61, 0xa3, 0x26, 0xeb, 0x52, 0x28, 0x46, 0x26, 0x42, 0x58, 0xd3, 0x2e, 0xc9, 0x02, - 0x9c, 0xd6, 0xa1, 0xeb, 0xbf, 0x1a, 0xb6, 0xda, 0x7e, 0x53, 0x04, 0x57, 0x6b, 0xeb, 0x7f, 0x5e, - 0xc0, 0xb1, 0xaa, 0x41, 0x6b, 0x53, 0x16, 0x46, 0xd9, 0x4f, 0xf6, 0xcd, 0xb5, 0x75, 0x01, 0xc7, - 0xaa, 0x86, 0xfb, 0x1c, 0x8c, 0xf3, 0x9d, 0x3c, 0xdf, 0xf4, 0xfc, 0xd6, 0xd2, 0x3c, 0xba, 0xd8, - 0x75, 0x79, 0xe1, 0xf1, 0x9c, 0xcb, 0x0b, 0xa7, 0x8c, 0x46, 0xdd, 0x97, 0x18, 0xdc, 0x1f, 0x16, - 0x60, 0xe4, 0x08, 0x9f, 0xad, 0x3c, 0xf2, 0x17, 0x98, 0xd1, 0x8d, 0xcc, 0x93, 0x95, 0xeb, 0x36, - 0xef, 0x22, 0xed, 0xfb, 0x5c, 0xe5, 0x7f, 0x2d, 0xc0, 0x69, 0x59, 0x55, 0xea, 0x72, 0x4b, 0xf3, - 0xec, 0xb1, 0xb0, 0xc3, 0x9f, 0xe8, 0xc8, 0x98, 0xe8, 0x75, 0x7b, 0xda, 0xe8, 0xd2, 0x7c, 0xcf, - 0xa9, 0x7e, 0x25, 0x33, 0xd5, 0xd8, 0x2a, 0xd5, 0xfd, 0x27, 0xfb, 0x2f, 0x1c, 0x98, 0xca, 0x9f, - 0xec, 0x23, 0x78, 0x25, 0xf4, 0x75, 0xf3, 0x95, 0xd0, 0x5f, 0xb4, 0xb7, 0xc4, 0xcc, 0xa1, 0xf4, - 0x78, 0x2f, 0xf4, 0xcf, 0x1c, 0x38, 0x29, 0x1b, 0xb0, 0xd3, 0x73, 0xce, 0x0f, 0x58, 0x24, 0xcb, - 0xe1, 0x2f, 0xb3, 0xd7, 0x8c, 0x65, 0xf6, 0x82, 0xbd, 0x81, 0xeb, 0xe3, 0xe8, 0xf9, 0xba, 0xfa, - 0x9f, 0x3a, 0x50, 0xce, 0x6b, 0x70, 0x04, 0x9f, 0xfc, 0x55, 0xf3, 0x93, 0x3f, 0x77, 0x38, 0x23, - 0xef, 0xfd, 0xc1, 0xcb, 0xbd, 0x26, 0x0a, 0x35, 0xa5, 0x5c, 0xe5, 0xd8, 0xf2, 0xd1, 0x72, 0x12, - 0xf9, 0x02, 0x5a, 0x13, 0x86, 0x62, 0x16, 0xb5, 0x21, 0x96, 0xc0, 0x25, 0x1b, 0xd2, 0x16, 0xc5, - 0x27, 0x6c, 0xec, 0xec, 0x7f, 0x2c, 0x68, 0xb8, 0xbf, 0x55, 0x80, 0x33, 0xea, 0xf5, 0x5f, 0xb2, - 0x43, 0x9a, 0xe9, 0xfe, 0x60, 0x0f, 0x52, 0x78, 0xea, 0xa7, 0xbd, 0x07, 0x29, 0x52, 0x12, 0xe9, - 0x5e, 0x48, 0x61, 0x58, 0xa3, 0x89, 0x2a, 0x70, 0x8a, 0x3d, 0x20, 0xb1, 0xe8, 0x07, 0x5e, 0xd3, - 0x7f, 0x85, 0x44, 0x98, 0xb4, 0xc2, 0x1d, 0x4f, 0xde, 0xd7, 0x50, 0x97, 0x9f, 0x17, 0xf3, 0x2a, - 0xe1, 0xfc, 0xb6, 0x5d, 0x1a, 0xf7, 0x40, 0xbf, 0x1a, 0xb7, 0xfb, 0x27, 0x0e, 0x8c, 0x1d, 0xe1, - 0x5b, 0xc9, 0xa1, 0xb9, 0x25, 0x9e, 0xb1, 0xb7, 0x25, 0x7a, 0x6c, 0x83, 0xbd, 0x22, 0x74, 0x3d, - 0x1f, 0x8b, 0x3e, 0xed, 0xa8, 0xb8, 0x16, 0x1e, 0x3c, 0xf8, 0x61, 0x7b, 0xfd, 0x38, 0x48, 0xc6, - 0x4c, 0xf4, 0xf5, 0x4c, 0x1a, 0xd1, 0x82, 0xad, 0x5c, 0x58, 0x5d, 0xbd, 0xb9, 0x83, 0x74, 0xa2, - 0x5f, 0x71, 0x00, 0x78, 0x3f, 0x45, 0x16, 0x72, 0xda, 0xb7, 0xcd, 0x43, 0x9b, 0x29, 0x4a, 0x84, - 0x77, 0x4d, 0x6d, 0xa1, 0xb4, 0x00, 0x6b, 0x3d, 0xb9, 0x8b, 0x3c, 0xa1, 0x77, 0x9d, 0xa2, 0xf4, - 0x0b, 0x0e, 0x1c, 0xcb, 0x74, 0x37, 0xa7, 0xfd, 0x96, 0xf9, 0x1e, 0xa2, 0x05, 0xc9, 0xca, 0xcc, - 0x4d, 0xad, 0x1b, 0x4f, 0x7e, 0xf4, 0x30, 0x18, 0xef, 0x6e, 0xa3, 0x57, 0x61, 0x54, 0x5a, 0x3e, - 0xe4, 0xf2, 0xb6, 0xf9, 0x2e, 0xac, 0x52, 0x6f, 0x24, 0x24, 0xc6, 0x29, 0xbd, 0x4c, 0xd8, 0x5c, - 0xa1, 0xaf, 0xb0, 0xb9, 0x7b, 0xfb, 0xaa, 0x6c, 0xbe, 0x5d, 0x7a, 0xf0, 0x50, 0xec, 0xd2, 0x0f, - 0x58, 0xb7, 0x4b, 0x3f, 0x78, 0xc4, 0x76, 0x69, 0xcd, 0x49, 0x58, 0xbc, 0x0b, 0x27, 0xe1, 0xab, - 0x70, 0x72, 0x27, 0x55, 0x3a, 0xd5, 0x4a, 0x12, 0x19, 0x98, 0x1e, 0xcf, 0xb5, 0x46, 0x53, 0x05, - 0x3a, 0x4e, 0x48, 0x90, 0x68, 0xea, 0x6a, 0x1a, 0xb1, 0xf7, 0x5c, 0x0e, 0x3a, 0x9c, 0x4b, 0x24, - 0xeb, 0xed, 0x19, 0xee, 0xc3, 0xdb, 0xf3, 0xa6, 0x03, 0xa7, 0xbc, 0xae, 0x4b, 0x60, 0x98, 0x6c, - 0x89, 0x90, 0x93, 0x6b, 0xf6, 0x44, 0x08, 0x03, 0xbd, 0x70, 0xab, 0xe5, 0x15, 0xe1, 0xfc, 0x0e, - 0xa1, 0x47, 0x52, 0xd7, 0x3b, 0x8f, 0xf3, 0xcc, 0xf7, 0x93, 0x7f, 0x3d, 0x1b, 0xcf, 0x03, 0x6c, - 0xea, 0x3f, 0x6a, 0x57, 0xdb, 0xb6, 0x10, 0xd3, 0x53, 0xba, 0x8b, 0x98, 0x9e, 0x8c, 0xeb, 0x6d, - 0xcc, 0x92, 0xeb, 0x2d, 0x80, 0x49, 0xbf, 0xe5, 0xd5, 0xc9, 0x7a, 0xa7, 0xd9, 0xe4, 0x97, 0x48, - 0xe4, 0xcb, 0xbd, 0xb9, 0x16, 0xbc, 0x95, 0xb0, 0xea, 0x35, 0xb3, 0x6f, 0xb6, 0xab, 0xcb, 0x32, - 0x97, 0x33, 0x98, 0x70, 0x17, 0x6e, 0xba, 0x60, 0x59, 0x2a, 0x40, 0x92, 0xd0, 0xd9, 0x66, 0x81, - 0x23, 0x23, 0x7c, 0xc1, 0x5e, 0x4a, 0xc1, 0x58, 0xaf, 0x83, 0x96, 0x61, 0xb4, 0x16, 0xc4, 0xe2, - 0x3e, 0xeb, 0x31, 0xc6, 0xcc, 0xde, 0x45, 0x59, 0xe0, 0xc2, 0x95, 0x8a, 0xba, 0xc9, 0xfa, 0x40, - 0x4e, 0x6e, 0x4b, 0x55, 0x8e, 0xd3, 0xf6, 0x68, 0x95, 0x21, 0x13, 0xcf, 0x9a, 0xf1, 0x78, 0x8e, - 0x87, 0x7a, 0x38, 0x8c, 0x16, 0xae, 0xc8, 0x87, 0xd9, 0xc6, 0x05, 0x39, 0xf1, 0x3e, 0x59, 0x8a, - 0x41, 0x7b, 0x41, 0xf9, 0xf8, 0xbe, 0x2f, 0x28, 0xb3, 0xa4, 0xb6, 0x49, 0x53, 0xb9, 0x87, 0xcf, - 0x59, 0x4b, 0x6a, 0x9b, 0x46, 0x4a, 0x8a, 0xa4, 0xb6, 0x29, 0x00, 0xeb, 0x24, 0xd1, 0x5a, 0x2f, - 0x37, 0xf9, 0x09, 0xc6, 0x34, 0x0e, 0xee, 0xf4, 0xd6, 0xfd, 0xa5, 0x27, 0xf7, 0xf5, 0x97, 0x76, - 0xf9, 0x77, 0x4f, 0x1d, 0xc0, 0xbf, 0xdb, 0x60, 0xe9, 0x46, 0x97, 0xe6, 0x85, 0x4b, 0xdd, 0x82, - 0x7e, 0xc7, 0x12, 0x9c, 0xf0, 0xc8, 0x53, 0xf6, 0x2f, 0xe6, 0x04, 0x7a, 0x06, 0x54, 0x9f, 0xb9, - 0xe3, 0x80, 0x6a, 0xca, 0x9e, 0x53, 0x38, 0xcb, 0x5b, 0x5b, 0x14, 0xec, 0x39, 0x05, 0x63, 0xbd, - 0x4e, 0xd6, 0x5b, 0x7a, 0xff, 0xa1, 0x79, 0x4b, 0xa7, 0x8e, 0xc0, 0x5b, 0x7a, 0xb6, 0x6f, 0x6f, - 0xe9, 0x0d, 0x38, 0xd1, 0x0e, 0x6b, 0x0b, 0x7e, 0x1c, 0x75, 0xd8, 0xad, 0xba, 0xb9, 0x4e, 0xad, - 0x4e, 0x12, 0xe6, 0x6e, 0x2d, 0x5d, 0x78, 0x97, 0xde, 0xc9, 0x36, 0xdb, 0xc8, 0x72, 0x8f, 0x66, - 0x1a, 0x30, 0xd3, 0x09, 0x8b, 0xba, 0xcd, 0x29, 0xc4, 0x79, 0x24, 0x74, 0x3f, 0xed, 0x43, 0x47, - 0xe3, 0xa7, 0xfd, 0x20, 0x8c, 0xc4, 0x8d, 0x4e, 0x52, 0x0b, 0xaf, 0x07, 0xcc, 0x19, 0x3f, 0x3a, - 0xf7, 0x0e, 0x65, 0xca, 0x16, 0xf0, 0x5b, 0x7b, 0xd3, 0x93, 0xf2, 0x7f, 0xcd, 0x8a, 0x2d, 0x20, - 0xe8, 0x1b, 0x3d, 0xee, 0xef, 0xb8, 0x87, 0x79, 0x7f, 0xe7, 0xcc, 0x81, 0xee, 0xee, 0xe4, 0x39, - 0xa3, 0x1f, 0x7e, 0xdb, 0x39, 0xa3, 0xbf, 0xe6, 0xc0, 0xf8, 0x8e, 0xee, 0x32, 0x10, 0x0e, 0x73, - 0x0b, 0x81, 0x3b, 0x86, 0x27, 0x62, 0xce, 0xa5, 0x7c, 0xce, 0x00, 0xdd, 0xca, 0x02, 0xb0, 0xd9, - 0x93, 0x9c, 0xa0, 0xa2, 0x47, 0xee, 0x55, 0x50, 0xd1, 0xeb, 0x8c, 0x8f, 0x49, 0x25, 0x97, 0x79, - 0xd1, 0xed, 0xc6, 0x14, 0x4b, 0x9e, 0xa8, 0x42, 0x8a, 0x75, 0x7a, 0xe8, 0xf3, 0x0e, 0x4c, 0x4a, - 0xbd, 0x4c, 0xb8, 0xfc, 0x62, 0x11, 0x15, 0x69, 0x53, 0x1d, 0x64, 0x61, 0xf5, 0x1b, 0x19, 0x3a, - 0xb8, 0x8b, 0x32, 0xe5, 0xea, 0x2a, 0x08, 0xad, 0x1e, 0xb3, 0xe0, 0x5f, 0x21, 0xc3, 0xcc, 0xa6, - 0x60, 0xac, 0xd7, 0x41, 0xdf, 0x74, 0xa0, 0xd8, 0x08, 0xc3, 0xed, 0xb8, 0xfc, 0x38, 0x63, 0xe8, - 0xcf, 0x5b, 0x96, 0x4d, 0x2f, 0x51, 0xdc, 0x5c, 0x28, 0x7d, 0x52, 0xda, 0x8e, 0x18, 0xec, 0xd6, - 0xde, 0xf4, 0x84, 0xf1, 0x2a, 0x53, 0xfc, 0xc6, 0x5b, 0x1a, 0x44, 0xd8, 0x36, 0x59, 0xd7, 0xd0, - 0x97, 0x1c, 0x98, 0xbc, 0x9e, 0x31, 0x68, 0x88, 0xb0, 0x50, 0x6c, 0xdf, 0x54, 0xc2, 0xa7, 0x3b, - 0x0b, 0xc5, 0x5d, 0x3d, 0x40, 0x9f, 0x33, 0x0d, 0x9d, 0x3c, 0x7e, 0xd4, 0xe2, 0x04, 0x66, 0x0c, - 0xab, 0xfc, 0x9a, 0x5b, 0x0f, 0x8b, 0x67, 0x00, 0x45, 0xb6, 0x33, 0xca, 0x4f, 0xd8, 0x12, 0xe0, - 0xb4, 0x34, 0x39, 0x5c, 0x24, 0x61, 0x00, 0xcc, 0xc9, 0xdc, 0x75, 0x3c, 0xca, 0x14, 0x9d, 0xbc, - 0x74, 0x71, 0xe4, 0x34, 0x25, 0xa6, 0x7d, 0xc7, 0x02, 0x73, 0x31, 0x96, 0x9b, 0x6e, 0xde, 0xf9, - 0xd7, 0xa7, 0x61, 0xc2, 0xf4, 0x25, 0xa2, 0x77, 0x9b, 0x2f, 0x7c, 0x9c, 0xcb, 0x3e, 0x96, 0x30, - 0x2e, 0xeb, 0x1b, 0x0f, 0x26, 0x18, 0x2f, 0x1a, 0x14, 0x0e, 0xf5, 0x45, 0x83, 0x81, 0xa3, 0x79, - 0xd1, 0x60, 0xf2, 0x30, 0x5e, 0x34, 0x38, 0x7e, 0xa0, 0x17, 0x0d, 0xb4, 0x17, 0x25, 0x06, 0x6f, - 0xf3, 0xa2, 0xc4, 0x2c, 0x1c, 0x93, 0x77, 0x8d, 0x88, 0x48, 0x1a, 0xcf, 0xc3, 0x0c, 0xce, 0x88, - 0x26, 0xc7, 0xe6, 0xcd, 0x62, 0x9c, 0xad, 0x4f, 0x37, 0x75, 0x31, 0x60, 0x2d, 0x87, 0x6c, 0x3d, - 0x37, 0x65, 0x2e, 0x2d, 0xa6, 0xae, 0x0b, 0x96, 0x28, 0xa3, 0xab, 0x8b, 0x0c, 0x76, 0x4b, 0xfe, - 0x83, 0x79, 0x0f, 0xd0, 0x8b, 0x50, 0x0e, 0xb7, 0xb6, 0x9a, 0xa1, 0x57, 0x4b, 0x9f, 0x5d, 0x90, - 0x71, 0x10, 0xfc, 0xae, 0xa8, 0xca, 0xd2, 0xbb, 0xd6, 0xa3, 0x1e, 0xee, 0x89, 0x01, 0xbd, 0x49, - 0x05, 0xa1, 0x24, 0x8c, 0x48, 0x2d, 0xb5, 0x0d, 0x8d, 0xb2, 0x31, 0x13, 0xeb, 0x63, 0xae, 0x98, - 0x74, 0xf8, 0xe8, 0xd5, 0x47, 0xc9, 0x94, 0xe2, 0x6c, 0xb7, 0x50, 0x04, 0xa7, 0xdb, 0x79, 0xa6, - 0xa9, 0x58, 0xdc, 0x90, 0xda, 0xcf, 0x40, 0x26, 0xb7, 0xee, 0xe9, 0x5c, 0xe3, 0x56, 0x8c, 0x7b, - 0x60, 0xd6, 0x9f, 0x46, 0x18, 0x39, 0x9a, 0xa7, 0x11, 0x3e, 0x0e, 0xa0, 0x2e, 0xc5, 0x4b, 0x63, - 0xc7, 0xb2, 0x95, 0xab, 0x3b, 0x1c, 0xa7, 0xf6, 0x1a, 0xad, 0x22, 0x83, 0x35, 0x92, 0xe8, 0xff, - 0xe4, 0xbe, 0x1d, 0xc2, 0x2d, 0x3a, 0x75, 0xeb, 0x6b, 0xe2, 0x6d, 0xf7, 0x7e, 0xc8, 0x3f, 0x71, - 0x60, 0x8a, 0xaf, 0xbc, 0xac, 0x32, 0x41, 0x45, 0x19, 0x71, 0x97, 0xc8, 0x76, 0xa8, 0x0c, 0x8b, - 0x1a, 0xac, 0x18, 0x54, 0x99, 0x63, 0x7d, 0x9f, 0x9e, 0xa0, 0xaf, 0xe4, 0xa8, 0x30, 0xc7, 0x6c, - 0xd9, 0x48, 0xf3, 0x5f, 0x80, 0x38, 0x71, 0xb3, 0x1f, 0xad, 0xe5, 0x9f, 0xf5, 0x34, 0xe1, 0x22, - 0xd6, 0xbd, 0x5f, 0x3a, 0x24, 0x13, 0xae, 0xfe, 0x4c, 0xc5, 0x81, 0x0c, 0xb9, 0x5f, 0x70, 0x60, - 0xd2, 0xcb, 0x84, 0xb6, 0x30, 0xbb, 0x93, 0x15, 0x11, 0x6a, 0x36, 0x4a, 0xe3, 0x65, 0x98, 0x50, - 0x99, 0x8d, 0xa2, 0xc1, 0x5d, 0xc4, 0xd1, 0x0f, 0x1d, 0x38, 0x9b, 0x78, 0xf1, 0x36, 0x4f, 0x02, - 0x1d, 0xa7, 0x77, 0x83, 0x45, 0xe7, 0x4e, 0xb2, 0xdd, 0xf8, 0xb2, 0xf5, 0xdd, 0xb8, 0xd1, 0x9b, - 0x26, 0xdf, 0x97, 0x0f, 0x8b, 0x7d, 0x79, 0x76, 0x9f, 0x9a, 0x78, 0xbf, 0xae, 0x53, 0xf5, 0x44, - 0x68, 0x6f, 0x6c, 0x24, 0xa7, 0x52, 0xf5, 0x04, 0xa7, 0x60, 0xac, 0xd7, 0x99, 0xfa, 0xb4, 0xc3, - 0xdf, 0x17, 0xeb, 0x29, 0x25, 0x6e, 0x9a, 0x52, 0xe2, 0x8a, 0xcd, 0x17, 0x8e, 0x74, 0x71, 0xf5, - 0xd7, 0x1c, 0x38, 0x99, 0x77, 0x88, 0xe5, 0x74, 0xe9, 0xa3, 0x66, 0x97, 0x2c, 0x2a, 0x82, 0x7a, - 0x87, 0xac, 0x3c, 0xb0, 0x32, 0x75, 0x05, 0x1e, 0xba, 0xdd, 0x87, 0xbf, 0x1d, 0xbe, 0x11, 0x5d, - 0x92, 0xfe, 0xd3, 0x51, 0xcd, 0x51, 0x9a, 0x90, 0xb6, 0xf5, 0x30, 0xf3, 0x00, 0x86, 0xfc, 0xa0, - 0xe9, 0x07, 0x44, 0x5c, 0x29, 0xb5, 0xa9, 0x66, 0x8b, 0x07, 0x92, 0x28, 0x76, 0x2c, 0xa8, 0xdc, - 0x63, 0xbf, 0x69, 0xf6, 0xc9, 0xb9, 0xc1, 0xa3, 0x7f, 0x72, 0xee, 0x3a, 0x8c, 0x5e, 0xf7, 0x93, - 0x06, 0x8b, 0xf7, 0x10, 0xee, 0x48, 0x0b, 0x57, 0x31, 0x29, 0xba, 0x74, 0xec, 0xd7, 0x24, 0x01, - 0x9c, 0xd2, 0x42, 0xe7, 0x39, 0x61, 0x16, 0x5c, 0x9e, 0x8d, 0xfa, 0xbd, 0x26, 0x0b, 0x70, 0x5a, - 0x87, 0x4e, 0xd6, 0x18, 0xfd, 0x25, 0x73, 0x36, 0x89, 0xbc, 0xca, 0x36, 0x52, 0x46, 0x0a, 0x8c, - 0xfc, 0xc2, 0xf3, 0x35, 0x8d, 0x06, 0x36, 0x28, 0xaa, 0xd4, 0xd6, 0x23, 0x3d, 0x53, 0x5b, 0xbf, - 0xc6, 0x64, 0xbc, 0xc4, 0x0f, 0x3a, 0x64, 0x2d, 0x10, 0x21, 0xe9, 0x2b, 0x76, 0xae, 0x67, 0x73, - 0x9c, 0xdc, 0x4a, 0x90, 0xfe, 0xc6, 0x1a, 0x3d, 0xcd, 0x2b, 0x54, 0xda, 0xd7, 0x2b, 0x94, 0x5a, - 0x85, 0xc6, 0xac, 0x5b, 0x85, 0x12, 0xd2, 0xb6, 0x62, 0x15, 0x7a, 0x5b, 0x59, 0x10, 0xfe, 0xc2, - 0x01, 0xa4, 0x44, 0x35, 0xc5, 0x50, 0x8f, 0x20, 0xee, 0xf3, 0x13, 0x0e, 0x40, 0xa0, 0x1e, 0x26, - 0xb5, 0x7b, 0x0a, 0x72, 0x9c, 0x69, 0x07, 0x52, 0x18, 0xd6, 0x68, 0xba, 0xff, 0xc3, 0x49, 0xc3, - 0xab, 0xd3, 0xb1, 0x1f, 0x41, 0x9c, 0xdb, 0xae, 0x19, 0xe7, 0xb6, 0x61, 0xd1, 0xbb, 0xa0, 0x86, - 0xd1, 0x23, 0xe2, 0xed, 0xa7, 0x05, 0x38, 0xa6, 0x57, 0xae, 0x90, 0xa3, 0xf8, 0xd8, 0xd7, 0x8d, - 0x20, 0xdf, 0xab, 0x76, 0xc7, 0x5b, 0x11, 0x4e, 0xaa, 0xbc, 0x80, 0xf2, 0x8f, 0x67, 0x02, 0xca, - 0xaf, 0xd9, 0x27, 0xbd, 0x7f, 0x54, 0xf9, 0x7f, 0x73, 0xe0, 0x44, 0xa6, 0xc5, 0x11, 0x2c, 0xb0, - 0x1d, 0x73, 0x81, 0x3d, 0x6b, 0x7d, 0xd4, 0x3d, 0x56, 0xd7, 0xb7, 0x0a, 0x5d, 0xa3, 0x65, 0x7a, - 0xdf, 0xa7, 0x1c, 0x28, 0x52, 0x01, 0x5b, 0x86, 0x9c, 0x7d, 0xf4, 0x50, 0x56, 0x00, 0x53, 0x05, - 0x04, 0x77, 0x56, 0xfd, 0x63, 0x30, 0xcc, 0xa9, 0x4f, 0x7d, 0xd2, 0x01, 0x48, 0x2b, 0xdd, 0x2b, - 0x11, 0xd8, 0xfd, 0x4e, 0x01, 0x4e, 0xe5, 0x2e, 0x23, 0xf4, 0x19, 0x65, 0xc4, 0x73, 0x6c, 0x07, - 0x54, 0x1a, 0x84, 0x74, 0x5b, 0xde, 0xb8, 0x61, 0xcb, 0x13, 0x26, 0xbc, 0x7b, 0xa5, 0xc0, 0x08, - 0x36, 0xad, 0x4d, 0xd6, 0x4f, 0x9c, 0x34, 0x46, 0x57, 0xa5, 0x5e, 0xfa, 0x4b, 0x78, 0xcf, 0xc8, - 0xfd, 0xa9, 0x76, 0x09, 0x43, 0x0e, 0xf4, 0x08, 0x78, 0xc5, 0x75, 0x93, 0x57, 0x60, 0xfb, 0xae, - 0xee, 0x1e, 0xcc, 0xe2, 0x65, 0xc8, 0xf3, 0x7d, 0xf7, 0x97, 0xb7, 0xd1, 0xb8, 0xb1, 0x5b, 0xe8, - 0xfb, 0xc6, 0xee, 0x38, 0x94, 0x5e, 0xf0, 0x55, 0xc2, 0xcf, 0xb9, 0x99, 0xef, 0xfe, 0xf8, 0xdc, - 0x7d, 0xdf, 0xfb, 0xf1, 0xb9, 0xfb, 0x7e, 0xf8, 0xe3, 0x73, 0xf7, 0x7d, 0xe2, 0xe6, 0x39, 0xe7, - 0xbb, 0x37, 0xcf, 0x39, 0xdf, 0xbb, 0x79, 0xce, 0xf9, 0xe1, 0xcd, 0x73, 0xce, 0x7f, 0xbc, 0x79, - 0xce, 0xf9, 0x7b, 0xff, 0xe9, 0xdc, 0x7d, 0x2f, 0x8c, 0xc8, 0x81, 0xfd, 0xff, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x2c, 0x2e, 0xeb, 0x91, 0x82, 0xd8, 0x00, 0x00, + 0x2f, 0xd0, 0x05, 0x80, 0x7a, 0x33, 0xdc, 0xf0, 0x9a, 0x74, 0x42, 0xca, 0x43, 0x6c, 0x08, 0x8a, + 0x33, 0x2c, 0xa9, 0x12, 0xac, 0xd5, 0x42, 0x37, 0x61, 0xd8, 0xe3, 0xdc, 0xbf, 0x3c, 0xcc, 0x06, + 0xf1, 0xac, 0x8d, 0x41, 0x18, 0xc7, 0xc9, 0xdc, 0xe8, 0xad, 0xdd, 0xe9, 0x61, 0x01, 0xc4, 0x92, + 0x1c, 0x7a, 0x02, 0x46, 0xc2, 0x36, 0xed, 0xb7, 0xd7, 0x2c, 0x8f, 0xb0, 0x85, 0x39, 0x29, 0xfa, + 0x3a, 0xb2, 0x2a, 0xe0, 0x58, 0xd5, 0x40, 0x8f, 0xc3, 0x70, 0xdc, 0xd9, 0xa0, 0xdf, 0xb1, 0x5c, + 0x62, 0x03, 0x3b, 0x26, 0x2a, 0x0f, 0x57, 0x38, 0x18, 0xcb, 0x72, 0xf4, 0x1e, 0x18, 0x8d, 0x48, + 0xb5, 0x13, 0xc5, 0x84, 0x7e, 0xd8, 0x32, 0x30, 0xdc, 0x27, 0x44, 0xf5, 0x51, 0x9c, 0x16, 0x61, + 0xbd, 0x1e, 0x7a, 0x3f, 0x4c, 0xd0, 0x0f, 0x7c, 0xf1, 0x66, 0x3b, 0x22, 0x71, 0x4c, 0xbf, 0xea, + 0x28, 0x23, 0x74, 0x5a, 0xb4, 0x9c, 0x58, 0x34, 0x4a, 0x71, 0xa6, 0x36, 0x7a, 0x0d, 0xc0, 0x53, + 0x3c, 0xa3, 0x3c, 0xc6, 0x26, 0xf3, 0x8a, 0xbd, 0x15, 0xb1, 0x34, 0x3f, 0x37, 0x41, 0xbf, 0x63, + 0xfa, 0x1b, 0x6b, 0xf4, 0xe8, 0xfc, 0xd4, 0x48, 0x93, 0x24, 0xa4, 0x56, 0x1e, 0x67, 0x03, 0x56, + 0xf3, 0xb3, 0xc0, 0xc1, 0x58, 0x96, 0xbb, 0x7f, 0xbf, 0x00, 0x1a, 0x16, 0x34, 0x07, 0x23, 0x82, + 0xaf, 0x89, 0x2d, 0x39, 0xf7, 0xa8, 0xfc, 0x0e, 0xf2, 0x0b, 0xde, 0xde, 0xcd, 0xe5, 0x87, 0xaa, + 0x1d, 0x7a, 0x1d, 0x46, 0xdb, 0x61, 0x6d, 0x85, 0x24, 0x5e, 0xcd, 0x4b, 0x3c, 0x71, 0x9a, 0x5b, + 0x38, 0x61, 0x24, 0xc6, 0xb9, 0x63, 0xf4, 0xd3, 0xad, 0xa5, 0x24, 0xb0, 0x4e, 0x0f, 0x3d, 0x03, + 0x28, 0x26, 0xd1, 0xb6, 0x5f, 0x25, 0xb3, 0xd5, 0x2a, 0x15, 0x89, 0xd8, 0x06, 0x18, 0x60, 0x83, + 0x99, 0x12, 0x83, 0x41, 0x95, 0xae, 0x1a, 0x38, 0xa7, 0x95, 0xfb, 0xfd, 0x02, 0x4c, 0x68, 0x63, + 0x6d, 0x93, 0x2a, 0x7a, 0xd3, 0x81, 0x63, 0xea, 0x38, 0x9b, 0xdb, 0xb9, 0x4a, 0x57, 0x15, 0x3f, + 0xac, 0x88, 0xcd, 0xef, 0x4b, 0x69, 0xa9, 0x9f, 0x82, 0x0e, 0xe7, 0xf5, 0x67, 0xc4, 0x18, 0x8e, + 0x65, 0x4a, 0x71, 0xb6, 0x5b, 0x53, 0x5f, 0x71, 0xe0, 0x64, 0x1e, 0x8a, 0x1c, 0x9e, 0xdb, 0xd0, + 0x79, 0xae, 0x55, 0xe6, 0x45, 0xa9, 0xd2, 0xc1, 0xe8, 0x7c, 0xfc, 0xff, 0x15, 0x60, 0x52, 0x5f, + 0x42, 0x4c, 0x12, 0xf8, 0x97, 0x0e, 0x9c, 0x92, 0x23, 0xc0, 0x24, 0xee, 0x34, 0x33, 0xd3, 0xdb, + 0xb2, 0x3a, 0xbd, 0xfc, 0x24, 0x9d, 0xcd, 0xa3, 0xc7, 0xa7, 0xf9, 0x41, 0x31, 0xcd, 0xa7, 0x72, + 0xeb, 0xe0, 0xfc, 0xae, 0x4e, 0x7d, 0xcb, 0x81, 0xa9, 0xde, 0x48, 0x73, 0x26, 0xbe, 0x6d, 0x4e, + 0xfc, 0x0b, 0xf6, 0x06, 0xc9, 0xc9, 0xb3, 0xe9, 0x67, 0x83, 0xd5, 0x3f, 0xc0, 0x6f, 0x8f, 0x40, + 0xd7, 0x19, 0x82, 0x9e, 0x84, 0x51, 0xc1, 0x8e, 0xaf, 0x84, 0xf5, 0x98, 0x75, 0x72, 0x84, 0xef, + 0xb5, 0xd9, 0x14, 0x8c, 0xf5, 0x3a, 0xa8, 0x06, 0x85, 0xf8, 0x29, 0xd1, 0x75, 0x0b, 0xec, 0xad, + 0xf2, 0x94, 0x92, 0x22, 0x87, 0x6e, 0xed, 0x4e, 0x17, 0x2a, 0x4f, 0xe1, 0x42, 0xfc, 0x14, 0x95, + 0xd4, 0xeb, 0x7e, 0x62, 0x4f, 0x52, 0x5f, 0xf2, 0x13, 0x45, 0x87, 0x49, 0xea, 0x4b, 0x7e, 0x82, + 0x29, 0x09, 0xaa, 0x81, 0x34, 0x92, 0xa4, 0xcd, 0x4e, 0x7c, 0x2b, 0x1a, 0xc8, 0xa5, 0xf5, 0xf5, + 0x35, 0x45, 0x8b, 0xc9, 0x17, 0x14, 0x82, 0x19, 0x15, 0xf4, 0x59, 0x87, 0xce, 0x38, 0x2f, 0x0c, + 0xa3, 0x1d, 0x21, 0x38, 0x5c, 0xb3, 0xb7, 0x04, 0xc2, 0x68, 0x47, 0x11, 0x17, 0x1f, 0x52, 0x15, + 0x60, 0x9d, 0x34, 0x1b, 0x78, 0x6d, 0x33, 0x66, 0x72, 0x82, 0x9d, 0x81, 0x2f, 0x2c, 0x56, 0x32, + 0x03, 0x5f, 0x58, 0xac, 0x60, 0x46, 0x85, 0x7e, 0xd0, 0xc8, 0xbb, 0x21, 0x64, 0x0c, 0x0b, 0x1f, + 0x14, 0x7b, 0x37, 0xcc, 0x0f, 0x8a, 0xbd, 0x1b, 0x98, 0x92, 0xa0, 0x94, 0xc2, 0x38, 0x66, 0x22, + 0x85, 0x15, 0x4a, 0xab, 0x95, 0x8a, 0x49, 0x69, 0xb5, 0x52, 0xc1, 0x94, 0x04, 0x5b, 0xa4, 0xd5, + 0x98, 0xc9, 0x23, 0x76, 0x16, 0xe9, 0x7c, 0x86, 0xd2, 0xd2, 0x7c, 0x05, 0x53, 0x12, 0x94, 0x65, + 0x78, 0xaf, 0x74, 0x22, 0x2e, 0xcc, 0x8c, 0x5e, 0x58, 0xb5, 0xb0, 0x5e, 0x28, 0x3a, 0x45, 0xad, + 0x74, 0x6b, 0x77, 0xba, 0xc8, 0x40, 0x98, 0x13, 0x72, 0xff, 0x70, 0x20, 0x65, 0x17, 0x92, 0x9f, + 0xa3, 0x5f, 0x67, 0x07, 0xa1, 0xe0, 0x05, 0x42, 0xf4, 0x75, 0x0e, 0x4d, 0xf4, 0x3d, 0xc1, 0x4f, + 0x3c, 0x83, 0x1c, 0xce, 0xd2, 0x47, 0x5f, 0x74, 0xba, 0x75, 0x5b, 0xcf, 0xfe, 0x59, 0x96, 0x1e, + 0xcc, 0xfc, 0xac, 0xd8, 0x53, 0xe5, 0x9d, 0xfa, 0xac, 0x93, 0x0a, 0x11, 0x71, 0xaf, 0x73, 0xe0, + 0xa3, 0xe6, 0x39, 0x60, 0x51, 0x21, 0xd7, 0xf9, 0xfe, 0xe7, 0x1c, 0x18, 0x97, 0x70, 0x2a, 0x1e, + 0xc7, 0xe8, 0x26, 0x8c, 0xc8, 0x9e, 0x8a, 0xaf, 0x67, 0xd3, 0x16, 0xa0, 0x84, 0x78, 0xd5, 0x19, + 0x45, 0xcd, 0x7d, 0x73, 0x08, 0x50, 0x7a, 0x56, 0xb5, 0xc3, 0xd8, 0x67, 0x9c, 0xe8, 0x00, 0xa7, + 0x50, 0xa0, 0x9d, 0x42, 0xcf, 0xd9, 0x3c, 0x85, 0xd2, 0x6e, 0x19, 0xe7, 0xd1, 0x17, 0x33, 0x7c, + 0x9b, 0x1f, 0x4c, 0x1f, 0x39, 0x14, 0xbe, 0xad, 0x75, 0x61, 0x6f, 0x0e, 0xbe, 0x2d, 0x38, 0x38, + 0x3f, 0xba, 0x7e, 0xd1, 0x2e, 0x07, 0xd7, 0x7a, 0x91, 0xe5, 0xe5, 0x11, 0xe7, 0xb0, 0xfc, 0xec, + 0xba, 0x6e, 0x95, 0xc3, 0x6a, 0x54, 0x4d, 0x5e, 0x1b, 0x71, 0x5e, 0x3b, 0x64, 0x8b, 0xa6, 0xc6, + 0x6b, 0xb3, 0x34, 0x15, 0xd7, 0x7d, 0x45, 0x72, 0x5d, 0x7e, 0x6a, 0x3d, 0x6f, 0x99, 0xeb, 0x6a, + 0x74, 0xbb, 0xf9, 0xef, 0xcb, 0x70, 0xaa, 0xbb, 0x1e, 0x26, 0x9b, 0xe8, 0x3c, 0x94, 0xaa, 0x61, + 0xb0, 0xe9, 0xd7, 0x57, 0xbc, 0xb6, 0xd0, 0xd7, 0x14, 0x2f, 0x9a, 0x97, 0x05, 0x38, 0xad, 0x83, + 0x1e, 0xe4, 0x8c, 0x87, 0x5b, 0x44, 0x46, 0x45, 0xd5, 0x81, 0x65, 0xb2, 0xc3, 0xb8, 0xd0, 0x7b, + 0x47, 0xbe, 0xfa, 0x8d, 0xe9, 0xfb, 0x3e, 0xf1, 0xa3, 0x87, 0xee, 0x73, 0xff, 0x78, 0x00, 0xce, + 0xe6, 0xd2, 0x14, 0xd2, 0xfa, 0x6f, 0x1b, 0xd2, 0xba, 0x56, 0x2e, 0xb8, 0xc8, 0x75, 0x9b, 0x82, + 0xac, 0x86, 0x3e, 0x4f, 0x2e, 0xd7, 0x8a, 0x71, 0x7e, 0xa7, 0xe8, 0x44, 0x05, 0x5e, 0x8b, 0xc4, + 0x6d, 0xaf, 0x4a, 0xc4, 0xe8, 0xd5, 0x44, 0x5d, 0x95, 0x05, 0x38, 0xad, 0xc3, 0x55, 0xe8, 0x4d, + 0xaf, 0xd3, 0x4c, 0x84, 0xa1, 0x4c, 0x53, 0xa1, 0x19, 0x18, 0xcb, 0x72, 0xf4, 0x0f, 0x1c, 0x40, + 0xdd, 0x54, 0xc5, 0x46, 0x5c, 0x3f, 0x8c, 0x79, 0x98, 0x3b, 0x7d, 0x4b, 0x53, 0xc2, 0xb5, 0x91, + 0xe6, 0xf4, 0x43, 0xfb, 0xa6, 0x1f, 0x4b, 0xcf, 0x21, 0xae, 0x1c, 0xf4, 0x61, 0x43, 0x63, 0xa6, + 0x96, 0x6a, 0x95, 0xc4, 0x31, 0x37, 0xc7, 0xe9, 0xa6, 0x16, 0x06, 0xc6, 0xb2, 0x1c, 0x4d, 0x43, + 0x91, 0x44, 0x51, 0x18, 0x09, 0x5d, 0x9b, 0x2d, 0xe3, 0x8b, 0x14, 0x80, 0x39, 0xdc, 0xfd, 0x49, + 0x01, 0xca, 0xbd, 0xb4, 0x13, 0xf4, 0x7b, 0x9a, 0x5e, 0x2d, 0x34, 0x27, 0xa1, 0xf8, 0x85, 0x87, + 0xa7, 0x13, 0x65, 0x15, 0xc0, 0x1e, 0x1a, 0xb6, 0x28, 0xc5, 0xd9, 0x0e, 0x4e, 0x7d, 0x49, 0xd3, + 0xb0, 0x75, 0x14, 0x39, 0x07, 0xfc, 0xa6, 0x79, 0xc0, 0xaf, 0xd9, 0x1e, 0x94, 0x7e, 0xcc, 0xff, + 0x49, 0x11, 0x4e, 0xc8, 0xd2, 0x0a, 0xa1, 0x47, 0xe5, 0xb3, 0x1d, 0x12, 0xed, 0xa0, 0x1f, 0x38, + 0x70, 0xd2, 0xcb, 0x9a, 0x6e, 0x7c, 0x72, 0x08, 0x13, 0xad, 0x51, 0x9d, 0x99, 0xcd, 0xa1, 0xc8, + 0x27, 0xfa, 0x82, 0x98, 0xe8, 0x93, 0x79, 0x55, 0x7a, 0xd8, 0xdd, 0x73, 0x07, 0x80, 0x9e, 0x86, + 0x31, 0x09, 0x67, 0xe6, 0x1e, 0xbe, 0xc5, 0x95, 0x71, 0x7b, 0x56, 0x2b, 0xc3, 0x46, 0x4d, 0xda, + 0x32, 0x21, 0xad, 0x76, 0xd3, 0x4b, 0x88, 0x66, 0x28, 0x52, 0x2d, 0xd7, 0xb5, 0x32, 0x6c, 0xd4, + 0x44, 0x8f, 0xc2, 0x50, 0x10, 0xd6, 0xc8, 0xe5, 0x9a, 0x30, 0x10, 0x4f, 0x88, 0x36, 0x43, 0x57, + 0x19, 0x14, 0x8b, 0x52, 0xf4, 0x48, 0x6a, 0x8d, 0x2b, 0xb2, 0x2d, 0x34, 0x9a, 0x67, 0x89, 0x43, + 0xff, 0xc8, 0x81, 0x12, 0x6d, 0xb1, 0xbe, 0xd3, 0x26, 0xf4, 0x6c, 0xa3, 0x5f, 0xa4, 0x76, 0x38, + 0x5f, 0xe4, 0xaa, 0x24, 0x63, 0x9a, 0x3a, 0x4a, 0x0a, 0xfe, 0xc6, 0x5b, 0xd3, 0x23, 0xf2, 0x07, + 0x4e, 0x7b, 0x35, 0xb5, 0x04, 0xf7, 0xf7, 0xfc, 0x9a, 0xfb, 0x72, 0x05, 0xfc, 0x2d, 0x98, 0x30, + 0x3b, 0xb1, 0x2f, 0x3f, 0xc0, 0x3f, 0xd7, 0xb6, 0x1d, 0x1f, 0x97, 0xe0, 0x67, 0xf7, 0x4c, 0x9a, + 0x55, 0x8b, 0x61, 0x41, 0x2c, 0x3d, 0x73, 0x31, 0x2c, 0x88, 0xc5, 0xb0, 0xe0, 0xfe, 0x91, 0x93, + 0x6e, 0x4d, 0x4d, 0xcc, 0xa3, 0x07, 0x73, 0x27, 0x6a, 0x0a, 0x46, 0xac, 0x0e, 0xe6, 0x6b, 0xf8, + 0x0a, 0xa6, 0x70, 0xf4, 0x25, 0x8d, 0x3b, 0xd2, 0x66, 0x1d, 0xe1, 0xd6, 0xb0, 0x64, 0xa2, 0x37, + 0x10, 0x77, 0xf3, 0x3f, 0x51, 0x80, 0xb3, 0x5d, 0x70, 0xbf, 0x58, 0x80, 0x07, 0xf7, 0x14, 0x5a, + 0x73, 0x3b, 0xee, 0xdc, 0xf3, 0x8e, 0xd3, 0x63, 0x2d, 0x22, 0xed, 0xf0, 0x1a, 0xbe, 0x22, 0xbe, + 0x97, 0x3a, 0xd6, 0x30, 0x07, 0x63, 0x59, 0x4e, 0x45, 0x87, 0x2d, 0xb2, 0xb3, 0x18, 0x46, 0x2d, + 0x2f, 0x11, 0xdc, 0x41, 0x89, 0x0e, 0xcb, 0xb2, 0x00, 0xa7, 0x75, 0xdc, 0x1f, 0x38, 0x90, 0xed, + 0x00, 0xf2, 0x60, 0xa2, 0x13, 0x93, 0x88, 0x1e, 0xa9, 0x15, 0x52, 0x8d, 0x88, 0x5c, 0x9e, 0x8f, + 0xcc, 0x70, 0x6f, 0x3f, 0x1d, 0xe1, 0x4c, 0x35, 0x8c, 0xc8, 0xcc, 0xf6, 0x93, 0x33, 0xbc, 0xc6, + 0x32, 0xd9, 0xa9, 0x90, 0x26, 0xa1, 0x38, 0xe6, 0xd0, 0xad, 0xdd, 0xe9, 0x89, 0x6b, 0x06, 0x02, + 0x9c, 0x41, 0x48, 0x49, 0xb4, 0xbd, 0x38, 0xbe, 0x11, 0x46, 0x35, 0x41, 0xa2, 0xb0, 0x6f, 0x12, + 0x6b, 0x06, 0x02, 0x9c, 0x41, 0xe8, 0x7e, 0x9f, 0xaa, 0x8f, 0xba, 0xd4, 0x8a, 0xbe, 0x41, 0x65, + 0x1f, 0x0a, 0x99, 0x6b, 0x86, 0x1b, 0xf3, 0x61, 0x90, 0x78, 0x7e, 0x40, 0x64, 0xb0, 0xc0, 0xba, + 0x25, 0x19, 0xd9, 0xc0, 0x9d, 0xda, 0xf0, 0xbb, 0xcb, 0x70, 0x4e, 0x5f, 0xa8, 0x8c, 0xb3, 0xd1, + 0x0c, 0x37, 0xb2, 0x5e, 0x40, 0x5a, 0x09, 0xb3, 0x12, 0xf7, 0x67, 0x0e, 0x9c, 0xe9, 0x21, 0x8c, + 0xa3, 0xaf, 0x38, 0x30, 0xbe, 0xf1, 0xb6, 0x18, 0x9b, 0xd9, 0x0d, 0xf4, 0x7e, 0x98, 0xa0, 0x00, + 0x7a, 0x12, 0x89, 0xb5, 0x59, 0x30, 0x3d, 0x54, 0x73, 0x46, 0x29, 0xce, 0xd4, 0x76, 0x7f, 0xa3, + 0x00, 0x39, 0x54, 0xd0, 0x13, 0x30, 0x42, 0x82, 0x5a, 0x3b, 0xf4, 0x83, 0x44, 0x30, 0x23, 0xc5, + 0xf5, 0x2e, 0x0a, 0x38, 0x56, 0x35, 0x84, 0xfe, 0x21, 0x26, 0xa6, 0xd0, 0xa5, 0x7f, 0x88, 0x9e, + 0xa7, 0x75, 0x50, 0x1d, 0x26, 0x3d, 0xee, 0x5f, 0x61, 0x6b, 0x8f, 0x2d, 0xd3, 0x81, 0xfd, 0x2c, + 0xd3, 0x93, 0xcc, 0xfd, 0x99, 0x41, 0x81, 0xbb, 0x90, 0xa2, 0xf7, 0xc0, 0x68, 0x27, 0x26, 0x95, + 0x85, 0xe5, 0xf9, 0x88, 0xd4, 0xb8, 0x56, 0xac, 0xf9, 0xfd, 0xae, 0xa5, 0x45, 0x58, 0xaf, 0xe7, + 0xfe, 0x2b, 0x07, 0x86, 0xe7, 0xbc, 0xea, 0x56, 0xb8, 0xb9, 0x49, 0xa7, 0xa2, 0xd6, 0x89, 0x52, + 0xc3, 0x96, 0x36, 0x15, 0x0b, 0x02, 0x8e, 0x55, 0x0d, 0xb4, 0x0e, 0x43, 0x7c, 0xc3, 0x8b, 0x6d, + 0xf7, 0x0b, 0xda, 0x78, 0x54, 0x1c, 0x0f, 0x5b, 0x0e, 0x9d, 0xc4, 0x6f, 0xce, 0xf0, 0x38, 0x9e, + 0x99, 0xcb, 0x41, 0xb2, 0x1a, 0x55, 0x92, 0xc8, 0x0f, 0xea, 0x73, 0x40, 0x8f, 0x8b, 0x45, 0x86, + 0x03, 0x0b, 0x5c, 0x74, 0x18, 0x2d, 0xef, 0xa6, 0x24, 0x27, 0xd8, 0x8f, 0x1a, 0xc6, 0x4a, 0x5a, + 0x84, 0xf5, 0x7a, 0xee, 0x1f, 0x3b, 0x50, 0x9a, 0xf3, 0x62, 0xbf, 0xfa, 0x97, 0x88, 0xf9, 0x7c, + 0x18, 0x8a, 0xf3, 0x5e, 0xb5, 0x41, 0xd0, 0xb5, 0xac, 0xd2, 0x3b, 0x7a, 0xe1, 0xb1, 0x3c, 0x32, + 0x4a, 0x01, 0xd6, 0x29, 0x8d, 0xf7, 0x52, 0x8d, 0xdd, 0xb7, 0x1c, 0x98, 0x98, 0x6f, 0xfa, 0x24, + 0x48, 0xe6, 0x49, 0x94, 0xb0, 0x89, 0xab, 0xc3, 0x64, 0x55, 0x41, 0x0e, 0x32, 0x75, 0x6c, 0xb5, + 0xce, 0x67, 0x50, 0xe0, 0x2e, 0xa4, 0xa8, 0x06, 0xc7, 0x38, 0x2c, 0xdd, 0x15, 0xfb, 0x9a, 0x3f, + 0x66, 0x1d, 0x9d, 0x37, 0x31, 0xe0, 0x2c, 0x4a, 0xf7, 0xa7, 0x0e, 0x9c, 0x99, 0x6f, 0x76, 0xe2, + 0x84, 0x44, 0xd7, 0x05, 0x37, 0x92, 0xe2, 0x2d, 0xfa, 0x28, 0x8c, 0xb4, 0xa4, 0xc7, 0xd6, 0xb9, + 0xc3, 0x02, 0x66, 0xfc, 0x8c, 0xd6, 0xa6, 0x9d, 0x59, 0xdd, 0x78, 0x89, 0x54, 0x93, 0x15, 0x92, + 0x78, 0x69, 0x78, 0x41, 0x0a, 0xc3, 0x0a, 0x2b, 0x6a, 0xc3, 0x60, 0xdc, 0x26, 0x55, 0x7b, 0xd1, + 0x5d, 0x72, 0x0c, 0x95, 0x36, 0xa9, 0xa6, 0x7c, 0x9d, 0xf9, 0x1a, 0x19, 0x25, 0xf7, 0x7f, 0x3b, + 0x70, 0xb6, 0xc7, 0x78, 0xaf, 0xf8, 0x71, 0x82, 0x5e, 0xec, 0x1a, 0xf3, 0x4c, 0x7f, 0x63, 0xa6, + 0xad, 0xd9, 0x88, 0x15, 0x43, 0x90, 0x10, 0x6d, 0xbc, 0x1f, 0x83, 0xa2, 0x9f, 0x90, 0x96, 0x34, + 0x43, 0x5b, 0x30, 0x18, 0xf5, 0x18, 0xcb, 0xdc, 0xb8, 0x8c, 0xf1, 0xbb, 0x4c, 0xe9, 0x61, 0x4e, + 0xd6, 0xdd, 0x82, 0xa1, 0xf9, 0xb0, 0xd9, 0x69, 0x05, 0xfd, 0x45, 0xca, 0x24, 0x3b, 0x6d, 0x92, + 0x3d, 0x23, 0x99, 0xf8, 0xcf, 0x4a, 0xa4, 0xe1, 0x68, 0x20, 0xdf, 0x70, 0xe4, 0xfe, 0x1b, 0x07, + 0xe8, 0xae, 0xaa, 0xf9, 0xc2, 0x93, 0xc8, 0xd1, 0x71, 0x82, 0x0f, 0xea, 0xe8, 0x6e, 0xef, 0x4e, + 0x8f, 0xab, 0x8a, 0x1a, 0xfe, 0x0f, 0xc3, 0x50, 0xcc, 0x54, 0x72, 0xd1, 0x87, 0x45, 0x29, 0x3f, + 0x73, 0x45, 0xfd, 0xf6, 0xee, 0x74, 0x5f, 0x61, 0x9b, 0x33, 0x0a, 0xb7, 0x70, 0x7a, 0x0a, 0xac, + 0x54, 0xe0, 0x6b, 0x91, 0x38, 0xf6, 0xea, 0x52, 0xc3, 0x53, 0x02, 0xdf, 0x0a, 0x07, 0x63, 0x59, + 0xee, 0x7e, 0xd9, 0x81, 0x71, 0x75, 0x78, 0x51, 0xf1, 0x1d, 0x5d, 0xd5, 0x8f, 0x39, 0xbe, 0x52, + 0x1e, 0xec, 0xc1, 0x71, 0xc4, 0x41, 0xbe, 0xf7, 0x29, 0xf8, 0x6e, 0x18, 0xab, 0x91, 0x36, 0x09, + 0x6a, 0x24, 0xa8, 0x52, 0xf5, 0x9b, 0xae, 0x90, 0xd2, 0xdc, 0x24, 0xd5, 0x37, 0x17, 0x34, 0x38, + 0x36, 0x6a, 0xb9, 0xdf, 0x74, 0xe0, 0x7e, 0x85, 0xae, 0x42, 0x12, 0x4c, 0x92, 0x68, 0x47, 0x85, + 0x69, 0xee, 0xef, 0xb4, 0xba, 0x4e, 0xe5, 0xdf, 0x24, 0xe2, 0xc4, 0x0f, 0x76, 0x5c, 0x8d, 0x72, + 0x69, 0x99, 0x21, 0xc1, 0x12, 0x9b, 0xfb, 0x6b, 0x03, 0x70, 0x52, 0xef, 0xa4, 0x62, 0x30, 0xbf, + 0xec, 0x00, 0xa8, 0x19, 0xa0, 0x07, 0xf2, 0x80, 0x1d, 0xdf, 0x95, 0xf1, 0xa5, 0x52, 0x16, 0xa4, + 0xc0, 0x31, 0xd6, 0xc8, 0xa2, 0xe7, 0x61, 0x6c, 0x9b, 0x6e, 0x0a, 0xb2, 0x42, 0xc5, 0x85, 0xb8, + 0x3c, 0xc0, 0xba, 0x31, 0x9d, 0xf7, 0x31, 0x9f, 0x4b, 0xeb, 0xa5, 0xe6, 0x00, 0x0d, 0x18, 0x63, + 0x03, 0x15, 0xd5, 0x74, 0xc6, 0x23, 0xfd, 0x93, 0x08, 0x9b, 0xf8, 0x87, 0x2c, 0x8e, 0x31, 0xfb, + 0xd5, 0xe7, 0x8e, 0xdf, 0xda, 0x9d, 0x1e, 0x37, 0x40, 0xd8, 0xec, 0x84, 0xfb, 0x3c, 0xb0, 0xb9, + 0xf0, 0x83, 0x0e, 0x59, 0x0d, 0xd0, 0xc3, 0xd2, 0x46, 0xc7, 0xfd, 0x2a, 0x8a, 0x73, 0xe8, 0x76, + 0x3a, 0xaa, 0xcb, 0x6e, 0x7a, 0x7e, 0x93, 0x85, 0x2f, 0xd2, 0x5a, 0x4a, 0x97, 0x5d, 0x64, 0x50, + 0x2c, 0x4a, 0xdd, 0x19, 0x18, 0x9e, 0xa7, 0x63, 0x27, 0x11, 0xc5, 0xab, 0x47, 0x1d, 0x8f, 0x1b, + 0x51, 0xc7, 0x32, 0xba, 0x78, 0x1d, 0x4e, 0xcd, 0x47, 0xc4, 0x4b, 0x48, 0xe5, 0xa9, 0xb9, 0x4e, + 0x75, 0x8b, 0x24, 0x3c, 0xb4, 0x2b, 0x46, 0xef, 0x83, 0xf1, 0x90, 0x1d, 0x19, 0x57, 0xc2, 0xea, + 0x96, 0x1f, 0xd4, 0x85, 0xc9, 0xf5, 0x94, 0xc0, 0x32, 0xbe, 0xaa, 0x17, 0x62, 0xb3, 0xae, 0xfb, + 0x9f, 0x0b, 0x30, 0x36, 0x1f, 0x85, 0x81, 0x64, 0x8b, 0x47, 0x70, 0x94, 0x25, 0xc6, 0x51, 0x66, + 0xc1, 0xdd, 0xa9, 0xf7, 0xbf, 0xd7, 0x71, 0x86, 0x5e, 0x53, 0x2c, 0x72, 0xc0, 0x96, 0x0a, 0x62, + 0xd0, 0x65, 0xb8, 0xd3, 0x8f, 0x6d, 0x32, 0x50, 0xf7, 0xbf, 0x38, 0x30, 0xa9, 0x57, 0x3f, 0x82, + 0x13, 0x34, 0x36, 0x4f, 0xd0, 0xab, 0x76, 0xc7, 0xdb, 0xe3, 0xd8, 0xfc, 0x17, 0xc3, 0xe6, 0x38, + 0x99, 0xaf, 0xfb, 0xab, 0x0e, 0x8c, 0xdd, 0xd0, 0x00, 0x62, 0xb0, 0xb6, 0x85, 0x98, 0x77, 0x48, + 0x36, 0xa3, 0x43, 0x6f, 0x67, 0x7e, 0x63, 0xa3, 0x27, 0x94, 0xef, 0xc7, 0xd5, 0x06, 0xa9, 0x75, + 0x9a, 0xf2, 0xf8, 0x56, 0x53, 0x5a, 0x11, 0x70, 0xac, 0x6a, 0xa0, 0x17, 0xe1, 0x78, 0x35, 0x0c, + 0xaa, 0x9d, 0x28, 0x22, 0x41, 0x75, 0x67, 0x8d, 0xdd, 0x91, 0x10, 0x07, 0xe2, 0x8c, 0x68, 0x76, + 0x7c, 0x3e, 0x5b, 0xe1, 0x76, 0x1e, 0x10, 0x77, 0x23, 0xe2, 0xce, 0x82, 0x98, 0x1e, 0x59, 0x42, + 0xe1, 0xd2, 0x9c, 0x05, 0x0c, 0x8c, 0x65, 0x39, 0xba, 0x06, 0x67, 0xe2, 0xc4, 0x8b, 0x12, 0x3f, + 0xa8, 0x2f, 0x10, 0xaf, 0xd6, 0xf4, 0x03, 0xaa, 0x4a, 0x84, 0x41, 0x8d, 0xbb, 0x12, 0x07, 0xe6, + 0xce, 0xde, 0xda, 0x9d, 0x3e, 0x53, 0xc9, 0xaf, 0x82, 0x7b, 0xb5, 0x45, 0x1f, 0x86, 0x29, 0xe1, + 0x8e, 0xd8, 0xec, 0x34, 0x9f, 0x09, 0x37, 0xe2, 0x4b, 0x7e, 0x4c, 0xf5, 0xf8, 0x2b, 0x7e, 0xcb, + 0x4f, 0x98, 0xc3, 0xb0, 0x38, 0x77, 0xee, 0xd6, 0xee, 0xf4, 0x54, 0xa5, 0x67, 0x2d, 0xbc, 0x07, + 0x06, 0x84, 0xe1, 0x34, 0x67, 0x7e, 0x5d, 0xb8, 0x87, 0x19, 0xee, 0xa9, 0x5b, 0xbb, 0xd3, 0xa7, + 0x17, 0x73, 0x6b, 0xe0, 0x1e, 0x2d, 0xe9, 0x17, 0x4c, 0xfc, 0x16, 0x79, 0x25, 0x0c, 0x08, 0x0b, + 0x54, 0xd1, 0xbe, 0xe0, 0xba, 0x80, 0x63, 0x55, 0x03, 0xbd, 0x94, 0xae, 0x44, 0xba, 0x5d, 0x44, + 0xc0, 0xc9, 0xfe, 0x39, 0x1c, 0x53, 0x4d, 0xae, 0x6b, 0x98, 0x58, 0x24, 0xa5, 0x81, 0x1b, 0x7d, + 0xd2, 0x81, 0xb1, 0x38, 0x09, 0xd5, 0xbd, 0x06, 0x11, 0x71, 0x62, 0x61, 0xd9, 0x57, 0x34, 0xac, + 0x5c, 0xf0, 0xd1, 0x21, 0xd8, 0xa0, 0x8a, 0xde, 0x09, 0x25, 0xb9, 0x80, 0xe3, 0xf2, 0x28, 0x93, + 0x95, 0x98, 0x1a, 0x27, 0xd7, 0x77, 0x8c, 0xd3, 0x72, 0xf7, 0x27, 0x03, 0x80, 0xba, 0xd9, 0x1a, + 0x5a, 0x86, 0x21, 0xaf, 0x9a, 0xf8, 0xdb, 0x32, 0x9a, 0xf0, 0xe1, 0xbc, 0x23, 0x9f, 0x4f, 0x0f, + 0x26, 0x9b, 0x84, 0xae, 0x6a, 0x92, 0xf2, 0xc2, 0x59, 0xd6, 0x14, 0x0b, 0x14, 0x28, 0x84, 0xe3, + 0x4d, 0x2f, 0x4e, 0x24, 0xfd, 0x1a, 0xfd, 0x4c, 0xe2, 0x30, 0xf8, 0xf9, 0xfe, 0x3e, 0x04, 0x6d, + 0x31, 0x77, 0x8a, 0xee, 0xb6, 0x2b, 0x59, 0x44, 0xb8, 0x1b, 0x37, 0xfa, 0x38, 0x93, 0x9d, 0xb8, + 0x60, 0x2b, 0x85, 0x96, 0x65, 0x2b, 0x72, 0x05, 0xc7, 0x69, 0xc8, 0x4d, 0x82, 0x0c, 0xd6, 0x48, + 0xa2, 0xf3, 0x50, 0x62, 0xbb, 0x82, 0xd4, 0x08, 0xdf, 0xdb, 0x03, 0xa9, 0x88, 0x5b, 0x91, 0x05, + 0x38, 0xad, 0xa3, 0xc9, 0x10, 0x7c, 0x3b, 0xf7, 0x90, 0x21, 0xd0, 0xd3, 0x50, 0x6c, 0x37, 0xbc, + 0x58, 0x46, 0xa8, 0xbb, 0x92, 0x27, 0xaf, 0x51, 0x20, 0x63, 0x3c, 0xda, 0xb7, 0x64, 0x40, 0xcc, + 0x1b, 0xb8, 0xff, 0x16, 0x60, 0x78, 0x61, 0x76, 0x69, 0xdd, 0x8b, 0xb7, 0xfa, 0xd0, 0x70, 0xe8, + 0x26, 0x13, 0xa2, 0x68, 0x96, 0x4d, 0x4a, 0x11, 0x15, 0xab, 0x1a, 0x28, 0x80, 0x21, 0x3f, 0xa0, + 0x7c, 0xa5, 0x3c, 0x61, 0xcb, 0x8b, 0xa0, 0xb4, 0x35, 0x66, 0xe6, 0xb9, 0xcc, 0xb0, 0x63, 0x41, + 0x05, 0xbd, 0x06, 0x25, 0x4f, 0x5e, 0x10, 0x12, 0xa7, 0xfb, 0xb2, 0x0d, 0xf3, 0xb8, 0x40, 0xa9, + 0x07, 0x28, 0x09, 0x10, 0x4e, 0x09, 0xa2, 0x4f, 0x38, 0x30, 0x2a, 0x87, 0x8e, 0xc9, 0xa6, 0xf0, + 0x5c, 0xaf, 0xd8, 0x1b, 0x33, 0x26, 0x9b, 0x3c, 0x7a, 0x45, 0x03, 0x60, 0x9d, 0x64, 0x97, 0x46, + 0x54, 0xec, 0x47, 0x23, 0x42, 0x37, 0xa0, 0x74, 0xc3, 0x4f, 0x1a, 0xec, 0xfc, 0x16, 0x1e, 0xb3, + 0xc5, 0xbb, 0xef, 0x35, 0x45, 0x97, 0xce, 0xd8, 0x75, 0x49, 0x00, 0xa7, 0xb4, 0xe8, 0x76, 0xa0, + 0x3f, 0xd8, 0x05, 0x2b, 0xc6, 0xf9, 0x4b, 0x66, 0x03, 0x56, 0x80, 0xd3, 0x3a, 0x74, 0x8a, 0xc7, + 0xe8, 0xaf, 0x0a, 0x79, 0xb9, 0x43, 0x59, 0x8b, 0x88, 0x48, 0xb4, 0xb0, 0xae, 0x24, 0x46, 0x3e, + 0x59, 0xd7, 0x35, 0x1a, 0xd8, 0xa0, 0x48, 0xf7, 0xc8, 0x8d, 0x06, 0x09, 0xc4, 0x8d, 0x09, 0xb5, + 0x47, 0xae, 0x37, 0x48, 0x80, 0x59, 0x09, 0x7a, 0x8d, 0x6b, 0x68, 0x5c, 0x55, 0x10, 0xbc, 0xfe, + 0x8a, 0x1d, 0xed, 0x85, 0xe3, 0xe4, 0x97, 0x16, 0xd2, 0xdf, 0x58, 0xa3, 0x47, 0x39, 0x46, 0x18, + 0x5c, 0xbc, 0xe9, 0x27, 0xe2, 0xaa, 0x85, 0xe2, 0x18, 0xab, 0x0c, 0x8a, 0x45, 0x29, 0x8f, 0xcc, + 0xa0, 0x8b, 0x20, 0x66, 0xf7, 0x2a, 0x4a, 0x7a, 0x64, 0x06, 0x03, 0x63, 0x59, 0x8e, 0xfe, 0xa1, + 0x03, 0xc5, 0x46, 0x18, 0x6e, 0xc5, 0xe5, 0x71, 0xb6, 0x38, 0x2c, 0x48, 0xcc, 0x82, 0xe3, 0xcc, + 0x5c, 0xa2, 0x68, 0xcd, 0xcb, 0x63, 0x45, 0x06, 0xbb, 0xbd, 0x3b, 0x3d, 0x71, 0xc5, 0xdf, 0x24, + 0xd5, 0x9d, 0x6a, 0x93, 0x30, 0xc8, 0x1b, 0x6f, 0x69, 0x90, 0x8b, 0xdb, 0x24, 0x48, 0x30, 0xef, + 0xd5, 0xd4, 0xe7, 0x1c, 0x80, 0x14, 0x51, 0x8e, 0x0b, 0x94, 0x98, 0x41, 0x03, 0x16, 0xd4, 0x65, + 0xa3, 0x6b, 0xba, 0x4f, 0xf5, 0xdf, 0x39, 0x30, 0x4a, 0x07, 0x27, 0x59, 0xe0, 0xa3, 0x30, 0x94, + 0x78, 0x51, 0x9d, 0x48, 0x37, 0x80, 0xfa, 0x1c, 0xeb, 0x0c, 0x8a, 0x45, 0x29, 0x0a, 0xa0, 0x98, + 0x78, 0xf1, 0x96, 0x14, 0xd2, 0x2f, 0x5b, 0x9b, 0xe2, 0x54, 0x3e, 0xa7, 0xbf, 0x62, 0xcc, 0xc9, + 0xa0, 0xc7, 0x60, 0x84, 0x1e, 0x1d, 0x8b, 0x5e, 0x2c, 0x23, 0x73, 0xc6, 0x28, 0x13, 0x5f, 0x14, + 0x30, 0xac, 0x4a, 0xdd, 0xdf, 0x28, 0xc0, 0xe0, 0x02, 0x57, 0xd7, 0x86, 0xe2, 0xb0, 0x13, 0x55, + 0x89, 0x10, 0xdb, 0x2d, 0xac, 0x69, 0x8a, 0xb7, 0xc2, 0x70, 0x6a, 0x0a, 0x13, 0xfb, 0x8d, 0x05, + 0x2d, 0xf4, 0x25, 0x07, 0x26, 0x92, 0xc8, 0x0b, 0xe2, 0x4d, 0xe6, 0x70, 0xf1, 0xc3, 0x40, 0x4c, + 0x91, 0x85, 0x55, 0xb8, 0x6e, 0xe0, 0xad, 0x24, 0xa4, 0x9d, 0xfa, 0x7d, 0xcc, 0x32, 0x9c, 0xe9, + 0x83, 0xfb, 0x9b, 0x0e, 0x40, 0xda, 0x7b, 0xf4, 0x59, 0x07, 0xc6, 0x3d, 0x3d, 0x22, 0x54, 0xcc, + 0xd1, 0xaa, 0x3d, 0xef, 0x2c, 0x43, 0xcb, 0x2d, 0x15, 0x06, 0x08, 0x9b, 0x84, 0xdd, 0xf7, 0x40, + 0x91, 0xed, 0x0e, 0xa6, 0xd2, 0x08, 0xcb, 0x76, 0xd6, 0x94, 0x25, 0x2d, 0xde, 0x58, 0xd5, 0x70, + 0x5f, 0x84, 0x89, 0x8b, 0x37, 0x49, 0xb5, 0x93, 0x84, 0x11, 0xb7, 0xeb, 0xf7, 0xb8, 0x01, 0xe4, + 0x1c, 0xe8, 0x06, 0xd0, 0x77, 0x1c, 0x18, 0xd5, 0xc2, 0x03, 0xe9, 0x49, 0x5d, 0x9f, 0xaf, 0x70, + 0xf3, 0x85, 0x98, 0xaa, 0x65, 0x2b, 0x01, 0x88, 0x1c, 0x65, 0x7a, 0x8c, 0x28, 0x10, 0x4e, 0x09, + 0xde, 0x21, 0x7c, 0xcf, 0xfd, 0x43, 0x07, 0x4e, 0xe5, 0xc6, 0x32, 0xde, 0xe3, 0x6e, 0x1b, 0x2e, + 0xf4, 0x42, 0x1f, 0x2e, 0xf4, 0xdf, 0x75, 0x20, 0xc5, 0x44, 0x59, 0xd1, 0x46, 0xda, 0x73, 0x8d, + 0x15, 0x09, 0x4a, 0xa2, 0x14, 0xbd, 0x06, 0x67, 0xcc, 0x2f, 0x78, 0x40, 0x6f, 0x0a, 0x57, 0x3d, + 0xf3, 0x31, 0xe1, 0x5e, 0x24, 0xdc, 0xaf, 0x39, 0x50, 0x5c, 0xf2, 0x3a, 0x75, 0xd2, 0x97, 0x31, + 0x8c, 0xf2, 0xb1, 0x88, 0x78, 0xcd, 0x44, 0xaa, 0x0e, 0x82, 0x8f, 0x61, 0x01, 0xc3, 0xaa, 0x14, + 0xcd, 0x42, 0x29, 0x6c, 0x13, 0xc3, 0x03, 0xf8, 0xb0, 0x9c, 0xbd, 0x55, 0x59, 0x40, 0x8f, 0x1d, + 0x46, 0x5d, 0x41, 0x70, 0xda, 0xca, 0xfd, 0x41, 0x11, 0x46, 0xb5, 0x5b, 0x2f, 0x54, 0x16, 0x88, + 0x48, 0x3b, 0xcc, 0xca, 0xcb, 0x74, 0xc1, 0x60, 0x56, 0x42, 0xf7, 0x60, 0x44, 0xb6, 0xfd, 0x98, + 0xb3, 0x2d, 0x63, 0x0f, 0x62, 0x01, 0xc7, 0xaa, 0x06, 0x9a, 0x86, 0x62, 0x8d, 0xb4, 0x93, 0x06, + 0xeb, 0xde, 0x20, 0x0f, 0xfd, 0x5b, 0xa0, 0x00, 0xcc, 0xe1, 0xb4, 0xc2, 0x26, 0x49, 0xaa, 0x0d, + 0x66, 0xf7, 0x15, 0xb1, 0x81, 0x8b, 0x14, 0x80, 0x39, 0x3c, 0xc7, 0x47, 0x59, 0x3c, 0x7c, 0x1f, + 0xe5, 0x90, 0x65, 0x1f, 0x25, 0x6a, 0xc3, 0x89, 0x38, 0x6e, 0xac, 0x45, 0xfe, 0xb6, 0x97, 0x90, + 0x74, 0xf5, 0x0d, 0xef, 0x87, 0xce, 0x19, 0x76, 0x0f, 0xbd, 0x72, 0x29, 0x8b, 0x05, 0xe7, 0xa1, + 0x46, 0x15, 0x38, 0xe5, 0x07, 0x31, 0xa9, 0x76, 0x22, 0x72, 0xb9, 0x1e, 0x84, 0x11, 0xb9, 0x14, + 0xc6, 0x14, 0x9d, 0xb8, 0x45, 0xab, 0xa2, 0x65, 0x2f, 0xe7, 0x55, 0xc2, 0xf9, 0x6d, 0xd1, 0x12, + 0x1c, 0xaf, 0xf9, 0xb1, 0xb7, 0xd1, 0x24, 0x95, 0xce, 0x46, 0x2b, 0xe4, 0x8a, 0x77, 0x89, 0x21, + 0xbc, 0x5f, 0x5a, 0x89, 0x16, 0xb2, 0x15, 0x70, 0x77, 0x1b, 0xf4, 0x34, 0x8c, 0xc5, 0x7e, 0x50, + 0x6f, 0x92, 0xb9, 0xc8, 0x0b, 0xaa, 0x0d, 0x71, 0xfd, 0x56, 0x59, 0xd3, 0x2b, 0x5a, 0x19, 0x36, + 0x6a, 0xb2, 0x3d, 0xcf, 0xdb, 0x64, 0xa4, 0x41, 0x51, 0x5b, 0x94, 0xba, 0x3f, 0x74, 0x60, 0x4c, + 0x8f, 0x54, 0xa7, 0x92, 0x36, 0x34, 0x16, 0x16, 0x2b, 0xfc, 0x2c, 0xb0, 0x77, 0xe2, 0x5f, 0x52, + 0x38, 0x53, 0x65, 0x39, 0x85, 0x61, 0x8d, 0x66, 0x1f, 0xf7, 0xce, 0x1f, 0x86, 0xe2, 0x66, 0x48, + 0x05, 0x92, 0x01, 0xd3, 0x0c, 0xbf, 0x48, 0x81, 0x98, 0x97, 0xb9, 0xff, 0xd3, 0x81, 0xd3, 0xf9, + 0x41, 0xf8, 0x6f, 0x87, 0x41, 0x5e, 0x00, 0xa0, 0x43, 0x31, 0x98, 0xba, 0x96, 0x79, 0x42, 0x96, + 0x60, 0xad, 0x56, 0x7f, 0xc3, 0xfe, 0x33, 0x2a, 0x14, 0xa7, 0x74, 0x3e, 0xef, 0xc0, 0x38, 0x25, + 0xbb, 0x1c, 0x6d, 0x18, 0xa3, 0x5d, 0xb5, 0x33, 0x5a, 0x85, 0x36, 0xf5, 0x36, 0x18, 0x60, 0x6c, + 0x12, 0x47, 0xef, 0x84, 0x92, 0x57, 0xab, 0x45, 0x24, 0x8e, 0x95, 0xdf, 0x8e, 0xd9, 0xa2, 0x66, + 0x25, 0x10, 0xa7, 0xe5, 0x94, 0x89, 0x36, 0x6a, 0x9b, 0x31, 0xe5, 0x4b, 0x82, 0x71, 0x2b, 0x26, + 0x4a, 0x89, 0x50, 0x38, 0x56, 0x35, 0xdc, 0x5f, 0x1d, 0x04, 0x93, 0x36, 0xaa, 0xc1, 0xb1, 0xad, + 0x68, 0x63, 0x9e, 0x85, 0x3d, 0x1c, 0x24, 0xfc, 0x80, 0x85, 0x05, 0x2c, 0x9b, 0x18, 0x70, 0x16, + 0xa5, 0xa0, 0xb2, 0x4c, 0x76, 0x12, 0x6f, 0xe3, 0xc0, 0xc1, 0x07, 0xcb, 0x26, 0x06, 0x9c, 0x45, + 0x89, 0xde, 0x03, 0xa3, 0x5b, 0xd1, 0x86, 0x64, 0xd1, 0xd9, 0x48, 0x96, 0xe5, 0xb4, 0x08, 0xeb, + 0xf5, 0xe8, 0x14, 0x6e, 0x45, 0x1b, 0xf4, 0x54, 0x94, 0x79, 0x18, 0xd4, 0x14, 0x2e, 0x0b, 0x38, + 0x56, 0x35, 0x50, 0x1b, 0xd0, 0x96, 0x9c, 0x3d, 0x15, 0xe4, 0x21, 0x4e, 0x92, 0xfe, 0x63, 0x44, + 0x58, 0x74, 0xfd, 0x72, 0x17, 0x1e, 0x9c, 0x83, 0x1b, 0x3d, 0x0f, 0x67, 0xb6, 0xa2, 0x0d, 0x21, + 0x2c, 0xac, 0x45, 0x7e, 0x50, 0xf5, 0xdb, 0x46, 0xce, 0x85, 0x69, 0xd1, 0xdd, 0x33, 0xcb, 0xf9, + 0xd5, 0x70, 0xaf, 0xf6, 0xee, 0xef, 0x0d, 0x02, 0xbb, 0x2d, 0x4a, 0x79, 0x61, 0x8b, 0x24, 0x8d, + 0xb0, 0x96, 0x95, 0x7f, 0x56, 0x18, 0x14, 0x8b, 0x52, 0x19, 0x43, 0x5a, 0xe8, 0x11, 0x43, 0x7a, + 0x03, 0x86, 0x1b, 0xc4, 0xab, 0x91, 0x48, 0x5a, 0x10, 0xaf, 0xd8, 0xb9, 0xdf, 0x7a, 0x89, 0x21, + 0x4d, 0xd5, 0x70, 0xfe, 0x3b, 0xc6, 0x92, 0x1a, 0x7a, 0x2f, 0x4c, 0x50, 0x41, 0x26, 0xec, 0x24, + 0xd2, 0xc4, 0xcf, 0x2d, 0x88, 0xec, 0x44, 0x5d, 0x37, 0x4a, 0x70, 0xa6, 0x26, 0x5a, 0x80, 0x49, + 0x61, 0x8e, 0x57, 0x96, 0x49, 0x31, 0xb1, 0x2a, 0x19, 0x46, 0x25, 0x53, 0x8e, 0xbb, 0x5a, 0xb0, + 0x18, 0xc0, 0xb0, 0xc6, 0x3d, 0xb2, 0x7a, 0x0c, 0x60, 0x58, 0xdb, 0xc1, 0xac, 0x04, 0xbd, 0x02, + 0x23, 0xf4, 0xef, 0x62, 0x14, 0xb6, 0x84, 0x6d, 0x66, 0xcd, 0xce, 0xec, 0x50, 0x1a, 0x42, 0x53, + 0x64, 0x02, 0xde, 0x9c, 0xa0, 0x82, 0x15, 0x3d, 0xaa, 0xaf, 0xc8, 0x73, 0xb8, 0xb2, 0xe5, 0xb7, + 0x9f, 0x23, 0x91, 0xbf, 0xb9, 0xc3, 0x84, 0x86, 0x91, 0x54, 0x5f, 0xb9, 0xdc, 0x55, 0x03, 0xe7, + 0xb4, 0x72, 0x3f, 0x5f, 0x80, 0x31, 0xfd, 0xd2, 0xf1, 0x9d, 0x02, 0x8b, 0xe3, 0x74, 0x51, 0x70, + 0xed, 0xf4, 0x92, 0x85, 0x61, 0xdf, 0x69, 0x41, 0x34, 0x60, 0xd0, 0xeb, 0x08, 0x69, 0xd1, 0x8a, + 0x11, 0x8c, 0x8d, 0xb8, 0x93, 0x34, 0xf8, 0xed, 0x34, 0x16, 0xf2, 0xcb, 0x28, 0xb8, 0x9f, 0x1a, + 0x80, 0x11, 0x59, 0x88, 0x3e, 0xe9, 0x00, 0xa4, 0xa1, 0x57, 0x82, 0x95, 0xae, 0xd9, 0x88, 0xcb, + 0xd1, 0xa3, 0xc6, 0x34, 0x5b, 0xba, 0x82, 0x63, 0x8d, 0x2e, 0x4a, 0x60, 0x28, 0xa4, 0x9d, 0xbb, + 0x60, 0xef, 0xe2, 0xfc, 0x2a, 0x25, 0x7c, 0x81, 0x51, 0x4f, 0xcd, 0x66, 0x0c, 0x86, 0x05, 0x2d, + 0xaa, 0x01, 0x6e, 0xc8, 0x88, 0x40, 0x7b, 0x26, 0x66, 0x15, 0x64, 0x98, 0x2a, 0x74, 0x0a, 0x84, + 0x53, 0x82, 0xee, 0x93, 0x30, 0x61, 0x6e, 0x06, 0xaa, 0x11, 0x6c, 0xec, 0x24, 0x84, 0xdb, 0x1b, + 0xc6, 0xb8, 0x46, 0x30, 0x47, 0x01, 0x98, 0xc3, 0xdd, 0xef, 0x53, 0x39, 0x40, 0xb1, 0x97, 0x3e, + 0x4c, 0xfc, 0x0f, 0xeb, 0xc6, 0xb2, 0x5e, 0x6a, 0xd7, 0xc7, 0xa1, 0xc4, 0xfe, 0x61, 0x1b, 0x7d, + 0xc0, 0x96, 0xff, 0x3e, 0xed, 0xa7, 0xd8, 0xea, 0x4c, 0x26, 0x78, 0x4e, 0x12, 0xc2, 0x29, 0x4d, + 0x37, 0x84, 0xc9, 0x6c, 0x6d, 0xf4, 0x21, 0x18, 0x8b, 0xe5, 0xb1, 0x9a, 0x5e, 0xa1, 0xeb, 0xf3, + 0xf8, 0xe5, 0xde, 0x33, 0xad, 0x39, 0x36, 0x90, 0xb9, 0xab, 0x30, 0x64, 0x75, 0x0a, 0xdd, 0x6f, + 0x3b, 0x50, 0x62, 0x0e, 0xcc, 0x7a, 0xe4, 0xb5, 0xd2, 0x26, 0x03, 0x7b, 0xcc, 0x7a, 0x0c, 0xc3, + 0x5c, 0x47, 0x97, 0x81, 0x3f, 0x16, 0xb8, 0x0c, 0xcf, 0x77, 0x97, 0x72, 0x19, 0x6e, 0x0c, 0x88, + 0xb1, 0xa4, 0xe4, 0x7e, 0xba, 0x00, 0x43, 0x97, 0x83, 0x76, 0xe7, 0xaf, 0x7c, 0xce, 0xb5, 0x15, + 0x18, 0xbc, 0x9c, 0x90, 0x96, 0x99, 0x1a, 0x70, 0x6c, 0xee, 0x11, 0x3d, 0x2d, 0x60, 0xd9, 0x4c, + 0x0b, 0x88, 0xbd, 0x1b, 0x32, 0x2e, 0x4e, 0xd8, 0x88, 0xd3, 0x6b, 0x84, 0x4f, 0x40, 0xe9, 0x8a, + 0xb7, 0x41, 0x9a, 0xcb, 0x64, 0x87, 0x5d, 0xfa, 0xe3, 0x31, 0x1a, 0x4e, 0xaa, 0xd8, 0x1b, 0xf1, + 0x14, 0x0b, 0x30, 0xc1, 0x6a, 0xab, 0xcd, 0x40, 0x35, 0x07, 0x92, 0xe6, 0x55, 0x72, 0x4c, 0xcd, + 0x41, 0xcb, 0xa9, 0xa4, 0xd5, 0x72, 0x67, 0x60, 0x34, 0xc5, 0xd2, 0x07, 0xd5, 0x9f, 0x15, 0x60, + 0xdc, 0x30, 0x75, 0x1b, 0x0e, 0x40, 0xe7, 0x8e, 0x0e, 0x40, 0xc3, 0x21, 0x57, 0xb8, 0xd7, 0x0e, + 0xb9, 0x81, 0xa3, 0x77, 0xc8, 0x99, 0x1f, 0x69, 0xb0, 0xaf, 0x8f, 0xd4, 0x84, 0xc1, 0x2b, 0x7e, + 0xb0, 0xd5, 0x1f, 0x9f, 0x89, 0xab, 0x61, 0xbb, 0x8b, 0xcf, 0x54, 0x28, 0x10, 0xf3, 0x32, 0x29, + 0xb9, 0x0c, 0xe4, 0x4b, 0x2e, 0xee, 0x27, 0x1d, 0x18, 0x5b, 0xf1, 0x02, 0x7f, 0x93, 0xc4, 0x09, + 0x5b, 0x57, 0xc9, 0xa1, 0x5e, 0xfe, 0x1a, 0xeb, 0x91, 0xc6, 0xe0, 0x0d, 0x07, 0x8e, 0xaf, 0x90, + 0x56, 0xe8, 0xbf, 0xe2, 0xa5, 0x61, 0xa7, 0xb4, 0xef, 0x0d, 0x3f, 0x11, 0x51, 0x76, 0xaa, 0xef, + 0x97, 0xfc, 0x04, 0x53, 0xf8, 0x1d, 0xec, 0xb8, 0xec, 0x5a, 0x05, 0x55, 0xd0, 0xb4, 0x0b, 0x89, + 0x69, 0x40, 0xa9, 0x2c, 0xc0, 0x69, 0x1d, 0xf7, 0xf7, 0x1d, 0x18, 0xe6, 0x9d, 0x50, 0x91, 0xba, + 0x4e, 0x0f, 0xdc, 0x0d, 0x28, 0xb2, 0x76, 0x62, 0x55, 0x2f, 0x59, 0x10, 0x7f, 0x28, 0x3a, 0xbe, + 0x07, 0xd9, 0xbf, 0x98, 0x13, 0x60, 0x6a, 0x8b, 0x77, 0x73, 0x56, 0x45, 0xdc, 0xa6, 0x6a, 0x0b, + 0x83, 0x62, 0x51, 0xea, 0x7e, 0x7d, 0x00, 0x46, 0x54, 0xf6, 0x2e, 0x96, 0x5b, 0x21, 0x08, 0xc2, + 0xc4, 0xe3, 0xb1, 0x0e, 0x9c, 0x57, 0x7f, 0xc8, 0x5e, 0xf6, 0xb0, 0x99, 0xd9, 0x14, 0x3b, 0xf7, + 0xdf, 0x29, 0x25, 0x54, 0x2b, 0xc1, 0x7a, 0x27, 0xd0, 0xc7, 0x60, 0xa8, 0x49, 0xb9, 0x8f, 0x64, + 0xdd, 0xcf, 0x59, 0xec, 0x0e, 0x63, 0x6b, 0xa2, 0x27, 0x6a, 0x86, 0x38, 0x10, 0x0b, 0xaa, 0x53, + 0xef, 0x87, 0xc9, 0x6c, 0xaf, 0xef, 0x74, 0x5f, 0xb2, 0xa4, 0xdf, 0xb6, 0xfc, 0x9b, 0x82, 0x7b, + 0xee, 0xbf, 0xa9, 0xfb, 0x2c, 0x8c, 0xae, 0x90, 0x24, 0xf2, 0xab, 0x0c, 0xc1, 0x9d, 0x16, 0x57, + 0x5f, 0xf2, 0xc3, 0x67, 0xd8, 0x62, 0xa5, 0x38, 0x63, 0xf4, 0x1a, 0x40, 0x3b, 0x0a, 0xa9, 0xfe, + 0x4a, 0x3a, 0xf2, 0x63, 0x5b, 0x90, 0x87, 0xd7, 0x14, 0x4e, 0xee, 0x72, 0x4e, 0x7f, 0x63, 0x8d, + 0x9e, 0xfb, 0x02, 0x14, 0x57, 0x3a, 0x09, 0xb9, 0xd9, 0x07, 0xc7, 0xda, 0x6f, 0x02, 0x01, 0xf7, + 0x43, 0x30, 0xc6, 0x70, 0x5f, 0x0a, 0x9b, 0xf4, 0x58, 0xa5, 0x53, 0xd3, 0xa2, 0xbf, 0xb3, 0x4e, + 0x01, 0x56, 0x09, 0xf3, 0x32, 0xba, 0x65, 0x1a, 0x61, 0xb3, 0xa6, 0x2e, 0x53, 0xa9, 0x05, 0x71, + 0x89, 0x41, 0xb1, 0x28, 0x75, 0x7f, 0xb9, 0x00, 0xa3, 0xac, 0xa1, 0x60, 0x37, 0x3b, 0x30, 0xdc, + 0xe0, 0x74, 0xc4, 0x1c, 0x5a, 0x08, 0xd1, 0xd2, 0x7b, 0xaf, 0xe9, 0x72, 0x1c, 0x80, 0x25, 0x3d, + 0x4a, 0xfa, 0x86, 0xe7, 0x27, 0x94, 0x74, 0xe1, 0x70, 0x49, 0x5f, 0xe7, 0x64, 0xb0, 0xa4, 0xe7, + 0xfe, 0x12, 0xb0, 0x4b, 0xca, 0x8b, 0x4d, 0xaf, 0xce, 0x67, 0x2e, 0xdc, 0x22, 0x35, 0xc1, 0x73, + 0xb5, 0x99, 0xa3, 0x50, 0x2c, 0x4a, 0xf9, 0xc5, 0xcf, 0x24, 0xf2, 0x55, 0x70, 0xb3, 0x76, 0xf1, + 0x93, 0x81, 0x65, 0x28, 0x7b, 0xcd, 0xfd, 0x72, 0x01, 0x80, 0xe5, 0x7a, 0xe3, 0x77, 0x8b, 0x7f, + 0x41, 0x46, 0x2a, 0x99, 0x8e, 0x44, 0x15, 0xa9, 0xc4, 0x6e, 0x4f, 0xeb, 0x11, 0x4a, 0xfa, 0x9d, + 0x83, 0xc2, 0xde, 0x77, 0x0e, 0x50, 0x1b, 0x86, 0xc3, 0x4e, 0x42, 0x65, 0x55, 0x71, 0xd8, 0x5b, + 0xf0, 0xa3, 0xaf, 0x72, 0x84, 0x3c, 0x50, 0x5f, 0xfc, 0xc0, 0x92, 0x0c, 0x7a, 0x1a, 0x46, 0xda, + 0x51, 0x58, 0xa7, 0x67, 0xb7, 0x38, 0xde, 0x1f, 0x90, 0xf2, 0xd0, 0x9a, 0x80, 0xdf, 0xd6, 0xfe, + 0xc7, 0xaa, 0xb6, 0xfb, 0xa3, 0x49, 0x3e, 0x2f, 0x62, 0xed, 0x4d, 0x41, 0xc1, 0x97, 0x96, 0x29, + 0x10, 0x28, 0x0a, 0x97, 0x17, 0x70, 0xc1, 0xaf, 0xa9, 0x7d, 0x55, 0xe8, 0xb9, 0xaf, 0xde, 0x03, + 0xa3, 0x35, 0x3f, 0x6e, 0x37, 0xbd, 0x9d, 0xab, 0x39, 0x66, 0xc1, 0x85, 0xb4, 0x08, 0xeb, 0xf5, + 0xd0, 0x13, 0xe2, 0x86, 0xc9, 0xa0, 0x61, 0x0a, 0x92, 0x37, 0x4c, 0xd2, 0xbb, 0xeb, 0xfc, 0x72, + 0x49, 0xf6, 0x8e, 0x7f, 0xb1, 0xef, 0x3b, 0xfe, 0x59, 0x49, 0x6c, 0xe8, 0xe8, 0x25, 0xb1, 0xf7, + 0xc1, 0xb8, 0xfc, 0xc9, 0xc4, 0xa3, 0xf2, 0x49, 0xd6, 0x7b, 0x65, 0xae, 0x5e, 0xd7, 0x0b, 0xb1, + 0x59, 0x37, 0x5d, 0xb4, 0xc3, 0xfd, 0x2e, 0xda, 0x0b, 0x00, 0x1b, 0x61, 0x27, 0xa8, 0x79, 0xd1, + 0xce, 0xe5, 0x05, 0x11, 0x8f, 0xaa, 0x04, 0xbf, 0x39, 0x55, 0x82, 0xb5, 0x5a, 0xfa, 0x42, 0x2f, + 0xdd, 0x61, 0xa1, 0x7f, 0x08, 0x4a, 0x2c, 0x76, 0x97, 0xd4, 0x66, 0x13, 0x11, 0x62, 0xb4, 0x9f, + 0x90, 0xc9, 0x34, 0xe8, 0x50, 0x22, 0xc1, 0x29, 0x3e, 0xf4, 0x61, 0x80, 0x4d, 0x3f, 0xf0, 0xe3, + 0x06, 0xc3, 0x3e, 0xba, 0x6f, 0xec, 0x6a, 0x9c, 0x8b, 0x0a, 0x0b, 0xd6, 0x30, 0xa2, 0x17, 0xe1, + 0x38, 0x89, 0x13, 0xbf, 0xe5, 0x25, 0xa4, 0xa6, 0xee, 0x64, 0x96, 0x99, 0x2d, 0x53, 0x45, 0x4f, + 0x5f, 0xcc, 0x56, 0xb8, 0x9d, 0x07, 0xc4, 0xdd, 0x88, 0x8c, 0x1d, 0x39, 0xb5, 0x9f, 0x1d, 0x89, + 0xfe, 0xdc, 0x81, 0xe3, 0x11, 0xe1, 0x71, 0x27, 0xb1, 0xea, 0xd8, 0x29, 0xc6, 0x8e, 0xab, 0x36, + 0xd2, 0xa8, 0xab, 0x7c, 0x29, 0x38, 0x4b, 0x85, 0x0b, 0x2e, 0x44, 0x8e, 0xbe, 0xab, 0xfc, 0x76, + 0x1e, 0xf0, 0x8d, 0xb7, 0xa6, 0xa7, 0xbb, 0xd3, 0xf9, 0x2b, 0xe4, 0x74, 0xe7, 0xfd, 0xdd, 0xb7, + 0xa6, 0x27, 0xe5, 0xef, 0x74, 0xd2, 0xba, 0x06, 0x49, 0x8f, 0xd5, 0x76, 0x58, 0xbb, 0xbc, 0x26, + 0x62, 0xc1, 0xd4, 0xb1, 0xba, 0x46, 0x81, 0x98, 0x97, 0xa1, 0xc7, 0x60, 0xa4, 0xe6, 0x91, 0x56, + 0x18, 0xa8, 0x84, 0xb8, 0x4c, 0x9a, 0x5f, 0x10, 0x30, 0xac, 0x4a, 0xa9, 0x0e, 0x11, 0x88, 0x23, + 0xa5, 0x7c, 0xd6, 0x96, 0x0e, 0x21, 0x0f, 0x29, 0x4e, 0x55, 0xfe, 0xc2, 0x8a, 0x12, 0x6a, 0xc2, + 0x90, 0xcf, 0x0c, 0x15, 0x22, 0xdc, 0xd4, 0x82, 0x75, 0x84, 0x1b, 0x3e, 0x64, 0xb0, 0x29, 0x63, + 0xfd, 0x82, 0x86, 0x7e, 0xd6, 0x1c, 0x3b, 0x9a, 0xb3, 0xe6, 0x31, 0x18, 0xa9, 0x36, 0xfc, 0x66, + 0x2d, 0x22, 0x41, 0x79, 0x92, 0x69, 0xec, 0x6c, 0x26, 0xe6, 0x05, 0x0c, 0xab, 0x52, 0xf4, 0x37, + 0x60, 0x3c, 0xec, 0x24, 0x8c, 0xb5, 0xd0, 0x79, 0x8a, 0xcb, 0xc7, 0x59, 0x75, 0x16, 0x3c, 0xb4, + 0xaa, 0x17, 0x60, 0xb3, 0x1e, 0x65, 0xf1, 0x8d, 0x30, 0x66, 0xa9, 0x7d, 0x18, 0x8b, 0x3f, 0x6d, + 0xb2, 0xf8, 0x4b, 0x5a, 0x19, 0x36, 0x6a, 0xa2, 0xaf, 0x3a, 0x70, 0xbc, 0x95, 0x55, 0xe0, 0xca, + 0x67, 0xd8, 0xcc, 0x54, 0x6c, 0x08, 0xfa, 0x19, 0xd4, 0x3c, 0xec, 0xbb, 0x0b, 0x8c, 0xbb, 0x3b, + 0xc1, 0x92, 0x6c, 0xc5, 0x3b, 0x41, 0xb5, 0x11, 0x85, 0x81, 0xd9, 0xbd, 0xfb, 0x6d, 0x5d, 0x2d, + 0x63, 0x7b, 0x3b, 0x8f, 0xc4, 0xdc, 0xfd, 0xb7, 0x76, 0xa7, 0x4f, 0xe5, 0x16, 0xe1, 0xfc, 0x4e, + 0x4d, 0x2d, 0xc0, 0xe9, 0x7c, 0xfe, 0x70, 0x27, 0x8d, 0x63, 0x40, 0xd7, 0x38, 0x16, 0xe1, 0xfe, + 0x9e, 0x9d, 0xa2, 0x27, 0x8d, 0x94, 0x36, 0x1d, 0xf3, 0xa4, 0xe9, 0x92, 0x0e, 0x27, 0x60, 0x4c, + 0x7f, 0xff, 0xc1, 0xfd, 0xbf, 0x03, 0x00, 0xa9, 0x9d, 0x1c, 0x79, 0x30, 0xc1, 0x6d, 0xf2, 0x97, + 0x17, 0x0e, 0x7c, 0x29, 0x7e, 0xde, 0x40, 0x80, 0x33, 0x08, 0x51, 0x0b, 0x10, 0x87, 0xf0, 0xdf, + 0x07, 0xf1, 0xad, 0x32, 0x57, 0xe4, 0x7c, 0x17, 0x12, 0x9c, 0x83, 0x98, 0x8e, 0x28, 0x09, 0xb7, + 0x48, 0x70, 0x0d, 0x5f, 0x39, 0x48, 0x66, 0x05, 0xee, 0x8d, 0x33, 0x10, 0xe0, 0x0c, 0x42, 0xe4, + 0xc2, 0x10, 0xb3, 0xcd, 0xc8, 0x00, 0x6d, 0xc6, 0x5e, 0x98, 0xa4, 0x11, 0x63, 0x51, 0x82, 0xbe, + 0xec, 0xc0, 0x84, 0x4c, 0x10, 0xc1, 0xac, 0xa1, 0x32, 0x34, 0xfb, 0x9a, 0x2d, 0x3f, 0xc7, 0x45, + 0x1d, 0x7b, 0x1a, 0xf8, 0x68, 0x80, 0x63, 0x9c, 0xe9, 0x84, 0xfb, 0x3c, 0x9c, 0xc8, 0x69, 0x6e, + 0x45, 0xa3, 0xfd, 0x8e, 0x03, 0xa3, 0x5a, 0xde, 0x42, 0xf4, 0x1a, 0x94, 0xc2, 0x8a, 0xf5, 0x68, + 0xbb, 0xd5, 0x4a, 0x57, 0xb4, 0x9d, 0x02, 0xe1, 0x94, 0x60, 0x3f, 0x41, 0x82, 0xb9, 0x49, 0x16, + 0xef, 0x71, 0xb7, 0xf7, 0x1d, 0x24, 0xf8, 0xab, 0x45, 0x48, 0x31, 0xed, 0x33, 0x71, 0x49, 0x1a, + 0x52, 0x58, 0xd8, 0x33, 0xa4, 0xb0, 0x06, 0xc7, 0x3c, 0xe6, 0x4b, 0x3e, 0x60, 0xba, 0x12, 0x9e, + 0xb6, 0xd6, 0xc4, 0x80, 0xb3, 0x28, 0x29, 0x95, 0x38, 0x6d, 0xca, 0xa8, 0x0c, 0xee, 0x9b, 0x4a, + 0xc5, 0xc4, 0x80, 0xb3, 0x28, 0xd1, 0x8b, 0x50, 0xae, 0xb2, 0xeb, 0xb7, 0x7c, 0x8c, 0x97, 0x37, + 0xaf, 0x86, 0xc9, 0x5a, 0x44, 0x62, 0x12, 0x24, 0x22, 0x31, 0xd9, 0x43, 0x62, 0x16, 0xca, 0xf3, + 0x3d, 0xea, 0xe1, 0x9e, 0x18, 0xa8, 0x9a, 0xc2, 0x9c, 0xd1, 0x7e, 0xb2, 0xc3, 0x98, 0x88, 0xf0, + 0xd2, 0x2b, 0x35, 0xa5, 0xa2, 0x17, 0x62, 0xb3, 0x2e, 0xfa, 0x15, 0x07, 0xc6, 0x9b, 0xd2, 0x5c, + 0x8f, 0x3b, 0x4d, 0x99, 0x65, 0x13, 0x5b, 0x59, 0x7e, 0x57, 0x74, 0xcc, 0x5c, 0x96, 0x30, 0x40, + 0xd8, 0xa4, 0x9d, 0xcd, 0x1d, 0x33, 0xd2, 0x67, 0xee, 0x98, 0xef, 0x3b, 0x30, 0x99, 0xa5, 0x86, + 0xb6, 0xe0, 0xc1, 0x96, 0x17, 0x6d, 0x5d, 0x0e, 0x36, 0x23, 0x76, 0x11, 0x23, 0xe1, 0x8b, 0x61, + 0x76, 0x33, 0x21, 0xd1, 0x82, 0xb7, 0xc3, 0xdd, 0x9f, 0x45, 0xf5, 0x4c, 0xd3, 0x83, 0x2b, 0x7b, + 0x55, 0xc6, 0x7b, 0xe3, 0x42, 0x15, 0x38, 0x45, 0x2b, 0xb0, 0xd4, 0x72, 0x7e, 0x18, 0xa4, 0x44, + 0x0a, 0x8c, 0x88, 0x0a, 0x06, 0x5c, 0xc9, 0xab, 0x84, 0xf3, 0xdb, 0xba, 0x17, 0x61, 0x88, 0xdf, + 0x8b, 0xbb, 0x2b, 0xff, 0x91, 0xfb, 0x1f, 0x0a, 0x20, 0x05, 0xc3, 0xbf, 0xda, 0xee, 0x38, 0x7a, + 0x88, 0x46, 0xcc, 0xa4, 0x24, 0xac, 0x1d, 0xec, 0x10, 0x15, 0x49, 0x1c, 0x45, 0x09, 0x95, 0x98, + 0xc9, 0x4d, 0x3f, 0x99, 0x0f, 0x6b, 0xd2, 0xc6, 0xc1, 0x24, 0xe6, 0x8b, 0x02, 0x86, 0x55, 0xa9, + 0xfb, 0x49, 0x07, 0xc6, 0xe9, 0x28, 0x9b, 0x4d, 0xd2, 0xac, 0x24, 0xa4, 0x1d, 0xa3, 0x18, 0x8a, + 0x31, 0xfd, 0xc7, 0x9e, 0x29, 0x30, 0xbd, 0x4b, 0x49, 0xda, 0x9a, 0xb3, 0x86, 0x12, 0xc1, 0x9c, + 0x96, 0xfb, 0xe6, 0x00, 0x94, 0xd4, 0x64, 0xf7, 0x61, 0x4f, 0xbd, 0x90, 0xe6, 0x57, 0xe5, 0x1c, + 0xb8, 0xac, 0xe5, 0x56, 0xbd, 0x4d, 0xa7, 0x2e, 0xd8, 0xe1, 0x89, 0x26, 0xd2, 0x44, 0xab, 0x4f, + 0x98, 0xae, 0xe6, 0xd3, 0xfa, 0xfa, 0xd3, 0xea, 0x0b, 0x9f, 0xf3, 0x4d, 0xdd, 0xd3, 0x3f, 0x68, + 0xeb, 0x34, 0x53, 0x6e, 0xcc, 0xde, 0x2e, 0xfe, 0xcc, 0xd3, 0x3b, 0xc5, 0xbe, 0x9e, 0xde, 0x79, + 0x1c, 0x06, 0x49, 0xd0, 0x69, 0x31, 0x51, 0xa9, 0xc4, 0x54, 0x84, 0xc1, 0x8b, 0x41, 0xa7, 0x65, + 0x8e, 0x8c, 0x55, 0x41, 0xef, 0x87, 0xd1, 0x1a, 0x89, 0xab, 0x91, 0xcf, 0xb2, 0x27, 0x08, 0xcb, + 0xce, 0x03, 0xcc, 0x5c, 0x96, 0x82, 0xcd, 0x86, 0x7a, 0x03, 0xf7, 0x15, 0x18, 0x5a, 0x6b, 0x76, + 0xea, 0x7e, 0x80, 0xda, 0x30, 0xc4, 0x73, 0x29, 0x88, 0xd3, 0xde, 0x82, 0xde, 0xc9, 0x59, 0x85, + 0x16, 0x85, 0xc2, 0xaf, 0xd4, 0x0a, 0x3a, 0xee, 0xef, 0x14, 0x80, 0xaa, 0xe6, 0x4b, 0xf3, 0xe8, + 0x6f, 0x77, 0xbd, 0x34, 0xf3, 0x73, 0x39, 0x2f, 0xcd, 0x8c, 0xb3, 0xca, 0x39, 0x8f, 0xcc, 0x34, + 0x61, 0x9c, 0x39, 0x47, 0xe4, 0x19, 0x28, 0xc4, 0xea, 0xa7, 0xfa, 0x4c, 0x3f, 0xa0, 0x37, 0x15, + 0x27, 0x82, 0x0e, 0xc2, 0x26, 0x72, 0xb4, 0x03, 0x27, 0x78, 0x9a, 0xce, 0x05, 0xd2, 0xf4, 0x76, + 0x8c, 0x74, 0x5c, 0x7d, 0xa7, 0x3c, 0x90, 0xad, 0x78, 0x80, 0xf7, 0x42, 0x37, 0x3a, 0x9c, 0x47, + 0xc3, 0xfd, 0x83, 0x41, 0xd0, 0xdc, 0x17, 0x7d, 0xec, 0xac, 0x97, 0x33, 0xce, 0xaa, 0x15, 0x2b, + 0xce, 0x2a, 0xe9, 0x01, 0xe2, 0xdc, 0xca, 0xf4, 0x4f, 0xd1, 0x4e, 0x35, 0x48, 0xb3, 0x2d, 0xf6, + 0xa5, 0xea, 0xd4, 0x25, 0xd2, 0x6c, 0x63, 0x56, 0xa2, 0x2e, 0x1f, 0x0e, 0xf6, 0xbc, 0x7c, 0xd8, + 0x80, 0x62, 0xdd, 0xeb, 0xd4, 0x89, 0x88, 0xd6, 0xb4, 0xe0, 0x97, 0x64, 0xd7, 0x21, 0xb8, 0x5f, + 0x92, 0xfd, 0x8b, 0x39, 0x01, 0xca, 0x18, 0x1a, 0x32, 0x7c, 0x45, 0x18, 0x74, 0x2d, 0x30, 0x06, + 0x15, 0x11, 0xc3, 0x19, 0x83, 0xfa, 0x89, 0x53, 0x62, 0xa8, 0x0d, 0xc3, 0x55, 0x9e, 0x30, 0x45, + 0xc8, 0x37, 0x97, 0x6d, 0xdc, 0xae, 0x64, 0x08, 0xb9, 0xe5, 0x45, 0xfc, 0xc0, 0x92, 0x8c, 0x7b, + 0x1e, 0x46, 0xb5, 0xc7, 0x31, 0xe8, 0x67, 0x50, 0xb9, 0x3a, 0xb4, 0xcf, 0xb0, 0xe0, 0x25, 0x1e, + 0x66, 0x25, 0xee, 0x37, 0x07, 0x41, 0xd9, 0xdd, 0xf4, 0xbb, 0x80, 0x5e, 0x55, 0xcb, 0x2c, 0x64, + 0xdc, 0x8b, 0x0f, 0x03, 0x2c, 0x4a, 0xa9, 0x0c, 0xd8, 0x22, 0x51, 0x5d, 0xe9, 0xdc, 0x82, 0xb5, + 0x2b, 0x19, 0x70, 0x45, 0x2f, 0xc4, 0x66, 0x5d, 0x2a, 0xc0, 0xb7, 0x84, 0x3b, 0x3f, 0x1b, 0x2c, + 0x2d, 0xdd, 0xfc, 0x58, 0xd5, 0x60, 0xa9, 0x09, 0x5a, 0x9a, 0xf7, 0x5f, 0x04, 0x6d, 0xda, 0x70, + 0x3e, 0x69, 0x58, 0x79, 0x70, 0x95, 0x0e, 0xc1, 0x06, 0x55, 0xb4, 0x04, 0xc7, 0x63, 0x92, 0xac, + 0xde, 0x08, 0x48, 0xa4, 0xd2, 0x06, 0x88, 0xdc, 0x17, 0xea, 0xa6, 0x44, 0x25, 0x5b, 0x01, 0x77, + 0xb7, 0xc9, 0x8d, 0x73, 0x2d, 0xee, 0x3b, 0xce, 0x75, 0x01, 0x26, 0x37, 0x3d, 0xbf, 0xd9, 0x89, + 0x48, 0xcf, 0x68, 0xd9, 0xc5, 0x4c, 0x39, 0xee, 0x6a, 0xc1, 0x2e, 0xeb, 0x34, 0xbd, 0x7a, 0x5c, + 0x1e, 0xd6, 0x2e, 0xeb, 0x50, 0x00, 0xe6, 0x70, 0xf7, 0xb7, 0x1c, 0xe0, 0x49, 0x87, 0x66, 0x37, + 0x37, 0xfd, 0xc0, 0x4f, 0x76, 0xd0, 0xd7, 0x1c, 0x98, 0x0c, 0xc2, 0x1a, 0x99, 0x0d, 0x12, 0x5f, + 0x02, 0xed, 0x65, 0x82, 0x67, 0xb4, 0xae, 0x66, 0xd0, 0xf3, 0x0c, 0x16, 0x59, 0x28, 0xee, 0xea, + 0x06, 0xbb, 0xd9, 0xca, 0x30, 0x88, 0xa8, 0xfa, 0x25, 0x66, 0x2c, 0x4f, 0xbc, 0x28, 0x49, 0x93, + 0x80, 0x08, 0xaf, 0xe1, 0xfd, 0x9a, 0x1d, 0xdb, 0xac, 0x80, 0xbb, 0xdb, 0x50, 0x44, 0xcc, 0x84, + 0xeb, 0x93, 0x66, 0xcd, 0x38, 0x87, 0x4a, 0x29, 0xa2, 0xab, 0xd9, 0x0a, 0xb8, 0xbb, 0x0d, 0x9a, + 0x31, 0xe4, 0xe1, 0x01, 0x36, 0xeb, 0x13, 0xbd, 0xc5, 0x57, 0xf7, 0x0c, 0x9c, 0xca, 0x9d, 0x12, + 0xf7, 0xfb, 0x03, 0x60, 0x66, 0x83, 0x42, 0xcf, 0x42, 0xb1, 0xc9, 0xf2, 0x93, 0x38, 0x07, 0x4c, + 0xf3, 0xc5, 0xbe, 0x3e, 0x4f, 0x60, 0xc2, 0x31, 0xa1, 0x05, 0x18, 0x65, 0x29, 0xa6, 0x44, 0xf6, + 0x98, 0x82, 0x91, 0xb8, 0x81, 0xcf, 0xb4, 0xca, 0x1b, 0xa3, 0xff, 0xc4, 0x7a, 0x33, 0xf4, 0x2a, + 0x0c, 0x6f, 0xf0, 0x44, 0x9b, 0xf6, 0x3c, 0x9e, 0x22, 0x73, 0x27, 0x93, 0x0c, 0x65, 0x1a, 0xcf, + 0xdb, 0xe9, 0xbf, 0x58, 0x52, 0x44, 0x3b, 0x30, 0xe2, 0xc9, 0x55, 0x3a, 0x68, 0xeb, 0x3a, 0x89, + 0xb1, 0x23, 0x44, 0xbc, 0x90, 0x5c, 0x95, 0x8a, 0x5c, 0x26, 0xb0, 0xaa, 0xd8, 0x57, 0x60, 0xd5, + 0xb7, 0x1d, 0x80, 0xf4, 0x55, 0x12, 0x74, 0x13, 0x46, 0xe2, 0xa7, 0x0c, 0x33, 0x8d, 0x8d, 0x3c, + 0x02, 0x02, 0xa3, 0x76, 0xd7, 0x56, 0x40, 0xb0, 0xa2, 0x76, 0x27, 0xd3, 0xd2, 0xcf, 0x1c, 0x38, + 0x99, 0xf7, 0x7a, 0xca, 0x3d, 0xec, 0xf1, 0x7e, 0xad, 0x4a, 0xa2, 0xc1, 0x5a, 0x44, 0x36, 0xfd, + 0x9b, 0x39, 0xe9, 0x9e, 0x79, 0x01, 0x4e, 0xeb, 0xb8, 0x6f, 0x0c, 0x83, 0x22, 0x7c, 0x48, 0x56, + 0xa8, 0x47, 0xa9, 0xc6, 0x58, 0x4f, 0xaf, 0x7f, 0xaa, 0x7a, 0x98, 0x41, 0xb1, 0x28, 0xa5, 0x5a, + 0xa3, 0xbc, 0x12, 0x20, 0x0e, 0x21, 0xb6, 0x0a, 0xe5, 0xd5, 0x01, 0xac, 0x4a, 0xf3, 0xec, 0x5a, + 0xc5, 0x23, 0xb1, 0x6b, 0x0d, 0xd9, 0xb7, 0x6b, 0x3d, 0x0e, 0xc3, 0x51, 0xd8, 0x24, 0xb3, 0xf8, + 0xaa, 0xd0, 0x85, 0xd2, 0x90, 0x0e, 0x0e, 0xc6, 0xb2, 0xfc, 0x80, 0x96, 0x1d, 0xf4, 0xbb, 0xce, + 0x1e, 0xa6, 0xb3, 0x92, 0xad, 0x53, 0x2e, 0x37, 0x37, 0x1e, 0x53, 0xec, 0x0e, 0x62, 0x8f, 0xfb, + 0xba, 0x03, 0xc7, 0x49, 0x50, 0x8d, 0x76, 0x18, 0x1e, 0x81, 0x4d, 0x78, 0xdc, 0xaf, 0xd9, 0xd8, + 0x7c, 0x17, 0xb3, 0xc8, 0xb9, 0x63, 0xab, 0x0b, 0x8c, 0xbb, 0xbb, 0x81, 0x56, 0x61, 0xa4, 0xea, + 0x89, 0x15, 0x31, 0xba, 0x9f, 0x15, 0xc1, 0xfd, 0x86, 0xb3, 0x62, 0x29, 0x28, 0x24, 0xee, 0x4f, + 0x0a, 0x70, 0x22, 0xa7, 0x4b, 0xec, 0xfa, 0x58, 0x8b, 0xae, 0xc8, 0xcb, 0xb5, 0xec, 0x7e, 0x5c, + 0x16, 0x70, 0xac, 0x6a, 0xa0, 0x35, 0x38, 0xb9, 0xd5, 0x8a, 0x53, 0x2c, 0xf3, 0x61, 0x90, 0x90, + 0x9b, 0x72, 0x77, 0x4a, 0x6f, 0xfc, 0xc9, 0xe5, 0x9c, 0x3a, 0x38, 0xb7, 0x25, 0x15, 0xc8, 0x48, + 0xe0, 0x6d, 0x34, 0x49, 0x5a, 0x24, 0x2e, 0x3f, 0x2a, 0x81, 0xec, 0x62, 0xa6, 0x1c, 0x77, 0xb5, + 0x40, 0x9f, 0x75, 0xe0, 0x6c, 0x4c, 0xa2, 0x6d, 0x12, 0x55, 0xfc, 0x1a, 0x99, 0xef, 0xc4, 0x49, + 0xd8, 0x22, 0xd1, 0x01, 0x8d, 0xc5, 0xd3, 0xb7, 0x76, 0xa7, 0xcf, 0x56, 0x7a, 0x63, 0xc3, 0x7b, + 0x91, 0x72, 0x3f, 0xeb, 0xc0, 0x44, 0x85, 0x99, 0x12, 0x94, 0x76, 0x60, 0x3b, 0x3b, 0xea, 0xa3, + 0x2a, 0x5d, 0x47, 0x86, 0x2b, 0x9a, 0x09, 0x36, 0xdc, 0x97, 0x60, 0xb2, 0x42, 0x5a, 0x5e, 0xbb, + 0xc1, 0x6e, 0x2e, 0xf3, 0x68, 0xb4, 0xf3, 0x50, 0x8a, 0x25, 0x2c, 0xfb, 0x20, 0x92, 0xaa, 0x8c, + 0xd3, 0x3a, 0xe8, 0x11, 0x1e, 0x39, 0x27, 0xef, 0x3f, 0x95, 0xb8, 0x1e, 0xc5, 0xc3, 0xed, 0x62, + 0x2c, 0xcb, 0xdc, 0x37, 0x1d, 0x18, 0x4b, 0xdb, 0x93, 0x4d, 0x54, 0x87, 0x63, 0x55, 0xed, 0xee, + 0x60, 0x7a, 0x6b, 0xa3, 0xff, 0x6b, 0x86, 0x3c, 0x69, 0xb3, 0x89, 0x04, 0x67, 0xb1, 0xee, 0x3f, + 0xf0, 0xf0, 0x0b, 0x05, 0x38, 0xa6, 0xba, 0x2a, 0xdc, 0xa6, 0xaf, 0x67, 0xe3, 0x03, 0xb1, 0x8d, + 0xc4, 0x43, 0xe6, 0xdc, 0xef, 0x11, 0x23, 0xf8, 0x7a, 0x36, 0x46, 0xf0, 0x50, 0xc9, 0x77, 0x79, + 0x82, 0xbf, 0x5d, 0x80, 0x11, 0x95, 0x06, 0xe9, 0x59, 0x28, 0x32, 0xe5, 0xf8, 0xee, 0x04, 0x62, + 0xa6, 0x68, 0x63, 0x8e, 0x89, 0xa2, 0x64, 0xaa, 0xc1, 0x81, 0x53, 0xe9, 0x96, 0xb8, 0x39, 0xd5, + 0x8b, 0x12, 0xcc, 0x31, 0xa1, 0x65, 0x18, 0x20, 0x41, 0x4d, 0x48, 0xc6, 0xfb, 0x47, 0xc8, 0x9e, + 0x2e, 0xbb, 0x18, 0xd4, 0x30, 0xc5, 0xc2, 0x72, 0xb1, 0x71, 0x01, 0x28, 0xf3, 0x50, 0x8d, 0x90, + 0x7e, 0x44, 0xa9, 0xfb, 0x01, 0x30, 0xb2, 0xf0, 0x89, 0xec, 0xfe, 0x42, 0x8d, 0xec, 0x7e, 0x5d, + 0x4c, 0xe8, 0x8f, 0x69, 0x1d, 0xf7, 0x57, 0x06, 0x60, 0xa8, 0xd2, 0xd9, 0xa0, 0x4a, 0xc2, 0xb7, + 0x1c, 0x38, 0x71, 0x23, 0x93, 0xa8, 0x3a, 0xdd, 0x24, 0xd7, 0xec, 0xd9, 0xa4, 0xf5, 0x40, 0xba, + 0xb3, 0xf2, 0x19, 0xff, 0x9c, 0x42, 0x9c, 0xd7, 0x1d, 0x23, 0x57, 0xec, 0xc0, 0xa1, 0xe4, 0x8a, + 0xbd, 0x79, 0xc8, 0x37, 0x49, 0xc6, 0x7b, 0xdd, 0x22, 0x71, 0xff, 0xa0, 0x08, 0xc0, 0xbf, 0xc6, + 0x6a, 0x3b, 0xe9, 0xc7, 0x72, 0xf8, 0x34, 0x8c, 0xd5, 0x49, 0x40, 0x22, 0x19, 0x26, 0x99, 0x79, + 0x44, 0x69, 0x49, 0x2b, 0xc3, 0x46, 0x4d, 0xa6, 0xd4, 0x04, 0x49, 0xb4, 0xc3, 0x05, 0xdf, 0xec, + 0x6d, 0x11, 0x55, 0x82, 0xb5, 0x5a, 0x19, 0xa5, 0xb7, 0x78, 0x27, 0xa5, 0x17, 0xbd, 0x1f, 0x26, + 0xcc, 0xd4, 0x2b, 0x42, 0xda, 0x53, 0xfe, 0x7f, 0x33, 0x63, 0x0b, 0xce, 0xd4, 0xa6, 0xbb, 0xa0, + 0x16, 0xed, 0xe0, 0x4e, 0x20, 0xc4, 0x3e, 0xb5, 0x0b, 0x16, 0x18, 0x14, 0x8b, 0x52, 0x96, 0xb3, + 0x82, 0x1d, 0x80, 0x1c, 0x2e, 0xf2, 0x5e, 0xa4, 0x39, 0x2b, 0xb4, 0x32, 0x6c, 0xd4, 0xa4, 0x14, + 0x84, 0xe5, 0x15, 0xcc, 0x7d, 0x96, 0x31, 0x97, 0xb6, 0x61, 0x22, 0x34, 0x2d, 0x46, 0x5c, 0x06, + 0x7a, 0x77, 0x9f, 0x4b, 0xcf, 0x68, 0xcb, 0xe3, 0x36, 0x32, 0x06, 0xa6, 0x0c, 0x7e, 0x2a, 0xf7, + 0xea, 0x97, 0x2a, 0xc6, 0xcc, 0x28, 0xdb, 0x9e, 0xf7, 0x1e, 0xd6, 0xe0, 0x64, 0x3b, 0xac, 0xad, + 0x45, 0x7e, 0x18, 0xf9, 0xc9, 0xce, 0x7c, 0xd3, 0x8b, 0x63, 0xb6, 0x30, 0xc6, 0x4d, 0x79, 0x68, + 0x2d, 0xa7, 0x0e, 0xce, 0x6d, 0x49, 0x35, 0x94, 0xb6, 0x00, 0xb2, 0x58, 0xb7, 0x22, 0x97, 0xe8, + 0x64, 0x45, 0xac, 0x4a, 0xdd, 0x13, 0x70, 0xbc, 0xd2, 0x69, 0xb7, 0x9b, 0x3e, 0xa9, 0x29, 0x27, + 0x8b, 0xfb, 0x01, 0x38, 0x26, 0x32, 0xc9, 0x2a, 0xe9, 0x63, 0x5f, 0x79, 0xcf, 0xdd, 0x3f, 0x77, + 0xe0, 0x58, 0x26, 0xb2, 0x08, 0xbd, 0x9a, 0x95, 0x19, 0xec, 0x64, 0x38, 0xd5, 0xa4, 0x05, 0x91, + 0xae, 0x34, 0x4f, 0xfe, 0x68, 0xc8, 0x6b, 0x01, 0xd6, 0xae, 0xe3, 0xb0, 0xe0, 0x79, 0x7e, 0xa4, + 0xe8, 0x77, 0x0b, 0xdc, 0xcf, 0x14, 0x20, 0x3f, 0x9c, 0x0b, 0x7d, 0xac, 0x7b, 0x02, 0x9e, 0xb5, + 0x38, 0x01, 0x22, 0x9e, 0xac, 0xf7, 0x1c, 0x04, 0xe6, 0x1c, 0xac, 0x58, 0x9a, 0x03, 0x41, 0xb7, + 0x7b, 0x26, 0xfe, 0x97, 0x03, 0xa3, 0xeb, 0xeb, 0x57, 0xd4, 0x39, 0x87, 0xe1, 0x74, 0xcc, 0xd3, + 0x0d, 0x30, 0xaf, 0xf7, 0x7c, 0xd8, 0x6a, 0x73, 0x27, 0xb8, 0x70, 0xce, 0xb3, 0xa4, 0xbe, 0x95, + 0xdc, 0x1a, 0xb8, 0x47, 0x4b, 0x74, 0x19, 0x4e, 0xe8, 0x25, 0x15, 0xed, 0x0d, 0xc5, 0xa2, 0x48, + 0xf1, 0xd3, 0x5d, 0x8c, 0xf3, 0xda, 0x64, 0x51, 0x09, 0x03, 0x2e, 0x3b, 0xae, 0x72, 0x50, 0x89, + 0x62, 0x9c, 0xd7, 0xc6, 0x5d, 0x85, 0xd1, 0x75, 0x2f, 0x52, 0x03, 0xff, 0x20, 0x4c, 0x56, 0xc3, + 0x96, 0x34, 0x33, 0x5d, 0x21, 0xdb, 0xa4, 0x29, 0x86, 0xcc, 0x1f, 0x2e, 0xc9, 0x94, 0xe1, 0xae, + 0xda, 0xee, 0x7f, 0x3f, 0x07, 0xea, 0xfa, 0x64, 0x1f, 0x27, 0x4c, 0x5b, 0x05, 0xba, 0x16, 0x2d, + 0x07, 0xba, 0x2a, 0x5e, 0x9b, 0x09, 0x76, 0x4d, 0xd2, 0x60, 0xd7, 0x21, 0xdb, 0xc1, 0xae, 0x4a, + 0xe2, 0xec, 0x0a, 0x78, 0xfd, 0x8a, 0x03, 0x63, 0x41, 0x58, 0x23, 0xca, 0x2a, 0x3c, 0xcc, 0xc4, + 0xde, 0x17, 0xed, 0xdd, 0x1b, 0xe0, 0x81, 0x9b, 0x02, 0x3d, 0x0f, 0xc2, 0x56, 0x47, 0x94, 0x5e, + 0x84, 0x8d, 0x7e, 0xa0, 0x45, 0xcd, 0xf0, 0xc9, 0x3d, 0x26, 0x0f, 0xe4, 0xe9, 0x2b, 0x77, 0xb4, + 0x62, 0xde, 0xd4, 0xe4, 0xa6, 0x92, 0x2d, 0x83, 0x9e, 0xbc, 0x13, 0xa7, 0x39, 0x7e, 0x64, 0x5e, + 0xea, 0x54, 0x9e, 0x72, 0x61, 0x88, 0x47, 0x6b, 0x8b, 0x64, 0x52, 0xcc, 0x1f, 0xc9, 0x23, 0xb9, + 0xb1, 0x28, 0x41, 0x89, 0x8c, 0x80, 0x18, 0xb5, 0xf5, 0xca, 0x84, 0x11, 0x61, 0x91, 0x1f, 0x02, + 0x81, 0x9e, 0xd1, 0xf5, 0xe0, 0xb1, 0x7e, 0xf4, 0xe0, 0xf1, 0x9e, 0x3a, 0xf0, 0xe7, 0x1d, 0x18, + 0xab, 0x6a, 0xaf, 0x3e, 0x94, 0x1f, 0xb3, 0xf5, 0xba, 0x75, 0xde, 0xe3, 0x1c, 0xdc, 0xcd, 0x65, + 0xbc, 0x32, 0x61, 0x50, 0x67, 0x19, 0x34, 0x99, 0xd2, 0xcf, 0x8e, 0x7e, 0x2b, 0x49, 0x33, 0x4c, + 0x23, 0x82, 0x8c, 0x24, 0xa5, 0x30, 0x2c, 0x68, 0xa1, 0xd7, 0x60, 0x44, 0x06, 0xfc, 0x8b, 0xc0, + 0x78, 0x6c, 0xc3, 0x4a, 0x6f, 0x3a, 0x37, 0x65, 0xda, 0x3d, 0x0e, 0xc5, 0x8a, 0x22, 0x6a, 0xc0, + 0x40, 0xcd, 0xab, 0x8b, 0x10, 0xf9, 0x15, 0x3b, 0x69, 0x4d, 0x25, 0x4d, 0xa6, 0x9f, 0x2d, 0xcc, + 0x2e, 0x61, 0x4a, 0x02, 0xdd, 0x4c, 0xd3, 0xe6, 0x4f, 0x5a, 0x3b, 0x7d, 0x4d, 0x31, 0x89, 0x9b, + 0x35, 0xba, 0xb2, 0xf0, 0xd7, 0x84, 0x3f, 0xf8, 0xaf, 0x31, 0xb2, 0x8b, 0x76, 0xf2, 0xa2, 0xf2, + 0x24, 0x2c, 0xa9, 0x4f, 0x99, 0x52, 0x69, 0x24, 0x49, 0xbb, 0xfc, 0xf3, 0xb6, 0xa8, 0xb0, 0x54, + 0x22, 0xfc, 0x21, 0xf2, 0xf5, 0xf5, 0x35, 0xcc, 0xb0, 0xa3, 0x26, 0x0c, 0xb5, 0x59, 0x58, 0x4b, + 0xf9, 0x9d, 0xb6, 0xce, 0x16, 0x1e, 0x26, 0xc3, 0xd7, 0x26, 0xff, 0x1f, 0x0b, 0x1a, 0xe8, 0x22, + 0x0c, 0xf3, 0xd7, 0x5f, 0xf8, 0x15, 0x85, 0xd1, 0x0b, 0x53, 0xbd, 0xdf, 0x90, 0x49, 0x0f, 0x0a, + 0xfe, 0x3b, 0xc6, 0xb2, 0x2d, 0xfa, 0x82, 0x03, 0x13, 0x94, 0xa3, 0xa6, 0xcf, 0xd5, 0x94, 0x91, + 0x2d, 0x9e, 0x75, 0x2d, 0xa6, 0x12, 0x89, 0xe4, 0x35, 0x4a, 0x4d, 0xba, 0x6c, 0x90, 0xc3, 0x19, + 0xf2, 0xe8, 0x75, 0x18, 0x89, 0xfd, 0x1a, 0xa9, 0x7a, 0x51, 0x5c, 0x3e, 0x71, 0x38, 0x5d, 0x49, + 0xfd, 0x35, 0x82, 0x10, 0x56, 0x24, 0xd1, 0xaf, 0xb3, 0xf7, 0x42, 0xc5, 0xdb, 0xfe, 0x55, 0x2e, + 0xd6, 0x9f, 0xb4, 0xb5, 0xf7, 0xa5, 0x67, 0x4a, 0x62, 0x16, 0x6e, 0x0c, 0x93, 0x1c, 0xce, 0xd2, + 0x47, 0x7f, 0xc7, 0x81, 0x53, 0x3c, 0xf3, 0x7f, 0xf6, 0xa9, 0x8a, 0x53, 0x07, 0xb4, 0xcf, 0xb0, + 0xbb, 0x15, 0xb3, 0x79, 0x28, 0x71, 0x3e, 0x25, 0x96, 0xa7, 0xd7, 0x7c, 0x5d, 0xe8, 0xb4, 0x55, + 0xbf, 0x65, 0xff, 0x2f, 0x0a, 0xa1, 0x27, 0x61, 0xb4, 0x2d, 0x8e, 0x43, 0x3f, 0x6e, 0xb1, 0x9b, + 0x32, 0x03, 0xfc, 0x0e, 0xe3, 0x5a, 0x0a, 0xc6, 0x7a, 0x1d, 0x23, 0x69, 0xf3, 0xe3, 0x7b, 0x25, + 0x6d, 0x46, 0xd7, 0x60, 0x34, 0x09, 0x9b, 0x22, 0x6f, 0x69, 0x5c, 0x2e, 0xb3, 0x15, 0x78, 0x2e, + 0x6f, 0x6f, 0xad, 0xab, 0x6a, 0xa9, 0x26, 0x9b, 0xc2, 0x62, 0xac, 0xe3, 0x61, 0xd1, 0xc9, 0xe2, + 0x45, 0x85, 0x88, 0xa9, 0xb0, 0xf7, 0x67, 0xa2, 0x93, 0xf5, 0x42, 0x6c, 0xd6, 0x45, 0x4b, 0x70, + 0xbc, 0xdd, 0xa5, 0x03, 0x4f, 0x99, 0x7e, 0xfe, 0x6e, 0x05, 0xb8, 0xbb, 0x8d, 0xa1, 0xfd, 0x9e, + 0xdd, 0x4b, 0xfb, 0xed, 0x91, 0xc2, 0xf8, 0x81, 0x83, 0xa4, 0x30, 0x46, 0x35, 0x78, 0xc0, 0xeb, + 0x24, 0x21, 0x4b, 0x97, 0x63, 0x36, 0xe1, 0x81, 0xda, 0x0f, 0xf1, 0xd8, 0xef, 0x5b, 0xbb, 0xd3, + 0x0f, 0xcc, 0xee, 0x51, 0x0f, 0xef, 0x89, 0x05, 0xbd, 0x02, 0x23, 0x44, 0xa4, 0x61, 0x2e, 0xff, + 0x9c, 0x2d, 0x21, 0xc1, 0x4c, 0xec, 0x2c, 0x63, 0x60, 0x39, 0x0c, 0x2b, 0x7a, 0x68, 0x1d, 0x46, + 0x1b, 0x61, 0x9c, 0xcc, 0x36, 0x7d, 0x2f, 0x26, 0x71, 0xf9, 0x41, 0xb6, 0x68, 0x72, 0x65, 0xaf, + 0x4b, 0xb2, 0x5a, 0xba, 0x66, 0x2e, 0xa5, 0x2d, 0xb1, 0x8e, 0x06, 0x11, 0xe6, 0xbd, 0x64, 0x51, + 0xea, 0xd2, 0x11, 0x74, 0x8e, 0x0d, 0xec, 0xd1, 0x3c, 0xcc, 0x6b, 0x61, 0xad, 0x62, 0xd6, 0x56, + 0xee, 0x4b, 0x1d, 0x88, 0xb3, 0x38, 0xd1, 0xd3, 0x30, 0xd6, 0x0e, 0x6b, 0x95, 0x36, 0xa9, 0xae, + 0x79, 0x49, 0xb5, 0x51, 0x9e, 0x36, 0xad, 0x6e, 0x6b, 0x5a, 0x19, 0x36, 0x6a, 0xa2, 0x36, 0x0c, + 0xb7, 0x78, 0x1e, 0x85, 0xf2, 0xc3, 0xb6, 0x74, 0x1b, 0x91, 0x98, 0x81, 0xcb, 0x0b, 0xe2, 0x07, + 0x96, 0x64, 0xd0, 0x3f, 0x76, 0xe0, 0x58, 0xe6, 0xee, 0x57, 0xf9, 0x1d, 0xd6, 0x44, 0x16, 0x13, + 0xf1, 0xdc, 0xa3, 0x6c, 0xfa, 0x4c, 0xe0, 0xed, 0x6e, 0x10, 0xce, 0xf6, 0x88, 0xcf, 0x0b, 0x4b, + 0x86, 0x52, 0x7e, 0xc4, 0xde, 0xbc, 0x30, 0x84, 0x72, 0x5e, 0xd8, 0x0f, 0x2c, 0xc9, 0xa0, 0xc7, + 0x61, 0x58, 0xe4, 0x2d, 0x2c, 0x3f, 0x6a, 0xba, 0xa0, 0x45, 0x7a, 0x43, 0x2c, 0xcb, 0xa7, 0x3e, + 0x00, 0xc7, 0xbb, 0x54, 0xb7, 0x7d, 0x65, 0xe4, 0xf8, 0x4d, 0x07, 0xf4, 0xcb, 0xe2, 0xd6, 0xdf, + 0x3e, 0x79, 0x1a, 0xc6, 0xaa, 0xfc, 0xa1, 0x49, 0x7e, 0xdd, 0x7c, 0xd0, 0xb4, 0x7f, 0xce, 0x6b, + 0x65, 0xd8, 0xa8, 0xe9, 0x5e, 0x02, 0xd4, 0x9d, 0x98, 0xfe, 0x40, 0xe9, 0x9e, 0xfe, 0xa9, 0x03, + 0xe3, 0x86, 0xcc, 0x60, 0xdd, 0xc9, 0xb8, 0x08, 0xa8, 0xe5, 0x47, 0x51, 0x18, 0xe9, 0x2f, 0xfa, + 0x89, 0x94, 0x10, 0xec, 0xd2, 0xdd, 0x4a, 0x57, 0x29, 0xce, 0x69, 0xe1, 0xfe, 0xce, 0x20, 0xa4, + 0x41, 0xe0, 0x2a, 0xf3, 0xaf, 0xd3, 0x33, 0xf3, 0xef, 0x13, 0x30, 0xf2, 0x52, 0x1c, 0x06, 0x6b, + 0x69, 0x7e, 0x60, 0xf5, 0x2d, 0x9e, 0xa9, 0xac, 0x5e, 0x65, 0x35, 0x55, 0x0d, 0x56, 0xfb, 0xe5, + 0x45, 0xbf, 0x99, 0x74, 0x27, 0x90, 0x7d, 0xe6, 0x59, 0x0e, 0xc7, 0xaa, 0x06, 0x7b, 0xdc, 0x6f, + 0x9b, 0x28, 0xc3, 0x78, 0xfa, 0xb8, 0x1f, 0x7f, 0x73, 0x82, 0x95, 0xa1, 0xf3, 0x50, 0x52, 0x46, + 0x75, 0x61, 0xa9, 0x57, 0x33, 0xa5, 0x2c, 0xef, 0x38, 0xad, 0xc3, 0x04, 0x42, 0x61, 0x88, 0x15, + 0x26, 0x94, 0x8a, 0x0d, 0xf5, 0x24, 0x63, 0xda, 0xe5, 0xbc, 0x5d, 0x82, 0xb1, 0x22, 0x99, 0xe7, + 0x68, 0x2d, 0x1d, 0x8a, 0xa3, 0x55, 0xbb, 0x91, 0x50, 0xec, 0xf7, 0x46, 0x82, 0xb9, 0xb6, 0x47, + 0xfa, 0x5a, 0xdb, 0x9f, 0x1a, 0x80, 0xe1, 0xe7, 0x48, 0xc4, 0xf2, 0xa6, 0x3f, 0x0e, 0xc3, 0xdb, + 0xfc, 0xdf, 0xec, 0x75, 0x56, 0x51, 0x03, 0xcb, 0x72, 0xfa, 0xdd, 0x36, 0x3a, 0x7e, 0xb3, 0xb6, + 0x90, 0xee, 0xe2, 0x34, 0xe5, 0xa2, 0x2c, 0xc0, 0x69, 0x1d, 0xda, 0xa0, 0x4e, 0x25, 0xfb, 0x56, + 0xcb, 0xef, 0x7a, 0xb7, 0x7e, 0x49, 0x16, 0xe0, 0xb4, 0x0e, 0x7a, 0x14, 0x86, 0xea, 0x7e, 0xb2, + 0xee, 0xd5, 0xb3, 0x6e, 0xc2, 0x25, 0x06, 0xc5, 0xa2, 0x94, 0xb9, 0x89, 0xfc, 0x64, 0x3d, 0x22, + 0xcc, 0xb2, 0xdb, 0x95, 0x4d, 0x63, 0x49, 0x2b, 0xc3, 0x46, 0x4d, 0xd6, 0xa5, 0x50, 0x8c, 0x4c, + 0xc4, 0xa5, 0xa6, 0x5d, 0x92, 0x05, 0x38, 0xad, 0x43, 0xd7, 0x7f, 0x35, 0x6c, 0xb5, 0xfd, 0xa6, + 0x88, 0x98, 0xd6, 0xd6, 0xff, 0xbc, 0x80, 0x63, 0x55, 0x83, 0xd6, 0xa6, 0x2c, 0x8c, 0xb2, 0x9f, + 0xec, 0x43, 0x6a, 0x6b, 0x02, 0x8e, 0x55, 0x0d, 0xf7, 0x39, 0x18, 0xe7, 0x3b, 0x79, 0xbe, 0xe9, + 0xf9, 0xad, 0xa5, 0x79, 0x74, 0xb1, 0xeb, 0x46, 0xc2, 0xe3, 0x39, 0x37, 0x12, 0x4e, 0x19, 0x8d, + 0xba, 0x6f, 0x26, 0xb8, 0x3f, 0x2c, 0xc0, 0xc8, 0x11, 0xbe, 0x45, 0x79, 0xe4, 0xcf, 0x2a, 0xa3, + 0x9b, 0x99, 0x77, 0x28, 0xd7, 0x6c, 0x5e, 0x30, 0xda, 0xf3, 0x0d, 0xca, 0xff, 0x5a, 0x80, 0xd3, + 0xb2, 0xaa, 0xd4, 0xe5, 0x96, 0xe6, 0xd9, 0x0b, 0x60, 0x87, 0x3f, 0xd1, 0x91, 0x31, 0xd1, 0x6b, + 0xf6, 0xb4, 0xd1, 0xa5, 0xf9, 0x9e, 0x53, 0xfd, 0x4a, 0x66, 0xaa, 0xb1, 0x55, 0xaa, 0x7b, 0x4f, + 0xf6, 0x5f, 0x38, 0x30, 0x95, 0x3f, 0xd9, 0x47, 0xf0, 0xf4, 0xe7, 0xeb, 0xe6, 0xd3, 0x9f, 0xbf, + 0x68, 0x6f, 0x89, 0x99, 0x43, 0xe9, 0xf1, 0x08, 0xe8, 0x9f, 0x39, 0x70, 0x52, 0x36, 0x60, 0xa7, + 0xe7, 0x9c, 0x1f, 0xb0, 0x48, 0x96, 0xc3, 0x5f, 0x66, 0xaf, 0x19, 0xcb, 0xec, 0x05, 0x7b, 0x03, + 0xd7, 0xc7, 0xd1, 0xf3, 0xc9, 0xf4, 0x3f, 0x75, 0xa0, 0x9c, 0xd7, 0xe0, 0x08, 0x3e, 0xf9, 0xab, + 0xe6, 0x27, 0x7f, 0xee, 0x70, 0x46, 0xde, 0xfb, 0x83, 0x97, 0x7b, 0x4d, 0x14, 0x6a, 0x4a, 0xb9, + 0xca, 0xb1, 0xe5, 0xa3, 0xe5, 0x24, 0xf2, 0x05, 0xb4, 0x26, 0x0c, 0xc5, 0x2c, 0x6a, 0x43, 0x2c, + 0x81, 0x4b, 0x36, 0xa4, 0x2d, 0x8a, 0x4f, 0xd8, 0xd8, 0xd9, 0xff, 0x58, 0xd0, 0x70, 0x7f, 0xab, + 0x00, 0x67, 0xd4, 0x93, 0xbe, 0x64, 0x9b, 0x34, 0xd3, 0xfd, 0xc1, 0x5e, 0x99, 0xf0, 0xd4, 0x4f, + 0x7b, 0xaf, 0x4c, 0xa4, 0x24, 0xd2, 0xbd, 0x90, 0xc2, 0xb0, 0x46, 0x13, 0x55, 0xe0, 0x14, 0x7b, + 0x15, 0x62, 0xd1, 0x0f, 0xbc, 0xa6, 0xff, 0x0a, 0x89, 0x30, 0x69, 0x85, 0xdb, 0x5e, 0x53, 0x48, + 0xea, 0xea, 0x46, 0xf3, 0x62, 0x5e, 0x25, 0x9c, 0xdf, 0xb6, 0x4b, 0xe3, 0x1e, 0xe8, 0x57, 0xe3, + 0x76, 0xff, 0xc4, 0x81, 0xb1, 0x23, 0x7c, 0x00, 0x39, 0x34, 0xb7, 0xc4, 0x33, 0xf6, 0xb6, 0x44, + 0x8f, 0x6d, 0xb0, 0x5b, 0x84, 0xae, 0x37, 0x61, 0xd1, 0xa7, 0x1d, 0x15, 0xd7, 0xc2, 0x83, 0x07, + 0x3f, 0x6c, 0xaf, 0x1f, 0xfb, 0x49, 0x83, 0x89, 0xbe, 0x9e, 0xc9, 0x0d, 0x5a, 0xb0, 0x95, 0xe0, + 0xaa, 0xab, 0x37, 0x07, 0xc8, 0x11, 0xfa, 0x15, 0x07, 0x80, 0xf7, 0x53, 0xa4, 0x16, 0xa7, 0x7d, + 0xdb, 0x38, 0xb4, 0x99, 0xa2, 0x44, 0x78, 0xd7, 0xd4, 0x16, 0x4a, 0x0b, 0xb0, 0xd6, 0x93, 0xbb, + 0x48, 0xfe, 0x79, 0xd7, 0x79, 0x47, 0xbf, 0xe0, 0xc0, 0xb1, 0x4c, 0x77, 0x73, 0xda, 0x6f, 0x9a, + 0x8f, 0x1c, 0x5a, 0x90, 0xac, 0xcc, 0x84, 0xd3, 0xba, 0xf1, 0xe4, 0x47, 0x0f, 0x83, 0xf1, 0x98, + 0x36, 0x7a, 0x15, 0x4a, 0xd2, 0xf2, 0x21, 0x97, 0xb7, 0xcd, 0xc7, 0x5e, 0x95, 0x7a, 0x23, 0x21, + 0x31, 0x4e, 0xe9, 0x65, 0xc2, 0xe6, 0x0a, 0x7d, 0x85, 0xcd, 0xdd, 0xdb, 0xa7, 0x62, 0xf3, 0xed, + 0xd2, 0x83, 0x87, 0x62, 0x97, 0x7e, 0xc0, 0xba, 0x5d, 0xfa, 0xc1, 0x23, 0xb6, 0x4b, 0x6b, 0x4e, + 0xc2, 0xe2, 0x5d, 0x38, 0x09, 0x5f, 0x85, 0x93, 0xdb, 0xa9, 0xd2, 0xa9, 0x56, 0x92, 0x48, 0xab, + 0xf4, 0x78, 0xae, 0x35, 0x9a, 0x2a, 0xd0, 0x71, 0x42, 0x82, 0x44, 0x53, 0x57, 0xd3, 0x88, 0xbd, + 0xe7, 0x72, 0xd0, 0xe1, 0x5c, 0x22, 0x59, 0x6f, 0xcf, 0x70, 0x1f, 0xde, 0x9e, 0x37, 0x1d, 0x38, + 0xe5, 0x75, 0x5d, 0x02, 0xc3, 0x64, 0x53, 0x84, 0x9c, 0x5c, 0xb7, 0x27, 0x42, 0x18, 0xe8, 0x85, + 0x5b, 0x2d, 0xaf, 0x08, 0xe7, 0x77, 0x08, 0x3d, 0x92, 0xba, 0xde, 0x79, 0x9c, 0x67, 0xbe, 0x9f, + 0xfc, 0xeb, 0xd9, 0x78, 0x1e, 0x60, 0x53, 0xff, 0x51, 0xbb, 0xda, 0xb6, 0x85, 0x98, 0x9e, 0xd1, + 0xbb, 0x88, 0xe9, 0xc9, 0xb8, 0xde, 0xc6, 0x2c, 0xb9, 0xde, 0x02, 0x98, 0xf4, 0x5b, 0x5e, 0x9d, + 0xac, 0x75, 0x9a, 0x4d, 0x7e, 0x89, 0x44, 0x3e, 0xc7, 0x9b, 0x6b, 0xc1, 0xbb, 0x12, 0x56, 0xbd, + 0x66, 0xf6, 0x21, 0x76, 0x75, 0x59, 0xe6, 0x72, 0x06, 0x13, 0xee, 0xc2, 0x4d, 0x17, 0x2c, 0xcb, + 0xef, 0x47, 0x12, 0x3a, 0xdb, 0x2c, 0x70, 0x64, 0x84, 0x2f, 0xd8, 0x4b, 0x29, 0x18, 0xeb, 0x75, + 0xd0, 0x32, 0x94, 0x6a, 0x41, 0x2c, 0xee, 0xb3, 0x1e, 0x63, 0xcc, 0xec, 0x5d, 0x94, 0x05, 0x2e, + 0x5c, 0xad, 0xa8, 0x9b, 0xac, 0x0f, 0xe4, 0x24, 0xac, 0x54, 0xe5, 0x38, 0x6d, 0x8f, 0x56, 0x18, + 0x32, 0xf1, 0x56, 0x19, 0x8f, 0xe7, 0x78, 0xa8, 0x87, 0xc3, 0x68, 0xe1, 0xaa, 0x7c, 0x6d, 0x6d, + 0x5c, 0x90, 0x13, 0x8f, 0x8e, 0xa5, 0x18, 0xb4, 0x67, 0x91, 0x8f, 0xef, 0xf9, 0x2c, 0x32, 0xcb, + 0x54, 0x9b, 0x34, 0x95, 0x7b, 0xf8, 0x9c, 0xb5, 0x4c, 0xb5, 0x69, 0xa4, 0xa4, 0xc8, 0x54, 0x9b, + 0x02, 0xb0, 0x4e, 0x12, 0xad, 0xf6, 0x72, 0x93, 0x9f, 0x60, 0x4c, 0x63, 0xff, 0x4e, 0x6f, 0xdd, + 0x5f, 0x7a, 0x72, 0x4f, 0x7f, 0x69, 0x97, 0x7f, 0xf7, 0xd4, 0x3e, 0xfc, 0xbb, 0x0d, 0x96, 0x43, + 0x74, 0x69, 0x5e, 0xb8, 0xd4, 0x2d, 0xe8, 0x77, 0x2c, 0x6b, 0x09, 0x8f, 0x3c, 0x65, 0xff, 0x62, + 0x4e, 0xa0, 0x67, 0x40, 0xf5, 0x99, 0x03, 0x07, 0x54, 0x53, 0xf6, 0x9c, 0xc2, 0x59, 0x32, 0xda, + 0xa2, 0x60, 0xcf, 0x29, 0x18, 0xeb, 0x75, 0xb2, 0xde, 0xd2, 0xfb, 0x0f, 0xcd, 0x5b, 0x3a, 0x75, + 0x04, 0xde, 0xd2, 0xb3, 0x7d, 0x7b, 0x4b, 0x6f, 0xc2, 0x89, 0x76, 0x58, 0x5b, 0xf0, 0xe3, 0xa8, + 0xc3, 0x6e, 0xd5, 0xcd, 0x75, 0x6a, 0x75, 0x92, 0x30, 0x77, 0xeb, 0xe8, 0x85, 0x77, 0xe9, 0x9d, + 0x6c, 0xb3, 0x8d, 0x2c, 0xf7, 0x68, 0xa6, 0x01, 0x33, 0x9d, 0xb0, 0xa8, 0xdb, 0x9c, 0x42, 0x9c, + 0x47, 0x42, 0xf7, 0xd3, 0x3e, 0x74, 0x34, 0x7e, 0xda, 0x0f, 0xc2, 0x48, 0xdc, 0xe8, 0x24, 0xb5, + 0xf0, 0x46, 0xc0, 0x9c, 0xf1, 0xa5, 0xb9, 0x77, 0x28, 0x53, 0xb6, 0x80, 0xdf, 0xde, 0x9d, 0x9e, + 0x94, 0xff, 0x6b, 0x56, 0x6c, 0x01, 0x41, 0xdf, 0xe8, 0x71, 0x7f, 0xc7, 0x3d, 0xcc, 0xfb, 0x3b, + 0x67, 0xf6, 0x75, 0x77, 0x27, 0xcf, 0x19, 0xfd, 0xf0, 0xdb, 0xce, 0x19, 0xfd, 0x35, 0x07, 0xc6, + 0xb7, 0x75, 0x97, 0x81, 0x70, 0x98, 0x5b, 0x08, 0xdc, 0x31, 0x3c, 0x11, 0x73, 0x2e, 0xe5, 0x73, + 0x06, 0xe8, 0x76, 0x16, 0x80, 0xcd, 0x9e, 0xe4, 0x04, 0x15, 0x3d, 0x72, 0xaf, 0x82, 0x8a, 0x5e, + 0x67, 0x7c, 0x4c, 0x2a, 0xb9, 0xcc, 0x8b, 0x6e, 0x37, 0xa6, 0x58, 0xf2, 0x44, 0x15, 0x52, 0xac, + 0xd3, 0x43, 0x9f, 0x77, 0x60, 0x52, 0xea, 0x65, 0xc2, 0xe5, 0x17, 0x8b, 0xa8, 0x48, 0x9b, 0xea, + 0x20, 0x0b, 0xab, 0x5f, 0xcf, 0xd0, 0xc1, 0x5d, 0x94, 0x29, 0x57, 0x57, 0x41, 0x68, 0xf5, 0x98, + 0x05, 0xff, 0x0a, 0x19, 0x66, 0x36, 0x05, 0x63, 0xbd, 0x0e, 0xfa, 0xa6, 0x03, 0xc5, 0x46, 0x18, + 0x6e, 0xc5, 0xe5, 0xc7, 0x19, 0x43, 0x7f, 0xde, 0xb2, 0x6c, 0x7a, 0x89, 0xe2, 0xe6, 0x42, 0xe9, + 0x93, 0xd2, 0x76, 0xc4, 0x60, 0xb7, 0x77, 0xa7, 0x27, 0x8c, 0xa7, 0x96, 0xe2, 0x37, 0xde, 0xd2, + 0x20, 0xc2, 0xb6, 0xc9, 0xba, 0x86, 0xbe, 0xe4, 0xc0, 0xe4, 0x8d, 0x8c, 0x41, 0x43, 0x84, 0x85, + 0x62, 0xfb, 0xa6, 0x12, 0x3e, 0xdd, 0x59, 0x28, 0xee, 0xea, 0x01, 0xfa, 0x9c, 0x69, 0xe8, 0xe4, + 0xf1, 0xa3, 0x16, 0x27, 0x30, 0x63, 0x58, 0xe5, 0xd7, 0xdc, 0x7a, 0x58, 0x3c, 0x03, 0x28, 0xb2, + 0x9d, 0x51, 0x7e, 0xc2, 0x96, 0x00, 0xa7, 0xe5, 0xbe, 0xe1, 0x22, 0x09, 0x03, 0x60, 0x4e, 0xe6, + 0xae, 0xe3, 0x51, 0xa6, 0xe8, 0xe4, 0xa5, 0x8b, 0x23, 0xa7, 0x29, 0x31, 0xed, 0x3b, 0x16, 0x98, + 0x8b, 0xb1, 0xdc, 0x74, 0xf3, 0xce, 0xbf, 0x3e, 0x0d, 0x13, 0xa6, 0x2f, 0x11, 0xbd, 0xdb, 0x7c, + 0xb6, 0xe3, 0x5c, 0xf6, 0x05, 0x84, 0x71, 0x59, 0xdf, 0x78, 0x05, 0xc1, 0x78, 0xa6, 0xa0, 0x70, + 0xa8, 0xcf, 0x14, 0x0c, 0x1c, 0xcd, 0x33, 0x05, 0x93, 0x87, 0xf1, 0x4c, 0xc1, 0xf1, 0x7d, 0x3d, + 0x53, 0xa0, 0x3d, 0x13, 0x31, 0x78, 0x87, 0x67, 0x22, 0x66, 0xe1, 0x98, 0xbc, 0x6b, 0x44, 0x44, + 0x26, 0x78, 0x1e, 0x66, 0x70, 0x46, 0x34, 0x39, 0x36, 0x6f, 0x16, 0xe3, 0x6c, 0x7d, 0xba, 0xa9, + 0x8b, 0x01, 0x6b, 0x39, 0x64, 0xeb, 0x0d, 0x29, 0x73, 0x69, 0x31, 0x75, 0x5d, 0xb0, 0x44, 0x19, + 0x5d, 0x5d, 0x64, 0xb0, 0xdb, 0xf2, 0x1f, 0xcc, 0x7b, 0x80, 0x5e, 0x84, 0x72, 0xb8, 0xb9, 0xd9, + 0x0c, 0xbd, 0x5a, 0xfa, 0x96, 0x82, 0x8c, 0x83, 0xe0, 0x77, 0x45, 0x55, 0xea, 0xdd, 0xd5, 0x1e, + 0xf5, 0x70, 0x4f, 0x0c, 0xe8, 0x4d, 0x2a, 0x08, 0x25, 0x61, 0x44, 0x6a, 0xa9, 0x6d, 0xa8, 0xc4, + 0xc6, 0x4c, 0xac, 0x8f, 0xb9, 0x62, 0xd2, 0xe1, 0xa3, 0x57, 0x1f, 0x25, 0x53, 0x8a, 0xb3, 0xdd, + 0x42, 0x11, 0x9c, 0x6e, 0xe7, 0x99, 0xa6, 0x62, 0x71, 0x43, 0x6a, 0x2f, 0x03, 0x99, 0xdc, 0xba, + 0xa7, 0x73, 0x8d, 0x5b, 0x31, 0xee, 0x81, 0x59, 0x7f, 0xef, 0x60, 0xe4, 0x68, 0xde, 0x3b, 0xf8, + 0x38, 0x80, 0xba, 0x14, 0x2f, 0x8d, 0x1d, 0xcb, 0x56, 0xae, 0xee, 0x70, 0x9c, 0xda, 0x13, 0xb3, + 0x8a, 0x0c, 0xd6, 0x48, 0xa2, 0xff, 0x93, 0xfb, 0x20, 0x08, 0xb7, 0xe8, 0xd4, 0xad, 0xaf, 0x89, + 0xb7, 0xdd, 0xa3, 0x20, 0xff, 0xc4, 0x81, 0x29, 0xbe, 0xf2, 0xb2, 0xca, 0x04, 0x15, 0x65, 0xc4, + 0x5d, 0x22, 0xdb, 0xa1, 0x32, 0x2c, 0x6a, 0xb0, 0x62, 0x50, 0x65, 0x8e, 0xf5, 0x3d, 0x7a, 0x82, + 0xbe, 0x92, 0xa3, 0xc2, 0x1c, 0xb3, 0x65, 0x23, 0xcd, 0x7f, 0xd6, 0xe1, 0xc4, 0xad, 0x7e, 0xb4, + 0x96, 0x7f, 0xd6, 0xd3, 0x84, 0x8b, 0x58, 0xf7, 0x7e, 0xe9, 0x90, 0x4c, 0xb8, 0xfa, 0xdb, 0x13, + 0xfb, 0x32, 0xe4, 0x7e, 0xc1, 0x81, 0x49, 0x2f, 0x13, 0xda, 0xc2, 0xec, 0x4e, 0x56, 0x44, 0xa8, + 0xd9, 0x28, 0x8d, 0x97, 0x61, 0x42, 0x65, 0x36, 0x8a, 0x06, 0x77, 0x11, 0x47, 0x3f, 0x74, 0xe0, + 0x6c, 0xe2, 0xc5, 0x5b, 0x3c, 0xb3, 0x73, 0x9c, 0xde, 0x0d, 0x16, 0x9d, 0x3b, 0xc9, 0x76, 0xe3, + 0xcb, 0xd6, 0x77, 0xe3, 0x7a, 0x6f, 0x9a, 0x7c, 0x5f, 0x3e, 0x2c, 0xf6, 0xe5, 0xd9, 0x3d, 0x6a, + 0xe2, 0xbd, 0xba, 0x4e, 0xd5, 0x13, 0xa1, 0xbd, 0xb1, 0x91, 0x9c, 0x4a, 0xd5, 0x13, 0x9c, 0x82, + 0xb1, 0x5e, 0x67, 0xea, 0xd3, 0x0e, 0x7f, 0x34, 0xac, 0xa7, 0x94, 0xb8, 0x61, 0x4a, 0x89, 0x57, + 0x6c, 0x3e, 0x5b, 0xa4, 0x8b, 0xab, 0xbf, 0xe6, 0xc0, 0xc9, 0xbc, 0x43, 0x2c, 0xa7, 0x4b, 0x1f, + 0x35, 0xbb, 0x64, 0x51, 0x11, 0xd4, 0x3b, 0x64, 0xe5, 0xd5, 0x94, 0xa9, 0xab, 0xf0, 0xd0, 0x9d, + 0x3e, 0xfc, 0x9d, 0xf0, 0x8d, 0xe8, 0x92, 0xf4, 0x9f, 0x96, 0x34, 0x47, 0x69, 0x42, 0xda, 0xd6, + 0xc3, 0xcc, 0x03, 0x18, 0xf2, 0x83, 0xa6, 0x1f, 0x10, 0x71, 0xa5, 0xd4, 0xa6, 0x9a, 0x2d, 0x5e, + 0x3d, 0xa2, 0xd8, 0xb1, 0xa0, 0x72, 0x8f, 0xfd, 0xa6, 0xd9, 0x77, 0xe4, 0x06, 0x8f, 0xfe, 0x1d, + 0xb9, 0x1b, 0x50, 0xba, 0xe1, 0x27, 0x0d, 0x16, 0xef, 0x21, 0xdc, 0x91, 0x16, 0xae, 0x62, 0x52, + 0x74, 0xe9, 0xd8, 0xaf, 0x4b, 0x02, 0x38, 0xa5, 0x85, 0xce, 0x73, 0xc2, 0x2c, 0xb8, 0x3c, 0x1b, + 0xf5, 0x7b, 0x5d, 0x16, 0xe0, 0xb4, 0x0e, 0x9d, 0xac, 0x31, 0xfa, 0x4b, 0xe6, 0x6c, 0x12, 0xc9, + 0x92, 0x6d, 0xa4, 0x8c, 0x14, 0x18, 0xf9, 0x85, 0xe7, 0xeb, 0x1a, 0x0d, 0x6c, 0x50, 0x54, 0xf9, + 0xaa, 0x47, 0x7a, 0xe6, 0xab, 0x7e, 0x8d, 0xc9, 0x78, 0x89, 0x1f, 0x74, 0xc8, 0x6a, 0x20, 0x42, + 0xd2, 0xaf, 0xd8, 0xb9, 0x9e, 0xcd, 0x71, 0x72, 0x2b, 0x41, 0xfa, 0x1b, 0x6b, 0xf4, 0x34, 0xaf, + 0xd0, 0xe8, 0x9e, 0x5e, 0xa1, 0xd4, 0x2a, 0x34, 0x66, 0xdd, 0x2a, 0x94, 0x90, 0xb6, 0x15, 0xab, + 0xd0, 0xdb, 0xca, 0x82, 0xf0, 0x17, 0x0e, 0x20, 0x25, 0xaa, 0x29, 0x86, 0x7a, 0x04, 0x71, 0x9f, + 0x9f, 0x70, 0x00, 0x02, 0xf5, 0xda, 0xa8, 0xdd, 0x53, 0x90, 0xe3, 0x4c, 0x3b, 0x90, 0xc2, 0xb0, + 0x46, 0xd3, 0xfd, 0x1f, 0x4e, 0x1a, 0x5e, 0x9d, 0x8e, 0xfd, 0x08, 0xe2, 0xdc, 0x76, 0xcc, 0x38, + 0xb7, 0x75, 0x8b, 0xde, 0x05, 0x35, 0x8c, 0x1e, 0x11, 0x6f, 0x3f, 0x2d, 0xc0, 0x31, 0xbd, 0x72, + 0x85, 0x1c, 0xc5, 0xc7, 0xbe, 0x61, 0x04, 0xf9, 0x5e, 0xb3, 0x3b, 0xde, 0x8a, 0x70, 0x52, 0xe5, + 0x05, 0x94, 0x7f, 0x3c, 0x13, 0x50, 0x7e, 0xdd, 0x3e, 0xe9, 0xbd, 0xa3, 0xca, 0xff, 0x9b, 0x03, + 0x27, 0x32, 0x2d, 0x8e, 0x60, 0x81, 0x6d, 0x9b, 0x0b, 0xec, 0x59, 0xeb, 0xa3, 0xee, 0xb1, 0xba, + 0xbe, 0x55, 0xe8, 0x1a, 0x2d, 0xd3, 0xfb, 0x3e, 0xe5, 0x40, 0x91, 0x0a, 0xd8, 0x32, 0xe4, 0xec, + 0xa3, 0x87, 0xb2, 0x02, 0x98, 0x2a, 0x20, 0xb8, 0xb3, 0xea, 0x1f, 0x83, 0x61, 0x4e, 0x7d, 0xea, + 0x93, 0x0e, 0x40, 0x5a, 0xe9, 0x5e, 0x89, 0xc0, 0xee, 0x77, 0x0a, 0x70, 0x2a, 0x77, 0x19, 0xa1, + 0xcf, 0x28, 0x23, 0x9e, 0x63, 0x3b, 0xa0, 0xd2, 0x20, 0xa4, 0xdb, 0xf2, 0xc6, 0x0d, 0x5b, 0x9e, + 0x30, 0xe1, 0xdd, 0x2b, 0x05, 0x46, 0xb0, 0x69, 0x6d, 0xb2, 0x7e, 0xe2, 0xa4, 0x31, 0xba, 0x2a, + 0xf5, 0xd2, 0x5f, 0xc2, 0x7b, 0x46, 0xee, 0x4f, 0xb5, 0x4b, 0x18, 0x72, 0xa0, 0x47, 0xc0, 0x2b, + 0x6e, 0x98, 0xbc, 0x02, 0xdb, 0x77, 0x75, 0xf7, 0x60, 0x16, 0x2f, 0x43, 0x9e, 0xef, 0xbb, 0xbf, + 0xbc, 0x8d, 0xc6, 0x8d, 0xdd, 0x42, 0xdf, 0x37, 0x76, 0xc7, 0x61, 0xf4, 0x05, 0x5f, 0x25, 0xfc, + 0x9c, 0x9b, 0xf9, 0xee, 0x8f, 0xcf, 0xdd, 0xf7, 0xbd, 0x1f, 0x9f, 0xbb, 0xef, 0x87, 0x3f, 0x3e, + 0x77, 0xdf, 0x27, 0x6e, 0x9d, 0x73, 0xbe, 0x7b, 0xeb, 0x9c, 0xf3, 0xbd, 0x5b, 0xe7, 0x9c, 0x1f, + 0xde, 0x3a, 0xe7, 0xfc, 0xc7, 0x5b, 0xe7, 0x9c, 0xbf, 0xf7, 0x9f, 0xce, 0xdd, 0xf7, 0xc2, 0x88, + 0x1c, 0xd8, 0xff, 0x0f, 0x00, 0x00, 0xff, 0xff, 0xc7, 0x3c, 0x95, 0x10, 0x57, 0xd8, 0x00, 0x00, } func (m *Amount) Marshal() (dAtA []byte, err error) { @@ -10553,14 +10552,14 @@ func (m *RetryConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) { copy(dAtA[i:], m.Parameters[iNdEx]) i = encodeVarintGenerated(dAtA, i, uint64(len(m.Parameters[iNdEx]))) i-- - dAtA[i] = 0x22 + dAtA[i] = 0x1a } } i -= len(m.NodeFieldSelector) copy(dAtA[i:], m.NodeFieldSelector) i = encodeVarintGenerated(dAtA, i, uint64(len(m.NodeFieldSelector))) i-- - dAtA[i] = 0x1a + dAtA[i] = 0x12 i-- if m.RestartSuccessful { dAtA[i] = 1 @@ -10568,14 +10567,6 @@ func (m *RetryConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0 } i-- - dAtA[i] = 0x10 - i-- - if m.Retried { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- dAtA[i] = 0x8 return len(dAtA) - i, nil } @@ -16215,7 +16206,6 @@ func (m *RetryConfig) Size() (n int) { var l int _ = l n += 2 - n += 2 l = len(m.NodeFieldSelector) n += 1 + l + sovGenerated(uint64(l)) if len(m.Parameters) > 0 { @@ -18946,7 +18936,6 @@ func (this *RetryConfig) String() string { return "nil" } s := strings.Join([]string{`&RetryConfig{`, - `Retried:` + fmt.Sprintf("%v", this.Retried) + `,`, `RestartSuccessful:` + fmt.Sprintf("%v", this.RestartSuccessful) + `,`, `NodeFieldSelector:` + fmt.Sprintf("%v", this.NodeFieldSelector) + `,`, `Parameters:` + fmt.Sprintf("%v", this.Parameters) + `,`, @@ -36555,26 +36544,6 @@ func (m *RetryConfig) Unmarshal(dAtA []byte) error { } switch fieldNum { case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Retried", 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.Retried = bool(v != 0) - case 2: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field RestartSuccessful", wireType) } @@ -36594,7 +36563,7 @@ func (m *RetryConfig) Unmarshal(dAtA []byte) error { } } m.RestartSuccessful = bool(v != 0) - case 3: + case 2: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field NodeFieldSelector", wireType) } @@ -36626,7 +36595,7 @@ func (m *RetryConfig) Unmarshal(dAtA []byte) error { } m.NodeFieldSelector = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 4: + case 3: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Parameters", wireType) } diff --git a/pkg/apis/workflow/v1alpha1/generated.proto b/pkg/apis/workflow/v1alpha1/generated.proto index 7410cbb0ca41..c5804b8e4838 100644 --- a/pkg/apis/workflow/v1alpha1/generated.proto +++ b/pkg/apis/workflow/v1alpha1/generated.proto @@ -1335,17 +1335,14 @@ message RetryAffinity { // RetryConfig defines how to retry a workflow message RetryConfig { - // Retried tracks whether or not this workflow was retried by RetryConfig - optional bool retried = 1; - // RestartSuccessful defines whether or not to retry succeeded node - optional bool restartSuccessful = 2; + optional bool restartSuccessful = 1; // NodeFieldSelector selects nodes to reset - optional string nodeFieldSelector = 3; + optional string nodeFieldSelector = 2; // Parameters are a list of parameters passed - repeated string parameters = 4; + repeated string parameters = 3; } // RetryNodeAntiAffinity is a placeholder for future expansion, only empty nodeAntiAffinity is allowed. diff --git a/pkg/apis/workflow/v1alpha1/openapi_generated.go b/pkg/apis/workflow/v1alpha1/openapi_generated.go index 82f5566a77e8..c2fe76f4c40f 100644 --- a/pkg/apis/workflow/v1alpha1/openapi_generated.go +++ b/pkg/apis/workflow/v1alpha1/openapi_generated.go @@ -5042,13 +5042,6 @@ func schema_pkg_apis_workflow_v1alpha1_RetryConfig(ref common.ReferenceCallback) Description: "RetryConfig defines how to retry a workflow", Type: []string{"object"}, Properties: map[string]spec.Schema{ - "retried": { - SchemaProps: spec.SchemaProps{ - Description: "Retried tracks whether or not this workflow was retried by RetryConfig", - Type: []string{"boolean"}, - Format: "", - }, - }, "restartSuccessful": { SchemaProps: spec.SchemaProps{ Description: "RestartSuccessful defines whether or not to retry succeeded node", diff --git a/pkg/apis/workflow/v1alpha1/workflow_types.go b/pkg/apis/workflow/v1alpha1/workflow_types.go index 876eed79c0bc..1e9860c5cbde 100644 --- a/pkg/apis/workflow/v1alpha1/workflow_types.go +++ b/pkg/apis/workflow/v1alpha1/workflow_types.go @@ -3909,12 +3909,10 @@ type NodeFlag struct { // RetryConfig defines how to retry a workflow type RetryConfig struct { - // Retried tracks whether or not this workflow was retried by RetryConfig - Retried bool `json:"retried,omitempty" protobuf:"varint,1,opt,name=retried"` // RestartSuccessful defines whether or not to retry succeeded node - RestartSuccessful bool `json:"restartSuccessful,omitempty" protobuf:"varint,2,opt,name=restartSuccessful"` + RestartSuccessful bool `json:"restartSuccessful,omitempty" protobuf:"varint,1,opt,name=restartSuccessful"` // NodeFieldSelector selects nodes to reset - NodeFieldSelector string `json:"nodeFieldSelector,omitempty" protobuf:"bytes,3,opt,name=nodeFieldSelector"` + NodeFieldSelector string `json:"nodeFieldSelector,omitempty" protobuf:"bytes,2,opt,name=nodeFieldSelector"` // Parameters are a list of parameters passed - Parameters []string `json:"parameters,omitempty" protobuf:"bytes,4,opt,name=parameters"` + Parameters []string `json:"parameters,omitempty" protobuf:"bytes,3,opt,name=parameters"` } diff --git a/server/workflowarchive/archived_workflow_server.go b/server/workflowarchive/archived_workflow_server.go index 4645ff5e0fff..2b24bc049f4e 100644 --- a/server/workflowarchive/archived_workflow_server.go +++ b/server/workflowarchive/archived_workflow_server.go @@ -284,15 +284,14 @@ func (w *archivedWorkflowServer) RetryArchivedWorkflow(ctx context.Context, req _, err = wfClient.ArgoprojV1alpha1().Workflows(req.Namespace).Get(ctx, wf.Name, metav1.GetOptions{}) if apierr.IsNotFound(err) { - - wf, _, err := util.FormulateRetryWorkflow(ctx, wf, req.RestartSuccessful, req.NodeFieldSelector, req.Parameters) + wf.ObjectMeta.ResourceVersion = "" + wf.ObjectMeta.UID = "" + result, err := wfClient.ArgoprojV1alpha1().Workflows(req.Namespace).Create(ctx, wf, metav1.CreateOptions{}) if err != nil { return nil, sutils.ToStatusError(err, codes.Internal) } - wf.ObjectMeta.ResourceVersion = "" - wf.ObjectMeta.UID = "" - result, err := wfClient.ArgoprojV1alpha1().Workflows(req.Namespace).Create(ctx, wf, metav1.CreateOptions{}) + wf, err = util.MarkWorkflowForRetry(ctx, wf, req.RestartSuccessful, req.NodeFieldSelector, req.Parameters) if err != nil { return nil, sutils.ToStatusError(err, codes.Internal) } diff --git a/workflow/controller/operator.go b/workflow/controller/operator.go index a4a1c46b376d..a0f6817875c5 100644 --- a/workflow/controller/operator.go +++ b/workflow/controller/operator.go @@ -3888,6 +3888,7 @@ func (woc *wfOperationCtx) retryWorkflow(ctx context.Context) error { if err != nil { return fmt.Errorf("fail to FormulateRetryWorkflow") } + woc.getActivePodsCounter() for _, podName := range podsToDelete { woc.controller.queuePodForCleanup(wf.Namespace, podName, deletePod) } diff --git a/workflow/util/util.go b/workflow/util/util.go index 1c8a2f27611d..3e1a1659a7c6 100644 --- a/workflow/util/util.go +++ b/workflow/util/util.go @@ -840,7 +840,6 @@ func MarkWorkflowForRetry(ctx context.Context, wf *wfv1.Workflow, restartSuccess } wf.Spec.Retry = &wfv1.RetryConfig{ - Retried: false, RestartSuccessful: restartSuccessful, NodeFieldSelector: nodeFieldSelector, Parameters: parameters, From ad4d350fa83b589f3a7e0002d1216159d4024c17 Mon Sep 17 00:00:00 2001 From: shuangkun Date: Mon, 8 Apr 2024 21:06:57 +0800 Subject: [PATCH 13/26] fix: test Signed-off-by: shuangkun --- docs/fields.md | 1 - workflow/controller/operator.go | 1 - 2 files changed, 2 deletions(-) diff --git a/docs/fields.md b/docs/fields.md index 41913d01a8ad..798b8469d6f7 100644 --- a/docs/fields.md +++ b/docs/fields.md @@ -1582,7 +1582,6 @@ RetryConfig defines how to retry a workflow |`nodeFieldSelector`|`string`|NodeFieldSelector selects nodes to reset| |`parameters`|`Array< string >`|Parameters are a list of parameters passed| |`restartSuccessful`|`boolean`|RestartSuccessful defines whether or not to retry succeeded node| -|`retried`|`boolean`|Retried tracks whether or not this workflow was retried by RetryConfig| ## RetryStrategy diff --git a/workflow/controller/operator.go b/workflow/controller/operator.go index a0f6817875c5..a4a1c46b376d 100644 --- a/workflow/controller/operator.go +++ b/workflow/controller/operator.go @@ -3888,7 +3888,6 @@ func (woc *wfOperationCtx) retryWorkflow(ctx context.Context) error { if err != nil { return fmt.Errorf("fail to FormulateRetryWorkflow") } - woc.getActivePodsCounter() for _, podName := range podsToDelete { woc.controller.queuePodForCleanup(wf.Namespace, podName, deletePod) } From 9da1c5b4d2d372e916a43edd70f744f4e7315e15 Mon Sep 17 00:00:00 2001 From: shuangkun Date: Tue, 9 Apr 2024 16:25:50 +0800 Subject: [PATCH 14/26] fix: change spec to label Signed-off-by: shuangkun --- api/jsonschema/schema.json | 29 - api/openapi-spec/swagger.json | 29 - docs/fields.md | 13 - .../argoproj.io_clusterworkflowtemplates.yaml | 11 - .../crds/full/argoproj.io_cronworkflows.yaml | 11 - .../base/crds/full/argoproj.io_workflows.yaml | 24 - .../full/argoproj.io_workflowtemplates.yaml | 11 - pkg/apis/api-rules/violation_exceptions.list | 1 - pkg/apis/workflow/v1alpha1/generated.pb.go | 1817 +++++++---------- pkg/apis/workflow/v1alpha1/generated.proto | 18 - .../workflow/v1alpha1/openapi_generated.go | 58 +- pkg/apis/workflow/v1alpha1/workflow_types.go | 16 - .../v1alpha1/zz_generated.deepcopy.go | 31 - .../IoArgoprojWorkflowV1alpha1RetryConfig.md | 2 - ...argoproj_workflow_v1alpha1_retry_config.py | 2 - .../IoArgoprojWorkflowV1alpha1RetryConfig.md | 1 - .../archived_workflow_server.go | 5 + workflow/common/common.go | 5 + workflow/controller/operator.go | 20 +- workflow/util/util.go | 21 +- 20 files changed, 780 insertions(+), 1345 deletions(-) diff --git a/api/jsonschema/schema.json b/api/jsonschema/schema.json index 6629b8025b33..f6cd69c3cbbe 100644 --- a/api/jsonschema/schema.json +++ b/api/jsonschema/schema.json @@ -6493,27 +6493,6 @@ }, "type": "object" }, - "io.argoproj.workflow.v1alpha1.RetryConfig": { - "description": "RetryConfig defines how to retry a workflow", - "properties": { - "nodeFieldSelector": { - "description": "NodeFieldSelector selects nodes to reset", - "type": "string" - }, - "parameters": { - "description": "Parameters are a list of parameters passed", - "items": { - "type": "string" - }, - "type": "array" - }, - "restartSuccessful": { - "description": "RestartSuccessful defines whether or not to retry succeeded node", - "type": "boolean" - } - }, - "type": "object" - }, "io.argoproj.workflow.v1alpha1.RetryNodeAntiAffinity": { "description": "RetryNodeAntiAffinity is a placeholder for future expansion, only empty nodeAntiAffinity is allowed. In order to prevent running steps on the same host, it uses \"kubernetes.io/hostname\".", "type": "object" @@ -7933,10 +7912,6 @@ "description": "Priority is used if controller is configured to process limited number of workflows in parallel. Workflows with higher priority are processed first.", "type": "integer" }, - "retry": { - "$ref": "#/definitions/io.argoproj.workflow.v1alpha1.RetryConfig", - "description": "Retry will retry the workflow according to its RetryConfig" - }, "retryStrategy": { "$ref": "#/definitions/io.argoproj.workflow.v1alpha1.RetryStrategy", "description": "RetryStrategy for all templates in the io.argoproj.workflow.v1alpha1." @@ -8094,10 +8069,6 @@ "description": "ResourcesDuration is the total for the workflow", "type": "object" }, - "retryStatus": { - "description": "RetryStatus tracks RetryStatus for this workflow", - "type": "boolean" - }, "startedAt": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time", "description": "Time at which this workflow started" diff --git a/api/openapi-spec/swagger.json b/api/openapi-spec/swagger.json index 4a10c88b8d5b..483615edffd0 100644 --- a/api/openapi-spec/swagger.json +++ b/api/openapi-spec/swagger.json @@ -10433,27 +10433,6 @@ } } }, - "io.argoproj.workflow.v1alpha1.RetryConfig": { - "description": "RetryConfig defines how to retry a workflow", - "type": "object", - "properties": { - "nodeFieldSelector": { - "description": "NodeFieldSelector selects nodes to reset", - "type": "string" - }, - "parameters": { - "description": "Parameters are a list of parameters passed", - "type": "array", - "items": { - "type": "string" - } - }, - "restartSuccessful": { - "description": "RestartSuccessful defines whether or not to retry succeeded node", - "type": "boolean" - } - } - }, "io.argoproj.workflow.v1alpha1.RetryNodeAntiAffinity": { "description": "RetryNodeAntiAffinity is a placeholder for future expansion, only empty nodeAntiAffinity is allowed. In order to prevent running steps on the same host, it uses \"kubernetes.io/hostname\".", "type": "object" @@ -11856,10 +11835,6 @@ "description": "Priority is used if controller is configured to process limited number of workflows in parallel. Workflows with higher priority are processed first.", "type": "integer" }, - "retry": { - "description": "Retry will retry the workflow according to its RetryConfig", - "$ref": "#/definitions/io.argoproj.workflow.v1alpha1.RetryConfig" - }, "retryStrategy": { "description": "RetryStrategy for all templates in the io.argoproj.workflow.v1alpha1.", "$ref": "#/definitions/io.argoproj.workflow.v1alpha1.RetryStrategy" @@ -12017,10 +11992,6 @@ "format": "int64" } }, - "retryStatus": { - "description": "RetryStatus tracks RetryStatus for this workflow", - "type": "boolean" - }, "startedAt": { "description": "Time at which this workflow started", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" diff --git a/docs/fields.md b/docs/fields.md index 798b8469d6f7..880604d9c1e4 100644 --- a/docs/fields.md +++ b/docs/fields.md @@ -819,7 +819,6 @@ WorkflowSpec is the specification of a Workflow. |`podPriorityClassName`|`string`|PriorityClassName to apply to workflow pods.| |`podSpecPatch`|`string`|PodSpecPatch holds strategic merge patch to apply against the pod spec. Allows parameterization of container fields which are not strings (e.g. resource limits).| |`priority`|`integer`|Priority is used if controller is configured to process limited number of workflows in parallel. Workflows with higher priority are processed first.| -|`retry`|[`RetryConfig`](#retryconfig)|Retry will retry the workflow according to its RetryConfig| |`retryStrategy`|[`RetryStrategy`](#retrystrategy)|RetryStrategy for all templates in the io.argoproj.workflow.v1alpha1.| |`schedulerName`|`string`|Set scheduler name for all pods. Will be overridden if container/script template's scheduler name is set. Default scheduler will be used if neither specified.| |`securityContext`|[`PodSecurityContext`](#podsecuritycontext)|SecurityContext holds pod-level security attributes and common container settings. Optional: Defaults to empty. See type description for default values of each field.| @@ -858,7 +857,6 @@ WorkflowStatus contains overall status information about a workflow |`phase`|`string`|Phase a simple, high-level summary of where the workflow is in its lifecycle. Will be "" (Unknown), "Pending", or "Running" before the workflow is completed, and "Succeeded", "Failed" or "Error" once the workflow has completed.| |`progress`|`string`|Progress to completion| |`resourcesDuration`|`Map< integer , int64 >`|ResourcesDuration is the total for the workflow| -|`retryStatus`|`boolean`|RetryStatus tracks RetryStatus for this workflow| |`startedAt`|[`Time`](#time)|Time at which this workflow started| |`storedTemplates`|[`Template`](#template)|StoredTemplates is a mapping between a template ref and the node's status.| |`storedWorkflowTemplateSpec`|[`WorkflowSpec`](#workflowspec)|StoredWorkflowSpec stores the WorkflowTemplate spec for future execution.| @@ -1572,17 +1570,6 @@ Pod metdata |`annotations`|`Map< string , string >`|_No description available_| |`labels`|`Map< string , string >`|_No description available_| -## RetryConfig - -RetryConfig defines how to retry a workflow - -### Fields -| Field Name | Field Type | Description | -|:----------:|:----------:|---------------| -|`nodeFieldSelector`|`string`|NodeFieldSelector selects nodes to reset| -|`parameters`|`Array< string >`|Parameters are a list of parameters passed| -|`restartSuccessful`|`boolean`|RestartSuccessful defines whether or not to retry succeeded node| - ## RetryStrategy RetryStrategy provides controls on how to retry a workflow step diff --git a/manifests/base/crds/full/argoproj.io_clusterworkflowtemplates.yaml b/manifests/base/crds/full/argoproj.io_clusterworkflowtemplates.yaml index ed07fea38a86..78a364fb9e80 100644 --- a/manifests/base/crds/full/argoproj.io_clusterworkflowtemplates.yaml +++ b/manifests/base/crds/full/argoproj.io_clusterworkflowtemplates.yaml @@ -1829,17 +1829,6 @@ spec: priority: format: int32 type: integer - retry: - properties: - nodeFieldSelector: - type: string - parameters: - items: - type: string - type: array - restartSuccessful: - type: boolean - type: object retryStrategy: properties: affinity: diff --git a/manifests/base/crds/full/argoproj.io_cronworkflows.yaml b/manifests/base/crds/full/argoproj.io_cronworkflows.yaml index 10f9ac488d93..3bd8d118f6a0 100644 --- a/manifests/base/crds/full/argoproj.io_cronworkflows.yaml +++ b/manifests/base/crds/full/argoproj.io_cronworkflows.yaml @@ -1861,17 +1861,6 @@ spec: priority: format: int32 type: integer - retry: - properties: - nodeFieldSelector: - type: string - parameters: - items: - type: string - type: array - restartSuccessful: - type: boolean - type: object retryStrategy: properties: affinity: diff --git a/manifests/base/crds/full/argoproj.io_workflows.yaml b/manifests/base/crds/full/argoproj.io_workflows.yaml index 453989a1b952..d0c5aa874f0d 100644 --- a/manifests/base/crds/full/argoproj.io_workflows.yaml +++ b/manifests/base/crds/full/argoproj.io_workflows.yaml @@ -1843,17 +1843,6 @@ spec: priority: format: int32 type: integer - retry: - properties: - nodeFieldSelector: - type: string - parameters: - items: - type: string - type: array - restartSuccessful: - type: boolean - type: object retryStrategy: properties: affinity: @@ -22761,8 +22750,6 @@ spec: format: int64 type: integer type: object - retryStatus: - type: boolean startedAt: format: date-time type: string @@ -33057,17 +33044,6 @@ spec: priority: format: int32 type: integer - retry: - properties: - nodeFieldSelector: - type: string - parameters: - items: - type: string - type: array - restartSuccessful: - type: boolean - type: object retryStrategy: properties: affinity: diff --git a/manifests/base/crds/full/argoproj.io_workflowtemplates.yaml b/manifests/base/crds/full/argoproj.io_workflowtemplates.yaml index 66bae9a35074..e971cf10d51c 100644 --- a/manifests/base/crds/full/argoproj.io_workflowtemplates.yaml +++ b/manifests/base/crds/full/argoproj.io_workflowtemplates.yaml @@ -1828,17 +1828,6 @@ spec: priority: format: int32 type: integer - retry: - properties: - nodeFieldSelector: - type: string - parameters: - items: - type: string - type: array - restartSuccessful: - type: boolean - type: object retryStrategy: properties: affinity: diff --git a/pkg/apis/api-rules/violation_exceptions.list b/pkg/apis/api-rules/violation_exceptions.list index 141f87ad67a8..ccf495af1bfb 100644 --- a/pkg/apis/api-rules/violation_exceptions.list +++ b/pkg/apis/api-rules/violation_exceptions.list @@ -25,7 +25,6 @@ API rule violation: list_type_missing,github.com/argoproj/argo-workflows/v3/pkg/ API rule violation: list_type_missing,github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1,Parameter,Enum API rule violation: list_type_missing,github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1,Prometheus,Labels API rule violation: list_type_missing,github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1,ResourceTemplate,Flags -API rule violation: list_type_missing,github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1,RetryConfig,Parameters API rule violation: list_type_missing,github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1,SemaphoreStatus,Holding API rule violation: list_type_missing,github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1,SemaphoreStatus,Waiting API rule violation: list_type_missing,github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1,SubmitOpts,Parameters diff --git a/pkg/apis/workflow/v1alpha1/generated.pb.go b/pkg/apis/workflow/v1alpha1/generated.pb.go index 761b6e2d0358..e068bc96bf88 100644 --- a/pkg/apis/workflow/v1alpha1/generated.pb.go +++ b/pkg/apis/workflow/v1alpha1/generated.pb.go @@ -2892,38 +2892,10 @@ func (m *RetryAffinity) XXX_DiscardUnknown() { var xxx_messageInfo_RetryAffinity proto.InternalMessageInfo -func (m *RetryConfig) Reset() { *m = RetryConfig{} } -func (*RetryConfig) ProtoMessage() {} -func (*RetryConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{102} -} -func (m *RetryConfig) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *RetryConfig) 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 *RetryConfig) XXX_Merge(src proto.Message) { - xxx_messageInfo_RetryConfig.Merge(m, src) -} -func (m *RetryConfig) XXX_Size() int { - return m.Size() -} -func (m *RetryConfig) XXX_DiscardUnknown() { - xxx_messageInfo_RetryConfig.DiscardUnknown(m) -} - -var xxx_messageInfo_RetryConfig proto.InternalMessageInfo - func (m *RetryNodeAntiAffinity) Reset() { *m = RetryNodeAntiAffinity{} } func (*RetryNodeAntiAffinity) ProtoMessage() {} func (*RetryNodeAntiAffinity) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{103} + return fileDescriptor_724696e352c3df5f, []int{102} } func (m *RetryNodeAntiAffinity) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2951,7 +2923,7 @@ var xxx_messageInfo_RetryNodeAntiAffinity proto.InternalMessageInfo func (m *RetryStrategy) Reset() { *m = RetryStrategy{} } func (*RetryStrategy) ProtoMessage() {} func (*RetryStrategy) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{104} + return fileDescriptor_724696e352c3df5f, []int{103} } func (m *RetryStrategy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2979,7 +2951,7 @@ var xxx_messageInfo_RetryStrategy proto.InternalMessageInfo func (m *S3Artifact) Reset() { *m = S3Artifact{} } func (*S3Artifact) ProtoMessage() {} func (*S3Artifact) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{105} + return fileDescriptor_724696e352c3df5f, []int{104} } func (m *S3Artifact) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3007,7 +2979,7 @@ var xxx_messageInfo_S3Artifact proto.InternalMessageInfo func (m *S3ArtifactRepository) Reset() { *m = S3ArtifactRepository{} } func (*S3ArtifactRepository) ProtoMessage() {} func (*S3ArtifactRepository) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{106} + return fileDescriptor_724696e352c3df5f, []int{105} } func (m *S3ArtifactRepository) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3035,7 +3007,7 @@ var xxx_messageInfo_S3ArtifactRepository proto.InternalMessageInfo func (m *S3Bucket) Reset() { *m = S3Bucket{} } func (*S3Bucket) ProtoMessage() {} func (*S3Bucket) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{107} + return fileDescriptor_724696e352c3df5f, []int{106} } func (m *S3Bucket) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3063,7 +3035,7 @@ var xxx_messageInfo_S3Bucket proto.InternalMessageInfo func (m *S3EncryptionOptions) Reset() { *m = S3EncryptionOptions{} } func (*S3EncryptionOptions) ProtoMessage() {} func (*S3EncryptionOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{108} + return fileDescriptor_724696e352c3df5f, []int{107} } func (m *S3EncryptionOptions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3091,7 +3063,7 @@ var xxx_messageInfo_S3EncryptionOptions proto.InternalMessageInfo func (m *ScriptTemplate) Reset() { *m = ScriptTemplate{} } func (*ScriptTemplate) ProtoMessage() {} func (*ScriptTemplate) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{109} + return fileDescriptor_724696e352c3df5f, []int{108} } func (m *ScriptTemplate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3119,7 +3091,7 @@ var xxx_messageInfo_ScriptTemplate proto.InternalMessageInfo func (m *SemaphoreHolding) Reset() { *m = SemaphoreHolding{} } func (*SemaphoreHolding) ProtoMessage() {} func (*SemaphoreHolding) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{110} + return fileDescriptor_724696e352c3df5f, []int{109} } func (m *SemaphoreHolding) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3147,7 +3119,7 @@ var xxx_messageInfo_SemaphoreHolding proto.InternalMessageInfo func (m *SemaphoreRef) Reset() { *m = SemaphoreRef{} } func (*SemaphoreRef) ProtoMessage() {} func (*SemaphoreRef) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{111} + return fileDescriptor_724696e352c3df5f, []int{110} } func (m *SemaphoreRef) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3175,7 +3147,7 @@ var xxx_messageInfo_SemaphoreRef proto.InternalMessageInfo func (m *SemaphoreStatus) Reset() { *m = SemaphoreStatus{} } func (*SemaphoreStatus) ProtoMessage() {} func (*SemaphoreStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{112} + return fileDescriptor_724696e352c3df5f, []int{111} } func (m *SemaphoreStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3203,7 +3175,7 @@ var xxx_messageInfo_SemaphoreStatus proto.InternalMessageInfo func (m *Sequence) Reset() { *m = Sequence{} } func (*Sequence) ProtoMessage() {} func (*Sequence) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{113} + return fileDescriptor_724696e352c3df5f, []int{112} } func (m *Sequence) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3231,7 +3203,7 @@ var xxx_messageInfo_Sequence proto.InternalMessageInfo func (m *StopStrategy) Reset() { *m = StopStrategy{} } func (*StopStrategy) ProtoMessage() {} func (*StopStrategy) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{114} + return fileDescriptor_724696e352c3df5f, []int{113} } func (m *StopStrategy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3259,7 +3231,7 @@ var xxx_messageInfo_StopStrategy proto.InternalMessageInfo func (m *Submit) Reset() { *m = Submit{} } func (*Submit) ProtoMessage() {} func (*Submit) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{115} + return fileDescriptor_724696e352c3df5f, []int{114} } func (m *Submit) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3287,7 +3259,7 @@ var xxx_messageInfo_Submit proto.InternalMessageInfo func (m *SubmitOpts) Reset() { *m = SubmitOpts{} } func (*SubmitOpts) ProtoMessage() {} func (*SubmitOpts) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{116} + return fileDescriptor_724696e352c3df5f, []int{115} } func (m *SubmitOpts) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3315,7 +3287,7 @@ var xxx_messageInfo_SubmitOpts proto.InternalMessageInfo func (m *SuppliedValueFrom) Reset() { *m = SuppliedValueFrom{} } func (*SuppliedValueFrom) ProtoMessage() {} func (*SuppliedValueFrom) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{117} + return fileDescriptor_724696e352c3df5f, []int{116} } func (m *SuppliedValueFrom) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3343,7 +3315,7 @@ var xxx_messageInfo_SuppliedValueFrom proto.InternalMessageInfo func (m *SuspendTemplate) Reset() { *m = SuspendTemplate{} } func (*SuspendTemplate) ProtoMessage() {} func (*SuspendTemplate) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{118} + return fileDescriptor_724696e352c3df5f, []int{117} } func (m *SuspendTemplate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3371,7 +3343,7 @@ var xxx_messageInfo_SuspendTemplate proto.InternalMessageInfo func (m *Synchronization) Reset() { *m = Synchronization{} } func (*Synchronization) ProtoMessage() {} func (*Synchronization) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{119} + return fileDescriptor_724696e352c3df5f, []int{118} } func (m *Synchronization) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3399,7 +3371,7 @@ var xxx_messageInfo_Synchronization proto.InternalMessageInfo func (m *SynchronizationStatus) Reset() { *m = SynchronizationStatus{} } func (*SynchronizationStatus) ProtoMessage() {} func (*SynchronizationStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{120} + return fileDescriptor_724696e352c3df5f, []int{119} } func (m *SynchronizationStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3427,7 +3399,7 @@ var xxx_messageInfo_SynchronizationStatus proto.InternalMessageInfo func (m *TTLStrategy) Reset() { *m = TTLStrategy{} } func (*TTLStrategy) ProtoMessage() {} func (*TTLStrategy) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{121} + return fileDescriptor_724696e352c3df5f, []int{120} } func (m *TTLStrategy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3455,7 +3427,7 @@ var xxx_messageInfo_TTLStrategy proto.InternalMessageInfo func (m *TarStrategy) Reset() { *m = TarStrategy{} } func (*TarStrategy) ProtoMessage() {} func (*TarStrategy) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{122} + return fileDescriptor_724696e352c3df5f, []int{121} } func (m *TarStrategy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3483,7 +3455,7 @@ var xxx_messageInfo_TarStrategy proto.InternalMessageInfo func (m *Template) Reset() { *m = Template{} } func (*Template) ProtoMessage() {} func (*Template) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{123} + return fileDescriptor_724696e352c3df5f, []int{122} } func (m *Template) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3511,7 +3483,7 @@ var xxx_messageInfo_Template proto.InternalMessageInfo func (m *TemplateRef) Reset() { *m = TemplateRef{} } func (*TemplateRef) ProtoMessage() {} func (*TemplateRef) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{124} + return fileDescriptor_724696e352c3df5f, []int{123} } func (m *TemplateRef) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3539,7 +3511,7 @@ var xxx_messageInfo_TemplateRef proto.InternalMessageInfo func (m *TransformationStep) Reset() { *m = TransformationStep{} } func (*TransformationStep) ProtoMessage() {} func (*TransformationStep) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{125} + return fileDescriptor_724696e352c3df5f, []int{124} } func (m *TransformationStep) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3567,7 +3539,7 @@ var xxx_messageInfo_TransformationStep proto.InternalMessageInfo func (m *UserContainer) Reset() { *m = UserContainer{} } func (*UserContainer) ProtoMessage() {} func (*UserContainer) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{126} + return fileDescriptor_724696e352c3df5f, []int{125} } func (m *UserContainer) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3595,7 +3567,7 @@ var xxx_messageInfo_UserContainer proto.InternalMessageInfo func (m *ValueFrom) Reset() { *m = ValueFrom{} } func (*ValueFrom) ProtoMessage() {} func (*ValueFrom) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{127} + return fileDescriptor_724696e352c3df5f, []int{126} } func (m *ValueFrom) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3623,7 +3595,7 @@ var xxx_messageInfo_ValueFrom proto.InternalMessageInfo func (m *Version) Reset() { *m = Version{} } func (*Version) ProtoMessage() {} func (*Version) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{128} + return fileDescriptor_724696e352c3df5f, []int{127} } func (m *Version) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3651,7 +3623,7 @@ var xxx_messageInfo_Version proto.InternalMessageInfo func (m *VolumeClaimGC) Reset() { *m = VolumeClaimGC{} } func (*VolumeClaimGC) ProtoMessage() {} func (*VolumeClaimGC) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{129} + return fileDescriptor_724696e352c3df5f, []int{128} } func (m *VolumeClaimGC) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3679,7 +3651,7 @@ var xxx_messageInfo_VolumeClaimGC proto.InternalMessageInfo func (m *Workflow) Reset() { *m = Workflow{} } func (*Workflow) ProtoMessage() {} func (*Workflow) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{130} + return fileDescriptor_724696e352c3df5f, []int{129} } func (m *Workflow) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3707,7 +3679,7 @@ var xxx_messageInfo_Workflow proto.InternalMessageInfo func (m *WorkflowArtifactGCTask) Reset() { *m = WorkflowArtifactGCTask{} } func (*WorkflowArtifactGCTask) ProtoMessage() {} func (*WorkflowArtifactGCTask) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{131} + return fileDescriptor_724696e352c3df5f, []int{130} } func (m *WorkflowArtifactGCTask) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3735,7 +3707,7 @@ var xxx_messageInfo_WorkflowArtifactGCTask proto.InternalMessageInfo func (m *WorkflowArtifactGCTaskList) Reset() { *m = WorkflowArtifactGCTaskList{} } func (*WorkflowArtifactGCTaskList) ProtoMessage() {} func (*WorkflowArtifactGCTaskList) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{132} + return fileDescriptor_724696e352c3df5f, []int{131} } func (m *WorkflowArtifactGCTaskList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3763,7 +3735,7 @@ var xxx_messageInfo_WorkflowArtifactGCTaskList proto.InternalMessageInfo func (m *WorkflowEventBinding) Reset() { *m = WorkflowEventBinding{} } func (*WorkflowEventBinding) ProtoMessage() {} func (*WorkflowEventBinding) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{133} + return fileDescriptor_724696e352c3df5f, []int{132} } func (m *WorkflowEventBinding) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3791,7 +3763,7 @@ var xxx_messageInfo_WorkflowEventBinding proto.InternalMessageInfo func (m *WorkflowEventBindingList) Reset() { *m = WorkflowEventBindingList{} } func (*WorkflowEventBindingList) ProtoMessage() {} func (*WorkflowEventBindingList) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{134} + return fileDescriptor_724696e352c3df5f, []int{133} } func (m *WorkflowEventBindingList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3819,7 +3791,7 @@ var xxx_messageInfo_WorkflowEventBindingList proto.InternalMessageInfo func (m *WorkflowEventBindingSpec) Reset() { *m = WorkflowEventBindingSpec{} } func (*WorkflowEventBindingSpec) ProtoMessage() {} func (*WorkflowEventBindingSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{135} + return fileDescriptor_724696e352c3df5f, []int{134} } func (m *WorkflowEventBindingSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3847,7 +3819,7 @@ var xxx_messageInfo_WorkflowEventBindingSpec proto.InternalMessageInfo func (m *WorkflowLevelArtifactGC) Reset() { *m = WorkflowLevelArtifactGC{} } func (*WorkflowLevelArtifactGC) ProtoMessage() {} func (*WorkflowLevelArtifactGC) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{136} + return fileDescriptor_724696e352c3df5f, []int{135} } func (m *WorkflowLevelArtifactGC) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3875,7 +3847,7 @@ var xxx_messageInfo_WorkflowLevelArtifactGC proto.InternalMessageInfo func (m *WorkflowList) Reset() { *m = WorkflowList{} } func (*WorkflowList) ProtoMessage() {} func (*WorkflowList) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{137} + return fileDescriptor_724696e352c3df5f, []int{136} } func (m *WorkflowList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3903,7 +3875,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{138} + return fileDescriptor_724696e352c3df5f, []int{137} } func (m *WorkflowMetadata) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3931,7 +3903,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{139} + return fileDescriptor_724696e352c3df5f, []int{138} } func (m *WorkflowSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3959,7 +3931,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{140} + return fileDescriptor_724696e352c3df5f, []int{139} } func (m *WorkflowStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3987,7 +3959,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{141} + return fileDescriptor_724696e352c3df5f, []int{140} } func (m *WorkflowStep) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4015,7 +3987,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{142} + return fileDescriptor_724696e352c3df5f, []int{141} } func (m *WorkflowTaskResult) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4043,7 +4015,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{143} + return fileDescriptor_724696e352c3df5f, []int{142} } func (m *WorkflowTaskResultList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4071,7 +4043,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{144} + return fileDescriptor_724696e352c3df5f, []int{143} } func (m *WorkflowTaskSet) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4099,7 +4071,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{145} + return fileDescriptor_724696e352c3df5f, []int{144} } func (m *WorkflowTaskSetList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4127,7 +4099,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{146} + return fileDescriptor_724696e352c3df5f, []int{145} } func (m *WorkflowTaskSetSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4155,7 +4127,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{147} + return fileDescriptor_724696e352c3df5f, []int{146} } func (m *WorkflowTaskSetStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4183,7 +4155,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{148} + return fileDescriptor_724696e352c3df5f, []int{147} } func (m *WorkflowTemplate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4211,7 +4183,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{149} + return fileDescriptor_724696e352c3df5f, []int{148} } func (m *WorkflowTemplateList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4239,7 +4211,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{150} + return fileDescriptor_724696e352c3df5f, []int{149} } func (m *WorkflowTemplateRef) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4267,7 +4239,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{151} + return fileDescriptor_724696e352c3df5f, []int{150} } func (m *ZipStrategy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4407,7 +4379,6 @@ func init() { proto.RegisterType((*RawArtifact)(nil), "github.com.argoproj.argo_workflows.v3.pkg.apis.workflow.v1alpha1.RawArtifact") proto.RegisterType((*ResourceTemplate)(nil), "github.com.argoproj.argo_workflows.v3.pkg.apis.workflow.v1alpha1.ResourceTemplate") proto.RegisterType((*RetryAffinity)(nil), "github.com.argoproj.argo_workflows.v3.pkg.apis.workflow.v1alpha1.RetryAffinity") - proto.RegisterType((*RetryConfig)(nil), "github.com.argoproj.argo_workflows.v3.pkg.apis.workflow.v1alpha1.RetryConfig") proto.RegisterType((*RetryNodeAntiAffinity)(nil), "github.com.argoproj.argo_workflows.v3.pkg.apis.workflow.v1alpha1.RetryNodeAntiAffinity") proto.RegisterType((*RetryStrategy)(nil), "github.com.argoproj.argo_workflows.v3.pkg.apis.workflow.v1alpha1.RetryStrategy") proto.RegisterType((*S3Artifact)(nil), "github.com.argoproj.argo_workflows.v3.pkg.apis.workflow.v1alpha1.S3Artifact") @@ -4477,704 +4448,699 @@ func init() { } var fileDescriptor_724696e352c3df5f = []byte{ - // 11152 bytes of a gzipped FileDescriptorProto + // 11059 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, 0x05, 0xb0, 0x1f, 0x1e, 0x87, 0xeb, 0x7b, 0x2d, 0x71, 0xe4, 0x81, 0x1e, - 0x8a, 0x0c, 0x69, 0x51, 0x38, 0xf3, 0x28, 0x25, 0x8c, 0x94, 0x48, 0xc2, 0xe3, 0x80, 0x3b, 0xe2, - 0x70, 0x00, 0x7b, 0x71, 0x3c, 0x93, 0xa2, 0x25, 0x0d, 0x76, 0x1b, 0xbb, 0x43, 0xec, 0xce, 0x2c, - 0x67, 0x66, 0x71, 0x07, 0x3e, 0x24, 0x85, 0xd6, 0x33, 0x96, 0xad, 0x58, 0x96, 0x64, 0x49, 0x49, - 0xaa, 0x14, 0x45, 0x4a, 0x58, 0xb2, 0x2b, 0x2e, 0xfb, 0x57, 0xca, 0xae, 0xfc, 0x49, 0xa5, 0x1c, - 0xa5, 0x9c, 0xaa, 0xc8, 0x15, 0xa5, 0xa4, 0x1f, 0x32, 0x18, 0x5d, 0x12, 0xfd, 0x48, 0x4a, 0x55, - 0x89, 0x2a, 0x76, 0xec, 0xcb, 0xa3, 0x52, 0xfd, 0x9c, 0xee, 0xd9, 0x59, 0xdc, 0x02, 0xd7, 0xc0, - 0xb1, 0xec, 0x5f, 0xc0, 0x7e, 0xdd, 0xfd, 0x7d, 0xdd, 0x3d, 0xdd, 0x5f, 0x7f, 0xaf, 0xfe, 0x1a, - 0xd6, 0xea, 0x7e, 0xd2, 0xe8, 0x6c, 0xcc, 0x54, 0xc3, 0xd6, 0x79, 0x2f, 0xaa, 0x87, 0xed, 0x28, - 0x7c, 0x89, 0xfd, 0xf3, 0xae, 0x1b, 0x61, 0xb4, 0xb5, 0xd9, 0x0c, 0x6f, 0xc4, 0xe7, 0xb7, 0x9f, - 0x3a, 0xdf, 0xde, 0xaa, 0x9f, 0xf7, 0xda, 0x7e, 0x7c, 0x5e, 0x42, 0xcf, 0x6f, 0x3f, 0xe9, 0x35, - 0xdb, 0x0d, 0xef, 0xc9, 0xf3, 0x75, 0x12, 0x90, 0xc8, 0x4b, 0x48, 0x6d, 0xa6, 0x1d, 0x85, 0x49, - 0x88, 0x3e, 0x98, 0x62, 0x9c, 0x91, 0x18, 0xd9, 0x3f, 0x1f, 0x51, 0x18, 0x67, 0xb6, 0x9f, 0x9a, - 0x69, 0x6f, 0xd5, 0x67, 0x28, 0xc6, 0x19, 0x09, 0x9d, 0x91, 0x18, 0xa7, 0xde, 0xa5, 0xf5, 0xa9, - 0x1e, 0xd6, 0xc3, 0xf3, 0x0c, 0xf1, 0x46, 0x67, 0x93, 0xfd, 0x62, 0x3f, 0xd8, 0x7f, 0x9c, 0xe0, - 0x94, 0xbb, 0xf5, 0x74, 0x3c, 0xe3, 0x87, 0xb4, 0x7f, 0xe7, 0xab, 0x61, 0x44, 0xce, 0x6f, 0x77, - 0x75, 0x6a, 0xea, 0x1d, 0x5a, 0x9d, 0x76, 0xd8, 0xf4, 0xab, 0x3b, 0x79, 0xb5, 0xde, 0x9d, 0xd6, - 0x6a, 0x79, 0xd5, 0x86, 0x1f, 0x90, 0x68, 0x27, 0x1d, 0x7a, 0x8b, 0x24, 0x5e, 0x5e, 0xab, 0xf3, - 0xbd, 0x5a, 0x45, 0x9d, 0x20, 0xf1, 0x5b, 0xa4, 0xab, 0xc1, 0x5f, 0xbf, 0x53, 0x83, 0xb8, 0xda, - 0x20, 0x2d, 0xaf, 0xab, 0xdd, 0x53, 0xbd, 0xda, 0x75, 0x12, 0xbf, 0x79, 0xde, 0x0f, 0x92, 0x38, - 0x89, 0xb2, 0x8d, 0xdc, 0x8b, 0x30, 0x34, 0xdb, 0x0a, 0x3b, 0x41, 0x82, 0xde, 0x07, 0xc5, 0x6d, - 0xaf, 0xd9, 0x21, 0x65, 0xe7, 0x21, 0xe7, 0xb1, 0xd2, 0xdc, 0x23, 0xdf, 0xdd, 0x9d, 0xbe, 0xef, - 0xd6, 0xee, 0x74, 0xf1, 0x39, 0x0a, 0xbc, 0xbd, 0x3b, 0x7d, 0x92, 0x04, 0xd5, 0xb0, 0xe6, 0x07, - 0xf5, 0xf3, 0x2f, 0xc5, 0x61, 0x30, 0x73, 0xb5, 0xd3, 0xda, 0x20, 0x11, 0xe6, 0x6d, 0xdc, 0x7f, - 0x5f, 0x80, 0x63, 0xb3, 0x51, 0xb5, 0xe1, 0x6f, 0x93, 0x4a, 0x42, 0xf1, 0xd7, 0x77, 0x50, 0x03, - 0x06, 0x12, 0x2f, 0x62, 0xe8, 0x46, 0x2f, 0xac, 0xcc, 0xdc, 0xed, 0x77, 0x9f, 0x59, 0xf7, 0x22, - 0x89, 0x7b, 0x6e, 0xf8, 0xd6, 0xee, 0xf4, 0xc0, 0xba, 0x17, 0x61, 0x4a, 0x02, 0x35, 0x61, 0x30, - 0x08, 0x03, 0x52, 0x2e, 0x30, 0x52, 0x57, 0xef, 0x9e, 0xd4, 0xd5, 0x30, 0x50, 0xe3, 0x98, 0x1b, - 0xb9, 0xb5, 0x3b, 0x3d, 0x48, 0x21, 0x98, 0x51, 0xa1, 0xe3, 0x7a, 0xc5, 0x6f, 0x97, 0x07, 0x6c, - 0x8d, 0xeb, 0x05, 0xbf, 0x6d, 0x8e, 0xeb, 0x05, 0xbf, 0x8d, 0x29, 0x09, 0xf7, 0x73, 0x05, 0x28, - 0xcd, 0x46, 0xf5, 0x4e, 0x8b, 0x04, 0x49, 0x8c, 0x3e, 0x0e, 0xd0, 0xf6, 0x22, 0xaf, 0x45, 0x12, - 0x12, 0xc5, 0x65, 0xe7, 0xa1, 0x81, 0xc7, 0x46, 0x2f, 0x2c, 0xdf, 0x3d, 0xf9, 0x35, 0x89, 0x73, - 0x0e, 0x89, 0x4f, 0x0e, 0x0a, 0x14, 0x63, 0x8d, 0x24, 0x7a, 0x15, 0x4a, 0x5e, 0x94, 0xf8, 0x9b, - 0x5e, 0x35, 0x89, 0xcb, 0x05, 0x46, 0xff, 0x99, 0xbb, 0xa7, 0x3f, 0x2b, 0x50, 0xce, 0x1d, 0x17, - 0xe4, 0x4b, 0x12, 0x12, 0xe3, 0x94, 0x9e, 0xfb, 0xfb, 0x83, 0x30, 0x3a, 0x1b, 0x25, 0x4b, 0xf3, - 0x95, 0xc4, 0x4b, 0x3a, 0x31, 0xfa, 0x23, 0x07, 0x4e, 0xc4, 0x7c, 0xda, 0x7c, 0x12, 0xaf, 0x45, - 0x61, 0x95, 0xc4, 0x31, 0xa9, 0x89, 0x79, 0xd9, 0xb4, 0xd2, 0x2f, 0x49, 0x6c, 0xa6, 0xd2, 0x4d, - 0xe8, 0x62, 0x90, 0x44, 0x3b, 0x73, 0x4f, 0x8a, 0x3e, 0x9f, 0xc8, 0xa9, 0xf1, 0xc6, 0x5b, 0xd3, - 0x48, 0x0e, 0x85, 0x62, 0xe2, 0x9f, 0x18, 0xe7, 0xf5, 0x1a, 0x7d, 0xcd, 0x81, 0xb1, 0x76, 0x58, - 0x8b, 0x31, 0xa9, 0x86, 0x9d, 0x36, 0xa9, 0x89, 0xe9, 0xfd, 0x88, 0xdd, 0x61, 0xac, 0x69, 0x14, - 0x78, 0xff, 0x4f, 0x8a, 0xfe, 0x8f, 0xe9, 0x45, 0xd8, 0xe8, 0x0a, 0x7a, 0x1a, 0xc6, 0x82, 0x30, - 0xa9, 0xb4, 0x49, 0xd5, 0xdf, 0xf4, 0x49, 0x8d, 0x2d, 0xfc, 0x91, 0xb4, 0xe5, 0x55, 0xad, 0x0c, - 0x1b, 0x35, 0xa7, 0x16, 0xa1, 0xdc, 0x6b, 0xe6, 0xd0, 0x24, 0x0c, 0x6c, 0x91, 0x1d, 0xce, 0x6c, - 0x30, 0xfd, 0x17, 0x9d, 0x94, 0x0c, 0x88, 0x6e, 0xe3, 0x11, 0xc1, 0x59, 0xde, 0x5b, 0x78, 0xda, - 0x99, 0xfa, 0x00, 0x1c, 0xef, 0xea, 0xfa, 0x7e, 0x10, 0xb8, 0xdf, 0x1b, 0x82, 0x11, 0xf9, 0x29, - 0xd0, 0x43, 0x30, 0x18, 0x78, 0x2d, 0xc9, 0xe7, 0xc6, 0xc4, 0x38, 0x06, 0xaf, 0x7a, 0x2d, 0xba, - 0xc3, 0xbd, 0x16, 0xa1, 0x35, 0xda, 0x5e, 0xd2, 0x60, 0x78, 0xb4, 0x1a, 0x6b, 0x5e, 0xd2, 0xc0, - 0xac, 0x04, 0x3d, 0x00, 0x83, 0xad, 0xb0, 0x46, 0xd8, 0x5c, 0x14, 0x39, 0x87, 0x58, 0x09, 0x6b, - 0x04, 0x33, 0x28, 0x6d, 0xbf, 0x19, 0x85, 0xad, 0xf2, 0xa0, 0xd9, 0x7e, 0x31, 0x0a, 0x5b, 0x98, - 0x95, 0xa0, 0xaf, 0x3a, 0x30, 0x29, 0xd7, 0xf6, 0x95, 0xb0, 0xea, 0x25, 0x7e, 0x18, 0x94, 0x8b, - 0x8c, 0xa3, 0x60, 0x7b, 0x5b, 0x4a, 0x62, 0x9e, 0x2b, 0x8b, 0x2e, 0x4c, 0x66, 0x4b, 0x70, 0x57, - 0x2f, 0xd0, 0x05, 0x80, 0x7a, 0x33, 0xdc, 0xf0, 0x9a, 0x74, 0x42, 0xca, 0x43, 0x6c, 0x08, 0x8a, - 0x33, 0x2c, 0xa9, 0x12, 0xac, 0xd5, 0x42, 0x37, 0x61, 0xd8, 0xe3, 0xdc, 0xbf, 0x3c, 0xcc, 0x06, - 0xf1, 0xac, 0x8d, 0x41, 0x18, 0xc7, 0xc9, 0xdc, 0xe8, 0xad, 0xdd, 0xe9, 0x61, 0x01, 0xc4, 0x92, - 0x1c, 0x7a, 0x02, 0x46, 0xc2, 0x36, 0xed, 0xb7, 0xd7, 0x2c, 0x8f, 0xb0, 0x85, 0x39, 0x29, 0xfa, - 0x3a, 0xb2, 0x2a, 0xe0, 0x58, 0xd5, 0x40, 0x8f, 0xc3, 0x70, 0xdc, 0xd9, 0xa0, 0xdf, 0xb1, 0x5c, - 0x62, 0x03, 0x3b, 0x26, 0x2a, 0x0f, 0x57, 0x38, 0x18, 0xcb, 0x72, 0xf4, 0x1e, 0x18, 0x8d, 0x48, - 0xb5, 0x13, 0xc5, 0x84, 0x7e, 0xd8, 0x32, 0x30, 0xdc, 0x27, 0x44, 0xf5, 0x51, 0x9c, 0x16, 0x61, - 0xbd, 0x1e, 0x7a, 0x3f, 0x4c, 0xd0, 0x0f, 0x7c, 0xf1, 0x66, 0x3b, 0x22, 0x71, 0x4c, 0xbf, 0xea, - 0x28, 0x23, 0x74, 0x5a, 0xb4, 0x9c, 0x58, 0x34, 0x4a, 0x71, 0xa6, 0x36, 0x7a, 0x0d, 0xc0, 0x53, - 0x3c, 0xa3, 0x3c, 0xc6, 0x26, 0xf3, 0x8a, 0xbd, 0x15, 0xb1, 0x34, 0x3f, 0x37, 0x41, 0xbf, 0x63, - 0xfa, 0x1b, 0x6b, 0xf4, 0xe8, 0xfc, 0xd4, 0x48, 0x93, 0x24, 0xa4, 0x56, 0x1e, 0x67, 0x03, 0x56, - 0xf3, 0xb3, 0xc0, 0xc1, 0x58, 0x96, 0xbb, 0x7f, 0xbf, 0x00, 0x1a, 0x16, 0x34, 0x07, 0x23, 0x82, - 0xaf, 0x89, 0x2d, 0x39, 0xf7, 0xa8, 0xfc, 0x0e, 0xf2, 0x0b, 0xde, 0xde, 0xcd, 0xe5, 0x87, 0xaa, - 0x1d, 0x7a, 0x1d, 0x46, 0xdb, 0x61, 0x6d, 0x85, 0x24, 0x5e, 0xcd, 0x4b, 0x3c, 0x71, 0x9a, 0x5b, - 0x38, 0x61, 0x24, 0xc6, 0xb9, 0x63, 0xf4, 0xd3, 0xad, 0xa5, 0x24, 0xb0, 0x4e, 0x0f, 0x3d, 0x03, - 0x28, 0x26, 0xd1, 0xb6, 0x5f, 0x25, 0xb3, 0xd5, 0x2a, 0x15, 0x89, 0xd8, 0x06, 0x18, 0x60, 0x83, - 0x99, 0x12, 0x83, 0x41, 0x95, 0xae, 0x1a, 0x38, 0xa7, 0x95, 0xfb, 0xfd, 0x02, 0x4c, 0x68, 0x63, - 0x6d, 0x93, 0x2a, 0x7a, 0xd3, 0x81, 0x63, 0xea, 0x38, 0x9b, 0xdb, 0xb9, 0x4a, 0x57, 0x15, 0x3f, - 0xac, 0x88, 0xcd, 0xef, 0x4b, 0x69, 0xa9, 0x9f, 0x82, 0x0e, 0xe7, 0xf5, 0x67, 0xc4, 0x18, 0x8e, - 0x65, 0x4a, 0x71, 0xb6, 0x5b, 0x53, 0x5f, 0x71, 0xe0, 0x64, 0x1e, 0x8a, 0x1c, 0x9e, 0xdb, 0xd0, - 0x79, 0xae, 0x55, 0xe6, 0x45, 0xa9, 0xd2, 0xc1, 0xe8, 0x7c, 0xfc, 0xff, 0x15, 0x60, 0x52, 0x5f, - 0x42, 0x4c, 0x12, 0xf8, 0x97, 0x0e, 0x9c, 0x92, 0x23, 0xc0, 0x24, 0xee, 0x34, 0x33, 0xd3, 0xdb, - 0xb2, 0x3a, 0xbd, 0xfc, 0x24, 0x9d, 0xcd, 0xa3, 0xc7, 0xa7, 0xf9, 0x41, 0x31, 0xcd, 0xa7, 0x72, - 0xeb, 0xe0, 0xfc, 0xae, 0x4e, 0x7d, 0xcb, 0x81, 0xa9, 0xde, 0x48, 0x73, 0x26, 0xbe, 0x6d, 0x4e, - 0xfc, 0x0b, 0xf6, 0x06, 0xc9, 0xc9, 0xb3, 0xe9, 0x67, 0x83, 0xd5, 0x3f, 0xc0, 0x6f, 0x8f, 0x40, - 0xd7, 0x19, 0x82, 0x9e, 0x84, 0x51, 0xc1, 0x8e, 0xaf, 0x84, 0xf5, 0x98, 0x75, 0x72, 0x84, 0xef, - 0xb5, 0xd9, 0x14, 0x8c, 0xf5, 0x3a, 0xa8, 0x06, 0x85, 0xf8, 0x29, 0xd1, 0x75, 0x0b, 0xec, 0xad, - 0xf2, 0x94, 0x92, 0x22, 0x87, 0x6e, 0xed, 0x4e, 0x17, 0x2a, 0x4f, 0xe1, 0x42, 0xfc, 0x14, 0x95, - 0xd4, 0xeb, 0x7e, 0x62, 0x4f, 0x52, 0x5f, 0xf2, 0x13, 0x45, 0x87, 0x49, 0xea, 0x4b, 0x7e, 0x82, - 0x29, 0x09, 0xaa, 0x81, 0x34, 0x92, 0xa4, 0xcd, 0x4e, 0x7c, 0x2b, 0x1a, 0xc8, 0xa5, 0xf5, 0xf5, - 0x35, 0x45, 0x8b, 0xc9, 0x17, 0x14, 0x82, 0x19, 0x15, 0xf4, 0x59, 0x87, 0xce, 0x38, 0x2f, 0x0c, - 0xa3, 0x1d, 0x21, 0x38, 0x5c, 0xb3, 0xb7, 0x04, 0xc2, 0x68, 0x47, 0x11, 0x17, 0x1f, 0x52, 0x15, - 0x60, 0x9d, 0x34, 0x1b, 0x78, 0x6d, 0x33, 0x66, 0x72, 0x82, 0x9d, 0x81, 0x2f, 0x2c, 0x56, 0x32, - 0x03, 0x5f, 0x58, 0xac, 0x60, 0x46, 0x85, 0x7e, 0xd0, 0xc8, 0xbb, 0x21, 0x64, 0x0c, 0x0b, 0x1f, - 0x14, 0x7b, 0x37, 0xcc, 0x0f, 0x8a, 0xbd, 0x1b, 0x98, 0x92, 0xa0, 0x94, 0xc2, 0x38, 0x66, 0x22, - 0x85, 0x15, 0x4a, 0xab, 0x95, 0x8a, 0x49, 0x69, 0xb5, 0x52, 0xc1, 0x94, 0x04, 0x5b, 0xa4, 0xd5, - 0x98, 0xc9, 0x23, 0x76, 0x16, 0xe9, 0x7c, 0x86, 0xd2, 0xd2, 0x7c, 0x05, 0x53, 0x12, 0x94, 0x65, - 0x78, 0xaf, 0x74, 0x22, 0x2e, 0xcc, 0x8c, 0x5e, 0x58, 0xb5, 0xb0, 0x5e, 0x28, 0x3a, 0x45, 0xad, - 0x74, 0x6b, 0x77, 0xba, 0xc8, 0x40, 0x98, 0x13, 0x72, 0xff, 0x70, 0x20, 0x65, 0x17, 0x92, 0x9f, - 0xa3, 0x5f, 0x67, 0x07, 0xa1, 0xe0, 0x05, 0x42, 0xf4, 0x75, 0x0e, 0x4d, 0xf4, 0x3d, 0xc1, 0x4f, - 0x3c, 0x83, 0x1c, 0xce, 0xd2, 0x47, 0x5f, 0x74, 0xba, 0x75, 0x5b, 0xcf, 0xfe, 0x59, 0x96, 0x1e, - 0xcc, 0xfc, 0xac, 0xd8, 0x53, 0xe5, 0x9d, 0xfa, 0xac, 0x93, 0x0a, 0x11, 0x71, 0xaf, 0x73, 0xe0, - 0xa3, 0xe6, 0x39, 0x60, 0x51, 0x21, 0xd7, 0xf9, 0xfe, 0xe7, 0x1c, 0x18, 0x97, 0x70, 0x2a, 0x1e, - 0xc7, 0xe8, 0x26, 0x8c, 0xc8, 0x9e, 0x8a, 0xaf, 0x67, 0xd3, 0x16, 0xa0, 0x84, 0x78, 0xd5, 0x19, - 0x45, 0xcd, 0x7d, 0x73, 0x08, 0x50, 0x7a, 0x56, 0xb5, 0xc3, 0xd8, 0x67, 0x9c, 0xe8, 0x00, 0xa7, - 0x50, 0xa0, 0x9d, 0x42, 0xcf, 0xd9, 0x3c, 0x85, 0xd2, 0x6e, 0x19, 0xe7, 0xd1, 0x17, 0x33, 0x7c, - 0x9b, 0x1f, 0x4c, 0x1f, 0x39, 0x14, 0xbe, 0xad, 0x75, 0x61, 0x6f, 0x0e, 0xbe, 0x2d, 0x38, 0x38, - 0x3f, 0xba, 0x7e, 0xd1, 0x2e, 0x07, 0xd7, 0x7a, 0x91, 0xe5, 0xe5, 0x11, 0xe7, 0xb0, 0xfc, 0xec, - 0xba, 0x6e, 0x95, 0xc3, 0x6a, 0x54, 0x4d, 0x5e, 0x1b, 0x71, 0x5e, 0x3b, 0x64, 0x8b, 0xa6, 0xc6, - 0x6b, 0xb3, 0x34, 0x15, 0xd7, 0x7d, 0x45, 0x72, 0x5d, 0x7e, 0x6a, 0x3d, 0x6f, 0x99, 0xeb, 0x6a, - 0x74, 0xbb, 0xf9, 0xef, 0xcb, 0x70, 0xaa, 0xbb, 0x1e, 0x26, 0x9b, 0xe8, 0x3c, 0x94, 0xaa, 0x61, - 0xb0, 0xe9, 0xd7, 0x57, 0xbc, 0xb6, 0xd0, 0xd7, 0x14, 0x2f, 0x9a, 0x97, 0x05, 0x38, 0xad, 0x83, - 0x1e, 0xe4, 0x8c, 0x87, 0x5b, 0x44, 0x46, 0x45, 0xd5, 0x81, 0x65, 0xb2, 0xc3, 0xb8, 0xd0, 0x7b, - 0x47, 0xbe, 0xfa, 0x8d, 0xe9, 0xfb, 0x3e, 0xf1, 0xa3, 0x87, 0xee, 0x73, 0xff, 0x78, 0x00, 0xce, - 0xe6, 0xd2, 0x14, 0xd2, 0xfa, 0x6f, 0x1b, 0xd2, 0xba, 0x56, 0x2e, 0xb8, 0xc8, 0x75, 0x9b, 0x82, - 0xac, 0x86, 0x3e, 0x4f, 0x2e, 0xd7, 0x8a, 0x71, 0x7e, 0xa7, 0xe8, 0x44, 0x05, 0x5e, 0x8b, 0xc4, - 0x6d, 0xaf, 0x4a, 0xc4, 0xe8, 0xd5, 0x44, 0x5d, 0x95, 0x05, 0x38, 0xad, 0xc3, 0x55, 0xe8, 0x4d, - 0xaf, 0xd3, 0x4c, 0x84, 0xa1, 0x4c, 0x53, 0xa1, 0x19, 0x18, 0xcb, 0x72, 0xf4, 0x0f, 0x1c, 0x40, - 0xdd, 0x54, 0xc5, 0x46, 0x5c, 0x3f, 0x8c, 0x79, 0x98, 0x3b, 0x7d, 0x4b, 0x53, 0xc2, 0xb5, 0x91, - 0xe6, 0xf4, 0x43, 0xfb, 0xa6, 0x1f, 0x4b, 0xcf, 0x21, 0xae, 0x1c, 0xf4, 0x61, 0x43, 0x63, 0xa6, - 0x96, 0x6a, 0x95, 0xc4, 0x31, 0x37, 0xc7, 0xe9, 0xa6, 0x16, 0x06, 0xc6, 0xb2, 0x1c, 0x4d, 0x43, - 0x91, 0x44, 0x51, 0x18, 0x09, 0x5d, 0x9b, 0x2d, 0xe3, 0x8b, 0x14, 0x80, 0x39, 0xdc, 0xfd, 0x49, - 0x01, 0xca, 0xbd, 0xb4, 0x13, 0xf4, 0x7b, 0x9a, 0x5e, 0x2d, 0x34, 0x27, 0xa1, 0xf8, 0x85, 0x87, - 0xa7, 0x13, 0x65, 0x15, 0xc0, 0x1e, 0x1a, 0xb6, 0x28, 0xc5, 0xd9, 0x0e, 0x4e, 0x7d, 0x49, 0xd3, - 0xb0, 0x75, 0x14, 0x39, 0x07, 0xfc, 0xa6, 0x79, 0xc0, 0xaf, 0xd9, 0x1e, 0x94, 0x7e, 0xcc, 0xff, - 0x49, 0x11, 0x4e, 0xc8, 0xd2, 0x0a, 0xa1, 0x47, 0xe5, 0xb3, 0x1d, 0x12, 0xed, 0xa0, 0x1f, 0x38, - 0x70, 0xd2, 0xcb, 0x9a, 0x6e, 0x7c, 0x72, 0x08, 0x13, 0xad, 0x51, 0x9d, 0x99, 0xcd, 0xa1, 0xc8, - 0x27, 0xfa, 0x82, 0x98, 0xe8, 0x93, 0x79, 0x55, 0x7a, 0xd8, 0xdd, 0x73, 0x07, 0x80, 0x9e, 0x86, - 0x31, 0x09, 0x67, 0xe6, 0x1e, 0xbe, 0xc5, 0x95, 0x71, 0x7b, 0x56, 0x2b, 0xc3, 0x46, 0x4d, 0xda, - 0x32, 0x21, 0xad, 0x76, 0xd3, 0x4b, 0x88, 0x66, 0x28, 0x52, 0x2d, 0xd7, 0xb5, 0x32, 0x6c, 0xd4, - 0x44, 0x8f, 0xc2, 0x50, 0x10, 0xd6, 0xc8, 0xe5, 0x9a, 0x30, 0x10, 0x4f, 0x88, 0x36, 0x43, 0x57, - 0x19, 0x14, 0x8b, 0x52, 0xf4, 0x48, 0x6a, 0x8d, 0x2b, 0xb2, 0x2d, 0x34, 0x9a, 0x67, 0x89, 0x43, - 0xff, 0xc8, 0x81, 0x12, 0x6d, 0xb1, 0xbe, 0xd3, 0x26, 0xf4, 0x6c, 0xa3, 0x5f, 0xa4, 0x76, 0x38, - 0x5f, 0xe4, 0xaa, 0x24, 0x63, 0x9a, 0x3a, 0x4a, 0x0a, 0xfe, 0xc6, 0x5b, 0xd3, 0x23, 0xf2, 0x07, - 0x4e, 0x7b, 0x35, 0xb5, 0x04, 0xf7, 0xf7, 0xfc, 0x9a, 0xfb, 0x72, 0x05, 0xfc, 0x2d, 0x98, 0x30, - 0x3b, 0xb1, 0x2f, 0x3f, 0xc0, 0x3f, 0xd7, 0xb6, 0x1d, 0x1f, 0x97, 0xe0, 0x67, 0xf7, 0x4c, 0x9a, - 0x55, 0x8b, 0x61, 0x41, 0x2c, 0x3d, 0x73, 0x31, 0x2c, 0x88, 0xc5, 0xb0, 0xe0, 0xfe, 0x91, 0x93, - 0x6e, 0x4d, 0x4d, 0xcc, 0xa3, 0x07, 0x73, 0x27, 0x6a, 0x0a, 0x46, 0xac, 0x0e, 0xe6, 0x6b, 0xf8, - 0x0a, 0xa6, 0x70, 0xf4, 0x25, 0x8d, 0x3b, 0xd2, 0x66, 0x1d, 0xe1, 0xd6, 0xb0, 0x64, 0xa2, 0x37, - 0x10, 0x77, 0xf3, 0x3f, 0x51, 0x80, 0xb3, 0x5d, 0x70, 0xbf, 0x58, 0x80, 0x07, 0xf7, 0x14, 0x5a, - 0x73, 0x3b, 0xee, 0xdc, 0xf3, 0x8e, 0xd3, 0x63, 0x2d, 0x22, 0xed, 0xf0, 0x1a, 0xbe, 0x22, 0xbe, - 0x97, 0x3a, 0xd6, 0x30, 0x07, 0x63, 0x59, 0x4e, 0x45, 0x87, 0x2d, 0xb2, 0xb3, 0x18, 0x46, 0x2d, - 0x2f, 0x11, 0xdc, 0x41, 0x89, 0x0e, 0xcb, 0xb2, 0x00, 0xa7, 0x75, 0xdc, 0x1f, 0x38, 0x90, 0xed, - 0x00, 0xf2, 0x60, 0xa2, 0x13, 0x93, 0x88, 0x1e, 0xa9, 0x15, 0x52, 0x8d, 0x88, 0x5c, 0x9e, 0x8f, - 0xcc, 0x70, 0x6f, 0x3f, 0x1d, 0xe1, 0x4c, 0x35, 0x8c, 0xc8, 0xcc, 0xf6, 0x93, 0x33, 0xbc, 0xc6, - 0x32, 0xd9, 0xa9, 0x90, 0x26, 0xa1, 0x38, 0xe6, 0xd0, 0xad, 0xdd, 0xe9, 0x89, 0x6b, 0x06, 0x02, - 0x9c, 0x41, 0x48, 0x49, 0xb4, 0xbd, 0x38, 0xbe, 0x11, 0x46, 0x35, 0x41, 0xa2, 0xb0, 0x6f, 0x12, - 0x6b, 0x06, 0x02, 0x9c, 0x41, 0xe8, 0x7e, 0x9f, 0xaa, 0x8f, 0xba, 0xd4, 0x8a, 0xbe, 0x41, 0x65, - 0x1f, 0x0a, 0x99, 0x6b, 0x86, 0x1b, 0xf3, 0x61, 0x90, 0x78, 0x7e, 0x40, 0x64, 0xb0, 0xc0, 0xba, - 0x25, 0x19, 0xd9, 0xc0, 0x9d, 0xda, 0xf0, 0xbb, 0xcb, 0x70, 0x4e, 0x5f, 0xa8, 0x8c, 0xb3, 0xd1, - 0x0c, 0x37, 0xb2, 0x5e, 0x40, 0x5a, 0x09, 0xb3, 0x12, 0xf7, 0x67, 0x0e, 0x9c, 0xe9, 0x21, 0x8c, - 0xa3, 0xaf, 0x38, 0x30, 0xbe, 0xf1, 0xb6, 0x18, 0x9b, 0xd9, 0x0d, 0xf4, 0x7e, 0x98, 0xa0, 0x00, - 0x7a, 0x12, 0x89, 0xb5, 0x59, 0x30, 0x3d, 0x54, 0x73, 0x46, 0x29, 0xce, 0xd4, 0x76, 0x7f, 0xa3, - 0x00, 0x39, 0x54, 0xd0, 0x13, 0x30, 0x42, 0x82, 0x5a, 0x3b, 0xf4, 0x83, 0x44, 0x30, 0x23, 0xc5, - 0xf5, 0x2e, 0x0a, 0x38, 0x56, 0x35, 0x84, 0xfe, 0x21, 0x26, 0xa6, 0xd0, 0xa5, 0x7f, 0x88, 0x9e, - 0xa7, 0x75, 0x50, 0x1d, 0x26, 0x3d, 0xee, 0x5f, 0x61, 0x6b, 0x8f, 0x2d, 0xd3, 0x81, 0xfd, 0x2c, - 0xd3, 0x93, 0xcc, 0xfd, 0x99, 0x41, 0x81, 0xbb, 0x90, 0xa2, 0xf7, 0xc0, 0x68, 0x27, 0x26, 0x95, - 0x85, 0xe5, 0xf9, 0x88, 0xd4, 0xb8, 0x56, 0xac, 0xf9, 0xfd, 0xae, 0xa5, 0x45, 0x58, 0xaf, 0xe7, - 0xfe, 0x2b, 0x07, 0x86, 0xe7, 0xbc, 0xea, 0x56, 0xb8, 0xb9, 0x49, 0xa7, 0xa2, 0xd6, 0x89, 0x52, - 0xc3, 0x96, 0x36, 0x15, 0x0b, 0x02, 0x8e, 0x55, 0x0d, 0xb4, 0x0e, 0x43, 0x7c, 0xc3, 0x8b, 0x6d, - 0xf7, 0x0b, 0xda, 0x78, 0x54, 0x1c, 0x0f, 0x5b, 0x0e, 0x9d, 0xc4, 0x6f, 0xce, 0xf0, 0x38, 0x9e, - 0x99, 0xcb, 0x41, 0xb2, 0x1a, 0x55, 0x92, 0xc8, 0x0f, 0xea, 0x73, 0x40, 0x8f, 0x8b, 0x45, 0x86, - 0x03, 0x0b, 0x5c, 0x74, 0x18, 0x2d, 0xef, 0xa6, 0x24, 0x27, 0xd8, 0x8f, 0x1a, 0xc6, 0x4a, 0x5a, - 0x84, 0xf5, 0x7a, 0xee, 0x1f, 0x3b, 0x50, 0x9a, 0xf3, 0x62, 0xbf, 0xfa, 0x97, 0x88, 0xf9, 0x7c, - 0x18, 0x8a, 0xf3, 0x5e, 0xb5, 0x41, 0xd0, 0xb5, 0xac, 0xd2, 0x3b, 0x7a, 0xe1, 0xb1, 0x3c, 0x32, - 0x4a, 0x01, 0xd6, 0x29, 0x8d, 0xf7, 0x52, 0x8d, 0xdd, 0xb7, 0x1c, 0x98, 0x98, 0x6f, 0xfa, 0x24, - 0x48, 0xe6, 0x49, 0x94, 0xb0, 0x89, 0xab, 0xc3, 0x64, 0x55, 0x41, 0x0e, 0x32, 0x75, 0x6c, 0xb5, - 0xce, 0x67, 0x50, 0xe0, 0x2e, 0xa4, 0xa8, 0x06, 0xc7, 0x38, 0x2c, 0xdd, 0x15, 0xfb, 0x9a, 0x3f, - 0x66, 0x1d, 0x9d, 0x37, 0x31, 0xe0, 0x2c, 0x4a, 0xf7, 0xa7, 0x0e, 0x9c, 0x99, 0x6f, 0x76, 0xe2, - 0x84, 0x44, 0xd7, 0x05, 0x37, 0x92, 0xe2, 0x2d, 0xfa, 0x28, 0x8c, 0xb4, 0xa4, 0xc7, 0xd6, 0xb9, - 0xc3, 0x02, 0x66, 0xfc, 0x8c, 0xd6, 0xa6, 0x9d, 0x59, 0xdd, 0x78, 0x89, 0x54, 0x93, 0x15, 0x92, - 0x78, 0x69, 0x78, 0x41, 0x0a, 0xc3, 0x0a, 0x2b, 0x6a, 0xc3, 0x60, 0xdc, 0x26, 0x55, 0x7b, 0xd1, - 0x5d, 0x72, 0x0c, 0x95, 0x36, 0xa9, 0xa6, 0x7c, 0x9d, 0xf9, 0x1a, 0x19, 0x25, 0xf7, 0x7f, 0x3b, - 0x70, 0xb6, 0xc7, 0x78, 0xaf, 0xf8, 0x71, 0x82, 0x5e, 0xec, 0x1a, 0xf3, 0x4c, 0x7f, 0x63, 0xa6, - 0xad, 0xd9, 0x88, 0x15, 0x43, 0x90, 0x10, 0x6d, 0xbc, 0x1f, 0x83, 0xa2, 0x9f, 0x90, 0x96, 0x34, - 0x43, 0x5b, 0x30, 0x18, 0xf5, 0x18, 0xcb, 0xdc, 0xb8, 0x8c, 0xf1, 0xbb, 0x4c, 0xe9, 0x61, 0x4e, - 0xd6, 0xdd, 0x82, 0xa1, 0xf9, 0xb0, 0xd9, 0x69, 0x05, 0xfd, 0x45, 0xca, 0x24, 0x3b, 0x6d, 0x92, - 0x3d, 0x23, 0x99, 0xf8, 0xcf, 0x4a, 0xa4, 0xe1, 0x68, 0x20, 0xdf, 0x70, 0xe4, 0xfe, 0x1b, 0x07, - 0xe8, 0xae, 0xaa, 0xf9, 0xc2, 0x93, 0xc8, 0xd1, 0x71, 0x82, 0x0f, 0xea, 0xe8, 0x6e, 0xef, 0x4e, - 0x8f, 0xab, 0x8a, 0x1a, 0xfe, 0x0f, 0xc3, 0x50, 0xcc, 0x54, 0x72, 0xd1, 0x87, 0x45, 0x29, 0x3f, - 0x73, 0x45, 0xfd, 0xf6, 0xee, 0x74, 0x5f, 0x61, 0x9b, 0x33, 0x0a, 0xb7, 0x70, 0x7a, 0x0a, 0xac, - 0x54, 0xe0, 0x6b, 0x91, 0x38, 0xf6, 0xea, 0x52, 0xc3, 0x53, 0x02, 0xdf, 0x0a, 0x07, 0x63, 0x59, - 0xee, 0x7e, 0xd9, 0x81, 0x71, 0x75, 0x78, 0x51, 0xf1, 0x1d, 0x5d, 0xd5, 0x8f, 0x39, 0xbe, 0x52, - 0x1e, 0xec, 0xc1, 0x71, 0xc4, 0x41, 0xbe, 0xf7, 0x29, 0xf8, 0x6e, 0x18, 0xab, 0x91, 0x36, 0x09, - 0x6a, 0x24, 0xa8, 0x52, 0xf5, 0x9b, 0xae, 0x90, 0xd2, 0xdc, 0x24, 0xd5, 0x37, 0x17, 0x34, 0x38, - 0x36, 0x6a, 0xb9, 0xdf, 0x74, 0xe0, 0x7e, 0x85, 0xae, 0x42, 0x12, 0x4c, 0x92, 0x68, 0x47, 0x85, - 0x69, 0xee, 0xef, 0xb4, 0xba, 0x4e, 0xe5, 0xdf, 0x24, 0xe2, 0xc4, 0x0f, 0x76, 0x5c, 0x8d, 0x72, - 0x69, 0x99, 0x21, 0xc1, 0x12, 0x9b, 0xfb, 0x6b, 0x03, 0x70, 0x52, 0xef, 0xa4, 0x62, 0x30, 0xbf, - 0xec, 0x00, 0xa8, 0x19, 0xa0, 0x07, 0xf2, 0x80, 0x1d, 0xdf, 0x95, 0xf1, 0xa5, 0x52, 0x16, 0xa4, - 0xc0, 0x31, 0xd6, 0xc8, 0xa2, 0xe7, 0x61, 0x6c, 0x9b, 0x6e, 0x0a, 0xb2, 0x42, 0xc5, 0x85, 0xb8, - 0x3c, 0xc0, 0xba, 0x31, 0x9d, 0xf7, 0x31, 0x9f, 0x4b, 0xeb, 0xa5, 0xe6, 0x00, 0x0d, 0x18, 0x63, - 0x03, 0x15, 0xd5, 0x74, 0xc6, 0x23, 0xfd, 0x93, 0x08, 0x9b, 0xf8, 0x87, 0x2c, 0x8e, 0x31, 0xfb, - 0xd5, 0xe7, 0x8e, 0xdf, 0xda, 0x9d, 0x1e, 0x37, 0x40, 0xd8, 0xec, 0x84, 0xfb, 0x3c, 0xb0, 0xb9, - 0xf0, 0x83, 0x0e, 0x59, 0x0d, 0xd0, 0xc3, 0xd2, 0x46, 0xc7, 0xfd, 0x2a, 0x8a, 0x73, 0xe8, 0x76, - 0x3a, 0xaa, 0xcb, 0x6e, 0x7a, 0x7e, 0x93, 0x85, 0x2f, 0xd2, 0x5a, 0x4a, 0x97, 0x5d, 0x64, 0x50, - 0x2c, 0x4a, 0xdd, 0x19, 0x18, 0x9e, 0xa7, 0x63, 0x27, 0x11, 0xc5, 0xab, 0x47, 0x1d, 0x8f, 0x1b, - 0x51, 0xc7, 0x32, 0xba, 0x78, 0x1d, 0x4e, 0xcd, 0x47, 0xc4, 0x4b, 0x48, 0xe5, 0xa9, 0xb9, 0x4e, - 0x75, 0x8b, 0x24, 0x3c, 0xb4, 0x2b, 0x46, 0xef, 0x83, 0xf1, 0x90, 0x1d, 0x19, 0x57, 0xc2, 0xea, - 0x96, 0x1f, 0xd4, 0x85, 0xc9, 0xf5, 0x94, 0xc0, 0x32, 0xbe, 0xaa, 0x17, 0x62, 0xb3, 0xae, 0xfb, - 0x9f, 0x0b, 0x30, 0x36, 0x1f, 0x85, 0x81, 0x64, 0x8b, 0x47, 0x70, 0x94, 0x25, 0xc6, 0x51, 0x66, - 0xc1, 0xdd, 0xa9, 0xf7, 0xbf, 0xd7, 0x71, 0x86, 0x5e, 0x53, 0x2c, 0x72, 0xc0, 0x96, 0x0a, 0x62, - 0xd0, 0x65, 0xb8, 0xd3, 0x8f, 0x6d, 0x32, 0x50, 0xf7, 0xbf, 0x38, 0x30, 0xa9, 0x57, 0x3f, 0x82, - 0x13, 0x34, 0x36, 0x4f, 0xd0, 0xab, 0x76, 0xc7, 0xdb, 0xe3, 0xd8, 0xfc, 0x17, 0xc3, 0xe6, 0x38, - 0x99, 0xaf, 0xfb, 0xab, 0x0e, 0x8c, 0xdd, 0xd0, 0x00, 0x62, 0xb0, 0xb6, 0x85, 0x98, 0x77, 0x48, - 0x36, 0xa3, 0x43, 0x6f, 0x67, 0x7e, 0x63, 0xa3, 0x27, 0x94, 0xef, 0xc7, 0xd5, 0x06, 0xa9, 0x75, - 0x9a, 0xf2, 0xf8, 0x56, 0x53, 0x5a, 0x11, 0x70, 0xac, 0x6a, 0xa0, 0x17, 0xe1, 0x78, 0x35, 0x0c, - 0xaa, 0x9d, 0x28, 0x22, 0x41, 0x75, 0x67, 0x8d, 0xdd, 0x91, 0x10, 0x07, 0xe2, 0x8c, 0x68, 0x76, - 0x7c, 0x3e, 0x5b, 0xe1, 0x76, 0x1e, 0x10, 0x77, 0x23, 0xe2, 0xce, 0x82, 0x98, 0x1e, 0x59, 0x42, - 0xe1, 0xd2, 0x9c, 0x05, 0x0c, 0x8c, 0x65, 0x39, 0xba, 0x06, 0x67, 0xe2, 0xc4, 0x8b, 0x12, 0x3f, - 0xa8, 0x2f, 0x10, 0xaf, 0xd6, 0xf4, 0x03, 0xaa, 0x4a, 0x84, 0x41, 0x8d, 0xbb, 0x12, 0x07, 0xe6, - 0xce, 0xde, 0xda, 0x9d, 0x3e, 0x53, 0xc9, 0xaf, 0x82, 0x7b, 0xb5, 0x45, 0x1f, 0x86, 0x29, 0xe1, - 0x8e, 0xd8, 0xec, 0x34, 0x9f, 0x09, 0x37, 0xe2, 0x4b, 0x7e, 0x4c, 0xf5, 0xf8, 0x2b, 0x7e, 0xcb, - 0x4f, 0x98, 0xc3, 0xb0, 0x38, 0x77, 0xee, 0xd6, 0xee, 0xf4, 0x54, 0xa5, 0x67, 0x2d, 0xbc, 0x07, - 0x06, 0x84, 0xe1, 0x34, 0x67, 0x7e, 0x5d, 0xb8, 0x87, 0x19, 0xee, 0xa9, 0x5b, 0xbb, 0xd3, 0xa7, - 0x17, 0x73, 0x6b, 0xe0, 0x1e, 0x2d, 0xe9, 0x17, 0x4c, 0xfc, 0x16, 0x79, 0x25, 0x0c, 0x08, 0x0b, - 0x54, 0xd1, 0xbe, 0xe0, 0xba, 0x80, 0x63, 0x55, 0x03, 0xbd, 0x94, 0xae, 0x44, 0xba, 0x5d, 0x44, - 0xc0, 0xc9, 0xfe, 0x39, 0x1c, 0x53, 0x4d, 0xae, 0x6b, 0x98, 0x58, 0x24, 0xa5, 0x81, 0x1b, 0x7d, - 0xd2, 0x81, 0xb1, 0x38, 0x09, 0xd5, 0xbd, 0x06, 0x11, 0x71, 0x62, 0x61, 0xd9, 0x57, 0x34, 0xac, - 0x5c, 0xf0, 0xd1, 0x21, 0xd8, 0xa0, 0x8a, 0xde, 0x09, 0x25, 0xb9, 0x80, 0xe3, 0xf2, 0x28, 0x93, - 0x95, 0x98, 0x1a, 0x27, 0xd7, 0x77, 0x8c, 0xd3, 0x72, 0xf7, 0x27, 0x03, 0x80, 0xba, 0xd9, 0x1a, - 0x5a, 0x86, 0x21, 0xaf, 0x9a, 0xf8, 0xdb, 0x32, 0x9a, 0xf0, 0xe1, 0xbc, 0x23, 0x9f, 0x4f, 0x0f, - 0x26, 0x9b, 0x84, 0xae, 0x6a, 0x92, 0xf2, 0xc2, 0x59, 0xd6, 0x14, 0x0b, 0x14, 0x28, 0x84, 0xe3, - 0x4d, 0x2f, 0x4e, 0x24, 0xfd, 0x1a, 0xfd, 0x4c, 0xe2, 0x30, 0xf8, 0xf9, 0xfe, 0x3e, 0x04, 0x6d, - 0x31, 0x77, 0x8a, 0xee, 0xb6, 0x2b, 0x59, 0x44, 0xb8, 0x1b, 0x37, 0xfa, 0x38, 0x93, 0x9d, 0xb8, - 0x60, 0x2b, 0x85, 0x96, 0x65, 0x2b, 0x72, 0x05, 0xc7, 0x69, 0xc8, 0x4d, 0x82, 0x0c, 0xd6, 0x48, - 0xa2, 0xf3, 0x50, 0x62, 0xbb, 0x82, 0xd4, 0x08, 0xdf, 0xdb, 0x03, 0xa9, 0x88, 0x5b, 0x91, 0x05, - 0x38, 0xad, 0xa3, 0xc9, 0x10, 0x7c, 0x3b, 0xf7, 0x90, 0x21, 0xd0, 0xd3, 0x50, 0x6c, 0x37, 0xbc, - 0x58, 0x46, 0xa8, 0xbb, 0x92, 0x27, 0xaf, 0x51, 0x20, 0x63, 0x3c, 0xda, 0xb7, 0x64, 0x40, 0xcc, - 0x1b, 0xb8, 0xff, 0x16, 0x60, 0x78, 0x61, 0x76, 0x69, 0xdd, 0x8b, 0xb7, 0xfa, 0xd0, 0x70, 0xe8, - 0x26, 0x13, 0xa2, 0x68, 0x96, 0x4d, 0x4a, 0x11, 0x15, 0xab, 0x1a, 0x28, 0x80, 0x21, 0x3f, 0xa0, - 0x7c, 0xa5, 0x3c, 0x61, 0xcb, 0x8b, 0xa0, 0xb4, 0x35, 0x66, 0xe6, 0xb9, 0xcc, 0xb0, 0x63, 0x41, - 0x05, 0xbd, 0x06, 0x25, 0x4f, 0x5e, 0x10, 0x12, 0xa7, 0xfb, 0xb2, 0x0d, 0xf3, 0xb8, 0x40, 0xa9, - 0x07, 0x28, 0x09, 0x10, 0x4e, 0x09, 0xa2, 0x4f, 0x38, 0x30, 0x2a, 0x87, 0x8e, 0xc9, 0xa6, 0xf0, - 0x5c, 0xaf, 0xd8, 0x1b, 0x33, 0x26, 0x9b, 0x3c, 0x7a, 0x45, 0x03, 0x60, 0x9d, 0x64, 0x97, 0x46, - 0x54, 0xec, 0x47, 0x23, 0x42, 0x37, 0xa0, 0x74, 0xc3, 0x4f, 0x1a, 0xec, 0xfc, 0x16, 0x1e, 0xb3, - 0xc5, 0xbb, 0xef, 0x35, 0x45, 0x97, 0xce, 0xd8, 0x75, 0x49, 0x00, 0xa7, 0xb4, 0xe8, 0x76, 0xa0, - 0x3f, 0xd8, 0x05, 0x2b, 0xc6, 0xf9, 0x4b, 0x66, 0x03, 0x56, 0x80, 0xd3, 0x3a, 0x74, 0x8a, 0xc7, - 0xe8, 0xaf, 0x0a, 0x79, 0xb9, 0x43, 0x59, 0x8b, 0x88, 0x48, 0xb4, 0xb0, 0xae, 0x24, 0x46, 0x3e, - 0x59, 0xd7, 0x35, 0x1a, 0xd8, 0xa0, 0x48, 0xf7, 0xc8, 0x8d, 0x06, 0x09, 0xc4, 0x8d, 0x09, 0xb5, - 0x47, 0xae, 0x37, 0x48, 0x80, 0x59, 0x09, 0x7a, 0x8d, 0x6b, 0x68, 0x5c, 0x55, 0x10, 0xbc, 0xfe, - 0x8a, 0x1d, 0xed, 0x85, 0xe3, 0xe4, 0x97, 0x16, 0xd2, 0xdf, 0x58, 0xa3, 0x47, 0x39, 0x46, 0x18, - 0x5c, 0xbc, 0xe9, 0x27, 0xe2, 0xaa, 0x85, 0xe2, 0x18, 0xab, 0x0c, 0x8a, 0x45, 0x29, 0x8f, 0xcc, - 0xa0, 0x8b, 0x20, 0x66, 0xf7, 0x2a, 0x4a, 0x7a, 0x64, 0x06, 0x03, 0x63, 0x59, 0x8e, 0xfe, 0xa1, - 0x03, 0xc5, 0x46, 0x18, 0x6e, 0xc5, 0xe5, 0x71, 0xb6, 0x38, 0x2c, 0x48, 0xcc, 0x82, 0xe3, 0xcc, - 0x5c, 0xa2, 0x68, 0xcd, 0xcb, 0x63, 0x45, 0x06, 0xbb, 0xbd, 0x3b, 0x3d, 0x71, 0xc5, 0xdf, 0x24, - 0xd5, 0x9d, 0x6a, 0x93, 0x30, 0xc8, 0x1b, 0x6f, 0x69, 0x90, 0x8b, 0xdb, 0x24, 0x48, 0x30, 0xef, - 0xd5, 0xd4, 0xe7, 0x1c, 0x80, 0x14, 0x51, 0x8e, 0x0b, 0x94, 0x98, 0x41, 0x03, 0x16, 0xd4, 0x65, - 0xa3, 0x6b, 0xba, 0x4f, 0xf5, 0xdf, 0x39, 0x30, 0x4a, 0x07, 0x27, 0x59, 0xe0, 0xa3, 0x30, 0x94, - 0x78, 0x51, 0x9d, 0x48, 0x37, 0x80, 0xfa, 0x1c, 0xeb, 0x0c, 0x8a, 0x45, 0x29, 0x0a, 0xa0, 0x98, - 0x78, 0xf1, 0x96, 0x14, 0xd2, 0x2f, 0x5b, 0x9b, 0xe2, 0x54, 0x3e, 0xa7, 0xbf, 0x62, 0xcc, 0xc9, - 0xa0, 0xc7, 0x60, 0x84, 0x1e, 0x1d, 0x8b, 0x5e, 0x2c, 0x23, 0x73, 0xc6, 0x28, 0x13, 0x5f, 0x14, - 0x30, 0xac, 0x4a, 0xdd, 0xdf, 0x28, 0xc0, 0xe0, 0x02, 0x57, 0xd7, 0x86, 0xe2, 0xb0, 0x13, 0x55, - 0x89, 0x10, 0xdb, 0x2d, 0xac, 0x69, 0x8a, 0xb7, 0xc2, 0x70, 0x6a, 0x0a, 0x13, 0xfb, 0x8d, 0x05, - 0x2d, 0xf4, 0x25, 0x07, 0x26, 0x92, 0xc8, 0x0b, 0xe2, 0x4d, 0xe6, 0x70, 0xf1, 0xc3, 0x40, 0x4c, - 0x91, 0x85, 0x55, 0xb8, 0x6e, 0xe0, 0xad, 0x24, 0xa4, 0x9d, 0xfa, 0x7d, 0xcc, 0x32, 0x9c, 0xe9, - 0x83, 0xfb, 0x9b, 0x0e, 0x40, 0xda, 0x7b, 0xf4, 0x59, 0x07, 0xc6, 0x3d, 0x3d, 0x22, 0x54, 0xcc, - 0xd1, 0xaa, 0x3d, 0xef, 0x2c, 0x43, 0xcb, 0x2d, 0x15, 0x06, 0x08, 0x9b, 0x84, 0xdd, 0xf7, 0x40, - 0x91, 0xed, 0x0e, 0xa6, 0xd2, 0x08, 0xcb, 0x76, 0xd6, 0x94, 0x25, 0x2d, 0xde, 0x58, 0xd5, 0x70, - 0x5f, 0x84, 0x89, 0x8b, 0x37, 0x49, 0xb5, 0x93, 0x84, 0x11, 0xb7, 0xeb, 0xf7, 0xb8, 0x01, 0xe4, - 0x1c, 0xe8, 0x06, 0xd0, 0x77, 0x1c, 0x18, 0xd5, 0xc2, 0x03, 0xe9, 0x49, 0x5d, 0x9f, 0xaf, 0x70, - 0xf3, 0x85, 0x98, 0xaa, 0x65, 0x2b, 0x01, 0x88, 0x1c, 0x65, 0x7a, 0x8c, 0x28, 0x10, 0x4e, 0x09, - 0xde, 0x21, 0x7c, 0xcf, 0xfd, 0x43, 0x07, 0x4e, 0xe5, 0xc6, 0x32, 0xde, 0xe3, 0x6e, 0x1b, 0x2e, - 0xf4, 0x42, 0x1f, 0x2e, 0xf4, 0xdf, 0x75, 0x20, 0xc5, 0x44, 0x59, 0xd1, 0x46, 0xda, 0x73, 0x8d, - 0x15, 0x09, 0x4a, 0xa2, 0x14, 0xbd, 0x06, 0x67, 0xcc, 0x2f, 0x78, 0x40, 0x6f, 0x0a, 0x57, 0x3d, - 0xf3, 0x31, 0xe1, 0x5e, 0x24, 0xdc, 0xaf, 0x39, 0x50, 0x5c, 0xf2, 0x3a, 0x75, 0xd2, 0x97, 0x31, - 0x8c, 0xf2, 0xb1, 0x88, 0x78, 0xcd, 0x44, 0xaa, 0x0e, 0x82, 0x8f, 0x61, 0x01, 0xc3, 0xaa, 0x14, - 0xcd, 0x42, 0x29, 0x6c, 0x13, 0xc3, 0x03, 0xf8, 0xb0, 0x9c, 0xbd, 0x55, 0x59, 0x40, 0x8f, 0x1d, - 0x46, 0x5d, 0x41, 0x70, 0xda, 0xca, 0xfd, 0x41, 0x11, 0x46, 0xb5, 0x5b, 0x2f, 0x54, 0x16, 0x88, - 0x48, 0x3b, 0xcc, 0xca, 0xcb, 0x74, 0xc1, 0x60, 0x56, 0x42, 0xf7, 0x60, 0x44, 0xb6, 0xfd, 0x98, - 0xb3, 0x2d, 0x63, 0x0f, 0x62, 0x01, 0xc7, 0xaa, 0x06, 0x9a, 0x86, 0x62, 0x8d, 0xb4, 0x93, 0x06, - 0xeb, 0xde, 0x20, 0x0f, 0xfd, 0x5b, 0xa0, 0x00, 0xcc, 0xe1, 0xb4, 0xc2, 0x26, 0x49, 0xaa, 0x0d, - 0x66, 0xf7, 0x15, 0xb1, 0x81, 0x8b, 0x14, 0x80, 0x39, 0x3c, 0xc7, 0x47, 0x59, 0x3c, 0x7c, 0x1f, - 0xe5, 0x90, 0x65, 0x1f, 0x25, 0x6a, 0xc3, 0x89, 0x38, 0x6e, 0xac, 0x45, 0xfe, 0xb6, 0x97, 0x90, - 0x74, 0xf5, 0x0d, 0xef, 0x87, 0xce, 0x19, 0x76, 0x0f, 0xbd, 0x72, 0x29, 0x8b, 0x05, 0xe7, 0xa1, - 0x46, 0x15, 0x38, 0xe5, 0x07, 0x31, 0xa9, 0x76, 0x22, 0x72, 0xb9, 0x1e, 0x84, 0x11, 0xb9, 0x14, - 0xc6, 0x14, 0x9d, 0xb8, 0x45, 0xab, 0xa2, 0x65, 0x2f, 0xe7, 0x55, 0xc2, 0xf9, 0x6d, 0xd1, 0x12, - 0x1c, 0xaf, 0xf9, 0xb1, 0xb7, 0xd1, 0x24, 0x95, 0xce, 0x46, 0x2b, 0xe4, 0x8a, 0x77, 0x89, 0x21, - 0xbc, 0x5f, 0x5a, 0x89, 0x16, 0xb2, 0x15, 0x70, 0x77, 0x1b, 0xf4, 0x34, 0x8c, 0xc5, 0x7e, 0x50, - 0x6f, 0x92, 0xb9, 0xc8, 0x0b, 0xaa, 0x0d, 0x71, 0xfd, 0x56, 0x59, 0xd3, 0x2b, 0x5a, 0x19, 0x36, - 0x6a, 0xb2, 0x3d, 0xcf, 0xdb, 0x64, 0xa4, 0x41, 0x51, 0x5b, 0x94, 0xba, 0x3f, 0x74, 0x60, 0x4c, - 0x8f, 0x54, 0xa7, 0x92, 0x36, 0x34, 0x16, 0x16, 0x2b, 0xfc, 0x2c, 0xb0, 0x77, 0xe2, 0x5f, 0x52, - 0x38, 0x53, 0x65, 0x39, 0x85, 0x61, 0x8d, 0x66, 0x1f, 0xf7, 0xce, 0x1f, 0x86, 0xe2, 0x66, 0x48, - 0x05, 0x92, 0x01, 0xd3, 0x0c, 0xbf, 0x48, 0x81, 0x98, 0x97, 0xb9, 0xff, 0xd3, 0x81, 0xd3, 0xf9, - 0x41, 0xf8, 0x6f, 0x87, 0x41, 0x5e, 0x00, 0xa0, 0x43, 0x31, 0x98, 0xba, 0x96, 0x79, 0x42, 0x96, - 0x60, 0xad, 0x56, 0x7f, 0xc3, 0xfe, 0x33, 0x2a, 0x14, 0xa7, 0x74, 0x3e, 0xef, 0xc0, 0x38, 0x25, - 0xbb, 0x1c, 0x6d, 0x18, 0xa3, 0x5d, 0xb5, 0x33, 0x5a, 0x85, 0x36, 0xf5, 0x36, 0x18, 0x60, 0x6c, - 0x12, 0x47, 0xef, 0x84, 0x92, 0x57, 0xab, 0x45, 0x24, 0x8e, 0x95, 0xdf, 0x8e, 0xd9, 0xa2, 0x66, - 0x25, 0x10, 0xa7, 0xe5, 0x94, 0x89, 0x36, 0x6a, 0x9b, 0x31, 0xe5, 0x4b, 0x82, 0x71, 0x2b, 0x26, - 0x4a, 0x89, 0x50, 0x38, 0x56, 0x35, 0xdc, 0x5f, 0x1d, 0x04, 0x93, 0x36, 0xaa, 0xc1, 0xb1, 0xad, - 0x68, 0x63, 0x9e, 0x85, 0x3d, 0x1c, 0x24, 0xfc, 0x80, 0x85, 0x05, 0x2c, 0x9b, 0x18, 0x70, 0x16, - 0xa5, 0xa0, 0xb2, 0x4c, 0x76, 0x12, 0x6f, 0xe3, 0xc0, 0xc1, 0x07, 0xcb, 0x26, 0x06, 0x9c, 0x45, - 0x89, 0xde, 0x03, 0xa3, 0x5b, 0xd1, 0x86, 0x64, 0xd1, 0xd9, 0x48, 0x96, 0xe5, 0xb4, 0x08, 0xeb, - 0xf5, 0xe8, 0x14, 0x6e, 0x45, 0x1b, 0xf4, 0x54, 0x94, 0x79, 0x18, 0xd4, 0x14, 0x2e, 0x0b, 0x38, - 0x56, 0x35, 0x50, 0x1b, 0xd0, 0x96, 0x9c, 0x3d, 0x15, 0xe4, 0x21, 0x4e, 0x92, 0xfe, 0x63, 0x44, - 0x58, 0x74, 0xfd, 0x72, 0x17, 0x1e, 0x9c, 0x83, 0x1b, 0x3d, 0x0f, 0x67, 0xb6, 0xa2, 0x0d, 0x21, - 0x2c, 0xac, 0x45, 0x7e, 0x50, 0xf5, 0xdb, 0x46, 0xce, 0x85, 0x69, 0xd1, 0xdd, 0x33, 0xcb, 0xf9, - 0xd5, 0x70, 0xaf, 0xf6, 0xee, 0xef, 0x0d, 0x02, 0xbb, 0x2d, 0x4a, 0x79, 0x61, 0x8b, 0x24, 0x8d, - 0xb0, 0x96, 0x95, 0x7f, 0x56, 0x18, 0x14, 0x8b, 0x52, 0x19, 0x43, 0x5a, 0xe8, 0x11, 0x43, 0x7a, - 0x03, 0x86, 0x1b, 0xc4, 0xab, 0x91, 0x48, 0x5a, 0x10, 0xaf, 0xd8, 0xb9, 0xdf, 0x7a, 0x89, 0x21, - 0x4d, 0xd5, 0x70, 0xfe, 0x3b, 0xc6, 0x92, 0x1a, 0x7a, 0x2f, 0x4c, 0x50, 0x41, 0x26, 0xec, 0x24, - 0xd2, 0xc4, 0xcf, 0x2d, 0x88, 0xec, 0x44, 0x5d, 0x37, 0x4a, 0x70, 0xa6, 0x26, 0x5a, 0x80, 0x49, - 0x61, 0x8e, 0x57, 0x96, 0x49, 0x31, 0xb1, 0x2a, 0x19, 0x46, 0x25, 0x53, 0x8e, 0xbb, 0x5a, 0xb0, - 0x18, 0xc0, 0xb0, 0xc6, 0x3d, 0xb2, 0x7a, 0x0c, 0x60, 0x58, 0xdb, 0xc1, 0xac, 0x04, 0xbd, 0x02, - 0x23, 0xf4, 0xef, 0x62, 0x14, 0xb6, 0x84, 0x6d, 0x66, 0xcd, 0xce, 0xec, 0x50, 0x1a, 0x42, 0x53, - 0x64, 0x02, 0xde, 0x9c, 0xa0, 0x82, 0x15, 0x3d, 0xaa, 0xaf, 0xc8, 0x73, 0xb8, 0xb2, 0xe5, 0xb7, - 0x9f, 0x23, 0x91, 0xbf, 0xb9, 0xc3, 0x84, 0x86, 0x91, 0x54, 0x5f, 0xb9, 0xdc, 0x55, 0x03, 0xe7, - 0xb4, 0x72, 0x3f, 0x5f, 0x80, 0x31, 0xfd, 0xd2, 0xf1, 0x9d, 0x02, 0x8b, 0xe3, 0x74, 0x51, 0x70, - 0xed, 0xf4, 0x92, 0x85, 0x61, 0xdf, 0x69, 0x41, 0x34, 0x60, 0xd0, 0xeb, 0x08, 0x69, 0xd1, 0x8a, - 0x11, 0x8c, 0x8d, 0xb8, 0x93, 0x34, 0xf8, 0xed, 0x34, 0x16, 0xf2, 0xcb, 0x28, 0xb8, 0x9f, 0x1a, - 0x80, 0x11, 0x59, 0x88, 0x3e, 0xe9, 0x00, 0xa4, 0xa1, 0x57, 0x82, 0x95, 0xae, 0xd9, 0x88, 0xcb, - 0xd1, 0xa3, 0xc6, 0x34, 0x5b, 0xba, 0x82, 0x63, 0x8d, 0x2e, 0x4a, 0x60, 0x28, 0xa4, 0x9d, 0xbb, - 0x60, 0xef, 0xe2, 0xfc, 0x2a, 0x25, 0x7c, 0x81, 0x51, 0x4f, 0xcd, 0x66, 0x0c, 0x86, 0x05, 0x2d, - 0xaa, 0x01, 0x6e, 0xc8, 0x88, 0x40, 0x7b, 0x26, 0x66, 0x15, 0x64, 0x98, 0x2a, 0x74, 0x0a, 0x84, - 0x53, 0x82, 0xee, 0x93, 0x30, 0x61, 0x6e, 0x06, 0xaa, 0x11, 0x6c, 0xec, 0x24, 0x84, 0xdb, 0x1b, - 0xc6, 0xb8, 0x46, 0x30, 0x47, 0x01, 0x98, 0xc3, 0xdd, 0xef, 0x53, 0x39, 0x40, 0xb1, 0x97, 0x3e, - 0x4c, 0xfc, 0x0f, 0xeb, 0xc6, 0xb2, 0x5e, 0x6a, 0xd7, 0xc7, 0xa1, 0xc4, 0xfe, 0x61, 0x1b, 0x7d, - 0xc0, 0x96, 0xff, 0x3e, 0xed, 0xa7, 0xd8, 0xea, 0x4c, 0x26, 0x78, 0x4e, 0x12, 0xc2, 0x29, 0x4d, - 0x37, 0x84, 0xc9, 0x6c, 0x6d, 0xf4, 0x21, 0x18, 0x8b, 0xe5, 0xb1, 0x9a, 0x5e, 0xa1, 0xeb, 0xf3, - 0xf8, 0xe5, 0xde, 0x33, 0xad, 0x39, 0x36, 0x90, 0xb9, 0xab, 0x30, 0x64, 0x75, 0x0a, 0xdd, 0x6f, - 0x3b, 0x50, 0x62, 0x0e, 0xcc, 0x7a, 0xe4, 0xb5, 0xd2, 0x26, 0x03, 0x7b, 0xcc, 0x7a, 0x0c, 0xc3, - 0x5c, 0x47, 0x97, 0x81, 0x3f, 0x16, 0xb8, 0x0c, 0xcf, 0x77, 0x97, 0x72, 0x19, 0x6e, 0x0c, 0x88, - 0xb1, 0xa4, 0xe4, 0x7e, 0xba, 0x00, 0x43, 0x97, 0x83, 0x76, 0xe7, 0xaf, 0x7c, 0xce, 0xb5, 0x15, - 0x18, 0xbc, 0x9c, 0x90, 0x96, 0x99, 0x1a, 0x70, 0x6c, 0xee, 0x11, 0x3d, 0x2d, 0x60, 0xd9, 0x4c, - 0x0b, 0x88, 0xbd, 0x1b, 0x32, 0x2e, 0x4e, 0xd8, 0x88, 0xd3, 0x6b, 0x84, 0x4f, 0x40, 0xe9, 0x8a, - 0xb7, 0x41, 0x9a, 0xcb, 0x64, 0x87, 0x5d, 0xfa, 0xe3, 0x31, 0x1a, 0x4e, 0xaa, 0xd8, 0x1b, 0xf1, - 0x14, 0x0b, 0x30, 0xc1, 0x6a, 0xab, 0xcd, 0x40, 0x35, 0x07, 0x92, 0xe6, 0x55, 0x72, 0x4c, 0xcd, - 0x41, 0xcb, 0xa9, 0xa4, 0xd5, 0x72, 0x67, 0x60, 0x34, 0xc5, 0xd2, 0x07, 0xd5, 0x9f, 0x15, 0x60, - 0xdc, 0x30, 0x75, 0x1b, 0x0e, 0x40, 0xe7, 0x8e, 0x0e, 0x40, 0xc3, 0x21, 0x57, 0xb8, 0xd7, 0x0e, - 0xb9, 0x81, 0xa3, 0x77, 0xc8, 0x99, 0x1f, 0x69, 0xb0, 0xaf, 0x8f, 0xd4, 0x84, 0xc1, 0x2b, 0x7e, - 0xb0, 0xd5, 0x1f, 0x9f, 0x89, 0xab, 0x61, 0xbb, 0x8b, 0xcf, 0x54, 0x28, 0x10, 0xf3, 0x32, 0x29, - 0xb9, 0x0c, 0xe4, 0x4b, 0x2e, 0xee, 0x27, 0x1d, 0x18, 0x5b, 0xf1, 0x02, 0x7f, 0x93, 0xc4, 0x09, - 0x5b, 0x57, 0xc9, 0xa1, 0x5e, 0xfe, 0x1a, 0xeb, 0x91, 0xc6, 0xe0, 0x0d, 0x07, 0x8e, 0xaf, 0x90, - 0x56, 0xe8, 0xbf, 0xe2, 0xa5, 0x61, 0xa7, 0xb4, 0xef, 0x0d, 0x3f, 0x11, 0x51, 0x76, 0xaa, 0xef, - 0x97, 0xfc, 0x04, 0x53, 0xf8, 0x1d, 0xec, 0xb8, 0xec, 0x5a, 0x05, 0x55, 0xd0, 0xb4, 0x0b, 0x89, - 0x69, 0x40, 0xa9, 0x2c, 0xc0, 0x69, 0x1d, 0xf7, 0xf7, 0x1d, 0x18, 0xe6, 0x9d, 0x50, 0x91, 0xba, - 0x4e, 0x0f, 0xdc, 0x0d, 0x28, 0xb2, 0x76, 0x62, 0x55, 0x2f, 0x59, 0x10, 0x7f, 0x28, 0x3a, 0xbe, - 0x07, 0xd9, 0xbf, 0x98, 0x13, 0x60, 0x6a, 0x8b, 0x77, 0x73, 0x56, 0x45, 0xdc, 0xa6, 0x6a, 0x0b, - 0x83, 0x62, 0x51, 0xea, 0x7e, 0x7d, 0x00, 0x46, 0x54, 0xf6, 0x2e, 0x96, 0x5b, 0x21, 0x08, 0xc2, - 0xc4, 0xe3, 0xb1, 0x0e, 0x9c, 0x57, 0x7f, 0xc8, 0x5e, 0xf6, 0xb0, 0x99, 0xd9, 0x14, 0x3b, 0xf7, - 0xdf, 0x29, 0x25, 0x54, 0x2b, 0xc1, 0x7a, 0x27, 0xd0, 0xc7, 0x60, 0xa8, 0x49, 0xb9, 0x8f, 0x64, - 0xdd, 0xcf, 0x59, 0xec, 0x0e, 0x63, 0x6b, 0xa2, 0x27, 0x6a, 0x86, 0x38, 0x10, 0x0b, 0xaa, 0x53, - 0xef, 0x87, 0xc9, 0x6c, 0xaf, 0xef, 0x74, 0x5f, 0xb2, 0xa4, 0xdf, 0xb6, 0xfc, 0x9b, 0x82, 0x7b, - 0xee, 0xbf, 0xa9, 0xfb, 0x2c, 0x8c, 0xae, 0x90, 0x24, 0xf2, 0xab, 0x0c, 0xc1, 0x9d, 0x16, 0x57, - 0x5f, 0xf2, 0xc3, 0x67, 0xd8, 0x62, 0xa5, 0x38, 0x63, 0xf4, 0x1a, 0x40, 0x3b, 0x0a, 0xa9, 0xfe, - 0x4a, 0x3a, 0xf2, 0x63, 0x5b, 0x90, 0x87, 0xd7, 0x14, 0x4e, 0xee, 0x72, 0x4e, 0x7f, 0x63, 0x8d, - 0x9e, 0xfb, 0x02, 0x14, 0x57, 0x3a, 0x09, 0xb9, 0xd9, 0x07, 0xc7, 0xda, 0x6f, 0x02, 0x01, 0xf7, - 0x43, 0x30, 0xc6, 0x70, 0x5f, 0x0a, 0x9b, 0xf4, 0x58, 0xa5, 0x53, 0xd3, 0xa2, 0xbf, 0xb3, 0x4e, - 0x01, 0x56, 0x09, 0xf3, 0x32, 0xba, 0x65, 0x1a, 0x61, 0xb3, 0xa6, 0x2e, 0x53, 0xa9, 0x05, 0x71, - 0x89, 0x41, 0xb1, 0x28, 0x75, 0x7f, 0xb9, 0x00, 0xa3, 0xac, 0xa1, 0x60, 0x37, 0x3b, 0x30, 0xdc, - 0xe0, 0x74, 0xc4, 0x1c, 0x5a, 0x08, 0xd1, 0xd2, 0x7b, 0xaf, 0xe9, 0x72, 0x1c, 0x80, 0x25, 0x3d, - 0x4a, 0xfa, 0x86, 0xe7, 0x27, 0x94, 0x74, 0xe1, 0x70, 0x49, 0x5f, 0xe7, 0x64, 0xb0, 0xa4, 0xe7, - 0xfe, 0x12, 0xb0, 0x4b, 0xca, 0x8b, 0x4d, 0xaf, 0xce, 0x67, 0x2e, 0xdc, 0x22, 0x35, 0xc1, 0x73, - 0xb5, 0x99, 0xa3, 0x50, 0x2c, 0x4a, 0xf9, 0xc5, 0xcf, 0x24, 0xf2, 0x55, 0x70, 0xb3, 0x76, 0xf1, - 0x93, 0x81, 0x65, 0x28, 0x7b, 0xcd, 0xfd, 0x72, 0x01, 0x80, 0xe5, 0x7a, 0xe3, 0x77, 0x8b, 0x7f, - 0x41, 0x46, 0x2a, 0x99, 0x8e, 0x44, 0x15, 0xa9, 0xc4, 0x6e, 0x4f, 0xeb, 0x11, 0x4a, 0xfa, 0x9d, - 0x83, 0xc2, 0xde, 0x77, 0x0e, 0x50, 0x1b, 0x86, 0xc3, 0x4e, 0x42, 0x65, 0x55, 0x71, 0xd8, 0x5b, - 0xf0, 0xa3, 0xaf, 0x72, 0x84, 0x3c, 0x50, 0x5f, 0xfc, 0xc0, 0x92, 0x0c, 0x7a, 0x1a, 0x46, 0xda, - 0x51, 0x58, 0xa7, 0x67, 0xb7, 0x38, 0xde, 0x1f, 0x90, 0xf2, 0xd0, 0x9a, 0x80, 0xdf, 0xd6, 0xfe, - 0xc7, 0xaa, 0xb6, 0xfb, 0xa3, 0x49, 0x3e, 0x2f, 0x62, 0xed, 0x4d, 0x41, 0xc1, 0x97, 0x96, 0x29, - 0x10, 0x28, 0x0a, 0x97, 0x17, 0x70, 0xc1, 0xaf, 0xa9, 0x7d, 0x55, 0xe8, 0xb9, 0xaf, 0xde, 0x03, - 0xa3, 0x35, 0x3f, 0x6e, 0x37, 0xbd, 0x9d, 0xab, 0x39, 0x66, 0xc1, 0x85, 0xb4, 0x08, 0xeb, 0xf5, - 0xd0, 0x13, 0xe2, 0x86, 0xc9, 0xa0, 0x61, 0x0a, 0x92, 0x37, 0x4c, 0xd2, 0xbb, 0xeb, 0xfc, 0x72, - 0x49, 0xf6, 0x8e, 0x7f, 0xb1, 0xef, 0x3b, 0xfe, 0x59, 0x49, 0x6c, 0xe8, 0xe8, 0x25, 0xb1, 0xf7, - 0xc1, 0xb8, 0xfc, 0xc9, 0xc4, 0xa3, 0xf2, 0x49, 0xd6, 0x7b, 0x65, 0xae, 0x5e, 0xd7, 0x0b, 0xb1, - 0x59, 0x37, 0x5d, 0xb4, 0xc3, 0xfd, 0x2e, 0xda, 0x0b, 0x00, 0x1b, 0x61, 0x27, 0xa8, 0x79, 0xd1, - 0xce, 0xe5, 0x05, 0x11, 0x8f, 0xaa, 0x04, 0xbf, 0x39, 0x55, 0x82, 0xb5, 0x5a, 0xfa, 0x42, 0x2f, - 0xdd, 0x61, 0xa1, 0x7f, 0x08, 0x4a, 0x2c, 0x76, 0x97, 0xd4, 0x66, 0x13, 0x11, 0x62, 0xb4, 0x9f, - 0x90, 0xc9, 0x34, 0xe8, 0x50, 0x22, 0xc1, 0x29, 0x3e, 0xf4, 0x61, 0x80, 0x4d, 0x3f, 0xf0, 0xe3, - 0x06, 0xc3, 0x3e, 0xba, 0x6f, 0xec, 0x6a, 0x9c, 0x8b, 0x0a, 0x0b, 0xd6, 0x30, 0xa2, 0x17, 0xe1, - 0x38, 0x89, 0x13, 0xbf, 0xe5, 0x25, 0xa4, 0xa6, 0xee, 0x64, 0x96, 0x99, 0x2d, 0x53, 0x45, 0x4f, - 0x5f, 0xcc, 0x56, 0xb8, 0x9d, 0x07, 0xc4, 0xdd, 0x88, 0x8c, 0x1d, 0x39, 0xb5, 0x9f, 0x1d, 0x89, - 0xfe, 0xdc, 0x81, 0xe3, 0x11, 0xe1, 0x71, 0x27, 0xb1, 0xea, 0xd8, 0x29, 0xc6, 0x8e, 0xab, 0x36, - 0xd2, 0xa8, 0xab, 0x7c, 0x29, 0x38, 0x4b, 0x85, 0x0b, 0x2e, 0x44, 0x8e, 0xbe, 0xab, 0xfc, 0x76, - 0x1e, 0xf0, 0x8d, 0xb7, 0xa6, 0xa7, 0xbb, 0xd3, 0xf9, 0x2b, 0xe4, 0x74, 0xe7, 0xfd, 0xdd, 0xb7, - 0xa6, 0x27, 0xe5, 0xef, 0x74, 0xd2, 0xba, 0x06, 0x49, 0x8f, 0xd5, 0x76, 0x58, 0xbb, 0xbc, 0x26, - 0x62, 0xc1, 0xd4, 0xb1, 0xba, 0x46, 0x81, 0x98, 0x97, 0xa1, 0xc7, 0x60, 0xa4, 0xe6, 0x91, 0x56, - 0x18, 0xa8, 0x84, 0xb8, 0x4c, 0x9a, 0x5f, 0x10, 0x30, 0xac, 0x4a, 0xa9, 0x0e, 0x11, 0x88, 0x23, - 0xa5, 0x7c, 0xd6, 0x96, 0x0e, 0x21, 0x0f, 0x29, 0x4e, 0x55, 0xfe, 0xc2, 0x8a, 0x12, 0x6a, 0xc2, - 0x90, 0xcf, 0x0c, 0x15, 0x22, 0xdc, 0xd4, 0x82, 0x75, 0x84, 0x1b, 0x3e, 0x64, 0xb0, 0x29, 0x63, - 0xfd, 0x82, 0x86, 0x7e, 0xd6, 0x1c, 0x3b, 0x9a, 0xb3, 0xe6, 0x31, 0x18, 0xa9, 0x36, 0xfc, 0x66, - 0x2d, 0x22, 0x41, 0x79, 0x92, 0x69, 0xec, 0x6c, 0x26, 0xe6, 0x05, 0x0c, 0xab, 0x52, 0xf4, 0x37, - 0x60, 0x3c, 0xec, 0x24, 0x8c, 0xb5, 0xd0, 0x79, 0x8a, 0xcb, 0xc7, 0x59, 0x75, 0x16, 0x3c, 0xb4, - 0xaa, 0x17, 0x60, 0xb3, 0x1e, 0x65, 0xf1, 0x8d, 0x30, 0x66, 0xa9, 0x7d, 0x18, 0x8b, 0x3f, 0x6d, - 0xb2, 0xf8, 0x4b, 0x5a, 0x19, 0x36, 0x6a, 0xa2, 0xaf, 0x3a, 0x70, 0xbc, 0x95, 0x55, 0xe0, 0xca, - 0x67, 0xd8, 0xcc, 0x54, 0x6c, 0x08, 0xfa, 0x19, 0xd4, 0x3c, 0xec, 0xbb, 0x0b, 0x8c, 0xbb, 0x3b, - 0xc1, 0x92, 0x6c, 0xc5, 0x3b, 0x41, 0xb5, 0x11, 0x85, 0x81, 0xd9, 0xbd, 0xfb, 0x6d, 0x5d, 0x2d, - 0x63, 0x7b, 0x3b, 0x8f, 0xc4, 0xdc, 0xfd, 0xb7, 0x76, 0xa7, 0x4f, 0xe5, 0x16, 0xe1, 0xfc, 0x4e, - 0x4d, 0x2d, 0xc0, 0xe9, 0x7c, 0xfe, 0x70, 0x27, 0x8d, 0x63, 0x40, 0xd7, 0x38, 0x16, 0xe1, 0xfe, - 0x9e, 0x9d, 0xa2, 0x27, 0x8d, 0x94, 0x36, 0x1d, 0xf3, 0xa4, 0xe9, 0x92, 0x0e, 0x27, 0x60, 0x4c, - 0x7f, 0xff, 0xc1, 0xfd, 0xbf, 0x03, 0x00, 0xa9, 0x9d, 0x1c, 0x79, 0x30, 0xc1, 0x6d, 0xf2, 0x97, - 0x17, 0x0e, 0x7c, 0x29, 0x7e, 0xde, 0x40, 0x80, 0x33, 0x08, 0x51, 0x0b, 0x10, 0x87, 0xf0, 0xdf, - 0x07, 0xf1, 0xad, 0x32, 0x57, 0xe4, 0x7c, 0x17, 0x12, 0x9c, 0x83, 0x98, 0x8e, 0x28, 0x09, 0xb7, - 0x48, 0x70, 0x0d, 0x5f, 0x39, 0x48, 0x66, 0x05, 0xee, 0x8d, 0x33, 0x10, 0xe0, 0x0c, 0x42, 0xe4, - 0xc2, 0x10, 0xb3, 0xcd, 0xc8, 0x00, 0x6d, 0xc6, 0x5e, 0x98, 0xa4, 0x11, 0x63, 0x51, 0x82, 0xbe, - 0xec, 0xc0, 0x84, 0x4c, 0x10, 0xc1, 0xac, 0xa1, 0x32, 0x34, 0xfb, 0x9a, 0x2d, 0x3f, 0xc7, 0x45, - 0x1d, 0x7b, 0x1a, 0xf8, 0x68, 0x80, 0x63, 0x9c, 0xe9, 0x84, 0xfb, 0x3c, 0x9c, 0xc8, 0x69, 0x6e, - 0x45, 0xa3, 0xfd, 0x8e, 0x03, 0xa3, 0x5a, 0xde, 0x42, 0xf4, 0x1a, 0x94, 0xc2, 0x8a, 0xf5, 0x68, - 0xbb, 0xd5, 0x4a, 0x57, 0xb4, 0x9d, 0x02, 0xe1, 0x94, 0x60, 0x3f, 0x41, 0x82, 0xb9, 0x49, 0x16, - 0xef, 0x71, 0xb7, 0xf7, 0x1d, 0x24, 0xf8, 0xab, 0x45, 0x48, 0x31, 0xed, 0x33, 0x71, 0x49, 0x1a, - 0x52, 0x58, 0xd8, 0x33, 0xa4, 0xb0, 0x06, 0xc7, 0x3c, 0xe6, 0x4b, 0x3e, 0x60, 0xba, 0x12, 0x9e, - 0xb6, 0xd6, 0xc4, 0x80, 0xb3, 0x28, 0x29, 0x95, 0x38, 0x6d, 0xca, 0xa8, 0x0c, 0xee, 0x9b, 0x4a, - 0xc5, 0xc4, 0x80, 0xb3, 0x28, 0xd1, 0x8b, 0x50, 0xae, 0xb2, 0xeb, 0xb7, 0x7c, 0x8c, 0x97, 0x37, - 0xaf, 0x86, 0xc9, 0x5a, 0x44, 0x62, 0x12, 0x24, 0x22, 0x31, 0xd9, 0x43, 0x62, 0x16, 0xca, 0xf3, - 0x3d, 0xea, 0xe1, 0x9e, 0x18, 0xa8, 0x9a, 0xc2, 0x9c, 0xd1, 0x7e, 0xb2, 0xc3, 0x98, 0x88, 0xf0, - 0xd2, 0x2b, 0x35, 0xa5, 0xa2, 0x17, 0x62, 0xb3, 0x2e, 0xfa, 0x15, 0x07, 0xc6, 0x9b, 0xd2, 0x5c, - 0x8f, 0x3b, 0x4d, 0x99, 0x65, 0x13, 0x5b, 0x59, 0x7e, 0x57, 0x74, 0xcc, 0x5c, 0x96, 0x30, 0x40, - 0xd8, 0xa4, 0x9d, 0xcd, 0x1d, 0x33, 0xd2, 0x67, 0xee, 0x98, 0xef, 0x3b, 0x30, 0x99, 0xa5, 0x86, - 0xb6, 0xe0, 0xc1, 0x96, 0x17, 0x6d, 0x5d, 0x0e, 0x36, 0x23, 0x76, 0x11, 0x23, 0xe1, 0x8b, 0x61, - 0x76, 0x33, 0x21, 0xd1, 0x82, 0xb7, 0xc3, 0xdd, 0x9f, 0x45, 0xf5, 0x4c, 0xd3, 0x83, 0x2b, 0x7b, - 0x55, 0xc6, 0x7b, 0xe3, 0x42, 0x15, 0x38, 0x45, 0x2b, 0xb0, 0xd4, 0x72, 0x7e, 0x18, 0xa4, 0x44, - 0x0a, 0x8c, 0x88, 0x0a, 0x06, 0x5c, 0xc9, 0xab, 0x84, 0xf3, 0xdb, 0xba, 0x17, 0x61, 0x88, 0xdf, - 0x8b, 0xbb, 0x2b, 0xff, 0x91, 0xfb, 0x1f, 0x0a, 0x20, 0x05, 0xc3, 0xbf, 0xda, 0xee, 0x38, 0x7a, - 0x88, 0x46, 0xcc, 0xa4, 0x24, 0xac, 0x1d, 0xec, 0x10, 0x15, 0x49, 0x1c, 0x45, 0x09, 0x95, 0x98, - 0xc9, 0x4d, 0x3f, 0x99, 0x0f, 0x6b, 0xd2, 0xc6, 0xc1, 0x24, 0xe6, 0x8b, 0x02, 0x86, 0x55, 0xa9, - 0xfb, 0x49, 0x07, 0xc6, 0xe9, 0x28, 0x9b, 0x4d, 0xd2, 0xac, 0x24, 0xa4, 0x1d, 0xa3, 0x18, 0x8a, - 0x31, 0xfd, 0xc7, 0x9e, 0x29, 0x30, 0xbd, 0x4b, 0x49, 0xda, 0x9a, 0xb3, 0x86, 0x12, 0xc1, 0x9c, - 0x96, 0xfb, 0xe6, 0x00, 0x94, 0xd4, 0x64, 0xf7, 0x61, 0x4f, 0xbd, 0x90, 0xe6, 0x57, 0xe5, 0x1c, - 0xb8, 0xac, 0xe5, 0x56, 0xbd, 0x4d, 0xa7, 0x2e, 0xd8, 0xe1, 0x89, 0x26, 0xd2, 0x44, 0xab, 0x4f, - 0x98, 0xae, 0xe6, 0xd3, 0xfa, 0xfa, 0xd3, 0xea, 0x0b, 0x9f, 0xf3, 0x4d, 0xdd, 0xd3, 0x3f, 0x68, - 0xeb, 0x34, 0x53, 0x6e, 0xcc, 0xde, 0x2e, 0xfe, 0xcc, 0xd3, 0x3b, 0xc5, 0xbe, 0x9e, 0xde, 0x79, - 0x1c, 0x06, 0x49, 0xd0, 0x69, 0x31, 0x51, 0xa9, 0xc4, 0x54, 0x84, 0xc1, 0x8b, 0x41, 0xa7, 0x65, - 0x8e, 0x8c, 0x55, 0x41, 0xef, 0x87, 0xd1, 0x1a, 0x89, 0xab, 0x91, 0xcf, 0xb2, 0x27, 0x08, 0xcb, - 0xce, 0x03, 0xcc, 0x5c, 0x96, 0x82, 0xcd, 0x86, 0x7a, 0x03, 0xf7, 0x15, 0x18, 0x5a, 0x6b, 0x76, - 0xea, 0x7e, 0x80, 0xda, 0x30, 0xc4, 0x73, 0x29, 0x88, 0xd3, 0xde, 0x82, 0xde, 0xc9, 0x59, 0x85, - 0x16, 0x85, 0xc2, 0xaf, 0xd4, 0x0a, 0x3a, 0xee, 0xef, 0x14, 0x80, 0xaa, 0xe6, 0x4b, 0xf3, 0xe8, - 0x6f, 0x77, 0xbd, 0x34, 0xf3, 0x73, 0x39, 0x2f, 0xcd, 0x8c, 0xb3, 0xca, 0x39, 0x8f, 0xcc, 0x34, - 0x61, 0x9c, 0x39, 0x47, 0xe4, 0x19, 0x28, 0xc4, 0xea, 0xa7, 0xfa, 0x4c, 0x3f, 0xa0, 0x37, 0x15, - 0x27, 0x82, 0x0e, 0xc2, 0x26, 0x72, 0xb4, 0x03, 0x27, 0x78, 0x9a, 0xce, 0x05, 0xd2, 0xf4, 0x76, - 0x8c, 0x74, 0x5c, 0x7d, 0xa7, 0x3c, 0x90, 0xad, 0x78, 0x80, 0xf7, 0x42, 0x37, 0x3a, 0x9c, 0x47, - 0xc3, 0xfd, 0x83, 0x41, 0xd0, 0xdc, 0x17, 0x7d, 0xec, 0xac, 0x97, 0x33, 0xce, 0xaa, 0x15, 0x2b, - 0xce, 0x2a, 0xe9, 0x01, 0xe2, 0xdc, 0xca, 0xf4, 0x4f, 0xd1, 0x4e, 0x35, 0x48, 0xb3, 0x2d, 0xf6, - 0xa5, 0xea, 0xd4, 0x25, 0xd2, 0x6c, 0x63, 0x56, 0xa2, 0x2e, 0x1f, 0x0e, 0xf6, 0xbc, 0x7c, 0xd8, - 0x80, 0x62, 0xdd, 0xeb, 0xd4, 0x89, 0x88, 0xd6, 0xb4, 0xe0, 0x97, 0x64, 0xd7, 0x21, 0xb8, 0x5f, - 0x92, 0xfd, 0x8b, 0x39, 0x01, 0xca, 0x18, 0x1a, 0x32, 0x7c, 0x45, 0x18, 0x74, 0x2d, 0x30, 0x06, - 0x15, 0x11, 0xc3, 0x19, 0x83, 0xfa, 0x89, 0x53, 0x62, 0xa8, 0x0d, 0xc3, 0x55, 0x9e, 0x30, 0x45, - 0xc8, 0x37, 0x97, 0x6d, 0xdc, 0xae, 0x64, 0x08, 0xb9, 0xe5, 0x45, 0xfc, 0xc0, 0x92, 0x8c, 0x7b, - 0x1e, 0x46, 0xb5, 0xc7, 0x31, 0xe8, 0x67, 0x50, 0xb9, 0x3a, 0xb4, 0xcf, 0xb0, 0xe0, 0x25, 0x1e, - 0x66, 0x25, 0xee, 0x37, 0x07, 0x41, 0xd9, 0xdd, 0xf4, 0xbb, 0x80, 0x5e, 0x55, 0xcb, 0x2c, 0x64, - 0xdc, 0x8b, 0x0f, 0x03, 0x2c, 0x4a, 0xa9, 0x0c, 0xd8, 0x22, 0x51, 0x5d, 0xe9, 0xdc, 0x82, 0xb5, - 0x2b, 0x19, 0x70, 0x45, 0x2f, 0xc4, 0x66, 0x5d, 0x2a, 0xc0, 0xb7, 0x84, 0x3b, 0x3f, 0x1b, 0x2c, - 0x2d, 0xdd, 0xfc, 0x58, 0xd5, 0x60, 0xa9, 0x09, 0x5a, 0x9a, 0xf7, 0x5f, 0x04, 0x6d, 0xda, 0x70, - 0x3e, 0x69, 0x58, 0x79, 0x70, 0x95, 0x0e, 0xc1, 0x06, 0x55, 0xb4, 0x04, 0xc7, 0x63, 0x92, 0xac, - 0xde, 0x08, 0x48, 0xa4, 0xd2, 0x06, 0x88, 0xdc, 0x17, 0xea, 0xa6, 0x44, 0x25, 0x5b, 0x01, 0x77, - 0xb7, 0xc9, 0x8d, 0x73, 0x2d, 0xee, 0x3b, 0xce, 0x75, 0x01, 0x26, 0x37, 0x3d, 0xbf, 0xd9, 0x89, - 0x48, 0xcf, 0x68, 0xd9, 0xc5, 0x4c, 0x39, 0xee, 0x6a, 0xc1, 0x2e, 0xeb, 0x34, 0xbd, 0x7a, 0x5c, - 0x1e, 0xd6, 0x2e, 0xeb, 0x50, 0x00, 0xe6, 0x70, 0xf7, 0xb7, 0x1c, 0xe0, 0x49, 0x87, 0x66, 0x37, - 0x37, 0xfd, 0xc0, 0x4f, 0x76, 0xd0, 0xd7, 0x1c, 0x98, 0x0c, 0xc2, 0x1a, 0x99, 0x0d, 0x12, 0x5f, - 0x02, 0xed, 0x65, 0x82, 0x67, 0xb4, 0xae, 0x66, 0xd0, 0xf3, 0x0c, 0x16, 0x59, 0x28, 0xee, 0xea, - 0x06, 0xbb, 0xd9, 0xca, 0x30, 0x88, 0xa8, 0xfa, 0x25, 0x66, 0x2c, 0x4f, 0xbc, 0x28, 0x49, 0x93, - 0x80, 0x08, 0xaf, 0xe1, 0xfd, 0x9a, 0x1d, 0xdb, 0xac, 0x80, 0xbb, 0xdb, 0x50, 0x44, 0xcc, 0x84, - 0xeb, 0x93, 0x66, 0xcd, 0x38, 0x87, 0x4a, 0x29, 0xa2, 0xab, 0xd9, 0x0a, 0xb8, 0xbb, 0x0d, 0x9a, - 0x31, 0xe4, 0xe1, 0x01, 0x36, 0xeb, 0x13, 0xbd, 0xc5, 0x57, 0xf7, 0x0c, 0x9c, 0xca, 0x9d, 0x12, - 0xf7, 0xfb, 0x03, 0x60, 0x66, 0x83, 0x42, 0xcf, 0x42, 0xb1, 0xc9, 0xf2, 0x93, 0x38, 0x07, 0x4c, - 0xf3, 0xc5, 0xbe, 0x3e, 0x4f, 0x60, 0xc2, 0x31, 0xa1, 0x05, 0x18, 0x65, 0x29, 0xa6, 0x44, 0xf6, - 0x98, 0x82, 0x91, 0xb8, 0x81, 0xcf, 0xb4, 0xca, 0x1b, 0xa3, 0xff, 0xc4, 0x7a, 0x33, 0xf4, 0x2a, - 0x0c, 0x6f, 0xf0, 0x44, 0x9b, 0xf6, 0x3c, 0x9e, 0x22, 0x73, 0x27, 0x93, 0x0c, 0x65, 0x1a, 0xcf, - 0xdb, 0xe9, 0xbf, 0x58, 0x52, 0x44, 0x3b, 0x30, 0xe2, 0xc9, 0x55, 0x3a, 0x68, 0xeb, 0x3a, 0x89, - 0xb1, 0x23, 0x44, 0xbc, 0x90, 0x5c, 0x95, 0x8a, 0x5c, 0x26, 0xb0, 0xaa, 0xd8, 0x57, 0x60, 0xd5, - 0xb7, 0x1d, 0x80, 0xf4, 0x55, 0x12, 0x74, 0x13, 0x46, 0xe2, 0xa7, 0x0c, 0x33, 0x8d, 0x8d, 0x3c, - 0x02, 0x02, 0xa3, 0x76, 0xd7, 0x56, 0x40, 0xb0, 0xa2, 0x76, 0x27, 0xd3, 0xd2, 0xcf, 0x1c, 0x38, - 0x99, 0xf7, 0x7a, 0xca, 0x3d, 0xec, 0xf1, 0x7e, 0xad, 0x4a, 0xa2, 0xc1, 0x5a, 0x44, 0x36, 0xfd, - 0x9b, 0x39, 0xe9, 0x9e, 0x79, 0x01, 0x4e, 0xeb, 0xb8, 0x6f, 0x0c, 0x83, 0x22, 0x7c, 0x48, 0x56, - 0xa8, 0x47, 0xa9, 0xc6, 0x58, 0x4f, 0xaf, 0x7f, 0xaa, 0x7a, 0x98, 0x41, 0xb1, 0x28, 0xa5, 0x5a, - 0xa3, 0xbc, 0x12, 0x20, 0x0e, 0x21, 0xb6, 0x0a, 0xe5, 0xd5, 0x01, 0xac, 0x4a, 0xf3, 0xec, 0x5a, - 0xc5, 0x23, 0xb1, 0x6b, 0x0d, 0xd9, 0xb7, 0x6b, 0x3d, 0x0e, 0xc3, 0x51, 0xd8, 0x24, 0xb3, 0xf8, - 0xaa, 0xd0, 0x85, 0xd2, 0x90, 0x0e, 0x0e, 0xc6, 0xb2, 0xfc, 0x80, 0x96, 0x1d, 0xf4, 0xbb, 0xce, - 0x1e, 0xa6, 0xb3, 0x92, 0xad, 0x53, 0x2e, 0x37, 0x37, 0x1e, 0x53, 0xec, 0x0e, 0x62, 0x8f, 0xfb, - 0xba, 0x03, 0xc7, 0x49, 0x50, 0x8d, 0x76, 0x18, 0x1e, 0x81, 0x4d, 0x78, 0xdc, 0xaf, 0xd9, 0xd8, - 0x7c, 0x17, 0xb3, 0xc8, 0xb9, 0x63, 0xab, 0x0b, 0x8c, 0xbb, 0xbb, 0x81, 0x56, 0x61, 0xa4, 0xea, - 0x89, 0x15, 0x31, 0xba, 0x9f, 0x15, 0xc1, 0xfd, 0x86, 0xb3, 0x62, 0x29, 0x28, 0x24, 0xee, 0x4f, - 0x0a, 0x70, 0x22, 0xa7, 0x4b, 0xec, 0xfa, 0x58, 0x8b, 0xae, 0xc8, 0xcb, 0xb5, 0xec, 0x7e, 0x5c, - 0x16, 0x70, 0xac, 0x6a, 0xa0, 0x35, 0x38, 0xb9, 0xd5, 0x8a, 0x53, 0x2c, 0xf3, 0x61, 0x90, 0x90, - 0x9b, 0x72, 0x77, 0x4a, 0x6f, 0xfc, 0xc9, 0xe5, 0x9c, 0x3a, 0x38, 0xb7, 0x25, 0x15, 0xc8, 0x48, - 0xe0, 0x6d, 0x34, 0x49, 0x5a, 0x24, 0x2e, 0x3f, 0x2a, 0x81, 0xec, 0x62, 0xa6, 0x1c, 0x77, 0xb5, - 0x40, 0x9f, 0x75, 0xe0, 0x6c, 0x4c, 0xa2, 0x6d, 0x12, 0x55, 0xfc, 0x1a, 0x99, 0xef, 0xc4, 0x49, - 0xd8, 0x22, 0xd1, 0x01, 0x8d, 0xc5, 0xd3, 0xb7, 0x76, 0xa7, 0xcf, 0x56, 0x7a, 0x63, 0xc3, 0x7b, - 0x91, 0x72, 0x3f, 0xeb, 0xc0, 0x44, 0x85, 0x99, 0x12, 0x94, 0x76, 0x60, 0x3b, 0x3b, 0xea, 0xa3, - 0x2a, 0x5d, 0x47, 0x86, 0x2b, 0x9a, 0x09, 0x36, 0xdc, 0x97, 0x60, 0xb2, 0x42, 0x5a, 0x5e, 0xbb, - 0xc1, 0x6e, 0x2e, 0xf3, 0x68, 0xb4, 0xf3, 0x50, 0x8a, 0x25, 0x2c, 0xfb, 0x20, 0x92, 0xaa, 0x8c, - 0xd3, 0x3a, 0xe8, 0x11, 0x1e, 0x39, 0x27, 0xef, 0x3f, 0x95, 0xb8, 0x1e, 0xc5, 0xc3, 0xed, 0x62, - 0x2c, 0xcb, 0xdc, 0x37, 0x1d, 0x18, 0x4b, 0xdb, 0x93, 0x4d, 0x54, 0x87, 0x63, 0x55, 0xed, 0xee, - 0x60, 0x7a, 0x6b, 0xa3, 0xff, 0x6b, 0x86, 0x3c, 0x69, 0xb3, 0x89, 0x04, 0x67, 0xb1, 0xee, 0x3f, - 0xf0, 0xf0, 0x0b, 0x05, 0x38, 0xa6, 0xba, 0x2a, 0xdc, 0xa6, 0xaf, 0x67, 0xe3, 0x03, 0xb1, 0x8d, - 0xc4, 0x43, 0xe6, 0xdc, 0xef, 0x11, 0x23, 0xf8, 0x7a, 0x36, 0x46, 0xf0, 0x50, 0xc9, 0x77, 0x79, - 0x82, 0xbf, 0x5d, 0x80, 0x11, 0x95, 0x06, 0xe9, 0x59, 0x28, 0x32, 0xe5, 0xf8, 0xee, 0x04, 0x62, - 0xa6, 0x68, 0x63, 0x8e, 0x89, 0xa2, 0x64, 0xaa, 0xc1, 0x81, 0x53, 0xe9, 0x96, 0xb8, 0x39, 0xd5, - 0x8b, 0x12, 0xcc, 0x31, 0xa1, 0x65, 0x18, 0x20, 0x41, 0x4d, 0x48, 0xc6, 0xfb, 0x47, 0xc8, 0x9e, - 0x2e, 0xbb, 0x18, 0xd4, 0x30, 0xc5, 0xc2, 0x72, 0xb1, 0x71, 0x01, 0x28, 0xf3, 0x50, 0x8d, 0x90, - 0x7e, 0x44, 0xa9, 0xfb, 0x01, 0x30, 0xb2, 0xf0, 0x89, 0xec, 0xfe, 0x42, 0x8d, 0xec, 0x7e, 0x5d, - 0x4c, 0xe8, 0x8f, 0x69, 0x1d, 0xf7, 0x57, 0x06, 0x60, 0xa8, 0xd2, 0xd9, 0xa0, 0x4a, 0xc2, 0xb7, - 0x1c, 0x38, 0x71, 0x23, 0x93, 0xa8, 0x3a, 0xdd, 0x24, 0xd7, 0xec, 0xd9, 0xa4, 0xf5, 0x40, 0xba, - 0xb3, 0xf2, 0x19, 0xff, 0x9c, 0x42, 0x9c, 0xd7, 0x1d, 0x23, 0x57, 0xec, 0xc0, 0xa1, 0xe4, 0x8a, - 0xbd, 0x79, 0xc8, 0x37, 0x49, 0xc6, 0x7b, 0xdd, 0x22, 0x71, 0xff, 0xa0, 0x08, 0xc0, 0xbf, 0xc6, - 0x6a, 0x3b, 0xe9, 0xc7, 0x72, 0xf8, 0x34, 0x8c, 0xd5, 0x49, 0x40, 0x22, 0x19, 0x26, 0x99, 0x79, - 0x44, 0x69, 0x49, 0x2b, 0xc3, 0x46, 0x4d, 0xa6, 0xd4, 0x04, 0x49, 0xb4, 0xc3, 0x05, 0xdf, 0xec, - 0x6d, 0x11, 0x55, 0x82, 0xb5, 0x5a, 0x19, 0xa5, 0xb7, 0x78, 0x27, 0xa5, 0x17, 0xbd, 0x1f, 0x26, - 0xcc, 0xd4, 0x2b, 0x42, 0xda, 0x53, 0xfe, 0x7f, 0x33, 0x63, 0x0b, 0xce, 0xd4, 0xa6, 0xbb, 0xa0, - 0x16, 0xed, 0xe0, 0x4e, 0x20, 0xc4, 0x3e, 0xb5, 0x0b, 0x16, 0x18, 0x14, 0x8b, 0x52, 0x96, 0xb3, - 0x82, 0x1d, 0x80, 0x1c, 0x2e, 0xf2, 0x5e, 0xa4, 0x39, 0x2b, 0xb4, 0x32, 0x6c, 0xd4, 0xa4, 0x14, - 0x84, 0xe5, 0x15, 0xcc, 0x7d, 0x96, 0x31, 0x97, 0xb6, 0x61, 0x22, 0x34, 0x2d, 0x46, 0x5c, 0x06, - 0x7a, 0x77, 0x9f, 0x4b, 0xcf, 0x68, 0xcb, 0xe3, 0x36, 0x32, 0x06, 0xa6, 0x0c, 0x7e, 0x2a, 0xf7, - 0xea, 0x97, 0x2a, 0xc6, 0xcc, 0x28, 0xdb, 0x9e, 0xf7, 0x1e, 0xd6, 0xe0, 0x64, 0x3b, 0xac, 0xad, - 0x45, 0x7e, 0x18, 0xf9, 0xc9, 0xce, 0x7c, 0xd3, 0x8b, 0x63, 0xb6, 0x30, 0xc6, 0x4d, 0x79, 0x68, - 0x2d, 0xa7, 0x0e, 0xce, 0x6d, 0x49, 0x35, 0x94, 0xb6, 0x00, 0xb2, 0x58, 0xb7, 0x22, 0x97, 0xe8, - 0x64, 0x45, 0xac, 0x4a, 0xdd, 0x13, 0x70, 0xbc, 0xd2, 0x69, 0xb7, 0x9b, 0x3e, 0xa9, 0x29, 0x27, - 0x8b, 0xfb, 0x01, 0x38, 0x26, 0x32, 0xc9, 0x2a, 0xe9, 0x63, 0x5f, 0x79, 0xcf, 0xdd, 0x3f, 0x77, - 0xe0, 0x58, 0x26, 0xb2, 0x08, 0xbd, 0x9a, 0x95, 0x19, 0xec, 0x64, 0x38, 0xd5, 0xa4, 0x05, 0x91, - 0xae, 0x34, 0x4f, 0xfe, 0x68, 0xc8, 0x6b, 0x01, 0xd6, 0xae, 0xe3, 0xb0, 0xe0, 0x79, 0x7e, 0xa4, - 0xe8, 0x77, 0x0b, 0xdc, 0xcf, 0x14, 0x20, 0x3f, 0x9c, 0x0b, 0x7d, 0xac, 0x7b, 0x02, 0x9e, 0xb5, - 0x38, 0x01, 0x22, 0x9e, 0xac, 0xf7, 0x1c, 0x04, 0xe6, 0x1c, 0xac, 0x58, 0x9a, 0x03, 0x41, 0xb7, - 0x7b, 0x26, 0xfe, 0x97, 0x03, 0xa3, 0xeb, 0xeb, 0x57, 0xd4, 0x39, 0x87, 0xe1, 0x74, 0xcc, 0xd3, - 0x0d, 0x30, 0xaf, 0xf7, 0x7c, 0xd8, 0x6a, 0x73, 0x27, 0xb8, 0x70, 0xce, 0xb3, 0xa4, 0xbe, 0x95, - 0xdc, 0x1a, 0xb8, 0x47, 0x4b, 0x74, 0x19, 0x4e, 0xe8, 0x25, 0x15, 0xed, 0x0d, 0xc5, 0xa2, 0x48, - 0xf1, 0xd3, 0x5d, 0x8c, 0xf3, 0xda, 0x64, 0x51, 0x09, 0x03, 0x2e, 0x3b, 0xae, 0x72, 0x50, 0x89, - 0x62, 0x9c, 0xd7, 0xc6, 0x5d, 0x85, 0xd1, 0x75, 0x2f, 0x52, 0x03, 0xff, 0x20, 0x4c, 0x56, 0xc3, - 0x96, 0x34, 0x33, 0x5d, 0x21, 0xdb, 0xa4, 0x29, 0x86, 0xcc, 0x1f, 0x2e, 0xc9, 0x94, 0xe1, 0xae, - 0xda, 0xee, 0x7f, 0x3f, 0x07, 0xea, 0xfa, 0x64, 0x1f, 0x27, 0x4c, 0x5b, 0x05, 0xba, 0x16, 0x2d, - 0x07, 0xba, 0x2a, 0x5e, 0x9b, 0x09, 0x76, 0x4d, 0xd2, 0x60, 0xd7, 0x21, 0xdb, 0xc1, 0xae, 0x4a, - 0xe2, 0xec, 0x0a, 0x78, 0xfd, 0x8a, 0x03, 0x63, 0x41, 0x58, 0x23, 0xca, 0x2a, 0x3c, 0xcc, 0xc4, - 0xde, 0x17, 0xed, 0xdd, 0x1b, 0xe0, 0x81, 0x9b, 0x02, 0x3d, 0x0f, 0xc2, 0x56, 0x47, 0x94, 0x5e, - 0x84, 0x8d, 0x7e, 0xa0, 0x45, 0xcd, 0xf0, 0xc9, 0x3d, 0x26, 0x0f, 0xe4, 0xe9, 0x2b, 0x77, 0xb4, - 0x62, 0xde, 0xd4, 0xe4, 0xa6, 0x92, 0x2d, 0x83, 0x9e, 0xbc, 0x13, 0xa7, 0x39, 0x7e, 0x64, 0x5e, - 0xea, 0x54, 0x9e, 0x72, 0x61, 0x88, 0x47, 0x6b, 0x8b, 0x64, 0x52, 0xcc, 0x1f, 0xc9, 0x23, 0xb9, - 0xb1, 0x28, 0x41, 0x89, 0x8c, 0x80, 0x18, 0xb5, 0xf5, 0xca, 0x84, 0x11, 0x61, 0x91, 0x1f, 0x02, - 0x81, 0x9e, 0xd1, 0xf5, 0xe0, 0xb1, 0x7e, 0xf4, 0xe0, 0xf1, 0x9e, 0x3a, 0xf0, 0xe7, 0x1d, 0x18, - 0xab, 0x6a, 0xaf, 0x3e, 0x94, 0x1f, 0xb3, 0xf5, 0xba, 0x75, 0xde, 0xe3, 0x1c, 0xdc, 0xcd, 0x65, - 0xbc, 0x32, 0x61, 0x50, 0x67, 0x19, 0x34, 0x99, 0xd2, 0xcf, 0x8e, 0x7e, 0x2b, 0x49, 0x33, 0x4c, - 0x23, 0x82, 0x8c, 0x24, 0xa5, 0x30, 0x2c, 0x68, 0xa1, 0xd7, 0x60, 0x44, 0x06, 0xfc, 0x8b, 0xc0, - 0x78, 0x6c, 0xc3, 0x4a, 0x6f, 0x3a, 0x37, 0x65, 0xda, 0x3d, 0x0e, 0xc5, 0x8a, 0x22, 0x6a, 0xc0, - 0x40, 0xcd, 0xab, 0x8b, 0x10, 0xf9, 0x15, 0x3b, 0x69, 0x4d, 0x25, 0x4d, 0xa6, 0x9f, 0x2d, 0xcc, - 0x2e, 0x61, 0x4a, 0x02, 0xdd, 0x4c, 0xd3, 0xe6, 0x4f, 0x5a, 0x3b, 0x7d, 0x4d, 0x31, 0x89, 0x9b, - 0x35, 0xba, 0xb2, 0xf0, 0xd7, 0x84, 0x3f, 0xf8, 0xaf, 0x31, 0xb2, 0x8b, 0x76, 0xf2, 0xa2, 0xf2, - 0x24, 0x2c, 0xa9, 0x4f, 0x99, 0x52, 0x69, 0x24, 0x49, 0xbb, 0xfc, 0xf3, 0xb6, 0xa8, 0xb0, 0x54, - 0x22, 0xfc, 0x21, 0xf2, 0xf5, 0xf5, 0x35, 0xcc, 0xb0, 0xa3, 0x26, 0x0c, 0xb5, 0x59, 0x58, 0x4b, - 0xf9, 0x9d, 0xb6, 0xce, 0x16, 0x1e, 0x26, 0xc3, 0xd7, 0x26, 0xff, 0x1f, 0x0b, 0x1a, 0xe8, 0x22, - 0x0c, 0xf3, 0xd7, 0x5f, 0xf8, 0x15, 0x85, 0xd1, 0x0b, 0x53, 0xbd, 0xdf, 0x90, 0x49, 0x0f, 0x0a, - 0xfe, 0x3b, 0xc6, 0xb2, 0x2d, 0xfa, 0x82, 0x03, 0x13, 0x94, 0xa3, 0xa6, 0xcf, 0xd5, 0x94, 0x91, - 0x2d, 0x9e, 0x75, 0x2d, 0xa6, 0x12, 0x89, 0xe4, 0x35, 0x4a, 0x4d, 0xba, 0x6c, 0x90, 0xc3, 0x19, - 0xf2, 0xe8, 0x75, 0x18, 0x89, 0xfd, 0x1a, 0xa9, 0x7a, 0x51, 0x5c, 0x3e, 0x71, 0x38, 0x5d, 0x49, - 0xfd, 0x35, 0x82, 0x10, 0x56, 0x24, 0xd1, 0xaf, 0xb3, 0xf7, 0x42, 0xc5, 0xdb, 0xfe, 0x55, 0x2e, - 0xd6, 0x9f, 0xb4, 0xb5, 0xf7, 0xa5, 0x67, 0x4a, 0x62, 0x16, 0x6e, 0x0c, 0x93, 0x1c, 0xce, 0xd2, - 0x47, 0x7f, 0xc7, 0x81, 0x53, 0x3c, 0xf3, 0x7f, 0xf6, 0xa9, 0x8a, 0x53, 0x07, 0xb4, 0xcf, 0xb0, - 0xbb, 0x15, 0xb3, 0x79, 0x28, 0x71, 0x3e, 0x25, 0x96, 0xa7, 0xd7, 0x7c, 0x5d, 0xe8, 0xb4, 0x55, - 0xbf, 0x65, 0xff, 0x2f, 0x0a, 0xa1, 0x27, 0x61, 0xb4, 0x2d, 0x8e, 0x43, 0x3f, 0x6e, 0xb1, 0x9b, - 0x32, 0x03, 0xfc, 0x0e, 0xe3, 0x5a, 0x0a, 0xc6, 0x7a, 0x1d, 0x23, 0x69, 0xf3, 0xe3, 0x7b, 0x25, - 0x6d, 0x46, 0xd7, 0x60, 0x34, 0x09, 0x9b, 0x22, 0x6f, 0x69, 0x5c, 0x2e, 0xb3, 0x15, 0x78, 0x2e, - 0x6f, 0x6f, 0xad, 0xab, 0x6a, 0xa9, 0x26, 0x9b, 0xc2, 0x62, 0xac, 0xe3, 0x61, 0xd1, 0xc9, 0xe2, - 0x45, 0x85, 0x88, 0xa9, 0xb0, 0xf7, 0x67, 0xa2, 0x93, 0xf5, 0x42, 0x6c, 0xd6, 0x45, 0x4b, 0x70, - 0xbc, 0xdd, 0xa5, 0x03, 0x4f, 0x99, 0x7e, 0xfe, 0x6e, 0x05, 0xb8, 0xbb, 0x8d, 0xa1, 0xfd, 0x9e, - 0xdd, 0x4b, 0xfb, 0xed, 0x91, 0xc2, 0xf8, 0x81, 0x83, 0xa4, 0x30, 0x46, 0x35, 0x78, 0xc0, 0xeb, - 0x24, 0x21, 0x4b, 0x97, 0x63, 0x36, 0xe1, 0x81, 0xda, 0x0f, 0xf1, 0xd8, 0xef, 0x5b, 0xbb, 0xd3, - 0x0f, 0xcc, 0xee, 0x51, 0x0f, 0xef, 0x89, 0x05, 0xbd, 0x02, 0x23, 0x44, 0xa4, 0x61, 0x2e, 0xff, - 0x9c, 0x2d, 0x21, 0xc1, 0x4c, 0xec, 0x2c, 0x63, 0x60, 0x39, 0x0c, 0x2b, 0x7a, 0x68, 0x1d, 0x46, - 0x1b, 0x61, 0x9c, 0xcc, 0x36, 0x7d, 0x2f, 0x26, 0x71, 0xf9, 0x41, 0xb6, 0x68, 0x72, 0x65, 0xaf, - 0x4b, 0xb2, 0x5a, 0xba, 0x66, 0x2e, 0xa5, 0x2d, 0xb1, 0x8e, 0x06, 0x11, 0xe6, 0xbd, 0x64, 0x51, - 0xea, 0xd2, 0x11, 0x74, 0x8e, 0x0d, 0xec, 0xd1, 0x3c, 0xcc, 0x6b, 0x61, 0xad, 0x62, 0xd6, 0x56, - 0xee, 0x4b, 0x1d, 0x88, 0xb3, 0x38, 0xd1, 0xd3, 0x30, 0xd6, 0x0e, 0x6b, 0x95, 0x36, 0xa9, 0xae, - 0x79, 0x49, 0xb5, 0x51, 0x9e, 0x36, 0xad, 0x6e, 0x6b, 0x5a, 0x19, 0x36, 0x6a, 0xa2, 0x36, 0x0c, - 0xb7, 0x78, 0x1e, 0x85, 0xf2, 0xc3, 0xb6, 0x74, 0x1b, 0x91, 0x98, 0x81, 0xcb, 0x0b, 0xe2, 0x07, - 0x96, 0x64, 0xd0, 0x3f, 0x76, 0xe0, 0x58, 0xe6, 0xee, 0x57, 0xf9, 0x1d, 0xd6, 0x44, 0x16, 0x13, - 0xf1, 0xdc, 0xa3, 0x6c, 0xfa, 0x4c, 0xe0, 0xed, 0x6e, 0x10, 0xce, 0xf6, 0x88, 0xcf, 0x0b, 0x4b, - 0x86, 0x52, 0x7e, 0xc4, 0xde, 0xbc, 0x30, 0x84, 0x72, 0x5e, 0xd8, 0x0f, 0x2c, 0xc9, 0xa0, 0xc7, - 0x61, 0x58, 0xe4, 0x2d, 0x2c, 0x3f, 0x6a, 0xba, 0xa0, 0x45, 0x7a, 0x43, 0x2c, 0xcb, 0xa7, 0x3e, - 0x00, 0xc7, 0xbb, 0x54, 0xb7, 0x7d, 0x65, 0xe4, 0xf8, 0x4d, 0x07, 0xf4, 0xcb, 0xe2, 0xd6, 0xdf, - 0x3e, 0x79, 0x1a, 0xc6, 0xaa, 0xfc, 0xa1, 0x49, 0x7e, 0xdd, 0x7c, 0xd0, 0xb4, 0x7f, 0xce, 0x6b, - 0x65, 0xd8, 0xa8, 0xe9, 0x5e, 0x02, 0xd4, 0x9d, 0x98, 0xfe, 0x40, 0xe9, 0x9e, 0xfe, 0xa9, 0x03, - 0xe3, 0x86, 0xcc, 0x60, 0xdd, 0xc9, 0xb8, 0x08, 0xa8, 0xe5, 0x47, 0x51, 0x18, 0xe9, 0x2f, 0xfa, - 0x89, 0x94, 0x10, 0xec, 0xd2, 0xdd, 0x4a, 0x57, 0x29, 0xce, 0x69, 0xe1, 0xfe, 0xce, 0x20, 0xa4, - 0x41, 0xe0, 0x2a, 0xf3, 0xaf, 0xd3, 0x33, 0xf3, 0xef, 0x13, 0x30, 0xf2, 0x52, 0x1c, 0x06, 0x6b, - 0x69, 0x7e, 0x60, 0xf5, 0x2d, 0x9e, 0xa9, 0xac, 0x5e, 0x65, 0x35, 0x55, 0x0d, 0x56, 0xfb, 0xe5, - 0x45, 0xbf, 0x99, 0x74, 0x27, 0x90, 0x7d, 0xe6, 0x59, 0x0e, 0xc7, 0xaa, 0x06, 0x7b, 0xdc, 0x6f, - 0x9b, 0x28, 0xc3, 0x78, 0xfa, 0xb8, 0x1f, 0x7f, 0x73, 0x82, 0x95, 0xa1, 0xf3, 0x50, 0x52, 0x46, - 0x75, 0x61, 0xa9, 0x57, 0x33, 0xa5, 0x2c, 0xef, 0x38, 0xad, 0xc3, 0x04, 0x42, 0x61, 0x88, 0x15, - 0x26, 0x94, 0x8a, 0x0d, 0xf5, 0x24, 0x63, 0xda, 0xe5, 0xbc, 0x5d, 0x82, 0xb1, 0x22, 0x99, 0xe7, - 0x68, 0x2d, 0x1d, 0x8a, 0xa3, 0x55, 0xbb, 0x91, 0x50, 0xec, 0xf7, 0x46, 0x82, 0xb9, 0xb6, 0x47, - 0xfa, 0x5a, 0xdb, 0x9f, 0x1a, 0x80, 0xe1, 0xe7, 0x48, 0xc4, 0xf2, 0xa6, 0x3f, 0x0e, 0xc3, 0xdb, - 0xfc, 0xdf, 0xec, 0x75, 0x56, 0x51, 0x03, 0xcb, 0x72, 0xfa, 0xdd, 0x36, 0x3a, 0x7e, 0xb3, 0xb6, - 0x90, 0xee, 0xe2, 0x34, 0xe5, 0xa2, 0x2c, 0xc0, 0x69, 0x1d, 0xda, 0xa0, 0x4e, 0x25, 0xfb, 0x56, - 0xcb, 0xef, 0x7a, 0xb7, 0x7e, 0x49, 0x16, 0xe0, 0xb4, 0x0e, 0x7a, 0x14, 0x86, 0xea, 0x7e, 0xb2, - 0xee, 0xd5, 0xb3, 0x6e, 0xc2, 0x25, 0x06, 0xc5, 0xa2, 0x94, 0xb9, 0x89, 0xfc, 0x64, 0x3d, 0x22, - 0xcc, 0xb2, 0xdb, 0x95, 0x4d, 0x63, 0x49, 0x2b, 0xc3, 0x46, 0x4d, 0xd6, 0xa5, 0x50, 0x8c, 0x4c, - 0xc4, 0xa5, 0xa6, 0x5d, 0x92, 0x05, 0x38, 0xad, 0x43, 0xd7, 0x7f, 0x35, 0x6c, 0xb5, 0xfd, 0xa6, - 0x88, 0x98, 0xd6, 0xd6, 0xff, 0xbc, 0x80, 0x63, 0x55, 0x83, 0xd6, 0xa6, 0x2c, 0x8c, 0xb2, 0x9f, - 0xec, 0x43, 0x6a, 0x6b, 0x02, 0x8e, 0x55, 0x0d, 0xf7, 0x39, 0x18, 0xe7, 0x3b, 0x79, 0xbe, 0xe9, - 0xf9, 0xad, 0xa5, 0x79, 0x74, 0xb1, 0xeb, 0x46, 0xc2, 0xe3, 0x39, 0x37, 0x12, 0x4e, 0x19, 0x8d, - 0xba, 0x6f, 0x26, 0xb8, 0x3f, 0x2c, 0xc0, 0xc8, 0x11, 0xbe, 0x45, 0x79, 0xe4, 0xcf, 0x2a, 0xa3, - 0x9b, 0x99, 0x77, 0x28, 0xd7, 0x6c, 0x5e, 0x30, 0xda, 0xf3, 0x0d, 0xca, 0xff, 0x5a, 0x80, 0xd3, - 0xb2, 0xaa, 0xd4, 0xe5, 0x96, 0xe6, 0xd9, 0x0b, 0x60, 0x87, 0x3f, 0xd1, 0x91, 0x31, 0xd1, 0x6b, - 0xf6, 0xb4, 0xd1, 0xa5, 0xf9, 0x9e, 0x53, 0xfd, 0x4a, 0x66, 0xaa, 0xb1, 0x55, 0xaa, 0x7b, 0x4f, - 0xf6, 0x5f, 0x38, 0x30, 0x95, 0x3f, 0xd9, 0x47, 0xf0, 0xf4, 0xe7, 0xeb, 0xe6, 0xd3, 0x9f, 0xbf, - 0x68, 0x6f, 0x89, 0x99, 0x43, 0xe9, 0xf1, 0x08, 0xe8, 0x9f, 0x39, 0x70, 0x52, 0x36, 0x60, 0xa7, - 0xe7, 0x9c, 0x1f, 0xb0, 0x48, 0x96, 0xc3, 0x5f, 0x66, 0xaf, 0x19, 0xcb, 0xec, 0x05, 0x7b, 0x03, - 0xd7, 0xc7, 0xd1, 0xf3, 0xc9, 0xf4, 0x3f, 0x75, 0xa0, 0x9c, 0xd7, 0xe0, 0x08, 0x3e, 0xf9, 0xab, - 0xe6, 0x27, 0x7f, 0xee, 0x70, 0x46, 0xde, 0xfb, 0x83, 0x97, 0x7b, 0x4d, 0x14, 0x6a, 0x4a, 0xb9, - 0xca, 0xb1, 0xe5, 0xa3, 0xe5, 0x24, 0xf2, 0x05, 0xb4, 0x26, 0x0c, 0xc5, 0x2c, 0x6a, 0x43, 0x2c, - 0x81, 0x4b, 0x36, 0xa4, 0x2d, 0x8a, 0x4f, 0xd8, 0xd8, 0xd9, 0xff, 0x58, 0xd0, 0x70, 0x7f, 0xab, - 0x00, 0x67, 0xd4, 0x93, 0xbe, 0x64, 0x9b, 0x34, 0xd3, 0xfd, 0xc1, 0x5e, 0x99, 0xf0, 0xd4, 0x4f, - 0x7b, 0xaf, 0x4c, 0xa4, 0x24, 0xd2, 0xbd, 0x90, 0xc2, 0xb0, 0x46, 0x13, 0x55, 0xe0, 0x14, 0x7b, - 0x15, 0x62, 0xd1, 0x0f, 0xbc, 0xa6, 0xff, 0x0a, 0x89, 0x30, 0x69, 0x85, 0xdb, 0x5e, 0x53, 0x48, - 0xea, 0xea, 0x46, 0xf3, 0x62, 0x5e, 0x25, 0x9c, 0xdf, 0xb6, 0x4b, 0xe3, 0x1e, 0xe8, 0x57, 0xe3, - 0x76, 0xff, 0xc4, 0x81, 0xb1, 0x23, 0x7c, 0x00, 0x39, 0x34, 0xb7, 0xc4, 0x33, 0xf6, 0xb6, 0x44, - 0x8f, 0x6d, 0xb0, 0x5b, 0x84, 0xae, 0x37, 0x61, 0xd1, 0xa7, 0x1d, 0x15, 0xd7, 0xc2, 0x83, 0x07, - 0x3f, 0x6c, 0xaf, 0x1f, 0xfb, 0x49, 0x83, 0x89, 0xbe, 0x9e, 0xc9, 0x0d, 0x5a, 0xb0, 0x95, 0xe0, - 0xaa, 0xab, 0x37, 0x07, 0xc8, 0x11, 0xfa, 0x15, 0x07, 0x80, 0xf7, 0x53, 0xa4, 0x16, 0xa7, 0x7d, - 0xdb, 0x38, 0xb4, 0x99, 0xa2, 0x44, 0x78, 0xd7, 0xd4, 0x16, 0x4a, 0x0b, 0xb0, 0xd6, 0x93, 0xbb, - 0x48, 0xfe, 0x79, 0xd7, 0x79, 0x47, 0xbf, 0xe0, 0xc0, 0xb1, 0x4c, 0x77, 0x73, 0xda, 0x6f, 0x9a, - 0x8f, 0x1c, 0x5a, 0x90, 0xac, 0xcc, 0x84, 0xd3, 0xba, 0xf1, 0xe4, 0x47, 0x0f, 0x83, 0xf1, 0x98, - 0x36, 0x7a, 0x15, 0x4a, 0xd2, 0xf2, 0x21, 0x97, 0xb7, 0xcd, 0xc7, 0x5e, 0x95, 0x7a, 0x23, 0x21, - 0x31, 0x4e, 0xe9, 0x65, 0xc2, 0xe6, 0x0a, 0x7d, 0x85, 0xcd, 0xdd, 0xdb, 0xa7, 0x62, 0xf3, 0xed, - 0xd2, 0x83, 0x87, 0x62, 0x97, 0x7e, 0xc0, 0xba, 0x5d, 0xfa, 0xc1, 0x23, 0xb6, 0x4b, 0x6b, 0x4e, - 0xc2, 0xe2, 0x5d, 0x38, 0x09, 0x5f, 0x85, 0x93, 0xdb, 0xa9, 0xd2, 0xa9, 0x56, 0x92, 0x48, 0xab, - 0xf4, 0x78, 0xae, 0x35, 0x9a, 0x2a, 0xd0, 0x71, 0x42, 0x82, 0x44, 0x53, 0x57, 0xd3, 0x88, 0xbd, - 0xe7, 0x72, 0xd0, 0xe1, 0x5c, 0x22, 0x59, 0x6f, 0xcf, 0x70, 0x1f, 0xde, 0x9e, 0x37, 0x1d, 0x38, - 0xe5, 0x75, 0x5d, 0x02, 0xc3, 0x64, 0x53, 0x84, 0x9c, 0x5c, 0xb7, 0x27, 0x42, 0x18, 0xe8, 0x85, - 0x5b, 0x2d, 0xaf, 0x08, 0xe7, 0x77, 0x08, 0x3d, 0x92, 0xba, 0xde, 0x79, 0x9c, 0x67, 0xbe, 0x9f, - 0xfc, 0xeb, 0xd9, 0x78, 0x1e, 0x60, 0x53, 0xff, 0x51, 0xbb, 0xda, 0xb6, 0x85, 0x98, 0x9e, 0xd1, - 0xbb, 0x88, 0xe9, 0xc9, 0xb8, 0xde, 0xc6, 0x2c, 0xb9, 0xde, 0x02, 0x98, 0xf4, 0x5b, 0x5e, 0x9d, - 0xac, 0x75, 0x9a, 0x4d, 0x7e, 0x89, 0x44, 0x3e, 0xc7, 0x9b, 0x6b, 0xc1, 0xbb, 0x12, 0x56, 0xbd, - 0x66, 0xf6, 0x21, 0x76, 0x75, 0x59, 0xe6, 0x72, 0x06, 0x13, 0xee, 0xc2, 0x4d, 0x17, 0x2c, 0xcb, - 0xef, 0x47, 0x12, 0x3a, 0xdb, 0x2c, 0x70, 0x64, 0x84, 0x2f, 0xd8, 0x4b, 0x29, 0x18, 0xeb, 0x75, - 0xd0, 0x32, 0x94, 0x6a, 0x41, 0x2c, 0xee, 0xb3, 0x1e, 0x63, 0xcc, 0xec, 0x5d, 0x94, 0x05, 0x2e, - 0x5c, 0xad, 0xa8, 0x9b, 0xac, 0x0f, 0xe4, 0x24, 0xac, 0x54, 0xe5, 0x38, 0x6d, 0x8f, 0x56, 0x18, - 0x32, 0xf1, 0x56, 0x19, 0x8f, 0xe7, 0x78, 0xa8, 0x87, 0xc3, 0x68, 0xe1, 0xaa, 0x7c, 0x6d, 0x6d, - 0x5c, 0x90, 0x13, 0x8f, 0x8e, 0xa5, 0x18, 0xb4, 0x67, 0x91, 0x8f, 0xef, 0xf9, 0x2c, 0x32, 0xcb, - 0x54, 0x9b, 0x34, 0x95, 0x7b, 0xf8, 0x9c, 0xb5, 0x4c, 0xb5, 0x69, 0xa4, 0xa4, 0xc8, 0x54, 0x9b, - 0x02, 0xb0, 0x4e, 0x12, 0xad, 0xf6, 0x72, 0x93, 0x9f, 0x60, 0x4c, 0x63, 0xff, 0x4e, 0x6f, 0xdd, - 0x5f, 0x7a, 0x72, 0x4f, 0x7f, 0x69, 0x97, 0x7f, 0xf7, 0xd4, 0x3e, 0xfc, 0xbb, 0x0d, 0x96, 0x43, - 0x74, 0x69, 0x5e, 0xb8, 0xd4, 0x2d, 0xe8, 0x77, 0x2c, 0x6b, 0x09, 0x8f, 0x3c, 0x65, 0xff, 0x62, - 0x4e, 0xa0, 0x67, 0x40, 0xf5, 0x99, 0x03, 0x07, 0x54, 0x53, 0xf6, 0x9c, 0xc2, 0x59, 0x32, 0xda, - 0xa2, 0x60, 0xcf, 0x29, 0x18, 0xeb, 0x75, 0xb2, 0xde, 0xd2, 0xfb, 0x0f, 0xcd, 0x5b, 0x3a, 0x75, - 0x04, 0xde, 0xd2, 0xb3, 0x7d, 0x7b, 0x4b, 0x6f, 0xc2, 0x89, 0x76, 0x58, 0x5b, 0xf0, 0xe3, 0xa8, - 0xc3, 0x6e, 0xd5, 0xcd, 0x75, 0x6a, 0x75, 0x92, 0x30, 0x77, 0xeb, 0xe8, 0x85, 0x77, 0xe9, 0x9d, - 0x6c, 0xb3, 0x8d, 0x2c, 0xf7, 0x68, 0xa6, 0x01, 0x33, 0x9d, 0xb0, 0xa8, 0xdb, 0x9c, 0x42, 0x9c, - 0x47, 0x42, 0xf7, 0xd3, 0x3e, 0x74, 0x34, 0x7e, 0xda, 0x0f, 0xc2, 0x48, 0xdc, 0xe8, 0x24, 0xb5, - 0xf0, 0x46, 0xc0, 0x9c, 0xf1, 0xa5, 0xb9, 0x77, 0x28, 0x53, 0xb6, 0x80, 0xdf, 0xde, 0x9d, 0x9e, - 0x94, 0xff, 0x6b, 0x56, 0x6c, 0x01, 0x41, 0xdf, 0xe8, 0x71, 0x7f, 0xc7, 0x3d, 0xcc, 0xfb, 0x3b, - 0x67, 0xf6, 0x75, 0x77, 0x27, 0xcf, 0x19, 0xfd, 0xf0, 0xdb, 0xce, 0x19, 0xfd, 0x35, 0x07, 0xc6, - 0xb7, 0x75, 0x97, 0x81, 0x70, 0x98, 0x5b, 0x08, 0xdc, 0x31, 0x3c, 0x11, 0x73, 0x2e, 0xe5, 0x73, - 0x06, 0xe8, 0x76, 0x16, 0x80, 0xcd, 0x9e, 0xe4, 0x04, 0x15, 0x3d, 0x72, 0xaf, 0x82, 0x8a, 0x5e, - 0x67, 0x7c, 0x4c, 0x2a, 0xb9, 0xcc, 0x8b, 0x6e, 0x37, 0xa6, 0x58, 0xf2, 0x44, 0x15, 0x52, 0xac, - 0xd3, 0x43, 0x9f, 0x77, 0x60, 0x52, 0xea, 0x65, 0xc2, 0xe5, 0x17, 0x8b, 0xa8, 0x48, 0x9b, 0xea, - 0x20, 0x0b, 0xab, 0x5f, 0xcf, 0xd0, 0xc1, 0x5d, 0x94, 0x29, 0x57, 0x57, 0x41, 0x68, 0xf5, 0x98, - 0x05, 0xff, 0x0a, 0x19, 0x66, 0x36, 0x05, 0x63, 0xbd, 0x0e, 0xfa, 0xa6, 0x03, 0xc5, 0x46, 0x18, - 0x6e, 0xc5, 0xe5, 0xc7, 0x19, 0x43, 0x7f, 0xde, 0xb2, 0x6c, 0x7a, 0x89, 0xe2, 0xe6, 0x42, 0xe9, - 0x93, 0xd2, 0x76, 0xc4, 0x60, 0xb7, 0x77, 0xa7, 0x27, 0x8c, 0xa7, 0x96, 0xe2, 0x37, 0xde, 0xd2, - 0x20, 0xc2, 0xb6, 0xc9, 0xba, 0x86, 0xbe, 0xe4, 0xc0, 0xe4, 0x8d, 0x8c, 0x41, 0x43, 0x84, 0x85, - 0x62, 0xfb, 0xa6, 0x12, 0x3e, 0xdd, 0x59, 0x28, 0xee, 0xea, 0x01, 0xfa, 0x9c, 0x69, 0xe8, 0xe4, - 0xf1, 0xa3, 0x16, 0x27, 0x30, 0x63, 0x58, 0xe5, 0xd7, 0xdc, 0x7a, 0x58, 0x3c, 0x03, 0x28, 0xb2, - 0x9d, 0x51, 0x7e, 0xc2, 0x96, 0x00, 0xa7, 0xe5, 0xbe, 0xe1, 0x22, 0x09, 0x03, 0x60, 0x4e, 0xe6, - 0xae, 0xe3, 0x51, 0xa6, 0xe8, 0xe4, 0xa5, 0x8b, 0x23, 0xa7, 0x29, 0x31, 0xed, 0x3b, 0x16, 0x98, - 0x8b, 0xb1, 0xdc, 0x74, 0xf3, 0xce, 0xbf, 0x3e, 0x0d, 0x13, 0xa6, 0x2f, 0x11, 0xbd, 0xdb, 0x7c, - 0xb6, 0xe3, 0x5c, 0xf6, 0x05, 0x84, 0x71, 0x59, 0xdf, 0x78, 0x05, 0xc1, 0x78, 0xa6, 0xa0, 0x70, - 0xa8, 0xcf, 0x14, 0x0c, 0x1c, 0xcd, 0x33, 0x05, 0x93, 0x87, 0xf1, 0x4c, 0xc1, 0xf1, 0x7d, 0x3d, - 0x53, 0xa0, 0x3d, 0x13, 0x31, 0x78, 0x87, 0x67, 0x22, 0x66, 0xe1, 0x98, 0xbc, 0x6b, 0x44, 0x44, - 0x26, 0x78, 0x1e, 0x66, 0x70, 0x46, 0x34, 0x39, 0x36, 0x6f, 0x16, 0xe3, 0x6c, 0x7d, 0xba, 0xa9, - 0x8b, 0x01, 0x6b, 0x39, 0x64, 0xeb, 0x0d, 0x29, 0x73, 0x69, 0x31, 0x75, 0x5d, 0xb0, 0x44, 0x19, - 0x5d, 0x5d, 0x64, 0xb0, 0xdb, 0xf2, 0x1f, 0xcc, 0x7b, 0x80, 0x5e, 0x84, 0x72, 0xb8, 0xb9, 0xd9, - 0x0c, 0xbd, 0x5a, 0xfa, 0x96, 0x82, 0x8c, 0x83, 0xe0, 0x77, 0x45, 0x55, 0xea, 0xdd, 0xd5, 0x1e, - 0xf5, 0x70, 0x4f, 0x0c, 0xe8, 0x4d, 0x2a, 0x08, 0x25, 0x61, 0x44, 0x6a, 0xa9, 0x6d, 0xa8, 0xc4, - 0xc6, 0x4c, 0xac, 0x8f, 0xb9, 0x62, 0xd2, 0xe1, 0xa3, 0x57, 0x1f, 0x25, 0x53, 0x8a, 0xb3, 0xdd, - 0x42, 0x11, 0x9c, 0x6e, 0xe7, 0x99, 0xa6, 0x62, 0x71, 0x43, 0x6a, 0x2f, 0x03, 0x99, 0xdc, 0xba, - 0xa7, 0x73, 0x8d, 0x5b, 0x31, 0xee, 0x81, 0x59, 0x7f, 0xef, 0x60, 0xe4, 0x68, 0xde, 0x3b, 0xf8, - 0x38, 0x80, 0xba, 0x14, 0x2f, 0x8d, 0x1d, 0xcb, 0x56, 0xae, 0xee, 0x70, 0x9c, 0xda, 0x13, 0xb3, - 0x8a, 0x0c, 0xd6, 0x48, 0xa2, 0xff, 0x93, 0xfb, 0x20, 0x08, 0xb7, 0xe8, 0xd4, 0xad, 0xaf, 0x89, - 0xb7, 0xdd, 0xa3, 0x20, 0xff, 0xc4, 0x81, 0x29, 0xbe, 0xf2, 0xb2, 0xca, 0x04, 0x15, 0x65, 0xc4, - 0x5d, 0x22, 0xdb, 0xa1, 0x32, 0x2c, 0x6a, 0xb0, 0x62, 0x50, 0x65, 0x8e, 0xf5, 0x3d, 0x7a, 0x82, - 0xbe, 0x92, 0xa3, 0xc2, 0x1c, 0xb3, 0x65, 0x23, 0xcd, 0x7f, 0xd6, 0xe1, 0xc4, 0xad, 0x7e, 0xb4, - 0x96, 0x7f, 0xd6, 0xd3, 0x84, 0x8b, 0x58, 0xf7, 0x7e, 0xe9, 0x90, 0x4c, 0xb8, 0xfa, 0xdb, 0x13, - 0xfb, 0x32, 0xe4, 0x7e, 0xc1, 0x81, 0x49, 0x2f, 0x13, 0xda, 0xc2, 0xec, 0x4e, 0x56, 0x44, 0xa8, - 0xd9, 0x28, 0x8d, 0x97, 0x61, 0x42, 0x65, 0x36, 0x8a, 0x06, 0x77, 0x11, 0x47, 0x3f, 0x74, 0xe0, - 0x6c, 0xe2, 0xc5, 0x5b, 0x3c, 0xb3, 0x73, 0x9c, 0xde, 0x0d, 0x16, 0x9d, 0x3b, 0xc9, 0x76, 0xe3, - 0xcb, 0xd6, 0x77, 0xe3, 0x7a, 0x6f, 0x9a, 0x7c, 0x5f, 0x3e, 0x2c, 0xf6, 0xe5, 0xd9, 0x3d, 0x6a, - 0xe2, 0xbd, 0xba, 0x4e, 0xd5, 0x13, 0xa1, 0xbd, 0xb1, 0x91, 0x9c, 0x4a, 0xd5, 0x13, 0x9c, 0x82, - 0xb1, 0x5e, 0x67, 0xea, 0xd3, 0x0e, 0x7f, 0x34, 0xac, 0xa7, 0x94, 0xb8, 0x61, 0x4a, 0x89, 0x57, - 0x6c, 0x3e, 0x5b, 0xa4, 0x8b, 0xab, 0xbf, 0xe6, 0xc0, 0xc9, 0xbc, 0x43, 0x2c, 0xa7, 0x4b, 0x1f, - 0x35, 0xbb, 0x64, 0x51, 0x11, 0xd4, 0x3b, 0x64, 0xe5, 0xd5, 0x94, 0xa9, 0xab, 0xf0, 0xd0, 0x9d, - 0x3e, 0xfc, 0x9d, 0xf0, 0x8d, 0xe8, 0x92, 0xf4, 0x9f, 0x96, 0x34, 0x47, 0x69, 0x42, 0xda, 0xd6, - 0xc3, 0xcc, 0x03, 0x18, 0xf2, 0x83, 0xa6, 0x1f, 0x10, 0x71, 0xa5, 0xd4, 0xa6, 0x9a, 0x2d, 0x5e, - 0x3d, 0xa2, 0xd8, 0xb1, 0xa0, 0x72, 0x8f, 0xfd, 0xa6, 0xd9, 0x77, 0xe4, 0x06, 0x8f, 0xfe, 0x1d, - 0xb9, 0x1b, 0x50, 0xba, 0xe1, 0x27, 0x0d, 0x16, 0xef, 0x21, 0xdc, 0x91, 0x16, 0xae, 0x62, 0x52, - 0x74, 0xe9, 0xd8, 0xaf, 0x4b, 0x02, 0x38, 0xa5, 0x85, 0xce, 0x73, 0xc2, 0x2c, 0xb8, 0x3c, 0x1b, - 0xf5, 0x7b, 0x5d, 0x16, 0xe0, 0xb4, 0x0e, 0x9d, 0xac, 0x31, 0xfa, 0x4b, 0xe6, 0x6c, 0x12, 0xc9, - 0x92, 0x6d, 0xa4, 0x8c, 0x14, 0x18, 0xf9, 0x85, 0xe7, 0xeb, 0x1a, 0x0d, 0x6c, 0x50, 0x54, 0xf9, - 0xaa, 0x47, 0x7a, 0xe6, 0xab, 0x7e, 0x8d, 0xc9, 0x78, 0x89, 0x1f, 0x74, 0xc8, 0x6a, 0x20, 0x42, - 0xd2, 0xaf, 0xd8, 0xb9, 0x9e, 0xcd, 0x71, 0x72, 0x2b, 0x41, 0xfa, 0x1b, 0x6b, 0xf4, 0x34, 0xaf, - 0xd0, 0xe8, 0x9e, 0x5e, 0xa1, 0xd4, 0x2a, 0x34, 0x66, 0xdd, 0x2a, 0x94, 0x90, 0xb6, 0x15, 0xab, - 0xd0, 0xdb, 0xca, 0x82, 0xf0, 0x17, 0x0e, 0x20, 0x25, 0xaa, 0x29, 0x86, 0x7a, 0x04, 0x71, 0x9f, - 0x9f, 0x70, 0x00, 0x02, 0xf5, 0xda, 0xa8, 0xdd, 0x53, 0x90, 0xe3, 0x4c, 0x3b, 0x90, 0xc2, 0xb0, - 0x46, 0xd3, 0xfd, 0x1f, 0x4e, 0x1a, 0x5e, 0x9d, 0x8e, 0xfd, 0x08, 0xe2, 0xdc, 0x76, 0xcc, 0x38, - 0xb7, 0x75, 0x8b, 0xde, 0x05, 0x35, 0x8c, 0x1e, 0x11, 0x6f, 0x3f, 0x2d, 0xc0, 0x31, 0xbd, 0x72, - 0x85, 0x1c, 0xc5, 0xc7, 0xbe, 0x61, 0x04, 0xf9, 0x5e, 0xb3, 0x3b, 0xde, 0x8a, 0x70, 0x52, 0xe5, - 0x05, 0x94, 0x7f, 0x3c, 0x13, 0x50, 0x7e, 0xdd, 0x3e, 0xe9, 0xbd, 0xa3, 0xca, 0xff, 0x9b, 0x03, - 0x27, 0x32, 0x2d, 0x8e, 0x60, 0x81, 0x6d, 0x9b, 0x0b, 0xec, 0x59, 0xeb, 0xa3, 0xee, 0xb1, 0xba, - 0xbe, 0x55, 0xe8, 0x1a, 0x2d, 0xd3, 0xfb, 0x3e, 0xe5, 0x40, 0x91, 0x0a, 0xd8, 0x32, 0xe4, 0xec, - 0xa3, 0x87, 0xb2, 0x02, 0x98, 0x2a, 0x20, 0xb8, 0xb3, 0xea, 0x1f, 0x83, 0x61, 0x4e, 0x7d, 0xea, - 0x93, 0x0e, 0x40, 0x5a, 0xe9, 0x5e, 0x89, 0xc0, 0xee, 0x77, 0x0a, 0x70, 0x2a, 0x77, 0x19, 0xa1, - 0xcf, 0x28, 0x23, 0x9e, 0x63, 0x3b, 0xa0, 0xd2, 0x20, 0xa4, 0xdb, 0xf2, 0xc6, 0x0d, 0x5b, 0x9e, - 0x30, 0xe1, 0xdd, 0x2b, 0x05, 0x46, 0xb0, 0x69, 0x6d, 0xb2, 0x7e, 0xe2, 0xa4, 0x31, 0xba, 0x2a, - 0xf5, 0xd2, 0x5f, 0xc2, 0x7b, 0x46, 0xee, 0x4f, 0xb5, 0x4b, 0x18, 0x72, 0xa0, 0x47, 0xc0, 0x2b, - 0x6e, 0x98, 0xbc, 0x02, 0xdb, 0x77, 0x75, 0xf7, 0x60, 0x16, 0x2f, 0x43, 0x9e, 0xef, 0xbb, 0xbf, - 0xbc, 0x8d, 0xc6, 0x8d, 0xdd, 0x42, 0xdf, 0x37, 0x76, 0xc7, 0x61, 0xf4, 0x05, 0x5f, 0x25, 0xfc, - 0x9c, 0x9b, 0xf9, 0xee, 0x8f, 0xcf, 0xdd, 0xf7, 0xbd, 0x1f, 0x9f, 0xbb, 0xef, 0x87, 0x3f, 0x3e, - 0x77, 0xdf, 0x27, 0x6e, 0x9d, 0x73, 0xbe, 0x7b, 0xeb, 0x9c, 0xf3, 0xbd, 0x5b, 0xe7, 0x9c, 0x1f, - 0xde, 0x3a, 0xe7, 0xfc, 0xc7, 0x5b, 0xe7, 0x9c, 0xbf, 0xf7, 0x9f, 0xce, 0xdd, 0xf7, 0xc2, 0x88, - 0x1c, 0xd8, 0xff, 0x0f, 0x00, 0x00, 0xff, 0xff, 0xc7, 0x3c, 0x95, 0x10, 0x57, 0xd8, 0x00, 0x00, + 0x79, 0x18, 0x67, 0x81, 0x05, 0xb0, 0xdf, 0x02, 0x38, 0x5c, 0xdf, 0x6b, 0x09, 0x92, 0x07, 0x7a, + 0x28, 0x32, 0xa4, 0x4d, 0xe1, 0xcc, 0xa3, 0x94, 0x30, 0x52, 0x22, 0x09, 0x8f, 0x03, 0xee, 0x88, + 0xc3, 0x01, 0xec, 0xc5, 0xf1, 0x4c, 0x8a, 0x96, 0x34, 0xd8, 0x6d, 0xec, 0x0e, 0xb1, 0x3b, 0xb3, + 0x9c, 0x99, 0xc5, 0x1d, 0xf8, 0x90, 0x14, 0x5a, 0xcf, 0x58, 0xb6, 0x62, 0x59, 0x92, 0x25, 0x25, + 0xa9, 0x52, 0x14, 0x29, 0x61, 0xc9, 0xae, 0xb8, 0xec, 0x5f, 0x29, 0xbb, 0xf2, 0x27, 0x95, 0x72, + 0x29, 0xe5, 0x54, 0x45, 0xae, 0x28, 0x25, 0xfd, 0xb0, 0xc1, 0xe8, 0x92, 0xe8, 0x47, 0x12, 0x55, + 0x25, 0xaa, 0xd8, 0xb1, 0x2f, 0x8f, 0x4a, 0xf5, 0x73, 0xba, 0x67, 0x67, 0x71, 0x8b, 0xbb, 0x06, + 0x4e, 0x65, 0xff, 0x02, 0xf6, 0xeb, 0xee, 0xef, 0xeb, 0xee, 0xe9, 0xfe, 0xfa, 0x7b, 0xf5, 0xd7, + 0xb0, 0xde, 0xf0, 0x93, 0x66, 0x77, 0x73, 0xb6, 0x16, 0xb6, 0xcf, 0x79, 0x51, 0x23, 0xec, 0x44, + 0xe1, 0xcb, 0xec, 0x9f, 0x77, 0x5e, 0x0f, 0xa3, 0xed, 0xad, 0x56, 0x78, 0x3d, 0x3e, 0xb7, 0xf3, + 0xf4, 0xb9, 0xce, 0x76, 0xe3, 0x9c, 0xd7, 0xf1, 0xe3, 0x73, 0x12, 0x7a, 0x6e, 0xe7, 0x29, 0xaf, + 0xd5, 0x69, 0x7a, 0x4f, 0x9d, 0x6b, 0x90, 0x80, 0x44, 0x5e, 0x42, 0xea, 0xb3, 0x9d, 0x28, 0x4c, + 0x42, 0xf4, 0x81, 0x14, 0xe3, 0xac, 0xc4, 0xc8, 0xfe, 0xf9, 0xb0, 0xc2, 0x38, 0xbb, 0xf3, 0xf4, + 0x6c, 0x67, 0xbb, 0x31, 0x4b, 0x31, 0xce, 0x4a, 0xe8, 0xac, 0xc4, 0x38, 0xfd, 0x4e, 0xad, 0x4f, + 0x8d, 0xb0, 0x11, 0x9e, 0x63, 0x88, 0x37, 0xbb, 0x5b, 0xec, 0x17, 0xfb, 0xc1, 0xfe, 0xe3, 0x04, + 0xa7, 0xdd, 0xed, 0x67, 0xe2, 0x59, 0x3f, 0xa4, 0xfd, 0x3b, 0x57, 0x0b, 0x23, 0x72, 0x6e, 0xa7, + 0xa7, 0x53, 0xd3, 0xef, 0xd0, 0xea, 0x74, 0xc2, 0x96, 0x5f, 0xdb, 0xcd, 0xab, 0xf5, 0xae, 0xb4, + 0x56, 0xdb, 0xab, 0x35, 0xfd, 0x80, 0x44, 0xbb, 0xe9, 0xd0, 0xdb, 0x24, 0xf1, 0xf2, 0x5a, 0x9d, + 0xeb, 0xd7, 0x2a, 0xea, 0x06, 0x89, 0xdf, 0x26, 0x3d, 0x0d, 0xfe, 0xfa, 0xed, 0x1a, 0xc4, 0xb5, + 0x26, 0x69, 0x7b, 0x3d, 0xed, 0x9e, 0xee, 0xd7, 0xae, 0x9b, 0xf8, 0xad, 0x73, 0x7e, 0x90, 0xc4, + 0x49, 0x94, 0x6d, 0xe4, 0x5e, 0x80, 0x91, 0xb9, 0x76, 0xd8, 0x0d, 0x12, 0xf4, 0x5e, 0x28, 0xee, + 0x78, 0xad, 0x2e, 0xa9, 0x38, 0x0f, 0x3b, 0x8f, 0x97, 0xe6, 0x1f, 0xfd, 0xce, 0xde, 0xcc, 0x7d, + 0x37, 0xf7, 0x66, 0x8a, 0xcf, 0x53, 0xe0, 0xad, 0xbd, 0x99, 0x93, 0x24, 0xa8, 0x85, 0x75, 0x3f, + 0x68, 0x9c, 0x7b, 0x39, 0x0e, 0x83, 0xd9, 0x2b, 0xdd, 0xf6, 0x26, 0x89, 0x30, 0x6f, 0xe3, 0xfe, + 0xbb, 0x02, 0x1c, 0x9b, 0x8b, 0x6a, 0x4d, 0x7f, 0x87, 0x54, 0x13, 0x8a, 0xbf, 0xb1, 0x8b, 0x9a, + 0x30, 0x94, 0x78, 0x11, 0x43, 0x57, 0x3e, 0xbf, 0x3a, 0x7b, 0xb7, 0xdf, 0x7d, 0x76, 0xc3, 0x8b, + 0x24, 0xee, 0xf9, 0xd1, 0x9b, 0x7b, 0x33, 0x43, 0x1b, 0x5e, 0x84, 0x29, 0x09, 0xd4, 0x82, 0xe1, + 0x20, 0x0c, 0x48, 0xa5, 0xc0, 0x48, 0x5d, 0xb9, 0x7b, 0x52, 0x57, 0xc2, 0x40, 0x8d, 0x63, 0x7e, + 0xec, 0xe6, 0xde, 0xcc, 0x30, 0x85, 0x60, 0x46, 0x85, 0x8e, 0xeb, 0x55, 0xbf, 0x53, 0x19, 0xb2, + 0x35, 0xae, 0x17, 0xfd, 0x8e, 0x39, 0xae, 0x17, 0xfd, 0x0e, 0xa6, 0x24, 0xdc, 0xcf, 0x16, 0xa0, + 0x34, 0x17, 0x35, 0xba, 0x6d, 0x12, 0x24, 0x31, 0xfa, 0x18, 0x40, 0xc7, 0x8b, 0xbc, 0x36, 0x49, + 0x48, 0x14, 0x57, 0x9c, 0x87, 0x87, 0x1e, 0x2f, 0x9f, 0x5f, 0xb9, 0x7b, 0xf2, 0xeb, 0x12, 0xe7, + 0x3c, 0x12, 0x9f, 0x1c, 0x14, 0x28, 0xc6, 0x1a, 0x49, 0xf4, 0x1a, 0x94, 0xbc, 0x28, 0xf1, 0xb7, + 0xbc, 0x5a, 0x12, 0x57, 0x0a, 0x8c, 0xfe, 0xb3, 0x77, 0x4f, 0x7f, 0x4e, 0xa0, 0x9c, 0x3f, 0x2e, + 0xc8, 0x97, 0x24, 0x24, 0xc6, 0x29, 0x3d, 0xf7, 0xf7, 0x86, 0xa1, 0x3c, 0x17, 0x25, 0xcb, 0x0b, + 0xd5, 0xc4, 0x4b, 0xba, 0x31, 0xfa, 0x43, 0x07, 0x4e, 0xc4, 0x7c, 0xda, 0x7c, 0x12, 0xaf, 0x47, + 0x61, 0x8d, 0xc4, 0x31, 0xa9, 0x8b, 0x79, 0xd9, 0xb2, 0xd2, 0x2f, 0x49, 0x6c, 0xb6, 0xda, 0x4b, + 0xe8, 0x42, 0x90, 0x44, 0xbb, 0xf3, 0x4f, 0x89, 0x3e, 0x9f, 0xc8, 0xa9, 0xf1, 0xe6, 0xdb, 0x33, + 0x48, 0x0e, 0x85, 0x62, 0xe2, 0x9f, 0x18, 0xe7, 0xf5, 0x1a, 0x7d, 0xd5, 0x81, 0xf1, 0x4e, 0x58, + 0x8f, 0x31, 0xa9, 0x85, 0xdd, 0x0e, 0xa9, 0x8b, 0xe9, 0xfd, 0xb0, 0xdd, 0x61, 0xac, 0x6b, 0x14, + 0x78, 0xff, 0x4f, 0x8a, 0xfe, 0x8f, 0xeb, 0x45, 0xd8, 0xe8, 0x0a, 0x7a, 0x06, 0xc6, 0x83, 0x30, + 0xa9, 0x76, 0x48, 0xcd, 0xdf, 0xf2, 0x49, 0x9d, 0x2d, 0xfc, 0xb1, 0xb4, 0xe5, 0x15, 0xad, 0x0c, + 0x1b, 0x35, 0xa7, 0x97, 0xa0, 0xd2, 0x6f, 0xe6, 0xd0, 0x14, 0x0c, 0x6d, 0x93, 0x5d, 0xce, 0x6c, + 0x30, 0xfd, 0x17, 0x9d, 0x94, 0x0c, 0x88, 0x6e, 0xe3, 0x31, 0xc1, 0x59, 0xde, 0x53, 0x78, 0xc6, + 0x99, 0x7e, 0x3f, 0x1c, 0xef, 0xe9, 0xfa, 0x41, 0x10, 0xb8, 0xdf, 0x1d, 0x81, 0x31, 0xf9, 0x29, + 0xd0, 0xc3, 0x30, 0x1c, 0x78, 0x6d, 0xc9, 0xe7, 0xc6, 0xc5, 0x38, 0x86, 0xaf, 0x78, 0x6d, 0xba, + 0xc3, 0xbd, 0x36, 0xa1, 0x35, 0x3a, 0x5e, 0xd2, 0x64, 0x78, 0xb4, 0x1a, 0xeb, 0x5e, 0xd2, 0xc4, + 0xac, 0x04, 0x3d, 0x08, 0xc3, 0xed, 0xb0, 0x4e, 0xd8, 0x5c, 0x14, 0x39, 0x87, 0x58, 0x0d, 0xeb, + 0x04, 0x33, 0x28, 0x6d, 0xbf, 0x15, 0x85, 0xed, 0xca, 0xb0, 0xd9, 0x7e, 0x29, 0x0a, 0xdb, 0x98, + 0x95, 0xa0, 0xaf, 0x38, 0x30, 0x25, 0xd7, 0xf6, 0xe5, 0xb0, 0xe6, 0x25, 0x7e, 0x18, 0x54, 0x8a, + 0x8c, 0xa3, 0x60, 0x7b, 0x5b, 0x4a, 0x62, 0x9e, 0xaf, 0x88, 0x2e, 0x4c, 0x65, 0x4b, 0x70, 0x4f, + 0x2f, 0xd0, 0x79, 0x80, 0x46, 0x2b, 0xdc, 0xf4, 0x5a, 0x74, 0x42, 0x2a, 0x23, 0x6c, 0x08, 0x8a, + 0x33, 0x2c, 0xab, 0x12, 0xac, 0xd5, 0x42, 0x37, 0x60, 0xd4, 0xe3, 0xdc, 0xbf, 0x32, 0xca, 0x06, + 0xf1, 0x9c, 0x8d, 0x41, 0x18, 0xc7, 0xc9, 0x7c, 0xf9, 0xe6, 0xde, 0xcc, 0xa8, 0x00, 0x62, 0x49, + 0x0e, 0x3d, 0x09, 0x63, 0x61, 0x87, 0xf6, 0xdb, 0x6b, 0x55, 0xc6, 0xd8, 0xc2, 0x9c, 0x12, 0x7d, + 0x1d, 0x5b, 0x13, 0x70, 0xac, 0x6a, 0xa0, 0x27, 0x60, 0x34, 0xee, 0x6e, 0xd2, 0xef, 0x58, 0x29, + 0xb1, 0x81, 0x1d, 0x13, 0x95, 0x47, 0xab, 0x1c, 0x8c, 0x65, 0x39, 0x7a, 0x37, 0x94, 0x23, 0x52, + 0xeb, 0x46, 0x31, 0xa1, 0x1f, 0xb6, 0x02, 0x0c, 0xf7, 0x09, 0x51, 0xbd, 0x8c, 0xd3, 0x22, 0xac, + 0xd7, 0x43, 0xef, 0x83, 0x49, 0xfa, 0x81, 0x2f, 0xdc, 0xe8, 0x44, 0x24, 0x8e, 0xe9, 0x57, 0x2d, + 0x33, 0x42, 0xa7, 0x45, 0xcb, 0xc9, 0x25, 0xa3, 0x14, 0x67, 0x6a, 0xa3, 0xd7, 0x01, 0x3c, 0xc5, + 0x33, 0x2a, 0xe3, 0x6c, 0x32, 0x2f, 0xdb, 0x5b, 0x11, 0xcb, 0x0b, 0xf3, 0x93, 0xf4, 0x3b, 0xa6, + 0xbf, 0xb1, 0x46, 0x8f, 0xce, 0x4f, 0x9d, 0xb4, 0x48, 0x42, 0xea, 0x95, 0x09, 0x36, 0x60, 0x35, + 0x3f, 0x8b, 0x1c, 0x8c, 0x65, 0xb9, 0xfb, 0xf7, 0x0b, 0xa0, 0x61, 0x41, 0xf3, 0x30, 0x26, 0xf8, + 0x9a, 0xd8, 0x92, 0xf3, 0x8f, 0xc9, 0xef, 0x20, 0xbf, 0xe0, 0xad, 0xbd, 0x5c, 0x7e, 0xa8, 0xda, + 0xa1, 0x37, 0xa0, 0xdc, 0x09, 0xeb, 0xab, 0x24, 0xf1, 0xea, 0x5e, 0xe2, 0x89, 0xd3, 0xdc, 0xc2, + 0x09, 0x23, 0x31, 0xce, 0x1f, 0xa3, 0x9f, 0x6e, 0x3d, 0x25, 0x81, 0x75, 0x7a, 0xe8, 0x59, 0x40, + 0x31, 0x89, 0x76, 0xfc, 0x1a, 0x99, 0xab, 0xd5, 0xa8, 0x48, 0xc4, 0x36, 0xc0, 0x10, 0x1b, 0xcc, + 0xb4, 0x18, 0x0c, 0xaa, 0xf6, 0xd4, 0xc0, 0x39, 0xad, 0xdc, 0xef, 0x15, 0x60, 0x52, 0x1b, 0x6b, + 0x87, 0xd4, 0xd0, 0x5b, 0x0e, 0x1c, 0x53, 0xc7, 0xd9, 0xfc, 0xee, 0x15, 0xba, 0xaa, 0xf8, 0x61, + 0x45, 0x6c, 0x7e, 0x5f, 0x4a, 0x4b, 0xfd, 0x14, 0x74, 0x38, 0xaf, 0x3f, 0x23, 0xc6, 0x70, 0x2c, + 0x53, 0x8a, 0xb3, 0xdd, 0x9a, 0xfe, 0xb2, 0x03, 0x27, 0xf3, 0x50, 0xe4, 0xf0, 0xdc, 0xa6, 0xce, + 0x73, 0xad, 0x32, 0x2f, 0x4a, 0x95, 0x0e, 0x46, 0xe7, 0xe3, 0xff, 0xaf, 0x00, 0x53, 0xfa, 0x12, + 0x62, 0x92, 0xc0, 0xbf, 0x74, 0xe0, 0x94, 0x1c, 0x01, 0x26, 0x71, 0xb7, 0x95, 0x99, 0xde, 0xb6, + 0xd5, 0xe9, 0xe5, 0x27, 0xe9, 0x5c, 0x1e, 0x3d, 0x3e, 0xcd, 0x0f, 0x89, 0x69, 0x3e, 0x95, 0x5b, + 0x07, 0xe7, 0x77, 0x75, 0xfa, 0x9b, 0x0e, 0x4c, 0xf7, 0x47, 0x9a, 0x33, 0xf1, 0x1d, 0x73, 0xe2, + 0x5f, 0xb4, 0x37, 0x48, 0x4e, 0x9e, 0x4d, 0x3f, 0x1b, 0xac, 0xfe, 0x01, 0x7e, 0x6b, 0x0c, 0x7a, + 0xce, 0x10, 0xf4, 0x14, 0x94, 0x05, 0x3b, 0xbe, 0x1c, 0x36, 0x62, 0xd6, 0xc9, 0x31, 0xbe, 0xd7, + 0xe6, 0x52, 0x30, 0xd6, 0xeb, 0xa0, 0x3a, 0x14, 0xe2, 0xa7, 0x45, 0xd7, 0x2d, 0xb0, 0xb7, 0xea, + 0xd3, 0x4a, 0x8a, 0x1c, 0xb9, 0xb9, 0x37, 0x53, 0xa8, 0x3e, 0x8d, 0x0b, 0xf1, 0xd3, 0x54, 0x52, + 0x6f, 0xf8, 0x89, 0x3d, 0x49, 0x7d, 0xd9, 0x4f, 0x14, 0x1d, 0x26, 0xa9, 0x2f, 0xfb, 0x09, 0xa6, + 0x24, 0xa8, 0x06, 0xd2, 0x4c, 0x92, 0x0e, 0x3b, 0xf1, 0xad, 0x68, 0x20, 0x17, 0x37, 0x36, 0xd6, + 0x15, 0x2d, 0x26, 0x5f, 0x50, 0x08, 0x66, 0x54, 0xd0, 0x67, 0x1c, 0x3a, 0xe3, 0xbc, 0x30, 0x8c, + 0x76, 0x85, 0xe0, 0x70, 0xd5, 0xde, 0x12, 0x08, 0xa3, 0x5d, 0x45, 0x5c, 0x7c, 0x48, 0x55, 0x80, + 0x75, 0xd2, 0x6c, 0xe0, 0xf5, 0xad, 0x98, 0xc9, 0x09, 0x76, 0x06, 0xbe, 0xb8, 0x54, 0xcd, 0x0c, + 0x7c, 0x71, 0xa9, 0x8a, 0x19, 0x15, 0xfa, 0x41, 0x23, 0xef, 0xba, 0x90, 0x31, 0x2c, 0x7c, 0x50, + 0xec, 0x5d, 0x37, 0x3f, 0x28, 0xf6, 0xae, 0x63, 0x4a, 0x82, 0x52, 0x0a, 0xe3, 0x98, 0x89, 0x14, + 0x56, 0x28, 0xad, 0x55, 0xab, 0x26, 0xa5, 0xb5, 0x6a, 0x15, 0x53, 0x12, 0x6c, 0x91, 0xd6, 0x62, + 0x26, 0x8f, 0xd8, 0x59, 0xa4, 0x0b, 0x19, 0x4a, 0xcb, 0x0b, 0x55, 0x4c, 0x49, 0x50, 0x96, 0xe1, + 0xbd, 0xda, 0x8d, 0xb8, 0x30, 0x53, 0x3e, 0xbf, 0x66, 0x61, 0xbd, 0x50, 0x74, 0x8a, 0x5a, 0xe9, + 0xe6, 0xde, 0x4c, 0x91, 0x81, 0x30, 0x27, 0xe4, 0xfe, 0xc1, 0x50, 0xca, 0x2e, 0x24, 0x3f, 0x47, + 0xbf, 0xc6, 0x0e, 0x42, 0xc1, 0x0b, 0x84, 0xe8, 0xeb, 0x1c, 0x9a, 0xe8, 0x7b, 0x82, 0x9f, 0x78, + 0x06, 0x39, 0x9c, 0xa5, 0x8f, 0xbe, 0xe0, 0xf4, 0xea, 0xb6, 0x9e, 0xfd, 0xb3, 0x2c, 0x3d, 0x98, + 0xf9, 0x59, 0xb1, 0xaf, 0xca, 0x3b, 0xfd, 0x19, 0x27, 0x15, 0x22, 0xe2, 0x7e, 0xe7, 0xc0, 0x47, + 0xcc, 0x73, 0xc0, 0xa2, 0x42, 0xae, 0xf3, 0xfd, 0xcf, 0x3a, 0x30, 0x21, 0xe1, 0x54, 0x3c, 0x8e, + 0xd1, 0x0d, 0x18, 0x93, 0x3d, 0x15, 0x5f, 0xcf, 0xa6, 0x2d, 0x40, 0x09, 0xf1, 0xaa, 0x33, 0x8a, + 0x9a, 0xfb, 0xd6, 0x08, 0xa0, 0xf4, 0xac, 0xea, 0x84, 0xb1, 0xcf, 0x38, 0xd1, 0x1d, 0x9c, 0x42, + 0x81, 0x76, 0x0a, 0x3d, 0x6f, 0xf3, 0x14, 0x4a, 0xbb, 0x65, 0x9c, 0x47, 0x5f, 0xc8, 0xf0, 0x6d, + 0x7e, 0x30, 0x7d, 0xf8, 0x50, 0xf8, 0xb6, 0xd6, 0x85, 0xfd, 0x39, 0xf8, 0x8e, 0xe0, 0xe0, 0xfc, + 0xe8, 0xfa, 0x05, 0xbb, 0x1c, 0x5c, 0xeb, 0x45, 0x96, 0x97, 0x47, 0x9c, 0xc3, 0xf2, 0xb3, 0xeb, + 0x9a, 0x55, 0x0e, 0xab, 0x51, 0x35, 0x79, 0x6d, 0xc4, 0x79, 0xed, 0x88, 0x2d, 0x9a, 0x1a, 0xaf, + 0xcd, 0xd2, 0x54, 0x5c, 0xf7, 0x55, 0xc9, 0x75, 0xf9, 0xa9, 0xf5, 0x82, 0x65, 0xae, 0xab, 0xd1, + 0xed, 0xe5, 0xbf, 0xaf, 0xc0, 0xa9, 0xde, 0x7a, 0x98, 0x6c, 0xa1, 0x73, 0x50, 0xaa, 0x85, 0xc1, + 0x96, 0xdf, 0x58, 0xf5, 0x3a, 0x42, 0x5f, 0x53, 0xbc, 0x68, 0x41, 0x16, 0xe0, 0xb4, 0x0e, 0x7a, + 0x88, 0x33, 0x1e, 0x6e, 0x11, 0x29, 0x8b, 0xaa, 0x43, 0x2b, 0x64, 0x97, 0x71, 0xa1, 0xf7, 0x8c, + 0x7d, 0xe5, 0xeb, 0x33, 0xf7, 0x7d, 0xfc, 0x8f, 0x1f, 0xbe, 0xcf, 0xfd, 0xa3, 0x21, 0x78, 0x20, + 0x97, 0xa6, 0x90, 0xd6, 0x7f, 0xcb, 0x90, 0xd6, 0xb5, 0x72, 0xc1, 0x45, 0xae, 0xd9, 0x14, 0x64, + 0x35, 0xf4, 0x79, 0x72, 0xb9, 0x56, 0x8c, 0xf3, 0x3b, 0x45, 0x27, 0x2a, 0xf0, 0xda, 0x24, 0xee, + 0x78, 0x35, 0x22, 0x46, 0xaf, 0x26, 0xea, 0x8a, 0x2c, 0xc0, 0x69, 0x1d, 0xae, 0x42, 0x6f, 0x79, + 0xdd, 0x56, 0x22, 0x0c, 0x65, 0x9a, 0x0a, 0xcd, 0xc0, 0x58, 0x96, 0xa3, 0x7f, 0xe0, 0x00, 0xea, + 0xa5, 0x2a, 0x36, 0xe2, 0xc6, 0x61, 0xcc, 0xc3, 0xfc, 0xe9, 0x9b, 0x9a, 0x12, 0xae, 0x8d, 0x34, + 0xa7, 0x1f, 0xda, 0x37, 0xfd, 0x68, 0x7a, 0x0e, 0x71, 0xe5, 0x60, 0x00, 0x1b, 0x1a, 0x33, 0xb5, + 0xd4, 0x6a, 0x24, 0x8e, 0xb9, 0x39, 0x4e, 0x37, 0xb5, 0x30, 0x30, 0x96, 0xe5, 0x68, 0x06, 0x8a, + 0x24, 0x8a, 0xc2, 0x48, 0xe8, 0xda, 0x6c, 0x19, 0x5f, 0xa0, 0x00, 0xcc, 0xe1, 0xee, 0x8f, 0x0a, + 0x50, 0xe9, 0xa7, 0x9d, 0xa0, 0xdf, 0xd5, 0xf4, 0x6a, 0xa1, 0x39, 0x09, 0xc5, 0x2f, 0x3c, 0x3c, + 0x9d, 0x28, 0xab, 0x00, 0xf6, 0xd1, 0xb0, 0x45, 0x29, 0xce, 0x76, 0x70, 0xfa, 0x8b, 0x9a, 0x86, + 0xad, 0xa3, 0xc8, 0x39, 0xe0, 0xb7, 0xcc, 0x03, 0x7e, 0xdd, 0xf6, 0xa0, 0xf4, 0x63, 0xfe, 0x4f, + 0x8a, 0x70, 0x42, 0x96, 0x56, 0x09, 0x3d, 0x2a, 0x9f, 0xeb, 0x92, 0x68, 0x17, 0x7d, 0xdf, 0x81, + 0x93, 0x5e, 0xd6, 0x74, 0xe3, 0x93, 0x43, 0x98, 0x68, 0x8d, 0xea, 0xec, 0x5c, 0x0e, 0x45, 0x3e, + 0xd1, 0xe7, 0xc5, 0x44, 0x9f, 0xcc, 0xab, 0xd2, 0xc7, 0xee, 0x9e, 0x3b, 0x00, 0xf4, 0x0c, 0x8c, + 0x4b, 0x38, 0x33, 0xf7, 0xf0, 0x2d, 0xae, 0x8c, 0xdb, 0x73, 0x5a, 0x19, 0x36, 0x6a, 0xd2, 0x96, + 0x09, 0x69, 0x77, 0x5a, 0x5e, 0x42, 0x34, 0x43, 0x91, 0x6a, 0xb9, 0xa1, 0x95, 0x61, 0xa3, 0x26, + 0x7a, 0x0c, 0x46, 0x82, 0xb0, 0x4e, 0x2e, 0xd5, 0x85, 0x81, 0x78, 0x52, 0xb4, 0x19, 0xb9, 0xc2, + 0xa0, 0x58, 0x94, 0xa2, 0x47, 0x53, 0x6b, 0x5c, 0x91, 0x6d, 0xa1, 0x72, 0x9e, 0x25, 0x0e, 0xfd, + 0x23, 0x07, 0x4a, 0xb4, 0xc5, 0xc6, 0x6e, 0x87, 0xd0, 0xb3, 0x8d, 0x7e, 0x91, 0xfa, 0xe1, 0x7c, + 0x91, 0x2b, 0x92, 0x8c, 0x69, 0xea, 0x28, 0x29, 0xf8, 0x9b, 0x6f, 0xcf, 0x8c, 0xc9, 0x1f, 0x38, + 0xed, 0xd5, 0xf4, 0x32, 0xdc, 0xdf, 0xf7, 0x6b, 0x1e, 0xc8, 0x15, 0xf0, 0xb7, 0x60, 0xd2, 0xec, + 0xc4, 0x81, 0xfc, 0x00, 0xff, 0x5c, 0xdb, 0x76, 0x7c, 0x5c, 0x82, 0x9f, 0xdd, 0x33, 0x69, 0x56, + 0x2d, 0x86, 0x45, 0xb1, 0xf4, 0xcc, 0xc5, 0xb0, 0x28, 0x16, 0xc3, 0xa2, 0xfb, 0x87, 0x4e, 0xba, + 0x35, 0x35, 0x31, 0x8f, 0x1e, 0xcc, 0xdd, 0xa8, 0x25, 0x18, 0xb1, 0x3a, 0x98, 0xaf, 0xe2, 0xcb, + 0x98, 0xc2, 0xd1, 0x17, 0x35, 0xee, 0x48, 0x9b, 0x75, 0x85, 0x5b, 0xc3, 0x92, 0x89, 0xde, 0x40, + 0xdc, 0xcb, 0xff, 0x44, 0x01, 0xce, 0x76, 0xc1, 0xfd, 0x42, 0x01, 0x1e, 0xda, 0x57, 0x68, 0xcd, + 0xed, 0xb8, 0x73, 0xcf, 0x3b, 0x4e, 0x8f, 0xb5, 0x88, 0x74, 0xc2, 0xab, 0xf8, 0xb2, 0xf8, 0x5e, + 0xea, 0x58, 0xc3, 0x1c, 0x8c, 0x65, 0x39, 0x15, 0x1d, 0xb6, 0xc9, 0xee, 0x52, 0x18, 0xb5, 0xbd, + 0x44, 0x70, 0x07, 0x25, 0x3a, 0xac, 0xc8, 0x02, 0x9c, 0xd6, 0x71, 0xbf, 0xef, 0x40, 0xb6, 0x03, + 0xc8, 0x83, 0xc9, 0x6e, 0x4c, 0x22, 0x7a, 0xa4, 0x56, 0x49, 0x2d, 0x22, 0x72, 0x79, 0x3e, 0x3a, + 0xcb, 0xbd, 0xfd, 0x74, 0x84, 0xb3, 0xb5, 0x30, 0x22, 0xb3, 0x3b, 0x4f, 0xcd, 0xf2, 0x1a, 0x2b, + 0x64, 0xb7, 0x4a, 0x5a, 0x84, 0xe2, 0x98, 0x47, 0x37, 0xf7, 0x66, 0x26, 0xaf, 0x1a, 0x08, 0x70, + 0x06, 0x21, 0x25, 0xd1, 0xf1, 0xe2, 0xf8, 0x7a, 0x18, 0xd5, 0x05, 0x89, 0xc2, 0x81, 0x49, 0xac, + 0x1b, 0x08, 0x70, 0x06, 0xa1, 0xfb, 0x3d, 0xaa, 0x3e, 0xea, 0x52, 0x2b, 0xfa, 0x3a, 0x95, 0x7d, + 0x28, 0x64, 0xbe, 0x15, 0x6e, 0x2e, 0x84, 0x41, 0xe2, 0xf9, 0x01, 0x91, 0xc1, 0x02, 0x1b, 0x96, + 0x64, 0x64, 0x03, 0x77, 0x6a, 0xc3, 0xef, 0x2d, 0xc3, 0x39, 0x7d, 0xa1, 0x32, 0xce, 0x66, 0x2b, + 0xdc, 0xcc, 0x7a, 0x01, 0x69, 0x25, 0xcc, 0x4a, 0xdc, 0x9f, 0x38, 0x70, 0xa6, 0x8f, 0x30, 0x8e, + 0xbe, 0xec, 0xc0, 0xc4, 0xe6, 0x4f, 0xc5, 0xd8, 0xcc, 0x6e, 0xa0, 0xf7, 0xc1, 0x24, 0x05, 0xd0, + 0x93, 0x48, 0xac, 0xcd, 0x82, 0xe9, 0xa1, 0x9a, 0x37, 0x4a, 0x71, 0xa6, 0xb6, 0xfb, 0xeb, 0x05, + 0xc8, 0xa1, 0x82, 0x9e, 0x84, 0x31, 0x12, 0xd4, 0x3b, 0xa1, 0x1f, 0x24, 0x82, 0x19, 0x29, 0xae, + 0x77, 0x41, 0xc0, 0xb1, 0xaa, 0x21, 0xf4, 0x0f, 0x31, 0x31, 0x85, 0x1e, 0xfd, 0x43, 0xf4, 0x3c, + 0xad, 0x83, 0x1a, 0x30, 0xe5, 0x71, 0xff, 0x0a, 0x5b, 0x7b, 0x6c, 0x99, 0x0e, 0x1d, 0x64, 0x99, + 0x9e, 0x64, 0xee, 0xcf, 0x0c, 0x0a, 0xdc, 0x83, 0x14, 0xbd, 0x1b, 0xca, 0xdd, 0x98, 0x54, 0x17, + 0x57, 0x16, 0x22, 0x52, 0xe7, 0x5a, 0xb1, 0xe6, 0xf7, 0xbb, 0x9a, 0x16, 0x61, 0xbd, 0x9e, 0xfb, + 0xaf, 0x1c, 0x18, 0x9d, 0xf7, 0x6a, 0xdb, 0xe1, 0xd6, 0x16, 0x9d, 0x8a, 0x7a, 0x37, 0x4a, 0x0d, + 0x5b, 0xda, 0x54, 0x2c, 0x0a, 0x38, 0x56, 0x35, 0xd0, 0x06, 0x8c, 0xf0, 0x0d, 0x2f, 0xb6, 0xdd, + 0xcf, 0x6b, 0xe3, 0x51, 0x71, 0x3c, 0x6c, 0x39, 0x74, 0x13, 0xbf, 0x35, 0xcb, 0xe3, 0x78, 0x66, + 0x2f, 0x05, 0xc9, 0x5a, 0x54, 0x4d, 0x22, 0x3f, 0x68, 0xcc, 0x03, 0x3d, 0x2e, 0x96, 0x18, 0x0e, + 0x2c, 0x70, 0xd1, 0x61, 0xb4, 0xbd, 0x1b, 0x92, 0x9c, 0x60, 0x3f, 0x6a, 0x18, 0xab, 0x69, 0x11, + 0xd6, 0xeb, 0xb9, 0x7f, 0xe4, 0x40, 0x69, 0xde, 0x8b, 0xfd, 0xda, 0x5f, 0x22, 0xe6, 0xf3, 0x21, + 0x28, 0x2e, 0x78, 0xb5, 0x26, 0x41, 0x57, 0xb3, 0x4a, 0x6f, 0xf9, 0xfc, 0xe3, 0x79, 0x64, 0x94, + 0x02, 0xac, 0x53, 0x9a, 0xe8, 0xa7, 0x1a, 0xbb, 0x6f, 0x3b, 0x30, 0xb9, 0xd0, 0xf2, 0x49, 0x90, + 0x2c, 0x90, 0x28, 0x61, 0x13, 0xd7, 0x80, 0xa9, 0x9a, 0x82, 0xdc, 0xc9, 0xd4, 0xb1, 0xd5, 0xba, + 0x90, 0x41, 0x81, 0x7b, 0x90, 0xa2, 0x3a, 0x1c, 0xe3, 0xb0, 0x74, 0x57, 0x1c, 0x68, 0xfe, 0x98, + 0x75, 0x74, 0xc1, 0xc4, 0x80, 0xb3, 0x28, 0xdd, 0x1f, 0x3b, 0x70, 0x66, 0xa1, 0xd5, 0x8d, 0x13, + 0x12, 0x5d, 0x13, 0xdc, 0x48, 0x8a, 0xb7, 0xe8, 0x23, 0x30, 0xd6, 0x96, 0x1e, 0x5b, 0xe7, 0x36, + 0x0b, 0x98, 0xf1, 0x33, 0x5a, 0x9b, 0x76, 0x66, 0x6d, 0xf3, 0x65, 0x52, 0x4b, 0x56, 0x49, 0xe2, + 0xa5, 0xe1, 0x05, 0x29, 0x0c, 0x2b, 0xac, 0xa8, 0x03, 0xc3, 0x71, 0x87, 0xd4, 0xec, 0x45, 0x77, + 0xc9, 0x31, 0x54, 0x3b, 0xa4, 0x96, 0xf2, 0x75, 0xe6, 0x6b, 0x64, 0x94, 0xdc, 0xff, 0xed, 0xc0, + 0x03, 0x7d, 0xc6, 0x7b, 0xd9, 0x8f, 0x13, 0xf4, 0x52, 0xcf, 0x98, 0x67, 0x07, 0x1b, 0x33, 0x6d, + 0xcd, 0x46, 0xac, 0x18, 0x82, 0x84, 0x68, 0xe3, 0xfd, 0x28, 0x14, 0xfd, 0x84, 0xb4, 0xa5, 0x19, + 0xda, 0x82, 0xc1, 0xa8, 0xcf, 0x58, 0xe6, 0x27, 0x64, 0x8c, 0xdf, 0x25, 0x4a, 0x0f, 0x73, 0xb2, + 0xee, 0x36, 0x8c, 0x2c, 0x84, 0xad, 0x6e, 0x3b, 0x18, 0x2c, 0x52, 0x26, 0xd9, 0xed, 0x90, 0xec, + 0x19, 0xc9, 0xc4, 0x7f, 0x56, 0x22, 0x0d, 0x47, 0x43, 0xf9, 0x86, 0x23, 0xf7, 0x5f, 0x3b, 0x40, + 0x77, 0x55, 0xdd, 0x17, 0x9e, 0x44, 0x8e, 0x8e, 0x13, 0x7c, 0x48, 0x47, 0x77, 0x6b, 0x6f, 0x66, + 0x42, 0x55, 0xd4, 0xf0, 0x7f, 0x08, 0x46, 0x62, 0xa6, 0x92, 0x8b, 0x3e, 0x2c, 0x49, 0xf9, 0x99, + 0x2b, 0xea, 0xb7, 0xf6, 0x66, 0x06, 0x0a, 0xdb, 0x9c, 0x55, 0xb8, 0x85, 0xd3, 0x53, 0x60, 0xa5, + 0x02, 0x5f, 0x9b, 0xc4, 0xb1, 0xd7, 0x90, 0x1a, 0x9e, 0x12, 0xf8, 0x56, 0x39, 0x18, 0xcb, 0x72, + 0xf7, 0x4b, 0x0e, 0x4c, 0xa8, 0xc3, 0x8b, 0x8a, 0xef, 0xe8, 0x8a, 0x7e, 0xcc, 0xf1, 0x95, 0xf2, + 0x50, 0x1f, 0x8e, 0x23, 0x0e, 0xf2, 0xfd, 0x4f, 0xc1, 0x77, 0xc1, 0x78, 0x9d, 0x74, 0x48, 0x50, + 0x27, 0x41, 0x8d, 0xaa, 0xdf, 0x74, 0x85, 0x94, 0xe6, 0xa7, 0xa8, 0xbe, 0xb9, 0xa8, 0xc1, 0xb1, + 0x51, 0xcb, 0xfd, 0x86, 0x03, 0xf7, 0x2b, 0x74, 0x55, 0x92, 0x60, 0x92, 0x44, 0xbb, 0x2a, 0x4c, + 0xf3, 0x60, 0xa7, 0xd5, 0x35, 0x2a, 0xff, 0x26, 0x11, 0x27, 0x7e, 0x67, 0xc7, 0x55, 0x99, 0x4b, + 0xcb, 0x0c, 0x09, 0x96, 0xd8, 0xdc, 0x5f, 0x1d, 0x82, 0x93, 0x7a, 0x27, 0x15, 0x83, 0xf9, 0x25, + 0x07, 0x40, 0xcd, 0x00, 0x3d, 0x90, 0x87, 0xec, 0xf8, 0xae, 0x8c, 0x2f, 0x95, 0xb2, 0x20, 0x05, + 0x8e, 0xb1, 0x46, 0x16, 0xbd, 0x00, 0xe3, 0x3b, 0x74, 0x53, 0x90, 0x55, 0x2a, 0x2e, 0xc4, 0x95, + 0x21, 0xd6, 0x8d, 0x99, 0xbc, 0x8f, 0xf9, 0x7c, 0x5a, 0x2f, 0x35, 0x07, 0x68, 0xc0, 0x18, 0x1b, + 0xa8, 0xa8, 0xa6, 0x33, 0x11, 0xe9, 0x9f, 0x44, 0xd8, 0xc4, 0x3f, 0x68, 0x71, 0x8c, 0xd9, 0xaf, + 0x3e, 0x7f, 0xfc, 0xe6, 0xde, 0xcc, 0x84, 0x01, 0xc2, 0x66, 0x27, 0xdc, 0x17, 0x80, 0xcd, 0x85, + 0x1f, 0x74, 0xc9, 0x5a, 0x80, 0x1e, 0x91, 0x36, 0x3a, 0xee, 0x57, 0x51, 0x9c, 0x43, 0xb7, 0xd3, + 0x51, 0x5d, 0x76, 0xcb, 0xf3, 0x5b, 0x2c, 0x7c, 0x91, 0xd6, 0x52, 0xba, 0xec, 0x12, 0x83, 0x62, + 0x51, 0xea, 0xce, 0xc2, 0xe8, 0x02, 0x1d, 0x3b, 0x89, 0x28, 0x5e, 0x3d, 0xea, 0x78, 0xc2, 0x88, + 0x3a, 0x96, 0xd1, 0xc5, 0x1b, 0x70, 0x6a, 0x21, 0x22, 0x5e, 0x42, 0xaa, 0x4f, 0xcf, 0x77, 0x6b, + 0xdb, 0x24, 0xe1, 0xa1, 0x5d, 0x31, 0x7a, 0x2f, 0x4c, 0x84, 0xec, 0xc8, 0xb8, 0x1c, 0xd6, 0xb6, + 0xfd, 0xa0, 0x21, 0x4c, 0xae, 0xa7, 0x04, 0x96, 0x89, 0x35, 0xbd, 0x10, 0x9b, 0x75, 0xdd, 0xff, + 0x54, 0x80, 0xf1, 0x85, 0x28, 0x0c, 0x24, 0x5b, 0x3c, 0x82, 0xa3, 0x2c, 0x31, 0x8e, 0x32, 0x0b, + 0xee, 0x4e, 0xbd, 0xff, 0xfd, 0x8e, 0x33, 0xf4, 0xba, 0x62, 0x91, 0x43, 0xb6, 0x54, 0x10, 0x83, + 0x2e, 0xc3, 0x9d, 0x7e, 0x6c, 0x93, 0x81, 0xba, 0xff, 0xd9, 0x81, 0x29, 0xbd, 0xfa, 0x11, 0x9c, + 0xa0, 0xb1, 0x79, 0x82, 0x5e, 0xb1, 0x3b, 0xde, 0x3e, 0xc7, 0xe6, 0xbf, 0x18, 0x35, 0xc7, 0xc9, + 0x7c, 0xdd, 0x5f, 0x71, 0x60, 0xfc, 0xba, 0x06, 0x10, 0x83, 0xb5, 0x2d, 0xc4, 0xbc, 0x43, 0xb2, + 0x19, 0x1d, 0x7a, 0x2b, 0xf3, 0x1b, 0x1b, 0x3d, 0xa1, 0x7c, 0x3f, 0xae, 0x35, 0x49, 0xbd, 0xdb, + 0x92, 0xc7, 0xb7, 0x9a, 0xd2, 0xaa, 0x80, 0x63, 0x55, 0x03, 0xbd, 0x04, 0xc7, 0x6b, 0x61, 0x50, + 0xeb, 0x46, 0x11, 0x09, 0x6a, 0xbb, 0xeb, 0xec, 0x8e, 0x84, 0x38, 0x10, 0x67, 0x45, 0xb3, 0xe3, + 0x0b, 0xd9, 0x0a, 0xb7, 0xf2, 0x80, 0xb8, 0x17, 0x11, 0x77, 0x16, 0xc4, 0xf4, 0xc8, 0x12, 0x0a, + 0x97, 0xe6, 0x2c, 0x60, 0x60, 0x2c, 0xcb, 0xd1, 0x55, 0x38, 0x13, 0x27, 0x5e, 0x94, 0xf8, 0x41, + 0x63, 0x91, 0x78, 0xf5, 0x96, 0x1f, 0x50, 0x55, 0x22, 0x0c, 0xea, 0xdc, 0x95, 0x38, 0x34, 0xff, + 0xc0, 0xcd, 0xbd, 0x99, 0x33, 0xd5, 0xfc, 0x2a, 0xb8, 0x5f, 0x5b, 0xf4, 0x21, 0x98, 0x16, 0xee, + 0x88, 0xad, 0x6e, 0xeb, 0xd9, 0x70, 0x33, 0xbe, 0xe8, 0xc7, 0x54, 0x8f, 0xbf, 0xec, 0xb7, 0xfd, + 0x84, 0x39, 0x0c, 0x8b, 0xf3, 0x67, 0x6f, 0xee, 0xcd, 0x4c, 0x57, 0xfb, 0xd6, 0xc2, 0xfb, 0x60, + 0x40, 0x18, 0x4e, 0x73, 0xe6, 0xd7, 0x83, 0x7b, 0x94, 0xe1, 0x9e, 0xbe, 0xb9, 0x37, 0x73, 0x7a, + 0x29, 0xb7, 0x06, 0xee, 0xd3, 0x92, 0x7e, 0xc1, 0xc4, 0x6f, 0x93, 0x57, 0xc3, 0x80, 0xb0, 0x40, + 0x15, 0xed, 0x0b, 0x6e, 0x08, 0x38, 0x56, 0x35, 0xd0, 0xcb, 0xe9, 0x4a, 0xa4, 0xdb, 0x45, 0x04, + 0x9c, 0x1c, 0x9c, 0xc3, 0x31, 0xd5, 0xe4, 0x9a, 0x86, 0x89, 0x45, 0x52, 0x1a, 0xb8, 0xd1, 0x27, + 0x1c, 0x18, 0x8f, 0x93, 0x50, 0xdd, 0x6b, 0x10, 0x11, 0x27, 0x16, 0x96, 0x7d, 0x55, 0xc3, 0xca, + 0x05, 0x1f, 0x1d, 0x82, 0x0d, 0xaa, 0xe8, 0xe7, 0xa0, 0x24, 0x17, 0x70, 0x5c, 0x29, 0x33, 0x59, + 0x89, 0xa9, 0x71, 0x72, 0x7d, 0xc7, 0x38, 0x2d, 0x77, 0x7f, 0x34, 0x04, 0xa8, 0x97, 0xad, 0xa1, + 0x15, 0x18, 0xf1, 0x6a, 0x89, 0xbf, 0x23, 0xa3, 0x09, 0x1f, 0xc9, 0x3b, 0xf2, 0xf9, 0xf4, 0x60, + 0xb2, 0x45, 0xe8, 0xaa, 0x26, 0x29, 0x2f, 0x9c, 0x63, 0x4d, 0xb1, 0x40, 0x81, 0x42, 0x38, 0xde, + 0xf2, 0xe2, 0x44, 0xd2, 0xaf, 0xd3, 0xcf, 0x24, 0x0e, 0x83, 0x9f, 0x1d, 0xec, 0x43, 0xd0, 0x16, + 0xf3, 0xa7, 0xe8, 0x6e, 0xbb, 0x9c, 0x45, 0x84, 0x7b, 0x71, 0xa3, 0x8f, 0x31, 0xd9, 0x89, 0x0b, + 0xb6, 0x52, 0x68, 0x59, 0xb1, 0x22, 0x57, 0x70, 0x9c, 0x86, 0xdc, 0x24, 0xc8, 0x60, 0x8d, 0x24, + 0x3a, 0x07, 0x25, 0xb6, 0x2b, 0x48, 0x9d, 0xf0, 0xbd, 0x3d, 0x94, 0x8a, 0xb8, 0x55, 0x59, 0x80, + 0xd3, 0x3a, 0x9a, 0x0c, 0xc1, 0xb7, 0x73, 0x1f, 0x19, 0x02, 0x3d, 0x03, 0xc5, 0x4e, 0xd3, 0x8b, + 0x65, 0x84, 0xba, 0x2b, 0x79, 0xf2, 0x3a, 0x05, 0x32, 0xc6, 0xa3, 0x7d, 0x4b, 0x06, 0xc4, 0xbc, + 0x81, 0xfb, 0x6f, 0x00, 0x46, 0x17, 0xe7, 0x96, 0x37, 0xbc, 0x78, 0x7b, 0x00, 0x0d, 0x87, 0x6e, + 0x32, 0x21, 0x8a, 0x66, 0xd9, 0xa4, 0x14, 0x51, 0xb1, 0xaa, 0x81, 0x02, 0x18, 0xf1, 0x03, 0xca, + 0x57, 0x2a, 0x93, 0xb6, 0xbc, 0x08, 0x4a, 0x5b, 0x63, 0x66, 0x9e, 0x4b, 0x0c, 0x3b, 0x16, 0x54, + 0xd0, 0xeb, 0x50, 0xf2, 0xe4, 0x05, 0x21, 0x71, 0xba, 0xaf, 0xd8, 0x30, 0x8f, 0x0b, 0x94, 0x7a, + 0x80, 0x92, 0x00, 0xe1, 0x94, 0x20, 0xfa, 0xb8, 0x03, 0x65, 0x39, 0x74, 0x4c, 0xb6, 0x84, 0xe7, + 0x7a, 0xd5, 0xde, 0x98, 0x31, 0xd9, 0xe2, 0xd1, 0x2b, 0x1a, 0x00, 0xeb, 0x24, 0x7b, 0x34, 0xa2, + 0xe2, 0x20, 0x1a, 0x11, 0xba, 0x0e, 0xa5, 0xeb, 0x7e, 0xd2, 0x64, 0xe7, 0xb7, 0xf0, 0x98, 0x2d, + 0xdd, 0x7d, 0xaf, 0x29, 0xba, 0x74, 0xc6, 0xae, 0x49, 0x02, 0x38, 0xa5, 0x45, 0xb7, 0x03, 0xfd, + 0xc1, 0x2e, 0x58, 0x31, 0xce, 0x5f, 0x32, 0x1b, 0xb0, 0x02, 0x9c, 0xd6, 0xa1, 0x53, 0x3c, 0x4e, + 0x7f, 0x55, 0xc9, 0x2b, 0x5d, 0xca, 0x5a, 0x44, 0x44, 0xa2, 0x85, 0x75, 0x25, 0x31, 0xf2, 0xc9, + 0xba, 0xa6, 0xd1, 0xc0, 0x06, 0x45, 0xba, 0x47, 0xae, 0x37, 0x49, 0x20, 0x6e, 0x4c, 0xa8, 0x3d, + 0x72, 0xad, 0x49, 0x02, 0xcc, 0x4a, 0xd0, 0xeb, 0x5c, 0x43, 0xe3, 0xaa, 0x82, 0xe0, 0xf5, 0x97, + 0xed, 0x68, 0x2f, 0x1c, 0x27, 0xbf, 0xb4, 0x90, 0xfe, 0xc6, 0x1a, 0x3d, 0xca, 0x31, 0xc2, 0xe0, + 0xc2, 0x0d, 0x3f, 0x11, 0x57, 0x2d, 0x14, 0xc7, 0x58, 0x63, 0x50, 0x2c, 0x4a, 0x79, 0x64, 0x06, + 0x5d, 0x04, 0x31, 0xbb, 0x57, 0x51, 0xd2, 0x23, 0x33, 0x18, 0x18, 0xcb, 0x72, 0xf4, 0x0f, 0x1d, + 0x28, 0x36, 0xc3, 0x70, 0x3b, 0xae, 0x4c, 0xb0, 0xc5, 0x61, 0x41, 0x62, 0x16, 0x1c, 0x67, 0xf6, + 0x22, 0x45, 0x6b, 0x5e, 0x1e, 0x2b, 0x32, 0xd8, 0xad, 0xbd, 0x99, 0xc9, 0xcb, 0xfe, 0x16, 0xa9, + 0xed, 0xd6, 0x5a, 0x84, 0x41, 0xde, 0x7c, 0x5b, 0x83, 0x5c, 0xd8, 0x21, 0x41, 0x82, 0x79, 0xaf, + 0xa6, 0x3f, 0xeb, 0x00, 0xa4, 0x88, 0x72, 0x5c, 0xa0, 0xc4, 0x0c, 0x1a, 0xb0, 0xa0, 0x2e, 0x1b, + 0x5d, 0xd3, 0x7d, 0xaa, 0xff, 0xd6, 0x81, 0x32, 0x1d, 0x9c, 0x64, 0x81, 0x8f, 0xc1, 0x48, 0xe2, + 0x45, 0x0d, 0x22, 0xdd, 0x00, 0xea, 0x73, 0x6c, 0x30, 0x28, 0x16, 0xa5, 0x28, 0x80, 0x62, 0xe2, + 0xc5, 0xdb, 0x52, 0x48, 0xbf, 0x64, 0x6d, 0x8a, 0x53, 0xf9, 0x9c, 0xfe, 0x8a, 0x31, 0x27, 0x83, + 0x1e, 0x87, 0x31, 0x7a, 0x74, 0x2c, 0x79, 0xb1, 0x8c, 0xcc, 0x19, 0xa7, 0x4c, 0x7c, 0x49, 0xc0, + 0xb0, 0x2a, 0x75, 0x7f, 0xbd, 0x00, 0xc3, 0x8b, 0x5c, 0x5d, 0x1b, 0x89, 0xc3, 0x6e, 0x54, 0x23, + 0x42, 0x6c, 0xb7, 0xb0, 0xa6, 0x29, 0xde, 0x2a, 0xc3, 0xa9, 0x29, 0x4c, 0xec, 0x37, 0x16, 0xb4, + 0xd0, 0x17, 0x1d, 0x98, 0x4c, 0x22, 0x2f, 0x88, 0xb7, 0x98, 0xc3, 0xc5, 0x0f, 0x03, 0x31, 0x45, + 0x16, 0x56, 0xe1, 0x86, 0x81, 0xb7, 0x9a, 0x90, 0x4e, 0xea, 0xf7, 0x31, 0xcb, 0x70, 0xa6, 0x0f, + 0xee, 0x6f, 0x38, 0x00, 0x69, 0xef, 0xd1, 0x67, 0x1c, 0x98, 0xf0, 0xf4, 0x88, 0x50, 0x31, 0x47, + 0x6b, 0xf6, 0xbc, 0xb3, 0x0c, 0x2d, 0xb7, 0x54, 0x18, 0x20, 0x6c, 0x12, 0x76, 0xdf, 0x0d, 0x45, + 0xb6, 0x3b, 0x98, 0x4a, 0x23, 0x2c, 0xdb, 0x59, 0x53, 0x96, 0xb4, 0x78, 0x63, 0x55, 0xc3, 0x7d, + 0x09, 0x26, 0x2f, 0xdc, 0x20, 0xb5, 0x6e, 0x12, 0x46, 0xdc, 0xae, 0xdf, 0xe7, 0x06, 0x90, 0x73, + 0x47, 0x37, 0x80, 0xbe, 0xed, 0x40, 0x59, 0x0b, 0x0f, 0xa4, 0x27, 0x75, 0x63, 0xa1, 0xca, 0xcd, + 0x17, 0x62, 0xaa, 0x56, 0xac, 0x04, 0x20, 0x72, 0x94, 0xe9, 0x31, 0xa2, 0x40, 0x38, 0x25, 0x78, + 0x9b, 0xf0, 0x3d, 0xf7, 0x0f, 0x1c, 0x38, 0x95, 0x1b, 0xcb, 0x78, 0x8f, 0xbb, 0x6d, 0xb8, 0xd0, + 0x0b, 0x03, 0xb8, 0xd0, 0x7f, 0xc7, 0x81, 0x14, 0x13, 0x65, 0x45, 0x9b, 0x69, 0xcf, 0x35, 0x56, + 0x24, 0x28, 0x89, 0x52, 0xf4, 0x3a, 0x9c, 0x31, 0xbf, 0xe0, 0x1d, 0x7a, 0x53, 0xb8, 0xea, 0x99, + 0x8f, 0x09, 0xf7, 0x23, 0xe1, 0x7e, 0xd5, 0x81, 0xe2, 0xb2, 0xd7, 0x6d, 0x90, 0x81, 0x8c, 0x61, + 0x94, 0x8f, 0x45, 0xc4, 0x6b, 0x25, 0x52, 0x75, 0x10, 0x7c, 0x0c, 0x0b, 0x18, 0x56, 0xa5, 0x68, + 0x0e, 0x4a, 0x61, 0x87, 0x18, 0x1e, 0xc0, 0x47, 0xe4, 0xec, 0xad, 0xc9, 0x02, 0x7a, 0xec, 0x30, + 0xea, 0x0a, 0x82, 0xd3, 0x56, 0xee, 0xf7, 0x8b, 0x50, 0xd6, 0x6e, 0xbd, 0x50, 0x59, 0x20, 0x22, + 0x9d, 0x30, 0x2b, 0x2f, 0xd3, 0x05, 0x83, 0x59, 0x09, 0xdd, 0x83, 0x11, 0xd9, 0xf1, 0x63, 0xce, + 0xb6, 0x8c, 0x3d, 0x88, 0x05, 0x1c, 0xab, 0x1a, 0x68, 0x06, 0x8a, 0x75, 0xd2, 0x49, 0x9a, 0xac, + 0x7b, 0xc3, 0x3c, 0xf4, 0x6f, 0x91, 0x02, 0x30, 0x87, 0xd3, 0x0a, 0x5b, 0x24, 0xa9, 0x35, 0x99, + 0xdd, 0x57, 0xc4, 0x06, 0x2e, 0x51, 0x00, 0xe6, 0xf0, 0x1c, 0x1f, 0x65, 0xf1, 0xf0, 0x7d, 0x94, + 0x23, 0x96, 0x7d, 0x94, 0xa8, 0x03, 0x27, 0xe2, 0xb8, 0xb9, 0x1e, 0xf9, 0x3b, 0x5e, 0x42, 0xd2, + 0xd5, 0x37, 0x7a, 0x10, 0x3a, 0x67, 0xd8, 0x3d, 0xf4, 0xea, 0xc5, 0x2c, 0x16, 0x9c, 0x87, 0x1a, + 0x55, 0xe1, 0x94, 0x1f, 0xc4, 0xa4, 0xd6, 0x8d, 0xc8, 0xa5, 0x46, 0x10, 0x46, 0xe4, 0x62, 0x18, + 0x53, 0x74, 0xe2, 0x16, 0xad, 0x8a, 0x96, 0xbd, 0x94, 0x57, 0x09, 0xe7, 0xb7, 0x45, 0xcb, 0x70, + 0xbc, 0xee, 0xc7, 0xde, 0x66, 0x8b, 0x54, 0xbb, 0x9b, 0xed, 0x90, 0x2b, 0xde, 0x25, 0x86, 0xf0, + 0x7e, 0x69, 0x25, 0x5a, 0xcc, 0x56, 0xc0, 0xbd, 0x6d, 0xd0, 0x33, 0x30, 0x1e, 0xfb, 0x41, 0xa3, + 0x45, 0xe6, 0x23, 0x2f, 0xa8, 0x35, 0xc5, 0xf5, 0x5b, 0x65, 0x4d, 0xaf, 0x6a, 0x65, 0xd8, 0xa8, + 0xc9, 0xf6, 0x3c, 0x6f, 0x93, 0x91, 0x06, 0x45, 0x6d, 0x51, 0xea, 0xfe, 0xc0, 0x81, 0x71, 0x3d, + 0x52, 0x9d, 0x4a, 0xda, 0xd0, 0x5c, 0x5c, 0xaa, 0xf2, 0xb3, 0xc0, 0xde, 0x89, 0x7f, 0x51, 0xe1, + 0x4c, 0x95, 0xe5, 0x14, 0x86, 0x35, 0x9a, 0x03, 0xdc, 0x3b, 0x7f, 0x04, 0x8a, 0x5b, 0x21, 0x15, + 0x48, 0x86, 0x4c, 0x33, 0xfc, 0x12, 0x05, 0x62, 0x5e, 0xe6, 0xfe, 0x4f, 0x07, 0x4e, 0xe7, 0x07, + 0xe1, 0xff, 0x34, 0x0c, 0xf2, 0x3c, 0x00, 0x1d, 0x8a, 0xc1, 0xd4, 0xb5, 0xcc, 0x13, 0xb2, 0x04, + 0x6b, 0xb5, 0x06, 0x1b, 0xf6, 0x9f, 0x51, 0xa1, 0x38, 0xa5, 0xf3, 0x39, 0x07, 0x26, 0x28, 0xd9, + 0x95, 0x68, 0xd3, 0x18, 0xed, 0x9a, 0x9d, 0xd1, 0x2a, 0xb4, 0xa9, 0xb7, 0xc1, 0x00, 0x63, 0x93, + 0x38, 0xfa, 0x39, 0x28, 0x79, 0xf5, 0x7a, 0x44, 0xe2, 0x58, 0xf9, 0xed, 0x98, 0x2d, 0x6a, 0x4e, + 0x02, 0x71, 0x5a, 0x4e, 0x99, 0x68, 0xb3, 0xbe, 0x15, 0x53, 0xbe, 0x24, 0x18, 0xb7, 0x62, 0xa2, + 0x94, 0x08, 0x85, 0x63, 0x55, 0xc3, 0xfd, 0x95, 0x61, 0x30, 0x69, 0xa3, 0x3a, 0x1c, 0xdb, 0x8e, + 0x36, 0x17, 0x58, 0xd8, 0xc3, 0x9d, 0x84, 0x1f, 0xb0, 0xb0, 0x80, 0x15, 0x13, 0x03, 0xce, 0xa2, + 0x14, 0x54, 0x56, 0xc8, 0x6e, 0xe2, 0x6d, 0xde, 0x71, 0xf0, 0xc1, 0x8a, 0x89, 0x01, 0x67, 0x51, + 0xa2, 0x77, 0x43, 0x79, 0x3b, 0xda, 0x94, 0x2c, 0x3a, 0x1b, 0xc9, 0xb2, 0x92, 0x16, 0x61, 0xbd, + 0x1e, 0x9d, 0xc2, 0xed, 0x68, 0x93, 0x9e, 0x8a, 0x32, 0x0f, 0x83, 0x9a, 0xc2, 0x15, 0x01, 0xc7, + 0xaa, 0x06, 0xea, 0x00, 0xda, 0x96, 0xb3, 0xa7, 0x82, 0x3c, 0xc4, 0x49, 0x32, 0x78, 0x8c, 0x08, + 0x8b, 0xae, 0x5f, 0xe9, 0xc1, 0x83, 0x73, 0x70, 0xa3, 0x17, 0xe0, 0xcc, 0x76, 0xb4, 0x29, 0x84, + 0x85, 0xf5, 0xc8, 0x0f, 0x6a, 0x7e, 0xc7, 0xc8, 0xb9, 0x30, 0x23, 0xba, 0x7b, 0x66, 0x25, 0xbf, + 0x1a, 0xee, 0xd7, 0xde, 0xfd, 0xdd, 0x61, 0x60, 0xb7, 0x45, 0x29, 0x2f, 0x6c, 0x93, 0xa4, 0x19, + 0xd6, 0xb3, 0xf2, 0xcf, 0x2a, 0x83, 0x62, 0x51, 0x2a, 0x63, 0x48, 0x0b, 0x7d, 0x62, 0x48, 0xaf, + 0xc3, 0x68, 0x93, 0x78, 0x75, 0x12, 0x49, 0x0b, 0xe2, 0x65, 0x3b, 0xf7, 0x5b, 0x2f, 0x32, 0xa4, + 0xa9, 0x1a, 0xce, 0x7f, 0xc7, 0x58, 0x52, 0x43, 0xef, 0x81, 0x49, 0x2a, 0xc8, 0x84, 0xdd, 0x44, + 0x9a, 0xf8, 0xb9, 0x05, 0x91, 0x9d, 0xa8, 0x1b, 0x46, 0x09, 0xce, 0xd4, 0x44, 0x8b, 0x30, 0x25, + 0xcc, 0xf1, 0xca, 0x32, 0x29, 0x26, 0x56, 0x25, 0xc3, 0xa8, 0x66, 0xca, 0x71, 0x4f, 0x0b, 0x16, + 0x03, 0x18, 0xd6, 0xb9, 0x47, 0x56, 0x8f, 0x01, 0x0c, 0xeb, 0xbb, 0x98, 0x95, 0xa0, 0x57, 0x61, + 0x8c, 0xfe, 0x5d, 0x8a, 0xc2, 0xb6, 0xb0, 0xcd, 0xac, 0xdb, 0x99, 0x1d, 0x4a, 0x43, 0x68, 0x8a, + 0x4c, 0xc0, 0x9b, 0x17, 0x54, 0xb0, 0xa2, 0x47, 0xf5, 0x15, 0x79, 0x0e, 0x57, 0xb7, 0xfd, 0xce, + 0xf3, 0x24, 0xf2, 0xb7, 0x76, 0x99, 0xd0, 0x30, 0x96, 0xea, 0x2b, 0x97, 0x7a, 0x6a, 0xe0, 0x9c, + 0x56, 0xee, 0xe7, 0x0a, 0x30, 0xae, 0x5f, 0x3a, 0xbe, 0x5d, 0x60, 0x71, 0x9c, 0x2e, 0x0a, 0xae, + 0x9d, 0x5e, 0xb4, 0x30, 0xec, 0xdb, 0x2d, 0x88, 0x26, 0x0c, 0x7b, 0x5d, 0x21, 0x2d, 0x5a, 0x31, + 0x82, 0xb1, 0x11, 0x77, 0x93, 0x26, 0xbf, 0x9d, 0xc6, 0x42, 0x7e, 0x19, 0x05, 0xf7, 0x93, 0x43, + 0x30, 0x26, 0x0b, 0xd1, 0x27, 0x1c, 0x80, 0x34, 0xf4, 0x4a, 0xb0, 0xd2, 0x75, 0x1b, 0x71, 0x39, + 0x7a, 0xd4, 0x98, 0x66, 0x4b, 0x57, 0x70, 0xac, 0xd1, 0x45, 0x09, 0x8c, 0x84, 0xb4, 0x73, 0xe7, + 0xed, 0x5d, 0x9c, 0x5f, 0xa3, 0x84, 0xcf, 0x33, 0xea, 0xa9, 0xd9, 0x8c, 0xc1, 0xb0, 0xa0, 0x45, + 0x35, 0xc0, 0x4d, 0x19, 0x11, 0x68, 0xcf, 0xc4, 0xac, 0x82, 0x0c, 0x53, 0x85, 0x4e, 0x81, 0x70, + 0x4a, 0xd0, 0x7d, 0x0a, 0x26, 0xcd, 0xcd, 0x40, 0x35, 0x82, 0xcd, 0xdd, 0x84, 0x70, 0x7b, 0xc3, + 0x38, 0xd7, 0x08, 0xe6, 0x29, 0x00, 0x73, 0xb8, 0xfb, 0x3d, 0x2a, 0x07, 0x28, 0xf6, 0x32, 0x80, + 0x89, 0xff, 0x11, 0xdd, 0x58, 0xd6, 0x4f, 0xed, 0xfa, 0x18, 0x94, 0xd8, 0x3f, 0x6c, 0xa3, 0x0f, + 0xd9, 0xf2, 0xdf, 0xa7, 0xfd, 0x14, 0x5b, 0x9d, 0xc9, 0x04, 0xcf, 0x4b, 0x42, 0x38, 0xa5, 0xe9, + 0x86, 0x30, 0x95, 0xad, 0x8d, 0x3e, 0x08, 0xe3, 0xb1, 0x3c, 0x56, 0xd3, 0x2b, 0x74, 0x03, 0x1e, + 0xbf, 0xdc, 0x7b, 0xa6, 0x35, 0xc7, 0x06, 0x32, 0x77, 0x0d, 0x46, 0xac, 0x4e, 0xa1, 0xfb, 0x2d, + 0x07, 0x4a, 0xcc, 0x81, 0xd9, 0x88, 0xbc, 0x76, 0xda, 0x64, 0x68, 0x9f, 0x59, 0x8f, 0x61, 0x94, + 0xeb, 0xe8, 0x32, 0xf0, 0xc7, 0x02, 0x97, 0xe1, 0xf9, 0xee, 0x52, 0x2e, 0xc3, 0x8d, 0x01, 0x31, + 0x96, 0x94, 0xdc, 0x4f, 0x15, 0x60, 0xe4, 0x52, 0xd0, 0xe9, 0xfe, 0x95, 0xcf, 0xb9, 0xb6, 0x0a, + 0xc3, 0x97, 0x12, 0xd2, 0x36, 0x53, 0x03, 0x8e, 0xcf, 0x3f, 0xaa, 0xa7, 0x05, 0xac, 0x98, 0x69, + 0x01, 0xb1, 0x77, 0x5d, 0xc6, 0xc5, 0x09, 0x1b, 0x71, 0x7a, 0x8d, 0xf0, 0x49, 0x28, 0x5d, 0xf6, + 0x36, 0x49, 0x6b, 0x85, 0xec, 0xb2, 0x4b, 0x7f, 0x3c, 0x46, 0xc3, 0x49, 0x15, 0x7b, 0x23, 0x9e, + 0x62, 0x11, 0x26, 0x59, 0x6d, 0xb5, 0x19, 0xa8, 0xe6, 0x40, 0xd2, 0xbc, 0x4a, 0x8e, 0xa9, 0x39, + 0x68, 0x39, 0x95, 0xb4, 0x5a, 0xee, 0x2c, 0x94, 0x53, 0x2c, 0x03, 0x50, 0xfd, 0x49, 0x01, 0x26, + 0x0c, 0x53, 0xb7, 0xe1, 0x00, 0x74, 0x6e, 0xeb, 0x00, 0x34, 0x1c, 0x72, 0x85, 0x7b, 0xed, 0x90, + 0x1b, 0x3a, 0x7a, 0x87, 0x9c, 0xf9, 0x91, 0x86, 0x07, 0xfa, 0x48, 0x2d, 0x18, 0xbe, 0xec, 0x07, + 0xdb, 0x83, 0xf1, 0x99, 0xb8, 0x16, 0x76, 0x7a, 0xf8, 0x4c, 0x95, 0x02, 0x31, 0x2f, 0x93, 0x92, + 0xcb, 0x50, 0xbe, 0xe4, 0xe2, 0x7e, 0xc2, 0x81, 0xf1, 0x55, 0x2f, 0xf0, 0xb7, 0x48, 0x9c, 0xb0, + 0x75, 0x95, 0x1c, 0xea, 0xe5, 0xaf, 0xf1, 0x3e, 0x69, 0x0c, 0xde, 0x74, 0xe0, 0xf8, 0x2a, 0x69, + 0x87, 0xfe, 0xab, 0x5e, 0x1a, 0x76, 0x4a, 0xfb, 0xde, 0xf4, 0x13, 0x11, 0x65, 0xa7, 0xfa, 0x7e, + 0xd1, 0x4f, 0x30, 0x85, 0xdf, 0xc6, 0x8e, 0xcb, 0xae, 0x55, 0x50, 0x05, 0x4d, 0xbb, 0x90, 0x98, + 0x06, 0x94, 0xca, 0x02, 0x9c, 0xd6, 0x71, 0x7f, 0xcf, 0x81, 0x51, 0xde, 0x09, 0x15, 0xa9, 0xeb, + 0xf4, 0xc1, 0xdd, 0x84, 0x22, 0x6b, 0x27, 0x56, 0xf5, 0xb2, 0x05, 0xf1, 0x87, 0xa2, 0xe3, 0x7b, + 0x90, 0xfd, 0x8b, 0x39, 0x01, 0xa6, 0xb6, 0x78, 0x37, 0xe6, 0x54, 0xc4, 0x6d, 0xaa, 0xb6, 0x30, + 0x28, 0x16, 0xa5, 0xee, 0xd7, 0x86, 0x60, 0x4c, 0x65, 0xef, 0x62, 0xb9, 0x15, 0x82, 0x20, 0x4c, + 0x3c, 0x1e, 0xeb, 0xc0, 0x79, 0xf5, 0x07, 0xed, 0x65, 0x0f, 0x9b, 0x9d, 0x4b, 0xb1, 0x73, 0xff, + 0x9d, 0x52, 0x42, 0xb5, 0x12, 0xac, 0x77, 0x02, 0x7d, 0x14, 0x46, 0x5a, 0x94, 0xfb, 0x48, 0xd6, + 0xfd, 0xbc, 0xc5, 0xee, 0x30, 0xb6, 0x26, 0x7a, 0xa2, 0x66, 0x88, 0x03, 0xb1, 0xa0, 0x3a, 0xfd, + 0x3e, 0x98, 0xca, 0xf6, 0xfa, 0x76, 0xf7, 0x25, 0x4b, 0xfa, 0x6d, 0xcb, 0xbf, 0x29, 0xb8, 0xe7, + 0xc1, 0x9b, 0xba, 0xcf, 0x41, 0x79, 0x95, 0x24, 0x91, 0x5f, 0x63, 0x08, 0x6e, 0xb7, 0xb8, 0x06, + 0x92, 0x1f, 0x3e, 0xcd, 0x16, 0x2b, 0xc5, 0x19, 0xa3, 0xd7, 0x01, 0x3a, 0x51, 0x48, 0xf5, 0x57, + 0xd2, 0x95, 0x1f, 0xdb, 0x82, 0x3c, 0xbc, 0xae, 0x70, 0x72, 0x97, 0x73, 0xfa, 0x1b, 0x6b, 0xf4, + 0xdc, 0x17, 0xa1, 0xb8, 0xda, 0x4d, 0xc8, 0x8d, 0x01, 0x38, 0xd6, 0x41, 0x13, 0x08, 0xb8, 0x1f, + 0x84, 0x71, 0x86, 0xfb, 0x62, 0xd8, 0xa2, 0xc7, 0x2a, 0x9d, 0x9a, 0x36, 0xfd, 0x9d, 0x75, 0x0a, + 0xb0, 0x4a, 0x98, 0x97, 0xd1, 0x2d, 0xd3, 0x0c, 0x5b, 0x75, 0x75, 0x99, 0x4a, 0x2d, 0x88, 0x8b, + 0x0c, 0x8a, 0x45, 0xa9, 0xfb, 0x4b, 0x05, 0x28, 0xb3, 0x86, 0x82, 0xdd, 0xec, 0xc2, 0x68, 0x93, + 0xd3, 0x11, 0x73, 0x68, 0x21, 0x44, 0x4b, 0xef, 0xbd, 0xa6, 0xcb, 0x71, 0x00, 0x96, 0xf4, 0x28, + 0xe9, 0xeb, 0x9e, 0x9f, 0x50, 0xd2, 0x85, 0xc3, 0x25, 0x7d, 0x8d, 0x93, 0xc1, 0x92, 0x9e, 0xfb, + 0x8b, 0xc0, 0x2e, 0x29, 0x2f, 0xb5, 0xbc, 0x06, 0x9f, 0xb9, 0x70, 0x9b, 0xd4, 0x05, 0xcf, 0xd5, + 0x66, 0x8e, 0x42, 0xb1, 0x28, 0xe5, 0x17, 0x3f, 0x93, 0xc8, 0x57, 0xc1, 0xcd, 0xda, 0xc5, 0x4f, + 0x06, 0x96, 0xa1, 0xec, 0x75, 0xf7, 0x4b, 0x05, 0x00, 0x96, 0xeb, 0x8d, 0xdf, 0x2d, 0xfe, 0x79, + 0x19, 0xa9, 0x64, 0x3a, 0x12, 0x55, 0xa4, 0x12, 0xbb, 0x3d, 0xad, 0x47, 0x28, 0xe9, 0x77, 0x0e, + 0x0a, 0xfb, 0xdf, 0x39, 0x40, 0x1d, 0x18, 0x0d, 0xbb, 0x09, 0x95, 0x55, 0xc5, 0x61, 0x6f, 0xc1, + 0x8f, 0xbe, 0xc6, 0x11, 0xf2, 0x40, 0x7d, 0xf1, 0x03, 0x4b, 0x32, 0xe8, 0x19, 0x18, 0xeb, 0x44, + 0x61, 0x83, 0x9e, 0xdd, 0xe2, 0x78, 0x7f, 0x50, 0xca, 0x43, 0xeb, 0x02, 0x7e, 0x4b, 0xfb, 0x1f, + 0xab, 0xda, 0xee, 0x1f, 0x4f, 0xf1, 0x79, 0x11, 0x6b, 0x6f, 0x1a, 0x0a, 0xbe, 0xb4, 0x4c, 0x81, + 0x40, 0x51, 0xb8, 0xb4, 0x88, 0x0b, 0x7e, 0x5d, 0xed, 0xab, 0x42, 0xdf, 0x7d, 0xf5, 0x6e, 0x28, + 0xd7, 0xfd, 0xb8, 0xd3, 0xf2, 0x76, 0xaf, 0xe4, 0x98, 0x05, 0x17, 0xd3, 0x22, 0xac, 0xd7, 0x43, + 0x4f, 0x8a, 0x1b, 0x26, 0xc3, 0x86, 0x29, 0x48, 0xde, 0x30, 0x49, 0xef, 0xae, 0xf3, 0xcb, 0x25, + 0xd9, 0x3b, 0xfe, 0xc5, 0x81, 0xef, 0xf8, 0x67, 0x25, 0xb1, 0x91, 0xa3, 0x97, 0xc4, 0xde, 0x0b, + 0x13, 0xf2, 0x27, 0x13, 0x8f, 0x2a, 0x27, 0x59, 0xef, 0x95, 0xb9, 0x7a, 0x43, 0x2f, 0xc4, 0x66, + 0xdd, 0x74, 0xd1, 0x8e, 0x0e, 0xba, 0x68, 0xcf, 0x03, 0x6c, 0x86, 0xdd, 0xa0, 0xee, 0x45, 0xbb, + 0x97, 0x16, 0x45, 0x3c, 0xaa, 0x12, 0xfc, 0xe6, 0x55, 0x09, 0xd6, 0x6a, 0xe9, 0x0b, 0xbd, 0x74, + 0x9b, 0x85, 0xfe, 0x41, 0x28, 0xb1, 0xd8, 0x5d, 0x52, 0x9f, 0x4b, 0x44, 0x88, 0xd1, 0x41, 0x42, + 0x26, 0xd3, 0xa0, 0x43, 0x89, 0x04, 0xa7, 0xf8, 0xd0, 0x87, 0x00, 0xb6, 0xfc, 0xc0, 0x8f, 0x9b, + 0x0c, 0x7b, 0xf9, 0xc0, 0xd8, 0xd5, 0x38, 0x97, 0x14, 0x16, 0xac, 0x61, 0x44, 0x2f, 0xc1, 0x71, + 0x12, 0x27, 0x7e, 0xdb, 0x4b, 0x48, 0x5d, 0xdd, 0xc9, 0xac, 0x30, 0x5b, 0xa6, 0x8a, 0x9e, 0xbe, + 0x90, 0xad, 0x70, 0x2b, 0x0f, 0x88, 0x7b, 0x11, 0x19, 0x3b, 0x72, 0xfa, 0x20, 0x3b, 0x12, 0xfd, + 0xb9, 0x03, 0xc7, 0x23, 0xc2, 0xe3, 0x4e, 0x62, 0xd5, 0xb1, 0x53, 0x8c, 0x1d, 0xd7, 0x6c, 0xa4, + 0x51, 0x57, 0xf9, 0x52, 0x70, 0x96, 0x0a, 0x17, 0x5c, 0x88, 0x1c, 0x7d, 0x4f, 0xf9, 0xad, 0x3c, + 0xe0, 0x9b, 0x6f, 0xcf, 0xcc, 0xf4, 0xa6, 0xf3, 0x57, 0xc8, 0xe9, 0xce, 0xfb, 0xbb, 0x6f, 0xcf, + 0x4c, 0xc9, 0xdf, 0xe9, 0xa4, 0xf5, 0x0c, 0x92, 0x1e, 0xab, 0x9d, 0xb0, 0x7e, 0x69, 0x5d, 0xc4, + 0x82, 0xa9, 0x63, 0x75, 0x9d, 0x02, 0x31, 0x2f, 0x43, 0x8f, 0xc3, 0x58, 0xdd, 0x23, 0xed, 0x30, + 0x50, 0x09, 0x71, 0x99, 0x34, 0xbf, 0x28, 0x60, 0x58, 0x95, 0x52, 0x1d, 0x22, 0x10, 0x47, 0x4a, + 0xe5, 0x01, 0x5b, 0x3a, 0x84, 0x3c, 0xa4, 0x38, 0x55, 0xf9, 0x0b, 0x2b, 0x4a, 0xa8, 0x05, 0x23, + 0x3e, 0x33, 0x54, 0x88, 0x70, 0x53, 0x0b, 0xd6, 0x11, 0x6e, 0xf8, 0x90, 0xc1, 0xa6, 0x8c, 0xf5, + 0x0b, 0x1a, 0xfa, 0x59, 0x73, 0xec, 0x68, 0xce, 0x9a, 0xc7, 0x61, 0xac, 0xd6, 0xf4, 0x5b, 0xf5, + 0x88, 0x04, 0x95, 0x29, 0xa6, 0xb1, 0xb3, 0x99, 0x58, 0x10, 0x30, 0xac, 0x4a, 0xd1, 0xdf, 0x80, + 0x89, 0xb0, 0x9b, 0x30, 0xd6, 0x42, 0xe7, 0x29, 0xae, 0x1c, 0x67, 0xd5, 0x59, 0xf0, 0xd0, 0x9a, + 0x5e, 0x80, 0xcd, 0x7a, 0x94, 0xc5, 0x37, 0xc3, 0x98, 0xa5, 0xf6, 0x61, 0x2c, 0xfe, 0xb4, 0xc9, + 0xe2, 0x2f, 0x6a, 0x65, 0xd8, 0xa8, 0x89, 0xbe, 0xe2, 0xc0, 0xf1, 0x76, 0x56, 0x81, 0xab, 0x9c, + 0x61, 0x33, 0x53, 0xb5, 0x21, 0xe8, 0x67, 0x50, 0xf3, 0xb0, 0xef, 0x1e, 0x30, 0xee, 0xed, 0x04, + 0x4b, 0xb2, 0x15, 0xef, 0x06, 0xb5, 0x66, 0x14, 0x06, 0x66, 0xf7, 0xee, 0xb7, 0x75, 0xb5, 0x8c, + 0xed, 0xed, 0x3c, 0x12, 0xf3, 0xf7, 0xdf, 0xdc, 0x9b, 0x39, 0x95, 0x5b, 0x84, 0xf3, 0x3b, 0x35, + 0xbd, 0x08, 0xa7, 0xf3, 0xf9, 0xc3, 0xed, 0x34, 0x8e, 0x21, 0x5d, 0xe3, 0x58, 0x82, 0xfb, 0xfb, + 0x76, 0x8a, 0x9e, 0x34, 0x52, 0xda, 0x74, 0xcc, 0x93, 0xa6, 0x47, 0x3a, 0x9c, 0x84, 0x71, 0xfd, + 0xfd, 0x07, 0xf7, 0xff, 0x0e, 0x01, 0xa4, 0x76, 0x72, 0xe4, 0xc1, 0x24, 0xb7, 0xc9, 0x5f, 0x5a, + 0xbc, 0xe3, 0x4b, 0xf1, 0x0b, 0x06, 0x02, 0x9c, 0x41, 0x88, 0xda, 0x80, 0x38, 0x84, 0xff, 0xbe, + 0x13, 0xdf, 0x2a, 0x73, 0x45, 0x2e, 0xf4, 0x20, 0xc1, 0x39, 0x88, 0xe9, 0x88, 0x92, 0x70, 0x9b, + 0x04, 0x57, 0xf1, 0xe5, 0x3b, 0xc9, 0xac, 0xc0, 0xbd, 0x71, 0x06, 0x02, 0x9c, 0x41, 0x88, 0x5c, + 0x18, 0x61, 0xb6, 0x19, 0x19, 0xa0, 0xcd, 0xd8, 0x0b, 0x93, 0x34, 0x62, 0x2c, 0x4a, 0xd0, 0x97, + 0x1c, 0x98, 0x94, 0x09, 0x22, 0x98, 0x35, 0x54, 0x86, 0x66, 0x5f, 0xb5, 0xe5, 0xe7, 0xb8, 0xa0, + 0x63, 0x4f, 0x03, 0x1f, 0x0d, 0x70, 0x8c, 0x33, 0x9d, 0x70, 0x5f, 0x80, 0x13, 0x39, 0xcd, 0xad, + 0x68, 0xb4, 0xdf, 0x76, 0xa0, 0xac, 0xe5, 0x2d, 0x44, 0xaf, 0x43, 0x29, 0xac, 0x5a, 0x8f, 0xb6, + 0x5b, 0xab, 0xf6, 0x44, 0xdb, 0x29, 0x10, 0x4e, 0x09, 0x0e, 0x12, 0x24, 0x98, 0x9b, 0x64, 0xf1, + 0x1e, 0x77, 0xfb, 0xc0, 0x41, 0x82, 0xbf, 0x52, 0x84, 0x14, 0xd3, 0x01, 0x13, 0x97, 0xa4, 0x21, + 0x85, 0x85, 0x7d, 0x43, 0x0a, 0xeb, 0x70, 0xcc, 0x63, 0xbe, 0xe4, 0x3b, 0x4c, 0x57, 0xc2, 0xd3, + 0xd6, 0x9a, 0x18, 0x70, 0x16, 0x25, 0xa5, 0x12, 0xa7, 0x4d, 0x19, 0x95, 0xe1, 0x03, 0x53, 0xa9, + 0x9a, 0x18, 0x70, 0x16, 0x25, 0x7a, 0x09, 0x2a, 0x35, 0x76, 0xfd, 0x96, 0x8f, 0xf1, 0xd2, 0xd6, + 0x95, 0x30, 0x59, 0x8f, 0x48, 0x4c, 0x82, 0x44, 0x24, 0x26, 0x7b, 0x58, 0xcc, 0x42, 0x65, 0xa1, + 0x4f, 0x3d, 0xdc, 0x17, 0x03, 0x55, 0x53, 0x98, 0x33, 0xda, 0x4f, 0x76, 0x19, 0x13, 0x11, 0x5e, + 0x7a, 0xa5, 0xa6, 0x54, 0xf5, 0x42, 0x6c, 0xd6, 0x45, 0xbf, 0xec, 0xc0, 0x44, 0x4b, 0x9a, 0xeb, + 0x71, 0xb7, 0x25, 0xb3, 0x6c, 0x62, 0x2b, 0xcb, 0xef, 0xb2, 0x8e, 0x99, 0xcb, 0x12, 0x06, 0x08, + 0x9b, 0xb4, 0xb3, 0xb9, 0x63, 0xc6, 0x06, 0xcc, 0x1d, 0xf3, 0x3d, 0x07, 0xa6, 0xb2, 0xd4, 0xd0, + 0x36, 0x3c, 0xd4, 0xf6, 0xa2, 0xed, 0x4b, 0xc1, 0x56, 0xc4, 0x2e, 0x62, 0x24, 0x7c, 0x31, 0xcc, + 0x6d, 0x25, 0x24, 0x5a, 0xf4, 0x76, 0xb9, 0xfb, 0xb3, 0xa8, 0x9e, 0x69, 0x7a, 0x68, 0x75, 0xbf, + 0xca, 0x78, 0x7f, 0x5c, 0xa8, 0x0a, 0xa7, 0x68, 0x05, 0x96, 0x5a, 0xce, 0x0f, 0x83, 0x94, 0x48, + 0x81, 0x11, 0x51, 0xc1, 0x80, 0xab, 0x79, 0x95, 0x70, 0x7e, 0x5b, 0xf7, 0x02, 0x8c, 0xf0, 0x7b, + 0x71, 0x77, 0xe5, 0x3f, 0x72, 0xff, 0x7d, 0x01, 0xa4, 0x60, 0xf8, 0x57, 0xdb, 0x1d, 0x47, 0x0f, + 0xd1, 0x88, 0x99, 0x94, 0x84, 0xb5, 0x83, 0x1d, 0xa2, 0x22, 0x89, 0xa3, 0x28, 0xa1, 0x12, 0x33, + 0xb9, 0xe1, 0x27, 0x0b, 0x61, 0x5d, 0xda, 0x38, 0x98, 0xc4, 0x7c, 0x41, 0xc0, 0xb0, 0x2a, 0x75, + 0x3f, 0xe1, 0xc0, 0x04, 0x1d, 0x65, 0xab, 0x45, 0x5a, 0xd5, 0x84, 0x74, 0x62, 0x14, 0x43, 0x31, + 0xa6, 0xff, 0xd8, 0x33, 0x05, 0xa6, 0x77, 0x29, 0x49, 0x47, 0x73, 0xd6, 0x50, 0x22, 0x98, 0xd3, + 0x72, 0xdf, 0x1a, 0x82, 0x92, 0x9a, 0xec, 0x01, 0xec, 0xa9, 0xe7, 0xd3, 0xfc, 0xaa, 0x9c, 0x03, + 0x57, 0xb4, 0xdc, 0xaa, 0xb7, 0xe8, 0xd4, 0x05, 0xbb, 0x3c, 0xd1, 0x44, 0x9a, 0x68, 0xf5, 0x49, + 0xd3, 0xd5, 0x7c, 0x5a, 0x5f, 0x7f, 0x5a, 0x7d, 0xe1, 0x73, 0xbe, 0xa1, 0x7b, 0xfa, 0x87, 0x6d, + 0x9d, 0x66, 0xca, 0x8d, 0xd9, 0xdf, 0xc5, 0x9f, 0x79, 0x7a, 0xa7, 0x38, 0xd0, 0xd3, 0x3b, 0x4f, + 0xc0, 0x30, 0x09, 0xba, 0x6d, 0x26, 0x2a, 0x95, 0x98, 0x8a, 0x30, 0x7c, 0x21, 0xe8, 0xb6, 0xcd, + 0x91, 0xb1, 0x2a, 0xe8, 0x7d, 0x50, 0xae, 0x93, 0xb8, 0x16, 0xf9, 0x2c, 0x7b, 0x82, 0xb0, 0xec, + 0x3c, 0xc8, 0xcc, 0x65, 0x29, 0xd8, 0x6c, 0xa8, 0x37, 0x70, 0x5f, 0x85, 0x91, 0xf5, 0x56, 0xb7, + 0xe1, 0x07, 0xa8, 0x03, 0x23, 0x3c, 0x97, 0x82, 0x38, 0xed, 0x2d, 0xe8, 0x9d, 0x9c, 0x55, 0x68, + 0x51, 0x28, 0xfc, 0x4a, 0xad, 0xa0, 0xe3, 0xfe, 0x76, 0x01, 0xa8, 0x6a, 0xbe, 0xbc, 0x80, 0xfe, + 0x76, 0xcf, 0x4b, 0x33, 0x3f, 0x93, 0xf3, 0xd2, 0xcc, 0x04, 0xab, 0x9c, 0xf3, 0xc8, 0x4c, 0x0b, + 0x26, 0x98, 0x73, 0x44, 0x9e, 0x81, 0x42, 0xac, 0x7e, 0x7a, 0xc0, 0xf4, 0x03, 0x7a, 0x53, 0x71, + 0x22, 0xe8, 0x20, 0x6c, 0x22, 0x47, 0xbb, 0x70, 0x82, 0xa7, 0xe9, 0x5c, 0x24, 0x2d, 0x6f, 0xd7, + 0x48, 0xc7, 0x35, 0x70, 0xca, 0x03, 0xd9, 0x8a, 0x07, 0x78, 0x2f, 0xf6, 0xa2, 0xc3, 0x79, 0x34, + 0xdc, 0xdf, 0x1f, 0x06, 0xcd, 0x7d, 0x31, 0xc0, 0xce, 0x7a, 0x25, 0xe3, 0xac, 0x5a, 0xb5, 0xe2, + 0xac, 0x92, 0x1e, 0x20, 0xce, 0xad, 0x4c, 0xff, 0x14, 0xed, 0x54, 0x93, 0xb4, 0x3a, 0x62, 0x5f, + 0xaa, 0x4e, 0x5d, 0x24, 0xad, 0x0e, 0x66, 0x25, 0xea, 0xf2, 0xe1, 0x70, 0xdf, 0xcb, 0x87, 0x4d, + 0x28, 0x36, 0xbc, 0x6e, 0x83, 0x88, 0x68, 0x4d, 0x0b, 0x7e, 0x49, 0x76, 0x1d, 0x82, 0xfb, 0x25, + 0xd9, 0xbf, 0x98, 0x13, 0xa0, 0x8c, 0xa1, 0x29, 0xc3, 0x57, 0x84, 0x41, 0xd7, 0x02, 0x63, 0x50, + 0x11, 0x31, 0x9c, 0x31, 0xa8, 0x9f, 0x38, 0x25, 0x86, 0x3a, 0x30, 0x5a, 0xe3, 0x09, 0x53, 0x84, + 0x7c, 0x73, 0xc9, 0xc6, 0xed, 0x4a, 0x86, 0x90, 0x5b, 0x5e, 0xc4, 0x0f, 0x2c, 0xc9, 0xb8, 0xe7, + 0xa0, 0xac, 0x3d, 0x8e, 0x41, 0x3f, 0x83, 0xca, 0xd5, 0xa1, 0x7d, 0x86, 0x45, 0x2f, 0xf1, 0x30, + 0x2b, 0x71, 0xbf, 0x31, 0x0c, 0xca, 0xee, 0xa6, 0xdf, 0x05, 0xf4, 0x6a, 0x5a, 0x66, 0x21, 0xe3, + 0x5e, 0x7c, 0x18, 0x60, 0x51, 0x4a, 0x65, 0xc0, 0x36, 0x89, 0x1a, 0x4a, 0xe7, 0x16, 0xac, 0x5d, + 0xc9, 0x80, 0xab, 0x7a, 0x21, 0x36, 0xeb, 0x52, 0x01, 0xbe, 0x2d, 0xdc, 0xf9, 0xd9, 0x60, 0x69, + 0xe9, 0xe6, 0xc7, 0xaa, 0x06, 0x4b, 0x4d, 0xd0, 0xd6, 0xbc, 0xff, 0x22, 0x68, 0xd3, 0x86, 0xf3, + 0x49, 0xc3, 0xca, 0x83, 0xab, 0x74, 0x08, 0x36, 0xa8, 0xa2, 0x65, 0x38, 0x1e, 0x93, 0x64, 0xed, + 0x7a, 0x40, 0x22, 0x95, 0x36, 0x40, 0xe4, 0xbe, 0x50, 0x37, 0x25, 0xaa, 0xd9, 0x0a, 0xb8, 0xb7, + 0x4d, 0x6e, 0x9c, 0x6b, 0xf1, 0xc0, 0x71, 0xae, 0x8b, 0x30, 0xb5, 0xe5, 0xf9, 0xad, 0x6e, 0x44, + 0xfa, 0x46, 0xcb, 0x2e, 0x65, 0xca, 0x71, 0x4f, 0x0b, 0x76, 0x59, 0xa7, 0xe5, 0x35, 0xe2, 0xca, + 0xa8, 0x76, 0x59, 0x87, 0x02, 0x30, 0x87, 0xbb, 0xbf, 0xe9, 0x00, 0x4f, 0x3a, 0x34, 0xb7, 0xb5, + 0xe5, 0x07, 0x7e, 0xb2, 0x8b, 0xbe, 0xea, 0xc0, 0x54, 0x10, 0xd6, 0xc9, 0x5c, 0x90, 0xf8, 0x12, + 0x68, 0x2f, 0x13, 0x3c, 0xa3, 0x75, 0x25, 0x83, 0x9e, 0x67, 0xb0, 0xc8, 0x42, 0x71, 0x4f, 0x37, + 0xdc, 0x33, 0x70, 0x2a, 0x17, 0x81, 0xfb, 0xbd, 0x21, 0x30, 0x73, 0x27, 0xa1, 0xe7, 0xa0, 0xd8, + 0x62, 0xd9, 0x3c, 0x9c, 0x3b, 0x4c, 0x8a, 0xc5, 0xe6, 0x8a, 0xa7, 0xfb, 0xe0, 0x98, 0xd0, 0x22, + 0x94, 0x59, 0x42, 0x26, 0x91, 0x6b, 0xa5, 0x60, 0xa4, 0x39, 0x28, 0xe3, 0xb4, 0xe8, 0x96, 0xf9, + 0x13, 0xeb, 0xcd, 0xd0, 0x6b, 0x30, 0xba, 0xc9, 0xd3, 0x52, 0xda, 0xf3, 0x0f, 0x8a, 0x3c, 0x97, + 0x4c, 0x8e, 0x92, 0x49, 0x2f, 0x6f, 0xa5, 0xff, 0x62, 0x49, 0x11, 0xed, 0xc2, 0x98, 0x27, 0xbf, + 0xe9, 0xb0, 0xad, 0xcb, 0x17, 0xc6, 0xfa, 0x11, 0xd1, 0x35, 0xf2, 0x1b, 0x2a, 0x72, 0x99, 0x30, + 0xa4, 0xe2, 0x40, 0x61, 0x48, 0xdf, 0x72, 0x00, 0xd2, 0x37, 0x3c, 0xd0, 0x0d, 0x18, 0x8b, 0x9f, + 0x36, 0x8c, 0x1a, 0x36, 0x6e, 0xdd, 0x0b, 0x8c, 0xda, 0xcd, 0x54, 0x01, 0xc1, 0x8a, 0xda, 0xed, + 0x0c, 0x31, 0x3f, 0x71, 0xe0, 0x64, 0xde, 0x5b, 0x23, 0xf7, 0xb0, 0xc7, 0x07, 0xb5, 0xc1, 0x88, + 0x06, 0xeb, 0x11, 0xd9, 0xf2, 0x6f, 0xe4, 0x24, 0x47, 0xe6, 0x05, 0x38, 0xad, 0xe3, 0xbe, 0x39, + 0x0a, 0x8a, 0xf0, 0x21, 0xd9, 0x6c, 0x1e, 0xa3, 0xfa, 0x55, 0x23, 0xbd, 0x2c, 0xa9, 0xea, 0x61, + 0x06, 0xc5, 0xa2, 0x94, 0xea, 0x58, 0x32, 0x80, 0x5e, 0xb0, 0x6c, 0xb6, 0x0a, 0x65, 0xa0, 0x3d, + 0x56, 0xa5, 0x79, 0x56, 0xa0, 0xe2, 0x91, 0x58, 0x81, 0x46, 0xec, 0x5b, 0x81, 0x9e, 0x80, 0xd1, + 0x28, 0x6c, 0x91, 0x39, 0x7c, 0x45, 0x68, 0x0e, 0x69, 0x00, 0x04, 0x07, 0x63, 0x59, 0x7e, 0x87, + 0x76, 0x10, 0xf4, 0x3b, 0xce, 0x3e, 0x86, 0xa6, 0x92, 0xad, 0x33, 0x21, 0x37, 0x93, 0x1c, 0x53, + 0x83, 0xee, 0xc4, 0x7a, 0xf5, 0x35, 0x07, 0x8e, 0x93, 0xa0, 0x16, 0xed, 0x32, 0x3c, 0x02, 0x9b, + 0xf0, 0x4f, 0x5f, 0xb5, 0xb1, 0xf9, 0x2e, 0x64, 0x91, 0x73, 0x37, 0x50, 0x0f, 0x18, 0xf7, 0x76, + 0x03, 0xad, 0xc1, 0x58, 0xcd, 0x13, 0x2b, 0xa2, 0x7c, 0x90, 0x15, 0xc1, 0xbd, 0x6c, 0x73, 0x62, + 0x29, 0x28, 0x24, 0xee, 0x8f, 0x0a, 0x70, 0x22, 0xa7, 0x4b, 0xec, 0xb2, 0x55, 0x9b, 0xae, 0xc8, + 0x4b, 0xf5, 0xec, 0x7e, 0x5c, 0x11, 0x70, 0xac, 0x6a, 0xa0, 0x75, 0x38, 0xb9, 0xdd, 0x8e, 0x53, + 0x2c, 0x0b, 0x61, 0x90, 0x90, 0x1b, 0x72, 0x77, 0x4a, 0xdf, 0xf5, 0xc9, 0x95, 0x9c, 0x3a, 0x38, + 0xb7, 0x25, 0x15, 0x5f, 0x48, 0xe0, 0x6d, 0xb6, 0x48, 0x5a, 0x24, 0xae, 0x0a, 0x2a, 0xf1, 0xe5, + 0x42, 0xa6, 0x1c, 0xf7, 0xb4, 0x40, 0x9f, 0x71, 0xe0, 0x81, 0x98, 0x44, 0x3b, 0x24, 0xaa, 0xfa, + 0x75, 0xb2, 0xd0, 0x8d, 0x93, 0xb0, 0x4d, 0xa2, 0x3b, 0x34, 0xad, 0xce, 0xdc, 0xdc, 0x9b, 0x79, + 0xa0, 0xda, 0x1f, 0x1b, 0xde, 0x8f, 0x94, 0xfb, 0x19, 0x07, 0x26, 0xab, 0x4c, 0xf1, 0x56, 0xb2, + 0xb4, 0xed, 0x5c, 0xa2, 0x8f, 0xa9, 0xe4, 0x16, 0x19, 0xae, 0x68, 0xa6, 0xa3, 0x70, 0x5f, 0x86, + 0xa9, 0x2a, 0x69, 0x7b, 0x9d, 0x26, 0xbb, 0xe7, 0xcb, 0x63, 0xb7, 0xce, 0x41, 0x29, 0x96, 0xb0, + 0xec, 0xf3, 0x41, 0xaa, 0x32, 0x4e, 0xeb, 0xa0, 0x47, 0x79, 0x9c, 0x99, 0xbc, 0x2d, 0x54, 0xe2, + 0x5a, 0x07, 0x0f, 0x4e, 0x8b, 0xb1, 0x2c, 0x73, 0xdf, 0x72, 0x60, 0x3c, 0x6d, 0x4f, 0xb6, 0x50, + 0x03, 0x8e, 0xd5, 0xb4, 0x9b, 0x76, 0xe9, 0x1d, 0x87, 0xc1, 0x2f, 0xe5, 0xf1, 0x14, 0xc7, 0x26, + 0x12, 0x9c, 0xc5, 0x7a, 0xf0, 0x30, 0xbd, 0xcf, 0x17, 0xe0, 0x98, 0xea, 0xaa, 0x70, 0x32, 0xbe, + 0x91, 0x8d, 0xa6, 0xc3, 0x36, 0xd2, 0xf4, 0x98, 0x73, 0xbf, 0x4f, 0x44, 0xdd, 0x1b, 0xd9, 0x88, + 0xba, 0x43, 0x25, 0xdf, 0xe3, 0x37, 0xfd, 0x56, 0x01, 0xc6, 0x54, 0xd2, 0xa0, 0xe7, 0xa0, 0xc8, + 0x54, 0xc9, 0xbb, 0x13, 0x88, 0x99, 0x5a, 0x8a, 0x39, 0x26, 0x8a, 0x92, 0x45, 0xec, 0xdc, 0x71, + 0xe2, 0xd9, 0x12, 0x37, 0x3e, 0x7a, 0x51, 0x82, 0x39, 0x26, 0xb4, 0x02, 0x43, 0x24, 0xa8, 0x0b, + 0xc9, 0xf8, 0xe0, 0x08, 0xd9, 0x43, 0x5f, 0x17, 0x82, 0x3a, 0xa6, 0x58, 0x58, 0xe6, 0x32, 0x2e, + 0x00, 0x65, 0x9e, 0x75, 0x11, 0xd2, 0x8f, 0x28, 0x75, 0xdf, 0x0f, 0x46, 0xce, 0x3a, 0x91, 0x0b, + 0x5f, 0x28, 0x5d, 0xbd, 0x6f, 0x71, 0x09, 0x6d, 0x2b, 0xad, 0xe3, 0xfe, 0xf2, 0x10, 0x8c, 0x54, + 0xbb, 0x9b, 0x54, 0x49, 0xf8, 0xa6, 0x03, 0x27, 0xae, 0x67, 0xd2, 0x3a, 0xa7, 0x9b, 0xe4, 0xaa, + 0x3d, 0x0b, 0xae, 0x1e, 0x76, 0xf6, 0x80, 0x7c, 0xf4, 0x3e, 0xa7, 0x10, 0xe7, 0x75, 0xc7, 0xc8, + 0xac, 0x3a, 0x74, 0x28, 0x99, 0x55, 0x6f, 0x1c, 0xf2, 0xbd, 0x8b, 0x89, 0x7e, 0x77, 0x2e, 0xdc, + 0xdf, 0x2f, 0x02, 0xf0, 0xaf, 0xb1, 0xd6, 0x49, 0x06, 0xb1, 0xb3, 0x3d, 0x03, 0xe3, 0x0d, 0x12, + 0x90, 0x48, 0x06, 0x15, 0x66, 0x9e, 0x1c, 0x5a, 0xd6, 0xca, 0xb0, 0x51, 0x93, 0x29, 0x35, 0x41, + 0x12, 0xed, 0x72, 0xc1, 0x37, 0x7b, 0xb7, 0x42, 0x95, 0x60, 0xad, 0x16, 0x9a, 0x35, 0x5c, 0x26, + 0xdc, 0xfb, 0x3e, 0xb9, 0x8f, 0x87, 0xe3, 0x7d, 0x30, 0x69, 0x26, 0x2a, 0x11, 0xd2, 0x9e, 0xf2, + 0x96, 0x9b, 0xf9, 0x4d, 0x70, 0xa6, 0x36, 0xdd, 0x05, 0xf5, 0x68, 0x17, 0x77, 0x03, 0x21, 0xf6, + 0xa9, 0x5d, 0xb0, 0xc8, 0xa0, 0x58, 0x94, 0xb2, 0x0c, 0x0f, 0xec, 0x00, 0xe4, 0x70, 0x91, 0x25, + 0x22, 0xcd, 0xf0, 0xa0, 0x95, 0x61, 0xa3, 0x26, 0xa5, 0x20, 0xec, 0x94, 0x60, 0xee, 0xb3, 0x8c, + 0x71, 0xb1, 0x03, 0x93, 0xa1, 0x69, 0x5f, 0xe1, 0x32, 0xd0, 0xbb, 0x06, 0x5c, 0x7a, 0x46, 0x5b, + 0x1e, 0xe5, 0x90, 0x31, 0xc7, 0x64, 0xf0, 0x53, 0xb9, 0x57, 0xbf, 0x82, 0x30, 0x6e, 0xc6, 0xa4, + 0xf6, 0xbd, 0x25, 0xb0, 0x0e, 0x27, 0x3b, 0x61, 0x7d, 0x3d, 0xf2, 0xc3, 0xc8, 0x4f, 0x76, 0x17, + 0x5a, 0x5e, 0x1c, 0xb3, 0x85, 0x31, 0x61, 0xca, 0x43, 0xeb, 0x39, 0x75, 0x70, 0x6e, 0x4b, 0xaa, + 0xa1, 0x74, 0x04, 0x90, 0x45, 0x86, 0x15, 0xb9, 0x44, 0x27, 0x2b, 0x62, 0x55, 0xea, 0x9e, 0x80, + 0xe3, 0xd5, 0x6e, 0xa7, 0xd3, 0xf2, 0x49, 0x5d, 0xb9, 0x24, 0xdc, 0xf7, 0xc3, 0x31, 0x91, 0x77, + 0x55, 0x49, 0x1f, 0x07, 0xca, 0x12, 0xee, 0xfe, 0xb9, 0x03, 0xc7, 0x32, 0x71, 0x38, 0xe8, 0xb5, + 0xac, 0xcc, 0x60, 0x27, 0x1f, 0xa8, 0x26, 0x2d, 0x88, 0xe4, 0x9e, 0x79, 0xf2, 0x47, 0x53, 0x06, + 0xd1, 0x5b, 0xbb, 0xbc, 0xc2, 0x42, 0xcd, 0xf9, 0x91, 0xa2, 0x47, 0xe2, 0xbb, 0x9f, 0x2e, 0x40, + 0x7e, 0xf0, 0x13, 0xfa, 0x68, 0xef, 0x04, 0x3c, 0x67, 0x71, 0x02, 0x44, 0xf4, 0x55, 0xff, 0x39, + 0x08, 0xcc, 0x39, 0x58, 0xb5, 0x34, 0x07, 0x82, 0x6e, 0xef, 0x4c, 0xfc, 0x2f, 0x07, 0xca, 0x1b, + 0x1b, 0x97, 0xd5, 0x39, 0x87, 0xe1, 0x74, 0xcc, 0x2f, 0xe7, 0x33, 0x1f, 0xf1, 0x42, 0xd8, 0xee, + 0x70, 0x97, 0xb1, 0x70, 0x65, 0xb3, 0x14, 0xb8, 0xd5, 0xdc, 0x1a, 0xb8, 0x4f, 0x4b, 0x74, 0x09, + 0x4e, 0xe8, 0x25, 0x55, 0xed, 0xc5, 0xc1, 0xa2, 0x48, 0x88, 0xd3, 0x5b, 0x8c, 0xf3, 0xda, 0x64, + 0x51, 0x09, 0x73, 0x27, 0x3b, 0xae, 0x72, 0x50, 0x89, 0x62, 0x9c, 0xd7, 0xc6, 0x5d, 0x83, 0xf2, + 0x86, 0x17, 0xa9, 0x81, 0x7f, 0x00, 0xa6, 0x6a, 0x61, 0x5b, 0x9a, 0x99, 0x2e, 0x93, 0x1d, 0xd2, + 0x12, 0x43, 0xe6, 0xcf, 0x7c, 0x64, 0xca, 0x70, 0x4f, 0x6d, 0xf7, 0xbf, 0x9f, 0x05, 0x75, 0xd9, + 0x70, 0x80, 0x13, 0xa6, 0xa3, 0xc2, 0x42, 0x8b, 0x96, 0xc3, 0x42, 0x15, 0xaf, 0xcd, 0x84, 0x86, + 0x26, 0x69, 0x68, 0xe8, 0x88, 0xed, 0xd0, 0x50, 0x25, 0x71, 0xf6, 0x84, 0x87, 0x7e, 0xd9, 0x81, + 0xf1, 0x20, 0xac, 0x13, 0xe5, 0xcb, 0x1b, 0x65, 0x62, 0xef, 0x4b, 0xf6, 0xa2, 0xec, 0x79, 0x98, + 0xa3, 0x40, 0xcf, 0x43, 0x96, 0xd5, 0x11, 0xa5, 0x17, 0x61, 0xa3, 0x1f, 0x68, 0x49, 0x33, 0x7c, + 0x72, 0xff, 0xc2, 0x83, 0x79, 0xfa, 0xca, 0x6d, 0xad, 0x98, 0x37, 0x34, 0xb9, 0xa9, 0x64, 0xcb, + 0xa0, 0x27, 0x6f, 0x90, 0x69, 0x6e, 0x12, 0x99, 0xc5, 0x39, 0x95, 0xa7, 0x5c, 0x18, 0xe1, 0xb1, + 0xcd, 0x22, 0xf5, 0x12, 0xf3, 0xde, 0xf1, 0xb8, 0x67, 0x2c, 0x4a, 0x50, 0x22, 0xe3, 0x05, 0xca, + 0xb6, 0xde, 0x64, 0x30, 0xe2, 0x11, 0xf2, 0x03, 0x06, 0xd0, 0xb3, 0xba, 0x1e, 0x3c, 0x3e, 0x88, + 0x1e, 0x3c, 0xd1, 0x57, 0x07, 0xfe, 0x9c, 0x03, 0xe3, 0x35, 0xed, 0x8d, 0x84, 0xca, 0xe3, 0xb6, + 0xde, 0x82, 0xce, 0x7b, 0xca, 0x82, 0x3b, 0x85, 0x8c, 0x37, 0x19, 0x0c, 0xea, 0x2c, 0xdf, 0x24, + 0x53, 0xfa, 0xd9, 0xd1, 0x6f, 0x25, 0xc5, 0x84, 0x69, 0x44, 0x90, 0x71, 0x97, 0x14, 0x86, 0x05, + 0x2d, 0xf4, 0x3a, 0x8c, 0xc9, 0xf0, 0x78, 0x11, 0x46, 0x8e, 0x6d, 0x58, 0xe9, 0x4d, 0x57, 0xa0, + 0x4c, 0x52, 0xc7, 0xa1, 0x58, 0x51, 0x44, 0x4d, 0x18, 0xaa, 0x7b, 0x0d, 0x11, 0x50, 0xbe, 0x6a, + 0x27, 0x09, 0xa8, 0xa4, 0xc9, 0xf4, 0xb3, 0xc5, 0xb9, 0x65, 0x4c, 0x49, 0xa0, 0x1b, 0x69, 0x92, + 0xf9, 0x29, 0x6b, 0xa7, 0xaf, 0x29, 0x26, 0x71, 0xb3, 0x46, 0x4f, 0xce, 0xfa, 0xba, 0xf0, 0x9e, + 0xfe, 0x35, 0x46, 0x76, 0xc9, 0x4e, 0x16, 0x51, 0x9e, 0xb2, 0x24, 0xf5, 0xc0, 0x52, 0x2a, 0xcd, + 0x24, 0xe9, 0x54, 0x7e, 0xd6, 0x16, 0x15, 0x96, 0x78, 0x83, 0x3f, 0xdb, 0xbd, 0xb1, 0xb1, 0x8e, + 0x19, 0x76, 0xd4, 0x82, 0x91, 0x0e, 0x0b, 0x02, 0xa9, 0xfc, 0x9c, 0xad, 0xb3, 0x85, 0x07, 0x95, + 0xf0, 0xb5, 0xc9, 0xff, 0xc7, 0x82, 0x06, 0xba, 0x00, 0xa3, 0xfc, 0xad, 0x14, 0x1e, 0xd0, 0x5f, + 0x3e, 0x3f, 0xdd, 0xff, 0xc5, 0x95, 0xf4, 0xa0, 0xe0, 0xbf, 0x63, 0x2c, 0xdb, 0xa2, 0xcf, 0x3b, + 0x30, 0x49, 0x39, 0x6a, 0xfa, 0xb8, 0x4b, 0x05, 0xd9, 0xe2, 0x59, 0x57, 0x63, 0x2a, 0x91, 0x48, + 0x5e, 0xa3, 0xd4, 0xa4, 0x4b, 0x06, 0x39, 0x9c, 0x21, 0x8f, 0xde, 0x80, 0xb1, 0xd8, 0xaf, 0x93, + 0x9a, 0x17, 0xc5, 0x95, 0x13, 0x87, 0xd3, 0x95, 0xd4, 0x5f, 0x23, 0x08, 0x61, 0x45, 0x12, 0xfd, + 0x1a, 0x7b, 0x5d, 0x53, 0xbc, 0x84, 0x5f, 0xe3, 0x62, 0xfd, 0x49, 0x5b, 0x7b, 0x5f, 0x7a, 0xa6, + 0x24, 0x66, 0xe1, 0xc6, 0x30, 0xc9, 0xe1, 0x2c, 0x7d, 0xf4, 0x77, 0x1c, 0x38, 0xc5, 0xf3, 0xe4, + 0x67, 0x1f, 0x76, 0x38, 0x75, 0x87, 0xf6, 0x19, 0x76, 0x13, 0x61, 0x2e, 0x0f, 0x25, 0xce, 0xa7, + 0xc4, 0xb2, 0xda, 0x9a, 0x6f, 0xf1, 0x9c, 0xb6, 0xea, 0xb7, 0x1c, 0xfc, 0xfd, 0x1d, 0xf4, 0x14, + 0x94, 0x3b, 0xe2, 0x38, 0xf4, 0xe3, 0x36, 0xbb, 0x57, 0x32, 0xc4, 0x6f, 0xfc, 0xad, 0xa7, 0x60, + 0xac, 0xd7, 0x31, 0x52, 0x1c, 0x3f, 0xb1, 0x5f, 0x8a, 0x63, 0x74, 0x15, 0xca, 0x49, 0xd8, 0x12, + 0x59, 0x3e, 0xe3, 0x4a, 0x85, 0xad, 0xc0, 0xb3, 0x79, 0x7b, 0x6b, 0x43, 0x55, 0x4b, 0x35, 0xd9, + 0x14, 0x16, 0x63, 0x1d, 0x0f, 0x8b, 0xe5, 0x15, 0xef, 0x0f, 0x44, 0x4c, 0x85, 0xbd, 0x3f, 0x13, + 0xcb, 0xab, 0x17, 0x62, 0xb3, 0x2e, 0x5a, 0x86, 0xe3, 0x9d, 0x1e, 0x1d, 0x98, 0xdf, 0x67, 0x53, + 0x21, 0x11, 0xbd, 0x0a, 0x70, 0x6f, 0x1b, 0x43, 0xfb, 0x7d, 0x60, 0x3f, 0xed, 0xb7, 0x4f, 0xc2, + 0xdf, 0x07, 0xef, 0x24, 0xe1, 0x2f, 0xaa, 0xc3, 0x83, 0x5e, 0x37, 0x09, 0x59, 0x72, 0x19, 0xb3, + 0x09, 0x0f, 0x6b, 0x7e, 0x98, 0x47, 0x4a, 0xdf, 0xdc, 0x9b, 0x79, 0x70, 0x6e, 0x9f, 0x7a, 0x78, + 0x5f, 0x2c, 0xe8, 0x55, 0x18, 0x23, 0x22, 0x69, 0x71, 0xe5, 0x67, 0x6c, 0x09, 0x09, 0x66, 0x1a, + 0x64, 0x19, 0x31, 0xca, 0x61, 0x58, 0xd1, 0x43, 0x1b, 0x50, 0x6e, 0x86, 0x71, 0x32, 0xd7, 0xf2, + 0xbd, 0x98, 0xc4, 0x95, 0x87, 0xd8, 0xa2, 0xc9, 0x95, 0xbd, 0x2e, 0xca, 0x6a, 0xe9, 0x9a, 0xb9, + 0x98, 0xb6, 0xc4, 0x3a, 0x1a, 0x44, 0x98, 0xf7, 0x92, 0xc5, 0x74, 0x4b, 0x47, 0xd0, 0x59, 0x36, + 0xb0, 0xc7, 0xf2, 0x30, 0xaf, 0x87, 0xf5, 0xaa, 0x59, 0x5b, 0xb9, 0x2f, 0x75, 0x20, 0xce, 0xe2, + 0x44, 0xcf, 0xc0, 0x78, 0x27, 0xac, 0x57, 0x3b, 0xa4, 0xb6, 0xee, 0x25, 0xb5, 0x66, 0x65, 0xc6, + 0xb4, 0xba, 0xad, 0x6b, 0x65, 0xd8, 0xa8, 0x89, 0x3a, 0x30, 0xda, 0xe6, 0x59, 0x07, 0x2a, 0x8f, + 0xd8, 0xd2, 0x6d, 0x44, 0x1a, 0x03, 0x2e, 0x2f, 0x88, 0x1f, 0x58, 0x92, 0x41, 0xff, 0xd8, 0x81, + 0x63, 0x99, 0x9b, 0x52, 0x95, 0x77, 0x58, 0x13, 0x59, 0x4c, 0xc4, 0xf3, 0x8f, 0xb1, 0xe9, 0x33, + 0x81, 0xb7, 0x7a, 0x41, 0x38, 0xdb, 0x23, 0x3e, 0x2f, 0x2c, 0x75, 0x48, 0xe5, 0x51, 0x7b, 0xf3, + 0xc2, 0x10, 0xca, 0x79, 0x61, 0x3f, 0xb0, 0x24, 0x83, 0x9e, 0x80, 0x51, 0x91, 0xe5, 0xaf, 0xf2, + 0x98, 0xe9, 0x82, 0x16, 0xc9, 0x00, 0xb1, 0x2c, 0x9f, 0x7e, 0x3f, 0x1c, 0xef, 0x51, 0xdd, 0x0e, + 0x94, 0xbf, 0xe2, 0x37, 0x1c, 0xd0, 0xaf, 0x56, 0x5b, 0x7f, 0x29, 0xe4, 0x19, 0x18, 0xaf, 0xf1, + 0x67, 0x19, 0xf9, 0xe5, 0xec, 0x61, 0xd3, 0xfe, 0xb9, 0xa0, 0x95, 0x61, 0xa3, 0xa6, 0x7b, 0x11, + 0x50, 0x6f, 0x1a, 0xf7, 0x3b, 0x4a, 0x8e, 0xf4, 0x4f, 0x1d, 0x98, 0x30, 0x64, 0x06, 0xeb, 0x4e, + 0xc6, 0x25, 0x40, 0x6d, 0x3f, 0x8a, 0xc2, 0x48, 0x7f, 0xff, 0x4e, 0x24, 0x50, 0x60, 0x57, 0xd4, + 0x56, 0x7b, 0x4a, 0x71, 0x4e, 0x0b, 0xf7, 0xb7, 0x87, 0x21, 0x0d, 0x99, 0x56, 0x79, 0x72, 0x9d, + 0xbe, 0x79, 0x72, 0x9f, 0x84, 0xb1, 0x97, 0xe3, 0x30, 0x58, 0x4f, 0xb3, 0xe9, 0xaa, 0x6f, 0xf1, + 0x6c, 0x75, 0xed, 0x0a, 0xab, 0xa9, 0x6a, 0xb0, 0xda, 0xaf, 0x2c, 0xf9, 0xad, 0xa4, 0x37, 0xdd, + 0xea, 0xb3, 0xcf, 0x71, 0x38, 0x56, 0x35, 0xd8, 0x53, 0x78, 0x3b, 0x44, 0x19, 0xc6, 0xd3, 0xa7, + 0xf0, 0xf8, 0x0b, 0x0d, 0xac, 0x0c, 0x9d, 0x83, 0x92, 0x32, 0xaa, 0x0b, 0x4b, 0xbd, 0x9a, 0x29, + 0x65, 0x79, 0xc7, 0x69, 0x1d, 0x26, 0x10, 0x0a, 0x43, 0xac, 0x30, 0xa1, 0x54, 0x6d, 0xa8, 0x27, + 0x19, 0xd3, 0x2e, 0xe7, 0xed, 0x12, 0x8c, 0x15, 0xc9, 0x3c, 0x47, 0x6b, 0xe9, 0x50, 0x1c, 0xad, + 0x5a, 0xfc, 0x7e, 0x71, 0xd0, 0xf8, 0x7d, 0x73, 0x6d, 0x8f, 0x0d, 0xb4, 0xb6, 0x3f, 0x39, 0x04, + 0xa3, 0xcf, 0x93, 0x88, 0x65, 0x19, 0x7f, 0x02, 0x46, 0x77, 0xf8, 0xbf, 0xd9, 0xcb, 0x9f, 0xa2, + 0x06, 0x96, 0xe5, 0xf4, 0xbb, 0x6d, 0x76, 0xfd, 0x56, 0x7d, 0x31, 0xdd, 0xc5, 0x69, 0x82, 0x42, + 0x59, 0x80, 0xd3, 0x3a, 0xb4, 0x41, 0x83, 0x4a, 0xf6, 0xed, 0xb6, 0xdf, 0xf3, 0xca, 0xfb, 0xb2, + 0x2c, 0xc0, 0x69, 0x1d, 0xf4, 0x18, 0x8c, 0x34, 0xfc, 0x64, 0xc3, 0x6b, 0x64, 0xdd, 0x84, 0xcb, + 0x0c, 0x8a, 0x45, 0x29, 0x73, 0x13, 0xf9, 0xc9, 0x46, 0x44, 0x98, 0x65, 0xb7, 0x27, 0xf7, 0xc4, + 0xb2, 0x56, 0x86, 0x8d, 0x9a, 0xac, 0x4b, 0xa1, 0x18, 0x99, 0x88, 0xe2, 0x4c, 0xbb, 0x24, 0x0b, + 0x70, 0x5a, 0x87, 0xae, 0xff, 0x5a, 0xd8, 0xee, 0xf8, 0x2d, 0x11, 0x5f, 0xac, 0xad, 0xff, 0x05, + 0x01, 0xc7, 0xaa, 0x06, 0xad, 0x4d, 0x59, 0x18, 0x65, 0x3f, 0xd9, 0x67, 0xc7, 0xd6, 0x05, 0x1c, + 0xab, 0x1a, 0xee, 0xf3, 0x30, 0xc1, 0x77, 0xf2, 0x42, 0xcb, 0xf3, 0xdb, 0xcb, 0x0b, 0xe8, 0x42, + 0x4f, 0xfc, 0xfe, 0x13, 0x39, 0xf1, 0xfb, 0xa7, 0x8c, 0x46, 0xbd, 0x71, 0xfc, 0xee, 0x0f, 0x0a, + 0x30, 0x76, 0x84, 0x2f, 0x37, 0x1e, 0xf9, 0x23, 0xc4, 0xe8, 0x46, 0xe6, 0xd5, 0xc6, 0x75, 0x9b, + 0xd7, 0x71, 0xf6, 0x7d, 0xb1, 0xf1, 0xbf, 0x14, 0xe0, 0xb4, 0xac, 0x2a, 0x75, 0xb9, 0xe5, 0x05, + 0xf6, 0x5e, 0xd6, 0xe1, 0x4f, 0x74, 0x64, 0x4c, 0xf4, 0xba, 0x3d, 0x6d, 0x74, 0x79, 0xa1, 0xef, + 0x54, 0xbf, 0x9a, 0x99, 0x6a, 0x6c, 0x95, 0xea, 0xfe, 0x93, 0xfd, 0x17, 0x0e, 0x4c, 0xe7, 0x4f, + 0xf6, 0x11, 0x3c, 0x94, 0xf9, 0x86, 0xf9, 0x50, 0xe6, 0x2f, 0xd8, 0x5b, 0x62, 0xe6, 0x50, 0xfa, + 0x3c, 0x99, 0xf9, 0x67, 0x0e, 0x9c, 0x94, 0x0d, 0xd8, 0xe9, 0x39, 0xef, 0x07, 0x2c, 0x92, 0xe5, + 0xf0, 0x97, 0xd9, 0xeb, 0xc6, 0x32, 0x7b, 0xd1, 0xde, 0xc0, 0xf5, 0x71, 0xf4, 0x7d, 0x60, 0xfc, + 0x4f, 0x1d, 0xa8, 0xe4, 0x35, 0x38, 0x82, 0x4f, 0xfe, 0x9a, 0xf9, 0xc9, 0x9f, 0x3f, 0x9c, 0x91, + 0xf7, 0xff, 0xe0, 0x95, 0x7e, 0x13, 0x85, 0x5a, 0x52, 0xae, 0x72, 0x6c, 0xf9, 0x68, 0x39, 0x89, + 0x7c, 0x01, 0xad, 0x05, 0x23, 0x31, 0x8b, 0xda, 0x10, 0x4b, 0xe0, 0xa2, 0x0d, 0x69, 0x8b, 0xe2, + 0x13, 0x36, 0x76, 0xf6, 0x3f, 0x16, 0x34, 0xdc, 0xdf, 0x2c, 0xc0, 0x19, 0xf5, 0x00, 0x2e, 0xd9, + 0x21, 0xad, 0x74, 0x7f, 0xb0, 0x37, 0x19, 0x3c, 0xf5, 0xd3, 0xde, 0x9b, 0x0c, 0x29, 0x89, 0x74, + 0x2f, 0xa4, 0x30, 0xac, 0xd1, 0x44, 0x55, 0x38, 0xc5, 0xde, 0x50, 0x58, 0xf2, 0x03, 0xaf, 0xe5, + 0xbf, 0x4a, 0x22, 0x4c, 0xda, 0xe1, 0x8e, 0xd7, 0x12, 0x92, 0xba, 0xba, 0xff, 0xbb, 0x94, 0x57, + 0x09, 0xe7, 0xb7, 0xed, 0xd1, 0xb8, 0x87, 0x06, 0xd5, 0xb8, 0xdd, 0x3f, 0x71, 0x60, 0xfc, 0x08, + 0x9f, 0x0b, 0x0e, 0xcd, 0x2d, 0xf1, 0xac, 0xbd, 0x2d, 0xd1, 0x67, 0x1b, 0xec, 0x15, 0xa1, 0xe7, + 0x05, 0x55, 0xf4, 0x29, 0x47, 0xc5, 0xb5, 0xf0, 0xe0, 0xc1, 0x0f, 0xd9, 0xeb, 0xc7, 0x41, 0x92, + 0x46, 0xa2, 0xaf, 0x65, 0x32, 0x69, 0x16, 0x6c, 0xa5, 0x83, 0xea, 0xe9, 0xcd, 0x1d, 0x64, 0xd4, + 0xfc, 0xb2, 0x03, 0xc0, 0xfb, 0x29, 0x12, 0x71, 0xd3, 0xbe, 0x6d, 0x1e, 0xda, 0x4c, 0x51, 0x22, + 0xbc, 0x6b, 0x6a, 0x0b, 0xa5, 0x05, 0x58, 0xeb, 0xc9, 0x5d, 0xa4, 0xca, 0xbc, 0xeb, 0x2c, 0x9d, + 0x9f, 0x77, 0xe0, 0x58, 0xa6, 0xbb, 0x39, 0xed, 0xb7, 0xcc, 0x27, 0x01, 0x2d, 0x48, 0x56, 0x66, + 0x7a, 0x66, 0xdd, 0x78, 0xf2, 0xdf, 0x5c, 0x30, 0x9e, 0x9e, 0x46, 0xaf, 0x41, 0x49, 0x5a, 0x3e, + 0xe4, 0xf2, 0xb6, 0xf9, 0x34, 0xaa, 0x52, 0x6f, 0x24, 0x24, 0xc6, 0x29, 0xbd, 0x4c, 0xd8, 0x5c, + 0x61, 0xa0, 0xb0, 0xb9, 0x7b, 0xfb, 0xb0, 0x6a, 0xbe, 0x5d, 0x7a, 0xf8, 0x50, 0xec, 0xd2, 0x0f, + 0x5a, 0xb7, 0x4b, 0x3f, 0x74, 0xc4, 0x76, 0x69, 0xcd, 0x49, 0x58, 0xbc, 0x0b, 0x27, 0xe1, 0x6b, + 0x70, 0x72, 0x27, 0x55, 0x3a, 0xd5, 0x4a, 0x12, 0x49, 0x88, 0x9e, 0xc8, 0xb5, 0x46, 0x53, 0x05, + 0x3a, 0x4e, 0x48, 0x90, 0x68, 0xea, 0x6a, 0x1a, 0xb1, 0xf7, 0x7c, 0x0e, 0x3a, 0x9c, 0x4b, 0x24, + 0xeb, 0xed, 0x19, 0x1d, 0xc0, 0xdb, 0xf3, 0x96, 0x03, 0xa7, 0xbc, 0x9e, 0x4b, 0x60, 0x98, 0x6c, + 0x89, 0x90, 0x93, 0x6b, 0xf6, 0x44, 0x08, 0x03, 0xbd, 0x70, 0xab, 0xe5, 0x15, 0xe1, 0xfc, 0x0e, + 0xa1, 0x47, 0x53, 0xd7, 0x3b, 0x8f, 0xf3, 0xcc, 0xf7, 0x93, 0x7f, 0x2d, 0x1b, 0xcf, 0x03, 0x6c, + 0xea, 0x3f, 0x62, 0x57, 0xdb, 0xb6, 0x10, 0xd3, 0x53, 0xbe, 0x8b, 0x98, 0x9e, 0x8c, 0xeb, 0x6d, + 0xdc, 0x92, 0xeb, 0x2d, 0x80, 0x29, 0xbf, 0xed, 0x35, 0xc8, 0x7a, 0xb7, 0xd5, 0xe2, 0x97, 0x48, + 0xe4, 0xe3, 0xb5, 0xb9, 0x16, 0xbc, 0xcb, 0x61, 0xcd, 0x6b, 0x65, 0x9f, 0x2d, 0x57, 0x97, 0x65, + 0x2e, 0x65, 0x30, 0xe1, 0x1e, 0xdc, 0x74, 0xc1, 0xb2, 0x6c, 0x78, 0x24, 0xa1, 0xb3, 0xcd, 0x02, + 0x47, 0xc6, 0xf8, 0x82, 0xbd, 0x98, 0x82, 0xb1, 0x5e, 0x07, 0xad, 0x40, 0xa9, 0x1e, 0xc4, 0xe2, + 0x3e, 0xeb, 0x31, 0xc6, 0xcc, 0xde, 0x49, 0x59, 0xe0, 0xe2, 0x95, 0xaa, 0xba, 0xc9, 0xfa, 0x60, + 0x4e, 0x7a, 0x47, 0x55, 0x8e, 0xd3, 0xf6, 0x68, 0x95, 0x21, 0x13, 0x2f, 0x7b, 0xf1, 0x78, 0x8e, + 0x87, 0xfb, 0x38, 0x8c, 0x16, 0xaf, 0xc8, 0xb7, 0xc9, 0x26, 0x04, 0x39, 0xf1, 0x44, 0x57, 0x8a, + 0x41, 0x7b, 0x44, 0xf8, 0xf8, 0xbe, 0x8f, 0x08, 0xb3, 0xbc, 0xae, 0x49, 0x4b, 0xb9, 0x87, 0xcf, + 0x5a, 0xcb, 0xeb, 0x9a, 0x46, 0x4a, 0x8a, 0xbc, 0xae, 0x29, 0x00, 0xeb, 0x24, 0xd1, 0x5a, 0x3f, + 0x37, 0xf9, 0x09, 0xc6, 0x34, 0x0e, 0xee, 0xf4, 0xd6, 0xfd, 0xa5, 0x27, 0xf7, 0xf5, 0x97, 0xf6, + 0xf8, 0x77, 0x4f, 0x1d, 0xc0, 0xbf, 0xdb, 0x64, 0x19, 0x37, 0x97, 0x17, 0x84, 0x4b, 0xdd, 0x82, + 0x7e, 0xc7, 0x72, 0x7c, 0xf0, 0xc8, 0x53, 0xf6, 0x2f, 0xe6, 0x04, 0xfa, 0x06, 0x54, 0x9f, 0xb9, + 0xe3, 0x80, 0x6a, 0xca, 0x9e, 0x53, 0x38, 0x4b, 0xdd, 0x5a, 0x14, 0xec, 0x39, 0x05, 0x63, 0xbd, + 0x4e, 0xd6, 0x5b, 0x7a, 0xff, 0xa1, 0x79, 0x4b, 0xa7, 0x8f, 0xc0, 0x5b, 0xfa, 0xc0, 0xc0, 0xde, + 0xd2, 0x1b, 0x70, 0xa2, 0x13, 0xd6, 0x17, 0xfd, 0x38, 0xea, 0xb2, 0x5b, 0x75, 0xf3, 0xdd, 0x7a, + 0x83, 0x24, 0xcc, 0xdd, 0x5a, 0x3e, 0xff, 0x4e, 0xbd, 0x93, 0x1d, 0xb6, 0x91, 0xe5, 0x1e, 0xcd, + 0x34, 0x60, 0xa6, 0x13, 0x16, 0x75, 0x9b, 0x53, 0x88, 0xf3, 0x48, 0xe8, 0x7e, 0xda, 0x87, 0x8f, + 0xc6, 0x4f, 0xfb, 0x01, 0x18, 0x8b, 0x9b, 0xdd, 0xa4, 0x1e, 0x5e, 0x0f, 0x98, 0x33, 0xbe, 0x34, + 0xff, 0x0e, 0x65, 0xca, 0x16, 0xf0, 0x5b, 0x7b, 0x33, 0x53, 0xf2, 0x7f, 0xcd, 0x8a, 0x2d, 0x20, + 0xe8, 0xeb, 0x7d, 0xee, 0xef, 0xb8, 0x87, 0x79, 0x7f, 0xe7, 0xcc, 0x81, 0xee, 0xee, 0xe4, 0x39, + 0xa3, 0x1f, 0xf9, 0xa9, 0x73, 0x46, 0x7f, 0xd5, 0x81, 0x89, 0x1d, 0xdd, 0x65, 0x20, 0x1c, 0xe6, + 0x16, 0x02, 0x77, 0x0c, 0x4f, 0xc4, 0xbc, 0x4b, 0xf9, 0x9c, 0x01, 0xba, 0x95, 0x05, 0x60, 0xb3, + 0x27, 0x39, 0x41, 0x45, 0x8f, 0xde, 0xab, 0xa0, 0xa2, 0x37, 0x18, 0x1f, 0x93, 0x4a, 0x2e, 0xf3, + 0xa2, 0xdb, 0x8d, 0x29, 0x96, 0x3c, 0x51, 0x85, 0x14, 0xeb, 0xf4, 0xd0, 0xe7, 0x1c, 0x98, 0x92, + 0x7a, 0x99, 0x70, 0xf9, 0xc5, 0x22, 0x2a, 0xd2, 0xa6, 0x3a, 0xc8, 0xc2, 0xea, 0x37, 0x32, 0x74, + 0x70, 0x0f, 0x65, 0xca, 0xd5, 0x55, 0x10, 0x5a, 0x23, 0x66, 0xc1, 0xbf, 0x42, 0x86, 0x99, 0x4b, + 0xc1, 0x58, 0xaf, 0x83, 0xbe, 0xe1, 0x00, 0x7f, 0x83, 0xbf, 0xf2, 0x04, 0x63, 0xe8, 0x2f, 0x58, + 0x96, 0x4d, 0xd3, 0x57, 0xfd, 0xe7, 0x9f, 0x92, 0xb6, 0x23, 0x06, 0xbb, 0xb5, 0x37, 0x33, 0x69, + 0x3c, 0x4c, 0x14, 0xbf, 0xf9, 0xb6, 0x06, 0x11, 0xb6, 0x4d, 0xd6, 0x35, 0xf4, 0x45, 0x07, 0xa6, + 0xae, 0x67, 0x0c, 0x1a, 0x22, 0x2c, 0x14, 0xdb, 0x37, 0x95, 0xf0, 0xe9, 0xce, 0x42, 0x71, 0x4f, + 0x0f, 0xd0, 0x67, 0x4d, 0x43, 0x27, 0x8f, 0x1f, 0xb5, 0x38, 0x81, 0x19, 0xc3, 0x2a, 0xbf, 0xe6, + 0x96, 0x6f, 0xf1, 0xbc, 0xeb, 0xf8, 0x90, 0x69, 0x3a, 0x98, 0xf4, 0x63, 0xe5, 0x34, 0x25, 0xa6, + 0xbd, 0xc5, 0xc2, 0x66, 0x37, 0x3e, 0xbf, 0x6e, 0x6e, 0xf9, 0xe2, 0x69, 0x98, 0x34, 0x7d, 0x7b, + 0xe8, 0x5d, 0xe6, 0xa3, 0x13, 0x67, 0xb3, 0xf9, 0xfb, 0x27, 0x64, 0x7d, 0x23, 0x87, 0xbf, 0x91, + 0x64, 0xbf, 0x70, 0xa8, 0x49, 0xf6, 0x87, 0x8e, 0x26, 0xc9, 0xfe, 0xd4, 0x61, 0x24, 0xd9, 0x3f, + 0x7e, 0xa0, 0x24, 0xfb, 0xda, 0x23, 0x07, 0xc3, 0xb7, 0x79, 0xe4, 0x60, 0x0e, 0x8e, 0xc9, 0xbb, + 0x3f, 0x44, 0xe4, 0x31, 0xe7, 0x6e, 0xff, 0x33, 0xa2, 0xc9, 0xb1, 0x05, 0xb3, 0x18, 0x67, 0xeb, + 0xd3, 0x4d, 0x56, 0x0c, 0x58, 0xcb, 0x11, 0x5b, 0x2f, 0x20, 0x99, 0x4b, 0x8b, 0xa9, 0xcf, 0x82, + 0x45, 0xc9, 0x68, 0xe7, 0x22, 0x83, 0xdd, 0x92, 0xff, 0x60, 0xde, 0x03, 0xf4, 0x12, 0x54, 0xc2, + 0xad, 0xad, 0x56, 0xe8, 0xd5, 0xd3, 0x97, 0x00, 0x64, 0x5c, 0x02, 0xbf, 0xbb, 0xa9, 0x12, 0xc7, + 0xae, 0xf5, 0xa9, 0x87, 0xfb, 0x62, 0x40, 0x6f, 0x51, 0xc1, 0x24, 0x09, 0x23, 0x52, 0x4f, 0x6d, + 0x35, 0x25, 0x36, 0x66, 0x62, 0x7d, 0xcc, 0x55, 0x93, 0x0e, 0x1f, 0xbd, 0xfa, 0x28, 0x99, 0x52, + 0x9c, 0xed, 0x16, 0x8a, 0xe0, 0x74, 0x27, 0xcf, 0x54, 0x14, 0x8b, 0x1b, 0x4b, 0xfb, 0x19, 0xac, + 0xe4, 0xd6, 0x3d, 0x9d, 0x6b, 0x6c, 0x8a, 0x71, 0x1f, 0xcc, 0x7a, 0xb6, 0xfe, 0xb1, 0xa3, 0xc9, + 0xd6, 0xff, 0x31, 0x00, 0x75, 0x49, 0x5d, 0x1a, 0x1f, 0x56, 0xac, 0x5c, 0xa5, 0xe1, 0x38, 0xb5, + 0x07, 0x52, 0x15, 0x19, 0xac, 0x91, 0x44, 0xff, 0x27, 0xf7, 0x39, 0x0b, 0x6e, 0x61, 0x69, 0x58, + 0x5f, 0x13, 0x3f, 0x75, 0x4f, 0x5a, 0xfc, 0x13, 0x07, 0xa6, 0xf9, 0xca, 0xcb, 0x0a, 0xf7, 0x54, + 0xb4, 0x10, 0x77, 0x7b, 0x6c, 0x87, 0xae, 0xb0, 0x28, 0xbe, 0xaa, 0x41, 0x95, 0x39, 0xba, 0xf7, + 0xe9, 0x09, 0xfa, 0x72, 0x8e, 0x4a, 0x71, 0xcc, 0x96, 0xcd, 0x32, 0xff, 0x51, 0x82, 0x13, 0x37, + 0x07, 0xd1, 0x22, 0xfe, 0x59, 0x5f, 0x93, 0x2a, 0x62, 0xdd, 0xfb, 0xc5, 0x43, 0x32, 0xa9, 0xea, + 0x2f, 0x27, 0x1c, 0xc8, 0xb0, 0xfa, 0x79, 0x07, 0xa6, 0xbc, 0x4c, 0xa8, 0x09, 0xb3, 0x03, 0x59, + 0xb1, 0x49, 0xcd, 0x45, 0x69, 0xfc, 0x0a, 0x13, 0xf2, 0xb2, 0x51, 0x2d, 0xb8, 0x87, 0x38, 0xfa, + 0x81, 0x03, 0x0f, 0x24, 0x5e, 0xbc, 0xcd, 0xf3, 0x12, 0xc7, 0xe9, 0x5d, 0x5d, 0xd1, 0xb9, 0x93, + 0x6c, 0x37, 0xbe, 0x62, 0x7d, 0x37, 0x6e, 0xf4, 0xa7, 0xc9, 0xf7, 0xe5, 0x23, 0x62, 0x5f, 0x3e, + 0xb0, 0x4f, 0x4d, 0xbc, 0x5f, 0xd7, 0xa7, 0x3f, 0xe5, 0xf0, 0xf7, 0xab, 0xfa, 0x8a, 0x7c, 0x9b, + 0xa6, 0xc8, 0x77, 0xd9, 0xe6, 0x0b, 0x3a, 0xba, 0xec, 0xf9, 0xab, 0x0e, 0x9c, 0xcc, 0x3b, 0x91, + 0x72, 0xba, 0xf4, 0x11, 0xb3, 0x4b, 0x16, 0xb5, 0x2c, 0xbd, 0x43, 0x56, 0x1e, 0xf0, 0x98, 0xbe, + 0x02, 0x0f, 0xdf, 0xee, 0x2b, 0xde, 0x0e, 0xdf, 0x98, 0x2e, 0x16, 0xff, 0x69, 0x49, 0xf3, 0x42, + 0x26, 0xa4, 0x63, 0x3d, 0x86, 0x3b, 0x80, 0x11, 0x3f, 0x68, 0xf9, 0x01, 0x11, 0xf7, 0x35, 0x6d, + 0xea, 0xb0, 0xe2, 0x01, 0x1e, 0x8a, 0x1d, 0x0b, 0x2a, 0xf7, 0xd8, 0x29, 0x99, 0x7d, 0xd2, 0x6c, + 0xf8, 0xe8, 0x9f, 0x34, 0xbb, 0x0e, 0xa5, 0xeb, 0x7e, 0xd2, 0x64, 0xc1, 0x14, 0xc2, 0xd7, 0x67, + 0xe1, 0x9e, 0x23, 0x45, 0x97, 0x8e, 0xfd, 0x9a, 0x24, 0x80, 0x53, 0x5a, 0xe8, 0x1c, 0x27, 0xcc, + 0x22, 0xb7, 0xb3, 0x21, 0xb5, 0xd7, 0x64, 0x01, 0x4e, 0xeb, 0xd0, 0xc9, 0x1a, 0xa7, 0xbf, 0x64, + 0x42, 0x24, 0x91, 0xb7, 0xd7, 0x46, 0x3e, 0x46, 0x81, 0x91, 0xdf, 0x26, 0xbe, 0xa6, 0xd1, 0xc0, + 0x06, 0x45, 0x95, 0x3a, 0x79, 0xac, 0x6f, 0xea, 0xe4, 0xd7, 0x99, 0xc0, 0x96, 0xf8, 0x41, 0x97, + 0xac, 0x05, 0x22, 0xde, 0xfb, 0xb2, 0x9d, 0xbb, 0xcf, 0x1c, 0x27, 0x57, 0xc1, 0xd3, 0xdf, 0x58, + 0xa3, 0xa7, 0xb9, 0x5c, 0xca, 0xfb, 0xba, 0x5c, 0x52, 0x93, 0xcb, 0xb8, 0x75, 0x93, 0x4b, 0x42, + 0x3a, 0x56, 0x4c, 0x2e, 0x3f, 0x55, 0xe6, 0x80, 0xbf, 0x70, 0x00, 0x29, 0xb9, 0x4b, 0x31, 0xd4, + 0x23, 0x08, 0xaa, 0xfc, 0xb8, 0x03, 0x10, 0xa8, 0x87, 0x2f, 0xed, 0x9e, 0x82, 0x1c, 0x67, 0xda, + 0x81, 0x14, 0x86, 0x35, 0x9a, 0xee, 0xff, 0x70, 0xd2, 0xd8, 0xe5, 0x74, 0xec, 0x47, 0x10, 0x44, + 0xb6, 0x6b, 0x06, 0x91, 0x6d, 0x58, 0x34, 0xdd, 0xab, 0x61, 0xf4, 0x09, 0x27, 0xfb, 0x71, 0x01, + 0x8e, 0xe9, 0x95, 0xab, 0xe4, 0x28, 0x3e, 0xf6, 0x75, 0x23, 0x82, 0xf6, 0xaa, 0xdd, 0xf1, 0x56, + 0x85, 0x07, 0x28, 0x2f, 0x5a, 0xfb, 0x63, 0x99, 0x68, 0xed, 0x6b, 0xf6, 0x49, 0xef, 0x1f, 0xb2, + 0xfd, 0x5f, 0x1d, 0x38, 0x91, 0x69, 0x71, 0x04, 0x0b, 0x6c, 0xc7, 0x5c, 0x60, 0xcf, 0x59, 0x1f, + 0x75, 0x9f, 0xd5, 0xf5, 0xcd, 0x42, 0xcf, 0x68, 0x99, 0x12, 0xf7, 0x49, 0x07, 0x8a, 0x54, 0x5a, + 0x96, 0xf1, 0x5c, 0x1f, 0x39, 0x94, 0x15, 0xc0, 0xe4, 0x7a, 0xc1, 0x9d, 0x55, 0xff, 0x18, 0x0c, + 0x73, 0xea, 0xd3, 0x9f, 0x70, 0x00, 0xd2, 0x4a, 0xf7, 0x4a, 0x04, 0x76, 0xbf, 0x5d, 0x80, 0x53, + 0xb9, 0xcb, 0x08, 0x7d, 0x5a, 0x59, 0xe4, 0x1c, 0xdb, 0xd1, 0x8a, 0x06, 0x21, 0xdd, 0x30, 0x37, + 0x61, 0x18, 0xe6, 0x84, 0x3d, 0xee, 0x5e, 0x29, 0x30, 0x82, 0x4d, 0x6b, 0x93, 0xf5, 0x23, 0x27, + 0x0d, 0x80, 0x55, 0x79, 0x8d, 0xfe, 0x12, 0x5e, 0xe2, 0x71, 0x7f, 0xac, 0xdd, 0x70, 0x90, 0x03, + 0x3d, 0x02, 0x5e, 0x71, 0xdd, 0xe4, 0x15, 0xd8, 0xbe, 0x1f, 0xb9, 0x0f, 0xb3, 0x78, 0x05, 0xf2, + 0x1c, 0xcb, 0x83, 0x25, 0x45, 0x34, 0xae, 0xc3, 0x16, 0x06, 0xbe, 0x0e, 0x3b, 0x01, 0xe5, 0x17, + 0x7d, 0x95, 0x4d, 0x73, 0x7e, 0xf6, 0x3b, 0x3f, 0x3c, 0x7b, 0xdf, 0x77, 0x7f, 0x78, 0xf6, 0xbe, + 0x1f, 0xfc, 0xf0, 0xec, 0x7d, 0x1f, 0xbf, 0x79, 0xd6, 0xf9, 0xce, 0xcd, 0xb3, 0xce, 0x77, 0x6f, + 0x9e, 0x75, 0x7e, 0x70, 0xf3, 0xac, 0xf3, 0x1f, 0x6e, 0x9e, 0x75, 0xfe, 0xde, 0x7f, 0x3c, 0x7b, + 0xdf, 0x8b, 0x63, 0x72, 0x60, 0xff, 0x3f, 0x00, 0x00, 0xff, 0xff, 0x84, 0x02, 0x48, 0xf8, 0xe2, + 0xd6, 0x00, 0x00, } func (m *Amount) Marshal() (dAtA []byte, err error) { @@ -10526,51 +10492,6 @@ func (m *RetryAffinity) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *RetryConfig) 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 *RetryConfig) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *RetryConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Parameters) > 0 { - for iNdEx := len(m.Parameters) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.Parameters[iNdEx]) - copy(dAtA[i:], m.Parameters[iNdEx]) - i = encodeVarintGenerated(dAtA, i, uint64(len(m.Parameters[iNdEx]))) - i-- - dAtA[i] = 0x1a - } - } - i -= len(m.NodeFieldSelector) - copy(dAtA[i:], m.NodeFieldSelector) - i = encodeVarintGenerated(dAtA, i, uint64(len(m.NodeFieldSelector))) - i-- - dAtA[i] = 0x12 - i-- - if m.RestartSuccessful { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x8 - return len(dAtA) - i, nil -} - func (m *RetryNodeAntiAffinity) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -12831,20 +12752,6 @@ func (m *WorkflowSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if m.Retry != nil { - { - size, err := m.Retry.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x2 - i-- - dAtA[i] = 0xe2 - } if m.ArtifactGC != nil { { size, err := m.ArtifactGC.MarshalToSizedBuffer(dAtA[:i]) @@ -13375,18 +13282,6 @@ func (m *WorkflowStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if m.RetryStatus != nil { - i-- - if *m.RetryStatus { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x1 - i-- - dAtA[i] = 0xa8 - } if len(m.TaskResultsCompletionStatus) > 0 { keysForTaskResultsCompletionStatus := make([]string, 0, len(m.TaskResultsCompletionStatus)) for k := range m.TaskResultsCompletionStatus { @@ -16199,24 +16094,6 @@ func (m *RetryAffinity) Size() (n int) { return n } -func (m *RetryConfig) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - n += 2 - l = len(m.NodeFieldSelector) - n += 1 + l + sovGenerated(uint64(l)) - if len(m.Parameters) > 0 { - for _, s := range m.Parameters { - l = len(s) - n += 1 + l + sovGenerated(uint64(l)) - } - } - return n -} - func (m *RetryNodeAntiAffinity) Size() (n int) { if m == nil { return 0 @@ -17171,10 +17048,6 @@ func (m *WorkflowSpec) Size() (n int) { l = m.ArtifactGC.Size() n += 2 + l + sovGenerated(uint64(l)) } - if m.Retry != nil { - l = m.Retry.Size() - n += 2 + l + sovGenerated(uint64(l)) - } return n } @@ -17265,9 +17138,6 @@ func (m *WorkflowStatus) Size() (n int) { n += mapEntrySize + 2 + sovGenerated(uint64(mapEntrySize)) } } - if m.RetryStatus != nil { - n += 3 - } return n } @@ -18931,18 +18801,6 @@ func (this *RetryAffinity) String() string { }, "") return s } -func (this *RetryConfig) String() string { - if this == nil { - return "nil" - } - s := strings.Join([]string{`&RetryConfig{`, - `RestartSuccessful:` + fmt.Sprintf("%v", this.RestartSuccessful) + `,`, - `NodeFieldSelector:` + fmt.Sprintf("%v", this.NodeFieldSelector) + `,`, - `Parameters:` + fmt.Sprintf("%v", this.Parameters) + `,`, - `}`, - }, "") - return s -} func (this *RetryNodeAntiAffinity) String() string { if this == nil { return "nil" @@ -19606,7 +19464,6 @@ func (this *WorkflowSpec) String() string { `Hooks:` + mapStringForHooks + `,`, `WorkflowMetadata:` + strings.Replace(this.WorkflowMetadata.String(), "WorkflowMetadata", "WorkflowMetadata", 1) + `,`, `ArtifactGC:` + strings.Replace(this.ArtifactGC.String(), "WorkflowLevelArtifactGC", "WorkflowLevelArtifactGC", 1) + `,`, - `Retry:` + strings.Replace(this.Retry.String(), "RetryConfig", "RetryConfig", 1) + `,`, `}`, }, "") return s @@ -19685,7 +19542,6 @@ func (this *WorkflowStatus) String() string { `ArtifactRepositoryRef:` + strings.Replace(fmt.Sprintf("%v", this.ArtifactRepositoryRef), "ArtifactRepositoryRefStatus", "ArtifactRepositoryRefStatus", 1) + `,`, `ArtifactGCStatus:` + strings.Replace(this.ArtifactGCStatus.String(), "ArtGCStatus", "ArtGCStatus", 1) + `,`, `TaskResultsCompletionStatus:` + mapStringForTaskResultsCompletionStatus + `,`, - `RetryStatus:` + valueToStringGenerated(this.RetryStatus) + `,`, `}`, }, "") return s @@ -36514,140 +36370,6 @@ func (m *RetryAffinity) Unmarshal(dAtA []byte) error { } return nil } -func (m *RetryConfig) 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: RetryConfig: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: RetryConfig: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field RestartSuccessful", 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.RestartSuccessful = bool(v != 0) - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field NodeFieldSelector", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.NodeFieldSelector = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Parameters", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Parameters = append(m.Parameters, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGenerated(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} func (m *RetryNodeAntiAffinity) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -45083,42 +44805,6 @@ func (m *WorkflowSpec) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex - case 44: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Retry", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Retry == nil { - m.Retry = &RetryConfig{} - } - if err := m.Retry.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -46148,27 +45834,6 @@ func (m *WorkflowStatus) Unmarshal(dAtA []byte) error { } m.TaskResultsCompletionStatus[mapkey] = mapvalue iNdEx = postIndex - case 21: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field RetryStatus", 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 - } - } - b := bool(v != 0) - m.RetryStatus = &b default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) diff --git a/pkg/apis/workflow/v1alpha1/generated.proto b/pkg/apis/workflow/v1alpha1/generated.proto index c5804b8e4838..f3910066d35b 100644 --- a/pkg/apis/workflow/v1alpha1/generated.proto +++ b/pkg/apis/workflow/v1alpha1/generated.proto @@ -1333,18 +1333,6 @@ message RetryAffinity { optional RetryNodeAntiAffinity nodeAntiAffinity = 1; } -// RetryConfig defines how to retry a workflow -message RetryConfig { - // RestartSuccessful defines whether or not to retry succeeded node - optional bool restartSuccessful = 1; - - // NodeFieldSelector selects nodes to reset - optional string nodeFieldSelector = 2; - - // Parameters are a list of parameters passed - repeated string parameters = 3; -} - // RetryNodeAntiAffinity is a placeholder for future expansion, only empty nodeAntiAffinity is allowed. // In order to prevent running steps on the same host, it uses "kubernetes.io/hostname". message RetryNodeAntiAffinity { @@ -2092,9 +2080,6 @@ 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 WorkflowLevelArtifactGC artifactGC = 43; - - // Retry will retry the workflow according to its RetryConfig - optional RetryConfig retry = 44; } // WorkflowStatus contains overall status information about a workflow @@ -2159,9 +2144,6 @@ message WorkflowStatus { // TaskResultsCompletionStatus tracks task result completion status (mapped by node ID). Used to prevent premature archiving and garbage collection. map taskResultsCompletionStatus = 20; - - // RetryStatus tracks RetryStatus for this workflow - optional bool retryStatus = 21; } // WorkflowStep is a reference to a template to execute in a series of step diff --git a/pkg/apis/workflow/v1alpha1/openapi_generated.go b/pkg/apis/workflow/v1alpha1/openapi_generated.go index c2fe76f4c40f..07904b8206fd 100644 --- a/pkg/apis/workflow/v1alpha1/openapi_generated.go +++ b/pkg/apis/workflow/v1alpha1/openapi_generated.go @@ -116,7 +116,6 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.RawArtifact": schema_pkg_apis_workflow_v1alpha1_RawArtifact(ref), "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.ResourceTemplate": schema_pkg_apis_workflow_v1alpha1_ResourceTemplate(ref), "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.RetryAffinity": schema_pkg_apis_workflow_v1alpha1_RetryAffinity(ref), - "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.RetryConfig": schema_pkg_apis_workflow_v1alpha1_RetryConfig(ref), "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.RetryNodeAntiAffinity": schema_pkg_apis_workflow_v1alpha1_RetryNodeAntiAffinity(ref), "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.RetryStrategy": schema_pkg_apis_workflow_v1alpha1_RetryStrategy(ref), "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.S3Artifact": schema_pkg_apis_workflow_v1alpha1_S3Artifact(ref), @@ -5035,48 +5034,6 @@ func schema_pkg_apis_workflow_v1alpha1_RetryAffinity(ref common.ReferenceCallbac } } -func schema_pkg_apis_workflow_v1alpha1_RetryConfig(ref common.ReferenceCallback) common.OpenAPIDefinition { - return common.OpenAPIDefinition{ - Schema: spec.Schema{ - SchemaProps: spec.SchemaProps{ - Description: "RetryConfig defines how to retry a workflow", - Type: []string{"object"}, - Properties: map[string]spec.Schema{ - "restartSuccessful": { - SchemaProps: spec.SchemaProps{ - Description: "RestartSuccessful defines whether or not to retry succeeded node", - Type: []string{"boolean"}, - Format: "", - }, - }, - "nodeFieldSelector": { - SchemaProps: spec.SchemaProps{ - Description: "NodeFieldSelector selects nodes to reset", - Type: []string{"string"}, - Format: "", - }, - }, - "parameters": { - SchemaProps: spec.SchemaProps{ - Description: "Parameters are a list of parameters passed", - Type: []string{"array"}, - Items: &spec.SchemaOrArray{ - Schema: &spec.Schema{ - SchemaProps: spec.SchemaProps{ - Default: "", - Type: []string{"string"}, - Format: "", - }, - }, - }, - }, - }, - }, - }, - }, - } -} - func schema_pkg_apis_workflow_v1alpha1_RetryNodeAntiAffinity(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.OpenAPIDefinition{ Schema: spec.Schema{ @@ -7777,17 +7734,11 @@ func schema_pkg_apis_workflow_v1alpha1_WorkflowSpec(ref common.ReferenceCallback Ref: ref("github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.WorkflowLevelArtifactGC"), }, }, - "retry": { - SchemaProps: spec.SchemaProps{ - Description: "Retry will retry the workflow according to its RetryConfig", - Ref: ref("github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.RetryConfig"), - }, - }, }, }, }, Dependencies: []string{ - "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.RetryConfig", "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"}, + "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"}, } } @@ -7974,13 +7925,6 @@ func schema_pkg_apis_workflow_v1alpha1_WorkflowStatus(ref common.ReferenceCallba }, }, }, - "retryStatus": { - SchemaProps: spec.SchemaProps{ - Description: "RetryStatus tracks RetryStatus for this workflow", - Type: []string{"boolean"}, - Format: "", - }, - }, }, }, }, diff --git a/pkg/apis/workflow/v1alpha1/workflow_types.go b/pkg/apis/workflow/v1alpha1/workflow_types.go index 1e9860c5cbde..b883eb4552cd 100644 --- a/pkg/apis/workflow/v1alpha1/workflow_types.go +++ b/pkg/apis/workflow/v1alpha1/workflow_types.go @@ -429,9 +429,6 @@ 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 *WorkflowLevelArtifactGC `json:"artifactGC,omitempty" protobuf:"bytes,43,opt,name=artifactGC"` - - // Retry will retry the workflow according to its RetryConfig - Retry *RetryConfig `json:"retry,omitempty" protobuf:"bytes,44,opt,name=retry"` } type LabelValueFrom struct { @@ -1949,9 +1946,6 @@ type WorkflowStatus struct { // TaskResultsCompletionStatus tracks task result completion status (mapped by node ID). Used to prevent premature archiving and garbage collection. TaskResultsCompletionStatus map[string]bool `json:"taskResultsCompletionStatus,omitempty" protobuf:"bytes,20,opt,name=taskResultsCompletionStatus"` - - // RetryStatus tracks RetryStatus for this workflow - RetryStatus *bool `json:"retryStatus,omitempty" protobuf:"varint,21,opt,name=retryStatus"` } func (ws *WorkflowStatus) MarkTaskResultIncomplete(name string) { @@ -3906,13 +3900,3 @@ type NodeFlag struct { // Retried tracks whether or not this node was retried by retryStrategy Retried bool `json:"retried,omitempty" protobuf:"varint,2,opt,name=retried"` } - -// RetryConfig defines how to retry a workflow -type RetryConfig struct { - // RestartSuccessful defines whether or not to retry succeeded node - RestartSuccessful bool `json:"restartSuccessful,omitempty" protobuf:"varint,1,opt,name=restartSuccessful"` - // NodeFieldSelector selects nodes to reset - NodeFieldSelector string `json:"nodeFieldSelector,omitempty" protobuf:"bytes,2,opt,name=nodeFieldSelector"` - // Parameters are a list of parameters passed - Parameters []string `json:"parameters,omitempty" protobuf:"bytes,3,opt,name=parameters"` -} diff --git a/pkg/apis/workflow/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/workflow/v1alpha1/zz_generated.deepcopy.go index 94690c8a5372..f71aca040c98 100644 --- a/pkg/apis/workflow/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/workflow/v1alpha1/zz_generated.deepcopy.go @@ -2672,27 +2672,6 @@ func (in *RetryAffinity) DeepCopy() *RetryAffinity { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *RetryConfig) DeepCopyInto(out *RetryConfig) { - *out = *in - if in.Parameters != nil { - in, out := &in.Parameters, &out.Parameters - *out = make([]string, len(*in)) - copy(*out, *in) - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RetryConfig. -func (in *RetryConfig) DeepCopy() *RetryConfig { - if in == nil { - return nil - } - out := new(RetryConfig) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *RetryNodeAntiAffinity) DeepCopyInto(out *RetryNodeAntiAffinity) { *out = *in @@ -3933,11 +3912,6 @@ func (in *WorkflowSpec) DeepCopyInto(out *WorkflowSpec) { *out = new(WorkflowLevelArtifactGC) (*in).DeepCopyInto(*out) } - if in.Retry != nil { - in, out := &in.Retry, &out.Retry - *out = new(RetryConfig) - (*in).DeepCopyInto(*out) - } return } @@ -4021,11 +3995,6 @@ func (in *WorkflowStatus) DeepCopyInto(out *WorkflowStatus) { (*out)[key] = val } } - if in.RetryStatus != nil { - in, out := &in.RetryStatus, &out.RetryStatus - *out = new(bool) - **out = **in - } return } diff --git a/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1RetryConfig.md b/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1RetryConfig.md index e720511fc1c0..fdca347405a6 100644 --- a/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1RetryConfig.md +++ b/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1RetryConfig.md @@ -11,7 +11,5 @@ Name | Type | Description | Notes **nodeFieldSelector** | **String** | NodeFieldSelector selects nodes to reset | [optional] **parameters** | **List<String>** | Parameters are a list of parameters passed | [optional] **restartSuccessful** | **Boolean** | RestartSuccessful defines whether or not to retry succeeded node | [optional] -**retried** | **Boolean** | Retried tracks whether or not this workflow was retried by RetryConfig | [optional] - diff --git a/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_retry_config.py b/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_retry_config.py index e39e5656320a..fa1658c99ce6 100644 --- a/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_retry_config.py +++ b/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_retry_config.py @@ -143,7 +143,6 @@ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501 node_field_selector (str): NodeFieldSelector selects nodes to reset. [optional] # noqa: E501 parameters ([str]): Parameters are a list of parameters passed. [optional] # noqa: E501 restart_successful (bool): RestartSuccessful defines whether or not to retry succeeded node. [optional] # noqa: E501 - retried (bool): Retried tracks whether or not this workflow was retried by RetryConfig. [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) @@ -228,7 +227,6 @@ def __init__(self, *args, **kwargs): # noqa: E501 node_field_selector (str): NodeFieldSelector selects nodes to reset. [optional] # noqa: E501 parameters ([str]): Parameters are a list of parameters passed. [optional] # noqa: E501 restart_successful (bool): RestartSuccessful defines whether or not to retry succeeded node. [optional] # noqa: E501 - retried (bool): Retried tracks whether or not this workflow was retried by RetryConfig. [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) diff --git a/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1RetryConfig.md b/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1RetryConfig.md index 978195b36798..1738a4527609 100644 --- a/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1RetryConfig.md +++ b/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1RetryConfig.md @@ -8,7 +8,6 @@ Name | Type | Description | Notes **node_field_selector** | **str** | NodeFieldSelector selects nodes to reset | [optional] **parameters** | **[str]** | Parameters are a list of parameters passed | [optional] **restart_successful** | **bool** | RestartSuccessful defines whether or not to retry succeeded node | [optional] -**retried** | **bool** | Retried tracks whether or not this workflow was retried by RetryConfig | [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/server/workflowarchive/archived_workflow_server.go b/server/workflowarchive/archived_workflow_server.go index 2b24bc049f4e..608af2f257ec 100644 --- a/server/workflowarchive/archived_workflow_server.go +++ b/server/workflowarchive/archived_workflow_server.go @@ -296,6 +296,11 @@ func (w *archivedWorkflowServer) RetryArchivedWorkflow(ctx context.Context, req return nil, sutils.ToStatusError(err, codes.Internal) } + wf, err = wfClient.ArgoprojV1alpha1().Workflows(req.Namespace).Update(ctx, wf, metav1.UpdateOptions{}) + if err != nil { + return nil, sutils.ToStatusError(err, codes.Internal) + } + return result, nil } diff --git a/workflow/common/common.go b/workflow/common/common.go index b4f174263eaa..21a1b512e2e1 100644 --- a/workflow/common/common.go +++ b/workflow/common/common.go @@ -103,6 +103,11 @@ const ( // LabelKeyCronWorkflowCompleted is a label applied to the cron workflow when the configured stopping condition is achieved LabelKeyCronWorkflowCompleted = workflow.CronWorkflowFullName + "/completed" + // LabelKeyRetryRule is a label applied to workflow used by the RetryRule feature + LabelKeyWorkflowRetried = workflow.WorkflowFullName + "/retried" + LabelKeyRetryNodeFieldSelector = workflow.WorkflowFullName + "/retry-node-field-selector" + LabelKeyRetryParameters = workflow.WorkflowFullName + "/retry-parameters" + LabelKeyRetryRestartSuccessful = workflow.WorkflowFullName + "/retry-restart-successful" // ExecutorArtifactBaseDir is the base directory in the init container in which artifacts will be copied to. // Each artifact will be named according to its input name (e.g: /argo/inputs/artifacts/CODE) diff --git a/workflow/controller/operator.go b/workflow/controller/operator.go index a4a1c46b376d..a7e7083e56b0 100644 --- a/workflow/controller/operator.go +++ b/workflow/controller/operator.go @@ -3863,11 +3863,11 @@ func (woc *wfOperationCtx) retryStrategy(tmpl *wfv1.Template) *wfv1.RetryStrateg } func (woc *wfOperationCtx) shouldRetry() bool { - retryConfig := woc.execWf.Spec.Retry - if retryConfig == nil { + retried, ok := woc.wf.Labels[common.LabelKeyWorkflowRetried] + if !ok || retried == "true" { return false } - if woc.IsRetried() { + if retried == "false" { // TODO make sure all pod in podsToDelete deleted, avoid "create pod exists" return false } @@ -3875,16 +3875,24 @@ func (woc *wfOperationCtx) shouldRetry() bool { } func (woc *wfOperationCtx) IsRetried() bool { - return woc.wf.Status.RetryStatus != nil && *woc.wf.Status.RetryStatus + return woc.wf.Labels[common.LabelKeyWorkflowRetried] == "true" } func (woc *wfOperationCtx) retryWorkflow(ctx context.Context) error { if woc.IsRetried() { return nil } - retryConfig := woc.execWf.Spec.Retry + nodeFiledSelector := woc.wf.Labels[common.LabelKeyRetryNodeFieldSelector] + parametersStr := woc.wf.Labels[common.LabelKeyRetryParameters] + var parameters []string + err := json.Unmarshal([]byte(parametersStr), ¶meters) + if err != nil { + return fmt.Errorf("fail to unmarshaling parameters: %v", err) + } + restartSuccessful := woc.wf.Labels[common.LabelKeyRetryRestartSuccessful] + // Clean up remaining pods in the workflow - wf, podsToDelete, err := wfutil.FormulateRetryWorkflow(ctx, woc.wf, retryConfig.RestartSuccessful, retryConfig.NodeFieldSelector, retryConfig.Parameters) + wf, podsToDelete, err := wfutil.FormulateRetryWorkflow(ctx, woc.wf, restartSuccessful, nodeFiledSelector, parameters) if err != nil { return fmt.Errorf("fail to FormulateRetryWorkflow") } diff --git a/workflow/util/util.go b/workflow/util/util.go index 3e1a1659a7c6..75cfd7ba612f 100644 --- a/workflow/util/util.go +++ b/workflow/util/util.go @@ -839,14 +839,21 @@ func MarkWorkflowForRetry(ctx context.Context, wf *wfv1.Workflow, restartSuccess return nil, errors.Errorf(errors.CodeBadRequest, "Cannot retry a workflow in phase %s", wf.Status.Phase) } - wf.Spec.Retry = &wfv1.RetryConfig{ - RestartSuccessful: restartSuccessful, - NodeFieldSelector: nodeFieldSelector, - Parameters: parameters, - } + newWF := wf.DeepCopy() + delete(newWF.Labels, common.LabelKeyCompleted) + delete(newWF.Labels, common.LabelKeyWorkflowRetried) + delete(newWF.Labels, common.LabelKeyWorkflowArchivingStatus) - delete(wf.Labels, common.LabelKeyCompleted) - return wf, nil + // 设置Retry的参数 + newWF.ObjectMeta.Labels[common.LabelKeyWorkflowRetried] = strconv.FormatBool(false) + newWF.ObjectMeta.Labels[common.LabelKeyRetryNodeFieldSelector] = nodeFieldSelector + parametersStr, err := json.Marshal(parameters) + if err != nil { + return nil, errors.Errorf(errors.CodeBadRequest, "Cannot marshalling retry parameters to json: %s", parameters) + } + newWF.ObjectMeta.Labels[common.LabelKeyRetryParameters] = string(parametersStr) + newWF.ObjectMeta.Labels[common.LabelKeyRetryRestartSuccessful] = strconv.FormatBool(restartSuccessful) + return newWF, nil } // FormulateRetryWorkflow formulates a previous workflow to be retried, deleting all failed steps as well as the onExit node (and children) From 9b015497976eea4c5ea7208440daa52b7ba0abb3 Mon Sep 17 00:00:00 2001 From: shuangkun Date: Tue, 9 Apr 2024 17:37:15 +0800 Subject: [PATCH 15/26] fix: test Signed-off-by: shuangkun --- workflow/common/common.go | 2 +- workflow/controller/operator.go | 11 ++++++----- workflow/controller/pod_cleanup_key.go | 9 +++++---- workflow/util/util.go | 3 +-- 4 files changed, 13 insertions(+), 12 deletions(-) diff --git a/workflow/common/common.go b/workflow/common/common.go index 21a1b512e2e1..75b52660aeb2 100644 --- a/workflow/common/common.go +++ b/workflow/common/common.go @@ -104,7 +104,7 @@ const ( // LabelKeyCronWorkflowCompleted is a label applied to the cron workflow when the configured stopping condition is achieved LabelKeyCronWorkflowCompleted = workflow.CronWorkflowFullName + "/completed" // LabelKeyRetryRule is a label applied to workflow used by the RetryRule feature - LabelKeyWorkflowRetried = workflow.WorkflowFullName + "/retried" + LabelKeyWorkflowRetryStatus = workflow.WorkflowFullName + "/workflow-retry-status" LabelKeyRetryNodeFieldSelector = workflow.WorkflowFullName + "/retry-node-field-selector" LabelKeyRetryParameters = workflow.WorkflowFullName + "/retry-parameters" LabelKeyRetryRestartSuccessful = workflow.WorkflowFullName + "/retry-restart-successful" diff --git a/workflow/controller/operator.go b/workflow/controller/operator.go index a7e7083e56b0..c1c994de591d 100644 --- a/workflow/controller/operator.go +++ b/workflow/controller/operator.go @@ -3863,11 +3863,11 @@ func (woc *wfOperationCtx) retryStrategy(tmpl *wfv1.Template) *wfv1.RetryStrateg } func (woc *wfOperationCtx) shouldRetry() bool { - retried, ok := woc.wf.Labels[common.LabelKeyWorkflowRetried] - if !ok || retried == "true" { + retryStatus, ok := woc.wf.Labels[common.LabelKeyWorkflowRetryStatus] + if !ok || retryStatus == "Retried" { return false } - if retried == "false" { + if retryStatus == "Retrying" { // TODO make sure all pod in podsToDelete deleted, avoid "create pod exists" return false } @@ -3875,7 +3875,7 @@ func (woc *wfOperationCtx) shouldRetry() bool { } func (woc *wfOperationCtx) IsRetried() bool { - return woc.wf.Labels[common.LabelKeyWorkflowRetried] == "true" + return woc.wf.Labels[common.LabelKeyWorkflowRetried] != "Retried" } func (woc *wfOperationCtx) retryWorkflow(ctx context.Context) error { @@ -3899,8 +3899,9 @@ func (woc *wfOperationCtx) retryWorkflow(ctx context.Context) error { for _, podName := range podsToDelete { woc.controller.queuePodForCleanup(wf.Namespace, podName, deletePod) } + woc.controller.queuePodForCleanup(wf.Namespace, wf.Name, deletedAllPodsFlag) woc.wf = wf - woc.wf.Status.RetryStatus = pointer.Bool(true) + woc.wf.labels[common.LabelKeyWorkflowRetryStatus] = "Retrying" woc.updated = true return nil } diff --git a/workflow/controller/pod_cleanup_key.go b/workflow/controller/pod_cleanup_key.go index 1c050c94323c..42328c67d71f 100644 --- a/workflow/controller/pod_cleanup_key.go +++ b/workflow/controller/pod_cleanup_key.go @@ -15,10 +15,11 @@ type ( ) const ( - deletePod podCleanupAction = "deletePod" - labelPodCompleted podCleanupAction = "labelPodCompleted" - terminateContainers podCleanupAction = "terminateContainers" - killContainers podCleanupAction = "killContainers" + deletePod podCleanupAction = "deletePod" + labelPodCompleted podCleanupAction = "labelPodCompleted" + terminateContainers podCleanupAction = "terminateContainers" + killContainers podCleanupAction = "killContainers" + showDeletedAllPodsFlag podCleanupAction = "deletedAllPods" ) func newPodCleanupKey(namespace string, podName string, action podCleanupAction) podCleanupKey { diff --git a/workflow/util/util.go b/workflow/util/util.go index 75cfd7ba612f..881538ed0857 100644 --- a/workflow/util/util.go +++ b/workflow/util/util.go @@ -841,11 +841,10 @@ func MarkWorkflowForRetry(ctx context.Context, wf *wfv1.Workflow, restartSuccess newWF := wf.DeepCopy() delete(newWF.Labels, common.LabelKeyCompleted) - delete(newWF.Labels, common.LabelKeyWorkflowRetried) delete(newWF.Labels, common.LabelKeyWorkflowArchivingStatus) // 设置Retry的参数 - newWF.ObjectMeta.Labels[common.LabelKeyWorkflowRetried] = strconv.FormatBool(false) + newWF.ObjectMeta.Labels[common.LabelKeyWorkflowRetryStatus] = "Pending" newWF.ObjectMeta.Labels[common.LabelKeyRetryNodeFieldSelector] = nodeFieldSelector parametersStr, err := json.Marshal(parameters) if err != nil { From 2dfee1b3bcdbef583b5e380640664e1d6c73ad2c Mon Sep 17 00:00:00 2001 From: shuangkun Date: Tue, 9 Apr 2024 19:30:40 +0800 Subject: [PATCH 16/26] fix: test Signed-off-by: shuangkun --- docs/executor_swagger.md | 39 +- pkg/plugins/executor/swagger.yml | 24 +- .../IoArgoprojWorkflowV1alpha1RetryConfig.md | 15 - .../IoArgoprojWorkflowV1alpha1WorkflowSpec.md | 1 - ...oArgoprojWorkflowV1alpha1WorkflowStatus.md | 1 - ...argoproj_workflow_v1alpha1_retry_config.py | 265 - ...rgoproj_workflow_v1alpha1_workflow_spec.py | 6 - ...oproj_workflow_v1alpha1_workflow_status.py | 4 - .../client/argo_workflows/models/__init__.py | 1 - .../docs/ClusterWorkflowTemplateServiceApi.md | 24 - .../client/docs/CronWorkflowServiceApi.md | 24 - .../IoArgoprojWorkflowV1alpha1RetryConfig.md | 15 - .../IoArgoprojWorkflowV1alpha1WorkflowSpec.md | 1 - ...oArgoprojWorkflowV1alpha1WorkflowStatus.md | 1 - sdks/python/client/docs/WorkflowServiceApi.md | 34 - .../client/docs/WorkflowTemplateServiceApi.md | 24 - swagger.yml | 5294 +++++++++++++++++ 17 files changed, 5331 insertions(+), 442 deletions(-) delete mode 100644 sdks/java/client/docs/IoArgoprojWorkflowV1alpha1RetryConfig.md delete mode 100644 sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_retry_config.py delete mode 100644 sdks/python/client/docs/IoArgoprojWorkflowV1alpha1RetryConfig.md create mode 100644 swagger.yml diff --git a/docs/executor_swagger.md b/docs/executor_swagger.md index e78cbb50df6b..e10727c721e7 100644 --- a/docs/executor_swagger.md +++ b/docs/executor_swagger.md @@ -2335,7 +2335,12 @@ share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource. | | -| time | [Time](#time)| `Time` | | | | | +| time | string| `string` | | | Time is the timestamp of when the ManagedFields entry was added. The +timestamp will also be updated if a field is added, the manager +changes any of the owned fields value or removes a field. The +timestamp does not update when a field is removed from the entry +because another manager took it over. ++optional | | @@ -2944,7 +2949,25 @@ it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only. +optional | | -| deletionTimestamp | [Time](#time)| `Time` | | | | | +| deletionTimestamp | string| `string` | | | DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This +field is set by the server when a graceful deletion is requested by the user, and is not +directly settable by a client. The resource is expected to be deleted (no longer visible +from resource lists, and not reachable by name) after the time in this field, once the +finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. +Once the deletionTimestamp is set, this value may not be unset or be set further into the +future, although it may be shortened or the resource may be deleted prior to this time. +For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react +by sending a graceful termination signal to the containers in the pod. After that 30 seconds, +the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, +remove the pod from the API. In the presence of network partitions, this object may still +exist after this timestamp, until an administrator or automated process can determine the +resource is fully terminated. +If not set, graceful deletion of the object has not been requested. + +Populated by the system when a graceful deletion is requested. +Read-only. +More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata ++optional | | | finalizers | []string| `[]string` | | | Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries @@ -4597,18 +4620,6 @@ This duration also includes time in which the node spends in Pending state. This -### Time - - -> +protobuf.options.marshal=false -+protobuf.as=Timestamp -+protobuf.options.(gogoproto.goproto_stringer)=false - - - - -[interface{}](#interface) - ### Toleration diff --git a/pkg/plugins/executor/swagger.yml b/pkg/plugins/executor/swagger.yml index 5e44fc6844fe..771ec455fca2 100644 --- a/pkg/plugins/executor/swagger.yml +++ b/pkg/plugins/executor/swagger.yml @@ -1,6 +1,6 @@ basePath: /api/v1 consumes: -- application/json + - application/json definitions: AWSElasticBlockStoreVolumeSource: description: |- @@ -1299,8 +1299,8 @@ definitions: workflow: $ref: '#/definitions/Workflow' required: - - workflow - - template + - workflow + - template type: object ExecuteTemplateReply: properties: @@ -4702,7 +4702,7 @@ definitions: metadata: $ref: '#/definitions/ObjectMeta' required: - - metadata + - metadata type: object ZipStrategy: description: ZipStrategy will unzip zipped input artifacts @@ -4716,21 +4716,21 @@ paths: post: operationId: executeTemplate parameters: - - in: body - name: Body - required: true - schema: - $ref: '#/definitions/ExecuteTemplateArgs' + - in: body + name: Body + required: true + schema: + $ref: '#/definitions/ExecuteTemplateArgs' responses: "200": $ref: '#/responses/executeTemplate' produces: -- application/json + - application/json responses: executeTemplate: description: "" schema: $ref: '#/definitions/ExecuteTemplateReply' schemes: -- http -swagger: "2.0" + - http +swagger: "2.0" \ No newline at end of file diff --git a/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1RetryConfig.md b/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1RetryConfig.md deleted file mode 100644 index fdca347405a6..000000000000 --- a/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1RetryConfig.md +++ /dev/null @@ -1,15 +0,0 @@ - - -# IoArgoprojWorkflowV1alpha1RetryConfig - -RetryConfig defines how to retry a workflow - -## Properties - -Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- -**nodeFieldSelector** | **String** | NodeFieldSelector selects nodes to reset | [optional] -**parameters** | **List<String>** | Parameters are a list of parameters passed | [optional] -**restartSuccessful** | **Boolean** | RestartSuccessful defines whether or not to retry succeeded node | [optional] - - diff --git a/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1WorkflowSpec.md b/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1WorkflowSpec.md index 8b0d2afabf9f..e889ac8f8756 100644 --- a/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1WorkflowSpec.md +++ b/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1WorkflowSpec.md @@ -34,7 +34,6 @@ Name | Type | Description | Notes **podPriorityClassName** | **String** | PriorityClassName to apply to workflow pods. | [optional] **podSpecPatch** | **String** | PodSpecPatch holds strategic merge patch to apply against the pod spec. Allows parameterization of container fields which are not strings (e.g. resource limits). | [optional] **priority** | **Integer** | Priority is used if controller is configured to process limited number of workflows in parallel. Workflows with higher priority are processed first. | [optional] -**retry** | [**IoArgoprojWorkflowV1alpha1RetryConfig**](IoArgoprojWorkflowV1alpha1RetryConfig.md) | | [optional] **retryStrategy** | [**IoArgoprojWorkflowV1alpha1RetryStrategy**](IoArgoprojWorkflowV1alpha1RetryStrategy.md) | | [optional] **schedulerName** | **String** | Set scheduler name for all pods. Will be overridden if container/script template's scheduler name is set. Default scheduler will be used if neither specified. | [optional] **securityContext** | [**io.kubernetes.client.openapi.models.V1PodSecurityContext**](io.kubernetes.client.openapi.models.V1PodSecurityContext.md) | | [optional] diff --git a/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1WorkflowStatus.md b/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1WorkflowStatus.md index 466731f24089..8fa76f9bbbc7 100644 --- a/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1WorkflowStatus.md +++ b/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1WorkflowStatus.md @@ -22,7 +22,6 @@ Name | Type | Description | Notes **phase** | **String** | Phase a simple, high-level summary of where the workflow is in its lifecycle. Will be \"\" (Unknown), \"Pending\", or \"Running\" before the workflow is completed, and \"Succeeded\", \"Failed\" or \"Error\" once the workflow has completed. | [optional] **progress** | **String** | Progress to completion | [optional] **resourcesDuration** | **Map<String, Long>** | ResourcesDuration is the total for the workflow | [optional] -**retryStatus** | **Boolean** | RetryStatus tracks RetryStatus for this workflow | [optional] **startedAt** | **java.time.Instant** | | [optional] **storedTemplates** | [**Map<String, IoArgoprojWorkflowV1alpha1Template>**](IoArgoprojWorkflowV1alpha1Template.md) | StoredTemplates is a mapping between a template ref and the node's status. | [optional] **storedWorkflowTemplateSpec** | [**IoArgoprojWorkflowV1alpha1WorkflowSpec**](IoArgoprojWorkflowV1alpha1WorkflowSpec.md) | | [optional] diff --git a/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_retry_config.py b/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_retry_config.py deleted file mode 100644 index fa1658c99ce6..000000000000 --- a/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_retry_config.py +++ /dev/null @@ -1,265 +0,0 @@ -""" - 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://argo-workflows.readthedocs.io/en/latest/ # 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 - - - -class IoArgoprojWorkflowV1alpha1RetryConfig(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 - """ - 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. - """ - return { - 'node_field_selector': (str,), # noqa: E501 - 'parameters': ([str],), # noqa: E501 - 'restart_successful': (bool,), # noqa: E501 - 'retried': (bool,), # noqa: E501 - } - - @cached_property - def discriminator(): - return None - - - attribute_map = { - 'node_field_selector': 'nodeFieldSelector', # noqa: E501 - 'parameters': 'parameters', # noqa: E501 - 'restart_successful': 'restartSuccessful', # noqa: E501 - 'retried': 'retried', # noqa: E501 - } - - read_only_vars = { - } - - _composed_schemas = {} - - @classmethod - @convert_js_args_to_python_args - def _from_openapi_data(cls, *args, **kwargs): # noqa: E501 - """IoArgoprojWorkflowV1alpha1RetryConfig - 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,) - node_field_selector (str): NodeFieldSelector selects nodes to reset. [optional] # noqa: E501 - parameters ([str]): Parameters are a list of parameters passed. [optional] # noqa: E501 - restart_successful (bool): RestartSuccessful defines whether or not to retry succeeded node. [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 - """IoArgoprojWorkflowV1alpha1RetryConfig - 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,) - node_field_selector (str): NodeFieldSelector selects nodes to reset. [optional] # noqa: E501 - parameters ([str]): Parameters are a list of parameters passed. [optional] # noqa: E501 - restart_successful (bool): RestartSuccessful defines whether or not to retry succeeded node. [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 1513d328be71..3a5e330beda5 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 @@ -39,7 +39,6 @@ def lazy_import(): from argo_workflows.model.io_argoproj_workflow_v1alpha1_metadata import IoArgoprojWorkflowV1alpha1Metadata from argo_workflows.model.io_argoproj_workflow_v1alpha1_metrics import IoArgoprojWorkflowV1alpha1Metrics from argo_workflows.model.io_argoproj_workflow_v1alpha1_pod_gc import IoArgoprojWorkflowV1alpha1PodGC - from argo_workflows.model.io_argoproj_workflow_v1alpha1_retry_config import IoArgoprojWorkflowV1alpha1RetryConfig from argo_workflows.model.io_argoproj_workflow_v1alpha1_retry_strategy import IoArgoprojWorkflowV1alpha1RetryStrategy from argo_workflows.model.io_argoproj_workflow_v1alpha1_synchronization import IoArgoprojWorkflowV1alpha1Synchronization from argo_workflows.model.io_argoproj_workflow_v1alpha1_template import IoArgoprojWorkflowV1alpha1Template @@ -64,7 +63,6 @@ def lazy_import(): globals()['IoArgoprojWorkflowV1alpha1Metadata'] = IoArgoprojWorkflowV1alpha1Metadata globals()['IoArgoprojWorkflowV1alpha1Metrics'] = IoArgoprojWorkflowV1alpha1Metrics globals()['IoArgoprojWorkflowV1alpha1PodGC'] = IoArgoprojWorkflowV1alpha1PodGC - globals()['IoArgoprojWorkflowV1alpha1RetryConfig'] = IoArgoprojWorkflowV1alpha1RetryConfig globals()['IoArgoprojWorkflowV1alpha1RetryStrategy'] = IoArgoprojWorkflowV1alpha1RetryStrategy globals()['IoArgoprojWorkflowV1alpha1Synchronization'] = IoArgoprojWorkflowV1alpha1Synchronization globals()['IoArgoprojWorkflowV1alpha1TTLStrategy'] = IoArgoprojWorkflowV1alpha1TTLStrategy @@ -161,7 +159,6 @@ def openapi_types(): 'pod_priority_class_name': (str,), # noqa: E501 'pod_spec_patch': (str,), # noqa: E501 'priority': (int,), # noqa: E501 - 'retry': (IoArgoprojWorkflowV1alpha1RetryConfig,), # noqa: E501 'retry_strategy': (IoArgoprojWorkflowV1alpha1RetryStrategy,), # noqa: E501 'scheduler_name': (str,), # noqa: E501 'security_context': (PodSecurityContext,), # noqa: E501 @@ -212,7 +209,6 @@ def discriminator(): 'pod_priority_class_name': 'podPriorityClassName', # noqa: E501 'pod_spec_patch': 'podSpecPatch', # noqa: E501 'priority': 'priority', # noqa: E501 - 'retry': 'retry', # noqa: E501 'retry_strategy': 'retryStrategy', # noqa: E501 'scheduler_name': 'schedulerName', # noqa: E501 'security_context': 'securityContext', # noqa: E501 @@ -298,7 +294,6 @@ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501 pod_priority_class_name (str): PriorityClassName to apply to workflow pods.. [optional] # noqa: E501 pod_spec_patch (str): PodSpecPatch holds strategic merge patch to apply against the pod spec. Allows parameterization of container fields which are not strings (e.g. resource limits).. [optional] # noqa: E501 priority (int): Priority is used if controller is configured to process limited number of workflows in parallel. Workflows with higher priority are processed first.. [optional] # noqa: E501 - retry (IoArgoprojWorkflowV1alpha1RetryConfig): [optional] # noqa: E501 retry_strategy (IoArgoprojWorkflowV1alpha1RetryStrategy): [optional] # noqa: E501 scheduler_name (str): Set scheduler name for all pods. Will be overridden if container/script template's scheduler name is set. Default scheduler will be used if neither specified.. [optional] # noqa: E501 security_context (PodSecurityContext): [optional] # noqa: E501 @@ -422,7 +417,6 @@ def __init__(self, *args, **kwargs): # noqa: E501 pod_priority_class_name (str): PriorityClassName to apply to workflow pods.. [optional] # noqa: E501 pod_spec_patch (str): PodSpecPatch holds strategic merge patch to apply against the pod spec. Allows parameterization of container fields which are not strings (e.g. resource limits).. [optional] # noqa: E501 priority (int): Priority is used if controller is configured to process limited number of workflows in parallel. Workflows with higher priority are processed first.. [optional] # noqa: E501 - retry (IoArgoprojWorkflowV1alpha1RetryConfig): [optional] # noqa: E501 retry_strategy (IoArgoprojWorkflowV1alpha1RetryStrategy): [optional] # noqa: E501 scheduler_name (str): Set scheduler name for all pods. Will be overridden if container/script template's scheduler name is set. Default scheduler will be used if neither specified.. [optional] # noqa: E501 security_context (PodSecurityContext): [optional] # noqa: E501 diff --git a/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_workflow_status.py b/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_workflow_status.py index 841c370a663f..86e17c538bbd 100644 --- a/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_workflow_status.py +++ b/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_workflow_status.py @@ -117,7 +117,6 @@ def openapi_types(): 'phase': (str,), # noqa: E501 'progress': (str,), # noqa: E501 'resources_duration': ({str: (int,)},), # noqa: E501 - 'retry_status': (bool,), # noqa: E501 'started_at': (datetime,), # noqa: E501 'stored_templates': ({str: (IoArgoprojWorkflowV1alpha1Template,)},), # noqa: E501 'stored_workflow_template_spec': (IoArgoprojWorkflowV1alpha1WorkflowSpec,), # noqa: E501 @@ -145,7 +144,6 @@ def discriminator(): 'phase': 'phase', # noqa: E501 'progress': 'progress', # noqa: E501 'resources_duration': 'resourcesDuration', # noqa: E501 - 'retry_status': 'retryStatus', # noqa: E501 'started_at': 'startedAt', # noqa: E501 'stored_templates': 'storedTemplates', # noqa: E501 'stored_workflow_template_spec': 'storedWorkflowTemplateSpec', # noqa: E501 @@ -208,7 +206,6 @@ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501 phase (str): Phase a simple, high-level summary of where the workflow is in its lifecycle. Will be \"\" (Unknown), \"Pending\", or \"Running\" before the workflow is completed, and \"Succeeded\", \"Failed\" or \"Error\" once the workflow has completed.. [optional] # noqa: E501 progress (str): Progress to completion. [optional] # noqa: E501 resources_duration ({str: (int,)}): ResourcesDuration is the total for the workflow. [optional] # noqa: E501 - retry_status (bool): RetryStatus tracks RetryStatus for this workflow. [optional] # noqa: E501 started_at (datetime): Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.. [optional] # noqa: E501 stored_templates ({str: (IoArgoprojWorkflowV1alpha1Template,)}): StoredTemplates is a mapping between a template ref and the node's status.. [optional] # noqa: E501 stored_workflow_template_spec (IoArgoprojWorkflowV1alpha1WorkflowSpec): [optional] # noqa: E501 @@ -309,7 +306,6 @@ def __init__(self, *args, **kwargs): # noqa: E501 phase (str): Phase a simple, high-level summary of where the workflow is in its lifecycle. Will be \"\" (Unknown), \"Pending\", or \"Running\" before the workflow is completed, and \"Succeeded\", \"Failed\" or \"Error\" once the workflow has completed.. [optional] # noqa: E501 progress (str): Progress to completion. [optional] # noqa: E501 resources_duration ({str: (int,)}): ResourcesDuration is the total for the workflow. [optional] # noqa: E501 - retry_status (bool): RetryStatus tracks RetryStatus for this workflow. [optional] # noqa: E501 started_at (datetime): Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.. [optional] # noqa: E501 stored_templates ({str: (IoArgoprojWorkflowV1alpha1Template,)}): StoredTemplates is a mapping between a template ref and the node's status.. [optional] # noqa: E501 stored_workflow_template_spec (IoArgoprojWorkflowV1alpha1WorkflowSpec): [optional] # noqa: E501 diff --git a/sdks/python/client/argo_workflows/models/__init__.py b/sdks/python/client/argo_workflows/models/__init__.py index f2b594e9b34d..44ef0697df2c 100644 --- a/sdks/python/client/argo_workflows/models/__init__.py +++ b/sdks/python/client/argo_workflows/models/__init__.py @@ -276,7 +276,6 @@ from argo_workflows.model.io_argoproj_workflow_v1alpha1_resubmit_archived_workflow_request import IoArgoprojWorkflowV1alpha1ResubmitArchivedWorkflowRequest from argo_workflows.model.io_argoproj_workflow_v1alpha1_retry_affinity import IoArgoprojWorkflowV1alpha1RetryAffinity from argo_workflows.model.io_argoproj_workflow_v1alpha1_retry_archived_workflow_request import IoArgoprojWorkflowV1alpha1RetryArchivedWorkflowRequest -from argo_workflows.model.io_argoproj_workflow_v1alpha1_retry_config import IoArgoprojWorkflowV1alpha1RetryConfig from argo_workflows.model.io_argoproj_workflow_v1alpha1_retry_strategy import IoArgoprojWorkflowV1alpha1RetryStrategy from argo_workflows.model.io_argoproj_workflow_v1alpha1_s3_artifact import IoArgoprojWorkflowV1alpha1S3Artifact from argo_workflows.model.io_argoproj_workflow_v1alpha1_s3_artifact_repository import IoArgoprojWorkflowV1alpha1S3ArtifactRepository diff --git a/sdks/python/client/docs/ClusterWorkflowTemplateServiceApi.md b/sdks/python/client/docs/ClusterWorkflowTemplateServiceApi.md index 08873d6f3bf2..5f2d50121d95 100644 --- a/sdks/python/client/docs/ClusterWorkflowTemplateServiceApi.md +++ b/sdks/python/client/docs/ClusterWorkflowTemplateServiceApi.md @@ -1005,14 +1005,6 @@ with argo_workflows.ApiClient(configuration) as api_client: pod_priority_class_name="pod_priority_class_name_example", pod_spec_patch="pod_spec_patch_example", priority=1, - retry=IoArgoprojWorkflowV1alpha1RetryConfig( - node_field_selector="node_field_selector_example", - parameters=[ - "parameters_example", - ], - restart_successful=True, - retried=True, - ), retry_strategy=IoArgoprojWorkflowV1alpha1RetryStrategy( affinity=IoArgoprojWorkflowV1alpha1RetryAffinity( node_anti_affinity={}, @@ -11947,14 +11939,6 @@ with argo_workflows.ApiClient(configuration) as api_client: pod_priority_class_name="pod_priority_class_name_example", pod_spec_patch="pod_spec_patch_example", priority=1, - retry=IoArgoprojWorkflowV1alpha1RetryConfig( - node_field_selector="node_field_selector_example", - parameters=[ - "parameters_example", - ], - restart_successful=True, - retried=True, - ), retry_strategy=IoArgoprojWorkflowV1alpha1RetryStrategy( affinity=IoArgoprojWorkflowV1alpha1RetryAffinity( node_anti_affinity={}, @@ -22793,14 +22777,6 @@ with argo_workflows.ApiClient(configuration) as api_client: pod_priority_class_name="pod_priority_class_name_example", pod_spec_patch="pod_spec_patch_example", priority=1, - retry=IoArgoprojWorkflowV1alpha1RetryConfig( - node_field_selector="node_field_selector_example", - parameters=[ - "parameters_example", - ], - restart_successful=True, - retried=True, - ), retry_strategy=IoArgoprojWorkflowV1alpha1RetryStrategy( affinity=IoArgoprojWorkflowV1alpha1RetryAffinity( node_anti_affinity={}, diff --git a/sdks/python/client/docs/CronWorkflowServiceApi.md b/sdks/python/client/docs/CronWorkflowServiceApi.md index a81554e3617c..455b2749c5cd 100644 --- a/sdks/python/client/docs/CronWorkflowServiceApi.md +++ b/sdks/python/client/docs/CronWorkflowServiceApi.md @@ -1065,14 +1065,6 @@ with argo_workflows.ApiClient(configuration) as api_client: pod_priority_class_name="pod_priority_class_name_example", pod_spec_patch="pod_spec_patch_example", priority=1, - retry=IoArgoprojWorkflowV1alpha1RetryConfig( - node_field_selector="node_field_selector_example", - parameters=[ - "parameters_example", - ], - restart_successful=True, - retried=True, - ), retry_strategy=IoArgoprojWorkflowV1alpha1RetryStrategy( affinity=IoArgoprojWorkflowV1alpha1RetryAffinity( node_anti_affinity={}, @@ -12089,14 +12081,6 @@ with argo_workflows.ApiClient(configuration) as api_client: pod_priority_class_name="pod_priority_class_name_example", pod_spec_patch="pod_spec_patch_example", priority=1, - retry=IoArgoprojWorkflowV1alpha1RetryConfig( - node_field_selector="node_field_selector_example", - parameters=[ - "parameters_example", - ], - restart_successful=True, - retried=True, - ), retry_strategy=IoArgoprojWorkflowV1alpha1RetryStrategy( affinity=IoArgoprojWorkflowV1alpha1RetryAffinity( node_anti_affinity={}, @@ -23198,14 +23182,6 @@ with argo_workflows.ApiClient(configuration) as api_client: pod_priority_class_name="pod_priority_class_name_example", pod_spec_patch="pod_spec_patch_example", priority=1, - retry=IoArgoprojWorkflowV1alpha1RetryConfig( - node_field_selector="node_field_selector_example", - parameters=[ - "parameters_example", - ], - restart_successful=True, - retried=True, - ), retry_strategy=IoArgoprojWorkflowV1alpha1RetryStrategy( affinity=IoArgoprojWorkflowV1alpha1RetryAffinity( node_anti_affinity={}, diff --git a/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1RetryConfig.md b/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1RetryConfig.md deleted file mode 100644 index 1738a4527609..000000000000 --- a/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1RetryConfig.md +++ /dev/null @@ -1,15 +0,0 @@ -# IoArgoprojWorkflowV1alpha1RetryConfig - -RetryConfig defines how to retry a workflow - -## Properties -Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- -**node_field_selector** | **str** | NodeFieldSelector selects nodes to reset | [optional] -**parameters** | **[str]** | Parameters are a list of parameters passed | [optional] -**restart_successful** | **bool** | RestartSuccessful defines whether or not to retry succeeded node | [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 540bbee1eb28..3f9ded2612a9 100644 --- a/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1WorkflowSpec.md +++ b/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1WorkflowSpec.md @@ -31,7 +31,6 @@ Name | Type | Description | Notes **pod_priority_class_name** | **str** | PriorityClassName to apply to workflow pods. | [optional] **pod_spec_patch** | **str** | PodSpecPatch holds strategic merge patch to apply against the pod spec. Allows parameterization of container fields which are not strings (e.g. resource limits). | [optional] **priority** | **int** | Priority is used if controller is configured to process limited number of workflows in parallel. Workflows with higher priority are processed first. | [optional] -**retry** | [**IoArgoprojWorkflowV1alpha1RetryConfig**](IoArgoprojWorkflowV1alpha1RetryConfig.md) | | [optional] **retry_strategy** | [**IoArgoprojWorkflowV1alpha1RetryStrategy**](IoArgoprojWorkflowV1alpha1RetryStrategy.md) | | [optional] **scheduler_name** | **str** | Set scheduler name for all pods. Will be overridden if container/script template's scheduler name is set. Default scheduler will be used if neither specified. | [optional] **security_context** | [**PodSecurityContext**](PodSecurityContext.md) | | [optional] diff --git a/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1WorkflowStatus.md b/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1WorkflowStatus.md index aa2504c42356..c46412b8d3c8 100644 --- a/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1WorkflowStatus.md +++ b/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1WorkflowStatus.md @@ -19,7 +19,6 @@ Name | Type | Description | Notes **phase** | **str** | Phase a simple, high-level summary of where the workflow is in its lifecycle. Will be \"\" (Unknown), \"Pending\", or \"Running\" before the workflow is completed, and \"Succeeded\", \"Failed\" or \"Error\" once the workflow has completed. | [optional] **progress** | **str** | Progress to completion | [optional] **resources_duration** | **{str: (int,)}** | ResourcesDuration is the total for the workflow | [optional] -**retry_status** | **bool** | RetryStatus tracks RetryStatus for this workflow | [optional] **started_at** | **datetime** | Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers. | [optional] **stored_templates** | [**{str: (IoArgoprojWorkflowV1alpha1Template,)}**](IoArgoprojWorkflowV1alpha1Template.md) | StoredTemplates is a mapping between a template ref and the node's status. | [optional] **stored_workflow_template_spec** | [**IoArgoprojWorkflowV1alpha1WorkflowSpec**](IoArgoprojWorkflowV1alpha1WorkflowSpec.md) | | [optional] diff --git a/sdks/python/client/docs/WorkflowServiceApi.md b/sdks/python/client/docs/WorkflowServiceApi.md index c8c1265a5d07..4296e4211333 100644 --- a/sdks/python/client/docs/WorkflowServiceApi.md +++ b/sdks/python/client/docs/WorkflowServiceApi.md @@ -1020,14 +1020,6 @@ with argo_workflows.ApiClient(configuration) as api_client: pod_priority_class_name="pod_priority_class_name_example", pod_spec_patch="pod_spec_patch_example", priority=1, - retry=IoArgoprojWorkflowV1alpha1RetryConfig( - node_field_selector="node_field_selector_example", - parameters=[ - "parameters_example", - ], - restart_successful=True, - retried=True, - ), retry_strategy=IoArgoprojWorkflowV1alpha1RetryStrategy( affinity=IoArgoprojWorkflowV1alpha1RetryAffinity( node_anti_affinity={}, @@ -12136,7 +12128,6 @@ with argo_workflows.ApiClient(configuration) as api_client: resources_duration={ "key": 1, }, - retry_status=True, started_at=dateutil_parser('1970-01-01T00:00:00.00Z'), stored_templates={ "key": IoArgoprojWorkflowV1alpha1Template( @@ -17607,14 +17598,6 @@ with argo_workflows.ApiClient(configuration) as api_client: pod_priority_class_name="pod_priority_class_name_example", pod_spec_patch="pod_spec_patch_example", priority=1, - retry=IoArgoprojWorkflowV1alpha1RetryConfig( - node_field_selector="node_field_selector_example", - parameters=[ - "parameters_example", - ], - restart_successful=True, - retried=True, - ), retry_strategy=IoArgoprojWorkflowV1alpha1RetryStrategy( affinity=IoArgoprojWorkflowV1alpha1RetryAffinity( node_anti_affinity={}, @@ -28591,14 +28574,6 @@ with argo_workflows.ApiClient(configuration) as api_client: pod_priority_class_name="pod_priority_class_name_example", pod_spec_patch="pod_spec_patch_example", priority=1, - retry=IoArgoprojWorkflowV1alpha1RetryConfig( - node_field_selector="node_field_selector_example", - parameters=[ - "parameters_example", - ], - restart_successful=True, - retried=True, - ), retry_strategy=IoArgoprojWorkflowV1alpha1RetryStrategy( affinity=IoArgoprojWorkflowV1alpha1RetryAffinity( node_anti_affinity={}, @@ -39707,7 +39682,6 @@ with argo_workflows.ApiClient(configuration) as api_client: resources_duration={ "key": 1, }, - retry_status=True, started_at=dateutil_parser('1970-01-01T00:00:00.00Z'), stored_templates={ "key": IoArgoprojWorkflowV1alpha1Template( @@ -45178,14 +45152,6 @@ with argo_workflows.ApiClient(configuration) as api_client: pod_priority_class_name="pod_priority_class_name_example", pod_spec_patch="pod_spec_patch_example", priority=1, - retry=IoArgoprojWorkflowV1alpha1RetryConfig( - node_field_selector="node_field_selector_example", - parameters=[ - "parameters_example", - ], - restart_successful=True, - retried=True, - ), retry_strategy=IoArgoprojWorkflowV1alpha1RetryStrategy( affinity=IoArgoprojWorkflowV1alpha1RetryAffinity( node_anti_affinity={}, diff --git a/sdks/python/client/docs/WorkflowTemplateServiceApi.md b/sdks/python/client/docs/WorkflowTemplateServiceApi.md index 648805ddbd0a..8f9032d97d57 100644 --- a/sdks/python/client/docs/WorkflowTemplateServiceApi.md +++ b/sdks/python/client/docs/WorkflowTemplateServiceApi.md @@ -1007,14 +1007,6 @@ with argo_workflows.ApiClient(configuration) as api_client: pod_priority_class_name="pod_priority_class_name_example", pod_spec_patch="pod_spec_patch_example", priority=1, - retry=IoArgoprojWorkflowV1alpha1RetryConfig( - node_field_selector="node_field_selector_example", - parameters=[ - "parameters_example", - ], - restart_successful=True, - retried=True, - ), retry_strategy=IoArgoprojWorkflowV1alpha1RetryStrategy( affinity=IoArgoprojWorkflowV1alpha1RetryAffinity( node_anti_affinity={}, @@ -11956,14 +11948,6 @@ with argo_workflows.ApiClient(configuration) as api_client: pod_priority_class_name="pod_priority_class_name_example", pod_spec_patch="pod_spec_patch_example", priority=1, - retry=IoArgoprojWorkflowV1alpha1RetryConfig( - node_field_selector="node_field_selector_example", - parameters=[ - "parameters_example", - ], - restart_successful=True, - retried=True, - ), retry_strategy=IoArgoprojWorkflowV1alpha1RetryStrategy( affinity=IoArgoprojWorkflowV1alpha1RetryAffinity( node_anti_affinity={}, @@ -22816,14 +22800,6 @@ with argo_workflows.ApiClient(configuration) as api_client: pod_priority_class_name="pod_priority_class_name_example", pod_spec_patch="pod_spec_patch_example", priority=1, - retry=IoArgoprojWorkflowV1alpha1RetryConfig( - node_field_selector="node_field_selector_example", - parameters=[ - "parameters_example", - ], - restart_successful=True, - retried=True, - ), retry_strategy=IoArgoprojWorkflowV1alpha1RetryStrategy( affinity=IoArgoprojWorkflowV1alpha1RetryAffinity( node_anti_affinity={}, diff --git a/swagger.yml b/swagger.yml new file mode 100644 index 000000000000..7b3a96b1c5f7 --- /dev/null +++ b/swagger.yml @@ -0,0 +1,5294 @@ +basePath: /api/v1 +consumes: + - application/json +definitions: + AWSElasticBlockStoreVolumeSource: + description: |- + An AWS EBS disk must exist before mounting to a container. The disk + must also be in the same AWS zone as the kubelet. An AWS EBS disk + can only be mounted as read/write once. AWS EBS volumes support + ownership management and SELinux relabeling. + properties: + fsType: + description: |- + fsType is the filesystem type of the volume that you want to mount. + Tip: Ensure that the filesystem type is supported by the host operating system. + Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + TODO: how do we prevent errors in the filesystem from compromising the machine + +optional + type: string + x-go-name: FSType + partition: + description: |- + partition is the partition in the volume that you want to mount. + If omitted, the default is to mount by volume name. + Examples: For volume /dev/sda1, you specify the partition as "1". + Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). + +optional + format: int32 + type: integer + x-go-name: Partition + readOnly: + description: |- + readOnly value true will force the readOnly setting in VolumeMounts. + More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + +optional + type: boolean + x-go-name: ReadOnly + volumeID: + description: |- + volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume). + More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + type: string + x-go-name: VolumeID + title: Represents a Persistent Disk resource in AWS. + type: object + x-go-package: k8s.io/api/core/v1 + Affinity: + properties: + nodeAffinity: + $ref: '#/definitions/NodeAffinity' + podAffinity: + $ref: '#/definitions/PodAffinity' + podAntiAffinity: + $ref: '#/definitions/PodAntiAffinity' + title: Affinity is a group of affinity scheduling rules. + type: object + x-go-package: k8s.io/api/core/v1 + Amount: + description: +kubebuilder:validation:Type=number + title: Amount represent a numeric amount. + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + AnyString: + description: |- + It will unmarshall int64, int32, float64, float32, boolean, a plain string and represents it as string. + It will marshall back to string - marshalling is not symmetric. + title: It's JSON type is just string. + type: string + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + ArchiveStrategy: + description: ArchiveStrategy describes how to archive files/directory when saving artifacts + properties: + none: + $ref: '#/definitions/NoneStrategy' + tar: + $ref: '#/definitions/TarStrategy' + zip: + $ref: '#/definitions/ZipStrategy' + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + Arguments: + description: Arguments to a template + properties: + artifacts: + $ref: '#/definitions/Artifacts' + parameters: + description: |- + Parameters is the list of parameters to pass to the template or workflow + +patchStrategy=merge + +patchMergeKey=name + items: + $ref: '#/definitions/Parameter' + type: array + x-go-name: Parameters + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + Artifact: + description: Artifact indicates an artifact to place at a specified path + properties: + archive: + $ref: '#/definitions/ArchiveStrategy' + archiveLogs: + description: ArchiveLogs indicates if the container logs should be archived + type: boolean + x-go-name: ArchiveLogs + artifactGC: + $ref: '#/definitions/ArtifactGC' + artifactory: + $ref: '#/definitions/ArtifactoryArtifact' + azure: + $ref: '#/definitions/AzureArtifact' + deleted: + description: Has this been deleted? + type: boolean + x-go-name: Deleted + from: + description: From allows an artifact to reference an artifact from a previous step + type: string + x-go-name: From + fromExpression: + description: FromExpression, if defined, is evaluated to specify the value for the artifact + type: string + x-go-name: FromExpression + gcs: + $ref: '#/definitions/GCSArtifact' + git: + $ref: '#/definitions/GitArtifact' + globalName: + description: |- + GlobalName exports an output artifact to the global scope, making it available as + '{{workflow.outputs.artifacts.XXXX}} and in workflow.status.outputs.artifacts + type: string + x-go-name: GlobalName + hdfs: + $ref: '#/definitions/HDFSArtifact' + http: + $ref: '#/definitions/HTTPArtifact' + mode: + description: |- + mode bits to use on this file, must be a value between 0 and 0777 + set when loading input artifacts. + format: int32 + type: integer + x-go-name: Mode + name: + description: name of the artifact. must be unique within a template's inputs/outputs. + type: string + x-go-name: Name + optional: + description: Make Artifacts optional, if Artifacts doesn't generate or exist + type: boolean + x-go-name: Optional + oss: + $ref: '#/definitions/OSSArtifact' + path: + description: Path is the container path to the artifact + type: string + x-go-name: Path + raw: + $ref: '#/definitions/RawArtifact' + recurseMode: + description: If mode is set, apply the permission recursively into the artifact if it is a folder + type: boolean + x-go-name: RecurseMode + s3: + $ref: '#/definitions/S3Artifact' + subPath: + description: SubPath allows an artifact to be sourced from a subpath within the specified source + type: string + x-go-name: SubPath + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + 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' + serviceAccountName: + description: ServiceAccountName is an optional field for specifying the Service Account that should be assigned to the Pod doing the deletion + type: string + x-go-name: ServiceAccountName + strategy: + $ref: '#/definitions/ArtifactGCStrategy' + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + ArtifactGCStrategy: + title: ArtifactGCStrategy is the strategy when to delete artifacts for GC. + type: string + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + ArtifactLocation: + description: |- + It is used as single artifact in the context of inputs/outputs (e.g. outputs.artifacts.artname). + It is also used to describe the location of multiple artifacts such as the archive location + of a single workflow step, which the executor will use as a default location to store its files. + properties: + archiveLogs: + description: ArchiveLogs indicates if the container logs should be archived + type: boolean + x-go-name: ArchiveLogs + artifactory: + $ref: '#/definitions/ArtifactoryArtifact' + azure: + $ref: '#/definitions/AzureArtifact' + gcs: + $ref: '#/definitions/GCSArtifact' + git: + $ref: '#/definitions/GitArtifact' + hdfs: + $ref: '#/definitions/HDFSArtifact' + http: + $ref: '#/definitions/HTTPArtifact' + oss: + $ref: '#/definitions/OSSArtifact' + raw: + $ref: '#/definitions/RawArtifact' + s3: + $ref: '#/definitions/S3Artifact' + title: ArtifactLocation describes a location for a single or multiple artifacts. + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + ArtifactPaths: + description: ArtifactPaths expands a step from a collection of artifacts + properties: + archive: + $ref: '#/definitions/ArchiveStrategy' + archiveLogs: + description: ArchiveLogs indicates if the container logs should be archived + type: boolean + x-go-name: ArchiveLogs + artifactGC: + $ref: '#/definitions/ArtifactGC' + artifactory: + $ref: '#/definitions/ArtifactoryArtifact' + azure: + $ref: '#/definitions/AzureArtifact' + deleted: + description: Has this been deleted? + type: boolean + x-go-name: Deleted + from: + description: From allows an artifact to reference an artifact from a previous step + type: string + x-go-name: From + fromExpression: + description: FromExpression, if defined, is evaluated to specify the value for the artifact + type: string + x-go-name: FromExpression + gcs: + $ref: '#/definitions/GCSArtifact' + git: + $ref: '#/definitions/GitArtifact' + globalName: + description: |- + GlobalName exports an output artifact to the global scope, making it available as + '{{workflow.outputs.artifacts.XXXX}} and in workflow.status.outputs.artifacts + type: string + x-go-name: GlobalName + hdfs: + $ref: '#/definitions/HDFSArtifact' + http: + $ref: '#/definitions/HTTPArtifact' + mode: + description: |- + mode bits to use on this file, must be a value between 0 and 0777 + set when loading input artifacts. + format: int32 + type: integer + x-go-name: Mode + name: + description: name of the artifact. must be unique within a template's inputs/outputs. + type: string + x-go-name: Name + optional: + description: Make Artifacts optional, if Artifacts doesn't generate or exist + type: boolean + x-go-name: Optional + oss: + $ref: '#/definitions/OSSArtifact' + path: + description: Path is the container path to the artifact + type: string + x-go-name: Path + raw: + $ref: '#/definitions/RawArtifact' + recurseMode: + description: If mode is set, apply the permission recursively into the artifact if it is a folder + type: boolean + x-go-name: RecurseMode + s3: + $ref: '#/definitions/S3Artifact' + subPath: + description: SubPath allows an artifact to be sourced from a subpath within the specified source + type: string + x-go-name: SubPath + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + ArtifactoryArtifact: + description: ArtifactoryArtifact is the location of an artifactory artifact + properties: + passwordSecret: + $ref: '#/definitions/SecretKeySelector' + url: + description: URL of the artifact + type: string + x-go-name: URL + usernameSecret: + $ref: '#/definitions/SecretKeySelector' + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + Artifacts: + items: + $ref: '#/definitions/Artifact' + type: array + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + AzureArtifact: + description: AzureArtifact is the location of a an Azure Storage artifact + properties: + accountKeySecret: + $ref: '#/definitions/SecretKeySelector' + blob: + description: Blob is the blob name (i.e., path) in the container where the artifact resides + type: string + x-go-name: Blob + container: + description: Container is the container where resources will be stored + type: string + x-go-name: Container + endpoint: + description: Endpoint is the service url associated with an account. It is most likely "https://.blob.core.windows.net" + type: string + x-go-name: Endpoint + useSDKCreds: + description: UseSDKCreds tells the driver to figure out credentials based on sdk defaults. + type: boolean + x-go-name: UseSDKCreds + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + AzureDataDiskCachingMode: + description: +enum + type: string + x-go-package: k8s.io/api/core/v1 + AzureDataDiskKind: + description: +enum + type: string + x-go-package: k8s.io/api/core/v1 + AzureDiskVolumeSource: + properties: + cachingMode: + $ref: '#/definitions/AzureDataDiskCachingMode' + diskName: + description: diskName is the Name of the data disk in the blob storage + type: string + x-go-name: DiskName + diskURI: + description: diskURI is the URI of data disk in the blob storage + type: string + x-go-name: DataDiskURI + fsType: + description: |- + fsType is Filesystem type to mount. + Must be a filesystem type supported by the host operating system. + Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + +optional + type: string + x-go-name: FSType + kind: + $ref: '#/definitions/AzureDataDiskKind' + readOnly: + description: |- + readOnly Defaults to false (read/write). ReadOnly here will force + the ReadOnly setting in VolumeMounts. + +optional + type: boolean + x-go-name: ReadOnly + title: AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. + type: object + x-go-package: k8s.io/api/core/v1 + AzureFileVolumeSource: + properties: + readOnly: + description: |- + readOnly defaults to false (read/write). ReadOnly here will force + the ReadOnly setting in VolumeMounts. + +optional + type: boolean + x-go-name: ReadOnly + secretName: + description: secretName is the name of secret that contains Azure Storage Account Name and Key + type: string + x-go-name: SecretName + shareName: + description: shareName is the azure share Name + type: string + x-go-name: ShareName + title: AzureFile represents an Azure File Service mount on the host and bind mount to the pod. + type: object + x-go-package: k8s.io/api/core/v1 + Backoff: + description: Backoff is a backoff strategy to use within retryStrategy + properties: + duration: + description: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. "2m", "1h") + type: string + x-go-name: Duration + factor: + $ref: '#/definitions/IntOrString' + maxDuration: + description: MaxDuration is the maximum amount of time allowed for a workflow in the backoff strategy + type: string + x-go-name: MaxDuration + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + BasicAuth: + description: BasicAuth describes the secret selectors required for basic authentication + properties: + passwordSecret: + $ref: '#/definitions/SecretKeySelector' + usernameSecret: + $ref: '#/definitions/SecretKeySelector' + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + CSIVolumeSource: + description: Represents a source location of a volume to mount, managed by an external CSI driver + properties: + driver: + description: |- + driver is the name of the CSI driver that handles this volume. + Consult with your admin for the correct name as registered in the cluster. + type: string + x-go-name: Driver + fsType: + description: |- + fsType to mount. Ex. "ext4", "xfs", "ntfs". + If not provided, the empty value is passed to the associated CSI driver + which will determine the default filesystem to apply. + +optional + type: string + x-go-name: FSType + nodePublishSecretRef: + $ref: '#/definitions/LocalObjectReference' + readOnly: + description: |- + readOnly specifies a read-only configuration for the volume. + Defaults to false (read/write). + +optional + type: boolean + x-go-name: ReadOnly + volumeAttributes: + additionalProperties: + type: string + description: |- + volumeAttributes stores driver-specific properties that are passed to the CSI + driver. Consult your driver's documentation for supported values. + +optional + type: object + x-go-name: VolumeAttributes + type: object + x-go-package: k8s.io/api/core/v1 + Cache: + description: Cache is the configuration for the type of cache to be used + properties: + configMap: + $ref: '#/definitions/ConfigMapKeySelector' + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + Capabilities: + properties: + add: + description: |- + Added capabilities + +optional + items: + $ref: '#/definitions/Capability' + type: array + x-go-name: Add + drop: + description: |- + Removed capabilities + +optional + items: + $ref: '#/definitions/Capability' + type: array + x-go-name: Drop + title: Adds and removes POSIX capabilities from running containers. + type: object + x-go-package: k8s.io/api/core/v1 + Capability: + description: Capability represent POSIX capabilities type + type: string + x-go-package: k8s.io/api/core/v1 + CephFSVolumeSource: + description: |- + Represents a Ceph Filesystem mount that lasts the lifetime of a pod + Cephfs volumes do not support ownership management or SELinux relabeling. + properties: + monitors: + description: |- + monitors is Required: Monitors is a collection of Ceph monitors + More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it + items: + type: string + type: array + x-go-name: Monitors + path: + description: |- + path is Optional: Used as the mounted root, rather than the full Ceph tree, default is / + +optional + type: string + x-go-name: Path + readOnly: + description: |- + readOnly is Optional: Defaults to false (read/write). ReadOnly here will force + the ReadOnly setting in VolumeMounts. + More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it + +optional + type: boolean + x-go-name: ReadOnly + secretFile: + description: |- + secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret + More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it + +optional + type: string + x-go-name: SecretFile + secretRef: + $ref: '#/definitions/LocalObjectReference' + user: + description: |- + user is optional: User is the rados user name, default is admin + More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it + +optional + type: string + x-go-name: User + type: object + x-go-package: k8s.io/api/core/v1 + CinderVolumeSource: + description: |- + A Cinder volume must exist before mounting to a container. + The volume must also be in the same region as the kubelet. + Cinder volumes support ownership management and SELinux relabeling. + properties: + fsType: + description: |- + fsType is the filesystem type to mount. + Must be a filesystem type supported by the host operating system. + Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + More info: https://examples.k8s.io/mysql-cinder-pd/README.md + +optional + type: string + x-go-name: FSType + readOnly: + description: |- + readOnly defaults to false (read/write). ReadOnly here will force + the ReadOnly setting in VolumeMounts. + More info: https://examples.k8s.io/mysql-cinder-pd/README.md + +optional + type: boolean + x-go-name: ReadOnly + secretRef: + $ref: '#/definitions/LocalObjectReference' + volumeID: + description: |- + volumeID used to identify the volume in cinder. + More info: https://examples.k8s.io/mysql-cinder-pd/README.md + type: string + x-go-name: VolumeID + title: Represents a cinder volume resource in Openstack. + type: object + x-go-package: k8s.io/api/core/v1 + ClientCertAuth: + description: ClientCertAuth holds necessary information for client authentication via certificates + properties: + clientCertSecret: + $ref: '#/definitions/SecretKeySelector' + clientKeySecret: + $ref: '#/definitions/SecretKeySelector' + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + ConfigMapEnvSource: + description: |- + The contents of the target ConfigMap's Data field will represent the + key-value pairs as environment variables. + properties: + name: + description: |- + Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid? + +optional + type: string + x-go-name: Name + optional: + description: |- + Specify whether the ConfigMap must be defined + +optional + type: boolean + x-go-name: Optional + title: |- + ConfigMapEnvSource selects a ConfigMap to populate the environment + variables with. + type: object + x-go-package: k8s.io/api/core/v1 + ConfigMapKeySelector: + description: +structType=atomic + properties: + key: + description: The key to select. + type: string + x-go-name: Key + name: + description: |- + Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid? + +optional + type: string + x-go-name: Name + optional: + description: |- + Specify whether the ConfigMap or its key must be defined + +optional + type: boolean + x-go-name: Optional + title: Selects a key from a ConfigMap. + type: object + x-go-package: k8s.io/api/core/v1 + ConfigMapProjection: + description: |- + The contents of the target ConfigMap's Data field will be presented in a + projected volume as files using the keys in the Data field as the file names, + unless the items element is populated with specific mappings of keys to paths. + Note that this is identical to a configmap volume source without the default + mode. + properties: + items: + description: |- + items if unspecified, each key-value pair in the Data field of the referenced + ConfigMap will be projected into the volume as a file whose name is the + key and content is the value. If specified, the listed keys will be + projected into the specified paths, and unlisted keys will not be + present. If a key is specified which is not present in the ConfigMap, + the volume setup will error unless it is marked optional. Paths must be + relative and may not contain the '..' path or start with '..'. + +optional + items: + $ref: '#/definitions/KeyToPath' + type: array + x-go-name: Items + name: + description: |- + Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid? + +optional + type: string + x-go-name: Name + optional: + description: |- + optional specify whether the ConfigMap or its keys must be defined + +optional + type: boolean + x-go-name: Optional + title: Adapts a ConfigMap into a projected volume. + type: object + x-go-package: k8s.io/api/core/v1 + ConfigMapVolumeSource: + description: |- + The contents of the target ConfigMap's Data field will be presented in a + volume as files using the keys in the Data field as the file names, unless + the items element is populated with specific mappings of keys to paths. + ConfigMap volumes support ownership management and SELinux relabeling. + properties: + defaultMode: + description: |- + defaultMode is optional: mode bits used to set permissions on created files by default. + Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. + YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. + Defaults to 0644. + Directories within the path are not affected by this setting. + This might be in conflict with other options that affect the file + mode, like fsGroup, and the result can be other mode bits set. + +optional + format: int32 + type: integer + x-go-name: DefaultMode + items: + description: |- + items if unspecified, each key-value pair in the Data field of the referenced + ConfigMap will be projected into the volume as a file whose name is the + key and content is the value. If specified, the listed keys will be + projected into the specified paths, and unlisted keys will not be + present. If a key is specified which is not present in the ConfigMap, + the volume setup will error unless it is marked optional. Paths must be + relative and may not contain the '..' path or start with '..'. + +optional + items: + $ref: '#/definitions/KeyToPath' + type: array + x-go-name: Items + name: + description: |- + Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid? + +optional + type: string + x-go-name: Name + optional: + description: |- + optional specify whether the ConfigMap or its keys must be defined + +optional + type: boolean + x-go-name: Optional + title: Adapts a ConfigMap into a volume. + type: object + x-go-package: k8s.io/api/core/v1 + Container: + properties: + args: + description: |- + Arguments to the entrypoint. + The container image's CMD is used if this is not provided. + Variable references $(VAR_NAME) are expanded using the container's environment. If a variable + cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced + to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will + produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless + of whether the variable exists or not. Cannot be updated. + More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell + +optional + items: + type: string + type: array + x-go-name: Args + command: + description: |- + Entrypoint array. Not executed within a shell. + The container image's ENTRYPOINT is used if this is not provided. + Variable references $(VAR_NAME) are expanded using the container's environment. If a variable + cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced + to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will + produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless + of whether the variable exists or not. Cannot be updated. + More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell + +optional + items: + type: string + type: array + x-go-name: Command + env: + description: |- + List of environment variables to set in the container. + Cannot be updated. + +optional + +patchMergeKey=name + +patchStrategy=merge + items: + $ref: '#/definitions/EnvVar' + type: array + x-go-name: Env + envFrom: + description: |- + List of sources to populate environment variables in the container. + The keys defined within a source must be a C_IDENTIFIER. All invalid keys + will be reported as an event when the container is starting. When a key exists in multiple + sources, the value associated with the last source will take precedence. + Values defined by an Env with a duplicate key will take precedence. + Cannot be updated. + +optional + items: + $ref: '#/definitions/EnvFromSource' + type: array + x-go-name: EnvFrom + image: + description: |- + Container image name. + More info: https://kubernetes.io/docs/concepts/containers/images + This field is optional to allow higher level config management to default or override + container images in workload controllers like Deployments and StatefulSets. + +optional + type: string + x-go-name: Image + imagePullPolicy: + $ref: '#/definitions/PullPolicy' + lifecycle: + $ref: '#/definitions/Lifecycle' + livenessProbe: + $ref: '#/definitions/Probe' + name: + description: |- + Name of the container specified as a DNS_LABEL. + Each container in a pod must have a unique name (DNS_LABEL). + Cannot be updated. + type: string + x-go-name: Name + ports: + description: |- + List of ports to expose from the container. Exposing a port here gives + the system additional information about the network connections a + container uses, but is primarily informational. Not specifying a port here + DOES NOT prevent that port from being exposed. Any port which is + listening on the default "0.0.0.0" address inside a container will be + accessible from the network. + Cannot be updated. + +optional + +patchMergeKey=containerPort + +patchStrategy=merge + +listType=map + +listMapKey=containerPort + +listMapKey=protocol + items: + $ref: '#/definitions/ContainerPort' + type: array + x-go-name: Ports + readinessProbe: + $ref: '#/definitions/Probe' + resources: + $ref: '#/definitions/ResourceRequirements' + securityContext: + $ref: '#/definitions/SecurityContext' + startupProbe: + $ref: '#/definitions/Probe' + stdin: + description: |- + Whether this container should allocate a buffer for stdin in the container runtime. If this + is not set, reads from stdin in the container will always result in EOF. + Default is false. + +optional + type: boolean + x-go-name: Stdin + stdinOnce: + description: |- + Whether the container runtime should close the stdin channel after it has been opened by + a single attach. When stdin is true the stdin stream will remain open across multiple attach + sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the + first client attaches to stdin, and then remains open and accepts data until the client disconnects, + at which time stdin is closed and remains closed until the container is restarted. If this + flag is false, a container processes that reads from stdin will never receive an EOF. + Default is false + +optional + type: boolean + x-go-name: StdinOnce + terminationMessagePath: + description: |- + Optional: Path at which the file to which the container's termination message + will be written is mounted into the container's filesystem. + Message written is intended to be brief final status, such as an assertion failure message. + Will be truncated by the node if greater than 4096 bytes. The total message length across + all containers will be limited to 12kb. + Defaults to /dev/termination-log. + Cannot be updated. + +optional + type: string + x-go-name: TerminationMessagePath + terminationMessagePolicy: + $ref: '#/definitions/TerminationMessagePolicy' + tty: + description: |- + Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. + Default is false. + +optional + type: boolean + x-go-name: TTY + volumeDevices: + description: |- + volumeDevices is the list of block devices to be used by the container. + +patchMergeKey=devicePath + +patchStrategy=merge + +optional + items: + $ref: '#/definitions/VolumeDevice' + type: array + x-go-name: VolumeDevices + volumeMounts: + description: |- + Pod volumes to mount into the container's filesystem. + Cannot be updated. + +optional + +patchMergeKey=mountPath + +patchStrategy=merge + items: + $ref: '#/definitions/VolumeMount' + type: array + x-go-name: VolumeMounts + workingDir: + description: |- + Container's working directory. + If not specified, the container runtime's default will be used, which + might be configured in the container image. + Cannot be updated. + +optional + type: string + x-go-name: WorkingDir + title: A single application container that you want to run within a pod. + type: object + x-go-package: k8s.io/api/core/v1 + ContainerNode: + properties: + args: + description: |- + Arguments to the entrypoint. + The container image's CMD is used if this is not provided. + Variable references $(VAR_NAME) are expanded using the container's environment. If a variable + cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced + to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will + produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless + of whether the variable exists or not. Cannot be updated. + More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell + +optional + items: + type: string + type: array + x-go-name: Args + command: + description: |- + Entrypoint array. Not executed within a shell. + The container image's ENTRYPOINT is used if this is not provided. + Variable references $(VAR_NAME) are expanded using the container's environment. If a variable + cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced + to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will + produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless + of whether the variable exists or not. Cannot be updated. + More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell + +optional + items: + type: string + type: array + x-go-name: Command + dependencies: + items: + type: string + type: array + x-go-name: Dependencies + env: + description: |- + List of environment variables to set in the container. + Cannot be updated. + +optional + +patchMergeKey=name + +patchStrategy=merge + items: + $ref: '#/definitions/EnvVar' + type: array + x-go-name: Env + envFrom: + description: |- + List of sources to populate environment variables in the container. + The keys defined within a source must be a C_IDENTIFIER. All invalid keys + will be reported as an event when the container is starting. When a key exists in multiple + sources, the value associated with the last source will take precedence. + Values defined by an Env with a duplicate key will take precedence. + Cannot be updated. + +optional + items: + $ref: '#/definitions/EnvFromSource' + type: array + x-go-name: EnvFrom + image: + description: |- + Container image name. + More info: https://kubernetes.io/docs/concepts/containers/images + This field is optional to allow higher level config management to default or override + container images in workload controllers like Deployments and StatefulSets. + +optional + type: string + x-go-name: Image + imagePullPolicy: + $ref: '#/definitions/PullPolicy' + lifecycle: + $ref: '#/definitions/Lifecycle' + livenessProbe: + $ref: '#/definitions/Probe' + name: + description: |- + Name of the container specified as a DNS_LABEL. + Each container in a pod must have a unique name (DNS_LABEL). + Cannot be updated. + type: string + x-go-name: Name + ports: + description: |- + List of ports to expose from the container. Exposing a port here gives + the system additional information about the network connections a + container uses, but is primarily informational. Not specifying a port here + DOES NOT prevent that port from being exposed. Any port which is + listening on the default "0.0.0.0" address inside a container will be + accessible from the network. + Cannot be updated. + +optional + +patchMergeKey=containerPort + +patchStrategy=merge + +listType=map + +listMapKey=containerPort + +listMapKey=protocol + items: + $ref: '#/definitions/ContainerPort' + type: array + x-go-name: Ports + readinessProbe: + $ref: '#/definitions/Probe' + resources: + $ref: '#/definitions/ResourceRequirements' + securityContext: + $ref: '#/definitions/SecurityContext' + startupProbe: + $ref: '#/definitions/Probe' + stdin: + description: |- + Whether this container should allocate a buffer for stdin in the container runtime. If this + is not set, reads from stdin in the container will always result in EOF. + Default is false. + +optional + type: boolean + x-go-name: Stdin + stdinOnce: + description: |- + Whether the container runtime should close the stdin channel after it has been opened by + a single attach. When stdin is true the stdin stream will remain open across multiple attach + sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the + first client attaches to stdin, and then remains open and accepts data until the client disconnects, + at which time stdin is closed and remains closed until the container is restarted. If this + flag is false, a container processes that reads from stdin will never receive an EOF. + Default is false + +optional + type: boolean + x-go-name: StdinOnce + terminationMessagePath: + description: |- + Optional: Path at which the file to which the container's termination message + will be written is mounted into the container's filesystem. + Message written is intended to be brief final status, such as an assertion failure message. + Will be truncated by the node if greater than 4096 bytes. The total message length across + all containers will be limited to 12kb. + Defaults to /dev/termination-log. + Cannot be updated. + +optional + type: string + x-go-name: TerminationMessagePath + terminationMessagePolicy: + $ref: '#/definitions/TerminationMessagePolicy' + tty: + description: |- + Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. + Default is false. + +optional + type: boolean + x-go-name: TTY + volumeDevices: + description: |- + volumeDevices is the list of block devices to be used by the container. + +patchMergeKey=devicePath + +patchStrategy=merge + +optional + items: + $ref: '#/definitions/VolumeDevice' + type: array + x-go-name: VolumeDevices + volumeMounts: + description: |- + Pod volumes to mount into the container's filesystem. + Cannot be updated. + +optional + +patchMergeKey=mountPath + +patchStrategy=merge + items: + $ref: '#/definitions/VolumeMount' + type: array + x-go-name: VolumeMounts + workingDir: + description: |- + Container's working directory. + If not specified, the container runtime's default will be used, which + might be configured in the container image. + Cannot be updated. + +optional + type: string + x-go-name: WorkingDir + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + ContainerPort: + properties: + containerPort: + description: |- + Number of port to expose on the pod's IP address. + This must be a valid port number, 0 < x < 65536. + format: int32 + type: integer + x-go-name: ContainerPort + hostIP: + description: |- + What host IP to bind the external port to. + +optional + type: string + x-go-name: HostIP + hostPort: + description: |- + Number of port to expose on the host. + If specified, this must be a valid port number, 0 < x < 65536. + If HostNetwork is specified, this must match ContainerPort. + Most containers do not need this. + +optional + format: int32 + type: integer + x-go-name: HostPort + name: + description: |- + If specified, this must be an IANA_SVC_NAME and unique within the pod. Each + named port in a pod must have a unique name. Name for the port that can be + referred to by services. + +optional + type: string + x-go-name: Name + protocol: + $ref: '#/definitions/Protocol' + title: ContainerPort represents a network port in a single container. + type: object + x-go-package: k8s.io/api/core/v1 + ContainerSetRetryStrategy: + properties: + duration: + description: |- + Duration is the time between each retry, examples values are "300ms", "1s" or "5m". + Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h". + type: string + x-go-name: Duration + retries: + $ref: '#/definitions/IntOrString' + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + ContainerSetTemplate: + properties: + containers: + items: + $ref: '#/definitions/ContainerNode' + type: array + x-go-name: Containers + retryStrategy: + $ref: '#/definitions/ContainerSetRetryStrategy' + volumeMounts: + items: + $ref: '#/definitions/VolumeMount' + type: array + x-go-name: VolumeMounts + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + ContinueOn: + description: It can be specified if the workflow should continue when the pod errors, fails or both. + properties: + error: + description: +optional + type: boolean + x-go-name: Error + failed: + description: +optional + type: boolean + x-go-name: Failed + title: ContinueOn defines if a workflow should continue even if a task or step fails/errors. + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + Counter: + description: Counter is a Counter prometheus metric + properties: + value: + description: Value is the value of the metric + type: string + x-go-name: Value + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + CreateS3BucketOptions: + description: CreateS3BucketOptions options used to determine automatic automatic bucket-creation process + properties: + objectLocking: + description: ObjectLocking Enable object locking + type: boolean + x-go-name: ObjectLocking + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + DAGTask: + description: DAGTask represents a node in the graph during DAG execution + properties: + arguments: + $ref: '#/definitions/Arguments' + continueOn: + $ref: '#/definitions/ContinueOn' + dependencies: + description: Dependencies are name of other targets which this depends on + items: + type: string + type: array + x-go-name: Dependencies + depends: + description: Depends are name of other targets which this depends on + type: string + x-go-name: Depends + hooks: + $ref: '#/definitions/LifecycleHooks' + inline: + $ref: '#/definitions/Template' + name: + description: Name is the name of the target + type: string + x-go-name: Name + onExit: + description: |- + OnExit is a template reference which is invoked at the end of the + template, irrespective of the success, failure, or error of the + primary template. + DEPRECATED: Use Hooks[exit].Template instead. + type: string + x-go-name: OnExit + template: + description: Name of template to execute + type: string + x-go-name: Template + templateRef: + $ref: '#/definitions/TemplateRef' + when: + description: When is an expression in which the task should conditionally execute + type: string + x-go-name: When + withItems: + description: WithItems expands a task into multiple parallel tasks from the items in the list + items: + $ref: '#/definitions/Item' + type: array + x-go-name: WithItems + withParam: + description: |- + WithParam expands a task into multiple parallel tasks from the value in the parameter, + which is expected to be a JSON list. + type: string + x-go-name: WithParam + withSequence: + $ref: '#/definitions/Sequence' + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + DAGTemplate: + description: DAGTemplate is a template subtype for directed acyclic graph templates + properties: + failFast: + description: |- + This flag is for DAG logic. The DAG logic has a built-in "fail fast" feature to stop scheduling new steps, + as soon as it detects that one of the DAG nodes is failed. Then it waits until all DAG nodes are completed + before failing the DAG itself. + The FailFast flag default is true, if set to false, it will allow a DAG to run all branches of the DAG to + completion (either success or failure), regardless of the failed outcomes of branches in the DAG. + More info and example about this feature at https://github.com/argoproj/argo-workflows/issues/1442 + type: boolean + x-go-name: FailFast + target: + description: Target are one or more names of targets to execute in a DAG + type: string + x-go-name: Target + tasks: + description: |- + Tasks are a list of DAG tasks + +patchStrategy=merge + +patchMergeKey=name + items: + $ref: '#/definitions/DAGTask' + type: array + x-go-name: Tasks + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + Data: + description: Data is a data template + properties: + source: + $ref: '#/definitions/DataSource' + transformation: + $ref: '#/definitions/Transformation' + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + DataSource: + description: DataSource sources external data into a data template + properties: + artifactPaths: + $ref: '#/definitions/ArtifactPaths' + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + DownwardAPIProjection: + description: |- + Note that this is identical to a downwardAPI volume source without the default + mode. + properties: + items: + description: |- + Items is a list of DownwardAPIVolume file + +optional + items: + $ref: '#/definitions/DownwardAPIVolumeFile' + type: array + x-go-name: Items + title: Represents downward API info for projecting into a projected volume. + type: object + x-go-package: k8s.io/api/core/v1 + DownwardAPIVolumeFile: + description: DownwardAPIVolumeFile represents information to create the file containing the pod field + properties: + fieldRef: + $ref: '#/definitions/ObjectFieldSelector' + mode: + description: |- + Optional: mode bits used to set permissions on this file, must be an octal value + between 0000 and 0777 or a decimal value between 0 and 511. + YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. + If not specified, the volume defaultMode will be used. + This might be in conflict with other options that affect the file + mode, like fsGroup, and the result can be other mode bits set. + +optional + format: int32 + type: integer + x-go-name: Mode + path: + description: 'Required: Path is the relative path name of the file to be created. Must not be absolute or contain the ''..'' path. Must be utf-8 encoded. The first item of the relative path must not start with ''..''' + type: string + x-go-name: Path + resourceFieldRef: + $ref: '#/definitions/ResourceFieldSelector' + type: object + x-go-package: k8s.io/api/core/v1 + DownwardAPIVolumeSource: + description: Downward API volumes support ownership management and SELinux relabeling. + properties: + defaultMode: + description: |- + Optional: mode bits to use on created files by default. Must be a + Optional: mode bits used to set permissions on created files by default. + Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. + YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. + Defaults to 0644. + Directories within the path are not affected by this setting. + This might be in conflict with other options that affect the file + mode, like fsGroup, and the result can be other mode bits set. + +optional + format: int32 + type: integer + x-go-name: DefaultMode + items: + description: |- + Items is a list of downward API volume file + +optional + items: + $ref: '#/definitions/DownwardAPIVolumeFile' + type: array + x-go-name: Items + title: DownwardAPIVolumeSource represents a volume containing downward API info. + type: object + x-go-package: k8s.io/api/core/v1 + Duration: + description: |- + Duration is a wrapper around time.Duration which supports correct + marshaling to YAML and JSON. In particular, it marshals into strings, which + can be used as map keys in json. + type: object + x-go-package: k8s.io/apimachinery/pkg/apis/meta/v1 + EmptyDirVolumeSource: + description: Empty directory volumes support ownership management and SELinux relabeling. + properties: + medium: + $ref: '#/definitions/StorageMedium' + sizeLimit: + $ref: '#/definitions/Quantity' + title: Represents an empty directory for a pod. + type: object + x-go-package: k8s.io/api/core/v1 + EnvFromSource: + description: EnvFromSource represents the source of a set of ConfigMaps + properties: + configMapRef: + $ref: '#/definitions/ConfigMapEnvSource' + prefix: + description: |- + An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER. + +optional + type: string + x-go-name: Prefix + secretRef: + $ref: '#/definitions/SecretEnvSource' + type: object + x-go-package: k8s.io/api/core/v1 + EnvVar: + properties: + name: + description: Name of the environment variable. Must be a C_IDENTIFIER. + type: string + x-go-name: Name + value: + description: |- + Variable references $(VAR_NAME) are expanded + using the previously defined environment variables in the container and + any service environment variables. If a variable cannot be resolved, + the reference in the input string will be unchanged. Double $$ are reduced + to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. + "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". + Escaped references will never be expanded, regardless of whether the variable + exists or not. + Defaults to "". + +optional + type: string + x-go-name: Value + valueFrom: + $ref: '#/definitions/EnvVarSource' + title: EnvVar represents an environment variable present in a Container. + type: object + x-go-package: k8s.io/api/core/v1 + EnvVarSource: + properties: + configMapKeyRef: + $ref: '#/definitions/ConfigMapKeySelector' + fieldRef: + $ref: '#/definitions/ObjectFieldSelector' + resourceFieldRef: + $ref: '#/definitions/ResourceFieldSelector' + secretKeyRef: + $ref: '#/definitions/SecretKeySelector' + title: EnvVarSource represents a source for the value of an EnvVar. + type: object + x-go-package: k8s.io/api/core/v1 + EphemeralVolumeSource: + properties: + volumeClaimTemplate: + $ref: '#/definitions/PersistentVolumeClaimTemplate' + title: Represents an ephemeral volume that is handled by a normal storage driver. + type: object + x-go-package: k8s.io/api/core/v1 + ExecAction: + properties: + command: + description: |- + Command is the command line to execute inside the container, the working directory for the + command is root ('/') in the container's filesystem. The command is simply exec'd, it is + not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use + a shell, you need to explicitly call out to that shell. + Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + +optional + items: + type: string + type: array + x-go-name: Command + title: ExecAction describes a "run in container" action. + type: object + x-go-package: k8s.io/api/core/v1 + ExecuteTemplateArgs: + properties: + template: + $ref: '#/definitions/Template' + workflow: + $ref: '#/definitions/Workflow' + required: + - workflow + - template + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/plugins/executor + ExecuteTemplateReply: + properties: + node: + $ref: '#/definitions/NodeResult' + requeue: + $ref: '#/definitions/Duration' + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/plugins/executor + ExecutorConfig: + properties: + serviceAccountName: + description: ServiceAccountName specifies the service account name of the executor container. + type: string + x-go-name: ServiceAccountName + title: ExecutorConfig holds configurations of an executor container. + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + FCVolumeSource: + description: |- + Fibre Channel volumes can only be mounted as read/write once. + Fibre Channel volumes support ownership management and SELinux relabeling. + properties: + fsType: + description: |- + fsType is the filesystem type to mount. + Must be a filesystem type supported by the host operating system. + Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + TODO: how do we prevent errors in the filesystem from compromising the machine + +optional + type: string + x-go-name: FSType + lun: + description: |- + lun is Optional: FC target lun number + +optional + format: int32 + type: integer + x-go-name: Lun + readOnly: + description: |- + readOnly is Optional: Defaults to false (read/write). ReadOnly here will force + the ReadOnly setting in VolumeMounts. + +optional + type: boolean + x-go-name: ReadOnly + targetWWNs: + description: |- + targetWWNs is Optional: FC target worldwide names (WWNs) + +optional + items: + type: string + type: array + x-go-name: TargetWWNs + wwids: + description: |- + wwids Optional: FC volume world wide identifiers (wwids) + Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously. + +optional + items: + type: string + type: array + x-go-name: WWIDs + title: Represents a Fibre Channel volume. + type: object + x-go-package: k8s.io/api/core/v1 + FieldsV1: + description: |- + Each key is either a '.' representing the field itself, and will always map to an empty set, + or a string representing a sub-field or item. The string will follow one of these four formats: + 'f:', where is the name of a field in a struct, or key in a map + 'v:', where is the exact json formatted value of a list item + 'i:', where is position of a item in a list + 'k:', where is a map of a list item's key fields to their unique values + If a key maps to an empty Fields value, the field that key represents is part of the set. + + The exact format is defined in sigs.k8s.io/structured-merge-diff + +protobuf.options.(gogoproto.goproto_stringer)=false + title: FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format. + type: object + x-go-package: k8s.io/apimachinery/pkg/apis/meta/v1 + FlexVolumeSource: + description: |- + FlexVolume represents a generic volume resource that is + provisioned/attached using an exec based plugin. + properties: + driver: + description: driver is the name of the driver to use for this volume. + type: string + x-go-name: Driver + fsType: + description: |- + fsType is the filesystem type to mount. + Must be a filesystem type supported by the host operating system. + Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script. + +optional + type: string + x-go-name: FSType + options: + additionalProperties: + type: string + description: |- + options is Optional: this field holds extra command options if any. + +optional + type: object + x-go-name: Options + readOnly: + description: |- + readOnly is Optional: defaults to false (read/write). ReadOnly here will force + the ReadOnly setting in VolumeMounts. + +optional + type: boolean + x-go-name: ReadOnly + secretRef: + $ref: '#/definitions/LocalObjectReference' + type: object + x-go-package: k8s.io/api/core/v1 + FlockerVolumeSource: + description: |- + One and only one of datasetName and datasetUUID should be set. + Flocker volumes do not support ownership management or SELinux relabeling. + properties: + datasetName: + description: |- + datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker + should be considered as deprecated + +optional + type: string + x-go-name: DatasetName + datasetUUID: + description: |- + datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset + +optional + type: string + x-go-name: DatasetUUID + title: Represents a Flocker volume mounted by the Flocker agent. + type: object + x-go-package: k8s.io/api/core/v1 + GCEPersistentDiskVolumeSource: + description: |- + A GCE PD must exist before mounting to a container. The disk must + also be in the same GCE project and zone as the kubelet. A GCE PD + can only be mounted as read/write once or read-only many times. GCE + PDs support ownership management and SELinux relabeling. + properties: + fsType: + description: |- + fsType is filesystem type of the volume that you want to mount. + Tip: Ensure that the filesystem type is supported by the host operating system. + Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + TODO: how do we prevent errors in the filesystem from compromising the machine + +optional + type: string + x-go-name: FSType + partition: + description: |- + partition is the partition in the volume that you want to mount. + If omitted, the default is to mount by volume name. + Examples: For volume /dev/sda1, you specify the partition as "1". + Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). + More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + +optional + format: int32 + type: integer + x-go-name: Partition + pdName: + description: |- + pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE. + More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + type: string + x-go-name: PDName + readOnly: + description: |- + readOnly here will force the ReadOnly setting in VolumeMounts. + Defaults to false. + More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + +optional + type: boolean + x-go-name: ReadOnly + title: Represents a Persistent Disk resource in Google Compute Engine. + type: object + x-go-package: k8s.io/api/core/v1 + GCSArtifact: + description: GCSArtifact is the location of a GCS artifact + properties: + bucket: + description: Bucket is the name of the bucket + type: string + x-go-name: Bucket + key: + description: Key is the path in the bucket where the artifact resides + type: string + x-go-name: Key + serviceAccountKeySecret: + $ref: '#/definitions/SecretKeySelector' + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + GRPCAction: + properties: + port: + description: Port number of the gRPC service. Number must be in the range 1 to 65535. + format: int32 + type: integer + x-go-name: Port + service: + description: |- + Service is the name of the service to place in the gRPC HealthCheckRequest + (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). + + If this is not specified, the default behavior is defined by gRPC. + +optional + +default="" + type: string + x-go-name: Service + type: object + x-go-package: k8s.io/api/core/v1 + Gauge: + description: Gauge is a Gauge prometheus metric + properties: + operation: + $ref: '#/definitions/GaugeOperation' + realtime: + description: Realtime emits this metric in real time if applicable + type: boolean + x-go-name: Realtime + value: + description: |- + Value is the value to be used in the operation with the metric's current value. If no operation is set, + value is the value of the metric + type: string + x-go-name: Value + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + GaugeOperation: + title: A GaugeOperation is the set of operations that can be used in a gauge metric. + type: string + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + GitArtifact: + description: GitArtifact is the location of an git artifact + properties: + branch: + description: Branch is the branch to fetch when `SingleBranch` is enabled + type: string + x-go-name: Branch + depth: + description: |- + Depth specifies clones/fetches should be shallow and include the given + number of commits from the branch tip + format: uint64 + type: integer + x-go-name: Depth + disableSubmodules: + description: DisableSubmodules disables submodules during git clone + type: boolean + x-go-name: DisableSubmodules + fetch: + description: Fetch specifies a number of refs that should be fetched before checkout + items: + type: string + type: array + x-go-name: Fetch + insecureIgnoreHostKey: + description: InsecureIgnoreHostKey disables SSH strict host key checking during git clone + type: boolean + x-go-name: InsecureIgnoreHostKey + passwordSecret: + $ref: '#/definitions/SecretKeySelector' + repo: + description: Repo is the git repository + type: string + x-go-name: Repo + revision: + description: Revision is the git commit, tag, branch to checkout + type: string + x-go-name: Revision + singleBranch: + description: SingleBranch enables single branch clone, using the `branch` parameter + type: boolean + x-go-name: SingleBranch + sshPrivateKeySecret: + $ref: '#/definitions/SecretKeySelector' + usernameSecret: + $ref: '#/definitions/SecretKeySelector' + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + GitRepoVolumeSource: + description: |- + DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an + EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir + into the Pod's container. + properties: + directory: + description: |- + directory is the target directory name. + Must not contain or start with '..'. If '.' is supplied, the volume directory will be the + git repository. Otherwise, if specified, the volume will contain the git repository in + the subdirectory with the given name. + +optional + type: string + x-go-name: Directory + repository: + description: repository is the URL + type: string + x-go-name: Repository + revision: + description: |- + revision is the commit hash for the specified revision. + +optional + type: string + x-go-name: Revision + title: |- + Represents a volume that is populated with the contents of a git repository. + Git repo volumes do not support ownership management. + Git repo volumes support SELinux relabeling. + type: object + x-go-package: k8s.io/api/core/v1 + GlusterfsVolumeSource: + description: Glusterfs volumes do not support ownership management or SELinux relabeling. + properties: + endpoints: + description: |- + endpoints is the endpoint name that details Glusterfs topology. + More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod + type: string + x-go-name: EndpointsName + path: + description: |- + path is the Glusterfs volume path. + More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod + type: string + x-go-name: Path + readOnly: + description: |- + readOnly here will force the Glusterfs volume to be mounted with read-only permissions. + Defaults to false. + More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod + +optional + type: boolean + x-go-name: ReadOnly + title: Represents a Glusterfs mount that lasts the lifetime of a pod. + type: object + x-go-package: k8s.io/api/core/v1 + HDFSArtifact: + description: HDFSArtifact is the location of an HDFS artifact + properties: + addresses: + description: Addresses is accessible addresses of HDFS name nodes + items: + type: string + type: array + x-go-name: Addresses + force: + description: Force copies a file forcibly even if it exists + type: boolean + x-go-name: Force + hdfsUser: + description: |- + HDFSUser is the user to access HDFS file system. + It is ignored if either ccache or keytab is used. + type: string + x-go-name: HDFSUser + krbCCacheSecret: + $ref: '#/definitions/SecretKeySelector' + krbConfigConfigMap: + $ref: '#/definitions/ConfigMapKeySelector' + krbKeytabSecret: + $ref: '#/definitions/SecretKeySelector' + krbRealm: + description: |- + KrbRealm is the Kerberos realm used with Kerberos keytab + It must be set if keytab is used. + type: string + x-go-name: KrbRealm + krbServicePrincipalName: + description: |- + KrbServicePrincipalName is the principal name of Kerberos service + It must be set if either ccache or keytab is used. + type: string + x-go-name: KrbServicePrincipalName + krbUsername: + description: |- + KrbUsername is the Kerberos username used with Kerberos keytab + It must be set if keytab is used. + type: string + x-go-name: KrbUsername + path: + description: Path is a file path in HDFS + type: string + x-go-name: Path + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + HTTP: + properties: + body: + description: Body is content of the HTTP Request + type: string + x-go-name: Body + bodyFrom: + $ref: '#/definitions/HTTPBodySource' + headers: + $ref: '#/definitions/HTTPHeaders' + insecureSkipVerify: + description: InsecureSkipVerify is a bool when if set to true will skip TLS verification for the HTTP client + type: boolean + x-go-name: InsecureSkipVerify + method: + description: Method is HTTP methods for HTTP Request + type: string + x-go-name: Method + successCondition: + description: SuccessCondition is an expression if evaluated to true is considered successful + type: string + x-go-name: SuccessCondition + timeoutSeconds: + description: TimeoutSeconds is request timeout for HTTP Request. Default is 30 seconds + format: int64 + type: integer + x-go-name: TimeoutSeconds + url: + description: URL of the HTTP Request + type: string + x-go-name: URL + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + HTTPArtifact: + description: HTTPArtifact allows a file served on HTTP to be placed as an input artifact in a container + properties: + auth: + $ref: '#/definitions/HTTPAuth' + headers: + description: Headers are an optional list of headers to send with HTTP requests for artifacts + items: + $ref: '#/definitions/Header' + type: array + x-go-name: Headers + url: + description: URL of the artifact + type: string + x-go-name: URL + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + HTTPAuth: + properties: + basicAuth: + $ref: '#/definitions/BasicAuth' + clientCert: + $ref: '#/definitions/ClientCertAuth' + oauth2: + $ref: '#/definitions/OAuth2Auth' + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + HTTPBodySource: + properties: + bytes: + items: + format: uint8 + type: integer + type: array + x-go-name: Bytes + title: HTTPBodySource contains the source of the HTTP body. + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + HTTPGetAction: + properties: + host: + description: |- + Host name to connect to, defaults to the pod IP. You probably want to set + "Host" in httpHeaders instead. + +optional + type: string + x-go-name: Host + httpHeaders: + description: |- + Custom headers to set in the request. HTTP allows repeated headers. + +optional + items: + $ref: '#/definitions/HTTPHeader' + type: array + x-go-name: HTTPHeaders + path: + description: |- + Path to access on the HTTP server. + +optional + type: string + x-go-name: Path + port: + $ref: '#/definitions/IntOrString' + scheme: + $ref: '#/definitions/URIScheme' + title: HTTPGetAction describes an action based on HTTP Get requests. + type: object + x-go-package: k8s.io/api/core/v1 + HTTPHeader: + properties: + name: + type: string + x-go-name: Name + value: + type: string + x-go-name: Value + valueFrom: + $ref: '#/definitions/HTTPHeaderSource' + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + HTTPHeaderSource: + properties: + secretKeyRef: + $ref: '#/definitions/SecretKeySelector' + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + HTTPHeaders: + items: + $ref: '#/definitions/HTTPHeader' + type: array + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + Header: + description: Header indicate a key-value request header to be used when fetching artifacts over HTTP + properties: + name: + description: Name is the header name + type: string + x-go-name: Name + value: + description: Value is the literal value to use for the header + type: string + x-go-name: Value + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + Histogram: + description: Histogram is a Histogram prometheus metric + properties: + buckets: + description: Buckets is a list of bucket divisors for the histogram + items: + $ref: '#/definitions/Amount' + type: array + x-go-name: Buckets + value: + description: Value is the value of the metric + type: string + x-go-name: Value + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + HostAlias: + description: |- + HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the + pod's hosts file. + properties: + hostnames: + description: Hostnames for the above IP address. + items: + type: string + type: array + x-go-name: Hostnames + ip: + description: IP address of the host file entry. + type: string + x-go-name: IP + type: object + x-go-package: k8s.io/api/core/v1 + HostPathType: + description: +enum + type: string + x-go-package: k8s.io/api/core/v1 + HostPathVolumeSource: + description: Host path volumes do not support ownership management or SELinux relabeling. + properties: + path: + description: |- + path of the directory on the host. + If the path is a symlink, it will follow the link to the real path. + More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + type: string + x-go-name: Path + type: + $ref: '#/definitions/HostPathType' + title: Represents a host path mapped into a pod. + type: object + x-go-package: k8s.io/api/core/v1 + ISCSIVolumeSource: + description: |- + ISCSI volumes can only be mounted as read/write once. + ISCSI volumes support ownership management and SELinux relabeling. + properties: + chapAuthDiscovery: + description: |- + chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication + +optional + type: boolean + x-go-name: DiscoveryCHAPAuth + chapAuthSession: + description: |- + chapAuthSession defines whether support iSCSI Session CHAP authentication + +optional + type: boolean + x-go-name: SessionCHAPAuth + fsType: + description: |- + fsType is the filesystem type of the volume that you want to mount. + Tip: Ensure that the filesystem type is supported by the host operating system. + Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi + TODO: how do we prevent errors in the filesystem from compromising the machine + +optional + type: string + x-go-name: FSType + initiatorName: + description: |- + initiatorName is the custom iSCSI Initiator Name. + If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface + : will be created for the connection. + +optional + type: string + x-go-name: InitiatorName + iqn: + description: iqn is the target iSCSI Qualified Name. + type: string + x-go-name: IQN + iscsiInterface: + description: |- + iscsiInterface is the interface Name that uses an iSCSI transport. + Defaults to 'default' (tcp). + +optional + type: string + x-go-name: ISCSIInterface + lun: + description: lun represents iSCSI Target Lun number. + format: int32 + type: integer + x-go-name: Lun + portals: + description: |- + portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port + is other than default (typically TCP ports 860 and 3260). + +optional + items: + type: string + type: array + x-go-name: Portals + readOnly: + description: |- + readOnly here will force the ReadOnly setting in VolumeMounts. + Defaults to false. + +optional + type: boolean + x-go-name: ReadOnly + secretRef: + $ref: '#/definitions/LocalObjectReference' + targetPortal: + description: |- + targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port + is other than default (typically TCP ports 860 and 3260). + type: string + x-go-name: TargetPortal + title: Represents an ISCSI disk. + type: object + x-go-package: k8s.io/api/core/v1 + Inputs: + description: Inputs are the mechanism for passing parameters, artifacts, volumes from one template to another + properties: + artifacts: + $ref: '#/definitions/Artifacts' + parameters: + description: |- + Parameters are a list of parameters passed as inputs + +patchStrategy=merge + +patchMergeKey=name + items: + $ref: '#/definitions/Parameter' + type: array + x-go-name: Parameters + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + IntOrString: + description: |- + +protobuf=true + +protobuf.options.(gogoproto.goproto_stringer)=false + +k8s:openapi-gen=true + properties: + IntVal: + format: int32 + type: integer + StrVal: + type: string + Type: + $ref: '#/definitions/Type' + title: |- + IntOrString is a type that can hold an int32 or a string. When used in + JSON or YAML marshalling and unmarshalling, it produces or consumes the + inner type. This allows you to have, for example, a JSON field that can + accept a name or number. + TODO: Rename to Int32OrString + type: object + x-go-package: k8s.io/apimachinery/pkg/util/intstr + Item: + description: |- + +protobuf.options.(gogoproto.goproto_stringer)=false + +kubebuilder:validation:Type=object + title: |- + Item expands a single workflow step into multiple parallel steps + The value of Item can be a map, string, bool, or number + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + KeyToPath: + properties: + key: + description: key is the key to project. + type: string + x-go-name: Key + mode: + description: |- + mode is Optional: mode bits used to set permissions on this file. + Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. + YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. + If not specified, the volume defaultMode will be used. + This might be in conflict with other options that affect the file + mode, like fsGroup, and the result can be other mode bits set. + +optional + format: int32 + type: integer + x-go-name: Mode + path: + description: |- + path is the relative path of the file to map the key to. + May not be an absolute path. + May not contain the path element '..'. + May not start with the string '..'. + type: string + x-go-name: Path + title: Maps a string key to a path within a volume. + type: object + x-go-package: k8s.io/api/core/v1 + LabelSelector: + description: |- + A label selector is a label query over a set of resources. The result of matchLabels and + matchExpressions are ANDed. An empty label selector matches all objects. A null + label selector matches no objects. + +structType=atomic + properties: + matchExpressions: + description: |- + matchExpressions is a list of label selector requirements. The requirements are ANDed. + +optional + items: + $ref: '#/definitions/LabelSelectorRequirement' + type: array + x-go-name: MatchExpressions + matchLabels: + additionalProperties: + type: string + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. + +optional + type: object + x-go-name: MatchLabels + type: object + x-go-package: k8s.io/apimachinery/pkg/apis/meta/v1 + LabelSelectorOperator: + title: A label selector operator is the set of operators that can be used in a selector requirement. + type: string + x-go-package: k8s.io/apimachinery/pkg/apis/meta/v1 + LabelSelectorRequirement: + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: |- + key is the label key that the selector applies to. + +patchMergeKey=key + +patchStrategy=merge + type: string + x-go-name: Key + operator: + $ref: '#/definitions/LabelSelectorOperator' + values: + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. + +optional + items: + type: string + type: array + x-go-name: Values + type: object + x-go-package: k8s.io/apimachinery/pkg/apis/meta/v1 + Lifecycle: + description: |- + Lifecycle describes actions that the management system should take in response to container lifecycle + events. For the PostStart and PreStop lifecycle handlers, management of the container blocks + until the action is complete, unless the container process fails, in which case the handler is aborted. + properties: + postStart: + $ref: '#/definitions/LifecycleHandler' + preStop: + $ref: '#/definitions/LifecycleHandler' + type: object + x-go-package: k8s.io/api/core/v1 + LifecycleHandler: + description: |- + LifecycleHandler defines a specific action that should be taken in a lifecycle + hook. One and only one of the fields, except TCPSocket must be specified. + properties: + exec: + $ref: '#/definitions/ExecAction' + httpGet: + $ref: '#/definitions/HTTPGetAction' + tcpSocket: + $ref: '#/definitions/TCPSocketAction' + type: object + x-go-package: k8s.io/api/core/v1 + LifecycleHook: + properties: + arguments: + $ref: '#/definitions/Arguments' + expression: + description: |- + Expression is a condition expression for when a node will be retried. If it evaluates to false, the node will not + be retried and the retry strategy will be ignored + type: string + x-go-name: Expression + template: + description: Template is the name of the template to execute by the hook + type: string + x-go-name: Template + templateRef: + $ref: '#/definitions/TemplateRef' + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + LifecycleHooks: + additionalProperties: + $ref: '#/definitions/LifecycleHook' + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + LocalObjectReference: + description: |- + LocalObjectReference contains enough information to let you locate the + referenced object inside the same namespace. + +structType=atomic + properties: + name: + description: |- + Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid? + +optional + type: string + x-go-name: Name + type: object + x-go-package: k8s.io/api/core/v1 + ManagedFieldsEntry: + description: |- + ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource + that the fieldset applies to. + properties: + apiVersion: + description: |- + APIVersion defines the version of this resource that this field set + applies to. The format is "group/version" just like the top-level + APIVersion field. It is necessary to track the version of a field + set because it cannot be automatically converted. + type: string + x-go-name: APIVersion + fieldsType: + description: |- + FieldsType is the discriminator for the different fields format and version. + There is currently only one possible value: "FieldsV1" + type: string + x-go-name: FieldsType + fieldsV1: + $ref: '#/definitions/FieldsV1' + manager: + description: Manager is an identifier of the workflow managing these fields. + type: string + x-go-name: Manager + operation: + $ref: '#/definitions/ManagedFieldsOperationType' + subresource: + description: |- + Subresource is the name of the subresource used to update that object, or + empty string if the object was updated through the main resource. The + value of this field is used to distinguish between managers, even if they + share the same name. For example, a status update will be distinct from a + regular update using the same manager name. + Note that the APIVersion field is not related to the Subresource field and + it always corresponds to the version of the main resource. + type: string + x-go-name: Subresource + time: + description: |- + Time is the timestamp of when the ManagedFields entry was added. The + timestamp will also be updated if a field is added, the manager + changes any of the owned fields value or removes a field. The + timestamp does not update when a field is removed from the entry + because another manager took it over. + +optional + type: string + x-go-name: Time + type: object + x-go-package: k8s.io/apimachinery/pkg/apis/meta/v1 + ManagedFieldsOperationType: + title: ManagedFieldsOperationType is the type of operation which lead to a ManagedFieldsEntry being created. + type: string + x-go-package: k8s.io/apimachinery/pkg/apis/meta/v1 + ManifestFrom: + properties: + artifact: + $ref: '#/definitions/Artifact' + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + Memoize: + description: Memoization enables caching for the Outputs of the template + properties: + cache: + $ref: '#/definitions/Cache' + key: + description: Key is the key to use as the caching key + type: string + x-go-name: Key + maxAge: + description: |- + MaxAge is the maximum age (e.g. "180s", "24h") of an entry that is still considered valid. If an entry is older + than the MaxAge, it will be ignored. + type: string + x-go-name: MaxAge + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + Metadata: + description: Pod metdata + properties: + annotations: + additionalProperties: + type: string + type: object + x-go-name: Annotations + labels: + additionalProperties: + type: string + type: object + x-go-name: Labels + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + MetricLabel: + description: MetricLabel is a single label for a prometheus metric + properties: + key: + type: string + x-go-name: Key + value: + type: string + x-go-name: Value + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + Metrics: + description: Metrics are a list of metrics emitted from a Workflow/Template + properties: + prometheus: + description: Prometheus is a list of prometheus metrics to be emitted + items: + $ref: '#/definitions/Prometheus' + type: array + x-go-name: Prometheus + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + MountPropagationMode: + description: +enum + title: MountPropagationMode describes mount propagation. + type: string + x-go-package: k8s.io/api/core/v1 + Mutex: + description: Mutex holds Mutex configuration + properties: + name: + description: name of the mutex + type: string + x-go-name: Name + namespace: + default: '[namespace of workflow]' + type: string + x-go-name: Namespace + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + NFSVolumeSource: + description: NFS volumes do not support ownership management or SELinux relabeling. + properties: + path: + description: |- + path that is exported by the NFS server. + More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs + type: string + x-go-name: Path + readOnly: + description: |- + readOnly here will force the NFS export to be mounted with read-only permissions. + Defaults to false. + More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs + +optional + type: boolean + x-go-name: ReadOnly + server: + description: |- + server is the hostname or IP address of the NFS server. + More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs + type: string + x-go-name: Server + title: Represents an NFS mount that lasts the lifetime of a pod. + type: object + x-go-package: k8s.io/api/core/v1 + NodeAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: |- + The scheduler will prefer to schedule pods to nodes that satisfy + the affinity expressions specified by this field, but it may choose + a node that violates one or more of the expressions. The node that is + most preferred is the one with the greatest sum of weights, i.e. + for each node that meets all of the scheduling requirements (resource + request, requiredDuringScheduling affinity expressions, etc.), + compute a sum by iterating through the elements of this field and adding + "weight" to the sum if the node matches the corresponding matchExpressions; the + node(s) with the highest sum are the most preferred. + +optional + items: + $ref: '#/definitions/PreferredSchedulingTerm' + type: array + x-go-name: PreferredDuringSchedulingIgnoredDuringExecution + requiredDuringSchedulingIgnoredDuringExecution: + $ref: '#/definitions/NodeSelector' + title: Node affinity is a group of node affinity scheduling rules. + type: object + x-go-package: k8s.io/api/core/v1 + NodePhase: + title: NodePhase is a label for the condition of a node at the current time. + type: string + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + NodeResult: + properties: + message: + type: string + x-go-name: Message + outputs: + $ref: '#/definitions/Outputs' + phase: + $ref: '#/definitions/NodePhase' + progress: + $ref: '#/definitions/Progress' + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + NodeSelector: + description: |- + A node selector represents the union of the results of one or more label queries + over a set of nodes; that is, it represents the OR of the selectors represented + by the node selector terms. + +structType=atomic + properties: + nodeSelectorTerms: + description: Required. A list of node selector terms. The terms are ORed. + items: + $ref: '#/definitions/NodeSelectorTerm' + type: array + x-go-name: NodeSelectorTerms + type: object + x-go-package: k8s.io/api/core/v1 + NodeSelectorOperator: + description: |- + A node selector operator is the set of operators that can be used in + a node selector requirement. + +enum + type: string + x-go-package: k8s.io/api/core/v1 + NodeSelectorRequirement: + description: |- + A node selector requirement is a selector that contains values, a key, and an operator + that relates the key and values. + properties: + key: + description: The label key that the selector applies to. + type: string + x-go-name: Key + operator: + $ref: '#/definitions/NodeSelectorOperator' + values: + description: |- + An array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. If the operator is Gt or Lt, the values + array must have a single element, which will be interpreted as an integer. + This array is replaced during a strategic merge patch. + +optional + items: + type: string + type: array + x-go-name: Values + type: object + x-go-package: k8s.io/api/core/v1 + NodeSelectorTerm: + description: |- + A null or empty node selector term matches no objects. The requirements of + them are ANDed. + The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. + +structType=atomic + properties: + matchExpressions: + description: |- + A list of node selector requirements by node's labels. + +optional + items: + $ref: '#/definitions/NodeSelectorRequirement' + type: array + x-go-name: MatchExpressions + matchFields: + description: |- + A list of node selector requirements by node's fields. + +optional + items: + $ref: '#/definitions/NodeSelectorRequirement' + type: array + x-go-name: MatchFields + type: object + x-go-package: k8s.io/api/core/v1 + NoneStrategy: + description: |- + NoneStrategy indicates to skip tar process and upload the files or directory tree as independent + files. Note that if the artifact is a directory, the artifact driver must support the ability to + save/load the directory appropriately. + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + OAuth2Auth: + description: OAuth2Auth holds all information for client authentication via OAuth2 tokens + properties: + clientIDSecret: + $ref: '#/definitions/SecretKeySelector' + clientSecretSecret: + $ref: '#/definitions/SecretKeySelector' + endpointParams: + items: + $ref: '#/definitions/OAuth2EndpointParam' + type: array + x-go-name: EndpointParams + scopes: + items: + type: string + type: array + x-go-name: Scopes + tokenURLSecret: + $ref: '#/definitions/SecretKeySelector' + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + OAuth2EndpointParam: + description: EndpointParam is for requesting optional fields that should be sent in the oauth request + properties: + key: + description: Name is the header name + type: string + x-go-name: Key + value: + description: Value is the literal value to use for the header + type: string + x-go-name: Value + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + OSSArtifact: + description: OSSArtifact is the location of an Alibaba Cloud OSS artifact + properties: + accessKeySecret: + $ref: '#/definitions/SecretKeySelector' + bucket: + description: Bucket is the name of the bucket + type: string + x-go-name: Bucket + createBucketIfNotPresent: + description: CreateBucketIfNotPresent tells the driver to attempt to create the OSS bucket for output artifacts, if it doesn't exist + type: boolean + x-go-name: CreateBucketIfNotPresent + endpoint: + description: Endpoint is the hostname of the bucket endpoint + type: string + x-go-name: Endpoint + key: + description: Key is the path in the bucket where the artifact resides + type: string + x-go-name: Key + lifecycleRule: + $ref: '#/definitions/OSSLifecycleRule' + secretKeySecret: + $ref: '#/definitions/SecretKeySelector' + securityToken: + description: 'SecurityToken is the user''s temporary security token. For more details, check out: https://www.alibabacloud.com/help/doc-detail/100624.htm' + type: string + x-go-name: SecurityToken + useSDKCreds: + description: UseSDKCreds tells the driver to figure out credentials based on sdk defaults. + type: boolean + x-go-name: UseSDKCreds + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + OSSLifecycleRule: + description: OSSLifecycleRule specifies how to manage bucket's lifecycle + properties: + markDeletionAfterDays: + description: MarkDeletionAfterDays is the number of days before we delete objects in the bucket + format: int32 + type: integer + x-go-name: MarkDeletionAfterDays + markInfrequentAccessAfterDays: + description: MarkInfrequentAccessAfterDays is the number of days before we convert the objects in the bucket to Infrequent Access (IA) storage type + format: int32 + type: integer + x-go-name: MarkInfrequentAccessAfterDays + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + ObjectFieldSelector: + description: +structType=atomic + properties: + apiVersion: + description: |- + Version of the schema the FieldPath is written in terms of, defaults to "v1". + +optional + type: string + x-go-name: APIVersion + fieldPath: + description: Path of the field to select in the specified API version. + type: string + x-go-name: FieldPath + title: ObjectFieldSelector selects an APIVersioned field of an object. + type: object + x-go-package: k8s.io/api/core/v1 + ObjectMeta: + properties: + name: + type: string + x-go-name: Name + namespace: + type: string + x-go-name: Namespace + uid: + type: string + x-go-name: Uid + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/plugins/executor + Outputs: + description: Outputs hold parameters, artifacts, and results from a step + properties: + artifacts: + $ref: '#/definitions/Artifacts' + exitCode: + description: ExitCode holds the exit code of a script template + type: string + x-go-name: ExitCode + parameters: + description: |- + Parameters holds the list of output parameters produced by a step + +patchStrategy=merge + +patchMergeKey=name + items: + $ref: '#/definitions/Parameter' + type: array + x-go-name: Parameters + result: + description: Result holds the result (stdout) of a script template + type: string + x-go-name: Result + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + OwnerReference: + description: |- + OwnerReference contains enough information to let you identify an owning + object. An owning object must be in the same namespace as the dependent, or + be cluster-scoped, so there is no namespace field. + +structType=atomic + properties: + apiVersion: + description: API version of the referent. + type: string + x-go-name: APIVersion + blockOwnerDeletion: + description: |- + If true, AND if the owner has the "foregroundDeletion" finalizer, then + the owner cannot be deleted from the key-value store until this + reference is removed. + See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion + for how the garbage collector interacts with this field and enforces the foreground deletion. + Defaults to false. + To set this field, a user needs "delete" permission of the owner, + otherwise 422 (Unprocessable Entity) will be returned. + +optional + type: boolean + x-go-name: BlockOwnerDeletion + controller: + description: |- + If true, this reference points to the managing controller. + +optional + type: boolean + x-go-name: Controller + kind: + description: |- + Kind of the referent. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + x-go-name: Kind + name: + description: |- + Name of the referent. + More info: http://kubernetes.io/docs/user-guide/identifiers#names + type: string + x-go-name: Name + uid: + $ref: '#/definitions/UID' + type: object + x-go-package: k8s.io/apimachinery/pkg/apis/meta/v1 + ParallelSteps: + description: +kubebuilder:validation:Type=array + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + Parameter: + description: Parameter indicate a passed string parameter to a service template with an optional default value + properties: + default: + $ref: '#/definitions/AnyString' + description: + $ref: '#/definitions/AnyString' + enum: + description: Enum holds a list of string values to choose from, for the actual value of the parameter + items: + $ref: '#/definitions/AnyString' + type: array + x-go-name: Enum + globalName: + description: |- + GlobalName exports an output parameter to the global scope, making it available as + '{{workflow.outputs.parameters.XXXX}} and in workflow.status.outputs.parameters + type: string + x-go-name: GlobalName + name: + description: Name is the parameter name + type: string + x-go-name: Name + value: + $ref: '#/definitions/AnyString' + valueFrom: + $ref: '#/definitions/ValueFrom' + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + PersistentVolumeAccessMode: + description: +enum + type: string + x-go-package: k8s.io/api/core/v1 + PersistentVolumeClaimSpec: + description: |- + PersistentVolumeClaimSpec describes the common attributes of storage devices + and allows a Source for provider-specific attributes + properties: + accessModes: + description: |- + accessModes contains the desired access modes the volume should have. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 + +optional + items: + $ref: '#/definitions/PersistentVolumeAccessMode' + type: array + x-go-name: AccessModes + dataSource: + $ref: '#/definitions/TypedLocalObjectReference' + dataSourceRef: + $ref: '#/definitions/TypedLocalObjectReference' + resources: + $ref: '#/definitions/ResourceRequirements' + selector: + $ref: '#/definitions/LabelSelector' + storageClassName: + description: |- + storageClassName is the name of the StorageClass required by the claim. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1 + +optional + type: string + x-go-name: StorageClassName + volumeMode: + $ref: '#/definitions/PersistentVolumeMode' + volumeName: + description: |- + volumeName is the binding reference to the PersistentVolume backing this claim. + +optional + type: string + x-go-name: VolumeName + type: object + x-go-package: k8s.io/api/core/v1 + PersistentVolumeClaimTemplate: + description: |- + PersistentVolumeClaimTemplate is used to produce + PersistentVolumeClaim objects as part of an EphemeralVolumeSource. + properties: + annotations: + additionalProperties: + type: string + description: |- + Annotations is an unstructured key value map stored with a resource that may be + set by external tools to store and retrieve arbitrary metadata. They are not + queryable and should be preserved when modifying objects. + More info: http://kubernetes.io/docs/user-guide/annotations + +optional + type: object + x-go-name: Annotations + clusterName: + description: |- + Deprecated: ClusterName is a legacy field that was always cleared by + the system and never used; it will be removed completely in 1.25. + + The name in the go struct is changed to help clients detect + accidental use. + + +optional + type: string + x-go-name: ZZZ_DeprecatedClusterName + creationTimestamp: + description: |- + CreationTimestamp is a timestamp representing the server time when this object was + created. It is not guaranteed to be set in happens-before order across separate operations. + Clients may not set this value. It is represented in RFC3339 form and is in UTC. + + Populated by the system. + Read-only. + Null for lists. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + +optional + type: string + x-go-name: CreationTimestamp + deletionGracePeriodSeconds: + description: |- + Number of seconds allowed for this object to gracefully terminate before + it will be removed from the system. Only set when deletionTimestamp is also set. + May only be shortened. + Read-only. + +optional + format: int64 + type: integer + x-go-name: DeletionGracePeriodSeconds + deletionTimestamp: + description: |- + DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This + field is set by the server when a graceful deletion is requested by the user, and is not + directly settable by a client. The resource is expected to be deleted (no longer visible + from resource lists, and not reachable by name) after the time in this field, once the + finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. + Once the deletionTimestamp is set, this value may not be unset or be set further into the + future, although it may be shortened or the resource may be deleted prior to this time. + For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react + by sending a graceful termination signal to the containers in the pod. After that 30 seconds, + the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, + remove the pod from the API. In the presence of network partitions, this object may still + exist after this timestamp, until an administrator or automated process can determine the + resource is fully terminated. + If not set, graceful deletion of the object has not been requested. + + Populated by the system when a graceful deletion is requested. + Read-only. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + +optional + type: string + x-go-name: DeletionTimestamp + finalizers: + description: |- + Must be empty before the object is deleted from the registry. Each entry + is an identifier for the responsible component that will remove the entry + from the list. If the deletionTimestamp of the object is non-nil, entries + in this list can only be removed. + Finalizers may be processed and removed in any order. Order is NOT enforced + because it introduces significant risk of stuck finalizers. + finalizers is a shared field, any actor with permission can reorder it. + If the finalizer list is processed in order, then this can lead to a situation + in which the component responsible for the first finalizer in the list is + waiting for a signal (field value, external system, or other) produced by a + component responsible for a finalizer later in the list, resulting in a deadlock. + Without enforced ordering finalizers are free to order amongst themselves and + are not vulnerable to ordering changes in the list. + +optional + +patchStrategy=merge + items: + type: string + type: array + x-go-name: Finalizers + generateName: + description: |- + GenerateName is an optional prefix, used by the server, to generate a unique + name ONLY IF the Name field has not been provided. + If this field is used, the name returned to the client will be different + than the name passed. This value will also be combined with a unique suffix. + The provided value has the same validation rules as the Name field, + and may be truncated by the length of the suffix required to make the value + unique on the server. + + If this field is specified and the generated name exists, the server will return a 409. + + Applied only if Name is not specified. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency + +optional + type: string + x-go-name: GenerateName + generation: + description: |- + A sequence number representing a specific generation of the desired state. + Populated by the system. Read-only. + +optional + format: int64 + type: integer + x-go-name: Generation + labels: + additionalProperties: + type: string + description: |- + Map of string keys and values that can be used to organize and categorize + (scope and select) objects. May match selectors of replication controllers + and services. + More info: http://kubernetes.io/docs/user-guide/labels + +optional + type: object + x-go-name: Labels + managedFields: + description: |- + ManagedFields maps workflow-id and version to the set of fields + that are managed by that workflow. This is mostly for internal + housekeeping, and users typically shouldn't need to set or + understand this field. A workflow can be the user's name, a + controller's name, or the name of a specific apply path like + "ci-cd". The set of fields is always in the version that the + workflow used when modifying the object. + + +optional + items: + $ref: '#/definitions/ManagedFieldsEntry' + type: array + x-go-name: ManagedFields + name: + description: |- + Name must be unique within a namespace. Is required when creating resources, although + some resources may allow a client to request the generation of an appropriate name + automatically. Name is primarily intended for creation idempotence and configuration + definition. + Cannot be updated. + More info: http://kubernetes.io/docs/user-guide/identifiers#names + +optional + type: string + x-go-name: Name + namespace: + description: |- + Namespace defines the space within which each name must be unique. An empty namespace is + equivalent to the "default" namespace, but "default" is the canonical representation. + Not all objects are required to be scoped to a namespace - the value of this field for + those objects will be empty. + + Must be a DNS_LABEL. + Cannot be updated. + More info: http://kubernetes.io/docs/user-guide/namespaces + +optional + type: string + x-go-name: Namespace + ownerReferences: + description: |- + List of objects depended by this object. If ALL objects in the list have + been deleted, this object will be garbage collected. If this object is managed by a controller, + then an entry in this list will point to this controller, with the controller field set to true. + There cannot be more than one managing controller. + +optional + +patchMergeKey=uid + +patchStrategy=merge + items: + $ref: '#/definitions/OwnerReference' + type: array + x-go-name: OwnerReferences + resourceVersion: + description: |- + An opaque value that represents the internal version of this object that can + be used by clients to determine when objects have changed. May be used for optimistic + concurrency, change detection, and the watch operation on a resource or set of resources. + Clients must treat these values as opaque and passed unmodified back to the server. + They may only be valid for a particular resource or set of resources. + + Populated by the system. + Read-only. + Value must be treated as opaque by clients and . + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency + +optional + type: string + x-go-name: ResourceVersion + selfLink: + description: |- + Deprecated: selfLink is a legacy read-only field that is no longer populated by the system. + +optional + type: string + x-go-name: SelfLink + spec: + $ref: '#/definitions/PersistentVolumeClaimSpec' + uid: + $ref: '#/definitions/UID' + type: object + x-go-package: k8s.io/api/core/v1 + PersistentVolumeClaimVolumeSource: + description: |- + This volume finds the bound PV and mounts that volume for the pod. A + PersistentVolumeClaimVolumeSource is, essentially, a wrapper around another + type of volume that is owned by someone else (the system). + properties: + claimName: + description: |- + claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims + type: string + x-go-name: ClaimName + readOnly: + description: |- + readOnly Will force the ReadOnly setting in VolumeMounts. + Default false. + +optional + type: boolean + x-go-name: ReadOnly + title: PersistentVolumeClaimVolumeSource references the user's PVC in the same namespace. + type: object + x-go-package: k8s.io/api/core/v1 + PersistentVolumeMode: + description: +enum + title: PersistentVolumeMode describes how a volume is intended to be consumed, either Block or Filesystem. + type: string + x-go-package: k8s.io/api/core/v1 + PhotonPersistentDiskVolumeSource: + properties: + fsType: + description: |- + fsType is the filesystem type to mount. + Must be a filesystem type supported by the host operating system. + Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + type: string + x-go-name: FSType + pdID: + description: pdID is the ID that identifies Photon Controller persistent disk + type: string + x-go-name: PdID + title: Represents a Photon Controller persistent disk resource. + type: object + x-go-package: k8s.io/api/core/v1 + Plugin: + description: Plugin is an Object with exactly one key + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + PodAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: |- + The scheduler will prefer to schedule pods to nodes that satisfy + the affinity expressions specified by this field, but it may choose + a node that violates one or more of the expressions. The node that is + most preferred is the one with the greatest sum of weights, i.e. + for each node that meets all of the scheduling requirements (resource + request, requiredDuringScheduling affinity expressions, etc.), + compute a sum by iterating through the elements of this field and adding + "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the + node(s) with the highest sum are the most preferred. + +optional + items: + $ref: '#/definitions/WeightedPodAffinityTerm' + type: array + x-go-name: PreferredDuringSchedulingIgnoredDuringExecution + requiredDuringSchedulingIgnoredDuringExecution: + description: |- + If the affinity requirements specified by this field are not met at + scheduling time, the pod will not be scheduled onto the node. + If the affinity requirements specified by this field cease to be met + at some point during pod execution (e.g. due to a pod label update), the + system may or may not try to eventually evict the pod from its node. + When there are multiple elements, the lists of nodes corresponding to each + podAffinityTerm are intersected, i.e. all terms must be satisfied. + +optional + items: + $ref: '#/definitions/PodAffinityTerm' + type: array + x-go-name: RequiredDuringSchedulingIgnoredDuringExecution + title: Pod affinity is a group of inter pod affinity scheduling rules. + type: object + x-go-package: k8s.io/api/core/v1 + PodAffinityTerm: + description: |- + Defines a set of pods (namely those matching the labelSelector + relative to the given namespace(s)) that this pod should be + co-located (affinity) or not co-located (anti-affinity) with, + where co-located is defined as running on a node whose value of + the label with key matches that of any node on which + a pod of the set of pods is running + properties: + labelSelector: + $ref: '#/definitions/LabelSelector' + namespaceSelector: + $ref: '#/definitions/LabelSelector' + namespaces: + description: |- + namespaces specifies a static list of namespace names that the term applies to. + The term is applied to the union of the namespaces listed in this field + and the ones selected by namespaceSelector. + null or empty namespaces list and null namespaceSelector means "this pod's namespace". + +optional + items: + type: string + type: array + x-go-name: Namespaces + topologyKey: + description: |- + This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching + the labelSelector in the specified namespaces, where co-located is defined as running on a node + whose value of the label with key topologyKey matches that of any node on which any of the + selected pods is running. + Empty topologyKey is not allowed. + type: string + x-go-name: TopologyKey + type: object + x-go-package: k8s.io/api/core/v1 + PodAntiAffinity: + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: |- + The scheduler will prefer to schedule pods to nodes that satisfy + the anti-affinity expressions specified by this field, but it may choose + a node that violates one or more of the expressions. The node that is + most preferred is the one with the greatest sum of weights, i.e. + for each node that meets all of the scheduling requirements (resource + request, requiredDuringScheduling anti-affinity expressions, etc.), + compute a sum by iterating through the elements of this field and adding + "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the + node(s) with the highest sum are the most preferred. + +optional + items: + $ref: '#/definitions/WeightedPodAffinityTerm' + type: array + x-go-name: PreferredDuringSchedulingIgnoredDuringExecution + requiredDuringSchedulingIgnoredDuringExecution: + description: |- + If the anti-affinity requirements specified by this field are not met at + scheduling time, the pod will not be scheduled onto the node. + If the anti-affinity requirements specified by this field cease to be met + at some point during pod execution (e.g. due to a pod label update), the + system may or may not try to eventually evict the pod from its node. + When there are multiple elements, the lists of nodes corresponding to each + podAffinityTerm are intersected, i.e. all terms must be satisfied. + +optional + items: + $ref: '#/definitions/PodAffinityTerm' + type: array + x-go-name: RequiredDuringSchedulingIgnoredDuringExecution + title: Pod anti affinity is a group of inter pod anti affinity scheduling rules. + type: object + x-go-package: k8s.io/api/core/v1 + PodFSGroupChangePolicy: + description: |- + PodFSGroupChangePolicy holds policies that will be used for applying fsGroup to a volume + when volume is mounted. + +enum + type: string + x-go-package: k8s.io/api/core/v1 + PodSecurityContext: + description: |- + Some fields are also present in container.securityContext. Field values of + container.securityContext take precedence over field values of PodSecurityContext. + properties: + fsGroup: + description: |- + A special supplemental group that applies to all containers in a pod. + Some volume types allow the Kubelet to change the ownership of that volume + to be owned by the pod: + + 1. The owning GID will be the FSGroup + 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) + 3. The permission bits are OR'd with rw-rw---- + + If unset, the Kubelet will not modify the ownership and permissions of any volume. + Note that this field cannot be set when spec.os.name is windows. + +optional + format: int64 + type: integer + x-go-name: FSGroup + fsGroupChangePolicy: + $ref: '#/definitions/PodFSGroupChangePolicy' + runAsGroup: + description: |- + The GID to run the entrypoint of the container process. + Uses runtime default if unset. + May also be set in SecurityContext. If set in both SecurityContext and + PodSecurityContext, the value specified in SecurityContext takes precedence + for that container. + Note that this field cannot be set when spec.os.name is windows. + +optional + format: int64 + type: integer + x-go-name: RunAsGroup + runAsNonRoot: + description: |- + Indicates that the container must run as a non-root user. + If true, the Kubelet will validate the image at runtime to ensure that it + does not run as UID 0 (root) and fail to start the container if it does. + If unset or false, no such validation will be performed. + May also be set in SecurityContext. If set in both SecurityContext and + PodSecurityContext, the value specified in SecurityContext takes precedence. + +optional + type: boolean + x-go-name: RunAsNonRoot + runAsUser: + description: |- + The UID to run the entrypoint of the container process. + Defaults to user specified in image metadata if unspecified. + May also be set in SecurityContext. If set in both SecurityContext and + PodSecurityContext, the value specified in SecurityContext takes precedence + for that container. + Note that this field cannot be set when spec.os.name is windows. + +optional + format: int64 + type: integer + x-go-name: RunAsUser + seLinuxOptions: + $ref: '#/definitions/SELinuxOptions' + seccompProfile: + $ref: '#/definitions/SeccompProfile' + supplementalGroups: + description: |- + A list of groups applied to the first process run in each container, in addition + to the container's primary GID. If unspecified, no groups will be added to + any container. + Note that this field cannot be set when spec.os.name is windows. + +optional + items: + format: int64 + type: integer + type: array + x-go-name: SupplementalGroups + sysctls: + description: |- + Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported + sysctls (by the container runtime) might fail to launch. + Note that this field cannot be set when spec.os.name is windows. + +optional + items: + $ref: '#/definitions/Sysctl' + type: array + x-go-name: Sysctls + windowsOptions: + $ref: '#/definitions/WindowsSecurityContextOptions' + title: PodSecurityContext holds pod-level security attributes and common container settings. + type: object + x-go-package: k8s.io/api/core/v1 + PortworxVolumeSource: + properties: + fsType: + description: |- + fSType represents the filesystem type to mount + Must be a filesystem type supported by the host operating system. + Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified. + type: string + x-go-name: FSType + readOnly: + description: |- + readOnly defaults to false (read/write). ReadOnly here will force + the ReadOnly setting in VolumeMounts. + +optional + type: boolean + x-go-name: ReadOnly + volumeID: + description: volumeID uniquely identifies a Portworx volume + type: string + x-go-name: VolumeID + title: PortworxVolumeSource represents a Portworx volume resource. + type: object + x-go-package: k8s.io/api/core/v1 + PreferredSchedulingTerm: + description: |- + An empty preferred scheduling term matches all objects with implicit weight 0 + (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). + properties: + preference: + $ref: '#/definitions/NodeSelectorTerm' + weight: + description: Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. + format: int32 + type: integer + x-go-name: Weight + type: object + x-go-package: k8s.io/api/core/v1 + Probe: + description: |- + Probe describes a health check to be performed against a container to determine whether it is + alive or ready to receive traffic. + properties: + exec: + $ref: '#/definitions/ExecAction' + failureThreshold: + description: |- + Minimum consecutive failures for the probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. + +optional + format: int32 + type: integer + x-go-name: FailureThreshold + grpc: + $ref: '#/definitions/GRPCAction' + httpGet: + $ref: '#/definitions/HTTPGetAction' + initialDelaySeconds: + description: |- + Number of seconds after the container has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + +optional + format: int32 + type: integer + x-go-name: InitialDelaySeconds + periodSeconds: + description: |- + How often (in seconds) to perform the probe. + Default to 10 seconds. Minimum value is 1. + +optional + format: int32 + type: integer + x-go-name: PeriodSeconds + successThreshold: + description: |- + Minimum consecutive successes for the probe to be considered successful after having failed. + Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. + +optional + format: int32 + type: integer + x-go-name: SuccessThreshold + tcpSocket: + $ref: '#/definitions/TCPSocketAction' + terminationGracePeriodSeconds: + description: |- + Optional duration in seconds the pod needs to terminate gracefully upon probe failure. + The grace period is the duration in seconds after the processes running in the pod are sent + a termination signal and the time when the processes are forcibly halted with a kill signal. + Set this value longer than the expected cleanup time for your process. + If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this + value overrides the value provided by the pod spec. + Value must be non-negative integer. The value zero indicates stop immediately via + the kill signal (no opportunity to shut down). + This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. + Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. + +optional + format: int64 + type: integer + x-go-name: TerminationGracePeriodSeconds + timeoutSeconds: + description: |- + Number of seconds after which the probe times out. + Defaults to 1 second. Minimum value is 1. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + +optional + format: int32 + type: integer + x-go-name: TimeoutSeconds + type: object + x-go-package: k8s.io/api/core/v1 + ProcMountType: + description: +enum + type: string + x-go-package: k8s.io/api/core/v1 + Progress: + title: Progress in N/M format. N is number of task complete. M is number of tasks. + type: string + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + ProjectedVolumeSource: + description: Represents a projected volume source + properties: + defaultMode: + description: |- + defaultMode are the mode bits used to set permissions on created files by default. + Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. + YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. + Directories within the path are not affected by this setting. + This might be in conflict with other options that affect the file + mode, like fsGroup, and the result can be other mode bits set. + +optional + format: int32 + type: integer + x-go-name: DefaultMode + sources: + description: |- + sources is the list of volume projections + +optional + items: + $ref: '#/definitions/VolumeProjection' + type: array + x-go-name: Sources + type: object + x-go-package: k8s.io/api/core/v1 + Prometheus: + description: Prometheus is a prometheus metric to be emitted + properties: + counter: + $ref: '#/definitions/Counter' + gauge: + $ref: '#/definitions/Gauge' + help: + description: Help is a string that describes the metric + type: string + x-go-name: Help + histogram: + $ref: '#/definitions/Histogram' + labels: + description: Labels is a list of metric labels + items: + $ref: '#/definitions/MetricLabel' + type: array + x-go-name: Labels + name: + description: Name is the name of the metric + type: string + x-go-name: Name + when: + description: When is a conditional statement that decides when to emit the metric + type: string + x-go-name: When + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + Protocol: + description: +enum + title: Protocol defines network protocols supported for things like container ports. + type: string + x-go-package: k8s.io/api/core/v1 + PullPolicy: + description: |- + PullPolicy describes a policy for if/when to pull a container image + +enum + type: string + x-go-package: k8s.io/api/core/v1 + Quantity: + description: |- + The serialization format is: + + ::= + (Note that may be empty, from the "" case in .) + ::= 0 | 1 | ... | 9 + ::= | + ::= | . | . | . + ::= "+" | "-" + ::= | + ::= | | + ::= Ki | Mi | Gi | Ti | Pi | Ei + (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html) + ::= m | "" | k | M | G | T | P | E + (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.) + ::= "e" | "E" + + No matter which of the three exponent forms is used, no quantity may represent + a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal + places. Numbers larger or more precise will be capped or rounded up. + (E.g.: 0.1m will rounded up to 1m.) + This may be extended in the future if we require larger or smaller quantities. + + When a Quantity is parsed from a string, it will remember the type of suffix + it had, and will use the same type again when it is serialized. + + Before serializing, Quantity will be put in "canonical form". + This means that Exponent/suffix will be adjusted up or down (with a + corresponding increase or decrease in Mantissa) such that: + a. No precision is lost + b. No fractional digits will be emitted + c. The exponent (or suffix) is as large as possible. + The sign will be omitted unless the number is negative. + + Examples: + 1.5 will be serialized as "1500m" + 1.5Gi will be serialized as "1536Mi" + + Note that the quantity will NEVER be internally represented by a + floating point number. That is the whole point of this exercise. + + Non-canonical values will still parse as long as they are well formed, + but will be re-emitted in their canonical form. (So always use canonical + form, or don't diff.) + + This format is intended to make it difficult to use these numbers without + writing some sort of special handling code in the hopes that that will + cause implementors to also use a fixed point implementation. + + +protobuf=true + +protobuf.embed=string + +protobuf.options.marshal=false + +protobuf.options.(gogoproto.goproto_stringer)=false + +k8s:deepcopy-gen=true + +k8s:openapi-gen=true + title: |- + Quantity is a fixed-point representation of a number. + It provides convenient marshaling/unmarshaling in JSON and YAML, + in addition to String() and AsInt64() accessors. + type: object + x-go-package: k8s.io/apimachinery/pkg/api/resource + QuobyteVolumeSource: + description: Quobyte volumes do not support ownership management or SELinux relabeling. + properties: + group: + description: |- + group to map volume access to + Default is no group + +optional + type: string + x-go-name: Group + readOnly: + description: |- + readOnly here will force the Quobyte volume to be mounted with read-only permissions. + Defaults to false. + +optional + type: boolean + x-go-name: ReadOnly + registry: + description: |- + registry represents a single or multiple Quobyte Registry services + specified as a string as host:port pair (multiple entries are separated with commas) + which acts as the central registry for volumes + type: string + x-go-name: Registry + tenant: + description: |- + tenant owning the given Quobyte volume in the Backend + Used with dynamically provisioned Quobyte volumes, value is set by the plugin + +optional + type: string + x-go-name: Tenant + user: + description: |- + user to map volume access to + Defaults to serivceaccount user + +optional + type: string + x-go-name: User + volume: + description: volume is a string that references an already created Quobyte volume by name. + type: string + x-go-name: Volume + title: Represents a Quobyte mount that lasts the lifetime of a pod. + type: object + x-go-package: k8s.io/api/core/v1 + RBDVolumeSource: + description: RBD volumes support ownership management and SELinux relabeling. + properties: + fsType: + description: |- + fsType is the filesystem type of the volume that you want to mount. + Tip: Ensure that the filesystem type is supported by the host operating system. + Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd + TODO: how do we prevent errors in the filesystem from compromising the machine + +optional + type: string + x-go-name: FSType + image: + description: |- + image is the rados image name. + More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + type: string + x-go-name: RBDImage + keyring: + description: |- + keyring is the path to key ring for RBDUser. + Default is /etc/ceph/keyring. + More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + +optional + type: string + x-go-name: Keyring + monitors: + description: |- + monitors is a collection of Ceph monitors. + More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + items: + type: string + type: array + x-go-name: CephMonitors + pool: + description: |- + pool is the rados pool name. + Default is rbd. + More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + +optional + type: string + x-go-name: RBDPool + readOnly: + description: |- + readOnly here will force the ReadOnly setting in VolumeMounts. + Defaults to false. + More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + +optional + type: boolean + x-go-name: ReadOnly + secretRef: + $ref: '#/definitions/LocalObjectReference' + user: + description: |- + user is the rados user name. + Default is admin. + More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + +optional + type: string + x-go-name: RadosUser + title: Represents a Rados Block Device mount that lasts the lifetime of a pod. + type: object + x-go-package: k8s.io/api/core/v1 + RawArtifact: + description: RawArtifact allows raw string content to be placed as an artifact in a container + properties: + data: + description: Data is the string contents of the artifact + type: string + x-go-name: Data + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + ResourceFieldSelector: + description: |- + ResourceFieldSelector represents container resources (cpu, memory) and their output format + +structType=atomic + properties: + containerName: + description: |- + Container name: required for volumes, optional for env vars + +optional + type: string + x-go-name: ContainerName + divisor: + $ref: '#/definitions/Quantity' + resource: + description: 'Required: resource to select' + type: string + x-go-name: Resource + type: object + x-go-package: k8s.io/api/core/v1 + ResourceList: + additionalProperties: + $ref: '#/definitions/Quantity' + title: ResourceList is a set of (resource name, quantity) pairs. + type: object + x-go-package: k8s.io/api/core/v1 + ResourceRequirements: + properties: + limits: + $ref: '#/definitions/ResourceList' + requests: + $ref: '#/definitions/ResourceList' + title: ResourceRequirements describes the compute resource requirements. + type: object + x-go-package: k8s.io/api/core/v1 + ResourceTemplate: + description: ResourceTemplate is a template subtype to manipulate kubernetes resources + properties: + action: + description: |- + Action is the action to perform to the resource. + Must be one of: get, create, apply, delete, replace, patch + type: string + x-go-name: Action + failureCondition: + description: |- + FailureCondition is a label selector expression which describes the conditions + of the k8s resource in which the step was considered failed + type: string + x-go-name: FailureCondition + flags: + description: |- + Flags is a set of additional options passed to kubectl before submitting a resource + I.e. to disable resource validation: + flags: [ + "--validate=false" # disable resource validation + ] + items: + type: string + type: array + x-go-name: Flags + manifest: + description: Manifest contains the kubernetes manifest + type: string + x-go-name: Manifest + manifestFrom: + $ref: '#/definitions/ManifestFrom' + mergeStrategy: + description: |- + MergeStrategy is the strategy used to merge a patch. It defaults to "strategic" + Must be one of: strategic, merge, json + type: string + x-go-name: MergeStrategy + setOwnerReference: + description: SetOwnerReference sets the reference to the workflow on the OwnerReference of generated resource. + type: boolean + x-go-name: SetOwnerReference + successCondition: + description: |- + SuccessCondition is a label selector expression which describes the conditions + of the k8s resource in which it is acceptable to proceed to the following step + type: string + x-go-name: SuccessCondition + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + RetryAffinity: + properties: + nodeAntiAffinity: + $ref: '#/definitions/RetryNodeAntiAffinity' + title: RetryAffinity prevents running steps on the same host. + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + RetryNodeAntiAffinity: + description: In order to prevent running steps on the same host, it uses "kubernetes.io/hostname". + title: RetryNodeAntiAffinity is a placeholder for future expansion, only empty nodeAntiAffinity is allowed. + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + RetryPolicy: + type: string + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + RetryStrategy: + description: RetryStrategy provides controls on how to retry a workflow step + properties: + affinity: + $ref: '#/definitions/RetryAffinity' + backoff: + $ref: '#/definitions/Backoff' + expression: + description: |- + Expression is a condition expression for when a node will be retried. If it evaluates to false, the node will not + be retried and the retry strategy will be ignored + type: string + x-go-name: Expression + limit: + $ref: '#/definitions/IntOrString' + retryPolicy: + $ref: '#/definitions/RetryPolicy' + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + S3Artifact: + description: S3Artifact is the location of an S3 artifact + properties: + accessKeySecret: + $ref: '#/definitions/SecretKeySelector' + bucket: + description: Bucket is the name of the bucket + type: string + x-go-name: Bucket + caSecret: + $ref: '#/definitions/SecretKeySelector' + createBucketIfNotPresent: + $ref: '#/definitions/CreateS3BucketOptions' + encryptionOptions: + $ref: '#/definitions/S3EncryptionOptions' + endpoint: + description: Endpoint is the hostname of the bucket endpoint + type: string + x-go-name: Endpoint + insecure: + description: Insecure will connect to the service with TLS + type: boolean + x-go-name: Insecure + key: + description: Key is the key in the bucket where the artifact resides + type: string + x-go-name: Key + region: + description: Region contains the optional bucket region + type: string + x-go-name: Region + roleARN: + description: RoleARN is the Amazon Resource Name (ARN) of the role to assume. + type: string + x-go-name: RoleARN + secretKeySecret: + $ref: '#/definitions/SecretKeySelector' + useSDKCreds: + description: UseSDKCreds tells the driver to figure out credentials based on sdk defaults. + type: boolean + x-go-name: UseSDKCreds + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + S3EncryptionOptions: + description: S3EncryptionOptions used to determine encryption options during s3 operations + properties: + enableEncryption: + description: EnableEncryption tells the driver to encrypt objects if set to true. If kmsKeyId and serverSideCustomerKeySecret are not set, SSE-S3 will be used + type: boolean + x-go-name: EnableEncryption + kmsEncryptionContext: + description: KmsEncryptionContext is a json blob that contains an encryption context. See https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context for more information + type: string + x-go-name: KmsEncryptionContext + kmsKeyId: + description: KMSKeyId tells the driver to encrypt the object using the specified KMS Key. + type: string + x-go-name: KmsKeyId + serverSideCustomerKeySecret: + $ref: '#/definitions/SecretKeySelector' + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + SELinuxOptions: + description: SELinuxOptions are the labels to be applied to the container + properties: + level: + description: |- + Level is SELinux level label that applies to the container. + +optional + type: string + x-go-name: Level + role: + description: |- + Role is a SELinux role label that applies to the container. + +optional + type: string + x-go-name: Role + type: + description: |- + Type is a SELinux type label that applies to the container. + +optional + type: string + x-go-name: Type + user: + description: |- + User is a SELinux user label that applies to the container. + +optional + type: string + x-go-name: User + type: object + x-go-package: k8s.io/api/core/v1 + ScaleIOVolumeSource: + description: ScaleIOVolumeSource represents a persistent ScaleIO volume + properties: + fsType: + description: |- + fsType is the filesystem type to mount. + Must be a filesystem type supported by the host operating system. + Ex. "ext4", "xfs", "ntfs". + Default is "xfs". + +optional + type: string + x-go-name: FSType + gateway: + description: gateway is the host address of the ScaleIO API Gateway. + type: string + x-go-name: Gateway + protectionDomain: + description: |- + protectionDomain is the name of the ScaleIO Protection Domain for the configured storage. + +optional + type: string + x-go-name: ProtectionDomain + readOnly: + description: |- + readOnly Defaults to false (read/write). ReadOnly here will force + the ReadOnly setting in VolumeMounts. + +optional + type: boolean + x-go-name: ReadOnly + secretRef: + $ref: '#/definitions/LocalObjectReference' + sslEnabled: + description: |- + sslEnabled Flag enable/disable SSL communication with Gateway, default false + +optional + type: boolean + x-go-name: SSLEnabled + storageMode: + description: |- + storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. + Default is ThinProvisioned. + +optional + type: string + x-go-name: StorageMode + storagePool: + description: |- + storagePool is the ScaleIO Storage Pool associated with the protection domain. + +optional + type: string + x-go-name: StoragePool + system: + description: system is the name of the storage system as configured in ScaleIO. + type: string + x-go-name: System + volumeName: + description: |- + volumeName is the name of a volume already created in the ScaleIO system + that is associated with this volume source. + type: string + x-go-name: VolumeName + type: object + x-go-package: k8s.io/api/core/v1 + ScriptTemplate: + description: ScriptTemplate is a template subtype to enable scripting through code steps + properties: + args: + description: |- + Arguments to the entrypoint. + The container image's CMD is used if this is not provided. + Variable references $(VAR_NAME) are expanded using the container's environment. If a variable + cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced + to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will + produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless + of whether the variable exists or not. Cannot be updated. + More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell + +optional + items: + type: string + type: array + x-go-name: Args + command: + description: |- + Entrypoint array. Not executed within a shell. + The container image's ENTRYPOINT is used if this is not provided. + Variable references $(VAR_NAME) are expanded using the container's environment. If a variable + cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced + to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will + produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless + of whether the variable exists or not. Cannot be updated. + More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell + +optional + items: + type: string + type: array + x-go-name: Command + env: + description: |- + List of environment variables to set in the container. + Cannot be updated. + +optional + +patchMergeKey=name + +patchStrategy=merge + items: + $ref: '#/definitions/EnvVar' + type: array + x-go-name: Env + envFrom: + description: |- + List of sources to populate environment variables in the container. + The keys defined within a source must be a C_IDENTIFIER. All invalid keys + will be reported as an event when the container is starting. When a key exists in multiple + sources, the value associated with the last source will take precedence. + Values defined by an Env with a duplicate key will take precedence. + Cannot be updated. + +optional + items: + $ref: '#/definitions/EnvFromSource' + type: array + x-go-name: EnvFrom + image: + description: |- + Container image name. + More info: https://kubernetes.io/docs/concepts/containers/images + This field is optional to allow higher level config management to default or override + container images in workload controllers like Deployments and StatefulSets. + +optional + type: string + x-go-name: Image + imagePullPolicy: + $ref: '#/definitions/PullPolicy' + lifecycle: + $ref: '#/definitions/Lifecycle' + livenessProbe: + $ref: '#/definitions/Probe' + name: + description: |- + Name of the container specified as a DNS_LABEL. + Each container in a pod must have a unique name (DNS_LABEL). + Cannot be updated. + type: string + x-go-name: Name + ports: + description: |- + List of ports to expose from the container. Exposing a port here gives + the system additional information about the network connections a + container uses, but is primarily informational. Not specifying a port here + DOES NOT prevent that port from being exposed. Any port which is + listening on the default "0.0.0.0" address inside a container will be + accessible from the network. + Cannot be updated. + +optional + +patchMergeKey=containerPort + +patchStrategy=merge + +listType=map + +listMapKey=containerPort + +listMapKey=protocol + items: + $ref: '#/definitions/ContainerPort' + type: array + x-go-name: Ports + readinessProbe: + $ref: '#/definitions/Probe' + resources: + $ref: '#/definitions/ResourceRequirements' + securityContext: + $ref: '#/definitions/SecurityContext' + source: + description: Source contains the source code of the script to execute + type: string + x-go-name: Source + startupProbe: + $ref: '#/definitions/Probe' + stdin: + description: |- + Whether this container should allocate a buffer for stdin in the container runtime. If this + is not set, reads from stdin in the container will always result in EOF. + Default is false. + +optional + type: boolean + x-go-name: Stdin + stdinOnce: + description: |- + Whether the container runtime should close the stdin channel after it has been opened by + a single attach. When stdin is true the stdin stream will remain open across multiple attach + sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the + first client attaches to stdin, and then remains open and accepts data until the client disconnects, + at which time stdin is closed and remains closed until the container is restarted. If this + flag is false, a container processes that reads from stdin will never receive an EOF. + Default is false + +optional + type: boolean + x-go-name: StdinOnce + terminationMessagePath: + description: |- + Optional: Path at which the file to which the container's termination message + will be written is mounted into the container's filesystem. + Message written is intended to be brief final status, such as an assertion failure message. + Will be truncated by the node if greater than 4096 bytes. The total message length across + all containers will be limited to 12kb. + Defaults to /dev/termination-log. + Cannot be updated. + +optional + type: string + x-go-name: TerminationMessagePath + terminationMessagePolicy: + $ref: '#/definitions/TerminationMessagePolicy' + tty: + description: |- + Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. + Default is false. + +optional + type: boolean + x-go-name: TTY + volumeDevices: + description: |- + volumeDevices is the list of block devices to be used by the container. + +patchMergeKey=devicePath + +patchStrategy=merge + +optional + items: + $ref: '#/definitions/VolumeDevice' + type: array + x-go-name: VolumeDevices + volumeMounts: + description: |- + Pod volumes to mount into the container's filesystem. + Cannot be updated. + +optional + +patchMergeKey=mountPath + +patchStrategy=merge + items: + $ref: '#/definitions/VolumeMount' + type: array + x-go-name: VolumeMounts + workingDir: + description: |- + Container's working directory. + If not specified, the container runtime's default will be used, which + might be configured in the container image. + Cannot be updated. + +optional + type: string + x-go-name: WorkingDir + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + SeccompProfile: + description: |- + Only one profile source may be set. + +union + properties: + localhostProfile: + description: |- + localhostProfile indicates a profile defined in a file on the node should be used. + The profile must be preconfigured on the node to work. + Must be a descending path, relative to the kubelet's configured seccomp profile location. + Must only be set if type is "Localhost". + +optional + type: string + x-go-name: LocalhostProfile + type: + $ref: '#/definitions/SeccompProfileType' + title: SeccompProfile defines a pod/container's seccomp profile settings. + type: object + x-go-package: k8s.io/api/core/v1 + SeccompProfileType: + description: +enum + title: SeccompProfileType defines the supported seccomp profile types. + type: string + x-go-package: k8s.io/api/core/v1 + SecretEnvSource: + description: |- + The contents of the target Secret's Data field will represent the + key-value pairs as environment variables. + properties: + name: + description: |- + Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid? + +optional + type: string + x-go-name: Name + optional: + description: |- + Specify whether the Secret must be defined + +optional + type: boolean + x-go-name: Optional + title: |- + SecretEnvSource selects a Secret to populate the environment + variables with. + type: object + x-go-package: k8s.io/api/core/v1 + SecretKeySelector: + description: +structType=atomic + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + x-go-name: Key + name: + description: |- + Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid? + +optional + type: string + x-go-name: Name + optional: + description: |- + Specify whether the Secret or its key must be defined + +optional + type: boolean + x-go-name: Optional + title: SecretKeySelector selects a key of a Secret. + type: object + x-go-package: k8s.io/api/core/v1 + SecretProjection: + description: |- + The contents of the target Secret's Data field will be presented in a + projected volume as files using the keys in the Data field as the file names. + Note that this is identical to a secret volume source without the default + mode. + properties: + items: + description: |- + items if unspecified, each key-value pair in the Data field of the referenced + Secret will be projected into the volume as a file whose name is the + key and content is the value. If specified, the listed keys will be + projected into the specified paths, and unlisted keys will not be + present. If a key is specified which is not present in the Secret, + the volume setup will error unless it is marked optional. Paths must be + relative and may not contain the '..' path or start with '..'. + +optional + items: + $ref: '#/definitions/KeyToPath' + type: array + x-go-name: Items + name: + description: |- + Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid? + +optional + type: string + x-go-name: Name + optional: + description: |- + optional field specify whether the Secret or its key must be defined + +optional + type: boolean + x-go-name: Optional + title: Adapts a secret into a projected volume. + type: object + x-go-package: k8s.io/api/core/v1 + SecretVolumeSource: + description: |- + The contents of the target Secret's Data field will be presented in a volume + as files using the keys in the Data field as the file names. + Secret volumes support ownership management and SELinux relabeling. + properties: + defaultMode: + description: |- + defaultMode is Optional: mode bits used to set permissions on created files by default. + Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. + YAML accepts both octal and decimal values, JSON requires decimal values + for mode bits. Defaults to 0644. + Directories within the path are not affected by this setting. + This might be in conflict with other options that affect the file + mode, like fsGroup, and the result can be other mode bits set. + +optional + format: int32 + type: integer + x-go-name: DefaultMode + items: + description: |- + items If unspecified, each key-value pair in the Data field of the referenced + Secret will be projected into the volume as a file whose name is the + key and content is the value. If specified, the listed keys will be + projected into the specified paths, and unlisted keys will not be + present. If a key is specified which is not present in the Secret, + the volume setup will error unless it is marked optional. Paths must be + relative and may not contain the '..' path or start with '..'. + +optional + items: + $ref: '#/definitions/KeyToPath' + type: array + x-go-name: Items + optional: + description: |- + optional field specify whether the Secret or its keys must be defined + +optional + type: boolean + x-go-name: Optional + secretName: + description: |- + secretName is the name of the secret in the pod's namespace to use. + More info: https://kubernetes.io/docs/concepts/storage/volumes#secret + +optional + type: string + x-go-name: SecretName + title: Adapts a Secret into a volume. + type: object + x-go-package: k8s.io/api/core/v1 + SecurityContext: + description: |- + Some fields are present in both SecurityContext and PodSecurityContext. When both + are set, the values in SecurityContext take precedence. + properties: + allowPrivilegeEscalation: + description: |- + AllowPrivilegeEscalation controls whether a process can gain more + privileges than its parent process. This bool directly controls if + the no_new_privs flag will be set on the container process. + AllowPrivilegeEscalation is true always when the container is: + 1) run as Privileged + 2) has CAP_SYS_ADMIN + Note that this field cannot be set when spec.os.name is windows. + +optional + type: boolean + x-go-name: AllowPrivilegeEscalation + capabilities: + $ref: '#/definitions/Capabilities' + privileged: + description: |- + Run container in privileged mode. + Processes in privileged containers are essentially equivalent to root on the host. + Defaults to false. + Note that this field cannot be set when spec.os.name is windows. + +optional + type: boolean + x-go-name: Privileged + procMount: + $ref: '#/definitions/ProcMountType' + readOnlyRootFilesystem: + description: |- + Whether this container has a read-only root filesystem. + Default is false. + Note that this field cannot be set when spec.os.name is windows. + +optional + type: boolean + x-go-name: ReadOnlyRootFilesystem + runAsGroup: + description: |- + The GID to run the entrypoint of the container process. + Uses runtime default if unset. + May also be set in PodSecurityContext. If set in both SecurityContext and + PodSecurityContext, the value specified in SecurityContext takes precedence. + Note that this field cannot be set when spec.os.name is windows. + +optional + format: int64 + type: integer + x-go-name: RunAsGroup + runAsNonRoot: + description: |- + Indicates that the container must run as a non-root user. + If true, the Kubelet will validate the image at runtime to ensure that it + does not run as UID 0 (root) and fail to start the container if it does. + If unset or false, no such validation will be performed. + May also be set in PodSecurityContext. If set in both SecurityContext and + PodSecurityContext, the value specified in SecurityContext takes precedence. + +optional + type: boolean + x-go-name: RunAsNonRoot + runAsUser: + description: |- + The UID to run the entrypoint of the container process. + Defaults to user specified in image metadata if unspecified. + May also be set in PodSecurityContext. If set in both SecurityContext and + PodSecurityContext, the value specified in SecurityContext takes precedence. + Note that this field cannot be set when spec.os.name is windows. + +optional + format: int64 + type: integer + x-go-name: RunAsUser + seLinuxOptions: + $ref: '#/definitions/SELinuxOptions' + seccompProfile: + $ref: '#/definitions/SeccompProfile' + windowsOptions: + $ref: '#/definitions/WindowsSecurityContextOptions' + title: SecurityContext holds security configuration that will be applied to a container. + type: object + x-go-package: k8s.io/api/core/v1 + SemaphoreRef: + description: SemaphoreRef is a reference of Semaphore + properties: + configMapKeyRef: + $ref: '#/definitions/ConfigMapKeySelector' + namespace: + default: '[namespace of workflow]' + type: string + x-go-name: Namespace + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + Sequence: + description: Sequence expands a workflow step into numeric range + properties: + count: + $ref: '#/definitions/IntOrString' + end: + $ref: '#/definitions/IntOrString' + format: + description: Format is a printf format string to format the value in the sequence + type: string + x-go-name: Format + start: + $ref: '#/definitions/IntOrString' + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + ServiceAccountTokenProjection: + description: |- + ServiceAccountTokenProjection represents a projected service account token + volume. This projection can be used to insert a service account token into + the pods runtime filesystem for use against APIs (Kubernetes API Server or + otherwise). + properties: + audience: + description: |- + audience is the intended audience of the token. A recipient of a token + must identify itself with an identifier specified in the audience of the + token, and otherwise should reject the token. The audience defaults to the + identifier of the apiserver. + +optional + type: string + x-go-name: Audience + expirationSeconds: + description: |- + expirationSeconds is the requested duration of validity of the service + account token. As the token approaches expiration, the kubelet volume + plugin will proactively rotate the service account token. The kubelet will + start trying to rotate the token if the token is older than 80 percent of + its time to live or if the token is older than 24 hours.Defaults to 1 hour + and must be at least 10 minutes. + +optional + format: int64 + type: integer + x-go-name: ExpirationSeconds + path: + description: |- + path is the path relative to the mount point of the file to project the + token into. + type: string + x-go-name: Path + type: object + x-go-package: k8s.io/api/core/v1 + StorageMedium: + title: StorageMedium defines ways that storage can be allocated to a volume. + type: string + x-go-package: k8s.io/api/core/v1 + StorageOSVolumeSource: + properties: + fsType: + description: |- + fsType is the filesystem type to mount. + Must be a filesystem type supported by the host operating system. + Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + +optional + type: string + x-go-name: FSType + readOnly: + description: |- + readOnly defaults to false (read/write). ReadOnly here will force + the ReadOnly setting in VolumeMounts. + +optional + type: boolean + x-go-name: ReadOnly + secretRef: + $ref: '#/definitions/LocalObjectReference' + volumeName: + description: |- + volumeName is the human-readable name of the StorageOS volume. Volume + names are only unique within a namespace. + type: string + x-go-name: VolumeName + volumeNamespace: + description: |- + volumeNamespace specifies the scope of the volume within StorageOS. If no + namespace is specified then the Pod's namespace will be used. This allows the + Kubernetes name scoping to be mirrored within StorageOS for tighter integration. + Set VolumeName to any name to override the default behaviour. + Set to "default" if you are not using namespaces within StorageOS. + Namespaces that do not pre-exist within StorageOS will be created. + +optional + type: string + x-go-name: VolumeNamespace + title: Represents a StorageOS persistent volume resource. + type: object + x-go-package: k8s.io/api/core/v1 + SuppliedValueFrom: + title: SuppliedValueFrom is a placeholder for a value to be filled in directly, either through the CLI, API, etc. + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + SuspendTemplate: + description: SuspendTemplate is a template subtype to suspend a workflow at a predetermined point in time + properties: + duration: + description: |- + Duration is the seconds to wait before automatically resuming a template. Must be a string. Default unit is seconds. + Could also be a Duration, e.g.: "2m", "6h" + type: string + x-go-name: Duration + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + Synchronization: + description: Synchronization holds synchronization lock configuration + properties: + mutex: + $ref: '#/definitions/Mutex' + semaphore: + $ref: '#/definitions/SemaphoreRef' + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + Sysctl: + description: Sysctl defines a kernel parameter to be set + properties: + name: + description: Name of a property to set + type: string + x-go-name: Name + value: + description: Value of a property to set + type: string + x-go-name: Value + type: object + x-go-package: k8s.io/api/core/v1 + TCPSocketAction: + description: TCPSocketAction describes an action based on opening a socket + properties: + host: + description: |- + Optional: Host name to connect to, defaults to the pod IP. + +optional + type: string + x-go-name: Host + port: + $ref: '#/definitions/IntOrString' + type: object + x-go-package: k8s.io/api/core/v1 + TaintEffect: + description: +enum + type: string + x-go-package: k8s.io/api/core/v1 + TarStrategy: + description: TarStrategy will tar and gzip the file or directory when saving + properties: + compressionLevel: + description: |- + CompressionLevel specifies the gzip compression level to use for the artifact. + Defaults to gzip.DefaultCompression. + format: int32 + type: integer + x-go-name: CompressionLevel + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + Template: + description: Template is a reusable and composable unit of execution in a workflow + properties: + activeDeadlineSeconds: + $ref: '#/definitions/IntOrString' + affinity: + $ref: '#/definitions/Affinity' + archiveLocation: + $ref: '#/definitions/ArtifactLocation' + automountServiceAccountToken: + description: |- + AutomountServiceAccountToken indicates whether a service account token should be automatically mounted in pods. + ServiceAccountName of ExecutorConfig must be specified if this value is false. + type: boolean + x-go-name: AutomountServiceAccountToken + container: + $ref: '#/definitions/Container' + containerSet: + $ref: '#/definitions/ContainerSetTemplate' + daemon: + description: Daemon will allow a workflow to proceed to the next step so long as the container reaches readiness + type: boolean + x-go-name: Daemon + dag: + $ref: '#/definitions/DAGTemplate' + data: + $ref: '#/definitions/Data' + executor: + $ref: '#/definitions/ExecutorConfig' + failFast: + description: |- + FailFast, if specified, will fail this template if any of its child pods has failed. This is useful for when this + template is expanded with `withItems`, etc. + type: boolean + x-go-name: FailFast + hostAliases: + description: |- + HostAliases is an optional list of hosts and IPs that will be injected into the pod spec + +patchStrategy=merge + +patchMergeKey=ip + items: + $ref: '#/definitions/HostAlias' + type: array + x-go-name: HostAliases + http: + $ref: '#/definitions/HTTP' + initContainers: + description: |- + InitContainers is a list of containers which run before the main container. + +patchStrategy=merge + +patchMergeKey=name + items: + $ref: '#/definitions/UserContainer' + type: array + x-go-name: InitContainers + inputs: + $ref: '#/definitions/Inputs' + memoize: + $ref: '#/definitions/Memoize' + metadata: + $ref: '#/definitions/Metadata' + metrics: + $ref: '#/definitions/Metrics' + name: + description: Name is the name of the template + type: string + x-go-name: Name + nodeSelector: + additionalProperties: + type: string + description: |- + NodeSelector is a selector to schedule this step of the workflow to be + run on the selected node(s). Overrides the selector set at the workflow level. + type: object + x-go-name: NodeSelector + outputs: + $ref: '#/definitions/Outputs' + parallelism: + description: |- + Parallelism limits the max total parallel pods that can execute at the same time within the + boundaries of this template invocation. If additional steps/dag templates are invoked, the + pods created by those templates will not be counted towards this total. + format: int64 + type: integer + x-go-name: Parallelism + plugin: + $ref: '#/definitions/Plugin' + podSpecPatch: + description: |- + PodSpecPatch holds strategic merge patch to apply against the pod spec. Allows parameterization of + container fields which are not strings (e.g. resource limits). + type: string + x-go-name: PodSpecPatch + priority: + description: Priority to apply to workflow pods. + format: int32 + type: integer + x-go-name: Priority + priorityClassName: + description: PriorityClassName to apply to workflow pods. + type: string + x-go-name: PriorityClassName + resource: + $ref: '#/definitions/ResourceTemplate' + retryStrategy: + $ref: '#/definitions/RetryStrategy' + schedulerName: + description: |- + If specified, the pod will be dispatched by specified scheduler. + Or it will be dispatched by workflow scope scheduler if specified. + If neither specified, the pod will be dispatched by default scheduler. + +optional + type: string + x-go-name: SchedulerName + script: + $ref: '#/definitions/ScriptTemplate' + securityContext: + $ref: '#/definitions/PodSecurityContext' + serviceAccountName: + description: ServiceAccountName to apply to workflow pods + type: string + x-go-name: ServiceAccountName + sidecars: + description: |- + Sidecars is a list of containers which run alongside the main container + Sidecars are automatically killed when the main container completes + +patchStrategy=merge + +patchMergeKey=name + items: + $ref: '#/definitions/UserContainer' + type: array + x-go-name: Sidecars + steps: + description: Steps define a series of sequential/parallel workflow steps + items: + $ref: '#/definitions/ParallelSteps' + type: array + x-go-name: Steps + suspend: + $ref: '#/definitions/SuspendTemplate' + synchronization: + $ref: '#/definitions/Synchronization' + timeout: + description: |- + Timeout allows to set the total node execution timeout duration counting from the node's start time. + This duration also includes time in which the node spends in Pending state. This duration may not be applied to Step or DAG templates. + type: string + x-go-name: Timeout + tolerations: + description: |- + Tolerations to apply to workflow pods. + +patchStrategy=merge + +patchMergeKey=key + items: + $ref: '#/definitions/Toleration' + type: array + x-go-name: Tolerations + volumes: + description: |- + Volumes is a list of volumes that can be mounted by containers in a template. + +patchStrategy=merge + +patchMergeKey=name + items: + $ref: '#/definitions/Volume' + type: array + x-go-name: Volumes + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + TemplateRef: + properties: + clusterScope: + description: ClusterScope indicates the referred template is cluster scoped (i.e. a ClusterWorkflowTemplate). + type: boolean + x-go-name: ClusterScope + name: + description: Name is the resource name of the template. + type: string + x-go-name: Name + template: + description: Template is the name of referred template in the resource. + type: string + x-go-name: Template + title: TemplateRef is a reference of template resource. + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + TerminationMessagePolicy: + description: +enum + title: TerminationMessagePolicy describes how termination messages are retrieved from a container. + type: string + x-go-package: k8s.io/api/core/v1 + Toleration: + description: |- + The pod this Toleration is attached to tolerates any taint that matches + the triple using the matching operator . + properties: + effect: + $ref: '#/definitions/TaintEffect' + key: + description: |- + Key is the taint key that the toleration applies to. Empty means match all taint keys. + If the key is empty, operator must be Exists; this combination means to match all values and all keys. + +optional + type: string + x-go-name: Key + operator: + $ref: '#/definitions/TolerationOperator' + tolerationSeconds: + description: |- + TolerationSeconds represents the period of time the toleration (which must be + of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, + it is not set, which means tolerate the taint forever (do not evict). Zero and + negative values will be treated as 0 (evict immediately) by the system. + +optional + format: int64 + type: integer + x-go-name: TolerationSeconds + value: + description: |- + Value is the taint value the toleration matches to. + If the operator is Exists, the value should be empty, otherwise just a regular string. + +optional + type: string + x-go-name: Value + type: object + x-go-package: k8s.io/api/core/v1 + TolerationOperator: + description: +enum + title: A toleration operator is the set of operators that can be used in a toleration. + type: string + x-go-package: k8s.io/api/core/v1 + Transformation: + items: + $ref: '#/definitions/TransformationStep' + type: array + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + TransformationStep: + properties: + expression: + description: Expression defines an expr expression to apply + type: string + x-go-name: Expression + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + Type: + format: int64 + title: Type represents the stored type of IntOrString. + type: integer + x-go-package: k8s.io/apimachinery/pkg/util/intstr + TypedLocalObjectReference: + description: |- + TypedLocalObjectReference contains enough information to let you locate the + typed referenced object inside the same namespace. + +structType=atomic + properties: + apiGroup: + description: |- + APIGroup is the group for the resource being referenced. + If APIGroup is not specified, the specified Kind must be in the core API group. + For any other third-party types, APIGroup is required. + +optional + type: string + x-go-name: APIGroup + kind: + description: Kind is the type of resource being referenced + type: string + x-go-name: Kind + name: + description: Name is the name of resource being referenced + type: string + x-go-name: Name + type: object + x-go-package: k8s.io/api/core/v1 + UID: + description: |- + UID is a type that holds unique ID values, including UUIDs. Because we + don't ONLY use UUIDs, this is an alias to string. Being a type captures + intent and helps make sure that UIDs and names do not get conflated. + type: string + x-go-package: k8s.io/apimachinery/pkg/types + URIScheme: + description: |- + URIScheme identifies the scheme used for connection to a host for Get actions + +enum + type: string + x-go-package: k8s.io/api/core/v1 + UserContainer: + properties: + args: + description: |- + Arguments to the entrypoint. + The container image's CMD is used if this is not provided. + Variable references $(VAR_NAME) are expanded using the container's environment. If a variable + cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced + to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will + produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless + of whether the variable exists or not. Cannot be updated. + More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell + +optional + items: + type: string + type: array + x-go-name: Args + command: + description: |- + Entrypoint array. Not executed within a shell. + The container image's ENTRYPOINT is used if this is not provided. + Variable references $(VAR_NAME) are expanded using the container's environment. If a variable + cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced + to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will + produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless + of whether the variable exists or not. Cannot be updated. + More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell + +optional + items: + type: string + type: array + x-go-name: Command + env: + description: |- + List of environment variables to set in the container. + Cannot be updated. + +optional + +patchMergeKey=name + +patchStrategy=merge + items: + $ref: '#/definitions/EnvVar' + type: array + x-go-name: Env + envFrom: + description: |- + List of sources to populate environment variables in the container. + The keys defined within a source must be a C_IDENTIFIER. All invalid keys + will be reported as an event when the container is starting. When a key exists in multiple + sources, the value associated with the last source will take precedence. + Values defined by an Env with a duplicate key will take precedence. + Cannot be updated. + +optional + items: + $ref: '#/definitions/EnvFromSource' + type: array + x-go-name: EnvFrom + image: + description: |- + Container image name. + More info: https://kubernetes.io/docs/concepts/containers/images + This field is optional to allow higher level config management to default or override + container images in workload controllers like Deployments and StatefulSets. + +optional + type: string + x-go-name: Image + imagePullPolicy: + $ref: '#/definitions/PullPolicy' + lifecycle: + $ref: '#/definitions/Lifecycle' + livenessProbe: + $ref: '#/definitions/Probe' + mirrorVolumeMounts: + description: |- + MirrorVolumeMounts will mount the same volumes specified in the main container + to the container (including artifacts), at the same mountPaths. This enables + dind daemon to partially see the same filesystem as the main container in + order to use features such as docker volume binding + type: boolean + x-go-name: MirrorVolumeMounts + name: + description: |- + Name of the container specified as a DNS_LABEL. + Each container in a pod must have a unique name (DNS_LABEL). + Cannot be updated. + type: string + x-go-name: Name + ports: + description: |- + List of ports to expose from the container. Exposing a port here gives + the system additional information about the network connections a + container uses, but is primarily informational. Not specifying a port here + DOES NOT prevent that port from being exposed. Any port which is + listening on the default "0.0.0.0" address inside a container will be + accessible from the network. + Cannot be updated. + +optional + +patchMergeKey=containerPort + +patchStrategy=merge + +listType=map + +listMapKey=containerPort + +listMapKey=protocol + items: + $ref: '#/definitions/ContainerPort' + type: array + x-go-name: Ports + readinessProbe: + $ref: '#/definitions/Probe' + resources: + $ref: '#/definitions/ResourceRequirements' + securityContext: + $ref: '#/definitions/SecurityContext' + startupProbe: + $ref: '#/definitions/Probe' + stdin: + description: |- + Whether this container should allocate a buffer for stdin in the container runtime. If this + is not set, reads from stdin in the container will always result in EOF. + Default is false. + +optional + type: boolean + x-go-name: Stdin + stdinOnce: + description: |- + Whether the container runtime should close the stdin channel after it has been opened by + a single attach. When stdin is true the stdin stream will remain open across multiple attach + sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the + first client attaches to stdin, and then remains open and accepts data until the client disconnects, + at which time stdin is closed and remains closed until the container is restarted. If this + flag is false, a container processes that reads from stdin will never receive an EOF. + Default is false + +optional + type: boolean + x-go-name: StdinOnce + terminationMessagePath: + description: |- + Optional: Path at which the file to which the container's termination message + will be written is mounted into the container's filesystem. + Message written is intended to be brief final status, such as an assertion failure message. + Will be truncated by the node if greater than 4096 bytes. The total message length across + all containers will be limited to 12kb. + Defaults to /dev/termination-log. + Cannot be updated. + +optional + type: string + x-go-name: TerminationMessagePath + terminationMessagePolicy: + $ref: '#/definitions/TerminationMessagePolicy' + tty: + description: |- + Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. + Default is false. + +optional + type: boolean + x-go-name: TTY + volumeDevices: + description: |- + volumeDevices is the list of block devices to be used by the container. + +patchMergeKey=devicePath + +patchStrategy=merge + +optional + items: + $ref: '#/definitions/VolumeDevice' + type: array + x-go-name: VolumeDevices + volumeMounts: + description: |- + Pod volumes to mount into the container's filesystem. + Cannot be updated. + +optional + +patchMergeKey=mountPath + +patchStrategy=merge + items: + $ref: '#/definitions/VolumeMount' + type: array + x-go-name: VolumeMounts + workingDir: + description: |- + Container's working directory. + If not specified, the container runtime's default will be used, which + might be configured in the container image. + Cannot be updated. + +optional + type: string + x-go-name: WorkingDir + title: UserContainer is a container specified by a user. + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + ValueFrom: + description: ValueFrom describes a location in which to obtain the value to a parameter + properties: + configMapKeyRef: + $ref: '#/definitions/ConfigMapKeySelector' + default: + $ref: '#/definitions/AnyString' + event: + description: Selector (https://github.com/expr-lang/expr) that is evaluated against the event to get the value of the parameter. E.g. `payload.message` + type: string + x-go-name: Event + expression: + description: Expression, if defined, is evaluated to specify the value for the parameter + type: string + x-go-name: Expression + jqFilter: + description: JQFilter expression against the resource object in resource templates + type: string + x-go-name: JQFilter + jsonPath: + description: JSONPath of a resource to retrieve an output parameter value from in resource templates + type: string + x-go-name: JSONPath + parameter: + description: |- + Parameter reference to a step or dag task in which to retrieve an output parameter value from + (e.g. '{{steps.mystep.outputs.myparam}}') + type: string + x-go-name: Parameter + path: + description: Path in the container to retrieve an output parameter value from in container templates + type: string + x-go-name: Path + supplied: + $ref: '#/definitions/SuppliedValueFrom' + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 + Volume: + properties: + awsElasticBlockStore: + $ref: '#/definitions/AWSElasticBlockStoreVolumeSource' + azureDisk: + $ref: '#/definitions/AzureDiskVolumeSource' + azureFile: + $ref: '#/definitions/AzureFileVolumeSource' + cephfs: + $ref: '#/definitions/CephFSVolumeSource' + cinder: + $ref: '#/definitions/CinderVolumeSource' + configMap: + $ref: '#/definitions/ConfigMapVolumeSource' + csi: + $ref: '#/definitions/CSIVolumeSource' + downwardAPI: + $ref: '#/definitions/DownwardAPIVolumeSource' + emptyDir: + $ref: '#/definitions/EmptyDirVolumeSource' + ephemeral: + $ref: '#/definitions/EphemeralVolumeSource' + fc: + $ref: '#/definitions/FCVolumeSource' + flexVolume: + $ref: '#/definitions/FlexVolumeSource' + flocker: + $ref: '#/definitions/FlockerVolumeSource' + gcePersistentDisk: + $ref: '#/definitions/GCEPersistentDiskVolumeSource' + gitRepo: + $ref: '#/definitions/GitRepoVolumeSource' + glusterfs: + $ref: '#/definitions/GlusterfsVolumeSource' + hostPath: + $ref: '#/definitions/HostPathVolumeSource' + iscsi: + $ref: '#/definitions/ISCSIVolumeSource' + name: + description: |- + name of the volume. + Must be a DNS_LABEL and unique within the pod. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + type: string + x-go-name: Name + nfs: + $ref: '#/definitions/NFSVolumeSource' + persistentVolumeClaim: + $ref: '#/definitions/PersistentVolumeClaimVolumeSource' + photonPersistentDisk: + $ref: '#/definitions/PhotonPersistentDiskVolumeSource' + portworxVolume: + $ref: '#/definitions/PortworxVolumeSource' + projected: + $ref: '#/definitions/ProjectedVolumeSource' + quobyte: + $ref: '#/definitions/QuobyteVolumeSource' + rbd: + $ref: '#/definitions/RBDVolumeSource' + scaleIO: + $ref: '#/definitions/ScaleIOVolumeSource' + secret: + $ref: '#/definitions/SecretVolumeSource' + storageos: + $ref: '#/definitions/StorageOSVolumeSource' + vsphereVolume: + $ref: '#/definitions/VsphereVirtualDiskVolumeSource' + title: Volume represents a named volume in a pod that may be accessed by any container in the pod. + type: object + x-go-package: k8s.io/api/core/v1 + VolumeDevice: + properties: + devicePath: + description: devicePath is the path inside of the container that the device will be mapped to. + type: string + x-go-name: DevicePath + name: + description: name must match the name of a persistentVolumeClaim in the pod + type: string + x-go-name: Name + title: volumeDevice describes a mapping of a raw block device within a container. + type: object + x-go-package: k8s.io/api/core/v1 + VolumeMount: + properties: + mountPath: + description: |- + Path within the container at which the volume should be mounted. Must + not contain ':'. + type: string + x-go-name: MountPath + mountPropagation: + $ref: '#/definitions/MountPropagationMode' + name: + description: This must match the Name of a Volume. + type: string + x-go-name: Name + readOnly: + description: |- + Mounted read-only if true, read-write otherwise (false or unspecified). + Defaults to false. + +optional + type: boolean + x-go-name: ReadOnly + subPath: + description: |- + Path within the volume from which the container's volume should be mounted. + Defaults to "" (volume's root). + +optional + type: string + x-go-name: SubPath + subPathExpr: + description: |- + Expanded path within the volume from which the container's volume should be mounted. + Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. + Defaults to "" (volume's root). + SubPathExpr and SubPath are mutually exclusive. + +optional + type: string + x-go-name: SubPathExpr + title: VolumeMount describes a mounting of a Volume within a container. + type: object + x-go-package: k8s.io/api/core/v1 + VolumeProjection: + description: Projection that may be projected along with other supported volume types + properties: + configMap: + $ref: '#/definitions/ConfigMapProjection' + downwardAPI: + $ref: '#/definitions/DownwardAPIProjection' + secret: + $ref: '#/definitions/SecretProjection' + serviceAccountToken: + $ref: '#/definitions/ServiceAccountTokenProjection' + type: object + x-go-package: k8s.io/api/core/v1 + VsphereVirtualDiskVolumeSource: + properties: + fsType: + description: |- + fsType is filesystem type to mount. + Must be a filesystem type supported by the host operating system. + Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + +optional + type: string + x-go-name: FSType + storagePolicyID: + description: |- + storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName. + +optional + type: string + x-go-name: StoragePolicyID + storagePolicyName: + description: |- + storagePolicyName is the storage Policy Based Management (SPBM) profile name. + +optional + type: string + x-go-name: StoragePolicyName + volumePath: + description: volumePath is the path that identifies vSphere volume vmdk + type: string + x-go-name: VolumePath + title: Represents a vSphere volume resource. + type: object + x-go-package: k8s.io/api/core/v1 + WeightedPodAffinityTerm: + description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) + properties: + podAffinityTerm: + $ref: '#/definitions/PodAffinityTerm' + weight: + description: |- + weight associated with matching the corresponding podAffinityTerm, + in the range 1-100. + format: int32 + type: integer + x-go-name: Weight + type: object + x-go-package: k8s.io/api/core/v1 + WindowsSecurityContextOptions: + properties: + gmsaCredentialSpec: + description: |- + GMSACredentialSpec is where the GMSA admission webhook + (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the + GMSA credential spec named by the GMSACredentialSpecName field. + +optional + type: string + x-go-name: GMSACredentialSpec + gmsaCredentialSpecName: + description: |- + GMSACredentialSpecName is the name of the GMSA credential spec to use. + +optional + type: string + x-go-name: GMSACredentialSpecName + hostProcess: + description: |- + HostProcess determines if a container should be run as a 'Host Process' container. + This field is alpha-level and will only be honored by components that enable the + WindowsHostProcessContainers feature flag. Setting this field without the feature + flag will result in errors when validating the Pod. All of a Pod's containers must + have the same effective HostProcess value (it is not allowed to have a mix of HostProcess + containers and non-HostProcess containers). In addition, if HostProcess is true + then HostNetwork must also be set to true. + +optional + type: boolean + x-go-name: HostProcess + runAsUserName: + description: |- + The UserName in Windows to run the entrypoint of the container process. + Defaults to the user specified in image metadata if unspecified. + May also be set in PodSecurityContext. If set in both SecurityContext and + PodSecurityContext, the value specified in SecurityContext takes precedence. + +optional + type: string + x-go-name: RunAsUserName + title: WindowsSecurityContextOptions contain Windows-specific options and credentials. + type: object + x-go-package: k8s.io/api/core/v1 + Workflow: + properties: + metadata: + $ref: '#/definitions/ObjectMeta' + required: + - metadata + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/plugins/executor + ZipStrategy: + description: ZipStrategy will unzip zipped input artifacts + type: object + x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 +host: localhost +info: + title: The API for an executor plugin. + version: 0.0.1 +paths: + /template.execute: + post: + operationId: executeTemplate + parameters: + - in: body + name: Body + required: true + schema: + $ref: '#/definitions/ExecuteTemplateArgs' + responses: + "200": + $ref: '#/responses/executeTemplate' +produces: + - application/json +responses: + executeTemplate: + description: "" + schema: + $ref: '#/definitions/ExecuteTemplateReply' +schemes: + - http +swagger: "2.0" From d6ac764ebacbcef61014753e51d2b9ce23fd3859 Mon Sep 17 00:00:00 2001 From: shuangkun Date: Tue, 9 Apr 2024 20:41:01 +0800 Subject: [PATCH 17/26] fix: retry status Signed-off-by: shuangkun --- workflow/controller/controller.go | 12 ++++++++++++ workflow/controller/operator.go | 17 ++++++++--------- workflow/controller/pod_cleanup_key.go | 10 +++++----- 3 files changed, 25 insertions(+), 14 deletions(-) diff --git a/workflow/controller/controller.go b/workflow/controller/controller.go index 1c8764a081a8..5050957aac28 100644 --- a/workflow/controller/controller.go +++ b/workflow/controller/controller.go @@ -590,6 +590,18 @@ func (wfc *WorkflowController) processNextPodCleanupItem(ctx context.Context) bo if err != nil && !apierr.IsNotFound(err) { return err } + case batchDeletePods: + workflowName := podName + wfClient := wfc.wfclientset.ArgoprojV1alpha1().Workflows(namespace) + wf, err := wfClient.Get(ctx, workflowName, metav1.GetOptions{}) + if err != nil && !apierr.IsNotFound(err) { + return err + } + wf.ObjectMeta.Labels[common.LabelKeyWorkflowRetryStatus] = "Retried" + wf, err = wfClient.Update(ctx, wf, metav1.UpdateOptions{}) + if err != nil && !apierr.IsNotFound(err) { + return err + } } return nil }() diff --git a/workflow/controller/operator.go b/workflow/controller/operator.go index c1c994de591d..1e14a1106301 100644 --- a/workflow/controller/operator.go +++ b/workflow/controller/operator.go @@ -2404,7 +2404,6 @@ func (woc *wfOperationCtx) markWorkflowPhase(ctx context.Context, phase wfv1.Wor } } woc.updated = true - woc.wf.Status.RetryStatus = nil woc.controller.queuePodForCleanup(woc.wf.Namespace, woc.getAgentPodName(), deletePod) } } @@ -3867,15 +3866,11 @@ func (woc *wfOperationCtx) shouldRetry() bool { if !ok || retryStatus == "Retried" { return false } - if retryStatus == "Retrying" { - // TODO make sure all pod in podsToDelete deleted, avoid "create pod exists" - return false - } return true } func (woc *wfOperationCtx) IsRetried() bool { - return woc.wf.Labels[common.LabelKeyWorkflowRetried] != "Retried" + return woc.wf.ObjectMeta.Labels[common.LabelKeyWorkflowRetryStatus] != "Retried" } func (woc *wfOperationCtx) retryWorkflow(ctx context.Context) error { @@ -3889,7 +3884,11 @@ func (woc *wfOperationCtx) retryWorkflow(ctx context.Context) error { if err != nil { return fmt.Errorf("fail to unmarshaling parameters: %v", err) } - restartSuccessful := woc.wf.Labels[common.LabelKeyRetryRestartSuccessful] + restartSuccessful := false + restartSuccessfulStr := woc.wf.Labels[common.LabelKeyRetryRestartSuccessful] + if restartSuccessfulStr == "true" { + restartSuccessful = true + } // Clean up remaining pods in the workflow wf, podsToDelete, err := wfutil.FormulateRetryWorkflow(ctx, woc.wf, restartSuccessful, nodeFiledSelector, parameters) @@ -3899,9 +3898,9 @@ func (woc *wfOperationCtx) retryWorkflow(ctx context.Context) error { for _, podName := range podsToDelete { woc.controller.queuePodForCleanup(wf.Namespace, podName, deletePod) } - woc.controller.queuePodForCleanup(wf.Namespace, wf.Name, deletedAllPodsFlag) + woc.controller.queuePodForCleanup(wf.Namespace, wf.Name, batchDeletePods) woc.wf = wf - woc.wf.labels[common.LabelKeyWorkflowRetryStatus] = "Retrying" + woc.wf.ObjectMeta.Labels[common.LabelKeyWorkflowRetryStatus] = "Retrying" woc.updated = true return nil } diff --git a/workflow/controller/pod_cleanup_key.go b/workflow/controller/pod_cleanup_key.go index 42328c67d71f..e68a4e3f1130 100644 --- a/workflow/controller/pod_cleanup_key.go +++ b/workflow/controller/pod_cleanup_key.go @@ -15,11 +15,11 @@ type ( ) const ( - deletePod podCleanupAction = "deletePod" - labelPodCompleted podCleanupAction = "labelPodCompleted" - terminateContainers podCleanupAction = "terminateContainers" - killContainers podCleanupAction = "killContainers" - showDeletedAllPodsFlag podCleanupAction = "deletedAllPods" + deletePod podCleanupAction = "deletePod" + labelPodCompleted podCleanupAction = "labelPodCompleted" + terminateContainers podCleanupAction = "terminateContainers" + killContainers podCleanupAction = "killContainers" + batchDeletePods podCleanupAction = "batchDeletePods" ) func newPodCleanupKey(namespace string, podName string, action podCleanupAction) podCleanupKey { From d01bb65a69a984e5f4eda17a7bbf36b35de23fec Mon Sep 17 00:00:00 2001 From: shuangkun Date: Tue, 9 Apr 2024 21:08:05 +0800 Subject: [PATCH 18/26] fix: swagger.yaml Signed-off-by: shuangkun --- swagger.yml | 5294 --------------------------------------------------- 1 file changed, 5294 deletions(-) delete mode 100644 swagger.yml diff --git a/swagger.yml b/swagger.yml deleted file mode 100644 index 7b3a96b1c5f7..000000000000 --- a/swagger.yml +++ /dev/null @@ -1,5294 +0,0 @@ -basePath: /api/v1 -consumes: - - application/json -definitions: - AWSElasticBlockStoreVolumeSource: - description: |- - An AWS EBS disk must exist before mounting to a container. The disk - must also be in the same AWS zone as the kubelet. An AWS EBS disk - can only be mounted as read/write once. AWS EBS volumes support - ownership management and SELinux relabeling. - properties: - fsType: - description: |- - fsType is the filesystem type of the volume that you want to mount. - Tip: Ensure that the filesystem type is supported by the host operating system. - Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore - TODO: how do we prevent errors in the filesystem from compromising the machine - +optional - type: string - x-go-name: FSType - partition: - description: |- - partition is the partition in the volume that you want to mount. - If omitted, the default is to mount by volume name. - Examples: For volume /dev/sda1, you specify the partition as "1". - Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). - +optional - format: int32 - type: integer - x-go-name: Partition - readOnly: - description: |- - readOnly value true will force the readOnly setting in VolumeMounts. - More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore - +optional - type: boolean - x-go-name: ReadOnly - volumeID: - description: |- - volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume). - More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore - type: string - x-go-name: VolumeID - title: Represents a Persistent Disk resource in AWS. - type: object - x-go-package: k8s.io/api/core/v1 - Affinity: - properties: - nodeAffinity: - $ref: '#/definitions/NodeAffinity' - podAffinity: - $ref: '#/definitions/PodAffinity' - podAntiAffinity: - $ref: '#/definitions/PodAntiAffinity' - title: Affinity is a group of affinity scheduling rules. - type: object - x-go-package: k8s.io/api/core/v1 - Amount: - description: +kubebuilder:validation:Type=number - title: Amount represent a numeric amount. - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - AnyString: - description: |- - It will unmarshall int64, int32, float64, float32, boolean, a plain string and represents it as string. - It will marshall back to string - marshalling is not symmetric. - title: It's JSON type is just string. - type: string - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - ArchiveStrategy: - description: ArchiveStrategy describes how to archive files/directory when saving artifacts - properties: - none: - $ref: '#/definitions/NoneStrategy' - tar: - $ref: '#/definitions/TarStrategy' - zip: - $ref: '#/definitions/ZipStrategy' - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - Arguments: - description: Arguments to a template - properties: - artifacts: - $ref: '#/definitions/Artifacts' - parameters: - description: |- - Parameters is the list of parameters to pass to the template or workflow - +patchStrategy=merge - +patchMergeKey=name - items: - $ref: '#/definitions/Parameter' - type: array - x-go-name: Parameters - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - Artifact: - description: Artifact indicates an artifact to place at a specified path - properties: - archive: - $ref: '#/definitions/ArchiveStrategy' - archiveLogs: - description: ArchiveLogs indicates if the container logs should be archived - type: boolean - x-go-name: ArchiveLogs - artifactGC: - $ref: '#/definitions/ArtifactGC' - artifactory: - $ref: '#/definitions/ArtifactoryArtifact' - azure: - $ref: '#/definitions/AzureArtifact' - deleted: - description: Has this been deleted? - type: boolean - x-go-name: Deleted - from: - description: From allows an artifact to reference an artifact from a previous step - type: string - x-go-name: From - fromExpression: - description: FromExpression, if defined, is evaluated to specify the value for the artifact - type: string - x-go-name: FromExpression - gcs: - $ref: '#/definitions/GCSArtifact' - git: - $ref: '#/definitions/GitArtifact' - globalName: - description: |- - GlobalName exports an output artifact to the global scope, making it available as - '{{workflow.outputs.artifacts.XXXX}} and in workflow.status.outputs.artifacts - type: string - x-go-name: GlobalName - hdfs: - $ref: '#/definitions/HDFSArtifact' - http: - $ref: '#/definitions/HTTPArtifact' - mode: - description: |- - mode bits to use on this file, must be a value between 0 and 0777 - set when loading input artifacts. - format: int32 - type: integer - x-go-name: Mode - name: - description: name of the artifact. must be unique within a template's inputs/outputs. - type: string - x-go-name: Name - optional: - description: Make Artifacts optional, if Artifacts doesn't generate or exist - type: boolean - x-go-name: Optional - oss: - $ref: '#/definitions/OSSArtifact' - path: - description: Path is the container path to the artifact - type: string - x-go-name: Path - raw: - $ref: '#/definitions/RawArtifact' - recurseMode: - description: If mode is set, apply the permission recursively into the artifact if it is a folder - type: boolean - x-go-name: RecurseMode - s3: - $ref: '#/definitions/S3Artifact' - subPath: - description: SubPath allows an artifact to be sourced from a subpath within the specified source - type: string - x-go-name: SubPath - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - 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' - serviceAccountName: - description: ServiceAccountName is an optional field for specifying the Service Account that should be assigned to the Pod doing the deletion - type: string - x-go-name: ServiceAccountName - strategy: - $ref: '#/definitions/ArtifactGCStrategy' - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - ArtifactGCStrategy: - title: ArtifactGCStrategy is the strategy when to delete artifacts for GC. - type: string - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - ArtifactLocation: - description: |- - It is used as single artifact in the context of inputs/outputs (e.g. outputs.artifacts.artname). - It is also used to describe the location of multiple artifacts such as the archive location - of a single workflow step, which the executor will use as a default location to store its files. - properties: - archiveLogs: - description: ArchiveLogs indicates if the container logs should be archived - type: boolean - x-go-name: ArchiveLogs - artifactory: - $ref: '#/definitions/ArtifactoryArtifact' - azure: - $ref: '#/definitions/AzureArtifact' - gcs: - $ref: '#/definitions/GCSArtifact' - git: - $ref: '#/definitions/GitArtifact' - hdfs: - $ref: '#/definitions/HDFSArtifact' - http: - $ref: '#/definitions/HTTPArtifact' - oss: - $ref: '#/definitions/OSSArtifact' - raw: - $ref: '#/definitions/RawArtifact' - s3: - $ref: '#/definitions/S3Artifact' - title: ArtifactLocation describes a location for a single or multiple artifacts. - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - ArtifactPaths: - description: ArtifactPaths expands a step from a collection of artifacts - properties: - archive: - $ref: '#/definitions/ArchiveStrategy' - archiveLogs: - description: ArchiveLogs indicates if the container logs should be archived - type: boolean - x-go-name: ArchiveLogs - artifactGC: - $ref: '#/definitions/ArtifactGC' - artifactory: - $ref: '#/definitions/ArtifactoryArtifact' - azure: - $ref: '#/definitions/AzureArtifact' - deleted: - description: Has this been deleted? - type: boolean - x-go-name: Deleted - from: - description: From allows an artifact to reference an artifact from a previous step - type: string - x-go-name: From - fromExpression: - description: FromExpression, if defined, is evaluated to specify the value for the artifact - type: string - x-go-name: FromExpression - gcs: - $ref: '#/definitions/GCSArtifact' - git: - $ref: '#/definitions/GitArtifact' - globalName: - description: |- - GlobalName exports an output artifact to the global scope, making it available as - '{{workflow.outputs.artifacts.XXXX}} and in workflow.status.outputs.artifacts - type: string - x-go-name: GlobalName - hdfs: - $ref: '#/definitions/HDFSArtifact' - http: - $ref: '#/definitions/HTTPArtifact' - mode: - description: |- - mode bits to use on this file, must be a value between 0 and 0777 - set when loading input artifacts. - format: int32 - type: integer - x-go-name: Mode - name: - description: name of the artifact. must be unique within a template's inputs/outputs. - type: string - x-go-name: Name - optional: - description: Make Artifacts optional, if Artifacts doesn't generate or exist - type: boolean - x-go-name: Optional - oss: - $ref: '#/definitions/OSSArtifact' - path: - description: Path is the container path to the artifact - type: string - x-go-name: Path - raw: - $ref: '#/definitions/RawArtifact' - recurseMode: - description: If mode is set, apply the permission recursively into the artifact if it is a folder - type: boolean - x-go-name: RecurseMode - s3: - $ref: '#/definitions/S3Artifact' - subPath: - description: SubPath allows an artifact to be sourced from a subpath within the specified source - type: string - x-go-name: SubPath - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - ArtifactoryArtifact: - description: ArtifactoryArtifact is the location of an artifactory artifact - properties: - passwordSecret: - $ref: '#/definitions/SecretKeySelector' - url: - description: URL of the artifact - type: string - x-go-name: URL - usernameSecret: - $ref: '#/definitions/SecretKeySelector' - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - Artifacts: - items: - $ref: '#/definitions/Artifact' - type: array - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - AzureArtifact: - description: AzureArtifact is the location of a an Azure Storage artifact - properties: - accountKeySecret: - $ref: '#/definitions/SecretKeySelector' - blob: - description: Blob is the blob name (i.e., path) in the container where the artifact resides - type: string - x-go-name: Blob - container: - description: Container is the container where resources will be stored - type: string - x-go-name: Container - endpoint: - description: Endpoint is the service url associated with an account. It is most likely "https://.blob.core.windows.net" - type: string - x-go-name: Endpoint - useSDKCreds: - description: UseSDKCreds tells the driver to figure out credentials based on sdk defaults. - type: boolean - x-go-name: UseSDKCreds - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - AzureDataDiskCachingMode: - description: +enum - type: string - x-go-package: k8s.io/api/core/v1 - AzureDataDiskKind: - description: +enum - type: string - x-go-package: k8s.io/api/core/v1 - AzureDiskVolumeSource: - properties: - cachingMode: - $ref: '#/definitions/AzureDataDiskCachingMode' - diskName: - description: diskName is the Name of the data disk in the blob storage - type: string - x-go-name: DiskName - diskURI: - description: diskURI is the URI of data disk in the blob storage - type: string - x-go-name: DataDiskURI - fsType: - description: |- - fsType is Filesystem type to mount. - Must be a filesystem type supported by the host operating system. - Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - +optional - type: string - x-go-name: FSType - kind: - $ref: '#/definitions/AzureDataDiskKind' - readOnly: - description: |- - readOnly Defaults to false (read/write). ReadOnly here will force - the ReadOnly setting in VolumeMounts. - +optional - type: boolean - x-go-name: ReadOnly - title: AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. - type: object - x-go-package: k8s.io/api/core/v1 - AzureFileVolumeSource: - properties: - readOnly: - description: |- - readOnly defaults to false (read/write). ReadOnly here will force - the ReadOnly setting in VolumeMounts. - +optional - type: boolean - x-go-name: ReadOnly - secretName: - description: secretName is the name of secret that contains Azure Storage Account Name and Key - type: string - x-go-name: SecretName - shareName: - description: shareName is the azure share Name - type: string - x-go-name: ShareName - title: AzureFile represents an Azure File Service mount on the host and bind mount to the pod. - type: object - x-go-package: k8s.io/api/core/v1 - Backoff: - description: Backoff is a backoff strategy to use within retryStrategy - properties: - duration: - description: Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. "2m", "1h") - type: string - x-go-name: Duration - factor: - $ref: '#/definitions/IntOrString' - maxDuration: - description: MaxDuration is the maximum amount of time allowed for a workflow in the backoff strategy - type: string - x-go-name: MaxDuration - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - BasicAuth: - description: BasicAuth describes the secret selectors required for basic authentication - properties: - passwordSecret: - $ref: '#/definitions/SecretKeySelector' - usernameSecret: - $ref: '#/definitions/SecretKeySelector' - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - CSIVolumeSource: - description: Represents a source location of a volume to mount, managed by an external CSI driver - properties: - driver: - description: |- - driver is the name of the CSI driver that handles this volume. - Consult with your admin for the correct name as registered in the cluster. - type: string - x-go-name: Driver - fsType: - description: |- - fsType to mount. Ex. "ext4", "xfs", "ntfs". - If not provided, the empty value is passed to the associated CSI driver - which will determine the default filesystem to apply. - +optional - type: string - x-go-name: FSType - nodePublishSecretRef: - $ref: '#/definitions/LocalObjectReference' - readOnly: - description: |- - readOnly specifies a read-only configuration for the volume. - Defaults to false (read/write). - +optional - type: boolean - x-go-name: ReadOnly - volumeAttributes: - additionalProperties: - type: string - description: |- - volumeAttributes stores driver-specific properties that are passed to the CSI - driver. Consult your driver's documentation for supported values. - +optional - type: object - x-go-name: VolumeAttributes - type: object - x-go-package: k8s.io/api/core/v1 - Cache: - description: Cache is the configuration for the type of cache to be used - properties: - configMap: - $ref: '#/definitions/ConfigMapKeySelector' - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - Capabilities: - properties: - add: - description: |- - Added capabilities - +optional - items: - $ref: '#/definitions/Capability' - type: array - x-go-name: Add - drop: - description: |- - Removed capabilities - +optional - items: - $ref: '#/definitions/Capability' - type: array - x-go-name: Drop - title: Adds and removes POSIX capabilities from running containers. - type: object - x-go-package: k8s.io/api/core/v1 - Capability: - description: Capability represent POSIX capabilities type - type: string - x-go-package: k8s.io/api/core/v1 - CephFSVolumeSource: - description: |- - Represents a Ceph Filesystem mount that lasts the lifetime of a pod - Cephfs volumes do not support ownership management or SELinux relabeling. - properties: - monitors: - description: |- - monitors is Required: Monitors is a collection of Ceph monitors - More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it - items: - type: string - type: array - x-go-name: Monitors - path: - description: |- - path is Optional: Used as the mounted root, rather than the full Ceph tree, default is / - +optional - type: string - x-go-name: Path - readOnly: - description: |- - readOnly is Optional: Defaults to false (read/write). ReadOnly here will force - the ReadOnly setting in VolumeMounts. - More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it - +optional - type: boolean - x-go-name: ReadOnly - secretFile: - description: |- - secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret - More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it - +optional - type: string - x-go-name: SecretFile - secretRef: - $ref: '#/definitions/LocalObjectReference' - user: - description: |- - user is optional: User is the rados user name, default is admin - More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it - +optional - type: string - x-go-name: User - type: object - x-go-package: k8s.io/api/core/v1 - CinderVolumeSource: - description: |- - A Cinder volume must exist before mounting to a container. - The volume must also be in the same region as the kubelet. - Cinder volumes support ownership management and SELinux relabeling. - properties: - fsType: - description: |- - fsType is the filesystem type to mount. - Must be a filesystem type supported by the host operating system. - Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md - +optional - type: string - x-go-name: FSType - readOnly: - description: |- - readOnly defaults to false (read/write). ReadOnly here will force - the ReadOnly setting in VolumeMounts. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md - +optional - type: boolean - x-go-name: ReadOnly - secretRef: - $ref: '#/definitions/LocalObjectReference' - volumeID: - description: |- - volumeID used to identify the volume in cinder. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md - type: string - x-go-name: VolumeID - title: Represents a cinder volume resource in Openstack. - type: object - x-go-package: k8s.io/api/core/v1 - ClientCertAuth: - description: ClientCertAuth holds necessary information for client authentication via certificates - properties: - clientCertSecret: - $ref: '#/definitions/SecretKeySelector' - clientKeySecret: - $ref: '#/definitions/SecretKeySelector' - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - ConfigMapEnvSource: - description: |- - The contents of the target ConfigMap's Data field will represent the - key-value pairs as environment variables. - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - +optional - type: string - x-go-name: Name - optional: - description: |- - Specify whether the ConfigMap must be defined - +optional - type: boolean - x-go-name: Optional - title: |- - ConfigMapEnvSource selects a ConfigMap to populate the environment - variables with. - type: object - x-go-package: k8s.io/api/core/v1 - ConfigMapKeySelector: - description: +structType=atomic - properties: - key: - description: The key to select. - type: string - x-go-name: Key - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - +optional - type: string - x-go-name: Name - optional: - description: |- - Specify whether the ConfigMap or its key must be defined - +optional - type: boolean - x-go-name: Optional - title: Selects a key from a ConfigMap. - type: object - x-go-package: k8s.io/api/core/v1 - ConfigMapProjection: - description: |- - The contents of the target ConfigMap's Data field will be presented in a - projected volume as files using the keys in the Data field as the file names, - unless the items element is populated with specific mappings of keys to paths. - Note that this is identical to a configmap volume source without the default - mode. - properties: - items: - description: |- - items if unspecified, each key-value pair in the Data field of the referenced - ConfigMap will be projected into the volume as a file whose name is the - key and content is the value. If specified, the listed keys will be - projected into the specified paths, and unlisted keys will not be - present. If a key is specified which is not present in the ConfigMap, - the volume setup will error unless it is marked optional. Paths must be - relative and may not contain the '..' path or start with '..'. - +optional - items: - $ref: '#/definitions/KeyToPath' - type: array - x-go-name: Items - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - +optional - type: string - x-go-name: Name - optional: - description: |- - optional specify whether the ConfigMap or its keys must be defined - +optional - type: boolean - x-go-name: Optional - title: Adapts a ConfigMap into a projected volume. - type: object - x-go-package: k8s.io/api/core/v1 - ConfigMapVolumeSource: - description: |- - The contents of the target ConfigMap's Data field will be presented in a - volume as files using the keys in the Data field as the file names, unless - the items element is populated with specific mappings of keys to paths. - ConfigMap volumes support ownership management and SELinux relabeling. - properties: - defaultMode: - description: |- - defaultMode is optional: mode bits used to set permissions on created files by default. - Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. - YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. - Defaults to 0644. - Directories within the path are not affected by this setting. - This might be in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode bits set. - +optional - format: int32 - type: integer - x-go-name: DefaultMode - items: - description: |- - items if unspecified, each key-value pair in the Data field of the referenced - ConfigMap will be projected into the volume as a file whose name is the - key and content is the value. If specified, the listed keys will be - projected into the specified paths, and unlisted keys will not be - present. If a key is specified which is not present in the ConfigMap, - the volume setup will error unless it is marked optional. Paths must be - relative and may not contain the '..' path or start with '..'. - +optional - items: - $ref: '#/definitions/KeyToPath' - type: array - x-go-name: Items - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - +optional - type: string - x-go-name: Name - optional: - description: |- - optional specify whether the ConfigMap or its keys must be defined - +optional - type: boolean - x-go-name: Optional - title: Adapts a ConfigMap into a volume. - type: object - x-go-package: k8s.io/api/core/v1 - Container: - properties: - args: - description: |- - Arguments to the entrypoint. - The container image's CMD is used if this is not provided. - Variable references $(VAR_NAME) are expanded using the container's environment. If a variable - cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will - produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless - of whether the variable exists or not. Cannot be updated. - More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell - +optional - items: - type: string - type: array - x-go-name: Args - command: - description: |- - Entrypoint array. Not executed within a shell. - The container image's ENTRYPOINT is used if this is not provided. - Variable references $(VAR_NAME) are expanded using the container's environment. If a variable - cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will - produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless - of whether the variable exists or not. Cannot be updated. - More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell - +optional - items: - type: string - type: array - x-go-name: Command - env: - description: |- - List of environment variables to set in the container. - Cannot be updated. - +optional - +patchMergeKey=name - +patchStrategy=merge - items: - $ref: '#/definitions/EnvVar' - type: array - x-go-name: Env - envFrom: - description: |- - List of sources to populate environment variables in the container. - The keys defined within a source must be a C_IDENTIFIER. All invalid keys - will be reported as an event when the container is starting. When a key exists in multiple - sources, the value associated with the last source will take precedence. - Values defined by an Env with a duplicate key will take precedence. - Cannot be updated. - +optional - items: - $ref: '#/definitions/EnvFromSource' - type: array - x-go-name: EnvFrom - image: - description: |- - Container image name. - More info: https://kubernetes.io/docs/concepts/containers/images - This field is optional to allow higher level config management to default or override - container images in workload controllers like Deployments and StatefulSets. - +optional - type: string - x-go-name: Image - imagePullPolicy: - $ref: '#/definitions/PullPolicy' - lifecycle: - $ref: '#/definitions/Lifecycle' - livenessProbe: - $ref: '#/definitions/Probe' - name: - description: |- - Name of the container specified as a DNS_LABEL. - Each container in a pod must have a unique name (DNS_LABEL). - Cannot be updated. - type: string - x-go-name: Name - ports: - description: |- - List of ports to expose from the container. Exposing a port here gives - the system additional information about the network connections a - container uses, but is primarily informational. Not specifying a port here - DOES NOT prevent that port from being exposed. Any port which is - listening on the default "0.0.0.0" address inside a container will be - accessible from the network. - Cannot be updated. - +optional - +patchMergeKey=containerPort - +patchStrategy=merge - +listType=map - +listMapKey=containerPort - +listMapKey=protocol - items: - $ref: '#/definitions/ContainerPort' - type: array - x-go-name: Ports - readinessProbe: - $ref: '#/definitions/Probe' - resources: - $ref: '#/definitions/ResourceRequirements' - securityContext: - $ref: '#/definitions/SecurityContext' - startupProbe: - $ref: '#/definitions/Probe' - stdin: - description: |- - Whether this container should allocate a buffer for stdin in the container runtime. If this - is not set, reads from stdin in the container will always result in EOF. - Default is false. - +optional - type: boolean - x-go-name: Stdin - stdinOnce: - description: |- - Whether the container runtime should close the stdin channel after it has been opened by - a single attach. When stdin is true the stdin stream will remain open across multiple attach - sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the - first client attaches to stdin, and then remains open and accepts data until the client disconnects, - at which time stdin is closed and remains closed until the container is restarted. If this - flag is false, a container processes that reads from stdin will never receive an EOF. - Default is false - +optional - type: boolean - x-go-name: StdinOnce - terminationMessagePath: - description: |- - Optional: Path at which the file to which the container's termination message - will be written is mounted into the container's filesystem. - Message written is intended to be brief final status, such as an assertion failure message. - Will be truncated by the node if greater than 4096 bytes. The total message length across - all containers will be limited to 12kb. - Defaults to /dev/termination-log. - Cannot be updated. - +optional - type: string - x-go-name: TerminationMessagePath - terminationMessagePolicy: - $ref: '#/definitions/TerminationMessagePolicy' - tty: - description: |- - Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. - Default is false. - +optional - type: boolean - x-go-name: TTY - volumeDevices: - description: |- - volumeDevices is the list of block devices to be used by the container. - +patchMergeKey=devicePath - +patchStrategy=merge - +optional - items: - $ref: '#/definitions/VolumeDevice' - type: array - x-go-name: VolumeDevices - volumeMounts: - description: |- - Pod volumes to mount into the container's filesystem. - Cannot be updated. - +optional - +patchMergeKey=mountPath - +patchStrategy=merge - items: - $ref: '#/definitions/VolumeMount' - type: array - x-go-name: VolumeMounts - workingDir: - description: |- - Container's working directory. - If not specified, the container runtime's default will be used, which - might be configured in the container image. - Cannot be updated. - +optional - type: string - x-go-name: WorkingDir - title: A single application container that you want to run within a pod. - type: object - x-go-package: k8s.io/api/core/v1 - ContainerNode: - properties: - args: - description: |- - Arguments to the entrypoint. - The container image's CMD is used if this is not provided. - Variable references $(VAR_NAME) are expanded using the container's environment. If a variable - cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will - produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless - of whether the variable exists or not. Cannot be updated. - More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell - +optional - items: - type: string - type: array - x-go-name: Args - command: - description: |- - Entrypoint array. Not executed within a shell. - The container image's ENTRYPOINT is used if this is not provided. - Variable references $(VAR_NAME) are expanded using the container's environment. If a variable - cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will - produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless - of whether the variable exists or not. Cannot be updated. - More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell - +optional - items: - type: string - type: array - x-go-name: Command - dependencies: - items: - type: string - type: array - x-go-name: Dependencies - env: - description: |- - List of environment variables to set in the container. - Cannot be updated. - +optional - +patchMergeKey=name - +patchStrategy=merge - items: - $ref: '#/definitions/EnvVar' - type: array - x-go-name: Env - envFrom: - description: |- - List of sources to populate environment variables in the container. - The keys defined within a source must be a C_IDENTIFIER. All invalid keys - will be reported as an event when the container is starting. When a key exists in multiple - sources, the value associated with the last source will take precedence. - Values defined by an Env with a duplicate key will take precedence. - Cannot be updated. - +optional - items: - $ref: '#/definitions/EnvFromSource' - type: array - x-go-name: EnvFrom - image: - description: |- - Container image name. - More info: https://kubernetes.io/docs/concepts/containers/images - This field is optional to allow higher level config management to default or override - container images in workload controllers like Deployments and StatefulSets. - +optional - type: string - x-go-name: Image - imagePullPolicy: - $ref: '#/definitions/PullPolicy' - lifecycle: - $ref: '#/definitions/Lifecycle' - livenessProbe: - $ref: '#/definitions/Probe' - name: - description: |- - Name of the container specified as a DNS_LABEL. - Each container in a pod must have a unique name (DNS_LABEL). - Cannot be updated. - type: string - x-go-name: Name - ports: - description: |- - List of ports to expose from the container. Exposing a port here gives - the system additional information about the network connections a - container uses, but is primarily informational. Not specifying a port here - DOES NOT prevent that port from being exposed. Any port which is - listening on the default "0.0.0.0" address inside a container will be - accessible from the network. - Cannot be updated. - +optional - +patchMergeKey=containerPort - +patchStrategy=merge - +listType=map - +listMapKey=containerPort - +listMapKey=protocol - items: - $ref: '#/definitions/ContainerPort' - type: array - x-go-name: Ports - readinessProbe: - $ref: '#/definitions/Probe' - resources: - $ref: '#/definitions/ResourceRequirements' - securityContext: - $ref: '#/definitions/SecurityContext' - startupProbe: - $ref: '#/definitions/Probe' - stdin: - description: |- - Whether this container should allocate a buffer for stdin in the container runtime. If this - is not set, reads from stdin in the container will always result in EOF. - Default is false. - +optional - type: boolean - x-go-name: Stdin - stdinOnce: - description: |- - Whether the container runtime should close the stdin channel after it has been opened by - a single attach. When stdin is true the stdin stream will remain open across multiple attach - sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the - first client attaches to stdin, and then remains open and accepts data until the client disconnects, - at which time stdin is closed and remains closed until the container is restarted. If this - flag is false, a container processes that reads from stdin will never receive an EOF. - Default is false - +optional - type: boolean - x-go-name: StdinOnce - terminationMessagePath: - description: |- - Optional: Path at which the file to which the container's termination message - will be written is mounted into the container's filesystem. - Message written is intended to be brief final status, such as an assertion failure message. - Will be truncated by the node if greater than 4096 bytes. The total message length across - all containers will be limited to 12kb. - Defaults to /dev/termination-log. - Cannot be updated. - +optional - type: string - x-go-name: TerminationMessagePath - terminationMessagePolicy: - $ref: '#/definitions/TerminationMessagePolicy' - tty: - description: |- - Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. - Default is false. - +optional - type: boolean - x-go-name: TTY - volumeDevices: - description: |- - volumeDevices is the list of block devices to be used by the container. - +patchMergeKey=devicePath - +patchStrategy=merge - +optional - items: - $ref: '#/definitions/VolumeDevice' - type: array - x-go-name: VolumeDevices - volumeMounts: - description: |- - Pod volumes to mount into the container's filesystem. - Cannot be updated. - +optional - +patchMergeKey=mountPath - +patchStrategy=merge - items: - $ref: '#/definitions/VolumeMount' - type: array - x-go-name: VolumeMounts - workingDir: - description: |- - Container's working directory. - If not specified, the container runtime's default will be used, which - might be configured in the container image. - Cannot be updated. - +optional - type: string - x-go-name: WorkingDir - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - ContainerPort: - properties: - containerPort: - description: |- - Number of port to expose on the pod's IP address. - This must be a valid port number, 0 < x < 65536. - format: int32 - type: integer - x-go-name: ContainerPort - hostIP: - description: |- - What host IP to bind the external port to. - +optional - type: string - x-go-name: HostIP - hostPort: - description: |- - Number of port to expose on the host. - If specified, this must be a valid port number, 0 < x < 65536. - If HostNetwork is specified, this must match ContainerPort. - Most containers do not need this. - +optional - format: int32 - type: integer - x-go-name: HostPort - name: - description: |- - If specified, this must be an IANA_SVC_NAME and unique within the pod. Each - named port in a pod must have a unique name. Name for the port that can be - referred to by services. - +optional - type: string - x-go-name: Name - protocol: - $ref: '#/definitions/Protocol' - title: ContainerPort represents a network port in a single container. - type: object - x-go-package: k8s.io/api/core/v1 - ContainerSetRetryStrategy: - properties: - duration: - description: |- - Duration is the time between each retry, examples values are "300ms", "1s" or "5m". - Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h". - type: string - x-go-name: Duration - retries: - $ref: '#/definitions/IntOrString' - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - ContainerSetTemplate: - properties: - containers: - items: - $ref: '#/definitions/ContainerNode' - type: array - x-go-name: Containers - retryStrategy: - $ref: '#/definitions/ContainerSetRetryStrategy' - volumeMounts: - items: - $ref: '#/definitions/VolumeMount' - type: array - x-go-name: VolumeMounts - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - ContinueOn: - description: It can be specified if the workflow should continue when the pod errors, fails or both. - properties: - error: - description: +optional - type: boolean - x-go-name: Error - failed: - description: +optional - type: boolean - x-go-name: Failed - title: ContinueOn defines if a workflow should continue even if a task or step fails/errors. - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - Counter: - description: Counter is a Counter prometheus metric - properties: - value: - description: Value is the value of the metric - type: string - x-go-name: Value - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - CreateS3BucketOptions: - description: CreateS3BucketOptions options used to determine automatic automatic bucket-creation process - properties: - objectLocking: - description: ObjectLocking Enable object locking - type: boolean - x-go-name: ObjectLocking - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - DAGTask: - description: DAGTask represents a node in the graph during DAG execution - properties: - arguments: - $ref: '#/definitions/Arguments' - continueOn: - $ref: '#/definitions/ContinueOn' - dependencies: - description: Dependencies are name of other targets which this depends on - items: - type: string - type: array - x-go-name: Dependencies - depends: - description: Depends are name of other targets which this depends on - type: string - x-go-name: Depends - hooks: - $ref: '#/definitions/LifecycleHooks' - inline: - $ref: '#/definitions/Template' - name: - description: Name is the name of the target - type: string - x-go-name: Name - onExit: - description: |- - OnExit is a template reference which is invoked at the end of the - template, irrespective of the success, failure, or error of the - primary template. - DEPRECATED: Use Hooks[exit].Template instead. - type: string - x-go-name: OnExit - template: - description: Name of template to execute - type: string - x-go-name: Template - templateRef: - $ref: '#/definitions/TemplateRef' - when: - description: When is an expression in which the task should conditionally execute - type: string - x-go-name: When - withItems: - description: WithItems expands a task into multiple parallel tasks from the items in the list - items: - $ref: '#/definitions/Item' - type: array - x-go-name: WithItems - withParam: - description: |- - WithParam expands a task into multiple parallel tasks from the value in the parameter, - which is expected to be a JSON list. - type: string - x-go-name: WithParam - withSequence: - $ref: '#/definitions/Sequence' - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - DAGTemplate: - description: DAGTemplate is a template subtype for directed acyclic graph templates - properties: - failFast: - description: |- - This flag is for DAG logic. The DAG logic has a built-in "fail fast" feature to stop scheduling new steps, - as soon as it detects that one of the DAG nodes is failed. Then it waits until all DAG nodes are completed - before failing the DAG itself. - The FailFast flag default is true, if set to false, it will allow a DAG to run all branches of the DAG to - completion (either success or failure), regardless of the failed outcomes of branches in the DAG. - More info and example about this feature at https://github.com/argoproj/argo-workflows/issues/1442 - type: boolean - x-go-name: FailFast - target: - description: Target are one or more names of targets to execute in a DAG - type: string - x-go-name: Target - tasks: - description: |- - Tasks are a list of DAG tasks - +patchStrategy=merge - +patchMergeKey=name - items: - $ref: '#/definitions/DAGTask' - type: array - x-go-name: Tasks - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - Data: - description: Data is a data template - properties: - source: - $ref: '#/definitions/DataSource' - transformation: - $ref: '#/definitions/Transformation' - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - DataSource: - description: DataSource sources external data into a data template - properties: - artifactPaths: - $ref: '#/definitions/ArtifactPaths' - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - DownwardAPIProjection: - description: |- - Note that this is identical to a downwardAPI volume source without the default - mode. - properties: - items: - description: |- - Items is a list of DownwardAPIVolume file - +optional - items: - $ref: '#/definitions/DownwardAPIVolumeFile' - type: array - x-go-name: Items - title: Represents downward API info for projecting into a projected volume. - type: object - x-go-package: k8s.io/api/core/v1 - DownwardAPIVolumeFile: - description: DownwardAPIVolumeFile represents information to create the file containing the pod field - properties: - fieldRef: - $ref: '#/definitions/ObjectFieldSelector' - mode: - description: |- - Optional: mode bits used to set permissions on this file, must be an octal value - between 0000 and 0777 or a decimal value between 0 and 511. - YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. - If not specified, the volume defaultMode will be used. - This might be in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode bits set. - +optional - format: int32 - type: integer - x-go-name: Mode - path: - description: 'Required: Path is the relative path name of the file to be created. Must not be absolute or contain the ''..'' path. Must be utf-8 encoded. The first item of the relative path must not start with ''..''' - type: string - x-go-name: Path - resourceFieldRef: - $ref: '#/definitions/ResourceFieldSelector' - type: object - x-go-package: k8s.io/api/core/v1 - DownwardAPIVolumeSource: - description: Downward API volumes support ownership management and SELinux relabeling. - properties: - defaultMode: - description: |- - Optional: mode bits to use on created files by default. Must be a - Optional: mode bits used to set permissions on created files by default. - Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. - YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. - Defaults to 0644. - Directories within the path are not affected by this setting. - This might be in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode bits set. - +optional - format: int32 - type: integer - x-go-name: DefaultMode - items: - description: |- - Items is a list of downward API volume file - +optional - items: - $ref: '#/definitions/DownwardAPIVolumeFile' - type: array - x-go-name: Items - title: DownwardAPIVolumeSource represents a volume containing downward API info. - type: object - x-go-package: k8s.io/api/core/v1 - Duration: - description: |- - Duration is a wrapper around time.Duration which supports correct - marshaling to YAML and JSON. In particular, it marshals into strings, which - can be used as map keys in json. - type: object - x-go-package: k8s.io/apimachinery/pkg/apis/meta/v1 - EmptyDirVolumeSource: - description: Empty directory volumes support ownership management and SELinux relabeling. - properties: - medium: - $ref: '#/definitions/StorageMedium' - sizeLimit: - $ref: '#/definitions/Quantity' - title: Represents an empty directory for a pod. - type: object - x-go-package: k8s.io/api/core/v1 - EnvFromSource: - description: EnvFromSource represents the source of a set of ConfigMaps - properties: - configMapRef: - $ref: '#/definitions/ConfigMapEnvSource' - prefix: - description: |- - An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER. - +optional - type: string - x-go-name: Prefix - secretRef: - $ref: '#/definitions/SecretEnvSource' - type: object - x-go-package: k8s.io/api/core/v1 - EnvVar: - properties: - name: - description: Name of the environment variable. Must be a C_IDENTIFIER. - type: string - x-go-name: Name - value: - description: |- - Variable references $(VAR_NAME) are expanded - using the previously defined environment variables in the container and - any service environment variables. If a variable cannot be resolved, - the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. - "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". - Escaped references will never be expanded, regardless of whether the variable - exists or not. - Defaults to "". - +optional - type: string - x-go-name: Value - valueFrom: - $ref: '#/definitions/EnvVarSource' - title: EnvVar represents an environment variable present in a Container. - type: object - x-go-package: k8s.io/api/core/v1 - EnvVarSource: - properties: - configMapKeyRef: - $ref: '#/definitions/ConfigMapKeySelector' - fieldRef: - $ref: '#/definitions/ObjectFieldSelector' - resourceFieldRef: - $ref: '#/definitions/ResourceFieldSelector' - secretKeyRef: - $ref: '#/definitions/SecretKeySelector' - title: EnvVarSource represents a source for the value of an EnvVar. - type: object - x-go-package: k8s.io/api/core/v1 - EphemeralVolumeSource: - properties: - volumeClaimTemplate: - $ref: '#/definitions/PersistentVolumeClaimTemplate' - title: Represents an ephemeral volume that is handled by a normal storage driver. - type: object - x-go-package: k8s.io/api/core/v1 - ExecAction: - properties: - command: - description: |- - Command is the command line to execute inside the container, the working directory for the - command is root ('/') in the container's filesystem. The command is simply exec'd, it is - not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use - a shell, you need to explicitly call out to that shell. - Exit status of 0 is treated as live/healthy and non-zero is unhealthy. - +optional - items: - type: string - type: array - x-go-name: Command - title: ExecAction describes a "run in container" action. - type: object - x-go-package: k8s.io/api/core/v1 - ExecuteTemplateArgs: - properties: - template: - $ref: '#/definitions/Template' - workflow: - $ref: '#/definitions/Workflow' - required: - - workflow - - template - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/plugins/executor - ExecuteTemplateReply: - properties: - node: - $ref: '#/definitions/NodeResult' - requeue: - $ref: '#/definitions/Duration' - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/plugins/executor - ExecutorConfig: - properties: - serviceAccountName: - description: ServiceAccountName specifies the service account name of the executor container. - type: string - x-go-name: ServiceAccountName - title: ExecutorConfig holds configurations of an executor container. - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - FCVolumeSource: - description: |- - Fibre Channel volumes can only be mounted as read/write once. - Fibre Channel volumes support ownership management and SELinux relabeling. - properties: - fsType: - description: |- - fsType is the filesystem type to mount. - Must be a filesystem type supported by the host operating system. - Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - TODO: how do we prevent errors in the filesystem from compromising the machine - +optional - type: string - x-go-name: FSType - lun: - description: |- - lun is Optional: FC target lun number - +optional - format: int32 - type: integer - x-go-name: Lun - readOnly: - description: |- - readOnly is Optional: Defaults to false (read/write). ReadOnly here will force - the ReadOnly setting in VolumeMounts. - +optional - type: boolean - x-go-name: ReadOnly - targetWWNs: - description: |- - targetWWNs is Optional: FC target worldwide names (WWNs) - +optional - items: - type: string - type: array - x-go-name: TargetWWNs - wwids: - description: |- - wwids Optional: FC volume world wide identifiers (wwids) - Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously. - +optional - items: - type: string - type: array - x-go-name: WWIDs - title: Represents a Fibre Channel volume. - type: object - x-go-package: k8s.io/api/core/v1 - FieldsV1: - description: |- - Each key is either a '.' representing the field itself, and will always map to an empty set, - or a string representing a sub-field or item. The string will follow one of these four formats: - 'f:', where is the name of a field in a struct, or key in a map - 'v:', where is the exact json formatted value of a list item - 'i:', where is position of a item in a list - 'k:', where is a map of a list item's key fields to their unique values - If a key maps to an empty Fields value, the field that key represents is part of the set. - - The exact format is defined in sigs.k8s.io/structured-merge-diff - +protobuf.options.(gogoproto.goproto_stringer)=false - title: FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format. - type: object - x-go-package: k8s.io/apimachinery/pkg/apis/meta/v1 - FlexVolumeSource: - description: |- - FlexVolume represents a generic volume resource that is - provisioned/attached using an exec based plugin. - properties: - driver: - description: driver is the name of the driver to use for this volume. - type: string - x-go-name: Driver - fsType: - description: |- - fsType is the filesystem type to mount. - Must be a filesystem type supported by the host operating system. - Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script. - +optional - type: string - x-go-name: FSType - options: - additionalProperties: - type: string - description: |- - options is Optional: this field holds extra command options if any. - +optional - type: object - x-go-name: Options - readOnly: - description: |- - readOnly is Optional: defaults to false (read/write). ReadOnly here will force - the ReadOnly setting in VolumeMounts. - +optional - type: boolean - x-go-name: ReadOnly - secretRef: - $ref: '#/definitions/LocalObjectReference' - type: object - x-go-package: k8s.io/api/core/v1 - FlockerVolumeSource: - description: |- - One and only one of datasetName and datasetUUID should be set. - Flocker volumes do not support ownership management or SELinux relabeling. - properties: - datasetName: - description: |- - datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker - should be considered as deprecated - +optional - type: string - x-go-name: DatasetName - datasetUUID: - description: |- - datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset - +optional - type: string - x-go-name: DatasetUUID - title: Represents a Flocker volume mounted by the Flocker agent. - type: object - x-go-package: k8s.io/api/core/v1 - GCEPersistentDiskVolumeSource: - description: |- - A GCE PD must exist before mounting to a container. The disk must - also be in the same GCE project and zone as the kubelet. A GCE PD - can only be mounted as read/write once or read-only many times. GCE - PDs support ownership management and SELinux relabeling. - properties: - fsType: - description: |- - fsType is filesystem type of the volume that you want to mount. - Tip: Ensure that the filesystem type is supported by the host operating system. - Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - TODO: how do we prevent errors in the filesystem from compromising the machine - +optional - type: string - x-go-name: FSType - partition: - description: |- - partition is the partition in the volume that you want to mount. - If omitted, the default is to mount by volume name. - Examples: For volume /dev/sda1, you specify the partition as "1". - Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). - More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - +optional - format: int32 - type: integer - x-go-name: Partition - pdName: - description: |- - pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE. - More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - type: string - x-go-name: PDName - readOnly: - description: |- - readOnly here will force the ReadOnly setting in VolumeMounts. - Defaults to false. - More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - +optional - type: boolean - x-go-name: ReadOnly - title: Represents a Persistent Disk resource in Google Compute Engine. - type: object - x-go-package: k8s.io/api/core/v1 - GCSArtifact: - description: GCSArtifact is the location of a GCS artifact - properties: - bucket: - description: Bucket is the name of the bucket - type: string - x-go-name: Bucket - key: - description: Key is the path in the bucket where the artifact resides - type: string - x-go-name: Key - serviceAccountKeySecret: - $ref: '#/definitions/SecretKeySelector' - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - GRPCAction: - properties: - port: - description: Port number of the gRPC service. Number must be in the range 1 to 65535. - format: int32 - type: integer - x-go-name: Port - service: - description: |- - Service is the name of the service to place in the gRPC HealthCheckRequest - (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - - If this is not specified, the default behavior is defined by gRPC. - +optional - +default="" - type: string - x-go-name: Service - type: object - x-go-package: k8s.io/api/core/v1 - Gauge: - description: Gauge is a Gauge prometheus metric - properties: - operation: - $ref: '#/definitions/GaugeOperation' - realtime: - description: Realtime emits this metric in real time if applicable - type: boolean - x-go-name: Realtime - value: - description: |- - Value is the value to be used in the operation with the metric's current value. If no operation is set, - value is the value of the metric - type: string - x-go-name: Value - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - GaugeOperation: - title: A GaugeOperation is the set of operations that can be used in a gauge metric. - type: string - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - GitArtifact: - description: GitArtifact is the location of an git artifact - properties: - branch: - description: Branch is the branch to fetch when `SingleBranch` is enabled - type: string - x-go-name: Branch - depth: - description: |- - Depth specifies clones/fetches should be shallow and include the given - number of commits from the branch tip - format: uint64 - type: integer - x-go-name: Depth - disableSubmodules: - description: DisableSubmodules disables submodules during git clone - type: boolean - x-go-name: DisableSubmodules - fetch: - description: Fetch specifies a number of refs that should be fetched before checkout - items: - type: string - type: array - x-go-name: Fetch - insecureIgnoreHostKey: - description: InsecureIgnoreHostKey disables SSH strict host key checking during git clone - type: boolean - x-go-name: InsecureIgnoreHostKey - passwordSecret: - $ref: '#/definitions/SecretKeySelector' - repo: - description: Repo is the git repository - type: string - x-go-name: Repo - revision: - description: Revision is the git commit, tag, branch to checkout - type: string - x-go-name: Revision - singleBranch: - description: SingleBranch enables single branch clone, using the `branch` parameter - type: boolean - x-go-name: SingleBranch - sshPrivateKeySecret: - $ref: '#/definitions/SecretKeySelector' - usernameSecret: - $ref: '#/definitions/SecretKeySelector' - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - GitRepoVolumeSource: - description: |- - DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an - EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir - into the Pod's container. - properties: - directory: - description: |- - directory is the target directory name. - Must not contain or start with '..'. If '.' is supplied, the volume directory will be the - git repository. Otherwise, if specified, the volume will contain the git repository in - the subdirectory with the given name. - +optional - type: string - x-go-name: Directory - repository: - description: repository is the URL - type: string - x-go-name: Repository - revision: - description: |- - revision is the commit hash for the specified revision. - +optional - type: string - x-go-name: Revision - title: |- - Represents a volume that is populated with the contents of a git repository. - Git repo volumes do not support ownership management. - Git repo volumes support SELinux relabeling. - type: object - x-go-package: k8s.io/api/core/v1 - GlusterfsVolumeSource: - description: Glusterfs volumes do not support ownership management or SELinux relabeling. - properties: - endpoints: - description: |- - endpoints is the endpoint name that details Glusterfs topology. - More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod - type: string - x-go-name: EndpointsName - path: - description: |- - path is the Glusterfs volume path. - More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod - type: string - x-go-name: Path - readOnly: - description: |- - readOnly here will force the Glusterfs volume to be mounted with read-only permissions. - Defaults to false. - More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod - +optional - type: boolean - x-go-name: ReadOnly - title: Represents a Glusterfs mount that lasts the lifetime of a pod. - type: object - x-go-package: k8s.io/api/core/v1 - HDFSArtifact: - description: HDFSArtifact is the location of an HDFS artifact - properties: - addresses: - description: Addresses is accessible addresses of HDFS name nodes - items: - type: string - type: array - x-go-name: Addresses - force: - description: Force copies a file forcibly even if it exists - type: boolean - x-go-name: Force - hdfsUser: - description: |- - HDFSUser is the user to access HDFS file system. - It is ignored if either ccache or keytab is used. - type: string - x-go-name: HDFSUser - krbCCacheSecret: - $ref: '#/definitions/SecretKeySelector' - krbConfigConfigMap: - $ref: '#/definitions/ConfigMapKeySelector' - krbKeytabSecret: - $ref: '#/definitions/SecretKeySelector' - krbRealm: - description: |- - KrbRealm is the Kerberos realm used with Kerberos keytab - It must be set if keytab is used. - type: string - x-go-name: KrbRealm - krbServicePrincipalName: - description: |- - KrbServicePrincipalName is the principal name of Kerberos service - It must be set if either ccache or keytab is used. - type: string - x-go-name: KrbServicePrincipalName - krbUsername: - description: |- - KrbUsername is the Kerberos username used with Kerberos keytab - It must be set if keytab is used. - type: string - x-go-name: KrbUsername - path: - description: Path is a file path in HDFS - type: string - x-go-name: Path - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - HTTP: - properties: - body: - description: Body is content of the HTTP Request - type: string - x-go-name: Body - bodyFrom: - $ref: '#/definitions/HTTPBodySource' - headers: - $ref: '#/definitions/HTTPHeaders' - insecureSkipVerify: - description: InsecureSkipVerify is a bool when if set to true will skip TLS verification for the HTTP client - type: boolean - x-go-name: InsecureSkipVerify - method: - description: Method is HTTP methods for HTTP Request - type: string - x-go-name: Method - successCondition: - description: SuccessCondition is an expression if evaluated to true is considered successful - type: string - x-go-name: SuccessCondition - timeoutSeconds: - description: TimeoutSeconds is request timeout for HTTP Request. Default is 30 seconds - format: int64 - type: integer - x-go-name: TimeoutSeconds - url: - description: URL of the HTTP Request - type: string - x-go-name: URL - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - HTTPArtifact: - description: HTTPArtifact allows a file served on HTTP to be placed as an input artifact in a container - properties: - auth: - $ref: '#/definitions/HTTPAuth' - headers: - description: Headers are an optional list of headers to send with HTTP requests for artifacts - items: - $ref: '#/definitions/Header' - type: array - x-go-name: Headers - url: - description: URL of the artifact - type: string - x-go-name: URL - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - HTTPAuth: - properties: - basicAuth: - $ref: '#/definitions/BasicAuth' - clientCert: - $ref: '#/definitions/ClientCertAuth' - oauth2: - $ref: '#/definitions/OAuth2Auth' - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - HTTPBodySource: - properties: - bytes: - items: - format: uint8 - type: integer - type: array - x-go-name: Bytes - title: HTTPBodySource contains the source of the HTTP body. - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - HTTPGetAction: - properties: - host: - description: |- - Host name to connect to, defaults to the pod IP. You probably want to set - "Host" in httpHeaders instead. - +optional - type: string - x-go-name: Host - httpHeaders: - description: |- - Custom headers to set in the request. HTTP allows repeated headers. - +optional - items: - $ref: '#/definitions/HTTPHeader' - type: array - x-go-name: HTTPHeaders - path: - description: |- - Path to access on the HTTP server. - +optional - type: string - x-go-name: Path - port: - $ref: '#/definitions/IntOrString' - scheme: - $ref: '#/definitions/URIScheme' - title: HTTPGetAction describes an action based on HTTP Get requests. - type: object - x-go-package: k8s.io/api/core/v1 - HTTPHeader: - properties: - name: - type: string - x-go-name: Name - value: - type: string - x-go-name: Value - valueFrom: - $ref: '#/definitions/HTTPHeaderSource' - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - HTTPHeaderSource: - properties: - secretKeyRef: - $ref: '#/definitions/SecretKeySelector' - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - HTTPHeaders: - items: - $ref: '#/definitions/HTTPHeader' - type: array - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - Header: - description: Header indicate a key-value request header to be used when fetching artifacts over HTTP - properties: - name: - description: Name is the header name - type: string - x-go-name: Name - value: - description: Value is the literal value to use for the header - type: string - x-go-name: Value - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - Histogram: - description: Histogram is a Histogram prometheus metric - properties: - buckets: - description: Buckets is a list of bucket divisors for the histogram - items: - $ref: '#/definitions/Amount' - type: array - x-go-name: Buckets - value: - description: Value is the value of the metric - type: string - x-go-name: Value - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - HostAlias: - description: |- - HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the - pod's hosts file. - properties: - hostnames: - description: Hostnames for the above IP address. - items: - type: string - type: array - x-go-name: Hostnames - ip: - description: IP address of the host file entry. - type: string - x-go-name: IP - type: object - x-go-package: k8s.io/api/core/v1 - HostPathType: - description: +enum - type: string - x-go-package: k8s.io/api/core/v1 - HostPathVolumeSource: - description: Host path volumes do not support ownership management or SELinux relabeling. - properties: - path: - description: |- - path of the directory on the host. - If the path is a symlink, it will follow the link to the real path. - More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath - type: string - x-go-name: Path - type: - $ref: '#/definitions/HostPathType' - title: Represents a host path mapped into a pod. - type: object - x-go-package: k8s.io/api/core/v1 - ISCSIVolumeSource: - description: |- - ISCSI volumes can only be mounted as read/write once. - ISCSI volumes support ownership management and SELinux relabeling. - properties: - chapAuthDiscovery: - description: |- - chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication - +optional - type: boolean - x-go-name: DiscoveryCHAPAuth - chapAuthSession: - description: |- - chapAuthSession defines whether support iSCSI Session CHAP authentication - +optional - type: boolean - x-go-name: SessionCHAPAuth - fsType: - description: |- - fsType is the filesystem type of the volume that you want to mount. - Tip: Ensure that the filesystem type is supported by the host operating system. - Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi - TODO: how do we prevent errors in the filesystem from compromising the machine - +optional - type: string - x-go-name: FSType - initiatorName: - description: |- - initiatorName is the custom iSCSI Initiator Name. - If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface - : will be created for the connection. - +optional - type: string - x-go-name: InitiatorName - iqn: - description: iqn is the target iSCSI Qualified Name. - type: string - x-go-name: IQN - iscsiInterface: - description: |- - iscsiInterface is the interface Name that uses an iSCSI transport. - Defaults to 'default' (tcp). - +optional - type: string - x-go-name: ISCSIInterface - lun: - description: lun represents iSCSI Target Lun number. - format: int32 - type: integer - x-go-name: Lun - portals: - description: |- - portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port - is other than default (typically TCP ports 860 and 3260). - +optional - items: - type: string - type: array - x-go-name: Portals - readOnly: - description: |- - readOnly here will force the ReadOnly setting in VolumeMounts. - Defaults to false. - +optional - type: boolean - x-go-name: ReadOnly - secretRef: - $ref: '#/definitions/LocalObjectReference' - targetPortal: - description: |- - targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port - is other than default (typically TCP ports 860 and 3260). - type: string - x-go-name: TargetPortal - title: Represents an ISCSI disk. - type: object - x-go-package: k8s.io/api/core/v1 - Inputs: - description: Inputs are the mechanism for passing parameters, artifacts, volumes from one template to another - properties: - artifacts: - $ref: '#/definitions/Artifacts' - parameters: - description: |- - Parameters are a list of parameters passed as inputs - +patchStrategy=merge - +patchMergeKey=name - items: - $ref: '#/definitions/Parameter' - type: array - x-go-name: Parameters - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - IntOrString: - description: |- - +protobuf=true - +protobuf.options.(gogoproto.goproto_stringer)=false - +k8s:openapi-gen=true - properties: - IntVal: - format: int32 - type: integer - StrVal: - type: string - Type: - $ref: '#/definitions/Type' - title: |- - IntOrString is a type that can hold an int32 or a string. When used in - JSON or YAML marshalling and unmarshalling, it produces or consumes the - inner type. This allows you to have, for example, a JSON field that can - accept a name or number. - TODO: Rename to Int32OrString - type: object - x-go-package: k8s.io/apimachinery/pkg/util/intstr - Item: - description: |- - +protobuf.options.(gogoproto.goproto_stringer)=false - +kubebuilder:validation:Type=object - title: |- - Item expands a single workflow step into multiple parallel steps - The value of Item can be a map, string, bool, or number - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - KeyToPath: - properties: - key: - description: key is the key to project. - type: string - x-go-name: Key - mode: - description: |- - mode is Optional: mode bits used to set permissions on this file. - Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. - YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. - If not specified, the volume defaultMode will be used. - This might be in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode bits set. - +optional - format: int32 - type: integer - x-go-name: Mode - path: - description: |- - path is the relative path of the file to map the key to. - May not be an absolute path. - May not contain the path element '..'. - May not start with the string '..'. - type: string - x-go-name: Path - title: Maps a string key to a path within a volume. - type: object - x-go-package: k8s.io/api/core/v1 - LabelSelector: - description: |- - A label selector is a label query over a set of resources. The result of matchLabels and - matchExpressions are ANDed. An empty label selector matches all objects. A null - label selector matches no objects. - +structType=atomic - properties: - matchExpressions: - description: |- - matchExpressions is a list of label selector requirements. The requirements are ANDed. - +optional - items: - $ref: '#/definitions/LabelSelectorRequirement' - type: array - x-go-name: MatchExpressions - matchLabels: - additionalProperties: - type: string - description: |- - matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, whose key field is "key", the - operator is "In", and the values array contains only "value". The requirements are ANDed. - +optional - type: object - x-go-name: MatchLabels - type: object - x-go-package: k8s.io/apimachinery/pkg/apis/meta/v1 - LabelSelectorOperator: - title: A label selector operator is the set of operators that can be used in a selector requirement. - type: string - x-go-package: k8s.io/apimachinery/pkg/apis/meta/v1 - LabelSelectorRequirement: - description: |- - A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: |- - key is the label key that the selector applies to. - +patchMergeKey=key - +patchStrategy=merge - type: string - x-go-name: Key - operator: - $ref: '#/definitions/LabelSelectorOperator' - values: - description: |- - values is an array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. This array is replaced during a strategic - merge patch. - +optional - items: - type: string - type: array - x-go-name: Values - type: object - x-go-package: k8s.io/apimachinery/pkg/apis/meta/v1 - Lifecycle: - description: |- - Lifecycle describes actions that the management system should take in response to container lifecycle - events. For the PostStart and PreStop lifecycle handlers, management of the container blocks - until the action is complete, unless the container process fails, in which case the handler is aborted. - properties: - postStart: - $ref: '#/definitions/LifecycleHandler' - preStop: - $ref: '#/definitions/LifecycleHandler' - type: object - x-go-package: k8s.io/api/core/v1 - LifecycleHandler: - description: |- - LifecycleHandler defines a specific action that should be taken in a lifecycle - hook. One and only one of the fields, except TCPSocket must be specified. - properties: - exec: - $ref: '#/definitions/ExecAction' - httpGet: - $ref: '#/definitions/HTTPGetAction' - tcpSocket: - $ref: '#/definitions/TCPSocketAction' - type: object - x-go-package: k8s.io/api/core/v1 - LifecycleHook: - properties: - arguments: - $ref: '#/definitions/Arguments' - expression: - description: |- - Expression is a condition expression for when a node will be retried. If it evaluates to false, the node will not - be retried and the retry strategy will be ignored - type: string - x-go-name: Expression - template: - description: Template is the name of the template to execute by the hook - type: string - x-go-name: Template - templateRef: - $ref: '#/definitions/TemplateRef' - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - LifecycleHooks: - additionalProperties: - $ref: '#/definitions/LifecycleHook' - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - LocalObjectReference: - description: |- - LocalObjectReference contains enough information to let you locate the - referenced object inside the same namespace. - +structType=atomic - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - +optional - type: string - x-go-name: Name - type: object - x-go-package: k8s.io/api/core/v1 - ManagedFieldsEntry: - description: |- - ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource - that the fieldset applies to. - properties: - apiVersion: - description: |- - APIVersion defines the version of this resource that this field set - applies to. The format is "group/version" just like the top-level - APIVersion field. It is necessary to track the version of a field - set because it cannot be automatically converted. - type: string - x-go-name: APIVersion - fieldsType: - description: |- - FieldsType is the discriminator for the different fields format and version. - There is currently only one possible value: "FieldsV1" - type: string - x-go-name: FieldsType - fieldsV1: - $ref: '#/definitions/FieldsV1' - manager: - description: Manager is an identifier of the workflow managing these fields. - type: string - x-go-name: Manager - operation: - $ref: '#/definitions/ManagedFieldsOperationType' - subresource: - description: |- - Subresource is the name of the subresource used to update that object, or - empty string if the object was updated through the main resource. The - value of this field is used to distinguish between managers, even if they - share the same name. For example, a status update will be distinct from a - regular update using the same manager name. - Note that the APIVersion field is not related to the Subresource field and - it always corresponds to the version of the main resource. - type: string - x-go-name: Subresource - time: - description: |- - Time is the timestamp of when the ManagedFields entry was added. The - timestamp will also be updated if a field is added, the manager - changes any of the owned fields value or removes a field. The - timestamp does not update when a field is removed from the entry - because another manager took it over. - +optional - type: string - x-go-name: Time - type: object - x-go-package: k8s.io/apimachinery/pkg/apis/meta/v1 - ManagedFieldsOperationType: - title: ManagedFieldsOperationType is the type of operation which lead to a ManagedFieldsEntry being created. - type: string - x-go-package: k8s.io/apimachinery/pkg/apis/meta/v1 - ManifestFrom: - properties: - artifact: - $ref: '#/definitions/Artifact' - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - Memoize: - description: Memoization enables caching for the Outputs of the template - properties: - cache: - $ref: '#/definitions/Cache' - key: - description: Key is the key to use as the caching key - type: string - x-go-name: Key - maxAge: - description: |- - MaxAge is the maximum age (e.g. "180s", "24h") of an entry that is still considered valid. If an entry is older - than the MaxAge, it will be ignored. - type: string - x-go-name: MaxAge - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - Metadata: - description: Pod metdata - properties: - annotations: - additionalProperties: - type: string - type: object - x-go-name: Annotations - labels: - additionalProperties: - type: string - type: object - x-go-name: Labels - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - MetricLabel: - description: MetricLabel is a single label for a prometheus metric - properties: - key: - type: string - x-go-name: Key - value: - type: string - x-go-name: Value - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - Metrics: - description: Metrics are a list of metrics emitted from a Workflow/Template - properties: - prometheus: - description: Prometheus is a list of prometheus metrics to be emitted - items: - $ref: '#/definitions/Prometheus' - type: array - x-go-name: Prometheus - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - MountPropagationMode: - description: +enum - title: MountPropagationMode describes mount propagation. - type: string - x-go-package: k8s.io/api/core/v1 - Mutex: - description: Mutex holds Mutex configuration - properties: - name: - description: name of the mutex - type: string - x-go-name: Name - namespace: - default: '[namespace of workflow]' - type: string - x-go-name: Namespace - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - NFSVolumeSource: - description: NFS volumes do not support ownership management or SELinux relabeling. - properties: - path: - description: |- - path that is exported by the NFS server. - More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs - type: string - x-go-name: Path - readOnly: - description: |- - readOnly here will force the NFS export to be mounted with read-only permissions. - Defaults to false. - More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs - +optional - type: boolean - x-go-name: ReadOnly - server: - description: |- - server is the hostname or IP address of the NFS server. - More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs - type: string - x-go-name: Server - title: Represents an NFS mount that lasts the lifetime of a pod. - type: object - x-go-package: k8s.io/api/core/v1 - NodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: |- - The scheduler will prefer to schedule pods to nodes that satisfy - the affinity expressions specified by this field, but it may choose - a node that violates one or more of the expressions. The node that is - most preferred is the one with the greatest sum of weights, i.e. - for each node that meets all of the scheduling requirements (resource - request, requiredDuringScheduling affinity expressions, etc.), - compute a sum by iterating through the elements of this field and adding - "weight" to the sum if the node matches the corresponding matchExpressions; the - node(s) with the highest sum are the most preferred. - +optional - items: - $ref: '#/definitions/PreferredSchedulingTerm' - type: array - x-go-name: PreferredDuringSchedulingIgnoredDuringExecution - requiredDuringSchedulingIgnoredDuringExecution: - $ref: '#/definitions/NodeSelector' - title: Node affinity is a group of node affinity scheduling rules. - type: object - x-go-package: k8s.io/api/core/v1 - NodePhase: - title: NodePhase is a label for the condition of a node at the current time. - type: string - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - NodeResult: - properties: - message: - type: string - x-go-name: Message - outputs: - $ref: '#/definitions/Outputs' - phase: - $ref: '#/definitions/NodePhase' - progress: - $ref: '#/definitions/Progress' - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - NodeSelector: - description: |- - A node selector represents the union of the results of one or more label queries - over a set of nodes; that is, it represents the OR of the selectors represented - by the node selector terms. - +structType=atomic - properties: - nodeSelectorTerms: - description: Required. A list of node selector terms. The terms are ORed. - items: - $ref: '#/definitions/NodeSelectorTerm' - type: array - x-go-name: NodeSelectorTerms - type: object - x-go-package: k8s.io/api/core/v1 - NodeSelectorOperator: - description: |- - A node selector operator is the set of operators that can be used in - a node selector requirement. - +enum - type: string - x-go-package: k8s.io/api/core/v1 - NodeSelectorRequirement: - description: |- - A node selector requirement is a selector that contains values, a key, and an operator - that relates the key and values. - properties: - key: - description: The label key that the selector applies to. - type: string - x-go-name: Key - operator: - $ref: '#/definitions/NodeSelectorOperator' - values: - description: |- - An array of string values. If the operator is In or NotIn, - the values array must be non-empty. If the operator is Exists or DoesNotExist, - the values array must be empty. If the operator is Gt or Lt, the values - array must have a single element, which will be interpreted as an integer. - This array is replaced during a strategic merge patch. - +optional - items: - type: string - type: array - x-go-name: Values - type: object - x-go-package: k8s.io/api/core/v1 - NodeSelectorTerm: - description: |- - A null or empty node selector term matches no objects. The requirements of - them are ANDed. - The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. - +structType=atomic - properties: - matchExpressions: - description: |- - A list of node selector requirements by node's labels. - +optional - items: - $ref: '#/definitions/NodeSelectorRequirement' - type: array - x-go-name: MatchExpressions - matchFields: - description: |- - A list of node selector requirements by node's fields. - +optional - items: - $ref: '#/definitions/NodeSelectorRequirement' - type: array - x-go-name: MatchFields - type: object - x-go-package: k8s.io/api/core/v1 - NoneStrategy: - description: |- - NoneStrategy indicates to skip tar process and upload the files or directory tree as independent - files. Note that if the artifact is a directory, the artifact driver must support the ability to - save/load the directory appropriately. - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - OAuth2Auth: - description: OAuth2Auth holds all information for client authentication via OAuth2 tokens - properties: - clientIDSecret: - $ref: '#/definitions/SecretKeySelector' - clientSecretSecret: - $ref: '#/definitions/SecretKeySelector' - endpointParams: - items: - $ref: '#/definitions/OAuth2EndpointParam' - type: array - x-go-name: EndpointParams - scopes: - items: - type: string - type: array - x-go-name: Scopes - tokenURLSecret: - $ref: '#/definitions/SecretKeySelector' - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - OAuth2EndpointParam: - description: EndpointParam is for requesting optional fields that should be sent in the oauth request - properties: - key: - description: Name is the header name - type: string - x-go-name: Key - value: - description: Value is the literal value to use for the header - type: string - x-go-name: Value - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - OSSArtifact: - description: OSSArtifact is the location of an Alibaba Cloud OSS artifact - properties: - accessKeySecret: - $ref: '#/definitions/SecretKeySelector' - bucket: - description: Bucket is the name of the bucket - type: string - x-go-name: Bucket - createBucketIfNotPresent: - description: CreateBucketIfNotPresent tells the driver to attempt to create the OSS bucket for output artifacts, if it doesn't exist - type: boolean - x-go-name: CreateBucketIfNotPresent - endpoint: - description: Endpoint is the hostname of the bucket endpoint - type: string - x-go-name: Endpoint - key: - description: Key is the path in the bucket where the artifact resides - type: string - x-go-name: Key - lifecycleRule: - $ref: '#/definitions/OSSLifecycleRule' - secretKeySecret: - $ref: '#/definitions/SecretKeySelector' - securityToken: - description: 'SecurityToken is the user''s temporary security token. For more details, check out: https://www.alibabacloud.com/help/doc-detail/100624.htm' - type: string - x-go-name: SecurityToken - useSDKCreds: - description: UseSDKCreds tells the driver to figure out credentials based on sdk defaults. - type: boolean - x-go-name: UseSDKCreds - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - OSSLifecycleRule: - description: OSSLifecycleRule specifies how to manage bucket's lifecycle - properties: - markDeletionAfterDays: - description: MarkDeletionAfterDays is the number of days before we delete objects in the bucket - format: int32 - type: integer - x-go-name: MarkDeletionAfterDays - markInfrequentAccessAfterDays: - description: MarkInfrequentAccessAfterDays is the number of days before we convert the objects in the bucket to Infrequent Access (IA) storage type - format: int32 - type: integer - x-go-name: MarkInfrequentAccessAfterDays - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - ObjectFieldSelector: - description: +structType=atomic - properties: - apiVersion: - description: |- - Version of the schema the FieldPath is written in terms of, defaults to "v1". - +optional - type: string - x-go-name: APIVersion - fieldPath: - description: Path of the field to select in the specified API version. - type: string - x-go-name: FieldPath - title: ObjectFieldSelector selects an APIVersioned field of an object. - type: object - x-go-package: k8s.io/api/core/v1 - ObjectMeta: - properties: - name: - type: string - x-go-name: Name - namespace: - type: string - x-go-name: Namespace - uid: - type: string - x-go-name: Uid - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/plugins/executor - Outputs: - description: Outputs hold parameters, artifacts, and results from a step - properties: - artifacts: - $ref: '#/definitions/Artifacts' - exitCode: - description: ExitCode holds the exit code of a script template - type: string - x-go-name: ExitCode - parameters: - description: |- - Parameters holds the list of output parameters produced by a step - +patchStrategy=merge - +patchMergeKey=name - items: - $ref: '#/definitions/Parameter' - type: array - x-go-name: Parameters - result: - description: Result holds the result (stdout) of a script template - type: string - x-go-name: Result - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - OwnerReference: - description: |- - OwnerReference contains enough information to let you identify an owning - object. An owning object must be in the same namespace as the dependent, or - be cluster-scoped, so there is no namespace field. - +structType=atomic - properties: - apiVersion: - description: API version of the referent. - type: string - x-go-name: APIVersion - blockOwnerDeletion: - description: |- - If true, AND if the owner has the "foregroundDeletion" finalizer, then - the owner cannot be deleted from the key-value store until this - reference is removed. - See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion - for how the garbage collector interacts with this field and enforces the foreground deletion. - Defaults to false. - To set this field, a user needs "delete" permission of the owner, - otherwise 422 (Unprocessable Entity) will be returned. - +optional - type: boolean - x-go-name: BlockOwnerDeletion - controller: - description: |- - If true, this reference points to the managing controller. - +optional - type: boolean - x-go-name: Controller - kind: - description: |- - Kind of the referent. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - type: string - x-go-name: Kind - name: - description: |- - Name of the referent. - More info: http://kubernetes.io/docs/user-guide/identifiers#names - type: string - x-go-name: Name - uid: - $ref: '#/definitions/UID' - type: object - x-go-package: k8s.io/apimachinery/pkg/apis/meta/v1 - ParallelSteps: - description: +kubebuilder:validation:Type=array - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - Parameter: - description: Parameter indicate a passed string parameter to a service template with an optional default value - properties: - default: - $ref: '#/definitions/AnyString' - description: - $ref: '#/definitions/AnyString' - enum: - description: Enum holds a list of string values to choose from, for the actual value of the parameter - items: - $ref: '#/definitions/AnyString' - type: array - x-go-name: Enum - globalName: - description: |- - GlobalName exports an output parameter to the global scope, making it available as - '{{workflow.outputs.parameters.XXXX}} and in workflow.status.outputs.parameters - type: string - x-go-name: GlobalName - name: - description: Name is the parameter name - type: string - x-go-name: Name - value: - $ref: '#/definitions/AnyString' - valueFrom: - $ref: '#/definitions/ValueFrom' - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - PersistentVolumeAccessMode: - description: +enum - type: string - x-go-package: k8s.io/api/core/v1 - PersistentVolumeClaimSpec: - description: |- - PersistentVolumeClaimSpec describes the common attributes of storage devices - and allows a Source for provider-specific attributes - properties: - accessModes: - description: |- - accessModes contains the desired access modes the volume should have. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 - +optional - items: - $ref: '#/definitions/PersistentVolumeAccessMode' - type: array - x-go-name: AccessModes - dataSource: - $ref: '#/definitions/TypedLocalObjectReference' - dataSourceRef: - $ref: '#/definitions/TypedLocalObjectReference' - resources: - $ref: '#/definitions/ResourceRequirements' - selector: - $ref: '#/definitions/LabelSelector' - storageClassName: - description: |- - storageClassName is the name of the StorageClass required by the claim. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1 - +optional - type: string - x-go-name: StorageClassName - volumeMode: - $ref: '#/definitions/PersistentVolumeMode' - volumeName: - description: |- - volumeName is the binding reference to the PersistentVolume backing this claim. - +optional - type: string - x-go-name: VolumeName - type: object - x-go-package: k8s.io/api/core/v1 - PersistentVolumeClaimTemplate: - description: |- - PersistentVolumeClaimTemplate is used to produce - PersistentVolumeClaim objects as part of an EphemeralVolumeSource. - properties: - annotations: - additionalProperties: - type: string - description: |- - Annotations is an unstructured key value map stored with a resource that may be - set by external tools to store and retrieve arbitrary metadata. They are not - queryable and should be preserved when modifying objects. - More info: http://kubernetes.io/docs/user-guide/annotations - +optional - type: object - x-go-name: Annotations - clusterName: - description: |- - Deprecated: ClusterName is a legacy field that was always cleared by - the system and never used; it will be removed completely in 1.25. - - The name in the go struct is changed to help clients detect - accidental use. - - +optional - type: string - x-go-name: ZZZ_DeprecatedClusterName - creationTimestamp: - description: |- - CreationTimestamp is a timestamp representing the server time when this object was - created. It is not guaranteed to be set in happens-before order across separate operations. - Clients may not set this value. It is represented in RFC3339 form and is in UTC. - - Populated by the system. - Read-only. - Null for lists. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - +optional - type: string - x-go-name: CreationTimestamp - deletionGracePeriodSeconds: - description: |- - Number of seconds allowed for this object to gracefully terminate before - it will be removed from the system. Only set when deletionTimestamp is also set. - May only be shortened. - Read-only. - +optional - format: int64 - type: integer - x-go-name: DeletionGracePeriodSeconds - deletionTimestamp: - description: |- - DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This - field is set by the server when a graceful deletion is requested by the user, and is not - directly settable by a client. The resource is expected to be deleted (no longer visible - from resource lists, and not reachable by name) after the time in this field, once the - finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. - Once the deletionTimestamp is set, this value may not be unset or be set further into the - future, although it may be shortened or the resource may be deleted prior to this time. - For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react - by sending a graceful termination signal to the containers in the pod. After that 30 seconds, - the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, - remove the pod from the API. In the presence of network partitions, this object may still - exist after this timestamp, until an administrator or automated process can determine the - resource is fully terminated. - If not set, graceful deletion of the object has not been requested. - - Populated by the system when a graceful deletion is requested. - Read-only. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - +optional - type: string - x-go-name: DeletionTimestamp - finalizers: - description: |- - Must be empty before the object is deleted from the registry. Each entry - is an identifier for the responsible component that will remove the entry - from the list. If the deletionTimestamp of the object is non-nil, entries - in this list can only be removed. - Finalizers may be processed and removed in any order. Order is NOT enforced - because it introduces significant risk of stuck finalizers. - finalizers is a shared field, any actor with permission can reorder it. - If the finalizer list is processed in order, then this can lead to a situation - in which the component responsible for the first finalizer in the list is - waiting for a signal (field value, external system, or other) produced by a - component responsible for a finalizer later in the list, resulting in a deadlock. - Without enforced ordering finalizers are free to order amongst themselves and - are not vulnerable to ordering changes in the list. - +optional - +patchStrategy=merge - items: - type: string - type: array - x-go-name: Finalizers - generateName: - description: |- - GenerateName is an optional prefix, used by the server, to generate a unique - name ONLY IF the Name field has not been provided. - If this field is used, the name returned to the client will be different - than the name passed. This value will also be combined with a unique suffix. - The provided value has the same validation rules as the Name field, - and may be truncated by the length of the suffix required to make the value - unique on the server. - - If this field is specified and the generated name exists, the server will return a 409. - - Applied only if Name is not specified. - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency - +optional - type: string - x-go-name: GenerateName - generation: - description: |- - A sequence number representing a specific generation of the desired state. - Populated by the system. Read-only. - +optional - format: int64 - type: integer - x-go-name: Generation - labels: - additionalProperties: - type: string - description: |- - Map of string keys and values that can be used to organize and categorize - (scope and select) objects. May match selectors of replication controllers - and services. - More info: http://kubernetes.io/docs/user-guide/labels - +optional - type: object - x-go-name: Labels - managedFields: - description: |- - ManagedFields maps workflow-id and version to the set of fields - that are managed by that workflow. This is mostly for internal - housekeeping, and users typically shouldn't need to set or - understand this field. A workflow can be the user's name, a - controller's name, or the name of a specific apply path like - "ci-cd". The set of fields is always in the version that the - workflow used when modifying the object. - - +optional - items: - $ref: '#/definitions/ManagedFieldsEntry' - type: array - x-go-name: ManagedFields - name: - description: |- - Name must be unique within a namespace. Is required when creating resources, although - some resources may allow a client to request the generation of an appropriate name - automatically. Name is primarily intended for creation idempotence and configuration - definition. - Cannot be updated. - More info: http://kubernetes.io/docs/user-guide/identifiers#names - +optional - type: string - x-go-name: Name - namespace: - description: |- - Namespace defines the space within which each name must be unique. An empty namespace is - equivalent to the "default" namespace, but "default" is the canonical representation. - Not all objects are required to be scoped to a namespace - the value of this field for - those objects will be empty. - - Must be a DNS_LABEL. - Cannot be updated. - More info: http://kubernetes.io/docs/user-guide/namespaces - +optional - type: string - x-go-name: Namespace - ownerReferences: - description: |- - List of objects depended by this object. If ALL objects in the list have - been deleted, this object will be garbage collected. If this object is managed by a controller, - then an entry in this list will point to this controller, with the controller field set to true. - There cannot be more than one managing controller. - +optional - +patchMergeKey=uid - +patchStrategy=merge - items: - $ref: '#/definitions/OwnerReference' - type: array - x-go-name: OwnerReferences - resourceVersion: - description: |- - An opaque value that represents the internal version of this object that can - be used by clients to determine when objects have changed. May be used for optimistic - concurrency, change detection, and the watch operation on a resource or set of resources. - Clients must treat these values as opaque and passed unmodified back to the server. - They may only be valid for a particular resource or set of resources. - - Populated by the system. - Read-only. - Value must be treated as opaque by clients and . - More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency - +optional - type: string - x-go-name: ResourceVersion - selfLink: - description: |- - Deprecated: selfLink is a legacy read-only field that is no longer populated by the system. - +optional - type: string - x-go-name: SelfLink - spec: - $ref: '#/definitions/PersistentVolumeClaimSpec' - uid: - $ref: '#/definitions/UID' - type: object - x-go-package: k8s.io/api/core/v1 - PersistentVolumeClaimVolumeSource: - description: |- - This volume finds the bound PV and mounts that volume for the pod. A - PersistentVolumeClaimVolumeSource is, essentially, a wrapper around another - type of volume that is owned by someone else (the system). - properties: - claimName: - description: |- - claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims - type: string - x-go-name: ClaimName - readOnly: - description: |- - readOnly Will force the ReadOnly setting in VolumeMounts. - Default false. - +optional - type: boolean - x-go-name: ReadOnly - title: PersistentVolumeClaimVolumeSource references the user's PVC in the same namespace. - type: object - x-go-package: k8s.io/api/core/v1 - PersistentVolumeMode: - description: +enum - title: PersistentVolumeMode describes how a volume is intended to be consumed, either Block or Filesystem. - type: string - x-go-package: k8s.io/api/core/v1 - PhotonPersistentDiskVolumeSource: - properties: - fsType: - description: |- - fsType is the filesystem type to mount. - Must be a filesystem type supported by the host operating system. - Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - x-go-name: FSType - pdID: - description: pdID is the ID that identifies Photon Controller persistent disk - type: string - x-go-name: PdID - title: Represents a Photon Controller persistent disk resource. - type: object - x-go-package: k8s.io/api/core/v1 - Plugin: - description: Plugin is an Object with exactly one key - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - PodAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: |- - The scheduler will prefer to schedule pods to nodes that satisfy - the affinity expressions specified by this field, but it may choose - a node that violates one or more of the expressions. The node that is - most preferred is the one with the greatest sum of weights, i.e. - for each node that meets all of the scheduling requirements (resource - request, requiredDuringScheduling affinity expressions, etc.), - compute a sum by iterating through the elements of this field and adding - "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the - node(s) with the highest sum are the most preferred. - +optional - items: - $ref: '#/definitions/WeightedPodAffinityTerm' - type: array - x-go-name: PreferredDuringSchedulingIgnoredDuringExecution - requiredDuringSchedulingIgnoredDuringExecution: - description: |- - If the affinity requirements specified by this field are not met at - scheduling time, the pod will not be scheduled onto the node. - If the affinity requirements specified by this field cease to be met - at some point during pod execution (e.g. due to a pod label update), the - system may or may not try to eventually evict the pod from its node. - When there are multiple elements, the lists of nodes corresponding to each - podAffinityTerm are intersected, i.e. all terms must be satisfied. - +optional - items: - $ref: '#/definitions/PodAffinityTerm' - type: array - x-go-name: RequiredDuringSchedulingIgnoredDuringExecution - title: Pod affinity is a group of inter pod affinity scheduling rules. - type: object - x-go-package: k8s.io/api/core/v1 - PodAffinityTerm: - description: |- - Defines a set of pods (namely those matching the labelSelector - relative to the given namespace(s)) that this pod should be - co-located (affinity) or not co-located (anti-affinity) with, - where co-located is defined as running on a node whose value of - the label with key matches that of any node on which - a pod of the set of pods is running - properties: - labelSelector: - $ref: '#/definitions/LabelSelector' - namespaceSelector: - $ref: '#/definitions/LabelSelector' - namespaces: - description: |- - namespaces specifies a static list of namespace names that the term applies to. - The term is applied to the union of the namespaces listed in this field - and the ones selected by namespaceSelector. - null or empty namespaces list and null namespaceSelector means "this pod's namespace". - +optional - items: - type: string - type: array - x-go-name: Namespaces - topologyKey: - description: |- - This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching - the labelSelector in the specified namespaces, where co-located is defined as running on a node - whose value of the label with key topologyKey matches that of any node on which any of the - selected pods is running. - Empty topologyKey is not allowed. - type: string - x-go-name: TopologyKey - type: object - x-go-package: k8s.io/api/core/v1 - PodAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: |- - The scheduler will prefer to schedule pods to nodes that satisfy - the anti-affinity expressions specified by this field, but it may choose - a node that violates one or more of the expressions. The node that is - most preferred is the one with the greatest sum of weights, i.e. - for each node that meets all of the scheduling requirements (resource - request, requiredDuringScheduling anti-affinity expressions, etc.), - compute a sum by iterating through the elements of this field and adding - "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the - node(s) with the highest sum are the most preferred. - +optional - items: - $ref: '#/definitions/WeightedPodAffinityTerm' - type: array - x-go-name: PreferredDuringSchedulingIgnoredDuringExecution - requiredDuringSchedulingIgnoredDuringExecution: - description: |- - If the anti-affinity requirements specified by this field are not met at - scheduling time, the pod will not be scheduled onto the node. - If the anti-affinity requirements specified by this field cease to be met - at some point during pod execution (e.g. due to a pod label update), the - system may or may not try to eventually evict the pod from its node. - When there are multiple elements, the lists of nodes corresponding to each - podAffinityTerm are intersected, i.e. all terms must be satisfied. - +optional - items: - $ref: '#/definitions/PodAffinityTerm' - type: array - x-go-name: RequiredDuringSchedulingIgnoredDuringExecution - title: Pod anti affinity is a group of inter pod anti affinity scheduling rules. - type: object - x-go-package: k8s.io/api/core/v1 - PodFSGroupChangePolicy: - description: |- - PodFSGroupChangePolicy holds policies that will be used for applying fsGroup to a volume - when volume is mounted. - +enum - type: string - x-go-package: k8s.io/api/core/v1 - PodSecurityContext: - description: |- - Some fields are also present in container.securityContext. Field values of - container.securityContext take precedence over field values of PodSecurityContext. - properties: - fsGroup: - description: |- - A special supplemental group that applies to all containers in a pod. - Some volume types allow the Kubelet to change the ownership of that volume - to be owned by the pod: - - 1. The owning GID will be the FSGroup - 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) - 3. The permission bits are OR'd with rw-rw---- - - If unset, the Kubelet will not modify the ownership and permissions of any volume. - Note that this field cannot be set when spec.os.name is windows. - +optional - format: int64 - type: integer - x-go-name: FSGroup - fsGroupChangePolicy: - $ref: '#/definitions/PodFSGroupChangePolicy' - runAsGroup: - description: |- - The GID to run the entrypoint of the container process. - Uses runtime default if unset. - May also be set in SecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence - for that container. - Note that this field cannot be set when spec.os.name is windows. - +optional - format: int64 - type: integer - x-go-name: RunAsGroup - runAsNonRoot: - description: |- - Indicates that the container must run as a non-root user. - If true, the Kubelet will validate the image at runtime to ensure that it - does not run as UID 0 (root) and fail to start the container if it does. - If unset or false, no such validation will be performed. - May also be set in SecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - +optional - type: boolean - x-go-name: RunAsNonRoot - runAsUser: - description: |- - The UID to run the entrypoint of the container process. - Defaults to user specified in image metadata if unspecified. - May also be set in SecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence - for that container. - Note that this field cannot be set when spec.os.name is windows. - +optional - format: int64 - type: integer - x-go-name: RunAsUser - seLinuxOptions: - $ref: '#/definitions/SELinuxOptions' - seccompProfile: - $ref: '#/definitions/SeccompProfile' - supplementalGroups: - description: |- - A list of groups applied to the first process run in each container, in addition - to the container's primary GID. If unspecified, no groups will be added to - any container. - Note that this field cannot be set when spec.os.name is windows. - +optional - items: - format: int64 - type: integer - type: array - x-go-name: SupplementalGroups - sysctls: - description: |- - Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported - sysctls (by the container runtime) might fail to launch. - Note that this field cannot be set when spec.os.name is windows. - +optional - items: - $ref: '#/definitions/Sysctl' - type: array - x-go-name: Sysctls - windowsOptions: - $ref: '#/definitions/WindowsSecurityContextOptions' - title: PodSecurityContext holds pod-level security attributes and common container settings. - type: object - x-go-package: k8s.io/api/core/v1 - PortworxVolumeSource: - properties: - fsType: - description: |- - fSType represents the filesystem type to mount - Must be a filesystem type supported by the host operating system. - Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified. - type: string - x-go-name: FSType - readOnly: - description: |- - readOnly defaults to false (read/write). ReadOnly here will force - the ReadOnly setting in VolumeMounts. - +optional - type: boolean - x-go-name: ReadOnly - volumeID: - description: volumeID uniquely identifies a Portworx volume - type: string - x-go-name: VolumeID - title: PortworxVolumeSource represents a Portworx volume resource. - type: object - x-go-package: k8s.io/api/core/v1 - PreferredSchedulingTerm: - description: |- - An empty preferred scheduling term matches all objects with implicit weight 0 - (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). - properties: - preference: - $ref: '#/definitions/NodeSelectorTerm' - weight: - description: Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. - format: int32 - type: integer - x-go-name: Weight - type: object - x-go-package: k8s.io/api/core/v1 - Probe: - description: |- - Probe describes a health check to be performed against a container to determine whether it is - alive or ready to receive traffic. - properties: - exec: - $ref: '#/definitions/ExecAction' - failureThreshold: - description: |- - Minimum consecutive failures for the probe to be considered failed after having succeeded. - Defaults to 3. Minimum value is 1. - +optional - format: int32 - type: integer - x-go-name: FailureThreshold - grpc: - $ref: '#/definitions/GRPCAction' - httpGet: - $ref: '#/definitions/HTTPGetAction' - initialDelaySeconds: - description: |- - Number of seconds after the container has started before liveness probes are initiated. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes - +optional - format: int32 - type: integer - x-go-name: InitialDelaySeconds - periodSeconds: - description: |- - How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - +optional - format: int32 - type: integer - x-go-name: PeriodSeconds - successThreshold: - description: |- - Minimum consecutive successes for the probe to be considered successful after having failed. - Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. - +optional - format: int32 - type: integer - x-go-name: SuccessThreshold - tcpSocket: - $ref: '#/definitions/TCPSocketAction' - terminationGracePeriodSeconds: - description: |- - Optional duration in seconds the pod needs to terminate gracefully upon probe failure. - The grace period is the duration in seconds after the processes running in the pod are sent - a termination signal and the time when the processes are forcibly halted with a kill signal. - Set this value longer than the expected cleanup time for your process. - If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this - value overrides the value provided by the pod spec. - Value must be non-negative integer. The value zero indicates stop immediately via - the kill signal (no opportunity to shut down). - This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. - Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. - +optional - format: int64 - type: integer - x-go-name: TerminationGracePeriodSeconds - timeoutSeconds: - description: |- - Number of seconds after which the probe times out. - Defaults to 1 second. Minimum value is 1. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes - +optional - format: int32 - type: integer - x-go-name: TimeoutSeconds - type: object - x-go-package: k8s.io/api/core/v1 - ProcMountType: - description: +enum - type: string - x-go-package: k8s.io/api/core/v1 - Progress: - title: Progress in N/M format. N is number of task complete. M is number of tasks. - type: string - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - ProjectedVolumeSource: - description: Represents a projected volume source - properties: - defaultMode: - description: |- - defaultMode are the mode bits used to set permissions on created files by default. - Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. - YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. - Directories within the path are not affected by this setting. - This might be in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode bits set. - +optional - format: int32 - type: integer - x-go-name: DefaultMode - sources: - description: |- - sources is the list of volume projections - +optional - items: - $ref: '#/definitions/VolumeProjection' - type: array - x-go-name: Sources - type: object - x-go-package: k8s.io/api/core/v1 - Prometheus: - description: Prometheus is a prometheus metric to be emitted - properties: - counter: - $ref: '#/definitions/Counter' - gauge: - $ref: '#/definitions/Gauge' - help: - description: Help is a string that describes the metric - type: string - x-go-name: Help - histogram: - $ref: '#/definitions/Histogram' - labels: - description: Labels is a list of metric labels - items: - $ref: '#/definitions/MetricLabel' - type: array - x-go-name: Labels - name: - description: Name is the name of the metric - type: string - x-go-name: Name - when: - description: When is a conditional statement that decides when to emit the metric - type: string - x-go-name: When - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - Protocol: - description: +enum - title: Protocol defines network protocols supported for things like container ports. - type: string - x-go-package: k8s.io/api/core/v1 - PullPolicy: - description: |- - PullPolicy describes a policy for if/when to pull a container image - +enum - type: string - x-go-package: k8s.io/api/core/v1 - Quantity: - description: |- - The serialization format is: - - ::= - (Note that may be empty, from the "" case in .) - ::= 0 | 1 | ... | 9 - ::= | - ::= | . | . | . - ::= "+" | "-" - ::= | - ::= | | - ::= Ki | Mi | Gi | Ti | Pi | Ei - (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html) - ::= m | "" | k | M | G | T | P | E - (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.) - ::= "e" | "E" - - No matter which of the three exponent forms is used, no quantity may represent - a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal - places. Numbers larger or more precise will be capped or rounded up. - (E.g.: 0.1m will rounded up to 1m.) - This may be extended in the future if we require larger or smaller quantities. - - When a Quantity is parsed from a string, it will remember the type of suffix - it had, and will use the same type again when it is serialized. - - Before serializing, Quantity will be put in "canonical form". - This means that Exponent/suffix will be adjusted up or down (with a - corresponding increase or decrease in Mantissa) such that: - a. No precision is lost - b. No fractional digits will be emitted - c. The exponent (or suffix) is as large as possible. - The sign will be omitted unless the number is negative. - - Examples: - 1.5 will be serialized as "1500m" - 1.5Gi will be serialized as "1536Mi" - - Note that the quantity will NEVER be internally represented by a - floating point number. That is the whole point of this exercise. - - Non-canonical values will still parse as long as they are well formed, - but will be re-emitted in their canonical form. (So always use canonical - form, or don't diff.) - - This format is intended to make it difficult to use these numbers without - writing some sort of special handling code in the hopes that that will - cause implementors to also use a fixed point implementation. - - +protobuf=true - +protobuf.embed=string - +protobuf.options.marshal=false - +protobuf.options.(gogoproto.goproto_stringer)=false - +k8s:deepcopy-gen=true - +k8s:openapi-gen=true - title: |- - Quantity is a fixed-point representation of a number. - It provides convenient marshaling/unmarshaling in JSON and YAML, - in addition to String() and AsInt64() accessors. - type: object - x-go-package: k8s.io/apimachinery/pkg/api/resource - QuobyteVolumeSource: - description: Quobyte volumes do not support ownership management or SELinux relabeling. - properties: - group: - description: |- - group to map volume access to - Default is no group - +optional - type: string - x-go-name: Group - readOnly: - description: |- - readOnly here will force the Quobyte volume to be mounted with read-only permissions. - Defaults to false. - +optional - type: boolean - x-go-name: ReadOnly - registry: - description: |- - registry represents a single or multiple Quobyte Registry services - specified as a string as host:port pair (multiple entries are separated with commas) - which acts as the central registry for volumes - type: string - x-go-name: Registry - tenant: - description: |- - tenant owning the given Quobyte volume in the Backend - Used with dynamically provisioned Quobyte volumes, value is set by the plugin - +optional - type: string - x-go-name: Tenant - user: - description: |- - user to map volume access to - Defaults to serivceaccount user - +optional - type: string - x-go-name: User - volume: - description: volume is a string that references an already created Quobyte volume by name. - type: string - x-go-name: Volume - title: Represents a Quobyte mount that lasts the lifetime of a pod. - type: object - x-go-package: k8s.io/api/core/v1 - RBDVolumeSource: - description: RBD volumes support ownership management and SELinux relabeling. - properties: - fsType: - description: |- - fsType is the filesystem type of the volume that you want to mount. - Tip: Ensure that the filesystem type is supported by the host operating system. - Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd - TODO: how do we prevent errors in the filesystem from compromising the machine - +optional - type: string - x-go-name: FSType - image: - description: |- - image is the rados image name. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - type: string - x-go-name: RBDImage - keyring: - description: |- - keyring is the path to key ring for RBDUser. - Default is /etc/ceph/keyring. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - +optional - type: string - x-go-name: Keyring - monitors: - description: |- - monitors is a collection of Ceph monitors. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - items: - type: string - type: array - x-go-name: CephMonitors - pool: - description: |- - pool is the rados pool name. - Default is rbd. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - +optional - type: string - x-go-name: RBDPool - readOnly: - description: |- - readOnly here will force the ReadOnly setting in VolumeMounts. - Defaults to false. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - +optional - type: boolean - x-go-name: ReadOnly - secretRef: - $ref: '#/definitions/LocalObjectReference' - user: - description: |- - user is the rados user name. - Default is admin. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it - +optional - type: string - x-go-name: RadosUser - title: Represents a Rados Block Device mount that lasts the lifetime of a pod. - type: object - x-go-package: k8s.io/api/core/v1 - RawArtifact: - description: RawArtifact allows raw string content to be placed as an artifact in a container - properties: - data: - description: Data is the string contents of the artifact - type: string - x-go-name: Data - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - ResourceFieldSelector: - description: |- - ResourceFieldSelector represents container resources (cpu, memory) and their output format - +structType=atomic - properties: - containerName: - description: |- - Container name: required for volumes, optional for env vars - +optional - type: string - x-go-name: ContainerName - divisor: - $ref: '#/definitions/Quantity' - resource: - description: 'Required: resource to select' - type: string - x-go-name: Resource - type: object - x-go-package: k8s.io/api/core/v1 - ResourceList: - additionalProperties: - $ref: '#/definitions/Quantity' - title: ResourceList is a set of (resource name, quantity) pairs. - type: object - x-go-package: k8s.io/api/core/v1 - ResourceRequirements: - properties: - limits: - $ref: '#/definitions/ResourceList' - requests: - $ref: '#/definitions/ResourceList' - title: ResourceRequirements describes the compute resource requirements. - type: object - x-go-package: k8s.io/api/core/v1 - ResourceTemplate: - description: ResourceTemplate is a template subtype to manipulate kubernetes resources - properties: - action: - description: |- - Action is the action to perform to the resource. - Must be one of: get, create, apply, delete, replace, patch - type: string - x-go-name: Action - failureCondition: - description: |- - FailureCondition is a label selector expression which describes the conditions - of the k8s resource in which the step was considered failed - type: string - x-go-name: FailureCondition - flags: - description: |- - Flags is a set of additional options passed to kubectl before submitting a resource - I.e. to disable resource validation: - flags: [ - "--validate=false" # disable resource validation - ] - items: - type: string - type: array - x-go-name: Flags - manifest: - description: Manifest contains the kubernetes manifest - type: string - x-go-name: Manifest - manifestFrom: - $ref: '#/definitions/ManifestFrom' - mergeStrategy: - description: |- - MergeStrategy is the strategy used to merge a patch. It defaults to "strategic" - Must be one of: strategic, merge, json - type: string - x-go-name: MergeStrategy - setOwnerReference: - description: SetOwnerReference sets the reference to the workflow on the OwnerReference of generated resource. - type: boolean - x-go-name: SetOwnerReference - successCondition: - description: |- - SuccessCondition is a label selector expression which describes the conditions - of the k8s resource in which it is acceptable to proceed to the following step - type: string - x-go-name: SuccessCondition - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - RetryAffinity: - properties: - nodeAntiAffinity: - $ref: '#/definitions/RetryNodeAntiAffinity' - title: RetryAffinity prevents running steps on the same host. - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - RetryNodeAntiAffinity: - description: In order to prevent running steps on the same host, it uses "kubernetes.io/hostname". - title: RetryNodeAntiAffinity is a placeholder for future expansion, only empty nodeAntiAffinity is allowed. - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - RetryPolicy: - type: string - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - RetryStrategy: - description: RetryStrategy provides controls on how to retry a workflow step - properties: - affinity: - $ref: '#/definitions/RetryAffinity' - backoff: - $ref: '#/definitions/Backoff' - expression: - description: |- - Expression is a condition expression for when a node will be retried. If it evaluates to false, the node will not - be retried and the retry strategy will be ignored - type: string - x-go-name: Expression - limit: - $ref: '#/definitions/IntOrString' - retryPolicy: - $ref: '#/definitions/RetryPolicy' - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - S3Artifact: - description: S3Artifact is the location of an S3 artifact - properties: - accessKeySecret: - $ref: '#/definitions/SecretKeySelector' - bucket: - description: Bucket is the name of the bucket - type: string - x-go-name: Bucket - caSecret: - $ref: '#/definitions/SecretKeySelector' - createBucketIfNotPresent: - $ref: '#/definitions/CreateS3BucketOptions' - encryptionOptions: - $ref: '#/definitions/S3EncryptionOptions' - endpoint: - description: Endpoint is the hostname of the bucket endpoint - type: string - x-go-name: Endpoint - insecure: - description: Insecure will connect to the service with TLS - type: boolean - x-go-name: Insecure - key: - description: Key is the key in the bucket where the artifact resides - type: string - x-go-name: Key - region: - description: Region contains the optional bucket region - type: string - x-go-name: Region - roleARN: - description: RoleARN is the Amazon Resource Name (ARN) of the role to assume. - type: string - x-go-name: RoleARN - secretKeySecret: - $ref: '#/definitions/SecretKeySelector' - useSDKCreds: - description: UseSDKCreds tells the driver to figure out credentials based on sdk defaults. - type: boolean - x-go-name: UseSDKCreds - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - S3EncryptionOptions: - description: S3EncryptionOptions used to determine encryption options during s3 operations - properties: - enableEncryption: - description: EnableEncryption tells the driver to encrypt objects if set to true. If kmsKeyId and serverSideCustomerKeySecret are not set, SSE-S3 will be used - type: boolean - x-go-name: EnableEncryption - kmsEncryptionContext: - description: KmsEncryptionContext is a json blob that contains an encryption context. See https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context for more information - type: string - x-go-name: KmsEncryptionContext - kmsKeyId: - description: KMSKeyId tells the driver to encrypt the object using the specified KMS Key. - type: string - x-go-name: KmsKeyId - serverSideCustomerKeySecret: - $ref: '#/definitions/SecretKeySelector' - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - SELinuxOptions: - description: SELinuxOptions are the labels to be applied to the container - properties: - level: - description: |- - Level is SELinux level label that applies to the container. - +optional - type: string - x-go-name: Level - role: - description: |- - Role is a SELinux role label that applies to the container. - +optional - type: string - x-go-name: Role - type: - description: |- - Type is a SELinux type label that applies to the container. - +optional - type: string - x-go-name: Type - user: - description: |- - User is a SELinux user label that applies to the container. - +optional - type: string - x-go-name: User - type: object - x-go-package: k8s.io/api/core/v1 - ScaleIOVolumeSource: - description: ScaleIOVolumeSource represents a persistent ScaleIO volume - properties: - fsType: - description: |- - fsType is the filesystem type to mount. - Must be a filesystem type supported by the host operating system. - Ex. "ext4", "xfs", "ntfs". - Default is "xfs". - +optional - type: string - x-go-name: FSType - gateway: - description: gateway is the host address of the ScaleIO API Gateway. - type: string - x-go-name: Gateway - protectionDomain: - description: |- - protectionDomain is the name of the ScaleIO Protection Domain for the configured storage. - +optional - type: string - x-go-name: ProtectionDomain - readOnly: - description: |- - readOnly Defaults to false (read/write). ReadOnly here will force - the ReadOnly setting in VolumeMounts. - +optional - type: boolean - x-go-name: ReadOnly - secretRef: - $ref: '#/definitions/LocalObjectReference' - sslEnabled: - description: |- - sslEnabled Flag enable/disable SSL communication with Gateway, default false - +optional - type: boolean - x-go-name: SSLEnabled - storageMode: - description: |- - storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. - Default is ThinProvisioned. - +optional - type: string - x-go-name: StorageMode - storagePool: - description: |- - storagePool is the ScaleIO Storage Pool associated with the protection domain. - +optional - type: string - x-go-name: StoragePool - system: - description: system is the name of the storage system as configured in ScaleIO. - type: string - x-go-name: System - volumeName: - description: |- - volumeName is the name of a volume already created in the ScaleIO system - that is associated with this volume source. - type: string - x-go-name: VolumeName - type: object - x-go-package: k8s.io/api/core/v1 - ScriptTemplate: - description: ScriptTemplate is a template subtype to enable scripting through code steps - properties: - args: - description: |- - Arguments to the entrypoint. - The container image's CMD is used if this is not provided. - Variable references $(VAR_NAME) are expanded using the container's environment. If a variable - cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will - produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless - of whether the variable exists or not. Cannot be updated. - More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell - +optional - items: - type: string - type: array - x-go-name: Args - command: - description: |- - Entrypoint array. Not executed within a shell. - The container image's ENTRYPOINT is used if this is not provided. - Variable references $(VAR_NAME) are expanded using the container's environment. If a variable - cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will - produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless - of whether the variable exists or not. Cannot be updated. - More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell - +optional - items: - type: string - type: array - x-go-name: Command - env: - description: |- - List of environment variables to set in the container. - Cannot be updated. - +optional - +patchMergeKey=name - +patchStrategy=merge - items: - $ref: '#/definitions/EnvVar' - type: array - x-go-name: Env - envFrom: - description: |- - List of sources to populate environment variables in the container. - The keys defined within a source must be a C_IDENTIFIER. All invalid keys - will be reported as an event when the container is starting. When a key exists in multiple - sources, the value associated with the last source will take precedence. - Values defined by an Env with a duplicate key will take precedence. - Cannot be updated. - +optional - items: - $ref: '#/definitions/EnvFromSource' - type: array - x-go-name: EnvFrom - image: - description: |- - Container image name. - More info: https://kubernetes.io/docs/concepts/containers/images - This field is optional to allow higher level config management to default or override - container images in workload controllers like Deployments and StatefulSets. - +optional - type: string - x-go-name: Image - imagePullPolicy: - $ref: '#/definitions/PullPolicy' - lifecycle: - $ref: '#/definitions/Lifecycle' - livenessProbe: - $ref: '#/definitions/Probe' - name: - description: |- - Name of the container specified as a DNS_LABEL. - Each container in a pod must have a unique name (DNS_LABEL). - Cannot be updated. - type: string - x-go-name: Name - ports: - description: |- - List of ports to expose from the container. Exposing a port here gives - the system additional information about the network connections a - container uses, but is primarily informational. Not specifying a port here - DOES NOT prevent that port from being exposed. Any port which is - listening on the default "0.0.0.0" address inside a container will be - accessible from the network. - Cannot be updated. - +optional - +patchMergeKey=containerPort - +patchStrategy=merge - +listType=map - +listMapKey=containerPort - +listMapKey=protocol - items: - $ref: '#/definitions/ContainerPort' - type: array - x-go-name: Ports - readinessProbe: - $ref: '#/definitions/Probe' - resources: - $ref: '#/definitions/ResourceRequirements' - securityContext: - $ref: '#/definitions/SecurityContext' - source: - description: Source contains the source code of the script to execute - type: string - x-go-name: Source - startupProbe: - $ref: '#/definitions/Probe' - stdin: - description: |- - Whether this container should allocate a buffer for stdin in the container runtime. If this - is not set, reads from stdin in the container will always result in EOF. - Default is false. - +optional - type: boolean - x-go-name: Stdin - stdinOnce: - description: |- - Whether the container runtime should close the stdin channel after it has been opened by - a single attach. When stdin is true the stdin stream will remain open across multiple attach - sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the - first client attaches to stdin, and then remains open and accepts data until the client disconnects, - at which time stdin is closed and remains closed until the container is restarted. If this - flag is false, a container processes that reads from stdin will never receive an EOF. - Default is false - +optional - type: boolean - x-go-name: StdinOnce - terminationMessagePath: - description: |- - Optional: Path at which the file to which the container's termination message - will be written is mounted into the container's filesystem. - Message written is intended to be brief final status, such as an assertion failure message. - Will be truncated by the node if greater than 4096 bytes. The total message length across - all containers will be limited to 12kb. - Defaults to /dev/termination-log. - Cannot be updated. - +optional - type: string - x-go-name: TerminationMessagePath - terminationMessagePolicy: - $ref: '#/definitions/TerminationMessagePolicy' - tty: - description: |- - Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. - Default is false. - +optional - type: boolean - x-go-name: TTY - volumeDevices: - description: |- - volumeDevices is the list of block devices to be used by the container. - +patchMergeKey=devicePath - +patchStrategy=merge - +optional - items: - $ref: '#/definitions/VolumeDevice' - type: array - x-go-name: VolumeDevices - volumeMounts: - description: |- - Pod volumes to mount into the container's filesystem. - Cannot be updated. - +optional - +patchMergeKey=mountPath - +patchStrategy=merge - items: - $ref: '#/definitions/VolumeMount' - type: array - x-go-name: VolumeMounts - workingDir: - description: |- - Container's working directory. - If not specified, the container runtime's default will be used, which - might be configured in the container image. - Cannot be updated. - +optional - type: string - x-go-name: WorkingDir - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - SeccompProfile: - description: |- - Only one profile source may be set. - +union - properties: - localhostProfile: - description: |- - localhostProfile indicates a profile defined in a file on the node should be used. - The profile must be preconfigured on the node to work. - Must be a descending path, relative to the kubelet's configured seccomp profile location. - Must only be set if type is "Localhost". - +optional - type: string - x-go-name: LocalhostProfile - type: - $ref: '#/definitions/SeccompProfileType' - title: SeccompProfile defines a pod/container's seccomp profile settings. - type: object - x-go-package: k8s.io/api/core/v1 - SeccompProfileType: - description: +enum - title: SeccompProfileType defines the supported seccomp profile types. - type: string - x-go-package: k8s.io/api/core/v1 - SecretEnvSource: - description: |- - The contents of the target Secret's Data field will represent the - key-value pairs as environment variables. - properties: - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - +optional - type: string - x-go-name: Name - optional: - description: |- - Specify whether the Secret must be defined - +optional - type: boolean - x-go-name: Optional - title: |- - SecretEnvSource selects a Secret to populate the environment - variables with. - type: object - x-go-package: k8s.io/api/core/v1 - SecretKeySelector: - description: +structType=atomic - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - x-go-name: Key - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - +optional - type: string - x-go-name: Name - optional: - description: |- - Specify whether the Secret or its key must be defined - +optional - type: boolean - x-go-name: Optional - title: SecretKeySelector selects a key of a Secret. - type: object - x-go-package: k8s.io/api/core/v1 - SecretProjection: - description: |- - The contents of the target Secret's Data field will be presented in a - projected volume as files using the keys in the Data field as the file names. - Note that this is identical to a secret volume source without the default - mode. - properties: - items: - description: |- - items if unspecified, each key-value pair in the Data field of the referenced - Secret will be projected into the volume as a file whose name is the - key and content is the value. If specified, the listed keys will be - projected into the specified paths, and unlisted keys will not be - present. If a key is specified which is not present in the Secret, - the volume setup will error unless it is marked optional. Paths must be - relative and may not contain the '..' path or start with '..'. - +optional - items: - $ref: '#/definitions/KeyToPath' - type: array - x-go-name: Items - name: - description: |- - Name of the referent. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid? - +optional - type: string - x-go-name: Name - optional: - description: |- - optional field specify whether the Secret or its key must be defined - +optional - type: boolean - x-go-name: Optional - title: Adapts a secret into a projected volume. - type: object - x-go-package: k8s.io/api/core/v1 - SecretVolumeSource: - description: |- - The contents of the target Secret's Data field will be presented in a volume - as files using the keys in the Data field as the file names. - Secret volumes support ownership management and SELinux relabeling. - properties: - defaultMode: - description: |- - defaultMode is Optional: mode bits used to set permissions on created files by default. - Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. - YAML accepts both octal and decimal values, JSON requires decimal values - for mode bits. Defaults to 0644. - Directories within the path are not affected by this setting. - This might be in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode bits set. - +optional - format: int32 - type: integer - x-go-name: DefaultMode - items: - description: |- - items If unspecified, each key-value pair in the Data field of the referenced - Secret will be projected into the volume as a file whose name is the - key and content is the value. If specified, the listed keys will be - projected into the specified paths, and unlisted keys will not be - present. If a key is specified which is not present in the Secret, - the volume setup will error unless it is marked optional. Paths must be - relative and may not contain the '..' path or start with '..'. - +optional - items: - $ref: '#/definitions/KeyToPath' - type: array - x-go-name: Items - optional: - description: |- - optional field specify whether the Secret or its keys must be defined - +optional - type: boolean - x-go-name: Optional - secretName: - description: |- - secretName is the name of the secret in the pod's namespace to use. - More info: https://kubernetes.io/docs/concepts/storage/volumes#secret - +optional - type: string - x-go-name: SecretName - title: Adapts a Secret into a volume. - type: object - x-go-package: k8s.io/api/core/v1 - SecurityContext: - description: |- - Some fields are present in both SecurityContext and PodSecurityContext. When both - are set, the values in SecurityContext take precedence. - properties: - allowPrivilegeEscalation: - description: |- - AllowPrivilegeEscalation controls whether a process can gain more - privileges than its parent process. This bool directly controls if - the no_new_privs flag will be set on the container process. - AllowPrivilegeEscalation is true always when the container is: - 1) run as Privileged - 2) has CAP_SYS_ADMIN - Note that this field cannot be set when spec.os.name is windows. - +optional - type: boolean - x-go-name: AllowPrivilegeEscalation - capabilities: - $ref: '#/definitions/Capabilities' - privileged: - description: |- - Run container in privileged mode. - Processes in privileged containers are essentially equivalent to root on the host. - Defaults to false. - Note that this field cannot be set when spec.os.name is windows. - +optional - type: boolean - x-go-name: Privileged - procMount: - $ref: '#/definitions/ProcMountType' - readOnlyRootFilesystem: - description: |- - Whether this container has a read-only root filesystem. - Default is false. - Note that this field cannot be set when spec.os.name is windows. - +optional - type: boolean - x-go-name: ReadOnlyRootFilesystem - runAsGroup: - description: |- - The GID to run the entrypoint of the container process. - Uses runtime default if unset. - May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name is windows. - +optional - format: int64 - type: integer - x-go-name: RunAsGroup - runAsNonRoot: - description: |- - Indicates that the container must run as a non-root user. - If true, the Kubelet will validate the image at runtime to ensure that it - does not run as UID 0 (root) and fail to start the container if it does. - If unset or false, no such validation will be performed. - May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - +optional - type: boolean - x-go-name: RunAsNonRoot - runAsUser: - description: |- - The UID to run the entrypoint of the container process. - Defaults to user specified in image metadata if unspecified. - May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name is windows. - +optional - format: int64 - type: integer - x-go-name: RunAsUser - seLinuxOptions: - $ref: '#/definitions/SELinuxOptions' - seccompProfile: - $ref: '#/definitions/SeccompProfile' - windowsOptions: - $ref: '#/definitions/WindowsSecurityContextOptions' - title: SecurityContext holds security configuration that will be applied to a container. - type: object - x-go-package: k8s.io/api/core/v1 - SemaphoreRef: - description: SemaphoreRef is a reference of Semaphore - properties: - configMapKeyRef: - $ref: '#/definitions/ConfigMapKeySelector' - namespace: - default: '[namespace of workflow]' - type: string - x-go-name: Namespace - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - Sequence: - description: Sequence expands a workflow step into numeric range - properties: - count: - $ref: '#/definitions/IntOrString' - end: - $ref: '#/definitions/IntOrString' - format: - description: Format is a printf format string to format the value in the sequence - type: string - x-go-name: Format - start: - $ref: '#/definitions/IntOrString' - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - ServiceAccountTokenProjection: - description: |- - ServiceAccountTokenProjection represents a projected service account token - volume. This projection can be used to insert a service account token into - the pods runtime filesystem for use against APIs (Kubernetes API Server or - otherwise). - properties: - audience: - description: |- - audience is the intended audience of the token. A recipient of a token - must identify itself with an identifier specified in the audience of the - token, and otherwise should reject the token. The audience defaults to the - identifier of the apiserver. - +optional - type: string - x-go-name: Audience - expirationSeconds: - description: |- - expirationSeconds is the requested duration of validity of the service - account token. As the token approaches expiration, the kubelet volume - plugin will proactively rotate the service account token. The kubelet will - start trying to rotate the token if the token is older than 80 percent of - its time to live or if the token is older than 24 hours.Defaults to 1 hour - and must be at least 10 minutes. - +optional - format: int64 - type: integer - x-go-name: ExpirationSeconds - path: - description: |- - path is the path relative to the mount point of the file to project the - token into. - type: string - x-go-name: Path - type: object - x-go-package: k8s.io/api/core/v1 - StorageMedium: - title: StorageMedium defines ways that storage can be allocated to a volume. - type: string - x-go-package: k8s.io/api/core/v1 - StorageOSVolumeSource: - properties: - fsType: - description: |- - fsType is the filesystem type to mount. - Must be a filesystem type supported by the host operating system. - Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - +optional - type: string - x-go-name: FSType - readOnly: - description: |- - readOnly defaults to false (read/write). ReadOnly here will force - the ReadOnly setting in VolumeMounts. - +optional - type: boolean - x-go-name: ReadOnly - secretRef: - $ref: '#/definitions/LocalObjectReference' - volumeName: - description: |- - volumeName is the human-readable name of the StorageOS volume. Volume - names are only unique within a namespace. - type: string - x-go-name: VolumeName - volumeNamespace: - description: |- - volumeNamespace specifies the scope of the volume within StorageOS. If no - namespace is specified then the Pod's namespace will be used. This allows the - Kubernetes name scoping to be mirrored within StorageOS for tighter integration. - Set VolumeName to any name to override the default behaviour. - Set to "default" if you are not using namespaces within StorageOS. - Namespaces that do not pre-exist within StorageOS will be created. - +optional - type: string - x-go-name: VolumeNamespace - title: Represents a StorageOS persistent volume resource. - type: object - x-go-package: k8s.io/api/core/v1 - SuppliedValueFrom: - title: SuppliedValueFrom is a placeholder for a value to be filled in directly, either through the CLI, API, etc. - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - SuspendTemplate: - description: SuspendTemplate is a template subtype to suspend a workflow at a predetermined point in time - properties: - duration: - description: |- - Duration is the seconds to wait before automatically resuming a template. Must be a string. Default unit is seconds. - Could also be a Duration, e.g.: "2m", "6h" - type: string - x-go-name: Duration - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - Synchronization: - description: Synchronization holds synchronization lock configuration - properties: - mutex: - $ref: '#/definitions/Mutex' - semaphore: - $ref: '#/definitions/SemaphoreRef' - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - Sysctl: - description: Sysctl defines a kernel parameter to be set - properties: - name: - description: Name of a property to set - type: string - x-go-name: Name - value: - description: Value of a property to set - type: string - x-go-name: Value - type: object - x-go-package: k8s.io/api/core/v1 - TCPSocketAction: - description: TCPSocketAction describes an action based on opening a socket - properties: - host: - description: |- - Optional: Host name to connect to, defaults to the pod IP. - +optional - type: string - x-go-name: Host - port: - $ref: '#/definitions/IntOrString' - type: object - x-go-package: k8s.io/api/core/v1 - TaintEffect: - description: +enum - type: string - x-go-package: k8s.io/api/core/v1 - TarStrategy: - description: TarStrategy will tar and gzip the file or directory when saving - properties: - compressionLevel: - description: |- - CompressionLevel specifies the gzip compression level to use for the artifact. - Defaults to gzip.DefaultCompression. - format: int32 - type: integer - x-go-name: CompressionLevel - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - Template: - description: Template is a reusable and composable unit of execution in a workflow - properties: - activeDeadlineSeconds: - $ref: '#/definitions/IntOrString' - affinity: - $ref: '#/definitions/Affinity' - archiveLocation: - $ref: '#/definitions/ArtifactLocation' - automountServiceAccountToken: - description: |- - AutomountServiceAccountToken indicates whether a service account token should be automatically mounted in pods. - ServiceAccountName of ExecutorConfig must be specified if this value is false. - type: boolean - x-go-name: AutomountServiceAccountToken - container: - $ref: '#/definitions/Container' - containerSet: - $ref: '#/definitions/ContainerSetTemplate' - daemon: - description: Daemon will allow a workflow to proceed to the next step so long as the container reaches readiness - type: boolean - x-go-name: Daemon - dag: - $ref: '#/definitions/DAGTemplate' - data: - $ref: '#/definitions/Data' - executor: - $ref: '#/definitions/ExecutorConfig' - failFast: - description: |- - FailFast, if specified, will fail this template if any of its child pods has failed. This is useful for when this - template is expanded with `withItems`, etc. - type: boolean - x-go-name: FailFast - hostAliases: - description: |- - HostAliases is an optional list of hosts and IPs that will be injected into the pod spec - +patchStrategy=merge - +patchMergeKey=ip - items: - $ref: '#/definitions/HostAlias' - type: array - x-go-name: HostAliases - http: - $ref: '#/definitions/HTTP' - initContainers: - description: |- - InitContainers is a list of containers which run before the main container. - +patchStrategy=merge - +patchMergeKey=name - items: - $ref: '#/definitions/UserContainer' - type: array - x-go-name: InitContainers - inputs: - $ref: '#/definitions/Inputs' - memoize: - $ref: '#/definitions/Memoize' - metadata: - $ref: '#/definitions/Metadata' - metrics: - $ref: '#/definitions/Metrics' - name: - description: Name is the name of the template - type: string - x-go-name: Name - nodeSelector: - additionalProperties: - type: string - description: |- - NodeSelector is a selector to schedule this step of the workflow to be - run on the selected node(s). Overrides the selector set at the workflow level. - type: object - x-go-name: NodeSelector - outputs: - $ref: '#/definitions/Outputs' - parallelism: - description: |- - Parallelism limits the max total parallel pods that can execute at the same time within the - boundaries of this template invocation. If additional steps/dag templates are invoked, the - pods created by those templates will not be counted towards this total. - format: int64 - type: integer - x-go-name: Parallelism - plugin: - $ref: '#/definitions/Plugin' - podSpecPatch: - description: |- - PodSpecPatch holds strategic merge patch to apply against the pod spec. Allows parameterization of - container fields which are not strings (e.g. resource limits). - type: string - x-go-name: PodSpecPatch - priority: - description: Priority to apply to workflow pods. - format: int32 - type: integer - x-go-name: Priority - priorityClassName: - description: PriorityClassName to apply to workflow pods. - type: string - x-go-name: PriorityClassName - resource: - $ref: '#/definitions/ResourceTemplate' - retryStrategy: - $ref: '#/definitions/RetryStrategy' - schedulerName: - description: |- - If specified, the pod will be dispatched by specified scheduler. - Or it will be dispatched by workflow scope scheduler if specified. - If neither specified, the pod will be dispatched by default scheduler. - +optional - type: string - x-go-name: SchedulerName - script: - $ref: '#/definitions/ScriptTemplate' - securityContext: - $ref: '#/definitions/PodSecurityContext' - serviceAccountName: - description: ServiceAccountName to apply to workflow pods - type: string - x-go-name: ServiceAccountName - sidecars: - description: |- - Sidecars is a list of containers which run alongside the main container - Sidecars are automatically killed when the main container completes - +patchStrategy=merge - +patchMergeKey=name - items: - $ref: '#/definitions/UserContainer' - type: array - x-go-name: Sidecars - steps: - description: Steps define a series of sequential/parallel workflow steps - items: - $ref: '#/definitions/ParallelSteps' - type: array - x-go-name: Steps - suspend: - $ref: '#/definitions/SuspendTemplate' - synchronization: - $ref: '#/definitions/Synchronization' - timeout: - description: |- - Timeout allows to set the total node execution timeout duration counting from the node's start time. - This duration also includes time in which the node spends in Pending state. This duration may not be applied to Step or DAG templates. - type: string - x-go-name: Timeout - tolerations: - description: |- - Tolerations to apply to workflow pods. - +patchStrategy=merge - +patchMergeKey=key - items: - $ref: '#/definitions/Toleration' - type: array - x-go-name: Tolerations - volumes: - description: |- - Volumes is a list of volumes that can be mounted by containers in a template. - +patchStrategy=merge - +patchMergeKey=name - items: - $ref: '#/definitions/Volume' - type: array - x-go-name: Volumes - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - TemplateRef: - properties: - clusterScope: - description: ClusterScope indicates the referred template is cluster scoped (i.e. a ClusterWorkflowTemplate). - type: boolean - x-go-name: ClusterScope - name: - description: Name is the resource name of the template. - type: string - x-go-name: Name - template: - description: Template is the name of referred template in the resource. - type: string - x-go-name: Template - title: TemplateRef is a reference of template resource. - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - TerminationMessagePolicy: - description: +enum - title: TerminationMessagePolicy describes how termination messages are retrieved from a container. - type: string - x-go-package: k8s.io/api/core/v1 - Toleration: - description: |- - The pod this Toleration is attached to tolerates any taint that matches - the triple using the matching operator . - properties: - effect: - $ref: '#/definitions/TaintEffect' - key: - description: |- - Key is the taint key that the toleration applies to. Empty means match all taint keys. - If the key is empty, operator must be Exists; this combination means to match all values and all keys. - +optional - type: string - x-go-name: Key - operator: - $ref: '#/definitions/TolerationOperator' - tolerationSeconds: - description: |- - TolerationSeconds represents the period of time the toleration (which must be - of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, - it is not set, which means tolerate the taint forever (do not evict). Zero and - negative values will be treated as 0 (evict immediately) by the system. - +optional - format: int64 - type: integer - x-go-name: TolerationSeconds - value: - description: |- - Value is the taint value the toleration matches to. - If the operator is Exists, the value should be empty, otherwise just a regular string. - +optional - type: string - x-go-name: Value - type: object - x-go-package: k8s.io/api/core/v1 - TolerationOperator: - description: +enum - title: A toleration operator is the set of operators that can be used in a toleration. - type: string - x-go-package: k8s.io/api/core/v1 - Transformation: - items: - $ref: '#/definitions/TransformationStep' - type: array - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - TransformationStep: - properties: - expression: - description: Expression defines an expr expression to apply - type: string - x-go-name: Expression - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - Type: - format: int64 - title: Type represents the stored type of IntOrString. - type: integer - x-go-package: k8s.io/apimachinery/pkg/util/intstr - TypedLocalObjectReference: - description: |- - TypedLocalObjectReference contains enough information to let you locate the - typed referenced object inside the same namespace. - +structType=atomic - properties: - apiGroup: - description: |- - APIGroup is the group for the resource being referenced. - If APIGroup is not specified, the specified Kind must be in the core API group. - For any other third-party types, APIGroup is required. - +optional - type: string - x-go-name: APIGroup - kind: - description: Kind is the type of resource being referenced - type: string - x-go-name: Kind - name: - description: Name is the name of resource being referenced - type: string - x-go-name: Name - type: object - x-go-package: k8s.io/api/core/v1 - UID: - description: |- - UID is a type that holds unique ID values, including UUIDs. Because we - don't ONLY use UUIDs, this is an alias to string. Being a type captures - intent and helps make sure that UIDs and names do not get conflated. - type: string - x-go-package: k8s.io/apimachinery/pkg/types - URIScheme: - description: |- - URIScheme identifies the scheme used for connection to a host for Get actions - +enum - type: string - x-go-package: k8s.io/api/core/v1 - UserContainer: - properties: - args: - description: |- - Arguments to the entrypoint. - The container image's CMD is used if this is not provided. - Variable references $(VAR_NAME) are expanded using the container's environment. If a variable - cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will - produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless - of whether the variable exists or not. Cannot be updated. - More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell - +optional - items: - type: string - type: array - x-go-name: Args - command: - description: |- - Entrypoint array. Not executed within a shell. - The container image's ENTRYPOINT is used if this is not provided. - Variable references $(VAR_NAME) are expanded using the container's environment. If a variable - cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will - produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless - of whether the variable exists or not. Cannot be updated. - More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell - +optional - items: - type: string - type: array - x-go-name: Command - env: - description: |- - List of environment variables to set in the container. - Cannot be updated. - +optional - +patchMergeKey=name - +patchStrategy=merge - items: - $ref: '#/definitions/EnvVar' - type: array - x-go-name: Env - envFrom: - description: |- - List of sources to populate environment variables in the container. - The keys defined within a source must be a C_IDENTIFIER. All invalid keys - will be reported as an event when the container is starting. When a key exists in multiple - sources, the value associated with the last source will take precedence. - Values defined by an Env with a duplicate key will take precedence. - Cannot be updated. - +optional - items: - $ref: '#/definitions/EnvFromSource' - type: array - x-go-name: EnvFrom - image: - description: |- - Container image name. - More info: https://kubernetes.io/docs/concepts/containers/images - This field is optional to allow higher level config management to default or override - container images in workload controllers like Deployments and StatefulSets. - +optional - type: string - x-go-name: Image - imagePullPolicy: - $ref: '#/definitions/PullPolicy' - lifecycle: - $ref: '#/definitions/Lifecycle' - livenessProbe: - $ref: '#/definitions/Probe' - mirrorVolumeMounts: - description: |- - MirrorVolumeMounts will mount the same volumes specified in the main container - to the container (including artifacts), at the same mountPaths. This enables - dind daemon to partially see the same filesystem as the main container in - order to use features such as docker volume binding - type: boolean - x-go-name: MirrorVolumeMounts - name: - description: |- - Name of the container specified as a DNS_LABEL. - Each container in a pod must have a unique name (DNS_LABEL). - Cannot be updated. - type: string - x-go-name: Name - ports: - description: |- - List of ports to expose from the container. Exposing a port here gives - the system additional information about the network connections a - container uses, but is primarily informational. Not specifying a port here - DOES NOT prevent that port from being exposed. Any port which is - listening on the default "0.0.0.0" address inside a container will be - accessible from the network. - Cannot be updated. - +optional - +patchMergeKey=containerPort - +patchStrategy=merge - +listType=map - +listMapKey=containerPort - +listMapKey=protocol - items: - $ref: '#/definitions/ContainerPort' - type: array - x-go-name: Ports - readinessProbe: - $ref: '#/definitions/Probe' - resources: - $ref: '#/definitions/ResourceRequirements' - securityContext: - $ref: '#/definitions/SecurityContext' - startupProbe: - $ref: '#/definitions/Probe' - stdin: - description: |- - Whether this container should allocate a buffer for stdin in the container runtime. If this - is not set, reads from stdin in the container will always result in EOF. - Default is false. - +optional - type: boolean - x-go-name: Stdin - stdinOnce: - description: |- - Whether the container runtime should close the stdin channel after it has been opened by - a single attach. When stdin is true the stdin stream will remain open across multiple attach - sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the - first client attaches to stdin, and then remains open and accepts data until the client disconnects, - at which time stdin is closed and remains closed until the container is restarted. If this - flag is false, a container processes that reads from stdin will never receive an EOF. - Default is false - +optional - type: boolean - x-go-name: StdinOnce - terminationMessagePath: - description: |- - Optional: Path at which the file to which the container's termination message - will be written is mounted into the container's filesystem. - Message written is intended to be brief final status, such as an assertion failure message. - Will be truncated by the node if greater than 4096 bytes. The total message length across - all containers will be limited to 12kb. - Defaults to /dev/termination-log. - Cannot be updated. - +optional - type: string - x-go-name: TerminationMessagePath - terminationMessagePolicy: - $ref: '#/definitions/TerminationMessagePolicy' - tty: - description: |- - Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. - Default is false. - +optional - type: boolean - x-go-name: TTY - volumeDevices: - description: |- - volumeDevices is the list of block devices to be used by the container. - +patchMergeKey=devicePath - +patchStrategy=merge - +optional - items: - $ref: '#/definitions/VolumeDevice' - type: array - x-go-name: VolumeDevices - volumeMounts: - description: |- - Pod volumes to mount into the container's filesystem. - Cannot be updated. - +optional - +patchMergeKey=mountPath - +patchStrategy=merge - items: - $ref: '#/definitions/VolumeMount' - type: array - x-go-name: VolumeMounts - workingDir: - description: |- - Container's working directory. - If not specified, the container runtime's default will be used, which - might be configured in the container image. - Cannot be updated. - +optional - type: string - x-go-name: WorkingDir - title: UserContainer is a container specified by a user. - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - ValueFrom: - description: ValueFrom describes a location in which to obtain the value to a parameter - properties: - configMapKeyRef: - $ref: '#/definitions/ConfigMapKeySelector' - default: - $ref: '#/definitions/AnyString' - event: - description: Selector (https://github.com/expr-lang/expr) that is evaluated against the event to get the value of the parameter. E.g. `payload.message` - type: string - x-go-name: Event - expression: - description: Expression, if defined, is evaluated to specify the value for the parameter - type: string - x-go-name: Expression - jqFilter: - description: JQFilter expression against the resource object in resource templates - type: string - x-go-name: JQFilter - jsonPath: - description: JSONPath of a resource to retrieve an output parameter value from in resource templates - type: string - x-go-name: JSONPath - parameter: - description: |- - Parameter reference to a step or dag task in which to retrieve an output parameter value from - (e.g. '{{steps.mystep.outputs.myparam}}') - type: string - x-go-name: Parameter - path: - description: Path in the container to retrieve an output parameter value from in container templates - type: string - x-go-name: Path - supplied: - $ref: '#/definitions/SuppliedValueFrom' - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 - Volume: - properties: - awsElasticBlockStore: - $ref: '#/definitions/AWSElasticBlockStoreVolumeSource' - azureDisk: - $ref: '#/definitions/AzureDiskVolumeSource' - azureFile: - $ref: '#/definitions/AzureFileVolumeSource' - cephfs: - $ref: '#/definitions/CephFSVolumeSource' - cinder: - $ref: '#/definitions/CinderVolumeSource' - configMap: - $ref: '#/definitions/ConfigMapVolumeSource' - csi: - $ref: '#/definitions/CSIVolumeSource' - downwardAPI: - $ref: '#/definitions/DownwardAPIVolumeSource' - emptyDir: - $ref: '#/definitions/EmptyDirVolumeSource' - ephemeral: - $ref: '#/definitions/EphemeralVolumeSource' - fc: - $ref: '#/definitions/FCVolumeSource' - flexVolume: - $ref: '#/definitions/FlexVolumeSource' - flocker: - $ref: '#/definitions/FlockerVolumeSource' - gcePersistentDisk: - $ref: '#/definitions/GCEPersistentDiskVolumeSource' - gitRepo: - $ref: '#/definitions/GitRepoVolumeSource' - glusterfs: - $ref: '#/definitions/GlusterfsVolumeSource' - hostPath: - $ref: '#/definitions/HostPathVolumeSource' - iscsi: - $ref: '#/definitions/ISCSIVolumeSource' - name: - description: |- - name of the volume. - Must be a DNS_LABEL and unique within the pod. - More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - type: string - x-go-name: Name - nfs: - $ref: '#/definitions/NFSVolumeSource' - persistentVolumeClaim: - $ref: '#/definitions/PersistentVolumeClaimVolumeSource' - photonPersistentDisk: - $ref: '#/definitions/PhotonPersistentDiskVolumeSource' - portworxVolume: - $ref: '#/definitions/PortworxVolumeSource' - projected: - $ref: '#/definitions/ProjectedVolumeSource' - quobyte: - $ref: '#/definitions/QuobyteVolumeSource' - rbd: - $ref: '#/definitions/RBDVolumeSource' - scaleIO: - $ref: '#/definitions/ScaleIOVolumeSource' - secret: - $ref: '#/definitions/SecretVolumeSource' - storageos: - $ref: '#/definitions/StorageOSVolumeSource' - vsphereVolume: - $ref: '#/definitions/VsphereVirtualDiskVolumeSource' - title: Volume represents a named volume in a pod that may be accessed by any container in the pod. - type: object - x-go-package: k8s.io/api/core/v1 - VolumeDevice: - properties: - devicePath: - description: devicePath is the path inside of the container that the device will be mapped to. - type: string - x-go-name: DevicePath - name: - description: name must match the name of a persistentVolumeClaim in the pod - type: string - x-go-name: Name - title: volumeDevice describes a mapping of a raw block device within a container. - type: object - x-go-package: k8s.io/api/core/v1 - VolumeMount: - properties: - mountPath: - description: |- - Path within the container at which the volume should be mounted. Must - not contain ':'. - type: string - x-go-name: MountPath - mountPropagation: - $ref: '#/definitions/MountPropagationMode' - name: - description: This must match the Name of a Volume. - type: string - x-go-name: Name - readOnly: - description: |- - Mounted read-only if true, read-write otherwise (false or unspecified). - Defaults to false. - +optional - type: boolean - x-go-name: ReadOnly - subPath: - description: |- - Path within the volume from which the container's volume should be mounted. - Defaults to "" (volume's root). - +optional - type: string - x-go-name: SubPath - subPathExpr: - description: |- - Expanded path within the volume from which the container's volume should be mounted. - Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. - Defaults to "" (volume's root). - SubPathExpr and SubPath are mutually exclusive. - +optional - type: string - x-go-name: SubPathExpr - title: VolumeMount describes a mounting of a Volume within a container. - type: object - x-go-package: k8s.io/api/core/v1 - VolumeProjection: - description: Projection that may be projected along with other supported volume types - properties: - configMap: - $ref: '#/definitions/ConfigMapProjection' - downwardAPI: - $ref: '#/definitions/DownwardAPIProjection' - secret: - $ref: '#/definitions/SecretProjection' - serviceAccountToken: - $ref: '#/definitions/ServiceAccountTokenProjection' - type: object - x-go-package: k8s.io/api/core/v1 - VsphereVirtualDiskVolumeSource: - properties: - fsType: - description: |- - fsType is filesystem type to mount. - Must be a filesystem type supported by the host operating system. - Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - +optional - type: string - x-go-name: FSType - storagePolicyID: - description: |- - storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName. - +optional - type: string - x-go-name: StoragePolicyID - storagePolicyName: - description: |- - storagePolicyName is the storage Policy Based Management (SPBM) profile name. - +optional - type: string - x-go-name: StoragePolicyName - volumePath: - description: volumePath is the path that identifies vSphere volume vmdk - type: string - x-go-name: VolumePath - title: Represents a vSphere volume resource. - type: object - x-go-package: k8s.io/api/core/v1 - WeightedPodAffinityTerm: - description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) - properties: - podAffinityTerm: - $ref: '#/definitions/PodAffinityTerm' - weight: - description: |- - weight associated with matching the corresponding podAffinityTerm, - in the range 1-100. - format: int32 - type: integer - x-go-name: Weight - type: object - x-go-package: k8s.io/api/core/v1 - WindowsSecurityContextOptions: - properties: - gmsaCredentialSpec: - description: |- - GMSACredentialSpec is where the GMSA admission webhook - (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the - GMSA credential spec named by the GMSACredentialSpecName field. - +optional - type: string - x-go-name: GMSACredentialSpec - gmsaCredentialSpecName: - description: |- - GMSACredentialSpecName is the name of the GMSA credential spec to use. - +optional - type: string - x-go-name: GMSACredentialSpecName - hostProcess: - description: |- - HostProcess determines if a container should be run as a 'Host Process' container. - This field is alpha-level and will only be honored by components that enable the - WindowsHostProcessContainers feature flag. Setting this field without the feature - flag will result in errors when validating the Pod. All of a Pod's containers must - have the same effective HostProcess value (it is not allowed to have a mix of HostProcess - containers and non-HostProcess containers). In addition, if HostProcess is true - then HostNetwork must also be set to true. - +optional - type: boolean - x-go-name: HostProcess - runAsUserName: - description: |- - The UserName in Windows to run the entrypoint of the container process. - Defaults to the user specified in image metadata if unspecified. - May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - +optional - type: string - x-go-name: RunAsUserName - title: WindowsSecurityContextOptions contain Windows-specific options and credentials. - type: object - x-go-package: k8s.io/api/core/v1 - Workflow: - properties: - metadata: - $ref: '#/definitions/ObjectMeta' - required: - - metadata - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/plugins/executor - ZipStrategy: - description: ZipStrategy will unzip zipped input artifacts - type: object - x-go-package: github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1 -host: localhost -info: - title: The API for an executor plugin. - version: 0.0.1 -paths: - /template.execute: - post: - operationId: executeTemplate - parameters: - - in: body - name: Body - required: true - schema: - $ref: '#/definitions/ExecuteTemplateArgs' - responses: - "200": - $ref: '#/responses/executeTemplate' -produces: - - application/json -responses: - executeTemplate: - description: "" - schema: - $ref: '#/definitions/ExecuteTemplateReply' -schemes: - - http -swagger: "2.0" From 51bfa7fb3ef596901ce6462a633ab574897e3470 Mon Sep 17 00:00:00 2001 From: shuangkun Date: Tue, 9 Apr 2024 21:09:44 +0800 Subject: [PATCH 19/26] fix: doc Signed-off-by: shuangkun --- docs/executor_swagger.md | 531 +++++++++++++++++++-------------------- 1 file changed, 260 insertions(+), 271 deletions(-) diff --git a/docs/executor_swagger.md b/docs/executor_swagger.md index e10727c721e7..5cf3dfd0f399 100644 --- a/docs/executor_swagger.md +++ b/docs/executor_swagger.md @@ -2,7 +2,7 @@ # The API for an executor plugin. - + ## Informations @@ -13,13 +13,13 @@ ## Content negotiation ### URI Schemes - * http +* http ### Consumes - * application/json +* application/json ### Produces - * application/json +* application/json ## All endpoints @@ -28,7 +28,7 @@ | Method | URI | Name | Summary | |---------|---------|--------|---------| | POST | /api/v1/template.execute | [execute template](#execute-template) | | - + ## Paths @@ -57,8 +57,8 @@ POST /api/v1/template.execute Status: OK ###### Schema - - + + [ExecuteTemplateReply](#execute-template-reply) @@ -71,7 +71,7 @@ Status: OK must also be in the same AWS zone as the kubelet. An AWS EBS disk can only be mounted as read/write once. AWS EBS volumes support ownership management and SELinux relabeling. - + @@ -103,7 +103,7 @@ More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockst ### Affinity - + @@ -121,7 +121,7 @@ More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockst > +kubebuilder:validation:Type=number - + @@ -132,7 +132,7 @@ More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockst > It will unmarshall int64, int32, float64, float32, boolean, a plain string and represents it as string. It will marshall back to string - marshalling is not symmetric. - + @@ -147,7 +147,7 @@ It will marshall back to string - marshalling is not symmetric. | | > ArchiveStrategy describes how to archive files/directory when saving artifacts - + @@ -167,7 +167,7 @@ It will marshall back to string - marshalling is not symmetric. | | > Arguments to a template - + @@ -188,7 +188,7 @@ It will marshall back to string - marshalling is not symmetric. | | > Artifact indicates an artifact to place at a specified path - + @@ -229,7 +229,7 @@ set when loading input artifacts. | | > 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 - + @@ -248,7 +248,7 @@ set when loading input artifacts. | | ### ArtifactGCStrategy - + | Name | Type | Go type | Default | Description | Example | |------|------|---------| ------- |-------------|---------| @@ -262,7 +262,7 @@ set when loading input artifacts. | | > It is used as single artifact in the context of inputs/outputs (e.g. outputs.artifacts.artname). It is also used to describe the location of multiple artifacts such as the archive location of a single workflow step, which the executor will use as a default location to store its files. - + @@ -289,7 +289,7 @@ of a single workflow step, which the executor will use as a default location to > ArtifactPaths expands a step from a collection of artifacts - + @@ -330,7 +330,7 @@ set when loading input artifacts. | | > ArtifactoryArtifact is the location of an artifactory artifact - + @@ -349,7 +349,7 @@ set when loading input artifacts. | | ### Artifacts - + [][Artifact](#artifact) @@ -357,7 +357,7 @@ set when loading input artifacts. | | > AzureArtifact is the location of a an Azure Storage artifact - + @@ -379,7 +379,7 @@ set when loading input artifacts. | | > +enum - + @@ -393,7 +393,7 @@ set when loading input artifacts. | | > +enum - + @@ -406,7 +406,7 @@ set when loading input artifacts. | | ### AzureDiskVolumeSource - + @@ -431,7 +431,7 @@ the ReadOnly setting in VolumeMounts. ### AzureFileVolumeSource - + @@ -451,7 +451,7 @@ the ReadOnly setting in VolumeMounts. > Backoff is a backoff strategy to use within retryStrategy - + @@ -471,7 +471,7 @@ the ReadOnly setting in VolumeMounts. > BasicAuth describes the secret selectors required for basic authentication - + @@ -490,7 +490,7 @@ the ReadOnly setting in VolumeMounts. > Represents a source location of a volume to mount, managed by an external CSI driver - + @@ -520,7 +520,7 @@ driver. Consult your driver's documentation for supported values. > Cache is the configuration for the type of cache to be used - + @@ -537,7 +537,7 @@ driver. Consult your driver's documentation for supported values. ### Capabilities - + @@ -556,7 +556,7 @@ driver. Consult your driver's documentation for supported values. > Capability represent POSIX capabilities type - + @@ -571,7 +571,7 @@ driver. Consult your driver's documentation for supported values. > Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling. - + @@ -605,7 +605,7 @@ More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it > A Cinder volume must exist before mounting to a container. The volume must also be in the same region as the kubelet. Cinder volumes support ownership management and SELinux relabeling. - + @@ -634,7 +634,7 @@ More info: https://examples.k8s.io/mysql-cinder-pd/README.md | | > ClientCertAuth holds necessary information for client authentication via certificates - + @@ -654,7 +654,7 @@ More info: https://examples.k8s.io/mysql-cinder-pd/README.md | | > The contents of the target ConfigMap's Data field will represent the key-value pairs as environment variables. - + @@ -677,7 +677,7 @@ TODO: Add other useful fields. apiVersion, kind, uid? > +structType=atomic - + @@ -705,7 +705,7 @@ projected volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths. Note that this is identical to a configmap volume source without the default mode. - + @@ -739,7 +739,7 @@ TODO: Add other useful fields. apiVersion, kind, uid? volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths. ConfigMap volumes support ownership management and SELinux relabeling. - + @@ -777,7 +777,7 @@ TODO: Add other useful fields. apiVersion, kind, uid? ### Container - + @@ -887,7 +887,7 @@ Cannot be updated. ### ContainerNode - + @@ -998,7 +998,7 @@ Cannot be updated. ### ContainerPort - + @@ -1027,7 +1027,7 @@ referred to by services. > ContainerSetRetryStrategy provides controls on how to retry a container set - + @@ -1046,7 +1046,7 @@ Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h". | | ### ContainerSetTemplate - + @@ -1064,7 +1064,7 @@ Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h". | | > It can be specified if the workflow should continue when the pod errors, fails or both. - + @@ -1083,7 +1083,7 @@ Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h". | | > Counter is a Counter prometheus metric - + @@ -1101,7 +1101,7 @@ Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h". | | > CreateS3BucketOptions options used to determine automatic automatic bucket-creation process - + @@ -1119,7 +1119,7 @@ Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h". | | > DAGTask represents a node in the graph during DAG execution - + @@ -1154,7 +1154,7 @@ which is expected to be a JSON list. | | > DAGTemplate is a template subtype for directed acyclic graph templates - + @@ -1181,7 +1181,7 @@ More info and example about this feature at https://github.com/argoproj/argo-wor > Data is a data template - + @@ -1200,7 +1200,7 @@ More info and example about this feature at https://github.com/argoproj/argo-wor > DataSource sources external data into a data template - + @@ -1219,7 +1219,7 @@ More info and example about this feature at https://github.com/argoproj/argo-wor > Note that this is identical to a downwardAPI volume source without the default mode. - + @@ -1238,7 +1238,7 @@ mode. > DownwardAPIVolumeFile represents information to create the file containing the pod field - + @@ -1265,7 +1265,7 @@ mode, like fsGroup, and the result can be other mode bits set. > Downward API volumes support ownership management and SELinux relabeling. - + @@ -1295,7 +1295,7 @@ mode, like fsGroup, and the result can be other mode bits set. > Duration is a wrapper around time.Duration which supports correct marshaling to YAML and JSON. In particular, it marshals into strings, which can be used as map keys in json. - + @@ -1305,7 +1305,7 @@ can be used as map keys in json. > Empty directory volumes support ownership management and SELinux relabeling. - + @@ -1324,7 +1324,7 @@ can be used as map keys in json. > EnvFromSource represents the source of a set of ConfigMaps - + @@ -1344,7 +1344,7 @@ can be used as map keys in json. ### EnvVar - + @@ -1370,7 +1370,7 @@ Defaults to "". ### EnvVarSource - + @@ -1388,7 +1388,7 @@ Defaults to "". ### EphemeralVolumeSource - + @@ -1403,7 +1403,7 @@ Defaults to "". ### ExecAction - + @@ -1423,7 +1423,7 @@ Exit status of 0 is treated as live/healthy and non-zero is unhealthy. ### ExecuteTemplateArgs - + @@ -1439,7 +1439,7 @@ Exit status of 0 is treated as live/healthy and non-zero is unhealthy. ### ExecuteTemplateReply - + @@ -1455,7 +1455,7 @@ Exit status of 0 is treated as live/healthy and non-zero is unhealthy. ### ExecutorConfig - + @@ -1472,7 +1472,7 @@ Exit status of 0 is treated as live/healthy and non-zero is unhealthy. > Fibre Channel volumes can only be mounted as read/write once. Fibre Channel volumes support ownership management and SELinux relabeling. - + @@ -1513,7 +1513,7 @@ If a key maps to an empty Fields value, the field that key represents is part of The exact format is defined in sigs.k8s.io/structured-merge-diff +protobuf.options.(gogoproto.goproto_stringer)=false - + @@ -1524,7 +1524,7 @@ The exact format is defined in sigs.k8s.io/structured-merge-diff > FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. - + @@ -1553,7 +1553,7 @@ the ReadOnly setting in VolumeMounts. > One and only one of datasetName and datasetUUID should be set. Flocker volumes do not support ownership management or SELinux relabeling. - + @@ -1578,7 +1578,7 @@ should be considered as deprecated also be in the same GCE project and zone as the kubelet. A GCE PD can only be mounted as read/write once or read-only many times. GCE PDs support ownership management and SELinux relabeling. - + @@ -1613,7 +1613,7 @@ More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk > GCSArtifact is the location of a GCS artifact - + @@ -1632,7 +1632,7 @@ More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk ### GRPCAction - + @@ -1654,7 +1654,7 @@ If this is not specified, the default behavior is defined by gRPC. > Gauge is a Gauge prometheus metric - + @@ -1674,7 +1674,7 @@ value is the value of the metric | | ### GaugeOperation - + | Name | Type | Go type | Default | Description | Example | |------|------|---------| ------- |-------------|---------| @@ -1686,7 +1686,7 @@ value is the value of the metric | | > GitArtifact is the location of an git artifact - + @@ -1717,7 +1717,7 @@ number of commits from the branch tip | | > DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod's container. - + @@ -1742,7 +1742,7 @@ the subdirectory with the given name. > Glusterfs volumes do not support ownership management or SELinux relabeling. - + @@ -1767,7 +1767,7 @@ More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod > HDFSArtifact is the location of an HDFS artifact - + @@ -1797,7 +1797,7 @@ It must be set if keytab is used. | | ### HTTP - + @@ -1820,7 +1820,7 @@ It must be set if keytab is used. | | > HTTPArtifact allows a file served on HTTP to be placed as an input artifact in a container - + @@ -1839,7 +1839,7 @@ It must be set if keytab is used. | | ### HTTPAuth - + @@ -1856,7 +1856,7 @@ It must be set if keytab is used. | | ### HTTPBodySource - + @@ -1871,7 +1871,7 @@ It must be set if keytab is used. | | ### HTTPGetAction - + @@ -1894,7 +1894,7 @@ It must be set if keytab is used. | | ### HTTPHeader - + @@ -1911,7 +1911,7 @@ It must be set if keytab is used. | | ### HTTPHeaderSource - + @@ -1926,7 +1926,7 @@ It must be set if keytab is used. | | ### HTTPHeaders - + [][HTTPHeader](#http-header) @@ -1934,7 +1934,7 @@ It must be set if keytab is used. | | > Header indicate a key-value request header to be used when fetching artifacts over HTTP - + @@ -1953,7 +1953,7 @@ It must be set if keytab is used. | | > Histogram is a Histogram prometheus metric - + @@ -1973,7 +1973,7 @@ It must be set if keytab is used. | | > HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the pod's hosts file. - + @@ -1992,7 +1992,7 @@ pod's hosts file. > +enum - + @@ -2006,7 +2006,7 @@ pod's hosts file. > Host path volumes do not support ownership management or SELinux relabeling. - + @@ -2028,7 +2028,7 @@ More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath | | > ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling. - + @@ -2073,7 +2073,7 @@ is other than default (typically TCP ports 860 and 3260). | | > Inputs are the mechanism for passing parameters, artifacts, volumes from one template to another - + @@ -2096,7 +2096,7 @@ is other than default (typically TCP ports 860 and 3260). | | > +protobuf=true +protobuf.options.(gogoproto.goproto_stringer)=false +k8s:openapi-gen=true - + @@ -2117,7 +2117,7 @@ is other than default (typically TCP ports 860 and 3260). | | > +protobuf.options.(gogoproto.goproto_stringer)=false +kubebuilder:validation:Type=object - + @@ -2126,7 +2126,7 @@ is other than default (typically TCP ports 860 and 3260). | | ### KeyToPath - + @@ -2156,7 +2156,7 @@ May not start with the string '..'. | | matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects. +structType=atomic - + @@ -2178,7 +2178,7 @@ operator is "In", and the values array contains only "value". The requirements a ### LabelSelectorOperator - + | Name | Type | Go type | Default | Description | Example | |------|------|---------| ------- |-------------|---------| @@ -2191,7 +2191,7 @@ operator is "In", and the values array contains only "value". The requirements a > A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - + @@ -2219,7 +2219,7 @@ merge patch. > Lifecycle describes actions that the management system should take in response to container lifecycle events. For the PostStart and PreStop lifecycle handlers, management of the container blocks until the action is complete, unless the container process fails, in which case the handler is aborted. - + @@ -2239,7 +2239,7 @@ until the action is complete, unless the container process fails, in which case > LifecycleHandler defines a specific action that should be taken in a lifecycle hook. One and only one of the fields, except TCPSocket must be specified. - + @@ -2258,7 +2258,7 @@ hook. One and only one of the fields, except TCPSocket must be specified. ### LifecycleHook - + @@ -2277,7 +2277,7 @@ be retried and the retry strategy will be ignored | | ### LifecycleHooks - + [LifecycleHooks](#lifecycle-hooks) @@ -2287,7 +2287,7 @@ be retried and the retry strategy will be ignored | | > LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace. +structType=atomic - + @@ -2309,7 +2309,7 @@ TODO: Add other useful fields. apiVersion, kind, uid? > ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to. - + @@ -2335,19 +2335,14 @@ share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource. | | -| time | string| `string` | | | Time is the timestamp of when the ManagedFields entry was added. The -timestamp will also be updated if a field is added, the manager -changes any of the owned fields value or removes a field. The -timestamp does not update when a field is removed from the entry -because another manager took it over. -+optional | | +| time | [Time](#time)| `Time` | | | | | ### ManagedFieldsOperationType - + | Name | Type | Go type | Default | Description | Example | |------|------|---------| ------- |-------------|---------| @@ -2358,7 +2353,7 @@ because another manager took it over. ### ManifestFrom - + @@ -2374,7 +2369,7 @@ because another manager took it over. > Memoization enables caching for the Outputs of the template - + @@ -2395,7 +2390,7 @@ than the MaxAge, it will be ignored. | | > Pod metdata - + @@ -2414,7 +2409,7 @@ than the MaxAge, it will be ignored. | | > MetricLabel is a single label for a prometheus metric - + @@ -2433,7 +2428,7 @@ than the MaxAge, it will be ignored. | | > Metrics are a list of metrics emitted from a Workflow/Template - + @@ -2451,7 +2446,7 @@ than the MaxAge, it will be ignored. | | > +enum - + @@ -2465,7 +2460,7 @@ than the MaxAge, it will be ignored. | | > Mutex holds Mutex configuration - + @@ -2484,7 +2479,7 @@ than the MaxAge, it will be ignored. | | > NFS volumes do not support ownership management or SELinux relabeling. - + @@ -2508,7 +2503,7 @@ More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs | | ### NodeAffinity - + @@ -2533,7 +2528,7 @@ node(s) with the highest sum are the most preferred. ### NodePhase - + | Name | Type | Go type | Default | Description | Example | |------|------|---------| ------- |-------------|---------| @@ -2544,7 +2539,7 @@ node(s) with the highest sum are the most preferred. ### NodeResult - + @@ -2566,7 +2561,7 @@ node(s) with the highest sum are the most preferred. over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms. +structType=atomic - + @@ -2586,7 +2581,7 @@ by the node selector terms. > A node selector operator is the set of operators that can be used in a node selector requirement. +enum - + @@ -2603,7 +2598,7 @@ a node selector requirement. > A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - + @@ -2631,7 +2626,7 @@ This array is replaced during a strategic merge patch. them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. +structType=atomic - + @@ -2654,7 +2649,7 @@ The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. > NoneStrategy indicates to skip tar process and upload the files or directory tree as independent files. Note that if the artifact is a directory, the artifact driver must support the ability to save/load the directory appropriately. - + @@ -2664,7 +2659,7 @@ save/load the directory appropriately. > OAuth2Auth holds all information for client authentication via OAuth2 tokens - + @@ -2686,7 +2681,7 @@ save/load the directory appropriately. > EndpointParam is for requesting optional fields that should be sent in the oauth request - + @@ -2705,7 +2700,7 @@ save/load the directory appropriately. > OSSArtifact is the location of an Alibaba Cloud OSS artifact - + @@ -2731,7 +2726,7 @@ save/load the directory appropriately. > OSSLifecycleRule specifies how to manage bucket's lifecycle - + @@ -2750,7 +2745,7 @@ save/load the directory appropriately. > +structType=atomic - + @@ -2769,7 +2764,7 @@ save/load the directory appropriately. ### ObjectMeta - + @@ -2787,7 +2782,7 @@ save/load the directory appropriately. > Outputs hold parameters, artifacts, and results from a step - + @@ -2813,7 +2808,7 @@ save/load the directory appropriately. object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field. +structType=atomic - + @@ -2847,7 +2842,7 @@ More info: http://kubernetes.io/docs/user-guide/identifiers#names | | > +kubebuilder:validation:Type=array - + @@ -2857,7 +2852,7 @@ More info: http://kubernetes.io/docs/user-guide/identifiers#names | | > Parameter indicate a passed string parameter to a service template with an optional default value - + @@ -2882,7 +2877,7 @@ More info: http://kubernetes.io/docs/user-guide/identifiers#names | | > +enum - + @@ -2897,7 +2892,7 @@ More info: http://kubernetes.io/docs/user-guide/identifiers#names | | > PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes - + @@ -2928,7 +2923,7 @@ More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class- > PersistentVolumeClaimTemplate is used to produce PersistentVolumeClaim objects as part of an EphemeralVolumeSource. - + @@ -2949,25 +2944,7 @@ it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only. +optional | | -| deletionTimestamp | string| `string` | | | DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This -field is set by the server when a graceful deletion is requested by the user, and is not -directly settable by a client. The resource is expected to be deleted (no longer visible -from resource lists, and not reachable by name) after the time in this field, once the -finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. -Once the deletionTimestamp is set, this value may not be unset or be set further into the -future, although it may be shortened or the resource may be deleted prior to this time. -For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react -by sending a graceful termination signal to the containers in the pod. After that 30 seconds, -the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, -remove the pod from the API. In the presence of network partitions, this object may still -exist after this timestamp, until an administrator or automated process can determine the -resource is fully terminated. -If not set, graceful deletion of the object has not been requested. - -Populated by the system when a graceful deletion is requested. -Read-only. -More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata -+optional | | +| deletionTimestamp | [Time](#time)| `Time` | | | | | | finalizers | []string| `[]string` | | | Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries @@ -3060,7 +3037,7 @@ More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api- > This volume finds the bound PV and mounts that volume for the pod. A PersistentVolumeClaimVolumeSource is, essentially, a wrapper around another type of volume that is owned by someone else (the system). - + @@ -3082,7 +3059,7 @@ Default false. > +enum - + @@ -3095,7 +3072,7 @@ Default false. ### PhotonPersistentDiskVolumeSource - + @@ -3114,7 +3091,7 @@ Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. | | > Plugin is an Object with exactly one key - + @@ -3123,7 +3100,7 @@ Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. | | ### PodAffinity - + @@ -3161,7 +3138,7 @@ co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running - + @@ -3189,7 +3166,7 @@ Empty topologyKey is not allowed. | | ### PodAntiAffinity - + @@ -3224,7 +3201,7 @@ podAffinityTerm are intersected, i.e. all terms must be satisfied. > PodFSGroupChangePolicy holds policies that will be used for applying fsGroup to a volume when volume is mounted. +enum - + @@ -3241,7 +3218,7 @@ when volume is mounted. > Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext. - + @@ -3305,7 +3282,7 @@ Note that this field cannot be set when spec.os.name is windows. ### PortworxVolumeSource - + @@ -3328,7 +3305,7 @@ the ReadOnly setting in VolumeMounts. > An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). - + @@ -3348,7 +3325,7 @@ the ReadOnly setting in VolumeMounts. > Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic. - + @@ -3396,7 +3373,7 @@ More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#cont > +enum - + @@ -3409,7 +3386,7 @@ More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#cont ### Progress - + | Name | Type | Go type | Default | Description | Example | |------|------|---------| ------- |-------------|---------| @@ -3421,7 +3398,7 @@ More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#cont > Represents a projected volume source - + @@ -3447,7 +3424,7 @@ mode, like fsGroup, and the result can be other mode bits set. > Prometheus is a prometheus metric to be emitted - + @@ -3471,7 +3448,7 @@ mode, like fsGroup, and the result can be other mode bits set. > +enum - + @@ -3486,7 +3463,7 @@ mode, like fsGroup, and the result can be other mode bits set. > PullPolicy describes a policy for if/when to pull a container image +enum - + @@ -3565,7 +3542,7 @@ cause implementors to also use a fixed point implementation. +protobuf.options.(gogoproto.goproto_stringer)=false +k8s:deepcopy-gen=true +k8s:openapi-gen=true - + @@ -3575,7 +3552,7 @@ cause implementors to also use a fixed point implementation. > Quobyte volumes do not support ownership management or SELinux relabeling. - + @@ -3608,7 +3585,7 @@ Defaults to serivceaccount user > RBD volumes support ownership management and SELinux relabeling. - + @@ -3652,7 +3629,7 @@ More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it > RawArtifact allows raw string content to be placed as an artifact in a container - + @@ -3669,7 +3646,7 @@ More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it ### ResourceClaim - + @@ -3688,7 +3665,7 @@ inside a container. | | > ResourceFieldSelector represents container resources (cpu, memory) and their output format +structType=atomic - + @@ -3708,14 +3685,14 @@ inside a container. | | ### ResourceList - + [ResourceList](#resource-list) ### ResourceRequirements - + @@ -3744,7 +3721,7 @@ This field is immutable. It can only be set for containers. > ResourceTemplate is a template subtype to manipulate kubernetes resources - + @@ -3776,7 +3753,7 @@ of the k8s resource in which it is acceptable to proceed to the following step | ### RetryAffinity - + @@ -3792,7 +3769,7 @@ of the k8s resource in which it is acceptable to proceed to the following step | > In order to prevent running steps on the same host, it uses "kubernetes.io/hostname". - + @@ -3801,7 +3778,7 @@ of the k8s resource in which it is acceptable to proceed to the following step | ### RetryPolicy - + | Name | Type | Go type | Default | Description | Example | |------|------|---------| ------- |-------------|---------| @@ -3813,7 +3790,7 @@ of the k8s resource in which it is acceptable to proceed to the following step | > RetryStrategy provides controls on how to retry a workflow step - + @@ -3836,7 +3813,7 @@ be retried and the retry strategy will be ignored | | > S3Artifact is the location of an S3 artifact - + @@ -3865,7 +3842,7 @@ be retried and the retry strategy will be ignored | | > S3EncryptionOptions used to determine encryption options during s3 operations - + @@ -3886,7 +3863,7 @@ be retried and the retry strategy will be ignored | | > SELinuxOptions are the labels to be applied to the container - + @@ -3911,7 +3888,7 @@ be retried and the retry strategy will be ignored | | > ScaleIOVolumeSource represents a persistent ScaleIO volume - + @@ -3950,7 +3927,7 @@ that is associated with this volume source. | | > ScriptTemplate is a template subtype to enable scripting through code steps - + @@ -4065,7 +4042,7 @@ Cannot be updated. > Only one profile source may be set. +union - + @@ -4088,7 +4065,7 @@ Must only be set if type is "Localhost". > +enum - + @@ -4103,7 +4080,7 @@ Must only be set if type is "Localhost". > The contents of the target Secret's Data field will represent the key-value pairs as environment variables. - + @@ -4126,7 +4103,7 @@ TODO: Add other useful fields. apiVersion, kind, uid? > +structType=atomic - + @@ -4153,7 +4130,7 @@ TODO: Add other useful fields. apiVersion, kind, uid? projected volume as files using the keys in the Data field as the file names. Note that this is identical to a secret volume source without the default mode. - + @@ -4186,7 +4163,7 @@ TODO: Add other useful fields. apiVersion, kind, uid? > The contents of the target Secret's Data field will be presented in a volume as files using the keys in the Data field as the file names. Secret volumes support ownership management and SELinux relabeling. - + @@ -4225,7 +4202,7 @@ More info: https://kubernetes.io/docs/concepts/storage/volumes#secret > Some fields are present in both SecurityContext and PodSecurityContext. When both are set, the values in SecurityContext take precedence. - + @@ -4241,41 +4218,41 @@ the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN -Note that this field cannot be set when spec.os.name is windows. -+optional | | -| capabilities | [Capabilities](#capabilities)| `Capabilities` | | | | | -| privileged | boolean| `bool` | | | Run container in privileged mode. -Processes in privileged containers are essentially equivalent to root on the host. -Defaults to false. -Note that this field cannot be set when spec.os.name is windows. -+optional | | -| procMount | [ProcMountType](#proc-mount-type)| `ProcMountType` | | | | | -| readOnlyRootFilesystem | boolean| `bool` | | | Whether this container has a read-only root filesystem. -Default is false. -Note that this field cannot be set when spec.os.name is windows. -+optional | | -| runAsGroup | int64 (formatted integer)| `int64` | | | The GID to run the entrypoint of the container process. -Uses runtime default if unset. -May also be set in PodSecurityContext. If set in both SecurityContext and -PodSecurityContext, the value specified in SecurityContext takes precedence. -Note that this field cannot be set when spec.os.name is windows. -+optional | | -| runAsNonRoot | boolean| `bool` | | | Indicates that the container must run as a non-root user. -If true, the Kubelet will validate the image at runtime to ensure that it -does not run as UID 0 (root) and fail to start the container if it does. -If unset or false, no such validation will be performed. -May also be set in PodSecurityContext. If set in both SecurityContext and -PodSecurityContext, the value specified in SecurityContext takes precedence. -+optional | | -| runAsUser | int64 (formatted integer)| `int64` | | | The UID to run the entrypoint of the container process. -Defaults to user specified in image metadata if unspecified. -May also be set in PodSecurityContext. If set in both SecurityContext and -PodSecurityContext, the value specified in SecurityContext takes precedence. -Note that this field cannot be set when spec.os.name is windows. -+optional | | -| seLinuxOptions | [SELinuxOptions](#s-e-linux-options)| `SELinuxOptions` | | | | | -| seccompProfile | [SeccompProfile](#seccomp-profile)| `SeccompProfile` | | | | | -| windowsOptions | [WindowsSecurityContextOptions](#windows-security-context-options)| `WindowsSecurityContextOptions` | | | | | + Note that this field cannot be set when spec.os.name is windows. + +optional | | + | capabilities | [Capabilities](#capabilities)| `Capabilities` | | | | | + | privileged | boolean| `bool` | | | Run container in privileged mode. + Processes in privileged containers are essentially equivalent to root on the host. + Defaults to false. + Note that this field cannot be set when spec.os.name is windows. + +optional | | + | procMount | [ProcMountType](#proc-mount-type)| `ProcMountType` | | | | | + | readOnlyRootFilesystem | boolean| `bool` | | | Whether this container has a read-only root filesystem. + Default is false. + Note that this field cannot be set when spec.os.name is windows. + +optional | | + | runAsGroup | int64 (formatted integer)| `int64` | | | The GID to run the entrypoint of the container process. + Uses runtime default if unset. + May also be set in PodSecurityContext. If set in both SecurityContext and + PodSecurityContext, the value specified in SecurityContext takes precedence. + Note that this field cannot be set when spec.os.name is windows. + +optional | | + | runAsNonRoot | boolean| `bool` | | | Indicates that the container must run as a non-root user. + If true, the Kubelet will validate the image at runtime to ensure that it + does not run as UID 0 (root) and fail to start the container if it does. + If unset or false, no such validation will be performed. + May also be set in PodSecurityContext. If set in both SecurityContext and + PodSecurityContext, the value specified in SecurityContext takes precedence. + +optional | | + | runAsUser | int64 (formatted integer)| `int64` | | | The UID to run the entrypoint of the container process. + Defaults to user specified in image metadata if unspecified. + May also be set in PodSecurityContext. If set in both SecurityContext and + PodSecurityContext, the value specified in SecurityContext takes precedence. + Note that this field cannot be set when spec.os.name is windows. + +optional | | + | seLinuxOptions | [SELinuxOptions](#s-e-linux-options)| `SELinuxOptions` | | | | | + | seccompProfile | [SeccompProfile](#seccomp-profile)| `SeccompProfile` | | | | | + | windowsOptions | [WindowsSecurityContextOptions](#windows-security-context-options)| `WindowsSecurityContextOptions` | | | | | @@ -4283,7 +4260,7 @@ Note that this field cannot be set when spec.os.name is windows. > SemaphoreRef is a reference of Semaphore - + @@ -4302,7 +4279,7 @@ Note that this field cannot be set when spec.os.name is windows. > Sequence expands a workflow step into numeric range - + @@ -4326,7 +4303,7 @@ Note that this field cannot be set when spec.os.name is windows. volume. This projection can be used to insert a service account token into the pods runtime filesystem for use against APIs (Kubernetes API Server or otherwise). - + @@ -4356,7 +4333,7 @@ token into. | | ### StorageMedium - + | Name | Type | Go type | Default | Description | Example | |------|------|---------| ------- |-------------|---------| @@ -4367,7 +4344,7 @@ token into. | | ### StorageOSVolumeSource - + @@ -4398,7 +4375,7 @@ Namespaces that do not pre-exist within StorageOS will be created. ### SuppliedValueFrom - + [interface{}](#interface) @@ -4406,7 +4383,7 @@ Namespaces that do not pre-exist within StorageOS will be created. > SuspendTemplate is a template subtype to suspend a workflow at a predetermined point in time - + @@ -4425,7 +4402,7 @@ Could also be a Duration, e.g.: "2m", "6h" | | > Synchronization holds synchronization lock configuration - + @@ -4444,7 +4421,7 @@ Could also be a Duration, e.g.: "2m", "6h" | | > Sysctl defines a kernel parameter to be set - + @@ -4463,7 +4440,7 @@ Could also be a Duration, e.g.: "2m", "6h" | | > TCPSocketAction describes an action based on opening a socket - + @@ -4483,7 +4460,7 @@ Could also be a Duration, e.g.: "2m", "6h" | | > +enum - + @@ -4497,7 +4474,7 @@ Could also be a Duration, e.g.: "2m", "6h" | | > TarStrategy will tar and gzip the file or directory when saving - + @@ -4516,7 +4493,7 @@ Defaults to gzip.DefaultCompression. | | > Template is a reusable and composable unit of execution in a workflow - + @@ -4592,7 +4569,7 @@ This duration also includes time in which the node spends in Pending state. This ### TemplateRef - + @@ -4610,7 +4587,7 @@ This duration also includes time in which the node spends in Pending state. This > +enum - + @@ -4620,12 +4597,24 @@ This duration also includes time in which the node spends in Pending state. This +### Time + + +> +protobuf.options.marshal=false ++protobuf.as=Timestamp ++protobuf.options.(gogoproto.goproto_stringer)=false + + + + +[interface{}](#interface) + ### Toleration > The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . - + @@ -4655,7 +4644,7 @@ If the operator is Exists, the value should be empty, otherwise just a regular s > +enum - + @@ -4668,14 +4657,14 @@ If the operator is Exists, the value should be empty, otherwise just a regular s ### Transformation - + [][TransformationStep](#transformation-step) ### TransformationStep - + @@ -4690,7 +4679,7 @@ If the operator is Exists, the value should be empty, otherwise just a regular s ### Type - + | Name | Type | Go type | Default | Description | Example | |------|------|---------| ------- |-------------|---------| @@ -4704,7 +4693,7 @@ If the operator is Exists, the value should be empty, otherwise just a regular s > TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace. +structType=atomic - + @@ -4726,7 +4715,7 @@ For any other third-party types, APIGroup is required. ### TypedObjectReference - + @@ -4754,7 +4743,7 @@ Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGr > UID is a type that holds unique ID values, including UUIDs. Because we don't ONLY use UUIDs, this is an alias to string. Being a type captures intent and helps make sure that UIDs and names do not get conflated. - + @@ -4771,7 +4760,7 @@ intent and helps make sure that UIDs and names do not get conflated. | | > URIScheme identifies the scheme used for connection to a host for Get actions +enum - + @@ -4785,7 +4774,7 @@ intent and helps make sure that UIDs and names do not get conflated. | | ### UserContainer - + @@ -4900,7 +4889,7 @@ Cannot be updated. > ValueFrom describes a location in which to obtain the value to a parameter - + @@ -4926,7 +4915,7 @@ Cannot be updated. ### Volume - + @@ -4972,7 +4961,7 @@ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/nam ### VolumeDevice - + @@ -4988,7 +4977,7 @@ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/nam ### VolumeMount - + @@ -5018,7 +5007,7 @@ SubPathExpr and SubPath are mutually exclusive. > Projection that may be projected along with other supported volume types - + @@ -5038,7 +5027,7 @@ SubPathExpr and SubPath are mutually exclusive. ### VsphereVirtualDiskVolumeSource - + @@ -5062,7 +5051,7 @@ Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. > The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) - + @@ -5081,7 +5070,7 @@ in the range 1-100. | | ### WindowsSecurityContextOptions - + @@ -5114,7 +5103,7 @@ PodSecurityContext, the value specified in SecurityContext takes precedence. ### Workflow - + @@ -5130,7 +5119,7 @@ PodSecurityContext, the value specified in SecurityContext takes precedence. > ZipStrategy will unzip zipped input artifacts - + From 8950a75b5a012556c7123320c61a2f6904bdf54e Mon Sep 17 00:00:00 2001 From: shuangkun Date: Tue, 9 Apr 2024 21:12:50 +0800 Subject: [PATCH 20/26] fix: doc Signed-off-by: shuangkun --- docs/executor_swagger.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/executor_swagger.md b/docs/executor_swagger.md index 5cf3dfd0f399..7d2c99e5ea94 100644 --- a/docs/executor_swagger.md +++ b/docs/executor_swagger.md @@ -5123,4 +5123,4 @@ PodSecurityContext, the value specified in SecurityContext takes precedence. -[interface{}](#interface) +[interface{}](#interface) \ No newline at end of file From 9a270622759e1d2d28d6ed92a017b649cc7411d0 Mon Sep 17 00:00:00 2001 From: shuangkun Date: Tue, 9 Apr 2024 21:15:17 +0800 Subject: [PATCH 21/26] fix: doc Signed-off-by: shuangkun --- docs/executor_swagger.md | 496 +++++++++++++++++++-------------------- 1 file changed, 248 insertions(+), 248 deletions(-) diff --git a/docs/executor_swagger.md b/docs/executor_swagger.md index 7d2c99e5ea94..e78cbb50df6b 100644 --- a/docs/executor_swagger.md +++ b/docs/executor_swagger.md @@ -2,7 +2,7 @@ # The API for an executor plugin. - + ## Informations @@ -13,13 +13,13 @@ ## Content negotiation ### URI Schemes -* http + * http ### Consumes -* application/json + * application/json ### Produces -* application/json + * application/json ## All endpoints @@ -28,7 +28,7 @@ | Method | URI | Name | Summary | |---------|---------|--------|---------| | POST | /api/v1/template.execute | [execute template](#execute-template) | | - + ## Paths @@ -57,8 +57,8 @@ POST /api/v1/template.execute Status: OK ###### Schema - - + + [ExecuteTemplateReply](#execute-template-reply) @@ -71,7 +71,7 @@ Status: OK must also be in the same AWS zone as the kubelet. An AWS EBS disk can only be mounted as read/write once. AWS EBS volumes support ownership management and SELinux relabeling. - + @@ -103,7 +103,7 @@ More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockst ### Affinity - + @@ -121,7 +121,7 @@ More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockst > +kubebuilder:validation:Type=number - + @@ -132,7 +132,7 @@ More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockst > It will unmarshall int64, int32, float64, float32, boolean, a plain string and represents it as string. It will marshall back to string - marshalling is not symmetric. - + @@ -147,7 +147,7 @@ It will marshall back to string - marshalling is not symmetric. | | > ArchiveStrategy describes how to archive files/directory when saving artifacts - + @@ -167,7 +167,7 @@ It will marshall back to string - marshalling is not symmetric. | | > Arguments to a template - + @@ -188,7 +188,7 @@ It will marshall back to string - marshalling is not symmetric. | | > Artifact indicates an artifact to place at a specified path - + @@ -229,7 +229,7 @@ set when loading input artifacts. | | > 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 - + @@ -248,7 +248,7 @@ set when loading input artifacts. | | ### ArtifactGCStrategy - + | Name | Type | Go type | Default | Description | Example | |------|------|---------| ------- |-------------|---------| @@ -262,7 +262,7 @@ set when loading input artifacts. | | > It is used as single artifact in the context of inputs/outputs (e.g. outputs.artifacts.artname). It is also used to describe the location of multiple artifacts such as the archive location of a single workflow step, which the executor will use as a default location to store its files. - + @@ -289,7 +289,7 @@ of a single workflow step, which the executor will use as a default location to > ArtifactPaths expands a step from a collection of artifacts - + @@ -330,7 +330,7 @@ set when loading input artifacts. | | > ArtifactoryArtifact is the location of an artifactory artifact - + @@ -349,7 +349,7 @@ set when loading input artifacts. | | ### Artifacts - + [][Artifact](#artifact) @@ -357,7 +357,7 @@ set when loading input artifacts. | | > AzureArtifact is the location of a an Azure Storage artifact - + @@ -379,7 +379,7 @@ set when loading input artifacts. | | > +enum - + @@ -393,7 +393,7 @@ set when loading input artifacts. | | > +enum - + @@ -406,7 +406,7 @@ set when loading input artifacts. | | ### AzureDiskVolumeSource - + @@ -431,7 +431,7 @@ the ReadOnly setting in VolumeMounts. ### AzureFileVolumeSource - + @@ -451,7 +451,7 @@ the ReadOnly setting in VolumeMounts. > Backoff is a backoff strategy to use within retryStrategy - + @@ -471,7 +471,7 @@ the ReadOnly setting in VolumeMounts. > BasicAuth describes the secret selectors required for basic authentication - + @@ -490,7 +490,7 @@ the ReadOnly setting in VolumeMounts. > Represents a source location of a volume to mount, managed by an external CSI driver - + @@ -520,7 +520,7 @@ driver. Consult your driver's documentation for supported values. > Cache is the configuration for the type of cache to be used - + @@ -537,7 +537,7 @@ driver. Consult your driver's documentation for supported values. ### Capabilities - + @@ -556,7 +556,7 @@ driver. Consult your driver's documentation for supported values. > Capability represent POSIX capabilities type - + @@ -571,7 +571,7 @@ driver. Consult your driver's documentation for supported values. > Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling. - + @@ -605,7 +605,7 @@ More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it > A Cinder volume must exist before mounting to a container. The volume must also be in the same region as the kubelet. Cinder volumes support ownership management and SELinux relabeling. - + @@ -634,7 +634,7 @@ More info: https://examples.k8s.io/mysql-cinder-pd/README.md | | > ClientCertAuth holds necessary information for client authentication via certificates - + @@ -654,7 +654,7 @@ More info: https://examples.k8s.io/mysql-cinder-pd/README.md | | > The contents of the target ConfigMap's Data field will represent the key-value pairs as environment variables. - + @@ -677,7 +677,7 @@ TODO: Add other useful fields. apiVersion, kind, uid? > +structType=atomic - + @@ -705,7 +705,7 @@ projected volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths. Note that this is identical to a configmap volume source without the default mode. - + @@ -739,7 +739,7 @@ TODO: Add other useful fields. apiVersion, kind, uid? volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths. ConfigMap volumes support ownership management and SELinux relabeling. - + @@ -777,7 +777,7 @@ TODO: Add other useful fields. apiVersion, kind, uid? ### Container - + @@ -887,7 +887,7 @@ Cannot be updated. ### ContainerNode - + @@ -998,7 +998,7 @@ Cannot be updated. ### ContainerPort - + @@ -1027,7 +1027,7 @@ referred to by services. > ContainerSetRetryStrategy provides controls on how to retry a container set - + @@ -1046,7 +1046,7 @@ Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h". | | ### ContainerSetTemplate - + @@ -1064,7 +1064,7 @@ Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h". | | > It can be specified if the workflow should continue when the pod errors, fails or both. - + @@ -1083,7 +1083,7 @@ Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h". | | > Counter is a Counter prometheus metric - + @@ -1101,7 +1101,7 @@ Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h". | | > CreateS3BucketOptions options used to determine automatic automatic bucket-creation process - + @@ -1119,7 +1119,7 @@ Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h". | | > DAGTask represents a node in the graph during DAG execution - + @@ -1154,7 +1154,7 @@ which is expected to be a JSON list. | | > DAGTemplate is a template subtype for directed acyclic graph templates - + @@ -1181,7 +1181,7 @@ More info and example about this feature at https://github.com/argoproj/argo-wor > Data is a data template - + @@ -1200,7 +1200,7 @@ More info and example about this feature at https://github.com/argoproj/argo-wor > DataSource sources external data into a data template - + @@ -1219,7 +1219,7 @@ More info and example about this feature at https://github.com/argoproj/argo-wor > Note that this is identical to a downwardAPI volume source without the default mode. - + @@ -1238,7 +1238,7 @@ mode. > DownwardAPIVolumeFile represents information to create the file containing the pod field - + @@ -1265,7 +1265,7 @@ mode, like fsGroup, and the result can be other mode bits set. > Downward API volumes support ownership management and SELinux relabeling. - + @@ -1295,7 +1295,7 @@ mode, like fsGroup, and the result can be other mode bits set. > Duration is a wrapper around time.Duration which supports correct marshaling to YAML and JSON. In particular, it marshals into strings, which can be used as map keys in json. - + @@ -1305,7 +1305,7 @@ can be used as map keys in json. > Empty directory volumes support ownership management and SELinux relabeling. - + @@ -1324,7 +1324,7 @@ can be used as map keys in json. > EnvFromSource represents the source of a set of ConfigMaps - + @@ -1344,7 +1344,7 @@ can be used as map keys in json. ### EnvVar - + @@ -1370,7 +1370,7 @@ Defaults to "". ### EnvVarSource - + @@ -1388,7 +1388,7 @@ Defaults to "". ### EphemeralVolumeSource - + @@ -1403,7 +1403,7 @@ Defaults to "". ### ExecAction - + @@ -1423,7 +1423,7 @@ Exit status of 0 is treated as live/healthy and non-zero is unhealthy. ### ExecuteTemplateArgs - + @@ -1439,7 +1439,7 @@ Exit status of 0 is treated as live/healthy and non-zero is unhealthy. ### ExecuteTemplateReply - + @@ -1455,7 +1455,7 @@ Exit status of 0 is treated as live/healthy and non-zero is unhealthy. ### ExecutorConfig - + @@ -1472,7 +1472,7 @@ Exit status of 0 is treated as live/healthy and non-zero is unhealthy. > Fibre Channel volumes can only be mounted as read/write once. Fibre Channel volumes support ownership management and SELinux relabeling. - + @@ -1513,7 +1513,7 @@ If a key maps to an empty Fields value, the field that key represents is part of The exact format is defined in sigs.k8s.io/structured-merge-diff +protobuf.options.(gogoproto.goproto_stringer)=false - + @@ -1524,7 +1524,7 @@ The exact format is defined in sigs.k8s.io/structured-merge-diff > FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. - + @@ -1553,7 +1553,7 @@ the ReadOnly setting in VolumeMounts. > One and only one of datasetName and datasetUUID should be set. Flocker volumes do not support ownership management or SELinux relabeling. - + @@ -1578,7 +1578,7 @@ should be considered as deprecated also be in the same GCE project and zone as the kubelet. A GCE PD can only be mounted as read/write once or read-only many times. GCE PDs support ownership management and SELinux relabeling. - + @@ -1613,7 +1613,7 @@ More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk > GCSArtifact is the location of a GCS artifact - + @@ -1632,7 +1632,7 @@ More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk ### GRPCAction - + @@ -1654,7 +1654,7 @@ If this is not specified, the default behavior is defined by gRPC. > Gauge is a Gauge prometheus metric - + @@ -1674,7 +1674,7 @@ value is the value of the metric | | ### GaugeOperation - + | Name | Type | Go type | Default | Description | Example | |------|------|---------| ------- |-------------|---------| @@ -1686,7 +1686,7 @@ value is the value of the metric | | > GitArtifact is the location of an git artifact - + @@ -1717,7 +1717,7 @@ number of commits from the branch tip | | > DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod's container. - + @@ -1742,7 +1742,7 @@ the subdirectory with the given name. > Glusterfs volumes do not support ownership management or SELinux relabeling. - + @@ -1767,7 +1767,7 @@ More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod > HDFSArtifact is the location of an HDFS artifact - + @@ -1797,7 +1797,7 @@ It must be set if keytab is used. | | ### HTTP - + @@ -1820,7 +1820,7 @@ It must be set if keytab is used. | | > HTTPArtifact allows a file served on HTTP to be placed as an input artifact in a container - + @@ -1839,7 +1839,7 @@ It must be set if keytab is used. | | ### HTTPAuth - + @@ -1856,7 +1856,7 @@ It must be set if keytab is used. | | ### HTTPBodySource - + @@ -1871,7 +1871,7 @@ It must be set if keytab is used. | | ### HTTPGetAction - + @@ -1894,7 +1894,7 @@ It must be set if keytab is used. | | ### HTTPHeader - + @@ -1911,7 +1911,7 @@ It must be set if keytab is used. | | ### HTTPHeaderSource - + @@ -1926,7 +1926,7 @@ It must be set if keytab is used. | | ### HTTPHeaders - + [][HTTPHeader](#http-header) @@ -1934,7 +1934,7 @@ It must be set if keytab is used. | | > Header indicate a key-value request header to be used when fetching artifacts over HTTP - + @@ -1953,7 +1953,7 @@ It must be set if keytab is used. | | > Histogram is a Histogram prometheus metric - + @@ -1973,7 +1973,7 @@ It must be set if keytab is used. | | > HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the pod's hosts file. - + @@ -1992,7 +1992,7 @@ pod's hosts file. > +enum - + @@ -2006,7 +2006,7 @@ pod's hosts file. > Host path volumes do not support ownership management or SELinux relabeling. - + @@ -2028,7 +2028,7 @@ More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath | | > ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling. - + @@ -2073,7 +2073,7 @@ is other than default (typically TCP ports 860 and 3260). | | > Inputs are the mechanism for passing parameters, artifacts, volumes from one template to another - + @@ -2096,7 +2096,7 @@ is other than default (typically TCP ports 860 and 3260). | | > +protobuf=true +protobuf.options.(gogoproto.goproto_stringer)=false +k8s:openapi-gen=true - + @@ -2117,7 +2117,7 @@ is other than default (typically TCP ports 860 and 3260). | | > +protobuf.options.(gogoproto.goproto_stringer)=false +kubebuilder:validation:Type=object - + @@ -2126,7 +2126,7 @@ is other than default (typically TCP ports 860 and 3260). | | ### KeyToPath - + @@ -2156,7 +2156,7 @@ May not start with the string '..'. | | matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects. +structType=atomic - + @@ -2178,7 +2178,7 @@ operator is "In", and the values array contains only "value". The requirements a ### LabelSelectorOperator - + | Name | Type | Go type | Default | Description | Example | |------|------|---------| ------- |-------------|---------| @@ -2191,7 +2191,7 @@ operator is "In", and the values array contains only "value". The requirements a > A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - + @@ -2219,7 +2219,7 @@ merge patch. > Lifecycle describes actions that the management system should take in response to container lifecycle events. For the PostStart and PreStop lifecycle handlers, management of the container blocks until the action is complete, unless the container process fails, in which case the handler is aborted. - + @@ -2239,7 +2239,7 @@ until the action is complete, unless the container process fails, in which case > LifecycleHandler defines a specific action that should be taken in a lifecycle hook. One and only one of the fields, except TCPSocket must be specified. - + @@ -2258,7 +2258,7 @@ hook. One and only one of the fields, except TCPSocket must be specified. ### LifecycleHook - + @@ -2277,7 +2277,7 @@ be retried and the retry strategy will be ignored | | ### LifecycleHooks - + [LifecycleHooks](#lifecycle-hooks) @@ -2287,7 +2287,7 @@ be retried and the retry strategy will be ignored | | > LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace. +structType=atomic - + @@ -2309,7 +2309,7 @@ TODO: Add other useful fields. apiVersion, kind, uid? > ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to. - + @@ -2342,7 +2342,7 @@ it always corresponds to the version of the main resource. | | ### ManagedFieldsOperationType - + | Name | Type | Go type | Default | Description | Example | |------|------|---------| ------- |-------------|---------| @@ -2353,7 +2353,7 @@ it always corresponds to the version of the main resource. | | ### ManifestFrom - + @@ -2369,7 +2369,7 @@ it always corresponds to the version of the main resource. | | > Memoization enables caching for the Outputs of the template - + @@ -2390,7 +2390,7 @@ than the MaxAge, it will be ignored. | | > Pod metdata - + @@ -2409,7 +2409,7 @@ than the MaxAge, it will be ignored. | | > MetricLabel is a single label for a prometheus metric - + @@ -2428,7 +2428,7 @@ than the MaxAge, it will be ignored. | | > Metrics are a list of metrics emitted from a Workflow/Template - + @@ -2446,7 +2446,7 @@ than the MaxAge, it will be ignored. | | > +enum - + @@ -2460,7 +2460,7 @@ than the MaxAge, it will be ignored. | | > Mutex holds Mutex configuration - + @@ -2479,7 +2479,7 @@ than the MaxAge, it will be ignored. | | > NFS volumes do not support ownership management or SELinux relabeling. - + @@ -2503,7 +2503,7 @@ More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs | | ### NodeAffinity - + @@ -2528,7 +2528,7 @@ node(s) with the highest sum are the most preferred. ### NodePhase - + | Name | Type | Go type | Default | Description | Example | |------|------|---------| ------- |-------------|---------| @@ -2539,7 +2539,7 @@ node(s) with the highest sum are the most preferred. ### NodeResult - + @@ -2561,7 +2561,7 @@ node(s) with the highest sum are the most preferred. over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms. +structType=atomic - + @@ -2581,7 +2581,7 @@ by the node selector terms. > A node selector operator is the set of operators that can be used in a node selector requirement. +enum - + @@ -2598,7 +2598,7 @@ a node selector requirement. > A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - + @@ -2626,7 +2626,7 @@ This array is replaced during a strategic merge patch. them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. +structType=atomic - + @@ -2649,7 +2649,7 @@ The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. > NoneStrategy indicates to skip tar process and upload the files or directory tree as independent files. Note that if the artifact is a directory, the artifact driver must support the ability to save/load the directory appropriately. - + @@ -2659,7 +2659,7 @@ save/load the directory appropriately. > OAuth2Auth holds all information for client authentication via OAuth2 tokens - + @@ -2681,7 +2681,7 @@ save/load the directory appropriately. > EndpointParam is for requesting optional fields that should be sent in the oauth request - + @@ -2700,7 +2700,7 @@ save/load the directory appropriately. > OSSArtifact is the location of an Alibaba Cloud OSS artifact - + @@ -2726,7 +2726,7 @@ save/load the directory appropriately. > OSSLifecycleRule specifies how to manage bucket's lifecycle - + @@ -2745,7 +2745,7 @@ save/load the directory appropriately. > +structType=atomic - + @@ -2764,7 +2764,7 @@ save/load the directory appropriately. ### ObjectMeta - + @@ -2782,7 +2782,7 @@ save/load the directory appropriately. > Outputs hold parameters, artifacts, and results from a step - + @@ -2808,7 +2808,7 @@ save/load the directory appropriately. object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field. +structType=atomic - + @@ -2842,7 +2842,7 @@ More info: http://kubernetes.io/docs/user-guide/identifiers#names | | > +kubebuilder:validation:Type=array - + @@ -2852,7 +2852,7 @@ More info: http://kubernetes.io/docs/user-guide/identifiers#names | | > Parameter indicate a passed string parameter to a service template with an optional default value - + @@ -2877,7 +2877,7 @@ More info: http://kubernetes.io/docs/user-guide/identifiers#names | | > +enum - + @@ -2892,7 +2892,7 @@ More info: http://kubernetes.io/docs/user-guide/identifiers#names | | > PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes - + @@ -2923,7 +2923,7 @@ More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class- > PersistentVolumeClaimTemplate is used to produce PersistentVolumeClaim objects as part of an EphemeralVolumeSource. - + @@ -3037,7 +3037,7 @@ More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api- > This volume finds the bound PV and mounts that volume for the pod. A PersistentVolumeClaimVolumeSource is, essentially, a wrapper around another type of volume that is owned by someone else (the system). - + @@ -3059,7 +3059,7 @@ Default false. > +enum - + @@ -3072,7 +3072,7 @@ Default false. ### PhotonPersistentDiskVolumeSource - + @@ -3091,7 +3091,7 @@ Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. | | > Plugin is an Object with exactly one key - + @@ -3100,7 +3100,7 @@ Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. | | ### PodAffinity - + @@ -3138,7 +3138,7 @@ co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running - + @@ -3166,7 +3166,7 @@ Empty topologyKey is not allowed. | | ### PodAntiAffinity - + @@ -3201,7 +3201,7 @@ podAffinityTerm are intersected, i.e. all terms must be satisfied. > PodFSGroupChangePolicy holds policies that will be used for applying fsGroup to a volume when volume is mounted. +enum - + @@ -3218,7 +3218,7 @@ when volume is mounted. > Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext. - + @@ -3282,7 +3282,7 @@ Note that this field cannot be set when spec.os.name is windows. ### PortworxVolumeSource - + @@ -3305,7 +3305,7 @@ the ReadOnly setting in VolumeMounts. > An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). - + @@ -3325,7 +3325,7 @@ the ReadOnly setting in VolumeMounts. > Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic. - + @@ -3373,7 +3373,7 @@ More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#cont > +enum - + @@ -3386,7 +3386,7 @@ More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#cont ### Progress - + | Name | Type | Go type | Default | Description | Example | |------|------|---------| ------- |-------------|---------| @@ -3398,7 +3398,7 @@ More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#cont > Represents a projected volume source - + @@ -3424,7 +3424,7 @@ mode, like fsGroup, and the result can be other mode bits set. > Prometheus is a prometheus metric to be emitted - + @@ -3448,7 +3448,7 @@ mode, like fsGroup, and the result can be other mode bits set. > +enum - + @@ -3463,7 +3463,7 @@ mode, like fsGroup, and the result can be other mode bits set. > PullPolicy describes a policy for if/when to pull a container image +enum - + @@ -3542,7 +3542,7 @@ cause implementors to also use a fixed point implementation. +protobuf.options.(gogoproto.goproto_stringer)=false +k8s:deepcopy-gen=true +k8s:openapi-gen=true - + @@ -3552,7 +3552,7 @@ cause implementors to also use a fixed point implementation. > Quobyte volumes do not support ownership management or SELinux relabeling. - + @@ -3585,7 +3585,7 @@ Defaults to serivceaccount user > RBD volumes support ownership management and SELinux relabeling. - + @@ -3629,7 +3629,7 @@ More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it > RawArtifact allows raw string content to be placed as an artifact in a container - + @@ -3646,7 +3646,7 @@ More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it ### ResourceClaim - + @@ -3665,7 +3665,7 @@ inside a container. | | > ResourceFieldSelector represents container resources (cpu, memory) and their output format +structType=atomic - + @@ -3685,14 +3685,14 @@ inside a container. | | ### ResourceList - + [ResourceList](#resource-list) ### ResourceRequirements - + @@ -3721,7 +3721,7 @@ This field is immutable. It can only be set for containers. > ResourceTemplate is a template subtype to manipulate kubernetes resources - + @@ -3753,7 +3753,7 @@ of the k8s resource in which it is acceptable to proceed to the following step | ### RetryAffinity - + @@ -3769,7 +3769,7 @@ of the k8s resource in which it is acceptable to proceed to the following step | > In order to prevent running steps on the same host, it uses "kubernetes.io/hostname". - + @@ -3778,7 +3778,7 @@ of the k8s resource in which it is acceptable to proceed to the following step | ### RetryPolicy - + | Name | Type | Go type | Default | Description | Example | |------|------|---------| ------- |-------------|---------| @@ -3790,7 +3790,7 @@ of the k8s resource in which it is acceptable to proceed to the following step | > RetryStrategy provides controls on how to retry a workflow step - + @@ -3813,7 +3813,7 @@ be retried and the retry strategy will be ignored | | > S3Artifact is the location of an S3 artifact - + @@ -3842,7 +3842,7 @@ be retried and the retry strategy will be ignored | | > S3EncryptionOptions used to determine encryption options during s3 operations - + @@ -3863,7 +3863,7 @@ be retried and the retry strategy will be ignored | | > SELinuxOptions are the labels to be applied to the container - + @@ -3888,7 +3888,7 @@ be retried and the retry strategy will be ignored | | > ScaleIOVolumeSource represents a persistent ScaleIO volume - + @@ -3927,7 +3927,7 @@ that is associated with this volume source. | | > ScriptTemplate is a template subtype to enable scripting through code steps - + @@ -4042,7 +4042,7 @@ Cannot be updated. > Only one profile source may be set. +union - + @@ -4065,7 +4065,7 @@ Must only be set if type is "Localhost". > +enum - + @@ -4080,7 +4080,7 @@ Must only be set if type is "Localhost". > The contents of the target Secret's Data field will represent the key-value pairs as environment variables. - + @@ -4103,7 +4103,7 @@ TODO: Add other useful fields. apiVersion, kind, uid? > +structType=atomic - + @@ -4130,7 +4130,7 @@ TODO: Add other useful fields. apiVersion, kind, uid? projected volume as files using the keys in the Data field as the file names. Note that this is identical to a secret volume source without the default mode. - + @@ -4163,7 +4163,7 @@ TODO: Add other useful fields. apiVersion, kind, uid? > The contents of the target Secret's Data field will be presented in a volume as files using the keys in the Data field as the file names. Secret volumes support ownership management and SELinux relabeling. - + @@ -4202,7 +4202,7 @@ More info: https://kubernetes.io/docs/concepts/storage/volumes#secret > Some fields are present in both SecurityContext and PodSecurityContext. When both are set, the values in SecurityContext take precedence. - + @@ -4218,41 +4218,41 @@ the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN - Note that this field cannot be set when spec.os.name is windows. - +optional | | - | capabilities | [Capabilities](#capabilities)| `Capabilities` | | | | | - | privileged | boolean| `bool` | | | Run container in privileged mode. - Processes in privileged containers are essentially equivalent to root on the host. - Defaults to false. - Note that this field cannot be set when spec.os.name is windows. - +optional | | - | procMount | [ProcMountType](#proc-mount-type)| `ProcMountType` | | | | | - | readOnlyRootFilesystem | boolean| `bool` | | | Whether this container has a read-only root filesystem. - Default is false. - Note that this field cannot be set when spec.os.name is windows. - +optional | | - | runAsGroup | int64 (formatted integer)| `int64` | | | The GID to run the entrypoint of the container process. - Uses runtime default if unset. - May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name is windows. - +optional | | - | runAsNonRoot | boolean| `bool` | | | Indicates that the container must run as a non-root user. - If true, the Kubelet will validate the image at runtime to ensure that it - does not run as UID 0 (root) and fail to start the container if it does. - If unset or false, no such validation will be performed. - May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - +optional | | - | runAsUser | int64 (formatted integer)| `int64` | | | The UID to run the entrypoint of the container process. - Defaults to user specified in image metadata if unspecified. - May also be set in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name is windows. - +optional | | - | seLinuxOptions | [SELinuxOptions](#s-e-linux-options)| `SELinuxOptions` | | | | | - | seccompProfile | [SeccompProfile](#seccomp-profile)| `SeccompProfile` | | | | | - | windowsOptions | [WindowsSecurityContextOptions](#windows-security-context-options)| `WindowsSecurityContextOptions` | | | | | +Note that this field cannot be set when spec.os.name is windows. ++optional | | +| capabilities | [Capabilities](#capabilities)| `Capabilities` | | | | | +| privileged | boolean| `bool` | | | Run container in privileged mode. +Processes in privileged containers are essentially equivalent to root on the host. +Defaults to false. +Note that this field cannot be set when spec.os.name is windows. ++optional | | +| procMount | [ProcMountType](#proc-mount-type)| `ProcMountType` | | | | | +| readOnlyRootFilesystem | boolean| `bool` | | | Whether this container has a read-only root filesystem. +Default is false. +Note that this field cannot be set when spec.os.name is windows. ++optional | | +| runAsGroup | int64 (formatted integer)| `int64` | | | The GID to run the entrypoint of the container process. +Uses runtime default if unset. +May also be set in PodSecurityContext. If set in both SecurityContext and +PodSecurityContext, the value specified in SecurityContext takes precedence. +Note that this field cannot be set when spec.os.name is windows. ++optional | | +| runAsNonRoot | boolean| `bool` | | | Indicates that the container must run as a non-root user. +If true, the Kubelet will validate the image at runtime to ensure that it +does not run as UID 0 (root) and fail to start the container if it does. +If unset or false, no such validation will be performed. +May also be set in PodSecurityContext. If set in both SecurityContext and +PodSecurityContext, the value specified in SecurityContext takes precedence. ++optional | | +| runAsUser | int64 (formatted integer)| `int64` | | | The UID to run the entrypoint of the container process. +Defaults to user specified in image metadata if unspecified. +May also be set in PodSecurityContext. If set in both SecurityContext and +PodSecurityContext, the value specified in SecurityContext takes precedence. +Note that this field cannot be set when spec.os.name is windows. ++optional | | +| seLinuxOptions | [SELinuxOptions](#s-e-linux-options)| `SELinuxOptions` | | | | | +| seccompProfile | [SeccompProfile](#seccomp-profile)| `SeccompProfile` | | | | | +| windowsOptions | [WindowsSecurityContextOptions](#windows-security-context-options)| `WindowsSecurityContextOptions` | | | | | @@ -4260,7 +4260,7 @@ AllowPrivilegeEscalation is true always when the container is: > SemaphoreRef is a reference of Semaphore - + @@ -4279,7 +4279,7 @@ AllowPrivilegeEscalation is true always when the container is: > Sequence expands a workflow step into numeric range - + @@ -4303,7 +4303,7 @@ AllowPrivilegeEscalation is true always when the container is: volume. This projection can be used to insert a service account token into the pods runtime filesystem for use against APIs (Kubernetes API Server or otherwise). - + @@ -4333,7 +4333,7 @@ token into. | | ### StorageMedium - + | Name | Type | Go type | Default | Description | Example | |------|------|---------| ------- |-------------|---------| @@ -4344,7 +4344,7 @@ token into. | | ### StorageOSVolumeSource - + @@ -4375,7 +4375,7 @@ Namespaces that do not pre-exist within StorageOS will be created. ### SuppliedValueFrom - + [interface{}](#interface) @@ -4383,7 +4383,7 @@ Namespaces that do not pre-exist within StorageOS will be created. > SuspendTemplate is a template subtype to suspend a workflow at a predetermined point in time - + @@ -4402,7 +4402,7 @@ Could also be a Duration, e.g.: "2m", "6h" | | > Synchronization holds synchronization lock configuration - + @@ -4421,7 +4421,7 @@ Could also be a Duration, e.g.: "2m", "6h" | | > Sysctl defines a kernel parameter to be set - + @@ -4440,7 +4440,7 @@ Could also be a Duration, e.g.: "2m", "6h" | | > TCPSocketAction describes an action based on opening a socket - + @@ -4460,7 +4460,7 @@ Could also be a Duration, e.g.: "2m", "6h" | | > +enum - + @@ -4474,7 +4474,7 @@ Could also be a Duration, e.g.: "2m", "6h" | | > TarStrategy will tar and gzip the file or directory when saving - + @@ -4493,7 +4493,7 @@ Defaults to gzip.DefaultCompression. | | > Template is a reusable and composable unit of execution in a workflow - + @@ -4569,7 +4569,7 @@ This duration also includes time in which the node spends in Pending state. This ### TemplateRef - + @@ -4587,7 +4587,7 @@ This duration also includes time in which the node spends in Pending state. This > +enum - + @@ -4603,7 +4603,7 @@ This duration also includes time in which the node spends in Pending state. This > +protobuf.options.marshal=false +protobuf.as=Timestamp +protobuf.options.(gogoproto.goproto_stringer)=false - + @@ -4614,7 +4614,7 @@ This duration also includes time in which the node spends in Pending state. This > The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . - + @@ -4644,7 +4644,7 @@ If the operator is Exists, the value should be empty, otherwise just a regular s > +enum - + @@ -4657,14 +4657,14 @@ If the operator is Exists, the value should be empty, otherwise just a regular s ### Transformation - + [][TransformationStep](#transformation-step) ### TransformationStep - + @@ -4679,7 +4679,7 @@ If the operator is Exists, the value should be empty, otherwise just a regular s ### Type - + | Name | Type | Go type | Default | Description | Example | |------|------|---------| ------- |-------------|---------| @@ -4693,7 +4693,7 @@ If the operator is Exists, the value should be empty, otherwise just a regular s > TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace. +structType=atomic - + @@ -4715,7 +4715,7 @@ For any other third-party types, APIGroup is required. ### TypedObjectReference - + @@ -4743,7 +4743,7 @@ Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGr > UID is a type that holds unique ID values, including UUIDs. Because we don't ONLY use UUIDs, this is an alias to string. Being a type captures intent and helps make sure that UIDs and names do not get conflated. - + @@ -4760,7 +4760,7 @@ intent and helps make sure that UIDs and names do not get conflated. | | > URIScheme identifies the scheme used for connection to a host for Get actions +enum - + @@ -4774,7 +4774,7 @@ intent and helps make sure that UIDs and names do not get conflated. | | ### UserContainer - + @@ -4889,7 +4889,7 @@ Cannot be updated. > ValueFrom describes a location in which to obtain the value to a parameter - + @@ -4915,7 +4915,7 @@ Cannot be updated. ### Volume - + @@ -4961,7 +4961,7 @@ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/nam ### VolumeDevice - + @@ -4977,7 +4977,7 @@ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/nam ### VolumeMount - + @@ -5007,7 +5007,7 @@ SubPathExpr and SubPath are mutually exclusive. > Projection that may be projected along with other supported volume types - + @@ -5027,7 +5027,7 @@ SubPathExpr and SubPath are mutually exclusive. ### VsphereVirtualDiskVolumeSource - + @@ -5051,7 +5051,7 @@ Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. > The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) - + @@ -5070,7 +5070,7 @@ in the range 1-100. | | ### WindowsSecurityContextOptions - + @@ -5103,7 +5103,7 @@ PodSecurityContext, the value specified in SecurityContext takes precedence. ### Workflow - + @@ -5119,8 +5119,8 @@ PodSecurityContext, the value specified in SecurityContext takes precedence. > ZipStrategy will unzip zipped input artifacts + - -[interface{}](#interface) \ No newline at end of file +[interface{}](#interface) From cf4b6cb4a9e02e03dbded1dac6efb1d3faeee0b8 Mon Sep 17 00:00:00 2001 From: shuangkun Date: Tue, 9 Apr 2024 21:18:23 +0800 Subject: [PATCH 22/26] fix: swagger Signed-off-by: shuangkun --- pkg/plugins/executor/swagger.yml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/pkg/plugins/executor/swagger.yml b/pkg/plugins/executor/swagger.yml index 771ec455fca2..5e44fc6844fe 100644 --- a/pkg/plugins/executor/swagger.yml +++ b/pkg/plugins/executor/swagger.yml @@ -1,6 +1,6 @@ basePath: /api/v1 consumes: - - application/json +- application/json definitions: AWSElasticBlockStoreVolumeSource: description: |- @@ -1299,8 +1299,8 @@ definitions: workflow: $ref: '#/definitions/Workflow' required: - - workflow - - template + - workflow + - template type: object ExecuteTemplateReply: properties: @@ -4702,7 +4702,7 @@ definitions: metadata: $ref: '#/definitions/ObjectMeta' required: - - metadata + - metadata type: object ZipStrategy: description: ZipStrategy will unzip zipped input artifacts @@ -4716,21 +4716,21 @@ paths: post: operationId: executeTemplate parameters: - - in: body - name: Body - required: true - schema: - $ref: '#/definitions/ExecuteTemplateArgs' + - in: body + name: Body + required: true + schema: + $ref: '#/definitions/ExecuteTemplateArgs' responses: "200": $ref: '#/responses/executeTemplate' produces: - - application/json +- application/json responses: executeTemplate: description: "" schema: $ref: '#/definitions/ExecuteTemplateReply' schemes: - - http -swagger: "2.0" \ No newline at end of file +- http +swagger: "2.0" From e5889185635bce764f19eb5a5597c3f8acd76f23 Mon Sep 17 00:00:00 2001 From: shuangkun Date: Tue, 9 Apr 2024 23:39:39 +0800 Subject: [PATCH 23/26] fix: test Signed-off-by: shuangkun --- server/workflowarchive/archived_workflow_server.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/workflowarchive/archived_workflow_server.go b/server/workflowarchive/archived_workflow_server.go index 608af2f257ec..f8db8866d1eb 100644 --- a/server/workflowarchive/archived_workflow_server.go +++ b/server/workflowarchive/archived_workflow_server.go @@ -286,7 +286,7 @@ func (w *archivedWorkflowServer) RetryArchivedWorkflow(ctx context.Context, req if apierr.IsNotFound(err) { wf.ObjectMeta.ResourceVersion = "" wf.ObjectMeta.UID = "" - result, err := wfClient.ArgoprojV1alpha1().Workflows(req.Namespace).Create(ctx, wf, metav1.CreateOptions{}) + wf, err := wfClient.ArgoprojV1alpha1().Workflows(req.Namespace).Create(ctx, wf, metav1.CreateOptions{}) if err != nil { return nil, sutils.ToStatusError(err, codes.Internal) } @@ -296,7 +296,7 @@ func (w *archivedWorkflowServer) RetryArchivedWorkflow(ctx context.Context, req return nil, sutils.ToStatusError(err, codes.Internal) } - wf, err = wfClient.ArgoprojV1alpha1().Workflows(req.Namespace).Update(ctx, wf, metav1.UpdateOptions{}) + result, err := wfClient.ArgoprojV1alpha1().Workflows(req.Namespace).Update(ctx, wf, metav1.UpdateOptions{}) if err != nil { return nil, sutils.ToStatusError(err, codes.Internal) } From 14c06b6a314067ecbe10e6706123321486efb860 Mon Sep 17 00:00:00 2001 From: shuangkun Date: Wed, 10 Apr 2024 00:29:41 +0800 Subject: [PATCH 24/26] fix: test Signed-off-by: shuangkun --- workflow/controller/controller.go | 2 +- workflow/controller/operator.go | 4 ++-- workflow/util/util.go | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/workflow/controller/controller.go b/workflow/controller/controller.go index 5050957aac28..f22b459aeb76 100644 --- a/workflow/controller/controller.go +++ b/workflow/controller/controller.go @@ -598,7 +598,7 @@ func (wfc *WorkflowController) processNextPodCleanupItem(ctx context.Context) bo return err } wf.ObjectMeta.Labels[common.LabelKeyWorkflowRetryStatus] = "Retried" - wf, err = wfClient.Update(ctx, wf, metav1.UpdateOptions{}) + _, err = wfClient.Update(ctx, wf, metav1.UpdateOptions{}) if err != nil && !apierr.IsNotFound(err) { return err } diff --git a/workflow/controller/operator.go b/workflow/controller/operator.go index 1e14a1106301..fedc0e2ffbd4 100644 --- a/workflow/controller/operator.go +++ b/workflow/controller/operator.go @@ -3870,14 +3870,14 @@ func (woc *wfOperationCtx) shouldRetry() bool { } func (woc *wfOperationCtx) IsRetried() bool { - return woc.wf.ObjectMeta.Labels[common.LabelKeyWorkflowRetryStatus] != "Retried" + return woc.wf.ObjectMeta.Labels[common.LabelKeyWorkflowRetryStatus] != "Pending" } func (woc *wfOperationCtx) retryWorkflow(ctx context.Context) error { if woc.IsRetried() { return nil } - nodeFiledSelector := woc.wf.Labels[common.LabelKeyRetryNodeFieldSelector] + nodeFiledSelector := woc.wf.Annotations[common.LabelKeyRetryNodeFieldSelector] parametersStr := woc.wf.Labels[common.LabelKeyRetryParameters] var parameters []string err := json.Unmarshal([]byte(parametersStr), ¶meters) diff --git a/workflow/util/util.go b/workflow/util/util.go index 881538ed0857..86d97c48f5a3 100644 --- a/workflow/util/util.go +++ b/workflow/util/util.go @@ -845,7 +845,7 @@ func MarkWorkflowForRetry(ctx context.Context, wf *wfv1.Workflow, restartSuccess // 设置Retry的参数 newWF.ObjectMeta.Labels[common.LabelKeyWorkflowRetryStatus] = "Pending" - newWF.ObjectMeta.Labels[common.LabelKeyRetryNodeFieldSelector] = nodeFieldSelector + newWF.ObjectMeta.Annotations[common.LabelKeyRetryNodeFieldSelector] = nodeFieldSelector parametersStr, err := json.Marshal(parameters) if err != nil { return nil, errors.Errorf(errors.CodeBadRequest, "Cannot marshalling retry parameters to json: %s", parameters) From d7ae0aef777fc0e446539ee9e14fe18111eeef6e Mon Sep 17 00:00:00 2001 From: shuangkun Date: Wed, 10 Apr 2024 19:27:58 +0800 Subject: [PATCH 25/26] fix: change to label Co-authored-by: shuangkun Co-authored-by: AlbeeSo Signed-off-by: shuangkun --- test/e2e/cli_test.go | 48 +++++++++++++++++++++++-- test/e2e/testdata/retry-parameters.yaml | 18 ++++++++++ workflow/common/common.go | 20 ++++++++--- workflow/controller/controller.go | 44 ++++++++++++++++++----- workflow/controller/operator.go | 24 ++++++------- workflow/controller/pod_cleanup_key.go | 10 +++--- workflow/util/util.go | 13 ++++--- workflow/util/util_test.go | 2 +- 8 files changed, 140 insertions(+), 39 deletions(-) create mode 100644 test/e2e/testdata/retry-parameters.yaml diff --git a/test/e2e/cli_test.go b/test/e2e/cli_test.go index 54dc4fd517ad..65fce8a22ba1 100644 --- a/test/e2e/cli_test.go +++ b/test/e2e/cli_test.go @@ -20,6 +20,7 @@ import ( wfv1 "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1" "github.com/argoproj/argo-workflows/v3/test/e2e/fixtures" + "github.com/argoproj/argo-workflows/v3/workflow/common" ) const ( @@ -857,12 +858,51 @@ func (s *CLISuite) TestWorkflowRetry() { return wf.Status.AnyActiveSuspendNode(), "suspended node" }), time.Second*90). Then(). - ExpectWorkflow(func(t *testing.T, _ *metav1.ObjectMeta, status *wfv1.WorkflowStatus) { + ExpectWorkflow(func(t *testing.T, metadata *metav1.ObjectMeta, status *wfv1.WorkflowStatus) { outerStepsPodNode := status.Nodes.FindByDisplayName("steps-outer-step1") innerStepsPodNode := status.Nodes.FindByDisplayName("steps-inner-step1") assert.True(t, outerStepsPodNode.FinishedAt.Before(&retryTime)) assert.True(t, retryTime.Before(&innerStepsPodNode.FinishedAt)) + + assert.Equal(t, "Retried", metadata.GetLabels()[common.LabelKeyWorkflowRetryingStatus]) + assert.Equal(t, "true", metadata.GetAnnotations()[common.AnnotationKeyRetryRestartSuccessful]) + assert.Equal(t, "templateName=steps-inner", metadata.GetAnnotations()[common.AnnotationKeyRetryNodeFieldSelector]) + assert.Equal(t, "null", metadata.GetAnnotations()[common.AnnotationKeyRetryParameters]) + }) +} + +func (s *CLISuite) TestWorkflowRetryWithParameters() { + s.Given(). + Workflow("@testdata/retry-parameters.yaml"). + When(). + SubmitWorkflow(). + WaitForWorkflow(fixtures.ToBeFailed). + RunCli([]string{"logs", "@latest", "--follow"}, func(t *testing.T, output string, err error) { + if assert.NoError(t, err) { + assert.Contains(t, output, "hello world") + } + }). + Wait(3*time.Second). + RunCli([]string{"retry", "@latest", "--node-field-selector", "templateName=main", "-p", "message1=hi", "-p", "message2=argo"}, func(t *testing.T, output string, err error) { + if assert.NoError(t, err, output) { + assert.Contains(t, output, "Name:") + assert.Contains(t, output, "Namespace:") + } + }). + Wait(3*time.Second). + WaitForWorkflow(fixtures.ToBeFailed). + RunCli([]string{"logs", "@latest", "--follow"}, func(t *testing.T, output string, err error) { + if assert.NoError(t, err) { + assert.Contains(t, output, "hi argo") + } + }). + Then(). + ExpectWorkflow(func(t *testing.T, metadata *metav1.ObjectMeta, status *wfv1.WorkflowStatus) { + assert.Equal(t, "Retried", metadata.GetLabels()[common.LabelKeyWorkflowRetryingStatus]) + assert.Equal(t, "false", metadata.GetAnnotations()[common.AnnotationKeyRetryRestartSuccessful]) + assert.Equal(t, "templateName=main", metadata.GetAnnotations()[common.AnnotationKeyRetryNodeFieldSelector]) + assert.Equal(t, "[\"message1=hi\",\"message2=argo\"]", metadata.GetAnnotations()[common.AnnotationKeyRetryParameters]) }) } @@ -877,7 +917,11 @@ func (s *CLISuite) TestWorkflowRetryFailedWorkflow() { RunCli([]string{"retry", "-l", "workflows.argoproj.io/workflow=fail-first-pass-second-workflow", "--namespace=argo"}, func(t *testing.T, output string, err error) { assert.NoError(t, err, output) }). - WaitForWorkflow(fixtures.ToBeSucceeded) + WaitForWorkflow(fixtures.ToBeSucceeded). + Then(). + ExpectWorkflow(func(t *testing.T, metadata *metav1.ObjectMeta, status *wfv1.WorkflowStatus) { + assert.Equal(t, "Retried", metadata.GetLabels()[common.LabelKeyWorkflowRetryingStatus]) + }) } func (s *CLISuite) TestWorkflowRetryNestedDag() { diff --git a/test/e2e/testdata/retry-parameters.yaml b/test/e2e/testdata/retry-parameters.yaml new file mode 100644 index 000000000000..73254ede4d10 --- /dev/null +++ b/test/e2e/testdata/retry-parameters.yaml @@ -0,0 +1,18 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Workflow +metadata: + generateName: retry-parameters- +spec: + entrypoint: main + arguments: + parameters: + - name: message1 + value: "hello" + - name: message2 + value: "world" + templates: + - name: main + container: + image: argoproj/argosay:v2 + command: [sh, -c] + args: ["echo {{workflow.parameters.message1}} {{workflow.parameters.message2}}; exit 1"] \ No newline at end of file diff --git a/workflow/common/common.go b/workflow/common/common.go index 75b52660aeb2..240e66fc706a 100644 --- a/workflow/common/common.go +++ b/workflow/common/common.go @@ -59,6 +59,15 @@ const ( // the strategy whose artifacts are being deleted AnnotationKeyArtifactGCStrategy = workflow.WorkflowFullName + "/artifact-gc-strategy" + // AnnotationKeyRetryNodeFieldSelector is the annotation that specifies the node field selector to use when retrying a node + AnnotationKeyRetryNodeFieldSelector = workflow.WorkflowFullName + "/retry-node-field-selector" + + // AnnotationKeyRetryParameters is the annotation that specifies the retry parameters to use when retrying a node + AnnotationKeyRetryParameters = workflow.WorkflowFullName + "/retry-parameters" + + // AnnotationKeyRetryRestartSuccessful is the annotation that specifies if retry succeeded node or not + AnnotationKeyRetryRestartSuccessful = workflow.WorkflowFullName + "/retry-restart-successful" + // LabelKeyControllerInstanceID is the label the controller will carry forward to workflows/pod labels // for the purposes of workflow segregation LabelKeyControllerInstanceID = workflow.WorkflowFullName + "/controller-instanceid" @@ -103,11 +112,12 @@ const ( // LabelKeyCronWorkflowCompleted is a label applied to the cron workflow when the configured stopping condition is achieved LabelKeyCronWorkflowCompleted = workflow.CronWorkflowFullName + "/completed" - // LabelKeyRetryRule is a label applied to workflow used by the RetryRule feature - LabelKeyWorkflowRetryStatus = workflow.WorkflowFullName + "/workflow-retry-status" - LabelKeyRetryNodeFieldSelector = workflow.WorkflowFullName + "/retry-node-field-selector" - LabelKeyRetryParameters = workflow.WorkflowFullName + "/retry-parameters" - LabelKeyRetryRestartSuccessful = workflow.WorkflowFullName + "/retry-restart-successful" + // LabelKeyWorkflowRetryingStatus indicates if a workflow needs Retrying or not: + // * `` - does not need retrying ... yet + // * `Pending` - pending retrying + // * `Retrying` - retrying in progress + // * `Retried` - has been retried + LabelKeyWorkflowRetryingStatus = workflow.WorkflowFullName + "/workflow-retrying-status" // ExecutorArtifactBaseDir is the base directory in the init container in which artifacts will be copied to. // Each artifact will be named according to its input name (e.g: /argo/inputs/artifacts/CODE) diff --git a/workflow/controller/controller.go b/workflow/controller/controller.go index f22b459aeb76..f0933e185ee6 100644 --- a/workflow/controller/controller.go +++ b/workflow/controller/controller.go @@ -590,16 +590,11 @@ func (wfc *WorkflowController) processNextPodCleanupItem(ctx context.Context) bo if err != nil && !apierr.IsNotFound(err) { return err } - case batchDeletePods: + case labelBatchDeletePodsCompleted: + // When running here, means that all pods that need to be deleted for the retry operation have been completed. workflowName := podName - wfClient := wfc.wfclientset.ArgoprojV1alpha1().Workflows(namespace) - wf, err := wfClient.Get(ctx, workflowName, metav1.GetOptions{}) - if err != nil && !apierr.IsNotFound(err) { - return err - } - wf.ObjectMeta.Labels[common.LabelKeyWorkflowRetryStatus] = "Retried" - _, err = wfClient.Update(ctx, wf, metav1.UpdateOptions{}) - if err != nil && !apierr.IsNotFound(err) { + err := wfc.labelWorkflowRetried(ctx, namespace, workflowName) + if err != nil { return err } } @@ -614,6 +609,37 @@ func (wfc *WorkflowController) processNextPodCleanupItem(ctx context.Context) bo return true } +func (wfc *WorkflowController) labelWorkflowRetried(ctx context.Context, namespace string, workflowName string) error { + err := retry.RetryOnConflict(retry.DefaultRetry, func() error { + err := wfc.patchWorkflowLabels(ctx, namespace, workflowName, map[string]string{ + common.LabelKeyWorkflowRetryingStatus: "Retried", + }) + return err + }) + if err != nil { + return err + } + return nil +} + +func (wfc *WorkflowController) patchWorkflowLabels(ctx context.Context, namespace string, workflowName string, labels map[string]string) error { + data, err := json.Marshal(&wfv1.WorkflowTaskResult{ + ObjectMeta: metav1.ObjectMeta{ + Labels: labels, + }, + }) + if err != nil { + return err + } + _, err = wfc.wfclientset.ArgoprojV1alpha1().Workflows(namespace).Patch(ctx, + workflowName, + types.MergePatchType, + data, + metav1.PatchOptions{}, + ) + return err +} + func (wfc *WorkflowController) getPodFromAPI(ctx context.Context, namespace string, podName string) (*apiv1.Pod, error) { pod, err := wfc.kubeclientset.CoreV1().Pods(namespace).Get(ctx, podName, metav1.GetOptions{}) if err != nil { diff --git a/workflow/controller/operator.go b/workflow/controller/operator.go index fedc0e2ffbd4..6079409c071f 100644 --- a/workflow/controller/operator.go +++ b/workflow/controller/operator.go @@ -3862,33 +3862,30 @@ func (woc *wfOperationCtx) retryStrategy(tmpl *wfv1.Template) *wfv1.RetryStrateg } func (woc *wfOperationCtx) shouldRetry() bool { - retryStatus, ok := woc.wf.Labels[common.LabelKeyWorkflowRetryStatus] - if !ok || retryStatus == "Retried" { + retryingStatus, ok := woc.wf.Labels[common.LabelKeyWorkflowRetryingStatus] + if !ok || retryingStatus == "Retried" { return false } return true } func (woc *wfOperationCtx) IsRetried() bool { - return woc.wf.ObjectMeta.Labels[common.LabelKeyWorkflowRetryStatus] != "Pending" + return woc.wf.GetLabels()[common.LabelKeyWorkflowRetryingStatus] != "Pending" } func (woc *wfOperationCtx) retryWorkflow(ctx context.Context) error { if woc.IsRetried() { return nil } - nodeFiledSelector := woc.wf.Annotations[common.LabelKeyRetryNodeFieldSelector] - parametersStr := woc.wf.Labels[common.LabelKeyRetryParameters] + // Parse the retry parameters from the annotations. + nodeFiledSelector := woc.wf.GetAnnotations()[common.AnnotationKeyRetryNodeFieldSelector] + parametersStr := woc.wf.GetAnnotations()[common.AnnotationKeyRetryParameters] var parameters []string err := json.Unmarshal([]byte(parametersStr), ¶meters) if err != nil { return fmt.Errorf("fail to unmarshaling parameters: %v", err) } - restartSuccessful := false - restartSuccessfulStr := woc.wf.Labels[common.LabelKeyRetryRestartSuccessful] - if restartSuccessfulStr == "true" { - restartSuccessful = true - } + restartSuccessful := woc.wf.GetAnnotations()[common.AnnotationKeyRetryRestartSuccessful] == "true" // Clean up remaining pods in the workflow wf, podsToDelete, err := wfutil.FormulateRetryWorkflow(ctx, woc.wf, restartSuccessful, nodeFiledSelector, parameters) @@ -3898,9 +3895,12 @@ func (woc *wfOperationCtx) retryWorkflow(ctx context.Context) error { for _, podName := range podsToDelete { woc.controller.queuePodForCleanup(wf.Namespace, podName, deletePod) } - woc.controller.queuePodForCleanup(wf.Namespace, wf.Name, batchDeletePods) + + // Add labelBatchDeletePodsCompleted to the queue to help determine whether the pod has been cleaned up. + woc.controller.queuePodForCleanup(wf.Namespace, wf.Name, labelBatchDeletePodsCompleted) + woc.wf = wf - woc.wf.ObjectMeta.Labels[common.LabelKeyWorkflowRetryStatus] = "Retrying" + woc.wf.ObjectMeta.Labels[common.LabelKeyWorkflowRetryingStatus] = "Retrying" woc.updated = true return nil } diff --git a/workflow/controller/pod_cleanup_key.go b/workflow/controller/pod_cleanup_key.go index e68a4e3f1130..b4d81af8af74 100644 --- a/workflow/controller/pod_cleanup_key.go +++ b/workflow/controller/pod_cleanup_key.go @@ -15,11 +15,11 @@ type ( ) const ( - deletePod podCleanupAction = "deletePod" - labelPodCompleted podCleanupAction = "labelPodCompleted" - terminateContainers podCleanupAction = "terminateContainers" - killContainers podCleanupAction = "killContainers" - batchDeletePods podCleanupAction = "batchDeletePods" + deletePod podCleanupAction = "deletePod" + labelPodCompleted podCleanupAction = "labelPodCompleted" + terminateContainers podCleanupAction = "terminateContainers" + killContainers podCleanupAction = "killContainers" + labelBatchDeletePodsCompleted podCleanupAction = "labelBatchDeletePodsCompleted" ) func newPodCleanupKey(namespace string, podName string, action podCleanupAction) podCleanupKey { diff --git a/workflow/util/util.go b/workflow/util/util.go index 86d97c48f5a3..70b42a52d8d3 100644 --- a/workflow/util/util.go +++ b/workflow/util/util.go @@ -843,15 +843,18 @@ func MarkWorkflowForRetry(ctx context.Context, wf *wfv1.Workflow, restartSuccess delete(newWF.Labels, common.LabelKeyCompleted) delete(newWF.Labels, common.LabelKeyWorkflowArchivingStatus) - // 设置Retry的参数 - newWF.ObjectMeta.Labels[common.LabelKeyWorkflowRetryStatus] = "Pending" - newWF.ObjectMeta.Annotations[common.LabelKeyRetryNodeFieldSelector] = nodeFieldSelector + // Initialize Retry parameters + newWF.ObjectMeta.Labels[common.LabelKeyWorkflowRetryingStatus] = "Pending" + if newWF.ObjectMeta.Annotations == nil { + newWF.ObjectMeta.Annotations = make(map[string]string) + } + newWF.ObjectMeta.Annotations[common.AnnotationKeyRetryNodeFieldSelector] = nodeFieldSelector parametersStr, err := json.Marshal(parameters) if err != nil { return nil, errors.Errorf(errors.CodeBadRequest, "Cannot marshalling retry parameters to json: %s", parameters) } - newWF.ObjectMeta.Labels[common.LabelKeyRetryParameters] = string(parametersStr) - newWF.ObjectMeta.Labels[common.LabelKeyRetryRestartSuccessful] = strconv.FormatBool(restartSuccessful) + newWF.ObjectMeta.Annotations[common.AnnotationKeyRetryParameters] = string(parametersStr) + newWF.ObjectMeta.Annotations[common.AnnotationKeyRetryRestartSuccessful] = strconv.FormatBool(restartSuccessful) return newWF, nil } diff --git a/workflow/util/util_test.go b/workflow/util/util_test.go index c3bd11c350dc..cca2fff9491f 100644 --- a/workflow/util/util_test.go +++ b/workflow/util/util_test.go @@ -1295,7 +1295,7 @@ func TestFormulateRetryWorkflow(t *testing.T) { } _, err := wfClient.Create(ctx, wf, metav1.CreateOptions{}) assert.NoError(t, err) - //_, _, err = FormulateRetryWorkflow(ctx, wf, false, "", nil) + _, _, err = FormulateRetryWorkflow(ctx, wf, false, "", nil) assert.Nil(t, err) }) From cc047299f8a37bbec630391702579e55c5d26a1d Mon Sep 17 00:00:00 2001 From: shuangkun Date: Wed, 10 Apr 2024 19:36:09 +0800 Subject: [PATCH 26/26] fix: lint Signed-off-by: shuangkun --- workflow/common/common.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflow/common/common.go b/workflow/common/common.go index 240e66fc706a..9c67e0b52a95 100644 --- a/workflow/common/common.go +++ b/workflow/common/common.go @@ -61,7 +61,7 @@ const ( // AnnotationKeyRetryNodeFieldSelector is the annotation that specifies the node field selector to use when retrying a node AnnotationKeyRetryNodeFieldSelector = workflow.WorkflowFullName + "/retry-node-field-selector" - + // AnnotationKeyRetryParameters is the annotation that specifies the retry parameters to use when retrying a node AnnotationKeyRetryParameters = workflow.WorkflowFullName + "/retry-parameters"