From 552fd7e85084b4cbd3ae8e81ff13433e28dc8327 Mon Sep 17 00:00:00 2001 From: Shingo Omura Date: Thu, 30 May 2024 07:40:29 +0900 Subject: [PATCH] KEP-3619: Fine-grained SupplementalGroups control (#117842) * Add `Linux{Sandbox,Container}SecurityContext.SupplementalGroupsPolicy` and `ContainerStatus.user` in cri-api * Add `PodSecurityContext.SupplementalGroupsPolicy`, `ContainerStatus.User` and its featuregate * Implement DropDisabledPodFields for PodSecurityContext.SupplementalGroupsPolicy and ContainerStatus.User fields * Implement kubelet so to wire between SecurityContext.SupplementalGroupsPolicy/ContainerStatus.User and cri-api in kubelet * Clarify `SupplementalGroupsPolicy` is an OS depdendent field. * Make `ContainerStatus.User` is initially attached user identity to the first process in the ContainerStatus It is because, the process identity can be dynamic if the initially attached identity has enough privilege calling setuid/setgid/setgroups syscalls in Linux. * Rewording suggestion applied * Add TODO comment for updating SupplementalGroupsPolicy default value in v1.34 * Added validations for SupplementalGroupsPolicy and ContainerUser * No need featuregate check in validation when adding new field with no default value * fix typo: identitiy -> identity --- api/openapi-spec/swagger.json | 51 +- api/openapi-spec/v3/api__v1_openapi.json | 62 +- .../v3/apis__apps__v1_openapi.json | 8 +- .../v3/apis__batch__v1_openapi.json | 8 +- pkg/api/pod/util.go | 29 + pkg/api/pod/util_test.go | 133 + pkg/apis/core/types.go | 66 +- pkg/apis/core/v1/zz_generated.conversion.go | 68 + pkg/apis/core/validation/validation.go | 64 + pkg/apis/core/validation/validation_test.go | 231 ++ pkg/apis/core/zz_generated.deepcopy.go | 52 + pkg/features/kube_features.go | 9 + pkg/generated/openapi/zz_generated.openapi.go | 93 +- pkg/kubelet/container/runtime.go | 23 + pkg/kubelet/kubelet_pods.go | 20 + pkg/kubelet/kubelet_pods_test.go | 118 + .../kuberuntime/kuberuntime_container.go | 6 + .../kuberuntime_container_linux.go | 17 + .../kuberuntime_container_linux_test.go | 86 + .../kuberuntime/kuberuntime_container_test.go | 84 + .../kuberuntime_container_unsupported.go | 4 + .../kuberuntime_container_windows.go | 4 + .../kuberuntime/kuberuntime_sandbox.go | 8 + .../kuberuntime_sandbox_linux_test.go | 52 + pkg/kubelet/kuberuntime/security_context.go | 10 + .../src/k8s.io/api/core/v1/generated.pb.go | 2876 ++++++++++------- .../src/k8s.io/api/core/v1/generated.proto | 52 +- staging/src/k8s.io/api/core/v1/types.go | 69 +- .../core/v1/types_swagger_doc_generated.go | 48 +- .../api/core/v1/zz_generated.deepcopy.go | 52 + .../api/testdata/HEAD/apps.v1.DaemonSet.json | 1 + .../api/testdata/HEAD/apps.v1.DaemonSet.pb | Bin 10805 -> 10836 bytes .../api/testdata/HEAD/apps.v1.DaemonSet.yaml | 1 + .../api/testdata/HEAD/apps.v1.Deployment.json | 1 + .../api/testdata/HEAD/apps.v1.Deployment.pb | Bin 10818 -> 10849 bytes .../api/testdata/HEAD/apps.v1.Deployment.yaml | 1 + .../api/testdata/HEAD/apps.v1.ReplicaSet.json | 1 + .../api/testdata/HEAD/apps.v1.ReplicaSet.pb | Bin 10735 -> 10766 bytes .../api/testdata/HEAD/apps.v1.ReplicaSet.yaml | 1 + .../testdata/HEAD/apps.v1.StatefulSet.json | 1 + .../api/testdata/HEAD/apps.v1.StatefulSet.pb | Bin 11906 -> 11937 bytes .../testdata/HEAD/apps.v1.StatefulSet.yaml | 1 + .../HEAD/apps.v1beta1.Deployment.json | 1 + .../testdata/HEAD/apps.v1beta1.Deployment.pb | Bin 10827 -> 10858 bytes .../HEAD/apps.v1beta1.Deployment.yaml | 1 + .../HEAD/apps.v1beta1.StatefulSet.json | 1 + .../testdata/HEAD/apps.v1beta1.StatefulSet.pb | Bin 11911 -> 11942 bytes .../HEAD/apps.v1beta1.StatefulSet.yaml | 1 + .../testdata/HEAD/apps.v1beta2.DaemonSet.json | 1 + .../testdata/HEAD/apps.v1beta2.DaemonSet.pb | Bin 10810 -> 10841 bytes .../testdata/HEAD/apps.v1beta2.DaemonSet.yaml | 1 + .../HEAD/apps.v1beta2.Deployment.json | 1 + .../testdata/HEAD/apps.v1beta2.Deployment.pb | Bin 10823 -> 10854 bytes .../HEAD/apps.v1beta2.Deployment.yaml | 1 + .../HEAD/apps.v1beta2.ReplicaSet.json | 1 + .../testdata/HEAD/apps.v1beta2.ReplicaSet.pb | Bin 10740 -> 10771 bytes .../HEAD/apps.v1beta2.ReplicaSet.yaml | 1 + .../HEAD/apps.v1beta2.StatefulSet.json | 1 + .../testdata/HEAD/apps.v1beta2.StatefulSet.pb | Bin 11911 -> 11942 bytes .../HEAD/apps.v1beta2.StatefulSet.yaml | 1 + .../api/testdata/HEAD/batch.v1.CronJob.json | 1 + .../api/testdata/HEAD/batch.v1.CronJob.pb | Bin 11398 -> 11429 bytes .../api/testdata/HEAD/batch.v1.CronJob.yaml | 1 + .../api/testdata/HEAD/batch.v1.Job.json | 1 + .../k8s.io/api/testdata/HEAD/batch.v1.Job.pb | Bin 11024 -> 11055 bytes .../api/testdata/HEAD/batch.v1.Job.yaml | 1 + .../testdata/HEAD/batch.v1beta1.CronJob.json | 1 + .../testdata/HEAD/batch.v1beta1.CronJob.pb | Bin 11403 -> 11434 bytes .../testdata/HEAD/batch.v1beta1.CronJob.yaml | 1 + .../k8s.io/api/testdata/HEAD/core.v1.Pod.json | 34 +- .../k8s.io/api/testdata/HEAD/core.v1.Pod.pb | Bin 11757 -> 11818 bytes .../k8s.io/api/testdata/HEAD/core.v1.Pod.yaml | 19 + .../HEAD/core.v1.PodStatusResult.json | 33 +- .../testdata/HEAD/core.v1.PodStatusResult.pb | Bin 1941 -> 1971 bytes .../HEAD/core.v1.PodStatusResult.yaml | 18 + .../testdata/HEAD/core.v1.PodTemplate.json | 1 + .../api/testdata/HEAD/core.v1.PodTemplate.pb | Bin 10571 -> 10602 bytes .../testdata/HEAD/core.v1.PodTemplate.yaml | 1 + .../HEAD/core.v1.ReplicationController.json | 1 + .../HEAD/core.v1.ReplicationController.pb | Bin 10693 -> 10724 bytes .../HEAD/core.v1.ReplicationController.yaml | 1 + .../HEAD/extensions.v1beta1.DaemonSet.json | 1 + .../HEAD/extensions.v1beta1.DaemonSet.pb | Bin 10818 -> 10849 bytes .../HEAD/extensions.v1beta1.DaemonSet.yaml | 1 + .../HEAD/extensions.v1beta1.Deployment.json | 1 + .../HEAD/extensions.v1beta1.Deployment.pb | Bin 10833 -> 10864 bytes .../HEAD/extensions.v1beta1.Deployment.yaml | 1 + .../HEAD/extensions.v1beta1.ReplicaSet.json | 1 + .../HEAD/extensions.v1beta1.ReplicaSet.pb | Bin 10746 -> 10777 bytes .../HEAD/extensions.v1beta1.ReplicaSet.yaml | 1 + .../core/v1/containerstatus.go | 9 + .../core/v1/containeruser.go | 39 + .../core/v1/linuxcontaineruser.go | 59 + .../core/v1/podsecuritycontext.go | 31 +- .../applyconfigurations/internal/internal.go | 29 + .../client-go/applyconfigurations/utils.go | 4 + .../cri-api/pkg/apis/runtime/v1/api.pb.go | 1807 +++++++---- .../cri-api/pkg/apis/runtime/v1/api.proto | 62 +- 98 files changed, 4782 insertions(+), 1801 deletions(-) create mode 100644 staging/src/k8s.io/client-go/applyconfigurations/core/v1/containeruser.go create mode 100644 staging/src/k8s.io/client-go/applyconfigurations/core/v1/linuxcontaineruser.go diff --git a/api/openapi-spec/swagger.json b/api/openapi-spec/swagger.json index fbda30c3b3e..b315026c97e 100644 --- a/api/openapi-spec/swagger.json +++ b/api/openapi-spec/swagger.json @@ -6519,6 +6519,10 @@ "$ref": "#/definitions/io.k8s.api.core.v1.ContainerState", "description": "State holds details about the container's current condition." }, + "user": { + "$ref": "#/definitions/io.k8s.api.core.v1.ContainerUser", + "description": "User represents user identity information initially attached to the first process of the container" + }, "volumeMounts": { "description": "Status of volume mounts.", "items": { @@ -6542,6 +6546,16 @@ ], "type": "object" }, + "io.k8s.api.core.v1.ContainerUser": { + "description": "ContainerUser represents user identity information", + "properties": { + "linux": { + "$ref": "#/definitions/io.k8s.api.core.v1.LinuxContainerUser", + "description": "Linux holds user identity information initially attached to the first process of the containers in Linux. Note that the actual running identity can be changed if the process has enough privilege to do so." + } + }, + "type": "object" + }, "io.k8s.api.core.v1.DaemonEndpoint": { "description": "DaemonEndpoint contains information about a single Daemon endpoint.", "properties": { @@ -7809,6 +7823,35 @@ ], "type": "object" }, + "io.k8s.api.core.v1.LinuxContainerUser": { + "description": "LinuxContainerUser represents user identity information in Linux containers", + "properties": { + "gid": { + "description": "GID is the primary gid initially attached to the first process in the container", + "format": "int64", + "type": "integer" + }, + "supplementalGroups": { + "description": "SupplementalGroups are the supplemental groups initially attached to the first process in the container", + "items": { + "format": "int64", + "type": "integer" + }, + "type": "array", + "x-kubernetes-list-type": "atomic" + }, + "uid": { + "description": "UID is the primary uid initially attached to the first process in the container", + "format": "int64", + "type": "integer" + } + }, + "required": [ + "uid", + "gid" + ], + "type": "object" + }, "io.k8s.api.core.v1.LoadBalancerIngress": { "description": "LoadBalancerIngress represents the status of a load-balancer ingress point: traffic intended for the service should be sent to an ingress point.", "properties": { @@ -9413,7 +9456,7 @@ "description": "The seccomp options to use by the containers in this pod. Note that this field cannot be set when spec.os.name is windows." }, "supplementalGroups": { - "description": "A list of groups applied to the first process run in each container, in addition to the container's primary GID, the fsGroup (if specified), and group memberships defined in the container image for the uid of the container process. If unspecified, no additional groups are added to any container. Note that group memberships defined in the container image for the uid of the container process are still effective, even if they are not included in this list. Note that this field cannot be set when spec.os.name is windows.", + "description": "A list of groups applied to the first process run in each container, in addition to the container's primary GID and fsGroup (if specified). If the SupplementalGroupsPolicy feature is enabled, the supplementalGroupsPolicy field determines whether these are in addition to or instead of any group memberships defined in the container image. If unspecified, no additional groups are added, though group memberships defined in the container image may still be used, depending on the supplementalGroupsPolicy field. Note that this field cannot be set when spec.os.name is windows.", "items": { "format": "int64", "type": "integer" @@ -9421,6 +9464,10 @@ "type": "array", "x-kubernetes-list-type": "atomic" }, + "supplementalGroupsPolicy": { + "description": "Defines how supplemental groups of the first container processes are calculated. Valid values are \"Merge\" and \"Strict\". If not specified, \"Merge\" is used. (Alpha) Using the field requires the SupplementalGroupsPolicy feature gate to be enabled and the container runtime must implement support for this feature. Note that this field cannot be set when spec.os.name is windows.", + "type": "string" + }, "sysctls": { "description": "Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch. Note that this field cannot be set when spec.os.name is windows.", "items": { @@ -9563,7 +9610,7 @@ }, "os": { "$ref": "#/definitions/io.k8s.api.core.v1.PodOS", - "description": "Specifies the OS of the containers in the pod. Some pod and container fields are restricted if this is set.\n\nIf the OS field is set to linux, the following fields must be unset: -securityContext.windowsOptions\n\nIf the OS field is set to windows, following fields must be unset: - spec.hostPID - spec.hostIPC - spec.hostUsers - spec.securityContext.appArmorProfile - spec.securityContext.seLinuxOptions - spec.securityContext.seccompProfile - spec.securityContext.fsGroup - spec.securityContext.fsGroupChangePolicy - spec.securityContext.sysctls - spec.shareProcessNamespace - spec.securityContext.runAsUser - spec.securityContext.runAsGroup - spec.securityContext.supplementalGroups - spec.containers[*].securityContext.appArmorProfile - spec.containers[*].securityContext.seLinuxOptions - spec.containers[*].securityContext.seccompProfile - spec.containers[*].securityContext.capabilities - spec.containers[*].securityContext.readOnlyRootFilesystem - spec.containers[*].securityContext.privileged - spec.containers[*].securityContext.allowPrivilegeEscalation - spec.containers[*].securityContext.procMount - spec.containers[*].securityContext.runAsUser - spec.containers[*].securityContext.runAsGroup" + "description": "Specifies the OS of the containers in the pod. Some pod and container fields are restricted if this is set.\n\nIf the OS field is set to linux, the following fields must be unset: -securityContext.windowsOptions\n\nIf the OS field is set to windows, following fields must be unset: - spec.hostPID - spec.hostIPC - spec.hostUsers - spec.securityContext.appArmorProfile - spec.securityContext.seLinuxOptions - spec.securityContext.seccompProfile - spec.securityContext.fsGroup - spec.securityContext.fsGroupChangePolicy - spec.securityContext.sysctls - spec.shareProcessNamespace - spec.securityContext.runAsUser - spec.securityContext.runAsGroup - spec.securityContext.supplementalGroups - spec.securityContext.supplementalGroupsPolicy - spec.containers[*].securityContext.appArmorProfile - spec.containers[*].securityContext.seLinuxOptions - spec.containers[*].securityContext.seccompProfile - spec.containers[*].securityContext.capabilities - spec.containers[*].securityContext.readOnlyRootFilesystem - spec.containers[*].securityContext.privileged - spec.containers[*].securityContext.allowPrivilegeEscalation - spec.containers[*].securityContext.procMount - spec.containers[*].securityContext.runAsUser - spec.containers[*].securityContext.runAsGroup" }, "overhead": { "additionalProperties": { diff --git a/api/openapi-spec/v3/api__v1_openapi.json b/api/openapi-spec/v3/api__v1_openapi.json index 0967538e489..d0a211196c7 100644 --- a/api/openapi-spec/v3/api__v1_openapi.json +++ b/api/openapi-spec/v3/api__v1_openapi.json @@ -1595,6 +1595,14 @@ "default": {}, "description": "State holds details about the container's current condition." }, + "user": { + "allOf": [ + { + "$ref": "#/components/schemas/io.k8s.api.core.v1.ContainerUser" + } + ], + "description": "User represents user identity information initially attached to the first process of the container" + }, "volumeMounts": { "description": "Status of volume mounts.", "items": { @@ -1623,6 +1631,20 @@ ], "type": "object" }, + "io.k8s.api.core.v1.ContainerUser": { + "description": "ContainerUser represents user identity information", + "properties": { + "linux": { + "allOf": [ + { + "$ref": "#/components/schemas/io.k8s.api.core.v1.LinuxContainerUser" + } + ], + "description": "Linux holds user identity information initially attached to the first process of the containers in Linux. Note that the actual running identity can be changed if the process has enough privilege to do so." + } + }, + "type": "object" + }, "io.k8s.api.core.v1.DaemonEndpoint": { "description": "DaemonEndpoint contains information about a single Daemon endpoint.", "properties": { @@ -3202,6 +3224,38 @@ ], "type": "object" }, + "io.k8s.api.core.v1.LinuxContainerUser": { + "description": "LinuxContainerUser represents user identity information in Linux containers", + "properties": { + "gid": { + "default": 0, + "description": "GID is the primary gid initially attached to the first process in the container", + "format": "int64", + "type": "integer" + }, + "supplementalGroups": { + "description": "SupplementalGroups are the supplemental groups initially attached to the first process in the container", + "items": { + "default": 0, + "format": "int64", + "type": "integer" + }, + "type": "array", + "x-kubernetes-list-type": "atomic" + }, + "uid": { + "default": 0, + "description": "UID is the primary uid initially attached to the first process in the container", + "format": "int64", + "type": "integer" + } + }, + "required": [ + "uid", + "gid" + ], + "type": "object" + }, "io.k8s.api.core.v1.LoadBalancerIngress": { "description": "LoadBalancerIngress represents the status of a load-balancer ingress point: traffic intended for the service should be sent to an ingress point.", "properties": { @@ -5304,7 +5358,7 @@ "description": "The seccomp options to use by the containers in this pod. Note that this field cannot be set when spec.os.name is windows." }, "supplementalGroups": { - "description": "A list of groups applied to the first process run in each container, in addition to the container's primary GID, the fsGroup (if specified), and group memberships defined in the container image for the uid of the container process. If unspecified, no additional groups are added to any container. Note that group memberships defined in the container image for the uid of the container process are still effective, even if they are not included in this list. Note that this field cannot be set when spec.os.name is windows.", + "description": "A list of groups applied to the first process run in each container, in addition to the container's primary GID and fsGroup (if specified). If the SupplementalGroupsPolicy feature is enabled, the supplementalGroupsPolicy field determines whether these are in addition to or instead of any group memberships defined in the container image. If unspecified, no additional groups are added, though group memberships defined in the container image may still be used, depending on the supplementalGroupsPolicy field. Note that this field cannot be set when spec.os.name is windows.", "items": { "default": 0, "format": "int64", @@ -5313,6 +5367,10 @@ "type": "array", "x-kubernetes-list-type": "atomic" }, + "supplementalGroupsPolicy": { + "description": "Defines how supplemental groups of the first container processes are calculated. Valid values are \"Merge\" and \"Strict\". If not specified, \"Merge\" is used. (Alpha) Using the field requires the SupplementalGroupsPolicy feature gate to be enabled and the container runtime must implement support for this feature. Note that this field cannot be set when spec.os.name is windows.", + "type": "string" + }, "sysctls": { "description": "Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch. Note that this field cannot be set when spec.os.name is windows.", "items": { @@ -5502,7 +5560,7 @@ "$ref": "#/components/schemas/io.k8s.api.core.v1.PodOS" } ], - "description": "Specifies the OS of the containers in the pod. Some pod and container fields are restricted if this is set.\n\nIf the OS field is set to linux, the following fields must be unset: -securityContext.windowsOptions\n\nIf the OS field is set to windows, following fields must be unset: - spec.hostPID - spec.hostIPC - spec.hostUsers - spec.securityContext.appArmorProfile - spec.securityContext.seLinuxOptions - spec.securityContext.seccompProfile - spec.securityContext.fsGroup - spec.securityContext.fsGroupChangePolicy - spec.securityContext.sysctls - spec.shareProcessNamespace - spec.securityContext.runAsUser - spec.securityContext.runAsGroup - spec.securityContext.supplementalGroups - spec.containers[*].securityContext.appArmorProfile - spec.containers[*].securityContext.seLinuxOptions - spec.containers[*].securityContext.seccompProfile - spec.containers[*].securityContext.capabilities - spec.containers[*].securityContext.readOnlyRootFilesystem - spec.containers[*].securityContext.privileged - spec.containers[*].securityContext.allowPrivilegeEscalation - spec.containers[*].securityContext.procMount - spec.containers[*].securityContext.runAsUser - spec.containers[*].securityContext.runAsGroup" + "description": "Specifies the OS of the containers in the pod. Some pod and container fields are restricted if this is set.\n\nIf the OS field is set to linux, the following fields must be unset: -securityContext.windowsOptions\n\nIf the OS field is set to windows, following fields must be unset: - spec.hostPID - spec.hostIPC - spec.hostUsers - spec.securityContext.appArmorProfile - spec.securityContext.seLinuxOptions - spec.securityContext.seccompProfile - spec.securityContext.fsGroup - spec.securityContext.fsGroupChangePolicy - spec.securityContext.sysctls - spec.shareProcessNamespace - spec.securityContext.runAsUser - spec.securityContext.runAsGroup - spec.securityContext.supplementalGroups - spec.securityContext.supplementalGroupsPolicy - spec.containers[*].securityContext.appArmorProfile - spec.containers[*].securityContext.seLinuxOptions - spec.containers[*].securityContext.seccompProfile - spec.containers[*].securityContext.capabilities - spec.containers[*].securityContext.readOnlyRootFilesystem - spec.containers[*].securityContext.privileged - spec.containers[*].securityContext.allowPrivilegeEscalation - spec.containers[*].securityContext.procMount - spec.containers[*].securityContext.runAsUser - spec.containers[*].securityContext.runAsGroup" }, "overhead": { "additionalProperties": { diff --git a/api/openapi-spec/v3/apis__apps__v1_openapi.json b/api/openapi-spec/v3/apis__apps__v1_openapi.json index 9aa3eaaec98..12069742e86 100644 --- a/api/openapi-spec/v3/apis__apps__v1_openapi.json +++ b/api/openapi-spec/v3/apis__apps__v1_openapi.json @@ -3661,7 +3661,7 @@ "description": "The seccomp options to use by the containers in this pod. Note that this field cannot be set when spec.os.name is windows." }, "supplementalGroups": { - "description": "A list of groups applied to the first process run in each container, in addition to the container's primary GID, the fsGroup (if specified), and group memberships defined in the container image for the uid of the container process. If unspecified, no additional groups are added to any container. Note that group memberships defined in the container image for the uid of the container process are still effective, even if they are not included in this list. Note that this field cannot be set when spec.os.name is windows.", + "description": "A list of groups applied to the first process run in each container, in addition to the container's primary GID and fsGroup (if specified). If the SupplementalGroupsPolicy feature is enabled, the supplementalGroupsPolicy field determines whether these are in addition to or instead of any group memberships defined in the container image. If unspecified, no additional groups are added, though group memberships defined in the container image may still be used, depending on the supplementalGroupsPolicy field. Note that this field cannot be set when spec.os.name is windows.", "items": { "default": 0, "format": "int64", @@ -3670,6 +3670,10 @@ "type": "array", "x-kubernetes-list-type": "atomic" }, + "supplementalGroupsPolicy": { + "description": "Defines how supplemental groups of the first container processes are calculated. Valid values are \"Merge\" and \"Strict\". If not specified, \"Merge\" is used. (Alpha) Using the field requires the SupplementalGroupsPolicy feature gate to be enabled and the container runtime must implement support for this feature. Note that this field cannot be set when spec.os.name is windows.", + "type": "string" + }, "sysctls": { "description": "Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch. Note that this field cannot be set when spec.os.name is windows.", "items": { @@ -3859,7 +3863,7 @@ "$ref": "#/components/schemas/io.k8s.api.core.v1.PodOS" } ], - "description": "Specifies the OS of the containers in the pod. Some pod and container fields are restricted if this is set.\n\nIf the OS field is set to linux, the following fields must be unset: -securityContext.windowsOptions\n\nIf the OS field is set to windows, following fields must be unset: - spec.hostPID - spec.hostIPC - spec.hostUsers - spec.securityContext.appArmorProfile - spec.securityContext.seLinuxOptions - spec.securityContext.seccompProfile - spec.securityContext.fsGroup - spec.securityContext.fsGroupChangePolicy - spec.securityContext.sysctls - spec.shareProcessNamespace - spec.securityContext.runAsUser - spec.securityContext.runAsGroup - spec.securityContext.supplementalGroups - spec.containers[*].securityContext.appArmorProfile - spec.containers[*].securityContext.seLinuxOptions - spec.containers[*].securityContext.seccompProfile - spec.containers[*].securityContext.capabilities - spec.containers[*].securityContext.readOnlyRootFilesystem - spec.containers[*].securityContext.privileged - spec.containers[*].securityContext.allowPrivilegeEscalation - spec.containers[*].securityContext.procMount - spec.containers[*].securityContext.runAsUser - spec.containers[*].securityContext.runAsGroup" + "description": "Specifies the OS of the containers in the pod. Some pod and container fields are restricted if this is set.\n\nIf the OS field is set to linux, the following fields must be unset: -securityContext.windowsOptions\n\nIf the OS field is set to windows, following fields must be unset: - spec.hostPID - spec.hostIPC - spec.hostUsers - spec.securityContext.appArmorProfile - spec.securityContext.seLinuxOptions - spec.securityContext.seccompProfile - spec.securityContext.fsGroup - spec.securityContext.fsGroupChangePolicy - spec.securityContext.sysctls - spec.shareProcessNamespace - spec.securityContext.runAsUser - spec.securityContext.runAsGroup - spec.securityContext.supplementalGroups - spec.securityContext.supplementalGroupsPolicy - spec.containers[*].securityContext.appArmorProfile - spec.containers[*].securityContext.seLinuxOptions - spec.containers[*].securityContext.seccompProfile - spec.containers[*].securityContext.capabilities - spec.containers[*].securityContext.readOnlyRootFilesystem - spec.containers[*].securityContext.privileged - spec.containers[*].securityContext.allowPrivilegeEscalation - spec.containers[*].securityContext.procMount - spec.containers[*].securityContext.runAsUser - spec.containers[*].securityContext.runAsGroup" }, "overhead": { "additionalProperties": { diff --git a/api/openapi-spec/v3/apis__batch__v1_openapi.json b/api/openapi-spec/v3/apis__batch__v1_openapi.json index 6ccdec80fe1..d7c97aabcdc 100644 --- a/api/openapi-spec/v3/apis__batch__v1_openapi.json +++ b/api/openapi-spec/v3/apis__batch__v1_openapi.json @@ -2865,7 +2865,7 @@ "description": "The seccomp options to use by the containers in this pod. Note that this field cannot be set when spec.os.name is windows." }, "supplementalGroups": { - "description": "A list of groups applied to the first process run in each container, in addition to the container's primary GID, the fsGroup (if specified), and group memberships defined in the container image for the uid of the container process. If unspecified, no additional groups are added to any container. Note that group memberships defined in the container image for the uid of the container process are still effective, even if they are not included in this list. Note that this field cannot be set when spec.os.name is windows.", + "description": "A list of groups applied to the first process run in each container, in addition to the container's primary GID and fsGroup (if specified). If the SupplementalGroupsPolicy feature is enabled, the supplementalGroupsPolicy field determines whether these are in addition to or instead of any group memberships defined in the container image. If unspecified, no additional groups are added, though group memberships defined in the container image may still be used, depending on the supplementalGroupsPolicy field. Note that this field cannot be set when spec.os.name is windows.", "items": { "default": 0, "format": "int64", @@ -2874,6 +2874,10 @@ "type": "array", "x-kubernetes-list-type": "atomic" }, + "supplementalGroupsPolicy": { + "description": "Defines how supplemental groups of the first container processes are calculated. Valid values are \"Merge\" and \"Strict\". If not specified, \"Merge\" is used. (Alpha) Using the field requires the SupplementalGroupsPolicy feature gate to be enabled and the container runtime must implement support for this feature. Note that this field cannot be set when spec.os.name is windows.", + "type": "string" + }, "sysctls": { "description": "Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch. Note that this field cannot be set when spec.os.name is windows.", "items": { @@ -3063,7 +3067,7 @@ "$ref": "#/components/schemas/io.k8s.api.core.v1.PodOS" } ], - "description": "Specifies the OS of the containers in the pod. Some pod and container fields are restricted if this is set.\n\nIf the OS field is set to linux, the following fields must be unset: -securityContext.windowsOptions\n\nIf the OS field is set to windows, following fields must be unset: - spec.hostPID - spec.hostIPC - spec.hostUsers - spec.securityContext.appArmorProfile - spec.securityContext.seLinuxOptions - spec.securityContext.seccompProfile - spec.securityContext.fsGroup - spec.securityContext.fsGroupChangePolicy - spec.securityContext.sysctls - spec.shareProcessNamespace - spec.securityContext.runAsUser - spec.securityContext.runAsGroup - spec.securityContext.supplementalGroups - spec.containers[*].securityContext.appArmorProfile - spec.containers[*].securityContext.seLinuxOptions - spec.containers[*].securityContext.seccompProfile - spec.containers[*].securityContext.capabilities - spec.containers[*].securityContext.readOnlyRootFilesystem - spec.containers[*].securityContext.privileged - spec.containers[*].securityContext.allowPrivilegeEscalation - spec.containers[*].securityContext.procMount - spec.containers[*].securityContext.runAsUser - spec.containers[*].securityContext.runAsGroup" + "description": "Specifies the OS of the containers in the pod. Some pod and container fields are restricted if this is set.\n\nIf the OS field is set to linux, the following fields must be unset: -securityContext.windowsOptions\n\nIf the OS field is set to windows, following fields must be unset: - spec.hostPID - spec.hostIPC - spec.hostUsers - spec.securityContext.appArmorProfile - spec.securityContext.seLinuxOptions - spec.securityContext.seccompProfile - spec.securityContext.fsGroup - spec.securityContext.fsGroupChangePolicy - spec.securityContext.sysctls - spec.shareProcessNamespace - spec.securityContext.runAsUser - spec.securityContext.runAsGroup - spec.securityContext.supplementalGroups - spec.securityContext.supplementalGroupsPolicy - spec.containers[*].securityContext.appArmorProfile - spec.containers[*].securityContext.seLinuxOptions - spec.containers[*].securityContext.seccompProfile - spec.containers[*].securityContext.capabilities - spec.containers[*].securityContext.readOnlyRootFilesystem - spec.containers[*].securityContext.privileged - spec.containers[*].securityContext.allowPrivilegeEscalation - spec.containers[*].securityContext.procMount - spec.containers[*].securityContext.runAsUser - spec.containers[*].securityContext.runAsGroup" }, "overhead": { "additionalProperties": { diff --git a/pkg/api/pod/util.go b/pkg/api/pod/util.go index c81669df93e..46c9ed413db 100644 --- a/pkg/api/pod/util.go +++ b/pkg/api/pod/util.go @@ -655,6 +655,15 @@ func dropDisabledFields( } } + // If the feature is disabled and not in use, drop the SupplementalGroupsPolicy field. + if !utilfeature.DefaultFeatureGate.Enabled(features.SupplementalGroupsPolicy) && !supplementalGroupsPolicyInUse(oldPodSpec) { + // Drop the field in podSpec only if SecurityContext is not nil. + // If it is nil, there is no need to set supplementalGroupsPolicy=nil (it will be nil too). + if podSpec.SecurityContext != nil { + podSpec.SecurityContext.SupplementalGroupsPolicy = nil + } + } + dropDisabledProcMountField(podSpec, oldPodSpec) dropDisabledNodeInclusionPolicyFields(podSpec, oldPodSpec) @@ -820,6 +829,18 @@ func dropDisabledPodStatusFields(podStatus, oldPodStatus *api.PodStatus, podSpec podStatus.EphemeralContainerStatuses[i].VolumeMounts = nil } } + + // drop ContainerStatus.User field to empty (disable SupplementalGroupsPolicy) + if !utilfeature.DefaultFeatureGate.Enabled(features.SupplementalGroupsPolicy) && !supplementalGroupsPolicyInUse(oldPodSpec) { + dropUserField := func(csl []api.ContainerStatus) { + for i := range csl { + csl[i].User = nil + } + } + dropUserField(podStatus.InitContainerStatuses) + dropUserField(podStatus.ContainerStatuses) + dropUserField(podStatus.EphemeralContainerStatuses) + } } func hostIPsInUse(podStatus *api.PodStatus) bool { @@ -1030,6 +1051,14 @@ func hostUsersInUse(podSpec *api.PodSpec) bool { return false } +func supplementalGroupsPolicyInUse(podSpec *api.PodSpec) bool { + if podSpec != nil && podSpec.SecurityContext != nil && podSpec.SecurityContext.SupplementalGroupsPolicy != nil { + return true + } + + return false +} + // inPlacePodVerticalScalingInUse returns true if pod spec is non-nil and ResizePolicy is set func inPlacePodVerticalScalingInUse(podSpec *api.PodSpec) bool { if podSpec == nil { diff --git a/pkg/api/pod/util_test.go b/pkg/api/pod/util_test.go index 3f44e157c7d..c82f9f53cfa 100644 --- a/pkg/api/pod/util_test.go +++ b/pkg/api/pod/util_test.go @@ -3443,3 +3443,136 @@ func TestDropPodLifecycleSleepAction(t *testing.T) { }) } } + +func TestDropSupplementalGroupsPolicy(t *testing.T) { + supplementalGroupsPolicyMerge := api.SupplementalGroupsPolicyMerge + podWithSupplementalGroupsPolicy := func() *api.Pod { + return &api.Pod{ + Spec: api.PodSpec{ + SecurityContext: &api.PodSecurityContext{ + SupplementalGroupsPolicy: &supplementalGroupsPolicyMerge, + }, + Containers: []api.Container{ + { + Name: "c1", + Image: "image", + }, + }, + }, + Status: api.PodStatus{ + ContainerStatuses: []api.ContainerStatus{ + { + Name: "c1", + Image: "image", + User: &api.ContainerUser{ + Linux: &api.LinuxContainerUser{ + UID: 0, + GID: 0, + SupplementalGroups: []int64{0, 1000}, + }, + }, + }, + }, + }, + } + } + podWithoutSupplementalGroupsPolicy := func() *api.Pod { + return &api.Pod{ + Spec: api.PodSpec{ + SecurityContext: &api.PodSecurityContext{}, + Containers: []api.Container{ + { + Name: "c1", + Image: "image", + }, + }, + }, + Status: api.PodStatus{ + ContainerStatuses: []api.ContainerStatus{ + { + Name: "c1", + Image: "image", + }, + }, + }, + } + } + + podInfo := []struct { + description string + hasSupplementalGroupsPolicy bool + pod func() *api.Pod + }{ + { + description: "with SupplementalGroupsPolicy and User", + hasSupplementalGroupsPolicy: true, + pod: podWithSupplementalGroupsPolicy, + }, + { + description: "without SupplementalGroupsPolicy and User", + hasSupplementalGroupsPolicy: false, + pod: podWithoutSupplementalGroupsPolicy, + }, + { + description: "is nil", + hasSupplementalGroupsPolicy: false, + pod: func() *api.Pod { return nil }, + }, + } + + for _, enabled := range []bool{true, false} { + for _, oldPodInfo := range podInfo { + for _, newPodInfo := range podInfo { + oldPodHasSupplementalGroupsPolicy, oldPod := oldPodInfo.hasSupplementalGroupsPolicy, oldPodInfo.pod() + newPodHasSupplementalGroupsPolicy, newPod := newPodInfo.hasSupplementalGroupsPolicy, newPodInfo.pod() + if newPod == nil { + continue + } + + t.Run( + fmt.Sprintf( + "feature enabled=%v, old pod %v, new pod %v", enabled, oldPodInfo.description, newPodInfo.description, + ), + func(t *testing.T) { + featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.SupplementalGroupsPolicy, enabled) + + var oldPodSpec *api.PodSpec + var oldPodStatus *api.PodStatus + if oldPod != nil { + oldPodSpec = &oldPod.Spec + oldPodStatus = &oldPod.Status + } + dropDisabledFields(&newPod.Spec, nil, oldPodSpec, nil) + dropDisabledPodStatusFields(&newPod.Status, oldPodStatus, &newPod.Spec, oldPodSpec) + + // old pod should never be changed + if !reflect.DeepEqual(oldPod, oldPodInfo.pod()) { + t.Errorf("old pod changed: %v", cmp.Diff(oldPod, oldPodInfo.pod())) + } + switch { + case enabled || oldPodHasSupplementalGroupsPolicy: + // new pod shouldn't change if feature enabled or if old pod has SupplementalGroupsPolicy and User set + if !reflect.DeepEqual(newPod, newPodInfo.pod()) { + t.Errorf("new pod changed: %v", cmp.Diff(newPod, newPodInfo.pod())) + } + case newPodHasSupplementalGroupsPolicy: + // new pod should be changed + if reflect.DeepEqual(newPod, newPodInfo.pod()) { + t.Errorf("new pod was not changed") + } + // new pod should not have SupplementalGroupsPolicy and User fields + if !reflect.DeepEqual(newPod, podWithoutSupplementalGroupsPolicy()) { + t.Errorf("new pod has SupplementalGroups and User: %v", cmp.Diff(newPod, podWithoutSupplementalGroupsPolicy())) + } + default: + // new pod should not need to be changed + if !reflect.DeepEqual(newPod, newPodInfo.pod()) { + t.Errorf("new pod changed: %v", cmp.Diff(newPod, newPodInfo.pod())) + } + } + }, + ) + } + } + } +} diff --git a/pkg/apis/core/types.go b/pkg/apis/core/types.go index 21d3b10a3ec..1f7c2214762 100644 --- a/pkg/apis/core/types.go +++ b/pkg/apis/core/types.go @@ -2741,6 +2741,32 @@ type ContainerStatus struct { // +optional // +featureGate=RecursiveReadOnlyMounts VolumeMounts []VolumeMountStatus + // User represents user identity information initially attached to the first process of the container + // +featureGate=SupplementalGroupsPolicy + // +optional + User *ContainerUser +} + +// ContainerUser represents user identity information +type ContainerUser struct { + // Linux holds user identity information initially attached to the first process of the containers in Linux. + // Note that the actual running identity can be changed if the process has enough privilege to do so. + // +optional + Linux *LinuxContainerUser + + // Windows holds user identity information of the first process of the containers in Windows + // This is just reserved for future use. + // Windows *WindowsContainerUser +} + +// LinuxContainerUser represents user identity information in Linux containers +type LinuxContainerUser struct { + // UID is the primary uid initially attached to the first process in the container + UID int64 + // GID is the primary gid initially attached to the first process in the container + GID int64 + // SupplementalGroups are the supplemental groups initially attached to the first process in the container + SupplementalGroups []int64 } // PodPhase is a label for the condition of a pod at the current time. @@ -3405,6 +3431,7 @@ type PodSpec struct { // - spec.securityContext.runAsUser // - spec.securityContext.runAsGroup // - spec.securityContext.supplementalGroups + // - spec.securityContext.supplementalGroupsPolicy // - spec.containers[*].securityContext.appArmorProfile // - spec.containers[*].securityContext.seLinuxOptions // - spec.containers[*].securityContext.seccompProfile @@ -3549,6 +3576,22 @@ const ( FSGroupChangeAlways PodFSGroupChangePolicy = "Always" ) +// SupplementalGroupsPolicy defines how supplemental groups +// of the first container processes are calculated. +type SupplementalGroupsPolicy string + +const ( + // SupplementalGroupsPolicyMerge means that the container's provided + // SupplementalGroups and FsGroup (specified in SecurityContext) will be + // merged with the primary user's groups as defined in the container image + // (in /etc/group). + SupplementalGroupsPolicyMerge SupplementalGroupsPolicy = "Merge" + // SupplementalGroupsPolicyStrict means that the container's provided + // SupplementalGroups and FsGroup (specified in SecurityContext) will be + // used instead of any groups defined in the container image. + SupplementalGroupsPolicyStrict SupplementalGroupsPolicy = "Strict" +) + // PodSecurityContext holds pod-level security attributes and common container settings. // Some fields are also present in container.securityContext. Field values of // container.securityContext take precedence over field values of PodSecurityContext. @@ -3631,15 +3674,26 @@ type PodSecurityContext struct { // for that container. // +optional RunAsNonRoot *bool - // A list of groups applied to the first process run in each container, in addition - // to the container's primary GID, the fsGroup (if specified), and group memberships - // defined in the container image for the uid of the container process. If unspecified, - // no additional groups are added to any container. Note that group memberships - // defined in the container image for the uid of the container process are still effective, - // even if they are not included in this list. + // A list of groups applied to the first process run in each container, in + // addition to the container's primary GID and fsGroup (if specified). If + // the SupplementalGroupsPolicy feature is enabled, the + // supplementalGroupsPolicy field determines whether these are in addition + // to or instead of any group memberships defined in the container image. + // If unspecified, no additional groups are added, though group memberships + // defined in the container image may still be used, depending on the + // supplementalGroupsPolicy field. // Note that this field cannot be set when spec.os.name is windows. // +optional SupplementalGroups []int64 + // Defines how supplemental groups of the first container processes are calculated. + // Valid values are "Merge" and "Strict". If not specified, "Merge" is used. + // (Alpha) Using the field requires the SupplementalGroupsPolicy feature gate to be enabled + // and the container runtime must implement support for this feature. + // Note that this field cannot be set when spec.os.name is windows. + // TODO: update the default value to "Merge" when spec.os.name is not windows in v1.34 + // +featureGate=SupplementalGroupsPolicy + // +optional + SupplementalGroupsPolicy *SupplementalGroupsPolicy // A special supplemental group that applies to all containers in a pod. // Some volume types allow the Kubelet to change the ownership of that volume // to be owned by the pod: diff --git a/pkg/apis/core/v1/zz_generated.conversion.go b/pkg/apis/core/v1/zz_generated.conversion.go index e452722dc92..3570e701aab 100644 --- a/pkg/apis/core/v1/zz_generated.conversion.go +++ b/pkg/apis/core/v1/zz_generated.conversion.go @@ -422,6 +422,16 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } + if err := s.AddGeneratedConversionFunc((*v1.ContainerUser)(nil), (*core.ContainerUser)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1_ContainerUser_To_core_ContainerUser(a.(*v1.ContainerUser), b.(*core.ContainerUser), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*core.ContainerUser)(nil), (*v1.ContainerUser)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_core_ContainerUser_To_v1_ContainerUser(a.(*core.ContainerUser), b.(*v1.ContainerUser), scope) + }); err != nil { + return err + } if err := s.AddGeneratedConversionFunc((*v1.DaemonEndpoint)(nil), (*core.DaemonEndpoint)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1_DaemonEndpoint_To_core_DaemonEndpoint(a.(*v1.DaemonEndpoint), b.(*core.DaemonEndpoint), scope) }); err != nil { @@ -862,6 +872,16 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } + if err := s.AddGeneratedConversionFunc((*v1.LinuxContainerUser)(nil), (*core.LinuxContainerUser)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1_LinuxContainerUser_To_core_LinuxContainerUser(a.(*v1.LinuxContainerUser), b.(*core.LinuxContainerUser), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*core.LinuxContainerUser)(nil), (*v1.LinuxContainerUser)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_core_LinuxContainerUser_To_v1_LinuxContainerUser(a.(*core.LinuxContainerUser), b.(*v1.LinuxContainerUser), scope) + }); err != nil { + return err + } if err := s.AddGeneratedConversionFunc((*v1.List)(nil), (*core.List)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1_List_To_core_List(a.(*v1.List), b.(*core.List), scope) }); err != nil { @@ -3370,6 +3390,7 @@ func autoConvert_v1_ContainerStatus_To_core_ContainerStatus(in *v1.ContainerStat out.AllocatedResources = *(*core.ResourceList)(unsafe.Pointer(&in.AllocatedResources)) out.Resources = (*core.ResourceRequirements)(unsafe.Pointer(in.Resources)) out.VolumeMounts = *(*[]core.VolumeMountStatus)(unsafe.Pointer(&in.VolumeMounts)) + out.User = (*core.ContainerUser)(unsafe.Pointer(in.User)) return nil } @@ -3395,6 +3416,7 @@ func autoConvert_core_ContainerStatus_To_v1_ContainerStatus(in *core.ContainerSt out.AllocatedResources = *(*v1.ResourceList)(unsafe.Pointer(&in.AllocatedResources)) out.Resources = (*v1.ResourceRequirements)(unsafe.Pointer(in.Resources)) out.VolumeMounts = *(*[]v1.VolumeMountStatus)(unsafe.Pointer(&in.VolumeMounts)) + out.User = (*v1.ContainerUser)(unsafe.Pointer(in.User)) return nil } @@ -3403,6 +3425,26 @@ func Convert_core_ContainerStatus_To_v1_ContainerStatus(in *core.ContainerStatus return autoConvert_core_ContainerStatus_To_v1_ContainerStatus(in, out, s) } +func autoConvert_v1_ContainerUser_To_core_ContainerUser(in *v1.ContainerUser, out *core.ContainerUser, s conversion.Scope) error { + out.Linux = (*core.LinuxContainerUser)(unsafe.Pointer(in.Linux)) + return nil +} + +// Convert_v1_ContainerUser_To_core_ContainerUser is an autogenerated conversion function. +func Convert_v1_ContainerUser_To_core_ContainerUser(in *v1.ContainerUser, out *core.ContainerUser, s conversion.Scope) error { + return autoConvert_v1_ContainerUser_To_core_ContainerUser(in, out, s) +} + +func autoConvert_core_ContainerUser_To_v1_ContainerUser(in *core.ContainerUser, out *v1.ContainerUser, s conversion.Scope) error { + out.Linux = (*v1.LinuxContainerUser)(unsafe.Pointer(in.Linux)) + return nil +} + +// Convert_core_ContainerUser_To_v1_ContainerUser is an autogenerated conversion function. +func Convert_core_ContainerUser_To_v1_ContainerUser(in *core.ContainerUser, out *v1.ContainerUser, s conversion.Scope) error { + return autoConvert_core_ContainerUser_To_v1_ContainerUser(in, out, s) +} + func autoConvert_v1_DaemonEndpoint_To_core_DaemonEndpoint(in *v1.DaemonEndpoint, out *core.DaemonEndpoint, s conversion.Scope) error { out.Port = in.Port return nil @@ -4557,6 +4599,30 @@ func Convert_core_LimitRangeSpec_To_v1_LimitRangeSpec(in *core.LimitRangeSpec, o return autoConvert_core_LimitRangeSpec_To_v1_LimitRangeSpec(in, out, s) } +func autoConvert_v1_LinuxContainerUser_To_core_LinuxContainerUser(in *v1.LinuxContainerUser, out *core.LinuxContainerUser, s conversion.Scope) error { + out.UID = in.UID + out.GID = in.GID + out.SupplementalGroups = *(*[]int64)(unsafe.Pointer(&in.SupplementalGroups)) + return nil +} + +// Convert_v1_LinuxContainerUser_To_core_LinuxContainerUser is an autogenerated conversion function. +func Convert_v1_LinuxContainerUser_To_core_LinuxContainerUser(in *v1.LinuxContainerUser, out *core.LinuxContainerUser, s conversion.Scope) error { + return autoConvert_v1_LinuxContainerUser_To_core_LinuxContainerUser(in, out, s) +} + +func autoConvert_core_LinuxContainerUser_To_v1_LinuxContainerUser(in *core.LinuxContainerUser, out *v1.LinuxContainerUser, s conversion.Scope) error { + out.UID = in.UID + out.GID = in.GID + out.SupplementalGroups = *(*[]int64)(unsafe.Pointer(&in.SupplementalGroups)) + return nil +} + +// Convert_core_LinuxContainerUser_To_v1_LinuxContainerUser is an autogenerated conversion function. +func Convert_core_LinuxContainerUser_To_v1_LinuxContainerUser(in *core.LinuxContainerUser, out *v1.LinuxContainerUser, s conversion.Scope) error { + return autoConvert_core_LinuxContainerUser_To_v1_LinuxContainerUser(in, out, s) +} + func autoConvert_v1_List_To_core_List(in *v1.List, out *core.List, s conversion.Scope) error { out.ListMeta = in.ListMeta if in.Items != nil { @@ -6496,6 +6562,7 @@ func autoConvert_v1_PodSecurityContext_To_core_PodSecurityContext(in *v1.PodSecu out.RunAsGroup = (*int64)(unsafe.Pointer(in.RunAsGroup)) out.RunAsNonRoot = (*bool)(unsafe.Pointer(in.RunAsNonRoot)) out.SupplementalGroups = *(*[]int64)(unsafe.Pointer(&in.SupplementalGroups)) + out.SupplementalGroupsPolicy = (*core.SupplementalGroupsPolicy)(unsafe.Pointer(in.SupplementalGroupsPolicy)) out.FSGroup = (*int64)(unsafe.Pointer(in.FSGroup)) out.Sysctls = *(*[]core.Sysctl)(unsafe.Pointer(&in.Sysctls)) out.FSGroupChangePolicy = (*core.PodFSGroupChangePolicy)(unsafe.Pointer(in.FSGroupChangePolicy)) @@ -6521,6 +6588,7 @@ func autoConvert_core_PodSecurityContext_To_v1_PodSecurityContext(in *core.PodSe out.RunAsGroup = (*int64)(unsafe.Pointer(in.RunAsGroup)) out.RunAsNonRoot = (*bool)(unsafe.Pointer(in.RunAsNonRoot)) out.SupplementalGroups = *(*[]int64)(unsafe.Pointer(&in.SupplementalGroups)) + out.SupplementalGroupsPolicy = (*v1.SupplementalGroupsPolicy)(unsafe.Pointer(in.SupplementalGroupsPolicy)) out.FSGroup = (*int64)(unsafe.Pointer(in.FSGroup)) out.FSGroupChangePolicy = (*v1.PodFSGroupChangePolicy)(unsafe.Pointer(in.FSGroupChangePolicy)) out.Sysctls = *(*[]v1.Sysctl)(unsafe.Pointer(&in.Sysctls)) diff --git a/pkg/apis/core/validation/validation.go b/pkg/apis/core/validation/validation.go index 492001a2735..a3f9296c7eb 100644 --- a/pkg/apis/core/validation/validation.go +++ b/pkg/apis/core/validation/validation.go @@ -4318,6 +4318,9 @@ func validateWindows(spec *core.PodSpec, fldPath *field.Path) field.ErrorList { if securityContext.SupplementalGroups != nil { allErrs = append(allErrs, field.Forbidden(fldPath.Child("securityContext").Child("supplementalGroups"), "cannot be set for a windows pod")) } + if securityContext.SupplementalGroupsPolicy != nil { + allErrs = append(allErrs, field.Forbidden(fldPath.Child("securityContext").Child("supplementalGroupsPolicy"), "cannot be set for a windows pod")) + } } podshelper.VisitContainersWithPath(spec, fldPath, func(c *core.Container, cFldPath *field.Path) bool { // validate container security context @@ -4948,6 +4951,10 @@ func validatePodSpecSecurityContext(securityContext *core.PodSecurityContext, sp allErrs = append(allErrs, validateSeccompProfileField(securityContext.SeccompProfile, fldPath.Child("seccompProfile"))...) allErrs = append(allErrs, validateWindowsSecurityContextOptions(securityContext.WindowsOptions, fldPath.Child("windowsOptions"))...) allErrs = append(allErrs, ValidateAppArmorProfileField(securityContext.AppArmorProfile, fldPath.Child("appArmorProfile"))...) + + if securityContext.SupplementalGroupsPolicy != nil { + allErrs = append(allErrs, validateSupplementalGroupsPolicy(securityContext.SupplementalGroupsPolicy, fldPath.Child("supplementalGroupsPolicy"))...) + } } return allErrs @@ -5359,6 +5366,10 @@ func ValidatePodStatusUpdate(newPod, oldPod *core.Pod, opts PodValidationOptions allErrs = append(allErrs, newIPErrs...) } + allErrs = append(allErrs, validateContainerStatusUsers(newPod.Status.ContainerStatuses, fldPath.Child("containerStatuses"), newPod.Spec.OS)...) + allErrs = append(allErrs, validateContainerStatusUsers(newPod.Status.InitContainerStatuses, fldPath.Child("initContainerStatuses"), newPod.Spec.OS)...) + allErrs = append(allErrs, validateContainerStatusUsers(newPod.Status.EphemeralContainerStatuses, fldPath.Child("ephemeralContainerStatuses"), newPod.Spec.OS)...) + return allErrs } @@ -8121,3 +8132,56 @@ func validateNodeSelectorTermHasOnlyAdditions(newTerm, oldTerm core.NodeSelector } return true } + +var validSupplementalGroupsPolicies = sets.New(core.SupplementalGroupsPolicyMerge, core.SupplementalGroupsPolicyStrict) + +func validateSupplementalGroupsPolicy(supplementalGroupsPolicy *core.SupplementalGroupsPolicy, fldPath *field.Path) field.ErrorList { + allErrors := field.ErrorList{} + if !validSupplementalGroupsPolicies.Has(*supplementalGroupsPolicy) { + allErrors = append(allErrors, field.NotSupported(fldPath, supplementalGroupsPolicy, sets.List(validSupplementalGroupsPolicies))) + } + return allErrors +} + +func validateContainerStatusUsers(containerStatuses []core.ContainerStatus, fldPath *field.Path, podOS *core.PodOS) field.ErrorList { + allErrors := field.ErrorList{} + osName := core.Linux + if podOS != nil { + osName = podOS.Name + } + for i, containerStatus := range containerStatuses { + if containerStatus.User == nil { + continue + } + containerUser := containerStatus.User + switch osName { + case core.Windows: + if containerUser.Linux != nil { + allErrors = append(allErrors, field.Forbidden(fldPath.Index(i).Child("linux"), "cannot be set for a windows pod")) + } + case core.Linux: + allErrors = append(allErrors, validateLinuxContainerUser(containerUser.Linux, fldPath.Index(i).Child("linux"))...) + } + } + return allErrors +} + +func validateLinuxContainerUser(linuxContainerUser *core.LinuxContainerUser, fldPath *field.Path) field.ErrorList { + allErrors := field.ErrorList{} + if linuxContainerUser == nil { + return allErrors + } + for _, msg := range validation.IsValidUserID(linuxContainerUser.UID) { + allErrors = append(allErrors, field.Invalid(fldPath.Child("uid"), linuxContainerUser.UID, msg)) + } + + for _, msg := range validation.IsValidGroupID(linuxContainerUser.GID) { + allErrors = append(allErrors, field.Invalid(fldPath.Child("gid"), linuxContainerUser.GID, msg)) + } + for g, gid := range linuxContainerUser.SupplementalGroups { + for _, msg := range validation.IsValidGroupID(gid) { + allErrors = append(allErrors, field.Invalid(fldPath.Child("supplementalGroups").Index(g), gid, msg)) + } + } + return allErrors +} diff --git a/pkg/apis/core/validation/validation_test.go b/pkg/apis/core/validation/validation_test.go index d4984c5c663..977c952788d 100644 --- a/pkg/apis/core/validation/validation_test.go +++ b/pkg/apis/core/validation/validation_test.go @@ -22554,6 +22554,7 @@ func TestValidateOSFields(t *testing.T) { "SecurityContext.SeccompProfile", "SecurityContext.ShareProcessNamespace", "SecurityContext.SupplementalGroups", + "SecurityContext.SupplementalGroupsPolicy", "SecurityContext.Sysctls", "SecurityContext.WindowsOptions", ) @@ -26245,3 +26246,233 @@ func TestValidateSleepAction(t *testing.T) { }) } } + +// TODO: merge these test to TestValidatePodSpec after SupplementalGroupsPolicy feature graduates to Beta +func TestValidatePodSpecWithSupplementalGroupsPolicy(t *testing.T) { + fldPath := field.NewPath("spec") + badSupplementalGroupsPolicyEmpty := ptr.To(core.SupplementalGroupsPolicy("")) + badSupplementalGroupsPolicyNotSupported := ptr.To(core.SupplementalGroupsPolicy("not-supported")) + + validatePodSpecTestCases := map[string]struct { + securityContext *core.PodSecurityContext + wantFieldErrors field.ErrorList + }{ + "nil SecurityContext is valid": { + securityContext: nil, + }, + "nil SupplementalGroupsPolicy is valid": { + securityContext: &core.PodSecurityContext{}, + }, + "SupplementalGroupsPolicyMerge is valid": { + securityContext: &core.PodSecurityContext{ + SupplementalGroupsPolicy: ptr.To(core.SupplementalGroupsPolicyMerge), + }, + }, + "SupplementalGroupsPolicyStrict is valid": { + securityContext: &core.PodSecurityContext{ + SupplementalGroupsPolicy: ptr.To(core.SupplementalGroupsPolicyStrict), + }, + }, + "empty SupplementalGroupsPolicy is invalid": { + securityContext: &core.PodSecurityContext{ + SupplementalGroupsPolicy: badSupplementalGroupsPolicyEmpty, + }, + wantFieldErrors: field.ErrorList{ + field.NotSupported( + fldPath.Child("securityContext").Child("supplementalGroupsPolicy"), + badSupplementalGroupsPolicyEmpty, sets.List(validSupplementalGroupsPolicies)), + }, + }, + "not-supported SupplementalGroupsPolicy is invalid": { + securityContext: &core.PodSecurityContext{ + SupplementalGroupsPolicy: badSupplementalGroupsPolicyNotSupported, + }, + wantFieldErrors: field.ErrorList{ + field.NotSupported( + fldPath.Child("securityContext").Child("supplementalGroupsPolicy"), + badSupplementalGroupsPolicyNotSupported, sets.List(validSupplementalGroupsPolicies)), + }, + }, + } + for name, tt := range validatePodSpecTestCases { + t.Run(name, func(t *testing.T) { + podSpec := &core.PodSpec{ + SecurityContext: tt.securityContext, + Containers: []core.Container{ + {Name: "con", Image: "pause", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}, + }, + RestartPolicy: core.RestartPolicyAlways, + DNSPolicy: core.DNSClusterFirst, + } + if tt.wantFieldErrors == nil { + tt.wantFieldErrors = field.ErrorList{} + } + errs := ValidatePodSpec(podSpec, nil, fldPath, PodValidationOptions{}) + if diff := cmp.Diff(tt.wantFieldErrors, errs); diff != "" { + t.Errorf("unexpected field errors (-want, +got):\n%s", diff) + } + }) + } +} + +// TODO: merge these testcases to TestValidateWindowsPodSecurityContext after SupplementalGroupsPolicy feature graduates to Beta +func TestValidateWindowsPodSecurityContextSupplementalGroupsPolicy(t *testing.T) { + fldPath := field.NewPath("spec") + + testCases := map[string]struct { + securityContext *core.PodSecurityContext + wantFieldErrors field.ErrorList + }{ + "nil SecurityContext is valid": { + securityContext: nil, + }, + "nil SupplementalGroupdPolicy is valid": { + securityContext: &core.PodSecurityContext{}, + }, + "non-empty SupplementalGroupdPolicy is invalid": { + securityContext: &core.PodSecurityContext{ + SupplementalGroupsPolicy: ptr.To(core.SupplementalGroupsPolicyMerge), + }, + wantFieldErrors: field.ErrorList{ + field.Forbidden( + fldPath.Child("securityContext").Child("supplementalGroupsPolicy"), + "cannot be set for a windows pod"), + }, + }, + } + + for name, tt := range testCases { + t.Run(name, func(t *testing.T) { + podSpec := &core.PodSpec{ + OS: &core.PodOS{Name: core.Windows}, + SecurityContext: tt.securityContext, + Containers: []core.Container{ + {Name: "con", Image: "pause", ImagePullPolicy: "IfNotPresent", TerminationMessagePolicy: "File"}, + }, + RestartPolicy: core.RestartPolicyAlways, + DNSPolicy: core.DNSClusterFirst, + } + if tt.wantFieldErrors == nil { + tt.wantFieldErrors = field.ErrorList{} + } + errs := validateWindows(podSpec, fldPath) + if diff := cmp.Diff(tt.wantFieldErrors, errs); diff != "" { + t.Errorf("unexpected field errors (-want, +got):\n%s", diff) + } + }) + } +} + +// TODO: merge these testcases to TestValidatePodStatusUpdate after SupplementalGroupsPolicy feature graduates to Beta +func TestValidatePodStatusUpdateWithSupplementalGroupsPolicy(t *testing.T) { + badUID := int64(-1) + badGID := int64(-1) + + containerTypes := map[string]func(podStatus *core.PodStatus, containerStatus []core.ContainerStatus){ + "container": func(podStatus *core.PodStatus, containerStatus []core.ContainerStatus) { + podStatus.ContainerStatuses = containerStatus + }, + "initContainer": func(podStatus *core.PodStatus, containerStatus []core.ContainerStatus) { + podStatus.InitContainerStatuses = containerStatus + }, + "ephemeralContainer": func(podStatus *core.PodStatus, containerStatus []core.ContainerStatus) { + podStatus.EphemeralContainerStatuses = containerStatus + }, + } + + testCases := map[string]struct { + podOSes []*core.PodOS + containerStatuses []core.ContainerStatus + wantFieldErrors field.ErrorList + }{ + "nil container user is valid": { + podOSes: []*core.PodOS{nil, {Name: core.Linux}}, + containerStatuses: []core.ContainerStatus{}, + }, + "empty container user is valid": { + podOSes: []*core.PodOS{nil, {Name: core.Linux}}, + containerStatuses: []core.ContainerStatus{{ + User: &core.ContainerUser{}, + }}, + }, + "container user with valid ids": { + podOSes: []*core.PodOS{nil, {Name: core.Linux}}, + containerStatuses: []core.ContainerStatus{{ + User: &core.ContainerUser{ + Linux: &core.LinuxContainerUser{}, + }, + }}, + }, + "container user with invalid ids": { + podOSes: []*core.PodOS{nil, {Name: core.Linux}}, + containerStatuses: []core.ContainerStatus{{ + User: &core.ContainerUser{ + Linux: &core.LinuxContainerUser{ + UID: badUID, + GID: badGID, + SupplementalGroups: []int64{badGID}, + }, + }, + }}, + wantFieldErrors: field.ErrorList{ + field.Invalid(field.NewPath("[0].linux.uid"), badUID, "must be between 0 and 2147483647, inclusive"), + field.Invalid(field.NewPath("[0].linux.gid"), badGID, "must be between 0 and 2147483647, inclusive"), + field.Invalid(field.NewPath("[0].linux.supplementalGroups[0]"), badGID, "must be between 0 and 2147483647, inclusive"), + }, + }, + "user.linux must not be set in windows": { + podOSes: []*core.PodOS{{Name: core.Windows}}, + containerStatuses: []core.ContainerStatus{{ + User: &core.ContainerUser{ + Linux: &core.LinuxContainerUser{}, + }, + }}, + wantFieldErrors: field.ErrorList{ + field.Forbidden(field.NewPath("[0].linux"), "cannot be set for a windows pod"), + }, + }, + } + + for name, tt := range testCases { + for _, podOS := range tt.podOSes { + for containerType, setContainerStatuses := range containerTypes { + t.Run(fmt.Sprintf("[podOS=%v][containerType=%s] %s", podOS, containerType, name), func(t *testing.T) { + oldPod := &core.Pod{ + ObjectMeta: metav1.ObjectMeta{ + Name: "foo", + ResourceVersion: "1", + }, + Spec: core.PodSpec{ + OS: podOS, + }, + Status: core.PodStatus{}, + } + newPod := &core.Pod{ + ObjectMeta: metav1.ObjectMeta{ + Name: "foo", + ResourceVersion: "1", + }, + Spec: core.PodSpec{ + OS: podOS, + }, + } + setContainerStatuses(&newPod.Status, tt.containerStatuses) + var expectedFieldErrors field.ErrorList + for _, err := range tt.wantFieldErrors { + expectedField := fmt.Sprintf("%s%s", field.NewPath("status").Child(containerType+"Statuses"), err.Field) + expectedFieldErrors = append(expectedFieldErrors, &field.Error{ + Type: err.Type, + Field: expectedField, + BadValue: err.BadValue, + Detail: err.Detail, + }) + } + errs := ValidatePodStatusUpdate(newPod, oldPod, PodValidationOptions{}) + if diff := cmp.Diff(expectedFieldErrors, errs); diff != "" { + t.Errorf("unexpected field errors (-want, +got):\n%s", diff) + } + }) + } + } + } +} diff --git a/pkg/apis/core/zz_generated.deepcopy.go b/pkg/apis/core/zz_generated.deepcopy.go index 9f6d29c39ea..42da6b803c0 100644 --- a/pkg/apis/core/zz_generated.deepcopy.go +++ b/pkg/apis/core/zz_generated.deepcopy.go @@ -1069,6 +1069,11 @@ func (in *ContainerStatus) DeepCopyInto(out *ContainerStatus) { (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.User != nil { + in, out := &in.User, &out.User + *out = new(ContainerUser) + (*in).DeepCopyInto(*out) + } return } @@ -1082,6 +1087,27 @@ func (in *ContainerStatus) DeepCopy() *ContainerStatus { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ContainerUser) DeepCopyInto(out *ContainerUser) { + *out = *in + if in.Linux != nil { + in, out := &in.Linux, &out.Linux + *out = new(LinuxContainerUser) + (*in).DeepCopyInto(*out) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ContainerUser. +func (in *ContainerUser) DeepCopy() *ContainerUser { + if in == nil { + return nil + } + out := new(ContainerUser) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *DaemonEndpoint) DeepCopyInto(out *DaemonEndpoint) { *out = *in @@ -2261,6 +2287,27 @@ func (in *LimitRangeSpec) DeepCopy() *LimitRangeSpec { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LinuxContainerUser) DeepCopyInto(out *LinuxContainerUser) { + *out = *in + if in.SupplementalGroups != nil { + in, out := &in.SupplementalGroups, &out.SupplementalGroups + *out = make([]int64, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LinuxContainerUser. +func (in *LinuxContainerUser) DeepCopy() *LinuxContainerUser { + if in == nil { + return nil + } + out := new(LinuxContainerUser) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *List) DeepCopyInto(out *List) { *out = *in @@ -4067,6 +4114,11 @@ func (in *PodSecurityContext) DeepCopyInto(out *PodSecurityContext) { *out = make([]int64, len(*in)) copy(*out, *in) } + if in.SupplementalGroupsPolicy != nil { + in, out := &in.SupplementalGroupsPolicy, &out.SupplementalGroupsPolicy + *out = new(SupplementalGroupsPolicy) + **out = **in + } if in.FSGroup != nil { in, out := &in.FSGroup, &out.FSGroup *out = new(int64) diff --git a/pkg/features/kube_features.go b/pkg/features/kube_features.go index 70321bcea70..8a1bd9e91a0 100644 --- a/pkg/features/kube_features.go +++ b/pkg/features/kube_features.go @@ -933,6 +933,13 @@ const ( // // Allows recursive read-only mounts. RecursiveReadOnlyMounts featuregate.Feature = "RecursiveReadOnlyMounts" + + // owner: @everpeace + // kep: https://kep.k8s.io/3619 + // alpha: v1.31 + // + // Enable SupplementalGroupsPolicy feature in PodSecurityContext + SupplementalGroupsPolicy featuregate.Feature = "SupplementalGroupsPolicy" ) func init() { @@ -1187,6 +1194,8 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS SELinuxMount: {Default: false, PreRelease: featuregate.Alpha}, + SupplementalGroupsPolicy: {Default: false, PreRelease: featuregate.Alpha}, + // inherited features from generic apiserver, relisted here to get a conflict if it is changed // unintentionally on either side: diff --git a/pkg/generated/openapi/zz_generated.openapi.go b/pkg/generated/openapi/zz_generated.openapi.go index 6d279a18d90..6cc6a2446f1 100644 --- a/pkg/generated/openapi/zz_generated.openapi.go +++ b/pkg/generated/openapi/zz_generated.openapi.go @@ -414,6 +414,7 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA "k8s.io/api/core/v1.ContainerStateTerminated": schema_k8sio_api_core_v1_ContainerStateTerminated(ref), "k8s.io/api/core/v1.ContainerStateWaiting": schema_k8sio_api_core_v1_ContainerStateWaiting(ref), "k8s.io/api/core/v1.ContainerStatus": schema_k8sio_api_core_v1_ContainerStatus(ref), + "k8s.io/api/core/v1.ContainerUser": schema_k8sio_api_core_v1_ContainerUser(ref), "k8s.io/api/core/v1.DaemonEndpoint": schema_k8sio_api_core_v1_DaemonEndpoint(ref), "k8s.io/api/core/v1.DownwardAPIProjection": schema_k8sio_api_core_v1_DownwardAPIProjection(ref), "k8s.io/api/core/v1.DownwardAPIVolumeFile": schema_k8sio_api_core_v1_DownwardAPIVolumeFile(ref), @@ -458,6 +459,7 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA "k8s.io/api/core/v1.LimitRangeItem": schema_k8sio_api_core_v1_LimitRangeItem(ref), "k8s.io/api/core/v1.LimitRangeList": schema_k8sio_api_core_v1_LimitRangeList(ref), "k8s.io/api/core/v1.LimitRangeSpec": schema_k8sio_api_core_v1_LimitRangeSpec(ref), + "k8s.io/api/core/v1.LinuxContainerUser": schema_k8sio_api_core_v1_LinuxContainerUser(ref), "k8s.io/api/core/v1.List": schema_k8sio_api_core_v1_List(ref), "k8s.io/api/core/v1.LoadBalancerIngress": schema_k8sio_api_core_v1_LoadBalancerIngress(ref), "k8s.io/api/core/v1.LoadBalancerStatus": schema_k8sio_api_core_v1_LoadBalancerStatus(ref), @@ -20991,12 +20993,39 @@ func schema_k8sio_api_core_v1_ContainerStatus(ref common.ReferenceCallback) comm }, }, }, + "user": { + SchemaProps: spec.SchemaProps{ + Description: "User represents user identity information initially attached to the first process of the container", + Ref: ref("k8s.io/api/core/v1.ContainerUser"), + }, + }, }, Required: []string{"name", "ready", "restartCount", "image", "imageID"}, }, }, Dependencies: []string{ - "k8s.io/api/core/v1.ContainerState", "k8s.io/api/core/v1.ResourceRequirements", "k8s.io/api/core/v1.VolumeMountStatus", "k8s.io/apimachinery/pkg/api/resource.Quantity"}, + "k8s.io/api/core/v1.ContainerState", "k8s.io/api/core/v1.ContainerUser", "k8s.io/api/core/v1.ResourceRequirements", "k8s.io/api/core/v1.VolumeMountStatus", "k8s.io/apimachinery/pkg/api/resource.Quantity"}, + } +} + +func schema_k8sio_api_core_v1_ContainerUser(ref common.ReferenceCallback) common.OpenAPIDefinition { + return common.OpenAPIDefinition{ + Schema: spec.Schema{ + SchemaProps: spec.SchemaProps{ + Description: "ContainerUser represents user identity information", + Type: []string{"object"}, + Properties: map[string]spec.Schema{ + "linux": { + SchemaProps: spec.SchemaProps{ + Description: "Linux holds user identity information initially attached to the first process of the containers in Linux. Note that the actual running identity can be changed if the process has enough privilege to do so.", + Ref: ref("k8s.io/api/core/v1.LinuxContainerUser"), + }, + }, + }, + }, + }, + Dependencies: []string{ + "k8s.io/api/core/v1.LinuxContainerUser"}, } } @@ -23592,6 +23621,56 @@ func schema_k8sio_api_core_v1_LimitRangeSpec(ref common.ReferenceCallback) commo } } +func schema_k8sio_api_core_v1_LinuxContainerUser(ref common.ReferenceCallback) common.OpenAPIDefinition { + return common.OpenAPIDefinition{ + Schema: spec.Schema{ + SchemaProps: spec.SchemaProps{ + Description: "LinuxContainerUser represents user identity information in Linux containers", + Type: []string{"object"}, + Properties: map[string]spec.Schema{ + "uid": { + SchemaProps: spec.SchemaProps{ + Description: "UID is the primary uid initially attached to the first process in the container", + Default: 0, + Type: []string{"integer"}, + Format: "int64", + }, + }, + "gid": { + SchemaProps: spec.SchemaProps{ + Description: "GID is the primary gid initially attached to the first process in the container", + Default: 0, + Type: []string{"integer"}, + Format: "int64", + }, + }, + "supplementalGroups": { + VendorExtensible: spec.VendorExtensible{ + Extensions: spec.Extensions{ + "x-kubernetes-list-type": "atomic", + }, + }, + SchemaProps: spec.SchemaProps{ + Description: "SupplementalGroups are the supplemental groups initially attached to the first process in the container", + Type: []string{"array"}, + Items: &spec.SchemaOrArray{ + Schema: &spec.Schema{ + SchemaProps: spec.SchemaProps{ + Default: 0, + Type: []string{"integer"}, + Format: "int64", + }, + }, + }, + }, + }, + }, + Required: []string{"uid", "gid"}, + }, + }, + } +} + func schema_k8sio_api_core_v1_List(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.OpenAPIDefinition{ Schema: spec.Schema{ @@ -27084,7 +27163,7 @@ func schema_k8sio_api_core_v1_PodSecurityContext(ref common.ReferenceCallback) c }, }, SchemaProps: spec.SchemaProps{ - Description: "A list of groups applied to the first process run in each container, in addition to the container's primary GID, the fsGroup (if specified), and group memberships defined in the container image for the uid of the container process. If unspecified, no additional groups are added to any container. Note that group memberships defined in the container image for the uid of the container process are still effective, even if they are not included in this list. Note that this field cannot be set when spec.os.name is windows.", + Description: "A list of groups applied to the first process run in each container, in addition to the container's primary GID and fsGroup (if specified). If the SupplementalGroupsPolicy feature is enabled, the supplementalGroupsPolicy field determines whether these are in addition to or instead of any group memberships defined in the container image. If unspecified, no additional groups are added, though group memberships defined in the container image may still be used, depending on the supplementalGroupsPolicy field. Note that this field cannot be set when spec.os.name is windows.", Type: []string{"array"}, Items: &spec.SchemaOrArray{ Schema: &spec.Schema{ @@ -27097,6 +27176,14 @@ func schema_k8sio_api_core_v1_PodSecurityContext(ref common.ReferenceCallback) c }, }, }, + "supplementalGroupsPolicy": { + SchemaProps: spec.SchemaProps{ + Description: "Defines how supplemental groups of the first container processes are calculated. Valid values are \"Merge\" and \"Strict\". If not specified, \"Merge\" is used. (Alpha) Using the field requires the SupplementalGroupsPolicy feature gate to be enabled and the container runtime must implement support for this feature. Note that this field cannot be set when spec.os.name is windows.\n\nPossible enum values:\n - `\"Merge\"` means that the container's provided SupplementalGroups and FsGroup (specified in SecurityContext) will be merged with the primary user's groups as defined in the container image (in /etc/group).\n - `\"Strict\"` means that the container's provided SupplementalGroups and FsGroup (specified in SecurityContext) will be used instead of any groups defined in the container image.", + Type: []string{"string"}, + Format: "", + Enum: []interface{}{"Merge", "Strict"}, + }, + }, "fsGroup": { SchemaProps: spec.SchemaProps{ Description: "A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume. Note that this field cannot be set when spec.os.name is windows.", @@ -27591,7 +27678,7 @@ func schema_k8sio_api_core_v1_PodSpec(ref common.ReferenceCallback) common.OpenA }, "os": { SchemaProps: spec.SchemaProps{ - Description: "Specifies the OS of the containers in the pod. Some pod and container fields are restricted if this is set.\n\nIf the OS field is set to linux, the following fields must be unset: -securityContext.windowsOptions\n\nIf the OS field is set to windows, following fields must be unset: - spec.hostPID - spec.hostIPC - spec.hostUsers - spec.securityContext.appArmorProfile - spec.securityContext.seLinuxOptions - spec.securityContext.seccompProfile - spec.securityContext.fsGroup - spec.securityContext.fsGroupChangePolicy - spec.securityContext.sysctls - spec.shareProcessNamespace - spec.securityContext.runAsUser - spec.securityContext.runAsGroup - spec.securityContext.supplementalGroups - spec.containers[*].securityContext.appArmorProfile - spec.containers[*].securityContext.seLinuxOptions - spec.containers[*].securityContext.seccompProfile - spec.containers[*].securityContext.capabilities - spec.containers[*].securityContext.readOnlyRootFilesystem - spec.containers[*].securityContext.privileged - spec.containers[*].securityContext.allowPrivilegeEscalation - spec.containers[*].securityContext.procMount - spec.containers[*].securityContext.runAsUser - spec.containers[*].securityContext.runAsGroup", + Description: "Specifies the OS of the containers in the pod. Some pod and container fields are restricted if this is set.\n\nIf the OS field is set to linux, the following fields must be unset: -securityContext.windowsOptions\n\nIf the OS field is set to windows, following fields must be unset: - spec.hostPID - spec.hostIPC - spec.hostUsers - spec.securityContext.appArmorProfile - spec.securityContext.seLinuxOptions - spec.securityContext.seccompProfile - spec.securityContext.fsGroup - spec.securityContext.fsGroupChangePolicy - spec.securityContext.sysctls - spec.shareProcessNamespace - spec.securityContext.runAsUser - spec.securityContext.runAsGroup - spec.securityContext.supplementalGroups - spec.securityContext.supplementalGroupsPolicy - spec.containers[*].securityContext.appArmorProfile - spec.containers[*].securityContext.seLinuxOptions - spec.containers[*].securityContext.seccompProfile - spec.containers[*].securityContext.capabilities - spec.containers[*].securityContext.readOnlyRootFilesystem - spec.containers[*].securityContext.privileged - spec.containers[*].securityContext.allowPrivilegeEscalation - spec.containers[*].securityContext.procMount - spec.containers[*].securityContext.runAsUser - spec.containers[*].securityContext.runAsGroup", Ref: ref("k8s.io/api/core/v1.PodOS"), }, }, diff --git a/pkg/kubelet/container/runtime.go b/pkg/kubelet/container/runtime.go index 539c97bb0e4..60d2ef1a82a 100644 --- a/pkg/kubelet/container/runtime.go +++ b/pkg/kubelet/container/runtime.go @@ -369,6 +369,29 @@ type Status struct { Message string // CPU and memory resources for this container Resources *ContainerResources + // User identity information of the first process of this container + User *ContainerUser +} + +// ContainerUser represents user identity information +type ContainerUser struct { + // Linux holds user identity information of the first process of the containers in Linux. + // Note that this field cannot be set when spec.os.name is windows. + Linux *LinuxContainerUser + + // Windows holds user identity information of the first process of the containers in Windows + // This is just reserved for future use. + // Windows *WindowsContainerUser +} + +// LinuxContainerUser represents user identity information in Linux containers +type LinuxContainerUser struct { + // UID is the primary uid of the first process in the container + UID int64 + // GID is the primary gid of the first process in the container + GID int64 + // SupplementalGroups are the supplemental groups attached to the first process in the container + SupplementalGroups []int64 } // FindContainerStatusByName returns container status in the pod status with the given name. diff --git a/pkg/kubelet/kubelet_pods.go b/pkg/kubelet/kubelet_pods.go index 98779b4c388..184ea654092 100644 --- a/pkg/kubelet/kubelet_pods.go +++ b/pkg/kubelet/kubelet_pods.go @@ -2125,6 +2125,23 @@ func (kl *Kubelet) convertToAPIContainerStatuses(pod *v1.Pod, podStatus *kubecon return resources } + convertContainerStatusUser := func(cStatus *kubecontainer.Status) *v1.ContainerUser { + if cStatus.User == nil { + return nil + } + + user := &v1.ContainerUser{} + if cStatus.User.Linux != nil { + user.Linux = &v1.LinuxContainerUser{ + UID: cStatus.User.Linux.UID, + GID: cStatus.User.Linux.GID, + SupplementalGroups: cStatus.User.Linux.SupplementalGroups, + } + } + + return user + } + // Fetch old containers statuses from old pod status. oldStatuses := make(map[string]v1.ContainerStatus, len(containers)) for _, status := range previousStatus { @@ -2278,6 +2295,9 @@ func (kl *Kubelet) convertToAPIContainerStatuses(pod *v1.Pod, podStatus *kubecon status.Resources = convertContainerStatusResources(cName, status, cStatus, oldStatuses) } } + if utilfeature.DefaultFeatureGate.Enabled(features.SupplementalGroupsPolicy) { + status.User = convertContainerStatusUser(cStatus) + } if containerSeen[cName] == 0 { statuses[cName] = status } else { diff --git a/pkg/kubelet/kubelet_pods_test.go b/pkg/kubelet/kubelet_pods_test.go index e1559f1e0dc..0e25356c6a4 100644 --- a/pkg/kubelet/kubelet_pods_test.go +++ b/pkg/kubelet/kubelet_pods_test.go @@ -4761,6 +4761,124 @@ func TestConvertToAPIContainerStatusesForResources(t *testing.T) { } } +func TestConvertToAPIContainerStatusesForUser(t *testing.T) { + nowTime := time.Now() + testContainerName := "ctr0" + testContainerID := kubecontainer.ContainerID{Type: "test", ID: testContainerName} + testContainer := v1.Container{ + Name: testContainerName, + Image: "img", + } + testContainerStatus := v1.ContainerStatus{ + Name: testContainerName, + } + testPod := &v1.Pod{ + ObjectMeta: metav1.ObjectMeta{ + UID: "123456", + Name: "foo", + Namespace: "bar", + }, + Spec: v1.PodSpec{ + Containers: []v1.Container{testContainer}, + }, + Status: v1.PodStatus{ + ContainerStatuses: []v1.ContainerStatus{testContainerStatus}, + }, + } + testPodStaus := func(user *kubecontainer.ContainerUser) *kubecontainer.PodStatus { + testKubeContainerStatus := kubecontainer.Status{ + Name: testContainerName, + ID: testContainerID, + Image: "img", + State: kubecontainer.ContainerStateRunning, + StartedAt: nowTime, + User: user, + } + return &kubecontainer.PodStatus{ + ID: testPod.UID, + Name: testPod.Name, + Namespace: testPod.Namespace, + ContainerStatuses: []*kubecontainer.Status{&testKubeContainerStatus}, + } + } + expectedContainerStatuses := func(user *v1.ContainerUser) []v1.ContainerStatus { + return []v1.ContainerStatus{ + { + Name: testContainerName, + ContainerID: testContainerID.String(), + Image: "img", + State: v1.ContainerState{Running: &v1.ContainerStateRunning{StartedAt: metav1.NewTime(nowTime)}}, + User: user, + }, + } + } + testKubelet := newTestKubelet(t, false) + defer testKubelet.Cleanup() + kubelet := testKubelet.kubelet + kubelet.statusManager = status.NewFakeManager() + + for tdesc, tc := range map[string]struct { + testPodStatus *kubecontainer.PodStatus + featureEnabled bool + expectedContainerStatus []v1.ContainerStatus + }{ + "nil user, SupplementalGroupsPolicy is disabled": { + testPodStaus(nil), + false, + expectedContainerStatuses(nil), + }, + "empty user, SupplementalGroupsPolicy is disabled": { + testPodStaus(&kubecontainer.ContainerUser{}), + false, + expectedContainerStatuses(nil), + }, + "linux user, SupplementalGroupsPolicy is disabled": { + testPodStaus(&kubecontainer.ContainerUser{ + Linux: &kubecontainer.LinuxContainerUser{ + UID: 0, + GID: 0, + SupplementalGroups: []int64{10}, + }, + }), + false, + expectedContainerStatuses(nil), + }, + "nil user, SupplementalGroupsPolicy is enabled": { + testPodStaus(nil), + true, + expectedContainerStatuses(nil), + }, + "empty user, SupplementalGroupsPolicy is enabled": { + testPodStaus(&kubecontainer.ContainerUser{}), + true, + expectedContainerStatuses(&v1.ContainerUser{}), + }, + "linux user, SupplementalGroupsPolicy is enabled": { + testPodStaus(&kubecontainer.ContainerUser{ + Linux: &kubecontainer.LinuxContainerUser{ + UID: 0, + GID: 0, + SupplementalGroups: []int64{10}, + }, + }), + true, + expectedContainerStatuses(&v1.ContainerUser{ + Linux: &v1.LinuxContainerUser{ + UID: 0, + GID: 0, + SupplementalGroups: []int64{10}, + }, + }), + }, + } { + featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.SupplementalGroupsPolicy, tc.featureEnabled) + tPod := testPod.DeepCopy() + t.Logf("TestCase: %q", tdesc) + cStatuses := kubelet.convertToAPIContainerStatuses(tPod, tc.testPodStatus, tPod.Status.ContainerStatuses, tPod.Spec.Containers, false, false) + assert.Equal(t, tc.expectedContainerStatus, cStatuses) + } +} + func TestKubelet_HandlePodCleanups(t *testing.T) { one := int64(1) two := int64(2) diff --git a/pkg/kubelet/kuberuntime/kuberuntime_container.go b/pkg/kubelet/kuberuntime/kuberuntime_container.go index d7cab108c9c..0267b37cc7b 100644 --- a/pkg/kubelet/kuberuntime/kuberuntime_container.go +++ b/pkg/kubelet/kuberuntime/kuberuntime_container.go @@ -617,6 +617,11 @@ func toKubeContainerStatus(status *runtimeapi.ContainerStatus, runtimeName strin imageID = status.ImageId } + var cStatusUser *kubecontainer.ContainerUser + if utilfeature.DefaultFeatureGate.Enabled(features.SupplementalGroupsPolicy) { + cStatusUser = toKubeContainerUser(status.User) + } + cStatus := &kubecontainer.Status{ ID: kubecontainer.ContainerID{ Type: runtimeName, @@ -632,6 +637,7 @@ func toKubeContainerStatus(status *runtimeapi.ContainerStatus, runtimeName strin State: toKubeContainerState(status.State), CreatedAt: time.Unix(0, status.CreatedAt), Resources: cStatusResources, + User: cStatusUser, } if status.State != runtimeapi.ContainerState_CONTAINER_CREATED { diff --git a/pkg/kubelet/kuberuntime/kuberuntime_container_linux.go b/pkg/kubelet/kuberuntime/kuberuntime_container_linux.go index 964322a8523..132ff43cfe7 100644 --- a/pkg/kubelet/kuberuntime/kuberuntime_container_linux.go +++ b/pkg/kubelet/kuberuntime/kuberuntime_container_linux.go @@ -437,3 +437,20 @@ func calcSwapForBurstablePods(containerMemoryRequest, nodeTotalMemory, totalPods return int64(swapAllocation), nil } + +func toKubeContainerUser(statusUser *runtimeapi.ContainerUser) *kubecontainer.ContainerUser { + if statusUser == nil { + return nil + } + + user := &kubecontainer.ContainerUser{} + if statusUser.GetLinux() != nil { + user.Linux = &kubecontainer.LinuxContainerUser{ + UID: statusUser.GetLinux().GetUid(), + GID: statusUser.GetLinux().GetGid(), + SupplementalGroups: statusUser.GetLinux().GetSupplementalGroups(), + } + } + + return user +} diff --git a/pkg/kubelet/kuberuntime/kuberuntime_container_linux_test.go b/pkg/kubelet/kuberuntime/kuberuntime_container_linux_test.go index 0a709824e8c..0530c42435b 100644 --- a/pkg/kubelet/kuberuntime/kuberuntime_container_linux_test.go +++ b/pkg/kubelet/kuberuntime/kuberuntime_container_linux_test.go @@ -698,6 +698,92 @@ func TestGenerateLinuxContainerConfigNamespaces(t *testing.T) { } } +var ( + supplementalGroupsPolicyUnSupported = v1.SupplementalGroupsPolicy("UnSupported") + supplementalGroupsPolicyMerge = v1.SupplementalGroupsPolicyMerge + supplementalGroupsPolicyStrict = v1.SupplementalGroupsPolicyStrict +) + +func TestGenerateLinuxConfigSupplementalGroupsPolicy(t *testing.T) { + _, _, m, err := createTestRuntimeManager() + if err != nil { + t.Fatalf("error creating test RuntimeManager: %v", err) + } + + containerName := "test" + for _, tc := range []struct { + name string + pod *v1.Pod + expected runtimeapi.SupplementalGroupsPolicy + expectErr bool + expectedErrMsg string + }{{ + name: "Merge SupplementalGroupsPolicy should convert to Merge", + pod: &v1.Pod{ + Spec: v1.PodSpec{ + SecurityContext: &v1.PodSecurityContext{ + SupplementalGroupsPolicy: &supplementalGroupsPolicyMerge, + }, + Containers: []v1.Container{ + {Name: containerName}, + }, + }, + }, + expected: runtimeapi.SupplementalGroupsPolicy_Merge, + }, { + name: "Strict SupplementalGroupsPolicy should convert to Strict", + pod: &v1.Pod{ + Spec: v1.PodSpec{ + SecurityContext: &v1.PodSecurityContext{ + SupplementalGroupsPolicy: &supplementalGroupsPolicyStrict, + }, + Containers: []v1.Container{ + {Name: containerName}, + }, + }, + }, + expected: runtimeapi.SupplementalGroupsPolicy_Strict, + }, { + name: "nil SupplementalGroupsPolicy should convert to Merge", + pod: &v1.Pod{ + Spec: v1.PodSpec{ + SecurityContext: &v1.PodSecurityContext{}, + Containers: []v1.Container{ + {Name: containerName}, + }, + }, + }, + expected: runtimeapi.SupplementalGroupsPolicy_Merge, + }, { + name: "unsupported SupplementalGroupsPolicy should raise an error", + pod: &v1.Pod{ + Spec: v1.PodSpec{ + SecurityContext: &v1.PodSecurityContext{ + SupplementalGroupsPolicy: &supplementalGroupsPolicyUnSupported, + }, + Containers: []v1.Container{ + {Name: containerName}, + }, + }, + }, + expectErr: true, + expectedErrMsg: "unsupported supplementalGroupsPolicy: UnSupported", + }, + } { + t.Run(tc.name, func(t *testing.T) { + actual, err := m.generateLinuxContainerConfig(&tc.pod.Spec.Containers[0], tc.pod, nil, "", nil, false) + if !tc.expectErr { + assert.Emptyf(t, err, "Unexpected error") + assert.EqualValuesf(t, tc.expected, actual.SecurityContext.SupplementalGroupsPolicy, "SupplementalGroupPolicy for %s", tc.name) + } else { + assert.NotEmpty(t, err, "Unexpected success") + assert.Empty(t, actual, "Unexpected non empty value") + assert.Contains(t, err.Error(), tc.expectedErrMsg, "Error for %s", tc.name) + } + }) + } +} + func TestGenerateLinuxContainerResources(t *testing.T) { _, _, m, err := createTestRuntimeManager() assert.NoError(t, err) diff --git a/pkg/kubelet/kuberuntime/kuberuntime_container_test.go b/pkg/kubelet/kuberuntime/kuberuntime_container_test.go index fe0e3c0ef44..b010c98d11a 100644 --- a/pkg/kubelet/kuberuntime/kuberuntime_container_test.go +++ b/pkg/kubelet/kuberuntime/kuberuntime_container_test.go @@ -369,6 +369,90 @@ func TestToKubeContainerStatusWithResources(t *testing.T) { } } +func TestToKubeContainerStatusWithUser(t *testing.T) { + if goruntime.GOOS == "windows" { + t.Skip("Updating Pod Container User is not supported on Windows.") + } + + cid := &kubecontainer.ContainerID{Type: "testRuntime", ID: "dummyid"} + meta := &runtimeapi.ContainerMetadata{Name: "cname", Attempt: 3} + imageSpec := &runtimeapi.ImageSpec{Image: "fimage"} + var ( + createdAt int64 = 327 + startedAt int64 = 999 + ) + + for desc, test := range map[string]struct { + input *runtimeapi.ContainerUser + expected *kubecontainer.ContainerUser + featureEnabled bool + }{ + "non nil user, SupplementalGroupsPolicy is disabled": { + input: &runtimeapi.ContainerUser{ + Linux: &runtimeapi.LinuxContainerUser{ + Uid: 0, + Gid: 0, + SupplementalGroups: []int64{10}, + }, + }, + expected: nil, + featureEnabled: false, + }, + "empty user, SupplementalGroupsPolicy is disabled": { + input: &runtimeapi.ContainerUser{}, + expected: nil, + featureEnabled: false, + }, + "nil user, SupplementalGroupsPolicy is disabled": { + input: nil, + expected: nil, + featureEnabled: false, + }, + "non nil user, SupplementalGroupsPolicy is enabled": { + input: &runtimeapi.ContainerUser{ + Linux: &runtimeapi.LinuxContainerUser{ + Uid: 0, + Gid: 0, + SupplementalGroups: []int64{10}, + }, + }, + expected: &kubecontainer.ContainerUser{ + Linux: &kubecontainer.LinuxContainerUser{ + UID: 0, + GID: 0, + SupplementalGroups: []int64{10}, + }, + }, + featureEnabled: true, + }, + "empty user, SupplementalGroupsPolicy is enabled": { + input: &runtimeapi.ContainerUser{}, + expected: &kubecontainer.ContainerUser{}, + featureEnabled: true, + }, + "nil user, SupplementalGroupsPolicy is enabled": { + input: nil, + expected: nil, + featureEnabled: true, + }, + } { + t.Run(desc, func(t *testing.T) { + featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.SupplementalGroupsPolicy, test.featureEnabled) + cStatus := &runtimeapi.ContainerStatus{ + Id: cid.ID, + Metadata: meta, + Image: imageSpec, + State: runtimeapi.ContainerState_CONTAINER_RUNNING, + CreatedAt: createdAt, + StartedAt: startedAt, + User: test.input, + } + actual := toKubeContainerStatus(cStatus, cid.Type) + assert.EqualValues(t, test.expected, actual.User, desc) + }) + } +} + func testLifeCycleHook(t *testing.T, testPod *v1.Pod, testContainer *v1.Container) { // Setup diff --git a/pkg/kubelet/kuberuntime/kuberuntime_container_unsupported.go b/pkg/kubelet/kuberuntime/kuberuntime_container_unsupported.go index b7d460ec791..55465475847 100644 --- a/pkg/kubelet/kuberuntime/kuberuntime_container_unsupported.go +++ b/pkg/kubelet/kuberuntime/kuberuntime_container_unsupported.go @@ -38,3 +38,7 @@ func (m *kubeGenericRuntimeManager) generateContainerResources(pod *v1.Pod, cont func toKubeContainerResources(statusResources *runtimeapi.ContainerResources) *kubecontainer.ContainerResources { return nil } + +func toKubeContainerUser(statusUser *runtimeapi.ContainerUser) *kubecontainer.ContainerUser { + return nil +} diff --git a/pkg/kubelet/kuberuntime/kuberuntime_container_windows.go b/pkg/kubelet/kuberuntime/kuberuntime_container_windows.go index ad5a774a388..eb64c27db18 100644 --- a/pkg/kubelet/kuberuntime/kuberuntime_container_windows.go +++ b/pkg/kubelet/kuberuntime/kuberuntime_container_windows.go @@ -173,3 +173,7 @@ func toKubeContainerResources(statusResources *runtimeapi.ContainerResources) *k } return cStatusResources } + +func toKubeContainerUser(statusUser *runtimeapi.ContainerUser) *kubecontainer.ContainerUser { + return nil +} diff --git a/pkg/kubelet/kuberuntime/kuberuntime_sandbox.go b/pkg/kubelet/kuberuntime/kuberuntime_sandbox.go index abf5e5cb8b5..27e4ccee691 100644 --- a/pkg/kubelet/kuberuntime/kuberuntime_sandbox.go +++ b/pkg/kubelet/kuberuntime/kuberuntime_sandbox.go @@ -210,6 +210,14 @@ func (m *kubeGenericRuntimeManager) generatePodSandboxLinuxConfig(pod *v1.Pod) ( lc.SecurityContext.SupplementalGroups = append(lc.SecurityContext.SupplementalGroups, int64(sg)) } } + if sc.SupplementalGroupsPolicy != nil { + policyValue, ok := runtimeapi.SupplementalGroupsPolicy_value[string(*sc.SupplementalGroupsPolicy)] + if !ok { + return nil, fmt.Errorf("unsupported supplementalGroupsPolicy: %s", string(*sc.SupplementalGroupsPolicy)) + } + lc.SecurityContext.SupplementalGroupsPolicy = runtimeapi.SupplementalGroupsPolicy(policyValue) + } + if sc.SELinuxOptions != nil && runtime.GOOS != "windows" { lc.SecurityContext.SelinuxOptions = &runtimeapi.SELinuxOption{ User: sc.SELinuxOptions.User, diff --git a/pkg/kubelet/kuberuntime/kuberuntime_sandbox_linux_test.go b/pkg/kubelet/kuberuntime/kuberuntime_sandbox_linux_test.go index e302ee9c263..6d87e946899 100644 --- a/pkg/kubelet/kuberuntime/kuberuntime_sandbox_linux_test.go +++ b/pkg/kubelet/kuberuntime/kuberuntime_sandbox_linux_test.go @@ -209,3 +209,55 @@ func newTestPodWithLinuxSecurityContext() *v1.Pod { return pod } + +func newSupplementalGroupsPolicyPod(supplementalGroupsPolicy *v1.SupplementalGroupsPolicy) *v1.Pod { + pod := newTestPod() + if pod.Spec.SecurityContext == nil { + pod.Spec.SecurityContext = &v1.PodSecurityContext{} + } + pod.Spec.SecurityContext.SupplementalGroupsPolicy = supplementalGroupsPolicy + return pod +} + +func TestGeneratePodSandboxLinuxConfigSupplementalGroupsPolicy(t *testing.T) { + _, _, m, err := createTestRuntimeManager() + require.NoError(t, err) + + tests := []struct { + description string + pod *v1.Pod + expected string + expectedErr bool + expectedErrMsg string + }{{ + description: "SupplementalGroups=nil should convert to Merge", + pod: newSupplementalGroupsPolicyPod(nil), + expected: runtimeapi.SupplementalGroupsPolicy_Merge.String(), + }, { + description: "SupplementalGroups=Merge should convert to Merge", + pod: newSupplementalGroupsPolicyPod(&supplementalGroupsPolicyMerge), + expected: runtimeapi.SupplementalGroupsPolicy_Merge.String(), + }, { + description: "SupplementalGroups=Strict should convert to Strict", + pod: newSupplementalGroupsPolicyPod(&supplementalGroupsPolicyStrict), + expected: runtimeapi.SupplementalGroupsPolicy_Strict.String(), + }, { + description: "SupplementalGroups=Unsupported should raise an error", + pod: newSupplementalGroupsPolicyPod(&supplementalGroupsPolicyUnSupported), + expectedErr: true, + expectedErrMsg: "unsupported supplementalGroupsPolicy: UnSupported", + }, + } + + for i, test := range tests { + config, err := m.generatePodSandboxLinuxConfig(test.pod) + if test.expectedErr { + assert.NotEmptyf(t, err, "TestCase[%d]: %s", i, test.description) + assert.Emptyf(t, config, "TestCase[%d]: %s", i, test.description) + assert.Containsf(t, err.Error(), test.expectedErrMsg, "TestCase[%d]: %s", i, test.description) + } else { + actualPolicy := config.SecurityContext.SupplementalGroupsPolicy.String() + assert.EqualValues(t, test.expected, actualPolicy, "TestCase[%d]: %s", i, test.description) + } + } +} diff --git a/pkg/kubelet/kuberuntime/security_context.go b/pkg/kubelet/kuberuntime/security_context.go index 96879b812fe..6842eee02c6 100644 --- a/pkg/kubelet/kuberuntime/security_context.go +++ b/pkg/kubelet/kuberuntime/security_context.go @@ -17,6 +17,8 @@ limitations under the License. package kuberuntime import ( + "fmt" + v1 "k8s.io/api/core/v1" runtimeapi "k8s.io/cri-api/pkg/apis/runtime/v1" runtimeutil "k8s.io/kubernetes/pkg/kubelet/kuberuntime/util" @@ -71,6 +73,14 @@ func (m *kubeGenericRuntimeManager) determineEffectiveSecurityContext(pod *v1.Po synthesized.SupplementalGroups = append(synthesized.SupplementalGroups, int64(sg)) } } + + if podSc.SupplementalGroupsPolicy != nil { + policyValue, ok := runtimeapi.SupplementalGroupsPolicy_value[string(*podSc.SupplementalGroupsPolicy)] + if !ok { + return nil, fmt.Errorf("unsupported supplementalGroupsPolicy: %s", string(*podSc.SupplementalGroupsPolicy)) + } + synthesized.SupplementalGroupsPolicy = runtimeapi.SupplementalGroupsPolicy(policyValue) + } } if groups := m.runtimeHelper.GetExtraSupplementalGroupsForPod(pod); len(groups) > 0 { synthesized.SupplementalGroups = append(synthesized.SupplementalGroups, groups...) diff --git a/staging/src/k8s.io/api/core/v1/generated.pb.go b/staging/src/k8s.io/api/core/v1/generated.pb.go index d52d8da1896..2a698a69939 100644 --- a/staging/src/k8s.io/api/core/v1/generated.pb.go +++ b/staging/src/k8s.io/api/core/v1/generated.pb.go @@ -1113,10 +1113,38 @@ func (m *ContainerStatus) XXX_DiscardUnknown() { var xxx_messageInfo_ContainerStatus proto.InternalMessageInfo +func (m *ContainerUser) Reset() { *m = ContainerUser{} } +func (*ContainerUser) ProtoMessage() {} +func (*ContainerUser) Descriptor() ([]byte, []int) { + return fileDescriptor_6c07b07c062484ab, []int{38} +} +func (m *ContainerUser) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ContainerUser) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *ContainerUser) XXX_Merge(src proto.Message) { + xxx_messageInfo_ContainerUser.Merge(m, src) +} +func (m *ContainerUser) XXX_Size() int { + return m.Size() +} +func (m *ContainerUser) XXX_DiscardUnknown() { + xxx_messageInfo_ContainerUser.DiscardUnknown(m) +} + +var xxx_messageInfo_ContainerUser proto.InternalMessageInfo + func (m *DaemonEndpoint) Reset() { *m = DaemonEndpoint{} } func (*DaemonEndpoint) ProtoMessage() {} func (*DaemonEndpoint) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{38} + return fileDescriptor_6c07b07c062484ab, []int{39} } func (m *DaemonEndpoint) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1144,7 +1172,7 @@ var xxx_messageInfo_DaemonEndpoint proto.InternalMessageInfo func (m *DownwardAPIProjection) Reset() { *m = DownwardAPIProjection{} } func (*DownwardAPIProjection) ProtoMessage() {} func (*DownwardAPIProjection) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{39} + return fileDescriptor_6c07b07c062484ab, []int{40} } func (m *DownwardAPIProjection) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1172,7 +1200,7 @@ var xxx_messageInfo_DownwardAPIProjection proto.InternalMessageInfo func (m *DownwardAPIVolumeFile) Reset() { *m = DownwardAPIVolumeFile{} } func (*DownwardAPIVolumeFile) ProtoMessage() {} func (*DownwardAPIVolumeFile) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{40} + return fileDescriptor_6c07b07c062484ab, []int{41} } func (m *DownwardAPIVolumeFile) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1200,7 +1228,7 @@ var xxx_messageInfo_DownwardAPIVolumeFile proto.InternalMessageInfo func (m *DownwardAPIVolumeSource) Reset() { *m = DownwardAPIVolumeSource{} } func (*DownwardAPIVolumeSource) ProtoMessage() {} func (*DownwardAPIVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{41} + return fileDescriptor_6c07b07c062484ab, []int{42} } func (m *DownwardAPIVolumeSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1228,7 +1256,7 @@ var xxx_messageInfo_DownwardAPIVolumeSource proto.InternalMessageInfo func (m *EmptyDirVolumeSource) Reset() { *m = EmptyDirVolumeSource{} } func (*EmptyDirVolumeSource) ProtoMessage() {} func (*EmptyDirVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{42} + return fileDescriptor_6c07b07c062484ab, []int{43} } func (m *EmptyDirVolumeSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1256,7 +1284,7 @@ var xxx_messageInfo_EmptyDirVolumeSource proto.InternalMessageInfo func (m *EndpointAddress) Reset() { *m = EndpointAddress{} } func (*EndpointAddress) ProtoMessage() {} func (*EndpointAddress) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{43} + return fileDescriptor_6c07b07c062484ab, []int{44} } func (m *EndpointAddress) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1284,7 +1312,7 @@ var xxx_messageInfo_EndpointAddress proto.InternalMessageInfo func (m *EndpointPort) Reset() { *m = EndpointPort{} } func (*EndpointPort) ProtoMessage() {} func (*EndpointPort) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{44} + return fileDescriptor_6c07b07c062484ab, []int{45} } func (m *EndpointPort) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1312,7 +1340,7 @@ var xxx_messageInfo_EndpointPort proto.InternalMessageInfo func (m *EndpointSubset) Reset() { *m = EndpointSubset{} } func (*EndpointSubset) ProtoMessage() {} func (*EndpointSubset) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{45} + return fileDescriptor_6c07b07c062484ab, []int{46} } func (m *EndpointSubset) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1340,7 +1368,7 @@ var xxx_messageInfo_EndpointSubset proto.InternalMessageInfo func (m *Endpoints) Reset() { *m = Endpoints{} } func (*Endpoints) ProtoMessage() {} func (*Endpoints) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{46} + return fileDescriptor_6c07b07c062484ab, []int{47} } func (m *Endpoints) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1368,7 +1396,7 @@ var xxx_messageInfo_Endpoints proto.InternalMessageInfo func (m *EndpointsList) Reset() { *m = EndpointsList{} } func (*EndpointsList) ProtoMessage() {} func (*EndpointsList) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{47} + return fileDescriptor_6c07b07c062484ab, []int{48} } func (m *EndpointsList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1396,7 +1424,7 @@ var xxx_messageInfo_EndpointsList proto.InternalMessageInfo func (m *EnvFromSource) Reset() { *m = EnvFromSource{} } func (*EnvFromSource) ProtoMessage() {} func (*EnvFromSource) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{48} + return fileDescriptor_6c07b07c062484ab, []int{49} } func (m *EnvFromSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1424,7 +1452,7 @@ var xxx_messageInfo_EnvFromSource proto.InternalMessageInfo func (m *EnvVar) Reset() { *m = EnvVar{} } func (*EnvVar) ProtoMessage() {} func (*EnvVar) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{49} + return fileDescriptor_6c07b07c062484ab, []int{50} } func (m *EnvVar) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1452,7 +1480,7 @@ var xxx_messageInfo_EnvVar proto.InternalMessageInfo func (m *EnvVarSource) Reset() { *m = EnvVarSource{} } func (*EnvVarSource) ProtoMessage() {} func (*EnvVarSource) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{50} + return fileDescriptor_6c07b07c062484ab, []int{51} } func (m *EnvVarSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1480,7 +1508,7 @@ var xxx_messageInfo_EnvVarSource proto.InternalMessageInfo func (m *EphemeralContainer) Reset() { *m = EphemeralContainer{} } func (*EphemeralContainer) ProtoMessage() {} func (*EphemeralContainer) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{51} + return fileDescriptor_6c07b07c062484ab, []int{52} } func (m *EphemeralContainer) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1508,7 +1536,7 @@ var xxx_messageInfo_EphemeralContainer proto.InternalMessageInfo func (m *EphemeralContainerCommon) Reset() { *m = EphemeralContainerCommon{} } func (*EphemeralContainerCommon) ProtoMessage() {} func (*EphemeralContainerCommon) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{52} + return fileDescriptor_6c07b07c062484ab, []int{53} } func (m *EphemeralContainerCommon) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1536,7 +1564,7 @@ var xxx_messageInfo_EphemeralContainerCommon proto.InternalMessageInfo func (m *EphemeralVolumeSource) Reset() { *m = EphemeralVolumeSource{} } func (*EphemeralVolumeSource) ProtoMessage() {} func (*EphemeralVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{53} + return fileDescriptor_6c07b07c062484ab, []int{54} } func (m *EphemeralVolumeSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1564,7 +1592,7 @@ var xxx_messageInfo_EphemeralVolumeSource proto.InternalMessageInfo func (m *Event) Reset() { *m = Event{} } func (*Event) ProtoMessage() {} func (*Event) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{54} + return fileDescriptor_6c07b07c062484ab, []int{55} } func (m *Event) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1592,7 +1620,7 @@ var xxx_messageInfo_Event proto.InternalMessageInfo func (m *EventList) Reset() { *m = EventList{} } func (*EventList) ProtoMessage() {} func (*EventList) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{55} + return fileDescriptor_6c07b07c062484ab, []int{56} } func (m *EventList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1620,7 +1648,7 @@ var xxx_messageInfo_EventList proto.InternalMessageInfo func (m *EventSeries) Reset() { *m = EventSeries{} } func (*EventSeries) ProtoMessage() {} func (*EventSeries) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{56} + return fileDescriptor_6c07b07c062484ab, []int{57} } func (m *EventSeries) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1648,7 +1676,7 @@ var xxx_messageInfo_EventSeries proto.InternalMessageInfo func (m *EventSource) Reset() { *m = EventSource{} } func (*EventSource) ProtoMessage() {} func (*EventSource) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{57} + return fileDescriptor_6c07b07c062484ab, []int{58} } func (m *EventSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1676,7 +1704,7 @@ var xxx_messageInfo_EventSource proto.InternalMessageInfo func (m *ExecAction) Reset() { *m = ExecAction{} } func (*ExecAction) ProtoMessage() {} func (*ExecAction) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{58} + return fileDescriptor_6c07b07c062484ab, []int{59} } func (m *ExecAction) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1704,7 +1732,7 @@ var xxx_messageInfo_ExecAction proto.InternalMessageInfo func (m *FCVolumeSource) Reset() { *m = FCVolumeSource{} } func (*FCVolumeSource) ProtoMessage() {} func (*FCVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{59} + return fileDescriptor_6c07b07c062484ab, []int{60} } func (m *FCVolumeSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1732,7 +1760,7 @@ var xxx_messageInfo_FCVolumeSource proto.InternalMessageInfo func (m *FlexPersistentVolumeSource) Reset() { *m = FlexPersistentVolumeSource{} } func (*FlexPersistentVolumeSource) ProtoMessage() {} func (*FlexPersistentVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{60} + return fileDescriptor_6c07b07c062484ab, []int{61} } func (m *FlexPersistentVolumeSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1760,7 +1788,7 @@ var xxx_messageInfo_FlexPersistentVolumeSource proto.InternalMessageInfo func (m *FlexVolumeSource) Reset() { *m = FlexVolumeSource{} } func (*FlexVolumeSource) ProtoMessage() {} func (*FlexVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{61} + return fileDescriptor_6c07b07c062484ab, []int{62} } func (m *FlexVolumeSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1788,7 +1816,7 @@ var xxx_messageInfo_FlexVolumeSource proto.InternalMessageInfo func (m *FlockerVolumeSource) Reset() { *m = FlockerVolumeSource{} } func (*FlockerVolumeSource) ProtoMessage() {} func (*FlockerVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{62} + return fileDescriptor_6c07b07c062484ab, []int{63} } func (m *FlockerVolumeSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1816,7 +1844,7 @@ var xxx_messageInfo_FlockerVolumeSource proto.InternalMessageInfo func (m *GCEPersistentDiskVolumeSource) Reset() { *m = GCEPersistentDiskVolumeSource{} } func (*GCEPersistentDiskVolumeSource) ProtoMessage() {} func (*GCEPersistentDiskVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{63} + return fileDescriptor_6c07b07c062484ab, []int{64} } func (m *GCEPersistentDiskVolumeSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1844,7 +1872,7 @@ var xxx_messageInfo_GCEPersistentDiskVolumeSource proto.InternalMessageInfo func (m *GRPCAction) Reset() { *m = GRPCAction{} } func (*GRPCAction) ProtoMessage() {} func (*GRPCAction) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{64} + return fileDescriptor_6c07b07c062484ab, []int{65} } func (m *GRPCAction) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1872,7 +1900,7 @@ var xxx_messageInfo_GRPCAction proto.InternalMessageInfo func (m *GitRepoVolumeSource) Reset() { *m = GitRepoVolumeSource{} } func (*GitRepoVolumeSource) ProtoMessage() {} func (*GitRepoVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{65} + return fileDescriptor_6c07b07c062484ab, []int{66} } func (m *GitRepoVolumeSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1900,7 +1928,7 @@ var xxx_messageInfo_GitRepoVolumeSource proto.InternalMessageInfo func (m *GlusterfsPersistentVolumeSource) Reset() { *m = GlusterfsPersistentVolumeSource{} } func (*GlusterfsPersistentVolumeSource) ProtoMessage() {} func (*GlusterfsPersistentVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{66} + return fileDescriptor_6c07b07c062484ab, []int{67} } func (m *GlusterfsPersistentVolumeSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1928,7 +1956,7 @@ var xxx_messageInfo_GlusterfsPersistentVolumeSource proto.InternalMessageInfo func (m *GlusterfsVolumeSource) Reset() { *m = GlusterfsVolumeSource{} } func (*GlusterfsVolumeSource) ProtoMessage() {} func (*GlusterfsVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{67} + return fileDescriptor_6c07b07c062484ab, []int{68} } func (m *GlusterfsVolumeSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1956,7 +1984,7 @@ var xxx_messageInfo_GlusterfsVolumeSource proto.InternalMessageInfo func (m *HTTPGetAction) Reset() { *m = HTTPGetAction{} } func (*HTTPGetAction) ProtoMessage() {} func (*HTTPGetAction) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{68} + return fileDescriptor_6c07b07c062484ab, []int{69} } func (m *HTTPGetAction) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1984,7 +2012,7 @@ var xxx_messageInfo_HTTPGetAction proto.InternalMessageInfo func (m *HTTPHeader) Reset() { *m = HTTPHeader{} } func (*HTTPHeader) ProtoMessage() {} func (*HTTPHeader) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{69} + return fileDescriptor_6c07b07c062484ab, []int{70} } func (m *HTTPHeader) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2012,7 +2040,7 @@ var xxx_messageInfo_HTTPHeader proto.InternalMessageInfo func (m *HostAlias) Reset() { *m = HostAlias{} } func (*HostAlias) ProtoMessage() {} func (*HostAlias) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{70} + return fileDescriptor_6c07b07c062484ab, []int{71} } func (m *HostAlias) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2040,7 +2068,7 @@ var xxx_messageInfo_HostAlias proto.InternalMessageInfo func (m *HostIP) Reset() { *m = HostIP{} } func (*HostIP) ProtoMessage() {} func (*HostIP) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{71} + return fileDescriptor_6c07b07c062484ab, []int{72} } func (m *HostIP) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2068,7 +2096,7 @@ var xxx_messageInfo_HostIP proto.InternalMessageInfo func (m *HostPathVolumeSource) Reset() { *m = HostPathVolumeSource{} } func (*HostPathVolumeSource) ProtoMessage() {} func (*HostPathVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{72} + return fileDescriptor_6c07b07c062484ab, []int{73} } func (m *HostPathVolumeSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2096,7 +2124,7 @@ var xxx_messageInfo_HostPathVolumeSource proto.InternalMessageInfo func (m *ISCSIPersistentVolumeSource) Reset() { *m = ISCSIPersistentVolumeSource{} } func (*ISCSIPersistentVolumeSource) ProtoMessage() {} func (*ISCSIPersistentVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{73} + return fileDescriptor_6c07b07c062484ab, []int{74} } func (m *ISCSIPersistentVolumeSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2124,7 +2152,7 @@ var xxx_messageInfo_ISCSIPersistentVolumeSource proto.InternalMessageInfo func (m *ISCSIVolumeSource) Reset() { *m = ISCSIVolumeSource{} } func (*ISCSIVolumeSource) ProtoMessage() {} func (*ISCSIVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{74} + return fileDescriptor_6c07b07c062484ab, []int{75} } func (m *ISCSIVolumeSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2152,7 +2180,7 @@ var xxx_messageInfo_ISCSIVolumeSource proto.InternalMessageInfo func (m *KeyToPath) Reset() { *m = KeyToPath{} } func (*KeyToPath) ProtoMessage() {} func (*KeyToPath) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{75} + return fileDescriptor_6c07b07c062484ab, []int{76} } func (m *KeyToPath) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2180,7 +2208,7 @@ var xxx_messageInfo_KeyToPath proto.InternalMessageInfo func (m *Lifecycle) Reset() { *m = Lifecycle{} } func (*Lifecycle) ProtoMessage() {} func (*Lifecycle) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{76} + return fileDescriptor_6c07b07c062484ab, []int{77} } func (m *Lifecycle) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2208,7 +2236,7 @@ var xxx_messageInfo_Lifecycle proto.InternalMessageInfo func (m *LifecycleHandler) Reset() { *m = LifecycleHandler{} } func (*LifecycleHandler) ProtoMessage() {} func (*LifecycleHandler) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{77} + return fileDescriptor_6c07b07c062484ab, []int{78} } func (m *LifecycleHandler) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2236,7 +2264,7 @@ var xxx_messageInfo_LifecycleHandler proto.InternalMessageInfo func (m *LimitRange) Reset() { *m = LimitRange{} } func (*LimitRange) ProtoMessage() {} func (*LimitRange) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{78} + return fileDescriptor_6c07b07c062484ab, []int{79} } func (m *LimitRange) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2264,7 +2292,7 @@ var xxx_messageInfo_LimitRange proto.InternalMessageInfo func (m *LimitRangeItem) Reset() { *m = LimitRangeItem{} } func (*LimitRangeItem) ProtoMessage() {} func (*LimitRangeItem) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{79} + return fileDescriptor_6c07b07c062484ab, []int{80} } func (m *LimitRangeItem) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2292,7 +2320,7 @@ var xxx_messageInfo_LimitRangeItem proto.InternalMessageInfo func (m *LimitRangeList) Reset() { *m = LimitRangeList{} } func (*LimitRangeList) ProtoMessage() {} func (*LimitRangeList) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{80} + return fileDescriptor_6c07b07c062484ab, []int{81} } func (m *LimitRangeList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2320,7 +2348,7 @@ var xxx_messageInfo_LimitRangeList proto.InternalMessageInfo func (m *LimitRangeSpec) Reset() { *m = LimitRangeSpec{} } func (*LimitRangeSpec) ProtoMessage() {} func (*LimitRangeSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{81} + return fileDescriptor_6c07b07c062484ab, []int{82} } func (m *LimitRangeSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2345,10 +2373,38 @@ func (m *LimitRangeSpec) XXX_DiscardUnknown() { var xxx_messageInfo_LimitRangeSpec proto.InternalMessageInfo +func (m *LinuxContainerUser) Reset() { *m = LinuxContainerUser{} } +func (*LinuxContainerUser) ProtoMessage() {} +func (*LinuxContainerUser) Descriptor() ([]byte, []int) { + return fileDescriptor_6c07b07c062484ab, []int{83} +} +func (m *LinuxContainerUser) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *LinuxContainerUser) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *LinuxContainerUser) XXX_Merge(src proto.Message) { + xxx_messageInfo_LinuxContainerUser.Merge(m, src) +} +func (m *LinuxContainerUser) XXX_Size() int { + return m.Size() +} +func (m *LinuxContainerUser) XXX_DiscardUnknown() { + xxx_messageInfo_LinuxContainerUser.DiscardUnknown(m) +} + +var xxx_messageInfo_LinuxContainerUser proto.InternalMessageInfo + func (m *List) Reset() { *m = List{} } func (*List) ProtoMessage() {} func (*List) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{82} + return fileDescriptor_6c07b07c062484ab, []int{84} } func (m *List) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2376,7 +2432,7 @@ var xxx_messageInfo_List proto.InternalMessageInfo func (m *LoadBalancerIngress) Reset() { *m = LoadBalancerIngress{} } func (*LoadBalancerIngress) ProtoMessage() {} func (*LoadBalancerIngress) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{83} + return fileDescriptor_6c07b07c062484ab, []int{85} } func (m *LoadBalancerIngress) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2404,7 +2460,7 @@ var xxx_messageInfo_LoadBalancerIngress proto.InternalMessageInfo func (m *LoadBalancerStatus) Reset() { *m = LoadBalancerStatus{} } func (*LoadBalancerStatus) ProtoMessage() {} func (*LoadBalancerStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{84} + return fileDescriptor_6c07b07c062484ab, []int{86} } func (m *LoadBalancerStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2432,7 +2488,7 @@ var xxx_messageInfo_LoadBalancerStatus proto.InternalMessageInfo func (m *LocalObjectReference) Reset() { *m = LocalObjectReference{} } func (*LocalObjectReference) ProtoMessage() {} func (*LocalObjectReference) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{85} + return fileDescriptor_6c07b07c062484ab, []int{87} } func (m *LocalObjectReference) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2460,7 +2516,7 @@ var xxx_messageInfo_LocalObjectReference proto.InternalMessageInfo func (m *LocalVolumeSource) Reset() { *m = LocalVolumeSource{} } func (*LocalVolumeSource) ProtoMessage() {} func (*LocalVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{86} + return fileDescriptor_6c07b07c062484ab, []int{88} } func (m *LocalVolumeSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2488,7 +2544,7 @@ var xxx_messageInfo_LocalVolumeSource proto.InternalMessageInfo func (m *ModifyVolumeStatus) Reset() { *m = ModifyVolumeStatus{} } func (*ModifyVolumeStatus) ProtoMessage() {} func (*ModifyVolumeStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{87} + return fileDescriptor_6c07b07c062484ab, []int{89} } func (m *ModifyVolumeStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2516,7 +2572,7 @@ var xxx_messageInfo_ModifyVolumeStatus proto.InternalMessageInfo func (m *NFSVolumeSource) Reset() { *m = NFSVolumeSource{} } func (*NFSVolumeSource) ProtoMessage() {} func (*NFSVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{88} + return fileDescriptor_6c07b07c062484ab, []int{90} } func (m *NFSVolumeSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2544,7 +2600,7 @@ var xxx_messageInfo_NFSVolumeSource proto.InternalMessageInfo func (m *Namespace) Reset() { *m = Namespace{} } func (*Namespace) ProtoMessage() {} func (*Namespace) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{89} + return fileDescriptor_6c07b07c062484ab, []int{91} } func (m *Namespace) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2572,7 +2628,7 @@ var xxx_messageInfo_Namespace proto.InternalMessageInfo func (m *NamespaceCondition) Reset() { *m = NamespaceCondition{} } func (*NamespaceCondition) ProtoMessage() {} func (*NamespaceCondition) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{90} + return fileDescriptor_6c07b07c062484ab, []int{92} } func (m *NamespaceCondition) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2600,7 +2656,7 @@ var xxx_messageInfo_NamespaceCondition proto.InternalMessageInfo func (m *NamespaceList) Reset() { *m = NamespaceList{} } func (*NamespaceList) ProtoMessage() {} func (*NamespaceList) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{91} + return fileDescriptor_6c07b07c062484ab, []int{93} } func (m *NamespaceList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2628,7 +2684,7 @@ var xxx_messageInfo_NamespaceList proto.InternalMessageInfo func (m *NamespaceSpec) Reset() { *m = NamespaceSpec{} } func (*NamespaceSpec) ProtoMessage() {} func (*NamespaceSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{92} + return fileDescriptor_6c07b07c062484ab, []int{94} } func (m *NamespaceSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2656,7 +2712,7 @@ var xxx_messageInfo_NamespaceSpec proto.InternalMessageInfo func (m *NamespaceStatus) Reset() { *m = NamespaceStatus{} } func (*NamespaceStatus) ProtoMessage() {} func (*NamespaceStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{93} + return fileDescriptor_6c07b07c062484ab, []int{95} } func (m *NamespaceStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2684,7 +2740,7 @@ var xxx_messageInfo_NamespaceStatus proto.InternalMessageInfo func (m *Node) Reset() { *m = Node{} } func (*Node) ProtoMessage() {} func (*Node) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{94} + return fileDescriptor_6c07b07c062484ab, []int{96} } func (m *Node) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2712,7 +2768,7 @@ var xxx_messageInfo_Node proto.InternalMessageInfo func (m *NodeAddress) Reset() { *m = NodeAddress{} } func (*NodeAddress) ProtoMessage() {} func (*NodeAddress) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{95} + return fileDescriptor_6c07b07c062484ab, []int{97} } func (m *NodeAddress) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2740,7 +2796,7 @@ var xxx_messageInfo_NodeAddress proto.InternalMessageInfo func (m *NodeAffinity) Reset() { *m = NodeAffinity{} } func (*NodeAffinity) ProtoMessage() {} func (*NodeAffinity) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{96} + return fileDescriptor_6c07b07c062484ab, []int{98} } func (m *NodeAffinity) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2768,7 +2824,7 @@ var xxx_messageInfo_NodeAffinity proto.InternalMessageInfo func (m *NodeCondition) Reset() { *m = NodeCondition{} } func (*NodeCondition) ProtoMessage() {} func (*NodeCondition) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{97} + return fileDescriptor_6c07b07c062484ab, []int{99} } func (m *NodeCondition) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2796,7 +2852,7 @@ var xxx_messageInfo_NodeCondition proto.InternalMessageInfo func (m *NodeConfigSource) Reset() { *m = NodeConfigSource{} } func (*NodeConfigSource) ProtoMessage() {} func (*NodeConfigSource) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{98} + return fileDescriptor_6c07b07c062484ab, []int{100} } func (m *NodeConfigSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2824,7 +2880,7 @@ var xxx_messageInfo_NodeConfigSource proto.InternalMessageInfo func (m *NodeConfigStatus) Reset() { *m = NodeConfigStatus{} } func (*NodeConfigStatus) ProtoMessage() {} func (*NodeConfigStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{99} + return fileDescriptor_6c07b07c062484ab, []int{101} } func (m *NodeConfigStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2852,7 +2908,7 @@ var xxx_messageInfo_NodeConfigStatus proto.InternalMessageInfo func (m *NodeDaemonEndpoints) Reset() { *m = NodeDaemonEndpoints{} } func (*NodeDaemonEndpoints) ProtoMessage() {} func (*NodeDaemonEndpoints) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{100} + return fileDescriptor_6c07b07c062484ab, []int{102} } func (m *NodeDaemonEndpoints) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2880,7 +2936,7 @@ var xxx_messageInfo_NodeDaemonEndpoints proto.InternalMessageInfo func (m *NodeList) Reset() { *m = NodeList{} } func (*NodeList) ProtoMessage() {} func (*NodeList) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{101} + return fileDescriptor_6c07b07c062484ab, []int{103} } func (m *NodeList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2908,7 +2964,7 @@ var xxx_messageInfo_NodeList proto.InternalMessageInfo func (m *NodeProxyOptions) Reset() { *m = NodeProxyOptions{} } func (*NodeProxyOptions) ProtoMessage() {} func (*NodeProxyOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{102} + return fileDescriptor_6c07b07c062484ab, []int{104} } func (m *NodeProxyOptions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2936,7 +2992,7 @@ var xxx_messageInfo_NodeProxyOptions proto.InternalMessageInfo func (m *NodeRuntimeHandler) Reset() { *m = NodeRuntimeHandler{} } func (*NodeRuntimeHandler) ProtoMessage() {} func (*NodeRuntimeHandler) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{103} + return fileDescriptor_6c07b07c062484ab, []int{105} } func (m *NodeRuntimeHandler) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2964,7 +3020,7 @@ var xxx_messageInfo_NodeRuntimeHandler proto.InternalMessageInfo func (m *NodeRuntimeHandlerFeatures) Reset() { *m = NodeRuntimeHandlerFeatures{} } func (*NodeRuntimeHandlerFeatures) ProtoMessage() {} func (*NodeRuntimeHandlerFeatures) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{104} + return fileDescriptor_6c07b07c062484ab, []int{106} } func (m *NodeRuntimeHandlerFeatures) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2992,7 +3048,7 @@ var xxx_messageInfo_NodeRuntimeHandlerFeatures proto.InternalMessageInfo func (m *NodeSelector) Reset() { *m = NodeSelector{} } func (*NodeSelector) ProtoMessage() {} func (*NodeSelector) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{105} + return fileDescriptor_6c07b07c062484ab, []int{107} } func (m *NodeSelector) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3020,7 +3076,7 @@ var xxx_messageInfo_NodeSelector proto.InternalMessageInfo func (m *NodeSelectorRequirement) Reset() { *m = NodeSelectorRequirement{} } func (*NodeSelectorRequirement) ProtoMessage() {} func (*NodeSelectorRequirement) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{106} + return fileDescriptor_6c07b07c062484ab, []int{108} } func (m *NodeSelectorRequirement) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3048,7 +3104,7 @@ var xxx_messageInfo_NodeSelectorRequirement proto.InternalMessageInfo func (m *NodeSelectorTerm) Reset() { *m = NodeSelectorTerm{} } func (*NodeSelectorTerm) ProtoMessage() {} func (*NodeSelectorTerm) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{107} + return fileDescriptor_6c07b07c062484ab, []int{109} } func (m *NodeSelectorTerm) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3076,7 +3132,7 @@ var xxx_messageInfo_NodeSelectorTerm proto.InternalMessageInfo func (m *NodeSpec) Reset() { *m = NodeSpec{} } func (*NodeSpec) ProtoMessage() {} func (*NodeSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{108} + return fileDescriptor_6c07b07c062484ab, []int{110} } func (m *NodeSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3104,7 +3160,7 @@ var xxx_messageInfo_NodeSpec proto.InternalMessageInfo func (m *NodeStatus) Reset() { *m = NodeStatus{} } func (*NodeStatus) ProtoMessage() {} func (*NodeStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{109} + return fileDescriptor_6c07b07c062484ab, []int{111} } func (m *NodeStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3132,7 +3188,7 @@ var xxx_messageInfo_NodeStatus proto.InternalMessageInfo func (m *NodeSystemInfo) Reset() { *m = NodeSystemInfo{} } func (*NodeSystemInfo) ProtoMessage() {} func (*NodeSystemInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{110} + return fileDescriptor_6c07b07c062484ab, []int{112} } func (m *NodeSystemInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3160,7 +3216,7 @@ var xxx_messageInfo_NodeSystemInfo proto.InternalMessageInfo func (m *ObjectFieldSelector) Reset() { *m = ObjectFieldSelector{} } func (*ObjectFieldSelector) ProtoMessage() {} func (*ObjectFieldSelector) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{111} + return fileDescriptor_6c07b07c062484ab, []int{113} } func (m *ObjectFieldSelector) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3188,7 +3244,7 @@ var xxx_messageInfo_ObjectFieldSelector proto.InternalMessageInfo func (m *ObjectReference) Reset() { *m = ObjectReference{} } func (*ObjectReference) ProtoMessage() {} func (*ObjectReference) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{112} + return fileDescriptor_6c07b07c062484ab, []int{114} } func (m *ObjectReference) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3216,7 +3272,7 @@ var xxx_messageInfo_ObjectReference proto.InternalMessageInfo func (m *PersistentVolume) Reset() { *m = PersistentVolume{} } func (*PersistentVolume) ProtoMessage() {} func (*PersistentVolume) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{113} + return fileDescriptor_6c07b07c062484ab, []int{115} } func (m *PersistentVolume) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3244,7 +3300,7 @@ var xxx_messageInfo_PersistentVolume proto.InternalMessageInfo func (m *PersistentVolumeClaim) Reset() { *m = PersistentVolumeClaim{} } func (*PersistentVolumeClaim) ProtoMessage() {} func (*PersistentVolumeClaim) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{114} + return fileDescriptor_6c07b07c062484ab, []int{116} } func (m *PersistentVolumeClaim) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3272,7 +3328,7 @@ var xxx_messageInfo_PersistentVolumeClaim proto.InternalMessageInfo func (m *PersistentVolumeClaimCondition) Reset() { *m = PersistentVolumeClaimCondition{} } func (*PersistentVolumeClaimCondition) ProtoMessage() {} func (*PersistentVolumeClaimCondition) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{115} + return fileDescriptor_6c07b07c062484ab, []int{117} } func (m *PersistentVolumeClaimCondition) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3300,7 +3356,7 @@ var xxx_messageInfo_PersistentVolumeClaimCondition proto.InternalMessageInfo func (m *PersistentVolumeClaimList) Reset() { *m = PersistentVolumeClaimList{} } func (*PersistentVolumeClaimList) ProtoMessage() {} func (*PersistentVolumeClaimList) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{116} + return fileDescriptor_6c07b07c062484ab, []int{118} } func (m *PersistentVolumeClaimList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3328,7 +3384,7 @@ var xxx_messageInfo_PersistentVolumeClaimList proto.InternalMessageInfo func (m *PersistentVolumeClaimSpec) Reset() { *m = PersistentVolumeClaimSpec{} } func (*PersistentVolumeClaimSpec) ProtoMessage() {} func (*PersistentVolumeClaimSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{117} + return fileDescriptor_6c07b07c062484ab, []int{119} } func (m *PersistentVolumeClaimSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3356,7 +3412,7 @@ var xxx_messageInfo_PersistentVolumeClaimSpec proto.InternalMessageInfo func (m *PersistentVolumeClaimStatus) Reset() { *m = PersistentVolumeClaimStatus{} } func (*PersistentVolumeClaimStatus) ProtoMessage() {} func (*PersistentVolumeClaimStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{118} + return fileDescriptor_6c07b07c062484ab, []int{120} } func (m *PersistentVolumeClaimStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3384,7 +3440,7 @@ var xxx_messageInfo_PersistentVolumeClaimStatus proto.InternalMessageInfo func (m *PersistentVolumeClaimTemplate) Reset() { *m = PersistentVolumeClaimTemplate{} } func (*PersistentVolumeClaimTemplate) ProtoMessage() {} func (*PersistentVolumeClaimTemplate) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{119} + return fileDescriptor_6c07b07c062484ab, []int{121} } func (m *PersistentVolumeClaimTemplate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3412,7 +3468,7 @@ var xxx_messageInfo_PersistentVolumeClaimTemplate proto.InternalMessageInfo func (m *PersistentVolumeClaimVolumeSource) Reset() { *m = PersistentVolumeClaimVolumeSource{} } func (*PersistentVolumeClaimVolumeSource) ProtoMessage() {} func (*PersistentVolumeClaimVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{120} + return fileDescriptor_6c07b07c062484ab, []int{122} } func (m *PersistentVolumeClaimVolumeSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3440,7 +3496,7 @@ var xxx_messageInfo_PersistentVolumeClaimVolumeSource proto.InternalMessageInfo func (m *PersistentVolumeList) Reset() { *m = PersistentVolumeList{} } func (*PersistentVolumeList) ProtoMessage() {} func (*PersistentVolumeList) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{121} + return fileDescriptor_6c07b07c062484ab, []int{123} } func (m *PersistentVolumeList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3468,7 +3524,7 @@ var xxx_messageInfo_PersistentVolumeList proto.InternalMessageInfo func (m *PersistentVolumeSource) Reset() { *m = PersistentVolumeSource{} } func (*PersistentVolumeSource) ProtoMessage() {} func (*PersistentVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{122} + return fileDescriptor_6c07b07c062484ab, []int{124} } func (m *PersistentVolumeSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3496,7 +3552,7 @@ var xxx_messageInfo_PersistentVolumeSource proto.InternalMessageInfo func (m *PersistentVolumeSpec) Reset() { *m = PersistentVolumeSpec{} } func (*PersistentVolumeSpec) ProtoMessage() {} func (*PersistentVolumeSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{123} + return fileDescriptor_6c07b07c062484ab, []int{125} } func (m *PersistentVolumeSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3524,7 +3580,7 @@ var xxx_messageInfo_PersistentVolumeSpec proto.InternalMessageInfo func (m *PersistentVolumeStatus) Reset() { *m = PersistentVolumeStatus{} } func (*PersistentVolumeStatus) ProtoMessage() {} func (*PersistentVolumeStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{124} + return fileDescriptor_6c07b07c062484ab, []int{126} } func (m *PersistentVolumeStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3552,7 +3608,7 @@ var xxx_messageInfo_PersistentVolumeStatus proto.InternalMessageInfo func (m *PhotonPersistentDiskVolumeSource) Reset() { *m = PhotonPersistentDiskVolumeSource{} } func (*PhotonPersistentDiskVolumeSource) ProtoMessage() {} func (*PhotonPersistentDiskVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{125} + return fileDescriptor_6c07b07c062484ab, []int{127} } func (m *PhotonPersistentDiskVolumeSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3580,7 +3636,7 @@ var xxx_messageInfo_PhotonPersistentDiskVolumeSource proto.InternalMessageInfo func (m *Pod) Reset() { *m = Pod{} } func (*Pod) ProtoMessage() {} func (*Pod) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{126} + return fileDescriptor_6c07b07c062484ab, []int{128} } func (m *Pod) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3608,7 +3664,7 @@ var xxx_messageInfo_Pod proto.InternalMessageInfo func (m *PodAffinity) Reset() { *m = PodAffinity{} } func (*PodAffinity) ProtoMessage() {} func (*PodAffinity) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{127} + return fileDescriptor_6c07b07c062484ab, []int{129} } func (m *PodAffinity) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3636,7 +3692,7 @@ var xxx_messageInfo_PodAffinity proto.InternalMessageInfo func (m *PodAffinityTerm) Reset() { *m = PodAffinityTerm{} } func (*PodAffinityTerm) ProtoMessage() {} func (*PodAffinityTerm) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{128} + return fileDescriptor_6c07b07c062484ab, []int{130} } func (m *PodAffinityTerm) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3664,7 +3720,7 @@ var xxx_messageInfo_PodAffinityTerm proto.InternalMessageInfo func (m *PodAntiAffinity) Reset() { *m = PodAntiAffinity{} } func (*PodAntiAffinity) ProtoMessage() {} func (*PodAntiAffinity) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{129} + return fileDescriptor_6c07b07c062484ab, []int{131} } func (m *PodAntiAffinity) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3692,7 +3748,7 @@ var xxx_messageInfo_PodAntiAffinity proto.InternalMessageInfo func (m *PodAttachOptions) Reset() { *m = PodAttachOptions{} } func (*PodAttachOptions) ProtoMessage() {} func (*PodAttachOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{130} + return fileDescriptor_6c07b07c062484ab, []int{132} } func (m *PodAttachOptions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3720,7 +3776,7 @@ var xxx_messageInfo_PodAttachOptions proto.InternalMessageInfo func (m *PodCondition) Reset() { *m = PodCondition{} } func (*PodCondition) ProtoMessage() {} func (*PodCondition) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{131} + return fileDescriptor_6c07b07c062484ab, []int{133} } func (m *PodCondition) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3748,7 +3804,7 @@ var xxx_messageInfo_PodCondition proto.InternalMessageInfo func (m *PodDNSConfig) Reset() { *m = PodDNSConfig{} } func (*PodDNSConfig) ProtoMessage() {} func (*PodDNSConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{132} + return fileDescriptor_6c07b07c062484ab, []int{134} } func (m *PodDNSConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3776,7 +3832,7 @@ var xxx_messageInfo_PodDNSConfig proto.InternalMessageInfo func (m *PodDNSConfigOption) Reset() { *m = PodDNSConfigOption{} } func (*PodDNSConfigOption) ProtoMessage() {} func (*PodDNSConfigOption) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{133} + return fileDescriptor_6c07b07c062484ab, []int{135} } func (m *PodDNSConfigOption) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3804,7 +3860,7 @@ var xxx_messageInfo_PodDNSConfigOption proto.InternalMessageInfo func (m *PodExecOptions) Reset() { *m = PodExecOptions{} } func (*PodExecOptions) ProtoMessage() {} func (*PodExecOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{134} + return fileDescriptor_6c07b07c062484ab, []int{136} } func (m *PodExecOptions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3832,7 +3888,7 @@ var xxx_messageInfo_PodExecOptions proto.InternalMessageInfo func (m *PodIP) Reset() { *m = PodIP{} } func (*PodIP) ProtoMessage() {} func (*PodIP) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{135} + return fileDescriptor_6c07b07c062484ab, []int{137} } func (m *PodIP) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3860,7 +3916,7 @@ var xxx_messageInfo_PodIP proto.InternalMessageInfo func (m *PodList) Reset() { *m = PodList{} } func (*PodList) ProtoMessage() {} func (*PodList) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{136} + return fileDescriptor_6c07b07c062484ab, []int{138} } func (m *PodList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3888,7 +3944,7 @@ var xxx_messageInfo_PodList proto.InternalMessageInfo func (m *PodLogOptions) Reset() { *m = PodLogOptions{} } func (*PodLogOptions) ProtoMessage() {} func (*PodLogOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{137} + return fileDescriptor_6c07b07c062484ab, []int{139} } func (m *PodLogOptions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3916,7 +3972,7 @@ var xxx_messageInfo_PodLogOptions proto.InternalMessageInfo func (m *PodOS) Reset() { *m = PodOS{} } func (*PodOS) ProtoMessage() {} func (*PodOS) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{138} + return fileDescriptor_6c07b07c062484ab, []int{140} } func (m *PodOS) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3944,7 +4000,7 @@ var xxx_messageInfo_PodOS proto.InternalMessageInfo func (m *PodPortForwardOptions) Reset() { *m = PodPortForwardOptions{} } func (*PodPortForwardOptions) ProtoMessage() {} func (*PodPortForwardOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{139} + return fileDescriptor_6c07b07c062484ab, []int{141} } func (m *PodPortForwardOptions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3972,7 +4028,7 @@ var xxx_messageInfo_PodPortForwardOptions proto.InternalMessageInfo func (m *PodProxyOptions) Reset() { *m = PodProxyOptions{} } func (*PodProxyOptions) ProtoMessage() {} func (*PodProxyOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{140} + return fileDescriptor_6c07b07c062484ab, []int{142} } func (m *PodProxyOptions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4000,7 +4056,7 @@ var xxx_messageInfo_PodProxyOptions proto.InternalMessageInfo func (m *PodReadinessGate) Reset() { *m = PodReadinessGate{} } func (*PodReadinessGate) ProtoMessage() {} func (*PodReadinessGate) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{141} + return fileDescriptor_6c07b07c062484ab, []int{143} } func (m *PodReadinessGate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4028,7 +4084,7 @@ var xxx_messageInfo_PodReadinessGate proto.InternalMessageInfo func (m *PodResourceClaim) Reset() { *m = PodResourceClaim{} } func (*PodResourceClaim) ProtoMessage() {} func (*PodResourceClaim) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{142} + return fileDescriptor_6c07b07c062484ab, []int{144} } func (m *PodResourceClaim) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4056,7 +4112,7 @@ var xxx_messageInfo_PodResourceClaim proto.InternalMessageInfo func (m *PodResourceClaimStatus) Reset() { *m = PodResourceClaimStatus{} } func (*PodResourceClaimStatus) ProtoMessage() {} func (*PodResourceClaimStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{143} + return fileDescriptor_6c07b07c062484ab, []int{145} } func (m *PodResourceClaimStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4084,7 +4140,7 @@ var xxx_messageInfo_PodResourceClaimStatus proto.InternalMessageInfo func (m *PodSchedulingGate) Reset() { *m = PodSchedulingGate{} } func (*PodSchedulingGate) ProtoMessage() {} func (*PodSchedulingGate) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{144} + return fileDescriptor_6c07b07c062484ab, []int{146} } func (m *PodSchedulingGate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4112,7 +4168,7 @@ var xxx_messageInfo_PodSchedulingGate proto.InternalMessageInfo func (m *PodSecurityContext) Reset() { *m = PodSecurityContext{} } func (*PodSecurityContext) ProtoMessage() {} func (*PodSecurityContext) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{145} + return fileDescriptor_6c07b07c062484ab, []int{147} } func (m *PodSecurityContext) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4140,7 +4196,7 @@ var xxx_messageInfo_PodSecurityContext proto.InternalMessageInfo func (m *PodSignature) Reset() { *m = PodSignature{} } func (*PodSignature) ProtoMessage() {} func (*PodSignature) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{146} + return fileDescriptor_6c07b07c062484ab, []int{148} } func (m *PodSignature) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4168,7 +4224,7 @@ var xxx_messageInfo_PodSignature proto.InternalMessageInfo func (m *PodSpec) Reset() { *m = PodSpec{} } func (*PodSpec) ProtoMessage() {} func (*PodSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{147} + return fileDescriptor_6c07b07c062484ab, []int{149} } func (m *PodSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4196,7 +4252,7 @@ var xxx_messageInfo_PodSpec proto.InternalMessageInfo func (m *PodStatus) Reset() { *m = PodStatus{} } func (*PodStatus) ProtoMessage() {} func (*PodStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{148} + return fileDescriptor_6c07b07c062484ab, []int{150} } func (m *PodStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4224,7 +4280,7 @@ var xxx_messageInfo_PodStatus proto.InternalMessageInfo func (m *PodStatusResult) Reset() { *m = PodStatusResult{} } func (*PodStatusResult) ProtoMessage() {} func (*PodStatusResult) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{149} + return fileDescriptor_6c07b07c062484ab, []int{151} } func (m *PodStatusResult) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4252,7 +4308,7 @@ var xxx_messageInfo_PodStatusResult proto.InternalMessageInfo func (m *PodTemplate) Reset() { *m = PodTemplate{} } func (*PodTemplate) ProtoMessage() {} func (*PodTemplate) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{150} + return fileDescriptor_6c07b07c062484ab, []int{152} } func (m *PodTemplate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4280,7 +4336,7 @@ var xxx_messageInfo_PodTemplate proto.InternalMessageInfo func (m *PodTemplateList) Reset() { *m = PodTemplateList{} } func (*PodTemplateList) ProtoMessage() {} func (*PodTemplateList) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{151} + return fileDescriptor_6c07b07c062484ab, []int{153} } func (m *PodTemplateList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4308,7 +4364,7 @@ var xxx_messageInfo_PodTemplateList proto.InternalMessageInfo func (m *PodTemplateSpec) Reset() { *m = PodTemplateSpec{} } func (*PodTemplateSpec) ProtoMessage() {} func (*PodTemplateSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{152} + return fileDescriptor_6c07b07c062484ab, []int{154} } func (m *PodTemplateSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4336,7 +4392,7 @@ var xxx_messageInfo_PodTemplateSpec proto.InternalMessageInfo func (m *PortStatus) Reset() { *m = PortStatus{} } func (*PortStatus) ProtoMessage() {} func (*PortStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{153} + return fileDescriptor_6c07b07c062484ab, []int{155} } func (m *PortStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4364,7 +4420,7 @@ var xxx_messageInfo_PortStatus proto.InternalMessageInfo func (m *PortworxVolumeSource) Reset() { *m = PortworxVolumeSource{} } func (*PortworxVolumeSource) ProtoMessage() {} func (*PortworxVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{154} + return fileDescriptor_6c07b07c062484ab, []int{156} } func (m *PortworxVolumeSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4392,7 +4448,7 @@ var xxx_messageInfo_PortworxVolumeSource proto.InternalMessageInfo func (m *Preconditions) Reset() { *m = Preconditions{} } func (*Preconditions) ProtoMessage() {} func (*Preconditions) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{155} + return fileDescriptor_6c07b07c062484ab, []int{157} } func (m *Preconditions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4420,7 +4476,7 @@ var xxx_messageInfo_Preconditions proto.InternalMessageInfo func (m *PreferAvoidPodsEntry) Reset() { *m = PreferAvoidPodsEntry{} } func (*PreferAvoidPodsEntry) ProtoMessage() {} func (*PreferAvoidPodsEntry) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{156} + return fileDescriptor_6c07b07c062484ab, []int{158} } func (m *PreferAvoidPodsEntry) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4448,7 +4504,7 @@ var xxx_messageInfo_PreferAvoidPodsEntry proto.InternalMessageInfo func (m *PreferredSchedulingTerm) Reset() { *m = PreferredSchedulingTerm{} } func (*PreferredSchedulingTerm) ProtoMessage() {} func (*PreferredSchedulingTerm) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{157} + return fileDescriptor_6c07b07c062484ab, []int{159} } func (m *PreferredSchedulingTerm) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4476,7 +4532,7 @@ var xxx_messageInfo_PreferredSchedulingTerm proto.InternalMessageInfo func (m *Probe) Reset() { *m = Probe{} } func (*Probe) ProtoMessage() {} func (*Probe) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{158} + return fileDescriptor_6c07b07c062484ab, []int{160} } func (m *Probe) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4504,7 +4560,7 @@ var xxx_messageInfo_Probe proto.InternalMessageInfo func (m *ProbeHandler) Reset() { *m = ProbeHandler{} } func (*ProbeHandler) ProtoMessage() {} func (*ProbeHandler) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{159} + return fileDescriptor_6c07b07c062484ab, []int{161} } func (m *ProbeHandler) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4532,7 +4588,7 @@ var xxx_messageInfo_ProbeHandler proto.InternalMessageInfo func (m *ProjectedVolumeSource) Reset() { *m = ProjectedVolumeSource{} } func (*ProjectedVolumeSource) ProtoMessage() {} func (*ProjectedVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{160} + return fileDescriptor_6c07b07c062484ab, []int{162} } func (m *ProjectedVolumeSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4560,7 +4616,7 @@ var xxx_messageInfo_ProjectedVolumeSource proto.InternalMessageInfo func (m *QuobyteVolumeSource) Reset() { *m = QuobyteVolumeSource{} } func (*QuobyteVolumeSource) ProtoMessage() {} func (*QuobyteVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{161} + return fileDescriptor_6c07b07c062484ab, []int{163} } func (m *QuobyteVolumeSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4588,7 +4644,7 @@ var xxx_messageInfo_QuobyteVolumeSource proto.InternalMessageInfo func (m *RBDPersistentVolumeSource) Reset() { *m = RBDPersistentVolumeSource{} } func (*RBDPersistentVolumeSource) ProtoMessage() {} func (*RBDPersistentVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{162} + return fileDescriptor_6c07b07c062484ab, []int{164} } func (m *RBDPersistentVolumeSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4616,7 +4672,7 @@ var xxx_messageInfo_RBDPersistentVolumeSource proto.InternalMessageInfo func (m *RBDVolumeSource) Reset() { *m = RBDVolumeSource{} } func (*RBDVolumeSource) ProtoMessage() {} func (*RBDVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{163} + return fileDescriptor_6c07b07c062484ab, []int{165} } func (m *RBDVolumeSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4644,7 +4700,7 @@ var xxx_messageInfo_RBDVolumeSource proto.InternalMessageInfo func (m *RangeAllocation) Reset() { *m = RangeAllocation{} } func (*RangeAllocation) ProtoMessage() {} func (*RangeAllocation) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{164} + return fileDescriptor_6c07b07c062484ab, []int{166} } func (m *RangeAllocation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4672,7 +4728,7 @@ var xxx_messageInfo_RangeAllocation proto.InternalMessageInfo func (m *ReplicationController) Reset() { *m = ReplicationController{} } func (*ReplicationController) ProtoMessage() {} func (*ReplicationController) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{165} + return fileDescriptor_6c07b07c062484ab, []int{167} } func (m *ReplicationController) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4700,7 +4756,7 @@ var xxx_messageInfo_ReplicationController proto.InternalMessageInfo func (m *ReplicationControllerCondition) Reset() { *m = ReplicationControllerCondition{} } func (*ReplicationControllerCondition) ProtoMessage() {} func (*ReplicationControllerCondition) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{166} + return fileDescriptor_6c07b07c062484ab, []int{168} } func (m *ReplicationControllerCondition) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4728,7 +4784,7 @@ var xxx_messageInfo_ReplicationControllerCondition proto.InternalMessageInfo func (m *ReplicationControllerList) Reset() { *m = ReplicationControllerList{} } func (*ReplicationControllerList) ProtoMessage() {} func (*ReplicationControllerList) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{167} + return fileDescriptor_6c07b07c062484ab, []int{169} } func (m *ReplicationControllerList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4756,7 +4812,7 @@ var xxx_messageInfo_ReplicationControllerList proto.InternalMessageInfo func (m *ReplicationControllerSpec) Reset() { *m = ReplicationControllerSpec{} } func (*ReplicationControllerSpec) ProtoMessage() {} func (*ReplicationControllerSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{168} + return fileDescriptor_6c07b07c062484ab, []int{170} } func (m *ReplicationControllerSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4784,7 +4840,7 @@ var xxx_messageInfo_ReplicationControllerSpec proto.InternalMessageInfo func (m *ReplicationControllerStatus) Reset() { *m = ReplicationControllerStatus{} } func (*ReplicationControllerStatus) ProtoMessage() {} func (*ReplicationControllerStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{169} + return fileDescriptor_6c07b07c062484ab, []int{171} } func (m *ReplicationControllerStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4812,7 +4868,7 @@ var xxx_messageInfo_ReplicationControllerStatus proto.InternalMessageInfo func (m *ResourceClaim) Reset() { *m = ResourceClaim{} } func (*ResourceClaim) ProtoMessage() {} func (*ResourceClaim) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{170} + return fileDescriptor_6c07b07c062484ab, []int{172} } func (m *ResourceClaim) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4840,7 +4896,7 @@ var xxx_messageInfo_ResourceClaim proto.InternalMessageInfo func (m *ResourceFieldSelector) Reset() { *m = ResourceFieldSelector{} } func (*ResourceFieldSelector) ProtoMessage() {} func (*ResourceFieldSelector) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{171} + return fileDescriptor_6c07b07c062484ab, []int{173} } func (m *ResourceFieldSelector) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4868,7 +4924,7 @@ var xxx_messageInfo_ResourceFieldSelector proto.InternalMessageInfo func (m *ResourceQuota) Reset() { *m = ResourceQuota{} } func (*ResourceQuota) ProtoMessage() {} func (*ResourceQuota) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{172} + return fileDescriptor_6c07b07c062484ab, []int{174} } func (m *ResourceQuota) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4896,7 +4952,7 @@ var xxx_messageInfo_ResourceQuota proto.InternalMessageInfo func (m *ResourceQuotaList) Reset() { *m = ResourceQuotaList{} } func (*ResourceQuotaList) ProtoMessage() {} func (*ResourceQuotaList) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{173} + return fileDescriptor_6c07b07c062484ab, []int{175} } func (m *ResourceQuotaList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4924,7 +4980,7 @@ var xxx_messageInfo_ResourceQuotaList proto.InternalMessageInfo func (m *ResourceQuotaSpec) Reset() { *m = ResourceQuotaSpec{} } func (*ResourceQuotaSpec) ProtoMessage() {} func (*ResourceQuotaSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{174} + return fileDescriptor_6c07b07c062484ab, []int{176} } func (m *ResourceQuotaSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4952,7 +5008,7 @@ var xxx_messageInfo_ResourceQuotaSpec proto.InternalMessageInfo func (m *ResourceQuotaStatus) Reset() { *m = ResourceQuotaStatus{} } func (*ResourceQuotaStatus) ProtoMessage() {} func (*ResourceQuotaStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{175} + return fileDescriptor_6c07b07c062484ab, []int{177} } func (m *ResourceQuotaStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4980,7 +5036,7 @@ var xxx_messageInfo_ResourceQuotaStatus proto.InternalMessageInfo func (m *ResourceRequirements) Reset() { *m = ResourceRequirements{} } func (*ResourceRequirements) ProtoMessage() {} func (*ResourceRequirements) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{176} + return fileDescriptor_6c07b07c062484ab, []int{178} } func (m *ResourceRequirements) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5008,7 +5064,7 @@ var xxx_messageInfo_ResourceRequirements proto.InternalMessageInfo func (m *SELinuxOptions) Reset() { *m = SELinuxOptions{} } func (*SELinuxOptions) ProtoMessage() {} func (*SELinuxOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{177} + return fileDescriptor_6c07b07c062484ab, []int{179} } func (m *SELinuxOptions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5036,7 +5092,7 @@ var xxx_messageInfo_SELinuxOptions proto.InternalMessageInfo func (m *ScaleIOPersistentVolumeSource) Reset() { *m = ScaleIOPersistentVolumeSource{} } func (*ScaleIOPersistentVolumeSource) ProtoMessage() {} func (*ScaleIOPersistentVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{178} + return fileDescriptor_6c07b07c062484ab, []int{180} } func (m *ScaleIOPersistentVolumeSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5064,7 +5120,7 @@ var xxx_messageInfo_ScaleIOPersistentVolumeSource proto.InternalMessageInfo func (m *ScaleIOVolumeSource) Reset() { *m = ScaleIOVolumeSource{} } func (*ScaleIOVolumeSource) ProtoMessage() {} func (*ScaleIOVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{179} + return fileDescriptor_6c07b07c062484ab, []int{181} } func (m *ScaleIOVolumeSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5092,7 +5148,7 @@ var xxx_messageInfo_ScaleIOVolumeSource proto.InternalMessageInfo func (m *ScopeSelector) Reset() { *m = ScopeSelector{} } func (*ScopeSelector) ProtoMessage() {} func (*ScopeSelector) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{180} + return fileDescriptor_6c07b07c062484ab, []int{182} } func (m *ScopeSelector) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5120,7 +5176,7 @@ var xxx_messageInfo_ScopeSelector proto.InternalMessageInfo func (m *ScopedResourceSelectorRequirement) Reset() { *m = ScopedResourceSelectorRequirement{} } func (*ScopedResourceSelectorRequirement) ProtoMessage() {} func (*ScopedResourceSelectorRequirement) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{181} + return fileDescriptor_6c07b07c062484ab, []int{183} } func (m *ScopedResourceSelectorRequirement) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5148,7 +5204,7 @@ var xxx_messageInfo_ScopedResourceSelectorRequirement proto.InternalMessageInfo func (m *SeccompProfile) Reset() { *m = SeccompProfile{} } func (*SeccompProfile) ProtoMessage() {} func (*SeccompProfile) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{182} + return fileDescriptor_6c07b07c062484ab, []int{184} } func (m *SeccompProfile) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5176,7 +5232,7 @@ var xxx_messageInfo_SeccompProfile proto.InternalMessageInfo func (m *Secret) Reset() { *m = Secret{} } func (*Secret) ProtoMessage() {} func (*Secret) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{183} + return fileDescriptor_6c07b07c062484ab, []int{185} } func (m *Secret) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5204,7 +5260,7 @@ var xxx_messageInfo_Secret proto.InternalMessageInfo func (m *SecretEnvSource) Reset() { *m = SecretEnvSource{} } func (*SecretEnvSource) ProtoMessage() {} func (*SecretEnvSource) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{184} + return fileDescriptor_6c07b07c062484ab, []int{186} } func (m *SecretEnvSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5232,7 +5288,7 @@ var xxx_messageInfo_SecretEnvSource proto.InternalMessageInfo func (m *SecretKeySelector) Reset() { *m = SecretKeySelector{} } func (*SecretKeySelector) ProtoMessage() {} func (*SecretKeySelector) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{185} + return fileDescriptor_6c07b07c062484ab, []int{187} } func (m *SecretKeySelector) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5260,7 +5316,7 @@ var xxx_messageInfo_SecretKeySelector proto.InternalMessageInfo func (m *SecretList) Reset() { *m = SecretList{} } func (*SecretList) ProtoMessage() {} func (*SecretList) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{186} + return fileDescriptor_6c07b07c062484ab, []int{188} } func (m *SecretList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5288,7 +5344,7 @@ var xxx_messageInfo_SecretList proto.InternalMessageInfo func (m *SecretProjection) Reset() { *m = SecretProjection{} } func (*SecretProjection) ProtoMessage() {} func (*SecretProjection) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{187} + return fileDescriptor_6c07b07c062484ab, []int{189} } func (m *SecretProjection) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5316,7 +5372,7 @@ var xxx_messageInfo_SecretProjection proto.InternalMessageInfo func (m *SecretReference) Reset() { *m = SecretReference{} } func (*SecretReference) ProtoMessage() {} func (*SecretReference) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{188} + return fileDescriptor_6c07b07c062484ab, []int{190} } func (m *SecretReference) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5344,7 +5400,7 @@ var xxx_messageInfo_SecretReference proto.InternalMessageInfo func (m *SecretVolumeSource) Reset() { *m = SecretVolumeSource{} } func (*SecretVolumeSource) ProtoMessage() {} func (*SecretVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{189} + return fileDescriptor_6c07b07c062484ab, []int{191} } func (m *SecretVolumeSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5372,7 +5428,7 @@ var xxx_messageInfo_SecretVolumeSource proto.InternalMessageInfo func (m *SecurityContext) Reset() { *m = SecurityContext{} } func (*SecurityContext) ProtoMessage() {} func (*SecurityContext) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{190} + return fileDescriptor_6c07b07c062484ab, []int{192} } func (m *SecurityContext) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5400,7 +5456,7 @@ var xxx_messageInfo_SecurityContext proto.InternalMessageInfo func (m *SerializedReference) Reset() { *m = SerializedReference{} } func (*SerializedReference) ProtoMessage() {} func (*SerializedReference) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{191} + return fileDescriptor_6c07b07c062484ab, []int{193} } func (m *SerializedReference) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5428,7 +5484,7 @@ var xxx_messageInfo_SerializedReference proto.InternalMessageInfo func (m *Service) Reset() { *m = Service{} } func (*Service) ProtoMessage() {} func (*Service) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{192} + return fileDescriptor_6c07b07c062484ab, []int{194} } func (m *Service) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5456,7 +5512,7 @@ var xxx_messageInfo_Service proto.InternalMessageInfo func (m *ServiceAccount) Reset() { *m = ServiceAccount{} } func (*ServiceAccount) ProtoMessage() {} func (*ServiceAccount) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{193} + return fileDescriptor_6c07b07c062484ab, []int{195} } func (m *ServiceAccount) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5484,7 +5540,7 @@ var xxx_messageInfo_ServiceAccount proto.InternalMessageInfo func (m *ServiceAccountList) Reset() { *m = ServiceAccountList{} } func (*ServiceAccountList) ProtoMessage() {} func (*ServiceAccountList) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{194} + return fileDescriptor_6c07b07c062484ab, []int{196} } func (m *ServiceAccountList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5512,7 +5568,7 @@ var xxx_messageInfo_ServiceAccountList proto.InternalMessageInfo func (m *ServiceAccountTokenProjection) Reset() { *m = ServiceAccountTokenProjection{} } func (*ServiceAccountTokenProjection) ProtoMessage() {} func (*ServiceAccountTokenProjection) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{195} + return fileDescriptor_6c07b07c062484ab, []int{197} } func (m *ServiceAccountTokenProjection) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5540,7 +5596,7 @@ var xxx_messageInfo_ServiceAccountTokenProjection proto.InternalMessageInfo func (m *ServiceList) Reset() { *m = ServiceList{} } func (*ServiceList) ProtoMessage() {} func (*ServiceList) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{196} + return fileDescriptor_6c07b07c062484ab, []int{198} } func (m *ServiceList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5568,7 +5624,7 @@ var xxx_messageInfo_ServiceList proto.InternalMessageInfo func (m *ServicePort) Reset() { *m = ServicePort{} } func (*ServicePort) ProtoMessage() {} func (*ServicePort) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{197} + return fileDescriptor_6c07b07c062484ab, []int{199} } func (m *ServicePort) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5596,7 +5652,7 @@ var xxx_messageInfo_ServicePort proto.InternalMessageInfo func (m *ServiceProxyOptions) Reset() { *m = ServiceProxyOptions{} } func (*ServiceProxyOptions) ProtoMessage() {} func (*ServiceProxyOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{198} + return fileDescriptor_6c07b07c062484ab, []int{200} } func (m *ServiceProxyOptions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5624,7 +5680,7 @@ var xxx_messageInfo_ServiceProxyOptions proto.InternalMessageInfo func (m *ServiceSpec) Reset() { *m = ServiceSpec{} } func (*ServiceSpec) ProtoMessage() {} func (*ServiceSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{199} + return fileDescriptor_6c07b07c062484ab, []int{201} } func (m *ServiceSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5652,7 +5708,7 @@ var xxx_messageInfo_ServiceSpec proto.InternalMessageInfo func (m *ServiceStatus) Reset() { *m = ServiceStatus{} } func (*ServiceStatus) ProtoMessage() {} func (*ServiceStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{200} + return fileDescriptor_6c07b07c062484ab, []int{202} } func (m *ServiceStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5680,7 +5736,7 @@ var xxx_messageInfo_ServiceStatus proto.InternalMessageInfo func (m *SessionAffinityConfig) Reset() { *m = SessionAffinityConfig{} } func (*SessionAffinityConfig) ProtoMessage() {} func (*SessionAffinityConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{201} + return fileDescriptor_6c07b07c062484ab, []int{203} } func (m *SessionAffinityConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5708,7 +5764,7 @@ var xxx_messageInfo_SessionAffinityConfig proto.InternalMessageInfo func (m *SleepAction) Reset() { *m = SleepAction{} } func (*SleepAction) ProtoMessage() {} func (*SleepAction) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{202} + return fileDescriptor_6c07b07c062484ab, []int{204} } func (m *SleepAction) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5736,7 +5792,7 @@ var xxx_messageInfo_SleepAction proto.InternalMessageInfo func (m *StorageOSPersistentVolumeSource) Reset() { *m = StorageOSPersistentVolumeSource{} } func (*StorageOSPersistentVolumeSource) ProtoMessage() {} func (*StorageOSPersistentVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{203} + return fileDescriptor_6c07b07c062484ab, []int{205} } func (m *StorageOSPersistentVolumeSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5764,7 +5820,7 @@ var xxx_messageInfo_StorageOSPersistentVolumeSource proto.InternalMessageInfo func (m *StorageOSVolumeSource) Reset() { *m = StorageOSVolumeSource{} } func (*StorageOSVolumeSource) ProtoMessage() {} func (*StorageOSVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{204} + return fileDescriptor_6c07b07c062484ab, []int{206} } func (m *StorageOSVolumeSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5792,7 +5848,7 @@ var xxx_messageInfo_StorageOSVolumeSource proto.InternalMessageInfo func (m *Sysctl) Reset() { *m = Sysctl{} } func (*Sysctl) ProtoMessage() {} func (*Sysctl) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{205} + return fileDescriptor_6c07b07c062484ab, []int{207} } func (m *Sysctl) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5820,7 +5876,7 @@ var xxx_messageInfo_Sysctl proto.InternalMessageInfo func (m *TCPSocketAction) Reset() { *m = TCPSocketAction{} } func (*TCPSocketAction) ProtoMessage() {} func (*TCPSocketAction) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{206} + return fileDescriptor_6c07b07c062484ab, []int{208} } func (m *TCPSocketAction) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5848,7 +5904,7 @@ var xxx_messageInfo_TCPSocketAction proto.InternalMessageInfo func (m *Taint) Reset() { *m = Taint{} } func (*Taint) ProtoMessage() {} func (*Taint) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{207} + return fileDescriptor_6c07b07c062484ab, []int{209} } func (m *Taint) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5876,7 +5932,7 @@ var xxx_messageInfo_Taint proto.InternalMessageInfo func (m *Toleration) Reset() { *m = Toleration{} } func (*Toleration) ProtoMessage() {} func (*Toleration) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{208} + return fileDescriptor_6c07b07c062484ab, []int{210} } func (m *Toleration) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5904,7 +5960,7 @@ var xxx_messageInfo_Toleration proto.InternalMessageInfo func (m *TopologySelectorLabelRequirement) Reset() { *m = TopologySelectorLabelRequirement{} } func (*TopologySelectorLabelRequirement) ProtoMessage() {} func (*TopologySelectorLabelRequirement) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{209} + return fileDescriptor_6c07b07c062484ab, []int{211} } func (m *TopologySelectorLabelRequirement) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5932,7 +5988,7 @@ var xxx_messageInfo_TopologySelectorLabelRequirement proto.InternalMessageInfo func (m *TopologySelectorTerm) Reset() { *m = TopologySelectorTerm{} } func (*TopologySelectorTerm) ProtoMessage() {} func (*TopologySelectorTerm) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{210} + return fileDescriptor_6c07b07c062484ab, []int{212} } func (m *TopologySelectorTerm) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5960,7 +6016,7 @@ var xxx_messageInfo_TopologySelectorTerm proto.InternalMessageInfo func (m *TopologySpreadConstraint) Reset() { *m = TopologySpreadConstraint{} } func (*TopologySpreadConstraint) ProtoMessage() {} func (*TopologySpreadConstraint) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{211} + return fileDescriptor_6c07b07c062484ab, []int{213} } func (m *TopologySpreadConstraint) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5988,7 +6044,7 @@ var xxx_messageInfo_TopologySpreadConstraint proto.InternalMessageInfo func (m *TypedLocalObjectReference) Reset() { *m = TypedLocalObjectReference{} } func (*TypedLocalObjectReference) ProtoMessage() {} func (*TypedLocalObjectReference) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{212} + return fileDescriptor_6c07b07c062484ab, []int{214} } func (m *TypedLocalObjectReference) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6016,7 +6072,7 @@ var xxx_messageInfo_TypedLocalObjectReference proto.InternalMessageInfo func (m *TypedObjectReference) Reset() { *m = TypedObjectReference{} } func (*TypedObjectReference) ProtoMessage() {} func (*TypedObjectReference) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{213} + return fileDescriptor_6c07b07c062484ab, []int{215} } func (m *TypedObjectReference) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6044,7 +6100,7 @@ var xxx_messageInfo_TypedObjectReference proto.InternalMessageInfo func (m *Volume) Reset() { *m = Volume{} } func (*Volume) ProtoMessage() {} func (*Volume) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{214} + return fileDescriptor_6c07b07c062484ab, []int{216} } func (m *Volume) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6072,7 +6128,7 @@ var xxx_messageInfo_Volume proto.InternalMessageInfo func (m *VolumeDevice) Reset() { *m = VolumeDevice{} } func (*VolumeDevice) ProtoMessage() {} func (*VolumeDevice) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{215} + return fileDescriptor_6c07b07c062484ab, []int{217} } func (m *VolumeDevice) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6100,7 +6156,7 @@ var xxx_messageInfo_VolumeDevice proto.InternalMessageInfo func (m *VolumeMount) Reset() { *m = VolumeMount{} } func (*VolumeMount) ProtoMessage() {} func (*VolumeMount) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{216} + return fileDescriptor_6c07b07c062484ab, []int{218} } func (m *VolumeMount) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6128,7 +6184,7 @@ var xxx_messageInfo_VolumeMount proto.InternalMessageInfo func (m *VolumeMountStatus) Reset() { *m = VolumeMountStatus{} } func (*VolumeMountStatus) ProtoMessage() {} func (*VolumeMountStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{217} + return fileDescriptor_6c07b07c062484ab, []int{219} } func (m *VolumeMountStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6156,7 +6212,7 @@ var xxx_messageInfo_VolumeMountStatus proto.InternalMessageInfo func (m *VolumeNodeAffinity) Reset() { *m = VolumeNodeAffinity{} } func (*VolumeNodeAffinity) ProtoMessage() {} func (*VolumeNodeAffinity) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{218} + return fileDescriptor_6c07b07c062484ab, []int{220} } func (m *VolumeNodeAffinity) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6184,7 +6240,7 @@ var xxx_messageInfo_VolumeNodeAffinity proto.InternalMessageInfo func (m *VolumeProjection) Reset() { *m = VolumeProjection{} } func (*VolumeProjection) ProtoMessage() {} func (*VolumeProjection) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{219} + return fileDescriptor_6c07b07c062484ab, []int{221} } func (m *VolumeProjection) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6212,7 +6268,7 @@ var xxx_messageInfo_VolumeProjection proto.InternalMessageInfo func (m *VolumeResourceRequirements) Reset() { *m = VolumeResourceRequirements{} } func (*VolumeResourceRequirements) ProtoMessage() {} func (*VolumeResourceRequirements) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{220} + return fileDescriptor_6c07b07c062484ab, []int{222} } func (m *VolumeResourceRequirements) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6240,7 +6296,7 @@ var xxx_messageInfo_VolumeResourceRequirements proto.InternalMessageInfo func (m *VolumeSource) Reset() { *m = VolumeSource{} } func (*VolumeSource) ProtoMessage() {} func (*VolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{221} + return fileDescriptor_6c07b07c062484ab, []int{223} } func (m *VolumeSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6268,7 +6324,7 @@ var xxx_messageInfo_VolumeSource proto.InternalMessageInfo func (m *VsphereVirtualDiskVolumeSource) Reset() { *m = VsphereVirtualDiskVolumeSource{} } func (*VsphereVirtualDiskVolumeSource) ProtoMessage() {} func (*VsphereVirtualDiskVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{222} + return fileDescriptor_6c07b07c062484ab, []int{224} } func (m *VsphereVirtualDiskVolumeSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6296,7 +6352,7 @@ var xxx_messageInfo_VsphereVirtualDiskVolumeSource proto.InternalMessageInfo func (m *WeightedPodAffinityTerm) Reset() { *m = WeightedPodAffinityTerm{} } func (*WeightedPodAffinityTerm) ProtoMessage() {} func (*WeightedPodAffinityTerm) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{223} + return fileDescriptor_6c07b07c062484ab, []int{225} } func (m *WeightedPodAffinityTerm) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6324,7 +6380,7 @@ var xxx_messageInfo_WeightedPodAffinityTerm proto.InternalMessageInfo func (m *WindowsSecurityContextOptions) Reset() { *m = WindowsSecurityContextOptions{} } func (*WindowsSecurityContextOptions) ProtoMessage() {} func (*WindowsSecurityContextOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_6c07b07c062484ab, []int{224} + return fileDescriptor_6c07b07c062484ab, []int{226} } func (m *WindowsSecurityContextOptions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6393,6 +6449,7 @@ func init() { proto.RegisterType((*ContainerStateWaiting)(nil), "k8s.io.api.core.v1.ContainerStateWaiting") proto.RegisterType((*ContainerStatus)(nil), "k8s.io.api.core.v1.ContainerStatus") proto.RegisterMapType((ResourceList)(nil), "k8s.io.api.core.v1.ContainerStatus.AllocatedResourcesEntry") + proto.RegisterType((*ContainerUser)(nil), "k8s.io.api.core.v1.ContainerUser") proto.RegisterType((*DaemonEndpoint)(nil), "k8s.io.api.core.v1.DaemonEndpoint") proto.RegisterType((*DownwardAPIProjection)(nil), "k8s.io.api.core.v1.DownwardAPIProjection") proto.RegisterType((*DownwardAPIVolumeFile)(nil), "k8s.io.api.core.v1.DownwardAPIVolumeFile") @@ -6444,6 +6501,7 @@ func init() { proto.RegisterMapType((ResourceList)(nil), "k8s.io.api.core.v1.LimitRangeItem.MinEntry") proto.RegisterType((*LimitRangeList)(nil), "k8s.io.api.core.v1.LimitRangeList") proto.RegisterType((*LimitRangeSpec)(nil), "k8s.io.api.core.v1.LimitRangeSpec") + proto.RegisterType((*LinuxContainerUser)(nil), "k8s.io.api.core.v1.LinuxContainerUser") proto.RegisterType((*List)(nil), "k8s.io.api.core.v1.List") proto.RegisterType((*LoadBalancerIngress)(nil), "k8s.io.api.core.v1.LoadBalancerIngress") proto.RegisterType((*LoadBalancerStatus)(nil), "k8s.io.api.core.v1.LoadBalancerStatus") @@ -6613,989 +6671,997 @@ func init() { } var fileDescriptor_6c07b07c062484ab = []byte{ - // 15708 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x59, 0x8c, 0x1c, 0xd9, - 0x75, 0x20, 0xaa, 0xc8, 0xac, 0xf5, 0xd4, 0x7e, 0x8b, 0x64, 0x17, 0xab, 0x49, 0x26, 0x3b, 0xba, - 0x9b, 0xcd, 0xde, 0x8a, 0x62, 0x2f, 0xea, 0x56, 0x77, 0xab, 0xad, 0x5a, 0xc9, 0x6c, 0x56, 0x15, - 0xb3, 0x6f, 0x16, 0x49, 0xa9, 0xd5, 0x92, 0x15, 0xcc, 0xbc, 0x55, 0x15, 0xaa, 0xcc, 0x88, 0xec, - 0x88, 0xc8, 0x22, 0x8b, 0x4f, 0x86, 0x6d, 0xf9, 0x59, 0xb6, 0x64, 0x3f, 0x40, 0x78, 0xf0, 0x5b, - 0x20, 0x1b, 0xc6, 0x83, 0x9f, 0x9f, 0x97, 0xa7, 0x67, 0xbf, 0xd1, 0xc8, 0xe3, 0x4d, 0xde, 0xc6, - 0x33, 0x03, 0xd8, 0x83, 0x81, 0xc7, 0x63, 0xc0, 0x96, 0x31, 0xc6, 0x94, 0x47, 0xf4, 0x00, 0x86, - 0x3f, 0xc6, 0x36, 0x3c, 0xf3, 0x31, 0x53, 0xf0, 0x8c, 0x07, 0x77, 0x8d, 0x7b, 0x63, 0xc9, 0xcc, - 0x62, 0x93, 0xa5, 0x96, 0xd0, 0x7f, 0x99, 0xe7, 0x9c, 0x7b, 0xee, 0x8d, 0xbb, 0x9e, 0x7b, 0xce, - 0xb9, 0xe7, 0x80, 0xbd, 0xf3, 0x72, 0x38, 0xe7, 0xfa, 0x17, 0x9c, 0x96, 0x7b, 0xa1, 0xe6, 0x07, - 0xe4, 0xc2, 0xee, 0xc5, 0x0b, 0x5b, 0xc4, 0x23, 0x81, 0x13, 0x91, 0xfa, 0x5c, 0x2b, 0xf0, 0x23, - 0x1f, 0x21, 0x4e, 0x33, 0xe7, 0xb4, 0xdc, 0x39, 0x4a, 0x33, 0xb7, 0x7b, 0x71, 0xf6, 0xd9, 0x2d, - 0x37, 0xda, 0x6e, 0xdf, 0x9c, 0xab, 0xf9, 0xcd, 0x0b, 0x5b, 0xfe, 0x96, 0x7f, 0x81, 0x91, 0xde, - 0x6c, 0x6f, 0xb2, 0x7f, 0xec, 0x0f, 0xfb, 0xc5, 0x59, 0xcc, 0xbe, 0x10, 0x57, 0xd3, 0x74, 0x6a, - 0xdb, 0xae, 0x47, 0x82, 0xbd, 0x0b, 0xad, 0x9d, 0x2d, 0x56, 0x6f, 0x40, 0x42, 0xbf, 0x1d, 0xd4, - 0x48, 0xb2, 0xe2, 0x8e, 0xa5, 0xc2, 0x0b, 0x4d, 0x12, 0x39, 0x19, 0xcd, 0x9d, 0xbd, 0x90, 0x57, - 0x2a, 0x68, 0x7b, 0x91, 0xdb, 0x4c, 0x57, 0xf3, 0xa1, 0x6e, 0x05, 0xc2, 0xda, 0x36, 0x69, 0x3a, - 0xa9, 0x72, 0xcf, 0xe7, 0x95, 0x6b, 0x47, 0x6e, 0xe3, 0x82, 0xeb, 0x45, 0x61, 0x14, 0x24, 0x0b, - 0xd9, 0xdf, 0xb0, 0xe0, 0xec, 0xfc, 0x8d, 0xea, 0x72, 0xc3, 0x09, 0x23, 0xb7, 0xb6, 0xd0, 0xf0, - 0x6b, 0x3b, 0xd5, 0xc8, 0x0f, 0xc8, 0x75, 0xbf, 0xd1, 0x6e, 0x92, 0x2a, 0xeb, 0x08, 0xf4, 0x0c, - 0x0c, 0xed, 0xb2, 0xff, 0xe5, 0xa5, 0x19, 0xeb, 0xac, 0x75, 0x7e, 0x78, 0x61, 0xf2, 0xf7, 0xf6, - 0x4b, 0x1f, 0xb8, 0xbb, 0x5f, 0x1a, 0xba, 0x2e, 0xe0, 0x58, 0x51, 0xa0, 0x73, 0x30, 0xb0, 0x19, - 0x6e, 0xec, 0xb5, 0xc8, 0x4c, 0x81, 0xd1, 0x8e, 0x0b, 0xda, 0x81, 0x95, 0x2a, 0x85, 0x62, 0x81, - 0x45, 0x17, 0x60, 0xb8, 0xe5, 0x04, 0x91, 0x1b, 0xb9, 0xbe, 0x37, 0x53, 0x3c, 0x6b, 0x9d, 0xef, - 0x5f, 0x98, 0x12, 0xa4, 0xc3, 0x15, 0x89, 0xc0, 0x31, 0x0d, 0x6d, 0x46, 0x40, 0x9c, 0xfa, 0x55, - 0xaf, 0xb1, 0x37, 0xd3, 0x77, 0xd6, 0x3a, 0x3f, 0x14, 0x37, 0x03, 0x0b, 0x38, 0x56, 0x14, 0xf6, - 0x97, 0x0b, 0x30, 0x34, 0xbf, 0xb9, 0xe9, 0x7a, 0x6e, 0xb4, 0x87, 0xae, 0xc3, 0xa8, 0xe7, 0xd7, - 0x89, 0xfc, 0xcf, 0xbe, 0x62, 0xe4, 0xb9, 0xb3, 0x73, 0xe9, 0xa9, 0x34, 0xb7, 0xae, 0xd1, 0x2d, - 0x4c, 0xde, 0xdd, 0x2f, 0x8d, 0xea, 0x10, 0x6c, 0xf0, 0x41, 0x18, 0x46, 0x5a, 0x7e, 0x5d, 0xb1, - 0x2d, 0x30, 0xb6, 0xa5, 0x2c, 0xb6, 0x95, 0x98, 0x6c, 0x61, 0xe2, 0xee, 0x7e, 0x69, 0x44, 0x03, - 0x60, 0x9d, 0x09, 0xba, 0x09, 0x13, 0xf4, 0xaf, 0x17, 0xb9, 0x8a, 0x6f, 0x91, 0xf1, 0x7d, 0x34, - 0x8f, 0xaf, 0x46, 0xba, 0x30, 0x7d, 0x77, 0xbf, 0x34, 0x91, 0x00, 0xe2, 0x24, 0x43, 0xfb, 0x47, - 0x2d, 0x98, 0x98, 0x6f, 0xb5, 0xe6, 0x83, 0xa6, 0x1f, 0x54, 0x02, 0x7f, 0xd3, 0x6d, 0x10, 0xf4, - 0x12, 0xf4, 0x45, 0x74, 0xd4, 0xf8, 0x08, 0x3f, 0x2a, 0xba, 0xb6, 0x8f, 0x8e, 0xd5, 0xc1, 0x7e, - 0x69, 0x3a, 0x41, 0xce, 0x86, 0x92, 0x15, 0x40, 0x1f, 0x85, 0xc9, 0x86, 0x5f, 0x73, 0x1a, 0xdb, - 0x7e, 0x18, 0x09, 0xac, 0x18, 0xfa, 0x63, 0x77, 0xf7, 0x4b, 0x93, 0xab, 0x09, 0x1c, 0x4e, 0x51, - 0xdb, 0x77, 0x60, 0x7c, 0x3e, 0x8a, 0x9c, 0xda, 0x36, 0xa9, 0xf3, 0x09, 0x85, 0x5e, 0x80, 0x3e, - 0xcf, 0x69, 0xca, 0xc6, 0x9c, 0x95, 0x8d, 0x59, 0x77, 0x9a, 0xb4, 0x31, 0x93, 0xd7, 0x3c, 0xf7, - 0x9d, 0xb6, 0x98, 0xa4, 0x14, 0x86, 0x19, 0x35, 0x7a, 0x0e, 0xa0, 0x4e, 0x76, 0xdd, 0x1a, 0xa9, - 0x38, 0xd1, 0xb6, 0x68, 0x03, 0x12, 0x65, 0x61, 0x49, 0x61, 0xb0, 0x46, 0x65, 0xdf, 0x86, 0xe1, - 0xf9, 0x5d, 0xdf, 0xad, 0x57, 0xfc, 0x7a, 0x88, 0x76, 0x60, 0xa2, 0x15, 0x90, 0x4d, 0x12, 0x28, - 0xd0, 0x8c, 0x75, 0xb6, 0x78, 0x7e, 0xe4, 0xb9, 0xf3, 0x99, 0x7d, 0x6f, 0x92, 0x2e, 0x7b, 0x51, - 0xb0, 0xb7, 0xf0, 0x90, 0xa8, 0x6f, 0x22, 0x81, 0xc5, 0x49, 0xce, 0xf6, 0x3f, 0x2f, 0xc0, 0xf1, - 0xf9, 0x3b, 0xed, 0x80, 0x2c, 0xb9, 0xe1, 0x4e, 0x72, 0xc1, 0xd5, 0xdd, 0x70, 0x67, 0x3d, 0xee, - 0x01, 0x35, 0xd3, 0x97, 0x04, 0x1c, 0x2b, 0x0a, 0xf4, 0x2c, 0x0c, 0xd2, 0xdf, 0xd7, 0x70, 0x59, - 0x7c, 0xf2, 0xb4, 0x20, 0x1e, 0x59, 0x72, 0x22, 0x67, 0x89, 0xa3, 0xb0, 0xa4, 0x41, 0x6b, 0x30, - 0x52, 0x63, 0xfb, 0xc3, 0xd6, 0x9a, 0x5f, 0x27, 0x6c, 0x6e, 0x0d, 0x2f, 0x3c, 0x4d, 0xc9, 0x17, - 0x63, 0xf0, 0xc1, 0x7e, 0x69, 0x86, 0xb7, 0x4d, 0xb0, 0xd0, 0x70, 0x58, 0x2f, 0x8f, 0x6c, 0xb5, - 0xdc, 0xfb, 0x18, 0x27, 0xc8, 0x58, 0xea, 0xe7, 0xb5, 0x95, 0xdb, 0xcf, 0x56, 0xee, 0x68, 0xf6, - 0xaa, 0x45, 0x17, 0xa1, 0x6f, 0xc7, 0xf5, 0xea, 0x33, 0x03, 0x8c, 0xd7, 0x69, 0x3a, 0xe6, 0x57, - 0x5c, 0xaf, 0x7e, 0xb0, 0x5f, 0x9a, 0x32, 0x9a, 0x43, 0x81, 0x98, 0x91, 0xda, 0xff, 0xc9, 0x82, - 0x12, 0xc3, 0xad, 0xb8, 0x0d, 0x52, 0x21, 0x41, 0xe8, 0x86, 0x11, 0xf1, 0x22, 0xa3, 0x43, 0x9f, - 0x03, 0x08, 0x49, 0x2d, 0x20, 0x91, 0xd6, 0xa5, 0x6a, 0x62, 0x54, 0x15, 0x06, 0x6b, 0x54, 0x74, - 0x7f, 0x0a, 0xb7, 0x9d, 0x80, 0xcd, 0x2f, 0xd1, 0xb1, 0x6a, 0x7f, 0xaa, 0x4a, 0x04, 0x8e, 0x69, - 0x8c, 0xfd, 0xa9, 0xd8, 0x6d, 0x7f, 0x42, 0x1f, 0x81, 0x89, 0xb8, 0xb2, 0xb0, 0xe5, 0xd4, 0x64, - 0x07, 0xb2, 0x15, 0x5c, 0x35, 0x51, 0x38, 0x49, 0x6b, 0xff, 0xbf, 0x96, 0x98, 0x3c, 0xf4, 0xab, - 0xdf, 0xe3, 0xdf, 0x6a, 0xff, 0xaa, 0x05, 0x83, 0x0b, 0xae, 0x57, 0x77, 0xbd, 0x2d, 0xf4, 0x69, - 0x18, 0xa2, 0x47, 0x65, 0xdd, 0x89, 0x1c, 0xb1, 0x0d, 0x7f, 0x50, 0x5b, 0x5b, 0xea, 0xe4, 0x9a, - 0x6b, 0xed, 0x6c, 0x51, 0x40, 0x38, 0x47, 0xa9, 0xe9, 0x6a, 0xbb, 0x7a, 0xf3, 0x33, 0xa4, 0x16, - 0xad, 0x91, 0xc8, 0x89, 0x3f, 0x27, 0x86, 0x61, 0xc5, 0x15, 0x5d, 0x81, 0x81, 0xc8, 0x09, 0xb6, - 0x48, 0x24, 0xf6, 0xe3, 0xcc, 0x7d, 0x93, 0x97, 0xc4, 0x74, 0x45, 0x12, 0xaf, 0x46, 0xe2, 0x53, - 0x6a, 0x83, 0x15, 0xc5, 0x82, 0x85, 0xfd, 0xdf, 0x06, 0xe1, 0xe4, 0x62, 0xb5, 0x9c, 0x33, 0xaf, - 0xce, 0xc1, 0x40, 0x3d, 0x70, 0x77, 0x49, 0x20, 0xfa, 0x59, 0x71, 0x59, 0x62, 0x50, 0x2c, 0xb0, - 0xe8, 0x65, 0x18, 0xe5, 0xe7, 0xe3, 0x65, 0xc7, 0xab, 0xc7, 0xdb, 0xa3, 0xa0, 0x1e, 0xbd, 0xae, - 0xe1, 0xb0, 0x41, 0x79, 0xc8, 0x49, 0x75, 0x2e, 0xb1, 0x18, 0xf3, 0xce, 0xde, 0x2f, 0x58, 0x30, - 0xc9, 0xab, 0x99, 0x8f, 0xa2, 0xc0, 0xbd, 0xd9, 0x8e, 0x48, 0x38, 0xd3, 0xcf, 0x76, 0xba, 0xc5, - 0xac, 0xde, 0xca, 0xed, 0x81, 0xb9, 0xeb, 0x09, 0x2e, 0x7c, 0x13, 0x9c, 0x11, 0xf5, 0x4e, 0x26, - 0xd1, 0x38, 0x55, 0x2d, 0xfa, 0x01, 0x0b, 0x66, 0x6b, 0xbe, 0x17, 0x05, 0x7e, 0xa3, 0x41, 0x82, - 0x4a, 0xfb, 0x66, 0xc3, 0x0d, 0xb7, 0xf9, 0x3c, 0xc5, 0x64, 0x93, 0xed, 0x04, 0x39, 0x63, 0xa8, - 0x88, 0xc4, 0x18, 0x9e, 0xb9, 0xbb, 0x5f, 0x9a, 0x5d, 0xcc, 0x65, 0x85, 0x3b, 0x54, 0x83, 0x76, - 0x00, 0xd1, 0x93, 0xbd, 0x1a, 0x39, 0x5b, 0x24, 0xae, 0x7c, 0xb0, 0xf7, 0xca, 0x4f, 0xdc, 0xdd, - 0x2f, 0xa1, 0xf5, 0x14, 0x0b, 0x9c, 0xc1, 0x16, 0xbd, 0x03, 0xc7, 0x28, 0x34, 0xf5, 0xad, 0x43, - 0xbd, 0x57, 0x37, 0x73, 0x77, 0xbf, 0x74, 0x6c, 0x3d, 0x83, 0x09, 0xce, 0x64, 0x8d, 0xbe, 0xcf, - 0x82, 0x93, 0xf1, 0xe7, 0x2f, 0xdf, 0x6e, 0x39, 0x5e, 0x3d, 0xae, 0x78, 0xb8, 0xf7, 0x8a, 0xe9, - 0x9e, 0x7c, 0x72, 0x31, 0x8f, 0x13, 0xce, 0xaf, 0x04, 0x79, 0x30, 0x4d, 0x9b, 0x96, 0xac, 0x1b, - 0x7a, 0xaf, 0xfb, 0xa1, 0xbb, 0xfb, 0xa5, 0xe9, 0xf5, 0x34, 0x0f, 0x9c, 0xc5, 0x78, 0x76, 0x11, - 0x8e, 0x67, 0xce, 0x4e, 0x34, 0x09, 0xc5, 0x1d, 0xc2, 0x85, 0xc0, 0x61, 0x4c, 0x7f, 0xa2, 0x63, - 0xd0, 0xbf, 0xeb, 0x34, 0xda, 0x62, 0x61, 0x62, 0xfe, 0xe7, 0x95, 0xc2, 0xcb, 0x96, 0xfd, 0x2f, - 0x8a, 0x30, 0xb1, 0x58, 0x2d, 0xdf, 0xd3, 0xaa, 0xd7, 0x8f, 0xbd, 0x42, 0xc7, 0x63, 0x2f, 0x3e, - 0x44, 0x8b, 0xb9, 0x87, 0xe8, 0xf7, 0x66, 0x2c, 0xd9, 0x3e, 0xb6, 0x64, 0x3f, 0x9c, 0xb3, 0x64, - 0xef, 0xf3, 0x42, 0xdd, 0xcd, 0x99, 0xb5, 0xfd, 0x6c, 0x00, 0x33, 0x25, 0x24, 0x26, 0xfb, 0x25, - 0xb7, 0xda, 0x43, 0x4e, 0xdd, 0xfb, 0x33, 0x8e, 0x35, 0x18, 0x5d, 0x74, 0x5a, 0xce, 0x4d, 0xb7, - 0xe1, 0x46, 0x2e, 0x09, 0xd1, 0x13, 0x50, 0x74, 0xea, 0x75, 0x26, 0xdd, 0x0d, 0x2f, 0x1c, 0xbf, - 0xbb, 0x5f, 0x2a, 0xce, 0xd7, 0xa9, 0x98, 0x01, 0x8a, 0x6a, 0x0f, 0x53, 0x0a, 0xf4, 0x14, 0xf4, - 0xd5, 0x03, 0xbf, 0x35, 0x53, 0x60, 0x94, 0x74, 0x95, 0xf7, 0x2d, 0x05, 0x7e, 0x2b, 0x41, 0xca, - 0x68, 0xec, 0xdf, 0x29, 0xc0, 0xa9, 0x45, 0xd2, 0xda, 0x5e, 0xa9, 0xe6, 0x9c, 0x17, 0xe7, 0x61, - 0xa8, 0xe9, 0x7b, 0x6e, 0xe4, 0x07, 0xa1, 0xa8, 0x9a, 0xcd, 0x88, 0x35, 0x01, 0xc3, 0x0a, 0x8b, - 0xce, 0x42, 0x5f, 0x2b, 0x16, 0x62, 0x47, 0xa5, 0x00, 0xcc, 0xc4, 0x57, 0x86, 0xa1, 0x14, 0xed, - 0x90, 0x04, 0x62, 0xc6, 0x28, 0x8a, 0x6b, 0x21, 0x09, 0x30, 0xc3, 0xc4, 0x92, 0x00, 0x95, 0x11, - 0xc4, 0x89, 0x90, 0x90, 0x04, 0x28, 0x06, 0x6b, 0x54, 0xa8, 0x02, 0xc3, 0x61, 0x62, 0x64, 0x7b, - 0x5a, 0x9a, 0x63, 0x4c, 0x54, 0x50, 0x23, 0x19, 0x33, 0x31, 0x4e, 0xb0, 0x81, 0xae, 0xa2, 0xc2, - 0xd7, 0x0b, 0x80, 0x78, 0x17, 0x7e, 0x9b, 0x75, 0xdc, 0xb5, 0x74, 0xc7, 0xf5, 0xbe, 0x24, 0xee, - 0x57, 0xef, 0xfd, 0x67, 0x0b, 0x4e, 0x2d, 0xba, 0x5e, 0x9d, 0x04, 0x39, 0x13, 0xf0, 0xc1, 0x5c, - 0xe5, 0x0f, 0x27, 0xa4, 0x18, 0x53, 0xac, 0xef, 0x3e, 0x4c, 0x31, 0xfb, 0x6f, 0x2c, 0x40, 0xfc, - 0xb3, 0xdf, 0x73, 0x1f, 0x7b, 0x2d, 0xfd, 0xb1, 0xf7, 0x61, 0x5a, 0xd8, 0xff, 0xbf, 0x05, 0x23, - 0x8b, 0x0d, 0xc7, 0x6d, 0x8a, 0x4f, 0x5d, 0x84, 0x29, 0xa9, 0xb7, 0x62, 0x60, 0x4d, 0xf6, 0xa7, - 0x9b, 0xdb, 0x14, 0x4e, 0x22, 0x71, 0x9a, 0x1e, 0x7d, 0x02, 0x4e, 0x1a, 0xc0, 0x0d, 0xd2, 0x6c, - 0x35, 0x9c, 0x48, 0xbf, 0x15, 0xb0, 0xd3, 0x1f, 0xe7, 0x11, 0xe1, 0xfc, 0xf2, 0xf6, 0x2a, 0x8c, - 0x2f, 0x36, 0x5c, 0xe2, 0x45, 0xe5, 0xca, 0xa2, 0xef, 0x6d, 0xba, 0x5b, 0xe8, 0x15, 0x18, 0x8f, - 0xdc, 0x26, 0xf1, 0xdb, 0x51, 0x95, 0xd4, 0x7c, 0x8f, 0xdd, 0xb5, 0xad, 0xf3, 0xfd, 0x0b, 0xe8, - 0xee, 0x7e, 0x69, 0x7c, 0xc3, 0xc0, 0xe0, 0x04, 0xa5, 0xfd, 0x33, 0x74, 0xa7, 0x6d, 0xb4, 0xc3, - 0x88, 0x04, 0x1b, 0x41, 0x3b, 0x8c, 0x16, 0xda, 0x54, 0x5a, 0xae, 0x04, 0x3e, 0xed, 0x40, 0xd7, - 0xf7, 0xd0, 0x29, 0x43, 0x81, 0x30, 0x24, 0x95, 0x07, 0x42, 0x51, 0x30, 0x07, 0x10, 0xba, 0x5b, - 0x1e, 0x09, 0xb4, 0x4f, 0x1b, 0x67, 0x8b, 0x5b, 0x41, 0xb1, 0x46, 0x81, 0x1a, 0x30, 0xd6, 0x70, - 0x6e, 0x92, 0x46, 0x95, 0x34, 0x48, 0x2d, 0xf2, 0x03, 0xa1, 0x91, 0x79, 0xbe, 0xb7, 0x9b, 0xcb, - 0xaa, 0x5e, 0x74, 0x61, 0xea, 0xee, 0x7e, 0x69, 0xcc, 0x00, 0x61, 0x93, 0x39, 0xdd, 0xec, 0xfc, - 0x16, 0xfd, 0x0a, 0xa7, 0xa1, 0x5f, 0x97, 0xaf, 0x0a, 0x18, 0x56, 0x58, 0xb5, 0xd9, 0xf5, 0xe5, - 0x6d, 0x76, 0xf6, 0x9f, 0xd1, 0xa5, 0xe1, 0x37, 0x5b, 0xbe, 0x47, 0xbc, 0x68, 0xd1, 0xf7, 0xea, - 0x5c, 0x97, 0xf6, 0x8a, 0xa1, 0xec, 0x39, 0x97, 0x50, 0xf6, 0x9c, 0x48, 0x97, 0xd0, 0xf4, 0x3d, - 0x1f, 0x86, 0x81, 0x30, 0x72, 0xa2, 0x76, 0x28, 0x3a, 0xee, 0x11, 0xb9, 0x50, 0xaa, 0x0c, 0x7a, - 0xb0, 0x5f, 0x9a, 0x50, 0xc5, 0x38, 0x08, 0x8b, 0x02, 0xe8, 0x49, 0x18, 0x6c, 0x92, 0x30, 0x74, - 0xb6, 0xa4, 0xa0, 0x33, 0x21, 0xca, 0x0e, 0xae, 0x71, 0x30, 0x96, 0x78, 0xf4, 0x28, 0xf4, 0x93, - 0x20, 0xf0, 0x03, 0xf1, 0x6d, 0x63, 0x82, 0xb0, 0x7f, 0x99, 0x02, 0x31, 0xc7, 0xd9, 0xff, 0xda, - 0x82, 0x09, 0xd5, 0x56, 0x5e, 0xd7, 0x11, 0x5c, 0x30, 0xdf, 0x02, 0xa8, 0xc9, 0x0f, 0x0c, 0x99, - 0x60, 0x30, 0xf2, 0xdc, 0xb9, 0x4c, 0x19, 0x2c, 0xd5, 0x8d, 0x31, 0x67, 0x05, 0x0a, 0xb1, 0xc6, - 0xcd, 0xfe, 0x4d, 0x0b, 0xa6, 0x13, 0x5f, 0xb4, 0xea, 0x86, 0x11, 0x7a, 0x3b, 0xf5, 0x55, 0x73, - 0x3d, 0x4e, 0x3e, 0x37, 0xe4, 0xdf, 0xa4, 0x76, 0x29, 0x09, 0xd1, 0xbe, 0xe8, 0x32, 0xf4, 0xbb, - 0x11, 0x69, 0xca, 0x8f, 0x79, 0xb4, 0xe3, 0xc7, 0xf0, 0x56, 0xc5, 0x23, 0x52, 0xa6, 0x25, 0x31, - 0x67, 0x60, 0xff, 0x4e, 0x11, 0x86, 0xf9, 0xfa, 0x5e, 0x73, 0x5a, 0x47, 0x30, 0x16, 0x4f, 0xc3, - 0xb0, 0xdb, 0x6c, 0xb6, 0x23, 0xe7, 0xa6, 0x38, 0xa9, 0x87, 0xf8, 0xae, 0x59, 0x96, 0x40, 0x1c, - 0xe3, 0x51, 0x19, 0xfa, 0x58, 0x53, 0xf8, 0x57, 0x3e, 0x91, 0xfd, 0x95, 0xa2, 0xed, 0x73, 0x4b, - 0x4e, 0xe4, 0x70, 0x21, 0x59, 0xad, 0x2b, 0x0a, 0xc2, 0x8c, 0x05, 0x72, 0x00, 0x6e, 0xba, 0x9e, - 0x13, 0xec, 0x51, 0xd8, 0x4c, 0x91, 0x31, 0x7c, 0xb6, 0x33, 0xc3, 0x05, 0x45, 0xcf, 0xd9, 0xaa, - 0x0f, 0x8b, 0x11, 0x58, 0x63, 0x3a, 0xfb, 0x12, 0x0c, 0x2b, 0xe2, 0xc3, 0xc8, 0xba, 0xb3, 0x1f, - 0x81, 0x89, 0x44, 0x5d, 0xdd, 0x8a, 0x8f, 0xea, 0xa2, 0xf2, 0xaf, 0xb3, 0x2d, 0x43, 0xb4, 0x7a, - 0xd9, 0xdb, 0x15, 0x47, 0xcc, 0x1d, 0x38, 0xd6, 0xc8, 0x38, 0xa4, 0xc4, 0xb8, 0xf6, 0x7e, 0xa8, - 0x9d, 0x12, 0x9f, 0x7d, 0x2c, 0x0b, 0x8b, 0x33, 0xeb, 0x30, 0x76, 0xc4, 0x42, 0xa7, 0x1d, 0x91, - 0xee, 0x77, 0xc7, 0x54, 0xe3, 0xaf, 0x90, 0x3d, 0xb5, 0xa9, 0x7e, 0x2b, 0x9b, 0x7f, 0x9a, 0xf7, - 0x3e, 0xdf, 0x2e, 0x47, 0x04, 0x83, 0xe2, 0x15, 0xb2, 0xc7, 0x87, 0x42, 0xff, 0xba, 0x62, 0xc7, - 0xaf, 0xfb, 0xaa, 0x05, 0x63, 0xea, 0xeb, 0x8e, 0x60, 0x5f, 0x58, 0x30, 0xf7, 0x85, 0xd3, 0x1d, - 0x27, 0x78, 0xce, 0x8e, 0xf0, 0xf5, 0x02, 0x9c, 0x54, 0x34, 0xf4, 0xda, 0xc7, 0xff, 0x88, 0x59, - 0x75, 0x01, 0x86, 0x3d, 0xa5, 0x00, 0xb5, 0x4c, 0xcd, 0x63, 0xac, 0xfe, 0x8c, 0x69, 0xe8, 0x91, - 0xe7, 0xc5, 0x87, 0xf6, 0xa8, 0x6e, 0x19, 0x10, 0x87, 0xfb, 0x02, 0x14, 0xdb, 0x6e, 0x5d, 0x1c, - 0x30, 0x1f, 0x94, 0xbd, 0x7d, 0xad, 0xbc, 0x74, 0xb0, 0x5f, 0x7a, 0x24, 0xcf, 0x48, 0x46, 0x4f, - 0xb6, 0x70, 0xee, 0x5a, 0x79, 0x09, 0xd3, 0xc2, 0x68, 0x1e, 0x26, 0xa4, 0x28, 0x73, 0x9d, 0x4a, - 0xd2, 0xbe, 0x27, 0xce, 0x21, 0xa5, 0xde, 0xc7, 0x26, 0x1a, 0x27, 0xe9, 0xd1, 0x12, 0x4c, 0xee, - 0xb4, 0x6f, 0x92, 0x06, 0x89, 0xf8, 0x07, 0x5f, 0x21, 0x5c, 0xf9, 0x3d, 0x1c, 0x5f, 0xba, 0xaf, - 0x24, 0xf0, 0x38, 0x55, 0xc2, 0xfe, 0x07, 0x76, 0x1e, 0x88, 0xde, 0xd3, 0xe4, 0x9b, 0x6f, 0xe5, - 0x74, 0xee, 0x65, 0x56, 0x5c, 0x21, 0x7b, 0x1b, 0x3e, 0x95, 0x43, 0xb2, 0x67, 0x85, 0x31, 0xe7, - 0xfb, 0x3a, 0xce, 0xf9, 0x5f, 0x2a, 0xc0, 0x71, 0xd5, 0x03, 0x86, 0x7c, 0xff, 0xed, 0xde, 0x07, - 0x17, 0x61, 0xa4, 0x4e, 0x36, 0x9d, 0x76, 0x23, 0x52, 0x96, 0x98, 0x7e, 0x6e, 0x1c, 0x5c, 0x8a, - 0xc1, 0x58, 0xa7, 0x39, 0x44, 0xb7, 0xfd, 0xc2, 0x18, 0x3b, 0x88, 0x23, 0x87, 0xce, 0x71, 0xb5, - 0x6a, 0xac, 0xdc, 0x55, 0xf3, 0x28, 0xf4, 0xbb, 0x4d, 0x2a, 0x98, 0x15, 0x4c, 0x79, 0xab, 0x4c, - 0x81, 0x98, 0xe3, 0xd0, 0xe3, 0x30, 0x58, 0xf3, 0x9b, 0x4d, 0xc7, 0xab, 0xb3, 0x23, 0x6f, 0x78, - 0x61, 0x84, 0xca, 0x6e, 0x8b, 0x1c, 0x84, 0x25, 0x8e, 0x0a, 0xdf, 0x4e, 0xb0, 0xc5, 0xd5, 0x53, - 0x42, 0xf8, 0x9e, 0x0f, 0xb6, 0x42, 0xcc, 0xa0, 0xf4, 0x76, 0x7d, 0xcb, 0x0f, 0x76, 0x5c, 0x6f, - 0x6b, 0xc9, 0x0d, 0xc4, 0x92, 0x50, 0x67, 0xe1, 0x0d, 0x85, 0xc1, 0x1a, 0x15, 0x5a, 0x81, 0xfe, - 0x96, 0x1f, 0x44, 0xe1, 0xcc, 0x00, 0xeb, 0xee, 0x47, 0x72, 0x36, 0x22, 0xfe, 0xb5, 0x15, 0x3f, - 0x88, 0xe2, 0x0f, 0xa0, 0xff, 0x42, 0xcc, 0x8b, 0xa3, 0x55, 0x18, 0x24, 0xde, 0xee, 0x4a, 0xe0, - 0x37, 0x67, 0xa6, 0xf3, 0x39, 0x2d, 0x73, 0x12, 0x3e, 0xcd, 0x62, 0x19, 0x55, 0x80, 0xb1, 0x64, - 0x81, 0x3e, 0x0c, 0x45, 0xe2, 0xed, 0xce, 0x0c, 0x32, 0x4e, 0xb3, 0x39, 0x9c, 0xae, 0x3b, 0x41, - 0xbc, 0xe7, 0x2f, 0x7b, 0xbb, 0x98, 0x96, 0x41, 0x1f, 0x87, 0x61, 0xb9, 0x61, 0x84, 0x42, 0xef, - 0x9b, 0x39, 0x61, 0xe5, 0x36, 0x83, 0xc9, 0x3b, 0x6d, 0x37, 0x20, 0x4d, 0xe2, 0x45, 0x61, 0xbc, - 0x43, 0x4a, 0x6c, 0x88, 0x63, 0x6e, 0xa8, 0x06, 0xa3, 0x01, 0x09, 0xdd, 0x3b, 0xa4, 0xe2, 0x37, - 0xdc, 0xda, 0xde, 0xcc, 0x43, 0xac, 0x79, 0x4f, 0x76, 0xec, 0x32, 0xac, 0x15, 0x88, 0xed, 0x12, - 0x3a, 0x14, 0x1b, 0x4c, 0xd1, 0x9b, 0x30, 0x16, 0x90, 0x30, 0x72, 0x82, 0x48, 0xd4, 0x32, 0xa3, - 0xec, 0x88, 0x63, 0x58, 0x47, 0xf0, 0xeb, 0x44, 0x5c, 0x4d, 0x8c, 0xc1, 0x26, 0x07, 0xf4, 0x71, - 0x69, 0x24, 0x59, 0xf3, 0xdb, 0x5e, 0x14, 0xce, 0x0c, 0xb3, 0x76, 0x67, 0x5a, 0xd3, 0xaf, 0xc7, - 0x74, 0x49, 0x2b, 0x0a, 0x2f, 0x8c, 0x0d, 0x56, 0xe8, 0x93, 0x30, 0xc6, 0xff, 0x73, 0x23, 0x70, - 0x38, 0x73, 0x9c, 0xf1, 0x3e, 0x9b, 0xcf, 0x9b, 0x13, 0x2e, 0x1c, 0x17, 0xcc, 0xc7, 0x74, 0x68, - 0x88, 0x4d, 0x6e, 0x08, 0xc3, 0x58, 0xc3, 0xdd, 0x25, 0x1e, 0x09, 0xc3, 0x4a, 0xe0, 0xdf, 0x24, - 0x42, 0xa7, 0x7d, 0x32, 0xdb, 0x68, 0xec, 0xdf, 0x24, 0xe2, 0x12, 0xa8, 0x97, 0xc1, 0x26, 0x0b, - 0x74, 0x0d, 0xc6, 0x03, 0xe2, 0xd4, 0xdd, 0x98, 0xe9, 0x48, 0x37, 0xa6, 0xec, 0xe2, 0x8c, 0x8d, - 0x42, 0x38, 0xc1, 0x04, 0x5d, 0x85, 0x51, 0xd6, 0xe7, 0xed, 0x16, 0x67, 0x7a, 0xa2, 0x1b, 0x53, - 0xe6, 0x02, 0x51, 0xd5, 0x8a, 0x60, 0x83, 0x01, 0x7a, 0x03, 0x86, 0x1b, 0xee, 0x26, 0xa9, 0xed, - 0xd5, 0x1a, 0x64, 0x66, 0x94, 0x71, 0xcb, 0xdc, 0x0c, 0x57, 0x25, 0x11, 0x97, 0xcf, 0xd5, 0x5f, - 0x1c, 0x17, 0x47, 0xd7, 0xe1, 0x44, 0x44, 0x82, 0xa6, 0xeb, 0x39, 0x74, 0x13, 0x13, 0x57, 0x42, - 0x66, 0xcb, 0x1f, 0x63, 0xb3, 0xeb, 0x8c, 0x18, 0x8d, 0x13, 0x1b, 0x99, 0x54, 0x38, 0xa7, 0x34, - 0xba, 0x0d, 0x33, 0x19, 0x18, 0x3e, 0x6f, 0x8f, 0x31, 0xce, 0xaf, 0x09, 0xce, 0x33, 0x1b, 0x39, - 0x74, 0x07, 0x1d, 0x70, 0x38, 0x97, 0x3b, 0xba, 0x0a, 0x13, 0x6c, 0xe7, 0xac, 0xb4, 0x1b, 0x0d, - 0x51, 0xe1, 0x38, 0xab, 0xf0, 0x71, 0x29, 0x47, 0x94, 0x4d, 0xf4, 0xc1, 0x7e, 0x09, 0xe2, 0x7f, - 0x38, 0x59, 0x1a, 0xdd, 0x64, 0x66, 0xe3, 0x76, 0xe0, 0x46, 0x7b, 0x74, 0x55, 0x91, 0xdb, 0xd1, - 0xcc, 0x44, 0x47, 0x15, 0x9a, 0x4e, 0xaa, 0x6c, 0xcb, 0x3a, 0x10, 0x27, 0x19, 0xd2, 0xa3, 0x20, - 0x8c, 0xea, 0xae, 0x37, 0x33, 0xc9, 0xef, 0x53, 0x72, 0x27, 0xad, 0x52, 0x20, 0xe6, 0x38, 0x66, - 0x32, 0xa6, 0x3f, 0xae, 0xd2, 0x13, 0x77, 0x8a, 0x11, 0xc6, 0x26, 0x63, 0x89, 0xc0, 0x31, 0x0d, - 0x15, 0x82, 0xa3, 0x68, 0x6f, 0x06, 0x31, 0x52, 0xb5, 0x21, 0x6e, 0x6c, 0x7c, 0x1c, 0x53, 0xb8, - 0x7d, 0x13, 0xc6, 0xd5, 0x36, 0xc1, 0xfa, 0x04, 0x95, 0xa0, 0x9f, 0x89, 0x7d, 0x42, 0xe1, 0x3b, - 0x4c, 0x9b, 0xc0, 0x44, 0x42, 0xcc, 0xe1, 0xac, 0x09, 0xee, 0x1d, 0xb2, 0xb0, 0x17, 0x11, 0xae, - 0x8b, 0x28, 0x6a, 0x4d, 0x90, 0x08, 0x1c, 0xd3, 0xd8, 0xff, 0x9d, 0x8b, 0xcf, 0xf1, 0x29, 0xd1, - 0xc3, 0xb9, 0xf8, 0x0c, 0x0c, 0x31, 0x57, 0x15, 0x3f, 0xe0, 0xf6, 0xe4, 0xfe, 0x58, 0x60, 0xbe, - 0x2c, 0xe0, 0x58, 0x51, 0xa0, 0x57, 0x61, 0xac, 0xa6, 0x57, 0x20, 0x0e, 0x75, 0xb5, 0x8d, 0x18, - 0xb5, 0x63, 0x93, 0x16, 0xbd, 0x0c, 0x43, 0xcc, 0x2b, 0xab, 0xe6, 0x37, 0x84, 0xb4, 0x29, 0x25, - 0x93, 0xa1, 0x8a, 0x80, 0x1f, 0x68, 0xbf, 0xb1, 0xa2, 0x46, 0xe7, 0x60, 0x80, 0x36, 0xa1, 0x5c, - 0x11, 0xc7, 0xa9, 0xd2, 0x5d, 0x5e, 0x66, 0x50, 0x2c, 0xb0, 0xf6, 0x6f, 0x5a, 0x4c, 0x96, 0x4a, - 0xef, 0xf9, 0xe8, 0x32, 0x3b, 0x34, 0xd8, 0x09, 0xa2, 0xe9, 0x0e, 0x1f, 0xd3, 0x4e, 0x02, 0x85, - 0x3b, 0x48, 0xfc, 0xc7, 0x46, 0x49, 0xf4, 0x56, 0xf2, 0x64, 0xe0, 0x02, 0xc5, 0x0b, 0xb2, 0x0b, - 0x92, 0xa7, 0xc3, 0xc3, 0xf1, 0x11, 0x47, 0xdb, 0xd3, 0xe9, 0x88, 0xb0, 0xff, 0xd7, 0x82, 0x36, - 0x4b, 0xaa, 0x91, 0x13, 0x11, 0x54, 0x81, 0xc1, 0x5b, 0x8e, 0x1b, 0xb9, 0xde, 0x96, 0x90, 0xfb, - 0x3a, 0x1f, 0x74, 0xac, 0xd0, 0x0d, 0x5e, 0x80, 0x4b, 0x2f, 0xe2, 0x0f, 0x96, 0x6c, 0x28, 0xc7, - 0xa0, 0xed, 0x79, 0x94, 0x63, 0xa1, 0x57, 0x8e, 0x98, 0x17, 0xe0, 0x1c, 0xc5, 0x1f, 0x2c, 0xd9, - 0xa0, 0xb7, 0x01, 0xe4, 0x0e, 0x41, 0xea, 0x42, 0x77, 0xf8, 0x4c, 0x77, 0xa6, 0x1b, 0xaa, 0x0c, - 0x57, 0x4e, 0xc6, 0xff, 0xb1, 0xc6, 0xcf, 0x8e, 0xb4, 0x31, 0xd5, 0x1b, 0x83, 0x3e, 0x41, 0x97, - 0xa8, 0x13, 0x44, 0xa4, 0x3e, 0x1f, 0x89, 0xce, 0x79, 0xaa, 0xb7, 0xcb, 0xe1, 0x86, 0xdb, 0x24, - 0xfa, 0x72, 0x16, 0x4c, 0x70, 0xcc, 0xcf, 0xfe, 0x95, 0x22, 0xcc, 0xe4, 0x35, 0x97, 0x2e, 0x1a, - 0x72, 0xdb, 0x8d, 0x16, 0xa9, 0x58, 0x6b, 0x99, 0x8b, 0x66, 0x59, 0xc0, 0xb1, 0xa2, 0xa0, 0xb3, - 0x37, 0x74, 0xb7, 0xe4, 0xdd, 0xbe, 0x3f, 0x9e, 0xbd, 0x55, 0x06, 0xc5, 0x02, 0x4b, 0xe9, 0x02, - 0xe2, 0x84, 0xc2, 0x5d, 0x50, 0x9b, 0xe5, 0x98, 0x41, 0xb1, 0xc0, 0xea, 0x5a, 0xc6, 0xbe, 0x2e, - 0x5a, 0x46, 0xa3, 0x8b, 0xfa, 0xef, 0x6f, 0x17, 0xa1, 0x4f, 0x01, 0x6c, 0xba, 0x9e, 0x1b, 0x6e, - 0x33, 0xee, 0x03, 0x87, 0xe6, 0xae, 0x84, 0xe2, 0x15, 0xc5, 0x05, 0x6b, 0x1c, 0xd1, 0x8b, 0x30, - 0xa2, 0x36, 0x90, 0xf2, 0x12, 0x73, 0x56, 0xd0, 0x9c, 0xbf, 0xe2, 0xdd, 0x74, 0x09, 0xeb, 0x74, - 0xf6, 0x67, 0x92, 0xf3, 0x45, 0xac, 0x00, 0xad, 0x7f, 0xad, 0x5e, 0xfb, 0xb7, 0xd0, 0xb9, 0x7f, - 0xed, 0xdf, 0x1d, 0x84, 0x09, 0xa3, 0xb2, 0x76, 0xd8, 0xc3, 0x9e, 0x7b, 0x89, 0x1e, 0x40, 0x4e, - 0x44, 0xc4, 0xfa, 0xb3, 0xbb, 0x2f, 0x15, 0xfd, 0x90, 0xa2, 0x2b, 0x80, 0x97, 0x47, 0x9f, 0x82, - 0xe1, 0x86, 0x13, 0x32, 0x8d, 0x25, 0x11, 0xeb, 0xae, 0x17, 0x66, 0xf1, 0x85, 0xd0, 0x09, 0x23, - 0xed, 0xd4, 0xe7, 0xbc, 0x63, 0x96, 0xf4, 0xa4, 0xa4, 0xf2, 0x95, 0xf4, 0x47, 0x55, 0x8d, 0xa0, - 0x42, 0xd8, 0x1e, 0xe6, 0x38, 0xf4, 0x32, 0xdb, 0x5a, 0xe9, 0xac, 0x58, 0xa4, 0xd2, 0x28, 0x9b, - 0x66, 0xfd, 0x86, 0x90, 0xad, 0x70, 0xd8, 0xa0, 0x8c, 0xef, 0x64, 0x03, 0x1d, 0xee, 0x64, 0x4f, - 0xc2, 0x20, 0xfb, 0xa1, 0x66, 0x80, 0x1a, 0x8d, 0x32, 0x07, 0x63, 0x89, 0x4f, 0x4e, 0x98, 0xa1, - 0xde, 0x26, 0x0c, 0xbd, 0xf5, 0x89, 0x49, 0xcd, 0x1c, 0x45, 0x86, 0xf8, 0x2e, 0x27, 0xa6, 0x3c, - 0x96, 0x38, 0xf4, 0xb3, 0x16, 0x20, 0xa7, 0x41, 0x6f, 0xcb, 0x14, 0xac, 0x2e, 0x37, 0xc0, 0x44, - 0xed, 0x57, 0xbb, 0x76, 0x7b, 0x3b, 0x9c, 0x9b, 0x4f, 0x95, 0xe6, 0x9a, 0xd2, 0x57, 0x44, 0x13, - 0x51, 0x9a, 0x40, 0x3f, 0x8c, 0x56, 0xdd, 0x30, 0xfa, 0xdc, 0x9f, 0x27, 0x0e, 0xa7, 0x8c, 0x26, - 0xa1, 0x6b, 0xfa, 0xe5, 0x6b, 0xe4, 0x90, 0x97, 0xaf, 0xb1, 0xdc, 0x8b, 0xd7, 0x77, 0x27, 0x2e, - 0x30, 0xa3, 0xec, 0xcb, 0x1f, 0xef, 0x72, 0x81, 0x11, 0xea, 0xf4, 0x1e, 0xae, 0x31, 0xb3, 0x6d, - 0x78, 0x28, 0xa7, 0x8b, 0x32, 0x14, 0xbc, 0x4b, 0xba, 0x82, 0xb7, 0x8b, 0x5a, 0x70, 0x4e, 0x7e, - 0xc4, 0xdc, 0x9b, 0x6d, 0xc7, 0x8b, 0xdc, 0x68, 0x4f, 0x57, 0x08, 0x3f, 0x05, 0xe3, 0x4b, 0x0e, - 0x69, 0xfa, 0xde, 0xb2, 0x57, 0x6f, 0xf9, 0xae, 0x17, 0xa1, 0x19, 0xe8, 0x63, 0xd2, 0x0d, 0xdf, - 0xdb, 0xfb, 0x68, 0xd3, 0x31, 0x83, 0xd8, 0x5b, 0x70, 0x7c, 0xc9, 0xbf, 0xe5, 0xdd, 0x72, 0x82, - 0xfa, 0x7c, 0xa5, 0xac, 0x29, 0xac, 0xd6, 0xa5, 0xc2, 0xc4, 0xca, 0xbf, 0x8e, 0x6a, 0x25, 0x79, - 0x2f, 0xac, 0xb8, 0x0d, 0x92, 0xa3, 0x56, 0xfc, 0x3f, 0x0a, 0x46, 0x4d, 0x31, 0xbd, 0x32, 0x8a, - 0x59, 0xb9, 0x1e, 0x00, 0x6f, 0xc2, 0xd0, 0xa6, 0x4b, 0x1a, 0x75, 0x4c, 0x36, 0x45, 0xef, 0x3c, - 0x91, 0xef, 0x23, 0xb8, 0x42, 0x29, 0x95, 0xf5, 0x8e, 0xa9, 0x5b, 0x56, 0x44, 0x61, 0xac, 0xd8, - 0xa0, 0x1d, 0x98, 0x94, 0x7d, 0x28, 0xb1, 0x62, 0xc3, 0x79, 0xb2, 0xd3, 0xcc, 0x32, 0x99, 0x33, - 0x7f, 0x69, 0x9c, 0x60, 0x83, 0x53, 0x8c, 0xd1, 0x29, 0xe8, 0x6b, 0xd2, 0xa3, 0xb5, 0x8f, 0x75, - 0x3f, 0xd3, 0xaf, 0x30, 0x55, 0x11, 0x83, 0xda, 0x3f, 0x61, 0xc1, 0x43, 0xa9, 0x9e, 0x11, 0x2a, - 0xb3, 0xfb, 0x3c, 0x0a, 0x49, 0x15, 0x56, 0xa1, 0xbb, 0x0a, 0xcb, 0xfe, 0xff, 0x2c, 0x38, 0xb6, - 0xdc, 0x6c, 0x45, 0x7b, 0x4b, 0xae, 0x69, 0xae, 0x7f, 0x09, 0x06, 0x9a, 0xa4, 0xee, 0xb6, 0x9b, - 0x62, 0xe4, 0x4a, 0xf2, 0xf8, 0x59, 0x63, 0xd0, 0x83, 0xfd, 0xd2, 0x58, 0x35, 0xf2, 0x03, 0x67, - 0x8b, 0x70, 0x00, 0x16, 0xe4, 0xec, 0x10, 0x77, 0xef, 0x90, 0x55, 0xb7, 0xe9, 0x46, 0xf7, 0x36, - 0xdb, 0x85, 0xa5, 0x5d, 0x32, 0xc1, 0x31, 0x3f, 0xfb, 0x1b, 0x16, 0x4c, 0xc8, 0x79, 0x3f, 0x5f, - 0xaf, 0x07, 0x24, 0x0c, 0xd1, 0x2c, 0x14, 0xdc, 0x96, 0x68, 0x25, 0x88, 0x56, 0x16, 0xca, 0x15, - 0x5c, 0x70, 0x5b, 0xf2, 0xbe, 0xc0, 0x4e, 0xb8, 0xa2, 0xe9, 0x74, 0x70, 0x59, 0xc0, 0xb1, 0xa2, - 0x40, 0xe7, 0x61, 0xc8, 0xf3, 0xeb, 0x5c, 0xe4, 0x16, 0x46, 0x5c, 0x4a, 0xb9, 0x2e, 0x60, 0x58, - 0x61, 0x51, 0x05, 0x86, 0xb9, 0x4b, 0x6a, 0x3c, 0x69, 0x7b, 0x72, 0x6c, 0x65, 0x5f, 0xb6, 0x21, - 0x4b, 0xe2, 0x98, 0x89, 0xfd, 0xdb, 0x16, 0x8c, 0xca, 0x2f, 0xeb, 0xf1, 0x32, 0x44, 0x97, 0x56, - 0x7c, 0x11, 0x8a, 0x97, 0x16, 0xbd, 0xcc, 0x30, 0x8c, 0x71, 0x87, 0x29, 0x1e, 0xea, 0x0e, 0x73, - 0x11, 0x46, 0x9c, 0x56, 0xab, 0x62, 0x5e, 0x80, 0xd8, 0x54, 0x9a, 0x8f, 0xc1, 0x58, 0xa7, 0xb1, - 0x7f, 0xbc, 0x00, 0xe3, 0xf2, 0x0b, 0xaa, 0xed, 0x9b, 0x21, 0x89, 0xd0, 0x06, 0x0c, 0x3b, 0x7c, - 0x94, 0x88, 0x9c, 0xe4, 0x8f, 0x66, 0x2b, 0xe6, 0x8c, 0x21, 0x8d, 0x25, 0xb9, 0x79, 0x59, 0x1a, - 0xc7, 0x8c, 0x50, 0x03, 0xa6, 0x3c, 0x3f, 0x62, 0xa7, 0xba, 0xc2, 0x77, 0xb2, 0x95, 0x26, 0xb9, - 0x9f, 0x14, 0xdc, 0xa7, 0xd6, 0x93, 0x5c, 0x70, 0x9a, 0x31, 0x5a, 0x96, 0xca, 0xce, 0x62, 0xbe, - 0x96, 0x4a, 0x1f, 0xb8, 0x6c, 0x5d, 0xa7, 0xfd, 0x1b, 0x16, 0x0c, 0x4b, 0xb2, 0xa3, 0x30, 0x8b, - 0xaf, 0xc1, 0x60, 0xc8, 0x06, 0x41, 0x76, 0x8d, 0xdd, 0xa9, 0xe1, 0x7c, 0xbc, 0x62, 0x61, 0x85, - 0xff, 0x0f, 0xb1, 0xe4, 0xc1, 0x6c, 0x5d, 0xaa, 0xf9, 0xef, 0x11, 0x5b, 0x97, 0x6a, 0x4f, 0xce, - 0xa1, 0xf4, 0x97, 0xac, 0xcd, 0x9a, 0xf2, 0x98, 0xca, 0xd4, 0xad, 0x80, 0x6c, 0xba, 0xb7, 0x93, - 0x32, 0x75, 0x85, 0x41, 0xb1, 0xc0, 0xa2, 0xb7, 0x61, 0xb4, 0x26, 0x8d, 0x1c, 0xf1, 0x0a, 0x3f, - 0xd7, 0xd1, 0xe0, 0xa6, 0x6c, 0xb3, 0x5c, 0x49, 0xb7, 0xa8, 0x95, 0xc7, 0x06, 0x37, 0xd3, 0xe5, - 0xaa, 0xd8, 0xcd, 0xe5, 0x2a, 0xe6, 0x9b, 0xef, 0x80, 0xf4, 0x93, 0x16, 0x0c, 0x70, 0xe5, 0x76, - 0x6f, 0xb6, 0x05, 0xcd, 0x54, 0x1d, 0xf7, 0xdd, 0x75, 0x0a, 0x14, 0x92, 0x06, 0x5a, 0x83, 0x61, - 0xf6, 0x83, 0x29, 0xe7, 0x8b, 0xf9, 0x0f, 0xb4, 0x78, 0xad, 0x7a, 0x03, 0xaf, 0xcb, 0x62, 0x38, - 0xe6, 0x60, 0xff, 0x58, 0x91, 0xee, 0x6e, 0x31, 0xa9, 0x71, 0xe8, 0x5b, 0x0f, 0xee, 0xd0, 0x2f, - 0x3c, 0xa8, 0x43, 0x7f, 0x0b, 0x26, 0x6a, 0x9a, 0x61, 0x3b, 0x1e, 0xc9, 0xf3, 0x1d, 0x27, 0x89, - 0x66, 0x03, 0xe7, 0xea, 0xbf, 0x45, 0x93, 0x09, 0x4e, 0x72, 0x45, 0x9f, 0x80, 0x51, 0x3e, 0xce, - 0xa2, 0x16, 0xee, 0xb5, 0xf6, 0x78, 0xfe, 0x7c, 0xd1, 0xab, 0xe0, 0xea, 0x62, 0xad, 0x38, 0x36, - 0x98, 0xd9, 0x7f, 0x6b, 0x01, 0x5a, 0x6e, 0x6d, 0x93, 0x26, 0x09, 0x9c, 0x46, 0x6c, 0x9f, 0xfa, - 0xa2, 0x05, 0x33, 0x24, 0x05, 0x5e, 0xf4, 0x9b, 0x4d, 0x71, 0x1b, 0xcd, 0x51, 0x98, 0x2c, 0xe7, - 0x94, 0x51, 0x4f, 0xc6, 0x66, 0xf2, 0x28, 0x70, 0x6e, 0x7d, 0x68, 0x0d, 0xa6, 0xf9, 0x29, 0xa9, - 0x10, 0x9a, 0x9b, 0xd8, 0xc3, 0x82, 0xf1, 0xf4, 0x46, 0x9a, 0x04, 0x67, 0x95, 0xb3, 0x7f, 0x63, - 0x0c, 0x72, 0x5b, 0xf1, 0xbe, 0x61, 0xee, 0x7d, 0xc3, 0xdc, 0xfb, 0x86, 0xb9, 0xf7, 0x0d, 0x73, - 0xef, 0x1b, 0xe6, 0xde, 0x37, 0xcc, 0xbd, 0x47, 0x0d, 0x73, 0xff, 0x9b, 0x05, 0xc7, 0xd5, 0xf1, - 0x65, 0x5c, 0xd8, 0x3f, 0x0b, 0xd3, 0x7c, 0xb9, 0x19, 0xde, 0xde, 0xe2, 0xb8, 0xbe, 0x98, 0x39, - 0x73, 0x13, 0xaf, 0x12, 0x8c, 0x82, 0xfc, 0x79, 0x57, 0x06, 0x02, 0x67, 0x55, 0x63, 0xff, 0xca, - 0x10, 0xf4, 0x2f, 0xef, 0x12, 0x2f, 0x3a, 0x82, 0xab, 0x4d, 0x0d, 0xc6, 0x5d, 0x6f, 0xd7, 0x6f, - 0xec, 0x92, 0x3a, 0xc7, 0x1f, 0xe6, 0x06, 0x7e, 0x42, 0xb0, 0x1e, 0x2f, 0x1b, 0x2c, 0x70, 0x82, - 0xe5, 0x83, 0x30, 0x6f, 0x5c, 0x82, 0x01, 0x7e, 0xf8, 0x08, 0xdb, 0x46, 0xe6, 0x9e, 0xcd, 0x3a, - 0x51, 0x1c, 0xa9, 0xb1, 0xe9, 0x85, 0x1f, 0x6e, 0xa2, 0x38, 0xfa, 0x0c, 0x8c, 0x6f, 0xba, 0x41, - 0x18, 0x6d, 0xb8, 0x4d, 0x7a, 0x34, 0x34, 0x5b, 0xf7, 0x60, 0xce, 0x50, 0xfd, 0xb0, 0x62, 0x70, - 0xc2, 0x09, 0xce, 0x68, 0x0b, 0xc6, 0x1a, 0x8e, 0x5e, 0xd5, 0xe0, 0xa1, 0xab, 0x52, 0xa7, 0xc3, - 0xaa, 0xce, 0x08, 0x9b, 0x7c, 0xe9, 0x72, 0xaa, 0x31, 0x8d, 0xfc, 0x10, 0x53, 0x67, 0xa8, 0xe5, - 0xc4, 0x55, 0xf1, 0x1c, 0x47, 0x05, 0x34, 0xe6, 0x29, 0x3f, 0x6c, 0x0a, 0x68, 0x9a, 0x3f, 0xfc, - 0xa7, 0x61, 0x98, 0xd0, 0x2e, 0xa4, 0x8c, 0xc5, 0x01, 0x73, 0xa1, 0xb7, 0xb6, 0xae, 0xb9, 0xb5, - 0xc0, 0x37, 0x0d, 0x49, 0xcb, 0x92, 0x13, 0x8e, 0x99, 0xa2, 0x45, 0x18, 0x08, 0x49, 0xe0, 0x2a, - 0x65, 0x75, 0x87, 0x61, 0x64, 0x64, 0xfc, 0xfd, 0x20, 0xff, 0x8d, 0x45, 0x51, 0x3a, 0xbd, 0x1c, - 0xa6, 0x8a, 0x65, 0x87, 0x81, 0x36, 0xbd, 0xe6, 0x19, 0x14, 0x0b, 0x2c, 0x7a, 0x03, 0x06, 0x03, - 0xd2, 0x60, 0x96, 0xca, 0xb1, 0xde, 0x27, 0x39, 0x37, 0x7c, 0xf2, 0x72, 0x58, 0x32, 0x40, 0x57, - 0x00, 0x05, 0x84, 0x0a, 0x78, 0xae, 0xb7, 0xa5, 0xfc, 0xc7, 0xc5, 0x46, 0xab, 0x04, 0x69, 0x1c, - 0x53, 0xc8, 0xa7, 0xa3, 0x38, 0xa3, 0x18, 0xba, 0x04, 0x53, 0x0a, 0x5a, 0xf6, 0xc2, 0xc8, 0xa1, - 0x1b, 0xdc, 0x04, 0xe3, 0xa5, 0xf4, 0x2b, 0x38, 0x49, 0x80, 0xd3, 0x65, 0xec, 0x9f, 0xb7, 0x80, - 0xf7, 0xf3, 0x11, 0x68, 0x15, 0x5e, 0x37, 0xb5, 0x0a, 0x27, 0x73, 0x47, 0x2e, 0x47, 0xa3, 0xf0, - 0xf3, 0x16, 0x8c, 0x68, 0x23, 0x1b, 0xcf, 0x59, 0xab, 0xc3, 0x9c, 0x6d, 0xc3, 0x24, 0x9d, 0xe9, - 0x57, 0x6f, 0x86, 0x24, 0xd8, 0x25, 0x75, 0x36, 0x31, 0x0b, 0xf7, 0x36, 0x31, 0x95, 0xaf, 0xea, - 0x6a, 0x82, 0x21, 0x4e, 0x55, 0x61, 0x7f, 0x5a, 0x36, 0x55, 0xb9, 0xf6, 0xd6, 0xd4, 0x98, 0x27, - 0x5c, 0x7b, 0xd5, 0xa8, 0xe2, 0x98, 0x86, 0x2e, 0xb5, 0x6d, 0x3f, 0x8c, 0x92, 0xae, 0xbd, 0x97, - 0xfd, 0x30, 0xc2, 0x0c, 0x63, 0x3f, 0x0f, 0xb0, 0x7c, 0x9b, 0xd4, 0xf8, 0x8c, 0xd5, 0x2f, 0x3d, - 0x56, 0xfe, 0xa5, 0xc7, 0xfe, 0x23, 0x0b, 0xc6, 0x57, 0x16, 0x8d, 0x93, 0x6b, 0x0e, 0x80, 0xdf, - 0xd4, 0x6e, 0xdc, 0x58, 0x97, 0xfe, 0x25, 0xdc, 0xc4, 0xae, 0xa0, 0x58, 0xa3, 0x40, 0x27, 0xa1, - 0xd8, 0x68, 0x7b, 0x42, 0xed, 0x39, 0x48, 0x8f, 0xc7, 0xd5, 0xb6, 0x87, 0x29, 0x4c, 0x7b, 0x36, - 0x56, 0xec, 0xf9, 0xd9, 0x58, 0xd7, 0xe8, 0x35, 0xa8, 0x04, 0xfd, 0xb7, 0x6e, 0xb9, 0x75, 0xfe, - 0x28, 0x5f, 0xf8, 0xbe, 0xdc, 0xb8, 0x51, 0x5e, 0x0a, 0x31, 0x87, 0xdb, 0x5f, 0x2a, 0xc2, 0xec, - 0x4a, 0x83, 0xdc, 0x7e, 0x97, 0x81, 0x09, 0x7a, 0x7d, 0xf4, 0x76, 0x38, 0x05, 0xd2, 0x61, 0x1f, - 0x36, 0x76, 0xef, 0x8f, 0x4d, 0x18, 0xe4, 0x9e, 0xad, 0x32, 0x4c, 0x41, 0xa6, 0x3d, 0x31, 0xbf, - 0x43, 0xe6, 0xb8, 0x87, 0xac, 0xb0, 0x27, 0xaa, 0x03, 0x53, 0x40, 0xb1, 0x64, 0x3e, 0xfb, 0x0a, - 0x8c, 0xea, 0x94, 0x87, 0x7a, 0x62, 0xfc, 0xfd, 0x45, 0x98, 0xa4, 0x2d, 0x78, 0xa0, 0x03, 0x71, - 0x2d, 0x3d, 0x10, 0xf7, 0xfb, 0x99, 0x69, 0xf7, 0xd1, 0x78, 0x3b, 0x39, 0x1a, 0x17, 0xf3, 0x46, - 0xe3, 0xa8, 0xc7, 0xe0, 0x07, 0x2c, 0x98, 0x5e, 0x69, 0xf8, 0xb5, 0x9d, 0xc4, 0x53, 0xd0, 0x17, - 0x61, 0x84, 0x6e, 0xc7, 0xa1, 0x11, 0x15, 0xc5, 0x88, 0x93, 0x23, 0x50, 0x58, 0xa7, 0xd3, 0x8a, - 0x5d, 0xbb, 0x56, 0x5e, 0xca, 0x0a, 0xaf, 0x23, 0x50, 0x58, 0xa7, 0xb3, 0xff, 0xc0, 0x82, 0xd3, - 0x97, 0x16, 0x97, 0xe3, 0xa9, 0x98, 0x8a, 0xf0, 0x73, 0x0e, 0x06, 0x5a, 0x75, 0xad, 0x29, 0xb1, - 0x5a, 0x78, 0x89, 0xb5, 0x42, 0x60, 0xdf, 0x2b, 0xc1, 0xb4, 0xae, 0x01, 0x5c, 0xc2, 0x95, 0x45, - 0xb1, 0xef, 0x4a, 0x2b, 0x90, 0x95, 0x6b, 0x05, 0x7a, 0x1c, 0x06, 0xe9, 0xb9, 0xe0, 0xd6, 0x64, - 0xbb, 0xb9, 0xc7, 0x00, 0x07, 0x61, 0x89, 0xb3, 0x7f, 0xce, 0x82, 0xe9, 0x4b, 0x6e, 0x44, 0x0f, - 0xed, 0x64, 0x08, 0x1b, 0x7a, 0x6a, 0x87, 0x6e, 0xe4, 0x07, 0x7b, 0xc9, 0x10, 0x36, 0x58, 0x61, - 0xb0, 0x46, 0xc5, 0x3f, 0x68, 0xd7, 0x65, 0x4f, 0x35, 0x0a, 0xa6, 0xdd, 0x0d, 0x0b, 0x38, 0x56, - 0x14, 0xb4, 0xbf, 0xea, 0x6e, 0xc0, 0x54, 0x96, 0x7b, 0x62, 0xe3, 0x56, 0xfd, 0xb5, 0x24, 0x11, - 0x38, 0xa6, 0xb1, 0xff, 0xda, 0x82, 0xd2, 0x25, 0xfe, 0xe0, 0x74, 0x33, 0xcc, 0xd9, 0x74, 0x9f, - 0x87, 0x61, 0x22, 0x0d, 0x04, 0xf2, 0xf1, 0xad, 0x14, 0x44, 0x95, 0xe5, 0x80, 0x47, 0xd2, 0x51, - 0x74, 0x3d, 0xbc, 0x57, 0x3f, 0xdc, 0x83, 0xe3, 0x15, 0x40, 0x44, 0xaf, 0x4b, 0x0f, 0x2d, 0xc4, - 0x62, 0x94, 0x2c, 0xa7, 0xb0, 0x38, 0xa3, 0x84, 0xfd, 0x13, 0x16, 0x1c, 0x57, 0x1f, 0xfc, 0x9e, - 0xfb, 0x4c, 0xfb, 0x6b, 0x05, 0x18, 0xbb, 0xbc, 0xb1, 0x51, 0xb9, 0x44, 0x22, 0x6d, 0x56, 0x76, - 0x36, 0xfb, 0x63, 0xcd, 0x7a, 0xd9, 0xe9, 0x8e, 0xd8, 0x8e, 0xdc, 0xc6, 0x1c, 0x0f, 0x98, 0x37, - 0x57, 0xf6, 0xa2, 0xab, 0x41, 0x35, 0x0a, 0x5c, 0x6f, 0x2b, 0x73, 0xa6, 0x4b, 0x99, 0xa5, 0x98, - 0x27, 0xb3, 0xa0, 0xe7, 0x61, 0x80, 0x45, 0xec, 0x93, 0x83, 0xf0, 0xb0, 0xba, 0x62, 0x31, 0xe8, - 0xc1, 0x7e, 0x69, 0xf8, 0x1a, 0x2e, 0xf3, 0x3f, 0x58, 0x90, 0xa2, 0x6b, 0x30, 0xb2, 0x1d, 0x45, - 0xad, 0xcb, 0xc4, 0xa9, 0x93, 0x40, 0xee, 0xb2, 0x67, 0xb2, 0x76, 0x59, 0xda, 0x09, 0x9c, 0x2c, - 0xde, 0x98, 0x62, 0x58, 0x88, 0x75, 0x3e, 0x76, 0x15, 0x20, 0xc6, 0xdd, 0x27, 0xc3, 0x8d, 0xbd, - 0x01, 0xc3, 0xf4, 0x73, 0xe7, 0x1b, 0xae, 0xd3, 0xd9, 0x34, 0xfe, 0x34, 0x0c, 0x4b, 0xc3, 0x77, - 0x28, 0xe2, 0x69, 0xb0, 0x13, 0x49, 0xda, 0xc5, 0x43, 0x1c, 0xe3, 0xed, 0xc7, 0x40, 0x38, 0xaf, - 0x76, 0x62, 0x69, 0x6f, 0xc2, 0x31, 0xe6, 0x85, 0xeb, 0x44, 0xdb, 0xc6, 0x1c, 0xed, 0x3e, 0x19, - 0x9e, 0x11, 0xf7, 0x3a, 0xfe, 0x65, 0x33, 0xda, 0xeb, 0xe7, 0x51, 0xc9, 0x31, 0xbe, 0xe3, 0xd9, - 0x7f, 0xd5, 0x07, 0x0f, 0x97, 0xab, 0xf9, 0x81, 0xa0, 0x5e, 0x86, 0x51, 0x2e, 0x2e, 0xd2, 0xa9, - 0xe1, 0x34, 0x44, 0xbd, 0x4a, 0x03, 0xba, 0xa1, 0xe1, 0xb0, 0x41, 0x89, 0x4e, 0x43, 0xd1, 0x7d, - 0xc7, 0x4b, 0xbe, 0x0d, 0x2c, 0xbf, 0xb9, 0x8e, 0x29, 0x9c, 0xa2, 0xa9, 0xe4, 0xc9, 0xb7, 0x74, - 0x85, 0x56, 0xd2, 0xe7, 0xeb, 0x30, 0xee, 0x86, 0xb5, 0xd0, 0x2d, 0x7b, 0x74, 0x9d, 0x6a, 0x2b, - 0x5d, 0xe9, 0x1c, 0x68, 0xa3, 0x15, 0x16, 0x27, 0xa8, 0xb5, 0xf3, 0xa5, 0xbf, 0x67, 0xe9, 0xb5, - 0x6b, 0x18, 0x0a, 0xba, 0xfd, 0xb7, 0xd8, 0xd7, 0x85, 0x4c, 0x05, 0x2f, 0xb6, 0x7f, 0xfe, 0xc1, - 0x21, 0x96, 0x38, 0x7a, 0xa1, 0xab, 0x6d, 0x3b, 0xad, 0xf9, 0x76, 0xb4, 0xbd, 0xe4, 0x86, 0x35, - 0x7f, 0x97, 0x04, 0x7b, 0xec, 0x2e, 0x3e, 0x14, 0x5f, 0xe8, 0x14, 0x62, 0xf1, 0xf2, 0x7c, 0x85, - 0x52, 0xe2, 0x74, 0x19, 0x34, 0x0f, 0x13, 0x12, 0x58, 0x25, 0x21, 0x3b, 0x02, 0x46, 0x18, 0x1b, - 0xf5, 0x5a, 0x4f, 0x80, 0x15, 0x93, 0x24, 0xbd, 0x29, 0xe0, 0xc2, 0xfd, 0x10, 0x70, 0x5f, 0x82, - 0x31, 0xd7, 0x73, 0x23, 0xd7, 0x89, 0x7c, 0x6e, 0x3f, 0xe2, 0xd7, 0x6e, 0xa6, 0x60, 0x2e, 0xeb, - 0x08, 0x6c, 0xd2, 0xd9, 0xff, 0xa1, 0x0f, 0xa6, 0xd8, 0xb0, 0xbd, 0x3f, 0xc3, 0xbe, 0x93, 0x66, - 0xd8, 0xb5, 0xf4, 0x0c, 0xbb, 0x1f, 0x92, 0xfb, 0x3d, 0x4f, 0xb3, 0xcf, 0xc0, 0xb0, 0x7a, 0xa0, - 0x28, 0x5f, 0x28, 0x5b, 0x39, 0x2f, 0x94, 0xbb, 0x9f, 0xde, 0xd2, 0x25, 0xad, 0x98, 0xe9, 0x92, - 0xf6, 0x15, 0x0b, 0x62, 0xc3, 0x02, 0x7a, 0x13, 0x86, 0x5b, 0x3e, 0x73, 0xa1, 0x0d, 0xa4, 0x5f, - 0xfa, 0x63, 0x1d, 0x2d, 0x13, 0x3c, 0x16, 0x5e, 0xc0, 0x7b, 0xa1, 0x22, 0x8b, 0xe2, 0x98, 0x0b, - 0xba, 0x02, 0x83, 0xad, 0x80, 0x54, 0x23, 0x16, 0xa8, 0xa9, 0x77, 0x86, 0x7c, 0xd6, 0xf0, 0x82, - 0x58, 0x72, 0xb0, 0x7f, 0xb1, 0x00, 0x93, 0x49, 0x52, 0xf4, 0x1a, 0xf4, 0x91, 0xdb, 0xa4, 0x26, - 0xda, 0x9b, 0x79, 0x14, 0xc7, 0xaa, 0x09, 0xde, 0x01, 0xf4, 0x3f, 0x66, 0xa5, 0xd0, 0x65, 0x18, - 0xa4, 0xe7, 0xf0, 0x25, 0x15, 0x94, 0xf0, 0x91, 0xbc, 0xb3, 0x5c, 0x09, 0x34, 0xbc, 0x71, 0x02, - 0x84, 0x65, 0x71, 0xe6, 0x07, 0x56, 0x6b, 0x55, 0xe9, 0x15, 0x27, 0xea, 0x74, 0x13, 0xdf, 0x58, - 0xac, 0x70, 0x22, 0xc1, 0x8d, 0xfb, 0x81, 0x49, 0x20, 0x8e, 0x99, 0xa0, 0x8f, 0x42, 0x7f, 0xd8, - 0x20, 0xa4, 0x25, 0x0c, 0xfd, 0x99, 0xca, 0xc5, 0x2a, 0x25, 0x10, 0x9c, 0x98, 0x32, 0x82, 0x01, - 0x30, 0x2f, 0x68, 0xff, 0x92, 0x05, 0xc0, 0x1d, 0xe7, 0x1c, 0x6f, 0x8b, 0x1c, 0x81, 0x3e, 0x7e, - 0x09, 0xfa, 0xc2, 0x16, 0xa9, 0x75, 0xf2, 0x0f, 0x8f, 0xdb, 0x53, 0x6d, 0x91, 0x5a, 0x3c, 0x67, - 0xe9, 0x3f, 0xcc, 0x4a, 0xdb, 0x3f, 0x08, 0x30, 0x1e, 0x93, 0x95, 0x23, 0xd2, 0x44, 0xcf, 0x1a, - 0x71, 0x51, 0x4e, 0x26, 0xe2, 0xa2, 0x0c, 0x33, 0x6a, 0x4d, 0xf5, 0xfb, 0x19, 0x28, 0x36, 0x9d, - 0xdb, 0x42, 0xb7, 0xf7, 0x74, 0xe7, 0x66, 0x50, 0xfe, 0x73, 0x6b, 0xce, 0x6d, 0x7e, 0xfd, 0x7d, - 0x5a, 0xae, 0xb1, 0x35, 0xe7, 0x76, 0x57, 0x1f, 0x66, 0x5a, 0x09, 0xab, 0xcb, 0xf5, 0x84, 0x4f, - 0x58, 0x4f, 0x75, 0xb9, 0x5e, 0xb2, 0x2e, 0xd7, 0xeb, 0xa1, 0x2e, 0xd7, 0x43, 0x77, 0x60, 0x50, - 0xb8, 0x6c, 0x8a, 0x10, 0x73, 0x17, 0x7a, 0xa8, 0x4f, 0x78, 0x7c, 0xf2, 0x3a, 0x2f, 0xc8, 0xeb, - 0xbd, 0x80, 0x76, 0xad, 0x57, 0x56, 0x88, 0xfe, 0x77, 0x0b, 0xc6, 0xc5, 0x6f, 0x4c, 0xde, 0x69, - 0x93, 0x30, 0x12, 0xe2, 0xef, 0x87, 0x7a, 0x6f, 0x83, 0x28, 0xc8, 0x9b, 0xf2, 0x21, 0x79, 0x52, - 0x99, 0xc8, 0xae, 0x2d, 0x4a, 0xb4, 0x02, 0xfd, 0xa2, 0x05, 0xc7, 0x9a, 0xce, 0x6d, 0x5e, 0x23, - 0x87, 0x61, 0x27, 0x72, 0x7d, 0xe1, 0xfa, 0xf0, 0x5a, 0x6f, 0xc3, 0x9f, 0x2a, 0xce, 0x1b, 0x29, - 0xed, 0x9c, 0xc7, 0xb2, 0x48, 0xba, 0x36, 0x35, 0xb3, 0x5d, 0xb3, 0x9b, 0x30, 0x24, 0xe7, 0xdb, - 0x83, 0xf4, 0x0f, 0x67, 0xf5, 0x88, 0xb9, 0xf6, 0x40, 0xeb, 0xf9, 0x0c, 0x8c, 0xea, 0x73, 0xec, - 0x81, 0xd6, 0xf5, 0x0e, 0x4c, 0x67, 0xcc, 0xa5, 0x07, 0x5a, 0xe5, 0x2d, 0x38, 0x99, 0x3b, 0x3f, - 0x1e, 0xa8, 0x7f, 0xff, 0xd7, 0x2c, 0x7d, 0x1f, 0x3c, 0x02, 0xa3, 0xc8, 0xa2, 0x69, 0x14, 0x39, - 0xd3, 0x79, 0xe5, 0xe4, 0x58, 0x46, 0xde, 0xd6, 0x1b, 0x4d, 0x77, 0x75, 0xf4, 0x06, 0x0c, 0x34, - 0x28, 0x44, 0x3a, 0xfe, 0xda, 0xdd, 0x57, 0x64, 0x2c, 0x8e, 0x32, 0x78, 0x88, 0x05, 0x07, 0xfb, - 0x57, 0x2d, 0xe8, 0x3b, 0x82, 0x9e, 0xc0, 0x66, 0x4f, 0x3c, 0x9b, 0xcb, 0x5a, 0x04, 0xff, 0x9f, - 0xc3, 0xce, 0xad, 0xe5, 0xdb, 0x11, 0xf1, 0x42, 0x76, 0xa6, 0x67, 0x76, 0xcc, 0xbe, 0x05, 0xd3, - 0xab, 0xbe, 0x53, 0x5f, 0x70, 0x1a, 0x8e, 0x57, 0x23, 0x41, 0xd9, 0xdb, 0x3a, 0x94, 0xd7, 0x7a, - 0xa1, 0xab, 0xd7, 0xfa, 0xcb, 0x30, 0xe0, 0xb6, 0xb4, 0xe8, 0xe1, 0x67, 0x69, 0x07, 0x96, 0x2b, - 0x22, 0x70, 0x38, 0x32, 0x2a, 0x67, 0x50, 0x2c, 0xe8, 0xe9, 0xc8, 0x73, 0x77, 0xb1, 0xbe, 0xfc, - 0x91, 0xa7, 0x52, 0x7c, 0x32, 0xc6, 0x94, 0xe1, 0xd8, 0xbc, 0x0d, 0x46, 0x15, 0xe2, 0x59, 0x19, - 0x86, 0x41, 0x97, 0x7f, 0xa9, 0x18, 0xfe, 0x27, 0xb2, 0xa5, 0xeb, 0x54, 0xc7, 0x68, 0x0f, 0xa6, - 0x38, 0x00, 0x4b, 0x46, 0xf6, 0xcb, 0x90, 0x19, 0x13, 0xa4, 0xbb, 0xe6, 0xc4, 0xfe, 0x38, 0x4c, - 0xb1, 0x92, 0x87, 0xd4, 0x4a, 0xd8, 0x09, 0x7d, 0x6f, 0x46, 0x20, 0x58, 0xfb, 0xdf, 0x5a, 0x80, - 0xd6, 0xfc, 0xba, 0xbb, 0xb9, 0x27, 0x98, 0xf3, 0xef, 0x7f, 0x07, 0x4a, 0xfc, 0xda, 0x97, 0x0c, - 0x96, 0xba, 0xd8, 0x70, 0xc2, 0x50, 0xd3, 0x35, 0x3f, 0x21, 0xea, 0x2d, 0x6d, 0x74, 0x26, 0xc7, - 0xdd, 0xf8, 0xa1, 0x37, 0x13, 0x91, 0xe0, 0x3e, 0x9c, 0x8a, 0x04, 0xf7, 0x44, 0xa6, 0xc7, 0x47, - 0xba, 0xf5, 0x32, 0x42, 0x9c, 0xfd, 0x05, 0x0b, 0x26, 0xd6, 0x13, 0xc1, 0x3f, 0xcf, 0x31, 0xf3, - 0x77, 0x86, 0x0d, 0xa5, 0xca, 0xa0, 0x58, 0x60, 0xef, 0xbb, 0x8e, 0xf1, 0x1f, 0x2c, 0x88, 0x63, - 0x10, 0x1d, 0x81, 0x54, 0xbb, 0x68, 0x48, 0xb5, 0x99, 0x37, 0x04, 0xd5, 0x9c, 0x3c, 0xa1, 0x16, - 0x5d, 0x51, 0x63, 0xd2, 0xe1, 0x72, 0x10, 0xb3, 0xe1, 0xeb, 0x6c, 0xdc, 0x1c, 0x38, 0x35, 0x1a, - 0x7f, 0x52, 0x00, 0xa4, 0x68, 0x7b, 0x8e, 0x1e, 0x98, 0x2e, 0x71, 0x7f, 0xa2, 0x07, 0xee, 0x02, - 0x62, 0x0e, 0x1c, 0x81, 0xe3, 0x85, 0x9c, 0xad, 0x2b, 0xb4, 0xaa, 0x87, 0xf3, 0x0e, 0x99, 0x95, - 0xcf, 0x09, 0x57, 0x53, 0xdc, 0x70, 0x46, 0x0d, 0x9a, 0x63, 0x4e, 0x7f, 0xaf, 0x8e, 0x39, 0x03, - 0x5d, 0xde, 0xc5, 0x7e, 0xd5, 0x82, 0x31, 0xd5, 0x4d, 0xef, 0x91, 0xc7, 0x0d, 0xaa, 0x3d, 0x39, - 0xe7, 0x4a, 0x45, 0x6b, 0x32, 0x3b, 0x6f, 0xbf, 0x8b, 0xbd, 0x6f, 0x76, 0x1a, 0xee, 0x1d, 0xa2, - 0xc2, 0xf2, 0x96, 0xc4, 0x7b, 0x65, 0x01, 0x3d, 0xd8, 0x2f, 0x8d, 0xa9, 0x7f, 0x3c, 0xac, 0x66, - 0x5c, 0xc4, 0xfe, 0x69, 0xba, 0xd8, 0xcd, 0xa9, 0x88, 0x5e, 0x84, 0xfe, 0xd6, 0xb6, 0x13, 0x92, - 0xc4, 0x23, 0xb0, 0xfe, 0x0a, 0x05, 0x1e, 0xec, 0x97, 0xc6, 0x55, 0x01, 0x06, 0xc1, 0x9c, 0xba, - 0xf7, 0x98, 0x8c, 0xe9, 0xc9, 0xd9, 0x35, 0x26, 0xe3, 0xdf, 0x5a, 0xd0, 0xb7, 0x4e, 0x4f, 0xaf, - 0x07, 0xbf, 0x05, 0xbc, 0x6e, 0x6c, 0x01, 0xa7, 0xf2, 0x12, 0xd4, 0xe4, 0xae, 0xfe, 0x95, 0xc4, - 0xea, 0x3f, 0x93, 0xcb, 0xa1, 0xf3, 0xc2, 0x6f, 0xc2, 0x08, 0x4b, 0x7b, 0x23, 0x1e, 0xbc, 0x3d, - 0x6f, 0x2c, 0xf8, 0x52, 0x62, 0xc1, 0x4f, 0x68, 0xa4, 0xda, 0x4a, 0x7f, 0x12, 0x06, 0xc5, 0x0b, - 0xaa, 0xe4, 0x33, 0x71, 0x41, 0x8b, 0x25, 0xde, 0xfe, 0xc9, 0x22, 0x18, 0x69, 0x76, 0xd0, 0x6f, - 0x58, 0x30, 0x17, 0x70, 0xcf, 0xea, 0xfa, 0x52, 0x3b, 0x70, 0xbd, 0xad, 0x6a, 0x6d, 0x9b, 0xd4, - 0xdb, 0x0d, 0xd7, 0xdb, 0x2a, 0x6f, 0x79, 0xbe, 0x02, 0x2f, 0xdf, 0x26, 0xb5, 0x36, 0xb3, 0x7a, - 0x76, 0xc9, 0xe9, 0xa3, 0x5e, 0x28, 0x3c, 0x77, 0x77, 0xbf, 0x34, 0x87, 0x0f, 0xc5, 0x1b, 0x1f, - 0xb2, 0x2d, 0xe8, 0x0f, 0x2c, 0xb8, 0xc0, 0xd3, 0xbd, 0xf4, 0xde, 0xfe, 0x0e, 0x4a, 0x84, 0x8a, - 0x64, 0x15, 0x33, 0xd9, 0x20, 0x41, 0x73, 0xe1, 0x25, 0xd1, 0xa1, 0x17, 0x2a, 0x87, 0xab, 0x0b, - 0x1f, 0xb6, 0x71, 0xf6, 0x3f, 0x2d, 0xc2, 0x98, 0x88, 0xdd, 0x27, 0xce, 0x80, 0x17, 0x8d, 0x29, - 0xf1, 0x48, 0x62, 0x4a, 0x4c, 0x19, 0xc4, 0xf7, 0x67, 0xfb, 0x0f, 0x61, 0x8a, 0x6e, 0xce, 0x97, - 0x89, 0x13, 0x44, 0x37, 0x89, 0xc3, 0xfd, 0xed, 0x8a, 0x87, 0xde, 0xfd, 0x95, 0xe2, 0x77, 0x35, - 0xc9, 0x0c, 0xa7, 0xf9, 0x7f, 0x27, 0x9d, 0x39, 0x1e, 0x4c, 0xa6, 0xc2, 0x2f, 0xbe, 0x05, 0xc3, - 0xea, 0xf9, 0x8f, 0xd8, 0x74, 0x3a, 0x47, 0x31, 0x4d, 0x72, 0xe0, 0x7a, 0xc5, 0xf8, 0xe9, 0x59, - 0xcc, 0xce, 0xfe, 0x47, 0x05, 0xa3, 0x42, 0x3e, 0x88, 0xeb, 0x30, 0xe4, 0x84, 0x2c, 0xb2, 0x72, - 0xbd, 0x93, 0xea, 0x37, 0x55, 0x0d, 0x7b, 0x82, 0x35, 0x2f, 0x4a, 0x62, 0xc5, 0x03, 0x5d, 0xe6, - 0x5e, 0x8d, 0xbb, 0xa4, 0x93, 0xde, 0x37, 0xc5, 0x0d, 0xa4, 0xdf, 0xe3, 0x2e, 0xc1, 0xa2, 0x3c, - 0xfa, 0x24, 0x77, 0x3b, 0xbd, 0xe2, 0xf9, 0xb7, 0xbc, 0x4b, 0xbe, 0x2f, 0xe3, 0xb4, 0xf4, 0xc6, - 0x70, 0x4a, 0x3a, 0x9b, 0xaa, 0xe2, 0xd8, 0xe4, 0xd6, 0x5b, 0x3c, 0xe3, 0xcf, 0x02, 0x4b, 0x6f, - 0x61, 0xbe, 0xb6, 0x0f, 0x11, 0x81, 0x09, 0x11, 0x18, 0x52, 0xc2, 0x44, 0xdf, 0x65, 0xde, 0x70, - 0xcd, 0xd2, 0xb1, 0x85, 0xe2, 0x8a, 0xc9, 0x02, 0x27, 0x79, 0xda, 0x3f, 0x6b, 0x01, 0x7b, 0x79, - 0x7c, 0x04, 0xf2, 0xc8, 0x47, 0x4c, 0x79, 0x64, 0x26, 0xaf, 0x93, 0x73, 0x44, 0x91, 0x17, 0xf8, - 0xcc, 0xaa, 0x04, 0xfe, 0xed, 0x3d, 0xe1, 0x2b, 0xd4, 0xfd, 0x72, 0x65, 0x7f, 0xc9, 0x02, 0x96, - 0xa1, 0x05, 0xf3, 0xbb, 0xb4, 0xd4, 0xec, 0x77, 0x37, 0x83, 0x7f, 0x0c, 0x86, 0x36, 0x89, 0x13, - 0xb5, 0x03, 0x11, 0x67, 0xca, 0xec, 0x0b, 0xa3, 0xc1, 0x26, 0xef, 0x15, 0x51, 0x4a, 0xbc, 0x20, - 0x14, 0xff, 0xb0, 0xe2, 0x66, 0x87, 0x30, 0x9b, 0x5f, 0x0a, 0x5d, 0x83, 0x87, 0x02, 0x52, 0x6b, - 0x07, 0x21, 0x9d, 0xa7, 0xe2, 0x56, 0x22, 0xde, 0xe0, 0x58, 0xec, 0xf6, 0xf2, 0xf0, 0xdd, 0xfd, - 0xd2, 0x43, 0x38, 0x9b, 0x04, 0xe7, 0x95, 0xb5, 0xbf, 0x87, 0x1f, 0xb6, 0x2a, 0x34, 0x6e, 0x13, - 0xa6, 0x3c, 0xed, 0x3f, 0x3d, 0x5a, 0xe4, 0x1d, 0xfa, 0xb1, 0x6e, 0xc7, 0x29, 0x3b, 0x87, 0xb4, - 0xe7, 0xcd, 0x09, 0x36, 0x38, 0xcd, 0xd9, 0xfe, 0x29, 0x0b, 0x1e, 0xd2, 0x09, 0xb5, 0x17, 0x54, - 0xdd, 0xec, 0x50, 0x4b, 0x30, 0xe4, 0xb7, 0x48, 0xe0, 0x44, 0x7e, 0x20, 0xce, 0x8f, 0xf3, 0x72, - 0x92, 0x5d, 0x15, 0xf0, 0x03, 0x91, 0x5c, 0x44, 0x72, 0x97, 0x70, 0xac, 0x4a, 0xd2, 0x4b, 0x36, - 0x53, 0x7e, 0x85, 0xe2, 0xad, 0x1c, 0xdb, 0x0d, 0x98, 0x4b, 0x43, 0x88, 0x05, 0xc6, 0xfe, 0x2b, - 0x8b, 0x4f, 0x31, 0xbd, 0xe9, 0xe8, 0x1d, 0x98, 0x6c, 0x3a, 0x51, 0x6d, 0x7b, 0xf9, 0x76, 0x2b, - 0xe0, 0x56, 0x3d, 0xd9, 0x4f, 0x4f, 0x77, 0xeb, 0x27, 0xed, 0x23, 0x63, 0x9f, 0xda, 0xb5, 0x04, - 0x33, 0x9c, 0x62, 0x8f, 0x6e, 0xc2, 0x08, 0x83, 0xb1, 0x67, 0xa0, 0x61, 0x27, 0x21, 0x21, 0xaf, - 0x36, 0xe5, 0x15, 0xb2, 0x16, 0xf3, 0xc1, 0x3a, 0x53, 0xfb, 0x2b, 0x45, 0xbe, 0xee, 0x99, 0x50, - 0xff, 0x24, 0x0c, 0xb6, 0xfc, 0xfa, 0x62, 0x79, 0x09, 0x8b, 0x51, 0x50, 0x07, 0x4a, 0x85, 0x83, - 0xb1, 0xc4, 0xa3, 0xf3, 0x30, 0x24, 0x7e, 0x4a, 0x2b, 0x2c, 0x9b, 0xe6, 0x82, 0x2e, 0xc4, 0x0a, - 0x8b, 0x9e, 0x03, 0x68, 0x05, 0xfe, 0xae, 0x5b, 0x67, 0x71, 0x67, 0x8a, 0xa6, 0x43, 0x57, 0x45, - 0x61, 0xb0, 0x46, 0x85, 0x5e, 0x85, 0xb1, 0xb6, 0x17, 0x72, 0xc1, 0x44, 0x8b, 0xee, 0xad, 0x5c, - 0x8d, 0xae, 0xe9, 0x48, 0x6c, 0xd2, 0xa2, 0x79, 0x18, 0x88, 0x1c, 0xe6, 0xa0, 0xd4, 0x9f, 0xef, - 0x77, 0xbd, 0x41, 0x29, 0xf4, 0xcc, 0x5f, 0xb4, 0x00, 0x16, 0x05, 0xd1, 0x5b, 0xf2, 0x45, 0x36, - 0xdf, 0xe2, 0xc5, 0x83, 0x87, 0xde, 0x8e, 0x03, 0xed, 0x3d, 0xb6, 0x78, 0x48, 0x61, 0xf0, 0x42, - 0xaf, 0x00, 0x90, 0xdb, 0x11, 0x09, 0x3c, 0xa7, 0xa1, 0xdc, 0x0a, 0x95, 0x84, 0xb0, 0xe4, 0xaf, - 0xfb, 0xd1, 0xb5, 0x90, 0x2c, 0x2b, 0x0a, 0xac, 0x51, 0xdb, 0xbf, 0x06, 0x00, 0xb1, 0x04, 0x8f, - 0xee, 0xc0, 0x50, 0xcd, 0x69, 0x39, 0x35, 0x9e, 0xd6, 0xb2, 0x98, 0xf7, 0x50, 0x36, 0x2e, 0x31, - 0xb7, 0x28, 0xc8, 0xb9, 0xe1, 0x41, 0x06, 0x48, 0x1e, 0x92, 0xe0, 0xae, 0xc6, 0x06, 0x55, 0x1f, - 0xfa, 0xbc, 0x05, 0x23, 0x22, 0xbc, 0x0e, 0x1b, 0xa1, 0x42, 0xbe, 0xad, 0x48, 0xab, 0x7f, 0x3e, - 0x2e, 0xc1, 0x9b, 0xf0, 0xbc, 0x9c, 0xa1, 0x1a, 0xa6, 0x6b, 0x2b, 0xf4, 0x8a, 0xd1, 0x07, 0xe5, - 0xa5, 0xb1, 0x68, 0x74, 0xa5, 0xba, 0x34, 0x0e, 0xb3, 0xd3, 0x42, 0xbf, 0x2f, 0x5e, 0x33, 0xee, - 0x8b, 0x7d, 0xf9, 0x4f, 0x4e, 0x0d, 0x41, 0xb6, 0xdb, 0x55, 0x11, 0x55, 0xf4, 0xf0, 0x13, 0xfd, - 0xf9, 0xef, 0x24, 0xb5, 0x1b, 0x53, 0x97, 0xd0, 0x13, 0x9f, 0x81, 0x89, 0xba, 0x29, 0x0e, 0x88, - 0x99, 0xf8, 0x44, 0x1e, 0xdf, 0x84, 0xf4, 0x10, 0x0b, 0x00, 0x09, 0x04, 0x4e, 0x32, 0x46, 0x15, - 0x1e, 0x8d, 0xa4, 0xec, 0x6d, 0xfa, 0xe2, 0xd1, 0x8d, 0x9d, 0x3b, 0x96, 0x7b, 0x61, 0x44, 0x9a, - 0x94, 0x32, 0x3e, 0xe7, 0xd7, 0x45, 0x59, 0xac, 0xb8, 0xa0, 0x37, 0x60, 0x80, 0x3d, 0x94, 0x0b, - 0x67, 0x86, 0xf2, 0x55, 0xf2, 0x66, 0xdc, 0xc7, 0x78, 0x41, 0xb2, 0xbf, 0x21, 0x16, 0x1c, 0xd0, - 0x65, 0xf9, 0x0c, 0x35, 0x2c, 0x7b, 0xd7, 0x42, 0xc2, 0x9e, 0xa1, 0x0e, 0x2f, 0x3c, 0x16, 0xbf, - 0x30, 0xe5, 0xf0, 0xcc, 0xfc, 0xa0, 0x46, 0x49, 0x2a, 0x4f, 0x89, 0xff, 0x32, 0xed, 0xa8, 0x88, - 0x52, 0x95, 0xd9, 0x3c, 0x33, 0x35, 0x69, 0xdc, 0x9d, 0xd7, 0x4d, 0x16, 0x38, 0xc9, 0x93, 0xca, - 0xa6, 0x7c, 0xd5, 0x8b, 0x67, 0x3b, 0xdd, 0xf6, 0x0e, 0x7e, 0x25, 0x67, 0xa7, 0x11, 0x87, 0x60, - 0x51, 0x1e, 0xb9, 0x30, 0x11, 0x18, 0x22, 0x82, 0x0c, 0x2e, 0x75, 0xae, 0x37, 0x39, 0x44, 0x0b, - 0x5b, 0x6e, 0xb2, 0xc1, 0x49, 0xbe, 0xb3, 0x3b, 0x30, 0x66, 0x6c, 0x10, 0x0f, 0xd4, 0xe4, 0xe5, - 0xc1, 0x64, 0x72, 0x37, 0x78, 0xa0, 0x96, 0xae, 0xbf, 0xe8, 0x83, 0x71, 0x73, 0xf6, 0xa2, 0x0b, - 0x30, 0x2c, 0x98, 0xa8, 0x2c, 0x41, 0x6a, 0x41, 0xae, 0x49, 0x04, 0x8e, 0x69, 0x58, 0x72, 0x28, - 0x56, 0x5c, 0x73, 0x09, 0x8f, 0x93, 0x43, 0x29, 0x0c, 0xd6, 0xa8, 0xe8, 0x6d, 0xee, 0xa6, 0xef, - 0x47, 0xea, 0xec, 0x53, 0x53, 0x7c, 0x81, 0x41, 0xb1, 0xc0, 0xd2, 0x33, 0x6f, 0x87, 0x04, 0x1e, - 0x69, 0x98, 0x41, 0xe7, 0xd5, 0x99, 0x77, 0x45, 0x47, 0x62, 0x93, 0x96, 0x9e, 0xdc, 0x7e, 0xc8, - 0xd6, 0x8c, 0xb8, 0x33, 0xc6, 0x2e, 0xf6, 0x55, 0x1e, 0x2c, 0x40, 0xe2, 0xd1, 0xc7, 0xe1, 0x21, - 0x15, 0xe0, 0x4d, 0xcc, 0x08, 0x59, 0xe3, 0x80, 0xa1, 0xe2, 0x79, 0x68, 0x31, 0x9b, 0x0c, 0xe7, - 0x95, 0x47, 0xaf, 0xc3, 0xb8, 0xb8, 0x57, 0x48, 0x8e, 0x83, 0xa6, 0xbf, 0xd8, 0x15, 0x03, 0x8b, - 0x13, 0xd4, 0x32, 0x6c, 0x3e, 0x13, 0xed, 0x25, 0x87, 0xa1, 0x74, 0xd8, 0x7c, 0x1d, 0x8f, 0x53, - 0x25, 0xd0, 0x3c, 0x4c, 0x70, 0x71, 0xcf, 0xf5, 0xb6, 0xf8, 0x98, 0x88, 0x07, 0x7c, 0x6a, 0x21, - 0x5c, 0x35, 0xd1, 0x38, 0x49, 0x8f, 0x5e, 0x86, 0x51, 0x27, 0xa8, 0x6d, 0xbb, 0x11, 0xa9, 0x51, - 0x69, 0x9c, 0xb9, 0x6c, 0x69, 0x0e, 0x77, 0xf3, 0x1a, 0x0e, 0x1b, 0x94, 0xf6, 0x1d, 0x98, 0xce, - 0x88, 0x22, 0x42, 0x27, 0x8e, 0xd3, 0x72, 0xe5, 0x37, 0x25, 0xbc, 0xda, 0xe7, 0x2b, 0x65, 0xf9, - 0x35, 0x1a, 0x15, 0x9d, 0x9d, 0x2c, 0xda, 0x88, 0x96, 0xd0, 0x58, 0xcd, 0xce, 0x15, 0x89, 0xc0, - 0x31, 0x8d, 0xfd, 0x77, 0x05, 0x98, 0xc8, 0xb0, 0x56, 0xb1, 0xa4, 0xba, 0x89, 0x0b, 0x4e, 0x9c, - 0x43, 0xd7, 0xcc, 0xc2, 0x50, 0x38, 0x44, 0x16, 0x86, 0x62, 0xb7, 0x2c, 0x0c, 0x7d, 0xef, 0x26, - 0x0b, 0x83, 0xd9, 0x63, 0xfd, 0x3d, 0xf5, 0x58, 0x46, 0xe6, 0x86, 0x81, 0x43, 0x66, 0x6e, 0x30, - 0x3a, 0x7d, 0xb0, 0x87, 0x4e, 0xff, 0xb1, 0x02, 0x4c, 0x26, 0x0d, 0x5d, 0x47, 0xa0, 0x2c, 0x7e, - 0xc3, 0x50, 0x16, 0x9f, 0xef, 0xe5, 0xc1, 0x75, 0xae, 0xe2, 0x18, 0x27, 0x14, 0xc7, 0x4f, 0xf5, - 0xc4, 0xad, 0xb3, 0x12, 0xf9, 0xff, 0x2e, 0xc0, 0xf1, 0x4c, 0xfb, 0xdf, 0x11, 0xf4, 0xcd, 0x55, - 0xa3, 0x6f, 0x9e, 0xed, 0xf9, 0x31, 0x7a, 0x6e, 0x07, 0xdd, 0x48, 0x74, 0xd0, 0x85, 0xde, 0x59, - 0x76, 0xee, 0xa5, 0x6f, 0x14, 0xe1, 0x4c, 0x66, 0xb9, 0x58, 0xd7, 0xba, 0x62, 0xe8, 0x5a, 0x9f, - 0x4b, 0xe8, 0x5a, 0xed, 0xce, 0xa5, 0xef, 0x8f, 0xf2, 0x55, 0x3c, 0xca, 0x66, 0xa1, 0x25, 0xee, - 0x51, 0xf1, 0x6a, 0x3c, 0xca, 0x56, 0x8c, 0xb0, 0xc9, 0xf7, 0x3b, 0x49, 0xe1, 0xfa, 0xfb, 0x16, - 0x9c, 0xcc, 0x1c, 0x9b, 0x23, 0x50, 0xb0, 0xad, 0x9b, 0x0a, 0xb6, 0x27, 0x7b, 0x9e, 0xad, 0x39, - 0x1a, 0xb7, 0x2f, 0x0c, 0xe4, 0x7c, 0x0b, 0x53, 0x1a, 0x5c, 0x85, 0x11, 0xa7, 0x56, 0x23, 0x61, - 0xb8, 0xe6, 0xd7, 0x55, 0xc0, 0xf6, 0x67, 0xd9, 0x95, 0x2e, 0x06, 0x1f, 0xec, 0x97, 0x66, 0x93, - 0x2c, 0x62, 0x34, 0xd6, 0x39, 0xa0, 0x4f, 0xc2, 0x50, 0x28, 0x73, 0xed, 0xf5, 0xdd, 0x7b, 0xae, - 0x3d, 0xa6, 0x8f, 0x50, 0x4a, 0x11, 0xc5, 0x12, 0x7d, 0xb7, 0x1e, 0xe4, 0xa7, 0x83, 0x46, 0x8f, - 0x37, 0xf2, 0x1e, 0x42, 0xfd, 0x3c, 0x07, 0xb0, 0xab, 0x6e, 0x1f, 0x49, 0x85, 0x87, 0x76, 0x2f, - 0xd1, 0xa8, 0xd0, 0x47, 0x61, 0x32, 0xe4, 0xf1, 0x2d, 0x63, 0x8f, 0x0d, 0x3e, 0x17, 0x59, 0x88, - 0xb0, 0x6a, 0x02, 0x87, 0x53, 0xd4, 0x68, 0x45, 0xd6, 0xca, 0x7c, 0x73, 0xf8, 0xf4, 0x3c, 0x17, - 0xd7, 0x28, 0xfc, 0x73, 0x8e, 0x25, 0x07, 0x81, 0x75, 0xbf, 0x56, 0x12, 0x7d, 0x12, 0x80, 0x4e, - 0x22, 0xa1, 0xf8, 0x18, 0xcc, 0xdf, 0x42, 0xe9, 0xde, 0x52, 0xcf, 0x74, 0x58, 0x67, 0xaf, 0xa9, - 0x97, 0x14, 0x13, 0xac, 0x31, 0x44, 0x0e, 0x8c, 0xc5, 0xff, 0xe2, 0xbc, 0xd7, 0xe7, 0x73, 0x6b, - 0x48, 0x32, 0x67, 0xda, 0xf6, 0x25, 0x9d, 0x05, 0x36, 0x39, 0xa2, 0x4f, 0xc0, 0xc9, 0xdd, 0x5c, - 0x37, 0x98, 0xe1, 0x38, 0x95, 0x65, 0xbe, 0xf3, 0x4b, 0x7e, 0x79, 0xfb, 0x5f, 0x02, 0x3c, 0xdc, - 0x61, 0xa7, 0x47, 0xf3, 0xa6, 0x09, 0xfb, 0xe9, 0xa4, 0x36, 0x62, 0x36, 0xb3, 0xb0, 0xa1, 0x9e, - 0x48, 0x2c, 0xa8, 0xc2, 0xbb, 0x5e, 0x50, 0x3f, 0x62, 0x69, 0x7a, 0x22, 0xee, 0x43, 0xfc, 0x91, - 0x43, 0x9e, 0x60, 0xf7, 0x51, 0x71, 0xb4, 0x99, 0xa1, 0x7d, 0x79, 0xae, 0xe7, 0xe6, 0xf4, 0xae, - 0x8e, 0xf9, 0x5a, 0x76, 0x48, 0x6a, 0xae, 0x98, 0xb9, 0x74, 0xd8, 0xef, 0x3f, 0xaa, 0xf0, 0xd4, - 0x7f, 0x62, 0xc1, 0xc9, 0x14, 0x98, 0xb7, 0x81, 0x84, 0x22, 0xa8, 0xd9, 0xfa, 0xbb, 0x6e, 0xbc, - 0x64, 0xc8, 0xbf, 0xe1, 0xb2, 0xf8, 0x86, 0x93, 0xb9, 0x74, 0xc9, 0xa6, 0x7f, 0xf1, 0xcf, 0x4b, - 0xd3, 0xac, 0x02, 0x93, 0x10, 0xe7, 0x37, 0x1d, 0xb5, 0xe0, 0x6c, 0xad, 0x1d, 0x04, 0xf1, 0x64, - 0xcd, 0x58, 0x9c, 0xfc, 0xae, 0xf7, 0xd8, 0xdd, 0xfd, 0xd2, 0xd9, 0xc5, 0x2e, 0xb4, 0xb8, 0x2b, - 0x37, 0xe4, 0x01, 0x6a, 0xa6, 0x9c, 0xcd, 0x44, 0xba, 0xfb, 0x4c, 0xdd, 0x49, 0xda, 0x35, 0x8d, - 0xbf, 0x9a, 0xcd, 0x70, 0x59, 0xcb, 0xe0, 0x7c, 0xb4, 0xda, 0x93, 0x6f, 0x4d, 0x38, 0xf0, 0xd9, - 0x55, 0x38, 0xd3, 0x79, 0x32, 0x1d, 0xea, 0xc5, 0xfe, 0x1f, 0x59, 0x70, 0xba, 0x63, 0x58, 0xa8, - 0x6f, 0xc3, 0xcb, 0x82, 0xfd, 0x39, 0x0b, 0x1e, 0xc9, 0x2c, 0x61, 0xf8, 0x35, 0x5e, 0x80, 0xe1, - 0x5a, 0x22, 0x59, 0x73, 0x1c, 0x20, 0x45, 0x25, 0x6a, 0x8e, 0x69, 0x0c, 0xf7, 0xc5, 0x42, 0x57, - 0xf7, 0xc5, 0xdf, 0xb6, 0x20, 0x75, 0xd4, 0x1f, 0x81, 0xe4, 0x59, 0x36, 0x25, 0xcf, 0xc7, 0x7a, - 0xe9, 0xcd, 0x1c, 0xa1, 0xf3, 0x6f, 0x26, 0xe0, 0x44, 0xce, 0x83, 0xdb, 0x5d, 0x98, 0xda, 0xaa, - 0x11, 0x33, 0xc2, 0x42, 0xa7, 0xc8, 0x63, 0x1d, 0xc3, 0x31, 0xf0, 0x1c, 0xd9, 0x29, 0x12, 0x9c, - 0xae, 0x02, 0x7d, 0xce, 0x82, 0x63, 0xce, 0xad, 0x70, 0x99, 0xde, 0x20, 0xdc, 0xda, 0x42, 0xc3, - 0xaf, 0xed, 0x50, 0xc1, 0x4c, 0x2e, 0xab, 0x17, 0x32, 0x15, 0xc8, 0x37, 0xaa, 0x29, 0x7a, 0xa3, - 0xfa, 0x99, 0xbb, 0xfb, 0xa5, 0x63, 0x59, 0x54, 0x38, 0xb3, 0x2e, 0x84, 0x45, 0x4e, 0x22, 0x27, - 0xda, 0xee, 0x14, 0x03, 0x24, 0xeb, 0x65, 0x34, 0x17, 0x89, 0x25, 0x06, 0x2b, 0x3e, 0xe8, 0xd3, - 0x30, 0xbc, 0x25, 0x9f, 0xfb, 0x67, 0x88, 0xdc, 0x71, 0x47, 0x76, 0x0e, 0x82, 0xc0, 0xfd, 0x41, - 0x14, 0x11, 0x8e, 0x99, 0xa2, 0xd7, 0xa1, 0xe8, 0x6d, 0x86, 0x22, 0x12, 0x59, 0xb6, 0x5b, 0xaa, - 0xe9, 0xf8, 0xcb, 0x23, 0xed, 0xac, 0xaf, 0x54, 0x31, 0x2d, 0x88, 0x2e, 0x43, 0x31, 0xb8, 0x59, - 0x17, 0xd6, 0x8f, 0xcc, 0x45, 0x8a, 0x17, 0x96, 0x72, 0x5a, 0xc5, 0x38, 0xe1, 0x85, 0x25, 0x4c, - 0x59, 0xa0, 0x0a, 0xf4, 0xb3, 0x57, 0xaa, 0x42, 0xb4, 0xcd, 0xbc, 0xca, 0x77, 0x78, 0xed, 0xcd, - 0x5f, 0xc0, 0x31, 0x02, 0xcc, 0x19, 0xa1, 0x0d, 0x18, 0xa8, 0xb1, 0x04, 0xf4, 0x42, 0x96, 0xfd, - 0x60, 0xa6, 0x9d, 0xa3, 0x43, 0x66, 0x7e, 0xa1, 0xf6, 0x67, 0x14, 0x58, 0xf0, 0x62, 0x5c, 0x49, - 0x6b, 0x7b, 0x53, 0x9e, 0x58, 0xd9, 0x5c, 0x49, 0x6b, 0x7b, 0xa5, 0xda, 0x91, 0x2b, 0xa3, 0xc0, - 0x82, 0x17, 0x7a, 0x05, 0x0a, 0x9b, 0x35, 0xf1, 0x02, 0x35, 0xd3, 0xe0, 0x61, 0x06, 0x4b, 0x5a, - 0x18, 0xb8, 0xbb, 0x5f, 0x2a, 0xac, 0x2c, 0xe2, 0xc2, 0x66, 0x0d, 0xad, 0xc3, 0xe0, 0x26, 0x0f, - 0xaf, 0x22, 0x6c, 0x1a, 0x4f, 0x64, 0x47, 0x7e, 0x49, 0x45, 0x60, 0xe1, 0xaf, 0x19, 0x05, 0x02, - 0x4b, 0x26, 0x2c, 0x45, 0x8e, 0x0a, 0x13, 0x23, 0xa2, 0x54, 0xce, 0x1d, 0x2e, 0xb4, 0x0f, 0xbf, - 0x6a, 0xc4, 0xc1, 0x66, 0xb0, 0xc6, 0x91, 0xce, 0x6a, 0xe7, 0x4e, 0x3b, 0x60, 0x29, 0x0c, 0x44, - 0x38, 0xb3, 0xcc, 0x59, 0x3d, 0x2f, 0x89, 0x3a, 0xcd, 0x6a, 0x45, 0x84, 0x63, 0xa6, 0x68, 0x07, - 0xc6, 0x76, 0xc3, 0xd6, 0x36, 0x91, 0x4b, 0x9a, 0x45, 0x37, 0xcb, 0x91, 0x66, 0xaf, 0x0b, 0x42, - 0x37, 0x88, 0xda, 0x4e, 0x23, 0xb5, 0x0b, 0xb1, 0x6b, 0xcd, 0x75, 0x9d, 0x19, 0x36, 0x79, 0xd3, - 0xee, 0x7f, 0xa7, 0xed, 0xdf, 0xdc, 0x8b, 0x88, 0x08, 0x2e, 0x99, 0xd9, 0xfd, 0x6f, 0x72, 0x92, - 0x74, 0xf7, 0x0b, 0x04, 0x96, 0x4c, 0xd0, 0x75, 0xd1, 0x3d, 0x6c, 0xf7, 0x9c, 0xcc, 0x8f, 0x5c, - 0x3d, 0x2f, 0x89, 0x72, 0x3a, 0x85, 0xed, 0x96, 0x31, 0x2b, 0xb6, 0x4b, 0xb6, 0xb6, 0xfd, 0xc8, - 0xf7, 0x12, 0x3b, 0xf4, 0x54, 0xfe, 0x2e, 0x59, 0xc9, 0xa0, 0x4f, 0xef, 0x92, 0x59, 0x54, 0x38, - 0xb3, 0x2e, 0x54, 0x87, 0xf1, 0x96, 0x1f, 0x44, 0xb7, 0xfc, 0x40, 0xce, 0x2f, 0xd4, 0x41, 0x51, - 0x6a, 0x50, 0x8a, 0x1a, 0x59, 0xdc, 0x56, 0x13, 0x83, 0x13, 0x3c, 0xd1, 0xc7, 0x60, 0x30, 0xac, - 0x39, 0x0d, 0x52, 0xbe, 0x3a, 0x33, 0x9d, 0x7f, 0xfc, 0x54, 0x39, 0x49, 0xce, 0xec, 0xe2, 0xd1, - 0x71, 0x38, 0x09, 0x96, 0xec, 0xd0, 0x0a, 0xf4, 0xb3, 0xd4, 0xb3, 0x2c, 0x12, 0x6a, 0x4e, 0x00, - 0xee, 0xd4, 0x1b, 0x13, 0xbe, 0x37, 0x31, 0x30, 0xe6, 0xc5, 0xe9, 0x1a, 0x10, 0x9a, 0x02, 0x3f, - 0x9c, 0x39, 0x9e, 0xbf, 0x06, 0x84, 0x82, 0xe1, 0x6a, 0xb5, 0xd3, 0x1a, 0x50, 0x44, 0x38, 0x66, - 0x4a, 0x77, 0x66, 0xba, 0x9b, 0x9e, 0xe8, 0xe0, 0x3f, 0x98, 0xbb, 0x97, 0xb2, 0x9d, 0x99, 0xee, - 0xa4, 0x94, 0x85, 0xfd, 0x9b, 0x43, 0x69, 0x99, 0x85, 0x69, 0x98, 0xfe, 0x67, 0x2b, 0xe5, 0xe7, - 0xf0, 0xa1, 0x5e, 0x15, 0xde, 0xf7, 0xf1, 0xe2, 0xfa, 0x39, 0x0b, 0x4e, 0xb4, 0x32, 0x3f, 0x44, - 0x08, 0x00, 0xbd, 0xe9, 0xcd, 0xf9, 0xa7, 0xab, 0xa8, 0xb9, 0xd9, 0x78, 0x9c, 0x53, 0x53, 0x52, - 0x39, 0x50, 0x7c, 0xd7, 0xca, 0x81, 0x35, 0x18, 0xaa, 0xf1, 0x9b, 0x9c, 0x8c, 0xf6, 0xde, 0x53, - 0xcc, 0x47, 0x26, 0x4a, 0x88, 0x2b, 0xe0, 0x26, 0x56, 0x2c, 0xd0, 0x8f, 0x5a, 0x70, 0x3a, 0xd9, - 0x74, 0x4c, 0x18, 0x5a, 0x84, 0xda, 0xe5, 0x6a, 0xad, 0x15, 0xf1, 0xfd, 0x29, 0xf9, 0xdf, 0x20, - 0x3e, 0xe8, 0x46, 0x80, 0x3b, 0x57, 0x86, 0x96, 0x32, 0xf4, 0x6a, 0x03, 0xa6, 0x45, 0xb1, 0x07, - 0xdd, 0xda, 0x0b, 0x30, 0xda, 0xf4, 0xdb, 0x5e, 0x24, 0xdc, 0x0d, 0x85, 0xc3, 0x13, 0x73, 0xf4, - 0x59, 0xd3, 0xe0, 0xd8, 0xa0, 0x4a, 0x68, 0xe4, 0x86, 0xee, 0x59, 0x23, 0xf7, 0x36, 0x8c, 0x7a, - 0x9a, 0x7f, 0x7c, 0xa7, 0x1b, 0xac, 0xd0, 0x2e, 0x6a, 0xd4, 0xbc, 0x95, 0x3a, 0x04, 0x1b, 0xdc, - 0x3a, 0x6b, 0xcb, 0xe0, 0xdd, 0x69, 0xcb, 0x8e, 0xf4, 0x4a, 0x6c, 0xff, 0x42, 0x21, 0xe3, 0xc6, - 0xc0, 0xb5, 0x72, 0xaf, 0x99, 0x5a, 0xb9, 0x73, 0x49, 0xad, 0x5c, 0xca, 0x54, 0x65, 0x28, 0xe4, - 0x7a, 0xcf, 0x79, 0xd7, 0x73, 0x1c, 0xdf, 0xef, 0xb7, 0xe0, 0x21, 0x66, 0xfb, 0xa0, 0x15, 0xbc, - 0x6b, 0x7b, 0x07, 0x73, 0x05, 0x5d, 0xcd, 0x66, 0x87, 0xf3, 0xea, 0xb1, 0x1b, 0x70, 0xb6, 0xdb, - 0xb9, 0xcb, 0x1c, 0x6b, 0xeb, 0xca, 0x39, 0x22, 0x76, 0xac, 0xad, 0x97, 0x97, 0x30, 0xc3, 0xf4, - 0x1a, 0xa5, 0xce, 0xfe, 0x8f, 0x16, 0x14, 0x2b, 0x7e, 0xfd, 0x08, 0x6e, 0xf4, 0x1f, 0x31, 0x6e, - 0xf4, 0x0f, 0x67, 0x9f, 0xf8, 0xf5, 0x5c, 0x63, 0xdf, 0x72, 0xc2, 0xd8, 0x77, 0x3a, 0x8f, 0x41, - 0x67, 0xd3, 0xde, 0x4f, 0x17, 0x61, 0xa4, 0xe2, 0xd7, 0xd5, 0x3a, 0xfb, 0x67, 0xf7, 0xf2, 0xaa, - 0x25, 0x37, 0xc9, 0x90, 0xc6, 0x99, 0x79, 0xe1, 0xca, 0x38, 0x07, 0xdf, 0x66, 0x8f, 0x5b, 0x6e, - 0x10, 0x77, 0x6b, 0x3b, 0x22, 0xf5, 0xe4, 0xe7, 0x1c, 0xdd, 0xe3, 0x96, 0x6f, 0x16, 0x61, 0x22, - 0x51, 0x3b, 0x6a, 0xc0, 0x58, 0x43, 0x37, 0x25, 0x89, 0x79, 0x7a, 0x4f, 0x56, 0x28, 0xf1, 0x38, - 0x40, 0x03, 0x61, 0x93, 0x39, 0x9a, 0x03, 0x50, 0xbe, 0x15, 0x52, 0xdb, 0xcf, 0xae, 0x35, 0xca, - 0xf9, 0x22, 0xc4, 0x1a, 0x05, 0x7a, 0x11, 0x46, 0x22, 0xbf, 0xe5, 0x37, 0xfc, 0xad, 0xbd, 0x2b, - 0x44, 0x06, 0x30, 0x54, 0x8e, 0xbe, 0x1b, 0x31, 0x0a, 0xeb, 0x74, 0xe8, 0x36, 0x4c, 0x29, 0x26, - 0xd5, 0xfb, 0x60, 0x5e, 0x63, 0x6a, 0x93, 0xf5, 0x24, 0x47, 0x9c, 0xae, 0x04, 0xbd, 0x02, 0xe3, - 0xcc, 0xe3, 0x98, 0x95, 0xbf, 0x42, 0xf6, 0x64, 0x60, 0x5b, 0x26, 0x61, 0xaf, 0x19, 0x18, 0x9c, - 0xa0, 0x44, 0x8b, 0x30, 0xd5, 0x74, 0xc3, 0x44, 0xf1, 0x01, 0x56, 0x9c, 0x35, 0x60, 0x2d, 0x89, - 0xc4, 0x69, 0x7a, 0xfb, 0xe7, 0xc4, 0x18, 0x7b, 0x91, 0xfb, 0xfe, 0x72, 0x7c, 0x6f, 0x2f, 0xc7, - 0x6f, 0x58, 0x30, 0x49, 0x6b, 0x67, 0x6e, 0x94, 0x52, 0x90, 0x52, 0xa9, 0x0f, 0xac, 0x0e, 0xa9, - 0x0f, 0xce, 0xd1, 0x6d, 0xbb, 0xee, 0xb7, 0x23, 0xa1, 0x1d, 0xd5, 0xf6, 0x65, 0x0a, 0xc5, 0x02, - 0x2b, 0xe8, 0x48, 0x10, 0x88, 0x47, 0xe0, 0x3a, 0x1d, 0x09, 0x02, 0x2c, 0xb0, 0x32, 0x33, 0x42, - 0x5f, 0x76, 0x66, 0x04, 0x1e, 0xe0, 0x5a, 0x78, 0xc1, 0x09, 0x91, 0x56, 0x0b, 0x70, 0x2d, 0xdd, - 0xe3, 0x62, 0x1a, 0xfb, 0x6b, 0x45, 0x18, 0xad, 0xf8, 0xf5, 0xd8, 0xb1, 0xe3, 0x05, 0xc3, 0xb1, - 0xe3, 0x6c, 0xc2, 0xb1, 0x63, 0x52, 0xa7, 0x7d, 0xdf, 0x8d, 0xe3, 0x5b, 0xe5, 0xc6, 0xf1, 0x5b, - 0x16, 0x1b, 0xb5, 0xa5, 0xf5, 0x2a, 0xf7, 0xca, 0x45, 0x17, 0x61, 0x84, 0xed, 0x70, 0x2c, 0xea, - 0x80, 0xf4, 0x76, 0x60, 0x99, 0x0a, 0xd7, 0x63, 0x30, 0xd6, 0x69, 0xd0, 0x79, 0x18, 0x0a, 0x89, - 0x13, 0xd4, 0xb6, 0xd5, 0xf6, 0x2e, 0x5c, 0x13, 0x38, 0x0c, 0x2b, 0x2c, 0x7a, 0x33, 0x8e, 0xad, - 0x5c, 0xcc, 0x77, 0xf1, 0xd5, 0xdb, 0xc3, 0x97, 0x48, 0x7e, 0x40, 0x65, 0xfb, 0x06, 0xa0, 0x34, - 0x7d, 0x0f, 0xcf, 0x9e, 0x4a, 0x66, 0xf4, 0xcf, 0xe1, 0x54, 0xe4, 0xcf, 0xbf, 0xb7, 0x60, 0xbc, - 0xe2, 0xd7, 0xe9, 0xd2, 0xfd, 0x4e, 0x5a, 0xa7, 0x7a, 0x60, 0xf9, 0x81, 0x0e, 0x81, 0xe5, 0x1f, - 0x85, 0xfe, 0x8a, 0x5f, 0xef, 0x12, 0xa1, 0xf4, 0xff, 0xb1, 0x60, 0xb0, 0xe2, 0xd7, 0x8f, 0xc0, - 0xf0, 0xf2, 0x9a, 0x69, 0x78, 0x79, 0x28, 0x67, 0xde, 0xe4, 0xd8, 0x5a, 0xfe, 0xaf, 0x3e, 0x18, - 0xa3, 0xed, 0xf4, 0xb7, 0xe4, 0x50, 0x1a, 0xdd, 0x66, 0xf5, 0xd0, 0x6d, 0xf4, 0x1a, 0xe0, 0x37, - 0x1a, 0xfe, 0xad, 0xe4, 0xb0, 0xae, 0x30, 0x28, 0x16, 0x58, 0xf4, 0x0c, 0x0c, 0xb5, 0x02, 0xb2, - 0xeb, 0xfa, 0x42, 0xbe, 0xd6, 0xcc, 0x58, 0x15, 0x01, 0xc7, 0x8a, 0x82, 0x5e, 0xbc, 0x43, 0xd7, - 0xa3, 0xb2, 0x44, 0xcd, 0xf7, 0xea, 0xdc, 0x36, 0x51, 0x14, 0xd9, 0x8f, 0x34, 0x38, 0x36, 0xa8, - 0xd0, 0x0d, 0x18, 0x66, 0xff, 0xd9, 0xb6, 0x73, 0xf8, 0xc4, 0xee, 0x22, 0x1f, 0xac, 0x60, 0x80, - 0x63, 0x5e, 0xe8, 0x39, 0x80, 0x48, 0x66, 0x10, 0x09, 0x45, 0xa4, 0x4a, 0x75, 0x17, 0x51, 0xb9, - 0x45, 0x42, 0xac, 0x51, 0xa1, 0xa7, 0x61, 0x38, 0x72, 0xdc, 0xc6, 0xaa, 0xeb, 0x31, 0xfb, 0x3d, - 0x6d, 0xbf, 0x48, 0xcb, 0x2a, 0x80, 0x38, 0xc6, 0x53, 0x59, 0x90, 0xc5, 0x20, 0x5a, 0xd8, 0x8b, - 0x44, 0x06, 0xb2, 0x22, 0x97, 0x05, 0x57, 0x15, 0x14, 0x6b, 0x14, 0x68, 0x1b, 0x4e, 0xb9, 0x1e, - 0xcb, 0x14, 0x44, 0xaa, 0x3b, 0x6e, 0x6b, 0x63, 0xb5, 0x7a, 0x9d, 0x04, 0xee, 0xe6, 0xde, 0x82, - 0x53, 0xdb, 0x21, 0x9e, 0x4c, 0xd9, 0xfd, 0x98, 0x68, 0xe2, 0xa9, 0x72, 0x07, 0x5a, 0xdc, 0x91, - 0x93, 0xfd, 0x3c, 0x9b, 0xef, 0x57, 0xab, 0xe8, 0x29, 0x63, 0xeb, 0x38, 0xa1, 0x6f, 0x1d, 0x07, - 0xfb, 0xa5, 0x81, 0xab, 0x55, 0x2d, 0x10, 0xce, 0xcb, 0x70, 0xbc, 0xe2, 0xd7, 0x2b, 0x7e, 0x10, - 0xad, 0xf8, 0xc1, 0x2d, 0x27, 0xa8, 0xcb, 0xe9, 0x55, 0x92, 0xa1, 0x80, 0xe8, 0xfe, 0xd9, 0xcf, - 0x77, 0x17, 0x23, 0xcc, 0xcf, 0xf3, 0x4c, 0x62, 0x3b, 0xe4, 0x1b, 0xcf, 0x1a, 0x93, 0x1d, 0x54, - 0xae, 0xad, 0x4b, 0x4e, 0x44, 0xd0, 0x55, 0x18, 0xab, 0xe9, 0xc7, 0xa8, 0x28, 0xfe, 0xa4, 0x3c, - 0xc8, 0x8c, 0x33, 0x36, 0xf3, 0xdc, 0x35, 0xcb, 0xdb, 0xdf, 0x23, 0x2a, 0xe1, 0x8a, 0x08, 0xee, - 0xd2, 0xda, 0x4b, 0x56, 0x7b, 0x99, 0x8c, 0xa7, 0x90, 0x1f, 0x68, 0x91, 0xdb, 0x95, 0x3b, 0x26, - 0xe3, 0xb1, 0xbf, 0x17, 0x4e, 0x24, 0xab, 0xef, 0x39, 0xb5, 0xfe, 0x22, 0x4c, 0x05, 0x7a, 0x41, - 0x2d, 0xb3, 0xe1, 0x71, 0x9e, 0x40, 0x25, 0x81, 0xc4, 0x69, 0x7a, 0xfb, 0x45, 0x98, 0xa2, 0x97, - 0x5f, 0x25, 0xc8, 0xb1, 0x5e, 0xee, 0x1e, 0x13, 0xe9, 0x8f, 0x07, 0xd8, 0x41, 0x94, 0x48, 0x73, - 0x85, 0x3e, 0x05, 0xe3, 0x21, 0x59, 0x75, 0xbd, 0xf6, 0x6d, 0xa9, 0x5b, 0xeb, 0xf0, 0xb8, 0xb9, - 0xba, 0xac, 0x53, 0xf2, 0xfb, 0x83, 0x09, 0xc3, 0x09, 0x6e, 0xa8, 0x09, 0xe3, 0xb7, 0x5c, 0xaf, - 0xee, 0xdf, 0x0a, 0x25, 0xff, 0xa1, 0x7c, 0x45, 0xfd, 0x0d, 0x4e, 0x99, 0x68, 0xa3, 0x51, 0xdd, - 0x0d, 0x83, 0x19, 0x4e, 0x30, 0xa7, 0x8b, 0x3d, 0x68, 0x7b, 0xf3, 0xe1, 0xb5, 0x90, 0xf0, 0x47, - 0xaa, 0x62, 0xb1, 0x63, 0x09, 0xc4, 0x31, 0x9e, 0x2e, 0x76, 0xf6, 0xe7, 0x52, 0xe0, 0xb7, 0x79, - 0x4e, 0x25, 0xb1, 0xd8, 0xb1, 0x82, 0x62, 0x8d, 0x82, 0x6e, 0x86, 0xec, 0xdf, 0xba, 0xef, 0x61, - 0xdf, 0x8f, 0xe4, 0xf6, 0xc9, 0x72, 0x02, 0x6a, 0x70, 0x6c, 0x50, 0xa1, 0x15, 0x40, 0x61, 0xbb, - 0xd5, 0x6a, 0x30, 0xd7, 0x45, 0xa7, 0xc1, 0x58, 0x71, 0xb7, 0xab, 0x22, 0xf7, 0x6e, 0xa9, 0xa6, - 0xb0, 0x38, 0xa3, 0x04, 0x3d, 0x17, 0x37, 0x45, 0x53, 0xfb, 0x59, 0x53, 0xb9, 0x51, 0xaf, 0xca, - 0xdb, 0x29, 0x71, 0x68, 0x19, 0x06, 0xc3, 0xbd, 0xb0, 0x16, 0x35, 0xc2, 0x4e, 0x19, 0x18, 0xab, - 0x8c, 0x44, 0x4b, 0x00, 0xcc, 0x8b, 0x60, 0x59, 0x16, 0xd5, 0x60, 0x5a, 0x70, 0x5c, 0xdc, 0x76, - 0x3c, 0x95, 0x17, 0x8e, 0x7b, 0xef, 0x5d, 0xbc, 0xbb, 0x5f, 0x9a, 0x16, 0x35, 0xeb, 0xe8, 0x83, - 0xfd, 0x12, 0x5d, 0x1c, 0x19, 0x18, 0x9c, 0xc5, 0x8d, 0x4f, 0xbe, 0x5a, 0xcd, 0x6f, 0xb6, 0x2a, - 0x81, 0xbf, 0xe9, 0x36, 0x48, 0x27, 0xc3, 0x68, 0xd5, 0xa0, 0x14, 0x93, 0xcf, 0x80, 0xe1, 0x04, - 0x37, 0x74, 0x13, 0x26, 0x9c, 0x56, 0x6b, 0x3e, 0x68, 0xfa, 0x81, 0xac, 0x60, 0x24, 0x5f, 0xc3, - 0x3e, 0x6f, 0x92, 0xf2, 0xb4, 0x70, 0x09, 0x20, 0x4e, 0x32, 0xb4, 0xbf, 0x87, 0xc9, 0xa7, 0x55, - 0x77, 0xcb, 0x63, 0xef, 0xc6, 0x51, 0x13, 0xc6, 0x5a, 0x6c, 0x07, 0x13, 0xd9, 0x94, 0xc4, 0x7a, - 0x7a, 0xa1, 0x47, 0x1d, 0xdb, 0x2d, 0x96, 0x0f, 0xd2, 0xf0, 0xb5, 0xac, 0xe8, 0xec, 0xb0, 0xc9, - 0xdd, 0xfe, 0x57, 0x27, 0x99, 0x84, 0x53, 0xe5, 0x8a, 0xb3, 0x41, 0xf1, 0x0a, 0x4e, 0x5c, 0x95, - 0x67, 0xf3, 0x55, 0xd4, 0xf1, 0xd0, 0x8b, 0x97, 0x74, 0x58, 0x96, 0x45, 0x9f, 0x84, 0x71, 0x7a, - 0xf3, 0x54, 0x52, 0x46, 0x38, 0x73, 0x2c, 0x3f, 0x6e, 0x91, 0xa2, 0xd2, 0x33, 0xad, 0xe9, 0x85, - 0x71, 0x82, 0x19, 0x7a, 0x93, 0xb9, 0x1f, 0x4a, 0xd6, 0x85, 0x5e, 0x58, 0xeb, 0x9e, 0x86, 0x92, - 0xad, 0xc6, 0x04, 0xb5, 0x61, 0x3a, 0x9d, 0x4f, 0x36, 0x9c, 0xb1, 0xf3, 0x45, 0xf8, 0x74, 0x4a, - 0xd8, 0x38, 0x25, 0x56, 0x1a, 0x17, 0xe2, 0x2c, 0xfe, 0x68, 0x35, 0x99, 0xed, 0xb3, 0x68, 0x28, - 0xb7, 0x53, 0x19, 0x3f, 0xc7, 0x3a, 0x26, 0xfa, 0xdc, 0x82, 0xd3, 0x5a, 0xc2, 0xc4, 0x4b, 0x81, - 0xc3, 0xdc, 0x5f, 0x5c, 0xb6, 0x65, 0x6b, 0xb2, 0xd7, 0x23, 0x77, 0xf7, 0x4b, 0xa7, 0x37, 0x3a, - 0x11, 0xe2, 0xce, 0x7c, 0xd0, 0x55, 0x38, 0xce, 0xa3, 0x6e, 0x2c, 0x11, 0xa7, 0xde, 0x70, 0x3d, - 0x25, 0xdc, 0xf1, 0x6d, 0xe5, 0xe4, 0xdd, 0xfd, 0xd2, 0xf1, 0xf9, 0x2c, 0x02, 0x9c, 0x5d, 0x0e, - 0xbd, 0x06, 0xc3, 0x75, 0x2f, 0x14, 0x7d, 0x30, 0x60, 0xe4, 0xa4, 0x1c, 0x5e, 0x5a, 0xaf, 0xaa, - 0xef, 0x8f, 0xff, 0xe0, 0xb8, 0x00, 0xda, 0xe2, 0xd6, 0x15, 0xa5, 0x12, 0x1b, 0x4c, 0x05, 0x63, - 0x4c, 0x6a, 0x8d, 0x8d, 0xd7, 0xf6, 0xdc, 0xac, 0xa8, 0x5e, 0x86, 0x19, 0x0f, 0xf1, 0x0d, 0xc6, - 0xe8, 0x0d, 0x40, 0x22, 0xf7, 0xc9, 0x7c, 0x8d, 0xa5, 0xea, 0xd2, 0x5c, 0x1e, 0xd5, 0x4d, 0xb7, - 0x9a, 0xa2, 0xc0, 0x19, 0xa5, 0xd0, 0x65, 0xba, 0x73, 0xe9, 0x50, 0xb1, 0x33, 0xaa, 0xcc, 0xc7, - 0x4b, 0xa4, 0x15, 0x10, 0xe6, 0xa5, 0x67, 0x72, 0xc4, 0x89, 0x72, 0xa8, 0x0e, 0xa7, 0x9c, 0x76, - 0xe4, 0x33, 0xc3, 0x95, 0x49, 0xba, 0xe1, 0xef, 0x10, 0x8f, 0xd9, 0x8c, 0x87, 0x58, 0x90, 0xc7, - 0x53, 0xf3, 0x1d, 0xe8, 0x70, 0x47, 0x2e, 0x54, 0xea, 0xa7, 0x7d, 0xa1, 0xd9, 0x94, 0x8c, 0x87, - 0xc3, 0xdc, 0xd0, 0x2a, 0x29, 0xd0, 0x8b, 0x30, 0xb2, 0xed, 0x87, 0xd1, 0x3a, 0x89, 0x6e, 0xf9, - 0xc1, 0x8e, 0x08, 0xb6, 0x1e, 0x27, 0xb8, 0x88, 0x51, 0x58, 0xa7, 0xa3, 0xd7, 0x7a, 0xe6, 0xd1, - 0x54, 0x5e, 0x62, 0xce, 0x24, 0x43, 0xf1, 0x1e, 0x73, 0x99, 0x83, 0xb1, 0xc4, 0x4b, 0xd2, 0x72, - 0x65, 0x91, 0x39, 0x86, 0x24, 0x48, 0xcb, 0x95, 0x45, 0x2c, 0xf1, 0x74, 0xba, 0x86, 0xdb, 0x4e, - 0x40, 0x2a, 0x81, 0x5f, 0x23, 0xa1, 0x96, 0x56, 0xe5, 0x61, 0x1e, 0x4a, 0x9e, 0x4e, 0xd7, 0x6a, - 0x16, 0x01, 0xce, 0x2e, 0x87, 0x48, 0x3a, 0x59, 0xe8, 0x78, 0xbe, 0x45, 0x2f, 0x2d, 0x33, 0xf5, - 0x98, 0x2f, 0xd4, 0x83, 0x49, 0x95, 0xa6, 0x94, 0x07, 0x8f, 0x0f, 0x67, 0x26, 0xd8, 0xdc, 0xee, - 0x3d, 0xf2, 0xbc, 0xb2, 0x91, 0x96, 0x13, 0x9c, 0x70, 0x8a, 0xb7, 0x11, 0x45, 0x74, 0xb2, 0x6b, - 0x14, 0xd1, 0x0b, 0x30, 0x1c, 0xb6, 0x6f, 0xd6, 0xfd, 0xa6, 0xe3, 0x7a, 0xcc, 0x31, 0x44, 0xbb, - 0x5f, 0x56, 0x25, 0x02, 0xc7, 0x34, 0x68, 0x05, 0x86, 0x1c, 0x69, 0x00, 0x45, 0xf9, 0x01, 0xd2, - 0x94, 0xd9, 0x93, 0xc7, 0x0c, 0x92, 0x26, 0x4f, 0x55, 0x16, 0xbd, 0x0a, 0x63, 0x22, 0x56, 0x84, - 0xc8, 0xec, 0x3d, 0x6d, 0xbe, 0xb2, 0xad, 0xea, 0x48, 0x6c, 0xd2, 0xa2, 0x6b, 0x30, 0x12, 0xf9, - 0x0d, 0xf6, 0x54, 0x94, 0x8a, 0x92, 0x27, 0xf2, 0xe3, 0x98, 0x6e, 0x28, 0x32, 0x5d, 0x35, 0xaf, - 0x8a, 0x62, 0x9d, 0x0f, 0xda, 0xe0, 0xf3, 0x9d, 0x25, 0x51, 0x21, 0xa1, 0x48, 0x0d, 0x7d, 0x3a, - 0xcf, 0xab, 0x8f, 0x91, 0x99, 0xcb, 0x41, 0x94, 0xc4, 0x3a, 0x1b, 0x74, 0x09, 0xa6, 0x5a, 0x81, - 0xeb, 0xb3, 0x39, 0xa1, 0x0c, 0xba, 0x33, 0x66, 0xca, 0xc4, 0x4a, 0x92, 0x00, 0xa7, 0xcb, 0xb0, - 0x50, 0x1f, 0x02, 0x38, 0x73, 0x92, 0xa7, 0x7d, 0xe2, 0xd7, 0x75, 0x0e, 0xc3, 0x0a, 0x8b, 0xd6, - 0xd8, 0x4e, 0xcc, 0x35, 0x4d, 0x33, 0xb3, 0xf9, 0x31, 0xd9, 0x74, 0x8d, 0x14, 0x17, 0x90, 0xd5, - 0x5f, 0x1c, 0x73, 0x40, 0x75, 0x2d, 0xdb, 0x32, 0xbd, 0x66, 0x84, 0x33, 0xa7, 0x3a, 0xb8, 0x95, - 0x26, 0x6e, 0x7e, 0xb1, 0x40, 0x60, 0x80, 0x43, 0x9c, 0xe0, 0x89, 0x3e, 0x0a, 0x93, 0xe2, 0x1d, - 0x7c, 0xdc, 0x4d, 0xa7, 0xe3, 0xa7, 0x37, 0x38, 0x81, 0xc3, 0x29, 0x6a, 0x9e, 0x76, 0xc9, 0xb9, - 0xd9, 0x20, 0x62, 0xeb, 0x5b, 0x75, 0xbd, 0x9d, 0x70, 0xe6, 0x0c, 0xdb, 0x1f, 0x44, 0xda, 0xa5, - 0x24, 0x16, 0x67, 0x94, 0x40, 0x1b, 0x30, 0xd9, 0x0a, 0x08, 0x69, 0xb2, 0xcb, 0x84, 0x38, 0xcf, - 0x4a, 0x3c, 0xd2, 0x0d, 0x6d, 0x49, 0x25, 0x81, 0x3b, 0xc8, 0x80, 0xe1, 0x14, 0x07, 0x74, 0x0b, - 0x86, 0xfc, 0x5d, 0x12, 0x6c, 0x13, 0xa7, 0x3e, 0x73, 0xb6, 0xc3, 0x83, 0x30, 0x71, 0xb8, 0x5d, - 0x15, 0xb4, 0x09, 0x7f, 0x19, 0x09, 0xee, 0xee, 0x2f, 0x23, 0x2b, 0x43, 0xff, 0x8b, 0x05, 0x27, - 0xa5, 0x05, 0xaa, 0xda, 0xa2, 0xbd, 0xbe, 0xe8, 0x7b, 0x61, 0x14, 0xf0, 0xd8, 0x2c, 0x8f, 0xe4, - 0xc7, 0x2b, 0xd9, 0xc8, 0x29, 0xa4, 0x94, 0xdd, 0x27, 0xf3, 0x28, 0x42, 0x9c, 0x5f, 0x23, 0xbd, - 0xfe, 0x86, 0x24, 0x92, 0x9b, 0xd1, 0x7c, 0xb8, 0xf2, 0xe6, 0xd2, 0xfa, 0xcc, 0xa3, 0x3c, 0xb0, - 0x0c, 0x5d, 0x0c, 0xd5, 0x24, 0x12, 0xa7, 0xe9, 0xd1, 0x45, 0x28, 0xf8, 0xe1, 0xcc, 0x63, 0x1d, - 0x12, 0x74, 0xfb, 0xf5, 0xab, 0x55, 0xee, 0x37, 0x79, 0xb5, 0x8a, 0x0b, 0x7e, 0x28, 0x53, 0x1f, - 0xd1, 0x3b, 0x5f, 0x38, 0xf3, 0x38, 0x57, 0x8d, 0xca, 0xd4, 0x47, 0x0c, 0x88, 0x63, 0x3c, 0xda, - 0x86, 0x89, 0xd0, 0xb8, 0x5b, 0x87, 0x33, 0xe7, 0x58, 0x4f, 0x3d, 0x9e, 0x37, 0x68, 0x06, 0xb5, - 0x96, 0x93, 0xc4, 0xe4, 0x82, 0x93, 0x6c, 0xf9, 0xea, 0xd2, 0x6e, 0xf7, 0xe1, 0xcc, 0x13, 0x5d, - 0x56, 0x97, 0x46, 0xac, 0xaf, 0x2e, 0x9d, 0x07, 0x4e, 0xf0, 0x9c, 0xfd, 0x2e, 0x98, 0x4a, 0x89, - 0x4b, 0x87, 0x79, 0x23, 0x30, 0xbb, 0x03, 0x63, 0xc6, 0x94, 0x7c, 0xa0, 0x2e, 0x24, 0xbf, 0x3f, - 0x0c, 0xc3, 0xca, 0xb4, 0x8f, 0x2e, 0x98, 0x5e, 0x23, 0x27, 0x93, 0x5e, 0x23, 0x43, 0x15, 0xbf, - 0x6e, 0x38, 0x8a, 0x6c, 0x64, 0x04, 0x22, 0xcd, 0xdb, 0x00, 0x7b, 0x7f, 0xc8, 0xa4, 0x99, 0x2b, - 0x8a, 0x3d, 0xbb, 0x9f, 0xf4, 0x75, 0xb4, 0x80, 0x5c, 0x82, 0x29, 0xcf, 0x67, 0x32, 0x3a, 0xa9, - 0x4b, 0x01, 0x8c, 0xc9, 0x59, 0xc3, 0x7a, 0x3c, 0xaf, 0x04, 0x01, 0x4e, 0x97, 0xa1, 0x15, 0x72, - 0x41, 0x29, 0x69, 0x72, 0xe1, 0x72, 0x14, 0x16, 0x58, 0x7a, 0x37, 0xe4, 0xbf, 0xc2, 0x99, 0xc9, - 0xfc, 0xbb, 0x21, 0x2f, 0x94, 0x14, 0xc6, 0x42, 0x29, 0x8c, 0x31, 0x0b, 0x43, 0xcb, 0xaf, 0x97, - 0x2b, 0x42, 0xcc, 0xd7, 0x42, 0x84, 0xd7, 0xcb, 0x15, 0xcc, 0x71, 0x68, 0x1e, 0x06, 0xd8, 0x0f, - 0x19, 0x27, 0x25, 0x6f, 0x99, 0x96, 0x2b, 0x5a, 0xea, 0x45, 0x56, 0x00, 0x8b, 0x82, 0x4c, 0x83, - 0x4c, 0xef, 0x46, 0x4c, 0x83, 0x3c, 0x78, 0x8f, 0x1a, 0x64, 0xc9, 0x00, 0xc7, 0xbc, 0xd0, 0x6d, - 0x38, 0x6e, 0xdc, 0x47, 0xd5, 0xcb, 0x2e, 0xc8, 0x37, 0x2e, 0x27, 0x88, 0x17, 0x4e, 0x8b, 0x46, - 0x1f, 0x2f, 0x67, 0x71, 0xc2, 0xd9, 0x15, 0xa0, 0x06, 0x4c, 0xd5, 0x52, 0xb5, 0x0e, 0xf5, 0x5e, - 0xab, 0x9a, 0x17, 0xe9, 0x1a, 0xd3, 0x8c, 0xd1, 0xab, 0x30, 0xf4, 0x8e, 0xcf, 0x1d, 0xc1, 0xc4, - 0xd5, 0x44, 0x46, 0x15, 0x19, 0x7a, 0xf3, 0x6a, 0x95, 0xc1, 0x0f, 0xf6, 0x4b, 0x23, 0x15, 0xbf, - 0x2e, 0xff, 0x62, 0x55, 0x00, 0xfd, 0x90, 0x05, 0xb3, 0xe9, 0x0b, 0xaf, 0x6a, 0xf4, 0x58, 0xef, - 0x8d, 0xb6, 0x45, 0xa5, 0xb3, 0xcb, 0xb9, 0xec, 0x70, 0x87, 0xaa, 0xd0, 0x87, 0xe9, 0x7a, 0x0a, - 0xdd, 0x3b, 0x44, 0xe4, 0xad, 0x7e, 0x24, 0x5e, 0x4f, 0x14, 0x7a, 0xb0, 0x5f, 0x9a, 0xe0, 0x3b, - 0xa3, 0x7b, 0x47, 0x05, 0x33, 0xe7, 0x05, 0xd0, 0xf7, 0xc2, 0xf1, 0x20, 0xad, 0xa5, 0x25, 0x52, - 0x08, 0x7f, 0xaa, 0x97, 0x5d, 0x36, 0x39, 0xe0, 0x38, 0x8b, 0x21, 0xce, 0xae, 0xc7, 0xfe, 0x75, - 0x8b, 0xe9, 0xd0, 0x45, 0xb3, 0x48, 0xd8, 0x6e, 0x1c, 0x45, 0xb6, 0xfc, 0x65, 0xc3, 0x3e, 0x7d, - 0xcf, 0xde, 0x53, 0xbf, 0x6b, 0x31, 0xef, 0xa9, 0x23, 0x7c, 0x07, 0xf6, 0x26, 0x0c, 0x45, 0xa2, - 0xb6, 0x4e, 0x09, 0xfe, 0xb5, 0x46, 0x31, 0x0f, 0x32, 0x75, 0xc9, 0x91, 0x50, 0xac, 0xd8, 0xd8, - 0xff, 0x84, 0x8f, 0x80, 0xc4, 0x1c, 0x81, 0x19, 0x70, 0xc9, 0x34, 0x03, 0x96, 0xba, 0x7c, 0x41, - 0x8e, 0x39, 0xf0, 0x1f, 0x9b, 0xed, 0x66, 0xca, 0xbd, 0xf7, 0xba, 0xdb, 0x9e, 0xfd, 0x05, 0x0b, - 0x20, 0xce, 0x1e, 0xd1, 0x43, 0x9e, 0xda, 0x97, 0xe9, 0xb5, 0xc6, 0x8f, 0xfc, 0x9a, 0xdf, 0x10, - 0x46, 0x90, 0x53, 0xb1, 0x25, 0x92, 0xc3, 0x0f, 0xb4, 0xdf, 0x58, 0x51, 0xa3, 0x92, 0x0c, 0xe7, - 0x5a, 0x8c, 0x6d, 0xe3, 0x46, 0x28, 0xd7, 0x2f, 0x5b, 0x70, 0x2c, 0xeb, 0x51, 0x01, 0xbd, 0x24, - 0x73, 0x35, 0xa7, 0x72, 0xa9, 0x54, 0xa3, 0x79, 0x5d, 0xc0, 0xb1, 0xa2, 0xe8, 0x39, 0x01, 0xf0, - 0xe1, 0x32, 0x1b, 0x5c, 0x85, 0xb1, 0x4a, 0x40, 0x34, 0xf9, 0xe2, 0x75, 0x1e, 0xad, 0x87, 0xb7, - 0xe7, 0x99, 0x43, 0x47, 0xea, 0xb1, 0xbf, 0x52, 0x80, 0x63, 0xdc, 0x31, 0x68, 0x7e, 0xd7, 0x77, - 0xeb, 0x15, 0xbf, 0x2e, 0x9e, 0x82, 0xbe, 0x05, 0xa3, 0x2d, 0x4d, 0x37, 0xdd, 0x29, 0x4a, 0xb7, - 0xae, 0xc3, 0x8e, 0xb5, 0x69, 0x3a, 0x14, 0x1b, 0xbc, 0x50, 0x1d, 0x46, 0xc9, 0xae, 0x5b, 0x53, - 0xde, 0x25, 0x85, 0x43, 0x1f, 0xd2, 0xaa, 0x96, 0x65, 0x8d, 0x0f, 0x36, 0xb8, 0xf6, 0xec, 0xce, - 0xab, 0x89, 0x68, 0x7d, 0x5d, 0x3c, 0x4a, 0x7e, 0xdc, 0x82, 0x87, 0x72, 0x62, 0x7a, 0xd3, 0xea, - 0x6e, 0x31, 0x17, 0x2c, 0x31, 0x6d, 0x55, 0x75, 0xdc, 0x31, 0x0b, 0x0b, 0x2c, 0xfa, 0x18, 0x00, - 0x77, 0xac, 0x22, 0x5e, 0xad, 0x6b, 0xf0, 0x63, 0x23, 0x5a, 0xab, 0x16, 0x78, 0x53, 0x96, 0xc7, - 0x1a, 0x2f, 0xfb, 0xcb, 0x7d, 0xd0, 0xcf, 0x1c, 0x79, 0x50, 0x05, 0x06, 0xb7, 0x79, 0x5c, 0xb8, - 0x8e, 0xe3, 0x46, 0x69, 0x65, 0xa0, 0xb9, 0x78, 0xdc, 0x34, 0x28, 0x96, 0x6c, 0xd0, 0x1a, 0x4c, - 0xf3, 0x2c, 0x84, 0x8d, 0x25, 0xd2, 0x70, 0xf6, 0xa4, 0xda, 0x97, 0x27, 0xd6, 0x57, 0xea, 0xef, - 0x72, 0x9a, 0x04, 0x67, 0x95, 0x43, 0xaf, 0xc3, 0x38, 0xbd, 0x86, 0xfb, 0xed, 0x48, 0x72, 0xe2, - 0xf9, 0x07, 0xd5, 0xcd, 0x64, 0xc3, 0xc0, 0xe2, 0x04, 0x35, 0x7a, 0x15, 0xc6, 0x5a, 0x29, 0x05, - 0x77, 0x7f, 0xac, 0x09, 0x32, 0x95, 0xda, 0x26, 0x2d, 0x7b, 0x57, 0xd0, 0x66, 0xaf, 0x28, 0x36, - 0xb6, 0x03, 0x12, 0x6e, 0xfb, 0x8d, 0x3a, 0x93, 0x80, 0xfb, 0xb5, 0x77, 0x05, 0x09, 0x3c, 0x4e, - 0x95, 0xa0, 0x5c, 0x36, 0x1d, 0xb7, 0xd1, 0x0e, 0x48, 0xcc, 0x65, 0xc0, 0xe4, 0xb2, 0x92, 0xc0, - 0xe3, 0x54, 0x89, 0xee, 0x9a, 0xfb, 0xc1, 0xfb, 0xa3, 0xb9, 0xb7, 0x7f, 0xa6, 0x00, 0xc6, 0xd0, - 0x7e, 0x07, 0xe7, 0x45, 0x7c, 0x0d, 0xfa, 0xb6, 0x82, 0x56, 0x4d, 0x38, 0xad, 0x65, 0x7e, 0x59, - 0x9c, 0x14, 0x9d, 0x7f, 0x19, 0xfd, 0x8f, 0x59, 0x29, 0xba, 0xc6, 0x8f, 0x57, 0x02, 0x9f, 0x1e, - 0x72, 0x32, 0x74, 0xa4, 0x7a, 0xbe, 0x33, 0x28, 0x03, 0x51, 0x74, 0x08, 0xb2, 0x2c, 0xde, 0x20, - 0x70, 0x0e, 0x86, 0x7f, 0x57, 0x55, 0x84, 0x9b, 0x91, 0x5c, 0xd0, 0x45, 0x18, 0x11, 0xa9, 0xea, - 0xd8, 0x2b, 0x13, 0xbe, 0x98, 0x98, 0x3f, 0xda, 0x52, 0x0c, 0xc6, 0x3a, 0x8d, 0xfd, 0xc3, 0x05, - 0x98, 0xce, 0x78, 0x26, 0xc8, 0x8f, 0x91, 0x2d, 0x37, 0x8c, 0x54, 0xde, 0x75, 0xed, 0x18, 0xe1, - 0x70, 0xac, 0x28, 0xe8, 0x5e, 0xc5, 0x0f, 0xaa, 0xe4, 0xe1, 0x24, 0x9e, 0xe1, 0x08, 0xec, 0x21, - 0x33, 0x98, 0x9f, 0x85, 0xbe, 0x76, 0x48, 0x64, 0xa0, 0x74, 0x75, 0x6c, 0x33, 0xd3, 0x39, 0xc3, - 0xd0, 0x2b, 0xe0, 0x96, 0xb2, 0x42, 0x6b, 0x57, 0x40, 0x6e, 0x87, 0xe6, 0x38, 0xda, 0xb8, 0x88, - 0x78, 0x8e, 0x17, 0x89, 0x8b, 0x62, 0x1c, 0xe7, 0x97, 0x41, 0xb1, 0xc0, 0xda, 0x5f, 0x2a, 0xc2, - 0xc9, 0xdc, 0x87, 0xc3, 0xb4, 0xe9, 0x4d, 0xdf, 0x73, 0x23, 0x5f, 0x39, 0xfa, 0xf1, 0xd8, 0xbe, - 0xa4, 0xb5, 0xbd, 0x26, 0xe0, 0x58, 0x51, 0xa0, 0x73, 0xd0, 0xcf, 0x94, 0xe2, 0xa9, 0x0c, 0xf4, - 0x0b, 0x4b, 0x3c, 0x02, 0x23, 0x47, 0x6b, 0xa7, 0x7a, 0xb1, 0xe3, 0xa9, 0xfe, 0x28, 0x95, 0x60, - 0xfc, 0x46, 0xf2, 0x40, 0xa1, 0xcd, 0xf5, 0xfd, 0x06, 0x66, 0x48, 0xf4, 0xb8, 0xe8, 0xaf, 0x84, - 0x67, 0x1b, 0x76, 0xea, 0x7e, 0xa8, 0x75, 0xda, 0x93, 0x30, 0xb8, 0x43, 0xf6, 0x02, 0xd7, 0xdb, - 0x4a, 0x7a, 0x3c, 0x5e, 0xe1, 0x60, 0x2c, 0xf1, 0x66, 0x32, 0xe4, 0xc1, 0xfb, 0x91, 0x0c, 0x59, - 0x9f, 0x01, 0x43, 0x5d, 0xc5, 0x93, 0x1f, 0x29, 0xc2, 0x04, 0x5e, 0x58, 0x7a, 0x7f, 0x20, 0xae, - 0xa5, 0x07, 0xe2, 0x7e, 0xe4, 0x0c, 0x3e, 0xdc, 0x68, 0xfc, 0xb2, 0x05, 0x13, 0x2c, 0x61, 0x9e, - 0x88, 0xfa, 0xe1, 0xfa, 0xde, 0x11, 0x5c, 0x05, 0x1e, 0x85, 0xfe, 0x80, 0x56, 0x9a, 0x4c, 0x3d, - 0xcf, 0x5a, 0x82, 0x39, 0x0e, 0x9d, 0x82, 0x3e, 0xd6, 0x04, 0x3a, 0x78, 0xa3, 0x7c, 0x0b, 0x5e, - 0x72, 0x22, 0x07, 0x33, 0x28, 0x8b, 0x3f, 0x88, 0x49, 0xab, 0xe1, 0xf2, 0x46, 0xc7, 0x2e, 0x0b, - 0xef, 0x8d, 0x90, 0x22, 0x99, 0x4d, 0x7b, 0x77, 0xf1, 0x07, 0xb3, 0x59, 0x76, 0xbe, 0x66, 0xff, - 0x75, 0x01, 0xce, 0x64, 0x96, 0xeb, 0x39, 0xfe, 0x60, 0xe7, 0xd2, 0x0f, 0x32, 0xf7, 0x57, 0xf1, - 0x08, 0xfd, 0xc9, 0xfb, 0x7a, 0x95, 0xfe, 0xfb, 0x7b, 0x08, 0x0b, 0x98, 0xd9, 0x65, 0xef, 0x91, - 0xb0, 0x80, 0x99, 0x6d, 0xcb, 0x51, 0x13, 0xfc, 0x43, 0x21, 0xe7, 0x5b, 0x98, 0xc2, 0xe0, 0x3c, - 0xdd, 0x67, 0x18, 0x32, 0x94, 0x97, 0x70, 0xbe, 0xc7, 0x70, 0x18, 0x56, 0x58, 0x34, 0x0f, 0x13, - 0x4d, 0xd7, 0xa3, 0x9b, 0xcf, 0x9e, 0x29, 0x8a, 0x2b, 0x5b, 0xc6, 0x9a, 0x89, 0xc6, 0x49, 0x7a, - 0xe4, 0x6a, 0x21, 0x03, 0xf9, 0xd7, 0xbd, 0x7a, 0xa8, 0x55, 0x37, 0x67, 0xba, 0x73, 0xa8, 0x5e, - 0xcc, 0x08, 0x1f, 0xb8, 0xa6, 0xe9, 0x89, 0x8a, 0xbd, 0xeb, 0x89, 0x46, 0xb3, 0x75, 0x44, 0xb3, - 0xaf, 0xc2, 0xd8, 0x3d, 0xdb, 0x46, 0xec, 0x6f, 0x14, 0xe1, 0xe1, 0x0e, 0xcb, 0x9e, 0xef, 0xf5, - 0xc6, 0x18, 0x68, 0x7b, 0x7d, 0x6a, 0x1c, 0x2a, 0x70, 0x6c, 0xb3, 0xdd, 0x68, 0xec, 0xb1, 0x87, - 0x53, 0xa4, 0x2e, 0x29, 0x84, 0x4c, 0x29, 0x95, 0x23, 0xc7, 0x56, 0x32, 0x68, 0x70, 0x66, 0x49, - 0x7a, 0xc5, 0xa2, 0x27, 0xc9, 0x9e, 0x62, 0x95, 0xb8, 0x62, 0x61, 0x1d, 0x89, 0x4d, 0x5a, 0x74, - 0x09, 0xa6, 0x9c, 0x5d, 0xc7, 0xe5, 0x29, 0x1e, 0x24, 0x03, 0x7e, 0xc7, 0x52, 0xba, 0xe8, 0xf9, - 0x24, 0x01, 0x4e, 0x97, 0x41, 0x6f, 0x00, 0xf2, 0x6f, 0xb2, 0xc7, 0x18, 0xf5, 0x4b, 0xc4, 0x13, - 0x56, 0x77, 0x36, 0x76, 0xc5, 0x78, 0x4b, 0xb8, 0x9a, 0xa2, 0xc0, 0x19, 0xa5, 0x12, 0xc1, 0xeb, - 0x06, 0xf2, 0x83, 0xd7, 0x75, 0xde, 0x17, 0xbb, 0xa6, 0x9d, 0xbb, 0x08, 0x63, 0x87, 0x74, 0x31, - 0xb6, 0xff, 0x9d, 0x05, 0x4a, 0x41, 0x6c, 0x06, 0x9f, 0x7e, 0x95, 0xf9, 0x40, 0x73, 0xd5, 0xb6, - 0x16, 0x6f, 0xea, 0xb8, 0xe6, 0x03, 0x1d, 0x23, 0xb1, 0x49, 0xcb, 0xe7, 0x90, 0xe6, 0xbb, 0x6c, - 0xdc, 0x0a, 0x44, 0x6c, 0x4c, 0x45, 0x81, 0x3e, 0x0e, 0x83, 0x75, 0x77, 0xd7, 0x0d, 0x85, 0x72, - 0xec, 0xd0, 0xc6, 0xb8, 0x78, 0xeb, 0x5c, 0xe2, 0x6c, 0xb0, 0xe4, 0x67, 0xff, 0x48, 0x21, 0xee, - 0x93, 0x37, 0xdb, 0x7e, 0xe4, 0x1c, 0xc1, 0x49, 0x7e, 0xc9, 0x38, 0xc9, 0x1f, 0xcf, 0x1e, 0x68, - 0xad, 0x49, 0xb9, 0x27, 0xf8, 0xd5, 0xc4, 0x09, 0xfe, 0x44, 0x77, 0x56, 0x9d, 0x4f, 0xee, 0x5f, - 0xb3, 0x60, 0xca, 0xa0, 0x3f, 0x82, 0x03, 0x64, 0xc5, 0x3c, 0x40, 0x1e, 0xe9, 0xfa, 0x0d, 0x39, - 0x07, 0xc7, 0x0f, 0x16, 0x13, 0x6d, 0x67, 0x07, 0xc6, 0x3b, 0xd0, 0xb7, 0xed, 0x04, 0x75, 0x71, - 0x2f, 0xbe, 0xd0, 0x53, 0x5f, 0xcf, 0x5d, 0x76, 0x02, 0xe1, 0xa9, 0xf0, 0x8c, 0xec, 0x75, 0x0a, - 0xea, 0xea, 0xa5, 0xc0, 0xaa, 0x42, 0x2f, 0xc3, 0x40, 0x58, 0xf3, 0x5b, 0xea, 0x5d, 0x16, 0xcb, - 0x65, 0x5c, 0x65, 0x90, 0x83, 0xfd, 0x12, 0x32, 0xab, 0xa3, 0x60, 0x2c, 0xe8, 0xd1, 0x5b, 0x30, - 0xc6, 0x7e, 0x29, 0xb7, 0xc1, 0x62, 0xbe, 0x06, 0xa3, 0xaa, 0x13, 0x72, 0x9f, 0x5a, 0x03, 0x84, - 0x4d, 0x56, 0xb3, 0x5b, 0x30, 0xac, 0x3e, 0xeb, 0x81, 0x5a, 0xbb, 0xff, 0x4d, 0x11, 0xa6, 0x33, - 0xe6, 0x1c, 0x0a, 0x8d, 0x91, 0xb8, 0xd8, 0xe3, 0x54, 0x7d, 0x97, 0x63, 0x11, 0xb2, 0x0b, 0x54, - 0x5d, 0xcc, 0xad, 0x9e, 0x2b, 0xbd, 0x16, 0x92, 0x64, 0xa5, 0x14, 0xd4, 0xbd, 0x52, 0x5a, 0xd9, - 0x91, 0x75, 0x35, 0xad, 0x48, 0xb5, 0xf4, 0x81, 0x8e, 0xe9, 0x6f, 0xf5, 0xc1, 0xb1, 0xac, 0x98, - 0xc5, 0xe8, 0xb3, 0x89, 0x04, 0xe9, 0x2f, 0x74, 0xea, 0x61, 0xbd, 0x24, 0xcf, 0x9a, 0x2e, 0x42, - 0x85, 0xce, 0x99, 0x29, 0xd3, 0xbb, 0x76, 0xb3, 0xa8, 0x93, 0x85, 0xf0, 0x09, 0x78, 0x62, 0x7b, - 0xb9, 0x7d, 0x7c, 0xa8, 0xe7, 0x06, 0x88, 0x8c, 0xf8, 0x61, 0xc2, 0x25, 0x49, 0x82, 0xbb, 0xbb, - 0x24, 0xc9, 0x9a, 0x51, 0x19, 0x06, 0x6a, 0xdc, 0xd7, 0xa5, 0xd8, 0x7d, 0x0b, 0xe3, 0x8e, 0x2e, - 0x6a, 0x03, 0x16, 0x0e, 0x2e, 0x82, 0xc1, 0xac, 0x0b, 0x23, 0x5a, 0xc7, 0x3c, 0xd0, 0xc9, 0xb3, - 0x43, 0x0f, 0x3e, 0xad, 0x0b, 0x1e, 0xe8, 0x04, 0xfa, 0x71, 0x0b, 0x12, 0x8f, 0x6a, 0x94, 0x52, - 0xce, 0xca, 0x55, 0xca, 0x9d, 0x85, 0xbe, 0xc0, 0x6f, 0x90, 0x64, 0xf6, 0x6d, 0xec, 0x37, 0x08, - 0x66, 0x18, 0x4a, 0x11, 0xc5, 0xaa, 0x96, 0x51, 0xfd, 0x1a, 0x29, 0x2e, 0x88, 0x8f, 0x42, 0x7f, - 0x83, 0xec, 0x92, 0x46, 0x32, 0x49, 0xe2, 0x2a, 0x05, 0x62, 0x8e, 0xb3, 0x7f, 0xb9, 0x0f, 0x4e, - 0x77, 0x8c, 0xa7, 0x45, 0x2f, 0x63, 0x5b, 0x4e, 0x44, 0x6e, 0x39, 0x7b, 0xc9, 0x1c, 0x66, 0x97, - 0x38, 0x18, 0x4b, 0x3c, 0x7b, 0x62, 0xca, 0xf3, 0x83, 0x24, 0x54, 0x98, 0x22, 0x2d, 0x88, 0xc0, - 0x9a, 0x2a, 0xb1, 0xe2, 0xfd, 0x50, 0x89, 0x3d, 0x07, 0x10, 0x86, 0x0d, 0xee, 0x16, 0x58, 0x17, - 0x6f, 0x57, 0xe3, 0x3c, 0x32, 0xd5, 0x55, 0x81, 0xc1, 0x1a, 0x15, 0x5a, 0x82, 0xc9, 0x56, 0xe0, - 0x47, 0x5c, 0x23, 0xbc, 0xc4, 0x3d, 0x67, 0xfb, 0xcd, 0x50, 0x46, 0x95, 0x04, 0x1e, 0xa7, 0x4a, - 0xa0, 0x17, 0x61, 0x44, 0x84, 0x37, 0xaa, 0xf8, 0x7e, 0x43, 0x28, 0xa1, 0x94, 0x33, 0x69, 0x35, - 0x46, 0x61, 0x9d, 0x4e, 0x2b, 0xc6, 0xd4, 0xcc, 0x83, 0x99, 0xc5, 0xb8, 0xaa, 0x59, 0xa3, 0x4b, - 0x84, 0x42, 0x1f, 0xea, 0x29, 0x14, 0x7a, 0xac, 0x96, 0x1b, 0xee, 0xd9, 0xea, 0x09, 0x5d, 0x15, - 0x59, 0x5f, 0xed, 0x83, 0x69, 0x31, 0x71, 0x1e, 0xf4, 0x74, 0xb9, 0x96, 0x9e, 0x2e, 0xf7, 0x43, - 0x71, 0xf7, 0xfe, 0x9c, 0x39, 0xea, 0x39, 0xf3, 0xa3, 0x16, 0x98, 0x92, 0x1a, 0xfa, 0x9f, 0x72, - 0x93, 0x40, 0xbe, 0x98, 0x2b, 0xf9, 0xc5, 0x71, 0x92, 0xdf, 0x5d, 0x3a, 0x48, 0xfb, 0x8f, 0x2d, - 0x78, 0xa4, 0x2b, 0x47, 0xb4, 0x0c, 0xc3, 0x4c, 0x9c, 0xd4, 0x2e, 0x7a, 0x4f, 0x28, 0xcf, 0x7a, - 0x89, 0xc8, 0x91, 0x6e, 0xe3, 0x92, 0x68, 0x39, 0x95, 0x6d, 0xf3, 0xc9, 0x8c, 0x6c, 0x9b, 0xc7, - 0x8d, 0xee, 0xb9, 0xc7, 0x74, 0x9b, 0x5f, 0xa4, 0x27, 0x8e, 0xf9, 0x72, 0xee, 0x43, 0x86, 0xd2, - 0xd1, 0x4e, 0x28, 0x1d, 0x91, 0x49, 0xad, 0x9d, 0x21, 0x1f, 0x85, 0x49, 0x16, 0xf7, 0x90, 0xbd, - 0xf3, 0x10, 0x4f, 0xee, 0x0a, 0xb1, 0x2f, 0xf7, 0x6a, 0x02, 0x87, 0x53, 0xd4, 0xf6, 0x5f, 0x16, - 0x61, 0x80, 0x2f, 0xbf, 0x23, 0xb8, 0x5e, 0x3e, 0x0d, 0xc3, 0x6e, 0xb3, 0xd9, 0xe6, 0x09, 0x14, - 0xfb, 0x63, 0xcf, 0xe0, 0xb2, 0x04, 0xe2, 0x18, 0x8f, 0x56, 0x84, 0xbe, 0xbb, 0x43, 0x68, 0x65, - 0xde, 0xf0, 0xb9, 0x25, 0x27, 0x72, 0xb8, 0xac, 0xa4, 0xce, 0xd9, 0x58, 0x33, 0x8e, 0x3e, 0x05, - 0x10, 0x46, 0x81, 0xeb, 0x6d, 0x51, 0x98, 0x88, 0xbf, 0xff, 0x54, 0x07, 0x6e, 0x55, 0x45, 0xcc, - 0x79, 0xc6, 0x7b, 0x8e, 0x42, 0x60, 0x8d, 0x23, 0x9a, 0x33, 0x4e, 0xfa, 0xd9, 0xc4, 0xd8, 0x01, - 0xe7, 0x1a, 0x8f, 0xd9, 0xec, 0x4b, 0x30, 0xac, 0x98, 0x77, 0xd3, 0x7e, 0x8d, 0xea, 0x62, 0xd1, - 0x47, 0x60, 0x22, 0xd1, 0xb6, 0x43, 0x29, 0xcf, 0x7e, 0xc5, 0x82, 0x09, 0xde, 0x98, 0x65, 0x6f, - 0x57, 0x9c, 0x06, 0x77, 0xe0, 0x58, 0x23, 0x63, 0x57, 0x16, 0xc3, 0xdf, 0xfb, 0x2e, 0xae, 0x94, - 0x65, 0x59, 0x58, 0x9c, 0x59, 0x07, 0x3a, 0x4f, 0x57, 0x1c, 0xdd, 0x75, 0x9d, 0x86, 0x88, 0xa1, - 0x30, 0xca, 0x57, 0x1b, 0x87, 0x61, 0x85, 0xb5, 0xff, 0xd4, 0x82, 0x29, 0xde, 0xf2, 0x2b, 0x64, - 0x4f, 0xed, 0x4d, 0xdf, 0xca, 0xb6, 0x8b, 0xd4, 0xbd, 0x85, 0x9c, 0xd4, 0xbd, 0xfa, 0xa7, 0x15, - 0x3b, 0x7e, 0xda, 0x57, 0x2c, 0x10, 0x33, 0xe4, 0x08, 0xf4, 0x19, 0xdf, 0x65, 0xea, 0x33, 0x66, - 0xf3, 0x17, 0x41, 0x8e, 0x22, 0xe3, 0xef, 0x2d, 0x98, 0xe4, 0x04, 0xb1, 0xad, 0xfe, 0x5b, 0x3a, - 0x0e, 0x0b, 0xe6, 0x17, 0x65, 0x3a, 0x5f, 0x5e, 0x21, 0x7b, 0x1b, 0x7e, 0xc5, 0x89, 0xb6, 0xb3, - 0x3f, 0xca, 0x18, 0xac, 0xbe, 0x8e, 0x83, 0x55, 0x97, 0x0b, 0xc8, 0x48, 0x37, 0xd7, 0x25, 0x08, - 0xc1, 0x61, 0xd3, 0xcd, 0xd9, 0x7f, 0x65, 0x01, 0xe2, 0xd5, 0x18, 0x82, 0x1b, 0x15, 0x87, 0x18, - 0x54, 0x3b, 0xe8, 0xe2, 0xad, 0x49, 0x61, 0xb0, 0x46, 0x75, 0x5f, 0xba, 0x27, 0xe1, 0x70, 0x51, - 0xec, 0xee, 0x70, 0x71, 0x88, 0x1e, 0xfd, 0xca, 0x20, 0x24, 0x5f, 0xf6, 0xa1, 0xeb, 0x30, 0x5a, - 0x73, 0x5a, 0xce, 0x4d, 0xb7, 0xe1, 0x46, 0x2e, 0x09, 0x3b, 0x79, 0x63, 0x2d, 0x6a, 0x74, 0xc2, - 0x44, 0xae, 0x41, 0xb0, 0xc1, 0x07, 0xcd, 0x01, 0xb4, 0x02, 0x77, 0xd7, 0x6d, 0x90, 0x2d, 0xa6, - 0x76, 0x61, 0x51, 0x5b, 0xb8, 0x6b, 0x98, 0x84, 0x62, 0x8d, 0x22, 0x23, 0x54, 0x43, 0xf1, 0x01, - 0x87, 0x6a, 0x80, 0x23, 0x0b, 0xd5, 0xd0, 0x77, 0xa8, 0x50, 0x0d, 0x43, 0x87, 0x0e, 0xd5, 0xd0, - 0xdf, 0x53, 0xa8, 0x06, 0x0c, 0x27, 0xa4, 0xec, 0x49, 0xff, 0xaf, 0xb8, 0x0d, 0x22, 0x2e, 0x1c, - 0x3c, 0xd4, 0xcc, 0xec, 0xdd, 0xfd, 0xd2, 0x09, 0x9c, 0x49, 0x81, 0x73, 0x4a, 0xa2, 0x8f, 0xc1, - 0x8c, 0xd3, 0x68, 0xf8, 0xb7, 0xd4, 0xa0, 0x2e, 0x87, 0x35, 0xa7, 0xc1, 0x4d, 0x20, 0x83, 0x8c, - 0xeb, 0xa9, 0xbb, 0xfb, 0xa5, 0x99, 0xf9, 0x1c, 0x1a, 0x9c, 0x5b, 0x1a, 0xbd, 0x06, 0xc3, 0xad, - 0xc0, 0xaf, 0xad, 0x69, 0xcf, 0x8f, 0xcf, 0xd0, 0x0e, 0xac, 0x48, 0xe0, 0xc1, 0x7e, 0x69, 0x4c, - 0xfd, 0x61, 0x07, 0x7e, 0x5c, 0x20, 0x23, 0xf6, 0xc2, 0xc8, 0x83, 0x8e, 0xbd, 0x30, 0x7a, 0xbf, - 0x63, 0x2f, 0xec, 0xc0, 0x74, 0x95, 0x04, 0xae, 0xd3, 0x70, 0xef, 0x50, 0x99, 0x5c, 0xee, 0x81, - 0x1b, 0x30, 0x1c, 0x24, 0x76, 0xfd, 0x9e, 0x42, 0x2a, 0x6b, 0x59, 0xc5, 0xe4, 0x2e, 0x1f, 0x33, - 0xb2, 0xff, 0xab, 0x05, 0x83, 0xe2, 0xb5, 0xe0, 0x11, 0x48, 0xa6, 0xf3, 0x86, 0xe1, 0xa3, 0x94, - 0x3d, 0x28, 0xac, 0x31, 0xb9, 0x26, 0x8f, 0x72, 0xc2, 0xe4, 0xf1, 0x48, 0x27, 0x26, 0x9d, 0x8d, - 0x1d, 0xff, 0x67, 0x91, 0xde, 0x10, 0x8c, 0x77, 0xeb, 0x0f, 0xbe, 0x0b, 0xd6, 0x61, 0x30, 0x14, - 0xef, 0xa6, 0x0b, 0xf9, 0x2f, 0x4e, 0x92, 0x83, 0x18, 0x7b, 0xea, 0x89, 0x97, 0xd2, 0x92, 0x49, - 0xe6, 0x83, 0xec, 0xe2, 0x03, 0x7c, 0x90, 0xdd, 0xed, 0x65, 0x7f, 0xdf, 0xfd, 0x78, 0xd9, 0x6f, - 0x7f, 0x9d, 0x9d, 0xce, 0x3a, 0xfc, 0x08, 0x04, 0xb7, 0x4b, 0xe6, 0x39, 0x6e, 0x77, 0x98, 0x59, - 0xa2, 0x51, 0x39, 0x02, 0xdc, 0x2f, 0x59, 0x70, 0x3a, 0xe3, 0xab, 0x34, 0x69, 0xee, 0x19, 0x18, - 0x72, 0xda, 0x75, 0x57, 0xad, 0x65, 0xcd, 0xfc, 0x39, 0x2f, 0xe0, 0x58, 0x51, 0xa0, 0x45, 0x98, - 0x22, 0xb7, 0x5b, 0x2e, 0x37, 0x16, 0xeb, 0x0e, 0xce, 0x45, 0xfe, 0xc4, 0x74, 0x39, 0x89, 0xc4, - 0x69, 0x7a, 0x15, 0xe8, 0xaa, 0x98, 0x1b, 0xe8, 0xea, 0x17, 0x2c, 0x18, 0x51, 0x2f, 0x87, 0x1f, - 0x78, 0x6f, 0x7f, 0xd4, 0xec, 0xed, 0x87, 0x3b, 0xf4, 0x76, 0x4e, 0x37, 0xff, 0x51, 0x41, 0xb5, - 0xb7, 0xe2, 0x07, 0x51, 0x0f, 0x52, 0xe2, 0xbd, 0x3f, 0xce, 0xb8, 0x08, 0x23, 0x4e, 0xab, 0x25, - 0x11, 0xd2, 0xcb, 0x8e, 0x05, 0xc8, 0x8f, 0xc1, 0x58, 0xa7, 0x51, 0x6f, 0x45, 0x8a, 0xb9, 0x6f, - 0x45, 0xea, 0x00, 0x91, 0x13, 0x6c, 0x91, 0x88, 0xc2, 0x84, 0x53, 0x70, 0xfe, 0x7e, 0xd3, 0x8e, - 0xdc, 0xc6, 0x9c, 0xeb, 0x45, 0x61, 0x14, 0xcc, 0x95, 0xbd, 0xe8, 0x6a, 0xc0, 0xaf, 0xa9, 0x5a, - 0xa8, 0x38, 0xc5, 0x0b, 0x6b, 0x7c, 0x65, 0x94, 0x0c, 0x56, 0x47, 0xbf, 0xe9, 0xae, 0xb1, 0x2e, - 0xe0, 0x58, 0x51, 0xd8, 0x2f, 0xb1, 0xd3, 0x87, 0xf5, 0xe9, 0xe1, 0xc2, 0xa4, 0xfd, 0xf5, 0xa8, - 0x1a, 0x0d, 0x66, 0x78, 0x5d, 0xd2, 0x83, 0xb1, 0x75, 0xde, 0xec, 0x69, 0xc5, 0xfa, 0xab, 0xcb, - 0x38, 0x62, 0x1b, 0xfa, 0x44, 0xca, 0x05, 0xe7, 0xd9, 0x2e, 0xa7, 0xc6, 0x21, 0x9c, 0x6e, 0x58, - 0xb6, 0x2c, 0x96, 0x4b, 0xa8, 0x5c, 0x11, 0xeb, 0x42, 0xcb, 0x96, 0x25, 0x10, 0x38, 0xa6, 0xa1, - 0x02, 0x9b, 0xfa, 0x13, 0xce, 0xa0, 0x38, 0xa8, 0xb2, 0xa2, 0x0e, 0xb1, 0x46, 0x81, 0x2e, 0x08, - 0xa5, 0x05, 0xb7, 0x3d, 0x3c, 0x9c, 0x50, 0x5a, 0xc8, 0xee, 0xd2, 0x34, 0x4d, 0x17, 0x61, 0x84, - 0xdc, 0x8e, 0x48, 0xe0, 0x39, 0x0d, 0x5a, 0x43, 0x7f, 0x1c, 0x07, 0x74, 0x39, 0x06, 0x63, 0x9d, - 0x06, 0x6d, 0xc0, 0x44, 0xc8, 0x75, 0x79, 0x2a, 0x94, 0x3f, 0xd7, 0x89, 0x3e, 0xa5, 0xde, 0x6c, - 0x9b, 0xe8, 0x03, 0x06, 0xe2, 0xbb, 0x93, 0x8c, 0x64, 0x91, 0x64, 0x81, 0x5e, 0x87, 0xf1, 0x86, - 0xef, 0xd4, 0x17, 0x9c, 0x86, 0xe3, 0xd5, 0x58, 0xff, 0x0c, 0x99, 0x39, 0xd7, 0x57, 0x0d, 0x2c, - 0x4e, 0x50, 0x53, 0x01, 0x51, 0x87, 0x88, 0x70, 0x73, 0x8e, 0xb7, 0x45, 0xc2, 0x99, 0x61, 0xf6, - 0x55, 0x4c, 0x40, 0x5c, 0xcd, 0xa1, 0xc1, 0xb9, 0xa5, 0xd1, 0xcb, 0x30, 0x2a, 0x3f, 0x5f, 0x0b, - 0xfc, 0x12, 0x3f, 0xbb, 0xd1, 0x70, 0xd8, 0xa0, 0x44, 0x21, 0x1c, 0x97, 0xff, 0x37, 0x02, 0x67, - 0x73, 0xd3, 0xad, 0x89, 0x68, 0x08, 0xfc, 0x89, 0xf2, 0x47, 0xe4, 0x7b, 0xc8, 0xe5, 0x2c, 0xa2, - 0x83, 0xfd, 0xd2, 0x29, 0xd1, 0x6b, 0x99, 0x78, 0x9c, 0xcd, 0x1b, 0xad, 0xc1, 0xf4, 0x36, 0x71, - 0x1a, 0xd1, 0xf6, 0xe2, 0x36, 0xa9, 0xed, 0xc8, 0x05, 0xc7, 0xa4, 0x46, 0xed, 0x79, 0xca, 0xe5, - 0x34, 0x09, 0xce, 0x2a, 0x87, 0xde, 0x86, 0x99, 0x56, 0xfb, 0x66, 0xc3, 0x0d, 0xb7, 0xd7, 0xfd, - 0x88, 0x39, 0x3a, 0xcd, 0xd7, 0xeb, 0x01, 0x09, 0xf9, 0x0b, 0x56, 0x76, 0xf4, 0xca, 0x60, 0x3d, - 0x95, 0x1c, 0x3a, 0x9c, 0xcb, 0x01, 0xdd, 0x81, 0xe3, 0x89, 0x89, 0x20, 0xa2, 0x6e, 0x8c, 0xe7, - 0x27, 0xf2, 0xa9, 0x66, 0x15, 0x10, 0x01, 0x6c, 0xb2, 0x50, 0x38, 0xbb, 0x0a, 0xf4, 0x0a, 0x80, - 0xdb, 0x5a, 0x71, 0x9a, 0x6e, 0x83, 0x5e, 0x47, 0xa7, 0xd9, 0x1c, 0xa1, 0x57, 0x13, 0x28, 0x57, - 0x24, 0x94, 0xee, 0xcd, 0xe2, 0xdf, 0x1e, 0xd6, 0xa8, 0xd1, 0x2a, 0x8c, 0x8b, 0x7f, 0x7b, 0x62, - 0x48, 0xa7, 0x54, 0xce, 0xc7, 0x71, 0x59, 0x42, 0x8d, 0x63, 0x02, 0x82, 0x13, 0x65, 0xd1, 0x16, - 0x9c, 0x96, 0x09, 0x27, 0xf5, 0xf9, 0x29, 0xc7, 0x20, 0x64, 0xd9, 0x73, 0x86, 0xf8, 0xcb, 0x97, - 0xf9, 0x4e, 0x84, 0xb8, 0x33, 0x1f, 0x7a, 0xae, 0xeb, 0xd3, 0x9c, 0xbf, 0x6b, 0x3e, 0x1e, 0x47, - 0x4e, 0x5c, 0x4d, 0x22, 0x71, 0x9a, 0x1e, 0xf9, 0x70, 0xdc, 0xf5, 0xb2, 0x66, 0xf5, 0x09, 0xc6, - 0xe8, 0xc3, 0xfc, 0x49, 0x77, 0xe7, 0x19, 0x9d, 0x89, 0xc7, 0xd9, 0x7c, 0x51, 0x19, 0xa6, 0x23, - 0x0e, 0x58, 0x72, 0x43, 0x9e, 0x9c, 0x83, 0x5e, 0xfb, 0x1e, 0xe2, 0x29, 0xf1, 0xe9, 0x6c, 0xde, - 0x48, 0xa3, 0x71, 0x56, 0x99, 0x77, 0xe7, 0xa6, 0xf8, 0x27, 0x16, 0x2d, 0xad, 0x09, 0xfa, 0xe8, - 0xd3, 0x30, 0xaa, 0xf7, 0x8f, 0x10, 0x5a, 0xce, 0x65, 0xcb, 0xc1, 0xda, 0xf6, 0xc2, 0xaf, 0x09, - 0x6a, 0x0b, 0xd1, 0x71, 0xd8, 0xe0, 0x88, 0x6a, 0x19, 0xa1, 0x18, 0x2e, 0xf4, 0x26, 0x14, 0xf5, - 0xee, 0xa5, 0x47, 0x20, 0x7b, 0xe5, 0xa0, 0x55, 0x18, 0xaa, 0x35, 0x5c, 0xe2, 0x45, 0xe5, 0x4a, - 0xa7, 0x80, 0x96, 0x8b, 0x82, 0x46, 0x2c, 0x45, 0x91, 0x53, 0x87, 0xc3, 0xb0, 0xe2, 0x60, 0xbf, - 0x0c, 0x23, 0xd5, 0x06, 0x21, 0x2d, 0xfe, 0xda, 0x08, 0x3d, 0xc9, 0x2e, 0x26, 0x4c, 0xb4, 0xb4, - 0x98, 0x68, 0xa9, 0xdf, 0x39, 0x98, 0x50, 0x29, 0xf1, 0xf6, 0xef, 0x14, 0xa0, 0xd4, 0x25, 0xb5, - 0x53, 0xc2, 0xde, 0x66, 0xf5, 0x64, 0x6f, 0x9b, 0x87, 0x89, 0xf8, 0x9f, 0xae, 0xca, 0x53, 0x2e, - 0xbb, 0xd7, 0x4d, 0x34, 0x4e, 0xd2, 0xf7, 0xfc, 0xfa, 0x42, 0x37, 0xd9, 0xf5, 0x75, 0x7d, 0x3f, - 0x64, 0x98, 0xea, 0xfb, 0x7b, 0xbf, 0x7b, 0xe7, 0x9a, 0x5d, 0xed, 0xaf, 0x17, 0xe0, 0xb8, 0xea, - 0xc2, 0xef, 0xdc, 0x8e, 0xbb, 0x96, 0xee, 0xb8, 0xfb, 0x60, 0xb4, 0xb6, 0xaf, 0xc2, 0x00, 0x8f, - 0xed, 0xd9, 0x83, 0xcc, 0xff, 0xa8, 0x19, 0x72, 0x5c, 0x89, 0x99, 0x46, 0xd8, 0xf1, 0x1f, 0xb2, - 0x60, 0x22, 0xf1, 0x8c, 0x0f, 0x61, 0xed, 0xad, 0xf7, 0xbd, 0xc8, 0xe5, 0x59, 0x12, 0xff, 0x59, - 0xe8, 0xdb, 0xf6, 0xc3, 0x28, 0xe9, 0xd1, 0x72, 0xd9, 0x0f, 0x23, 0xcc, 0x30, 0xf6, 0x9f, 0x59, - 0xd0, 0xbf, 0xe1, 0xb8, 0x5e, 0x24, 0xad, 0x1f, 0x56, 0x8e, 0xf5, 0xa3, 0x97, 0xef, 0x42, 0x2f, - 0xc2, 0x00, 0xd9, 0xdc, 0x24, 0xb5, 0x48, 0x8c, 0xaa, 0x8c, 0xf9, 0x30, 0xb0, 0xcc, 0xa0, 0x54, - 0x08, 0x65, 0x95, 0xf1, 0xbf, 0x58, 0x10, 0xa3, 0x1b, 0x30, 0x1c, 0xb9, 0x4d, 0x32, 0x5f, 0xaf, - 0x0b, 0x9f, 0x80, 0x7b, 0x08, 0x54, 0xb2, 0x21, 0x19, 0xe0, 0x98, 0x97, 0xfd, 0xa5, 0x02, 0x40, - 0x1c, 0xb0, 0xac, 0xdb, 0x27, 0x2e, 0xa4, 0xac, 0xc5, 0xe7, 0x32, 0xac, 0xc5, 0x28, 0x66, 0x98, - 0x61, 0x2a, 0x56, 0xdd, 0x54, 0xec, 0xa9, 0x9b, 0xfa, 0x0e, 0xd3, 0x4d, 0x8b, 0x30, 0x15, 0x07, - 0x5c, 0x33, 0xe3, 0x4d, 0xb2, 0xf3, 0x7b, 0x23, 0x89, 0xc4, 0x69, 0x7a, 0x9b, 0xc0, 0x59, 0x15, - 0x77, 0x4a, 0x9c, 0x85, 0xcc, 0xe1, 0x5d, 0xb7, 0xbe, 0x77, 0xe9, 0xa7, 0xd8, 0x1c, 0x5e, 0xc8, - 0x35, 0x87, 0xff, 0x94, 0x05, 0xc7, 0x92, 0xf5, 0xb0, 0xd7, 0xe1, 0x5f, 0xb0, 0xe0, 0x78, 0x9c, - 0xd9, 0x24, 0xed, 0x82, 0xf0, 0x42, 0xc7, 0x58, 0x5a, 0x39, 0x2d, 0x8e, 0x83, 0x8b, 0xac, 0x65, - 0xb1, 0xc6, 0xd9, 0x35, 0xda, 0xff, 0xa5, 0x0f, 0x66, 0xf2, 0x82, 0x70, 0xb1, 0xf7, 0x30, 0xce, - 0xed, 0xea, 0x0e, 0xb9, 0x25, 0x5e, 0x1d, 0xc4, 0xef, 0x61, 0x38, 0x18, 0x4b, 0x7c, 0x32, 0x99, - 0x4d, 0xa1, 0xc7, 0x64, 0x36, 0xdb, 0x30, 0x75, 0x6b, 0x9b, 0x78, 0xd7, 0xbc, 0xd0, 0x89, 0xdc, - 0x70, 0xd3, 0x65, 0x06, 0x74, 0x3e, 0x6f, 0x64, 0x42, 0xf6, 0xa9, 0x1b, 0x49, 0x82, 0x83, 0xfd, - 0xd2, 0x69, 0x03, 0x10, 0x37, 0x99, 0x6f, 0x24, 0x38, 0xcd, 0x34, 0x9d, 0x0b, 0xa8, 0xef, 0x01, - 0xe7, 0x02, 0x6a, 0xba, 0xc2, 0xed, 0x46, 0x3e, 0x76, 0x60, 0xd7, 0xd6, 0x35, 0x05, 0xc5, 0x1a, - 0x05, 0xfa, 0x24, 0x20, 0x3d, 0x99, 0x9b, 0x11, 0x03, 0xf5, 0xd9, 0xbb, 0xfb, 0x25, 0xb4, 0x9e, - 0xc2, 0x1e, 0xec, 0x97, 0xa6, 0x29, 0xb4, 0xec, 0xd1, 0xeb, 0x6f, 0x1c, 0x38, 0x2e, 0x83, 0x11, - 0xba, 0x01, 0x93, 0x14, 0xca, 0x56, 0x94, 0x0c, 0xb0, 0xca, 0xaf, 0xac, 0x4f, 0xdf, 0xdd, 0x2f, - 0x4d, 0xae, 0x27, 0x70, 0x79, 0xac, 0x53, 0x4c, 0x32, 0x52, 0x02, 0x0d, 0xf5, 0x9a, 0x12, 0xc8, - 0xfe, 0x82, 0x05, 0x27, 0xe9, 0x01, 0x57, 0x5f, 0xcd, 0xb1, 0xa2, 0x3b, 0x2d, 0x97, 0xdb, 0x69, - 0xc4, 0x51, 0xc3, 0x74, 0x75, 0x95, 0x32, 0xb7, 0xd2, 0x28, 0x2c, 0xdd, 0xe1, 0x77, 0x5c, 0xaf, - 0x9e, 0xdc, 0xe1, 0xaf, 0xb8, 0x5e, 0x1d, 0x33, 0x8c, 0x3a, 0xb2, 0x8a, 0xb9, 0x6f, 0x2e, 0xbe, - 0x4a, 0xd7, 0x2a, 0x6d, 0xcb, 0xb7, 0xb4, 0x19, 0xe8, 0x69, 0xdd, 0xa6, 0x2a, 0xdc, 0x27, 0x73, - 0xed, 0xa9, 0x9f, 0xb7, 0x40, 0xbc, 0xd1, 0xee, 0xe1, 0x4c, 0x7e, 0x0b, 0x46, 0x77, 0xd3, 0x89, - 0x2e, 0xcf, 0xe6, 0x3f, 0x5a, 0x17, 0xe1, 0xeb, 0x95, 0x88, 0x6e, 0x24, 0xb5, 0x34, 0x78, 0xd9, - 0x75, 0x10, 0xd8, 0x25, 0xc2, 0xac, 0x1a, 0xdd, 0x5b, 0xf3, 0x1c, 0x40, 0x9d, 0xd1, 0xb2, 0xec, - 0xd7, 0x05, 0x53, 0xe2, 0x5a, 0x52, 0x18, 0xac, 0x51, 0xd9, 0x3f, 0x57, 0x84, 0x11, 0x99, 0x58, - 0xb1, 0xed, 0xf5, 0xa2, 0x7b, 0x3c, 0x54, 0xa6, 0x75, 0xf4, 0x36, 0x4c, 0x05, 0xa4, 0xd6, 0x0e, - 0x42, 0x77, 0x97, 0x48, 0xb4, 0x58, 0x24, 0x73, 0x3c, 0xa8, 0x7e, 0x02, 0x79, 0xc0, 0x02, 0x39, - 0x25, 0x80, 0xcc, 0x68, 0x9c, 0x66, 0x84, 0x2e, 0xc0, 0x30, 0x53, 0xbd, 0x57, 0x62, 0x85, 0xb0, - 0x52, 0x7c, 0xad, 0x49, 0x04, 0x8e, 0x69, 0xd8, 0xe5, 0xa0, 0x7d, 0x93, 0x91, 0x27, 0xde, 0x2b, - 0x57, 0x39, 0x18, 0x4b, 0x3c, 0xfa, 0x18, 0x4c, 0xf2, 0x72, 0x81, 0xdf, 0x72, 0xb6, 0xb8, 0x49, - 0xb0, 0x5f, 0x05, 0x81, 0x99, 0x5c, 0x4b, 0xe0, 0x0e, 0xf6, 0x4b, 0xc7, 0x92, 0x30, 0xd6, 0xec, - 0x14, 0x17, 0xe6, 0xf9, 0xc7, 0x2b, 0xa1, 0x67, 0x46, 0xca, 0x61, 0x30, 0x46, 0x61, 0x9d, 0xce, - 0xfe, 0x3b, 0x0b, 0xa6, 0xb4, 0xa1, 0xea, 0x39, 0xaf, 0x81, 0xd1, 0x49, 0x85, 0x1e, 0x3a, 0xe9, - 0x70, 0x31, 0x09, 0x32, 0x47, 0xb8, 0xef, 0x3e, 0x8d, 0xb0, 0xfd, 0x69, 0x40, 0xe9, 0xac, 0x9d, - 0xe8, 0x0d, 0xee, 0x2e, 0xef, 0x06, 0xa4, 0xde, 0xc9, 0xe0, 0xaf, 0xc7, 0x77, 0x91, 0xef, 0x2b, - 0x79, 0x29, 0xac, 0xca, 0xdb, 0x3f, 0xdc, 0x07, 0x93, 0xc9, 0x88, 0x12, 0xe8, 0x32, 0x0c, 0x70, - 0x29, 0x5d, 0xb0, 0xef, 0xe0, 0x4f, 0xa6, 0xc5, 0xa1, 0x60, 0xf2, 0x8a, 0x10, 0xf4, 0x45, 0x79, - 0xf4, 0x36, 0x8c, 0xd4, 0xfd, 0x5b, 0xde, 0x2d, 0x27, 0xa8, 0xcf, 0x57, 0xca, 0x62, 0x87, 0xc8, - 0x54, 0x40, 0x2d, 0xc5, 0x64, 0x7a, 0x6c, 0x0b, 0xe6, 0x3b, 0x11, 0xa3, 0xb0, 0xce, 0x0e, 0x6d, - 0xb0, 0x44, 0x34, 0x9b, 0xee, 0xd6, 0x9a, 0xd3, 0xea, 0xf4, 0x76, 0x6a, 0x51, 0x12, 0x69, 0x9c, - 0xc7, 0x44, 0xb6, 0x1a, 0x8e, 0xc0, 0x31, 0x23, 0xf4, 0x59, 0x98, 0x0e, 0x73, 0x4c, 0x62, 0x79, - 0x49, 0x9c, 0x3b, 0x59, 0x89, 0xb8, 0x32, 0x25, 0xcb, 0x78, 0x96, 0x55, 0x0d, 0xba, 0x0d, 0x48, - 0xa8, 0x9e, 0x37, 0x82, 0x76, 0x18, 0x2d, 0xb4, 0xbd, 0x7a, 0x43, 0x26, 0xaa, 0xc9, 0x4e, 0xf3, - 0x9e, 0xa2, 0xd6, 0xea, 0x66, 0x11, 0x66, 0xd3, 0x14, 0x38, 0xa3, 0x0e, 0xfb, 0xf3, 0x7d, 0x30, - 0x2b, 0xd3, 0xe4, 0x66, 0xbc, 0x11, 0xf9, 0x9c, 0x95, 0x78, 0x24, 0xf2, 0x4a, 0xfe, 0x46, 0xff, - 0xc0, 0x9e, 0x8a, 0x7c, 0x31, 0xfd, 0x54, 0xe4, 0xb5, 0x43, 0x36, 0xe3, 0xbe, 0x3d, 0x18, 0xf9, - 0x8e, 0x7d, 0xe5, 0xf1, 0xe5, 0x63, 0x60, 0x1c, 0xcd, 0x08, 0xf3, 0xf0, 0xdd, 0x15, 0x69, 0x3a, - 0xca, 0xb9, 0xfe, 0x5f, 0x16, 0x34, 0xc6, 0x61, 0x3f, 0x2a, 0x83, 0x7c, 0xb3, 0x7d, 0x56, 0xf1, - 0xa1, 0x3c, 0x49, 0xb3, 0x15, 0xed, 0x2d, 0xb9, 0x81, 0x68, 0x71, 0x26, 0xcf, 0x65, 0x41, 0x93, - 0xe6, 0x29, 0x31, 0x58, 0xf1, 0x41, 0xbb, 0x30, 0xb5, 0x55, 0x23, 0x89, 0xcc, 0xf2, 0xc5, 0xfc, - 0x75, 0x7b, 0x69, 0x71, 0xb9, 0x43, 0x5a, 0x79, 0x76, 0xf9, 0x4b, 0x91, 0xe0, 0x74, 0x15, 0x2c, - 0xab, 0xbd, 0x73, 0x2b, 0x5c, 0x6e, 0x38, 0x61, 0xe4, 0xd6, 0x16, 0x1a, 0x7e, 0x6d, 0xa7, 0x1a, - 0xf9, 0x81, 0x4c, 0x6b, 0x97, 0x79, 0xf7, 0x9a, 0xbf, 0x51, 0x4d, 0xd1, 0xa7, 0xb3, 0xda, 0x67, - 0x51, 0xe1, 0xcc, 0xba, 0xd0, 0x3a, 0x0c, 0x6e, 0xb9, 0x11, 0x26, 0x2d, 0x5f, 0xec, 0x16, 0x99, - 0x5b, 0xe1, 0x25, 0x4e, 0x92, 0xce, 0x32, 0x2f, 0x10, 0x58, 0x32, 0x41, 0x6f, 0xa8, 0x43, 0x60, - 0x20, 0x5f, 0x01, 0x9b, 0xf6, 0xbd, 0xcb, 0x3c, 0x06, 0x5e, 0x87, 0xa2, 0xb7, 0x19, 0x76, 0x8a, - 0x18, 0xb3, 0xbe, 0x52, 0x4d, 0x67, 0x7f, 0x5f, 0x5f, 0xa9, 0x62, 0x5a, 0x90, 0x3d, 0x2e, 0x0d, - 0x6b, 0xa1, 0x2b, 0x12, 0xf4, 0x64, 0xbe, 0xb5, 0x2d, 0x57, 0x17, 0xab, 0xe5, 0x74, 0xc6, 0x7b, - 0x06, 0xc6, 0xbc, 0x38, 0xba, 0x0e, 0xc3, 0x5b, 0x7c, 0xe3, 0xdb, 0x0c, 0x45, 0xaa, 0xec, 0xcc, - 0xc3, 0xe8, 0x92, 0x24, 0x4a, 0xe7, 0xb9, 0x57, 0x28, 0x1c, 0xb3, 0x42, 0x9f, 0xb7, 0xe0, 0x78, - 0x32, 0xd7, 0x38, 0x7b, 0x12, 0x26, 0xdc, 0xd4, 0x5e, 0xec, 0x25, 0xf9, 0x3b, 0x2b, 0x60, 0x54, - 0xc8, 0xcc, 0x2f, 0x99, 0x64, 0x38, 0xbb, 0x3a, 0xda, 0xd1, 0xc1, 0xcd, 0x7a, 0xa7, 0x4c, 0x32, - 0x89, 0xf0, 0x39, 0xbc, 0xa3, 0xf1, 0xc2, 0x12, 0xa6, 0x05, 0xd1, 0x06, 0xc0, 0x66, 0x83, 0x88, - 0xb8, 0x84, 0xc2, 0x29, 0x2a, 0xf3, 0xf4, 0x5f, 0x51, 0x54, 0x32, 0x27, 0x15, 0x15, 0xb3, 0x63, - 0x28, 0xd6, 0xf8, 0xd0, 0xa9, 0x54, 0x73, 0xbd, 0x3a, 0x09, 0x98, 0x71, 0x2b, 0x67, 0x2a, 0x2d, - 0x32, 0x8a, 0xf4, 0x54, 0xe2, 0x70, 0x2c, 0x38, 0x30, 0x5e, 0xa4, 0xb5, 0xbd, 0x19, 0x76, 0x4a, - 0x8c, 0xb0, 0x48, 0x5a, 0xdb, 0x89, 0x09, 0xc5, 0x79, 0x31, 0x38, 0x16, 0x1c, 0xe8, 0x92, 0xd9, - 0xa4, 0x0b, 0x88, 0x04, 0x33, 0x13, 0xf9, 0x4b, 0x66, 0x85, 0x93, 0xa4, 0x97, 0x8c, 0x40, 0x60, - 0xc9, 0x04, 0x7d, 0xca, 0x94, 0x76, 0x26, 0x19, 0xcf, 0xa7, 0xbb, 0x48, 0x3b, 0x06, 0xdf, 0xce, - 0xf2, 0xce, 0x2b, 0x50, 0xd8, 0xac, 0x31, 0xa3, 0x58, 0x8e, 0xcd, 0x60, 0x65, 0xd1, 0xe0, 0xc6, - 0x02, 0x8d, 0xaf, 0x2c, 0xe2, 0xc2, 0x66, 0x8d, 0x4e, 0x7d, 0xe7, 0x4e, 0x3b, 0x20, 0x2b, 0x6e, - 0x83, 0x88, 0x24, 0x09, 0x99, 0x53, 0x7f, 0x5e, 0x12, 0xa5, 0xa7, 0xbe, 0x42, 0xe1, 0x98, 0x15, - 0xe5, 0x1b, 0xcb, 0x60, 0xd3, 0xf9, 0x7c, 0x95, 0xa8, 0x95, 0xe6, 0x9b, 0x29, 0x85, 0xed, 0xc0, - 0xd8, 0x6e, 0xd8, 0xda, 0x26, 0x72, 0x57, 0x64, 0xe6, 0xba, 0x9c, 0x78, 0x0a, 0xd7, 0x05, 0xa1, - 0x1b, 0x44, 0x6d, 0xa7, 0x91, 0xda, 0xc8, 0x99, 0x6a, 0xe5, 0xba, 0xce, 0x0c, 0x9b, 0xbc, 0xe9, - 0x44, 0x78, 0x87, 0x07, 0x3d, 0x63, 0x86, 0xbb, 0x9c, 0x89, 0x90, 0x11, 0x17, 0x8d, 0x4f, 0x04, - 0x81, 0xc0, 0x92, 0x89, 0xea, 0x6c, 0x76, 0x00, 0x9d, 0xe8, 0xd2, 0xd9, 0xa9, 0xf6, 0xc6, 0x9d, - 0xcd, 0x0e, 0x9c, 0x98, 0x15, 0x3b, 0x68, 0x5a, 0x19, 0x69, 0xd9, 0x99, 0xd9, 0x2e, 0xe7, 0xa0, - 0xe9, 0x96, 0xc6, 0x9d, 0x1f, 0x34, 0x59, 0x54, 0x38, 0xb3, 0x2e, 0xfa, 0x71, 0x2d, 0x19, 0xbf, - 0x4e, 0x24, 0x72, 0x78, 0x32, 0x27, 0xfc, 0x63, 0x3a, 0xc8, 0x1d, 0xff, 0x38, 0x85, 0xc2, 0x31, - 0x2b, 0x54, 0x87, 0xf1, 0x96, 0x11, 0x17, 0x95, 0x25, 0xa4, 0xc8, 0x91, 0x0b, 0xb2, 0x22, 0xa8, - 0x72, 0x0d, 0x91, 0x89, 0xc1, 0x09, 0x9e, 0xcc, 0x73, 0x8f, 0x3f, 0xf5, 0x63, 0xf9, 0x2a, 0x72, - 0x86, 0x3a, 0xe3, 0x35, 0x20, 0x1f, 0x6a, 0x81, 0xc0, 0x92, 0x09, 0xed, 0x0d, 0xf1, 0x40, 0xcd, - 0x0f, 0x59, 0xda, 0x97, 0x3c, 0x03, 0x7b, 0x96, 0x99, 0x48, 0x06, 0x03, 0x17, 0x28, 0x1c, 0xb3, - 0xa2, 0x3b, 0x39, 0x3d, 0xf0, 0x4e, 0xe5, 0xef, 0xe4, 0xc9, 0xe3, 0x8e, 0xed, 0xe4, 0xf4, 0xb0, - 0x2b, 0x8a, 0xa3, 0x4e, 0xc5, 0xae, 0x66, 0x29, 0x2b, 0x72, 0xda, 0xa5, 0x82, 0x5f, 0xa7, 0xdb, - 0xa5, 0x50, 0x38, 0x66, 0x65, 0xff, 0x70, 0x01, 0xce, 0x74, 0x5e, 0x6f, 0xb1, 0xed, 0xab, 0x12, - 0xfb, 0x1a, 0x25, 0x6c, 0x5f, 0x5c, 0x13, 0x13, 0x53, 0xf5, 0x1c, 0xce, 0xf6, 0x12, 0x4c, 0xa9, - 0x67, 0x84, 0x0d, 0xb7, 0xb6, 0xb7, 0x1e, 0x2b, 0xbf, 0x54, 0xe0, 0x97, 0x6a, 0x92, 0x00, 0xa7, - 0xcb, 0xa0, 0x79, 0x98, 0x30, 0x80, 0xe5, 0x25, 0x71, 0x6d, 0x8f, 0x93, 0x24, 0x98, 0x68, 0x9c, - 0xa4, 0xb7, 0x7f, 0xde, 0x82, 0x87, 0x72, 0xb2, 0x62, 0xf7, 0x1c, 0xad, 0x75, 0x13, 0x26, 0x5a, - 0x66, 0xd1, 0x2e, 0x01, 0xa6, 0x8d, 0xdc, 0xdb, 0xaa, 0xad, 0x09, 0x04, 0x4e, 0x32, 0xb5, 0x7f, - 0xb6, 0x00, 0xa7, 0x3b, 0xfa, 0xc5, 0x23, 0x0c, 0x27, 0xb6, 0x9a, 0xa1, 0xb3, 0x18, 0x90, 0x3a, - 0xf1, 0x22, 0xd7, 0x69, 0x54, 0x5b, 0xa4, 0xa6, 0x59, 0x2f, 0x99, 0x83, 0xf9, 0xa5, 0xb5, 0xea, - 0x7c, 0x9a, 0x02, 0xe7, 0x94, 0x44, 0x2b, 0x80, 0xd2, 0x18, 0x31, 0xc2, 0xec, 0x6a, 0x9a, 0xe6, - 0x87, 0x33, 0x4a, 0xa0, 0x97, 0x60, 0x4c, 0xf9, 0xdb, 0x6b, 0x23, 0xce, 0x36, 0x76, 0xac, 0x23, - 0xb0, 0x49, 0x87, 0x2e, 0xf2, 0xec, 0x39, 0x22, 0xcf, 0x92, 0x30, 0x75, 0x4e, 0xc8, 0xd4, 0x38, - 0x02, 0x8c, 0x75, 0x9a, 0x85, 0x97, 0x7f, 0xef, 0x9b, 0x67, 0x3e, 0xf0, 0x87, 0xdf, 0x3c, 0xf3, - 0x81, 0x3f, 0xfd, 0xe6, 0x99, 0x0f, 0x7c, 0xdf, 0xdd, 0x33, 0xd6, 0xef, 0xdd, 0x3d, 0x63, 0xfd, - 0xe1, 0xdd, 0x33, 0xd6, 0x9f, 0xde, 0x3d, 0x63, 0xfd, 0xfb, 0xbb, 0x67, 0xac, 0x2f, 0xfd, 0xc5, - 0x99, 0x0f, 0xbc, 0x85, 0xe2, 0xf8, 0xc7, 0x17, 0xe8, 0xe8, 0x5c, 0xd8, 0xbd, 0xf8, 0x3f, 0x02, - 0x00, 0x00, 0xff, 0xff, 0xfd, 0xca, 0x84, 0xba, 0xa5, 0x1e, 0x01, 0x00, + // 15836 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x69, 0x90, 0x1c, 0xc9, + 0x75, 0x18, 0xcc, 0xea, 0x9e, 0xf3, 0xcd, 0x9d, 0x83, 0x63, 0x30, 0x0b, 0xa0, 0xb1, 0xb5, 0xbb, + 0x58, 0xec, 0x35, 0x20, 0xf6, 0xe0, 0x82, 0xbb, 0xcb, 0x15, 0xe7, 0x04, 0x7a, 0x81, 0x19, 0xf4, + 0x66, 0x0f, 0x00, 0x72, 0xb9, 0xa4, 0x58, 0xe8, 0xce, 0x99, 0x29, 0x4e, 0x77, 0x55, 0x6f, 0x55, + 0xf5, 0x00, 0x83, 0x8f, 0x0a, 0x49, 0xd4, 0x27, 0x4a, 0xa4, 0xf4, 0x45, 0x30, 0xbe, 0xd0, 0x77, + 0x04, 0xa5, 0x50, 0x7c, 0xa1, 0x4f, 0x9f, 0x8e, 0x8f, 0x96, 0x6c, 0x9a, 0xb2, 0x2e, 0xea, 0xf2, + 0x15, 0x21, 0xd9, 0x0e, 0x59, 0x56, 0x84, 0x45, 0x85, 0x15, 0x1e, 0x99, 0x90, 0x23, 0x14, 0xfa, + 0x61, 0x49, 0x21, 0xfb, 0x87, 0x3d, 0x21, 0x5b, 0x8e, 0x3c, 0x2b, 0xb3, 0x8e, 0xee, 0x1e, 0x2c, + 0x30, 0x5c, 0x32, 0xf6, 0x5f, 0xf7, 0x7b, 0x2f, 0x5f, 0x66, 0xe5, 0xf9, 0xf2, 0xbd, 0x97, 0xef, + 0x81, 0xbd, 0x7d, 0x31, 0x9c, 0x73, 0xfd, 0xf3, 0x4e, 0xcb, 0x3d, 0x5f, 0xf3, 0x03, 0x72, 0x7e, + 0xe7, 0xc2, 0xf9, 0x4d, 0xe2, 0x91, 0xc0, 0x89, 0x48, 0x7d, 0xae, 0x15, 0xf8, 0x91, 0x8f, 0x10, + 0xa7, 0x99, 0x73, 0x5a, 0xee, 0x1c, 0xa5, 0x99, 0xdb, 0xb9, 0x30, 0xfb, 0xdc, 0xa6, 0x1b, 0x6d, + 0xb5, 0x6f, 0xcd, 0xd5, 0xfc, 0xe6, 0xf9, 0x4d, 0x7f, 0xd3, 0x3f, 0xcf, 0x48, 0x6f, 0xb5, 0x37, + 0xd8, 0x3f, 0xf6, 0x87, 0xfd, 0xe2, 0x2c, 0x66, 0x5f, 0x8c, 0xab, 0x69, 0x3a, 0xb5, 0x2d, 0xd7, + 0x23, 0xc1, 0xee, 0xf9, 0xd6, 0xf6, 0x26, 0xab, 0x37, 0x20, 0xa1, 0xdf, 0x0e, 0x6a, 0x24, 0x59, + 0x71, 0xc7, 0x52, 0xe1, 0xf9, 0x26, 0x89, 0x9c, 0x8c, 0xe6, 0xce, 0x9e, 0xcf, 0x2b, 0x15, 0xb4, + 0xbd, 0xc8, 0x6d, 0xa6, 0xab, 0xf9, 0x50, 0xb7, 0x02, 0x61, 0x6d, 0x8b, 0x34, 0x9d, 0x54, 0xb9, + 0x17, 0xf2, 0xca, 0xb5, 0x23, 0xb7, 0x71, 0xde, 0xf5, 0xa2, 0x30, 0x0a, 0x92, 0x85, 0xec, 0x6f, + 0x58, 0x70, 0x66, 0xfe, 0x66, 0x75, 0xb9, 0xe1, 0x84, 0x91, 0x5b, 0x5b, 0x68, 0xf8, 0xb5, 0xed, + 0x6a, 0xe4, 0x07, 0xe4, 0x86, 0xdf, 0x68, 0x37, 0x49, 0x95, 0x75, 0x04, 0x7a, 0x16, 0x86, 0x76, + 0xd8, 0xff, 0xf2, 0xd2, 0x8c, 0x75, 0xc6, 0x3a, 0x37, 0xbc, 0x30, 0xf9, 0xbb, 0x7b, 0xa5, 0x0f, + 0xdc, 0xdb, 0x2b, 0x0d, 0xdd, 0x10, 0x70, 0xac, 0x28, 0xd0, 0x59, 0x18, 0xd8, 0x08, 0xd7, 0x77, + 0x5b, 0x64, 0xa6, 0xc0, 0x68, 0xc7, 0x05, 0xed, 0xc0, 0x4a, 0x95, 0x42, 0xb1, 0xc0, 0xa2, 0xf3, + 0x30, 0xdc, 0x72, 0x82, 0xc8, 0x8d, 0x5c, 0xdf, 0x9b, 0x29, 0x9e, 0xb1, 0xce, 0xf5, 0x2f, 0x4c, + 0x09, 0xd2, 0xe1, 0x8a, 0x44, 0xe0, 0x98, 0x86, 0x36, 0x23, 0x20, 0x4e, 0xfd, 0x9a, 0xd7, 0xd8, + 0x9d, 0xe9, 0x3b, 0x63, 0x9d, 0x1b, 0x8a, 0x9b, 0x81, 0x05, 0x1c, 0x2b, 0x0a, 0xfb, 0xcb, 0x05, + 0x18, 0x9a, 0xdf, 0xd8, 0x70, 0x3d, 0x37, 0xda, 0x45, 0x37, 0x60, 0xd4, 0xf3, 0xeb, 0x44, 0xfe, + 0x67, 0x5f, 0x31, 0xf2, 0xfc, 0x99, 0xb9, 0xf4, 0x54, 0x9a, 0x5b, 0xd3, 0xe8, 0x16, 0x26, 0xef, + 0xed, 0x95, 0x46, 0x75, 0x08, 0x36, 0xf8, 0x20, 0x0c, 0x23, 0x2d, 0xbf, 0xae, 0xd8, 0x16, 0x18, + 0xdb, 0x52, 0x16, 0xdb, 0x4a, 0x4c, 0xb6, 0x30, 0x71, 0x6f, 0xaf, 0x34, 0xa2, 0x01, 0xb0, 0xce, + 0x04, 0xdd, 0x82, 0x09, 0xfa, 0xd7, 0x8b, 0x5c, 0xc5, 0xb7, 0xc8, 0xf8, 0x3e, 0x96, 0xc7, 0x57, + 0x23, 0x5d, 0x98, 0xbe, 0xb7, 0x57, 0x9a, 0x48, 0x00, 0x71, 0x92, 0xa1, 0xfd, 0xa3, 0x16, 0x4c, + 0xcc, 0xb7, 0x5a, 0xf3, 0x41, 0xd3, 0x0f, 0x2a, 0x81, 0xbf, 0xe1, 0x36, 0x08, 0x7a, 0x19, 0xfa, + 0x22, 0x3a, 0x6a, 0x7c, 0x84, 0x1f, 0x13, 0x5d, 0xdb, 0x47, 0xc7, 0x6a, 0x7f, 0xaf, 0x34, 0x9d, + 0x20, 0x67, 0x43, 0xc9, 0x0a, 0xa0, 0x8f, 0xc2, 0x64, 0xc3, 0xaf, 0x39, 0x8d, 0x2d, 0x3f, 0x8c, + 0x04, 0x56, 0x0c, 0xfd, 0x91, 0x7b, 0x7b, 0xa5, 0xc9, 0xab, 0x09, 0x1c, 0x4e, 0x51, 0xdb, 0x77, + 0x61, 0x7c, 0x3e, 0x8a, 0x9c, 0xda, 0x16, 0xa9, 0xf3, 0x09, 0x85, 0x5e, 0x84, 0x3e, 0xcf, 0x69, + 0xca, 0xc6, 0x9c, 0x91, 0x8d, 0x59, 0x73, 0x9a, 0xb4, 0x31, 0x93, 0xd7, 0x3d, 0xf7, 0x9d, 0xb6, + 0x98, 0xa4, 0x14, 0x86, 0x19, 0x35, 0x7a, 0x1e, 0xa0, 0x4e, 0x76, 0xdc, 0x1a, 0xa9, 0x38, 0xd1, + 0x96, 0x68, 0x03, 0x12, 0x65, 0x61, 0x49, 0x61, 0xb0, 0x46, 0x65, 0xdf, 0x81, 0xe1, 0xf9, 0x1d, + 0xdf, 0xad, 0x57, 0xfc, 0x7a, 0x88, 0xb6, 0x61, 0xa2, 0x15, 0x90, 0x0d, 0x12, 0x28, 0xd0, 0x8c, + 0x75, 0xa6, 0x78, 0x6e, 0xe4, 0xf9, 0x73, 0x99, 0x7d, 0x6f, 0x92, 0x2e, 0x7b, 0x51, 0xb0, 0xbb, + 0x70, 0x5c, 0xd4, 0x37, 0x91, 0xc0, 0xe2, 0x24, 0x67, 0xfb, 0x9f, 0x15, 0xe0, 0xe8, 0xfc, 0xdd, + 0x76, 0x40, 0x96, 0xdc, 0x70, 0x3b, 0xb9, 0xe0, 0xea, 0x6e, 0xb8, 0xbd, 0x16, 0xf7, 0x80, 0x9a, + 0xe9, 0x4b, 0x02, 0x8e, 0x15, 0x05, 0x7a, 0x0e, 0x06, 0xe9, 0xef, 0xeb, 0xb8, 0x2c, 0x3e, 0x79, + 0x5a, 0x10, 0x8f, 0x2c, 0x39, 0x91, 0xb3, 0xc4, 0x51, 0x58, 0xd2, 0xa0, 0x55, 0x18, 0xa9, 0xb1, + 0xfd, 0x61, 0x73, 0xd5, 0xaf, 0x13, 0x36, 0xb7, 0x86, 0x17, 0x9e, 0xa1, 0xe4, 0x8b, 0x31, 0x78, + 0x7f, 0xaf, 0x34, 0xc3, 0xdb, 0x26, 0x58, 0x68, 0x38, 0xac, 0x97, 0x47, 0xb6, 0x5a, 0xee, 0x7d, + 0x8c, 0x13, 0x64, 0x2c, 0xf5, 0x73, 0xda, 0xca, 0xed, 0x67, 0x2b, 0x77, 0x34, 0x7b, 0xd5, 0xa2, + 0x0b, 0xd0, 0xb7, 0xed, 0x7a, 0xf5, 0x99, 0x01, 0xc6, 0xeb, 0x14, 0x1d, 0xf3, 0x2b, 0xae, 0x57, + 0xdf, 0xdf, 0x2b, 0x4d, 0x19, 0xcd, 0xa1, 0x40, 0xcc, 0x48, 0xed, 0xff, 0x6c, 0x41, 0x89, 0xe1, + 0x56, 0xdc, 0x06, 0xa9, 0x90, 0x20, 0x74, 0xc3, 0x88, 0x78, 0x91, 0xd1, 0xa1, 0xcf, 0x03, 0x84, + 0xa4, 0x16, 0x90, 0x48, 0xeb, 0x52, 0x35, 0x31, 0xaa, 0x0a, 0x83, 0x35, 0x2a, 0xba, 0x3f, 0x85, + 0x5b, 0x4e, 0xc0, 0xe6, 0x97, 0xe8, 0x58, 0xb5, 0x3f, 0x55, 0x25, 0x02, 0xc7, 0x34, 0xc6, 0xfe, + 0x54, 0xec, 0xb6, 0x3f, 0xa1, 0x8f, 0xc0, 0x44, 0x5c, 0x59, 0xd8, 0x72, 0x6a, 0xb2, 0x03, 0xd9, + 0x0a, 0xae, 0x9a, 0x28, 0x9c, 0xa4, 0xb5, 0xff, 0x7f, 0x4b, 0x4c, 0x1e, 0xfa, 0xd5, 0xef, 0xf1, + 0x6f, 0xb5, 0x7f, 0xd5, 0x82, 0xc1, 0x05, 0xd7, 0xab, 0xbb, 0xde, 0x26, 0xfa, 0x34, 0x0c, 0xd1, + 0xa3, 0xb2, 0xee, 0x44, 0x8e, 0xd8, 0x86, 0x3f, 0xa8, 0xad, 0x2d, 0x75, 0x72, 0xcd, 0xb5, 0xb6, + 0x37, 0x29, 0x20, 0x9c, 0xa3, 0xd4, 0x74, 0xb5, 0x5d, 0xbb, 0xf5, 0x19, 0x52, 0x8b, 0x56, 0x49, + 0xe4, 0xc4, 0x9f, 0x13, 0xc3, 0xb0, 0xe2, 0x8a, 0xae, 0xc0, 0x40, 0xe4, 0x04, 0x9b, 0x24, 0x12, + 0xfb, 0x71, 0xe6, 0xbe, 0xc9, 0x4b, 0x62, 0xba, 0x22, 0x89, 0x57, 0x23, 0xf1, 0x29, 0xb5, 0xce, + 0x8a, 0x62, 0xc1, 0xc2, 0xfe, 0xef, 0x83, 0x70, 0x62, 0xb1, 0x5a, 0xce, 0x99, 0x57, 0x67, 0x61, + 0xa0, 0x1e, 0xb8, 0x3b, 0x24, 0x10, 0xfd, 0xac, 0xb8, 0x2c, 0x31, 0x28, 0x16, 0x58, 0x74, 0x11, + 0x46, 0xf9, 0xf9, 0x78, 0xd9, 0xf1, 0xea, 0xf1, 0xf6, 0x28, 0xa8, 0x47, 0x6f, 0x68, 0x38, 0x6c, + 0x50, 0x1e, 0x70, 0x52, 0x9d, 0x4d, 0x2c, 0xc6, 0xbc, 0xb3, 0xf7, 0x0b, 0x16, 0x4c, 0xf2, 0x6a, + 0xe6, 0xa3, 0x28, 0x70, 0x6f, 0xb5, 0x23, 0x12, 0xce, 0xf4, 0xb3, 0x9d, 0x6e, 0x31, 0xab, 0xb7, + 0x72, 0x7b, 0x60, 0xee, 0x46, 0x82, 0x0b, 0xdf, 0x04, 0x67, 0x44, 0xbd, 0x93, 0x49, 0x34, 0x4e, + 0x55, 0x8b, 0x7e, 0xc0, 0x82, 0xd9, 0x9a, 0xef, 0x45, 0x81, 0xdf, 0x68, 0x90, 0xa0, 0xd2, 0xbe, + 0xd5, 0x70, 0xc3, 0x2d, 0x3e, 0x4f, 0x31, 0xd9, 0x60, 0x3b, 0x41, 0xce, 0x18, 0x2a, 0x22, 0x31, + 0x86, 0xa7, 0xef, 0xed, 0x95, 0x66, 0x17, 0x73, 0x59, 0xe1, 0x0e, 0xd5, 0xa0, 0x6d, 0x40, 0xf4, + 0x64, 0xaf, 0x46, 0xce, 0x26, 0x89, 0x2b, 0x1f, 0xec, 0xbd, 0xf2, 0x63, 0xf7, 0xf6, 0x4a, 0x68, + 0x2d, 0xc5, 0x02, 0x67, 0xb0, 0x45, 0xef, 0xc0, 0x11, 0x0a, 0x4d, 0x7d, 0xeb, 0x50, 0xef, 0xd5, + 0xcd, 0xdc, 0xdb, 0x2b, 0x1d, 0x59, 0xcb, 0x60, 0x82, 0x33, 0x59, 0xa3, 0xef, 0xb3, 0xe0, 0x44, + 0xfc, 0xf9, 0xcb, 0x77, 0x5a, 0x8e, 0x57, 0x8f, 0x2b, 0x1e, 0xee, 0xbd, 0x62, 0xba, 0x27, 0x9f, + 0x58, 0xcc, 0xe3, 0x84, 0xf3, 0x2b, 0x41, 0x1e, 0x4c, 0xd3, 0xa6, 0x25, 0xeb, 0x86, 0xde, 0xeb, + 0x3e, 0x7e, 0x6f, 0xaf, 0x34, 0xbd, 0x96, 0xe6, 0x81, 0xb3, 0x18, 0xcf, 0x2e, 0xc2, 0xd1, 0xcc, + 0xd9, 0x89, 0x26, 0xa1, 0xb8, 0x4d, 0xb8, 0x10, 0x38, 0x8c, 0xe9, 0x4f, 0x74, 0x04, 0xfa, 0x77, + 0x9c, 0x46, 0x5b, 0x2c, 0x4c, 0xcc, 0xff, 0xbc, 0x52, 0xb8, 0x68, 0xd9, 0xff, 0xbc, 0x08, 0x13, + 0x8b, 0xd5, 0xf2, 0x7d, 0xad, 0x7a, 0xfd, 0xd8, 0x2b, 0x74, 0x3c, 0xf6, 0xe2, 0x43, 0xb4, 0x98, + 0x7b, 0x88, 0x7e, 0x6f, 0xc6, 0x92, 0xed, 0x63, 0x4b, 0xf6, 0xc3, 0x39, 0x4b, 0xf6, 0x01, 0x2f, + 0xd4, 0x9d, 0x9c, 0x59, 0xdb, 0xcf, 0x06, 0x30, 0x53, 0x42, 0x62, 0xb2, 0x5f, 0x72, 0xab, 0x3d, + 0xe0, 0xd4, 0x7d, 0x30, 0xe3, 0x58, 0x83, 0xd1, 0x45, 0xa7, 0xe5, 0xdc, 0x72, 0x1b, 0x6e, 0xe4, + 0x92, 0x10, 0x3d, 0x09, 0x45, 0xa7, 0x5e, 0x67, 0xd2, 0xdd, 0xf0, 0xc2, 0xd1, 0x7b, 0x7b, 0xa5, + 0xe2, 0x7c, 0x9d, 0x8a, 0x19, 0xa0, 0xa8, 0x76, 0x31, 0xa5, 0x40, 0x4f, 0x43, 0x5f, 0x3d, 0xf0, + 0x5b, 0x33, 0x05, 0x46, 0x49, 0x57, 0x79, 0xdf, 0x52, 0xe0, 0xb7, 0x12, 0xa4, 0x8c, 0xc6, 0xfe, + 0x9d, 0x02, 0x9c, 0x5c, 0x24, 0xad, 0xad, 0x95, 0x6a, 0xce, 0x79, 0x71, 0x0e, 0x86, 0x9a, 0xbe, + 0xe7, 0x46, 0x7e, 0x10, 0x8a, 0xaa, 0xd9, 0x8c, 0x58, 0x15, 0x30, 0xac, 0xb0, 0xe8, 0x0c, 0xf4, + 0xb5, 0x62, 0x21, 0x76, 0x54, 0x0a, 0xc0, 0x4c, 0x7c, 0x65, 0x18, 0x4a, 0xd1, 0x0e, 0x49, 0x20, + 0x66, 0x8c, 0xa2, 0xb8, 0x1e, 0x92, 0x00, 0x33, 0x4c, 0x2c, 0x09, 0x50, 0x19, 0x41, 0x9c, 0x08, + 0x09, 0x49, 0x80, 0x62, 0xb0, 0x46, 0x85, 0x2a, 0x30, 0x1c, 0x26, 0x46, 0xb6, 0xa7, 0xa5, 0x39, + 0xc6, 0x44, 0x05, 0x35, 0x92, 0x31, 0x13, 0xe3, 0x04, 0x1b, 0xe8, 0x2a, 0x2a, 0x7c, 0xbd, 0x00, + 0x88, 0x77, 0xe1, 0xb7, 0x59, 0xc7, 0x5d, 0x4f, 0x77, 0x5c, 0xef, 0x4b, 0xe2, 0x41, 0xf5, 0xde, + 0x7f, 0xb1, 0xe0, 0xe4, 0xa2, 0xeb, 0xd5, 0x49, 0x90, 0x33, 0x01, 0x1f, 0xce, 0x55, 0xfe, 0x60, + 0x42, 0x8a, 0x31, 0xc5, 0xfa, 0x1e, 0xc0, 0x14, 0xb3, 0xff, 0xca, 0x02, 0xc4, 0x3f, 0xfb, 0x3d, + 0xf7, 0xb1, 0xd7, 0xd3, 0x1f, 0xfb, 0x00, 0xa6, 0x85, 0xfd, 0xf7, 0x2d, 0x18, 0x59, 0x6c, 0x38, + 0x6e, 0x53, 0x7c, 0xea, 0x22, 0x4c, 0x49, 0xbd, 0x15, 0x03, 0x6b, 0xb2, 0x3f, 0xdd, 0xdc, 0xa6, + 0x70, 0x12, 0x89, 0xd3, 0xf4, 0xe8, 0x13, 0x70, 0xc2, 0x00, 0xae, 0x93, 0x66, 0xab, 0xe1, 0x44, + 0xfa, 0xad, 0x80, 0x9d, 0xfe, 0x38, 0x8f, 0x08, 0xe7, 0x97, 0xb7, 0xaf, 0xc2, 0xf8, 0x62, 0xc3, + 0x25, 0x5e, 0x54, 0xae, 0x2c, 0xfa, 0xde, 0x86, 0xbb, 0x89, 0x5e, 0x81, 0xf1, 0xc8, 0x6d, 0x12, + 0xbf, 0x1d, 0x55, 0x49, 0xcd, 0xf7, 0xd8, 0x5d, 0xdb, 0x3a, 0xd7, 0xbf, 0x80, 0xee, 0xed, 0x95, + 0xc6, 0xd7, 0x0d, 0x0c, 0x4e, 0x50, 0xda, 0x3f, 0x43, 0x77, 0xda, 0x46, 0x3b, 0x8c, 0x48, 0xb0, + 0x1e, 0xb4, 0xc3, 0x68, 0xa1, 0x4d, 0xa5, 0xe5, 0x4a, 0xe0, 0xd3, 0x0e, 0x74, 0x7d, 0x0f, 0x9d, + 0x34, 0x14, 0x08, 0x43, 0x52, 0x79, 0x20, 0x14, 0x05, 0x73, 0x00, 0xa1, 0xbb, 0xe9, 0x91, 0x40, + 0xfb, 0xb4, 0x71, 0xb6, 0xb8, 0x15, 0x14, 0x6b, 0x14, 0xa8, 0x01, 0x63, 0x0d, 0xe7, 0x16, 0x69, + 0x54, 0x49, 0x83, 0xd4, 0x22, 0x3f, 0x10, 0x1a, 0x99, 0x17, 0x7a, 0xbb, 0xb9, 0x5c, 0xd5, 0x8b, + 0x2e, 0x4c, 0xdd, 0xdb, 0x2b, 0x8d, 0x19, 0x20, 0x6c, 0x32, 0xa7, 0x9b, 0x9d, 0xdf, 0xa2, 0x5f, + 0xe1, 0x34, 0xf4, 0xeb, 0xf2, 0x35, 0x01, 0xc3, 0x0a, 0xab, 0x36, 0xbb, 0xbe, 0xbc, 0xcd, 0xce, + 0xfe, 0x13, 0xba, 0x34, 0xfc, 0x66, 0xcb, 0xf7, 0x88, 0x17, 0x2d, 0xfa, 0x5e, 0x9d, 0xeb, 0xd2, + 0x5e, 0x31, 0x94, 0x3d, 0x67, 0x13, 0xca, 0x9e, 0x63, 0xe9, 0x12, 0x9a, 0xbe, 0xe7, 0xc3, 0x30, + 0x10, 0x46, 0x4e, 0xd4, 0x0e, 0x45, 0xc7, 0x3d, 0x2a, 0x17, 0x4a, 0x95, 0x41, 0xf7, 0xf7, 0x4a, + 0x13, 0xaa, 0x18, 0x07, 0x61, 0x51, 0x00, 0x3d, 0x05, 0x83, 0x4d, 0x12, 0x86, 0xce, 0xa6, 0x14, + 0x74, 0x26, 0x44, 0xd9, 0xc1, 0x55, 0x0e, 0xc6, 0x12, 0x8f, 0x1e, 0x83, 0x7e, 0x12, 0x04, 0x7e, + 0x20, 0xbe, 0x6d, 0x4c, 0x10, 0xf6, 0x2f, 0x53, 0x20, 0xe6, 0x38, 0xfb, 0x5f, 0x5b, 0x30, 0xa1, + 0xda, 0xca, 0xeb, 0x3a, 0x84, 0x0b, 0xe6, 0x5b, 0x00, 0x35, 0xf9, 0x81, 0x21, 0x13, 0x0c, 0x46, + 0x9e, 0x3f, 0x9b, 0x29, 0x83, 0xa5, 0xba, 0x31, 0xe6, 0xac, 0x40, 0x21, 0xd6, 0xb8, 0xd9, 0xbf, + 0x69, 0xc1, 0x74, 0xe2, 0x8b, 0xae, 0xba, 0x61, 0x84, 0xde, 0x4e, 0x7d, 0xd5, 0x5c, 0x8f, 0x93, + 0xcf, 0x0d, 0xf9, 0x37, 0xa9, 0x5d, 0x4a, 0x42, 0xb4, 0x2f, 0xba, 0x0c, 0xfd, 0x6e, 0x44, 0x9a, + 0xf2, 0x63, 0x1e, 0xeb, 0xf8, 0x31, 0xbc, 0x55, 0xf1, 0x88, 0x94, 0x69, 0x49, 0xcc, 0x19, 0xd8, + 0xbf, 0x53, 0x84, 0x61, 0xbe, 0xbe, 0x57, 0x9d, 0xd6, 0x21, 0x8c, 0xc5, 0x33, 0x30, 0xec, 0x36, + 0x9b, 0xed, 0xc8, 0xb9, 0x25, 0x4e, 0xea, 0x21, 0xbe, 0x6b, 0x96, 0x25, 0x10, 0xc7, 0x78, 0x54, + 0x86, 0x3e, 0xd6, 0x14, 0xfe, 0x95, 0x4f, 0x66, 0x7f, 0xa5, 0x68, 0xfb, 0xdc, 0x92, 0x13, 0x39, + 0x5c, 0x48, 0x56, 0xeb, 0x8a, 0x82, 0x30, 0x63, 0x81, 0x1c, 0x80, 0x5b, 0xae, 0xe7, 0x04, 0xbb, + 0x14, 0x36, 0x53, 0x64, 0x0c, 0x9f, 0xeb, 0xcc, 0x70, 0x41, 0xd1, 0x73, 0xb6, 0xea, 0xc3, 0x62, + 0x04, 0xd6, 0x98, 0xce, 0xbe, 0x0c, 0xc3, 0x8a, 0xf8, 0x20, 0xb2, 0xee, 0xec, 0x47, 0x60, 0x22, + 0x51, 0x57, 0xb7, 0xe2, 0xa3, 0xba, 0xa8, 0xfc, 0xeb, 0x6c, 0xcb, 0x10, 0xad, 0x5e, 0xf6, 0x76, + 0xc4, 0x11, 0x73, 0x17, 0x8e, 0x34, 0x32, 0x0e, 0x29, 0x31, 0xae, 0xbd, 0x1f, 0x6a, 0x27, 0xc5, + 0x67, 0x1f, 0xc9, 0xc2, 0xe2, 0xcc, 0x3a, 0x8c, 0x1d, 0xb1, 0xd0, 0x69, 0x47, 0xa4, 0xfb, 0xdd, + 0x11, 0xd5, 0xf8, 0x2b, 0x64, 0x57, 0x6d, 0xaa, 0xdf, 0xca, 0xe6, 0x9f, 0xe2, 0xbd, 0xcf, 0xb7, + 0xcb, 0x11, 0xc1, 0xa0, 0x78, 0x85, 0xec, 0xf2, 0xa1, 0xd0, 0xbf, 0xae, 0xd8, 0xf1, 0xeb, 0xbe, + 0x6a, 0xc1, 0x98, 0xfa, 0xba, 0x43, 0xd8, 0x17, 0x16, 0xcc, 0x7d, 0xe1, 0x54, 0xc7, 0x09, 0x9e, + 0xb3, 0x23, 0x7c, 0xbd, 0x00, 0x27, 0x14, 0x0d, 0xbd, 0xf6, 0xf1, 0x3f, 0x62, 0x56, 0x9d, 0x87, + 0x61, 0x4f, 0x29, 0x40, 0x2d, 0x53, 0xf3, 0x18, 0xab, 0x3f, 0x63, 0x1a, 0x7a, 0xe4, 0x79, 0xf1, + 0xa1, 0x3d, 0xaa, 0x5b, 0x06, 0xc4, 0xe1, 0xbe, 0x00, 0xc5, 0xb6, 0x5b, 0x17, 0x07, 0xcc, 0x07, + 0x65, 0x6f, 0x5f, 0x2f, 0x2f, 0xed, 0xef, 0x95, 0x1e, 0xcd, 0x33, 0x92, 0xd1, 0x93, 0x2d, 0x9c, + 0xbb, 0x5e, 0x5e, 0xc2, 0xb4, 0x30, 0x9a, 0x87, 0x09, 0x29, 0xca, 0xdc, 0xa0, 0x92, 0xb4, 0xef, + 0x89, 0x73, 0x48, 0xa9, 0xf7, 0xb1, 0x89, 0xc6, 0x49, 0x7a, 0xb4, 0x04, 0x93, 0xdb, 0xed, 0x5b, + 0xa4, 0x41, 0x22, 0xfe, 0xc1, 0x57, 0x08, 0x57, 0x7e, 0x0f, 0xc7, 0x97, 0xee, 0x2b, 0x09, 0x3c, + 0x4e, 0x95, 0xb0, 0xff, 0x8e, 0x9d, 0x07, 0xa2, 0xf7, 0x34, 0xf9, 0xe6, 0x5b, 0x39, 0x9d, 0x7b, + 0x99, 0x15, 0x57, 0xc8, 0xee, 0xba, 0x4f, 0xe5, 0x90, 0xec, 0x59, 0x61, 0xcc, 0xf9, 0xbe, 0x8e, + 0x73, 0xfe, 0x97, 0x0a, 0x70, 0x54, 0xf5, 0x80, 0x21, 0xdf, 0x7f, 0xbb, 0xf7, 0xc1, 0x05, 0x18, + 0xa9, 0x93, 0x0d, 0xa7, 0xdd, 0x88, 0x94, 0x25, 0xa6, 0x9f, 0x1b, 0x07, 0x97, 0x62, 0x30, 0xd6, + 0x69, 0x0e, 0xd0, 0x6d, 0xbf, 0x30, 0xc6, 0x0e, 0xe2, 0xc8, 0xa1, 0x73, 0x5c, 0xad, 0x1a, 0x2b, + 0x77, 0xd5, 0x3c, 0x06, 0xfd, 0x6e, 0x93, 0x0a, 0x66, 0x05, 0x53, 0xde, 0x2a, 0x53, 0x20, 0xe6, + 0x38, 0xf4, 0x04, 0x0c, 0xd6, 0xfc, 0x66, 0xd3, 0xf1, 0xea, 0xec, 0xc8, 0x1b, 0x5e, 0x18, 0xa1, + 0xb2, 0xdb, 0x22, 0x07, 0x61, 0x89, 0xa3, 0xc2, 0xb7, 0x13, 0x6c, 0x72, 0xf5, 0x94, 0x10, 0xbe, + 0xe7, 0x83, 0xcd, 0x10, 0x33, 0x28, 0xbd, 0x5d, 0xdf, 0xf6, 0x83, 0x6d, 0xd7, 0xdb, 0x5c, 0x72, + 0x03, 0xb1, 0x24, 0xd4, 0x59, 0x78, 0x53, 0x61, 0xb0, 0x46, 0x85, 0x56, 0xa0, 0xbf, 0xe5, 0x07, + 0x51, 0x38, 0x33, 0xc0, 0xba, 0xfb, 0xd1, 0x9c, 0x8d, 0x88, 0x7f, 0x6d, 0xc5, 0x0f, 0xa2, 0xf8, + 0x03, 0xe8, 0xbf, 0x10, 0xf3, 0xe2, 0xe8, 0x2a, 0x0c, 0x12, 0x6f, 0x67, 0x25, 0xf0, 0x9b, 0x33, + 0xd3, 0xf9, 0x9c, 0x96, 0x39, 0x09, 0x9f, 0x66, 0xb1, 0x8c, 0x2a, 0xc0, 0x58, 0xb2, 0x40, 0x1f, + 0x86, 0x22, 0xf1, 0x76, 0x66, 0x06, 0x19, 0xa7, 0xd9, 0x1c, 0x4e, 0x37, 0x9c, 0x20, 0xde, 0xf3, + 0x97, 0xbd, 0x1d, 0x4c, 0xcb, 0xa0, 0x8f, 0xc3, 0xb0, 0xdc, 0x30, 0x42, 0xa1, 0xf7, 0xcd, 0x9c, + 0xb0, 0x72, 0x9b, 0xc1, 0xe4, 0x9d, 0xb6, 0x1b, 0x90, 0x26, 0xf1, 0xa2, 0x30, 0xde, 0x21, 0x25, + 0x36, 0xc4, 0x31, 0x37, 0x54, 0x83, 0xd1, 0x80, 0x84, 0xee, 0x5d, 0x52, 0xf1, 0x1b, 0x6e, 0x6d, + 0x77, 0xe6, 0x38, 0x6b, 0xde, 0x53, 0x1d, 0xbb, 0x0c, 0x6b, 0x05, 0x62, 0xbb, 0x84, 0x0e, 0xc5, + 0x06, 0x53, 0xf4, 0x26, 0x8c, 0x05, 0x24, 0x8c, 0x9c, 0x20, 0x12, 0xb5, 0xcc, 0x28, 0x3b, 0xe2, + 0x18, 0xd6, 0x11, 0xfc, 0x3a, 0x11, 0x57, 0x13, 0x63, 0xb0, 0xc9, 0x01, 0x7d, 0x5c, 0x1a, 0x49, + 0x56, 0xfd, 0xb6, 0x17, 0x85, 0x33, 0xc3, 0xac, 0xdd, 0x99, 0xd6, 0xf4, 0x1b, 0x31, 0x5d, 0xd2, + 0x8a, 0xc2, 0x0b, 0x63, 0x83, 0x15, 0xfa, 0x24, 0x8c, 0xf1, 0xff, 0xdc, 0x08, 0x1c, 0xce, 0x1c, + 0x65, 0xbc, 0xcf, 0xe4, 0xf3, 0xe6, 0x84, 0x0b, 0x47, 0x05, 0xf3, 0x31, 0x1d, 0x1a, 0x62, 0x93, + 0x1b, 0xc2, 0x30, 0xd6, 0x70, 0x77, 0x88, 0x47, 0xc2, 0xb0, 0x12, 0xf8, 0xb7, 0x88, 0xd0, 0x69, + 0x9f, 0xc8, 0x36, 0x1a, 0xfb, 0xb7, 0x88, 0xb8, 0x04, 0xea, 0x65, 0xb0, 0xc9, 0x02, 0x5d, 0x87, + 0xf1, 0x80, 0x38, 0x75, 0x37, 0x66, 0x3a, 0xd2, 0x8d, 0x29, 0xbb, 0x38, 0x63, 0xa3, 0x10, 0x4e, + 0x30, 0x41, 0xd7, 0x60, 0x94, 0xf5, 0x79, 0xbb, 0xc5, 0x99, 0x1e, 0xeb, 0xc6, 0x94, 0xb9, 0x40, + 0x54, 0xb5, 0x22, 0xd8, 0x60, 0x80, 0xde, 0x80, 0xe1, 0x86, 0xbb, 0x41, 0x6a, 0xbb, 0xb5, 0x06, + 0x99, 0x19, 0x65, 0xdc, 0x32, 0x37, 0xc3, 0xab, 0x92, 0x88, 0xcb, 0xe7, 0xea, 0x2f, 0x8e, 0x8b, + 0xa3, 0x1b, 0x70, 0x2c, 0x22, 0x41, 0xd3, 0xf5, 0x1c, 0xba, 0x89, 0x89, 0x2b, 0x21, 0xb3, 0xe5, + 0x8f, 0xb1, 0xd9, 0x75, 0x5a, 0x8c, 0xc6, 0xb1, 0xf5, 0x4c, 0x2a, 0x9c, 0x53, 0x1a, 0xdd, 0x81, + 0x99, 0x0c, 0x0c, 0x9f, 0xb7, 0x47, 0x18, 0xe7, 0xd7, 0x04, 0xe7, 0x99, 0xf5, 0x1c, 0xba, 0xfd, + 0x0e, 0x38, 0x9c, 0xcb, 0x1d, 0x5d, 0x83, 0x09, 0xb6, 0x73, 0x56, 0xda, 0x8d, 0x86, 0xa8, 0x70, + 0x9c, 0x55, 0xf8, 0x84, 0x94, 0x23, 0xca, 0x26, 0x7a, 0x7f, 0xaf, 0x04, 0xf1, 0x3f, 0x9c, 0x2c, + 0x8d, 0x6e, 0x31, 0xb3, 0x71, 0x3b, 0x70, 0xa3, 0x5d, 0xba, 0xaa, 0xc8, 0x9d, 0x68, 0x66, 0xa2, + 0xa3, 0x0a, 0x4d, 0x27, 0x55, 0xb6, 0x65, 0x1d, 0x88, 0x93, 0x0c, 0xe9, 0x51, 0x10, 0x46, 0x75, + 0xd7, 0x9b, 0x99, 0xe4, 0xf7, 0x29, 0xb9, 0x93, 0x56, 0x29, 0x10, 0x73, 0x1c, 0x33, 0x19, 0xd3, + 0x1f, 0xd7, 0xe8, 0x89, 0x3b, 0xc5, 0x08, 0x63, 0x93, 0xb1, 0x44, 0xe0, 0x98, 0x86, 0x0a, 0xc1, + 0x51, 0xb4, 0x3b, 0x83, 0x18, 0xa9, 0xda, 0x10, 0xd7, 0xd7, 0x3f, 0x8e, 0x29, 0xdc, 0xbe, 0x05, + 0xe3, 0x6a, 0x9b, 0x60, 0x7d, 0x82, 0x4a, 0xd0, 0xcf, 0xc4, 0x3e, 0xa1, 0xf0, 0x1d, 0xa6, 0x4d, + 0x60, 0x22, 0x21, 0xe6, 0x70, 0xd6, 0x04, 0xf7, 0x2e, 0x59, 0xd8, 0x8d, 0x08, 0xd7, 0x45, 0x14, + 0xb5, 0x26, 0x48, 0x04, 0x8e, 0x69, 0xec, 0xff, 0xc1, 0xc5, 0xe7, 0xf8, 0x94, 0xe8, 0xe1, 0x5c, + 0x7c, 0x16, 0x86, 0x98, 0xab, 0x8a, 0x1f, 0x70, 0x7b, 0x72, 0x7f, 0x2c, 0x30, 0x5f, 0x16, 0x70, + 0xac, 0x28, 0xd0, 0xab, 0x30, 0x56, 0xd3, 0x2b, 0x10, 0x87, 0xba, 0xda, 0x46, 0x8c, 0xda, 0xb1, + 0x49, 0x8b, 0x2e, 0xc2, 0x10, 0xf3, 0xca, 0xaa, 0xf9, 0x0d, 0x21, 0x6d, 0x4a, 0xc9, 0x64, 0xa8, + 0x22, 0xe0, 0xfb, 0xda, 0x6f, 0xac, 0xa8, 0xd1, 0x59, 0x18, 0xa0, 0x4d, 0x28, 0x57, 0xc4, 0x71, + 0xaa, 0x74, 0x97, 0x97, 0x19, 0x14, 0x0b, 0xac, 0xfd, 0x9b, 0x16, 0x93, 0xa5, 0xd2, 0x7b, 0x3e, + 0xba, 0xcc, 0x0e, 0x0d, 0x76, 0x82, 0x68, 0xba, 0xc3, 0xc7, 0xb5, 0x93, 0x40, 0xe1, 0xf6, 0x13, + 0xff, 0xb1, 0x51, 0x12, 0xbd, 0x95, 0x3c, 0x19, 0xb8, 0x40, 0xf1, 0xa2, 0xec, 0x82, 0xe4, 0xe9, + 0xf0, 0x48, 0x7c, 0xc4, 0xd1, 0xf6, 0x74, 0x3a, 0x22, 0xec, 0xff, 0xbd, 0xa0, 0xcd, 0x92, 0x6a, + 0xe4, 0x44, 0x04, 0x55, 0x60, 0xf0, 0xb6, 0xe3, 0x46, 0xae, 0xb7, 0x29, 0xe4, 0xbe, 0xce, 0x07, + 0x1d, 0x2b, 0x74, 0x93, 0x17, 0xe0, 0xd2, 0x8b, 0xf8, 0x83, 0x25, 0x1b, 0xca, 0x31, 0x68, 0x7b, + 0x1e, 0xe5, 0x58, 0xe8, 0x95, 0x23, 0xe6, 0x05, 0x38, 0x47, 0xf1, 0x07, 0x4b, 0x36, 0xe8, 0x6d, + 0x00, 0xb9, 0x43, 0x90, 0xba, 0xd0, 0x1d, 0x3e, 0xdb, 0x9d, 0xe9, 0xba, 0x2a, 0xc3, 0x95, 0x93, + 0xf1, 0x7f, 0xac, 0xf1, 0xb3, 0x23, 0x6d, 0x4c, 0xf5, 0xc6, 0xa0, 0x4f, 0xd0, 0x25, 0xea, 0x04, + 0x11, 0xa9, 0xcf, 0x47, 0xa2, 0x73, 0x9e, 0xee, 0xed, 0x72, 0xb8, 0xee, 0x36, 0x89, 0xbe, 0x9c, + 0x05, 0x13, 0x1c, 0xf3, 0xb3, 0x7f, 0xa5, 0x08, 0x33, 0x79, 0xcd, 0xa5, 0x8b, 0x86, 0xdc, 0x71, + 0xa3, 0x45, 0x2a, 0xd6, 0x5a, 0xe6, 0xa2, 0x59, 0x16, 0x70, 0xac, 0x28, 0xe8, 0xec, 0x0d, 0xdd, + 0x4d, 0x79, 0xb7, 0xef, 0x8f, 0x67, 0x6f, 0x95, 0x41, 0xb1, 0xc0, 0x52, 0xba, 0x80, 0x38, 0xa1, + 0x70, 0x17, 0xd4, 0x66, 0x39, 0x66, 0x50, 0x2c, 0xb0, 0xba, 0x96, 0xb1, 0xaf, 0x8b, 0x96, 0xd1, + 0xe8, 0xa2, 0xfe, 0x07, 0xdb, 0x45, 0xe8, 0x53, 0x00, 0x1b, 0xae, 0xe7, 0x86, 0x5b, 0x8c, 0xfb, + 0xc0, 0x81, 0xb9, 0x2b, 0xa1, 0x78, 0x45, 0x71, 0xc1, 0x1a, 0x47, 0xf4, 0x12, 0x8c, 0xa8, 0x0d, + 0xa4, 0xbc, 0xc4, 0x9c, 0x15, 0x34, 0xe7, 0xaf, 0x78, 0x37, 0x5d, 0xc2, 0x3a, 0x9d, 0xfd, 0x99, + 0xe4, 0x7c, 0x11, 0x2b, 0x40, 0xeb, 0x5f, 0xab, 0xd7, 0xfe, 0x2d, 0x74, 0xee, 0x5f, 0xfb, 0xc7, + 0x86, 0x60, 0xc2, 0xa8, 0xac, 0x1d, 0xf6, 0xb0, 0xe7, 0x5e, 0xa2, 0x07, 0x90, 0x13, 0x11, 0xb1, + 0xfe, 0xec, 0xee, 0x4b, 0x45, 0x3f, 0xa4, 0xe8, 0x0a, 0xe0, 0xe5, 0xd1, 0xa7, 0x60, 0xb8, 0xe1, + 0x84, 0x4c, 0x63, 0x49, 0xc4, 0xba, 0xeb, 0x85, 0x59, 0x7c, 0x21, 0x74, 0xc2, 0x48, 0x3b, 0xf5, + 0x39, 0xef, 0x98, 0x25, 0x3d, 0x29, 0xa9, 0x7c, 0x25, 0xfd, 0x51, 0x55, 0x23, 0xa8, 0x10, 0xb6, + 0x8b, 0x39, 0x0e, 0x5d, 0x64, 0x5b, 0x2b, 0x9d, 0x15, 0x8b, 0x54, 0x1a, 0x65, 0xd3, 0xac, 0xdf, + 0x10, 0xb2, 0x15, 0x0e, 0x1b, 0x94, 0xf1, 0x9d, 0x6c, 0xa0, 0xc3, 0x9d, 0xec, 0x29, 0x18, 0x64, + 0x3f, 0xd4, 0x0c, 0x50, 0xa3, 0x51, 0xe6, 0x60, 0x2c, 0xf1, 0xc9, 0x09, 0x33, 0xd4, 0xdb, 0x84, + 0xa1, 0xb7, 0x3e, 0x31, 0xa9, 0x99, 0xa3, 0xc8, 0x10, 0xdf, 0xe5, 0xc4, 0x94, 0xc7, 0x12, 0x87, + 0x7e, 0xd6, 0x02, 0xe4, 0x34, 0xe8, 0x6d, 0x99, 0x82, 0xd5, 0xe5, 0x06, 0x98, 0xa8, 0xfd, 0x6a, + 0xd7, 0x6e, 0x6f, 0x87, 0x73, 0xf3, 0xa9, 0xd2, 0x5c, 0x53, 0xfa, 0x8a, 0x68, 0x22, 0x4a, 0x13, + 0xe8, 0x87, 0xd1, 0x55, 0x37, 0x8c, 0x3e, 0xf7, 0xa7, 0x89, 0xc3, 0x29, 0xa3, 0x49, 0xe8, 0xba, + 0x7e, 0xf9, 0x1a, 0x39, 0xe0, 0xe5, 0x6b, 0x2c, 0xf7, 0xe2, 0xf5, 0xdd, 0x89, 0x0b, 0xcc, 0x28, + 0xfb, 0xf2, 0x27, 0xba, 0x5c, 0x60, 0x84, 0x3a, 0xbd, 0x97, 0x6b, 0x4c, 0x45, 0x58, 0xae, 0xc7, + 0x58, 0x93, 0x3b, 0x5f, 0x82, 0xaf, 0x87, 0x24, 0x58, 0x38, 0x21, 0x0d, 0xdb, 0xfb, 0xba, 0xec, + 0x11, 0x5b, 0xba, 0x67, 0xdb, 0x70, 0x3c, 0xa7, 0xd3, 0x33, 0x54, 0xc6, 0x4b, 0xba, 0xca, 0xb8, + 0x8b, 0xa2, 0x71, 0x4e, 0x76, 0xcb, 0xdc, 0x9b, 0x6d, 0xc7, 0x8b, 0xdc, 0x68, 0x57, 0x57, 0x31, + 0x7b, 0x60, 0xb6, 0x06, 0x7d, 0x12, 0xfa, 0x1b, 0xae, 0xd7, 0xbe, 0x23, 0x8e, 0xa9, 0xb3, 0xd9, + 0x37, 0x08, 0xaf, 0x7d, 0xc7, 0xfc, 0xbe, 0x12, 0x5d, 0x0d, 0x0c, 0xbe, 0xbf, 0x57, 0x42, 0x69, + 0x02, 0xcc, 0xb9, 0xda, 0x4f, 0xc3, 0xf8, 0x92, 0x43, 0x9a, 0xbe, 0xb7, 0xec, 0xd5, 0x5b, 0xbe, + 0xeb, 0x45, 0x68, 0x06, 0xfa, 0x98, 0x7c, 0xc6, 0x4f, 0xa7, 0x3e, 0xda, 0xf9, 0x98, 0x41, 0xec, + 0x4d, 0x38, 0xba, 0xe4, 0xdf, 0xf6, 0x6e, 0x3b, 0x41, 0x7d, 0xbe, 0x52, 0xd6, 0x54, 0x6e, 0x6b, + 0x52, 0xe5, 0x63, 0xe5, 0x5f, 0xa8, 0xb5, 0x92, 0x7c, 0x1c, 0x57, 0xdc, 0x06, 0xc9, 0x51, 0x8c, + 0xfe, 0x5f, 0x05, 0xa3, 0xa6, 0x98, 0x5e, 0x99, 0xf5, 0xac, 0x5c, 0x1f, 0x86, 0x37, 0x61, 0x68, + 0xc3, 0x25, 0x8d, 0x3a, 0x26, 0x1b, 0x62, 0x34, 0x9e, 0xcc, 0xf7, 0x72, 0x5c, 0xa1, 0x94, 0xca, + 0xfe, 0xc8, 0x14, 0x46, 0x2b, 0xa2, 0x30, 0x56, 0x6c, 0xd0, 0x36, 0x4c, 0xca, 0x31, 0x93, 0x58, + 0xb1, 0x65, 0x3e, 0xd5, 0x69, 0x6d, 0x98, 0xcc, 0x99, 0xc7, 0x37, 0x4e, 0xb0, 0xc1, 0x29, 0xc6, + 0xe8, 0x24, 0xf4, 0x35, 0xa9, 0x70, 0xd0, 0xc7, 0xba, 0x9f, 0x69, 0x88, 0x98, 0xb2, 0x8b, 0x41, + 0xed, 0x9f, 0xb0, 0xe0, 0x78, 0xaa, 0x67, 0x84, 0xd2, 0xef, 0x01, 0x8f, 0x42, 0x52, 0x09, 0x57, + 0xe8, 0xae, 0x84, 0xb3, 0xff, 0x9e, 0x05, 0x47, 0x96, 0x9b, 0xad, 0x68, 0x77, 0xc9, 0x35, 0x1d, + 0x0e, 0x5e, 0x86, 0x81, 0x26, 0xa9, 0xbb, 0xed, 0xa6, 0x18, 0xb9, 0x92, 0x3c, 0x40, 0x57, 0x19, + 0x94, 0x2e, 0xc2, 0x6a, 0xe4, 0x07, 0xce, 0x26, 0xe1, 0x00, 0x2c, 0xc8, 0x99, 0x18, 0xe2, 0xde, + 0x25, 0x57, 0xdd, 0xa6, 0x1b, 0xdd, 0xdf, 0xea, 0x12, 0xbe, 0x02, 0x92, 0x09, 0x8e, 0xf9, 0xd9, + 0xdf, 0xb0, 0x60, 0x42, 0xce, 0xfb, 0xf9, 0x7a, 0x3d, 0x20, 0x61, 0x88, 0x66, 0xa1, 0xe0, 0xb6, + 0x44, 0x2b, 0x41, 0xb4, 0xb2, 0x50, 0xae, 0xe0, 0x82, 0xdb, 0x92, 0x37, 0x1e, 0x76, 0x46, 0x17, + 0x4d, 0xb7, 0x89, 0xcb, 0x02, 0x8e, 0x15, 0x05, 0x3a, 0x07, 0x43, 0x9e, 0x5f, 0xe7, 0x97, 0x06, + 0x61, 0x86, 0xa6, 0x94, 0x6b, 0x02, 0x86, 0x15, 0x16, 0x55, 0x60, 0x98, 0x3b, 0xd5, 0xc6, 0x93, + 0xb6, 0x27, 0xd7, 0x5c, 0xf6, 0x65, 0xeb, 0xb2, 0x24, 0x8e, 0x99, 0xd8, 0xbf, 0x6d, 0xc1, 0xa8, + 0xfc, 0xb2, 0x1e, 0xaf, 0x73, 0x74, 0x69, 0xc5, 0x57, 0xb9, 0x78, 0x69, 0xd1, 0xeb, 0x18, 0xc3, + 0x18, 0xb7, 0xb0, 0xe2, 0x81, 0x6e, 0x61, 0x17, 0x60, 0xc4, 0x69, 0xb5, 0x2a, 0xe6, 0x15, 0x8e, + 0x4d, 0xa5, 0xf9, 0x18, 0x8c, 0x75, 0x1a, 0xfb, 0xc7, 0x0b, 0x30, 0x2e, 0xbf, 0xa0, 0xda, 0xbe, + 0x15, 0x92, 0x08, 0xad, 0xc3, 0xb0, 0xc3, 0x47, 0x89, 0xc8, 0x49, 0xfe, 0x58, 0xb6, 0x6a, 0xd1, + 0x18, 0xd2, 0x58, 0x16, 0x9d, 0x97, 0xa5, 0x71, 0xcc, 0x08, 0x35, 0x60, 0xca, 0xf3, 0x23, 0x26, + 0x97, 0x28, 0x7c, 0x27, 0x6b, 0x6f, 0x92, 0xfb, 0x09, 0xc1, 0x7d, 0x6a, 0x2d, 0xc9, 0x05, 0xa7, + 0x19, 0xa3, 0x65, 0xa9, 0xae, 0x2d, 0xe6, 0xeb, 0xd9, 0xf4, 0x81, 0xcb, 0xd6, 0xd6, 0xda, 0xbf, + 0x61, 0xc1, 0xb0, 0x24, 0x3b, 0x0c, 0xc3, 0xfe, 0x2a, 0x0c, 0x86, 0x6c, 0x10, 0x64, 0xd7, 0xd8, + 0x9d, 0x1a, 0xce, 0xc7, 0x2b, 0x16, 0xb7, 0xf8, 0xff, 0x10, 0x4b, 0x1e, 0xcc, 0x5a, 0xa7, 0x9a, + 0xff, 0x1e, 0xb1, 0xd6, 0xa9, 0xf6, 0xe4, 0x1c, 0x4a, 0x7f, 0xce, 0xda, 0xac, 0xa9, 0xbf, 0xe9, + 0xad, 0xa0, 0x15, 0x90, 0x0d, 0xf7, 0x4e, 0xf2, 0x56, 0x50, 0x61, 0x50, 0x2c, 0xb0, 0xe8, 0x6d, + 0x18, 0xad, 0x49, 0x33, 0x4d, 0xbc, 0xc2, 0xcf, 0x76, 0x34, 0x19, 0x2a, 0xeb, 0x32, 0x57, 0x33, + 0x2e, 0x6a, 0xe5, 0xb1, 0xc1, 0xcd, 0x74, 0x1a, 0x2b, 0x76, 0x73, 0x1a, 0x8b, 0xf9, 0xe6, 0xbb, + 0x50, 0xfd, 0xa4, 0x05, 0x03, 0x5c, 0x3d, 0xdf, 0x9b, 0x75, 0x44, 0x33, 0xb6, 0xc7, 0x7d, 0x77, + 0x83, 0x02, 0x85, 0x64, 0x83, 0x56, 0x61, 0x98, 0xfd, 0x60, 0xe6, 0x85, 0x62, 0xfe, 0x13, 0x33, + 0x5e, 0xab, 0xde, 0xc0, 0x1b, 0xb2, 0x18, 0x8e, 0x39, 0xd8, 0x3f, 0x56, 0xa4, 0xbb, 0x5b, 0x4c, + 0x6a, 0x1c, 0xfa, 0xd6, 0xc3, 0x3b, 0xf4, 0x0b, 0x0f, 0xeb, 0xd0, 0xdf, 0x84, 0x89, 0x9a, 0x66, + 0x9a, 0x8f, 0x47, 0xf2, 0x5c, 0xc7, 0x49, 0xa2, 0x59, 0xf1, 0xb9, 0x02, 0x73, 0xd1, 0x64, 0x82, + 0x93, 0x5c, 0xd1, 0x27, 0x60, 0x94, 0x8f, 0xb3, 0xa8, 0x85, 0xfb, 0xdd, 0x3d, 0x91, 0x3f, 0x5f, + 0xf4, 0x2a, 0xb8, 0xc2, 0x5b, 0x2b, 0x8e, 0x0d, 0x66, 0xf6, 0x5f, 0x5b, 0x80, 0x96, 0x5b, 0x5b, + 0xa4, 0x49, 0x02, 0xa7, 0x11, 0x5b, 0xd8, 0xbe, 0x68, 0xc1, 0x0c, 0x49, 0x81, 0x17, 0xfd, 0x66, + 0x53, 0xdc, 0xa7, 0x73, 0x54, 0x3e, 0xcb, 0x39, 0x65, 0xd4, 0xa3, 0xb7, 0x99, 0x3c, 0x0a, 0x9c, + 0x5b, 0x1f, 0x5a, 0x85, 0x69, 0x7e, 0x4a, 0x2a, 0x84, 0xe6, 0xe8, 0xf6, 0x88, 0x60, 0x3c, 0xbd, + 0x9e, 0x26, 0xc1, 0x59, 0xe5, 0xec, 0xdf, 0x18, 0x83, 0xdc, 0x56, 0xbc, 0x6f, 0x5a, 0x7c, 0xdf, + 0xb4, 0xf8, 0xbe, 0x69, 0xf1, 0x7d, 0xd3, 0xe2, 0xfb, 0xa6, 0xc5, 0xf7, 0x4d, 0x8b, 0xef, 0x51, + 0xd3, 0xe2, 0xff, 0x61, 0xc1, 0x51, 0x75, 0x7c, 0x19, 0x17, 0xf6, 0xcf, 0xc2, 0x34, 0x5f, 0x6e, + 0x86, 0xbf, 0xba, 0x38, 0xae, 0x2f, 0x64, 0xce, 0xdc, 0xc4, 0xbb, 0x0a, 0xa3, 0x20, 0x7f, 0xa0, + 0x96, 0x81, 0xc0, 0x59, 0xd5, 0xd8, 0xbf, 0x32, 0x04, 0xfd, 0xcb, 0x3b, 0xc4, 0x8b, 0x0e, 0xe1, + 0x6a, 0x53, 0x83, 0x71, 0xd7, 0xdb, 0xf1, 0x1b, 0x3b, 0xa4, 0xce, 0xf1, 0x07, 0xb9, 0x81, 0x1f, + 0x13, 0xac, 0xc7, 0xcb, 0x06, 0x0b, 0x9c, 0x60, 0xf9, 0x30, 0x0c, 0x34, 0x97, 0x60, 0x80, 0x1f, + 0x3e, 0xc2, 0x3a, 0x93, 0xb9, 0x67, 0xb3, 0x4e, 0x14, 0x47, 0x6a, 0x6c, 0x3c, 0xe2, 0x87, 0x9b, + 0x28, 0x8e, 0x3e, 0x03, 0xe3, 0x1b, 0x6e, 0x10, 0x46, 0xeb, 0x6e, 0x93, 0x1e, 0x0d, 0xcd, 0xd6, + 0x7d, 0x18, 0x64, 0x54, 0x3f, 0xac, 0x18, 0x9c, 0x70, 0x82, 0x33, 0xda, 0x84, 0xb1, 0x86, 0xa3, + 0x57, 0x35, 0x78, 0xe0, 0xaa, 0xd4, 0xe9, 0x70, 0x55, 0x67, 0x84, 0x4d, 0xbe, 0x74, 0x39, 0xd5, + 0x98, 0x4d, 0x61, 0x88, 0xa9, 0x33, 0xd4, 0x72, 0xe2, 0xc6, 0x04, 0x8e, 0xa3, 0x02, 0x1a, 0xf3, + 0xf5, 0x1f, 0x36, 0x05, 0x34, 0xcd, 0xa3, 0xff, 0xd3, 0x30, 0x4c, 0x68, 0x17, 0x52, 0xc6, 0xe2, + 0x80, 0x39, 0xdf, 0x5b, 0x5b, 0x57, 0xdd, 0x5a, 0xe0, 0x9b, 0xa6, 0xb0, 0x65, 0xc9, 0x09, 0xc7, + 0x4c, 0xd1, 0x22, 0x0c, 0x84, 0x24, 0x70, 0x95, 0xba, 0xbd, 0xc3, 0x30, 0x32, 0x32, 0xfe, 0x02, + 0x92, 0xff, 0xc6, 0xa2, 0x28, 0x9d, 0x5e, 0x0e, 0x53, 0xc5, 0xb2, 0xc3, 0x40, 0x9b, 0x5e, 0xf3, + 0x0c, 0x8a, 0x05, 0x16, 0xbd, 0x01, 0x83, 0x01, 0x69, 0x30, 0x5b, 0xeb, 0x58, 0xef, 0x93, 0x9c, + 0x9b, 0x6e, 0x79, 0x39, 0x2c, 0x19, 0xa0, 0x2b, 0x80, 0x02, 0x42, 0x05, 0x3c, 0xd7, 0xdb, 0x54, + 0x1e, 0xf0, 0x62, 0xa3, 0x55, 0x82, 0x34, 0x8e, 0x29, 0xe4, 0xe3, 0x57, 0x9c, 0x51, 0x0c, 0x5d, + 0x82, 0x29, 0x05, 0x2d, 0x7b, 0x61, 0xe4, 0xd0, 0x0d, 0x6e, 0x82, 0xf1, 0x52, 0xfa, 0x15, 0x9c, + 0x24, 0xc0, 0xe9, 0x32, 0xf6, 0xcf, 0x5b, 0xc0, 0xfb, 0xf9, 0x10, 0xb4, 0x0a, 0xaf, 0x9b, 0x5a, + 0x85, 0x13, 0xb9, 0x23, 0x97, 0xa3, 0x51, 0xf8, 0x79, 0x0b, 0x46, 0xb4, 0x91, 0x8d, 0xe7, 0xac, + 0xd5, 0x61, 0xce, 0xb6, 0x61, 0x92, 0xce, 0xf4, 0x6b, 0xb7, 0x42, 0x12, 0xec, 0x90, 0x3a, 0x9b, + 0x98, 0x85, 0xfb, 0x9b, 0x98, 0xca, 0xdb, 0xf6, 0x6a, 0x82, 0x21, 0x4e, 0x55, 0x61, 0x7f, 0x5a, + 0x36, 0x55, 0x39, 0x27, 0xd7, 0xd4, 0x98, 0x27, 0x9c, 0x93, 0xd5, 0xa8, 0xe2, 0x98, 0x86, 0x2e, + 0xb5, 0x2d, 0x3f, 0x8c, 0x92, 0xce, 0xc9, 0x97, 0xfd, 0x30, 0xc2, 0x0c, 0x63, 0xbf, 0x00, 0xb0, + 0x7c, 0x87, 0xd4, 0xf8, 0x8c, 0xd5, 0x2f, 0x3d, 0x56, 0xfe, 0xa5, 0xc7, 0xfe, 0x43, 0x0b, 0xc6, + 0x57, 0x16, 0x8d, 0x93, 0x6b, 0x0e, 0x80, 0xdf, 0xd4, 0x6e, 0xde, 0x5c, 0x93, 0x1e, 0x32, 0xdc, + 0x49, 0x40, 0x41, 0xb1, 0x46, 0x81, 0x4e, 0x40, 0xb1, 0xd1, 0xf6, 0x84, 0xda, 0x73, 0x90, 0x1e, + 0x8f, 0x57, 0xdb, 0x1e, 0xa6, 0x30, 0xed, 0xe1, 0x5b, 0xb1, 0xe7, 0x87, 0x6f, 0x5d, 0xe3, 0xef, + 0xa0, 0x12, 0xf4, 0xdf, 0xbe, 0xed, 0xd6, 0x79, 0x58, 0x01, 0xe1, 0xbd, 0x73, 0xf3, 0x66, 0x79, + 0x29, 0xc4, 0x1c, 0x6e, 0x7f, 0xa9, 0x08, 0xb3, 0x2b, 0x0d, 0x72, 0xe7, 0x5d, 0x86, 0x56, 0xe8, + 0xf5, 0xd9, 0xde, 0xc1, 0x14, 0x48, 0x07, 0x7d, 0x9a, 0xd9, 0xbd, 0x3f, 0x36, 0x60, 0x90, 0xfb, + 0xe6, 0xca, 0x40, 0x0b, 0x99, 0x16, 0xd1, 0xfc, 0x0e, 0x99, 0xe3, 0x3e, 0xbe, 0xc2, 0x22, 0xaa, + 0x0e, 0x4c, 0x01, 0xc5, 0x92, 0xf9, 0xec, 0x2b, 0x30, 0xaa, 0x53, 0x1e, 0xe8, 0x91, 0xf4, 0xf7, + 0x17, 0x61, 0x92, 0xb6, 0xe0, 0xa1, 0x0e, 0xc4, 0xf5, 0xf4, 0x40, 0x3c, 0xe8, 0x87, 0xb2, 0xdd, + 0x47, 0xe3, 0xed, 0xe4, 0x68, 0x5c, 0xc8, 0x1b, 0x8d, 0xc3, 0x1e, 0x83, 0x1f, 0xb0, 0x60, 0x7a, + 0xa5, 0xe1, 0xd7, 0xb6, 0x13, 0x8f, 0x59, 0x5f, 0x82, 0x11, 0xba, 0x1d, 0x87, 0x46, 0x5c, 0x17, + 0x23, 0xd2, 0x8f, 0x40, 0x61, 0x9d, 0x4e, 0x2b, 0x76, 0xfd, 0x7a, 0x79, 0x29, 0x2b, 0x40, 0x90, + 0x40, 0x61, 0x9d, 0xce, 0xfe, 0x7d, 0x0b, 0x4e, 0x5d, 0x5a, 0x5c, 0x8e, 0xa7, 0x62, 0x2a, 0x46, + 0xd1, 0x59, 0x18, 0x68, 0xd5, 0xb5, 0xa6, 0xc4, 0x6a, 0xe1, 0x25, 0xd6, 0x0a, 0x81, 0x7d, 0xaf, + 0x84, 0x03, 0xbb, 0x0e, 0x70, 0x09, 0x57, 0x16, 0xc5, 0xbe, 0x2b, 0xad, 0x40, 0x56, 0xae, 0x15, + 0xe8, 0x09, 0x18, 0xa4, 0xe7, 0x82, 0x5b, 0x93, 0xed, 0xe6, 0x3e, 0x0f, 0x1c, 0x84, 0x25, 0xce, + 0xfe, 0x39, 0x0b, 0xa6, 0x2f, 0xb9, 0x11, 0x3d, 0xb4, 0x93, 0x41, 0x78, 0xe8, 0xa9, 0x1d, 0xba, + 0x91, 0x1f, 0xec, 0x26, 0x83, 0xf0, 0x60, 0x85, 0xc1, 0x1a, 0x15, 0xff, 0xa0, 0x1d, 0x97, 0x3d, + 0x36, 0x29, 0x98, 0x76, 0x37, 0x2c, 0xe0, 0x58, 0x51, 0xd0, 0xfe, 0xaa, 0xbb, 0x01, 0x53, 0x59, + 0xee, 0x8a, 0x8d, 0x5b, 0xf5, 0xd7, 0x92, 0x44, 0xe0, 0x98, 0xc6, 0xfe, 0x4b, 0x0b, 0x4a, 0x97, + 0xf8, 0x93, 0xd9, 0x8d, 0x30, 0x67, 0xd3, 0x7d, 0x01, 0x86, 0x89, 0x34, 0x10, 0xc8, 0xe7, 0xc3, + 0x52, 0x10, 0x55, 0x96, 0x03, 0x1e, 0x0b, 0x48, 0xd1, 0xf5, 0xf0, 0xe2, 0xfe, 0x60, 0x4f, 0xa6, + 0x57, 0x00, 0x11, 0xbd, 0x2e, 0x3d, 0x38, 0x12, 0x8b, 0xb2, 0xb2, 0x9c, 0xc2, 0xe2, 0x8c, 0x12, + 0xf6, 0x4f, 0x58, 0x70, 0x54, 0x7d, 0xf0, 0x7b, 0xee, 0x33, 0xed, 0xaf, 0x15, 0x60, 0xec, 0xf2, + 0xfa, 0x7a, 0xe5, 0x12, 0x89, 0xb4, 0x59, 0xd9, 0xd9, 0xec, 0x8f, 0x35, 0xeb, 0x65, 0xa7, 0x3b, + 0x62, 0x3b, 0x72, 0x1b, 0x73, 0x3c, 0xe4, 0xdf, 0x5c, 0xd9, 0x8b, 0xae, 0x05, 0xd5, 0x28, 0x70, + 0xbd, 0xcd, 0xcc, 0x99, 0x2e, 0x65, 0x96, 0x62, 0x9e, 0xcc, 0x82, 0x5e, 0x80, 0x01, 0x16, 0x73, + 0x50, 0x0e, 0xc2, 0x23, 0xea, 0x8a, 0xc5, 0xa0, 0xfb, 0x7b, 0xa5, 0xe1, 0xeb, 0xb8, 0xcc, 0xff, + 0x60, 0x41, 0x8a, 0xae, 0xc3, 0xc8, 0x56, 0x14, 0xb5, 0x2e, 0x13, 0xa7, 0x4e, 0x02, 0xb9, 0xcb, + 0x9e, 0xce, 0xda, 0x65, 0x69, 0x27, 0x70, 0xb2, 0x78, 0x63, 0x8a, 0x61, 0x21, 0xd6, 0xf9, 0xd8, + 0x55, 0x80, 0x18, 0xf7, 0x80, 0x0c, 0x37, 0xf6, 0x3a, 0x0c, 0xd3, 0xcf, 0x9d, 0x6f, 0xb8, 0x4e, + 0x67, 0xd3, 0xf8, 0x33, 0x30, 0x2c, 0x0d, 0xdf, 0xa1, 0x88, 0x08, 0xc2, 0x4e, 0x24, 0x69, 0x17, + 0x0f, 0x71, 0x8c, 0xb7, 0x1f, 0x07, 0xe1, 0x7e, 0xdb, 0x89, 0xa5, 0xbd, 0x01, 0x47, 0x98, 0x1f, + 0xb1, 0x13, 0x6d, 0x19, 0x73, 0xb4, 0xfb, 0x64, 0x78, 0x56, 0xdc, 0xeb, 0xf8, 0x97, 0xcd, 0x68, + 0xef, 0xb7, 0x47, 0x25, 0xc7, 0xf8, 0x8e, 0x67, 0xff, 0x45, 0x1f, 0x3c, 0x52, 0xae, 0xe6, 0x87, + 0xb2, 0xba, 0x08, 0xa3, 0x5c, 0x5c, 0xa4, 0x53, 0xc3, 0x69, 0x88, 0x7a, 0x95, 0x06, 0x74, 0x5d, + 0xc3, 0x61, 0x83, 0x12, 0x9d, 0x82, 0xa2, 0xfb, 0x8e, 0x97, 0x7c, 0xdd, 0x58, 0x7e, 0x73, 0x0d, + 0x53, 0x38, 0x45, 0x53, 0xc9, 0x93, 0x6f, 0xe9, 0x0a, 0xad, 0xa4, 0xcf, 0xd7, 0x61, 0xdc, 0x0d, + 0x6b, 0xa1, 0x5b, 0xf6, 0xe8, 0x3a, 0xd5, 0x56, 0xba, 0xd2, 0x39, 0xd0, 0x46, 0x2b, 0x2c, 0x4e, + 0x50, 0x6b, 0xe7, 0x4b, 0x7f, 0xcf, 0xd2, 0x6b, 0xd7, 0x40, 0x1a, 0x74, 0xfb, 0x6f, 0xb1, 0xaf, + 0x0b, 0x99, 0x0a, 0x5e, 0x6c, 0xff, 0xfc, 0x83, 0x43, 0x2c, 0x71, 0xf4, 0x42, 0x57, 0xdb, 0x72, + 0x5a, 0xf3, 0xed, 0x68, 0x6b, 0xc9, 0x0d, 0x6b, 0xfe, 0x0e, 0x09, 0x76, 0xd9, 0x5d, 0x7c, 0x28, + 0xbe, 0xd0, 0x29, 0xc4, 0xe2, 0xe5, 0xf9, 0x0a, 0xa5, 0xc4, 0xe9, 0x32, 0x68, 0x1e, 0x26, 0x24, + 0xb0, 0x4a, 0x42, 0x76, 0x04, 0x8c, 0x30, 0x36, 0xea, 0xbd, 0xa1, 0x00, 0x2b, 0x26, 0x49, 0x7a, + 0x53, 0xc0, 0x85, 0x07, 0x21, 0xe0, 0xbe, 0x0c, 0x63, 0xae, 0xe7, 0x46, 0xae, 0x13, 0xf9, 0xdc, + 0x7e, 0xc4, 0xaf, 0xdd, 0x4c, 0xc1, 0x5c, 0xd6, 0x11, 0xd8, 0xa4, 0xb3, 0xff, 0x63, 0x1f, 0x4c, + 0xb1, 0x61, 0x7b, 0x7f, 0x86, 0x7d, 0x27, 0xcd, 0xb0, 0xeb, 0xe9, 0x19, 0xf6, 0x20, 0x24, 0xf7, + 0xfb, 0x9e, 0x66, 0x9f, 0x81, 0x61, 0xf5, 0xc4, 0x52, 0xbe, 0xb1, 0xb6, 0x72, 0xde, 0x58, 0x77, + 0x3f, 0xbd, 0xa5, 0x4b, 0x5a, 0x31, 0xd3, 0x25, 0xed, 0x2b, 0x16, 0xc4, 0x86, 0x05, 0xf4, 0x26, + 0x0c, 0xb7, 0x7c, 0xe6, 0x04, 0x1c, 0x48, 0xcf, 0xfa, 0xc7, 0x3b, 0x5a, 0x26, 0x78, 0x34, 0xbf, + 0x80, 0xf7, 0x42, 0x45, 0x16, 0xc5, 0x31, 0x17, 0x74, 0x05, 0x06, 0x5b, 0x01, 0xa9, 0x46, 0x2c, + 0xd4, 0x54, 0xef, 0x0c, 0xf9, 0xac, 0xe1, 0x05, 0xb1, 0xe4, 0x60, 0xff, 0x62, 0x01, 0x26, 0x93, + 0xa4, 0xe8, 0x35, 0xe8, 0x23, 0x77, 0x48, 0x4d, 0xb4, 0x37, 0xf3, 0x28, 0x8e, 0x55, 0x13, 0xbc, + 0x03, 0xe8, 0x7f, 0xcc, 0x4a, 0xa1, 0xcb, 0x30, 0x48, 0xcf, 0xe1, 0x4b, 0x2a, 0xac, 0xe2, 0xa3, + 0x79, 0x67, 0xb9, 0x12, 0x68, 0x78, 0xe3, 0x04, 0x08, 0xcb, 0xe2, 0xcc, 0x0f, 0xac, 0xd6, 0xaa, + 0xd2, 0x2b, 0x4e, 0xd4, 0xe9, 0x26, 0xbe, 0xbe, 0x58, 0xe1, 0x44, 0x82, 0x1b, 0xf7, 0x03, 0x93, + 0x40, 0x1c, 0x33, 0x41, 0x1f, 0x85, 0xfe, 0xb0, 0x41, 0x48, 0x4b, 0x18, 0xfa, 0x33, 0x95, 0x8b, + 0x55, 0x4a, 0x20, 0x38, 0x31, 0x65, 0x04, 0x03, 0x60, 0x5e, 0xd0, 0xfe, 0x25, 0x0b, 0x80, 0x3b, + 0xce, 0x39, 0xde, 0x26, 0x39, 0x04, 0x7d, 0xfc, 0x12, 0xf4, 0x85, 0x2d, 0x52, 0xeb, 0xe4, 0xe1, + 0x1e, 0xb7, 0xa7, 0xda, 0x22, 0xb5, 0x78, 0xce, 0xd2, 0x7f, 0x98, 0x95, 0xb6, 0x7f, 0x10, 0x60, + 0x3c, 0x26, 0x2b, 0x47, 0xa4, 0x89, 0x9e, 0x33, 0x22, 0xbb, 0x9c, 0x48, 0x44, 0x76, 0x19, 0x66, + 0xd4, 0x9a, 0xea, 0xf7, 0x33, 0x50, 0x6c, 0x3a, 0x77, 0x84, 0x6e, 0xef, 0x99, 0xce, 0xcd, 0xa0, + 0xfc, 0xe7, 0x56, 0x9d, 0x3b, 0xfc, 0xfa, 0xfb, 0x8c, 0x5c, 0x63, 0xab, 0xce, 0x9d, 0xae, 0x5e, + 0xd8, 0xb4, 0x12, 0x56, 0x97, 0xeb, 0x09, 0x9f, 0xb0, 0x9e, 0xea, 0x72, 0xbd, 0x64, 0x5d, 0xae, + 0xd7, 0x43, 0x5d, 0xae, 0x87, 0xee, 0xc2, 0xa0, 0x70, 0xd9, 0x14, 0x41, 0xf2, 0xce, 0xf7, 0x50, + 0x9f, 0xf0, 0xf8, 0xe4, 0x75, 0x9e, 0x97, 0xd7, 0x7b, 0x01, 0xed, 0x5a, 0xaf, 0xac, 0x10, 0xfd, + 0x9f, 0x16, 0x8c, 0x8b, 0xdf, 0x98, 0xbc, 0xd3, 0x26, 0x61, 0x24, 0xc4, 0xdf, 0x0f, 0xf5, 0xde, + 0x06, 0x51, 0x90, 0x37, 0xe5, 0x43, 0xf2, 0xa4, 0x32, 0x91, 0x5d, 0x5b, 0x94, 0x68, 0x05, 0xfa, + 0x45, 0x0b, 0x8e, 0x34, 0x9d, 0x3b, 0xbc, 0x46, 0x0e, 0xc3, 0x4e, 0xe4, 0xfa, 0xc2, 0xf5, 0xe1, + 0xb5, 0xde, 0x86, 0x3f, 0x55, 0x9c, 0x37, 0x52, 0xda, 0x39, 0x8f, 0x64, 0x91, 0x74, 0x6d, 0x6a, + 0x66, 0xbb, 0x66, 0x37, 0x60, 0x48, 0xce, 0xb7, 0x87, 0xe9, 0x8f, 0xce, 0xea, 0x11, 0x73, 0xed, + 0xa1, 0xd6, 0xf3, 0x19, 0x18, 0xd5, 0xe7, 0xd8, 0x43, 0xad, 0xeb, 0x1d, 0x98, 0xce, 0x98, 0x4b, + 0x0f, 0xb5, 0xca, 0xdb, 0x70, 0x22, 0x77, 0x7e, 0x3c, 0xd4, 0xf7, 0x04, 0x5f, 0xb3, 0xf4, 0x7d, + 0xf0, 0x10, 0x8c, 0x22, 0x8b, 0xa6, 0x51, 0xe4, 0x74, 0xe7, 0x95, 0x93, 0x63, 0x19, 0x79, 0x5b, + 0x6f, 0x34, 0xdd, 0xd5, 0xd1, 0x1b, 0x30, 0xd0, 0xa0, 0x10, 0xe9, 0xf8, 0x6b, 0x77, 0x5f, 0x91, + 0xb1, 0x38, 0xca, 0xe0, 0x21, 0x16, 0x1c, 0xec, 0x2f, 0x5b, 0x90, 0xf1, 0x22, 0x82, 0xca, 0x49, + 0x6d, 0xb7, 0xce, 0xba, 0xa4, 0x18, 0xcb, 0x49, 0x2a, 0xf0, 0xc9, 0x29, 0x28, 0x6e, 0xba, 0x75, + 0xf1, 0x9a, 0x56, 0xa1, 0x2f, 0x51, 0xf4, 0xa6, 0x5b, 0x47, 0x2b, 0x80, 0xc2, 0x76, 0xab, 0xd5, + 0x60, 0xde, 0x42, 0x4e, 0xe3, 0x52, 0xe0, 0xb7, 0x5b, 0xdc, 0xcb, 0xb7, 0xc8, 0x75, 0x33, 0xd5, + 0x14, 0x16, 0x67, 0x94, 0xb0, 0x7f, 0xd5, 0x82, 0xbe, 0x43, 0x18, 0x26, 0x6c, 0x0e, 0xd3, 0x73, + 0xb9, 0xac, 0x45, 0x6e, 0x85, 0x39, 0xec, 0xdc, 0x5e, 0xbe, 0x13, 0x11, 0x2f, 0x64, 0x02, 0x47, + 0xe6, 0xa8, 0xed, 0x59, 0x30, 0x7d, 0xd5, 0x77, 0xea, 0x0b, 0x4e, 0xc3, 0xf1, 0x6a, 0x24, 0x28, + 0x7b, 0x9b, 0x07, 0x72, 0xa9, 0x2f, 0x74, 0x75, 0xa9, 0xbf, 0x08, 0x03, 0x6e, 0x4b, 0x0b, 0xce, + 0x7e, 0x86, 0x8e, 0x6e, 0xb9, 0x22, 0xe2, 0xb2, 0x23, 0xa3, 0x72, 0x06, 0xc5, 0x82, 0x9e, 0x4e, + 0x4b, 0xee, 0xcb, 0xd6, 0x97, 0x3f, 0x2d, 0xe9, 0x15, 0x23, 0x19, 0xc2, 0xcb, 0xf0, 0xba, 0xde, + 0x02, 0xa3, 0x0a, 0xf1, 0x6a, 0x0f, 0xc3, 0xa0, 0xcb, 0xbf, 0x54, 0xcc, 0xcd, 0x27, 0xb3, 0x45, + 0xff, 0x54, 0xc7, 0x68, 0xef, 0xd1, 0x38, 0x00, 0x4b, 0x46, 0xf6, 0x45, 0xc8, 0x0c, 0xb9, 0xd2, + 0x5d, 0xad, 0x63, 0x7f, 0x1c, 0xa6, 0x58, 0xc9, 0x03, 0xaa, 0x4c, 0xec, 0x84, 0x32, 0x3a, 0x23, + 0xce, 0xae, 0xfd, 0xef, 0x2c, 0x40, 0xab, 0x7e, 0xdd, 0xdd, 0xd8, 0x15, 0xcc, 0xf9, 0xf7, 0xbf, + 0x03, 0x25, 0x7e, 0x27, 0x4d, 0xc6, 0xa2, 0x5d, 0x6c, 0x38, 0x61, 0xa8, 0x29, 0xc2, 0x9f, 0x14, + 0xf5, 0x96, 0xd6, 0x3b, 0x93, 0xe3, 0x6e, 0xfc, 0xd0, 0x9b, 0x89, 0x40, 0x7b, 0x1f, 0x4e, 0x05, + 0xda, 0x7b, 0x32, 0xd3, 0x1d, 0x25, 0xdd, 0x7a, 0x19, 0x80, 0xcf, 0xfe, 0x82, 0x05, 0x13, 0x6b, + 0x89, 0xd8, 0xaa, 0x67, 0x99, 0x6d, 0x3e, 0xc3, 0xc0, 0x53, 0x65, 0x50, 0x2c, 0xb0, 0x0f, 0x5c, + 0x01, 0xfa, 0x77, 0x16, 0xc4, 0x21, 0x9e, 0x0e, 0x41, 0xe4, 0x5e, 0x34, 0x44, 0xee, 0xcc, 0xeb, + 0x8b, 0x6a, 0x4e, 0x9e, 0xc4, 0x8d, 0xae, 0xa8, 0x31, 0xe9, 0x70, 0x73, 0x89, 0xd9, 0xf0, 0x75, + 0x36, 0x6e, 0x0e, 0x9c, 0x1a, 0x8d, 0x3f, 0x2a, 0x00, 0x52, 0xb4, 0x3d, 0x07, 0x67, 0x4c, 0x97, + 0x78, 0x30, 0xc1, 0x19, 0x77, 0x00, 0x31, 0xef, 0x92, 0xc0, 0xf1, 0x42, 0xce, 0xd6, 0x15, 0x2a, + 0xdf, 0x83, 0xb9, 0xae, 0xcc, 0xca, 0xd7, 0x9a, 0x57, 0x53, 0xdc, 0x70, 0x46, 0x0d, 0x9a, 0xd7, + 0x50, 0x7f, 0xaf, 0x5e, 0x43, 0x03, 0x5d, 0x9e, 0x1d, 0x7f, 0xd5, 0x82, 0x31, 0xd5, 0x4d, 0xef, + 0x91, 0x97, 0x17, 0xaa, 0x3d, 0x39, 0xe7, 0x4a, 0x45, 0x6b, 0x32, 0x13, 0x06, 0xbe, 0x8b, 0x3d, + 0x1f, 0x77, 0x1a, 0xee, 0x5d, 0xa2, 0xa2, 0x1e, 0x97, 0xc4, 0x73, 0x70, 0x01, 0xdd, 0xdf, 0x2b, + 0x8d, 0xa9, 0x7f, 0x3c, 0x6a, 0x69, 0x5c, 0xc4, 0xfe, 0x69, 0xba, 0xd8, 0xcd, 0xa9, 0x88, 0x5e, + 0x82, 0xfe, 0xd6, 0x96, 0x13, 0x92, 0xc4, 0x0b, 0xb5, 0xfe, 0x0a, 0x05, 0xee, 0xef, 0x95, 0xc6, + 0x55, 0x01, 0x06, 0xc1, 0x9c, 0xba, 0xf7, 0x90, 0x97, 0xe9, 0xc9, 0xd9, 0x35, 0xe4, 0xe5, 0x5f, + 0x5b, 0xd0, 0xb7, 0x46, 0x4f, 0xaf, 0x87, 0xbf, 0x05, 0xbc, 0x6e, 0x6c, 0x01, 0x27, 0xf3, 0xf2, + 0xff, 0xe4, 0xae, 0xfe, 0x95, 0xc4, 0xea, 0x3f, 0x9d, 0xcb, 0xa1, 0xf3, 0xc2, 0x6f, 0xc2, 0x08, + 0xcb, 0x2a, 0x24, 0x5e, 0xe3, 0xbd, 0x60, 0x2c, 0xf8, 0x52, 0x62, 0xc1, 0x4f, 0x68, 0xa4, 0xda, + 0x4a, 0x7f, 0x0a, 0x06, 0xc5, 0xf3, 0xae, 0xe4, 0x2b, 0x7c, 0x41, 0x8b, 0x25, 0xde, 0xfe, 0xc9, + 0x22, 0x18, 0x59, 0x8c, 0xd0, 0x6f, 0x58, 0x30, 0x17, 0x70, 0xb7, 0xef, 0xfa, 0x52, 0x3b, 0x70, + 0xbd, 0xcd, 0x6a, 0x6d, 0x8b, 0xd4, 0xdb, 0x0d, 0xd7, 0xdb, 0x2c, 0x6f, 0x7a, 0xbe, 0x02, 0x2f, + 0xdf, 0x21, 0xb5, 0x36, 0x33, 0xc9, 0x76, 0x49, 0x99, 0xa4, 0x9e, 0x4f, 0x3c, 0x7f, 0x6f, 0xaf, + 0x34, 0x87, 0x0f, 0xc4, 0x1b, 0x1f, 0xb0, 0x2d, 0xe8, 0xf7, 0x2d, 0x38, 0xcf, 0xb3, 0xe9, 0xf4, + 0xde, 0xfe, 0x0e, 0x1a, 0x8e, 0x8a, 0x64, 0x15, 0x33, 0x59, 0x27, 0x41, 0x73, 0xe1, 0x65, 0xd1, + 0xa1, 0xe7, 0x2b, 0x07, 0xab, 0x0b, 0x1f, 0xb4, 0x71, 0xf6, 0x3f, 0x2e, 0xc2, 0x98, 0x08, 0x8d, + 0x28, 0xce, 0x80, 0x97, 0x8c, 0x29, 0xf1, 0x68, 0x62, 0x4a, 0x4c, 0x19, 0xc4, 0x0f, 0x66, 0xfb, + 0x0f, 0x61, 0x8a, 0x6e, 0xce, 0x97, 0x89, 0x13, 0x44, 0xb7, 0x88, 0xc3, 0x9d, 0x01, 0x8b, 0x07, + 0xde, 0xfd, 0x95, 0x56, 0xfa, 0x6a, 0x92, 0x19, 0x4e, 0xf3, 0xff, 0x4e, 0x3a, 0x73, 0x3c, 0x98, + 0x4c, 0x45, 0xb7, 0x7c, 0x0b, 0x86, 0xd5, 0xdb, 0x24, 0xb1, 0xe9, 0x74, 0x0e, 0x12, 0x9b, 0xe4, + 0xc0, 0x95, 0x9e, 0xf1, 0xbb, 0xb8, 0x98, 0x9d, 0xfd, 0x0f, 0x0a, 0x46, 0x85, 0x7c, 0x10, 0xd7, + 0x60, 0xc8, 0x09, 0x59, 0xe0, 0xea, 0x7a, 0x27, 0xbd, 0x74, 0xaa, 0x1a, 0xf6, 0x3e, 0x6c, 0x5e, + 0x94, 0xc4, 0x8a, 0x07, 0xba, 0xcc, 0x5d, 0x2e, 0x77, 0x48, 0x27, 0xa5, 0x74, 0x8a, 0x1b, 0x48, + 0xa7, 0xcc, 0x1d, 0x82, 0x45, 0x79, 0xf4, 0x49, 0xee, 0x13, 0x7b, 0xc5, 0xf3, 0x6f, 0x7b, 0x97, + 0x7c, 0x5f, 0x86, 0xc1, 0xe9, 0x8d, 0xe1, 0x94, 0xf4, 0x84, 0x55, 0xc5, 0xb1, 0xc9, 0xad, 0xb7, + 0x70, 0xd1, 0x9f, 0x05, 0x96, 0x3d, 0xc4, 0x0c, 0x05, 0x10, 0x22, 0x02, 0x13, 0x22, 0xee, 0xa6, + 0x84, 0x89, 0xbe, 0xcb, 0xbc, 0x7e, 0x9b, 0xa5, 0x63, 0xf3, 0xc9, 0x15, 0x93, 0x05, 0x4e, 0xf2, + 0xb4, 0x7f, 0xd6, 0x02, 0xf6, 0x2c, 0xfa, 0x10, 0xe4, 0x91, 0x8f, 0x98, 0xf2, 0xc8, 0x4c, 0x5e, + 0x27, 0xe7, 0x88, 0x22, 0x2f, 0xf2, 0x99, 0x55, 0x09, 0xfc, 0x3b, 0xbb, 0xc2, 0x91, 0xa9, 0xfb, + 0xe5, 0xca, 0xfe, 0x92, 0x05, 0x2c, 0x01, 0x0e, 0xe6, 0x77, 0x69, 0x69, 0x76, 0xe8, 0x6e, 0xa3, + 0xff, 0x18, 0x0c, 0x6d, 0x10, 0x27, 0x6a, 0x07, 0x22, 0x8c, 0x97, 0xd9, 0x17, 0x46, 0x83, 0x4d, + 0xde, 0x2b, 0xa2, 0x94, 0x78, 0xde, 0x28, 0xfe, 0x61, 0xc5, 0xcd, 0x0e, 0x61, 0x36, 0xbf, 0x14, + 0xba, 0x0e, 0xc7, 0x03, 0x52, 0x6b, 0x07, 0x21, 0x9d, 0xa7, 0xe2, 0x56, 0x22, 0x1e, 0x08, 0x59, + 0xec, 0xf6, 0xf2, 0xc8, 0xbd, 0xbd, 0xd2, 0x71, 0x9c, 0x4d, 0x82, 0xf3, 0xca, 0xda, 0xdf, 0xc3, + 0x0f, 0x5b, 0x15, 0x79, 0xb8, 0x09, 0x53, 0x9e, 0xf6, 0x9f, 0x1e, 0x2d, 0xf2, 0x0e, 0xfd, 0x78, + 0xb7, 0xe3, 0x94, 0x9d, 0x43, 0xda, 0xdb, 0xeb, 0x04, 0x1b, 0x9c, 0xe6, 0x6c, 0xff, 0x94, 0x05, + 0xc7, 0x75, 0x42, 0xed, 0x79, 0x57, 0x37, 0x23, 0xd9, 0x12, 0x0c, 0xf9, 0x2d, 0x12, 0x38, 0x91, + 0x1f, 0x88, 0xf3, 0xe3, 0x9c, 0x9c, 0x64, 0xd7, 0x04, 0x7c, 0x5f, 0xe4, 0x6e, 0x91, 0xdc, 0x25, + 0x1c, 0xab, 0x92, 0xf4, 0x92, 0xcd, 0x34, 0x73, 0xa1, 0x78, 0xc8, 0xc7, 0x76, 0x03, 0xe6, 0x6f, + 0x11, 0x62, 0x81, 0xb1, 0xff, 0xc2, 0xe2, 0x53, 0x4c, 0x6f, 0x3a, 0x7a, 0x07, 0x26, 0x9b, 0x4e, + 0x54, 0xdb, 0x5a, 0xbe, 0xd3, 0x0a, 0xb8, 0xc9, 0x51, 0xf6, 0xd3, 0x33, 0xdd, 0xfa, 0x49, 0xfb, + 0xc8, 0xd8, 0xe1, 0x77, 0x35, 0xc1, 0x0c, 0xa7, 0xd8, 0xa3, 0x5b, 0x30, 0xc2, 0x60, 0xec, 0x8d, + 0x6a, 0xd8, 0x49, 0x48, 0xc8, 0xab, 0x4d, 0xb9, 0xac, 0xac, 0xc6, 0x7c, 0xb0, 0xce, 0xd4, 0xfe, + 0x4a, 0x91, 0xaf, 0x7b, 0x26, 0xd4, 0x3f, 0x05, 0x83, 0x2d, 0xbf, 0xbe, 0x58, 0x5e, 0xc2, 0x62, + 0x14, 0xd4, 0x81, 0x52, 0xe1, 0x60, 0x2c, 0xf1, 0xe8, 0x1c, 0x0c, 0x89, 0x9f, 0xd2, 0x44, 0xcc, + 0xa6, 0xb9, 0xa0, 0x0b, 0xb1, 0xc2, 0xa2, 0xe7, 0x01, 0x5a, 0x81, 0xbf, 0xe3, 0xd6, 0x59, 0x58, + 0x9f, 0xa2, 0xe9, 0x6d, 0x56, 0x51, 0x18, 0xac, 0x51, 0xa1, 0x57, 0x61, 0xac, 0xed, 0x85, 0x5c, + 0x30, 0xd1, 0x82, 0xa7, 0x2b, 0x3f, 0xa8, 0xeb, 0x3a, 0x12, 0x9b, 0xb4, 0x68, 0x1e, 0x06, 0x22, + 0x87, 0x79, 0x4f, 0xf5, 0xe7, 0x3b, 0x85, 0xaf, 0x53, 0x0a, 0x3d, 0xb1, 0x1a, 0x2d, 0x80, 0x45, + 0x41, 0xf4, 0x96, 0x7c, 0x2e, 0xce, 0xb7, 0x78, 0xf1, 0x1a, 0xa3, 0xb7, 0xe3, 0x40, 0x7b, 0x2c, + 0x2e, 0x5e, 0x79, 0x18, 0xbc, 0xd0, 0x2b, 0x00, 0xe4, 0x4e, 0x44, 0x02, 0xcf, 0x69, 0x28, 0x9f, + 0x47, 0x25, 0x21, 0x2c, 0xf9, 0x6b, 0x7e, 0x74, 0x3d, 0x24, 0xcb, 0x8a, 0x02, 0x6b, 0xd4, 0xf6, + 0xaf, 0x01, 0x40, 0x2c, 0xc1, 0xa3, 0xbb, 0x30, 0x54, 0x73, 0x5a, 0x4e, 0x8d, 0x67, 0x0d, 0x2d, + 0xe6, 0xbd, 0xe2, 0x8d, 0x4b, 0xcc, 0x2d, 0x0a, 0x72, 0x6e, 0x15, 0x91, 0xf1, 0xa7, 0x87, 0x24, + 0xb8, 0xab, 0x25, 0x44, 0xd5, 0x87, 0x3e, 0x6f, 0xc1, 0x88, 0x88, 0x5e, 0xc4, 0x46, 0xa8, 0x90, + 0x6f, 0xc8, 0xd2, 0xea, 0x9f, 0x8f, 0x4b, 0xf0, 0x26, 0xbc, 0x20, 0x67, 0xa8, 0x86, 0xe9, 0xda, + 0x0a, 0xbd, 0x62, 0xf4, 0x41, 0x79, 0x69, 0x2c, 0x1a, 0x5d, 0xa9, 0x2e, 0x8d, 0xc3, 0xec, 0xb4, + 0xd0, 0xef, 0x8b, 0xd7, 0x8d, 0xfb, 0x62, 0x5f, 0xfe, 0x7b, 0x58, 0x43, 0x90, 0xed, 0x76, 0x55, + 0x44, 0x15, 0x3d, 0x36, 0x46, 0x7f, 0xfe, 0x23, 0x4e, 0xed, 0xc6, 0xd4, 0x25, 0x2e, 0xc6, 0x67, + 0x60, 0xa2, 0x6e, 0x8a, 0x03, 0x62, 0x26, 0x3e, 0x99, 0xc7, 0x37, 0x21, 0x3d, 0xc4, 0x02, 0x40, + 0x02, 0x81, 0x93, 0x8c, 0x51, 0x85, 0x87, 0x4a, 0x29, 0x7b, 0x1b, 0xbe, 0x78, 0x11, 0x64, 0xe7, + 0x8e, 0xe5, 0x6e, 0x18, 0x91, 0x26, 0xa5, 0x8c, 0xcf, 0xf9, 0x35, 0x51, 0x16, 0x2b, 0x2e, 0xe8, + 0x0d, 0x18, 0x60, 0xaf, 0xf8, 0xc2, 0x99, 0xa1, 0x7c, 0x7b, 0x81, 0x19, 0x56, 0x33, 0x5e, 0x90, + 0xec, 0x6f, 0x88, 0x05, 0x07, 0x74, 0x59, 0xbe, 0x91, 0x0d, 0xcb, 0xde, 0xf5, 0x90, 0xb0, 0x37, + 0xb2, 0xc3, 0x0b, 0x8f, 0xc7, 0xcf, 0x5f, 0x39, 0x3c, 0x33, 0xfd, 0xaa, 0x51, 0x92, 0xca, 0x53, + 0xe2, 0xbf, 0xcc, 0xea, 0x2a, 0x82, 0x80, 0x65, 0x36, 0xcf, 0xcc, 0xfc, 0x1a, 0x77, 0xe7, 0x0d, + 0x93, 0x05, 0x4e, 0xf2, 0xa4, 0xb2, 0x29, 0x5f, 0xf5, 0xe2, 0x4d, 0x51, 0xb7, 0xbd, 0x83, 0x5f, + 0xc9, 0xd9, 0x69, 0xc4, 0x21, 0x58, 0x94, 0x47, 0x2e, 0x4c, 0x04, 0x86, 0x88, 0x20, 0x63, 0x77, + 0x9d, 0xed, 0x4d, 0x0e, 0xd1, 0xa2, 0xc2, 0x9b, 0x6c, 0x70, 0x92, 0xef, 0xec, 0x36, 0x8c, 0x19, + 0x1b, 0xc4, 0x43, 0xb5, 0xc7, 0x79, 0x30, 0x99, 0xdc, 0x0d, 0x1e, 0xaa, 0x19, 0xee, 0xcf, 0xfa, + 0x60, 0xdc, 0x9c, 0xbd, 0xe8, 0x3c, 0x0c, 0x0b, 0x26, 0x2a, 0x09, 0x93, 0x5a, 0x90, 0xab, 0x12, + 0x81, 0x63, 0x1a, 0x96, 0x7b, 0x8b, 0x15, 0xd7, 0xfc, 0xd5, 0xe3, 0xdc, 0x5b, 0x0a, 0x83, 0x35, + 0x2a, 0x7a, 0x9b, 0xbb, 0xe5, 0xfb, 0x91, 0x3a, 0xfb, 0xd4, 0x14, 0x5f, 0x60, 0x50, 0x2c, 0xb0, + 0xf4, 0xcc, 0xdb, 0x26, 0x81, 0x47, 0x1a, 0x66, 0x4c, 0x7f, 0x75, 0xe6, 0x5d, 0xd1, 0x91, 0xd8, + 0xa4, 0xa5, 0x27, 0xb7, 0x1f, 0xb2, 0x35, 0x23, 0xee, 0x8c, 0xb1, 0xff, 0x7f, 0x95, 0x47, 0x32, + 0x90, 0x78, 0xf4, 0x71, 0x38, 0xae, 0xe2, 0xe7, 0x89, 0x19, 0x21, 0x6b, 0x1c, 0x30, 0x54, 0x3c, + 0xc7, 0x17, 0xb3, 0xc9, 0x70, 0x5e, 0x79, 0xf4, 0x3a, 0x8c, 0x8b, 0x7b, 0x85, 0xe4, 0x38, 0x68, + 0x3a, 0xb3, 0x5d, 0x31, 0xb0, 0x38, 0x41, 0x2d, 0xb3, 0x12, 0x30, 0xd1, 0x5e, 0x72, 0x18, 0x4a, + 0x67, 0x25, 0xd0, 0xf1, 0x38, 0x55, 0x02, 0xcd, 0xc3, 0x04, 0x17, 0xf7, 0x5c, 0x6f, 0x93, 0x8f, + 0x89, 0x78, 0x5d, 0xa8, 0x16, 0xc2, 0x35, 0x13, 0x8d, 0x93, 0xf4, 0xe8, 0x22, 0x8c, 0x3a, 0x41, + 0x6d, 0xcb, 0x8d, 0x48, 0x8d, 0x4a, 0xe3, 0xcc, 0x9f, 0x4c, 0xf3, 0x06, 0x9c, 0xd7, 0x70, 0xd8, + 0xa0, 0xb4, 0xef, 0xc2, 0x74, 0x46, 0x88, 0x13, 0x3a, 0x71, 0x9c, 0x96, 0x2b, 0xbf, 0x29, 0xe1, + 0x72, 0x3f, 0x5f, 0x29, 0xcb, 0xaf, 0xd1, 0xa8, 0xe8, 0xec, 0x64, 0xa1, 0x50, 0xb4, 0x7c, 0xd1, + 0x6a, 0x76, 0xae, 0x48, 0x04, 0x8e, 0x69, 0xec, 0xbf, 0x29, 0xc0, 0x44, 0x86, 0xb5, 0x8a, 0xe5, + 0x2c, 0x4e, 0x5c, 0x70, 0xe2, 0x14, 0xc5, 0x66, 0x92, 0x8b, 0xc2, 0x01, 0x92, 0x5c, 0x14, 0xbb, + 0x25, 0xb9, 0xe8, 0x7b, 0x37, 0x49, 0x2e, 0xcc, 0x1e, 0xeb, 0xef, 0xa9, 0xc7, 0x32, 0x12, 0x63, + 0x0c, 0x1c, 0x30, 0x31, 0x86, 0xd1, 0xe9, 0x83, 0x3d, 0x74, 0xfa, 0x8f, 0x15, 0x60, 0x32, 0x69, + 0xe8, 0x3a, 0x04, 0x65, 0xf1, 0x1b, 0x86, 0xb2, 0xf8, 0x5c, 0x2f, 0xaf, 0xc1, 0x73, 0x15, 0xc7, + 0x38, 0xa1, 0x38, 0x7e, 0xba, 0x27, 0x6e, 0x9d, 0x95, 0xc8, 0xff, 0x6f, 0x01, 0x8e, 0x66, 0xda, + 0xff, 0x0e, 0xa1, 0x6f, 0xae, 0x19, 0x7d, 0xf3, 0x5c, 0xcf, 0x2f, 0xe5, 0x73, 0x3b, 0xe8, 0x66, + 0xa2, 0x83, 0xce, 0xf7, 0xce, 0xb2, 0x73, 0x2f, 0x7d, 0xa3, 0x08, 0xa7, 0x33, 0xcb, 0xc5, 0xba, + 0xd6, 0x15, 0x43, 0xd7, 0xfa, 0x7c, 0x42, 0xd7, 0x6a, 0x77, 0x2e, 0xfd, 0x60, 0x94, 0xaf, 0xe2, + 0xc5, 0x38, 0x8b, 0x7b, 0x71, 0x9f, 0x8a, 0x57, 0xe3, 0xc5, 0xb8, 0x62, 0x84, 0x4d, 0xbe, 0xdf, + 0x49, 0x0a, 0xd7, 0xdf, 0xb3, 0xe0, 0x44, 0xe6, 0xd8, 0x1c, 0x82, 0x82, 0x6d, 0xcd, 0x54, 0xb0, + 0x3d, 0xd5, 0xf3, 0x6c, 0xcd, 0xd1, 0xb8, 0x7d, 0x61, 0x20, 0xe7, 0x5b, 0x98, 0xd2, 0xe0, 0x1a, + 0x8c, 0x38, 0xb5, 0x1a, 0x09, 0xc3, 0x55, 0xbf, 0xae, 0xe2, 0xe1, 0x3f, 0xc7, 0xae, 0x74, 0x31, + 0x78, 0x7f, 0xaf, 0x34, 0x9b, 0x64, 0x11, 0xa3, 0xb1, 0xce, 0x01, 0x7d, 0x12, 0x86, 0x42, 0x99, + 0xca, 0xb0, 0xef, 0xfe, 0x53, 0x19, 0x32, 0x7d, 0x84, 0x52, 0x8a, 0x28, 0x96, 0xe8, 0xbb, 0xf5, + 0x08, 0x44, 0x1d, 0x34, 0x7a, 0xbc, 0x91, 0xf7, 0x11, 0x87, 0xe8, 0x79, 0x80, 0x1d, 0x75, 0xfb, + 0x48, 0x2a, 0x3c, 0xb4, 0x7b, 0x89, 0x46, 0x85, 0x3e, 0x0a, 0x93, 0x21, 0x0f, 0xbe, 0x19, 0x7b, + 0x6c, 0xf0, 0xb9, 0xc8, 0xe2, 0x97, 0x55, 0x13, 0x38, 0x9c, 0xa2, 0x46, 0x2b, 0xb2, 0x56, 0xe6, + 0x9b, 0xc3, 0xa7, 0xe7, 0xd9, 0xb8, 0x46, 0xe1, 0x9f, 0x73, 0x24, 0x39, 0x08, 0xac, 0xfb, 0xb5, + 0x92, 0xe8, 0x93, 0x00, 0x74, 0x12, 0x09, 0xc5, 0xc7, 0x60, 0xfe, 0x16, 0x4a, 0xf7, 0x96, 0x7a, + 0xa6, 0x37, 0x3d, 0x7b, 0xea, 0xbd, 0xa4, 0x98, 0x60, 0x8d, 0x21, 0x72, 0x60, 0x2c, 0xfe, 0x17, + 0xa7, 0x15, 0x3f, 0x97, 0x5b, 0x43, 0x92, 0x39, 0xd3, 0xb6, 0x2f, 0xe9, 0x2c, 0xb0, 0xc9, 0x11, + 0x7d, 0x02, 0x4e, 0xec, 0xe4, 0xba, 0xc1, 0x0c, 0xc7, 0x99, 0x42, 0xf3, 0x9d, 0x5f, 0xf2, 0xcb, + 0xdb, 0xff, 0x02, 0xe0, 0x91, 0x0e, 0x3b, 0x3d, 0x9a, 0x37, 0x4d, 0xd8, 0xcf, 0x24, 0xb5, 0x11, + 0xb3, 0x99, 0x85, 0x0d, 0xf5, 0x44, 0x62, 0x41, 0x15, 0xde, 0xf5, 0x82, 0xfa, 0x11, 0x4b, 0xd3, + 0x13, 0x71, 0x07, 0xe7, 0x8f, 0x1c, 0xf0, 0x04, 0x7b, 0x80, 0x8a, 0xa3, 0x8d, 0x0c, 0xed, 0xcb, + 0xf3, 0x3d, 0x37, 0xa7, 0x77, 0x75, 0xcc, 0xd7, 0xb2, 0x23, 0x7e, 0x73, 0xc5, 0xcc, 0xa5, 0x83, + 0x7e, 0xff, 0x61, 0x45, 0xff, 0xfe, 0x23, 0x0b, 0x4e, 0xa4, 0xc0, 0xbc, 0x0d, 0x24, 0x14, 0x11, + 0xd7, 0xd6, 0xde, 0x75, 0xe3, 0x25, 0x43, 0xfe, 0x0d, 0x97, 0xc5, 0x37, 0x9c, 0xc8, 0xa5, 0x4b, + 0x36, 0xfd, 0x8b, 0x7f, 0x5a, 0x9a, 0x66, 0x15, 0x98, 0x84, 0x38, 0xbf, 0xe9, 0xa8, 0x05, 0x67, + 0x6a, 0xed, 0x20, 0x88, 0x27, 0x6b, 0xc6, 0xe2, 0xe4, 0x77, 0xbd, 0xc7, 0xef, 0xed, 0x95, 0xce, + 0x2c, 0x76, 0xa1, 0xc5, 0x5d, 0xb9, 0x21, 0x0f, 0x50, 0x33, 0xe5, 0x6c, 0xc6, 0x36, 0x80, 0x1c, + 0xdd, 0x49, 0xda, 0x35, 0x8d, 0xbb, 0x8d, 0x66, 0xb8, 0xac, 0x65, 0x70, 0x3e, 0x5c, 0xed, 0xc9, + 0xb7, 0x26, 0x36, 0xfa, 0xec, 0x55, 0x38, 0xdd, 0x79, 0x32, 0x1d, 0x28, 0x9c, 0xc0, 0x1f, 0x5a, + 0x70, 0xaa, 0x63, 0xcc, 0xaa, 0x6f, 0xc3, 0xcb, 0x82, 0xfd, 0x39, 0x0b, 0x1e, 0xcd, 0x2c, 0x61, + 0xf8, 0x35, 0x9e, 0x87, 0xe1, 0x5a, 0x22, 0x17, 0x76, 0x1c, 0xbd, 0x45, 0xe5, 0xc1, 0x8e, 0x69, + 0x0c, 0xf7, 0xc5, 0x42, 0x57, 0xf7, 0xc5, 0xdf, 0xb6, 0x20, 0x75, 0xd4, 0x1f, 0x82, 0xe4, 0x59, + 0x36, 0x25, 0xcf, 0xc7, 0x7b, 0xe9, 0xcd, 0x1c, 0xa1, 0xf3, 0xaf, 0x26, 0xe0, 0x58, 0xce, 0x6b, + 0xe0, 0x1d, 0x98, 0xda, 0xac, 0x11, 0x33, 0xfc, 0x43, 0xa7, 0xb0, 0x68, 0x1d, 0x63, 0x45, 0xf0, + 0x14, 0xe4, 0x29, 0x12, 0x9c, 0xae, 0x02, 0x7d, 0xce, 0x82, 0x23, 0xce, 0xed, 0x70, 0x99, 0xde, + 0x20, 0xdc, 0xda, 0x42, 0xc3, 0xaf, 0x6d, 0x53, 0xc1, 0x4c, 0x2e, 0xab, 0x17, 0x33, 0x15, 0xc8, + 0x37, 0xab, 0x29, 0x7a, 0xa3, 0xfa, 0x99, 0x7b, 0x7b, 0xa5, 0x23, 0x59, 0x54, 0x38, 0xb3, 0x2e, + 0x84, 0x45, 0xca, 0x27, 0x27, 0xda, 0xea, 0x14, 0xa0, 0x24, 0xeb, 0xd9, 0x36, 0x17, 0x89, 0x25, + 0x06, 0x2b, 0x3e, 0xe8, 0xd3, 0x30, 0xbc, 0x29, 0x63, 0x11, 0x64, 0x88, 0xdc, 0x71, 0x47, 0x76, + 0x8e, 0xd0, 0xc0, 0xfd, 0x41, 0x14, 0x11, 0x8e, 0x99, 0xa2, 0xd7, 0xa1, 0xe8, 0x6d, 0x84, 0x22, + 0x4c, 0x5a, 0xb6, 0x5b, 0xaa, 0xe9, 0xf8, 0xcb, 0xc3, 0x00, 0xad, 0xad, 0x54, 0x31, 0x2d, 0x88, + 0x2e, 0x43, 0x31, 0xb8, 0x55, 0x17, 0xd6, 0x8f, 0xcc, 0x45, 0x8a, 0x17, 0x96, 0x72, 0x5a, 0xc5, + 0x38, 0xe1, 0x85, 0x25, 0x4c, 0x59, 0xa0, 0x0a, 0xf4, 0xb3, 0x27, 0xb4, 0x42, 0xb4, 0xcd, 0xbc, + 0xca, 0x77, 0x78, 0x8a, 0xce, 0x9f, 0xe7, 0x31, 0x02, 0xcc, 0x19, 0xa1, 0x75, 0x18, 0xa8, 0xb1, + 0xfc, 0xfe, 0x42, 0x96, 0xfd, 0x60, 0xa6, 0x9d, 0x83, 0x51, 0xe4, 0xf0, 0xe4, 0x6a, 0x7f, 0x46, + 0x81, 0x05, 0x2f, 0xc6, 0x95, 0xb4, 0xb6, 0x36, 0xe4, 0x89, 0x95, 0xcd, 0x95, 0xb4, 0xb6, 0x56, + 0xaa, 0x1d, 0xb9, 0x32, 0x0a, 0x2c, 0x78, 0xa1, 0x57, 0xa0, 0xb0, 0x51, 0x13, 0xcf, 0x63, 0x33, + 0x0d, 0x1e, 0x66, 0x24, 0xa7, 0x85, 0x81, 0x7b, 0x7b, 0xa5, 0xc2, 0xca, 0x22, 0x2e, 0x6c, 0xd4, + 0xd0, 0x1a, 0x0c, 0x6e, 0xf0, 0xd8, 0x2f, 0xc2, 0xa6, 0xf1, 0x64, 0x76, 0x58, 0x9a, 0x54, 0x78, + 0x18, 0xfe, 0xd4, 0x52, 0x20, 0xb0, 0x64, 0xc2, 0x32, 0x10, 0xa9, 0x18, 0x36, 0x22, 0x84, 0xe6, + 0xdc, 0xc1, 0xe2, 0x0e, 0xf1, 0xab, 0x46, 0x1c, 0x09, 0x07, 0x6b, 0x1c, 0xe9, 0xac, 0x76, 0xee, + 0xb6, 0x03, 0x96, 0x5f, 0x41, 0xc4, 0x5a, 0xcb, 0x9c, 0xd5, 0xf3, 0x92, 0xa8, 0xd3, 0xac, 0x56, + 0x44, 0x38, 0x66, 0x8a, 0xb6, 0x61, 0x6c, 0x27, 0x6c, 0x6d, 0x11, 0xb9, 0xa4, 0x59, 0xe8, 0xb5, + 0x1c, 0x69, 0xf6, 0x86, 0x20, 0x74, 0x83, 0xa8, 0xed, 0x34, 0x52, 0xbb, 0x10, 0xbb, 0xd6, 0xdc, + 0xd0, 0x99, 0x61, 0x93, 0x37, 0xed, 0xfe, 0x77, 0xda, 0xfe, 0xad, 0xdd, 0x88, 0x88, 0xc8, 0x97, + 0x99, 0xdd, 0xff, 0x26, 0x27, 0x49, 0x77, 0xbf, 0x40, 0x60, 0xc9, 0x04, 0xdd, 0x10, 0xdd, 0xc3, + 0x76, 0xcf, 0xc9, 0xfc, 0xb0, 0xda, 0xf3, 0x92, 0x28, 0xa7, 0x53, 0xd8, 0x6e, 0x19, 0xb3, 0x62, + 0xbb, 0x64, 0x6b, 0xcb, 0x8f, 0x7c, 0x2f, 0xb1, 0x43, 0x4f, 0xe5, 0xef, 0x92, 0x95, 0x0c, 0xfa, + 0xf4, 0x2e, 0x99, 0x45, 0x85, 0x33, 0xeb, 0x42, 0x75, 0x18, 0x6f, 0xf9, 0x41, 0x74, 0xdb, 0x0f, + 0xe4, 0xfc, 0x42, 0x1d, 0x14, 0xa5, 0x06, 0xa5, 0xa8, 0x91, 0x05, 0x95, 0x35, 0x31, 0x38, 0xc1, + 0x13, 0x7d, 0x0c, 0x06, 0xc3, 0x9a, 0xd3, 0x20, 0xe5, 0x6b, 0x33, 0xd3, 0xf9, 0xc7, 0x4f, 0x95, + 0x93, 0xe4, 0xcc, 0x2e, 0x1e, 0xba, 0x87, 0x93, 0x60, 0xc9, 0x0e, 0xad, 0x40, 0x3f, 0xcb, 0xec, + 0xcb, 0xc2, 0xb4, 0xe6, 0x44, 0x07, 0x4f, 0xbd, 0x31, 0xe1, 0x7b, 0x13, 0x03, 0x63, 0x5e, 0x9c, + 0xae, 0x01, 0xa1, 0x29, 0xf0, 0xc3, 0x99, 0xa3, 0xf9, 0x6b, 0x40, 0x28, 0x18, 0xae, 0x55, 0x3b, + 0xad, 0x01, 0x45, 0x84, 0x63, 0xa6, 0x74, 0x67, 0xa6, 0xbb, 0xe9, 0xb1, 0x0e, 0xfe, 0x83, 0xb9, + 0x7b, 0x29, 0xdb, 0x99, 0xe9, 0x4e, 0x4a, 0x59, 0xd8, 0xbf, 0x39, 0x94, 0x96, 0x59, 0x98, 0x86, + 0xe9, 0x7f, 0xb5, 0x52, 0x7e, 0x0e, 0x1f, 0xea, 0x55, 0xe1, 0xfd, 0x00, 0x2f, 0xae, 0x9f, 0xb3, + 0xe0, 0x58, 0x2b, 0xf3, 0x43, 0x84, 0x00, 0xd0, 0x9b, 0xde, 0x9c, 0x7f, 0xba, 0x0a, 0xe9, 0x9b, + 0x8d, 0xc7, 0x39, 0x35, 0x25, 0x95, 0x03, 0xc5, 0x77, 0xad, 0x1c, 0x58, 0x85, 0xa1, 0x1a, 0xbf, + 0xc9, 0xc9, 0x50, 0xf4, 0x3d, 0x05, 0xa4, 0x64, 0xa2, 0x84, 0xb8, 0x02, 0x6e, 0x60, 0xc5, 0x02, + 0xfd, 0xa8, 0x05, 0xa7, 0x92, 0x4d, 0xc7, 0x84, 0xa1, 0x45, 0x1c, 0x60, 0xae, 0xd6, 0x5a, 0x11, + 0xdf, 0x9f, 0x92, 0xff, 0x0d, 0xe2, 0xfd, 0x6e, 0x04, 0xb8, 0x73, 0x65, 0x68, 0x29, 0x43, 0xaf, + 0x36, 0x60, 0x5a, 0x14, 0x7b, 0xd0, 0xad, 0xbd, 0x08, 0xa3, 0x4d, 0xbf, 0xed, 0x45, 0xc2, 0xdd, + 0x50, 0x38, 0x3c, 0x31, 0x47, 0x9f, 0x55, 0x0d, 0x8e, 0x0d, 0xaa, 0x84, 0x46, 0x6e, 0xe8, 0xbe, + 0x35, 0x72, 0x6f, 0xc3, 0xa8, 0xa7, 0xf9, 0xc7, 0x77, 0xba, 0xc1, 0x0a, 0xed, 0xa2, 0x46, 0xcd, + 0x5b, 0xa9, 0x43, 0xb0, 0xc1, 0xad, 0xb3, 0xb6, 0x0c, 0xde, 0x9d, 0xb6, 0xec, 0x50, 0xaf, 0xc4, + 0xf6, 0x2f, 0x14, 0x32, 0x6e, 0x0c, 0x5c, 0x2b, 0xf7, 0x9a, 0xa9, 0x95, 0x3b, 0x9b, 0xd4, 0xca, + 0xa5, 0x4c, 0x55, 0x86, 0x42, 0xae, 0xf7, 0x94, 0x82, 0x3d, 0x07, 0x19, 0xfe, 0x7e, 0x0b, 0x8e, + 0x33, 0xdb, 0x07, 0xad, 0xe0, 0x5d, 0xdb, 0x3b, 0x98, 0x2b, 0xe8, 0xd5, 0x6c, 0x76, 0x38, 0xaf, + 0x1e, 0xbb, 0x01, 0x67, 0xba, 0x9d, 0xbb, 0xcc, 0xb1, 0xb6, 0xae, 0x9c, 0x23, 0x62, 0xc7, 0xda, + 0x7a, 0x79, 0x09, 0x33, 0x4c, 0xaf, 0x21, 0xf4, 0xec, 0xff, 0x64, 0x41, 0xb1, 0xe2, 0xd7, 0x0f, + 0xe1, 0x46, 0xff, 0x11, 0xe3, 0x46, 0xff, 0x48, 0xf6, 0x89, 0x5f, 0xcf, 0x35, 0xf6, 0x2d, 0x27, + 0x8c, 0x7d, 0xa7, 0xf2, 0x18, 0x74, 0x36, 0xed, 0xfd, 0x74, 0x11, 0x46, 0x2a, 0x7e, 0x5d, 0xad, + 0xb3, 0x7f, 0x7a, 0x3f, 0xaf, 0x5a, 0x72, 0x33, 0x20, 0x69, 0x9c, 0x99, 0x17, 0xae, 0x0c, 0xc2, + 0xf0, 0x6d, 0xf6, 0xb8, 0xe5, 0x26, 0x71, 0x37, 0xb7, 0x22, 0x52, 0x4f, 0x7e, 0xce, 0xe1, 0x3d, + 0x6e, 0xf9, 0x66, 0x11, 0x26, 0x12, 0xb5, 0xa3, 0x06, 0x8c, 0x35, 0x74, 0x53, 0x92, 0x98, 0xa7, + 0xf7, 0x65, 0x85, 0x12, 0x8f, 0x03, 0x34, 0x10, 0x36, 0x99, 0xa3, 0x39, 0x00, 0xe5, 0x5b, 0x21, + 0xb5, 0xfd, 0xec, 0x5a, 0xa3, 0x9c, 0x2f, 0x42, 0xac, 0x51, 0xa0, 0x97, 0x60, 0x24, 0xf2, 0x5b, + 0x7e, 0xc3, 0xdf, 0xdc, 0xbd, 0x42, 0x64, 0x74, 0x45, 0xe5, 0xe8, 0xbb, 0x1e, 0xa3, 0xb0, 0x4e, + 0x87, 0xee, 0xc0, 0x94, 0x62, 0x52, 0x7d, 0x00, 0xe6, 0x35, 0xa6, 0x36, 0x59, 0x4b, 0x72, 0xc4, + 0xe9, 0x4a, 0xd0, 0x2b, 0x30, 0xce, 0x3c, 0x8e, 0x59, 0xf9, 0x2b, 0x64, 0x57, 0x46, 0xdd, 0x65, + 0x12, 0xf6, 0xaa, 0x81, 0xc1, 0x09, 0x4a, 0xb4, 0x08, 0x53, 0x4d, 0x37, 0x4c, 0x14, 0x1f, 0x60, + 0xc5, 0x59, 0x03, 0x56, 0x93, 0x48, 0x9c, 0xa6, 0xb7, 0x7f, 0x4e, 0x8c, 0xb1, 0x17, 0xb9, 0xef, + 0x2f, 0xc7, 0xf7, 0xf6, 0x72, 0xfc, 0x86, 0x05, 0x93, 0xb4, 0x76, 0xe6, 0x46, 0x29, 0x05, 0x29, + 0x95, 0x97, 0xc1, 0xea, 0x90, 0x97, 0xe1, 0x2c, 0xdd, 0xb6, 0xeb, 0x7e, 0x3b, 0x12, 0xda, 0x51, + 0x6d, 0x5f, 0xa6, 0x50, 0x2c, 0xb0, 0x82, 0x8e, 0x04, 0x81, 0x78, 0x04, 0xae, 0xd3, 0x91, 0x20, + 0xc0, 0x02, 0x2b, 0xd3, 0x36, 0xf4, 0x65, 0xa7, 0x6d, 0xe0, 0xd1, 0xb7, 0x85, 0x17, 0x9c, 0x10, + 0x69, 0xb5, 0xe8, 0xdb, 0xd2, 0x3d, 0x2e, 0xa6, 0xb1, 0xbf, 0x56, 0x84, 0xd1, 0x8a, 0x5f, 0x8f, + 0x1d, 0x3b, 0x5e, 0x34, 0x1c, 0x3b, 0xce, 0x24, 0x1c, 0x3b, 0x26, 0x75, 0xda, 0xf7, 0xdd, 0x38, + 0xbe, 0x55, 0x6e, 0x1c, 0xbf, 0x65, 0xb1, 0x51, 0x5b, 0x5a, 0xab, 0x72, 0xaf, 0x5c, 0x74, 0x01, + 0x46, 0xd8, 0x0e, 0xc7, 0xa2, 0x0e, 0x48, 0x6f, 0x07, 0x96, 0x46, 0x71, 0x2d, 0x06, 0x63, 0x9d, + 0x06, 0x9d, 0x83, 0xa1, 0x90, 0x38, 0x41, 0x6d, 0x4b, 0x6d, 0xef, 0xc2, 0x35, 0x81, 0xc3, 0xb0, + 0xc2, 0xa2, 0x37, 0xe3, 0xc0, 0xcf, 0xc5, 0x7c, 0x17, 0x5f, 0xbd, 0x3d, 0x7c, 0x89, 0xe4, 0x47, + 0x7b, 0xb6, 0x6f, 0x02, 0x4a, 0xd3, 0xf7, 0xf0, 0xec, 0xa9, 0x64, 0x86, 0x26, 0x1d, 0x4e, 0x85, + 0x25, 0xfd, 0x5b, 0x0b, 0xc6, 0x2b, 0x7e, 0x9d, 0x2e, 0xdd, 0xef, 0xa4, 0x75, 0xaa, 0x47, 0xbd, + 0x1f, 0xe8, 0x10, 0xf5, 0xfe, 0x31, 0xe8, 0xaf, 0xf8, 0xf5, 0x2e, 0xe1, 0x53, 0xff, 0x3f, 0x0b, + 0x06, 0x2b, 0x7e, 0xfd, 0x10, 0x0c, 0x2f, 0xaf, 0x99, 0x86, 0x97, 0xe3, 0x39, 0xf3, 0x26, 0xc7, + 0xd6, 0xf2, 0xff, 0xf4, 0xc1, 0x18, 0x6d, 0xa7, 0xbf, 0x29, 0x87, 0xd2, 0xe8, 0x36, 0xab, 0x87, + 0x6e, 0xa3, 0xd7, 0x00, 0xbf, 0xd1, 0xf0, 0x6f, 0x27, 0x87, 0x75, 0x85, 0x41, 0xb1, 0xc0, 0xa2, + 0x67, 0x61, 0xa8, 0x15, 0x90, 0x1d, 0xd7, 0x17, 0xf2, 0xb5, 0x66, 0xc6, 0xaa, 0x08, 0x38, 0x56, + 0x14, 0xf4, 0xe2, 0x1d, 0xba, 0x1e, 0x95, 0x25, 0x6a, 0xbe, 0x57, 0xe7, 0xb6, 0x89, 0xa2, 0x48, + 0xcd, 0xa4, 0xc1, 0xb1, 0x41, 0x85, 0x6e, 0xc2, 0x30, 0xfb, 0xcf, 0xb6, 0x9d, 0x83, 0xe7, 0xcd, + 0x17, 0xc9, 0x6a, 0x05, 0x03, 0x1c, 0xf3, 0x42, 0xcf, 0x03, 0x44, 0x32, 0xbd, 0x49, 0x28, 0xc2, + 0x68, 0xaa, 0xbb, 0x88, 0x4a, 0x7c, 0x12, 0x62, 0x8d, 0x0a, 0x3d, 0x03, 0xc3, 0x91, 0xe3, 0x36, + 0xae, 0xba, 0x1e, 0xb3, 0xdf, 0xd3, 0xf6, 0x8b, 0x9c, 0xb1, 0x02, 0x88, 0x63, 0x3c, 0x95, 0x05, + 0x59, 0x80, 0xa4, 0x85, 0xdd, 0x48, 0xa4, 0x47, 0x2b, 0x72, 0x59, 0xf0, 0xaa, 0x82, 0x62, 0x8d, + 0x02, 0x6d, 0xc1, 0x49, 0xd7, 0x63, 0x69, 0x8c, 0x48, 0x75, 0xdb, 0x6d, 0xad, 0x5f, 0xad, 0xde, + 0x20, 0x81, 0xbb, 0xb1, 0xbb, 0xe0, 0xd4, 0xb6, 0x89, 0x27, 0x33, 0xa2, 0x3f, 0x2e, 0x9a, 0x78, + 0xb2, 0xdc, 0x81, 0x16, 0x77, 0xe4, 0x64, 0xbf, 0xc0, 0xe6, 0xfb, 0xb5, 0x2a, 0x7a, 0xda, 0xd8, + 0x3a, 0x8e, 0xe9, 0x5b, 0xc7, 0xfe, 0x5e, 0x69, 0xe0, 0x5a, 0x55, 0x0b, 0x84, 0x73, 0x11, 0x8e, + 0x56, 0xfc, 0x7a, 0xc5, 0x0f, 0xa2, 0x15, 0x3f, 0xb8, 0xed, 0x04, 0x75, 0x39, 0xbd, 0x4a, 0x32, + 0x14, 0x10, 0xdd, 0x3f, 0xfb, 0xf9, 0xee, 0x62, 0x84, 0xf9, 0x79, 0x81, 0x49, 0x6c, 0x07, 0x7c, + 0xe3, 0x59, 0x63, 0xb2, 0x83, 0x4a, 0x04, 0x76, 0xc9, 0x89, 0x08, 0xba, 0x06, 0x63, 0x35, 0xfd, + 0x18, 0x15, 0xc5, 0x9f, 0x92, 0x07, 0x99, 0x71, 0xc6, 0x66, 0x9e, 0xbb, 0x66, 0x79, 0xfb, 0x7b, + 0x44, 0x25, 0x5c, 0x11, 0xc1, 0x5d, 0x5a, 0xbb, 0x6f, 0xa7, 0x71, 0xa6, 0xa0, 0x42, 0x7e, 0x14, + 0x48, 0x6e, 0x57, 0xee, 0x98, 0x29, 0xc8, 0xfe, 0x5e, 0x38, 0x96, 0xac, 0x5e, 0xe8, 0x38, 0xba, + 0x37, 0x62, 0x11, 0xa6, 0x02, 0xbd, 0xa0, 0x96, 0x76, 0xf1, 0x28, 0xcf, 0xee, 0x92, 0x40, 0xe2, + 0x34, 0xbd, 0xfd, 0x12, 0x4c, 0xd1, 0xcb, 0xaf, 0x12, 0xe4, 0x58, 0x2f, 0x77, 0x8f, 0x89, 0xf4, + 0x2f, 0x07, 0xd9, 0x41, 0x94, 0xc8, 0xc1, 0x85, 0x3e, 0x05, 0xe3, 0x21, 0x61, 0x81, 0xc0, 0xa4, + 0x6e, 0xad, 0xc3, 0xe3, 0xe6, 0xea, 0xb2, 0x4e, 0xc9, 0xef, 0x0f, 0x26, 0x0c, 0x27, 0xb8, 0xa1, + 0x26, 0x8c, 0xdf, 0x76, 0xbd, 0xba, 0x7f, 0x3b, 0x94, 0xfc, 0x87, 0xf2, 0x15, 0xf5, 0x37, 0x39, + 0x65, 0xa2, 0x8d, 0x46, 0x75, 0x37, 0x0d, 0x66, 0x38, 0xc1, 0x9c, 0x2e, 0xf6, 0xa0, 0xed, 0xcd, + 0x87, 0xd7, 0x43, 0x12, 0x88, 0x30, 0x65, 0x3c, 0x23, 0xbf, 0x04, 0xe2, 0x18, 0x4f, 0x17, 0x3b, + 0xfb, 0xc3, 0xa2, 0x8e, 0xb1, 0xdd, 0x44, 0x2c, 0x76, 0xac, 0xa0, 0x58, 0xa3, 0xa0, 0x9b, 0x21, + 0xfb, 0xb7, 0xe6, 0x7b, 0xd8, 0xf7, 0x23, 0xb9, 0x7d, 0xb2, 0x84, 0x85, 0x1a, 0x1c, 0x1b, 0x54, + 0x39, 0x41, 0xd1, 0xfa, 0x0e, 0x1a, 0x14, 0x0d, 0x45, 0x30, 0x93, 0x86, 0x0a, 0x95, 0x2e, 0x8f, + 0x89, 0x7b, 0xf1, 0xde, 0x5e, 0x69, 0xa6, 0x9a, 0x43, 0xb3, 0xdf, 0x01, 0x87, 0x73, 0x39, 0xd3, + 0xd3, 0x78, 0x43, 0x74, 0x50, 0x3f, 0x8f, 0xfa, 0xc6, 0x4c, 0x89, 0x55, 0xde, 0x3b, 0x12, 0x87, + 0x96, 0x61, 0x30, 0xdc, 0x0d, 0x6b, 0x51, 0x23, 0xec, 0x94, 0x94, 0xb2, 0xca, 0x48, 0xb4, 0x9c, + 0xc8, 0xbc, 0x08, 0x96, 0x65, 0x51, 0x0d, 0xa6, 0x05, 0xc7, 0xc5, 0x2d, 0xc7, 0x53, 0xa9, 0xf2, + 0xb8, 0xcf, 0xe0, 0x85, 0x7b, 0x7b, 0xa5, 0x69, 0x51, 0xb3, 0x8e, 0xde, 0xdf, 0x2b, 0xd1, 0x25, + 0x99, 0x81, 0xc1, 0x59, 0xdc, 0xf8, 0x94, 0xaf, 0xd5, 0xfc, 0x66, 0xab, 0x12, 0xf8, 0x1b, 0x6e, + 0x83, 0x74, 0x32, 0xc7, 0x56, 0x0d, 0x4a, 0x31, 0xe5, 0x0d, 0x18, 0x4e, 0x70, 0x43, 0xb7, 0x60, + 0xc2, 0x69, 0xb5, 0xe6, 0x83, 0xa6, 0x1f, 0xc8, 0x0a, 0x46, 0xf2, 0xf5, 0xfa, 0xf3, 0x26, 0x29, + 0xcf, 0x94, 0x97, 0x00, 0xe2, 0x24, 0x43, 0xfb, 0x7b, 0x98, 0x54, 0x5c, 0x75, 0x37, 0x3d, 0xf6, + 0x5a, 0x1d, 0x35, 0x61, 0xac, 0xc5, 0xf6, 0x4d, 0x91, 0x60, 0x4a, 0xac, 0xe2, 0x17, 0x7b, 0xd4, + 0xec, 0xdd, 0x66, 0x29, 0x32, 0x0d, 0x0f, 0xcf, 0x8a, 0xce, 0x0e, 0x9b, 0xdc, 0xed, 0x7f, 0x75, + 0x82, 0xc9, 0x55, 0x55, 0xae, 0xae, 0x1b, 0x14, 0x6f, 0xef, 0xc4, 0x05, 0x7d, 0x36, 0x5f, 0x31, + 0x1e, 0x0f, 0xbd, 0x78, 0xbf, 0x87, 0x65, 0x59, 0xf4, 0x49, 0x18, 0xa7, 0xf7, 0x5d, 0x25, 0xdb, + 0x84, 0x33, 0x47, 0xf2, 0xa3, 0x25, 0x29, 0x2a, 0x3d, 0xf9, 0x9c, 0x5e, 0x18, 0x27, 0x98, 0xa1, + 0x37, 0x99, 0xd3, 0xa3, 0x64, 0x5d, 0xe8, 0x85, 0xb5, 0xee, 0xdf, 0x28, 0xd9, 0x6a, 0x4c, 0x50, + 0x1b, 0xa6, 0xd3, 0x29, 0x76, 0xc3, 0x19, 0x3b, 0xff, 0xe2, 0x90, 0xce, 0x92, 0x1b, 0x67, 0x09, + 0x4b, 0xe3, 0x42, 0x9c, 0xc5, 0x1f, 0x5d, 0x4d, 0x26, 0x40, 0x2d, 0x1a, 0x2a, 0xf5, 0x54, 0x12, + 0xd4, 0xb1, 0x8e, 0xb9, 0x4f, 0x37, 0xe1, 0x94, 0x96, 0x43, 0xf2, 0x52, 0xe0, 0x30, 0xa7, 0x1b, + 0x97, 0x1d, 0x14, 0x9a, 0xc4, 0xf7, 0xe8, 0xbd, 0xbd, 0xd2, 0xa9, 0xf5, 0x4e, 0x84, 0xb8, 0x33, + 0x1f, 0x74, 0x0d, 0x8e, 0xf2, 0x58, 0x1f, 0x4b, 0xc4, 0xa9, 0x37, 0x5c, 0x4f, 0x89, 0x94, 0x7c, + 0x5b, 0x39, 0x71, 0x6f, 0xaf, 0x74, 0x74, 0x3e, 0x8b, 0x00, 0x67, 0x97, 0x43, 0xaf, 0xc1, 0x70, + 0xdd, 0x93, 0x1b, 0xe0, 0x80, 0x91, 0xa6, 0x73, 0x78, 0x69, 0xad, 0xaa, 0xbe, 0x3f, 0xfe, 0x83, + 0xe3, 0x02, 0x68, 0x93, 0xdb, 0x74, 0x94, 0x22, 0x6e, 0x30, 0x15, 0x02, 0x32, 0xa9, 0xab, 0x36, + 0xde, 0xf8, 0x73, 0x63, 0xa6, 0x7a, 0x8f, 0x66, 0x3c, 0xff, 0x37, 0x18, 0xa3, 0x37, 0x00, 0x89, + 0x74, 0x30, 0xf3, 0x35, 0x96, 0xbd, 0x4c, 0x73, 0xb4, 0x54, 0xf7, 0xeb, 0x6a, 0x8a, 0x02, 0x67, + 0x94, 0x42, 0x97, 0xe9, 0xce, 0xa5, 0x43, 0xc5, 0xce, 0xa8, 0x92, 0x41, 0x2f, 0x91, 0x56, 0x40, + 0x98, 0x6f, 0xa0, 0xc9, 0x11, 0x27, 0xca, 0xa1, 0x3a, 0x9c, 0x74, 0xda, 0x91, 0xcf, 0xcc, 0x65, + 0x26, 0xe9, 0xba, 0xbf, 0x4d, 0x3c, 0x66, 0xa9, 0x1e, 0x62, 0xa1, 0x25, 0x4f, 0xce, 0x77, 0xa0, + 0xc3, 0x1d, 0xb9, 0xd0, 0xbb, 0x06, 0xed, 0x0b, 0xcd, 0x92, 0x65, 0x3c, 0x57, 0xe6, 0xe6, 0x5d, + 0x49, 0x81, 0x5e, 0x82, 0x91, 0x2d, 0x3f, 0x8c, 0xd6, 0x48, 0x74, 0xdb, 0x0f, 0xb6, 0x45, 0xfc, + 0xf9, 0x38, 0xe7, 0x47, 0x8c, 0xc2, 0x3a, 0x1d, 0x7a, 0x0a, 0x06, 0x99, 0x1f, 0x55, 0x79, 0x89, + 0x1d, 0x83, 0x43, 0xf1, 0x1e, 0x73, 0x99, 0x83, 0xb1, 0xc4, 0x4b, 0xd2, 0x72, 0x65, 0x91, 0xb9, + 0xa3, 0x24, 0x48, 0xcb, 0x95, 0x45, 0x2c, 0xf1, 0x74, 0xba, 0x86, 0x5b, 0x4e, 0x40, 0x2a, 0x81, + 0x5f, 0x23, 0xa1, 0x96, 0x69, 0xe6, 0x11, 0x1e, 0x5d, 0x9f, 0x4e, 0xd7, 0x6a, 0x16, 0x01, 0xce, + 0x2e, 0x87, 0x48, 0x3a, 0x7f, 0xea, 0x78, 0xbe, 0x1d, 0x31, 0x2d, 0xa9, 0xf5, 0x98, 0x42, 0xd5, + 0x83, 0x49, 0x95, 0xb9, 0x95, 0xc7, 0xd3, 0x0f, 0x67, 0x26, 0xd8, 0xdc, 0xee, 0x3d, 0x18, 0xbf, + 0xb2, 0xcc, 0x96, 0x13, 0x9c, 0x70, 0x8a, 0xb7, 0x11, 0xbb, 0x74, 0xb2, 0x6b, 0xec, 0xd2, 0xf3, + 0x30, 0x1c, 0xb6, 0x6f, 0xd5, 0xfd, 0xa6, 0xe3, 0x7a, 0xcc, 0x1d, 0x45, 0xbb, 0xd5, 0x56, 0x25, + 0x02, 0xc7, 0x34, 0x68, 0x05, 0x86, 0x1c, 0x69, 0x76, 0x45, 0xf9, 0x61, 0xd9, 0x94, 0xb1, 0x95, + 0x47, 0x2a, 0x92, 0x86, 0x56, 0x55, 0x16, 0xbd, 0x0a, 0x63, 0x22, 0x42, 0x85, 0x48, 0x76, 0x3e, + 0x6d, 0xbe, 0xed, 0xad, 0xea, 0x48, 0x6c, 0xd2, 0xa2, 0xeb, 0x30, 0x12, 0xf9, 0x0d, 0xf6, 0x40, + 0x95, 0x0a, 0xb0, 0xc7, 0xf2, 0xa3, 0xa7, 0xae, 0x2b, 0x32, 0xdd, 0x20, 0xa0, 0x8a, 0x62, 0x9d, + 0x0f, 0x5a, 0xe7, 0xf3, 0x9d, 0xe5, 0x95, 0x21, 0xa1, 0xc8, 0x96, 0x7d, 0x2a, 0xcf, 0x97, 0x90, + 0x91, 0x99, 0xcb, 0x41, 0x94, 0xc4, 0x3a, 0x1b, 0x74, 0x09, 0xa6, 0x5a, 0x81, 0xeb, 0xb3, 0x39, + 0xa1, 0xcc, 0xc8, 0x33, 0x66, 0x16, 0xc9, 0x4a, 0x92, 0x00, 0xa7, 0xcb, 0xb0, 0x00, 0x23, 0x02, + 0x38, 0x73, 0x82, 0x67, 0xc2, 0xe2, 0x4a, 0x02, 0x0e, 0xc3, 0x0a, 0x8b, 0x56, 0xd9, 0x4e, 0xcc, + 0xf5, 0x5b, 0x33, 0xb3, 0xf9, 0x91, 0xe0, 0x74, 0x3d, 0x18, 0x17, 0xcb, 0xd5, 0x5f, 0x1c, 0x73, + 0x40, 0x75, 0x2d, 0x01, 0x35, 0xbd, 0xdc, 0x84, 0x33, 0x27, 0x3b, 0x38, 0xb3, 0x26, 0xee, 0x9b, + 0xb1, 0x40, 0x60, 0x80, 0x43, 0x9c, 0xe0, 0x89, 0x3e, 0x0a, 0x93, 0xe2, 0xf5, 0x7d, 0xdc, 0x4d, + 0xa7, 0xe2, 0x07, 0x3f, 0x38, 0x81, 0xc3, 0x29, 0x6a, 0x9e, 0x89, 0xca, 0xb9, 0xd5, 0x20, 0x62, + 0xeb, 0xbb, 0xea, 0x7a, 0xdb, 0xe1, 0xcc, 0x69, 0xb6, 0x3f, 0x88, 0x4c, 0x54, 0x49, 0x2c, 0xce, + 0x28, 0x81, 0xd6, 0x61, 0xb2, 0x15, 0x10, 0xd2, 0x64, 0x57, 0x18, 0x71, 0x9e, 0x95, 0x78, 0x7c, + 0x1d, 0xda, 0x92, 0x4a, 0x02, 0xb7, 0x9f, 0x01, 0xc3, 0x29, 0x0e, 0xe8, 0x36, 0x0c, 0xf9, 0x3b, + 0x24, 0xd8, 0x22, 0x4e, 0x7d, 0xe6, 0x4c, 0x87, 0x67, 0x68, 0xe2, 0x70, 0xbb, 0x26, 0x68, 0x13, + 0x5e, 0x3a, 0x12, 0xdc, 0xdd, 0x4b, 0x47, 0x56, 0x86, 0xfe, 0x37, 0x0b, 0x4e, 0x48, 0xbb, 0x57, + 0xb5, 0x45, 0x7b, 0x7d, 0xd1, 0xf7, 0xc2, 0x28, 0xe0, 0x11, 0x61, 0x1e, 0xcd, 0x8f, 0x92, 0xb2, + 0x9e, 0x53, 0x48, 0xa9, 0xd8, 0x4f, 0xe4, 0x51, 0x84, 0x38, 0xbf, 0x46, 0x7a, 0xe9, 0x0e, 0x49, + 0x24, 0x37, 0xa3, 0xf9, 0x70, 0xe5, 0xcd, 0xa5, 0xb5, 0x99, 0xc7, 0x78, 0x38, 0x1b, 0xba, 0x18, + 0xaa, 0x49, 0x24, 0x4e, 0xd3, 0xa3, 0x0b, 0x50, 0xf0, 0xc3, 0x99, 0xc7, 0x3b, 0xe4, 0x2c, 0xf7, + 0xeb, 0xd7, 0xaa, 0xdc, 0x5b, 0xf3, 0x5a, 0x15, 0x17, 0xfc, 0x50, 0x66, 0x83, 0xa2, 0x37, 0xcd, + 0x70, 0xe6, 0x09, 0xae, 0x90, 0x95, 0xd9, 0xa0, 0x18, 0x10, 0xc7, 0x78, 0xb4, 0x05, 0x13, 0xa1, + 0x71, 0xa3, 0x0f, 0x67, 0xce, 0xb2, 0x9e, 0x7a, 0x22, 0x6f, 0xd0, 0x0c, 0x6a, 0x2d, 0x4d, 0x8b, + 0xc9, 0x05, 0x27, 0xd9, 0xf2, 0xd5, 0xa5, 0xe9, 0x14, 0xc2, 0x99, 0x27, 0xbb, 0xac, 0x2e, 0x8d, + 0x58, 0x5f, 0x5d, 0x3a, 0x0f, 0x9c, 0xe0, 0x39, 0xfb, 0x5d, 0x30, 0x95, 0x12, 0x97, 0x0e, 0xf2, + 0x32, 0x61, 0x76, 0x1b, 0xc6, 0x8c, 0x29, 0xf9, 0x50, 0x1d, 0x57, 0x7e, 0x6f, 0x18, 0x86, 0x95, + 0x43, 0x01, 0x3a, 0x6f, 0xfa, 0xaa, 0x9c, 0x48, 0xfa, 0xaa, 0x0c, 0x55, 0xfc, 0xba, 0xe1, 0x9e, + 0xb2, 0x9e, 0x11, 0xfe, 0x34, 0x6f, 0x03, 0xec, 0xfd, 0xf9, 0x94, 0x66, 0x24, 0x29, 0xf6, 0xec, + 0xf4, 0xd2, 0xd7, 0xd1, 0xee, 0x72, 0x09, 0xa6, 0x3c, 0x9f, 0xc9, 0xe8, 0xa4, 0x2e, 0x05, 0x30, + 0x26, 0x67, 0x0d, 0xeb, 0x51, 0xc4, 0x12, 0x04, 0x38, 0x5d, 0x86, 0x56, 0xc8, 0x05, 0xa5, 0xa4, + 0xa1, 0x87, 0xcb, 0x51, 0x58, 0x60, 0xe9, 0xdd, 0x90, 0xff, 0x0a, 0x67, 0x26, 0xf3, 0xef, 0x86, + 0xbc, 0x50, 0x52, 0x18, 0x0b, 0xa5, 0x30, 0xc6, 0xec, 0x1a, 0x2d, 0xbf, 0x5e, 0xae, 0x08, 0x31, + 0x5f, 0x0b, 0x4c, 0x5e, 0x2f, 0x57, 0x30, 0xc7, 0xa1, 0x79, 0x18, 0x60, 0x3f, 0x64, 0x74, 0x96, + 0xbc, 0x65, 0x5a, 0xae, 0x68, 0xd9, 0x28, 0x59, 0x01, 0x2c, 0x0a, 0x32, 0xbd, 0x35, 0xbd, 0x1b, + 0x31, 0xbd, 0xf5, 0xe0, 0x7d, 0xea, 0xad, 0x25, 0x03, 0x1c, 0xf3, 0x42, 0x77, 0xe0, 0xa8, 0x71, + 0x1f, 0x55, 0xef, 0xc9, 0x20, 0xdf, 0xa4, 0x9d, 0x20, 0x5e, 0x38, 0x25, 0x1a, 0x7d, 0xb4, 0x9c, + 0xc5, 0x09, 0x67, 0x57, 0x80, 0x1a, 0x30, 0x55, 0x4b, 0xd5, 0x3a, 0xd4, 0x7b, 0xad, 0x6a, 0x5e, + 0xa4, 0x6b, 0x4c, 0x33, 0x46, 0xaf, 0xc2, 0xd0, 0x3b, 0x3e, 0x77, 0x3f, 0x13, 0x57, 0x13, 0x19, + 0xcb, 0x64, 0xe8, 0xcd, 0x6b, 0x55, 0x06, 0xdf, 0xdf, 0x2b, 0x8d, 0x54, 0xfc, 0xba, 0xfc, 0x8b, + 0x55, 0x01, 0xf4, 0x43, 0x16, 0xcc, 0xa6, 0x2f, 0xbc, 0xaa, 0xd1, 0x63, 0xbd, 0x37, 0xda, 0x16, + 0x95, 0xce, 0x2e, 0xe7, 0xb2, 0xc3, 0x1d, 0xaa, 0x42, 0x1f, 0xa6, 0xeb, 0x29, 0x74, 0xef, 0x12, + 0x91, 0xca, 0xfb, 0xd1, 0x78, 0x3d, 0x51, 0xe8, 0xfe, 0x5e, 0x69, 0x82, 0xef, 0x8c, 0xee, 0x5d, + 0x15, 0x42, 0x9d, 0x17, 0x40, 0xdf, 0x0b, 0x47, 0x83, 0xb4, 0x6e, 0x98, 0x48, 0x21, 0xfc, 0xe9, + 0x5e, 0x76, 0xd9, 0xe4, 0x80, 0xe3, 0x2c, 0x86, 0x38, 0xbb, 0x1e, 0xfb, 0xd7, 0x2d, 0xa6, 0xb9, + 0x17, 0xcd, 0x22, 0x61, 0xbb, 0x11, 0x1d, 0x82, 0xcb, 0xd7, 0xb2, 0x61, 0x15, 0xbf, 0x6f, 0x9f, + 0xad, 0x7f, 0x62, 0x31, 0x9f, 0xad, 0x43, 0x7c, 0x7d, 0xf6, 0x26, 0x0c, 0x45, 0xa2, 0x36, 0xd1, + 0xf4, 0x3c, 0xff, 0x12, 0xd9, 0x28, 0xe6, 0xb7, 0xa6, 0x2e, 0x39, 0x12, 0x8a, 0x15, 0x1b, 0xfb, + 0x1f, 0xf1, 0x11, 0x90, 0x98, 0x43, 0x30, 0x3e, 0x2e, 0x99, 0xc6, 0xc7, 0x52, 0x97, 0x2f, 0xc8, + 0x31, 0x42, 0xfe, 0x43, 0xb3, 0xdd, 0x4c, 0xb9, 0xf7, 0x5e, 0x77, 0x16, 0xb4, 0xbf, 0x60, 0x01, + 0xc4, 0x39, 0x2b, 0x7a, 0x48, 0xdd, 0x7b, 0x91, 0x5e, 0x6b, 0xfc, 0xc8, 0xaf, 0xf9, 0x0d, 0x61, + 0x7a, 0x39, 0x19, 0xdb, 0x3f, 0x39, 0x7c, 0x5f, 0xfb, 0x8d, 0x15, 0x35, 0x2a, 0xc9, 0x20, 0xb2, + 0xc5, 0xd8, 0x22, 0x6f, 0x04, 0x90, 0xfd, 0xb2, 0x05, 0x47, 0xb2, 0x9e, 0x32, 0xd0, 0x4b, 0x32, + 0x57, 0x73, 0x2a, 0x47, 0x4e, 0x35, 0x9a, 0x37, 0x04, 0x1c, 0x2b, 0x8a, 0x9e, 0x73, 0x22, 0x1f, + 0x2c, 0x9f, 0xc2, 0x35, 0x18, 0xab, 0x04, 0x44, 0x93, 0x2f, 0x5e, 0x8f, 0x53, 0xbd, 0x0c, 0x2f, + 0x3c, 0x7b, 0xe0, 0xf8, 0x40, 0xf6, 0x57, 0x0a, 0x70, 0x84, 0xbb, 0x23, 0xcd, 0xef, 0xf8, 0x6e, + 0xbd, 0xe2, 0xd7, 0xc5, 0x03, 0xd4, 0xb7, 0x60, 0xb4, 0xa5, 0xe9, 0xa6, 0x3b, 0xc5, 0x06, 0xd7, + 0x75, 0xd8, 0xb1, 0x36, 0x4d, 0x87, 0x62, 0x83, 0x17, 0xaa, 0xc3, 0x28, 0xd9, 0x71, 0x6b, 0xca, + 0xa7, 0xa5, 0x70, 0xe0, 0x43, 0x5a, 0xd5, 0xb2, 0xac, 0xf1, 0xc1, 0x06, 0xd7, 0x9e, 0x9d, 0x88, + 0x35, 0x11, 0xad, 0xaf, 0x8b, 0x1f, 0xcb, 0x8f, 0x5b, 0x70, 0x3c, 0x27, 0x92, 0x38, 0xad, 0xee, + 0x36, 0x73, 0xfc, 0x12, 0xd3, 0x56, 0x55, 0xc7, 0xdd, 0xc1, 0xb0, 0xc0, 0xa2, 0x8f, 0x01, 0x70, + 0x77, 0x2e, 0xe2, 0xd5, 0xba, 0x86, 0x5c, 0x36, 0x62, 0xc4, 0x6a, 0xe1, 0x3e, 0x65, 0x79, 0xac, + 0xf1, 0xb2, 0xbf, 0xdc, 0x07, 0xfd, 0xcc, 0x7d, 0x08, 0x55, 0x60, 0x70, 0x8b, 0x47, 0xa3, 0xeb, + 0x38, 0x6e, 0x94, 0x56, 0x86, 0xb7, 0x8b, 0xc7, 0x4d, 0x83, 0x62, 0xc9, 0x06, 0xad, 0xc2, 0x34, + 0x4f, 0xcc, 0xd8, 0x58, 0x22, 0x0d, 0x67, 0x57, 0xaa, 0x7d, 0x0b, 0xec, 0x53, 0x95, 0xfa, 0xbb, + 0x9c, 0x26, 0xc1, 0x59, 0xe5, 0xd0, 0xeb, 0x30, 0x4e, 0xaf, 0xe1, 0x7e, 0x3b, 0x92, 0x9c, 0x78, + 0x4a, 0x46, 0x75, 0x33, 0x59, 0x37, 0xb0, 0x38, 0x41, 0x8d, 0x5e, 0x85, 0xb1, 0x56, 0x4a, 0xc1, + 0xdd, 0x1f, 0x6b, 0x82, 0x4c, 0xa5, 0xb6, 0x49, 0xcb, 0x5e, 0x33, 0xb4, 0xd9, 0xdb, 0x8d, 0xf5, + 0xad, 0x80, 0x84, 0x5b, 0x7e, 0xa3, 0xce, 0x24, 0xe0, 0x7e, 0xed, 0x35, 0x43, 0x02, 0x8f, 0x53, + 0x25, 0x28, 0x97, 0x0d, 0xc7, 0x6d, 0xb4, 0x03, 0x12, 0x73, 0x19, 0x30, 0xb9, 0xac, 0x24, 0xf0, + 0x38, 0x55, 0xa2, 0xbb, 0xe6, 0x7e, 0xf0, 0xc1, 0x68, 0xee, 0xed, 0x9f, 0x29, 0x80, 0x31, 0xb4, + 0xdf, 0xc1, 0xa9, 0x22, 0x5f, 0x83, 0xbe, 0xcd, 0xa0, 0x55, 0x13, 0xae, 0x72, 0x99, 0x5f, 0x16, + 0xe7, 0x89, 0xe7, 0x5f, 0x46, 0xff, 0x63, 0x56, 0x8a, 0xae, 0xf1, 0xa3, 0x95, 0xc0, 0xa7, 0x87, + 0x9c, 0x0c, 0x58, 0xa9, 0x1e, 0x0d, 0x0d, 0xca, 0xf0, 0x17, 0x1d, 0x42, 0x3b, 0x8b, 0x97, 0x0f, + 0x9c, 0x83, 0xe1, 0x55, 0x56, 0x15, 0x41, 0x6e, 0x24, 0x17, 0x74, 0x01, 0x46, 0x44, 0xf6, 0x3e, + 0xf6, 0xb6, 0x85, 0x2f, 0x26, 0xe6, 0x05, 0xb7, 0x14, 0x83, 0xb1, 0x4e, 0x63, 0xff, 0x70, 0x01, + 0xa6, 0x33, 0x1e, 0x27, 0xf2, 0x63, 0x64, 0xd3, 0x0d, 0x23, 0x95, 0x8a, 0x5e, 0x3b, 0x46, 0x38, + 0x1c, 0x2b, 0x0a, 0xba, 0x57, 0xf1, 0x83, 0x2a, 0x79, 0x38, 0x89, 0xc7, 0x3f, 0x02, 0x7b, 0xc0, + 0xa4, 0xee, 0x67, 0xa0, 0xaf, 0x1d, 0x12, 0x19, 0x9e, 0x5d, 0x1d, 0xdb, 0xcc, 0x60, 0xcf, 0x30, + 0xf4, 0x0a, 0xb8, 0xa9, 0xac, 0xd0, 0xda, 0x15, 0x90, 0xdb, 0xa1, 0x39, 0x8e, 0x36, 0x2e, 0x22, + 0x9e, 0xe3, 0x45, 0xe2, 0xa2, 0x18, 0x47, 0x17, 0x66, 0x50, 0x2c, 0xb0, 0xf6, 0x97, 0x8a, 0x70, + 0x22, 0xf7, 0xb9, 0x32, 0x6d, 0x7a, 0xd3, 0xf7, 0xdc, 0xc8, 0x57, 0xee, 0x85, 0x3c, 0xa2, 0x30, + 0x69, 0x6d, 0xad, 0x0a, 0x38, 0x56, 0x14, 0xe8, 0x2c, 0xf4, 0x33, 0xa5, 0x78, 0x2a, 0x29, 0xff, + 0xc2, 0x12, 0x8f, 0xfb, 0xc8, 0xd1, 0xda, 0xa9, 0x5e, 0xec, 0x78, 0xaa, 0x3f, 0x46, 0x25, 0x18, + 0xbf, 0x91, 0x3c, 0x50, 0x68, 0x73, 0x7d, 0xbf, 0x81, 0x19, 0x12, 0x3d, 0x21, 0xfa, 0x2b, 0xe1, + 0x4f, 0x87, 0x9d, 0xba, 0x1f, 0x6a, 0x9d, 0xf6, 0x14, 0x0c, 0x6e, 0x93, 0xdd, 0xc0, 0xf5, 0x36, + 0x93, 0x7e, 0x96, 0x57, 0x38, 0x18, 0x4b, 0xbc, 0x99, 0x1f, 0x7a, 0xf0, 0x41, 0xe4, 0x87, 0xd6, + 0x67, 0xc0, 0x50, 0x57, 0xf1, 0xe4, 0x47, 0x8a, 0x30, 0x81, 0x17, 0x96, 0xde, 0x1f, 0x88, 0xeb, + 0xe9, 0x81, 0x78, 0x10, 0x69, 0x94, 0x0f, 0x36, 0x1a, 0xbf, 0x6c, 0xc1, 0x04, 0xcb, 0x21, 0x28, + 0x62, 0x8d, 0xb8, 0xbe, 0x77, 0x08, 0x57, 0x81, 0xc7, 0xa0, 0x3f, 0xa0, 0x95, 0x26, 0xb3, 0xf1, + 0xb3, 0x96, 0x60, 0x8e, 0x43, 0x27, 0xa1, 0x8f, 0x35, 0x81, 0x0e, 0xde, 0x28, 0xdf, 0x82, 0x97, + 0x9c, 0xc8, 0xc1, 0x0c, 0xca, 0xa2, 0x1e, 0x62, 0xd2, 0x6a, 0xb8, 0xbc, 0xd1, 0xb1, 0xcb, 0xc2, + 0x7b, 0x23, 0x90, 0x49, 0x66, 0xd3, 0xde, 0x5d, 0xd4, 0xc3, 0x6c, 0x96, 0x9d, 0xaf, 0xd9, 0x7f, + 0x59, 0x80, 0xd3, 0x99, 0xe5, 0x7a, 0x8e, 0x7a, 0xd8, 0xb9, 0xf4, 0xc3, 0xcc, 0x38, 0x56, 0x3c, + 0x44, 0x2f, 0xf6, 0xbe, 0x5e, 0xa5, 0xff, 0xfe, 0x1e, 0x82, 0x11, 0x66, 0x76, 0xd9, 0x7b, 0x24, + 0x18, 0x61, 0x66, 0xdb, 0x72, 0xd4, 0x04, 0x7f, 0x57, 0xc8, 0xf9, 0x16, 0xa6, 0x30, 0x38, 0x47, + 0xf7, 0x19, 0x86, 0x0c, 0xe5, 0x25, 0x9c, 0xef, 0x31, 0x1c, 0x86, 0x15, 0x16, 0xcd, 0xc3, 0x44, + 0xd3, 0xf5, 0xe8, 0xe6, 0xb3, 0x6b, 0x8a, 0xe2, 0xca, 0x96, 0xb1, 0x6a, 0xa2, 0x71, 0x92, 0x1e, + 0xb9, 0x5a, 0xa0, 0x42, 0xfe, 0x75, 0xaf, 0x1e, 0x68, 0xd5, 0xcd, 0x99, 0xee, 0x1c, 0xaa, 0x17, + 0x33, 0x82, 0x16, 0xae, 0x6a, 0x7a, 0xa2, 0x62, 0xef, 0x7a, 0xa2, 0xd1, 0x6c, 0x1d, 0xd1, 0xec, + 0xab, 0x30, 0x76, 0xdf, 0xb6, 0x11, 0xfb, 0x1b, 0x45, 0x78, 0xa4, 0xc3, 0xb2, 0xe7, 0x7b, 0xbd, + 0x31, 0x06, 0xda, 0x5e, 0x9f, 0x1a, 0x87, 0x0a, 0x1c, 0xd9, 0x68, 0x37, 0x1a, 0xbb, 0xec, 0xb9, + 0x16, 0xa9, 0x4b, 0x0a, 0x21, 0x53, 0x4a, 0xe5, 0xc8, 0x91, 0x95, 0x0c, 0x1a, 0x9c, 0x59, 0x92, + 0x5e, 0xb1, 0xe8, 0x49, 0xb2, 0xab, 0x58, 0x25, 0xae, 0x58, 0x58, 0x47, 0x62, 0x93, 0x16, 0x5d, + 0x82, 0x29, 0x67, 0xc7, 0x71, 0x79, 0x62, 0x09, 0xc9, 0x80, 0xdf, 0xb1, 0x94, 0x2e, 0x7a, 0x3e, + 0x49, 0x80, 0xd3, 0x65, 0xd0, 0x1b, 0x80, 0xfc, 0x5b, 0xec, 0x09, 0x48, 0xfd, 0x12, 0xf1, 0x84, + 0xd5, 0x9d, 0x8d, 0x5d, 0x31, 0xde, 0x12, 0xae, 0xa5, 0x28, 0x70, 0x46, 0xa9, 0x44, 0xc8, 0xbc, + 0x81, 0xfc, 0x90, 0x79, 0x9d, 0xf7, 0xc5, 0xae, 0xc9, 0xee, 0x2e, 0xc0, 0xd8, 0x01, 0x1d, 0x9b, + 0xed, 0x7f, 0x6f, 0x81, 0x52, 0x10, 0x9b, 0x21, 0xaf, 0x5f, 0x65, 0x9e, 0xd7, 0x5c, 0xb5, 0xad, + 0x45, 0xb9, 0x3a, 0xaa, 0x79, 0x5e, 0xc7, 0x48, 0x6c, 0xd2, 0xf2, 0x39, 0xa4, 0x79, 0x4c, 0x1b, + 0xb7, 0x02, 0x11, 0x91, 0x53, 0x51, 0xa0, 0x8f, 0xc3, 0x60, 0xdd, 0xdd, 0x71, 0x43, 0xa1, 0x1c, + 0x3b, 0xb0, 0x31, 0x2e, 0xde, 0x3a, 0x97, 0x38, 0x1b, 0x2c, 0xf9, 0xd9, 0x3f, 0x52, 0x88, 0xfb, + 0xe4, 0xcd, 0xb6, 0x1f, 0x39, 0x87, 0x70, 0x92, 0x5f, 0x32, 0x4e, 0xf2, 0x27, 0xb2, 0x07, 0x5a, + 0x6b, 0x52, 0xee, 0x09, 0x7e, 0x2d, 0x71, 0x82, 0x3f, 0xd9, 0x9d, 0x55, 0xe7, 0x93, 0xfb, 0xd7, + 0x2c, 0x98, 0x32, 0xe8, 0x0f, 0xe1, 0x00, 0x59, 0x31, 0x0f, 0x90, 0x47, 0xbb, 0x7e, 0x43, 0xce, + 0xc1, 0xf1, 0x83, 0xc5, 0x44, 0xdb, 0xd9, 0x81, 0xf1, 0x0e, 0xf4, 0x6d, 0x39, 0x41, 0x5d, 0xdc, + 0x8b, 0xcf, 0xf7, 0xd4, 0xd7, 0x73, 0x97, 0x9d, 0x40, 0x78, 0x2a, 0x3c, 0x2b, 0x7b, 0x9d, 0x82, + 0xba, 0x7a, 0x29, 0xb0, 0xaa, 0xd0, 0x45, 0x18, 0x08, 0x6b, 0x7e, 0x4b, 0xbd, 0x06, 0x63, 0x19, + 0x94, 0xab, 0x0c, 0xb2, 0xbf, 0x57, 0x42, 0x66, 0x75, 0x14, 0x8c, 0x05, 0x3d, 0x7a, 0x0b, 0xc6, + 0xd8, 0x2f, 0xe5, 0x36, 0x58, 0xcc, 0xd7, 0x60, 0x54, 0x75, 0x42, 0xee, 0x53, 0x6b, 0x80, 0xb0, + 0xc9, 0x6a, 0x76, 0x13, 0x86, 0xd5, 0x67, 0x3d, 0x54, 0x6b, 0xf7, 0xbf, 0x29, 0xc2, 0x74, 0xc6, + 0x9c, 0x43, 0xa1, 0x31, 0x12, 0x17, 0x7a, 0x9c, 0xaa, 0xef, 0x72, 0x2c, 0x42, 0x76, 0x81, 0xaa, + 0x8b, 0xb9, 0xd5, 0x73, 0xa5, 0xd7, 0x43, 0x92, 0xac, 0x94, 0x82, 0xba, 0x57, 0x4a, 0x2b, 0x3b, + 0xb4, 0xae, 0xa6, 0x15, 0xa9, 0x96, 0x3e, 0xd4, 0x31, 0xfd, 0xad, 0x3e, 0x38, 0x92, 0x15, 0x29, + 0x19, 0x7d, 0x36, 0x91, 0x33, 0xfe, 0xc5, 0x4e, 0x3d, 0xac, 0x97, 0xe4, 0x89, 0xe4, 0x45, 0x80, + 0xd2, 0x39, 0x33, 0x8b, 0x7c, 0xd7, 0x6e, 0x16, 0x75, 0xb2, 0xc0, 0x41, 0x01, 0xcf, 0xf5, 0x2f, + 0xb7, 0x8f, 0x0f, 0xf5, 0xdc, 0x00, 0x2c, 0x0a, 0x26, 0x5c, 0x92, 0x24, 0xb8, 0xbb, 0x4b, 0x92, + 0xac, 0x19, 0x95, 0x61, 0xa0, 0xc6, 0x7d, 0x5d, 0x8a, 0xdd, 0xb7, 0x30, 0xee, 0xe8, 0xa2, 0x36, + 0x60, 0xe1, 0xe0, 0x22, 0x18, 0xcc, 0xba, 0x30, 0xa2, 0x75, 0xcc, 0x43, 0x9d, 0x3c, 0xdb, 0xf4, + 0xe0, 0xd3, 0xba, 0xe0, 0xa1, 0x4e, 0xa0, 0x1f, 0xb7, 0x20, 0xf1, 0x94, 0x47, 0x29, 0xe5, 0xac, + 0x5c, 0xa5, 0xdc, 0x19, 0xe8, 0x0b, 0xfc, 0x06, 0x49, 0xe6, 0xfc, 0xc6, 0x7e, 0x83, 0x60, 0x86, + 0xa1, 0x14, 0x51, 0xac, 0x6a, 0x19, 0xd5, 0xaf, 0x91, 0xe2, 0x82, 0xf8, 0x18, 0xf4, 0x37, 0xc8, + 0x0e, 0x69, 0x24, 0x53, 0x33, 0x5e, 0xa5, 0x40, 0xcc, 0x71, 0xf6, 0x2f, 0xf7, 0xc1, 0xa9, 0x8e, + 0x51, 0xbc, 0xe8, 0x65, 0x6c, 0xd3, 0x89, 0xc8, 0x6d, 0x67, 0x37, 0x99, 0x39, 0xed, 0x12, 0x07, + 0x63, 0x89, 0x67, 0x0f, 0x5b, 0x79, 0x56, 0x92, 0x84, 0x0a, 0x53, 0x24, 0x23, 0x11, 0x58, 0x53, + 0x25, 0x56, 0x7c, 0x10, 0x2a, 0xb1, 0xe7, 0x01, 0xc2, 0xb0, 0xc1, 0xdd, 0x02, 0xeb, 0xe2, 0xc5, + 0x6c, 0x9c, 0xbd, 0xa6, 0x7a, 0x55, 0x60, 0xb0, 0x46, 0x85, 0x96, 0x60, 0xb2, 0x15, 0xf8, 0x11, + 0xd7, 0x08, 0x2f, 0x71, 0xcf, 0xd9, 0x7e, 0x33, 0x80, 0x52, 0x25, 0x81, 0xc7, 0xa9, 0x12, 0xe8, + 0x25, 0x18, 0x11, 0x41, 0x95, 0x2a, 0xbe, 0xdf, 0x10, 0x4a, 0x28, 0xe5, 0x4c, 0x5a, 0x8d, 0x51, + 0x58, 0xa7, 0xd3, 0x8a, 0x31, 0x35, 0xf3, 0x60, 0x66, 0x31, 0xae, 0x6a, 0xd6, 0xe8, 0x12, 0x01, + 0xd8, 0x87, 0x7a, 0x0a, 0xc0, 0x1e, 0xab, 0xe5, 0x86, 0x7b, 0xb6, 0x7a, 0x42, 0x57, 0x45, 0xd6, + 0x57, 0xfb, 0x60, 0x5a, 0x4c, 0x9c, 0x87, 0x3d, 0x5d, 0xae, 0xa7, 0xa7, 0xcb, 0x83, 0x50, 0xdc, + 0xbd, 0x3f, 0x67, 0x0e, 0x7b, 0xce, 0xfc, 0xa8, 0x05, 0xa6, 0xa4, 0x86, 0xfe, 0x97, 0xdc, 0xd4, + 0x93, 0x2f, 0xe5, 0x4a, 0x7e, 0x71, 0x74, 0xe6, 0x77, 0x97, 0x84, 0xd2, 0xfe, 0xb7, 0x16, 0x3c, + 0xda, 0x95, 0x23, 0x5a, 0x86, 0x61, 0x26, 0x4e, 0x6a, 0x17, 0xbd, 0x27, 0x95, 0x67, 0xbd, 0x44, + 0xe4, 0x48, 0xb7, 0x71, 0x49, 0xb4, 0x9c, 0xca, 0xf1, 0xf9, 0x54, 0x46, 0x8e, 0xcf, 0xa3, 0x46, + 0xf7, 0xdc, 0x67, 0x92, 0xcf, 0x2f, 0xd2, 0x13, 0xc7, 0x7c, 0x39, 0xf7, 0x21, 0x43, 0xe9, 0x68, + 0x27, 0x94, 0x8e, 0xc8, 0xa4, 0xd6, 0xce, 0x90, 0x8f, 0xc2, 0x24, 0x8b, 0xb6, 0xc8, 0xde, 0x79, + 0x88, 0x27, 0x77, 0x85, 0xd8, 0x97, 0xfb, 0x6a, 0x02, 0x87, 0x53, 0xd4, 0xf6, 0x9f, 0x17, 0x61, + 0x80, 0x2f, 0xbf, 0x43, 0xb8, 0x5e, 0x3e, 0x03, 0xc3, 0x6e, 0xb3, 0xd9, 0xe6, 0x69, 0x1b, 0xfb, + 0x63, 0xcf, 0xe0, 0xb2, 0x04, 0xe2, 0x18, 0x8f, 0x56, 0x84, 0xbe, 0xbb, 0x43, 0x40, 0x67, 0xde, + 0xf0, 0xb9, 0x25, 0x27, 0x72, 0xb8, 0xac, 0xa4, 0xce, 0xd9, 0x58, 0x33, 0x8e, 0x3e, 0x05, 0x10, + 0x46, 0x81, 0xeb, 0x6d, 0x52, 0x98, 0x88, 0xfa, 0xff, 0x74, 0x07, 0x6e, 0x55, 0x45, 0xcc, 0x79, + 0xc6, 0x7b, 0x8e, 0x42, 0x60, 0x8d, 0x23, 0x9a, 0x33, 0x4e, 0xfa, 0xd9, 0xc4, 0xd8, 0x01, 0xe7, + 0x1a, 0x8f, 0xd9, 0xec, 0xcb, 0x30, 0xac, 0x98, 0x77, 0xd3, 0x7e, 0x8d, 0xea, 0x62, 0xd1, 0x47, + 0x60, 0x22, 0xd1, 0xb6, 0x03, 0x29, 0xcf, 0x7e, 0xc5, 0x82, 0x09, 0xde, 0x98, 0x65, 0x6f, 0x47, + 0x9c, 0x06, 0x77, 0xe1, 0x48, 0x23, 0x63, 0x57, 0x16, 0xc3, 0xdf, 0xfb, 0x2e, 0xae, 0x94, 0x65, + 0x59, 0x58, 0x9c, 0x59, 0x07, 0x3a, 0x47, 0x57, 0x1c, 0xdd, 0x75, 0x9d, 0x86, 0x88, 0xdc, 0x30, + 0xca, 0x57, 0x1b, 0x87, 0x61, 0x85, 0xb5, 0xff, 0xd8, 0x82, 0x29, 0xde, 0xf2, 0x2b, 0x64, 0x57, + 0xed, 0x4d, 0xdf, 0xca, 0xb6, 0x8b, 0x84, 0xc1, 0x85, 0x9c, 0x84, 0xc1, 0xfa, 0xa7, 0x15, 0x3b, + 0x7e, 0xda, 0x57, 0x2c, 0x10, 0x33, 0xe4, 0x10, 0xf4, 0x19, 0xdf, 0x65, 0xea, 0x33, 0x66, 0xf3, + 0x17, 0x41, 0x8e, 0x22, 0xe3, 0x6f, 0x2d, 0x98, 0xe4, 0x04, 0xb1, 0xad, 0xfe, 0x5b, 0x3a, 0x0e, + 0x0b, 0xe6, 0x17, 0x65, 0x3a, 0x5f, 0x5e, 0x21, 0xbb, 0xeb, 0x7e, 0xc5, 0x89, 0xb6, 0xb2, 0x3f, + 0xca, 0x18, 0xac, 0xbe, 0x8e, 0x83, 0x55, 0x97, 0x0b, 0xc8, 0x48, 0x72, 0xd7, 0x25, 0xf4, 0xc1, + 0x41, 0x93, 0xdc, 0xd9, 0x7f, 0x61, 0x01, 0xe2, 0xd5, 0x18, 0x82, 0x1b, 0x15, 0x87, 0x18, 0x54, + 0x3b, 0xe8, 0xe2, 0xad, 0x49, 0x61, 0xb0, 0x46, 0xf5, 0x40, 0xba, 0x27, 0xe1, 0x70, 0x51, 0xec, + 0xee, 0x70, 0x71, 0x80, 0x1e, 0xfd, 0xca, 0x20, 0x24, 0x5f, 0xf6, 0xa1, 0x1b, 0x30, 0x5a, 0x73, + 0x5a, 0xce, 0x2d, 0xb7, 0xe1, 0x46, 0x2e, 0x09, 0x3b, 0x79, 0x63, 0x2d, 0x6a, 0x74, 0xc2, 0x44, + 0xae, 0x41, 0xb0, 0xc1, 0x07, 0xcd, 0x01, 0xb4, 0x02, 0x77, 0xc7, 0x6d, 0x90, 0x4d, 0xa6, 0x76, + 0x61, 0xb1, 0x62, 0xb8, 0x6b, 0x98, 0x84, 0x62, 0x8d, 0x22, 0x23, 0x40, 0x44, 0xf1, 0x21, 0x07, + 0x88, 0x80, 0x43, 0x0b, 0x10, 0xd1, 0x77, 0xa0, 0x00, 0x11, 0x43, 0x07, 0x0e, 0x10, 0xd1, 0xdf, + 0x53, 0x80, 0x08, 0x0c, 0xc7, 0xa4, 0xec, 0x49, 0xff, 0xaf, 0xb8, 0x0d, 0x22, 0x2e, 0x1c, 0x3c, + 0xc0, 0xcd, 0xec, 0xbd, 0xbd, 0xd2, 0x31, 0x9c, 0x49, 0x81, 0x73, 0x4a, 0xa2, 0x8f, 0xc1, 0x8c, + 0xd3, 0x68, 0xf8, 0xb7, 0xd5, 0xa0, 0x2e, 0x87, 0x35, 0xa7, 0xc1, 0x4d, 0x20, 0x83, 0x8c, 0xeb, + 0xc9, 0x7b, 0x7b, 0xa5, 0x99, 0xf9, 0x1c, 0x1a, 0x9c, 0x5b, 0x1a, 0xbd, 0x06, 0xc3, 0xad, 0xc0, + 0xaf, 0xad, 0x6a, 0xcf, 0x8f, 0x4f, 0xd3, 0x0e, 0xac, 0x48, 0xe0, 0xfe, 0x5e, 0x69, 0x4c, 0xfd, + 0x61, 0x07, 0x7e, 0x5c, 0x20, 0x23, 0xf6, 0xc2, 0xc8, 0xc3, 0x8e, 0xbd, 0x30, 0xfa, 0xa0, 0x63, + 0x2f, 0x6c, 0xc3, 0x74, 0x95, 0x04, 0xae, 0xd3, 0x70, 0xef, 0x52, 0x99, 0x5c, 0xee, 0x81, 0xeb, + 0x30, 0x1c, 0x24, 0x76, 0xfd, 0x9e, 0x02, 0x39, 0x6b, 0xb9, 0xcc, 0xe4, 0x2e, 0x1f, 0x33, 0xb2, + 0xff, 0x9b, 0x05, 0x83, 0xe2, 0xb5, 0xe0, 0x21, 0x48, 0xa6, 0xf3, 0x86, 0xe1, 0xa3, 0x94, 0x3d, + 0x28, 0xac, 0x31, 0xb9, 0x26, 0x8f, 0x72, 0xc2, 0xe4, 0xf1, 0x68, 0x27, 0x26, 0x9d, 0x8d, 0x1d, + 0xff, 0x77, 0x91, 0xde, 0x10, 0x8c, 0x77, 0xeb, 0x0f, 0xbf, 0x0b, 0xd6, 0x60, 0x30, 0x14, 0xef, + 0xa6, 0x0b, 0xf9, 0x2f, 0x4e, 0x92, 0x83, 0x18, 0x7b, 0xea, 0x89, 0x97, 0xd2, 0x92, 0x49, 0xe6, + 0x83, 0xec, 0xe2, 0x43, 0x7c, 0x90, 0xdd, 0xed, 0x65, 0x7f, 0xdf, 0x83, 0x78, 0xd9, 0x6f, 0x7f, + 0x9d, 0x9d, 0xce, 0x3a, 0xfc, 0x10, 0x04, 0xb7, 0x4b, 0xe6, 0x39, 0x6e, 0x77, 0x98, 0x59, 0xa2, + 0x51, 0x39, 0x02, 0xdc, 0x2f, 0x59, 0x70, 0x2a, 0xe3, 0xab, 0x34, 0x69, 0xee, 0x59, 0x18, 0x72, + 0xda, 0x75, 0x57, 0xad, 0x65, 0xcd, 0xfc, 0x39, 0x2f, 0xe0, 0x58, 0x51, 0xa0, 0x45, 0x98, 0x22, + 0x77, 0x5a, 0x2e, 0x37, 0x16, 0xeb, 0x0e, 0xce, 0x45, 0xfe, 0xc4, 0x74, 0x39, 0x89, 0xc4, 0x69, + 0x7a, 0x15, 0x5e, 0xab, 0x98, 0x1b, 0x5e, 0xeb, 0x17, 0x2c, 0x18, 0x51, 0x2f, 0x87, 0x1f, 0x7a, + 0x6f, 0x7f, 0xd4, 0xec, 0xed, 0x47, 0x3a, 0xf4, 0x76, 0x4e, 0x37, 0xff, 0x61, 0x41, 0xb5, 0xb7, + 0xe2, 0x07, 0x51, 0x0f, 0x52, 0xe2, 0xfd, 0x3f, 0xce, 0xb8, 0x00, 0x23, 0x4e, 0xab, 0x25, 0x11, + 0xd2, 0xcb, 0x8e, 0x85, 0xe5, 0x8f, 0xc1, 0x58, 0xa7, 0x51, 0x6f, 0x45, 0x8a, 0xb9, 0x6f, 0x45, + 0xea, 0x00, 0x91, 0x13, 0x6c, 0x92, 0x88, 0xc2, 0x84, 0x53, 0x70, 0xfe, 0x7e, 0xd3, 0x8e, 0xdc, + 0xc6, 0x9c, 0xeb, 0x45, 0x61, 0x14, 0xcc, 0x95, 0xbd, 0xe8, 0x5a, 0xc0, 0xaf, 0xa9, 0x5a, 0x80, + 0x3a, 0xc5, 0x0b, 0x6b, 0x7c, 0x65, 0x94, 0x0c, 0x56, 0x47, 0xbf, 0xe9, 0xae, 0xb1, 0x26, 0xe0, + 0x58, 0x51, 0xd8, 0x2f, 0xb3, 0xd3, 0x87, 0xf5, 0xe9, 0xc1, 0x82, 0xb3, 0xfd, 0xe5, 0xa8, 0x1a, + 0x0d, 0x66, 0x78, 0x5d, 0xd2, 0x43, 0xc0, 0x75, 0xde, 0xec, 0x69, 0xc5, 0xfa, 0xab, 0xcb, 0x38, + 0x4e, 0x1c, 0xfa, 0x44, 0xca, 0x05, 0xe7, 0xb9, 0x2e, 0xa7, 0xc6, 0x01, 0x9c, 0x6e, 0x58, 0x8e, + 0x2e, 0x96, 0xc1, 0xa8, 0x5c, 0x11, 0xeb, 0x42, 0xcb, 0xd1, 0x25, 0x10, 0x38, 0xa6, 0xa1, 0x02, + 0x9b, 0xfa, 0x13, 0xce, 0xa0, 0x38, 0x94, 0xb3, 0xa2, 0x0e, 0xb1, 0x46, 0x81, 0xce, 0x0b, 0xa5, + 0x05, 0xb7, 0x3d, 0x3c, 0x92, 0x50, 0x5a, 0xc8, 0xee, 0xd2, 0x34, 0x4d, 0x17, 0x60, 0x84, 0xdc, + 0x89, 0x48, 0xe0, 0x39, 0x0d, 0x5a, 0x43, 0x7f, 0x1c, 0x7d, 0x74, 0x39, 0x06, 0x63, 0x9d, 0x06, + 0xad, 0xc3, 0x44, 0xc8, 0x75, 0x79, 0x2a, 0x81, 0x00, 0xd7, 0x89, 0x3e, 0xad, 0xde, 0x6c, 0x9b, + 0xe8, 0x7d, 0x06, 0xe2, 0xbb, 0x93, 0x8c, 0x64, 0x91, 0x64, 0x81, 0x5e, 0x87, 0xf1, 0x86, 0xef, + 0xd4, 0x17, 0x9c, 0x86, 0xe3, 0xd5, 0x58, 0xff, 0x0c, 0x99, 0x99, 0xde, 0xaf, 0x1a, 0x58, 0x9c, + 0xa0, 0xa6, 0x02, 0xa2, 0x0e, 0x11, 0x41, 0xee, 0x1c, 0x6f, 0x93, 0x84, 0x33, 0xc3, 0xec, 0xab, + 0x98, 0x80, 0x78, 0x35, 0x87, 0x06, 0xe7, 0x96, 0x46, 0x17, 0x61, 0x54, 0x7e, 0xbe, 0x16, 0xf8, + 0x25, 0x7e, 0x76, 0xa3, 0xe1, 0xb0, 0x41, 0x89, 0x42, 0x38, 0x2a, 0xff, 0xaf, 0x07, 0xce, 0xc6, + 0x86, 0x5b, 0x13, 0xd1, 0x10, 0xf8, 0x13, 0xe5, 0x8f, 0xc8, 0xf7, 0x90, 0xcb, 0x59, 0x44, 0xfb, + 0x7b, 0xa5, 0x93, 0xa2, 0xd7, 0x32, 0xf1, 0x38, 0x9b, 0x37, 0x5a, 0x85, 0xe9, 0x2d, 0xe2, 0x34, + 0xa2, 0xad, 0xc5, 0x2d, 0x52, 0xdb, 0x96, 0x0b, 0x8e, 0x49, 0x8d, 0xda, 0xf3, 0x94, 0xcb, 0x69, + 0x12, 0x9c, 0x55, 0x0e, 0xbd, 0x0d, 0x33, 0xad, 0xf6, 0xad, 0x86, 0x1b, 0x6e, 0xad, 0xf9, 0x11, + 0x73, 0x74, 0x9a, 0xaf, 0xd7, 0x03, 0x12, 0xf2, 0x17, 0xac, 0xec, 0xe8, 0x95, 0xc1, 0x7a, 0x2a, + 0x39, 0x74, 0x38, 0x97, 0x03, 0xba, 0x0b, 0x47, 0x13, 0x13, 0x41, 0x44, 0xdd, 0x18, 0xcf, 0x4f, + 0x1f, 0x54, 0xcd, 0x2a, 0x20, 0x02, 0xd8, 0x64, 0xa1, 0x70, 0x76, 0x15, 0xe8, 0x15, 0x00, 0xb7, + 0xb5, 0xe2, 0x34, 0xdd, 0x06, 0xbd, 0x8e, 0x4e, 0xb3, 0x39, 0x42, 0xaf, 0x26, 0x50, 0xae, 0x48, + 0x28, 0xdd, 0x9b, 0xc5, 0xbf, 0x5d, 0xac, 0x51, 0xa3, 0xab, 0x30, 0x2e, 0xfe, 0xed, 0x8a, 0x21, + 0x9d, 0x52, 0x99, 0x26, 0xc7, 0x65, 0x09, 0x35, 0x8e, 0x09, 0x08, 0x4e, 0x94, 0x45, 0x9b, 0x70, + 0x4a, 0xa6, 0xb9, 0xd4, 0xe7, 0xa7, 0x1c, 0x83, 0x90, 0xe5, 0xec, 0x19, 0xe2, 0x2f, 0x5f, 0xe6, + 0x3b, 0x11, 0xe2, 0xce, 0x7c, 0xe8, 0xb9, 0xae, 0x4f, 0x73, 0xfe, 0xae, 0xf9, 0x68, 0x1c, 0xaf, + 0xf1, 0x6a, 0x12, 0x89, 0xd3, 0xf4, 0xc8, 0x87, 0xa3, 0xae, 0x97, 0x35, 0xab, 0x8f, 0x31, 0x46, + 0x1f, 0xe6, 0x4f, 0xba, 0x3b, 0xcf, 0xe8, 0x4c, 0x3c, 0xce, 0xe6, 0x8b, 0xca, 0x30, 0x1d, 0x71, + 0xc0, 0x92, 0x1b, 0xf2, 0x94, 0x20, 0xf4, 0xda, 0x77, 0x9c, 0x55, 0x77, 0x9c, 0xce, 0xe6, 0xf5, + 0x34, 0x1a, 0x67, 0x95, 0x79, 0x77, 0x6e, 0x8a, 0x7f, 0x64, 0xd1, 0xd2, 0x9a, 0xa0, 0x8f, 0x3e, + 0x0d, 0xa3, 0x7a, 0xff, 0x08, 0xa1, 0xe5, 0x6c, 0xb6, 0x1c, 0xac, 0x6d, 0x2f, 0xfc, 0x9a, 0xa0, + 0xb6, 0x10, 0x1d, 0x87, 0x0d, 0x8e, 0xa8, 0x96, 0x11, 0x8a, 0xe1, 0x7c, 0x6f, 0x42, 0x51, 0xef, + 0x5e, 0x7a, 0x04, 0xb2, 0x57, 0x0e, 0xba, 0x0a, 0x43, 0xb5, 0x86, 0x4b, 0xbc, 0xa8, 0x5c, 0xe9, + 0x14, 0x46, 0x73, 0x51, 0xd0, 0x88, 0xa5, 0x28, 0x32, 0xf9, 0x70, 0x18, 0x56, 0x1c, 0xec, 0x8b, + 0x30, 0x52, 0x6d, 0x10, 0xd2, 0xe2, 0xaf, 0x8d, 0xd0, 0x53, 0xec, 0x62, 0xc2, 0x44, 0x4b, 0x8b, + 0x89, 0x96, 0xfa, 0x9d, 0x83, 0x09, 0x95, 0x12, 0x6f, 0xff, 0x4e, 0x01, 0x4a, 0x5d, 0x12, 0x4a, + 0x25, 0xec, 0x6d, 0x56, 0x4f, 0xf6, 0xb6, 0x79, 0x98, 0x88, 0xff, 0xe9, 0xaa, 0x3c, 0xe5, 0xb2, + 0x7b, 0xc3, 0x44, 0xe3, 0x24, 0x7d, 0xcf, 0xaf, 0x2f, 0x74, 0x93, 0x5d, 0x5f, 0xd7, 0xf7, 0x43, + 0x86, 0xa9, 0xbe, 0xbf, 0xf7, 0xbb, 0x77, 0xae, 0xd9, 0xd5, 0xfe, 0x7a, 0x01, 0x8e, 0xaa, 0x2e, + 0xfc, 0xce, 0xed, 0xb8, 0xeb, 0xe9, 0x8e, 0x7b, 0x00, 0x46, 0x6b, 0xfb, 0x1a, 0x0c, 0xf0, 0xd8, + 0x9e, 0x3d, 0xc8, 0xfc, 0x8f, 0x99, 0x81, 0xce, 0x95, 0x98, 0x69, 0x04, 0x3b, 0xff, 0x21, 0x0b, + 0x26, 0x12, 0xcf, 0xf8, 0x10, 0xd6, 0xde, 0x7a, 0xdf, 0x8f, 0x5c, 0x9e, 0x25, 0xf1, 0x9f, 0x81, + 0xbe, 0x2d, 0x3f, 0x8c, 0x92, 0x1e, 0x2d, 0x97, 0xfd, 0x30, 0xc2, 0x0c, 0x63, 0xff, 0x89, 0x05, + 0xfd, 0xeb, 0x8e, 0xeb, 0x45, 0xd2, 0xfa, 0x61, 0xe5, 0x58, 0x3f, 0x7a, 0xf9, 0x2e, 0xf4, 0x12, + 0x0c, 0x90, 0x8d, 0x0d, 0x52, 0x8b, 0xc4, 0xa8, 0xca, 0x98, 0x0f, 0x03, 0xcb, 0x0c, 0x4a, 0x85, + 0x50, 0x56, 0x19, 0xff, 0x8b, 0x05, 0x31, 0xba, 0x09, 0xc3, 0x91, 0xdb, 0x24, 0xf3, 0xf5, 0xba, + 0xf0, 0x09, 0xb8, 0x8f, 0x40, 0x25, 0xeb, 0x92, 0x01, 0x8e, 0x79, 0xd9, 0x5f, 0x2a, 0x00, 0xc4, + 0x01, 0xcb, 0xba, 0x7d, 0xe2, 0x42, 0xca, 0x5a, 0x7c, 0x36, 0xc3, 0x5a, 0x8c, 0x62, 0x86, 0x19, + 0xa6, 0x62, 0xd5, 0x4d, 0xc5, 0x9e, 0xba, 0xa9, 0xef, 0x20, 0xdd, 0xb4, 0x08, 0x53, 0x71, 0xc0, + 0x35, 0x33, 0xde, 0x24, 0x3b, 0xbf, 0xd7, 0x93, 0x48, 0x9c, 0xa6, 0xb7, 0x09, 0x9c, 0x51, 0x71, + 0xa7, 0xc4, 0x59, 0xc8, 0x1c, 0xde, 0x75, 0xeb, 0x7b, 0x97, 0x7e, 0x8a, 0xcd, 0xe1, 0x85, 0x5c, + 0x73, 0xf8, 0x4f, 0x59, 0x70, 0x24, 0x59, 0x0f, 0x7b, 0x1d, 0xfe, 0x05, 0x0b, 0x8e, 0xc6, 0xf9, + 0x54, 0xd2, 0x2e, 0x08, 0x2f, 0x76, 0x8c, 0xa5, 0x95, 0xd3, 0xe2, 0x38, 0xb8, 0xc8, 0x6a, 0x16, + 0x6b, 0x9c, 0x5d, 0xa3, 0xfd, 0x5f, 0xfb, 0x60, 0x26, 0x2f, 0x08, 0x17, 0x7b, 0x0f, 0xe3, 0xdc, + 0xa9, 0x6e, 0x93, 0xdb, 0xe2, 0xd5, 0x41, 0xfc, 0x1e, 0x86, 0x83, 0xb1, 0xc4, 0x27, 0x53, 0xe8, + 0x14, 0x7a, 0x4c, 0xa1, 0xb3, 0x05, 0x53, 0xb7, 0xb7, 0x88, 0x77, 0xdd, 0x0b, 0x9d, 0xc8, 0x0d, + 0x37, 0x5c, 0x66, 0x40, 0xe7, 0xf3, 0x46, 0xa6, 0x81, 0x9f, 0xba, 0x99, 0x24, 0xd8, 0xdf, 0x2b, + 0x9d, 0x32, 0x00, 0x71, 0x93, 0xf9, 0x46, 0x82, 0xd3, 0x4c, 0xd3, 0x19, 0x88, 0xfa, 0x1e, 0x72, + 0x06, 0xa2, 0xa6, 0x2b, 0xdc, 0x6e, 0xe4, 0x63, 0x07, 0x76, 0x6d, 0x5d, 0x55, 0x50, 0xac, 0x51, + 0xa0, 0x4f, 0x02, 0xd2, 0x53, 0xc8, 0x19, 0x31, 0x50, 0x9f, 0xbb, 0xb7, 0x57, 0x42, 0x6b, 0x29, + 0xec, 0xfe, 0x5e, 0x69, 0x9a, 0x42, 0xcb, 0x1e, 0xbd, 0xfe, 0xc6, 0x81, 0xe3, 0x32, 0x18, 0xa1, + 0x9b, 0x30, 0x49, 0xa1, 0x6c, 0x45, 0xc9, 0x00, 0xab, 0xfc, 0xca, 0xfa, 0xcc, 0xbd, 0xbd, 0xd2, + 0xe4, 0x5a, 0x02, 0x97, 0xc7, 0x3a, 0xc5, 0x24, 0x23, 0x11, 0xd1, 0x50, 0xaf, 0x89, 0x88, 0xec, + 0x2f, 0x58, 0x70, 0x82, 0x1e, 0x70, 0xf5, 0xab, 0x39, 0x56, 0x74, 0xa7, 0xe5, 0x72, 0x3b, 0x8d, + 0x38, 0x6a, 0x98, 0xae, 0xae, 0x52, 0xe6, 0x56, 0x1a, 0x85, 0xa5, 0x3b, 0xfc, 0xb6, 0xeb, 0xd5, + 0x93, 0x3b, 0xfc, 0x15, 0xd7, 0xab, 0x63, 0x86, 0x51, 0x47, 0x56, 0x31, 0xf7, 0xcd, 0xc5, 0x57, + 0xe9, 0x5a, 0xa5, 0x6d, 0xf9, 0x96, 0x36, 0x03, 0x3d, 0xa3, 0xdb, 0x54, 0x85, 0xfb, 0x64, 0xae, + 0x3d, 0xf5, 0xf3, 0x16, 0x88, 0x37, 0xda, 0x3d, 0x9c, 0xc9, 0x6f, 0xc1, 0xe8, 0x4e, 0x3a, 0xbd, + 0xe6, 0x99, 0xfc, 0x47, 0xeb, 0x22, 0x68, 0xbe, 0x12, 0xd1, 0x8d, 0x54, 0x9a, 0x06, 0x2f, 0xbb, + 0x0e, 0x02, 0xbb, 0x44, 0x98, 0x55, 0xa3, 0x7b, 0x6b, 0x9e, 0x07, 0xa8, 0x33, 0x5a, 0x96, 0x73, + 0xbb, 0x60, 0x4a, 0x5c, 0x4b, 0x0a, 0x83, 0x35, 0x2a, 0xfb, 0xe7, 0x8a, 0x30, 0x22, 0xd3, 0x39, + 0xb6, 0xbd, 0x5e, 0x74, 0x8f, 0x07, 0xca, 0xef, 0x8e, 0xde, 0x86, 0xa9, 0x80, 0xd4, 0xda, 0x41, + 0xe8, 0xee, 0x10, 0x89, 0x16, 0x8b, 0x64, 0x8e, 0x87, 0xf2, 0x4f, 0x20, 0xf7, 0x59, 0x20, 0xa7, + 0x04, 0x90, 0x19, 0x8d, 0xd3, 0x8c, 0xd0, 0x79, 0x18, 0x66, 0xaa, 0xf7, 0x4a, 0xac, 0x10, 0x56, + 0x8a, 0xaf, 0x55, 0x89, 0xc0, 0x31, 0x0d, 0xbb, 0x1c, 0xb4, 0x6f, 0x31, 0xf2, 0xc4, 0x7b, 0xe5, + 0x2a, 0x07, 0x63, 0x89, 0x47, 0x1f, 0x83, 0x49, 0x5e, 0x2e, 0xf0, 0x5b, 0xce, 0x26, 0x37, 0x09, + 0xf6, 0xab, 0x20, 0x30, 0x93, 0xab, 0x09, 0xdc, 0xfe, 0x5e, 0xe9, 0x48, 0x12, 0xc6, 0x9a, 0x9d, + 0xe2, 0xc2, 0x3c, 0xff, 0x78, 0x25, 0xf4, 0xcc, 0x48, 0x39, 0x0c, 0xc6, 0x28, 0xac, 0xd3, 0xd9, + 0x7f, 0x63, 0xc1, 0x94, 0x36, 0x54, 0x3d, 0x67, 0x53, 0x30, 0x3a, 0xa9, 0xd0, 0x43, 0x27, 0x1d, + 0x2c, 0x26, 0x41, 0xe6, 0x08, 0xf7, 0x3d, 0xa0, 0x11, 0xb6, 0x3f, 0x0d, 0x28, 0x9d, 0x2b, 0x14, + 0xbd, 0xc1, 0xdd, 0xe5, 0xdd, 0x80, 0xd4, 0x3b, 0x19, 0xfc, 0xf5, 0xf8, 0x2e, 0xf2, 0x7d, 0x25, + 0x2f, 0x85, 0x55, 0x79, 0xfb, 0x87, 0xfb, 0x60, 0x32, 0x19, 0x51, 0x02, 0x5d, 0x86, 0x01, 0x2e, + 0xa5, 0x0b, 0xf6, 0x1d, 0xfc, 0xc9, 0xb4, 0x38, 0x14, 0x4c, 0x5e, 0x11, 0x82, 0xbe, 0x28, 0x8f, + 0xde, 0x86, 0x91, 0xba, 0x7f, 0xdb, 0xbb, 0xed, 0x04, 0xf5, 0xf9, 0x4a, 0x59, 0xec, 0x10, 0x99, + 0x0a, 0xa8, 0xa5, 0x98, 0x4c, 0x8f, 0x6d, 0xc1, 0x7c, 0x27, 0x62, 0x14, 0xd6, 0xd9, 0xa1, 0x75, + 0x96, 0xfe, 0x66, 0xc3, 0xdd, 0x5c, 0x75, 0x5a, 0x9d, 0xde, 0x4e, 0x2d, 0x4a, 0x22, 0x8d, 0xf3, + 0x98, 0xc8, 0x91, 0xc3, 0x11, 0x38, 0x66, 0x84, 0x3e, 0x0b, 0xd3, 0x61, 0x8e, 0x49, 0x2c, 0x2f, + 0x75, 0x74, 0x27, 0x2b, 0x11, 0x57, 0xa6, 0x64, 0x19, 0xcf, 0xb2, 0xaa, 0x41, 0x77, 0x00, 0x09, + 0xd5, 0xf3, 0x7a, 0xd0, 0x0e, 0xa3, 0x85, 0xb6, 0x57, 0x6f, 0xc8, 0xf4, 0x38, 0xd9, 0xc9, 0xe5, + 0x53, 0xd4, 0x5a, 0xdd, 0x2c, 0xc2, 0x6c, 0x9a, 0x02, 0x67, 0xd4, 0x61, 0x7f, 0xbe, 0x0f, 0x66, + 0x65, 0x72, 0xde, 0x8c, 0x37, 0x22, 0x9f, 0xb3, 0x12, 0x8f, 0x44, 0x5e, 0xc9, 0xdf, 0xe8, 0x1f, + 0xda, 0x53, 0x91, 0x2f, 0xa6, 0x9f, 0x8a, 0xbc, 0x76, 0xc0, 0x66, 0x3c, 0xb0, 0x07, 0x23, 0xdf, + 0xb1, 0xaf, 0x3c, 0xbe, 0x7c, 0x04, 0x8c, 0xa3, 0x19, 0x61, 0x1e, 0xbe, 0xbb, 0x22, 0x4d, 0x47, + 0x39, 0xd7, 0xff, 0xcb, 0x82, 0xc6, 0x38, 0xec, 0x47, 0x65, 0x90, 0x6f, 0xb6, 0xcf, 0x2a, 0x3e, + 0x94, 0x27, 0x69, 0xb6, 0xa2, 0xdd, 0x25, 0x37, 0x10, 0x2d, 0xce, 0xe4, 0xb9, 0x2c, 0x68, 0xd2, + 0x3c, 0x25, 0x06, 0x2b, 0x3e, 0x68, 0x07, 0xa6, 0x36, 0x59, 0x5c, 0x22, 0x3d, 0x9f, 0x7d, 0x31, + 0x7f, 0xdd, 0x5e, 0x5a, 0x5c, 0xee, 0x90, 0xcc, 0x9e, 0x5d, 0xfe, 0x52, 0x24, 0x38, 0x5d, 0x05, + 0xcb, 0xa5, 0xef, 0xdc, 0x0e, 0x97, 0x1b, 0x4e, 0x18, 0xb9, 0xb5, 0x85, 0x86, 0x5f, 0xdb, 0xae, + 0x46, 0x7e, 0x20, 0x93, 0xe9, 0x65, 0xde, 0xbd, 0xe6, 0x6f, 0x56, 0x53, 0xf4, 0xe9, 0x5c, 0xfa, + 0x59, 0x54, 0x38, 0xb3, 0x2e, 0xb4, 0x06, 0x83, 0x9b, 0x6e, 0x84, 0x49, 0xcb, 0x17, 0xbb, 0x45, + 0xe6, 0x56, 0x78, 0x89, 0x93, 0xa4, 0x73, 0xdb, 0x0b, 0x04, 0x96, 0x4c, 0xd0, 0x1b, 0xea, 0x10, + 0x18, 0xc8, 0x57, 0xc0, 0xa6, 0x7d, 0xef, 0x32, 0x8f, 0x81, 0xd7, 0xa1, 0xe8, 0x6d, 0x84, 0x9d, + 0x22, 0xc6, 0xac, 0xad, 0x54, 0xd3, 0x39, 0xe7, 0xd7, 0x56, 0xaa, 0x98, 0x16, 0x64, 0x8f, 0x4b, + 0xc3, 0x5a, 0xe8, 0x8a, 0xb4, 0x40, 0x99, 0x6f, 0x6d, 0xcb, 0xd5, 0xc5, 0x6a, 0x39, 0x9d, 0x67, + 0x9f, 0x81, 0x31, 0x2f, 0x8e, 0x6e, 0xc0, 0xf0, 0x26, 0xdf, 0xf8, 0x36, 0x42, 0x91, 0xa0, 0x3b, + 0xf3, 0x30, 0xba, 0x24, 0x89, 0xd2, 0xd9, 0xf5, 0x15, 0x0a, 0xc7, 0xac, 0xd0, 0xe7, 0x2d, 0x38, + 0x9a, 0xcc, 0x70, 0xce, 0x9e, 0x84, 0x09, 0x37, 0xb5, 0x97, 0x7a, 0x49, 0x39, 0xcf, 0x0a, 0x18, + 0x15, 0x32, 0xf3, 0x4b, 0x26, 0x19, 0xce, 0xae, 0x8e, 0x76, 0x74, 0x70, 0xab, 0xde, 0x29, 0x93, + 0x4c, 0x22, 0x7c, 0x0e, 0xef, 0x68, 0xbc, 0xb0, 0x84, 0x69, 0x41, 0xb4, 0x0e, 0xb0, 0xd1, 0x20, + 0x22, 0x2e, 0xa1, 0x70, 0x8a, 0xca, 0x3c, 0xfd, 0x57, 0x14, 0x95, 0xcc, 0x84, 0x45, 0xc5, 0xec, + 0x18, 0x8a, 0x35, 0x3e, 0x74, 0x2a, 0xd5, 0x5c, 0xaf, 0x4e, 0x02, 0x66, 0xdc, 0xca, 0x99, 0x4a, + 0x8b, 0x8c, 0x22, 0x3d, 0x95, 0x38, 0x1c, 0x0b, 0x0e, 0x8c, 0x17, 0x69, 0x6d, 0x6d, 0x84, 0x9d, + 0x12, 0x23, 0x2c, 0x92, 0xd6, 0x56, 0x62, 0x42, 0x71, 0x5e, 0x0c, 0x8e, 0x05, 0x07, 0xba, 0x64, + 0x36, 0xe8, 0x02, 0x22, 0xc1, 0xcc, 0x44, 0xfe, 0x92, 0x59, 0xe1, 0x24, 0xe9, 0x25, 0x23, 0x10, + 0x58, 0x32, 0x41, 0x9f, 0x32, 0xa5, 0x9d, 0x49, 0xc6, 0xf3, 0x99, 0x2e, 0xd2, 0x8e, 0xc1, 0xb7, + 0xb3, 0xbc, 0xf3, 0x0a, 0x14, 0x36, 0x6a, 0xcc, 0x28, 0x96, 0x63, 0x33, 0x58, 0x59, 0x34, 0xb8, + 0xb1, 0x40, 0xe3, 0x2b, 0x8b, 0xb8, 0xb0, 0x51, 0xa3, 0x53, 0xdf, 0xb9, 0xdb, 0x0e, 0xc8, 0x8a, + 0xdb, 0x20, 0x22, 0x49, 0x42, 0xe6, 0xd4, 0x9f, 0x97, 0x44, 0xe9, 0xa9, 0xaf, 0x50, 0x38, 0x66, + 0x45, 0xf9, 0xc6, 0x32, 0xd8, 0x74, 0x3e, 0x5f, 0x25, 0x6a, 0xa5, 0xf9, 0x66, 0x4a, 0x61, 0xdb, + 0x30, 0xb6, 0x13, 0xb6, 0xb6, 0x88, 0xdc, 0x15, 0x99, 0xb9, 0x2e, 0x27, 0x9e, 0xc2, 0x0d, 0x41, + 0xe8, 0x06, 0x51, 0xdb, 0x69, 0xa4, 0x36, 0x72, 0xa6, 0x5a, 0xb9, 0xa1, 0x33, 0xc3, 0x26, 0x6f, + 0x3a, 0x11, 0xde, 0xe1, 0x41, 0xcf, 0x98, 0xe1, 0x2e, 0x67, 0x22, 0x64, 0xc4, 0x45, 0xe3, 0x13, + 0x41, 0x20, 0xb0, 0x64, 0xa2, 0x3a, 0x9b, 0x1d, 0x40, 0xc7, 0xba, 0x74, 0x76, 0xaa, 0xbd, 0x71, + 0x67, 0xb3, 0x03, 0x27, 0x66, 0xc5, 0x0e, 0x9a, 0x56, 0x46, 0x32, 0x78, 0x66, 0xb6, 0xcb, 0x39, + 0x68, 0xba, 0x25, 0x8f, 0xe7, 0x07, 0x4d, 0x16, 0x15, 0xce, 0xac, 0x8b, 0x7e, 0x5c, 0x4b, 0xc6, + 0xaf, 0x13, 0x89, 0x1c, 0x9e, 0xca, 0x09, 0xff, 0x98, 0x0e, 0x72, 0xc7, 0x3f, 0x4e, 0xa1, 0x70, + 0xcc, 0x0a, 0xd5, 0x61, 0xbc, 0x65, 0xc4, 0x45, 0x65, 0x09, 0x29, 0x72, 0xe4, 0x82, 0xac, 0x08, + 0xaa, 0x5c, 0x43, 0x64, 0x62, 0x70, 0x82, 0x27, 0xf3, 0xdc, 0xe3, 0x4f, 0xfd, 0x58, 0xbe, 0x8a, + 0x9c, 0xa1, 0xce, 0x78, 0x0d, 0xc8, 0x87, 0x5a, 0x20, 0xb0, 0x64, 0x42, 0x7b, 0x43, 0x3c, 0x50, + 0xf3, 0x43, 0x96, 0xf6, 0x25, 0xcf, 0xc0, 0x9e, 0x65, 0x26, 0x92, 0xc1, 0xc0, 0x05, 0x0a, 0xc7, + 0xac, 0xe8, 0x4e, 0x4e, 0x0f, 0xbc, 0x93, 0xf9, 0x3b, 0x79, 0xf2, 0xb8, 0x63, 0x3b, 0x39, 0x3d, + 0xec, 0x8a, 0xe2, 0xa8, 0x53, 0xb1, 0xab, 0x59, 0xca, 0x8a, 0x9c, 0x76, 0xa9, 0xe0, 0xd7, 0xe9, + 0x76, 0x29, 0x14, 0x8e, 0x59, 0xd9, 0x3f, 0x5c, 0x80, 0xd3, 0x9d, 0xd7, 0x5b, 0x6c, 0xfb, 0xaa, + 0xc4, 0xbe, 0x46, 0x09, 0xdb, 0x17, 0xd7, 0xc4, 0xc4, 0x54, 0x3d, 0x87, 0xb3, 0xbd, 0x04, 0x53, + 0xea, 0x19, 0x61, 0xc3, 0xad, 0xed, 0xae, 0xc5, 0xca, 0x2f, 0x15, 0xf8, 0xa5, 0x9a, 0x24, 0xc0, + 0xe9, 0x32, 0x68, 0x1e, 0x26, 0x0c, 0x60, 0x79, 0x49, 0x5c, 0xdb, 0xe3, 0x24, 0x09, 0x26, 0x1a, + 0x27, 0xe9, 0xed, 0x9f, 0xb7, 0xe0, 0x78, 0x4e, 0x2e, 0xee, 0x9e, 0xa3, 0xb5, 0x6e, 0xc0, 0x44, + 0xcb, 0x2c, 0xda, 0x25, 0xc0, 0xb4, 0x91, 0xf1, 0x5b, 0xb5, 0x35, 0x81, 0xc0, 0x49, 0xa6, 0xf6, + 0xcf, 0x16, 0xe0, 0x54, 0x47, 0xbf, 0x78, 0x84, 0xe1, 0xd8, 0x66, 0x33, 0x74, 0x16, 0x03, 0x52, + 0x27, 0x5e, 0xe4, 0x3a, 0x8d, 0x6a, 0x8b, 0xd4, 0x34, 0xeb, 0x25, 0x73, 0x30, 0xbf, 0xb4, 0x5a, + 0x9d, 0x4f, 0x53, 0xe0, 0x9c, 0x92, 0x68, 0x05, 0x50, 0x1a, 0x23, 0x46, 0x98, 0x5d, 0x4d, 0xd3, + 0xfc, 0x70, 0x46, 0x09, 0xf4, 0x32, 0x8c, 0x29, 0x7f, 0x7b, 0x6d, 0xc4, 0xd9, 0xc6, 0x8e, 0x75, + 0x04, 0x36, 0xe9, 0xd0, 0x05, 0x9e, 0x3d, 0x47, 0xe4, 0x59, 0x12, 0xa6, 0xce, 0x09, 0x99, 0x1a, + 0x47, 0x80, 0xb1, 0x4e, 0xb3, 0x70, 0xf1, 0x77, 0xbf, 0x79, 0xfa, 0x03, 0x7f, 0xf0, 0xcd, 0xd3, + 0x1f, 0xf8, 0xe3, 0x6f, 0x9e, 0xfe, 0xc0, 0xf7, 0xdd, 0x3b, 0x6d, 0xfd, 0xee, 0xbd, 0xd3, 0xd6, + 0x1f, 0xdc, 0x3b, 0x6d, 0xfd, 0xf1, 0xbd, 0xd3, 0xd6, 0x7f, 0xb8, 0x77, 0xda, 0xfa, 0xd2, 0x9f, + 0x9d, 0xfe, 0xc0, 0x5b, 0x28, 0x8e, 0x7f, 0x7c, 0x9e, 0x8e, 0xce, 0xf9, 0x9d, 0x0b, 0xff, 0x33, + 0x00, 0x00, 0xff, 0xff, 0x4c, 0xce, 0x31, 0xc7, 0x7a, 0x20, 0x01, 0x00, } func (m *AWSElasticBlockStoreVolumeSource) Marshal() (dAtA []byte, err error) { @@ -9753,6 +9819,18 @@ func (m *ContainerStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.User != nil { + { + size, err := m.User.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x6a + } if len(m.VolumeMounts) > 0 { for iNdEx := len(m.VolumeMounts) - 1; iNdEx >= 0; iNdEx-- { { @@ -9872,6 +9950,41 @@ func (m *ContainerStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *ContainerUser) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ContainerUser) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ContainerUser) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Linux != nil { + { + size, err := m.Linux.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func (m *DaemonEndpoint) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -12428,6 +12541,42 @@ func (m *LimitRangeSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *LinuxContainerUser) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *LinuxContainerUser) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *LinuxContainerUser) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.SupplementalGroups) > 0 { + for iNdEx := len(m.SupplementalGroups) - 1; iNdEx >= 0; iNdEx-- { + i = encodeVarintGenerated(dAtA, i, uint64(m.SupplementalGroups[iNdEx])) + i-- + dAtA[i] = 0x18 + } + } + i = encodeVarintGenerated(dAtA, i, uint64(m.GID)) + i-- + dAtA[i] = 0x10 + i = encodeVarintGenerated(dAtA, i, uint64(m.UID)) + i-- + dAtA[i] = 0x8 + return len(dAtA) - i, nil +} + func (m *List) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -16003,6 +16152,13 @@ func (m *PodSecurityContext) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.SupplementalGroupsPolicy != nil { + i -= len(*m.SupplementalGroupsPolicy) + copy(dAtA[i:], *m.SupplementalGroupsPolicy) + i = encodeVarintGenerated(dAtA, i, uint64(len(*m.SupplementalGroupsPolicy))) + i-- + dAtA[i] = 0x62 + } if m.AppArmorProfile != nil { { size, err := m.AppArmorProfile.MarshalToSizedBuffer(dAtA[:i]) @@ -22097,6 +22253,23 @@ func (m *ContainerStatus) Size() (n int) { n += 1 + l + sovGenerated(uint64(l)) } } + if m.User != nil { + l = m.User.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + +func (m *ContainerUser) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Linux != nil { + l = m.Linux.Size() + n += 1 + l + sovGenerated(uint64(l)) + } return n } @@ -23040,6 +23213,22 @@ func (m *LimitRangeSpec) Size() (n int) { return n } +func (m *LinuxContainerUser) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + n += 1 + sovGenerated(uint64(m.UID)) + n += 1 + sovGenerated(uint64(m.GID)) + if len(m.SupplementalGroups) > 0 { + for _, e := range m.SupplementalGroups { + n += 1 + sovGenerated(uint64(e)) + } + } + return n +} + func (m *List) Size() (n int) { if m == nil { return 0 @@ -24401,6 +24590,10 @@ func (m *PodSecurityContext) Size() (n int) { l = m.AppArmorProfile.Size() n += 1 + l + sovGenerated(uint64(l)) } + if m.SupplementalGroupsPolicy != nil { + l = len(*m.SupplementalGroupsPolicy) + n += 1 + l + sovGenerated(uint64(l)) + } return n } @@ -26897,6 +27090,17 @@ func (this *ContainerStatus) String() string { `AllocatedResources:` + mapStringForAllocatedResources + `,`, `Resources:` + strings.Replace(this.Resources.String(), "ResourceRequirements", "ResourceRequirements", 1) + `,`, `VolumeMounts:` + repeatedStringForVolumeMounts + `,`, + `User:` + strings.Replace(this.User.String(), "ContainerUser", "ContainerUser", 1) + `,`, + `}`, + }, "") + return s +} +func (this *ContainerUser) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ContainerUser{`, + `Linux:` + strings.Replace(this.Linux.String(), "LinuxContainerUser", "LinuxContainerUser", 1) + `,`, `}`, }, "") return s @@ -27623,6 +27827,18 @@ func (this *LimitRangeSpec) String() string { }, "") return s } +func (this *LinuxContainerUser) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&LinuxContainerUser{`, + `UID:` + fmt.Sprintf("%v", this.UID) + `,`, + `GID:` + fmt.Sprintf("%v", this.GID) + `,`, + `SupplementalGroups:` + fmt.Sprintf("%v", this.SupplementalGroups) + `,`, + `}`, + }, "") + return s +} func (this *List) String() string { if this == nil { return "nil" @@ -28624,6 +28840,7 @@ func (this *PodSecurityContext) String() string { `FSGroupChangePolicy:` + valueToStringGenerated(this.FSGroupChangePolicy) + `,`, `SeccompProfile:` + strings.Replace(this.SeccompProfile.String(), "SeccompProfile", "SeccompProfile", 1) + `,`, `AppArmorProfile:` + strings.Replace(this.AppArmorProfile.String(), "AppArmorProfile", "AppArmorProfile", 1) + `,`, + `SupplementalGroupsPolicy:` + valueToStringGenerated(this.SupplementalGroupsPolicy) + `,`, `}`, }, "") return s @@ -37312,6 +37529,128 @@ func (m *ContainerStatus) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 13: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field User", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.User == nil { + m.User = &ContainerUser{} + } + if err := m.User.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ContainerUser) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ContainerUser: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ContainerUser: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Linux", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Linux == nil { + m.Linux = &LinuxContainerUser{} + } + if err := m.Linux.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -45522,6 +45861,170 @@ func (m *LimitRangeSpec) Unmarshal(dAtA []byte) error { } return nil } +func (m *LinuxContainerUser) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: LinuxContainerUser: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LinuxContainerUser: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UID", wireType) + } + m.UID = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.UID |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field GID", wireType) + } + m.GID = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.GID |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType == 0 { + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.SupplementalGroups = append(m.SupplementalGroups, v) + } else if wireType == 2 { + var packedLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + packedLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if packedLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + packedLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + var elementCount int + var count int + for _, integer := range dAtA[iNdEx:postIndex] { + if integer < 128 { + count++ + } + } + elementCount = count + if elementCount != 0 && len(m.SupplementalGroups) == 0 { + m.SupplementalGroups = make([]int64, 0, elementCount) + } + for iNdEx < postIndex { + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.SupplementalGroups = append(m.SupplementalGroups, v) + } + } else { + return fmt.Errorf("proto: wrong wireType = %d for field SupplementalGroups", wireType) + } + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *List) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -57018,6 +57521,39 @@ func (m *PodSecurityContext) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 12: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SupplementalGroupsPolicy", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := SupplementalGroupsPolicy(dAtA[iNdEx:postIndex]) + m.SupplementalGroupsPolicy = &s + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) diff --git a/staging/src/k8s.io/api/core/v1/generated.proto b/staging/src/k8s.io/api/core/v1/generated.proto index 3766c1a47f2..443612f98e9 100644 --- a/staging/src/k8s.io/api/core/v1/generated.proto +++ b/staging/src/k8s.io/api/core/v1/generated.proto @@ -1109,6 +1109,19 @@ message ContainerStatus { // +listMapKey=mountPath // +featureGate=RecursiveReadOnlyMounts repeated VolumeMountStatus volumeMounts = 12; + + // User represents user identity information initially attached to the first process of the container + // +featureGate=SupplementalGroupsPolicy + // +optional + optional ContainerUser user = 13; +} + +// ContainerUser represents user identity information +message ContainerUser { + // Linux holds user identity information initially attached to the first process of the containers in Linux. + // Note that the actual running identity can be changed if the process has enough privilege to do so. + // +optional + optional LinuxContainerUser linux = 1; } // DaemonEndpoint contains information about a single Daemon endpoint. @@ -2255,6 +2268,20 @@ message LimitRangeSpec { repeated LimitRangeItem limits = 1; } +// LinuxContainerUser represents user identity information in Linux containers +message LinuxContainerUser { + // UID is the primary uid initially attached to the first process in the container + optional int64 uid = 1; + + // GID is the primary gid initially attached to the first process in the container + optional int64 gid = 2; + + // SupplementalGroups are the supplemental groups initially attached to the first process in the container + // +optional + // +listType=atomic + repeated int64 supplementalGroups = 3; +} + // List holds a list of objects, which may not be known by the server. message List { // Standard list metadata. @@ -3884,17 +3911,29 @@ message PodSecurityContext { // +optional optional bool runAsNonRoot = 3; - // A list of groups applied to the first process run in each container, in addition - // to the container's primary GID, the fsGroup (if specified), and group memberships - // defined in the container image for the uid of the container process. If unspecified, - // no additional groups are added to any container. Note that group memberships - // defined in the container image for the uid of the container process are still effective, - // even if they are not included in this list. + // A list of groups applied to the first process run in each container, in + // addition to the container's primary GID and fsGroup (if specified). If + // the SupplementalGroupsPolicy feature is enabled, the + // supplementalGroupsPolicy field determines whether these are in addition + // to or instead of any group memberships defined in the container image. + // If unspecified, no additional groups are added, though group memberships + // defined in the container image may still be used, depending on the + // supplementalGroupsPolicy field. // Note that this field cannot be set when spec.os.name is windows. // +optional // +listType=atomic repeated int64 supplementalGroups = 4; + // Defines how supplemental groups of the first container processes are calculated. + // Valid values are "Merge" and "Strict". If not specified, "Merge" is used. + // (Alpha) Using the field requires the SupplementalGroupsPolicy feature gate to be enabled + // and the container runtime must implement support for this feature. + // Note that this field cannot be set when spec.os.name is windows. + // TODO: update the default value to "Merge" when spec.os.name is not windows in v1.34 + // +featureGate=SupplementalGroupsPolicy + // +optional + optional string supplementalGroupsPolicy = 12; + // A special supplemental group that applies to all containers in a pod. // Some volume types allow the Kubelet to change the ownership of that volume // to be owned by the pod: @@ -4234,6 +4273,7 @@ message PodSpec { // - spec.securityContext.runAsUser // - spec.securityContext.runAsGroup // - spec.securityContext.supplementalGroups + // - spec.securityContext.supplementalGroupsPolicy // - spec.containers[*].securityContext.appArmorProfile // - spec.containers[*].securityContext.seLinuxOptions // - spec.containers[*].securityContext.seccompProfile diff --git a/staging/src/k8s.io/api/core/v1/types.go b/staging/src/k8s.io/api/core/v1/types.go index 12332eb6239..f74bc1b64f0 100644 --- a/staging/src/k8s.io/api/core/v1/types.go +++ b/staging/src/k8s.io/api/core/v1/types.go @@ -3034,6 +3034,34 @@ type ContainerStatus struct { // +listMapKey=mountPath // +featureGate=RecursiveReadOnlyMounts VolumeMounts []VolumeMountStatus `json:"volumeMounts,omitempty" patchStrategy:"merge" patchMergeKey:"mountPath" protobuf:"bytes,12,rep,name=volumeMounts"` + // User represents user identity information initially attached to the first process of the container + // +featureGate=SupplementalGroupsPolicy + // +optional + User *ContainerUser `json:"user,omitempty" protobuf:"bytes,13,opt,name=user,casttype=ContainerUser"` +} + +// ContainerUser represents user identity information +type ContainerUser struct { + // Linux holds user identity information initially attached to the first process of the containers in Linux. + // Note that the actual running identity can be changed if the process has enough privilege to do so. + // +optional + Linux *LinuxContainerUser `json:"linux,omitempty" protobuf:"bytes,1,opt,name=linux,casttype=LinuxContainerUser"` + + // Windows holds user identity information initially attached to the first process of the containers in Windows + // This is just reserved for future use. + // Windows *WindowsContainerUser +} + +// LinuxContainerUser represents user identity information in Linux containers +type LinuxContainerUser struct { + // UID is the primary uid initially attached to the first process in the container + UID int64 `json:"uid" protobuf:"varint,1,name=uid"` + // GID is the primary gid initially attached to the first process in the container + GID int64 `json:"gid" protobuf:"varint,2,name=gid"` + // SupplementalGroups are the supplemental groups initially attached to the first process in the container + // +optional + // +listType=atomic + SupplementalGroups []int64 `json:"supplementalGroups,omitempty" protobuf:"varint,3,rep,name=supplementalGroups"` } // PodPhase is a label for the condition of a pod at the current time. @@ -3834,6 +3862,7 @@ type PodSpec struct { // - spec.securityContext.runAsUser // - spec.securityContext.runAsGroup // - spec.securityContext.supplementalGroups + // - spec.securityContext.supplementalGroupsPolicy // - spec.containers[*].securityContext.appArmorProfile // - spec.containers[*].securityContext.seLinuxOptions // - spec.containers[*].securityContext.seccompProfile @@ -4145,6 +4174,23 @@ const ( FSGroupChangeAlways PodFSGroupChangePolicy = "Always" ) +// SupplementalGroupsPolicy defines how supplemental groups +// of the first container processes are calculated. +// +enum +type SupplementalGroupsPolicy string + +const ( + // SupplementalGroupsPolicyMerge means that the container's provided + // SupplementalGroups and FsGroup (specified in SecurityContext) will be + // merged with the primary user's groups as defined in the container image + // (in /etc/group). + SupplementalGroupsPolicyMerge SupplementalGroupsPolicy = "Merge" + // SupplementalGroupsPolicyStrict means that the container's provided + // SupplementalGroups and FsGroup (specified in SecurityContext) will be + // used instead of any groups defined in the container image. + SupplementalGroupsPolicyStrict SupplementalGroupsPolicy = "Strict" +) + // PodSecurityContext holds pod-level security attributes and common container settings. // Some fields are also present in container.securityContext. Field values of // container.securityContext take precedence over field values of PodSecurityContext. @@ -4187,16 +4233,27 @@ type PodSecurityContext struct { // PodSecurityContext, the value specified in SecurityContext takes precedence. // +optional RunAsNonRoot *bool `json:"runAsNonRoot,omitempty" protobuf:"varint,3,opt,name=runAsNonRoot"` - // A list of groups applied to the first process run in each container, in addition - // to the container's primary GID, the fsGroup (if specified), and group memberships - // defined in the container image for the uid of the container process. If unspecified, - // no additional groups are added to any container. Note that group memberships - // defined in the container image for the uid of the container process are still effective, - // even if they are not included in this list. + // A list of groups applied to the first process run in each container, in + // addition to the container's primary GID and fsGroup (if specified). If + // the SupplementalGroupsPolicy feature is enabled, the + // supplementalGroupsPolicy field determines whether these are in addition + // to or instead of any group memberships defined in the container image. + // If unspecified, no additional groups are added, though group memberships + // defined in the container image may still be used, depending on the + // supplementalGroupsPolicy field. // Note that this field cannot be set when spec.os.name is windows. // +optional // +listType=atomic SupplementalGroups []int64 `json:"supplementalGroups,omitempty" protobuf:"varint,4,rep,name=supplementalGroups"` + // Defines how supplemental groups of the first container processes are calculated. + // Valid values are "Merge" and "Strict". If not specified, "Merge" is used. + // (Alpha) Using the field requires the SupplementalGroupsPolicy feature gate to be enabled + // and the container runtime must implement support for this feature. + // Note that this field cannot be set when spec.os.name is windows. + // TODO: update the default value to "Merge" when spec.os.name is not windows in v1.34 + // +featureGate=SupplementalGroupsPolicy + // +optional + SupplementalGroupsPolicy *SupplementalGroupsPolicy `json:"supplementalGroupsPolicy,omitempty" protobuf:"bytes,12,opt,name=supplementalGroupsPolicy"` // A special supplemental group that applies to all containers in a pod. // Some volume types allow the Kubelet to change the ownership of that volume // to be owned by the pod: diff --git a/staging/src/k8s.io/api/core/v1/types_swagger_doc_generated.go b/staging/src/k8s.io/api/core/v1/types_swagger_doc_generated.go index 9ade7e15531..27d4859ca02 100644 --- a/staging/src/k8s.io/api/core/v1/types_swagger_doc_generated.go +++ b/staging/src/k8s.io/api/core/v1/types_swagger_doc_generated.go @@ -482,12 +482,22 @@ var map_ContainerStatus = map[string]string{ "allocatedResources": "AllocatedResources represents the compute resources allocated for this container by the node. Kubelet sets this value to Container.Resources.Requests upon successful pod admission and after successfully admitting desired pod resize.", "resources": "Resources represents the compute resource requests and limits that have been successfully enacted on the running container after it has been started or has been successfully resized.", "volumeMounts": "Status of volume mounts.", + "user": "User represents user identity information initially attached to the first process of the container", } func (ContainerStatus) SwaggerDoc() map[string]string { return map_ContainerStatus } +var map_ContainerUser = map[string]string{ + "": "ContainerUser represents user identity information", + "linux": "Linux holds user identity information initially attached to the first process of the containers in Linux. Note that the actual running identity can be changed if the process has enough privilege to do so.", +} + +func (ContainerUser) SwaggerDoc() map[string]string { + return map_ContainerUser +} + var map_DaemonEndpoint = map[string]string{ "": "DaemonEndpoint contains information about a single Daemon endpoint.", "Port": "Port number of the given endpoint.", @@ -1009,6 +1019,17 @@ func (LimitRangeSpec) SwaggerDoc() map[string]string { return map_LimitRangeSpec } +var map_LinuxContainerUser = map[string]string{ + "": "LinuxContainerUser represents user identity information in Linux containers", + "uid": "UID is the primary uid initially attached to the first process in the container", + "gid": "GID is the primary gid initially attached to the first process in the container", + "supplementalGroups": "SupplementalGroups are the supplemental groups initially attached to the first process in the container", +} + +func (LinuxContainerUser) SwaggerDoc() map[string]string { + return map_LinuxContainerUser +} + var map_LoadBalancerIngress = map[string]string{ "": "LoadBalancerIngress represents the status of a load-balancer ingress point: traffic intended for the service should be sent to an ingress point.", "ip": "IP is set for load-balancer ingress points that are IP based (typically GCE or OpenStack load-balancers)", @@ -1725,18 +1746,19 @@ func (PodSchedulingGate) SwaggerDoc() map[string]string { } var map_PodSecurityContext = map[string]string{ - "": "PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.", - "seLinuxOptions": "The SELinux context to be applied to all containers. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows.", - "windowsOptions": "The Windows specific settings applied to all containers. If unspecified, the options within a container's SecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux.", - "runAsUser": "The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows.", - "runAsGroup": "The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows.", - "runAsNonRoot": "Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.", - "supplementalGroups": "A list of groups applied to the first process run in each container, in addition to the container's primary GID, the fsGroup (if specified), and group memberships defined in the container image for the uid of the container process. If unspecified, no additional groups are added to any container. Note that group memberships defined in the container image for the uid of the container process are still effective, even if they are not included in this list. Note that this field cannot be set when spec.os.name is windows.", - "fsGroup": "A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw ", - "sysctls": "Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch. Note that this field cannot be set when spec.os.name is windows.", - "fsGroupChangePolicy": "fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are \"OnRootMismatch\" and \"Always\". If not specified, \"Always\" is used. Note that this field cannot be set when spec.os.name is windows.", - "seccompProfile": "The seccomp options to use by the containers in this pod. Note that this field cannot be set when spec.os.name is windows.", - "appArmorProfile": "appArmorProfile is the AppArmor options to use by the containers in this pod. Note that this field cannot be set when spec.os.name is windows.", + "": "PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.", + "seLinuxOptions": "The SELinux context to be applied to all containers. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows.", + "windowsOptions": "The Windows specific settings applied to all containers. If unspecified, the options within a container's SecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux.", + "runAsUser": "The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows.", + "runAsGroup": "The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows.", + "runAsNonRoot": "Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.", + "supplementalGroups": "A list of groups applied to the first process run in each container, in addition to the container's primary GID and fsGroup (if specified). If the SupplementalGroupsPolicy feature is enabled, the supplementalGroupsPolicy field determines whether these are in addition to or instead of any group memberships defined in the container image. If unspecified, no additional groups are added, though group memberships defined in the container image may still be used, depending on the supplementalGroupsPolicy field. Note that this field cannot be set when spec.os.name is windows.", + "supplementalGroupsPolicy": "Defines how supplemental groups of the first container processes are calculated. Valid values are \"Merge\" and \"Strict\". If not specified, \"Merge\" is used. (Alpha) Using the field requires the SupplementalGroupsPolicy feature gate to be enabled and the container runtime must implement support for this feature. Note that this field cannot be set when spec.os.name is windows.", + "fsGroup": "A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw ", + "sysctls": "Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch. Note that this field cannot be set when spec.os.name is windows.", + "fsGroupChangePolicy": "fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are \"OnRootMismatch\" and \"Always\". If not specified, \"Always\" is used. Note that this field cannot be set when spec.os.name is windows.", + "seccompProfile": "The seccomp options to use by the containers in this pod. Note that this field cannot be set when spec.os.name is windows.", + "appArmorProfile": "appArmorProfile is the AppArmor options to use by the containers in this pod. Note that this field cannot be set when spec.os.name is windows.", } func (PodSecurityContext) SwaggerDoc() map[string]string { @@ -1789,7 +1811,7 @@ var map_PodSpec = map[string]string{ "overhead": "Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md", "topologySpreadConstraints": "TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.", "setHostnameAsFQDN": "If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default). In Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname). In Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters to FQDN. If a pod does not have FQDN, this has no effect. Default to false.", - "os": "Specifies the OS of the containers in the pod. Some pod and container fields are restricted if this is set.\n\nIf the OS field is set to linux, the following fields must be unset: -securityContext.windowsOptions\n\nIf the OS field is set to windows, following fields must be unset: - spec.hostPID - spec.hostIPC - spec.hostUsers - spec.securityContext.appArmorProfile - spec.securityContext.seLinuxOptions - spec.securityContext.seccompProfile - spec.securityContext.fsGroup - spec.securityContext.fsGroupChangePolicy - spec.securityContext.sysctls - spec.shareProcessNamespace - spec.securityContext.runAsUser - spec.securityContext.runAsGroup - spec.securityContext.supplementalGroups - spec.containers[*].securityContext.appArmorProfile - spec.containers[*].securityContext.seLinuxOptions - spec.containers[*].securityContext.seccompProfile - spec.containers[*].securityContext.capabilities - spec.containers[*].securityContext.readOnlyRootFilesystem - spec.containers[*].securityContext.privileged - spec.containers[*].securityContext.allowPrivilegeEscalation - spec.containers[*].securityContext.procMount - spec.containers[*].securityContext.runAsUser - spec.containers[*].securityContext.runAsGroup", + "os": "Specifies the OS of the containers in the pod. Some pod and container fields are restricted if this is set.\n\nIf the OS field is set to linux, the following fields must be unset: -securityContext.windowsOptions\n\nIf the OS field is set to windows, following fields must be unset: - spec.hostPID - spec.hostIPC - spec.hostUsers - spec.securityContext.appArmorProfile - spec.securityContext.seLinuxOptions - spec.securityContext.seccompProfile - spec.securityContext.fsGroup - spec.securityContext.fsGroupChangePolicy - spec.securityContext.sysctls - spec.shareProcessNamespace - spec.securityContext.runAsUser - spec.securityContext.runAsGroup - spec.securityContext.supplementalGroups - spec.securityContext.supplementalGroupsPolicy - spec.containers[*].securityContext.appArmorProfile - spec.containers[*].securityContext.seLinuxOptions - spec.containers[*].securityContext.seccompProfile - spec.containers[*].securityContext.capabilities - spec.containers[*].securityContext.readOnlyRootFilesystem - spec.containers[*].securityContext.privileged - spec.containers[*].securityContext.allowPrivilegeEscalation - spec.containers[*].securityContext.procMount - spec.containers[*].securityContext.runAsUser - spec.containers[*].securityContext.runAsGroup", "hostUsers": "Use the host's user namespace. Optional: Default to true. If set to true or not present, the pod will be run in the host user namespace, useful for when the pod needs a feature only available to the host user namespace, such as loading a kernel module with CAP_SYS_MODULE. When set to false, a new userns is created for the pod. Setting false is useful for mitigating container breakout vulnerabilities even allowing users to run their containers as root without actually having root privileges on the host. This field is alpha-level and is only honored by servers that enable the UserNamespacesSupport feature.", "schedulingGates": "SchedulingGates is an opaque list of values that if specified will block scheduling the pod. If schedulingGates is not empty, the pod will stay in the SchedulingGated state and the scheduler will not attempt to schedule the pod.\n\nSchedulingGates can only be set at pod creation time, and be removed only afterwards.", "resourceClaims": "ResourceClaims defines which ResourceClaims must be allocated and reserved before the Pod is allowed to start. The resources will be made available to those containers which consume them by name.\n\nThis is an alpha field and requires enabling the DynamicResourceAllocation feature gate.\n\nThis field is immutable.", diff --git a/staging/src/k8s.io/api/core/v1/zz_generated.deepcopy.go b/staging/src/k8s.io/api/core/v1/zz_generated.deepcopy.go index 08e927848ec..a3a302cf097 100644 --- a/staging/src/k8s.io/api/core/v1/zz_generated.deepcopy.go +++ b/staging/src/k8s.io/api/core/v1/zz_generated.deepcopy.go @@ -1069,6 +1069,11 @@ func (in *ContainerStatus) DeepCopyInto(out *ContainerStatus) { (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.User != nil { + in, out := &in.User, &out.User + *out = new(ContainerUser) + (*in).DeepCopyInto(*out) + } return } @@ -1082,6 +1087,27 @@ func (in *ContainerStatus) DeepCopy() *ContainerStatus { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ContainerUser) DeepCopyInto(out *ContainerUser) { + *out = *in + if in.Linux != nil { + in, out := &in.Linux, &out.Linux + *out = new(LinuxContainerUser) + (*in).DeepCopyInto(*out) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ContainerUser. +func (in *ContainerUser) DeepCopy() *ContainerUser { + if in == nil { + return nil + } + out := new(ContainerUser) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *DaemonEndpoint) DeepCopyInto(out *DaemonEndpoint) { *out = *in @@ -2261,6 +2287,27 @@ func (in *LimitRangeSpec) DeepCopy() *LimitRangeSpec { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LinuxContainerUser) DeepCopyInto(out *LinuxContainerUser) { + *out = *in + if in.SupplementalGroups != nil { + in, out := &in.SupplementalGroups, &out.SupplementalGroups + *out = make([]int64, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LinuxContainerUser. +func (in *LinuxContainerUser) DeepCopy() *LinuxContainerUser { + if in == nil { + return nil + } + out := new(LinuxContainerUser) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *List) DeepCopyInto(out *List) { *out = *in @@ -4055,6 +4102,11 @@ func (in *PodSecurityContext) DeepCopyInto(out *PodSecurityContext) { *out = make([]int64, len(*in)) copy(*out, *in) } + if in.SupplementalGroupsPolicy != nil { + in, out := &in.SupplementalGroupsPolicy, &out.SupplementalGroupsPolicy + *out = new(SupplementalGroupsPolicy) + **out = **in + } if in.FSGroup != nil { in, out := &in.FSGroup, &out.FSGroup *out = new(int64) diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1.DaemonSet.json b/staging/src/k8s.io/api/testdata/HEAD/apps.v1.DaemonSet.json index dcf01c77e3a..08a075c0ae8 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/apps.v1.DaemonSet.json +++ b/staging/src/k8s.io/api/testdata/HEAD/apps.v1.DaemonSet.json @@ -1414,6 +1414,7 @@ "supplementalGroups": [ 4 ], + "supplementalGroupsPolicy": "supplementalGroupsPolicyValue", "fsGroup": 5, "sysctls": [ { diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1.DaemonSet.pb b/staging/src/k8s.io/api/testdata/HEAD/apps.v1.DaemonSet.pb index ad786e58744033109e215b8e05941b0dd5f6297f..103b52552d8f6463d5bcff993f2ed2cc6e17c8cc 100644 GIT binary patch delta 78 zcmV-U0I~nIRMb?E8v(Pi9AyCl`cRWW7f%A_Pq7_j0Rn(cvpNGR5d)zD3X|R@E|ZlM k(;8wOb9HcVY-Md_ZggR6M{;jR{Pq7|k0Rn(cvpoYU5d)zD3X|a` oE|ZuP(;8wOb9HcVY-Md_ZggR6M{;jRoPq7|k0RrJnvpoYU5d(q(3X&%- Mlb96Kvx*hh6a{w@fB*mh diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1.Deployment.yaml b/staging/src/k8s.io/api/testdata/HEAD/apps.v1.Deployment.yaml index 2763d76582d..46b1fb72d2d 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/apps.v1.Deployment.yaml +++ b/staging/src/k8s.io/api/testdata/HEAD/apps.v1.Deployment.yaml @@ -894,6 +894,7 @@ spec: type: typeValue supplementalGroups: - 4 + supplementalGroupsPolicy: supplementalGroupsPolicyValue sysctls: - name: nameValue value: valueValue diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1.ReplicaSet.json b/staging/src/k8s.io/api/testdata/HEAD/apps.v1.ReplicaSet.json index 061c998b6e7..442ea287ad8 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/apps.v1.ReplicaSet.json +++ b/staging/src/k8s.io/api/testdata/HEAD/apps.v1.ReplicaSet.json @@ -1416,6 +1416,7 @@ "supplementalGroups": [ 4 ], + "supplementalGroupsPolicy": "supplementalGroupsPolicyValue", "fsGroup": 5, "sysctls": [ { diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1.ReplicaSet.pb b/staging/src/k8s.io/api/testdata/HEAD/apps.v1.ReplicaSet.pb index 763365c0ed2ac4887a4f2481772673dd98557783..4cb0e859129659490920fc8e03157d9a9cd8896c 100644 GIT binary patch delta 82 zcmV-Y0ImP;Q;t-S90BaH9c2LpyHE%L5|dFDO#>R{Pq7|k0Rn(cvpoYU5d)zD3X|a` oE|ZuP(;8wOb9HcVY-Md_ZggR6M{;j5|iN;O#>RoPq7|k0RrJnvpoYU5d(q(3X&%- Mlb96Kvx*gj6!~Wn?f?J) diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1.ReplicaSet.yaml b/staging/src/k8s.io/api/testdata/HEAD/apps.v1.ReplicaSet.yaml index 8a861b12ece..61002f3957e 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/apps.v1.ReplicaSet.yaml +++ b/staging/src/k8s.io/api/testdata/HEAD/apps.v1.ReplicaSet.yaml @@ -886,6 +886,7 @@ spec: type: typeValue supplementalGroups: - 4 + supplementalGroupsPolicy: supplementalGroupsPolicyValue sysctls: - name: nameValue value: valueValue diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1.StatefulSet.json b/staging/src/k8s.io/api/testdata/HEAD/apps.v1.StatefulSet.json index 738df7ded24..fdd1d5bec16 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/apps.v1.StatefulSet.json +++ b/staging/src/k8s.io/api/testdata/HEAD/apps.v1.StatefulSet.json @@ -1415,6 +1415,7 @@ "supplementalGroups": [ 4 ], + "supplementalGroupsPolicy": "supplementalGroupsPolicyValue", "fsGroup": 5, "sysctls": [ { diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1.StatefulSet.pb b/staging/src/k8s.io/api/testdata/HEAD/apps.v1.StatefulSet.pb index e73f312b0569774ad6ff10992781ceb203594736..e4a9ad00a66dbdfb73bbe61405cc1e5ac037f62c 100644 GIT binary patch delta 82 zcmV-Y0ImOmU7=l&9RdEa9%TUqo>>S15|f=7O#>R{Pq80l0Rn(cvpxeV5d)zD3X^^w oE|ZxQ(;8wOb9HcVY-Md_ZggR6M{;j8E~8&7XSbN delta 58 zcmZ1&+Y~!Nmg#=X=7X9kjI947I2eT{7mE2ZOC9$I3o$+P*=)zGCCJ>w#5I{wU2pPC Lk;|LAMa3imUO5v= diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1.StatefulSet.yaml b/staging/src/k8s.io/api/testdata/HEAD/apps.v1.StatefulSet.yaml index 2fc4b15c3c8..428d515e786 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/apps.v1.StatefulSet.yaml +++ b/staging/src/k8s.io/api/testdata/HEAD/apps.v1.StatefulSet.yaml @@ -894,6 +894,7 @@ spec: type: typeValue supplementalGroups: - 4 + supplementalGroupsPolicy: supplementalGroupsPolicyValue sysctls: - name: nameValue value: valueValue diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta1.Deployment.json b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta1.Deployment.json index df7fd4baa76..cc0f4140068 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta1.Deployment.json +++ b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta1.Deployment.json @@ -1415,6 +1415,7 @@ "supplementalGroups": [ 4 ], + "supplementalGroupsPolicy": "supplementalGroupsPolicyValue", "fsGroup": 5, "sysctls": [ { diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta1.Deployment.pb b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta1.Deployment.pb index a41668cfb69e015b5c005d3f229b9c7893c0e463..85b336059da5db742a259f9d6b4b66e73d724c92 100644 GIT binary patch delta 84 zcmV-a0IUDYRO(caAp*lxv)ln>0R@Cn2mun4p&3mA8s@Xx0c8OKfK9VP11b>%p#ln% qp%E^VofOj=VjXjJaBys8ZDnqBVQfcoZ*_2UP;YE$V|lY{72p*4Z62ur delta 57 zcmV-90LK67RLfM5Ap)dSv)ln>0R`ny2mun4z!^;f8ppHS0c8OK;Y_na11b>%f&vPY Pp%E^VofOlvj}_Y#WziI; diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta1.Deployment.yaml b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta1.Deployment.yaml index 2e1f9500bd9..00e93f469ff 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta1.Deployment.yaml +++ b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta1.Deployment.yaml @@ -896,6 +896,7 @@ spec: type: typeValue supplementalGroups: - 4 + supplementalGroupsPolicy: supplementalGroupsPolicyValue sysctls: - name: nameValue value: valueValue diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta1.StatefulSet.json b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta1.StatefulSet.json index cf8a1d77a59..ce9629015d3 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta1.StatefulSet.json +++ b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta1.StatefulSet.json @@ -1415,6 +1415,7 @@ "supplementalGroups": [ 4 ], + "supplementalGroupsPolicy": "supplementalGroupsPolicyValue", "fsGroup": 5, "sysctls": [ { diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta1.StatefulSet.pb b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta1.StatefulSet.pb index 299acff8651536efa15b48c14dd59749415c51e1..67642e0efdbc8df2e70deb42edbccd698c3c3896 100644 GIT binary patch delta 79 zcmZpVT^2h*iRoX==DUn3jI8q_IT(c|8%p{zNj=+qhcT6rslj)%GqaW;#g0pTE K0|B#;6&4x&u@QX$ diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta1.StatefulSet.yaml b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta1.StatefulSet.yaml index 31eeeaec6fd..0b7ee834124 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta1.StatefulSet.yaml +++ b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta1.StatefulSet.yaml @@ -894,6 +894,7 @@ spec: type: typeValue supplementalGroups: - 4 + supplementalGroupsPolicy: supplementalGroupsPolicyValue sysctls: - name: nameValue value: valueValue diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.DaemonSet.json b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.DaemonSet.json index ec1d1adc273..ec368716761 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.DaemonSet.json +++ b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.DaemonSet.json @@ -1414,6 +1414,7 @@ "supplementalGroups": [ 4 ], + "supplementalGroupsPolicy": "supplementalGroupsPolicyValue", "fsGroup": 5, "sysctls": [ { diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.DaemonSet.pb b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.DaemonSet.pb index 1a4b817846bae812ad4c958d1f302ab31d35b3a4..9df9c648b22c1fbb6517ccd39a1d28234c65ab1d 100644 GIT binary patch delta 80 zcmV-W0I&bLRM}LJAOW+nA!Pvr`cMj!o*7L766Ukm0c8OKfK9VM11b>%p#ln%e;zKA mniSI-VjXjJaBys8ZDnqBVQfcoZ*_2UP;YE$V|lY^719)#2OW$6 delta 51 zcmcZ^vMXeQ0^^j8im8lDw*w{@iup4h-+Y4+$b0Cs*`8TTkhzJ8Yw|ony~(pgE^qD; HJu3nL@mCVE diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.DaemonSet.yaml b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.DaemonSet.yaml index f483e223250..ec82af43576 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.DaemonSet.yaml +++ b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.DaemonSet.yaml @@ -886,6 +886,7 @@ spec: type: typeValue supplementalGroups: - 4 + supplementalGroupsPolicy: supplementalGroupsPolicyValue sysctls: - name: nameValue value: valueValue diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.Deployment.json b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.Deployment.json index 4c633272abe..2ad7b084237 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.Deployment.json +++ b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.Deployment.json @@ -1415,6 +1415,7 @@ "supplementalGroups": [ 4 ], + "supplementalGroupsPolicy": "supplementalGroupsPolicyValue", "fsGroup": 5, "sysctls": [ { diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.Deployment.pb b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.Deployment.pb index 36c384e2a2de633742b138b9dca25ba6766c7ca3..a5ac228c2cdf8a37052a93000a193abaf38f72ba 100644 GIT binary patch delta 84 zcmV-a0IUDUROVEWAp*Ztv)ln>0R@0j2mun4p&3mA8s@Xx0c8OKfK9VP11b>%p#ln% qp%E^VofOj=VjXjJaBys8ZDnqBVQfcoZ*_2UP;YE$V|lY{72Fi`g&vgv delta 57 zcmV-90LK63RL4}1Ap)ROv)ln>0R`bu2mun4z!^;f8ppHS0c8OK;Y_na11b>%f&vPY Pp%E^VofOlvj}_MxVwn_^ diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.Deployment.yaml b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.Deployment.yaml index eda806861df..dc66b645798 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.Deployment.yaml +++ b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.Deployment.yaml @@ -894,6 +894,7 @@ spec: type: typeValue supplementalGroups: - 4 + supplementalGroupsPolicy: supplementalGroupsPolicyValue sysctls: - name: nameValue value: valueValue diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.ReplicaSet.json b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.ReplicaSet.json index 62289c8238d..9b5386e1b36 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.ReplicaSet.json +++ b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.ReplicaSet.json @@ -1416,6 +1416,7 @@ "supplementalGroups": [ 4 ], + "supplementalGroupsPolicy": "supplementalGroupsPolicyValue", "fsGroup": 5, "sysctls": [ { diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.ReplicaSet.pb b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.ReplicaSet.pb index 823e1c379d9ebc72f27da02095ecc734aa83c4f5..f830c53e02dff1d49ea99f1edbd2239e9e6187e5 100644 GIT binary patch delta 84 zcmV-a0IUD>Q0R_8I2mun4p&3mA8s@Xx0c8OKfK9VP11b>%p#ln% qp%E^VofOj=VjXjJaBys8ZDnqBVQfcoZ*_2UP;YE$V|lY{6^RrCsUCp< delta 57 zcmV-90LK55RP0R@~;2mun4z!^;f8ppHS0c8OK;Y_na11b>%f&vPY Pp%E^VofOlvj}?RzRx}g< diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.ReplicaSet.yaml b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.ReplicaSet.yaml index a1b83e38a3e..7c1a6739778 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.ReplicaSet.yaml +++ b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.ReplicaSet.yaml @@ -886,6 +886,7 @@ spec: type: typeValue supplementalGroups: - 4 + supplementalGroupsPolicy: supplementalGroupsPolicyValue sysctls: - name: nameValue value: valueValue diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.StatefulSet.json b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.StatefulSet.json index adfc8ca5ad4..c847397c1b2 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.StatefulSet.json +++ b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.StatefulSet.json @@ -1415,6 +1415,7 @@ "supplementalGroups": [ 4 ], + "supplementalGroupsPolicy": "supplementalGroupsPolicyValue", "fsGroup": 5, "sysctls": [ { diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.StatefulSet.pb b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.StatefulSet.pb index 50608756318a4c2202844c44bd1bd7bad8bb1b9b..4158f938707d8252980f1dd5c994e0ee1cb9e041 100644 GIT binary patch delta 79 zcmZpVT^2h*iRoX==DUn3jI8q_IT(c|8%p{zNj=+qhcT6rslj)%GqaW;#g0pTE K0|B#;6&4x&u@QX$ diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.StatefulSet.yaml b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.StatefulSet.yaml index 001db8b1193..0fca08ec845 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.StatefulSet.yaml +++ b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.StatefulSet.yaml @@ -894,6 +894,7 @@ spec: type: typeValue supplementalGroups: - 4 + supplementalGroupsPolicy: supplementalGroupsPolicyValue sysctls: - name: nameValue value: valueValue diff --git a/staging/src/k8s.io/api/testdata/HEAD/batch.v1.CronJob.json b/staging/src/k8s.io/api/testdata/HEAD/batch.v1.CronJob.json index 93a7e33b40a..d1dda413748 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/batch.v1.CronJob.json +++ b/staging/src/k8s.io/api/testdata/HEAD/batch.v1.CronJob.json @@ -1498,6 +1498,7 @@ "supplementalGroups": [ 4 ], + "supplementalGroupsPolicy": "supplementalGroupsPolicyValue", "fsGroup": 5, "sysctls": [ { diff --git a/staging/src/k8s.io/api/testdata/HEAD/batch.v1.CronJob.pb b/staging/src/k8s.io/api/testdata/HEAD/batch.v1.CronJob.pb index 0a7cb7de1c94c53c60ab68a01aac70a700dfffea..620cf67b5863f27f15d596de78a0f1eaeac3788b 100644 GIT binary patch delta 96 zcmZpRTpBq+im5en^9IHgM#cq`8yR&O?{8kun99iUGmwK(fJuURa=)@a3!~99f3O;+ y2H(wBS+oQh7j6<`W|T^jEiNr6$Vtsj%_~XFaWBd*EhrAi&&f=#-26|hLlgi8R3RAv delta 70 zcmZ1)*%moLis@Oz<_(M~jEs$w8yR&O4{Tn~n99g;E0BXxfJuUR@_SxCRt-j@lFUuDq}WNg|b#>}``NxWGU07Xa^EdT%j diff --git a/staging/src/k8s.io/api/testdata/HEAD/batch.v1.CronJob.yaml b/staging/src/k8s.io/api/testdata/HEAD/batch.v1.CronJob.yaml index 06e79da3b55..a53ca7e0602 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/batch.v1.CronJob.yaml +++ b/staging/src/k8s.io/api/testdata/HEAD/batch.v1.CronJob.yaml @@ -946,6 +946,7 @@ spec: type: typeValue supplementalGroups: - 4 + supplementalGroupsPolicy: supplementalGroupsPolicyValue sysctls: - name: nameValue value: valueValue diff --git a/staging/src/k8s.io/api/testdata/HEAD/batch.v1.Job.json b/staging/src/k8s.io/api/testdata/HEAD/batch.v1.Job.json index b1e65f63a44..92573dd93e4 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/batch.v1.Job.json +++ b/staging/src/k8s.io/api/testdata/HEAD/batch.v1.Job.json @@ -1449,6 +1449,7 @@ "supplementalGroups": [ 4 ], + "supplementalGroupsPolicy": "supplementalGroupsPolicyValue", "fsGroup": 5, "sysctls": [ { diff --git a/staging/src/k8s.io/api/testdata/HEAD/batch.v1.Job.pb b/staging/src/k8s.io/api/testdata/HEAD/batch.v1.Job.pb index 927781fa0d57317413747987795d4112a335b8d0..db1f26730bf53974d1044ebeb08274fe6478e73f 100644 GIT binary patch delta 78 zcmbObwmxiv7}MmijS?x0j6WyWGDa{x^9OO58hkg~GHVGkFJ$7H{7_AA@(hv7Qc1GK hr3D2!sky0nC5buiMfs%##R2&_naP!#(?nN^0su$C9Etz{ delta 50 zcmZ1u4hREg3U7|}x E0nL&ThyVZp diff --git a/staging/src/k8s.io/api/testdata/HEAD/batch.v1.Job.yaml b/staging/src/k8s.io/api/testdata/HEAD/batch.v1.Job.yaml index ec514934e8d..c988cf7a5c4 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/batch.v1.Job.yaml +++ b/staging/src/k8s.io/api/testdata/HEAD/batch.v1.Job.yaml @@ -910,6 +910,7 @@ spec: type: typeValue supplementalGroups: - 4 + supplementalGroupsPolicy: supplementalGroupsPolicyValue sysctls: - name: nameValue value: valueValue diff --git a/staging/src/k8s.io/api/testdata/HEAD/batch.v1beta1.CronJob.json b/staging/src/k8s.io/api/testdata/HEAD/batch.v1beta1.CronJob.json index 22f25ddb27d..385a1d55757 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/batch.v1beta1.CronJob.json +++ b/staging/src/k8s.io/api/testdata/HEAD/batch.v1beta1.CronJob.json @@ -1498,6 +1498,7 @@ "supplementalGroups": [ 4 ], + "supplementalGroupsPolicy": "supplementalGroupsPolicyValue", "fsGroup": 5, "sysctls": [ { diff --git a/staging/src/k8s.io/api/testdata/HEAD/batch.v1beta1.CronJob.pb b/staging/src/k8s.io/api/testdata/HEAD/batch.v1beta1.CronJob.pb index d302e74a08f3bee59063179223bf0252b2c77abc..f0178f866ad50ebfa57661dd056dcb4b2a414e9c 100644 GIT binary patch delta 91 zcmeBUBQjJiw*Lcp9`lcks=n2!5{I7|-;+i~H PLvOOF*yYXY;?1G}*pC&W diff --git a/staging/src/k8s.io/api/testdata/HEAD/batch.v1beta1.CronJob.yaml b/staging/src/k8s.io/api/testdata/HEAD/batch.v1beta1.CronJob.yaml index a2c53527554..b427864a421 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/batch.v1beta1.CronJob.yaml +++ b/staging/src/k8s.io/api/testdata/HEAD/batch.v1beta1.CronJob.yaml @@ -946,6 +946,7 @@ spec: type: typeValue supplementalGroups: - 4 + supplementalGroupsPolicy: supplementalGroupsPolicyValue sysctls: - name: nameValue value: valueValue diff --git a/staging/src/k8s.io/api/testdata/HEAD/core.v1.Pod.json b/staging/src/k8s.io/api/testdata/HEAD/core.v1.Pod.json index 5eba97b0aa5..5a3c27c9dd6 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/core.v1.Pod.json +++ b/staging/src/k8s.io/api/testdata/HEAD/core.v1.Pod.json @@ -1356,6 +1356,7 @@ "supplementalGroups": [ 4 ], + "supplementalGroupsPolicy": "supplementalGroupsPolicyValue", "fsGroup": 5, "sysctls": [ { @@ -1799,7 +1800,16 @@ "readOnly": true, "recursiveReadOnly": "recursiveReadOnlyValue" } - ] + ], + "user": { + "linux": { + "uid": 1, + "gid": 2, + "supplementalGroups": [ + 3 + ] + } + } } ], "containerStatuses": [ @@ -1870,7 +1880,16 @@ "readOnly": true, "recursiveReadOnly": "recursiveReadOnlyValue" } - ] + ], + "user": { + "linux": { + "uid": 1, + "gid": 2, + "supplementalGroups": [ + 3 + ] + } + } } ], "qosClass": "qosClassValue", @@ -1942,7 +1961,16 @@ "readOnly": true, "recursiveReadOnly": "recursiveReadOnlyValue" } - ] + ], + "user": { + "linux": { + "uid": 1, + "gid": 2, + "supplementalGroups": [ + 3 + ] + } + } } ], "resize": "resizeValue", diff --git a/staging/src/k8s.io/api/testdata/HEAD/core.v1.Pod.pb b/staging/src/k8s.io/api/testdata/HEAD/core.v1.Pod.pb index e608c88e5598000c6238ff9a83cecc4046ed9fbf..131132f78ac179ffdf96a39e6544d80e0d21e6b7 100644 GIT binary patch delta 163 zcmaDGy(&g1+oG6(i<66~%ut9qAU{QDO3dbm94U-U4ZfQz7_|hM7cy~8mQmH4d|BwS zRFZ6QX+c3wYHn&?Nn(zBQGRJbaX@}fW^(1`g~FC1jH@T#R-ekab#tM{8b;|X4lXth qMgb-XW-s2t{9@;v#Ny(x#GKO9Acz7kgo4Spv{j(mkVRMPIspL5yfKpi delta 104 zcmZ1#^EO&2+oG6(i<66~%ut9qAU{Rudi3Up94U-U4}CUQFlq@hH!*QdwpP`fd|Bx7 z=A*(UB8uv A8~^|S diff --git a/staging/src/k8s.io/api/testdata/HEAD/core.v1.Pod.yaml b/staging/src/k8s.io/api/testdata/HEAD/core.v1.Pod.yaml index ce63194bc59..2d1fbc5ad55 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/core.v1.Pod.yaml +++ b/staging/src/k8s.io/api/testdata/HEAD/core.v1.Pod.yaml @@ -842,6 +842,7 @@ spec: type: typeValue supplementalGroups: - 4 + supplementalGroupsPolicy: supplementalGroupsPolicyValue sysctls: - name: nameValue value: valueValue @@ -1217,6 +1218,12 @@ status: waiting: message: messageValue reason: reasonValue + user: + linux: + gid: 2 + supplementalGroups: + - 3 + uid: 1 volumeMounts: - mountPath: mountPathValue name: nameValue @@ -1267,6 +1274,12 @@ status: waiting: message: messageValue reason: reasonValue + user: + linux: + gid: 2 + supplementalGroups: + - 3 + uid: 1 volumeMounts: - mountPath: mountPathValue name: nameValue @@ -1320,6 +1333,12 @@ status: waiting: message: messageValue reason: reasonValue + user: + linux: + gid: 2 + supplementalGroups: + - 3 + uid: 1 volumeMounts: - mountPath: mountPathValue name: nameValue diff --git a/staging/src/k8s.io/api/testdata/HEAD/core.v1.PodStatusResult.json b/staging/src/k8s.io/api/testdata/HEAD/core.v1.PodStatusResult.json index 65f1bfd4574..b41862a3c86 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/core.v1.PodStatusResult.json +++ b/staging/src/k8s.io/api/testdata/HEAD/core.v1.PodStatusResult.json @@ -139,7 +139,16 @@ "readOnly": true, "recursiveReadOnly": "recursiveReadOnlyValue" } - ] + ], + "user": { + "linux": { + "uid": 1, + "gid": 2, + "supplementalGroups": [ + 3 + ] + } + } } ], "containerStatuses": [ @@ -210,7 +219,16 @@ "readOnly": true, "recursiveReadOnly": "recursiveReadOnlyValue" } - ] + ], + "user": { + "linux": { + "uid": 1, + "gid": 2, + "supplementalGroups": [ + 3 + ] + } + } } ], "qosClass": "qosClassValue", @@ -282,7 +300,16 @@ "readOnly": true, "recursiveReadOnly": "recursiveReadOnlyValue" } - ] + ], + "user": { + "linux": { + "uid": 1, + "gid": 2, + "supplementalGroups": [ + 3 + ] + } + } } ], "resize": "resizeValue", diff --git a/staging/src/k8s.io/api/testdata/HEAD/core.v1.PodStatusResult.pb b/staging/src/k8s.io/api/testdata/HEAD/core.v1.PodStatusResult.pb index b4811292ba635329a3586d49ddf9f6147de72512..e1aaa06d3150c1951f27cf6196dfded868e5c3cb 100644 GIT binary patch delta 96 zcmbQrznOo64AVsZjdCfBjH@R%GfrjPx>=HG4Wo1x2NxR$qX3fxvlnk+ez9{-VsUX; ZVoqsl5JUkNLc!!FRu!l=WYJ)DCjj#i7lr@; delta 64 zcmdnYKb3!i4AW=6jdCfBjJ=ba8K*L?-u!@h4WpnJZ()A1b53G$aadwbX=)Hec=9w> L6{w2Ih3rlM`41QG diff --git a/staging/src/k8s.io/api/testdata/HEAD/core.v1.PodStatusResult.yaml b/staging/src/k8s.io/api/testdata/HEAD/core.v1.PodStatusResult.yaml index 79da30f4aca..89743862466 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/core.v1.PodStatusResult.yaml +++ b/staging/src/k8s.io/api/testdata/HEAD/core.v1.PodStatusResult.yaml @@ -85,6 +85,12 @@ status: waiting: message: messageValue reason: reasonValue + user: + linux: + gid: 2 + supplementalGroups: + - 3 + uid: 1 volumeMounts: - mountPath: mountPathValue name: nameValue @@ -135,6 +141,12 @@ status: waiting: message: messageValue reason: reasonValue + user: + linux: + gid: 2 + supplementalGroups: + - 3 + uid: 1 volumeMounts: - mountPath: mountPathValue name: nameValue @@ -188,6 +200,12 @@ status: waiting: message: messageValue reason: reasonValue + user: + linux: + gid: 2 + supplementalGroups: + - 3 + uid: 1 volumeMounts: - mountPath: mountPathValue name: nameValue diff --git a/staging/src/k8s.io/api/testdata/HEAD/core.v1.PodTemplate.json b/staging/src/k8s.io/api/testdata/HEAD/core.v1.PodTemplate.json index caed8ed9693..c95d1f78db1 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/core.v1.PodTemplate.json +++ b/staging/src/k8s.io/api/testdata/HEAD/core.v1.PodTemplate.json @@ -1399,6 +1399,7 @@ "supplementalGroups": [ 4 ], + "supplementalGroupsPolicy": "supplementalGroupsPolicyValue", "fsGroup": 5, "sysctls": [ { diff --git a/staging/src/k8s.io/api/testdata/HEAD/core.v1.PodTemplate.pb b/staging/src/k8s.io/api/testdata/HEAD/core.v1.PodTemplate.pb index a48b5e83c5cac907a36a4a64ca01ac4ea8d563e6..747d77e6ec3da1a00c81b9bf002c6584cd20e1eb 100644 GIT binary patch delta 68 zcmX>d^eSkA1k;(I%?*qxjEv7V*E6OvGBx;ae#WFF$hdH`pa?UgRFZ6QX+c3wYHn&? YNn(zBQGRJbaX@}fW^(0beo-3{09-B@C;$Ke delta 41 xcmaDAbUJ8)1k>7}%?*qxjEu)O*E6OvGClO!{ESIUkg;jApa?VLW@Axv5dcb74W|GA diff --git a/staging/src/k8s.io/api/testdata/HEAD/core.v1.PodTemplate.yaml b/staging/src/k8s.io/api/testdata/HEAD/core.v1.PodTemplate.yaml index 7f7464c025e..fc22282e022 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/core.v1.PodTemplate.yaml +++ b/staging/src/k8s.io/api/testdata/HEAD/core.v1.PodTemplate.yaml @@ -875,6 +875,7 @@ template: type: typeValue supplementalGroups: - 4 + supplementalGroupsPolicy: supplementalGroupsPolicyValue sysctls: - name: nameValue value: valueValue diff --git a/staging/src/k8s.io/api/testdata/HEAD/core.v1.ReplicationController.json b/staging/src/k8s.io/api/testdata/HEAD/core.v1.ReplicationController.json index 5c0d972d471..a25d1a06102 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/core.v1.ReplicationController.json +++ b/staging/src/k8s.io/api/testdata/HEAD/core.v1.ReplicationController.json @@ -1405,6 +1405,7 @@ "supplementalGroups": [ 4 ], + "supplementalGroupsPolicy": "supplementalGroupsPolicyValue", "fsGroup": 5, "sysctls": [ { diff --git a/staging/src/k8s.io/api/testdata/HEAD/core.v1.ReplicationController.pb b/staging/src/k8s.io/api/testdata/HEAD/core.v1.ReplicationController.pb index e2b8f6a4281e89c06a74ef602afe665ec46a8627..2ad32db02aa30cf4ddc4cc7065f234613cb7ba13 100644 GIT binary patch delta 75 zcmX>a{3LjS64RdG&1)G`7@4{QCU-F^GCte9hB1|qslj)%Fte5*#g0nsp0|B#O G6@(PM@(@D+ diff --git a/staging/src/k8s.io/api/testdata/HEAD/core.v1.ReplicationController.yaml b/staging/src/k8s.io/api/testdata/HEAD/core.v1.ReplicationController.yaml index b5e28495be7..b78b7e7ad6e 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/core.v1.ReplicationController.yaml +++ b/staging/src/k8s.io/api/testdata/HEAD/core.v1.ReplicationController.yaml @@ -880,6 +880,7 @@ spec: type: typeValue supplementalGroups: - 4 + supplementalGroupsPolicy: supplementalGroupsPolicyValue sysctls: - name: nameValue value: valueValue diff --git a/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.DaemonSet.json b/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.DaemonSet.json index 1fc9ddc0285..81747fafbd9 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.DaemonSet.json +++ b/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.DaemonSet.json @@ -1414,6 +1414,7 @@ "supplementalGroups": [ 4 ], + "supplementalGroupsPolicy": "supplementalGroupsPolicyValue", "fsGroup": 5, "sysctls": [ { diff --git a/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.DaemonSet.pb b/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.DaemonSet.pb index 630a085f2020862345769ce8da970d74fe125d8a..10181dc9104bd365ae2c4257d0f3bca8104e92e5 100644 GIT binary patch delta 77 zcmV-T0J8tWRN+*RCIYoov)=(^0R#L{3X@0{bYW~qa&L8Tb5L(=X=8b_ZWYuNO&c6P delta 48 zcmV-00MGy7RKiq{CIXgJv)=(^0Rr7nlTjH@0mrl60c8OK;Y_nd11b>#g0pZG0|B#= G70(pTh!KGR diff --git a/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.DaemonSet.yaml b/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.DaemonSet.yaml index 5cffe5b7b09..4520f2c25e9 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.DaemonSet.yaml +++ b/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.DaemonSet.yaml @@ -886,6 +886,7 @@ spec: type: typeValue supplementalGroups: - 4 + supplementalGroupsPolicy: supplementalGroupsPolicyValue sysctls: - name: nameValue value: valueValue diff --git a/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.Deployment.json b/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.Deployment.json index 90b46c8f620..9ebd96a37c9 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.Deployment.json +++ b/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.Deployment.json @@ -1415,6 +1415,7 @@ "supplementalGroups": [ 4 ], + "supplementalGroupsPolicy": "supplementalGroupsPolicyValue", "fsGroup": 5, "sysctls": [ { diff --git a/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.Deployment.pb b/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.Deployment.pb index 2090a5576f7b64f7638e91b4aa92e16f6df9ba55..d3460079c6353ae215a87af0d5537e256f684fe4 100644 GIT binary patch delta 80 zcmV-W0I&biRPa=gCj!G%v#|%p#ln%>?SUg mqZHE`VjXjJaBys8ZDnqBVQfcoZ*_2UP;YE$V|lZ272p)o>>jcJ delta 53 zcmV-50LuUHRMAwBCjz8Yv#|%f&vPY3nwm< LqZHG#l@;3*FCG)I diff --git a/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.Deployment.yaml b/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.Deployment.yaml index fcfb14cea14..32c312904ac 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.Deployment.yaml +++ b/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.Deployment.yaml @@ -896,6 +896,7 @@ spec: type: typeValue supplementalGroups: - 4 + supplementalGroupsPolicy: supplementalGroupsPolicyValue sysctls: - name: nameValue value: valueValue diff --git a/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.ReplicaSet.json b/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.ReplicaSet.json index 44624db2d25..28443144fef 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.ReplicaSet.json +++ b/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.ReplicaSet.json @@ -1416,6 +1416,7 @@ "supplementalGroups": [ 4 ], + "supplementalGroupsPolicy": "supplementalGroupsPolicyValue", "fsGroup": 5, "sysctls": [ { diff --git a/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.ReplicaSet.pb b/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.ReplicaSet.pb index 4f32958858cf93c7d60ac785f9d2b10991c8dba4..f41d0ac1d3c84072135cc2b5a4632dd479d7dbc1 100644 GIT binary patch delta 79 zcmV-V0I>i1Q<+qdCj#tKv#|DiH&M0t%B0CoYqt K6w|Yn6@(NHgc7*` diff --git a/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.ReplicaSet.yaml b/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.ReplicaSet.yaml index 44f3bf108e9..d27965fb7a6 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.ReplicaSet.yaml +++ b/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.ReplicaSet.yaml @@ -886,6 +886,7 @@ spec: type: typeValue supplementalGroups: - 4 + supplementalGroupsPolicy: supplementalGroupsPolicyValue sysctls: - name: nameValue value: valueValue diff --git a/staging/src/k8s.io/client-go/applyconfigurations/core/v1/containerstatus.go b/staging/src/k8s.io/client-go/applyconfigurations/core/v1/containerstatus.go index e3f774bbb3d..5918f3603d4 100644 --- a/staging/src/k8s.io/client-go/applyconfigurations/core/v1/containerstatus.go +++ b/staging/src/k8s.io/client-go/applyconfigurations/core/v1/containerstatus.go @@ -37,6 +37,7 @@ type ContainerStatusApplyConfiguration struct { AllocatedResources *corev1.ResourceList `json:"allocatedResources,omitempty"` Resources *ResourceRequirementsApplyConfiguration `json:"resources,omitempty"` VolumeMounts []VolumeMountStatusApplyConfiguration `json:"volumeMounts,omitempty"` + User *ContainerUserApplyConfiguration `json:"user,omitempty"` } // ContainerStatusApplyConfiguration constructs an declarative configuration of the ContainerStatus type for use with @@ -145,3 +146,11 @@ func (b *ContainerStatusApplyConfiguration) WithVolumeMounts(values ...*VolumeMo } return b } + +// WithUser sets the User field in the declarative configuration to the given value +// and returns the receiver, so that objects can be built by chaining "With" function invocations. +// If called multiple times, the User field is set to the value of the last call. +func (b *ContainerStatusApplyConfiguration) WithUser(value *ContainerUserApplyConfiguration) *ContainerStatusApplyConfiguration { + b.User = value + return b +} diff --git a/staging/src/k8s.io/client-go/applyconfigurations/core/v1/containeruser.go b/staging/src/k8s.io/client-go/applyconfigurations/core/v1/containeruser.go new file mode 100644 index 00000000000..e538a46d6e2 --- /dev/null +++ b/staging/src/k8s.io/client-go/applyconfigurations/core/v1/containeruser.go @@ -0,0 +1,39 @@ +/* +Copyright The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by applyconfiguration-gen. DO NOT EDIT. + +package v1 + +// ContainerUserApplyConfiguration represents an declarative configuration of the ContainerUser type for use +// with apply. +type ContainerUserApplyConfiguration struct { + Linux *LinuxContainerUserApplyConfiguration `json:"linux,omitempty"` +} + +// ContainerUserApplyConfiguration constructs an declarative configuration of the ContainerUser type for use with +// apply. +func ContainerUser() *ContainerUserApplyConfiguration { + return &ContainerUserApplyConfiguration{} +} + +// WithLinux sets the Linux field in the declarative configuration to the given value +// and returns the receiver, so that objects can be built by chaining "With" function invocations. +// If called multiple times, the Linux field is set to the value of the last call. +func (b *ContainerUserApplyConfiguration) WithLinux(value *LinuxContainerUserApplyConfiguration) *ContainerUserApplyConfiguration { + b.Linux = value + return b +} diff --git a/staging/src/k8s.io/client-go/applyconfigurations/core/v1/linuxcontaineruser.go b/staging/src/k8s.io/client-go/applyconfigurations/core/v1/linuxcontaineruser.go new file mode 100644 index 00000000000..fdafd78e115 --- /dev/null +++ b/staging/src/k8s.io/client-go/applyconfigurations/core/v1/linuxcontaineruser.go @@ -0,0 +1,59 @@ +/* +Copyright The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by applyconfiguration-gen. DO NOT EDIT. + +package v1 + +// LinuxContainerUserApplyConfiguration represents an declarative configuration of the LinuxContainerUser type for use +// with apply. +type LinuxContainerUserApplyConfiguration struct { + UID *int64 `json:"uid,omitempty"` + GID *int64 `json:"gid,omitempty"` + SupplementalGroups []int64 `json:"supplementalGroups,omitempty"` +} + +// LinuxContainerUserApplyConfiguration constructs an declarative configuration of the LinuxContainerUser type for use with +// apply. +func LinuxContainerUser() *LinuxContainerUserApplyConfiguration { + return &LinuxContainerUserApplyConfiguration{} +} + +// WithUID sets the UID field in the declarative configuration to the given value +// and returns the receiver, so that objects can be built by chaining "With" function invocations. +// If called multiple times, the UID field is set to the value of the last call. +func (b *LinuxContainerUserApplyConfiguration) WithUID(value int64) *LinuxContainerUserApplyConfiguration { + b.UID = &value + return b +} + +// WithGID sets the GID field in the declarative configuration to the given value +// and returns the receiver, so that objects can be built by chaining "With" function invocations. +// If called multiple times, the GID field is set to the value of the last call. +func (b *LinuxContainerUserApplyConfiguration) WithGID(value int64) *LinuxContainerUserApplyConfiguration { + b.GID = &value + return b +} + +// WithSupplementalGroups adds the given value to the SupplementalGroups field in the declarative configuration +// and returns the receiver, so that objects can be build by chaining "With" function invocations. +// If called multiple times, values provided by each call will be appended to the SupplementalGroups field. +func (b *LinuxContainerUserApplyConfiguration) WithSupplementalGroups(values ...int64) *LinuxContainerUserApplyConfiguration { + for i := range values { + b.SupplementalGroups = append(b.SupplementalGroups, values[i]) + } + return b +} diff --git a/staging/src/k8s.io/client-go/applyconfigurations/core/v1/podsecuritycontext.go b/staging/src/k8s.io/client-go/applyconfigurations/core/v1/podsecuritycontext.go index 6b340294ebc..344c40fb857 100644 --- a/staging/src/k8s.io/client-go/applyconfigurations/core/v1/podsecuritycontext.go +++ b/staging/src/k8s.io/client-go/applyconfigurations/core/v1/podsecuritycontext.go @@ -25,17 +25,18 @@ import ( // PodSecurityContextApplyConfiguration represents an declarative configuration of the PodSecurityContext type for use // with apply. type PodSecurityContextApplyConfiguration struct { - SELinuxOptions *SELinuxOptionsApplyConfiguration `json:"seLinuxOptions,omitempty"` - WindowsOptions *WindowsSecurityContextOptionsApplyConfiguration `json:"windowsOptions,omitempty"` - RunAsUser *int64 `json:"runAsUser,omitempty"` - RunAsGroup *int64 `json:"runAsGroup,omitempty"` - RunAsNonRoot *bool `json:"runAsNonRoot,omitempty"` - SupplementalGroups []int64 `json:"supplementalGroups,omitempty"` - FSGroup *int64 `json:"fsGroup,omitempty"` - Sysctls []SysctlApplyConfiguration `json:"sysctls,omitempty"` - FSGroupChangePolicy *corev1.PodFSGroupChangePolicy `json:"fsGroupChangePolicy,omitempty"` - SeccompProfile *SeccompProfileApplyConfiguration `json:"seccompProfile,omitempty"` - AppArmorProfile *AppArmorProfileApplyConfiguration `json:"appArmorProfile,omitempty"` + SELinuxOptions *SELinuxOptionsApplyConfiguration `json:"seLinuxOptions,omitempty"` + WindowsOptions *WindowsSecurityContextOptionsApplyConfiguration `json:"windowsOptions,omitempty"` + RunAsUser *int64 `json:"runAsUser,omitempty"` + RunAsGroup *int64 `json:"runAsGroup,omitempty"` + RunAsNonRoot *bool `json:"runAsNonRoot,omitempty"` + SupplementalGroups []int64 `json:"supplementalGroups,omitempty"` + SupplementalGroupsPolicy *corev1.SupplementalGroupsPolicy `json:"supplementalGroupsPolicy,omitempty"` + FSGroup *int64 `json:"fsGroup,omitempty"` + Sysctls []SysctlApplyConfiguration `json:"sysctls,omitempty"` + FSGroupChangePolicy *corev1.PodFSGroupChangePolicy `json:"fsGroupChangePolicy,omitempty"` + SeccompProfile *SeccompProfileApplyConfiguration `json:"seccompProfile,omitempty"` + AppArmorProfile *AppArmorProfileApplyConfiguration `json:"appArmorProfile,omitempty"` } // PodSecurityContextApplyConfiguration constructs an declarative configuration of the PodSecurityContext type for use with @@ -94,6 +95,14 @@ func (b *PodSecurityContextApplyConfiguration) WithSupplementalGroups(values ... return b } +// WithSupplementalGroupsPolicy sets the SupplementalGroupsPolicy field in the declarative configuration to the given value +// and returns the receiver, so that objects can be built by chaining "With" function invocations. +// If called multiple times, the SupplementalGroupsPolicy field is set to the value of the last call. +func (b *PodSecurityContextApplyConfiguration) WithSupplementalGroupsPolicy(value corev1.SupplementalGroupsPolicy) *PodSecurityContextApplyConfiguration { + b.SupplementalGroupsPolicy = &value + return b +} + // WithFSGroup sets the FSGroup field in the declarative configuration to the given value // and returns the receiver, so that objects can be built by chaining "With" function invocations. // If called multiple times, the FSGroup field is set to the value of the last call. diff --git a/staging/src/k8s.io/client-go/applyconfigurations/internal/internal.go b/staging/src/k8s.io/client-go/applyconfigurations/internal/internal.go index 610b4d13d87..4b500dee0e1 100644 --- a/staging/src/k8s.io/client-go/applyconfigurations/internal/internal.go +++ b/staging/src/k8s.io/client-go/applyconfigurations/internal/internal.go @@ -5084,6 +5084,9 @@ var schemaYAML = typed.YAMLObject(`types: type: namedType: io.k8s.api.core.v1.ContainerState default: {} + - name: user + type: + namedType: io.k8s.api.core.v1.ContainerUser - name: volumeMounts type: list: @@ -5092,6 +5095,12 @@ var schemaYAML = typed.YAMLObject(`types: elementRelationship: associative keys: - mountPath +- name: io.k8s.api.core.v1.ContainerUser + map: + fields: + - name: linux + type: + namedType: io.k8s.api.core.v1.LinuxContainerUser - name: io.k8s.api.core.v1.DaemonEndpoint map: fields: @@ -5851,6 +5860,23 @@ var schemaYAML = typed.YAMLObject(`types: elementType: namedType: io.k8s.api.core.v1.LimitRangeItem elementRelationship: atomic +- name: io.k8s.api.core.v1.LinuxContainerUser + map: + fields: + - name: gid + type: + scalar: numeric + default: 0 + - name: supplementalGroups + type: + list: + elementType: + scalar: numeric + elementRelationship: atomic + - name: uid + type: + scalar: numeric + default: 0 - name: io.k8s.api.core.v1.LoadBalancerIngress map: fields: @@ -6822,6 +6848,9 @@ var schemaYAML = typed.YAMLObject(`types: elementType: scalar: numeric elementRelationship: atomic + - name: supplementalGroupsPolicy + type: + scalar: string - name: sysctls type: list: diff --git a/staging/src/k8s.io/client-go/applyconfigurations/utils.go b/staging/src/k8s.io/client-go/applyconfigurations/utils.go index 75d9c5c0481..623c10376be 100644 --- a/staging/src/k8s.io/client-go/applyconfigurations/utils.go +++ b/staging/src/k8s.io/client-go/applyconfigurations/utils.go @@ -681,6 +681,8 @@ func ForKind(kind schema.GroupVersionKind) interface{} { return &applyconfigurationscorev1.ContainerStateWaitingApplyConfiguration{} case corev1.SchemeGroupVersion.WithKind("ContainerStatus"): return &applyconfigurationscorev1.ContainerStatusApplyConfiguration{} + case corev1.SchemeGroupVersion.WithKind("ContainerUser"): + return &applyconfigurationscorev1.ContainerUserApplyConfiguration{} case corev1.SchemeGroupVersion.WithKind("CSIPersistentVolumeSource"): return &applyconfigurationscorev1.CSIPersistentVolumeSourceApplyConfiguration{} case corev1.SchemeGroupVersion.WithKind("CSIVolumeSource"): @@ -767,6 +769,8 @@ func ForKind(kind schema.GroupVersionKind) interface{} { return &applyconfigurationscorev1.LimitRangeItemApplyConfiguration{} case corev1.SchemeGroupVersion.WithKind("LimitRangeSpec"): return &applyconfigurationscorev1.LimitRangeSpecApplyConfiguration{} + case corev1.SchemeGroupVersion.WithKind("LinuxContainerUser"): + return &applyconfigurationscorev1.LinuxContainerUserApplyConfiguration{} case corev1.SchemeGroupVersion.WithKind("LoadBalancerIngress"): return &applyconfigurationscorev1.LoadBalancerIngressApplyConfiguration{} case corev1.SchemeGroupVersion.WithKind("LoadBalancerStatus"): diff --git a/staging/src/k8s.io/cri-api/pkg/apis/runtime/v1/api.pb.go b/staging/src/k8s.io/cri-api/pkg/apis/runtime/v1/api.pb.go index cb6c725e65b..6b930e29f49 100644 --- a/staging/src/k8s.io/cri-api/pkg/apis/runtime/v1/api.pb.go +++ b/staging/src/k8s.io/cri-api/pkg/apis/runtime/v1/api.pb.go @@ -155,6 +155,40 @@ func (NamespaceMode) EnumDescriptor() ([]byte, []int) { return fileDescriptor_00212fb1f9d3bf1c, []int{2} } +// SupplementalGroupsPolicy defines how supplemental groups +// of the first container processes are calculated. +type SupplementalGroupsPolicy int32 + +const ( + // Merge means that the container's provided SupplementalGroups + // and FsGroup (specified in SecurityContext) will be merged with + // the primary user's groups as defined in the container image + // (in /etc/group). + SupplementalGroupsPolicy_Merge SupplementalGroupsPolicy = 0 + // Strict means that the container's provided SupplementalGroups + // and FsGroup (specified in SecurityContext) will be used instead of + // any groups defined in the container image. + SupplementalGroupsPolicy_Strict SupplementalGroupsPolicy = 1 +) + +var SupplementalGroupsPolicy_name = map[int32]string{ + 0: "Merge", + 1: "Strict", +} + +var SupplementalGroupsPolicy_value = map[string]int32{ + "Merge": 0, + "Strict": 1, +} + +func (x SupplementalGroupsPolicy) String() string { + return proto.EnumName(SupplementalGroupsPolicy_name, int32(x)) +} + +func (SupplementalGroupsPolicy) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_00212fb1f9d3bf1c, []int{3} +} + type PodSandboxState int32 const ( @@ -177,7 +211,7 @@ func (x PodSandboxState) String() string { } func (PodSandboxState) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{3} + return fileDescriptor_00212fb1f9d3bf1c, []int{4} } type ContainerState int32 @@ -208,7 +242,7 @@ func (x ContainerState) String() string { } func (ContainerState) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{4} + return fileDescriptor_00212fb1f9d3bf1c, []int{5} } type ContainerEventType int32 @@ -243,7 +277,7 @@ func (x ContainerEventType) String() string { } func (ContainerEventType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{5} + return fileDescriptor_00212fb1f9d3bf1c, []int{6} } type MetricType int32 @@ -268,7 +302,7 @@ func (x MetricType) String() string { } func (MetricType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{6} + return fileDescriptor_00212fb1f9d3bf1c, []int{7} } type CgroupDriver int32 @@ -293,7 +327,7 @@ func (x CgroupDriver) String() string { } func (CgroupDriver) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{7} + return fileDescriptor_00212fb1f9d3bf1c, []int{8} } // Available profile types. @@ -1000,13 +1034,14 @@ type LinuxSandboxSecurityContext struct { RunAsGroup *Int64Value `protobuf:"bytes,8,opt,name=run_as_group,json=runAsGroup,proto3" json:"run_as_group,omitempty"` // If set, the root filesystem of the sandbox is read-only. ReadonlyRootfs bool `protobuf:"varint,4,opt,name=readonly_rootfs,json=readonlyRootfs,proto3" json:"readonly_rootfs,omitempty"` - // List of groups applied to the first process run in the sandbox, in - // addition to the sandbox's primary GID, and group memberships defined - // in the container image for the sandbox's primary UID of the container process. - // If the list is empty, no additional groups are added to any container. - // Note that group memberships defined in the container image for the sandbox's primary UID - // of the container process are still effective, even if they are not included in this list. + // List of groups applied to the first process run in each container. + // supplemental_groups_policy can control how groups will be calculated. SupplementalGroups []int64 `protobuf:"varint,5,rep,packed,name=supplemental_groups,json=supplementalGroups,proto3" json:"supplemental_groups,omitempty"` + // supplemental_groups_policy defines how supplemental groups of the first + // container processes are calculated. + // Valid values are "Merge" and "Strict". + // If not specified, "Merge" is used. + SupplementalGroupsPolicy SupplementalGroupsPolicy `protobuf:"varint,11,opt,name=supplemental_groups_policy,json=supplementalGroupsPolicy,proto3,enum=runtime.v1.SupplementalGroupsPolicy" json:"supplemental_groups_policy,omitempty"` // Indicates whether the sandbox will be asked to run a privileged // container. If a privileged container is to be executed within it, this // MUST be true. @@ -1103,6 +1138,13 @@ func (m *LinuxSandboxSecurityContext) GetSupplementalGroups() []int64 { return nil } +func (m *LinuxSandboxSecurityContext) GetSupplementalGroupsPolicy() SupplementalGroupsPolicy { + if m != nil { + return m.SupplementalGroupsPolicy + } + return SupplementalGroupsPolicy_Merge +} + func (m *LinuxSandboxSecurityContext) GetPrivileged() bool { if m != nil { return m.Privileged @@ -3999,13 +4041,14 @@ type LinuxContainerSecurityContext struct { RunAsUsername string `protobuf:"bytes,6,opt,name=run_as_username,json=runAsUsername,proto3" json:"run_as_username,omitempty"` // If set, the root filesystem of the container is read-only. ReadonlyRootfs bool `protobuf:"varint,7,opt,name=readonly_rootfs,json=readonlyRootfs,proto3" json:"readonly_rootfs,omitempty"` - // List of groups applied to the first process run in the container, in - // addition to the container's primary GID, and group memberships defined - // in the container image for the container's primary UID of the container process. - // If the list is empty, no additional groups are added to any container. - // Note that group memberships defined in the container image for the container's primary UID - // of the container process are still effective, even if they are not included in this list. + // List of groups applied to the first process run in each container. + // supplemental_groups_policy can control how groups will be calculated. SupplementalGroups []int64 `protobuf:"varint,8,rep,packed,name=supplemental_groups,json=supplementalGroups,proto3" json:"supplemental_groups,omitempty"` + // supplemental_groups_policy defines how supplemental groups of the first + // container processes are calculated. + // Valid values are "Merge" and "Strict". + // If not specified, "Merge" is used. + SupplementalGroupsPolicy SupplementalGroupsPolicy `protobuf:"varint,17,opt,name=supplemental_groups_policy,json=supplementalGroupsPolicy,proto3,enum=runtime.v1.SupplementalGroupsPolicy" json:"supplemental_groups_policy,omitempty"` // no_new_privs defines if the flag for no_new_privs should be set on the // container. NoNewPrivs bool `protobuf:"varint,11,opt,name=no_new_privs,json=noNewPrivs,proto3" json:"no_new_privs,omitempty"` @@ -4133,6 +4176,13 @@ func (m *LinuxContainerSecurityContext) GetSupplementalGroups() []int64 { return nil } +func (m *LinuxContainerSecurityContext) GetSupplementalGroupsPolicy() SupplementalGroupsPolicy { + if m != nil { + return m.SupplementalGroupsPolicy + } + return SupplementalGroupsPolicy_Merge +} + func (m *LinuxContainerSecurityContext) GetNoNewPrivs() bool { if m != nil { return m.NoNewPrivs @@ -4241,6 +4291,70 @@ func (m *LinuxContainerConfig) GetSecurityContext() *LinuxContainerSecurityConte return nil } +type LinuxContainerUser struct { + // uid is the primary uid initially attached to the first process in the container + Uid int64 `protobuf:"varint,1,opt,name=uid,proto3" json:"uid,omitempty"` + // gid is the primary gid initially attached to the first process in the container + Gid int64 `protobuf:"varint,2,opt,name=gid,proto3" json:"gid,omitempty"` + // supplemental_groups are the supplemental groups initially attached to the first process in the container + SupplementalGroups []int64 `protobuf:"varint,3,rep,packed,name=supplemental_groups,json=supplementalGroups,proto3" json:"supplemental_groups,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *LinuxContainerUser) Reset() { *m = LinuxContainerUser{} } +func (*LinuxContainerUser) ProtoMessage() {} +func (*LinuxContainerUser) Descriptor() ([]byte, []int) { + return fileDescriptor_00212fb1f9d3bf1c, []int{55} +} +func (m *LinuxContainerUser) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *LinuxContainerUser) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_LinuxContainerUser.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *LinuxContainerUser) XXX_Merge(src proto.Message) { + xxx_messageInfo_LinuxContainerUser.Merge(m, src) +} +func (m *LinuxContainerUser) XXX_Size() int { + return m.Size() +} +func (m *LinuxContainerUser) XXX_DiscardUnknown() { + xxx_messageInfo_LinuxContainerUser.DiscardUnknown(m) +} + +var xxx_messageInfo_LinuxContainerUser proto.InternalMessageInfo + +func (m *LinuxContainerUser) GetUid() int64 { + if m != nil { + return m.Uid + } + return 0 +} + +func (m *LinuxContainerUser) GetGid() int64 { + if m != nil { + return m.Gid + } + return 0 +} + +func (m *LinuxContainerUser) GetSupplementalGroups() []int64 { + if m != nil { + return m.SupplementalGroups + } + return nil +} + // WindowsNamespaceOption provides options for Windows namespaces. type WindowsNamespaceOption struct { // Network namespace for this container/sandbox. @@ -4253,7 +4367,7 @@ type WindowsNamespaceOption struct { func (m *WindowsNamespaceOption) Reset() { *m = WindowsNamespaceOption{} } func (*WindowsNamespaceOption) ProtoMessage() {} func (*WindowsNamespaceOption) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{55} + return fileDescriptor_00212fb1f9d3bf1c, []int{56} } func (m *WindowsNamespaceOption) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4310,7 +4424,7 @@ type WindowsSandboxSecurityContext struct { func (m *WindowsSandboxSecurityContext) Reset() { *m = WindowsSandboxSecurityContext{} } func (*WindowsSandboxSecurityContext) ProtoMessage() {} func (*WindowsSandboxSecurityContext) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{56} + return fileDescriptor_00212fb1f9d3bf1c, []int{57} } func (m *WindowsSandboxSecurityContext) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4379,7 +4493,7 @@ type WindowsPodSandboxConfig struct { func (m *WindowsPodSandboxConfig) Reset() { *m = WindowsPodSandboxConfig{} } func (*WindowsPodSandboxConfig) ProtoMessage() {} func (*WindowsPodSandboxConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{57} + return fileDescriptor_00212fb1f9d3bf1c, []int{58} } func (m *WindowsPodSandboxConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4432,7 +4546,7 @@ type WindowsContainerSecurityContext struct { func (m *WindowsContainerSecurityContext) Reset() { *m = WindowsContainerSecurityContext{} } func (*WindowsContainerSecurityContext) ProtoMessage() {} func (*WindowsContainerSecurityContext) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{58} + return fileDescriptor_00212fb1f9d3bf1c, []int{59} } func (m *WindowsContainerSecurityContext) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4496,7 +4610,7 @@ type WindowsContainerConfig struct { func (m *WindowsContainerConfig) Reset() { *m = WindowsContainerConfig{} } func (*WindowsContainerConfig) ProtoMessage() {} func (*WindowsContainerConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{59} + return fileDescriptor_00212fb1f9d3bf1c, []int{60} } func (m *WindowsContainerConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4559,7 +4673,7 @@ type WindowsContainerResources struct { func (m *WindowsContainerResources) Reset() { *m = WindowsContainerResources{} } func (*WindowsContainerResources) ProtoMessage() {} func (*WindowsContainerResources) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{60} + return fileDescriptor_00212fb1f9d3bf1c, []int{61} } func (m *WindowsContainerResources) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4640,7 +4754,7 @@ type ContainerMetadata struct { func (m *ContainerMetadata) Reset() { *m = ContainerMetadata{} } func (*ContainerMetadata) ProtoMessage() {} func (*ContainerMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{61} + return fileDescriptor_00212fb1f9d3bf1c, []int{62} } func (m *ContainerMetadata) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4701,7 +4815,7 @@ type Device struct { func (m *Device) Reset() { *m = Device{} } func (*Device) ProtoMessage() {} func (*Device) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{62} + return fileDescriptor_00212fb1f9d3bf1c, []int{63} } func (m *Device) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4765,7 +4879,7 @@ type CDIDevice struct { func (m *CDIDevice) Reset() { *m = CDIDevice{} } func (*CDIDevice) ProtoMessage() {} func (*CDIDevice) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{63} + return fileDescriptor_00212fb1f9d3bf1c, []int{64} } func (m *CDIDevice) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4867,7 +4981,7 @@ type ContainerConfig struct { func (m *ContainerConfig) Reset() { *m = ContainerConfig{} } func (*ContainerConfig) ProtoMessage() {} func (*ContainerConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{64} + return fileDescriptor_00212fb1f9d3bf1c, []int{65} } func (m *ContainerConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5032,7 +5146,7 @@ type CreateContainerRequest struct { func (m *CreateContainerRequest) Reset() { *m = CreateContainerRequest{} } func (*CreateContainerRequest) ProtoMessage() {} func (*CreateContainerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{65} + return fileDescriptor_00212fb1f9d3bf1c, []int{66} } func (m *CreateContainerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5092,7 +5206,7 @@ type CreateContainerResponse struct { func (m *CreateContainerResponse) Reset() { *m = CreateContainerResponse{} } func (*CreateContainerResponse) ProtoMessage() {} func (*CreateContainerResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{66} + return fileDescriptor_00212fb1f9d3bf1c, []int{67} } func (m *CreateContainerResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5138,7 +5252,7 @@ type StartContainerRequest struct { func (m *StartContainerRequest) Reset() { *m = StartContainerRequest{} } func (*StartContainerRequest) ProtoMessage() {} func (*StartContainerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{67} + return fileDescriptor_00212fb1f9d3bf1c, []int{68} } func (m *StartContainerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5182,7 +5296,7 @@ type StartContainerResponse struct { func (m *StartContainerResponse) Reset() { *m = StartContainerResponse{} } func (*StartContainerResponse) ProtoMessage() {} func (*StartContainerResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{68} + return fileDescriptor_00212fb1f9d3bf1c, []int{69} } func (m *StartContainerResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5224,7 +5338,7 @@ type StopContainerRequest struct { func (m *StopContainerRequest) Reset() { *m = StopContainerRequest{} } func (*StopContainerRequest) ProtoMessage() {} func (*StopContainerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{69} + return fileDescriptor_00212fb1f9d3bf1c, []int{70} } func (m *StopContainerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5275,7 +5389,7 @@ type StopContainerResponse struct { func (m *StopContainerResponse) Reset() { *m = StopContainerResponse{} } func (*StopContainerResponse) ProtoMessage() {} func (*StopContainerResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{70} + return fileDescriptor_00212fb1f9d3bf1c, []int{71} } func (m *StopContainerResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5314,7 +5428,7 @@ type RemoveContainerRequest struct { func (m *RemoveContainerRequest) Reset() { *m = RemoveContainerRequest{} } func (*RemoveContainerRequest) ProtoMessage() {} func (*RemoveContainerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{71} + return fileDescriptor_00212fb1f9d3bf1c, []int{72} } func (m *RemoveContainerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5358,7 +5472,7 @@ type RemoveContainerResponse struct { func (m *RemoveContainerResponse) Reset() { *m = RemoveContainerResponse{} } func (*RemoveContainerResponse) ProtoMessage() {} func (*RemoveContainerResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{72} + return fileDescriptor_00212fb1f9d3bf1c, []int{73} } func (m *RemoveContainerResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5398,7 +5512,7 @@ type ContainerStateValue struct { func (m *ContainerStateValue) Reset() { *m = ContainerStateValue{} } func (*ContainerStateValue) ProtoMessage() {} func (*ContainerStateValue) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{73} + return fileDescriptor_00212fb1f9d3bf1c, []int{74} } func (m *ContainerStateValue) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5454,7 +5568,7 @@ type ContainerFilter struct { func (m *ContainerFilter) Reset() { *m = ContainerFilter{} } func (*ContainerFilter) ProtoMessage() {} func (*ContainerFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{74} + return fileDescriptor_00212fb1f9d3bf1c, []int{75} } func (m *ContainerFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5520,7 +5634,7 @@ type ListContainersRequest struct { func (m *ListContainersRequest) Reset() { *m = ListContainersRequest{} } func (*ListContainersRequest) ProtoMessage() {} func (*ListContainersRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{75} + return fileDescriptor_00212fb1f9d3bf1c, []int{76} } func (m *ListContainersRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5598,7 +5712,7 @@ type Container struct { func (m *Container) Reset() { *m = Container{} } func (*Container) ProtoMessage() {} func (*Container) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{76} + return fileDescriptor_00212fb1f9d3bf1c, []int{77} } func (m *Container) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5707,7 +5821,7 @@ type ListContainersResponse struct { func (m *ListContainersResponse) Reset() { *m = ListContainersResponse{} } func (*ListContainersResponse) ProtoMessage() {} func (*ListContainersResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{77} + return fileDescriptor_00212fb1f9d3bf1c, []int{78} } func (m *ListContainersResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5755,7 +5869,7 @@ type ContainerStatusRequest struct { func (m *ContainerStatusRequest) Reset() { *m = ContainerStatusRequest{} } func (*ContainerStatusRequest) ProtoMessage() {} func (*ContainerStatusRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{78} + return fileDescriptor_00212fb1f9d3bf1c, []int{79} } func (m *ContainerStatusRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5844,15 +5958,17 @@ type ContainerStatus struct { // runtimes to reference images by digest. To separate and avoid possible // misusage, we now introduce the image_id field, which should always refer // to a unique image identifier on the node. - ImageId string `protobuf:"bytes,17,opt,name=image_id,json=imageId,proto3" json:"image_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_sizecache int32 `json:"-"` + ImageId string `protobuf:"bytes,17,opt,name=image_id,json=imageId,proto3" json:"image_id,omitempty"` + // User identities initially attached to the container + User *ContainerUser `protobuf:"bytes,18,opt,name=user,proto3" json:"user,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *ContainerStatus) Reset() { *m = ContainerStatus{} } func (*ContainerStatus) ProtoMessage() {} func (*ContainerStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{79} + return fileDescriptor_00212fb1f9d3bf1c, []int{80} } func (m *ContainerStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6000,6 +6116,13 @@ func (m *ContainerStatus) GetImageId() string { return "" } +func (m *ContainerStatus) GetUser() *ContainerUser { + if m != nil { + return m.User + } + return nil +} + type ContainerStatusResponse struct { // Status of the container. Status *ContainerStatus `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` @@ -6015,7 +6138,7 @@ type ContainerStatusResponse struct { func (m *ContainerStatusResponse) Reset() { *m = ContainerStatusResponse{} } func (*ContainerStatusResponse) ProtoMessage() {} func (*ContainerStatusResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{80} + return fileDescriptor_00212fb1f9d3bf1c, []int{81} } func (m *ContainerStatusResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6071,7 +6194,7 @@ type ContainerResources struct { func (m *ContainerResources) Reset() { *m = ContainerResources{} } func (*ContainerResources) ProtoMessage() {} func (*ContainerResources) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{81} + return fileDescriptor_00212fb1f9d3bf1c, []int{82} } func (m *ContainerResources) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6114,6 +6237,53 @@ func (m *ContainerResources) GetWindows() *WindowsContainerResources { return nil } +type ContainerUser struct { + // User identities initially attached to first process in the Linux container. + // Note that the actual running identity can be changed if the process has enough privilege to do so. + Linux *LinuxContainerUser `protobuf:"bytes,1,opt,name=linux,proto3" json:"linux,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ContainerUser) Reset() { *m = ContainerUser{} } +func (*ContainerUser) ProtoMessage() {} +func (*ContainerUser) Descriptor() ([]byte, []int) { + return fileDescriptor_00212fb1f9d3bf1c, []int{83} +} +func (m *ContainerUser) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ContainerUser) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ContainerUser.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ContainerUser) XXX_Merge(src proto.Message) { + xxx_messageInfo_ContainerUser.Merge(m, src) +} +func (m *ContainerUser) XXX_Size() int { + return m.Size() +} +func (m *ContainerUser) XXX_DiscardUnknown() { + xxx_messageInfo_ContainerUser.DiscardUnknown(m) +} + +var xxx_messageInfo_ContainerUser proto.InternalMessageInfo + +func (m *ContainerUser) GetLinux() *LinuxContainerUser { + if m != nil { + return m.Linux + } + return nil +} + type UpdateContainerResourcesRequest struct { // ID of the container to update. ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` @@ -6132,7 +6302,7 @@ type UpdateContainerResourcesRequest struct { func (m *UpdateContainerResourcesRequest) Reset() { *m = UpdateContainerResourcesRequest{} } func (*UpdateContainerResourcesRequest) ProtoMessage() {} func (*UpdateContainerResourcesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{82} + return fileDescriptor_00212fb1f9d3bf1c, []int{84} } func (m *UpdateContainerResourcesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6197,7 +6367,7 @@ type UpdateContainerResourcesResponse struct { func (m *UpdateContainerResourcesResponse) Reset() { *m = UpdateContainerResourcesResponse{} } func (*UpdateContainerResourcesResponse) ProtoMessage() {} func (*UpdateContainerResourcesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{83} + return fileDescriptor_00212fb1f9d3bf1c, []int{85} } func (m *UpdateContainerResourcesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6240,7 +6410,7 @@ type ExecSyncRequest struct { func (m *ExecSyncRequest) Reset() { *m = ExecSyncRequest{} } func (*ExecSyncRequest) ProtoMessage() {} func (*ExecSyncRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{84} + return fileDescriptor_00212fb1f9d3bf1c, []int{86} } func (m *ExecSyncRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6312,7 +6482,7 @@ type ExecSyncResponse struct { func (m *ExecSyncResponse) Reset() { *m = ExecSyncResponse{} } func (*ExecSyncResponse) ProtoMessage() {} func (*ExecSyncResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{85} + return fileDescriptor_00212fb1f9d3bf1c, []int{87} } func (m *ExecSyncResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6388,7 +6558,7 @@ type ExecRequest struct { func (m *ExecRequest) Reset() { *m = ExecRequest{} } func (*ExecRequest) ProtoMessage() {} func (*ExecRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{86} + return fileDescriptor_00212fb1f9d3bf1c, []int{88} } func (m *ExecRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6469,7 +6639,7 @@ type ExecResponse struct { func (m *ExecResponse) Reset() { *m = ExecResponse{} } func (*ExecResponse) ProtoMessage() {} func (*ExecResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{87} + return fileDescriptor_00212fb1f9d3bf1c, []int{89} } func (m *ExecResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6530,7 +6700,7 @@ type AttachRequest struct { func (m *AttachRequest) Reset() { *m = AttachRequest{} } func (*AttachRequest) ProtoMessage() {} func (*AttachRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{88} + return fileDescriptor_00212fb1f9d3bf1c, []int{90} } func (m *AttachRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6604,7 +6774,7 @@ type AttachResponse struct { func (m *AttachResponse) Reset() { *m = AttachResponse{} } func (*AttachResponse) ProtoMessage() {} func (*AttachResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{89} + return fileDescriptor_00212fb1f9d3bf1c, []int{91} } func (m *AttachResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6652,7 +6822,7 @@ type PortForwardRequest struct { func (m *PortForwardRequest) Reset() { *m = PortForwardRequest{} } func (*PortForwardRequest) ProtoMessage() {} func (*PortForwardRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{90} + return fileDescriptor_00212fb1f9d3bf1c, []int{92} } func (m *PortForwardRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6705,7 +6875,7 @@ type PortForwardResponse struct { func (m *PortForwardResponse) Reset() { *m = PortForwardResponse{} } func (*PortForwardResponse) ProtoMessage() {} func (*PortForwardResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{91} + return fileDescriptor_00212fb1f9d3bf1c, []int{93} } func (m *PortForwardResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6751,7 +6921,7 @@ type ImageFilter struct { func (m *ImageFilter) Reset() { *m = ImageFilter{} } func (*ImageFilter) ProtoMessage() {} func (*ImageFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{92} + return fileDescriptor_00212fb1f9d3bf1c, []int{94} } func (m *ImageFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6797,7 +6967,7 @@ type ListImagesRequest struct { func (m *ListImagesRequest) Reset() { *m = ListImagesRequest{} } func (*ListImagesRequest) ProtoMessage() {} func (*ListImagesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{93} + return fileDescriptor_00212fb1f9d3bf1c, []int{95} } func (m *ListImagesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6863,7 +7033,7 @@ type Image struct { func (m *Image) Reset() { *m = Image{} } func (*Image) ProtoMessage() {} func (*Image) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{94} + return fileDescriptor_00212fb1f9d3bf1c, []int{96} } func (m *Image) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6958,7 +7128,7 @@ type ListImagesResponse struct { func (m *ListImagesResponse) Reset() { *m = ListImagesResponse{} } func (*ListImagesResponse) ProtoMessage() {} func (*ListImagesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{95} + return fileDescriptor_00212fb1f9d3bf1c, []int{97} } func (m *ListImagesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7006,7 +7176,7 @@ type ImageStatusRequest struct { func (m *ImageStatusRequest) Reset() { *m = ImageStatusRequest{} } func (*ImageStatusRequest) ProtoMessage() {} func (*ImageStatusRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{96} + return fileDescriptor_00212fb1f9d3bf1c, []int{98} } func (m *ImageStatusRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7064,7 +7234,7 @@ type ImageStatusResponse struct { func (m *ImageStatusResponse) Reset() { *m = ImageStatusResponse{} } func (*ImageStatusResponse) ProtoMessage() {} func (*ImageStatusResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{97} + return fileDescriptor_00212fb1f9d3bf1c, []int{99} } func (m *ImageStatusResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7125,7 +7295,7 @@ type AuthConfig struct { func (m *AuthConfig) Reset() { *m = AuthConfig{} } func (*AuthConfig) ProtoMessage() {} func (*AuthConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{98} + return fileDescriptor_00212fb1f9d3bf1c, []int{100} } func (m *AuthConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7210,7 +7380,7 @@ type PullImageRequest struct { func (m *PullImageRequest) Reset() { *m = PullImageRequest{} } func (*PullImageRequest) ProtoMessage() {} func (*PullImageRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{99} + return fileDescriptor_00212fb1f9d3bf1c, []int{101} } func (m *PullImageRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7271,7 +7441,7 @@ type PullImageResponse struct { func (m *PullImageResponse) Reset() { *m = PullImageResponse{} } func (*PullImageResponse) ProtoMessage() {} func (*PullImageResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{100} + return fileDescriptor_00212fb1f9d3bf1c, []int{102} } func (m *PullImageResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7317,7 +7487,7 @@ type RemoveImageRequest struct { func (m *RemoveImageRequest) Reset() { *m = RemoveImageRequest{} } func (*RemoveImageRequest) ProtoMessage() {} func (*RemoveImageRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{101} + return fileDescriptor_00212fb1f9d3bf1c, []int{103} } func (m *RemoveImageRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7361,7 +7531,7 @@ type RemoveImageResponse struct { func (m *RemoveImageResponse) Reset() { *m = RemoveImageResponse{} } func (*RemoveImageResponse) ProtoMessage() {} func (*RemoveImageResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{102} + return fileDescriptor_00212fb1f9d3bf1c, []int{104} } func (m *RemoveImageResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7401,7 +7571,7 @@ type NetworkConfig struct { func (m *NetworkConfig) Reset() { *m = NetworkConfig{} } func (*NetworkConfig) ProtoMessage() {} func (*NetworkConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{103} + return fileDescriptor_00212fb1f9d3bf1c, []int{105} } func (m *NetworkConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7446,7 +7616,7 @@ type RuntimeConfig struct { func (m *RuntimeConfig) Reset() { *m = RuntimeConfig{} } func (*RuntimeConfig) ProtoMessage() {} func (*RuntimeConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{104} + return fileDescriptor_00212fb1f9d3bf1c, []int{106} } func (m *RuntimeConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7491,7 +7661,7 @@ type UpdateRuntimeConfigRequest struct { func (m *UpdateRuntimeConfigRequest) Reset() { *m = UpdateRuntimeConfigRequest{} } func (*UpdateRuntimeConfigRequest) ProtoMessage() {} func (*UpdateRuntimeConfigRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{105} + return fileDescriptor_00212fb1f9d3bf1c, []int{107} } func (m *UpdateRuntimeConfigRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7535,7 +7705,7 @@ type UpdateRuntimeConfigResponse struct { func (m *UpdateRuntimeConfigResponse) Reset() { *m = UpdateRuntimeConfigResponse{} } func (*UpdateRuntimeConfigResponse) ProtoMessage() {} func (*UpdateRuntimeConfigResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{106} + return fileDescriptor_00212fb1f9d3bf1c, []int{108} } func (m *UpdateRuntimeConfigResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7594,7 +7764,7 @@ type RuntimeCondition struct { func (m *RuntimeCondition) Reset() { *m = RuntimeCondition{} } func (*RuntimeCondition) ProtoMessage() {} func (*RuntimeCondition) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{107} + return fileDescriptor_00212fb1f9d3bf1c, []int{109} } func (m *RuntimeCondition) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7662,7 +7832,7 @@ type RuntimeStatus struct { func (m *RuntimeStatus) Reset() { *m = RuntimeStatus{} } func (*RuntimeStatus) ProtoMessage() {} func (*RuntimeStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{108} + return fileDescriptor_00212fb1f9d3bf1c, []int{110} } func (m *RuntimeStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7708,7 +7878,7 @@ type StatusRequest struct { func (m *StatusRequest) Reset() { *m = StatusRequest{} } func (*StatusRequest) ProtoMessage() {} func (*StatusRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{109} + return fileDescriptor_00212fb1f9d3bf1c, []int{111} } func (m *StatusRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7760,7 +7930,7 @@ type RuntimeHandlerFeatures struct { func (m *RuntimeHandlerFeatures) Reset() { *m = RuntimeHandlerFeatures{} } func (*RuntimeHandlerFeatures) ProtoMessage() {} func (*RuntimeHandlerFeatures) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{110} + return fileDescriptor_00212fb1f9d3bf1c, []int{112} } func (m *RuntimeHandlerFeatures) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7816,7 +7986,7 @@ type RuntimeHandler struct { func (m *RuntimeHandler) Reset() { *m = RuntimeHandler{} } func (*RuntimeHandler) ProtoMessage() {} func (*RuntimeHandler) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{111} + return fileDescriptor_00212fb1f9d3bf1c, []int{113} } func (m *RuntimeHandler) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7876,7 +8046,7 @@ type StatusResponse struct { func (m *StatusResponse) Reset() { *m = StatusResponse{} } func (*StatusResponse) ProtoMessage() {} func (*StatusResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{112} + return fileDescriptor_00212fb1f9d3bf1c, []int{114} } func (m *StatusResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7934,7 +8104,7 @@ type ImageFsInfoRequest struct { func (m *ImageFsInfoRequest) Reset() { *m = ImageFsInfoRequest{} } func (*ImageFsInfoRequest) ProtoMessage() {} func (*ImageFsInfoRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{113} + return fileDescriptor_00212fb1f9d3bf1c, []int{115} } func (m *ImageFsInfoRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7974,7 +8144,7 @@ type UInt64Value struct { func (m *UInt64Value) Reset() { *m = UInt64Value{} } func (*UInt64Value) ProtoMessage() {} func (*UInt64Value) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{114} + return fileDescriptor_00212fb1f9d3bf1c, []int{116} } func (m *UInt64Value) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8021,7 +8191,7 @@ type FilesystemIdentifier struct { func (m *FilesystemIdentifier) Reset() { *m = FilesystemIdentifier{} } func (*FilesystemIdentifier) ProtoMessage() {} func (*FilesystemIdentifier) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{115} + return fileDescriptor_00212fb1f9d3bf1c, []int{117} } func (m *FilesystemIdentifier) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8078,7 +8248,7 @@ type FilesystemUsage struct { func (m *FilesystemUsage) Reset() { *m = FilesystemUsage{} } func (*FilesystemUsage) ProtoMessage() {} func (*FilesystemUsage) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{116} + return fileDescriptor_00212fb1f9d3bf1c, []int{118} } func (m *FilesystemUsage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8152,7 +8322,7 @@ type WindowsFilesystemUsage struct { func (m *WindowsFilesystemUsage) Reset() { *m = WindowsFilesystemUsage{} } func (*WindowsFilesystemUsage) ProtoMessage() {} func (*WindowsFilesystemUsage) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{117} + return fileDescriptor_00212fb1f9d3bf1c, []int{119} } func (m *WindowsFilesystemUsage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8217,7 +8387,7 @@ type ImageFsInfoResponse struct { func (m *ImageFsInfoResponse) Reset() { *m = ImageFsInfoResponse{} } func (*ImageFsInfoResponse) ProtoMessage() {} func (*ImageFsInfoResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{118} + return fileDescriptor_00212fb1f9d3bf1c, []int{120} } func (m *ImageFsInfoResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8270,7 +8440,7 @@ type ContainerStatsRequest struct { func (m *ContainerStatsRequest) Reset() { *m = ContainerStatsRequest{} } func (*ContainerStatsRequest) ProtoMessage() {} func (*ContainerStatsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{119} + return fileDescriptor_00212fb1f9d3bf1c, []int{121} } func (m *ContainerStatsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8316,7 +8486,7 @@ type ContainerStatsResponse struct { func (m *ContainerStatsResponse) Reset() { *m = ContainerStatsResponse{} } func (*ContainerStatsResponse) ProtoMessage() {} func (*ContainerStatsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{120} + return fileDescriptor_00212fb1f9d3bf1c, []int{122} } func (m *ContainerStatsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8362,7 +8532,7 @@ type ListContainerStatsRequest struct { func (m *ListContainerStatsRequest) Reset() { *m = ListContainerStatsRequest{} } func (*ListContainerStatsRequest) ProtoMessage() {} func (*ListContainerStatsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{121} + return fileDescriptor_00212fb1f9d3bf1c, []int{123} } func (m *ListContainerStatsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8416,7 +8586,7 @@ type ContainerStatsFilter struct { func (m *ContainerStatsFilter) Reset() { *m = ContainerStatsFilter{} } func (*ContainerStatsFilter) ProtoMessage() {} func (*ContainerStatsFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{122} + return fileDescriptor_00212fb1f9d3bf1c, []int{124} } func (m *ContainerStatsFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8476,7 +8646,7 @@ type ListContainerStatsResponse struct { func (m *ListContainerStatsResponse) Reset() { *m = ListContainerStatsResponse{} } func (*ListContainerStatsResponse) ProtoMessage() {} func (*ListContainerStatsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{123} + return fileDescriptor_00212fb1f9d3bf1c, []int{125} } func (m *ListContainerStatsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8532,7 +8702,7 @@ type ContainerAttributes struct { func (m *ContainerAttributes) Reset() { *m = ContainerAttributes{} } func (*ContainerAttributes) ProtoMessage() {} func (*ContainerAttributes) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{124} + return fileDescriptor_00212fb1f9d3bf1c, []int{126} } func (m *ContainerAttributes) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8608,7 +8778,7 @@ type ContainerStats struct { func (m *ContainerStats) Reset() { *m = ContainerStats{} } func (*ContainerStats) ProtoMessage() {} func (*ContainerStats) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{125} + return fileDescriptor_00212fb1f9d3bf1c, []int{127} } func (m *ContainerStats) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8689,7 +8859,7 @@ type WindowsContainerStats struct { func (m *WindowsContainerStats) Reset() { *m = WindowsContainerStats{} } func (*WindowsContainerStats) ProtoMessage() {} func (*WindowsContainerStats) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{126} + return fileDescriptor_00212fb1f9d3bf1c, []int{128} } func (m *WindowsContainerStats) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8762,7 +8932,7 @@ type CpuUsage struct { func (m *CpuUsage) Reset() { *m = CpuUsage{} } func (*CpuUsage) ProtoMessage() {} func (*CpuUsage) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{127} + return fileDescriptor_00212fb1f9d3bf1c, []int{129} } func (m *CpuUsage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8828,7 +8998,7 @@ type WindowsCpuUsage struct { func (m *WindowsCpuUsage) Reset() { *m = WindowsCpuUsage{} } func (*WindowsCpuUsage) ProtoMessage() {} func (*WindowsCpuUsage) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{128} + return fileDescriptor_00212fb1f9d3bf1c, []int{130} } func (m *WindowsCpuUsage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8901,7 +9071,7 @@ type MemoryUsage struct { func (m *MemoryUsage) Reset() { *m = MemoryUsage{} } func (*MemoryUsage) ProtoMessage() {} func (*MemoryUsage) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{129} + return fileDescriptor_00212fb1f9d3bf1c, []int{131} } func (m *MemoryUsage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8993,7 +9163,7 @@ type SwapUsage struct { func (m *SwapUsage) Reset() { *m = SwapUsage{} } func (*SwapUsage) ProtoMessage() {} func (*SwapUsage) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{130} + return fileDescriptor_00212fb1f9d3bf1c, []int{132} } func (m *SwapUsage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9062,7 +9232,7 @@ type WindowsMemoryUsage struct { func (m *WindowsMemoryUsage) Reset() { *m = WindowsMemoryUsage{} } func (*WindowsMemoryUsage) ProtoMessage() {} func (*WindowsMemoryUsage) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{131} + return fileDescriptor_00212fb1f9d3bf1c, []int{133} } func (m *WindowsMemoryUsage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9136,7 +9306,7 @@ type ReopenContainerLogRequest struct { func (m *ReopenContainerLogRequest) Reset() { *m = ReopenContainerLogRequest{} } func (*ReopenContainerLogRequest) ProtoMessage() {} func (*ReopenContainerLogRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{132} + return fileDescriptor_00212fb1f9d3bf1c, []int{134} } func (m *ReopenContainerLogRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9180,7 +9350,7 @@ type ReopenContainerLogResponse struct { func (m *ReopenContainerLogResponse) Reset() { *m = ReopenContainerLogResponse{} } func (*ReopenContainerLogResponse) ProtoMessage() {} func (*ReopenContainerLogResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{133} + return fileDescriptor_00212fb1f9d3bf1c, []int{135} } func (m *ReopenContainerLogResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9225,7 +9395,7 @@ type CheckpointContainerRequest struct { func (m *CheckpointContainerRequest) Reset() { *m = CheckpointContainerRequest{} } func (*CheckpointContainerRequest) ProtoMessage() {} func (*CheckpointContainerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{134} + return fileDescriptor_00212fb1f9d3bf1c, []int{136} } func (m *CheckpointContainerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9283,7 +9453,7 @@ type CheckpointContainerResponse struct { func (m *CheckpointContainerResponse) Reset() { *m = CheckpointContainerResponse{} } func (*CheckpointContainerResponse) ProtoMessage() {} func (*CheckpointContainerResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{135} + return fileDescriptor_00212fb1f9d3bf1c, []int{137} } func (m *CheckpointContainerResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9320,7 +9490,7 @@ type GetEventsRequest struct { func (m *GetEventsRequest) Reset() { *m = GetEventsRequest{} } func (*GetEventsRequest) ProtoMessage() {} func (*GetEventsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{136} + return fileDescriptor_00212fb1f9d3bf1c, []int{138} } func (m *GetEventsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9367,7 +9537,7 @@ type ContainerEventResponse struct { func (m *ContainerEventResponse) Reset() { *m = ContainerEventResponse{} } func (*ContainerEventResponse) ProtoMessage() {} func (*ContainerEventResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{137} + return fileDescriptor_00212fb1f9d3bf1c, []int{139} } func (m *ContainerEventResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9439,7 +9609,7 @@ type ListMetricDescriptorsRequest struct { func (m *ListMetricDescriptorsRequest) Reset() { *m = ListMetricDescriptorsRequest{} } func (*ListMetricDescriptorsRequest) ProtoMessage() {} func (*ListMetricDescriptorsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{138} + return fileDescriptor_00212fb1f9d3bf1c, []int{140} } func (m *ListMetricDescriptorsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9477,7 +9647,7 @@ type ListMetricDescriptorsResponse struct { func (m *ListMetricDescriptorsResponse) Reset() { *m = ListMetricDescriptorsResponse{} } func (*ListMetricDescriptorsResponse) ProtoMessage() {} func (*ListMetricDescriptorsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{139} + return fileDescriptor_00212fb1f9d3bf1c, []int{141} } func (m *ListMetricDescriptorsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9530,7 +9700,7 @@ type MetricDescriptor struct { func (m *MetricDescriptor) Reset() { *m = MetricDescriptor{} } func (*MetricDescriptor) ProtoMessage() {} func (*MetricDescriptor) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{140} + return fileDescriptor_00212fb1f9d3bf1c, []int{142} } func (m *MetricDescriptor) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9588,7 +9758,7 @@ type ListPodSandboxMetricsRequest struct { func (m *ListPodSandboxMetricsRequest) Reset() { *m = ListPodSandboxMetricsRequest{} } func (*ListPodSandboxMetricsRequest) ProtoMessage() {} func (*ListPodSandboxMetricsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{141} + return fileDescriptor_00212fb1f9d3bf1c, []int{143} } func (m *ListPodSandboxMetricsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9626,7 +9796,7 @@ type ListPodSandboxMetricsResponse struct { func (m *ListPodSandboxMetricsResponse) Reset() { *m = ListPodSandboxMetricsResponse{} } func (*ListPodSandboxMetricsResponse) ProtoMessage() {} func (*ListPodSandboxMetricsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{142} + return fileDescriptor_00212fb1f9d3bf1c, []int{144} } func (m *ListPodSandboxMetricsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9673,7 +9843,7 @@ type PodSandboxMetrics struct { func (m *PodSandboxMetrics) Reset() { *m = PodSandboxMetrics{} } func (*PodSandboxMetrics) ProtoMessage() {} func (*PodSandboxMetrics) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{143} + return fileDescriptor_00212fb1f9d3bf1c, []int{145} } func (m *PodSandboxMetrics) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9733,7 +9903,7 @@ type ContainerMetrics struct { func (m *ContainerMetrics) Reset() { *m = ContainerMetrics{} } func (*ContainerMetrics) ProtoMessage() {} func (*ContainerMetrics) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{144} + return fileDescriptor_00212fb1f9d3bf1c, []int{146} } func (m *ContainerMetrics) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9796,7 +9966,7 @@ type Metric struct { func (m *Metric) Reset() { *m = Metric{} } func (*Metric) ProtoMessage() {} func (*Metric) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{145} + return fileDescriptor_00212fb1f9d3bf1c, []int{147} } func (m *Metric) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9868,7 +10038,7 @@ type RuntimeConfigRequest struct { func (m *RuntimeConfigRequest) Reset() { *m = RuntimeConfigRequest{} } func (*RuntimeConfigRequest) ProtoMessage() {} func (*RuntimeConfigRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{146} + return fileDescriptor_00212fb1f9d3bf1c, []int{148} } func (m *RuntimeConfigRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9909,7 +10079,7 @@ type RuntimeConfigResponse struct { func (m *RuntimeConfigResponse) Reset() { *m = RuntimeConfigResponse{} } func (*RuntimeConfigResponse) ProtoMessage() {} func (*RuntimeConfigResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{147} + return fileDescriptor_00212fb1f9d3bf1c, []int{149} } func (m *RuntimeConfigResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9961,7 +10131,7 @@ type LinuxRuntimeConfiguration struct { func (m *LinuxRuntimeConfiguration) Reset() { *m = LinuxRuntimeConfiguration{} } func (*LinuxRuntimeConfiguration) ProtoMessage() {} func (*LinuxRuntimeConfiguration) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{148} + return fileDescriptor_00212fb1f9d3bf1c, []int{150} } func (m *LinuxRuntimeConfiguration) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10001,6 +10171,7 @@ func init() { proto.RegisterEnum("runtime.v1.Protocol", Protocol_name, Protocol_value) proto.RegisterEnum("runtime.v1.MountPropagation", MountPropagation_name, MountPropagation_value) proto.RegisterEnum("runtime.v1.NamespaceMode", NamespaceMode_name, NamespaceMode_value) + proto.RegisterEnum("runtime.v1.SupplementalGroupsPolicy", SupplementalGroupsPolicy_name, SupplementalGroupsPolicy_value) proto.RegisterEnum("runtime.v1.PodSandboxState", PodSandboxState_name, PodSandboxState_value) proto.RegisterEnum("runtime.v1.ContainerState", ContainerState_name, ContainerState_value) proto.RegisterEnum("runtime.v1.ContainerEventType", ContainerEventType_name, ContainerEventType_value) @@ -10076,6 +10247,7 @@ func init() { proto.RegisterType((*Capability)(nil), "runtime.v1.Capability") proto.RegisterType((*LinuxContainerSecurityContext)(nil), "runtime.v1.LinuxContainerSecurityContext") proto.RegisterType((*LinuxContainerConfig)(nil), "runtime.v1.LinuxContainerConfig") + proto.RegisterType((*LinuxContainerUser)(nil), "runtime.v1.LinuxContainerUser") proto.RegisterType((*WindowsNamespaceOption)(nil), "runtime.v1.WindowsNamespaceOption") proto.RegisterType((*WindowsSandboxSecurityContext)(nil), "runtime.v1.WindowsSandboxSecurityContext") proto.RegisterType((*WindowsPodSandboxConfig)(nil), "runtime.v1.WindowsPodSandboxConfig") @@ -10111,6 +10283,7 @@ func init() { proto.RegisterType((*ContainerStatusResponse)(nil), "runtime.v1.ContainerStatusResponse") proto.RegisterMapType((map[string]string)(nil), "runtime.v1.ContainerStatusResponse.InfoEntry") proto.RegisterType((*ContainerResources)(nil), "runtime.v1.ContainerResources") + proto.RegisterType((*ContainerUser)(nil), "runtime.v1.ContainerUser") proto.RegisterType((*UpdateContainerResourcesRequest)(nil), "runtime.v1.UpdateContainerResourcesRequest") proto.RegisterMapType((map[string]string)(nil), "runtime.v1.UpdateContainerResourcesRequest.AnnotationsEntry") proto.RegisterType((*UpdateContainerResourcesResponse)(nil), "runtime.v1.UpdateContainerResourcesResponse") @@ -10189,443 +10362,450 @@ func init() { func init() { proto.RegisterFile("api.proto", fileDescriptor_00212fb1f9d3bf1c) } var fileDescriptor_00212fb1f9d3bf1c = []byte{ - // 6961 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x5d, 0x4b, 0x6c, 0x24, 0x49, - 0x5a, 0x76, 0x56, 0x95, 0xed, 0xaa, 0xbf, 0x5c, 0x76, 0x39, 0xda, 0x6d, 0xbb, 0xab, 0xdf, 0x39, - 0xaf, 0xee, 0x9e, 0xe9, 0xc7, 0xf4, 0xbc, 0xba, 0x7b, 0x5e, 0x5d, 0x6d, 0xbb, 0x7b, 0x6a, 0xb6, - 0xdb, 0xae, 0xcd, 0xb2, 0x67, 0x77, 0x66, 0xd1, 0x26, 0xd9, 0x95, 0xe1, 0x72, 0x4e, 0x57, 0x65, - 0xe6, 0x66, 0x66, 0xb9, 0xdb, 0x7b, 0x40, 0x9c, 0x10, 0xec, 0x69, 0x25, 0x58, 0x21, 0x56, 0x08, - 0xc4, 0x01, 0xc1, 0x0d, 0x76, 0x25, 0x60, 0x11, 0x2f, 0x09, 0xc1, 0x6a, 0x41, 0x42, 0xe2, 0x00, - 0xd2, 0x1e, 0x90, 0xd8, 0x1d, 0x90, 0x90, 0x38, 0xa2, 0x3d, 0x70, 0x81, 0x45, 0xf1, 0xca, 0xcc, - 0xc8, 0x47, 0x55, 0xd9, 0x33, 0xcc, 0xcc, 0x9e, 0x5c, 0x19, 0xf1, 0xff, 0x7f, 0x44, 0xfc, 0xf1, - 0xc7, 0x1f, 0x7f, 0x44, 0x7c, 0x11, 0x86, 0x8a, 0xe1, 0x5a, 0x57, 0x5c, 0xcf, 0x09, 0x1c, 0x04, - 0xde, 0xd0, 0x0e, 0xac, 0x01, 0xbe, 0xb2, 0xff, 0x62, 0xe3, 0x72, 0xcf, 0x0a, 0xf6, 0x86, 0x0f, - 0xaf, 0x74, 0x9d, 0xc1, 0xd5, 0x9e, 0xd3, 0x73, 0xae, 0x52, 0x92, 0x87, 0xc3, 0x5d, 0xfa, 0x45, - 0x3f, 0xe8, 0x2f, 0xc6, 0xaa, 0x5e, 0x82, 0xf9, 0xf7, 0xb0, 0xe7, 0x5b, 0x8e, 0xad, 0xe1, 0xaf, - 0x0d, 0xb1, 0x1f, 0xa0, 0x55, 0x98, 0xdd, 0x67, 0x29, 0xab, 0xca, 0x39, 0xe5, 0x42, 0x45, 0x13, - 0x9f, 0xea, 0xef, 0x29, 0xb0, 0x10, 0x12, 0xfb, 0xae, 0x63, 0xfb, 0x38, 0x9f, 0x1a, 0x9d, 0x87, - 0x39, 0x5e, 0x2d, 0xdd, 0x36, 0x06, 0x78, 0xb5, 0x40, 0xb3, 0xab, 0x3c, 0x6d, 0xd3, 0x18, 0x60, - 0xf4, 0x1c, 0x2c, 0x08, 0x12, 0x21, 0xa4, 0x48, 0xa9, 0xe6, 0x79, 0x32, 0x2f, 0x0d, 0x5d, 0x81, - 0x63, 0x82, 0xd0, 0x70, 0xad, 0x90, 0xb8, 0x44, 0x89, 0x17, 0x79, 0x56, 0xd3, 0xb5, 0x38, 0xbd, - 0xfa, 0x15, 0xa8, 0xac, 0x6f, 0x76, 0xd6, 0x1c, 0x7b, 0xd7, 0xea, 0x91, 0x2a, 0xfa, 0xd8, 0x23, - 0x3c, 0xab, 0xca, 0xb9, 0x22, 0xa9, 0x22, 0xff, 0x44, 0x0d, 0x28, 0xfb, 0xd8, 0xf0, 0xba, 0x7b, - 0xd8, 0x5f, 0x2d, 0xd0, 0xac, 0xf0, 0x9b, 0x70, 0x39, 0x6e, 0x60, 0x39, 0xb6, 0xbf, 0x5a, 0x64, - 0x5c, 0xfc, 0x53, 0xfd, 0x4d, 0x05, 0xaa, 0x6d, 0xc7, 0x0b, 0x1e, 0x18, 0xae, 0x6b, 0xd9, 0x3d, - 0x74, 0x0d, 0xca, 0x54, 0x97, 0x5d, 0xa7, 0x4f, 0x75, 0x30, 0x7f, 0x7d, 0xe9, 0x4a, 0xd4, 0x21, - 0x57, 0xda, 0x3c, 0x4f, 0x0b, 0xa9, 0xd0, 0x33, 0x30, 0xdf, 0x75, 0xec, 0xc0, 0xb0, 0x6c, 0xec, - 0xe9, 0xae, 0xe3, 0x05, 0x54, 0x39, 0xd3, 0x5a, 0x2d, 0x4c, 0x25, 0xf2, 0xd1, 0x49, 0xa8, 0xec, - 0x39, 0x7e, 0xc0, 0x28, 0x8a, 0x94, 0xa2, 0x4c, 0x12, 0x68, 0xe6, 0x0a, 0xcc, 0xd2, 0x4c, 0xcb, - 0xe5, 0x6a, 0x98, 0x21, 0x9f, 0x2d, 0x57, 0xfd, 0xaf, 0x02, 0x4c, 0x3f, 0x70, 0x86, 0x76, 0x90, - 0x28, 0xc6, 0x08, 0xf6, 0x78, 0x17, 0xc5, 0x8a, 0x31, 0x82, 0xbd, 0xa8, 0x18, 0x42, 0xc1, 0x7a, - 0x89, 0x15, 0x43, 0x32, 0x1b, 0x50, 0xf6, 0xb0, 0x61, 0x3a, 0x76, 0xff, 0x80, 0x56, 0xa1, 0xac, - 0x85, 0xdf, 0xa4, 0xfb, 0x7c, 0xdc, 0xb7, 0xec, 0xe1, 0x13, 0xdd, 0xc3, 0x7d, 0xe3, 0x21, 0xee, - 0xd3, 0xaa, 0x94, 0xb5, 0x79, 0x9e, 0xac, 0xb1, 0x54, 0xf4, 0x16, 0x54, 0x5d, 0xcf, 0x71, 0x8d, - 0x9e, 0x41, 0x34, 0xb8, 0x3a, 0x4d, 0x95, 0x74, 0x2a, 0xae, 0x24, 0x5a, 0xe1, 0x76, 0x44, 0xa3, - 0xc5, 0x19, 0xd0, 0x6b, 0x50, 0x1d, 0x5a, 0x26, 0xd7, 0xb7, 0xbf, 0x3a, 0x73, 0xae, 0x78, 0xa1, - 0x7a, 0xfd, 0x78, 0x9c, 0xbf, 0xb5, 0xce, 0x73, 0xb5, 0x38, 0x25, 0x61, 0xec, 0xc5, 0x18, 0x67, - 0x47, 0x32, 0xc6, 0x28, 0xa9, 0xc1, 0xe1, 0xee, 0xd0, 0xf3, 0xad, 0x7d, 0xac, 0x93, 0x06, 0xeb, - 0x54, 0x03, 0x65, 0xda, 0xbc, 0xc5, 0x30, 0x4b, 0xc3, 0x86, 0xb9, 0x65, 0xf7, 0x0f, 0x54, 0x1d, - 0x2a, 0xa1, 0xa4, 0xa8, 0x6b, 0x4c, 0xaa, 0xf0, 0x1a, 0xef, 0x1a, 0x93, 0x0c, 0x89, 0xa8, 0x43, - 0x2c, 0x93, 0x2a, 0xbb, 0xa6, 0x55, 0xc3, 0xb4, 0x96, 0x89, 0x96, 0x61, 0xa6, 0x8f, 0xed, 0x5e, - 0xb0, 0x47, 0xb5, 0x5d, 0xd3, 0xf8, 0x97, 0xfa, 0x6b, 0x0a, 0xd4, 0x76, 0x7c, 0xec, 0x91, 0x71, - 0xe3, 0xbb, 0x46, 0x17, 0xa3, 0xcb, 0x50, 0x1a, 0x38, 0x26, 0xe6, 0x26, 0x77, 0x22, 0xde, 0xa8, - 0x90, 0xe8, 0x81, 0x63, 0x62, 0x8d, 0x92, 0xa1, 0x8b, 0x50, 0x1a, 0x5a, 0x26, 0xb3, 0xf3, 0x5c, - 0x1d, 0x50, 0x12, 0x42, 0xda, 0x23, 0xa4, 0xc5, 0x91, 0xa4, 0x84, 0x44, 0xfd, 0xa9, 0x02, 0x0b, - 0x61, 0x69, 0x5b, 0x74, 0x80, 0xa0, 0x97, 0x60, 0xd6, 0xc6, 0xc1, 0x63, 0xc7, 0x7b, 0x34, 0xbe, - 0x6e, 0x82, 0x12, 0x3d, 0x0f, 0x45, 0x97, 0x6b, 0x64, 0x24, 0x03, 0xa1, 0x22, 0xc4, 0x96, 0xdb, - 0xa5, 0x1a, 0x1a, 0x4d, 0x6c, 0xb9, 0x5d, 0x62, 0xde, 0x81, 0xe1, 0xf5, 0x30, 0xed, 0x0f, 0x36, - 0x54, 0xca, 0x2c, 0xa1, 0x65, 0xa2, 0xdb, 0x30, 0x3f, 0xf4, 0xb1, 0x67, 0xfb, 0xba, 0x18, 0xec, - 0xc4, 0x38, 0xab, 0xb2, 0x50, 0x49, 0xef, 0x5a, 0x8d, 0x31, 0x6c, 0x71, 0x6f, 0xa0, 0x02, 0xb4, - 0xec, 0xe0, 0xd5, 0x97, 0xdf, 0x33, 0xfa, 0x43, 0x8c, 0x96, 0x60, 0x7a, 0x9f, 0xfc, 0xa0, 0x2d, - 0x2f, 0x6a, 0xec, 0x43, 0xfd, 0x8b, 0x12, 0x9c, 0xbc, 0x4f, 0x06, 0x44, 0xc7, 0xb0, 0xcd, 0x87, - 0xce, 0x93, 0x0e, 0xb1, 0x1f, 0x2b, 0x38, 0x58, 0x73, 0xec, 0x00, 0x3f, 0x09, 0xd0, 0x3b, 0xb0, - 0x68, 0x0b, 0xf9, 0x61, 0x45, 0x14, 0x5a, 0x91, 0x93, 0x99, 0xad, 0x63, 0x85, 0x6b, 0x75, 0x5b, - 0x4e, 0xf0, 0xd1, 0x9d, 0x68, 0x48, 0x0a, 0x39, 0x85, 0x74, 0x83, 0x3a, 0x1b, 0xb4, 0x36, 0x5c, - 0x8a, 0x18, 0xad, 0x42, 0xc6, 0xab, 0x40, 0x9c, 0xb4, 0x6e, 0xf8, 0x3a, 0x69, 0x29, 0xd5, 0x72, - 0xf5, 0xfa, 0xb2, 0x64, 0x05, 0x61, 0x83, 0xb5, 0x8a, 0x37, 0xb4, 0x9b, 0x3e, 0xd1, 0x10, 0xba, - 0x41, 0x1d, 0x3e, 0xe1, 0xeb, 0x79, 0xce, 0xd0, 0xa5, 0x83, 0x25, 0x9f, 0x11, 0x28, 0xe3, 0x3d, - 0x42, 0x49, 0xe7, 0x01, 0xee, 0x54, 0x74, 0xcf, 0x71, 0x82, 0x5d, 0x5f, 0x38, 0x12, 0x91, 0xac, - 0xd1, 0x54, 0x74, 0x15, 0x8e, 0xf9, 0x43, 0xd7, 0xed, 0xe3, 0x01, 0xb6, 0x03, 0xa3, 0xcf, 0x0a, - 0x22, 0x7d, 0x56, 0xbc, 0x50, 0xd4, 0x50, 0x3c, 0x8b, 0x0a, 0xf6, 0xd1, 0x19, 0x00, 0xd7, 0xb3, - 0xf6, 0xad, 0x3e, 0xee, 0x61, 0x73, 0x75, 0x86, 0x0a, 0x8d, 0xa5, 0xa0, 0x57, 0xc8, 0xdc, 0xd0, - 0xed, 0x3a, 0x03, 0x77, 0xb5, 0x92, 0xd6, 0xb7, 0xe8, 0xa7, 0xb6, 0xe7, 0xec, 0x5a, 0x7d, 0xac, - 0x09, 0x5a, 0xf4, 0x1a, 0x94, 0x0d, 0xd7, 0x35, 0xbc, 0x81, 0xe3, 0xad, 0xc2, 0x78, 0xbe, 0x90, - 0x18, 0xbd, 0x0c, 0x4b, 0x5c, 0x86, 0xee, 0xb2, 0x4c, 0xe6, 0x76, 0x67, 0x89, 0x5d, 0xde, 0x29, - 0xac, 0x2a, 0x1a, 0xe2, 0xf9, 0x9c, 0x97, 0x38, 0x61, 0xf5, 0x6f, 0x14, 0x58, 0x48, 0xc8, 0x44, - 0xef, 0xc2, 0x9c, 0x90, 0x10, 0x1c, 0xb8, 0xc2, 0x0d, 0x3c, 0x37, 0xa2, 0x1a, 0x57, 0xf8, 0xdf, - 0xed, 0x03, 0x17, 0x53, 0xff, 0x2a, 0x3e, 0xd0, 0x53, 0x50, 0xeb, 0x3b, 0x5d, 0xa3, 0x4f, 0xbd, - 0x96, 0x87, 0x77, 0xf9, 0x2c, 0x30, 0x17, 0x26, 0x6a, 0x78, 0x57, 0xbd, 0x0d, 0xd5, 0x98, 0x00, - 0x84, 0x60, 0x5e, 0x63, 0x45, 0xad, 0xe3, 0x5d, 0x63, 0xd8, 0x0f, 0xea, 0x53, 0x68, 0x1e, 0x60, - 0xc7, 0xee, 0x92, 0x59, 0xd7, 0xc6, 0x66, 0x5d, 0x41, 0x35, 0xa8, 0xdc, 0x17, 0x22, 0xea, 0x05, - 0xf5, 0xdb, 0x45, 0x38, 0x4e, 0x0d, 0xaf, 0xed, 0x98, 0x7c, 0x24, 0xf0, 0x29, 0xfa, 0x29, 0xa8, - 0x75, 0x69, 0x5f, 0xea, 0xae, 0xe1, 0x61, 0x3b, 0xe0, 0x13, 0xd5, 0x1c, 0x4b, 0x6c, 0xd3, 0x34, - 0xa4, 0x41, 0xdd, 0xe7, 0x2d, 0xd2, 0xbb, 0x6c, 0xe4, 0x70, 0xe3, 0x96, 0x5a, 0x3d, 0x62, 0xa0, - 0x69, 0x0b, 0x7e, 0x6a, 0xe4, 0xcd, 0xfa, 0x07, 0x7e, 0x37, 0xe8, 0x0b, 0x6f, 0x77, 0x25, 0x25, - 0x2a, 0x59, 0xd9, 0x2b, 0x1d, 0xc6, 0xb0, 0x61, 0x07, 0xde, 0x81, 0x26, 0xd8, 0xd1, 0xdb, 0x50, - 0x76, 0xf6, 0xb1, 0xb7, 0x87, 0x0d, 0xe6, 0x65, 0xaa, 0xd7, 0x9f, 0x4a, 0x89, 0x5a, 0x13, 0x8e, - 0x5e, 0xc3, 0xbe, 0x33, 0xf4, 0xba, 0xd8, 0xd7, 0x42, 0x26, 0xd4, 0x84, 0x8a, 0x27, 0x92, 0xb9, - 0x17, 0x9a, 0x48, 0x42, 0xc4, 0xd5, 0xb8, 0x05, 0x73, 0xf1, 0xca, 0xa1, 0x3a, 0x14, 0x1f, 0xe1, - 0x03, 0xae, 0x4c, 0xf2, 0x33, 0xf2, 0x4f, 0xac, 0x87, 0xd9, 0xc7, 0xad, 0xc2, 0x0d, 0x45, 0xf5, - 0x00, 0x45, 0x2d, 0x7d, 0x80, 0x03, 0xc3, 0x34, 0x02, 0x03, 0x21, 0x28, 0xd1, 0xe0, 0x8d, 0x89, - 0xa0, 0xbf, 0x89, 0xd4, 0x21, 0x77, 0xd5, 0x15, 0x8d, 0xfc, 0x44, 0xa7, 0xa0, 0x12, 0x7a, 0x22, - 0x1e, 0xc1, 0x45, 0x09, 0x24, 0x92, 0x32, 0x82, 0x00, 0x0f, 0xdc, 0x80, 0x2a, 0xa6, 0xa6, 0x89, - 0x4f, 0xf5, 0x57, 0xa6, 0xa1, 0x9e, 0xb2, 0x85, 0x5b, 0x50, 0x1e, 0xf0, 0xe2, 0xb9, 0x0f, 0x3c, - 0x23, 0x85, 0x53, 0xa9, 0x4a, 0x6a, 0x21, 0x3d, 0x89, 0x56, 0x88, 0xad, 0xc5, 0xe2, 0xcd, 0xf0, - 0x9b, 0x19, 0x79, 0x4f, 0x37, 0x2d, 0x0f, 0x77, 0x03, 0xc7, 0x3b, 0xe0, 0x15, 0x9d, 0xeb, 0x3b, - 0xbd, 0x75, 0x91, 0x86, 0x5e, 0x06, 0x30, 0x6d, 0x5f, 0xa7, 0x36, 0xdc, 0xe3, 0xfd, 0x28, 0x4d, - 0x80, 0x61, 0x58, 0xa9, 0x55, 0x4c, 0xdb, 0xe7, 0x55, 0x7e, 0x03, 0x6a, 0x24, 0x46, 0xd3, 0x07, - 0x22, 0xd0, 0x98, 0xa6, 0xb6, 0xb4, 0x22, 0xd7, 0x3b, 0x8c, 0x18, 0xb5, 0x39, 0x37, 0xfa, 0xf0, - 0xd1, 0x6d, 0x98, 0xa1, 0x61, 0x92, 0x08, 0x6c, 0x2e, 0x64, 0x37, 0x97, 0x5b, 0xdf, 0x7d, 0x4a, - 0xca, 0x8c, 0x8f, 0xf3, 0xa1, 0x2d, 0xa8, 0x1a, 0xb6, 0xed, 0x04, 0x06, 0xf3, 0xf8, 0x2c, 0xcc, - 0xb9, 0x3c, 0x52, 0x4c, 0x33, 0xa2, 0x67, 0xb2, 0xe2, 0x12, 0xd0, 0x6b, 0x30, 0x4d, 0xa7, 0x04, - 0xee, 0xc3, 0xcf, 0x8f, 0x1d, 0x14, 0x1a, 0xa3, 0x47, 0x6f, 0xc2, 0xec, 0x63, 0xcb, 0x36, 0x9d, - 0xc7, 0x3e, 0xf7, 0xa7, 0x92, 0x09, 0x7f, 0x89, 0x65, 0xa5, 0x98, 0x05, 0x4f, 0xe3, 0x26, 0x54, - 0x63, 0xed, 0x3b, 0x8c, 0xfd, 0x36, 0xde, 0x82, 0x7a, 0xb2, 0x4d, 0x87, 0xb2, 0xff, 0x21, 0x2c, - 0x69, 0x43, 0x3b, 0xaa, 0x9a, 0x58, 0x0e, 0xbd, 0x0c, 0x33, 0xdc, 0x1a, 0x98, 0x31, 0x9e, 0x1a, - 0xa5, 0x56, 0x8d, 0xd3, 0xc6, 0x57, 0x36, 0x7b, 0x86, 0x6d, 0xf6, 0xb1, 0xc7, 0x4b, 0x14, 0x2b, - 0x9b, 0x77, 0x58, 0xaa, 0xfa, 0x26, 0x1c, 0x4f, 0x14, 0xcb, 0x17, 0x56, 0x4f, 0xc3, 0xbc, 0xeb, - 0x98, 0xba, 0xcf, 0x92, 0x45, 0x2c, 0x59, 0x21, 0xb6, 0x23, 0x68, 0x5b, 0x26, 0x61, 0xef, 0x04, - 0x8e, 0x9b, 0xae, 0xf6, 0x64, 0xec, 0xab, 0xb0, 0x9c, 0x64, 0x67, 0xc5, 0xab, 0x6f, 0xc3, 0x8a, - 0x86, 0x07, 0xce, 0x3e, 0x3e, 0xaa, 0xe8, 0x06, 0xac, 0xa6, 0x05, 0x70, 0xe1, 0xef, 0xc3, 0x4a, - 0x94, 0xda, 0x09, 0x8c, 0x60, 0xe8, 0x1f, 0x4a, 0x38, 0x5f, 0x75, 0x3e, 0x74, 0x7c, 0xd6, 0x91, - 0x65, 0x4d, 0x7c, 0xaa, 0x2b, 0x30, 0xdd, 0x76, 0xcc, 0x56, 0x1b, 0xcd, 0x43, 0xc1, 0x72, 0x39, - 0x73, 0xc1, 0x72, 0xd5, 0x6e, 0xbc, 0xcc, 0x4d, 0x16, 0x75, 0xb2, 0xa2, 0x93, 0xa4, 0xe8, 0x06, - 0xcc, 0x1b, 0xa6, 0x69, 0x11, 0x43, 0x32, 0xfa, 0xba, 0xe5, 0x8a, 0xa0, 0x79, 0x31, 0xd1, 0xf5, - 0xad, 0xb6, 0x56, 0x8b, 0x08, 0x5b, 0xae, 0xaf, 0xde, 0x81, 0x4a, 0x14, 0xa0, 0xbf, 0x12, 0xad, - 0x20, 0x0b, 0xe3, 0x63, 0xb9, 0x70, 0x79, 0xb9, 0x99, 0x9a, 0x24, 0x79, 0x35, 0x5f, 0x01, 0x08, - 0x9d, 0xaa, 0x08, 0x0f, 0x8f, 0x67, 0x8a, 0xd4, 0x62, 0x84, 0xea, 0xbf, 0x96, 0xe2, 0x4e, 0x36, - 0xd6, 0x64, 0x33, 0x6c, 0xb2, 0x29, 0x39, 0xdd, 0xc2, 0x21, 0x9d, 0xee, 0x8b, 0x30, 0xed, 0x07, - 0x46, 0x80, 0x79, 0x3c, 0x7e, 0x32, 0x9b, 0x91, 0x14, 0x8c, 0x35, 0x46, 0x89, 0x4e, 0x03, 0x74, - 0x3d, 0x6c, 0x04, 0xd8, 0xd4, 0x0d, 0x36, 0x2b, 0x14, 0xb5, 0x0a, 0x4f, 0x69, 0x06, 0xc4, 0x8b, - 0x88, 0x15, 0x44, 0xc6, 0x44, 0x98, 0xd3, 0x8d, 0xd1, 0x5a, 0x22, 0xf4, 0x5e, 0x33, 0x63, 0xbd, - 0x17, 0x67, 0xe5, 0xde, 0x2b, 0xf2, 0xc4, 0xb3, 0xa3, 0x3c, 0x31, 0x63, 0x9a, 0xc4, 0x13, 0x97, - 0x47, 0x79, 0x62, 0x2e, 0x66, 0xb4, 0x27, 0xce, 0x70, 0x24, 0x95, 0x2c, 0x47, 0xf2, 0x59, 0xba, - 0xce, 0x3f, 0x2d, 0xc0, 0x6a, 0x7a, 0x3c, 0x73, 0x3f, 0xf6, 0x32, 0xcc, 0xf8, 0x34, 0x65, 0xb4, - 0xff, 0xe4, 0x5c, 0x9c, 0x16, 0xdd, 0x81, 0x92, 0x65, 0xef, 0x3a, 0x7c, 0xe0, 0x5d, 0x19, 0xc9, - 0xc3, 0x4b, 0xba, 0xd2, 0xb2, 0x77, 0x1d, 0xa6, 0x41, 0xca, 0x8b, 0xee, 0xc3, 0xb1, 0x70, 0x65, - 0xed, 0xeb, 0x4c, 0x30, 0x16, 0x71, 0x9e, 0x64, 0xa5, 0x61, 0x54, 0xc5, 0x25, 0xa2, 0x88, 0xaf, - 0xc3, 0xd9, 0x48, 0x8c, 0x43, 0xc8, 0xfd, 0xc0, 0x18, 0xb8, 0xc2, 0x62, 0xc3, 0x84, 0xc6, 0x6b, - 0x50, 0x09, 0x8b, 0x3f, 0x94, 0xee, 0x5a, 0xb0, 0x94, 0x18, 0x23, 0x6c, 0x21, 0x19, 0x0e, 0x2a, - 0x65, 0xd2, 0x41, 0xa5, 0xfe, 0x44, 0x89, 0x0f, 0xf4, 0xbb, 0x56, 0x3f, 0xc0, 0x5e, 0x6a, 0xa0, - 0xbf, 0x2a, 0xe4, 0xb2, 0x51, 0x7e, 0x6e, 0x84, 0x5c, 0xb6, 0x4e, 0xe3, 0x23, 0xf6, 0x3d, 0x98, - 0xa7, 0x26, 0xae, 0xfb, 0xb8, 0x4f, 0x63, 0x25, 0xae, 0xc7, 0xab, 0xd9, 0x02, 0x58, 0xe9, 0x6c, - 0x88, 0x74, 0x38, 0x07, 0xeb, 0x9b, 0x5a, 0x3f, 0x9e, 0xd6, 0xb8, 0x0d, 0x28, 0x4d, 0x74, 0x28, - 0x0d, 0x3e, 0x20, 0xfe, 0xd2, 0x0f, 0x32, 0x67, 0xee, 0x5d, 0x5a, 0x8d, 0xd1, 0x96, 0xc7, 0xaa, - 0xaa, 0x71, 0x5a, 0xf5, 0x9f, 0x8b, 0x00, 0x51, 0xe6, 0xe7, 0xdc, 0x51, 0xde, 0x0a, 0x1d, 0x16, - 0x8b, 0x38, 0xd5, 0x6c, 0x91, 0x99, 0xae, 0xaa, 0x25, 0xbb, 0x2a, 0x16, 0x7b, 0x3e, 0x97, 0x23, - 0xe0, 0xd0, 0x4e, 0x6a, 0xf6, 0xf3, 0xe6, 0xa4, 0xee, 0xc2, 0x72, 0xd2, 0x4c, 0xb8, 0x87, 0x7a, - 0x01, 0xa6, 0xad, 0x00, 0x0f, 0xd8, 0xee, 0x70, 0x62, 0xc3, 0x22, 0x46, 0xce, 0x88, 0xd4, 0xb7, - 0x60, 0x59, 0xee, 0xab, 0xc3, 0x85, 0x2e, 0xea, 0xfd, 0x64, 0xec, 0x13, 0xb9, 0x4a, 0x6e, 0x1f, - 0x99, 0x5b, 0x3f, 0x49, 0x1e, 0x46, 0xa9, 0x7e, 0x5f, 0x81, 0xe3, 0x89, 0xac, 0x9c, 0x81, 0xff, - 0x95, 0xd4, 0x00, 0x66, 0xbe, 0xf5, 0xe5, 0x11, 0xa5, 0x7c, 0x8a, 0xa3, 0xf8, 0x4b, 0xd0, 0x90, - 0xbb, 0x47, 0x52, 0xed, 0xcd, 0xc4, 0x50, 0x3e, 0x3f, 0xb6, 0xd2, 0xe1, 0x78, 0x6e, 0xc3, 0xc9, - 0x4c, 0xc1, 0x69, 0x9d, 0x17, 0x27, 0xd4, 0xf9, 0x7f, 0x17, 0xe2, 0x3e, 0xbb, 0x19, 0x04, 0x9e, - 0xf5, 0x70, 0x18, 0xe0, 0x4f, 0x36, 0xa8, 0x5a, 0x0f, 0x47, 0x36, 0xf3, 0xb3, 0x2f, 0x64, 0x73, - 0x46, 0xa5, 0x67, 0x8e, 0xf1, 0x8e, 0x3c, 0xc6, 0x4b, 0x54, 0xd4, 0x8b, 0x63, 0x45, 0x8d, 0x1c, - 0xed, 0x9f, 0xe5, 0x20, 0xfe, 0x3b, 0x05, 0x16, 0x12, 0xbd, 0x82, 0x6e, 0x03, 0x18, 0x61, 0xd5, - 0xb9, 0x7d, 0x9c, 0x1b, 0xd7, 0x44, 0x2d, 0xc6, 0x43, 0xe6, 0x44, 0x16, 0x2f, 0x66, 0xcc, 0x89, - 0x19, 0xf1, 0x62, 0x18, 0x2e, 0xbe, 0x11, 0x2d, 0x76, 0xd9, 0x26, 0xa9, 0x3a, 0x72, 0xb1, 0xcb, - 0x78, 0x05, 0x8b, 0xfa, 0xab, 0x05, 0x58, 0xca, 0x92, 0x8e, 0x9e, 0x85, 0x62, 0xd7, 0x1d, 0xf2, - 0x96, 0x48, 0x47, 0x49, 0x6b, 0xee, 0x70, 0xc7, 0x37, 0x7a, 0x58, 0x23, 0x04, 0xe8, 0x2a, 0xcc, - 0x0c, 0xf0, 0xc0, 0xf1, 0x0e, 0x78, 0xbd, 0xa5, 0xed, 0x86, 0x07, 0x34, 0x87, 0x51, 0x73, 0x32, - 0x74, 0x3d, 0x0a, 0xab, 0x59, 0x7d, 0x57, 0xa5, 0xd5, 0x03, 0xcb, 0x62, 0x2c, 0x61, 0x2c, 0x7d, - 0x1d, 0x66, 0x5d, 0xcf, 0xe9, 0x62, 0xdf, 0xe7, 0xbb, 0x21, 0xab, 0x89, 0xb3, 0x2d, 0x92, 0xc5, - 0x79, 0x38, 0x21, 0xba, 0x05, 0x10, 0x05, 0x50, 0x7c, 0x66, 0x6a, 0xe4, 0xc6, 0x5b, 0xbe, 0x16, - 0xa3, 0x56, 0xbf, 0x57, 0x80, 0xe5, 0x6c, 0xcd, 0xa1, 0xcb, 0x71, 0xbd, 0x9c, 0xcc, 0x50, 0xb5, - 0xac, 0x9e, 0x57, 0x13, 0xea, 0x39, 0x93, 0xc1, 0x91, 0xa5, 0xa5, 0x9b, 0x49, 0x2d, 0x9d, 0xcd, - 0x60, 0xcc, 0x56, 0xd6, 0xcd, 0xa4, 0xb2, 0xb2, 0x58, 0xb3, 0x75, 0xd6, 0xcc, 0xd0, 0xd9, 0xf9, - 0xac, 0x36, 0xe6, 0xab, 0xee, 0xaf, 0x14, 0x98, 0x8b, 0xd7, 0x4b, 0x0e, 0x59, 0x95, 0x44, 0xc8, - 0x8a, 0x36, 0x61, 0xd1, 0x64, 0x3b, 0xb7, 0xba, 0x65, 0x07, 0xd8, 0xdb, 0x35, 0xba, 0x22, 0x2a, - 0x3c, 0x9f, 0x61, 0x17, 0x2d, 0x41, 0xc3, 0x2a, 0x5e, 0xe7, 0xbc, 0x61, 0x32, 0x69, 0x41, 0x28, - 0x47, 0x78, 0xad, 0x09, 0x04, 0xc5, 0x98, 0xd4, 0x7f, 0x52, 0xe0, 0x58, 0x86, 0x82, 0xc7, 0x34, - 0x64, 0x27, 0xbf, 0x21, 0x17, 0xf2, 0xbb, 0x6e, 0x6c, 0x7b, 0xde, 0xc9, 0x68, 0xcf, 0xe4, 0xf2, - 0xe2, 0xcd, 0xfa, 0xa9, 0x02, 0xc7, 0x33, 0xa9, 0x32, 0xb7, 0x57, 0xaf, 0x43, 0xd9, 0x7b, 0xa2, - 0x3f, 0x3c, 0x08, 0xb0, 0x9f, 0x35, 0xb0, 0x77, 0x62, 0x67, 0x28, 0xb3, 0xde, 0x93, 0x3b, 0x84, - 0x0e, 0xbd, 0x0c, 0x15, 0xef, 0x89, 0x8e, 0x3d, 0xcf, 0xf1, 0x84, 0x2f, 0xca, 0x65, 0x2a, 0x7b, - 0x4f, 0x36, 0x28, 0x21, 0x29, 0x29, 0x10, 0x25, 0x95, 0xc6, 0x94, 0x14, 0x44, 0x25, 0x05, 0x61, - 0x49, 0xd3, 0x63, 0x4a, 0x0a, 0x78, 0x49, 0xea, 0xef, 0x17, 0xe0, 0xd4, 0x28, 0x75, 0x7d, 0x62, - 0x8a, 0xd8, 0x00, 0xe4, 0x3d, 0xd1, 0x5d, 0xa3, 0xfb, 0x08, 0x07, 0xbe, 0x6e, 0x7a, 0x8e, 0xeb, - 0x62, 0x73, 0x9c, 0x46, 0xea, 0xde, 0x93, 0x36, 0xe3, 0x58, 0x67, 0x0c, 0x47, 0xd2, 0xcc, 0x06, - 0xa0, 0x20, 0x5d, 0xf4, 0x18, 0x15, 0xd5, 0x83, 0x44, 0xd1, 0xea, 0x87, 0x30, 0x17, 0xf7, 0x10, - 0x63, 0x6c, 0xff, 0x0d, 0xa8, 0x71, 0x0f, 0xa2, 0x77, 0x9d, 0xa1, 0x1d, 0x8c, 0x53, 0xd4, 0x1c, - 0xa7, 0x5e, 0x23, 0xc4, 0xea, 0xd7, 0xc2, 0xe1, 0xf6, 0xa9, 0x15, 0xf9, 0x4b, 0x05, 0xa8, 0xb4, - 0x06, 0x46, 0x0f, 0x77, 0x5c, 0xdc, 0x25, 0x33, 0xbd, 0x45, 0x3e, 0x78, 0xbf, 0xb3, 0x0f, 0xf4, - 0x8e, 0x1c, 0xb5, 0xb0, 0x38, 0xf5, 0x59, 0xe9, 0x1c, 0x51, 0x48, 0x18, 0xb3, 0x30, 0xb9, 0x06, - 0x4b, 0x43, 0x1f, 0x7b, 0xba, 0xef, 0xe2, 0xae, 0xb5, 0x6b, 0x61, 0x53, 0x67, 0xc5, 0x21, 0x5a, - 0x1c, 0x22, 0x79, 0x1d, 0x91, 0x45, 0x65, 0x66, 0x2d, 0x65, 0x8e, 0x65, 0x2e, 0x65, 0x3e, 0x6e, - 0x28, 0x73, 0x1d, 0xca, 0x5f, 0xc0, 0x07, 0x6c, 0xb1, 0x3f, 0x21, 0x9f, 0xfa, 0xad, 0x12, 0xac, - 0xe4, 0x1c, 0x03, 0xd1, 0x95, 0xa2, 0x3b, 0xd4, 0x5d, 0xec, 0x59, 0x8e, 0x29, 0x7a, 0xad, 0xeb, - 0x0e, 0xdb, 0x34, 0x01, 0x9d, 0x04, 0xf2, 0xa1, 0x7f, 0x6d, 0xe8, 0xf0, 0x60, 0xb4, 0xa8, 0x95, - 0xbb, 0xee, 0xf0, 0x8b, 0xe4, 0x5b, 0xf0, 0xfa, 0x7b, 0x86, 0x87, 0x99, 0xff, 0x60, 0xbc, 0x1d, - 0x9a, 0x80, 0x5e, 0x84, 0xe3, 0x6c, 0x6e, 0xd4, 0xfb, 0xd6, 0xc0, 0x22, 0x5e, 0x36, 0x36, 0x34, - 0x8a, 0x1a, 0x62, 0x99, 0xf7, 0x49, 0x5e, 0xcb, 0x66, 0x83, 0x41, 0x85, 0x9a, 0xe3, 0x0c, 0x74, - 0xbf, 0xeb, 0x78, 0x58, 0x37, 0xcc, 0x0f, 0xe9, 0x38, 0x28, 0x6a, 0x55, 0xc7, 0x19, 0x74, 0x48, - 0x5a, 0xd3, 0xfc, 0x10, 0x9d, 0x85, 0x6a, 0xd7, 0x1d, 0xfa, 0x38, 0xd0, 0xc9, 0x1f, 0xba, 0x59, - 0x57, 0xd1, 0x80, 0x25, 0xad, 0xb9, 0x43, 0x3f, 0x46, 0x30, 0x20, 0xcb, 0xb3, 0xd9, 0x38, 0xc1, - 0x03, 0x3c, 0xa0, 0xa7, 0xdd, 0x7b, 0xc3, 0x1e, 0x76, 0x8d, 0x1e, 0x66, 0x55, 0x13, 0x3b, 0x6e, - 0xd2, 0x69, 0xf7, 0x3b, 0x9c, 0x84, 0x56, 0x50, 0x9b, 0xdf, 0x8b, 0x7f, 0xfa, 0xe8, 0x5d, 0x98, - 0x1d, 0xda, 0xd4, 0x00, 0x56, 0x2b, 0x94, 0xf7, 0xda, 0x04, 0x87, 0x6e, 0x57, 0x76, 0x18, 0x0b, - 0x3f, 0x03, 0xe4, 0x02, 0xd0, 0x2d, 0x68, 0x70, 0x45, 0xf9, 0x8f, 0x0d, 0x37, 0xa9, 0x2d, 0xa0, - 0x2a, 0x58, 0x66, 0x14, 0x9d, 0xc7, 0x86, 0x1b, 0xd7, 0x58, 0xe3, 0x16, 0xcc, 0xc5, 0x85, 0x1e, - 0xca, 0x96, 0xee, 0x40, 0x4d, 0x6a, 0x24, 0xe9, 0x6d, 0xaa, 0x14, 0xdf, 0xfa, 0xba, 0x18, 0x5b, - 0x65, 0x92, 0xd0, 0xb1, 0xbe, 0x4e, 0x31, 0x0a, 0xb4, 0x66, 0x54, 0x4e, 0x49, 0x63, 0x1f, 0xaa, - 0x01, 0x35, 0x09, 0x16, 0x40, 0x5c, 0x32, 0x3d, 0xff, 0xe7, 0x2e, 0x99, 0xfc, 0x26, 0x69, 0x9e, - 0xd3, 0x17, 0x35, 0xa0, 0xbf, 0x49, 0x1a, 0x3d, 0x80, 0x66, 0xc7, 0x69, 0xf4, 0x37, 0x2d, 0x02, - 0xef, 0x73, 0x3c, 0x50, 0x45, 0x63, 0x1f, 0xea, 0x6f, 0x29, 0x00, 0x6b, 0x86, 0x6b, 0x3c, 0xb4, - 0xfa, 0x56, 0x70, 0x80, 0x2e, 0x42, 0xdd, 0x30, 0x4d, 0xbd, 0x2b, 0x52, 0x2c, 0x2c, 0x00, 0x5a, - 0x0b, 0x86, 0x69, 0xae, 0xc5, 0x92, 0xd1, 0xf3, 0xb0, 0x48, 0x1c, 0xaa, 0x4c, 0xcb, 0x10, 0x5b, - 0x75, 0x92, 0x21, 0x11, 0xdf, 0x80, 0x55, 0x22, 0xd7, 0x18, 0x3c, 0xb4, 0xb0, 0x1d, 0xc8, 0x3c, - 0x0c, 0xca, 0xb5, 0x6c, 0x98, 0x66, 0x93, 0x65, 0xc7, 0x39, 0xd5, 0xbf, 0x9c, 0x81, 0xd3, 0x72, - 0x8f, 0x27, 0x91, 0x1a, 0xb7, 0x60, 0x2e, 0x51, 0xdf, 0x14, 0xc6, 0x21, 0x6a, 0xa1, 0x26, 0xd1, - 0x26, 0xb0, 0x08, 0x85, 0x14, 0x16, 0x21, 0x13, 0x05, 0x52, 0xfc, 0x84, 0x50, 0x20, 0xa5, 0x8f, - 0x89, 0x02, 0x99, 0x3e, 0x2a, 0x0a, 0x64, 0x6e, 0x62, 0x14, 0xc8, 0xb3, 0xd4, 0xf5, 0x8a, 0x12, - 0x69, 0x38, 0xc0, 0x7c, 0x42, 0x2d, 0x94, 0x6e, 0x0b, 0xd4, 0x60, 0x02, 0x2d, 0x32, 0x7b, 0x18, - 0xb4, 0x48, 0x39, 0x17, 0x2d, 0x72, 0x0e, 0xe6, 0x6c, 0x47, 0xb7, 0xf1, 0x63, 0x9d, 0x74, 0x8b, - 0xbf, 0x5a, 0x65, 0x7d, 0x64, 0x3b, 0x9b, 0xf8, 0x71, 0x9b, 0xa4, 0xa0, 0xf3, 0x30, 0x37, 0x30, - 0xfc, 0x47, 0xd8, 0xa4, 0xb0, 0x0d, 0x7f, 0xb5, 0x46, 0xed, 0xa9, 0xca, 0xd2, 0xda, 0x24, 0x09, - 0x3d, 0x03, 0x61, 0x3d, 0x38, 0xd1, 0x3c, 0x25, 0xaa, 0x89, 0x54, 0x46, 0x16, 0x43, 0x9e, 0x2c, - 0x1c, 0x11, 0x79, 0x52, 0x3f, 0x0c, 0xf2, 0xe4, 0x32, 0xd4, 0xc5, 0x6f, 0x01, 0x3d, 0x61, 0x27, - 0x09, 0x14, 0x75, 0xb2, 0x20, 0xf2, 0x04, 0xbc, 0x24, 0x0f, 0xa8, 0x02, 0x23, 0x81, 0x2a, 0x7f, - 0xa0, 0xf0, 0x35, 0x6d, 0x38, 0x80, 0xf8, 0x09, 0xb9, 0x04, 0x6e, 0x50, 0x8e, 0x02, 0x6e, 0x40, - 0xdb, 0xb9, 0xf0, 0x8f, 0x8b, 0xf9, 0x92, 0xc6, 0x01, 0x40, 0xd4, 0x07, 0xe1, 0x72, 0xf3, 0x93, - 0x80, 0xb1, 0xa9, 0xff, 0xae, 0xc0, 0x69, 0x2e, 0x2f, 0x07, 0xeb, 0x95, 0x61, 0xe5, 0x4a, 0x8e, - 0x95, 0x77, 0x3d, 0x6c, 0x62, 0x3b, 0xb0, 0x8c, 0x3e, 0x0d, 0x60, 0xc4, 0x09, 0x72, 0x94, 0x4c, - 0x63, 0xa8, 0xf3, 0x30, 0xc7, 0xe0, 0x9b, 0x7c, 0xe5, 0xc9, 0x50, 0x9a, 0x55, 0x8a, 0xe0, 0xe4, - 0x8b, 0xcb, 0xad, 0x2c, 0xcf, 0x52, 0xca, 0xdd, 0xb2, 0x18, 0xeb, 0x60, 0x54, 0x07, 0x56, 0x72, - 0xce, 0xf2, 0x33, 0xbb, 0x49, 0x49, 0x77, 0xd3, 0x48, 0x25, 0xa5, 0xbb, 0xe9, 0x5b, 0x0a, 0x9c, - 0x4d, 0xad, 0x80, 0x3f, 0x7b, 0xcd, 0xaa, 0x7f, 0xa4, 0x84, 0xf6, 0x93, 0x34, 0xf9, 0xb5, 0xb4, - 0xc9, 0x3f, 0x33, 0x6a, 0x41, 0x9f, 0x69, 0xf4, 0xef, 0xe5, 0x1a, 0xfd, 0xf3, 0x23, 0x37, 0x07, - 0xc6, 0xe9, 0xf3, 0x5f, 0x14, 0x38, 0x91, 0x5b, 0x81, 0x44, 0x3c, 0xa8, 0x24, 0xe3, 0x41, 0x1e, - 0x4b, 0x46, 0xd1, 0x3f, 0x8b, 0x25, 0x69, 0x80, 0xcf, 0x83, 0x36, 0x7d, 0x60, 0x3c, 0xb1, 0x06, - 0xc3, 0x01, 0x0f, 0x26, 0x89, 0xb8, 0x07, 0x2c, 0xe5, 0x28, 0xd1, 0xe4, 0x55, 0x58, 0x62, 0x8e, - 0x9e, 0x06, 0x34, 0x11, 0x07, 0x0b, 0x2a, 0x17, 0x59, 0x1e, 0x89, 0x6d, 0x38, 0x83, 0xda, 0x84, - 0xc5, 0xb0, 0x59, 0x23, 0xb1, 0x4c, 0x31, 0x6c, 0x52, 0x41, 0xc6, 0x26, 0xd9, 0x30, 0xb3, 0x8e, - 0xf7, 0xad, 0x2e, 0xfe, 0x44, 0x60, 0xd4, 0xe7, 0xa0, 0xea, 0x62, 0x6f, 0x60, 0xf9, 0x7e, 0x38, - 0xab, 0x57, 0xb4, 0x78, 0x92, 0x7a, 0x16, 0x2a, 0x6b, 0xeb, 0x2d, 0x5e, 0x64, 0x46, 0x55, 0xd5, - 0xff, 0x98, 0x81, 0x85, 0xa4, 0x8d, 0xdd, 0x4c, 0x61, 0xa5, 0x4e, 0x67, 0xee, 0xb3, 0x65, 0x6c, - 0x30, 0x3f, 0x2f, 0x96, 0x5e, 0x85, 0x34, 0x90, 0x20, 0x5c, 0x5e, 0x89, 0x15, 0xd9, 0x2a, 0xcc, - 0x76, 0x9d, 0xc1, 0xc0, 0xb0, 0x4d, 0x01, 0x86, 0xe7, 0x9f, 0xa4, 0xa6, 0x86, 0xd7, 0x63, 0x5b, - 0xcb, 0x15, 0x8d, 0xfe, 0x26, 0x26, 0x40, 0x9c, 0xa1, 0x65, 0x53, 0xb4, 0x15, 0xed, 0xa5, 0x8a, - 0x06, 0x3c, 0x69, 0xdd, 0xf2, 0xd0, 0x05, 0x28, 0x61, 0x7b, 0x5f, 0x9c, 0x39, 0x49, 0x5b, 0x9c, - 0x62, 0x4d, 0xa4, 0x51, 0x0a, 0x74, 0x11, 0x66, 0x06, 0xc4, 0xac, 0xc4, 0x89, 0xfc, 0x62, 0x0a, - 0x34, 0xae, 0x71, 0x02, 0xf4, 0x02, 0xcc, 0x9a, 0x54, 0x7b, 0x62, 0x11, 0x80, 0x24, 0xdc, 0x16, - 0xcd, 0xd2, 0x04, 0x09, 0x7a, 0x3b, 0xdc, 0x5f, 0xaf, 0xa4, 0x0f, 0xbe, 0x12, 0x6a, 0xce, 0xdc, - 0x5a, 0xdf, 0x94, 0x17, 0xa9, 0x90, 0xde, 0xa5, 0x4f, 0x4a, 0x19, 0xbd, 0x54, 0x3d, 0x01, 0xe5, - 0xbe, 0xd3, 0x63, 0xd6, 0x53, 0x65, 0x37, 0x29, 0xfa, 0x4e, 0x8f, 0x1a, 0xcf, 0x12, 0x4c, 0xfb, - 0x81, 0x69, 0xd9, 0x34, 0x96, 0x2a, 0x6b, 0xec, 0x83, 0x0c, 0x52, 0xfa, 0x43, 0x77, 0xec, 0x2e, - 0x5e, 0xad, 0xd1, 0xac, 0x0a, 0x4d, 0xd9, 0xb2, 0xbb, 0x74, 0x4d, 0x19, 0x04, 0x07, 0xab, 0xf3, - 0x34, 0x9d, 0xfc, 0x8c, 0xb6, 0xb9, 0x17, 0x72, 0xb6, 0xb9, 0x13, 0x15, 0xce, 0xd8, 0xe6, 0xae, - 0xe7, 0xce, 0x19, 0x49, 0x5e, 0xc1, 0x42, 0xe2, 0xc8, 0xb5, 0xf5, 0x96, 0x2e, 0xba, 0x66, 0x31, - 0x8d, 0x29, 0x0f, 0xcd, 0x5e, 0x83, 0xf0, 0xe7, 0x67, 0x7a, 0xca, 0xf0, 0x3d, 0x05, 0x96, 0xd7, - 0xe8, 0x19, 0x6b, 0xcc, 0x37, 0x1e, 0x06, 0x9e, 0xf4, 0x52, 0x88, 0x19, 0xcb, 0x00, 0xfe, 0x24, - 0x35, 0x25, 0x20, 0x63, 0x6b, 0x30, 0x2f, 0xc4, 0x72, 0xe6, 0xe2, 0x04, 0x80, 0xb3, 0x9a, 0x1f, - 0xff, 0x54, 0xdf, 0x80, 0x95, 0x54, 0xcd, 0xf9, 0x49, 0x57, 0xf2, 0xf2, 0x01, 0xab, 0x78, 0xfc, - 0xf2, 0x81, 0x7a, 0x0b, 0x8e, 0x77, 0x02, 0xc3, 0x0b, 0x52, 0xcd, 0x9e, 0x80, 0x97, 0x42, 0xc9, - 0x64, 0x5e, 0x8e, 0xf6, 0xea, 0xc0, 0x52, 0x27, 0x70, 0xdc, 0x23, 0x08, 0x25, 0x7e, 0x87, 0xb4, - 0xdc, 0x19, 0x8a, 0x79, 0x46, 0x7c, 0xaa, 0x2b, 0x0c, 0xf8, 0x96, 0x2e, 0xed, 0x75, 0x58, 0x66, - 0xb8, 0xb3, 0xa3, 0x34, 0xe2, 0x84, 0x40, 0xbd, 0xa5, 0xe5, 0xde, 0x83, 0x63, 0xd2, 0xde, 0x3b, - 0xc7, 0x69, 0x5c, 0x93, 0x71, 0x1a, 0xf9, 0xc7, 0x1c, 0x21, 0x4c, 0xe3, 0xd7, 0x0b, 0x31, 0x3f, - 0x9e, 0x73, 0x58, 0xfb, 0x8a, 0x8c, 0xd2, 0x38, 0x9b, 0x2f, 0x55, 0x02, 0x69, 0xa4, 0xad, 0xb3, - 0x98, 0x61, 0x9d, 0x3b, 0xa9, 0x93, 0xe0, 0x52, 0x1a, 0x65, 0x93, 0xa8, 0xe1, 0xa7, 0x72, 0x06, - 0x7c, 0x9f, 0x21, 0x39, 0xc2, 0xa2, 0xc3, 0xe3, 0xdf, 0x97, 0x12, 0xc7, 0xbf, 0x27, 0x47, 0xd4, - 0x34, 0x3c, 0xf8, 0xfd, 0x6e, 0x09, 0x2a, 0x61, 0x5e, 0x4a, 0xc3, 0x69, 0x55, 0x15, 0x32, 0x54, - 0x15, 0x9f, 0x5f, 0x8b, 0x47, 0x9c, 0x5f, 0x4b, 0x13, 0xcc, 0xaf, 0x27, 0xa1, 0x42, 0x7f, 0x50, - 0xf0, 0x3d, 0x9b, 0x2f, 0xcb, 0x34, 0x41, 0xc3, 0xbb, 0x91, 0x89, 0xcd, 0x4c, 0x68, 0x62, 0x09, - 0xd4, 0xc8, 0x6c, 0x12, 0x35, 0x72, 0x33, 0x9c, 0xfb, 0xca, 0xe9, 0x53, 0x9a, 0x50, 0x62, 0xe6, - 0xac, 0x97, 0xd8, 0x9a, 0xad, 0xa4, 0xb7, 0x66, 0x23, 0xfe, 0xb1, 0xf3, 0x1d, 0x6b, 0xb2, 0x65, - 0xb2, 0x45, 0xa5, 0x36, 0x4b, 0xbf, 0x5b, 0xe6, 0x67, 0xe9, 0xfa, 0xb7, 0x18, 0x4a, 0x24, 0x6e, - 0x82, 0xdc, 0x7d, 0xbe, 0x22, 0x1d, 0xd0, 0x29, 0x19, 0xd3, 0x58, 0xe8, 0x32, 0xe2, 0x87, 0x72, - 0x3b, 0xb0, 0x9c, 0x44, 0x97, 0x1d, 0xca, 0xfd, 0xe5, 0xc0, 0x5c, 0xbf, 0x13, 0x0f, 0x06, 0x73, - 0x30, 0x9d, 0x37, 0x53, 0xf0, 0x83, 0x89, 0x8d, 0xf7, 0x9a, 0x8c, 0x54, 0x3a, 0xb4, 0xc9, 0xa5, - 0x80, 0x4a, 0x34, 0x58, 0x31, 0x3c, 0x9e, 0xcd, 0xe2, 0xf6, 0x0a, 0x4f, 0x69, 0xd2, 0x45, 0xc3, - 0xae, 0x65, 0x5b, 0xfe, 0x1e, 0xcb, 0x9f, 0x61, 0x8b, 0x06, 0x91, 0xd4, 0xa4, 0x1b, 0x9a, 0xf8, - 0x89, 0x15, 0xe8, 0x5d, 0xc7, 0xc4, 0xd4, 0xa0, 0xa7, 0xb5, 0x32, 0x49, 0x58, 0x73, 0x4c, 0x1c, - 0x0d, 0xb5, 0xf2, 0x61, 0x87, 0x5a, 0x25, 0x31, 0xd4, 0x96, 0x61, 0xc6, 0xc3, 0x86, 0xef, 0xd8, - 0xdc, 0x24, 0xf9, 0x17, 0xe9, 0x88, 0x01, 0xf6, 0x7d, 0x52, 0x06, 0x8f, 0xcd, 0xf8, 0x67, 0x2c, - 0x8e, 0x9c, 0x1b, 0x11, 0x47, 0x8e, 0x40, 0x8c, 0x26, 0xe2, 0xc8, 0xda, 0x88, 0x38, 0x72, 0x22, - 0xc0, 0x68, 0x14, 0x31, 0xcf, 0x8f, 0x8b, 0x98, 0xe3, 0x21, 0xe7, 0x82, 0x1c, 0x72, 0xbe, 0x11, - 0x5f, 0xbc, 0xd6, 0xd3, 0xe7, 0xe7, 0xa3, 0x57, 0xad, 0xf1, 0xb1, 0xbd, 0xf8, 0xb9, 0x19, 0xdb, - 0x7f, 0xaf, 0xc0, 0x4a, 0x6a, 0x2c, 0xf2, 0xd1, 0xfd, 0x52, 0x02, 0xa5, 0x3a, 0x12, 0x1e, 0x2a, - 0x40, 0xaa, 0x4d, 0x09, 0xa4, 0x7a, 0x79, 0x14, 0x4b, 0x0e, 0x46, 0xf5, 0xe8, 0xb8, 0xd1, 0x6f, - 0x2a, 0x80, 0x32, 0x56, 0xee, 0x37, 0x45, 0x8c, 0x7f, 0x88, 0x3d, 0x36, 0x1e, 0xe6, 0xbf, 0x1d, - 0x85, 0xf9, 0x85, 0xc3, 0xec, 0x56, 0x84, 0x80, 0x96, 0x1f, 0x15, 0xe0, 0xec, 0x8e, 0x6b, 0x26, - 0x82, 0x4f, 0x4e, 0x35, 0xb9, 0xd3, 0xbb, 0x29, 0xa3, 0x71, 0x8e, 0xd8, 0x84, 0xe2, 0x51, 0x9a, - 0x80, 0xbe, 0x9a, 0x85, 0x97, 0x7a, 0x43, 0x3a, 0xd9, 0x1c, 0xdd, 0xc0, 0x31, 0xd0, 0xa9, 0x8f, - 0x6b, 0xc2, 0x2a, 0x9c, 0xcb, 0xaf, 0x00, 0x0f, 0x54, 0x7f, 0x1e, 0x16, 0x36, 0x9e, 0xe0, 0x6e, - 0xe7, 0xc0, 0xee, 0x1e, 0x42, 0xeb, 0x75, 0x28, 0x76, 0x07, 0x26, 0x3f, 0x53, 0x21, 0x3f, 0xe3, - 0xb1, 0x77, 0x51, 0x8e, 0xbd, 0x75, 0xa8, 0x47, 0x25, 0xf0, 0x01, 0xb4, 0x4c, 0x06, 0x90, 0x49, - 0x88, 0x89, 0xf0, 0x39, 0x8d, 0x7f, 0xf1, 0x74, 0xec, 0xb1, 0xfb, 0x2f, 0x2c, 0x1d, 0x7b, 0x9e, - 0xec, 0xd0, 0x8b, 0xb2, 0x43, 0x57, 0xbf, 0xad, 0x40, 0x95, 0x94, 0xf0, 0xb1, 0xea, 0xcf, 0x17, - 0xc0, 0xc5, 0x68, 0x01, 0x1c, 0xae, 0xa3, 0x4b, 0xf1, 0x75, 0x74, 0x54, 0xf3, 0x69, 0x9a, 0x9c, - 0xae, 0xf9, 0x4c, 0x98, 0x8e, 0x3d, 0x4f, 0x3d, 0x07, 0x73, 0xac, 0x6e, 0xbc, 0xe5, 0x75, 0x28, - 0x0e, 0xbd, 0xbe, 0xe8, 0xbf, 0xa1, 0xd7, 0x57, 0xbf, 0xa1, 0x40, 0xad, 0x19, 0x04, 0x46, 0x77, - 0xef, 0x10, 0x0d, 0x08, 0x2b, 0x57, 0x88, 0x57, 0x2e, 0xdd, 0x88, 0xa8, 0xba, 0xa5, 0x9c, 0xea, - 0x4e, 0x4b, 0xd5, 0x55, 0x61, 0x5e, 0xd4, 0x25, 0xb7, 0xc2, 0x9b, 0x80, 0xda, 0x8e, 0x17, 0xdc, - 0x75, 0xbc, 0xc7, 0x86, 0x67, 0x1e, 0x6e, 0xad, 0x8b, 0xa0, 0xc4, 0x5f, 0x30, 0x28, 0x5e, 0x98, - 0xd6, 0xe8, 0x6f, 0xf5, 0x39, 0x38, 0x26, 0xc9, 0xcb, 0x2d, 0xf8, 0x16, 0x54, 0xe9, 0x04, 0xcd, - 0x97, 0x41, 0xcf, 0xc7, 0xe1, 0x00, 0x63, 0x26, 0x72, 0x75, 0x1d, 0x16, 0x49, 0xa8, 0x46, 0xd3, - 0x43, 0xff, 0x72, 0x35, 0xb1, 0x52, 0x58, 0x49, 0x89, 0x48, 0xac, 0x12, 0x7e, 0xa2, 0xc0, 0x34, - 0x3b, 0xf9, 0x4f, 0x86, 0x4f, 0x27, 0xc9, 0x14, 0xe8, 0x3a, 0x7a, 0x60, 0xf4, 0xc2, 0xd7, 0x21, - 0x48, 0xc2, 0xb6, 0xd1, 0xa3, 0xe7, 0x40, 0x34, 0xd3, 0xb4, 0x7a, 0xd8, 0x0f, 0xc4, 0xb9, 0x62, - 0x95, 0xa4, 0xad, 0xb3, 0x24, 0xa2, 0x18, 0x7a, 0xfc, 0x5a, 0xa2, 0xa7, 0xac, 0xf4, 0x37, 0xba, - 0xc0, 0xae, 0x4e, 0x8e, 0x3e, 0x4c, 0xa3, 0x57, 0x2a, 0x1b, 0x50, 0x4e, 0x9c, 0x82, 0x85, 0xdf, - 0xe8, 0x22, 0x94, 0xe8, 0xae, 0xf5, 0xec, 0x28, 0x2d, 0x51, 0x12, 0x62, 0x15, 0xae, 0x65, 0xdb, - 0xd8, 0xe4, 0x4f, 0x17, 0xf0, 0x2f, 0xf5, 0x6d, 0x40, 0x71, 0xe5, 0xf1, 0x0e, 0xba, 0x08, 0x33, - 0x54, 0xb7, 0x22, 0xbe, 0x5d, 0x4c, 0x89, 0xd6, 0x38, 0x81, 0xfa, 0x15, 0x40, 0xac, 0x2c, 0x29, - 0xa6, 0x3d, 0x4c, 0x07, 0x8e, 0x88, 0x6e, 0xff, 0x58, 0x81, 0x63, 0x92, 0x74, 0x5e, 0xbf, 0xe7, - 0x64, 0xf1, 0x19, 0xd5, 0xe3, 0xa2, 0xdf, 0x94, 0x66, 0xe6, 0x8b, 0xe9, 0x6a, 0xfc, 0x3f, 0xcd, - 0xca, 0xff, 0xa0, 0x00, 0x34, 0x87, 0xc1, 0x1e, 0xdf, 0x9e, 0x8d, 0x77, 0xa2, 0x92, 0xe8, 0xc4, - 0x06, 0x94, 0x5d, 0xc3, 0xf7, 0x1f, 0x3b, 0x9e, 0x58, 0x7a, 0x86, 0xdf, 0x74, 0x53, 0x75, 0xc8, - 0x9f, 0x80, 0xa8, 0x68, 0xf4, 0x37, 0x7a, 0x06, 0xe6, 0xd9, 0xb3, 0x25, 0xba, 0x61, 0x9a, 0x9e, - 0x80, 0x18, 0x56, 0xb4, 0x1a, 0x4b, 0x6d, 0xb2, 0x44, 0x42, 0x66, 0xd1, 0x33, 0x8c, 0xe0, 0x40, - 0x0f, 0x9c, 0x47, 0xd8, 0xe6, 0xcb, 0xc9, 0x9a, 0x48, 0xdd, 0x26, 0x89, 0xec, 0x90, 0xb2, 0x67, - 0xf9, 0x81, 0x27, 0xc8, 0xc4, 0x51, 0x2b, 0x4f, 0xa5, 0x64, 0xea, 0x1f, 0x2a, 0x50, 0x6f, 0x0f, - 0xfb, 0x7d, 0xa6, 0xdc, 0xa3, 0x74, 0xf2, 0x25, 0xde, 0x94, 0x42, 0xda, 0xe4, 0x23, 0x45, 0xf1, - 0x26, 0x7e, 0x22, 0x3b, 0x60, 0xd7, 0x60, 0x31, 0x56, 0x63, 0x6e, 0x38, 0x52, 0xd0, 0xaf, 0xc8, - 0x41, 0xbf, 0xda, 0x04, 0xc4, 0x36, 0x7d, 0x8e, 0xdc, 0x4a, 0xf5, 0x38, 0x1c, 0x93, 0x44, 0xf0, - 0xa9, 0xf8, 0x12, 0xd4, 0x38, 0xdc, 0x8d, 0x1b, 0xc4, 0x09, 0x28, 0x13, 0x97, 0xda, 0xb5, 0x4c, - 0x81, 0xab, 0x98, 0x75, 0x1d, 0x73, 0xcd, 0x32, 0x3d, 0xf5, 0x8b, 0x50, 0xe3, 0xf7, 0xe9, 0x39, - 0xed, 0x6d, 0x98, 0xe7, 0xa7, 0x8a, 0xba, 0x74, 0x01, 0xf5, 0x44, 0x06, 0xa6, 0x52, 0xa8, 0xc2, - 0x8e, 0x7f, 0xaa, 0x5f, 0x85, 0x06, 0x8b, 0x16, 0x24, 0xc1, 0xa2, 0x81, 0xb7, 0x41, 0x40, 0x9a, - 0x46, 0xc8, 0x97, 0x39, 0x6b, 0x5e, 0xfc, 0x53, 0x3d, 0x0d, 0x27, 0x33, 0xe5, 0xf3, 0xd6, 0xbb, - 0x50, 0x8f, 0x32, 0xd8, 0x2d, 0xc9, 0x10, 0x2c, 0xa2, 0xc4, 0xc0, 0x22, 0xcb, 0x61, 0xec, 0x5d, - 0x10, 0x33, 0x17, 0x0d, 0xaf, 0xa3, 0xc5, 0x58, 0x31, 0x6f, 0x31, 0x56, 0x92, 0x16, 0x63, 0xea, - 0x83, 0x50, 0x87, 0x7c, 0x49, 0xfc, 0x06, 0x5d, 0xb4, 0xb3, 0xb2, 0x85, 0x53, 0x3b, 0x95, 0xdd, - 0x3e, 0x46, 0xa4, 0xc5, 0xe8, 0xd5, 0x8b, 0x50, 0x93, 0xdd, 0x5b, 0xcc, 0x63, 0x29, 0xb2, 0xc7, - 0xfa, 0x05, 0x58, 0xd6, 0x24, 0x7c, 0xd8, 0x5d, 0x6c, 0x04, 0x43, 0x0f, 0xfb, 0xe8, 0x75, 0x68, - 0x64, 0xbc, 0x24, 0xa3, 0xf3, 0x35, 0x1a, 0x13, 0xb3, 0x92, 0x7a, 0x50, 0xe6, 0x01, 0x5b, 0xa1, - 0x3d, 0x07, 0x0b, 0x14, 0xbf, 0x16, 0xbb, 0xf7, 0xc9, 0x74, 0x44, 0x5f, 0x2d, 0xd9, 0x8c, 0x2e, - 0x79, 0x9a, 0xe1, 0x6b, 0x0c, 0xbc, 0xfc, 0xcc, 0xd3, 0xae, 0xb7, 0xa0, 0xbc, 0xcb, 0xeb, 0xc5, - 0x07, 0xa4, 0x9a, 0xa1, 0x8c, 0x44, 0x0b, 0xb4, 0x90, 0x47, 0xfd, 0x1f, 0x05, 0xe6, 0x13, 0x2e, - 0xf9, 0xc5, 0xc4, 0xc2, 0x29, 0xcb, 0x7a, 0x12, 0xcb, 0xa6, 0x1b, 0x92, 0x73, 0x7e, 0x5a, 0x82, - 0x2f, 0x8c, 0xbe, 0xd1, 0xb7, 0x01, 0xf5, 0x04, 0x38, 0x4f, 0x00, 0x73, 0x1b, 0xf9, 0xed, 0xd0, - 0x16, 0x64, 0xe4, 0x9e, 0x7f, 0x74, 0xf7, 0xbe, 0xc4, 0x27, 0xbd, 0xbb, 0x3e, 0xe1, 0xe7, 0x56, - 0xa1, 0x3e, 0x05, 0xd5, 0x9d, 0xbc, 0x27, 0x60, 0x4a, 0x02, 0xba, 0xf7, 0x2a, 0x2c, 0xdd, 0xb5, - 0xfa, 0xd8, 0x3f, 0xf0, 0x03, 0x3c, 0x68, 0x51, 0x5f, 0xbc, 0x6b, 0x61, 0x0f, 0x9d, 0x01, 0xa0, - 0xa6, 0xe0, 0x3a, 0x56, 0xf8, 0xec, 0x45, 0x2c, 0x45, 0xfd, 0xa1, 0x02, 0x0b, 0x11, 0xe3, 0x24, - 0xf8, 0xcc, 0x57, 0x60, 0x7a, 0xd7, 0x17, 0x1b, 0x9a, 0x89, 0x63, 0x9e, 0xac, 0x2a, 0x68, 0xa5, - 0x5d, 0xbf, 0x65, 0xa2, 0x57, 0x01, 0x86, 0x3e, 0x36, 0xf9, 0xc9, 0xea, 0x18, 0xc4, 0x6c, 0x85, - 0x90, 0xb2, 0xb3, 0xd9, 0x1b, 0x50, 0xb5, 0x6c, 0xc7, 0xc4, 0xf4, 0xd4, 0xdd, 0x1c, 0x87, 0x96, - 0x05, 0x46, 0xbb, 0xe3, 0x63, 0x53, 0xfd, 0xdd, 0xe8, 0xec, 0xfc, 0xf3, 0xdc, 0x42, 0xf5, 0x3b, - 0x22, 0x1a, 0x11, 0xdd, 0xce, 0x4d, 0xff, 0x1d, 0x58, 0x64, 0x93, 0xca, 0x6e, 0x58, 0x66, 0xe6, - 0x35, 0xa2, 0x44, 0xe3, 0xb4, 0xba, 0xc5, 0xe3, 0x50, 0xc1, 0x84, 0xda, 0x70, 0x3c, 0x5a, 0x1e, - 0xc4, 0xa5, 0x15, 0xc6, 0x4b, 0x5b, 0xea, 0xc6, 0xf6, 0xbf, 0x05, 0xa3, 0x7a, 0x0b, 0x8e, 0x27, - 0x6e, 0x0a, 0x4c, 0x7e, 0x08, 0xf2, 0x6e, 0x62, 0xcb, 0x32, 0x1a, 0xec, 0xd7, 0xe4, 0x0b, 0x6a, - 0xa3, 0xee, 0x74, 0xf0, 0xbb, 0x52, 0x3b, 0x70, 0x42, 0xda, 0x4f, 0x95, 0xea, 0x72, 0x23, 0x11, - 0xac, 0x9f, 0xcb, 0x97, 0x97, 0x88, 0xda, 0xff, 0x53, 0x81, 0xa5, 0x2c, 0x82, 0x23, 0x6e, 0xf3, - 0x7f, 0x90, 0x73, 0xb9, 0xf5, 0xa5, 0x71, 0x15, 0xfa, 0x54, 0x8e, 0x45, 0x36, 0xd9, 0xd5, 0xb8, - 0xf1, 0x7d, 0x52, 0x9c, 0xac, 0x4f, 0x7e, 0x52, 0x88, 0x1d, 0x65, 0x8d, 0xb8, 0xbe, 0xf6, 0x31, - 0xf6, 0x8f, 0xd7, 0x12, 0xb7, 0xd7, 0x9e, 0xcf, 0x64, 0x1c, 0x73, 0x79, 0x4d, 0xcb, 0xda, 0x8c, - 0xb9, 0x36, 0x4e, 0xd2, 0xe7, 0xf6, 0xee, 0xda, 0x6f, 0x14, 0x60, 0x5e, 0xee, 0x10, 0xf4, 0x76, - 0xc6, 0xd5, 0xb5, 0xb3, 0x63, 0x1a, 0x28, 0xdd, 0x5c, 0xe3, 0x57, 0xc5, 0x0a, 0x93, 0x5f, 0x15, - 0x2b, 0x4e, 0x76, 0x55, 0xec, 0x0e, 0xcc, 0x3f, 0xf6, 0xac, 0xc0, 0x78, 0xd8, 0xc7, 0x7a, 0xdf, - 0x38, 0xc0, 0x1e, 0x77, 0xec, 0x23, 0x5d, 0x51, 0x4d, 0xb0, 0xdc, 0x27, 0x1c, 0x74, 0x99, 0xfa, - 0xd8, 0x70, 0xf9, 0x6a, 0x57, 0x0a, 0xa0, 0x3b, 0x8f, 0x0d, 0x97, 0xf1, 0x50, 0x12, 0xf5, 0x1b, - 0x05, 0x38, 0x9e, 0x79, 0xc1, 0xe9, 0xe3, 0xab, 0xe8, 0x72, 0x5c, 0x45, 0x87, 0xb9, 0x35, 0x56, - 0x3c, 0xd4, 0xad, 0xb1, 0x56, 0x8e, 0xc2, 0xb2, 0xb0, 0x12, 0xa3, 0xf5, 0xa6, 0xfe, 0x99, 0x02, - 0x65, 0x51, 0xa9, 0xb1, 0x77, 0xb8, 0x56, 0x86, 0x84, 0x4c, 0xa7, 0x38, 0x7b, 0xdb, 0xb0, 0x1d, - 0xdd, 0xc7, 0x24, 0x82, 0x1d, 0x7b, 0x63, 0x66, 0x89, 0xf2, 0xad, 0x39, 0x1e, 0xde, 0x34, 0x6c, - 0xa7, 0xc3, 0x98, 0x50, 0x13, 0xea, 0x4c, 0x1e, 0x15, 0x45, 0x84, 0x8e, 0x9d, 0x28, 0xe7, 0x29, - 0x03, 0x11, 0x42, 0x84, 0xf9, 0xea, 0x5f, 0x2b, 0xb0, 0x90, 0xd0, 0xec, 0xcf, 0x5e, 0x23, 0x7e, - 0xa7, 0x08, 0xd5, 0x58, 0x2f, 0x8f, 0x69, 0xc0, 0x1a, 0x2c, 0x0a, 0xbc, 0x93, 0x8f, 0x83, 0xc9, - 0x6e, 0x2c, 0x2d, 0x70, 0x8e, 0x0e, 0x0e, 0x58, 0x1c, 0x75, 0x1b, 0x16, 0x8c, 0x7d, 0xc3, 0xea, - 0x53, 0x0b, 0x9a, 0x28, 0x44, 0x99, 0x0f, 0xe9, 0xc3, 0x48, 0x8c, 0xb5, 0x7b, 0xa2, 0x7b, 0x4b, - 0x40, 0x69, 0xa3, 0xeb, 0x63, 0xbe, 0x1f, 0x03, 0xd5, 0x8d, 0xbc, 0x3e, 0xe6, 0xfb, 0x61, 0x79, - 0xf4, 0x92, 0x01, 0xbd, 0x37, 0xe7, 0xf3, 0xc7, 0x56, 0xf2, 0xcb, 0x23, 0xb4, 0x77, 0x29, 0x29, - 0x51, 0xd8, 0xc0, 0xf8, 0xd0, 0xf1, 0xf4, 0x38, 0xff, 0xec, 0x18, 0x85, 0x51, 0x8e, 0x76, 0x28, - 0x44, 0xfd, 0x13, 0x05, 0x2a, 0xa1, 0x1f, 0x19, 0xd3, 0x43, 0x2d, 0x58, 0xa2, 0x37, 0x32, 0x92, - 0x1a, 0x1e, 0xd3, 0x49, 0x88, 0x30, 0x35, 0x65, 0x2d, 0x37, 0xa1, 0x4e, 0x45, 0xc5, 0x55, 0x3d, - 0xae, 0xa3, 0x7c, 0x51, 0x4d, 0x16, 0x50, 0xfe, 0x79, 0x01, 0x50, 0xda, 0x95, 0xfc, 0xcc, 0x18, - 0x59, 0xbc, 0xd3, 0x4a, 0x93, 0x77, 0xfa, 0x3d, 0x38, 0xd6, 0x75, 0x06, 0x03, 0x8b, 0xde, 0xe6, - 0x71, 0xbc, 0x83, 0xc9, 0xcc, 0x6d, 0x91, 0xf1, 0x30, 0x3d, 0x31, 0xf5, 0xbd, 0x05, 0x27, 0x34, - 0xec, 0xb8, 0xd8, 0x0e, 0x5d, 0xff, 0x7d, 0xa7, 0x77, 0x88, 0xf8, 0xf6, 0x14, 0x34, 0xb2, 0xf8, - 0xf9, 0xae, 0xc5, 0x10, 0x1a, 0x6b, 0x7b, 0xb8, 0xfb, 0x88, 0x2e, 0xbf, 0x8e, 0x82, 0x59, 0x6a, - 0x40, 0xb9, 0xef, 0x74, 0xd9, 0x4b, 0xb7, 0x7c, 0x63, 0x4f, 0x7c, 0x8f, 0x38, 0x53, 0x39, 0x0d, - 0x27, 0x33, 0x8b, 0xe5, 0xb5, 0x42, 0x50, 0xbf, 0x87, 0x83, 0x8d, 0x7d, 0x6c, 0x87, 0xe1, 0xb3, - 0xfa, 0xfd, 0x42, 0x2c, 0x50, 0xa7, 0x59, 0x87, 0xc0, 0x7a, 0xa1, 0x36, 0x44, 0x2b, 0x07, 0x1d, - 0x13, 0x6e, 0xf6, 0x8e, 0x24, 0x7b, 0x81, 0x35, 0xfb, 0xb0, 0x97, 0x16, 0x42, 0x9f, 0x8f, 0x8c, - 0x5e, 0xc8, 0x09, 0xd3, 0x12, 0x10, 0x80, 0x62, 0x12, 0x02, 0xf0, 0x2e, 0xa0, 0x78, 0x28, 0xce, - 0x77, 0x0d, 0x4a, 0x13, 0x3c, 0x0a, 0x54, 0x77, 0x93, 0xcf, 0x57, 0xe5, 0x3c, 0xed, 0x33, 0x7d, - 0xa4, 0xa7, 0x7d, 0xd4, 0x33, 0x70, 0x8a, 0x04, 0xd8, 0x0f, 0x70, 0xe0, 0x59, 0xdd, 0x75, 0xec, - 0x77, 0x3d, 0xcb, 0x0d, 0x9c, 0x10, 0x7e, 0xa4, 0xea, 0x70, 0x3a, 0x27, 0x9f, 0xab, 0xfb, 0x2d, - 0xa8, 0x9a, 0x51, 0x72, 0xd6, 0x3e, 0x53, 0x92, 0x57, 0x8b, 0x33, 0xa8, 0xef, 0x43, 0x3d, 0x49, - 0x90, 0xb9, 0x7f, 0x83, 0xa0, 0xb4, 0x87, 0xfb, 0xae, 0xb8, 0x7e, 0x45, 0x7e, 0x13, 0xad, 0xb3, - 0xb5, 0xcb, 0x23, 0x7c, 0x20, 0xce, 0x21, 0x2a, 0x34, 0xe5, 0x0b, 0xf8, 0x20, 0x6c, 0x9b, 0xf4, - 0xd6, 0x84, 0x67, 0x75, 0x93, 0x6d, 0xcb, 0xc8, 0x8f, 0xda, 0x46, 0xba, 0x6d, 0xc0, 0x92, 0x79, - 0xdb, 0x4e, 0xe7, 0xbe, 0x63, 0x41, 0x79, 0xc1, 0x75, 0x4c, 0xfe, 0x5b, 0xfd, 0xae, 0x02, 0x8b, - 0x29, 0x8a, 0x09, 0xcf, 0x96, 0x5e, 0x80, 0x59, 0x51, 0x6e, 0x21, 0x0d, 0xe9, 0x65, 0xb2, 0x34, - 0x41, 0x82, 0x5a, 0xb0, 0x18, 0x59, 0xb4, 0xe0, 0x2b, 0xa6, 0xfb, 0x22, 0xbe, 0x70, 0xa1, 0xd5, - 0xad, 0x77, 0x13, 0x29, 0x6a, 0x17, 0xea, 0x49, 0xaa, 0x49, 0xc6, 0xd4, 0xa1, 0xea, 0xab, 0xfe, - 0xad, 0x02, 0x33, 0x2c, 0x2d, 0xb3, 0xb3, 0xa5, 0xe9, 0xa0, 0x90, 0x9c, 0x0e, 0x5e, 0x83, 0x2a, - 0x93, 0xa3, 0x87, 0x97, 0xef, 0xe6, 0xe5, 0xed, 0x75, 0x26, 0x9a, 0x8e, 0x56, 0x18, 0x84, 0xbf, - 0x49, 0x33, 0x98, 0xbd, 0xd0, 0x95, 0x89, 0x00, 0x6e, 0x57, 0x69, 0x1a, 0x75, 0xb9, 0x24, 0x64, - 0xe6, 0x6b, 0x98, 0x31, 0xbe, 0x99, 0x6f, 0x6d, 0x2d, 0xd3, 0x97, 0x13, 0x53, 0x1b, 0xcc, 0xea, - 0x36, 0x7d, 0xda, 0x30, 0xbd, 0x31, 0x8c, 0x5e, 0x97, 0x41, 0x0a, 0xcf, 0xa4, 0x4e, 0xf8, 0x25, - 0xb6, 0xa1, 0xc7, 0x5e, 0x04, 0x67, 0x3c, 0xea, 0x07, 0x70, 0x22, 0x97, 0x06, 0xbd, 0x19, 0xbe, - 0x23, 0x6b, 0x7a, 0xd6, 0x3e, 0xdf, 0x58, 0x98, 0x97, 0xdf, 0xac, 0x58, 0xa3, 0x04, 0xeb, 0x34, - 0x5f, 0xbc, 0x30, 0xcb, 0xbe, 0x2e, 0x3d, 0x0b, 0x65, 0xf1, 0x5a, 0x3b, 0x9a, 0x85, 0xe2, 0xf6, - 0x5a, 0xbb, 0x3e, 0x45, 0x7e, 0xec, 0xac, 0xb7, 0xeb, 0x0a, 0x2a, 0x43, 0xa9, 0xb3, 0xb6, 0xdd, - 0xae, 0x17, 0x2e, 0x0d, 0xa0, 0x9e, 0x7c, 0xb0, 0x1c, 0xad, 0xc0, 0xb1, 0xb6, 0xb6, 0xd5, 0x6e, - 0xde, 0x6b, 0x6e, 0xb7, 0xb6, 0x36, 0xf5, 0xb6, 0xd6, 0x7a, 0xaf, 0xb9, 0xbd, 0x51, 0x9f, 0x42, - 0xe7, 0xe1, 0x74, 0x3c, 0xe3, 0x9d, 0xad, 0xce, 0xb6, 0xbe, 0xbd, 0xa5, 0xaf, 0x6d, 0x6d, 0x6e, - 0x37, 0x5b, 0x9b, 0x1b, 0x5a, 0x5d, 0x41, 0xa7, 0xe1, 0x44, 0x9c, 0xe4, 0x4e, 0x6b, 0xbd, 0xa5, - 0x6d, 0xac, 0x91, 0xdf, 0xcd, 0xfb, 0xf5, 0xc2, 0xa5, 0x37, 0xa1, 0x26, 0x5d, 0x37, 0x22, 0x55, - 0x6a, 0x6f, 0xad, 0xd7, 0xa7, 0x50, 0x0d, 0x2a, 0x71, 0x39, 0x65, 0x28, 0x6d, 0x6e, 0xad, 0x6f, - 0xd4, 0x0b, 0x08, 0x60, 0x66, 0xbb, 0xa9, 0xdd, 0xdb, 0xd8, 0xae, 0x17, 0x2f, 0xdd, 0x4a, 0xbe, - 0x99, 0x82, 0xd1, 0x22, 0xd4, 0x3a, 0xcd, 0xcd, 0xf5, 0x3b, 0x5b, 0x5f, 0xd6, 0xb5, 0x8d, 0xe6, - 0xfa, 0xfb, 0xf5, 0x29, 0xb4, 0x04, 0x75, 0x91, 0xb4, 0xb9, 0xb5, 0xcd, 0x52, 0x95, 0x4b, 0x8f, - 0x12, 0x6b, 0x56, 0x8c, 0x8e, 0xc3, 0x62, 0x58, 0xa4, 0xbe, 0xa6, 0x6d, 0x34, 0xb7, 0x37, 0x48, - 0x4d, 0xa4, 0x64, 0x6d, 0x67, 0x73, 0xb3, 0xb5, 0x79, 0xaf, 0xae, 0x10, 0xa9, 0x51, 0xf2, 0xc6, - 0x97, 0x5b, 0x84, 0xb8, 0x20, 0x13, 0xef, 0x6c, 0x7e, 0x61, 0x73, 0xeb, 0x4b, 0x9b, 0xf5, 0xe2, - 0xa5, 0x5f, 0x8e, 0x63, 0x5a, 0xa2, 0x79, 0xe5, 0x24, 0xac, 0xa4, 0x4a, 0xd4, 0x37, 0xde, 0xdb, - 0xd8, 0xdc, 0xae, 0x4f, 0xc9, 0x99, 0x9d, 0xed, 0xa6, 0x16, 0x65, 0x2a, 0xc9, 0xcc, 0xad, 0x76, - 0x3b, 0xcc, 0x2c, 0xc8, 0x99, 0xeb, 0x1b, 0xf7, 0x37, 0x22, 0xce, 0xe2, 0xa5, 0xa7, 0x01, 0xa2, - 0xf1, 0x83, 0xaa, 0x30, 0xbb, 0xb6, 0xb5, 0xb3, 0xb9, 0xbd, 0xa1, 0xd5, 0xa7, 0x50, 0x05, 0xa6, - 0xef, 0x35, 0x77, 0xee, 0x6d, 0xd4, 0x95, 0x4b, 0x17, 0x61, 0x2e, 0x6e, 0x4d, 0x84, 0xae, 0xf3, - 0x7e, 0x67, 0x7b, 0xe3, 0x01, 0xd1, 0xc8, 0x1c, 0x94, 0xd7, 0xee, 0x69, 0x5b, 0x3b, 0xed, 0xbb, - 0x9d, 0xba, 0x72, 0xfd, 0x7f, 0x97, 0xc2, 0x1d, 0xfa, 0x0e, 0xf6, 0xe8, 0x25, 0x8f, 0x75, 0x98, - 0x15, 0xff, 0xdf, 0x40, 0xda, 0xb5, 0x91, 0xff, 0x1f, 0x43, 0xe3, 0x64, 0x66, 0x1e, 0x8f, 0x0b, - 0xa6, 0xd0, 0x7b, 0xf4, 0xcc, 0x23, 0xf6, 0x62, 0xd9, 0xb9, 0xc4, 0x56, 0x78, 0xea, 0x61, 0xb4, - 0xc6, 0xf9, 0x11, 0x14, 0xa1, 0xdc, 0xf7, 0x61, 0x5e, 0x7e, 0x1a, 0x14, 0x9d, 0x97, 0x77, 0xea, - 0x33, 0x5e, 0x1d, 0x6d, 0xa8, 0xa3, 0x48, 0x42, 0xd1, 0x3a, 0xd4, 0x93, 0x4f, 0x83, 0x22, 0x09, - 0xe6, 0x93, 0xf3, 0xf2, 0x68, 0xe3, 0xe9, 0xd1, 0x44, 0xf1, 0x02, 0x52, 0x2f, 0x5e, 0x3e, 0x35, - 0xfa, 0x0d, 0xc1, 0x8c, 0x02, 0xf2, 0x1e, 0x1a, 0x64, 0xca, 0x91, 0x67, 0x4d, 0x94, 0x78, 0x64, - 0x32, 0xe3, 0x3d, 0x3a, 0x59, 0x39, 0xd9, 0x6f, 0x91, 0xa9, 0x53, 0xe8, 0xe7, 0x60, 0x21, 0x81, - 0xe0, 0x47, 0x12, 0x63, 0xf6, 0xc5, 0x84, 0xc6, 0x53, 0x23, 0x69, 0xe4, 0x5e, 0x8d, 0xa3, 0xf4, - 0x93, 0xbd, 0x9a, 0x81, 0xfe, 0x4f, 0xf6, 0x6a, 0x26, 0xc8, 0x9f, 0x1a, 0xa2, 0x84, 0xc8, 0x97, - 0x0d, 0x31, 0xeb, 0x06, 0x40, 0xe3, 0xfc, 0x08, 0x8a, 0xb8, 0x42, 0x12, 0x98, 0x7c, 0x59, 0x21, - 0xd9, 0x68, 0xff, 0xc6, 0x53, 0x23, 0x69, 0x92, 0x3d, 0x19, 0x01, 0x7e, 0xd3, 0x3d, 0x99, 0xc2, - 0xa3, 0xa7, 0x7b, 0x32, 0x8d, 0x17, 0xe6, 0x3d, 0x99, 0x80, 0xe8, 0xaa, 0x23, 0x31, 0x82, 0x59, - 0x3d, 0x99, 0x8d, 0x23, 0x54, 0xa7, 0xd0, 0x63, 0x58, 0xcd, 0x83, 0x82, 0xa1, 0xe7, 0x0f, 0x81, - 0x58, 0x6b, 0xbc, 0x30, 0x19, 0x71, 0x58, 0x30, 0x06, 0x94, 0x5e, 0x3e, 0xa1, 0x67, 0x64, 0x75, - 0xe7, 0x2c, 0xcf, 0x1a, 0xcf, 0x8e, 0x23, 0x0b, 0x8b, 0xb9, 0x07, 0x65, 0x01, 0x32, 0x43, 0x92, - 0x0b, 0x4c, 0x80, 0xdb, 0x1a, 0xa7, 0xb2, 0x33, 0x43, 0x41, 0xaf, 0x43, 0x89, 0xa4, 0xa2, 0x95, - 0x24, 0x9d, 0x10, 0xb0, 0x9a, 0xce, 0x08, 0x99, 0x9b, 0x30, 0xc3, 0xd0, 0x53, 0x48, 0x3a, 0xd8, - 0x94, 0xd0, 0x5d, 0x8d, 0x46, 0x56, 0x56, 0x28, 0xa2, 0xcd, 0xfe, 0x5b, 0x0c, 0x07, 0x43, 0xa1, - 0x33, 0xc9, 0x47, 0xc1, 0x65, 0xd4, 0x55, 0xe3, 0x6c, 0x6e, 0x7e, 0xdc, 0x66, 0x13, 0xbb, 0xa4, - 0xe7, 0x47, 0xec, 0xfa, 0x67, 0xd9, 0x6c, 0xf6, 0x59, 0x02, 0xeb, 0xdc, 0xf4, 0x59, 0x03, 0x7a, - 0x26, 0xd7, 0xde, 0xa5, 0x22, 0x9e, 0x1d, 0x47, 0x16, 0x1f, 0x1a, 0xc9, 0xd7, 0xbd, 0xd4, 0x51, - 0x2f, 0xef, 0x65, 0x0d, 0x8d, 0x9c, 0x17, 0xfd, 0xd4, 0x29, 0xb4, 0x07, 0xc7, 0x32, 0x9e, 0xfc, - 0x43, 0xcf, 0xe6, 0xfb, 0x5f, 0xa9, 0x94, 0xe7, 0xc6, 0xd2, 0xc5, 0x4b, 0xca, 0x40, 0x40, 0xc8, - 0x25, 0xe5, 0x43, 0x30, 0xe4, 0x92, 0x46, 0x41, 0x29, 0xa8, 0x21, 0x72, 0x1f, 0x72, 0x22, 0xeb, - 0xc0, 0x3c, 0xc3, 0x10, 0x53, 0x1e, 0x63, 0x0f, 0x8e, 0x65, 0x6c, 0x31, 0xc8, 0x95, 0xcd, 0xdf, - 0xfa, 0x90, 0x2b, 0x3b, 0x6a, 0xaf, 0x62, 0x0a, 0x7d, 0x00, 0xe8, 0x1e, 0x0e, 0xe4, 0x50, 0xce, - 0x47, 0xd2, 0x40, 0x4d, 0xee, 0x66, 0xe4, 0xd8, 0xa7, 0xb4, 0xad, 0xa1, 0x4e, 0x5d, 0x53, 0x90, - 0xcd, 0x2e, 0x09, 0xa5, 0x16, 0xe3, 0xe8, 0x42, 0xb2, 0xdb, 0xf2, 0xd6, 0xf3, 0x8d, 0x8b, 0x13, - 0x50, 0x86, 0x6d, 0xb1, 0x93, 0xcf, 0xcb, 0x8a, 0xf5, 0xe0, 0x85, 0x7c, 0x33, 0x91, 0xd7, 0xd8, - 0xe9, 0xf2, 0x72, 0x57, 0xdb, 0x61, 0x3c, 0x17, 0x33, 0xa6, 0x73, 0xf9, 0x78, 0x9c, 0x9c, 0x78, - 0x2e, 0xcb, 0x80, 0xae, 0xff, 0x76, 0x11, 0xe6, 0x18, 0x6e, 0x89, 0x87, 0x9f, 0x0f, 0x00, 0x22, - 0x08, 0x20, 0x3a, 0x9d, 0xac, 0xa3, 0x84, 0xab, 0x6c, 0x9c, 0xc9, 0xcb, 0x8e, 0xbb, 0xb9, 0x18, - 0xb4, 0x4e, 0x76, 0x73, 0x69, 0xa4, 0xa0, 0xec, 0xe6, 0x32, 0x30, 0x79, 0xea, 0x14, 0x7a, 0x17, - 0x2a, 0x21, 0x92, 0x4b, 0x36, 0x9e, 0x24, 0x24, 0xad, 0x71, 0x3a, 0x27, 0x37, 0x5e, 0xbb, 0x18, - 0x40, 0x4b, 0xae, 0x5d, 0x1a, 0xfc, 0x25, 0xd7, 0x2e, 0x0b, 0xd9, 0x15, 0xb5, 0x97, 0x81, 0x02, - 0x32, 0xda, 0x2b, 0x81, 0x44, 0x32, 0xda, 0x2b, 0xa3, 0x09, 0xd4, 0xa9, 0x3b, 0xb7, 0x7f, 0xf0, - 0xe3, 0x33, 0xca, 0x0f, 0x7f, 0x7c, 0x66, 0xea, 0x17, 0x3f, 0x3a, 0xa3, 0xfc, 0xe0, 0xa3, 0x33, - 0xca, 0x3f, 0x7e, 0x74, 0x46, 0xf9, 0xd1, 0x47, 0x67, 0x94, 0x6f, 0xfe, 0xdb, 0x99, 0xa9, 0x0f, - 0xd4, 0x47, 0x37, 0xfc, 0x2b, 0x96, 0x73, 0xb5, 0xeb, 0x59, 0x97, 0x0d, 0xd7, 0xba, 0xea, 0x3e, - 0xea, 0x5d, 0x35, 0x5c, 0xcb, 0xbf, 0xca, 0xe5, 0x5e, 0xdd, 0x7f, 0xf1, 0xe1, 0x0c, 0xfd, 0x0f, - 0x63, 0x2f, 0xfd, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf6, 0x60, 0x6a, 0x8a, 0x1b, 0x6e, 0x00, - 0x00, + // 7085 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x7d, 0x5b, 0x6c, 0x1c, 0xc9, + 0x75, 0x28, 0x7b, 0x66, 0x48, 0xce, 0x9c, 0xe1, 0x90, 0xc3, 0x12, 0x45, 0x52, 0xa3, 0x77, 0xef, + 0x4b, 0xd2, 0xae, 0x1e, 0xab, 0xd5, 0xee, 0x4a, 0xda, 0x97, 0x46, 0x24, 0xa5, 0x9d, 0xb5, 0x48, + 0x8e, 0x7b, 0xc8, 0xb5, 0x77, 0x7d, 0xe1, 0xbe, 0xad, 0xe9, 0xe2, 0xb0, 0x57, 0x33, 0xdd, 0xed, + 0xee, 0x1e, 0x49, 0xf4, 0xc7, 0xc5, 0xfd, 0xba, 0xb8, 0xf1, 0x97, 0x81, 0xc4, 0x08, 0x62, 0x04, + 0x09, 0x1c, 0x20, 0x48, 0xfe, 0x92, 0x18, 0x48, 0xe2, 0x20, 0x01, 0x02, 0x04, 0x89, 0xe1, 0x04, + 0x08, 0x90, 0x8f, 0x04, 0xf0, 0x47, 0x80, 0xd8, 0x9b, 0x00, 0x01, 0xf2, 0x19, 0xf8, 0x23, 0x3f, + 0x89, 0x83, 0x7a, 0x75, 0x77, 0xf5, 0x63, 0x66, 0xc8, 0xdd, 0xec, 0xae, 0xbf, 0x38, 0x5d, 0x75, + 0xce, 0xa9, 0x53, 0xa7, 0x4e, 0x9d, 0x3a, 0xa7, 0xea, 0x54, 0x11, 0x2a, 0x86, 0x6b, 0x5d, 0x71, + 0x3d, 0x27, 0x70, 0x10, 0x78, 0x43, 0x3b, 0xb0, 0x06, 0xf8, 0xca, 0xe3, 0x97, 0x1b, 0x97, 0x7b, + 0x56, 0xb0, 0x3f, 0x7c, 0x78, 0xa5, 0xeb, 0x0c, 0xae, 0xf6, 0x9c, 0x9e, 0x73, 0x95, 0x82, 0x3c, + 0x1c, 0xee, 0xd1, 0x2f, 0xfa, 0x41, 0x7f, 0x31, 0x54, 0xf5, 0x12, 0xcc, 0xbf, 0x8f, 0x3d, 0xdf, + 0x72, 0x6c, 0x0d, 0x7f, 0x63, 0x88, 0xfd, 0x00, 0xad, 0xc2, 0xec, 0x63, 0x56, 0xb2, 0xaa, 0x9c, + 0x53, 0x2e, 0x54, 0x34, 0xf1, 0xa9, 0xfe, 0x8e, 0x02, 0x0b, 0x21, 0xb0, 0xef, 0x3a, 0xb6, 0x8f, + 0xf3, 0xa1, 0xd1, 0x79, 0x98, 0xe3, 0x6c, 0xe9, 0xb6, 0x31, 0xc0, 0xab, 0x05, 0x5a, 0x5d, 0xe5, + 0x65, 0x5b, 0xc6, 0x00, 0xa3, 0x17, 0x60, 0x41, 0x80, 0x08, 0x22, 0x45, 0x0a, 0x35, 0xcf, 0x8b, + 0x79, 0x6b, 0xe8, 0x0a, 0x1c, 0x13, 0x80, 0x86, 0x6b, 0x85, 0xc0, 0x25, 0x0a, 0xbc, 0xc8, 0xab, + 0x9a, 0xae, 0xc5, 0xe1, 0xd5, 0xaf, 0x41, 0x65, 0x7d, 0xab, 0xb3, 0xe6, 0xd8, 0x7b, 0x56, 0x8f, + 0xb0, 0xe8, 0x63, 0x8f, 0xe0, 0xac, 0x2a, 0xe7, 0x8a, 0x84, 0x45, 0xfe, 0x89, 0x1a, 0x50, 0xf6, + 0xb1, 0xe1, 0x75, 0xf7, 0xb1, 0xbf, 0x5a, 0xa0, 0x55, 0xe1, 0x37, 0xc1, 0x72, 0xdc, 0xc0, 0x72, + 0x6c, 0x7f, 0xb5, 0xc8, 0xb0, 0xf8, 0xa7, 0xfa, 0xeb, 0x0a, 0x54, 0xdb, 0x8e, 0x17, 0x6c, 0x1a, + 0xae, 0x6b, 0xd9, 0x3d, 0x74, 0x0d, 0xca, 0x54, 0x96, 0x5d, 0xa7, 0x4f, 0x65, 0x30, 0x7f, 0x7d, + 0xe9, 0x4a, 0x34, 0x20, 0x57, 0xda, 0xbc, 0x4e, 0x0b, 0xa1, 0xd0, 0x73, 0x30, 0xdf, 0x75, 0xec, + 0xc0, 0xb0, 0x6c, 0xec, 0xe9, 0xae, 0xe3, 0x05, 0x54, 0x38, 0xd3, 0x5a, 0x2d, 0x2c, 0x25, 0xf4, + 0xd1, 0x49, 0xa8, 0xec, 0x3b, 0x7e, 0xc0, 0x20, 0x8a, 0x14, 0xa2, 0x4c, 0x0a, 0x68, 0xe5, 0x0a, + 0xcc, 0xd2, 0x4a, 0xcb, 0xe5, 0x62, 0x98, 0x21, 0x9f, 0x2d, 0x57, 0xfd, 0xf7, 0x02, 0x4c, 0x6f, + 0x3a, 0x43, 0x3b, 0x48, 0x34, 0x63, 0x04, 0xfb, 0x7c, 0x88, 0x62, 0xcd, 0x18, 0xc1, 0x7e, 0xd4, + 0x0c, 0x81, 0x60, 0xa3, 0xc4, 0x9a, 0x21, 0x95, 0x0d, 0x28, 0x7b, 0xd8, 0x30, 0x1d, 0xbb, 0x7f, + 0x40, 0x59, 0x28, 0x6b, 0xe1, 0x37, 0x19, 0x3e, 0x1f, 0xf7, 0x2d, 0x7b, 0xf8, 0x54, 0xf7, 0x70, + 0xdf, 0x78, 0x88, 0xfb, 0x94, 0x95, 0xb2, 0x36, 0xcf, 0x8b, 0x35, 0x56, 0x8a, 0xde, 0x86, 0xaa, + 0xeb, 0x39, 0xae, 0xd1, 0x33, 0x88, 0x04, 0x57, 0xa7, 0xa9, 0x90, 0x4e, 0xc5, 0x85, 0x44, 0x19, + 0x6e, 0x47, 0x30, 0x5a, 0x1c, 0x01, 0xbd, 0x0e, 0xd5, 0xa1, 0x65, 0x72, 0x79, 0xfb, 0xab, 0x33, + 0xe7, 0x8a, 0x17, 0xaa, 0xd7, 0x8f, 0xc7, 0xf1, 0x5b, 0xeb, 0xbc, 0x56, 0x8b, 0x43, 0x12, 0xc4, + 0x5e, 0x0c, 0x71, 0x76, 0x24, 0x62, 0x0c, 0x92, 0x2a, 0x1c, 0xee, 0x0e, 0x3d, 0xdf, 0x7a, 0x8c, + 0x75, 0xd2, 0x61, 0x9d, 0x4a, 0xa0, 0x4c, 0xbb, 0xb7, 0x18, 0x56, 0x69, 0xd8, 0x30, 0xb7, 0xed, + 0xfe, 0x81, 0xaa, 0x43, 0x25, 0xa4, 0x14, 0x0d, 0x8d, 0x49, 0x05, 0x5e, 0xe3, 0x43, 0x63, 0x92, + 0x29, 0x11, 0x0d, 0x88, 0x65, 0x52, 0x61, 0xd7, 0xb4, 0x6a, 0x58, 0xd6, 0x32, 0xd1, 0x32, 0xcc, + 0xf4, 0xb1, 0xdd, 0x0b, 0xf6, 0xa9, 0xb4, 0x6b, 0x1a, 0xff, 0x52, 0x7f, 0x45, 0x81, 0xda, 0xae, + 0x8f, 0x3d, 0x32, 0x6f, 0x7c, 0xd7, 0xe8, 0x62, 0x74, 0x19, 0x4a, 0x03, 0xc7, 0xc4, 0x5c, 0xe5, + 0x4e, 0xc4, 0x3b, 0x15, 0x02, 0x6d, 0x3a, 0x26, 0xd6, 0x28, 0x18, 0xba, 0x08, 0xa5, 0xa1, 0x65, + 0x32, 0x3d, 0xcf, 0x95, 0x01, 0x05, 0x21, 0xa0, 0x3d, 0x02, 0x5a, 0x1c, 0x09, 0x4a, 0x40, 0xd4, + 0x9f, 0x2b, 0xb0, 0x10, 0xb6, 0xb6, 0x4d, 0x27, 0x08, 0x7a, 0x05, 0x66, 0x6d, 0x1c, 0x3c, 0x71, + 0xbc, 0x47, 0xe3, 0x79, 0x13, 0x90, 0xe8, 0x45, 0x28, 0xba, 0x5c, 0x22, 0x23, 0x11, 0x08, 0x14, + 0x01, 0xb6, 0xdc, 0x2e, 0x95, 0xd0, 0x68, 0x60, 0xcb, 0xed, 0x12, 0xf5, 0x0e, 0x0c, 0xaf, 0x87, + 0xe9, 0x78, 0xb0, 0xa9, 0x52, 0x66, 0x05, 0x2d, 0x13, 0xdd, 0x81, 0xf9, 0xa1, 0x8f, 0x3d, 0xdb, + 0xd7, 0xc5, 0x64, 0x27, 0xca, 0x59, 0x95, 0x89, 0x4a, 0x72, 0xd7, 0x6a, 0x0c, 0x61, 0x9b, 0x5b, + 0x03, 0x15, 0xa0, 0x65, 0x07, 0xaf, 0xdd, 0x78, 0xdf, 0xe8, 0x0f, 0x31, 0x5a, 0x82, 0xe9, 0xc7, + 0xe4, 0x07, 0xed, 0x79, 0x51, 0x63, 0x1f, 0xea, 0xf7, 0xa6, 0xe1, 0xe4, 0x03, 0x32, 0x21, 0x3a, + 0x86, 0x6d, 0x3e, 0x74, 0x9e, 0x76, 0x88, 0xfe, 0x58, 0xc1, 0xc1, 0x9a, 0x63, 0x07, 0xf8, 0x69, + 0x80, 0xde, 0x85, 0x45, 0x5b, 0xd0, 0x0f, 0x19, 0x51, 0x28, 0x23, 0x27, 0x33, 0x7b, 0xc7, 0x1a, + 0xd7, 0xea, 0xb6, 0x5c, 0xe0, 0xa3, 0xbb, 0xd1, 0x94, 0x14, 0x74, 0x0a, 0xe9, 0x0e, 0x75, 0x36, + 0x28, 0x37, 0x9c, 0x8a, 0x98, 0xad, 0x82, 0xc6, 0x6b, 0x40, 0x8c, 0xb4, 0x6e, 0xf8, 0x3a, 0xe9, + 0x29, 0x95, 0x72, 0xf5, 0xfa, 0xb2, 0xa4, 0x05, 0x61, 0x87, 0xb5, 0x8a, 0x37, 0xb4, 0x9b, 0x3e, + 0x91, 0x10, 0xba, 0x49, 0x0d, 0x3e, 0xc1, 0xeb, 0x79, 0xce, 0xd0, 0xa5, 0x93, 0x25, 0x1f, 0x11, + 0x28, 0xe2, 0x7d, 0x02, 0x49, 0xd7, 0x01, 0x6e, 0x54, 0x74, 0xcf, 0x71, 0x82, 0x3d, 0x5f, 0x18, + 0x12, 0x51, 0xac, 0xd1, 0x52, 0x74, 0x15, 0x8e, 0xf9, 0x43, 0xd7, 0xed, 0xe3, 0x01, 0xb6, 0x03, + 0xa3, 0xcf, 0x1a, 0x22, 0x63, 0x56, 0xbc, 0x50, 0xd4, 0x50, 0xbc, 0x8a, 0x12, 0xf6, 0xd1, 0x43, + 0x68, 0x64, 0x20, 0xe8, 0xae, 0xd3, 0xb7, 0xba, 0x07, 0xab, 0x55, 0xaa, 0x40, 0xcf, 0x4a, 0xa2, + 0x49, 0xd1, 0x68, 0x53, 0x58, 0x6d, 0xd5, 0xcf, 0xa9, 0x41, 0x67, 0x00, 0x5c, 0xcf, 0x7a, 0x6c, + 0xf5, 0x71, 0x0f, 0x9b, 0xab, 0x33, 0x94, 0xf1, 0x58, 0x09, 0x7a, 0x95, 0xac, 0x3f, 0xdd, 0xae, + 0x33, 0x70, 0x57, 0x2b, 0xe9, 0x31, 0x15, 0xba, 0xd0, 0xf6, 0x9c, 0x3d, 0xab, 0x8f, 0x35, 0x01, + 0x8b, 0x5e, 0x87, 0xb2, 0xe1, 0xba, 0x86, 0x37, 0x70, 0xbc, 0x55, 0x18, 0x8f, 0x17, 0x02, 0xa3, + 0x1b, 0xb0, 0xc4, 0x69, 0xe8, 0x2e, 0xab, 0x64, 0xa6, 0x7d, 0x96, 0xe8, 0xfe, 0xdd, 0xc2, 0xaa, + 0xa2, 0x21, 0x5e, 0xcf, 0x71, 0x89, 0xa1, 0x57, 0xff, 0x52, 0x81, 0x85, 0x04, 0x4d, 0xf4, 0x1e, + 0xcc, 0x09, 0x0a, 0xc1, 0x81, 0x2b, 0x4c, 0xcd, 0x0b, 0x23, 0xd8, 0xb8, 0xc2, 0xff, 0xee, 0x1c, + 0xb8, 0x98, 0xda, 0x70, 0xf1, 0x81, 0x9e, 0x81, 0x5a, 0xdf, 0xe9, 0x1a, 0x7d, 0x6a, 0x19, 0x3d, + 0xbc, 0xc7, 0x57, 0x9a, 0xb9, 0xb0, 0x50, 0xc3, 0x7b, 0xea, 0x1d, 0xa8, 0xc6, 0x08, 0x20, 0x04, + 0xf3, 0x1a, 0x6b, 0x6a, 0x1d, 0xef, 0x19, 0xc3, 0x7e, 0x50, 0x9f, 0x42, 0xf3, 0x00, 0xbb, 0x76, + 0x97, 0xac, 0xec, 0x36, 0x36, 0xeb, 0x0a, 0xaa, 0x41, 0xe5, 0x81, 0x20, 0x51, 0x2f, 0xa8, 0xdf, + 0x2d, 0xc2, 0x71, 0xaa, 0xdc, 0x6d, 0xc7, 0xe4, 0xb3, 0x8d, 0xbb, 0x01, 0xcf, 0x40, 0xad, 0x4b, + 0x87, 0x5f, 0x77, 0x0d, 0x0f, 0xdb, 0x01, 0x5f, 0x0c, 0xe7, 0x58, 0x61, 0x9b, 0x96, 0x21, 0x0d, + 0xea, 0x3e, 0xef, 0x91, 0xde, 0x65, 0xb3, 0x93, 0x4f, 0x20, 0xa9, 0xd7, 0x23, 0x26, 0xb3, 0xb6, + 0xe0, 0xa7, 0x66, 0xf7, 0xac, 0x7f, 0xe0, 0x77, 0x83, 0xbe, 0xb0, 0xa8, 0x57, 0x52, 0xa4, 0x92, + 0xcc, 0x5e, 0xe9, 0x30, 0x84, 0x0d, 0x3b, 0xf0, 0x0e, 0x34, 0x81, 0x8e, 0xde, 0x81, 0xb2, 0xf3, + 0x18, 0x7b, 0xfb, 0xd8, 0x60, 0x96, 0xac, 0x7a, 0xfd, 0x99, 0x14, 0xa9, 0x35, 0xb1, 0x98, 0x68, + 0xd8, 0x77, 0x86, 0x5e, 0x17, 0xfb, 0x5a, 0x88, 0x84, 0x9a, 0x50, 0xf1, 0x44, 0x31, 0xb7, 0x74, + 0x13, 0x51, 0x88, 0xb0, 0x1a, 0xb7, 0x61, 0x2e, 0xce, 0x1c, 0xaa, 0x43, 0xf1, 0x11, 0x3e, 0xe0, + 0xc2, 0x24, 0x3f, 0x23, 0x1b, 0xc8, 0x46, 0x98, 0x7d, 0xdc, 0x2e, 0xdc, 0x54, 0x54, 0x0f, 0x50, + 0xd4, 0xd3, 0x4d, 0x1c, 0x18, 0xa6, 0x11, 0x18, 0x08, 0x41, 0x89, 0x3a, 0x88, 0x8c, 0x04, 0xfd, + 0x4d, 0xa8, 0x0e, 0xf9, 0x72, 0x50, 0xd1, 0xc8, 0x4f, 0x74, 0x0a, 0x2a, 0xa1, 0xb5, 0xe3, 0x5e, + 0x62, 0x54, 0x40, 0xbc, 0x35, 0x23, 0x08, 0xf0, 0xc0, 0x0d, 0xa8, 0x60, 0x6a, 0x9a, 0xf8, 0x54, + 0x7f, 0x69, 0x1a, 0xea, 0x29, 0x5d, 0xb8, 0x0d, 0xe5, 0x01, 0x6f, 0x9e, 0xdb, 0xd9, 0x33, 0x92, + 0xcb, 0x96, 0x62, 0x52, 0x0b, 0xe1, 0x89, 0x47, 0x44, 0x74, 0x2d, 0xe6, 0xd3, 0x86, 0xdf, 0x4c, + 0xc9, 0x7b, 0xba, 0x69, 0x79, 0xb8, 0x1b, 0x38, 0xde, 0x01, 0x67, 0x74, 0xae, 0xef, 0xf4, 0xd6, + 0x45, 0x19, 0xba, 0x01, 0x60, 0xda, 0xbe, 0x4e, 0x75, 0xb8, 0xc7, 0xc7, 0x51, 0x5a, 0x64, 0x43, + 0xd7, 0x55, 0xab, 0x98, 0xb6, 0xcf, 0x59, 0x7e, 0x13, 0x6a, 0xc4, 0x0f, 0xd4, 0x07, 0xc2, 0x99, + 0x99, 0xa6, 0xba, 0xb4, 0x22, 0xf3, 0x1d, 0x7a, 0xa5, 0xda, 0x9c, 0x1b, 0x7d, 0xf8, 0xe8, 0x0e, + 0xcc, 0x50, 0x57, 0x4c, 0x38, 0x4f, 0x17, 0xb2, 0xbb, 0xcb, 0xb5, 0xef, 0x01, 0x05, 0x65, 0xca, + 0xc7, 0xf1, 0xd0, 0x36, 0x54, 0x0d, 0xdb, 0x76, 0x02, 0x83, 0xad, 0x2a, 0xcc, 0x95, 0xba, 0x3c, + 0x92, 0x4c, 0x33, 0x82, 0x67, 0xb4, 0xe2, 0x14, 0xd0, 0xeb, 0x30, 0x4d, 0x97, 0x1d, 0xbe, 0x4e, + 0x9c, 0x1f, 0x3b, 0x29, 0x34, 0x06, 0x8f, 0xde, 0x82, 0xd9, 0x27, 0x96, 0x6d, 0x3a, 0x4f, 0x7c, + 0x6e, 0x4f, 0x25, 0x15, 0xfe, 0x0a, 0xab, 0x4a, 0x21, 0x0b, 0x9c, 0xc6, 0x2d, 0xa8, 0xc6, 0xfa, + 0x77, 0x18, 0xfd, 0x6d, 0xbc, 0x0d, 0xf5, 0x64, 0x9f, 0x0e, 0xa5, 0xff, 0x43, 0x58, 0xd2, 0x86, + 0x76, 0xc4, 0x9a, 0x08, 0xb9, 0x6e, 0xc0, 0x0c, 0xd7, 0x06, 0xa6, 0x8c, 0xa7, 0x46, 0x89, 0x55, + 0xe3, 0xb0, 0xf1, 0xe8, 0x69, 0xdf, 0xb0, 0xcd, 0x3e, 0xf6, 0x78, 0x8b, 0x22, 0x7a, 0x7a, 0x97, + 0x95, 0xaa, 0x6f, 0xc1, 0xf1, 0x44, 0xb3, 0x3c, 0x78, 0x7b, 0x16, 0xe6, 0x5d, 0xc7, 0xd4, 0x7d, + 0x56, 0x2c, 0xfc, 0xd5, 0x0a, 0xd1, 0x1d, 0x01, 0xdb, 0x32, 0x09, 0x7a, 0x27, 0x70, 0xdc, 0x34, + 0xdb, 0x93, 0xa1, 0xaf, 0xc2, 0x72, 0x12, 0x9d, 0x35, 0xaf, 0xbe, 0x03, 0x2b, 0x1a, 0x1e, 0x38, + 0x8f, 0xf1, 0x51, 0x49, 0x37, 0x60, 0x35, 0x4d, 0x80, 0x13, 0xff, 0x00, 0x56, 0xa2, 0xd2, 0x4e, + 0x60, 0x04, 0x43, 0xff, 0x50, 0xc4, 0x79, 0x64, 0xfb, 0xd0, 0xf1, 0xd9, 0x40, 0x96, 0x35, 0xf1, + 0xa9, 0xae, 0xc0, 0x74, 0xdb, 0x31, 0x5b, 0x6d, 0x34, 0x0f, 0x05, 0xcb, 0xe5, 0xc8, 0x05, 0xcb, + 0x55, 0xbb, 0xf1, 0x36, 0xb7, 0x98, 0x67, 0xcb, 0x9a, 0x4e, 0x82, 0xa2, 0x9b, 0x30, 0x6f, 0x98, + 0xa6, 0x45, 0x14, 0xc9, 0xe8, 0xeb, 0x96, 0x2b, 0x1c, 0xf3, 0xc5, 0xc4, 0xd0, 0xb7, 0xda, 0x5a, + 0x2d, 0x02, 0x6c, 0xb9, 0xbe, 0x7a, 0x17, 0x2a, 0x51, 0x10, 0xf0, 0x6a, 0x14, 0xa5, 0x16, 0xc6, + 0xfb, 0x8b, 0x61, 0x08, 0xbb, 0x95, 0x5a, 0x24, 0x39, 0x9b, 0xaf, 0x02, 0x84, 0x46, 0x55, 0xb8, + 0xa0, 0xc7, 0x33, 0x49, 0x6a, 0x31, 0x40, 0xf5, 0x9f, 0x4a, 0x71, 0x23, 0x1b, 0xeb, 0xb2, 0x19, + 0x76, 0xd9, 0x94, 0x8c, 0x6e, 0xe1, 0x90, 0x46, 0xf7, 0x65, 0x98, 0xf6, 0x03, 0x23, 0xc0, 0xdc, + 0xe7, 0x3f, 0x99, 0x8d, 0x48, 0x1a, 0xc6, 0x1a, 0x83, 0x44, 0xa7, 0x01, 0xba, 0x1e, 0x36, 0x02, + 0x6c, 0xea, 0x06, 0x5b, 0x15, 0x8a, 0x5a, 0x85, 0x97, 0x34, 0x03, 0x62, 0x45, 0x44, 0x94, 0x92, + 0xb1, 0x10, 0xe6, 0x0c, 0x63, 0x14, 0xaf, 0x84, 0xd6, 0x6b, 0x66, 0xac, 0xf5, 0xe2, 0xa8, 0xdc, + 0x7a, 0x45, 0x96, 0x78, 0x76, 0x94, 0x25, 0x66, 0x48, 0x93, 0x58, 0xe2, 0xf2, 0x28, 0x4b, 0xcc, + 0xc9, 0x8c, 0xb6, 0xc4, 0x19, 0x86, 0xa4, 0x92, 0x65, 0x48, 0x3e, 0x4f, 0xd3, 0xf9, 0x27, 0x05, + 0x58, 0x4d, 0xcf, 0x67, 0x6e, 0xc7, 0x6e, 0xc0, 0x8c, 0x4f, 0x4b, 0x46, 0xdb, 0x4f, 0x8e, 0xc5, + 0x61, 0xd1, 0x5d, 0x28, 0x59, 0xf6, 0x9e, 0xc3, 0x27, 0xde, 0x95, 0x91, 0x38, 0xbc, 0xa5, 0x2b, + 0x2d, 0x7b, 0xcf, 0x61, 0x12, 0xa4, 0xb8, 0xe8, 0x01, 0x1c, 0x0b, 0xa3, 0x77, 0x5f, 0x67, 0x84, + 0xb1, 0xf0, 0xf3, 0x24, 0x2d, 0x0d, 0xbd, 0x2a, 0x4e, 0x11, 0x45, 0x78, 0x1d, 0x8e, 0x46, 0x7c, + 0x1c, 0x02, 0xee, 0x07, 0xc6, 0xc0, 0x15, 0x1a, 0x1b, 0x16, 0x34, 0x5e, 0x87, 0x4a, 0xd8, 0xfc, + 0xa1, 0x64, 0xd7, 0x82, 0xa5, 0xc4, 0x1c, 0x61, 0xc1, 0x6a, 0x38, 0xa9, 0x94, 0x49, 0x27, 0x95, + 0xfa, 0x33, 0x25, 0x3e, 0xd1, 0xef, 0x59, 0xfd, 0x00, 0x7b, 0xa9, 0x89, 0xfe, 0x9a, 0xa0, 0xcb, + 0x66, 0xf9, 0xb9, 0x11, 0x74, 0x59, 0x2c, 0xc8, 0x67, 0xec, 0xfb, 0x30, 0x4f, 0x55, 0x5c, 0xf7, + 0x71, 0x9f, 0xfa, 0x4a, 0x5c, 0x8e, 0x57, 0xb3, 0x09, 0xb0, 0xd6, 0xd9, 0x14, 0xe9, 0x70, 0x0c, + 0x36, 0x36, 0xb5, 0x7e, 0xbc, 0xac, 0x71, 0x07, 0x50, 0x1a, 0xe8, 0x50, 0x12, 0xdc, 0x24, 0xf6, + 0xd2, 0x0f, 0x32, 0x57, 0xee, 0x3d, 0xca, 0xc6, 0x68, 0xcd, 0x63, 0xac, 0x6a, 0x1c, 0x56, 0xfd, + 0x87, 0x22, 0x40, 0x54, 0xf9, 0x05, 0x37, 0x94, 0xb7, 0x43, 0x83, 0xc5, 0x3c, 0x4e, 0x35, 0x9b, + 0x64, 0xa6, 0xa9, 0x6a, 0xc9, 0xa6, 0x8a, 0xf9, 0x9e, 0x2f, 0xe4, 0x10, 0x38, 0xb4, 0x91, 0x9a, + 0xfd, 0xa2, 0x19, 0xa9, 0x7b, 0xb0, 0x9c, 0x54, 0x13, 0x6e, 0xa1, 0x5e, 0x82, 0x69, 0x2b, 0xc0, + 0x03, 0xb6, 0x03, 0x9d, 0xd8, 0x14, 0x89, 0x81, 0x33, 0x20, 0xf5, 0x6d, 0x58, 0x96, 0xc7, 0xea, + 0x70, 0xae, 0x8b, 0xfa, 0x20, 0xe9, 0xfb, 0x44, 0xa6, 0x92, 0xeb, 0x47, 0xe6, 0xf6, 0x52, 0x12, + 0x87, 0x41, 0xaa, 0x3f, 0x54, 0xe0, 0x78, 0xa2, 0x2a, 0x67, 0xe2, 0x7f, 0x2d, 0x35, 0x81, 0x99, + 0x6d, 0xbd, 0x31, 0xa2, 0x95, 0xcf, 0x70, 0x16, 0x7f, 0x05, 0x1a, 0xf2, 0xf0, 0x48, 0xa2, 0xbd, + 0x95, 0x98, 0xca, 0xe7, 0xc7, 0x32, 0x1d, 0xce, 0xe7, 0x36, 0x9c, 0xcc, 0x24, 0x9c, 0x96, 0x79, + 0x71, 0x42, 0x99, 0xff, 0x47, 0x21, 0x6e, 0xb3, 0x9b, 0x41, 0xe0, 0x59, 0x0f, 0x87, 0x01, 0xfe, + 0x74, 0x9d, 0xaa, 0xf5, 0x70, 0x66, 0x33, 0x3b, 0xfb, 0x52, 0x36, 0x66, 0xd4, 0x7a, 0xe6, 0x1c, + 0xef, 0xc8, 0x73, 0xbc, 0x44, 0x49, 0xbd, 0x3c, 0x96, 0xd4, 0xc8, 0xd9, 0xfe, 0x79, 0x4e, 0xe2, + 0xbf, 0x56, 0x60, 0x21, 0x31, 0x2a, 0xe8, 0x0e, 0x80, 0x11, 0xb2, 0xce, 0xf5, 0xe3, 0xdc, 0xb8, + 0x2e, 0x6a, 0x31, 0x1c, 0xb2, 0x26, 0x32, 0x7f, 0x31, 0x63, 0x4d, 0xcc, 0xf0, 0x17, 0x43, 0x77, + 0xf1, 0xcd, 0x28, 0xd8, 0x65, 0x1b, 0xb1, 0xea, 0xc8, 0x60, 0x97, 0xe1, 0x0a, 0x14, 0xf5, 0x97, + 0x0b, 0xb0, 0x94, 0x45, 0x1d, 0x3d, 0x0f, 0xc5, 0xae, 0x3b, 0xe4, 0x3d, 0x91, 0x8e, 0xab, 0xd6, + 0xdc, 0xe1, 0xae, 0x6f, 0xf4, 0xb0, 0x46, 0x00, 0xd0, 0x55, 0x98, 0x19, 0xe0, 0x81, 0xe3, 0x1d, + 0x70, 0xbe, 0xa5, 0xed, 0x86, 0x4d, 0x5a, 0xc3, 0xa0, 0x39, 0x18, 0xba, 0x1e, 0xb9, 0xd5, 0x8c, + 0xdf, 0x55, 0x29, 0x7a, 0x60, 0x55, 0x0c, 0x25, 0xf4, 0xa5, 0xaf, 0xc3, 0xac, 0xeb, 0x39, 0x5d, + 0xec, 0xfb, 0x7c, 0x37, 0x64, 0x35, 0x71, 0x7e, 0x46, 0xaa, 0x38, 0x0e, 0x07, 0x44, 0xb7, 0x01, + 0x22, 0x07, 0x8a, 0xaf, 0x4c, 0x8d, 0x5c, 0x7f, 0xcb, 0xd7, 0x62, 0xd0, 0xea, 0x0f, 0x0a, 0xb0, + 0x9c, 0x2d, 0x39, 0x74, 0x39, 0x2e, 0x97, 0x93, 0x19, 0xa2, 0x96, 0xc5, 0xf3, 0x5a, 0x42, 0x3c, + 0x67, 0x32, 0x30, 0xb2, 0xa4, 0x74, 0x2b, 0x29, 0xa5, 0xb3, 0x19, 0x88, 0xd9, 0xc2, 0xba, 0x95, + 0x14, 0x56, 0x16, 0x6a, 0xb6, 0xcc, 0x9a, 0x19, 0x32, 0x3b, 0x9f, 0xd5, 0xc7, 0x7c, 0xd1, 0xfd, + 0xb9, 0x02, 0x73, 0x71, 0xbe, 0x64, 0x97, 0x55, 0x49, 0xb8, 0xac, 0x68, 0x0b, 0x16, 0x4d, 0xb6, + 0x73, 0xab, 0x5b, 0x76, 0x80, 0xbd, 0x3d, 0xa3, 0x2b, 0xbc, 0xc2, 0xf3, 0x19, 0x7a, 0xd1, 0x12, + 0x30, 0x8c, 0xf1, 0x3a, 0xc7, 0x0d, 0x8b, 0x49, 0x0f, 0x42, 0x3a, 0xc2, 0x6a, 0x4d, 0x40, 0x28, + 0x86, 0xa4, 0xfe, 0xbd, 0x02, 0xc7, 0x32, 0x04, 0x3c, 0xa6, 0x23, 0xbb, 0xf9, 0x1d, 0xb9, 0x90, + 0x3f, 0x74, 0x63, 0xfb, 0xf3, 0x6e, 0x46, 0x7f, 0x26, 0xa7, 0x17, 0xef, 0xd6, 0xcf, 0x15, 0x38, + 0x9e, 0x09, 0x95, 0xb9, 0xbd, 0x7a, 0x1d, 0xca, 0xde, 0x53, 0xfd, 0xe1, 0x41, 0x80, 0xfd, 0xac, + 0x89, 0xbd, 0x1b, 0x3b, 0xa7, 0x99, 0xf5, 0x9e, 0xde, 0x25, 0x70, 0xe8, 0x06, 0x54, 0xbc, 0xa7, + 0x3a, 0xf6, 0x3c, 0xc7, 0x13, 0xb6, 0x28, 0x17, 0xa9, 0xec, 0x3d, 0xdd, 0xa0, 0x80, 0xa4, 0xa5, + 0x40, 0xb4, 0x54, 0x1a, 0xd3, 0x52, 0x10, 0xb5, 0x14, 0x84, 0x2d, 0x4d, 0x8f, 0x69, 0x29, 0xe0, + 0x2d, 0xa9, 0xbf, 0x5b, 0x80, 0x53, 0xa3, 0xc4, 0xf5, 0xa9, 0x09, 0x62, 0x03, 0x90, 0xf7, 0x54, + 0x77, 0x8d, 0xee, 0x23, 0x1c, 0xf8, 0xba, 0xe9, 0x39, 0xae, 0x8b, 0xcd, 0x71, 0x12, 0xa9, 0x7b, + 0x4f, 0xdb, 0x0c, 0x63, 0x9d, 0x21, 0x1c, 0x49, 0x32, 0x1b, 0x80, 0x82, 0x74, 0xd3, 0x63, 0x44, + 0x54, 0x0f, 0x12, 0x4d, 0xab, 0x1f, 0xc1, 0x5c, 0xdc, 0x42, 0x8c, 0xd1, 0xfd, 0x37, 0xa1, 0xc6, + 0x2d, 0x88, 0xde, 0x75, 0x86, 0x76, 0x30, 0x4e, 0x50, 0x73, 0x1c, 0x7a, 0x8d, 0x00, 0xab, 0xdf, + 0x08, 0xa7, 0xdb, 0x67, 0xd6, 0xe4, 0xff, 0x2b, 0x40, 0xa5, 0x35, 0x30, 0x7a, 0xb8, 0xe3, 0xe2, + 0x2e, 0x59, 0xe9, 0x2d, 0xf2, 0xc1, 0xc7, 0x9d, 0x7d, 0xa0, 0x77, 0x65, 0xaf, 0x85, 0xf9, 0xa9, + 0xcf, 0x4b, 0x67, 0x95, 0x82, 0xc2, 0x98, 0xc0, 0xe4, 0x1a, 0x2c, 0x0d, 0x7d, 0xec, 0xe9, 0xbe, + 0x8b, 0xbb, 0xd6, 0x9e, 0x85, 0x4d, 0x9d, 0x35, 0x87, 0x68, 0x73, 0x88, 0xd4, 0x75, 0x44, 0x15, + 0xa5, 0x99, 0x15, 0xca, 0x1c, 0xcb, 0x0c, 0x65, 0x3e, 0xa9, 0x2b, 0x73, 0x1d, 0xca, 0x5f, 0xc2, + 0x07, 0x2c, 0xd8, 0x9f, 0x10, 0x4f, 0xfd, 0x4e, 0x09, 0x56, 0x72, 0x8e, 0x81, 0x68, 0xa4, 0xe8, + 0x0e, 0x75, 0x17, 0x7b, 0x96, 0x63, 0x8a, 0x51, 0xeb, 0xba, 0xc3, 0x36, 0x2d, 0x40, 0x27, 0x81, + 0x7c, 0xe8, 0xdf, 0x18, 0x3a, 0xdc, 0x19, 0x2d, 0x6a, 0xe5, 0xae, 0x3b, 0xfc, 0x32, 0xf9, 0x16, + 0xb8, 0xfe, 0xbe, 0xe1, 0x61, 0x66, 0x3f, 0x18, 0x6e, 0x87, 0x16, 0xa0, 0x97, 0xe1, 0x38, 0x5b, + 0x1b, 0xf5, 0xbe, 0x35, 0xb0, 0x88, 0x95, 0x8d, 0x4d, 0x8d, 0xa2, 0x86, 0x58, 0xe5, 0x03, 0x52, + 0xd7, 0xb2, 0xd9, 0x64, 0x50, 0xa1, 0xe6, 0x38, 0x03, 0xdd, 0xef, 0x3a, 0x1e, 0xd6, 0x0d, 0xf3, + 0x23, 0x3a, 0x0f, 0x8a, 0x5a, 0xd5, 0x71, 0x06, 0x1d, 0x52, 0xd6, 0x34, 0x3f, 0x42, 0x67, 0xa1, + 0xda, 0x75, 0x87, 0x3e, 0x0e, 0x74, 0xf2, 0x87, 0x6e, 0xd6, 0x55, 0x34, 0x60, 0x45, 0x6b, 0xee, + 0xd0, 0x8f, 0x01, 0x0c, 0x48, 0x78, 0x36, 0x1b, 0x07, 0xd8, 0xc4, 0x03, 0x7a, 0xa2, 0xbe, 0x3f, + 0xec, 0x61, 0xd7, 0xe8, 0x61, 0xc6, 0x9a, 0xd8, 0x71, 0x93, 0x4e, 0xd4, 0xdf, 0xe5, 0x20, 0x94, + 0x41, 0x6d, 0x7e, 0x3f, 0xfe, 0xe9, 0xa3, 0xf7, 0x60, 0x76, 0x68, 0x53, 0x05, 0x58, 0xad, 0x50, + 0xdc, 0x6b, 0x13, 0x1c, 0xba, 0x5d, 0xd9, 0x65, 0x28, 0xfc, 0x0c, 0x90, 0x13, 0x40, 0xb7, 0xa1, + 0xc1, 0x05, 0xe5, 0x3f, 0x31, 0xdc, 0xa4, 0xb4, 0x80, 0x8a, 0x60, 0x99, 0x41, 0x74, 0x9e, 0x18, + 0x6e, 0x5c, 0x62, 0x8d, 0xdb, 0x30, 0x17, 0x27, 0x7a, 0x28, 0x5d, 0xba, 0x0b, 0x35, 0xa9, 0x93, + 0x64, 0xb4, 0xa9, 0x50, 0x7c, 0xeb, 0x9b, 0x62, 0x6e, 0x95, 0x49, 0x41, 0xc7, 0xfa, 0x26, 0xcd, + 0x83, 0xa0, 0x9c, 0x51, 0x3a, 0x25, 0x8d, 0x7d, 0xa8, 0x06, 0xd4, 0xa4, 0xd4, 0x03, 0x62, 0x92, + 0x69, 0x8e, 0x01, 0x37, 0xc9, 0xe4, 0x37, 0x29, 0xf3, 0x9c, 0xbe, 0xe0, 0x80, 0xfe, 0x26, 0x65, + 0xf4, 0x00, 0x9a, 0x1d, 0xa7, 0xd1, 0xdf, 0xb4, 0x09, 0xfc, 0x98, 0xe7, 0x1c, 0x55, 0x34, 0xf6, + 0xa1, 0xfe, 0x86, 0x02, 0xb0, 0x66, 0xb8, 0xc6, 0x43, 0xab, 0x6f, 0x05, 0x07, 0xe8, 0x22, 0xd4, + 0x0d, 0xd3, 0xd4, 0xbb, 0xa2, 0xc4, 0xc2, 0x22, 0x09, 0x6c, 0xc1, 0x30, 0xcd, 0xb5, 0x58, 0x31, + 0x7a, 0x11, 0x16, 0x89, 0x41, 0x95, 0x61, 0x59, 0x56, 0x58, 0x9d, 0x54, 0x48, 0xc0, 0x37, 0x61, + 0x95, 0xd0, 0x35, 0x06, 0x0f, 0x2d, 0x6c, 0x07, 0x32, 0x0e, 0x4b, 0x17, 0x5b, 0x36, 0x4c, 0xb3, + 0xc9, 0xaa, 0xe3, 0x98, 0xea, 0x6f, 0xcd, 0xc2, 0x69, 0x79, 0xc4, 0x93, 0xd9, 0x20, 0xb7, 0x61, + 0x2e, 0xc1, 0x6f, 0x2a, 0x8f, 0x22, 0xea, 0xa1, 0x26, 0xc1, 0x26, 0x72, 0x11, 0x0a, 0xa9, 0x5c, + 0x84, 0xcc, 0x4c, 0x93, 0xe2, 0xa7, 0x94, 0x69, 0x52, 0xfa, 0x84, 0x99, 0x26, 0xd3, 0x47, 0xcd, + 0x34, 0x99, 0x9b, 0x38, 0xd3, 0xe4, 0x79, 0x6a, 0x7a, 0x45, 0x8b, 0xd4, 0x1d, 0x60, 0x36, 0xa1, + 0x16, 0x52, 0xb7, 0x45, 0x66, 0x62, 0x22, 0x23, 0x65, 0xf6, 0x30, 0x19, 0x29, 0xe5, 0x23, 0x66, + 0xa4, 0x2c, 0x7e, 0x2a, 0x19, 0x29, 0xe7, 0x60, 0xce, 0x76, 0x74, 0x1b, 0x3f, 0xd1, 0xc9, 0xd0, + 0xfb, 0x34, 0xcf, 0xa5, 0xac, 0x81, 0xed, 0x6c, 0xe1, 0x27, 0x6d, 0x52, 0x82, 0xce, 0xc3, 0xdc, + 0xc0, 0xf0, 0x1f, 0x61, 0x93, 0xa6, 0x86, 0xf8, 0xab, 0x35, 0xaa, 0xb3, 0x55, 0x56, 0xd6, 0x26, + 0x45, 0xe8, 0x39, 0x08, 0xfb, 0xca, 0x81, 0xe6, 0x29, 0x50, 0x4d, 0x94, 0x32, 0xb0, 0x58, 0x76, + 0xcb, 0xc2, 0x11, 0xb3, 0x5b, 0xea, 0x87, 0xc9, 0x6e, 0xb9, 0x0c, 0x75, 0xf1, 0x5b, 0xa4, 0xb7, + 0xb0, 0xd3, 0x0a, 0x9a, 0xd9, 0xb2, 0x20, 0xea, 0x44, 0x0a, 0x4b, 0x5e, 0x32, 0x0c, 0x8c, 0x4c, + 0x86, 0xf9, 0x3d, 0x85, 0xc7, 0xcd, 0xe1, 0x24, 0xe5, 0xa7, 0xf0, 0x52, 0x02, 0x85, 0x72, 0x94, + 0x04, 0x0a, 0xb4, 0x93, 0x9b, 0x62, 0x72, 0x31, 0x9f, 0xd2, 0xb8, 0x24, 0x13, 0xd5, 0x02, 0x24, + 0x63, 0xd0, 0x89, 0xc2, 0xd3, 0x28, 0xd8, 0x4a, 0x4d, 0xd3, 0x28, 0xea, 0x50, 0xec, 0xf1, 0xc4, + 0x8a, 0xa2, 0x46, 0x7e, 0xe6, 0x69, 0x70, 0x31, 0x4f, 0x83, 0xd5, 0xcd, 0x30, 0x7a, 0xfe, 0x34, + 0x32, 0xff, 0xd4, 0x7f, 0x51, 0xe0, 0x34, 0xa7, 0x97, 0x93, 0x1e, 0x97, 0x31, 0x69, 0x95, 0x9c, + 0x49, 0xdb, 0xf5, 0xb0, 0x89, 0xed, 0xc0, 0x32, 0xfa, 0xd4, 0x1f, 0x13, 0x07, 0xe2, 0x51, 0x31, + 0x75, 0x09, 0xcf, 0xc3, 0x1c, 0xcb, 0x78, 0xe5, 0x81, 0x34, 0x4b, 0x6c, 0xad, 0xd2, 0xa4, 0x57, + 0x1e, 0x2b, 0x6f, 0x67, 0x19, 0xca, 0x52, 0xee, 0x0e, 0xcc, 0x58, 0x7b, 0xa9, 0x3a, 0xb0, 0x92, + 0x93, 0x9a, 0x90, 0xa9, 0x11, 0x4a, 0x5a, 0x23, 0x46, 0x0a, 0x29, 0xad, 0x11, 0xdf, 0x51, 0xe0, + 0x6c, 0x2a, 0xa0, 0xff, 0xfc, 0x25, 0xab, 0xfe, 0xa1, 0x12, 0xea, 0x4f, 0x72, 0x76, 0xad, 0xa5, + 0x67, 0xd7, 0x73, 0xa3, 0xf6, 0x27, 0x32, 0xe7, 0xd7, 0xfb, 0xb9, 0xf3, 0xeb, 0xc5, 0x91, 0x7b, + 0x1d, 0xe3, 0xe4, 0xf9, 0x8f, 0x0a, 0x9c, 0xc8, 0x65, 0x20, 0xe1, 0xde, 0x2a, 0x49, 0xf7, 0x96, + 0xbb, 0xc6, 0x51, 0x30, 0xc3, 0x5c, 0x63, 0x1a, 0xaf, 0x70, 0x1f, 0x54, 0x1f, 0x18, 0x4f, 0xad, + 0xc1, 0x70, 0xc0, 0x7d, 0x63, 0x42, 0x6e, 0x93, 0x95, 0x1c, 0xc5, 0x39, 0xbe, 0x0a, 0x4b, 0x6c, + 0xdd, 0xa2, 0xfe, 0x59, 0x84, 0xc1, 0x7c, 0xe4, 0x45, 0x56, 0x47, 0x5c, 0x35, 0x8e, 0xa0, 0x36, + 0x61, 0x31, 0xec, 0xd6, 0xc8, 0xd4, 0xac, 0x58, 0xaa, 0x55, 0x41, 0x4e, 0xb5, 0xb2, 0x61, 0x66, + 0x1d, 0x3f, 0xb6, 0xba, 0xf8, 0x53, 0xc9, 0x3c, 0x3f, 0x07, 0x55, 0x17, 0x7b, 0x03, 0xcb, 0xf7, + 0x43, 0x27, 0xa5, 0xa2, 0xc5, 0x8b, 0xd4, 0xb3, 0x50, 0x59, 0x5b, 0x6f, 0xf1, 0x26, 0x33, 0x58, + 0x55, 0xff, 0x75, 0x06, 0x16, 0x92, 0x3a, 0x76, 0x2b, 0x95, 0xfa, 0x75, 0x3a, 0x73, 0xdb, 0x30, + 0x63, 0xbf, 0xfc, 0x45, 0x11, 0x49, 0x16, 0xd2, 0x79, 0x11, 0x61, 0xb4, 0x28, 0x02, 0xcc, 0x55, + 0x98, 0xed, 0x3a, 0x83, 0x81, 0x61, 0x9b, 0xe2, 0xfe, 0x00, 0xff, 0x24, 0x9c, 0x1a, 0x5e, 0x8f, + 0xed, 0x94, 0x57, 0x34, 0xfa, 0x9b, 0xa8, 0x00, 0x31, 0x86, 0x96, 0x4d, 0x93, 0xc7, 0xe8, 0x28, + 0x55, 0x34, 0xe0, 0x45, 0xeb, 0x96, 0x87, 0x2e, 0x40, 0x09, 0xdb, 0x8f, 0xc5, 0x11, 0x9a, 0xb4, + 0x63, 0x2b, 0x42, 0x3c, 0x8d, 0x42, 0xa0, 0x8b, 0x30, 0x33, 0x20, 0x6a, 0x25, 0x12, 0x0c, 0x16, + 0x53, 0x79, 0xf6, 0x1a, 0x07, 0x40, 0x2f, 0xc1, 0xac, 0x49, 0xa5, 0x27, 0x62, 0x1a, 0x24, 0xa5, + 0xa1, 0xd1, 0x2a, 0x4d, 0x80, 0xa0, 0x77, 0xc2, 0xe3, 0x82, 0x4a, 0xfa, 0x1c, 0x2f, 0x21, 0xe6, + 0xcc, 0x93, 0x82, 0x2d, 0x39, 0xe6, 0x86, 0xf4, 0xa1, 0x43, 0x92, 0xca, 0xe8, 0xc8, 0xfb, 0x04, + 0x94, 0xfb, 0x4e, 0x8f, 0x69, 0x4f, 0x95, 0x5d, 0x3e, 0xe9, 0x3b, 0x3d, 0xaa, 0x3c, 0x4b, 0x30, + 0xed, 0x07, 0xa6, 0x65, 0x53, 0xd7, 0xb0, 0xac, 0xb1, 0x0f, 0x32, 0x49, 0xe9, 0x0f, 0xdd, 0xb1, + 0xbb, 0x78, 0xb5, 0x46, 0xab, 0x2a, 0xb4, 0x64, 0xdb, 0xee, 0xd2, 0x10, 0x39, 0x08, 0x0e, 0x56, + 0xe7, 0x69, 0x39, 0xf9, 0x19, 0xed, 0xda, 0x2f, 0xe4, 0xec, 0xda, 0x27, 0x18, 0xce, 0xd8, 0xb5, + 0xaf, 0xe7, 0xae, 0x19, 0x49, 0x5c, 0x81, 0x42, 0xdc, 0xe2, 0xb5, 0xf5, 0x96, 0x2e, 0x86, 0x66, + 0x31, 0x9d, 0x86, 0x1f, 0xaa, 0xbd, 0x06, 0xe1, 0xcf, 0xcf, 0xf5, 0xd0, 0xe4, 0x07, 0x0a, 0x2c, + 0xaf, 0xd1, 0x23, 0xe3, 0x98, 0x6d, 0x3c, 0x4c, 0xb6, 0xd5, 0x2b, 0x61, 0x0a, 0x5c, 0x46, 0x1e, + 0x53, 0x52, 0x52, 0x22, 0x03, 0x6e, 0x0d, 0xe6, 0x05, 0x59, 0x8e, 0x5c, 0x9c, 0x20, 0x7f, 0xae, + 0xe6, 0xc7, 0x3f, 0xd5, 0x37, 0x61, 0x25, 0xc5, 0x39, 0x3f, 0xb8, 0x4b, 0xde, 0xd7, 0x60, 0x8c, + 0xc7, 0xef, 0x6b, 0xa8, 0xb7, 0xe1, 0x78, 0x27, 0x30, 0xbc, 0x20, 0xd5, 0xed, 0x09, 0x70, 0x69, + 0x66, 0x9c, 0x8c, 0xcb, 0x93, 0xd7, 0x3a, 0xb0, 0xd4, 0x09, 0x1c, 0xf7, 0x08, 0x44, 0x89, 0xdd, + 0x21, 0x3d, 0x77, 0x86, 0x62, 0x9d, 0x11, 0x9f, 0xea, 0x0a, 0xcb, 0xe3, 0x4b, 0xb7, 0xf6, 0x06, + 0x2c, 0xb3, 0x34, 0xba, 0xa3, 0x74, 0xe2, 0x84, 0x48, 0xe2, 0x4b, 0xd3, 0xbd, 0x0f, 0xc7, 0xa4, + 0xa3, 0x04, 0x9e, 0x76, 0x72, 0x4d, 0x4e, 0x3b, 0xc9, 0x3f, 0xb5, 0x09, 0xb3, 0x4e, 0x7e, 0xb5, + 0x10, 0xb3, 0xe3, 0x39, 0x67, 0xcf, 0xaf, 0xca, 0x49, 0x27, 0x67, 0xf3, 0xa9, 0x4a, 0x39, 0x27, + 0x69, 0xed, 0x2c, 0x66, 0x68, 0xe7, 0x6e, 0xea, 0x60, 0xbb, 0x94, 0x4e, 0x1a, 0x4a, 0x70, 0xf8, + 0x99, 0x1c, 0x69, 0x3f, 0x60, 0x89, 0x29, 0x61, 0xd3, 0xe1, 0x69, 0xf6, 0x2b, 0x89, 0xd3, 0xec, + 0x93, 0x23, 0x38, 0x0d, 0xcf, 0xb1, 0xbf, 0x5f, 0x82, 0x4a, 0x58, 0x97, 0x92, 0x70, 0x5a, 0x54, + 0x85, 0x0c, 0x51, 0xc5, 0xd7, 0xd7, 0xe2, 0x11, 0xd7, 0xd7, 0xd2, 0x04, 0xeb, 0xeb, 0x49, 0xa8, + 0xd0, 0x1f, 0xf4, 0x2e, 0x01, 0x5b, 0x2f, 0xcb, 0xb4, 0x40, 0xc3, 0x7b, 0x91, 0x8a, 0xcd, 0x4c, + 0xa8, 0x62, 0x89, 0x24, 0x98, 0xd9, 0x64, 0x12, 0xcc, 0xad, 0x70, 0xed, 0x2b, 0xa7, 0x0f, 0x9d, + 0x42, 0x8a, 0x99, 0xab, 0x5e, 0x62, 0xa7, 0xb9, 0x92, 0xde, 0x69, 0x8e, 0xf0, 0xc7, 0xae, 0x77, + 0xac, 0xcb, 0x96, 0xc9, 0xe2, 0x57, 0x6d, 0x96, 0x7e, 0xb7, 0xcc, 0xcf, 0xd3, 0xf4, 0x6f, 0xb3, + 0xa4, 0x97, 0xb8, 0x0a, 0x72, 0xf3, 0xf9, 0xaa, 0x74, 0xde, 0xa8, 0x64, 0x2c, 0x63, 0xa1, 0xc9, + 0x88, 0x9f, 0x31, 0xee, 0xc2, 0x72, 0x32, 0x59, 0xee, 0x50, 0xe6, 0x2f, 0x27, 0x6b, 0xf7, 0x27, + 0x71, 0x67, 0x30, 0x27, 0x45, 0xf5, 0x56, 0x2a, 0x9b, 0x62, 0x62, 0xe5, 0xbd, 0x26, 0x27, 0x5e, + 0x1d, 0x5a, 0xe5, 0x52, 0x79, 0x57, 0xd4, 0x59, 0x31, 0x3c, 0x5e, 0xcd, 0xfc, 0xf6, 0x0a, 0x2f, + 0x69, 0xd2, 0xa0, 0x61, 0xcf, 0xb2, 0x2d, 0x7f, 0x9f, 0xd5, 0xcf, 0xb0, 0xa0, 0x41, 0x14, 0x35, + 0xe9, 0xfe, 0x2c, 0x7e, 0x6a, 0x05, 0x7a, 0xd7, 0x31, 0x31, 0x55, 0xe8, 0x69, 0xad, 0x4c, 0x0a, + 0xd6, 0x1c, 0x13, 0x47, 0x53, 0xad, 0x7c, 0xd8, 0xa9, 0x56, 0x49, 0x4c, 0xb5, 0x65, 0x98, 0xf1, + 0xb0, 0xe1, 0x3b, 0x36, 0x57, 0x49, 0xfe, 0x45, 0x06, 0x62, 0x80, 0x7d, 0x9f, 0xb4, 0xc1, 0x7d, + 0x33, 0xfe, 0x19, 0xf3, 0x23, 0xe7, 0x46, 0xf8, 0x91, 0x23, 0x12, 0x60, 0x13, 0x7e, 0x64, 0x6d, + 0x84, 0x1f, 0x39, 0x51, 0xfe, 0x6b, 0xe4, 0x31, 0xcf, 0x8f, 0xf3, 0x98, 0xe3, 0x2e, 0xe7, 0x82, + 0xec, 0x72, 0xbe, 0x19, 0x0f, 0x5e, 0xeb, 0xe9, 0x74, 0x80, 0xd1, 0x51, 0x6b, 0x7c, 0x6e, 0x2f, + 0x4a, 0x73, 0x1b, 0x5d, 0xe6, 0x9b, 0xe4, 0x28, 0xbd, 0xbd, 0x2a, 0xed, 0xf6, 0xb0, 0xfd, 0xf3, + 0xcf, 0xd3, 0x14, 0xfc, 0x8d, 0x02, 0x2b, 0xa9, 0xa9, 0xcb, 0x8d, 0xc1, 0x2b, 0x89, 0x1c, 0xdd, + 0x91, 0xc9, 0xb1, 0x22, 0x45, 0xb7, 0x29, 0xa5, 0xe8, 0x5e, 0x1e, 0x85, 0x92, 0x93, 0xa1, 0x7b, + 0xf4, 0xac, 0xd9, 0x6f, 0x2b, 0x80, 0x32, 0x02, 0xfd, 0x5b, 0x22, 0x24, 0x38, 0xc4, 0xee, 0x1f, + 0x8f, 0x0a, 0xde, 0x89, 0xa2, 0x82, 0xc2, 0x61, 0x36, 0x37, 0xc2, 0x74, 0x9e, 0x0d, 0xa8, 0xc9, + 0xfb, 0x7b, 0x37, 0x64, 0x66, 0xce, 0xe4, 0x33, 0x43, 0x15, 0x84, 0x01, 0xab, 0x3f, 0x29, 0xc0, + 0xd9, 0x5d, 0xd7, 0x4c, 0xb8, 0xbc, 0xbc, 0xb1, 0xc9, 0x4d, 0xed, 0x2d, 0x39, 0xa5, 0xe9, 0x88, + 0x92, 0x28, 0x1e, 0x45, 0x12, 0xe8, 0xeb, 0x59, 0x49, 0x67, 0x6f, 0x4a, 0xc7, 0xc3, 0xa3, 0x3b, + 0x38, 0x26, 0xff, 0xec, 0x93, 0xce, 0x04, 0x15, 0xce, 0xe5, 0x33, 0xc0, 0xdd, 0xe3, 0xff, 0x0d, + 0x0b, 0x1b, 0x4f, 0x71, 0xb7, 0x73, 0x60, 0x77, 0x0f, 0x21, 0xf5, 0x3a, 0x14, 0xbb, 0x03, 0x93, + 0x1f, 0x4c, 0x91, 0x9f, 0x71, 0x8f, 0xbf, 0x28, 0x7b, 0xfc, 0x3a, 0xd4, 0xa3, 0x16, 0xf8, 0x3c, + 0x5c, 0x26, 0xf3, 0xd0, 0x24, 0xc0, 0x84, 0xf8, 0x9c, 0xc6, 0xbf, 0x78, 0x39, 0xf6, 0xd8, 0x25, + 0x22, 0x56, 0x8e, 0x3d, 0x4f, 0x5e, 0x46, 0x8a, 0xf2, 0x32, 0xa2, 0x7e, 0x57, 0x81, 0x2a, 0x69, + 0xe1, 0x13, 0xf1, 0xcf, 0xc3, 0xee, 0x62, 0x14, 0x76, 0x87, 0xd1, 0x7b, 0x29, 0x1e, 0xbd, 0x47, + 0x9c, 0x4f, 0xd3, 0xe2, 0x34, 0xe7, 0x33, 0x61, 0x39, 0xf6, 0x3c, 0xf5, 0x1c, 0xcc, 0x31, 0xde, + 0x78, 0xcf, 0xeb, 0x50, 0x1c, 0x7a, 0x7d, 0x31, 0x7e, 0x43, 0xaf, 0xaf, 0x7e, 0x4b, 0x81, 0x5a, + 0x33, 0x08, 0x8c, 0xee, 0xfe, 0x21, 0x3a, 0x10, 0x32, 0x57, 0x88, 0x33, 0x97, 0xee, 0x44, 0xc4, + 0x6e, 0x29, 0x87, 0xdd, 0x69, 0x89, 0x5d, 0x15, 0xe6, 0x05, 0x2f, 0xb9, 0x0c, 0x6f, 0x01, 0x6a, + 0x3b, 0x5e, 0x70, 0xcf, 0xf1, 0x9e, 0x18, 0x9e, 0x79, 0xb8, 0x08, 0x1b, 0x41, 0x89, 0x3f, 0x35, + 0x51, 0xbc, 0x30, 0xad, 0xd1, 0xdf, 0xea, 0x0b, 0x70, 0x4c, 0xa2, 0x97, 0xdb, 0xf0, 0x6d, 0xa8, + 0x52, 0xb7, 0x80, 0x07, 0x5f, 0x2f, 0xc6, 0x73, 0x2a, 0xc6, 0xb8, 0x0f, 0xea, 0x3a, 0x2c, 0x12, + 0x07, 0x91, 0x96, 0x87, 0xf6, 0xe5, 0x6a, 0x22, 0x3e, 0x59, 0x49, 0x91, 0x48, 0xc4, 0x26, 0x3f, + 0x53, 0x60, 0x9a, 0xa5, 0x4f, 0x24, 0x9d, 0xb6, 0x93, 0x64, 0xe1, 0x75, 0x1d, 0x3d, 0x30, 0x7a, + 0xe1, 0x33, 0x1e, 0xa4, 0x60, 0xc7, 0xe8, 0xd1, 0x83, 0x2e, 0x5a, 0x69, 0x5a, 0x3d, 0xec, 0x07, + 0xe2, 0x70, 0xb6, 0x4a, 0xca, 0xd6, 0x59, 0x11, 0x11, 0x0c, 0x3d, 0xc3, 0x2e, 0xd1, 0xa3, 0x6a, + 0xfa, 0x1b, 0x5d, 0x60, 0x07, 0x27, 0xa3, 0x4f, 0x24, 0xe9, 0x81, 0x4a, 0x03, 0xca, 0x89, 0xa3, + 0xc4, 0xf0, 0x1b, 0x5d, 0x84, 0x12, 0xdd, 0x2b, 0x9f, 0x1d, 0x25, 0x25, 0x0a, 0x42, 0xb4, 0xc2, + 0xb5, 0x6c, 0x1b, 0x9b, 0xfc, 0x8d, 0x09, 0xfe, 0xa5, 0xbe, 0x03, 0x28, 0x2e, 0x3c, 0x3e, 0x40, + 0x17, 0x61, 0x86, 0xca, 0x56, 0x78, 0xd5, 0x8b, 0x29, 0xd2, 0x1a, 0x07, 0x50, 0xbf, 0x06, 0x88, + 0xb5, 0x25, 0x79, 0xd2, 0x87, 0x19, 0xc0, 0x11, 0x3e, 0xf5, 0x1f, 0x29, 0x70, 0x4c, 0xa2, 0xce, + 0xf9, 0x7b, 0x41, 0x26, 0x9f, 0xc1, 0x1e, 0x27, 0xfd, 0x96, 0xb4, 0xc0, 0x5f, 0x4c, 0xb3, 0xf1, + 0x3f, 0xb4, 0xb8, 0xff, 0xad, 0x02, 0xd0, 0x1c, 0x06, 0xfb, 0x7c, 0x53, 0x38, 0x3e, 0x88, 0x4a, + 0x62, 0x10, 0x1b, 0x50, 0x76, 0x0d, 0xdf, 0x7f, 0xe2, 0x78, 0x22, 0xe0, 0x0d, 0xbf, 0xe9, 0x56, + 0xee, 0x90, 0xbf, 0xd5, 0x51, 0xd1, 0xe8, 0x6f, 0xf4, 0x1c, 0xcc, 0xb3, 0xf7, 0x65, 0x74, 0xc3, + 0x34, 0x3d, 0x91, 0xa7, 0x59, 0xd1, 0x6a, 0xac, 0xb4, 0xc9, 0x0a, 0x09, 0x98, 0x45, 0x4f, 0x4e, + 0x82, 0x03, 0x3d, 0x70, 0x1e, 0x61, 0x9b, 0x07, 0xb1, 0x35, 0x51, 0xba, 0x43, 0x0a, 0xd9, 0x29, + 0x6c, 0xcf, 0xf2, 0x03, 0x4f, 0x80, 0x89, 0xf3, 0x6a, 0x5e, 0x4a, 0xc1, 0xd4, 0xdf, 0x57, 0xa0, + 0xde, 0x1e, 0xf6, 0xfb, 0x4c, 0xb8, 0x47, 0x19, 0xe4, 0x4b, 0xbc, 0x2b, 0x85, 0xb4, 0xca, 0x47, + 0x82, 0xe2, 0x5d, 0xfc, 0x54, 0xf6, 0xdd, 0xae, 0xc1, 0x62, 0x8c, 0x63, 0xae, 0x38, 0x52, 0xa8, + 0xa1, 0xc8, 0xa1, 0x86, 0xda, 0x04, 0xc4, 0xb6, 0x9a, 0x8e, 0xdc, 0x4b, 0xf5, 0x38, 0x1c, 0x93, + 0x48, 0xf0, 0xa5, 0xf8, 0x12, 0xd4, 0x78, 0xce, 0x20, 0x57, 0x88, 0x13, 0x50, 0x26, 0x26, 0xb5, + 0x6b, 0x99, 0x22, 0x39, 0x65, 0xd6, 0x75, 0xcc, 0x35, 0xcb, 0xf4, 0xd4, 0x2f, 0x43, 0x8d, 0x3f, + 0x4a, 0xc0, 0x61, 0xef, 0xc0, 0x3c, 0x3f, 0xcb, 0xd4, 0xa5, 0x5b, 0xbc, 0x27, 0x32, 0x12, 0x53, + 0x85, 0x28, 0xec, 0xf8, 0xa7, 0xfa, 0x75, 0x68, 0x30, 0x6f, 0x41, 0x22, 0x2c, 0x3a, 0x78, 0x07, + 0x44, 0x5e, 0xd8, 0x08, 0xfa, 0x32, 0x66, 0xcd, 0x8b, 0x7f, 0xaa, 0xa7, 0xe1, 0x64, 0x26, 0x7d, + 0xde, 0x7b, 0x17, 0xea, 0x51, 0x05, 0xbb, 0x6a, 0x1a, 0x66, 0xdc, 0x28, 0xb1, 0x8c, 0x9b, 0xe5, + 0xd0, 0x85, 0x2f, 0x88, 0x95, 0x8b, 0x7a, 0xe9, 0x51, 0x08, 0x58, 0xcc, 0x0b, 0x01, 0x4b, 0x52, + 0x08, 0xa8, 0x6e, 0x86, 0x32, 0xe4, 0x81, 0xf8, 0x9b, 0x74, 0xab, 0x80, 0xb5, 0x2d, 0x8c, 0xda, + 0xa9, 0xec, 0xfe, 0x31, 0x20, 0x2d, 0x06, 0xaf, 0x5e, 0x84, 0x9a, 0x6c, 0xde, 0x62, 0x16, 0x4b, + 0x91, 0x2d, 0xd6, 0xff, 0x81, 0x65, 0x4d, 0x4a, 0xb2, 0xbb, 0x87, 0x8d, 0x60, 0xe8, 0x61, 0x1f, + 0xbd, 0x01, 0x8d, 0x8c, 0x27, 0x7f, 0x74, 0x1e, 0x19, 0x32, 0x32, 0x2b, 0xa9, 0x97, 0x7f, 0x36, + 0x59, 0x5c, 0xf8, 0x02, 0x2c, 0xd0, 0x24, 0xc0, 0xd8, 0xe5, 0x59, 0x26, 0x23, 0xfa, 0xbc, 0xcc, + 0x56, 0x74, 0x53, 0xd6, 0x0c, 0x9f, 0xb4, 0xe0, 0xed, 0x67, 0x9e, 0xb1, 0xbd, 0x0d, 0xe5, 0x3d, + 0xce, 0x17, 0x9f, 0x90, 0x6a, 0x86, 0x30, 0x12, 0x3d, 0xd0, 0x42, 0x1c, 0xf5, 0x3f, 0x15, 0x98, + 0x4f, 0x98, 0xe4, 0x97, 0x13, 0xf1, 0x57, 0x96, 0xf6, 0x24, 0xa2, 0xaf, 0x9b, 0x92, 0x71, 0x96, + 0x93, 0x52, 0x46, 0x5f, 0x8b, 0xdc, 0x80, 0x7a, 0x22, 0xc3, 0x51, 0x64, 0x37, 0x37, 0xf2, 0xfb, + 0xa1, 0x2d, 0xc8, 0xe9, 0x8f, 0xfe, 0xd1, 0xcd, 0xfb, 0x12, 0x5f, 0xf4, 0xee, 0xf9, 0x04, 0x9f, + 0x6b, 0x85, 0xfa, 0x0c, 0x54, 0x77, 0xf3, 0xde, 0xea, 0x29, 0x89, 0xfc, 0xc7, 0xd7, 0x60, 0xe9, + 0x9e, 0xd5, 0xc7, 0xfe, 0x81, 0x1f, 0xe0, 0x41, 0x8b, 0xda, 0xe2, 0x3d, 0x0b, 0x7b, 0xe8, 0x0c, + 0x00, 0x55, 0x05, 0xd7, 0xb1, 0xc2, 0xb7, 0x43, 0x62, 0x25, 0xea, 0x8f, 0x15, 0x58, 0x88, 0x10, + 0x27, 0x49, 0x72, 0x7d, 0x15, 0xa6, 0xf7, 0x7c, 0xb1, 0x8d, 0x9a, 0x38, 0x5c, 0xca, 0x62, 0x41, + 0x2b, 0xed, 0xf9, 0x2d, 0x13, 0xbd, 0x06, 0x30, 0xf4, 0xb1, 0xc9, 0xcf, 0x73, 0xc7, 0xa4, 0x1d, + 0x57, 0x08, 0x28, 0x3b, 0x11, 0xbe, 0x09, 0x55, 0xcb, 0x76, 0x4c, 0x4c, 0xcf, 0xfa, 0xcd, 0x71, + 0x29, 0xc7, 0xc0, 0x60, 0x77, 0x7d, 0x6c, 0xaa, 0xbf, 0x1d, 0x9d, 0xd8, 0x7f, 0x91, 0x7b, 0xa8, + 0xfe, 0x81, 0xf0, 0x46, 0xc4, 0xb0, 0x73, 0xd5, 0x7f, 0x17, 0x16, 0xd9, 0xa2, 0xb2, 0x17, 0xb6, + 0x99, 0x79, 0x17, 0x2b, 0xd1, 0x39, 0xad, 0x6e, 0x71, 0x3f, 0x54, 0x20, 0xa1, 0x36, 0x1c, 0x8f, + 0xc2, 0x83, 0x38, 0xb5, 0xc2, 0x78, 0x6a, 0x4b, 0xdd, 0xd8, 0xae, 0xbb, 0x40, 0x54, 0x6f, 0xc3, + 0xf1, 0xc4, 0x75, 0x8b, 0xc9, 0x8f, 0x5e, 0xde, 0x4b, 0x6c, 0x94, 0x46, 0x93, 0xfd, 0x9a, 0x7c, + 0xcb, 0x6f, 0xd4, 0xc5, 0x18, 0x7e, 0xe1, 0x6c, 0x17, 0x4e, 0x48, 0xbb, 0xb8, 0x12, 0x2f, 0x37, + 0x13, 0xce, 0xfa, 0xb9, 0x7c, 0x7a, 0x09, 0xaf, 0xfd, 0xdf, 0x14, 0x58, 0xca, 0x02, 0x38, 0xe2, + 0xe1, 0xc2, 0x87, 0x39, 0x37, 0x84, 0x5f, 0x19, 0xc7, 0xd0, 0x67, 0x72, 0x18, 0xb3, 0xc5, 0xee, + 0x17, 0x8e, 0x1f, 0x93, 0xe2, 0x64, 0x63, 0xf2, 0xb3, 0x42, 0xec, 0x00, 0x6d, 0xc4, 0x1d, 0xc0, + 0x4f, 0xb0, 0x6b, 0xbd, 0x96, 0xb8, 0x02, 0xf8, 0x62, 0x26, 0xe2, 0x98, 0x1b, 0x80, 0x5a, 0xd6, + 0x66, 0xcc, 0xb5, 0x71, 0x94, 0xbe, 0xb0, 0x17, 0x00, 0x7f, 0xad, 0x00, 0xf3, 0xf2, 0x80, 0xa0, + 0x77, 0x32, 0xee, 0xff, 0x9d, 0x1d, 0xd3, 0x41, 0xe9, 0xfa, 0x1f, 0xbf, 0x6f, 0x57, 0x98, 0xfc, + 0xbe, 0x5d, 0x71, 0xb2, 0xfb, 0x76, 0x77, 0x61, 0xfe, 0x89, 0x67, 0x05, 0xc6, 0xc3, 0x3e, 0xd6, + 0xfb, 0xc6, 0x01, 0xf6, 0xb8, 0x61, 0x1f, 0x69, 0x8a, 0x6a, 0x02, 0xe5, 0x01, 0xc1, 0xa0, 0x61, + 0xea, 0x13, 0xc3, 0xe5, 0xd1, 0xae, 0xe4, 0x40, 0x77, 0x9e, 0x18, 0x2e, 0xc3, 0xa1, 0x20, 0xea, + 0xb7, 0x0a, 0x70, 0x3c, 0xf3, 0x96, 0xd8, 0x27, 0x17, 0xd1, 0xe5, 0xb8, 0x88, 0x0e, 0x73, 0xf5, + 0xae, 0x78, 0xa8, 0xab, 0x77, 0xad, 0x1c, 0x81, 0x65, 0x65, 0x68, 0x8c, 0x96, 0x9b, 0xfa, 0xa7, + 0x0a, 0x94, 0x05, 0x53, 0x63, 0x2f, 0xc2, 0xad, 0x0c, 0x09, 0x98, 0x4e, 0x2f, 0x2b, 0xd8, 0x86, + 0xed, 0xe8, 0x3e, 0x26, 0x1e, 0xec, 0xd8, 0x6b, 0x47, 0x4b, 0x14, 0x6f, 0xcd, 0xf1, 0xf0, 0x96, + 0x61, 0x3b, 0x1d, 0x86, 0x84, 0x9a, 0x50, 0x67, 0xf4, 0x28, 0x29, 0x42, 0x74, 0xec, 0x42, 0x39, + 0x4f, 0x11, 0x08, 0x11, 0x42, 0xcc, 0x57, 0xff, 0x42, 0x81, 0x85, 0x84, 0x64, 0x7f, 0xf1, 0x3a, + 0xf1, 0xbd, 0x22, 0x54, 0x63, 0xa3, 0x3c, 0xa6, 0x03, 0x6b, 0xb0, 0x28, 0xb2, 0xac, 0x7c, 0x1c, + 0x4c, 0x76, 0xed, 0x6b, 0x81, 0x63, 0x74, 0x70, 0xc0, 0xfc, 0xa8, 0x3b, 0xb0, 0x60, 0x3c, 0x36, + 0xac, 0x3e, 0xd5, 0xa0, 0x89, 0x5c, 0x94, 0xf9, 0x10, 0x3e, 0xf4, 0xc4, 0x58, 0xbf, 0x27, 0xba, + 0xfc, 0x05, 0x14, 0x36, 0xba, 0x83, 0xe7, 0xfb, 0xb1, 0x54, 0xbe, 0x91, 0x77, 0xf0, 0x7c, 0x3f, + 0x6c, 0x8f, 0xde, 0xd4, 0xa0, 0x97, 0x0f, 0x7d, 0xfe, 0x62, 0x4d, 0x7e, 0x7b, 0x04, 0xf6, 0x1e, + 0x05, 0x25, 0x02, 0x1b, 0x18, 0x1f, 0x39, 0x9e, 0x1e, 0xc7, 0x9f, 0x1d, 0x23, 0x30, 0x8a, 0xd1, + 0x0e, 0x89, 0xa8, 0x7f, 0xac, 0x40, 0x25, 0xb4, 0x23, 0x63, 0x46, 0xa8, 0x05, 0x4b, 0xf4, 0x5a, + 0x4b, 0x52, 0xc2, 0x63, 0x06, 0x09, 0x11, 0xa4, 0xa6, 0x2c, 0xe5, 0x26, 0xd4, 0x29, 0xa9, 0xb8, + 0xa8, 0xc7, 0x0d, 0x94, 0x2f, 0xd8, 0x64, 0x0e, 0xe5, 0x9f, 0x15, 0x00, 0xa5, 0x4d, 0xc9, 0x2f, + 0x8c, 0x92, 0xc5, 0x07, 0xad, 0x34, 0xf9, 0xa0, 0xdf, 0x87, 0x63, 0x5d, 0x67, 0x30, 0xb0, 0xe8, + 0x95, 0x28, 0xc7, 0x3b, 0x98, 0x4c, 0xdd, 0x16, 0x19, 0x0e, 0x93, 0x13, 0x13, 0xdf, 0xdb, 0x70, + 0x42, 0xc3, 0x8e, 0x8b, 0xed, 0xd0, 0xf4, 0x3f, 0x70, 0x7a, 0x87, 0xf0, 0x6f, 0x4f, 0x41, 0x23, + 0x0b, 0x9f, 0xef, 0x5a, 0x0c, 0xa1, 0xb1, 0xb6, 0x8f, 0xbb, 0x8f, 0x68, 0xf8, 0x75, 0x94, 0x4c, + 0xa9, 0x06, 0x94, 0xfb, 0x4e, 0x97, 0x3d, 0x49, 0xcc, 0x37, 0xf6, 0xc4, 0xf7, 0x88, 0x33, 0x95, + 0xd3, 0x70, 0x32, 0xb3, 0x59, 0xce, 0x15, 0x82, 0xfa, 0x7d, 0x1c, 0x6c, 0x3c, 0xc6, 0x76, 0xe8, + 0x3e, 0xab, 0x3f, 0x2c, 0xc4, 0x1c, 0x75, 0x5a, 0x75, 0x88, 0x0c, 0x33, 0xd4, 0x86, 0x28, 0x72, + 0xd0, 0x31, 0xc1, 0x66, 0x8f, 0x71, 0xb2, 0xa7, 0x72, 0xb3, 0x8f, 0x98, 0x69, 0x23, 0xf4, 0x0d, + 0xce, 0xe8, 0x99, 0xa1, 0xb0, 0x2c, 0x91, 0x78, 0x50, 0x4c, 0x26, 0x1e, 0xbc, 0x07, 0x28, 0xee, + 0x8a, 0xf3, 0x5d, 0x83, 0xd2, 0x04, 0x2f, 0x2b, 0xd5, 0xdd, 0xe4, 0x1b, 0x60, 0x39, 0xef, 0x23, + 0x4d, 0x1f, 0xe9, 0x7d, 0x24, 0xf5, 0x0c, 0x9c, 0x22, 0x0e, 0xf6, 0x26, 0x0e, 0x3c, 0xab, 0xbb, + 0x8e, 0xfd, 0xae, 0x67, 0xb9, 0x81, 0x13, 0x26, 0x3d, 0xa9, 0x3a, 0x9c, 0xce, 0xa9, 0xe7, 0xe2, + 0x7e, 0x1b, 0xaa, 0x66, 0x54, 0x9c, 0xb5, 0xcf, 0x94, 0xc4, 0xd5, 0xe2, 0x08, 0xea, 0x07, 0x50, + 0x4f, 0x02, 0x64, 0xee, 0xdf, 0x20, 0x28, 0xed, 0xe3, 0xbe, 0x2b, 0xee, 0xb0, 0x91, 0xdf, 0x44, + 0xea, 0x2c, 0x76, 0x79, 0x84, 0x0f, 0xc4, 0x39, 0x44, 0x85, 0x96, 0x7c, 0x09, 0x1f, 0x84, 0x7d, + 0x93, 0x1e, 0xec, 0xf0, 0xac, 0x6e, 0xb2, 0x6f, 0x19, 0xf5, 0x51, 0xdf, 0xc8, 0xb0, 0x0d, 0x58, + 0x31, 0xef, 0xdb, 0xe9, 0xdc, 0xc7, 0x40, 0x28, 0x2e, 0xb8, 0x8e, 0xc9, 0x7f, 0xab, 0xdf, 0x57, + 0x60, 0x31, 0x05, 0x31, 0xe1, 0xd9, 0xd2, 0x4b, 0x30, 0x2b, 0xda, 0x2d, 0xa4, 0x13, 0x89, 0x19, + 0x2d, 0x4d, 0x80, 0xa0, 0x16, 0x2c, 0x46, 0x1a, 0x2d, 0xf0, 0x8a, 0xe9, 0xb1, 0x88, 0x07, 0x2e, + 0x94, 0xdd, 0x7a, 0x37, 0x51, 0xa2, 0x76, 0xa1, 0x9e, 0x84, 0x9a, 0x64, 0x4e, 0x1d, 0x8a, 0x5f, + 0xf5, 0xaf, 0x14, 0x98, 0x61, 0x65, 0x99, 0x83, 0x2d, 0x2d, 0x07, 0x85, 0xe4, 0x72, 0xf0, 0x3a, + 0x54, 0x19, 0x1d, 0x3d, 0xbc, 0xc1, 0x38, 0x2f, 0x6f, 0xaf, 0x33, 0xd2, 0x74, 0xb6, 0xc2, 0x20, + 0xfc, 0x4d, 0xba, 0xc1, 0xf4, 0x85, 0x46, 0x26, 0x22, 0x5d, 0xbc, 0x4a, 0xcb, 0xa8, 0xc9, 0x25, + 0x2e, 0x33, 0x8f, 0x61, 0xc6, 0xd8, 0x66, 0xbe, 0xb5, 0xb5, 0x4c, 0x9f, 0x9f, 0x4c, 0x6d, 0x30, + 0xab, 0x3b, 0xf4, 0x7d, 0xc8, 0xf4, 0xc6, 0x30, 0x7a, 0x43, 0x4e, 0x2f, 0x78, 0x2e, 0x75, 0xc2, + 0x2f, 0xa1, 0x0d, 0x3d, 0xf6, 0x74, 0x3b, 0xcf, 0x32, 0xf8, 0x10, 0x4e, 0xe4, 0xc2, 0xa0, 0xb7, + 0xc2, 0xc7, 0x78, 0x4d, 0xcf, 0x7a, 0xcc, 0x37, 0x16, 0xe6, 0xe5, 0x87, 0x3f, 0xd6, 0x28, 0xc0, + 0x3a, 0xad, 0x17, 0xcf, 0xf4, 0xb2, 0xaf, 0x4b, 0xcf, 0x43, 0x59, 0x3c, 0xab, 0x8f, 0x66, 0xa1, + 0xb8, 0xb3, 0xd6, 0xae, 0x4f, 0x91, 0x1f, 0xbb, 0xeb, 0xed, 0xba, 0x82, 0xca, 0x50, 0xea, 0xac, + 0xed, 0xb4, 0xeb, 0x85, 0x4b, 0x03, 0xa8, 0x27, 0x5f, 0x96, 0x47, 0x2b, 0x70, 0xac, 0xad, 0x6d, + 0xb7, 0x9b, 0xf7, 0x9b, 0x3b, 0xad, 0xed, 0x2d, 0xbd, 0xad, 0xb5, 0xde, 0x6f, 0xee, 0x6c, 0xd4, + 0xa7, 0xd0, 0x79, 0x38, 0x1d, 0xaf, 0x78, 0x77, 0xbb, 0xb3, 0xa3, 0xef, 0x6c, 0xeb, 0x6b, 0xdb, + 0x5b, 0x3b, 0xcd, 0xd6, 0xd6, 0x86, 0x56, 0x57, 0xd0, 0x69, 0x38, 0x11, 0x07, 0xb9, 0xdb, 0x5a, + 0x6f, 0x69, 0x1b, 0x6b, 0xe4, 0x77, 0xf3, 0x41, 0xbd, 0x70, 0xe9, 0x2d, 0xa8, 0x49, 0x97, 0x9c, + 0x08, 0x4b, 0xed, 0xed, 0xf5, 0xfa, 0x14, 0xaa, 0x41, 0x25, 0x4e, 0xa7, 0x0c, 0xa5, 0xad, 0xed, + 0xf5, 0x8d, 0x7a, 0x01, 0x01, 0xcc, 0xec, 0x34, 0xb5, 0xfb, 0x1b, 0x3b, 0xf5, 0xe2, 0xa5, 0x97, + 0x61, 0x35, 0xef, 0xb2, 0x1f, 0xaa, 0xc0, 0xf4, 0x26, 0xf6, 0x7a, 0xb8, 0x3e, 0x45, 0x50, 0x3a, + 0x44, 0x4b, 0x82, 0xba, 0x72, 0xe9, 0x76, 0xf2, 0xad, 0x1a, 0x8c, 0x16, 0xa1, 0xd6, 0x69, 0x6e, + 0xad, 0xdf, 0xdd, 0xfe, 0xaa, 0xae, 0x6d, 0x34, 0xd7, 0x3f, 0xa8, 0x4f, 0xa1, 0x25, 0xa8, 0x8b, + 0xa2, 0xad, 0xed, 0x1d, 0x56, 0xaa, 0x5c, 0x7a, 0x94, 0x08, 0x73, 0x31, 0x3a, 0x0e, 0x8b, 0x21, + 0x97, 0xfa, 0x9a, 0xb6, 0xd1, 0xdc, 0xd9, 0x20, 0xcc, 0x4b, 0xc5, 0xda, 0xee, 0xd6, 0x56, 0x6b, + 0xeb, 0x7e, 0x5d, 0x21, 0x54, 0xa3, 0xe2, 0x8d, 0xaf, 0xb6, 0x08, 0x70, 0x41, 0x06, 0xde, 0xdd, + 0xfa, 0xd2, 0xd6, 0xf6, 0x57, 0xb6, 0xea, 0xc5, 0x4b, 0xff, 0x3f, 0x9e, 0x4d, 0x13, 0x2d, 0x45, + 0x27, 0x61, 0x25, 0xd5, 0xa2, 0xbe, 0xf1, 0xfe, 0xc6, 0xd6, 0x4e, 0x7d, 0x4a, 0xae, 0xec, 0xec, + 0x34, 0xb5, 0xa8, 0x52, 0x49, 0x56, 0x6e, 0xb7, 0xdb, 0x61, 0x65, 0x41, 0xae, 0x5c, 0xdf, 0x78, + 0xb0, 0x11, 0x61, 0x16, 0x2f, 0x3d, 0x0b, 0x10, 0x4d, 0x39, 0x54, 0x85, 0xd9, 0xb5, 0xed, 0xdd, + 0xad, 0x9d, 0x0d, 0xad, 0x3e, 0x45, 0xa4, 0x7c, 0xbf, 0xb9, 0x7b, 0x7f, 0xa3, 0xae, 0x5c, 0xba, + 0x08, 0x73, 0x71, 0x05, 0x24, 0x70, 0x9d, 0x0f, 0x3a, 0x3b, 0x1b, 0x9b, 0x44, 0x22, 0x73, 0x50, + 0x5e, 0xbb, 0xaf, 0x6d, 0xef, 0xb6, 0xef, 0x75, 0xea, 0xca, 0xf5, 0xff, 0x5a, 0x0a, 0x37, 0xf5, + 0x3b, 0xd8, 0xa3, 0xb7, 0x51, 0xd6, 0x61, 0x56, 0xfc, 0xef, 0x0a, 0x69, 0xa3, 0x47, 0xfe, 0x5f, + 0x1b, 0x8d, 0x93, 0x99, 0x75, 0xdc, 0x95, 0x98, 0x42, 0xef, 0xd3, 0x63, 0x92, 0xd8, 0x4b, 0x71, + 0xe7, 0x12, 0xbb, 0xe7, 0xa9, 0x07, 0xe9, 0x1a, 0xe7, 0x47, 0x40, 0x84, 0x74, 0x3f, 0x80, 0x79, + 0xf9, 0x49, 0x56, 0x74, 0x5e, 0xde, 0xdc, 0xcf, 0x78, 0xed, 0xb5, 0xa1, 0x8e, 0x02, 0x09, 0x49, + 0xeb, 0x50, 0x4f, 0x3e, 0xc9, 0x8a, 0xa4, 0xcc, 0xa0, 0x9c, 0x17, 0x5f, 0x1b, 0xcf, 0x8e, 0x06, + 0x8a, 0x37, 0x90, 0x7a, 0x69, 0xf4, 0x99, 0xd1, 0x6f, 0x37, 0x66, 0x34, 0x90, 0xf7, 0xc0, 0x23, + 0x13, 0x8e, 0xbc, 0xd0, 0xa2, 0xc4, 0xe3, 0x9e, 0x19, 0xef, 0x00, 0xca, 0xc2, 0xc9, 0x7e, 0x03, + 0x4e, 0x9d, 0x42, 0xff, 0x0b, 0x16, 0x12, 0x57, 0x0d, 0x90, 0x84, 0x98, 0x7d, 0x83, 0xa2, 0xf1, + 0xcc, 0x48, 0x18, 0x79, 0x54, 0xe3, 0xd7, 0x09, 0x92, 0xa3, 0x9a, 0x71, 0x4d, 0x21, 0x39, 0xaa, + 0x99, 0xb7, 0x11, 0xa8, 0x22, 0x4a, 0x57, 0x07, 0x64, 0x45, 0xcc, 0xba, 0xaa, 0xd0, 0x38, 0x3f, + 0x02, 0x22, 0x2e, 0x90, 0xc4, 0xe5, 0x01, 0x59, 0x20, 0xd9, 0xd7, 0x12, 0x1a, 0xcf, 0x8c, 0x84, + 0x49, 0x8e, 0x64, 0x94, 0x99, 0x9c, 0x1e, 0xc9, 0x54, 0xe2, 0x7c, 0x7a, 0x24, 0xd3, 0x89, 0xcd, + 0x7c, 0x24, 0x13, 0xb9, 0xc4, 0xea, 0xc8, 0xec, 0xc4, 0xac, 0x91, 0xcc, 0xce, 0x60, 0x54, 0xa7, + 0xd0, 0x13, 0x58, 0xcd, 0xcb, 0x1e, 0x43, 0x2f, 0x1e, 0x22, 0xc9, 0xad, 0xf1, 0xd2, 0x64, 0xc0, + 0x61, 0xc3, 0x18, 0x50, 0x3a, 0xe2, 0x42, 0xcf, 0xc9, 0xe2, 0xce, 0x89, 0xe8, 0x1a, 0xcf, 0x8f, + 0x03, 0x0b, 0x9b, 0xb9, 0x0f, 0x65, 0x91, 0x97, 0x86, 0x24, 0x13, 0x98, 0xc8, 0x87, 0x6b, 0x9c, + 0xca, 0xae, 0x0c, 0x09, 0xbd, 0x01, 0x25, 0x52, 0x8a, 0x56, 0x92, 0x70, 0x82, 0xc0, 0x6a, 0xba, + 0x22, 0x44, 0x6e, 0xc2, 0x0c, 0x4b, 0xb8, 0x42, 0xd2, 0x59, 0xa8, 0x94, 0x10, 0xd6, 0x68, 0x64, + 0x55, 0x85, 0x24, 0xda, 0xec, 0x3f, 0x01, 0xf1, 0xfc, 0x29, 0x74, 0x26, 0xf9, 0x18, 0xbb, 0x9c, + 0xa8, 0xd5, 0x38, 0x9b, 0x5b, 0x1f, 0xd7, 0xd9, 0xc4, 0xc6, 0xea, 0xf9, 0x11, 0x07, 0x05, 0x59, + 0x3a, 0x9b, 0x7d, 0xfc, 0xc0, 0x06, 0x37, 0x7d, 0x3c, 0x81, 0x9e, 0xcb, 0xd5, 0x77, 0xa9, 0x89, + 0xe7, 0xc7, 0x81, 0xc5, 0xa7, 0x46, 0xf2, 0x55, 0x35, 0x75, 0xd4, 0x8b, 0x87, 0x59, 0x53, 0x23, + 0xe7, 0x25, 0x45, 0x75, 0x0a, 0xed, 0xc3, 0xb1, 0x8c, 0xa7, 0x16, 0xd1, 0xf3, 0xf9, 0xf6, 0x57, + 0x6a, 0xe5, 0x85, 0xb1, 0x70, 0xf1, 0x96, 0x32, 0x92, 0x26, 0xe4, 0x96, 0xf2, 0xb3, 0x36, 0xe4, + 0x96, 0x46, 0x65, 0x5f, 0x50, 0x45, 0xe4, 0x36, 0xe4, 0x44, 0xd6, 0x19, 0x7b, 0x86, 0x22, 0xa6, + 0x2c, 0xc6, 0x3e, 0x1c, 0xcb, 0xd8, 0x95, 0x90, 0x99, 0xcd, 0xdf, 0x2d, 0x91, 0x99, 0x1d, 0xb5, + 0xbd, 0x31, 0x85, 0x3e, 0x04, 0x74, 0x1f, 0x07, 0xb2, 0x2b, 0xe7, 0x23, 0x69, 0xa2, 0x26, 0x37, + 0x40, 0x72, 0xf4, 0x53, 0xda, 0x09, 0x51, 0xa7, 0xae, 0x29, 0xc8, 0x66, 0xb7, 0x99, 0x52, 0xf1, + 0x3b, 0xba, 0x90, 0x1c, 0xb6, 0xbc, 0x2d, 0x80, 0xc6, 0xc5, 0x09, 0x20, 0xc3, 0xbe, 0xd8, 0xc9, + 0x67, 0x7d, 0x45, 0x08, 0x79, 0x21, 0x5f, 0x4d, 0xe4, 0xb0, 0x3c, 0xdd, 0x5e, 0x6e, 0x80, 0x1e, + 0xfa, 0x73, 0x31, 0x65, 0x3a, 0x97, 0x9f, 0xc2, 0x93, 0xe3, 0xcf, 0x65, 0x29, 0xd0, 0xf5, 0xdf, + 0x2c, 0xc2, 0x1c, 0x4b, 0x75, 0xe2, 0xee, 0xe7, 0x26, 0x40, 0x94, 0x35, 0x88, 0x4e, 0x27, 0x79, + 0x94, 0x52, 0x31, 0x1b, 0x67, 0xf2, 0xaa, 0xe3, 0x66, 0x2e, 0x96, 0x8d, 0x27, 0x9b, 0xb9, 0x74, + 0x72, 0xa1, 0x6c, 0xe6, 0x32, 0xd2, 0xf8, 0xd4, 0x29, 0xf4, 0x1e, 0x54, 0xc2, 0xe4, 0x2f, 0x59, + 0x79, 0x92, 0x59, 0x6c, 0x8d, 0xd3, 0x39, 0xb5, 0x71, 0xee, 0x62, 0x39, 0x5d, 0x32, 0x77, 0xe9, + 0x7c, 0x31, 0x99, 0xbb, 0xac, 0x64, 0xb0, 0xa8, 0xbf, 0x2c, 0x8f, 0x20, 0xa3, 0xbf, 0x52, 0x5e, + 0x49, 0x46, 0x7f, 0xe5, 0x04, 0x04, 0x75, 0xea, 0xee, 0x9d, 0x1f, 0xfd, 0xf4, 0x8c, 0xf2, 0xe3, + 0x9f, 0x9e, 0x99, 0xfa, 0xbf, 0x1f, 0x9f, 0x51, 0x7e, 0xf4, 0xf1, 0x19, 0xe5, 0xef, 0x3e, 0x3e, + 0xa3, 0xfc, 0xe4, 0xe3, 0x33, 0xca, 0xb7, 0xff, 0xf9, 0xcc, 0xd4, 0x87, 0xea, 0xa3, 0x9b, 0xfe, + 0x15, 0xcb, 0xb9, 0xda, 0xf5, 0xac, 0xcb, 0x86, 0x6b, 0x5d, 0x75, 0x1f, 0xf5, 0xae, 0x1a, 0xae, + 0xe5, 0x5f, 0xe5, 0x74, 0xaf, 0x3e, 0x7e, 0xf9, 0xe1, 0x0c, 0xfd, 0xef, 0x71, 0xaf, 0xfc, 0x77, + 0x00, 0x00, 0x00, 0xff, 0xff, 0x26, 0xce, 0xd5, 0x75, 0xf7, 0x6f, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -12587,6 +12767,11 @@ func (m *LinuxSandboxSecurityContext) MarshalToSizedBuffer(dAtA []byte) (int, er _ = i var l int _ = l + if m.SupplementalGroupsPolicy != 0 { + i = encodeVarintApi(dAtA, i, uint64(m.SupplementalGroupsPolicy)) + i-- + dAtA[i] = 0x58 + } if m.Apparmor != nil { { size, err := m.Apparmor.MarshalToSizedBuffer(dAtA[:i]) @@ -15027,6 +15212,13 @@ func (m *LinuxContainerSecurityContext) MarshalToSizedBuffer(dAtA []byte) (int, _ = i var l int _ = l + if m.SupplementalGroupsPolicy != 0 { + i = encodeVarintApi(dAtA, i, uint64(m.SupplementalGroupsPolicy)) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x88 + } if m.Apparmor != nil { { size, err := m.Apparmor.MarshalToSizedBuffer(dAtA[:i]) @@ -15251,6 +15443,58 @@ func (m *LinuxContainerConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *LinuxContainerUser) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *LinuxContainerUser) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *LinuxContainerUser) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.SupplementalGroups) > 0 { + dAtA65 := make([]byte, len(m.SupplementalGroups)*10) + var j64 int + for _, num1 := range m.SupplementalGroups { + num := uint64(num1) + for num >= 1<<7 { + dAtA65[j64] = uint8(uint64(num)&0x7f | 0x80) + num >>= 7 + j64++ + } + dAtA65[j64] = uint8(num) + j64++ + } + i -= j64 + copy(dAtA[i:], dAtA65[:j64]) + i = encodeVarintApi(dAtA, i, uint64(j64)) + i-- + dAtA[i] = 0x1a + } + if m.Gid != 0 { + i = encodeVarintApi(dAtA, i, uint64(m.Gid)) + i-- + dAtA[i] = 0x10 + } + if m.Uid != 0 { + i = encodeVarintApi(dAtA, i, uint64(m.Uid)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + func (m *WindowsNamespaceOption) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -16454,6 +16698,20 @@ func (m *ContainerStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.User != nil { + { + size, err := m.User.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApi(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x92 + } if len(m.ImageId) > 0 { i -= len(m.ImageId) copy(dAtA[i:], m.ImageId) @@ -16717,6 +16975,41 @@ func (m *ContainerResources) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *ContainerUser) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ContainerUser) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ContainerUser) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Linux != nil { + { + size, err := m.Linux.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApi(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func (m *UpdateContainerResourcesRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -17129,21 +17422,21 @@ func (m *PortForwardRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { var l int _ = l if len(m.Port) > 0 { - dAtA87 := make([]byte, len(m.Port)*10) - var j86 int + dAtA91 := make([]byte, len(m.Port)*10) + var j90 int for _, num1 := range m.Port { num := uint64(num1) for num >= 1<<7 { - dAtA87[j86] = uint8(uint64(num)&0x7f | 0x80) + dAtA91[j90] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 - j86++ + j90++ } - dAtA87[j86] = uint8(num) - j86++ + dAtA91[j90] = uint8(num) + j90++ } - i -= j86 - copy(dAtA[i:], dAtA87[:j86]) - i = encodeVarintApi(dAtA, i, uint64(j86)) + i -= j90 + copy(dAtA[i:], dAtA91[:j90]) + i = encodeVarintApi(dAtA, i, uint64(j90)) i-- dAtA[i] = 0x12 } @@ -19994,6 +20287,9 @@ func (m *LinuxSandboxSecurityContext) Size() (n int) { l = m.Apparmor.Size() n += 1 + l + sovApi(uint64(l)) } + if m.SupplementalGroupsPolicy != 0 { + n += 1 + sovApi(uint64(m.SupplementalGroupsPolicy)) + } return n } @@ -21024,6 +21320,9 @@ func (m *LinuxContainerSecurityContext) Size() (n int) { l = m.Apparmor.Size() n += 2 + l + sovApi(uint64(l)) } + if m.SupplementalGroupsPolicy != 0 { + n += 2 + sovApi(uint64(m.SupplementalGroupsPolicy)) + } return n } @@ -21044,6 +21343,28 @@ func (m *LinuxContainerConfig) Size() (n int) { return n } +func (m *LinuxContainerUser) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Uid != 0 { + n += 1 + sovApi(uint64(m.Uid)) + } + if m.Gid != 0 { + n += 1 + sovApi(uint64(m.Gid)) + } + if len(m.SupplementalGroups) > 0 { + l = 0 + for _, e := range m.SupplementalGroups { + l += sovApi(uint64(e)) + } + n += 1 + sovApi(uint64(l)) + l + } + return n +} + func (m *WindowsNamespaceOption) Size() (n int) { if m == nil { return 0 @@ -21620,6 +21941,10 @@ func (m *ContainerStatus) Size() (n int) { if l > 0 { n += 2 + l + sovApi(uint64(l)) } + if m.User != nil { + l = m.User.Size() + n += 2 + l + sovApi(uint64(l)) + } return n } @@ -21661,6 +21986,19 @@ func (m *ContainerResources) Size() (n int) { return n } +func (m *ContainerUser) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Linux != nil { + l = m.Linux.Size() + n += 1 + l + sovApi(uint64(l)) + } + return n +} + func (m *UpdateContainerResourcesRequest) Size() (n int) { if m == nil { return 0 @@ -23034,6 +23372,7 @@ func (this *LinuxSandboxSecurityContext) String() string { `RunAsGroup:` + strings.Replace(this.RunAsGroup.String(), "Int64Value", "Int64Value", 1) + `,`, `Seccomp:` + strings.Replace(this.Seccomp.String(), "SecurityProfile", "SecurityProfile", 1) + `,`, `Apparmor:` + strings.Replace(this.Apparmor.String(), "SecurityProfile", "SecurityProfile", 1) + `,`, + `SupplementalGroupsPolicy:` + fmt.Sprintf("%v", this.SupplementalGroupsPolicy) + `,`, `}`, }, "") return s @@ -23762,6 +24101,7 @@ func (this *LinuxContainerSecurityContext) String() string { `ReadonlyPaths:` + fmt.Sprintf("%v", this.ReadonlyPaths) + `,`, `Seccomp:` + strings.Replace(this.Seccomp.String(), "SecurityProfile", "SecurityProfile", 1) + `,`, `Apparmor:` + strings.Replace(this.Apparmor.String(), "SecurityProfile", "SecurityProfile", 1) + `,`, + `SupplementalGroupsPolicy:` + fmt.Sprintf("%v", this.SupplementalGroupsPolicy) + `,`, `}`, }, "") return s @@ -23777,6 +24117,18 @@ func (this *LinuxContainerConfig) String() string { }, "") return s } +func (this *LinuxContainerUser) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&LinuxContainerUser{`, + `Uid:` + fmt.Sprintf("%v", this.Uid) + `,`, + `Gid:` + fmt.Sprintf("%v", this.Gid) + `,`, + `SupplementalGroups:` + fmt.Sprintf("%v", this.SupplementalGroups) + `,`, + `}`, + }, "") + return s +} func (this *WindowsNamespaceOption) String() string { if this == nil { return "nil" @@ -24181,6 +24533,7 @@ func (this *ContainerStatus) String() string { `LogPath:` + fmt.Sprintf("%v", this.LogPath) + `,`, `Resources:` + strings.Replace(this.Resources.String(), "ContainerResources", "ContainerResources", 1) + `,`, `ImageId:` + fmt.Sprintf("%v", this.ImageId) + `,`, + `User:` + strings.Replace(this.User.String(), "ContainerUser", "ContainerUser", 1) + `,`, `}`, }, "") return s @@ -24217,6 +24570,16 @@ func (this *ContainerResources) String() string { }, "") return s } +func (this *ContainerUser) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ContainerUser{`, + `Linux:` + strings.Replace(this.Linux.String(), "LinuxContainerUser", "LinuxContainerUser", 1) + `,`, + `}`, + }, "") + return s +} func (this *UpdateContainerResourcesRequest) String() string { if this == nil { return "nil" @@ -26781,6 +27144,25 @@ func (m *LinuxSandboxSecurityContext) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 11: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field SupplementalGroupsPolicy", wireType) + } + m.SupplementalGroupsPolicy = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.SupplementalGroupsPolicy |= SupplementalGroupsPolicy(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipApi(dAtA[iNdEx:]) @@ -34824,6 +35206,25 @@ func (m *LinuxContainerSecurityContext) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 17: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field SupplementalGroupsPolicy", wireType) + } + m.SupplementalGroupsPolicy = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.SupplementalGroupsPolicy |= SupplementalGroupsPolicy(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipApi(dAtA[iNdEx:]) @@ -34967,6 +35368,170 @@ func (m *LinuxContainerConfig) Unmarshal(dAtA []byte) error { } return nil } +func (m *LinuxContainerUser) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: LinuxContainerUser: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LinuxContainerUser: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Uid", wireType) + } + m.Uid = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Uid |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Gid", wireType) + } + m.Gid = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Gid |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType == 0 { + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.SupplementalGroups = append(m.SupplementalGroups, v) + } else if wireType == 2 { + var packedLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + packedLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if packedLen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + packedLen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + var elementCount int + var count int + for _, integer := range dAtA[iNdEx:postIndex] { + if integer < 128 { + count++ + } + } + elementCount = count + if elementCount != 0 && len(m.SupplementalGroups) == 0 { + m.SupplementalGroups = make([]int64, 0, elementCount) + } + for iNdEx < postIndex { + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.SupplementalGroups = append(m.SupplementalGroups, v) + } + } else { + return fmt.Errorf("proto: wrong wireType = %d for field SupplementalGroups", wireType) + } + default: + iNdEx = preIndex + skippy, err := skipApi(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApi + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *WindowsNamespaceOption) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -39317,6 +39882,42 @@ func (m *ContainerStatus) Unmarshal(dAtA []byte) error { } m.ImageId = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 18: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field User", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.User == nil { + m.User = &ContainerUser{} + } + if err := m.User.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipApi(dAtA[iNdEx:]) @@ -39673,6 +40274,92 @@ func (m *ContainerResources) Unmarshal(dAtA []byte) error { } return nil } +func (m *ContainerUser) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ContainerUser: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ContainerUser: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Linux", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Linux == nil { + m.Linux = &LinuxContainerUser{} + } + if err := m.Linux.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipApi(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApi + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *UpdateContainerResourcesRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/staging/src/k8s.io/cri-api/pkg/apis/runtime/v1/api.proto b/staging/src/k8s.io/cri-api/pkg/apis/runtime/v1/api.proto index d707716cbda..0eecb0bdb9f 100644 --- a/staging/src/k8s.io/cri-api/pkg/apis/runtime/v1/api.proto +++ b/staging/src/k8s.io/cri-api/pkg/apis/runtime/v1/api.proto @@ -321,6 +321,20 @@ message NamespaceOption { UserNamespace userns_options = 5; } +// SupplementalGroupsPolicy defines how supplemental groups +// of the first container processes are calculated. +enum SupplementalGroupsPolicy { + // Merge means that the container's provided SupplementalGroups + // and FsGroup (specified in SecurityContext) will be merged with + // the primary user's groups as defined in the container image + // (in /etc/group). + Merge = 0; + // Strict means that the container's provided SupplementalGroups + // and FsGroup (specified in SecurityContext) will be used instead of + // any groups defined in the container image. + Strict = 1; +} + // Int64Value is the wrapper of int64. message Int64Value { // The value. @@ -345,13 +359,14 @@ message LinuxSandboxSecurityContext { Int64Value run_as_group = 8; // If set, the root filesystem of the sandbox is read-only. bool readonly_rootfs = 4; - // List of groups applied to the first process run in the sandbox, in - // addition to the sandbox's primary GID, and group memberships defined - // in the container image for the sandbox's primary UID of the container process. - // If the list is empty, no additional groups are added to any container. - // Note that group memberships defined in the container image for the sandbox's primary UID - // of the container process are still effective, even if they are not included in this list. + // List of groups applied to the first process run in each container. + // supplemental_groups_policy can control how groups will be calculated. repeated int64 supplemental_groups = 5; + // supplemental_groups_policy defines how supplemental groups of the first + // container processes are calculated. + // Valid values are "Merge" and "Strict". + // If not specified, "Merge" is used. + SupplementalGroupsPolicy supplemental_groups_policy = 11; // Indicates whether the sandbox will be asked to run a privileged // container. If a privileged container is to be executed within it, this // MUST be true. @@ -905,13 +920,14 @@ message LinuxContainerSecurityContext { string run_as_username = 6; // If set, the root filesystem of the container is read-only. bool readonly_rootfs = 7; - // List of groups applied to the first process run in the container, in - // addition to the container's primary GID, and group memberships defined - // in the container image for the container's primary UID of the container process. - // If the list is empty, no additional groups are added to any container. - // Note that group memberships defined in the container image for the container's primary UID - // of the container process are still effective, even if they are not included in this list. + // List of groups applied to the first process run in each container. + // supplemental_groups_policy can control how groups will be calculated. repeated int64 supplemental_groups = 8; + // supplemental_groups_policy defines how supplemental groups of the first + // container processes are calculated. + // Valid values are "Merge" and "Strict". + // If not specified, "Merge" is used. + SupplementalGroupsPolicy supplemental_groups_policy = 17; // no_new_privs defines if the flag for no_new_privs should be set on the // container. bool no_new_privs = 11; @@ -950,6 +966,15 @@ message LinuxContainerConfig { LinuxContainerSecurityContext security_context = 2; } +message LinuxContainerUser { + // uid is the primary uid initially attached to the first process in the container + int64 uid = 1; + // gid is the primary gid initially attached to the first process in the container + int64 gid = 2; + // supplemental_groups are the supplemental groups initially attached to the first process in the container + repeated int64 supplemental_groups = 3; +} + // WindowsNamespaceOption provides options for Windows namespaces. message WindowsNamespaceOption { // Network namespace for this container/sandbox. @@ -1286,6 +1311,8 @@ message ContainerStatus { // misusage, we now introduce the image_id field, which should always refer // to a unique image identifier on the node. string image_id = 17; + // User identities initially attached to the container + ContainerUser user = 18; } message ContainerStatusResponse { @@ -1306,6 +1333,17 @@ message ContainerResources { WindowsContainerResources windows = 2; } +message ContainerUser { + // User identities initially attached to first process in the Linux container. + // Note that the actual running identity can be changed if the process has enough privilege to do so. + LinuxContainerUser linux = 1; + + // User identities initially attached to first process in the Windows container + // This is just reserved for future use. + // WindowsContainerUser windows = 2; +} + + message UpdateContainerResourcesRequest { // ID of the container to update. string container_id = 1;