From 36d69960cbf14fab29f8f3258acb5f8758a6d0cd Mon Sep 17 00:00:00 2001 From: Daniel Jiang Date: Thu, 11 Apr 2024 18:14:15 +0800 Subject: [PATCH] Bump up golang to v1.22 This commit bumps up the golang for building and testing velero to v1.22 It also updates controller-gen to v0.14.0 to fix an issue under new versino of go. More details see https://github.com/golang/go/issues/65637 Signed-off-by: Daniel Jiang --- .github/workflows/crds-verify-kind.yaml | 2 +- .github/workflows/e2e-test-kind.yaml | 4 +- .github/workflows/pr-ci-check.yml | 2 +- .github/workflows/push.yml | 2 +- Dockerfile | 4 +- Tiltfile | 2 +- changelogs/unreleased/7666-reasonerjt | 1 + .../bases/velero.io_backuprepositories.yaml | 32 +- config/crd/v1/bases/velero.io_backups.yaml | 408 ++++++++++-------- .../velero.io_backupstoragelocations.yaml | 56 ++- .../bases/velero.io_deletebackuprequests.yaml | 19 +- .../v1/bases/velero.io_downloadrequests.yaml | 24 +- .../v1/bases/velero.io_podvolumebackups.yaml | 102 +++-- .../v1/bases/velero.io_podvolumerestores.yaml | 87 ++-- config/crd/v1/bases/velero.io_restores.yaml | 314 +++++++------- config/crd/v1/bases/velero.io_schedules.yaml | 359 +++++++-------- .../bases/velero.io_serverstatusrequests.yaml | 29 +- .../velero.io_volumesnapshotlocations.yaml | 25 +- config/crd/v1/crds/crds.go | 22 +- .../bases/velero.io_datadownloads.yaml | 63 +-- .../v2alpha1/bases/velero.io_datauploads.yaml | 68 +-- config/crd/v2alpha1/crds/crds.go | 4 +- go.mod | 4 +- hack/build-image/Dockerfile | 4 +- hack/test.sh | 3 +- pkg/apis/velero/v1/zz_generated.deepcopy.go | 1 - .../velero/v2alpha1/zz_generated.deepcopy.go | 1 - 27 files changed, 904 insertions(+), 738 deletions(-) create mode 100644 changelogs/unreleased/7666-reasonerjt diff --git a/.github/workflows/crds-verify-kind.yaml b/.github/workflows/crds-verify-kind.yaml index b1020addbb8..9ed9936990b 100644 --- a/.github/workflows/crds-verify-kind.yaml +++ b/.github/workflows/crds-verify-kind.yaml @@ -14,7 +14,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v5 with: - go-version: '1.21' + go-version: '1.22' id: go # Look for a CLI that's made for this PR - name: Fetch built CLI diff --git a/.github/workflows/e2e-test-kind.yaml b/.github/workflows/e2e-test-kind.yaml index 084fb852d42..951009480cf 100644 --- a/.github/workflows/e2e-test-kind.yaml +++ b/.github/workflows/e2e-test-kind.yaml @@ -14,7 +14,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v5 with: - go-version: '1.21' + go-version: '1.22' id: go # Look for a CLI that's made for this PR - name: Fetch built CLI @@ -82,7 +82,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v5 with: - go-version: '1.21' + go-version: '1.22' id: go - name: Check out the code uses: actions/checkout@v2 diff --git a/.github/workflows/pr-ci-check.yml b/.github/workflows/pr-ci-check.yml index f289c57fab1..286ca370b53 100644 --- a/.github/workflows/pr-ci-check.yml +++ b/.github/workflows/pr-ci-check.yml @@ -10,7 +10,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v5 with: - go-version: '1.21' + go-version: '1.22' id: go - name: Check out the code uses: actions/checkout@v2 diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 955cad1346c..793b144f8d8 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -18,7 +18,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v5 with: - go-version: '1.21' + go-version: '1.22' id: go - uses: actions/checkout@v3 diff --git a/Dockerfile b/Dockerfile index 9faec3529c8..0d461642ea7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,7 +13,7 @@ # limitations under the License. # Velero binary build section -FROM --platform=$BUILDPLATFORM golang:1.21-bookworm as velero-builder +FROM --platform=$BUILDPLATFORM golang:1.22-bookworm as velero-builder ARG GOPROXY ARG BIN @@ -47,7 +47,7 @@ RUN mkdir -p /output/usr/bin && \ go clean -modcache -cache # Restic binary build section -FROM --platform=$BUILDPLATFORM golang:1.21-bookworm as restic-builder +FROM --platform=$BUILDPLATFORM golang:1.22-bookworm as restic-builder ARG BIN ARG TARGETOS diff --git a/Tiltfile b/Tiltfile index 8ab22090405..994f27717ae 100644 --- a/Tiltfile +++ b/Tiltfile @@ -52,7 +52,7 @@ git_sha = str(local("git rev-parse HEAD", quiet = True, echo_off = True)).strip( tilt_helper_dockerfile_header = """ # Tilt image -FROM golang:1.21 as tilt-helper +FROM golang:1.22 as tilt-helper # Support live reloading with Tilt RUN wget --output-document /restart.sh --quiet https://raw.githubusercontent.com/windmilleng/rerun-process-wrapper/master/restart.sh && \ diff --git a/changelogs/unreleased/7666-reasonerjt b/changelogs/unreleased/7666-reasonerjt new file mode 100644 index 00000000000..8c4240af972 --- /dev/null +++ b/changelogs/unreleased/7666-reasonerjt @@ -0,0 +1 @@ +Bump up to go1.22 \ No newline at end of file diff --git a/config/crd/v1/bases/velero.io_backuprepositories.yaml b/config/crd/v1/bases/velero.io_backuprepositories.yaml index 6ab28487c19..d5cc0c51b04 100644 --- a/config/crd/v1/bases/velero.io_backuprepositories.yaml +++ b/config/crd/v1/bases/velero.io_backuprepositories.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.12.0 + controller-gen.kubebuilder.io/version: v0.14.0 name: backuprepositories.velero.io spec: group: velero.io @@ -26,14 +26,19 @@ spec: openAPIV3Schema: properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object @@ -41,7 +46,8 @@ spec: description: BackupRepositorySpec is the specification for a BackupRepository. properties: backupStorageLocation: - description: BackupStorageLocation is the name of the BackupStorageLocation + description: |- + BackupStorageLocation is the name of the BackupStorageLocation that should contain this repository. type: string maintenanceFrequency: @@ -56,12 +62,14 @@ spec: - "" type: string resticIdentifier: - description: ResticIdentifier is the full restic-compatible string - for identifying this repository. + description: |- + ResticIdentifier is the full restic-compatible string for identifying + this repository. type: string volumeNamespace: - description: VolumeNamespace is the namespace this backup repository - contains pod volume backups for. + description: |- + VolumeNamespace is the namespace this backup repository contains + pod volume backups for. type: string required: - backupStorageLocation diff --git a/config/crd/v1/bases/velero.io_backups.yaml b/config/crd/v1/bases/velero.io_backups.yaml index cc4d6a5875b..1e79dcdea87 100644 --- a/config/crd/v1/bases/velero.io_backups.yaml +++ b/config/crd/v1/bases/velero.io_backups.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.12.0 + controller-gen.kubebuilder.io/version: v0.14.0 name: backups.velero.io spec: group: velero.io @@ -17,18 +17,24 @@ spec: - name: v1 schema: openAPIV3Schema: - description: Backup is a Velero resource that represents the capture of Kubernetes + description: |- + Backup is a Velero resource that represents the capture of Kubernetes cluster state at a point in time (API objects and associated volume state). properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object @@ -36,55 +42,63 @@ spec: description: BackupSpec defines the specification for a Velero backup. properties: csiSnapshotTimeout: - description: CSISnapshotTimeout specifies the time used to wait for - CSI VolumeSnapshot status turns to ReadyToUse during creation, before - returning error as timeout. The default value is 10 minute. + description: |- + CSISnapshotTimeout specifies the time used to wait for CSI VolumeSnapshot status turns to + ReadyToUse during creation, before returning error as timeout. + The default value is 10 minute. type: string datamover: - description: DataMover specifies the data mover to be used by the - backup. If DataMover is "" or "velero", the built-in data mover - will be used. + description: |- + DataMover specifies the data mover to be used by the backup. + If DataMover is "" or "velero", the built-in data mover will be used. type: string defaultVolumesToFsBackup: - description: DefaultVolumesToFsBackup specifies whether pod volume - file system backup should be used for all volumes by default. + description: |- + DefaultVolumesToFsBackup specifies whether pod volume file system backup should be used + for all volumes by default. nullable: true type: boolean defaultVolumesToRestic: - description: "DefaultVolumesToRestic specifies whether restic should - be used to take a backup of all pod volumes by default. \n Deprecated: - this field is no longer used and will be removed entirely in future. - Use DefaultVolumesToFsBackup instead." + description: |- + DefaultVolumesToRestic specifies whether restic should be used to take a + backup of all pod volumes by default. + + + Deprecated: this field is no longer used and will be removed entirely in future. Use DefaultVolumesToFsBackup instead. nullable: true type: boolean excludedClusterScopedResources: - description: ExcludedClusterScopedResources is a slice of cluster-scoped - resource type names to exclude from the backup. If set to "*", all - cluster-scoped resource types are excluded. The default value is - empty. + description: |- + ExcludedClusterScopedResources is a slice of cluster-scoped + resource type names to exclude from the backup. + If set to "*", all cluster-scoped resource types are excluded. + The default value is empty. items: type: string nullable: true type: array excludedNamespaceScopedResources: - description: ExcludedNamespaceScopedResources is a slice of namespace-scoped - resource type names to exclude from the backup. If set to "*", all - namespace-scoped resource types are excluded. The default value - is empty. + description: |- + ExcludedNamespaceScopedResources is a slice of namespace-scoped + resource type names to exclude from the backup. + If set to "*", all namespace-scoped resource types are excluded. + The default value is empty. items: type: string nullable: true type: array excludedNamespaces: - description: ExcludedNamespaces contains a list of namespaces that - are not included in the backup. + description: |- + ExcludedNamespaces contains a list of namespaces that are not + included in the backup. items: type: string nullable: true type: array excludedResources: - description: ExcludedResources is a slice of resource names that are - not included in the backup. + description: |- + ExcludedResources is a slice of resource names that are not + included in the backup. items: type: string nullable: true @@ -97,9 +111,9 @@ spec: description: Resources are hooks that should be executed when backing up individual instances of a resource. items: - description: BackupResourceHookSpec defines one or more BackupResourceHooks - that should be executed based on the rules defined for namespaces, - resources, and label selector. + description: |- + BackupResourceHookSpec defines one or more BackupResourceHooks that should be executed based on + the rules defined for namespaces, resources, and label selector. properties: excludedNamespaces: description: ExcludedNamespaces specifies the namespaces @@ -116,17 +130,17 @@ spec: nullable: true type: array includedNamespaces: - description: IncludedNamespaces specifies the namespaces - to which this hook spec applies. If empty, it applies + description: |- + IncludedNamespaces specifies the namespaces to which this hook spec applies. If empty, it applies to all namespaces. items: type: string nullable: true type: array includedResources: - description: IncludedResources specifies the resources to - which this hook spec applies. If empty, it applies to - all resources. + description: |- + IncludedResources specifies the resources to which this hook spec applies. If empty, it applies + to all resources. items: type: string nullable: true @@ -140,8 +154,8 @@ spec: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: - description: A label selector requirement is a selector - that contains values, a key, and an operator that + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: @@ -149,17 +163,16 @@ spec: applies to. type: string operator: - description: operator represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists and DoesNotExist. + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. type: string 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. + 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. items: type: string type: array @@ -171,11 +184,10 @@ spec: 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. + 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. type: object type: object x-kubernetes-map-type: atomic @@ -183,10 +195,9 @@ spec: description: Name is the name of this hook. type: string post: - description: PostHooks is a list of BackupResourceHooks - to execute after storing the item in the backup. These - are executed after all "additional items" from item actions - are processed. + description: |- + PostHooks is a list of BackupResourceHooks to execute after storing the item in the backup. + These are executed after all "additional items" from item actions are processed. items: description: BackupResourceHook defines a hook for a resource. properties: @@ -201,10 +212,9 @@ spec: minItems: 1 type: array container: - description: Container is the container in the - pod where the command should be executed. If - not specified, the pod's first container is - used. + description: |- + Container is the container in the pod where the command should be executed. If not specified, + the pod's first container is used. type: string onError: description: OnError specifies how Velero should @@ -215,9 +225,9 @@ spec: - Fail type: string timeout: - description: Timeout defines the maximum amount - of time Velero should wait for the hook to complete - before considering the execution a failure. + description: |- + Timeout defines the maximum amount of time Velero should wait for the hook to complete before + considering the execution a failure. type: string required: - command @@ -227,10 +237,9 @@ spec: type: object type: array pre: - description: PreHooks is a list of BackupResourceHooks to - execute prior to storing the item in the backup. These - are executed before any "additional items" from item actions - are processed. + description: |- + PreHooks is a list of BackupResourceHooks to execute prior to storing the item in the backup. + These are executed before any "additional items" from item actions are processed. items: description: BackupResourceHook defines a hook for a resource. properties: @@ -245,10 +254,9 @@ spec: minItems: 1 type: array container: - description: Container is the container in the - pod where the command should be executed. If - not specified, the pod's first container is - used. + description: |- + Container is the container in the pod where the command should be executed. If not specified, + the pod's first container is used. type: string onError: description: OnError specifies how Velero should @@ -259,9 +267,9 @@ spec: - Fail type: string timeout: - description: Timeout defines the maximum amount - of time Velero should wait for the hook to complete - before considering the execution a failure. + description: |- + Timeout defines the maximum amount of time Velero should wait for the hook to complete before + considering the execution a failure. type: string required: - command @@ -277,74 +285,81 @@ spec: type: array type: object includeClusterResources: - description: IncludeClusterResources specifies whether cluster-scoped - resources should be included for consideration in the backup. + description: |- + IncludeClusterResources specifies whether cluster-scoped resources + should be included for consideration in the backup. nullable: true type: boolean includedClusterScopedResources: - description: IncludedClusterScopedResources is a slice of cluster-scoped - resource type names to include in the backup. If set to "*", all - cluster-scoped resource types are included. The default value is - empty, which means only related cluster-scoped resources are included. + description: |- + IncludedClusterScopedResources is a slice of cluster-scoped + resource type names to include in the backup. + If set to "*", all cluster-scoped resource types are included. + The default value is empty, which means only related + cluster-scoped resources are included. items: type: string nullable: true type: array includedNamespaceScopedResources: - description: IncludedNamespaceScopedResources is a slice of namespace-scoped - resource type names to include in the backup. The default value - is "*". + description: |- + IncludedNamespaceScopedResources is a slice of namespace-scoped + resource type names to include in the backup. + The default value is "*". items: type: string nullable: true type: array includedNamespaces: - description: IncludedNamespaces is a slice of namespace names to include - objects from. If empty, all namespaces are included. + description: |- + IncludedNamespaces is a slice of namespace names to include objects + from. If empty, all namespaces are included. items: type: string nullable: true type: array includedResources: - description: IncludedResources is a slice of resource names to include + description: |- + IncludedResources is a slice of resource names to include in the backup. If empty, all resources are included. items: type: string nullable: true type: array itemOperationTimeout: - description: ItemOperationTimeout specifies the time used to wait - for asynchronous BackupItemAction operations The default value is - 4 hour. + description: |- + ItemOperationTimeout specifies the time used to wait for asynchronous BackupItemAction operations + The default value is 4 hour. type: string labelSelector: - description: LabelSelector is a metav1.LabelSelector to filter with - when adding individual objects to the backup. If empty or nil, all - objects are included. Optional. + description: |- + LabelSelector is a metav1.LabelSelector to filter with + when adding individual objects to the backup. If empty + or nil, all objects are included. Optional. nullable: true properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: - description: A label selector requirement is a selector that - contains values, a key, and an operator that relates the key - and values. + 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. type: string operator: - description: operator represents a key's relationship to - a set of values. Valid operators are In, NotIn, Exists - and DoesNotExist. + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. type: string 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 + 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. items: type: string @@ -357,11 +372,10 @@ spec: 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. + 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. type: object type: object x-kubernetes-map-type: atomic @@ -373,40 +387,41 @@ spec: type: object type: object orLabelSelectors: - description: OrLabelSelectors is list of metav1.LabelSelector to filter - with when adding individual objects to the backup. If multiple provided + description: |- + OrLabelSelectors is list of metav1.LabelSelector to filter with + when adding individual objects to the backup. If multiple provided they will be joined by the OR operator. LabelSelector as well as - OrLabelSelectors cannot co-exist in backup request, only one of - them can be used. + OrLabelSelectors cannot co-exist in backup request, only one of them + can be used. items: - 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. + 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. properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: - description: A label selector requirement is a selector that - contains values, a key, and an operator that relates the - key and values. + 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. type: string operator: - description: operator represents a key's relationship - to a set of values. Valid operators are In, NotIn, Exists - and DoesNotExist. + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. type: string 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. + 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. items: type: string type: array @@ -418,11 +433,10 @@ spec: 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. + 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. type: object type: object x-kubernetes-map-type: atomic @@ -431,11 +445,10 @@ spec: orderedResources: additionalProperties: type: string - description: OrderedResources specifies the backup order of resources - of specific Kind. The map key is the resource name and value is - a list of object names separated by commas. Each resource name has - format "namespace/objectname". For cluster resources, simply use - "objectname". + description: |- + OrderedResources specifies the backup order of resources of specific Kind. + The map key is the resource name and value is a list of object names separated by commas. + Each resource name has format "namespace/objectname". For cluster resources, simply use "objectname". nullable: true type: object resourcePolicy: @@ -443,10 +456,10 @@ spec: that backup should follow 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. + 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. type: string kind: description: Kind is the type of resource being referenced @@ -465,8 +478,10 @@ spec: nullable: true type: boolean snapshotVolumes: - description: SnapshotVolumes specifies whether to take snapshots of - any PV's referenced in the set of objects included in the Backup. + description: |- + SnapshotVolumes specifies whether to take snapshots + of any PV's referenced in the set of objects included + in the Backup. nullable: true type: boolean storageLocation: @@ -474,8 +489,9 @@ spec: BackupStorageLocation where the backup should be stored. type: string ttl: - description: TTL is a time.Duration-parseable string describing how - long the Backup should be retained for. + description: |- + TTL is a time.Duration-parseable string describing how long + the Backup should be retained for. type: string uploaderConfig: description: UploaderConfig specifies the configuration for the uploader. @@ -497,39 +513,44 @@ spec: description: BackupStatus captures the current status of a Velero backup. properties: backupItemOperationsAttempted: - description: BackupItemOperationsAttempted is the total number of - attempted async BackupItemAction operations for this backup. + description: |- + BackupItemOperationsAttempted is the total number of attempted + async BackupItemAction operations for this backup. type: integer backupItemOperationsCompleted: - description: BackupItemOperationsCompleted is the total number of - successfully completed async BackupItemAction operations for this - backup. + description: |- + BackupItemOperationsCompleted is the total number of successfully completed + async BackupItemAction operations for this backup. type: integer backupItemOperationsFailed: - description: BackupItemOperationsFailed is the total number of async - BackupItemAction operations for this backup which ended with an - error. + description: |- + BackupItemOperationsFailed is the total number of async + BackupItemAction operations for this backup which ended with an error. type: integer completionTimestamp: - description: CompletionTimestamp records the time a backup was completed. - Completion time is recorded even on failed backups. Completion time - is recorded before uploading the backup object. The server's time - is used for CompletionTimestamps + description: |- + CompletionTimestamp records the time a backup was completed. + Completion time is recorded even on failed backups. + Completion time is recorded before uploading the backup object. + The server's time is used for CompletionTimestamps format: date-time nullable: true type: string csiVolumeSnapshotsAttempted: - description: CSIVolumeSnapshotsAttempted is the total number of attempted + description: |- + CSIVolumeSnapshotsAttempted is the total number of attempted CSI VolumeSnapshots for this backup. type: integer csiVolumeSnapshotsCompleted: - description: CSIVolumeSnapshotsCompleted is the total number of successfully + description: |- + CSIVolumeSnapshotsCompleted is the total number of successfully completed CSI VolumeSnapshots for this backup. type: integer errors: - description: Errors is a count of all error messages that were generated - during execution of the backup. The actual errors are in the backup's - log file in object storage. + description: |- + Errors is a count of all error messages that were generated during + execution of the backup. The actual errors are in the backup's log + file in object storage. type: integer expiration: description: Expiration is when this Backup is eligible for garbage-collection. @@ -550,10 +571,10 @@ spec: nullable: true properties: hooksAttempted: - description: HooksAttempted is the total number of attempted hooks - Specifically, HooksAttempted represents the number of hooks - that failed to execute and the number of hooks that executed - successfully. + description: |- + HooksAttempted is the total number of attempted hooks + Specifically, HooksAttempted represents the number of hooks that failed to execute + and the number of hooks that executed successfully. type: integer hooksFailed: description: HooksFailed is the total number of hooks which ended @@ -576,53 +597,62 @@ spec: - Deleting type: string progress: - description: Progress contains information about the backup's execution - progress. Note that this information is best-effort only -- if Velero - fails to update it during a backup for any reason, it may be inaccurate/stale. + description: |- + Progress contains information about the backup's execution progress. Note + that this information is best-effort only -- if Velero fails to update it + during a backup for any reason, it may be inaccurate/stale. nullable: true properties: itemsBackedUp: - description: ItemsBackedUp is the number of items that have actually - been written to the backup tarball so far. + description: |- + ItemsBackedUp is the number of items that have actually been written to the + backup tarball so far. type: integer totalItems: - description: TotalItems is the total number of items to be backed - up. This number may change throughout the execution of the backup - due to plugins that return additional related items to back - up, the velero.io/exclude-from-backup label, and various other + description: |- + TotalItems is the total number of items to be backed up. This number may change + throughout the execution of the backup due to plugins that return additional related + items to back up, the velero.io/exclude-from-backup label, and various other filters that happen as items are processed. type: integer type: object startTimestamp: - description: StartTimestamp records the time a backup was started. - Separate from CreationTimestamp, since that value changes on restores. + description: |- + StartTimestamp records the time a backup was started. + Separate from CreationTimestamp, since that value changes + on restores. The server's time is used for StartTimestamps format: date-time nullable: true type: string validationErrors: - description: ValidationErrors is a slice of all validation errors - (if applicable). + description: |- + ValidationErrors is a slice of all validation errors (if + applicable). items: type: string nullable: true type: array version: - description: 'Version is the backup format major version. Deprecated: - Please see FormatVersion' + description: |- + Version is the backup format major version. + Deprecated: Please see FormatVersion type: integer volumeSnapshotsAttempted: - description: VolumeSnapshotsAttempted is the total number of attempted + description: |- + VolumeSnapshotsAttempted is the total number of attempted volume snapshots for this backup. type: integer volumeSnapshotsCompleted: - description: VolumeSnapshotsCompleted is the total number of successfully + description: |- + VolumeSnapshotsCompleted is the total number of successfully completed volume snapshots for this backup. type: integer warnings: - description: Warnings is a count of all warning messages that were - generated during execution of the backup. The actual warnings are - in the backup's log file in object storage. + description: |- + Warnings is a count of all warning messages that were generated during + execution of the backup. The actual warnings are in the backup's log + file in object storage. type: integer type: object type: object diff --git a/config/crd/v1/bases/velero.io_backupstoragelocations.yaml b/config/crd/v1/bases/velero.io_backupstoragelocations.yaml index b1d4b2d4912..c87adab4815 100644 --- a/config/crd/v1/bases/velero.io_backupstoragelocations.yaml +++ b/config/crd/v1/bases/velero.io_backupstoragelocations.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.12.0 + controller-gen.kubebuilder.io/version: v0.14.0 name: backupstoragelocations.velero.io spec: group: velero.io @@ -40,14 +40,19 @@ spec: objects properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object @@ -81,8 +86,10 @@ spec: valid secret key. type: string 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?' + 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? type: string optional: description: Specify whether the Secret or its key must be defined @@ -131,29 +138,36 @@ spec: BackupStorageLocation properties: accessMode: - description: "AccessMode is an unused field. \n Deprecated: there - is now an AccessMode field on the Spec and this field will be removed - entirely as of v2.0." + description: |- + AccessMode is an unused field. + + + Deprecated: there is now an AccessMode field on the Spec and this field + will be removed entirely as of v2.0. enum: - ReadOnly - ReadWrite type: string lastSyncedRevision: - description: "LastSyncedRevision is the value of the `metadata/revision` - file in the backup storage location the last time the BSL's contents - were synced into the cluster. \n Deprecated: this field is no longer - updated or used for detecting changes to the location's contents - and will be removed entirely in v2.0." + description: |- + LastSyncedRevision is the value of the `metadata/revision` file in the backup + storage location the last time the BSL's contents were synced into the cluster. + + + Deprecated: this field is no longer updated or used for detecting changes to + the location's contents and will be removed entirely in v2.0. type: string lastSyncedTime: - description: LastSyncedTime is the last time the contents of the location - were synced into the cluster. + description: |- + LastSyncedTime is the last time the contents of the location were synced into + the cluster. format: date-time nullable: true type: string lastValidationTime: - description: LastValidationTime is the last time the backup store - location was validated the cluster. + description: |- + LastValidationTime is the last time the backup store location was validated + the cluster. format: date-time nullable: true type: string diff --git a/config/crd/v1/bases/velero.io_deletebackuprequests.yaml b/config/crd/v1/bases/velero.io_deletebackuprequests.yaml index b4139758e80..9d301e8043b 100644 --- a/config/crd/v1/bases/velero.io_deletebackuprequests.yaml +++ b/config/crd/v1/bases/velero.io_deletebackuprequests.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.12.0 + controller-gen.kubebuilder.io/version: v0.14.0 name: deletebackuprequests.velero.io spec: group: velero.io @@ -29,14 +29,19 @@ spec: description: DeleteBackupRequest is a request to delete one or more backups. properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object diff --git a/config/crd/v1/bases/velero.io_downloadrequests.yaml b/config/crd/v1/bases/velero.io_downloadrequests.yaml index bf5f5e74a04..457a3a15514 100644 --- a/config/crd/v1/bases/velero.io_downloadrequests.yaml +++ b/config/crd/v1/bases/velero.io_downloadrequests.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.12.0 + controller-gen.kubebuilder.io/version: v0.14.0 name: downloadrequests.velero.io spec: group: velero.io @@ -17,18 +17,24 @@ spec: - name: v1 schema: openAPIV3Schema: - description: DownloadRequest is a request to download an artifact from backup - object storage, such as a backup log file. + description: |- + DownloadRequest is a request to download an artifact from backup object storage, such as a backup + log file. properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object diff --git a/config/crd/v1/bases/velero.io_podvolumebackups.yaml b/config/crd/v1/bases/velero.io_podvolumebackups.yaml index 8d4b8032eec..08e703ef274 100644 --- a/config/crd/v1/bases/velero.io_podvolumebackups.yaml +++ b/config/crd/v1/bases/velero.io_podvolumebackups.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.12.0 + controller-gen.kubebuilder.io/version: v0.14.0 name: podvolumebackups.velero.io spec: group: velero.io @@ -52,14 +52,19 @@ spec: openAPIV3Schema: properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object @@ -67,8 +72,9 @@ spec: description: PodVolumeBackupSpec is the specification for a PodVolumeBackup. properties: backupStorageLocation: - description: BackupStorageLocation is the name of the backup storage - location where the backup repository is stored. + description: |- + BackupStorageLocation is the name of the backup storage location + where the backup repository is stored. type: string node: description: Node is the name of the node that the Pod is running @@ -82,33 +88,40 @@ spec: description: API version of the referent. type: string fieldPath: - description: 'If referring to a piece of an object instead of - an entire object, this string should contain a valid JSON/Go - field access statement, such as desiredState.manifest.containers[2]. - For example, if the object reference is to a container within - a pod, this would take on a value like: "spec.containers{name}" - (where "name" refers to the name of the container that triggered - the event) or if no container name is specified "spec.containers[2]" - (container with index 2 in this pod). This syntax is chosen - only to have some well-defined way of referencing a part of - an object. TODO: this design is not final and this field is - subject to change in the future.' + description: |- + If referring to a piece of an object instead of an entire object, this string + should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. + For example, if the object reference is to a container within a pod, this would take on a value like: + "spec.containers{name}" (where "name" refers to the name of the container that triggered + the event) or if no container name is specified "spec.containers[2]" (container with + index 2 in this pod). This syntax is chosen only to have some well-defined way of + referencing a part of an object. + TODO: this design is not final and this field is subject to change in the future. type: string kind: - description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: |- + Kind of the referent. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' + description: |- + Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names type: string namespace: - description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/' + description: |- + Namespace of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ type: string resourceVersion: - description: 'Specific resourceVersion to which this reference - is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency' + description: |- + Specific resourceVersion to which this reference is made, if any. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency type: string uid: - description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids' + description: |- + UID of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids type: string type: object x-kubernetes-map-type: atomic @@ -118,14 +131,16 @@ spec: tags: additionalProperties: type: string - description: Tags are a map of key-value pairs that should be applied - to the volume backup as tags. + description: |- + Tags are a map of key-value pairs that should be applied to the + volume backup as tags. type: object uploaderSettings: additionalProperties: type: string - description: UploaderSettings are a map of key-value pairs that should - be applied to the uploader configuration. + description: |- + UploaderSettings are a map of key-value pairs that should be applied to the + uploader configuration. nullable: true type: object uploaderType: @@ -137,8 +152,9 @@ spec: - "" type: string volume: - description: Volume is the name of the volume within the Pod to be - backed up. + description: |- + Volume is the name of the volume within the Pod to be backed + up. type: string required: - backupStorageLocation @@ -151,10 +167,11 @@ spec: description: PodVolumeBackupStatus is the current status of a PodVolumeBackup. properties: completionTimestamp: - description: CompletionTimestamp records the time a backup was completed. - Completion time is recorded even on failed backups. Completion time - is recorded before uploading the backup object. The server's time - is used for CompletionTimestamps + description: |- + CompletionTimestamp records the time a backup was completed. + Completion time is recorded even on failed backups. + Completion time is recorded before uploading the backup object. + The server's time is used for CompletionTimestamps format: date-time nullable: true type: string @@ -174,9 +191,10 @@ spec: - Failed type: string progress: - description: Progress holds the total number of bytes of the volume - and the current number of backed up bytes. This can be used to display - progress information about the backup operation. + description: |- + Progress holds the total number of bytes of the volume and the current + number of backed up bytes. This can be used to display progress information + about the backup operation. properties: bytesDone: format: int64 @@ -190,8 +208,10 @@ spec: pod volume. type: string startTimestamp: - description: StartTimestamp records the time a backup was started. - Separate from CreationTimestamp, since that value changes on restores. + description: |- + StartTimestamp records the time a backup was started. + Separate from CreationTimestamp, since that value changes + on restores. The server's time is used for StartTimestamps format: date-time nullable: true diff --git a/config/crd/v1/bases/velero.io_podvolumerestores.yaml b/config/crd/v1/bases/velero.io_podvolumerestores.yaml index 385d8999e39..1c38a7d71ce 100644 --- a/config/crd/v1/bases/velero.io_podvolumerestores.yaml +++ b/config/crd/v1/bases/velero.io_podvolumerestores.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.12.0 + controller-gen.kubebuilder.io/version: v0.14.0 name: podvolumerestores.velero.io spec: group: velero.io @@ -53,14 +53,19 @@ spec: openAPIV3Schema: properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object @@ -68,8 +73,9 @@ spec: description: PodVolumeRestoreSpec is the specification for a PodVolumeRestore. properties: backupStorageLocation: - description: BackupStorageLocation is the name of the backup storage - location where the backup repository is stored. + description: |- + BackupStorageLocation is the name of the backup storage location + where the backup repository is stored. type: string pod: description: Pod is a reference to the pod containing the volume to @@ -79,33 +85,40 @@ spec: description: API version of the referent. type: string fieldPath: - description: 'If referring to a piece of an object instead of - an entire object, this string should contain a valid JSON/Go - field access statement, such as desiredState.manifest.containers[2]. - For example, if the object reference is to a container within - a pod, this would take on a value like: "spec.containers{name}" - (where "name" refers to the name of the container that triggered - the event) or if no container name is specified "spec.containers[2]" - (container with index 2 in this pod). This syntax is chosen - only to have some well-defined way of referencing a part of - an object. TODO: this design is not final and this field is - subject to change in the future.' + description: |- + If referring to a piece of an object instead of an entire object, this string + should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. + For example, if the object reference is to a container within a pod, this would take on a value like: + "spec.containers{name}" (where "name" refers to the name of the container that triggered + the event) or if no container name is specified "spec.containers[2]" (container with + index 2 in this pod). This syntax is chosen only to have some well-defined way of + referencing a part of an object. + TODO: this design is not final and this field is subject to change in the future. type: string kind: - description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: |- + Kind of the referent. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' + description: |- + Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names type: string namespace: - description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/' + description: |- + Namespace of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ type: string resourceVersion: - description: 'Specific resourceVersion to which this reference - is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency' + description: |- + Specific resourceVersion to which this reference is made, if any. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency type: string uid: - description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids' + description: |- + UID of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids type: string type: object x-kubernetes-map-type: atomic @@ -122,8 +135,9 @@ spec: uploaderSettings: additionalProperties: type: string - description: UploaderSettings are a map of key-value pairs that should - be applied to the uploader configuration. + description: |- + UploaderSettings are a map of key-value pairs that should be applied to the + uploader configuration. nullable: true type: object uploaderType: @@ -150,9 +164,10 @@ spec: description: PodVolumeRestoreStatus is the current status of a PodVolumeRestore. properties: completionTimestamp: - description: CompletionTimestamp records the time a restore was completed. - Completion time is recorded even on failed restores. The server's - time is used for CompletionTimestamps + description: |- + CompletionTimestamp records the time a restore was completed. + Completion time is recorded even on failed restores. + The server's time is used for CompletionTimestamps format: date-time nullable: true type: string @@ -168,9 +183,10 @@ spec: - Failed type: string progress: - description: Progress holds the total number of bytes of the snapshot - and the current number of restored bytes. This can be used to display - progress information about the restore operation. + description: |- + Progress holds the total number of bytes of the snapshot and the current + number of restored bytes. This can be used to display progress information + about the restore operation. properties: bytesDone: format: int64 @@ -180,7 +196,8 @@ spec: type: integer type: object startTimestamp: - description: StartTimestamp records the time a restore was started. + description: |- + StartTimestamp records the time a restore was started. The server's time is used for StartTimestamps format: date-time nullable: true diff --git a/config/crd/v1/bases/velero.io_restores.yaml b/config/crd/v1/bases/velero.io_restores.yaml index ead0985ce92..e2761729199 100644 --- a/config/crd/v1/bases/velero.io_restores.yaml +++ b/config/crd/v1/bases/velero.io_restores.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.12.0 + controller-gen.kubebuilder.io/version: v0.14.0 name: restores.velero.io spec: group: velero.io @@ -17,18 +17,24 @@ spec: - name: v1 schema: openAPIV3Schema: - description: Restore is a Velero resource that represents the application - of resources from a Velero backup to a target Kubernetes cluster. + description: |- + Restore is a Velero resource that represents the application of + resources from a Velero backup to a target Kubernetes cluster. properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object @@ -36,19 +42,22 @@ spec: description: RestoreSpec defines the specification for a Velero restore. properties: backupName: - description: BackupName is the unique name of the Velero backup to - restore from. + description: |- + BackupName is the unique name of the Velero backup to restore + from. type: string excludedNamespaces: - description: ExcludedNamespaces contains a list of namespaces that - are not included in the restore. + description: |- + ExcludedNamespaces contains a list of namespaces that are not + included in the restore. items: type: string nullable: true type: array excludedResources: - description: ExcludedResources is a slice of resource names that are - not included in the restore. + description: |- + ExcludedResources is a slice of resource names that are not + included in the restore. items: type: string nullable: true @@ -64,9 +73,9 @@ spec: properties: resources: items: - description: RestoreResourceHookSpec defines one or more RestoreResrouceHooks - that should be executed based on the rules defined for namespaces, - resources, and label selector. + description: |- + RestoreResourceHookSpec defines one or more RestoreResrouceHooks that should be executed based on + the rules defined for namespaces, resources, and label selector. properties: excludedNamespaces: description: ExcludedNamespaces specifies the namespaces @@ -83,17 +92,17 @@ spec: nullable: true type: array includedNamespaces: - description: IncludedNamespaces specifies the namespaces - to which this hook spec applies. If empty, it applies + description: |- + IncludedNamespaces specifies the namespaces to which this hook spec applies. If empty, it applies to all namespaces. items: type: string nullable: true type: array includedResources: - description: IncludedResources specifies the resources to - which this hook spec applies. If empty, it applies to - all resources. + description: |- + IncludedResources specifies the resources to which this hook spec applies. If empty, it applies + to all resources. items: type: string nullable: true @@ -107,8 +116,8 @@ spec: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: - description: A label selector requirement is a selector - that contains values, a key, and an operator that + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: @@ -116,17 +125,16 @@ spec: applies to. type: string operator: - description: operator represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists and DoesNotExist. + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. type: string 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. + 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. items: type: string type: array @@ -138,11 +146,10 @@ spec: 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. + 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. type: object type: object x-kubernetes-map-type: atomic @@ -168,15 +175,14 @@ spec: minItems: 1 type: array container: - description: Container is the container in the - pod where the command should be executed. If - not specified, the pod's first container is - used. + description: |- + Container is the container in the pod where the command should be executed. If not specified, + the pod's first container is used. type: string execTimeout: - description: ExecTimeout defines the maximum amount - of time Velero should wait for the hook to complete - before considering the execution a failure. + description: |- + ExecTimeout defines the maximum amount of time Velero should wait for the hook to complete before + considering the execution a failure. type: string onError: description: OnError specifies how Velero should @@ -193,9 +199,9 @@ spec: nullable: true type: boolean waitTimeout: - description: WaitTimeout defines the maximum amount - of time Velero should wait for the container - to be Ready before attempting to run the command. + description: |- + WaitTimeout defines the maximum amount of time Velero should wait for the container to be Ready + before attempting to run the command. type: string required: - command @@ -225,57 +231,62 @@ spec: type: array type: object includeClusterResources: - description: IncludeClusterResources specifies whether cluster-scoped - resources should be included for consideration in the restore. If - null, defaults to true. + description: |- + IncludeClusterResources specifies whether cluster-scoped resources + should be included for consideration in the restore. If null, defaults + to true. nullable: true type: boolean includedNamespaces: - description: IncludedNamespaces is a slice of namespace names to include - objects from. If empty, all namespaces are included. + description: |- + IncludedNamespaces is a slice of namespace names to include objects + from. If empty, all namespaces are included. items: type: string nullable: true type: array includedResources: - description: IncludedResources is a slice of resource names to include + description: |- + IncludedResources is a slice of resource names to include in the restore. If empty, all resources in the backup are included. items: type: string nullable: true type: array itemOperationTimeout: - description: ItemOperationTimeout specifies the time used to wait - for RestoreItemAction operations The default value is 4 hour. + description: |- + ItemOperationTimeout specifies the time used to wait for RestoreItemAction operations + The default value is 4 hour. type: string labelSelector: - description: LabelSelector is a metav1.LabelSelector to filter with - when restoring individual objects from the backup. If empty or nil, - all objects are included. Optional. + description: |- + LabelSelector is a metav1.LabelSelector to filter with + when restoring individual objects from the backup. If empty + or nil, all objects are included. Optional. nullable: true properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: - description: A label selector requirement is a selector that - contains values, a key, and an operator that relates the key - and values. + 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. type: string operator: - description: operator represents a key's relationship to - a set of values. Valid operators are In, NotIn, Exists - and DoesNotExist. + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. type: string 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 + 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. items: type: string @@ -288,57 +299,58 @@ spec: 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. + 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. type: object type: object x-kubernetes-map-type: atomic namespaceMapping: additionalProperties: type: string - description: NamespaceMapping is a map of source namespace names to - target namespace names to restore into. Any source namespaces not - included in the map will be restored into namespaces of the same - name. + description: |- + NamespaceMapping is a map of source namespace names + to target namespace names to restore into. Any source + namespaces not included in the map will be restored into + namespaces of the same name. type: object orLabelSelectors: - description: OrLabelSelectors is list of metav1.LabelSelector to filter - with when restoring individual objects from the backup. If multiple - provided they will be joined by the OR operator. LabelSelector as - well as OrLabelSelectors cannot co-exist in restore request, only - one of them can be used + description: |- + OrLabelSelectors is list of metav1.LabelSelector to filter with + when restoring individual objects from the backup. If multiple provided + they will be joined by the OR operator. LabelSelector as well as + OrLabelSelectors cannot co-exist in restore request, only one of them + can be used items: - 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. + 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. properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: - description: A label selector requirement is a selector that - contains values, a key, and an operator that relates the - key and values. + 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. type: string operator: - description: operator represents a key's relationship - to a set of values. Valid operators are In, NotIn, Exists - and DoesNotExist. + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. type: string 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. + 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. items: type: string type: array @@ -350,11 +362,10 @@ spec: 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. + 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. type: object type: object x-kubernetes-map-type: atomic @@ -371,10 +382,10 @@ spec: nullable: true 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. + 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. type: string kind: description: Kind is the type of resource being referenced @@ -388,13 +399,15 @@ spec: type: object x-kubernetes-map-type: atomic restorePVs: - description: RestorePVs specifies whether to restore all included + description: |- + RestorePVs specifies whether to restore all included PVs from snapshot nullable: true type: boolean restoreStatus: - description: RestoreStatus specifies which resources we should restore - the status field. If nil, no objects are included. Optional. + description: |- + RestoreStatus specifies which resources we should restore the status + field. If nil, no objects are included. Optional. nullable: true properties: excludedResources: @@ -405,18 +418,19 @@ spec: nullable: true type: array includedResources: - description: IncludedResources specifies the resources to which - will restore the status. If empty, it applies to all resources. + description: |- + IncludedResources specifies the resources to which will restore the status. + If empty, it applies to all resources. items: type: string nullable: true type: array type: object scheduleName: - description: ScheduleName is the unique name of the Velero schedule - to restore from. If specified, and BackupName is empty, Velero will - restore from the most recent successful backup created from this - schedule. + description: |- + ScheduleName is the unique name of the Velero schedule to restore + from. If specified, and BackupName is empty, Velero will restore + from the most recent successful backup created from this schedule. type: string uploaderConfig: description: UploaderConfig specifies the configuration for the restore. @@ -437,16 +451,17 @@ spec: description: RestoreStatus captures the current status of a Velero restore properties: completionTimestamp: - description: CompletionTimestamp records the time the restore operation - was completed. Completion time is recorded even on failed restore. + description: |- + CompletionTimestamp records the time the restore operation was completed. + Completion time is recorded even on failed restore. The server's time is used for StartTimestamps format: date-time nullable: true type: string errors: - description: Errors is a count of all error messages that were generated - during execution of the restore. The actual errors are stored in - object storage. + description: |- + Errors is a count of all error messages that were generated during + execution of the restore. The actual errors are stored in object storage. type: integer failureReason: description: FailureReason is an error that caused the entire restore @@ -458,10 +473,10 @@ spec: nullable: true properties: hooksAttempted: - description: HooksAttempted is the total number of attempted hooks - Specifically, HooksAttempted represents the number of hooks - that failed to execute and the number of hooks that executed - successfully. + description: |- + HooksAttempted is the total number of attempted hooks + Specifically, HooksAttempted represents the number of hooks that failed to execute + and the number of hooks that executed successfully. type: integer hooksFailed: description: HooksFailed is the total number of hooks which ended @@ -483,9 +498,10 @@ spec: - FinalizingPartiallyFailed type: string progress: - description: Progress contains information about the restore's execution - progress. Note that this information is best-effort only -- if Velero - fails to update it during a restore for any reason, it may be inaccurate/stale. + description: |- + Progress contains information about the restore's execution progress. Note + that this information is best-effort only -- if Velero fails to update it + during a restore for any reason, it may be inaccurate/stale. nullable: true properties: itemsRestored: @@ -493,42 +509,46 @@ spec: been restored so far type: integer totalItems: - description: TotalItems is the total number of items to be restored. - This number may change throughout the execution of the restore - due to plugins that return additional related items to restore + description: |- + TotalItems is the total number of items to be restored. This number may change + throughout the execution of the restore due to plugins that return additional related + items to restore type: integer type: object restoreItemOperationsAttempted: - description: RestoreItemOperationsAttempted is the total number of - attempted async RestoreItemAction operations for this restore. + description: |- + RestoreItemOperationsAttempted is the total number of attempted + async RestoreItemAction operations for this restore. type: integer restoreItemOperationsCompleted: - description: RestoreItemOperationsCompleted is the total number of - successfully completed async RestoreItemAction operations for this - restore. + description: |- + RestoreItemOperationsCompleted is the total number of successfully completed + async RestoreItemAction operations for this restore. type: integer restoreItemOperationsFailed: - description: RestoreItemOperationsFailed is the total number of async - RestoreItemAction operations for this restore which ended with an - error. + description: |- + RestoreItemOperationsFailed is the total number of async + RestoreItemAction operations for this restore which ended with an error. type: integer startTimestamp: - description: StartTimestamp records the time the restore operation - was started. The server's time is used for StartTimestamps + description: |- + StartTimestamp records the time the restore operation was started. + The server's time is used for StartTimestamps format: date-time nullable: true type: string validationErrors: - description: ValidationErrors is a slice of all validation errors - (if applicable) + description: |- + ValidationErrors is a slice of all validation errors (if + applicable) items: type: string nullable: true type: array warnings: - description: Warnings is a count of all warning messages that were - generated during execution of the restore. The actual warnings are - stored in object storage. + description: |- + Warnings is a count of all warning messages that were generated during + execution of the restore. The actual warnings are stored in object storage. type: integer type: object type: object diff --git a/config/crd/v1/bases/velero.io_schedules.yaml b/config/crd/v1/bases/velero.io_schedules.yaml index 7c4de96b5db..bb844abbbf4 100644 --- a/config/crd/v1/bases/velero.io_schedules.yaml +++ b/config/crd/v1/bases/velero.io_schedules.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.12.0 + controller-gen.kubebuilder.io/version: v0.14.0 name: schedules.velero.io spec: group: velero.io @@ -36,18 +36,24 @@ spec: name: v1 schema: openAPIV3Schema: - description: Schedule is a Velero resource that represents a pre-scheduled - or periodic Backup that should be run. + description: |- + Schedule is a Velero resource that represents a pre-scheduled or + periodic Backup that should be run. properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object @@ -58,73 +64,80 @@ spec: description: Paused specifies whether the schedule is paused or not type: boolean schedule: - description: Schedule is a Cron expression defining when to run the - Backup. + description: |- + Schedule is a Cron expression defining when to run + the Backup. type: string skipImmediately: - description: 'SkipImmediately specifies whether to skip backup if - schedule is due immediately from `schedule.status.lastBackup` timestamp - when schedule is unpaused or if schedule is new. If true, backup - will be skipped immediately when schedule is unpaused if it is due - based on .Status.LastBackupTimestamp or schedule is new, and will - run at next schedule time. If false, backup will not be skipped - immediately when schedule is unpaused, but will run at next schedule - time. If empty, will follow server configuration (default: false).' + description: |- + SkipImmediately specifies whether to skip backup if schedule is due immediately from `schedule.status.lastBackup` timestamp when schedule is unpaused or if schedule is new. + If true, backup will be skipped immediately when schedule is unpaused if it is due based on .Status.LastBackupTimestamp or schedule is new, and will run at next schedule time. + If false, backup will not be skipped immediately when schedule is unpaused, but will run at next schedule time. + If empty, will follow server configuration (default: false). type: boolean template: - description: Template is the definition of the Backup to be run on - the provided schedule + description: |- + Template is the definition of the Backup to be run + on the provided schedule properties: csiSnapshotTimeout: - description: CSISnapshotTimeout specifies the time used to wait - for CSI VolumeSnapshot status turns to ReadyToUse during creation, - before returning error as timeout. The default value is 10 minute. + description: |- + CSISnapshotTimeout specifies the time used to wait for CSI VolumeSnapshot status turns to + ReadyToUse during creation, before returning error as timeout. + The default value is 10 minute. type: string datamover: - description: DataMover specifies the data mover to be used by - the backup. If DataMover is "" or "velero", the built-in data - mover will be used. + description: |- + DataMover specifies the data mover to be used by the backup. + If DataMover is "" or "velero", the built-in data mover will be used. type: string defaultVolumesToFsBackup: - description: DefaultVolumesToFsBackup specifies whether pod volume - file system backup should be used for all volumes by default. + description: |- + DefaultVolumesToFsBackup specifies whether pod volume file system backup should be used + for all volumes by default. nullable: true type: boolean defaultVolumesToRestic: - description: "DefaultVolumesToRestic specifies whether restic - should be used to take a backup of all pod volumes by default. - \n Deprecated: this field is no longer used and will be removed - entirely in future. Use DefaultVolumesToFsBackup instead." + description: |- + DefaultVolumesToRestic specifies whether restic should be used to take a + backup of all pod volumes by default. + + + Deprecated: this field is no longer used and will be removed entirely in future. Use DefaultVolumesToFsBackup instead. nullable: true type: boolean excludedClusterScopedResources: - description: ExcludedClusterScopedResources is a slice of cluster-scoped - resource type names to exclude from the backup. If set to "*", - all cluster-scoped resource types are excluded. The default - value is empty. + description: |- + ExcludedClusterScopedResources is a slice of cluster-scoped + resource type names to exclude from the backup. + If set to "*", all cluster-scoped resource types are excluded. + The default value is empty. items: type: string nullable: true type: array excludedNamespaceScopedResources: - description: ExcludedNamespaceScopedResources is a slice of namespace-scoped - resource type names to exclude from the backup. If set to "*", - all namespace-scoped resource types are excluded. The default - value is empty. + description: |- + ExcludedNamespaceScopedResources is a slice of namespace-scoped + resource type names to exclude from the backup. + If set to "*", all namespace-scoped resource types are excluded. + The default value is empty. items: type: string nullable: true type: array excludedNamespaces: - description: ExcludedNamespaces contains a list of namespaces - that are not included in the backup. + description: |- + ExcludedNamespaces contains a list of namespaces that are not + included in the backup. items: type: string nullable: true type: array excludedResources: - description: ExcludedResources is a slice of resource names that - are not included in the backup. + description: |- + ExcludedResources is a slice of resource names that are not + included in the backup. items: type: string nullable: true @@ -137,9 +150,9 @@ spec: description: Resources are hooks that should be executed when backing up individual instances of a resource. items: - description: BackupResourceHookSpec defines one or more - BackupResourceHooks that should be executed based on the - rules defined for namespaces, resources, and label selector. + description: |- + BackupResourceHookSpec defines one or more BackupResourceHooks that should be executed based on + the rules defined for namespaces, resources, and label selector. properties: excludedNamespaces: description: ExcludedNamespaces specifies the namespaces @@ -156,16 +169,16 @@ spec: nullable: true type: array includedNamespaces: - description: IncludedNamespaces specifies the namespaces - to which this hook spec applies. If empty, it applies + description: |- + IncludedNamespaces specifies the namespaces to which this hook spec applies. If empty, it applies to all namespaces. items: type: string nullable: true type: array includedResources: - description: IncludedResources specifies the resources - to which this hook spec applies. If empty, it applies + description: |- + IncludedResources specifies the resources to which this hook spec applies. If empty, it applies to all resources. items: type: string @@ -180,26 +193,25 @@ spec: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: - description: A label selector requirement is a - selector that contains values, a key, and an - operator that relates the key and values. + 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. type: string operator: - description: operator represents a key's relationship - to a set of values. Valid operators are - In, NotIn, Exists and DoesNotExist. + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. type: string 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. + 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. items: type: string type: array @@ -211,12 +223,10 @@ spec: 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. + 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. type: object type: object x-kubernetes-map-type: atomic @@ -224,10 +234,9 @@ spec: description: Name is the name of this hook. type: string post: - description: PostHooks is a list of BackupResourceHooks - to execute after storing the item in the backup. These - are executed after all "additional items" from item - actions are processed. + description: |- + PostHooks is a list of BackupResourceHooks to execute after storing the item in the backup. + These are executed after all "additional items" from item actions are processed. items: description: BackupResourceHook defines a hook for a resource. @@ -243,10 +252,9 @@ spec: minItems: 1 type: array container: - description: Container is the container in - the pod where the command should be executed. - If not specified, the pod's first container - is used. + description: |- + Container is the container in the pod where the command should be executed. If not specified, + the pod's first container is used. type: string onError: description: OnError specifies how Velero @@ -257,10 +265,9 @@ spec: - Fail type: string timeout: - description: Timeout defines the maximum amount - of time Velero should wait for the hook - to complete before considering the execution - a failure. + description: |- + Timeout defines the maximum amount of time Velero should wait for the hook to complete before + considering the execution a failure. type: string required: - command @@ -270,10 +277,9 @@ spec: type: object type: array pre: - description: PreHooks is a list of BackupResourceHooks - to execute prior to storing the item in the backup. - These are executed before any "additional items" from - item actions are processed. + description: |- + PreHooks is a list of BackupResourceHooks to execute prior to storing the item in the backup. + These are executed before any "additional items" from item actions are processed. items: description: BackupResourceHook defines a hook for a resource. @@ -289,10 +295,9 @@ spec: minItems: 1 type: array container: - description: Container is the container in - the pod where the command should be executed. - If not specified, the pod's first container - is used. + description: |- + Container is the container in the pod where the command should be executed. If not specified, + the pod's first container is used. type: string onError: description: OnError specifies how Velero @@ -303,10 +308,9 @@ spec: - Fail type: string timeout: - description: Timeout defines the maximum amount - of time Velero should wait for the hook - to complete before considering the execution - a failure. + description: |- + Timeout defines the maximum amount of time Velero should wait for the hook to complete before + considering the execution a failure. type: string required: - command @@ -322,50 +326,56 @@ spec: type: array type: object includeClusterResources: - description: IncludeClusterResources specifies whether cluster-scoped - resources should be included for consideration in the backup. + description: |- + IncludeClusterResources specifies whether cluster-scoped resources + should be included for consideration in the backup. nullable: true type: boolean includedClusterScopedResources: - description: IncludedClusterScopedResources is a slice of cluster-scoped - resource type names to include in the backup. If set to "*", - all cluster-scoped resource types are included. The default - value is empty, which means only related cluster-scoped resources - are included. + description: |- + IncludedClusterScopedResources is a slice of cluster-scoped + resource type names to include in the backup. + If set to "*", all cluster-scoped resource types are included. + The default value is empty, which means only related + cluster-scoped resources are included. items: type: string nullable: true type: array includedNamespaceScopedResources: - description: IncludedNamespaceScopedResources is a slice of namespace-scoped - resource type names to include in the backup. The default value - is "*". + description: |- + IncludedNamespaceScopedResources is a slice of namespace-scoped + resource type names to include in the backup. + The default value is "*". items: type: string nullable: true type: array includedNamespaces: - description: IncludedNamespaces is a slice of namespace names - to include objects from. If empty, all namespaces are included. + description: |- + IncludedNamespaces is a slice of namespace names to include objects + from. If empty, all namespaces are included. items: type: string nullable: true type: array includedResources: - description: IncludedResources is a slice of resource names to - include in the backup. If empty, all resources are included. + description: |- + IncludedResources is a slice of resource names to include + in the backup. If empty, all resources are included. items: type: string nullable: true type: array itemOperationTimeout: - description: ItemOperationTimeout specifies the time used to wait - for asynchronous BackupItemAction operations The default value - is 4 hour. + description: |- + ItemOperationTimeout specifies the time used to wait for asynchronous BackupItemAction operations + The default value is 4 hour. type: string labelSelector: - description: LabelSelector is a metav1.LabelSelector to filter - with when adding individual objects to the backup. If empty + description: |- + LabelSelector is a metav1.LabelSelector to filter with + when adding individual objects to the backup. If empty or nil, all objects are included. Optional. nullable: true properties: @@ -373,25 +383,25 @@ spec: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: - description: A label selector requirement is a selector - that contains values, a key, and an operator that relates - the key and values. + 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. type: string operator: - description: operator represents a key's relationship - to a set of values. Valid operators are In, NotIn, - Exists and DoesNotExist. + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. type: string 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. + 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. items: type: string type: array @@ -403,11 +413,10 @@ spec: 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. + 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. type: object type: object x-kubernetes-map-type: atomic @@ -419,40 +428,41 @@ spec: type: object type: object orLabelSelectors: - description: OrLabelSelectors is list of metav1.LabelSelector - to filter with when adding individual objects to the backup. - If multiple provided they will be joined by the OR operator. - LabelSelector as well as OrLabelSelectors cannot co-exist in - backup request, only one of them can be used. + description: |- + OrLabelSelectors is list of metav1.LabelSelector to filter with + when adding individual objects to the backup. If multiple provided + they will be joined by the OR operator. LabelSelector as well as + OrLabelSelectors cannot co-exist in backup request, only one of them + can be used. items: - 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. + 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. properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: - description: A label selector requirement is a selector - that contains values, a key, and an operator that relates - the key and values. + 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. type: string operator: - description: operator represents a key's relationship - to a set of values. Valid operators are In, NotIn, - Exists and DoesNotExist. + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. type: string 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. + 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. items: type: string type: array @@ -464,11 +474,10 @@ spec: 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. + 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. type: object type: object x-kubernetes-map-type: atomic @@ -477,11 +486,10 @@ spec: orderedResources: additionalProperties: type: string - description: OrderedResources specifies the backup order of resources - of specific Kind. The map key is the resource name and value - is a list of object names separated by commas. Each resource - name has format "namespace/objectname". For cluster resources, - simply use "objectname". + description: |- + OrderedResources specifies the backup order of resources of specific Kind. + The map key is the resource name and value is a list of object names separated by commas. + Each resource name has format "namespace/objectname". For cluster resources, simply use "objectname". nullable: true type: object resourcePolicy: @@ -489,10 +497,10 @@ spec: policies that backup should follow 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. + 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. type: string kind: description: Kind is the type of resource being referenced @@ -511,9 +519,10 @@ spec: nullable: true type: boolean snapshotVolumes: - description: SnapshotVolumes specifies whether to take snapshots - of any PV's referenced in the set of objects included in the - Backup. + description: |- + SnapshotVolumes specifies whether to take snapshots + of any PV's referenced in the set of objects included + in the Backup. nullable: true type: boolean storageLocation: @@ -521,8 +530,9 @@ spec: a BackupStorageLocation where the backup should be stored. type: string ttl: - description: TTL is a time.Duration-parseable string describing - how long the Backup should be retained for. + description: |- + TTL is a time.Duration-parseable string describing how long + the Backup should be retained for. type: string uploaderConfig: description: UploaderConfig specifies the configuration for the @@ -542,8 +552,9 @@ spec: type: array type: object useOwnerReferencesInBackup: - description: UseOwnerReferencesBackup specifies whether to use OwnerReferences - on backups created by this Schedule. + description: |- + UseOwnerReferencesBackup specifies whether to use + OwnerReferences on backups created by this Schedule. nullable: true type: boolean required: @@ -554,7 +565,8 @@ spec: description: ScheduleStatus captures the current state of a Velero schedule properties: lastBackup: - description: LastBackup is the last time a Backup was run for this + description: |- + LastBackup is the last time a Backup was run for this Schedule schedule format: date-time nullable: true @@ -572,8 +584,9 @@ spec: - FailedValidation type: string validationErrors: - description: ValidationErrors is a slice of all validation errors - (if applicable) + description: |- + ValidationErrors is a slice of all validation errors (if + applicable) items: type: string type: array diff --git a/config/crd/v1/bases/velero.io_serverstatusrequests.yaml b/config/crd/v1/bases/velero.io_serverstatusrequests.yaml index 93467a4a442..a0e8c6bcefe 100644 --- a/config/crd/v1/bases/velero.io_serverstatusrequests.yaml +++ b/config/crd/v1/bases/velero.io_serverstatusrequests.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.12.0 + controller-gen.kubebuilder.io/version: v0.14.0 name: serverstatusrequests.velero.io spec: group: velero.io @@ -19,18 +19,24 @@ spec: - name: v1 schema: openAPIV3Schema: - description: ServerStatusRequest is a request to access current status information - about the Velero server. + description: |- + ServerStatusRequest is a request to access current status information about + the Velero server. properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object @@ -63,8 +69,9 @@ spec: nullable: true type: array processedTimestamp: - description: ProcessedTimestamp is when the ServerStatusRequest was - processed by the ServerStatusRequestController. + description: |- + ProcessedTimestamp is when the ServerStatusRequest was processed + by the ServerStatusRequestController. format: date-time nullable: true type: string diff --git a/config/crd/v1/bases/velero.io_volumesnapshotlocations.yaml b/config/crd/v1/bases/velero.io_volumesnapshotlocations.yaml index 79be91067a1..4986a427da3 100644 --- a/config/crd/v1/bases/velero.io_volumesnapshotlocations.yaml +++ b/config/crd/v1/bases/velero.io_volumesnapshotlocations.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.12.0 + controller-gen.kubebuilder.io/version: v0.14.0 name: volumesnapshotlocations.velero.io spec: group: velero.io @@ -23,14 +23,19 @@ spec: snapshots. properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object @@ -52,8 +57,10 @@ spec: valid secret key. type: string 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?' + 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? type: string optional: description: Specify whether the Secret or its key must be defined diff --git a/config/crd/v1/crds/crds.go b/config/crd/v1/crds/crds.go index b4444d47e2d..12177218cb8 100644 --- a/config/crd/v1/crds/crds.go +++ b/config/crd/v1/crds/crds.go @@ -29,17 +29,17 @@ import ( ) var rawCRDs = [][]byte{ - []byte("\x1f\x8b\b\x00\x00\x00\x00\x00\x00\xff\xb4VAo\xe46\x0f\xbdϯ \xf6;\xec\xe5\xb3g\xb7\xbd\x14\xbem\xd3\x16\b\x9a\x04A\x12\xe4Nۜ\x19mdI\x95\xa8I\xa7E\xff{A\xc9\xcexl'\xb3Y\xa0\xbaY\xa2\x1e\xc9G>ZEQ\xacЩG\xf2AYS\x01:E\x7f2\x19\xf9\n\xe5\xd3O\xa1Tv\xbd\xff\xbczR\xa6\xad\xe0\"\x06\xb6\xdd\x1d\x05\x1b}C\xbf\xd0F\x19\xc5ʚUG\x8c-2V+\x004\xc62\xcav\x90O\x80\xc6\x1a\xf6Vk\xf2ŖL\xf9\x14k\xaa\xa3\xd2-\xf9\x04>\xb8\xde\x7f*?\xffP~Z\x01\x18쨂\x1a\x9b\xa7\xe8<9\x1b\x14[\xaf(\x94{\xd2\xe4m\xa9\xec*8j\x04}\xebmt\x15\x1c\x0f\xf2\xed\xdes\x8e\xfa\xe7\x04t7\x00\x1dґV\x81\x7f_<\xbeR\x81\x93\x89\xd3ѣ^\n$\x1d\ae\xb6Q\xa3\x9f\x19\x88\x83\xd0XG\x15\xdcH,\x0e\x1bjW\x00}\xa6)\xb6\x02\xb0m\x13w\xa8o\xbd2L\xfe\xc2\xea\xd8\r\x9c\x15\xf05Xs\x8b\xbc\xab\xa0\x1c\xd8-\x1bO\x89\xd8\a\xd5Q`\xec\\\xb2\x1d\b\xfb\xb2\xa5\xfe\x9b\x0f\xe2\xbcE\xa69\x980W\x1ec}88:A9\x12\x01\xa3\xb3\x8c\x18\xd8+\xb3]\x1d\x8d\xf7\x9f3\x15͎:\xacz[\xeb\xc8|\xb9\xbd|\xfc\xf1\xfed\x1b\xc0y\xebȳ\x1aʓר\xfdF\xbb\x00-\x85\xc6+ǩ9>\n`\xb6\x82V\xfa\x8e\x02\xf0\x8e\x06N\xa9\xedc\x00\xbb\x01ީ\x00\x9e\x9c\xa7@&w\xe2\t0\x88\x11\x1a\xb0\xf5Wj\xb8\x84{\xf2\x02\x03ag\xa3n\xa5]\xf7\xe4\x19<5vk\xd4_/\xd8\x01\xd8&\xa7\x1a\x99\xfa\x1e9\xaeTC\x83\x1a\xf6\xa8#\xfd\x1fд\xd0\xe1\x01<\x89\x17\x88f\x84\x97LB\t\xd7\xd6\x13(\xb3\xb1\x15\xec\x98]\xa8\xd6\xeb\xad\xe2Av\x8d\xed\xbah\x14\x1f\xd6IA\xaa\x8el}X\xb7\xb4'\xbd\x0ej[\xa0ov\x8a\xa9\xe1\xe8i\x8dN\x15)t\x93\xa4Wv\xed\xff|/\xd4\xf0\xf1$\xd6Y-\xf3Jby\xa3\x02\xa2\x16P\x01\xb0\xbf\x9a\xb38\x12-[\xc2\xceݯ\xf7\x0f0\xb8NŘ\xb2\x9fx?^\f\xc7\x12\ba\xcal\xc8\xe7\"n\xbc\xed\x12&\x99\xd6Ye8}4Z\x91\x99\xd2\x1fb\xdd)\x96\xba\xff\x11)\xb0Ԫ\x84\x8b4\x8b\xa0&\x88N\xd4Жpi\xe0\x02;\xd2\x17\x18\xe8?/\x800\x1d\n!\xf6\xdbJ0\x1e\xa3S\xe3\xcc\xda\xe8`\x18\x81\xaf\xd4k:\xd6\xee\x1d5R>aP\xae\xaa\x8dj\x926`c=\xe0̾<\x81^\x96\xae\xac<\xfc\xee\xd9z\xdcҕ͘S\xa3\xc5\xd8&w\x86\xe0d\xb2d\x19Ӳ\xe1\f\x1b\x80w\xc8#\xfd2*\xf32\x06\x16\xf3y\xa3\b\xa9\x10(r6h\x1a\xfa-u\x94i\x0egr\xba^\xb8\")\xed\xec3\xd8\r\x93\x19\x83\xf6\xb1.dR\x13\xf8h\xde\x15\xec\xe90?\x13\xe6݉1(\xd3J\x1b\xf4\xd3T\x9c\f\xd4K]ɴ\xe0O\xff\x9b\xe3E&vsw\x05ʊ\xe7V\xd8N\xa0,\xc12y\x10\xec\x1f5lM\x8c\xc4N95\xe0\x05\xa0)L\x18P\x82rr\xa2\xbc\x82\x1b$IA\xcfD\x81\xed\x85T\xa2\x05\x0f\xab\xe8\r\xf9E* L\xec\xe5\x1br4\xa6\xd4o^\xbd:0\x13&M&\x8b\xa2\x12̜_\xa1\xfc\xb3]e\xa4үr8\x01\x7f\xa5\xd9aMUvd\x062\xcb\xc8W\xb4dkD]\xe0\xc4\xd9\x14\xf9\xbf\x04\x01\xd0/;\xb8\x9a\xb3\x15Fm\x14\x13\x87\xd6\x0f(\xf5\x13\x1c\xb0\x13\xc0ɗk\xeaF\xd1\x10\xda~\xb2\xd4\xf9\xfc\xfe\xfe\xa1-{L\xf7\xa9\x8fto\td\xc3\x02K0&\xf6\xa0\x1c\x13\xf7J\x16\b\x13D\xee\xa4\x0fE\x973\x10}\xf2\xebjW0c\xf9\xfe\xf7\n\xb4\x15r\xb9!\xb7\xa8I\xc8\x0eHU\xe6V27d+\xc8--\x80\xdfR\r\xcf\xce\x00Ki\xbd\xb6\x84McA[\t\xf6+;\xaa\xb5~\b\xbal\x84_N!ܗ\x90u&\x8cm\xc5\xf6,\xc3iA\xf6R5\xfa©\xabM\ad|\xcaڒiv/h\xa9\x8f\xd2<\xb0\x02de\xfa5z\b\xdd\xdeo{\r\x022\x1e5T+\x95\x86\xdcγ'ʌEo\x00\x93X@\xe4\vj\x98\x00\x0f5M\xa5\x89\xa9\x94\xc0Y\xfa\x19h~~\x90\xbfj y\x85\u009a)\xc0!ߐ\x1d쥂\b\\\x05\xb6\xbd\xad\fJY\xc2hDIVfC\x1e\x8e`\xc9H+n\xbc\xdc3M^\xff\x99\x14LT\x066\x03h#\fF\xa2PC\vy\x025C\xafw\xd4\xd0_l\xbd\x1e\x99l{\x82\x00\xecHw\x9ed\xbb\xb3\xfd12*\xcfU\xb2ݷ 2MV+\"\x15Y\xb9%pu\x83\xa0\xed\xa2j\xd6L\xb4\xfa\x88@|b\x9c\x87~\x97\x8d\xdc\x11\xd0\xf1N?\xc8\x0f\xda\t\xe9\x1c!F\x9a\xb5\xe8\xf2t\x04s\x04EJ\x19\x16\x9f\b\xde{Ɓ\xe8\xb36Px\xaa\x04\x95\x1f\x88\x88Ӂs\x0fB[\xa2z\x9c\x87\xe3\x14\x15\xe7t\xc7\xe1\r1\xaa\x1av\xe7Ȱ\x93\x92\x03\xed/?}:|\x06mX6C\x85U\x9f\f\xaeU\x84\b\xca\xff\x80c\x8bID3\xcb\f}\x04B\x035\xec\xb2\xc8y\x8b\x88\x1d\n\x90\xff\x12\xe4\x9d\xd5ٙդCl\x89\xd7\xd9\f8\xae\x13B\x12.\xc5\x01\x94\xebͮ\x87Ar\x14X\xd9ʉU\x95\n\xb8\xd5\xf9d_Y-:\xa43!v\x16\x8f\xca\x00\x13\xda\x00\xcd7\xabk2\b\xbef\xbc\xca!\xbfuFн5\xdf\xf2`\xb4\x0e4a\x8fQ\xef'\x1b\xfb\x15\x94\xb3\fm/of\xad\xd1B\x8c1\xabYH\xcf%8#\xd52\xcecج\x90\xadi\xae\xc1\xd8*\xab?\xadn,?#@\xbb\xbdv\xfbЄ*\xa8)\x10\xd7|\x11\x90P\x94\xe6<\xe4\x1e3PD\b6\xa9&\x12YG\x95\xa2\xe7\x11\xc6Ֆ\xf6e\xac\x1bk\xdec\x9e\b\xd5~g\xf6\xf5\xfb]\xc8\xc0\bD\xa6\xbfW\x06.f\x99Fo\x912aYe\x1d\xb7\x0e\xa74:C\x91\xe1X\x9aY[\x91\t\a\x0f\xfd\x9c\x861\xdf\v]\x96J\xf2\x98\xe8\xd6\x12\xe3E\xd2z\x884j\x15}\xc7D9J\xf98G\x88\xbf\xda:\x8d\xafA2\f@\x90\x1d\x1c\xe9\x89I\xe5\x87\xde\xd8\x01\xf0\x15\xb2\xcaD\xe725$g\xfb=(\v\xa7h\xb0 l\xc3:GĚ\xc7S\xa3M\x92\xdfR\xea\xc8\xce\xf7\b*wR\x1b\x17\x91옳K\xa2_\xc4ɞ\x8fz\x11\xbawY:R\x85\xfc\v\xab.{\x81Z\xcbm=\xad\x99ݞ\x81\x8f\xa49\xa0\xd6![53\xdf\xe9\xe1\x95۳\xc0Nh\x86F\xc9,\xdcR\xc9\ftt\xb7\xb8)\tZ~&\xb8X\a\x16\xa9s|\\r\xc3t03\x94tC\xd6\x12i\xa1\v\xf0\xfek+\xeai\x95\x86\xfd{N\xf8\x96\xe2Ep\xae\x17\x05\xedg\xf1$\xa1x\xebZ\x86i\xe2\x019\x97B\x1d*T\x11閧\x17\xa4\xefay/\x98\xd8b\a\xe4\xf5\xd5́Z\xb9\xc6r9b\xa5Gr߶!z\xfdA\x8c$s\xc4J)1⯠ùa|\xdc\x1a\x98\x89 \x854\xed0\x84\x85[\xca\xfc\xa5&{\xa6\xb4i#\x9a*\x14\xf1\\\x91XY\xeaq\x89\xf7J]\xe4p}r-[\x01\xb0\xa3|\n\xb9P\xa3\xc9\x13\xb1\x82\x9bI@؞0C@d\xb2\x12\x18\xb6\xb1S\x1d\xbbp,p\n:\x99di\n\xc2\x16\x10U\x91F\x805J\x1d\x13\x93\xf1\x9dv\xf5\x0f\x94\xc5v\xa0\x87e!\xdb\xccX\xcaX\xact\xd8\x16r\xc7\xdaIm\x05\xfdʊ\xaa \xb4\xb0\xa4Ou\x97\xf6.\xe3\xac\xc3\xf1:\xef\f\xe1\xe22b\xa4\x9dT%\a\x93:#]\x86\x99\x9d&\x9a\xe5P/\xcc^\n\xa4 \x94\xec)\xe3#\xe9.ò\x88\xb6K|\x14\xaf,\xae\xe7|\xa4u\xbeFR$\x04p\x13\x8d\xccim]\xaatS\xf1NA\x9ay6\x17\xcc\x0e\xe6Y\xa9\x98\xc4<\xbd+[h^Ĩ8\xff0\xd1\x06凉6S~\x98h\xa3凉6_~\x98h\xbe\xfc0\xd1B\xf9a\xa2\xfd0Ѧ\xaaMi\xeb9\x8c\xdc鸑\x1fg\xb1H\xd8֞Bq\x02\xbe\xcf\xc2\xf0yީ\x99\x99\xdbx\xabH\x1e\x7frn\xb8n-%u\xaa\xa6\x9d A\xbc\xdda\x9f\x99\xe4\xcdoȗ\x0f\x9d^\x94/\xbf\x9dl|\xa5|y\x8fa\xdf\xea\xbeR\xb6|\x18\xff\xb2l\xf9\x1b\x9f\xaaQ\x00\r\xe1y\xb7\x17\x9f\x8fu\xd9\xebm\x00\xf8wο\x1d\xe4\x87]\xc6\xf8g϶\x1fa~bb\xfc\xeaO\xab\xef\x8fҋi;J\xcd\x01\x99\"\x83\n\xc7|\xad_\xd9N\xee\xea&\xd2}\x9f¹T\x1aS3\xe6\xa7\xe85\xd42-\x82}\xaf\x93\xd9@\xf1\xa9\xf4kEډ\xcem\xa4\xc9ܙ\xce\xc8x0\b\xa0\xcf\";*)d\xa5}\xdc\xc0B\x7f\x8b\xe1\v\xbf\x15\x8ai`\x89\n\xf6\xdf\xc9QV\x91\x8c\xed\t\xda\xcd\xe4\xef\x8dg\xed\xf9=j0\xf4\xf4z\xd3\xfd\xc5H\x9f\xc3G\x9e\x989F\xf0|:\x82\xc0\xdduqh'\xe4\x87\t\xe7\x0f\x9c\xf7\x05\x89HE\x04\xe3c\vV}*\xbf\xb34}*]\x90h\xf1\xca?\x1d\xe0H\xcb\xf2\xbb8\xb7\xaf\x9b\xbb7b\x04.\xdd\xccN?\u0090\x9e\xbd7\x9dn\xb7$g\xaf\x9f\x917\nt>S/%65\x93\x95wA.^b\x1e\xf67o\xbd\xa7d\xdb]\x94c7\x9b\xaa\x9c\x98Y\xd7͙\x9b\x06\xb9 \x9f.\x898\xf3\xb9s\x8b3\xe6|\x86\xda\xe48\x92\xf3\xe4\"\x19p\x93\x80G\xb3\xe3\xa6\xf2\xdef\xe2\xdeÜ\xb8\xf4l\xb7IИ\t7\x9f\xe3v\xbdL\xf6kx\xd9\xe3\xaaf6Om\xd6\v\x9f\xc6o6\x13mI\xfe\xd9,\xc5.\xcc5\xabs\xc9F\xfa]\x9aa\xd6\xcd \x1b\x01\x9a\x92W6\x9276\x02q2\x9b,5[l\x04\xf6̲;)%\x93?.\xc9\x12\x8b_\xa2BfWC\xfe{\xc9ߥd\x90\xaac\\\xce94\x9fz\xd5-烍5m\xac\xc6\xecTf\x8eˍբ↕\x1c\xb7\x17O,\x8f\xfa\xec\xe6\b\xe7\xfab\x88\xdf$\x1e\xd7t\x97\x99\x90O\x9fka\xde\xf4Ln\xaa\xc9\x13pNhL\x14\a#\xcf\xdc=@\x99\\\x83]!\xec\xf4\xf4W^\xf8\xeb\x82n\x9c\xbc\xe3\x89\xd4\xd8\x0e\x8c9Ba\xa1\x8c_{2\xaaʧ\xcdIg\xf9ⷿW\xa0\xce\x04\xafg\xa9틙\xf3PnZj\xeb\v\x05Eᵍ\xbb}\xaagf7ӓ\xbc\x15n\xc1\x8b\x82\xed\xe1\x88p\xac\x86\xe05\xaf\xad2\xb4^\xc3H\xd5x V֭#\xbf\xcfY\xaa\xa9\x87\x89\x9e\xd7\xd1X\xeej\xcc.\xf2\xcf\xe2n\\\xeepL\x80L=\x1c\x94\xb6!>{\x18\xe8\xb9\x1c\x8f9\xd7#\xd9\xe6J;\xec\xf3\x1c\x87|\x16\x1c\xeeY\xe0\x82,sB\x92ɔr\x88\xe7Y\\\x91gtF\x9e\xc3\x1d\xb9\xcc!\x99\x01\xd9;\x9c\x93r\xec&)\xd9#y\xbf3%Yc~Kr\xfa8M\xc21\x9a\x84\xcd\xca9L\x13\x8e\xcb,;&\x93@\xc3grU\x9e\xc9Yy\x0ew\xe5y\x1d\x96Y\x97eVrf~^v\xbc\xe5\xe2\xe0\xbdT9\xa8ɽ\x8eTќ\x14ʞ\x7f\xd1\xed\xb3\x17\xf9\x0fw\xca\xd9Z\x1dS6\x16\xb0\xaeO\xbdg\xe4'&\xfc>\xaa\x15\xc2ֺ\xdfـi\f\x91x\xfc\xbf\xb1\xf2\xfcm\xa3n\xd7FCI\x15\xee\xb0\xee\xce.\xb5Bo\xc8{\x9a\x1d{ЏQ\xbfb/UA\rY\xd5[^\xaf\x1cp\xfb\xf7jC\xc8\aYoڷo\x92Ѭ(\xf9\xd9\xfa\r\x11\x98\xab6\x88\xcb\x04\"*|\xa1\xff;\xc9Y\x16\xb1\xb4\xa2\x97\v\xb9ʃ+!\xf0ʣ\xac\xbd\xf5]ڊqC\v\x8d\xb2\xee\xf5\x8a{ɹ|Z\xe8\x8eӒ\xfd'\xde\xd2<\x1f\xc3y{\xb7ŪAR\xf0v\xe7:C\xa8Fz\av\xc5l\x8636\xe3\xb7\xfb\x0e\xc4H\xa6]\xfd'Jk\xbdb\xb3\xb1[\x97\\֟\xd54w[\x87\xdd\x06\x85\x85\x8a3\x91\x98\xeba\x8eL\xe5\xeb\x92*svy\x0575\x0e\xe3q\x9c\xb0nNE[F\x97\x97\xe1u\xbfQچ[\x7fq3\xef\\v\xb7B\xfb\x14\xbd\x04\x8f\xf1\xa3|\xb3\x87\xf8\xae\x88Ǹ\t\xb2FJE>G\x93\x92\xae\x16\xc5\xd2\xfej\xdb_\xe4\t\xdeE\xa3Y\x1d\xf2\xdc\xf7\xaaG҉\x02Dw\xb9\xeb\xd4\xed\xa0x9\xe7e\xba(\x9e\x1f\x14\xba\xf6\xd7w&\x8e\xc5\u05ce\f%\xdc\\\x1a\xe0\xeax\xd4\xc6N\xaf\xbb/\xe8Z\xd5*\xcc\x1b;\xdey\n\xa1\xab\xfe\x05w\x7f\xb9~\x8e\x946R\xd1\x03\xfc,\xdd\xd5\xcbs4\xe8\xd6\xeeܻ\xedM\x9e\x90\xb3\x18fC\xcc\x15\xf0\x97@\xf7\x805\xa9ȃkp-\x96\vo\xf55\x86\xcf\f\xe6\xe1\xe1g7\x00\xc3\nؼ\xab\xdc^\xbe\xd5v\x1a,5\xc3\xc0\\\xa3\x9d\xfd\xef1\xb2^\x10\xbcO\xb6ş\x16\xde\n0\xdd\x19\xd3\xde\x16a_\x95\\\xd2\x1cԭ\x14{v\x98\x19ȯ\x9dʽu2Ï~p\xf5\xea\x13\xe0_y\xd7ݚ1\x9c\x03\xff\xc08h\x87V\x82\x12\xbd\x1b\xb6\xaaujU육\xb6\xb7?\xd6\x1d\x8c\xac>nX\x18\xf3-AY\xc3\xc8E\x87+\x1d\xc4r|\xe0\rG\x980p\x88ě'\xb4\xe8\xa9s\xf1w\x10\xe99\x95\xf2%ު\x15\x0flM*g*F5\xca\x18\x9c\xd6\xdb\a\x18)\xc7\xe3\xe5\u05fd%s\xcc\xf8\x1f\xbb\x1d\x1eoD\x9f\xbf\x1f\xde]\x9c\xee_\x83\xf0\x82\\)\xbc\xe2\xd2_\xaa\x8eWB^tE\xfc\xae\xce㩳\x84\xf4[c\xa0(\xa3\x17HG\xd0\x1bi[\x1b$\xd2Pވnl\t\xa8\x9b`\x86\xd1dj\x91\x9b\xb2\x13\x8c\x9b\x12\xda\xd8Xo}N\xfa%c\xadۦ\x8fUWY\x06Z\xef+\xce\xcfu>\xfc\x92\x81Ǭ\x81+\x91\xe2\x03e\xfc\":\xb8\x86#Dpc\x1b]\xf7\x92\xd8\xec\x93pA\xe4a\xf2\x0e\x96n[\xf0\x94\xc82:x\x16\xf8\xdc8mh1w\xd3\xfd\xed\xb0\x05>C\xa2\xf2V6]}]\xfb\x13\xd5\r\x9bcj\xb6\x01\xe7Z\xa2\xcb`\xa1AN\xe0\x04\x82\xd8u\xca\xd17<\x95\xd3o\x13\x81چ\xe2\x8fQ8]\x1f4\x7f\xf0\xfc\xfd\xf3*\x0fhn\xa9\x13\xa8\x97z\x02f}\x01\x7f\x84\bC\xc9t\xae\xf8\x1bk\xcb\xc2:\n4\xc9T\x8b\xea\xdaL\xb3\xae\x9eOVZ\xb7\xf7۱\x96\xa3\x12\x1c*\xc4\xf87x\xe8\xe2\x1b\x95\xd4pd\xa9*j8\xb29\x05\xd5QG\x91\xc15\n\xea\xea\xc3Ĺ:{C6Vr\x16\x00\x1e\a\v\xcf\x1f\xb8\xf3`\x05hM\x0f\xe1j\xec'k0\x1f@\x00\x06\x8f\"\xa3\xf1\xe1\xf8\xe6\xfcP\xf7bh\xb7oH3SQ\xdfA\xc8\xcel\xd5z\x19S\xc0\\\x1e\xdc\xc3\x15,\x03ճC\xfbЮ\xeb\xf7\x97\x1c\xb7ݽ\x8a\xd4%*\xe3{C\x86)h\x1e\xf0\x1a $\xb1\xe3E\x9e\x86\xa3B\xf4\xa9\xab!\xa6\xed\xbaa\x82y\xbd꣐\xfe\xe5\xab\x1b\xef\xbbƃ+\x05\xfdM\xaa\x1bR0a\xff\xa1\"w\x1b@\xa1\xf1\"\xfc\x8fR>\xdeG\xac\xca\x01\xf2\x7f\xad+6\xd1y&\x1c\xdax\xb4n'+\xbfo[[\x98\xf1\xbd<\xbc\xe6\xfcʞ\x13\u009cP\xe8\xd1\xe1,\xd0㮃\x11\xb7\xe9>\xbc\xbe\xc4\xf9\xf9\xa6\x0f\xb9\xf7B[\x03{\n\"J\xae_\xc4\xdb\xd7B\xf9\xbd\x92\x1e\x10W}\xe2\x8e{ҳ#/\xf1\xde<\x8d\xc7L\xbe8\x81\xa7\xed<\x87|\xcbR\x1bA\xdd\xdbonV_\xd7\xf1\xc4\v\xffg$\xff\xce֩ϊ\xb7\xdc(\b\xeb\xc1X`)~>xM>\xc20\x0e\xe2\x8e\xfcB\x8e;\xfe\xb1\xe7\xedl\x95\xad\xb8S\xf2\xa0@\x0f\x05gM\xfeF\x99a\xe2\xf0A\xaa;^\x1d\x98h\xcc\xedE\x95\xef\xa82̊\xb2\xc3'\x86(\x13\x94\xb3\x7fĔS\xfb\xc7y@\xb5\xb5\x11\xf9-\x01\x8d\xb1\x1fށ\xb54G\xbd\xed\xa8\x1e,=]\xe7d\xc1W\x9bӁa\xedol\x87X\xb8\xc7\x03ې\x8f\xd2@H|a]\x98\xd6Z\x02mְ\xdfKe܆\xe8zM\xd8\xde{\xef\x11\xb8Vq`\x10ǽ\x8fG\x98i2\x9d\x9b\xe5\x06\x03\xa9\nWM\xbcл\xa0g\xb7\xddA\xb3\xac\xb2\x16\xd1+m(\x8f\x18$ߤ\xa81Lb\xe7\v俦\xec\x02m\xdb\xf5\x87a-\x04\xe7(\x87W\x018c,j\x9a\x12\f\x83\x83 O\x8a\x19c\r\xa0vf#1\xd6\xe4\xe1\x9chk\x04\\\x14\xdf\"N\xc1m\xc73-\xba\xf1Ӻ\xf2\x98~\xf4\x83\xc3\xe7\xe0vH\x82Ѹ\x9d\xcf(\xf1m-+\xb3#\x15\a+TJV\x87c\x90\xcb\x11Sv\x04n^\x01\xc6\x02QC\xe8\x90Uf*%Z;\xcf\xf5\xf1\xd6\x06]\x9a=\x8eb\xea3g\xc2\x1b\xad\xaf\xfc;\x0f뽒\xc5\xda\xf3\x02\x93\xc1n\xfcn\xb0b\xd2Z\x13\xe6\x18%9qO\xc0\xf9\v\xd5Q\f\xca\x12\x04\xa1\xda\xe3\x93p\x0f\xceū\x876T\x99\xd40\xc0}\xa7\xf2L\x04\x00!\xc7\xf1\xbd\xf7\xbb\xdd\xee>\xa0[\xff\x02b\r\xf8\x86h&\xc2\xf3\xb0n/݉\x82&R\xe0+rR\xc5\xf3\xfc\x06.}ǁ\xef\xa2\xff\xfb\xfa\xee\xa7zM|\x9f\xe2\x04~\xe9U\xef\x9d\xf9ķ\x00\xeb*\xdeq\x8b\xd0\xe3\x0fl\xefR\x0f3\x8b\xf5\x1f\xff\xcf\xcfr\x9e\x92\x9c\x8c\x97\x93\xfe\x05\xba\x0e\xb5\xa30\xf3\xf2\xdf\x1d\ak\xf9h\x80\xae\xeb\xf2r\x91\x8fz\xba,\xear͐Kx\xb9\xf8:\x81\x88\xd3e\xc1\x96g\x8b\xb4\\wtO\x14_K\x9d\x9bc\x7f\xf3\xd5\"\xa1\x16\x0f!\x12l\x89\f\xa3\x0e\xbf\xcc\x06[Z\xb1\x96\x80\xe3\xc8\xe3f\xbd\xf8˕\xa2-\xd1u`\xf0\x11\x15hޚ۾'\xff\xe5\x7f\x03\x00\x00\xff\xff\x1f\xff\x879X}\x00\x00"), - []byte("\x1f\x8b\b\x00\x00\x00\x00\x00\x00\xff\xc4YKs\xe3\xb8\x11\xbe\xebWt\xed\x1e|YQ3\x9bKJ\x97\x94FN\xaa\xa6\xe2\x89]#ǹ\xe4\xb0\x10Д\xb0\x06\x01\x06\x0fi\x94T\xfe{\xaa\x01\xf0!\x92\xb2\xe4\xa9$\x8b\x8bM\xb2\xd1\xe8\xfe\xfa\r\xcd\xe7\xf3\x19\xab\xe5\vZ'\x8d^\x02\xab%~\xf3\xa8\xe9\xc9\x15\xaf\xbfw\x854\x8b\xc3\xc7٫\xd4b\t\xeb༩\xbe\xa23\xc1r\xbc\xc7Rj\xe9\xa5ѳ\n=\x13̳\xe5\f\x80im<\xa3\u05ce\x1e\x01\xb8\xd1\xde\x1a\xa5\xd0\xcew\xa8\x8bװ\xc5m\x90J\xa0\x8d̛\xa3\x0f\x1f\x8a\x8f?\x17\x1ff\x00\x9aU\xb8\x84-㯡v\xdeX\xb6CexbY\x1cP\xa15\x8543W#\xa7\x13vքz\t݇\xc4!\x9f\x9e$\xff\x14\x99m\x12\xb3\x87\xcc,~W\xd2\xf9?_\xa6y\x90\xceG\xbaZ\x05\xcb\xd4%\xb1\"\x89\xdb\x1b\xeb\xff\xd2\x1d=\x87\xadS\xe9\x8bԻ\xa0\x98\xbd\xb0}\x06ษq\tqw\xcd8\x8a\x19@\x86&r\x9b\x03\x13\"\x82\xcdԓ\x95ڣ]\x1b\x15*ݞ%\xd0q+k\x1f\xc1L\xba@V\x06\x1am\xc0y\xe6\x83\x03\x17\xf8\x1e\x98\x83ՁIŶ\n\x17\x7fլ\xf9?\xf2\x03\xf8\xd5\x19\xfd\xc4\xfc~\tE\xdaU\xd4{暯\xc9FO\xbd7\xfeD\n8o\xa5\xdeM\x89\xf4\xc0\x9c\x7faJ\x8a(ɳ\xac\x10\xa4\x03\xbfGP\xccy\xf0\xf4\x82\x9e\x12B@\x10!4\b\xc1\x91\xb9|\x0e\xc0!q\x89\x18MK\xaaFg\x9d\x89M\xa2\xc0ˀK\x92\x9f\xded\xe9{l\x1b\xff.\xb8Ŗ\xa5\xf3\xac\xaa\xcf\xf8\xaevx\x89\xd9\x19\x14\xf7X\xb2\xa0|_U\xb2\x92\xea\xfb\xe5\xb9Z5\xf2B\xa4]g'ޟ\xbdK\xa7n\x8dQ\xc8\x12\x97Du\xf8\x98\xbc\x90\xef\xb1b\xcbLljԫ\xa7\xcf/\xbfۜ\xbd\x86)G\x1a\x04\x05\x19\x8e\xf5l\xb3G\x8b\xf0\x12\xe3/\xd9\xcde\xd5Z\x9e\x00f\xfb+r\xdf\x19\xb1\xb6\xa6F\xebe\x13,i\xf5rQ\xef\xed@\xa6;\x12;Q\x81\xa0$\x84ɏr\xbc\xa0Ț\x82)\xc1\xef\xa5\x03\x8b\xb5E\x87\xda\xf7\xe1m\x05+\x81\xe9,^\x01\x1b\xb4Ćb9(A\xb9\xeb\x80փEnvZ\xfe\xb3\xe5\xed\xc0\x9b\xec\xbc\x1e\x9d\x1f\xf0\x8c\xf1\xa9\x99\"W\r\xf8\x130-\xa0b'\xb0H\xa7@\xd0=~\x91\xc4\x15\xf0\x85\xfc]\xea\xd2,a\xef}햋\xc5N\xfa&\asSUAK\x7fZ\xc4t*\xb7\xc1\x1b\xeb\x16\x02\x0f\xa8\x16N\xee\xe6\xcc\xf2\xbd\xf4\xc8}\xb0\xb8`\xb5\x9cG\xd1uJ\x9a\x95\xf8\xd1\xe6\xac\xed\xee\xced\x1dEmZ1k\xbea\x01ʘ\xc9\v\xd2֤E\a4\xbd\"t\xbe\xfeq\xf3\f\xcd\xd1\xd1\x18C\xf4#\xee\xddFי\x80\x00\x93\xbaD\x9b\x8cXZSE\x9e\xa8Em\xa4\xf6\xf1\x81+\x89z\b\xbf\v\xdbJz\xb2\xfb?\x02:O\xb6*`\x1d\v\x13l\x11B\x1d㾀\xcf\x1a֬B\xb5f\x0e\xff\xe7\x06 \xa4ݜ\x80\xbd\xcd\x04\xfd\x9a:$N\xa8\xf5>4\xb5\xf0\x82\xbd&\xa3xS#?\x8b\x1f\x81NZ\xf2p\xcf<Ƹ\x18\xe0\x9aC\xfcr1m\xd6tp\xd3b\x9c\xa3s_\x8c\xc0ᗁȫ\x96\xf0L\xc6\x1am%],\x8bP\x1a;\xac\x18\xac\xcd\xc0\xfd\xd5d\xaab\xf4\ru\xa8Ƃ\xcc\xe1+2\xf1\xa8\xd5\xe9§\xbfY\xe9\xc7\a]0$\xad$\xe2\xe6\xa4\xf9\x13Zi\xc4\x15\xe5?\r\xc8[\b\xf6\xe6\betk\xedՉr\x90;i>ζ\xcdZ=}n2o\n\xa0\x1co\x19\xab\x02V9rM\t\x1f@HG\r\x80\x8bL\xc7`\xe9\xa0b\x83\xb0\x04oû\xd4\xe7F\x97r7V\xba\xdf\xd3\\\xf2\x98+\xac\aȭ\xe3I\x94\x9a\xc8;jk\x0eR\xa0\x9dS|\xc8R\xf2,I\xb0\xa9r\x95\x12\x95pcM/DYTŢ\xa0\xa8f\xea\x8a\r\xd7-a쀙\xd4Ƀ;\x061\xd9\xd8*\x97T\xedQ\x8b\xb6\x1b9\x93\xc6Ĭ\xe5P\xc0Q\xfa}J\x87j*\xee\xe0\xcdأ\xf5\x8a\xa7\xa9\xd7\x03ٟ\xf7H\x94\xa9\x80\"8\xe4\x16}\xf46T\xe4>\xe4J\x05\xc0\x97\xe0bB\x1d\xe6\x89f\xc5F\xad\xd9\xfd\x8a\xa71\xd0p\u0378\xb9\x85\xb9.\xf2\x1d\xb5\u038d\xc0\x16K\xb4\xa8\xfddR\xa7\x01\xc4j\xf4\x18\xf3\xba0\xdcQJ\xe7X{\xb70\a\xb4\a\x89\xc7\xc5\xd1\xd8W\xa9ws\x02|\x9e#h\x11NJŏ\xf1\xcf\x05\x95\x9f\x1f\xef\x1f\x97\xb0\x12\x02\x8cߣ%\xab\x95A5\x8e\xd6\xebo~\x8a5\xf6'\bR\xfc\xe1\xee{p1u\x8a\x9c\x1b\xb0\xd9D\xef?Q\xa3\x16\x85\"\x886\xc9*\xc6\x02UJ2v\x95\xad\x99r͔#Nu\x98\xfdE\x89\x89*\xc8TF}\xc5q2}#\xcc\x00\xbe\xcd;C\xcd+V\xcf\x135\xf3\xa6\x92|6\xd46\xb6\xc1W\"\xb2i\xbb\xa5\x16\x92S\xdbv\x1eI\xcd8\"κ\xf3\t\x18\x86\xfd\xfa\xa5\xfc1\rSR7W\xcf+\x12?\xf6i\xbb!.%\xb3\\\x11\x1dzj\xb7\x1ch\xa4\x8a\xc9\xec\x18\xe7\x98B\xb8њb\xd7\x1b`mb\xbcsÊ\xf0\xce|\xb2\r\xfc\x15'\x80\x1f\xa9\xf2)\x126\x18\xa7m$Kp\x18S\xf551\xe0zDp\xb6F{\x8b,\xeb\x15\x11\xb6E\x95\xc1z\x05۠\x85\xc2F\xa2\xe3\x1e5\xcd\x13\xb2\x14?\xfcf3\x93b\xce\xd3\b\x84\xe2+\x1e\xe4\xf8Nh\x8c\xee\xc3hG\x13\xf8m8\xd0\xc3/\xcdh\xbd\xb0\x99\xec\x97\t0J\xa9\xa8s\x9c\xc8\x13]\xc70\xbe\xbd\xfc\xb4y\xb8s\xb1\xe1G\xed\xa7\x9a\xc4#Z\x8c\xf3\x15\n\xea\xf9M\xbe\xc5\bΣ\x9dp\x80\xd6z\xd1栌\xde\r\x02'\xad|\xa7A\xfd\\r(cA\xa0\xa7Ҥw\xc0\xf7Lﰻ\xb3\xca\xf2\xbf-)\xb9\xcf\xc0g:\x0f\x91\xfa\x92{\xdcd\xd1g9\xd5ԏ\xee\x8b;\xe2\xe9\xbb\xe2F\xfaƲ\x17\x87\xa2+\xb8\x8f\xe8\x9b*M\xa0\xce}w\x7fܭ\xef\x1f\x86Ǘ\xd37 \xf1ޛ\xf37nA\xe0\xc8\\w\x87\xfe\xdb\xe1PQ\xb7z\xb5\x05\xfe\x92\xa8\xd2ec\xde\x02lk\x82\x7f+2\xef\xa6\x1c:\xff8\xf0\x1e\x19\xe3O\x1eך\f\xa2i,\u0083\xa5\xc1\xb3\xbbC\x8bIa\xaa\xb6\xdc~\x19\xb5\x1a\xfc2\xd3\xff6\xfe\xdd\xe6\x06\xbd&k\xed\xe8e\xaa\x97=\xbbf\x90\xfbo¶\xbdW^¿\xfe=\xfbO\x00\x00\x00\xff\xff\x80.\x12\xd3P\x1c\x00\x00"), - []byte("\x1f\x8b\b\x00\x00\x00\x00\x00\x00\xff\xb4\x96M\x93\xdb6\x0f\xc7\xef\xfe\x14\x98y\x0e\xb9<\x92\xb3\xed\xa5\xa3[\xb3\xc9a\xa7mƳ\x9bɝ&a\x8bY\x8ad\x01\xd0[\xb7\xd3\xef\xde!)\xf9E\xb67\xdbCy\x13\t\x02\x7f\xfe@\x80j\x9af\xa1\xa2\xfd\x8a\xc46\xf8\x0eT\xb4\xf8\x87\xa0\xcf_\xdc>\xffĭ\r\xcb\xdd\xdd\xe2\xd9z\xd3\xc1}b\t\xc3#rH\xa4\xf1#n\xac\xb7b\x83_\f(\xca(Q\xdd\x02@y\x1fD\xe5iΟ\x00:x\xa1\xe0\x1cR\xb3E\xdf>\xa75\xae\x93u\x06\xa98\x9fB\xef\u07b7w?\xb4\xef\x17\x00^\r\u0601A\x87\x82k\xa5\x9fS$\xfc=!\v\xb7;tH\xa1\xb5a\xc1\x11u\xf6\xbf\xa5\x90b\aDž\xba\x7f\x8c]u\x7f,\xae>\x14W\x8f\xd5UYu\x96\xe5\x97[\x16\xbf\xda\xd1*\xbaD\xca]\x17T\f\xd8\xfamr\x8a\xae\x9a,\x00X\x87\x88\x1d|β\xa2\xd2h\x16\x00㱋\xcc\x06\x941\x05\xa4r+\xb2^\x90\xee\x83K\xc3\x04\xb0\x01\x83\xac\xc9F)\xa0\xbe\xf4X\x8e\ba\x03\xd2#\xd4p \x01\xd68*0e\x1f\xc07\x0e~\xa5\xa4\xef\xa0ͼ\xdaj\x9a\x85\x8c\x06\x15\xf5\x87\xf9\xb4\xec\xb3`\x16\xb2~{K\x02\x8b\x92ē\x88\x12\xd7\x06\x0ft\xc2\xf7\\@\xb1oc\xaf\xf8<\xfaSY\xb8\x15\xb9\xda\xec\xee*i\xdd㠺\xd16D\xf4?\xaf\x1e\xbe\xfe\xf8t6\r\xe7Z\xaf\xa4\x16,\x83\x9a\x94fp\x95\x1a\x04\x8f\x10\b\x86@\x13Un\x0fN#\x85\x88$v\xbaZu\x9c\x14\xcf\xc9\xecL»\xac\xb2Z\x81\xc9U\x83\\\xa0\x8d\x97\x00\xcdx\xb0\n\xd32\x10FBF_\xeb\xe8\xcc1d#\xe5!\xac\xbf\xa1\x96\x16\x9e\x90\xb2\x1b\xe0>$gr\xb1\xed\x90\x04\bu\xd8z\xfb\xe7\xc17\xe7s\xe6\xa0N\xc91?\xd3(\x97\xce+\a;\xe5\x12\xfe\x1f\x9470\xa8=\x10\xe6(\x90\xfc\x89\xbfb\xc2-\xfc\x961Y\xbf\t\x1d\xf4\"\x91\xbb\xe5rkej\x1a:\fC\xf2V\xf6\xcbR\xffv\x9d$\x10/\r\xee\xd0-\xd9n\x1bE\xba\xb7\x82Z\x12\xe1RE\xdb\x14\xe9\xbe4\x8ev0\xff\xa3\xb1\xcd\xf0\xbb3\xad\x17\x17\xa4\x8eR\xe8\xafd \x97yM{\xddZOq\x04\x9d\xa72\x9d\xc7OO_`\n]\x921\xa7_\xb8\x1f7\xf21\x05\x19\x98\xf5\x1b\xa4\x9a\xc4\r\x85\xa1\xf8Dob\xb0^ʇv\x16\xfd\x1c?\xa7\xf5`\x85\xa7+\x99s\xd5\xc2}餹\xa8S4Jд\xf0\xe0\xe1^\r\xe8\xee\x15\xe3\x7f\x9e\x80L\x9a\x9b\f\xf6m)8}\x04\xe6ƕ\xda\xc9\xc2Ծo\xe4\xebJ\xd1>E\xd49\x83\x19b\xdem7V\x97\xf2\x80M x\xe9\xad\ue9e2\x9d\xd1=\x14x{\xb6p\xbd\xa0\xf38\xb6\xc9\xf9\xca\xcd\xc3Cɝ%\x9c\xdd\xc2\x06.z\xee\xeb\\J3\xfc\x97dj'\x1e\xd9\xe8D\x84^N\xfa\xb3\xba\xb6\xe9\xad,\x90(\xd0\xc5\xecLԧbT^ze=\x83\xf2\xfbq#H\xaf\x04^\x90r\x19\xe8\x90r\x9fA\x03&]\xf0\x1b\xb1\x9c\xbe%\x91\x82F\xe6\xf6\xc2\xce\n\x0eW4\xbd\x92\x9d<|rN\xad\x1dv \x94\xf0Ff\x15\x91\xda\xcf\xd6ʛ\xf5\x1d\x04\xabls-\a\x87w\xfa\xbbI(\xb8}\x1a.#5\xf0\x19_\xae\xcc>\xf8\x15\x85-!ϯ|^\\Uz\x87\x9f\x817P\xbaz)/&9\xf7;sB\x91%\x90ڞr\xe5\xb4>\xf4\xef\x0e\xfe\xfa{\xf1O\x00\x00\x00\xff\xff\x045\f\xc6i\n\x00\x00"), - []byte("\x1f\x8b\b\x00\x00\x00\x00\x00\x00\xff\xb4VM\x93\xdb6\f\xbd\xfbW`\xa6\x87\xb43\x91\x9c\xb4\x97\x8eo\xad\x93\xc3N\xd24\xb3N\xf7NS\xb0\xc4.E\xb2\x04\xe8\xcd\xf6\xd7w@J\xfe\x94\xbd\xdeCu\x13\t\x82\x8f\x0f\x0f\x8f\xac\xaaj\xa6\x82y\xc0Hƻ\x05\xa8`\xf0;\xa3\x93?\xaa\x1f\x7f\xa5\xda\xf8\xf9\xf6\xfd\xecѸf\x01\xcbD\xec\xfb{$\x9f\xa2\xc6\x0f\xb81ΰ\xf1n\xd6#\xabF\xb1Z\xcc\x00\x94s\x9e\x95\f\x93\xfc\x02h\xef8zk1V-\xba\xfa1\xadq\x9d\x8cm0\xe6\xe4\xe3\xd6\xdbw\xf5\xfb\x9f\xebw3\x00\xa7z\\@㟜\xf5\xaa\x89\xf8OBb\xaa\xb7h1\xfa\xda\xf8\x19\x05Ԓ\xbb\x8d>\x85\x05\xec'\xca\xdaa߂\xf9Ð澤\xc93\xd6\x10\x7f\x9a\x9a\xfdl\x86\x88`ST\xf6\x1cD\x9e$\xe3\xdadU<\x9b\x9e\x01\x90\xf6\x01\x17\xf0E`\x04\xa5\xb1\x99\x01\fG̰\xaa\xe1t\xdb\xf7%\x95\xee\xb0W\x05/\x80\x0f\xe8~\xfbz\xf7\xf0\xcb\xeah\x18\xa0A\xd2\xd1\x04\xceD\x9d`\x06C\xa0`@\x00\xecw\xa0@9P\x91\xcdFi\x86M\xf4=\xac\x95~La\x97\x15\xc0\xaf\xffF\xcd@\xec\xa3j\xf1-P\xd2\x1d(\xc9WB\xc1\xfa\x166\xc6b\xbd[\x14\xa2\x0f\x18ٌ,\x97\xef@C\a\xa3'\xc0\xdf\xc8\xd9J\x144\"\x1e$\xe0\x0eG~\xb0\x19\xe8\x00\xbf\x01\xee\fA\xc4\x10\x91\xd0\x159\x1d%\x06\tRn8A\r+\x8c\x92\x06\xa8\xf3\xc96\xa2\xb9-F\x86\x88ڷ\xce\xfc\xbb\xcbM\u0090lj\x15\x8fr\xd8\x7f\xc61F\xa7,l\x95M\xf8\x16\x94k\xa0W\xcf\x101\xf3\x94\xdcA\xbe\x1cB5\xfc\xe1#\x82q\x1b\xbf\x80\x8e9\xd0b>o\r\x8f\xbd\xa3}\xdf'g\xf8y\x9e\xdb\xc0\xac\x13\xfbH\xf3\x06\xb7h\xe7d\xdaJE\xdd\x19F\xcd)\xe2\\\x05Se\xe8.\xf7O\xdd7?ġ\xdb\xe8\xcd\x11V~\x16\x99\x11G\xe3ڃ\x89\xac\xf9+\x15\x10\xd5\x17\xc1\x94\xa5\xe5\x14{\xa2eHع\xff\xb8\xfa\x06\xe3ֹ\x18\xa7\xec\x17\xe5\xec\x16Ҿ\x04B\x98q\x1b\x8c\xa5\x88Yy\x92\x13]\x13\xbcq\x9c\x7f\xb45\xe8N駴\xee\r\xd3(f\xa9U\r\xcbl(\xb0FH\xa1Q\x8cM\rw\x0e\x96\xaaG\xbbT\x84\xff{\x01\x84i\xaa\x84\xd8\xdbJp腧\xc1\x85\xb5\x83\x89\xd1\xc9.\xd4\xeb\xa4\xd5W\x01\xb5TO\b\x94\x95fctn\r\xd8\xf8\bj\xdf\xf9\x03\x81\xf5Q\xe6\xe9\xce\xcd\xe0Tl\x91OGO\xb0|\xcbA\xb2\xfdS\xa7\x8e\x8d\xe6G\xac\xdbZ\xbc\x82\x06 \xc5=~\xaa\xcf2^\xc6\x00\x93\xea\x9dD2\x8aXh\x10^\xc5\nĤ\x0e1\x9do-\x1f\xba\xd4OoP\xc1\xef\x19\xf3g\xdf^\x9d_z\xc7\"\xf7\xabA\x0fަ\x1eWN\x05\xea\xfc\v\xb1w\x8c\xfd\x9f\x01c\xb91\xaf\x86\x8e\x17\xef\ue5ba\x12\x98\xec\xc5}\xefQ\xfc\x1e/\x9ft\b\xb8)\xcb\r\x98\x86ț\x0e\xba\\ݽ\x86\xc2\v\xe1\xaf(ҝ\xdb\xf8\xe9\xb8\v\xed=~\xf9\x1a\x7fY\xab\xf2\x10\x18\xb5*K\xca݆\xf0)\xad1:d\xa4\xbd\xcd>\x19\xee&3\x02}S\xe6\x84H\xf9\x01\xa4\xd5\xe9\xd3K\xbe5B\x83\x16\x19\x1bX?\x97\x1b\xe9\x99\x18\xfbs\xdc\x1b\x1f{\xc5\v\x90˻b3!#\x97\xacUk\x8b\v\xe0\x98.\xa9l\xf2\xe0\xa1S4цGg\xfe*1S\xc2\xd85\xe3Ue\xc0\xc5{\xa3\x82/\xf841\xfa5z\x8dDx\xdeF\x17O2\xd9\x04g\x83$/\xac急\xe1\xe1>\x8c\xfc\x17\x00\x00\xff\xff\t\x15i;\xcd\r\x00\x00"), - []byte("\x1f\x8b\b\x00\x00\x00\x00\x00\x00\xff\xc4YKs\x1b7\xf2\xbf\xebSt9\a\xfdSe\x0ec\xff\xb7\xb6\xb6x\xb3\xe5͖v\x13Yeʾ\xa4r\x00\a=3\x88f\x00\x04\xc0P\xe2\xa6\xf2ݷ\x1a\x0fr\x1e )\xa9\xd6\u07b9H\x04\x1a\x8d\x1f\x1a\xfd\xc6b\xb1\xb8`Z|Ac\x85\x92+`Z\xe0\xa3CI\xbflq\xff7[\b\xb5ܾ\xb9\xb8\x17\x92\xafષNu\x9fЪޔ\xf8\x01+!\x85\x13J^t\xe8\x18g\x8e\xad.\x00\x98\x94\xca1\x1a\xb6\xf4\x13\xa0T\xd2\x19նh\x165\xca\xe2\xbe\xdf\xe0\xa6\x17-G㙧\xad\xb7?\x14o\xde\x16?\\\x00H\xd6\xe1\n\xb4\xe2[\xd5\xf6\x1dnXy\xdfk[l\xb1E\xa3\n\xa1.\xacƒx\xd7F\xf5z\x05\x87\x89\xb06\xee\x1b0\xdf*\xfeųy\xef\xd9\xf8\x99VX\xf7\xaf\xdc\xecO\xc2:O\xa1\xdbްv\x0e\xc2OZ!\xeb\xbeef6}\x01`K\xa5q\x057\x04C\xb3\x12\xf9\x05@<\xa2\x87\xb5\x00ƹ\x17\x1ako\x8d\x90\x0e\xcd\x15qH\xc2Z\x00G[\x1a\xa1\x9d\x17ʭ\xe2\x10\x00B@\b\xd61\xd7[\xb0}\xd9\x00\xb3p\x83\x0f\xcbkykTm\xd0\x06x\x00\xbfY%o\x99kVP\x04\xf2B7\xccb\x9c\r\xe2]\xfb\x898\xe4v\x04\xda:#d\x9d\x83q':\x84\x87\x06%\xb8FX\b\xa7\x85\af\t\x8eq\xfe\x94\xf9\x8d\xfd<-\xb7\x8euz\x84\xe0\xca ;,\r\x108s\x98\x03\xb0\x97'\xa8\n\\\x83$y\xafXLH!k?\x14n\x02\x9c\x82\rz\x88ȡ\xd7\x19d\x1a\xcbB+^\xc8\xc4t\x04\xebf2zN6D\xff\xdfF5\x02t\xab\xf8\v\xa0\x98\x9d\xb8\x01\ng ,\xb0\xb84\x9c\xe2 \xe8\xe4\x8e>\xfd}}\aik\x7f\x19S\xe9{\xb9\x1f\x16\xda\xc3\x15\x90\xc0\x84\xacȬ\xe9\x12+\xa3:\xcf\x13%\xd7JH\xe7\x7f\x94\xad@9\x15\xbf\xed7\x9dpt\xef\xbf\xf7h\x1d\xddU\x01W>S \xf7\xd4k\xd2\\^\xc0\xb5\x84+\xd6a{\xc5,~\xf5\v I\xdb\x05\t\xf6iW0Lr\xa6\xc4Aj\x83\x89\x94\xa2\x1c\xb9\xafIޱ\xd6X\xd2\xed\x91\x00i\xa5\xa8D\xf4P\x952\xc0\xa6\xe4ňq\xdep\xe9\xcbz\xa7)\xd1\x04\xd9\xfbܚ\x84M\x0e|jr\x98\x81r\xc6\x14\xa0\x9dz\xd9\xfd\x1a\x83ZY\xe1\x94\xd9\x11\xe3\xe0`\x8b\x19\x87#\xd7@\x9fT\x1cϜ\xe3Fq\xcc\xc1\xa6\xa5\xe0\x1a\x16\xb4\x95\xf2+\xf2G\xbd\x94\xf3]\xe8S\xf2Y\xc0\xb4\xe2gp\xc5\x1d\x19\x18\xacР,19\xaeS\xc9C\x06\xd90\xac\xcf1\x1eW\n8\xe1ճ\x88\xdf\xdd^'O\x9e\x84\x18\xb1\xbb\xf9\xbeg\xe4C_%\xb0\xe5>Н\xdf\xfb\xf2\xba\n\x9by\x9f\xe6\x140\xd0\x02C\x1a\xb8\x0f\x12 \xa4u\xc88\xa8*ˑj\x12 \xc37\x18W\xbc\x0e\x1e,\xba\xcaCh!\xd9\x03#\xdf)8\xfcs\xfd\xf1f\xf9\x8f\x9c\xe8\xf7\xa7\x00V\x96h}\x16\xec\xb0C\xe9^\xef\x13s\x8eV\x18\xe4\x94fc\xd11)*\xb4\xae\x88{\xa0\xb1\xbf\xbc\xfd5/=\x80\x1f\x95\x01|d\x9dn\xf15\x88 \xf1\xbd[NJ#l\x10Ǟ#<\b\u05c8i0\xddK\x80\xd4+\x1e\xfb\xc1\x1fױ{\x04\x15\x8f\xdb#\xb4\xe2\x1eW\xf0ʧ5\a\x98\x7f\x90\xed\xfc\xf9\xea\b\xd7\xff\v\xa6\xfd\x8a\x88^\x05p\xfb8<4\xba\x03\xc8`yF\xd45\x1e\xb2\xaa\xe9\xe7\x83\n\xb9\xea\xefA\x19\x92\x80T\x03\x16\x9e1\xdd^p\x94\xc8g\xa0\x7fy\xfb\xebQ\xc4cy\x81\x90\x1c\x1f\xe1-\x88X\xdahſ/\xe0\xcek\xc7N:\xf6H;\x95\x8d\xb2xL\xb2J\xb6\xbb\x90\xe7n\x11\xac\xa2B\t\xdbv\x11\xf2 \x0e\x0flGRH\x17G\xfa\xc6@3\xe3Njk\xca~\xee>~\xf8\xb8\n\xc8H\xa1j\xef\x89)jV\x82\xb2\x19JcB,\xf6\xda8\v\xe6\xe9\xb3}P\x1f\xa7\xa0l\x98\xac1\x9c\x17\xa1\xea):\x16\x97/\xb1\xe3yJ\x92\xbeLj2u\x1c\xff\xb3\xe0\xfe\xc4\xc3\xf9\f\xfa\t\x87\x1bV\x19'\x0fw\xdfo\xd0Ht\xe8\xcf\xc7Ui\xe9h%jg\x97j\x8bf+\xf0a\xf9\xa0̽\x90\xf5\x82Ts\x11t\xc0.}\x99\xba\xfc\xce\xffy\xf1Y|E\xfb\xd4\x03\x8d*\xed\xafy*\xda\xc7._t\xa8\x94\xc3>=\x8e]\xaecf5]Kf\xf1Ј\xb2I\xc5I\xf4\xb1G\x8cIP&̃kfr\xf7\xd5U\x99\x04\xda\x1bB\xb4[\xc4^ڂIN\xff[a\x1d\x8d\xbfH\x82\xbdx\x92\xf9~\xbe\xfe\xf0m\x14\xbc\x17/\xb2\xd5#\tx\xf8\x1e\x17\aX\x8b\x8e\xe9E\xa0fNu\xa2\x9cPSVz\xcdI\xf0\x95@s&\x8d\xfb4\"N\x89f&\xbf\xdd\xd3<+\x8ft\xac\xce$n\xc3\xd6\xe1\xa9\xf4\ue93cƍ\x1bV[`\x06\x81A\xc74\xdd\xf3=\xee\x16!!\xd0LP4\xa7\x80\xbd\xef\x8a\x00Ӻ\x15\xd9\xc0\x1d\xc3~LY\xa3$\xa8,g\xb5=v\xf6쭥.\xd0\x1a\x1d\x95\xad\xdfD\x0e\x9f'{>Y&\xf9\xc4z$\x8a\xaa\x90\xbb\xaa\xbdoy\x96\xa9\x8e\x9f\xb4\xcfA\x1d\x11\x9f\x89B\xf11=\x17\x83֨\x99!K\xf7\xaf.W\xd3g\xc1\xd7`\x85o%Sf\x1aR\xd5\xd0\xe8\xb1\x14\x9c(\xb5R\x063.\x13\xe6ae\x14D\xc6\xf0\xbfe\xfc\xc8\xea\xc9l\xd0#\xe7\x03\xde\xf19b8\xd2o\xf6Om+\xf8\xe3ϋ\xff\x04\x00\x00\xff\xff{ŋW\xf4\"\x00\x00"), - []byte("\x1f\x8b\b\x00\x00\x00\x00\x00\x00\xff\xc4YKs#\xb7\x11\xbe\xf3Wt\xad\x0f\x8a\xabv\x86\xdeM*\x95\xe2mW\x8aSJl\xadj\xa9\u074b\xcb\apМ\x819\x03\xc0x\x90b\\\xfe\xef\xa9\x06\x06\xe4\xbcHJ\xaaȞˮ\x80F\xe3Ç~\xa1\x99eٌi\xf1\x15\x8d\x15J.\x80i\x81\x8f\x0e%\xfde\xf3\xcd?l.\xd4|\xfbn\xb6\x11\x92/\xe0\xda[\xa7\x9a\xcfh\x957\x05\xde\xe0ZHᄒ\xb3\x06\x1d\xe3̱\xc5\f\x80I\xa9\x1c\xa3aK\x7f\x02\x14J:\xa3\xea\x1aMV\xa2\xcc7~\x85+/j\x8e&(O[o\xbf\xcb߽Ͽ\x9b\x01H\xd6\xe0\x02\xb4\xe2[U\xfb\x06\rZ\xa7\f\xda|\x8b5\x1a\x95\v5\xb3\x1a\vR^\x1a\xe5\xf5\x02\x8e\x13qq\xbbq\x04}\xaf\xf8נ\xe7s\xd4\x13\xa6ja\xdd\x7f&\xa7\x7f\x10\xd6\x05\x11]{\xc3\xea\t\x1ca\xd6\nY\xfa\x9a\x99\xf1\xfc\f\xc0\x16J\xe3\x02\xee\b\x8af\x05\xf2\x19@{\xce\x00-\x03\xc6y`\x8e\xd5\xf7FH\x87\xe6\x9aT$\xc62\xe0h\v#\xb4\v\xcc\x1c\xf4\x80Z\x83\xab\x90\xb6\f\xac2!\x85,\xc3P\x84\x00N\xc1\n\xa1E\u00832\x80_\xac\x92\xf7\xccU\vȉ\xb8\\+\x9eˤ\xb3\x95\x89\x9c\xdf\rFݞ\xcea\x9d\x11\xb2<\x85\xec\xff\f\xaa\x87\xe7^\xf1'\"y\xa80\xc8$4^\u05caq4\xb4y\xc5$\xaf\x11\xc8@\xc1\x19&\xed\x1a\xcd\t\x14i\xd9\xc3^\xf7\x91|I\xfa:3\xcfa\xe79TD\xd9\xde\xf6_\xbbC\x97\xf6\xbdW\xbc]\x00\xadQ\x83u\xccy\v\xd6\x17\x150\vw\xb8\x9b\xdf\xca{\xa3J\x83\xd6N\xc0\b\u2e6e\x98\xed\xe3X\x86\x89\xd7űV\xa6an\x01B\xba\xbf\xff\xed4\xb6vQ\xee\x94c\xf5ǽC\xdbC\xfa0\x1c\x8eh\xc9\xd9\xca\xf6\xfa\xff\x14\xb8+\x82t\xa3d\x9f\u05cf\x83\xd1)\xb0\x1d\xa5)\xde\xe6\x85\xc1\x10j\x1fD\x83ֱF\xf7\xb4~(\xfb\xfa8sq No\xdf\xc5PVTذE+\xa94\xca\x0f\xf7\xb7_\xff\xba\xec\r\x03h\xa34\x1a'Rt\x8d_'ytF\xa1\xcf\xec\x15)\x8cR\xc0)k\xa0\x8dN\x11ǐ\xb7\x18\xa2\xb3\b\v\x06\xb5A\x8b2摞b !&A\xad~\xc1\xc2\xe5\xb0DCj\xc0V\xca\xd7!\x02m\xd180X\xa8R\x8a\xff\x1et[\xf2=ڴf\x0e\xdb\x10\x7f\xfcB\f\x96\xac\x86-\xab=\xbe\x05&94l\x0f\x06i\x17\xf0\xb2\xa3/\x88\xd8\x1c~$\v\x11r\xad\x16P9\xa7\xedb>/\x85KI\xb3PM\xe3\xa5p\xfby\xc8\x7fb\xe5\x9d2v\xceq\x8b\xf5܊2c\xa6\xa8\x84\xc3\xc2y\x83s\xa6E\x16\xa0ː8\xf3\x86\x7fc\xda4k\xafzXGN\x17\xbf\x90\xeb\xce\xdc\x00%;\x10\x16X\xbb4\x9e\xe2Ht\nٟ\xff\xb9|\x80\xb4u\xb8\x8c!\xfb\x81\xf7\xe3B{\xbc\x02\"L\xc85\x05]\xbaĵQMЉ\x92k%\xa4\v\x7f\x14\xb5@9\xa4\xdf\xfaU#\x1c\xdd\xfb\xaf\x1e\xad\xa3\xbb\xca\xe1:T\x12\x14/\xbd&\xcb\xe59\xdcJ\xb8f\r\xd6\xd7\xcc\xe2\xab_\x001m3\"\xf6iW\xd0-\x82\x86\u0091\xb5\xceD\xaa`N\xdcװ*Yj,\xe8\xfa\x88AZ*֢\b\xbeA\xe1\a\xd8H>艹v]\xfaV\xac\xd8x\xbdtʰ\x12\x7fPQ\xe7Ph\x80\xed\xe3Ԛ\x04Nvr^T\x0e6J\x8e\x94\x02\xd4i\xf1\xaeB\x83\xdd5\x06\xb5\xb2\xc2)\xb3'\xc51[\xe6#\r'.\"\x1cY\xf1\vǠp\x1f\x1c\xc2\xe0\x1a\r\xca\x02S\x848W\xc9L\x9c\xa2\x93\xd0\xc7\x10OS\x0fg\xa2\xe7$\xe0\x0f\xf7\xb7)b&\x86[\xe8n\xbc\xef\x05z\xe8[\v\xacyH(\x97\xf7\xbe\xba]\xc7\xcdB\xecp\n\x18h\x81\xb1\"=\x04c\x10\xd2:d\x1c\xd4zR#\xbd\r\x80\x1c\xcc`\xbb\xe2m\x8c\x14mH:\x86p\xa2\x1e\x18\xc5(\xc1\xe1\xdf\xcbOw\xf3\x7fM1\x7f8\x05\xb0\xa2@kC\xbe\xc6\x06\xa5{{\xc8\xd9\x1c\xad0ȩp\xc1\xbcaR\xacѺ\xbc\xdd\x03\x8d\xfd\xe9\xfd\xcf\xd3\xec\x01|\xaf\f\xe0#kt\x8doAD\xc6\x0f\xe1/ٌ\xb0\x91\x8e\x83F\xd8\tW\x89a\xd2:0@\xd6\xd5\x1e{\x17\x8e\xeb\xd8\x06A\xb5\xc7\xf5\b\xb5\xd8\xe0\x02ބJ\xf0\b\xf37r\xac\xdfߜ\xd0\xfa\x97\xe8@oH\xe8M\x04w\xc8w]\x8f<\x82t\x15s\xe0\x8c(K<\x16\xa2\xc3/\x04o\n\x89߂2ĀT\x1d\x15A1\xdd^\x8cG\xc8G\xa0\x7fz\xff\xf3I\xc4}\xbe@H\x8e\x8f\xf0\x1e\x84\x8c\xdchſ\xcd\xe1!X\xc7^:\xf6H;\x15\x95\xb2x\x8aY%\xeb}\xac\xf6\xb7\bV5\b;\xac\xeb,\xd6\x1b\x1cvlO,\xa4\x8b#{c\xa0\x99qg\xad5U\x19\x0f\x9fn>-\"22\xa82\xc4;\xcaNkAU\x03\x95\v1\xe7\x05k\x1c%\xcd\xf4Y\x1f\xcd\xc7)(*&K\x8c\xe7EX{\xcaB\xf9\xd5K\xfcx\x9c\xfa\xd37Q\x02\f\x03ǟ\x96D\x9fx\xb8P\xa9>\xe1pݷ\xd6\xd9\xc3m\xfc\n\x8dD\x87\xe1|\\\x15\x96\x8eV\xa0vv\xae\xb6h\xb6\x02w\xf3\x9d2\x1b!ˌL3\x8b6`\xe7\xe1\xc9<\xff&\xfc\xf3Ⳅ\xd7\xf5S\x0f\xd4{\xf4\xbf\xe6\xa9h\x1f;\x7fѡR\xad\xf8\xf4\x8bE\x96f\x82*$*\x82b\xd59]\xd73\xadk*l\xdaR\xea\xd0T,\x94\\\x8bқ\xf0z\x19\x93\"}]\xb3U\x8d\vpƏ\xe9<\xe3)\xdd\xfe\xe3\x85\xcb\xfd\xd2\x11M7{\xa1\x03ꪩ\xbb\xed\xf5ELJA\xe9\x9b1\x94\f6J\v61Nv=\xf2i\x9ax3\xae\x05\xcf\\lt\x9a\v\x1c\xb4\xed\xba\x89\xb7g\xebs\xb1\x16\x0f#\xf4\xde\v\x9e7\x9dĞ\xeb\x8b\x06\x7f\xf5\xf4\xb0\xe8#̦_\xd4\x03\x19\xad\xf8lHZ7\x8c\r&\x8fAh8\xd1\xf7\xef\xc1l\xaf\x8d\xdc=\u0378\x19\x11z\x94\xcfiGľh\xcb{̊.uK\xe9I\xf8\xe2\x86D\xa1\xe8\xb9\xd5ki^\xb0\x81\xeb\xf1\x8a\xd0\xfd3\xbc\xf5\t\xd1`x\xe5ǖ\xee\x8eٴ\xc9\xd4}CG_\\\x1a*\x11R\x87<<\x86譶f\xa2F\x0e\x87_\xa6\xc2\xcf\x0f6\xb4\xc1\xae\xa6j\xff\xa4\xc8[\xe4!\xd6N\x80\x1e\xafK\x9de\xce\x1cf\xa4\xe2e\x81fҽ\x1a\xb4\x96\x95\x97\xfc\xeb\xc7(\x15\xfb$\xed\x12`+\xe5ݡQ\xd2:ZKŕm\xad\xe0y͚\x8a\xd9KP\xeeIf\xca\xe2\x0e.\x7f\xde\xe4\xe0L(\xbb\xc3\xdd\xc4\xe8\xa8\xd3ߝ\xbcN&41\xf7}\xb0\x8eg\x11\xd0nt\x89\x83V\f*U'\xebV\x8e\x12\xb9oVh\x88\x88\xf0\xf3Bb$\x05\x8e\xa9\xceSx\xb1\x1e\x99BS\xdb\xe0G\xc1\x9b\x12ʨm\xcf\xd62\xc0\xf8\xd3\xd9\x00\xb4:\x94\t+\xffV\xfd[\xb4E\xfb\xabU\xa7\t\x8c\xa9\x02b%\x90\t\a\x8f0\x81\x8bMR\xda6f\xa0J 7\xb9:BD\xc39\xddr\xb8%F50B\x19\xaa\x14=\x8d\x10&\x98\xe0\\\xba\xc4\xfe^!pV@\xd7P8\xd28#C\xd59F\xe4\x0fN\x15\xa6\xad:\v\xab\xbc\x97\x9c\x15\xa7YҤ\x06\x85\xed\xe67_\x90\xe0-\x1c\xe8\x91I\x95X\x92ݑ\xb6kǐ\xb6\xcaTZ]恔\x97-8I\xac\x83\x94Os\xbc\xff\xd9\xf6i\xb56)\xd0y\x8bK\xf1\xdc\xf6Ft\v\x04~@ј\x04\x9a\x84\x94\r\x1a\x10\xa9H-\xb5\x19\xe7\xfb\xb8\xee!N\x1d\x8c\t-\x99\x12\x9a\xb3\x95yU\x198g\x17\xdaS\x9bR\x80ŵ\xb2\x9ck\xfb*ٸ\xbeC\xfb֡x\x9a\"dK5\x94Dz\xa9o8h?W\x89\xeco\xf5\xca\xcd(\xe8\xb8x\xe7ip\xba\x05N4p(\x8cT\xe7\x94̡\xa7k9\xbar\x84\x8e\t\xad\xd9\x17\xffva\x13 \x89\x15\xf3\xe7\x03+\x0e\xce\t\xb0\xb2\x89pH)A\xa3Ⰾ\xeail\x91d\x8e\xf7~\x92)\xd5Ѷ\x99=5\x84\x97R'm\xcbP\xb7m\x9bQ\xbcg\x8a\xc5\x7fOZζ\xfd\xdf$l\xb0$\x17\b\xed\xe6l\xe8\xeb\n-\x06U\xd6\xd9\xdf\xec\bT\xb59\xdd\x10f\xc2\xd79\x88\x94\xf3\xce\xfc\xff\xc0\x8cY.\xf1\x9b\xe1\xc8W\x95\xf8I\xae\xccA\xb4\\\x89\xd3\xff\x032\x05\x8dţ\xb7\x15\xd9\f\xf9Kw\xd4\ra\xbbȐ\xf2\x86\xec\x187\xa0\x06\x9cy\xd1~y\rb\xe4\xd8;\xdb*j\x8aç\x1fֳ\xd1m\x9e)\x93.\xc3\xc1\xce%\x0e1B\xdf0\xcf\xc0%\x18\xbe2\x05\x95\v\x8b\xbf!5\xdb/\x18O\xdc}\xf9\t\xca)\xf2\x90<\xc9;[\xc8\xdd\x00\xd9\xee\xd4\xde\xcf\xcf]\x86w}b\xcc\xe4\x12\x1e7\x84\x92'89\x8f\x85\nb\x99C\r\xfa\xbb\xc9\xe8\xe9\x9c8\x98yA!{\x82\x13\x82\xf1\xa9\x94\xd9ѹ\xa2\xe0\xda\x13$\xdc\xfdT\xeb\x11\xd0\xe2\xe4\x03\\GI\xfb\x01\t\x81\x81w>\xf1\b\xa6ł.\x9a_\x1c\xc9W$\xa1\x05\xda_\xb0\xccȶN\xfa\x10\x19\xfbN;\x16\xd9]p`u\xe6B1{\xa8\x01wKH\x8c}\xa7\x9c\x95q\"'\xf7\x1b1\xee\r\xf7\xdb\x17i6\xe2\xc6Ed\x1a\xa5\xe4'\t\xfa\x8b4\xf8\xe5*\xe4t\x88_@L7\x10\xb7\x97pj\xdbҡ\x9ba\xcb\x10n\xd76.\x91\x12\xd9\xc34\xd9\b\x1b\xb8xz`\xbe\xd4M7m\x1f\xfa\xadj4\xa6Є\x14+4\x95\xeb\xd4L\x8eؙ \xa5\xeaq\xe4\x1c\xb58\xa9\x9b0\x13\xec7kI\xdcx\x97\x01洀2D\x9b\x98\xb7\xa4\x06\xf6\xac \x15\xa8\xfd\x94\xe1\xe8\xb6\xda\xea\xf7<\x142\xb5\xaek\v%,ϴ\x87\xe6Uw9\x8f\xcc\xca\xee܌^\x81ٳ]Gҕ\xe3]\xe7W\x84&\x16\xfd\x8fY\xeaҲ\xc4#$\xca\xef\x17h\xfc\x05\xbc8\xb7\xfd\x0e1g!+Z\xdb\xfd\xfb\xdf\xd6̡@\xff\x0f\xa9)S\x19{\xf8\x0e\x8f\x898\xf4\xc6\xfa\xc4Xw\x1a;\x03\xd3\xc4\xf2\xf7H\xf9y\"<\xb18iu\vpg\xc8\xe5\xee\xccc\xb9!\xcf\a\xa9\x9dM\xdd1\u0a54M\xbf1M\xde>\xc1\xe9\xed͙\x1ex\xbb\x11o\x9d\x81_\xacn\xa2\xb7 \x05?\x91\xb78\xf6\xedK\x9c\xa0LI\xcc\xec\xf6c\xf5\x14Sr\xab\x8a\xd6+/\xbdFV\xac\x18\x1d'\x92\xe9\xf1\xb6\xf5ĩ\x9b\"os\xe3\xde=\x9eZm\x96\xfc\xd6R\x9b\x9fӉ\xbe\x11|\xeeÈ\xbeO\x9bȗ\xcd\xfa\xfa>\xf7\x15\x95\xb1\xf5\x00w\x06\x94O\xfe9\x05\x1d\"\x87\x17\xc6Tsɽ\x98أ1!k\t<#M\xee\xa8$\a\xc5%ަ\xa5\xcbB?\xfdӏNn\xd2\xeel\xfbww!\xaf\xed\r\x17\xb2\xaa\xe8\xf0p0\vՏnd\x90i\x0f\xc8q_\xed\x1b\xdc\xcf\xf9nb\x90!<\x16|f\xe6\xc0\x04\xa1Am\x80\xf2\x02EI-\xe75\x98k\a\xaa\xc9\x16@Ĝ\xfa\x1f\xc1\xceWLlp\x02\xf2\xe1\xd5\xfd\x02Ғ\xeb\"v\x06RG\x86\xc6\x0fh\xa9r]*Y\x92\xe7\x03(\xe8I\xc5y\xa2\xdcz\x9a\x99 \x854\xdd|\x84\x85[\xcb\xf2\x9d&;\xa6\xb4\xe9\"\x9a+p\x8d\xce\x15\x87\x85\x1c\xb6\xab\xfb\xc6*\x90\x8d\xb9\x80\a\x9f\xdaѽs݊\xfe`US\x11Z\xc9&\xc3)p\xcd\xda\x17V\xc5\xc3Wρg\xcaL<\x87\xc2̌\x91\x96K5\a\x93\xcb\xe2-\xec\xac:*\xa4Ь\x04\x15\x8a\x03\x1cg\x99\xb4\x1bwG\x19oR\xc7>\xa9\xb64\xbc\x15\x9f\x94\xba(\xba\xfd\xeaFv\xb2\x8d\a\xf9\xdc'P6\t\x0e\xf4\b\x84\xed\b3\x04Da\xf9\x02ʩl\x9c\xc2\x13\x03I\x93-\x96y\n\xde6\x10M\x95G\x80\x15\xeel&&\x93i\xdd\xee\x9f)\xe3\xd7`\x9b\x95\xbc\xcfR=\x00-/I\xc0\xfc\xda\x19N@\xe8F\xe1\xc1\xbdS/ό\xe7\xe1l9G8mDq\x00\xd4S\xa2\xa7>\x88\x03τ6@se\xc1zM\x8d\x10L\xec\xf3x\x97\x9d\xe2l\x9b#\xf5VJ\x0etX\xf0\x94j\x96֗\xab\xa1_\xdbѿ\x8b\x1a\x8a\x1c\xc8w\x17\xb6\xe0Y\xe5u\x115\x06\xaa\xda\xed7IT#\xba\xd6\xe7\nZhI\f\xee\xb1x\xcd\xe0\x9a\t\x96\xc1\xd8\xc1\x99\v3]\xcf҂\xb8\xaagi'\x88N\xc5%\xe9\xb3M\x0f\x80ݝ!HAܣ\xd4,\xf02\xb7@hYB\xe9\x12\x93\xd6U\xf11\x8b+/\x1b)UH\xaen\xb9\x9b\x98\xc5\xd9\xd0z\x11)\xa6b\xd5\x11V\x8dx\x12\xf2Y\xac0\x92\u05cb\x15H~j\xf0U\xa77\x17k\xa2\xdfS\v\xf5\xe55_\xa6\x82\xf3t\x05-\x93-7\x8b\xb2!SR0\xa7\xd7\\\xe9\xf2ȏ\xb3XL\xcd?1\xd8\x1f4\x7ft5ǹ\xf5l\x9b\xf4\xa8\x8e\xf3\xf7|\x00s\x00\x15\x8a\x99WX\xb7\x9d\xd2\xd3\xedyt\x1b\xc7\xc4\x027+?\xc1\x15v\x85\x97\x83\x92\xb7t\xa0c\xbd\x80\x1b+ش\xe1ƕ\x1f\xab&!DY\x85_i\xcf \xa7rb\xae^\xa2_\x03\x18\xeb\x15B\x11\xa0\f\x93$V\xe8x\xe9*}\xbb\x87\xf1\xfd\xc2\aL\xf9\x05L\xff\xee\xe5\x81\x195\r3\x95\f\xd3E\x93S\xf4:\x17\x9b.\xc5Z\x19\xf4\xfd|5\xed\x1f\x8b|\x06\xaa\xaf\xb5\xdf\a\xa3\x0eh\x9f\x82\x89!\x83r\x10\xd4\xdc6d\xc7\xc2\x02\xcaR\xca\xc5\xeeB\x9f\x0e\xb4\x10\xef\n܉2\x00֘j\xf6\xbb\xcdW\xb73M\xfe\x95\x1cd\x93(\xa9\x9b\xa0\xceL\x81\xc5xY\x85?D\x00C\x8f\x1f\xd6\xfd_\x8c\xf4E\x16\x98\xf9J\xac\x0e\x03\x956\x9b\xcaDɎ\xacl(\xefm\xb2\x8eX\xb4\xd2C\xa4\"\x82\xf1\xd4\xf9\xaa\x15\xab0\xbe'F\xe4k\xed\xceY\x16\xab\xa3i\x171\xaf\x16\xe3\xe2\n\x8c~\x85ň\x91Zz\xe4\x90_j\x9a_c1]\x14\xb1\xa4\xb2bX71\nt\xbe\x9e\"ǻ\x9f\xa9\x9d\xb8\xa0b\"\xb3Z\xee\xc5\a$95\x11\x17UB\xcc\x16\x94e\xd6?\xf4+\x1b\xa6A.\xa8z\xc8\"\xce|\x85\xc3\xe2\xba\x06_G0\xb9\x8e\xecj\x86D\x9d\xc2$\xe0\xd1\x1a\x86\xa9\xea\x84i\x92'*\x17\xf2k\x12&Ac\xbd\xc2|%\xc2\xeb\xd5\x1b\xbeF\x140\xaejf\xab\t^\x14%d\xd4\v,\xa9\x12\x98\xa5\u0605\x15\x01\xf1\xc4\x7fdޥu\x00\xfds\xfe\x11\xa09\xa7\xff#\xa7\xfb#\x10'\xcf\xfcs\xcf\xf4G`Ϙ\xddI)\x99\xfcq\xc9Y~\fC~\xa1u\xcd\xc4\xfe\\Nr\xa5iR\x92\xce\n\x01\xbas\xf6D\xa9\x1b-\xf4\xe2\xacԔ\xeeVn\"&\vi=&\x8c\\\x93;q:\x83\x8bW\x02\x921H\xffږE\xeb\x99q\u07bd\x9b\x84`\xbb\xa0\xfc-?\x9d\xce\f؎c\x1ev\x92\x85R\xf5\xbc\xe3\xb9\x10\xec\xeb\xa0{7Q8\xedm\xa7\x1cmf\x0e\x17z\xdbU\xc3\r\xab\x93[\xbeV\xf2\xc80\xedx\x80S\xa4\xe7_%\xde\nڞ\x10\xd2ׇ\xb8\x1b׃\xc0\x81\xa6\xf6\xd03pN\xa8>_~\xe1.\xc6\x16r\x85w\xdd,'\x83<\xf8\v\xb47\xb8cS\x11\xbb\bW6+\v\x06/\xd7\xeaDFd\xd4\x16M\xfb\xc3\xceu\xc7o\xbf5\xa0ND\x1e\xf1L\xdf;H3e\xf7N\xafh\x1b\xbf\x05M\xe7ե\xbb\x8e=\x88\x13Z\xfdB\ue133\xd8I\xb0\x03\x1c\x11\x8eUqmld\xb5\xb9\r{F\xba&\xa1\n\x19G\xa7\xe5a\xd20\xe5֬_7RZ\x1e+\xcdz)W\x89\x97.\x8f\x98&@\xe6֠睉\xcc֜_+r\x9a\x8b\x9d\xb2\x9dƼ\x9a\xf2kԒ/\xa8!_\x10C-\x8b\xa2\xb2ɔS+~\x95X\xea\x8a\xd1\xd45\xe2\xa9\xcb\"\xaa\x19\x90\x83\x1a\xf0\x9c\xea\xee\xacc\xbc\xec3\x9b\x9cS\xb6\xf9\x93\xe3\xe9\xaa\xed\x8cj\xed\x8cӠ9L3\xaa\xb2\x97Ucg\xd0\xf0J\xb1֕\xa2\xadk\xc4[\u05cd\xb8fc\xaeYə\xf9yY\x15\xf5Ň\f\xe18\xfa\x8b,\xe1^*3\x17 \xdc\x0f\xfb'\x8e\x00;A\x93\xe4%\x11\xa1k\xea\xa4\xc1\xfa\xfe\xde\xef\xbflQ\xe9Ӻ\xe0\xfe\xfe\"K\x8b\xdb\xdc\xd9\xc2à\xfb\xd9\x15\xda\x1d(\x10\xeea\x89\xff|\xfc\xfa%\xc2O\xf9\xa3\xde\xe9\x1d\xbci\xe0\x1c\x8c\xd2\x13ǟ>\xf9\x82\x1bG-\xb4\xe1\xaf|H@k\xf6\x1f\xf8f\xd7|B\xe6\xee~\x83]\x83\xb7\x84o}\xc5\x03\xfdx\xf6\xb6\x05k=\"EF\xa5\x7f\xb3\xebAL\x94\x9d\xc6?\t\xbe\x98\x14\xac\x17\x1b\xab\xc9rEHv\xd7\xddo\x1cvk\xf2ٺn\xe2D\xa4\x13\xbc\x03S媦ʜP:\xf4M\xc4a<)\x13l\xc8T\xeadT՞\xbf\x05\x95\xa4mx\x12\n\x0f\xe0Nu\xff4sH\xd1K\xf0\x18\xbf=1{o\xe2\x15\xf1\x187\xc7+\xa4T\xe2s\xb2\x02\xe2\xd5RR^\r\xdd\x7f\x9fSk\x0f\xb1\xe3\xb4>\xb3\x91lH\xeb$\xe8cǣJӂ\xd6\xfa\x90\xc8\n\xbdL\xa7\xe1CU\x86\x9a&s=\xaeooI\xac8t\x14\xd03\x04\x15\xa5:\xcf\xf6\rp\xb2{\xd5\x01B3\x8c.\xb4`\xfc\xa6\x13\x98\xff>G\x9e\x99ς\\\xfc \x88#ψ\xaa\xc0L\x93UcA\x16Z\xba\\p\xd89\xeb\xc2e\x14\xb6N\xfb\x9d\x99/J\\\xfc\x96\xc4<\xb1\x12\x84\x1a{F\"穈\xbf+='T\x92.\x0eP6\x1c2\x1ex{\xect\x9d\x7f\xe2-\x00N\xedI\xd9\x7f\xe4\xcdҵc^\xad\xc3\xdb\x7fL\xce\x13\xddC\x1e)\xf1\xee\x82t\x9e\xbd{u\xaa\xb0~\xbcn\x8a\x02\xb4\xde5\x11\xd1T[뛂1\xe3\x81\xdfN\xaa\xe9\xe2[Gw&\f\xec\xd3Y{\xc5\f<\xd6Ti@\x8c2V\xf0\xeb`\x88\v2w\x9c\xee]\x91V\xc9\nj \xdaS\x9ca\f}\x1c\xaf\x11\x16w\xf56r$\x9b\x94\xbd\xa3\xc7J\xfdG\xf7\xf4\xd8C\x92\t\xcb;au\vZ\x1b\xbcX\x81|D&\x9a`H\xe5\xee\xec5\xc9\x1e\xd8qI\xf3\x15\xb2\xbe\xbeK\x1bZ%\x9c\xfb\xe1\xdd\xc2\xe1\b|\xb3U\x95\x9d\x8a\xb0\xee\xa3{\xb1\xd0+%\x1dT\xc7\"\xddr݁\xed\xc0\xa0?mACI\xe0\b\x82\xd8]G\x19\x87rJ(\xbfa&V\x1dA\xbd\xd3\x11\x0e֨Yi~4T\x99\x88\xfa\xb9\x92\xd9IUQsKJj`eG_\xe6t\xa5\x1f\xc4Tj\xfe\xd0\f\xefAy\xa1\xc7\xcbK\xc8^\xce\xfd\xed\xa5\n\xb4\xa6\xfb\x10\x11>\x83\x02\xb2\aaI<\xf5\xe6_{\x01\xcc\x1b\x85X\xcah\xa9E\v\xd3P?\x81s\xbe\xe2qb\x02\xa4\x7fH\x16\x83\xcc\xfd\xa8*N\xab\x04\x7f\xf9\xec\x01\xa8\x1e><|F\x88\xcfݾ>\r\xebh\xe0^\xb9\xa1\xae\xee\x10ߩ5,\x06\xbe#\x06\xceμ\xc8l\x1c\xa4|\xca\xf2\x8e\x7f\x8e\x1d\xdb,\x10\x13N\x8e\xf0\xca\xddV6\xa6\xeb\xf7ʱ\x9c1\xbe\a\xf9\xcav\x04a\u07b9;8c\xa9\xcd\xf3\a'\xe3\x80\x18gJCy\xb0\x19V c\x87\xc3\xc4=\xf4\xc7\xf0\xea-秛!\xe4\xc13\xd8-\xec)\x88\xc8z\xaf\x03:w\x93CNn\x00\xc4u\x9fx\x12\x93\xe0\x1b\xc6\xc1\x15\x19{\x84o\xce\xc8\xe1\\\x9f\x11\xa9\\\x02\xbb\xdec\xd4uȻ\xf0\nD::$\xe1L\x17\x9c\x15ޚcb\xffY\xaa{\xde왈E\xcd\xcb:\xdfSe\x98\x15e\x87Ob\xec\xc7`\xcb\x12\xbf͏\x1e\xff\x81\t\xca\xd9\xdfRnZ\xf7ǹ\x19&\x94]\xed\x897\x9b\xafu\xdd\xe6\x14\x9d\xd7\xc4\xeftkxR.\xae\x87\xb6&_\xa4\x81p\x8c\xca\xfa@\x99&[\xd0f\x05\xbb\x9dTƥ\xd7W+\xc2v\xde\xe1I\xa5\x81)\xe3\x18\x06\xba\xe7\xc7ml\x18\v\xffbP\xe2S}\n\xad\vƏ\x15=\xb9\x8c!-\n\xeb\xe3\xc3{mh*\xd6x\x91>Ƹ\xd3o\x8b\x1cm\xb1\xe9\xf6\x8fٶ\xa8)\x10\x9c#\x1d^{v\xa6t9Gj\x00\x00"), - []byte("\x1f\x8b\b\x00\x00\x00\x00\x00\x00\xff\xec=Mw\xdc8rw\xfd\n<\xe5\xe0\xddaW\x15\xcf \xbf`\xcc\xe3O]\xaf\x18\xcfs\xa2\b/n\xb5\x90\x16\xf4\x8d*\xea2Pb\xc5r0\x99\x16\x95\xa5\x11\xdfYnk\xc3Ԏ\xd9=t\xfb\xc1\xf2\x8bQ\xf2\x96\xdb\xfd5[\x1b\xaa\xb7\xae\xf6܄_\x1d\x89\x1c\x00\xff\xc9\x1e\x117c\xb5\x90\x0fc\xbd\xbdg7ZI\x06\xdf*\r\x06Qf91P>\xb0\xa7=Hf\x15ӵ$T\xfe\x83g\x8fu5\x82H\x05\xd9z\x80\xa7Ǥ\xffq\x0e\x97\xfb=\xb0\x82\x1bˬ(\x81q\xdf!{\xe2\x86p\xd8)\xcd\xec^\x98y\x9a \x90\x1e\xb6\x0e\x9d\x9f\x86\x9f\x1dB9\xb7\xe0\xd1\xe9\x80\n»\xce4\x90\xdcދ\x12\x8c\xe5e\x1f\xe6\xfb\aH\x00F$\xaaxmH8\xdaַ\xddO\x0e\xc0V\xa9\x02\xb8\xbch+\x1d\xde9\xd9\xcb\xf6P\xf2k_YU \xdf\xdfn\xbe\xfe\xeb]\xef3\x1bȒ\xa7\x14\x13\x86q\xf6\x95&\x06\xd3~\xa62\xbb\xe7\x96i@\u0383\xb4X\xa3Ұ\n\xd4\xcd\x1b\x90\x8c)\xcd*\xd0B\xe5\"\v\\\xa1\xc6f\xaf\xea\"g[@\x06\xad\x9b\x06\x95V\x15h+\xc2\xd4s\xa5\xa3Q:_\a\x18\xbf\xc1A\xb9ZN\x12\xc1\x90\xf0\xf9\t\x05\xb9\xa7\x83\x9b\x1f´\xf8\x13\x93z\x80\x19V⒩\xed/\x90\xd95\xbb\x03\x8d`\x02֙\x92\a\xd0H\x81L=H\xf1?\rl\x83RoI\x18-x}\xd0\x16\x9a\xc0\x92\x17\xec\xc0\x8b\x1a\xae\x18\x979+\xf9\x91i\xc0^X-;\xf0\xa8\x8aY\xb3\x9f\x95\x06&\xe4N]\xb3\xbd\xb5\x95\xb9~\xfb\xf6AؠI3U\x96\xb5\x14\xf6\xf8\x96\x94\xa2\xd8\xd6Vi\xf36\x87\x03\x14o\x8dxXq\x9d텅\xcc\xd6\x1a\xde\xf2J\xac\buI\xdat]\xe6\xff\x148j\xde\xf4p=\x99o\xae\x90\"\x9c\xe0\x00jD'0\xae\xa9\x1bEKh\xfc\x84\xd4\xf9\xf2\xf1\xee\xbe+L\xc2\f\xa9Ot\xefHX\xcb\x02$\x98\x90;\xf03z\xa7UI0A\xe6\x95\x12\xd2\xd2\x1fY!@\x0e\xc9o\xeam),\xf2\xfd\xaf5\x18\x8b\xbcZ\xb3\x1b2/(\x87u\x8530_\xb3\x8dd7\xbc\x84\xe2\x86\x1bxq\x06 \xa5\xcd\n\t\x9bƂ\xaee\x1cVvT\xeb\xfc\x10\xcc[\x84_a\x8e\xdfU\x90\xf5\xa6\f\xb6\x13;\x91\xd1\xc4 \xed٨\x80\x81\x06ue|\xd6\xd2/\xa4\xa6\x86_\ax8]\x16z\x05\x83\xf6\xc3\xee\x89í\x19C\xb9r\xd0P\xa7H5\xe4\xee\x98\x16\xecP\xc2C\x99\xc1\xa4\xaf\xf5R\xed\xdb\tL\xe6U\xdd:\x82\xe3\tW\t\xc5GQm\xca\x12r\xc1-\x14\xc7\x19L\xdf\xdc\xf5\xab\x8fQO\x11L\xb6ujW\xecF\xf0\xecR7\xaf\x81\x89\x0eD\x9aZ\x7f\t5N-\xe4_\xc8\xdav\r[\xb7\x10\x8d\xba\xe0kٲO\xecz?IxZ\xb3͎Y\x8djq\xdb5\xb4=\x90\xa2(p\xa6\xe2\xa8*\xc8{\xc8ƻ\x13;&\xac\x1f\xdf\b\xd0-'\x9c$[;\xefg\xdd\xda\xfa\xc6n#\xca\x03|\x9d\xf6F\x8cF`\xa2\\p\xcb$|\xb3m;$\x16\x8dr\xc7\v\xd3\f\xd3\rʫ ?\xb0\x11\x88IC\xbdb\xdb\xda:\x80c\x18\x8c\x80mp\x82\xb2\xb2\xc7+\xd7v\xa7\x8aB=1C\n\x17m\xddN<\xd4\xda\xe9\x82?\xe4\xb0\xe3ua\xaf\xdd(\xfe\xb8~\xb3h\x1aZ(+4\x8d3\xc2}\xef\xab\xe1\xe0P\a\xe4Md\x10\x9c\xdb\xe0J(\xefA\xb0\x13\x03N\xdd\xed\x01u\xd3A\xe4\xdeB\x8f\x92!\xae\xbd\xb0dF\xdcI^\x99\xbd\xb2(\x0f\xaa\xb6c\xb5\x06\x03\xb8\xb9\xdb\f\x1au\xe6'bE~*\x89\xa7U쉋Sm\xe6\n\xeaޛ\xbb\r\xfb\x8an?\x04\x98\xcc\xcdEfk-\xc9\xe5\xf8\x02\xbe\xec\xd2\x16]\x17`<*\u0381m\xf5\xceU\xcb)\x17\xc6\x17|\v\x053P@f\x95\x8e\x93'E\b\\I՟\x11ʎh\xd2~\x104\xabDۂ\x01\xe6^d{\xe7n\xa2\x94\x11,\x96+0\xa41xU\x15\x11+ԖY\xc9\xf0\x9d\xcd)\x8d\xb6$\xa8\x8f!ܘ\"iK\xa2\x0enˌ6\xeeS\xbd\x11\x9bW\xa2\xf7Д\xdf%웓\xe6\xcf/\xecHn\x01\xa6\xbb\xd6%l\xf8\x9a\x02\xb5\xe7\a\x9a\x7f0Ɲ7[6\xc3\xd6\xcf>[\x9e\x85k\r\x1a\xff L#cu\xe7m\xd5\"\x86\xfd\xd4myE\x8b\xf0\x9ea\xf9\x15ۉ\xc2\x02\xf9Rs\x88v\x1c\x9dY\xce='\x81Rm/\x96\x92\xdbl\xff\xb1ٺIh1\xa0\xd5\x10\x80\xf3\xcbC\fC)\x8b\xff|\xfc&\f\xa2(s\xf6A\x81\xf9\xa4,}yQ\x12\xbbA\x9cI`ט\xa6\xa5tf\x01鲨\xff\x16\a\xb7\xbd\xba\x87\x96m°\x8d\xc4\xf8\xcc\xd1g\t\x9b\xf6\x10\x90sh\x95\xb5\xa1\xedK\xa9\xe4\xca-i\xf9\xde\x16\x00\xed\xe2\xe5Y\xa5t\x8fSW\v!\x8e\xa2\xe8ѻGk\xe5~9\xc9=\x99*\x1a\xaa\x82g\x90\x87]6Jt\xe1\x16\x1eD\xc6J\xd0\x0f\xc0*\xb4\x1b\xe9B\xb5@\x93\xbbr\x86\x14\xa6\xbb\x16\xa1x\xb30\x92\xb71VV8\xeb\x13k\x066'U\x8fd\xb5LWO\x1b%\x99w\U000874a8\xdfM\xc3\\fY\x16\xf2\xeb\xd4\aqH:\xf7\xa3\xe4\xb4\xf1\xf474\xaf$\xde\x7fO\xb3\x86\\h\xb3f\xef)\t\xb5\x80n\xfb\xb0J\xd8\xe9*\t$b\"\fC99\xf0\x02\xdd\aTޒA\xe1\x9c\t\xb5;\xf1\xa0\xd2T\xcc\xd3^\x19g\U000db371\xcbG8\xfa\xcdٮ\x96\xb8\xdc\xc8\xe8\xaa}\xbf\xa0\xce?QZ\x8dעdqd\x97\xf4\xdb%9fK\xa6\xc8\x19\xce\xdb\x02\xa9^P\xf5\xdb\xea\xb1ނ\x96`\xc1\xacJ^\xad\xfcl\xb0\xaa\x8c\xeeq\xbaB\xa9\xa2K\xc2\b\x8cӃǃ\x8d\x9b\x84Jt\xff\xe7(\x90<\x1f*e\"\x99\x16\x11\xb4n\x95\xb1n\xf1\xb0窏\xac.\xa6D\x8e~ő\xf1\x9d\x05͌U:$/\xa2\xca\x1e,\xae\xa3Ԙy\xb9q\xfbD~%\xd3\x01\xc6\x00\xf5\xb2\xd5.\xce\x1e\\\xba\xbd*\xfc\xff<̌\x1c-\x82]i\x95\x81\x89f#\xb4%\xd1\xea\xcc,\xf66\v\xbd\xdc\x05~\xbb$\xb5\x9e\xb2\f\x1d\xca27\x1eI{FP\xf4\xf1[g\xcd\x1aU\x18\xfe\x9d\"\xca\xe7\xe0\xc8\xe8\xfcBY\xf2a\"m2\xba7\xaeu\x98\x80\x1e\x98\v\xb6\xf4CM\ni\x99\xcf\xedE\xf2\xb7洔Bn\xa8#\xf6\xee\xc5\x1c\x1d\x16\xcc@,#i\xac\f\xd8\xe1۷\fi>\xa4ƾ,\xa4\xaa)\xda\xe7\xd1\xd0\xe3\xec\xe9.H:\xa7\x18:\xe2R\xd9\xeeB\x8f\xef\xe9\x8da;\xa1\x8dm\x11^\x00U\x98\x89\xac\xa7\xd1\xe1\x9d\x11\x9fʏZ\x9f\x1d\x9e~v\xad;K\x92{\xf5䓘\x97\x04\xe5\x81\xf8{~\x00\x9fJ\n2S\xb5\xa4\xc52T\x17\xd8\xcd\x02\x88\x8e\x89Θ$\xda\xccNcY\x97\xe9\x04Y\x91t\n9\xbb\xb2\xd6m\xf2#\x17i+[\xec<\xb6ک$ʱ\xd2\xcf\f\xf5ٔ\xddl\xf5\x92\x7f\x13e]2^\"[\x96Ĝ;\x97\x87\x19R\xdb\x1d\xaf\x9f\xb8\xb0\xfeĐ۔]\xa6M3UV\x05X\b\x19\x96\x99\x92F\xe4и\x0f\x9e\xff\xa3\xf9\xaa\xb1\xc2َ\x8b\xa2\xd6\vt\xf4b\xce,\x8d\xf9\xbczz\xfe@.\x1d\x91\x15\x113q\xc1~\x81\xc3=o?*\xbd\xcce\xbe\xd5\xf0\xfc\xaei\xa5\x85rY\xfe\xd3\xde\xe9,L\xf2^\xfbީ\x17^.\x8f1\xf7t\x16*a\xf2\xea\x9e6\xe5\xd5=}uO_\xdd\xd3AyuO_\xdd\xd3W\xf7t\xbc\xbc\xba\xa7\x9d\xf2\xea\x9e&ۏ\x14\fW\xb4r;Q!\t\xab\xc4\xf4\x8d9\xb4g\xfa\xf2YJ\xfe,Ȓ\xec\xea\xcdxˑ\xb3@\x8bΐ\x98\x8e\xd1kҭqJ\x86\xc9\xe4\xceJ&x\xe1\xcfp\xd6& p\xf6Y\x9b\xcd$\x80g\xf0\x9d\xdf\x19\xf9\xae\xec\xd4\xe7?\a\xf3\x9c\xeb\x16ӹ\xa6I\x19\xa6Ik\x1b\xf38'\xe5\x90.\xcd\x1cM\xa2\xea\xd2,\xd1&\x03t\xa2\xe3\xa4\xdc\xd0Ӽϩ\xa1\xccf\x84Ƴ=\xa7\xc0\x8e\xe5\x81&\xe4xN\x80\xecf\x7f.v\x03f\xa5i\xb6\xc2\xd2\xdc\xcd\xf1;\x00C\x99\xb7\xceů!\xb3\xdfK&\xa5{NsJp\xf7y\xd0\x04\xa5%\xf8\x89c\x8ex\xc5\xfb^r\xfc\xf1%\x82\xab\xe7\b\xaf\x92\x1c\x91\x97\b\xb1^*\xc8Z\x1af-I\xdeH:\xbe\xf8\x12\xc1֒pk\x91Ϙ~<\xf1\xa5\x8e%\xbe@\xd8uvൈt\xa9\xc7\x0e\x17\x87_\t\xe3\x9b9fx\xe2\xa3%\x80\x8c\x1e/\x1c\x0f\xc1\x12 \x9e\x1c+\x9c\r\xc2R\xe6\xc10L\xfb\xeeC\x82ɉL\x8bv\xd3S\x93\x90\xd26\xba\xe7\x0f\xff%\x1e\xfaK\xdc\x06O\xc1>\xf1p\xdf\xf2C}\x89t>3<\x9b\xec:\xf1\xf0ޢ\x00\xed\xcc\x10m\x12\xe2\xd4a\xbd\xe9 mz\x01nxH\xef\fw\"A\xc2\x12\xaa,?h\xf7ݛ1J\xe7\xa0g\xf7\xb5\x96\x88\xf3\xac \x0f\xe2\xa8~\xff\x83\x1d\x9dp#*\xd6\xea\xee\x99\xc58\xaa\x9a{G2\xf6'!\xfdn=\nn\xc7'\xe9m\xbc\xb5\x0eS|_\xa7\xf5R\xfd\xe3\x01n\xc7\xce@\xc55\xed\xe3o\x8f.)Ȭ\xd9G\x9e\xed\x9b\x1e\" \xa9\xdf=7l\xa7t\xc9-\xbbl\xb6Bߺ\x0e\xf0\xef\xcb5c?\xaa&}\xa4s\xafX\x04\xaa\x11eU\x1c1bb\x97]0\xdf'8Q\x81\r\xf8ܪBd\x11\x0fq\xf4J:\xd7\xe0\xe4B\x1f\xba4/\xebdA\xc4b\x14l.\xfc\x85\x85\x83K\x85\xdd\xf5\xe2g.]\xf0J\xfc'\xbdՓ\xb66\xf6\xfevCՃT\xd1;?M\xf6\\#c[\x98V\xe8\xed\xc0\xc9\xf5\xe8B\x1d\xc9^m\xfe\x9c\x80H/e\x04?ë\xf1L\xa1\x16\xbb\xdd8,\xd7$X\\\x1e\x99\xf2o!\b\x9d\xaf*\xae\xa3\x9bz\xcc˃\xb9\xeaa\x18\xec\xf8\xdc\n֤Y;}\xf9\xa3[z4\x0f\x8f\x80\xd0f\xef\xb1\xeao\xa3\x13\xa5;\xf4\xfc\x1e\x9c\xa6\x0f.\xcf\x1eY~\x01\x9c\xa6]\xa6\x15Q1\xf2S4\x1d\xef\xd9W\x0f\x8d\xbfD\xfegu\x80\x0f\xd1U\xc4\xfe\xb3\x18\x83&#\tt\x01\xeaԵ\xe9m\xd6\\\xfc:\xebgȈ\v\xa8\xf8\x8b\xaf\x17\x8cϷ\x18\x7fK\x83\xee\xff\x0e\xb0'l\x1bN\xd9ۯ\x14n6\xea\xd2\xcfp\x1fL\x86\xa5\xc2\xc1U\xad\x11\x90\xb1\xa7D\x9e\x8bZVi\xfe\x00?)\xf7\xdaK\n\xb5\xfa-z\x0f\xfexg.d\x13\xfb\xb9\x16S\xe6~lC\x80\xed!\x83\x93\xeb\xe8\x11\xdb3o۷\xb6H\x18\xdc\xfd\xfdOn@\xf44\xc6\a\xff\xee\x05\xea]\x03H\xe90P\xd7h\x1b\xd7N{\xf5D\xf7\xb9w\x9f\xab\xe83\x1a\xfe\xd0{\xfa#L\x92\x14\xb5\xf6u\xbce\xc7[\xeeLשdA\xb5\x8b\xc2\xe2ƨL\x90\x83M\xbb#tj\xe4\xe5\ue71e\n\x94&\xe8X\x1b\xf8\xfc$A\x7f\t*\xd9ld쭍\xfe\xac9i\x18}g\xc3*r\xeb\a\xd5\xc7\xc29\xe9\td\xdc+-a\x9bG\x98\xe6\xfd\xa9S\xd2\xcd̫\xb8\x96\x1f\xf7IV\xe3\xcfᬚ\x17z.\x12(\xeb^\xa1\xe9\x03\x1e\x7f`\xcc=W\x93\xf1\xca\xd6:\xa8\x9cZ\xd3\x05\xdc\b\x04\xdc\xfd\xd4\xe7=1\xd6>H5\xc3\xcb\xf6a\xa7v\xe1{\xf6\xc9\xc8\x11\xfe5\x8f\x84E_\x14r!\xa3{\xd2q\x85\xf0\xcfc\xe7\xe8<@\x9c\xef\xdc;Q\t\xe3\xbd\vOe\x9d\x0e\xb8\x19\x06\x0e9\xf6\xf2\xd4K\x8e\x84\xae^\x9f\x19\xc3-\xd6i\xce.z\x91\xa1\x86\xe1\xca\xf6\xbb\x18\x13\xc6\x0f\xa3\xad\xd8'8\r>W\xec\xa3\xc4A\x9c\x12\xc0\x9d8\x83\x9c\x16\xfe\xc7\x1e\x8a\x9c\x1c\xe2\xa1iE\xc7\xfdF\xf4^_a\x0f\xaa\x0f\x92\x91\xe9\t\x9e\xa6\x8a;\xda7&\xa0\x7f\x10;\xb7+\x93\xe1\x98\xfexR#\xaa\x82'\xd5oL\xf5\x8e*\x87\x93\x8f\xf4\x9aX\xde\x11\x12\xefwv\xbf\xd4\xdb\xf6\x06}\xf6\xb7\xbf_\xfco\x00\x00\x00\xff\xff}\xef\x8a\xf1Mx\x00\x00"), - []byte("\x1f\x8b\b\x00\x00\x00\x00\x00\x00\xff\xb4V\xcfo\xeb6\f\xbe\xe7\xaf \xb0û\xcc\xce\xebv\x19r\x1b\xba\x1d\x8am\x0fE\xf3л\"\xd3\tWY\xf2H*]\xf6\xd7\x0f\x92\xec&\xb1\x9d\xb5\x1b0\xdd\"\xf1\xc7Ǐ\xe4\xe7TU\xb52==#\v\x05\xbf\x01\xd3\x13\xfe\xa9\xe8\xd3/\xa9_~\x90\x9a\xc2\xfax\xb7z!\xdfl\xe0>\x8a\x86\xee\t%D\xb6\xf8\x13\xb6\xe4I)\xf8U\x87j\x1a\xa3f\xb3\x020\xde\a5\xe9Z\xd2O\x00\x1b\xbcrp\x0e\xb9ڣ\xaf_\xe2\x0ew\x91\\\x83\x9c\x83\x8f\xa9\x8f\x9f\xeb\xbb\xef\xea\xcf+\x00o:܀ \xa775\x1a\x85\U0004f222R\x1f\xd1!\x87\x9a\xc2Jz\xb4)\xfe\x9eC\xec7p~(\xfeC\xee\x82{\x9bCms\xa8\xa7\x12*\xbf:\x12\xfd\xe5\x96ů4X\xf5.\xb2qˀ\xb2\x81\x1c\x02\xeb\x97s\xd2\nD\xb8\xbc\x90\xdfGgx\xd1y\x05 6\xf4\xb8\x81\xec\xdb\x1b\x8b\xcd\n` $Ǫ\x06.\x8ew%\x9c=`gJ\x12\x80У\xff\xf1\xf1\xe1\xf9\xfb\xed\xd55@\x83b\x99zʹ.T\x06$``@\x01\x1a\xc0X\x8b\"`#3z\x85\x82\x12ȷ\x81\xbb\xdcɷ\xd0\x00f\x17\xa2\x82\x1e\x10\x9e3\xe5Ce\xf5\x9bIϡGV\x1a\xd9\x18\xdc\xceCvq;\xc1\xfa)\x95S\xac\xa0IӅ\x923\r\x94`30\x00\xa1\x05=\x90\x00c\xcf(\xe8u\x8a2\xf3ӂ\xf1\x10v\xbf\xa3\xd5z\xe0AR\xb3\xa2k\xd2P\x1e\x91\x15\x18m\xd8{\xfa\xeb-\xb6$BRRgt\x9c\x93\xf3!\xaf\xc8\xde88\x1a\x17\xf1[0\xbe\x81Μ\x801e\x81\xe8/\xe2e\x13\xa9\xe1\xb7\xc0\x98\xc9\xdc\xc0A\xb5\x97\xcdz\xbd'\x1d\x97ˆ\xae\x8b\x9e\xf4\xb4\xce{B\xbb\xa8\x81e\xdd\xe0\x11\xddZh_\x19\xb6\aR\xb4\x1a\x19צ\xa7*C\xf7y\xc1\xea\xae\xf9\x86\x87u\x94OWX\xf5\x94&K\x94\xc9\xef/\x1e\xf2B\xfcC\a\xd2:\x94\xf9(\xae\xa5\x8a3\xd1\xe9*\xb1\xf3\xf4\xf3\xf6+\x8c\xa9s3\xa6\xecg\xdeώrnA\"\x8c|\x8b\\\x9a\xd8r\xe8rL\xf4M\x1fȗ鲎\xd0O闸\xebHe\x9c\xddԫ\x1a\xee\xb3\xe2\xc0\x0e!\xf6\x8dQljx\xf0po:t\xf7F\xf0\x7fo@bZ\xaaD\xec\xc7Zp)\x96S\xe3\xc2\xda\xc5\xc3(s7\xfa\xb5\xb0\xdd\xdb\x1em\xea`\"1ySK6\xaf\a\xb4\x81\xc1,\xb9\xd4\x1fB\x92=\xfe%\x96AI\n\x9a\x89\xbe\xa4\xfd|\x1fͲ\x9c䗃\x11\x9c^N0=&\x9bi~G-ړuXB\x145\xc1\xf7\xa1\xa4\x83>v\xf3\x9c\x15|\xc1ׅ\xdbG\x0eIY\xb3\xae_\x9f\x1b\xb3\x01\xe5{\xb3'?+wZY\xb1\xca߰K\xa9\xbe\x10\xe8!\x10p\xf4>\xed\xedL!3\x90\xa9\x92\xcflH\xb1[@\xb3\x88\xe7\xc1\xb7!\x7f\xf0MJl\xb4\xec\x13\x0e\xcd\x1e\xf2\x14\\\v\x01o\xf7\xba\x9c\xb9x}\x88\xd0r\xf2\x97\xf4\xbf9'\xb9!\xc6\xc5\xdcUF\xb5\xf8\x902.1\xbe\xbc_\x03\xca\xe8\x9c\xd99܀r\x9c{\x17_\xc3lNө\x19G\xed+u(j\xba\xfe\xbd\x01\x9a9\xa4=y=\xa0\xbf\xb5\r\xf0j\xa6*\x7f\x95\x19v\xa7[\xae\xf7o\xff\x01\xe7+UFw\x03I\xbb+\xa5\x05\xce>D\xcab\xf7\xcaH/\xfe\xf3\x98\x11\xb2\xbd\xb4\x1d5\xe3j5\xc6?\"\xf3\x1anBXl\xf6\xec2\x87o.\xca\x13\rl\xf6c\xc1\x7f\a\x00\x00\xff\xff\xb1J-\xe7\xa6\v\x00\x00"), - []byte("\x1f\x8b\b\x00\x00\x00\x00\x00\x00\xff\xb4VA\x93\xdb6\x0f\xbd\xfbW`&\x87\xbdDr\xf2}\x97\x8e/\x9d̦\x87L\x93f'N\xf7N\x8b\x90\x8d\x9a\"U\x10\xd4\xc6\xfd\xf5\x1d\x90\xd2\xdak\xcb\xc9n\xa7\xd5\xc5c\n\x04\x1f\xde\xc3\x03UU\xd5\xc2\xf4t\x8f\x1c)\xf8\x15\x98\x9e\xf0\x9b\xa0\xd7\x7f\xb1\xde\xff\x14k\n\xcb\xe1\xedbOޮ\xe06E\t\xdd\x17\x8c!q\x83\xef\xb1%OB\xc1/:\x14c\x8d\x98\xd5\x02\xc0x\x1f\xc4\xe8rԿ\x00M\xf0\xc2\xc19\xe4j\x8b\xbeާ\rn\x129\x8b\x9c\x93OG\x0fo\xea\xb7\xff\xab\xdf,\x00\xbc\xe9p\x05Cp\xa9\xc3\xe8M\x1fwA\\hJ\xcez@\x87\x1cj\n\x8b\xd8c\xa3Gl9\xa4~\x05\xc7\x17%\xc5x|\x81~\x9f\xb3\xad\xc7l\x1f\xc7l9\xc0Q\x94_\xbf\x13\xf4\x91\xa2\xe4\xc0\xde%6\xee*\xb2\x1c\x13w\x81\xe5\xb7\xe3\xe9\x15\fѕ7\xe4\xb7\xc9\x19\xbe\xb6\x7f\x01\x10\x9b\xd0\xe3\n\xf2\xf6\xde4h\x17\x00#?9]5Q\xf3\xb6dlvؙr\x0e@\xe8ѿ\xbb\xfbp\xff\xff\xf5\x93e\x00\x8b\xb1a\xea%\xb3<_\"P\x04\x03\x13\x12x\xd8!#\xdcg>!J`\x8c#\xe8Ǥ\x00\x13\xfeX?.\xf6\x1czd\xa1\xa9\xf8\xf2\x9c\xf4\xd7\xc9\xea\x19\xae\x1b\x85^\xa2\xc0jca\x04\xd9\xe1T>ڱZ\b-Ȏ\"0\xf6\x8c\x11\xbd\x1c\x85<>\xa1\x05\xe3!l\xfe\xc0FjX#k\x1a\xd5&9\xab\xfd8 \v06a\xeb\xe9\xaf\xc7\xdc\x11$\xe4C\x9d\x11\x1c5?>\xe4\x05\xd9\x1b\a\x83q\t_\x83\xf1\x16:s\x00F=\x05\x92?ɗCb\r\x9f\x02#\x90o\xc3\nv\"}\\-\x97[\x92\xc9WM\xe8\xba\xe4I\x0e\xcbl\x11\xda$\t\x1c\x97\x16\at\xcbH\xdb\xcap\xb3#\xc1F\x12\xe3\xd2\xf4Te\xe8\xbe\xf8\xa0\xb3\xafxtb\xbcy\x82U\x0e\xdaEQ\x98\xfc\xf6\xe4E6\xc2w\x14P\x0f\x94F([K\x15G\xa2uI\xd9\xf9\xf2\xcb\xfa+LGg1\xce\xd9ϼ\x1f7ƣ\x04J\x18\xf9\x16\xb9\x88\xd8r\xe8rN\xf4\xb6\x0f\xe4%\xffi\x1c\xa1?\xa7?\xa6MG\xa2\xba\xff\x990\x8ajU\xc3m\x1e6\xb0AH\xbd5\x82\xb6\x86\x0f\x1enM\x87\xee\xd6D\xfc\xcf\x05P\xa6c\xa5\xc4>O\x82\xd39y\x1e\\X;5\xd88ޮ\xe85\xef\xe4u\x8f\xcd\x13\x03i\x16jitv\x1b\xf8\x8cW3\xf9|>_\xfd$|\xde\xe0P\x86|K\xdb\xf3U\x00cm\xbe\"\x8c\xbb\xbb\xba\xf7;\x84\xcd\xd4}\x9bO\xd2Fm\x03+\xa2\x81,r5\xd59\"I<\x16L\xe8l\xac/R^\xe1<\x97\xc2hUc\xe3.\x81>E\xf2\x18\x98\xef8C\xbeP~L\x90[\x8f\xbbq\xc6zAo\xf3P\xbf@\x13r\x0fG\xb4\xf0@\xb2+\xe6p\xa7\x97\xd4\xf3T\xd0g\x8f\x87\xb9\xe53\xec_w\xa8\x91e\x9c\"Dl\x18EqDtj^uf\r\xf0)\xc5l/3\x9b\x11tD\x90\x9dv\xef\xf1pI4\xfcH\xdc\xf1\xbe\xff1\xe4\x1b\xbd\x17'\xc0\x8c-2z\x99\xb5\xb8~b\xb0G\xc1\xecr\x1b\x9a\xa8\x06o\xb0\x97\xb8\f\x03\xf2@\xf8\xb0|\b\xbc'\xbf\xad\x94\xf0\xaa4B\\\xe6\xef\x86\xe5\xab\xfcs\xa5䯟\xdf\x7f^\xc1;k!\xc8\x0eYUk\x93\x9b\x1a\xed\xe4\xb6{\x9d'\xeekHd\x7f\xbe\xf9'\xbc\x84\xbe8\xe7\x19ܬs\xf7\x1f\xf4\xe6Π\x94\xa2uQ%0\xe8\xdcT\xb1\xbbQ\xcd2\x1f\xe6\x1aq´\t\xc1\xa1\xb9l=\x9d\xbe\xc4h/!Uz\xc2Kl\x06\xf0\xad:\nUu\xa6\xafJ\xb4\x91\xd0Qs\x16=\xf9\xfc\a\x96\xbc\x1b\xc3t<(\aӶ\xa9m\xcaWL\xfe\xa61[\xbc6\x16f\x14\x99/\xbcz<\xe0Y\x03]\x8c\xa4\xf8\U000917b7\x8d\x91\x9bq\xac7\x89\xb5\xfdǜ3\x9f?\xff\xceX\xefw&\xcex\xf3\x19\xa8\xeft\xe7$\x83\xa3\x16\x9bC\xe3\xb0$\x84\xd0\xce\xf4ދ \xeb\x83>us\x8d\xf8n0\xe4\xcc\xc6\xe1̻߽\xb9\xfa\xf6\xaa\xf8\xb3z^,F\xfdƱ+\x10N%\xf7\xd8e\xe3\xca\xdf\x01\x00\x00\xff\xff\xec\xa0\xe0\xa1k\r\x00\x00"), + []byte("\x1f\x8b\b\x00\x00\x00\x00\x00\x00\xff\xbcVMo\xdc6\x10\xbd\xef\xaf\x18\xa4\xd7J\x9b\xa0=\x14\xba%n\v\x04M\x02cm\xf8>\x92fw\x19S$K\x0e\xd7\xdd~\xfc\xf7bHɫ\x95do\xec\x02\xd5M\xc3\xe1㛯G\x16E\xb1B\xa7\xee\xc8\aeM\x05\xe8\x14\xfd\xc1d\xe4/\x94\xf7?\x85R\xd9\xf5\xe1\xdd\xea^\x99\xb6\x82\xab\x18\xd8v\x1b\n6\xfa\x86~\xa6\xad2\x8a\x955\xab\x8e\x18[d\xacV\x00h\x8ce\x14s\x90_\x80\xc6\x1a\xf6Vk\xf2ŎLy\x1fk\xaa\xa3\xd2-\xf9\x04>\x1c}x[\xbe\xfb\xb1|\xbb\x020\xd8Q\x0556\xf7\xd1yr6(\xb6^Q(\x0f\xa4\xc9\xdbR\xd9Up\xd4\b\xfa\xce\xdb\xe8*8-\xe4\xdd\xfdə\xf5\x87\x04\xb4\x19\x80\x8eiI\xab\xc0\xbf-.\x7fR\x81\x93\x8b\xd3ѣ^\"\x92\x96\x832\xbb\xa8\xd1\xcf\x1c\xe4\x80\xd0XG\x15|\x11.\x0e\x1bjW\x00}\xa4\x89[\x01ض)w\xa8\xaf\xbd2L\xfe\xca\xea\xd8\r9+\xe0k\xb0\xe6\x1ay_A9d\xb7l<\xa5\xc4ު\x8e\x02c\xe7\x92\uf430\xf7;\xea\xff\xf9(\x87\xb7\xc84\a\x93̕'\xae\xb7GGg(\xa7D\xc0h-#\x06\xf6\xca\xecV'\xe7û\x9c\x8afO\x1dV\xbd\xafud\xde_\x7f\xbc\xfb\xe1\xe6\xcc\f\xe0\xbcu\xe4Y\r\xe5\xc9ߨ\xfdFV\x80\x96B\xe3\x95\xe3\xd4\x1c\x7f\x17gk\x00r@\xde\x05\xad\xf4!\x05\xe0=\r9\xa6\xb6\xe7\x04v\v\xbcW\x01<9O\x81L\xeeL1\xa3\x01[\x7f\xa5\x86\xcb\t\xf4\ry\x81\x81\xb0\xb7Q\xb7Ҿ\a\xf2\f\x9e\x1a\xbb3\xea\xcfG\xec\x00lӡ\x1a\x99\x02C\xaa\xa2A\r\aԑ\xbe\a4\xed\x04\xb9\xc3#x\x923!\x9a\x11^\xda\x10\xa6<>[O\xa0\xcc\xd6V\xb0gv\xa1Z\xafw\x8a\x87\xa1ll\xd7E\xa3\xf8\xb8N\xf3\xa5\xea\xc8ևuK\a\xd2\xeb\xa0v\x05\xfaf\xaf\x98\x1a\x8e\x9e\xd6\xe8T\x91\x021i0ˮ\xfd\xce\xf7c\x1cΎ\x9d\x15:\x7fi\x92^P\x1e\x19-P\x01\xb0\x87\xca!\x9e\xaa &I\xdd旛[\x18\x98\xe4J墜\\gy\x19\xea#\xd9TfK>\xef\xdbz\xdb%L2\xad\xb3\xcap\xfai\xb4\"\xc3\x10b\xdd)\x966\xf8=R`)\xdd\x14\xf6*\t\x17\xd4\x04\xd1\xc9\xe8\xb4S\x87\x8f\x06\xae\xb0#}\x85\x81\xfe\xe7ZIUB!E\xf8\xa6j\x8d\xe5x\xea\x9c\xd3;Z\x18\xa4\xf4\x89\xd2N\xe5\xf1\xc6Q#\x95\x95\xe4\xcaV\xb5UM\x9e\xa9\xad\xf5\x803\xff\xf3L-K\x80|YDo\xd8z\xdc\xd1'\x9b1\xa7N\x97\xdaN\xbe\x0fK@\x03c\x91\xad\xac\t\xb4\xec\xb8\x00\xc8{\xe4\x91\x180*\xf3\xa8)\x8bA>S\x99T\x1d\x14\xa50h\x1a\xfa5\xf5\xa3i\x8e\x17\x02\xfd\xbc\xb0EB\xda\xdb\a\xb0[&3\x06\xed\xb9.DR\x13\xf8h^D\xf6\xfc\xa6\xb8@ss\xe6\fʴ\xd2\x1b\xbd4\xcb!C\xea\xa5\xd8dZ\xf0\xe7\x97\xf2\xf8#\x13\xbb\xf9q\x05\xdc[\xa7p\xc1\xee)\xb0j\x16\x16\u07bcyY\xbc\x02\xf3\xb1\x95\xe1\xdb*\xf2\xaf\xe9\xc0\xcd\x04ch\xbemԺ?\xa0hl\xe7\x90U\xadiPH\x19\x1f\x95\xf7\x1c\xe7\xbc\x12\xed\xff\xd0t\ay]\xd0\xe3{\xe45aݝC\x8cG*\x1b\x12\xbf<\xc7#\x9a\xc3̄\x05Hg۞Y\xbf/H\x1a^\x10\x98\f\x83\xf24\xb9\x9b\x8ae5\x99\xf8,\xcd\xe1\xc4e\xda\r\x93\xe5IR\xbfIm\x199\x86\x97\xe8m\xda0$\xbb\x89ާ\xfb,[\xe5\x19\xf3j\xc5\xd5\x18x$,\xf2\xa8\xbc\xd0\x16\x9f\xe6;\x06b\x02\x06,\x86\xb1\x12=\xe0R\xd5\x175hk}\x87\x9c_\xad\x85\x00\xcdg\xaf\xfcl\xe9\xb7\x00\xd66\xf2\x13\xa9\xe7\xfd\x9c\x05\\(\xc7\x05\xa6n\x8f\xe1\x12\xcfk\xf1Yj\x88\xc9\xcd\xf6\x1c\x85\xa7\xd4\xf5\v=,X7\x84\xed\\\xa1\v\xf8byy\xe9\xc9\b\x17\xa7bf\f\xf2\xc2kGu\x0ey\x90ǖX?>`+\xf8\xeb\x9fտ\x01\x00\x00\xff\xff\xdd}\xa6m\xca\x0e\x00\x00"), + []byte("\x1f\x8b\b\x00\x00\x00\x00\x00\x00\xff\xec}_s\xdb8\x92\xf8{>\x05ʿ\x87\xd9ݒ\xecI\xfd\xf6\xe1\xcao\x19'\xb9Q\xedL\xe2\x8a=\xd9g\x88lI\x18\x83\x00\x17\x00ek\xef\xee\xbb_\xa1\x01\xf0\x8f\b\x92\xa0,{\xb2{\xe1Kb\x11l\x00ݍ\xeeFw\xa3\xb1\\.\xdfВ}\x05\xa5\x99\x14ׄ\x96\f\x9e\f\b\xfb\x97\xbe|\xf8\x0f}\xc9\xe4\xd5\xfe\xed\x9b\a&\xf2krSi#\x8b/\xa0e\xa52x\x0f\x1b&\x98aR\xbc)\xc0М\x1az\xfd\x86\x10*\x844\xd4\xfe\xacퟄdR\x18%9\a\xb5܂\xb8|\xa8ְ\xae\x18\xcfA!\xf0\xd0\xf5\xfe\xc7˷\x7f\xbd\xfc\xf1\r!\x82\x16pM\xd64{\xa8J}\xb9\a\x0eJ^2\xf9F\x97\x90Y\x90[%\xab\xf2\x9a4/\xdc'\xbe;7ԟ\xf0k\xfc\x813m\xfe\xd6\xfa\xf1\x17\xa6\r\xbe(y\xa5(\xaf{\xc2\xdf4\x13ۊS\x15~}C\x88\xced\t\xd7\xe4\x93\xed\xa2\xa4\x19\xe4o\b\xf1\xa3\xc6.\x97~\xc0\xfb\xb7\x0eB\xb6\x83\x82\xba\xb1\x10\"K\x10\xefnW_\xff\xff]\xe7gBrЙb\xa5\xc1\xb9\xff\xf7\xb2\xfe\x9d\xf8Q\x12\xa6\t%_q\x8eDy\x94\x13\xb3\xa3\x86((\x15h\x10F\x13\xb3\x03\x92\xd1\xd2T\n\x88ܐ\xbfUkP\x02\f\xe8\x16\xbc\x8cWڀ\"\xdaP\x03\x84\x1aBI)\x990\x84\tbX\x01\xe4O\xefnWD\xae\x7f\x87\xcchBEN\xa8\xd62c\xd4@N\xf6\x92W\x05\xb8o\xff|YC-\x95,A\x19\x16\x90\xee\x9e\x16'\xb5~\x1d\x9b\xab},z\xdcW$\xb7,\x05nZ\x1eŐ{\x8c\xda\xf9\x99\x1d\xd3\xcd\xf4\x91\xc9\xec\xcfT\xf8\xe1_\x1e\x81\xbe\x03e\xc1\x10\xbd\x93\x15\xcf-'\xeeAY\x04fr+\xd8?kؚ\x18\x89\x9drj@[\xcc\x18P\x82r\xb2\xa7\xbc\x82\x85E\xca\x11\xe4\x82\x1e\x88\x02\xdb'\xa9D\v\x1e~\xa0\x8f\xc7\xf1\xabT@\x98\xd8\xc8k\xb23\xa6\xd4\xd7WW[f\xc2\xfa\xcadQT\x82\x99\xc3\x15.\x15\xb6\xae\x8cT\xfa*\x87=\xf0+ͶK\xaa\xb2\x1d3\x90Y2_ђ-q\"\x02\xd7\xd8e\x91\xff\xbf\xc0\x1e\xbaӭ9X\xb6\xd5F1\xb1m\xbd\xc0\xf51\x83\xe7\f\x84!\xbaZ\x17\xccX6\xf8G\x05ڮ\x01y\f\xf6\x06e\x10Y\x03\xa9\xcaܲ\xf1q\x83\x95 7\xb4\x00~C5\xbc2\xad,U\xf4\xd2\x12!\x89Zm\xc9z\xdcء\xb7\xf5\"\b\xc8\x01\xd2:\xc1rWB\xd6Yh\xf6+\xb6a\x99[N\x1b\xa9\x1a\xb9\xe3d`\x17C\xf1\xa5o\x9fL\xb3;AK\xbd\x93\xe6\x9e\x15 +s\xdcb\x8aאxw\xab#(a\x84~\xbc(\xb3*\r\xb9]\xb4\x8f\x94\x19\x1c\xf3\xcd݊|Ea\x15\xbeF\xa1Uib*%,\x97D\xfa\xfa\x024?\xdc\xcb\xdf4\x90\xbcB\xe6\xce\x14 \x1e\x16d\r\x1b\xcb\t\n\xec\xf7\xf6\x15(eq\xa3q\x00\xb2\xea\t\x1b\xfb\xdc\xef\xc0\xe2\x96V\xdc\xf8u\xc24y\xfb#)\x98\xa8L\x8f\xd5\x06\xa9\x8e\x98\xa2\x86\x16r\x0f\xea\x14$\xbe\xa7\x86\xfej?>\u009d\x05J\x10\xaaE\xde\xda\xe3q}\xc0\x971j\xbbg\xb5iAd\x9a\\\\\x10\xa9ȅ\xd3\xc0\x17\v\xf7uŸY2\xd1\xee\xe3\x91q\x1ez\x997y\x87CGP}/?jǼ'\xe1b\x00V\v5\x8f;0;P\xa4\x94\xb5\xc6\xdb0\x0eD\x1f\xb4\x81\xc2#&h\x11?\x9fHO\xb8v8\xf7 \xb4ū\x9fH\x7f\xf2\xa2✮9\\\x13\xa3*\x18\xc0\xcdZJ\x0eTL \xe7\vhòs\xa0\xc6A\x8a F\xf9\x17\x1d\f\xa0Ҥ\x0f@h\x04\xb4Ǚ\xd5Μ\xb7\x10\xdb\xc5ʛ\xe8\xa0J\x05\x99\x15\xdb\xd7^\x1d0ਂ\x84$\\\x8a-(\u05fd5U\x02\x87)\xb0\x1c\x97\x13+i\x15p\xabNȦ\xb2B\xf8\x92\xd8\xe5=\xc8\x04Lh\x034\u009d\xcf \x10\x8cB\xf4꙳\f\xad@o\xf0-\xd1p\x8d\xf1i\xa3\xa5\x0f%8\xdb\xd9\xd2\xd2\x0f\xbbQ\xbf\xa3\x02A\x83\xb1\x1f]\xfc\xe5b\x81$\xee\xf6\xda\xedC\x13\xaa\xa0FK\xb2\xe0\x84\xa24\x87~kf\xa0\x88`qT\xa0$ғ*E\x0f\x03Ԭ7\x00g\xa4\xe7\x10\xcc#\x8a\x8a\xd0\xec\x95iz\xdc\xef\xbf3U\xcfCG\x8d\xdb]ʄ\xa5\x9f\xddyvȧ\xdd\x06\u03a2MH\x13\x81DŽ\x83\x87{\xb3\x11j\xfdA\xc8:\v\xcf\x0f1y\xcd[\x9ey\xff%1\xb5\x93\xf2a\n;?\xdb6ͮ\x88d\xe8V!k\xd8\xd1=\x93\xcaO\xbdѵ\xf0\x04Ye\xa2\xab\x9e\x1a\x92\xb3\xcd\x06\x94\x85S\xee\xa8\x06\xed\xf6\xc9\xc3\b\x19\xb6\xdfIK\x8cD_\x1eͣ!\xa4%\x13\xce|h\xe8\u05908֒\xe1\xb1\x03\xb5\xf65*\xe3\x9c\xedY^Q\x8ez\x99\x8a\xcc͇\xd6\xe3\x8aI\x99\x11\"\xf7\xc6\x1c\xe5L\xf78\x83 L\xca\x12\xa9\xb3U\x92\x02\xac\xd1[\xd8MA\xbf\xe9\xf0\xcc\xd7\xd4\xda*rh\xf6\x04\x89\xa5*\x0e\xdaw\x95\xa3\x1d\xd9ȌEC\x14\xf4D\x10N\xd7\xc0\x89\x06\x0e\x99\x91*\x8e\x91):\xbb'E\b\x0e 2\"\xf9\xba[\x8df\x02# \t\xee\xe1v,\xdb9S\xcf2\x11\xc2!\xb9\x04k\xf0\x19B˒G\xd4E\xf3\x8c\x12\xdfw2\xb6֛gb\xd5\x1fË\xad\xff\xe6I\x90\x99\xcd\x13Em\xb3\xbe\xba\x98\xad\xd9!\xbe\xa9m\x9e\x7fO\xc4\x06\xc9\x7f\x02ӎ\xac~\x82n\xa1d\x9e\x1e\xe4[\x8bU\x06\xfaҚSh\xe9,\b3\xe1ש\x95б\xb9z\u07b2\x0e\x12\xbem\xda\xccg\xfaDҤ\xac\x89\x17\"L\xddſ ]Pe\xdcy\x8d\x91L\x93_\xda_-\b\xdb\xd4H\xcf\x17dø\x01u\x84\xfd\x93D}\xa0\xcc9\x90\x91\xa2\xf5\b\xfa\xefM\xb6\xfb\xf0dM0݄\xaa\x12\xf1r\xfc\xb13d\x83\xb5\xdfU\xcf\x13p\t\xfa\xb1\x99\x82\x02\xfd\xe3\xb8cj\xff\x82\xa6ջO\xef\xe3\xfb\xab\xf6\x93\xc0y\xbd\x89L,:\xf7\xbc;\x9aQ{|ބ\x0fo\xd0\x06\xaa7@.\x16\xb2 \x94<\xc0\xc1\x99.T\x10K\x1f\x1a\x1a't\xaf\x00\x832\xc8g\x0fp@0\xf1(K\xffI\xe5\x06\xf7<\xc0!\xa5\xd9\x11\x0e혘\xf6\xd1#\x8b'\xfb\x03\"\x02\x9d\xeb\xa9l\xe0\x1e\xbf\x14\"1\x8d\xf8\x93(K\xc2\x13p\x7f\xc24\x93X\xa5\xddG;L\x89\x1c\xf0\x83v\xb4\xb4+f\xc7J\x14\xab\xe8q\x90\x9bd\x82\xba\xe7+\xe5,\xaf;rkd%\x16\xe4\x934\xf6\x9f\x0fOL\xfbH\xe6{\t\xfa\x934\xf8ˋ`\xd4\r\xfc%\xf1\xe9z\xc0\x85&\x9c\x94\xb7\bk\xc7\xe2\x9cN\xb3\xdcV\xe3\x9ei\xb2\x12v\xbb\xe2P\x92\xd8\x15\x86]]w\xae\xa3\xa2\xd2\x18F\x13R,\x9d\xdb&֓ǷT\x1dt?\xbbS\xdf\xe1\xbdU\x16\xee\x8d\v\xfer\x9aA\x1e\xe25\x18\x95\xa4\x06\xb6,K\xec\xaf\x00\xb5\x05RZ\x11\x9e\xc6\x11\x89\x82\xd5\xcff\x1e\xfb\xa4i\xef\xf0x\xc1\x9bO\x0ffi\x17\\B\xab@\xc6ɦ\x03\x11\xc7\xe1\xa6\xd33B-\x8a&\xc6$vi\x9ec\xa2\t\xe5\xb73$\xfa\fZ\xcc]\x9a\xad\xb1;\x15XP\x8cu\xfc\x97\xd5t\xc8\xcd\xffCJʔ\xbe$\xef0\xa7\x84C\xe7\x9dwZ\xb5\xc0$t\x899!\x96\x05\xf6\x94[\xddk\x05\xa8 \xc0\x9d&\x96\x9b\x9e]\xb2 \x8f;\xa9\x9dڬ\x83(\x17\x0fpp!\xbb\xc9.ۋ\xfcb%.\x9c\x0e\xef-\xd8Z\xe1K\xc1\x0f\xe4\x02\xdf]<ǔId\xb6\xc4fOˇ:-fY\xd0r\xe9\x19\xd4\xc8bDh`NO\xaa\xa1l7\x8c\xc1\b\xb0\x1fֹ*\xd6\xc8\x1d\x9bm\x12\x8b\x96RG\"\xe9\x03C\x99`\xde[\xa9\x8d\xf3Wul֨CK\x06'\x16\xa1\x1b\x97@$U\xc8\xf6\xb0Bq\xca\xf5\xda~\xeew\xa0\xc1\xc7\v\xbcc\xcc\x01\xb5;\xab\x8bf};i{\xe1\xe2\x15\xd8\t\xcd\xd0b\xc0oK%3\xd0\xd1`r\xf3$\xc8\xebHZD{\xee\xb5Ϗ\xba]\x8aˉ\x18wA\x86'\xdd䴈\x98i\xaf\x7fxj9$\xedڷ\x7fO\xf1\xd8\xdcq\x11\xcc\xd9+\nz\x9c'\x944\xc4\x1b\xf7eX\r\x1e\x903\xfeնBI\x90\xaaKk\x06\xfc\x16\x14u\xc1\xc4\n; oϮ\xd8I\x90\xa1\xb1l\x8f\xd8s\x9a)y\x13:i\xa8S\xff\xe0\x96r)\xd1U\xaf\xa0C\xbc\xbeW\x1b\xed@!M\xcb!0\xc3\xdc+e\xfe\x83&\x1b\xa6\xb4i\x0fA\x0f\xe4\x89D\xc1\xcc\xdc\xf8\x88\x0fJ\x9d\xb4\xef\xf9\xec\xbel\xb9\x9bv\xf21\xe4G9\xc4$\xce\x1c\xe3;@؆0C@d\xb2\x12\xe8@\xb1\xeb\x18\xbbp\xc8u\x12\x96\xa5.\x92\xb4\xd5o\x1f\x10U\x91\x86\x80%r\n\x13\xa3\x9e\x96v\xf3\x8f\x94\xf1\x97 \x9b\x19J#\x8b=\xa7\xad\x89\x90c\xd6Έ+\xe8\x13+\xaa\x82\xd0\xc2\xd2\b\x959+\xa0K\xf4&\xf3\xcc~\x81j\xc2H\xbbbJ\x0e\x06|\xf6X\xe2\x182)4ˡV\xae\x9e\x11\xa4 \x94l(\xe3\x95J\x94\x80\xb3\xd0;g7\xe1%\xc1\xf9\xb6\ti\x9d/\x11\x15\t\xde\xd4D[q\\\x1a\x97*\xdd\xe2\x9b2\xb3\x14̷\xb2J\xc5$\xe6\xe5\x9d\xd9\xd0\xf2\x99\x8cT\x1c\xbe[Z\xa9C\xfdni\x8d=\xdf-\xad\x89绥\xf5\xdd\xd2Ji\xf9\xdd\xd2\xfani\xb5\x9f\xff\x13\x96\xd6Ԉ܁\xba\x81\x97\x93\xa3H\b\x15\x8f\rq\x04\xbeOn\xf09\xd8\xcfʅ\\\xc5AE2\xef\aҪcB\xabQ\x1eur\xa4]5\x81\xe7\xdd\xf9\x9e\tS\xf2\x19Y\xef\xa1\xd3\xf3e\xbd\xafF!\x9e)\xeb\xdd\x0f{\xda\xc6>)\xe7= e^v\xf4\xc2'J\x14@\x83[݅\xc1c\xf3\x1a␉\xfe_91\xb6\x97\xb5uF\xfex\xf1,\xfad\x1e\x89\x92\xf4\xe2/\x17\xdf\x1e\xfaσ\xf0A\x14\xf7q\xe7\x0f\x18G\xa0\xda\x1dh;-\xab\x9b\x05\xf7m\xb2\xf1Y\xf865\x13\xbeFb\x04V\x97%\x8f\xb0\xf8\xad\xca\x02\x03\xc5\xe7\xd2k\xa4g\x1c\x15]E\xe0$\x1d\x16\xa5\xfa \xb2\x9d\x92BV\xda{%,\xacw\x99;Q\x1e@Ƙ5\xba\xc2\xffJv\xb2\x8adb\x8f\xa0o\"#oz\xf2\x9d\xe4<\x1f\x84\x06C\xf7o/\xbbo\x8c\xf4\xa9z䑙]\x04\xd0\xe3\x0e\x04F\xd8Ŷ\x9d\x80\x1f\n\x02\xf8\x93\xf1\xc7\f\x16\x01$\x15\x11\x8c;Ϋ\xcb\t\xb4\xf9\x8e|.\x9d\xefi\xb6\xdd1\xeeSIK\xe6;9\x85\xaf\x9b\xa27`\x97\u038dv\x9f\xe5\xc8\xc2\x1f\x92\x9a7?!/\xc5#6\x91|wB\xca]bn\xef\xb3\xc3\xf3)Iusv\xcc/\x96@w\xfe\xb4\xb9$\xfcL\xa7\xc8\xcd\xc1\u038b\xa7ýb\x12\xdc뤾%&\xbc\x9d/s\xfd\x1c\x1e\x80\xe1\xf4\xb5ɤ\xb5I\x0f\xc1\xf8\xf8&\xd3\xd2\xe6$\xa3Mb,\x8d\xf5_-\xdd\xecՒ\xcc^7\xb5l\x94%F_\xceI\x1e\x8b\xd7j!\x93\n\x90\xbf\x16\xb3\x9d\x8a\x06\xa9:&\xe5I{\x9e\xcfG0,ჹ\xf5JvkQq\xc3J\x8e\xc1\xcd=ˣ\x0e\x00\xb3\x83C]T\xe2w\x89\xc71}y\x94\xcf_j\xae\xbd<\xb2\xbe\xa9&\x8f\xc09\xa1\xb1u՛y\xe6\xca\x13er\tVG\xd8\xd5\xe9\xabe\xf8\x9aF\v\xc7\xeex\xe2\x145M\x11s\xfbP1\\ZeP\x98\xa7ț\x9eU\xe9lc\xfc\xed\x1f\x15\xa8\x03\xc1\xe2.\xb5\xed\xd1\x1c\x8c\xf2\vS\xdb\xcdQ\x10\x15^l\r\xf9\xb4{\x86x\xb3\x94\xc9;\xe14\xe1\xf1x\xf0\x1b+#\x9a\x8d\x86\x15|v\x0f\x11\xedc\xe0s!\xeb\xaf#\x9fM\x19\xad\xa9'\x88^v\xdb1\x7f\xe31\xa9\xe9ӭ\xb1?\xe8d\xd0)'\x82҂\xf2\x93'\x80^j\x1b2\xb5\x11I\xb6\xbd\xd2N\xf8\xcc\v\xe0\xbd\xe0\x89\x9e\x978ɓ\x88\xa9\x94\x93;\xf3\xf0\xf4\n'u^\xf5\x84\xcek\x9d\xccI>\x91\x93\x94v\x92\x1c\x99MI\x1b\x99\x0e\x9e\x8e\x9f\xb4I8a\x93\x10V\x9d\x1ai\xc2I\x9ay'h\x12p\x98\xba4^\xf1\xa4\xcc+\x9e\x90y\xed\x931\x13L2\xf1z\xde\t\x98\x93\xdd\xfaR\xe5\xa0FC#\xa9\\8\xca\x7f){\x8d\xee@\x8eb\x02\xa14\x9dmձ_Q\\\xfbj\x98X\xf7t(\xc4g9\xad\xa5\xfd;\xf1\x9a\xc6\x1c\xe9\x1aw\xbe\x18\xaa\v\xe9h(\xa9\xc2\x02\xbb\xeb\x83K\xf9\x88\xaa\xca\x0f4\xdb\x1dA\xdfQM6R\x15Ԑ\x8b:Hv\xe5\x80ۿ/.\t\xf9(뼁v\xed\x18͊\x92\x1f쎁\\\xb4?8\x8d\x03\xa2\xdc\x16z\xbb\x95\x9ce\x11[*Z?\xc85\xee\x15t\xc0\xaaFY;\xac^چqS\nͮn\x9dƍ\xe4\\>\xce܋Ӓ\xfd'\x96\x97~\x86\xb7\xe6\xdd\xed\na\x04\xf6\xc0z\xd5u\x02S=\x9b5X5\xd9\xccsh\xed\xaf6\x1d\x88\xdd\\\xc0v\x05W\xc8]\xb1ޠ\xa6\xbd\xe8̤\x95.\xb7+7\x8e\xa1^,\xcfPq \x12\xb3N̎\xa9|YRe\x0e.\x99a\xd1\x19CP\x8bcޖA\xed\xd1/@\x1cEo\xa8;\x8cQ\xbcC\xd9\r\x8c\x1e\xe3\xee\x94q\f\x9f\xf0\x9b<\xdbw\xc6q\f[\x18K\xc4T\xe4\xe7hv\xd4ټXڗ\xcf\xfdU\xee\xe1}ԛ\xd5A\xcf\xddQ\xf3H\nS\x80\xe8*\xc3\x0efr\xae\x01\xab\xc6\xf6_=#')t\xed\xeb~\x9e⸺낈\xcc/\x94A\r\x9d\xc5\xe4\x13V)?\x90ۯ\xb8g\xaaE\x9b_\xa2~\xcf\x14\\W!`\x1a\x81\xe3?\xf8\xe9\xfc\xe9[\xdaHE\xb7\xf0\x8bt\x85\xa0\xa7\xc8\xdem\xdd)\x10\ueb5e\x90c\x19\x16M\xacJ\xac/I}\x04\xacɋ\xeeU\u07b5\xa3\x9cYK\xd8\x18~\n\xdd\xef\xef\x7fq\xb32\xac\x80\xcb\xf7\x95K\t\xb02Q\x83Eq\x98\xad\x83\xb4\xb6\xff\xdd\xc9G,P\x1b\xf7+\x86\xc2\xfe\xcdd\x14`B6\xa6\xe9͚RUrIsP7Rl\xd8vbv\xbfu\x1a\x1f\xa9\xd9\f\x7f\xf4\x93\xabuT\x80\x7f\xe68\xbd\xb5y8\a\xfe\x91q\xd0nX\t\x02\xf8\xb6\xffU-\x8f\xabb\xedl\xb8\x8d}Yw0\xa0\xe3ܴ\xd05\\\x82\xb2V\x94s\"W:\xf0\xea\xf0\xc4\x1b\x8a0a`\v\xfd\r݈\x04\xdew\n\x93\a>\x9f\x12G_\xe3_\xb5\xcc\xca\xd6Jsv\xa5\xdcD\x06>\x04\xa7u\xcd\xc3#3\xbe,\xd3y\xebh\x0em\x16\x86\n\xd8c\xc5\xf6\xe9\x12\xf6\xae\xb0\xbb\xbf\xf8\xc23r\xa5\xb0\b\xa6/\xfa\x8eE#O\xaab\xbf\xaeӁ\xea\xd4\"\xfd\xce\x18(J\x13\xd3\xd2ӂ\xe4\xa71\x80\xb5\x85#\r\xe5-~\xa6\xa1A\xccF\xd5\a\x91\x8d\xa5-\xf9uT8h\x83\x8c`\xa77\nir\xc2>\x99\x18D\x1eVz8\b3\x0f\x15\x9e\n>\xd7N\x1bZ\x9cT\x8f\xff\xa6\x0f\x06odQy+e\x8f\xd6c\xa7\xba!\x7fL,7\xe0ܗ\xb8=\xb1\xd0 '\xb0\aA\xac^s(\x0eW\n̈́\xe2\xcfO:\xdd\x104Ep\"D\xef\x9d!\xdeO\xa0\xf1~\x93\x1ft\r\x133\x11\xf1\xba\x8a>\x12\xfaf\xa3\xdb\xe7_[\xbb\x19\x96\x16\xc4i\xf6^T6g\x9au\xf5\xc2\xf3\x84\xdc\xcd\xddj\b\xdc)\"\xae\x7f\x9b\xc73\x97q\x7f\xba\xcf\x12i\xfd\xe9\xce\x12h\x11\x885\x8f\x9f\x7f\xee\xb8\xd4O+ٍ_:\x83#\v'\xb4(\xe7\xfe\x18]\x01Z\xd3m\xa8\xd5\xfdh\x8d\xf6-\bp\x8e-\x17\x06\x88\x00m\xce\\u+U\xbb%C3SQ\xdfAH\x1fm\xb5\xfaA\x13.cP\xf1\xbe\x0e\x16.\x82\n\xbb\x99\x99\x88z*\x99J\xd9\xfd|\xa8\x1bZܠ\r\x89\xd4i\xae\xee\x02ζ\xcc\xee\x12,\xe5\xb6T\xad\xe9\x16\x96\x99\xe4\x1cPZ\xf7\xc7\xf5\x92kݟl\xfb\x02TON\xedc\xbb\xad\x8fe9j\xbb\x10.u\xc9\xd4x9\x93a\n\x9a{\xd2z\x03\x92\xd8\U0006c34d\xc3B\xf4\x12\xb1\xfeH\xdbmê\xf3b\xd9{H\xfd\x1db\v\xbf\xa3\x8e\xf3cA\x7f\x97jA\n&\xec?T\xe4.\x14\x15>\x9e5\xfe\x9d\x94\x0fw\x11#\xb67\xf8\x9f\xeb\x86M\x90\x80\t7l<\x8e\xb8\x96\x95\x8f#\xd7\x06m< \x81u\xd7ϼQC\x98#\xfa\xa07\x9dA_\xe8\xcf\x1dH\x93\xaa\xc0\xf5<\x00\xeb.\\T\xc5\xf9aq\f\xf9\xe8R\xbc\x06v\xab.\xbd7\x03\x9a\xd3\xee\x03\x1d\x85XN\x14H]V\xa1-\xd0O\xd9/z4\x0f\x19\x93=\x1c\xffܴ\x1e£\x1bf\xcb\xdc\x1b\x98`\xc7\b<\xefV\x17/!\x98`\xfe[ۦ>\x19\xdfڸ\x85|\xa7A\xffV\xfcd\xf5\x92|\x82\xbe\xa3\xdf\x1d\x96\x86\x1cs\fpUE\x9a\xacĭ\x92[\x05\xba\xcftK\xf2w\xca\f\x13ۏR\xdd\xf2j\xcb\xc4\xe7\xe1\x83!c\x8do\xa92\xcc2\xad\x1bOl\xa0LP\xce\xfe\x19\x93O\xed\x97Ӏn\x067JK\x920\x8c\xa1\x17\xef\xc1ڪ\x83\xfb\xfb\xa8(,=^O\xb1;\x02M\xa6dcm\x1346E\xe8\xf6\x92|\x92\xd1\x05\xee\x13tX\x17\xa65\xad@\x9b%l6R\x19\x17\xaf].\t\xdb\x04'\x82\x95\x1d\xe89rW\n\x12\x16\v\xb4֩\x0f\x8d\x1aB\xb7\xafBm\x8a\x05\xc7\vzp\xb1\x19\x9ae\x95\xb5\x94\xae\xb4\xa1\xc5[\x0e\xd6\xf4\xd2\x00\xdd\xedӬm\xf2\xfe\x8c~\xa3s:\x8d\xc2]\xd5\xe7\xf1\x9a\xec\xcf\xe8.z1_\xd1y\xa7\xfcH\xf1\xa6ۓV\xed\xdf\xfd\xb7\x11g\x91\a{nwQ\xcb[\x14\x06\xfe\xaa\xfe\xa2\xa8V\xea\xfd\x88r:oI\vߓ\xff\xe5\x7f\x03\x00\x00\xff\xff\xe1\xa0\x1ak\x81\x7f\x00\x00"), + []byte("\x1f\x8b\b\x00\x00\x00\x00\x00\x00\xff\xccYI\x93b\xb9\x11\xbe\xf3+2b\x0es\xe9\aݶ\x0f\x0e.\x0e\x9a\xb2#:\\\xed\xaah\xca\xe5\xeb\b)\x01\rzҳ\x16h\xbc\xfcwGj\x81\xc7[\x1a\xaa\xed\x18\x8f.UOK*\xd7/3EUU\x13\xd6\xc8W\xb4N\x1a=\a\xd6H\xfc\xeaQӗ\x9b\xee\x7f\xef\xa6\xd2\xcc\x0e\x1f&{\xa9\xc5\x1c\x96\xc1yS\x7fAg\x82\xe5\xf8\x80\x1b\xa9\xa5\x97FOj\xf4L0\xcf\xe6\x13\x00\xa6\xb5\xf1\x8c\xa6\x1d}\x02p\xa3\xbd5J\xa1\xad\xb6\xa8\xa7\xfb\xb0\xc6u\x90J\xa0\x8d\xc4\xcbՇ\xf7\xd3\x0f\xbf\x9b\xbe\x9f\x00hV\xe3\x1c\u058c\xefC㼱l\x8b\xca\xf0Drz@\x85\xd6L\xa5\x99\xb8\x069ݰ\xb5&4s\xb8,$\n\xf9\xf6\xc4\xf9\xc7Hl\x95\x88=fbq]I\xe7\xff<\xbe\xe7Q:\x1f\xf75*X\xa6\xc6؊[\xdc\xceX\xff\x97\xcb\xd5\x15\xac\x9dJ+Ro\x83bv\xe4\xf8\x04\xc0q\xd3\xe0\x1c\xe2\xe9\x86q\x14\x13\x80\xac\x9aH\xad\x02&DT6S\xcfVj\x8fviT\xa8\xf5\xf9.\x81\x8e[\xd9\xf8\xa8\xcc$\vda\xa0H\x03\xce3\x1f\x1c\xb8\xc0w\xc0\x1c,\x0eL*\xb6V8\xfb\xabf\xe5\xffH\x0f\xe0gg\xf43\xf3\xbb9Lөi\xb3c\xae\xac&\x1b=\xb7f\xfc\x89\x04p\xdeJ\xbd\x1db\xe9\x919\xffʔ\x14\x91\x93\x17Y#H\a~\x87\xa0\x98\xf3\xe0i\x82\xbe\x92\x86\x80T\x84P4\x04G\xe6\xf2=\x00\x87D%\xeah\x98Sջ\xeb\x8amb\x05^;T\x12\xff4\x93\xb9o\x91-\xfe=\xe5\x16\xcf$\x9dgusEw\xb1\xc51bW\xaax\xc0\r\vʷE%+\xa9\xb6_^\x8b\xd5 \x9f\x8at\xea\xeaƇ\xab\xb9t\xeb\xda\x18\x85,QI\xbb\x0e\x1f\x92\x17\xf2\x1d\xd6l\x9e7\x9b\x06\xf5\xe2\xf9\xd3\xeboWW\xd30\xe4H\x9d\xa0 ñ\x96mvh\x11^c\xfc%\xbb\xb9,ڙ&\x80Y\xff\x8c\xdc_\x8c\xd8XӠ\xf5\xb2\x04K\x1a-,j\xcdvx\xfaWu\xb5\x06@b\xa4S \b\x940\xf9U\x8e\x1f\x14Yr0\x1b\xf0;\xe9\xc0bcѡN0E\xd3Lg\x06\xa7\x1d\xd2+\xb4D\x86b;(AXv@\xeb\xc1\"7[-\xffq\xa6\xed\xc0\x9b\xec\xcc\x1e\x9d\x87\x18\xa1\x9a)rր\xef\x80iѡ\\\xb3\x13X\xa4;!\xe8\x16\xbdx\xc0u\xf9\xf8L\xd1 \xf5\xc6\xcca\xe7}\xe3\xe6\xb3\xd9V\xfa\x82\xd0\xdc\xd4u\xd0ҟf\x11l\xe5:xc\xddL\xe0\x01\xd5\xcc\xc9m\xc5,\xdfI\x8f\xdc\a\x8b3\xd6\xc8*\n\xa2\x13\xa4\xd6\xe2\a\x9b1\xdd]]\xdb\v\xe94\"\xa4\xbe\xc1<\x04\xaf\xc9e\x12\xa9$\xe2\xc5\n4E\xaa\xfb\xf2\xc7\xd5\v\x14N\x92\xa5\x92Q.[{z)\xf6!mJ\xbdA\x9b\xcem\xac\xa9#MԢ1R\xfb\xf8\xc1\x95D\xed\xc1\x85u-=\xb9\xc1\xdf\x03:O\xa6\xeb\x92]\xc6,\x06k\x84\xd0D\x90\xe8n\xf8\xa4a\xc9jTK\xe6\xf0\x17\xb6\x15Y\xc5Ud\x84\xbb\xac\xd5\xce\xcd\xdd\xcdI\xbd\xad\x85\x92SGL;\x88\x06\xab\x06\xf9U\xdc\tt\xd2Rdx\xe61FWGA\x19*Ɠr\x19\xc3 A\x83q\x8e\xce}6\x02\xbb+\x1d\x96\x17\xe7\x8dW<6hk\xe9bz\x85\x8d\xb1\xdd\xcc\xc3\xceH\xde\x1e\x05\xf1\xba\x06\a@\x1d\xea>#\x15|A&\x9e\xb4:\x8d,\xfd\xcdJ߿hĐ4\x12\x8b\xab\x93\xe6\xcfh\xa5\x117\x84\xff\xd8\xd9~V\xc1\xce\x1ca\x13\xfd_{u\"\xecr'\xcd\xfb\xa8]\xc6\xe2\xf9SA\xf0\x14[90\xb3\xae\xa6\xb0\xc8Am6\xf0\x1e\x84tTH\xb8H\xb4\xaf,\x1dT,4\xe6\xe0mx\x93\xf8\xdc\xe8\x8d\xdc\xf6\x85n\xd7Fc\x1es\x83tGs\xcbx\x13\xa1\x16yGc\xcdA\n\xb4\x15Ň\xdcH\x9e9\t6e\x90\x8dD%z\xd84\x1aeQ\x14\x8b\x82\x82\x9a\xa9\x1b6\\\x9e7\xc6J\x9aI\x9d<\xf8B b\x8d\xadsj\xd6\x1e\xb5\xc0n\xb6\x89ܘ\bh\x0e\x05\x1c\xa5\xdf%\xa4TCq\aߌ=\x1a{<\rMwx\x7f\xd9!\xedL\x89\x17\xc1!\xb7裷\xa1\"\xf7!W\x9a\x02|\x0e.bm\x17'ʈ\x05_9\xbd\xc7S_\xd1p˸\xb9\x14\xba\xcdr/{\x95A\xa5y\x11\xc4\xe2\x06-\xea^\xb5P\xc6@\x06\xa0\xb6\xc7j\xf4\x18\x93\x800\xdc\x11\xfesl\xbc\x9b\x99\x03ڃ\xc4\xe3\xech\xec^\xeamE\xe6\xa9r\xbc\xcdb33\xfb!\xfe\x19\xb9\xef\xe5\xe9\xe1i\x0e\v!\xc0\xf8\x1dZ\xb2\xf1&\xa8▭\xaa\xea]L\xde\xef H\xf1\x87\xefQ\xa2iR\x98ݡ\xc8U\f\x95\x13U\x87\x91'\xd2\xdb*\x99\xd0X\xa0\xfcK\x9eQg\xd3'`\x1a\xf2ڡ\xb2\xb6=\b\xc5(\xdd\f\xc1\xef\x1e\xfb\xc8\xfb\x8d\x98\x04\xf8Z]\xecTլ\xa9\xd2n\xe6M-\xf9\xa4+m\xac\xbdo\x84o\xa9\xf5\xa5\x16\x92Smx\x1dv\xa5\a\x12W-\xc1\x80\x1a\xbaM\xc2\x18\xd8\f\xab)\x89\x9bS\xed\r\x8e\x9f\xda{/\x9dcB\xbe\x9c>\x1dz*\xdb\x1ch\xa4\xf4\xcal_\xcf\x11o\xb8њ\x02\xdd\x1b`g\x14\xfd\xd1u\xd3\xc7\x1b\xc1g\x1d\xf8\x1e\a\x14\xdf\x13\xe5c\xdcXt\x9c\x8e\x11/\xc1a\xc4\xf5[l\xc0\xed\x88\xe0l\x89\xf6\x1e^\x96\v\xdax\xce\xc0\f\x96\vX\a-\x14\x16\x8e\x8e;\xd4Դ\xc8\xcdi\xf8.\x1a/\x8f\xab\xa2\xd5X\xbc䶣\xe8vX\x86\x94\x1e\xe6\xb0>\r\x94\x1bw\b\xd9X\xdcȯw\b\xf9\x1c7\x16\x857\xcc\xef@j'\x05\x02\x1bP\x7f\xaa\x03G\x04=\x97\x16O\x19s\xbe\xc3<\xdf\u0086\xc4\xce[\xe0\xa1\xe8\xf8F\xfc<\xe7mg-\x94\xef\x9c<\xae\xcḇ8\x1e\x94\xe8p~\xd3\xf8S*\xde\xf8@\x16\xbeb\xe6\xb5\x7f\xe2\x1bE`yY\x19\nf*9\x8c\xb5\xe8\x1a\xa3\x05\xb5l\xf7\x95\x80\x17\x96\xffw\x85\xe0\xb0Y\xabk\x94\xeb\xac\x15+\xdc\xd5\x05\xc5W\xa47\xf7A\xe9m\xad\xdde\x98\xb5\xa3\xfe\xf4\xd2\nud\xfcE:\xa0\xc1\x8a\xa6\xd5\x16Qg\xae!\xe8X\x18ƒa:\x99\f\x1cy\xa0&\x9cR\x98\x98\x93p6\x9e\xd4\xe6H\xa7[\xe4\"\x050:%|\xea\r\x99\x16\xb9+\xa7\xa5\x01\xcaG\xa9\x14\x15\x01\x16kCڢ\xb2֢:\x01s\xe4M\x87\xdfL\xdf\xff\xffZ.Ŝ\xa7\x0e\n\xc5\x17<\xc8\xfe\xd3\xd4}\xfa~\xecQ)\xf0p\x0e\x1a\xfa\xf8\xa9t\xeb3\x9b\xb7\xfd\x04\x1b\xa9\xa8\x98la\xc7\x1d\xe5\xc1\xc0\xc3\xea\xc7\xd5\xe3\x8f.\xf6\x10\xa8\xbd\x83#Y\xd0E\x96\xa8i0\xf9\x85$8OY\xe4\xb6\x03\x14{&/\x00e\xf4\x96*\xcf\xf4\\B%^\xf2'cA\xa0\xa7l\xa5\xb7\xc0wLo)6\x86@?r\x9c\xd9o3J\xee3\xea!R\x8f\xb8\xc7]\x16}\x91C=\xc1[\xac9\xfe\x8e}\xe6?\x9b\xf6\xf2\\\xdaQ\xfc\x18\xd8\x16St\x17K2'EW\xfe\xf2\xb6}\x19\xdf\xdf`\xf7\x1fοW=\xff\xd5S\x7f\xef\x89\xffW\xa1\x9c\x9a*ݛ\xe5\xf3\xe7\xb4+=x\xe6#\xc0\xd6&\xf8\x81\xec\xdfr\xf8\xc1\xa0\x8e\xbff\xbc\x85\xc7\xf8\x1bͭ\x02\x85\xf6\x14\x8b\xf0`m|\x14-\x8fu\x11*\x86\xf2\xd2\xfd\x10\xbc\xe8\xfc\x94\xd4^\xeb\xff\xd0t\x87\\\x83y\xba7\x99rmˮY\xc9홰>?u\xcf\xe1\x9f\xff\x9e\xfc'\x00\x00\xff\xff\xf3/:\xb2\x01\x1d\x00\x00"), + []byte("\x1f\x8b\b\x00\x00\x00\x00\x00\x00\xff\xbcVMs\xdb6\x10\xbd\xebW\xecL\xaf%\x15O{\xe8\xf0\xd689x\xdaf4v&w\bX\x89\x88A\x00\xdd]\xc8u?\xfe{\a\x00)K\x14\xe5$\x97\xf0&`\xb1\xfb\xf0\xde\ue0da\xa6Y\xa9h?!\xb1\r\xbe\x03\x15-\xfe%\xe8\xf3/n\x1f\x7f\xe1ֆ\xf5\xe1f\xf5h\xbd\xe9\xe06\xb1\x84\xe1\x1e9$\xd2\xf8\x0ew\xd6[\xb1\xc1\xaf\x06\x14e\x94\xa8n\x05\xa0\xbc\x0f\xa2\xf22\xe7\x9f\x00:x\xa1\xe0\x1cR\xb3G\xdf>\xa6-n\x93u\x06\xa9$\x9fJ\x1f\u07b47?\xb7oV\x00^\r\u0601A\x87\x82[\xa5\x1fS$\xfc3!\v\xb7\atH\xa1\xb5a\xc5\x11uο\xa7\x90b\a/\x1b\xf5\xfcX\xbb\xe2~WR\xbd-\xa9\xeek\xaa\xb2\xeb,\xcbo\xd7\"~\xb7cTt\x89\x94[\x06T\x02\xd8\xfa}r\x8a\x16CV\x00\xacC\xc4\x0e>dXQi4+\x80\xf1\xda\x05f\x03ʘB\xa4r\x1b\xb2^\x90n\x83K\xc3D`\x03\x06Y\x93\x8dR\x88\xfa\xd8c\xb9\"\x84\x1dH\x8fPˁ\x04\xd8\xe2\x88\xc0\x94s\x00\x9f9\xf8\x8d\x92\xbe\x836\xf3\xd5\xd6\xd0\fd\f\xa8T\xbf\x9d/\xcbs\x06\xccB\xd6\xef\xafA`Q\x92x\x02Q\xea\xda\xe0\x81N\xf8=\aP\xe2\xdb\xd8+>\xaf\xfeP6\xaeU\xae1\x87\x9bʴ\xeeqP\xdd\x18\x1b\"\xfa_7w\x9f~z8[\x86s\xac\v҂eP\x13\xd2L\\e\r\x82G\b\x04C\xa0\x89Un\x8fI#\x85\x88$vj\xad\xfa\x9d\f\xcf\xc9\xea\f¿\xcd\xd9\x1e@F]O\x81\xc9S\x84\\H\x1c\x9b\x02\xcdx\xd1J\xaee \x8c\x84\x8c\xbe\xceU^V\x1e\xc2\xf63jig\xa9\x1f\x90r\x1a\xe0>$g\xf2\xf0\x1d\x90\x04\bu\xd8{\xfb\xf717\xe7{\xe7\xa2NI\xa1$\xb7\x9dW\x0e\x0e\xca%\xfc\x11\x947\xb3̃z\x06\xc2\\\x13\x92?\xc9W\x0e\xf0\x1c\xc7\x1f\x99D\xebw\xa1\x83^$r\xb7^\xef\xadL\x96\xa2\xc30$o\xe5y]\xdc\xc1n\x93\x04\xe2\xb5\xc1\x03\xba5\xdb}\xa3H\xf7VPK\"\\\xabh\x9br\x11_l\xa5\x1d\xcc\x0f4\x9a\x10\x9f\x95\xbd\xe8\x9e\xfa\x15\x17\xf8\x06y\xb2'\xd4\x1e\xa9\xa9\xea\x15_T\xc8K\x99\xba\xfb\xf7\x0f\x1faBR\x95\xaa\xa2\xbc\x84^\xf02\xe9\x93ٴ~\x87T\xcf\xed(\f%'z\x13\x83\xf5R~hg\xd1\vp\xda\x0eVx\xea\xd8,\xdd<\xedm\xb1\xdd\xec\x00)\x1a%h\xe6\x01w\x1enՀ\xeeV1~g\xad\xb2*\xdcd\x11\xbeJ\xad\xd3\xc7d\x1e\\\xe9=٘\x9e\x81+\xd2.\f\xffCD\x9d\xc5\xcd\xfc\xe6\xd3vgu\x1d\xab] x\xea\xad\xee\xa7\xe1\x9f\xd1t4\x8as\xfe\x96\x8d!\x7f/v;߹zy(\"[\xc2Y\xc36p\xe1ݯ\xf3RL\xf5\x1b\x99\xa9\x8e>r\xa3\x13Qi\xbe\xa3ϫ\xa5C_\xcb\x05\x12\x05\xbaX\x9d\x81z_\x82\xca?\x06e=\x83\xf2\xcf\xe3A\x90^\t\xfe\xa5\x13ǂ\xf5#\x96mɚ\x13\x06 Y\x8f~\x9a\x16\xea\x12\x06\x98m\xf4Y$c\x7f3\r\xcc+\v\n\x8b\xdd!\xa6ӣ\xf9C\x13\xfb\xf9\x03\n\xf8=a\xbe\xb7\xed\xc5\xf5\xb55\xc4sq\xd1\xe9\xc9\xea\xd8\xe3\xc6\b\x17:\xfb\x86\xef\x1da\xff\xa7C\x9f\xafዮ\xe3m\xbe\xbb\xfa.8F}\xf6\xdcG\xe4\x1b\x04\xcfg:8\\\x15\xe5\nL\x83\xe7U\x89\xae7w\xef\xa1\xf0\x8c\xfb;\x8atg\x1a;\xefwf\xbc\xc7/\xbd\r\xde\xeeU~]\x8c\xbd\xca[\xf2\x9d\x88\xf09V\xe8\r\x12\x86\xbd\x02\xbf(\xeaf#\x02\xbctJvicjt\x16\xf7\x10\xacTsRy\x05|\xd6\a\xe5qf؊4\x843f\x06\x7fb>\xa3j\xe7\x0e(\x06\xa5\xb9J\x19IP\f\xef\xd0\xc6\xe4?R-\xa3\xf7\xe9\xea\xc9V~qL7\\+\x8e\xa3\xa2\xfc\xf5x\xff\x86B\xde\xee=\xd3KZ(\x93\xd18\x8fEP-\xbf\x8cx\x8d52i\xd7)\x19\xf9;~\xb9\x1d\x135[Q\xfc\xe6T\x1e\xac7 ~\xda9f!G\x93\xef\xef\xe9\xdb4\x05\xc4\xc0\xcf(\x90\xc2\xcc`\xac\x10j\xd4HXC\xf5\x9ao\xa4\xd7@؟\xe2n\xac\xef\x05\xad\x80\xef\xf5\x82\xd4L\x1b\x99\xa8\xb5\xa84\xae\x80|<\xd7e\xb3\x89\xbbN\x84\x991<\xca\xf9\x81}\xe6\x1ac7\x8c\x17;\x03\xce\xde\x1b\x05|\xc1\x97\x19냷\x12C\xc0\xd31:\x9b\xc9\xec\x10\x9c\x18\x03?\xbe\xea\x03\x96\x86\xbf\x02\x83\xe5\xff\x00\x00\x00\xff\xff\xafA\x18\x17\"\x0e\x00\x00"), + []byte("\x1f\x8b\b\x00\x00\x00\x00\x00\x00\xff\xc4ZKs\x1b7\x12\xbe\xebWt)\x87$U\x1e2\xf6\xa6\xb6\xb6x\xb3\xe5͖v\x13Yeʾ\xa4r\x00\a=3\x88f\x00\x04\xc0\x90\xe2f\xf3߷\x1a\x0fr^$E:\xb1\xe7b\x13\x8f\xee\x0f\xfdFCY\x96]1->\xa2\xb1B\xc9\x050-\xf0ɡ\xa4_v\xf6\xf8\x0f;\x13j\xbe~y\xf5($_\xc0Mk\x9djޣU\xad\xc9\xf1-\x16B\n'\x94\xbcj\xd01\xce\x1c[\\\x010)\x95c4l\xe9'@\xae\xa43\xaa\xae\xd1d%\xca\xd9c\xbb\xc2U+j\x8e\xc6\x13O\xac\xd7\xdf\xcd^~?\xfb\xee\n@\xb2\x06\x17\xa0\x15_\xab\xbamp\xc5\xf2\xc7V\xdb\xd9\x1ak4j&ԕ\u0558\x13\xedҨV/`?\x11\xf6F\xbe\x01\xf3\xbd\xe2\x1f=\x997\x9e\x8c\x9f\xa9\x85u\xff\x99\x9a\xfdQX\xe7W\xe8\xba5\xac\x1e\x83\xf0\x93VȲ\xad\x99\x19M_\x01\xd8\\i\\\xc0\x1d\xc1\xd0,G~\x05\x10\x8f\xe8ae\xc08\xf7Bc\xf5\xbd\x11ҡ\xb9!\nIX\x19p\xb4\xb9\x11\xday\xa1\xdc+\x0e\x01 \x04\x84`\x1ds\xad\x05\xdb\xe6\x150\vw\xb8\x99\xdf\xca{\xa3J\x836\xc0\x03\xf8\xd5*y\xcf\\\xb5\x80YX>\xd3\x15\xb3\x18g\x83x\x97~\"\x0e\xb9-\x81\xb6\xce\bYN\xc1x\x10\r¦B\t\xae\x12\x16\xc2ia\xc3,\xc11Οr\x9a\xb1\x9f\xa7\xedֱF\xf7\x10\xdc\x18d\xfb\xad\x01\x02g\x0e\xa7\x00\xec\xe4\t\xaa\x00W!I\xde\x1b\x16\x13R\xc8\xd2\x0f\x05M\x80S\xb0B\x0f\x119\xb4z\x02\x99\xc6|\xa6\x15\x9f\xc9D\xb4\a\xebn0zJ6\xb4\xfe\xcfF\xd5\x03t\xaf\xf8\x05P\xce\xe2\x1b\x16\xf7\xb8~\xec\x0e\x9d\xb4\x8f\n\xfd\x9aļյb\x1c\r\xb1\xaf\x98\xe45\x92f\x198ä-\xd0\x1c\x80\x91\xb6=lu\x1ḟD\xaf3s\x8e0\xa2\xef,\x9d2\xacD\xf8Q\xe5>@\x91I\x1b\xecٴ\xadT[sX%.\x00\xd6)3i\xe0\x848\xec\x8at\x13ف\x9f\xf5y\x1eFߡ\x9d\xe2\xe9,'\x1f\x11JN{\xd0\xeb\x12\xa7\xbd'L\xaf_\x86p\x95WذE\\\xa94\xca\xd7\xf7\xb7\x1f\xff\xb6\xec\r\x03h\xa34\x1a'R\xf8\f_'9tF\xa1/\xea\xffe\xbd9\x00b\x10v\x01\xa7,\x816\xd8d\x18C\x1e1\x05\xf5\b\v\x06\xb5A\x8b2\xe4\r\x1af\x12\xd4\xeaW\xcc\xddl@z\x89\x86\xc8$E\xe5J\xae\xd180\x98\xabR\x8a\xff\xeeh[\xb2=bZ3\x87ց\x0f\xb5\x92հfu\x8b/\x80I>\xa0ܰ-\x18$\x9e\xd0\xca\x0e=\xbf\xc1\x0eq\xfc\xa4\f\x82\x90\x85Z@圶\x8b\xf9\xbc\x14.\xa5\xcc\\5M+\x85\xdb\xce}\xf6\x13\xab\xd6)c\xe7\x1c\xd7Xϭ(3f\xf2J8\xcc]kpδ\xc8\xfcA\xa4O\x9b\xb3\x86\x7feb\x92\xb5=\xb6#\xab\t\x9f\xcftg\xa8\x87r\x1f\b\v,\x92\nG\xdck!Ů\xf7\xff\\>@B\x124\x15\x94\xb2_:\x92K\xd2\x0fISȂb\x00\xed+\x8cj\xa98\x9e8ܝ\xe28\x05\x9b\xb6\x82\xabX\xb0n*\xde(\xb8\xb5R\x8e\xb9Ч\xe4Y\xc0\xb4\xe2'pE\x8e\f\f\x16hP昢\xe0\xb1\xcad\x02Y\xb7f\x18c\x8a\xfc'\xe5C_!\xb0\xe6>\x8b\x9e\xe6=i\xa2\xf4\xdd\x16\x01\x84\x8f\x8dN\x01\x03-0Ԟ\xbb\xbc\x04BZ\x87\x8c\xc7A\n\a\x06\xe3܋\x10\xf3\x0e\x82\xa4o\x9f\xbfH'\xc0(\x06\v\x0e\xff^\xbe\xbb\x9b\xffK\x85s\x00\xcbs\xb4\xbe\xc8vؠt/vu?G+\fr\xaa\xe2q\xd60)\n\xb4n\x16\xa9\xa1\xb1?\xbf\xfaeZ~\x00?(\x03\xf8\xc4\x1a]\xe3\v\x10A滰\x9e\xccF\xd8p\xf0\x1dE\xd8\bWy\xa0Z\xf1x\xc0\x8d?\x82c\x8f\b*\x1e\xa1E\xa8\xc5\xe3\x84\xff\x84\xef\xdaWM{\x98\xbf\x93\xf7\xfcq\r\xdf\x047\xbe\xa6\x9f\xd7\x01\xc6.\x81w\x1dl\x0f'x\x99\x11e\x89\xfb\xf2ld,\x94p(T\x7f\v\xca\xd0Y\xa5\xea\x90\xf0\x84IO!R\"\x1f\xc1\xfb\xf9\xd5/\xd7\xf0M_\x06\aX\t\xc9\xf1\t^\x81\x88w$\xad\xf8\xb73x\xf0v\xb0\x95\x8e=\x11\xa7\xbcR\x16%(YoCi\xbcF\xb0\x8a\xeeVX\xd7Y(\x958l\xd8\x16Tq\x80OR\x11\x99&\x03͌;Z.\xa5\xef\xe1\xdd\xdbw\x8b\x80\x8cL\xa7\xf4Q\x972j!\xa8(b\x92\xc7<\xed\xed\x8e@\xb7\xc1$\x9c\x82\xbcb\xb2\xc4p2\x84\xa2\xa5)\xb8|\xb8}\xfb%=\xaa\x15\x97D\x92\x03\xb7\x86\xf0=e{TY\xc3t\x16V3\xa7\x1a\x91\x0fVS\xd5|\xcbII\x85@s\xa2\xcc|\xdf[\x9c\n\xe1\x89\xfa{\xb7\xe6\xac:ױr\xa2\xb0\xec\xf6M\x8f\x95\x9fG\xe5u\xda\x14\x1eXi\x81\x19\x04\x06\r\xd3d\x11\x8f\xb8\xcdBe\xa3\x99\xa0\xb2\x84*\x8f]\x9f\b\x98\xd65\xd5\x0e\xa1Z\x99\xa0\x18\xeb\xec(\x1ef\xfd\xf9\x0e\tdR\x95\xa9/\xb6DGw\xf3/'\x9c\x0f\x03 \x7f\xae\xa0v]\xc3\\\xc9B\x94\xad\xf1w\xbe\xb1\xa4d[\xd7lU\xe3\x02\x9ciDŽ\x9e!\xc8\aZr\xfc\xfc\x1f:K\x93\x85\x9fhqN\x9f\xaa\xd7\xf8\x1c\x1f\x06eی\xa1d\xf0\xa8\xb4`\x13\xe3\x06\xad\x1by/M\\_\x9f\xe3c\xc1(/\xb9\xc3\xc7爉\xdbo4\xf4xQH7\xe0n\azR\xe9g\xc4\x06\x83\xbf\xb5t\xed\xe9\xe3Φ\x1b\x14\x835t7\x1f\fi\xc5\a#\xfd08\x98\xecuɻH\xc7]\x1b\xff\xf8qF\xdf&<\xeaD\x99\x86\xe4\xe8\xd2S\x0f\x95\xf7\x97vnrE\u05fc^\a\xf9\x12\x9dߌ\xc9\xf8\x8e\xab\xe1\xd11DCq\xa0\xf3.\x14\x19O\xb5^\xba\xe4\xc2N_\xa3\x105\xe4\xfe\xbaF\xb7ɂ\x89\x1a9\xa4ǿ3\xa9\xac\xb0\xa0\x1c\x1d\x9c45<\"\xbc\xc3\x17\xa5\x87\n\xc1\xfa\xfe\xe5\xd7vG\xb3\xb5\xc8}\xfblB\b\xe3\x8c](\xd30\x17Z\xf1\x19\x91\xb8,zM\xfal\x83ֲ\xf2\x94\xd3\xfe\x14V\x85>P\xdc\x02l\xa5Z\xb7k\x04\xf52\xd2\xd76\x1a\xday\xbd\xa8\xc9\x16K\xdfƙ\xab\x92I\x17m]\xfb=\xdd\xe8\xb0\x7f\x18\xf6\xa8V8]\xd7\x1diD\x1d\x03X1{JT\xf7\xb4f\xca\xebv!\xed\xa8\xdb\xc1\x91\xf0}\x87\x9b\x89\xd1\xd1Kmw\xf2&\xb9\xcc\xc4\xdc\x0f\xde\x1b\xce:\x7fdt\x89\xbb'\x90P\xa9:y\xb8r\xac\x06\xd96+4$\x9c\xd5֡\x1d\x04\xfe\xd0D\xd8Ir\xea\xf6\xb7ߟ\x94\x1a(\xc5NIΤo\xf1\xdbP&pauͶ\xbb\xb3\xf8\x9a\x9b\xfck\xba\x15\xbc7\xf2\xe4\xe9\x1a\x0f\xd5\x10\xc7[\x98\x1e\xd3[%\x0f\xdcR\x93\x93\v\xe9\xfe\xfe\xfd\x91\xa2]H\x87\xe5 \x8d\xc4y\x12\xe7\x1b\xe2\xf2\xd7p8R\x03Yɴ\xad\x94\xbb}{\xc24\x96\xbb\x85\xc9E\xf6\xf5\xbc\x0f\x88\xfe\x95!.\x8a\xa60\x01u\x1fp\xce\xf2\xdf\xfe\x1f\x0e\\b\xc5\xcb\x1e\x85\x13\xf9*\xfe\x1d\xc3TVX\xa2f\x86b\x82\x7fú\x19\xbeȾ\x00+|\xa3\x9d\xaa\xddP\xfe\x86\x86\xd9\xd4uNI_\xc0)3~P\x84\x93\t\xa8\x7f\xa0ϙ{&\xcdi4\xe8\x91\xf3\x0e\xed\xf8|\xd3\x1diW\xbb\x97\xcd\x05\xfc\xfe\xc7\xd5\xff\x03\x00\x00\xff\xff\x8b\xcb\x17\x16\x81$\x00\x00"), + []byte("\x1f\x8b\b\x00\x00\x00\x00\x00\x00\xff\xc4Y_s\xdb6\x12\x7f\xf7\xa7\xd8q\x1f\xda΄R\x93\xeb\xdc\xdc\xe8-q\xae7\xbek\x1dO\xe4\xe4\xa5Ӈ\x15\xb1\"Q\x93\x00\n\x80\x92u\xbd~\xf7\x9b\x05H\x8a\xff$YJ\x9b\xe0\xc5\x16\xb0X\xfc\xb0\xff\xb1L\x92\xe4\n\x8d\xfcH\xd6I\xad\x16\x80Fғ'ſ\xdc\xec\xf1\x1fn&\xf5|\xf3\xf2\xeaQ*\xb1\x80\x9b\xcay]\xbe'\xa7+\x9b\xd2[ZK%\xbd\xd4\xea\xaa$\x8f\x02=.\xae\x00P)푧\x1d\xff\x04H\xb5\xf2V\x17\x05\xd9$#5{\xacV\xb4\xaad!\xc8\x06\xe6\xcdћ\xeff/\xbf\x9f}w\x05\xa0\xb0\xa4\x05\x18-6\xba\xa8J\xb2伶\xe4f\x1b*\xc8\xea\x99\xd4W\xceP\xca\xcc3\xab+\xb3\x80\xfdB\xdc\\\x1f\x1cA\xdfk\xf11\xf0y\x1f\xf9\x84\xa5B:\xff\x9f\xc9\xe5\x1f\xa5\xf3\x81\xc4\x14\x95\xc5b\x02GXuReU\x81v\xbc~\x05\xe0Rmh\x01w\f\xc5`J\xe2\n\xa0\xbeg\x80\x96\x00\n\x11$\x87Ž\x95ʓ\xbda\x16\x8d\xc4\x12\x10\xe4R+\x8d\x0f\x92i\xf9\x80^\x83ω\x8f\fRE\xa9\xa4\xca\xc2T\x84\x00^Ê\xa0F\"\x023\x80_\x9dV\xf7\xe8\xf3\x05\xccXp3\xa3\xc5L5?\x81>N\xc4\xe5\xcd\xcb\x18\xcaҜJ\\Ԕڐz}\x7f\xfb\xf1o\xcb\xde4\x80\xb1ڐ\xf5\xb2\x89\xaeqt\x92Gg\x16\xfa\x92\xfd_\xd2[\x03\xe0\x03\xe2.\x10\x9cE\xc8E'\x89s$jL\xd1y\xa4\x03Kƒ#\x15\xf3\nO\xa3\x02\xbd\xfa\x95R?\x1b\xb0^\x92e6\xe0r]\x15!\"m\xc8z\xb0\x94\xeaL\xc9\xff\xb6\xbc\x1d\xfb\"\x1fZ\xa0'烬\xad\xc2\x026XT\xf4\x02P\x89\x01\xe7\x12w`\x89τJu\xf8\x85\rn\x88\xe3'\xb6\x1f\xa9\xd6z\x01\xb9\xf7\xc6-\xe6\xf3L\xfa&\xa5\xa6\xba,+%\xfdn\x1e\xb2\xa3\\U^[7\x17\xb4\xa1b\xeed\x96\xa0Ms\xe9)\xf5\x95\xa59\x1a\x99\x84\x8b\xa8\x90Vg\xa5\xf8\xca\xd6I\xd8\xf5\x8e\x1dyd\x1c!\x11\x9e\xa1\x1eΌ \x1d`\xcd*^q\xaf\x85&\xbe\xbf\xff\xe7\xf2\x01\x1a$QSQ){ґ\\\x1a\xfd\xb04\xa5Zs\x84\xe6}k\xab\xcb\xc0\x93\x940Z*\x1f~\xa4\x85$\xe5\xc1U\xabRz6\x83\xdf*r\x9eU7d{\x13\xca\x0e\x0e\xae\x95a3\x17C\x82[\x057XRq\x83\x8e>\xb3\xaeX+.a%Vf\xe9\xb5Ō~ԑ\xe7\x90\xe8\x94\xd9\xf1x3ŨA\xac:\t5\x9e\b.RBQ\x93N\xb0\xdc\xe6d\xa9\xbbǒ\xd1Nzmw\xcc8\xa6\xe2\xa1I\x1c\xd4N\x90\x83\x16'\xeeƹ$8\x90\xa55YR)5\xe1\xe6X\x994\x01\xbeS-\x8c!\x1e\xd6\a\x1c\t͓\x80_\xdf\xdf6᷑p\r}\x14aO\x8a\x87\xc7ZR!B\xb6:}\xf6\xa4!\xf0\xb8]G\x10!\x06y\r\bFR,\x83\xdb\xf8\x0fR9O(\xeaIv;K\xf5ڋ\x18[\x0e\x82\xe4\xb1\xcf\x13\xac\x12@\x8euR\xc0\xbf\x97\xef\xee\xe6\xff\xd2\xf1\x1e\x80iJ΅r\x80JR\xfeE[\x12\brҒຈf%*\xb9&\xe7g57\xb2\xee\xe7W\xbfL\xcb\x0f\xe0\am\x81\x9e\xb04\x05\xbd\x00\x19eކ\xcf\xc6j\xa4\x8b\x17o9\xc2V\xfa<\x005Z\xd4\x17܆+x|$\xd0\xf5\x15*\x82B>Ҵ\xf4\x01\xaeC\xa1\xb9\x87\xf9;\xbb\xd6\x1f\xd7\xf0Mt\x96k\xfey\x1da\xb4\x89\xb2\xeb}{8>G\x0f\xde\xca,\xa3}E;2\x16\x0e\xec\x1c\x12\xbf\x05m\xf9\xaeJwX\x04Ƭ\xa7\x18\x90H\x8c\xe0\xfd\xfc\xea\x97k\xf8\xa6/\x83\x03GI%\xe8\t^\x81TQ6F\x8bog\xf0\x10\xec`\xa7<>\xf1Ii\xae\x1d)Ъ\xd8\xc5\a\u0086\xc0\xe9\x92`KE\x91ĒD\xc0\x16w\xa0\xd7\a\xceiTĦ\x89`\xd0\xfa\xa3eI3\x1e\u07bd}\xb7\x88\xc8\xd8t\xb2\x10\xdb8s\xad%\x17\x1f\xa8D\x9d\x0f\x83\xdd1\xe8*\x9a\x84א\xe6\xa82\x8a7#XW\x9co.r\xceq=Ќ\xe7\xf9e\xa8\x0f\x9e\x15%\xbeXn}\xa6$B!\xfc\t\x92\xe8>\xf1.\x90\xc4c\xb5\"\xab\xc8S\x10\x86Щc9\xa4d\xbc\x9b\xeb\rٍ\xa4\xed|\xab\xed\xa3TY\xc2F\x9fD\xebr\xf3\xf0~\x9f\x7f\x15\xfe\\z\xf1\xf0\xd2\xff\xd4\xdb\xf7\x1a\x13\x9f_\x04|\xba\x9b_\"\x81\xa6n}~\x8e<(\x87e]I\ry\xb2\xd3ns\x99\xe6\xcd+\xa6\x13\xd5K\x141\xec\xa3\xda}!\xdfa9W\x96\x11풺I\x97\xa0\x12\xfc\xbf\x93\xce\xf3\xfc%\x82\xad\xe4'\x05\x97\x0f\xb7o\xbf\xa4GU\xf2\x92Hr\xa0:\x8f\xe3)٣JJ4I\xa4F\xafK\x99\x0e\xa8\xb96\xbd\x15\xac\xa4\xb5${\xa2\xca|\xdf#n\xaa\xe4\x89*\xb7\xa59\xab\xccu\n\x8d˵\xbf}{\x02Dz%l0\xecuX\x17\xb7\r\xafA\a\xec<<\xc1\xb7\xee\x0eG\xae>\xa8>u\x83L[\x99\x85Tۆ\x8f\xf0\xf4QXb\xb7\xf3\xd9\x1d%\x1a#Uv\x16֦\x91\xb8$\xcf\xcf\xe5\x89\x02\xbd\xdb\x02>V\xc6\x1f\xb5\xbb\xd3.\xf5a\x00\x04\xd0\x12 ߉5\xf4H\xbb$V\x8b\x06%\x97z\\\xcd\xd5%\xf1\x8a\x00\x8d)\xb8\x1e\x8b\x15\xe0\x94\xaf7m\xd1T\xab\xb5\xcc*\x1b\x1eacI\xa9\xaa(pU\xd0\x02\xbc\xadƌ\x8e\xb8O\xb7#{B\xe3\x1f:\xa4\x8d\xbaO\xf4\x84\xa7o\xd5\xeb\x14\x8f/C\xaa*\xc7P\x12x\xd4F\xe2\xc4<\x1b\xfb\xc8\xd1y\xe1\xfa\xfa\x1c\x93\x8a\x9etB\x06u\x03s\xe2\xc1\\;b\xfd|\xe0\x19~\xa4\x06w\x9cΎ\xe7:\xa8\xa5\xdf*~\v\xf5\x11&ӽ\x81\x01\x8d\xd1\xe2j(\xb4nl\x1b,\xee#\xd3p\xa1\xef\xf4\x83\xd5^c\xbd{\x9bq[%tm\xcfi\xac\xc4Nq-\xf7\x98V}\xd3?\xe6\x87\xc1ŭ\x95T\xf3\v\xb1\xd7佤\xb1r3f\x13\x9a\xa2VԎ\"K\n\xfd\x8a\xd8\xf9ޢkN\x9e2\x82.\xbf\xb85\xd47̎Dx\xea\xf1Kt\x8d\xb2 \x01\xed\a\xbc\t6\x0f9\x81\v-\xc1\xaf]˨r$BT\x9e\x00=N\xceM\x03^\xa0\xa7\x84Y\\\x16}&}\xae$\xe70;\xe5t?E\xaa\xd8\xf1\xa9\xb7\x00\xaet\xe5ۖO\xed}\xb5(\xbev\xb5i\x9c\xd7v\xcaѝ\x82r\xcf4Sf\xd8Ɓ\xe3v\bG\xe2\xdb\x1dm'fG\x1fD\xba\x8b7\x8d\tM\xac\xfd\x10\xac\xe3,\x01\xd4\a]b\xff\rH\xc8uј\xbc\xf6\\\aT\xe5\x8a,K'|\x9ai\xc4\xd4\x16,\xf1I\xde\ns\xea-\xd5rh\xa2fdU\xb7\x1dRT\xa1/\xedb\"\x15ҙ\x02w\xedeB\x01\xcb\x16<ݽܛQ\xe3\x9a\x1c(\x0e\xa4\xd9\xe3\r\xc1\xf6\xd3\xd3ty>\xf5!\xab?\xc6_\xa5\x06\xeb\xed7\xb7\xbf\xe6\x84#e\x82\xf3h\xfd'\x05\xc8e\x8fé\xd8\x18Λ\x8e\x8c\xc7CZ\xff\x98\xcf\x19\xcd&\xa57\x9a\f\xc8E\x87w\xdda\xef\xceT\xab\xf6\xf3\xd3\x02~\xff\xe3\xea\xff\x01\x00\x00\xff\xff\xc5p\x17\xe3F\"\x00\x00"), + []byte("\x1f\x8b\b\x00\x00\x00\x00\x00\x00\xff\xdc=]\x93\x1c)r\xef\xfa\x15\x19\xf2\xc3\xda\x11ӣS\xf8\x1e\x1c\xf3&\xcfJ\xd6\xf8\ue909\x19Y\xfbLWewqCA-P\xd3\xea\xb3\xfd\xdf\x1d$P\x1f\xddT\x15\xdd\xf3\xb1\xbb\xe6E1Ր@~g\x92\xa0\xd5j\xf5\x865\xfc;jÕ\xbc\x02\xd6p\xfcaQ\xba\xbf\xcc\xe5ÿ\x99K\xae\xde=\xbe\x7f\xf3\xc0ey\x05\u05ed\xb1\xaa\xbeC\xa3Z]\xe0ϸ\xe1\x92[\xae\xe4\x9b\x1a-+\x99eWo\x00\x98\x94\xca2\xf7ٸ?\x01\n%\xadVB\xa0^mQ^>\xb4k\\\xb7\\\x94\xa8\tx\x9c\xfa\xf1O\x97\xef\xff|\xf9\xa77\x00\x92\xd5x\x05\x1a\x8dU\x1a\xcd\xe5#\n\xd4꒫7\xa6\xc1\xc2\xc1\xdcj\xd56W\xd0\xff\xe0DŽ\xf9\xfcZ\xef\xfcp\xfa\"\xb8\xb1\x7f\x19~\xfd+7\x96~iD\xab\x99\xe8'\xa3\x8f\x86\xcbm+\x98\xee>\xbf\x010\x85j\xf0\n\xbe\xb8i\x1aV`\xf9\x06 ,\x9d\xa6]\x85U?\xbe\xf7 \x8a\nk\xe6\xd7\x03\xa0\x1a\x94\x1fno\xbe\xff\xeb\xfd\xe83@\x89\xa6м\xb1\x84\x80\xffYu\xdf!.\x14\xb8\x01\x06\xdfi\xa3n5\x84x\xb0\x15\xb3\xa0\xb1\xd1hPZ\x03\xb6B`M#xAx\a\xb5\x19@\x8a\xa3\fl\xb4\xaa{hkV<\xb4\rX\x05\f,\xd3[\xb4\xf0\x97v\x8dZ\xa2E\x03\x85h\x8dE}\xd9\x01j\xb4jP[\x1e\xb1\xecۀw\x06_\xe76\xe6\x9aÅ\x1f\x05\xa5c\"\xf4[\b\xf8\xc42\xa0\x0f\xd4\x06l\xc5M\xbfո=`\x12\xd4\xfa\xefX\xd8\xcb\x03\xd0\xf7\xa8\x1d\x180\x95jE\xe9x\xef\x11\xb5CV\xa1\xb6\x92\xff\xa3\x83m\xdc\xc6ݤ\x82Y4\x16\xb8\xb4\xa8%\x13\xf0\xc8D\x8b\x17\xc0dy\x00\xb9f{\xd0\xe8\xe6\x84V\x0e\xe0\xd1\x00s\xb8\x8e\xbf\x11\xf1\xe4F]Aemc\xae\u07bd\xdbr\x1b%\xaaPu\xddJn\xf7\xefH8\xf8\xba\xb5J\x9bw%>\xa2xg\xf8v\xc5tQq\x8b\x85m5\xbec\r_\xd1F$I\xd5e]\xfeSG\xd4Ѵv\xefx\xd4X\xcd\xe5v\xf0\x03\t\xc4\t\xe4q\xa2\xe2\x19σ\xf2[\xec\xa9\xe0>9\xd4\xdd}\xbc\xff6dJn\x02Q\x06\xbc9E\x1f\x87M.7\xa8\xfd8bM\a\x13e\xd9(.-\xfdQ\b\x8e҂i\xd75\xb7\x8e\r~m\xd18~W\x87`\xafI\xeb\xc0\x1a\xa1mJf\xb1<\xecp#\xe1\x9a\xd5(\xae\x99\xc1W\xa6\x95\xa3\x8aY9\"dQk\xa8K\x0f;{\xf4\x0e~\x88\x1aq\x82\xb4A\x8b\xdc7X\x8c$\xcd\r㛨.6J\x8f\x94\x8c\x1b2\xc6QZ\xf8]\xf3Zĩ\xc5\xc3_\x96\xb8̵\x7f\xefF;~s+k%\xff\xb5ER\xa6^\xfc\xf1X_\xe9\x81j\x1f7\xc7F\x87ԝD\xb4k\xf8\xa3\x10m\x89e\xa7\u05cf6\x98\xb3\x8d\x8fGP\xc8\xe81.\x9d\x109\xeb\xe3\xf6\"\xfb_I\x813\x8d \x95M\xc0\xe3\xd2\xc3\x03.\t\x03I\x9aPG\x8bubų[\x06\x90\xad\x10l-\xf0\n\xacn\x8f\xd1\xe8\xc72\xad\xd9~\x02[\xd1\x03x\x12\xb2: A\xd5\b^\x10\xc9;\x85B\xf8\xfa㢊\x1b\xa7(\xe3.o\x95\xe0\xc5~\x01_\x1f\x93\x83\xa2\xb4\x06\xd9\r;\x845V\xec\x91+\x9d\x12\x03\xa5\xa9\xeb\xc0\x9e\xf7jZ9-\x19\x80\x1cڸ\xcc\r'\x91U)\xf5\xb0\xc4\x10\x9f]\x9f\xde:@A\x0ee\xb7\x95@\xed`\xbb\xd7\b\xf8\x03\x8b\xd6&\x96\tP\xb6d\x9a\x94\x86F\x19;M\xf7i\xd5\x05C\xe7(\xf5\xe3\f\xd3\x1c\xed,\xc9\xea\xbe\x05%\x1c\x89\xeap0R\xc8J\xa2\xdbF\xed\x88\xda\xf7ժ\xf5}'\x91\x02kf\xb0\x04%'g&vi\x05\x9a0WI\x9c\xd1롋~\xff\xe4\xf1\x80`k\x14`P`a\x95>Ff\x0eJ}\xcbQ\xac\x13\xa8Lhӱ\x04\xf4\x1b\x98\x01\t\x8e\xd3w\x15/*\xefa8\xf6$8P*4N\x9b\x90˼\x9f\xda$,\x91?L2\xa7=\xfa\xb6 V\x87\xf0R\x1a\xa5o\x19j\xb8oI\xd4\xf6\xba\xf7H\xb7\x84\xefV\xcdn\xfb\xff'b\xa319\x83ig\xe4\x1f\xc8\xfd\xcc\xe6\xe9I\xbe\xa5\b\x0f\xcd%\xdcl\x00\xeb\xc6\xee/\x80\xdb\xf8uI\x12\x98\x10\x839\xfe\xc0\xb49\x9d\xe93I\x93#\x13/D\x98n\x8a? ]\xc8d\xdc\a\x8b\x91M\x93\xbf\x0eG]\x00\xdftH//`ÅE}\x80\xfd\xb3T}\xa4\xccs #\xc7\xea\x01\xe5\tlQ}\xfc\xe1\\\x1c\xd3'\xc12\xf1r8\xd8\xfb\xc61\x82\x18\x9b\xe7\x05\xb8@\xf12\xd7XS\x1c\x0e\xdf\b\x9b\xfd\x17r\xaa?|\xf9\xf98V>l\x19\x9cw\xb4\x91\x05\xa1\xf3\xed\xc3\xc1\x8e\x86\xeb\vQA\xfc\x85|\xa0.\xa8\xf29\x97\v`\xf0\x80{\xef\xba0\t\x8e>,vΘ^#%\x7f\x88\xcf\x1epO`\xd2ٜ\xe3\x96\xcb\r\xbe=`\xc2\xf5O\xb5\x11\x0eݚBX\xec\xf1\xe4>\x10\"(\x86\xcfe\x03߂($r'閩Kb\x8b\xb8?c\x9bY\xac2\x9cc\x98\xfa$\x0e\xf8\xc9xZ:\x89\xa9x\xc8i\x1a$\x99\xc9%\xa8oߙ\xe0e7\x91\x97\x91\x1by\x01_\x94u\xffP\x80f\x88Q~Vh\xbe(K_^\x04\xa3~\xe1/\x89O?\x03\t\x9a\xf4Z\xde!l\x98\xf3\xf36\xcdq[\x87{n\xe0F\xbaxţ$s*J\xef\xfa\xe9\xfcDuk(]'\x95\\\x91\xcdL\xce\x14\xf0\xad\xf4\b\xddO\x9e4L\xf8\xcd\x19\v\xff\x8bO2\vV`\x19#K\xca~2\x8b[^d\xceW\xa3\xde\"4N\x85\xe7qD\xa6b\r\xbb9\x8d}\xf2\xacwlA\xf1\x96ˋY9\x81\xcb\xe8\x15ɸ\xd8u\"\xb39\xdduyGdE\xc9\xc5X\xc4.+K:\xc2b\xe2\xf6\x04\x8d~\x02-N\x15\xcd\xc1ڽ\t\xacY\xe3\xc4\U000bf765#n\xfe_h\x18\xd7\xe6\x12>\xd0I\x95\xc0\xd1o!\x0f6\x00\x931e\xe3\xa6r,\xf0Ȅ\xb3\xbdN\x81J@\xe1-\xb1\xda\x1c\xf9%\x17\xb0\xab\x94\xf1fs\xc3Q\xd0y\xc1\xdb\aܿ\xbdp\xd3/N9\x14\xf2\xb77\xf2\xad\xb7\xe1G\x02\xdb\x19|%\xc5\x1e\xde\xd2oo\x9f\xe2\xcad2[f\xb7\x1f\xab\x87.ö\xaaY\xb3\n\fjU=\xa34d2Y\u07b7\x11\xc7\fs\xe3}R<8\xb9s\xbb\xcdb\xd1F\x19\xfb9\x9d\xb7\x9bX\xcfm\x1c1\xf6L\x139\xaeE\x8f=\xe4\xb1:}뜸\x8dE\x1dry^\aG\xff\xff\x89\x91Q\xeaTd\xb8\xd8.\x19Ǻ\xfc\xaaC\xf0\x027\xf9\x83\x93\x9c%\x9e\xe20:\xbc\x9c\xe8m\x7f\xfc1\xc8':\xc9u\x7f\x0f7\xf2\xdc\x0em\xa1\xea\x9a\x1d\x9e*f-\xf5ڏ\x8c<\x1d\x00y\xea\xebmK\xf2\x9ck\x11{\x1e\xa2\xf3\xc3\x1d\xb7\x15\x97\xc0\xa2\xda@\x1d\x18\x8aA\xa3R9\xe4T\xab\x98\x815\xa2\xecR\xe4\xbf\aS^syC\x13\xc0\xfbg7\xfdУ\xeb%\x9d\xcd\xeb\x8e&\x1d\xe5\xbb\x0f\xded5\xaa\x84]\x85\x1aG\x8cq\x9c\xf7&OQ*;H\x19\x9c\xe0\x106\xaa\xfc\xc9\xc0\x86kc\x87K0К\\Z\x9fH>\xb7\xeeo\xbcF\xd5ڗD\xf0\xc7~\x9a\xd1Yo\xcd~\U0003ab41ժ\xf5\xc6\xdc\xf2\xba;U\r\xe8\xdd1n\xbbc#ʟX\xe5H\xd0\b\xb4\bkܤ\xcf[S\xadP\xd2\xf0\x12u\xac\x12\xf0d\xe3\xca\t\xe6\x86qѦNiR\xed\xd4\bT~\xd4\xfa\xac\x00\xf4\xab\x1f9\xc8\xfbUj7FP\xe6\xde\xe9 \v\x81o\x80[@Y8\x8c\xa3\xf6*\x99\xa6\b\xc8 \xd4\xf0\\=\x97\xa7\xc0]C\xd9\xd6y\bX\x91@r9\x9b\xf2\x1av\xffĸx\t\xb29\xce\xfb\xa4\xf4\x1d\xb2\xf2\x9c\x1c\xc9/\x83\xe1\x80Ҵ\x9a\x0e߽\xee\xd8q\x91\xb7fG9\x10\xac\x95E\x85\xa4\x84\xe4X7x\xf0\\\x1a\x8b,\x97\x17\x9cW\xd4J\xc9\xe56\x8fvىȾyT\xaf\x95\x12ȦO\x01\xfb\xe6p\xfd\n\x9a\xe8\x97~\x9a'j\xa2\x9e\b\xfeؚ\xe8\x90MQ\xa7\xb4\x80Y\xeb\xc2}\x129\x05\xba\x95C\xeb\xf2\x02\x8a\xe8\x94H:\xac\xe29Cd.y\x06mGt\xbd\x91\xdc\x0e\x9dG\a\xe2E\x9dG7A\xe7\x0e\x9c\x93\xe1\xba\x19\x01p\x02\x1a\xe3\x10Z{\xc75'8\x92k\x04V\x96X\xfaܡsEBX\xe2\v\xcf&\x8a\v\x92\xbb;\xdd\x13̢ll\xa3\xa0\x93\xf2\xa0\xfa\x11W\xad|\x90j'W\x14\x8c\x9b\x93uH\xae\xab\xf8\xcc\xd3۳\x95Ѳ~\xc9W\xd3KZh̯\xf9<\x15\xfd\xa7\x17\xd02\xd9|sR\xc2c\x8e\v\x96\xf4\x9a/\x80\x9e\xf8qq\x15s\xf3\xcf\f\x0e\x87\xc2\u05feX\xf9Iei7iP\x03\xa7pW\xa1\xadP\xc7\xd2\xe8\x15\x95\x84\x97\xb3'\x94}\xf0\xd2թ9\xa6\x8a.\xb2/\xbf<\xa8\\\xa3\xe8\xa6\x15\xe2\xc2\xf16kE2\x1c\xb6\x8aD옳\xb2\xea\xb7\xd2\x1eCN\xf5C6\x1e\x87\x95\x0e\xe3\xfa\xbe\xae\n!\x16\xf8\xa98s\xa0qj\xbfT\xd898_\x1f\x973P\xfe/.\xff7/\xfd˨T\xc8Gcn\x95d\x87\xc4\x04\xac\x04\x83\r\xd0\xd8\xd77\x84~\xa1\xd0\xf6\xf7\x85S\x8b\xf5\xd7&H̤\v\x9b\x81\xd6\x04\x9c\x83z\x0f\xb2\x06\xad\xf1\xae@g\aB\xceЍ\xffP\xf8[\b\x11L\x8a_\xbfU\x18\xc57T\xcfs\x03\x7f\x86J\xb5\x89\xaa\xba\x19\x94-TW,oxTh\x11\x0e\x14в\xc7\xf7\x97\xe3_\xac\ne\x17\x94EK\x00\xa2\xa0\xa8\xcf\xccrY\xf2G^\xb6LD\xa9\xedk\xf8=\x03\xf5|\x96\x80\xa64H.<\x03\xc6\xf1#\x86\x83\xaf\x8d?\x969Y\xc5\xcd\xfb\xa2y\xd5\x19g\xd7d\x8ck.&\xac\xe1\xa9\xc7\x17\xcfR\x85\xfa\x9b\xd4Z\x9c^a\x91\x13I,TS\x9cQC\x91Y\xac\xf5\xe4\xf3\x96\x9c*\x89Sb\xee\x17\xab\x88x\xfe:\x88,\xfc,\xd7<\x9c\x82\x9d\x17\xafoxŪ\x86שeȬ`x\xbeR\xc4\xe7\x88;\xa6\xeb\x11\x16\xab\x10\x9e\x14\x97d\xd4\x19\x9cR]\xb0\x88\xb1<\xd6\x7f\xb5\xfa\x81W\xab\x1ax\xddZ\x81Y\x96\x98\xfd\xf1\x94j\x80.v\xf9\x1bk\x1a.\xb7\xc7L\x91\xcb:\xb3l\xb3\xcc2_\x0e\x162\xe2\x99a\x88\xd1Gl\x13ᨿB\x9c\x88\xeeb*\x91K\xab.\xe1\x83\xdc\a\xb8\t8\x83\x90N*{t\xb9\xcb-kDž\x18\xde`\"\xb0\xf3\xa0\xc2=B\xc3j\xbf\xaa)\x0f\xa5\x88\xc7\xe1_T\x89\xb7Jۥ`\xe1\xf6\xb0\x7f\xe2\xb4q\x10@)Q\x82\x8c]\x13\xbb$\x97?\xb8\xfb\xe7m*}0\x18\xddۿ\xa9ҭm\xe9\x1c\xe2\xee\xa0\xfb\xd1}\xda\rj\x94\xfe)\x8a\xff\xbc\xff\xfa\xa5\x83\x9f\xf2A\x83\xa7z\xf0\x04\x82\xf7(ʀ\x9cp|\x15\n~<\xb6\xc8&?\xf3\xd9\x01k\xf8\x7f\xd0\xcbcOH\xcf|\xb8\xbd!\x18\xd1o\xa2\xa7̺J\x83\xeeTo\x8d\u0382t\xa8\x9a\x14\x8b\x9b\xcd\b\xe2\xb8*v\xf8\xd4\x0f\x96\xfeY\xa7h\xc1x\xac\x83r\x82w{\xe3\xd715\xcb'\xe7\xc4\xc9=(ϑ\x15\xd7\xe5\xaaa\xda\xee\x89m\xcc\xc5h\r\xd1b̥W&\x15\xeb\xf1SUI\xf4\xc6\x17\xaa\xe8\xbcnߌOD\x0fqw\xce:\xa6\xefh,\xde\xcex\xc6uL\x1b\xdf\x15a*\xf19Y\x84\xf1li\xab\xa0\x89n\xbf\x9f\x95\x06\xb9\xebF\xcf\xeb9\x17\xd5\xc6\xd4O\x02\x8c\x1bO\xaa\xceH֘*\xf1,\xd0\xd3t\x1d\xbd\x98e\x99m\x9f\xb2I\x0f`\xb4O^T\x03m\xb5è\xcf\xe2\xb6IZiXJ\xb7;\xdb\xeckC\xb8\xb8\x18D\xee\xafsl\x9a\xf9\xe4\xc8ُ\x8dx\xf4L\xa8\x1f\xcaF9\xd5v\x8c\xa93\x0eL\x17]\xbb\x8cB\xdcy\x7f4\xf3\xa9\x8a<\x83q\xc6\xf3\x14\x84\xaf\\\\A\xf2Պ̗)~SD\xcfh5STX\xb6\x02\xcf}\x97\xee~0~\xf9e\xba8[\xc6\xdbt\x0e\xd9\x03\x03\xed|\xe6\xf1\x1bx\x81\x12\x01\xf2\x90\x92S\x0e\x1f\x05\a\xfe\t\xac¿\x96X\x14h̦\x15\xb1\x92\xa7\xd0\xc8,\x96\xb1;7݊O\xaaEi\x1b\xa1X\x89\xfaZ\xc9\rO\x9cX\x8c\xd0\xfa_\xa3\xce\a<[\xd0\xc7V\xf7\xcf\x0f\xce>\xdd\xf6$\xcd\xd50̈́@\xf1\x89\v4?\xab\x9dt\xeb\xca\x10\xc8\xdbԸ\xc1ݥ\xa2\xd5ά\xefA\xb6\xf5\xda9\xb9h\xedt\xb0\xb8Qz\xbe\x8a\xd8\xe3\x9dK\x8b[L\x85\xca;\xcd-\xde7L\x1b\xa4\x15e\xec\xe0\x97\x83!>\xfa\xdc\b\xb6\xf5\xe5b%/\x98\xc5\xce\x00\xd3\fS˧\xf1\x86`\x89=U降$T\xb6PO][\x98\x14\xeb\xa9'0\x13\xa6:\xf9\b\xa6\xb7\xc8\x05k,]\x12!:\x12\x11m\x80A\x0f\xcb\x1e\xbc\x839\x02;\xcdi\xa1\xd47\x14\x95\x19\xcb\xeaD\x94\xb0\xacw\xae\x8f\xc1\xd0ӵ\xba\x1cԦ\r\x1f\x01\xec\x8a\xd0`\xc7LWp\x9c\xf4\xbd{\xd8\x1e\f\xb9\xea\x0e4\x96\x80\x8f(\xc1\x89\"\xe3\x02\xcb9N\xfdF\x89]\xfd\x88\xfa'\xd3\xc1\xa1j9\xc7\xe2\xf7\x96i\xdb-\xfd؏\xd9(]3{\x05%\xb3\xb8r\xa3\xcfs\xdd\xd2Oyj}\xe6\xf1\x1c\xdd\xfe\n\xe2Qī)\xce\xfa\xf9;[5\x1aö1\bݡFآtx\xefr}I\x8f)^{\vƢ+\xbft(d\x85mY\x98\xc0\xbbp\xddif|C\x97\xa2\xd8\xed\xa4\x8aN\xab\x8ap\xc1\xee\x0e\x999|\x92\xf9\b\x17\x9f\x86}C\xd2\xd6\xef؟U0_\x04I\x8f\xf2Z\xdeE\xd6)\x99\xb6\x8af>ɜTJ=d\xb9ٟ\xbb\x8e}:\x89K\xcfJt\xadp\xadZ;\xf0s\x02\xc2\x13ˤ'*\x9fپ\x10\xcc\x0f\xfe\x92\xd1T\x9a4\xcf\xd3\xfb<\x82ԅ\xb7\xca2\x11\x8d\x8c\xe3ˮC5s\xc9\xfe>>\xf0+\xc4\xfe\xe2\x10\xf2\xc1\xcb\xe1=\xec\xaa\x7fn2h\x82\xfe\x8a\xf5TZ5d\xfd\x92@\xba\x97*{\x9fd\xea]\xc0%\xfbGP?Ѣ2p\xfc\xb9\xef=\x85G\xbfL\xef0\xa3LG\x9a@\xc1\x87\xad:\xc98c\xe93^jS1\xb3\xe4\x9e\u07ba>\x9d\xdb10W\x9d\x13z7!\x95黠+\xf8\x82\xbb\xc4W\x8f,:\x8d\"\xa9Jt\xb9\x91\xb7Zm5\x9ac\xa6[ѝ?.\xb7\x9f\x94\xbe\x15\xed\x96˯\xd3\xd5\xd1s\x9do\x99\xb6\xdc1\xad_Ob\xecu\xb4q\x89ߖGO\xff\xc0%\x13\xfc\x1f)]>\xfcqi\x86\x19}\xd7\x04\xe4\x9dc\xa1\"\xe2\x97\x14`\xd0\xd0?\x99\x81\xf9\x89\xf3^\xc2\x17\x95\x14\xe3p`\xcb\xc7@\xb9\x815\x1a\xbb\xc2\xcdFi\xeb\xf3\xf7\xab\x15\xf0Mt\x90\x9c\x86\xa08ѿ\xb8\x0e<\x95x\xef\x8e¢ò\t\xa9DMV\x87BΚ\xed}F\x92\x15\x85\x8b\t\xf0\x9d\xb1,\x15\x9b\x9e\x1d\xbb~?\x80qpM\xd0E\xb1\xfd41\xde\xfcg\xbeIɋ\xff\x1f\x84\xd6\x02\xff\xe5\xe8\xd7W\xbe\xee\xb7cZr\xb9=\v#\xbf\x84\xb1\x89x>\x80}Ɉ>\xae\xfc\xd9b\xfa\xa4Y:\xfaH\f^\x0e\xf0\x1cf\n_\xfe/\x00\x00\xff\xff\xe5\x9d;'\xe7k\x00\x00"), + []byte("\x1f\x8b\b\x00\x00\x00\x00\x00\x00\xff\xec=]s\x1c)\x92\xef\xfa\x15\x84\xeea?B\xdd\x1e\xc7\xedÅ\xde|\xb2\xe7\xae\xe3\xfe\x87Y\n\xf5f\xf7\xf6\xe2Q\xc8\xfc\x9a\xdd\xd4ƪ\xf23\x18U\xeb\f\xde\xc3FHa\x85\x92\x17%X\x9es˯/\x18\xe3R*\xcb\xf1\xb3\xc1?\x19˔\xb4Z\x15\x05\xe8\xc5\x03\xc8\xe5c\xbd\x86u-\x8a\x1c4\x01\x0f]\xef~X\xbe\xfd\xcb\xf2\x87\v\xc6$/ᚙl\vy]\x80Y\xee\xa0\x00\xad\x96B]\x98\n2\x04\xfa\xa0U]]\xb3\xf6\a\xd7\xc8w落\xf3\xed\xe9S!\x8c\xfd\x9f\xde\xe7\x8f\xc2X\xfa\xa9*j͋N\x7f\xf4\xd5\b\xf9P\x17\\\xb7\xdf/\x183\x99\xaa\xe0\x9a\xfd\x8c]U<\x83\xfc\x821\x8f?u\xbd`<ω\"\xbc\xb8\xd5BZ\xd07\xaa\xa8\xcb@\x89\x05\xcb\xc1dZT\x96F|g\xb9\xad\rS\x1bf\xb7\xd0\xed\a˯F\xc9[n\xb7\xd7li\xa8\u07b2\xdar\x13~u$r\x00\xfc'\xbbG܌\xd5B>\x8c\xf5\xf6\x8e\xddh%\x19|\xad4\x18D\x99\xe5\xc4@\xf9\xc0\x9e\xb6 \x99ULגP\xf9O\x9e=\xd6\xd5\b\"\x15d\xcb\x01\x9e\x1e\x93\xfe\xc7)\\\xee\xb7\xc0\nn,\xb3\xa2\x04\xc6}\x87\xec\x89\x1b\xc2a\xa34\xb3[a\xa6i\x82@z\xd8:t>\x0e?;\x84rn\xc1\xa3\xd3\x01\x15\x84w\x99i \xb9\xbd\x17%\x18\xcb\xcb>\xccw\x0f\x90\x00\x8cHT\xf1ڐp\xb4\xado\xbb\x9f\x1c\x80\xb5R\x05py\xd1Vڽu\xb2\x97m\xa1\xe4\u05fe\xb2\xaa@\xbe\xbb]}\xf9\xf7\xbb\xdeg֧\xe8\xff-\x9a\xef\xac\xe1\x06\x13\x86q\xf6\x85f\t\xd3~\xda2\xbb\xe5\x96i@1\x00i\xb1F\xa5a\x11H\x9d3\xa5;\xa0*\xd0B\xe5\"\v,\xa2\xc6f\xab\xea\"gk@n-\x9bڕV\x15h+\xc2Y-;\xf0\xa8\x81\x19\xe2\xf1\x93\xd2\xc0\x84ܨk\xb6\xb5\xb62\xd7o\xde<\b\x1b\x94n\xa6ʲ\x96\xc2\xeeߐ\xfe\x14\xeb\xda*m\xde䰃\xe2\x8d\x11\x0f\v\xae\xb3\xad\xb0\x90\xd9Z\xc3\x1b^\x89\x05\rD\x92\xe2]\x96\xf9\xbf\x05~\x9b^\xb7\a3\xd3\x15R\x993\u0603\xba\xd4I\x97\x03\xe5\x86\xd8r\x01?!\xe9>\x7f\xb8\xbb\xefJ\x9e0\x9e)\x1d\x01\x8c\xf1\a\xa9)\xe4\x06\xbc.\xd8hU\x12L\x90y\xa5\x84\xb4\xf4GV\b\x90\x96\x99z]\n\x8bb\xf0[\r\xc6\"\xeb\x86`o\xc80\xa1\xd0\xd6\x15\xce\xdd|Xa%\xd9\r/\xa1\xb8\xe1\x06^\x99W\xc8\x15\xb3@&$q\xabkn\x87\x95\x1dy;?\x04\x9b\x19am\xd0\x15w\x15d\xbd\xa9\x86\xed\xc4FdnB\xa1JnT\xc9@-\xbb2>\xfb\xe9\x17\xd2}ï\x03<\x9c\x82\f\xbd\x82A\xa3d\xb7\xc4\xfc\xd66\xa2\xc89hLi&\x95=\x80y\xa8Z;\x94\xf0P&09\x10vv\xa0RS,\xe9\b\x90ֶ\x0e\xe5+\xcaj\xc2\xfbQT\xab\xb2\x84\\p\v\xc5\xfe$\xf4\xfb \xc6Ȭ\xa8\x1f\xb6vz^lzD\xcfk`\xa2Ӟ&\xe3_C\x8dCk\xfcW\xb2\xecdD\x1dM\xba\xc0j\xd9\xf2pЏ\x84\xa7C\xd20\xb6\xda0\xabQ\xe7z\xec\x9eDQ\xe0LF\x8c+\xc8{\xa8Ż\x13\x1b&l\x18͚\x13\x06\x92-\x9d\x17\xb5l}\x86\xc6\xfe#\x82\x03\xecH\xed\xbb\xfe\xd1S\xe1\x96I\xf8j\xdbZ8\xec\xc8\b6\xbc0\x83!x\x854k\x18Wl]\xdb\xd30\x80\xb2\xb2\xfb+\xd7v\xa3\x8aB=1C\xca\x16\x8d\xe0F<\xd4\xdaM\xf6?\xe6\xb0\xe1ua\xaf\x1d\xce\x7f\x8aI\xeb\xf84\xb3PVh2O\x91\xd3{\xdf\x16\a\x8c\xb3%ob\x8c\xe0&\a?Dy\xf7c\x04\x88r^l\xa5\xd5N\xe4ޜ\x1f\xa8+vTeaɌ\xb8\x93\xbc2[eQ\"Tm\xc7j\xa5\x8c\n\xcb\xcd\xddj\x00\xad3\t\x11]r\x85IN\xadbO\\Xҹ7w+\xf6\x05c\b\b\xad\x99\x9bl\xcc\xd6Z\xa2\x9d\x8b\xf4\xf7\x19x\xbe\xbfW\xbf\x18`yM&:\xb8\xb7Wl\r\x1b\xb4g\x1a\x10\x06\xfe\x04Z\xa3~7\x84\x84\xaa\x0f\\\xa6\x86=\x8e%(\x1b\xde\xe2\v\xc3\xde\xfe\xc0J!k;*uG\x15\x1bQ\x8f[^\xaa\x1d\xe8\xe7\x10\xf7=\xb7\xfc'\x042\xa0)\x02g\x04\xdd\v\f\xd1w\xbd\xa7\x1f\xd7\x11M\xec\xcajӁ*\f\xbb\xbcDmp\xe9B\xce\xcb+\a\xa1\x16\x85]\b\xd9\xed'\xa8&\xec\xe94\x828\xfa:\xa6\x9b{\xf5\xa3q\"\xff,\xfaD`\x8e\u0601J\xe5lG\xf5\xd8F\x14\xc0\xcc\xdeX(\x83\xd6j=\xffN83,\xe4+\x14\x85\ac\x90\xde~P\xe3\x04\x91uQ\xf0u\x01פ\xe4\x8f\xd0l\\ߌ\x11\xed3\x18+\xb2s\x92\xccA\x1c!\x98\xf6?\xf4(C\xa1\x03\x7f\x04\xc6#\xe0==1N)\x8a\x0e\xd1\xfbԺ\x88\"Wi\xc8Љ\xbd\xf6α\x80\x82\x1cr\xa9X\xa1\xe4\x03h\x87Fc\xacPY\x02Jh\xce\xd0\xef\xd4hb\x84d\x9b\x1a]\xd2%C5\x11\x15\x12!\x8d\x05\x1e\x91\xe630\x0f\xbefE\x9dC~S\xd4Ƃ\xbe\xcbT\x05yXe\x1aUͩL\xfcp\x14\xb2\x0f`\n\x91\x012\"s\x95\x16\xb4\xca\x13\x93\xed6\x96\xd9W\xe0\x16\x9d\x90\xd7~\bm\x902\xa9\\\fXlx\xf9\xe7\xcb+\x12\x81~\xef\xfd~\f\xe3\x1a\x1a2\xcdR\xced\xf2\xc7[\b\ve\x84\xba\x93Jj\x06߹\xd6|\x7f\x84\xeb\xcdj\xda\v\xf0=\x06{\xc0y\x19\xaa}#\xde\x0f\xfb\xffW\xe4\xfey\xf9mhՙ\v\x89|.\x84\xb1=6\x1b\xb7\x8c\x85d\x1d\x8b!=\x81\xa4\x83\x89jr\x8a\xab\xff \xc4<\xeb܉M\x96F6\xfd\x04\xf8\xa7\xa2\xe4V\xa9\xc7\x14\xea\xfd7\xd6kװXF;#l\r[\xbe\x13J\x9b\xe1:)|\x85\xac\xb6Q\xcd\xc2-\xcb\xc5f\x03\x1aa\xd1:\x7f\xb3-p\x8cX\xc7\xe3\x17\xd6QY\xd1\n\x83q\xb5LG\x96\x125bC\xa1\b5\n\xd5y8\x18[\x90\x03\x91\x8b\x9d\xc8k^\x90/\xc1e\xe6\xc6\xc7\x1b\xfcbZmB \x0e\xf0\x8fJ\xb5+Ρ\t\x83D&\xf6\x96\xbd\x94\x04t\xf2K\f\x8e\x0e\xab\xc6)\x11\xd6\x12\x8e\xf6\x8d\xcc\xd4u\x01\xc6w\x97\x93\x9f\xdc꤫\x96Yn\x91\xa1\xe0k(\x98\x81\x022\xabt\x9cB)r\xe0J\xaaҍ\x10wD\xcb\xf6ív0\x13`\x19Ÿ[\x91m\x9d\xfb\x8a\x82F\xb0X\xae\xc0в\b\xaf\xaa\"b\xba\xda2)\x1c\xbe\xb3)\xbdі\x04\r2\x84\x1b\xd3%mI\xd4\xcfm\x19%{;7\xfbT\x1f_\xe8\x1f\xc5\xf7_\x89\xe8\xc1\xea\x9c(\xec\x13\x9a\x84цA\xf2|\x88\x92\x1e).\xc0,;\xcbs\u0086\xaf)\f\xed\xf9\x8f\a{)\aD\xf9}\xf1\xee\xb4\t3\x83u\x93s\xeae\x19\xd7t\xf3O\xc272Yw\xdeb\xcd\xe2\xd9\xc7n\xcb+\xda\x16\xf0\fɯ\xd8F\x14\x16ȩ\x9aB\x94\xcd\xe0\xdc9\t\x94j\x81\x19\xed\x12\xdbl\xfb\xa1\xd9cyN\x9c\x1bH\xba\xe5;\xf0)\xa3 3UKZ\x82B=\x80\xdd̀\xe8X\xe3\xac@\xa2\xbd\xeb4\x96u\x99N\x90\x05I\x92\x90\x93\xebU\xdd&?r\x91\xb6^\xc4Nc\xab=\x96<9VN\x9fG!\xb3\xb2\x9b\xc7^\U000af8acK\xc6K\xe4!\xb9\x1d\xa2\x84&\x95ݱ\xbbɷ\xc4\x16d\xb4\xac\xc2YV\x15`\xc1\xe7K\xce\xc0#S҈\x1c\x1a\xd3\xefE@I\xc6ن\x8b\xa2\xd63\xb4\xeal\x92ύ\xa1\xbc69\x7f`\x94\x8eȂH\x94\xb8\xbe=\xc3\v\x9e\xd6\xf8\x95\x9e\xe7Ǧ8\x8c\x1a\xe6\xfb\x8b\x95\x16\xcae\xe1\x9f\xdfe\xf4\xf9\xbe\\\xee\xbf\xfb\x8c\xdf}\xc6\xef>㜎\xbe\xfb\x8c\x13\xe5\xbb\xcf\xf8\xddg<^\xbe\xfb\x8c)\xe5\xbb\xcf8\x13\x91o\xe53\xa6`\xb8\xa05\xce#\x15\x92\xb0JLA\x98B{\xa2/\x9fl\xe3\xcfH\x9c%\x87x5\x0er\xe4\xf4L\xe4\xd8C\xcc\xebh\x8dW\x93T\x8c30\xcc\x1dw|1\xc1a>é\x95\x80\xc0\xf9O\xad\xac\x8eB>\xe3\xa9\x15?\x84\xb4\b\xe3\xa43+\x81H\xf3O-\\\xf9\xe4\x9d\x12x\xd8Jqi\x17\xb11\xc6$)\x01\x8fo\x9ct~\x90\xa9\xf8\x02\xb2\xf4*'af\xc9\xd3(\xeb/\xff|\xf9\xfb`\xd1y\x99\x12e\xc3!m\x9d\x1a\x8f\xe9G\x8c\xe5\xbb)\x89\xfd\xec\xd0\xdf\xcfT8\xab짞di\x88\x1c\x81\xd7\x17\xeb\x01\x95\x7fO\xfa\xc6B\xf9\xa9\xf2\xd6\xf2\fG\xdbW#\xf0\x92\x0e\xb7s\xb3\x97\xd9V+\xa9j\xe3ׄ\x10ֻ\xcc\x1d\xf8\x0f c\xc2>\xaaA\xfe¶\xaa\x8e\x9c\x96\x98 mB\xf6j\x1aAzɬ>1\x02,߽]\xf6\x7f\xb1ʧ\xb6\xb2'a\xb7\x11`t\x11\x04\xcfs\x8c\v:\ai\xbc\x1e\bw\x14\r\x852\x02Li&E\xe1$6@\xe8\xc9+\xfbT\xb9\xd5\xc1\x93\xfd\xa6\xe95\xac\xf4\x04عi\xafM\x96\xe2\xb4\xfb\xfe\x8cd׳\x1eI\xfaf鬧%\xb1\xa6\xaeP&$\xac\xa6\xa7\xa9\xa6\xb0Օ\xf4\xe4\xd4\xe4\b95\x11u\xee\nċ&\x9d\xbeL\xaai2\xcd\xd2\xd2J\xe7R\xecURH_9q\xf4\xf5\xd2Eg$\x89\x9e\xff\xb4\xc99WV\x8e\xa7|&%z&\xad\xbeL㜔\xca97\x813\x89\xaa\xe9S\xe7US4_51\xf3\xf5\xd31'\xc5f\xb2\xc2܄\xcb\xf1\x9b\xfeB\x996\xc6ŷ\x10\xce\xe7\x92I鞛\xfc\xac\x18\xf0\xd3\x00\x16\nKp\x19_\xd1'/\xeb\u008a\xaah/%\x8b\x05\x7f[\xd87\x17\xf6\xfc\xaa蘸\xbf\xae\xea\xd3\xe7F◃\b\x83\x1b\xf6\x04E\xc1xln\x1eP!s\x97afj\x01h\xa7p\x96\xfb\x1b\x89\xfc\r\x9aWn\xbaЉx\xb2velٍ\xcb\xe3\xd7]\x1d5&\xa9z\xec\xc0Kv\xbe?}\xfb\xad\x06\xbdgt\xf9V\xe3'\xb5\a+\xfdD7\x18$\x06\xf5\xe3\xd5\xe1\xb1\xfd\x8b\x83`\xa3U\x0f\xec\x9dt\xd6y\x88\x13\xb5A\xbd\xd3\x06W\xa8T1f\x8a\xf6\x13\x01!U\x03!\xd24\xc5\x11\x9fs\xd2\xf0%B\xads\x04[I\xde\xc8gX\xfdzw\xbb\"XA\x8c\xe8\xe1\xa0&i\xafa\xf9\x1a\xd0t\xb7c?\xa6OV\x9b\x1e\xd4~\xdel\xf7\xe5\x04\xc8\xdd3\x19\xc1}\xf0\xaa9S\xa8\xb5nW\x0e\x97c=\xa1|q\xb9gʿ\x83 t\xbe\xa8\xb8\xb6{\x97`s\xd5\xc3#\x98\xe7\xa9ի\xa3\xd6\xea\xf0\x19\x90n\xe9\x91=\xbc\x00B\xbb\xbb\xfb\xaa\xbf\xa1>\xa4\xe7sp:~\xd2x\xf2\x8c\xf1\v\xe0t\xdc\x13Z\x10\x15#?E\xb3\x02Ͼrh\xfcu\xf1?\xa9\x1d\xbc\x8f\xae \xf6\x9f\x02\x194\x19I\xd7\vP\xe9\xc6\xf3\b\x05\xdb\x1c=\xbao\xfayj/\x9e\x7f\x17P\xf1\xf7U?g\x91\xf0\xae\x0fj\xfcu\f\xba\xce;t\x1a\xf3\xaa\xe8ݡ=\xbb\xfdB\xf1c\xa3J\xfd\xd4\xf7\xf1cX&\f\x9b\xee\x11XB\x1e}0\xe4\\d\xb4J\xf3\a\xf8\xa8\xdcC/)b\xd2o\xd1{\x06\xc8{n!\x87\xd9O\u0098\xa2\xf7c\x1b\x02l\xcf,\x1c\xdc:\x8f؞x\xaf\xbe\xb5\xc5sd\xe4\xfe\xfe\xa3\x1b)\xbd\xaf\xf1\xde?\x95\x81\xfa\xd8\x00\xb2 P\xc0A[\xe3\x7f\xb7\xea\x89.c\x8f\xaf\xf5\x86\xd7,:\x0fj\x01\x1d\x9e\xa0\xb4֓\x86YW\x85\xe29\xe8\x1bz\xd1#aĿ\xf4\x1a\f܁\xfe\xbb \xdenF\xc6\x13z~\xc1\xcc\x11\xf4\xe8\x8a\x02\x8a\x1fE\x01\xc6!\x9eh\x1an\x0f[6\x96\xa2.\xd7\xceS\xdd\xe0\x8fM'G,\xb3\x1b*-\xf4W\xa0\xd1Ot[\x02\xb5\t\x92\x7f\x9c\x18\xacᣐ\x16\x1e`<\x14\x9e\xb0\t\xbb\u07b3 a\xf6\xa4(\xc2/\xe3-;\xcetg\x1e\x93\xf7\x1bWw1X\xdc\x18\x95\t\U000bf7c4\xf5\x97\xf0\xbd\xdc\xcd\xcf\xc7B\xa9#t\xac\r|z\x92\xa0?\a]mV2\xf6\xdcƴ\x9e\xf8\xe5\x00Z\xf4\x99\r\xab\xb0\xef\x11\x18\x03\x00L\x85\x9d\x19\xe3\x1ep\t\x1bB\xc24oR\x1d\xd2sb\xb2\xc5m¸k\xb3\x18\x7fBg\xd1<\xf5s\x91@n\xf7lM\x1f\xf0\xf8Kd\xee}\x9b\x8cW\xb6\xd6A\x0f՚\xee\xc6F எ>\xed-\xb2\xf6\x89\xaaS\x18ܾ\x11ծ\x98O\xbeb9\x02\xa7yM,\xfa4\x91\x8b=\xdd+\x93\v\x84\x7f\x1a\x8fGg\f\xe2|瞜\x9a \xc2Ƕ\xe6\u0600\x9ba\xe0\x90\xfd#V\xaf:\x12\xba*}b\f\xb7X\xa79#\xe9\xe5\x88\x1a\x86+\xd6\xefbL\x18?H\xb7`?\xc3al\xbb`\x1f$\x0e\xe2\x90\x00\xee\xb4\x1c\xe4\xb4\x19@\xdaq\xce\x10wM+:\xaa8\xa2!\xa7\xc5\xf6\xcb\x00\xc6 \x0f\x9a\xde\xeai\xaa\xb8\xb3\x8a\x86\xfdQ\x8c\xf9m\xb4Ǔ\xe1@\xfft\xf0kT\x83\x1f\xd5\xde1\xcd=\xaaF\x0e>\xd2\xfbeyGr\xbc?\xdb\xfdR\xaf\xdbk\xf0\xd9\xdf\xfe~\xf1\xff\x01\x00\x00\xff\xff\xba:\x16j\xf5x\x00\x00"), + []byte("\x1f\x8b\b\x00\x00\x00\x00\x00\x00\xff\xbcV\xcfo\xeb6\f\xbe\xe7\xaf \xb0\xeb\xec\xbcb;\f\xb9\r\xdd\x0eŶ\x87\xa2y\xe8]\x91\x99\x84\xab,y$\x95.\xc3\xfe\xf8A\x92ݦ\xb6\xb2\xf6\xed0\xdd,\x89\x1f?~\xfc!7M\xb32\x03=\"\v\x05\xbf\x013\x10\xfe\xa9\xe8ӗ\xb4O?HKa}\xbaY=\x91\xef6p\x1bEC\xff\x80\x12\"[\xfc\t\xf7\xe4I)\xf8U\x8fj:\xa3f\xb3\x020\xde\a5i[\xd2'\x80\r^98\x87\xdc\x1cзOq\x87\xbbH\xaeC\xce\xe0\x93\xebӧ\xf6\xe6\xfb\xf6\xd3\n\xc0\x9b\x1e7 \xc8\xe9L\x8dFa\xfc#\xa2\xa8\xb4'tȡ\xa5\xb0\x92\x01m\xc2?p\x88\xc3\x06^\x0f\x8a\xfd\xe8\xbb\xf0\xdef\xa8m\x86z(P\xf9ԑ\xe8/\xd7n\xfcJ\xe3\xad\xc1E6\xaeN(_\x90c`\xfd\xfc\xea\xb4\x01\x11.'\xe4\x0f\xd1\x19\xae\x1a\xaf\x00Ć\x017\x90m\ac\xb1[\x01\x8c\x82d\xacf\xd4\xe2tS\xe0\xec\x11{S\x9c\x00\x84\x01\xfd\x8f\xf7w\x8f\xdfm\xdfl\x03t(\x96i\xd0,\xeb\xdf\xcd\xcb>\xd4\xc2\x04\x1200R\x02\r`\xacE\x11\xb0\x91\x19\xbdB\xa1\f\xe4\xf7\x81\xfb\x9cV0\xbb\x10\xf5\x02U\x8f\b\x8fY\xff1\xcc\xf6\xe5p\xe00 +MҔuQq\x17\xbb\xffF<\xad\x14k\xb1\x82.\x95\x1eJ\xf6<\xea\x85\xdd(\x0f\x84=\xe8\x91\x04\x18\aFA_\x8a1m\x1b\x0fa\xf7;Zmg\xd0E\x17I\x99\x8c\xaeK\x15{BV`\xb4\xe1\xe0\xe9\xaf\x17lI\x02%\xa7\xceh\xd6\xce+\xb27\x0eN\xc6E\xfc\x16\x8c\xeffȽ9\x03c\xf2\t\xd1_\xe0e\x03\x99\xf3\xf8-0f\xa97pT\x1dd\xb3^\x1fH\xa7>\xb4\xa1\xef\xa3'=\xafsK\xd1.j`YwxB\xb7\x16:4\x86\xed\x91\x14\xadFƵ\x19\xa8Ɂ\xf8܋m\xdf}\xc3c\xe7\xca\x1b\xb7zN5(\xca\xe4\x0f\x17\a\xb9u\xbe\"=\xa9\x91J1\x15\xa8\x12\xe2k\x16\xd2V\x92\xee\xe1\xe7\xed\x17\x98\x98\x94L\x95\xa4\xbc^]\xe82\xe5'\xa9I~\x8f\\\xec\xf6\x1c\xfa\x8c\x89\xbe\x1b\x02y\xcd\x1f\xd6Q.ܸ\xebIe*픺9\xecm\x9eU\xb0C\x88Cg\x14\xbb\xf9\x85;\x0f\xb7\xa6Gwk\x04\xff\xe7\\\xa5\xacH\x93\x92\xf0\xa1l]N\xe0\xf9\xe5\"\xef\xc5\xc14;\xaf\xa4\xb62%\xb6\x03ڔܤo\xb2\xa6=\xd9\xd2V\xfb\xc0`j&퇘d\x8b\xaf\xe42N\xa4\xc2f6\xa7R\x97\xbfϦ>\x96\xf2\xc9\xd1\b\xce7g\x9c\xeeӝ\xb9\x7fG{\xb4g\xeb\xb0@\x94)\x84\xefSI\v}\xec\x97>\x1b\xf8\x8cϕ\xdd{\x0eiB\xe3|\xd4\\\xad\r(\x8f\u0601\xfc\"\xdcyd\xe5V~\x18\x97#?\a4\x02\x01G\xefSK\a\xbf\x80\xac\xbc\b\x8b;\xa4\xd8W\xd8T\xf9\xdc\xf9}\xc8\x7f\x11&96Z\xda\t\xc7d\x8f~\n\xaf\n\xe0\xf5\\\x97\xb5\x9cs\x1f\x12\xb4\xac\xfc<\xff7\xe34\x97\x88\xb1\xea\xbbɬ\xaa\a\xc9cM\xf1z\x7f\x8d,\xa3sf\xe7p\x03\xcaqi]l\r\xb39ϫf*\xb5/ԣ\xa8\xe9\x87w\nh\xf1*\xa4u\xbf@I\xcd\xf3|D\x7f\xadE\xe0\xd9ȫ\xf3\n\xe4\xee|\xcd\xf4\xf6\xe5os\xd9g\xa5\x9e7\x90f}\xa3T\x11\xf2CJUSZ\xea\xbc\xfa[\xb3Pi{yw\x1a$o\xfae\xfa\xabY\xc6p\x95B\xb5\x02\x16\x9b\x19\xbe\xbb\bO4\xb09L\x01\xff\x13\x00\x00\xff\xff\xd9Ո\xaf\x10\f\x00\x00"), + []byte("\x1f\x8b\b\x00\x00\x00\x00\x00\x00\xff\xbcVM\x8f\xdb6\x10\xbd\xfbW\f\x90kd'h\x0f\x85/E\xb0\xe9!h\xd2,\xe2t\xef\xb48\xb2\xa6K\x91\xeap\xa8\x8d\x8b\xfe\xf8bHi\xd7+\xcb\xd9ݢ\xa8.\x86\xc9ᛏ7\xf3Ȫ\xaaV\xa6\xa7\x1b\xe4H\xc1o\xc1\xf4\x84\xdf\x04\xbd\xfe\x8b\xeb۟\xe2\x9a\xc2fx\xbb\xba%o\xb7p\x95\xa2\x84\xee\vƐ\xb8\xc6\xf7ؐ'\xa1\xe0W\x1d\x8a\xb1F\xccv\x05`\xbc\x0fbt9\xea_\x80:x\xe1\xe0\x1cru@\xbf\xbeM{\xdc'r\x169\x83O\xae\x877\xeb\xb7?\xae߬\x00\xbc\xe9p\vCp\xa9\xc3\xe8M\x1f\xdb .\xd4\x05s=\xa0C\x0ek\n\xab\xd8c\xad.\x0e\x1cR\xbf\x85\x87\x8d\x021\xba/\xa1\xdfd\xb4݈\xf6qD\xcb\x06\x8e\xa2\xfc\xfa\x1d\xa3\x8f\x14%\x1b\xf6.\xb1q\x17#\xcb6\xb1\r,\xbf=x\xaf`\x88\xae\xec\x90?$g\xf8\xd2\xf9\x15@\xacC\x8f[\xc8\xc7{S\xa3]\x01\x8c\xf5\xc9p\xd5T\x9a\xb7\x05\xb1n\xb13\xc5\x0f@\xe8ѿ\xbb\xfep\xf3\xc3\xee\xd12\x80\xc5X3\xf5\x92\xab\xbc\x9c\"P\x04\x03S$p\xd7\"#\xdc\xe4zB\x94\xc0\x18Ǡ\xefA\x01\xa6\xf8\xe3\xfa~\xb1\xe7\xd0#\vMɗ錄NVgq\xfd]=\xda\x03\xd0T\xca)\xb0\xdah\x18AZ\x9cʁv\xcc\x1eB\x03\xd2R\x04ƞ1\xa2/\xad\xa7\xcb\xc6C\xd8\xff\x81\xb5\xacg\xd0;d\x85Q\xae\x92\xb3ڟ\x03\xb2\x00c\x1d\x0e\x9e\xfe\xbaǎ !;uF0\n\x90\x17do\x1c\f\xc6%|\r\xc6\xdb\x19rg\x8e\xc0\xa8>!\xf9\x13\xbc| \xce\xe3\xf8\x14\x18\x81|\x13\xb6Њ\xf4q\xbb\xd9\x1cH\xa6\xa9\xabC\xd7%Or\xdc\xe4\x01\xa2}\x92\xc0qcq@\xb7\x89t\xa8\f\xd7-\t֒\x187\xa6\xa7*'\xe2˔t\xf6\x15\x8fs\x1a\x1f\xb9\x95\xa3\xb6X\x14&\x7f8\xd9\xc8S\xf2\x02zt`J\xd7\x14\xa8\x92\xe2\x03\v\xba\xa4\xa5\xfb\xf2\xcb\xee+L\x91\x14\xa6\n)\x0f\xa6gu\x99\xf8\xd1j\x92o\x90˹\x86C\x971\xd1\xdb>\x90\x97\xfc\xa7v\x84^ \xa6}G\xa2m\xf0g\xc2(J\xdd\x1c\xf6*+\x13\xec\x11Ro\x8d\xa0\x9d\x1b|\xf0pe:tW&\xe2\xff̕\xb2\x12+%\xe1Yl\x9d\xea\xedܸ\x94\xf7tPG\x99\xbc@\xed\xb2\"\xecz\xac\x1f\r\x9e\xa2PC\xa3B4\x81g\x052\x93^,\xe3=\xae\xe7\xb2P@\xb9,\x1a:\xccW\x01\x8c\xb5\xf9\xaa1\xee\xfa\xe2\xd9\xef\x14l!\xef\xab\xecI{\xb8\t\xac\x11\rd\x91\xab)\xcf1\x92\xc4c\u0084Ξu\xeaŚ\xe7T\x18\xadRl\xdcy\xa0\x8f#\xb97\xccw\xa5!_J\xfe\x00\x90;\x8f\xbbQ\xab\xbd\xa0\xb78מ\x1cM\xc8\xed\x1d\xd1\xc2\x1dI[\xe6Ɲ^v\xcfcA\xbf[<.-\xcfb\xffڢZ\x16\x19F\x88X3\x8a\xc6\x11\xd1\xe9\x94\xebЮ\x01>\xa5\x98'\xcf,\"\x82\xaa\a\xd9\xe9\xf4-\x1e\xcf\v\rO\x91;\xbe\x1b\x9e\x0e\xf9L˦O\xef\xdd)\x11\xc6\x06\x19\xfd\xd9\xdd1}\vz\xa0\x0f\x1b\xf6(\x98%\xc1\x86:\xaa\x1a\xd4\xd8K܄\x01y \xbc\xdb\xdc\x05\xbe%\x7f\xa8\x94\x9e\xaa\xb4M\xdc\xe4\xd7\xca\xe6U\xfe\xb9\xe0\xef\xeb\xe7\xf7\x9f\xb7\xf0\xceZ\b\xd2\"+\xc7MrS[\x9eܱ\xaf\xb3\x94\xbf\x86D\xf6\xe7\x7fS\xc4З1{F!wyT\x8e\xfa\\\xc81i\xddv\x85\xc2\xc0\xa0j\xac\x9dэ\xd4\x171Y\xea\xda)\xa6}\b\x0e\xcdy\x9f\xaa\xa6\x13\xa3=\x0f\xa9R\x0f/\x99I\x80o\xd5\x03OUg\xfa\xaaX\x1b\t\x1d\xd53\xebI\x14\x9e\x98\xdf\xeb\xd1L\xb5Dk0\x1d\x9bz\xa9<\x9d\xf2C\xca\x1c\xcen\x96\xef0\xb2\x9cxu\xef\xe0Y\xea/FR|\xb9\xfe\xe7c\xa3\xe5~\xbc\x03\xeaĜ/ۼ9\xcbC_\\\xff\xcd\x1dз&.\f\xf23\xa2\xbe֓\x13\r\x8e\x1a\xac\x8f\xb5\xc3\x02\b\xa1Y\xe8\xbd\x17\x85\xac\x1f\xfa\xd4-5\xe2\xbb\xc1\x903{\x87\v{\xbf{sq\xf7\"\xf9\x8b|\x9e-F}+\xd9-\b\xa7\x82=vٸ\xf2O\x00\x00\x00\xff\xff\xb7\xb0(y\xe0\r\x00\x00"), } var CRDs = crds() diff --git a/config/crd/v2alpha1/bases/velero.io_datadownloads.yaml b/config/crd/v2alpha1/bases/velero.io_datadownloads.yaml index c81eafc4f96..a3f994dc61a 100644 --- a/config/crd/v2alpha1/bases/velero.io_datadownloads.yaml +++ b/config/crd/v2alpha1/bases/velero.io_datadownloads.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.12.0 + controller-gen.kubebuilder.io/version: v0.14.0 name: datadownloads.velero.io spec: group: velero.io @@ -52,14 +52,19 @@ spec: and data mover controller for the datamover restore operation properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object @@ -67,12 +72,14 @@ spec: description: DataDownloadSpec is the specification for a DataDownload. properties: backupStorageLocation: - description: BackupStorageLocation is the name of the backup storage - location where the backup repository is stored. + description: |- + BackupStorageLocation is the name of the backup storage location + where the backup repository is stored. type: string cancel: - description: Cancel indicates request to cancel the ongoing DataDownload. - It can be set when the DataDownload is in InProgress phase + description: |- + Cancel indicates request to cancel the ongoing DataDownload. It can be set + when the DataDownload is in InProgress phase type: boolean dataMoverConfig: additionalProperties: @@ -81,22 +88,23 @@ spec: fields. type: object datamover: - description: DataMover specifies the data mover to be used by the - backup. If DataMover is "" or "velero", the built-in data mover - will be used. + description: |- + DataMover specifies the data mover to be used by the backup. + If DataMover is "" or "velero", the built-in data mover will be used. type: string operationTimeout: - description: OperationTimeout specifies the time used to wait internal - operations, before returning error as timeout. + description: |- + OperationTimeout specifies the time used to wait internal operations, + before returning error as timeout. type: string snapshotID: description: SnapshotID is the ID of the Velero backup snapshot to be restored from. type: string sourceNamespace: - description: SourceNamespace is the original namespace where the volume - is backed up from. It may be different from SourcePVC's namespace - if namespace is remapped during restore. + description: |- + SourceNamespace is the original namespace where the volume is backed up from. + It may be different from SourcePVC's namespace if namespace is remapped during restore. type: string targetVolume: description: TargetVolume is the information of the target PVC and @@ -129,9 +137,10 @@ spec: description: DataDownloadStatus is the current status of a DataDownload. properties: completionTimestamp: - description: CompletionTimestamp records the time a restore was completed. - Completion time is recorded even on failed restores. The server's - time is used for CompletionTimestamps + description: |- + CompletionTimestamp records the time a restore was completed. + Completion time is recorded even on failed restores. + The server's time is used for CompletionTimestamps format: date-time nullable: true type: string @@ -154,9 +163,10 @@ spec: - Failed type: string progress: - description: Progress holds the total number of bytes of the snapshot - and the current number of restored bytes. This can be used to display - progress information about the restore operation. + description: |- + Progress holds the total number of bytes of the snapshot and the current + number of restored bytes. This can be used to display progress information + about the restore operation. properties: bytesDone: format: int64 @@ -166,7 +176,8 @@ spec: type: integer type: object startTimestamp: - description: StartTimestamp records the time a restore was started. + description: |- + StartTimestamp records the time a restore was started. The server's time is used for StartTimestamps format: date-time nullable: true diff --git a/config/crd/v2alpha1/bases/velero.io_datauploads.yaml b/config/crd/v2alpha1/bases/velero.io_datauploads.yaml index 9f873afadd4..3502eeac74c 100644 --- a/config/crd/v2alpha1/bases/velero.io_datauploads.yaml +++ b/config/crd/v2alpha1/bases/velero.io_datauploads.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.12.0 + controller-gen.kubebuilder.io/version: v0.14.0 name: datauploads.velero.io spec: group: velero.io @@ -53,14 +53,19 @@ spec: data mover controller for the datamover backup operation properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object @@ -68,12 +73,14 @@ spec: description: DataUploadSpec is the specification for a DataUpload. properties: backupStorageLocation: - description: BackupStorageLocation is the name of the backup storage - location where the backup repository is stored. + description: |- + BackupStorageLocation is the name of the backup storage location + where the backup repository is stored. type: string cancel: - description: Cancel indicates request to cancel the ongoing DataUpload. - It can be set when the DataUpload is in InProgress phase + description: |- + Cancel indicates request to cancel the ongoing DataUpload. It can be set + when the DataUpload is in InProgress phase type: boolean csiSnapshot: description: If SnapshotType is CSI, CSISnapshot provides the information @@ -104,22 +111,23 @@ spec: nullable: true type: object datamover: - description: DataMover specifies the data mover to be used by the - backup. If DataMover is "" or "velero", the built-in data mover - will be used. + description: |- + DataMover specifies the data mover to be used by the backup. + If DataMover is "" or "velero", the built-in data mover will be used. type: string operationTimeout: - description: OperationTimeout specifies the time used to wait internal - operations, before returning error as timeout. + description: |- + OperationTimeout specifies the time used to wait internal operations, + before returning error as timeout. type: string snapshotType: description: SnapshotType is the type of the snapshot to be backed up. type: string sourceNamespace: - description: SourceNamespace is the original namespace where the volume - is backed up from. It is the same namespace for SourcePVC and CSI - namespaced objects. + description: |- + SourceNamespace is the original namespace where the volume is backed up from. + It is the same namespace for SourcePVC and CSI namespaced objects. type: string sourcePVC: description: SourcePVC is the name of the PVC which the snapshot is @@ -136,10 +144,11 @@ spec: description: DataUploadStatus is the current status of a DataUpload. properties: completionTimestamp: - description: CompletionTimestamp records the time a backup was completed. - Completion time is recorded even on failed backups. Completion time - is recorded before uploading the backup object. The server's time - is used for CompletionTimestamps + description: |- + CompletionTimestamp records the time a backup was completed. + Completion time is recorded even on failed backups. + Completion time is recorded before uploading the backup object. + The server's time is used for CompletionTimestamps format: date-time nullable: true type: string @@ -173,9 +182,10 @@ spec: - Failed type: string progress: - description: Progress holds the total number of bytes of the volume - and the current number of backed up bytes. This can be used to display - progress information about the backup operation. + description: |- + Progress holds the total number of bytes of the volume and the current + number of backed up bytes. This can be used to display progress information + about the backup operation. properties: bytesDone: format: int64 @@ -189,8 +199,10 @@ spec: backup repository. type: string startTimestamp: - description: StartTimestamp records the time a backup was started. - Separate from CreationTimestamp, since that value changes on restores. + description: |- + StartTimestamp records the time a backup was started. + Separate from CreationTimestamp, since that value changes + on restores. The server's time is used for StartTimestamps format: date-time nullable: true diff --git a/config/crd/v2alpha1/crds/crds.go b/config/crd/v2alpha1/crds/crds.go index acbdbed1f31..ed8f604a10e 100644 --- a/config/crd/v2alpha1/crds/crds.go +++ b/config/crd/v2alpha1/crds/crds.go @@ -29,8 +29,8 @@ import ( ) var rawCRDs = [][]byte{ - []byte("\x1f\x8b\b\x00\x00\x00\x00\x00\x00\xff\xbcY_s\xe3\xb8\r\x7fϧ\xc0l\x1f\xf2\xb2Rn\xaf\x9dN\xc7o\xbbN;\x93\xe9m\xea\xb9\xec\xe4\x9d\x12a\x99\x17\x8adI\xc8i\xda\xe9w\uf014d\xfd\xa1\xe3d\xafwz3\t\x82?\xfc\x00\x02 ]\x14ŕp\xea\x11}P\xd6l@8\x85\xff\"4\xfc+\x94O\x7f\t\xa5\xb27\xc7OWO\xca\xc8\rl\xbb@\xb6\xfd\x19\x83\xed|\x8d\xb7\xb8WF\x91\xb2\xe6\xaaE\x12R\x90\xd8\\\x01\bc,\t\x1e\x0e\xfc\x13\xa0\xb6\x86\xbc\xd5\x1a}Ѡ)\x9f\xba\n\xabNi\x89>*\x1f\xb6>\xfeP~\xfa\xb1\xfc\xe1\n\xc0\x88\x167\xc0\xfa\xa4}6\xda\n\x19\xca#j\xf4\xb6T\xf6*8\xacYq\xe3m\xe76p\x9aH\v\xfbM\x13\xe0[A\xe2\xb6\xd7\x11\x87\xb5\n\xf4\xf7\xd5\xd4O*P\x9cv\xba\xf3B/\xf6\x8e3A\x99\xa6\xd3\xc2\xcf\xe7\xae\x00Bm\x1dn\xe0\x9e\xb7v\xa2F\x1e\xebm\x8aP\n\x10RF\x96\x84\xdeye\b\xfd\xd6\xea\xae\x1d\xd8)@b\xa8\xbdr\x14Y\x98\u0082@\x82\xba\x00\xa1\xab\x0f \x02\xdc\xe3\xf3͝\xd9y\xdbx\f\t\x16\xc0/\xc1\x9a\x9d\xa0\xc3\x06\xca$^\xba\x83\b\xd8\xcf&*\x1f\xe2D?D/\x8c7\x90W\xa6\xc9!\xf8\xa6Z\x04\xd9\xf9\xe8B\xb6\xbbF\xa0\x83\nsh\xcf\"0\xa0\xc7(Q%\t\x8e^P\xec;볮sX\x97I\xb6W6\xe8Z\xf8o\xbe\xd1\xff=\xb6j\x8f\"\x1b[C\xaa)\xa3\x84\xb2&\x1f`\x9f\x1b|SpMI4Vℱ\x19&\x15\xc0y[c\b\xaf\x04<+\x98\xa1\xb8?\r\xac\xa8I\x12\xc7\x1f\x85v\a\xf1)%\x99\xfa\x80\xad\xd8\xf4+\xacC\xf3yw\xf7\xf8LJ\xd90\xbc\x920DM\x813\x05\xc3wޒ\xad\xad\x86\n\xe9\x19\xd1$\u05f7\xf6\x88\x9e\xf3\\\xa3L\x185r֖S\x81S\xce\xe6\xf8\x8e\xfax6Mz\x8c\xd1\xc3\x00\xfd\xd4\xfb\xc0{:\xf4\xa4\x86,\xdc\xeb>\x15\x98\xc9\xe8\u008ek65I\x81\xe4ʂɌ>\x97\xa2\xec\xd9I\xceR\x01<:\x8f\x01\r\xcd!\xf4\xdc\xedA\x18\xb0\xd5/XS\t\x0f\xe8Y\r\x84\x83\xed\xb4d\xe3\x8e\xe8\t<ֶ1\xeaߣ\xee\x00d\xe3\xa6Z\x10\xf6%\xe1\xf4\xc5\xdcm\x84\x86\xa3\xd0\x1d~\x8c\x94\xb5\xe2\x05<\xf2.Й\x89\xbe(\x12J\xf8\xca<)\xb3\xb7\x1b8\x10\xb9\xb0\xb9\xb9i\x14\r\x85\xb5\xb6m\xdb\x19E/7\x91oUud}\xb8\x91xD}\x13TS\b_\x1f\x14aM\x9d\xc7\x1b\xe1T\x11\xa1\x9bX\\\xcbV\xfe\xc1\xf7\xa58\\ϰ\xaeb-}\xb1&\xbe\xe2\x01.\x8c\x1c\xe8\xa2_\x9a\xac8\x11\xcdC\xcc\xce\xcf\x7f}\xf8\x06\xc3\xd6\xd1\x19K\xf6#暈\xe1\xe4\x02&L\x99=\xfa\xe4Ľ\xb7mԉF:\xab\f\xc5\x1f\xb5Vh\x96\xf4\x87\xaej\x15\xb1\xdf\xff\xd9a \xf6U\t\xdb\xd8m@\x85\xd09>Ⲅ;\x03[Ѣފ\x80\xbf\xb9\x03\x98\xe9P0\xb1os\xc1\xb4QZ\n'\xd6&\x13C\xa7s\xc6_ӓ\xff\xe0\xb0f\xd71{\xbcL\xedU_\x01\xf8\xf8\x8a\x99l9S\x99?\xb2\xfce\xab\xc0Rh\x81\xe9Kn\xcd\x00\xccLrm_\x8eB\x92\\)\x05\xd0gK\x98Gg\x83\"\xeb_N\x85\xac\\i8\xe3\x00\xfejaj\xd4\x17,\xd9F!PF2\x938\xc6\x1d\xa7\x88\xa4 b\xb2\xa6\xb1|.\xce\x13\x9c\xbe;\xe2U\x1c\xa8\x01\x89m2\xd9\x1a\xa3\f\x9c:<\x98vrK\xcb*k5\x8ae\xde\xe3\xd8\xfa\xcaIzk\xcd^5k\x1b\xa7\xcd\xe89\xc7_\xa0/\x13\x86\x93-\xd9\n\x8e9FR\xc4zQ\f\x01ɉw\xaf\x9a\xce\xe726\x7f{\x85Z\x86s\xbe\\\x9d\x8f\xc1\xe0\xb8\xcb\x05w\x8e(\x87\xe3ї\x97I\xcd#\x1b\xf3H\x88\x8d&Of\x10\xa6\x10,\xe1n?Ѩ\x02|\xf8\x00\xd6Çt\x19\xf9\xf01\x85k\xa74\x15jZx3\x1a\x9f\x95\xd6þ\xef\x8a\xe2\xb1\xfar\x03d;\xba@\xc0?\x16\xe2\v\x1e\x88;\xb3h;Yx\x16\x8a\xc6r\x97\xc1B\x85{N\xb1\x1e\xa9\xf3\x86O\x02z\xcf)'D\x95\xb6\xa3w\x19\x15\x8cp\xe1`\xe9\xee\xf6\x829\x0f\xa3\xe0\x90]\xeen\x87\xdc\xf2\x18\xbd0\xa6\x98^\x12\xc8\xe6\x1c\x8aC;#c1z\x1f\xdaX\x01ǫ\xdf%\xc8s\xe9\x01\xb7\xf5\xaaQ\xdcV\x98q\xe6\x94\xf2\x8e|U\xcc\x05\xa2\n\xd1>\x94й\x04\x9cS\fW\xd7\nA\xaa\xfd\x1e=\x1aJ\xf55m\xbc{\xdc^\x87\xd3&9\x9d\xfb\t\x86\xd8a\xb5\xc29\x94ܱ\xb3g{\xa2\xdeE\x11\t\xdf =F3.\xf0\xf3m\":\x90Õ\x9b\xafW\\\bz\xef&\x8d\xb0{\xdcr\a\x961c\xf7\xb8Fx\xbe\xcaAߊ\x9f\xf1\xe0\n\xe5\xca\x7f=\x9e\u05c8\xbd\x90N\x01\xdc\xf1\r;\xef\x1es\x85t\xa4\x03\xe8 \x88%\xfa\xab\x13T/Y\x9d0\x9c\x8fޝ߇\xb7~\x13\xe0\xed\xab\x88\xb7K\xc8g\xf0V/\xbf\x1a2\x17o\xe5Q\xaeQ\x17\xafx\xae\x00w\xcc\x0e\xd6o/Q\xf9\x9d\x8b|w\xb5\x90Y\xa6\xf8\xc5\xf4)Y.'\xe6\x99f1;=\x92ojC\xe3\xe5\xf6\xad\x8dhz\xb2\xea\xdd^w>\xa6\xa1\xfe!\x8boe\xdfՊ\xd6\xe9\thzۿԾ\xadW\xc4\xfb\x9e\x97\x93z'ƫl|r\x18ޙr\xfd\xdbI_Z\x1a\xd3#\xabC\txD\x03\xdcj\v\xa5Q\x0e:C\t߸\x1b\x8f\x17\x9f\xeb\xe5\x15)\xf2\xdd+\x8ae\x97{\xa6\f\xe8\xf5\xbaὉ\xaf;\x05\xabXI\x98NkQi\xdc\x00\xf9\xee\\\xff\x98=(-\x86 \x9aK\x89\xfak\x92JW\xc5~\t\x88\x8a\x9b\x8aeO{\x1dz߿\xabh\x18+/a\xb8\xb72\x020\xdf\xf1~\xf3.,\xb1\a\xbf\x00f\xc72\xb9\x98\x1f\xa1\xbd~=@ӵ\xb9\xcct\x8fϙ\xd1\xcfu\x8d.\x97-\v\xd8yt\xc2g\xa7V\x0f\xc7\xd3\xc9t\xd9\xc9%\xcea.\xabs|\x99\xcd\xcc\xfd-\x1e\x86w1\xdd\xe3\xbbD\xf6p;:X=\x1c\xe6\xf8xj\xba\xb6Bό\xc7\xe7ف\xfa!Kf\x0e\xa00r沓\x86\xb1'\x8c\xaa\xf8$s\x95J\x17\xb8\xa1K\x96*8-rEv\xb0d־\x9c\x0e\xc8\xea\xfd\xec\xbd\xfd\xca\xf8\x98\x9d/¹\x17\xe9\x9c\x17\xa6oˋ\xf9\xf1\x91\xfa\xb7\xd9\xe1\x95\v\xdd\xfcO\x83K-\xf5L\xf8R\x82\xef\xff\xafȥ\xf7i\xa6^\xe7\xe5\xf96\xbfgJ\xce\x12\xb5\x1a\x8c\xc8\xe5Dw\xff\xac2\x1d\xe9\xaa\xf1\xb1p\x03\xff\xf9\xef\xd5\xff\x02\x00\x00\xff\xffG\x0e\xcf\xec\xfa\x1b\x00\x00"), - []byte("\x1f\x8b\b\x00\x00\x00\x00\x00\x00\xff\xbcYOsۺ\x11\xbf\xfbS줇\\\"\xfa\xe5\xb5\xd3\xe9\xe8\x96\xc8팦/\xae'J}\x87\xc8\x15\x89g\x10`\xf1G\xae\xdb\xe9w\xef,@P \t\x89R\xfaR\x1e<\x16\xfe,v\x17\xbb\xbf\xfd\x01X\xadVw\xac\xe3Ϩ\rWr\r\xac\xe3\xf8O\x8b\x92~\x99\xe2\xe5O\xa6\xe0\xea\xfe\xf8\xf1\xee\x85\xcbj\r\x1bg\xacj\xbf\xa2QN\x97\xf8\x80\a.\xb9\xe5J\u07b5hY\xc5,[\xdf\x010)\x95e\xd4l\xe8'@\xa9\xa4\xd5J\bԫ\x1ae\xf1\xe2\xf6\xb8w\\T\xa8\xbd\xf0\xb8\xf4\xf1\xa7\xe2\xe3\xcf\xc5Ow\x00\x92\xb5\xb8\x06\x92\xe7:\xa1Xe\x8a#\nԪ\xe0\xea\xcetX\x92\xd8Z+\u05ed\xe1\xd4\x11\xa6\xf5K\x06u\x1f\x98e\x7f\xf7\x12|\xa3\xe0\xc6\xfeu\xd2\xf1\v7\xd6wv\xc2i&F\xab\xfav\xc3e\xed\x04\xd3i\xcf\x1d\x80)U\x87kx\xa4%;V\"\xb5\xf5\x96x\x15V\xc0\xaa\xca\xfb\x86\x89'ͥE\xbdQµ\xd1'+\xa8Д\x9aw\xd6\xdb~R\b\x8ce\xd6\x190\xael\x80\x19x\xc4\xd7\xfb\xad|Ҫ\xd6h\x82J\x00\xbf\x1a%\x9f\x98m\xd6P\x84\xe1E\xd70\x83}op\xdf\xcew\xf4M\xf6\x8d\xb45VsY\xe7\xd6\xff\xc6[\x84\xcai\xbfmds\x89`\x1bnR\xc5^\x99!\xe5\xb4\xc5\xea\xac\x1a\xbe\x9f\x84\x19\xcb\xdan\xaaO25(T1\x8b9u6\xaa\xed\x04Z\xac`\xfff1\x1aqP\xbaev\r\\\xda?\xfe\xe1\xbc'zW\x15~ꃒc\xb7|\xa6VH\x9a\x83&\xb4C5\xea\xaco\x94e\xe2\x7fQĒ\x80\xcf\xc9\xfc\xa0I\x90\x9b\xb6/\xaaB\xe1\x06\xea\x00\xb6A\xf8\xcc\xca\x17\xd7\xc1\xce*\xcdj\x84_T\x196\xef\xb5A\xddo\xde>\f1\x8dr\xa2\x82}\xb4\x18\xc0X\xa5\xb3\xbb\xd8aY\x84Y\xbd\xdc(v\xb2\x95\xe35\x7f\xe3 +5\xb2l\x90E\x94)\xfc\b\xaed>\xd2>\xd5xU\x94\xa5ޔ\xaa\xc2\xc1u\x98j\xc4\rtZ\x95h̅\xb8\xa7\xe9#\x1d\x1eO\r3\xb7\x84\x11ǟ\x99\xe8\x1a\xf61\xa0L\xd9`\xcb\xd6\xfd\fա\xfc\xf4\xb4}\xfe\xfdn\xd4\fg1\x83\x95\xd6\x10X\x90\xea\x9dVV\x95J\xc0\x1e\xed+\xa2\xf4\xb8\x05\xad:\xa2&\x90\xab\xb94\xc0d5Ȅt\xc0\t\xaa)Ƚ<\xea\r\x9d}8\xa9\x0eu\xba\xed@Kv\xa8-\x8f\xe8\x1b\xbe\xa4\xac$\xad\x13#ޓ\x9da\x14TTO0X\xd1c)V\xbdk\xc2>q\x03\x1a;\x8d\x06\xa5\x1d\xab\xd0;\xee\x00L\x82\xda\xff\x8a\xa5-`\x87\x9a\xc4\xc4\xf8/\x95<\xa2\xb6\xa0\xb1T\xb5\xe4\xff\x1ad\x1b\xb0\xca/*\x98ž\x1c\x9c>\x8fݒ\t82\xe1\xf0\x03\xf9\x0eZ\xf6\x06\x1ai\x15p2\x91燘\x02\xbe(\x8d\xc0\xe5A\xad\xa1\xb1\xb63\xeb\xfb\xfb\x9a\xdbXNKնNr\xfbv\xef\xdd\xcd\xf7\xce*m\xee+<\xa2\xb87\xbc^1]6\xdcbi\x9d\xc6{\xd6\xf1\x95W]\xfa\x92Z\xb4\xd5\xeft_\x80\xcd\xfb\x91\xae\xb3@\v\x9f\xaf\x85\x17v\x80J\"E9\xeb\xa7\x06+N\x8e\xa6&\xf2\xce\xd7?\xef\xbeA\\\xdao\xc6\xd4\xfb\xde柳\xe6\xb4\x05\xe40.\x0f\xa8\xc3&\x1e\xb4j\xbdL\x94U\xa7\xb8\xb4\xfeG)8ʩ\xfb\x8d۷\xdcҾ\xffá\xb1\xb4W\x05l<ǀ=\x82\xeb(\xbb\xab\x02\xb6\x126\xacE\xb1a\x06\x7f\xf8\x06\x90\xa7͊\x1c{\xdd\x16\xa4\xf4h:8x-\xe9\x88\f\xe7\xcc~\x9d\xd2~\xd7aI\x1bG\xbe\xa3I\xfc\xc0\xfb\x1a@\xb9˒\x91\xc5H\\>]\xe9\xcbB\xfft\xd0D\x9fϹ9Q-\x99@l\xacFa\xe4L(\x80\x98\x96\xb0a\x8e\xc6N\x19n\x95~#\xc1\xa1z\x153\tg\x9cO_\xc9d\x89b\xc1\x92\x8d\x1f\x04\\V\xe4G\x1cb\x8e\xe0!\b\xf0:)Y+ʉs\xee\r\xdf\xd6\xd2\x1c\nQ\x83\x96,\x92\x99\xc2\xc2%\x9c\xb8\x1d\xa4\x1cnj\xd5^)\x81l\x8aw\xa5\xe1;\xc9:\xd3(\xbb`\xdb\xf6\x00q䷷\x0ei\xf1\xcdn\xfb\x81\xfe\xc4v\x8a\x8b#\xafz\x00\xa6\xe4!\x963\aY\b@K\x836\xbb-\x98~\xfa\xdc\t\xd2\t\xc1\xf6\x02\xd7`\xb5\x9b\x1bv>\f\xe9\x8bb7\x82\x99쀉\x81\xbbt|.\xfc\xa2@(\xfd\b۰)\xd4\f\x1e\xa7\xfaCd=\x99\xc4\aZ\x02\xaf\xdc6ٙ\x17\xe2\x0fz\xd2\xc5j\xbcڠdx֞\x9e\x84\x05s\xd4\xe1\x821O\xcf\x1bo\xef\x92e\x04\xcb\xdfcY\x10y>\x12g\xb6=\x8f&䬛hy\xce8E\tF \x81\x15\xb8\xeev\xdd)ù\xc6j\xae\xf3j\xb4_\x99\xee\xb1\xd1g\xd2v\x06\xee\xd0\xf3\xad/Ĩ6J\x1ex=_;=:^ʑ\x8b\xa6͊F\xb2$y\x9cj\x04i\xb2\xf2\xe4n\x15\v\bѤ\x03\xaf\x9d>\x97\xfa\a\x8e\xa227g\xfb\x82?\xbc\x12\v\x186\x18\x11\xab]\x0fU\t\x7f\r\x01\xe1\x8c?9RgƀPS\n\x82ēDn\xe0\xdd;P\x1aޅ\x1b\x85w\x1fB\xfdq\\\xd8\x15OItF\xe2+\x17\"\xae{SY\x1a\xa84\x1dd\x94[\x02\xf1\xbfM\x86O\xfc`\xe9|\xe5m\xb7\n^\x19\xb7\x03w\xcd!x\x94e>\xc0\x1e\x0fė4Z\xa7%\x956Ԛ\x18\x84\xf1\"\x95\xcb`\xfb\x05\xa3LRg\x16\f\x9a\x96$o\x05\xfd?\xc5\xec4\xd13Ƹ\xee6\r=\x85\x1d\xeen\x96\x94\x1c\x8f\x8ez*\xcdkN\xe7\x029\xf4\x9cxK\x00\x87\x8c\xa6\xfd\xa9\xdcÕ\xc7ۂ\x98B$q\x04\x80'q\x94\xa1aq\x02p:wlvی\xccaF\xd5\xe7W&;\x17\xbd\xf1\xf4\xbc\xb9\xca\x0f\xa4J\x06\xaf\xa9\xf9\xb5\xe1e3\u07b7\xd9\x19\xc1\xeb\xc2^\xd0s\xd4\x1b\xd4\xcc\x03\xf5*\xcfX'c\xa6Y6\xe9N\xe3u\xda5\xde\xfal\xef\xd3\xf3\xe6*V\xef/\n\xae\xe3\xf5\xe1\x06\xb0\xf7r\xe9\xb4Fi\xe3\xbd \x1dq\xbf\x83ٗ\xe1F-\xbd3Yb\xc3\xf3\x19\xfe謫\x04mXd\xe8\xfe\xde&\xde\xda\xe5\xf8\xf0I\\\x98\xe9\x8f\xf2$\r+\xc0#J\xa0c\vゐۋ4\xc5tN>\x9d\x06)=\x8a\x85+\xdaxh\x8dw\x16\xfd\x95\xc07\nN\x7f&}o.\xc8\xf4 J\xe9\x97q\xc2<\xa2\xe3u \x9dDWY\xa1W\xd5\xc6lr\x0e\\\xe1+\x1a'2\x05\xe2\ar\x85\xb0d8n\x99,W\xb8|H`\x06\x18\xe8 \xa4\x87\x89Kg\xa6\xef'\x10-\x1a\xc3\xea%\x1c\xff\x12F\x85\xab\x8e~\n\xb0=\xd5ѱj\xefM\x9fl7\xc1\xa8TՒ\x06\x8f\xaa\xf2\xcb˛/\x1eoҤc\xb6Y\xd0\xe4\x89\xd9&\x02\xcc\xc1\t\xe1\xe7̪nO\xc2\xf7H\xd9\xf4[\x15_\x7f\xca]R\x8f\xc6\xe4\x00\x10\xaf\t$\x94\xae\xcd\x11\xfaG|ʹ~*K\xeclƲ\x154JDd\xf7\x0f\x13ҵ{\xd4\xe4o\xff\xf41>\x98\xe5\xb2]V\xa3\xedJ\xe6\x0f\x84\xc7K\"\x14\xa6Cg\xb8\x1d\x89|\xb5\xe2\xa6\x13\xec-#8\x1a\x92\xa2M\x92\xb7\xd3[\xe9y<\\\xbeh\x18\x9e\x89\xf2\xe7\xd6\xdc[On\x0f\xd2W\x9bI\xff\xf0\xfc\xf3cV\xb8\x00\x8c1\x93\xb7\x0fW\x12\xf1\xedC\xcc:^\xa1\xb4t\xb68\xbd\x04\x9cX\x9d\xbcx\xb4J\xae\xebn#\xa2\xa3\xc7\xc3%\x8dG\x83\x17\x98I\xffl\x99\xe3%;Jq\x02\x16\x7f'\xbd\x99>,}\x18ީ\x98\xed/\xc6ˆɚ\x12BRq\xf3\xc51'xF5F\xc4b\xac\xfe\xff\x93Sd\xc3e\xd6\xe85\xaf\x12\xd9\xfdmH\xda\xe2\xf6\xc3C\xc4\x1a\xfe\xfd\x9f\xbb\xff\x06\x00\x00\xff\xff?\xb7\xcf\xe0L \x00\x00"), + []byte("\x1f\x8b\b\x00\x00\x00\x00\x00\x00\xff\xbcYKs\xe3\xb8\x11\xbe\xfbWtM\x0es\x19\xca;\xc9V*\xa5ی\x9cT\xb9\xb2\xe3\xa8\xd6.\xdfA\xa2Ea\a\x04\x10<\xe48\x8f\xff\x9ej\x80\xa4@\x12\xb2,m\xb2\xbc\th|\xf8\xfa\x81\xee\x06TU\xd5\r3\xe2\x19\xad\x13Z\xad\x81\x19\x81\xff\xf0\xa8\xe8\x97[}\xff\x93[\t}{\xf8|\xf3](\xbe\x86Mp^w?\xa3\xd3\xc16x\x87;\xa1\x84\x17Z\xddt\xe8\x19g\x9e\xado\x00\x98R\xda3\x1av\xf4\x13\xa0\xd1\xca[-%ڪE\xb5\xfa\x1ej\xac\x83\x90\x1cm\x04\x1f\xb6>\xfc\xb0\xfa\xfc\xe3\xea\x87\x1b\x00\xc5:\\\x03\xe1q\xfd\xa2\xa4fܭ\x0e(\xd1\xea\x95\xd07\xce`C\xc0\xad\xd5\xc1\xac\xe18\x91\x16\xf6\x9b&\xc2w̳\xbb\x1e#\x0eK\xe1\xfc_\x17S?\t\xe7㴑\xc129\xdb;\xce8\xa1\xda \x99\x9d\xce\xdd\x00\xb8F\x1b\\\xc3\x03mmX\x834\xd6\xeb\x14\xa9T\xc08\x8fVbrk\x85\xf2h7Z\x86n\xb0N\x05\x1c]c\x85\xf1\xd1\n9-p\x9e\xf9\xe0\xc0\x85f\x0f\xcc\xc1\x03\xbe\xdcޫ\xadխE\x97h\x01\xfc\xe2\xb4\xda2\xbf_\xc3*\x89\xaf̞9\xecg\x93)\x1f\xe3D?\xe4_\x89\xaf\xf3V\xa8\xb6\xc4\xe0It\b<\xd8\xe8BһA\xf0{\xe1\xa6\xd4^\x98#z\xd6#?I$\xce\x13\x9c\xf3\xac3sF\xd9\xd2D\x893\x8f%B\x1b\xdd\x19\x89\x1e9ԯ\x1e\a5v\xdav̯A(\xff\xc7\x1fOۢ7\xd6*.\xbd\xd3jj\x98\xaf4\n\xd9pbB^j\xd1\x16\xad\xa3=\x93\xbf\x86\x88'\x80\xaf\xd9\xfa\xc4$\xe1\xe6\xe3g\xa9Pȁށ\xdf#|e\xcd\xf7`\xe0\xd1k\xcbZ\x84\x9ft\x93\xdc\xf7\xb2G\x8bQ\xa2N\x12\x14\xbd \xc8w\xda\x16]g\xb0Y%\xd9\x1el\xc0\x9a\xf9o\xba\xd1\xff<\xb6\x1a\x8b\xac\x18[C\xaaYE\t\xa1U9\xc0\xbe\xb4\xf8\xae\xe0ʍ\xa84\xc7\xccb\x13N\u0081\xb1\xbaA\xe7\xde\bx\x02\x98\xb0x8\x0e,L\x93$\x0e\xbfg\xd2\xec\xd9\xe7\x94d\x9a=vlݯ\xd0\x06\u0557\xed\xfd\xf3\x1f\x1e'\xc3\xf0F\xc2`\x8dw\x94)\x88\xbe\xb1\xda\xebFK\xa8ѿ \xaa\xe4\xfaN\x1f\xd0R\x9ek\x85r#\"em\x9e\v\x1cs6\xc5wģ\xd94i1F\x0f\x11\xb4\xb9\xf7\x81\xf64h\xbd\x18\xb2p\x8f},0\xd9\xe8L\x8f\x7fW\x939\x00R=\xad\x02N\x95\x06\x93Z}nE\xde[+9O8\xb0h,:T\xa9\xf6\xd00S\xa0\xeb_\xb0\xf1\xab\x19\xf4#Z\x82\x01\xb7\xd7ArR\xf6\x80փ\xc5F\xb7J\xfcs\xc4v\xe0u\xdcT2\x8f\xce\xc7\xc3h\x15\x93p`2\xe0'2\xda\f\xb9c\xaf`\x91\xf6\x84\xa02\xbc\xb8\xc0\xcdy|#+\n\xb5\xd3k\xd8{o\xdc\xfa\xf6\xb6\x15~(\xbb\x8d\ueea0\x84\x7f\xbd\x8d\xde\x10u\xf0ں[\x8e\a\x94\xb7N\xb4\x15\xb3\xcd^xl|\xb0xˌ\xa8\xa2\"*\x96\xdeU\xc7\x7fg\xfbB\xed&\xdb.\x021}\xb1`^\xe0\x1e\xaa\xa2t*X\x0f\x95T\x17\xb8W\xb0a\x1d\xca\rs\xf8\x1b\xfb\x8a\xbc\xe2*r»\xbc\x957\\s\xe1d\xdelb\xe8\x98N\xb86\xcf \x8f\x06\x1b\xf2*\x19\x96\x96\x89\x9d\xe8+\t\xa5\x016\x91\x9dZ\xa8|\xf4\xe9+V\x93\xb9йp\xa3\xefk\th`\xab\xb2D\xde\xd7:\xd7\x17)9-R\xf9\xb7\xa8\x8f\x16\x8dv\xc2k\xfbz\xac\x92\xf3P8\xe9\x15\xfa\x1a\xa6\x1a\x94ר\xb7\x89+A(N6\xc71\x94)\t%\xd4HT\xabV\xd3ᚸ\x02\xee=\xc9Pl;\xf4eEU\xb1\xaa\t\x05Ǟ\x12\xf2\xdeq\xaen\xad\xb5D6\xb7\"E\xe17*\v\x1b\xadv\xa2]*\x9e\xb7\xbf\xa7B\xe4\x8cM\v\x01\x9bmIZPt\x12\x93*V\xa8j\b]J\xed;\xd1\x06{\xca\xff;\x81\x92/\xf2\xcfɓ4(\x1cw\xb9\xc6\xc7#\xf5\xe1t\xf5U-+\xbd^\xc7\f\xe5b\xbf\x9b\x85\xe6\x92$\xc0\xfd.C\x14\x0e>|\x00m\xe1C\xba\x13}\xf8\x94V\a!}%&\xf5\xffEH9\xecrQt\x8f%\x9f\xba.\x1d\xfc56\xf8\xdb\fcf\nO=bT\xdfkxa\"+\xbb\xe3\xee\xeeS\x01\xb7\xc6\x1d\xe5h\x8b>XE'\x04\xad\xa5\xa4\xe5\"\xa4\x0e\x8b6\xe0MM\x9db\xc6\xed\xb5\xbf\xbf;\xa3\xe3\xe3(8\xa4\xa2\xfb\xbb!\x11=GG\x8c\xf9\xa8\x97\x04\xaf\x8b\xf4\x87Ɗ\xc7Jw\x19\xdbX^\xc7K\xe85ny\x9cB\f\xcah+ZA\xc6W\xe3\xcc1i\x1e\xe8&\x1bEIE\xe4\x10\xcc\t\xee@\x19\x8a\xeay\x8d\xc0\xc5n\x87\x96\x8av\xac\xe8i\xe3\xed\xf3\xe6\xa3\xcb6\x11\xbb\xfc\a%Î\x19\x83\x9c\xae\x0f\xe4\xdc\xdeV\x17Y\xc93ۢ\x7f\x8e\xa4Ϙ\xe8)\x13\x1dLA՟\xeez}{\x19\x835\x8a\xc1\xf6ySh\x06\xe9\xdb>/\x19\x9e.\x95\xd0\xdf\vN8q\xc1r᭞ψQ\x84x3\xd3\x02\x98\xc3;v\xde>\x97\n\xefh\x0e\xf0{\xe6I\xa2\xbf\xc7A\xfdZĄ\xe1\x88\xf4\uef0eo\xf3.\u009b7\x19o\xe6\x94O\xf0\xad_\x7f5e\xaa\xeb\xc2\"_\xb2\xae\xde\xf0\\\x05\xe6P\x1cl\xde_\xbd\xca;W\xe5\x16m&3O\xfd\xb3\xe9c\xbe\x9cOL\xf3\xcal6?\x92\xef\xeae\xe3M\xfb\xbd\xddlz?\xeb\xdd\xde\x04\x1b\x93N\xff\xaaF\x17ī\xfa\xd9&\xbdG\xe5O\x0fW\xb5{K\x98x\x03\xb5<\xab\x83l\xbcl\xc7G\x91\xe1%\xac\x94_\x8fxii̙\x04\x87\x1c\xf0\x80\n\xa8\x89gB\"\x1f0\v}\x0f\xc0\x13u\xfe\xf1\xfe\xf5э@\xb1\x1cS\x8fU \xed\x16 Ë\x18ݱ*\x82XH\xa8 %\xab%\xae\xc1\xdbp\xaa\xdf,\x9e\x9e\x0e\x9dc\xed\xb9\xec\xfd-I\xa5\xfbi\xbf\x04XM\xcdƼ\a\xfe\xe8\xfa\x80\xb8\xa8\x92(\xcd\xcfqx\xd0<\x12PW\xbc0]\xc4%\xf6\xecg\xc8lI\xa6t\x10Fj\xa7O\x02}\xa8BWJW\x0f\xf8R\x18\xfd\xd24hJ)\xb4\x82\xadE\xc3lqj\xf1\xb4\x9dO\xa6\xcbQ)\x9b\x0esE\xcc\xf1\xed\xb80\xf7\x97x\x18.\xb2t\xcf\xef\x9a\xe3>^\xb1\xf6Z\x0e'<\xbe\xf9\xaa\xd0\xd5h\xc9\r\xf1Uy\xf0\xc7\xd8,2\xc5s\xaf\x95:\x86\x11al #\xd4\n\x9e\xf6T\xcfҽph\xa9\xb9pF\xb2\xd7Q\x99\xbc\xad)\x80\x1fO\xcd\xe2\xd9\xef\xd2\xcef|\x83/\x97\xeb\xd2C\xfa\xf4[>\x89\xcf\xe6Ƿ\xf5\xff\xcf\x0eo\xdc\n\xa7\xffu\\\xd5\x7fO\x10Ε\x82\xfe\xbf\x97\xcb3\xf8t\x9b\xdf2y\x17\xad\xb7\x18\x8c\xccy\x86ݿ\xe2\xe4#\xa1\x1e\x9f6\xd7\xf0\xaf\xff\xdc\xfc7\x00\x00\xff\xff^Vs\xa2\xc6\x1c\x00\x00"), + []byte("\x1f\x8b\b\x00\x00\x00\x00\x00\x00\xff\xbcYKs\xe3\xb8\x11\xbe\xfbWtM\x0e{\xb1\xe4\x9dd+\x95\xd2m,'U\xaa\xec8\xaa\x91\xe3;D\xb6H\xacA\x80\xc1C\x8a\xf3\xf8\xef\xa9\x06@\n$!\xc9Rv\x87\a\x97\x85G\xa3\x9f_7\x1a\xb3\xd9쎵\xfc\x15\xb5\xe1J.\x80\xb5\x1c\xffiQ\xd2/3\x7f\xfb\x93\x99s\xf5\xb0\xff|\xf7\xc6e\xb9\x80\xa53V5\xdf\xd0(\xa7\v|\xc2\x1d\x97\xdcr%\xef\x1a\xb4\xacd\x96-\xee\x00\x98\x94\xca2\x1a6\xf4\x13\xa0P\xd2j%\x04\xeaY\x85r\xfe涸u\\\x94\xa8=\xf1\xee\xe8\xfd\x8f\xf3\xcf?\xcd\x7f\xbc\x03\x90\xac\xc1\x05\x10=\xd7\n\xc5J3ߣ@\xad\xe6\\ݙ\x16\v\"[i\xe5\xda\x05\x1c'¶xd`\xf7\x89Y\xf6wO\xc1\x0f\nn\xec_G\x13?sc\xfdd+\x9cfbp\xaa\x1f7\\VN0\x9d\xce\xdc\x01\x98B\xb5\xb8\x80g:\xb2e\x05\xd2X\x94ij0\x03V\x96^7L\xac5\x97\x16\xf5R\t\xd7t:\x99A\x89\xa6м\xb5^\xf6#C`,\xb3\u0380qE\r\xcc\xc03\x1e\x1eVr\xadU\xa5\xd1\x04\x96\x00~1J\xae\x99\xad\x170\x0f\xcb\xe7m\xcd\f\xc6٠\xbe\x8d\x9f\x88C\xf6\x9d\xb85VsY\xe5\xce\x7f\xe1\rB\xe9\xb47\x1b\xc9\\ ؚ\x9b\x94\xb1\x033Ĝ\xb6X\x9ed\xc3\xcf\x131cYӎ\xf9I\xb6\x06\x86Jf1\xc7\xceR5\xad@\x8b%l\xdf-vB\xec\x94n\x98]\x00\x97\xf6\x8f?\x9d\xd6DT\xd5\xdco}Rr\xa8\x96G\x1a\x85d8pB\x16\xaaPgu\xa3,\x13\xff\x0f#\x96\b<&\xfb\x03'\x81n:~\x91\x15r7P;\xb05\xc2#+\xde\\\v\x1b\xab4\xab\x10~VE0ޡF\x1d\x8d\xb7\rKL\xad\x9c(a\xdbI\f`\xac\xd2Y+\xb6X\xccîH\xb7#;2\xe5\xf0\xcc_\xd9\xc9\n\x8d,\xebd\x1d\xca\xcc\xfd\n\xaed\xdeӾT\xf8!/K\xb5)U\x89\xbd\xea0\xe5\x88\x1bh\xb5*И3~O\xdb\a<<\x1f\a&j\t+\xf6\xbfg\xa2\xad\xd9\xe7\x802E\x8d\r[\xc4\x1d\xaaE\xf9e\xbdz\xfd\xc3f0\f'1\x83\x15\xd6\x10X\x10\xeb\xadVV\x15J\xc0\x16\xed\x01Qz܂F\xedQ\x13\xc8U\\\x1a`\xb2\xeciB\xba\xe0\b\xd5\xe4\xe4\x9e\x1e͆\xc9\xe8N\xaaE\x9d\x9a\x1d\xe8\xc8\x16\xb5\xe5\x1d\xfa\x86/I+\xc9\xe8H\x88\xff\xcc\x06s\x00$w\xd8\x05%\xe5\x17\fREl\xc52\xaa*؍\x1b\xd0\xd8j4(Cơa&Am\x7f\xc1\xc2\xceG\xa47\xa8\x89L\x17\x0f\x85\x92{\xd4\x164\x16\xaa\x92\xfc_=m\x03V\xf9C\x05\xb3h\xac\x0fH-\x99\x80=\x13\x0e\xefGڣ\xafa\uf811\xce\x04'\x13z~\x83\x19\xf3\xf1Ui\x04.wj\x01\xb5\xb5\xadY<\x11\xb6\x934\x00\xb1\xc2\xfbJ5\xdcR\xc9\x1d\xaf\xa6g\xa7\x97\xd5s1rV\xb4IzI\x8e$\x8dS6!Nf\xbe\x9c\x9cu\xa9\x86\n\xb1\x1d\xaf\x9c>\x15\xfa;\x8e\xa2\x9cT\v\x17\xa3\xfd\x82><\x13\xb7\x80v/Y\x97,#~%et\xf0\x12g\xfc\x056\xc95S\x19\x80p\xf2H\x91\x1b\xf8\xf4\t\x94\x86O\xa1\xb1\xf1\xe9>\xecv\\\xd8\x19\x1f\xd4\xf2\a.Dw\xcaU骯\xdf\xe9\xf6\xa4\xdc%\x1c\xcf\xea\xe0o#\x1a#UX\xba\xe9y\xf1\xad\x82\x03\xe3I\rݟn\xee3t\xb7\xb8\xa3\x82K\xa3uZR\xcaC\xad\xa9\x061\x9e\xa4r\x19\xcc?#\xa9I\xf2\xcf\x05)ǩ\xcaKA\xff\x8f\xb1<\x05\x80\x8c\x009\x1b\x9f\xe3\xd0\xd7\xc7}\x17\xe9\x16Sl\x86$:\xe6\x95\xe6\x15'\x85\xcb~\xe6X\xf9D\xac\x8b-\x02\x8fd\x1e\x8a\xb3\xfe٣\xa5!\xb4<\x92\xa3p\x0e\x87\x13\xda3Y\xfa\xe4\xdcϗ1\xf42\x81{Q!\xeb\xd7\xe5%{\xf5\ag\xa0\x9c\x86\x0f5/\xea\xa1\xe9\xf8\x14T\x01,{C_\xe8^\xc1f\x1e\xc3g\xf9\xb2w\xb4f\x1c}\xa3\xe9\xd4e\xc7SCCggׯ\xcb\x0f]\r|\xd7\xe2c\x97\x83Ў\x8cZ.\x9c\xd6\xfe\xda\x15F\xe9\xb6}\xc3\xf5\xa0\b\xed\xbd\xb4\x81sS\xf5<%\xe3/\xf3\xbaLP\x88ue\xbe\xef,u}Ŝ\xa3\x1fɅ\x9d\xbe\xb9@\u0530\x04ܣ\x04\xba\x101.\b\xd4=Ɍg\x9f\xa7\x12\xd1-4\x91\xbb\x9br\xd7Uɶ,\xe8{!\x1f\xf6W\xe3\x1fLOӃ+E`F\tS7\xef\x1a\x96t\xfd\x9d\x11\x89\xdbri6b\xfb\xda\xe2\x1b\x1a'2\xd9\xe47\xac-\u0091\xe1\xcef\xb2\xb5\xc5\xf9K\x053\xc0@\a\"\x11;Ny\U000c7554-8\x1a4\x86U\x97\xf0\xfdkX\x15\xfa+q\v\xb0-\xe5\xd7!k?\x98\x18\x81Wa\xabT\xe5%\x0e\x9eU鏗W\xb7F\xaf\xe2\xa4e\xb6\xbe\xc0ɚٺC\x9d\x9d\x13\xc2\xef\x99d\xe3\x98ȶH\xd1\xf4k%e\x7f+\xbe\xc4\x1e\xadɡ\"~đP\xba&w\x01x\xc6Cf\xf4KQ`k3\x92\xcd`\xad\xb1e:;5y4J'C\xe3!\x17h\xdd\\\x96f\xff.\x93\x99\xfb\x8b\x87ƫ\xf4\x1c\xf9\xbb\x05\xfb\xfb\x16F\xadD\a\xf7\xfe=E\xbaf\x8b\x9a\x8c\xe0_lF\xb7;\xaaR\x12\x8be\b'\xfb\xfb\xd2\xc8S\x9a\xc3KM7\xd7\xd0t\xe9\x8aے\x9bV\xb0\xf7^\x96K\x80\xd3\a\xf3\xb8\x99>u\x92\xf3݊\xfeu+\x7f\xf9\xcd=Q\r\xbf\xe9c\xd3h\xbe\x7f\xb5\xfamN8\x83\x96]x\xaf\x9e>X\xb5\xaf\x9e\xbaP\xe4%JK\x17\x91\xe3\x03Ʊ\xfe\xf3\r\xb1\x9c.Ǎ\xc0\xebJ\xd6\xc1\x9b\xe7M%\xfc\x80\u0085\x1a&>\xc1\xe6*\x85\r\x81\x01A\x90o\x99/Ǐd\xf7\xfd\x9b\x1b\xb3\xb1o_\xd4LV\x98\xab\x8b\x95\xa4\xc4\xe8\x13\xeb\xf5E\xc9P\xa0\xefY\x8fd\xbdj2\xe89/\x13ڱ\U000d23b8m\xff\x90\xb2\x80\x7f\xff\xf7\xee\x7f\x01\x00\x00\xff\xff\xed\xa0\x8b\x92*!\x00\x00"), } var CRDs = crds() diff --git a/go.mod b/go.mod index 1a269ce3f3f..7d95ee28143 100644 --- a/go.mod +++ b/go.mod @@ -1,8 +1,6 @@ module github.com/vmware-tanzu/velero -go 1.21 - -toolchain go1.21.3 +go 1.22 require ( cloud.google.com/go/storage v1.39.1 diff --git a/hack/build-image/Dockerfile b/hack/build-image/Dockerfile index a60266fc788..161a837f0b6 100644 --- a/hack/build-image/Dockerfile +++ b/hack/build-image/Dockerfile @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM --platform=$TARGETPLATFORM golang:1.21-bookworm +FROM --platform=$TARGETPLATFORM golang:1.22-bookworm ARG GOPROXY @@ -30,7 +30,7 @@ RUN wget --quiet https://github.com/kubernetes-sigs/kubebuilder/releases/downloa chmod +x /usr/local/kubebuilder/bin/kubebuilder # get controller-tools -RUN go install sigs.k8s.io/controller-tools/cmd/controller-gen@v0.12.0 +RUN go install sigs.k8s.io/controller-tools/cmd/controller-gen@v0.14.0 # get goimports (the revision is pinned so we don't indiscriminately update, but the particular commit # is not important) diff --git a/hack/test.sh b/hack/test.sh index 016cb6caae0..7b70493e118 100755 --- a/hack/test.sh +++ b/hack/test.sh @@ -21,10 +21,9 @@ set -o pipefail export CGO_ENABLED=0 -TARGETS=($(go list ./pkg/... | grep -v "github.com/vmware-tanzu/velero/pkg/builder")) +TARGETS=($(go list ./pkg/... ./internal/...| grep -vE "/pkg/builder|pkg/apis|pkg/test|pkg/generated|pkg/plugin/generated|mocks|internal/restartabletest")) TARGETS+=( ./cmd/... - ./internal/... ) if [[ ${#@} -ne 0 ]]; then diff --git a/pkg/apis/velero/v1/zz_generated.deepcopy.go b/pkg/apis/velero/v1/zz_generated.deepcopy.go index 18d881959e8..522e15105f7 100644 --- a/pkg/apis/velero/v1/zz_generated.deepcopy.go +++ b/pkg/apis/velero/v1/zz_generated.deepcopy.go @@ -1,5 +1,4 @@ //go:build !ignore_autogenerated -// +build !ignore_autogenerated // Code generated by controller-gen. DO NOT EDIT. diff --git a/pkg/apis/velero/v2alpha1/zz_generated.deepcopy.go b/pkg/apis/velero/v2alpha1/zz_generated.deepcopy.go index ca6c522bdda..a543ac7052e 100644 --- a/pkg/apis/velero/v2alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/velero/v2alpha1/zz_generated.deepcopy.go @@ -1,5 +1,4 @@ //go:build !ignore_autogenerated -// +build !ignore_autogenerated // Code generated by controller-gen. DO NOT EDIT.