From 816563f96b95a5d437fe4fa9ef92e73329952f36 Mon Sep 17 00:00:00 2001 From: dove0012 Date: Wed, 13 Sep 2023 17:31:43 +0800 Subject: [PATCH] =?UTF-8?q?=E6=93=8D=E4=BD=9C=E6=97=A5=E5=BF=97=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E6=B7=BB=E5=8A=A0ResourceName=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E5=AD=98=E5=82=A8=E5=B9=B6=E8=BF=94=E5=9B=9E=E5=89=8D=E7=AB=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/clustermanager/clustermanager.pb.go | 5162 ++-- .../clustermanager.pb.validate.go | 22929 +++++++++++++++- .../api/clustermanager/clustermanager.proto | 53 +- .../clustermanager.swagger.json | 15 +- .../actions/autoscalingoption/status.go | 1 + .../actions/autoscalingoption/update.go | 1 + .../internal/actions/cloud/create.go | 1 + .../internal/actions/cloud/delete.go | 1 + .../internal/actions/cloud/update.go | 1 + .../internal/actions/cloudvpc/create.go | 1 + .../internal/actions/cloudvpc/delete.go | 1 + .../internal/actions/cloudvpc/update.go | 1 + .../internal/actions/cluster/create.go | 1 + .../actions/cluster/create_vcluster.go | 4 +- .../internal/actions/cluster/delete.go | 2 + .../actions/cluster/delete_vcluster.go | 1 + .../actions/cluster/federatecluster.go | 1 + .../internal/actions/cluster/import.go | 4 +- .../internal/actions/cluster/retry.go | 1 + .../internal/actions/cluster/update.go | 1 + .../internal/actions/nodegroup/autoscale.go | 2 + .../internal/actions/nodegroup/create.go | 1 + .../internal/actions/nodegroup/delete.go | 3 + .../internal/actions/nodegroup/update.go | 4 + .../actions/operationlog/operationlog.go | 2 + .../store/operationlog/operationlog.go | 1 + .../internal/store/util/util.go | 2 + 27 files changed, 24180 insertions(+), 4017 deletions(-) diff --git a/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.pb.go b/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.pb.go index aba5736222..a40a8a725e 100644 --- a/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.pb.go +++ b/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.pb.go @@ -5407,7 +5407,7 @@ func (m *InstanceTemplateConfig) GetIsMonitorService() bool { return false } -// LaunchConfigure template for scaling node +//LaunchConfigure template for scaling node type LaunchConfiguration struct { LaunchConfigurationID string `protobuf:"bytes,1,opt,name=launchConfigurationID,proto3" json:"launchConfigurationID,omitempty"` LaunchConfigureName string `protobuf:"bytes,2,opt,name=launchConfigureName,proto3" json:"launchConfigureName,omitempty"` @@ -8134,7 +8134,7 @@ type CreateClusterReq struct { FederationClusterID string `protobuf:"bytes,12,opt,name=federationClusterID,proto3" json:"federationClusterID,omitempty"` Labels map[string]string `protobuf:"bytes,13,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` Creator string `protobuf:"bytes,14,opt,name=creator,proto3" json:"creator,omitempty"` - // 集群创建的控制信息 + //集群创建的控制信息 OnlyCreateInfo bool `protobuf:"varint,15,opt,name=onlyCreateInfo,proto3" json:"onlyCreateInfo,omitempty"` BcsAddons map[string]*BKOpsPlugin `protobuf:"bytes,17,rep,name=bcsAddons,proto3" json:"bcsAddons,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` ExtraAddons map[string]*BKOpsPlugin `protobuf:"bytes,18,rep,name=extraAddons,proto3" json:"extraAddons,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` @@ -20384,12 +20384,13 @@ func (m *GetCloudRegionZonesResponse) GetData() []*ZoneInfo { type OperationLog struct { ResourceType string `protobuf:"bytes,1,opt,name=resourceType,proto3" json:"resourceType,omitempty"` ResourceID string `protobuf:"bytes,2,opt,name=resourceID,proto3" json:"resourceID,omitempty"` - TaskID string `protobuf:"bytes,3,opt,name=taskID,proto3" json:"taskID,omitempty"` - Message string `protobuf:"bytes,4,opt,name=message,proto3" json:"message,omitempty"` - OpUser string `protobuf:"bytes,5,opt,name=opUser,proto3" json:"opUser,omitempty"` - CreateTime string `protobuf:"bytes,6,opt,name=createTime,proto3" json:"createTime,omitempty"` - ClusterID string `protobuf:"bytes,7,opt,name=clusterID,proto3" json:"clusterID,omitempty"` - ProjectID string `protobuf:"bytes,8,opt,name=projectID,proto3" json:"projectID,omitempty"` + ResourceName string `protobuf:"bytes,3,opt,name=resourceName,proto3" json:"resourceName,omitempty"` + TaskID string `protobuf:"bytes,4,opt,name=taskID,proto3" json:"taskID,omitempty"` + Message string `protobuf:"bytes,5,opt,name=message,proto3" json:"message,omitempty"` + OpUser string `protobuf:"bytes,6,opt,name=opUser,proto3" json:"opUser,omitempty"` + CreateTime string `protobuf:"bytes,7,opt,name=createTime,proto3" json:"createTime,omitempty"` + ClusterID string `protobuf:"bytes,8,opt,name=clusterID,proto3" json:"clusterID,omitempty"` + ProjectID string `protobuf:"bytes,9,opt,name=projectID,proto3" json:"projectID,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-" bson:"-"` XXX_unrecognized []byte `json:"-" bson:"-"` XXX_sizecache int32 `json:"-" bson:"-"` @@ -20434,6 +20435,13 @@ func (m *OperationLog) GetResourceID() string { return "" } +func (m *OperationLog) GetResourceName() string { + if m != nil { + return m.ResourceName + } + return "" +} + func (m *OperationLog) GetTaskID() string { if m != nil { return m.TaskID @@ -20479,14 +20487,15 @@ func (m *OperationLog) GetProjectID() string { type TaskOperationLog struct { ResourceType string `protobuf:"bytes,1,opt,name=resourceType,proto3" json:"resourceType,omitempty"` ResourceID string `protobuf:"bytes,2,opt,name=resourceID,proto3" json:"resourceID,omitempty"` - TaskID string `protobuf:"bytes,3,opt,name=taskID,proto3" json:"taskID,omitempty"` - Message string `protobuf:"bytes,4,opt,name=message,proto3" json:"message,omitempty"` - OpUser string `protobuf:"bytes,5,opt,name=opUser,proto3" json:"opUser,omitempty"` - CreateTime string `protobuf:"bytes,6,opt,name=createTime,proto3" json:"createTime,omitempty"` - ClusterID string `protobuf:"bytes,7,opt,name=clusterID,proto3" json:"clusterID,omitempty"` - ProjectID string `protobuf:"bytes,8,opt,name=projectID,proto3" json:"projectID,omitempty"` - Status string `protobuf:"bytes,9,opt,name=status,proto3" json:"status,omitempty"` - TaskType string `protobuf:"bytes,10,opt,name=taskType,proto3" json:"taskType,omitempty"` + ResourceName string `protobuf:"bytes,3,opt,name=resourceName,proto3" json:"resourceName,omitempty"` + TaskID string `protobuf:"bytes,4,opt,name=taskID,proto3" json:"taskID,omitempty"` + Message string `protobuf:"bytes,5,opt,name=message,proto3" json:"message,omitempty"` + OpUser string `protobuf:"bytes,6,opt,name=opUser,proto3" json:"opUser,omitempty"` + CreateTime string `protobuf:"bytes,7,opt,name=createTime,proto3" json:"createTime,omitempty"` + ClusterID string `protobuf:"bytes,8,opt,name=clusterID,proto3" json:"clusterID,omitempty"` + ProjectID string `protobuf:"bytes,9,opt,name=projectID,proto3" json:"projectID,omitempty"` + Status string `protobuf:"bytes,10,opt,name=status,proto3" json:"status,omitempty"` + TaskType string `protobuf:"bytes,11,opt,name=taskType,proto3" json:"taskType,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-" bson:"-"` XXX_unrecognized []byte `json:"-" bson:"-"` XXX_sizecache int32 `json:"-" bson:"-"` @@ -20531,6 +20540,13 @@ func (m *TaskOperationLog) GetResourceID() string { return "" } +func (m *TaskOperationLog) GetResourceName() string { + if m != nil { + return m.ResourceName + } + return "" +} + func (m *TaskOperationLog) GetTaskID() string { if m != nil { return m.TaskID @@ -22516,13 +22532,14 @@ func (m *ListOperationLogsResponseData) GetResults() []*OperationLogDetail { type OperationLogDetail struct { ResourceType string `protobuf:"bytes,1,opt,name=resourceType,proto3" json:"resourceType,omitempty"` ResourceID string `protobuf:"bytes,2,opt,name=resourceID,proto3" json:"resourceID,omitempty"` - TaskID string `protobuf:"bytes,3,opt,name=taskID,proto3" json:"taskID,omitempty"` - Message string `protobuf:"bytes,4,opt,name=message,proto3" json:"message,omitempty"` - OpUser string `protobuf:"bytes,5,opt,name=opUser,proto3" json:"opUser,omitempty"` - CreateTime string `protobuf:"bytes,6,opt,name=createTime,proto3" json:"createTime,omitempty"` - Task *Task `protobuf:"bytes,7,opt,name=task,proto3" json:"task,omitempty"` - TaskType string `protobuf:"bytes,8,opt,name=taskType,proto3" json:"taskType,omitempty"` - Status string `protobuf:"bytes,9,opt,name=status,proto3" json:"status,omitempty"` + ResourceName string `protobuf:"bytes,3,opt,name=resourceName,proto3" json:"resourceName,omitempty"` + TaskID string `protobuf:"bytes,4,opt,name=taskID,proto3" json:"taskID,omitempty"` + Message string `protobuf:"bytes,5,opt,name=message,proto3" json:"message,omitempty"` + OpUser string `protobuf:"bytes,6,opt,name=opUser,proto3" json:"opUser,omitempty"` + CreateTime string `protobuf:"bytes,7,opt,name=createTime,proto3" json:"createTime,omitempty"` + Task *Task `protobuf:"bytes,8,opt,name=task,proto3" json:"task,omitempty"` + TaskType string `protobuf:"bytes,9,opt,name=taskType,proto3" json:"taskType,omitempty"` + Status string `protobuf:"bytes,10,opt,name=status,proto3" json:"status,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-" bson:"-"` XXX_unrecognized []byte `json:"-" bson:"-"` XXX_sizecache int32 `json:"-" bson:"-"` @@ -22567,6 +22584,13 @@ func (m *OperationLogDetail) GetResourceID() string { return "" } +func (m *OperationLogDetail) GetResourceName() string { + if m != nil { + return m.ResourceName + } + return "" +} + func (m *OperationLogDetail) GetTaskID() string { if m != nil { return m.TaskID @@ -27060,7 +27084,7 @@ func init() { func init() { proto.RegisterFile("clustermanager.proto", fileDescriptor_d789ea45d40d7a6b) } var fileDescriptor_d789ea45d40d7a6b = []byte{ - // 63007 bytes of a gzipped FileDescriptorProto + // 63034 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xfd, 0x09, 0x70, 0x1c, 0x47, 0x96, 0x20, 0x88, 0x76, 0x80, 0x17, 0xe0, 0xbc, 0x43, 0x24, 0x05, 0x91, 0x12, 0x95, 0x82, 0x8e, 0x02, 0x43, 0x00, 0x41, 0x86, 0x6e, 0xa8, 0xa4, 0x52, 0x20, 0x01, 0x52, 0x29, 0x5e, 0x50, 0x80, @@ -28466,2539 +28490,2541 @@ var fileDescriptor_d789ea45d40d7a6b = []byte{ 0xfe, 0x14, 0x28, 0xae, 0x4e, 0xc6, 0xae, 0x6a, 0x77, 0x0e, 0xe4, 0xa5, 0x8b, 0xd6, 0xe4, 0xeb, 0x10, 0x82, 0xbf, 0xb7, 0x5a, 0xf9, 0x22, 0xf0, 0xab, 0x30, 0x06, 0x2c, 0x96, 0x00, 0xba, 0x19, 0xa9, 0x63, 0xea, 0xf3, 0x6f, 0xa3, 0x42, 0x9c, 0x9a, 0x23, 0xa4, 0x44, 0xb0, 0x1e, 0xad, 0x10, - 0x52, 0x50, 0x50, 0xa0, 0xf8, 0x0c, 0x61, 0x08, 0xff, 0x1f, 0x7b, 0x7f, 0x02, 0x1d, 0xc5, 0x95, - 0x2e, 0x08, 0xc2, 0x15, 0x92, 0x10, 0xe2, 0x22, 0xb6, 0x60, 0x93, 0xd9, 0x9c, 0x96, 0xed, 0x32, - 0x8a, 0x92, 0x58, 0xc2, 0x2e, 0x2f, 0xf2, 0x46, 0x68, 0x01, 0xab, 0xcc, 0x22, 0x87, 0x80, 0x72, - 0xd9, 0xe5, 0x72, 0x25, 0xca, 0x00, 0xa7, 0x91, 0x32, 0x55, 0x99, 0x29, 0x6c, 0x5c, 0xcb, 0x13, - 0x8b, 0x40, 0x02, 0x6d, 0x84, 0x59, 0x65, 0x61, 0xc0, 0x66, 0xf3, 0x22, 0x84, 0x37, 0x10, 0x29, - 0xc9, 0xfc, 0x7d, 0xfe, 0x79, 0xbd, 0xce, 0xe9, 0xe9, 0xe6, 0xf5, 0x9b, 0xe9, 0x9e, 0xee, 0xe9, - 0xe9, 0x7e, 0x64, 0x64, 0x4a, 0x73, 0x7a, 0x9a, 0x9e, 0x33, 0x33, 0xe7, 0xbc, 0xe1, 0x4c, 0xcf, - 0xcc, 0x89, 0xfb, 0xdd, 0x7b, 0xe3, 0xc6, 0x92, 0x29, 0xb1, 0x83, 0x97, 0xe3, 0x73, 0x50, 0xde, - 0x2d, 0xee, 0xf6, 0x7d, 0xf7, 0xdb, 0xbf, 0xfe, 0x78, 0xe2, 0xf2, 0x51, 0xa3, 0x6f, 0x17, 0x8b, - 0x5b, 0xe3, 0x08, 0xaa, 0xcd, 0x7a, 0x88, 0x9f, 0x0b, 0x68, 0x62, 0x6d, 0x44, 0x0b, 0x68, 0xa1, - 0x58, 0xd0, 0x5f, 0x17, 0x2d, 0x98, 0xe1, 0x1d, 0xaf, 0x86, 0x3c, 0x43, 0x8b, 0xca, 0xad, 0xa6, - 0x20, 0xfe, 0xc7, 0x51, 0x8e, 0xf9, 0x11, 0xe4, 0x95, 0x14, 0x08, 0xf7, 0xa6, 0x0e, 0x1c, 0x31, - 0x7a, 0x0f, 0xa7, 0xba, 0x77, 0x42, 0xce, 0x15, 0x1a, 0x80, 0x75, 0x2f, 0x09, 0x32, 0xd6, 0xbd, - 0xd3, 0xea, 0xc6, 0x64, 0x09, 0xa0, 0x0d, 0x30, 0x5b, 0x43, 0xba, 0x20, 0x7e, 0x68, 0xb1, 0x14, - 0x4d, 0xc0, 0x58, 0xdb, 0xf2, 0x2b, 0x2d, 0x9b, 0xa7, 0x2b, 0x0f, 0x49, 0x56, 0xa9, 0x9c, 0x6f, - 0x8b, 0x90, 0x6b, 0x55, 0x88, 0x2f, 0xba, 0x9d, 0x4e, 0xe1, 0x89, 0xe0, 0xe3, 0xdc, 0xe6, 0xa7, - 0x8b, 0x70, 0x3b, 0xe7, 0x0d, 0x34, 0xd5, 0xb9, 0x76, 0x0f, 0x09, 0xcc, 0x12, 0x5e, 0x02, 0xe3, - 0x21, 0x39, 0xb4, 0x86, 0xe0, 0xa5, 0x33, 0xf5, 0xba, 0xf2, 0x2e, 0x7a, 0x47, 0xa2, 0x6f, 0xbd, - 0xfc, 0x16, 0xff, 0xe4, 0x98, 0xd7, 0xe2, 0xc0, 0xb7, 0x89, 0xa1, 0x0f, 0x8d, 0xbe, 0x4b, 0x23, - 0x43, 0x5d, 0x01, 0x6d, 0x4b, 0xb8, 0x81, 0xe8, 0xe3, 0xaf, 0x36, 0x6d, 0x07, 0x97, 0x42, 0xc0, - 0x1a, 0x90, 0xed, 0x0a, 0x54, 0xba, 0x2c, 0xf9, 0x18, 0x48, 0x8a, 0x81, 0xb4, 0x1e, 0xe9, 0xde, - 0x9f, 0x3a, 0x3d, 0x50, 0x68, 0x4c, 0x41, 0x39, 0x6b, 0xfd, 0xd1, 0xcd, 0xe2, 0x6b, 0x28, 0x37, - 0xe6, 0x8f, 0x6e, 0x66, 0x04, 0xc5, 0x73, 0xba, 0xf2, 0xb4, 0x44, 0x8a, 0xe4, 0xe2, 0xc4, 0xc0, - 0x00, 0x46, 0x66, 0x56, 0x5c, 0xde, 0xcb, 0x43, 0xc9, 0x78, 0x5f, 0xa2, 0xbf, 0x23, 0x75, 0xe2, - 0x9c, 0x79, 0x99, 0x70, 0x3d, 0xc8, 0xa6, 0x55, 0xd2, 0x4b, 0xfc, 0x33, 0xca, 0x33, 0xff, 0xc2, - 0x38, 0x0e, 0xa8, 0x09, 0xbf, 0xae, 0xfc, 0x4e, 0x62, 0x85, 0xb2, 0x4a, 0xba, 0x51, 0xdc, 0x06, - 0x8a, 0x1a, 0x30, 0xc1, 0x21, 0x81, 0x6f, 0x41, 0x0c, 0x8e, 0xe3, 0xa9, 0xaf, 0x0d, 0x5b, 0x65, - 0x16, 0xe7, 0x1e, 0x5d, 0x1e, 0x09, 0xd7, 0x93, 0x8a, 0x54, 0x6f, 0xab, 0xca, 0x46, 0x17, 0xdf, - 0x67, 0x01, 0x0e, 0x81, 0xe6, 0xf8, 0x3d, 0xa6, 0x00, 0x49, 0x80, 0xc3, 0x7c, 0x7e, 0xc6, 0xd7, - 0xcb, 0x2a, 0x22, 0x65, 0x6a, 0x7e, 0xd5, 0xea, 0xaa, 0xb5, 0x55, 0xca, 0xca, 0xaa, 0x37, 0xaa, - 0x56, 0xaf, 0x50, 0xc7, 0xab, 0xeb, 0x56, 0xaf, 0xc6, 0x7f, 0xd4, 0xac, 0x2b, 0x2f, 0xaf, 0xac, - 0xa9, 0x51, 0xc7, 0x2f, 0x57, 0xaa, 0x56, 0xae, 0x53, 0x2b, 0xd5, 0xf1, 0x6b, 0xab, 0x56, 0x55, - 0xae, 0x59, 0xb7, 0x56, 0x9d, 0xbc, 0x7c, 0x8d, 0x5a, 0x5e, 0xb9, 0xb6, 0x52, 0x5d, 0x55, 0xb5, - 0x5a, 0x59, 0x5b, 0xc9, 0x02, 0x1b, 0xfe, 0xce, 0xa2, 0x5b, 0x81, 0xfc, 0xc0, 0x5e, 0x9a, 0x8c, - 0x6e, 0x7d, 0x1a, 0xbe, 0x0d, 0x1a, 0x1f, 0xeb, 0x60, 0xf7, 0x9c, 0x1a, 0xd9, 0x7f, 0x04, 0x0c, - 0x22, 0x80, 0xa4, 0x4d, 0x76, 0x76, 0xa5, 0x4e, 0xc6, 0xd9, 0xf1, 0x5a, 0xb4, 0xed, 0x53, 0x68, - 0x5c, 0x34, 0xe6, 0x8f, 0xd8, 0xd2, 0x5b, 0x43, 0x89, 0x2c, 0xc2, 0xd8, 0x2c, 0xcd, 0x8e, 0x79, - 0x75, 0xa1, 0x4a, 0x5c, 0x84, 0xb2, 0xb5, 0x50, 0x80, 0xb8, 0x93, 0x60, 0x50, 0x31, 0x7f, 0xd3, - 0x1e, 0x26, 0x2d, 0x7c, 0xf4, 0x18, 0xe9, 0x61, 0x56, 0x88, 0x2b, 0xd1, 0x24, 0x0d, 0x07, 0xf2, - 0xa2, 0xc1, 0x63, 0x21, 0xa1, 0x2c, 0x76, 0x7d, 0xb2, 0xd7, 0xd0, 0x31, 0x60, 0x45, 0x64, 0x0c, - 0x7b, 0x13, 0x71, 0x1d, 0x9a, 0x58, 0xdb, 0x18, 0x89, 0x68, 0xa1, 0x58, 0x4d, 0x4c, 0x6b, 0x20, - 0x54, 0x04, 0x46, 0x82, 0x7c, 0xb9, 0xfc, 0x08, 0x19, 0xa9, 0xf7, 0x53, 0xa3, 0xe7, 0x2c, 0x71, - 0x5d, 0xed, 0xde, 0x99, 0xec, 0x3d, 0x35, 0xf2, 0x39, 0x79, 0x4a, 0x54, 0xbe, 0xbd, 0x58, 0x85, - 0xf2, 0xa3, 0x31, 0xad, 0xa1, 0xc6, 0x64, 0x85, 0x42, 0xb5, 0x26, 0x5d, 0x91, 0x4d, 0xb3, 0xa4, - 0xd8, 0x2a, 0x1c, 0x53, 0xc4, 0xe3, 0xa9, 0xb6, 0x16, 0xe2, 0x76, 0xc1, 0xdc, 0x56, 0xad, 0x81, - 0x9a, 0xe7, 0x3f, 0xec, 0x36, 0x92, 0x89, 0x6e, 0x5e, 0x64, 0x7e, 0x95, 0xa0, 0xbb, 0x57, 0x75, - 0xe5, 0x15, 0x09, 0xba, 0xc8, 0x2f, 0xc3, 0xf0, 0xc3, 0x7d, 0xa7, 0x53, 0x03, 0xbb, 0x60, 0x78, - 0x2e, 0x6b, 0x9d, 0x45, 0x71, 0x41, 0x21, 0x00, 0x0d, 0x8e, 0xfe, 0xbc, 0xdd, 0xe8, 0xef, 0x4f, - 0x1e, 0xba, 0xa0, 0xc2, 0x38, 0xe2, 0x32, 0x3e, 0x0e, 0x39, 0xd0, 0x19, 0x85, 0xba, 0xf2, 0x30, - 0x1f, 0x87, 0x9c, 0xad, 0x04, 0x73, 0xcb, 0x98, 0xb6, 0xe1, 0x43, 0x8f, 0x2f, 0xe3, 0x99, 0x83, - 0x7c, 0x6e, 0x04, 0x8b, 0x39, 0xb0, 0x8f, 0xe0, 0x0a, 0x58, 0xc6, 0x51, 0xcf, 0x93, 0x3c, 0x83, - 0x97, 0xc3, 0x15, 0xc3, 0xb8, 0x35, 0x11, 0x8f, 0xdb, 0x82, 0x97, 0xd7, 0xf9, 0xa3, 0x31, 0x90, - 0xda, 0x12, 0xb2, 0x00, 0xc2, 0x87, 0x5b, 0xc5, 0xb2, 0x98, 0xe8, 0xdf, 0x93, 0xfc, 0xf2, 0x84, - 0x1d, 0xb9, 0x5a, 0xf5, 0x7c, 0xf0, 0xf2, 0x29, 0x9e, 0xc1, 0xcb, 0x61, 0xee, 0x10, 0x7e, 0xd4, - 0xfc, 0x3a, 0x25, 0xbe, 0xeb, 0xd1, 0xe4, 0x8d, 0xe1, 0x48, 0xad, 0x46, 0x43, 0x32, 0xd3, 0x9c, - 0x54, 0x38, 0x96, 0x9d, 0xa3, 0x4a, 0x5e, 0x42, 0xce, 0x8b, 0x26, 0x84, 0x83, 0x34, 0x7d, 0xa9, - 0x81, 0x96, 0x64, 0xef, 0x27, 0x0c, 0xc9, 0x81, 0x17, 0x70, 0xb2, 0xe3, 0x8c, 0xd1, 0x72, 0x41, - 0x75, 0x8c, 0x20, 0xb6, 0x0b, 0x28, 0xbf, 0x36, 0x5c, 0x5f, 0x1f, 0x0e, 0x55, 0xfb, 0x23, 0xfe, - 0xfa, 0x68, 0xc1, 0x34, 0x7c, 0x6b, 0x7e, 0xee, 0x79, 0x6b, 0xca, 0xb9, 0x86, 0x70, 0x79, 0xb0, - 0x07, 0xa3, 0x6d, 0x00, 0x79, 0x91, 0xd1, 0xfc, 0xa5, 0xd1, 0xfc, 0x15, 0xd3, 0x6c, 0x43, 0xd8, - 0xf2, 0xe1, 0x8b, 0x67, 0xcd, 0x3b, 0x07, 0x26, 0x23, 0x34, 0xc0, 0xc8, 0xf1, 0x91, 0x26, 0x5d, - 0xb5, 0xf5, 0x16, 0xcb, 0x01, 0xdb, 0x72, 0x24, 0xc6, 0x13, 0xba, 0xf2, 0x98, 0xc4, 0x0a, 0xe5, - 0x02, 0x1e, 0xdb, 0xf2, 0x5c, 0x9c, 0xca, 0xda, 0x88, 0xab, 0x11, 0x0a, 0x85, 0x03, 0x5a, 0x55, - 0xb5, 0xc9, 0xb2, 0xe2, 0xe4, 0x53, 0x13, 0x40, 0x66, 0xc3, 0x15, 0xcb, 0xf3, 0x41, 0x67, 0x45, - 0x0e, 0xe2, 0xc3, 0xf6, 0xc4, 0x50, 0x4f, 0xaa, 0x7b, 0x67, 0x55, 0x35, 0xe1, 0x7d, 0xb9, 0xa6, - 0xe2, 0x06, 0x34, 0xd1, 0xfc, 0x45, 0x32, 0xa7, 0x91, 0x68, 0xf0, 0x38, 0xc7, 0x05, 0x5f, 0x2e, - 0x2f, 0x1a, 0x3e, 0x77, 0xde, 0x18, 0x3a, 0x80, 0xfd, 0x43, 0xad, 0x68, 0x95, 0x70, 0xcd, 0x70, - 0x16, 0xee, 0x54, 0xf7, 0x4e, 0xae, 0xbd, 0xca, 0x77, 0x9e, 0xb3, 0x1a, 0x21, 0x0b, 0x28, 0x3d, - 0xde, 0x61, 0xc9, 0xfe, 0x0e, 0xcf, 0x70, 0x1e, 0x90, 0xd9, 0x99, 0xd7, 0xae, 0xbc, 0x8c, 0xa6, - 0xb9, 0x8e, 0xeb, 0x86, 0x14, 0x2c, 0xfb, 0x04, 0x5d, 0x69, 0x17, 0xd0, 0x1e, 0x41, 0xc2, 0x4f, - 0xab, 0xbc, 0x4d, 0x20, 0x1c, 0x08, 0x4e, 0x1f, 0xc2, 0xa2, 0xfc, 0xc2, 0xcf, 0xe1, 0x1d, 0x60, - 0xd2, 0xd4, 0x94, 0x3c, 0x7c, 0xdc, 0x38, 0xbf, 0x13, 0x16, 0xed, 0x40, 0x1d, 0x26, 0x21, 0x47, - 0xa3, 0x0f, 0x02, 0xdb, 0x6e, 0xb4, 0x1d, 0x04, 0x24, 0x73, 0x6d, 0xb0, 0x25, 0x79, 0xe0, 0x5b, - 0xa3, 0xab, 0x25, 0x11, 0xdf, 0xe7, 0x6f, 0x08, 0x26, 0xfa, 0x09, 0xb9, 0x98, 0x3c, 0xbe, 0xdb, - 0xd8, 0xbd, 0x6b, 0xf8, 0x72, 0x57, 0x6a, 0xe0, 0xdb, 0x6b, 0x83, 0xad, 0x85, 0xff, 0x71, 0x02, - 0xca, 0xc1, 0x08, 0xf3, 0x17, 0x84, 0xbd, 0x17, 0xb8, 0xac, 0xeb, 0x98, 0xbd, 0xcf, 0xb7, 0x21, - 0x59, 0xe0, 0xdd, 0x7f, 0x85, 0x72, 0x21, 0x17, 0x0a, 0x79, 0xbf, 0x81, 0xc6, 0x87, 0x22, 0xf9, - 0x71, 0x3e, 0x28, 0x22, 0x58, 0x9b, 0xb1, 0x37, 0x7c, 0xc3, 0xe6, 0x68, 0xb8, 0x21, 0xba, 0xd8, - 0xdf, 0x10, 0x54, 0x49, 0x73, 0xf1, 0x19, 0x94, 0x53, 0x17, 0x0c, 0x6d, 0xb6, 0xb9, 0x7a, 0x9a, - 0x05, 0x72, 0x01, 0xc4, 0xbf, 0x81, 0x66, 0x84, 0xb5, 0x6e, 0x6d, 0x4a, 0xed, 0x3f, 0xab, 0xe2, - 0x7a, 0xb1, 0x1e, 0xe5, 0x36, 0x00, 0x84, 0x81, 0x60, 0xc6, 0xe7, 0x75, 0x80, 0x8b, 0x78, 0xd8, - 0xc2, 0xcf, 0x0a, 0xe9, 0x24, 0xff, 0x9c, 0xac, 0x8b, 0x9a, 0x98, 0x30, 0xf0, 0xda, 0xac, 0x6d, - 0xbd, 0xda, 0xb4, 0x0d, 0x1f, 0x9b, 0xd1, 0x77, 0x49, 0x25, 0xed, 0xc5, 0x67, 0xd0, 0xb8, 0x88, - 0x16, 0x8b, 0x6c, 0xe5, 0x53, 0xbc, 0x43, 0x89, 0x3c, 0x73, 0xb8, 0xef, 0x14, 0x8c, 0x46, 0xa2, - 0x4f, 0x7f, 0x79, 0x22, 0x79, 0xe0, 0xbc, 0x0a, 0xb5, 0xe2, 0x22, 0xfa, 0x2a, 0xe7, 0x72, 0x31, - 0x37, 0xe1, 0x55, 0xce, 0xf7, 0x7a, 0x8f, 0x17, 0xc2, 0x7b, 0x0c, 0xb6, 0x92, 0xb3, 0x74, 0x65, - 0x3a, 0xbc, 0xc7, 0xf9, 0xee, 0x97, 0x78, 0xb9, 0xf3, 0x25, 0x86, 0x8c, 0xeb, 0x58, 0x1a, 0xe6, - 0x78, 0x89, 0xf3, 0x33, 0xbd, 0xc1, 0xba, 0x15, 0xf3, 0x19, 0xcc, 0xf1, 0x3e, 0x30, 0x39, 0x06, - 0x4a, 0x12, 0x2d, 0x84, 0xa5, 0x01, 0x49, 0x84, 0x85, 0x83, 0x47, 0x8d, 0x33, 0x7b, 0x19, 0xb3, - 0xb0, 0x7a, 0xcd, 0xda, 0x9a, 0xb5, 0x8a, 0xba, 0xb6, 0xb2, 0xe2, 0x7a, 0x59, 0x59, 0x64, 0x99, - 0x8a, 0xac, 0x82, 0x5b, 0x22, 0x96, 0xde, 0xb4, 0x88, 0x25, 0x64, 0xf9, 0x76, 0x33, 0x62, 0xe9, - 0x49, 0x98, 0x95, 0x83, 0x58, 0xe2, 0x9f, 0x54, 0x20, 0x93, 0x88, 0x1e, 0x1d, 0x13, 0x4e, 0x16, - 0xa5, 0x54, 0x65, 0x7b, 0x91, 0xe0, 0x3d, 0x2d, 0xd2, 0x95, 0x9f, 0xdb, 0x5e, 0x24, 0x82, 0x18, - 0x47, 0x79, 0x97, 0x7e, 0x85, 0x90, 0x89, 0x26, 0x57, 0x69, 0xb1, 0x77, 0xc2, 0x34, 0x09, 0x26, - 0xb6, 0xc5, 0xe5, 0x8a, 0xe5, 0x87, 0xcc, 0xbf, 0x19, 0xca, 0x4a, 0x0c, 0x7c, 0x9a, 0x3a, 0xbe, - 0xcd, 0xd8, 0x3d, 0x64, 0xde, 0x12, 0xae, 0x99, 0x58, 0xc1, 0xe1, 0x6a, 0x78, 0x62, 0x71, 0xcc, - 0x11, 0x0b, 0x57, 0x3b, 0xc6, 0xf1, 0x46, 0xd6, 0xcb, 0x51, 0x7e, 0x74, 0x73, 0xb0, 0x61, 0x0d, - 0x8d, 0x78, 0x31, 0x19, 0x3f, 0x77, 0xf8, 0xb1, 0xb7, 0x55, 0xc8, 0x53, 0x58, 0xa4, 0x0b, 0x12, - 0xc0, 0xc2, 0x56, 0x3d, 0xe7, 0x39, 0x34, 0xf1, 0x66, 0x51, 0xdd, 0x1e, 0x41, 0x57, 0x76, 0x09, - 0x68, 0x87, 0x20, 0x61, 0xec, 0x22, 0xff, 0x91, 0xa7, 0xb2, 0x4c, 0x60, 0xdb, 0x73, 0x36, 0x31, - 0xd4, 0x43, 0x51, 0x15, 0x79, 0x56, 0x01, 0x14, 0x59, 0xee, 0x00, 0xb0, 0xc5, 0x30, 0x1b, 0x0f, - 0x6e, 0x4f, 0xf6, 0x9e, 0x82, 0x2e, 0x0c, 0x93, 0x80, 0x35, 0xdb, 0xc8, 0xee, 0xf6, 0xe4, 0xc1, - 0xf3, 0xcc, 0x70, 0xca, 0x24, 0x97, 0xb9, 0xe0, 0x5b, 0xa9, 0xde, 0xd6, 0xab, 0x4d, 0xdb, 0x0b, - 0x4f, 0x64, 0xa3, 0xf1, 0x6b, 0x37, 0x6b, 0xe5, 0xc1, 0x40, 0x44, 0x7c, 0x0a, 0x65, 0xaf, 0xaf, - 0x2e, 0x27, 0x58, 0x0e, 0x6f, 0x89, 0xf9, 0x5b, 0x2e, 0x48, 0x0d, 0xed, 0x4b, 0x9e, 0xfb, 0x8e, - 0x29, 0x35, 0xd7, 0x57, 0x97, 0x13, 0xf9, 0x8c, 0x59, 0x6d, 0x22, 0xc7, 0xf2, 0xaa, 0x0a, 0x95, - 0x60, 0x3b, 0x40, 0x8e, 0x66, 0x81, 0x9c, 0x0f, 0xc9, 0x49, 0xa0, 0xb7, 0x8a, 0xcb, 0xc4, 0x4a, - 0x94, 0x57, 0x55, 0xbd, 0xba, 0xb1, 0x7e, 0x83, 0x16, 0x21, 0x99, 0xda, 0xf0, 0xcd, 0x62, 0x85, - 0xf2, 0x1c, 0x68, 0x6e, 0xb4, 0x35, 0x1b, 0x5d, 0x5f, 0x18, 0x9d, 0x7d, 0xa9, 0xfd, 0x67, 0xab, - 0xaa, 0x8d, 0x9e, 0xf3, 0xc6, 0xd1, 0x26, 0x95, 0xb5, 0x12, 0x9f, 0x61, 0x30, 0x99, 0x63, 0xc5, - 0x3f, 0xa7, 0x30, 0x29, 0x92, 0x21, 0xf0, 0xe5, 0xa6, 0xec, 0x15, 0x01, 0x9c, 0x52, 0x34, 0x9e, - 0x20, 0x42, 0xc2, 0x07, 0x80, 0x74, 0x9c, 0x94, 0x59, 0x5d, 0x75, 0x8b, 0x4c, 0xa4, 0x95, 0x8e, - 0xa8, 0x4c, 0xb9, 0xa3, 0x44, 0x65, 0x1a, 0xef, 0x8c, 0xca, 0x54, 0xfa, 0x8c, 0xae, 0x3c, 0x85, - 0x64, 0x89, 0x6e, 0xb7, 0xfc, 0x04, 0x9c, 0x2c, 0x3c, 0x69, 0x6b, 0x5f, 0xad, 0x24, 0x0f, 0x1e, - 0xcc, 0xa0, 0x45, 0x37, 0x5a, 0x76, 0xc1, 0x36, 0x17, 0x1e, 0x10, 0x50, 0x3e, 0xe9, 0x04, 0xd9, - 0xa0, 0x66, 0xa0, 0x71, 0x58, 0xcf, 0x0c, 0x4a, 0x01, 0x15, 0x7e, 0x98, 0x77, 0xd0, 0x3c, 0x3e, - 0xb8, 0x6f, 0xf8, 0x68, 0xe6, 0x38, 0x77, 0x9b, 0xdb, 0xc2, 0x59, 0xf6, 0x2d, 0xa4, 0x3b, 0x54, - 0x6a, 0x9e, 0x07, 0x7a, 0x4c, 0xb2, 0x7d, 0x50, 0x9e, 0xb1, 0xf6, 0xd5, 0x4a, 0x9f, 0x79, 0x80, - 0x30, 0x59, 0x32, 0xaf, 0x9d, 0x8b, 0x30, 0x4f, 0x6f, 0x31, 0x9e, 0xaa, 0xf6, 0x07, 0x71, 0x9f, - 0xc0, 0x53, 0xe3, 0x82, 0x65, 0xd4, 0xce, 0x51, 0xe3, 0xb5, 0x5c, 0x4a, 0x20, 0xb8, 0xb1, 0x65, - 0xe5, 0x35, 0x25, 0xaf, 0x3e, 0x5b, 0x53, 0xb2, 0x04, 0xff, 0xb7, 0xd0, 0xd8, 0x75, 0xc4, 0x68, - 0x26, 0x91, 0xe1, 0x92, 0x87, 0x2e, 0x50, 0x83, 0xef, 0xdd, 0xc6, 0xb9, 0x6e, 0x36, 0x0a, 0x84, - 0xc4, 0xb6, 0xa4, 0x15, 0x3d, 0x4d, 0xc6, 0xa5, 0x6f, 0x8c, 0xce, 0xf3, 0x20, 0x9d, 0x2f, 0xe2, - 0xc9, 0xfb, 0x5f, 0xa1, 0x89, 0xe4, 0x07, 0x97, 0xd2, 0x71, 0xa1, 0xc9, 0x01, 0xf2, 0xe5, 0x72, - 0x3e, 0x4c, 0x8b, 0xc6, 0x5c, 0x18, 0x1f, 0x19, 0x37, 0x55, 0x28, 0x68, 0xca, 0x53, 0xf9, 0x46, - 0x62, 0x94, 0x4b, 0xd4, 0x93, 0x4d, 0x73, 0xa8, 0xae, 0xe2, 0xd2, 0xf4, 0x28, 0x24, 0x32, 0x08, - 0x96, 0x23, 0x0f, 0x37, 0x35, 0x9b, 0x6b, 0x8c, 0xef, 0xe3, 0x12, 0xb5, 0x83, 0x49, 0x07, 0x00, - 0x47, 0x22, 0xbe, 0x6f, 0xf8, 0xdc, 0xf7, 0xc9, 0x83, 0x43, 0xb0, 0xb1, 0x40, 0x3c, 0xe3, 0x70, - 0x0f, 0x05, 0x3e, 0x2e, 0x7f, 0xce, 0x6b, 0x28, 0x37, 0xa2, 0x6d, 0x0a, 0x86, 0x43, 0xe4, 0xbe, - 0x3f, 0x87, 0xef, 0x3b, 0x14, 0xc9, 0xa2, 0x15, 0x8a, 0xa4, 0xe7, 0xac, 0x09, 0x2a, 0xc7, 0x8e, - 0x81, 0x4d, 0x99, 0x50, 0x10, 0x70, 0x7b, 0xe3, 0x91, 0x5e, 0xa2, 0x8a, 0xc6, 0x6d, 0x69, 0xa8, - 0xad, 0xaa, 0x20, 0x70, 0xf0, 0x82, 0xf9, 0xaa, 0x41, 0x89, 0x5c, 0x44, 0x6e, 0xe2, 0x99, 0x6d, - 0xc9, 0x9e, 0xd6, 0xd4, 0xd0, 0xbe, 0xd4, 0x40, 0x4f, 0x30, 0x00, 0xcb, 0x48, 0xf4, 0xef, 0x21, - 0x9b, 0x84, 0xb5, 0x63, 0x74, 0xa6, 0xd0, 0xd1, 0x9e, 0x60, 0x2a, 0x97, 0x26, 0x98, 0xf2, 0x56, - 0xfe, 0x5d, 0x2f, 0x9b, 0x19, 0x99, 0xee, 0x35, 0x41, 0x8e, 0xa9, 0x5a, 0x67, 0x93, 0x20, 0x8f, - 0xa7, 0x39, 0x63, 0xe7, 0xd8, 0x24, 0xc8, 0xf9, 0x20, 0x3b, 0x06, 0xc1, 0x71, 0xda, 0x51, 0x79, - 0x51, 0x72, 0x14, 0x4d, 0xd4, 0x42, 0x5b, 0x82, 0x91, 0x70, 0xa8, 0x5e, 0x0b, 0x51, 0xe7, 0x86, - 0xd7, 0x74, 0xe5, 0x69, 0x89, 0x2f, 0x97, 0x9f, 0x20, 0xdb, 0x80, 0xa5, 0x6e, 0xc5, 0x3e, 0xb8, - 0xa8, 0x6f, 0x36, 0x44, 0xc2, 0x81, 0x62, 0x5f, 0x40, 0xdb, 0xd0, 0xb8, 0xa9, 0xd8, 0x17, 0x8d, - 0xf9, 0x37, 0xbd, 0x85, 0xbf, 0xa9, 0xe6, 0x98, 0x7f, 0xab, 0xe3, 0x70, 0x85, 0x9a, 0x63, 0xb6, - 0x52, 0xf9, 0xd1, 0xc4, 0x37, 0x10, 0xd2, 0x42, 0x9b, 0x82, 0x21, 0x48, 0x0e, 0x3a, 0x81, 0x2a, - 0x8a, 0x7e, 0x2e, 0x71, 0xc5, 0x72, 0x81, 0x31, 0x78, 0x20, 0xf9, 0x61, 0x07, 0x13, 0xee, 0x00, - 0x21, 0xb1, 0xf9, 0xd9, 0xe8, 0xf5, 0xb2, 0xc9, 0x91, 0x7c, 0x35, 0x7b, 0xf3, 0xb3, 0x51, 0x75, - 0x1c, 0x96, 0xc0, 0xab, 0x5c, 0x37, 0x71, 0x0d, 0x9a, 0x18, 0x8c, 0x56, 0xbe, 0x6f, 0x5e, 0xd3, - 0xe0, 0x16, 0x20, 0x09, 0xf2, 0x40, 0xf2, 0xca, 0x97, 0xcb, 0x73, 0x2d, 0xe1, 0x26, 0xde, 0xae, - 0xd4, 0xde, 0x2f, 0x8d, 0xf6, 0xe3, 0x04, 0xcd, 0xf1, 0x2d, 0xc5, 0xbf, 0x16, 0x18, 0xc4, 0xe0, - 0xe9, 0x02, 0x11, 0xf0, 0x89, 0xa0, 0x2b, 0xcd, 0x82, 0xc4, 0xd7, 0xc8, 0x5b, 0x78, 0x45, 0x01, - 0xdb, 0xa4, 0x8d, 0x5a, 0x40, 0x83, 0x0c, 0xbb, 0xc5, 0xbe, 0x68, 0x30, 0xb4, 0xa9, 0x4e, 0x7b, - 0xab, 0xd8, 0x67, 0x15, 0x52, 0xdb, 0xf5, 0xf8, 0xf0, 0xb6, 0xfd, 0x23, 0xdb, 0x4f, 0xc3, 0x10, - 0xd7, 0x06, 0xdb, 0xa0, 0x29, 0xd4, 0xa6, 0xf6, 0x7e, 0x99, 0xfa, 0x62, 0x2f, 0xab, 0x62, 0x24, - 0x15, 0xb4, 0xb9, 0x5e, 0x36, 0x2b, 0x32, 0x43, 0x45, 0xd6, 0x90, 0x6a, 0x2e, 0x54, 0xa8, 0xfc, - 0xec, 0xc4, 0x43, 0x02, 0x9a, 0x6e, 0xb5, 0x29, 0x67, 0x68, 0x09, 0x28, 0x11, 0x9c, 0xab, 0xc6, - 0xab, 0x5e, 0x7e, 0x95, 0x78, 0x3d, 0xd0, 0xc4, 0x52, 0x8e, 0xa9, 0x62, 0xf2, 0xa2, 0x09, 0xec, - 0x53, 0xe1, 0x85, 0x1e, 0xee, 0x3b, 0x55, 0x55, 0x01, 0x0c, 0x19, 0x34, 0x7c, 0x25, 0x1c, 0x8d, - 0x91, 0x57, 0xd2, 0xeb, 0x0b, 0xe2, 0x27, 0x02, 0xf3, 0x6c, 0x9a, 0x84, 0x29, 0xf4, 0x62, 0x6f, - 0x17, 0x7d, 0x0b, 0xb3, 0xda, 0x1c, 0x9a, 0x7e, 0xab, 0x2b, 0xaf, 0x31, 0x87, 0xa6, 0x15, 0x6c, - 0x56, 0x50, 0x60, 0xf1, 0xe2, 0x5d, 0x71, 0xa3, 0xff, 0x34, 0x18, 0xda, 0xf2, 0xc6, 0xb5, 0x10, - 0x38, 0x2d, 0xd1, 0xdf, 0x6e, 0x7c, 0x7f, 0x08, 0x54, 0x82, 0xf2, 0x92, 0x44, 0xff, 0xe7, 0xd7, - 0xcb, 0xc6, 0x75, 0x0b, 0x59, 0x53, 0x67, 0x30, 0x17, 0xa8, 0x52, 0x4b, 0xa8, 0x31, 0x99, 0xbe, - 0x96, 0x33, 0x2c, 0xa1, 0xc6, 0x04, 0x26, 0xce, 0xb8, 0x5e, 0x96, 0x1b, 0xc9, 0x99, 0x9a, 0x55, - 0x30, 0xc3, 0x92, 0x6b, 0x6c, 0x13, 0xd0, 0xe4, 0x70, 0xa8, 0x6e, 0x2b, 0x2c, 0x03, 0x67, 0xfd, - 0x86, 0xd4, 0xdb, 0xbf, 0xd1, 0x95, 0xf5, 0x92, 0xa3, 0x4a, 0xae, 0x48, 0x0c, 0x34, 0xc3, 0x68, - 0x64, 0xc3, 0x2d, 0xa2, 0xb5, 0x1d, 0x24, 0xb0, 0xa9, 0x9e, 0x63, 0xc6, 0x39, 0xf2, 0x26, 0x43, - 0x4b, 0xb7, 0x54, 0xde, 0x31, 0xaa, 0x78, 0x4d, 0x40, 0x13, 0x36, 0xd4, 0x46, 0x89, 0xe9, 0x32, - 0xc8, 0x1a, 0x16, 0x8f, 0xba, 0xcf, 0x65, 0xb4, 0x07, 0x6c, 0xf5, 0x31, 0x41, 0x57, 0x3e, 0x12, - 0x24, 0x6b, 0x20, 0xb9, 0x5d, 0xe0, 0xa7, 0x7a, 0x17, 0x62, 0x9c, 0xf2, 0x06, 0x09, 0x44, 0xdf, - 0x0f, 0x2f, 0x22, 0x16, 0x7f, 0xaa, 0xd6, 0xd4, 0xc4, 0xa4, 0x80, 0x26, 0x6a, 0x9c, 0xb9, 0xb6, - 0xe8, 0x9d, 0x0a, 0xdb, 0xb5, 0x66, 0xce, 0xdc, 0x19, 0x56, 0xdd, 0x25, 0xe8, 0x4a, 0x9b, 0x20, - 0xf1, 0x83, 0xc9, 0x7f, 0x76, 0x2c, 0xfb, 0xce, 0x58, 0x70, 0xb3, 0xc5, 0x8e, 0xec, 0x3f, 0x62, - 0x5b, 0x26, 0x3f, 0x17, 0xb1, 0xdc, 0x24, 0xe4, 0xc2, 0x8d, 0x81, 0xaa, 0x0a, 0x92, 0x72, 0x0f, - 0xd3, 0x91, 0xb4, 0x4c, 0x9e, 0xeb, 0x0c, 0xb3, 0x96, 0xe8, 0xdf, 0x03, 0x8a, 0xdb, 0xaa, 0x0a, - 0x95, 0xb6, 0x12, 0xbf, 0x17, 0x10, 0x82, 0x2d, 0xc1, 0x58, 0x0e, 0x24, 0x2d, 0x47, 0x05, 0x5d, - 0x39, 0x22, 0x48, 0x5c, 0x85, 0xbc, 0xc7, 0x26, 0x8c, 0xb0, 0xd4, 0x8a, 0xcd, 0x5f, 0x26, 0x7b, - 0x5a, 0xcd, 0xc7, 0xfd, 0xd0, 0x05, 0xf0, 0x2e, 0xb8, 0x36, 0xd8, 0xb6, 0x4a, 0x59, 0xad, 0xac, - 0xa8, 0xac, 0x78, 0xbb, 0x7c, 0xe5, 0xba, 0x9a, 0xb5, 0x95, 0xea, 0x42, 0x38, 0xeb, 0x64, 0xeb, - 0xe1, 0xd4, 0xb9, 0x13, 0x30, 0x4a, 0x11, 0xbb, 0xb8, 0xc9, 0xc3, 0x7d, 0xbe, 0xaa, 0xd5, 0x15, - 0x95, 0xd5, 0x95, 0xab, 0x2b, 0x2a, 0x57, 0xaf, 0x65, 0x7d, 0x1c, 0xb8, 0x6f, 0x78, 0xf7, 0xe7, - 0x26, 0x00, 0x0c, 0x7c, 0x9b, 0xdc, 0x73, 0xb2, 0x48, 0xe5, 0x26, 0x26, 0x96, 0xa2, 0xdc, 0x7a, - 0x3f, 0xa6, 0x66, 0x67, 0x62, 0xb1, 0x13, 0x26, 0xda, 0x49, 0x91, 0x3c, 0x13, 0x06, 0x80, 0x5f, - 0x3e, 0x26, 0x6a, 0x22, 0xd5, 0xe2, 0x2f, 0xd1, 0xb8, 0x50, 0x38, 0xa0, 0x45, 0x0b, 0x66, 0xe1, - 0xae, 0x98, 0x84, 0x86, 0x12, 0x79, 0x3a, 0xf4, 0x34, 0x7f, 0x58, 0xfd, 0xa0, 0x4e, 0x3c, 0x2c, - 0xa0, 0x29, 0x21, 0x2d, 0xf6, 0x5e, 0x38, 0xb2, 0xb9, 0x46, 0x8b, 0xc5, 0x82, 0xa1, 0x4d, 0xd4, - 0xea, 0x77, 0x81, 0xcb, 0xf8, 0xc3, 0xd6, 0xac, 0x6c, 0xb5, 0xae, 0x94, 0x4b, 0xce, 0xbe, 0xf2, - 0x12, 0x46, 0xf6, 0xa6, 0x06, 0x7a, 0x8c, 0x63, 0xf1, 0xd4, 0x89, 0x26, 0x10, 0x30, 0x32, 0x5f, - 0x35, 0xb0, 0xd2, 0x4f, 0x1e, 0xbc, 0x04, 0xe5, 0xd7, 0xcb, 0xc6, 0x7d, 0x22, 0x64, 0xe5, 0x09, - 0xaa, 0x73, 0x28, 0xf1, 0x6f, 0x04, 0x34, 0x83, 0x4c, 0xa1, 0xcc, 0x1f, 0x0d, 0xd6, 0xb2, 0xf9, - 0x41, 0x2c, 0xd3, 0x47, 0xdd, 0x8e, 0x4d, 0xae, 0xb6, 0x26, 0x77, 0x1f, 0x96, 0x3c, 0x47, 0x91, - 0x7f, 0x4d, 0x90, 0x0f, 0x9e, 0x23, 0x01, 0x58, 0x3a, 0x53, 0x78, 0xf7, 0x88, 0x5e, 0x0e, 0xdb, - 0xc6, 0xf3, 0xd9, 0x2e, 0xb7, 0x34, 0xd4, 0xa6, 0x7a, 0x5b, 0xcd, 0x93, 0xa4, 0x4b, 0x21, 0x2b, - 0xb3, 0x2f, 0xc8, 0xf3, 0xb3, 0xe2, 0xdf, 0x09, 0x68, 0x16, 0xa9, 0x50, 0x02, 0x5b, 0xfc, 0xa1, - 0x5a, 0x8d, 0xad, 0x0b, 0x82, 0xa5, 0x3e, 0x9e, 0x66, 0x5d, 0xf6, 0xd6, 0x65, 0xdb, 0x05, 0x5d, - 0xf9, 0x2b, 0x69, 0xb6, 0xd9, 0x56, 0x73, 0x8f, 0x25, 0x07, 0xa8, 0x91, 0xff, 0x47, 0x23, 0x87, - 0x2f, 0xf0, 0x51, 0x08, 0xd9, 0xea, 0x8c, 0x2e, 0x93, 0x1b, 0x0b, 0x36, 0x6c, 0x89, 0x42, 0xb5, - 0xb9, 0x42, 0x7b, 0xe8, 0x36, 0xe8, 0x00, 0x9c, 0xa5, 0xe7, 0xd9, 0xa9, 0x69, 0x56, 0x22, 0xfe, - 0x2b, 0x01, 0xe5, 0x9b, 0xf7, 0x8b, 0x2d, 0x6d, 0x8e, 0xb7, 0x97, 0xc3, 0x6a, 0xab, 0x4d, 0x99, - 0x2e, 0xe8, 0x4a, 0x87, 0x20, 0xd9, 0xfa, 0xc9, 0x7f, 0xe1, 0xa3, 0x2a, 0x3a, 0x16, 0x40, 0x5c, - 0x53, 0xa9, 0x77, 0x2c, 0xf1, 0xa0, 0xe5, 0x5c, 0x66, 0xe1, 0x90, 0xcc, 0x96, 0x87, 0x8e, 0xa7, - 0x5a, 0x2f, 0x19, 0x2d, 0x5f, 0x8c, 0xf4, 0x34, 0x11, 0x9b, 0x30, 0xac, 0x1b, 0x34, 0x5f, 0x23, - 0x3a, 0x66, 0x59, 0x79, 0x0d, 0xd0, 0xf8, 0xc4, 0xd9, 0x04, 0x8b, 0xc8, 0x54, 0xdb, 0x6c, 0xc4, - 0xed, 0x02, 0x9a, 0x02, 0x32, 0x3a, 0x55, 0x0b, 0x86, 0xa2, 0x31, 0x7f, 0x5d, 0x1d, 0x0e, 0xeb, - 0x9a, 0x57, 0xf6, 0xba, 0xae, 0xac, 0x93, 0x9c, 0x75, 0x72, 0x19, 0x50, 0x68, 0x23, 0xbb, 0xdb, - 0x87, 0x3f, 0x6d, 0x06, 0x38, 0xb5, 0x32, 0xef, 0x52, 0x69, 0x21, 0x70, 0xf7, 0xc3, 0x9f, 0x7c, - 0x01, 0x48, 0x25, 0xb9, 0xa3, 0xd9, 0xd8, 0xf5, 0x5d, 0xa2, 0x7f, 0x6f, 0xb2, 0xa7, 0x35, 0x79, - 0xa0, 0x45, 0x75, 0x0e, 0x2a, 0x1e, 0x11, 0xd0, 0xb4, 0x60, 0x28, 0x18, 0x5b, 0x19, 0xde, 0x14, - 0x0c, 0x55, 0xfb, 0xa3, 0xd1, 0xf7, 0xc2, 0x91, 0x00, 0xce, 0x85, 0x37, 0xa1, 0x6c, 0xb3, 0xae, - 0xbc, 0x23, 0xb9, 0x6b, 0xe5, 0x9a, 0x0c, 0x53, 0x80, 0x74, 0x8f, 0x4c, 0xae, 0xd0, 0x40, 0xfa, - 0x8c, 0x3e, 0x33, 0xf7, 0x77, 0xc4, 0xd7, 0xd1, 0x44, 0x02, 0xc5, 0x18, 0x03, 0xcf, 0xc7, 0x93, - 0xc2, 0x16, 0x2e, 0x7c, 0xb9, 0xfc, 0x18, 0x8f, 0x24, 0x48, 0xee, 0xfc, 0xc6, 0x50, 0x40, 0x8b, - 0xd4, 0xf9, 0xb7, 0x2e, 0x0e, 0x6f, 0xc1, 0xff, 0x16, 0xa9, 0x7c, 0x17, 0xf1, 0x3b, 0x01, 0xcd, - 0xf6, 0x37, 0xc6, 0xc2, 0x2b, 0xb4, 0x90, 0x49, 0x7c, 0x69, 0xab, 0xf0, 0x52, 0xb0, 0xf6, 0x93, - 0x84, 0x81, 0xfd, 0xa3, 0xae, 0xbc, 0x2f, 0xa5, 0x6b, 0x23, 0xbf, 0x65, 0x7b, 0xec, 0x38, 0x33, - 0x21, 0xe3, 0xe2, 0xd7, 0x46, 0xef, 0x61, 0xa3, 0xe7, 0x2c, 0x6c, 0x0b, 0x75, 0x73, 0xc6, 0x14, - 0xc8, 0xf3, 0xbe, 0x44, 0x7f, 0x3c, 0x16, 0x69, 0xd4, 0x92, 0x87, 0x2e, 0x14, 0xfb, 0x00, 0x04, - 0x80, 0x1f, 0x25, 0x58, 0x18, 0x9f, 0x49, 0xa8, 0x56, 0x53, 0xd3, 0x7d, 0x57, 0xfc, 0x2f, 0x02, - 0x9a, 0x40, 0x5b, 0x45, 0x0b, 0x1e, 0xf6, 0xd6, 0x8f, 0x54, 0x91, 0x06, 0xd4, 0x38, 0xae, 0x1c, - 0xbb, 0xb5, 0xd2, 0x54, 0xe9, 0x56, 0x7f, 0xf9, 0x90, 0x93, 0x54, 0xf1, 0xa5, 0xf9, 0x2e, 0x9d, - 0x78, 0xb1, 0x0f, 0x0e, 0x99, 0xb7, 0x74, 0xe3, 0x6f, 0x01, 0x5d, 0x15, 0x30, 0xe3, 0xec, 0x43, - 0xd0, 0x30, 0xd5, 0xbd, 0xd3, 0x96, 0xf4, 0x0b, 0x92, 0x43, 0x41, 0x36, 0x58, 0x90, 0xe5, 0x18, - 0x6d, 0x71, 0xf0, 0x8f, 0x57, 0xad, 0x49, 0x8a, 0xdf, 0x0a, 0xc4, 0x9f, 0x12, 0x53, 0x89, 0xbe, - 0x31, 0x92, 0x69, 0x95, 0xb4, 0x07, 0x10, 0x2c, 0x98, 0x98, 0xb7, 0x86, 0x91, 0xd7, 0x41, 0x62, - 0x74, 0x2b, 0xf5, 0xfe, 0x57, 0x07, 0xa8, 0x77, 0x13, 0x60, 0x03, 0x2d, 0xba, 0xe1, 0xed, 0xc6, - 0x48, 0xdd, 0x62, 0x92, 0x42, 0xea, 0xed, 0x60, 0xbd, 0x7f, 0x93, 0xb6, 0xb8, 0x21, 0x12, 0xdc, - 0x12, 0xac, 0xd3, 0x02, 0x9b, 0x34, 0x28, 0x48, 0xf5, 0xb6, 0xf2, 0x9d, 0x55, 0xeb, 0x0b, 0xe2, - 0xeb, 0x28, 0xaf, 0x9e, 0x46, 0x47, 0x7d, 0xc4, 0x0a, 0xc3, 0xca, 0x0a, 0xe5, 0x12, 0xf2, 0x71, - 0xe2, 0xd2, 0xb4, 0xb0, 0x5c, 0x01, 0xaf, 0x44, 0xe6, 0x02, 0x47, 0x3c, 0x34, 0xb1, 0x3b, 0x52, - 0x91, 0xca, 0x3a, 0x8a, 0x5b, 0xd0, 0x64, 0xfc, 0x19, 0x8b, 0x61, 0x29, 0xb4, 0x62, 0x41, 0x3b, - 0xaa, 0xe4, 0xe7, 0x8c, 0xbe, 0x41, 0xa3, 0xf9, 0x14, 0xe3, 0x01, 0x80, 0x2a, 0xa3, 0x12, 0x96, - 0xe4, 0xf1, 0xdd, 0xc3, 0x7d, 0x44, 0x60, 0x53, 0x4c, 0xa8, 0x8e, 0x43, 0x17, 0x52, 0x9f, 0xc5, - 0x8d, 0xa6, 0x41, 0xd5, 0x31, 0x94, 0xe8, 0x47, 0x53, 0x82, 0x51, 0xd0, 0xe3, 0x90, 0x42, 0x9c, - 0x78, 0x2e, 0x0f, 0xcc, 0xf1, 0x9c, 0x75, 0xf2, 0x23, 0x8c, 0x9f, 0x04, 0x25, 0x1c, 0x7c, 0xb3, - 0x98, 0x37, 0x3a, 0x73, 0xf6, 0x71, 0x1a, 0xc6, 0x3d, 0x96, 0xd6, 0x30, 0x8e, 0x10, 0x5c, 0xe9, - 0x0c, 0xe3, 0x4e, 0x09, 0x68, 0x0a, 0xb9, 0x21, 0xe5, 0xfe, 0x98, 0xb6, 0x29, 0x1c, 0xd9, 0x8a, - 0x73, 0xc3, 0x4d, 0x00, 0xb0, 0x76, 0xd6, 0xc9, 0x9a, 0xc5, 0xa7, 0xb6, 0x7c, 0xe1, 0x10, 0x86, - 0x9b, 0x97, 0xb2, 0x65, 0x17, 0x63, 0xf6, 0x60, 0x55, 0xc9, 0xc3, 0x38, 0xf1, 0xf0, 0x40, 0xfc, - 0x6a, 0xd3, 0x36, 0xd8, 0xe1, 0x85, 0x1b, 0x1a, 0x83, 0x75, 0x01, 0x2d, 0xb2, 0x38, 0x58, 0xdf, - 0x10, 0x8e, 0xc4, 0xb4, 0x48, 0x11, 0x17, 0x0e, 0x16, 0xda, 0xaa, 0xce, 0xef, 0x8a, 0xab, 0xd1, - 0x84, 0x60, 0xf4, 0xed, 0xe8, 0x3b, 0xfe, 0x88, 0x16, 0xc0, 0x79, 0xdf, 0xf2, 0x88, 0xeb, 0x08, - 0x2b, 0xb5, 0x6d, 0xe3, 0x57, 0x89, 0xf8, 0x17, 0x1e, 0xdb, 0x98, 0x17, 0x8c, 0xd6, 0xe0, 0xc6, - 0xe2, 0xff, 0x22, 0xa0, 0xc9, 0xb5, 0x9c, 0xab, 0x49, 0x55, 0x45, 0xc1, 0x13, 0x78, 0xd9, 0x24, - 0x23, 0x83, 0xa3, 0x52, 0xfe, 0x9c, 0x90, 0xae, 0x8c, 0x16, 0x49, 0xc4, 0xf7, 0x81, 0xf7, 0x51, - 0x55, 0x45, 0x31, 0x63, 0x9f, 0x52, 0x9f, 0xc5, 0xaf, 0x36, 0x6d, 0x87, 0x3d, 0x31, 0xf6, 0x1c, - 0x1b, 0xde, 0x31, 0x64, 0x2e, 0xa9, 0xe3, 0xa2, 0xd1, 0x79, 0x90, 0xb5, 0x37, 0x76, 0xf7, 0x0e, - 0xf7, 0x6d, 0xbb, 0xda, 0xb4, 0x1d, 0xe4, 0x42, 0x89, 0xf8, 0x3e, 0xf0, 0x8c, 0x4e, 0xf4, 0xef, - 0x4d, 0x0d, 0x1c, 0x4b, 0xf4, 0x37, 0x01, 0x75, 0xcc, 0x79, 0x3f, 0x99, 0x04, 0x4f, 0x93, 0x45, - 0x25, 0x43, 0xf3, 0x54, 0xfc, 0x9b, 0xd4, 0xb9, 0x13, 0x80, 0x13, 0x1c, 0x63, 0xab, 0x8e, 0xc9, - 0x8b, 0x9b, 0x5c, 0x46, 0xe1, 0x0b, 0xf1, 0x5a, 0x5f, 0xd6, 0x95, 0x17, 0x5c, 0x46, 0xe1, 0x92, - 0x8d, 0x7f, 0x74, 0x78, 0xdf, 0x72, 0xde, 0x32, 0xc9, 0xa3, 0x97, 0x9d, 0x06, 0xe3, 0xb7, 0xe2, - 0x57, 0xf6, 0x1b, 0x34, 0xd9, 0xce, 0x30, 0x7a, 0xf4, 0x5e, 0x6a, 0xd7, 0xa6, 0xba, 0xa8, 0x9a, - 0xb2, 0x57, 0xd7, 0x34, 0x44, 0xab, 0xeb, 0x1a, 0x37, 0x05, 0x43, 0xfc, 0xd0, 0x6f, 0xa2, 0xa9, - 0x4e, 0xbe, 0xec, 0xf6, 0x0d, 0x4e, 0xfd, 0xe1, 0x18, 0x06, 0xbd, 0x21, 0x1d, 0x46, 0x6b, 0x96, - 0xae, 0x34, 0x67, 0xa1, 0xed, 0x59, 0x92, 0x4b, 0x02, 0x2c, 0x6f, 0xe4, 0x0f, 0xc2, 0x61, 0x54, - 0x4f, 0x2e, 0x23, 0xb6, 0x52, 0x85, 0x57, 0xf4, 0xda, 0x60, 0x1b, 0xcf, 0xe5, 0x5d, 0x6d, 0xda, - 0x0e, 0xda, 0x24, 0x5e, 0x0e, 0x30, 0xdc, 0x77, 0x11, 0xde, 0x5e, 0x50, 0x2b, 0x25, 0x3b, 0x4e, - 0x19, 0x9d, 0x9f, 0x5e, 0x11, 0x2c, 0x09, 0xef, 0x15, 0x81, 0x97, 0xd1, 0x5e, 0x11, 0x98, 0xe4, - 0xf4, 0x8a, 0x40, 0xe4, 0x9d, 0x76, 0x4f, 0x15, 0x4e, 0x1a, 0x78, 0x45, 0xe0, 0xc5, 0x74, 0x57, - 0x04, 0x4e, 0xae, 0x76, 0x45, 0xe0, 0x85, 0x62, 0xd6, 0x37, 0xa0, 0x8e, 0x85, 0x40, 0xfa, 0xa7, - 0x39, 0x68, 0x9a, 0x63, 0x13, 0xa2, 0x0d, 0xf7, 0xbb, 0xdd, 0x7e, 0xb5, 0xcd, 0xc1, 0x65, 0x76, - 0x3a, 0xd6, 0x88, 0x84, 0xea, 0xf1, 0xc7, 0xfc, 0x72, 0xc1, 0xf0, 0x27, 0x5f, 0xc0, 0xc9, 0xb2, - 0xfc, 0xfd, 0x2c, 0x54, 0x8f, 0x3f, 0xe6, 0x17, 0xff, 0x8c, 0x72, 0x62, 0xfe, 0xe8, 0x66, 0xe2, - 0xd6, 0x32, 0xc3, 0xcb, 0xa4, 0x03, 0x22, 0xcb, 0xe3, 0x66, 0xf2, 0x2b, 0xbc, 0x28, 0x07, 0x34, - 0x60, 0xd7, 0x06, 0x5b, 0xe0, 0x96, 0x24, 0x7b, 0x5a, 0xaf, 0x0d, 0xb6, 0x02, 0xd5, 0x4d, 0x24, - 0x59, 0x60, 0xf3, 0x4f, 0xf5, 0xf8, 0x96, 0xf9, 0xd5, 0xc7, 0x3d, 0x2a, 0x1e, 0x4f, 0xfc, 0x93, - 0xdb, 0xc1, 0x26, 0x77, 0x8c, 0x0e, 0x36, 0x18, 0x21, 0xbb, 0x1c, 0x6c, 0xe6, 0xf2, 0x0e, 0x36, - 0x6c, 0xc9, 0x69, 0x7c, 0x6c, 0x56, 0xe8, 0x4a, 0x05, 0x2a, 0x93, 0xdc, 0xf7, 0x40, 0x9e, 0xc9, - 0x43, 0x83, 0x89, 0x87, 0xbc, 0x7d, 0x15, 0xae, 0x08, 0x78, 0x17, 0x0b, 0xdb, 0xe7, 0xa1, 0xd9, - 0x30, 0xc8, 0xfa, 0x60, 0x24, 0xd6, 0xe8, 0xaf, 0xfb, 0x49, 0xb5, 0xf2, 0x93, 0x6a, 0xe5, 0x27, - 0xd5, 0xca, 0x0f, 0x47, 0xb5, 0xf2, 0xcf, 0x3d, 0x55, 0x2b, 0x5f, 0xdc, 0x4f, 0xaa, 0x95, 0x87, - 0x23, 0xf3, 0x3d, 0x55, 0x2b, 0xe3, 0xb7, 0x00, 0x4a, 0xb2, 0xeb, 0x58, 0x9a, 0x05, 0x34, 0xe9, - 0x9d, 0x70, 0x34, 0xe6, 0xd4, 0xae, 0xbc, 0xad, 0x2b, 0xbf, 0x95, 0xec, 0x35, 0xf2, 0xab, 0xb6, - 0x9f, 0xc3, 0x47, 0xba, 0x93, 0x7b, 0x8f, 0x91, 0xa7, 0xe4, 0xfb, 0xa3, 0xc9, 0xd6, 0xc3, 0xa9, - 0xee, 0x9d, 0x66, 0x0b, 0xfe, 0x75, 0x29, 0xe6, 0x95, 0x30, 0x3c, 0x81, 0xac, 0xda, 0xc7, 0x16, - 0xbf, 0x11, 0x90, 0xc8, 0x95, 0x10, 0xe1, 0x23, 0x31, 0x15, 0xd9, 0x2e, 0xe8, 0xca, 0x66, 0xc9, - 0xa3, 0x5e, 0x5e, 0xe7, 0x2e, 0xf3, 0x10, 0x36, 0x04, 0xb4, 0x2d, 0x21, 0x2d, 0xb6, 0x38, 0x18, - 0xa8, 0x2d, 0xc2, 0xcf, 0xd2, 0x41, 0x63, 0xd7, 0x37, 0x89, 0x78, 0x87, 0x35, 0xd9, 0x54, 0xf7, - 0x4e, 0xbe, 0xc3, 0xf5, 0xb2, 0x69, 0x91, 0x29, 0x6a, 0x2e, 0x74, 0x53, 0xb3, 0x83, 0x81, 0x5a, - 0xf5, 0x67, 0xaa, 0xc7, 0xe7, 0xc5, 0xcf, 0x2c, 0x3d, 0xd0, 0x64, 0xcc, 0xf8, 0x3e, 0xe9, 0xcd, - 0xf8, 0xba, 0x5e, 0x83, 0x7b, 0xab, 0x0e, 0x9a, 0x72, 0x1b, 0xd4, 0x41, 0x53, 0xef, 0xb6, 0x3a, - 0xc8, 0x92, 0x96, 0x4f, 0xbb, 0x61, 0x69, 0x79, 0x97, 0x87, 0xd8, 0x5b, 0x1c, 0x93, 0xd8, 0x7b, - 0xf9, 0xed, 0x11, 0x7b, 0xbb, 0xc5, 0xdd, 0xff, 0x2c, 0x9d, 0xb8, 0x7b, 0xfa, 0xd8, 0xc5, 0xdd, - 0x91, 0xbb, 0x2f, 0xee, 0xbe, 0x71, 0x31, 0xf7, 0x8c, 0x1f, 0xae, 0x98, 0x7b, 0xe6, 0x0f, 0x42, - 0xcc, 0x3d, 0x60, 0x13, 0xe0, 0xcd, 0xc2, 0x78, 0xec, 0xe9, 0xb1, 0xe2, 0xb1, 0x7b, 0x2e, 0xc7, - 0x73, 0x88, 0xa4, 0x66, 0xdf, 0xac, 0x48, 0xaa, 0x49, 0x40, 0x59, 0x21, 0xaa, 0x6c, 0x72, 0x45, - 0xd1, 0x33, 0x29, 0xdc, 0x68, 0x83, 0xbf, 0x16, 0xc2, 0x1e, 0xbd, 0xa6, 0x2b, 0xab, 0xa5, 0xac, - 0x50, 0x54, 0x7e, 0xc5, 0xd8, 0x37, 0x64, 0x52, 0xc5, 0x9f, 0xc5, 0x47, 0x0e, 0x7d, 0xcb, 0xc2, - 0x2f, 0xb9, 0x1e, 0x46, 0xe7, 0x5b, 0x93, 0x3c, 0xd6, 0x95, 0xe8, 0xff, 0x9c, 0xef, 0xab, 0x66, - 0x85, 0xa2, 0xe2, 0x4b, 0xcc, 0x97, 0xb6, 0xdc, 0xe4, 0x3d, 0x1f, 0xb2, 0xdc, 0x56, 0xf8, 0x72, - 0x19, 0x01, 0xa5, 0x68, 0x72, 0x20, 0x2a, 0x5f, 0x71, 0x3b, 0xe2, 0xeb, 0xdc, 0x9c, 0x3c, 0xe1, - 0x60, 0x96, 0xae, 0xe8, 0x59, 0xa8, 0x33, 0x4b, 0x4a, 0xc7, 0xfd, 0xc8, 0x75, 0xc4, 0xf5, 0x98, - 0xdb, 0x9b, 0x1f, 0x81, 0x70, 0xe1, 0xff, 0xc8, 0x46, 0x93, 0x6c, 0x57, 0x87, 0x85, 0xdf, 0x15, - 0x5c, 0xe1, 0x77, 0xf9, 0xeb, 0x60, 0x33, 0x49, 0xdf, 0xc0, 0x68, 0x8c, 0x2c, 0x0c, 0x9b, 0x45, - 0x19, 0x2f, 0xa7, 0x8d, 0xb2, 0x00, 0xcb, 0x4a, 0x42, 0x59, 0xd8, 0xbe, 0x90, 0x3c, 0xbe, 0x3b, - 0xd5, 0xfb, 0x3d, 0x23, 0x0e, 0xb6, 0xd8, 0x03, 0x41, 0x65, 0xe3, 0x0f, 0x2d, 0xca, 0xfc, 0x21, - 0x57, 0x16, 0x41, 0x80, 0x3a, 0x9e, 0x0b, 0xb7, 0x7f, 0xf2, 0x9b, 0xb3, 0xc3, 0x67, 0x3e, 0xb5, - 0x67, 0x10, 0xfc, 0x0d, 0x1a, 0xf7, 0x87, 0xc6, 0x30, 0x93, 0x64, 0x2c, 0x48, 0xfb, 0xc5, 0xd7, - 0xcc, 0x56, 0x20, 0xd0, 0x80, 0x1e, 0xf2, 0x6c, 0x7e, 0x6c, 0x5c, 0x34, 0x72, 0xa4, 0xcb, 0x68, - 0xb9, 0xa0, 0x42, 0xfd, 0xad, 0x40, 0xc3, 0x2d, 0x26, 0x96, 0x2b, 0xec, 0x11, 0xd0, 0x64, 0xfb, - 0xcc, 0x45, 0x1f, 0x9a, 0x58, 0xdb, 0xd0, 0x48, 0xe2, 0x57, 0x44, 0xc9, 0x30, 0x7c, 0x91, 0x38, - 0x0f, 0x4d, 0xa8, 0x6d, 0x68, 0x5c, 0x19, 0xac, 0x0f, 0xc6, 0xa2, 0x64, 0x48, 0xab, 0x40, 0xfc, - 0x39, 0x9a, 0x5c, 0xaf, 0xd5, 0x87, 0x23, 0x5b, 0xd9, 0x10, 0x98, 0xc7, 0x56, 0x1d, 0xa5, 0x62, - 0x21, 0xca, 0x87, 0x12, 0x32, 0x10, 0x98, 0x87, 0xda, 0xca, 0x0a, 0xff, 0x7d, 0x0e, 0x2a, 0xf0, - 0x86, 0xd3, 0x9f, 0x24, 0x5f, 0x3f, 0x32, 0xc9, 0x17, 0x09, 0x1d, 0x94, 0xf6, 0x3a, 0xc8, 0x73, - 0xdd, 0x78, 0x7b, 0x74, 0x31, 0xd8, 0x69, 0x01, 0x4d, 0x7a, 0xb5, 0x71, 0x03, 0x51, 0x6c, 0xaa, - 0xda, 0x1f, 0xc4, 0xd5, 0x08, 0x6d, 0x66, 0x05, 0x04, 0xf9, 0x2d, 0xd2, 0x95, 0xc7, 0x24, 0xae, - 0x58, 0x9e, 0x05, 0xe3, 0x5b, 0x25, 0x10, 0x18, 0x9a, 0xe6, 0x4f, 0xe3, 0x9a, 0x96, 0x56, 0xea, - 0x4a, 0x19, 0x5a, 0x26, 0xd9, 0xbf, 0x22, 0x17, 0x92, 0x60, 0x74, 0xdf, 0x7f, 0x68, 0x34, 0x9f, - 0x4a, 0x7e, 0xda, 0x94, 0xfc, 0x6e, 0xaf, 0x73, 0xb0, 0x2b, 0x02, 0x37, 0x4c, 0xe1, 0x57, 0xe3, - 0xd0, 0x0c, 0x6b, 0x88, 0xf2, 0x70, 0x28, 0xa4, 0xd5, 0xc6, 0xcc, 0xf9, 0xae, 0x73, 0xcb, 0xea, - 0xb0, 0x16, 0x8d, 0x93, 0xd5, 0x3d, 0x91, 0x88, 0xef, 0xa3, 0xe2, 0xba, 0x85, 0x40, 0xcc, 0x94, - 0xfa, 0x86, 0x9b, 0xbf, 0x1f, 0x3e, 0xd7, 0x97, 0x88, 0xef, 0x2b, 0xf5, 0xd5, 0xd6, 0x45, 0x4b, - 0xde, 0x7f, 0xff, 0x7d, 0x9b, 0xbc, 0xed, 0x0f, 0x08, 0x99, 0xcf, 0x46, 0x2c, 0xe2, 0x0f, 0x69, - 0x31, 0x0c, 0x2f, 0x79, 0x40, 0x4c, 0x70, 0xc5, 0xf2, 0x32, 0x4e, 0x77, 0xe4, 0x03, 0x35, 0x0e, - 0xb6, 0x4c, 0xdb, 0x67, 0x32, 0x7b, 0x90, 0xe6, 0x14, 0x0a, 0x4f, 0x1e, 0x4c, 0x0d, 0xed, 0x1b, - 0x3e, 0x77, 0x79, 0xe4, 0xd0, 0xb9, 0x54, 0xf7, 0x4e, 0x2b, 0x66, 0xb2, 0xca, 0x8d, 0x26, 0x6e, - 0xb0, 0x4c, 0xad, 0xb2, 0x69, 0x3e, 0xbc, 0xe7, 0xcd, 0x75, 0x84, 0x1b, 0x03, 0x58, 0x50, 0xb1, - 0x08, 0x84, 0x70, 0x38, 0x16, 0x4f, 0xb1, 0xcf, 0x96, 0x18, 0x31, 0xbe, 0x8f, 0xf8, 0x4f, 0x63, - 0xe9, 0x1b, 0x48, 0xe2, 0x38, 0xf1, 0x1f, 0xb3, 0xc4, 0xfa, 0x54, 0x40, 0x13, 0xfc, 0x4c, 0xa3, - 0x95, 0xc3, 0x02, 0xc6, 0x6e, 0x95, 0xac, 0x62, 0xb9, 0x8e, 0xd7, 0x74, 0x32, 0x6e, 0x03, 0x0f, - 0x01, 0x0a, 0x24, 0x4a, 0x3f, 0x51, 0x2a, 0x36, 0x9e, 0xfa, 0x2c, 0xfe, 0xbc, 0xcf, 0x18, 0xfa, - 0x10, 0xfe, 0xc4, 0x4a, 0x79, 0xa8, 0x1b, 0x69, 0xea, 0x1e, 0xbe, 0xbc, 0x1b, 0x74, 0x55, 0x78, - 0x2b, 0x5c, 0xa3, 0x5c, 0x2f, 0x1b, 0x17, 0xc9, 0x36, 0xe7, 0x68, 0x4d, 0x40, 0x5c, 0xc3, 0x64, - 0x85, 0xe3, 0xe8, 0x81, 0x8e, 0x22, 0x2b, 0x4c, 0x23, 0x32, 0x23, 0x7d, 0x4a, 0x63, 0xba, 0xf2, - 0x07, 0x14, 0x96, 0x3c, 0x6f, 0x90, 0xac, 0xc0, 0xfd, 0x23, 0x91, 0x63, 0x29, 0xe0, 0x58, 0x77, - 0x0f, 0xce, 0x8d, 0xec, 0xc6, 0xae, 0xe6, 0xc5, 0x70, 0x9a, 0x44, 0x7b, 0x89, 0x63, 0x9d, 0x9a, - 0x74, 0x04, 0x6c, 0x30, 0x4f, 0xcf, 0x14, 0x36, 0x67, 0xa1, 0xc9, 0xfc, 0xb5, 0xbf, 0xef, 0x71, - 0x36, 0x45, 0x32, 0x8e, 0x59, 0xcb, 0x8f, 0x3b, 0x21, 0x14, 0xb0, 0x66, 0xb2, 0xe9, 0x0c, 0xf4, - 0x1f, 0x05, 0xc9, 0xb4, 0x65, 0xa1, 0x99, 0x1e, 0x3b, 0xff, 0x63, 0xdd, 0x8e, 0xbf, 0x13, 0xd0, - 0x94, 0x2a, 0xac, 0xda, 0xc6, 0xb1, 0x0c, 0x57, 0x99, 0x0b, 0x5b, 0x63, 0xc1, 0xbe, 0x40, 0x65, - 0xc4, 0xb2, 0x65, 0x66, 0x39, 0x66, 0x0c, 0xc6, 0x00, 0x7d, 0x85, 0x0d, 0x8d, 0x67, 0x59, 0x3e, - 0xb7, 0x63, 0x40, 0xe3, 0x36, 0xfc, 0x6d, 0x4e, 0x04, 0x2d, 0x91, 0x9c, 0x33, 0x96, 0xe7, 0x27, - 0xe2, 0xfb, 0x28, 0x81, 0xce, 0xe3, 0x8b, 0xe4, 0xd9, 0x13, 0xc6, 0x60, 0x67, 0xe1, 0xbf, 0x99, - 0x8d, 0xa6, 0xd2, 0x2e, 0x4c, 0xb1, 0x72, 0xd4, 0x43, 0xb1, 0x82, 0x03, 0xd3, 0x72, 0xc8, 0x3a, - 0x3c, 0x9a, 0x62, 0x25, 0xd9, 0xba, 0xd7, 0x7c, 0xa2, 0x87, 0x0e, 0x8c, 0xaa, 0x5e, 0x21, 0x61, - 0xa4, 0x60, 0x76, 0x89, 0xc1, 0x6e, 0xc0, 0xd6, 0xa0, 0x5c, 0xa1, 0x5f, 0xb9, 0x63, 0x4a, 0x16, - 0x07, 0xb7, 0x9b, 0x7d, 0xb3, 0xdc, 0x6e, 0x2d, 0xa7, 0xac, 0x01, 0x7c, 0xbd, 0x42, 0x57, 0x4a, - 0x39, 0x65, 0xcd, 0xcd, 0xbf, 0x0a, 0x96, 0x72, 0xe6, 0x76, 0x23, 0x5c, 0xf1, 0x0d, 0xb7, 0x1a, - 0xe5, 0x05, 0xa7, 0xa3, 0x3f, 0x3f, 0x55, 0x60, 0x94, 0x33, 0xe8, 0x7c, 0x38, 0x95, 0xca, 0xaf, - 0x3d, 0x54, 0x2a, 0xcf, 0x8c, 0xa2, 0x52, 0x49, 0x3b, 0xee, 0x3d, 0x57, 0xaa, 0xfc, 0xd6, 0x43, - 0xa9, 0xf2, 0xc2, 0x0d, 0x28, 0x55, 0xa6, 0x46, 0x26, 0xdb, 0x94, 0x2a, 0x3f, 0xb3, 0xa9, 0x55, - 0xb6, 0xba, 0xd5, 0x2a, 0x13, 0xe5, 0x39, 0xae, 0x60, 0xc6, 0x65, 0xe1, 0x70, 0x1d, 0x84, 0x32, - 0xc6, 0x89, 0xa7, 0x6d, 0x2a, 0x97, 0xa2, 0x0c, 0x2a, 0x17, 0xcb, 0xb2, 0x25, 0x16, 0x69, 0xd4, - 0xec, 0x0a, 0x98, 0x7f, 0xe4, 0xa9, 0x80, 0x39, 0x79, 0x3f, 0x29, 0x60, 0x0a, 0x22, 0xb3, 0x3c, - 0x15, 0x30, 0x3f, 0xb3, 0x6b, 0x5e, 0x38, 0x1f, 0x92, 0x7c, 0x6f, 0x1f, 0x12, 0x27, 0xa6, 0xbb, - 0x07, 0x4a, 0x83, 0xe7, 0x9d, 0x81, 0x31, 0x1e, 0x49, 0xab, 0x34, 0xe0, 0xc8, 0x42, 0xa2, 0x35, - 0xf8, 0x0a, 0x23, 0x66, 0x82, 0xda, 0x49, 0x38, 0xfe, 0x87, 0xd3, 0x2d, 0x92, 0x34, 0x2b, 0x8b, - 0xe8, 0xca, 0x26, 0xc9, 0xea, 0x26, 0xbf, 0x41, 0x4c, 0x8e, 0xe2, 0xfb, 0xc0, 0xab, 0x54, 0x4e, - 0x9d, 0x69, 0x87, 0xd7, 0xa0, 0xd4, 0x97, 0x88, 0xef, 0xab, 0xaa, 0x30, 0xf4, 0x36, 0xeb, 0x61, - 0x29, 0xf6, 0x25, 0x06, 0x06, 0x92, 0x3b, 0x3b, 0x13, 0xfd, 0x4d, 0xa9, 0x33, 0xed, 0x46, 0xfb, - 0x37, 0x46, 0x67, 0x1f, 0x4b, 0x65, 0x33, 0x70, 0x8a, 0xe2, 0xe7, 0x44, 0x7f, 0xdc, 0xd8, 0xbd, - 0x8b, 0x99, 0x6e, 0x5b, 0x9f, 0x73, 0x3a, 0x15, 0x4c, 0x79, 0xe0, 0x9c, 0x0a, 0x82, 0x76, 0x9b, - 0xdc, 0xa9, 0x14, 0xb9, 0x57, 0xd8, 0x6d, 0x72, 0x7f, 0x39, 0x16, 0x9b, 0xdc, 0x62, 0x36, 0x27, - 0x52, 0x62, 0x37, 0xd2, 0xb5, 0x5b, 0x7e, 0xa6, 0x71, 0xd0, 0x71, 0x5d, 0xe2, 0x7b, 0x2e, 0x31, - 0x76, 0xdb, 0x67, 0x8a, 0x77, 0xc5, 0x3e, 0xd3, 0xcb, 0xe8, 0x71, 0xfa, 0xfd, 0x6e, 0xf4, 0x38, - 0xe3, 0xd6, 0x8d, 0x1e, 0x5f, 0x41, 0xe3, 0xb7, 0x90, 0xc4, 0xef, 0x33, 0x29, 0xe3, 0xff, 0xa8, - 0x44, 0xcb, 0xe4, 0x02, 0xdb, 0x0e, 0x73, 0x89, 0x0c, 0x18, 0x0f, 0x47, 0x9b, 0x3a, 0xf8, 0xcc, - 0x59, 0xf7, 0x27, 0x9f, 0x79, 0xef, 0xc4, 0xf0, 0x03, 0x82, 0xae, 0x5c, 0x14, 0xd0, 0xb7, 0x82, - 0xe4, 0x22, 0x92, 0xe5, 0x12, 0x60, 0x44, 0x99, 0xf9, 0x3b, 0x13, 0x0c, 0xc1, 0x6e, 0x95, 0x95, - 0xd7, 0x10, 0xcd, 0x2c, 0xc6, 0xb6, 0x19, 0x84, 0xe6, 0x77, 0x4c, 0x56, 0xfe, 0x2f, 0xb2, 0xd0, - 0x34, 0xc7, 0xb4, 0xef, 0x7f, 0x71, 0x64, 0x8d, 0x43, 0x1c, 0xe9, 0x91, 0xcf, 0xa1, 0xb1, 0x36, - 0x06, 0x11, 0xc4, 0x40, 0x1c, 0x39, 0x17, 0xc6, 0xb1, 0x5d, 0x52, 0xbd, 0x0d, 0x04, 0x83, 0x24, - 0x88, 0x2e, 0x35, 0x47, 0x73, 0xed, 0x86, 0x3c, 0xd3, 0x81, 0x8d, 0x46, 0xe1, 0x09, 0xff, 0xc7, - 0x6c, 0x34, 0x1b, 0xe2, 0xc6, 0xb9, 0xcd, 0xd1, 0xd6, 0xbb, 0x99, 0xa6, 0x67, 0xb1, 0x49, 0x92, - 0xc5, 0x34, 0xe5, 0x51, 0x34, 0x77, 0xbd, 0x6c, 0x7e, 0x64, 0xae, 0x27, 0xa5, 0x5b, 0x9a, 0x63, - 0xf2, 0x51, 0x3c, 0xb7, 0x93, 0x20, 0xa6, 0x02, 0xf0, 0x5d, 0xfc, 0x32, 0x80, 0x9c, 0x0b, 0x6e, - 0xa7, 0xe4, 0xa8, 0x94, 0x4f, 0x0a, 0x76, 0xbd, 0xff, 0xd5, 0xa6, 0xed, 0x2c, 0x44, 0x15, 0xf1, - 0xc5, 0x30, 0x71, 0xdf, 0x40, 0x33, 0x84, 0xbb, 0x27, 0x1f, 0x2a, 0x21, 0xcf, 0x4b, 0xb2, 0xb5, - 0x09, 0xfc, 0x76, 0x79, 0xe2, 0x26, 0xd1, 0xdf, 0x9e, 0x18, 0xec, 0x1e, 0x3e, 0x73, 0xda, 0xe8, - 0xdc, 0x97, 0x18, 0x18, 0x48, 0x0c, 0x1d, 0xb0, 0x42, 0x08, 0x61, 0x9e, 0xc5, 0xfc, 0x06, 0x4d, - 0x2b, 0x45, 0xb1, 0x40, 0x47, 0x30, 0xba, 0x3c, 0x1c, 0xa9, 0xd5, 0x02, 0x46, 0x17, 0xce, 0x92, - 0xd2, 0xde, 0x69, 0x74, 0xb5, 0x19, 0x17, 0x4f, 0x25, 0x86, 0x7a, 0xae, 0x36, 0x6d, 0x57, 0x1d, - 0xd3, 0x16, 0x97, 0xa1, 0xbc, 0x70, 0x83, 0x49, 0xe1, 0x85, 0x23, 0x3c, 0x17, 0xc6, 0x0a, 0xe5, - 0x99, 0x30, 0x5f, 0x82, 0x9f, 0x71, 0xc8, 0xa8, 0x44, 0x3c, 0xae, 0xb2, 0x06, 0xa5, 0x2f, 0xe9, - 0xca, 0xf3, 0xe8, 0x39, 0x29, 0xdd, 0x01, 0xd1, 0xf8, 0xfe, 0xbc, 0xae, 0xcc, 0x26, 0x07, 0x8a, - 0xe7, 0xa0, 0x02, 0xef, 0xbe, 0xf7, 0x3f, 0xd8, 0xac, 0x1f, 0x9b, 0x14, 0x1f, 0x7b, 0x85, 0x02, - 0xd8, 0x2c, 0x20, 0x60, 0x73, 0xf1, 0x6b, 0xd8, 0x16, 0x6f, 0x59, 0xfe, 0xef, 0xc7, 0x20, 0xcb, - 0xc7, 0xfe, 0x49, 0xe3, 0xcc, 0x66, 0x51, 0x59, 0xe2, 0xf7, 0x98, 0x0f, 0x35, 0x45, 0x05, 0xfb, - 0x6d, 0x4c, 0xb0, 0x7f, 0x3f, 0x19, 0xaa, 0xa6, 0x3d, 0x77, 0xfb, 0xad, 0x4b, 0x8f, 0x20, 0x0a, - 0xff, 0x5d, 0x16, 0x9a, 0x07, 0x1a, 0x53, 0xfb, 0x20, 0x58, 0x59, 0x75, 0x27, 0xd1, 0xc3, 0x2a, - 0xaa, 0xf0, 0xcb, 0x1a, 0x93, 0xc2, 0x0f, 0x07, 0xa4, 0x21, 0x0a, 0xbf, 0x89, 0x6e, 0x25, 0x9f, - 0x58, 0x66, 0x85, 0xce, 0xcb, 0xa6, 0x72, 0x95, 0xf9, 0x56, 0xe8, 0x3c, 0x91, 0x01, 0x9e, 0xb1, - 0xef, 0x30, 0x95, 0xac, 0x50, 0xaa, 0x82, 0x34, 0xa2, 0xa9, 0x36, 0x32, 0xee, 0x87, 0x5c, 0x40, - 0x62, 0x5f, 0x73, 0x7a, 0x90, 0x91, 0xe6, 0xf6, 0x91, 0x4f, 0x8e, 0xda, 0x75, 0xcd, 0x30, 0xad, - 0xc2, 0xd6, 0x6c, 0x34, 0x3f, 0xc3, 0x70, 0xf7, 0x3f, 0x80, 0xd6, 0xda, 0x00, 0x74, 0xb4, 0x53, - 0xc2, 0x69, 0x81, 0x00, 0x4e, 0x1f, 0x83, 0xe1, 0x60, 0xb7, 0x8c, 0xae, 0x8e, 0x54, 0xf7, 0x4e, - 0x5e, 0x4f, 0x0b, 0x0e, 0x66, 0xe4, 0x9d, 0x0b, 0xe8, 0x8a, 0x1f, 0xbd, 0x2d, 0x65, 0xde, 0x29, - 0xb9, 0xc4, 0xbd, 0xf3, 0x8e, 0x11, 0x47, 0x3e, 0x39, 0x9a, 0xe1, 0xaa, 0xf7, 0xe6, 0xa1, 0xa9, - 0x00, 0x2f, 0x77, 0xe1, 0xf5, 0xfb, 0x2a, 0x0b, 0xe5, 0xd1, 0x87, 0x84, 0xbc, 0x7b, 0xfb, 0xb3, - 0x74, 0xa5, 0x2b, 0x4b, 0x62, 0xc5, 0xf2, 0x8e, 0x2c, 0x12, 0xed, 0x1b, 0x07, 0x60, 0x04, 0x80, - 0xb5, 0x47, 0xfb, 0xbe, 0xda, 0xb4, 0x9d, 0xaf, 0x4c, 0x0c, 0x76, 0x27, 0xfa, 0x9b, 0x8c, 0x4b, - 0x17, 0x6c, 0x4f, 0x20, 0x39, 0x0b, 0xc2, 0x80, 0xd2, 0x88, 0xe7, 0x4c, 0xbe, 0x09, 0xc6, 0x45, - 0x2c, 0xf4, 0x5e, 0xf2, 0xab, 0xe3, 0x60, 0xf2, 0xc4, 0x0f, 0x6c, 0xec, 0x3b, 0x9b, 0xec, 0x39, - 0x36, 0xfc, 0xfd, 0x8e, 0x91, 0x03, 0x97, 0xaf, 0x0d, 0xb6, 0x25, 0xfb, 0x9b, 0x53, 0x5d, 0xbb, - 0xe0, 0xcd, 0x33, 0x1f, 0xd0, 0xcb, 0x1f, 0x99, 0xb4, 0xc6, 0x81, 0xcb, 0x46, 0x57, 0x87, 0xd1, - 0x79, 0x9e, 0x84, 0x8f, 0xc4, 0x66, 0x54, 0xe6, 0x74, 0x39, 0xec, 0x0b, 0x0f, 0x6e, 0xea, 0x8b, - 0xbd, 0x46, 0xcb, 0xc0, 0xf0, 0x27, 0x5f, 0x98, 0xe3, 0x7c, 0x16, 0x07, 0xff, 0x21, 0x73, 0xa9, - 0x27, 0x77, 0x9a, 0x1c, 0x0b, 0xa0, 0x6d, 0x1c, 0xd0, 0xc9, 0x7c, 0x50, 0xd9, 0x7e, 0x88, 0xc7, - 0x04, 0x24, 0x52, 0x77, 0x42, 0x38, 0x28, 0x2c, 0x2f, 0x00, 0x78, 0x0e, 0xeb, 0x4a, 0x9d, 0xe4, - 0x51, 0x2d, 0xaf, 0x27, 0x57, 0x81, 0xe4, 0xeb, 0x35, 0x07, 0x37, 0x59, 0xaf, 0xde, 0x83, 0xa9, - 0x03, 0xa7, 0x4a, 0x7d, 0x31, 0x1a, 0xb4, 0x72, 0xe1, 0xc8, 0xfe, 0xa6, 0x64, 0xdf, 0x36, 0x68, - 0x56, 0xe4, 0x8b, 0x68, 0x31, 0x7f, 0x30, 0xb4, 0x30, 0x31, 0xd0, 0x9c, 0x3a, 0x33, 0x30, 0x72, - 0xe4, 0x64, 0x31, 0x44, 0x13, 0x27, 0xd5, 0x38, 0x85, 0x9c, 0xfb, 0x5b, 0x5e, 0x34, 0x4d, 0xce, - 0x0f, 0x9c, 0xa6, 0x19, 0x77, 0x33, 0x34, 0x8d, 0xd8, 0x22, 0xa0, 0xe9, 0x01, 0x3b, 0xac, 0xd5, - 0x86, 0x23, 0x10, 0x81, 0x37, 0xaf, 0x6c, 0xbd, 0xae, 0xd4, 0x48, 0x5e, 0xf5, 0xf2, 0x0b, 0x70, - 0x8b, 0x8d, 0x7d, 0x87, 0x61, 0xd4, 0x62, 0x1f, 0xec, 0x17, 0xd9, 0x2c, 0xb6, 0x53, 0xe4, 0xcb, - 0xd8, 0x1a, 0xce, 0x88, 0x7f, 0x08, 0xdb, 0xa4, 0x7a, 0x0d, 0x49, 0xe3, 0x75, 0xb9, 0x40, 0x7f, - 0x54, 0xba, 0xea, 0xcb, 0x1c, 0x34, 0xcd, 0xd1, 0xe9, 0x27, 0x82, 0xea, 0x87, 0x4a, 0x50, 0x2d, - 0xd3, 0x95, 0x17, 0xd1, 0xf3, 0x92, 0xfb, 0xc0, 0xc7, 0x4c, 0x49, 0xfd, 0x6d, 0x11, 0x9a, 0x4a, - 0x93, 0xca, 0xb1, 0xe7, 0xc5, 0xdb, 0x7c, 0xa0, 0x98, 0x7f, 0x5e, 0x1e, 0x1e, 0x45, 0x23, 0x65, - 0x49, 0x16, 0xf8, 0x40, 0xc7, 0x1e, 0x9a, 0xa4, 0x05, 0x99, 0x35, 0x49, 0x76, 0xfd, 0x51, 0xcc, - 0xe5, 0xa4, 0xf3, 0xfa, 0xed, 0x77, 0xd2, 0x21, 0x13, 0xb7, 0x14, 0x41, 0xcf, 0x38, 0xbc, 0x74, - 0x1e, 0x1e, 0x45, 0x11, 0xc4, 0x14, 0x3e, 0x35, 0x76, 0x5f, 0x9c, 0x17, 0x6f, 0xd2, 0x17, 0x87, - 0x4c, 0x88, 0x38, 0xe3, 0xbc, 0xe4, 0xd6, 0x22, 0xf9, 0xd2, 0x3b, 0xe3, 0xd0, 0x53, 0xb0, 0x34, - 0x45, 0x95, 0x1e, 0x9a, 0xa2, 0xc7, 0x47, 0xd1, 0x14, 0x91, 0x51, 0x78, 0xbd, 0xd0, 0x9b, 0x5e, - 0x7a, 0xa1, 0xe7, 0x6e, 0x5a, 0x2f, 0x64, 0xd7, 0xff, 0xbc, 0xee, 0xa1, 0xff, 0x79, 0x56, 0x57, - 0x7e, 0x69, 0xd3, 0xff, 0x3c, 0xe1, 0xd0, 0xff, 0xbc, 0xb9, 0xf9, 0xd9, 0x68, 0xb1, 0x0f, 0x2b, - 0x7c, 0xde, 0xe2, 0xd5, 0x41, 0x36, 0xdd, 0xcf, 0xe6, 0x1b, 0xd5, 0xfd, 0xdc, 0x8a, 0xbb, 0xcd, - 0x97, 0x9e, 0xda, 0x9e, 0xd6, 0xfb, 0x47, 0xdb, 0xf3, 0xc3, 0x09, 0x58, 0xe6, 0xc4, 0x61, 0xf7, - 0x40, 0xd9, 0xc4, 0x31, 0x73, 0x93, 0x6f, 0x92, 0x99, 0x13, 0xff, 0xb1, 0x15, 0xf0, 0x17, 0x74, - 0x37, 0x7d, 0x82, 0xae, 0x6c, 0x64, 0xd1, 0x45, 0x7f, 0xcb, 0xa7, 0x14, 0x06, 0x43, 0xbd, 0xe1, - 0x1d, 0x43, 0xf0, 0xb3, 0x5c, 0xad, 0x54, 0xd6, 0x56, 0xad, 0x5e, 0x71, 0x6d, 0xb0, 0x8d, 0x04, - 0xf7, 0xbd, 0x36, 0xd8, 0x56, 0x51, 0xb9, 0xb2, 0x92, 0x14, 0x2e, 0x57, 0x56, 0xae, 0x53, 0x2b, - 0xaf, 0x0d, 0xb6, 0xb1, 0xac, 0x09, 0xca, 0xda, 0xaa, 0x35, 0xab, 0x69, 0xa3, 0xca, 0x8a, 0xeb, - 0x65, 0xe5, 0x11, 0x45, 0xcd, 0xa3, 0xe3, 0x58, 0x31, 0x82, 0xf3, 0xe8, 0x28, 0x56, 0x90, 0xe0, - 0xc9, 0xf6, 0x41, 0xd4, 0xf1, 0x64, 0x0c, 0xf5, 0x67, 0x2c, 0xda, 0xe9, 0x98, 0xe2, 0x9f, 0xb9, - 0x8e, 0xed, 0x47, 0x10, 0xff, 0xcc, 0xb5, 0xe6, 0x07, 0x2e, 0xfe, 0xd9, 0x3a, 0x94, 0x07, 0x71, - 0x7e, 0x58, 0x00, 0x34, 0x8c, 0xf8, 0x59, 0xa1, 0x2c, 0x39, 0x23, 0xa0, 0x99, 0x6f, 0x23, 0x4e, - 0x23, 0x03, 0xbe, 0xbc, 0x7c, 0x40, 0x34, 0xd6, 0x4b, 0xfc, 0xd6, 0x2b, 0x22, 0xda, 0x87, 0x82, - 0xae, 0x74, 0xda, 0x95, 0x97, 0x4d, 0xb7, 0x5d, 0x79, 0x79, 0xcf, 0xe2, 0xa0, 0x79, 0x79, 0x76, - 0xcd, 0xba, 0x4f, 0x3d, 0xbb, 0x66, 0xff, 0xc0, 0x3c, 0xbb, 0x0a, 0x7e, 0xb8, 0x9e, 0x5d, 0x0f, - 0xfd, 0x20, 0x3c, 0xbb, 0x1c, 0xf1, 0xb9, 0xe6, 0xdc, 0xbe, 0xf8, 0x5c, 0xdf, 0x0a, 0x68, 0x02, - 0xd3, 0x54, 0x16, 0xcc, 0x1d, 0xe3, 0xdb, 0xe4, 0xa9, 0xfa, 0xaf, 0xbc, 0xe3, 0xaa, 0xff, 0x4a, - 0xcf, 0xa0, 0x4f, 0xf3, 0xee, 0x70, 0xd0, 0xa7, 0xf9, 0x77, 0xc5, 0xa8, 0xe0, 0xcf, 0xee, 0xa0, - 0x4f, 0x0b, 0x46, 0x25, 0xc9, 0x6f, 0x5f, 0x40, 0xa8, 0x80, 0xdd, 0x1e, 0xf1, 0xe1, 0x31, 0xa4, - 0xb5, 0xbf, 0x4d, 0xe1, 0xa2, 0x7c, 0xf7, 0xa1, 0xe5, 0xc4, 0xbb, 0xbc, 0xe5, 0xc4, 0x23, 0xa3, - 0x1e, 0xc3, 0x2d, 0x59, 0x55, 0xc4, 0x6c, 0xf1, 0xec, 0x21, 0xc2, 0xd8, 0x5a, 0x93, 0x4c, 0xe7, - 0x8a, 0xe5, 0x72, 0xde, 0x61, 0x8e, 0x4f, 0x0d, 0x57, 0x9c, 0x3c, 0x3e, 0x68, 0x0c, 0x76, 0x26, - 0xfa, 0xe3, 0x0b, 0x63, 0xc1, 0x7a, 0x6d, 0xd1, 0xea, 0xf0, 0x7b, 0x0b, 0x8b, 0x16, 0x2d, 0x0f, - 0x47, 0xea, 0xfd, 0x31, 0x28, 0x51, 0x97, 0x97, 0x3f, 0xf9, 0xe4, 0x93, 0xcf, 0x15, 0x15, 0xd9, - 0xa2, 0xe4, 0x97, 0x59, 0xf6, 0x60, 0x8f, 0x72, 0x24, 0x3a, 0xb5, 0x07, 0x13, 0x99, 0x3d, 0x98, - 0x07, 0x89, 0x4e, 0xcd, 0xc2, 0x4e, 0x0b, 0x68, 0x32, 0xec, 0x2a, 0x3b, 0x4c, 0x08, 0x24, 0xf6, - 0x17, 0x5d, 0xf9, 0xa3, 0xe4, 0xa8, 0x92, 0x83, 0xc6, 0xd0, 0x87, 0x8e, 0x7d, 0x06, 0x5c, 0x97, - 0xe8, 0x8f, 0xd3, 0xb3, 0xc1, 0x26, 0x1b, 0x99, 0x0f, 0xd9, 0x32, 0x11, 0x5b, 0x0c, 0x46, 0x1c, - 0xf8, 0x94, 0x6d, 0x31, 0xb4, 0x54, 0xc7, 0xa7, 0xbd, 0xa2, 0x75, 0x3d, 0xfe, 0x43, 0x8d, 0xd6, - 0xf5, 0x53, 0x10, 0xad, 0x1b, 0xb5, 0xb6, 0xf9, 0x77, 0x82, 0xae, 0xfc, 0x6b, 0x01, 0xfd, 0xad, - 0x20, 0xb9, 0xe4, 0x7f, 0xf2, 0xb7, 0x82, 0xa7, 0xa7, 0x2a, 0xbc, 0xe5, 0xc3, 0x7d, 0xa7, 0xc0, - 0x4d, 0x35, 0x31, 0xd0, 0xcc, 0xa7, 0x48, 0x23, 0x3a, 0x33, 0xbd, 0x2d, 0x71, 0xf9, 0x5c, 0xb2, - 0xf7, 0x53, 0x6f, 0xa1, 0xff, 0x89, 0x36, 0x13, 0x3d, 0xe0, 0x84, 0x21, 0x57, 0x9b, 0xb6, 0x13, - 0xcf, 0x59, 0x88, 0xe9, 0x88, 0x33, 0x90, 0x30, 0x81, 0x6b, 0xea, 0xa3, 0x7e, 0xa3, 0xf9, 0x1b, - 0x10, 0xc9, 0xe1, 0x8f, 0x5e, 0x4c, 0x1e, 0xbf, 0x94, 0x6c, 0x3f, 0x07, 0x8d, 0x49, 0x30, 0x4c, - 0x9a, 0x6e, 0xc5, 0xed, 0x36, 0x5b, 0xf8, 0x4f, 0xb3, 0xd1, 0x34, 0xc7, 0xba, 0x1e, 0x3c, 0x73, - 0x9c, 0x34, 0x94, 0xb6, 0xdb, 0x1c, 0x87, 0xe9, 0x2b, 0x3d, 0x64, 0xe0, 0x7f, 0xba, 0xf9, 0xe4, - 0xef, 0xb7, 0x41, 0x42, 0x5d, 0xae, 0x2b, 0xcb, 0xd0, 0x4b, 0x92, 0xfb, 0x2c, 0xa8, 0x4a, 0xda, - 0x76, 0xc7, 0xd2, 0x08, 0xa9, 0xff, 0xb5, 0x80, 0x66, 0xaa, 0x5a, 0x2c, 0xb2, 0xd5, 0x95, 0xf0, - 0xe3, 0x69, 0xb7, 0xa4, 0xba, 0x20, 0x9d, 0x22, 0x94, 0x17, 0x45, 0xbf, 0xc8, 0xe9, 0x8a, 0xb2, - 0xa8, 0x65, 0xf0, 0x4c, 0x4e, 0x57, 0x34, 0x01, 0xa4, 0x35, 0xc3, 0x4d, 0xcd, 0x10, 0x4f, 0x44, - 0x28, 0x08, 0x70, 0xc6, 0x2f, 0xaf, 0xe8, 0x4a, 0x25, 0x2a, 0x97, 0xbc, 0x27, 0x25, 0x2f, 0x80, - 0xe4, 0x37, 0x89, 0xfe, 0xbd, 0x46, 0xe7, 0x3e, 0x77, 0x3c, 0x3a, 0xdb, 0x3d, 0xfd, 0x2c, 0x1b, - 0xcd, 0xf2, 0x1a, 0xe5, 0xfe, 0xbf, 0xac, 0xab, 0xc6, 0x76, 0x59, 0xf1, 0x24, 0xe0, 0xb2, 0xce, - 0x84, 0x67, 0xc2, 0x5b, 0x55, 0xf3, 0xab, 0x31, 0xa8, 0x6a, 0x60, 0x2c, 0xec, 0xc7, 0x6a, 0x8d, - 0xc5, 0x27, 0x60, 0x03, 0xa5, 0x4c, 0xe9, 0x3a, 0x5d, 0x51, 0x51, 0xb5, 0x94, 0x66, 0x63, 0x33, - 0x9c, 0x4f, 0x66, 0x7b, 0xb4, 0xbd, 0x59, 0x68, 0xd2, 0x0a, 0x2d, 0x96, 0x4e, 0x0f, 0x9f, 0x75, - 0xfb, 0xf4, 0xf0, 0x75, 0xc4, 0xf2, 0x1c, 0xb3, 0x27, 0x70, 0x22, 0x98, 0x12, 0xb7, 0x4a, 0xe5, - 0x97, 0xdc, 0x8f, 0xb5, 0x2d, 0x72, 0x11, 0xb3, 0x1a, 0xef, 0xb0, 0xf4, 0x8d, 0x78, 0xcb, 0xe0, - 0xa7, 0x6a, 0x0d, 0x55, 0xfa, 0x94, 0xae, 0x2c, 0x45, 0x8b, 0x25, 0xfb, 0xda, 0x64, 0x11, 0x9c, - 0x7f, 0xd3, 0xde, 0xdc, 0xd3, 0x39, 0x68, 0x32, 0xdf, 0xe3, 0x47, 0x77, 0x63, 0x35, 0x34, 0x0e, - 0x73, 0x33, 0xe9, 0xd0, 0x69, 0x25, 0xcf, 0xea, 0x84, 0x36, 0x86, 0x41, 0x95, 0x00, 0x7d, 0xe4, - 0x47, 0x1c, 0x23, 0x1b, 0xcd, 0x17, 0x12, 0x03, 0xe4, 0xd5, 0x23, 0x5f, 0x81, 0x96, 0xf7, 0x58, - 0xc3, 0xa8, 0xe8, 0xca, 0x4b, 0xe8, 0x05, 0xc9, 0x71, 0xd2, 0x8e, 0xcb, 0x91, 0x19, 0x6c, 0xfe, - 0x48, 0x88, 0x20, 0x6e, 0x2b, 0xc4, 0x4d, 0x28, 0x9f, 0xaa, 0xd7, 0x30, 0x6f, 0x0f, 0xa8, 0xdb, - 0x7c, 0x2c, 0x24, 0x5b, 0x05, 0x15, 0x68, 0x19, 0xf1, 0x03, 0xc6, 0x57, 0xdb, 0x59, 0xea, 0x69, - 0x5e, 0xf3, 0xb3, 0x30, 0xb6, 0x59, 0x5b, 0xcc, 0x92, 0xc3, 0x17, 0xa9, 0xb6, 0xfe, 0x85, 0xdd, - 0x02, 0x9a, 0x56, 0xfe, 0x8e, 0x56, 0xbb, 0x19, 0x07, 0x9a, 0x26, 0x71, 0x06, 0xc4, 0x97, 0x51, - 0x5e, 0x30, 0x14, 0xd2, 0x22, 0x55, 0xd5, 0xd1, 0x02, 0x01, 0x0b, 0xed, 0xb0, 0xc7, 0x3d, 0x2b, - 0x94, 0x67, 0x00, 0xc7, 0x0c, 0x8e, 0xcb, 0x4c, 0x6a, 0xc7, 0xea, 0x4b, 0x2b, 0x74, 0x45, 0x41, - 0x2f, 0x4b, 0xee, 0xa1, 0xe5, 0x87, 0x93, 0x9f, 0x36, 0x25, 0x8f, 0x9d, 0x0a, 0x85, 0x03, 0x1a, - 0xb1, 0x93, 0xc1, 0x06, 0xcb, 0x1b, 0x6a, 0x89, 0x24, 0xf4, 0x8a, 0xc0, 0x46, 0x29, 0xbc, 0x90, - 0x8d, 0x44, 0x7e, 0x84, 0x68, 0x43, 0x38, 0x14, 0xd5, 0xee, 0x77, 0x30, 0xaa, 0x63, 0x60, 0xe4, - 0x9d, 0x3a, 0xc6, 0xb5, 0xa0, 0x45, 0x15, 0xfe, 0x98, 0x1f, 0x64, 0x26, 0x38, 0xff, 0x1e, 0xc0, - 0xd6, 0xc3, 0x30, 0x38, 0xde, 0x28, 0xbc, 0x65, 0xf0, 0x99, 0xe2, 0xcd, 0xda, 0xd6, 0xe4, 0xe1, - 0xbe, 0xaa, 0x6a, 0x80, 0xb2, 0x39, 0x35, 0x68, 0x02, 0xeb, 0x7e, 0x13, 0x39, 0xbb, 0xcd, 0x89, - 0xa8, 0x78, 0xde, 0x3c, 0xf1, 0x4b, 0x8c, 0x57, 0x3d, 0x36, 0x9f, 0xee, 0x16, 0x09, 0x3b, 0x8f, - 0x35, 0x2b, 0x6e, 0x82, 0xe4, 0xaa, 0x80, 0x90, 0x35, 0xb2, 0x58, 0x8e, 0xc6, 0x07, 0xa3, 0x95, - 0xef, 0x07, 0xa3, 0x90, 0x14, 0x2d, 0x8f, 0xe4, 0x03, 0x21, 0x65, 0xf2, 0x5c, 0x22, 0x7e, 0xe1, - 0xae, 0x03, 0x55, 0x94, 0xf5, 0xaa, 0xb4, 0x95, 0x58, 0xe6, 0x7e, 0x4b, 0xb0, 0xac, 0x81, 0x7b, - 0x4b, 0xc8, 0xad, 0x04, 0x5d, 0xb3, 0x17, 0x59, 0xb3, 0xd2, 0xae, 0x61, 0xcf, 0xb6, 0x72, 0x1e, - 0xda, 0x34, 0xec, 0x05, 0xee, 0x71, 0x3c, 0xb4, 0xed, 0x85, 0xff, 0x3a, 0x0b, 0x4d, 0x5f, 0x17, - 0x2a, 0x0f, 0x47, 0x02, 0xe1, 0x10, 0xac, 0xf6, 0xf6, 0x40, 0x8f, 0x58, 0xe3, 0x5e, 0xea, 0x2f, - 0x75, 0xe5, 0x17, 0xfc, 0x52, 0x17, 0x10, 0xb3, 0x39, 0x36, 0x51, 0x8c, 0xaa, 0x58, 0x3d, 0x0e, - 0xaa, 0xe0, 0x13, 0xf8, 0xb5, 0x47, 0x68, 0x4a, 0x91, 0x6c, 0x3c, 0xa5, 0xdf, 0xea, 0xca, 0x6f, - 0x68, 0x4a, 0x91, 0x6a, 0x32, 0x1f, 0xbc, 0x46, 0x98, 0xcd, 0xb5, 0xc1, 0x36, 0x43, 0x6f, 0xf3, - 0x9a, 0x67, 0x22, 0xde, 0x36, 0xd2, 0xd4, 0x9a, 0xe8, 0x6f, 0x32, 0x39, 0x98, 0xc1, 0xc3, 0x46, - 0x73, 0x8b, 0xbb, 0x37, 0xc9, 0x47, 0x42, 0xad, 0x74, 0xbc, 0x76, 0x49, 0x9e, 0x0b, 0xb2, 0x4e, - 0xd2, 0xb9, 0xb3, 0x6f, 0xf8, 0xfc, 0x0e, 0x23, 0x7e, 0x1a, 0x6e, 0x54, 0xe1, 0x95, 0x2c, 0x34, - 0xc3, 0xde, 0xe9, 0xc1, 0x80, 0x7d, 0x7b, 0xfc, 0x92, 0x47, 0xbd, 0xa0, 0x6d, 0x4d, 0x03, 0x51, - 0xdf, 0xd6, 0x60, 0x3d, 0x20, 0x49, 0xca, 0x88, 0x41, 0x9e, 0x8c, 0x49, 0x28, 0x10, 0xb0, 0xa2, - 0xac, 0xd2, 0x95, 0xe5, 0xa8, 0x42, 0xf2, 0xdc, 0x0d, 0x79, 0x2e, 0x7f, 0x0b, 0x1c, 0x7b, 0xe8, - 0x86, 0xca, 0xff, 0x21, 0x0b, 0x4d, 0xfb, 0xe9, 0xb6, 0xa6, 0xbf, 0xad, 0xcf, 0xea, 0xca, 0x2f, - 0xd1, 0x93, 0x92, 0x7b, 0x8f, 0xe4, 0x05, 0xfc, 0x5d, 0x4d, 0xf4, 0xb7, 0x3b, 0xaf, 0xeb, 0xbf, - 0xcc, 0x42, 0xe2, 0x4f, 0x97, 0xd5, 0x5f, 0xfa, 0x2b, 0x5d, 0x59, 0x81, 0x2a, 0x25, 0x8f, 0xbd, - 0xb0, 0x5f, 0x01, 0xf7, 0x16, 0xba, 0x6f, 0x6b, 0x3c, 0x87, 0x4a, 0x28, 0xf8, 0xdb, 0x5a, 0xe5, - 0xba, 0xad, 0x25, 0x63, 0xb8, 0xad, 0xd7, 0xcb, 0xc6, 0xeb, 0x42, 0x4e, 0x9e, 0x30, 0x35, 0xc0, - 0xdd, 0xdb, 0x4b, 0x96, 0x2d, 0x01, 0xec, 0xf6, 0x71, 0x41, 0x57, 0x5e, 0x67, 0xb6, 0x04, 0xab, - 0xf9, 0x09, 0xc3, 0x24, 0x17, 0xda, 0xb5, 0xfa, 0x8b, 0x89, 0x01, 0xc0, 0x62, 0xaa, 0xff, 0x5f, - 0xac, 0x54, 0x54, 0x94, 0x10, 0x13, 0x80, 0xc5, 0x6a, 0xe5, 0xaa, 0x35, 0xeb, 0x2b, 0xe9, 0xcf, - 0x22, 0xc8, 0x31, 0xec, 0xb2, 0x0b, 0x70, 0xdb, 0x10, 0x4c, 0xe4, 0x06, 0x51, 0x27, 0xdb, 0x47, - 0x61, 0xc6, 0x03, 0xaa, 0x3d, 0x0d, 0x79, 0x36, 0x8d, 0x39, 0x5c, 0x62, 0x4f, 0x43, 0xee, 0x0d, - 0x77, 0x66, 0x8b, 0x4d, 0x66, 0x0b, 0x5b, 0xda, 0x71, 0x71, 0x25, 0x0f, 0xc7, 0x39, 0xd4, 0x95, - 0xef, 0x46, 0xe0, 0x98, 0x07, 0xe0, 0x67, 0x2d, 0x6b, 0x8f, 0x71, 0xd4, 0x90, 0x6d, 0x86, 0x65, - 0xed, 0x31, 0x81, 0x8c, 0xd4, 0xd4, 0x4c, 0x81, 0x9f, 0x19, 0xec, 0x97, 0xe9, 0xca, 0xcb, 0xe8, - 0x45, 0xc9, 0x7d, 0xf8, 0xf2, 0x7c, 0xf0, 0xd8, 0x83, 0x74, 0xec, 0x30, 0x00, 0x86, 0x5c, 0xb8, - 0x83, 0x3c, 0xe5, 0xf8, 0x1f, 0xb3, 0x90, 0xc8, 0xf7, 0x7f, 0x30, 0x00, 0xf2, 0xd7, 0x36, 0x80, - 0xf4, 0xa4, 0xd5, 0x08, 0x1c, 0xe2, 0xa8, 0x1c, 0x00, 0x87, 0xf3, 0x48, 0x82, 0xe7, 0x96, 0x2e, - 0x63, 0xcf, 0x31, 0x43, 0x6f, 0x83, 0xd4, 0xc8, 0xe4, 0x98, 0x09, 0x5c, 0xd6, 0xe8, 0x4a, 0x35, - 0x5a, 0x2d, 0x79, 0x6c, 0x89, 0xfc, 0x04, 0x2f, 0x66, 0x22, 0x8a, 0x4d, 0x3c, 0x37, 0xcb, 0xda, - 0x01, 0x53, 0x64, 0x6e, 0x00, 0x7d, 0x09, 0x68, 0x3c, 0x98, 0x91, 0x58, 0x80, 0xc6, 0x47, 0x1b, - 0x6b, 0x6b, 0xb5, 0x28, 0x81, 0x4b, 0x95, 0xfe, 0x14, 0x67, 0xa1, 0xdc, 0x8d, 0x90, 0xcf, 0x39, - 0x0b, 0x57, 0x90, 0x5f, 0x85, 0x67, 0xb0, 0xd4, 0xaa, 0x36, 0x1c, 0x09, 0x98, 0xc3, 0x98, 0x6c, - 0x0f, 0x05, 0xf2, 0x75, 0x14, 0xf9, 0x0b, 0x98, 0x84, 0x9e, 0xe1, 0xb5, 0x11, 0x26, 0x0d, 0x39, - 0x97, 0x3e, 0x09, 0x22, 0x99, 0x78, 0xdf, 0xe9, 0xe4, 0x8e, 0x66, 0x0a, 0xf2, 0x79, 0xba, 0x30, + 0x52, 0x50, 0x50, 0xa0, 0xf8, 0x0c, 0x61, 0x08, 0xff, 0x1f, 0x7b, 0x6f, 0x02, 0x1d, 0xc5, 0x95, + 0x2d, 0x08, 0x56, 0x48, 0x42, 0x88, 0x87, 0xd8, 0x82, 0x4d, 0x66, 0x73, 0x5a, 0xb6, 0xcb, 0x28, + 0x4a, 0x62, 0x09, 0xbb, 0xbc, 0xc8, 0x1b, 0xa1, 0x05, 0xac, 0x32, 0x8b, 0x1c, 0x02, 0xca, 0x65, + 0x97, 0xcb, 0x95, 0x28, 0x03, 0x9c, 0x46, 0xca, 0x54, 0x65, 0xa6, 0xb0, 0x71, 0xfd, 0xaa, 0x2f, + 0x16, 0x81, 0x04, 0xda, 0x08, 0xb3, 0xca, 0xc2, 0x80, 0xcd, 0xe6, 0x45, 0x08, 0x6f, 0x20, 0x52, + 0x92, 0x99, 0x3e, 0x33, 0xbf, 0xd7, 0x39, 0x3d, 0xdd, 0xfc, 0xff, 0x67, 0xba, 0xa7, 0x7b, 0x7a, + 0xba, 0x3f, 0x19, 0x99, 0x52, 0x9f, 0x9e, 0xa6, 0xe7, 0xcc, 0xcc, 0x39, 0x7f, 0x38, 0xd3, 0x33, + 0x73, 0xe2, 0xdd, 0xf7, 0x5e, 0xbc, 0x58, 0x32, 0x25, 0x76, 0xf0, 0x72, 0x7c, 0x0e, 0xca, 0xb7, + 0xc5, 0x5b, 0xee, 0xbb, 0xef, 0xee, 0xb7, 0x3f, 0x9e, 0xb8, 0x7c, 0xd4, 0xe8, 0xdb, 0xc5, 0xe2, + 0xd6, 0x38, 0x82, 0x6a, 0xb3, 0x1e, 0xe2, 0xe7, 0x02, 0x9a, 0x58, 0x1b, 0xd1, 0x02, 0x5a, 0x28, + 0x16, 0xf4, 0xd7, 0x45, 0x0b, 0x66, 0x78, 0xc7, 0xab, 0x21, 0xcf, 0xd0, 0xa2, 0x72, 0xab, 0x29, + 0x88, 0xff, 0x71, 0x94, 0x63, 0x7e, 0x04, 0x79, 0x25, 0xbd, 0x84, 0x7b, 0x53, 0x07, 0x8e, 0x18, + 0xbd, 0x87, 0x53, 0xdd, 0x3b, 0x21, 0xe7, 0x0a, 0x0d, 0xc0, 0xba, 0x97, 0x04, 0x19, 0xeb, 0xde, + 0x69, 0x75, 0x63, 0xb2, 0x04, 0xd0, 0x06, 0x98, 0xad, 0x21, 0x5d, 0x10, 0x3f, 0xb4, 0x58, 0x8a, + 0x26, 0x60, 0xac, 0x6d, 0xf9, 0x95, 0x96, 0xcd, 0xd3, 0x95, 0x87, 0x24, 0xab, 0x54, 0xce, 0xb7, + 0x45, 0xc8, 0xb5, 0x2a, 0xc4, 0x17, 0xdd, 0x4e, 0xa7, 0xf0, 0x44, 0xf0, 0x71, 0x6e, 0xf3, 0xd3, + 0x45, 0xb8, 0x9d, 0xf3, 0x06, 0x9a, 0xea, 0x5c, 0xbb, 0x87, 0x04, 0x66, 0x09, 0x2f, 0x81, 0xf1, + 0x90, 0x1c, 0x5a, 0x43, 0xf0, 0xd2, 0x99, 0x7a, 0x5d, 0x79, 0x17, 0xbd, 0x23, 0xd1, 0xb7, 0x5e, + 0x7e, 0x8b, 0x7f, 0x72, 0x4c, 0xb0, 0x38, 0xf0, 0x6d, 0x62, 0xe8, 0x43, 0xa3, 0xef, 0xd2, 0xc8, + 0x50, 0x57, 0x40, 0xdb, 0x12, 0x6e, 0x20, 0xfa, 0xf8, 0xab, 0x4d, 0xdb, 0xc1, 0xa5, 0x10, 0xb0, + 0x06, 0x64, 0xbb, 0x02, 0x95, 0x2e, 0x4b, 0x3e, 0x06, 0x92, 0x62, 0x20, 0xad, 0x47, 0xba, 0xf7, + 0xa7, 0x4e, 0x0f, 0x14, 0x1a, 0x53, 0x50, 0xce, 0x5a, 0x7f, 0x74, 0xb3, 0xf8, 0x1a, 0xca, 0x8d, + 0xf9, 0xa3, 0x9b, 0x19, 0x41, 0xf1, 0x9c, 0xae, 0x3c, 0x2d, 0x91, 0x22, 0xb9, 0x38, 0x31, 0x30, + 0x80, 0x91, 0x99, 0x15, 0x97, 0xf7, 0xf2, 0x50, 0x32, 0xde, 0x97, 0xe8, 0xef, 0x48, 0x9d, 0x38, + 0x67, 0x02, 0x13, 0xae, 0x07, 0xd9, 0xb4, 0x4a, 0x7a, 0x89, 0x7f, 0x42, 0x79, 0xe6, 0x5f, 0x18, + 0xc7, 0x01, 0x35, 0xe1, 0xd7, 0x95, 0xdf, 0x49, 0xac, 0x50, 0x56, 0x49, 0x37, 0x8a, 0xdb, 0x40, + 0x51, 0x03, 0x26, 0x38, 0x24, 0xf0, 0x2d, 0x88, 0xc1, 0x71, 0x3c, 0xf5, 0xb5, 0x61, 0xab, 0xcc, + 0xe2, 0xdc, 0xa3, 0xcb, 0x23, 0xe1, 0x7a, 0x52, 0x91, 0xea, 0x6d, 0x55, 0xd9, 0xe8, 0xe2, 0xfb, + 0x2c, 0xc0, 0x21, 0xd0, 0x1c, 0xbf, 0xc7, 0x14, 0x20, 0x09, 0x70, 0x98, 0xcf, 0xcf, 0xf8, 0x7a, + 0x59, 0x45, 0xa4, 0x4c, 0xcd, 0xaf, 0x5a, 0x5d, 0xb5, 0xb6, 0x4a, 0x59, 0x59, 0xf5, 0x46, 0xd5, + 0xea, 0x15, 0xea, 0x78, 0x75, 0xdd, 0xea, 0xd5, 0xf8, 0x8f, 0x9a, 0x75, 0xe5, 0xe5, 0x95, 0x35, + 0x35, 0xea, 0xf8, 0xe5, 0x4a, 0xd5, 0xca, 0x75, 0x6a, 0xa5, 0x3a, 0x7e, 0x6d, 0xd5, 0xaa, 0xca, + 0x35, 0xeb, 0xd6, 0xaa, 0x93, 0x97, 0xaf, 0x51, 0xcb, 0x2b, 0xd7, 0x56, 0xaa, 0xab, 0xaa, 0x56, + 0x2b, 0x6b, 0x2b, 0x59, 0x60, 0xc3, 0xdf, 0x59, 0x74, 0x2b, 0x90, 0x1f, 0xd8, 0x4b, 0x93, 0xd1, + 0xad, 0x4f, 0xc3, 0xb7, 0x41, 0xe3, 0x63, 0x1d, 0xec, 0x9e, 0x53, 0x23, 0xfb, 0x8f, 0x80, 0x41, + 0x04, 0x90, 0xb4, 0xc9, 0xce, 0xae, 0xd4, 0xc9, 0x38, 0x3b, 0x5e, 0x8b, 0xb6, 0x7d, 0x0a, 0x8d, + 0x8b, 0xc6, 0xfc, 0x11, 0x5b, 0x7a, 0x6b, 0x28, 0x91, 0x45, 0x18, 0x9b, 0xa5, 0xd9, 0x31, 0x41, + 0x17, 0xaa, 0xc4, 0x45, 0x28, 0x5b, 0x0b, 0x05, 0x88, 0x3b, 0x09, 0xbe, 0x2a, 0xe6, 0x6f, 0xda, + 0xc3, 0xa4, 0x85, 0x8f, 0x1e, 0x23, 0x3d, 0xcc, 0x0a, 0x71, 0x25, 0x9a, 0xa4, 0xe1, 0x40, 0x5e, + 0x34, 0x78, 0x2c, 0x24, 0x94, 0xc5, 0xae, 0x4f, 0xf6, 0x1a, 0x3a, 0x06, 0xac, 0x88, 0x8c, 0x61, + 0x6f, 0x22, 0xae, 0x43, 0x13, 0x6b, 0x1b, 0x23, 0x11, 0x2d, 0x14, 0xab, 0x89, 0x69, 0x0d, 0x84, + 0x8a, 0xc0, 0x48, 0x90, 0x2f, 0x97, 0x1f, 0x21, 0x23, 0xf5, 0x7e, 0x6a, 0xf4, 0x9c, 0x25, 0xae, + 0xab, 0xdd, 0x3b, 0x93, 0xbd, 0xa7, 0x46, 0x3e, 0x27, 0x4f, 0x89, 0xca, 0xb7, 0x17, 0xab, 0x50, + 0x7e, 0x34, 0xa6, 0x35, 0xd4, 0x98, 0xac, 0x50, 0xa8, 0xd6, 0xa4, 0x2b, 0xb2, 0x69, 0x96, 0x14, + 0x5b, 0x85, 0x63, 0x8a, 0x78, 0x3c, 0xd5, 0xd6, 0x42, 0xdc, 0x2e, 0x98, 0xdb, 0xaa, 0x35, 0x50, + 0xf3, 0xfc, 0x87, 0xdd, 0x46, 0x32, 0xd1, 0xcd, 0x8b, 0xcc, 0xaf, 0x12, 0x74, 0xf7, 0xaa, 0xae, + 0xbc, 0x22, 0x41, 0x17, 0xf9, 0x65, 0x18, 0x7e, 0xb8, 0xef, 0x74, 0x6a, 0x60, 0x17, 0x0c, 0xcf, + 0x65, 0xad, 0xb3, 0x28, 0x2e, 0x28, 0x84, 0x4b, 0x83, 0xa3, 0x3f, 0x6f, 0x37, 0xfa, 0xfb, 0x93, + 0x87, 0x2e, 0xa8, 0x30, 0x8e, 0xb8, 0x8c, 0x8f, 0x43, 0x0e, 0x74, 0x46, 0xa1, 0xae, 0x3c, 0xcc, + 0xc7, 0x21, 0x67, 0x2b, 0xc1, 0xdc, 0x32, 0xa6, 0x6d, 0xf8, 0xd0, 0xe3, 0xcb, 0x78, 0xe6, 0x20, + 0x9f, 0x1b, 0xc1, 0x62, 0x0e, 0xec, 0x23, 0xb8, 0x02, 0x96, 0x71, 0xd4, 0xf3, 0x24, 0xcf, 0xe0, + 0xe5, 0x00, 0x62, 0x18, 0xb7, 0x26, 0xe2, 0x71, 0x5b, 0xf0, 0xf2, 0x3a, 0x7f, 0x34, 0x06, 0x52, + 0x5b, 0x42, 0x16, 0x40, 0xf8, 0x70, 0xab, 0x58, 0x16, 0x13, 0xfd, 0x7b, 0x92, 0x5f, 0x9e, 0xb0, + 0x23, 0x57, 0xab, 0x9e, 0x0f, 0x5e, 0x3e, 0xc5, 0x33, 0x78, 0x39, 0xcc, 0x1d, 0xc2, 0x8f, 0x9a, + 0x5f, 0xa7, 0xc4, 0x77, 0x3d, 0x9a, 0xbc, 0x31, 0x1c, 0xa9, 0xd5, 0x68, 0x48, 0x66, 0x9a, 0x93, + 0x0a, 0xc7, 0xb2, 0x73, 0x54, 0xc9, 0x4b, 0xc8, 0x79, 0xd1, 0x84, 0x70, 0x90, 0xa6, 0x2f, 0x35, + 0xd0, 0x92, 0xec, 0xfd, 0x84, 0x21, 0x39, 0xf0, 0x02, 0x4e, 0x76, 0x9c, 0x31, 0x5a, 0x2e, 0xa8, + 0x8e, 0x11, 0xc4, 0x76, 0x01, 0xe5, 0xd7, 0x86, 0xeb, 0xeb, 0xc3, 0xa1, 0x6a, 0x7f, 0xc4, 0x5f, + 0x1f, 0x2d, 0x98, 0x86, 0xa1, 0xe6, 0xe7, 0x9e, 0x50, 0x53, 0xce, 0x35, 0x04, 0xe0, 0xc1, 0x1e, + 0x8c, 0xb6, 0x01, 0xe4, 0x45, 0x46, 0xf3, 0x97, 0x46, 0xf3, 0x57, 0x4c, 0xb3, 0x0d, 0x61, 0xcb, + 0x87, 0x2f, 0x9e, 0x35, 0x61, 0x0e, 0x4c, 0x46, 0x68, 0x80, 0x91, 0xe3, 0x23, 0x4d, 0xba, 0x6a, + 0xeb, 0x2d, 0x96, 0x03, 0xb6, 0xe5, 0x48, 0x8c, 0x27, 0x74, 0xe5, 0x31, 0x89, 0x15, 0xca, 0x05, + 0x3c, 0xb6, 0xe5, 0xb9, 0x38, 0x95, 0xb5, 0x11, 0x57, 0x23, 0x14, 0x0a, 0x07, 0xb4, 0xaa, 0x6a, + 0x93, 0x65, 0xc5, 0xc9, 0xa7, 0x26, 0x80, 0xcc, 0x86, 0x2b, 0x96, 0xe7, 0x83, 0xce, 0x8a, 0x1c, + 0xc4, 0x87, 0xed, 0x89, 0xa1, 0x9e, 0x54, 0xf7, 0xce, 0xaa, 0x6a, 0xc2, 0xfb, 0x72, 0x4d, 0xc5, + 0x0d, 0x68, 0xa2, 0xf9, 0x8b, 0x64, 0x4e, 0x23, 0xd1, 0xe0, 0x71, 0x8e, 0x0b, 0xbe, 0x5c, 0x5e, + 0x34, 0x7c, 0xee, 0xbc, 0x31, 0x74, 0x00, 0xfb, 0x87, 0x5a, 0xd1, 0x2a, 0x01, 0xcc, 0x70, 0x16, + 0xee, 0x54, 0xf7, 0x4e, 0xae, 0xbd, 0xca, 0x77, 0x9e, 0xb3, 0x1a, 0x21, 0xeb, 0x52, 0x7a, 0xbc, + 0xc3, 0x92, 0xfd, 0x1d, 0x9e, 0xe1, 0x3c, 0x20, 0xb3, 0x33, 0xaf, 0x5d, 0x79, 0x19, 0x4d, 0x73, + 0x1d, 0xd7, 0x0d, 0x29, 0x58, 0xf6, 0x09, 0xba, 0xd2, 0x2e, 0xa0, 0x3d, 0x82, 0x84, 0x9f, 0x56, + 0x79, 0x9b, 0x40, 0x38, 0x10, 0x9c, 0x3e, 0x84, 0x45, 0xf9, 0x85, 0x9f, 0xc3, 0x3b, 0xc0, 0xa4, + 0xa9, 0x29, 0x79, 0xf8, 0xb8, 0x71, 0x7e, 0x27, 0x2c, 0xda, 0x81, 0x3a, 0x4c, 0x42, 0x8e, 0x46, + 0x1f, 0x04, 0xb6, 0xdd, 0x68, 0x3b, 0x08, 0x48, 0xe6, 0xda, 0x60, 0x4b, 0xf2, 0xc0, 0xb7, 0x46, + 0x57, 0x4b, 0x22, 0xbe, 0xcf, 0xdf, 0x10, 0x4c, 0xf4, 0x13, 0x72, 0x31, 0x79, 0x7c, 0xb7, 0xb1, + 0x7b, 0xd7, 0xf0, 0xe5, 0xae, 0xd4, 0xc0, 0xb7, 0xd7, 0x06, 0x5b, 0x0b, 0xff, 0xc3, 0x04, 0x94, + 0x83, 0x11, 0xe6, 0x2f, 0x08, 0x7b, 0x2f, 0x70, 0x59, 0xd7, 0x31, 0x7b, 0x9f, 0x6f, 0x43, 0xb2, + 0xc0, 0xbb, 0xff, 0x0a, 0xe5, 0x42, 0x2e, 0x14, 0xf2, 0x7e, 0x03, 0x8d, 0x0f, 0x45, 0xf2, 0xe3, + 0x7c, 0x50, 0x44, 0xb0, 0x36, 0x63, 0x6f, 0xf8, 0x86, 0xcd, 0xd1, 0x70, 0x43, 0x74, 0xb1, 0xbf, + 0x21, 0xa8, 0x92, 0xe6, 0xe2, 0x33, 0x28, 0xa7, 0x2e, 0x18, 0xda, 0x6c, 0x73, 0xf5, 0x34, 0x0b, + 0xe4, 0x02, 0x88, 0x7f, 0x03, 0xcd, 0x08, 0x6b, 0xdd, 0xda, 0x94, 0xda, 0x7f, 0x56, 0xc5, 0xf5, + 0x62, 0x3d, 0xca, 0x6d, 0x80, 0x1b, 0x06, 0x82, 0x19, 0x9f, 0xd7, 0x01, 0x2e, 0xe2, 0xef, 0x16, + 0x7e, 0x56, 0x48, 0x27, 0xf9, 0xe7, 0x64, 0x5d, 0xd4, 0xc4, 0x84, 0x5d, 0xaf, 0xcd, 0xda, 0xd6, + 0xab, 0x4d, 0xdb, 0xf0, 0xb1, 0x19, 0x7d, 0x97, 0x54, 0xd2, 0x5e, 0x7c, 0x06, 0x8d, 0x8b, 0x68, + 0xb1, 0xc8, 0x56, 0x3e, 0xc5, 0x3b, 0x94, 0xc8, 0x33, 0x87, 0xfb, 0x4e, 0xc1, 0x68, 0x24, 0xfa, + 0xf4, 0x97, 0x27, 0x92, 0x07, 0xce, 0xab, 0x50, 0x2b, 0x2e, 0xa2, 0xaf, 0x72, 0x2e, 0x17, 0x73, + 0x13, 0x5e, 0xe5, 0x7c, 0xaf, 0xf7, 0x78, 0x21, 0xbc, 0xc7, 0x60, 0x2b, 0x39, 0x4b, 0x57, 0xa6, + 0xc3, 0x7b, 0x9c, 0xef, 0x7e, 0x89, 0x97, 0x3b, 0x5f, 0x62, 0xc8, 0xb8, 0x8e, 0xa5, 0x61, 0x8e, + 0x97, 0x38, 0x3f, 0xd3, 0x1b, 0xac, 0x5b, 0x31, 0x9f, 0xc1, 0x1c, 0xef, 0x03, 0x93, 0x63, 0xa0, + 0x24, 0xd1, 0x42, 0x58, 0x1a, 0x90, 0x44, 0x58, 0x38, 0x78, 0xd4, 0x38, 0xb3, 0x97, 0x31, 0x0b, + 0xab, 0xd7, 0xac, 0xad, 0x59, 0xab, 0xa8, 0x6b, 0x2b, 0x2b, 0xae, 0x97, 0x95, 0x45, 0x96, 0xa9, + 0xc8, 0x2a, 0xb8, 0x25, 0x62, 0xe9, 0x4d, 0x8b, 0x58, 0x42, 0x96, 0x6f, 0x37, 0x23, 0x96, 0x9e, + 0x84, 0x59, 0x39, 0x88, 0x25, 0xfe, 0x49, 0x05, 0x32, 0x89, 0xe8, 0xd1, 0x31, 0xe1, 0x64, 0x51, + 0x4a, 0x55, 0xb6, 0x17, 0x09, 0xde, 0xd3, 0x22, 0x5d, 0xf9, 0xb9, 0xed, 0x45, 0x22, 0x88, 0x71, + 0x94, 0x77, 0xe9, 0x57, 0x08, 0x99, 0x68, 0x72, 0x95, 0x16, 0x7b, 0x27, 0x4c, 0x93, 0x60, 0x62, + 0x5b, 0x5c, 0xae, 0x58, 0x7e, 0xc8, 0xfc, 0x9b, 0xa1, 0xac, 0xc4, 0xc0, 0xa7, 0xa9, 0xe3, 0xdb, + 0x8c, 0xdd, 0x43, 0x26, 0x94, 0x70, 0xcd, 0xc4, 0x0a, 0x0e, 0x57, 0xc3, 0x13, 0x8b, 0x63, 0x8e, + 0x58, 0xb8, 0xda, 0x31, 0x8e, 0x37, 0xb2, 0x5e, 0x8e, 0xf2, 0xa3, 0x9b, 0x83, 0x0d, 0x6b, 0x68, + 0xc4, 0x8b, 0xc9, 0xf8, 0xb9, 0xc3, 0x8f, 0xbd, 0xad, 0x42, 0x9e, 0xc2, 0x22, 0x5d, 0x90, 0x00, + 0x16, 0xb6, 0xea, 0x39, 0xcf, 0xa1, 0x89, 0x37, 0x8b, 0xea, 0xf6, 0x08, 0xba, 0xb2, 0x4b, 0x40, + 0x3b, 0x04, 0x09, 0x63, 0x17, 0xf9, 0x8f, 0x3c, 0x95, 0x65, 0x5e, 0xb6, 0x3d, 0x67, 0x13, 0x43, + 0x3d, 0x14, 0x55, 0x91, 0x67, 0x15, 0xae, 0x22, 0xcb, 0x1d, 0x00, 0xb6, 0x18, 0x66, 0xe3, 0xc1, + 0xed, 0xc9, 0xde, 0x53, 0xd0, 0x85, 0x61, 0x12, 0xb0, 0x66, 0x1b, 0xd9, 0xdd, 0x9e, 0x3c, 0x78, + 0x9e, 0x19, 0x4e, 0x99, 0xe4, 0x32, 0x17, 0x7c, 0x2b, 0xd5, 0xdb, 0x7a, 0xb5, 0x69, 0x7b, 0xe1, + 0x89, 0x6c, 0x34, 0x7e, 0xed, 0x66, 0xad, 0x3c, 0x18, 0x88, 0x88, 0x4f, 0xa1, 0xec, 0xf5, 0xd5, + 0xe5, 0x04, 0xcb, 0xe1, 0x2d, 0x31, 0x7f, 0xcb, 0x05, 0xa9, 0xa1, 0x7d, 0xc9, 0x73, 0xdf, 0x31, + 0xa5, 0xe6, 0xfa, 0xea, 0x72, 0x22, 0x9f, 0x31, 0xab, 0x4d, 0xe4, 0x58, 0x5e, 0x55, 0xa1, 0x12, + 0x6c, 0x07, 0xc8, 0xd1, 0x2c, 0x90, 0xf3, 0x21, 0x39, 0x09, 0xf4, 0x56, 0x71, 0x99, 0x58, 0x89, + 0xf2, 0xaa, 0xaa, 0x57, 0x37, 0xd6, 0x6f, 0xd0, 0x22, 0x24, 0x53, 0x1b, 0x86, 0x2c, 0x56, 0x28, + 0xcf, 0x81, 0xe6, 0x46, 0x5b, 0xb3, 0xd1, 0xf5, 0x85, 0xd1, 0xd9, 0x97, 0xda, 0x7f, 0xb6, 0xaa, + 0xda, 0xe8, 0x39, 0x6f, 0x1c, 0x6d, 0x52, 0x59, 0x2b, 0xf1, 0x19, 0x76, 0x27, 0x73, 0xac, 0xf8, + 0xe7, 0xf4, 0x4e, 0x8a, 0x64, 0x08, 0x0c, 0xdc, 0x94, 0xbd, 0x22, 0x17, 0xa7, 0x14, 0x8d, 0x27, + 0x88, 0x90, 0xf0, 0x01, 0x20, 0x1d, 0x27, 0x65, 0x56, 0x57, 0xdd, 0x22, 0x13, 0x69, 0xa5, 0x23, + 0x2a, 0x53, 0xee, 0x28, 0x51, 0x99, 0xc6, 0x3b, 0xa3, 0x32, 0x95, 0x3e, 0xa3, 0x2b, 0x4f, 0x21, + 0x59, 0xa2, 0xdb, 0x2d, 0x3f, 0x01, 0x27, 0x0b, 0x4f, 0xda, 0xda, 0x57, 0x2b, 0xc9, 0x83, 0x07, + 0x33, 0x68, 0xd1, 0x8d, 0x96, 0x5d, 0xb0, 0xcd, 0x85, 0x07, 0x04, 0x94, 0x4f, 0x3a, 0x41, 0x36, + 0xa8, 0x19, 0x68, 0x1c, 0xd6, 0x33, 0x83, 0x52, 0x40, 0x85, 0x1f, 0x26, 0x0c, 0x9a, 0xc7, 0x07, + 0xf0, 0x86, 0x8f, 0x66, 0x8e, 0x73, 0xb7, 0xb9, 0x2d, 0x9c, 0x65, 0xdf, 0x42, 0xba, 0x43, 0xa5, + 0xe6, 0x79, 0xa0, 0xc7, 0x24, 0xdb, 0x07, 0xe5, 0x19, 0x6b, 0x5f, 0xad, 0xf4, 0x99, 0x07, 0x08, + 0x93, 0x25, 0xf3, 0xda, 0xb9, 0x08, 0xf3, 0xf4, 0x16, 0xe3, 0xa9, 0x6a, 0x7f, 0x10, 0xf7, 0x09, + 0x3c, 0x35, 0x2e, 0x58, 0x46, 0xed, 0x1c, 0x35, 0x5e, 0xcb, 0xa5, 0x04, 0x02, 0x88, 0x2d, 0x2b, + 0xaf, 0x29, 0x79, 0xf5, 0xd9, 0x9a, 0x92, 0x25, 0xf8, 0xbf, 0x85, 0xc6, 0xae, 0x23, 0x46, 0x33, + 0x89, 0x0c, 0x97, 0x3c, 0x74, 0x81, 0x1a, 0x7c, 0xef, 0x36, 0xce, 0x75, 0xb3, 0x51, 0x20, 0x24, + 0xb6, 0x25, 0xad, 0xe8, 0x69, 0x32, 0x2e, 0x7d, 0x63, 0x74, 0x9e, 0x07, 0xe9, 0x7c, 0x11, 0x4f, + 0xde, 0xff, 0x0a, 0x4d, 0x24, 0x3f, 0xb8, 0x94, 0x8e, 0x0b, 0x4d, 0x0e, 0x90, 0x2f, 0x97, 0xf3, + 0x61, 0x5a, 0x34, 0xe6, 0xc2, 0xf8, 0xc8, 0xb8, 0xa9, 0x42, 0x41, 0x53, 0x9e, 0xca, 0x37, 0x12, + 0xa3, 0x5c, 0xa2, 0x9e, 0x6c, 0x9a, 0x43, 0x75, 0x15, 0x97, 0xa6, 0x47, 0x21, 0x91, 0x41, 0xb0, + 0x1c, 0x79, 0xb8, 0xa9, 0xd9, 0x5c, 0x63, 0x7c, 0x1f, 0x97, 0xa8, 0x1d, 0x4c, 0x3a, 0xe0, 0x72, + 0x24, 0xe2, 0xfb, 0x86, 0xcf, 0x7d, 0x9f, 0x3c, 0x38, 0x04, 0x1b, 0x0b, 0xc4, 0x33, 0x0e, 0xf7, + 0x50, 0xe0, 0xe3, 0xf2, 0xe7, 0xbc, 0x86, 0x72, 0x23, 0xda, 0xa6, 0x60, 0x38, 0x44, 0xe0, 0xfd, + 0x39, 0x0c, 0xef, 0x50, 0x24, 0x8b, 0x56, 0x28, 0x92, 0x9e, 0xb3, 0xe6, 0x55, 0x39, 0x76, 0x0c, + 0x6c, 0xca, 0x84, 0x82, 0x80, 0xdb, 0x1b, 0x8f, 0xf4, 0x12, 0x55, 0x34, 0x6e, 0x4b, 0x43, 0x6d, + 0x55, 0x05, 0xb9, 0x07, 0x2f, 0x98, 0xaf, 0x1a, 0x94, 0xc8, 0x45, 0x04, 0x12, 0xcf, 0x6c, 0x4b, + 0xf6, 0xb4, 0xa6, 0x86, 0xf6, 0xa5, 0x06, 0x7a, 0x82, 0x01, 0x58, 0x46, 0xa2, 0x7f, 0x0f, 0xd9, + 0x24, 0xac, 0x1d, 0xa3, 0x33, 0x85, 0x8e, 0xf6, 0x04, 0x53, 0xb9, 0x34, 0xc1, 0x94, 0xb7, 0xf2, + 0xef, 0x7a, 0xd9, 0xcc, 0xc8, 0x74, 0xaf, 0x09, 0x72, 0x4c, 0xd5, 0x3a, 0x9b, 0x04, 0x79, 0x3c, + 0xcd, 0x19, 0x3b, 0xc7, 0x26, 0x41, 0xce, 0x07, 0xd9, 0x31, 0x08, 0x8e, 0xd3, 0x8e, 0xca, 0x8b, + 0x92, 0xa3, 0x68, 0xa2, 0x16, 0xda, 0x12, 0x8c, 0x84, 0x43, 0xf5, 0x5a, 0x88, 0x3a, 0x37, 0xbc, + 0xa6, 0x2b, 0x4f, 0x4b, 0x7c, 0xb9, 0xfc, 0x04, 0xd9, 0x06, 0x2c, 0x75, 0x2b, 0xf6, 0x01, 0xa0, + 0xbe, 0xd9, 0x10, 0x09, 0x07, 0x8a, 0x7d, 0x01, 0x6d, 0x43, 0xe3, 0xa6, 0x62, 0x5f, 0x34, 0xe6, + 0xdf, 0xf4, 0x16, 0xfe, 0xa6, 0x9a, 0x63, 0xfe, 0xad, 0x8e, 0xc3, 0x15, 0x6a, 0x8e, 0xd9, 0x4a, + 0xe5, 0x47, 0x13, 0xdf, 0x40, 0x48, 0x0b, 0x6d, 0x0a, 0x86, 0x20, 0x39, 0xe8, 0x04, 0xaa, 0x28, + 0xfa, 0xb9, 0xc4, 0x15, 0xcb, 0x05, 0xc6, 0xe0, 0x81, 0xe4, 0x87, 0x1d, 0x4c, 0xb8, 0x03, 0x84, + 0xc4, 0xe6, 0x67, 0xa3, 0xd7, 0xcb, 0x26, 0x47, 0xf2, 0xd5, 0xec, 0xcd, 0xcf, 0x46, 0xd5, 0x71, + 0x58, 0x02, 0xaf, 0x72, 0xdd, 0xc4, 0x35, 0x68, 0x62, 0x30, 0x5a, 0xf9, 0xbe, 0x09, 0xa6, 0xc1, + 0x2d, 0x40, 0x12, 0xe4, 0x81, 0xe4, 0x95, 0x2f, 0x97, 0xe7, 0x5a, 0xc2, 0x4d, 0xbc, 0x5d, 0xa9, + 0xbd, 0x5f, 0x1a, 0xed, 0xc7, 0x09, 0x9a, 0xe3, 0x5b, 0x8a, 0x7f, 0x25, 0xb0, 0x1b, 0x83, 0xa7, + 0x0b, 0x44, 0xc0, 0x27, 0x82, 0xae, 0x34, 0x0b, 0x12, 0x5f, 0x23, 0x6f, 0xe1, 0x15, 0x05, 0x6c, + 0x93, 0x36, 0x6a, 0x01, 0x0d, 0x32, 0xec, 0x16, 0xfb, 0xa2, 0xc1, 0xd0, 0xa6, 0x3a, 0xed, 0xad, + 0x62, 0x9f, 0x55, 0x48, 0x6d, 0xd7, 0xe3, 0xc3, 0xdb, 0xf6, 0x8f, 0x6c, 0x3f, 0x0d, 0x43, 0x5c, + 0x1b, 0x6c, 0x83, 0xa6, 0x50, 0x9b, 0xda, 0xfb, 0x65, 0xea, 0x8b, 0xbd, 0xac, 0x8a, 0x91, 0x54, + 0xd0, 0xe6, 0x7a, 0xd9, 0xac, 0xc8, 0x0c, 0x15, 0x59, 0x43, 0xaa, 0xb9, 0x50, 0xa1, 0xf2, 0xb3, + 0x13, 0x0f, 0x09, 0x68, 0xba, 0xd5, 0xa6, 0x9c, 0xa1, 0x25, 0xa0, 0x44, 0x70, 0xae, 0x1a, 0xaf, + 0x7a, 0xf9, 0x55, 0xe2, 0xf5, 0x40, 0x13, 0x4b, 0x39, 0xa6, 0x8a, 0xc9, 0x8b, 0x26, 0xb0, 0x4f, + 0x85, 0x17, 0x7a, 0xb8, 0xef, 0x54, 0x55, 0x05, 0x30, 0x64, 0xd0, 0xf0, 0x95, 0x70, 0x34, 0x46, + 0x5e, 0x49, 0xaf, 0x2f, 0x88, 0x9f, 0x08, 0xcc, 0xb3, 0x69, 0x12, 0xa6, 0xd0, 0x8b, 0xbd, 0x5d, + 0xf4, 0x2d, 0xcc, 0x6a, 0x73, 0x68, 0xfa, 0xad, 0xae, 0xbc, 0xc6, 0x1c, 0x9a, 0x56, 0xb0, 0x59, + 0x41, 0x81, 0xc5, 0x8b, 0x77, 0xc5, 0x8d, 0xfe, 0xd3, 0x60, 0x68, 0xcb, 0x1b, 0xd7, 0x42, 0xe0, + 0xb4, 0x44, 0x7f, 0xbb, 0xf1, 0xfd, 0x21, 0x50, 0x09, 0xca, 0x4b, 0x12, 0xfd, 0x9f, 0x5f, 0x2f, + 0x1b, 0xd7, 0x2d, 0x64, 0x4d, 0x9d, 0xc1, 0x5c, 0xa0, 0x4a, 0x2d, 0xa1, 0xc6, 0x64, 0xfa, 0x5a, + 0xce, 0xb0, 0x84, 0x1a, 0x13, 0x98, 0x38, 0xe3, 0x7a, 0x59, 0x6e, 0x24, 0x67, 0x6a, 0x56, 0xc1, + 0x0c, 0x4b, 0xae, 0xb1, 0x4d, 0x40, 0x93, 0xc3, 0xa1, 0xba, 0xad, 0xb0, 0x0c, 0x9c, 0xf5, 0x1b, + 0x52, 0x6f, 0xff, 0x46, 0x57, 0xd6, 0x4b, 0x8e, 0x2a, 0xb9, 0x22, 0x31, 0xd0, 0x0c, 0xa3, 0x91, + 0x0d, 0xb7, 0x88, 0xd6, 0x76, 0x90, 0xc0, 0xa6, 0x7a, 0x8e, 0x19, 0xe7, 0xc8, 0x9b, 0x0c, 0x2d, + 0xdd, 0x52, 0x79, 0xc7, 0xa8, 0xe2, 0x35, 0x01, 0x4d, 0xd8, 0x50, 0x1b, 0x25, 0xa6, 0xcb, 0x20, + 0x6b, 0x58, 0x3c, 0xea, 0x3e, 0x97, 0xd1, 0x1e, 0xb0, 0xd5, 0xc7, 0x04, 0x5d, 0xf9, 0x48, 0x90, + 0xac, 0x81, 0xe4, 0x76, 0x81, 0x9f, 0xea, 0x5d, 0x88, 0x71, 0xca, 0x1b, 0x24, 0x10, 0x7d, 0x3f, + 0xbc, 0x88, 0x58, 0xfc, 0xa9, 0x5a, 0x53, 0x13, 0x93, 0x02, 0x9a, 0xa8, 0x71, 0xe6, 0xda, 0xa2, + 0x77, 0x2a, 0x6c, 0xd7, 0x9a, 0x39, 0x73, 0x67, 0x58, 0x75, 0x97, 0xa0, 0x2b, 0x6d, 0x82, 0xc4, + 0x0f, 0x26, 0xff, 0xc9, 0xb1, 0xec, 0x3b, 0x63, 0xc1, 0xcd, 0x16, 0x3b, 0xb2, 0xff, 0x88, 0x6d, + 0x99, 0xfc, 0x5c, 0xc4, 0x72, 0x93, 0x90, 0x0b, 0x37, 0x06, 0xaa, 0x2a, 0x48, 0xca, 0x3d, 0x4c, + 0x47, 0xd2, 0x32, 0x79, 0xae, 0x33, 0xcc, 0x5a, 0xa2, 0x7f, 0x0f, 0x28, 0x6e, 0xab, 0x2a, 0x54, + 0xda, 0x4a, 0xfc, 0x5e, 0x40, 0x08, 0xb6, 0x04, 0x63, 0x39, 0x90, 0xb4, 0x1c, 0x15, 0x74, 0xe5, + 0x88, 0x20, 0x71, 0x15, 0xf2, 0x1e, 0x9b, 0x30, 0xc2, 0x52, 0x2b, 0x36, 0x7f, 0x99, 0xec, 0x69, + 0x35, 0x1f, 0xf7, 0x43, 0x17, 0xc0, 0xbb, 0xe0, 0xda, 0x60, 0xdb, 0x2a, 0x65, 0xb5, 0xb2, 0xa2, + 0xb2, 0xe2, 0xed, 0xf2, 0x95, 0xeb, 0x6a, 0xd6, 0x56, 0xaa, 0x0b, 0xe1, 0xac, 0x93, 0xad, 0x87, + 0x53, 0xe7, 0x4e, 0xc0, 0x28, 0x45, 0x0c, 0x70, 0x93, 0x87, 0xfb, 0x7c, 0x55, 0xab, 0x2b, 0x2a, + 0xab, 0x2b, 0x57, 0x57, 0x54, 0xae, 0x5e, 0xcb, 0xfa, 0x38, 0x70, 0xdf, 0xf0, 0xee, 0xcf, 0xcd, + 0x0b, 0x30, 0xf0, 0x6d, 0x72, 0xcf, 0xc9, 0x22, 0x95, 0x9b, 0x98, 0x58, 0x8a, 0x72, 0xeb, 0xfd, + 0x98, 0x9a, 0x9d, 0x89, 0xc5, 0x4e, 0x98, 0x68, 0x27, 0x45, 0xf2, 0x4c, 0x18, 0x00, 0x7e, 0xf9, + 0x98, 0xa8, 0x89, 0x54, 0x8b, 0xbf, 0x44, 0xe3, 0x42, 0xe1, 0x80, 0x16, 0x2d, 0x98, 0x85, 0xbb, + 0x62, 0x12, 0x1a, 0x4a, 0xe4, 0xe9, 0xd0, 0xd3, 0xfc, 0x61, 0xf5, 0x83, 0x3a, 0xf1, 0xb0, 0x80, + 0xa6, 0x84, 0xb4, 0xd8, 0x7b, 0xe1, 0xc8, 0xe6, 0x1a, 0x2d, 0x16, 0x0b, 0x86, 0x36, 0x51, 0xab, + 0xdf, 0x05, 0x2e, 0xe3, 0x0f, 0x5b, 0xb3, 0xb2, 0xd5, 0xba, 0x52, 0x2e, 0x39, 0xfb, 0xca, 0x4b, + 0x18, 0xd9, 0x9b, 0x1a, 0xe8, 0x31, 0x8e, 0xc5, 0x53, 0x27, 0x9a, 0x40, 0xc0, 0xc8, 0x7c, 0xd5, + 0xc0, 0x4a, 0x3f, 0x79, 0xf0, 0x12, 0x94, 0x5f, 0x2f, 0x1b, 0xf7, 0x89, 0x90, 0x95, 0x27, 0xa8, + 0xce, 0xa1, 0xc4, 0xbf, 0x16, 0xd0, 0x0c, 0x32, 0x85, 0x32, 0x7f, 0x34, 0x58, 0xcb, 0xe6, 0x07, + 0xb1, 0x4c, 0x1f, 0x75, 0x3b, 0x36, 0xb9, 0xda, 0x9a, 0xdc, 0x7d, 0x58, 0xf2, 0x1c, 0x45, 0xfe, + 0x35, 0x41, 0x3e, 0x78, 0x8e, 0xe4, 0xc2, 0xd2, 0x99, 0xc2, 0xbb, 0x47, 0xf4, 0x72, 0xd8, 0x36, + 0x9e, 0xcf, 0x76, 0xb9, 0xa5, 0xa1, 0x36, 0xd5, 0xdb, 0x6a, 0x9e, 0x24, 0x5d, 0x0a, 0x59, 0x99, + 0x7d, 0x41, 0x9e, 0x9f, 0x15, 0xff, 0x4e, 0x40, 0xb3, 0x48, 0x85, 0x12, 0xd8, 0xe2, 0x0f, 0xd5, + 0x6a, 0x6c, 0x5d, 0x10, 0x2c, 0xf5, 0xf1, 0x34, 0xeb, 0xb2, 0xb7, 0x2e, 0xdb, 0x2e, 0xe8, 0xca, + 0x5f, 0x4a, 0xb3, 0xcd, 0xb6, 0x9a, 0x7b, 0x2c, 0x39, 0x40, 0x8d, 0xfc, 0x3f, 0x1a, 0x39, 0x7c, + 0x81, 0x8f, 0x42, 0xc8, 0x56, 0x67, 0x74, 0x99, 0xdc, 0x58, 0xb0, 0x61, 0x4b, 0x14, 0xaa, 0xcd, + 0x15, 0xda, 0x43, 0xb7, 0x41, 0x07, 0xe0, 0x2c, 0x3d, 0xcf, 0x4e, 0x4d, 0xb3, 0x12, 0xf1, 0x6f, + 0x04, 0x94, 0x6f, 0xc2, 0x17, 0x5b, 0xda, 0x1c, 0x6f, 0x2f, 0x87, 0xd5, 0x56, 0x9b, 0x32, 0x5d, + 0xd0, 0x95, 0x0e, 0x41, 0xb2, 0xf5, 0x93, 0xff, 0xcc, 0x47, 0x55, 0x74, 0x2c, 0x80, 0xb8, 0xa6, + 0x52, 0xef, 0x58, 0xe2, 0x41, 0xcb, 0xb9, 0xcc, 0xc2, 0x21, 0x99, 0x2d, 0x0f, 0x1d, 0x4f, 0xb5, + 0x5e, 0x32, 0x5a, 0xbe, 0x18, 0xe9, 0x69, 0x22, 0x36, 0x61, 0x58, 0x37, 0x68, 0xbe, 0x46, 0x74, + 0xcc, 0xb2, 0xf2, 0x1a, 0xa0, 0xf1, 0x89, 0xb3, 0x09, 0x16, 0x91, 0xa9, 0xb6, 0xd9, 0x88, 0xdb, + 0x05, 0x34, 0x05, 0x64, 0x74, 0xaa, 0x16, 0x0c, 0x45, 0x63, 0xfe, 0xba, 0x3a, 0x1c, 0xd6, 0x35, + 0xaf, 0xec, 0x75, 0x5d, 0x59, 0x27, 0x39, 0xeb, 0xe4, 0x32, 0xa0, 0xd0, 0x46, 0x76, 0xb7, 0x0f, + 0x7f, 0xda, 0x0c, 0xf7, 0xd4, 0xca, 0xbc, 0x4b, 0xa5, 0x85, 0xc0, 0xdd, 0x0f, 0x7f, 0xf2, 0x05, + 0x20, 0x95, 0xe4, 0x8e, 0x66, 0x63, 0xd7, 0x77, 0x89, 0xfe, 0xbd, 0xc9, 0x9e, 0xd6, 0xe4, 0x81, + 0x16, 0xd5, 0x39, 0xa8, 0x78, 0x44, 0x40, 0xd3, 0x82, 0xa1, 0x60, 0x6c, 0x65, 0x78, 0x53, 0x30, + 0x54, 0xed, 0x8f, 0x46, 0xdf, 0x0b, 0x47, 0x02, 0x38, 0x17, 0xde, 0x84, 0xb2, 0xcd, 0xba, 0xf2, + 0x8e, 0xe4, 0xae, 0x95, 0x6b, 0x32, 0x4c, 0x01, 0xd2, 0x3d, 0x32, 0xb9, 0x42, 0x03, 0xe9, 0x33, + 0xfa, 0xcc, 0xdc, 0xdf, 0x11, 0x5f, 0x47, 0x13, 0xc9, 0x2d, 0xc6, 0x18, 0x78, 0x3e, 0x9e, 0x14, + 0xb6, 0x70, 0xe1, 0xcb, 0xe5, 0xc7, 0x78, 0x24, 0x41, 0x72, 0xe7, 0x37, 0x86, 0x02, 0x5a, 0xa4, + 0xce, 0xbf, 0x75, 0x71, 0x78, 0x0b, 0xfe, 0xb7, 0x48, 0xe5, 0xbb, 0x88, 0xdf, 0x09, 0x68, 0xb6, + 0xbf, 0x31, 0x16, 0x5e, 0xa1, 0x85, 0x4c, 0xe2, 0x4b, 0x5b, 0x85, 0x97, 0x82, 0xb5, 0x9f, 0x24, + 0x0c, 0xec, 0x1f, 0x75, 0xe5, 0x7d, 0x29, 0x5d, 0x1b, 0xf9, 0x2d, 0xdb, 0x63, 0xc7, 0x99, 0x09, + 0x19, 0x17, 0xbf, 0x36, 0x7a, 0x0f, 0x1b, 0x3d, 0x67, 0x61, 0x5b, 0xa8, 0x9b, 0x33, 0xa6, 0x40, + 0x9e, 0xf7, 0x25, 0xfa, 0xe3, 0xb1, 0x48, 0xa3, 0x96, 0x3c, 0x74, 0xa1, 0xd8, 0x07, 0x57, 0x00, + 0xf8, 0x51, 0x82, 0x85, 0xf1, 0x99, 0x84, 0x6a, 0x35, 0x35, 0xdd, 0x77, 0xc5, 0xff, 0x22, 0xa0, + 0x09, 0xb4, 0x55, 0xb4, 0xe0, 0x61, 0x6f, 0xfd, 0x48, 0x15, 0x69, 0x40, 0x8d, 0xe3, 0xca, 0xb1, + 0x5b, 0x2b, 0x4d, 0x95, 0x6e, 0xf5, 0x97, 0x0f, 0x39, 0x49, 0x15, 0x5f, 0x9a, 0xef, 0xd2, 0x89, + 0x17, 0xfb, 0xe0, 0x90, 0x79, 0x4b, 0x37, 0x1e, 0x0a, 0xe8, 0xaa, 0x80, 0x19, 0x67, 0x1f, 0x82, + 0x86, 0xa9, 0xee, 0x9d, 0xb6, 0xa4, 0x5f, 0x90, 0x1c, 0x0a, 0xb2, 0xc1, 0x82, 0x2c, 0xc7, 0x68, + 0x8b, 0x83, 0x7f, 0xbc, 0x6a, 0x4d, 0x52, 0xfc, 0x56, 0x20, 0xfe, 0x94, 0x98, 0x4a, 0xf4, 0x8d, + 0x91, 0x4c, 0xab, 0xa4, 0x3d, 0x80, 0x60, 0xc1, 0xc4, 0xbc, 0x35, 0x8c, 0xbc, 0x0e, 0x12, 0xa3, + 0x5b, 0xa9, 0xf7, 0xbf, 0x3a, 0x40, 0xbd, 0x9b, 0x00, 0x1b, 0x68, 0xd1, 0x0d, 0x6f, 0x37, 0x46, + 0xea, 0x16, 0x93, 0x14, 0x52, 0x6f, 0x07, 0xeb, 0xfd, 0x9b, 0xb4, 0xc5, 0x0d, 0x91, 0xe0, 0x96, + 0x60, 0x9d, 0x16, 0xd8, 0xa4, 0x41, 0x41, 0xaa, 0xb7, 0x95, 0xef, 0xac, 0x5a, 0x5f, 0x10, 0x5f, + 0x47, 0x79, 0xf5, 0x34, 0x3a, 0xea, 0x23, 0x56, 0x18, 0x56, 0x56, 0x28, 0x97, 0x90, 0x8f, 0x13, + 0x97, 0xa6, 0x85, 0xe5, 0x0a, 0x78, 0x25, 0x32, 0x17, 0x38, 0xe2, 0xa1, 0x89, 0xdd, 0x91, 0x8a, + 0x54, 0xd6, 0x51, 0xdc, 0x82, 0x26, 0xe3, 0xcf, 0x58, 0x0c, 0x4b, 0xa1, 0x15, 0x0b, 0xda, 0x51, + 0x25, 0x3f, 0x67, 0xf4, 0x0d, 0x1a, 0xcd, 0xa7, 0x18, 0x0f, 0x00, 0x54, 0x19, 0x95, 0xb0, 0x24, + 0x8f, 0xef, 0x1e, 0xee, 0x23, 0x02, 0x9b, 0x62, 0x42, 0x75, 0x1c, 0xba, 0x90, 0xfa, 0x2c, 0x6e, + 0x34, 0x0d, 0xaa, 0x8e, 0xa1, 0x44, 0x3f, 0x9a, 0x12, 0x8c, 0x82, 0x1e, 0x87, 0x14, 0xe2, 0xc4, + 0x73, 0x79, 0x60, 0x8e, 0xe7, 0xac, 0x93, 0x1f, 0x61, 0xfc, 0x24, 0x28, 0xe1, 0xe0, 0x9b, 0xc5, + 0xbc, 0xd1, 0x99, 0xb3, 0x8f, 0xd3, 0x30, 0xee, 0xb1, 0xb4, 0x86, 0x71, 0x84, 0xe0, 0x4a, 0x67, + 0x18, 0x77, 0x4a, 0x40, 0x53, 0x08, 0x84, 0x94, 0xfb, 0x63, 0xda, 0xa6, 0x70, 0x64, 0x2b, 0xce, + 0x0d, 0x37, 0x01, 0xae, 0xb5, 0xb3, 0x4e, 0xd6, 0x2c, 0x3e, 0xb5, 0xe5, 0x0b, 0x87, 0x30, 0xdc, + 0x04, 0xca, 0x96, 0x5d, 0x8c, 0xd9, 0x83, 0x55, 0x25, 0x0f, 0xe3, 0xc4, 0xc3, 0x03, 0xf1, 0xab, + 0x4d, 0xdb, 0x60, 0x87, 0x17, 0x6e, 0x68, 0x0c, 0xd6, 0x05, 0xb4, 0xc8, 0xe2, 0x60, 0x7d, 0x43, + 0x38, 0x12, 0xd3, 0x22, 0x45, 0x5c, 0x38, 0x58, 0x68, 0xab, 0x3a, 0xbf, 0x2b, 0xae, 0x46, 0x13, + 0x82, 0xd1, 0xb7, 0xa3, 0xef, 0xf8, 0x23, 0x5a, 0x00, 0xe7, 0x7d, 0xcb, 0x23, 0xae, 0x23, 0xac, + 0xd4, 0xb6, 0x8d, 0x5f, 0x25, 0xe2, 0x5f, 0x78, 0x6c, 0x63, 0x5e, 0x30, 0x5a, 0x83, 0x1b, 0x8b, + 0xff, 0x51, 0x40, 0x93, 0x6b, 0x39, 0x57, 0x93, 0xaa, 0x8a, 0x82, 0x27, 0xf0, 0xb2, 0x49, 0x46, + 0x06, 0x47, 0xa5, 0xfc, 0x39, 0x21, 0x5d, 0x19, 0x2d, 0x92, 0x88, 0xef, 0x03, 0xef, 0xa3, 0xaa, + 0x8a, 0x62, 0xc6, 0x3e, 0xa5, 0x3e, 0x8b, 0x5f, 0x6d, 0xda, 0x0e, 0x7b, 0x62, 0xec, 0x39, 0x36, + 0xbc, 0x63, 0xc8, 0x5c, 0x52, 0xc7, 0x45, 0xa3, 0xf3, 0x20, 0x6b, 0x6f, 0xec, 0xee, 0x1d, 0xee, + 0xdb, 0x76, 0xb5, 0x69, 0x3b, 0xc8, 0x85, 0x12, 0xf1, 0x7d, 0xe0, 0x19, 0x9d, 0xe8, 0xdf, 0x9b, + 0x1a, 0x38, 0x96, 0xe8, 0x6f, 0x02, 0xea, 0x98, 0xf3, 0x7e, 0x32, 0x09, 0x9e, 0x26, 0x8b, 0x4a, + 0x86, 0xe6, 0xa9, 0xf8, 0x37, 0xa9, 0x73, 0x27, 0x00, 0x27, 0x38, 0xc6, 0x56, 0x1d, 0x93, 0x17, + 0x37, 0xb9, 0x8c, 0xc2, 0x17, 0xe2, 0xb5, 0xbe, 0xac, 0x2b, 0x2f, 0xb8, 0x8c, 0xc2, 0x25, 0x1b, + 0xff, 0xe8, 0xf0, 0xbe, 0xe5, 0xbc, 0x65, 0x92, 0x47, 0x2f, 0x3b, 0x0d, 0xc6, 0x6f, 0xc5, 0xaf, + 0xec, 0x37, 0x68, 0xb2, 0x9d, 0x61, 0xf4, 0xe8, 0xbd, 0xd4, 0xae, 0x4d, 0x75, 0x51, 0x35, 0x65, + 0xaf, 0xae, 0x69, 0x88, 0x56, 0xd7, 0x35, 0x6e, 0x0a, 0x86, 0xf8, 0xa1, 0xdf, 0x44, 0x53, 0x9d, + 0x7c, 0xd9, 0xed, 0x1b, 0x9c, 0xfa, 0xc3, 0x31, 0x0c, 0x7a, 0x43, 0x3a, 0x8c, 0xd6, 0x2c, 0x5d, + 0x69, 0xce, 0x42, 0xdb, 0xb3, 0x24, 0x97, 0x04, 0x58, 0xde, 0xc8, 0x1f, 0x84, 0xc3, 0xa8, 0x9e, + 0x00, 0x23, 0xb6, 0x52, 0x85, 0x57, 0xf4, 0xda, 0x60, 0x1b, 0xcf, 0xe5, 0x5d, 0x6d, 0xda, 0x0e, + 0xda, 0x24, 0x5e, 0x0e, 0x30, 0xdc, 0x77, 0x11, 0xde, 0x5e, 0x50, 0x2b, 0x25, 0x3b, 0x4e, 0x19, + 0x9d, 0x9f, 0x5e, 0x11, 0x2c, 0x09, 0xef, 0x15, 0x81, 0x97, 0xd1, 0x5e, 0x11, 0x98, 0xe4, 0xf4, + 0x8a, 0x40, 0xe4, 0x9d, 0x76, 0x4f, 0x15, 0x4e, 0x1a, 0x78, 0x45, 0xe0, 0xc5, 0x74, 0x57, 0x04, + 0x4e, 0xae, 0x76, 0x45, 0xe0, 0x85, 0x62, 0xd6, 0x37, 0xa0, 0x8e, 0x85, 0x40, 0xfa, 0xa7, 0x39, + 0x68, 0x9a, 0x63, 0x13, 0xa2, 0x0d, 0xf7, 0xbb, 0xdd, 0x7e, 0xb5, 0xcd, 0xc1, 0x65, 0x76, 0x3a, + 0xd6, 0x88, 0x84, 0xea, 0xf1, 0xc7, 0xfc, 0x72, 0xc1, 0xf0, 0x27, 0x5f, 0xc0, 0xc9, 0xb2, 0xfc, + 0xfd, 0x2c, 0x54, 0x8f, 0x3f, 0xe6, 0x17, 0xff, 0x84, 0x72, 0x62, 0xfe, 0xe8, 0x66, 0xe2, 0xd6, + 0x32, 0xc3, 0xcb, 0xa4, 0x03, 0x22, 0xcb, 0xe3, 0x66, 0xf2, 0x2b, 0xbc, 0x28, 0x07, 0x34, 0x60, + 0xd7, 0x06, 0x5b, 0x00, 0x4a, 0x92, 0x3d, 0xad, 0xd7, 0x06, 0x5b, 0x81, 0xea, 0x26, 0x92, 0x2c, + 0xb0, 0xf9, 0xa7, 0x7a, 0x7c, 0xcb, 0xfc, 0xea, 0xe3, 0x1e, 0x15, 0x8f, 0x27, 0xfe, 0x85, 0xdb, + 0xc1, 0x26, 0x77, 0x8c, 0x0e, 0x36, 0x18, 0x21, 0xbb, 0x1c, 0x6c, 0xe6, 0xf2, 0x0e, 0x36, 0x6c, + 0xc9, 0x69, 0x7c, 0x6c, 0x56, 0xe8, 0x4a, 0x05, 0x2a, 0x93, 0xdc, 0x70, 0x20, 0xcf, 0xe4, 0x6f, + 0x83, 0x89, 0x87, 0xbc, 0x7d, 0x15, 0xae, 0x08, 0x78, 0x17, 0x0b, 0xdb, 0xe7, 0xa1, 0xd9, 0x30, + 0xc8, 0xfa, 0x60, 0x24, 0xd6, 0xe8, 0xaf, 0xfb, 0x49, 0xb5, 0xf2, 0x93, 0x6a, 0xe5, 0x27, 0xd5, + 0xca, 0x0f, 0x47, 0xb5, 0xf2, 0xcf, 0x3d, 0x55, 0x2b, 0x5f, 0xdc, 0x4f, 0xaa, 0x95, 0x87, 0x23, + 0xf3, 0x3d, 0x55, 0x2b, 0xe3, 0xb7, 0x00, 0x4a, 0xb2, 0xeb, 0x58, 0x9a, 0x05, 0x34, 0xe9, 0x9d, + 0x70, 0x34, 0xe6, 0xd4, 0xae, 0xbc, 0xad, 0x2b, 0xbf, 0x95, 0xec, 0x35, 0xf2, 0xab, 0xb6, 0x9f, + 0xc3, 0x47, 0xba, 0x93, 0x7b, 0x8f, 0x91, 0xa7, 0xe4, 0xfb, 0xa3, 0xc9, 0xd6, 0xc3, 0xa9, 0xee, + 0x9d, 0x66, 0x0b, 0xfe, 0x75, 0x29, 0xe6, 0x95, 0x30, 0x3c, 0x81, 0xac, 0xda, 0xc7, 0x16, 0xbf, + 0x11, 0x90, 0xc8, 0x95, 0x10, 0xe1, 0x23, 0x31, 0x15, 0xd9, 0x2e, 0xe8, 0xca, 0x66, 0xc9, 0xa3, + 0x5e, 0x5e, 0xe7, 0x2e, 0xf3, 0x10, 0x36, 0x04, 0xb4, 0x2d, 0x21, 0x2d, 0xb6, 0x38, 0x18, 0xa8, + 0x2d, 0xc2, 0xcf, 0xd2, 0x41, 0x63, 0xd7, 0x37, 0x89, 0x78, 0x87, 0x35, 0xd9, 0x54, 0xf7, 0x4e, + 0xbe, 0xc3, 0xf5, 0xb2, 0x69, 0x91, 0x29, 0x6a, 0x2e, 0x74, 0x53, 0xb3, 0x83, 0x81, 0x5a, 0xf5, + 0x67, 0xaa, 0xc7, 0xe7, 0xc5, 0xcf, 0x2c, 0x3d, 0xd0, 0x64, 0xcc, 0xf8, 0x3e, 0xe9, 0xcd, 0xf8, + 0xba, 0x5e, 0x83, 0x7b, 0xab, 0x0e, 0x9a, 0x72, 0x1b, 0xd4, 0x41, 0x53, 0xef, 0xb6, 0x3a, 0xc8, + 0x92, 0x96, 0x4f, 0xbb, 0x61, 0x69, 0x79, 0x97, 0x87, 0xd8, 0x5b, 0x1c, 0x93, 0xd8, 0x7b, 0xf9, + 0xed, 0x11, 0x7b, 0xbb, 0xc5, 0xdd, 0xff, 0x2c, 0x9d, 0xb8, 0x7b, 0xfa, 0xd8, 0xc5, 0xdd, 0x91, + 0xbb, 0x2f, 0xee, 0xbe, 0x71, 0x31, 0xf7, 0x8c, 0x1f, 0xae, 0x98, 0x7b, 0xe6, 0x0f, 0x42, 0xcc, + 0x3d, 0x60, 0x13, 0xe0, 0xcd, 0xc2, 0x78, 0xec, 0xe9, 0xb1, 0xe2, 0xb1, 0x7b, 0x2e, 0xc7, 0x73, + 0x88, 0xa4, 0x66, 0xdf, 0xac, 0x48, 0xaa, 0x49, 0x40, 0x59, 0x21, 0xaa, 0x6c, 0x72, 0x45, 0xd1, + 0x33, 0x29, 0xdc, 0x68, 0x83, 0xbf, 0x16, 0xc2, 0x1e, 0xbd, 0xa6, 0x2b, 0xab, 0xa5, 0xac, 0x50, + 0x54, 0x7e, 0xc5, 0xd8, 0x37, 0x64, 0x52, 0xc5, 0x9f, 0xc5, 0x47, 0x0e, 0x7d, 0xcb, 0xc2, 0x2f, + 0xb9, 0x1e, 0x46, 0xe7, 0x5b, 0x93, 0x3c, 0xd6, 0x95, 0xe8, 0xff, 0x9c, 0xef, 0xab, 0x66, 0x85, + 0xa2, 0xe2, 0x4b, 0xcc, 0x97, 0xb6, 0xdc, 0xe4, 0x3d, 0x1f, 0xb2, 0xdc, 0x56, 0xf8, 0x72, 0x19, + 0x01, 0xa5, 0x68, 0x72, 0x20, 0x2a, 0x5f, 0x71, 0x3b, 0xe2, 0xeb, 0xdc, 0x9c, 0x3c, 0xe1, 0x60, + 0x96, 0xae, 0xe8, 0x59, 0xa8, 0x33, 0x4b, 0x4a, 0xc7, 0xfd, 0xc8, 0x75, 0xc4, 0xf5, 0x98, 0xdb, + 0x9b, 0x1f, 0x81, 0x70, 0xe1, 0xff, 0xcc, 0x46, 0x93, 0x6c, 0xa0, 0xc3, 0xc2, 0xef, 0x0a, 0xae, + 0xf0, 0xbb, 0x3c, 0x38, 0xd8, 0x4c, 0xd2, 0x37, 0x30, 0x1a, 0x23, 0x0b, 0xdf, 0xcd, 0xa2, 0x8c, + 0xc0, 0x69, 0xa3, 0x2c, 0xc0, 0xb2, 0x92, 0x50, 0x16, 0xb6, 0x2f, 0x24, 0x8f, 0xef, 0x4e, 0xf5, + 0x7e, 0xcf, 0x88, 0x83, 0x2d, 0xf6, 0x40, 0x50, 0xd9, 0xf8, 0x43, 0x8b, 0x32, 0x7f, 0xc8, 0x95, + 0x45, 0x10, 0x6e, 0x1d, 0xcf, 0x85, 0xdb, 0x3f, 0xf9, 0xcd, 0xd9, 0xe1, 0x33, 0x9f, 0xda, 0x33, + 0x08, 0xfe, 0x06, 0x8d, 0xfb, 0x43, 0x63, 0x98, 0x49, 0x32, 0x16, 0xa4, 0xfd, 0xe2, 0x6b, 0x66, + 0x2b, 0x10, 0x68, 0x40, 0x0f, 0x79, 0x36, 0x3f, 0x36, 0x2e, 0x1a, 0x39, 0xd2, 0x65, 0xb4, 0x5c, + 0x50, 0xa1, 0xfe, 0x56, 0x6e, 0xc3, 0x2d, 0x26, 0x96, 0x2b, 0xec, 0x11, 0xd0, 0x64, 0xfb, 0xcc, + 0x45, 0x1f, 0x9a, 0x58, 0xdb, 0xd0, 0x48, 0xe2, 0x57, 0x44, 0xc9, 0x30, 0x7c, 0x91, 0x38, 0x0f, + 0x4d, 0xa8, 0x6d, 0x68, 0x5c, 0x19, 0xac, 0x0f, 0xc6, 0xa2, 0x64, 0x48, 0xab, 0x40, 0xfc, 0x39, + 0x9a, 0x5c, 0xaf, 0xd5, 0x87, 0x23, 0x5b, 0xd9, 0x10, 0x98, 0xc7, 0x56, 0x1d, 0xa5, 0x62, 0x21, + 0xca, 0x87, 0x12, 0x32, 0x10, 0x98, 0x87, 0xda, 0xca, 0x0a, 0xff, 0x5d, 0x0e, 0x2a, 0xf0, 0xbe, + 0xa7, 0x3f, 0x49, 0xbe, 0x7e, 0x64, 0x92, 0x2f, 0x12, 0x3a, 0x28, 0x2d, 0x38, 0xc8, 0x73, 0xdd, + 0x78, 0x7b, 0x74, 0x31, 0xd8, 0x69, 0x01, 0x4d, 0x7a, 0xb5, 0x71, 0x03, 0x51, 0x6c, 0xaa, 0xda, + 0x1f, 0xc4, 0xd5, 0x08, 0x6d, 0x66, 0x05, 0x04, 0xf9, 0x2d, 0xd2, 0x95, 0xc7, 0x24, 0xae, 0x58, + 0x9e, 0x05, 0xe3, 0x5b, 0x25, 0x10, 0x18, 0x9a, 0xe6, 0x4f, 0xe3, 0x9a, 0x96, 0x56, 0xea, 0x4a, + 0x19, 0x5a, 0x26, 0xd9, 0xbf, 0x22, 0x17, 0x92, 0x60, 0x74, 0xdf, 0x7f, 0x68, 0x34, 0x9f, 0x4a, + 0x7e, 0xda, 0x94, 0xfc, 0x6e, 0xaf, 0x73, 0xb0, 0x2b, 0x02, 0x37, 0x4c, 0xe1, 0x57, 0xe3, 0xd0, + 0x0c, 0x6b, 0x88, 0xf2, 0x70, 0x28, 0xa4, 0xd5, 0xc6, 0xcc, 0xf9, 0xae, 0x73, 0xcb, 0xea, 0xb0, + 0x16, 0x8d, 0x93, 0xd5, 0x3d, 0x91, 0x88, 0xef, 0xa3, 0xe2, 0xba, 0x85, 0x40, 0xcc, 0x94, 0xfa, + 0x86, 0x9b, 0xbf, 0x1f, 0x3e, 0xd7, 0x97, 0x88, 0xef, 0x2b, 0xf5, 0xd5, 0xd6, 0x45, 0x4b, 0xde, + 0x7f, 0xff, 0x7d, 0x9b, 0xbc, 0xed, 0x0f, 0x08, 0x99, 0xcf, 0x46, 0x2c, 0xe2, 0x0f, 0x69, 0x31, + 0x7c, 0x5f, 0xf2, 0x80, 0x98, 0xe0, 0x8a, 0xe5, 0x65, 0x9c, 0xee, 0xc8, 0x07, 0x6a, 0x1c, 0x6c, + 0x99, 0xb6, 0xcf, 0x64, 0xf6, 0x20, 0xcd, 0x29, 0x14, 0x9e, 0x3c, 0x98, 0x1a, 0xda, 0x37, 0x7c, + 0xee, 0xf2, 0xc8, 0xa1, 0x73, 0xa9, 0xee, 0x9d, 0x56, 0xcc, 0x64, 0x95, 0x1b, 0x4d, 0xdc, 0x60, + 0x99, 0x5a, 0x65, 0xd3, 0x7c, 0x78, 0xcf, 0x9b, 0xeb, 0x08, 0x37, 0x06, 0xb0, 0xa0, 0x62, 0x11, + 0x08, 0xe1, 0x70, 0x2c, 0x9e, 0x62, 0x9f, 0x2d, 0x31, 0x62, 0x7c, 0x1f, 0xf1, 0x9f, 0xc6, 0xd2, + 0x37, 0x90, 0xc4, 0x71, 0xe2, 0x3f, 0x66, 0x89, 0xf5, 0xa9, 0x80, 0x26, 0xf8, 0x99, 0x46, 0x2b, + 0x87, 0x05, 0x8c, 0xdd, 0x2a, 0x59, 0xc5, 0x72, 0x1d, 0xaf, 0xe9, 0x64, 0xdc, 0x06, 0x1e, 0x02, + 0x14, 0x48, 0x94, 0x7e, 0xa2, 0x54, 0x6c, 0x3c, 0xf5, 0x59, 0xfc, 0x79, 0x9f, 0x31, 0xf4, 0x21, + 0xfc, 0x89, 0x95, 0xf2, 0x50, 0x37, 0xd2, 0xd4, 0x3d, 0x7c, 0x79, 0x37, 0xe8, 0xaa, 0xf0, 0x56, + 0xb8, 0x46, 0xb9, 0x5e, 0x36, 0x2e, 0x92, 0x6d, 0xce, 0xd1, 0x9a, 0x80, 0xb8, 0x86, 0xc9, 0x0a, + 0xc7, 0xd1, 0x03, 0x1d, 0x45, 0x56, 0x98, 0x46, 0x64, 0x46, 0xfa, 0x94, 0xc6, 0x74, 0xe5, 0x0f, + 0x28, 0x2c, 0x79, 0x42, 0x90, 0xac, 0x00, 0xfc, 0x91, 0xc8, 0xb1, 0xf4, 0xe2, 0x58, 0xb0, 0x07, + 0xe7, 0x46, 0x76, 0x63, 0x57, 0xf3, 0x62, 0x38, 0x4d, 0xa2, 0xbd, 0xc4, 0xb1, 0x4e, 0x4d, 0x3a, + 0x02, 0x36, 0x98, 0xa7, 0x67, 0x0a, 0x9b, 0xb3, 0xd0, 0x64, 0x1e, 0xec, 0xef, 0x7b, 0x9c, 0x4d, + 0x91, 0x8c, 0x63, 0xd6, 0xf2, 0xe3, 0xce, 0x1b, 0x0a, 0x58, 0x33, 0xd9, 0x74, 0x06, 0xfa, 0x8f, + 0x82, 0x64, 0xda, 0xb2, 0xd0, 0x4c, 0x8f, 0x9d, 0xff, 0xb1, 0x6e, 0xc7, 0xdf, 0x09, 0x68, 0x4a, + 0x15, 0x56, 0x6d, 0xe3, 0x58, 0x86, 0xab, 0xcc, 0x85, 0xad, 0xb1, 0xee, 0xbe, 0x40, 0x65, 0xc4, + 0xb2, 0x65, 0x66, 0x39, 0x66, 0x0c, 0xc6, 0x2e, 0xfa, 0x0a, 0x1b, 0x1a, 0xcf, 0xb2, 0x7c, 0x6e, + 0xc7, 0x80, 0xc6, 0x6d, 0xf8, 0xdb, 0x9c, 0x08, 0x5a, 0x22, 0x39, 0x67, 0x2c, 0xcf, 0x4f, 0xc4, + 0xf7, 0x51, 0x02, 0x9d, 0xc7, 0x17, 0xc9, 0xb3, 0x27, 0x8c, 0xc1, 0xce, 0xc2, 0x7f, 0x3d, 0x1b, + 0x4d, 0xa5, 0x5d, 0x98, 0x62, 0xe5, 0xa8, 0x87, 0x62, 0x05, 0x07, 0xa6, 0xe5, 0x90, 0x75, 0x78, + 0x34, 0xc5, 0x4a, 0xb2, 0x75, 0xaf, 0xf9, 0x44, 0x0f, 0x1d, 0x18, 0x55, 0xbd, 0x42, 0xc2, 0x48, + 0xc1, 0xec, 0x12, 0x83, 0xdd, 0x80, 0xad, 0x41, 0xb9, 0x42, 0xbf, 0x72, 0xc7, 0x94, 0x2c, 0x0e, + 0x6e, 0x37, 0xfb, 0x66, 0xb9, 0xdd, 0x5a, 0x4e, 0x59, 0x03, 0xf8, 0x7a, 0x85, 0xae, 0x94, 0x72, + 0xca, 0x9a, 0x9b, 0x7f, 0x15, 0x2c, 0xe5, 0xcc, 0xed, 0x46, 0xb8, 0xe2, 0x1b, 0x6e, 0x35, 0xca, + 0x0b, 0x4e, 0x47, 0x7f, 0x7e, 0xaa, 0xc0, 0x28, 0x67, 0xd0, 0xf9, 0x70, 0x2a, 0x95, 0x5f, 0x7b, + 0xa8, 0x54, 0x9e, 0x19, 0x45, 0xa5, 0x92, 0x76, 0xdc, 0x7b, 0xae, 0x54, 0xf9, 0xad, 0x87, 0x52, + 0xe5, 0x85, 0x1b, 0x50, 0xaa, 0x4c, 0x8d, 0x4c, 0xb6, 0x29, 0x55, 0x7e, 0x66, 0x53, 0xab, 0x6c, + 0x75, 0xab, 0x55, 0x26, 0xca, 0x73, 0x5c, 0xc1, 0x8c, 0xcb, 0xc2, 0xe1, 0x3a, 0x08, 0x65, 0x8c, + 0x13, 0x4f, 0xdb, 0x54, 0x2e, 0x45, 0x19, 0x54, 0x2e, 0x96, 0x65, 0x4b, 0x2c, 0xd2, 0xa8, 0xd9, + 0x15, 0x30, 0xff, 0xc8, 0x53, 0x01, 0x73, 0xf2, 0x7e, 0x52, 0xc0, 0x14, 0x44, 0x66, 0x79, 0x2a, + 0x60, 0x7e, 0x66, 0xd7, 0xbc, 0x70, 0x3e, 0x24, 0xf9, 0xde, 0x3e, 0x24, 0x4e, 0x4c, 0x77, 0x0f, + 0x94, 0x06, 0xcf, 0x3b, 0x03, 0x63, 0x3c, 0x92, 0x56, 0x69, 0xc0, 0x91, 0x85, 0x44, 0x6b, 0xf0, + 0x15, 0x46, 0xcc, 0x04, 0xb5, 0x93, 0x70, 0xfc, 0x0f, 0xa7, 0x5b, 0x24, 0x69, 0x56, 0x16, 0xd1, + 0x95, 0x4d, 0x92, 0xd5, 0x4d, 0x7e, 0x83, 0x98, 0x1c, 0xc5, 0xf7, 0x81, 0x57, 0xa9, 0x9c, 0x3a, + 0xd3, 0x0e, 0xaf, 0x41, 0xa9, 0x2f, 0x11, 0xdf, 0x57, 0x55, 0x61, 0xe8, 0x6d, 0xd6, 0xc3, 0x52, + 0xec, 0x4b, 0x0c, 0x0c, 0x24, 0x77, 0x76, 0x26, 0xfa, 0x9b, 0x52, 0x67, 0xda, 0x8d, 0xf6, 0x6f, + 0x8c, 0xce, 0x3e, 0x96, 0xca, 0x66, 0xe0, 0x14, 0xc5, 0xcf, 0x89, 0xfe, 0xb8, 0xb1, 0x7b, 0x17, + 0x33, 0xdd, 0xb6, 0x3e, 0xe7, 0x74, 0x2a, 0x98, 0xf2, 0xc0, 0x39, 0x15, 0x04, 0xed, 0x36, 0xb9, + 0x53, 0x29, 0x72, 0xaf, 0xb0, 0xdb, 0xe4, 0xfe, 0x72, 0x2c, 0x36, 0xb9, 0xc5, 0x6c, 0x4e, 0xa4, + 0xc4, 0x6e, 0xa4, 0x6b, 0xb7, 0xfc, 0x4c, 0xe3, 0xa0, 0xe3, 0x02, 0xe2, 0x7b, 0x2e, 0x31, 0x76, + 0xdb, 0x67, 0x8a, 0x77, 0xc5, 0x3e, 0xd3, 0xcb, 0xe8, 0x71, 0xfa, 0xfd, 0x6e, 0xf4, 0x38, 0xe3, + 0xd6, 0x8d, 0x1e, 0x5f, 0x41, 0xe3, 0xb7, 0x90, 0xc4, 0xef, 0x33, 0x29, 0xe3, 0xff, 0xa8, 0x44, + 0xcb, 0xe4, 0x02, 0xdb, 0x0e, 0x73, 0x89, 0x0c, 0x18, 0x0f, 0x47, 0x9b, 0x3a, 0xf8, 0xcc, 0x59, + 0xf7, 0x27, 0x9f, 0x79, 0xef, 0xc4, 0xf0, 0x03, 0x82, 0xae, 0x5c, 0x14, 0xd0, 0xb7, 0x82, 0xe4, + 0x22, 0x92, 0xe5, 0x12, 0x60, 0x44, 0x99, 0xf9, 0x3b, 0x13, 0x0c, 0xc1, 0x6e, 0x95, 0x95, 0xd7, + 0x10, 0xcd, 0x2c, 0xc6, 0xb6, 0x19, 0x84, 0xe6, 0x77, 0x4c, 0x56, 0xfe, 0x2f, 0xb2, 0xd0, 0x34, + 0xc7, 0xb4, 0xef, 0x7f, 0x71, 0x64, 0x8d, 0x43, 0x1c, 0xe9, 0x91, 0xcf, 0xa1, 0xb1, 0x36, 0x06, + 0x11, 0xc4, 0x40, 0x1c, 0x39, 0x17, 0xc6, 0xb1, 0x01, 0xa9, 0xde, 0x06, 0x82, 0x41, 0x12, 0x44, + 0x97, 0x9a, 0xa3, 0xb9, 0x76, 0x43, 0x9e, 0xe9, 0xc0, 0x46, 0xa3, 0xf0, 0x84, 0xff, 0x73, 0x36, + 0x9a, 0x0d, 0x71, 0xe3, 0xdc, 0xe6, 0x68, 0xeb, 0xdd, 0x4c, 0xd3, 0xb3, 0xd8, 0x24, 0xc9, 0x62, + 0x9a, 0xf2, 0x28, 0x9a, 0xbb, 0x5e, 0x36, 0x3f, 0x32, 0xd7, 0x93, 0xd2, 0x2d, 0xcd, 0x31, 0xf9, + 0x28, 0x9e, 0xdb, 0x49, 0x10, 0x53, 0x01, 0xf8, 0x2e, 0x7e, 0x19, 0x40, 0xce, 0x05, 0xd0, 0x29, + 0x39, 0x2a, 0xe5, 0x93, 0x82, 0x5d, 0xef, 0x7f, 0xb5, 0x69, 0x3b, 0x0b, 0x51, 0x45, 0x7c, 0x31, + 0x4c, 0xdc, 0x37, 0xd0, 0x0c, 0xe1, 0xee, 0xc9, 0x87, 0x4a, 0xc8, 0xf3, 0x92, 0x6c, 0x6d, 0x02, + 0xbf, 0x5d, 0x9e, 0xb8, 0x49, 0xf4, 0xb7, 0x27, 0x06, 0xbb, 0x87, 0xcf, 0x9c, 0x36, 0x3a, 0xf7, + 0x25, 0x06, 0x06, 0x12, 0x43, 0x07, 0xac, 0x10, 0x42, 0x98, 0x67, 0x31, 0xbf, 0x41, 0xd3, 0x4a, + 0x51, 0x2c, 0xd0, 0x11, 0x8c, 0x2e, 0x0f, 0x47, 0x6a, 0xb5, 0x80, 0xd1, 0x85, 0xb3, 0xa4, 0xb4, + 0x77, 0x1a, 0x5d, 0x6d, 0xc6, 0xc5, 0x53, 0x89, 0xa1, 0x9e, 0xab, 0x4d, 0xdb, 0x55, 0xc7, 0xb4, + 0xc5, 0x65, 0x28, 0x2f, 0xdc, 0x60, 0x52, 0x78, 0xe1, 0x08, 0xcf, 0x85, 0xb1, 0x42, 0x79, 0x26, + 0xcc, 0x97, 0xe0, 0x67, 0x1c, 0x32, 0x2a, 0x11, 0x8f, 0xab, 0xac, 0x41, 0xe9, 0x4b, 0xba, 0xf2, + 0x3c, 0x7a, 0x4e, 0x4a, 0x77, 0x40, 0x34, 0xbe, 0x3f, 0xaf, 0x2b, 0xb3, 0xc9, 0x81, 0xe2, 0x39, + 0xa8, 0xc0, 0xbb, 0xef, 0xfd, 0x7f, 0x6d, 0xd6, 0x8f, 0x4d, 0x8a, 0x8f, 0xbd, 0x42, 0xe1, 0xda, + 0x2c, 0x20, 0xd7, 0xe6, 0xe2, 0xd7, 0xb0, 0x2d, 0xde, 0xb2, 0xfc, 0xdf, 0x8f, 0x41, 0x96, 0x8f, + 0xfd, 0x93, 0xc6, 0x99, 0xcd, 0xa2, 0xb2, 0xc4, 0xef, 0x31, 0x1f, 0x6a, 0x8a, 0x0a, 0xf6, 0xdb, + 0x98, 0x60, 0xff, 0x7e, 0x32, 0x54, 0x4d, 0x7b, 0xee, 0x76, 0xa8, 0x4b, 0x8f, 0x20, 0x0a, 0xff, + 0x6d, 0x16, 0x9a, 0x07, 0x1a, 0x53, 0xfb, 0x20, 0x58, 0x59, 0x75, 0x27, 0xd1, 0xc3, 0x2a, 0xaa, + 0xf0, 0xcb, 0x1a, 0x93, 0xc2, 0x0f, 0x07, 0xa4, 0x21, 0x0a, 0xbf, 0x89, 0x6e, 0x25, 0x9f, 0x58, + 0x66, 0x85, 0xce, 0xcb, 0xa6, 0x72, 0x95, 0xf9, 0x56, 0xe8, 0x3c, 0x91, 0x5d, 0x3c, 0x63, 0xdf, + 0x61, 0x2a, 0x59, 0xa1, 0x54, 0x05, 0x69, 0x44, 0x53, 0x6d, 0x64, 0xdc, 0x0f, 0xb9, 0x80, 0xc4, + 0xbe, 0xe6, 0xf4, 0x20, 0x23, 0xcd, 0xed, 0x23, 0x9f, 0x1c, 0xb5, 0xeb, 0x9a, 0x61, 0x5a, 0x85, + 0xad, 0xd9, 0x68, 0x7e, 0x86, 0xe1, 0xee, 0xff, 0x0b, 0x5a, 0x6b, 0xbb, 0xa0, 0xa3, 0x9d, 0x12, + 0x4e, 0x0b, 0x04, 0xf7, 0xf4, 0x31, 0x18, 0x0e, 0x76, 0xcb, 0xe8, 0xea, 0x48, 0x75, 0xef, 0xe4, + 0xf5, 0xb4, 0xe0, 0x60, 0x46, 0xde, 0xb9, 0x80, 0xae, 0xf8, 0xd1, 0xdb, 0x52, 0xe6, 0x9d, 0x92, + 0x4b, 0xdc, 0x3b, 0xef, 0x18, 0x71, 0xe4, 0x93, 0xa3, 0x19, 0x40, 0xbd, 0x37, 0x0f, 0x4d, 0x85, + 0xfb, 0x72, 0x17, 0x5e, 0xbf, 0xaf, 0xb2, 0x50, 0x1e, 0x7d, 0x48, 0xc8, 0xbb, 0xb7, 0x3f, 0x4b, + 0x57, 0xba, 0xb2, 0x24, 0x56, 0x2c, 0xef, 0xc8, 0x22, 0xd1, 0xbe, 0x71, 0x00, 0x46, 0xb8, 0xb0, + 0xf6, 0x68, 0xdf, 0x57, 0x9b, 0xb6, 0xf3, 0x95, 0x89, 0xc1, 0xee, 0x44, 0x7f, 0x93, 0x71, 0xe9, + 0x82, 0xed, 0x09, 0x24, 0x67, 0x41, 0x18, 0x50, 0x1a, 0xf1, 0x9c, 0xc9, 0x37, 0xc1, 0xb8, 0x88, + 0x85, 0xde, 0x4b, 0x7e, 0x75, 0x1c, 0x4c, 0x9e, 0xf8, 0x81, 0x8d, 0x7d, 0x67, 0x93, 0x3d, 0xc7, + 0x86, 0xbf, 0xdf, 0x31, 0x72, 0xe0, 0xf2, 0xb5, 0xc1, 0xb6, 0x64, 0x7f, 0x73, 0xaa, 0x6b, 0x17, + 0xbc, 0x79, 0xe6, 0x03, 0x7a, 0xf9, 0x23, 0x93, 0xd6, 0x38, 0x70, 0xd9, 0xe8, 0xea, 0x30, 0x3a, + 0xcf, 0x93, 0xf0, 0x91, 0xd8, 0x8c, 0xca, 0x9c, 0x2e, 0x87, 0x7d, 0xe1, 0xc1, 0x4d, 0x7d, 0xb1, + 0xd7, 0x68, 0x19, 0x18, 0xfe, 0xe4, 0x0b, 0x73, 0x9c, 0xcf, 0xe2, 0xe0, 0x3f, 0x64, 0x2e, 0xf5, + 0xe4, 0x4e, 0x93, 0x63, 0x01, 0xb4, 0x8d, 0x03, 0x3a, 0x99, 0x0f, 0x2a, 0xdb, 0x0f, 0xf1, 0x98, + 0x80, 0x44, 0xea, 0x4e, 0x08, 0x07, 0x85, 0xe5, 0x05, 0x70, 0x9f, 0xc3, 0xba, 0x52, 0x27, 0x79, + 0x54, 0xcb, 0xeb, 0x09, 0x28, 0x90, 0x7c, 0xbd, 0xe6, 0xe0, 0x26, 0xeb, 0xd5, 0x7b, 0x30, 0x75, + 0xe0, 0x54, 0xa9, 0x2f, 0x46, 0x83, 0x56, 0x2e, 0x1c, 0xd9, 0xdf, 0x94, 0xec, 0xdb, 0x06, 0xcd, + 0x8a, 0x7c, 0x11, 0x2d, 0xe6, 0x0f, 0x86, 0x16, 0x26, 0x06, 0x9a, 0x53, 0x67, 0x06, 0x46, 0x8e, + 0x9c, 0x2c, 0x86, 0x68, 0xe2, 0xa4, 0x1a, 0xa7, 0x90, 0x73, 0x7f, 0xcb, 0x8b, 0xa6, 0xc9, 0xf9, + 0x81, 0xd3, 0x34, 0xe3, 0x6e, 0x86, 0xa6, 0x11, 0x5b, 0x04, 0x34, 0x3d, 0x60, 0xbf, 0x6b, 0xb5, + 0xe1, 0x08, 0x44, 0xe0, 0xcd, 0x2b, 0x5b, 0xaf, 0x2b, 0x35, 0x92, 0x57, 0xbd, 0xfc, 0x02, 0x40, + 0xb1, 0xb1, 0xef, 0x30, 0x8c, 0x5a, 0xec, 0x83, 0xfd, 0x22, 0x9b, 0xc5, 0x76, 0x8a, 0x7c, 0x19, + 0x5b, 0xc3, 0x19, 0xf1, 0x0f, 0x61, 0x9b, 0x54, 0xaf, 0x21, 0x69, 0xbc, 0x2e, 0xd7, 0xd5, 0x1f, + 0x95, 0xae, 0xfa, 0x32, 0x07, 0x4d, 0x73, 0x74, 0xfa, 0x89, 0xa0, 0xfa, 0xa1, 0x12, 0x54, 0xcb, + 0x74, 0xe5, 0x45, 0xf4, 0xbc, 0xe4, 0x3e, 0xf0, 0x31, 0x53, 0x52, 0x7f, 0x5b, 0x84, 0xa6, 0xd2, + 0xa4, 0x72, 0xec, 0x79, 0xf1, 0x36, 0x1f, 0x28, 0xe6, 0x9f, 0x97, 0x87, 0x47, 0xd1, 0x48, 0x59, + 0x92, 0x05, 0x3e, 0xd0, 0xb1, 0x87, 0x26, 0x69, 0x41, 0x66, 0x4d, 0x92, 0x5d, 0x7f, 0x14, 0x73, + 0x39, 0xe9, 0xbc, 0x7e, 0xfb, 0x9d, 0x74, 0xc8, 0xc4, 0x2d, 0x45, 0xd0, 0x33, 0x0e, 0x2f, 0x9d, + 0x87, 0x47, 0x51, 0x04, 0x31, 0x85, 0x4f, 0x8d, 0xdd, 0x17, 0xe7, 0xc5, 0x9b, 0xf4, 0xc5, 0x21, + 0x13, 0x22, 0xce, 0x38, 0x2f, 0xb9, 0xb5, 0x48, 0xbe, 0xf4, 0xce, 0x38, 0xf4, 0x14, 0x2c, 0x4d, + 0x51, 0xa5, 0x87, 0xa6, 0xe8, 0xf1, 0x51, 0x34, 0x45, 0x64, 0x14, 0x5e, 0x2f, 0xf4, 0xa6, 0x97, + 0x5e, 0xe8, 0xb9, 0x9b, 0xd6, 0x0b, 0xd9, 0xf5, 0x3f, 0xaf, 0x7b, 0xe8, 0x7f, 0x9e, 0xd5, 0x95, + 0x5f, 0xda, 0xf4, 0x3f, 0x4f, 0x38, 0xf4, 0x3f, 0x6f, 0x6e, 0x7e, 0x36, 0x5a, 0xec, 0xc3, 0x0a, + 0x9f, 0xb7, 0x78, 0x75, 0x90, 0x4d, 0xf7, 0xb3, 0xf9, 0x46, 0x75, 0x3f, 0xb7, 0xe2, 0x6e, 0xf3, + 0xa5, 0xa7, 0xb6, 0xa7, 0xf5, 0xfe, 0xd1, 0xf6, 0xfc, 0x70, 0x02, 0x96, 0x39, 0x71, 0xd8, 0x3d, + 0x50, 0x36, 0x71, 0xcc, 0xdc, 0xe4, 0x9b, 0x64, 0xe6, 0xc4, 0x7f, 0x6c, 0x05, 0xfc, 0x05, 0xdd, + 0x4d, 0x9f, 0xa0, 0x2b, 0x1b, 0x59, 0x74, 0xd1, 0xdf, 0xf2, 0x29, 0x85, 0xc1, 0x50, 0x6f, 0x78, + 0xc7, 0x10, 0xfc, 0x2c, 0x57, 0x2b, 0x95, 0xb5, 0x55, 0xab, 0x57, 0x5c, 0x1b, 0x6c, 0x23, 0xc1, + 0x7d, 0xaf, 0x0d, 0xb6, 0x55, 0x54, 0xae, 0xac, 0x24, 0x85, 0xcb, 0x95, 0x95, 0xeb, 0xd4, 0xca, + 0x6b, 0x83, 0x6d, 0x2c, 0x6b, 0x82, 0xb2, 0xb6, 0x6a, 0xcd, 0x6a, 0xda, 0xa8, 0xb2, 0xe2, 0x7a, + 0x59, 0x79, 0x44, 0x51, 0xf3, 0xe8, 0x38, 0x56, 0x8c, 0xe0, 0x3c, 0x3a, 0x8a, 0x15, 0x24, 0x78, + 0xb2, 0x7d, 0x10, 0x75, 0x3c, 0x19, 0x43, 0xfd, 0x19, 0x8b, 0x76, 0x3a, 0xa6, 0xf8, 0x67, 0xae, + 0x63, 0xfb, 0x11, 0xc4, 0x3f, 0x73, 0xad, 0xf9, 0x81, 0x8b, 0x7f, 0xb6, 0x0e, 0xe5, 0x41, 0x9c, + 0x1f, 0x16, 0x00, 0x0d, 0x23, 0x7e, 0x56, 0x28, 0x4b, 0xce, 0x08, 0x68, 0xe6, 0xdb, 0x88, 0xd3, + 0xc8, 0x80, 0x2f, 0x2f, 0x1f, 0x10, 0x8d, 0xf5, 0x12, 0xbf, 0xf5, 0x8a, 0x88, 0xf6, 0xa1, 0xa0, + 0x2b, 0x9d, 0x76, 0xe5, 0x65, 0xd3, 0x6d, 0x57, 0x5e, 0xde, 0xb3, 0x38, 0x68, 0x5e, 0x9e, 0x5d, + 0xb3, 0xee, 0x53, 0xcf, 0xae, 0xd9, 0x3f, 0x30, 0xcf, 0xae, 0x82, 0x1f, 0xae, 0x67, 0xd7, 0x43, + 0x3f, 0x08, 0xcf, 0x2e, 0x47, 0x7c, 0xae, 0x39, 0xb7, 0x2f, 0x3e, 0xd7, 0xb7, 0x02, 0x9a, 0xc0, + 0x34, 0x95, 0x05, 0x73, 0xc7, 0xf8, 0x36, 0x79, 0xaa, 0xfe, 0x2b, 0xef, 0xb8, 0xea, 0xbf, 0xd2, + 0x33, 0xe8, 0xd3, 0xbc, 0x3b, 0x1c, 0xf4, 0x69, 0xfe, 0x5d, 0x31, 0x2a, 0xf8, 0x93, 0x3b, 0xe8, + 0xd3, 0x82, 0x51, 0x49, 0xf2, 0xdb, 0x17, 0x10, 0x2a, 0x60, 0xb7, 0x47, 0x7c, 0x78, 0x0c, 0x69, + 0xed, 0x6f, 0x53, 0xb8, 0x28, 0xdf, 0x7d, 0x68, 0x39, 0xf1, 0x2e, 0x6f, 0x39, 0xf1, 0xc8, 0xa8, + 0xc7, 0x70, 0x4b, 0x56, 0x15, 0x31, 0x5b, 0x3c, 0x7b, 0x88, 0x30, 0xb6, 0xd6, 0x24, 0xd3, 0xb9, + 0x62, 0xb9, 0x9c, 0x77, 0x98, 0xe3, 0x53, 0xc3, 0x15, 0x27, 0x8f, 0x0f, 0x1a, 0x83, 0x9d, 0x89, + 0xfe, 0xf8, 0xc2, 0x58, 0xb0, 0x5e, 0x5b, 0xb4, 0x3a, 0xfc, 0xde, 0xc2, 0xa2, 0x45, 0xcb, 0xc3, + 0x91, 0x7a, 0x7f, 0x0c, 0x4a, 0xd4, 0xe5, 0xe5, 0x4f, 0x3e, 0xf9, 0xe4, 0x73, 0x45, 0x45, 0xb6, + 0x28, 0xf9, 0x65, 0x96, 0x3d, 0xd8, 0xa3, 0x1c, 0x89, 0x4e, 0xed, 0xc1, 0x44, 0x66, 0x0f, 0xe6, + 0x41, 0xa2, 0x53, 0xb3, 0xb0, 0xd3, 0x02, 0x9a, 0x0c, 0xbb, 0xca, 0x0e, 0x13, 0x02, 0x89, 0xfd, + 0x59, 0x57, 0xfe, 0x28, 0x39, 0xaa, 0xe4, 0xa0, 0x31, 0xf4, 0xa1, 0x63, 0x9f, 0x01, 0xd7, 0x25, + 0xfa, 0xe3, 0xf4, 0x6c, 0xb0, 0xc9, 0x46, 0xe6, 0x43, 0xb6, 0x4c, 0xc4, 0x16, 0x83, 0x11, 0x07, + 0x3e, 0x65, 0x5b, 0x0c, 0x2d, 0xd5, 0xf1, 0x69, 0xaf, 0x68, 0x5d, 0x8f, 0xff, 0x50, 0xa3, 0x75, + 0xfd, 0x14, 0x44, 0xeb, 0x46, 0xad, 0x6d, 0xfe, 0xad, 0xa0, 0x2b, 0xff, 0x4a, 0x40, 0x7f, 0x2b, + 0x48, 0x2e, 0xf9, 0x9f, 0xfc, 0xad, 0xe0, 0xe9, 0xa9, 0x0a, 0x6f, 0xf9, 0x70, 0xdf, 0x29, 0x70, + 0x53, 0x4d, 0x0c, 0x34, 0xf3, 0x29, 0xd2, 0x88, 0xce, 0x4c, 0x6f, 0x4b, 0x5c, 0x3e, 0x97, 0xec, + 0xfd, 0xd4, 0x5b, 0xe8, 0x7f, 0xa2, 0xcd, 0x44, 0x0f, 0x38, 0x61, 0xc8, 0xd5, 0xa6, 0xed, 0xc4, + 0x73, 0x16, 0x62, 0x3a, 0xe2, 0x0c, 0x24, 0x4c, 0xe0, 0x9a, 0xfa, 0xa8, 0xdf, 0x68, 0xfe, 0x06, + 0x44, 0x72, 0xf8, 0xa3, 0x17, 0x93, 0xc7, 0x2f, 0x25, 0xdb, 0xcf, 0x41, 0x63, 0x12, 0x0c, 0x93, + 0xa6, 0x5b, 0x71, 0xbb, 0xcd, 0x16, 0xfe, 0xd3, 0x6c, 0x34, 0xcd, 0xb1, 0xae, 0x07, 0xcf, 0x1c, + 0x27, 0x0d, 0xa5, 0xed, 0x36, 0xc7, 0x61, 0xfa, 0x4a, 0x0f, 0x19, 0xf8, 0x5f, 0xdc, 0x7c, 0xf2, + 0xf7, 0xdb, 0x20, 0xa1, 0x2e, 0xd7, 0x95, 0x65, 0xe8, 0x25, 0xc9, 0x7d, 0x16, 0x54, 0x25, 0x6d, + 0x83, 0xb1, 0x34, 0x42, 0xea, 0x7f, 0x25, 0xa0, 0x99, 0xaa, 0x16, 0x8b, 0x6c, 0x75, 0x25, 0xfc, + 0x78, 0xda, 0x2d, 0xa9, 0x2e, 0x48, 0xa7, 0x08, 0xe5, 0x45, 0xd1, 0x2f, 0x72, 0xba, 0xa2, 0x2c, + 0x6a, 0x19, 0x3c, 0x93, 0xd3, 0x15, 0x4d, 0x00, 0x69, 0xcd, 0x70, 0x53, 0x33, 0xc4, 0x13, 0x11, + 0x0a, 0x02, 0x9c, 0xf1, 0xcb, 0x2b, 0xba, 0x52, 0x89, 0xca, 0x25, 0xef, 0x49, 0xc9, 0x0b, 0x20, + 0xf9, 0x4d, 0xa2, 0x7f, 0xaf, 0xd1, 0xb9, 0xcf, 0x1d, 0x8f, 0xce, 0x06, 0xa7, 0x9f, 0x65, 0xa3, + 0x59, 0x5e, 0xa3, 0xdc, 0xff, 0xc0, 0xba, 0x6a, 0x6c, 0xc0, 0x8a, 0x27, 0x01, 0xc0, 0x3a, 0x13, + 0x9e, 0x09, 0x6f, 0x55, 0xcd, 0xaf, 0xc6, 0xa0, 0xaa, 0x81, 0xb1, 0xb0, 0x1f, 0xab, 0x35, 0x16, + 0x9f, 0x80, 0x0d, 0x94, 0x32, 0xa5, 0xeb, 0x74, 0x45, 0x45, 0xd5, 0x52, 0x9a, 0x8d, 0xcd, 0x70, + 0x3e, 0x99, 0xed, 0xd1, 0xf6, 0x66, 0xa1, 0x49, 0x2b, 0xb4, 0x58, 0x3a, 0x3d, 0x7c, 0xd6, 0xed, + 0xd3, 0xc3, 0xd7, 0x11, 0xcb, 0x73, 0xcc, 0x9e, 0xc0, 0x89, 0x60, 0x4a, 0xdc, 0x2a, 0x95, 0x5f, + 0x72, 0x3f, 0xd6, 0xb6, 0xc8, 0x45, 0xcc, 0x6a, 0xbc, 0xc3, 0xd2, 0x37, 0xe2, 0x2d, 0x83, 0x9f, + 0xaa, 0x35, 0x54, 0xe9, 0x53, 0xba, 0xb2, 0x14, 0x2d, 0x96, 0xec, 0x6b, 0x93, 0x45, 0x70, 0xfe, + 0x4d, 0x0b, 0xb9, 0xa7, 0x73, 0xd0, 0x64, 0xbe, 0xc7, 0x8f, 0x0e, 0x62, 0x35, 0x34, 0x0e, 0x73, + 0x33, 0xe9, 0xd0, 0x69, 0x25, 0xcf, 0xea, 0x84, 0x36, 0x86, 0x41, 0x95, 0x00, 0x7d, 0xe4, 0x47, + 0x1c, 0x23, 0x1b, 0xcd, 0x17, 0x12, 0x03, 0xe4, 0xd5, 0x23, 0x5f, 0x81, 0x96, 0xf7, 0x58, 0xc3, + 0xa8, 0xe8, 0xca, 0x4b, 0xe8, 0x05, 0xc9, 0x71, 0xd2, 0x0e, 0xe0, 0xc8, 0x7c, 0x6d, 0xfe, 0x48, + 0x88, 0x20, 0x6e, 0x2b, 0xc4, 0x4d, 0x28, 0x9f, 0xaa, 0xd7, 0x30, 0x6f, 0x0f, 0xa8, 0xdb, 0x7c, + 0x2c, 0x24, 0x5b, 0x05, 0x15, 0x68, 0x19, 0xf1, 0x03, 0xc6, 0x57, 0xdb, 0x59, 0xea, 0x69, 0x5e, + 0xf3, 0xb3, 0x30, 0xb6, 0x59, 0x5b, 0xcc, 0x92, 0xc3, 0x17, 0xa9, 0xb6, 0xfe, 0x85, 0xdd, 0x02, + 0x9a, 0x56, 0xfe, 0x8e, 0x56, 0xbb, 0x19, 0x07, 0x9a, 0x26, 0x71, 0x06, 0xc4, 0x97, 0x51, 0x5e, + 0x30, 0x14, 0xd2, 0x22, 0x55, 0xd5, 0xd1, 0x02, 0x01, 0x0b, 0xed, 0xb0, 0xc7, 0x3d, 0x2b, 0x94, + 0x67, 0x00, 0xc7, 0x0c, 0x8e, 0xcb, 0x4c, 0x6a, 0xc7, 0xea, 0x4b, 0x2b, 0x74, 0x45, 0x41, 0x2f, + 0x4b, 0xee, 0xa1, 0xe5, 0x87, 0x93, 0x9f, 0x36, 0x25, 0x8f, 0x9d, 0x0a, 0x85, 0x03, 0x1a, 0xb1, + 0x93, 0xc1, 0x06, 0xcb, 0x1b, 0x6a, 0x89, 0x24, 0xf4, 0x8a, 0xc0, 0x46, 0x29, 0xbc, 0x90, 0x8d, + 0x44, 0x7e, 0x84, 0x68, 0x43, 0x38, 0x14, 0xd5, 0xee, 0xf7, 0x6b, 0x54, 0xc7, 0xae, 0x91, 0x77, + 0xea, 0x18, 0xd7, 0x82, 0x16, 0x55, 0xf8, 0x63, 0x7e, 0x90, 0x99, 0xe0, 0xfc, 0x7b, 0x70, 0xb7, + 0x1e, 0x86, 0xc1, 0xf1, 0x46, 0xe1, 0x2d, 0x83, 0xcf, 0x14, 0x6f, 0xd6, 0xb6, 0x26, 0x0f, 0xf7, + 0x55, 0x55, 0xc3, 0x2d, 0x9b, 0x53, 0x83, 0x26, 0xb0, 0xee, 0x37, 0x91, 0xb3, 0xdb, 0x9c, 0x88, + 0x8a, 0xe7, 0xcd, 0x13, 0xbf, 0xc4, 0x78, 0xd5, 0x63, 0xf3, 0xe9, 0x6e, 0x91, 0xb0, 0xf3, 0x58, + 0xb3, 0xe2, 0x26, 0x48, 0xae, 0x0a, 0x08, 0x59, 0x23, 0x8b, 0xe5, 0x68, 0x7c, 0x30, 0x5a, 0xf9, + 0x7e, 0x30, 0x0a, 0x49, 0xd1, 0xf2, 0x48, 0x3e, 0x10, 0x52, 0x26, 0xcf, 0x25, 0xe2, 0x17, 0x0e, + 0x1c, 0xa8, 0xa2, 0xac, 0x57, 0xa5, 0xad, 0xc4, 0x32, 0xf7, 0x5b, 0x82, 0x65, 0x0d, 0xdc, 0x5b, + 0x42, 0xa0, 0x12, 0x74, 0xcd, 0x5e, 0x64, 0xcd, 0x4a, 0xbb, 0x86, 0x3d, 0xdb, 0xca, 0x79, 0x68, + 0xd3, 0xb0, 0x17, 0xb8, 0xc7, 0xf1, 0xd0, 0xb6, 0x17, 0xfe, 0xab, 0x2c, 0x34, 0x7d, 0x5d, 0xa8, + 0x3c, 0x1c, 0x09, 0x84, 0x43, 0xb0, 0xda, 0xdb, 0x73, 0x7b, 0xc4, 0x1a, 0xf7, 0x52, 0x7f, 0xa9, + 0x2b, 0xbf, 0xe0, 0x97, 0xba, 0x80, 0x98, 0xcd, 0xb1, 0x89, 0x62, 0x54, 0xc5, 0xea, 0x71, 0x50, + 0x05, 0x9f, 0xc0, 0xaf, 0x3d, 0x42, 0x53, 0x8a, 0x64, 0xe3, 0x29, 0xfd, 0x56, 0x57, 0x7e, 0x43, + 0x53, 0x8a, 0x54, 0x93, 0xf9, 0xe0, 0x35, 0xc2, 0x6c, 0xae, 0x0d, 0xb6, 0x19, 0x7a, 0x9b, 0xd7, + 0x3c, 0x13, 0xf1, 0xb6, 0x91, 0xa6, 0xd6, 0x44, 0x7f, 0x93, 0xc9, 0xc1, 0x0c, 0x1e, 0x36, 0x9a, + 0x5b, 0xdc, 0xbd, 0x49, 0x3e, 0x12, 0x6a, 0xa5, 0xe3, 0xb5, 0x4b, 0xf2, 0x5c, 0x90, 0x75, 0x92, + 0xce, 0x9d, 0x7d, 0xc3, 0xe7, 0x77, 0x18, 0xf1, 0xd3, 0x00, 0x51, 0x85, 0x57, 0xb2, 0xd0, 0x0c, + 0x7b, 0xa7, 0x07, 0xe3, 0xee, 0xdb, 0xe3, 0x97, 0x3c, 0xea, 0x75, 0xdb, 0xd6, 0x34, 0x10, 0xf5, + 0x6d, 0x0d, 0xd6, 0x03, 0x92, 0xa4, 0x8c, 0xf8, 0xca, 0x93, 0x31, 0x09, 0x05, 0x02, 0x56, 0x94, + 0x55, 0xba, 0xb2, 0x1c, 0x55, 0x48, 0x9e, 0xbb, 0x21, 0xcf, 0xe5, 0xa1, 0xc0, 0xb1, 0x87, 0xee, + 0x5b, 0xf9, 0x3f, 0x65, 0xa1, 0x69, 0x3f, 0x41, 0x6b, 0x7a, 0x68, 0x7d, 0x56, 0x57, 0x7e, 0x89, + 0x9e, 0x94, 0xdc, 0x7b, 0x24, 0x2f, 0xe0, 0x61, 0x35, 0xd1, 0xdf, 0xee, 0x04, 0xd7, 0x7f, 0x99, + 0x85, 0xc4, 0x9f, 0x80, 0xd5, 0x5f, 0xfa, 0x2b, 0x5d, 0x59, 0x81, 0x2a, 0x25, 0x8f, 0xbd, 0xb0, + 0x83, 0x80, 0x7b, 0x0b, 0xdd, 0xd0, 0x1a, 0xcf, 0xa1, 0x12, 0x0a, 0x1e, 0x5a, 0xab, 0x5c, 0xd0, + 0x5a, 0x32, 0x06, 0x68, 0xbd, 0x5e, 0x36, 0x5e, 0x17, 0x72, 0xf2, 0x84, 0xa9, 0x01, 0x0e, 0x6e, + 0x2f, 0x59, 0xb6, 0x04, 0xb0, 0xdb, 0xc7, 0x05, 0x5d, 0x79, 0x9d, 0xd9, 0x12, 0xac, 0xe6, 0x27, + 0x0c, 0x93, 0x5c, 0x68, 0xd7, 0xea, 0x2f, 0x26, 0x06, 0x00, 0x8b, 0xa9, 0xfe, 0x7f, 0xb1, 0x52, + 0x51, 0x51, 0x42, 0x4c, 0x00, 0x16, 0xab, 0x95, 0xab, 0xd6, 0xac, 0xaf, 0xa4, 0x3f, 0x8b, 0x20, + 0xc7, 0xb0, 0xcb, 0x2e, 0xc0, 0x6d, 0x43, 0x30, 0x91, 0x1b, 0x44, 0x9d, 0x6c, 0x1f, 0x85, 0x19, + 0x0f, 0xa8, 0xf6, 0x34, 0xe4, 0xd9, 0x34, 0xe6, 0x70, 0x89, 0x3d, 0x0d, 0xb9, 0xf7, 0xbd, 0x33, + 0x5b, 0x6c, 0x32, 0x5b, 0xd8, 0xd2, 0x8e, 0x8b, 0x2b, 0xf9, 0x7b, 0x9c, 0x43, 0x5d, 0xf9, 0x6e, + 0xe4, 0x1e, 0xf3, 0x17, 0xf8, 0x59, 0xcb, 0xda, 0x63, 0x1c, 0x35, 0x64, 0x9b, 0x61, 0x59, 0x7b, + 0x4c, 0x20, 0x23, 0x35, 0x35, 0xd3, 0xcb, 0xcf, 0x0c, 0xf6, 0xcb, 0x74, 0xe5, 0x65, 0xf4, 0xa2, + 0xe4, 0x3e, 0x7c, 0x79, 0x3e, 0x78, 0xec, 0x41, 0x3a, 0x76, 0x18, 0x00, 0xdf, 0x5c, 0x80, 0x41, + 0x9e, 0x72, 0xfc, 0x0f, 0x59, 0x48, 0xe4, 0xfb, 0x3f, 0x18, 0x17, 0xf2, 0xd7, 0xb6, 0x0b, 0xe9, + 0x49, 0xab, 0x91, 0x7b, 0x88, 0xa3, 0x72, 0xc0, 0x3d, 0x9c, 0x47, 0x12, 0x3c, 0xb7, 0x74, 0x19, + 0x7b, 0x8e, 0x19, 0x7a, 0x1b, 0xa4, 0x46, 0x26, 0xc7, 0x4c, 0xee, 0x65, 0x8d, 0xae, 0x54, 0xa3, + 0xd5, 0x92, 0xc7, 0x96, 0xc8, 0x4f, 0xf0, 0x62, 0x26, 0xa2, 0xd8, 0xc4, 0x73, 0xb3, 0xac, 0x1d, + 0x30, 0x45, 0xe6, 0xbe, 0xa0, 0x2f, 0x01, 0x8d, 0x07, 0x33, 0x12, 0x0b, 0xd0, 0xf8, 0x68, 0x63, + 0x6d, 0xad, 0x16, 0x25, 0xf7, 0x52, 0xa5, 0x3f, 0xc5, 0x59, 0x28, 0x77, 0x23, 0xe4, 0x73, 0xce, + 0xc2, 0x15, 0xe4, 0x57, 0xe1, 0x19, 0x2c, 0xb5, 0xaa, 0x0d, 0x47, 0x02, 0xe6, 0x30, 0x26, 0xdb, + 0x43, 0x2f, 0xf9, 0x3a, 0x8a, 0xfc, 0x05, 0x4c, 0x42, 0xcf, 0xf0, 0xda, 0x08, 0x93, 0x86, 0x9c, + 0x4b, 0x9f, 0x04, 0x91, 0x4c, 0xbc, 0xef, 0x74, 0x72, 0x47, 0x33, 0xbd, 0xf2, 0x79, 0xba, 0x30, 0x2e, 0x4f, 0x98, 0x3a, 0x3c, 0xde, 0x41, 0x8d, 0x78, 0x7f, 0x54, 0x9e, 0x06, 0xd1, 0x41, 0x6c, - 0x17, 0x0a, 0x3a, 0x16, 0x1a, 0x02, 0x66, 0xe5, 0x79, 0x3c, 0xf4, 0x22, 0x1a, 0x4f, 0x2e, 0x1b, - 0xe1, 0xcd, 0x1e, 0xd5, 0x95, 0x87, 0x24, 0x5a, 0x26, 0x4f, 0xb6, 0x63, 0x21, 0x7c, 0xc7, 0xdf, - 0x17, 0x54, 0x5a, 0x2f, 0xbe, 0x86, 0xc6, 0x47, 0xdf, 0x09, 0xbf, 0x57, 0xfd, 0x1e, 0x75, 0x23, - 0xc0, 0x3a, 0x3b, 0x5a, 0x26, 0x17, 0x91, 0xee, 0x7d, 0xbb, 0x52, 0xc7, 0xb7, 0x11, 0xba, 0xf8, - 0xab, 0x03, 0xa9, 0x93, 0xf1, 0x85, 0x54, 0xcf, 0xd0, 0x0e, 0xbf, 0x8b, 0x54, 0xda, 0x87, 0xe7, - 0x44, 0x79, 0x98, 0xf1, 0x01, 0xcc, 0xd0, 0x99, 0x90, 0x88, 0x65, 0x64, 0xbb, 0x40, 0x68, 0x41, - 0x67, 0x55, 0xf8, 0xdf, 0x65, 0xa1, 0x29, 0xac, 0xfb, 0x83, 0x01, 0x32, 0xbf, 0xb2, 0x31, 0x5b, - 0xde, 0x37, 0xc5, 0x53, 0x60, 0x41, 0x1e, 0x22, 0x4e, 0x60, 0x41, 0x3d, 0x85, 0x9c, 0x5b, 0x20, - 0x3f, 0x62, 0xdb, 0xb4, 0x31, 0x01, 0x07, 0xe5, 0xed, 0x8f, 0x0b, 0x48, 0x24, 0xc3, 0xf1, 0x17, - 0xfc, 0xd6, 0x6e, 0x4f, 0xe9, 0xab, 0xba, 0xf2, 0x0a, 0x5a, 0x2e, 0x79, 0x8c, 0x2c, 0xff, 0x3c, - 0xd3, 0x71, 0x9b, 0xd0, 0x01, 0x2b, 0xe6, 0x0e, 0x3d, 0x95, 0x85, 0xa6, 0xdb, 0x06, 0x7a, 0x30, - 0x0e, 0x7e, 0xb5, 0x0d, 0x57, 0x16, 0x78, 0x1d, 0x3c, 0x16, 0x2a, 0x8d, 0xf5, 0xf0, 0xfd, 0xba, - 0xf2, 0x3b, 0xf4, 0x5b, 0xc9, 0x6b, 0x2b, 0xe4, 0x92, 0x74, 0xdb, 0x78, 0x63, 0x97, 0xa1, 0x29, - 0x0b, 0x30, 0x26, 0x28, 0x2a, 0xc5, 0x37, 0x51, 0x3e, 0x75, 0x46, 0xe1, 0x64, 0x3c, 0x18, 0x11, - 0xd8, 0x2a, 0xe4, 0xc7, 0x92, 0x3d, 0x71, 0xe3, 0xe3, 0xbd, 0xf0, 0x49, 0xa3, 0xf7, 0x50, 0xea, - 0xcb, 0xd3, 0x89, 0xfe, 0xaf, 0x99, 0x79, 0x23, 0x51, 0x6f, 0xda, 0xfa, 0x88, 0xbf, 0x40, 0xd9, - 0xe5, 0xd5, 0xeb, 0xf0, 0x49, 0x4c, 0x82, 0xed, 0x34, 0x7f, 0xcb, 0x53, 0x60, 0x0d, 0xe5, 0xd5, - 0xeb, 0x68, 0x96, 0xf8, 0xf2, 0xea, 0x75, 0xe2, 0x22, 0x94, 0x5d, 0xaf, 0xd5, 0x93, 0x9c, 0xef, - 0x38, 0x22, 0xad, 0xf9, 0x9b, 0x62, 0x55, 0x63, 0x57, 0xb3, 0xd1, 0x7b, 0x98, 0xb6, 0xaf, 0xd7, - 0xea, 0xc5, 0x67, 0x51, 0xf6, 0x8a, 0xea, 0x75, 0x78, 0xeb, 0x27, 0x81, 0xb6, 0xc5, 0xfc, 0x2d, - 0xcf, 0x83, 0xf6, 0x2b, 0xe8, 0xe0, 0xfc, 0x0c, 0x97, 0xa8, 0x66, 0x93, 0xc2, 0x81, 0x89, 0x28, - 0x8f, 0x6e, 0xaf, 0xf8, 0x06, 0xca, 0x33, 0xf1, 0xeb, 0x6a, 0x2b, 0x60, 0xea, 0x4b, 0xba, 0xf2, - 0xbc, 0xc4, 0x0a, 0xe5, 0xc5, 0x3c, 0xad, 0x5e, 0xec, 0x4b, 0x1e, 0xeb, 0x4a, 0xc4, 0x3f, 0x62, - 0xaa, 0x52, 0x3e, 0xd1, 0x1b, 0x61, 0xcf, 0x59, 0x57, 0xf1, 0x5d, 0x18, 0x1b, 0x6f, 0x6c, 0x96, - 0x65, 0xaa, 0xc1, 0x0a, 0xe5, 0x97, 0x09, 0x61, 0x47, 0x2c, 0x8a, 0x49, 0x36, 0x34, 0x6c, 0xfd, - 0x46, 0x86, 0xd4, 0xdb, 0xaa, 0x2a, 0xca, 0xe1, 0xef, 0x85, 0xe5, 0xeb, 0x57, 0x2d, 0xae, 0xaa, - 0x28, 0x2f, 0x2a, 0x36, 0x3a, 0xfb, 0xc8, 0x7e, 0xb3, 0xa1, 0xc4, 0x67, 0x51, 0x2e, 0x26, 0x49, - 0x28, 0x1d, 0x86, 0xaf, 0x1c, 0x29, 0x92, 0xa7, 0x93, 0xbb, 0x16, 0xdf, 0x47, 0xcf, 0xa7, 0xaa, - 0x42, 0x25, 0x95, 0xe2, 0x73, 0x16, 0x1e, 0xe0, 0x4c, 0xe7, 0x19, 0x1e, 0x98, 0xc6, 0xe3, 0x81, - 0x44, 0xff, 0x40, 0x55, 0xb5, 0xf5, 0x82, 0x2c, 0xe7, 0xa9, 0xb5, 0x71, 0x54, 0x59, 0xff, 0x38, - 0x4f, 0xad, 0x15, 0x38, 0xe8, 0xb4, 0x72, 0x2f, 0x3a, 0x6d, 0x29, 0x24, 0xa6, 0xcf, 0xb5, 0x3e, - 0x6f, 0xfe, 0x96, 0x67, 0x3a, 0xfa, 0xae, 0xaf, 0x2e, 0xf7, 0x55, 0x55, 0x40, 0xe6, 0xfa, 0x37, - 0x99, 0xbd, 0xff, 0x78, 0x4b, 0x2c, 0x49, 0xed, 0xfd, 0x9f, 0xe6, 0x3b, 0x1a, 0x6d, 0x71, 0xe3, - 0xd8, 0x31, 0xcb, 0xc6, 0xeb, 0xd2, 0x65, 0xe3, 0xa2, 0x09, 0x2e, 0xc9, 0x8b, 0x5f, 0x19, 0x3d, - 0xdf, 0x98, 0xf7, 0x63, 0xcf, 0x71, 0xe3, 0xe2, 0xc7, 0xa9, 0xde, 0x56, 0xe6, 0x13, 0xb0, 0x06, - 0xe5, 0x05, 0xb4, 0x2d, 0x41, 0x73, 0x9b, 0x88, 0xd1, 0xfc, 0x93, 0xba, 0xb2, 0x44, 0x62, 0x85, - 0xf2, 0x63, 0xe5, 0x0a, 0xcb, 0xd4, 0x37, 0x7c, 0xee, 0x7b, 0xe3, 0xe4, 0xee, 0xaa, 0x0a, 0xa3, - 0xf3, 0x22, 0x0e, 0xea, 0x60, 0x41, 0x03, 0x6b, 0x2f, 0x7e, 0x6b, 0x91, 0xf9, 0x60, 0x28, 0xff, - 0x91, 0xa0, 0x2b, 0x87, 0x04, 0x46, 0xe7, 0xb7, 0x09, 0x3c, 0x89, 0x0f, 0x37, 0xd7, 0x41, 0xe8, - 0xfb, 0x20, 0x63, 0x55, 0xa2, 0xbf, 0xd7, 0x32, 0x1e, 0xf6, 0x81, 0x5d, 0x5a, 0xa2, 0xbf, 0xb7, - 0xd8, 0x07, 0xc6, 0xbd, 0x66, 0x21, 0xf1, 0xe8, 0x33, 0x0b, 0x39, 0x32, 0x9e, 0xf4, 0x07, 0xca, - 0x8c, 0x36, 0xe7, 0x2a, 0xf7, 0xb2, 0xca, 0x22, 0x46, 0xe1, 0x1f, 0x16, 0xd0, 0x64, 0xba, 0x4c, - 0x12, 0x90, 0x0d, 0xa5, 0x27, 0x0b, 0x49, 0x8e, 0x41, 0x6c, 0x21, 0xe2, 0xe8, 0x46, 0x6f, 0x3a, - 0x6f, 0xcb, 0xcb, 0x8c, 0x66, 0x92, 0x87, 0xfb, 0x00, 0xb9, 0x5c, 0x6d, 0xda, 0x56, 0x5e, 0xbd, - 0xee, 0x6a, 0xd3, 0xb6, 0x55, 0x95, 0xab, 0xae, 0x36, 0x6d, 0x5b, 0x51, 0xbd, 0x2e, 0xd5, 0xdb, - 0x4a, 0x60, 0xde, 0x31, 0xa0, 0xd8, 0x26, 0xa0, 0xbc, 0x0f, 0xc2, 0x21, 0xf0, 0x94, 0x9b, 0xe8, - 0x8d, 0x7f, 0xdf, 0x20, 0xf5, 0xe0, 0x15, 0xc6, 0x9a, 0xcb, 0x2b, 0x98, 0xac, 0x02, 0x12, 0x0e, - 0x5a, 0x98, 0x02, 0x87, 0xff, 0x31, 0xdb, 0x99, 0xf0, 0x7b, 0x6d, 0xb0, 0x0d, 0x77, 0xa9, 0x58, - 0xe8, 0x6f, 0x28, 0x89, 0xbe, 0xa3, 0x85, 0x3e, 0x78, 0x47, 0x0b, 0x95, 0x3c, 0xe5, 0x5b, 0xec, - 0x7b, 0xf2, 0x99, 0x25, 0x4b, 0x96, 0x3c, 0x55, 0xa4, 0xb2, 0x21, 0xc5, 0x66, 0x01, 0x8d, 0xc3, - 0xec, 0x0c, 0x36, 0xc4, 0x9f, 0x28, 0x3f, 0xe4, 0xb5, 0x41, 0x98, 0xc9, 0x81, 0xfd, 0x81, 0xc6, - 0xf2, 0x2b, 0x8e, 0x1b, 0xce, 0x5a, 0xf9, 0xaa, 0x2a, 0xec, 0x97, 0x69, 0x61, 0x62, 0xa0, 0xb9, - 0x5c, 0x21, 0x13, 0x1f, 0xd2, 0x71, 0x90, 0xb4, 0x0e, 0xc6, 0x39, 0x15, 0xa9, 0x30, 0xa0, 0xb8, - 0x93, 0x58, 0x19, 0xd2, 0xd4, 0x65, 0x38, 0xa4, 0xd2, 0x44, 0x79, 0x9e, 0xd7, 0x74, 0x68, 0x9b, - 0x32, 0x93, 0xd9, 0x91, 0x6c, 0xdd, 0x18, 0xd6, 0xa3, 0x9a, 0x2b, 0x3e, 0x39, 0x1a, 0x17, 0xdc, - 0x84, 0xc3, 0xfc, 0x7c, 0xf7, 0xd2, 0xdf, 0xe8, 0xca, 0x7a, 0xb4, 0x56, 0x62, 0x68, 0x56, 0x7e, - 0x85, 0x78, 0x12, 0xb8, 0x5e, 0x2f, 0xa7, 0xe9, 0x54, 0xdf, 0xa5, 0x64, 0xc7, 0x29, 0xa3, 0xb5, - 0x3d, 0xf5, 0x45, 0x5f, 0xb2, 0xe5, 0xa0, 0x71, 0xf2, 0xe0, 0xc8, 0x8e, 0xb3, 0x90, 0x70, 0x12, - 0x14, 0x0b, 0x85, 0xff, 0x40, 0x40, 0x33, 0x56, 0x06, 0xa3, 0x31, 0x9b, 0x91, 0x98, 0xaa, 0xfd, - 0x41, 0x8c, 0xa0, 0x7c, 0x93, 0x0c, 0x5d, 0x4f, 0x6d, 0xd4, 0x04, 0x4b, 0x25, 0x67, 0xab, 0x90, - 0x9f, 0x07, 0xb2, 0x75, 0x0b, 0xd9, 0x12, 0x66, 0x22, 0xf7, 0x4e, 0x38, 0x1a, 0xe3, 0xad, 0xa2, - 0x08, 0x9d, 0x6b, 0x34, 0x9f, 0x1d, 0xd9, 0x71, 0x96, 0x92, 0xba, 0xb6, 0xa1, 0x68, 0x8c, 0x41, - 0xcf, 0x09, 0xc9, 0x05, 0xf0, 0x62, 0xf3, 0x96, 0x6e, 0xc0, 0x16, 0x14, 0xfe, 0xdb, 0x6c, 0x34, - 0xd3, 0xa3, 0xcb, 0xfd, 0xaf, 0x9d, 0xb3, 0x53, 0xba, 0x69, 0xb5, 0x73, 0x10, 0x73, 0x1c, 0xd3, - 0x3b, 0x22, 0xaf, 0x94, 0x23, 0xa2, 0x2e, 0x50, 0xcd, 0x35, 0x09, 0xe9, 0x94, 0x66, 0x0b, 0x32, - 0x2b, 0xcd, 0x88, 0x6d, 0xa1, 0x53, 0x65, 0xf6, 0x08, 0xaf, 0x32, 0x03, 0xe7, 0xaa, 0x31, 0x86, - 0x26, 0xf6, 0x3e, 0x0b, 0x79, 0x41, 0xba, 0xf3, 0x1b, 0x45, 0x97, 0xf6, 0x1f, 0xc8, 0xe9, 0x56, - 0x93, 0xb8, 0xf9, 0xd6, 0x15, 0x7d, 0x91, 0x77, 0x0b, 0x13, 0xe8, 0x6b, 0x97, 0xce, 0x2d, 0x2c, - 0x27, 0x92, 0x55, 0x10, 0xe0, 0xbd, 0xc2, 0x5e, 0x62, 0x6f, 0x1e, 0x9c, 0xf5, 0xcf, 0x47, 0x0d, - 0x76, 0x08, 0x43, 0xd0, 0x67, 0xed, 0x9e, 0xa4, 0xcf, 0xea, 0x10, 0x38, 0x33, 0x0e, 0x20, 0x30, - 0xb0, 0xe5, 0xb9, 0x65, 0xc6, 0x51, 0xcb, 0xcc, 0x38, 0x16, 0x26, 0x06, 0x8f, 0x1b, 0x9d, 0xdb, - 0x93, 0x87, 0x2e, 0x00, 0x95, 0x3c, 0xdc, 0x77, 0x8a, 0xc4, 0x14, 0xc2, 0x56, 0x44, 0x56, 0x72, - 0x03, 0x7c, 0x9c, 0x04, 0x0f, 0x61, 0x0b, 0xa6, 0xe3, 0xe0, 0xc2, 0x0b, 0xdd, 0xf8, 0xb3, 0x82, - 0x46, 0x45, 0x9c, 0x5d, 0x08, 0x11, 0xed, 0x78, 0x1f, 0x91, 0xfc, 0x18, 0x51, 0xc0, 0xe3, 0xf4, - 0x09, 0x70, 0x16, 0x89, 0xfe, 0xbd, 0x96, 0x0a, 0x18, 0x00, 0x78, 0x77, 0x2e, 0x9a, 0xe5, 0xd5, - 0xff, 0xc7, 0x05, 0xc1, 0x83, 0x02, 0x9a, 0x4a, 0xfa, 0x5b, 0x86, 0xda, 0xb9, 0x78, 0xe0, 0x17, - 0x9c, 0x03, 0x7b, 0xef, 0x16, 0xfd, 0x9e, 0xc3, 0x6a, 0x5b, 0xd5, 0x95, 0x35, 0x92, 0x6b, 0x68, - 0xf9, 0x79, 0x5e, 0x0d, 0x6f, 0x33, 0x61, 0x26, 0x4d, 0xf1, 0x5a, 0x77, 0x26, 0x2e, 0xed, 0x05, - 0xef, 0x30, 0x90, 0xa0, 0xc0, 0x81, 0xaa, 0xae, 0xe1, 0x70, 0xee, 0x6d, 0x27, 0x02, 0xca, 0x1b, - 0xa3, 0xd6, 0xfe, 0x76, 0xa1, 0xa0, 0x39, 0xbf, 0x43, 0x33, 0x3d, 0xf7, 0xc0, 0x43, 0x8d, 0xba, - 0xd8, 0xae, 0x46, 0x7d, 0xc8, 0xd3, 0x96, 0x01, 0xf3, 0x8c, 0x9c, 0x16, 0xf5, 0x77, 0xba, 0xf2, - 0x26, 0xfa, 0x8d, 0x94, 0xe6, 0xb6, 0xca, 0x4f, 0x00, 0x8e, 0x73, 0x5c, 0xf7, 0x1b, 0x40, 0x76, - 0x6d, 0x53, 0xd1, 0x64, 0x8c, 0x3e, 0x2d, 0x2c, 0xb7, 0xc2, 0xcb, 0x85, 0xf8, 0xf1, 0xd1, 0x82, - 0xd1, 0x02, 0xaa, 0xba, 0xf7, 0xe9, 0xfe, 0x5e, 0x72, 0x38, 0x12, 0xdf, 0x28, 0x92, 0xbd, 0x13, - 0xb9, 0xfd, 0x5e, 0x74, 0xbb, 0x13, 0xdf, 0xc8, 0xbb, 0x51, 0xe1, 0xe1, 0x4d, 0xfc, 0xd8, 0x28, - 0xde, 0xc4, 0x30, 0xc8, 0x9d, 0x71, 0x26, 0x8e, 0x69, 0xd1, 0xd8, 0x5d, 0x73, 0x26, 0xbe, 0xed, - 0xf9, 0xf9, 0x7e, 0x72, 0x18, 0xbe, 0x4d, 0x0e, 0xc3, 0xff, 0xc8, 0x62, 0x8a, 0x21, 0xf0, 0xeb, - 0xb9, 0xbb, 0xe9, 0x47, 0x5b, 0x16, 0x59, 0x96, 0xd9, 0x8f, 0x36, 0x17, 0x06, 0x19, 0x8b, 0x1b, - 0xed, 0xf3, 0x28, 0x37, 0xbc, 0x71, 0x63, 0x54, 0x8b, 0x61, 0xa7, 0xe2, 0x49, 0x20, 0x49, 0x25, - 0x45, 0xf2, 0x14, 0x42, 0x46, 0x6e, 0xeb, 0x4c, 0x9d, 0x19, 0x18, 0xd9, 0xdd, 0x79, 0xbd, 0x2c, - 0x47, 0xca, 0x5a, 0xf8, 0x33, 0x95, 0xd4, 0x8b, 0x2f, 0xa0, 0x71, 0x75, 0xc1, 0xfa, 0x60, 0x0c, - 0x3b, 0x13, 0x63, 0x51, 0xd6, 0x5c, 0x09, 0x4a, 0x98, 0x05, 0x17, 0x8e, 0x47, 0x95, 0x3c, 0x70, - 0x1e, 0xf7, 0x1e, 0x27, 0x65, 0x17, 0x0c, 0x8f, 0x57, 0xa1, 0x89, 0x9d, 0xbc, 0x9a, 0x7a, 0xef, - 0xc9, 0x2b, 0xb1, 0x92, 0xf3, 0x3b, 0x9d, 0x86, 0xe7, 0x53, 0xa4, 0x2b, 0x0f, 0x73, 0x7e, 0xa7, - 0xd3, 0x49, 0xa4, 0xf7, 0xe1, 0xcb, 0xbb, 0x93, 0x03, 0x24, 0xf8, 0x05, 0xc5, 0x37, 0x96, 0x9f, - 0xe9, 0xbd, 0x8a, 0xa0, 0xea, 0x91, 0xe1, 0x7e, 0xfa, 0x6d, 0xce, 0x70, 0x6f, 0xb3, 0x87, 0x9e, - 0x31, 0x66, 0x7b, 0xe8, 0xd2, 0x13, 0x82, 0xae, 0x1c, 0x15, 0x50, 0xb7, 0x20, 0x39, 0x5e, 0x5c, - 0x79, 0xb7, 0x60, 0xb4, 0x7c, 0x66, 0x1e, 0xe5, 0xd1, 0x13, 0x89, 0x81, 0x0b, 0xfc, 0xc6, 0x92, - 0x37, 0x9c, 0xfa, 0x05, 0x90, 0xd7, 0x1e, 0x37, 0x4b, 0xf4, 0xc7, 0x95, 0x50, 0xc0, 0x68, 0xfe, - 0x26, 0xf5, 0xcd, 0x80, 0x15, 0x34, 0xe5, 0x58, 0xd7, 0xc8, 0x89, 0x4b, 0x7c, 0x33, 0xa3, 0x69, - 0x10, 0x58, 0x7c, 0xb3, 0x4d, 0xcb, 0x11, 0xe3, 0xf2, 0x50, 0xea, 0xc0, 0x29, 0x12, 0x8d, 0x69, - 0xff, 0xd9, 0x64, 0xef, 0x49, 0xfe, 0xa3, 0x85, 0xff, 0x71, 0x1c, 0x9a, 0x62, 0x9b, 0xdc, 0x8f, - 0x8b, 0x22, 0xfe, 0x2e, 0x3d, 0x45, 0xfc, 0x4b, 0x2f, 0x8a, 0xf8, 0x7e, 0x21, 0x85, 0x9b, 0xd2, - 0x92, 0xc2, 0x77, 0x8b, 0x17, 0xbf, 0xe3, 0x84, 0x30, 0x71, 0x07, 0x70, 0xde, 0x4e, 0x2a, 0xa5, - 0xb9, 0x01, 0x92, 0xf7, 0x50, 0x36, 0xe7, 0x98, 0x2a, 0x36, 0x0b, 0x08, 0xd5, 0xfa, 0x43, 0x10, - 0xdd, 0x27, 0x40, 0xa4, 0x4e, 0xf8, 0x59, 0xe5, 0x8a, 0xe5, 0xb5, 0xfc, 0xf8, 0xd6, 0x56, 0x40, - 0xaa, 0x9d, 0x1d, 0x43, 0xc6, 0xc9, 0x63, 0x20, 0xb5, 0x5d, 0x48, 0x63, 0x07, 0x1c, 0x87, 0xbd, - 0x0b, 0x85, 0x03, 0x9a, 0xe5, 0x18, 0xda, 0xda, 0x6e, 0x34, 0x6f, 0x1b, 0x3e, 0xd7, 0x0f, 0x6d, - 0x8b, 0x54, 0xee, 0x0b, 0x2e, 0x6b, 0xdd, 0xac, 0x3b, 0x64, 0xad, 0x2b, 0x1e, 0x16, 0xd0, 0x04, - 0x7f, 0x63, 0x2c, 0x5c, 0x53, 0xeb, 0xaf, 0xd3, 0x08, 0x98, 0x7d, 0xa0, 0x2b, 0xef, 0x49, 0x56, - 0xa9, 0xfc, 0xae, 0xcd, 0xf3, 0x11, 0xab, 0x35, 0x8c, 0xc1, 0x4b, 0xc9, 0xa6, 0x33, 0x89, 0xc1, - 0xfe, 0xd4, 0xe0, 0x67, 0xc5, 0x3e, 0xa3, 0xe7, 0xac, 0x49, 0xa9, 0xbb, 0x6a, 0xcc, 0x99, 0xb4, - 0xb6, 0x9b, 0x04, 0x7d, 0xff, 0x5e, 0xaa, 0x6c, 0x81, 0x49, 0x91, 0x11, 0x5d, 0x3d, 0x54, 0xeb, - 0xb3, 0x85, 0x27, 0x05, 0x34, 0xd9, 0x7e, 0x3f, 0xc5, 0x97, 0xd1, 0xb8, 0x06, 0x2d, 0x52, 0x4f, - 0xd5, 0xf8, 0x45, 0x99, 0xaf, 0xf3, 0xa2, 0x6a, 0xb3, 0x2d, 0xbe, 0x77, 0x2a, 0xf4, 0x9b, 0xf3, - 0x1a, 0x42, 0x56, 0xa1, 0xc7, 0x65, 0x2c, 0xb1, 0x5f, 0xc6, 0x74, 0xf1, 0x79, 0xf9, 0xdc, 0x6d, - 0x6f, 0xa2, 0xa9, 0x4e, 0x86, 0x52, 0x5c, 0x61, 0xcd, 0x33, 0x63, 0x98, 0x5f, 0xfc, 0x52, 0x40, - 0x53, 0x39, 0x9f, 0x7f, 0xa8, 0xc9, 0x7c, 0x0b, 0x3b, 0xc6, 0xa3, 0x87, 0xcc, 0x3b, 0x8e, 0x2d, - 0x66, 0xab, 0x38, 0x79, 0x24, 0x31, 0xb4, 0x73, 0xf9, 0xe2, 0x3c, 0x92, 0xde, 0x19, 0x82, 0x3a, - 0xd5, 0x70, 0xaa, 0x9a, 0x5b, 0x95, 0x41, 0x31, 0xf6, 0x28, 0xfb, 0xf6, 0xb1, 0x47, 0x2b, 0xed, - 0x86, 0x48, 0x39, 0xd4, 0xa2, 0xd6, 0x67, 0x37, 0x44, 0x9a, 0x06, 0x20, 0xb5, 0xda, 0x2a, 0x62, - 0x5c, 0x27, 0x6f, 0x82, 0xb4, 0xdc, 0xa1, 0x12, 0x05, 0x3e, 0x0e, 0x07, 0x8c, 0xb0, 0xab, 0x44, - 0xa7, 0x80, 0xd6, 0x82, 0x29, 0x43, 0x1d, 0xda, 0xcf, 0xed, 0x16, 0x79, 0x0b, 0x2c, 0xdb, 0xbb, - 0xba, 0xb2, 0x89, 0x51, 0xb7, 0x6f, 0xf1, 0x0a, 0x9f, 0x1b, 0xa6, 0x6e, 0xab, 0x46, 0x21, 0x6f, - 0x3d, 0x28, 0xd3, 0xf1, 0xb7, 0x40, 0x99, 0xe6, 0xdd, 0x0c, 0x65, 0xca, 0x99, 0x97, 0x4c, 0xb8, - 0x4d, 0xe6, 0x25, 0x5f, 0x0b, 0xba, 0x72, 0x4e, 0x40, 0x5f, 0x08, 0x52, 0xfa, 0x2b, 0x8e, 0x83, - 0xcf, 0x78, 0x13, 0x43, 0xe4, 0x8b, 0x77, 0x99, 0x24, 0xfa, 0xdb, 0x6c, 0x34, 0xc7, 0x6b, 0xb6, - 0x0f, 0x9a, 0x89, 0x43, 0xb6, 0x97, 0xdb, 0x2b, 0x4d, 0x56, 0x1e, 0x0e, 0x68, 0x1e, 0x14, 0x12, - 0xbf, 0xe1, 0x84, 0x42, 0xaa, 0xbf, 0x79, 0x4f, 0x47, 0x0c, 0x82, 0x2e, 0x52, 0xc3, 0x8e, 0x04, - 0x9d, 0x12, 0x7e, 0xa2, 0x88, 0xca, 0x70, 0x00, 0x54, 0xcc, 0xef, 0x71, 0x45, 0x32, 0x93, 0x01, - 0xbb, 0xa7, 0xa3, 0x89, 0xdc, 0xf2, 0x39, 0x0d, 0xbc, 0x70, 0xf3, 0x1a, 0xf8, 0xac, 0x1b, 0xd4, - 0xc0, 0x3b, 0xed, 0x37, 0xb2, 0xef, 0x80, 0xfd, 0x46, 0xce, 0x8d, 0xd8, 0x6f, 0x8c, 0xbb, 0x41, - 0xfb, 0x8d, 0xdc, 0x1b, 0xb6, 0xdf, 0x10, 0x3b, 0x2d, 0xc4, 0x0a, 0xb2, 0xac, 0xf7, 0x74, 0x25, - 0xc6, 0x10, 0xeb, 0xbb, 0x6e, 0x4d, 0xfa, 0xb5, 0xc1, 0x16, 0x70, 0x4c, 0xe6, 0xe9, 0x06, 0xe3, - 0x5c, 0x77, 0xe2, 0x52, 0x6b, 0xaa, 0x7b, 0x27, 0xa4, 0xd3, 0x24, 0x88, 0x96, 0xd3, 0xa3, 0x17, - 0xfb, 0x28, 0x1e, 0x2e, 0xf6, 0x99, 0x18, 0xb7, 0xb2, 0xa2, 0xd8, 0xe7, 0x10, 0x05, 0x50, 0x2c, - 0xab, 0xa0, 0x5c, 0xd0, 0x14, 0x13, 0xa9, 0x18, 0xc4, 0xc0, 0x34, 0x8b, 0xe4, 0x05, 0x0e, 0x5d, - 0xb3, 0x73, 0xc7, 0x49, 0x47, 0xf1, 0x4f, 0xf6, 0x37, 0x0c, 0x24, 0x60, 0x6f, 0xe8, 0xca, 0xaf, - 0xed, 0x6f, 0xd8, 0xed, 0x53, 0x18, 0x3b, 0xde, 0x3c, 0x8e, 0x2c, 0x40, 0xb7, 0x6c, 0xc8, 0x31, - 0xf1, 0xa6, 0x0c, 0x39, 0xf2, 0x6f, 0xbf, 0x21, 0xc7, 0x6a, 0x94, 0xdb, 0xe0, 0x8f, 0x46, 0xdf, - 0x0b, 0x10, 0x09, 0x13, 0x0e, 0x4c, 0x43, 0x8a, 0xe4, 0x22, 0x1a, 0xd8, 0xf7, 0xa8, 0x71, 0x66, - 0xaf, 0xd1, 0x76, 0x10, 0x9e, 0xa2, 0x62, 0x1f, 0x89, 0xeb, 0x83, 0x43, 0x8d, 0x0d, 0x9f, 0xf9, - 0xd4, 0xe8, 0xdb, 0xa5, 0x92, 0x2e, 0xe2, 0x5b, 0x08, 0x9f, 0x2a, 0x11, 0xf3, 0x54, 0xe9, 0xca, - 0x72, 0x89, 0x1c, 0xa0, 0xfc, 0x82, 0xe3, 0xa0, 0x41, 0xfe, 0xcc, 0x1d, 0xc8, 0xf3, 0x3e, 0x2b, - 0xce, 0x19, 0xd6, 0x78, 0x03, 0xed, 0x9d, 0x88, 0x77, 0x94, 0x2b, 0x2a, 0x1e, 0x56, 0x54, 0x38, - 0xbb, 0x93, 0x29, 0x54, 0x6c, 0x5e, 0xc8, 0xd9, 0x9d, 0xcc, 0xf2, 0xb6, 0x3b, 0xe1, 0x2c, 0x4d, - 0x7e, 0xcf, 0x82, 0xf0, 0x4d, 0xc5, 0x18, 0xfb, 0x89, 0x0c, 0x18, 0x3b, 0x43, 0x1e, 0x67, 0xb2, - 0xef, 0x38, 0x83, 0x33, 0x81, 0x5a, 0x1a, 0x42, 0xef, 0x15, 0x94, 0x1b, 0xf3, 0x07, 0x43, 0x31, - 0x1a, 0x2f, 0x6e, 0xa6, 0xdb, 0x0d, 0x38, 0x18, 0x8a, 0x91, 0xb7, 0x05, 0x5a, 0xca, 0xf9, 0x36, - 0x63, 0x37, 0x52, 0x2a, 0xfe, 0x05, 0x4d, 0x6a, 0x0c, 0xd5, 0xd4, 0xbe, 0xa3, 0x05, 0x1a, 0xeb, - 0xfc, 0x1b, 0xea, 0x34, 0x2c, 0xe2, 0x99, 0x54, 0xf6, 0xba, 0xae, 0xac, 0x93, 0xec, 0x35, 0x72, - 0x05, 0x6f, 0xa7, 0xcf, 0x44, 0x9e, 0x46, 0xd3, 0xe0, 0x12, 0x90, 0x88, 0x1a, 0x9d, 0xdb, 0x13, - 0xfd, 0x1d, 0xd0, 0xe8, 0xda, 0x60, 0xdb, 0x52, 0x2a, 0x45, 0x6d, 0xe7, 0x2b, 0x54, 0xfb, 0xa0, - 0x62, 0x05, 0x67, 0xfb, 0x35, 0xdd, 0xba, 0xf4, 0x96, 0xed, 0xd7, 0x43, 0x36, 0xdb, 0xaf, 0xcd, - 0xcf, 0x46, 0x7d, 0x66, 0x55, 0xc8, 0x5f, 0xaf, 0x71, 0x56, 0x5e, 0xaf, 0xa2, 0x71, 0xfe, 0x4d, - 0x5a, 0x28, 0x86, 0x45, 0x39, 0x93, 0x20, 0xff, 0x21, 0x94, 0x50, 0x1a, 0x47, 0x31, 0x7f, 0xf8, - 0xd8, 0xdc, 0x97, 0x1a, 0x3d, 0x67, 0x53, 0xf1, 0xcb, 0xd7, 0x06, 0xdb, 0x96, 0x98, 0x13, 0xc4, - 0x3f, 0x54, 0xe8, 0x21, 0x16, 0xa2, 0xec, 0x60, 0xa0, 0x96, 0x24, 0xb1, 0x99, 0xaa, 0x2b, 0x93, - 0x24, 0xf3, 0xb7, 0x9c, 0x9b, 0xec, 0x89, 0x27, 0x5b, 0x2e, 0xab, 0xe6, 0x0f, 0xf1, 0x71, 0x94, - 0x13, 0xf1, 0xd7, 0x6e, 0x26, 0xc9, 0x69, 0xa6, 0xe9, 0xca, 0x64, 0x09, 0x17, 0x40, 0xab, 0x8f, - 0x2f, 0xa8, 0xf8, 0x97, 0x58, 0x8a, 0x26, 0xc2, 0xad, 0x28, 0xaf, 0xf3, 0x47, 0xa3, 0x24, 0x6b, - 0x3d, 0x66, 0x1f, 0xf8, 0x72, 0xdc, 0xc9, 0xf8, 0x78, 0xaf, 0xca, 0x17, 0x8a, 0x2f, 0xa1, 0x09, - 0xe4, 0x85, 0xd9, 0xf2, 0x34, 0x8e, 0xc1, 0x45, 0x9e, 0x33, 0xab, 0x54, 0x9e, 0x0a, 0x6b, 0x0b, - 0x36, 0x6c, 0x79, 0xda, 0xa4, 0xf4, 0x8f, 0x36, 0xa9, 0x56, 0xa5, 0x58, 0x85, 0x26, 0x31, 0xf4, - 0x82, 0xb7, 0xf7, 0x21, 0x6a, 0x61, 0xea, 0x93, 0xec, 0x35, 0xf4, 0x35, 0x49, 0x7e, 0x75, 0x9c, - 0xd8, 0xcf, 0xd9, 0xeb, 0xc5, 0xe7, 0xd0, 0x84, 0x0d, 0x9b, 0xcb, 0x49, 0x8a, 0xc9, 0x39, 0x78, - 0x8b, 0xe7, 0xea, 0x4a, 0x81, 0x64, 0x95, 0xca, 0x13, 0x71, 0xe6, 0x2e, 0x13, 0x39, 0x98, 0xd8, - 0x88, 0x95, 0x8b, 0x31, 0x7b, 0xc6, 0xf1, 0xb9, 0x69, 0x7c, 0x21, 0x39, 0x80, 0x18, 0x4b, 0xbe, - 0x71, 0x32, 0x5f, 0x9c, 0x69, 0x9c, 0x5c, 0x68, 0x5b, 0xbe, 0xf1, 0xe5, 0x60, 0x98, 0x84, 0x97, - 0x3d, 0xcf, 0x72, 0xee, 0x63, 0x85, 0xf2, 0x5c, 0x9b, 0x85, 0x1f, 0xc5, 0x17, 0xd4, 0x7a, 0x90, - 0x36, 0x13, 0xdf, 0x35, 0xe1, 0x2c, 0xba, 0x99, 0x85, 0x79, 0xc2, 0x92, 0x20, 0x52, 0x24, 0x57, - 0x3a, 0x30, 0x6a, 0xb2, 0xf5, 0x33, 0xe3, 0xdc, 0xa5, 0xaa, 0xea, 0x62, 0x66, 0x52, 0x35, 0xa2, - 0xb7, 0x18, 0x7d, 0x97, 0x20, 0xa4, 0x3d, 0xf9, 0x14, 0x26, 0xa7, 0x49, 0x8c, 0x75, 0x6c, 0x82, - 0xa3, 0x92, 0xe1, 0xee, 0x61, 0x22, 0x73, 0x6a, 0x32, 0xce, 0x93, 0x52, 0x72, 0x09, 0x6f, 0x2d, - 0xc4, 0xe8, 0x00, 0x40, 0x96, 0x3c, 0x85, 0x06, 0x2b, 0x2a, 0xfc, 0x28, 0x0b, 0xcd, 0x35, 0x09, - 0xbc, 0x55, 0x38, 0x5e, 0xdf, 0xed, 0x67, 0x7a, 0x4b, 0xe3, 0x82, 0xae, 0x5c, 0x10, 0xd0, 0x37, - 0x82, 0x94, 0xe9, 0x3b, 0xf2, 0x87, 0x69, 0x39, 0x0f, 0x88, 0x24, 0x78, 0x6f, 0xf8, 0x8f, 0xff, - 0x9c, 0x8d, 0xe6, 0x79, 0xcf, 0xfa, 0xc7, 0xc9, 0x81, 0xdc, 0xdb, 0x58, 0x2b, 0xc4, 0xc4, 0x3b, - 0xe3, 0x89, 0xc8, 0x8f, 0xf1, 0x2c, 0x89, 0xc7, 0xdd, 0xc9, 0xcc, 0x98, 0x74, 0x66, 0xa1, 0xd9, - 0x56, 0x28, 0x80, 0xf2, 0x88, 0x16, 0xd0, 0x42, 0xb1, 0xa0, 0xbf, 0x4e, 0xd5, 0xfe, 0x20, 0x7e, - 0x26, 0xa0, 0x09, 0x51, 0x2d, 0xb2, 0x45, 0x8b, 0xbc, 0x4a, 0x01, 0xb4, 0x6c, 0x8f, 0xa0, 0x2b, - 0x7f, 0x91, 0xac, 0x62, 0xf9, 0x0f, 0x89, 0xfe, 0x3d, 0xc9, 0x3d, 0x84, 0x56, 0x49, 0x75, 0xef, - 0x4c, 0x0d, 0xec, 0x4c, 0x0c, 0x5c, 0x48, 0x75, 0xef, 0xdc, 0xac, 0x6d, 0x35, 0xaf, 0x5c, 0xdf, - 0xa5, 0x44, 0xbc, 0x63, 0x73, 0xe3, 0x06, 0xad, 0x04, 0x3f, 0x5a, 0x90, 0x33, 0x9c, 0x41, 0x0b, - 0x6b, 0x81, 0xa5, 0x87, 0x25, 0x81, 0x48, 0x70, 0x8b, 0x16, 0x21, 0x19, 0x14, 0xc9, 0x2f, 0xe8, - 0x91, 0xec, 0x69, 0xad, 0xaa, 0xa6, 0x39, 0xce, 0x18, 0xd4, 0xb1, 0x69, 0x50, 0x89, 0x6d, 0xba, - 0xb5, 0xc8, 0xf3, 0xf8, 0x5d, 0xb2, 0xaa, 0x58, 0x18, 0x0c, 0x36, 0x52, 0xe1, 0xb5, 0x2c, 0x54, - 0xe0, 0x3d, 0xca, 0xfd, 0xaf, 0x9e, 0x78, 0xcb, 0xe6, 0x63, 0xf0, 0x48, 0x9a, 0xeb, 0x6f, 0xad, - 0xc9, 0x16, 0x79, 0x88, 0x5c, 0xc5, 0x6f, 0xce, 0x1a, 0xbb, 0xda, 0x52, 0xdd, 0x3b, 0x87, 0xfb, - 0xb6, 0x25, 0x2e, 0x9d, 0xb6, 0xb9, 0x1c, 0x90, 0x30, 0x2c, 0x69, 0xb7, 0x27, 0xed, 0x2e, 0x67, - 0xbe, 0x83, 0xff, 0x66, 0x3c, 0x9a, 0x63, 0x0b, 0x27, 0xf4, 0xc0, 0x5e, 0x43, 0xfb, 0xeb, 0x91, - 0x75, 0x13, 0x22, 0xd3, 0x75, 0x28, 0xbf, 0xb6, 0x2e, 0xa8, 0x85, 0x62, 0xab, 0x70, 0x24, 0x47, - 0xc2, 0xa3, 0x2f, 0x35, 0x49, 0x4d, 0x5b, 0x85, 0x3c, 0x13, 0x16, 0x6c, 0x3e, 0xe7, 0x38, 0x04, - 0xa4, 0xd1, 0xd5, 0x6e, 0xf4, 0x1e, 0xb2, 0xc6, 0xb4, 0xb5, 0x16, 0xd7, 0xa3, 0x49, 0x30, 0x49, - 0x25, 0x10, 0x88, 0x68, 0xd1, 0x28, 0x91, 0x7b, 0x2e, 0x31, 0x8f, 0xdf, 0x5e, 0xc3, 0xe4, 0xb2, - 0x10, 0x50, 0x18, 0x53, 0x6b, 0x2c, 0x99, 0xea, 0x54, 0xd5, 0xde, 0x58, 0x5c, 0x81, 0x50, 0xad, - 0xbf, 0x5c, 0x8b, 0xc4, 0x2a, 0xcc, 0x6b, 0x37, 0x8e, 0x26, 0xe0, 0x9e, 0x27, 0x71, 0xc5, 0xf2, - 0x64, 0x72, 0x1f, 0x14, 0x50, 0x2c, 0x91, 0x08, 0x7c, 0x3e, 0x95, 0x6b, 0x23, 0x56, 0xa3, 0x09, - 0x8d, 0x51, 0x2d, 0xb2, 0x36, 0xbc, 0x59, 0x0b, 0x11, 0x11, 0xa8, 0x6c, 0x52, 0x42, 0x56, 0xa9, - 0x3c, 0x87, 0x4f, 0x51, 0x9f, 0xea, 0xde, 0x19, 0x33, 0x4b, 0x6d, 0x69, 0x0f, 0xa7, 0xaa, 0x56, - 0x73, 0x71, 0x35, 0x9a, 0x44, 0xb6, 0xb5, 0x22, 0x5c, 0xef, 0x0f, 0x52, 0xdb, 0x7f, 0x1c, 0x20, - 0xd0, 0x5e, 0xc3, 0xac, 0x8b, 0x8e, 0x1d, 0x33, 0xba, 0xda, 0xd9, 0x58, 0xf6, 0x46, 0xe2, 0x1a, - 0x84, 0x60, 0x4b, 0xcd, 0x39, 0x13, 0xde, 0x7d, 0x31, 0xce, 0x35, 0x6e, 0x15, 0xd3, 0x5c, 0xe3, - 0x56, 0x09, 0x40, 0x11, 0xb7, 0x64, 0x56, 0x23, 0xbe, 0x6a, 0xde, 0x15, 0xf3, 0x97, 0x79, 0xad, - 0x81, 0x87, 0x2f, 0x31, 0x39, 0x38, 0xab, 0x94, 0x06, 0x1b, 0x66, 0x05, 0x8e, 0xd1, 0xac, 0x96, - 0xa5, 0x07, 0x04, 0x5d, 0xd9, 0x27, 0xa0, 0x0e, 0x41, 0xca, 0x00, 0x4a, 0xd4, 0xf5, 0x32, 0x2d, - 0x16, 0xe4, 0x32, 0x47, 0xd9, 0xee, 0xcf, 0x15, 0xc1, 0x7e, 0xee, 0x57, 0x04, 0xee, 0xec, 0xae, - 0x08, 0xd6, 0xae, 0x5f, 0x11, 0xec, 0xbb, 0x56, 0x78, 0x30, 0x0b, 0xcd, 0x4d, 0x3b, 0xa1, 0xfb, - 0x3f, 0x37, 0xbe, 0xc9, 0x5e, 0xa2, 0x1a, 0x29, 0xd3, 0x12, 0xd2, 0x6e, 0x6a, 0x66, 0xa4, 0xd7, - 0x9d, 0x85, 0xe6, 0xd8, 0xb2, 0x7c, 0x3c, 0x40, 0x48, 0x2f, 0xcb, 0xfe, 0xf6, 0x56, 0xeb, 0xca, - 0x2a, 0xf4, 0xaa, 0x94, 0x61, 0x39, 0xf2, 0x23, 0xb6, 0x7c, 0x39, 0x5e, 0x4f, 0x8c, 0xed, 0x0d, - 0xee, 0xc9, 0x42, 0x73, 0xd3, 0x8e, 0x76, 0xff, 0xdf, 0x1a, 0x62, 0x47, 0x99, 0x69, 0x09, 0x72, - 0x21, 0xbf, 0x23, 0x4e, 0x50, 0x1c, 0xe5, 0xee, 0xec, 0x19, 0x87, 0x0a, 0x38, 0xd5, 0xb4, 0xfd, - 0xe6, 0x7c, 0xe4, 0x71, 0x73, 0xfe, 0xac, 0x2b, 0x51, 0xfe, 0xe2, 0x6c, 0xe4, 0x0f, 0x82, 0x5d, - 0x1f, 0xe7, 0xad, 0xc1, 0x97, 0x26, 0xfd, 0x8d, 0xb1, 0x5d, 0x18, 0xf8, 0xc1, 0x37, 0xfe, 0x45, - 0xb0, 0x81, 0x99, 0x17, 0x5a, 0x0f, 0xe4, 0x8b, 0xee, 0x07, 0xf2, 0xe1, 0xf4, 0x0f, 0x24, 0xe9, - 0x6e, 0x3d, 0x8f, 0x21, 0x8a, 0x84, 0xb9, 0x94, 0x5c, 0xab, 0x75, 0xa5, 0x42, 0xe2, 0x8a, 0xe5, - 0xa7, 0x8d, 0x73, 0x9f, 0x24, 0x5b, 0x2e, 0xa6, 0xbe, 0xe8, 0x83, 0xc4, 0xdc, 0xd7, 0x06, 0xdb, - 0xd8, 0x72, 0xae, 0x36, 0x6d, 0xb3, 0xa6, 0x7b, 0xb5, 0x69, 0x1b, 0xb7, 0x12, 0x66, 0xc7, 0x68, - 0x0d, 0x25, 0xfe, 0x16, 0x4d, 0xac, 0x0d, 0x87, 0x42, 0x5a, 0x2d, 0x7c, 0x10, 0x5e, 0xcd, 0x52, - 0x5d, 0x59, 0x22, 0xf1, 0xe5, 0xf2, 0x23, 0x23, 0x1f, 0x7e, 0x9f, 0xec, 0x38, 0xc5, 0x3e, 0x97, - 0xfa, 0xe8, 0xdb, 0xe1, 0x6d, 0xfb, 0x93, 0x2d, 0x07, 0x87, 0x9b, 0x9a, 0x47, 0xba, 0xcf, 0x8c, - 0x6c, 0xfb, 0xd0, 0xb2, 0x59, 0xb5, 0xba, 0x71, 0x0a, 0xb7, 0x71, 0xb7, 0xa0, 0x70, 0xcb, 0xbd, - 0x09, 0x85, 0x1b, 0xa5, 0x97, 0xd3, 0x5e, 0x23, 0x6a, 0xec, 0x9b, 0x01, 0x62, 0x89, 0x79, 0xfb, - 0xf6, 0x6c, 0xd0, 0x21, 0x3f, 0x90, 0x04, 0x73, 0xad, 0x8d, 0x5f, 0x1c, 0x03, 0xc1, 0x5c, 0xac, - 0x2b, 0x45, 0x84, 0x60, 0x7e, 0x64, 0xd4, 0xbd, 0xb1, 0x7b, 0xea, 0xa6, 0xdf, 0xa5, 0x31, 0x6f, - 0x76, 0x5a, 0x8c, 0x30, 0x07, 0x15, 0x54, 0x85, 0x82, 0xb1, 0xe5, 0x4e, 0xcb, 0x49, 0x55, 0xfb, - 0x43, 0xe1, 0x5c, 0xf4, 0x50, 0x9a, 0xba, 0x68, 0x43, 0xe1, 0x91, 0x2c, 0x34, 0x4b, 0x09, 0x04, - 0x48, 0xa5, 0x16, 0xe0, 0x4c, 0xb3, 0xdf, 0xf0, 0xb6, 0x05, 0x15, 0x2c, 0xe1, 0xa7, 0xa7, 0x2d, - 0xe8, 0x64, 0xde, 0xf2, 0xb3, 0xaa, 0xc2, 0xdb, 0x9c, 0xf3, 0x05, 0x37, 0x1a, 0xc0, 0x79, 0xa3, - 0x38, 0x34, 0x30, 0x19, 0x8c, 0x4e, 0xbc, 0x8c, 0xdb, 0x34, 0x5d, 0xd9, 0x80, 0x7e, 0x2f, 0xa5, - 0x99, 0xb8, 0xfc, 0x98, 0x71, 0x7e, 0x17, 0xa1, 0xe8, 0xf6, 0x1c, 0x37, 0x9a, 0x4f, 0x39, 0x4c, - 0x51, 0x29, 0xb5, 0xe3, 0x35, 0x31, 0x5b, 0x40, 0xc4, 0x9e, 0x2c, 0x34, 0xdb, 0xf3, 0x13, 0xf7, - 0xff, 0x0b, 0xb4, 0x41, 0x57, 0xde, 0x46, 0x6f, 0x49, 0xe9, 0xa6, 0x2f, 0x4b, 0x63, 0xd9, 0xa2, - 0x51, 0x5e, 0xa1, 0xff, 0x3c, 0x1d, 0x89, 0x34, 0x16, 0x67, 0xb8, 0x31, 0x40, 0x05, 0x68, 0x6f, - 0xa3, 0xf1, 0xc4, 0x68, 0x93, 0x5c, 0x95, 0x4a, 0x5d, 0x59, 0x48, 0x02, 0x5d, 0x62, 0xed, 0xe2, - 0xdc, 0x44, 0x7c, 0x1f, 0x33, 0xcb, 0x1e, 0xde, 0xfb, 0x55, 0xf2, 0xe0, 0x6e, 0xa6, 0x63, 0xbc, - 0x5e, 0x36, 0x3b, 0x32, 0x73, 0x6a, 0x56, 0xc1, 0x0c, 0x57, 0x4c, 0x4d, 0x95, 0x8e, 0x2a, 0xbe, - 0x88, 0x72, 0x42, 0x96, 0xaf, 0x40, 0x11, 0x76, 0x97, 0x37, 0x0b, 0xe4, 0x99, 0x6c, 0xe0, 0x44, - 0x7f, 0xaf, 0x39, 0x2a, 0xf1, 0x16, 0x00, 0x92, 0x65, 0x99, 0x8a, 0x5b, 0x89, 0x3b, 0x04, 0x94, - 0xa7, 0x05, 0x82, 0x31, 0xac, 0x44, 0x80, 0x0d, 0xdd, 0xa4, 0x2b, 0x01, 0x89, 0x15, 0xca, 0xaf, - 0xc3, 0x23, 0x57, 0xe3, 0xf7, 0xd7, 0x98, 0x17, 0xf0, 0xe8, 0x27, 0x4c, 0x17, 0x43, 0x4c, 0x0f, - 0x3a, 0xfb, 0x52, 0x83, 0x07, 0x87, 0xbf, 0xdf, 0x07, 0x69, 0x0f, 0x88, 0x95, 0x28, 0xf6, 0x2b, - 0xc0, 0xf6, 0xa4, 0x3b, 0x41, 0x5d, 0xc8, 0x72, 0x51, 0x92, 0xf6, 0x7d, 0xfb, 0x54, 0xf6, 0x0d, - 0xf1, 0xb0, 0x80, 0x50, 0x98, 0x06, 0x81, 0x8e, 0x12, 0xfc, 0x23, 0xbb, 0xf0, 0x8f, 0x6b, 0x7b, - 0x17, 0xb1, 0xc8, 0xd1, 0x44, 0xe8, 0x5c, 0xa1, 0x2b, 0x8a, 0xc4, 0x0d, 0x25, 0x3f, 0x09, 0x01, - 0x15, 0x92, 0xc7, 0x77, 0x1b, 0xbb, 0x77, 0x0d, 0x5f, 0xee, 0x4a, 0x0d, 0x7c, 0x6b, 0x9c, 0xfb, - 0x38, 0xd5, 0x71, 0x9e, 0x48, 0x7e, 0xbf, 0x3a, 0x00, 0xde, 0x0c, 0xf0, 0x3a, 0x41, 0x76, 0x1d, - 0x95, 0x1b, 0x40, 0xfc, 0x4e, 0x40, 0xf9, 0xd8, 0xd0, 0x95, 0x4e, 0x6e, 0x1c, 0x9e, 0xdc, 0x53, - 0x63, 0x98, 0x5c, 0x25, 0xd7, 0x0d, 0xa6, 0xf7, 0xa6, 0xae, 0xbc, 0x2e, 0xd9, 0x86, 0x93, 0x5f, - 0xe1, 0x33, 0xdd, 0xb0, 0x80, 0xd0, 0x44, 0x60, 0xbb, 0xfb, 0x73, 0xd8, 0x3c, 0xa8, 0xe5, 0x13, - 0xdf, 0x80, 0x35, 0x1b, 0x88, 0xcf, 0x60, 0xfb, 0x55, 0xdb, 0xb8, 0xe2, 0xdf, 0xe1, 0xa8, 0xfc, - 0xe1, 0xc6, 0x80, 0x85, 0x5c, 0x89, 0x8f, 0xe0, 0x1c, 0x8f, 0xa9, 0x53, 0x84, 0x4e, 0x9c, 0xab, - 0x9d, 0x3d, 0xe5, 0x1d, 0x82, 0x79, 0xea, 0xf1, 0x7d, 0x2c, 0xc4, 0x39, 0xd3, 0x01, 0x0f, 0x7f, - 0x7b, 0x3a, 0xd9, 0x72, 0x91, 0xd7, 0x38, 0xb3, 0xb4, 0xfd, 0x7c, 0x3e, 0x41, 0x70, 0x5f, 0x26, - 0x52, 0xd7, 0xa1, 0x0f, 0x09, 0xf4, 0x5d, 0x6d, 0xda, 0x46, 0x3c, 0x6b, 0x12, 0xfd, 0x7b, 0x93, - 0x5f, 0x9f, 0x48, 0xf6, 0xb4, 0x42, 0xa8, 0xae, 0xe4, 0xa1, 0x0b, 0x89, 0xc1, 0x6e, 0x50, 0xf3, - 0x99, 0x6b, 0x86, 0xc4, 0xb4, 0xce, 0x69, 0x89, 0x7f, 0x44, 0xf9, 0xe1, 0xe8, 0x2a, 0xbc, 0x0c, - 0xec, 0x59, 0x31, 0x1e, 0x2f, 0x70, 0x96, 0x73, 0x81, 0x6b, 0x6a, 0xb0, 0x2f, 0xf3, 0xcb, 0xba, - 0xf2, 0x82, 0x64, 0xeb, 0x20, 0x17, 0xb3, 0x65, 0xad, 0x21, 0xb7, 0x9b, 0x2d, 0x8c, 0x0f, 0xe5, - 0x4e, 0x70, 0x90, 0xad, 0xaf, 0xa8, 0x0b, 0x68, 0x1a, 0xf9, 0x10, 0x37, 0x85, 0xbc, 0x34, 0x7b, - 0x4c, 0x1a, 0x6e, 0x8a, 0x94, 0x99, 0xc4, 0x86, 0xe4, 0xee, 0x29, 0x2f, 0x61, 0x73, 0xe1, 0xf3, - 0xff, 0xc0, 0xac, 0xcc, 0xdb, 0x8a, 0xef, 0x86, 0x6d, 0x3e, 0xee, 0x41, 0xc4, 0xbd, 0x02, 0x9a, - 0xce, 0xb4, 0x40, 0xdc, 0xb4, 0x50, 0x7a, 0x67, 0x66, 0x68, 0xba, 0x29, 0x52, 0xf6, 0xbc, 0xae, - 0x3c, 0x2b, 0x79, 0xf5, 0x96, 0x1f, 0x61, 0x53, 0xb3, 0x59, 0x1c, 0xf2, 0x73, 0xf1, 0xea, 0x27, - 0xbe, 0x66, 0x25, 0x24, 0x98, 0x48, 0xcd, 0x2b, 0xe6, 0x58, 0x09, 0x09, 0xa6, 0xd0, 0xd7, 0xfc, - 0x23, 0x63, 0x20, 0x8e, 0x63, 0x49, 0x65, 0xc0, 0x77, 0x24, 0x3f, 0xc1, 0x4a, 0x34, 0x09, 0xdf, - 0x82, 0x6a, 0xea, 0xde, 0x94, 0x4f, 0x8d, 0xe9, 0x1e, 0x95, 0xec, 0x35, 0xb2, 0x08, 0xa9, 0x68, - 0x00, 0xde, 0x81, 0x1a, 0x55, 0xed, 0x4d, 0xc4, 0x26, 0x01, 0xe5, 0xd6, 0x82, 0x7b, 0x3e, 0xa8, - 0xb9, 0xdf, 0xd1, 0x15, 0x4d, 0x22, 0x45, 0xf2, 0x9b, 0x00, 0x77, 0x46, 0xef, 0xa1, 0xe4, 0xb9, - 0xef, 0x8a, 0x7d, 0x89, 0xcb, 0x47, 0x8d, 0xde, 0xc3, 0x23, 0x4d, 0xdb, 0x47, 0x9a, 0xdb, 0x8d, - 0xae, 0x9d, 0xa9, 0x33, 0xed, 0x78, 0x30, 0x13, 0xcb, 0x71, 0xce, 0xf9, 0xc5, 0x24, 0x64, 0x0f, - 0x04, 0xf6, 0xc7, 0xf1, 0xb5, 0xc2, 0x8d, 0x01, 0xdf, 0xbb, 0xd1, 0x70, 0x68, 0xf8, 0xcc, 0xa7, - 0xc9, 0x8f, 0xbb, 0xc8, 0x65, 0x26, 0x1f, 0x11, 0x5f, 0xb3, 0x27, 0xe9, 0x98, 0x4c, 0x45, 0x29, - 0xc5, 0xf6, 0x34, 0x1c, 0xf3, 0x21, 0xf5, 0x06, 0x24, 0x15, 0xe8, 0x3b, 0x9d, 0x1a, 0xd8, 0x95, - 0x18, 0xd8, 0x9b, 0x1a, 0x68, 0xa7, 0x7a, 0x34, 0x3e, 0x23, 0xc7, 0x4a, 0x9b, 0x4b, 0x10, 0xa8, - 0xc3, 0x31, 0xa9, 0xc6, 0xbb, 0x04, 0xcd, 0xcd, 0x60, 0xc6, 0x6a, 0x73, 0x03, 0xaa, 0x42, 0xb9, - 0x5a, 0x08, 0xbf, 0x0f, 0x53, 0xa9, 0xf8, 0x6d, 0x91, 0x44, 0x8a, 0xe4, 0xc7, 0xc0, 0x6b, 0x2c, - 0xd5, 0xda, 0x42, 0x2c, 0x72, 0xc9, 0xfb, 0x7b, 0x84, 0xb8, 0x47, 0x74, 0xf6, 0x0d, 0x9f, 0xd9, - 0xa6, 0x92, 0xd6, 0xe2, 0x9f, 0x59, 0xca, 0x1b, 0x6c, 0xde, 0x3d, 0xcd, 0x5b, 0x79, 0x80, 0x91, - 0xe8, 0x6a, 0xab, 0x1d, 0x71, 0x95, 0xe2, 0x7a, 0xca, 0x4f, 0x78, 0xa3, 0x23, 0x6c, 0xf9, 0xc8, - 0x1f, 0x86, 0xca, 0xf7, 0x12, 0xdf, 0x45, 0x79, 0xe6, 0xa6, 0xe3, 0x6f, 0x8b, 0xf8, 0xdb, 0x0f, - 0x7b, 0x7e, 0x1b, 0x02, 0x25, 0x58, 0x41, 0x8d, 0x59, 0x2f, 0x79, 0x81, 0xe3, 0xbb, 0x89, 0xf8, - 0x3e, 0xdb, 0xe7, 0x58, 0x4b, 0x13, 0x10, 0xf3, 0x1b, 0xea, 0xfc, 0xb1, 0x8d, 0xe1, 0x48, 0x3d, - 0xfe, 0xe0, 0xf4, 0x31, 0xbf, 0x1b, 0xd5, 0x5c, 0x37, 0x78, 0x37, 0xf0, 0x96, 0xdb, 0x86, 0x93, - 0x17, 0xd0, 0x54, 0x63, 0x24, 0x7d, 0x84, 0xe3, 0x16, 0xaa, 0xb6, 0xd6, 0x73, 0xde, 0x40, 0x53, - 0x1c, 0x4f, 0xe5, 0xed, 0x4b, 0xd4, 0xf0, 0x5b, 0x34, 0xcd, 0xf5, 0xd2, 0xdd, 0xbe, 0xd1, 0x5f, - 0x46, 0xd3, 0x5c, 0xfb, 0x71, 0x43, 0x5a, 0xd2, 0xf5, 0xba, 0x52, 0x83, 0x5e, 0x93, 0x3c, 0x88, - 0x33, 0x79, 0x1a, 0x60, 0x1e, 0x02, 0x53, 0x24, 0x9a, 0x16, 0x21, 0xac, 0xae, 0x08, 0x98, 0x40, - 0xba, 0x22, 0xd8, 0x90, 0xbe, 0x59, 0x0f, 0x88, 0xa8, 0xf0, 0x5b, 0x01, 0x4d, 0xb7, 0x8d, 0xf9, - 0x40, 0xe8, 0x04, 0x0b, 0xff, 0xd5, 0x74, 0x1a, 0x5a, 0xcf, 0x46, 0xa7, 0xbe, 0xea, 0xa4, 0x53, - 0x97, 0xe2, 0x18, 0xbf, 0xa4, 0x6c, 0x14, 0x2a, 0x95, 0xe5, 0x90, 0x21, 0x34, 0xe9, 0x0b, 0x36, - 0x9a, 0x74, 0xe1, 0xe8, 0x34, 0x29, 0x19, 0xe0, 0xc1, 0x23, 0x49, 0xdd, 0x3b, 0x79, 0x1f, 0x91, - 0xa4, 0x1e, 0x93, 0xfb, 0x89, 0x24, 0xfd, 0x89, 0x24, 0xfd, 0x71, 0x93, 0xa4, 0xaf, 0x5a, 0x81, - 0x4d, 0x27, 0x52, 0x44, 0x97, 0x26, 0xb0, 0x29, 0x10, 0xa3, 0x4d, 0x79, 0xf2, 0x64, 0x8e, 0x1a, - 0xc5, 0xc4, 0x28, 0xcd, 0x67, 0xfb, 0x13, 0x31, 0x7a, 0xb7, 0x89, 0xd1, 0xb7, 0x1c, 0xc4, 0x68, - 0xa5, 0xae, 0x94, 0x31, 0x62, 0xf4, 0xd9, 0xb1, 0x10, 0xa3, 0x0b, 0xc1, 0x06, 0x28, 0x16, 0x69, - 0xd4, 0x92, 0x2d, 0x07, 0xb1, 0xa3, 0x69, 0xd1, 0x4f, 0x04, 0x6a, 0x7a, 0x02, 0xd5, 0xe3, 0x15, - 0xf9, 0x89, 0x40, 0xbd, 0x9d, 0x04, 0x2a, 0xc9, 0x21, 0x35, 0x03, 0x36, 0x9a, 0x3c, 0x3e, 0x94, - 0x44, 0x25, 0x39, 0xfb, 0xc0, 0x11, 0xd4, 0x4d, 0xa3, 0x52, 0x4c, 0x54, 0xb8, 0x3b, 0x0b, 0x4d, - 0xb7, 0x9d, 0xd4, 0x83, 0x61, 0xa1, 0xf6, 0x9a, 0xcd, 0x44, 0x67, 0xa6, 0xe7, 0x65, 0xb7, 0x99, - 0xe5, 0xb0, 0x54, 0x60, 0x90, 0x13, 0x88, 0x0f, 0xab, 0x06, 0xfa, 0x85, 0xc2, 0x7f, 0x22, 0x20, - 0x91, 0xaa, 0x1a, 0x39, 0x02, 0xf7, 0x2d, 0x27, 0x81, 0x5b, 0x7e, 0x03, 0x04, 0xee, 0xe8, 0x62, - 0xd8, 0x02, 0x34, 0x3e, 0x18, 0x5d, 0x1e, 0x8e, 0xd4, 0xc2, 0xbe, 0xe5, 0xa9, 0xf4, 0x67, 0x69, - 0xa9, 0xae, 0x3c, 0x83, 0x7e, 0x29, 0x79, 0xcc, 0x49, 0x9e, 0x49, 0xe2, 0x0d, 0xd2, 0x75, 0x38, - 0xcf, 0x17, 0x9f, 0xaa, 0xad, 0xdf, 0x0f, 0xf4, 0x54, 0x8d, 0x8b, 0x5f, 0xc3, 0x56, 0xa4, 0x3d, - 0xd5, 0x1e, 0x01, 0xc7, 0x36, 0xb6, 0x1d, 0xe9, 0x2a, 0xe7, 0x91, 0x3e, 0x69, 0x4e, 0x8d, 0x1d, - 0xe9, 0x44, 0x2e, 0xa0, 0xcd, 0x18, 0x8e, 0x90, 0x1e, 0x94, 0xf3, 0x33, 0x56, 0x30, 0xba, 0x8b, - 0x89, 0xa1, 0x0f, 0xbd, 0x01, 0xb1, 0xf0, 0x1f, 0x66, 0xa1, 0xa9, 0x56, 0xbf, 0x07, 0xe3, 0x94, - 0x5e, 0x1d, 0xcb, 0x29, 0x8d, 0x31, 0x5b, 0x54, 0xe9, 0x72, 0x5d, 0x29, 0x47, 0x8a, 0xe4, 0xda, - 0x04, 0x79, 0x26, 0xec, 0x9e, 0x75, 0xc7, 0x33, 0xab, 0x51, 0x52, 0x39, 0x68, 0x2a, 0x68, 0x06, - 0xb9, 0x83, 0xfe, 0x95, 0xf3, 0xa0, 0x97, 0xdc, 0x00, 0xec, 0xe6, 0x44, 0xb2, 0x0a, 0x66, 0x58, - 0x80, 0xfa, 0x94, 0x8d, 0x37, 0xf5, 0x8d, 0xc6, 0x9b, 0xde, 0x57, 0x3c, 0xe9, 0x52, 0x4b, 0x9c, - 0x0a, 0xba, 0x77, 0x9c, 0xcf, 0x81, 0x89, 0x53, 0x27, 0x30, 0x41, 0xaa, 0x25, 0x2e, 0x5d, 0xea, - 0x8c, 0xe3, 0x3f, 0x3b, 0x0d, 0xb9, 0x9b, 0x81, 0xa8, 0xcd, 0xbd, 0x05, 0xa2, 0xb6, 0xf4, 0xa0, - 0xa0, 0x2b, 0xba, 0x80, 0x3a, 0x05, 0xc9, 0x75, 0xae, 0xf2, 0x1f, 0x9d, 0x77, 0x83, 0x5a, 0x76, - 0xb3, 0x3c, 0xfd, 0xc6, 0xae, 0x23, 0x89, 0xf8, 0xae, 0xd4, 0x47, 0xe7, 0x4c, 0x6e, 0x19, 0x53, - 0xbe, 0xc0, 0xaf, 0xa5, 0x06, 0x76, 0x1a, 0x5d, 0x2d, 0x50, 0x4e, 0x76, 0x19, 0x0f, 0x65, 0xf5, - 0x6d, 0x3e, 0x0b, 0x1c, 0x9f, 0xd1, 0x72, 0x24, 0xd1, 0x1f, 0xa7, 0x20, 0x7c, 0x76, 0x64, 0x77, - 0x27, 0xb4, 0x2f, 0xfc, 0x3e, 0x0b, 0x4d, 0xe3, 0x66, 0xf4, 0x60, 0xc0, 0xec, 0x2b, 0x36, 0x0d, - 0x7d, 0x1a, 0x98, 0xe5, 0x6d, 0xb9, 0x01, 0x66, 0x8d, 0x96, 0xf3, 0x26, 0x66, 0xe5, 0x01, 0x76, - 0x99, 0xae, 0xbc, 0x88, 0x9e, 0x97, 0xdc, 0x5b, 0x30, 0x56, 0x88, 0x2d, 0x1c, 0x9a, 0x8e, 0x66, - 0x81, 0x00, 0x8c, 0xb1, 0x6c, 0x14, 0x60, 0x9f, 0x25, 0x40, 0x26, 0xd0, 0x80, 0x59, 0xb3, 0x09, - 0x90, 0x11, 0x97, 0x15, 0x7c, 0x7c, 0x20, 0xfa, 0x01, 0x5b, 0xca, 0xff, 0x57, 0x20, 0x80, 0xf6, - 0x57, 0x6e, 0x55, 0xb8, 0x5f, 0x57, 0x5e, 0xe2, 0x55, 0xe1, 0x4b, 0xd9, 0x18, 0xc9, 0xd6, 0x26, - 0x16, 0x66, 0x95, 0x85, 0x74, 0xc2, 0xc1, 0x94, 0x12, 0xfd, 0x71, 0x13, 0xc8, 0x6c, 0xb9, 0x09, - 0xb3, 0xc6, 0x94, 0x9b, 0xf0, 0x2d, 0xe6, 0x54, 0x97, 0x6d, 0xe9, 0x6b, 0xa9, 0x53, 0xdd, 0x02, - 0xf7, 0xa7, 0xc1, 0x7b, 0x86, 0xda, 0x83, 0x99, 0xaf, 0x8c, 0x50, 0xe0, 0x73, 0xbf, 0x32, 0xd4, - 0xad, 0x6e, 0x23, 0x9a, 0x02, 0xac, 0x86, 0xd2, 0x18, 0x0b, 0x47, 0x71, 0x1c, 0x88, 0x1c, 0x7c, - 0xf8, 0x38, 0xd5, 0xb9, 0xb3, 0x4e, 0xfe, 0x39, 0x41, 0x1e, 0x83, 0x4d, 0x46, 0x57, 0x1f, 0xcf, - 0xe8, 0x32, 0x47, 0x2e, 0x12, 0x29, 0xc7, 0xd1, 0x51, 0xdc, 0x82, 0x26, 0xd2, 0xe0, 0x0e, 0xc1, - 0xd0, 0xa6, 0x74, 0x66, 0xfa, 0x8a, 0xd5, 0x04, 0x22, 0xec, 0x62, 0x2b, 0x53, 0xbe, 0xa7, 0x5c, - 0x60, 0xf3, 0xfc, 0x84, 0x37, 0x10, 0x93, 0xf1, 0xd7, 0xcb, 0xc6, 0xed, 0x11, 0xb2, 0xa6, 0x0a, - 0x2a, 0xdf, 0x5c, 0xdc, 0x2f, 0xa0, 0xc9, 0x75, 0xfe, 0xc6, 0x50, 0xed, 0x3b, 0x2c, 0x8e, 0x6e, - 0xae, 0x77, 0x7e, 0x9a, 0x95, 0xb8, 0x15, 0x70, 0x32, 0x8d, 0x60, 0x78, 0x50, 0xb6, 0x42, 0x57, - 0x5e, 0x90, 0x1c, 0xfd, 0x65, 0x09, 0xbe, 0x9d, 0x3c, 0x74, 0x01, 0xf0, 0x1b, 0x4c, 0x02, 0x3c, - 0x10, 0x19, 0x53, 0x01, 0x57, 0x95, 0xcd, 0xc9, 0x31, 0x86, 0xb8, 0x85, 0xf9, 0xf6, 0x8d, 0xcf, - 0xa4, 0x5b, 0x76, 0x5e, 0x64, 0x9b, 0x9b, 0x1f, 0xf6, 0x45, 0xa2, 0x6e, 0x7e, 0xf3, 0x4d, 0x2a, - 0xd4, 0xee, 0x04, 0x89, 0x6b, 0x1c, 0x1e, 0x7f, 0xdb, 0x05, 0xe6, 0xf2, 0x97, 0x77, 0x43, 0x1f, - 0xc6, 0x9e, 0x80, 0xe4, 0xc3, 0xe0, 0x7a, 0x49, 0xfc, 0x01, 0x8b, 0xdc, 0x1f, 0x4e, 0x75, 0xef, - 0x4c, 0x7e, 0x75, 0x82, 0xf9, 0xfb, 0x2c, 0x34, 0xe2, 0xc7, 0x8c, 0xc1, 0x1d, 0x45, 0xcc, 0x59, - 0x70, 0x23, 0xb8, 0x57, 0xaf, 0xa9, 0x21, 0x76, 0xb5, 0x38, 0x10, 0x14, 0x29, 0x92, 0x15, 0x36, - 0xde, 0x48, 0x53, 0x2b, 0x30, 0xdf, 0x10, 0x34, 0x78, 0x4d, 0x0d, 0x96, 0x9d, 0x6d, 0x4f, 0x35, - 0x9f, 0x31, 0x19, 0x4a, 0xf2, 0x2e, 0xf5, 0xc2, 0x76, 0x9b, 0xfb, 0x4e, 0xfd, 0x08, 0x55, 0x32, - 0x14, 0xaf, 0xed, 0x43, 0xb7, 0x49, 0xdb, 0x77, 0x5a, 0xe0, 0x02, 0x19, 0xda, 0xc2, 0xc5, 0x59, - 0xa1, 0x0c, 0xb7, 0xb2, 0xcd, 0x23, 0xd1, 0x0a, 0xbf, 0x3f, 0x3a, 0xfc, 0xdd, 0x41, 0xa0, 0x24, - 0xc9, 0xcb, 0x74, 0xf0, 0x52, 0xf2, 0x44, 0x0b, 0x93, 0x61, 0xc2, 0x4f, 0x78, 0x42, 0x12, 0xfd, - 0x1d, 0x20, 0x57, 0xb9, 0xda, 0xb4, 0x9d, 0x4f, 0x02, 0xce, 0x1e, 0x92, 0xe1, 0xd3, 0xdb, 0x40, - 0xfe, 0x67, 0x96, 0x5c, 0x6e, 0x1e, 0x39, 0x31, 0x90, 0x3c, 0xdc, 0x47, 0xdc, 0xe4, 0xb8, 0xd8, - 0x87, 0xef, 0x20, 0x54, 0x1b, 0x0e, 0x45, 0x1b, 0xeb, 0xb9, 0x80, 0x5b, 0x58, 0xaa, 0xc6, 0x15, - 0xcb, 0xcf, 0x58, 0x7f, 0x43, 0xb4, 0xe6, 0x88, 0x16, 0x0d, 0x37, 0x46, 0x6a, 0x35, 0x90, 0x4f, - 0x45, 0xc0, 0x76, 0x3d, 0xb5, 0xff, 0x9b, 0xe1, 0xbe, 0x8b, 0xc3, 0xdf, 0xed, 0x4c, 0xc6, 0xbb, - 0x40, 0x20, 0xa2, 0x72, 0x83, 0x88, 0xef, 0x3a, 0xc2, 0x54, 0x4f, 0x1f, 0x43, 0x98, 0x6a, 0x6c, - 0x9f, 0x64, 0x0f, 0x53, 0x3d, 0xd3, 0xc2, 0xc4, 0xf8, 0xf4, 0x61, 0x91, 0xf6, 0x60, 0xd4, 0xe2, - 0xfb, 0x28, 0x27, 0xe6, 0xdf, 0x14, 0x2d, 0x98, 0x81, 0xef, 0xee, 0x92, 0x31, 0xdf, 0xdd, 0x4d, - 0xe4, 0xe6, 0xca, 0xba, 0xb2, 0x58, 0xc2, 0x43, 0xc8, 0x4f, 0x78, 0xde, 0x5b, 0x58, 0xa5, 0xcd, - 0x59, 0x16, 0x37, 0x17, 0xbf, 0x13, 0x38, 0x3f, 0x48, 0x2c, 0x39, 0x02, 0xc7, 0xce, 0x0e, 0x41, - 0x57, 0xf6, 0x08, 0x92, 0xbd, 0x4e, 0xde, 0xca, 0x3c, 0x21, 0x49, 0x18, 0x9e, 0x50, 0x38, 0x52, - 0xef, 0xaf, 0x5b, 0xac, 0xbd, 0x1f, 0xd3, 0x22, 0x21, 0x7f, 0x5d, 0xd1, 0xd5, 0xa6, 0xed, 0xc9, - 0x23, 0xe7, 0x46, 0x9a, 0xba, 0x79, 0x6c, 0x66, 0xb9, 0x4f, 0xea, 0x6d, 0xa9, 0x2f, 0xbf, 0x4c, - 0xf4, 0xb7, 0x26, 0x0f, 0x5e, 0xf2, 0x6c, 0x50, 0xec, 0x33, 0xda, 0xbf, 0x29, 0x5f, 0xbf, 0x8a, - 0x14, 0xb4, 0x1c, 0x64, 0xa9, 0x05, 0x54, 0xfb, 0x4c, 0xec, 0x3e, 0x97, 0xb3, 0x6e, 0xc8, 0xe7, - 0xb2, 0x8a, 0xd0, 0x5d, 0x4a, 0x44, 0xf3, 0x63, 0x17, 0xc8, 0xd9, 0x9c, 0xe7, 0xa7, 0xad, 0x46, - 0x9e, 0xc2, 0x86, 0xa0, 0x9e, 0x9f, 0xb6, 0x7a, 0x13, 0xed, 0x90, 0xe4, 0xad, 0x05, 0xde, 0xa1, - 0xa8, 0xf0, 0x84, 0x59, 0x24, 0xa6, 0xb2, 0x95, 0xba, 0x52, 0x45, 0x53, 0xb7, 0x2e, 0xb3, 0xb6, - 0x05, 0x43, 0x2a, 0x2e, 0xa5, 0xd2, 0x44, 0x87, 0x8f, 0x24, 0x88, 0x75, 0x12, 0xfd, 0x9f, 0x9b, - 0x44, 0x60, 0xdb, 0x41, 0x48, 0xfd, 0x4f, 0x33, 0xbb, 0xbe, 0x8b, 0x26, 0x87, 0x43, 0x75, 0x24, - 0x41, 0x31, 0x96, 0x30, 0x3d, 0x84, 0x5f, 0x3a, 0x1c, 0x33, 0xdd, 0x51, 0x25, 0x97, 0xd8, 0x7f, - 0x27, 0x06, 0x9a, 0x21, 0x9f, 0x0f, 0x38, 0x49, 0x14, 0x27, 0xfa, 0xdb, 0x21, 0x83, 0x3a, 0x88, - 0x9c, 0x55, 0x47, 0xf7, 0x5b, 0xf1, 0xc2, 0x7c, 0x0e, 0x4d, 0xe4, 0x90, 0xed, 0x0d, 0x75, 0x7d, - 0x06, 0x4d, 0x60, 0x77, 0xfd, 0x86, 0x44, 0x3e, 0xdb, 0x05, 0x5d, 0xf9, 0x2b, 0xf4, 0x67, 0x29, - 0x0d, 0xfd, 0x24, 0xcf, 0x24, 0x48, 0x92, 0x82, 0x28, 0xe5, 0x37, 0x89, 0x4a, 0x92, 0xf7, 0x4c, - 0x20, 0x84, 0xc5, 0x15, 0x81, 0x7f, 0x86, 0xaf, 0x08, 0x8e, 0x07, 0xd0, 0xd2, 0x5b, 0x5e, 0x11, - 0x08, 0xba, 0x2e, 0xac, 0x40, 0x93, 0xed, 0xd7, 0x40, 0x9c, 0xc3, 0x21, 0x5b, 0x58, 0x87, 0x85, - 0xe0, 0x66, 0xa1, 0xdc, 0x86, 0x70, 0xb8, 0x8e, 0x52, 0x65, 0x2a, 0xf9, 0x55, 0xd8, 0x9e, 0x8d, - 0x66, 0xbb, 0x56, 0xf1, 0x60, 0x10, 0xd3, 0xaf, 0xdb, 0x18, 0xe0, 0x5f, 0x8c, 0x8a, 0xdd, 0x60, - 0x55, 0x15, 0xfe, 0x98, 0x7f, 0x94, 0x44, 0x7a, 0xe2, 0xd6, 0x9b, 0x77, 0x94, 0xc4, 0x39, 0xdb, - 0x5c, 0x8e, 0x92, 0x05, 0xb6, 0xa8, 0x70, 0x19, 0xbc, 0x24, 0x0b, 0xff, 0x89, 0x80, 0xe6, 0x66, - 0x98, 0xb9, 0xf8, 0x3a, 0x9a, 0xc0, 0x30, 0x16, 0x89, 0x98, 0x95, 0x21, 0xe3, 0x02, 0x0e, 0x6d, - 0x60, 0x75, 0xe0, 0x5c, 0xce, 0xc9, 0xfe, 0x5b, 0x75, 0x62, 0x35, 0x49, 0x71, 0x9e, 0x95, 0x21, - 0xc5, 0x39, 0x08, 0x7d, 0x70, 0x8a, 0xf3, 0xb9, 0xfc, 0x1d, 0xc7, 0x3e, 0xec, 0x1d, 0x46, 0xe7, - 0x79, 0xf0, 0xb1, 0x86, 0x44, 0xe7, 0x85, 0x57, 0xa6, 0xa1, 0x59, 0x56, 0xce, 0x33, 0x1b, 0x87, - 0xb1, 0xdc, 0x1e, 0xf4, 0x43, 0xb0, 0x22, 0xf3, 0xda, 0x82, 0x7e, 0x4c, 0x64, 0x20, 0x44, 0x0d, - 0xe8, 0x67, 0xd8, 0xc3, 0x77, 0xdc, 0x73, 0x7e, 0x63, 0x11, 0x61, 0x95, 0x80, 0xdb, 0x98, 0x93, - 0x9e, 0x55, 0x22, 0x0c, 0x52, 0xb9, 0x23, 0xc8, 0xf2, 0x2f, 0x6e, 0x80, 0x3f, 0x61, 0x5c, 0xc8, - 0x76, 0xc1, 0xcd, 0x86, 0x8c, 0x23, 0x5a, 0x42, 0x67, 0xf4, 0xb4, 0xb2, 0x70, 0xb8, 0x6e, 0xbd, - 0x89, 0xb9, 0x6e, 0x37, 0x8b, 0x12, 0xb2, 0xb3, 0x28, 0xb9, 0x63, 0x64, 0x51, 0xa4, 0xb1, 0xb3, - 0x28, 0x76, 0xd6, 0xa4, 0xcd, 0xcd, 0x9a, 0x8c, 0x1f, 0x3b, 0x6b, 0xf2, 0xf2, 0x2d, 0xb2, 0x26, - 0x2e, 0x96, 0xc4, 0x49, 0xc7, 0xe5, 0xdd, 0x41, 0x3a, 0xce, 0x62, 0x7f, 0x26, 0x64, 0xb2, 0x63, - 0xb8, 0xed, 0xec, 0xcf, 0x07, 0x8c, 0xfb, 0x41, 0x37, 0xf4, 0x5d, 0x9e, 0xfb, 0xc1, 0x08, 0x91, - 0x72, 0x3f, 0x8f, 0x8c, 0xca, 0xfd, 0x30, 0xae, 0x87, 0xd2, 0xae, 0x13, 0xbd, 0x69, 0xd7, 0xb4, - 0x5f, 0xbe, 0x75, 0xda, 0xd5, 0xe2, 0xb7, 0xf2, 0xef, 0x34, 0xbf, 0x45, 0x65, 0x7b, 0x93, 0x38, - 0x7e, 0x8b, 0xca, 0xf6, 0x08, 0xbf, 0xe5, 0x52, 0x68, 0x7b, 0xf1, 0x5b, 0x54, 0xf6, 0x67, 0xe3, - 0xb7, 0x26, 0x3f, 0x30, 0xfc, 0xd6, 0x94, 0x3b, 0xc8, 0x6f, 0x95, 0xa2, 0x9c, 0x80, 0x16, 0xad, - 0x25, 0xfa, 0x66, 0xa2, 0xb5, 0xd0, 0xa2, 0xb5, 0xf6, 0xec, 0xcd, 0x26, 0xca, 0xc5, 0x3a, 0x71, - 0x26, 0x64, 0xd3, 0xa2, 0xb5, 0xe6, 0x63, 0x6b, 0x71, 0x03, 0xd3, 0x08, 0x80, 0x3b, 0x11, 0xec, - 0xba, 0xaa, 0x50, 0xec, 0x49, 0x19, 0x50, 0x2c, 0x8e, 0xfe, 0xc5, 0xf1, 0x0a, 0xf9, 0x8c, 0xd0, - 0xf7, 0xd9, 0x99, 0x85, 0x4d, 0x4e, 0x66, 0x41, 0x4c, 0x33, 0x7a, 0x4d, 0x2c, 0x12, 0x0c, 0x6d, - 0x82, 0xd1, 0x6f, 0x86, 0x95, 0x20, 0x54, 0x3c, 0x80, 0x0b, 0xd1, 0x13, 0xdb, 0xa9, 0x78, 0xab, - 0x0a, 0xa8, 0x78, 0xeb, 0x77, 0x62, 0xa0, 0x99, 0x64, 0x37, 0xcd, 0x40, 0xc5, 0x5b, 0xcd, 0x1f, - 0x34, 0x2a, 0xfe, 0x29, 0x5d, 0x59, 0x8a, 0x16, 0x4b, 0x69, 0x48, 0x14, 0x79, 0x26, 0xac, 0x9d, - 0x95, 0x03, 0x11, 0x5f, 0xb8, 0x3b, 0x1b, 0xcd, 0x76, 0xf5, 0x78, 0x30, 0x08, 0x66, 0xd5, 0x46, - 0x30, 0x67, 0x20, 0x1b, 0xf1, 0x45, 0x03, 0xf2, 0xb8, 0x80, 0x69, 0x6c, 0x59, 0xde, 0x62, 0x5e, - 0x0e, 0x7d, 0x2f, 0x49, 0xe5, 0x9d, 0x79, 0x68, 0x16, 0x68, 0x57, 0x5d, 0xe4, 0xe5, 0x6f, 0xbc, - 0xc8, 0xcb, 0x67, 0x46, 0x21, 0x2f, 0xd3, 0xa2, 0x57, 0x1b, 0xc5, 0xf9, 0xd7, 0x82, 0x43, 0x55, - 0x5c, 0xf6, 0xb9, 0xa0, 0x2b, 0xa7, 0x05, 0x89, 0x96, 0xca, 0xdd, 0x82, 0x31, 0x18, 0x37, 0x5a, - 0x2e, 0x80, 0x4a, 0x14, 0x92, 0xab, 0x25, 0xf7, 0x7e, 0x99, 0xec, 0x6f, 0x4e, 0x75, 0xed, 0xb2, - 0x24, 0x1d, 0xd8, 0xd4, 0xc9, 0x7c, 0xfd, 0x7a, 0xe2, 0xc6, 0x91, 0xb3, 0x57, 0x9b, 0xb6, 0x43, - 0xca, 0x2f, 0x40, 0x64, 0xd0, 0x77, 0x78, 0xe8, 0x4b, 0xa3, 0xf9, 0x14, 0x50, 0xd6, 0xc4, 0xc3, - 0xf6, 0xc0, 0x65, 0x20, 0xb1, 0x8d, 0xbe, 0x4b, 0x46, 0xcb, 0x21, 0x2b, 0x05, 0xc2, 0x60, 0x37, - 0x1c, 0xb9, 0x49, 0xa6, 0x93, 0x87, 0xe3, 0xe0, 0xa5, 0xc4, 0xf7, 0x97, 0x53, 0x27, 0xce, 0x0d, - 0x9f, 0x3b, 0x39, 0x7c, 0xf9, 0x23, 0x23, 0x7e, 0xfa, 0x6a, 0xd3, 0x76, 0xa6, 0xd7, 0x16, 0xff, - 0x89, 0x80, 0x66, 0x46, 0x34, 0xec, 0xcb, 0x6a, 0x0f, 0x0f, 0x49, 0xee, 0x93, 0x2e, 0xe8, 0x4a, - 0x87, 0x20, 0x79, 0xb7, 0x91, 0x1b, 0x13, 0x97, 0x8f, 0xa6, 0x0e, 0x1c, 0x21, 0xb1, 0x59, 0x7a, - 0xce, 0xd2, 0x4c, 0x09, 0xbd, 0xd7, 0x06, 0xdb, 0x4c, 0xe6, 0x1f, 0xa6, 0x4f, 0xd7, 0x6a, 0x92, - 0xd9, 0x67, 0x3e, 0x65, 0x25, 0x89, 0xfe, 0x0e, 0x8b, 0x6d, 0xc0, 0x54, 0xae, 0xb9, 0xfa, 0xa1, - 0x0f, 0x13, 0xfd, 0xfb, 0xb1, 0xe0, 0xe0, 0x43, 0x7e, 0xff, 0x92, 0x87, 0x2e, 0xa4, 0xf6, 0x1f, - 0x4b, 0x1e, 0x68, 0x31, 0x67, 0xef, 0x3d, 0x1b, 0x71, 0x48, 0x40, 0xd3, 0x36, 0x6b, 0x5a, 0x03, - 0x29, 0x86, 0x28, 0x71, 0x44, 0x30, 0x4f, 0x24, 0x4e, 0xee, 0x7a, 0xb9, 0x91, 0xcc, 0x66, 0xa0, - 0x83, 0x86, 0xdf, 0x1d, 0x80, 0xf3, 0x22, 0x27, 0x85, 0x0f, 0xc2, 0x5c, 0xcf, 0xd0, 0xae, 0x44, - 0x7f, 0xfb, 0xc8, 0xfe, 0xa6, 0x64, 0xdf, 0x36, 0x38, 0x2c, 0xb3, 0x10, 0xaf, 0x1f, 0x7e, 0x42, - 0x2e, 0xc2, 0xb1, 0xae, 0xc1, 0x3d, 0x13, 0xf1, 0x45, 0x2e, 0x93, 0xc1, 0x38, 0x2b, 0xce, 0x86, - 0x95, 0xc9, 0x60, 0x02, 0xcb, 0x64, 0x60, 0xf9, 0xac, 0x5b, 0x89, 0x07, 0x08, 0x8e, 0x07, 0x58, - 0x20, 0x81, 0xd7, 0xed, 0x38, 0xde, 0xaa, 0x02, 0x1c, 0x6f, 0xfd, 0x66, 0x87, 0x95, 0x09, 0xc7, - 0x5b, 0xcd, 0x4b, 0x3b, 0x05, 0x5d, 0xd9, 0x2b, 0xa0, 0x16, 0x41, 0x4a, 0x03, 0x7b, 0xf2, 0x3a, - 0x18, 0x8f, 0x95, 0xa7, 0x3e, 0xea, 0x37, 0x9a, 0xbf, 0xb1, 0xcc, 0x39, 0x87, 0x3e, 0xb4, 0x50, - 0xea, 0xe5, 0xc3, 0xc9, 0x9e, 0x56, 0xa3, 0xb3, 0x8f, 0x01, 0x83, 0x59, 0x95, 0x3c, 0x74, 0x01, - 0x6b, 0x09, 0xcd, 0x51, 0x20, 0x2f, 0xe3, 0xd5, 0xa6, 0xed, 0x57, 0x04, 0x1e, 0x0a, 0xaf, 0x08, - 0x6c, 0xf5, 0x58, 0x82, 0xe1, 0x9a, 0xca, 0x0f, 0x42, 0x82, 0x91, 0x66, 0x55, 0xf7, 0xb9, 0x04, - 0xe3, 0x63, 0x16, 0xee, 0xc0, 0x5b, 0x82, 0x11, 0xb8, 0x21, 0x09, 0x06, 0xe6, 0x8f, 0x39, 0x09, - 0x86, 0xcd, 0xd6, 0x84, 0x35, 0x73, 0x4b, 0x33, 0x0e, 0x0b, 0x63, 0x10, 0x67, 0x84, 0x74, 0x65, - 0x33, 0x11, 0x67, 0xd4, 0x3a, 0x6f, 0x6d, 0xf7, 0x4e, 0x5e, 0xa2, 0x01, 0x1f, 0xb8, 0xda, 0xb4, - 0x9d, 0x44, 0xe0, 0x74, 0xc0, 0x77, 0x6b, 0x53, 0xb2, 0xa7, 0x95, 0x45, 0xab, 0x4f, 0x0c, 0x76, - 0x27, 0xe2, 0x67, 0x52, 0xfb, 0x8f, 0x39, 0xfa, 0x12, 0xb1, 0xc8, 0x3f, 0x14, 0x58, 0xca, 0x67, - 0xdb, 0xa3, 0xb5, 0xc5, 0xeb, 0xd1, 0x5a, 0xab, 0x2b, 0xcf, 0xd8, 0x1f, 0xad, 0x85, 0x7c, 0xe4, - 0x53, 0x13, 0xb3, 0xee, 0xfe, 0xdc, 0x18, 0x88, 0x57, 0x55, 0x80, 0xbd, 0x39, 0xcb, 0xf5, 0x34, - 0xe6, 0x17, 0x8d, 0x26, 0x66, 0xf7, 0x9a, 0x93, 0x3c, 0x17, 0x94, 0xc9, 0x8e, 0x8d, 0x26, 0xa4, - 0xd0, 0xbf, 0xc8, 0x46, 0x33, 0xec, 0x9d, 0x7e, 0xc0, 0x74, 0x10, 0xb3, 0x9e, 0x71, 0x5e, 0xba, - 0x7b, 0x0d, 0x70, 0xa5, 0xbf, 0xd2, 0x95, 0x15, 0xa8, 0x52, 0xf2, 0x3c, 0x8a, 0x1b, 0xb5, 0xdf, - 0xf9, 0x34, 0x1b, 0x02, 0x0a, 0x72, 0xb1, 0xe5, 0x6c, 0x77, 0xf4, 0xaf, 0xdc, 0x01, 0x05, 0xef, - 0xae, 0xbc, 0xed, 0x88, 0x80, 0xf2, 0x41, 0x12, 0xb5, 0x3c, 0x58, 0x67, 0x52, 0x2b, 0x40, 0x83, - 0x35, 0xea, 0x4a, 0x44, 0xb2, 0x55, 0xc8, 0x1b, 0xf8, 0x5f, 0xd4, 0x62, 0xf8, 0xd0, 0x85, 0x62, - 0xdf, 0xf0, 0xf7, 0x1f, 0x1a, 0xbb, 0xe3, 0x70, 0x27, 0x92, 0x6d, 0xad, 0xa9, 0xe6, 0x33, 0xe9, - 0x44, 0x60, 0xc9, 0x0e, 0xdd, 0x88, 0x77, 0x2e, 0x84, 0x0a, 0x93, 0x54, 0xc3, 0xbf, 0x8d, 0x9e, - 0xb3, 0x46, 0x57, 0xc7, 0xc8, 0xd1, 0x4f, 0x8a, 0x54, 0xdb, 0x17, 0x4b, 0x37, 0xe9, 0x4a, 0x00, - 0x6d, 0x90, 0x32, 0x6d, 0xa0, 0x5c, 0x4e, 0xc2, 0x19, 0x72, 0xc7, 0x9a, 0xea, 0xde, 0xc9, 0x68, - 0xeb, 0x62, 0x1f, 0xd0, 0x73, 0x60, 0xf6, 0xcd, 0x41, 0xa9, 0xd1, 0xbe, 0xdb, 0x88, 0x77, 0xc2, - 0xe9, 0x15, 0xfe, 0x1b, 0x12, 0xd8, 0xd0, 0xfd, 0x91, 0x07, 0x03, 0x00, 0x57, 0xda, 0xcc, 0x60, - 0x32, 0x00, 0xe0, 0x58, 0x4c, 0x61, 0xee, 0x25, 0xe8, 0xbd, 0xa6, 0x2b, 0xab, 0xd1, 0x4a, 0x29, - 0xe3, 0x61, 0x50, 0x1c, 0x0a, 0x03, 0x59, 0xc2, 0x17, 0xef, 0x18, 0x18, 0x85, 0xff, 0x32, 0x1b, - 0xb2, 0xfc, 0xba, 0x40, 0x6f, 0x91, 0xcd, 0x28, 0x67, 0x74, 0x49, 0xf3, 0xdb, 0x6e, 0xd1, 0xb8, - 0x72, 0xcb, 0xa0, 0xca, 0x83, 0x62, 0xb9, 0xc3, 0xd4, 0xe6, 0xa6, 0x44, 0xd9, 0x2b, 0xf9, 0x04, - 0x7f, 0x20, 0x12, 0xc7, 0x87, 0xc2, 0x25, 0xf8, 0xf3, 0x18, 0x8a, 0xe4, 0x6b, 0x24, 0xaf, 0x3e, - 0x6b, 0x5a, 0xba, 0x5f, 0xd0, 0x95, 0x2e, 0x01, 0xb5, 0x0b, 0x92, 0xe7, 0x1e, 0xca, 0x8d, 0x70, - 0x14, 0x0c, 0xdc, 0xee, 0x92, 0xad, 0xda, 0x3f, 0xcd, 0x82, 0xbc, 0xb8, 0x3f, 0x6e, 0x40, 0x2d, - 0xad, 0xd0, 0x15, 0x05, 0xbd, 0x2c, 0x79, 0x6f, 0x05, 0x7d, 0xa9, 0x38, 0xe6, 0xc0, 0xdb, 0x6e, - 0xed, 0x3f, 0xe5, 0xa1, 0x29, 0x4a, 0x20, 0x80, 0x39, 0x28, 0x2b, 0x4c, 0x87, 0xeb, 0x59, 0x52, - 0x74, 0x65, 0x01, 0x7f, 0xd7, 0xa7, 0x41, 0xa0, 0x60, 0x76, 0xbf, 0xe9, 0xb3, 0x23, 0x8c, 0xe9, - 0xd9, 0xa9, 0x42, 0xe3, 0xcc, 0x4b, 0x13, 0x2d, 0xc8, 0xf2, 0x65, 0x83, 0xa5, 0xf2, 0xcf, 0x25, - 0x28, 0x91, 0xe7, 0x3b, 0x06, 0x86, 0xdb, 0x5a, 0x55, 0xcd, 0xa2, 0x0d, 0xea, 0x42, 0x4e, 0x9e, - 0x50, 0x20, 0xa8, 0xd0, 0x5e, 0x0c, 0xa2, 0x69, 0xc1, 0x50, 0x30, 0xb6, 0x32, 0xbc, 0x29, 0x18, - 0xaa, 0xf6, 0x47, 0xa3, 0xef, 0x85, 0x23, 0x01, 0x02, 0x41, 0xd8, 0x5d, 0xca, 0x5d, 0x2b, 0x3f, - 0x3a, 0xb2, 0xbb, 0x7d, 0xf8, 0xd3, 0x66, 0x93, 0x8d, 0xec, 0xde, 0x49, 0x64, 0xd8, 0x24, 0x64, - 0xbb, 0xd1, 0xd9, 0x47, 0xe2, 0xe9, 0xbb, 0xfb, 0x89, 0x11, 0xaf, 0xf4, 0x30, 0xd5, 0xba, 0xb2, - 0xca, 0x4e, 0x51, 0xbe, 0x04, 0x2b, 0x20, 0xcc, 0x3c, 0xbe, 0xd3, 0x10, 0x09, 0x1e, 0xc2, 0xa9, - 0xb0, 0x13, 0xb9, 0x36, 0xd8, 0x46, 0xca, 0x31, 0xb4, 0x00, 0x28, 0x56, 0x55, 0xd8, 0xe5, 0x23, - 0x57, 0x04, 0x97, 0xdd, 0xc0, 0x38, 0x7c, 0xdd, 0x3e, 0x13, 0x74, 0xe5, 0x94, 0xe0, 0xb2, 0x1c, - 0xd0, 0x05, 0x93, 0x05, 0x35, 0x47, 0x3b, 0xe5, 0x88, 0x7a, 0x4c, 0x6c, 0x6c, 0x0f, 0xf7, 0x61, - 0x05, 0x94, 0x49, 0x7b, 0x7b, 0x35, 0x04, 0x6e, 0x31, 0x31, 0xd8, 0x0d, 0x4f, 0x26, 0x39, 0x32, - 0xc0, 0xdd, 0x58, 0x14, 0x4a, 0x65, 0xce, 0x70, 0xbd, 0x1c, 0xdf, 0x30, 0x2e, 0x5d, 0x00, 0x71, - 0x75, 0xa2, 0x3f, 0x4e, 0x12, 0x21, 0x98, 0x84, 0xba, 0x63, 0x92, 0xe2, 0x6a, 0x8e, 0x41, 0x67, - 0xf1, 0x1c, 0xd3, 0x31, 0xe8, 0x69, 0xa9, 0x6e, 0x8b, 0x63, 0x5f, 0x8b, 0x26, 0xf3, 0x0a, 0x1e, - 0x96, 0x9b, 0x14, 0x3b, 0x56, 0x39, 0xaa, 0xe4, 0xd9, 0x9e, 0xb9, 0xe8, 0xab, 0x2a, 0x54, 0x47, - 0x43, 0xb1, 0x4b, 0x40, 0x93, 0x83, 0xd1, 0x4a, 0x62, 0x34, 0x63, 0x1e, 0x1b, 0xd6, 0x4a, 0xe5, - 0x81, 0x23, 0xda, 0xa3, 0x24, 0x27, 0xd5, 0xe1, 0x3e, 0x66, 0x2c, 0x03, 0xe3, 0x2d, 0x64, 0xd6, - 0x30, 0x45, 0xf2, 0x4b, 0x89, 0xfe, 0x3d, 0xc9, 0x8f, 0x2f, 0x38, 0x5a, 0x8c, 0xf4, 0x34, 0xc1, - 0x16, 0x99, 0x34, 0x54, 0xb1, 0x2f, 0xd1, 0xbf, 0x1f, 0x44, 0xfb, 0x30, 0x31, 0xee, 0xf4, 0x55, - 0xc7, 0xf7, 0x4b, 0x2f, 0x0b, 0xba, 0x32, 0x20, 0xa0, 0x7e, 0x41, 0x72, 0xc2, 0xac, 0xdc, 0x25, - 0xa4, 0x06, 0x8e, 0x24, 0xdb, 0x76, 0x1b, 0xe7, 0xba, 0x2d, 0xd8, 0xc1, 0xa9, 0x07, 0xe0, 0x3a, - 0x5e, 0x1b, 0x6c, 0xbb, 0x36, 0xb8, 0x2d, 0xf9, 0xcd, 0xd9, 0xe4, 0xce, 0x4e, 0xf3, 0x0f, 0x0a, - 0x65, 0x20, 0x73, 0x21, 0x6e, 0xa0, 0x87, 0xfb, 0x86, 0x9b, 0xbf, 0x1f, 0x3e, 0xd7, 0x97, 0x88, - 0xef, 0xab, 0xdd, 0x52, 0xcf, 0x64, 0x61, 0x00, 0x2f, 0xa0, 0x98, 0xc1, 0x79, 0xf6, 0xdb, 0x87, - 0x77, 0x0c, 0x11, 0xef, 0xb4, 0x2f, 0x3e, 0x4e, 0x0c, 0x5c, 0x1c, 0x3e, 0x77, 0x62, 0xf8, 0xdb, - 0x4b, 0x60, 0x6d, 0xc4, 0xc6, 0xb4, 0x5b, 0x66, 0x00, 0xb8, 0x16, 0xee, 0xc9, 0x41, 0x53, 0xad, - 0xa9, 0x3f, 0x18, 0x68, 0x7b, 0x95, 0x8d, 0xc1, 0xf1, 0xe6, 0x7d, 0x6d, 0xbc, 0x0d, 0xdc, 0xab, - 0x8b, 0x03, 0xc6, 0x9e, 0xe3, 0x3c, 0xcf, 0x7a, 0xef, 0x09, 0xac, 0x36, 0x41, 0x57, 0x5a, 0x04, - 0xd4, 0x2c, 0x48, 0xae, 0x43, 0x90, 0x6b, 0x8d, 0x4f, 0x3e, 0x36, 0xf6, 0x1c, 0xe7, 0xb1, 0x2e, - 0xec, 0x06, 0x3e, 0x71, 0x62, 0xe8, 0x64, 0x74, 0xb6, 0x8f, 0x9c, 0x6e, 0x01, 0x19, 0x94, 0xc9, - 0x29, 0xef, 0x39, 0x6b, 0xb4, 0x1d, 0x1c, 0xbe, 0xbc, 0x3b, 0x75, 0xd6, 0x3c, 0x77, 0x7e, 0xb1, - 0x38, 0xbd, 0xc6, 0xe5, 0x44, 0xbc, 0x23, 0x79, 0xec, 0xd4, 0xc8, 0xe1, 0x66, 0x48, 0x5a, 0xc0, - 0x9e, 0x1f, 0x60, 0x8f, 0xce, 0xe7, 0xa0, 0x05, 0x65, 0xfe, 0x58, 0xed, 0x3b, 0xb6, 0x60, 0x88, - 0xb6, 0xa7, 0xe8, 0xb7, 0xee, 0xa7, 0xe8, 0x25, 0x67, 0x30, 0x30, 0x9c, 0x84, 0xe5, 0xd2, 0xcd, - 0xbc, 0x43, 0x6b, 0xd0, 0x78, 0x9c, 0x3a, 0xa7, 0x3a, 0x4a, 0x2e, 0x12, 0x4e, 0xba, 0x40, 0xcb, - 0xe4, 0x27, 0x00, 0x3f, 0xc3, 0xf8, 0xa9, 0xee, 0x9d, 0x55, 0xd5, 0x40, 0x66, 0x16, 0x83, 0x43, - 0xc5, 0x13, 0xc5, 0x4f, 0x8c, 0x74, 0xef, 0x37, 0x06, 0x9b, 0x54, 0xda, 0x43, 0x0c, 0xa1, 0xc9, - 0x5b, 0x82, 0x91, 0x58, 0x23, 0xc0, 0x6b, 0x55, 0x45, 0x94, 0x3c, 0x45, 0xcb, 0x75, 0xa5, 0x5c, - 0x72, 0x54, 0xc9, 0x4b, 0x1d, 0xc3, 0xdb, 0x62, 0xec, 0x7b, 0x7f, 0xc8, 0x31, 0x84, 0x0d, 0x93, - 0xe6, 0xdc, 0x3a, 0x26, 0x2d, 0xfd, 0x58, 0xd0, 0x95, 0x6e, 0x01, 0x1d, 0x12, 0xa4, 0x51, 0x0e, - 0x46, 0xf6, 0x27, 0x5b, 0x2f, 0x99, 0x24, 0x59, 0xff, 0xde, 0xe4, 0xc7, 0x17, 0xc8, 0xa5, 0xc3, - 0xd8, 0x87, 0x60, 0x41, 0x90, 0xd2, 0xd3, 0x3c, 0x6e, 0x7b, 0x8d, 0x3d, 0x67, 0x13, 0xfd, 0x7b, - 0xa0, 0x35, 0xb4, 0xb8, 0xda, 0xb4, 0x8d, 0xa6, 0x95, 0xb9, 0xda, 0xb4, 0xcd, 0x81, 0x22, 0x53, - 0xbd, 0xad, 0x45, 0x9e, 0xf8, 0xe3, 0x62, 0x0e, 0x7a, 0x38, 0xed, 0xcc, 0x1e, 0x0c, 0x74, 0xf2, - 0x1b, 0x1b, 0x15, 0xe8, 0x02, 0x7a, 0xbc, 0x3a, 0xbc, 0xa0, 0x1a, 0x9c, 0x14, 0xc8, 0x8e, 0x5a, - 0xf0, 0x80, 0x54, 0xee, 0x6f, 0x6e, 0x26, 0x19, 0xfc, 0x9e, 0xa3, 0x16, 0xeb, 0xe6, 0x8c, 0x76, - 0x3e, 0xf2, 0x46, 0xfe, 0xea, 0xa4, 0xc3, 0x34, 0x64, 0xeb, 0x3e, 0xea, 0x37, 0xe2, 0xfb, 0xf9, - 0x96, 0x0c, 0xcd, 0x5c, 0x1b, 0x6c, 0x23, 0xda, 0x18, 0x6e, 0x37, 0xc8, 0xa3, 0xdc, 0xd2, 0x65, - 0xec, 0x39, 0xe6, 0x40, 0x36, 0xff, 0x3f, 0x01, 0x4d, 0x75, 0xee, 0xad, 0x58, 0x60, 0x21, 0x00, - 0xc1, 0x24, 0x45, 0x2d, 0x48, 0x2e, 0x40, 0xe3, 0xa3, 0x8d, 0xb5, 0xb5, 0x5a, 0x34, 0x4a, 0x5d, - 0x18, 0xc9, 0x4f, 0xb3, 0x86, 0x5e, 0x17, 0x0c, 0xdc, 0xd6, 0x65, 0x98, 0xc5, 0x32, 0x6d, 0xe4, - 0x80, 0x55, 0x20, 0xfc, 0x12, 0x7d, 0x76, 0xc2, 0x11, 0xeb, 0x24, 0xec, 0x64, 0xde, 0x63, 0x4e, - 0xfb, 0x5e, 0x4c, 0x16, 0x39, 0xcc, 0x69, 0x0b, 0xbf, 0x9e, 0x40, 0x9d, 0x39, 0xef, 0x22, 0x8e, - 0xac, 0xb6, 0x68, 0x75, 0x16, 0xe0, 0x94, 0xd0, 0xea, 0x63, 0xc5, 0x8f, 0xd8, 0xd6, 0x6c, 0x2a, - 0x23, 0xd9, 0x3f, 0x13, 0x10, 0x0a, 0xe0, 0x65, 0x70, 0x91, 0x5a, 0x5b, 0x04, 0x5d, 0xd9, 0x29, - 0x48, 0x5c, 0x85, 0xbc, 0x85, 0x88, 0x83, 0x69, 0xe4, 0x54, 0xb5, 0x72, 0xad, 0x52, 0xb5, 0x7a, - 0x21, 0x28, 0x96, 0x18, 0x5b, 0x9d, 0x18, 0xda, 0x95, 0x3c, 0xdc, 0x07, 0x0a, 0xa4, 0x44, 0xff, - 0x40, 0xb2, 0x27, 0x5e, 0x74, 0x6d, 0xb0, 0x6d, 0x6d, 0xa5, 0xba, 0xaa, 0x6a, 0xb5, 0xb2, 0xb6, - 0x72, 0xa1, 0xd1, 0xf9, 0x39, 0x24, 0xfb, 0x4c, 0xb6, 0xb5, 0x8e, 0xec, 0xee, 0x24, 0xa4, 0x0a, - 0x25, 0x52, 0x8a, 0x78, 0xca, 0x18, 0x3e, 0xa0, 0x72, 0x73, 0x10, 0xff, 0x62, 0xa9, 0x27, 0x41, - 0x01, 0x16, 0xd0, 0x15, 0xbf, 0xa5, 0x9c, 0x5c, 0x9f, 0xe8, 0x6f, 0x4f, 0x9d, 0x3b, 0x41, 0x70, - 0xf6, 0xc9, 0x9d, 0x89, 0x78, 0x47, 0x62, 0x60, 0x20, 0x31, 0x74, 0x00, 0xde, 0xbb, 0x91, 0x1d, - 0x43, 0x0e, 0xe5, 0x25, 0x11, 0x78, 0xe3, 0x74, 0x4e, 0x46, 0x4b, 0x37, 0xb3, 0xa0, 0xb9, 0x36, - 0xd8, 0xb6, 0x3a, 0x1c, 0x53, 0x35, 0x7f, 0x60, 0x6b, 0xaa, 0xb7, 0xd5, 0xd2, 0x2b, 0xae, 0x76, - 0xe9, 0xb2, 0x6e, 0x8d, 0x54, 0xfe, 0x5a, 0x48, 0xa3, 0xdd, 0x22, 0x86, 0x2d, 0x4e, 0xfd, 0x56, - 0x94, 0x99, 0xa5, 0x50, 0xb6, 0x81, 0x11, 0xf8, 0x44, 0x02, 0xc8, 0xab, 0x28, 0xc9, 0xad, 0x29, - 0x21, 0x58, 0x26, 0xd9, 0xda, 0x04, 0x09, 0x58, 0x18, 0xeb, 0x0a, 0xd4, 0x63, 0x62, 0xb0, 0x7b, - 0xf8, 0xcc, 0x69, 0xa3, 0x73, 0x1f, 0xec, 0x15, 0x23, 0x24, 0x40, 0x49, 0xb6, 0xc8, 0xa9, 0x25, - 0xbb, 0x43, 0xf4, 0xfd, 0x5b, 0x76, 0xa8, 0xcc, 0xb3, 0x78, 0x46, 0x1b, 0x3b, 0x57, 0x44, 0xf0, - 0xac, 0x8b, 0x86, 0x87, 0xef, 0x30, 0xd5, 0xab, 0x93, 0x73, 0xf3, 0x60, 0x1f, 0x26, 0xdc, 0x38, - 0xfb, 0xb0, 0xf7, 0x76, 0xb2, 0x0f, 0x51, 0x5d, 0x69, 0x40, 0x21, 0xc9, 0x03, 0x87, 0xc8, 0x15, - 0x44, 0x78, 0x8a, 0x41, 0x19, 0xae, 0x14, 0x3e, 0xd8, 0x0e, 0x78, 0xd4, 0x99, 0x42, 0x9a, 0xa0, - 0x59, 0x5c, 0x48, 0x99, 0x72, 0xb6, 0xd5, 0x9e, 0x2f, 0xf6, 0xae, 0x1c, 0xea, 0xb5, 0xfd, 0x23, - 0x20, 0xfa, 0x61, 0x7b, 0xee, 0x2f, 0xa2, 0xbf, 0x59, 0xd0, 0x95, 0x6d, 0x02, 0xfa, 0x2b, 0xc9, - 0xeb, 0x18, 0xe4, 0x37, 0xc6, 0xf2, 0x0c, 0xdf, 0x96, 0x07, 0x78, 0x4f, 0x36, 0x9a, 0xbd, 0x2a, - 0x4c, 0xac, 0x0d, 0xd6, 0x86, 0x6d, 0xd2, 0xd8, 0xf5, 0xee, 0x27, 0xec, 0xd9, 0xf4, 0xa1, 0xbf, - 0xcd, 0xc7, 0x6b, 0xdc, 0x98, 0x1e, 0xaf, 0x1a, 0xbb, 0xa0, 0xe9, 0x45, 0x5d, 0x59, 0x44, 0x1f, - 0xaf, 0xc7, 0xcd, 0x7f, 0x7c, 0xf4, 0xc9, 0xba, 0x36, 0xd8, 0x96, 0xec, 0x69, 0x32, 0x4e, 0x9e, - 0x01, 0xe6, 0x76, 0xf8, 0x42, 0xf3, 0xf0, 0xe5, 0xdd, 0x4b, 0x97, 0x2c, 0xb9, 0x5e, 0x36, 0x41, - 0x17, 0x72, 0xf3, 0x84, 0xa9, 0x01, 0x4b, 0xe4, 0xb4, 0xc1, 0x8e, 0x38, 0xe0, 0xfd, 0x5a, 0xa6, - 0x2b, 0x8f, 0xda, 0x11, 0xc7, 0x0c, 0x86, 0x88, 0x6c, 0x99, 0x82, 0xc7, 0xa6, 0x45, 0x24, 0x61, - 0xe2, 0xd3, 0x6d, 0x18, 0x17, 0xa4, 0x37, 0xd1, 0xdf, 0x4b, 0x0e, 0xe6, 0xcc, 0x00, 0x13, 0xe6, - 0x24, 0xbf, 0x3a, 0xce, 0x45, 0x33, 0xf6, 0x80, 0xca, 0xff, 0x35, 0x1b, 0x15, 0xb8, 0xc7, 0x7e, - 0x30, 0x40, 0xf3, 0xb7, 0x63, 0x00, 0x4d, 0xb0, 0x57, 0xc5, 0xa0, 0xf9, 0x84, 0x71, 0x7e, 0x57, - 0xba, 0x1d, 0xb2, 0x9b, 0xd9, 0xdf, 0x6b, 0x48, 0x25, 0x49, 0x66, 0xd3, 0x1e, 0x4c, 0xc6, 0xa5, - 0xf0, 0x5b, 0xe5, 0x16, 0xf3, 0xfe, 0x7d, 0x16, 0x9a, 0xab, 0x6a, 0xf5, 0x74, 0xe0, 0xe5, 0x91, - 0x70, 0xfd, 0x5d, 0x01, 0xc0, 0x4a, 0x3b, 0x00, 0x2e, 0x36, 0x31, 0x26, 0x01, 0xc0, 0xd9, 0x84, - 0x7a, 0xc4, 0xe4, 0x1c, 0x47, 0x3d, 0xde, 0x2b, 0x90, 0x23, 0xa1, 0x11, 0x33, 0x6d, 0x93, 0xbc, - 0x80, 0xbd, 0x88, 0xd6, 0xd6, 0xe3, 0xf9, 0x67, 0x78, 0x00, 0xff, 0xf7, 0x6c, 0x34, 0xcf, 0x7b, - 0xcc, 0x07, 0x03, 0xdc, 0xd6, 0x8f, 0x01, 0xdc, 0xf8, 0xd0, 0xf7, 0x89, 0x81, 0x0e, 0xc7, 0xe6, - 0xdc, 0x77, 0x80, 0x46, 0x93, 0xa7, 0x65, 0x3a, 0x16, 0x9a, 0x88, 0x35, 0x35, 0xb0, 0x93, 0x3f, - 0x62, 0xf6, 0x44, 0xf2, 0x6f, 0x1f, 0x34, 0xe0, 0xdf, 0xbe, 0xc2, 0xff, 0x94, 0x8d, 0x0a, 0xca, - 0xeb, 0x34, 0x7f, 0x88, 0xd8, 0xa6, 0xdd, 0x15, 0x68, 0x7b, 0xd5, 0x0e, 0x6d, 0xbf, 0xe4, 0xf5, - 0x2a, 0x00, 0x6d, 0x60, 0x8c, 0x67, 0x7c, 0xf4, 0x71, 0x72, 0xff, 0x85, 0x7b, 0x0f, 0x73, 0xb7, - 0x5d, 0x7e, 0xf5, 0x9e, 0xae, 0xc4, 0x50, 0x44, 0x4a, 0xbb, 0xf3, 0x72, 0x11, 0x7f, 0x3b, 0x13, - 0xfd, 0xbd, 0xfc, 0x7e, 0x50, 0xaa, 0xd6, 0x0b, 0x96, 0xed, 0xe6, 0x72, 0xb0, 0x43, 0xbc, 0xd9, - 0xdc, 0xbe, 0x1c, 0xf4, 0x90, 0xc7, 0x47, 0x1f, 0x0c, 0x08, 0xff, 0xd5, 0x18, 0x20, 0xdc, 0x16, - 0xfa, 0x06, 0x06, 0xe9, 0xde, 0x09, 0xbb, 0x77, 0xbf, 0x40, 0x75, 0xbb, 0xa0, 0x2b, 0xad, 0x02, - 0xda, 0x25, 0x48, 0xe9, 0x8f, 0x42, 0x0e, 0xf2, 0x86, 0xc3, 0x16, 0x30, 0xef, 0xff, 0x2a, 0x11, - 0xef, 0x18, 0xee, 0x3b, 0x05, 0x24, 0x53, 0xa2, 0x3f, 0x6e, 0x0c, 0x6e, 0x4f, 0xf6, 0x9e, 0x62, - 0x31, 0x58, 0xcc, 0x2a, 0x20, 0x85, 0x07, 0x9a, 0x87, 0x77, 0x0c, 0x01, 0xf0, 0xf3, 0xcb, 0x27, - 0xc0, 0xdf, 0xfb, 0xa9, 0xd1, 0xdf, 0x0f, 0xee, 0x4f, 0x85, 0xff, 0x35, 0x1b, 0xcd, 0x71, 0x4d, - 0x64, 0xbd, 0x7c, 0xa7, 0x91, 0xc0, 0xeb, 0x76, 0x81, 0x4d, 0x99, 0xc9, 0xd1, 0x12, 0x24, 0xb0, - 0x38, 0x23, 0x12, 0xc0, 0xc2, 0x94, 0xcb, 0xa9, 0xfd, 0x67, 0x9f, 0x28, 0x7e, 0xc2, 0x68, 0xd9, - 0x65, 0xb4, 0x7e, 0xed, 0x10, 0xdc, 0x3c, 0x88, 0x18, 0x61, 0xab, 0xae, 0x6c, 0x41, 0x31, 0x29, - 0xc3, 0x41, 0xdc, 0x31, 0x9c, 0x70, 0x20, 0x07, 0xcd, 0xf5, 0xfc, 0xec, 0x4f, 0x58, 0xe1, 0x2e, - 0x62, 0x05, 0xcb, 0xc4, 0x3a, 0xd3, 0x61, 0xdc, 0x4d, 0xbc, 0xf0, 0xdf, 0x66, 0x41, 0x56, 0x24, - 0x6f, 0xb4, 0x70, 0x8f, 0xec, 0x56, 0xc5, 0x0f, 0x50, 0x6e, 0xb8, 0x31, 0xd6, 0xd0, 0x18, 0x23, - 0x97, 0x6b, 0x83, 0xae, 0xbc, 0x2d, 0x91, 0x22, 0x79, 0x1d, 0x58, 0xf9, 0x59, 0x86, 0x3c, 0x9d, - 0x7d, 0x23, 0x4d, 0xad, 0x46, 0xd3, 0xa0, 0xef, 0xbd, 0x60, 0x40, 0x5b, 0x68, 0x34, 0x9f, 0x1d, - 0xd9, 0x71, 0x16, 0x6a, 0x8b, 0x8a, 0x7d, 0x1b, 0xfc, 0xd1, 0x60, 0xed, 0x42, 0xe3, 0x58, 0x3c, - 0xd9, 0xf3, 0x25, 0x29, 0xb4, 0x52, 0xad, 0x73, 0xa5, 0x2a, 0x19, 0xbe, 0xf4, 0x79, 0x5d, 0x79, - 0x16, 0x3d, 0x2d, 0xcd, 0x76, 0xee, 0x4a, 0x3a, 0xbb, 0x59, 0x5e, 0x47, 0x56, 0xf8, 0x3f, 0x67, - 0xa3, 0x39, 0x5e, 0xdb, 0xf9, 0x60, 0x40, 0xd9, 0x1a, 0x9b, 0x36, 0x68, 0x7e, 0x5a, 0x9b, 0x20, - 0x9c, 0x97, 0x18, 0x3b, 0xc4, 0x01, 0xb8, 0x4d, 0xc3, 0xe8, 0xc6, 0x9d, 0x51, 0xea, 0x5e, 0x82, - 0x1a, 0xe1, 0xa0, 0x32, 0x9c, 0x86, 0xfc, 0x38, 0xd1, 0x60, 0x7d, 0xf2, 0x85, 0x45, 0x5d, 0x53, - 0x6f, 0x05, 0x73, 0x45, 0x0e, 0x3b, 0x3e, 0x90, 0x1c, 0x7d, 0x38, 0x11, 0x4d, 0xb2, 0x6d, 0x84, - 0xf8, 0x2c, 0x38, 0x95, 0x32, 0xf8, 0xc0, 0x67, 0x44, 0x8a, 0xe4, 0xe9, 0x44, 0x20, 0x15, 0xdf, - 0x17, 0x24, 0x2e, 0x21, 0x55, 0x15, 0x2a, 0xa9, 0x14, 0x9f, 0x43, 0xe3, 0x49, 0x7a, 0x79, 0x2b, - 0xc5, 0xdc, 0x3c, 0x89, 0x96, 0xc9, 0xd3, 0xc8, 0xd5, 0xda, 0xd5, 0x9c, 0x1a, 0xda, 0x97, 0xe8, - 0x1f, 0xa8, 0xaa, 0x56, 0x69, 0x9d, 0xf8, 0x26, 0xca, 0xa7, 0x03, 0x62, 0x1d, 0x4d, 0x36, 0xf5, - 0x83, 0x7a, 0x4a, 0xb2, 0x55, 0xc8, 0x8f, 0x41, 0x2a, 0x7c, 0x72, 0x38, 0x34, 0xf8, 0x1e, 0x80, - 0xcd, 0xf0, 0x8e, 0x21, 0x62, 0x61, 0x64, 0xeb, 0x23, 0xfe, 0x02, 0x65, 0x97, 0x57, 0xaf, 0xc3, - 0xc8, 0x76, 0x12, 0xdc, 0x1b, 0xf3, 0x37, 0xb5, 0x46, 0x2c, 0xaf, 0x5e, 0x47, 0xee, 0x9a, 0x59, - 0x2a, 0x2e, 0x42, 0xd9, 0xf5, 0x5a, 0x3d, 0xc9, 0x0c, 0x87, 0x2f, 0x85, 0xf9, 0x9b, 0xa6, 0x94, - 0x37, 0x76, 0x35, 0x1b, 0xbd, 0x87, 0x69, 0xfb, 0x7a, 0xad, 0x5e, 0x7c, 0x16, 0x65, 0xaf, 0xa8, - 0x5e, 0x67, 0x65, 0x83, 0x7b, 0x54, 0x32, 0x7f, 0xcb, 0xf3, 0xa0, 0xfd, 0x0a, 0x3a, 0x38, 0x3f, - 0xc3, 0x25, 0xaa, 0xd9, 0x44, 0xec, 0x14, 0x50, 0x6e, 0x14, 0xeb, 0xca, 0x88, 0xcc, 0xdd, 0xa4, - 0xb0, 0x25, 0x52, 0x24, 0xbf, 0x4b, 0x0e, 0x11, 0x2b, 0x3b, 0xe8, 0x18, 0x2d, 0xc9, 0xe3, 0x97, - 0x92, 0xed, 0xe7, 0x6c, 0x6e, 0xe8, 0x34, 0x66, 0xf7, 0xb5, 0xc1, 0xd6, 0x6b, 0x83, 0x6d, 0xc4, - 0x34, 0xa8, 0xd8, 0x57, 0x51, 0xb9, 0xb2, 0x72, 0x6d, 0x25, 0xfe, 0xb3, 0x5c, 0xad, 0x54, 0xd6, - 0xe2, 0xbf, 0x96, 0x2b, 0x55, 0x2b, 0x2b, 0x2b, 0x8a, 0x7d, 0x55, 0xab, 0xab, 0xd6, 0x56, 0x29, - 0x2b, 0xab, 0xde, 0x50, 0xd6, 0x56, 0xad, 0x59, 0xad, 0x92, 0x6f, 0x8a, 0x0a, 0xca, 0xfd, 0x20, - 0x1c, 0xd2, 0x98, 0xc4, 0xbe, 0xc8, 0x64, 0x72, 0x72, 0xcc, 0x22, 0x6a, 0xda, 0xc8, 0x52, 0xe1, - 0x3b, 0x77, 0x9c, 0x74, 0x14, 0xff, 0x64, 0x47, 0xb1, 0x10, 0x07, 0xea, 0x0d, 0x5d, 0xf9, 0xb5, - 0x1d, 0xc5, 0xbe, 0xe2, 0xc8, 0x8d, 0xcf, 0x63, 0x5c, 0x6c, 0x2a, 0xc6, 0x46, 0x5e, 0x98, 0x18, - 0x68, 0xa6, 0xca, 0x6c, 0x63, 0x48, 0x37, 0xbe, 0xfa, 0x38, 0x11, 0xef, 0x60, 0x43, 0x15, 0xd9, - 0x11, 0xed, 0x72, 0x9e, 0xee, 0x43, 0x56, 0xc6, 0x34, 0x8e, 0xee, 0x2b, 0x70, 0x7c, 0x99, 0xe5, - 0x20, 0xe3, 0xe9, 0xbc, 0xa5, 0x28, 0x7b, 0x7d, 0x75, 0x39, 0x89, 0x03, 0x85, 0x6f, 0xb1, 0xf9, - 0x9b, 0xba, 0xc0, 0xb3, 0xbe, 0xeb, 0xab, 0xcb, 0x7d, 0x55, 0x15, 0xaa, 0x59, 0x27, 0xbe, 0xc9, - 0x6c, 0x4c, 0xf3, 0x69, 0xd4, 0xd7, 0x65, 0xcc, 0xc6, 0xf4, 0x69, 0xbe, 0x23, 0x58, 0x97, 0x5a, - 0x0a, 0xab, 0x4b, 0x97, 0x8d, 0x8b, 0xe6, 0x83, 0x98, 0xbc, 0xf8, 0x95, 0xd1, 0xf3, 0x8d, 0xb9, - 0xb1, 0x7b, 0x8e, 0x1b, 0x17, 0x3f, 0x4e, 0xf5, 0xb6, 0x32, 0xdb, 0xd3, 0xd5, 0x28, 0xb7, 0xc1, - 0x1f, 0x8d, 0xbe, 0x17, 0x20, 0xfe, 0xd7, 0x10, 0xa8, 0x0b, 0x8a, 0xe4, 0x22, 0x87, 0xc7, 0x38, - 0x35, 0xb8, 0x03, 0x82, 0x14, 0x0c, 0x95, 0x86, 0xcf, 0x7c, 0x6a, 0xf4, 0xed, 0x52, 0x49, 0x17, - 0xf1, 0x2d, 0x84, 0x4f, 0x15, 0x3b, 0x5e, 0x4f, 0x2a, 0xab, 0xd2, 0x95, 0xe5, 0x12, 0x39, 0x40, - 0xca, 0x9a, 0xb3, 0x83, 0x86, 0xf4, 0x93, 0xdc, 0x81, 0x3c, 0xef, 0x63, 0x01, 0x27, 0x41, 0x94, - 0x0d, 0x84, 0x6d, 0x22, 0xde, 0x51, 0xae, 0xa8, 0x78, 0x58, 0x51, 0x41, 0x79, 0x01, 0x6d, 0x4b, - 0xd0, 0x44, 0x0e, 0xc4, 0x63, 0xfa, 0x71, 0x5d, 0x29, 0x94, 0x58, 0xa1, 0x3c, 0xab, 0x5c, 0xf1, - 0x51, 0x10, 0x1d, 0x3e, 0xf7, 0xbd, 0x71, 0x72, 0x77, 0x55, 0x85, 0xd1, 0x79, 0x51, 0x65, 0x2d, - 0xc4, 0x3f, 0x59, 0x08, 0x41, 0x0d, 0xb3, 0x20, 0xdc, 0xaf, 0xeb, 0xca, 0x3a, 0xc9, 0x56, 0x21, - 0x57, 0x12, 0xb2, 0xe2, 0x8c, 0x3e, 0xdc, 0x6a, 0xe2, 0x81, 0x55, 0x4a, 0xcd, 0xda, 0x4a, 0xb5, - 0xd8, 0xf7, 0xeb, 0x35, 0xea, 0xab, 0xe6, 0xbf, 0x95, 0x6b, 0xcb, 0x2b, 0x8a, 0x7d, 0x50, 0xfa, - 0x36, 0xfe, 0xa1, 0xac, 0x5c, 0x49, 0x8d, 0xd7, 0x13, 0xfd, 0x71, 0x68, 0xa7, 0xda, 0x06, 0x15, - 0xff, 0x82, 0x26, 0x35, 0x86, 0x6a, 0x6a, 0xdf, 0xd1, 0x02, 0x8d, 0x75, 0x38, 0x12, 0xe7, 0x34, - 0xbc, 0x51, 0xf8, 0xf3, 0xf6, 0x1a, 0xb9, 0x62, 0xf8, 0xfc, 0x0e, 0x23, 0x7e, 0x1a, 0xe0, 0xd4, - 0x7a, 0x8a, 0x9b, 0x06, 0x97, 0x0c, 0x9f, 0x38, 0x9b, 0x3a, 0x19, 0x37, 0x3a, 0xb7, 0x27, 0xfa, - 0x3b, 0xa0, 0xd1, 0xb5, 0xc1, 0xb6, 0xa5, 0x50, 0x8a, 0xe3, 0x6e, 0x5a, 0x15, 0xaa, 0x7d, 0xd0, - 0xc2, 0x2b, 0xd9, 0x90, 0x69, 0xf4, 0x41, 0xe4, 0x78, 0x97, 0xdb, 0x5e, 0xdd, 0x19, 0x5e, 0xaf, - 0xee, 0xfd, 0xfe, 0xd8, 0xae, 0xd5, 0x95, 0xd7, 0xd0, 0x1a, 0x29, 0xed, 0x11, 0xdc, 0xdc, 0x53, - 0xfb, 0xcf, 0xb3, 0xd1, 0x3c, 0xf0, 0xc7, 0x86, 0x54, 0x01, 0xc1, 0xd0, 0x2a, 0xff, 0xfb, 0x35, - 0xc1, 0x0f, 0xb4, 0x1b, 0xf5, 0x05, 0x76, 0xb1, 0x7e, 0x5e, 0xcc, 0xab, 0x1d, 0x31, 0xbe, 0x8e, - 0xc6, 0xd7, 0x07, 0x43, 0xe6, 0xc7, 0xf0, 0x1d, 0x98, 0x54, 0xf6, 0x92, 0xf9, 0xb4, 0xd2, 0x32, - 0xb9, 0x28, 0x71, 0xf9, 0x5c, 0x72, 0xff, 0xa5, 0x10, 0xe7, 0x53, 0xe6, 0x27, 0xe1, 0x53, 0x82, - 0xa1, 0x4d, 0x60, 0xd0, 0x98, 0xe8, 0xdf, 0x3b, 0x72, 0xa4, 0x8b, 0xa6, 0x43, 0xa5, 0x5d, 0xf1, - 0xc8, 0xb0, 0x0c, 0x7c, 0x45, 0xd8, 0xc8, 0x50, 0x36, 0xc6, 0x91, 0xf7, 0xd8, 0x46, 0x86, 0xae, - 0xe2, 0x32, 0x17, 0xbb, 0xfa, 0x98, 0xae, 0x14, 0x70, 0xec, 0x6a, 0x3e, 0xb0, 0xab, 0x89, 0x78, - 0xdc, 0xd8, 0x77, 0xd8, 0x4a, 0xc1, 0x6e, 0x31, 0xa8, 0x6f, 0xe9, 0xca, 0x1b, 0xe8, 0x75, 0x29, - 0xe3, 0xae, 0xcb, 0x12, 0xcc, 0x90, 0x6d, 0x6a, 0xb2, 0xa7, 0xc9, 0x38, 0xdf, 0x09, 0x1a, 0x2b, - 0x92, 0x28, 0xe5, 0xdc, 0xa5, 0x91, 0x23, 0x5d, 0x23, 0x9f, 0x1c, 0xb5, 0xf3, 0xa5, 0x85, 0xdd, - 0xd9, 0x68, 0x7e, 0x9a, 0xa1, 0x1f, 0x0c, 0x50, 0xf5, 0x00, 0xb1, 0x9c, 0xbb, 0x04, 0x62, 0x6f, - 0xeb, 0xca, 0x6f, 0xd1, 0x1b, 0x52, 0xe6, 0xfd, 0x93, 0x9f, 0x1b, 0xfb, 0xd9, 0x30, 0x9d, 0x1c, - 0xac, 0xb1, 0x70, 0xa7, 0xfd, 0x70, 0x2a, 0xb4, 0x68, 0x30, 0xa2, 0x05, 0xee, 0x12, 0xb8, 0x95, - 0xe3, 0xec, 0x16, 0xf4, 0x83, 0x04, 0xe4, 0x1e, 0xd1, 0x95, 0x05, 0x12, 0x5f, 0x2e, 0x4f, 0x71, - 0x00, 0x87, 0xca, 0xd7, 0x8a, 0x2f, 0x71, 0xf7, 0x1f, 0xe8, 0xe1, 0xc2, 0x8c, 0xf7, 0x1f, 0x32, - 0x1d, 0x5b, 0xb7, 0x9f, 0xc6, 0x7e, 0xcb, 0xbc, 0x0d, 0xf2, 0x32, 0xd7, 0x1e, 0x1f, 0x4b, 0xf6, - 0x7c, 0x64, 0xd9, 0x78, 0x1c, 0x38, 0x5f, 0x0c, 0xfb, 0x6c, 0xb4, 0xb6, 0x27, 0x2e, 0x1f, 0x1d, - 0xee, 0xdb, 0x06, 0xfe, 0xbb, 0x89, 0xfe, 0xa6, 0xe1, 0xdd, 0xdf, 0x26, 0x9b, 0xce, 0x38, 0xa5, - 0x35, 0xfc, 0x22, 0x0a, 0xbb, 0xb2, 0xd1, 0x82, 0x74, 0xdf, 0xff, 0x09, 0x48, 0xc6, 0xf6, 0x0e, - 0x79, 0x6c, 0xa0, 0x79, 0x5a, 0x0c, 0x4a, 0x4a, 0x1c, 0xf1, 0x3f, 0xe0, 0x04, 0xd9, 0xf1, 0x39, - 0x21, 0xe3, 0x60, 0x8e, 0x17, 0x64, 0xc0, 0x88, 0x77, 0x1c, 0x32, 0x56, 0x32, 0xc8, 0xc0, 0x66, - 0x3b, 0x00, 0x19, 0x10, 0x69, 0x8b, 0x2b, 0x97, 0x0b, 0x60, 0x0d, 0x0e, 0xa9, 0x44, 0xf2, 0xc0, - 0x79, 0x95, 0x6f, 0x26, 0x56, 0xb8, 0x40, 0x64, 0xa1, 0x09, 0x64, 0x16, 0x88, 0x88, 0x70, 0x75, - 0x33, 0x02, 0x8a, 0x78, 0x40, 0x40, 0xb9, 0xf5, 0xfe, 0x50, 0xa3, 0xbf, 0x8e, 0x18, 0xa2, 0xfd, - 0x59, 0x57, 0x3e, 0x90, 0x48, 0x91, 0xdc, 0x00, 0x26, 0xb6, 0xfc, 0x40, 0xc5, 0xf4, 0x04, 0x9d, - 0x15, 0x26, 0x59, 0xb7, 0xad, 0x1b, 0xe0, 0xc3, 0xbc, 0x83, 0x4d, 0x4d, 0x20, 0xaf, 0x32, 0x49, - 0xe8, 0xaf, 0x0e, 0x98, 0xd4, 0x20, 0x0e, 0x64, 0x64, 0xa2, 0xae, 0xde, 0x53, 0x23, 0x9f, 0xe3, - 0x10, 0x0e, 0xd8, 0x80, 0x0e, 0x06, 0x1c, 0xd9, 0xdd, 0x3e, 0xdc, 0x77, 0x40, 0x25, 0x5f, 0x2e, - 0x0d, 0xe9, 0xca, 0x66, 0x14, 0x94, 0x32, 0x1f, 0x96, 0xfc, 0x88, 0xe7, 0xe9, 0xf3, 0xf0, 0x9b, - 0x0e, 0x40, 0x57, 0x63, 0xe2, 0xc4, 0x12, 0xaa, 0xfe, 0x9d, 0x27, 0xac, 0xf2, 0x57, 0xed, 0x7e, - 0x87, 0xd5, 0xea, 0x31, 0xc8, 0x55, 0xf9, 0x74, 0x10, 0x96, 0x5c, 0x95, 0xf3, 0x2b, 0xba, 0x5f, - 0xa4, 0xab, 0x77, 0x06, 0xfa, 0xaf, 0x08, 0xe8, 0xe1, 0x4a, 0xec, 0x0b, 0xcc, 0x7a, 0xd0, 0xc8, - 0x77, 0x77, 0x01, 0xfe, 0xe9, 0xa2, 0x46, 0x9b, 0x82, 0xbc, 0x00, 0x5c, 0x99, 0x2d, 0x04, 0x80, - 0x0d, 0x19, 0x93, 0xad, 0x9f, 0x81, 0x19, 0x9d, 0x83, 0x12, 0xdb, 0x97, 0x8d, 0x7c, 0xe9, 0x47, - 0xfc, 0xe9, 0x9d, 0x19, 0xe5, 0xa6, 0xd5, 0xe8, 0x4a, 0x35, 0x5a, 0x2d, 0x8d, 0xba, 0x85, 0xb2, - 0x94, 0xf9, 0x54, 0xf8, 0x75, 0x15, 0xfe, 0x2b, 0x01, 0xf9, 0x2a, 0x82, 0xd1, 0x7b, 0x76, 0xd3, - 0xd6, 0xe9, 0x8a, 0x8a, 0xaa, 0xa5, 0x51, 0xe7, 0x20, 0x2f, 0x30, 0x9a, 0xbf, 0x19, 0x39, 0xd4, - 0x3b, 0xc6, 0xab, 0xf6, 0x61, 0x36, 0x7a, 0x24, 0xc3, 0x90, 0x3f, 0xdd, 0xb5, 0xb1, 0x61, 0xb5, - 0xd1, 0xf7, 0x50, 0x96, 0x32, 0x9f, 0x8b, 0xed, 0xb2, 0xfd, 0x1d, 0x42, 0xd3, 0xc0, 0x0b, 0xd2, - 0xc4, 0xf1, 0xf4, 0x76, 0xfd, 0x19, 0xe5, 0xc5, 0xfc, 0xd1, 0xcd, 0x58, 0xa2, 0xcc, 0x42, 0x40, - 0xfc, 0x4e, 0x62, 0x85, 0xb2, 0x0a, 0xb8, 0x9e, 0xe5, 0x74, 0x01, 0x89, 0x1c, 0x4d, 0xb6, 0x8a, - 0x37, 0xe2, 0xda, 0x60, 0x1b, 0xf5, 0xe7, 0x5a, 0x1b, 0xb6, 0xca, 0x38, 0x7b, 0xcf, 0xe5, 0x91, - 0x70, 0x3d, 0xa9, 0x48, 0xf5, 0xb6, 0xaa, 0x6c, 0x74, 0x71, 0x13, 0x93, 0xef, 0xc2, 0x99, 0xae, - 0xc1, 0x07, 0x43, 0xe4, 0xbb, 0xf9, 0xe4, 0xd3, 0x58, 0x6e, 0x74, 0xbd, 0xec, 0xc9, 0xc8, 0x52, - 0x35, 0x9f, 0x89, 0x65, 0xab, 0x56, 0xaf, 0x50, 0xc7, 0x13, 0x51, 0xae, 0x3a, 0xbe, 0x66, 0x5d, - 0x79, 0x79, 0x65, 0x4d, 0x8d, 0x9a, 0x0b, 0xe2, 0x5b, 0x75, 0xfc, 0xda, 0xaa, 0x55, 0x95, 0x6b, - 0xd6, 0xad, 0x65, 0x72, 0xdb, 0xdf, 0x39, 0xdc, 0x26, 0x20, 0x15, 0x28, 0xbb, 0x3d, 0x4f, 0x13, - 0x75, 0x19, 0x8e, 0x96, 0xc4, 0xc4, 0xd1, 0xc9, 0x3d, 0xa7, 0x46, 0xf6, 0x1f, 0x49, 0x1e, 0xba, - 0x90, 0xe8, 0x8f, 0xc3, 0xc5, 0x4a, 0x76, 0x76, 0xa5, 0x4e, 0xc6, 0xad, 0x20, 0x30, 0xec, 0x86, - 0x3d, 0x85, 0xc6, 0x45, 0x63, 0xfe, 0x48, 0x8c, 0xb0, 0xe1, 0x0b, 0x74, 0x65, 0xae, 0x04, 0x25, - 0xb2, 0x48, 0x82, 0x7c, 0x75, 0xf5, 0x99, 0x67, 0x73, 0xe8, 0xc2, 0xc8, 0xa1, 0x6f, 0x55, 0xa8, - 0x12, 0x17, 0xa1, 0x6c, 0x2d, 0x14, 0x20, 0xa6, 0xf5, 0x20, 0x49, 0xd7, 0x42, 0x01, 0xda, 0xc3, - 0x3c, 0xb8, 0xa3, 0xc7, 0x48, 0x0f, 0xb3, 0x42, 0x5c, 0x89, 0x26, 0x69, 0xef, 0x6b, 0xb5, 0x8d, - 0xe6, 0x3d, 0x59, 0x1b, 0xac, 0xd7, 0x78, 0x99, 0xba, 0xbd, 0x86, 0x8e, 0x41, 0xe2, 0x3f, 0xc1, - 0x18, 0xf6, 0x26, 0xe2, 0x3a, 0x34, 0xb1, 0xb6, 0x31, 0x12, 0xd1, 0x42, 0xb1, 0x9a, 0x98, 0xd6, - 0x40, 0x24, 0xec, 0x4f, 0xea, 0xca, 0x12, 0x89, 0x2f, 0x97, 0x1f, 0x21, 0x23, 0xf5, 0x7e, 0x6a, - 0xf4, 0x9c, 0x85, 0xf1, 0x18, 0x75, 0x46, 0x82, 0x14, 0xf0, 0xed, 0xc5, 0xd7, 0x50, 0x7e, 0x34, - 0xa6, 0x35, 0xd4, 0x98, 0x37, 0x2c, 0x54, 0xab, 0xe1, 0x64, 0x0b, 0x13, 0xca, 0x4a, 0x74, 0xa5, - 0x50, 0xb2, 0x55, 0x38, 0xa6, 0x88, 0xc7, 0xbb, 0x5e, 0x36, 0x4e, 0x17, 0xb2, 0xf2, 0x04, 0xd5, - 0xd6, 0x52, 0x3c, 0x22, 0x98, 0xdb, 0xab, 0x35, 0xd0, 0x98, 0xa9, 0xc5, 0xde, 0xf1, 0xa1, 0xb9, - 0x8b, 0xbd, 0xc8, 0x9c, 0x0a, 0x89, 0x1e, 0xba, 0x4e, 0x57, 0x5e, 0x91, 0xa0, 0xbf, 0xfc, 0x32, - 0x7c, 0x13, 0x12, 0x25, 0xc2, 0x37, 0x39, 0xdf, 0x80, 0x81, 0xe1, 0xd3, 0xdb, 0x40, 0x50, 0x0b, - 0x85, 0xa0, 0x50, 0x35, 0x49, 0xd3, 0xc1, 0xed, 0x46, 0x7f, 0x7f, 0xf2, 0xd0, 0x85, 0xeb, 0x65, - 0xe3, 0xbb, 0x85, 0x9c, 0x3c, 0x61, 0xea, 0x0c, 0x15, 0x46, 0x14, 0x7f, 0xef, 0x16, 0xa8, 0x97, - 0xe9, 0xca, 0xc3, 0xbc, 0x40, 0x9d, 0x2d, 0xd4, 0x02, 0xfd, 0x1b, 0x09, 0x93, 0xf2, 0x06, 0x1f, - 0x56, 0x01, 0x04, 0xee, 0x2f, 0xe0, 0x2f, 0x58, 0x61, 0x15, 0xec, 0x5f, 0xc0, 0x01, 0x15, 0xa8, - 0xe6, 0xd5, 0x23, 0x01, 0x8a, 0xd5, 0x51, 0x5c, 0x66, 0xe5, 0x89, 0x60, 0xf9, 0x32, 0x6d, 0x79, - 0x22, 0xe0, 0xee, 0x62, 0xd5, 0x71, 0x22, 0x1e, 0xa7, 0x11, 0xcb, 0x66, 0x58, 0x69, 0x21, 0xaa, - 0x10, 0xaa, 0xf3, 0x47, 0x63, 0x40, 0x82, 0x11, 0xe1, 0x3b, 0xd6, 0x8a, 0x70, 0xc5, 0x72, 0x01, - 0x31, 0x4a, 0xef, 0xdf, 0x93, 0xfc, 0xf2, 0x04, 0x89, 0x43, 0x09, 0x77, 0x92, 0x6b, 0x35, 0x67, - 0x35, 0x42, 0xd6, 0xb1, 0x79, 0x84, 0x7f, 0x94, 0xec, 0x59, 0x01, 0x5d, 0xc4, 0xab, 0xd9, 0x99, - 0x0f, 0x0a, 0xd9, 0xa0, 0x2b, 0xf5, 0x68, 0xb3, 0xe4, 0x46, 0x7b, 0x34, 0x95, 0x1f, 0xbd, 0x0c, - 0x60, 0xa8, 0xcc, 0xd0, 0xd2, 0x15, 0xc1, 0x76, 0xfd, 0xae, 0x08, 0x70, 0xd4, 0x76, 0xfb, 0x0b, - 0x6b, 0x13, 0xb9, 0x44, 0xd4, 0xff, 0x93, 0x80, 0x44, 0xfe, 0x6b, 0x0f, 0xc6, 0x5b, 0xb7, 0x70, - 0x74, 0x9e, 0x80, 0xa4, 0x7e, 0xbb, 0x2a, 0xa0, 0xa9, 0xaa, 0x16, 0x8b, 0x6c, 0xe5, 0xdf, 0x90, - 0x57, 0x98, 0xe3, 0x19, 0xcb, 0x08, 0x26, 0x4a, 0xa4, 0x48, 0xce, 0x83, 0x3d, 0x36, 0x89, 0x92, - 0x82, 0xc8, 0x2c, 0xc8, 0xe1, 0xea, 0xce, 0xc8, 0x43, 0x5c, 0xd5, 0x56, 0x58, 0x51, 0x74, 0x61, - 0xdd, 0x25, 0xba, 0xe2, 0xb3, 0xa2, 0xe8, 0xce, 0x84, 0xb1, 0x80, 0x07, 0x34, 0x3a, 0xf7, 0x0d, - 0x7f, 0x77, 0x11, 0xdf, 0xc9, 0xf1, 0x91, 0x71, 0x78, 0x60, 0x16, 0x3b, 0xb7, 0xf4, 0x05, 0x5d, - 0x79, 0x0e, 0x3d, 0x23, 0xb9, 0xe6, 0x2a, 0x4f, 0x85, 0xce, 0x66, 0x11, 0x3d, 0x76, 0xf2, 0x71, - 0x2e, 0x81, 0xe3, 0xff, 0x2d, 0xa0, 0x69, 0x5c, 0xcf, 0x07, 0x2d, 0x1d, 0x55, 0x7a, 0xc6, 0x0e, - 0x3f, 0x4b, 0xc0, 0xd8, 0x4d, 0x67, 0xb1, 0x40, 0xad, 0x28, 0x93, 0xe4, 0x90, 0x53, 0xb9, 0x68, - 0x1a, 0x40, 0x24, 0x7f, 0xca, 0x2b, 0x1c, 0xa7, 0xbc, 0x38, 0xcd, 0x29, 0x03, 0xd6, 0x79, 0x2c, - 0xfd, 0x21, 0xff, 0x60, 0xde, 0x7c, 0xf2, 0x7a, 0xe7, 0xdc, 0xf4, 0xeb, 0x3d, 0xee, 0x36, 0xbe, - 0xde, 0xb9, 0xb7, 0xe9, 0xf5, 0xb6, 0x9e, 0xda, 0xf1, 0xde, 0x4f, 0xad, 0xeb, 0x66, 0xdc, 0xbd, - 0xa7, 0x76, 0x99, 0x85, 0x1e, 0xf2, 0xb8, 0xc7, 0xca, 0x0a, 0xb2, 0x0d, 0x4b, 0xc5, 0x17, 0xdb, - 0xfe, 0x58, 0x91, 0x26, 0xb7, 0xfd, 0x85, 0x79, 0x51, 0x57, 0x4a, 0xd1, 0xb3, 0x92, 0x1b, 0x5c, - 0xe4, 0xa9, 0x30, 0x8d, 0xcc, 0x88, 0xe6, 0xbf, 0x0a, 0x48, 0xe4, 0xbb, 0xfe, 0xd8, 0x30, 0xcd, - 0x8e, 0x2c, 0x34, 0x0d, 0xd8, 0x84, 0x3b, 0x82, 0x69, 0x62, 0xce, 0xe8, 0xbe, 0xd8, 0xca, 0x82, - 0xb9, 0xcf, 0xae, 0xe4, 0xbd, 0x63, 0xad, 0xb9, 0x99, 0x77, 0xb0, 0xfd, 0x9b, 0xc4, 0xd0, 0xe5, - 0x64, 0xcf, 0xe7, 0x60, 0x39, 0x07, 0x60, 0x63, 0x9c, 0x6b, 0x4b, 0xb6, 0xe0, 0x18, 0xb2, 0x97, - 0x8e, 0xe1, 0x10, 0xbd, 0x1f, 0x19, 0xcd, 0xa7, 0x52, 0x03, 0x2d, 0xc9, 0xde, 0x4f, 0xf8, 0x60, - 0xbc, 0xa5, 0x8b, 0x75, 0xa5, 0x18, 0x49, 0x92, 0x7b, 0x61, 0x72, 0x3e, 0xc9, 0x31, 0x8b, 0x57, - 0xc0, 0xee, 0x43, 0x61, 0x53, 0x16, 0x75, 0xac, 0x7e, 0x90, 0x6e, 0xc1, 0xab, 0x63, 0xb8, 0x05, - 0x58, 0x9f, 0x03, 0xb7, 0x60, 0x16, 0x1f, 0xeb, 0xd3, 0x75, 0x11, 0x76, 0x0b, 0x68, 0xf2, 0x0a, - 0x2d, 0xc6, 0xdf, 0x82, 0xe5, 0x8e, 0x5b, 0xb0, 0x48, 0x57, 0xa6, 0xb1, 0x5b, 0x30, 0xde, 0x6c, - 0xe9, 0x1b, 0xcb, 0x25, 0x28, 0x2d, 0xd1, 0x15, 0x09, 0x2d, 0x94, 0x1c, 0xc3, 0xcb, 0xb3, 0xc0, - 0xa8, 0xcf, 0x9a, 0x09, 0x89, 0x83, 0xf9, 0x0f, 0xb2, 0x70, 0x72, 0xdb, 0x1f, 0x32, 0x3c, 0xb2, - 0xe8, 0x97, 0xce, 0x63, 0x28, 0xad, 0xd4, 0x95, 0x32, 0xb4, 0x4c, 0x72, 0x6e, 0xc0, 0x8d, 0x06, - 0x9e, 0xfc, 0xfb, 0x5c, 0x34, 0x65, 0x65, 0x30, 0x6a, 0x3b, 0xce, 0x5a, 0xb7, 0xbd, 0x79, 0xa5, - 0xae, 0x3c, 0xcf, 0xb3, 0x49, 0x8b, 0x2c, 0x26, 0x66, 0x6c, 0x91, 0x26, 0x41, 0x4b, 0x61, 0x8b, - 0x16, 0xc0, 0x71, 0x4a, 0x59, 0xd4, 0x7e, 0x7b, 0x21, 0xcf, 0x29, 0xcd, 0x75, 0x7c, 0x84, 0x8f, - 0x3e, 0x07, 0x23, 0xfa, 0x78, 0xfe, 0xe8, 0x25, 0x8b, 0x3f, 0xca, 0xb6, 0xf2, 0xda, 0x78, 0xf3, - 0x47, 0xd8, 0x28, 0x9c, 0xa6, 0xb8, 0x25, 0xdc, 0xd1, 0x4b, 0xd6, 0x93, 0x95, 0xc3, 0xf5, 0xf7, - 0x7c, 0xb2, 0xf8, 0xfe, 0x34, 0x09, 0x04, 0x2f, 0x9f, 0x19, 0x77, 0xf7, 0xe5, 0x33, 0x11, 0x46, - 0xab, 0xe5, 0x5a, 0x66, 0x6a, 0x94, 0x56, 0x5b, 0xc5, 0xd3, 0x6a, 0x0b, 0x79, 0x2a, 0xad, 0xd8, - 0xc7, 0x8c, 0xec, 0x08, 0x95, 0x66, 0x19, 0xd6, 0x11, 0x2a, 0xad, 0xd8, 0xb7, 0x7c, 0x8d, 0x5a, - 0x5e, 0xc9, 0x22, 0x25, 0x14, 0x31, 0xb2, 0x6d, 0x1d, 0xb1, 0xae, 0xac, 0x26, 0x12, 0x09, 0xf3, - 0x8d, 0x25, 0xd6, 0x95, 0xd5, 0xf2, 0x92, 0xe4, 0xb1, 0xae, 0x44, 0xfc, 0x23, 0xa3, 0x27, 0x9e, - 0x3c, 0xd2, 0x97, 0xe8, 0xdf, 0x6b, 0xc5, 0xd6, 0xac, 0xaa, 0x26, 0xc1, 0xfa, 0xfa, 0x2e, 0x19, - 0xf1, 0xfd, 0xcc, 0x4f, 0x98, 0x98, 0x5e, 0x56, 0x8b, 0xbf, 0xf6, 0x72, 0xb8, 0xc7, 0x11, 0x77, - 0x6c, 0x72, 0xd4, 0x47, 0x61, 0x44, 0xce, 0xb1, 0x7e, 0xf8, 0xf2, 0xee, 0xe4, 0xc0, 0x49, 0x7a, - 0xd0, 0xd8, 0xfc, 0xc6, 0x26, 0x45, 0xdd, 0x23, 0xe8, 0xca, 0x2e, 0x01, 0xed, 0x10, 0x24, 0xe7, - 0xa5, 0x97, 0x1b, 0x60, 0x4a, 0xe6, 0x76, 0xde, 0xa5, 0xe8, 0x84, 0x5f, 0x64, 0x43, 0xce, 0xe6, - 0x07, 0x09, 0x7f, 0xd5, 0x64, 0x36, 0x87, 0xc2, 0xf8, 0x0b, 0xec, 0x2c, 0x31, 0xfe, 0x5a, 0x60, - 0x8b, 0x49, 0xc8, 0x1d, 0x8b, 0xcd, 0xe5, 0x5d, 0x43, 0xa8, 0xce, 0x1f, 0xd3, 0x60, 0x27, 0x88, - 0x42, 0xca, 0x7b, 0x68, 0xf3, 0xbd, 0x26, 0x43, 0x3f, 0xc6, 0x86, 0x36, 0x86, 0x3e, 0x34, 0x5a, - 0xdb, 0x93, 0x3d, 0x4d, 0xc9, 0x83, 0xe7, 0x1d, 0xb1, 0xa5, 0x54, 0x6e, 0x60, 0xc6, 0x68, 0x3a, - 0xf7, 0x5c, 0x16, 0x09, 0xca, 0x04, 0x1a, 0x38, 0x4d, 0xf8, 0xc3, 0x81, 0xc7, 0xd0, 0x02, 0x00, - 0x55, 0x2e, 0xb5, 0xd2, 0x9a, 0x06, 0x93, 0xc6, 0xa7, 0x78, 0xf3, 0x0f, 0x68, 0x5a, 0x30, 0x8a, - 0xa5, 0xbe, 0x15, 0xe1, 0xf7, 0x42, 0xa0, 0x7e, 0xc0, 0x07, 0x99, 0x07, 0xf6, 0x93, 0xee, 0x5a, - 0xf9, 0x17, 0x38, 0xa7, 0x53, 0x49, 0x20, 0xfc, 0x5e, 0xa8, 0x04, 0x62, 0xda, 0x06, 0x8a, 0x49, - 0x54, 0xdc, 0xe6, 0x6d, 0xc3, 0xe7, 0xfa, 0x89, 0x70, 0x18, 0x72, 0x26, 0xba, 0xfb, 0x8b, 0xef, - 0xa1, 0x3c, 0xed, 0xfd, 0x06, 0x7f, 0x28, 0xc0, 0xd8, 0xf0, 0x37, 0x75, 0xe5, 0x75, 0x89, 0x15, - 0xca, 0x2b, 0xe9, 0x5f, 0xc4, 0xec, 0x21, 0x75, 0xee, 0x50, 0xf2, 0x9b, 0x03, 0x38, 0xc6, 0x5b, - 0x0b, 0x18, 0xf7, 0x5d, 0x1b, 0x6c, 0x8d, 0xf8, 0x43, 0x81, 0x70, 0x7d, 0xb1, 0xaf, 0x4e, 0xf3, - 0x47, 0x63, 0x25, 0xef, 0xf9, 0xa3, 0x31, 0xad, 0xd8, 0x57, 0x1f, 0x8e, 0xc6, 0x4a, 0x1a, 0xc2, - 0x81, 0x68, 0xb1, 0xaf, 0x21, 0x12, 0x0c, 0x47, 0x82, 0xb1, 0xad, 0x2a, 0x1b, 0x57, 0xfc, 0x00, - 0x89, 0xf5, 0xfe, 0xf7, 0x2b, 0xeb, 0x1b, 0x62, 0x5b, 0xcb, 0x1a, 0xeb, 0x36, 0x03, 0x82, 0x22, - 0x36, 0x53, 0xbf, 0xd2, 0x95, 0x15, 0x92, 0x47, 0xb5, 0xbc, 0xb4, 0xde, 0xff, 0x7e, 0x89, 0x66, - 0x16, 0x96, 0x6c, 0x68, 0xac, 0xdb, 0x5c, 0x02, 0xe1, 0x53, 0x8a, 0x8d, 0xf6, 0x03, 0xc9, 0x2f, - 0x4f, 0x90, 0x88, 0x12, 0xd8, 0x1a, 0xc6, 0x52, 0x90, 0x7b, 0x0c, 0x23, 0xfe, 0x11, 0x4d, 0x8e, - 0xd2, 0x7d, 0xa8, 0xd0, 0xea, 0xfc, 0x5b, 0x89, 0x31, 0x74, 0x8d, 0xae, 0x54, 0x4b, 0x8e, 0x2a, - 0xf9, 0x25, 0x1a, 0x59, 0x0a, 0x1b, 0x7d, 0x74, 0x75, 0x18, 0x27, 0xbb, 0x47, 0x0e, 0x5c, 0x06, - 0x3e, 0xcd, 0x18, 0x6c, 0x32, 0xce, 0xec, 0x35, 0x5a, 0x4e, 0x1a, 0xe7, 0xba, 0xe1, 0xf3, 0xcc, - 0xe4, 0x71, 0xe9, 0x12, 0xa3, 0x65, 0xd7, 0x88, 0x7e, 0x4c, 0x75, 0x8c, 0x27, 0xfe, 0xff, 0x05, - 0x34, 0x93, 0x15, 0xad, 0x0b, 0x85, 0x34, 0x2d, 0xa0, 0x05, 0x38, 0x16, 0x11, 0x22, 0xa7, 0x49, - 0xde, 0x6d, 0xe4, 0x30, 0x77, 0xde, 0x8d, 0xa4, 0xa2, 0x24, 0x16, 0xac, 0xd7, 0x8a, 0x09, 0xbf, - 0x07, 0x11, 0x72, 0x7a, 0x5b, 0x8d, 0xef, 0x9b, 0x61, 0x8e, 0xe6, 0x83, 0x4a, 0x5c, 0x4d, 0x3e, - 0x4e, 0x0d, 0xf4, 0xa6, 0x3e, 0x8b, 0x8f, 0x1c, 0xfa, 0xda, 0x38, 0xd9, 0x6d, 0x9c, 0xdf, 0x07, - 0x33, 0x34, 0xba, 0x3a, 0x86, 0x3f, 0xf9, 0x22, 0xdd, 0xf4, 0xbd, 0xe7, 0x21, 0xfe, 0x17, 0x01, - 0xcd, 0xb7, 0x6a, 0x62, 0xc1, 0xba, 0xe0, 0x07, 0x58, 0xa3, 0xb1, 0xf6, 0x9d, 0x88, 0xe6, 0x7f, - 0x27, 0x5c, 0x17, 0x20, 0xe2, 0x6a, 0x12, 0x3c, 0x32, 0x73, 0x5b, 0x79, 0x87, 0xc0, 0x2f, 0xcb, - 0x6a, 0x51, 0x12, 0x7b, 0x27, 0xa2, 0x45, 0xcd, 0x26, 0xc5, 0x10, 0xc6, 0x85, 0x5c, 0x67, 0x9c, - 0xe1, 0x61, 0xe4, 0x70, 0x8b, 0xd1, 0x34, 0x68, 0x2d, 0x8f, 0x4b, 0x24, 0x64, 0xe2, 0xc8, 0xa1, - 0x8e, 0x44, 0xbc, 0x03, 0xd6, 0x99, 0x3a, 0xf2, 0xbd, 0xd1, 0xb2, 0x2b, 0xd9, 0xb7, 0x1f, 0x4e, - 0x0a, 0xd0, 0xea, 0xc8, 0xa1, 0xaf, 0xad, 0x2c, 0x1c, 0xfd, 0xf1, 0x5f, 0x2e, 0x51, 0x33, 0x4f, - 0x52, 0x6c, 0x17, 0xd0, 0x43, 0xd1, 0xcd, 0x41, 0x48, 0x01, 0xf1, 0xeb, 0x60, 0xec, 0x9d, 0x95, - 0xe1, 0x5a, 0x7f, 0x5d, 0x4d, 0x2c, 0x1c, 0x31, 0x91, 0xe7, 0x78, 0x0c, 0xa6, 0x6b, 0x74, 0x65, - 0xa5, 0x94, 0xbe, 0x95, 0xbc, 0xd8, 0xb8, 0x3c, 0x94, 0x3a, 0x70, 0x2a, 0xd9, 0xd3, 0x9a, 0xec, - 0xf9, 0xd2, 0xe8, 0x39, 0x6f, 0xf4, 0x1e, 0x36, 0xb6, 0x9f, 0x65, 0xd6, 0x09, 0xfc, 0x84, 0x20, - 0x7b, 0x5b, 0xfa, 0xb1, 0xc4, 0x8f, 0x05, 0x34, 0xdb, 0x56, 0x5b, 0xb3, 0x35, 0x1a, 0xd3, 0xea, - 0xab, 0xc3, 0x81, 0x28, 0x09, 0x1f, 0x89, 0x23, 0x08, 0xa5, 0x6b, 0x23, 0x2f, 0x87, 0xb9, 0x6c, - 0x6e, 0xdc, 0xa0, 0x95, 0x44, 0x71, 0xb1, 0x6f, 0x75, 0x8d, 0xf9, 0xcc, 0x1e, 0xfd, 0xb8, 0xc2, - 0xaf, 0xd5, 0x87, 0x43, 0x35, 0x5a, 0x8c, 0x99, 0x71, 0x56, 0x87, 0x03, 0xee, 0x59, 0xc2, 0x14, - 0xd3, 0x7d, 0x40, 0xec, 0x12, 0xd0, 0xdc, 0xe0, 0xa6, 0x50, 0x38, 0xa2, 0xb1, 0xf1, 0xa2, 0xdc, - 0xce, 0x92, 0x20, 0x35, 0x38, 0x4b, 0x57, 0xa6, 0x76, 0x72, 0x31, 0x4c, 0xd4, 0x9a, 0x14, 0xcd, - 0x01, 0x36, 0x7c, 0xee, 0x44, 0xea, 0xdc, 0x21, 0xc7, 0x74, 0x32, 0x0d, 0x25, 0x6e, 0x13, 0xd0, - 0xf4, 0xf0, 0xe6, 0xb5, 0xe1, 0x98, 0xbf, 0x6e, 0x5d, 0x28, 0xa2, 0xf9, 0x03, 0x5b, 0xcb, 0xc3, - 0x8d, 0xa1, 0x18, 0x96, 0xe5, 0x4f, 0x82, 0xd3, 0xf3, 0xaa, 0x97, 0x7f, 0x19, 0xde, 0x5c, 0x12, - 0x33, 0x4b, 0x4b, 0x1a, 0xa1, 0xb8, 0xa4, 0xd6, 0x2c, 0x2f, 0x06, 0x24, 0xeb, 0x23, 0x85, 0x3e, - 0x16, 0xb7, 0x24, 0x79, 0xe0, 0xfc, 0xc8, 0xee, 0x4e, 0xd5, 0x6b, 0x2c, 0xf1, 0x8a, 0x80, 0x1e, - 0xaa, 0xf7, 0xbf, 0xcf, 0x57, 0x54, 0x6b, 0x91, 0x5a, 0x2d, 0x14, 0x33, 0xef, 0xd1, 0x44, 0x3c, - 0x93, 0x0f, 0x05, 0x5d, 0xe9, 0x14, 0xa4, 0xf4, 0xed, 0xe4, 0x88, 0x89, 0x0a, 0xed, 0x53, 0x6a, - 0x60, 0xb5, 0xc5, 0xa4, 0x88, 0x40, 0x06, 0x0e, 0x31, 0x42, 0xd0, 0x58, 0xd3, 0x00, 0x9b, 0x24, - 0x03, 0x0b, 0x13, 0x86, 0x70, 0x9b, 0x64, 0xef, 0x49, 0x80, 0x2a, 0xa3, 0xe5, 0x88, 0xb1, 0xad, + 0x00, 0x05, 0x1d, 0x0b, 0x0d, 0x01, 0xb3, 0xf2, 0x3c, 0x1e, 0x7a, 0x11, 0x8d, 0x27, 0xc0, 0x46, + 0x78, 0xb3, 0x47, 0x75, 0xe5, 0x21, 0x89, 0x96, 0xc9, 0x93, 0xed, 0x58, 0x08, 0xc3, 0xf8, 0xfb, + 0x82, 0x4a, 0xeb, 0xc5, 0xd7, 0xd0, 0xf8, 0xe8, 0x3b, 0xe1, 0xf7, 0xaa, 0xdf, 0xa3, 0x6e, 0x04, + 0x58, 0x67, 0x47, 0xcb, 0xe4, 0x22, 0xd2, 0xbd, 0x6f, 0x57, 0xea, 0xf8, 0x36, 0x42, 0x17, 0x7f, + 0x75, 0x20, 0x75, 0x32, 0xbe, 0x90, 0xea, 0x19, 0xda, 0xe1, 0x77, 0x91, 0x4a, 0xfb, 0xf0, 0x9c, + 0x28, 0x7f, 0x67, 0x7c, 0x70, 0x67, 0xe8, 0x4c, 0x48, 0xc4, 0x32, 0xb2, 0x5d, 0x20, 0xb4, 0xa0, + 0xb3, 0x2a, 0xfc, 0x1f, 0xb2, 0xd0, 0x14, 0xd6, 0xfd, 0xc1, 0xb8, 0x32, 0xbf, 0xb2, 0x31, 0x5b, + 0xde, 0x90, 0xe2, 0x29, 0xb0, 0x20, 0x0f, 0x11, 0x27, 0xb0, 0xa0, 0x9e, 0x42, 0xce, 0x2d, 0x90, + 0x1f, 0xb1, 0x6d, 0xda, 0x98, 0x2e, 0x07, 0xe5, 0xed, 0x8f, 0x0b, 0x48, 0x24, 0xc3, 0xf1, 0x00, + 0x7e, 0x6b, 0xd0, 0x53, 0xfa, 0xaa, 0xae, 0xbc, 0x82, 0x96, 0x4b, 0x1e, 0x23, 0xcb, 0x3f, 0xcf, + 0x74, 0xdc, 0xe6, 0xed, 0x80, 0x15, 0x73, 0x87, 0x9e, 0xca, 0x42, 0xd3, 0x6d, 0x03, 0x3d, 0x18, + 0x07, 0xbf, 0xda, 0x86, 0x2b, 0x0b, 0xbc, 0x0e, 0x1e, 0x0b, 0x95, 0xc6, 0x7a, 0xf8, 0x7e, 0x5d, + 0xf9, 0x1d, 0xfa, 0xad, 0xe4, 0xb5, 0x15, 0x72, 0x49, 0xba, 0x6d, 0xbc, 0x31, 0x60, 0x68, 0xca, + 0x02, 0x8c, 0x09, 0x8a, 0x4a, 0xf1, 0x4d, 0x94, 0x4f, 0x9d, 0x51, 0x38, 0x19, 0x0f, 0x46, 0x04, + 0xb6, 0x0a, 0xf9, 0xb1, 0x64, 0x4f, 0xdc, 0xf8, 0x78, 0x2f, 0x7c, 0xd2, 0xe8, 0x3d, 0x94, 0xfa, + 0xf2, 0x74, 0xa2, 0xff, 0x6b, 0x66, 0xde, 0x48, 0xd4, 0x9b, 0xb6, 0x3e, 0xe2, 0x2f, 0x50, 0x76, + 0x79, 0xf5, 0x3a, 0x7c, 0x12, 0x93, 0x60, 0x3b, 0xcd, 0xdf, 0xf2, 0x14, 0x58, 0x43, 0x79, 0xf5, + 0x3a, 0x9a, 0x25, 0xbe, 0xbc, 0x7a, 0x9d, 0xb8, 0x08, 0x65, 0xd7, 0x6b, 0xf5, 0x24, 0xe7, 0x3b, + 0x8e, 0x48, 0x6b, 0xfe, 0xa6, 0x58, 0xd5, 0xd8, 0xd5, 0x6c, 0xf4, 0x1e, 0xa6, 0xed, 0xeb, 0xb5, + 0x7a, 0xf1, 0x59, 0x94, 0xbd, 0xa2, 0x7a, 0x1d, 0xde, 0xfa, 0x49, 0xa0, 0x6d, 0x31, 0x7f, 0xcb, + 0xf3, 0xa0, 0xfd, 0x0a, 0x3a, 0x38, 0x3f, 0xc3, 0x25, 0xaa, 0xd9, 0xa4, 0x70, 0x60, 0x22, 0xca, + 0xa3, 0xdb, 0x2b, 0xbe, 0x81, 0xf2, 0x4c, 0xfc, 0xba, 0xda, 0x0a, 0x98, 0xfa, 0x92, 0xae, 0x3c, + 0x2f, 0xb1, 0x42, 0x79, 0x31, 0x4f, 0xab, 0x17, 0xfb, 0x92, 0xc7, 0xba, 0x12, 0xf1, 0x8f, 0x98, + 0xaa, 0x94, 0x4f, 0xf4, 0x46, 0xd8, 0x73, 0xd6, 0x55, 0x7c, 0x17, 0xc6, 0xc6, 0x1b, 0x9b, 0x65, + 0x99, 0x6a, 0xb0, 0x42, 0xf9, 0x65, 0x42, 0xd8, 0x11, 0x8b, 0x62, 0x92, 0x0d, 0x0d, 0x5b, 0xbf, + 0x91, 0x21, 0xf5, 0xb6, 0xaa, 0x8a, 0x72, 0xf8, 0x7b, 0x61, 0xf9, 0xfa, 0x55, 0x8b, 0xab, 0x2a, + 0xca, 0x8b, 0x8a, 0x8d, 0xce, 0x3e, 0xb2, 0xdf, 0x6c, 0x28, 0xf1, 0x59, 0x94, 0x8b, 0x49, 0x12, + 0x4a, 0x87, 0x61, 0x90, 0x23, 0x45, 0xf2, 0x74, 0x02, 0x6b, 0xf1, 0x7d, 0xf4, 0x7c, 0xaa, 0x2a, + 0x54, 0x52, 0x29, 0x3e, 0x67, 0xe1, 0x01, 0xce, 0x74, 0x9e, 0xe1, 0x81, 0x69, 0x3c, 0x1e, 0x48, + 0xf4, 0x0f, 0x54, 0x55, 0x5b, 0x2f, 0xc8, 0x72, 0x9e, 0x5a, 0x1b, 0x47, 0x95, 0xf5, 0x8f, 0xf3, + 0xd4, 0x5a, 0x81, 0x83, 0x4e, 0x2b, 0xf7, 0xa2, 0xd3, 0x96, 0x42, 0x62, 0xfa, 0x5c, 0xeb, 0xf3, + 0xe6, 0x6f, 0x79, 0xa6, 0xa3, 0xef, 0xfa, 0xea, 0x72, 0x5f, 0x55, 0x05, 0x64, 0xae, 0x7f, 0x93, + 0xd9, 0xfb, 0x8f, 0xb7, 0xc4, 0x92, 0xd4, 0xde, 0xff, 0x69, 0xbe, 0xa3, 0xd1, 0x16, 0x37, 0x8e, + 0x1d, 0xb3, 0x6c, 0xbc, 0x2e, 0x5d, 0x36, 0x2e, 0x9a, 0xd7, 0x25, 0x79, 0xf1, 0x2b, 0xa3, 0xe7, + 0x1b, 0x13, 0x3e, 0xf6, 0x1c, 0x37, 0x2e, 0x7e, 0x9c, 0xea, 0x6d, 0x65, 0x3e, 0x01, 0x6b, 0x50, + 0x5e, 0x40, 0xdb, 0x12, 0x34, 0xb7, 0x89, 0x18, 0xcd, 0x3f, 0xa9, 0x2b, 0x4b, 0x24, 0x56, 0x28, + 0x3f, 0x56, 0xae, 0xb0, 0x4c, 0x7d, 0xc3, 0xe7, 0xbe, 0x37, 0x4e, 0xee, 0xae, 0xaa, 0x30, 0x3a, + 0x2f, 0xe2, 0xa0, 0x0e, 0xd6, 0x6d, 0x60, 0xed, 0xc5, 0x6f, 0x2d, 0x32, 0x1f, 0x0c, 0xe5, 0x3f, + 0x12, 0x74, 0xe5, 0x90, 0xc0, 0xe8, 0xfc, 0x36, 0x81, 0x27, 0xf1, 0x01, 0x72, 0x1d, 0x84, 0xbe, + 0x0f, 0x32, 0x56, 0x25, 0xfa, 0x7b, 0x2d, 0xe3, 0x61, 0x1f, 0xd8, 0xa5, 0x25, 0xfa, 0x7b, 0x8b, + 0x7d, 0x60, 0xdc, 0x6b, 0x16, 0x12, 0x8f, 0x3e, 0xb3, 0x90, 0x23, 0xe3, 0x49, 0x7f, 0xa0, 0xcc, + 0x68, 0x73, 0xae, 0x72, 0x2f, 0xab, 0x2c, 0x62, 0x14, 0xfe, 0x61, 0x01, 0x4d, 0xa6, 0xcb, 0x24, + 0x01, 0xd9, 0x50, 0x7a, 0xb2, 0x90, 0xe4, 0x18, 0xc4, 0x16, 0x22, 0x8e, 0x6e, 0x14, 0xd2, 0x79, + 0x5b, 0x5e, 0x66, 0x34, 0x93, 0x3c, 0xdc, 0x07, 0xc8, 0xe5, 0x6a, 0xd3, 0xb6, 0xf2, 0xea, 0x75, + 0x57, 0x9b, 0xb6, 0xad, 0xaa, 0x5c, 0x75, 0xb5, 0x69, 0xdb, 0x8a, 0xea, 0x75, 0xa9, 0xde, 0x56, + 0x72, 0xe7, 0x1d, 0x03, 0x8a, 0x6d, 0x02, 0xca, 0xfb, 0x20, 0x1c, 0x02, 0x4f, 0xb9, 0x89, 0xde, + 0xf8, 0xf7, 0x0d, 0x52, 0x0f, 0x5e, 0x61, 0xac, 0xb9, 0xbc, 0x82, 0xc9, 0x2a, 0x20, 0xe1, 0xa0, + 0x85, 0x29, 0x70, 0xf8, 0x1f, 0xb3, 0x9d, 0x79, 0x7f, 0xaf, 0x0d, 0xb6, 0xe1, 0x2e, 0x15, 0x0b, + 0xfd, 0x0d, 0x25, 0xd1, 0x77, 0xb4, 0xd0, 0x07, 0xef, 0x68, 0xa1, 0x92, 0xa7, 0x7c, 0x8b, 0x7d, + 0x4f, 0x3e, 0xb3, 0x64, 0xc9, 0x92, 0xa7, 0x8a, 0x54, 0x36, 0xa4, 0xd8, 0x2c, 0xa0, 0x71, 0x98, + 0x9d, 0xc1, 0x86, 0xf8, 0x13, 0xe5, 0x87, 0xbc, 0x36, 0x08, 0x33, 0x39, 0xb0, 0x3f, 0xd0, 0x58, + 0x7e, 0xc5, 0x01, 0xe1, 0xac, 0x95, 0xaf, 0xaa, 0xc2, 0x0e, 0x4c, 0x0b, 0x13, 0x03, 0xcd, 0xe5, + 0x0a, 0x99, 0xf8, 0x90, 0x8e, 0x83, 0xa4, 0x75, 0x30, 0xce, 0xa9, 0x48, 0x85, 0x01, 0xc5, 0x9d, + 0xc4, 0xca, 0x90, 0xa6, 0x2e, 0xc3, 0x21, 0x95, 0x26, 0xca, 0xf3, 0xbc, 0xa6, 0x43, 0xdb, 0x94, + 0x99, 0xcc, 0x8e, 0x64, 0xeb, 0xc6, 0xb0, 0x1e, 0xd5, 0x5c, 0xf1, 0xc9, 0xd1, 0xb8, 0xe0, 0x26, + 0x1c, 0xe6, 0xe7, 0xbb, 0x97, 0xfe, 0x46, 0x57, 0xd6, 0xa3, 0xb5, 0x12, 0x43, 0xb3, 0xf2, 0x2b, + 0xc4, 0x93, 0xc0, 0xf5, 0x7a, 0x39, 0x4d, 0xa7, 0xfa, 0x2e, 0x25, 0x3b, 0x4e, 0x19, 0xad, 0xed, + 0xa9, 0x2f, 0xfa, 0x92, 0x2d, 0x07, 0x8d, 0x93, 0x07, 0x47, 0x76, 0x9c, 0x85, 0x84, 0x93, 0xa0, + 0x58, 0x28, 0xfc, 0x07, 0x02, 0x9a, 0xb1, 0x32, 0x18, 0x8d, 0xd9, 0x8c, 0xc4, 0x54, 0xed, 0x0f, + 0x62, 0x04, 0xe5, 0x9b, 0x64, 0xe8, 0x7a, 0x6a, 0xa3, 0x26, 0x58, 0x2a, 0x39, 0x5b, 0x85, 0xfc, + 0x3c, 0x90, 0xad, 0x5b, 0xc8, 0x96, 0x30, 0x13, 0xb9, 0x77, 0xc2, 0xd1, 0x18, 0x6f, 0x15, 0x45, + 0xe8, 0x5c, 0xa3, 0xf9, 0xec, 0xc8, 0x8e, 0xb3, 0x94, 0xd4, 0xb5, 0x0d, 0x45, 0x63, 0x0c, 0x7a, + 0x4e, 0x48, 0x2e, 0x80, 0x17, 0x9b, 0xb7, 0x74, 0x03, 0xb6, 0xa0, 0xf0, 0xdf, 0x64, 0xa3, 0x99, + 0x1e, 0x5d, 0xee, 0x7f, 0xed, 0x9c, 0x9d, 0xd2, 0x4d, 0xab, 0x9d, 0x83, 0x98, 0xe3, 0x98, 0xde, + 0x11, 0x79, 0xa5, 0x1c, 0x11, 0x75, 0x81, 0x6a, 0xae, 0x49, 0x48, 0xa7, 0x34, 0x5b, 0x90, 0x59, + 0x69, 0x46, 0x6c, 0x0b, 0x9d, 0x2a, 0xb3, 0x47, 0x78, 0x95, 0x19, 0x38, 0x57, 0x8d, 0x31, 0x34, + 0xb1, 0xf7, 0x59, 0xc8, 0x0b, 0xd2, 0x9d, 0xdf, 0x28, 0xba, 0xb4, 0x7f, 0x4f, 0x4e, 0xb7, 0x9a, + 0xc4, 0xcd, 0xb7, 0x40, 0xf4, 0x45, 0xde, 0x2d, 0x4c, 0xa0, 0xaf, 0x5d, 0x3a, 0xb7, 0xb0, 0x9c, + 0x48, 0x56, 0x41, 0x80, 0xf7, 0x0a, 0x7b, 0x89, 0xbd, 0x79, 0x70, 0xd6, 0x3f, 0x1f, 0x35, 0xd8, + 0x21, 0x0c, 0x41, 0x9f, 0xb5, 0x7b, 0x92, 0x3e, 0xab, 0x43, 0xe0, 0xcc, 0x38, 0x80, 0xc0, 0xc0, + 0x96, 0xe7, 0x96, 0x19, 0x47, 0x2d, 0x33, 0xe3, 0x58, 0x98, 0x18, 0x3c, 0x6e, 0x74, 0x6e, 0x4f, + 0x1e, 0xba, 0x00, 0x54, 0xf2, 0x70, 0xdf, 0x29, 0x12, 0x53, 0x08, 0x5b, 0x11, 0x59, 0xc9, 0x0d, + 0xf0, 0x71, 0x12, 0x3c, 0x84, 0x2d, 0x98, 0x8e, 0x83, 0x0b, 0x2f, 0x74, 0xe3, 0xcf, 0x0a, 0x1a, + 0x15, 0x71, 0x76, 0x21, 0x44, 0xb4, 0xe3, 0x7d, 0x44, 0xf2, 0x63, 0x44, 0x01, 0x8f, 0xd3, 0x27, + 0xc0, 0x59, 0x24, 0xfa, 0xf7, 0x5a, 0x2a, 0x60, 0xb8, 0xc0, 0xbb, 0x73, 0xd1, 0x2c, 0xaf, 0xfe, + 0x3f, 0xae, 0x1b, 0x3c, 0x28, 0xa0, 0xa9, 0xa4, 0xbf, 0x65, 0xa8, 0x9d, 0x8b, 0x07, 0x7e, 0xc1, + 0x39, 0xb0, 0xf7, 0x6e, 0xd1, 0xef, 0x39, 0xac, 0xb6, 0x55, 0x5d, 0x59, 0x23, 0xb9, 0x86, 0x96, + 0x9f, 0xe7, 0xd5, 0xf0, 0x36, 0x13, 0x66, 0xd2, 0x14, 0xaf, 0x75, 0x67, 0xe2, 0xd2, 0x5e, 0xf0, + 0x0e, 0x03, 0x09, 0x0a, 0x1c, 0xa8, 0xea, 0x1a, 0x0e, 0xe7, 0xde, 0x76, 0x22, 0xa0, 0xbc, 0x31, + 0x6a, 0xed, 0x6f, 0x17, 0x0a, 0x9a, 0xf3, 0x3b, 0x34, 0xd3, 0x73, 0x0f, 0x3c, 0xd4, 0xa8, 0x8b, + 0xed, 0x6a, 0xd4, 0x87, 0x3c, 0x6d, 0x19, 0x30, 0xcf, 0xc8, 0x69, 0x51, 0x7f, 0xa7, 0x2b, 0x6f, + 0xa2, 0xdf, 0x48, 0x69, 0xa0, 0x55, 0x7e, 0x02, 0x70, 0x9c, 0x03, 0xdc, 0x6f, 0x00, 0xd9, 0xb5, + 0x4d, 0x45, 0x93, 0x31, 0xfa, 0xb4, 0xb0, 0xdc, 0x0a, 0x2f, 0x17, 0xe2, 0xc7, 0x47, 0x0b, 0x46, + 0x0b, 0xa8, 0xea, 0xde, 0xa7, 0xfb, 0x7b, 0xc9, 0xe1, 0x48, 0x7c, 0xa3, 0x48, 0xf6, 0x4e, 0xe4, + 0xf6, 0x7b, 0xd1, 0xed, 0x4e, 0x7c, 0x23, 0xef, 0x46, 0x85, 0x87, 0x37, 0xf1, 0x63, 0xa3, 0x78, + 0x13, 0xc3, 0x20, 0x77, 0xc6, 0x99, 0x38, 0xa6, 0x45, 0x63, 0x77, 0xcd, 0x99, 0xf8, 0xb6, 0xe7, + 0xe7, 0xfb, 0xc9, 0x61, 0xf8, 0x36, 0x39, 0x0c, 0xff, 0x23, 0x8b, 0x29, 0x86, 0xc0, 0xaf, 0xe7, + 0xee, 0xa6, 0x1f, 0x6d, 0x59, 0x64, 0x59, 0x66, 0x3f, 0xda, 0x5c, 0x18, 0x64, 0x2c, 0x6e, 0xb4, + 0xcf, 0xa3, 0xdc, 0xf0, 0xc6, 0x8d, 0x51, 0x2d, 0x86, 0x9d, 0x8a, 0x27, 0x81, 0x24, 0x95, 0x14, + 0xc9, 0x53, 0x08, 0x19, 0xb9, 0xad, 0x33, 0x75, 0x66, 0x60, 0x64, 0x77, 0xe7, 0xf5, 0xb2, 0x1c, + 0x29, 0x6b, 0xe1, 0xcf, 0x54, 0x52, 0x2f, 0xbe, 0x80, 0xc6, 0xd5, 0x05, 0xeb, 0x83, 0x31, 0xec, + 0x4c, 0x8c, 0x45, 0x59, 0x73, 0x25, 0x28, 0x61, 0x16, 0x5c, 0x38, 0x1e, 0x55, 0xf2, 0xc0, 0x79, + 0xdc, 0x7b, 0x9c, 0x94, 0x5d, 0x30, 0x3c, 0x5e, 0x85, 0x26, 0x76, 0xf2, 0x6a, 0xea, 0xbd, 0x27, + 0xaf, 0xc4, 0x4a, 0xce, 0xef, 0x74, 0x1a, 0x9e, 0x4f, 0x91, 0xae, 0x3c, 0xcc, 0xf9, 0x9d, 0x4e, + 0x27, 0x91, 0xde, 0x87, 0x2f, 0xef, 0x4e, 0x0e, 0x90, 0xe0, 0x17, 0x14, 0xdf, 0x58, 0x7e, 0xa6, + 0xf7, 0x2a, 0x82, 0xaa, 0x47, 0x86, 0xfb, 0xe9, 0xb7, 0x39, 0xc3, 0xbd, 0xcd, 0x1e, 0x7a, 0xc6, + 0x98, 0xed, 0xa1, 0x4b, 0x4f, 0x08, 0xba, 0x72, 0x54, 0x40, 0xdd, 0x82, 0xe4, 0x78, 0x71, 0xe5, + 0xdd, 0x82, 0xd1, 0xf2, 0x99, 0x79, 0x94, 0x47, 0x4f, 0x24, 0x06, 0x2e, 0xf0, 0x1b, 0x4b, 0xde, + 0x70, 0xea, 0x17, 0x40, 0x5e, 0x7b, 0xdc, 0x2c, 0xd1, 0x1f, 0x57, 0x42, 0x01, 0xa3, 0xf9, 0x9b, + 0xd4, 0x37, 0x03, 0x56, 0xd0, 0x94, 0x63, 0x5d, 0x23, 0x27, 0x2e, 0xf1, 0xcd, 0x8c, 0xa6, 0x41, + 0x60, 0xf1, 0xcd, 0x36, 0x2d, 0x47, 0x8c, 0xcb, 0x43, 0xa9, 0x03, 0xa7, 0x48, 0x34, 0xa6, 0xfd, + 0x67, 0x93, 0xbd, 0x27, 0xf9, 0x8f, 0x16, 0xfe, 0x87, 0x71, 0x68, 0x8a, 0x6d, 0x72, 0x3f, 0x2e, + 0x8a, 0xf8, 0xbb, 0xf4, 0x14, 0xf1, 0x2f, 0xbd, 0x28, 0xe2, 0xfb, 0x85, 0x14, 0x6e, 0x4a, 0x4b, + 0x0a, 0xdf, 0x2d, 0x5e, 0xfc, 0x8e, 0x13, 0xc2, 0xc4, 0x1d, 0xc0, 0x09, 0x9d, 0x54, 0x4a, 0x73, + 0x03, 0x24, 0xef, 0xa1, 0x6c, 0xce, 0x31, 0x55, 0x6c, 0x16, 0x10, 0xaa, 0xf5, 0x87, 0x20, 0xba, + 0x4f, 0x80, 0x48, 0x9d, 0xf0, 0xb3, 0xca, 0x15, 0xcb, 0x6b, 0xf9, 0xf1, 0xad, 0xad, 0x80, 0x54, + 0x3b, 0x3b, 0x86, 0x8c, 0x93, 0xc7, 0x40, 0x6a, 0xbb, 0x90, 0xc6, 0x0e, 0x38, 0x0e, 0x7b, 0x17, + 0x0a, 0x07, 0x34, 0xcb, 0x31, 0xb4, 0xb5, 0xdd, 0x68, 0xde, 0x36, 0x7c, 0xae, 0x1f, 0xda, 0x16, + 0xa9, 0xdc, 0x17, 0x5c, 0xd6, 0xba, 0x59, 0x77, 0xc8, 0x5a, 0x57, 0x3c, 0x2c, 0xa0, 0x09, 0xfe, + 0xc6, 0x58, 0xb8, 0xa6, 0xd6, 0x5f, 0xa7, 0x91, 0x6b, 0xf6, 0x81, 0xae, 0xbc, 0x27, 0x59, 0xa5, + 0xf2, 0xbb, 0x36, 0xcf, 0x47, 0xac, 0xd6, 0x30, 0x06, 0x2f, 0x25, 0x9b, 0xce, 0x24, 0x06, 0xfb, + 0x53, 0x83, 0x9f, 0x15, 0xfb, 0x8c, 0x9e, 0xb3, 0x26, 0xa5, 0xee, 0xaa, 0x31, 0x67, 0xd2, 0xda, + 0x6e, 0x12, 0xf4, 0xfd, 0x7b, 0xa9, 0xb2, 0x05, 0x26, 0x45, 0x46, 0x74, 0xf5, 0x50, 0xad, 0xcf, + 0x16, 0x9e, 0x14, 0xd0, 0x64, 0x3b, 0x7c, 0x8a, 0x2f, 0xa3, 0x71, 0x0d, 0x5a, 0xa4, 0x9e, 0xaa, + 0xf1, 0x8b, 0x32, 0x83, 0xf3, 0xa2, 0x6a, 0xb3, 0x2d, 0x86, 0x3b, 0x15, 0xfa, 0xcd, 0x79, 0x0d, + 0x21, 0xab, 0xd0, 0x03, 0x18, 0x4b, 0xec, 0xc0, 0x98, 0x2e, 0x3e, 0x2f, 0x9f, 0xbb, 0xed, 0x4d, + 0x34, 0xd5, 0xc9, 0x50, 0x8a, 0x2b, 0xac, 0x79, 0x66, 0x0c, 0xf3, 0x8b, 0x5f, 0x0a, 0x68, 0x2a, + 0xe7, 0xf3, 0x0f, 0x35, 0x99, 0x6f, 0x61, 0xc7, 0x78, 0xf4, 0x90, 0x09, 0xe3, 0xd8, 0x62, 0xb6, + 0x8a, 0x93, 0x47, 0x12, 0x43, 0x3b, 0x97, 0x2f, 0xce, 0x23, 0xe9, 0x9d, 0x21, 0xa8, 0x53, 0x0d, + 0xa7, 0xaa, 0xb9, 0x55, 0x19, 0x14, 0x63, 0x8f, 0xb2, 0x6f, 0x1f, 0x7b, 0xb4, 0xd2, 0x6e, 0x88, + 0x94, 0x43, 0x2d, 0x6a, 0x7d, 0x76, 0x43, 0xa4, 0x69, 0x70, 0xa5, 0x56, 0x5b, 0x45, 0x8c, 0xeb, + 0xe4, 0x4d, 0x90, 0x96, 0x3b, 0x54, 0xa2, 0xc0, 0xc7, 0xe1, 0x80, 0x11, 0x76, 0x95, 0xe8, 0x14, + 0xd0, 0x5a, 0x30, 0x65, 0xa8, 0x43, 0xfb, 0xb9, 0xdd, 0x22, 0x6f, 0x81, 0x65, 0x7b, 0x57, 0x57, + 0x36, 0x31, 0xea, 0xf6, 0x2d, 0x5e, 0xe1, 0x73, 0xc3, 0xd4, 0x6d, 0xd5, 0x28, 0xe4, 0xad, 0x07, + 0x65, 0x3a, 0xfe, 0x16, 0x28, 0xd3, 0xbc, 0x9b, 0xa1, 0x4c, 0x39, 0xf3, 0x92, 0x09, 0xb7, 0xc9, + 0xbc, 0xe4, 0x6b, 0x41, 0x57, 0xce, 0x09, 0xe8, 0x0b, 0x41, 0x4a, 0x0f, 0xe2, 0x38, 0xf8, 0x8c, + 0x37, 0x31, 0x44, 0xbe, 0x78, 0x97, 0x49, 0xa2, 0xbf, 0xcd, 0x46, 0x73, 0xbc, 0x66, 0xfb, 0xa0, + 0x99, 0x38, 0x64, 0x7b, 0xb9, 0xbd, 0xd2, 0x64, 0xe5, 0xe1, 0x80, 0xe6, 0x41, 0x21, 0xf1, 0x1b, + 0x4e, 0x28, 0xa4, 0xfa, 0x9b, 0xf7, 0x74, 0xc4, 0x57, 0xd0, 0x45, 0x6a, 0xd8, 0x91, 0xa0, 0x53, + 0xc2, 0x4f, 0x14, 0x51, 0x19, 0x0e, 0x80, 0x8a, 0xf9, 0x3d, 0x40, 0x24, 0x33, 0x19, 0xb0, 0x7b, + 0x3a, 0x9a, 0xc8, 0x2d, 0x9f, 0xd3, 0xc0, 0x0b, 0x37, 0xaf, 0x81, 0xcf, 0xba, 0x41, 0x0d, 0xbc, + 0xd3, 0x7e, 0x23, 0xfb, 0x0e, 0xd8, 0x6f, 0xe4, 0xdc, 0x88, 0xfd, 0xc6, 0xb8, 0x1b, 0xb4, 0xdf, + 0xc8, 0xbd, 0x61, 0xfb, 0x0d, 0xb1, 0xd3, 0x42, 0xac, 0x20, 0xcb, 0x7a, 0x4f, 0x57, 0x62, 0x0c, + 0xb1, 0xbe, 0xeb, 0xd6, 0xa4, 0x5f, 0x1b, 0x6c, 0x01, 0xc7, 0x64, 0x9e, 0x6e, 0x30, 0xce, 0x75, + 0x27, 0x2e, 0xb5, 0xa6, 0xba, 0x77, 0x42, 0x3a, 0x4d, 0x82, 0x68, 0x39, 0x3d, 0x7a, 0xb1, 0x8f, + 0xe2, 0xe1, 0x62, 0x9f, 0x89, 0x71, 0x2b, 0x2b, 0x8a, 0x7d, 0x0e, 0x51, 0x00, 0xc5, 0xb2, 0x0a, + 0xca, 0x05, 0x4d, 0x31, 0x91, 0x8a, 0x41, 0x0c, 0x4c, 0xb3, 0x48, 0x5e, 0xe0, 0xd0, 0x35, 0x3b, + 0x77, 0x9c, 0x74, 0x14, 0xff, 0xc2, 0xfe, 0x86, 0x81, 0x04, 0xec, 0x0d, 0x5d, 0xf9, 0xb5, 0xfd, + 0x0d, 0xbb, 0x7d, 0x0a, 0x63, 0xc7, 0x9b, 0xc7, 0x91, 0x05, 0xe8, 0x96, 0x0d, 0x39, 0x26, 0xde, + 0x94, 0x21, 0x47, 0xfe, 0xed, 0x37, 0xe4, 0x58, 0x8d, 0x72, 0x1b, 0xfc, 0xd1, 0xe8, 0x7b, 0x01, + 0x22, 0x61, 0xc2, 0x81, 0x69, 0x48, 0x91, 0x5c, 0x44, 0x03, 0xfb, 0x1e, 0x35, 0xce, 0xec, 0x35, + 0xda, 0x0e, 0xc2, 0x53, 0x54, 0xec, 0x23, 0x71, 0x7d, 0x70, 0xa8, 0xb1, 0xe1, 0x33, 0x9f, 0x1a, + 0x7d, 0xbb, 0x54, 0xd2, 0x45, 0x7c, 0x0b, 0xe1, 0x53, 0x25, 0x62, 0x9e, 0x2a, 0x5d, 0x59, 0x2e, + 0x91, 0x03, 0x94, 0x5f, 0x70, 0x1c, 0x34, 0xc8, 0x9f, 0xb9, 0x03, 0x79, 0xde, 0x67, 0xc5, 0x39, + 0xc3, 0x1a, 0x6f, 0xa0, 0xbd, 0x13, 0xf1, 0x8e, 0x72, 0x45, 0xc5, 0xc3, 0x8a, 0x0a, 0x67, 0x77, + 0x32, 0x85, 0x8a, 0xcd, 0x0b, 0x39, 0xbb, 0x93, 0x59, 0xde, 0x76, 0x27, 0x9c, 0xa5, 0xc9, 0xef, + 0x59, 0x10, 0xbe, 0xa9, 0x18, 0x63, 0x3f, 0x91, 0x01, 0x63, 0x67, 0xc8, 0xe3, 0x4c, 0xf6, 0x1d, + 0x67, 0x70, 0x26, 0xb7, 0x96, 0x86, 0xd0, 0x7b, 0x05, 0xe5, 0xc6, 0xfc, 0xc1, 0x50, 0x8c, 0xc6, + 0x8b, 0x9b, 0xe9, 0x76, 0x03, 0x0e, 0x86, 0x62, 0xe4, 0x6d, 0x81, 0x96, 0x72, 0xbe, 0xcd, 0xd8, + 0x8d, 0x94, 0x8a, 0x7f, 0x46, 0x93, 0x1a, 0x43, 0x35, 0xb5, 0xef, 0x68, 0x81, 0xc6, 0x3a, 0xff, + 0x86, 0x3a, 0x0d, 0x8b, 0x78, 0x26, 0x95, 0xbd, 0xae, 0x2b, 0xeb, 0x24, 0x7b, 0x8d, 0x5c, 0xc1, + 0xdb, 0xe9, 0x33, 0x91, 0xa7, 0xd1, 0x34, 0xb8, 0x04, 0x24, 0xa2, 0x46, 0xe7, 0xf6, 0x44, 0x7f, + 0x07, 0x34, 0xba, 0x36, 0xd8, 0xb6, 0x94, 0x4a, 0x51, 0xdb, 0xf9, 0x0a, 0xd5, 0x3e, 0xa8, 0x58, + 0xc1, 0xd9, 0x7e, 0x4d, 0xb7, 0x80, 0xde, 0xb2, 0xfd, 0x7a, 0xc8, 0x66, 0xfb, 0xb5, 0xf9, 0xd9, + 0xa8, 0xcf, 0xac, 0x0a, 0xf9, 0xeb, 0x35, 0xce, 0xca, 0xeb, 0x55, 0x34, 0xce, 0xbf, 0x49, 0x0b, + 0xc5, 0xb0, 0x28, 0x67, 0x12, 0xe4, 0x3f, 0x84, 0x12, 0x4a, 0xe3, 0x28, 0xe6, 0x0f, 0x1f, 0x9b, + 0xfb, 0x52, 0xa3, 0xe7, 0x6c, 0x2a, 0x7e, 0xf9, 0xda, 0x60, 0xdb, 0x12, 0x73, 0x82, 0xf8, 0x87, + 0x0a, 0x3d, 0xc4, 0x42, 0x94, 0x1d, 0x0c, 0xd4, 0x92, 0x24, 0x36, 0x53, 0x75, 0x65, 0x92, 0x64, + 0xfe, 0x96, 0x73, 0x93, 0x3d, 0xf1, 0x64, 0xcb, 0x65, 0xd5, 0xfc, 0x21, 0x3e, 0x8e, 0x72, 0x22, + 0xfe, 0xda, 0xcd, 0x24, 0x39, 0xcd, 0x34, 0x5d, 0x99, 0x2c, 0xe1, 0x02, 0x68, 0xf5, 0xf1, 0x05, + 0x15, 0xff, 0x12, 0x4b, 0xd1, 0x44, 0x80, 0x8a, 0xf2, 0x3a, 0x7f, 0x34, 0x4a, 0xb2, 0xd6, 0x63, + 0xf6, 0x81, 0x2f, 0xc7, 0x9d, 0x8c, 0x8f, 0xf7, 0xaa, 0x7c, 0xa1, 0xf8, 0x12, 0x9a, 0x40, 0x5e, + 0x98, 0x2d, 0x4f, 0xe3, 0x18, 0x5c, 0xe4, 0x39, 0xb3, 0x4a, 0xe5, 0xa9, 0xb0, 0xb6, 0x60, 0xc3, + 0x96, 0xa7, 0x4d, 0x4a, 0xff, 0x68, 0x93, 0x6a, 0x55, 0x8a, 0x55, 0x68, 0x12, 0x43, 0x2f, 0x78, + 0x7b, 0x1f, 0xa2, 0x16, 0xa6, 0x3e, 0xc9, 0x5e, 0x43, 0x5f, 0x93, 0xe4, 0x57, 0xc7, 0x89, 0xfd, + 0x9c, 0xbd, 0x5e, 0x7c, 0x0e, 0x4d, 0xd8, 0xb0, 0xb9, 0x9c, 0xa4, 0x98, 0x9c, 0x83, 0xb7, 0x78, + 0xae, 0xae, 0x14, 0x48, 0x56, 0xa9, 0x3c, 0x11, 0x67, 0xee, 0x32, 0x91, 0x83, 0x89, 0x8d, 0x58, + 0xb9, 0x18, 0xb3, 0x67, 0x1c, 0x9f, 0x9b, 0xc6, 0x17, 0x92, 0xbb, 0x10, 0x63, 0xc9, 0x37, 0x4e, + 0xe6, 0x8b, 0x33, 0x8d, 0x13, 0x80, 0xb6, 0xe5, 0x1b, 0x5f, 0x0e, 0x86, 0x49, 0x78, 0xd9, 0xf3, + 0x2c, 0xe7, 0x3e, 0x56, 0x28, 0xcf, 0xb5, 0x59, 0xf8, 0x51, 0x7c, 0x41, 0xad, 0x07, 0x69, 0x33, + 0xf1, 0x5d, 0xf3, 0x9e, 0x45, 0x37, 0xb3, 0x30, 0x4f, 0x58, 0x12, 0x44, 0x8a, 0xe4, 0x4a, 0x07, + 0x46, 0x4d, 0xb6, 0x7e, 0x66, 0x9c, 0xbb, 0x54, 0x55, 0x5d, 0xcc, 0x4c, 0xaa, 0x46, 0xf4, 0x16, + 0xa3, 0xef, 0x12, 0x84, 0xb4, 0x27, 0x9f, 0xc2, 0xe4, 0x34, 0x89, 0xb1, 0x8e, 0x4d, 0x70, 0x54, + 0x32, 0xdc, 0x3d, 0x4c, 0x64, 0x4e, 0x4d, 0xc6, 0x79, 0x52, 0x4a, 0x2e, 0xe1, 0xad, 0x85, 0x18, + 0x1d, 0x00, 0xc8, 0x92, 0xa7, 0xd0, 0x60, 0x45, 0x85, 0x1f, 0x65, 0xa1, 0xb9, 0x26, 0x81, 0xb7, + 0x0a, 0xc7, 0xeb, 0xbb, 0xfd, 0x4c, 0x6f, 0x69, 0x5c, 0xd0, 0x95, 0x0b, 0x02, 0xfa, 0x46, 0x90, + 0x32, 0x7d, 0x47, 0xfe, 0x30, 0x2d, 0xe7, 0x01, 0x91, 0x04, 0xef, 0x0d, 0xff, 0xf1, 0x9f, 0xb3, + 0xd1, 0x3c, 0xef, 0x59, 0xff, 0x38, 0x39, 0x90, 0x7b, 0x1b, 0x6b, 0x85, 0x98, 0x78, 0x67, 0x3c, + 0x11, 0xf9, 0x31, 0x9e, 0x25, 0xf1, 0x80, 0x9d, 0xcc, 0x8c, 0x49, 0x67, 0x16, 0x9a, 0x6d, 0x85, + 0x02, 0x28, 0x8f, 0x68, 0x01, 0x2d, 0x14, 0x0b, 0xfa, 0xeb, 0x54, 0xed, 0x0f, 0xe2, 0x67, 0x02, + 0x9a, 0x10, 0xd5, 0x22, 0x5b, 0xb4, 0xc8, 0xab, 0xf4, 0x82, 0x96, 0xed, 0x11, 0x74, 0xe5, 0xcf, + 0x92, 0x55, 0x2c, 0xff, 0x21, 0xd1, 0xbf, 0x27, 0xb9, 0x87, 0xd0, 0x2a, 0xa9, 0xee, 0x9d, 0xa9, + 0x81, 0x9d, 0x89, 0x81, 0x0b, 0xa9, 0xee, 0x9d, 0x9b, 0xb5, 0xad, 0x26, 0xc8, 0xf5, 0x5d, 0x4a, + 0xc4, 0x3b, 0x36, 0x37, 0x6e, 0xd0, 0x4a, 0xf0, 0xa3, 0x05, 0x39, 0xc3, 0xd9, 0x6d, 0x61, 0x2d, + 0xb0, 0xf4, 0xb0, 0x24, 0x10, 0x09, 0x6e, 0xd1, 0x22, 0x24, 0x83, 0x22, 0xf9, 0x05, 0x3d, 0x92, + 0x3d, 0xad, 0x55, 0xd5, 0x34, 0xc7, 0x19, 0xbb, 0x75, 0x6c, 0x1a, 0x54, 0x62, 0x9b, 0x6e, 0x2d, + 0xf2, 0x3c, 0x7e, 0x97, 0xac, 0x2a, 0x16, 0x06, 0x83, 0x8d, 0x54, 0x78, 0x2d, 0x0b, 0x15, 0x78, + 0x8f, 0x72, 0xff, 0xab, 0x27, 0xde, 0xb2, 0xf9, 0x18, 0x3c, 0x92, 0x06, 0xfc, 0xad, 0x35, 0xd9, + 0x22, 0x0f, 0x11, 0x50, 0xfc, 0xe6, 0xac, 0xb1, 0xab, 0x2d, 0xd5, 0xbd, 0x73, 0xb8, 0x6f, 0x5b, + 0xe2, 0xd2, 0x69, 0x9b, 0xcb, 0x01, 0x09, 0xc3, 0x92, 0x76, 0x7b, 0xd2, 0xee, 0x72, 0x66, 0x18, + 0xfc, 0xd7, 0xe3, 0xd1, 0x1c, 0x5b, 0x38, 0xa1, 0x07, 0x16, 0x0c, 0xed, 0xaf, 0x47, 0xd6, 0x4d, + 0x88, 0x4c, 0xd7, 0xa1, 0xfc, 0xda, 0xba, 0xa0, 0x16, 0x8a, 0xad, 0xc2, 0x91, 0x1c, 0x09, 0x8f, + 0xbe, 0xd4, 0x24, 0x35, 0x6d, 0x15, 0xf2, 0x4c, 0x58, 0xb0, 0xf9, 0x9c, 0xe3, 0x10, 0x90, 0x46, + 0x57, 0xbb, 0xd1, 0x7b, 0xc8, 0x1a, 0xd3, 0xd6, 0x5a, 0x5c, 0x8f, 0x26, 0xc1, 0x24, 0x95, 0x40, + 0x20, 0xa2, 0x45, 0xa3, 0x44, 0xee, 0xb9, 0xc4, 0x3c, 0x7e, 0x7b, 0x0d, 0x93, 0xcb, 0x42, 0x40, + 0x61, 0x4c, 0xad, 0xb1, 0x64, 0xaa, 0x53, 0x55, 0x7b, 0x63, 0x71, 0x05, 0x42, 0xb5, 0xfe, 0x72, + 0x2d, 0x12, 0xab, 0x30, 0xc1, 0x6e, 0x1c, 0x4d, 0xc0, 0x3d, 0x4f, 0xe2, 0x8a, 0xe5, 0xc9, 0x04, + 0x1e, 0x14, 0x50, 0x2c, 0x91, 0x08, 0x7c, 0x3e, 0x95, 0x6b, 0x23, 0x56, 0xa3, 0x09, 0x8d, 0x51, + 0x2d, 0xb2, 0x36, 0xbc, 0x59, 0x0b, 0x11, 0x11, 0xa8, 0x6c, 0x52, 0x42, 0x56, 0xa9, 0x3c, 0x87, + 0x4f, 0x51, 0x9f, 0xea, 0xde, 0x19, 0x33, 0x4b, 0x6d, 0x69, 0x0f, 0xa7, 0xaa, 0x56, 0x73, 0x71, + 0x35, 0x9a, 0x44, 0xb6, 0xb5, 0x22, 0x5c, 0xef, 0x0f, 0x52, 0xdb, 0x7f, 0x1c, 0x20, 0xd0, 0x5e, + 0xc3, 0xac, 0x8b, 0x8e, 0x1d, 0x33, 0xba, 0xda, 0xd9, 0x58, 0xf6, 0x46, 0xe2, 0x1a, 0x84, 0x60, + 0x4b, 0xcd, 0x39, 0x13, 0xde, 0x7d, 0x31, 0xce, 0x35, 0x6e, 0x15, 0xd3, 0x5c, 0xe3, 0x56, 0x09, + 0xdc, 0x22, 0x6e, 0xc9, 0xac, 0x46, 0x7c, 0xd5, 0x84, 0x15, 0xf3, 0x97, 0x09, 0xd6, 0xc0, 0xc3, + 0x97, 0x98, 0x1c, 0x9c, 0x55, 0x4a, 0x83, 0x0d, 0xb3, 0x02, 0xc7, 0x68, 0x56, 0xcb, 0xd2, 0x03, + 0x82, 0xae, 0xec, 0x13, 0x50, 0x87, 0x20, 0x65, 0xb8, 0x4a, 0xd4, 0xf5, 0x32, 0x2d, 0x16, 0xe4, + 0x32, 0x47, 0xd9, 0xe0, 0xe7, 0x8a, 0x60, 0x3f, 0xf7, 0x2b, 0x02, 0x77, 0x76, 0x57, 0x04, 0x6b, + 0xd7, 0xaf, 0x08, 0xf6, 0x5d, 0x2b, 0x3c, 0x98, 0x85, 0xe6, 0xa6, 0x9d, 0xd0, 0xfd, 0x9f, 0x1b, + 0xdf, 0x64, 0x2f, 0x51, 0x8d, 0x94, 0x69, 0x09, 0x69, 0x37, 0x35, 0x33, 0xd2, 0xeb, 0xce, 0x42, + 0x73, 0x6c, 0x59, 0x3e, 0x1e, 0x20, 0xa4, 0x97, 0x65, 0x7f, 0x7b, 0xab, 0x75, 0x65, 0x15, 0x7a, + 0x55, 0xca, 0xb0, 0x1c, 0xf9, 0x11, 0x5b, 0xbe, 0x1c, 0xaf, 0x27, 0xc6, 0xf6, 0x06, 0xf7, 0x64, + 0xa1, 0xb9, 0x69, 0x47, 0xbb, 0xff, 0xa1, 0x86, 0xd8, 0x51, 0x66, 0x5a, 0x82, 0x5c, 0xc8, 0xef, + 0x88, 0xf3, 0x2a, 0x8e, 0x02, 0x3b, 0x7b, 0xc6, 0xa1, 0x02, 0x4e, 0x35, 0x6d, 0x87, 0x9c, 0x8f, + 0x3c, 0x20, 0xe7, 0x4f, 0xba, 0x12, 0xe5, 0x01, 0x67, 0x23, 0x7f, 0x10, 0x0c, 0x7c, 0x9c, 0x50, + 0x83, 0x81, 0x26, 0x3d, 0xc4, 0xd8, 0x00, 0x06, 0x7e, 0xf0, 0x8d, 0x7f, 0x11, 0x6c, 0x60, 0xe6, + 0x85, 0xd6, 0x03, 0xf9, 0xa2, 0xfb, 0x81, 0x7c, 0x38, 0xfd, 0x03, 0x49, 0xba, 0x5b, 0xcf, 0x63, + 0x88, 0x22, 0x61, 0x2e, 0x25, 0xd7, 0x6a, 0x5d, 0xa9, 0x90, 0xb8, 0x62, 0xf9, 0x69, 0xe3, 0xdc, + 0x27, 0xc9, 0x96, 0x8b, 0xa9, 0x2f, 0xfa, 0x20, 0x31, 0xf7, 0xb5, 0xc1, 0x36, 0xb6, 0x9c, 0xab, + 0x4d, 0xdb, 0xac, 0xe9, 0x5e, 0x6d, 0xda, 0xc6, 0xad, 0x84, 0xd9, 0x31, 0x5a, 0x43, 0x89, 0xbf, + 0x45, 0x13, 0x6b, 0xc3, 0xa1, 0x90, 0x56, 0x0b, 0x1f, 0x84, 0x57, 0xb3, 0x54, 0x57, 0x96, 0x48, + 0x7c, 0xb9, 0xfc, 0xc8, 0xc8, 0x87, 0xdf, 0x27, 0x3b, 0x4e, 0xb1, 0xcf, 0xa5, 0x3e, 0xfa, 0x76, + 0x78, 0xdb, 0xfe, 0x64, 0xcb, 0xc1, 0xe1, 0xa6, 0xe6, 0x91, 0xee, 0x33, 0x23, 0xdb, 0x3e, 0xb4, + 0x6c, 0x56, 0xad, 0x6e, 0x9c, 0xc2, 0x6d, 0xdc, 0x2d, 0x28, 0xdc, 0x72, 0x6f, 0x42, 0xe1, 0x46, + 0xe9, 0xe5, 0xb4, 0x60, 0x44, 0x8d, 0x7d, 0x33, 0xdc, 0x58, 0x62, 0xde, 0xbe, 0x3d, 0x1b, 0x74, + 0xc8, 0x0f, 0x24, 0xc1, 0x5c, 0x6b, 0xe3, 0x17, 0xc7, 0x40, 0x30, 0x17, 0xeb, 0x4a, 0x11, 0x21, + 0x98, 0x1f, 0x19, 0x75, 0x6f, 0xec, 0x9e, 0xba, 0xe9, 0x77, 0x69, 0xcc, 0x9b, 0x9d, 0x16, 0x23, + 0xcc, 0x41, 0x05, 0x55, 0xa1, 0x60, 0x6c, 0xb9, 0xd3, 0x72, 0x52, 0xd5, 0xfe, 0x50, 0x38, 0x17, + 0x3d, 0x94, 0xa6, 0x2e, 0xda, 0x50, 0x78, 0x24, 0x0b, 0xcd, 0x52, 0x02, 0x01, 0x52, 0xa9, 0x05, + 0x38, 0xd3, 0xec, 0x37, 0xbc, 0x6d, 0x41, 0x05, 0x4b, 0xf8, 0xe9, 0x69, 0x0b, 0x3a, 0x99, 0xb7, + 0xfc, 0xac, 0xaa, 0xf0, 0x36, 0xe7, 0x7c, 0xc1, 0x8d, 0x06, 0x70, 0xde, 0x28, 0x0e, 0x0d, 0x4c, + 0x06, 0xa3, 0x13, 0x2f, 0xe3, 0x36, 0x4d, 0x57, 0x36, 0xa0, 0xdf, 0x4b, 0x69, 0x26, 0x2e, 0x3f, + 0x66, 0x9c, 0xdf, 0x45, 0x28, 0xba, 0x3d, 0xc7, 0x8d, 0xe6, 0x53, 0x0e, 0x53, 0x54, 0x4a, 0xed, + 0x78, 0x4d, 0xcc, 0x16, 0x10, 0xb1, 0x27, 0x0b, 0xcd, 0xf6, 0xfc, 0xc4, 0xfd, 0xff, 0x02, 0x6d, + 0xd0, 0x95, 0xb7, 0xd1, 0x5b, 0x52, 0xba, 0xe9, 0xcb, 0xd2, 0x58, 0xb6, 0x68, 0x94, 0x57, 0xe8, + 0x3f, 0x4f, 0x47, 0x22, 0x8d, 0xc5, 0x19, 0x6e, 0x0c, 0x50, 0x01, 0xda, 0xdb, 0x68, 0x3c, 0x31, + 0xda, 0x24, 0xa0, 0x52, 0xa9, 0x2b, 0x0b, 0x49, 0xa0, 0x4b, 0xac, 0x5d, 0x9c, 0x9b, 0x88, 0xef, + 0x63, 0x66, 0xd9, 0xc3, 0x7b, 0xbf, 0x4a, 0x1e, 0xdc, 0xcd, 0x74, 0x8c, 0xd7, 0xcb, 0x66, 0x47, + 0x66, 0x4e, 0xcd, 0x2a, 0x98, 0xe1, 0x8a, 0xa9, 0xa9, 0xd2, 0x51, 0xc5, 0x17, 0x51, 0x4e, 0xc8, + 0xf2, 0x15, 0x28, 0xc2, 0xee, 0xf2, 0x66, 0x81, 0x3c, 0x93, 0x0d, 0x9c, 0xe8, 0xef, 0x35, 0x47, + 0x25, 0xde, 0x02, 0x40, 0xb2, 0x2c, 0x53, 0x71, 0x2b, 0x71, 0x87, 0x80, 0xf2, 0xb4, 0x40, 0x30, + 0x86, 0x95, 0x08, 0xb0, 0xa1, 0x9b, 0x74, 0x25, 0x20, 0xb1, 0x42, 0xf9, 0x75, 0x78, 0xe4, 0x6a, + 0xfc, 0xfe, 0x1a, 0x13, 0x00, 0x8f, 0x7e, 0xc2, 0x74, 0x31, 0xc4, 0xf4, 0xa0, 0xb3, 0x2f, 0x35, + 0x78, 0x70, 0xf8, 0xfb, 0x7d, 0x90, 0xf6, 0x80, 0x58, 0x89, 0x62, 0xbf, 0x02, 0x6c, 0x4f, 0xba, + 0x13, 0xd4, 0x85, 0x2c, 0x17, 0x25, 0x69, 0xdf, 0xb7, 0x4f, 0x65, 0xdf, 0x10, 0x0f, 0x0b, 0x08, + 0x85, 0x69, 0x10, 0xe8, 0x28, 0xc1, 0x3f, 0xb2, 0x0b, 0xff, 0xb8, 0xb6, 0x77, 0x11, 0x8b, 0x1c, + 0x4d, 0x84, 0xce, 0x15, 0xba, 0xa2, 0x48, 0xdc, 0x50, 0xf2, 0x93, 0x10, 0x50, 0x21, 0x79, 0x7c, + 0xb7, 0xb1, 0x7b, 0xd7, 0xf0, 0xe5, 0xae, 0xd4, 0xc0, 0xb7, 0xc6, 0xb9, 0x8f, 0x53, 0x1d, 0xe7, + 0x89, 0xe4, 0xf7, 0xab, 0x03, 0xe0, 0xcd, 0x00, 0xaf, 0x13, 0x64, 0xd7, 0x51, 0xb9, 0x01, 0xc4, + 0xef, 0x04, 0x94, 0x8f, 0x0d, 0x5d, 0xe9, 0xe4, 0xc6, 0xe1, 0xc9, 0x3d, 0x35, 0x86, 0xc9, 0x55, + 0x72, 0xdd, 0x60, 0x7a, 0x6f, 0xea, 0xca, 0xeb, 0x92, 0x6d, 0x38, 0xf9, 0x15, 0x3e, 0xd3, 0x0d, + 0x0b, 0x08, 0x4d, 0x04, 0xb6, 0xbb, 0x3f, 0x87, 0xcd, 0x83, 0x5a, 0x3e, 0xf1, 0x0d, 0x58, 0xb3, + 0x81, 0xf8, 0x0c, 0xb6, 0x5f, 0xb5, 0x8d, 0x2b, 0xfe, 0x1d, 0x8e, 0xca, 0x1f, 0x6e, 0x0c, 0x58, + 0xc8, 0x95, 0xf8, 0x08, 0xce, 0xf1, 0x98, 0x3a, 0x45, 0xe8, 0xc4, 0xb9, 0xda, 0xd9, 0x53, 0xde, + 0x21, 0x98, 0xa7, 0x1e, 0xdf, 0xc7, 0x42, 0x9c, 0x33, 0x1d, 0xf0, 0xf0, 0xb7, 0xa7, 0x93, 0x2d, + 0x17, 0x79, 0x8d, 0x33, 0x4b, 0xdb, 0xcf, 0xe7, 0x13, 0x04, 0xf7, 0x65, 0x22, 0x75, 0x1d, 0xfa, + 0x90, 0xdc, 0xbe, 0xab, 0x4d, 0xdb, 0x88, 0x67, 0x4d, 0xa2, 0x7f, 0x6f, 0xf2, 0xeb, 0x13, 0xc9, + 0x9e, 0x56, 0x08, 0xd5, 0x95, 0x3c, 0x74, 0x21, 0x31, 0xd8, 0x0d, 0x6a, 0x3e, 0x73, 0xcd, 0x90, + 0x98, 0xd6, 0x39, 0x2d, 0xf1, 0x8f, 0x28, 0x3f, 0x1c, 0x5d, 0x85, 0x97, 0x81, 0x3d, 0x2b, 0xc6, + 0xe3, 0x05, 0xce, 0x72, 0x2e, 0x70, 0x4d, 0x0d, 0xf6, 0x65, 0x7e, 0x59, 0x57, 0x5e, 0x90, 0x6c, + 0x1d, 0xe4, 0x62, 0xb6, 0xac, 0x35, 0x04, 0xba, 0xd9, 0xc2, 0xf8, 0x50, 0xee, 0x04, 0x07, 0xd9, + 0xfa, 0x8a, 0xba, 0x80, 0xa6, 0x91, 0x0f, 0x71, 0x53, 0xc8, 0x4b, 0xb3, 0xc7, 0xa4, 0xe1, 0xa6, + 0x48, 0x99, 0x49, 0x6c, 0x48, 0xee, 0x9e, 0xf2, 0x12, 0x36, 0x17, 0x3e, 0xff, 0x0f, 0xcc, 0xca, + 0x84, 0x56, 0x0c, 0x1b, 0xb6, 0xf9, 0xb8, 0x07, 0x11, 0xf7, 0x0a, 0x68, 0x3a, 0xd3, 0x02, 0x71, + 0xd3, 0x42, 0xe9, 0x9d, 0x99, 0xa1, 0xe9, 0xa6, 0x48, 0xd9, 0xf3, 0xba, 0xf2, 0xac, 0xe4, 0xd5, + 0x5b, 0x7e, 0x84, 0x4d, 0xcd, 0x66, 0x71, 0xc8, 0xcf, 0xc5, 0xab, 0x9f, 0xf8, 0x9a, 0x95, 0x90, + 0x60, 0x22, 0x35, 0xaf, 0x98, 0x63, 0x25, 0x24, 0x98, 0x42, 0x5f, 0xf3, 0x8f, 0x8c, 0x81, 0x38, + 0x8e, 0x25, 0x95, 0x01, 0xdf, 0x91, 0xfc, 0x04, 0x2b, 0xd1, 0x24, 0x0c, 0x05, 0xd5, 0xd4, 0xbd, + 0x29, 0x9f, 0x1a, 0xd3, 0x3d, 0x2a, 0xd9, 0x6b, 0x64, 0x11, 0x52, 0xd1, 0xc0, 0x7d, 0x07, 0x6a, + 0x54, 0xb5, 0x37, 0x11, 0x9b, 0x04, 0x94, 0x5b, 0x0b, 0xee, 0xf9, 0xa0, 0xe6, 0x7e, 0x47, 0x57, + 0x34, 0x89, 0x14, 0xc9, 0x6f, 0xc2, 0xbd, 0x33, 0x7a, 0x0f, 0x25, 0xcf, 0x7d, 0x57, 0xec, 0x4b, + 0x5c, 0x3e, 0x6a, 0xf4, 0x1e, 0x1e, 0x69, 0xda, 0x3e, 0xd2, 0xdc, 0x6e, 0x74, 0xed, 0x4c, 0x9d, + 0x69, 0xc7, 0x83, 0x99, 0x58, 0x8e, 0x73, 0xce, 0x2f, 0x26, 0x21, 0x7b, 0x20, 0xb0, 0x3f, 0x8e, + 0xaf, 0x15, 0x6e, 0x0c, 0xf8, 0xde, 0x8d, 0x86, 0x43, 0xc3, 0x67, 0x3e, 0x4d, 0x7e, 0xdc, 0x45, + 0x80, 0x99, 0x7c, 0x44, 0x7c, 0xcd, 0x9e, 0xa4, 0x63, 0x32, 0x15, 0xa5, 0x14, 0xdb, 0xd3, 0x70, + 0xcc, 0x87, 0xd4, 0x1b, 0x90, 0x54, 0xa0, 0xef, 0x74, 0x6a, 0x60, 0x57, 0x62, 0x60, 0x6f, 0x6a, + 0xa0, 0x9d, 0xea, 0xd1, 0xf8, 0x8c, 0x1c, 0x2b, 0x6d, 0x2e, 0x41, 0xa0, 0x0e, 0xc7, 0xa4, 0x1a, + 0xef, 0x12, 0x34, 0x37, 0x83, 0x19, 0xab, 0xcd, 0x0d, 0xa8, 0x0a, 0xe5, 0x6a, 0x21, 0xfc, 0x3e, + 0x4c, 0xa5, 0xe2, 0xb7, 0x45, 0x12, 0x29, 0x92, 0x1f, 0x03, 0xaf, 0xb1, 0x54, 0x6b, 0x0b, 0xb1, + 0xc8, 0x25, 0xef, 0xef, 0x11, 0xe2, 0x1e, 0xd1, 0xd9, 0x37, 0x7c, 0x66, 0x9b, 0x4a, 0x5a, 0x8b, + 0x7f, 0x62, 0x29, 0x6f, 0xb0, 0x79, 0xf7, 0x34, 0x6f, 0xe5, 0x01, 0x46, 0xa2, 0xab, 0xad, 0x76, + 0xc4, 0x55, 0x8a, 0xeb, 0x29, 0x3f, 0xe1, 0x8d, 0x8e, 0xb0, 0xe5, 0x23, 0x7f, 0x18, 0x2a, 0xdf, + 0x4b, 0x7c, 0x17, 0xe5, 0x99, 0x9b, 0x8e, 0xbf, 0x2d, 0xe2, 0x6f, 0x3f, 0xec, 0xf9, 0x6d, 0x08, + 0x94, 0x60, 0x05, 0x35, 0x66, 0xbd, 0xe4, 0x05, 0x8e, 0xef, 0x26, 0xe2, 0xfb, 0x6c, 0x9f, 0x63, + 0x2d, 0xcd, 0x8b, 0x98, 0xdf, 0x50, 0xe7, 0x8f, 0x6d, 0x0c, 0x47, 0xea, 0xf1, 0x07, 0xa7, 0x8f, + 0xf9, 0xdd, 0xa8, 0xe6, 0xba, 0xc1, 0xbb, 0x81, 0xb7, 0xdc, 0x36, 0x9c, 0xbc, 0x80, 0xa6, 0x1a, + 0x23, 0xe9, 0x23, 0x1c, 0x50, 0xa8, 0xda, 0x5a, 0xcf, 0x79, 0x03, 0x4d, 0x71, 0x3c, 0x95, 0xb7, + 0x2f, 0x51, 0xc3, 0x6f, 0xd1, 0x34, 0xd7, 0x4b, 0x77, 0xfb, 0x46, 0x7f, 0x19, 0x4d, 0x73, 0xed, + 0xc7, 0x0d, 0x69, 0x49, 0xd7, 0xeb, 0x4a, 0x0d, 0x7a, 0x4d, 0xf2, 0x20, 0xce, 0xe4, 0x69, 0x80, + 0x79, 0xc8, 0x9d, 0x22, 0xd1, 0xb4, 0x08, 0x61, 0x75, 0x45, 0xc0, 0x04, 0xd2, 0x15, 0xc1, 0x86, + 0xf4, 0xcd, 0x7a, 0x40, 0x44, 0x85, 0xdf, 0x0a, 0x68, 0xba, 0x6d, 0xcc, 0x07, 0x42, 0x27, 0x58, + 0xf8, 0x37, 0xd3, 0x69, 0x68, 0x3d, 0x1b, 0x9d, 0xfa, 0xaa, 0x93, 0x4e, 0x5d, 0x8a, 0x63, 0xfc, + 0x92, 0xb2, 0x51, 0xa8, 0x54, 0x96, 0x43, 0x86, 0xd0, 0xa4, 0x2f, 0xd8, 0x68, 0xd2, 0x85, 0xa3, + 0xd3, 0xa4, 0x64, 0x80, 0x07, 0x8f, 0x24, 0x75, 0xef, 0xe4, 0x7d, 0x44, 0x92, 0x7a, 0x4c, 0xee, + 0x27, 0x92, 0xf4, 0x27, 0x92, 0xf4, 0xc7, 0x4d, 0x92, 0xbe, 0x6a, 0x05, 0x36, 0x9d, 0x48, 0x11, + 0x5d, 0x9a, 0xc0, 0xa6, 0x40, 0x8c, 0x36, 0xe5, 0xc9, 0x93, 0x39, 0x6a, 0x14, 0x13, 0xa3, 0x34, + 0x9f, 0xed, 0x4f, 0xc4, 0xe8, 0xdd, 0x26, 0x46, 0xdf, 0x72, 0x10, 0xa3, 0x95, 0xba, 0x52, 0xc6, + 0x88, 0xd1, 0x67, 0xc7, 0x42, 0x8c, 0x2e, 0x04, 0x1b, 0xa0, 0x58, 0xa4, 0x51, 0x4b, 0xb6, 0x1c, + 0xc4, 0x8e, 0xa6, 0x45, 0x3f, 0x11, 0xa8, 0xe9, 0x09, 0x54, 0x8f, 0x57, 0xe4, 0x27, 0x02, 0xf5, + 0x76, 0x12, 0xa8, 0x24, 0x87, 0xd4, 0x0c, 0xd8, 0x68, 0xf2, 0xf8, 0x50, 0x12, 0x95, 0xe4, 0xec, + 0x03, 0x47, 0x50, 0x37, 0x8d, 0x4a, 0x31, 0x51, 0xe1, 0xee, 0x2c, 0x34, 0xdd, 0x76, 0x52, 0x0f, + 0x86, 0x85, 0xda, 0x6b, 0x36, 0x13, 0x9d, 0x99, 0x9e, 0xc0, 0x6e, 0x33, 0xcb, 0x61, 0xa9, 0xc0, + 0x20, 0x27, 0x10, 0x1f, 0x56, 0x0d, 0xf4, 0x0b, 0x85, 0xff, 0x44, 0x40, 0x22, 0x55, 0x35, 0x72, + 0x04, 0xee, 0x5b, 0x4e, 0x02, 0xb7, 0xfc, 0x06, 0x08, 0xdc, 0xd1, 0xc5, 0xb0, 0x05, 0x68, 0x7c, + 0x30, 0xba, 0x3c, 0x1c, 0xa9, 0x85, 0x7d, 0xcb, 0x53, 0xe9, 0xcf, 0xd2, 0x52, 0x5d, 0x79, 0x06, + 0xfd, 0x52, 0xf2, 0x98, 0x93, 0x3c, 0x93, 0xc4, 0x1b, 0xa4, 0xeb, 0x70, 0x9e, 0x2f, 0x3e, 0x55, + 0x5b, 0xbf, 0x1f, 0xe8, 0xa9, 0x1a, 0x17, 0xbf, 0x86, 0xad, 0x48, 0x7b, 0xaa, 0x3d, 0x02, 0x8e, + 0x6d, 0x6c, 0x3b, 0xd2, 0x55, 0xce, 0x23, 0x7d, 0xd2, 0x9c, 0x1a, 0x3b, 0xd2, 0x89, 0x5c, 0x40, + 0x9b, 0x31, 0x1c, 0x21, 0x3d, 0x28, 0xe7, 0x67, 0xac, 0x60, 0x74, 0x17, 0x13, 0x43, 0x1f, 0x7a, + 0x5f, 0xc4, 0xc2, 0x7f, 0x98, 0x85, 0xa6, 0x5a, 0xfd, 0x1e, 0x8c, 0x53, 0x7a, 0x75, 0x2c, 0xa7, + 0x34, 0xc6, 0x6c, 0x51, 0xa5, 0xcb, 0x75, 0xa5, 0x1c, 0x29, 0x92, 0x6b, 0x13, 0xe4, 0x99, 0xb0, + 0x7b, 0x16, 0x8c, 0x67, 0x56, 0xa3, 0xa4, 0x72, 0xd0, 0x54, 0xd0, 0x0c, 0x72, 0x07, 0xfd, 0x2b, + 0xe7, 0x41, 0x2f, 0xb9, 0x81, 0xbb, 0x9b, 0x13, 0xc9, 0x2a, 0x98, 0x61, 0x5d, 0xd4, 0xa7, 0x6c, + 0xbc, 0xa9, 0x6f, 0x34, 0xde, 0xf4, 0xbe, 0xe2, 0x49, 0x97, 0x5a, 0xe2, 0x54, 0xd0, 0xbd, 0xe3, + 0x7c, 0x0e, 0x4c, 0x9c, 0x3a, 0x81, 0x09, 0x52, 0x2d, 0x71, 0xe9, 0x52, 0x67, 0x1c, 0xff, 0xd9, + 0x69, 0xc8, 0xdd, 0x0c, 0x44, 0x6d, 0xee, 0x2d, 0x10, 0xb5, 0xa5, 0x07, 0x05, 0x5d, 0xd1, 0x05, + 0xd4, 0x29, 0x48, 0xae, 0x73, 0x95, 0xff, 0xe8, 0x84, 0x0d, 0x6a, 0xd9, 0xcd, 0xf2, 0xf4, 0x1b, + 0xbb, 0x8e, 0x24, 0xe2, 0xbb, 0x52, 0x1f, 0x9d, 0x33, 0xb9, 0x65, 0x4c, 0xf9, 0x02, 0xbf, 0x96, + 0x1a, 0xd8, 0x69, 0x74, 0xb5, 0x40, 0x39, 0xd9, 0x65, 0x3c, 0x94, 0xd5, 0xb7, 0xf9, 0x2c, 0x70, + 0x7c, 0x46, 0xcb, 0x91, 0x44, 0x7f, 0x9c, 0x5e, 0xe1, 0xb3, 0x23, 0xbb, 0x3b, 0xa1, 0x7d, 0xe1, + 0xf7, 0x59, 0x68, 0x1a, 0x37, 0xa3, 0x07, 0xe3, 0xce, 0xbe, 0x62, 0xd3, 0xd0, 0xa7, 0xb9, 0xb3, + 0xbc, 0x2d, 0x37, 0xdc, 0x59, 0xa3, 0xe5, 0xbc, 0x89, 0x59, 0xf9, 0x0b, 0xbb, 0x4c, 0x57, 0x5e, + 0x44, 0xcf, 0x4b, 0xee, 0x2d, 0x18, 0xeb, 0x8d, 0x2d, 0x1c, 0x9a, 0x8e, 0x66, 0x81, 0x00, 0x8c, + 0xb1, 0x6c, 0xf4, 0xc2, 0x3e, 0x4b, 0x2e, 0x99, 0x40, 0x03, 0x66, 0xcd, 0x26, 0x97, 0x8c, 0xb8, + 0xac, 0xe0, 0xe3, 0x03, 0xd1, 0x0f, 0xd8, 0x52, 0xfe, 0x7f, 0x02, 0xb9, 0x68, 0x7f, 0xe9, 0x56, + 0x85, 0xfb, 0x75, 0xe5, 0x25, 0x5e, 0x15, 0xbe, 0x94, 0x8d, 0x91, 0x6c, 0x6d, 0x62, 0x61, 0x56, + 0x59, 0x48, 0x27, 0x1c, 0x4c, 0x29, 0xd1, 0x1f, 0x37, 0x2f, 0x99, 0x2d, 0x37, 0x61, 0xd6, 0x98, + 0x72, 0x13, 0xbe, 0xc5, 0x9c, 0xea, 0xb2, 0x2d, 0x7d, 0x2d, 0x75, 0xaa, 0x5b, 0xe0, 0xfe, 0x34, + 0x78, 0xcf, 0x50, 0x7b, 0x30, 0xf3, 0x95, 0x11, 0x0a, 0x7c, 0xee, 0x57, 0x86, 0xba, 0xd5, 0x6d, + 0x44, 0x53, 0x80, 0xd5, 0x50, 0x1a, 0x63, 0xe1, 0x28, 0x8e, 0x03, 0x91, 0x83, 0x0f, 0x1f, 0xa7, + 0x3a, 0x77, 0xd6, 0xc9, 0x3f, 0x27, 0xc8, 0x63, 0xb0, 0xc9, 0xe8, 0xea, 0xe3, 0x19, 0x5d, 0xe6, + 0xc8, 0x45, 0x22, 0xe5, 0x38, 0x3a, 0x8a, 0x5b, 0xd0, 0x44, 0x1a, 0xdc, 0x21, 0x18, 0xda, 0x94, + 0xce, 0x4c, 0x5f, 0xb1, 0x9a, 0x40, 0x84, 0x5d, 0x6c, 0x65, 0xca, 0xf7, 0x94, 0x0b, 0x6c, 0x9e, + 0x9f, 0xf0, 0x06, 0x62, 0x32, 0xfe, 0x7a, 0xd9, 0xb8, 0x3d, 0x42, 0xd6, 0x54, 0x41, 0xe5, 0x9b, + 0x8b, 0xfb, 0x05, 0x34, 0xb9, 0xce, 0xdf, 0x18, 0xaa, 0x7d, 0x87, 0xc5, 0xd1, 0xcd, 0xf5, 0xce, + 0x4f, 0xb3, 0x12, 0xb7, 0x02, 0x4e, 0xa6, 0x11, 0x0c, 0x0f, 0xca, 0x56, 0xe8, 0xca, 0x0b, 0x92, + 0xa3, 0xbf, 0x2c, 0xc1, 0xb7, 0x93, 0x87, 0x2e, 0x00, 0x7e, 0x83, 0x49, 0x80, 0x07, 0x22, 0x63, + 0x2a, 0x00, 0x54, 0xd9, 0x9c, 0x1c, 0x63, 0x88, 0x5b, 0x98, 0x6f, 0xdf, 0xf8, 0x4c, 0xba, 0x65, + 0x27, 0x20, 0xdb, 0xdc, 0xfc, 0xb0, 0x2f, 0x12, 0x75, 0xf3, 0x9b, 0x6f, 0x52, 0xa1, 0x76, 0x27, + 0x48, 0x5c, 0xe3, 0xf0, 0xf8, 0xdb, 0x2e, 0x30, 0x97, 0xbf, 0xbc, 0x1b, 0xfa, 0x30, 0xf6, 0x04, + 0x24, 0x1f, 0x06, 0xd7, 0x4b, 0xe2, 0x0f, 0x58, 0xe4, 0xfe, 0x70, 0xaa, 0x7b, 0x67, 0xf2, 0xab, + 0x13, 0xcc, 0xdf, 0x67, 0xa1, 0x11, 0x3f, 0x66, 0x0c, 0xee, 0x28, 0x62, 0xce, 0x82, 0x1b, 0xc1, + 0xbd, 0x7a, 0x4d, 0x0d, 0xb1, 0xab, 0xc5, 0x81, 0xa0, 0x48, 0x91, 0xac, 0xb0, 0xf1, 0x46, 0x9a, + 0x5a, 0x81, 0xf9, 0x86, 0xa0, 0xc1, 0x6b, 0x6a, 0xb0, 0xec, 0x6c, 0x7b, 0xaa, 0xf9, 0x8c, 0xc9, + 0x50, 0x92, 0x77, 0xa9, 0x17, 0xb6, 0xdb, 0xdc, 0x77, 0xea, 0x47, 0xa8, 0x92, 0xa1, 0x78, 0x6d, + 0x1f, 0xba, 0x4d, 0xda, 0xbe, 0xd3, 0x02, 0x17, 0xc8, 0xd0, 0x16, 0x2e, 0xce, 0x0a, 0x65, 0xb8, + 0x95, 0x6d, 0x1e, 0x89, 0x56, 0xf8, 0xfd, 0xd1, 0xe1, 0xef, 0x0e, 0x02, 0x25, 0x49, 0x5e, 0xa6, + 0x83, 0x97, 0x92, 0x27, 0x5a, 0x98, 0x0c, 0x13, 0x7e, 0xc2, 0x13, 0x92, 0xe8, 0xef, 0x00, 0xb9, + 0xca, 0xd5, 0xa6, 0xed, 0x7c, 0x12, 0x70, 0xf6, 0x90, 0x0c, 0x9f, 0xde, 0x06, 0xf2, 0x3f, 0xb3, + 0xe4, 0x72, 0xf3, 0xc8, 0x89, 0x81, 0xe4, 0xe1, 0x3e, 0xe2, 0x26, 0xc7, 0xc5, 0x3e, 0x7c, 0x07, + 0xa1, 0xda, 0x70, 0x28, 0xda, 0x58, 0xcf, 0x05, 0xdc, 0xc2, 0x52, 0x35, 0xae, 0x58, 0x7e, 0xc6, + 0xfa, 0x1b, 0xa2, 0x35, 0x47, 0xb4, 0x68, 0xb8, 0x31, 0x52, 0xab, 0x81, 0x7c, 0x2a, 0x02, 0xb6, + 0xeb, 0xa9, 0xfd, 0xdf, 0x0c, 0xf7, 0x5d, 0x1c, 0xfe, 0x6e, 0x67, 0x32, 0xde, 0x05, 0x02, 0x11, + 0x95, 0x1b, 0x44, 0x7c, 0xd7, 0x11, 0xa6, 0x7a, 0xfa, 0x18, 0xc2, 0x54, 0x63, 0xfb, 0x24, 0x7b, + 0x98, 0xea, 0x99, 0x16, 0x26, 0xc6, 0xa7, 0x0f, 0x8b, 0xb4, 0x07, 0xa3, 0x16, 0xdf, 0x47, 0x39, + 0x31, 0xff, 0xa6, 0x68, 0xc1, 0x0c, 0x0c, 0xbb, 0x4b, 0xc6, 0x0c, 0xbb, 0x9b, 0x08, 0xe4, 0xca, + 0xba, 0xb2, 0x58, 0xc2, 0x43, 0xc8, 0x4f, 0x78, 0xc2, 0x2d, 0xac, 0xd2, 0xe6, 0x2c, 0x8b, 0x9b, + 0x8b, 0xdf, 0x09, 0x9c, 0x1f, 0x24, 0x96, 0x1c, 0x81, 0x63, 0x67, 0x87, 0xa0, 0x2b, 0x7b, 0x04, + 0xc9, 0x5e, 0x27, 0x6f, 0x65, 0x9e, 0x90, 0x24, 0x0c, 0x4f, 0x28, 0x1c, 0xa9, 0xf7, 0xd7, 0x2d, + 0xd6, 0xde, 0x8f, 0x69, 0x91, 0x90, 0xbf, 0xae, 0xe8, 0x6a, 0xd3, 0xf6, 0xe4, 0x91, 0x73, 0x23, + 0x4d, 0xdd, 0x3c, 0x36, 0xb3, 0xdc, 0x27, 0xf5, 0xb6, 0xd4, 0x97, 0x5f, 0x26, 0xfa, 0x5b, 0x93, + 0x07, 0x2f, 0x79, 0x36, 0x28, 0xf6, 0x19, 0xed, 0xdf, 0x94, 0xaf, 0x5f, 0x45, 0x0a, 0x5a, 0x0e, + 0xb2, 0xd4, 0x02, 0xaa, 0x7d, 0x26, 0x76, 0x9f, 0xcb, 0x59, 0x37, 0xe4, 0x73, 0x59, 0x45, 0xe8, + 0x2e, 0x25, 0xa2, 0xf9, 0xb1, 0x0b, 0xe4, 0x6c, 0xce, 0xf3, 0xd3, 0x56, 0x23, 0x4f, 0x61, 0x43, + 0x50, 0xcf, 0x4f, 0x5b, 0xbd, 0x89, 0x76, 0x48, 0xf2, 0xd6, 0x02, 0xef, 0x50, 0x54, 0x78, 0xc2, + 0x2c, 0x12, 0x53, 0xd9, 0x4a, 0x5d, 0xa9, 0xa2, 0xa9, 0x5b, 0x97, 0x59, 0xdb, 0x82, 0x6f, 0x2a, + 0x2e, 0xa5, 0xd2, 0x44, 0x87, 0x8f, 0x24, 0x88, 0x75, 0x12, 0xfd, 0x9f, 0x9b, 0x44, 0x60, 0xdb, + 0x41, 0x48, 0xfd, 0x4f, 0x33, 0xbb, 0xbe, 0x8b, 0x26, 0x87, 0x43, 0x75, 0x24, 0x41, 0x31, 0x96, + 0x30, 0x3d, 0x84, 0x5f, 0x3a, 0x1c, 0x33, 0xdd, 0x51, 0x25, 0x97, 0xd8, 0x7f, 0x27, 0x06, 0x9a, + 0x21, 0x9f, 0x0f, 0x38, 0x49, 0x14, 0x27, 0xfa, 0xdb, 0x21, 0x83, 0x3a, 0x88, 0x9c, 0x55, 0x47, + 0xf7, 0x5b, 0xf1, 0xc2, 0x7c, 0x0e, 0x4d, 0xe4, 0x90, 0xed, 0x0d, 0x75, 0x7d, 0x06, 0x4d, 0x60, + 0xb0, 0x7e, 0x43, 0x22, 0x9f, 0xed, 0x82, 0xae, 0xfc, 0x25, 0xfa, 0x93, 0x94, 0x86, 0x7e, 0x92, + 0x67, 0x12, 0x24, 0x49, 0xaf, 0x28, 0xe5, 0x37, 0x89, 0x4a, 0x92, 0xf7, 0x4c, 0x20, 0x84, 0xc5, + 0x15, 0x81, 0x7f, 0x86, 0xaf, 0x08, 0x8e, 0x07, 0xd0, 0xd2, 0x5b, 0x5e, 0x11, 0x08, 0xba, 0x2e, + 0xac, 0x40, 0x93, 0xed, 0x60, 0x20, 0xce, 0xe1, 0x90, 0x2d, 0xac, 0xc3, 0x42, 0x70, 0xb3, 0x50, + 0x6e, 0x43, 0x38, 0x5c, 0x47, 0xa9, 0x32, 0x95, 0xfc, 0x2a, 0x6c, 0xcf, 0x46, 0xb3, 0x5d, 0xab, + 0x78, 0x30, 0x88, 0xe9, 0xd7, 0x6d, 0x0c, 0xf0, 0x2f, 0x46, 0xc5, 0x6e, 0xb0, 0xaa, 0x0a, 0x7f, + 0xcc, 0x3f, 0x4a, 0x22, 0x3d, 0x71, 0xeb, 0xcd, 0x3b, 0x4a, 0xe2, 0x9c, 0x6d, 0x2e, 0x47, 0xc9, + 0x02, 0x5b, 0x54, 0xb8, 0x0c, 0x5e, 0x92, 0x85, 0xff, 0x44, 0x40, 0x73, 0x33, 0xcc, 0x5c, 0x7c, + 0x1d, 0x4d, 0x60, 0x18, 0x8b, 0x44, 0xcc, 0xca, 0x90, 0x71, 0x01, 0x87, 0x36, 0xb0, 0x3a, 0x70, + 0x2e, 0xe7, 0x64, 0xff, 0xad, 0x3a, 0xb1, 0x9a, 0xa4, 0x38, 0xcf, 0xca, 0x90, 0xe2, 0x1c, 0x84, + 0x3e, 0x38, 0xc5, 0xf9, 0x5c, 0x1e, 0xc6, 0xb1, 0x0f, 0x7b, 0x87, 0xd1, 0x79, 0x1e, 0x7c, 0xac, + 0x21, 0xd1, 0x79, 0xe1, 0x95, 0x69, 0x68, 0x96, 0x95, 0xf3, 0xcc, 0xc6, 0x61, 0x2c, 0xb7, 0x07, + 0xfd, 0x10, 0xac, 0xc8, 0xbc, 0xb6, 0xa0, 0x1f, 0x13, 0xd9, 0x15, 0xa2, 0x06, 0xf4, 0x33, 0xec, + 0xe1, 0x3b, 0xee, 0x39, 0xbf, 0xb1, 0x88, 0xb0, 0x4a, 0xc0, 0x6d, 0xcc, 0x49, 0xcf, 0x2a, 0x11, + 0x06, 0xa9, 0xdc, 0x11, 0x64, 0xf9, 0x17, 0x37, 0xc0, 0x9f, 0x30, 0x2e, 0x64, 0xbb, 0xe0, 0x66, + 0x43, 0xc6, 0x11, 0x2d, 0xa1, 0x33, 0x7a, 0x5a, 0x59, 0x38, 0x5c, 0xb7, 0xde, 0xc4, 0x5c, 0xb7, + 0x9b, 0x45, 0x09, 0xd9, 0x59, 0x94, 0xdc, 0x31, 0xb2, 0x28, 0xd2, 0xd8, 0x59, 0x14, 0x3b, 0x6b, + 0xd2, 0xe6, 0x66, 0x4d, 0xc6, 0x8f, 0x9d, 0x35, 0x79, 0xf9, 0x16, 0x59, 0x13, 0x17, 0x4b, 0xe2, + 0xa4, 0xe3, 0xf2, 0xee, 0x20, 0x1d, 0x67, 0xb1, 0x3f, 0x13, 0x32, 0xd9, 0x31, 0xdc, 0x76, 0xf6, + 0xe7, 0x03, 0xc6, 0xfd, 0xa0, 0x1b, 0xfa, 0x2e, 0xcf, 0xfd, 0x60, 0x84, 0x48, 0xb9, 0x9f, 0x47, + 0x46, 0xe5, 0x7e, 0x18, 0xd7, 0x43, 0x69, 0xd7, 0x89, 0xde, 0xb4, 0x6b, 0xda, 0x2f, 0xdf, 0x3a, + 0xed, 0x6a, 0xf1, 0x5b, 0xf9, 0x77, 0x9a, 0xdf, 0xa2, 0xb2, 0xbd, 0x49, 0x1c, 0xbf, 0x45, 0x65, + 0x7b, 0x84, 0xdf, 0x72, 0x29, 0xb4, 0xbd, 0xf8, 0x2d, 0x2a, 0xfb, 0xb3, 0xf1, 0x5b, 0x93, 0x1f, + 0x18, 0x7e, 0x6b, 0xca, 0x1d, 0xe4, 0xb7, 0x4a, 0x51, 0x4e, 0x40, 0x8b, 0xd6, 0x12, 0x7d, 0x33, + 0xd1, 0x5a, 0x68, 0xd1, 0x5a, 0x7b, 0xf6, 0x66, 0x13, 0xe5, 0x62, 0x9d, 0x38, 0x13, 0xb2, 0x69, + 0xd1, 0x5a, 0xf3, 0xb1, 0xb5, 0xb8, 0x81, 0x69, 0xe4, 0x82, 0x3b, 0x11, 0xec, 0xba, 0xaa, 0x50, + 0xec, 0x49, 0x19, 0x50, 0x2c, 0x8e, 0xfe, 0xc5, 0xf1, 0x0a, 0xf9, 0x8c, 0xd0, 0xf7, 0xd9, 0x99, + 0x85, 0x4d, 0x4e, 0x66, 0x41, 0x4c, 0x33, 0x7a, 0x4d, 0x2c, 0x12, 0x0c, 0x6d, 0x82, 0xd1, 0x6f, + 0x86, 0x95, 0x20, 0x54, 0x3c, 0x5c, 0x17, 0xa2, 0x27, 0xb6, 0x53, 0xf1, 0x56, 0x15, 0x50, 0xf1, + 0xd6, 0xef, 0xc4, 0x40, 0x33, 0xc9, 0x6e, 0x9a, 0x81, 0x8a, 0xb7, 0x9a, 0x3f, 0x68, 0x54, 0xfc, + 0x53, 0xba, 0xb2, 0x14, 0x2d, 0x96, 0xd2, 0x90, 0x28, 0xf2, 0x4c, 0x58, 0x3b, 0x2b, 0x07, 0x22, + 0xbe, 0x70, 0x77, 0x36, 0x9a, 0xed, 0xea, 0xf1, 0x60, 0x10, 0xcc, 0xaa, 0x8d, 0x60, 0xce, 0x40, + 0x36, 0x62, 0x40, 0x03, 0xf2, 0xb8, 0x80, 0x69, 0x6c, 0x59, 0xde, 0x62, 0x5e, 0x0e, 0x7d, 0x2f, + 0x49, 0xe5, 0x9d, 0x79, 0x68, 0x16, 0x68, 0x57, 0x5d, 0xe4, 0xe5, 0x6f, 0xbc, 0xc8, 0xcb, 0x67, + 0x46, 0x21, 0x2f, 0xd3, 0xa2, 0x57, 0x1b, 0xc5, 0xf9, 0x57, 0x82, 0x43, 0x55, 0x5c, 0xf6, 0xb9, + 0xa0, 0x2b, 0xa7, 0x05, 0x89, 0x96, 0xca, 0xdd, 0x82, 0x31, 0x18, 0x37, 0x5a, 0x2e, 0x80, 0x4a, + 0x14, 0x92, 0xab, 0x25, 0xf7, 0x7e, 0x99, 0xec, 0x6f, 0x4e, 0x75, 0xed, 0xb2, 0x24, 0x1d, 0xd8, + 0xd4, 0xc9, 0x7c, 0xfd, 0x7a, 0xe2, 0xc6, 0x91, 0xb3, 0x57, 0x9b, 0xb6, 0x43, 0xca, 0x2f, 0x40, + 0x64, 0xd0, 0x77, 0x78, 0xe8, 0x4b, 0xa3, 0xf9, 0x14, 0x50, 0xd6, 0xc4, 0xc3, 0xf6, 0xc0, 0x65, + 0x20, 0xb1, 0x8d, 0xbe, 0x4b, 0x46, 0xcb, 0x21, 0x2b, 0x05, 0xc2, 0x60, 0x37, 0x1c, 0xb9, 0x49, + 0xa6, 0x93, 0x87, 0xe3, 0xe0, 0xa5, 0xc4, 0xf7, 0x97, 0x53, 0x27, 0xce, 0x0d, 0x9f, 0x3b, 0x39, + 0x7c, 0xf9, 0x23, 0x23, 0x7e, 0xfa, 0x6a, 0xd3, 0x76, 0xa6, 0xd7, 0x16, 0xff, 0x89, 0x80, 0x66, + 0x46, 0x34, 0xec, 0xcb, 0x6a, 0x0f, 0x0f, 0x49, 0xe0, 0x49, 0x17, 0x74, 0xa5, 0x43, 0x90, 0xbc, + 0xdb, 0xc8, 0x8d, 0x89, 0xcb, 0x47, 0x53, 0x07, 0x8e, 0x90, 0xd8, 0x2c, 0x3d, 0x67, 0x69, 0xa6, + 0x84, 0xde, 0x6b, 0x83, 0x6d, 0x26, 0xf3, 0x0f, 0xd3, 0xa7, 0x6b, 0x35, 0xc9, 0xec, 0x33, 0x9f, + 0xb2, 0x92, 0x44, 0x7f, 0x87, 0xc5, 0x36, 0x60, 0x2a, 0xd7, 0x5c, 0xfd, 0xd0, 0x87, 0x89, 0xfe, + 0xfd, 0x58, 0x70, 0xf0, 0x21, 0xbf, 0x7f, 0xc9, 0x43, 0x17, 0x52, 0xfb, 0x8f, 0x25, 0x0f, 0xb4, + 0x98, 0xb3, 0xf7, 0x9e, 0x8d, 0x38, 0x24, 0xa0, 0x69, 0x9b, 0x35, 0xad, 0x81, 0x14, 0x43, 0x94, + 0x38, 0x22, 0x98, 0x27, 0x12, 0x27, 0x77, 0xbd, 0xdc, 0x48, 0x66, 0x33, 0xd0, 0x41, 0xc3, 0xef, + 0x0e, 0xc0, 0x79, 0x91, 0x93, 0xc2, 0x07, 0x61, 0xae, 0x67, 0x68, 0x57, 0xa2, 0xbf, 0x7d, 0x64, + 0x7f, 0x53, 0xb2, 0x6f, 0x1b, 0x1c, 0x96, 0x59, 0x88, 0xd7, 0x0f, 0x3f, 0x21, 0x17, 0xe1, 0x58, + 0xd7, 0xe0, 0x9e, 0x89, 0xf8, 0x22, 0x97, 0xc9, 0x60, 0x9c, 0x15, 0x67, 0xc3, 0xca, 0x64, 0x30, + 0x81, 0x65, 0x32, 0xb0, 0x7c, 0xd6, 0xad, 0xc4, 0x03, 0x04, 0xc7, 0xc3, 0x5d, 0x20, 0x81, 0xd7, + 0xed, 0x38, 0xde, 0xaa, 0x02, 0x1c, 0x6f, 0xfd, 0x66, 0x87, 0x95, 0x09, 0xc7, 0x5b, 0xcd, 0x4b, + 0x3b, 0x05, 0x5d, 0xd9, 0x2b, 0xa0, 0x16, 0x41, 0x4a, 0x73, 0xf7, 0xe4, 0x75, 0x30, 0x1e, 0x2b, + 0x4f, 0x7d, 0xd4, 0x6f, 0x34, 0x7f, 0x63, 0x99, 0x73, 0x0e, 0x7d, 0x68, 0xa1, 0xd4, 0xcb, 0x87, + 0x93, 0x3d, 0xad, 0x46, 0x67, 0x1f, 0xbb, 0x0c, 0x66, 0x55, 0xf2, 0xd0, 0x05, 0xac, 0x25, 0x34, + 0x47, 0x81, 0xbc, 0x8c, 0x57, 0x9b, 0xb6, 0x5f, 0x11, 0xf8, 0x5b, 0x78, 0x45, 0x60, 0xab, 0xc7, + 0x12, 0x0c, 0xd7, 0x54, 0x7e, 0x10, 0x12, 0x8c, 0x34, 0xab, 0xba, 0xcf, 0x25, 0x18, 0x1f, 0xb3, + 0x70, 0x07, 0xde, 0x12, 0x8c, 0xc0, 0x0d, 0x49, 0x30, 0x30, 0x7f, 0xcc, 0x49, 0x30, 0x6c, 0xb6, + 0x26, 0xac, 0x99, 0x5b, 0x9a, 0x71, 0x58, 0x18, 0x83, 0x38, 0x23, 0xa4, 0x2b, 0x9b, 0x89, 0x38, + 0xa3, 0xd6, 0x09, 0xb5, 0xdd, 0x3b, 0x79, 0x89, 0x06, 0x7c, 0xe0, 0x6a, 0xd3, 0x76, 0x12, 0x81, + 0xd3, 0x71, 0xbf, 0x5b, 0x9b, 0x92, 0x3d, 0xad, 0x2c, 0x5a, 0x7d, 0x62, 0xb0, 0x3b, 0x11, 0x3f, + 0x93, 0xda, 0x7f, 0xcc, 0xd1, 0x97, 0x88, 0x45, 0xfe, 0xa1, 0xc0, 0x52, 0x3e, 0xdb, 0x1e, 0xad, + 0x2d, 0x5e, 0x8f, 0xd6, 0x5a, 0x5d, 0x79, 0xc6, 0xfe, 0x68, 0x2d, 0xe4, 0x23, 0x9f, 0x9a, 0x98, + 0x75, 0xf7, 0xe7, 0xc6, 0x40, 0xbc, 0xaa, 0x02, 0xec, 0xcd, 0x59, 0xae, 0xa7, 0x31, 0xbf, 0x68, + 0x34, 0x31, 0xbb, 0xd7, 0x9c, 0xe4, 0xb9, 0xa0, 0x4c, 0x76, 0x6c, 0x34, 0x21, 0x85, 0xfe, 0x45, + 0x36, 0x9a, 0x61, 0xef, 0xf4, 0x03, 0xa6, 0x83, 0x98, 0xf5, 0x8c, 0x13, 0xe8, 0xee, 0xf5, 0x85, + 0x2b, 0xfd, 0x95, 0xae, 0xac, 0x40, 0x95, 0x92, 0xe7, 0x51, 0xdc, 0xa8, 0xfd, 0xce, 0xa7, 0xd9, + 0x10, 0x50, 0x90, 0x8b, 0x2d, 0x67, 0x83, 0xd1, 0xbf, 0x74, 0x07, 0x14, 0xbc, 0xbb, 0xf2, 0xb6, + 0x23, 0x02, 0xca, 0x07, 0x49, 0xd4, 0xf2, 0x60, 0x9d, 0x49, 0xad, 0x00, 0x0d, 0xd6, 0xa8, 0x2b, + 0x11, 0xc9, 0x56, 0x21, 0x6f, 0xe0, 0x7f, 0x51, 0x8b, 0xe1, 0x43, 0x17, 0x8a, 0x7d, 0xc3, 0xdf, + 0x7f, 0x68, 0xec, 0x8e, 0x03, 0x4c, 0x24, 0xdb, 0x5a, 0x53, 0xcd, 0x67, 0xd2, 0x89, 0xc0, 0x92, + 0x1d, 0xba, 0x11, 0xef, 0x5c, 0x08, 0x15, 0x26, 0xa9, 0x86, 0x7f, 0x1b, 0x3d, 0x67, 0x8d, 0xae, + 0x8e, 0x91, 0xa3, 0x9f, 0x14, 0xa9, 0xb6, 0x2f, 0x96, 0x6e, 0xd2, 0x95, 0x00, 0xda, 0x20, 0x65, + 0xda, 0x40, 0xb9, 0x9c, 0x84, 0x33, 0xe4, 0x8e, 0x35, 0xd5, 0xbd, 0x93, 0xd1, 0xd6, 0xc5, 0x3e, + 0xa0, 0xe7, 0xc0, 0xec, 0x9b, 0xbb, 0xa5, 0x46, 0xfb, 0x6e, 0x23, 0xde, 0x09, 0xa7, 0x57, 0xf8, + 0xaf, 0x49, 0x60, 0x43, 0xf7, 0x47, 0x1e, 0x8c, 0x0b, 0xb8, 0xd2, 0x66, 0x06, 0x93, 0xe1, 0x02, + 0x8e, 0xc5, 0x14, 0xe6, 0x5e, 0x5e, 0xbd, 0xd7, 0x74, 0x65, 0x35, 0x5a, 0x29, 0x65, 0x3c, 0x0c, + 0x8a, 0x43, 0x61, 0x20, 0x4b, 0xf8, 0xe2, 0x1d, 0x03, 0xa3, 0xf0, 0x5f, 0x66, 0x43, 0x96, 0x5f, + 0xd7, 0xd5, 0x5b, 0x64, 0x33, 0xca, 0x19, 0x5d, 0xd2, 0xfc, 0xb6, 0x5b, 0x34, 0xae, 0xdc, 0xf2, + 0x55, 0xe5, 0xaf, 0x62, 0xb9, 0xc3, 0xd4, 0xe6, 0xa6, 0x44, 0xd9, 0x2b, 0xf9, 0x04, 0x7f, 0x20, + 0x12, 0xc7, 0x87, 0xc2, 0x25, 0xf8, 0xf3, 0x18, 0x8a, 0xe4, 0x6b, 0x24, 0xaf, 0x3e, 0x6b, 0x5a, + 0xba, 0x5f, 0xd0, 0x95, 0x2e, 0x01, 0xb5, 0x0b, 0x92, 0xe7, 0x1e, 0xca, 0x8d, 0x70, 0x14, 0xec, + 0xba, 0xdd, 0x25, 0x5b, 0xb5, 0x7f, 0x9a, 0x05, 0x79, 0x71, 0x7f, 0xdc, 0x17, 0xb5, 0xb4, 0x42, + 0x57, 0x14, 0xf4, 0xb2, 0xe4, 0xbd, 0x15, 0xf4, 0xa5, 0xe2, 0x98, 0x03, 0x6f, 0xbb, 0xb5, 0xff, + 0x94, 0x87, 0xa6, 0x28, 0x81, 0x00, 0xe6, 0xa0, 0xac, 0x30, 0x1d, 0xae, 0x67, 0x49, 0xd1, 0x95, + 0x05, 0x3c, 0xac, 0x4f, 0x83, 0x40, 0xc1, 0x0c, 0xbe, 0xe9, 0xb3, 0x23, 0x8c, 0xe9, 0xd9, 0xa9, + 0x42, 0xe3, 0x4c, 0xa0, 0x89, 0x16, 0x64, 0xf9, 0xb2, 0xc1, 0x52, 0xf9, 0xe7, 0x12, 0x94, 0xc8, + 0xf3, 0x1d, 0x03, 0x03, 0xb4, 0x56, 0x55, 0xb3, 0x68, 0x83, 0xba, 0x90, 0x93, 0x27, 0x14, 0x08, + 0x2a, 0xb4, 0x17, 0x83, 0x68, 0x5a, 0x30, 0x14, 0x8c, 0xad, 0x0c, 0x6f, 0x0a, 0x86, 0xaa, 0xfd, + 0xd1, 0xe8, 0x7b, 0xe1, 0x48, 0x80, 0xdc, 0x20, 0xec, 0x2e, 0xe5, 0xae, 0x95, 0x1f, 0x1d, 0xd9, + 0xdd, 0x3e, 0xfc, 0x69, 0xb3, 0xc9, 0x46, 0x76, 0xef, 0x24, 0x32, 0x6c, 0x12, 0xb2, 0xdd, 0xe8, + 0xec, 0x23, 0xf1, 0xf4, 0xdd, 0xfd, 0xc4, 0x88, 0x57, 0x7a, 0x98, 0x6a, 0x5d, 0x59, 0x65, 0xa7, + 0x28, 0x5f, 0x82, 0x15, 0x10, 0x66, 0x1e, 0xc3, 0x34, 0x44, 0x82, 0x87, 0x70, 0x2a, 0xec, 0x44, + 0xae, 0x0d, 0xb6, 0x91, 0x72, 0x7c, 0x5b, 0xe0, 0x2a, 0x56, 0x55, 0xd8, 0xe5, 0x23, 0x57, 0x04, + 0x97, 0xdd, 0xc0, 0x38, 0x0c, 0x6e, 0x9f, 0x09, 0xba, 0x72, 0x4a, 0x70, 0x59, 0x0e, 0xe8, 0x82, + 0xc9, 0x82, 0x9a, 0xa3, 0x9d, 0x72, 0x44, 0x3d, 0x26, 0x36, 0xb6, 0x87, 0xfb, 0xb0, 0x02, 0xca, + 0xa4, 0xbd, 0xbd, 0x1a, 0x02, 0xb7, 0x98, 0x18, 0xec, 0x86, 0x27, 0x93, 0x1c, 0x19, 0xe0, 0x6e, + 0x2c, 0x0a, 0xa5, 0x32, 0x67, 0x00, 0x2f, 0xc7, 0x37, 0x8c, 0x4b, 0x17, 0x40, 0x5c, 0x9d, 0xe8, + 0x8f, 0x93, 0x44, 0x08, 0x26, 0xa1, 0xee, 0x98, 0xa4, 0xb8, 0x9a, 0x63, 0xd0, 0x59, 0x3c, 0xc7, + 0x74, 0x0c, 0x7a, 0x5a, 0xaa, 0xdb, 0xe2, 0xd8, 0xd7, 0xa2, 0xc9, 0xbc, 0x82, 0x87, 0xe5, 0x26, + 0xc5, 0x8e, 0x55, 0x8e, 0x2a, 0x79, 0xb6, 0x67, 0x2e, 0xfa, 0xaa, 0x0a, 0xd5, 0xd1, 0x50, 0xec, + 0x12, 0xd0, 0xe4, 0x60, 0xb4, 0x92, 0x18, 0xcd, 0x98, 0xc7, 0x86, 0xb5, 0x52, 0x79, 0xe0, 0x88, + 0xf6, 0x28, 0xc9, 0x49, 0x75, 0xb8, 0x8f, 0x19, 0xcb, 0xc0, 0x78, 0x0b, 0x99, 0x35, 0x4c, 0x91, + 0xfc, 0x52, 0xa2, 0x7f, 0x4f, 0xf2, 0xe3, 0x0b, 0x8e, 0x16, 0x23, 0x3d, 0x4d, 0xb0, 0x45, 0x26, + 0x0d, 0x55, 0xec, 0x4b, 0xf4, 0xef, 0x07, 0xd1, 0x3e, 0x4c, 0x8c, 0x3b, 0x7d, 0xd5, 0xf1, 0xfd, + 0xd2, 0xcb, 0x82, 0xae, 0x0c, 0x08, 0xa8, 0x5f, 0x90, 0x9c, 0x77, 0x56, 0xee, 0x12, 0x52, 0x03, + 0x47, 0x92, 0x6d, 0xbb, 0x8d, 0x73, 0xdd, 0xd6, 0xdd, 0xc1, 0xa9, 0x07, 0x00, 0x1c, 0xaf, 0x0d, + 0xb6, 0x5d, 0x1b, 0xdc, 0x96, 0xfc, 0xe6, 0x6c, 0x72, 0x67, 0xa7, 0xf9, 0x07, 0xbd, 0x65, 0x20, + 0x73, 0x21, 0x6e, 0xa0, 0x87, 0xfb, 0x86, 0x9b, 0xbf, 0x1f, 0x3e, 0xd7, 0x97, 0x88, 0xef, 0xab, + 0xdd, 0x52, 0xcf, 0x64, 0x61, 0x70, 0x5f, 0x40, 0x31, 0x83, 0xf3, 0xec, 0xb7, 0x0f, 0xef, 0x18, + 0x22, 0xde, 0x69, 0x5f, 0x7c, 0x9c, 0x18, 0xb8, 0x38, 0x7c, 0xee, 0xc4, 0xf0, 0xb7, 0x97, 0xc0, + 0xda, 0x88, 0x8d, 0x69, 0xb7, 0xcc, 0x80, 0xeb, 0x5a, 0xb8, 0x27, 0x07, 0x4d, 0xb5, 0xa6, 0xfe, + 0x60, 0xa0, 0xed, 0x55, 0x36, 0x06, 0xc7, 0x9b, 0xf7, 0xb5, 0xf1, 0x36, 0x00, 0x57, 0x17, 0x07, + 0x8c, 0x3d, 0xc7, 0x79, 0x9e, 0xf5, 0xde, 0x13, 0x58, 0x6d, 0x82, 0xae, 0xb4, 0x08, 0xa8, 0x59, + 0x90, 0x5c, 0x87, 0x20, 0xd7, 0x1a, 0x9f, 0x7c, 0x6c, 0xec, 0x39, 0xce, 0x63, 0x5d, 0xd8, 0x0d, + 0x7c, 0xe2, 0xc4, 0xd0, 0xc9, 0xe8, 0x6c, 0x1f, 0x39, 0xdd, 0x02, 0x32, 0x28, 0x93, 0x53, 0xde, + 0x73, 0xd6, 0x68, 0x3b, 0x38, 0x7c, 0x79, 0x77, 0xea, 0xac, 0x79, 0xee, 0xfc, 0x62, 0x71, 0x7a, + 0x8d, 0xcb, 0x89, 0x78, 0x47, 0xf2, 0xd8, 0xa9, 0x91, 0xc3, 0xcd, 0x90, 0xb4, 0x80, 0x3d, 0x3f, + 0xc0, 0x1e, 0x9d, 0xcf, 0x41, 0x0b, 0xca, 0xfc, 0xb1, 0xda, 0x77, 0x6c, 0xc1, 0x10, 0x6d, 0x4f, + 0xd1, 0x6f, 0xdd, 0x4f, 0xd1, 0x4b, 0xce, 0x60, 0x60, 0x38, 0x09, 0xcb, 0xa5, 0x9b, 0x79, 0x87, + 0xd6, 0xa0, 0xf1, 0x38, 0x75, 0x4e, 0x75, 0x94, 0x00, 0x12, 0x4e, 0xba, 0x40, 0xcb, 0xe4, 0x27, + 0x00, 0x3f, 0xc3, 0xf8, 0xa9, 0xee, 0x9d, 0x55, 0xd5, 0x40, 0x66, 0x16, 0x83, 0x43, 0xc5, 0x13, + 0xc5, 0x4f, 0x8c, 0x74, 0xef, 0x37, 0x06, 0x9b, 0x54, 0xda, 0x43, 0x0c, 0xa1, 0xc9, 0x5b, 0x82, + 0x91, 0x58, 0x23, 0xdc, 0xd7, 0xaa, 0x8a, 0x28, 0x79, 0x8a, 0x96, 0xeb, 0x4a, 0xb9, 0xe4, 0xa8, + 0x92, 0x97, 0x3a, 0x86, 0xb7, 0xc5, 0xd8, 0xf7, 0xfe, 0x90, 0x63, 0x08, 0x1b, 0x26, 0xcd, 0xb9, + 0x75, 0x4c, 0x5a, 0xfa, 0xb1, 0xa0, 0x2b, 0xdd, 0x02, 0x3a, 0x24, 0x48, 0xa3, 0x1c, 0x8c, 0xec, + 0x4f, 0xb6, 0x5e, 0x32, 0x49, 0xb2, 0xfe, 0xbd, 0xc9, 0x8f, 0x2f, 0x10, 0xa0, 0xc3, 0xd8, 0x87, + 0x60, 0x41, 0x90, 0xd2, 0xd3, 0x3c, 0x6e, 0x7b, 0x8d, 0x3d, 0x67, 0x13, 0xfd, 0x7b, 0xa0, 0x35, + 0xb4, 0xb8, 0xda, 0xb4, 0x8d, 0xa6, 0x95, 0xb9, 0xda, 0xb4, 0xcd, 0x81, 0x22, 0x53, 0xbd, 0xad, + 0x45, 0x9e, 0xf8, 0xe3, 0x62, 0x0e, 0x7a, 0x38, 0xed, 0xcc, 0x1e, 0x0c, 0x74, 0xf2, 0x1b, 0x1b, + 0x15, 0xe8, 0xba, 0xf4, 0x78, 0x75, 0x78, 0x41, 0x35, 0x38, 0x29, 0x90, 0x1d, 0xb5, 0xe0, 0x01, + 0xa9, 0xdc, 0xdf, 0xdc, 0x4c, 0x32, 0xf8, 0x3d, 0x47, 0x2d, 0x16, 0xe4, 0x8c, 0x76, 0x3e, 0xf2, + 0x46, 0x1e, 0x74, 0xd2, 0x61, 0x1a, 0xb2, 0x75, 0x1f, 0xf5, 0x1b, 0xf1, 0xfd, 0x7c, 0x4b, 0x86, + 0x66, 0xae, 0x0d, 0xb6, 0x11, 0x6d, 0x0c, 0xb7, 0x1b, 0xe4, 0x51, 0x6e, 0xe9, 0x32, 0xf6, 0x1c, + 0x73, 0x20, 0x9b, 0xff, 0x46, 0x40, 0x53, 0x9d, 0x7b, 0x2b, 0x16, 0x58, 0x08, 0x40, 0x30, 0x49, + 0x51, 0xeb, 0x26, 0x17, 0xa0, 0xf1, 0xd1, 0xc6, 0xda, 0x5a, 0x2d, 0x1a, 0xa5, 0x2e, 0x8c, 0xe4, + 0xa7, 0x59, 0x43, 0xc1, 0x05, 0x5f, 0x6e, 0x0b, 0x18, 0x66, 0xb1, 0x4c, 0x1b, 0x39, 0x60, 0x15, + 0x08, 0xbf, 0x44, 0x9f, 0x9d, 0x70, 0xc4, 0x3a, 0x09, 0x3b, 0x99, 0xf7, 0x98, 0xd3, 0xbe, 0x17, + 0x93, 0x45, 0x0e, 0x73, 0xda, 0xc2, 0xaf, 0x27, 0x50, 0x67, 0xce, 0xbb, 0x88, 0x23, 0xab, 0x2d, + 0x5a, 0x9d, 0x05, 0x38, 0x25, 0xb4, 0xfa, 0x58, 0xf1, 0x23, 0xb6, 0x35, 0x9b, 0xca, 0x48, 0xf6, + 0xcf, 0x04, 0x84, 0x02, 0x78, 0x19, 0x5c, 0xa4, 0xd6, 0x16, 0x41, 0x57, 0x76, 0x0a, 0x12, 0x57, + 0x21, 0x6f, 0x21, 0xe2, 0x60, 0x1a, 0x39, 0x55, 0xad, 0x5c, 0xab, 0x54, 0xad, 0x5e, 0x08, 0x8a, + 0x25, 0xc6, 0x56, 0x27, 0x86, 0x76, 0x25, 0x0f, 0xf7, 0x81, 0x02, 0x29, 0xd1, 0x3f, 0x90, 0xec, + 0x89, 0x17, 0x5d, 0x1b, 0x6c, 0x5b, 0x5b, 0xa9, 0xae, 0xaa, 0x5a, 0xad, 0xac, 0xad, 0x5c, 0x68, + 0x74, 0x7e, 0x0e, 0xc9, 0x3e, 0x93, 0x6d, 0xad, 0x23, 0xbb, 0x3b, 0x09, 0xa9, 0x42, 0x89, 0x94, + 0x22, 0x9e, 0x32, 0x86, 0x0f, 0xa8, 0xdc, 0x1c, 0xc4, 0x3f, 0x5b, 0xea, 0x49, 0x50, 0x80, 0x05, + 0x74, 0xc5, 0x6f, 0x29, 0x27, 0xd7, 0x27, 0xfa, 0xdb, 0x53, 0xe7, 0x4e, 0x10, 0x9c, 0x7d, 0x72, + 0x67, 0x22, 0xde, 0x91, 0x18, 0x18, 0x48, 0x0c, 0x1d, 0x80, 0xf7, 0x6e, 0x64, 0xc7, 0x90, 0x43, + 0x79, 0x49, 0x04, 0xde, 0x38, 0x9d, 0x93, 0xd1, 0xd2, 0xcd, 0x2c, 0x68, 0xae, 0x0d, 0xb6, 0xad, + 0x0e, 0xc7, 0x54, 0xcd, 0x1f, 0xd8, 0x9a, 0xea, 0x6d, 0xb5, 0xf4, 0x8a, 0xab, 0x5d, 0xba, 0xac, + 0x5b, 0x23, 0x95, 0xbf, 0x16, 0xd2, 0x68, 0xb7, 0x88, 0x61, 0x8b, 0x53, 0xbf, 0x15, 0x65, 0x66, + 0x29, 0x94, 0x6d, 0x60, 0x04, 0x3e, 0x91, 0x00, 0xf2, 0x2a, 0x4a, 0x02, 0x35, 0x25, 0x04, 0xcb, + 0x24, 0x5b, 0x9b, 0x20, 0x01, 0x0b, 0x63, 0x5d, 0x81, 0x7a, 0x4c, 0x0c, 0x76, 0x0f, 0x9f, 0x39, + 0x6d, 0x74, 0xee, 0x83, 0xbd, 0x62, 0x84, 0x04, 0x28, 0xc9, 0x16, 0x39, 0xb5, 0x64, 0x77, 0x88, + 0xbe, 0x7f, 0xcb, 0x7e, 0x2b, 0xf3, 0x2c, 0x9e, 0xd1, 0xc6, 0xce, 0x15, 0x11, 0x3c, 0xeb, 0xa2, + 0xe1, 0xe1, 0x3b, 0x4c, 0xf5, 0xea, 0xe4, 0xdc, 0x3c, 0xd8, 0x87, 0x09, 0x37, 0xce, 0x3e, 0xec, + 0xbd, 0x9d, 0xec, 0x43, 0x54, 0x57, 0x1a, 0x50, 0x48, 0xf2, 0xc0, 0x21, 0x72, 0x05, 0x11, 0x9e, + 0xe2, 0xab, 0x0c, 0x20, 0x85, 0x0f, 0xb6, 0x03, 0x1e, 0x75, 0xa6, 0x90, 0x26, 0x68, 0x16, 0x17, + 0x52, 0xa6, 0x9c, 0x6d, 0xb5, 0xe7, 0x8b, 0xbd, 0x2b, 0x87, 0x7a, 0x6d, 0xff, 0x08, 0x88, 0x7e, + 0xd8, 0x9e, 0xfb, 0x8b, 0xe8, 0x6f, 0x16, 0x74, 0x65, 0x9b, 0x80, 0xfe, 0x52, 0xf2, 0x3a, 0x06, + 0xf9, 0x8d, 0xb1, 0x3c, 0xc3, 0xb7, 0xe5, 0x01, 0xde, 0x93, 0x8d, 0x66, 0xaf, 0x0a, 0x13, 0x6b, + 0x83, 0xb5, 0x61, 0x9b, 0x34, 0x76, 0xbd, 0xfb, 0x09, 0x7b, 0x36, 0x7d, 0xe8, 0x6f, 0xf3, 0xf1, + 0x1a, 0x37, 0xa6, 0xc7, 0xab, 0xc6, 0x2e, 0x68, 0x7a, 0x51, 0x57, 0x16, 0xd1, 0xc7, 0xeb, 0x71, + 0xf3, 0x1f, 0x1f, 0x7d, 0xb2, 0xae, 0x0d, 0xb6, 0x25, 0x7b, 0x9a, 0x8c, 0x93, 0x67, 0x80, 0xb9, + 0x1d, 0xbe, 0xd0, 0x3c, 0x7c, 0x79, 0xf7, 0xd2, 0x25, 0x4b, 0xae, 0x97, 0x4d, 0xd0, 0x85, 0xdc, + 0x3c, 0x61, 0x6a, 0xc0, 0x12, 0x39, 0x6d, 0xb0, 0x23, 0x0e, 0x78, 0xbf, 0x96, 0xe9, 0xca, 0xa3, + 0x76, 0xc4, 0x31, 0x83, 0x21, 0x22, 0x5b, 0xa6, 0xe0, 0xb1, 0x69, 0x11, 0x49, 0x98, 0xf8, 0x74, + 0x1b, 0xc6, 0x05, 0xe9, 0x4d, 0xf4, 0xf7, 0x92, 0x83, 0x39, 0x33, 0xc0, 0x84, 0x39, 0xc9, 0xaf, + 0x8e, 0x73, 0xd1, 0x8c, 0x3d, 0x6e, 0xe5, 0xff, 0x96, 0x8d, 0x0a, 0xdc, 0x63, 0x3f, 0x18, 0x57, + 0xf3, 0xb7, 0x63, 0xb8, 0x9a, 0x60, 0xaf, 0x8a, 0xaf, 0xe6, 0x13, 0xc6, 0xf9, 0x5d, 0xe9, 0x76, + 0xc8, 0x6e, 0x66, 0x7f, 0xaf, 0x6f, 0x2a, 0x49, 0x32, 0x9b, 0xf6, 0x60, 0x32, 0x2e, 0x85, 0xdf, + 0x2a, 0xb7, 0x98, 0xf7, 0xef, 0xb3, 0xd0, 0x5c, 0x55, 0xab, 0xa7, 0x03, 0x2f, 0x8f, 0x84, 0xeb, + 0xef, 0xca, 0x05, 0xac, 0xb4, 0x5f, 0xc0, 0xc5, 0x26, 0xc6, 0x24, 0x17, 0x70, 0x36, 0xa1, 0x1e, + 0x31, 0x39, 0xc7, 0x51, 0x8f, 0xf7, 0xea, 0xca, 0x91, 0xd0, 0x88, 0x99, 0xb6, 0x49, 0x5e, 0xc0, + 0x5e, 0x44, 0x6b, 0xeb, 0xf1, 0xfc, 0x33, 0x3c, 0x80, 0xff, 0x47, 0x36, 0x9a, 0xe7, 0x3d, 0xe6, + 0x83, 0x71, 0xdd, 0xd6, 0x8f, 0xe1, 0xba, 0xf1, 0xa1, 0xef, 0x13, 0x03, 0x1d, 0x8e, 0xcd, 0xb9, + 0xef, 0x2e, 0x1a, 0x4d, 0x9e, 0x96, 0xe9, 0x58, 0x68, 0x22, 0xd6, 0xd4, 0xc0, 0x4e, 0xfe, 0x88, + 0xd9, 0x13, 0xc9, 0xbf, 0x7d, 0xd0, 0x80, 0x7f, 0xfb, 0x0a, 0xff, 0x53, 0x36, 0x2a, 0x28, 0xaf, + 0xd3, 0xfc, 0x21, 0x62, 0x9b, 0x76, 0x57, 0x6e, 0xdb, 0xab, 0xf6, 0xdb, 0xf6, 0x4b, 0x5e, 0xaf, + 0x02, 0xb7, 0x0d, 0x8c, 0xf1, 0x8c, 0x8f, 0x3e, 0x4e, 0xee, 0xbf, 0x70, 0xef, 0xef, 0xdc, 0x6d, + 0x97, 0x5f, 0xbd, 0xa7, 0x2b, 0x31, 0x14, 0x91, 0xd2, 0xee, 0xbc, 0x5c, 0xc4, 0x43, 0x67, 0xa2, + 0xbf, 0x97, 0xdf, 0x0f, 0x4a, 0xd5, 0x7a, 0xdd, 0x65, 0xbb, 0xb9, 0x1c, 0xec, 0x10, 0x6f, 0x36, + 0xb7, 0x2f, 0x07, 0x3d, 0xe4, 0xf1, 0xd1, 0x07, 0xe3, 0x86, 0xff, 0x6a, 0x0c, 0x37, 0xdc, 0x16, + 0xfa, 0x06, 0x06, 0xe9, 0xde, 0x09, 0xbb, 0x77, 0xbf, 0xdc, 0xea, 0x76, 0x41, 0x57, 0x5a, 0x05, + 0xb4, 0x4b, 0x90, 0xd2, 0x1f, 0x85, 0x1c, 0xe4, 0x0d, 0x87, 0xad, 0xcb, 0xbc, 0xff, 0xab, 0x44, + 0xbc, 0x63, 0xb8, 0xef, 0x14, 0x90, 0x4c, 0x89, 0xfe, 0xb8, 0x31, 0xb8, 0x3d, 0xd9, 0x7b, 0x8a, + 0xc5, 0x60, 0x31, 0xab, 0x80, 0x14, 0x1e, 0x68, 0x1e, 0xde, 0x31, 0x04, 0x97, 0x9f, 0x5f, 0x3e, + 0xb9, 0xfc, 0xbd, 0x9f, 0x1a, 0xfd, 0xfd, 0xe0, 0xfe, 0x54, 0xf8, 0x5f, 0xb3, 0xd1, 0x1c, 0xd7, + 0x44, 0xd6, 0xcb, 0x77, 0x1a, 0x09, 0xbc, 0x6e, 0x17, 0xd8, 0x94, 0x99, 0x1c, 0x2d, 0x41, 0x02, + 0x8b, 0x33, 0x22, 0x01, 0x2c, 0x4c, 0xb9, 0x9c, 0xda, 0x7f, 0xf6, 0x89, 0xe2, 0x27, 0x8c, 0x96, + 0x5d, 0x46, 0xeb, 0xd7, 0x0e, 0xc1, 0xcd, 0x83, 0x88, 0x11, 0xb6, 0xea, 0xca, 0x16, 0x14, 0x93, + 0x32, 0x1c, 0xc4, 0x1d, 0xc3, 0x09, 0x07, 0x72, 0xd0, 0x5c, 0xcf, 0xcf, 0xfe, 0x84, 0x15, 0xee, + 0x22, 0x56, 0xb0, 0x4c, 0xac, 0x33, 0x1d, 0xc6, 0xdd, 0xc4, 0x0b, 0xff, 0x7d, 0x16, 0x64, 0x45, + 0xf2, 0x46, 0x0b, 0xf7, 0xc8, 0x6e, 0x55, 0xfc, 0x00, 0xe5, 0x86, 0x1b, 0x63, 0x0d, 0x8d, 0x31, + 0x02, 0x5c, 0x1b, 0x74, 0xe5, 0x6d, 0x89, 0x14, 0xc9, 0xeb, 0xc0, 0xca, 0xcf, 0x32, 0xe4, 0xe9, + 0xec, 0x1b, 0x69, 0x6a, 0x35, 0x9a, 0x06, 0x7d, 0xef, 0x05, 0x03, 0xda, 0x42, 0xa3, 0xf9, 0xec, + 0xc8, 0x8e, 0xb3, 0x50, 0x5b, 0x54, 0xec, 0xdb, 0xe0, 0x8f, 0x06, 0x6b, 0x17, 0x1a, 0xc7, 0xe2, + 0xc9, 0x9e, 0x2f, 0x49, 0xa1, 0x95, 0x6a, 0x9d, 0x2b, 0x55, 0xc9, 0xf0, 0xa5, 0xcf, 0xeb, 0xca, + 0xb3, 0xe8, 0x69, 0x69, 0xb6, 0x73, 0x57, 0xd2, 0xd9, 0xcd, 0xf2, 0x3a, 0xb2, 0xc2, 0xff, 0x35, + 0x1b, 0xcd, 0xf1, 0xda, 0xce, 0x07, 0xe3, 0x96, 0xad, 0xb1, 0x69, 0x83, 0xe6, 0xa7, 0xb5, 0x09, + 0xc2, 0x79, 0x89, 0xb1, 0x43, 0x1c, 0x5c, 0xb7, 0x69, 0x18, 0xdd, 0xb8, 0x33, 0x4a, 0xdd, 0xcb, + 0xab, 0x46, 0x38, 0xa8, 0x0c, 0xa7, 0x21, 0x3f, 0x4e, 0x34, 0x58, 0x9f, 0x7c, 0x61, 0x51, 0xd7, + 0xd4, 0x5b, 0xc1, 0x5c, 0x91, 0xc3, 0x8e, 0x0f, 0x24, 0x47, 0x1f, 0x4e, 0x44, 0x93, 0x6c, 0x1b, + 0x21, 0x3e, 0x0b, 0x4e, 0xa5, 0xec, 0x7e, 0xe0, 0x33, 0x22, 0x45, 0xf2, 0x74, 0x22, 0x90, 0x8a, + 0xef, 0x0b, 0x12, 0x97, 0x90, 0xaa, 0x0a, 0x95, 0x54, 0x8a, 0xcf, 0xa1, 0xf1, 0x24, 0xbd, 0xbc, + 0x95, 0x62, 0x6e, 0x9e, 0x44, 0xcb, 0xe4, 0x69, 0x04, 0xb4, 0x76, 0x35, 0xa7, 0x86, 0xf6, 0x25, + 0xfa, 0x07, 0xaa, 0xaa, 0x55, 0x5a, 0x27, 0xbe, 0x89, 0xf2, 0xe9, 0x80, 0x58, 0x47, 0x93, 0x4d, + 0xfd, 0xa0, 0x9e, 0x92, 0x6c, 0x15, 0xf2, 0x63, 0x90, 0x0a, 0x9f, 0x1c, 0x0e, 0x0d, 0xbe, 0x07, + 0xd7, 0x66, 0x78, 0xc7, 0x10, 0xb1, 0x30, 0xb2, 0xf5, 0x11, 0x7f, 0x81, 0xb2, 0xcb, 0xab, 0xd7, + 0x61, 0x64, 0x3b, 0x09, 0xe0, 0xc6, 0xfc, 0x4d, 0xad, 0x11, 0xcb, 0xab, 0xd7, 0x11, 0x58, 0x33, + 0x4b, 0xc5, 0x45, 0x28, 0xbb, 0x5e, 0xab, 0x27, 0x99, 0xe1, 0x30, 0x50, 0x98, 0xbf, 0x69, 0x4a, + 0x79, 0x63, 0x57, 0xb3, 0xd1, 0x7b, 0x98, 0xb6, 0xaf, 0xd7, 0xea, 0xc5, 0x67, 0x51, 0xf6, 0x8a, + 0xea, 0x75, 0x56, 0x36, 0xb8, 0x47, 0x25, 0xf3, 0xb7, 0x3c, 0x0f, 0xda, 0xaf, 0xa0, 0x83, 0xf3, + 0x33, 0x5c, 0xa2, 0x9a, 0x4d, 0xc4, 0x4e, 0x01, 0xe5, 0x46, 0xb1, 0xae, 0x8c, 0xc8, 0xdc, 0x4d, + 0x0a, 0x5b, 0x22, 0x45, 0xf2, 0xbb, 0xe4, 0x10, 0xb1, 0xb2, 0x83, 0x8e, 0xd1, 0x92, 0x3c, 0x7e, + 0x29, 0xd9, 0x7e, 0xce, 0xe6, 0x86, 0x4e, 0x63, 0x76, 0x5f, 0x1b, 0x6c, 0xbd, 0x36, 0xd8, 0x46, + 0x4c, 0x83, 0x8a, 0x7d, 0x15, 0x95, 0x2b, 0x2b, 0xd7, 0x56, 0xe2, 0x3f, 0xcb, 0xd5, 0x4a, 0x65, + 0x2d, 0xfe, 0x6b, 0xb9, 0x52, 0xb5, 0xb2, 0xb2, 0xa2, 0xd8, 0x57, 0xb5, 0xba, 0x6a, 0x6d, 0x95, + 0xb2, 0xb2, 0xea, 0x0d, 0x65, 0x6d, 0xd5, 0x9a, 0xd5, 0x2a, 0xf9, 0xa6, 0xa8, 0xa0, 0xdc, 0x0f, + 0xc2, 0x21, 0x8d, 0x49, 0xec, 0x8b, 0x4c, 0x26, 0x27, 0xc7, 0x2c, 0xa2, 0xa6, 0x8d, 0x2c, 0x15, + 0xbe, 0x73, 0xc7, 0x49, 0x47, 0xf1, 0x2f, 0xec, 0x28, 0x16, 0xe2, 0x40, 0xbd, 0xa1, 0x2b, 0xbf, + 0xb6, 0xa3, 0xd8, 0x57, 0x1c, 0xb9, 0xf1, 0x79, 0x8c, 0x8b, 0x4d, 0xc5, 0xd8, 0xc8, 0x0b, 0x13, + 0x03, 0xcd, 0x54, 0x99, 0x6d, 0x0c, 0xe9, 0xc6, 0x57, 0x1f, 0x27, 0xe2, 0x1d, 0x6c, 0xa8, 0x22, + 0x3b, 0xa2, 0x5d, 0xce, 0xd3, 0x7d, 0xc8, 0xca, 0x98, 0xc6, 0xd1, 0x7d, 0x05, 0x8e, 0x2f, 0xb3, + 0x1c, 0x64, 0x3c, 0x9d, 0xb7, 0x14, 0x65, 0xaf, 0xaf, 0x2e, 0x27, 0x71, 0xa0, 0x30, 0x14, 0x9b, + 0xbf, 0xa9, 0x0b, 0x3c, 0xeb, 0xbb, 0xbe, 0xba, 0xdc, 0x57, 0x55, 0xa1, 0x9a, 0x75, 0xe2, 0x9b, + 0xcc, 0xc6, 0x34, 0x9f, 0x46, 0x7d, 0x5d, 0xc6, 0x6c, 0x4c, 0x9f, 0xe6, 0x3b, 0x82, 0x75, 0xa9, + 0xa5, 0xb0, 0xba, 0x74, 0xd9, 0xb8, 0x68, 0x3e, 0x88, 0xc9, 0x8b, 0x5f, 0x19, 0x3d, 0xdf, 0x98, + 0x1b, 0xbb, 0xe7, 0xb8, 0x71, 0xf1, 0xe3, 0x54, 0x6f, 0x2b, 0xb3, 0x3d, 0x5d, 0x8d, 0x72, 0x1b, + 0xfc, 0xd1, 0xe8, 0x7b, 0x01, 0xe2, 0x7f, 0x0d, 0x81, 0xba, 0xa0, 0x48, 0x2e, 0x72, 0x78, 0x8c, + 0x53, 0x83, 0x3b, 0x20, 0x48, 0xc1, 0x50, 0x69, 0xf8, 0xcc, 0xa7, 0x46, 0xdf, 0x2e, 0x95, 0x74, + 0x11, 0xdf, 0x42, 0xf8, 0x54, 0xb1, 0xe3, 0xf5, 0xa4, 0xb2, 0x2a, 0x5d, 0x59, 0x2e, 0x91, 0x03, + 0xa4, 0xac, 0x39, 0x3b, 0x68, 0x48, 0x3f, 0xc9, 0x1d, 0xc8, 0xf3, 0x3e, 0x16, 0x70, 0x12, 0x44, + 0xd9, 0x40, 0xd8, 0x26, 0xe2, 0x1d, 0xe5, 0x8a, 0x8a, 0x87, 0x15, 0x15, 0x94, 0x17, 0xd0, 0xb6, + 0x04, 0x4d, 0xe4, 0x40, 0x3c, 0xa6, 0x1f, 0xd7, 0x95, 0x42, 0x89, 0x15, 0xca, 0xb3, 0xca, 0x15, + 0x1f, 0xbd, 0xa2, 0xc3, 0xe7, 0xbe, 0x37, 0x4e, 0xee, 0xae, 0xaa, 0x30, 0x3a, 0x2f, 0xaa, 0xac, + 0x85, 0xf8, 0x17, 0x16, 0x42, 0x50, 0xc3, 0x2c, 0x08, 0xf7, 0xeb, 0xba, 0xb2, 0x4e, 0xb2, 0x55, + 0xc8, 0x95, 0x84, 0xac, 0x38, 0xa3, 0x0f, 0xb7, 0x9a, 0x78, 0x60, 0x95, 0x52, 0xb3, 0xb6, 0x52, + 0x2d, 0xf6, 0xfd, 0x7a, 0x8d, 0xfa, 0xaa, 0xf9, 0x6f, 0xe5, 0xda, 0xf2, 0x8a, 0x62, 0x1f, 0x94, + 0xbe, 0x8d, 0x7f, 0x28, 0x2b, 0x57, 0x52, 0xe3, 0xf5, 0x44, 0x7f, 0x1c, 0xda, 0xa9, 0xb6, 0x41, + 0xc5, 0x3f, 0xa3, 0x49, 0x8d, 0xa1, 0x9a, 0xda, 0x77, 0xb4, 0x40, 0x63, 0x1d, 0x8e, 0xc4, 0x39, + 0x0d, 0x6f, 0x14, 0xfe, 0xbc, 0xbd, 0x46, 0xae, 0x18, 0x3e, 0xbf, 0xc3, 0x88, 0x9f, 0x86, 0x7b, + 0x6a, 0x3d, 0xc5, 0x4d, 0x83, 0x4b, 0x86, 0x4f, 0x9c, 0x4d, 0x9d, 0x8c, 0x1b, 0x9d, 0xdb, 0x13, + 0xfd, 0x1d, 0xd0, 0xe8, 0xda, 0x60, 0xdb, 0x52, 0x28, 0xc5, 0x71, 0x37, 0xad, 0x0a, 0xd5, 0x3e, + 0x68, 0xe1, 0x95, 0x6c, 0xc8, 0x34, 0xfa, 0x20, 0x72, 0xbc, 0xcb, 0x6d, 0xaf, 0xee, 0x0c, 0xaf, + 0x57, 0xf7, 0x7e, 0x7f, 0x6c, 0xd7, 0xea, 0xca, 0x6b, 0x68, 0x8d, 0x94, 0xf6, 0x08, 0x6e, 0xee, + 0xa9, 0xfd, 0xe7, 0xd9, 0x68, 0x1e, 0xf8, 0x63, 0x43, 0xaa, 0x80, 0x60, 0x68, 0x95, 0xff, 0xfd, + 0x9a, 0xe0, 0x07, 0xda, 0x8d, 0xfa, 0x02, 0xbb, 0x58, 0x3f, 0x2f, 0xe6, 0xd5, 0x8e, 0x18, 0x5f, + 0x47, 0xe3, 0xeb, 0x83, 0x21, 0xf3, 0x63, 0x18, 0x06, 0x26, 0x95, 0xbd, 0x64, 0x3e, 0xad, 0xb4, + 0x4c, 0x2e, 0x4a, 0x5c, 0x3e, 0x97, 0xdc, 0x7f, 0x29, 0xc4, 0xf9, 0x94, 0xf9, 0x49, 0xf8, 0x94, + 0x60, 0x68, 0x13, 0x18, 0x34, 0x26, 0xfa, 0xf7, 0x8e, 0x1c, 0xe9, 0xa2, 0xe9, 0x50, 0x69, 0x57, + 0x3c, 0x32, 0x2c, 0x03, 0x83, 0x08, 0x1b, 0x19, 0xca, 0xc6, 0x38, 0xf2, 0x1e, 0xdb, 0xc8, 0xd0, + 0x55, 0x5c, 0xe6, 0x62, 0x57, 0x1f, 0xd3, 0x95, 0x02, 0x8e, 0x5d, 0xcd, 0x07, 0x76, 0x35, 0x11, + 0x8f, 0x1b, 0xfb, 0x0e, 0x5b, 0x29, 0xd8, 0x2d, 0x06, 0xf5, 0x2d, 0x5d, 0x79, 0x03, 0xbd, 0x2e, + 0x65, 0xdc, 0x75, 0x59, 0x82, 0x19, 0xb2, 0x4d, 0x4d, 0xf6, 0x34, 0x19, 0xe7, 0x3b, 0x41, 0x63, + 0x45, 0x12, 0xa5, 0x9c, 0xbb, 0x34, 0x72, 0xa4, 0x6b, 0xe4, 0x93, 0xa3, 0x76, 0xbe, 0xb4, 0xb0, + 0x3b, 0x1b, 0xcd, 0x4f, 0x33, 0xf4, 0x83, 0x71, 0x55, 0x3d, 0xae, 0x58, 0xce, 0x5d, 0xba, 0x62, + 0x6f, 0xeb, 0xca, 0x6f, 0xd1, 0x1b, 0x52, 0xe6, 0xfd, 0x93, 0x9f, 0x1b, 0xfb, 0xd9, 0x30, 0x9d, + 0x1c, 0xac, 0xb1, 0x70, 0xa7, 0xfd, 0x70, 0x2a, 0xb4, 0x68, 0x30, 0xa2, 0x05, 0xee, 0xd2, 0x75, + 0x2b, 0xc7, 0xd9, 0x2d, 0xe8, 0x07, 0xc9, 0x95, 0x7b, 0x44, 0x57, 0x16, 0x48, 0x7c, 0xb9, 0x3c, + 0xc5, 0x71, 0x39, 0x54, 0xbe, 0x56, 0x7c, 0x89, 0x83, 0x7f, 0xa0, 0x87, 0x0b, 0x33, 0xc2, 0x3f, + 0x64, 0x3a, 0xb6, 0xa0, 0x9f, 0xc6, 0x7e, 0xcb, 0xbc, 0x0d, 0xf2, 0x32, 0xd7, 0x1e, 0x1f, 0x4b, + 0xf6, 0x7c, 0x64, 0xd9, 0x78, 0x1c, 0x38, 0x5f, 0x0c, 0xfb, 0x6c, 0xb4, 0xb6, 0x27, 0x2e, 0x1f, + 0x1d, 0xee, 0xdb, 0x06, 0xfe, 0xbb, 0x89, 0xfe, 0xa6, 0xe1, 0xdd, 0xdf, 0x26, 0x9b, 0xce, 0x38, + 0xa5, 0x35, 0xfc, 0x22, 0x0a, 0xbb, 0xb2, 0xd1, 0x82, 0x74, 0xdf, 0xff, 0xe9, 0x92, 0x8c, 0xed, + 0x1d, 0xf2, 0xd8, 0x40, 0xf3, 0xb4, 0xd8, 0x2d, 0x29, 0x71, 0xc4, 0xff, 0x80, 0x13, 0x64, 0xc7, + 0xe7, 0xbc, 0x19, 0x07, 0x73, 0xbc, 0x6e, 0x06, 0x8c, 0x78, 0xc7, 0x6f, 0xc6, 0x4a, 0x76, 0x33, + 0xb0, 0xd9, 0x0e, 0xdc, 0x0c, 0x88, 0xb4, 0xc5, 0x95, 0xcb, 0x05, 0xb0, 0x06, 0x87, 0x54, 0x22, + 0x79, 0xe0, 0xbc, 0xca, 0x37, 0x13, 0x2b, 0x5c, 0x57, 0x64, 0xa1, 0x79, 0xc9, 0xac, 0x2b, 0x22, + 0x02, 0xe8, 0x66, 0xbc, 0x28, 0xe2, 0x01, 0x01, 0xe5, 0xd6, 0xfb, 0x43, 0x8d, 0xfe, 0x3a, 0x62, + 0x88, 0xf6, 0x27, 0x5d, 0xf9, 0x40, 0x22, 0x45, 0x72, 0x03, 0x98, 0xd8, 0xf2, 0x03, 0x15, 0xd3, + 0x13, 0x74, 0x56, 0x98, 0x64, 0xdd, 0xb6, 0x6e, 0xb8, 0x1f, 0x26, 0x0c, 0x36, 0x35, 0x81, 0xbc, + 0xca, 0x24, 0xa1, 0xbf, 0x3a, 0x60, 0x52, 0x83, 0x38, 0x90, 0x91, 0x89, 0xba, 0x7a, 0x4f, 0x8d, + 0x7c, 0x8e, 0x43, 0x38, 0x60, 0x03, 0x3a, 0x18, 0x70, 0x64, 0x77, 0xfb, 0x70, 0xdf, 0x01, 0x95, + 0x7c, 0xb9, 0x34, 0xa4, 0x2b, 0x9b, 0x51, 0x50, 0xca, 0x7c, 0x58, 0xf2, 0x23, 0x9e, 0xa7, 0xcf, + 0xdf, 0xdf, 0x74, 0x17, 0x74, 0x35, 0x26, 0x4e, 0x2c, 0xa1, 0xea, 0xdf, 0x79, 0xde, 0x55, 0x1e, + 0xd4, 0xee, 0xf7, 0xbb, 0x5a, 0x3d, 0x06, 0xb9, 0x2a, 0x9f, 0x0e, 0xc2, 0x92, 0xab, 0x72, 0x7e, + 0x45, 0xf7, 0x8b, 0x74, 0xf5, 0xce, 0xdc, 0xfe, 0x2b, 0x02, 0x7a, 0xb8, 0x12, 0xfb, 0x02, 0xb3, + 0x1e, 0x34, 0xf2, 0xdd, 0x5d, 0xb8, 0xff, 0x74, 0x51, 0xa3, 0x4d, 0x41, 0x5e, 0x00, 0xae, 0xcc, + 0x16, 0x02, 0xc0, 0x86, 0x8c, 0xc9, 0xd6, 0xcf, 0xc0, 0x8c, 0xce, 0x41, 0x89, 0xed, 0xcb, 0x46, + 0xbe, 0xf4, 0x23, 0xfe, 0xf4, 0xce, 0x8c, 0x02, 0x69, 0x35, 0xba, 0x52, 0x8d, 0x56, 0x4b, 0xa3, + 0x6e, 0xa1, 0x2c, 0x65, 0x3e, 0x15, 0x7e, 0x5d, 0x85, 0x7f, 0x23, 0x20, 0x5f, 0x45, 0x30, 0x7a, + 0xcf, 0x20, 0x6d, 0x9d, 0xae, 0xa8, 0xa8, 0x5a, 0x1a, 0x75, 0x0e, 0xf2, 0x02, 0xa3, 0xf9, 0x9b, + 0x91, 0x43, 0xbd, 0x63, 0x04, 0xb5, 0x0f, 0xb3, 0xd1, 0x23, 0x19, 0x86, 0xfc, 0x09, 0xd6, 0xc6, + 0x86, 0xd5, 0x46, 0xdf, 0x43, 0x59, 0xca, 0x7c, 0x2e, 0x36, 0x60, 0xfb, 0x3b, 0x84, 0xa6, 0x81, + 0x17, 0xa4, 0x89, 0xe3, 0x29, 0x74, 0xfd, 0x09, 0xe5, 0xc5, 0xfc, 0xd1, 0xcd, 0x58, 0xa2, 0xcc, + 0x42, 0x40, 0xfc, 0x4e, 0x62, 0x85, 0xb2, 0x0a, 0xb8, 0x9e, 0xe5, 0x74, 0x01, 0x89, 0x1c, 0x4d, + 0xb6, 0x8a, 0x37, 0xe2, 0xda, 0x60, 0x1b, 0xf5, 0xe7, 0x5a, 0x1b, 0xb6, 0xca, 0x38, 0x7b, 0xcf, + 0xe5, 0x91, 0x70, 0x3d, 0xa9, 0x48, 0xf5, 0xb6, 0xaa, 0x6c, 0x74, 0x71, 0x13, 0x93, 0xef, 0xc2, + 0x99, 0xae, 0xc1, 0x07, 0x43, 0xe4, 0xbb, 0xf9, 0xe4, 0xd3, 0x58, 0x6e, 0x74, 0xbd, 0xec, 0xc9, + 0xc8, 0x52, 0x35, 0x9f, 0x89, 0x65, 0xab, 0x56, 0xaf, 0x50, 0xc7, 0x13, 0x51, 0xae, 0x3a, 0xbe, + 0x66, 0x5d, 0x79, 0x79, 0x65, 0x4d, 0x8d, 0x9a, 0x0b, 0xe2, 0x5b, 0x75, 0xfc, 0xda, 0xaa, 0x55, + 0x95, 0x6b, 0xd6, 0xad, 0x65, 0x72, 0xdb, 0xdf, 0x39, 0xdc, 0x26, 0x20, 0x15, 0x28, 0x83, 0x9e, + 0xa7, 0x89, 0xba, 0x0c, 0x47, 0x4b, 0x62, 0xe2, 0xe8, 0xe4, 0x9e, 0x53, 0x23, 0xfb, 0x8f, 0x24, + 0x0f, 0x5d, 0x48, 0xf4, 0xc7, 0x01, 0xb0, 0x92, 0x9d, 0x5d, 0xa9, 0x93, 0x71, 0x2b, 0x08, 0x0c, + 0x83, 0xb0, 0xa7, 0xd0, 0xb8, 0x68, 0xcc, 0x1f, 0x89, 0x11, 0x36, 0x7c, 0x81, 0xae, 0xcc, 0x95, + 0xa0, 0x44, 0x16, 0x49, 0x90, 0xaf, 0xae, 0x3e, 0xf3, 0x6c, 0x0e, 0x5d, 0x18, 0x39, 0xf4, 0xad, + 0x0a, 0x55, 0xe2, 0x22, 0x94, 0xad, 0x85, 0x02, 0xc4, 0xb4, 0x1e, 0x24, 0xe9, 0x5a, 0x28, 0x40, + 0x7b, 0x98, 0x07, 0x77, 0xf4, 0x18, 0xe9, 0x61, 0x56, 0x88, 0x2b, 0xd1, 0x24, 0xed, 0x7d, 0xad, + 0xb6, 0xd1, 0x84, 0x93, 0xb5, 0xc1, 0x7a, 0x8d, 0x97, 0xa9, 0xdb, 0x6b, 0xe8, 0x18, 0x24, 0xfe, + 0x13, 0x8c, 0x61, 0x6f, 0x22, 0xae, 0x43, 0x13, 0x6b, 0x1b, 0x23, 0x11, 0x2d, 0x14, 0xab, 0x89, + 0x69, 0x0d, 0x44, 0xc2, 0xfe, 0xa4, 0xae, 0x2c, 0x91, 0xf8, 0x72, 0xf9, 0x11, 0x32, 0x52, 0xef, + 0xa7, 0x46, 0xcf, 0x59, 0x18, 0x8f, 0x51, 0x67, 0x24, 0x48, 0x01, 0xdf, 0x5e, 0x7c, 0x0d, 0xe5, + 0x47, 0x63, 0x5a, 0x43, 0x8d, 0x09, 0x61, 0xa1, 0x5a, 0x0d, 0x27, 0x5b, 0x98, 0x50, 0x56, 0xa2, + 0x2b, 0x85, 0x92, 0xad, 0xc2, 0x31, 0x45, 0x3c, 0xde, 0xf5, 0xb2, 0x71, 0xba, 0x90, 0x95, 0x27, + 0xa8, 0xb6, 0x96, 0xe2, 0x11, 0xc1, 0xdc, 0x5e, 0xad, 0x81, 0xc6, 0x4c, 0x2d, 0xf6, 0x8e, 0x0f, + 0xcd, 0x01, 0xf6, 0x22, 0x73, 0x2a, 0x24, 0x7a, 0xe8, 0x3a, 0x5d, 0x79, 0x45, 0x82, 0xfe, 0xf2, + 0xcb, 0xf0, 0x4d, 0x48, 0x94, 0x08, 0xdf, 0xe4, 0x7c, 0x03, 0x06, 0x86, 0x4f, 0x6f, 0x03, 0x41, + 0x2d, 0x14, 0x82, 0x42, 0xd5, 0x24, 0x4d, 0x07, 0xb7, 0x1b, 0xfd, 0xfd, 0xc9, 0x43, 0x17, 0xae, + 0x97, 0x8d, 0xef, 0x16, 0x72, 0xf2, 0x84, 0xa9, 0x33, 0x54, 0x18, 0x51, 0xfc, 0xbd, 0x5b, 0xa0, + 0x5e, 0xa6, 0x2b, 0x0f, 0xf3, 0x02, 0x75, 0xb6, 0x50, 0xeb, 0xea, 0xdf, 0x48, 0x98, 0x94, 0x37, + 0xf8, 0xb0, 0x0a, 0x20, 0x70, 0x7f, 0x01, 0x7f, 0xc1, 0x0a, 0xab, 0x60, 0xff, 0x02, 0x0e, 0xa8, + 0x40, 0x35, 0xaf, 0x1e, 0x09, 0x50, 0xac, 0x8e, 0xe2, 0x32, 0x2b, 0x4f, 0x04, 0xcb, 0x97, 0x69, + 0xcb, 0x13, 0x01, 0xb0, 0x8b, 0x55, 0xc7, 0x89, 0x78, 0x9c, 0x46, 0x2c, 0x9b, 0x61, 0xa5, 0x85, + 0xa8, 0x42, 0xa8, 0xce, 0x1f, 0x8d, 0x01, 0x09, 0x46, 0x84, 0xef, 0x58, 0x2b, 0xc2, 0x15, 0xcb, + 0x05, 0xc4, 0x28, 0xbd, 0x7f, 0x4f, 0xf2, 0xcb, 0x13, 0x24, 0x0e, 0x25, 0xc0, 0x24, 0xd7, 0x6a, + 0xce, 0x6a, 0x84, 0xac, 0x63, 0xf3, 0x08, 0xff, 0x28, 0xd9, 0xb3, 0x02, 0xba, 0x88, 0x57, 0xb3, + 0x33, 0x1f, 0x14, 0xb2, 0x41, 0x57, 0xea, 0xd1, 0x66, 0xc9, 0x8d, 0xf6, 0x68, 0x2a, 0x3f, 0x0a, + 0x0c, 0x60, 0xa8, 0xcc, 0xd0, 0xd2, 0x15, 0xc1, 0x06, 0x7e, 0x57, 0x04, 0x38, 0x6a, 0xbb, 0xfd, + 0x85, 0xb5, 0x89, 0x5c, 0x22, 0xea, 0xff, 0x45, 0x40, 0x22, 0xff, 0xb5, 0x07, 0xe3, 0xad, 0x5b, + 0x38, 0x3a, 0x4f, 0x40, 0x52, 0xbf, 0x5d, 0x15, 0xd0, 0x54, 0x55, 0x8b, 0x45, 0xb6, 0xf2, 0x6f, + 0xc8, 0x2b, 0xcc, 0xf1, 0x8c, 0x65, 0x04, 0x13, 0x25, 0x52, 0x24, 0xe7, 0xc1, 0x1e, 0x9b, 0x44, + 0x49, 0x41, 0x64, 0x16, 0xe4, 0x70, 0x75, 0x67, 0xe4, 0x21, 0xae, 0x6a, 0x2b, 0xac, 0x28, 0xba, + 0xb0, 0xee, 0x12, 0x5d, 0xf1, 0x59, 0x51, 0x74, 0x67, 0xc2, 0x58, 0xc0, 0x03, 0x1a, 0x9d, 0xfb, + 0x86, 0xbf, 0xbb, 0x88, 0x61, 0x72, 0x7c, 0x64, 0x1c, 0x1e, 0x98, 0xc5, 0xce, 0x2d, 0x7d, 0x41, + 0x57, 0x9e, 0x43, 0xcf, 0x48, 0xae, 0xb9, 0xca, 0x53, 0xa1, 0xb3, 0x59, 0x44, 0x8f, 0x9d, 0x7c, + 0x9c, 0x4b, 0xe0, 0xf8, 0xff, 0x08, 0x68, 0x1a, 0xd7, 0xf3, 0x41, 0x4b, 0x47, 0x95, 0x9e, 0xb1, + 0xc3, 0xcf, 0x12, 0x30, 0x76, 0xd3, 0x59, 0x2c, 0x50, 0x2b, 0xca, 0x24, 0x39, 0xe4, 0x54, 0x2e, + 0x9a, 0x06, 0x37, 0x92, 0x3f, 0xe5, 0x15, 0x8e, 0x53, 0x5e, 0x9c, 0xe6, 0x94, 0x01, 0xeb, 0x3c, + 0x96, 0xfe, 0x90, 0x7f, 0x30, 0x6f, 0x3e, 0x79, 0xbd, 0x73, 0x6e, 0xfa, 0xf5, 0x1e, 0x77, 0x1b, + 0x5f, 0xef, 0xdc, 0xdb, 0xf4, 0x7a, 0x5b, 0x4f, 0xed, 0x78, 0xef, 0xa7, 0xd6, 0x05, 0x19, 0x77, + 0xef, 0xa9, 0x5d, 0x66, 0xa1, 0x87, 0x3c, 0xee, 0xb1, 0xb2, 0x82, 0x6c, 0xc3, 0x52, 0x31, 0x60, + 0xdb, 0x1f, 0x2b, 0xd2, 0xe4, 0xb6, 0xbf, 0x30, 0x2f, 0xea, 0x4a, 0x29, 0x7a, 0x56, 0x72, 0x5f, + 0x17, 0x79, 0x2a, 0x4c, 0x23, 0x33, 0xa2, 0xf9, 0xaf, 0x02, 0x12, 0xf9, 0xae, 0x3f, 0x36, 0x4c, + 0xb3, 0x23, 0x0b, 0x4d, 0x03, 0x36, 0xe1, 0x8e, 0x60, 0x9a, 0x98, 0x33, 0xba, 0x2f, 0xb6, 0xb2, + 0x60, 0xee, 0xb3, 0x2b, 0x79, 0xef, 0x58, 0x6b, 0x6e, 0x26, 0x0c, 0xb6, 0x7f, 0x93, 0x18, 0xba, + 0x9c, 0xec, 0xf9, 0x1c, 0x2c, 0xe7, 0xe0, 0xda, 0x18, 0xe7, 0xda, 0x92, 0x2d, 0x38, 0x86, 0xec, + 0xa5, 0x63, 0x38, 0x44, 0xef, 0x47, 0x46, 0xf3, 0xa9, 0xd4, 0x40, 0x4b, 0xb2, 0xf7, 0x13, 0x3e, + 0x18, 0x6f, 0xe9, 0x62, 0x5d, 0x29, 0x46, 0x92, 0xe4, 0x5e, 0x98, 0x9c, 0x4f, 0x72, 0xcc, 0xe2, + 0x15, 0x30, 0x78, 0x28, 0x6c, 0xca, 0xa2, 0x8e, 0xd5, 0x0f, 0x12, 0x14, 0xbc, 0x3a, 0x06, 0x28, + 0xc0, 0xfa, 0x1c, 0x80, 0x82, 0x59, 0x7c, 0xac, 0x4f, 0x17, 0x20, 0xec, 0x16, 0xd0, 0xe4, 0x15, + 0x5a, 0x8c, 0x87, 0x82, 0xe5, 0x0e, 0x28, 0x58, 0xa4, 0x2b, 0xd3, 0x18, 0x14, 0x8c, 0x37, 0x5b, + 0xfa, 0xc6, 0x02, 0x04, 0xa5, 0x25, 0xba, 0x22, 0xa1, 0x85, 0x92, 0x63, 0x78, 0x79, 0x16, 0x18, + 0xf5, 0x59, 0x33, 0x21, 0x71, 0x30, 0xff, 0x41, 0x16, 0x4e, 0x6e, 0xfb, 0x43, 0xbe, 0x8f, 0x2c, + 0xfa, 0xa5, 0xf3, 0x18, 0x4a, 0x2b, 0x75, 0xa5, 0x0c, 0x2d, 0x93, 0x9c, 0x1b, 0x70, 0xa3, 0x81, + 0x27, 0xff, 0x3e, 0x17, 0x4d, 0x59, 0x19, 0x8c, 0xda, 0x8e, 0xb3, 0xd6, 0x6d, 0x6f, 0x5e, 0xa9, + 0x2b, 0xcf, 0xf3, 0x6c, 0xd2, 0x22, 0x8b, 0x89, 0x19, 0x5b, 0xa4, 0x49, 0xd0, 0x52, 0xd8, 0xa2, + 0x05, 0x70, 0x9c, 0x52, 0x16, 0xb5, 0xdf, 0x5e, 0xc8, 0x73, 0x4a, 0x73, 0x1d, 0x1f, 0xe1, 0xa3, + 0xcf, 0xc1, 0x88, 0x3e, 0x9e, 0x3f, 0x7a, 0xc9, 0xe2, 0x8f, 0xb2, 0xad, 0xbc, 0x36, 0xde, 0xfc, + 0x11, 0x36, 0x0a, 0xa7, 0x29, 0x6e, 0x09, 0x77, 0xf4, 0x92, 0xf5, 0x64, 0xe5, 0x70, 0xfd, 0x3d, + 0x9f, 0x2c, 0xbe, 0x3f, 0x4d, 0x02, 0xc1, 0xcb, 0x67, 0xc6, 0xdd, 0x7d, 0xf9, 0x4c, 0x84, 0xd1, + 0x6a, 0xb9, 0x96, 0x99, 0x1a, 0xa5, 0xd5, 0x56, 0xf1, 0xb4, 0xda, 0x42, 0x9e, 0x4a, 0x2b, 0xf6, + 0x31, 0x23, 0x3b, 0x42, 0xa5, 0x59, 0x86, 0x75, 0x84, 0x4a, 0x2b, 0xf6, 0x2d, 0x5f, 0xa3, 0x96, + 0x57, 0xb2, 0x48, 0x09, 0x45, 0x8c, 0x6c, 0x5b, 0x47, 0xac, 0x2b, 0xab, 0x89, 0x44, 0xc2, 0x7c, + 0x63, 0x89, 0x75, 0x65, 0xb5, 0xbc, 0x24, 0x79, 0xac, 0x2b, 0x11, 0xff, 0xc8, 0xe8, 0x89, 0x27, + 0x8f, 0xf4, 0x25, 0xfa, 0xf7, 0x5a, 0xb1, 0x35, 0xab, 0xaa, 0x49, 0xb0, 0xbe, 0xbe, 0x4b, 0x46, + 0x7c, 0x3f, 0xf3, 0x13, 0x26, 0xa6, 0x97, 0xd5, 0xe2, 0xaf, 0xbd, 0x1c, 0xee, 0x71, 0xc4, 0x1d, + 0x9b, 0x1c, 0xf5, 0x51, 0x18, 0x91, 0x73, 0xac, 0x1f, 0xbe, 0xbc, 0x3b, 0x39, 0x70, 0x92, 0x1e, + 0x34, 0x36, 0xbf, 0xb1, 0x49, 0x51, 0xf7, 0x08, 0xba, 0xb2, 0x4b, 0x40, 0x3b, 0x04, 0xc9, 0x09, + 0xf4, 0x72, 0x03, 0x4c, 0xc9, 0xdc, 0xce, 0xbb, 0x14, 0x9d, 0xf0, 0x8b, 0x6c, 0xc8, 0xd9, 0xfc, + 0x20, 0xe1, 0xaf, 0x9a, 0xcc, 0xe6, 0x50, 0x18, 0x7f, 0x81, 0x9d, 0x25, 0xc6, 0x5f, 0x0b, 0x6c, + 0x31, 0x09, 0xb9, 0x63, 0xb1, 0xb9, 0xbc, 0x6b, 0x08, 0xd5, 0xf9, 0x63, 0x1a, 0xec, 0x04, 0x51, + 0x48, 0x79, 0x0f, 0x6d, 0xbe, 0xd7, 0x64, 0xe8, 0xc7, 0xd8, 0xd0, 0xc6, 0xd0, 0x87, 0x46, 0x6b, + 0x7b, 0xb2, 0xa7, 0x29, 0x79, 0xf0, 0xbc, 0x23, 0xb6, 0x94, 0xca, 0x0d, 0xcc, 0x18, 0x4d, 0xe7, + 0x9e, 0xcb, 0x22, 0x41, 0x99, 0x40, 0x03, 0xa7, 0x09, 0x7f, 0x38, 0xf0, 0x18, 0x5a, 0x00, 0x57, + 0x95, 0x4b, 0xad, 0xb4, 0xa6, 0xc1, 0xa4, 0xf1, 0x29, 0xde, 0xfc, 0x03, 0x9a, 0x16, 0x8c, 0x62, + 0xa9, 0x6f, 0x45, 0xf8, 0xbd, 0x10, 0xa8, 0x1f, 0xf0, 0x41, 0xe6, 0x81, 0xfd, 0xa4, 0xbb, 0x56, + 0xfe, 0x05, 0xce, 0xe9, 0x54, 0x12, 0x08, 0xbf, 0x17, 0x2a, 0x81, 0x98, 0xb6, 0x81, 0x62, 0x12, + 0x15, 0xb7, 0x79, 0xdb, 0xf0, 0xb9, 0x7e, 0x22, 0x1c, 0x86, 0x9c, 0x89, 0xee, 0xfe, 0xe2, 0x7b, + 0x28, 0x4f, 0x7b, 0xbf, 0xc1, 0x1f, 0x0a, 0x30, 0x36, 0xfc, 0x4d, 0x5d, 0x79, 0x5d, 0x62, 0x85, + 0xf2, 0x4a, 0xfa, 0x17, 0x31, 0x7b, 0x48, 0x9d, 0x3b, 0x94, 0xfc, 0xe6, 0x00, 0x8e, 0xf1, 0xd6, + 0x02, 0xc6, 0x7d, 0xd7, 0x06, 0x5b, 0x23, 0xfe, 0x50, 0x20, 0x5c, 0x5f, 0xec, 0xab, 0xd3, 0xfc, + 0xd1, 0x58, 0xc9, 0x7b, 0xfe, 0x68, 0x4c, 0x2b, 0xf6, 0xd5, 0x87, 0xa3, 0xb1, 0x92, 0x86, 0x70, + 0x20, 0x5a, 0xec, 0x6b, 0x88, 0x04, 0xc3, 0x91, 0x60, 0x6c, 0xab, 0xca, 0xc6, 0x15, 0x3f, 0x40, + 0x62, 0xbd, 0xff, 0xfd, 0xca, 0xfa, 0x86, 0xd8, 0xd6, 0xb2, 0xc6, 0xba, 0xcd, 0x80, 0xa0, 0x88, + 0xcd, 0xd4, 0xaf, 0x74, 0x65, 0x85, 0xe4, 0x51, 0x2d, 0x2f, 0xad, 0xf7, 0xbf, 0x5f, 0xa2, 0x99, + 0x85, 0x25, 0x1b, 0x1a, 0xeb, 0x36, 0x97, 0x40, 0xf8, 0x94, 0x62, 0xa3, 0xfd, 0x40, 0xf2, 0xcb, + 0x13, 0x24, 0xa2, 0x04, 0xb6, 0x86, 0xb1, 0x14, 0xe4, 0x1e, 0xc3, 0x88, 0x7f, 0x44, 0x93, 0xa3, + 0x74, 0x1f, 0x2a, 0xb4, 0x3a, 0xff, 0x56, 0x62, 0x0c, 0x5d, 0xa3, 0x2b, 0xd5, 0x92, 0xa3, 0x4a, + 0x7e, 0x89, 0x46, 0x96, 0xc2, 0x46, 0x1f, 0x5d, 0x1d, 0xc6, 0xc9, 0xee, 0x91, 0x03, 0x97, 0x81, + 0x4f, 0x33, 0x06, 0x9b, 0x8c, 0x33, 0x7b, 0x8d, 0x96, 0x93, 0xc6, 0xb9, 0x6e, 0xf8, 0x3c, 0x33, + 0x79, 0x5c, 0xba, 0xc4, 0x68, 0xd9, 0x35, 0xa2, 0x1f, 0x53, 0x1d, 0xe3, 0x89, 0xff, 0xad, 0x80, + 0x66, 0xb2, 0xa2, 0x75, 0xa1, 0x90, 0xa6, 0x05, 0xb4, 0x00, 0xc7, 0x22, 0x42, 0xe4, 0x34, 0xc9, + 0xbb, 0x8d, 0x1c, 0xe6, 0xce, 0xbb, 0x91, 0x54, 0x94, 0xc4, 0x82, 0xf5, 0x5a, 0x31, 0xe1, 0xf7, + 0x20, 0x42, 0x4e, 0x6f, 0xab, 0xf1, 0x7d, 0x33, 0xcc, 0xd1, 0x7c, 0x50, 0x89, 0xab, 0xc9, 0xc7, + 0xa9, 0x81, 0xde, 0xd4, 0x67, 0xf1, 0x91, 0x43, 0x5f, 0x1b, 0x27, 0xbb, 0x8d, 0xf3, 0xfb, 0x60, + 0x86, 0x46, 0x57, 0xc7, 0xf0, 0x27, 0x5f, 0xa4, 0x9b, 0xbe, 0xf7, 0x3c, 0xc4, 0xff, 0x22, 0xa0, + 0xf9, 0x56, 0x4d, 0x2c, 0x58, 0x17, 0xfc, 0x00, 0x6b, 0x34, 0xd6, 0xbe, 0x13, 0xd1, 0xfc, 0xef, + 0x84, 0xeb, 0x02, 0x44, 0x5c, 0x4d, 0x82, 0x47, 0x66, 0x6e, 0x2b, 0xef, 0x10, 0xf8, 0x65, 0x59, + 0x2d, 0x4a, 0x62, 0xef, 0x44, 0xb4, 0xa8, 0xd9, 0xa4, 0x18, 0xc2, 0xb8, 0x10, 0x70, 0xc6, 0x19, + 0x1e, 0x46, 0x0e, 0xb7, 0x18, 0x4d, 0x83, 0xd6, 0xf2, 0xb8, 0x44, 0x42, 0x26, 0x8e, 0x1c, 0xea, + 0x48, 0xc4, 0x3b, 0x60, 0x9d, 0xa9, 0x23, 0xdf, 0x1b, 0x2d, 0xbb, 0x92, 0x7d, 0xfb, 0xe1, 0xa4, + 0x00, 0xad, 0x8e, 0x1c, 0xfa, 0xda, 0xca, 0xc2, 0xd1, 0x1f, 0xff, 0xe5, 0x12, 0x35, 0xf3, 0x24, + 0xc5, 0x76, 0x01, 0x3d, 0x14, 0xdd, 0x1c, 0x84, 0x14, 0x10, 0xbf, 0x0e, 0xc6, 0xde, 0x59, 0x19, + 0xae, 0xf5, 0xd7, 0xd5, 0xc4, 0xc2, 0x11, 0x13, 0x79, 0x8e, 0xc7, 0xd7, 0x74, 0x8d, 0xae, 0xac, + 0x94, 0xd2, 0xb7, 0x92, 0x17, 0x1b, 0x97, 0x87, 0x52, 0x07, 0x4e, 0x25, 0x7b, 0x5a, 0x93, 0x3d, + 0x5f, 0x1a, 0x3d, 0xe7, 0x8d, 0xde, 0xc3, 0xc6, 0xf6, 0xb3, 0xcc, 0x3a, 0x81, 0x9f, 0x10, 0x64, + 0x6f, 0x4b, 0x3f, 0x96, 0xf8, 0xb1, 0x80, 0x66, 0xdb, 0x6a, 0x6b, 0xb6, 0x46, 0x63, 0x5a, 0x7d, + 0x75, 0x38, 0x10, 0x25, 0xe1, 0x23, 0x71, 0x04, 0xa1, 0x74, 0x6d, 0xe4, 0xe5, 0x30, 0x97, 0xcd, + 0x8d, 0x1b, 0xb4, 0x92, 0x28, 0x2e, 0xf6, 0xad, 0xae, 0x31, 0x9f, 0xd9, 0xa3, 0x1f, 0x57, 0xf8, + 0xb5, 0xfa, 0x70, 0xa8, 0x46, 0x8b, 0x31, 0x33, 0xce, 0xea, 0x70, 0xc0, 0x3d, 0x4b, 0x98, 0x62, + 0xba, 0x0f, 0x88, 0x5d, 0x02, 0x9a, 0x1b, 0xdc, 0x14, 0x0a, 0x47, 0x34, 0x36, 0x5e, 0x94, 0xdb, + 0x59, 0x12, 0xa4, 0x06, 0x67, 0xe9, 0xca, 0xd4, 0x4e, 0x2e, 0x86, 0x89, 0x5a, 0x93, 0xa2, 0x39, + 0xc0, 0x86, 0xcf, 0x9d, 0x48, 0x9d, 0x3b, 0xe4, 0x98, 0x4e, 0xa6, 0xa1, 0xc4, 0x6d, 0x02, 0x9a, + 0x1e, 0xde, 0xbc, 0x36, 0x1c, 0xf3, 0xd7, 0xad, 0x0b, 0x45, 0x34, 0x7f, 0x60, 0x6b, 0x79, 0xb8, + 0x31, 0x14, 0xc3, 0xb2, 0xfc, 0x49, 0x70, 0x7a, 0x5e, 0xf5, 0xf2, 0x2f, 0xc3, 0x9b, 0x4b, 0x62, + 0x66, 0x69, 0x49, 0x23, 0x14, 0x97, 0xd4, 0x9a, 0xe5, 0xc5, 0x80, 0x64, 0x7d, 0xa4, 0xd0, 0xc7, + 0xe2, 0x96, 0x24, 0x0f, 0x9c, 0x1f, 0xd9, 0xdd, 0xa9, 0x7a, 0x8d, 0x25, 0x5e, 0x11, 0xd0, 0x43, + 0xf5, 0xfe, 0xf7, 0xf9, 0x8a, 0x6a, 0x2d, 0x52, 0xab, 0x85, 0x62, 0x26, 0x1c, 0x4d, 0xc4, 0x33, + 0xf9, 0x50, 0xd0, 0x95, 0x4e, 0x41, 0x4a, 0xdf, 0x4e, 0x8e, 0x98, 0xa8, 0xd0, 0x3e, 0xa5, 0x06, + 0x56, 0x5b, 0x4c, 0x8a, 0xc8, 0xcd, 0xc0, 0x21, 0x46, 0x08, 0x1a, 0x6b, 0x1a, 0x60, 0x93, 0x64, + 0xd7, 0xc2, 0xbc, 0x43, 0xb8, 0x4d, 0xb2, 0xf7, 0x24, 0xdc, 0x2a, 0xa3, 0xe5, 0x88, 0xb1, 0xad, 0x27, 0xd9, 0xfb, 0x09, 0xd3, 0x32, 0x1a, 0xe7, 0x2e, 0xa9, 0xe9, 0xa7, 0x23, 0xea, 0x02, 0x9a, 0xc1, 0x61, 0x0a, 0x5c, 0x8d, 0x91, 0x5a, 0x3e, 0x5e, 0xcf, 0xef, 0x74, 0xe5, 0x4d, 0xc9, 0xb3, 0x81, 0x5c, 0x6e, 0xc3, 0x68, 0xb0, 0x12, 0x8c, 0xd0, 0x6c, 0x6b, 0xf0, 0xc4, 0x6b, 0x46, 0xfb, - 0x81, 0xc4, 0x50, 0x7b, 0xea, 0x8c, 0xae, 0x7a, 0x0e, 0x2d, 0xfe, 0xb5, 0x80, 0xe6, 0x9a, 0xa3, + 0x81, 0xc4, 0x50, 0x7b, 0xea, 0x8c, 0xae, 0x7a, 0x0e, 0x2d, 0xfe, 0x95, 0x80, 0xe6, 0x9a, 0xa3, 0x6c, 0x0a, 0x9a, 0x84, 0x00, 0x35, 0x14, 0xa9, 0x0f, 0x6f, 0xf1, 0xd7, 0xe1, 0xb9, 0x4d, 0xc2, 0x73, 0xc3, 0x86, 0x81, 0x52, 0xa6, 0x86, 0xf2, 0xef, 0x69, 0xb8, 0x29, 0x6a, 0xac, 0x8b, 0x69, 0x67, 0xe3, 0xfb, 0x66, 0xdb, 0x63, 0x70, 0x7e, 0x17, 0x09, 0x23, 0xd6, 0xf3, 0xb9, 0xd1, 0x73, - 0xd6, 0x84, 0xab, 0x48, 0x48, 0x8b, 0x69, 0xd1, 0x44, 0x7f, 0x6f, 0xf2, 0x9b, 0xb3, 0xc6, 0xae, - 0x36, 0x37, 0x04, 0x3d, 0x49, 0xd1, 0x6c, 0xa6, 0xcf, 0x8b, 0xf5, 0x3c, 0x3f, 0x35, 0x99, 0x0a, - 0x52, 0x8b, 0x79, 0x7e, 0xea, 0x61, 0x8e, 0x59, 0x32, 0x77, 0xc6, 0xce, 0x54, 0xdd, 0x58, 0xa8, - 0xfe, 0x52, 0x8b, 0x0f, 0x9a, 0x42, 0x49, 0xc2, 0x19, 0x16, 0x1f, 0x34, 0x81, 0xe3, 0x80, 0x5c, - 0x1a, 0xa2, 0x17, 0xb9, 0x3c, 0x76, 0x53, 0x69, 0x46, 0x9c, 0x05, 0x5c, 0x16, 0x3b, 0x31, 0xd5, - 0x7a, 0x29, 0xd9, 0x74, 0x86, 0x24, 0xac, 0xc3, 0x01, 0xd7, 0xb8, 0xf4, 0x72, 0x67, 0x3d, 0x12, - 0x64, 0x4e, 0xc3, 0x68, 0xe2, 0x2f, 0xba, 0xf2, 0x47, 0x77, 0x12, 0xcc, 0x77, 0xf8, 0x0c, 0x00, - 0x0e, 0x8d, 0x38, 0x96, 0x2f, 0xe2, 0xcc, 0x00, 0x5d, 0x1d, 0x89, 0xc1, 0x6e, 0xa3, 0xe7, 0xec, - 0x70, 0xdf, 0x29, 0xd8, 0x8f, 0x91, 0x1d, 0x67, 0x53, 0x43, 0x5f, 0xfb, 0x08, 0x1b, 0xc4, 0xd1, - 0x63, 0xbe, 0xd4, 0xc0, 0xce, 0xc4, 0xc0, 0x05, 0x1e, 0x0f, 0xfb, 0xd2, 0xa4, 0xd1, 0xfc, 0xc7, - 0x02, 0x9a, 0xbe, 0xa1, 0x71, 0xe3, 0x46, 0x2d, 0xa2, 0x92, 0xec, 0x76, 0xaa, 0x89, 0x63, 0x70, - 0x42, 0xb8, 0x49, 0x65, 0x07, 0x04, 0x5d, 0xd9, 0x27, 0x48, 0x5e, 0x2d, 0xe4, 0x0f, 0xa0, 0xb0, - 0x84, 0x66, 0xc5, 0x2b, 0xc1, 0xa9, 0x2e, 0xc9, 0x0b, 0x47, 0x4c, 0xaf, 0xb8, 0x17, 0x8e, 0x07, - 0x53, 0x12, 0x33, 0x95, 0x7b, 0xea, 0x52, 0x1d, 0xbb, 0x01, 0x76, 0x87, 0xfb, 0x4e, 0xc1, 0x73, - 0x68, 0xb4, 0x1c, 0xe1, 0x87, 0x62, 0x6b, 0xf1, 0x2d, 0x5d, 0xb2, 0x44, 0xf5, 0x9a, 0x90, 0x78, - 0x12, 0x30, 0xd2, 0x8a, 0x88, 0xbf, 0x56, 0xdb, 0xd8, 0x58, 0xb7, 0x56, 0x8b, 0xd4, 0x07, 0x43, - 0x18, 0x61, 0xd6, 0x68, 0xb5, 0x38, 0xef, 0xdc, 0xa4, 0xb2, 0x8d, 0xba, 0x52, 0x2b, 0xa5, 0x6f, - 0x25, 0x2f, 0x37, 0xf1, 0xd1, 0x26, 0x52, 0x57, 0x12, 0xb3, 0x2a, 0x4b, 0xa2, 0x5a, 0x6d, 0x31, - 0xa1, 0xcd, 0x70, 0x0c, 0x37, 0x80, 0x1c, 0x5f, 0x75, 0x38, 0xe0, 0x1b, 0x69, 0x6a, 0x32, 0x76, - 0xc7, 0x93, 0x3d, 0x4d, 0x0c, 0x88, 0xd4, 0xf4, 0x9f, 0x10, 0x77, 0x0a, 0x28, 0x3f, 0x5a, 0xeb, - 0x0f, 0x55, 0x85, 0x62, 0x5a, 0x64, 0x8b, 0xbf, 0xae, 0x60, 0x06, 0x9e, 0xd9, 0xef, 0x75, 0xe5, - 0x2d, 0xc9, 0x56, 0x21, 0xaf, 0x32, 0x7f, 0x95, 0x04, 0xc9, 0xcf, 0x62, 0xc7, 0xc5, 0x48, 0x7e, - 0xda, 0x94, 0xfc, 0x6e, 0x2f, 0x7c, 0xcf, 0xfc, 0xbf, 0x7b, 0x3f, 0xc3, 0x25, 0x26, 0x69, 0x70, - 0x46, 0xb7, 0x1d, 0xff, 0xd2, 0x25, 0xaa, 0x6d, 0x70, 0xf3, 0xdd, 0x9d, 0x51, 0xef, 0x7f, 0xdf, - 0x04, 0xd2, 0x6a, 0xf3, 0xde, 0x46, 0xa9, 0x88, 0x7f, 0x26, 0x9e, 0xce, 0xbb, 0xba, 0xb2, 0x49, - 0xf2, 0x6c, 0x20, 0xaf, 0x31, 0xf7, 0xc8, 0x64, 0x27, 0x4b, 0x1a, 0x68, 0x39, 0xa0, 0x3a, 0xd8, - 0x12, 0x42, 0xb4, 0x76, 0x76, 0x25, 0xbe, 0xff, 0x88, 0xdf, 0x13, 0x1e, 0xd3, 0x59, 0xa7, 0xf9, - 0xdc, 0x92, 0x25, 0xaa, 0xe7, 0x67, 0xc4, 0xa3, 0x02, 0x9a, 0x82, 0xef, 0xe8, 0xba, 0x06, 0x93, - 0xd9, 0x7f, 0x43, 0x8b, 0x84, 0x71, 0x4a, 0xf4, 0xcc, 0x59, 0x66, 0x7f, 0xad, 0x2b, 0x6b, 0x25, - 0x67, 0x3f, 0x59, 0x01, 0xec, 0xdc, 0xd8, 0x50, 0xb2, 0x31, 0x12, 0xae, 0x2f, 0xf9, 0x40, 0x8b, - 0x84, 0xc9, 0xa3, 0xc7, 0xbf, 0x0c, 0xd7, 0x06, 0x5b, 0x92, 0x5f, 0x9f, 0x48, 0xf6, 0xb4, 0xfa, - 0xf8, 0x77, 0x10, 0x1f, 0x77, 0xab, 0xea, 0x1c, 0xd3, 0x9c, 0xdf, 0x2c, 0x3b, 0x51, 0xac, 0x6c, - 0x34, 0xc1, 0x30, 0x10, 0xc0, 0xa9, 0xd7, 0x27, 0x95, 0x69, 0xba, 0xb2, 0x41, 0x4a, 0xd3, 0x44, - 0x7e, 0x85, 0x7b, 0x2f, 0x02, 0x66, 0x4d, 0x89, 0x7f, 0x23, 0x46, 0xcd, 0x81, 0x40, 0xb1, 0x45, - 0xa4, 0xb7, 0x9c, 0x4c, 0x1e, 0xec, 0x65, 0xb7, 0xce, 0x7d, 0xd0, 0xe6, 0xa3, 0x91, 0xe6, 0x0b, - 0xe2, 0x69, 0x93, 0xd0, 0x73, 0x57, 0x11, 0x16, 0xa5, 0x00, 0x4f, 0x11, 0x87, 0xd6, 0x4b, 0xdf, - 0x2a, 0xed, 0x2c, 0x09, 0xc7, 0x02, 0xb4, 0x78, 0xa2, 0xff, 0xa4, 0xc5, 0xb7, 0xa4, 0x9b, 0x65, - 0xfa, 0x8f, 0x88, 0xff, 0x4c, 0x40, 0x73, 0x3c, 0x6a, 0x97, 0xfb, 0x83, 0x75, 0x8d, 0x11, 0x0d, - 0xa7, 0x7d, 0x1f, 0x2d, 0xf1, 0x65, 0xbd, 0xae, 0xbc, 0x2b, 0x65, 0x18, 0x44, 0x5e, 0x99, 0x66, - 0x21, 0x1b, 0xa1, 0x9e, 0x40, 0x36, 0xa4, 0xfb, 0x32, 0xba, 0x3a, 0x40, 0xe5, 0x9a, 0x76, 0x31, - 0x19, 0xbe, 0x24, 0x6e, 0xcf, 0x42, 0x3e, 0x56, 0xbd, 0xa2, 0xa1, 0xd1, 0x41, 0x84, 0x63, 0x36, - 0xa0, 0x60, 0x0e, 0xde, 0xfd, 0xef, 0x04, 0x5d, 0xf9, 0x4a, 0x90, 0x46, 0x6d, 0x2e, 0xb7, 0xf1, - 0x8c, 0xc5, 0xa6, 0x86, 0xc6, 0x1b, 0x64, 0x2e, 0x16, 0xae, 0xa8, 0x5e, 0x57, 0x74, 0x1b, 0x39, - 0x8c, 0x51, 0x27, 0x2c, 0xfe, 0xad, 0x80, 0x66, 0xd9, 0x51, 0x74, 0x79, 0x43, 0x23, 0x3c, 0x2c, - 0x73, 0xf1, 0xd2, 0x7b, 0x04, 0x5d, 0x39, 0x2c, 0x48, 0x69, 0x1a, 0xc9, 0x7f, 0xf1, 0x2e, 0xbf, - 0x81, 0xc7, 0xa5, 0xb6, 0xa1, 0xf1, 0x16, 0xde, 0x97, 0x34, 0xf3, 0xf2, 0x58, 0xd7, 0x2a, 0xad, - 0x1e, 0xd6, 0x35, 0x2f, 0xc3, 0xba, 0x68, 0x23, 0xe7, 0xba, 0x68, 0xf9, 0x0d, 0xac, 0xab, 0x5e, - 0xab, 0xbf, 0x7d, 0xeb, 0xa2, 0xdf, 0x2f, 0x35, 0x9f, 0x45, 0xe4, 0x97, 0x46, 0x91, 0xec, 0xc8, - 0xf3, 0x81, 0x66, 0x72, 0xd5, 0x7b, 0xc5, 0xcd, 0xf3, 0x34, 0x36, 0xf9, 0x7f, 0x04, 0xf4, 0x70, - 0xda, 0x6f, 0x3c, 0x18, 0xa2, 0xbf, 0x17, 0x6c, 0xaa, 0x8b, 0x85, 0x2e, 0xb3, 0x2e, 0x17, 0x31, - 0x46, 0x96, 0x47, 0x0c, 0x15, 0x7e, 0x41, 0xad, 0xf1, 0xef, 0x27, 0xf1, 0xd9, 0x19, 0xc1, 0x25, - 0x3f, 0xdb, 0x23, 0xdc, 0x41, 0x01, 0xda, 0xf5, 0xb2, 0xe2, 0x88, 0xa4, 0xe6, 0x42, 0x73, 0x75, - 0x22, 0xd7, 0x5c, 0x9d, 0xc0, 0x9a, 0x9b, 0xf4, 0xb4, 0x4b, 0xde, 0xb6, 0x43, 0xc8, 0x20, 0x70, - 0xab, 0xb9, 0x7d, 0x02, 0xb7, 0xeb, 0x65, 0xb9, 0x52, 0x4e, 0x41, 0x60, 0xa1, 0xe0, 0x29, 0x79, - 0xdb, 0x25, 0xa4, 0x11, 0xbd, 0xfd, 0xee, 0x0e, 0x88, 0xde, 0xae, 0x97, 0xe5, 0x49, 0xb9, 0x05, - 0x4d, 0x9f, 0x8e, 0x5b, 0xf8, 0x82, 0x4b, 0x0a, 0xf7, 0xcf, 0x47, 0x91, 0xc2, 0x1d, 0xba, 0xaf, - 0xa4, 0x70, 0xfc, 0x4a, 0xd2, 0x08, 0xe4, 0xfe, 0xaf, 0x31, 0x0a, 0xe4, 0xbe, 0x7e, 0x70, 0x04, - 0x72, 0x70, 0x95, 0xaa, 0x17, 0xfe, 0x6c, 0x34, 0xc9, 0xdc, 0x67, 0xa3, 0x4a, 0xe6, 0x32, 0x93, - 0xbe, 0x77, 0x53, 0x6a, 0x17, 0x1f, 0x45, 0x6a, 0x97, 0x79, 0xa6, 0xf7, 0x58, 0xa2, 0xf7, 0xf1, - 0x18, 0x24, 0x7a, 0x99, 0x17, 0xb0, 0x4c, 0x57, 0x5e, 0xcc, 0x2c, 0xed, 0x5b, 0x90, 0x59, 0xda, - 0x97, 0x59, 0xbe, 0xd7, 0x96, 0x51, 0xbe, 0xf7, 0xc6, 0x6d, 0x96, 0xef, 0x11, 0xb0, 0xfc, 0x6f, - 0xa6, 0x2f, 0xfc, 0x99, 0xb7, 0xa8, 0xef, 0xdf, 0x8e, 0x41, 0xd4, 0xd7, 0x73, 0x3f, 0x8a, 0xfa, - 0x28, 0x16, 0xff, 0x59, 0x26, 0x99, 0xdf, 0xc7, 0x99, 0x65, 0x7e, 0xef, 0xde, 0x59, 0x99, 0xdf, - 0xf5, 0xb2, 0x09, 0xd2, 0x78, 0x8c, 0x13, 0xcf, 0x4f, 0xf8, 0x81, 0xcb, 0xff, 0xd6, 0xf1, 0xa6, - 0x0e, 0x93, 0xa9, 0x53, 0x50, 0x09, 0x6f, 0xea, 0xe0, 0x03, 0xdb, 0x06, 0x87, 0xf0, 0x2f, 0xb3, - 0xbd, 0xc3, 0x5a, 0x5e, 0xac, 0x38, 0x85, 0x46, 0x52, 0xb9, 0x41, 0xb1, 0xa2, 0xcb, 0x2e, 0xa3, - 0xd4, 0xb2, 0x82, 0x98, 0xca, 0x49, 0x0f, 0xa9, 0x15, 0xc4, 0x84, 0x0c, 0x26, 0x7b, 0x36, 0xe9, - 0xe1, 0xb4, 0x1b, 0x97, 0x1e, 0x8e, 0x89, 0x83, 0x14, 0x7f, 0xe0, 0x1c, 0xe4, 0xb5, 0x34, 0x72, - 0xc9, 0xe9, 0x63, 0x90, 0x06, 0x7c, 0x7c, 0x7f, 0x4a, 0x2d, 0x2d, 0x6c, 0xe4, 0x29, 0xbe, 0xec, - 0xcb, 0x28, 0xbe, 0x04, 0x21, 0xe1, 0x1f, 0xee, 0x8e, 0xf8, 0x92, 0x27, 0xd4, 0x32, 0x48, 0x32, - 0x3b, 0x9d, 0x92, 0x4c, 0x10, 0x1d, 0x6e, 0xbe, 0xd3, 0x92, 0x4c, 0x6b, 0x7a, 0xe3, 0x1c, 0x42, - 0xcd, 0xcf, 0xd3, 0x09, 0x35, 0x67, 0xe1, 0x99, 0x6d, 0xb9, 0x7b, 0x42, 0x4d, 0x0b, 0xaf, 0xef, - 0x1c, 0x7f, 0x03, 0x02, 0xce, 0xd9, 0xf7, 0x91, 0x80, 0xf3, 0xb3, 0xf4, 0x02, 0xce, 0x02, 0x7a, - 0x1b, 0xef, 0x82, 0x80, 0xd3, 0xf6, 0x42, 0xa6, 0x13, 0x76, 0x7e, 0x95, 0x51, 0xd8, 0xf9, 0x10, - 0x9e, 0x6e, 0xf4, 0x6e, 0x09, 0x3b, 0xad, 0xfb, 0xf9, 0xb3, 0x4c, 0x72, 0xcf, 0xff, 0x3e, 0xb3, - 0xdc, 0x73, 0xce, 0x18, 0x30, 0xdd, 0xfb, 0x77, 0x55, 0xee, 0xc9, 0xa3, 0x85, 0x4c, 0x22, 0xd0, - 0x7f, 0x3f, 0x9a, 0xf4, 0xef, 0xd4, 0x7d, 0x2d, 0xfd, 0xb3, 0xf0, 0x74, 0x3a, 0x31, 0xe0, 0xbf, - 0x1f, 0x4d, 0x0c, 0x78, 0xea, 0xbe, 0x16, 0x03, 0xa6, 0x5d, 0x20, 0x9d, 0x88, 0xe8, 0x47, 0xb9, - 0xf5, 0xe1, 0x40, 0x63, 0x9d, 0x56, 0x30, 0x9f, 0x20, 0x24, 0x87, 0x98, 0x6b, 0x15, 0xae, 0xad, - 0x0a, 0x6d, 0x0c, 0x97, 0x95, 0xe8, 0x8a, 0x24, 0x91, 0xe6, 0xb2, 0x0f, 0xa6, 0x47, 0x63, 0xfb, - 0x0d, 0x0f, 0x7d, 0x99, 0x3a, 0x33, 0x60, 0x52, 0x38, 0x47, 0x0f, 0xd1, 0xcc, 0xcb, 0xd0, 0x52, - 0xdc, 0x84, 0xc6, 0xbf, 0xa7, 0x6d, 0x78, 0x27, 0x1c, 0xde, 0x5c, 0xb0, 0x00, 0x7f, 0x63, 0xae, - 0x87, 0x97, 0xb2, 0x59, 0xbd, 0x2a, 0x1c, 0xd0, 0xca, 0x96, 0x98, 0x84, 0x22, 0xed, 0x20, 0x17, - 0xd2, 0xaf, 0xf8, 0x48, 0x09, 0xd0, 0x50, 0x23, 0xcd, 0xed, 0xa9, 0x21, 0x9a, 0x96, 0x99, 0x36, - 0x16, 0x1b, 0x20, 0x81, 0x13, 0x48, 0xdd, 0x70, 0x02, 0xa7, 0x87, 0xb1, 0x30, 0xed, 0x15, 0x5d, - 0xa9, 0x94, 0x1c, 0x55, 0xf2, 0x93, 0x89, 0x81, 0x66, 0x20, 0xed, 0xca, 0x15, 0x50, 0xa2, 0xc2, - 0xa0, 0x46, 0xe7, 0xf6, 0xe4, 0x81, 0xf3, 0x30, 0x74, 0x71, 0xa2, 0xbf, 0x9d, 0xec, 0x2d, 0xce, - 0xbf, 0xa4, 0x3a, 0x06, 0x11, 0x53, 0x02, 0x9a, 0xa7, 0xbd, 0xdf, 0xa0, 0x85, 0x02, 0xfe, 0x0d, - 0x75, 0x9a, 0xc9, 0x72, 0x56, 0x13, 0x49, 0x56, 0x79, 0x63, 0x2c, 0xbc, 0x71, 0x63, 0xc1, 0xe3, - 0x64, 0xc1, 0x4e, 0xd0, 0xe6, 0x20, 0x1b, 0x92, 0xd0, 0x48, 0x19, 0xc7, 0x91, 0xfd, 0x89, 0xc1, - 0xc3, 0x46, 0x73, 0x4b, 0x2a, 0x7e, 0x06, 0x68, 0xb0, 0x64, 0xef, 0x49, 0xf3, 0xb6, 0x74, 0xef, - 0xf4, 0x35, 0x84, 0x03, 0xd7, 0x06, 0xdb, 0xcc, 0xae, 0xc1, 0xd0, 0x26, 0x1f, 0x9f, 0x42, 0x8a, - 0xdd, 0x07, 0x86, 0xc3, 0x12, 0x83, 0xdd, 0xa9, 0x8f, 0xbe, 0x4d, 0x76, 0x9c, 0xf2, 0x6d, 0x0e, - 0xd6, 0xd5, 0xd1, 0x28, 0x7a, 0x46, 0xd3, 0x60, 0xc9, 0xd2, 0x25, 0x6a, 0xc6, 0x09, 0x88, 0xe7, - 0x05, 0x24, 0x86, 0xb4, 0xf7, 0xaa, 0xc3, 0x81, 0x1a, 0x78, 0x3c, 0x40, 0x18, 0xf6, 0xf3, 0x31, - 0xa0, 0xae, 0x0d, 0xba, 0xf2, 0xba, 0xe4, 0xd1, 0x59, 0x2e, 0x73, 0x97, 0x5d, 0x1b, 0x6c, 0x4b, - 0x1e, 0x3c, 0xdf, 0x10, 0x0e, 0x18, 0x03, 0xf1, 0xd4, 0x17, 0x7b, 0x8d, 0x93, 0xdd, 0x89, 0x4b, - 0xcd, 0x89, 0x4b, 0x7b, 0x8d, 0xae, 0x8e, 0x64, 0x2b, 0x39, 0x8b, 0x72, 0x85, 0xce, 0xdc, 0xb7, - 0x84, 0x46, 0x1d, 0xf3, 0x18, 0x9e, 0x89, 0xba, 0x33, 0x4b, 0x61, 0xe5, 0xf9, 0x70, 0x0b, 0x6e, - 0x5c, 0xd4, 0x4d, 0x1d, 0x65, 0x4e, 0x67, 0xa3, 0x87, 0xd3, 0x7e, 0xe3, 0xc1, 0x10, 0x75, 0x07, - 0x6f, 0x4e, 0xd4, 0x0d, 0x99, 0xd8, 0xc1, 0x3c, 0xd5, 0xc7, 0x3c, 0x69, 0x5c, 0xcd, 0xee, 0x93, - 0x74, 0x4f, 0x85, 0x7f, 0x53, 0x84, 0xe6, 0xd5, 0x6c, 0x0d, 0xd5, 0xfe, 0x24, 0x90, 0xbf, 0x19, - 0x81, 0xfc, 0x91, 0x4c, 0x02, 0xf9, 0xa0, 0xc9, 0x09, 0x78, 0x09, 0xe4, 0x57, 0xdc, 0xb0, 0x40, - 0xfe, 0x79, 0x5f, 0xb9, 0x62, 0x5c, 0xba, 0x60, 0x71, 0xa7, 0xb8, 0x22, 0xb3, 0x98, 0xfe, 0x40, - 0x3a, 0x31, 0x7d, 0xbd, 0xae, 0xbc, 0xed, 0x12, 0xd3, 0xaf, 0xba, 0x35, 0x31, 0xfd, 0xb5, 0xc1, - 0x8f, 0x92, 0x87, 0x8e, 0x27, 0x0f, 0xb4, 0xc0, 0x53, 0xf1, 0x93, 0xd4, 0xfe, 0x47, 0x22, 0xb5, - 0x6f, 0x1b, 0x83, 0x3d, 0x2d, 0x36, 0x0e, 0xcd, 0x20, 0x99, 0x5f, 0x34, 0x76, 0xc9, 0x7c, 0x2c, - 0xd2, 0x98, 0x51, 0x30, 0x7f, 0x74, 0x54, 0x73, 0xda, 0x5a, 0x5d, 0xf9, 0x7d, 0x7a, 0xe1, 0x7b, - 0xe5, 0x2d, 0x0b, 0xdf, 0xf1, 0x0c, 0xd3, 0xca, 0xde, 0xf7, 0x8d, 0xc9, 0x9a, 0x16, 0xab, 0x32, - 0x32, 0xca, 0xd7, 0x4b, 0x32, 0xcb, 0xd7, 0xb9, 0x58, 0xc0, 0x78, 0x3e, 0x3f, 0x89, 0xdb, 0x7f, - 0x12, 0xb7, 0x8f, 0x51, 0xdc, 0x6e, 0x93, 0x27, 0x4f, 0xba, 0x03, 0xf2, 0xe4, 0xc9, 0x37, 0x2a, - 0x4f, 0x1e, 0x93, 0x40, 0x78, 0xca, 0x0f, 0x5c, 0x20, 0xfc, 0x2f, 0xd3, 0x08, 0x84, 0xa7, 0xe2, - 0x75, 0x3f, 0x98, 0x22, 0xdf, 0x2f, 0x33, 0x8a, 0x7c, 0x21, 0x3c, 0x79, 0xc8, 0x44, 0xd7, 0x19, - 0x44, 0xbe, 0xe5, 0x63, 0x13, 0xf9, 0xde, 0x11, 0x79, 0xaf, 0x78, 0xdf, 0xca, 0x7b, 0xa7, 0xdf, - 0x87, 0xf2, 0xde, 0x93, 0x40, 0x2a, 0x9b, 0x15, 0x35, 0x31, 0x7f, 0x24, 0xd6, 0xd8, 0x80, 0xa7, - 0x0a, 0x92, 0xfd, 0x98, 0xae, 0x68, 0x92, 0x47, 0x35, 0x37, 0xd1, 0x28, 0x94, 0xf2, 0xd3, 0x34, - 0x3a, 0x0f, 0x27, 0xfa, 0xe3, 0x18, 0x77, 0xe1, 0x0c, 0xdd, 0x37, 0x3a, 0x51, 0x8f, 0x0f, 0x8a, - 0xff, 0x58, 0x40, 0x05, 0x7c, 0x31, 0x09, 0x61, 0xaf, 0x71, 0xc6, 0xc1, 0x7b, 0x05, 0x5d, 0xf9, - 0x93, 0x94, 0xb6, 0x95, 0xfc, 0x7b, 0xfb, 0x9c, 0x4b, 0xa2, 0xa4, 0xd2, 0xbd, 0xc3, 0xb0, 0x00, - 0xa3, 0xb3, 0x8f, 0x04, 0xdc, 0xbf, 0x99, 0x45, 0xa4, 0x9d, 0xc7, 0x7d, 0x6f, 0x42, 0xfc, 0xd9, - 0x68, 0x26, 0xc4, 0x0f, 0x8c, 0x84, 0xbd, 0xe0, 0x41, 0x94, 0xb0, 0x3f, 0xf4, 0x43, 0x94, 0xb0, - 0xcf, 0xf9, 0xa1, 0x4b, 0xd8, 0xe7, 0xfe, 0x20, 0x24, 0xec, 0x9c, 0xf8, 0x7b, 0xde, 0x1d, 0x15, - 0x7f, 0x8f, 0x2a, 0x8c, 0x9e, 0xff, 0x03, 0x17, 0x46, 0x2f, 0xb8, 0x8f, 0x85, 0xd1, 0xaf, 0xeb, - 0xca, 0x3a, 0x54, 0x23, 0x65, 0x94, 0x3f, 0xca, 0xf3, 0x8d, 0xae, 0xb6, 0x64, 0xef, 0x29, 0x57, - 0x3d, 0x08, 0x9a, 0xec, 0xa2, 0x68, 0x26, 0x7e, 0x3e, 0x99, 0x8d, 0xe6, 0xa7, 0x19, 0xf5, 0xc7, - 0x23, 0x7c, 0x86, 0x8d, 0x4b, 0x75, 0xef, 0xbc, 0x6f, 0x85, 0xcf, 0x9f, 0x67, 0xa3, 0x05, 0xf0, - 0x58, 0xa5, 0x15, 0x3f, 0xff, 0xc6, 0x1d, 0x86, 0xe6, 0x79, 0x5d, 0x29, 0xe0, 0xf9, 0xd1, 0x89, - 0xb6, 0x18, 0x33, 0x63, 0x77, 0x91, 0xfc, 0x0f, 0x82, 0x33, 0xdc, 0xd4, 0x5f, 0x0b, 0xba, 0xf2, - 0x0f, 0x04, 0x2b, 0xe0, 0xd4, 0x77, 0x02, 0x1f, 0x71, 0x2a, 0xcd, 0x36, 0xde, 0x5c, 0xf8, 0x29, - 0xa3, 0xef, 0x52, 0x22, 0xde, 0x61, 0x12, 0x4f, 0x38, 0xd9, 0x99, 0xdb, 0x36, 0xcd, 0x38, 0xd7, - 0x3a, 0xfc, 0x69, 0x73, 0xaa, 0x7b, 0x27, 0x0b, 0x9d, 0x62, 0x82, 0xde, 0xe1, 0x3e, 0x5b, 0x4e, - 0xd6, 0x8b, 0x5f, 0x83, 0x17, 0x64, 0xaa, 0x7b, 0x67, 0xb9, 0x02, 0x8a, 0x46, 0x5b, 0x68, 0xab, - 0x5f, 0xe9, 0xca, 0x0a, 0x54, 0x29, 0x8d, 0xb2, 0xc9, 0xf2, 0xec, 0x34, 0x0b, 0xe4, 0xa1, 0xab, - 0xf0, 0xb3, 0x6c, 0xf4, 0x70, 0xda, 0x71, 0x1e, 0x0c, 0xa8, 0xaa, 0xbb, 0x49, 0xa8, 0xc2, 0xf7, - 0x1c, 0xa0, 0xea, 0x51, 0x3e, 0x2c, 0xd6, 0x7d, 0x0b, 0x58, 0x97, 0xb2, 0xd0, 0xdc, 0x15, 0x5a, - 0xec, 0x5e, 0x40, 0xd5, 0x16, 0xce, 0xfc, 0x2f, 0xcb, 0x8a, 0x41, 0x64, 0x99, 0xff, 0xbd, 0x5a, - 0xae, 0xc0, 0x0a, 0x12, 0xf1, 0x7d, 0xb4, 0x10, 0xe7, 0xc7, 0x4b, 0x0c, 0x9c, 0xa2, 0xe9, 0xd8, - 0xe0, 0xdf, 0xe4, 0xa1, 0x0b, 0xc5, 0x3e, 0xe3, 0x64, 0x7b, 0x6a, 0xff, 0x59, 0xaa, 0x9d, 0x70, - 0xf4, 0xb3, 0xec, 0x06, 0x4b, 0x57, 0xe8, 0x4a, 0x05, 0x2a, 0x93, 0x32, 0x2d, 0x5b, 0x7e, 0x14, - 0x62, 0xbc, 0xa4, 0x39, 0x36, 0x12, 0x50, 0xec, 0xef, 0xb3, 0xd1, 0x3c, 0xef, 0x41, 0x7e, 0x3c, - 0x4f, 0x07, 0x8b, 0x38, 0x76, 0xbf, 0xde, 0x70, 0x1a, 0xdf, 0x3f, 0xe3, 0x49, 0xc9, 0xf3, 0xd3, - 0x9c, 0x77, 0xba, 0xf0, 0x3e, 0x67, 0x73, 0xd0, 0xbc, 0x95, 0xc1, 0x68, 0x7a, 0xb8, 0x09, 0xb9, - 0xe1, 0xa6, 0x5a, 0x57, 0x96, 0xf3, 0x70, 0xf3, 0x9c, 0xab, 0xf3, 0x2d, 0xc4, 0x47, 0x7b, 0xd3, - 0x1d, 0x1f, 0xed, 0x45, 0x5d, 0x79, 0x92, 0x37, 0x1a, 0xfe, 0x79, 0xfa, 0xef, 0x8d, 0x62, 0x3a, - 0x5c, 0xe5, 0x0c, 0x95, 0xb6, 0x58, 0x57, 0x1e, 0xb7, 0x42, 0x04, 0xcc, 0x71, 0x93, 0x5c, 0x69, - 0xa3, 0xa6, 0x55, 0x39, 0xa3, 0xa6, 0xc1, 0x50, 0x54, 0xbe, 0xeb, 0x1e, 0x2a, 0x6d, 0x00, 0xb5, - 0xd2, 0x93, 0x82, 0xae, 0x1c, 0x17, 0xd0, 0x51, 0x41, 0xca, 0x78, 0x14, 0xf2, 0x9f, 0xd3, 0x9c, - 0xed, 0x5d, 0x8a, 0xdb, 0xf5, 0xbf, 0x65, 0xa1, 0xf9, 0x69, 0xe6, 0xf7, 0x60, 0xa0, 0x89, 0x37, - 0x6d, 0x41, 0xbc, 0xc6, 0x8e, 0x26, 0xe6, 0xeb, 0xca, 0x1c, 0x82, 0x26, 0x44, 0x5b, 0x60, 0x2f, - 0x3e, 0x2e, 0x21, 0xc9, 0x88, 0x90, 0x79, 0x87, 0x6e, 0x18, 0x3c, 0xbf, 0xce, 0xf2, 0x70, 0x1f, - 0xac, 0xc1, 0x41, 0xe8, 0x28, 0x80, 0x2e, 0x43, 0xb9, 0x1a, 0x6f, 0xa2, 0x80, 0x53, 0xa5, 0x92, - 0x22, 0x79, 0x2e, 0x1f, 0x68, 0x82, 0xe9, 0xbb, 0x81, 0xf9, 0x52, 0x49, 0x23, 0xbb, 0x02, 0x24, - 0xeb, 0x0e, 0x28, 0x40, 0xb2, 0x6f, 0x54, 0x01, 0xf2, 0x02, 0xf7, 0xa2, 0xe6, 0x58, 0x37, 0xc3, - 0x7a, 0x51, 0xa7, 0x65, 0x78, 0x17, 0xbd, 0x2d, 0x71, 0xe8, 0xa6, 0xfd, 0xf4, 0xa2, 0xdd, 0x3f, - 0x34, 0x5b, 0x4a, 0x40, 0x48, 0xc5, 0xb9, 0x71, 0xb1, 0x19, 0xdd, 0x52, 0x96, 0x7c, 0x17, 0xde, - 0x19, 0xba, 0x4f, 0x38, 0xf9, 0x6e, 0xbe, 0xd1, 0x73, 0xde, 0x38, 0x76, 0x8c, 0x1a, 0x15, 0x92, - 0x94, 0xba, 0xe5, 0x08, 0xc1, 0x5f, 0xab, 0xfd, 0xf5, 0xf4, 0x64, 0x1e, 0xd5, 0x15, 0x9f, 0xc4, - 0x15, 0xcb, 0x22, 0xdf, 0x95, 0x04, 0x94, 0xe6, 0xea, 0xc5, 0x65, 0x68, 0x22, 0xfc, 0x32, 0xef, - 0x08, 0x0d, 0xc4, 0x8d, 0xa3, 0x91, 0xf2, 0xe5, 0x74, 0x06, 0x10, 0x4b, 0x52, 0xe5, 0xab, 0x4a, - 0x1f, 0xd6, 0x95, 0x79, 0x68, 0x8e, 0xc4, 0x2d, 0xc6, 0x3e, 0xdf, 0xc2, 0xbf, 0x11, 0xd0, 0xac, - 0x15, 0x5a, 0xac, 0xbc, 0x2e, 0xdc, 0x18, 0x80, 0x46, 0x0c, 0x7e, 0x9f, 0x45, 0xe3, 0x6b, 0xcd, - 0x62, 0xf6, 0xbc, 0x2e, 0x80, 0xb0, 0x35, 0x50, 0x26, 0x4f, 0x48, 0xc4, 0xf7, 0x71, 0xef, 0xd9, - 0xd4, 0x2c, 0x95, 0x56, 0x89, 0xcb, 0xd0, 0x04, 0x7f, 0x2d, 0xd6, 0x40, 0x33, 0xb8, 0xc5, 0xb9, - 0x05, 0xad, 0x52, 0x79, 0x62, 0x22, 0xbe, 0xcf, 0xd8, 0xdd, 0x3b, 0xdc, 0xb7, 0x8d, 0xc0, 0xe8, - 0xd4, 0x2c, 0xd5, 0xaa, 0xa6, 0xb1, 0xa1, 0xd3, 0x4c, 0x8d, 0x86, 0x31, 0xc4, 0xdf, 0xf3, 0xc1, - 0x7a, 0x20, 0x8c, 0xa1, 0x15, 0x88, 0x76, 0xb6, 0xab, 0xeb, 0x83, 0x01, 0x60, 0xab, 0x6c, 0x6f, - 0x81, 0xcb, 0xdc, 0xd5, 0x3a, 0xc8, 0xb1, 0x61, 0xff, 0x67, 0x75, 0xe5, 0x97, 0xe8, 0x49, 0x29, - 0xdd, 0x6e, 0xc8, 0x05, 0xe9, 0x76, 0xb2, 0xb0, 0x23, 0x0b, 0xe5, 0xbd, 0x11, 0x0e, 0x81, 0x21, - 0xe9, 0x12, 0x96, 0xba, 0x1b, 0xae, 0x42, 0x81, 0xae, 0xcc, 0x64, 0x39, 0x9d, 0x27, 0x72, 0xd9, - 0x9c, 0x59, 0xa6, 0xee, 0xa7, 0x48, 0x0e, 0x68, 0x6e, 0xcf, 0xf8, 0xab, 0x3f, 0x85, 0xf5, 0x21, - 0xf7, 0x1e, 0x52, 0x3b, 0x97, 0xa2, 0x3c, 0xf3, 0x5f, 0x0c, 0x34, 0x63, 0xbb, 0xee, 0xac, 0xbd, - 0xf8, 0x02, 0x9a, 0x60, 0xfe, 0x0d, 0xb0, 0x92, 0x33, 0xa6, 0xce, 0x56, 0x87, 0x52, 0x73, 0x86, - 0x68, 0xae, 0xc4, 0x96, 0xcc, 0xcd, 0x90, 0x80, 0xca, 0xff, 0x99, 0x83, 0xa6, 0xe2, 0x3d, 0xa4, - 0x39, 0xbd, 0xcd, 0x8d, 0x79, 0xce, 0x4d, 0x85, 0xce, 0x75, 0x72, 0x6f, 0x89, 0xf8, 0x3e, 0xfa, - 0x1c, 0xf1, 0xef, 0xd0, 0x32, 0x34, 0x91, 0xfc, 0xe0, 0x70, 0x04, 0xcc, 0x98, 0x2b, 0x97, 0xf3, - 0xa1, 0x2f, 0x8b, 0x37, 0x6f, 0x55, 0x89, 0x6f, 0x22, 0x91, 0xfc, 0xac, 0xd0, 0xa2, 0xb5, 0x91, - 0x20, 0xc6, 0xa1, 0x64, 0xdf, 0x30, 0xc2, 0xf5, 0xa8, 0x96, 0x45, 0x82, 0xf9, 0x3a, 0x3b, 0x87, - 0x2f, 0x13, 0x3b, 0x62, 0xd5, 0xa3, 0x9d, 0x58, 0x85, 0x26, 0x93, 0xd2, 0xf5, 0x5a, 0x24, 0x6a, - 0x0e, 0x9c, 0x63, 0x79, 0x90, 0x39, 0xaa, 0xe8, 0x24, 0x53, 0xad, 0x2d, 0xc9, 0x9e, 0x2f, 0x55, - 0x47, 0xad, 0x89, 0x0f, 0x48, 0xc9, 0x9a, 0x1a, 0x12, 0x89, 0xb7, 0x90, 0x4f, 0xf3, 0xb2, 0xa6, - 0x86, 0xcd, 0x0a, 0xe7, 0x39, 0x4c, 0x7d, 0x33, 0x90, 0x1a, 0x38, 0xa6, 0x5a, 0xd5, 0xdc, 0x5e, - 0xe1, 0x68, 0xbe, 0xb9, 0xee, 0xbd, 0xc2, 0x01, 0x7d, 0xe9, 0x34, 0x70, 0x40, 0x5f, 0x95, 0xaf, - 0x12, 0xdb, 0x05, 0x34, 0x89, 0xfc, 0xae, 0xe1, 0xb3, 0xe2, 0x6f, 0xd2, 0x95, 0x80, 0x64, 0xaf, - 0x91, 0x09, 0x45, 0x41, 0x82, 0xf3, 0xaa, 0x8d, 0xa1, 0x50, 0x30, 0xb4, 0xc9, 0x37, 0x7c, 0xb9, - 0x6b, 0xf8, 0x44, 0x5b, 0xa2, 0xbf, 0xd7, 0x87, 0x03, 0x47, 0x98, 0x45, 0x24, 0x13, 0x4a, 0x7f, - 0xaf, 0xaf, 0x2a, 0x80, 0xc3, 0x5d, 0x8d, 0x1c, 0xfa, 0x3a, 0x35, 0x74, 0xce, 0x2c, 0x50, 0x36, - 0x84, 0xc2, 0x91, 0x7a, 0x7f, 0x9d, 0x0f, 0x62, 0xf2, 0x17, 0xa9, 0xf6, 0x6f, 0x94, 0x9a, 0xd4, - 0x10, 0x7a, 0x54, 0x72, 0xdd, 0x28, 0x79, 0x0a, 0xbb, 0x2e, 0xe4, 0xde, 0x1d, 0x27, 0xe4, 0x2d, - 0x07, 0xbf, 0xa4, 0xfd, 0xad, 0x63, 0xea, 0x67, 0xd9, 0xcb, 0xc6, 0xe0, 0x34, 0xcd, 0xcb, 0x46, - 0xbb, 0xd2, 0x07, 0xce, 0x86, 0xe3, 0xb3, 0x6f, 0x06, 0xc7, 0x57, 0xe9, 0xca, 0x72, 0x54, 0x21, - 0x65, 0x5e, 0x9b, 0xfc, 0x28, 0x87, 0xa0, 0x60, 0x3e, 0x04, 0x1e, 0x78, 0x7c, 0x9f, 0xcc, 0x42, - 0x0b, 0xd2, 0x0d, 0xf3, 0x60, 0xa0, 0xfd, 0xb7, 0x6d, 0x68, 0xdf, 0xe7, 0xa6, 0xab, 0xec, 0xb7, - 0x24, 0x6d, 0x4c, 0x5f, 0x7e, 0x73, 0x6c, 0x0f, 0x41, 0x85, 0xae, 0x28, 0xe8, 0x65, 0x69, 0x94, - 0x6d, 0x92, 0xe7, 0x67, 0xdc, 0xee, 0xc2, 0xae, 0x2c, 0x34, 0xc7, 0xfe, 0x94, 0x98, 0xf8, 0xf2, - 0x36, 0x90, 0x0c, 0x4b, 0x1d, 0x17, 0x71, 0x0c, 0x24, 0xd6, 0x73, 0xee, 0x1b, 0x38, 0x37, 0xc3, - 0x0d, 0xe4, 0xaf, 0x1e, 0x91, 0xc5, 0x66, 0x58, 0x8a, 0xfc, 0x84, 0xc7, 0xc3, 0xc8, 0x9e, 0x2c, - 0xfe, 0xee, 0xfd, 0x0b, 0x90, 0xef, 0xb9, 0xc7, 0x79, 0xd0, 0x52, 0x11, 0x98, 0x17, 0xaf, 0xc0, - 0x79, 0xf1, 0xe8, 0x73, 0x38, 0x36, 0x6a, 0x83, 0xc4, 0xc0, 0xcf, 0xb4, 0x1f, 0xf2, 0x23, 0xa3, - 0x6e, 0x6c, 0xe1, 0xa9, 0x1c, 0x94, 0xbf, 0x06, 0xa7, 0x8d, 0x0d, 0x86, 0x43, 0x2b, 0xc3, 0x9b, - 0xc4, 0x72, 0x94, 0x4f, 0x6d, 0xa6, 0xb8, 0x6c, 0x7b, 0x26, 0x71, 0x2b, 0xd9, 0x2a, 0xe4, 0x7c, - 0xd0, 0x94, 0x92, 0x07, 0xc0, 0x56, 0x27, 0x3e, 0x67, 0x92, 0xe4, 0xf0, 0x9b, 0x91, 0xa5, 0x78, - 0x83, 0xb8, 0x62, 0x39, 0x0f, 0x06, 0xa8, 0xaa, 0x50, 0xb9, 0x52, 0xf1, 0x49, 0x96, 0x4f, 0x81, - 0xbb, 0x67, 0x34, 0x9f, 0xc2, 0x64, 0x9a, 0x55, 0x63, 0xf8, 0xdc, 0x79, 0x63, 0xe8, 0x00, 0xcb, - 0xa0, 0xc1, 0x1d, 0x64, 0x8e, 0xd7, 0x41, 0x1a, 0xe7, 0x4e, 0x0c, 0x9f, 0x3b, 0x91, 0x3c, 0x74, - 0xca, 0xb8, 0x7c, 0xc8, 0x79, 0x90, 0x8b, 0x50, 0x6e, 0xb8, 0x61, 0x5d, 0x54, 0x8b, 0x90, 0xe7, - 0x72, 0x96, 0xae, 0x4c, 0x97, 0x48, 0x91, 0x3c, 0x81, 0xe5, 0x1b, 0x56, 0x49, 0x91, 0xf8, 0x22, - 0x42, 0xb5, 0x90, 0x3a, 0x8b, 0x66, 0xb6, 0x9b, 0x00, 0x27, 0xc6, 0x15, 0xcb, 0xf9, 0xf0, 0x5c, - 0xd1, 0xe4, 0x61, 0x56, 0x8d, 0x58, 0xc9, 0x53, 0x31, 0xf0, 0x2e, 0x3e, 0xa1, 0x2b, 0x8f, 0xf1, - 0x54, 0xcc, 0x6c, 0xf8, 0xa8, 0x8b, 0xc1, 0xe6, 0x29, 0x9a, 0x4a, 0x5e, 0x44, 0x96, 0xc7, 0x0d, - 0x63, 0x89, 0xc8, 0x5c, 0xc3, 0x10, 0x37, 0x7b, 0x4e, 0x18, 0x56, 0x6a, 0xf6, 0x41, 0x85, 0x92, - 0xed, 0x0a, 0xc8, 0x22, 0x74, 0x84, 0xed, 0x82, 0xad, 0x2b, 0x3c, 0x9f, 0x85, 0xa6, 0xae, 0xf5, - 0x47, 0x37, 0xdb, 0xee, 0x4a, 0xa1, 0xd7, 0x5d, 0x71, 0x5c, 0x85, 0x05, 0xee, 0xab, 0x60, 0x3b, - 0xef, 0x59, 0xf6, 0xf3, 0x66, 0x47, 0x5a, 0xe0, 0x38, 0x52, 0xeb, 0xc0, 0x66, 0xd9, 0x0f, 0x8c, - 0x1d, 0xcc, 0x02, 0xf7, 0xc1, 0xd8, 0x76, 0x7e, 0x9e, 0x6b, 0xe7, 0xf9, 0x0d, 0x9d, 0xe7, 0xda, - 0x50, 0x5e, 0x68, 0x38, 0x8b, 0x25, 0x18, 0x98, 0x00, 0xdf, 0x24, 0x49, 0x00, 0xe6, 0x70, 0x79, - 0x0f, 0x70, 0x52, 0x3d, 0x2b, 0x29, 0x41, 0xe1, 0xdf, 0x8c, 0x07, 0xb1, 0x2a, 0x06, 0xcf, 0xaa, - 0x50, 0x34, 0xe6, 0x0f, 0xc1, 0x9e, 0xdc, 0x3a, 0x0a, 0x7f, 0xca, 0x81, 0xc2, 0x71, 0x56, 0x27, - 0x8a, 0xc2, 0x4d, 0xaa, 0xe6, 0x36, 0x63, 0x71, 0xb1, 0x9a, 0xb0, 0x18, 0x39, 0x34, 0xad, 0x9f, - 0x2c, 0xe1, 0x02, 0x59, 0x62, 0x08, 0x05, 0xa4, 0x88, 0x3e, 0x7f, 0x43, 0xc9, 0xa6, 0x46, 0x7f, - 0x68, 0xd3, 0x07, 0xef, 0x84, 0x1b, 0x4b, 0x96, 0x16, 0xfb, 0x1a, 0xa3, 0x25, 0xef, 0x69, 0xd1, - 0xd8, 0xd2, 0x12, 0x3f, 0x95, 0xc5, 0x02, 0xfb, 0x51, 0x81, 0x50, 0x28, 0x1c, 0xd0, 0x96, 0xfb, - 0xeb, 0x83, 0x75, 0x5b, 0x09, 0xe8, 0xe1, 0xa4, 0x13, 0x5c, 0xb1, 0x9c, 0x9f, 0xec, 0x89, 0x1b, - 0x1f, 0xef, 0x4d, 0x7d, 0x33, 0x60, 0xb4, 0x1c, 0xa2, 0xfd, 0xb9, 0x06, 0xe2, 0xcf, 0x51, 0x76, - 0x6d, 0x43, 0x23, 0xf1, 0x34, 0x98, 0xf1, 0xff, 0xb1, 0xf7, 0xae, 0xe1, 0x51, 0x1d, 0x59, 0x82, - 0x60, 0xdf, 0x04, 0x81, 0x08, 0x9e, 0x0e, 0x1b, 0x90, 0x13, 0x83, 0xd3, 0x69, 0x6c, 0x44, 0x5a, - 0x20, 0xb8, 0xc6, 0xd8, 0x96, 0x0b, 0xdb, 0x57, 0x12, 0x50, 0x32, 0x0f, 0xcb, 0x09, 0xa6, 0xca, - 0xf5, 0x68, 0x2a, 0x25, 0x5d, 0x44, 0x16, 0x52, 0x66, 0x56, 0x66, 0x4a, 0x36, 0xa6, 0x3d, 0x2b, - 0x8c, 0x04, 0xc8, 0x08, 0x4b, 0xba, 0x06, 0x0c, 0x32, 0xe6, 0x51, 0x36, 0x20, 0x3f, 0x90, 0xc0, - 0x60, 0x10, 0x7a, 0x98, 0xee, 0x6f, 0x67, 0x7e, 0x74, 0x4f, 0xf5, 0x63, 0xbc, 0xb3, 0xdd, 0xbd, - 0xb3, 0xdf, 0x6c, 0x4f, 0x6f, 0xe5, 0xcd, 0x4c, 0xcd, 0x7c, 0x3d, 0xec, 0x7c, 0xb3, 0xbb, 0xdf, - 0x7e, 0xb5, 0x33, 0xfd, 0xcd, 0x77, 0xe3, 0x44, 0xc4, 0x8d, 0x9b, 0xf7, 0xde, 0x54, 0xca, 0x76, - 0x17, 0x65, 0x77, 0xfd, 0x01, 0x65, 0xc4, 0x89, 0xb8, 0xe7, 0x9c, 0x38, 0xe7, 0xc4, 0xeb, 0xc4, - 0x39, 0x9a, 0x72, 0x4f, 0xc0, 0xf8, 0x2d, 0xa3, 0xaa, 0xda, 0x97, 0x7d, 0xe9, 0x73, 0x43, 0xe9, - 0xe3, 0x57, 0x82, 0x46, 0x01, 0x5e, 0x87, 0xa6, 0x35, 0xab, 0xcd, 0xd1, 0xf8, 0x5e, 0x32, 0xf0, - 0xb3, 0x2b, 0x1f, 0xd1, 0x14, 0x7f, 0x80, 0x16, 0xc9, 0x25, 0xfa, 0xc1, 0x0e, 0xfd, 0xf2, 0x49, - 0xfd, 0xc3, 0x4b, 0xfa, 0x95, 0x6e, 0xee, 0x99, 0xe3, 0xdb, 0x58, 0x19, 0xa4, 0x10, 0x78, 0x87, - 0x5d, 0xdb, 0x8c, 0xdd, 0x9e, 0xa8, 0x6d, 0xa5, 0x4c, 0xbd, 0xca, 0x7c, 0x90, 0x35, 0x2a, 0x7d, - 0x72, 0x10, 0xcc, 0x6f, 0xf6, 0xd0, 0xc7, 0xfa, 0xc8, 0x30, 0x18, 0xbb, 0xf4, 0xd5, 0x73, 0xa2, - 0x58, 0xed, 0x40, 0x45, 0x75, 0xe1, 0xd7, 0x79, 0x42, 0x46, 0x12, 0x61, 0x06, 0x4a, 0xe4, 0x35, - 0xa9, 0xa1, 0x3e, 0x62, 0xea, 0x6c, 0xfd, 0x41, 0x45, 0xe6, 0xd2, 0xfe, 0xf4, 0xe9, 0xce, 0xdc, - 0xbe, 0xa1, 0x31, 0x0e, 0xa3, 0xe9, 0xad, 0x74, 0x27, 0x31, 0x93, 0xc5, 0xdc, 0xdd, 0x1c, 0x60, - 0x65, 0xb2, 0x42, 0xff, 0x80, 0x3d, 0x44, 0xfa, 0xdc, 0xa1, 0xec, 0xe0, 0x41, 0xfd, 0x60, 0xc7, - 0xf8, 0x81, 0x7e, 0xea, 0xf7, 0xd2, 0xd7, 0x9e, 0x7e, 0xfb, 0x82, 0xde, 0xfd, 0x01, 0x00, 0x94, - 0x65, 0xfa, 0xaf, 0xe9, 0x03, 0x7d, 0x7a, 0xcf, 0xdb, 0x7a, 0xf7, 0xa0, 0x3e, 0x7c, 0x56, 0x1f, - 0x3d, 0x10, 0x64, 0x7d, 0xe1, 0x97, 0x84, 0x63, 0xba, 0x59, 0x66, 0xb2, 0x0a, 0xf3, 0x98, 0xee, - 0x51, 0xf6, 0x17, 0xc7, 0x92, 0x7a, 0x58, 0x9e, 0xb8, 0x55, 0xba, 0xb7, 0x25, 0x92, 0x0c, 0x97, - 0x27, 0xd4, 0xa6, 0x5d, 0xcb, 0x85, 0x3b, 0xad, 0x3e, 0x49, 0x53, 0x4e, 0x48, 0xe8, 0x1d, 0x29, - 0xb0, 0xd0, 0xd0, 0x1f, 0x07, 0xd5, 0x91, 0x5f, 0x83, 0x33, 0x54, 0x10, 0x0f, 0x98, 0xca, 0x7e, - 0x4b, 0x27, 0xe0, 0x7f, 0x23, 0x6e, 0x11, 0xac, 0xa8, 0x7d, 0x3b, 0x56, 0x21, 0x2f, 0x5a, 0x56, - 0x21, 0x0f, 0xe4, 0xae, 0x42, 0x44, 0x92, 0x0a, 0x5b, 0x89, 0x6c, 0xd0, 0x94, 0x2a, 0xa4, 0x04, - 0xee, 0x33, 0xb8, 0xb2, 0x35, 0xda, 0x60, 0x61, 0x86, 0x5c, 0x62, 0x1f, 0x28, 0xb7, 0x73, 0xee, - 0x7f, 0x2c, 0x46, 0xb3, 0xc4, 0xaf, 0xe3, 0x27, 0x51, 0x71, 0x84, 0xf6, 0x27, 0xee, 0xf7, 0x79, - 0x21, 0x98, 0x87, 0x53, 0xfd, 0x74, 0x09, 0xc2, 0xcb, 0x8d, 0x86, 0xc9, 0xbd, 0x31, 0x55, 0xd8, - 0xeb, 0x43, 0x43, 0x56, 0xc8, 0xec, 0x0a, 0xdd, 0xe8, 0xf3, 0x72, 0x63, 0x6e, 0x17, 0x8c, 0xd2, - 0x14, 0x61, 0x6e, 0x77, 0x33, 0x4a, 0x16, 0x6b, 0xf4, 0x08, 0x58, 0x23, 0x78, 0x6f, 0x76, 0xaf, - 0xa6, 0xcc, 0x03, 0x6b, 0x34, 0xa3, 0x3e, 0xd6, 0xe2, 0x6c, 0x8c, 0x8a, 0xdc, 0x8d, 0xd1, 0xc0, - 0xad, 0xf1, 0x43, 0xce, 0xc6, 0xe8, 0x11, 0x34, 0xa5, 0x91, 0xdb, 0x3c, 0xf8, 0x4a, 0xa3, 0xf1, - 0x95, 0x46, 0xf3, 0x2b, 0x8d, 0xb1, 0x16, 0x9c, 0xe0, 0x53, 0xd6, 0x74, 0x33, 0x39, 0x06, 0xcb, - 0x89, 0xb3, 0x95, 0xd2, 0x40, 0xb6, 0xdd, 0x77, 0x46, 0xbb, 0xb6, 0xad, 0xdf, 0xbc, 0xf9, 0xce, - 0x68, 0x5f, 0xf6, 0x7c, 0x7f, 0xe6, 0xc3, 0x61, 0x7d, 0xe0, 0x4c, 0xea, 0x8b, 0x23, 0x7a, 0xf7, - 0x60, 0xf6, 0xfa, 0xe5, 0xd4, 0xad, 0x2b, 0x46, 0xf5, 0x8b, 0x9b, 0xab, 0x77, 0xbe, 0xf8, 0xf2, - 0xf6, 0x5c, 0x90, 0x9b, 0x9f, 0xe9, 0xc7, 0x06, 0x32, 0x63, 0xed, 0x7c, 0x3e, 0xac, 0x41, 0x33, - 0x5a, 0x22, 0xe1, 0x64, 0x6d, 0x3c, 0x4c, 0x32, 0xea, 0x4a, 0xa5, 0x1e, 0x38, 0x1d, 0x31, 0x4b, - 0xe5, 0x45, 0xd0, 0x36, 0x35, 0x72, 0x33, 0x7d, 0x6e, 0x94, 0x13, 0x78, 0x67, 0xb4, 0x4f, 0xef, - 0x38, 0x10, 0x34, 0xe1, 0xf0, 0x1a, 0x54, 0x64, 0x4c, 0x14, 0x90, 0x4b, 0x97, 0xa5, 0x2a, 0x26, - 0x25, 0x32, 0x4e, 0x1f, 0x1b, 0x4c, 0x77, 0xed, 0xcf, 0xf4, 0xb5, 0xf3, 0xd9, 0x27, 0x08, 0x55, - 0xf8, 0x17, 0x82, 0x39, 0x02, 0xa3, 0xfa, 0xb2, 0xa6, 0x04, 0x05, 0x73, 0xb4, 0x41, 0x1f, 0xbc, - 0x95, 0x7e, 0xfb, 0x82, 0x69, 0x8c, 0x4e, 0x1f, 0x35, 0xac, 0x69, 0x5f, 0xbb, 0x79, 0x29, 0x9f, - 0x63, 0x6f, 0xc1, 0x5c, 0xf1, 0x8f, 0x41, 0x4b, 0x21, 0x74, 0x4f, 0x23, 0x9a, 0xc3, 0xd6, 0x33, - 0xb5, 0xd1, 0x68, 0x13, 0x4f, 0x7e, 0xfb, 0x9c, 0xa6, 0x7c, 0x2f, 0x90, 0x53, 0x25, 0x07, 0xc0, - 0x62, 0xeb, 0x5a, 0xbf, 0xa1, 0x15, 0x57, 0xcf, 0xd5, 0x54, 0x97, 0x89, 0x49, 0x06, 0xf5, 0xae, - 0x5b, 0xe3, 0x1d, 0x47, 0xe9, 0x27, 0x72, 0xda, 0xe2, 0xb3, 0x12, 0x42, 0xf0, 0x3c, 0xab, 0x3a, - 0x9c, 0xd8, 0x43, 0xac, 0xad, 0xc3, 0x36, 0xa2, 0x3a, 0x94, 0x0c, 0x19, 0xf5, 0x10, 0x8a, 0x58, - 0x68, 0x20, 0x6f, 0xe7, 0x82, 0x9b, 0x19, 0x39, 0x9b, 0x79, 0xef, 0x24, 0xa3, 0x14, 0x3e, 0x9d, - 0x33, 0x95, 0xac, 0xf4, 0xa5, 0x46, 0x3a, 0x52, 0x23, 0x1d, 0x8c, 0xcc, 0xd4, 0xd0, 0xb0, 0x61, - 0xa7, 0x89, 0x73, 0x02, 0x38, 0xe3, 0xe8, 0x1d, 0xd7, 0xd2, 0xd7, 0xfa, 0x83, 0xc2, 0x17, 0xf0, - 0x69, 0x09, 0xcd, 0x68, 0xa0, 0xdf, 0x4f, 0x94, 0xcc, 0x76, 0xde, 0xe7, 0x70, 0x04, 0x49, 0x44, - 0x38, 0x13, 0x9e, 0xe1, 0x97, 0x3e, 0x7e, 0x25, 0x7d, 0x74, 0xe0, 0x1b, 0xc3, 0xcf, 0xfc, 0x40, - 0x85, 0xa1, 0xca, 0xa8, 0x24, 0x50, 0xbc, 0xd5, 0xd1, 0x80, 0xf8, 0x0f, 0x4f, 0x41, 0xf7, 0xdb, - 0x4c, 0x7b, 0xe2, 0x6e, 0xad, 0xd6, 0x76, 0xda, 0x57, 0x6b, 0x8a, 0xa6, 0x3c, 0x2b, 0xae, 0xd6, - 0x56, 0x0b, 0xab, 0xb5, 0x32, 0x1f, 0x64, 0x84, 0x4a, 0x77, 0x1d, 0xd2, 0x07, 0xfa, 0x0c, 0x1b, - 0x3d, 0xdc, 0x9b, 0xbd, 0x7e, 0x51, 0xef, 0xbe, 0x49, 0xdd, 0x3c, 0x88, 0x2c, 0x8b, 0x6b, 0xba, - 0x1f, 0xa3, 0x69, 0xe1, 0x98, 0x41, 0x2f, 0x5d, 0xd5, 0x55, 0x69, 0xca, 0xd3, 0x01, 0x5a, 0x24, - 0x97, 0x1b, 0xcd, 0xf9, 0x9b, 0x30, 0xb2, 0xd6, 0xc8, 0x8c, 0xf5, 0x66, 0x46, 0x4e, 0xd7, 0xd4, - 0x1a, 0xd8, 0xbe, 0xdf, 0xc6, 0xbe, 0x57, 0x36, 0xde, 0x77, 0x4c, 0x1f, 0x6d, 0x03, 0xa2, 0xa5, - 0x20, 0x6d, 0xcf, 0x6e, 0x15, 0xdc, 0xf9, 0x29, 0x2f, 0xa2, 0x93, 0x6b, 0x4f, 0x7b, 0x6a, 0xe8, - 0x63, 0xfe, 0x35, 0xba, 0x2d, 0xfd, 0x0f, 0x1e, 0xe4, 0x75, 0x6a, 0xfa, 0xed, 0x98, 0x62, 0x83, - 0x96, 0x29, 0xf6, 0x7e, 0xc7, 0x13, 0x26, 0x43, 0x06, 0xe1, 0x9a, 0x0a, 0xe6, 0x57, 0x7a, 0x3b, - 0x20, 0x72, 0xc1, 0x32, 0xcb, 0x1a, 0x2b, 0x38, 0xf4, 0x42, 0x20, 0x0f, 0x57, 0x18, 0x47, 0x73, - 0x78, 0xe9, 0x36, 0xdd, 0x7e, 0x3e, 0x1d, 0xcd, 0xe0, 0x98, 0xe0, 0xa7, 0x68, 0x36, 0x33, 0x26, - 0xdc, 0x84, 0x41, 0xb4, 0x48, 0xbe, 0x17, 0xfa, 0x4b, 0x0d, 0xf7, 0x86, 0xe9, 0x47, 0x6b, 0xaa, - 0x69, 0xc2, 0xb2, 0x6a, 0xfc, 0x34, 0x9a, 0x1e, 0x8e, 0x44, 0xd4, 0x78, 0x4d, 0x2d, 0xe5, 0x2d, - 0x39, 0x2b, 0x60, 0x65, 0xf2, 0x3d, 0x14, 0x97, 0x83, 0x1d, 0x99, 0xb1, 0xde, 0xd4, 0xd0, 0x48, - 0x4d, 0x6d, 0x90, 0xd5, 0xe1, 0x1f, 0xa3, 0x59, 0x61, 0x61, 0xc2, 0xa7, 0x52, 0xfe, 0xa4, 0xa6, - 0xac, 0x09, 0x58, 0x2a, 0xe4, 0xa5, 0x60, 0x19, 0xe8, 0xed, 0xdd, 0xe5, 0x77, 0x33, 0x9f, 0x5e, - 0x4c, 0x0d, 0x7d, 0x66, 0x4c, 0x1e, 0xdd, 0x83, 0xd9, 0x03, 0x63, 0xb0, 0x64, 0x0b, 0x5a, 0xda, - 0xe0, 0xc7, 0xc4, 0xc9, 0x98, 0x0c, 0x1a, 0x99, 0x8c, 0xe7, 0x02, 0x3e, 0xf5, 0xb1, 0x16, 0xca, - 0x5e, 0x32, 0x25, 0xaf, 0x44, 0x53, 0x9a, 0xd5, 0x66, 0x3a, 0x1f, 0x43, 0x8e, 0xdc, 0x66, 0xb5, - 0x59, 0xc6, 0x1c, 0x79, 0xfd, 0xf2, 0x49, 0x06, 0xdf, 0xac, 0x36, 0xe3, 0xa7, 0xc4, 0x39, 0x98, - 0x64, 0xc6, 0x25, 0x73, 0xf0, 0x03, 0x00, 0xdf, 0xc8, 0x3a, 0x17, 0x31, 0x5c, 0x05, 0xd3, 0xf2, - 0x6a, 0x34, 0xa5, 0x35, 0x56, 0x4f, 0xe7, 0x64, 0xc2, 0x2a, 0xe3, 0xb7, 0x3c, 0x9f, 0x3e, 0x1a, - 0x21, 0x17, 0xa6, 0x99, 0xbe, 0xf6, 0x1d, 0xb5, 0x55, 0xbe, 0x9a, 0xea, 0xa0, 0x51, 0x67, 0x28, - 0x2a, 0xb5, 0x1f, 0xc5, 0x4c, 0x51, 0x9f, 0xe7, 0xf6, 0x63, 0xad, 0xd8, 0x50, 0xef, 0x1a, 0xd6, - 0xcf, 0x9e, 0xe5, 0xe9, 0xf5, 0xf4, 0x5b, 0xb7, 0xf5, 0x9b, 0x67, 0xee, 0x8c, 0x76, 0xa5, 0x6f, - 0x5e, 0xd5, 0x4f, 0x5f, 0x33, 0xb0, 0x79, 0xeb, 0x9c, 0x7e, 0xf3, 0x4c, 0xe6, 0x72, 0x27, 0x37, - 0x33, 0xcf, 0xa2, 0x19, 0x74, 0x38, 0x5a, 0xd7, 0xc2, 0xe6, 0x16, 0xc6, 0xde, 0x2c, 0x95, 0xe7, - 0xc1, 0x27, 0xc2, 0xb1, 0xd6, 0xb5, 0xa0, 0xfb, 0x41, 0xb3, 0x12, 0xaf, 0xe7, 0xd7, 0x55, 0x88, - 0xa5, 0xc2, 0x0e, 0xf0, 0xeb, 0x2a, 0x1f, 0x7b, 0xf0, 0xc3, 0x2f, 0xad, 0x72, 0xc7, 0x8c, 0xdd, - 0x61, 0xad, 0xa3, 0x1b, 0xcc, 0x99, 0x66, 0x62, 0x76, 0xd8, 0x60, 0x2e, 0xc9, 0xe9, 0x22, 0xb7, - 0x03, 0xd8, 0x4d, 0x3e, 0x2f, 0x5c, 0x66, 0xcd, 0x62, 0x7b, 0xc9, 0x87, 0x02, 0xbc, 0x90, 0xf1, - 0x37, 0xf7, 0x2a, 0xcc, 0xbc, 0xd2, 0x6a, 0x40, 0x73, 0xeb, 0xcd, 0x73, 0x34, 0x43, 0x27, 0xc8, - 0x3b, 0xd0, 0xe2, 0xca, 0x0a, 0x4d, 0x79, 0x32, 0x90, 0x5b, 0x27, 0x2f, 0x05, 0xa7, 0x0a, 0x63, - 0x91, 0x30, 0x78, 0x21, 0x35, 0xdc, 0x6b, 0x6c, 0x99, 0xce, 0xf6, 0xa4, 0x86, 0x3e, 0x06, 0x5b, - 0x4e, 0xa3, 0x3c, 0xe4, 0x36, 0xab, 0x30, 0x2c, 0x38, 0xfa, 0x5e, 0x60, 0x26, 0x3d, 0x0b, 0x26, - 0x5d, 0xad, 0x80, 0xc3, 0x2c, 0xaa, 0x63, 0x4c, 0x6e, 0xe8, 0xa4, 0x27, 0x28, 0xb2, 0x7e, 0xf5, - 0x78, 0xe6, 0xc3, 0x61, 0xff, 0x25, 0xe1, 0x5c, 0x58, 0x01, 0x63, 0x7e, 0x37, 0x0f, 0x15, 0xfe, - 0xa9, 0xa7, 0x29, 0x76, 0xad, 0x9a, 0x87, 0x66, 0x21, 0xef, 0x27, 0x74, 0x45, 0xe7, 0xf3, 0x71, - 0xe1, 0xb8, 0xd8, 0xd2, 0xea, 0xdb, 0x31, 0x8b, 0xbc, 0x62, 0xf1, 0xff, 0x70, 0xbe, 0xa7, 0x10, - 0xc8, 0x9a, 0xcc, 0x64, 0x52, 0xab, 0x29, 0x5b, 0xd0, 0xa6, 0x40, 0x3e, 0xee, 0x88, 0xb3, 0x89, - 0xc0, 0x54, 0xb7, 0xd9, 0xa4, 0x57, 0xa2, 0x37, 0xb6, 0x42, 0x57, 0xf8, 0x0d, 0x34, 0x35, 0x69, - 0x6e, 0xde, 0xc2, 0x9a, 0xb2, 0x2b, 0x40, 0x0a, 0xe4, 0x3f, 0xcc, 0xe9, 0xb5, 0x14, 0xdc, 0x45, - 0x68, 0x51, 0x5f, 0x3b, 0x2c, 0x35, 0x78, 0xb2, 0xd0, 0x6d, 0xdb, 0x95, 0xad, 0xd5, 0x4a, 0xb0, - 0xda, 0xd8, 0x91, 0x9f, 0x3b, 0xa4, 0x1f, 0x3a, 0x08, 0xe0, 0x77, 0x46, 0xbb, 0x36, 0xaf, 0xdf, - 0xa8, 0x54, 0xbd, 0x92, 0x1a, 0x1a, 0x4e, 0x8d, 0x9e, 0x33, 0x16, 0xb5, 0xa4, 0x7c, 0x79, 0x90, - 0x7c, 0xc5, 0x3f, 0xe6, 0x41, 0x3e, 0x46, 0x61, 0x65, 0x28, 0xd2, 0xf0, 0x6a, 0xb8, 0x21, 0xb9, - 0xbb, 0x36, 0x54, 0xbf, 0x27, 0xd4, 0xf8, 0x95, 0x97, 0x75, 0x92, 0xa9, 0x2f, 0xcf, 0xe4, 0xe8, - 0xcb, 0xc3, 0xf9, 0xf4, 0x85, 0xaf, 0x8f, 0x7e, 0x5b, 0x6a, 0x43, 0x2d, 0xcd, 0x84, 0x0c, 0x60, - 0x3b, 0x74, 0xe3, 0x63, 0x1d, 0x57, 0x53, 0xc3, 0x9f, 0xe8, 0x43, 0x17, 0xf5, 0x81, 0x31, 0xbd, - 0xab, 0xc3, 0xff, 0xdf, 0x3c, 0xe8, 0xa1, 0x3c, 0xcd, 0xbf, 0x1d, 0x5a, 0x54, 0x6f, 0x59, 0x8b, - 0x2d, 0xcd, 0xd5, 0xa2, 0x5c, 0xba, 0x5c, 0x6e, 0xfc, 0xec, 0xdc, 0xa1, 0x29, 0x56, 0x41, 0x9f, - 0xa8, 0x5b, 0xee, 0xc4, 0xdc, 0x72, 0xe7, 0xb6, 0x5d, 0xa5, 0x34, 0x09, 0xdd, 0xe7, 0x84, 0x1e, - 0x9e, 0x83, 0x3c, 0xe1, 0x06, 0x7a, 0xd8, 0xee, 0x09, 0x37, 0x60, 0x8c, 0xa6, 0x46, 0xf8, 0x51, - 0x47, 0x90, 0xfc, 0x8d, 0x7d, 0x68, 0x66, 0x44, 0x4d, 0xbe, 0x1a, 0x8d, 0xef, 0x31, 0x57, 0x56, - 0x41, 0xb1, 0x48, 0x38, 0xd2, 0x9e, 0x6a, 0x39, 0xd2, 0x7e, 0x00, 0xcd, 0xa8, 0x63, 0x5f, 0x25, - 0x0b, 0xa2, 0xa2, 0xa0, 0x59, 0xe0, 0x1f, 0x9a, 0x82, 0x16, 0xf2, 0x25, 0xe8, 0x8b, 0x89, 0x9a, - 0xe6, 0x50, 0xe3, 0xb7, 0xf1, 0x3c, 0xfb, 0xa6, 0x64, 0xf3, 0x2e, 0x84, 0x53, 0x47, 0xe1, 0xa4, - 0xa0, 0x53, 0x1a, 0x3f, 0x7e, 0x5a, 0x3f, 0xd0, 0xcd, 0x8f, 0x2b, 0x61, 0xe9, 0x31, 0xde, 0xd6, - 0xa9, 0xb7, 0x8d, 0x56, 0xf8, 0x6a, 0x5f, 0xae, 0xdc, 0x5c, 0x53, 0xb5, 0xb3, 0x66, 0x8b, 0xb2, - 0x71, 0x7d, 0xa9, 0xde, 0xf1, 0xa9, 0xde, 0x71, 0x15, 0xe0, 0x97, 0x97, 0xd5, 0x06, 0x6b, 0x76, - 0x28, 0xdb, 0xd7, 0xd3, 0x3a, 0xd8, 0x3d, 0xb1, 0xba, 0x6d, 0xdf, 0x57, 0x82, 0xeb, 0xab, 0x79, - 0x33, 0x43, 0x06, 0x58, 0xd5, 0x16, 0x25, 0xb8, 0x69, 0xfd, 0x76, 0x56, 0x35, 0xf4, 0xa6, 0x7e, - 0x7a, 0x98, 0x56, 0x09, 0x87, 0xa3, 0xcc, 0xcb, 0xc8, 0x65, 0x10, 0xf8, 0x81, 0x9b, 0xe0, 0xdd, - 0x41, 0xf7, 0x54, 0xff, 0xde, 0x83, 0x4a, 0xec, 0xad, 0xbe, 0x1d, 0x5a, 0xfc, 0x82, 0x45, 0x8b, - 0x17, 0xe6, 0x6a, 0x31, 0xa5, 0xa6, 0xb0, 0xf3, 0xca, 0x1d, 0x9a, 0xb2, 0x0d, 0xbd, 0x14, 0x70, - 0xe5, 0x85, 0xbc, 0xd4, 0xce, 0x42, 0x18, 0x87, 0xfc, 0x1b, 0xaa, 0xe3, 0x45, 0x68, 0x3a, 0xed, - 0x0a, 0xaf, 0x46, 0xd3, 0xc3, 0xc6, 0x1f, 0x5c, 0x15, 0x16, 0x12, 0x55, 0xa0, 0x65, 0xf2, 0x0c, - 0xe8, 0xcf, 0x58, 0xe1, 0xb3, 0x32, 0xbc, 0x12, 0x15, 0x85, 0x9a, 0xc2, 0xa1, 0x04, 0xe5, 0x27, - 0x71, 0xfb, 0x82, 0x12, 0x79, 0x16, 0xfb, 0xfc, 0x27, 0x7a, 0xcf, 0xd1, 0x20, 0x14, 0x1a, 0x23, - 0x16, 0x8a, 0xd7, 0xef, 0xa6, 0x82, 0x0f, 0x23, 0x66, 0x14, 0xc8, 0x73, 0x01, 0xba, 0xaa, 0xf6, - 0xe5, 0xf4, 0x99, 0x1b, 0xe9, 0x33, 0xed, 0x41, 0x52, 0x8c, 0x83, 0x68, 0x6e, 0x34, 0x51, 0xd5, - 0x92, 0x48, 0x46, 0x9b, 0xc3, 0xaf, 0xc3, 0x7e, 0x0b, 0x04, 0x9f, 0x38, 0x0b, 0xe7, 0xd6, 0xc9, - 0x58, 0x1f, 0xe8, 0xd3, 0x0f, 0xdf, 0xa0, 0x87, 0x45, 0x70, 0xc2, 0x9a, 0x0b, 0x84, 0x9f, 0x44, - 0xd3, 0xa2, 0x09, 0xb2, 0xe8, 0x2e, 0x32, 0xf7, 0x33, 0xb4, 0x88, 0x5d, 0x23, 0x52, 0x19, 0x84, - 0xf5, 0x36, 0xad, 0xc3, 0x35, 0x08, 0x25, 0xd4, 0x78, 0x58, 0x85, 0xc6, 0xd3, 0xcc, 0x45, 0xbf, - 0x50, 0x2c, 0x97, 0x88, 0x1d, 0xc0, 0x71, 0x2b, 0xf3, 0xdc, 0x34, 0xa1, 0xb0, 0x92, 0x73, 0xce, - 0x49, 0xba, 0x61, 0xe7, 0x9c, 0x0f, 0x00, 0x2f, 0xe0, 0x9c, 0xb3, 0xc2, 0xb7, 0xf5, 0xc5, 0xe0, - 0x16, 0x65, 0x73, 0x29, 0xbc, 0x57, 0x33, 0x53, 0x79, 0x5b, 0xac, 0x41, 0xf1, 0xb7, 0xc9, 0x1a, - 0xf8, 0x35, 0xe5, 0x41, 0xb4, 0x38, 0xc0, 0xe4, 0xce, 0xca, 0x73, 0x00, 0xf7, 0xff, 0x27, 0xd1, - 0x64, 0x6f, 0x6b, 0xa9, 0x8b, 0xa8, 0xc9, 0xbb, 0x76, 0xa8, 0xf5, 0xb5, 0x5d, 0x99, 0xf0, 0x06, - 0x54, 0xd4, 0x1a, 0xab, 0xaf, 0xa9, 0xa6, 0xc2, 0x4b, 0x1e, 0x49, 0x43, 0x89, 0xbc, 0x14, 0x52, - 0xa0, 0x53, 0xed, 0x25, 0x2b, 0xa5, 0xd6, 0x58, 0x7d, 0xa6, 0xaf, 0x5d, 0xbf, 0xdc, 0x93, 0x19, - 0xeb, 0xa5, 0x33, 0x36, 0x00, 0xe3, 0xcd, 0x74, 0xc3, 0x59, 0x64, 0xde, 0xe6, 0xc1, 0x86, 0x73, - 0x85, 0x6b, 0x2f, 0x7c, 0xef, 0x28, 0x76, 0x07, 0xfb, 0xcf, 0x0d, 0xa8, 0x38, 0x41, 0x38, 0x5b, - 0x53, 0x4d, 0xa5, 0x39, 0xa0, 0x29, 0xcb, 0x02, 0xbc, 0x90, 0xad, 0xa6, 0xa1, 0x3f, 0x28, 0xe5, - 0x88, 0x05, 0x39, 0x58, 0xc5, 0xf3, 0x9a, 0xb2, 0x0e, 0x3d, 0x13, 0xc0, 0xc6, 0x78, 0x59, 0x87, - 0x4a, 0x7e, 0xc4, 0x5c, 0x39, 0x08, 0xdf, 0x2f, 0x1b, 0x6f, 0x7b, 0x73, 0xbc, 0xe3, 0x68, 0x6a, - 0xe8, 0xa8, 0xde, 0xd3, 0x95, 0x1a, 0xee, 0xf5, 0xff, 0x8d, 0x68, 0xe5, 0x79, 0x17, 0xdf, 0x0e, - 0x2b, 0xff, 0xb2, 0xc5, 0xca, 0x2f, 0xc8, 0xb5, 0xf2, 0x40, 0x8d, 0xab, 0x3f, 0x96, 0xc8, 0x16, - 0x27, 0x57, 0x99, 0x7b, 0x2d, 0x4c, 0xb5, 0xae, 0xc7, 0xc4, 0xb6, 0x6e, 0xf6, 0xfd, 0xf2, 0x54, - 0x34, 0x0d, 0x9a, 0xe3, 0x65, 0x4c, 0x08, 0x41, 0x69, 0xee, 0xd1, 0x94, 0x39, 0x4c, 0x08, 0xe1, - 0x3f, 0x26, 0x65, 0x8f, 0x0b, 0x72, 0xe1, 0x31, 0x27, 0x02, 0x53, 0x2e, 0x8a, 0xe1, 0xcb, 0x35, - 0xd5, 0xa6, 0x10, 0xe0, 0x75, 0x08, 0xc1, 0xdf, 0x82, 0x6f, 0x2e, 0xdc, 0x42, 0x99, 0xc5, 0xf2, - 0x2c, 0x8a, 0x32, 0x33, 0x88, 0xbc, 0x06, 0x3f, 0x8b, 0x66, 0xd4, 0x87, 0x1b, 0xe2, 0xc1, 0x50, - 0xc4, 0xea, 0x0e, 0x63, 0x96, 0xca, 0xf3, 0xa0, 0xb1, 0xaf, 0xa6, 0xb6, 0x75, 0x8d, 0xaf, 0xaa, - 0xa6, 0x3a, 0x18, 0x34, 0x2b, 0xf1, 0x0b, 0x68, 0x76, 0x38, 0xd6, 0xba, 0xb6, 0x8a, 0xf7, 0x51, - 0x64, 0x1e, 0xa8, 0x58, 0x6b, 0xc4, 0x7e, 0xd6, 0x42, 0x3f, 0x56, 0x00, 0xee, 0x9a, 0x3c, 0xcd, - 0x44, 0x03, 0xb4, 0x6c, 0x3e, 0xb4, 0x4c, 0x77, 0xb6, 0xe9, 0xa7, 0xfb, 0xcd, 0x5b, 0x1c, 0xd0, - 0x26, 0x15, 0x2d, 0x0c, 0xb5, 0x86, 0xc2, 0x4d, 0xa1, 0xba, 0x26, 0xb5, 0xa6, 0x56, 0x69, 0x68, - 0x88, 0xab, 0x89, 0x04, 0x84, 0x67, 0x33, 0x6c, 0xfc, 0x54, 0xb8, 0x53, 0x72, 0x83, 0x91, 0x67, - 0xeb, 0x9d, 0x1f, 0xa5, 0xc6, 0x4e, 0xf9, 0x6a, 0x6a, 0x7d, 0xe9, 0xe3, 0x57, 0x82, 0x6e, 0x70, - 0x96, 0x43, 0xa3, 0x62, 0xc7, 0x43, 0x23, 0x67, 0x24, 0x39, 0x40, 0x85, 0xb1, 0xdc, 0x44, 0x0b, - 0x02, 0x54, 0x2c, 0xd8, 0x98, 0xd0, 0x9b, 0xe2, 0x4f, 0x44, 0x4f, 0xc9, 0x6d, 0x6a, 0x7d, 0x4b, - 0x3c, 0x9c, 0xdc, 0xbb, 0x31, 0x1e, 0x6d, 0x89, 0xdd, 0x35, 0xf3, 0xfb, 0x33, 0xbb, 0xf9, 0xad, - 0xd4, 0x94, 0xe7, 0x44, 0xf3, 0x2b, 0x0b, 0xe6, 0xb7, 0x74, 0xfc, 0xfd, 0x33, 0xfa, 0xed, 0x8e, - 0xd4, 0xe8, 0xb9, 0x32, 0xbd, 0x63, 0x54, 0x1f, 0xb8, 0x95, 0xf9, 0xf0, 0x0b, 0xbd, 0x6b, 0x38, - 0xd3, 0x79, 0x58, 0xd7, 0xba, 0xc0, 0x61, 0x20, 0xd3, 0x79, 0x78, 0xb9, 0xb8, 0xed, 0x7c, 0x52, - 0x53, 0xd6, 0x20, 0x19, 0xce, 0xfd, 0x1d, 0x69, 0x66, 0x87, 0x35, 0xfa, 0x40, 0xa7, 0xde, 0xd1, - 0x9f, 0x19, 0x69, 0xa7, 0xab, 0xd3, 0x5f, 0x7b, 0xd0, 0x83, 0xae, 0xdc, 0xfa, 0x76, 0x98, 0xaf, - 0x5a, 0x8b, 0xf9, 0x5a, 0x6c, 0x33, 0x5f, 0x22, 0x51, 0x85, 0x2d, 0x55, 0xc5, 0x43, 0x7f, 0x67, - 0x9e, 0xf0, 0x6b, 0x14, 0x2b, 0x3b, 0xdd, 0x6c, 0x58, 0x9f, 0x07, 0x11, 0x33, 0xb8, 0x49, 0xdd, - 0x5b, 0x1b, 0x0a, 0xc7, 0xbf, 0xc3, 0x82, 0xb8, 0x5a, 0x53, 0x56, 0xa2, 0xb2, 0x80, 0x13, 0xb5, - 0x5c, 0x04, 0x07, 0x0f, 0x8e, 0x6b, 0x17, 0xf4, 0x41, 0x76, 0xe9, 0xf4, 0xa7, 0x1e, 0x74, 0x9f, - 0x15, 0xfc, 0x3b, 0xb1, 0x39, 0xa2, 0xe4, 0x4c, 0xde, 0x99, 0x23, 0x97, 0x0f, 0x7c, 0xb2, 0x04, - 0xbe, 0xe5, 0x15, 0xb4, 0x7f, 0x2b, 0xa1, 0xe9, 0xb4, 0x3d, 0x0e, 0xa0, 0xa2, 0x4d, 0xea, 0x5e, - 0x2e, 0x5a, 0xc4, 0x4d, 0x0b, 0x4a, 0xe4, 0x62, 0xe8, 0xcb, 0x98, 0x30, 0x49, 0x01, 0x5e, 0x43, - 0x9a, 0x09, 0x9e, 0x1b, 0x84, 0xdb, 0xac, 0x4c, 0x9e, 0x45, 0xbf, 0x0d, 0xb3, 0x1e, 0x2b, 0xc6, - 0x1b, 0xd0, 0xcc, 0x06, 0xdb, 0xb3, 0x0c, 0x62, 0xcc, 0xc5, 0x72, 0x19, 0x43, 0x6b, 0xcb, 0x7b, - 0x0c, 0x11, 0x80, 0xbd, 0xe1, 0x62, 0x98, 0xcb, 0x73, 0xb9, 0x88, 0x50, 0x9b, 0xde, 0x8b, 0x60, - 0x75, 0x25, 0xba, 0x41, 0x72, 0x25, 0xfa, 0x4b, 0xc9, 0xd1, 0x77, 0xf6, 0x63, 0x49, 0x53, 0x1a, - 0x72, 0x9c, 0x67, 0xb7, 0x8b, 0xce, 0xb3, 0x65, 0xc2, 0x3e, 0x82, 0x8e, 0x5d, 0x99, 0x8f, 0x85, - 0xc4, 0x08, 0x47, 0x1a, 0xa3, 0x04, 0xb9, 0x32, 0x1f, 0x51, 0x39, 0xfa, 0x5f, 0x6b, 0xac, 0xbe, - 0xcc, 0x17, 0x89, 0x36, 0xa8, 0x8d, 0x86, 0x39, 0x28, 0xf3, 0x25, 0x43, 0x89, 0x3d, 0xbf, 0xa9, - 0x7c, 0x3e, 0xfe, 0xac, 0xa1, 0x99, 0xe0, 0x67, 0x7e, 0x8f, 0xad, 0x8b, 0x60, 0x11, 0xdc, 0x47, - 0x14, 0xb3, 0x2e, 0x82, 0x33, 0x78, 0x17, 0xc1, 0xa9, 0x46, 0x17, 0xdf, 0x9c, 0x1f, 0xef, 0x0f, - 0xd0, 0x0c, 0x12, 0x07, 0x8e, 0x38, 0x63, 0x4e, 0x21, 0xb3, 0xf6, 0xd3, 0x9a, 0x52, 0x1e, 0x30, - 0x4b, 0x65, 0x3f, 0x44, 0x58, 0xe6, 0x61, 0xdf, 0x36, 0x6e, 0xd9, 0xee, 0x83, 0x1f, 0xe9, 0xc3, - 0xd7, 0xee, 0x8c, 0x76, 0x91, 0xd8, 0x58, 0x53, 0x65, 0x8f, 0xef, 0x0f, 0x82, 0x66, 0x2b, 0xfc, - 0x12, 0x9a, 0xae, 0x46, 0x20, 0x72, 0xf2, 0x54, 0xd2, 0x2d, 0xc9, 0x27, 0xc5, 0xca, 0x64, 0xbf, - 0xa1, 0x1c, 0xef, 0x9f, 0x2d, 0xa4, 0x53, 0xd6, 0x06, 0x3f, 0x81, 0x8a, 0x9a, 0xc2, 0xcd, 0xe1, - 0x24, 0xbd, 0xff, 0x7b, 0x90, 0x6c, 0xbd, 0x49, 0x89, 0x3c, 0x2b, 0x3d, 0xd8, 0x3d, 0x7e, 0xfe, - 0x73, 0x16, 0xc5, 0x75, 0x6a, 0xc0, 0x68, 0x08, 0x75, 0xb8, 0x0c, 0x4d, 0x8d, 0x19, 0x3a, 0x0e, - 0xb7, 0x80, 0x25, 0xc6, 0x22, 0x90, 0x14, 0xc8, 0xd3, 0xc6, 0xcf, 0x7f, 0x9e, 0x39, 0xb7, 0x9f, - 0x81, 0x93, 0x42, 0x5c, 0x85, 0xa6, 0x25, 0xc2, 0xcd, 0xb1, 0x26, 0x16, 0x1f, 0x98, 0xac, 0x61, - 0x68, 0x91, 0xbc, 0x44, 0xef, 0xfe, 0x18, 0xee, 0x77, 0x7c, 0x51, 0x51, 0xb4, 0x7c, 0xcc, 0x6e, - 0x02, 0x1c, 0x6e, 0x93, 0x10, 0x02, 0x07, 0xd9, 0xad, 0x2d, 0x4d, 0x4d, 0x34, 0xb8, 0x2f, 0xc9, - 0x22, 0x2e, 0x14, 0xcb, 0x2f, 0x0a, 0x19, 0xf1, 0xca, 0x60, 0x3b, 0x03, 0xb5, 0x70, 0x67, 0xc6, - 0xa3, 0xab, 0x3c, 0xe3, 0xd3, 0xc7, 0xde, 0xa1, 0xd1, 0x72, 0xd3, 0xef, 0xde, 0x20, 0x39, 0x0e, - 0x9c, 0xa0, 0x83, 0x42, 0xe7, 0xf8, 0xa7, 0xa2, 0x1b, 0xed, 0x0c, 0xd3, 0xd3, 0x45, 0x70, 0x60, - 0x2e, 0xe7, 0x81, 0x1c, 0x33, 0x1f, 0x0d, 0x97, 0xf9, 0xa0, 0x4f, 0xfa, 0xd0, 0x67, 0xe4, 0x3a, - 0x0d, 0xf9, 0x07, 0xce, 0xc9, 0xc4, 0xbb, 0x58, 0xf4, 0xc3, 0xfd, 0xa9, 0xe8, 0x6a, 0x89, 0x84, - 0xee, 0x4d, 0x57, 0x4b, 0xe7, 0xee, 0x89, 0xfb, 0xa5, 0x4b, 0xf7, 0xa6, 0xc7, 0xe5, 0x7a, 0x7e, - 0x5a, 0x30, 0x53, 0xb8, 0xae, 0xa4, 0xa7, 0x05, 0x3e, 0x6b, 0xc7, 0xe0, 0x6c, 0x0e, 0x67, 0x07, - 0x99, 0xcb, 0xef, 0x8d, 0xb7, 0x75, 0xf2, 0x13, 0x83, 0x4d, 0x82, 0xdf, 0xef, 0x2c, 0xf6, 0xf4, - 0xbf, 0x2c, 0xc0, 0x0b, 0x5d, 0xba, 0x22, 0xea, 0x4e, 0xbb, 0xe2, 0xb0, 0x78, 0x2d, 0xf2, 0xb4, - 0xca, 0xf4, 0xb6, 0x91, 0xdc, 0x25, 0x7b, 0x5a, 0x65, 0x79, 0x31, 0x5c, 0x30, 0x82, 0x43, 0x66, - 0xab, 0x4c, 0xee, 0x17, 0x0d, 0xe3, 0x4b, 0xdf, 0x7d, 0x79, 0x5a, 0x65, 0x5c, 0xcd, 0x1d, 0x38, - 0x20, 0xba, 0x6c, 0x99, 0xa6, 0x2c, 0xe7, 0x0e, 0x1c, 0x0f, 0x5a, 0xdc, 0x33, 0xa0, 0x10, 0x38, - 0x05, 0xb8, 0x70, 0x4f, 0x0d, 0x83, 0xbb, 0xa8, 0x22, 0xe0, 0x6a, 0xd6, 0xd8, 0x26, 0x4b, 0x74, - 0x0a, 0x87, 0xf7, 0x18, 0x10, 0x8b, 0xca, 0x7f, 0xc2, 0x03, 0x6e, 0x33, 0x39, 0x8d, 0xbf, 0x1d, - 0x73, 0xe7, 0x8f, 0x2c, 0x97, 0x6c, 0x2b, 0x72, 0xe7, 0x4e, 0x57, 0xba, 0xaa, 0x43, 0xc9, 0x10, - 0xec, 0xe5, 0x60, 0x46, 0xa5, 0xbd, 0x83, 0xef, 0x12, 0xcd, 0xfb, 0x3b, 0x28, 0x81, 0xab, 0xa8, - 0x6b, 0x07, 0x78, 0x0d, 0x2a, 0x22, 0xeb, 0x15, 0xca, 0x1d, 0xf0, 0x71, 0x23, 0x25, 0x56, 0x27, - 0x7c, 0x30, 0x3f, 0x41, 0xa8, 0xc2, 0x3f, 0x44, 0xd3, 0x01, 0xfb, 0x44, 0x89, 0x87, 0x4c, 0xf9, - 0x7e, 0xdb, 0x79, 0xa8, 0xf0, 0xc5, 0x6a, 0x35, 0x19, 0x0a, 0x37, 0xd1, 0x79, 0x94, 0xb6, 0xcb, - 0x41, 0x97, 0x15, 0xfb, 0xc7, 0xa6, 0x22, 0x6c, 0x6f, 0xfb, 0xcd, 0xbc, 0x09, 0xa9, 0x70, 0x98, - 0x4b, 0x08, 0x52, 0xe2, 0x5c, 0x32, 0x03, 0x3a, 0xf0, 0xe5, 0x4c, 0x26, 0xeb, 0x72, 0x1e, 0x85, - 0x80, 0xc7, 0x24, 0x7d, 0x14, 0x52, 0x02, 0x02, 0xed, 0x73, 0x70, 0x2e, 0xa0, 0x6f, 0x09, 0xd6, - 0xe4, 0x3e, 0x0f, 0x01, 0x66, 0x30, 0x99, 0x9a, 0xf5, 0xd5, 0x1f, 0x86, 0x64, 0xdb, 0x3a, 0x26, - 0xfb, 0x30, 0xa4, 0xbb, 0x37, 0x73, 0xec, 0xac, 0xc3, 0xc3, 0x90, 0x1d, 0x88, 0xcc, 0xc0, 0x34, - 0xe7, 0xeb, 0x7d, 0xb9, 0x43, 0xba, 0x3d, 0x94, 0xd8, 0x03, 0x1a, 0x4e, 0xc0, 0xe4, 0x87, 0x80, - 0xea, 0xec, 0xe0, 0xc5, 0xcc, 0xc8, 0x41, 0xbb, 0xb7, 0x09, 0x71, 0x8d, 0x30, 0x00, 0x89, 0x33, - 0x2c, 0x33, 0x55, 0xc5, 0xa2, 0x33, 0x2c, 0x33, 0x55, 0xb3, 0x44, 0xe3, 0x24, 0x98, 0xa5, 0xd5, - 0xd6, 0x37, 0x0f, 0x54, 0x9b, 0xa8, 0xa9, 0x9c, 0x25, 0x1a, 0x47, 0x66, 0x16, 0xfd, 0x67, 0x3d, - 0x68, 0xb6, 0x65, 0x9f, 0x82, 0x37, 0xa1, 0xb9, 0x09, 0xb1, 0x80, 0xaf, 0x02, 0xc9, 0xdb, 0xd6, - 0xdc, 0x3a, 0x79, 0x26, 0xdf, 0xc7, 0xd4, 0x54, 0x07, 0x73, 0x6b, 0xf1, 0xcb, 0xe8, 0x1e, 0x4b, - 0x91, 0xb0, 0x4c, 0x24, 0x8f, 0x5f, 0xec, 0xb5, 0xf2, 0x5c, 0x73, 0x63, 0x04, 0x6b, 0x46, 0x3b, - 0x0c, 0xae, 0x72, 0x5a, 0x3d, 0x12, 0xfc, 0x2c, 0xab, 0x47, 0xb3, 0x2b, 0x58, 0x40, 0x5a, 0x97, - 0x8e, 0x86, 0x48, 0x22, 0x5f, 0xc0, 0x4a, 0xbe, 0xd0, 0x86, 0x2e, 0x20, 0x8f, 0x4b, 0xe8, 0xde, - 0xad, 0xd1, 0x06, 0x95, 0x6b, 0x19, 0xbc, 0x51, 0xc5, 0xcf, 0xa0, 0xa9, 0xbb, 0x42, 0xe1, 0xa6, - 0x12, 0x89, 0x28, 0xf4, 0xb2, 0xdc, 0xd1, 0x77, 0x68, 0x52, 0x13, 0xd9, 0x15, 0x0d, 0x92, 0x46, - 0x58, 0x41, 0xd3, 0x13, 0x2d, 0xf5, 0xf5, 0x6a, 0x82, 0x19, 0x84, 0x82, 0xdb, 0xb3, 0x76, 0xfe, - 0x17, 0xd1, 0x42, 0x17, 0x18, 0xec, 0x05, 0x37, 0x6c, 0xc2, 0x6c, 0xb8, 0x74, 0xe4, 0xbf, 0xc5, - 0x57, 0x3a, 0x1e, 0xcb, 0x2b, 0x1d, 0xff, 0xdf, 0x17, 0xa1, 0x79, 0xd5, 0xf1, 0x50, 0x38, 0x02, - 0x19, 0x41, 0x61, 0x85, 0xbc, 0x0f, 0x15, 0x53, 0xcf, 0xa1, 0x04, 0xa1, 0x74, 0x46, 0xe5, 0x4e, - 0x4d, 0xf9, 0x49, 0x80, 0x17, 0xca, 0xb5, 0xa2, 0xb7, 0x58, 0x4d, 0xad, 0xe9, 0xd9, 0xaf, 0xd1, - 0xa8, 0xe3, 0x30, 0x8a, 0xf4, 0x90, 0x6f, 0xb8, 0x6b, 0xbc, 0xad, 0x33, 0x35, 0xd4, 0x76, 0x67, - 0xb4, 0x0b, 0xe2, 0x50, 0xda, 0x61, 0x82, 0xbc, 0x6f, 0xbc, 0xc3, 0x1e, 0xe2, 0xe4, 0x29, 0x4d, - 0x59, 0x29, 0x2e, 0x5c, 0x1e, 0x8a, 0x45, 0x1b, 0xb2, 0xb7, 0xf7, 0x67, 0x2e, 0x8d, 0xe4, 0xb8, - 0x63, 0x71, 0x10, 0xb2, 0xff, 0xf5, 0x49, 0xe2, 0x8a, 0x25, 0x8e, 0x8a, 0x0c, 0x7e, 0x24, 0x4a, - 0xa6, 0x10, 0x8a, 0x7e, 0xa2, 0x29, 0xaf, 0x04, 0xa0, 0x84, 0x93, 0x23, 0x20, 0x64, 0x21, 0xc6, - 0x42, 0x66, 0x41, 0xe4, 0x40, 0xc7, 0xf8, 0x3e, 0x54, 0xb4, 0x8b, 0x44, 0xf0, 0x33, 0xec, 0x59, - 0x71, 0x10, 0x7e, 0xe0, 0x95, 0x08, 0x93, 0xa0, 0xe0, 0xb5, 0x6a, 0x3c, 0x1c, 0x6d, 0xd8, 0xa6, - 0xd6, 0x47, 0x23, 0x0d, 0x09, 0x7a, 0x87, 0xeb, 0x50, 0x83, 0x57, 0xa1, 0x7b, 0x21, 0x45, 0x82, - 0xd2, 0xd4, 0x64, 0x66, 0x49, 0x20, 0xa6, 0xab, 0x38, 0xe8, 0x54, 0x65, 0x8c, 0x77, 0x32, 0xdc, - 0xac, 0x46, 0x5b, 0xe0, 0x24, 0x6e, 0x76, 0x90, 0xfd, 0xc4, 0xa5, 0x68, 0x2e, 0x44, 0xf4, 0x25, - 0x99, 0x29, 0x8c, 0xd9, 0x0d, 0x56, 0xa7, 0xc1, 0xdc, 0x62, 0x43, 0x9e, 0x12, 0x6a, 0x93, 0x5a, - 0x9f, 0x8c, 0xc6, 0xe9, 0x6b, 0x2a, 0xfe, 0x1b, 0xfb, 0xd0, 0xcc, 0x98, 0x81, 0x1f, 0xad, 0x86, - 0x27, 0x55, 0x62, 0x11, 0xf9, 0x4e, 0x38, 0x11, 0xaa, 0x6b, 0x52, 0xd7, 0xb7, 0x86, 0xeb, 0x93, - 0xec, 0x89, 0x8b, 0xf1, 0x1d, 0x6b, 0x31, 0xfe, 0x3e, 0x7a, 0x30, 0xb1, 0x27, 0x1c, 0xfb, 0x41, - 0x28, 0x9c, 0xdc, 0x10, 0xa5, 0xd1, 0x81, 0xb7, 0x03, 0xb6, 0x8c, 0x35, 0x24, 0xfd, 0x40, 0x70, - 0x22, 0x30, 0xbc, 0x00, 0x4d, 0x6b, 0x88, 0xef, 0x0d, 0xb6, 0x44, 0x60, 0x91, 0x16, 0xa4, 0xbf, - 0xfc, 0xed, 0x1e, 0x74, 0x8f, 0x20, 0xe3, 0xdf, 0xb6, 0x53, 0x2a, 0x63, 0x9e, 0x79, 0xb8, 0x00, - 0x4b, 0x31, 0xd1, 0x3a, 0xa7, 0xd3, 0x83, 0xe6, 0x18, 0xcd, 0xcc, 0xb0, 0x2e, 0xf8, 0xd9, 0x5c, - 0x9b, 0x01, 0xd7, 0x3c, 0xbc, 0x50, 0x9e, 0x25, 0xca, 0x36, 0x53, 0x2a, 0xd3, 0xae, 0xbc, 0x8a, - 0x66, 0x8a, 0xc1, 0x68, 0xc0, 0xaa, 0x95, 0x3b, 0xe1, 0x6a, 0x7e, 0x74, 0xa5, 0x10, 0x56, 0x66, - 0x7d, 0x24, 0x19, 0xdf, 0x4b, 0x4f, 0x00, 0xc4, 0xb8, 0x34, 0xd4, 0xa1, 0x33, 0x7d, 0xad, 0x3f, - 0x7b, 0xe9, 0x03, 0x76, 0x02, 0x20, 0x00, 0x78, 0x9f, 0x45, 0xf3, 0x72, 0xbb, 0xc1, 0xf3, 0xd0, - 0x94, 0x3d, 0xea, 0x5e, 0x6a, 0xfb, 0x8c, 0x3f, 0x0d, 0xf5, 0x6b, 0x0d, 0x35, 0xb5, 0x30, 0xa3, - 0x07, 0x3f, 0x2a, 0x3c, 0x4f, 0x49, 0xfe, 0xff, 0x59, 0x42, 0x0f, 0x40, 0xdc, 0x21, 0x2b, 0x72, - 0xfc, 0x90, 0x60, 0x9b, 0x3d, 0x8a, 0xc5, 0x13, 0x9a, 0xf2, 0x98, 0x68, 0x85, 0x96, 0xd0, 0x30, - 0x61, 0x85, 0x9b, 0xa0, 0xad, 0xcc, 0x04, 0x01, 0xa3, 0x96, 0xe4, 0x67, 0x14, 0xbd, 0x5b, 0x06, - 0x13, 0x35, 0x4b, 0x74, 0x12, 0xa3, 0xe6, 0xc5, 0xff, 0x77, 0x1e, 0xb4, 0xd8, 0x85, 0x8a, 0x7f, - 0xa6, 0x42, 0x5e, 0xb1, 0x45, 0x53, 0x5e, 0x40, 0xdf, 0x0f, 0xe4, 0x67, 0x8b, 0xbc, 0x40, 0x1c, - 0x3a, 0x53, 0xae, 0xec, 0xe7, 0x63, 0x69, 0x09, 0xcd, 0x30, 0x3a, 0xd9, 0x1c, 0xaa, 0x53, 0x9b, - 0xbe, 0xb6, 0xba, 0xfc, 0x21, 0x9a, 0xd6, 0x64, 0x74, 0xc4, 0x04, 0xe0, 0x11, 0x27, 0x82, 0xc9, - 0xa7, 0x56, 0x92, 0x7f, 0xa9, 0x7e, 0xc0, 0x75, 0x3d, 0xb4, 0xe4, 0xaa, 0x71, 0xee, 0x50, 0xe6, - 0xf2, 0x17, 0xec, 0xd8, 0x01, 0xea, 0xbc, 0x4f, 0xa3, 0x99, 0x42, 0xbb, 0x49, 0x29, 0xc4, 0x2d, - 0x09, 0x2d, 0x34, 0x79, 0x06, 0xbd, 0x30, 0x5d, 0xa8, 0x61, 0x62, 0x2b, 0x39, 0x3b, 0xca, 0xf3, - 0x16, 0x13, 0x4a, 0xac, 0x55, 0xad, 0x3c, 0xdf, 0x8c, 0x5a, 0xf9, 0xff, 0xca, 0x83, 0x4a, 0xec, - 0xb8, 0xff, 0x73, 0xd5, 0x80, 0x2a, 0x4d, 0x79, 0x1e, 0x3d, 0x1b, 0x70, 0xe5, 0x88, 0x7c, 0x8f, - 0xc8, 0x60, 0x22, 0x39, 0x76, 0xb9, 0x7f, 0x8f, 0xca, 0xfd, 0xf6, 0x50, 0x38, 0x92, 0xfc, 0xda, - 0x72, 0xbf, 0xd5, 0xd8, 0x17, 0x86, 0x23, 0x7c, 0x23, 0x3c, 0xdf, 0xbe, 0x6b, 0x0a, 0x47, 0x92, - 0x54, 0xce, 0x01, 0x92, 0xcb, 0xf9, 0xd5, 0xf3, 0xdc, 0xdd, 0x3a, 0x48, 0xeb, 0x72, 0x84, 0x95, - 0x34, 0x9e, 0x94, 0xb0, 0xc2, 0xe7, 0xee, 0x8e, 0xb0, 0xfe, 0x1b, 0x8b, 0xb0, 0x32, 0xdc, 0xff, - 0xb9, 0x0a, 0x2b, 0x8d, 0xc1, 0xe2, 0xca, 0x11, 0x19, 0x8b, 0x0c, 0x86, 0xe1, 0xb7, 0x4b, 0xeb, - 0x73, 0x68, 0xf6, 0xf7, 0xd5, 0x50, 0x53, 0x72, 0x37, 0x15, 0x82, 0x8a, 0x95, 0x9a, 0xf2, 0x18, - 0x5a, 0x1e, 0xb0, 0x96, 0xca, 0x25, 0xfa, 0xfe, 0x0b, 0xfa, 0xf0, 0xcd, 0xf4, 0x07, 0x6d, 0xe9, - 0xb3, 0x17, 0xe0, 0xe5, 0x34, 0x8d, 0x58, 0x72, 0xd0, 0x83, 0xe6, 0x30, 0xd8, 0xbb, 0x30, 0x14, - 0x1b, 0xd0, 0x0c, 0x7e, 0xf9, 0x4d, 0xf7, 0xb5, 0xc4, 0xdb, 0xcb, 0x2c, 0x95, 0x4b, 0xc4, 0x01, - 0x29, 0x4d, 0xc6, 0x5b, 0xd4, 0x72, 0x72, 0x6e, 0xbc, 0x3c, 0x68, 0x02, 0x31, 0xb7, 0x94, 0x1c, - 0x52, 0x1c, 0xe9, 0x76, 0xb9, 0x0f, 0x3a, 0x2a, 0xc1, 0x21, 0x21, 0xcb, 0x89, 0xb0, 0xad, 0x7e, - 0xb7, 0xda, 0x1c, 0x62, 0xba, 0xb5, 0x32, 0xf7, 0xfa, 0x91, 0xdc, 0x11, 0xf1, 0xeb, 0xc7, 0x69, - 0xa9, 0xe1, 0x5e, 0xe2, 0x2b, 0x47, 0x0b, 0x18, 0x3e, 0xee, 0x3d, 0xca, 0x4b, 0xe0, 0xb4, 0x94, - 0x3e, 0x17, 0xec, 0x3f, 0x6f, 0xbe, 0x3e, 0x86, 0x81, 0xf9, 0x54, 0x42, 0x25, 0x1b, 0xd5, 0x6f, - 0x06, 0x1d, 0xfc, 0x98, 0xe8, 0x80, 0x4b, 0x25, 0x33, 0x02, 0xe6, 0x8b, 0x7c, 0x9f, 0xc5, 0x5d, - 0x33, 0xca, 0x2a, 0x1e, 0xd7, 0x94, 0x55, 0x68, 0x65, 0xc0, 0xf5, 0xeb, 0xec, 0x72, 0x4e, 0x44, - 0xdd, 0xff, 0xc7, 0x53, 0x90, 0xf7, 0xa5, 0x16, 0x35, 0xbe, 0xb7, 0x56, 0x8d, 0x37, 0x57, 0xee, - 0x55, 0xc8, 0x0e, 0xa7, 0xa6, 0x3a, 0xa8, 0xfe, 0x82, 0x6c, 0xa9, 0x9e, 0x42, 0x88, 0x1e, 0x71, - 0xef, 0x64, 0x9e, 0xc1, 0xf4, 0x9e, 0xc6, 0x2c, 0x96, 0x8b, 0xed, 0x01, 0x40, 0x1a, 0x8c, 0x96, - 0x54, 0xd9, 0x8c, 0x96, 0xe2, 0x0d, 0x8f, 0x59, 0x2c, 0x17, 0xdb, 0x23, 0x90, 0x34, 0xe0, 0xd5, - 0x94, 0x68, 0xc1, 0x3f, 0x05, 0x88, 0xc6, 0x7a, 0xef, 0x98, 0x41, 0xf1, 0x47, 0xc3, 0xe3, 0xef, - 0x5e, 0x17, 0x49, 0xc7, 0xcf, 0xa2, 0x99, 0x49, 0xb5, 0x39, 0xd6, 0x14, 0x4a, 0xaa, 0xc6, 0xd7, - 0xa6, 0x9a, 0x2d, 0xc5, 0x72, 0x79, 0x66, 0xba, 0xff, 0x7c, 0xfa, 0xfd, 0xdb, 0xe3, 0xef, 0x1d, - 0xac, 0xa9, 0x0e, 0x22, 0x56, 0x53, 0xd3, 0x80, 0x9f, 0x41, 0x88, 0x5e, 0xf0, 0x1a, 0xcd, 0x8b, - 0xcc, 0xfb, 0x66, 0xa1, 0x98, 0xf8, 0x8f, 0x81, 0x6b, 0xbc, 0xe8, 0xf2, 0x6b, 0x34, 0x2e, 0x86, - 0xab, 0x95, 0x68, 0x9c, 0x1e, 0xce, 0x91, 0x7b, 0x1e, 0x5e, 0x28, 0x1c, 0xe9, 0x31, 0x67, 0x7d, - 0x5e, 0xc7, 0xbc, 0xe9, 0xf3, 0x8c, 0x81, 0xbc, 0x04, 0x02, 0x5c, 0x82, 0x7c, 0x65, 0xfa, 0xda, - 0x53, 0x43, 0x6f, 0xa5, 0x86, 0x8e, 0xa4, 0x4f, 0xd0, 0x40, 0x03, 0xfe, 0x63, 0x1e, 0xb7, 0x21, - 0x24, 0x32, 0xf7, 0x34, 0x2a, 0x0e, 0xd1, 0x22, 0x3a, 0x80, 0x84, 0x31, 0xbc, 0x50, 0x9e, 0x03, - 0xfd, 0xb3, 0xdf, 0x41, 0x5e, 0x83, 0x77, 0xa3, 0xe2, 0x98, 0x1a, 0x6f, 0xde, 0x59, 0x9f, 0x7c, - 0x8d, 0x8c, 0xe0, 0x4c, 0x39, 0x90, 0x6b, 0x41, 0xdd, 0xf1, 0x86, 0x83, 0x2e, 0xde, 0x81, 0x8c, - 0x45, 0x32, 0xd8, 0xf9, 0xb0, 0x51, 0x5b, 0x95, 0x7c, 0xad, 0xe2, 0x25, 0x4d, 0xd9, 0x8a, 0x36, - 0x07, 0xf2, 0xd0, 0xc1, 0xee, 0x88, 0x69, 0xfc, 0x4f, 0xa1, 0xaf, 0x2f, 0x25, 0x8e, 0xf1, 0x97, - 0x12, 0xff, 0x9e, 0xbf, 0x57, 0x42, 0x45, 0x46, 0x4f, 0x09, 0xbc, 0x16, 0x15, 0x19, 0xa5, 0x6c, - 0x82, 0xb5, 0x3d, 0x78, 0x21, 0x50, 0xf0, 0x2f, 0x59, 0x86, 0x06, 0x01, 0xdc, 0x5b, 0x8b, 0x90, - 0x59, 0xe8, 0xb0, 0x36, 0x2d, 0x13, 0xd7, 0xa6, 0x33, 0xe5, 0x05, 0xb6, 0xa4, 0x20, 0x24, 0x1d, - 0x88, 0xb8, 0x66, 0xed, 0x95, 0xd0, 0x22, 0x47, 0x12, 0xbf, 0xa2, 0x09, 0xaf, 0xa4, 0xd3, 0x1b, - 0x20, 0x30, 0xdf, 0x91, 0x30, 0x87, 0x09, 0x8d, 0x4e, 0x92, 0xb0, 0xc9, 0xd6, 0x3c, 0x08, 0x55, - 0x45, 0x9b, 0x9b, 0x21, 0x90, 0xf0, 0xef, 0xfa, 0x84, 0x5e, 0x6d, 0x99, 0xd0, 0x17, 0xda, 0x58, - 0xbe, 0x2d, 0x19, 0x6f, 0xa9, 0x4f, 0x4e, 0x34, 0x89, 0xb3, 0x90, 0xaa, 0x26, 0xdd, 0xf2, 0xac, - 0xf1, 0xb6, 0xbe, 0xcc, 0x31, 0xea, 0x76, 0xe0, 0xff, 0xc0, 0x83, 0xe6, 0x40, 0x25, 0x9d, 0x09, - 0x7e, 0xe7, 0x19, 0xb3, 0xd1, 0xc2, 0x18, 0x7b, 0x46, 0x32, 0x83, 0x0e, 0x48, 0x4f, 0x33, 0x01, - 0x6f, 0x96, 0x6b, 0xca, 0xa3, 0x68, 0x69, 0x20, 0x87, 0x7c, 0x19, 0x03, 0x7f, 0x44, 0xe7, 0x0c, - 0xff, 0x66, 0x44, 0xfc, 0x49, 0x2b, 0x37, 0xd1, 0x40, 0x61, 0xb0, 0x94, 0x59, 0xab, 0x29, 0x8f, - 0xa3, 0xd5, 0x01, 0x87, 0x2a, 0x79, 0x91, 0xf9, 0xe8, 0x85, 0x3c, 0x28, 0xb5, 0xcc, 0x9c, 0x57, - 0xa7, 0xa0, 0xf9, 0xc4, 0x51, 0xab, 0x6a, 0x7b, 0x34, 0x16, 0x6d, 0x8a, 0x36, 0xee, 0x65, 0x26, - 0x6c, 0x87, 0xfd, 0x68, 0xe3, 0x29, 0xc3, 0xc4, 0x0a, 0xcb, 0xda, 0x62, 0x6b, 0x6e, 0x85, 0xa2, - 0x82, 0x72, 0x2b, 0x18, 0x26, 0x02, 0xc2, 0xe4, 0xc0, 0x08, 0xed, 0xd3, 0x94, 0xd7, 0x58, 0x98, - 0x9c, 0x68, 0x7d, 0x73, 0x43, 0x1d, 0x0b, 0x95, 0x53, 0x9a, 0x3e, 0xdb, 0x93, 0x1a, 0x7e, 0x8f, - 0xa7, 0x0e, 0xa1, 0x49, 0x43, 0x68, 0x10, 0x97, 0x1b, 0xa9, 0x91, 0x13, 0x0c, 0x32, 0xd3, 0xd7, - 0x9e, 0x3e, 0xf2, 0x4e, 0xba, 0xb3, 0x77, 0x39, 0xcb, 0xd9, 0x43, 0xcd, 0x56, 0x5f, 0x7b, 0xfa, - 0x24, 0x0d, 0x92, 0x0d, 0x81, 0xb3, 0xa0, 0x85, 0xde, 0x7b, 0x12, 0xe0, 0x59, 0x84, 0x9d, 0xdd, - 0x68, 0xe6, 0xae, 0x70, 0x13, 0x09, 0x11, 0xc8, 0xa2, 0x5b, 0xe7, 0x4f, 0x30, 0x47, 0xfc, 0x81, - 0xc5, 0x36, 0x72, 0x09, 0x8d, 0xcb, 0x7d, 0xb5, 0x3b, 0x7b, 0x6c, 0x0c, 0x12, 0x64, 0xa6, 0x4f, - 0x0f, 0xa7, 0xaf, 0x9e, 0x0b, 0x8a, 0x60, 0x15, 0x95, 0x9a, 0xf2, 0x1c, 0x5a, 0x17, 0x70, 0xe6, - 0xb9, 0xbc, 0x54, 0x8c, 0x09, 0x94, 0x1a, 0x1a, 0x31, 0x7a, 0x20, 0x09, 0x51, 0x00, 0x5d, 0x3a, - 0x66, 0x1f, 0x15, 0x91, 0xe4, 0x0e, 0x95, 0x7b, 0xb6, 0x45, 0x63, 0x89, 0xed, 0x74, 0x42, 0x05, - 0x99, 0x61, 0xb3, 0x0f, 0xaa, 0x6b, 0x49, 0x84, 0x23, 0x6a, 0x22, 0xc1, 0xc7, 0x0e, 0x96, 0x01, - 0x66, 0xb1, 0x5c, 0xcc, 0xb8, 0x17, 0x14, 0x4a, 0xf1, 0x1f, 0x0a, 0xf3, 0xaa, 0xc7, 0xf4, 0xe4, - 0x32, 0xe7, 0xd5, 0xc7, 0xb3, 0x83, 0x17, 0x60, 0x3a, 0xd0, 0x4f, 0xf7, 0xeb, 0x63, 0xef, 0xe8, - 0x9d, 0x47, 0x19, 0xba, 0x47, 0xd2, 0xa7, 0x3b, 0x61, 0x8e, 0x30, 0x18, 0x4f, 0x66, 0x7d, 0x76, - 0x6c, 0xcf, 0x9a, 0xe3, 0xd3, 0x12, 0x9a, 0xc3, 0xd6, 0x00, 0xdb, 0xc8, 0x72, 0x89, 0x2e, 0x39, - 0x92, 0x9a, 0xf2, 0xc3, 0x40, 0x4e, 0x95, 0xbc, 0x01, 0x7a, 0x49, 0xbf, 0x7f, 0x21, 0x3d, 0xdc, - 0x53, 0xe6, 0x63, 0x78, 0xa6, 0x0f, 0x9f, 0xc8, 0xb6, 0x75, 0xd4, 0x13, 0x5d, 0x81, 0x08, 0x26, - 0xb0, 0x18, 0x4a, 0x7f, 0xbe, 0x3f, 0xd3, 0x7f, 0x24, 0x7d, 0xf8, 0x84, 0x31, 0x16, 0xc4, 0x6b, - 0x1f, 0x4a, 0x7e, 0x53, 0xb9, 0x20, 0x7e, 0x5f, 0xb0, 0x98, 0x35, 0x0f, 0x4e, 0x83, 0xa6, 0xc1, - 0x3f, 0x08, 0xe6, 0x7c, 0x10, 0xff, 0x17, 0x09, 0x15, 0x25, 0xea, 0xa3, 0xfc, 0x35, 0xc5, 0xbf, - 0x93, 0x34, 0x65, 0x54, 0x0a, 0x40, 0x99, 0xfc, 0x99, 0x54, 0xb7, 0x67, 0x67, 0x5d, 0xf8, 0xf5, - 0x9d, 0xe1, 0x06, 0x5f, 0xfa, 0x83, 0xb6, 0xcc, 0x75, 0x43, 0xc2, 0x52, 0x63, 0xa7, 0x0d, 0x15, - 0x3d, 0x7b, 0x76, 0xa5, 0xe9, 0x25, 0x60, 0x88, 0xb1, 0x01, 0x58, 0x96, 0xbe, 0xfc, 0x61, 0xfa, - 0xdd, 0x1b, 0x1c, 0x36, 0x7d, 0x72, 0x30, 0x33, 0xd2, 0x0b, 0x6f, 0xfe, 0x7c, 0x55, 0x5b, 0xaa, - 0x2b, 0x7d, 0xc0, 0x3b, 0x5f, 0x4d, 0xb5, 0x2f, 0x35, 0x34, 0xec, 0x33, 0xbb, 0xe7, 0x11, 0xde, - 0xca, 0x0c, 0x1e, 0xb7, 0x8d, 0x1a, 0xb5, 0x74, 0x9d, 0xe7, 0x4b, 0xbf, 0x7b, 0x43, 0x3f, 0x7c, - 0x0a, 0x3a, 0x05, 0xa0, 0x3c, 0xed, 0x7f, 0x53, 0xb9, 0x30, 0x3e, 0x3f, 0x58, 0xcc, 0x30, 0x0a, - 0x4e, 0xa7, 0xbd, 0x04, 0xff, 0x20, 0x08, 0x54, 0x55, 0xfc, 0x58, 0x53, 0x7e, 0x88, 0x76, 0x04, - 0xf2, 0x8a, 0x14, 0x77, 0x1b, 0x10, 0x46, 0x15, 0xa4, 0x11, 0xac, 0xe8, 0x97, 0x92, 0x20, 0x44, - 0x5f, 0x4a, 0x7c, 0xbc, 0xfd, 0xb7, 0x3c, 0x68, 0xb1, 0x4b, 0xc7, 0x77, 0x61, 0x07, 0xc5, 0x5c, - 0xd2, 0xa7, 0x38, 0x47, 0x4b, 0x62, 0xf8, 0x91, 0x67, 0x83, 0xe2, 0x03, 0x5c, 0x0b, 0xd9, 0xb6, - 0xd9, 0xbc, 0xe2, 0x65, 0x4d, 0x09, 0xa2, 0xda, 0x40, 0x7e, 0x42, 0x1d, 0x59, 0x48, 0xfa, 0x62, - 0x2c, 0x74, 0x38, 0x55, 0x9c, 0x25, 0xa2, 0x84, 0xfd, 0x68, 0x16, 0x93, 0x57, 0xe1, 0xfe, 0xce, - 0x52, 0x86, 0x97, 0x20, 0x73, 0x8d, 0xcd, 0x23, 0xf4, 0x99, 0x25, 0x46, 0xbd, 0x60, 0x1b, 0x48, - 0x92, 0x7f, 0x8b, 0x01, 0xf0, 0xa3, 0x59, 0xec, 0x17, 0xf9, 0x06, 0x3c, 0x27, 0xb4, 0x94, 0xe1, - 0x12, 0x33, 0xe9, 0x06, 0x04, 0xed, 0xe3, 0x39, 0x34, 0x16, 0xa0, 0x69, 0x6a, 0x43, 0x98, 0x2f, - 0xca, 0x83, 0xf4, 0x97, 0x35, 0x1e, 0xdf, 0xf4, 0x9c, 0x78, 0x7c, 0xfe, 0x94, 0x93, 0x41, 0x23, - 0x37, 0x9a, 0x5f, 0xdf, 0xa0, 0x3d, 0x6d, 0xe7, 0x07, 0x6d, 0x6a, 0x16, 0xcb, 0xc5, 0x30, 0x28, - 0x96, 0x0d, 0x8a, 0xd5, 0x16, 0x4e, 0xf9, 0xed, 0xd8, 0xc2, 0xa9, 0xbf, 0x93, 0xb6, 0xb0, 0xe8, - 0xf7, 0xb6, 0x50, 0x90, 0xc6, 0x1c, 0x45, 0x26, 0x6e, 0x53, 0x05, 0xd9, 0xc2, 0x7f, 0xeb, 0x64, - 0x0b, 0xa1, 0xe3, 0xbb, 0x60, 0x0b, 0x7f, 0xce, 0x6d, 0xa1, 0xe4, 0xe4, 0x74, 0xc4, 0xf0, 0x03, - 0xa7, 0x21, 0x62, 0x11, 0x65, 0x4d, 0x29, 0xa7, 0x16, 0x71, 0x19, 0x10, 0x0f, 0x7d, 0x66, 0xfa, - 0xda, 0xf5, 0x8e, 0x7e, 0xfd, 0x6a, 0x1b, 0xe5, 0x85, 0xdd, 0x40, 0x52, 0xb6, 0xe6, 0xa7, 0x9e, - 0xad, 0x7e, 0x28, 0x5f, 0x6d, 0x3d, 0xba, 0x99, 0xc9, 0x66, 0x84, 0xed, 0xc8, 0x62, 0x9f, 0x79, - 0x3a, 0xf1, 0x72, 0xbc, 0x89, 0x9a, 0x4a, 0xb1, 0x08, 0x3f, 0x81, 0xa6, 0x91, 0x4d, 0x22, 0x3b, - 0x6e, 0xb6, 0xb9, 0xf8, 0x57, 0x45, 0x49, 0x04, 0x1a, 0x58, 0xc1, 0x07, 0x29, 0xb0, 0x7f, 0x27, - 0x9a, 0x6d, 0xa9, 0x70, 0xd8, 0xa3, 0x3a, 0x3d, 0xe1, 0xbe, 0x0f, 0x15, 0x85, 0x23, 0x0d, 0xea, - 0x6b, 0xd4, 0xe4, 0xc2, 0x0f, 0x03, 0xb2, 0x41, 0x4d, 0xd4, 0x53, 0x2b, 0x4b, 0xfe, 0xf6, 0x67, - 0x25, 0x22, 0x26, 0x35, 0x91, 0x88, 0x1a, 0x67, 0x84, 0x91, 0x2f, 0xf1, 0xc3, 0xeb, 0xb5, 0xf6, - 0xa5, 0x79, 0x89, 0xdb, 0xd2, 0x5c, 0x5c, 0x7a, 0x3f, 0x69, 0x5b, 0xdc, 0x81, 0xf3, 0x10, 0x37, - 0x68, 0xb3, 0xe8, 0x83, 0x43, 0x62, 0xd3, 0x84, 0x03, 0x13, 0xfa, 0xc8, 0x36, 0x3f, 0x5a, 0xf2, - 0x2a, 0x3a, 0x7e, 0x24, 0xa8, 0x43, 0xf6, 0x76, 0x4f, 0x66, 0xe4, 0x3a, 0xf1, 0x89, 0x18, 0x48, - 0x0f, 0x7d, 0x96, 0x3e, 0xfb, 0x0e, 0xd3, 0x97, 0x93, 0xe3, 0x87, 0xba, 0xe9, 0x4a, 0xf6, 0x5f, - 0x7b, 0xd0, 0x12, 0xb7, 0x3e, 0xef, 0x82, 0x4a, 0xec, 0xb0, 0x2c, 0x0f, 0x16, 0xbb, 0xa9, 0x04, - 0x6c, 0x01, 0x1c, 0xd6, 0x07, 0x40, 0x9a, 0x5d, 0xfc, 0x55, 0x4d, 0xa9, 0x43, 0x3f, 0x0b, 0x4c, - 0x40, 0xaa, 0xbc, 0xa2, 0x70, 0xfe, 0xe9, 0x6d, 0xa3, 0x76, 0x45, 0xd8, 0x8b, 0x66, 0x5b, 0x7a, - 0xe6, 0x72, 0x28, 0x09, 0x72, 0xc8, 0x24, 0xce, 0x63, 0x4a, 0x9c, 0x21, 0x9b, 0x71, 0x75, 0x17, - 0x4b, 0xeb, 0x13, 0x84, 0x1f, 0x46, 0x69, 0x32, 0x1e, 0x8a, 0xb0, 0x88, 0x02, 0xf0, 0xc3, 0xbc, - 0x1b, 0x2c, 0x12, 0xee, 0x06, 0xfd, 0x7f, 0x55, 0x84, 0x16, 0x54, 0xab, 0x75, 0x2d, 0x8d, 0x54, - 0xbd, 0x43, 0x89, 0x3d, 0x66, 0x36, 0x23, 0xfb, 0xdc, 0xed, 0x73, 0x9d, 0xbb, 0xd9, 0x61, 0x9d, - 0x38, 0x85, 0x3f, 0xef, 0x30, 0x85, 0xfb, 0x5c, 0xa7, 0x70, 0xde, 0x83, 0x30, 0x93, 0xef, 0xb0, - 0xcd, 0xe4, 0x15, 0x9a, 0xb2, 0x4a, 0x10, 0xfc, 0xa5, 0x7c, 0xba, 0x86, 0xbc, 0x97, 0xd9, 0xc1, - 0x0b, 0xd0, 0x5f, 0xa6, 0xaf, 0x3d, 0x9e, 0x7c, 0x0d, 0x14, 0xc2, 0x76, 0x90, 0xf8, 0xbb, 0x3e, - 0x83, 0x1f, 0x96, 0x50, 0x71, 0x3d, 0xb5, 0x55, 0x25, 0x45, 0x44, 0xa8, 0xd7, 0xd8, 0xe2, 0xf7, - 0x39, 0x8e, 0x1a, 0xb7, 0x7d, 0x70, 0xb5, 0xbc, 0x56, 0x53, 0x1e, 0x0f, 0xf0, 0xae, 0xe4, 0x65, - 0xa2, 0x88, 0x52, 0xd7, 0x41, 0x73, 0x0e, 0x20, 0xf2, 0x49, 0xec, 0x76, 0x90, 0x37, 0xf1, 0x3e, - 0x63, 0x5a, 0xcd, 0x49, 0xdf, 0x3a, 0x57, 0x24, 0x34, 0x25, 0x86, 0x22, 0x01, 0x17, 0x09, 0x93, - 0x97, 0x66, 0xaf, 0x1c, 0xc8, 0x0e, 0x1e, 0xb7, 0x23, 0x25, 0x3a, 0x36, 0xe7, 0xcc, 0xca, 0x82, - 0x74, 0x08, 0x53, 0xf4, 0x97, 0x12, 0xc7, 0xd8, 0xff, 0x97, 0x1e, 0xb4, 0xd0, 0xf6, 0xc1, 0xbb, - 0x60, 0x94, 0x76, 0x5b, 0xe6, 0xe9, 0x87, 0x27, 0x18, 0x3f, 0x32, 0x51, 0x13, 0xef, 0x75, 0x30, - 0x4d, 0xee, 0xbc, 0x11, 0xe6, 0x54, 0x6a, 0xa6, 0xfe, 0x50, 0x53, 0x7e, 0x8c, 0x5e, 0x09, 0xb8, - 0x51, 0xfd, 0xb5, 0xed, 0xd3, 0x73, 0xe8, 0x5e, 0x07, 0x6c, 0x71, 0x29, 0x75, 0x95, 0x95, 0xdc, - 0x5d, 0x65, 0xc1, 0xf9, 0xd5, 0xff, 0x8f, 0x33, 0xd0, 0x5c, 0x72, 0xb4, 0xb5, 0x25, 0xda, 0xd0, - 0xd2, 0xa4, 0x6e, 0x68, 0x0a, 0x35, 0xe2, 0x97, 0x73, 0x6f, 0x77, 0x9e, 0xd1, 0x94, 0xa7, 0xcc, - 0xdb, 0x9d, 0x15, 0x95, 0x55, 0xdb, 0xf4, 0x5b, 0xd7, 0xf4, 0xee, 0x2b, 0x3c, 0xca, 0x68, 0x6a, - 0xb8, 0x97, 0xc7, 0x22, 0xca, 0x1e, 0xb9, 0x9a, 0x3e, 0x71, 0x88, 0xc7, 0xa0, 0x33, 0x2f, 0x81, - 0x42, 0x66, 0xcc, 0x65, 0x18, 0xb1, 0x8d, 0x9a, 0x52, 0x6d, 0xc6, 0x5c, 0x7e, 0x9a, 0x77, 0x02, - 0x1e, 0xfc, 0xa5, 0xfa, 0xc5, 0x37, 0xb7, 0x6f, 0x5a, 0x5f, 0xe1, 0x5b, 0xbd, 0x52, 0x5e, 0xb5, - 0x72, 0x6d, 0xd9, 0xea, 0x95, 0xab, 0x9f, 0x5a, 0xb9, 0xc6, 0xf8, 0x6f, 0xcd, 0xca, 0xc7, 0x57, - 0x24, 0xf7, 0x3c, 0x95, 0x30, 0xfe, 0x5e, 0xbb, 0xf2, 0xf1, 0xe5, 0x66, 0xac, 0xe5, 0x7d, 0xa8, - 0xb8, 0x99, 0xd0, 0xc1, 0x1d, 0xa1, 0xc1, 0x7d, 0x92, 0x15, 0xca, 0xb5, 0x99, 0x91, 0xf6, 0xd4, - 0xc8, 0x0d, 0xb8, 0x74, 0x29, 0xdd, 0xd4, 0x52, 0xa7, 0x2a, 0xb5, 0x35, 0xdb, 0xd4, 0x78, 0xab, - 0x1a, 0xbf, 0x33, 0xda, 0x65, 0xfc, 0xae, 0x8a, 0x46, 0x92, 0xf1, 0x68, 0x53, 0x13, 0x29, 0x58, - 0x9f, 0xac, 0x6f, 0xa0, 0xe5, 0xdb, 0xea, 0x77, 0xab, 0x46, 0x27, 0x46, 0xf1, 0x9e, 0x96, 0x3a, - 0xb5, 0x49, 0x4d, 0x66, 0x2e, 0x77, 0x2e, 0x0f, 0xf2, 0xbe, 0xf1, 0x1a, 0x54, 0xbc, 0xab, 0x29, - 0xd4, 0x68, 0x6e, 0xf1, 0x60, 0x05, 0xc1, 0x0b, 0xe5, 0x19, 0xa0, 0x36, 0x7a, 0xcf, 0xd1, 0x20, - 0x2f, 0x34, 0x16, 0x10, 0xc6, 0xdf, 0xd5, 0xc6, 0x04, 0x52, 0x24, 0x2c, 0x20, 0x58, 0xa1, 0x3c, - 0x0b, 0x5a, 0x51, 0x97, 0x5a, 0x5e, 0x8e, 0x37, 0xa0, 0x59, 0x0d, 0xea, 0xae, 0x50, 0x4b, 0x13, - 0xac, 0x99, 0xe8, 0x95, 0x0d, 0xc9, 0x65, 0x63, 0xa9, 0x90, 0xe7, 0x42, 0x07, 0x3c, 0x67, 0x78, - 0xd0, 0x52, 0x8d, 0x2b, 0x78, 0x6a, 0x3c, 0x78, 0x76, 0x43, 0x7a, 0x60, 0xa9, 0xf1, 0xe6, 0xd3, - 0x23, 0xb8, 0x1e, 0x12, 0xd8, 0x75, 0xf0, 0x02, 0x35, 0x42, 0x2c, 0x29, 0xde, 0x93, 0xe6, 0xae, - 0xb5, 0xd8, 0xbc, 0x92, 0xe1, 0xa9, 0x22, 0xe7, 0xd2, 0x78, 0x84, 0x2c, 0x3f, 0xa4, 0xb9, 0xa9, - 0x7d, 0xd2, 0xcc, 0x7b, 0x37, 0x43, 0x68, 0xc8, 0xf2, 0xde, 0xd1, 0x86, 0x3c, 0x1b, 0xa4, 0x99, - 0xf4, 0xae, 0x02, 0xcd, 0x20, 0x7d, 0x10, 0x17, 0x72, 0x64, 0x5e, 0x70, 0x99, 0xa5, 0x39, 0xa9, - 0x05, 0xcc, 0x0a, 0xbc, 0x0e, 0x21, 0xe8, 0x86, 0x34, 0x9e, 0x29, 0xf8, 0x9f, 0x9b, 0xc5, 0xf2, - 0x2c, 0xf8, 0x28, 0xf3, 0x3f, 0x37, 0x6b, 0x70, 0x12, 0x46, 0x4a, 0x78, 0xd2, 0xf2, 0x43, 0x4d, - 0x79, 0x39, 0xc0, 0x0b, 0xe5, 0x1a, 0x1a, 0x28, 0x9c, 0xf0, 0x88, 0xc6, 0xed, 0x0a, 0x47, 0x92, - 0x8f, 0xcb, 0xe5, 0x75, 0xd1, 0x68, 0x53, 0x79, 0x22, 0x19, 0x0f, 0x47, 0x1a, 0xcb, 0x1b, 0x5a, - 0xe0, 0x9a, 0xbe, 0xbc, 0x39, 0x14, 0xa3, 0x65, 0x89, 0xcc, 0xe5, 0x4e, 0xfd, 0xec, 0x70, 0xe6, - 0x7c, 0x1b, 0xb4, 0x5a, 0x1e, 0xe4, 0x9d, 0xe2, 0x20, 0x9a, 0x6d, 0xfc, 0x4d, 0xc6, 0x8a, 0x3c, - 0x65, 0x99, 0x4d, 0x9c, 0x68, 0x89, 0xa3, 0xbb, 0xb5, 0x46, 0x2e, 0xa1, 0xf2, 0x45, 0x1e, 0xcb, - 0x19, 0xb3, 0x47, 0xdb, 0x28, 0xdd, 0x20, 0x5b, 0x01, 0xf1, 0x2b, 0xc6, 0xe2, 0xa4, 0x51, 0x7d, - 0x8d, 0x3c, 0x8b, 0x71, 0x48, 0xec, 0x45, 0xa6, 0x89, 0xa0, 0x01, 0x01, 0x6e, 0xe3, 0x00, 0x2d, - 0x2f, 0xa2, 0x92, 0x78, 0xba, 0x33, 0x7d, 0xfc, 0x70, 0xba, 0xed, 0x52, 0xfa, 0xdc, 0xf9, 0xf1, - 0x8f, 0xbb, 0xb2, 0x97, 0xda, 0xf5, 0xc3, 0xa7, 0x82, 0x00, 0x83, 0xa3, 0xa8, 0x28, 0x4e, 0xde, - 0xc4, 0xcf, 0x75, 0xce, 0xdf, 0xbf, 0xb5, 0xa5, 0xb9, 0x4e, 0x85, 0xb7, 0xef, 0x95, 0xdf, 0xd3, - 0x94, 0xa7, 0x03, 0x00, 0x2e, 0xaf, 0xca, 0x1e, 0xa1, 0xc2, 0x95, 0x1a, 0x1a, 0x36, 0x88, 0x68, - 0x1b, 0x35, 0x2d, 0x0a, 0x44, 0x54, 0x86, 0x7d, 0x4b, 0xd7, 0x01, 0xfd, 0xbd, 0xeb, 0x86, 0x14, - 0x43, 0xc3, 0x8a, 0x67, 0x35, 0xe5, 0x19, 0xf4, 0x74, 0x20, 0xd7, 0x88, 0xc9, 0x8f, 0x42, 0x7c, - 0xc0, 0xcc, 0xc0, 0xf9, 0x4c, 0xcf, 0x41, 0x88, 0xfe, 0x40, 0x0c, 0x51, 0xa6, 0xaf, 0x9d, 0xda, - 0x00, 0x78, 0x9c, 0xf3, 0x27, 0x1e, 0x18, 0x56, 0xe6, 0xc9, 0xcd, 0x55, 0x98, 0x7a, 0x72, 0x73, - 0x45, 0xf5, 0x0a, 0x8a, 0xea, 0x31, 0xeb, 0x88, 0x2e, 0xfa, 0x73, 0x74, 0x11, 0x16, 0x7d, 0x56, - 0x3d, 0x93, 0xb9, 0x9e, 0x4d, 0x9d, 0xe8, 0x2c, 0x9c, 0xeb, 0x97, 0x57, 0x10, 0xb9, 0x22, 0xf3, - 0x9b, 0x44, 0x30, 0x96, 0xe6, 0x0a, 0xc6, 0x34, 0x43, 0x30, 0x72, 0x87, 0x7a, 0x15, 0x1b, 0xea, - 0xe9, 0x13, 0x0d, 0x35, 0x1b, 0xc1, 0xd5, 0x6c, 0x04, 0x8b, 0x27, 0x1c, 0x41, 0x3a, 0x06, 0xfe, - 0x6a, 0x84, 0xcc, 0x7e, 0xf0, 0x03, 0x68, 0x46, 0x6b, 0xa8, 0x29, 0xdc, 0x40, 0xcc, 0x02, 0x70, - 0xd1, 0x2c, 0xc8, 0xe3, 0x10, 0xbf, 0x1a, 0xcd, 0x14, 0xfa, 0x36, 0x56, 0x33, 0xcd, 0x61, 0xc8, - 0x72, 0x58, 0x14, 0x34, 0xfe, 0x24, 0x25, 0x21, 0xb8, 0xc1, 0x35, 0x4a, 0x42, 0xaf, 0xf9, 0xd3, - 0x53, 0xd1, 0x03, 0x24, 0x01, 0x96, 0x9a, 0x33, 0xfc, 0x6c, 0xa5, 0xfc, 0xed, 0x9d, 0xca, 0xde, - 0x94, 0x6c, 0x73, 0xd9, 0xae, 0x7f, 0xe2, 0xb9, 0x8c, 0x2f, 0xc6, 0xf9, 0x94, 0xb6, 0x13, 0xe4, - 0x8f, 0xc6, 0x40, 0x76, 0x0c, 0x56, 0xcd, 0x74, 0xa7, 0x72, 0x39, 0xb9, 0x26, 0x67, 0xe0, 0x32, - 0x16, 0xb5, 0x0c, 0xcc, 0xd0, 0x6f, 0x2a, 0x8b, 0x34, 0xc9, 0x53, 0x2c, 0x05, 0x39, 0x14, 0x7e, - 0x5e, 0xd8, 0x45, 0x08, 0x51, 0x34, 0xcc, 0x5d, 0xc4, 0x7c, 0x6b, 0x37, 0x6c, 0x22, 0x31, 0xf7, - 0xd1, 0x0d, 0x9a, 0x12, 0x42, 0x3b, 0x03, 0x79, 0xc5, 0x40, 0x9e, 0x4f, 0x93, 0xa3, 0x0d, 0xf7, - 0x8a, 0xdd, 0x7d, 0x29, 0xb1, 0x01, 0xfd, 0x52, 0x62, 0x7c, 0xff, 0x52, 0xe2, 0xd4, 0x8b, 0xe7, - 0x4c, 0xba, 0x84, 0x16, 0xbb, 0x7c, 0xe1, 0xb7, 0xbf, 0x7e, 0xad, 0x30, 0xe6, 0x1d, 0xb4, 0x2d, - 0x90, 0x1f, 0x23, 0xf9, 0x21, 0x47, 0xa2, 0xc5, 0xbd, 0xb4, 0x7d, 0x3d, 0xf9, 0x7f, 0x4c, 0x65, - 0xde, 0xd9, 0xdf, 0x39, 0x85, 0xba, 0xab, 0x6b, 0xc3, 0xdf, 0x31, 0x45, 0x32, 0x17, 0x56, 0x76, - 0x45, 0xca, 0x37, 0xfc, 0xf2, 0x7c, 0x96, 0x90, 0xf8, 0xab, 0x2a, 0xd2, 0xdf, 0x49, 0xcc, 0x71, - 0xfe, 0x77, 0x41, 0x91, 0x82, 0x9a, 0xf2, 0x22, 0xda, 0x12, 0xc8, 0x8f, 0x91, 0xbc, 0xc8, 0x91, - 0x68, 0x37, 0x47, 0xbe, 0xbf, 0x98, 0x8a, 0x1e, 0x80, 0x47, 0x32, 0xbf, 0x57, 0xa1, 0x6f, 0x52, - 0x85, 0x5e, 0x44, 0xb3, 0xd8, 0x5a, 0x8c, 0xab, 0x11, 0x4d, 0x2d, 0x6a, 0xa9, 0x90, 0x4b, 0x2c, - 0x0a, 0x23, 0xbe, 0x0d, 0xb3, 0xc0, 0x4d, 0x7a, 0xee, 0x39, 0x37, 0x7e, 0xea, 0x43, 0x67, 0x95, - 0xc9, 0x37, 0xdc, 0xc6, 0xdc, 0x63, 0xb4, 0xfc, 0x7a, 0x2a, 0xe3, 0xf2, 0x85, 0xbb, 0xa8, 0x32, - 0x79, 0x31, 0x92, 0x17, 0x39, 0x12, 0xed, 0xa6, 0x32, 0x7f, 0x36, 0x55, 0x48, 0x66, 0xf0, 0x7b, - 0x85, 0xf9, 0xee, 0x2a, 0x4c, 0x9d, 0xa6, 0xec, 0x44, 0x3f, 0x0d, 0xe4, 0x19, 0x6c, 0x79, 0x3e, - 0x77, 0xad, 0xfa, 0x8a, 0xea, 0x32, 0xe8, 0x41, 0x8b, 0x1c, 0xfb, 0xbf, 0x0b, 0x07, 0x8d, 0x41, - 0xcb, 0xed, 0xc7, 0x83, 0x8e, 0x11, 0xca, 0x4d, 0x14, 0xad, 0x01, 0x88, 0x04, 0x8f, 0x36, 0xc7, - 0xd0, 0xe4, 0x79, 0x68, 0x14, 0xfc, 0xd3, 0x0a, 0x51, 0xbf, 0x03, 0x1e, 0xe2, 0x2b, 0xb0, 0xfe, - 0xb5, 0xa4, 0x1a, 0x8f, 0x84, 0x9a, 0xb6, 0x46, 0x1b, 0xd4, 0x6d, 0xe4, 0xd9, 0x36, 0x53, 0xc0, - 0x9f, 0xa2, 0x99, 0x91, 0x68, 0x83, 0x6a, 0x7d, 0x9f, 0xfe, 0xb5, 0x94, 0x50, 0xec, 0x0f, 0xaf, - 0xb1, 0xdd, 0xa1, 0x95, 0x38, 0x3a, 0x1e, 0xa7, 0x86, 0x87, 0x05, 0x59, 0xda, 0xaa, 0x29, 0x9b, - 0x50, 0x4d, 0x20, 0x2f, 0xe6, 0x8c, 0x11, 0x99, 0x4f, 0x3f, 0x4d, 0x0d, 0x75, 0xa6, 0x4f, 0xdc, - 0xca, 0xb6, 0xf7, 0xa5, 0x4f, 0x7f, 0xca, 0x64, 0x4a, 0xc4, 0xc2, 0xff, 0xe7, 0x53, 0xc8, 0x1d, - 0xa1, 0x53, 0x5f, 0xdf, 0x8e, 0x37, 0x22, 0x6b, 0x04, 0xcf, 0x49, 0x16, 0x4a, 0x90, 0xc8, 0xd2, - 0xfc, 0xba, 0x50, 0x42, 0x5d, 0xbb, 0x26, 0x33, 0x7a, 0x22, 0x73, 0xce, 0x18, 0x18, 0x60, 0x02, - 0x88, 0x93, 0xb1, 0xcf, 0x9c, 0xfb, 0xaa, 0x5a, 0xb7, 0x53, 0x7c, 0x4d, 0x5a, 0xe4, 0x1c, 0x50, - 0xff, 0x07, 0x6a, 0x9d, 0xf0, 0xa4, 0x6f, 0x87, 0x0c, 0x89, 0x48, 0x72, 0x5b, 0xcb, 0x0f, 0x51, - 0xd7, 0x66, 0xf2, 0x26, 0x87, 0x46, 0x9d, 0x61, 0x39, 0x3a, 0xe1, 0x42, 0x28, 0x38, 0xe7, 0x55, - 0x4b, 0x57, 0x7c, 0x52, 0xc9, 0xcb, 0x7f, 0x97, 0xc1, 0x74, 0x93, 0xea, 0x0e, 0x09, 0xcd, 0xd8, - 0x12, 0x8a, 0x81, 0x23, 0x2d, 0x5e, 0xc7, 0x6f, 0xa6, 0x25, 0xe7, 0x07, 0x80, 0x1c, 0x14, 0xbc, - 0x9d, 0xa9, 0x07, 0x35, 0x6d, 0xe4, 0x7d, 0x1a, 0xcd, 0x14, 0x8a, 0x27, 0xf5, 0xbe, 0xef, 0xcf, - 0xa6, 0x80, 0x27, 0x4e, 0x28, 0x59, 0xbf, 0x1b, 0x82, 0x03, 0x6f, 0x53, 0x93, 0xc9, 0x70, 0x84, - 0x4f, 0x6f, 0x21, 0x34, 0x83, 0x78, 0x4a, 0x08, 0x91, 0x43, 0x48, 0x02, 0x13, 0xb3, 0x54, 0x7e, - 0x1c, 0xde, 0x3a, 0xc0, 0xe1, 0x17, 0x3d, 0x59, 0xac, 0x0b, 0xbf, 0x5e, 0x5e, 0x17, 0x7e, 0x7d, - 0x67, 0x42, 0x4d, 0x2e, 0x2f, 0xf3, 0x65, 0xde, 0x1b, 0xd0, 0x3b, 0x8f, 0xa6, 0x46, 0x3a, 0x40, - 0xfd, 0xea, 0xc2, 0xaf, 0x07, 0xcd, 0xf6, 0xf8, 0x67, 0x68, 0x3a, 0xf9, 0x51, 0xc3, 0x5e, 0x30, - 0x6c, 0xd0, 0x94, 0xaa, 0x00, 0x2b, 0x93, 0x9f, 0x12, 0xbb, 0xaf, 0xa9, 0x2e, 0x65, 0x37, 0x87, - 0xe5, 0xf0, 0x07, 0x79, 0x67, 0xe0, 0xfc, 0x0d, 0xd6, 0x05, 0xfe, 0xa5, 0x84, 0x10, 0x58, 0x63, - 0x32, 0xd7, 0xc0, 0x4b, 0xff, 0xfd, 0x92, 0xa6, 0xfc, 0x8b, 0x80, 0x50, 0x2e, 0xc7, 0xcc, 0xbf, - 0x61, 0x30, 0xc7, 0x3b, 0x8e, 0x66, 0xc6, 0x06, 0x0c, 0x29, 0x21, 0x3e, 0x3d, 0xfa, 0xfb, 0xef, - 0xf2, 0x28, 0x00, 0xa9, 0xa1, 0xa3, 0xa9, 0xd1, 0x73, 0x70, 0xf8, 0x47, 0xaf, 0x49, 0x3a, 0xdb, - 0xd2, 0xa7, 0x3b, 0x01, 0xac, 0x34, 0x07, 0x1b, 0x5f, 0x38, 0xb6, 0x93, 0xbd, 0x92, 0xdf, 0xb9, - 0x3b, 0x9a, 0x48, 0xee, 0x6c, 0x0a, 0x27, 0x92, 0xcb, 0x83, 0xc2, 0xd7, 0xd9, 0xab, 0x98, 0xbc, - 0xc3, 0xc1, 0xe2, 0x05, 0x72, 0xc4, 0xf4, 0x83, 0x1d, 0xfa, 0xc0, 0x2d, 0x7a, 0xbb, 0x3e, 0x4a, - 0xfd, 0x4d, 0x1c, 0x5a, 0x7f, 0x45, 0x23, 0xb1, 0x46, 0x0c, 0x4d, 0x61, 0x68, 0x3a, 0x84, 0x5e, - 0xa1, 0x65, 0xf2, 0x2c, 0x9a, 0x46, 0xe5, 0x70, 0x8f, 0xfe, 0xd6, 0x59, 0x1e, 0x8d, 0x02, 0x3f, - 0x89, 0x8a, 0xd5, 0x78, 0x3c, 0x1a, 0xdf, 0x92, 0x68, 0x14, 0x03, 0xbb, 0xf3, 0x42, 0x79, 0x96, - 0xc5, 0xac, 0xf0, 0x72, 0xbc, 0x16, 0xcd, 0x88, 0x03, 0xa1, 0x35, 0x0d, 0xe2, 0x2d, 0x85, 0x59, - 0x2a, 0x17, 0x03, 0xad, 0x35, 0xd5, 0x41, 0xb3, 0x90, 0xfb, 0xab, 0x17, 0x4d, 0xd6, 0x5f, 0xdd, - 0xe2, 0xa3, 0x5f, 0x85, 0x66, 0x6c, 0x23, 0x02, 0x13, 0xd9, 0x15, 0xc5, 0x0f, 0xd8, 0xe4, 0x5e, - 0x14, 0xd9, 0x92, 0x1c, 0x91, 0xe5, 0xa2, 0xe6, 0xbf, 0x38, 0x15, 0xdd, 0x6f, 0x8c, 0x41, 0xf8, - 0x75, 0xe6, 0xeb, 0xfb, 0xfd, 0xa8, 0xe9, 0xa8, 0xfb, 0x9d, 0xd0, 0xa6, 0x30, 0x2a, 0x0e, 0x35, - 0x35, 0x11, 0x56, 0x51, 0xfb, 0xbf, 0x45, 0x53, 0x5e, 0x08, 0xf0, 0x42, 0xf9, 0x59, 0x10, 0x0b, - 0x51, 0x2d, 0x2c, 0x44, 0x31, 0xef, 0x6d, 0xc2, 0xfd, 0xf6, 0x3b, 0xa3, 0x5d, 0xdc, 0x77, 0x8c, - 0xbc, 0x5d, 0x0b, 0xf2, 0x9e, 0xf0, 0x09, 0x89, 0x32, 0x4c, 0x38, 0x9b, 0xb0, 0x3d, 0xdd, 0xe4, - 0x83, 0x56, 0xf9, 0x53, 0x4d, 0xf9, 0x51, 0xc0, 0x6c, 0x20, 0x6f, 0xc9, 0x5e, 0xdc, 0x4f, 0xb1, - 0x10, 0x3e, 0x68, 0x4c, 0x32, 0x02, 0x3a, 0xe9, 0xe3, 0x57, 0x32, 0x23, 0xed, 0xa5, 0x76, 0x8a, - 0xcd, 0x68, 0x64, 0xe0, 0x6b, 0x1e, 0x34, 0x7b, 0xfe, 0x66, 0x94, 0xd5, 0xeb, 0x24, 0x28, 0xdf, - 0x6d, 0x4d, 0xdd, 0x68, 0xd1, 0xd4, 0xc9, 0x3d, 0xa0, 0xb0, 0x28, 0xeb, 0x06, 0x44, 0xf2, 0x00, - 0xb2, 0x90, 0x24, 0xd1, 0x3a, 0x78, 0x11, 0xc7, 0x2e, 0x46, 0xd8, 0x6f, 0xbc, 0x04, 0x21, 0x9e, - 0xf5, 0x0c, 0x34, 0x62, 0x6a, 0x50, 0x28, 0xf1, 0xff, 0xed, 0x34, 0xb4, 0x70, 0xa3, 0x9a, 0x64, - 0x63, 0x60, 0xf4, 0x99, 0xf8, 0x4e, 0x69, 0xeb, 0x4e, 0x78, 0xa4, 0xcd, 0x27, 0x3e, 0x87, 0xc3, - 0x3d, 0xc6, 0x48, 0x7a, 0xb8, 0xc7, 0xc0, 0x65, 0x4c, 0x5f, 0x21, 0xc0, 0x2b, 0x66, 0xa2, 0x26, - 0xe6, 0xe1, 0x1e, 0x83, 0x32, 0x26, 0xd7, 0xd9, 0x09, 0x35, 0x14, 0xaf, 0xdf, 0x6d, 0xec, 0x06, - 0xd5, 0x08, 0x4b, 0x48, 0xf8, 0x47, 0x9a, 0xb2, 0x37, 0x60, 0xad, 0x91, 0x77, 0xa7, 0xfb, 0xcf, - 0x67, 0xae, 0xbd, 0x95, 0xee, 0x39, 0x9d, 0xb9, 0xfe, 0x4b, 0x50, 0x87, 0x3b, 0xa3, 0x87, 0x01, - 0x6b, 0xbd, 0xa7, 0x2b, 0xfd, 0xee, 0x0d, 0x7d, 0xf0, 0x16, 0xbc, 0x83, 0xa8, 0xa9, 0x2d, 0x87, - 0x3f, 0xf4, 0x9e, 0xa3, 0xe5, 0x62, 0x5c, 0xfc, 0x72, 0xf3, 0x61, 0x0b, 0xd9, 0x0d, 0x66, 0x6f, - 0xbf, 0x97, 0x3d, 0xdf, 0x25, 0x76, 0x7c, 0x67, 0xb4, 0x33, 0x68, 0xfd, 0x30, 0xee, 0x92, 0x48, - 0x7e, 0x86, 0x56, 0x95, 0x4a, 0xde, 0x22, 0x9b, 0xe4, 0xd5, 0x44, 0x92, 0x8f, 0xcb, 0x20, 0x7a, - 0xaf, 0x68, 0xca, 0x8e, 0x00, 0x80, 0xcb, 0x5b, 0x20, 0xde, 0x5f, 0xfa, 0xfd, 0xf3, 0xa9, 0x91, - 0x1b, 0x77, 0x46, 0xfb, 0x48, 0xe9, 0x9d, 0xd1, 0xbe, 0x55, 0xa9, 0xa1, 0x61, 0xa5, 0x51, 0x8d, - 0x24, 0xf5, 0xd1, 0x37, 0xf5, 0xa1, 0xa1, 0x3b, 0xa3, 0x5d, 0xab, 0x59, 0x09, 0xe4, 0x27, 0xe0, - 0x6b, 0x04, 0x92, 0x8b, 0xf8, 0x28, 0x0d, 0x1b, 0x08, 0xbd, 0xe2, 0x8d, 0xa8, 0x88, 0x84, 0xc4, - 0x24, 0xf7, 0xe2, 0x53, 0x2b, 0x57, 0x6b, 0xca, 0xca, 0x00, 0x94, 0xc8, 0x8f, 0xc0, 0xae, 0x2a, - 0xfb, 0xf9, 0x4d, 0xfd, 0xd2, 0x91, 0xd4, 0x98, 0x61, 0x3a, 0x78, 0x57, 0xdc, 0x4e, 0xae, 0x0a, - 0x02, 0x34, 0xfe, 0x29, 0x2a, 0x8e, 0x85, 0x1a, 0xd5, 0x6d, 0xe1, 0xd7, 0x55, 0x1a, 0x5c, 0x9b, - 0xe4, 0x21, 0xe2, 0x85, 0xb2, 0x9c, 0x3e, 0xd2, 0x69, 0xd8, 0x3f, 0xd2, 0x29, 0x04, 0xa2, 0xbb, - 0x33, 0xda, 0x95, 0x3e, 0xdd, 0xa6, 0x7f, 0x78, 0xe9, 0x89, 0x55, 0xab, 0xec, 0x5d, 0xcb, 0xab, - 0x82, 0xbc, 0x75, 0x85, 0xb1, 0x8d, 0x42, 0x6b, 0x03, 0x6e, 0x1a, 0xc2, 0xe3, 0xe2, 0x83, 0x75, - 0xed, 0x6b, 0xa7, 0x23, 0x06, 0x01, 0x79, 0xff, 0xa5, 0x87, 0x3c, 0xd2, 0xcd, 0x69, 0xf8, 0xdd, - 0xb6, 0x6f, 0x2f, 0x59, 0xec, 0x9b, 0x2d, 0x5f, 0x51, 0x2e, 0x3b, 0x5c, 0xe2, 0x10, 0x5a, 0x2c, - 0x5d, 0x97, 0x84, 0xee, 0x73, 0x6a, 0x67, 0xac, 0xea, 0x41, 0x88, 0x24, 0x62, 0xd5, 0xa8, 0x44, - 0x78, 0x05, 0x89, 0x00, 0x73, 0xc7, 0x7f, 0x13, 0x0f, 0xbf, 0x68, 0x32, 0xd4, 0x04, 0x11, 0x5d, - 0x83, 0xf0, 0x03, 0x97, 0x59, 0x02, 0x10, 0xdb, 0xac, 0x83, 0x31, 0x2d, 0x19, 0xdf, 0xa3, 0xe8, - 0xfc, 0xb9, 0x84, 0x8a, 0x59, 0x11, 0x5e, 0x80, 0xa6, 0x19, 0xab, 0x59, 0x6a, 0x77, 0xa7, 0x06, - 0xe9, 0x2f, 0x92, 0xe3, 0x28, 0x46, 0x97, 0x46, 0x9e, 0x70, 0x0c, 0x63, 0x34, 0x35, 0x1c, 0x6b, - 0x5d, 0x4b, 0xaf, 0x9e, 0xc9, 0xdf, 0x06, 0xa2, 0x06, 0xb4, 0xf0, 0xe8, 0x80, 0xff, 0x36, 0x10, - 0x35, 0xb5, 0x75, 0x36, 0xd3, 0x9a, 0x05, 0x3c, 0x5f, 0x09, 0x7d, 0x6c, 0x40, 0xd3, 0x91, 0x3c, - 0x83, 0x66, 0x90, 0x9d, 0xbe, 0x12, 0x57, 0x43, 0xf4, 0x2a, 0x79, 0xb1, 0x13, 0x15, 0x55, 0x0c, - 0x28, 0x68, 0xc2, 0xfb, 0x1f, 0x47, 0xb3, 0x2d, 0x75, 0x42, 0x7e, 0xa6, 0xd9, 0x6e, 0xf9, 0x99, - 0xfc, 0xc3, 0x53, 0x89, 0x68, 0x93, 0x95, 0x07, 0x69, 0xbd, 0x5b, 0xad, 0xdf, 0xf3, 0x9d, 0x9a, - 0x36, 0x5e, 0xe6, 0xd1, 0x49, 0x61, 0xb7, 0xb4, 0x4e, 0x53, 0x2a, 0x78, 0x74, 0xd2, 0x55, 0x35, - 0xb5, 0xad, 0x6b, 0x60, 0x42, 0x28, 0xf3, 0x51, 0xeb, 0x3d, 0x78, 0x8b, 0xdb, 0x65, 0xd1, 0x22, - 0x43, 0x4a, 0x64, 0x16, 0xae, 0x14, 0xff, 0x18, 0x15, 0x1b, 0x83, 0x2f, 0x1c, 0xf9, 0x91, 0xf0, - 0xb0, 0xbc, 0x90, 0x74, 0xbd, 0x76, 0x52, 0x5d, 0xf3, 0xb6, 0xb8, 0x11, 0x4d, 0xdf, 0xa3, 0xee, - 0x25, 0x7d, 0x17, 0x91, 0xbe, 0xc9, 0xba, 0x94, 0x95, 0xc9, 0xcf, 0xe9, 0x1d, 0xd7, 0xc6, 0x8f, - 0x0d, 0xe8, 0x97, 0xdf, 0x65, 0xfd, 0x67, 0x2f, 0x7d, 0x90, 0x3e, 0xd3, 0xa3, 0x1f, 0x1a, 0x36, - 0x4d, 0x57, 0xcf, 0xd1, 0x72, 0x90, 0xe1, 0xcc, 0xe5, 0x4e, 0x0e, 0xcf, 0xce, 0x3f, 0x68, 0x4f, - 0x15, 0xdf, 0xd3, 0x94, 0xa7, 0xd1, 0x93, 0x01, 0x57, 0x11, 0x90, 0x17, 0xd1, 0x2c, 0x24, 0x8e, - 0x76, 0xf1, 0x96, 0x87, 0x6c, 0x11, 0x72, 0x5b, 0x7e, 0xb7, 0x0d, 0xe3, 0x7a, 0x6e, 0x18, 0xf3, - 0x1a, 0x99, 0x09, 0x8c, 0xa1, 0xfc, 0xf7, 0x59, 0x09, 0xcd, 0xa1, 0xe9, 0x37, 0xb7, 0x40, 0x5b, - 0xfc, 0x2b, 0x09, 0xcd, 0x66, 0x97, 0xcd, 0xa4, 0x02, 0xdb, 0xb3, 0x2d, 0x8a, 0xd5, 0x41, 0xf5, - 0x17, 0xde, 0x87, 0x26, 0x80, 0x48, 0xc4, 0xfc, 0xad, 0x9a, 0xb2, 0x15, 0xcf, 0x86, 0x6b, 0x6a, - 0x5a, 0xee, 0x5d, 0x67, 0xf9, 0x69, 0xec, 0x5c, 0x20, 0x2c, 0x32, 0xd1, 0x60, 0x88, 0x6d, 0x9f, - 0xdd, 0x7f, 0x6c, 0xfc, 0xcd, 0x8b, 0xf4, 0x0d, 0xaa, 0xd6, 0x95, 0x39, 0xf2, 0x69, 0xe6, 0x93, - 0x23, 0xf0, 0xf3, 0xcd, 0xff, 0x25, 0xf5, 0x8e, 0xe7, 0x41, 0xbf, 0xb7, 0xdc, 0xfa, 0xed, 0xf2, - 0xd6, 0xd5, 0xac, 0xa4, 0x42, 0x0a, 0xe0, 0x36, 0x0f, 0x5a, 0x10, 0x54, 0x93, 0xf1, 0xbd, 0x16, - 0x94, 0xb6, 0x87, 0x12, 0x7b, 0xb0, 0xed, 0x5c, 0xc8, 0x0e, 0x67, 0x10, 0xf7, 0x68, 0x21, 0x60, - 0x89, 0x98, 0xff, 0x84, 0xa4, 0x29, 0x3f, 0xc1, 0xf7, 0x8f, 0x1f, 0x3a, 0x9a, 0x1d, 0x3c, 0x6e, - 0xa1, 0x0c, 0x5c, 0x46, 0xbd, 0xcf, 0x8d, 0x6b, 0x87, 0x49, 0x80, 0x7d, 0xa3, 0x8a, 0x92, 0xf4, - 0xe1, 0xd5, 0xec, 0xf5, 0x0b, 0xf0, 0x46, 0xd7, 0xa0, 0xff, 0xd0, 0xd1, 0xf4, 0x89, 0x2b, 0xa9, - 0xa1, 0x23, 0x7a, 0x77, 0xaf, 0x08, 0x06, 0x1d, 0x10, 0x82, 0x57, 0xfb, 0xcb, 0xdc, 0x09, 0x2e, - 0xdf, 0xc7, 0x5f, 0x2b, 0xbc, 0x51, 0x1e, 0x37, 0xd0, 0x34, 0x58, 0xf0, 0x67, 0x12, 0xba, 0x8f, - 0x68, 0x05, 0xb1, 0xca, 0xf4, 0xa2, 0x61, 0x57, 0xb8, 0x11, 0xdb, 0xcc, 0xba, 0x59, 0x67, 0x10, - 0xbe, 0x24, 0x5f, 0x75, 0x22, 0xe6, 0x4f, 0x68, 0x4a, 0x25, 0xbe, 0x7f, 0x0f, 0x2f, 0x84, 0xa4, - 0x20, 0xe9, 0xb6, 0x4b, 0xe9, 0x0f, 0xda, 0xd2, 0x9f, 0x1f, 0xf1, 0x3e, 0x62, 0x56, 0x65, 0x6f, - 0x9f, 0x49, 0xbf, 0x7d, 0x81, 0xd2, 0x6c, 0x05, 0x23, 0x54, 0x95, 0x7a, 0x1f, 0x76, 0xa4, 0x2a, - 0xda, 0xd2, 0x50, 0x6e, 0xf6, 0x62, 0x10, 0xf3, 0xa6, 0x07, 0x2d, 0x72, 0x22, 0xa6, 0x2a, 0x1a, - 0x89, 0xa8, 0xf5, 0x49, 0xbc, 0xd4, 0x1d, 0x69, 0x0a, 0x62, 0x90, 0xf6, 0x48, 0x01, 0x50, 0x89, - 0x98, 0xff, 0xb8, 0xa4, 0x29, 0x2f, 0x60, 0x9f, 0x40, 0xe2, 0xc1, 0x8e, 0x72, 0xfd, 0xc3, 0x13, - 0x99, 0xb1, 0xde, 0xec, 0xc0, 0xed, 0xf1, 0x77, 0x07, 0x20, 0xe4, 0xab, 0xf7, 0x51, 0x81, 0x52, - 0x52, 0x4e, 0x29, 0xe5, 0xd0, 0x00, 0x47, 0x48, 0xad, 0xc4, 0xcf, 0xbb, 0x91, 0x9a, 0x30, 0xc6, - 0x8f, 0x9c, 0xb1, 0xbf, 0xc1, 0x40, 0x12, 0x96, 0x21, 0xad, 0xa7, 0x44, 0xfe, 0x47, 0x09, 0xcd, - 0xae, 0x69, 0x8e, 0x45, 0xe3, 0x49, 0x57, 0x1d, 0xb5, 0x54, 0x3b, 0xea, 0x68, 0x0e, 0x44, 0x22, - 0xe6, 0x7f, 0x47, 0xd2, 0x94, 0x06, 0x7c, 0xbf, 0x3e, 0x38, 0xaa, 0x77, 0xd0, 0x97, 0x79, 0x56, - 0x09, 0xde, 0x28, 0x56, 0x01, 0x8d, 0xa5, 0x74, 0x56, 0xf9, 0xb0, 0x2f, 0x35, 0xdc, 0x4b, 0xc9, - 0x26, 0x40, 0xfa, 0x5b, 0x67, 0xb3, 0x07, 0xc6, 0x2a, 0x7c, 0xec, 0x25, 0x8d, 0x30, 0x8e, 0xcb, - 0x09, 0x23, 0x1e, 0xf5, 0x3f, 0x94, 0x47, 0x92, 0xc3, 0x04, 0x3b, 0x63, 0xc4, 0x0f, 0x7a, 0xd0, - 0x6c, 0x76, 0x69, 0xef, 0x42, 0xac, 0xa5, 0xda, 0x91, 0xd8, 0x1c, 0x88, 0x44, 0xcc, 0x3f, 0x28, - 0x69, 0xca, 0x3e, 0x3c, 0x1b, 0xee, 0xfb, 0x99, 0x45, 0xfa, 0xb9, 0xe5, 0x27, 0x8f, 0x24, 0x9c, - 0x1d, 0xa4, 0x11, 0x7d, 0x52, 0x23, 0x1d, 0xe0, 0x6b, 0x48, 0xdd, 0x04, 0x18, 0x00, 0x59, 0xf5, - 0xf7, 0x65, 0x2f, 0x5d, 0xd4, 0xbb, 0x7b, 0x53, 0x23, 0x23, 0xa9, 0xb1, 0xe3, 0xd4, 0x94, 0x11, - 0x97, 0xc4, 0x4c, 0x5f, 0x7b, 0xf6, 0xd0, 0xc7, 0xfa, 0x5b, 0xfd, 0x7a, 0xd7, 0x09, 0xfd, 0xad, - 0xfe, 0xd4, 0xd8, 0xe9, 0x5f, 0xb7, 0xbd, 0x49, 0x78, 0xf0, 0x98, 0xf7, 0xd1, 0xc2, 0xb4, 0xd9, - 0x60, 0x44, 0x97, 0x07, 0xdd, 0xa3, 0x34, 0x90, 0x14, 0xe5, 0x89, 0xed, 0x51, 0xc6, 0x0c, 0xdb, - 0x4d, 0x13, 0x03, 0xa1, 0xb3, 0xa7, 0xd7, 0xe7, 0x0e, 0x00, 0x93, 0xa4, 0xff, 0x9a, 0xa4, 0x29, - 0xaf, 0x63, 0x9c, 0x1a, 0x7a, 0x2b, 0x7d, 0xe6, 0x06, 0x20, 0x0e, 0xbb, 0x54, 0x6f, 0x03, 0xe4, - 0xe8, 0xaa, 0xa9, 0xbd, 0x33, 0xda, 0x95, 0x19, 0x39, 0x45, 0xc7, 0xf7, 0x97, 0x67, 0xf4, 0xb7, - 0xce, 0x01, 0x44, 0x69, 0x6a, 0xb8, 0xb7, 0x6a, 0xc7, 0x16, 0x1a, 0xd8, 0x4b, 0xeb, 0xaa, 0xa9, - 0xae, 0x32, 0xcf, 0xec, 0x49, 0xe1, 0x72, 0x12, 0xc1, 0x95, 0xf2, 0x26, 0xf3, 0xde, 0x90, 0xde, - 0x71, 0x8d, 0x33, 0x03, 0x5e, 0x64, 0x10, 0x4e, 0xac, 0xf2, 0x3f, 0x56, 0xa0, 0x5d, 0x33, 0xb6, - 0xca, 0x06, 0x3b, 0xfe, 0x93, 0x84, 0x16, 0xc0, 0xcd, 0x34, 0xa1, 0x66, 0x43, 0x3c, 0xda, 0xcc, - 0x78, 0xe2, 0xb7, 0xbb, 0xf9, 0x73, 0x38, 0xc6, 0x96, 0x87, 0xf3, 0xc2, 0x50, 0xce, 0x1c, 0x92, - 0x34, 0xe5, 0x25, 0x83, 0x33, 0x47, 0x72, 0x39, 0xf3, 0x0c, 0xe3, 0x0c, 0x64, 0x01, 0xcf, 0x8c, - 0x7e, 0xa4, 0x0f, 0xdc, 0x02, 0x08, 0x03, 0x41, 0xb6, 0xda, 0x32, 0x96, 0x5a, 0x5a, 0x57, 0x0e, - 0x4b, 0x08, 0xc1, 0x2b, 0x02, 0x93, 0x21, 0x18, 0x0f, 0x79, 0xd0, 0x22, 0x72, 0x36, 0xe6, 0x42, - 0xf2, 0x4a, 0x7b, 0x32, 0x57, 0x0e, 0x2c, 0x24, 0xd8, 0xe6, 0xe4, 0x97, 0x17, 0x0c, 0x4f, 0x59, - 0x71, 0x53, 0xd2, 0x94, 0x57, 0x71, 0x49, 0xba, 0xf3, 0xd6, 0xf8, 0xa1, 0x6e, 0x07, 0x86, 0xfc, - 0xd8, 0xad, 0xa6, 0x54, 0xef, 0xea, 0x48, 0x1f, 0xf9, 0x94, 0x5e, 0x0a, 0x75, 0x1e, 0x31, 0x34, - 0x00, 0xc2, 0x01, 0x9d, 0xb9, 0x01, 0x10, 0xbf, 0x6e, 0xdb, 0x5f, 0xa5, 0xf0, 0x3f, 0x73, 0x98, - 0x95, 0xb9, 0xdc, 0x09, 0xf6, 0xe2, 0xc9, 0xc0, 0x13, 0xee, 0x0c, 0x4b, 0xd8, 0x38, 0x96, 0x28, - 0x5f, 0x51, 0x5e, 0x67, 0xd0, 0x84, 0x47, 0xe0, 0x99, 0x9c, 0xfd, 0xb6, 0xa9, 0x92, 0x07, 0xd3, - 0x2e, 0x73, 0xd8, 0x5a, 0xba, 0xde, 0x34, 0x7a, 0x57, 0x14, 0x08, 0x4d, 0x39, 0x37, 0x22, 0x69, - 0xca, 0xbf, 0xc0, 0x2b, 0xc4, 0x34, 0xd4, 0x99, 0x91, 0xf6, 0x4c, 0x5f, 0x7b, 0x0e, 0xa5, 0xa0, - 0x7f, 0x70, 0xd3, 0xe5, 0xdd, 0x02, 0xe0, 0xfc, 0xd6, 0x12, 0xae, 0xd8, 0x20, 0xb9, 0x7a, 0x4e, - 0x3b, 0x68, 0x61, 0xdb, 0x80, 0x24, 0xd5, 0x48, 0xbd, 0x1a, 0x81, 0xad, 0x18, 0x61, 0xe0, 0x1a, - 0x2c, 0x3b, 0x30, 0x90, 0x27, 0x3d, 0x49, 0x94, 0xef, 0x13, 0xee, 0x48, 0xdf, 0x28, 0x87, 0x70, - 0xde, 0xf8, 0xb8, 0x07, 0x22, 0xa6, 0x10, 0x69, 0xa8, 0x89, 0x30, 0x79, 0x5b, 0xee, 0x94, 0x1d, - 0xc0, 0x0a, 0xc3, 0xd8, 0x15, 0x28, 0x04, 0x94, 0xf2, 0xea, 0x92, 0xa4, 0x29, 0xbf, 0xc0, 0x7e, - 0x38, 0x08, 0x61, 0x66, 0x78, 0xe8, 0x08, 0x3d, 0xf6, 0x16, 0xc2, 0x07, 0x7a, 0x37, 0xd1, 0xe3, - 0x60, 0x58, 0x20, 0x39, 0x81, 0xdc, 0x19, 0xed, 0xd2, 0x2f, 0xbe, 0x99, 0x3e, 0x73, 0x3a, 0x7d, - 0xb6, 0x07, 0x4e, 0x9c, 0x20, 0x16, 0xbc, 0x51, 0x7e, 0xf8, 0x94, 0x7e, 0x7b, 0x2c, 0x73, 0xfc, - 0x42, 0x76, 0xf0, 0x82, 0xde, 0x36, 0x0a, 0x0a, 0x89, 0x27, 0xa5, 0x90, 0x1f, 0xd1, 0x04, 0x49, - 0x5b, 0x42, 0x44, 0xfe, 0x4c, 0xce, 0x3c, 0xe6, 0x44, 0x6e, 0x2e, 0x14, 0xe3, 0x4d, 0x59, 0x61, - 0xc0, 0x94, 0x3b, 0x9f, 0x4b, 0x9a, 0xf2, 0x06, 0x2e, 0x75, 0xe6, 0x4e, 0x33, 0x69, 0x65, 0xe1, - 0xd1, 0x4b, 0x8e, 0x3c, 0xb2, 0x03, 0x4e, 0x92, 0x53, 0xe5, 0x78, 0x45, 0x81, 0x9c, 0x82, 0x4f, - 0xe1, 0x4f, 0x24, 0x34, 0xdb, 0x62, 0x5a, 0xec, 0x53, 0xb8, 0xa5, 0xda, 0x71, 0x0a, 0xcf, 0x81, - 0x48, 0xc4, 0xfc, 0x2f, 0x6b, 0xca, 0x52, 0x63, 0x4f, 0x71, 0x6e, 0xfc, 0xd4, 0x87, 0x6c, 0x06, - 0xbf, 0x17, 0x7e, 0x66, 0x3a, 0x6f, 0xe9, 0x03, 0x7d, 0xb4, 0x10, 0x96, 0x98, 0x81, 0x02, 0xa7, - 0x5a, 0x7c, 0x4d, 0x42, 0x88, 0x24, 0xaf, 0x06, 0x54, 0x17, 0x3b, 0x68, 0xbb, 0x80, 0xe7, 0x92, - 0x7c, 0xd5, 0x89, 0x98, 0x7f, 0x97, 0xa6, 0x3c, 0x81, 0x67, 0x5b, 0x86, 0xcc, 0xbb, 0x54, 0x4c, - 0x80, 0x59, 0xc5, 0xbe, 0xcc, 0x6f, 0xce, 0x61, 0x59, 0x01, 0x58, 0xe3, 0x42, 0xb1, 0x3e, 0x44, - 0xf5, 0xb4, 0x16, 0x1e, 0xe5, 0x33, 0xec, 0x1f, 0x71, 0x12, 0x30, 0x2b, 0x8c, 0xe3, 0x26, 0xc7, - 0x09, 0x2c, 0x11, 0xf3, 0x9f, 0x97, 0x34, 0x65, 0x17, 0xa6, 0xe9, 0x37, 0xd3, 0x67, 0x7b, 0x52, - 0x43, 0x1f, 0xc3, 0xb5, 0x7f, 0x6a, 0xe8, 0x48, 0xa6, 0xaf, 0x9d, 0x82, 0x52, 0xf1, 0x5b, 0x47, - 0xc5, 0x4f, 0x00, 0xa0, 0x2b, 0x08, 0x21, 0x2f, 0x65, 0xee, 0x55, 0x11, 0x0b, 0xcc, 0x07, 0x46, - 0x5f, 0xc6, 0xab, 0x1c, 0xe8, 0xa7, 0x81, 0x07, 0x12, 0xe5, 0xfb, 0x78, 0x14, 0x0c, 0x73, 0xc5, - 0x8c, 0x3f, 0xf0, 0xa0, 0x99, 0xe0, 0x31, 0x03, 0x2c, 0x58, 0xe2, 0x44, 0x9b, 0x40, 0xfb, 0x83, - 0x79, 0xeb, 0x13, 0x31, 0xff, 0x97, 0x92, 0xa6, 0x7c, 0x2a, 0xe1, 0x7b, 0x2d, 0x83, 0x48, 0x69, - 0x3c, 0x26, 0xa5, 0xcf, 0xdd, 0x4a, 0x1f, 0x1d, 0xa0, 0x1c, 0x21, 0xca, 0x03, 0xc7, 0x15, 0x16, - 0x38, 0x51, 0xc3, 0xc6, 0xcf, 0xdf, 0x02, 0x38, 0x08, 0xc6, 0x90, 0xa3, 0x67, 0xe9, 0xcb, 0x1f, - 0x42, 0xed, 0xaf, 0xdb, 0xde, 0xa4, 0x4d, 0xe0, 0x2a, 0x9c, 0x14, 0x8e, 0xb3, 0x84, 0x16, 0xd0, - 0x44, 0x0c, 0xd7, 0x04, 0x60, 0xc2, 0xde, 0xf8, 0x01, 0x9c, 0x67, 0x6f, 0x8c, 0xff, 0x56, 0x42, - 0xf7, 0x10, 0x42, 0xc9, 0xf3, 0x57, 0xc6, 0xab, 0xa5, 0x8e, 0xbc, 0x10, 0x41, 0x1c, 0xb7, 0x4f, - 0x0e, 0x50, 0xb0, 0xe7, 0x7f, 0x01, 0xdf, 0xcf, 0x42, 0x4e, 0x7d, 0xaa, 0x77, 0x5c, 0xb5, 0xf2, - 0x6e, 0x85, 0x58, 0xc5, 0x36, 0x87, 0x6f, 0x89, 0x3f, 0x61, 0xd6, 0x03, 0x4f, 0x12, 0x42, 0xd3, - 0xc3, 0xd8, 0x69, 0xd3, 0x90, 0xd8, 0x1d, 0x8a, 0xab, 0x0d, 0x5c, 0x00, 0xfe, 0xca, 0xd8, 0xf0, - 0x92, 0xfd, 0xf9, 0x8e, 0x70, 0x3c, 0xd9, 0x12, 0x6a, 0x62, 0xd4, 0x2d, 0x73, 0x3e, 0xa7, 0xb0, - 0x42, 0x19, 0x04, 0x96, 0x16, 0x06, 0x98, 0x88, 0xf9, 0x55, 0x4d, 0xf9, 0x1e, 0xc6, 0xf4, 0xb5, - 0xc2, 0xa9, 0xbe, 0xf4, 0x91, 0xb3, 0x80, 0xb9, 0xf7, 0x51, 0x7b, 0x59, 0x59, 0xea, 0x8b, 0xf7, - 0xd3, 0x9d, 0x27, 0x53, 0xc3, 0x6f, 0xef, 0x8e, 0x26, 0x92, 0xc2, 0x48, 0xf9, 0xfc, 0x8b, 0x1c, - 0xa8, 0x6a, 0x15, 0x8e, 0x31, 0xfe, 0x95, 0x84, 0xee, 0x03, 0x03, 0x38, 0x11, 0x49, 0x4e, 0x50, - 0x8e, 0x24, 0x39, 0x03, 0x26, 0x62, 0xfe, 0x1f, 0x69, 0x4a, 0xa9, 0x41, 0x12, 0xf1, 0xe9, 0x13, - 0x49, 0x72, 0x28, 0x23, 0xe8, 0x2f, 0x0f, 0x2c, 0xcb, 0x83, 0xbe, 0xc5, 0x4a, 0xfd, 0x7b, 0x09, - 0xdd, 0x0f, 0x7b, 0x31, 0xeb, 0x87, 0x5f, 0x6a, 0x89, 0x26, 0x43, 0xf6, 0x65, 0x98, 0x2b, 0xa8, - 0x41, 0xd1, 0x8a, 0x49, 0x40, 0x27, 0x62, 0xfe, 0x7a, 0x83, 0x2c, 0xfa, 0xe4, 0x6f, 0xbc, 0xe3, - 0xe8, 0xf8, 0x2f, 0xdf, 0xf7, 0x96, 0x50, 0xe7, 0x78, 0x81, 0x20, 0xa8, 0x01, 0xdb, 0xe3, 0x5d, - 0x51, 0x20, 0x59, 0xe5, 0xbf, 0x30, 0xbe, 0x62, 0x8c, 0x53, 0xbf, 0x84, 0xa6, 0x6f, 0x54, 0xc9, - 0xea, 0x06, 0x3b, 0xcd, 0x0c, 0x42, 0x02, 0x10, 0xbb, 0xdd, 0xe1, 0xf5, 0x74, 0xba, 0xff, 0x89, - 0xa6, 0xac, 0xc2, 0x08, 0x94, 0xc4, 0xa8, 0xf0, 0xfa, 0xc5, 0x79, 0xa3, 0x06, 0x72, 0x79, 0x18, - 0x9b, 0x4b, 0x58, 0x3e, 0x9a, 0xb3, 0x86, 0xb3, 0x96, 0x18, 0xcb, 0x96, 0xf2, 0x7d, 0x34, 0x05, - 0xc8, 0x1b, 0xf8, 0xbf, 0x48, 0x68, 0x26, 0xfd, 0x22, 0x84, 0x47, 0x72, 0x41, 0x47, 0x88, 0xdd, - 0x62, 0xdf, 0x34, 0x59, 0x60, 0x28, 0xda, 0x27, 0x25, 0x4d, 0x69, 0xc4, 0x0b, 0x4c, 0xbc, 0xb3, - 0x83, 0x17, 0xd3, 0x07, 0x3a, 0x00, 0x3f, 0xef, 0x96, 0x7c, 0x34, 0x88, 0x90, 0x65, 0xa9, 0xa1, - 0x91, 0xec, 0xc5, 0xfd, 0xb0, 0xdf, 0xd6, 0x07, 0x6f, 0x19, 0x3b, 0xf0, 0xce, 0xa3, 0x99, 0x4f, - 0x06, 0xe1, 0xe2, 0x12, 0xba, 0xc9, 0x33, 0x49, 0x5a, 0xc9, 0x2d, 0x0f, 0x1b, 0x34, 0xf6, 0x4b, - 0x68, 0x4e, 0x50, 0xad, 0x8f, 0xc6, 0x1b, 0x38, 0xd9, 0x0e, 0xa7, 0x80, 0x62, 0x3d, 0xa3, 0xdc, - 0x6b, 0x0f, 0x6f, 0xc2, 0xe2, 0x30, 0xfa, 0xb7, 0x69, 0xca, 0x4a, 0x5c, 0xa2, 0x8f, 0x1d, 0xd7, - 0x3b, 0x2e, 0xd8, 0xe9, 0xf0, 0x62, 0xb1, 0x06, 0xae, 0x0e, 0xc1, 0x3e, 0xfb, 0x17, 0xba, 0xa0, - 0x6d, 0x48, 0xd2, 0xff, 0x2b, 0x21, 0x64, 0x06, 0x6c, 0xc6, 0x2e, 0x27, 0x1a, 0xa2, 0x3c, 0xf9, - 0xf3, 0x81, 0xd0, 0xb1, 0x39, 0x47, 0x4e, 0x3d, 0xe6, 0x81, 0xdc, 0x1b, 0x9f, 0xa2, 0x38, 0x36, - 0xe6, 0x96, 0xfc, 0x53, 0x9e, 0x7a, 0x3c, 0xe0, 0xcd, 0x47, 0xf8, 0x3f, 0x48, 0x08, 0x93, 0x13, - 0x3e, 0x18, 0x02, 0x66, 0xe8, 0xec, 0x67, 0xcc, 0x0c, 0x26, 0xe1, 0xca, 0x00, 0x11, 0x84, 0x32, - 0xa0, 0x5b, 0xd2, 0x94, 0x9f, 0xe1, 0x47, 0xcc, 0xdd, 0x15, 0x7d, 0x7e, 0x0c, 0x6f, 0x9f, 0x2f, - 0x9f, 0xd4, 0x4f, 0xf7, 0xd7, 0xd5, 0x27, 0xa8, 0xc1, 0x7b, 0x12, 0xa2, 0x39, 0xd3, 0x91, 0x73, - 0x02, 0x29, 0x1b, 0x3f, 0xf9, 0x59, 0xfa, 0xf2, 0x2f, 0xb3, 0x83, 0x83, 0xfa, 0x7b, 0x67, 0xd2, - 0xc7, 0x6e, 0x08, 0x1b, 0x7c, 0xe7, 0xf3, 0x2d, 0x22, 0x95, 0x66, 0x30, 0x69, 0x29, 0x80, 0x87, - 0x24, 0x84, 0xaa, 0xa2, 0xf1, 0x86, 0x68, 0xc4, 0x79, 0xa0, 0xcd, 0x3a, 0x77, 0x3a, 0x05, 0x10, - 0x4a, 0x67, 0xbd, 0xa6, 0x3c, 0x89, 0xe7, 0xb3, 0x8d, 0xe5, 0x51, 0xbd, 0x7b, 0x30, 0x7b, 0xe5, - 0x80, 0x3e, 0x7c, 0x31, 0xdd, 0xb6, 0xdf, 0xbb, 0x84, 0x0a, 0xe9, 0xc0, 0x17, 0x99, 0xb1, 0x01, - 0xb1, 0x52, 0x38, 0xa6, 0x7c, 0xd8, 0xbb, 0xc4, 0x0d, 0xfb, 0x7a, 0xf2, 0x35, 0x03, 0xf5, 0x61, - 0x09, 0xcd, 0x7a, 0x39, 0x22, 0x20, 0x6f, 0xb3, 0x0f, 0x62, 0x2d, 0x43, 0x7f, 0x69, 0x7e, 0x20, - 0x4a, 0xc0, 0x4e, 0x4d, 0x59, 0x8d, 0x69, 0x7c, 0x7a, 0x0b, 0xf6, 0x8b, 0x44, 0xec, 0x9d, 0x50, - 0x7f, 0xc4, 0xeb, 0x73, 0x43, 0xbd, 0x25, 0x62, 0x41, 0x7e, 0x06, 0x4f, 0x58, 0xe3, 0xb0, 0x21, - 0xc9, 0xc9, 0xd7, 0xe4, 0xb0, 0x21, 0xc9, 0xcd, 0x76, 0xe3, 0xdf, 0xad, 0x29, 0xeb, 0x70, 0x00, - 0xf0, 0xe3, 0xd9, 0x93, 0xca, 0xf4, 0x2b, 0x07, 0xf9, 0x06, 0x3f, 0xd3, 0xd7, 0xee, 0xab, 0x8d, - 0x36, 0xf8, 0xc6, 0x3f, 0xba, 0x3a, 0xde, 0xd6, 0xe3, 0x9d, 0x9b, 0x03, 0x4b, 0xf0, 0xf7, 0xfb, - 0x17, 0xbb, 0xe1, 0xdf, 0x60, 0x7c, 0xd2, 0x40, 0x7e, 0x44, 0x42, 0xf3, 0x72, 0x73, 0x0f, 0xd8, - 0xd7, 0x02, 0x2e, 0xb9, 0x26, 0xec, 0x6b, 0x01, 0xb7, 0x34, 0x06, 0xfe, 0xed, 0x64, 0x2d, 0x60, - 0x89, 0xbf, 0x4f, 0x72, 0x62, 0x78, 0x1d, 0xca, 0x26, 0x92, 0x1b, 0xc8, 0x9f, 0x61, 0x60, 0xff, - 0x97, 0x12, 0x9a, 0xef, 0x98, 0x3b, 0xc4, 0x6d, 0x05, 0xe0, 0x9c, 0x3f, 0xc6, 0x6d, 0x05, 0xe0, - 0x92, 0x90, 0xc4, 0xff, 0x8a, 0x9d, 0x18, 0x92, 0xfb, 0xc6, 0xeb, 0x50, 0x96, 0xe7, 0x5a, 0x02, - 0x54, 0x58, 0x70, 0x69, 0xb6, 0x8d, 0x07, 0x84, 0xd7, 0xcf, 0x37, 0x1e, 0x96, 0x74, 0x0a, 0xf9, - 0xc6, 0xc3, 0x1a, 0xa9, 0xdf, 0x69, 0x3c, 0x48, 0xee, 0x06, 0xaf, 0x43, 0xd9, 0x44, 0xe3, 0x01, - 0x81, 0xfe, 0x0d, 0xec, 0xff, 0x3b, 0x38, 0x45, 0x50, 0x53, 0x5b, 0x15, 0x57, 0x1b, 0xd4, 0x48, - 0x32, 0x1c, 0x6a, 0xb2, 0x53, 0xe0, 0x04, 0xe5, 0xb8, 0xba, 0x74, 0x06, 0x4c, 0xc4, 0xfc, 0xbd, - 0x92, 0xa6, 0xec, 0xc0, 0x8b, 0x2d, 0x7b, 0x29, 0x13, 0x04, 0x26, 0x4e, 0xef, 0x13, 0x74, 0x53, - 0xd5, 0xdd, 0x93, 0xfa, 0xe2, 0xbd, 0x4c, 0x5f, 0x3b, 0x3c, 0x93, 0xd9, 0xa4, 0xee, 0xcd, 0xdb, - 0x2c, 0xcf, 0x8e, 0x91, 0x96, 0xd4, 0xf3, 0x16, 0xe5, 0xfb, 0x12, 0xac, 0xcf, 0x37, 0xf0, 0xff, - 0xc5, 0x53, 0x5d, 0xd8, 0x59, 0x10, 0xc8, 0x7b, 0x95, 0x60, 0xe5, 0xc2, 0x63, 0x05, 0xc3, 0x26, - 0x62, 0xfe, 0x3f, 0xd2, 0x94, 0x67, 0xf1, 0x62, 0xcb, 0x85, 0x83, 0x8d, 0x0f, 0x8b, 0x61, 0x99, - 0xe4, 0x02, 0x44, 0xe8, 0x7d, 0xc2, 0x3b, 0x69, 0x7a, 0x8d, 0x21, 0xff, 0x7b, 0x09, 0x2d, 0xb4, - 0x9c, 0xa8, 0xe4, 0x23, 0xd9, 0x05, 0xd0, 0x91, 0x64, 0x57, 0xd8, 0x44, 0xcc, 0xdf, 0xac, 0x29, - 0x32, 0x5e, 0x68, 0x39, 0xb0, 0x31, 0x21, 0xbc, 0x6e, 0x15, 0x30, 0xac, 0x81, 0xc9, 0x0f, 0xeb, - 0x3f, 0x48, 0x34, 0x3a, 0xb3, 0x8d, 0xc2, 0xd2, 0x3c, 0x5b, 0x7e, 0x2b, 0x7d, 0xcb, 0x0b, 0x84, - 0x4c, 0xc4, 0xfc, 0xff, 0x93, 0xa6, 0xd4, 0xba, 0x0a, 0x36, 0xdd, 0xf2, 0x96, 0xdb, 0x4f, 0x0b, - 0xf2, 0x36, 0x80, 0x95, 0x04, 0x5e, 0x5a, 0x08, 0xed, 0xf8, 0xcf, 0x25, 0x34, 0xbf, 0x26, 0x12, - 0x4e, 0x6e, 0x50, 0x1b, 0x68, 0x7e, 0x10, 0xb6, 0x78, 0xb2, 0xd1, 0xeb, 0x08, 0xe6, 0x48, 0xaf, - 0x0b, 0x64, 0x22, 0x66, 0xcc, 0xd0, 0xab, 0xf0, 0x02, 0xfd, 0xf0, 0xfb, 0xfa, 0xa5, 0x23, 0x7a, - 0xd7, 0x09, 0xb8, 0xaa, 0x67, 0x47, 0x5c, 0x2e, 0xe5, 0x79, 0x56, 0x46, 0xe1, 0x48, 0x38, 0xb9, - 0x8b, 0xef, 0xe2, 0x0d, 0x19, 0xfd, 0x77, 0x12, 0xba, 0x57, 0x69, 0x68, 0xa0, 0x5f, 0x57, 0x1b, - 0x18, 0x35, 0x8f, 0x3a, 0xdc, 0x68, 0xe5, 0x02, 0x19, 0xb4, 0x2c, 0x2b, 0x08, 0x2e, 0x11, 0xf3, - 0xc7, 0x89, 0x2a, 0xea, 0x57, 0x0e, 0xb2, 0xf3, 0x89, 0xb7, 0xce, 0x19, 0x0b, 0x76, 0x0b, 0x41, - 0xf9, 0xab, 0xe1, 0x36, 0xcf, 0xef, 0xb4, 0x0f, 0x09, 0x35, 0x34, 0xec, 0x62, 0x1f, 0x15, 0x88, - 0xfb, 0x54, 0x42, 0x33, 0x85, 0x47, 0xfd, 0xf6, 0xed, 0x97, 0x50, 0xe9, 0xba, 0xfd, 0xb2, 0xc0, - 0x98, 0x53, 0xc4, 0x4a, 0x3c, 0x97, 0x07, 0x04, 0x80, 0xb8, 0x52, 0xde, 0x45, 0x39, 0x05, 0x34, - 0x58, 0x8a, 0xb9, 0x67, 0x5c, 0xec, 0x2f, 0x71, 0xbb, 0x97, 0x36, 0xd0, 0xbd, 0x22, 0xa1, 0x99, - 0xc2, 0xd3, 0x69, 0xec, 0x77, 0x33, 0x75, 0xf9, 0xd0, 0xb5, 0xc0, 0x50, 0x74, 0x7f, 0x68, 0xcc, - 0x68, 0x73, 0xf9, 0xb3, 0x6b, 0x8a, 0xee, 0xfc, 0x9c, 0x02, 0x01, 0xd1, 0x65, 0x5e, 0xbf, 0xab, - 0xaf, 0x00, 0xbf, 0x3f, 0x37, 0x50, 0xbe, 0x29, 0xa1, 0x99, 0xc2, 0xd3, 0x55, 0xb7, 0x5b, 0xc1, - 0xfc, 0x28, 0x5b, 0x60, 0xcc, 0xa5, 0xa9, 0x8c, 0xef, 0x61, 0xd6, 0x2a, 0xda, 0xd2, 0x40, 0x91, - 0x5e, 0x2c, 0x9e, 0x3d, 0xd7, 0x9b, 0x15, 0x02, 0xf2, 0x4b, 0x03, 0x05, 0x20, 0x8f, 0x3f, 0x96, - 0x50, 0x31, 0x99, 0x40, 0x0d, 0xb4, 0x1f, 0x74, 0x9c, 0x5a, 0x05, 0x9c, 0x7d, 0xee, 0x00, 0x14, - 0xe1, 0x1f, 0x1b, 0x22, 0x31, 0x93, 0x19, 0x9a, 0x68, 0x4b, 0x83, 0xf7, 0x41, 0x71, 0x17, 0x4e, - 0xbf, 0x6b, 0x47, 0x16, 0x17, 0x82, 0xec, 0x59, 0x0f, 0x9a, 0xc1, 0x1f, 0x28, 0xda, 0xd7, 0xd1, - 0xbc, 0xca, 0x75, 0x1d, 0x2d, 0x40, 0x50, 0x7c, 0x7f, 0x25, 0x69, 0x4a, 0xbf, 0x84, 0xef, 0x11, - 0x30, 0xa6, 0xf6, 0x53, 0xcb, 0x73, 0xdc, 0xca, 0xa1, 0xee, 0xc6, 0x61, 0xab, 0x17, 0xbb, 0xaa, - 0x8f, 0xb1, 0xc3, 0x9b, 0x23, 0x68, 0xea, 0x8e, 0xda, 0x2a, 0xfb, 0xa9, 0x83, 0xb5, 0x9e, 0xf1, - 0xea, 0xd1, 0x89, 0xc0, 0x28, 0xc3, 0x7e, 0x60, 0x0c, 0x30, 0xe6, 0x2a, 0xbe, 0xa3, 0xb6, 0x8a, - 0xee, 0xeb, 0x4b, 0xc4, 0x32, 0x9b, 0xce, 0x3b, 0x9f, 0x3b, 0x12, 0xa4, 0x5b, 0x63, 0xf5, 0x86, - 0x0e, 0x7d, 0x21, 0xa1, 0x39, 0x82, 0xd6, 0x3a, 0xa2, 0x6e, 0xad, 0x77, 0x45, 0x3d, 0x17, 0x8c, - 0xa2, 0xfe, 0x53, 0x4d, 0xf1, 0xb3, 0x63, 0xb9, 0xd4, 0x70, 0x6f, 0x6b, 0xac, 0x9e, 0xad, 0x65, - 0xe1, 0x97, 0x80, 0xae, 0xf3, 0x81, 0x1c, 0x43, 0x57, 0x70, 0x9e, 0xd9, 0xd7, 0x1a, 0xab, 0xa7, - 0x46, 0xe0, 0xcf, 0x25, 0x34, 0x47, 0xd0, 0x61, 0x47, 0x02, 0xac, 0xf5, 0xae, 0x04, 0xe4, 0x82, - 0x51, 0x02, 0x9a, 0x34, 0x65, 0x0d, 0x9e, 0x2f, 0x58, 0x03, 0x1f, 0xc7, 0xda, 0xbb, 0xc8, 0x66, - 0x11, 0x7c, 0x56, 0x92, 0xca, 0x03, 0x93, 0x23, 0x09, 0x5f, 0xf3, 0xa0, 0x59, 0x5c, 0x61, 0x0c, - 0x6a, 0x1e, 0x76, 0x55, 0x27, 0x81, 0x96, 0xa5, 0xf9, 0x81, 0x28, 0x25, 0x7f, 0x23, 0x69, 0xca, - 0x15, 0x09, 0xcf, 0x17, 0xd4, 0xce, 0xb7, 0xa3, 0xb6, 0x8a, 0xaa, 0xde, 0x89, 0xfc, 0xaa, 0x67, - 0x42, 0xde, 0x0d, 0xf5, 0x5b, 0x8c, 0xf3, 0x49, 0x32, 0xfe, 0xb5, 0x84, 0xe6, 0x09, 0x66, 0xa6, - 0x91, 0xec, 0x35, 0x97, 0xe5, 0x31, 0x44, 0x8d, 0xe2, 0x36, 0xb3, 0x74, 0x62, 0x40, 0xca, 0xc1, - 0x3f, 0xd2, 0x94, 0x1a, 0x5c, 0x22, 0xf2, 0x2f, 0x4e, 0x20, 0xf8, 0x85, 0x07, 0xe1, 0x20, 0x1d, - 0x54, 0xfe, 0xa2, 0x4b, 0xbf, 0x7a, 0x86, 0xc5, 0x2b, 0xd3, 0x4f, 0x5f, 0xd1, 0xcf, 0x9e, 0x15, - 0x04, 0x24, 0x80, 0x4b, 0xdd, 0x08, 0x83, 0xae, 0x05, 0x4b, 0xfc, 0x27, 0x70, 0x71, 0xb9, 0xa3, - 0xb6, 0xaa, 0x2a, 0xdc, 0xe0, 0x70, 0x62, 0x66, 0xd6, 0xb9, 0x9e, 0x24, 0x89, 0x20, 0xa6, 0x7c, - 0x3f, 0x87, 0xef, 0x03, 0x9a, 0x5a, 0x63, 0xf5, 0xbe, 0xfa, 0x70, 0x03, 0xbb, 0xc0, 0x59, 0x06, - 0xf4, 0x10, 0xd1, 0x14, 0xa9, 0x69, 0x8d, 0xd5, 0x67, 0xfa, 0xda, 0x0d, 0xc0, 0x09, 0x67, 0x93, - 0xd6, 0x58, 0xbd, 0x01, 0xc7, 0xe5, 0xfb, 0x2f, 0x24, 0x34, 0x17, 0x8c, 0xdc, 0x56, 0xe6, 0x8c, - 0x80, 0x5d, 0xac, 0x20, 0x07, 0x60, 0xd4, 0x2c, 0x9b, 0x10, 0x8e, 0x92, 0xf4, 0x73, 0x4d, 0x79, - 0x9e, 0x2d, 0x91, 0xb8, 0x43, 0x86, 0x77, 0x45, 0x4e, 0x01, 0xb8, 0x7d, 0xdf, 0x19, 0xed, 0xa2, - 0x47, 0xd0, 0xa3, 0xb7, 0xd2, 0x6d, 0x97, 0x52, 0xa3, 0x43, 0x99, 0xd1, 0x8f, 0xd8, 0x49, 0xe6, - 0x43, 0xfe, 0x07, 0xf2, 0xb9, 0x54, 0x18, 0x06, 0xe8, 0x5f, 0x4a, 0x68, 0xae, 0xb9, 0x9d, 0x77, - 0x21, 0x28, 0x07, 0xc0, 0x95, 0x20, 0x1b, 0x1c, 0x25, 0xe8, 0x67, 0xc2, 0x22, 0x8a, 0xd7, 0xb2, - 0x45, 0x14, 0x2f, 0x10, 0xed, 0x8e, 0x37, 0x90, 0x0f, 0x71, 0xab, 0x2b, 0x08, 0x21, 0xc3, 0x83, - 0xe6, 0x9a, 0xae, 0x47, 0x2e, 0x64, 0xe4, 0x00, 0xb8, 0x92, 0x61, 0x83, 0xa3, 0x64, 0xfc, 0x9d, - 0xa4, 0x29, 0x1f, 0x49, 0xc6, 0xc8, 0x18, 0x56, 0xd3, 0x24, 0xe4, 0xb8, 0x24, 0xda, 0x51, 0x5e, - 0x6e, 0x58, 0x8d, 0xb1, 0x77, 0xf8, 0xcf, 0xf4, 0xe9, 0xce, 0xcc, 0xf1, 0x53, 0xfa, 0xe5, 0x93, - 0x99, 0xbe, 0x76, 0xa3, 0x30, 0xfd, 0xee, 0x0d, 0x38, 0xa4, 0xd6, 0x3b, 0xf6, 0x67, 0x07, 0x86, - 0x32, 0xef, 0x5d, 0x4f, 0xbf, 0x7d, 0x01, 0x3a, 0xe2, 0xf6, 0x26, 0x7b, 0x71, 0x3f, 0x94, 0xa4, - 0x4f, 0x77, 0x1a, 0x6d, 0xf8, 0x4d, 0x44, 0x66, 0xa4, 0x9d, 0x1c, 0x81, 0xdf, 0xa4, 0xe7, 0x8c, - 0xa3, 0xc3, 0xfa, 0xe1, 0x1b, 0x14, 0x94, 0x99, 0x2c, 0xc2, 0xc9, 0xb2, 0xc0, 0x24, 0x38, 0x89, - 0xff, 0x58, 0x42, 0xb3, 0xe8, 0x9d, 0x09, 0xf0, 0xd0, 0xed, 0x46, 0xc5, 0xc2, 0xc0, 0xa5, 0xf9, - 0x81, 0x28, 0xf7, 0x54, 0x63, 0x3f, 0x36, 0xd7, 0xbc, 0x76, 0x01, 0xde, 0x2d, 0x16, 0x57, 0x7a, - 0x5b, 0x4d, 0x5c, 0x04, 0x61, 0x28, 0xc3, 0x93, 0x21, 0xe1, 0x1f, 0x24, 0x70, 0x7c, 0x11, 0xbc, - 0xc4, 0x80, 0x94, 0xc7, 0xf2, 0x6c, 0x95, 0x6d, 0x24, 0x95, 0x15, 0x06, 0x4c, 0x49, 0x7b, 0x5d, - 0x53, 0xd6, 0xe1, 0x25, 0xa2, 0x37, 0x0b, 0x1d, 0x63, 0x02, 0x46, 0xad, 0x11, 0x8d, 0x19, 0x20, - 0xfa, 0x9e, 0xa5, 0xaf, 0x9e, 0x13, 0xf6, 0xd1, 0xce, 0x0e, 0x50, 0xae, 0x1e, 0x64, 0xe0, 0x15, - 0x85, 0x6f, 0x7a, 0xd0, 0x6c, 0xe6, 0xb1, 0x04, 0x84, 0x2e, 0x75, 0x73, 0x68, 0xb2, 0x50, 0xf8, - 0xc8, 0x04, 0x50, 0x94, 0xb4, 0xbf, 0xb5, 0x4c, 0xba, 0xb9, 0x34, 0xb9, 0x4f, 0xba, 0x39, 0x90, - 0x77, 0x63, 0xd2, 0x5d, 0x82, 0xf3, 0x5a, 0x3f, 0xfc, 0x7f, 0x4b, 0x68, 0xde, 0x96, 0x68, 0xab, - 0x4a, 0x3d, 0x56, 0x81, 0x79, 0x36, 0x63, 0x90, 0x0b, 0xe1, 0x3a, 0xeb, 0xda, 0x01, 0x29, 0x0b, - 0xbb, 0x24, 0x4d, 0x79, 0x91, 0x5d, 0x76, 0x64, 0x2e, 0x8d, 0x98, 0x97, 0x6d, 0x57, 0xcf, 0x79, - 0xd7, 0xea, 0x57, 0x0e, 0x52, 0xdf, 0x82, 0x9b, 0x9f, 0x19, 0x26, 0x82, 0x6b, 0xb8, 0x00, 0x68, - 0x58, 0x7b, 0xf2, 0x16, 0x26, 0x33, 0x7c, 0x2d, 0x33, 0x70, 0x9e, 0xe9, 0xf6, 0x1a, 0x7f, 0x79, - 0xe1, 0x8a, 0xc1, 0x2f, 0xb0, 0x7a, 0x3d, 0xe8, 0xbe, 0xa0, 0xda, 0xcc, 0xb0, 0xdd, 0x10, 0x8f, - 0x36, 0xbb, 0x28, 0x88, 0x13, 0x94, 0xab, 0x82, 0x38, 0x03, 0x53, 0x16, 0xbc, 0x4f, 0xae, 0xb5, - 0xe6, 0x9b, 0xde, 0x85, 0x97, 0x46, 0xc6, 0x4f, 0x31, 0xd7, 0xcc, 0x8d, 0x56, 0x5f, 0xd5, 0xd4, - 0xc8, 0xdb, 0x1c, 0x2e, 0x35, 0x74, 0x19, 0x40, 0x0d, 0x4b, 0x39, 0x76, 0x30, 0x7d, 0x72, 0x30, - 0x3b, 0x48, 0x79, 0x92, 0x1a, 0x39, 0x9a, 0x69, 0xbf, 0xa1, 0x9f, 0xee, 0x67, 0xee, 0x63, 0x97, - 0x81, 0x27, 0x81, 0xaf, 0xc2, 0x93, 0xdf, 0x4c, 0x41, 0xf7, 0x54, 0x35, 0xa9, 0xa1, 0x08, 0xf5, - 0xfb, 0x03, 0x86, 0xd8, 0xdd, 0x2c, 0x72, 0x41, 0x18, 0x37, 0x96, 0x17, 0x00, 0xc9, 0x6e, 0xf8, - 0xa6, 0x68, 0xca, 0xaf, 0x3c, 0x78, 0x91, 0x78, 0x21, 0x47, 0x29, 0x65, 0x43, 0xef, 0xfd, 0xd4, - 0x53, 0x20, 0x4b, 0x6e, 0x9d, 0x4d, 0x8d, 0xbc, 0xcd, 0x19, 0xc0, 0xcb, 0xf5, 0x5b, 0x37, 0xd2, - 0x43, 0x1d, 0x99, 0x9e, 0x83, 0x34, 0xa7, 0xa9, 0xf0, 0xa9, 0x5f, 0xb7, 0xbd, 0x69, 0x5e, 0x9c, - 0x0e, 0x0d, 0xeb, 0xa3, 0x6f, 0xa6, 0x2f, 0xd3, 0x9f, 0x46, 0xc3, 0xb1, 0x77, 0x78, 0x2d, 0xbc, - 0x6c, 0xa5, 0xc1, 0x7f, 0x60, 0xae, 0x1a, 0xe9, 0xc8, 0x1e, 0x18, 0xcb, 0x9c, 0x1f, 0x30, 0x74, - 0x8e, 0xf4, 0x0f, 0x8e, 0xf7, 0x00, 0x09, 0xcb, 0x13, 0x98, 0xd2, 0xb2, 0x07, 0xc6, 0x52, 0xb7, - 0xdf, 0xcf, 0x0e, 0xee, 0xa7, 0x82, 0x4e, 0x80, 0xf5, 0x9b, 0x9f, 0x65, 0x46, 0xba, 0xf5, 0x81, - 0xae, 0xf4, 0xe1, 0x1e, 0x6e, 0x0f, 0x20, 0xef, 0x1b, 0xf4, 0x99, 0xbd, 0xfd, 0x9e, 0x3e, 0x7c, - 0xf1, 0xce, 0x68, 0x17, 0x14, 0x8e, 0xb7, 0xf5, 0x65, 0x6f, 0x1f, 0xa2, 0xef, 0x82, 0xfa, 0xda, - 0xb7, 0x87, 0x12, 0x7b, 0x40, 0x0b, 0xb2, 0x83, 0x17, 0x33, 0x23, 0x07, 0x41, 0xeb, 0x99, 0x2e, - 0x3c, 0x1d, 0x58, 0x33, 0x89, 0x71, 0x27, 0x65, 0x6c, 0xf0, 0x3f, 0x9d, 0x8a, 0xee, 0xb5, 0x8d, - 0xd7, 0x0e, 0xd9, 0x7e, 0xce, 0xec, 0x00, 0xc4, 0x04, 0xe0, 0xb1, 0x82, 0x60, 0x99, 0xc7, 0xed, - 0x14, 0x4d, 0xf9, 0xff, 0x3d, 0xf8, 0x85, 0x3c, 0x22, 0x40, 0xe4, 0xfd, 0x76, 0xe6, 0x58, 0xff, - 0x2f, 0x5a, 0xd4, 0xf8, 0x5e, 0x1a, 0x2a, 0x91, 0xc8, 0x04, 0x4d, 0x94, 0x47, 0x38, 0xfa, 0x7b, - 0x89, 0xf9, 0x1a, 0x12, 0xb3, 0xd6, 0x41, 0x62, 0xe4, 0x89, 0x25, 0x06, 0xff, 0x35, 0xdd, 0xac, - 0x59, 0x4c, 0x45, 0x41, 0xeb, 0xa4, 0xd2, 0x3c, 0x9e, 0xc6, 0x56, 0x23, 0x91, 0xd0, 0x94, 0xa7, - 0xf1, 0x3c, 0xc0, 0xd7, 0xf8, 0x28, 0x9d, 0x6e, 0xa9, 0x63, 0x23, 0xf1, 0xb4, 0x7e, 0x9b, 0x5b, - 0x42, 0xf0, 0xd6, 0xde, 0xca, 0xc1, 0xe0, 0x21, 0x16, 0x9e, 0xac, 0x1d, 0xc4, 0xff, 0x41, 0xb2, - 0xb8, 0x52, 0x33, 0x35, 0x58, 0x3e, 0x11, 0xd6, 0xa6, 0x16, 0x04, 0x0a, 0x01, 0xfd, 0x27, 0x25, - 0x51, 0x9e, 0x80, 0xc4, 0x29, 0x68, 0x01, 0x6c, 0x52, 0x48, 0x79, 0xb5, 0x9a, 0x08, 0xc7, 0x55, - 0xe2, 0x4c, 0x83, 0x5d, 0x2e, 0x6b, 0x73, 0xe1, 0x18, 0xa9, 0x2b, 0x0b, 0x05, 0xa7, 0xe4, 0xa6, - 0x3d, 0x9a, 0x72, 0xde, 0x83, 0x17, 0xc2, 0x9e, 0x47, 0x80, 0xa0, 0x47, 0x31, 0x1d, 0x9e, 0xdc, - 0xdd, 0xd0, 0xd0, 0x65, 0x1b, 0x14, 0xf5, 0x7a, 0x81, 0xe3, 0xa7, 0xd1, 0x3e, 0x7d, 0x70, 0x34, - 0x7b, 0xe8, 0x3a, 0x6f, 0x41, 0xa5, 0x1f, 0x72, 0x51, 0x5f, 0x3d, 0xa7, 0x8f, 0x1e, 0xd7, 0x3b, - 0x2e, 0xa4, 0x4f, 0x0f, 0xeb, 0xa7, 0xfa, 0x41, 0x0b, 0xf8, 0x9d, 0x87, 0x7e, 0xeb, 0x06, 0x5c, - 0x12, 0x80, 0x21, 0x10, 0x35, 0x1c, 0xf6, 0x13, 0x99, 0xbe, 0xf6, 0x06, 0xf3, 0xe3, 0x7a, 0xf7, - 0xc7, 0xd9, 0x03, 0x63, 0xe9, 0xc1, 0x63, 0x90, 0x05, 0x2d, 0x7b, 0x89, 0xc4, 0x47, 0xfa, 0xf0, - 0x12, 0xd7, 0xdc, 0xf4, 0xe0, 0xb1, 0xd4, 0xad, 0x23, 0x7a, 0xe7, 0x51, 0xfd, 0x4a, 0xf7, 0x9d, - 0xd1, 0xf7, 0xcc, 0xbd, 0xcb, 0xa1, 0x6e, 0xfd, 0x4a, 0xb7, 0x38, 0x84, 0xd0, 0x36, 0x3b, 0x78, - 0x13, 0xac, 0x9b, 0xcd, 0x4a, 0x92, 0x81, 0x7d, 0xc6, 0xbf, 0x76, 0x12, 0xb2, 0x4b, 0x11, 0x65, - 0xd6, 0x7c, 0xd8, 0xe3, 0x34, 0xc4, 0xe4, 0x45, 0x7c, 0x01, 0x43, 0x6c, 0xc0, 0x4d, 0x62, 0x88, - 0x01, 0x9c, 0x0e, 0xf1, 0x1f, 0x4b, 0x9a, 0xf2, 0x47, 0x39, 0x23, 0x6c, 0x00, 0xd0, 0x11, 0x0e, - 0xd9, 0x07, 0x38, 0xd4, 0x92, 0x8c, 0x26, 0xea, 0x43, 0x4d, 0xe1, 0x48, 0x23, 0x4f, 0xb6, 0x25, - 0x34, 0xe4, 0x2e, 0x59, 0x84, 0xd1, 0x23, 0x86, 0xd9, 0x3f, 0x39, 0x98, 0xba, 0x3d, 0x90, 0xbe, - 0xfc, 0x01, 0x8d, 0xc6, 0x37, 0x74, 0x34, 0x35, 0xd4, 0x96, 0x3d, 0x74, 0x3d, 0x7d, 0xa0, 0x43, - 0x3f, 0xf8, 0xf9, 0x57, 0x67, 0x5e, 0x22, 0xfc, 0x3a, 0x61, 0xde, 0x75, 0x0f, 0xf3, 0x7c, 0x20, - 0x10, 0x5b, 0xc2, 0x91, 0x2d, 0xa1, 0xd7, 0x08, 0xef, 0xca, 0xf2, 0x30, 0xc3, 0x04, 0x9b, 0xc0, - 0xf3, 0xc1, 0x06, 0x4d, 0x39, 0x37, 0x46, 0xdc, 0xbe, 0x68, 0x70, 0xdb, 0xe6, 0x70, 0xc4, 0xa8, - 0x2c, 0x6f, 0x06, 0x20, 0xca, 0xbd, 0x9f, 0x14, 0xc6, 0x3d, 0x88, 0x75, 0x61, 0xfc, 0x7b, 0xa5, - 0x7b, 0xfc, 0x54, 0xcf, 0xf8, 0x2f, 0xdf, 0x17, 0x79, 0xa7, 0x1f, 0xed, 0xce, 0x5e, 0x39, 0xa0, - 0x7f, 0xd8, 0xc7, 0x79, 0x00, 0xda, 0x02, 0x2b, 0x08, 0xff, 0x64, 0x56, 0x10, 0x75, 0xd1, 0x96, - 0x08, 0x67, 0xdb, 0x71, 0x0f, 0x2a, 0x59, 0x4f, 0xe2, 0xe4, 0x73, 0xfc, 0x94, 0x96, 0x64, 0x74, - 0x5b, 0x7d, 0xa8, 0x49, 0xc5, 0xb6, 0xa7, 0x4c, 0x6e, 0x90, 0x8c, 0x79, 0xab, 0x0a, 0x6f, 0x40, - 0xf9, 0x77, 0x5c, 0xd2, 0x94, 0xcd, 0x78, 0xa9, 0x3e, 0xda, 0xa6, 0xf7, 0x0c, 0xf2, 0xbd, 0x05, - 0x75, 0x44, 0x22, 0x4e, 0x6e, 0xe9, 0xce, 0x8f, 0xe0, 0x0d, 0x98, 0xd7, 0x02, 0x45, 0x95, 0x92, - 0x80, 0xc0, 0xd1, 0x11, 0xbc, 0x8b, 0x24, 0x0c, 0x79, 0xde, 0xff, 0xcc, 0x24, 0x18, 0xc2, 0x46, - 0x43, 0x2d, 0x87, 0x8c, 0x01, 0x06, 0x5f, 0x4e, 0x79, 0xd0, 0xfd, 0xd5, 0xe1, 0x84, 0x0b, 0x63, - 0x6c, 0x74, 0xba, 0x82, 0x32, 0xce, 0xac, 0x9e, 0x44, 0x0b, 0xca, 0x9a, 0x13, 0x94, 0x35, 0x1d, - 0xd7, 0xc6, 0xdf, 0xbd, 0x3c, 0x21, 0x6b, 0x04, 0xa8, 0xbc, 0xac, 0x51, 0xfc, 0xdf, 0xfb, 0x4a, - 0xac, 0x69, 0x00, 0x7c, 0x0d, 0xde, 0x0c, 0x48, 0x08, 0xc1, 0x01, 0x20, 0x79, 0xed, 0xed, 0xf2, - 0x46, 0x5d, 0xc8, 0x84, 0xe4, 0xf5, 0xe7, 0x03, 0x31, 0x7d, 0x88, 0xd6, 0x60, 0x9a, 0x76, 0x84, - 0xbe, 0x8a, 0x5d, 0x4a, 0x9f, 0x6a, 0x1f, 0xbf, 0x0d, 0x99, 0x44, 0xb2, 0xb7, 0x7b, 0x8c, 0x9d, - 0x64, 0x5f, 0xbb, 0xde, 0xf3, 0xb6, 0xde, 0x7d, 0x45, 0x78, 0xbc, 0xed, 0xec, 0xf1, 0x99, 0x0c, - 0x25, 0xf6, 0x18, 0x08, 0x1f, 0xf0, 0xa0, 0x19, 0xe4, 0x6d, 0x39, 0xc1, 0xd7, 0xe7, 0xf8, 0xec, - 0x5c, 0x44, 0xf7, 0xa1, 0x3c, 0x10, 0x14, 0xdb, 0x2b, 0xc4, 0x62, 0xce, 0xa3, 0x6f, 0xd2, 0xc9, - 0x63, 0x73, 0xa3, 0xde, 0xbb, 0x9b, 0x3e, 0x45, 0x27, 0x25, 0x99, 0xbe, 0x76, 0xc0, 0xb1, 0xcc, - 0x07, 0xd3, 0x18, 0x80, 0x43, 0x94, 0xa0, 0x95, 0x3e, 0xf8, 0x95, 0x1a, 0xe9, 0x18, 0x3f, 0xd5, - 0x93, 0x1a, 0x7e, 0x1b, 0xda, 0x40, 0x83, 0xd4, 0xd0, 0xb1, 0xd4, 0xc8, 0xdb, 0x30, 0x69, 0x41, - 0x79, 0x22, 0xa9, 0xc6, 0x0c, 0xf9, 0xbf, 0x74, 0x04, 0x32, 0x81, 0xe5, 0x79, 0xe5, 0x6a, 0x90, - 0x5d, 0xbe, 0xcf, 0xf8, 0xd7, 0xf2, 0x5a, 0xfd, 0x3c, 0xf7, 0x7b, 0x75, 0x1e, 0x36, 0xb3, 0x6e, - 0x02, 0xbf, 0x57, 0x0b, 0x23, 0x36, 0x6b, 0xca, 0x12, 0x8c, 0xc0, 0xc4, 0x11, 0x0e, 0xcc, 0x33, - 0xff, 0x16, 0x4e, 0xc2, 0x9c, 0x5d, 0x07, 0x2d, 0x98, 0x1a, 0x38, 0x9e, 0x91, 0x10, 0x82, 0x33, - 0x4c, 0x67, 0x1c, 0xcd, 0x3a, 0x57, 0x1c, 0x45, 0x10, 0x8a, 0x63, 0x0d, 0xc1, 0x11, 0xce, 0x18, - 0x01, 0x47, 0xf1, 0xd4, 0xd3, 0x28, 0x01, 0xf7, 0xc0, 0xc0, 0x84, 0x38, 0xe2, 0xf7, 0xc1, 0x0d, - 0x9d, 0x60, 0xe7, 0xe4, 0x86, 0x2e, 0xa2, 0xf6, 0xa0, 0x6b, 0x3d, 0xc5, 0xeb, 0x25, 0x4d, 0x79, - 0x94, 0xb9, 0xa1, 0x13, 0xbc, 0x4a, 0xc4, 0x23, 0x45, 0x92, 0x88, 0x4a, 0x3c, 0x4d, 0xf4, 0xe3, - 0x89, 0xf1, 0x3b, 0xe5, 0x41, 0xc5, 0xc6, 0xd2, 0x95, 0x20, 0xe8, 0xf8, 0xfe, 0x46, 0xc4, 0xd0, - 0xe7, 0x0e, 0x40, 0x51, 0xfc, 0x53, 0x49, 0x53, 0x2e, 0x4a, 0x6c, 0xb5, 0x6b, 0x54, 0xd1, 0xd5, - 0x6e, 0xaf, 0xeb, 0xf9, 0x99, 0x09, 0x74, 0x37, 0x8e, 0xce, 0xee, 0xc7, 0x6e, 0x96, 0x00, 0xf7, - 0x78, 0xd0, 0x42, 0x30, 0x3c, 0xcc, 0xd8, 0x86, 0x23, 0x8d, 0x2f, 0xc6, 0x92, 0xe1, 0x68, 0xc4, - 0xfe, 0xca, 0xd7, 0x05, 0xd0, 0xf5, 0x95, 0xaf, 0x2b, 0x3c, 0x65, 0xe4, 0x3b, 0x92, 0xa6, 0x84, - 0xf0, 0x12, 0x4b, 0xf8, 0x0a, 0x1b, 0xb4, 0xf7, 0xb9, 0xfc, 0xf5, 0xfc, 0xca, 0x84, 0x7e, 0x7c, - 0x05, 0xb7, 0xcf, 0x71, 0x88, 0xde, 0x07, 0xaf, 0x46, 0xfc, 0x4e, 0x5e, 0x4d, 0xc2, 0x9a, 0x23, - 0x4a, 0x3a, 0x33, 0xf4, 0x2d, 0xe5, 0x61, 0xfe, 0x79, 0x05, 0xb0, 0xc4, 0x05, 0xd0, 0x95, 0x25, - 0xae, 0xf0, 0x94, 0x25, 0x19, 0x70, 0x46, 0x78, 0xca, 0xe2, 0x84, 0x67, 0x03, 0x2f, 0xf3, 0x59, - 0xf6, 0xf0, 0x1d, 0xfd, 0xe3, 0x87, 0xba, 0xa1, 0x85, 0xb7, 0xc9, 0xd6, 0x32, 0x91, 0xc3, 0xad, - 0xd4, 0x50, 0x5b, 0x6a, 0xe8, 0x63, 0xb7, 0xae, 0x0d, 0x43, 0x3d, 0x7c, 0x0c, 0x60, 0x40, 0x84, - 0x0c, 0x06, 0x5f, 0xff, 0xa5, 0x3e, 0x7a, 0x1c, 0xd4, 0x2e, 0x35, 0x34, 0xcc, 0x8f, 0xae, 0xf3, - 0xf8, 0x04, 0xda, 0x58, 0x9b, 0x1b, 0x60, 0xe0, 0x90, 0x87, 0xf9, 0x04, 0x16, 0xc0, 0x66, 0x17, - 0x40, 0x57, 0x36, 0xbb, 0xc2, 0x53, 0x36, 0xbf, 0x45, 0x0e, 0x71, 0x97, 0x58, 0x7c, 0x00, 0xed, - 0x92, 0xb7, 0x82, 0x5e, 0xc1, 0xc0, 0x49, 0x0d, 0xbb, 0x09, 0x70, 0x03, 0xcf, 0xe3, 0x39, 0x98, - 0x97, 0x19, 0x06, 0x27, 0xee, 0xdb, 0xa8, 0x26, 0xed, 0x6c, 0x78, 0xcc, 0xc1, 0x58, 0xba, 0xf2, - 0xa0, 0xac, 0x30, 0x60, 0x41, 0xf5, 0x7e, 0xc8, 0x2e, 0x39, 0x5c, 0x19, 0xb0, 0x56, 0xb4, 0xbd, - 0x9c, 0x01, 0x79, 0x78, 0x20, 0xfa, 0x4f, 0xe0, 0xc9, 0x73, 0xe2, 0xff, 0xf1, 0x80, 0x0f, 0xa5, - 0x9d, 0x15, 0x8e, 0x37, 0x38, 0xae, 0xbc, 0x58, 0x51, 0x20, 0x34, 0x65, 0xc6, 0x3f, 0x4a, 0x9a, - 0xf2, 0x17, 0x12, 0x5e, 0x9a, 0x9f, 0x1b, 0xd4, 0xc8, 0x5f, 0x98, 0xe8, 0x0d, 0xa6, 0x4b, 0xc3, - 0xbb, 0x61, 0xf8, 0x9d, 0x7d, 0x39, 0x6d, 0x63, 0x80, 0xdf, 0x72, 0x32, 0x79, 0xdb, 0x92, 0xa1, - 0x64, 0x4b, 0xa2, 0x00, 0x93, 0x07, 0x80, 0x85, 0x9b, 0x3c, 0x06, 0x4f, 0xb9, 0x7f, 0x54, 0xd2, - 0x94, 0xef, 0x63, 0x3f, 0x6c, 0x64, 0xca, 0x61, 0xd1, 0x4e, 0xef, 0x50, 0xc8, 0x25, 0xb8, 0xb9, - 0xa2, 0x2f, 0x00, 0x86, 0x90, 0xfd, 0x3d, 0xef, 0x93, 0x93, 0x15, 0xbd, 0xf2, 0x04, 0x41, 0xca, - 0x30, 0x4c, 0x6f, 0x79, 0xd0, 0xfc, 0x6d, 0x7b, 0x23, 0xf5, 0x05, 0x08, 0xa1, 0x23, 0x98, 0xab, - 0x10, 0xba, 0x40, 0x0b, 0x1a, 0x59, 0x8b, 0x1f, 0xad, 0x52, 0x28, 0x5d, 0x03, 0x67, 0xc6, 0x4f, - 0x75, 0xb0, 0xd4, 0x09, 0x5d, 0xe9, 0xcb, 0x17, 0xb2, 0x87, 0xae, 0x65, 0x06, 0xce, 0xa7, 0xdf, - 0xbe, 0x94, 0xf9, 0x64, 0xd0, 0x5b, 0x20, 0x1c, 0x61, 0x47, 0x85, 0xf7, 0x89, 0xc9, 0xb3, 0x63, - 0x6f, 0x84, 0xb8, 0x64, 0xfd, 0x57, 0x09, 0x61, 0xd3, 0xb1, 0x81, 0xa5, 0x2c, 0xb6, 0x9f, 0x22, - 0xda, 0x61, 0x5c, 0x4f, 0x11, 0x9d, 0x40, 0x29, 0x0f, 0x3a, 0x24, 0x4d, 0xa9, 0xc4, 0x25, 0x62, - 0x34, 0x2a, 0xba, 0xc9, 0xeb, 0x3f, 0x9f, 0xe9, 0x3c, 0xcc, 0x9e, 0xb9, 0xda, 0x6b, 0x4a, 0x69, - 0x38, 0x78, 0x12, 0xf6, 0x17, 0x1e, 0x73, 0x57, 0xf8, 0x9f, 0x28, 0xf4, 0x31, 0xb7, 0xb1, 0xbd, - 0x63, 0x39, 0x66, 0x89, 0x08, 0xfc, 0x37, 0x09, 0x61, 0xe1, 0x55, 0x84, 0x2b, 0xd5, 0x76, 0x18, - 0x57, 0xaa, 0x9d, 0x40, 0x29, 0xd5, 0x6f, 0x4b, 0x9a, 0x52, 0x81, 0x97, 0xd0, 0xc7, 0xa2, 0x84, - 0x10, 0x91, 0x36, 0xe6, 0x5c, 0x67, 0x79, 0x73, 0x21, 0xd4, 0x10, 0x6a, 0x37, 0x79, 0x37, 0x7c, - 0x25, 0x6a, 0x61, 0x6f, 0xcb, 0x53, 0xbc, 0xc3, 0xd4, 0x6c, 0x0c, 0xba, 0xe9, 0x35, 0xe1, 0x4e, - 0xbe, 0x1d, 0xc6, 0x95, 0x7c, 0x27, 0x50, 0x61, 0xd0, 0xd7, 0x18, 0x83, 0x7e, 0x8e, 0x5f, 0x22, - 0x8a, 0xce, 0xa1, 0xde, 0x12, 0x71, 0x63, 0x22, 0x92, 0x4f, 0x08, 0xff, 0x7e, 0xe0, 0x1b, 0x22, - 0x1c, 0xff, 0xc6, 0x63, 0xde, 0x04, 0x70, 0x9a, 0x97, 0xb9, 0x9d, 0x81, 0xe7, 0x52, 0x5c, 0x3a, - 0x31, 0x20, 0xa5, 0x57, 0xf3, 0x68, 0xca, 0xbf, 0xe1, 0xb3, 0x8d, 0x18, 0xaf, 0x40, 0x24, 0x8e, - 0xce, 0x36, 0xfd, 0xae, 0xb3, 0x8d, 0xc8, 0xa9, 0xdf, 0xda, 0x0c, 0xc3, 0xb1, 0x15, 0x03, 0xa0, - 0x08, 0xa3, 0xf1, 0x24, 0xfe, 0x6a, 0x4a, 0x67, 0x68, 0xdc, 0x5c, 0x7a, 0xc9, 0xc2, 0x79, 0xff, - 0xa8, 0xcb, 0x2d, 0x4c, 0x2e, 0xeb, 0x97, 0x4d, 0x08, 0x47, 0x39, 0xff, 0xae, 0xa4, 0x29, 0x1b, - 0x70, 0xc0, 0xce, 0x78, 0xbd, 0xe3, 0x66, 0x6a, 0xec, 0x1d, 0x91, 0x1a, 0xfa, 0x24, 0xa6, 0x44, - 0x8c, 0xa3, 0x23, 0xd6, 0x80, 0xec, 0xe1, 0x6f, 0x4a, 0xf6, 0xfe, 0x57, 0x6e, 0x66, 0x21, 0x98, - 0x69, 0x7d, 0x7d, 0xb4, 0x25, 0x92, 0x74, 0x33, 0xb3, 0x22, 0xcc, 0x04, 0x66, 0xd6, 0x0a, 0x6a, - 0xbe, 0x1c, 0x5c, 0x89, 0xcd, 0xd4, 0x85, 0xd9, 0xeb, 0x17, 0xf5, 0xee, 0x9b, 0x54, 0xdb, 0x9c, - 0x8b, 0xf3, 0x46, 0x03, 0xcc, 0x09, 0x26, 0x17, 0x82, 0xaf, 0x11, 0x43, 0xfa, 0xbf, 0x73, 0x43, - 0x9a, 0x9f, 0x2e, 0x3b, 0xcc, 0x04, 0x86, 0xd4, 0x91, 0xae, 0x88, 0xd5, 0xbb, 0x1f, 0x08, 0x10, - 0xbc, 0xfb, 0x6d, 0x14, 0xad, 0xf3, 0x3e, 0x35, 0x19, 0x8a, 0xca, 0xf7, 0xd1, 0xbf, 0xa8, 0x9d, - 0x3c, 0xe6, 0x41, 0xf7, 0x6e, 0x09, 0x37, 0xc6, 0x73, 0xc9, 0xb3, 0xe1, 0xec, 0x00, 0xe4, 0x7a, - 0xd5, 0xec, 0x08, 0x4b, 0x09, 0xfc, 0x40, 0xd2, 0x94, 0x30, 0x9e, 0x0b, 0xcf, 0x37, 0x4d, 0x0a, - 0x77, 0x40, 0x81, 0xfe, 0xd6, 0x39, 0x7d, 0xf0, 0x60, 0x0e, 0x9d, 0x2c, 0x64, 0xde, 0xd1, 0xe3, - 0xa9, 0xa1, 0x8f, 0xa1, 0x02, 0xa0, 0x7f, 0xdd, 0xb6, 0x5f, 0xff, 0xb0, 0x0f, 0x4a, 0x8c, 0xbf, - 0x3b, 0xfa, 0xc7, 0x0f, 0xf4, 0x8b, 0x00, 0x30, 0x8d, 0xae, 0xf6, 0x4e, 0x7a, 0xd0, 0xff, 0x23, - 0x9f, 0x3e, 0xf2, 0x0f, 0xba, 0x1d, 0x66, 0x82, 0xe9, 0xc3, 0x91, 0x27, 0x6f, 0x18, 0x93, 0x67, - 0x89, 0xe8, 0x11, 0x6d, 0x91, 0xe7, 0x25, 0x76, 0xa7, 0x68, 0x9b, 0x18, 0x54, 0x04, 0xbe, 0xb2, - 0x18, 0xe0, 0xbf, 0xf6, 0x08, 0xce, 0xbe, 0x8c, 0x54, 0x77, 0x67, 0xdf, 0x1c, 0x42, 0x4b, 0x27, - 0x06, 0xa4, 0x64, 0xfe, 0x67, 0x49, 0x53, 0x6e, 0x48, 0x56, 0x77, 0x5f, 0x20, 0x84, 0xce, 0x14, - 0xa7, 0x26, 0xf0, 0x98, 0x16, 0x81, 0x7f, 0x6b, 0x7b, 0x11, 0xf8, 0x28, 0x61, 0xf2, 0x4a, 0x3c, - 0x29, 0x41, 0xc2, 0xff, 0xd5, 0x83, 0x16, 0xe4, 0x72, 0x63, 0x7b, 0xb4, 0x56, 0x8d, 0x37, 0xbb, - 0xf9, 0xfe, 0x99, 0x70, 0x06, 0xd4, 0x04, 0xbe, 0x7f, 0xb9, 0xc0, 0x94, 0xcd, 0xff, 0x5d, 0xd2, - 0x94, 0xbf, 0x96, 0xf0, 0x53, 0x6e, 0x6c, 0x2e, 0xf3, 0x89, 0x81, 0x22, 0x20, 0x56, 0x0c, 0xbd, - 0xa3, 0x25, 0x2d, 0x7e, 0xe7, 0x87, 0xc1, 0xd9, 0x77, 0x9d, 0x73, 0xfd, 0x57, 0x30, 0x0f, 0x5b, - 0x5c, 0xd7, 0x1f, 0x75, 0x7f, 0xf2, 0x63, 0xf1, 0x5c, 0x5f, 0x36, 0x21, 0x9c, 0x39, 0xff, 0xc8, - 0x78, 0x21, 0x20, 0x48, 0x06, 0x1e, 0x1c, 0xd1, 0xa9, 0x20, 0xbb, 0x55, 0xe4, 0x8d, 0x9b, 0x96, - 0x23, 0x45, 0x71, 0x8a, 0x7a, 0x56, 0x42, 0xf7, 0x5a, 0xb1, 0xf8, 0x51, 0x34, 0xa2, 0x26, 0xec, - 0x16, 0xda, 0x01, 0xc8, 0xd5, 0x42, 0x3b, 0xc2, 0x52, 0xd2, 0x5e, 0xd3, 0x94, 0x6a, 0xec, 0xb3, - 0x53, 0x40, 0xc2, 0xd0, 0xea, 0x5d, 0x34, 0x8e, 0xb4, 0x77, 0x42, 0x08, 0xb8, 0xca, 0xc0, 0xcb, - 0x0b, 0x21, 0xf6, 0x75, 0x42, 0xd2, 0x7f, 0x96, 0x04, 0x7d, 0x01, 0xd4, 0xd8, 0x13, 0xc6, 0x15, - 0x13, 0x3c, 0x29, 0xc8, 0x09, 0x13, 0xb7, 0xb2, 0x50, 0x70, 0x4a, 0x73, 0x0b, 0xbc, 0x2d, 0xce, - 0xa5, 0x48, 0x8c, 0xbe, 0xe5, 0xcd, 0x5f, 0x3d, 0x19, 0x03, 0xc1, 0x03, 0x2f, 0xfd, 0x9d, 0xf8, - 0xcc, 0x62, 0x5b, 0x4b, 0x5d, 0x44, 0x4d, 0xe6, 0x7b, 0x66, 0x41, 0x21, 0x26, 0xb6, 0xbc, 0x1c, - 0xd0, 0x1c, 0xd2, 0x4a, 0xe6, 0x31, 0xdb, 0x1a, 0xab, 0xd7, 0x2f, 0xf7, 0x64, 0xc6, 0x7a, 0x29, - 0x59, 0xcb, 0xf3, 0xbe, 0x49, 0x00, 0x50, 0x61, 0xa2, 0x29, 0x50, 0x7a, 0x13, 0x94, 0x98, 0x8c, - 0x84, 0x16, 0x9a, 0x68, 0xa9, 0xf5, 0x2d, 0xf1, 0x70, 0x12, 0xa2, 0x48, 0x3a, 0x1c, 0xcb, 0xb8, - 0x00, 0xba, 0x1e, 0xcb, 0xb8, 0xc2, 0x53, 0xb2, 0xf7, 0x90, 0x45, 0x22, 0xf5, 0xdf, 0x19, 0xe8, - 0xd4, 0x3b, 0xfa, 0x33, 0x23, 0xed, 0x94, 0x6c, 0xe7, 0xe2, 0xbc, 0x6e, 0xcf, 0xb9, 0x24, 0xd2, - 0x8f, 0x52, 0xb7, 0xe7, 0x3f, 0x96, 0xe0, 0xa1, 0xd1, 0x26, 0x75, 0x6f, 0x2c, 0x14, 0x8e, 0x27, - 0x9c, 0x1f, 0x1a, 0x6d, 0x52, 0xf7, 0xd6, 0x1a, 0xb5, 0x79, 0x1f, 0x1a, 0x99, 0x40, 0xa6, 0xa7, - 0xba, 0x49, 0xc8, 0xe0, 0xc1, 0x71, 0xed, 0x02, 0x89, 0x8b, 0x6d, 0x21, 0xc4, 0x5a, 0x3c, 0x19, - 0x71, 0xdc, 0xc3, 0x30, 0xbe, 0x23, 0xea, 0x5f, 0x0d, 0xcd, 0x52, 0xb3, 0x7d, 0x6f, 0x4c, 0x4d, - 0x60, 0xf7, 0x29, 0x48, 0x84, 0xcb, 0x7b, 0x78, 0xe9, 0x00, 0x6d, 0x8a, 0xe7, 0xf7, 0xd8, 0x5d, - 0x14, 0x79, 0x88, 0x70, 0x7a, 0x58, 0x3f, 0x73, 0xc4, 0x5b, 0x0a, 0x92, 0x29, 0xa6, 0x40, 0xc9, - 0x85, 0x11, 0x88, 0x7d, 0x1c, 0xaf, 0x2e, 0x84, 0x58, 0x96, 0x7c, 0x27, 0x49, 0xc8, 0xfa, 0xff, - 0x44, 0x05, 0x7c, 0x31, 0x51, 0xd3, 0x1c, 0x6a, 0x54, 0xf3, 0x28, 0x20, 0x85, 0x98, 0x58, 0x01, - 0x39, 0x20, 0xa5, 0xb0, 0x47, 0xd2, 0x94, 0x1f, 0xb1, 0x30, 0x9d, 0x04, 0x7d, 0x21, 0xa5, 0xcc, - 0xf8, 0xf1, 0xd3, 0xfa, 0x81, 0x6e, 0x3a, 0x9c, 0x6b, 0xf2, 0x12, 0xed, 0xd2, 0x6a, 0x32, 0x9a, - 0x19, 0x4d, 0x84, 0x09, 0x95, 0xe3, 0xd4, 0xb9, 0xce, 0x32, 0x2c, 0x09, 0xbc, 0x7c, 0xc2, 0xa1, - 0x4b, 0xe4, 0x75, 0xae, 0xcb, 0x05, 0x35, 0x1f, 0x7a, 0x55, 0x8b, 0x43, 0x4c, 0xa9, 0x5d, 0xe5, - 0x46, 0xad, 0xde, 0xd3, 0x9e, 0x1a, 0xfa, 0x18, 0xc2, 0xb7, 0x8a, 0x91, 0x37, 0xf3, 0xc6, 0xd3, - 0x74, 0x19, 0xea, 0x04, 0xfe, 0x3f, 0x85, 0x39, 0x94, 0xad, 0xc3, 0xf6, 0xc6, 0x54, 0xf7, 0x39, - 0x54, 0x00, 0x9a, 0x70, 0x0e, 0xb5, 0xc0, 0x52, 0x72, 0xe3, 0x9a, 0xf2, 0x14, 0x53, 0x58, 0xbe, - 0x9b, 0x81, 0x38, 0xfd, 0xde, 0x07, 0x81, 0x66, 0x65, 0xd3, 0xb6, 0x4d, 0x8e, 0x00, 0x79, 0xbc, - 0x25, 0xdd, 0x96, 0x9a, 0x86, 0x30, 0x1b, 0x03, 0x7a, 0x3f, 0xc3, 0xa9, 0x32, 0x14, 0x69, 0x78, - 0x35, 0xdc, 0x90, 0xdc, 0x5d, 0x1b, 0xaa, 0xdf, 0x13, 0x6a, 0x54, 0x13, 0x76, 0xdf, 0x16, 0x57, - 0x50, 0x57, 0xdf, 0x96, 0x3c, 0x2d, 0x28, 0xd9, 0x8d, 0xe4, 0x18, 0x8c, 0x53, 0xa5, 0x77, 0x5c, - 0x4d, 0x0d, 0x7f, 0xa2, 0x0f, 0x5d, 0xd4, 0x07, 0xc6, 0xf4, 0xae, 0x0e, 0xaf, 0x6b, 0xcd, 0x44, - 0x2f, 0xf7, 0x44, 0x92, 0xeb, 0x5e, 0x8d, 0x25, 0xf0, 0x9f, 0xd2, 0x60, 0x8c, 0x2f, 0xc6, 0x68, - 0x9c, 0x85, 0xcd, 0xd1, 0xc6, 0x84, 0x73, 0x94, 0x0a, 0x0b, 0x88, 0xab, 0x7b, 0xbc, 0x03, 0xa4, - 0xf9, 0x78, 0x9d, 0xd3, 0x04, 0xfa, 0x97, 0x7e, 0xf7, 0x82, 0x7e, 0x9b, 0xe6, 0x62, 0xf4, 0xba, - 0xd6, 0xe4, 0xb9, 0xdb, 0x8f, 0xb2, 0x0f, 0x35, 0x19, 0x58, 0xff, 0x6b, 0xaa, 0x88, 0x41, 0x35, - 0x11, 0x6d, 0x89, 0xd7, 0x93, 0xec, 0xc5, 0xcd, 0x21, 0x67, 0x45, 0xb4, 0xc2, 0x30, 0x6a, 0x96, - 0x38, 0xc7, 0x5a, 0xa3, 0x0d, 0x62, 0xfe, 0x9f, 0x0b, 0x24, 0xd0, 0x95, 0x7e, 0xff, 0x79, 0x6e, - 0x3d, 0xbd, 0xae, 0x35, 0x79, 0xcc, 0x4a, 0x9c, 0x22, 0x92, 0x20, 0x88, 0x08, 0x6f, 0x2a, 0x7f, - 0x25, 0xa1, 0x7b, 0x36, 0xaa, 0xb9, 0xc4, 0x38, 0x85, 0xbb, 0x71, 0xa6, 0x25, 0x5f, 0xdc, 0xb8, - 0x5f, 0xb8, 0xd0, 0xc1, 0x4e, 0xba, 0xdc, 0x6a, 0xf2, 0xcc, 0xea, 0x6e, 0x74, 0x94, 0xef, 0x8b, - 0x84, 0x9a, 0xd5, 0x37, 0xf0, 0x09, 0x0f, 0xba, 0xf7, 0xa5, 0x16, 0x35, 0xbe, 0xd7, 0xd8, 0x62, - 0x55, 0xee, 0x55, 0xea, 0x8d, 0x61, 0xab, 0xa9, 0xb6, 0x5b, 0x0e, 0x07, 0x20, 0x57, 0xcb, 0xe1, - 0x08, 0x4b, 0xc5, 0xed, 0x82, 0xa4, 0x29, 0x4d, 0x78, 0x4d, 0xfa, 0xdc, 0xf9, 0xf1, 0x8f, 0xbb, - 0x68, 0xb6, 0x58, 0xb2, 0x45, 0x2b, 0xd3, 0xc7, 0xde, 0x49, 0xbf, 0x7b, 0x0e, 0x7e, 0xa4, 0xdf, - 0xbd, 0xc1, 0xbc, 0xda, 0x69, 0xc9, 0xcb, 0xc1, 0xcd, 0xde, 0xaf, 0xd4, 0x2a, 0x4f, 0x34, 0xf9, - 0x98, 0x1a, 0x6f, 0x4e, 0x94, 0x87, 0x08, 0x8a, 0xe4, 0xc8, 0x00, 0x70, 0x7d, 0x83, 0x85, 0xe3, - 0x30, 0x04, 0xac, 0x72, 0x93, 0x4b, 0xb0, 0x08, 0xa1, 0xb2, 0x50, 0x39, 0x7d, 0x45, 0x58, 0xe6, - 0x98, 0x69, 0xd6, 0x2c, 0xcb, 0x9c, 0x9c, 0xe2, 0x3c, 0x4a, 0x16, 0x89, 0x36, 0xa8, 0xcd, 0xa1, - 0x08, 0x0d, 0x29, 0xf0, 0xa5, 0x84, 0xe6, 0x90, 0xe9, 0xa9, 0x8a, 0x65, 0xb2, 0x72, 0x8e, 0xf4, - 0x6b, 0xd6, 0x17, 0x22, 0x90, 0x6f, 0x68, 0xca, 0xf3, 0xec, 0x06, 0x1a, 0x92, 0x1b, 0x41, 0xaa, - 0x1d, 0x48, 0xc3, 0x0a, 0xf9, 0x77, 0xbc, 0x13, 0xd4, 0x4f, 0xfc, 0xd2, 0xce, 0x9a, 0xd2, 0xa2, - 0xbe, 0x3c, 0xc9, 0x28, 0xe8, 0xf7, 0xa0, 0xf9, 0x1b, 0xd5, 0x64, 0xe5, 0x9e, 0x6d, 0xd1, 0x58, - 0x82, 0x9d, 0xc5, 0x92, 0x5c, 0x44, 0x4e, 0x37, 0xe9, 0x76, 0xb0, 0x7c, 0xf1, 0xd9, 0x9d, 0xa0, - 0xa9, 0x88, 0x5e, 0x95, 0x34, 0xa5, 0x19, 0x2f, 0xa3, 0x86, 0xef, 0xdc, 0x21, 0xfd, 0xd0, 0xc1, - 0xec, 0xed, 0x9e, 0xcc, 0xc8, 0x75, 0x70, 0x72, 0x83, 0x6c, 0xb5, 0xfc, 0x48, 0xdf, 0x5b, 0x09, - 0x80, 0x54, 0x2a, 0x8d, 0x0d, 0xbf, 0x21, 0x79, 0x24, 0x2d, 0x11, 0x70, 0xe4, 0xc8, 0x84, 0x7d, - 0x80, 0x1f, 0x31, 0x7e, 0xda, 0x81, 0x47, 0x75, 0x7b, 0x12, 0xd1, 0x58, 0xa2, 0xbc, 0xae, 0x25, - 0x11, 0x8e, 0xa8, 0x89, 0x44, 0xf9, 0x3e, 0xf6, 0x97, 0xc1, 0x2c, 0xf3, 0x70, 0xfe, 0x73, 0x27, - 0x56, 0x91, 0x78, 0x96, 0x13, 0xb3, 0x4a, 0x0c, 0x6b, 0xb9, 0xa2, 0x40, 0x68, 0xca, 0xaa, 0x2f, - 0xee, 0x0e, 0xab, 0x9c, 0x4f, 0xf5, 0x0b, 0x63, 0x55, 0xf9, 0xbe, 0xa4, 0x70, 0xaa, 0x7f, 0xc9, - 0x83, 0x16, 0x6c, 0x54, 0x93, 0x24, 0xee, 0x28, 0xa3, 0x10, 0xb2, 0x3d, 0x63, 0x27, 0x56, 0x38, - 0xc0, 0xb9, 0x6e, 0xc9, 0xdd, 0xc0, 0x29, 0xeb, 0x2e, 0x93, 0x24, 0x1b, 0xf4, 0x8a, 0x89, 0x67, - 0x50, 0xd7, 0x0f, 0x76, 0xc0, 0x6b, 0x00, 0x4a, 0x73, 0xf7, 0xc9, 0xf1, 0x43, 0xdd, 0xde, 0x60, - 0x21, 0x50, 0x65, 0xf4, 0xc0, 0x6b, 0xe8, 0xb3, 0xf4, 0xd9, 0x77, 0x80, 0xc5, 0x06, 0x84, 0x8d, - 0xa1, 0x70, 0x11, 0x9d, 0x67, 0x49, 0x42, 0xf9, 0xc8, 0xd8, 0x04, 0x69, 0xb0, 0xf1, 0xbf, 0x92, - 0xd0, 0xdc, 0x6a, 0xb5, 0xae, 0xa5, 0x91, 0x8a, 0x43, 0x28, 0xb1, 0xc7, 0xe9, 0xc1, 0xb7, 0x05, - 0x20, 0xcf, 0x83, 0xef, 0x1c, 0x38, 0xca, 0x94, 0x10, 0x99, 0x01, 0xb3, 0x57, 0x0e, 0x64, 0x07, - 0x8f, 0xdb, 0x31, 0xf7, 0xba, 0xd6, 0x40, 0x40, 0x01, 0xff, 0x83, 0xee, 0xd4, 0x34, 0x18, 0x5f, - 0x34, 0x0c, 0xfb, 0x3b, 0x54, 0x53, 0x6c, 0x79, 0x65, 0x9d, 0x35, 0xc5, 0x2d, 0xfd, 0xac, 0xb3, - 0xa6, 0xb8, 0xe6, 0x86, 0xf6, 0x9f, 0x96, 0xc8, 0xb1, 0x13, 0x9c, 0x40, 0xd4, 0xd4, 0x1a, 0xdb, - 0x81, 0x23, 0x1f, 0xe9, 0xa7, 0xfa, 0x79, 0xfa, 0x5a, 0x7a, 0x18, 0x3e, 0x21, 0x04, 0x21, 0xf5, - 0x45, 0xff, 0x0b, 0x0e, 0xa4, 0xbe, 0xaa, 0xd6, 0x95, 0xd7, 0x8b, 0x5f, 0x4f, 0x94, 0x93, 0x84, - 0x73, 0xe5, 0xfb, 0x78, 0x6e, 0xbb, 0x37, 0xe8, 0xdf, 0x35, 0x0d, 0x6f, 0x40, 0x36, 0x8c, 0x8d, - 0x2a, 0x49, 0xaa, 0x33, 0xe8, 0x41, 0xd8, 0x9e, 0x2f, 0xd7, 0xbe, 0x48, 0x73, 0x4d, 0xbe, 0xec, - 0x0d, 0x14, 0x02, 0x4a, 0x99, 0xf1, 0x27, 0x92, 0xa6, 0x44, 0xf0, 0x13, 0x40, 0x2a, 0xe8, 0x3e, - 0x4f, 0x04, 0x9c, 0x3e, 0xd7, 0x6b, 0x4b, 0x5d, 0x41, 0x41, 0x88, 0xeb, 0x80, 0xf7, 0xab, 0x35, - 0x23, 0x6c, 0x7b, 0xc1, 0xbf, 0xde, 0x85, 0x6d, 0xf9, 0xf8, 0xc4, 0xe6, 0x23, 0x92, 0xba, 0xae, - 0xca, 0xd8, 0x8f, 0x18, 0x1c, 0xfb, 0xc0, 0x83, 0xe6, 0xe5, 0x26, 0x8e, 0x74, 0x8c, 0x8f, 0xe8, - 0x94, 0xda, 0xd3, 0x31, 0x3e, 0xa2, 0x63, 0x2a, 0x4f, 0x92, 0x2d, 0x64, 0x17, 0xc6, 0x62, 0xa2, - 0x65, 0x98, 0x64, 0xbd, 0xb5, 0x96, 0xe4, 0xcb, 0x2c, 0x0d, 0x5e, 0x5e, 0x2e, 0xb0, 0xbb, 0xd4, - 0x1b, 0xa9, 0x11, 0xfa, 0x2e, 0x3e, 0x7d, 0xf8, 0x44, 0xb6, 0xad, 0x03, 0x26, 0x6c, 0xc2, 0xa3, - 0xcd, 0xfe, 0x8d, 0x5f, 0x97, 0x47, 0x09, 0x48, 0xb8, 0x42, 0xc3, 0x44, 0xdc, 0x63, 0xcb, 0xc6, - 0xe7, 0xb8, 0x5c, 0x76, 0x4c, 0xf5, 0xe7, 0x5d, 0x5e, 0x00, 0x24, 0x65, 0xd4, 0xff, 0x26, 0x69, - 0xca, 0x51, 0x09, 0xcb, 0xb0, 0xfd, 0xac, 0xa9, 0x2d, 0xaf, 0xa9, 0x6d, 0x5d, 0x6b, 0x66, 0xb9, - 0xcd, 0x5c, 0xee, 0x04, 0x05, 0x62, 0xe2, 0x63, 0xe6, 0x0c, 0xf4, 0xfe, 0x80, 0x72, 0x92, 0xe4, - 0x2f, 0xe0, 0x73, 0x91, 0x8f, 0xce, 0x53, 0x24, 0x45, 0x4d, 0xf6, 0x8b, 0x77, 0xf4, 0x8e, 0x0b, - 0x99, 0xbe, 0xf6, 0xc2, 0x3a, 0x16, 0x74, 0xb5, 0xd2, 0xbf, 0xee, 0x2b, 0x30, 0xd4, 0xe0, 0x63, - 0x79, 0xbd, 0x41, 0xa0, 0xc1, 0xc6, 0x76, 0x0f, 0x9a, 0x2f, 0xdc, 0x16, 0x6f, 0x21, 0x79, 0xed, - 0x37, 0x34, 0x85, 0x1c, 0x8c, 0x96, 0x23, 0x98, 0xab, 0xd1, 0x72, 0x81, 0x16, 0xfc, 0xbe, 0x14, - 0x3c, 0x1f, 0xe2, 0x55, 0xa7, 0x86, 0x7b, 0x33, 0x23, 0xed, 0xa9, 0x91, 0x1b, 0x30, 0x81, 0x78, - 0x4b, 0x79, 0x31, 0x8b, 0x17, 0x46, 0x7c, 0x10, 0x33, 0x9d, 0x87, 0xd3, 0xa7, 0x3f, 0xa5, 0xf9, - 0xfc, 0xcd, 0xa9, 0xa6, 0xca, 0xff, 0x6c, 0x21, 0xbb, 0xdf, 0x56, 0x35, 0x9e, 0x80, 0xd5, 0x38, - 0xfd, 0xeb, 0x8d, 0x72, 0x48, 0xe2, 0x4f, 0xa4, 0xe9, 0x08, 0x7f, 0x2d, 0x35, 0x21, 0x1b, 0x1c, - 0xc1, 0x26, 0x78, 0x2d, 0xe5, 0xc6, 0x86, 0x63, 0x92, 0xa6, 0xac, 0xc3, 0xe6, 0x25, 0xb5, 0x85, - 0x0d, 0x4b, 0xcd, 0xc8, 0x74, 0x02, 0xfd, 0x99, 0xbe, 0x76, 0x11, 0x8a, 0xb0, 0x60, 0xab, 0xb7, - 0xe6, 0xeb, 0xb1, 0xa0, 0x7c, 0x1f, 0xfc, 0x41, 0xb7, 0x28, 0x87, 0x3d, 0x68, 0xbe, 0x70, 0xeb, - 0x9a, 0x8f, 0x1b, 0x8e, 0x60, 0xae, 0xdc, 0x70, 0x81, 0xa6, 0xdc, 0xe8, 0x05, 0x6e, 0xc0, 0xa5, - 0xad, 0x8d, 0x1b, 0xbc, 0x78, 0x22, 0x6e, 0x6c, 0x0a, 0x7c, 0x73, 0xdc, 0xc0, 0x1d, 0x1e, 0x74, - 0x2f, 0x3f, 0x9d, 0x13, 0x18, 0xe1, 0x7e, 0x84, 0x67, 0x67, 0xc3, 0x63, 0x05, 0xc1, 0x0a, 0x22, - 0xf1, 0xbc, 0xb0, 0x97, 0xb3, 0x30, 0x61, 0x99, 0xdb, 0xfd, 0x62, 0x0e, 0x20, 0xf0, 0x01, 0x7f, - 0x83, 0x7c, 0x38, 0x2f, 0xa1, 0x69, 0xdf, 0x57, 0x43, 0x4d, 0xc9, 0xdd, 0xf6, 0x34, 0x35, 0x50, - 0xee, 0xba, 0x57, 0x65, 0xd5, 0x66, 0x18, 0xc6, 0x35, 0xb8, 0x24, 0x7d, 0xfa, 0xa8, 0xb1, 0x62, - 0xdc, 0x7f, 0x41, 0x1f, 0xbe, 0x09, 0xb1, 0xcf, 0xc1, 0xa5, 0xdd, 0xeb, 0x5a, 0x43, 0x68, 0x5a, - 0x84, 0xef, 0x77, 0xa0, 0x69, 0x37, 0xf9, 0x42, 0x65, 0x8f, 0xa4, 0x29, 0x5d, 0x12, 0xf6, 0xa1, - 0x85, 0xf4, 0x96, 0xca, 0x47, 0x53, 0x8d, 0xfa, 0x94, 0xda, 0x1a, 0x5f, 0x75, 0xb4, 0x5e, 0x2e, - 0x5a, 0xb5, 0x72, 0xf5, 0xca, 0x55, 0x7e, 0x54, 0x5e, 0x57, 0x9f, 0x08, 0xc5, 0xc2, 0xe5, 0xad, - 0x6b, 0x02, 0x92, 0x47, 0x9e, 0x17, 0x8a, 0xc5, 0x9a, 0xc2, 0xf5, 0xe4, 0x60, 0xa9, 0xfc, 0xe7, - 0x89, 0x68, 0xa4, 0xc2, 0x56, 0xf2, 0xa3, 0x87, 0xd1, 0x43, 0x08, 0x29, 0xb1, 0xf0, 0x26, 0x75, - 0xaf, 0xd2, 0x92, 0xdc, 0x8d, 0xef, 0x2d, 0xf6, 0x78, 0x67, 0x1b, 0x7f, 0x45, 0xe3, 0xe1, 0xd7, - 0x09, 0x9c, 0xcf, 0x53, 0x37, 0x0f, 0xcd, 0xb1, 0x00, 0xfd, 0x41, 0xdd, 0x34, 0x92, 0xa7, 0xfc, - 0xf1, 0xff, 0x11, 0x00, 0x00, 0xff, 0xff, 0x74, 0x9b, 0x31, 0x5d, 0x2c, 0xd4, 0x03, 0x00, + 0xd6, 0xbc, 0x57, 0x91, 0x90, 0x16, 0xd3, 0xa2, 0x89, 0xfe, 0xde, 0xe4, 0x37, 0x67, 0x8d, 0x5d, + 0x6d, 0xee, 0x1b, 0xf4, 0x24, 0x45, 0xb3, 0x99, 0x3e, 0x2f, 0xd6, 0xf3, 0xfc, 0xd4, 0x64, 0x2a, + 0x48, 0x2d, 0xe6, 0xf9, 0xa9, 0x87, 0x39, 0x66, 0xc9, 0xdc, 0x19, 0x3b, 0x53, 0x75, 0x63, 0xa1, + 0xfa, 0x4b, 0x2d, 0x3e, 0x68, 0x0a, 0x25, 0x09, 0x67, 0x58, 0x7c, 0xd0, 0x04, 0x8e, 0x03, 0x72, + 0x69, 0x88, 0x5e, 0xe4, 0xf2, 0xd8, 0x4d, 0xa5, 0x19, 0x71, 0x16, 0x70, 0x59, 0xec, 0xc4, 0x54, + 0xeb, 0xa5, 0x64, 0xd3, 0x19, 0x92, 0xb0, 0x0e, 0x07, 0x5c, 0xe3, 0xd2, 0xcb, 0x9d, 0xf5, 0x48, + 0x90, 0x39, 0x0d, 0xa3, 0x89, 0x3f, 0xeb, 0xca, 0x1f, 0xdd, 0x49, 0x30, 0xdf, 0xe1, 0x33, 0x00, + 0x38, 0x34, 0xe2, 0x58, 0xbe, 0x88, 0x33, 0x03, 0x74, 0x75, 0x24, 0x06, 0xbb, 0x8d, 0x9e, 0xb3, + 0xc3, 0x7d, 0xa7, 0x60, 0x3f, 0x46, 0x76, 0x9c, 0x4d, 0x0d, 0x7d, 0xed, 0x23, 0x6c, 0x10, 0x47, + 0x8f, 0xf9, 0x52, 0x03, 0x3b, 0x13, 0x03, 0x17, 0x78, 0x3c, 0xec, 0x4b, 0x93, 0x46, 0xf3, 0x1f, + 0x0b, 0x68, 0xfa, 0x86, 0xc6, 0x8d, 0x1b, 0xb5, 0x88, 0x4a, 0xb2, 0xdb, 0xa9, 0x26, 0x8e, 0xc1, + 0x09, 0xe1, 0x26, 0x95, 0x1d, 0x10, 0x74, 0x65, 0x9f, 0x20, 0x79, 0xb5, 0x90, 0x3f, 0x80, 0xc2, + 0x12, 0x9a, 0x15, 0xaf, 0x04, 0xa7, 0xba, 0x24, 0x2f, 0x1c, 0x31, 0xbd, 0xe2, 0x5e, 0x38, 0xfe, + 0x9a, 0x92, 0x98, 0xa9, 0xdc, 0x53, 0x97, 0xea, 0xd8, 0x0d, 0x77, 0x77, 0xb8, 0xef, 0x14, 0x3c, + 0x87, 0x46, 0xcb, 0x11, 0x7e, 0x28, 0xb6, 0x16, 0xdf, 0xd2, 0x25, 0x4b, 0x54, 0xaf, 0x09, 0x89, + 0x27, 0x01, 0x23, 0xad, 0x88, 0xf8, 0x6b, 0xb5, 0x8d, 0x8d, 0x75, 0x6b, 0xb5, 0x48, 0x7d, 0x30, + 0x84, 0x11, 0x66, 0x8d, 0x56, 0x8b, 0xf3, 0xce, 0x4d, 0x2a, 0xdb, 0xa8, 0x2b, 0xb5, 0x52, 0xfa, + 0x56, 0xf2, 0x72, 0x13, 0x1f, 0x6d, 0x22, 0x75, 0x25, 0x31, 0xab, 0xb2, 0x24, 0xaa, 0xd5, 0x16, + 0x13, 0xda, 0x0c, 0xc7, 0x70, 0x83, 0x9b, 0xe3, 0xab, 0x0e, 0x07, 0x7c, 0x23, 0x4d, 0x4d, 0xc6, + 0xee, 0x78, 0xb2, 0xa7, 0x89, 0x5d, 0x22, 0x35, 0xfd, 0x27, 0xc4, 0x9d, 0x02, 0xca, 0x8f, 0xd6, + 0xfa, 0x43, 0x55, 0xa1, 0x98, 0x16, 0xd9, 0xe2, 0xaf, 0x2b, 0x98, 0x81, 0x67, 0xf6, 0x7b, 0x5d, + 0x79, 0x4b, 0xb2, 0x55, 0xc8, 0xab, 0xcc, 0x5f, 0x25, 0x41, 0xf2, 0xb3, 0xd8, 0x01, 0x18, 0xc9, + 0x4f, 0x9b, 0x92, 0xdf, 0xed, 0x85, 0xef, 0x99, 0xff, 0x77, 0xef, 0x67, 0xb8, 0xc4, 0x24, 0x0d, + 0xce, 0xe8, 0xb6, 0xe3, 0x5f, 0xba, 0x44, 0xb5, 0x0d, 0x6e, 0xbe, 0xbb, 0x33, 0xea, 0xfd, 0xef, + 0x9b, 0x97, 0xb4, 0xda, 0x84, 0xdb, 0x28, 0x15, 0xf1, 0xcf, 0xc4, 0xd3, 0x79, 0x57, 0x57, 0x36, + 0x49, 0x9e, 0x0d, 0xe4, 0x35, 0xe6, 0x1e, 0x99, 0xec, 0x64, 0x49, 0x03, 0x2d, 0x07, 0x54, 0x07, + 0x5b, 0x42, 0x88, 0xd6, 0xce, 0xae, 0xc4, 0xf7, 0x1f, 0xf1, 0x7b, 0xc2, 0x63, 0x3a, 0xeb, 0x34, + 0x9f, 0x5b, 0xb2, 0x44, 0xf5, 0xfc, 0x8c, 0x78, 0x54, 0x40, 0x53, 0x30, 0x8c, 0xae, 0x6b, 0x30, + 0x99, 0xfd, 0x37, 0xb4, 0x48, 0x18, 0xa7, 0x44, 0xcf, 0x9c, 0x65, 0xf6, 0xd7, 0xba, 0xb2, 0x56, + 0x72, 0xf6, 0x93, 0x15, 0xc0, 0xce, 0x8d, 0x0d, 0x25, 0x1b, 0x23, 0xe1, 0xfa, 0x92, 0x0f, 0xb4, + 0x48, 0x98, 0x3c, 0x7a, 0xfc, 0xcb, 0x70, 0x6d, 0xb0, 0x25, 0xf9, 0xf5, 0x89, 0x64, 0x4f, 0xab, + 0x8f, 0x7f, 0x07, 0xf1, 0x71, 0xb7, 0xaa, 0xce, 0x31, 0xcd, 0xf9, 0xcd, 0xb2, 0x13, 0xc5, 0xca, + 0x46, 0xf3, 0x1a, 0x06, 0x02, 0x38, 0xf5, 0xfa, 0xa4, 0x32, 0x4d, 0x57, 0x36, 0x48, 0x69, 0x9a, + 0xc8, 0xaf, 0x70, 0xef, 0x45, 0xc0, 0xac, 0x29, 0xf1, 0x6f, 0xc4, 0xa8, 0x39, 0x10, 0x28, 0xb6, + 0x88, 0xf4, 0x96, 0x93, 0xc9, 0x83, 0xbd, 0x0c, 0xea, 0xdc, 0x07, 0x6d, 0x3e, 0x1a, 0x69, 0xbe, + 0x20, 0x9e, 0x36, 0x09, 0x3d, 0x77, 0x15, 0x61, 0x51, 0x0a, 0xf0, 0x14, 0x71, 0x68, 0xbd, 0xf4, + 0xad, 0xd2, 0xce, 0x92, 0x70, 0x2c, 0x40, 0x8b, 0x27, 0xfa, 0x4f, 0x5a, 0x7c, 0x4b, 0xba, 0x59, + 0xa6, 0xff, 0x88, 0xf8, 0xcf, 0x04, 0x34, 0xc7, 0xa3, 0x76, 0xb9, 0x3f, 0x58, 0xd7, 0x18, 0xd1, + 0x70, 0xda, 0xf7, 0xd1, 0x12, 0x5f, 0xd6, 0xeb, 0xca, 0xbb, 0x52, 0x86, 0x41, 0xe4, 0x95, 0x69, + 0x16, 0xb2, 0x11, 0xea, 0xc9, 0xcd, 0x86, 0x74, 0x5f, 0x46, 0x57, 0x07, 0xa8, 0x5c, 0xd3, 0x2e, + 0x26, 0xc3, 0x97, 0xc4, 0xed, 0x59, 0xc8, 0xc7, 0xaa, 0x57, 0x34, 0x34, 0x3a, 0x88, 0x70, 0xcc, + 0x06, 0x14, 0xcc, 0xc1, 0xbb, 0xff, 0x9d, 0xa0, 0x2b, 0x5f, 0x09, 0xd2, 0xa8, 0xcd, 0xe5, 0x36, + 0x9e, 0xb1, 0xd8, 0xd4, 0xd0, 0x78, 0x83, 0xcc, 0xc5, 0xc2, 0x15, 0xd5, 0xeb, 0x8a, 0x6e, 0x23, + 0x87, 0x31, 0xea, 0x84, 0xc5, 0xbf, 0x15, 0xd0, 0x2c, 0x3b, 0x8a, 0x2e, 0x6f, 0x68, 0x84, 0x87, + 0x65, 0x2e, 0x5e, 0x7a, 0x8f, 0xa0, 0x2b, 0x87, 0x05, 0x29, 0x4d, 0x23, 0xf9, 0xcf, 0xde, 0xe5, + 0x37, 0xf0, 0xb8, 0xd4, 0x36, 0x34, 0xde, 0xc2, 0xfb, 0x92, 0x66, 0x5e, 0x1e, 0xeb, 0x5a, 0xa5, + 0xd5, 0xc3, 0xba, 0xe6, 0x65, 0x58, 0x17, 0x6d, 0xe4, 0x5c, 0x17, 0x2d, 0xbf, 0x81, 0x75, 0xd5, + 0x6b, 0xf5, 0xb7, 0x6f, 0x5d, 0xf4, 0xfb, 0xa5, 0xe6, 0xb3, 0x88, 0xfc, 0xd2, 0x28, 0x92, 0x1d, + 0x79, 0x3e, 0xd0, 0x4c, 0xae, 0x7a, 0xaf, 0xb8, 0x79, 0x9e, 0xc6, 0x26, 0xff, 0xaf, 0x80, 0x1e, + 0x4e, 0xfb, 0x8d, 0x07, 0x43, 0xf4, 0xf7, 0x82, 0x4d, 0x75, 0xb1, 0xd0, 0x65, 0xd6, 0xe5, 0x22, + 0xc6, 0xc8, 0xf2, 0x88, 0xa1, 0xc2, 0x2f, 0xa8, 0x35, 0xfe, 0xfd, 0x24, 0x3e, 0x3b, 0x23, 0xb8, + 0xe4, 0x67, 0x7b, 0x84, 0x3b, 0x28, 0x40, 0xbb, 0x5e, 0x56, 0x1c, 0x91, 0xd4, 0x5c, 0x68, 0xae, + 0x4e, 0xe4, 0x9a, 0xab, 0x13, 0x58, 0x73, 0x93, 0x9e, 0x76, 0xc9, 0xdb, 0x76, 0x08, 0x19, 0x04, + 0x6e, 0x35, 0xb7, 0x4f, 0xe0, 0x76, 0xbd, 0x2c, 0x57, 0xca, 0x29, 0x08, 0x2c, 0x14, 0x3c, 0x25, + 0x6f, 0xbb, 0x84, 0x34, 0xa2, 0xb7, 0xdf, 0xdd, 0x01, 0xd1, 0xdb, 0xf5, 0xb2, 0x3c, 0x29, 0xb7, + 0xa0, 0xe9, 0xd3, 0x71, 0x0b, 0x5f, 0x70, 0x49, 0xe1, 0xfe, 0xf9, 0x28, 0x52, 0xb8, 0x43, 0xf7, + 0x95, 0x14, 0x8e, 0x5f, 0x49, 0x1a, 0x81, 0xdc, 0xff, 0x3d, 0x46, 0x81, 0xdc, 0xd7, 0x0f, 0x8e, + 0x40, 0x0e, 0x40, 0xa9, 0x7a, 0xe1, 0xcf, 0x46, 0x93, 0xcc, 0x7d, 0x36, 0xaa, 0x64, 0x2e, 0x33, + 0xe9, 0x7b, 0x37, 0xa5, 0x76, 0xf1, 0x51, 0xa4, 0x76, 0x99, 0x67, 0x7a, 0x8f, 0x25, 0x7a, 0x1f, + 0x8f, 0x41, 0xa2, 0x97, 0x79, 0x01, 0xcb, 0x74, 0xe5, 0xc5, 0xcc, 0xd2, 0xbe, 0x05, 0x99, 0xa5, + 0x7d, 0x99, 0xe5, 0x7b, 0x6d, 0x19, 0xe5, 0x7b, 0x6f, 0xdc, 0x66, 0xf9, 0x1e, 0xb9, 0x96, 0xff, + 0xdd, 0xf4, 0x85, 0x3f, 0xf3, 0x16, 0xf5, 0xfd, 0x9b, 0x31, 0x88, 0xfa, 0x7a, 0xee, 0x47, 0x51, + 0x1f, 0xc5, 0xe2, 0x3f, 0xcb, 0x24, 0xf3, 0xfb, 0x38, 0xb3, 0xcc, 0xef, 0xdd, 0x3b, 0x2b, 0xf3, + 0xbb, 0x5e, 0x36, 0x41, 0x1a, 0x8f, 0x71, 0xe2, 0xf9, 0x09, 0x3f, 0x70, 0xf9, 0xdf, 0x3a, 0xde, + 0xd4, 0x61, 0x32, 0x75, 0x0a, 0x2a, 0xe1, 0x4d, 0x1d, 0x7c, 0x60, 0xdb, 0xe0, 0x10, 0xfe, 0x65, + 0xb6, 0x77, 0x58, 0xcb, 0x8b, 0x15, 0xa7, 0xd0, 0x48, 0x2a, 0x37, 0x28, 0x56, 0x74, 0xd9, 0x65, + 0x94, 0x5a, 0x56, 0x10, 0x53, 0x39, 0xe9, 0x21, 0xb5, 0x82, 0x98, 0x90, 0xc1, 0x64, 0xcf, 0x26, + 0x3d, 0x9c, 0x76, 0xe3, 0xd2, 0xc3, 0x31, 0x71, 0x90, 0xe2, 0x0f, 0x9c, 0x83, 0xbc, 0x96, 0x46, + 0x2e, 0x39, 0x7d, 0x0c, 0xd2, 0x80, 0x8f, 0xef, 0x4f, 0xa9, 0xa5, 0x85, 0x8d, 0x3c, 0xc5, 0x97, + 0x7d, 0x19, 0xc5, 0x97, 0x20, 0x24, 0xfc, 0xc3, 0xdd, 0x11, 0x5f, 0xf2, 0x84, 0x5a, 0x06, 0x49, + 0x66, 0xa7, 0x53, 0x92, 0x09, 0xa2, 0xc3, 0xcd, 0x77, 0x5a, 0x92, 0x69, 0x4d, 0x6f, 0x9c, 0x43, + 0xa8, 0xf9, 0x79, 0x3a, 0xa1, 0xe6, 0x2c, 0x3c, 0xb3, 0x2d, 0x77, 0x4f, 0xa8, 0x69, 0xe1, 0xf5, + 0x9d, 0xe3, 0x6f, 0x40, 0xc0, 0x39, 0xfb, 0x3e, 0x12, 0x70, 0x7e, 0x96, 0x5e, 0xc0, 0x59, 0x40, + 0xa1, 0xf1, 0x2e, 0x08, 0x38, 0x6d, 0x2f, 0x64, 0x3a, 0x61, 0xe7, 0x57, 0x19, 0x85, 0x9d, 0x0f, + 0xe1, 0xe9, 0x46, 0xef, 0x96, 0xb0, 0xd3, 0x82, 0xcf, 0x9f, 0x65, 0x92, 0x7b, 0xfe, 0x8f, 0x99, + 0xe5, 0x9e, 0x73, 0xc6, 0x80, 0xe9, 0xde, 0xbf, 0xab, 0x72, 0x4f, 0x1e, 0x2d, 0x64, 0x12, 0x81, + 0xfe, 0xbb, 0xd1, 0xa4, 0x7f, 0xa7, 0xee, 0x6b, 0xe9, 0x9f, 0x85, 0xa7, 0xd3, 0x89, 0x01, 0xff, + 0xdd, 0x68, 0x62, 0xc0, 0x53, 0xf7, 0xb5, 0x18, 0x30, 0xed, 0x02, 0xe9, 0x44, 0x44, 0x3f, 0xca, + 0xad, 0x0f, 0x07, 0x1a, 0xeb, 0xb4, 0x82, 0xf9, 0x04, 0x21, 0x39, 0xc4, 0x5c, 0xab, 0x70, 0x6d, + 0x55, 0x68, 0x63, 0xb8, 0xac, 0x44, 0x57, 0x24, 0x89, 0x34, 0x97, 0x7d, 0x30, 0x3d, 0x1a, 0xdb, + 0x6f, 0x78, 0xe8, 0xcb, 0xd4, 0x99, 0x01, 0x93, 0xc2, 0x39, 0x7a, 0x88, 0x66, 0x5e, 0x86, 0x96, + 0xe2, 0x26, 0x34, 0xfe, 0x3d, 0x6d, 0xc3, 0x3b, 0xe1, 0xf0, 0xe6, 0x82, 0x05, 0xf8, 0x1b, 0x73, + 0x3d, 0xbc, 0x94, 0xcd, 0xea, 0x55, 0xe1, 0x80, 0x56, 0xb6, 0xc4, 0x24, 0x14, 0x69, 0x07, 0xb9, + 0x90, 0x7e, 0xc5, 0x47, 0x4a, 0x80, 0x86, 0x1a, 0x69, 0x6e, 0x4f, 0x0d, 0xd1, 0xb4, 0xcc, 0xb4, + 0xb1, 0xd8, 0x00, 0x09, 0x9c, 0x40, 0xea, 0x86, 0x13, 0x38, 0x3d, 0x8c, 0x85, 0x69, 0xaf, 0xe8, + 0x4a, 0xa5, 0xe4, 0xa8, 0x92, 0x9f, 0x4c, 0x0c, 0x34, 0x03, 0x69, 0x57, 0xae, 0x80, 0x12, 0x15, + 0x06, 0x35, 0x3a, 0xb7, 0x27, 0x0f, 0x9c, 0x87, 0xa1, 0x8b, 0x13, 0xfd, 0xed, 0x64, 0x6f, 0x71, + 0xfe, 0x25, 0xd5, 0x31, 0x88, 0x98, 0x12, 0xd0, 0x3c, 0xed, 0xfd, 0x06, 0x2d, 0x14, 0xf0, 0x6f, + 0xa8, 0xd3, 0x4c, 0x96, 0xb3, 0x9a, 0x48, 0xb2, 0xca, 0x1b, 0x63, 0xe1, 0x8d, 0x1b, 0x0b, 0x1e, + 0x27, 0x0b, 0x76, 0x5e, 0x6d, 0xee, 0x66, 0x43, 0x12, 0x1a, 0x29, 0xe3, 0x38, 0xb2, 0x3f, 0x31, + 0x78, 0xd8, 0x68, 0x6e, 0x49, 0xc5, 0xcf, 0x00, 0x0d, 0x96, 0xec, 0x3d, 0x69, 0x42, 0x4b, 0xf7, + 0x4e, 0x5f, 0x43, 0x38, 0x70, 0x6d, 0xb0, 0xcd, 0xec, 0x1a, 0x0c, 0x6d, 0xf2, 0xf1, 0x29, 0xa4, + 0x18, 0x3c, 0x30, 0x1c, 0x96, 0x18, 0xec, 0x4e, 0x7d, 0xf4, 0x6d, 0xb2, 0xe3, 0x94, 0x6f, 0x73, + 0xb0, 0xae, 0x8e, 0x46, 0xd1, 0x33, 0x9a, 0x06, 0x4b, 0x96, 0x2e, 0x51, 0x33, 0x4e, 0x40, 0x3c, + 0x2f, 0x20, 0x31, 0xa4, 0xbd, 0x57, 0x1d, 0x0e, 0xd4, 0xc0, 0xe3, 0x01, 0xc2, 0xb0, 0x9f, 0x8f, + 0x01, 0x75, 0x6d, 0xd0, 0x95, 0xd7, 0x25, 0x8f, 0xce, 0x72, 0x99, 0xbb, 0xec, 0xda, 0x60, 0x5b, + 0xf2, 0xe0, 0xf9, 0x86, 0x70, 0xc0, 0x18, 0x88, 0xa7, 0xbe, 0xd8, 0x6b, 0x9c, 0xec, 0x4e, 0x5c, + 0x6a, 0x4e, 0x5c, 0xda, 0x6b, 0x74, 0x75, 0x24, 0x5b, 0xc9, 0x59, 0x94, 0x2b, 0x74, 0xe6, 0xbe, + 0x25, 0x34, 0xea, 0x98, 0xc7, 0xf0, 0x4c, 0xd4, 0x9d, 0x59, 0x0a, 0x2b, 0xcf, 0x07, 0x28, 0xb8, + 0x71, 0x51, 0x37, 0x75, 0x94, 0x39, 0x9d, 0x8d, 0x1e, 0x4e, 0xfb, 0x8d, 0x07, 0x43, 0xd4, 0x1d, + 0xbc, 0x39, 0x51, 0x37, 0x64, 0x62, 0x07, 0xf3, 0x54, 0x1f, 0xf3, 0xa4, 0x71, 0x35, 0xbb, 0x4f, + 0xd2, 0x3d, 0x15, 0xfe, 0x75, 0x11, 0x9a, 0x57, 0xb3, 0x35, 0x54, 0xfb, 0x93, 0x40, 0xfe, 0x66, + 0x04, 0xf2, 0x47, 0x32, 0x09, 0xe4, 0x83, 0x26, 0x27, 0xe0, 0x25, 0x90, 0x5f, 0x71, 0xc3, 0x02, + 0xf9, 0xe7, 0x7d, 0xe5, 0x8a, 0x71, 0xe9, 0x82, 0xc5, 0x9d, 0xe2, 0x8a, 0xcc, 0x62, 0xfa, 0x03, + 0xe9, 0xc4, 0xf4, 0xf5, 0xba, 0xf2, 0xb6, 0x4b, 0x4c, 0xbf, 0xea, 0xd6, 0xc4, 0xf4, 0xd7, 0x06, + 0x3f, 0x4a, 0x1e, 0x3a, 0x9e, 0x3c, 0xd0, 0x02, 0x4f, 0xc5, 0x4f, 0x52, 0xfb, 0x1f, 0x89, 0xd4, + 0xbe, 0x6d, 0x0c, 0xf6, 0xb4, 0xd8, 0x38, 0x34, 0x83, 0x64, 0x7e, 0xd1, 0xd8, 0x25, 0xf3, 0xb1, + 0x48, 0x63, 0x46, 0xc1, 0xfc, 0xd1, 0x51, 0xcd, 0x69, 0x6b, 0x75, 0xe5, 0xf7, 0xe9, 0x85, 0xef, + 0x95, 0xb7, 0x2c, 0x7c, 0xc7, 0x33, 0x4c, 0x2b, 0x7b, 0xdf, 0x37, 0x26, 0x6b, 0x5a, 0xac, 0xca, + 0xc8, 0x28, 0x5f, 0x2f, 0xc9, 0x2c, 0x5f, 0xe7, 0x62, 0x01, 0xe3, 0xf9, 0xfc, 0x24, 0x6e, 0xff, + 0x49, 0xdc, 0x3e, 0x46, 0x71, 0xbb, 0x4d, 0x9e, 0x3c, 0xe9, 0x0e, 0xc8, 0x93, 0x27, 0xdf, 0xa8, + 0x3c, 0x79, 0x4c, 0x02, 0xe1, 0x29, 0x3f, 0x70, 0x81, 0xf0, 0xbf, 0x4c, 0x23, 0x10, 0x9e, 0x8a, + 0xd7, 0xfd, 0x60, 0x8a, 0x7c, 0xbf, 0xcc, 0x28, 0xf2, 0x85, 0xf0, 0xe4, 0x21, 0x13, 0x5d, 0x67, + 0x10, 0xf9, 0x96, 0x8f, 0x4d, 0xe4, 0x7b, 0x47, 0xe4, 0xbd, 0xe2, 0x7d, 0x2b, 0xef, 0x9d, 0x7e, + 0x1f, 0xca, 0x7b, 0x4f, 0x02, 0xa9, 0x6c, 0x56, 0xd4, 0xc4, 0xfc, 0x91, 0x58, 0x63, 0x03, 0x9e, + 0x2a, 0x48, 0xf6, 0x63, 0xba, 0xa2, 0x49, 0x1e, 0xd5, 0xdc, 0x44, 0xa3, 0x50, 0xca, 0x4f, 0xd3, + 0xe8, 0x3c, 0x9c, 0xe8, 0x8f, 0x63, 0xdc, 0x85, 0x33, 0x74, 0xdf, 0xe8, 0x44, 0x3d, 0x3e, 0x28, + 0xfe, 0x63, 0x01, 0x15, 0xf0, 0xc5, 0x24, 0x84, 0xbd, 0xc6, 0x19, 0x07, 0xef, 0x15, 0x74, 0xe5, + 0x2f, 0xa4, 0xb4, 0xad, 0xe4, 0xdf, 0xdb, 0xe7, 0x5c, 0x12, 0x25, 0x95, 0xee, 0x1d, 0x86, 0x05, + 0x18, 0x9d, 0x7d, 0x24, 0xe0, 0xfe, 0xcd, 0x2c, 0x22, 0xed, 0x3c, 0xee, 0x7b, 0x13, 0xe2, 0xcf, + 0x46, 0x33, 0x21, 0x7e, 0x60, 0x24, 0xec, 0x05, 0x0f, 0xa2, 0x84, 0xfd, 0xa1, 0x1f, 0xa2, 0x84, + 0x7d, 0xce, 0x0f, 0x5d, 0xc2, 0x3e, 0xf7, 0x07, 0x21, 0x61, 0xe7, 0xc4, 0xdf, 0xf3, 0xee, 0xa8, + 0xf8, 0x7b, 0x54, 0x61, 0xf4, 0xfc, 0x1f, 0xb8, 0x30, 0x7a, 0xc1, 0x7d, 0x2c, 0x8c, 0x7e, 0x5d, + 0x57, 0xd6, 0xa1, 0x1a, 0x29, 0xa3, 0xfc, 0x51, 0x9e, 0x6f, 0x74, 0xb5, 0x25, 0x7b, 0x4f, 0xb9, + 0xea, 0x41, 0xd0, 0x64, 0x17, 0x45, 0x33, 0xf1, 0xf3, 0xc9, 0x6c, 0x34, 0x3f, 0xcd, 0xa8, 0x3f, + 0x1e, 0xe1, 0x33, 0x6c, 0x5c, 0xaa, 0x7b, 0xe7, 0x7d, 0x2b, 0x7c, 0xfe, 0x3c, 0x1b, 0x2d, 0x80, + 0xc7, 0x2a, 0xad, 0xf8, 0xf9, 0x37, 0xee, 0x30, 0x34, 0xcf, 0xeb, 0x4a, 0x01, 0xcf, 0x8f, 0x4e, + 0xb4, 0xc5, 0x98, 0x19, 0xbb, 0x8b, 0xe4, 0xbf, 0x17, 0x9c, 0xe1, 0xa6, 0xfe, 0x4a, 0xd0, 0x95, + 0x7f, 0x20, 0x58, 0x01, 0xa7, 0xbe, 0x13, 0xf8, 0x88, 0x53, 0x69, 0xb6, 0xf1, 0xe6, 0xc2, 0x4f, + 0x19, 0x7d, 0x97, 0x12, 0xf1, 0x0e, 0x93, 0x78, 0xc2, 0xc9, 0xce, 0xdc, 0xb6, 0x69, 0xc6, 0xb9, + 0xd6, 0xe1, 0x4f, 0x9b, 0x53, 0xdd, 0x3b, 0x59, 0xe8, 0x14, 0xf3, 0xea, 0x1d, 0xee, 0xb3, 0xe5, + 0x64, 0xbd, 0xf8, 0x35, 0x78, 0x41, 0xa6, 0xba, 0x77, 0x96, 0x2b, 0xa0, 0x68, 0xb4, 0x85, 0xb6, + 0xfa, 0x95, 0xae, 0xac, 0x40, 0x95, 0xd2, 0x28, 0x9b, 0x2c, 0xcf, 0x4e, 0xb3, 0x40, 0xfe, 0x76, + 0x15, 0x7e, 0x96, 0x8d, 0x1e, 0x4e, 0x3b, 0xce, 0x83, 0x71, 0xab, 0xea, 0x6e, 0xf2, 0x56, 0x61, + 0x38, 0x87, 0x5b, 0xf5, 0x28, 0x1f, 0x16, 0xeb, 0xbe, 0xbd, 0x58, 0x97, 0xb2, 0xd0, 0xdc, 0x15, + 0x5a, 0xec, 0x5e, 0xdc, 0xaa, 0x2d, 0x9c, 0xf9, 0x5f, 0x96, 0x15, 0x83, 0xc8, 0x32, 0xff, 0x7b, + 0xb5, 0x5c, 0x81, 0x15, 0x24, 0xe2, 0xfb, 0x68, 0x21, 0xce, 0x8f, 0x97, 0x18, 0x38, 0x45, 0xd3, + 0xb1, 0xc1, 0xbf, 0xc9, 0x43, 0x17, 0x8a, 0x7d, 0xc6, 0xc9, 0xf6, 0xd4, 0xfe, 0xb3, 0x54, 0x3b, + 0xe1, 0xe8, 0x67, 0xd9, 0x0d, 0x96, 0xae, 0xd0, 0x95, 0x0a, 0x54, 0x26, 0x65, 0x5a, 0xb6, 0xfc, + 0x28, 0xc4, 0x78, 0x49, 0x73, 0x6c, 0x24, 0xa0, 0xd8, 0xdf, 0x67, 0xa3, 0x79, 0xde, 0x83, 0xfc, + 0x78, 0x9e, 0x0e, 0x16, 0x71, 0xec, 0x7e, 0x85, 0x70, 0x1a, 0xdf, 0x3f, 0xe3, 0x49, 0xc9, 0xf3, + 0xd3, 0x9c, 0x77, 0xba, 0xf0, 0x3e, 0x67, 0x73, 0xd0, 0xbc, 0x95, 0xc1, 0x68, 0xfa, 0x7b, 0x13, + 0x72, 0xdf, 0x9b, 0x6a, 0x5d, 0x59, 0xce, 0xdf, 0x9b, 0xe7, 0x5c, 0x9d, 0x6f, 0x21, 0x3e, 0xda, + 0x9b, 0xee, 0xf8, 0x68, 0x2f, 0xea, 0xca, 0x93, 0xbc, 0xd1, 0xf0, 0xcf, 0xd3, 0x7f, 0x6f, 0x14, + 0xd3, 0xe1, 0x2a, 0x67, 0xa8, 0xb4, 0xc5, 0xba, 0xf2, 0xb8, 0x15, 0x22, 0x60, 0x8e, 0x9b, 0xe4, + 0x4a, 0x1b, 0x35, 0xad, 0xca, 0x19, 0x35, 0x0d, 0x86, 0xa2, 0xf2, 0x5d, 0xf7, 0x50, 0x69, 0x03, + 0xa8, 0x95, 0x9e, 0x14, 0x74, 0xe5, 0xb8, 0x80, 0x8e, 0x0a, 0x52, 0xc6, 0xa3, 0x90, 0xff, 0x94, + 0xe6, 0x6c, 0xef, 0x52, 0xdc, 0xae, 0xff, 0x3d, 0x0b, 0xcd, 0x4f, 0x33, 0xbf, 0x07, 0x03, 0x4d, + 0xbc, 0x69, 0x0b, 0xe2, 0x35, 0x76, 0x34, 0x31, 0x5f, 0x57, 0xe6, 0x10, 0x34, 0x21, 0xda, 0x02, + 0x7b, 0xf1, 0x71, 0x09, 0x49, 0x46, 0x84, 0xcc, 0x3b, 0x74, 0xc3, 0xd7, 0xf3, 0xeb, 0x2c, 0x0f, + 0xf7, 0xc1, 0x1a, 0x1c, 0x84, 0x8e, 0x5e, 0xd0, 0x65, 0x28, 0x57, 0xe3, 0x4d, 0x14, 0x70, 0xaa, + 0x54, 0x52, 0x24, 0xcf, 0xe5, 0x03, 0x4d, 0x30, 0x7d, 0x37, 0x30, 0x5f, 0x2a, 0x69, 0x64, 0x57, + 0x80, 0x64, 0xdd, 0x01, 0x05, 0x48, 0xf6, 0x8d, 0x2a, 0x40, 0x5e, 0xe0, 0x5e, 0xd4, 0x1c, 0x0b, + 0x32, 0xac, 0x17, 0x75, 0x5a, 0x86, 0x77, 0xd1, 0xdb, 0x12, 0x87, 0x6e, 0xda, 0x4f, 0x2f, 0xda, + 0xfd, 0x43, 0xb3, 0xa5, 0x04, 0x84, 0x54, 0x9c, 0x1b, 0x17, 0x9b, 0xd1, 0x2d, 0x65, 0xc9, 0x77, + 0xe1, 0x9d, 0xa1, 0xfb, 0x84, 0x93, 0xef, 0xe6, 0x1b, 0x3d, 0xe7, 0x8d, 0x63, 0xc7, 0xa8, 0x51, + 0x21, 0x49, 0xa9, 0x5b, 0x8e, 0x10, 0xfc, 0xb5, 0xda, 0x5f, 0x4f, 0x4f, 0xe6, 0x51, 0x5d, 0xf1, + 0x49, 0x5c, 0xb1, 0x2c, 0xf2, 0x5d, 0x49, 0x40, 0x69, 0xae, 0x5e, 0x5c, 0x86, 0x26, 0xc2, 0x2f, + 0x13, 0x46, 0x68, 0x20, 0x6e, 0x1c, 0x8d, 0x94, 0x2f, 0xa7, 0x33, 0x80, 0x58, 0x92, 0x2a, 0x5f, + 0x55, 0xfa, 0xb0, 0xae, 0xcc, 0x43, 0x73, 0x24, 0x6e, 0x31, 0xf6, 0xf9, 0x16, 0xfe, 0xb5, 0x80, + 0x66, 0xad, 0xd0, 0x62, 0xe5, 0x75, 0xe1, 0xc6, 0x00, 0x34, 0x62, 0xf7, 0xf7, 0x59, 0x34, 0xbe, + 0xd6, 0x2c, 0x66, 0xcf, 0xeb, 0x02, 0x08, 0x5b, 0x03, 0x65, 0xf2, 0x84, 0x44, 0x7c, 0x1f, 0xf7, + 0x9e, 0x4d, 0xcd, 0x52, 0x69, 0x95, 0xb8, 0x0c, 0x4d, 0xf0, 0xd7, 0x62, 0x0d, 0x34, 0xbb, 0xb7, + 0x38, 0xb7, 0xa0, 0x55, 0x2a, 0x4f, 0x4c, 0xc4, 0xf7, 0x19, 0xbb, 0x7b, 0x87, 0xfb, 0xb6, 0x91, + 0x3b, 0x3a, 0x35, 0x4b, 0xb5, 0xaa, 0x69, 0x6c, 0xe8, 0x34, 0x53, 0xa3, 0x61, 0x0c, 0xf1, 0xf7, + 0x7c, 0xb0, 0x1e, 0x08, 0x63, 0x68, 0x05, 0xa2, 0x9d, 0xed, 0xea, 0xfa, 0x60, 0x5c, 0xb0, 0x55, + 0xb6, 0xb7, 0xc0, 0x65, 0xee, 0x6a, 0x1d, 0xe4, 0xd8, 0xb0, 0xff, 0xb3, 0xba, 0xf2, 0x4b, 0xf4, + 0xa4, 0x94, 0x6e, 0x37, 0xe4, 0x82, 0x74, 0x3b, 0x59, 0xd8, 0x91, 0x85, 0xf2, 0xde, 0x08, 0x87, + 0xc0, 0x90, 0x74, 0x09, 0x4b, 0xdd, 0x0d, 0xa0, 0x50, 0xa0, 0x2b, 0x33, 0x59, 0x4e, 0xe7, 0x89, + 0x5c, 0x36, 0x67, 0x96, 0xa9, 0xfb, 0x29, 0x92, 0x03, 0x9a, 0xdb, 0x33, 0x1e, 0xf4, 0xa7, 0xb0, + 0x3e, 0x04, 0xee, 0x21, 0xb5, 0x73, 0x29, 0xca, 0x33, 0xff, 0xc5, 0x97, 0x66, 0x6c, 0xe0, 0xce, + 0xda, 0x8b, 0x2f, 0xa0, 0x09, 0xe6, 0xdf, 0x70, 0x57, 0x72, 0xc6, 0xd4, 0xd9, 0xea, 0x50, 0x6a, + 0xce, 0x10, 0xcd, 0x95, 0xd8, 0x92, 0xb9, 0x19, 0x92, 0xab, 0xf2, 0x7f, 0xe5, 0xa0, 0xa9, 0x78, + 0x0f, 0x69, 0x4e, 0x6f, 0x73, 0x63, 0x9e, 0x73, 0x53, 0xa1, 0x73, 0x9d, 0xdc, 0x5b, 0x22, 0xbe, + 0x8f, 0x3e, 0x47, 0xfc, 0x3b, 0xb4, 0x0c, 0x4d, 0x24, 0x3f, 0x38, 0x1c, 0x01, 0x33, 0xe6, 0xca, + 0xe5, 0x7c, 0xe8, 0xcb, 0xe2, 0xcd, 0x5b, 0x55, 0xe2, 0x9b, 0x48, 0x24, 0x3f, 0x2b, 0xb4, 0x68, + 0x6d, 0x24, 0x88, 0x71, 0x28, 0xd9, 0x37, 0x8c, 0x70, 0x3d, 0xaa, 0x65, 0x91, 0x60, 0xbe, 0xce, + 0xce, 0xe1, 0xcb, 0xc4, 0x8e, 0x58, 0xf5, 0x68, 0x27, 0x56, 0xa1, 0xc9, 0xa4, 0x74, 0xbd, 0x16, + 0x89, 0x9a, 0x03, 0xe7, 0x58, 0x1e, 0x64, 0x8e, 0x2a, 0x3a, 0xc9, 0x54, 0x6b, 0x4b, 0xb2, 0xe7, + 0x4b, 0xd5, 0x51, 0x6b, 0xe2, 0x03, 0x52, 0xb2, 0xa6, 0x86, 0x44, 0xe2, 0x2d, 0xe4, 0xd3, 0xbc, + 0xac, 0xa9, 0x61, 0xb3, 0xc2, 0x79, 0x0e, 0x53, 0xdf, 0x0c, 0xa4, 0x06, 0x8e, 0xa9, 0x56, 0x35, + 0xb7, 0x57, 0x38, 0x9a, 0x6f, 0xae, 0x7b, 0xaf, 0x70, 0x40, 0x5f, 0x3a, 0x0d, 0x1c, 0xd0, 0x57, + 0xe5, 0xab, 0xc4, 0x76, 0x01, 0x4d, 0x22, 0xbf, 0x6b, 0xf8, 0xac, 0xf8, 0x9b, 0x74, 0x25, 0x20, + 0xd9, 0x6b, 0x64, 0x42, 0x51, 0x90, 0xe0, 0xbc, 0x6a, 0x63, 0x28, 0x14, 0x0c, 0x6d, 0xf2, 0x0d, + 0x5f, 0xee, 0x1a, 0x3e, 0xd1, 0x96, 0xe8, 0xef, 0xf5, 0xe1, 0xc0, 0x11, 0x66, 0x11, 0xc9, 0x84, + 0xd2, 0xdf, 0xeb, 0xab, 0x0a, 0xe0, 0x70, 0x57, 0x23, 0x87, 0xbe, 0x4e, 0x0d, 0x9d, 0x33, 0x0b, + 0x94, 0x0d, 0xa1, 0x70, 0xa4, 0xde, 0x5f, 0xe7, 0x83, 0x98, 0xfc, 0x45, 0xaa, 0xfd, 0x1b, 0xa5, + 0x26, 0x35, 0x84, 0x1e, 0x95, 0x5c, 0x10, 0x25, 0x4f, 0x61, 0xe0, 0x42, 0xe0, 0xee, 0x38, 0x21, + 0x6f, 0xb9, 0xfb, 0x4b, 0xda, 0xdf, 0x3a, 0xa6, 0x7e, 0x96, 0xbd, 0x6c, 0xec, 0x9e, 0xa6, 0x79, + 0xd9, 0x68, 0x57, 0xfa, 0xc0, 0xd9, 0x70, 0x7c, 0xf6, 0xcd, 0xe0, 0xf8, 0x2a, 0x5d, 0x59, 0x8e, + 0x2a, 0xa4, 0xcc, 0x6b, 0x93, 0x1f, 0xe5, 0x10, 0x14, 0xcc, 0x87, 0xdc, 0x07, 0x1e, 0xdf, 0x27, + 0xb3, 0xd0, 0x82, 0x74, 0xc3, 0x3c, 0x18, 0x68, 0xff, 0x6d, 0x1b, 0xda, 0xf7, 0xb9, 0xe9, 0x2a, + 0x3b, 0x94, 0xa4, 0x8d, 0xe9, 0xcb, 0x6f, 0x8e, 0xed, 0x21, 0xa8, 0xd0, 0x15, 0x05, 0xbd, 0x2c, + 0x8d, 0xb2, 0x4d, 0xf2, 0xfc, 0x8c, 0xdb, 0x5d, 0xd8, 0x95, 0x85, 0xe6, 0xd8, 0x9f, 0x12, 0x13, + 0x5f, 0xde, 0x06, 0x92, 0x61, 0xa9, 0x03, 0x10, 0xc7, 0x40, 0x62, 0x3d, 0xe7, 0x86, 0xc0, 0xb9, + 0x19, 0x20, 0x90, 0x07, 0x3d, 0x22, 0x8b, 0xcd, 0xb0, 0x14, 0xf9, 0x09, 0x8f, 0x87, 0x91, 0x3d, + 0x59, 0x3c, 0xec, 0xfd, 0x0b, 0x90, 0xef, 0xb9, 0xc7, 0x79, 0xd0, 0x52, 0x11, 0x98, 0x80, 0x57, + 0xe0, 0x04, 0x3c, 0xfa, 0x1c, 0x8e, 0x8d, 0xda, 0x20, 0x31, 0xf0, 0x33, 0xed, 0x87, 0xfc, 0xc8, + 0xa8, 0x1b, 0x5b, 0xf8, 0x1f, 0x73, 0x50, 0xfe, 0x1a, 0x9c, 0x36, 0x36, 0x18, 0x0e, 0xad, 0x0c, + 0x6f, 0x12, 0xcb, 0x51, 0x3e, 0xb5, 0x99, 0xe2, 0xb2, 0xed, 0x99, 0xc4, 0xad, 0x64, 0xab, 0x90, + 0xf3, 0x41, 0x53, 0x4a, 0x1e, 0x00, 0x5b, 0x9d, 0xf8, 0x9c, 0x49, 0x92, 0xc3, 0x6f, 0x46, 0x96, + 0xe2, 0x0d, 0xe2, 0x8a, 0xe5, 0x3c, 0x18, 0xa0, 0xaa, 0x42, 0xe5, 0x4a, 0xf9, 0xef, 0x73, 0xa4, + 0x89, 0xfd, 0xfb, 0xf0, 0x58, 0x43, 0x77, 0xf2, 0x58, 0xdb, 0xea, 0xc4, 0x27, 0x59, 0x52, 0x86, + 0x1c, 0x0b, 0x58, 0x69, 0x52, 0x86, 0xc9, 0x34, 0x35, 0xc7, 0xf0, 0xb9, 0xf3, 0xc6, 0xd0, 0x01, + 0x96, 0x86, 0x83, 0x83, 0x86, 0x71, 0x5e, 0xd0, 0x60, 0x9c, 0x3b, 0x31, 0x7c, 0xee, 0x44, 0xf2, + 0xd0, 0x29, 0xe3, 0xf2, 0x21, 0x27, 0x34, 0x2c, 0x42, 0xb9, 0xe1, 0x86, 0x75, 0x51, 0x2d, 0x42, + 0xde, 0xcb, 0x59, 0xba, 0x32, 0x5d, 0x22, 0x45, 0xf2, 0x04, 0x96, 0xb4, 0x58, 0x25, 0x45, 0xe2, + 0x8b, 0x08, 0xd5, 0x42, 0xfe, 0xad, 0x60, 0xbd, 0x46, 0x9e, 0x47, 0x7c, 0xec, 0x5c, 0xb1, 0x9c, + 0x0f, 0x6f, 0x1e, 0xcd, 0x40, 0x66, 0xd5, 0x88, 0x95, 0x3c, 0x29, 0x04, 0x21, 0xe2, 0x9f, 0xd0, + 0x95, 0xc7, 0x78, 0x52, 0x68, 0x36, 0x7c, 0xd4, 0xc5, 0xa5, 0xf3, 0x64, 0x51, 0x25, 0x2f, 0x67, + 0x9b, 0xc0, 0x0d, 0x63, 0xc9, 0xd9, 0x5c, 0xc3, 0x10, 0x5f, 0x7d, 0x4e, 0xa2, 0x56, 0x6a, 0xf6, + 0x41, 0x85, 0x92, 0x0d, 0x8e, 0x64, 0x11, 0x3a, 0xc2, 0x76, 0xc1, 0xd6, 0x15, 0xfe, 0x4d, 0x16, + 0x9a, 0xba, 0xd6, 0x1f, 0xdd, 0x6c, 0x03, 0xb8, 0x42, 0x2f, 0x80, 0x73, 0xc0, 0xd3, 0x02, 0x37, + 0x3c, 0xd9, 0x80, 0xa6, 0xd0, 0x0b, 0x68, 0x1c, 0x30, 0x31, 0xcb, 0x0e, 0x13, 0xec, 0xd8, 0x0b, + 0x1c, 0xc7, 0x6e, 0x1d, 0xea, 0x2c, 0xfb, 0xa1, 0xb2, 0xc3, 0x5b, 0xe0, 0x3e, 0x3c, 0xdb, 0xe9, + 0xcc, 0x73, 0x9d, 0x0e, 0xbf, 0xe9, 0xf3, 0x5c, 0x9b, 0xce, 0x4b, 0x27, 0x67, 0xb1, 0x4c, 0x06, + 0x08, 0xbe, 0x49, 0xb2, 0x0d, 0xcc, 0xe1, 0x12, 0x2c, 0xe0, 0xdc, 0x7a, 0x56, 0xf6, 0x83, 0xc2, + 0xbf, 0x1e, 0x0f, 0xf2, 0x5b, 0x8c, 0x07, 0xaa, 0x42, 0xd1, 0x98, 0x3f, 0x04, 0xfb, 0x76, 0xeb, + 0x6f, 0xc5, 0x53, 0x8e, 0xb7, 0x02, 0xa7, 0x8f, 0xa2, 0x6f, 0x85, 0x49, 0x3e, 0xdd, 0xe6, 0xe7, + 0x42, 0xac, 0x26, 0xbc, 0x4c, 0x0e, 0xcd, 0x1f, 0x28, 0x4b, 0xb8, 0x40, 0x96, 0x18, 0xe6, 0x02, + 0x71, 0xa5, 0xcf, 0xdf, 0x50, 0xb2, 0xa9, 0xd1, 0x1f, 0xda, 0xf4, 0xc1, 0x3b, 0xe1, 0xc6, 0x92, + 0xa5, 0xc5, 0xbe, 0xc6, 0x68, 0xc9, 0x7b, 0x5a, 0x34, 0xb6, 0xb4, 0xc4, 0x4f, 0x85, 0xbe, 0xc0, + 0xe7, 0x54, 0x20, 0x14, 0x0a, 0x07, 0xb4, 0xe5, 0xfe, 0xfa, 0x60, 0xdd, 0x56, 0x72, 0xb3, 0x71, + 0x76, 0x0b, 0xae, 0x58, 0xce, 0x4f, 0xf6, 0xc4, 0x8d, 0x8f, 0xf7, 0xa6, 0xbe, 0x19, 0x30, 0xfe, + 0x7f, 0xf6, 0xde, 0x35, 0x3c, 0xaa, 0x23, 0x4b, 0x10, 0xec, 0x9b, 0x20, 0x2c, 0x02, 0x30, 0x76, + 0xd8, 0x80, 0x9c, 0x18, 0x9c, 0x4e, 0x63, 0x23, 0xd2, 0x02, 0xc1, 0x35, 0xc6, 0xb6, 0x5c, 0x7e, + 0x5c, 0x49, 0x40, 0xc9, 0x3c, 0x2c, 0x27, 0x98, 0x7a, 0x37, 0x95, 0x4a, 0x5d, 0x44, 0x16, 0x52, + 0x66, 0x56, 0x66, 0x4a, 0x36, 0xa6, 0x3d, 0x2b, 0x8c, 0x04, 0xc8, 0x08, 0x4b, 0xba, 0xe6, 0x29, + 0x63, 0x1e, 0x65, 0x03, 0xb2, 0xcb, 0x48, 0x60, 0x30, 0x08, 0x3d, 0x4c, 0xf7, 0xb7, 0x33, 0x3f, + 0xba, 0xa7, 0xfa, 0x31, 0xde, 0xd9, 0xee, 0xde, 0xd9, 0x6f, 0xb6, 0xa7, 0xb7, 0xf2, 0x66, 0xa6, + 0x66, 0xbe, 0x1e, 0x76, 0xbe, 0xd9, 0xdd, 0x6f, 0xbf, 0xda, 0x99, 0xfe, 0xe6, 0xbb, 0x71, 0x22, + 0xe2, 0xc6, 0xcd, 0x7b, 0x6f, 0x2a, 0x65, 0xbb, 0x8a, 0xb2, 0xbb, 0xff, 0x80, 0x32, 0xe2, 0x44, + 0xdc, 0x73, 0x4e, 0x9c, 0x73, 0xe2, 0x75, 0xe2, 0x9c, 0x83, 0xc7, 0x59, 0x7b, 0x01, 0x00, 0x3f, + 0x86, 0xa6, 0x85, 0xe3, 0xad, 0xf4, 0x49, 0xc3, 0xfd, 0x9a, 0x72, 0x6f, 0xc0, 0xf8, 0x2d, 0xa3, + 0x9a, 0xfa, 0x57, 0x7d, 0x99, 0xb3, 0xc3, 0x99, 0xa3, 0x97, 0x83, 0x46, 0x01, 0x7e, 0x0e, 0xcd, + 0x68, 0x51, 0x5b, 0x62, 0x89, 0xdd, 0x44, 0x2e, 0xe6, 0x54, 0x3f, 0xaa, 0x29, 0xfe, 0x00, 0x2d, + 0x92, 0xcb, 0xf4, 0xfd, 0x9d, 0xfa, 0xa5, 0x13, 0xfa, 0x87, 0x17, 0xf5, 0xcb, 0x3d, 0xdc, 0x05, + 0xc8, 0xb7, 0xbe, 0x3a, 0x48, 0x21, 0xf0, 0x36, 0x51, 0x38, 0x40, 0xb1, 0x8d, 0x6d, 0xa5, 0xa8, + 0x91, 0xe5, 0x4c, 0x05, 0x2b, 0x7c, 0x90, 0x9e, 0x2a, 0x73, 0x62, 0x08, 0xec, 0x7c, 0xee, 0xc0, + 0xc7, 0xfa, 0xe8, 0x08, 0x98, 0xc5, 0xcc, 0x95, 0xb3, 0xa2, 0x58, 0x6d, 0x43, 0x25, 0x0d, 0x91, + 0x37, 0x78, 0xe6, 0x47, 0x12, 0xca, 0x06, 0x4a, 0xe4, 0xd5, 0xe9, 0xe1, 0x7e, 0x62, 0x0e, 0x6d, + 0xfd, 0x41, 0x45, 0xf6, 0xe2, 0xde, 0xcc, 0xa9, 0xae, 0xfc, 0xbe, 0xa1, 0x31, 0x8e, 0xa0, 0xbb, + 0xda, 0xe8, 0x96, 0x65, 0x16, 0x0b, 0xee, 0xbb, 0x31, 0xc0, 0xca, 0x64, 0x85, 0xfe, 0x01, 0x9b, + 0x95, 0xcc, 0xd9, 0x03, 0xb9, 0xa1, 0xfd, 0xfa, 0xfe, 0xce, 0x89, 0x7d, 0x03, 0xd4, 0xc1, 0xa6, + 0xbf, 0x23, 0xf3, 0xce, 0x79, 0xbd, 0xe7, 0x03, 0x00, 0xa8, 0xc8, 0x0e, 0x5c, 0xd5, 0x07, 0xfb, + 0xf5, 0xde, 0x77, 0xf4, 0x9e, 0x21, 0x7d, 0xe4, 0x8c, 0x3e, 0xb6, 0x2f, 0xc8, 0xfa, 0xc2, 0xaf, + 0x08, 0xe7, 0x81, 0xb3, 0xcd, 0xac, 0x18, 0xe6, 0x79, 0xe0, 0x63, 0xec, 0x2f, 0x8e, 0x25, 0x75, + 0xe5, 0x3c, 0x76, 0xb3, 0x7c, 0x77, 0x6b, 0x34, 0x15, 0xa9, 0x4c, 0xaa, 0xcd, 0x3b, 0x96, 0x09, + 0x97, 0x67, 0xfd, 0x92, 0xa6, 0x1c, 0x93, 0xd0, 0xbb, 0x52, 0x60, 0x81, 0xa1, 0x3f, 0x0e, 0xaa, + 0x23, 0xbf, 0x0e, 0x87, 0xb5, 0x20, 0x1e, 0x30, 0x67, 0xfe, 0x8e, 0x8e, 0xda, 0xff, 0x46, 0xdc, + 0x8b, 0x58, 0x51, 0xfb, 0x66, 0x2c, 0x77, 0x5e, 0xb6, 0x2c, 0x77, 0x1e, 0xcc, 0x5f, 0xee, 0x88, + 0x24, 0x15, 0xb7, 0xe4, 0x59, 0xa7, 0x29, 0x35, 0x48, 0x09, 0xdc, 0x6f, 0x70, 0x65, 0x73, 0xac, + 0xd1, 0xc2, 0x0c, 0xb9, 0xcc, 0x3e, 0x50, 0x6e, 0x07, 0xea, 0xff, 0x58, 0x8a, 0x66, 0x8b, 0x5f, + 0xc7, 0x4f, 0xa1, 0xd2, 0x28, 0xed, 0x4f, 0x3c, 0x58, 0xe0, 0x85, 0x60, 0x1e, 0x4e, 0x0e, 0xd0, + 0xb5, 0x0e, 0x2f, 0x37, 0x1a, 0xa6, 0x76, 0xc7, 0x55, 0xe1, 0x50, 0x01, 0x1a, 0xb2, 0x42, 0x66, + 0x57, 0xe8, 0x22, 0x85, 0x97, 0x1b, 0xf3, 0xbf, 0x60, 0x94, 0xa6, 0x09, 0xf3, 0xbf, 0x9b, 0x51, + 0xb2, 0x58, 0xa3, 0x47, 0xc1, 0x1a, 0xc1, 0xc3, 0xb6, 0xfb, 0x34, 0xe5, 0x1e, 0xb0, 0x46, 0x33, + 0xc3, 0xf1, 0x56, 0x67, 0x63, 0x54, 0xe2, 0x6e, 0x8c, 0x06, 0x6f, 0x4e, 0x1c, 0x70, 0x36, 0x46, + 0x8f, 0xa2, 0x69, 0x4d, 0xdc, 0xe6, 0xc1, 0x57, 0x9a, 0x8c, 0xaf, 0x34, 0x99, 0x5f, 0x69, 0x8a, + 0xb7, 0xe2, 0x24, 0x9f, 0xb2, 0xee, 0x32, 0xb3, 0x70, 0xb0, 0xe4, 0x3b, 0x9b, 0x29, 0x0d, 0x64, + 0x7f, 0x7f, 0x7b, 0xac, 0x7b, 0xcb, 0xda, 0x8d, 0x1b, 0x6f, 0x8f, 0xf5, 0xe7, 0xce, 0x0d, 0x64, + 0x3f, 0x1c, 0xd1, 0x07, 0x4f, 0xa7, 0x3f, 0x3f, 0xa4, 0xf7, 0x0c, 0xe5, 0xae, 0x5d, 0x4a, 0xdf, + 0xbc, 0x6c, 0x54, 0xbf, 0xbc, 0xb1, 0x76, 0xfb, 0xcb, 0xaf, 0x6e, 0xcd, 0x07, 0xb9, 0xf1, 0xa9, + 0x7e, 0x64, 0x30, 0x3b, 0xde, 0xc1, 0xe7, 0xc3, 0x3a, 0x34, 0xb3, 0x35, 0x1a, 0x49, 0xd5, 0x27, + 0x22, 0x24, 0x75, 0xaf, 0x54, 0xee, 0x81, 0x63, 0x18, 0xb3, 0x54, 0x5e, 0x08, 0x6d, 0xd3, 0xa3, + 0x37, 0x32, 0x67, 0xc7, 0x38, 0x81, 0xb7, 0xc7, 0xfa, 0xf5, 0xce, 0x7d, 0x41, 0x13, 0x0e, 0xaf, + 0x46, 0x25, 0xc6, 0x44, 0x01, 0x49, 0x7b, 0x59, 0x4e, 0x64, 0x52, 0x22, 0xe3, 0xcc, 0x91, 0xa1, + 0x4c, 0xf7, 0xde, 0x6c, 0x7f, 0x07, 0x9f, 0x7d, 0x82, 0x50, 0x85, 0x7f, 0x2e, 0x98, 0x23, 0x30, + 0xaa, 0xaf, 0x6a, 0x4a, 0x50, 0x30, 0x47, 0xeb, 0xf4, 0xa1, 0x9b, 0x99, 0x77, 0xce, 0x9b, 0xc6, + 0xe8, 0xd4, 0x61, 0xc3, 0x9a, 0xf6, 0x77, 0x98, 0xb7, 0xff, 0x79, 0xf6, 0x16, 0xcc, 0x15, 0xff, + 0x18, 0xb4, 0x14, 0x62, 0x04, 0x35, 0xa1, 0xbb, 0xd9, 0x8a, 0xa6, 0x3e, 0x16, 0x6b, 0xe6, 0x59, + 0x76, 0x5f, 0xd0, 0x94, 0xef, 0x04, 0xf2, 0xaa, 0xe4, 0x00, 0x58, 0x6c, 0x5d, 0x1b, 0x30, 0xb4, + 0xe2, 0xca, 0xd9, 0xba, 0xda, 0x0a, 0x31, 0x9b, 0xa1, 0xde, 0x7d, 0x73, 0xa2, 0xf3, 0x30, 0xfd, + 0x44, 0x5e, 0x5b, 0x7c, 0x46, 0x42, 0x08, 0xde, 0x81, 0xd5, 0x46, 0x92, 0xbb, 0x88, 0xb5, 0x75, + 0xd8, 0xaf, 0xd4, 0x86, 0x52, 0x21, 0xa3, 0x1e, 0x62, 0x1e, 0x0b, 0x0d, 0xe4, 0xad, 0x5c, 0x70, + 0xb3, 0xa3, 0x67, 0xb2, 0xef, 0x9d, 0x60, 0x94, 0xc2, 0xa7, 0xf3, 0xa6, 0x92, 0x15, 0xbe, 0xf4, + 0x68, 0x67, 0x7a, 0xb4, 0x93, 0x91, 0x99, 0x1e, 0x1e, 0x31, 0xec, 0x34, 0xf1, 0x82, 0x00, 0xaf, + 0x1f, 0xbd, 0xf3, 0x6a, 0xe6, 0xea, 0x40, 0x50, 0xf8, 0x02, 0x3e, 0x25, 0xa1, 0x99, 0x8d, 0xf4, + 0xfb, 0xc9, 0xb2, 0x39, 0xce, 0x1b, 0x2a, 0x8e, 0x20, 0x09, 0x3d, 0x67, 0xc2, 0x33, 0xfc, 0x32, + 0x47, 0x2f, 0x67, 0x0e, 0x0f, 0x7e, 0x6d, 0xf8, 0x99, 0x1f, 0xa8, 0x32, 0x54, 0x19, 0x95, 0x05, + 0x4a, 0x37, 0x3b, 0x1a, 0x10, 0xff, 0xc1, 0x69, 0xe8, 0x01, 0x9b, 0x69, 0x4f, 0xde, 0xa9, 0xd5, + 0xda, 0x76, 0xfb, 0x6a, 0x4d, 0xd1, 0x94, 0xe7, 0xc5, 0xd5, 0xda, 0x2a, 0x61, 0xb5, 0x56, 0xe1, + 0x83, 0xd4, 0x53, 0x99, 0xee, 0x03, 0xfa, 0x60, 0xbf, 0x61, 0xa3, 0x47, 0xfa, 0x72, 0xd7, 0x2e, + 0xe8, 0x3d, 0x37, 0xa8, 0x3f, 0x09, 0x91, 0x65, 0x71, 0x4d, 0xf7, 0x23, 0x34, 0x23, 0x12, 0x37, + 0xe8, 0xa5, 0xab, 0xba, 0x1a, 0x4d, 0x79, 0x26, 0x40, 0x8b, 0xe4, 0x4a, 0xa3, 0x39, 0x7f, 0x7c, + 0x46, 0xd6, 0x1a, 0xd9, 0xf1, 0xbe, 0xec, 0xe8, 0xa9, 0xba, 0x7a, 0x03, 0xdb, 0xf7, 0xdb, 0xd9, + 0xf7, 0x2a, 0x26, 0xfa, 0x8f, 0xe8, 0x63, 0xed, 0x40, 0xb4, 0x14, 0xa4, 0xed, 0xd9, 0xf5, 0x85, + 0x3b, 0x3f, 0xe5, 0x85, 0x74, 0x72, 0xed, 0xed, 0x48, 0x0f, 0x7f, 0xcc, 0xbf, 0x46, 0xf7, 0xbf, + 0xff, 0xc1, 0x83, 0xbc, 0x4e, 0x4d, 0xbf, 0x19, 0x53, 0x6c, 0xd0, 0x32, 0xc5, 0x3e, 0xe0, 0x78, + 0x94, 0x65, 0xc8, 0x20, 0xdc, 0x87, 0xc1, 0xfc, 0x4a, 0xaf, 0x21, 0x44, 0x2e, 0x58, 0x66, 0x59, + 0x63, 0x05, 0x87, 0x5e, 0x0a, 0x14, 0xe0, 0x0a, 0xe3, 0x68, 0x1e, 0x2f, 0xdd, 0xa6, 0xdb, 0xcf, + 0xee, 0x42, 0x33, 0x39, 0x26, 0xf8, 0x69, 0x9a, 0x36, 0x8d, 0x09, 0x37, 0x61, 0x10, 0x2d, 0x92, + 0xef, 0x83, 0xfe, 0xd2, 0x23, 0x7d, 0x11, 0xfa, 0xd1, 0xba, 0x5a, 0x9a, 0x19, 0xad, 0x16, 0x3f, + 0x83, 0xee, 0x8a, 0x44, 0xa3, 0x6a, 0xa2, 0xae, 0x9e, 0xf2, 0x96, 0x1c, 0x0a, 0xb0, 0x32, 0xf9, + 0x5e, 0x8a, 0xcb, 0xfe, 0xce, 0xec, 0x78, 0x5f, 0x7a, 0x78, 0xb4, 0xae, 0x3e, 0xc8, 0xea, 0xf0, + 0x8f, 0xd0, 0xec, 0x88, 0x30, 0xe1, 0x53, 0x29, 0x7f, 0x4a, 0x53, 0x56, 0x07, 0x2c, 0x15, 0xf2, + 0x12, 0xb0, 0x0c, 0xf4, 0x9a, 0xf0, 0xd2, 0xf1, 0xec, 0x27, 0x17, 0xd2, 0xc3, 0x9f, 0x1a, 0x93, + 0x47, 0xcf, 0x50, 0x6e, 0xdf, 0x38, 0x2c, 0xd9, 0x82, 0x96, 0x36, 0xf8, 0x71, 0x71, 0x32, 0x26, + 0x83, 0x46, 0x26, 0xe3, 0xb9, 0x80, 0x4f, 0x38, 0xde, 0x4a, 0xd9, 0x4b, 0xa6, 0xe4, 0x15, 0x68, + 0x5a, 0x8b, 0xda, 0x42, 0xe7, 0x63, 0x48, 0xc6, 0xdb, 0xa2, 0xb6, 0xc8, 0x98, 0x23, 0xaf, 0x5f, + 0x3a, 0xc1, 0xe0, 0x5b, 0xd4, 0x16, 0xfc, 0xb4, 0x38, 0x07, 0x93, 0x14, 0xbc, 0x64, 0x0e, 0x7e, + 0x10, 0xe0, 0x9b, 0x58, 0xe7, 0x22, 0x86, 0x2b, 0x61, 0x5a, 0x5e, 0x85, 0xa6, 0xb5, 0xc5, 0xc3, + 0x74, 0x4e, 0x26, 0xac, 0x32, 0x7e, 0xcb, 0xf3, 0xe8, 0xeb, 0x14, 0x72, 0x33, 0x9b, 0xed, 0xef, + 0xd8, 0x56, 0x5f, 0xe3, 0xab, 0xab, 0x0d, 0x1a, 0x75, 0x86, 0xa2, 0x52, 0xfb, 0x51, 0xca, 0x14, + 0xf5, 0x45, 0x6e, 0x3f, 0xd6, 0x88, 0x0d, 0xf5, 0xee, 0x11, 0xfd, 0xcc, 0x19, 0x9e, 0xc7, 0x4f, + 0xbf, 0x79, 0x4b, 0xbf, 0x71, 0xfa, 0xf6, 0x58, 0x77, 0xe6, 0xc6, 0x15, 0xfd, 0xd4, 0x55, 0x03, + 0x9b, 0xb7, 0xcf, 0xea, 0x37, 0x4e, 0x67, 0x2f, 0x75, 0x71, 0x33, 0xf3, 0x3c, 0x9a, 0x49, 0x87, + 0xa3, 0x6d, 0x0d, 0x3d, 0x6c, 0x20, 0x63, 0x6f, 0x96, 0xca, 0xf7, 0xc0, 0x27, 0x22, 0xf1, 0xb6, + 0x35, 0xa0, 0xfb, 0x41, 0xb3, 0x12, 0xaf, 0xe5, 0xf7, 0x62, 0x88, 0xe5, 0xdc, 0x0e, 0xf0, 0x7b, + 0x31, 0x1f, 0x7b, 0x59, 0xc4, 0x6f, 0xc7, 0xf2, 0xc7, 0x8c, 0x5d, 0x96, 0x3d, 0x47, 0x37, 0x98, + 0xb3, 0xcc, 0x0c, 0xf0, 0xb0, 0xc1, 0x5c, 0x9c, 0xd7, 0x45, 0x7e, 0x07, 0xb0, 0x9b, 0x7c, 0x51, + 0xb8, 0x35, 0x9b, 0xcd, 0xf6, 0x92, 0x0f, 0x07, 0x78, 0x21, 0xe3, 0x6f, 0xfe, 0x9d, 0x9b, 0x79, + 0x77, 0xd6, 0x88, 0xe6, 0x86, 0xcd, 0x03, 0x3b, 0x43, 0x27, 0xc8, 0x83, 0xd3, 0xd2, 0xea, 0x2a, + 0x4d, 0x79, 0x2a, 0x90, 0x5f, 0x27, 0x2f, 0x01, 0xef, 0x0d, 0x63, 0x91, 0x30, 0x74, 0x3e, 0x3d, + 0xd2, 0x67, 0x6c, 0x99, 0xce, 0xf4, 0xa6, 0x87, 0x3f, 0x06, 0x5b, 0x4e, 0xc3, 0x49, 0xe4, 0x37, + 0xab, 0x32, 0x2c, 0x38, 0xfa, 0x4e, 0x60, 0x16, 0x3d, 0x74, 0x26, 0x5d, 0x2d, 0x87, 0x03, 0x2f, + 0xaa, 0x63, 0x4c, 0x6e, 0xe8, 0xa4, 0x27, 0x28, 0xb2, 0x7e, 0xe5, 0x68, 0xf6, 0xc3, 0x11, 0xff, + 0x45, 0xe1, 0x00, 0x5a, 0x01, 0x63, 0x7e, 0x27, 0x0f, 0x15, 0x7e, 0xdb, 0xd3, 0x14, 0xbb, 0xbf, + 0x2d, 0x40, 0xb3, 0x90, 0x60, 0x14, 0xba, 0xa2, 0xf3, 0xf9, 0x84, 0x70, 0x2e, 0x6d, 0x69, 0xf5, + 0xcd, 0x98, 0x45, 0x7e, 0x60, 0x71, 0x34, 0x71, 0xbe, 0x10, 0x11, 0xc8, 0x9a, 0xca, 0x64, 0x52, + 0xaf, 0x29, 0x9b, 0xd0, 0x86, 0x40, 0x21, 0xee, 0x88, 0xb3, 0x89, 0xc0, 0x54, 0xb7, 0xd9, 0xa4, + 0x4f, 0xa2, 0x57, 0xc3, 0x42, 0x57, 0xf8, 0x4d, 0x34, 0x3d, 0x65, 0x6e, 0xde, 0x22, 0x9a, 0xb2, + 0x23, 0x40, 0x0a, 0xe4, 0x3f, 0xcc, 0xeb, 0xb5, 0x1c, 0xfc, 0x52, 0x68, 0x51, 0x7f, 0x07, 0x2c, + 0x35, 0x78, 0x56, 0xd2, 0x2d, 0x5b, 0x95, 0xcd, 0xb5, 0x4a, 0xb0, 0xd6, 0xd8, 0x91, 0x9f, 0x3d, + 0xa0, 0x1f, 0xd8, 0x0f, 0xe0, 0xb7, 0xc7, 0xba, 0x37, 0xae, 0x5d, 0xaf, 0xd4, 0xfc, 0x20, 0x3d, + 0x3c, 0x92, 0x1e, 0x3b, 0x6b, 0x2c, 0x6a, 0x49, 0xf9, 0xb2, 0x20, 0xf9, 0x8a, 0x7f, 0xdc, 0x83, + 0x7c, 0x8c, 0xc2, 0xea, 0x50, 0xb4, 0xf1, 0xb5, 0x48, 0x63, 0x6a, 0x67, 0x7d, 0x28, 0xbc, 0x2b, + 0xd4, 0xf4, 0xa5, 0x97, 0x75, 0x92, 0xa9, 0x2f, 0xcf, 0xe6, 0xe9, 0xcb, 0x23, 0x85, 0xf4, 0x85, + 0xaf, 0x8f, 0x7e, 0x57, 0x6a, 0x43, 0x2d, 0xcd, 0xa4, 0x0c, 0x60, 0x3b, 0x74, 0xe3, 0x63, 0x9d, + 0x57, 0xd2, 0x23, 0xbf, 0xd4, 0x87, 0x2f, 0xe8, 0x83, 0xe3, 0x7a, 0x77, 0xa7, 0xff, 0xbf, 0x79, + 0xd0, 0xc3, 0x05, 0x9a, 0x7f, 0x33, 0xb4, 0x28, 0x6c, 0x59, 0x8b, 0x2d, 0xc9, 0xd7, 0xa2, 0x7c, + 0xba, 0x5c, 0xae, 0x16, 0xed, 0xdc, 0xa1, 0xb9, 0x5c, 0x41, 0x9f, 0xa8, 0xff, 0xef, 0xe4, 0xdc, + 0x72, 0xe7, 0xb6, 0x5d, 0xa5, 0x34, 0x09, 0xdd, 0xef, 0x84, 0x1e, 0xbe, 0x1b, 0x79, 0x22, 0x8d, + 0xf4, 0x40, 0xde, 0x13, 0x69, 0xc4, 0x18, 0x4d, 0x8f, 0xf2, 0xa3, 0x8e, 0x20, 0xf9, 0x1b, 0xfb, + 0xd0, 0xac, 0xa8, 0x9a, 0x7a, 0x2d, 0x96, 0xd8, 0x65, 0xae, 0xac, 0x82, 0x62, 0x91, 0x70, 0xa4, + 0x3d, 0xdd, 0x72, 0xa4, 0xfd, 0x20, 0x9a, 0xd9, 0xc0, 0xbe, 0x4a, 0x16, 0x44, 0x25, 0x41, 0xb3, + 0xc0, 0x3f, 0x3c, 0x0d, 0x2d, 0xe0, 0x4b, 0xd0, 0x97, 0x93, 0x75, 0x2d, 0xa1, 0xa6, 0x6f, 0xe2, + 0x79, 0xf6, 0x0d, 0xc9, 0xe6, 0xc6, 0x08, 0xa7, 0x8e, 0xc2, 0x49, 0x41, 0x97, 0x34, 0x71, 0xf4, + 0x94, 0xbe, 0xaf, 0x87, 0x1f, 0x57, 0xc2, 0xd2, 0x63, 0xa2, 0xbd, 0x4b, 0x6f, 0x1f, 0xab, 0xf2, + 0xd5, 0xbf, 0x5a, 0xbd, 0xb1, 0xae, 0x66, 0x7b, 0xdd, 0x26, 0x65, 0xfd, 0xda, 0x72, 0xbd, 0xf3, + 0x13, 0xbd, 0xf3, 0x0a, 0xc0, 0x2f, 0xab, 0xa8, 0x0f, 0xd6, 0x6d, 0x53, 0xb6, 0xae, 0xa5, 0x75, + 0xb0, 0x7b, 0x62, 0x75, 0x5b, 0xbe, 0xab, 0x04, 0xd7, 0xd6, 0xf2, 0x66, 0x86, 0x0c, 0xb0, 0xaa, + 0x4d, 0x4a, 0x70, 0xc3, 0xda, 0xad, 0xac, 0x6a, 0xf8, 0x2d, 0xfd, 0xd4, 0x08, 0xad, 0x12, 0x0e, + 0x47, 0x99, 0x3b, 0x93, 0xcb, 0x20, 0xf0, 0x03, 0x37, 0xc1, 0x8d, 0x84, 0xee, 0xa9, 0xfe, 0xbd, + 0x07, 0x95, 0xd9, 0x5b, 0x7d, 0x33, 0xb4, 0xf8, 0x25, 0x8b, 0x16, 0x2f, 0xc8, 0xd7, 0x62, 0x4a, + 0x4d, 0x71, 0xe7, 0x95, 0xdb, 0x34, 0x65, 0x0b, 0x7a, 0x25, 0xe0, 0xca, 0x0b, 0x79, 0x89, 0x9d, + 0x85, 0x30, 0x0e, 0x85, 0x37, 0x54, 0x47, 0x4b, 0xd0, 0x5d, 0xb4, 0x2b, 0xbc, 0x0a, 0xdd, 0x15, + 0x31, 0xfe, 0xe0, 0xaa, 0xb0, 0x80, 0xa8, 0x02, 0x2d, 0x93, 0x67, 0x42, 0x7f, 0xc6, 0x0a, 0x9f, + 0x95, 0xe1, 0x15, 0xa8, 0x24, 0xd4, 0x1c, 0x09, 0x25, 0x29, 0x3f, 0x89, 0x7f, 0x19, 0x94, 0xc8, + 0xb3, 0xd9, 0xe7, 0x7f, 0xa9, 0xf7, 0x1e, 0x0e, 0x42, 0xa1, 0x31, 0x62, 0xa1, 0x44, 0x78, 0x27, + 0x15, 0x7c, 0x18, 0x31, 0xa3, 0x40, 0x9e, 0x0b, 0xd0, 0x35, 0xf5, 0xaf, 0x66, 0x4e, 0x5f, 0xcf, + 0x9c, 0xee, 0x08, 0x92, 0x62, 0x1c, 0x44, 0x73, 0x63, 0xc9, 0x9a, 0xd6, 0x64, 0x2a, 0xd6, 0x12, + 0x79, 0x03, 0xf6, 0x5b, 0x20, 0xf8, 0xc4, 0x2b, 0x39, 0xbf, 0x4e, 0xc6, 0xfa, 0x60, 0xbf, 0x7e, + 0xf0, 0x3a, 0x3d, 0x2c, 0x82, 0x13, 0xd6, 0x7c, 0x20, 0xfc, 0x14, 0x9a, 0x11, 0x4b, 0x92, 0x45, + 0x77, 0x89, 0xb9, 0x9f, 0xa1, 0x45, 0xec, 0xaa, 0x91, 0xca, 0x20, 0xac, 0xb7, 0x69, 0x1d, 0xae, + 0x43, 0x28, 0xa9, 0x26, 0x22, 0x2a, 0x34, 0x9e, 0x61, 0x2e, 0xfa, 0x85, 0x62, 0xb9, 0x4c, 0xec, + 0x00, 0x8e, 0x5b, 0x99, 0x8b, 0xa8, 0x09, 0x85, 0x95, 0xbc, 0x73, 0x4e, 0xd2, 0x0d, 0x3b, 0xe7, + 0x7c, 0x10, 0x78, 0x01, 0xe7, 0x9c, 0x55, 0xbe, 0xcd, 0x2f, 0x07, 0x37, 0x29, 0x1b, 0xcb, 0xe1, + 0x61, 0x9c, 0x99, 0x33, 0xdc, 0x62, 0x0d, 0x4a, 0xbf, 0x49, 0xd6, 0xc0, 0xaf, 0x29, 0x0f, 0xa1, + 0x45, 0x01, 0x26, 0x77, 0x56, 0x9e, 0x03, 0xb8, 0xff, 0x3f, 0x89, 0x26, 0x7b, 0x4b, 0x6b, 0x43, + 0x54, 0x4d, 0xdd, 0xb1, 0x43, 0xad, 0xaf, 0xec, 0x33, 0x85, 0xd7, 0xa1, 0x92, 0xb6, 0x78, 0x98, + 0xbb, 0x10, 0x90, 0xd7, 0xd8, 0x50, 0x22, 0x2f, 0x81, 0x5c, 0xeb, 0x54, 0x7b, 0xc9, 0x4a, 0xa9, + 0x2d, 0x1e, 0xce, 0xf6, 0x77, 0xe8, 0x97, 0x7a, 0xb3, 0xe3, 0x7d, 0x74, 0xc6, 0x06, 0x60, 0xbc, + 0x91, 0x6e, 0x38, 0x4b, 0xcc, 0xdb, 0x3c, 0xd8, 0x70, 0x2e, 0x77, 0xed, 0x85, 0xef, 0x1d, 0xc5, + 0xee, 0x60, 0xff, 0xb9, 0x0e, 0x95, 0x26, 0x09, 0x67, 0xeb, 0x6a, 0xa9, 0x34, 0x07, 0x34, 0x65, + 0x69, 0x80, 0x17, 0xb2, 0xd5, 0x34, 0xf4, 0x07, 0xa5, 0x1c, 0xb1, 0x20, 0x07, 0xab, 0x7a, 0x51, + 0x53, 0x9e, 0x43, 0xcf, 0x06, 0xb0, 0x31, 0x5e, 0xd6, 0xa1, 0x92, 0x1f, 0x35, 0x57, 0x0e, 0xc2, + 0xf7, 0x2b, 0x26, 0xda, 0xdf, 0x9a, 0xe8, 0x3c, 0x9c, 0x1e, 0x3e, 0xac, 0xf7, 0x76, 0xa7, 0x47, + 0xfa, 0xfc, 0x7f, 0x23, 0x5a, 0x79, 0xde, 0xc5, 0x37, 0xc3, 0xca, 0xbf, 0x6a, 0xb1, 0xf2, 0xf3, + 0xf3, 0xad, 0x3c, 0x50, 0xe3, 0xea, 0xf8, 0x25, 0xb2, 0xc5, 0xc9, 0x27, 0xe7, 0x3e, 0x0b, 0x53, + 0xad, 0xeb, 0x31, 0xb1, 0xad, 0x9b, 0x7d, 0xbf, 0x34, 0x1d, 0xcd, 0x80, 0xe6, 0x78, 0x29, 0x13, + 0x42, 0x50, 0x9a, 0x7b, 0x35, 0xe5, 0x6e, 0x26, 0x84, 0xf0, 0x1f, 0x93, 0xb2, 0x27, 0x04, 0xb9, + 0xf0, 0x98, 0x13, 0x81, 0x29, 0x17, 0xa5, 0xf0, 0xe5, 0xba, 0x5a, 0x53, 0x08, 0xf0, 0x73, 0x08, + 0xc1, 0xdf, 0x82, 0xa7, 0x0d, 0xdc, 0x42, 0x99, 0xc5, 0xf2, 0x6c, 0x8a, 0x32, 0x33, 0x88, 0xbc, + 0x06, 0x3f, 0x8f, 0x66, 0x86, 0x23, 0x8d, 0x89, 0x60, 0x28, 0xda, 0xa4, 0x8a, 0x4f, 0x34, 0xcc, + 0x52, 0xf9, 0x1e, 0x68, 0xec, 0xab, 0xab, 0x6f, 0x5b, 0xed, 0xab, 0xa9, 0xab, 0x0d, 0x06, 0xcd, + 0x4a, 0xfc, 0x12, 0x9a, 0x13, 0x89, 0xb7, 0xad, 0xa9, 0xe1, 0x7d, 0x94, 0x98, 0x07, 0x2a, 0xd6, + 0x1a, 0xb1, 0x9f, 0x35, 0xd0, 0x8f, 0x15, 0x80, 0xfb, 0x40, 0xcf, 0x30, 0xd1, 0x00, 0x2d, 0x9b, + 0x07, 0x2d, 0x33, 0x5d, 0xed, 0xfa, 0xa9, 0x01, 0xf3, 0x16, 0x07, 0xb4, 0x49, 0x45, 0x0b, 0x42, + 0x6d, 0xa1, 0x48, 0x73, 0xa8, 0xa1, 0x59, 0xad, 0xab, 0x57, 0x1a, 0x1b, 0x13, 0x6a, 0x32, 0x09, + 0x71, 0xe0, 0x0c, 0x1b, 0x3f, 0x1d, 0xee, 0x94, 0xdc, 0x60, 0xe4, 0x39, 0x7a, 0xd7, 0x47, 0xe9, + 0xf1, 0x93, 0xbe, 0xba, 0x7a, 0x5f, 0xe6, 0xe8, 0xe5, 0xa0, 0x1b, 0x9c, 0xe5, 0xd0, 0xa8, 0xd4, + 0xf1, 0xd0, 0xc8, 0x19, 0x49, 0x0e, 0x50, 0x65, 0x2c, 0x37, 0xd1, 0xfc, 0x00, 0x15, 0x0b, 0x36, + 0x26, 0xf4, 0xa6, 0xf8, 0x97, 0xa2, 0x4b, 0xe6, 0x16, 0x35, 0xdc, 0x9a, 0x88, 0xa4, 0x76, 0xaf, + 0x4f, 0xc4, 0x5a, 0xe3, 0x77, 0xcc, 0xfc, 0xfe, 0xd4, 0x6e, 0x7e, 0xab, 0x35, 0xe5, 0x05, 0xd1, + 0xfc, 0xca, 0x82, 0xf9, 0x2d, 0x9f, 0x78, 0xff, 0xb4, 0x7e, 0xab, 0x33, 0x3d, 0x76, 0xb6, 0x42, + 0xef, 0x1c, 0xd3, 0x07, 0x6f, 0x66, 0x3f, 0xfc, 0x5c, 0xef, 0x1e, 0xc9, 0x76, 0x1d, 0xd4, 0xb5, + 0x6e, 0x70, 0x18, 0xc8, 0x76, 0x1d, 0x5c, 0x26, 0x6e, 0x3b, 0x9f, 0xd2, 0x94, 0xd5, 0x48, 0x86, + 0x73, 0x7f, 0x47, 0x9a, 0xd9, 0x61, 0x8d, 0x3e, 0xd8, 0xa5, 0x77, 0x0e, 0x64, 0x47, 0x3b, 0xe8, + 0xea, 0xf4, 0xd7, 0x1e, 0xf4, 0x90, 0x2b, 0xb7, 0xbe, 0x19, 0xe6, 0xab, 0xde, 0x62, 0xbe, 0x16, + 0xd9, 0xcc, 0x97, 0x48, 0x54, 0x71, 0x4b, 0x55, 0xf1, 0xd0, 0xdf, 0x99, 0x27, 0xfc, 0x1a, 0xc5, + 0xca, 0x4e, 0x37, 0x1b, 0xd6, 0xef, 0x41, 0xc4, 0x0c, 0x6e, 0x50, 0x77, 0xd7, 0x87, 0x22, 0x89, + 0x6f, 0xb1, 0x20, 0xae, 0xd2, 0x94, 0x15, 0xa8, 0x22, 0xe0, 0x44, 0x2d, 0x17, 0xc1, 0xa1, 0xfd, + 0x13, 0xda, 0x79, 0x7d, 0x88, 0x5d, 0x3a, 0xfd, 0xa9, 0x07, 0xdd, 0x6f, 0x05, 0xff, 0x56, 0x6c, + 0x8e, 0x28, 0x39, 0x53, 0x77, 0xe6, 0xc8, 0xe7, 0x03, 0x9f, 0x2c, 0x81, 0x6f, 0x05, 0x05, 0xed, + 0xdf, 0x4a, 0xe8, 0x2e, 0xda, 0x1e, 0x07, 0x50, 0xc9, 0x06, 0x75, 0x37, 0x17, 0x2d, 0xe2, 0xa6, + 0x05, 0x25, 0x72, 0x29, 0xf4, 0x65, 0x4c, 0x98, 0xa4, 0x00, 0xaf, 0x26, 0xcd, 0x04, 0xcf, 0x0d, + 0xc2, 0x6d, 0x56, 0x26, 0xcf, 0xa6, 0xdf, 0x86, 0x59, 0x8f, 0x15, 0xe3, 0x75, 0x68, 0x56, 0xa3, + 0xed, 0xfd, 0x07, 0x31, 0xe6, 0x62, 0xb9, 0x8c, 0xa1, 0xb5, 0xe5, 0xe1, 0x87, 0x08, 0xc0, 0x1e, + 0x8b, 0x31, 0xcc, 0xe5, 0xb9, 0x5c, 0x44, 0xa8, 0x4d, 0xef, 0x43, 0xb0, 0xba, 0x12, 0x5d, 0x25, + 0xb9, 0x12, 0xfd, 0xa5, 0xe4, 0xe8, 0xa4, 0xfb, 0xb1, 0xa4, 0x29, 0x8d, 0x79, 0x5e, 0xba, 0x5b, + 0x45, 0x2f, 0xdd, 0x0a, 0x61, 0x1f, 0x41, 0xc7, 0xae, 0xc2, 0xc7, 0x62, 0x6f, 0x44, 0xa2, 0x4d, + 0x31, 0x82, 0x5c, 0x85, 0x8f, 0xa8, 0x1c, 0xfd, 0xaf, 0x2d, 0x1e, 0xae, 0xf0, 0x45, 0x63, 0x8d, + 0x6a, 0x93, 0x61, 0x0e, 0x2a, 0x7c, 0xa9, 0x50, 0x72, 0xd7, 0x6f, 0xaa, 0x5f, 0x4c, 0x3c, 0x6f, + 0x68, 0x26, 0x38, 0xb4, 0xdf, 0x6b, 0xeb, 0x22, 0x58, 0x02, 0xf7, 0x11, 0xa5, 0xac, 0x8b, 0xe0, + 0x4c, 0xde, 0x45, 0x70, 0xba, 0xd1, 0xc5, 0xd7, 0xe7, 0x30, 0xfc, 0x3d, 0x34, 0x93, 0x04, 0x9c, + 0x23, 0xce, 0x98, 0xd3, 0xc8, 0xac, 0xfd, 0x8c, 0xa6, 0x54, 0x06, 0xcc, 0x52, 0xd9, 0x0f, 0xa1, + 0x9c, 0x79, 0x7c, 0xb9, 0xf5, 0x9b, 0xb6, 0xfa, 0xe0, 0x47, 0xe6, 0xe0, 0xd5, 0xdb, 0x63, 0xdd, + 0x24, 0x08, 0xd7, 0x74, 0xd9, 0xe3, 0xfb, 0x83, 0xa0, 0xd9, 0x0a, 0xbf, 0x82, 0xee, 0x52, 0xa3, + 0x10, 0xa2, 0x79, 0x3a, 0xe9, 0x96, 0x24, 0xae, 0x62, 0x65, 0xb2, 0xdf, 0x50, 0x8e, 0xf7, 0xcf, + 0x14, 0xd3, 0x29, 0x6b, 0x83, 0x9f, 0x44, 0x25, 0xcd, 0x91, 0x96, 0x48, 0x8a, 0xde, 0xff, 0x3d, + 0x44, 0xb6, 0xde, 0xa4, 0x44, 0x9e, 0x9d, 0x19, 0xea, 0x99, 0x38, 0xf7, 0x19, 0x0b, 0x17, 0x3b, + 0x3d, 0x60, 0x34, 0x84, 0x3a, 0x5c, 0x81, 0xa6, 0xc7, 0x0d, 0x1d, 0x87, 0x5b, 0xc0, 0x32, 0x63, + 0x11, 0x48, 0x0a, 0xe4, 0x19, 0x13, 0xe7, 0x3e, 0xcb, 0x9e, 0xdd, 0xcb, 0xc0, 0x49, 0x21, 0xae, + 0x41, 0x33, 0x92, 0x91, 0x96, 0x78, 0x33, 0x0b, 0x44, 0x4c, 0xd6, 0x30, 0xb4, 0x48, 0x5e, 0xac, + 0xf7, 0x7c, 0x0c, 0xf7, 0x3b, 0xbe, 0x98, 0x28, 0x5a, 0x3e, 0x66, 0x37, 0x01, 0x0e, 0xb7, 0x4b, + 0x08, 0x81, 0x83, 0xec, 0xe6, 0xd6, 0xe6, 0x66, 0x1a, 0x45, 0x98, 0xa4, 0x2b, 0x17, 0x8a, 0xe5, + 0x97, 0x85, 0xd4, 0x7b, 0x15, 0xb0, 0x9d, 0x81, 0x5a, 0xb8, 0x33, 0xe3, 0x61, 0x5c, 0x9e, 0xf5, + 0xe9, 0xe3, 0xef, 0xd2, 0xb0, 0xbc, 0x99, 0xe3, 0xd7, 0x49, 0x32, 0x05, 0x27, 0xe8, 0xa0, 0xd0, + 0x39, 0xfe, 0x89, 0xe8, 0x46, 0x3b, 0xd3, 0xf4, 0x74, 0x11, 0x9c, 0x9c, 0x2b, 0x79, 0xc4, 0xc8, + 0xec, 0x47, 0x23, 0x15, 0x3e, 0xe8, 0x93, 0xbe, 0x28, 0x1a, 0xbd, 0x46, 0x63, 0x0b, 0x82, 0x03, + 0x33, 0xf1, 0x40, 0x16, 0xfd, 0x70, 0x7f, 0x22, 0xba, 0x5a, 0x22, 0xa1, 0x7b, 0xd3, 0xd5, 0xd2, + 0xb9, 0x7b, 0xe2, 0x7e, 0xe9, 0xd2, 0xbd, 0xe9, 0x71, 0xb9, 0x96, 0x9f, 0x16, 0xcc, 0x12, 0xae, + 0x2b, 0xe9, 0x69, 0x81, 0xcf, 0xda, 0x31, 0x38, 0xa4, 0xc3, 0xd9, 0x41, 0xf6, 0xd2, 0x7b, 0x13, + 0xed, 0x5d, 0xfc, 0xc4, 0x60, 0x83, 0xe0, 0xf7, 0x3b, 0x9b, 0xc5, 0x18, 0xa8, 0x08, 0xf0, 0x42, + 0x97, 0xae, 0x88, 0xba, 0xd3, 0xae, 0x38, 0x2c, 0x5e, 0x83, 0x3c, 0x6d, 0x32, 0xbd, 0x6d, 0x24, + 0x77, 0xc9, 0x9e, 0x36, 0x59, 0x5e, 0x04, 0x17, 0x8c, 0xe0, 0x90, 0xd9, 0x26, 0x93, 0xfb, 0x45, + 0xc3, 0xf8, 0xd2, 0x07, 0x66, 0x9e, 0x36, 0x19, 0xd7, 0x72, 0x07, 0x0e, 0x08, 0x63, 0x5b, 0xa1, + 0x29, 0xcb, 0xb8, 0x03, 0xc7, 0x43, 0x16, 0xf7, 0x0c, 0x28, 0x04, 0x4e, 0x01, 0x2e, 0xdc, 0x53, + 0xc3, 0xe0, 0x2e, 0xaa, 0x0a, 0xb8, 0x9a, 0x35, 0xb6, 0xc9, 0x12, 0x1d, 0xc7, 0xe1, 0xe1, 0x07, + 0x04, 0xbd, 0xf2, 0x1f, 0xf3, 0x80, 0xdb, 0x4c, 0x5e, 0xe3, 0x6f, 0xc6, 0xdc, 0xf9, 0x43, 0xcb, + 0x25, 0xdb, 0xf2, 0xfc, 0xb9, 0xd3, 0x95, 0xae, 0xda, 0x50, 0x2a, 0x04, 0x7b, 0x39, 0x98, 0x51, + 0x69, 0xef, 0xe0, 0xbb, 0x44, 0x13, 0x0c, 0x0f, 0x49, 0xe0, 0x2a, 0xea, 0xda, 0x01, 0x5e, 0x8d, + 0x4a, 0xc8, 0x7a, 0x85, 0x72, 0x07, 0x7c, 0xdc, 0x48, 0x89, 0xd5, 0x51, 0x1f, 0xcc, 0x4f, 0x10, + 0xaa, 0xf0, 0xf7, 0xd1, 0x5d, 0x80, 0x7d, 0xb2, 0xcc, 0x43, 0xa6, 0x7c, 0xbf, 0xed, 0x3c, 0x54, + 0xf8, 0x62, 0xad, 0x9a, 0x0a, 0x45, 0x9a, 0xe9, 0x3c, 0x4a, 0xdb, 0xe5, 0xa1, 0xcb, 0x8a, 0xfd, + 0x6f, 0x95, 0x20, 0x6c, 0x6f, 0xfb, 0xf5, 0x3c, 0x3e, 0xa9, 0x72, 0x98, 0x4b, 0x08, 0x52, 0xe2, + 0x5c, 0x32, 0x13, 0x3a, 0xf0, 0xfd, 0x36, 0x5e, 0x9f, 0x3c, 0x97, 0xf7, 0xfa, 0x04, 0xdc, 0x2e, + 0xe9, 0xeb, 0x93, 0x32, 0xd0, 0x0a, 0x9f, 0x83, 0x87, 0x02, 0x7d, 0x90, 0xb0, 0x3a, 0xff, 0x1d, + 0x0a, 0x70, 0x94, 0x09, 0xe6, 0xec, 0x2f, 0xff, 0x02, 0x25, 0xd7, 0xde, 0x39, 0xd5, 0x17, 0x28, + 0x3d, 0x7d, 0xd9, 0x23, 0x67, 0x1c, 0x5e, 0xa0, 0x6c, 0x43, 0x64, 0x1a, 0xa7, 0x79, 0x5f, 0xef, + 0xcf, 0x97, 0x8b, 0xad, 0xa1, 0xe4, 0x2e, 0x30, 0x13, 0x04, 0x4c, 0x7e, 0x18, 0xa8, 0xce, 0x0d, + 0x5d, 0xc8, 0x8e, 0xee, 0xb7, 0xbb, 0xac, 0x10, 0xff, 0x0a, 0x03, 0x90, 0x78, 0xd4, 0x32, 0x7b, + 0x37, 0x53, 0xf4, 0xa8, 0x65, 0xf6, 0x6e, 0xb6, 0x68, 0xe1, 0x04, 0xdb, 0xb6, 0xca, 0xfa, 0x70, + 0x82, 0xaa, 0x24, 0xb5, 0xb7, 0xb3, 0x45, 0x0b, 0xcb, 0x6c, 0xab, 0xff, 0x8c, 0x07, 0xcd, 0xb1, + 0x6c, 0x76, 0xf0, 0x06, 0x34, 0x37, 0x29, 0x16, 0xf0, 0xa5, 0x24, 0x79, 0x89, 0x9b, 0x5f, 0x27, + 0xcf, 0xe2, 0x9b, 0xa1, 0xba, 0xda, 0x60, 0x7e, 0x2d, 0x7e, 0x15, 0xdd, 0x6b, 0x29, 0x12, 0xd6, + 0x9a, 0xe4, 0x95, 0x8d, 0xbd, 0x56, 0x9e, 0x6b, 0xee, 0xae, 0x40, 0xb0, 0xec, 0x30, 0xb8, 0xc6, + 0x69, 0x09, 0x4a, 0xf0, 0xb3, 0x2c, 0x41, 0xcd, 0xae, 0x60, 0x15, 0x6a, 0x5d, 0x7f, 0x1a, 0x22, + 0x89, 0x7c, 0x01, 0x2b, 0xf9, 0x42, 0x1b, 0xba, 0x0a, 0x3d, 0x2a, 0xa1, 0xfb, 0x36, 0xc7, 0x1a, + 0x55, 0xae, 0xaa, 0xf0, 0xa2, 0x16, 0x3f, 0x8b, 0xa6, 0xef, 0x08, 0x45, 0x9a, 0xcb, 0x24, 0x62, + 0x15, 0x96, 0xe6, 0x8f, 0xbe, 0x43, 0x93, 0xba, 0xe8, 0x8e, 0x58, 0x90, 0x34, 0xc2, 0x0a, 0xba, + 0x2b, 0xd9, 0x1a, 0x0e, 0xab, 0x49, 0x66, 0x55, 0x8a, 0x6e, 0xcf, 0xda, 0xf9, 0x5f, 0x46, 0x0b, + 0x5c, 0x60, 0xb0, 0x17, 0x7c, 0xb9, 0x09, 0xb3, 0xe1, 0xe6, 0x92, 0xff, 0x16, 0x9f, 0xfa, 0x78, + 0x2c, 0x4f, 0x7d, 0xfc, 0x7f, 0x5f, 0x82, 0xee, 0xa9, 0x4d, 0x84, 0x22, 0x51, 0xc8, 0x5f, 0x0a, + 0xcb, 0xec, 0x3d, 0xa8, 0x94, 0xba, 0x1f, 0x25, 0x09, 0xa5, 0x33, 0xab, 0xb7, 0x6b, 0xca, 0x8f, + 0x03, 0xbc, 0x50, 0xae, 0x17, 0x5d, 0xce, 0xea, 0xea, 0xcd, 0xe7, 0x01, 0x1a, 0x8d, 0x91, 0x0e, + 0xa3, 0x48, 0x4f, 0x0a, 0x47, 0xba, 0x27, 0xda, 0xbb, 0xd2, 0xc3, 0xed, 0xb7, 0xc7, 0xba, 0x21, + 0x6a, 0xa6, 0x1d, 0x26, 0xc8, 0xfb, 0xc6, 0xdb, 0xec, 0x01, 0x59, 0x9e, 0xd6, 0x94, 0x15, 0xe2, + 0xea, 0xe7, 0xe1, 0x78, 0xac, 0x31, 0x77, 0x6b, 0x6f, 0xf6, 0xe2, 0x68, 0x9e, 0x4f, 0x17, 0x07, + 0x21, 0x9b, 0x68, 0x9f, 0x24, 0x2e, 0x7b, 0x12, 0xa8, 0xc4, 0xe0, 0x47, 0xb2, 0x6c, 0x1a, 0xa1, + 0xe8, 0xc7, 0x9a, 0xf2, 0x83, 0x00, 0x94, 0x70, 0x72, 0x04, 0x84, 0x2c, 0xc4, 0x58, 0xc8, 0x2c, + 0x8a, 0x1c, 0xe8, 0x18, 0xdf, 0x8f, 0x4a, 0x76, 0x90, 0x78, 0x83, 0x86, 0x3d, 0x2c, 0x0d, 0xc2, + 0x0f, 0xbc, 0x02, 0x61, 0x12, 0xc2, 0xbc, 0x5e, 0x4d, 0x44, 0x62, 0x8d, 0x5b, 0xd4, 0x70, 0x2c, + 0xda, 0x98, 0xa4, 0x17, 0xc1, 0x0e, 0x35, 0x78, 0x25, 0xba, 0x0f, 0x12, 0x3a, 0x28, 0xcd, 0xcd, + 0x66, 0x4e, 0x07, 0x62, 0xee, 0x4a, 0x83, 0x4e, 0x55, 0xc6, 0x78, 0xa7, 0x22, 0x2d, 0x6a, 0xac, + 0x15, 0x8e, 0xf3, 0xe6, 0x04, 0xd9, 0x4f, 0x5c, 0x8e, 0xe6, 0x42, 0xfc, 0x61, 0x92, 0x47, 0xc3, + 0x98, 0x22, 0x61, 0x89, 0x1b, 0xcc, 0x2f, 0x36, 0xe4, 0x29, 0xa9, 0x36, 0xab, 0xe1, 0x54, 0x2c, + 0x41, 0x5f, 0x6b, 0xf1, 0xdf, 0xd8, 0x87, 0x66, 0xc5, 0x0d, 0xfc, 0x68, 0x35, 0xbc, 0xd8, 0x12, + 0x8b, 0xc8, 0x77, 0x22, 0xc9, 0x50, 0x43, 0xb3, 0xba, 0xb6, 0x2d, 0x12, 0x4e, 0xb1, 0x77, 0x32, + 0xc6, 0x77, 0xac, 0xc5, 0xf8, 0xbb, 0xe8, 0xa1, 0xe4, 0xae, 0x48, 0xfc, 0x7b, 0xa1, 0x48, 0x6a, + 0x5d, 0x8c, 0xc6, 0x32, 0xde, 0x0a, 0xd8, 0x32, 0xd6, 0x90, 0x64, 0x09, 0xc1, 0xc9, 0xc0, 0xf0, + 0x7c, 0x34, 0xa3, 0x31, 0xb1, 0x3b, 0xd8, 0x1a, 0x85, 0x95, 0x5e, 0x90, 0xfe, 0xf2, 0x77, 0x78, + 0xd0, 0xbd, 0x82, 0x8c, 0x7f, 0xd3, 0x8e, 0xba, 0x8c, 0x79, 0xe6, 0x91, 0x22, 0x2c, 0xc5, 0x64, + 0x8b, 0xa5, 0x2e, 0x0f, 0xba, 0xdb, 0x68, 0x66, 0x06, 0xa1, 0xc1, 0xcf, 0xe7, 0xdb, 0x0c, 0xb8, + 0x2b, 0xe2, 0x85, 0xf2, 0x6c, 0x51, 0xb6, 0x99, 0x52, 0x99, 0x76, 0xe5, 0x35, 0x34, 0x4b, 0x0c, + 0x9d, 0x03, 0x56, 0xad, 0xd2, 0x09, 0x57, 0xf3, 0xa3, 0x2b, 0x84, 0x20, 0x38, 0x6b, 0xa3, 0xa9, + 0xc4, 0x6e, 0x7a, 0x8c, 0x20, 0x46, 0xd1, 0xa1, 0x5e, 0xa1, 0x99, 0xab, 0x03, 0xb9, 0x8b, 0x1f, + 0xb0, 0x63, 0x04, 0x01, 0xc0, 0xfb, 0x3c, 0xba, 0x27, 0xbf, 0x1b, 0x7c, 0x0f, 0x9a, 0xb6, 0x4b, + 0xdd, 0x4d, 0x6d, 0x9f, 0xf1, 0xa7, 0xa1, 0x7e, 0x6d, 0xa1, 0xe6, 0x56, 0x66, 0xf4, 0xe0, 0x47, + 0x95, 0xe7, 0x69, 0xc9, 0xff, 0x3f, 0x4b, 0xe8, 0x41, 0x88, 0x92, 0x64, 0x45, 0x8e, 0x9f, 0x34, + 0x6c, 0xb1, 0xc7, 0xdc, 0x78, 0x52, 0x53, 0x1e, 0x17, 0xad, 0xd0, 0x62, 0x1a, 0xd4, 0xac, 0x78, + 0x13, 0xb4, 0x99, 0x99, 0x20, 0x60, 0xd4, 0xe2, 0xc2, 0x8c, 0xa2, 0x17, 0xd4, 0x60, 0xa2, 0x66, + 0x8b, 0x9e, 0x66, 0xd4, 0xbc, 0xf8, 0xff, 0xce, 0x83, 0x16, 0xb9, 0x50, 0xf1, 0x4f, 0x54, 0xc8, + 0xab, 0x36, 0x69, 0xca, 0x4b, 0xe8, 0xbb, 0x81, 0xc2, 0x6c, 0x91, 0xe7, 0x8b, 0x43, 0x67, 0xca, + 0x95, 0xfd, 0x90, 0x2d, 0x23, 0xa1, 0x99, 0x46, 0x27, 0x1b, 0x43, 0x0d, 0x6a, 0xf3, 0x57, 0x56, + 0x97, 0x3f, 0x44, 0x33, 0x9a, 0x8d, 0x8e, 0x98, 0x00, 0x3c, 0xea, 0x44, 0x30, 0xf9, 0xd4, 0x0a, + 0xf2, 0x2f, 0xd5, 0x0f, 0xb8, 0xf3, 0x87, 0x96, 0x5c, 0x35, 0xce, 0x1e, 0xc8, 0x5e, 0xfa, 0x9c, + 0x9d, 0x5d, 0x40, 0x9d, 0xf7, 0x19, 0x34, 0x4b, 0x68, 0x37, 0x25, 0x85, 0xb8, 0x29, 0xa1, 0x05, + 0x26, 0xcf, 0xa0, 0x17, 0xa6, 0x0b, 0x75, 0x4c, 0x6c, 0x25, 0x67, 0x6f, 0x7b, 0xde, 0x62, 0x52, + 0x89, 0xb5, 0xaa, 0x95, 0xe7, 0xeb, 0x51, 0x2b, 0xff, 0x5f, 0x79, 0x50, 0x99, 0x1d, 0xf7, 0x7f, + 0xaa, 0x1a, 0x50, 0xa3, 0x29, 0x2f, 0xa2, 0xe7, 0x03, 0xae, 0x1c, 0x91, 0xef, 0x15, 0x19, 0x4c, + 0x24, 0xc7, 0x2e, 0xf7, 0xef, 0x51, 0xb9, 0xdf, 0x1a, 0x8a, 0x44, 0x53, 0x5f, 0x59, 0xee, 0x37, + 0x1b, 0xfb, 0xc2, 0x48, 0x94, 0xef, 0xa6, 0xe7, 0xd9, 0x77, 0x4d, 0x91, 0x68, 0x8a, 0xca, 0x39, + 0x40, 0x72, 0x39, 0xbf, 0x72, 0x8e, 0xfb, 0x6c, 0x07, 0x69, 0x5d, 0x9e, 0xb0, 0x92, 0xc6, 0x53, + 0x12, 0x56, 0xf8, 0xdc, 0x9d, 0x11, 0xd6, 0x7f, 0x63, 0x11, 0x56, 0x86, 0xfb, 0x3f, 0x55, 0x61, + 0xa5, 0x11, 0x63, 0x5c, 0x39, 0x22, 0x63, 0x91, 0xc1, 0x30, 0xfc, 0x76, 0x69, 0x7d, 0x01, 0xcd, + 0xf9, 0xae, 0x1a, 0x6a, 0x4e, 0xed, 0xa4, 0x42, 0x50, 0xb5, 0x42, 0x53, 0x1e, 0x47, 0xcb, 0x02, + 0xd6, 0x52, 0xb9, 0x4c, 0xdf, 0x7b, 0x5e, 0x1f, 0xb9, 0x91, 0xf9, 0xa0, 0x3d, 0x73, 0xe6, 0x3c, + 0x3c, 0xbf, 0xa6, 0xf1, 0x55, 0xf6, 0x7b, 0xd0, 0xdd, 0x0c, 0xf6, 0x0e, 0x0c, 0xc5, 0x3a, 0x34, + 0x93, 0xdf, 0xa0, 0xd3, 0x7d, 0x2d, 0x71, 0x19, 0x33, 0x4b, 0xe5, 0x32, 0x71, 0x40, 0xca, 0x53, + 0x89, 0x56, 0xb5, 0x92, 0x1c, 0x3e, 0x2f, 0x0b, 0x9a, 0x40, 0xcc, 0xb7, 0x25, 0x8f, 0x14, 0x47, + 0xba, 0x5d, 0x2e, 0x95, 0x0e, 0x4b, 0x70, 0xd2, 0xc8, 0x32, 0x38, 0x6c, 0x09, 0xef, 0x54, 0x5b, + 0x42, 0x4c, 0xb7, 0x56, 0xe4, 0xdf, 0x61, 0x92, 0x8b, 0x26, 0x7e, 0x87, 0x39, 0x23, 0x3d, 0xd2, + 0x47, 0x1c, 0xee, 0x68, 0x01, 0xc3, 0xc7, 0xbd, 0x47, 0x79, 0x31, 0x1c, 0xb9, 0xd2, 0x37, 0x87, + 0x03, 0xe7, 0xcc, 0x27, 0xcc, 0x30, 0x30, 0x9f, 0x48, 0xa8, 0x6c, 0xbd, 0xfa, 0xf5, 0xa0, 0x83, + 0x1f, 0x17, 0xbd, 0x78, 0xa9, 0x64, 0x46, 0xed, 0x67, 0x5a, 0xa4, 0xac, 0xea, 0x09, 0x4d, 0x59, + 0x89, 0x56, 0x04, 0x5c, 0xbf, 0xce, 0x6e, 0xf8, 0x44, 0xd4, 0xfd, 0x7f, 0x3c, 0x0d, 0x79, 0x5f, + 0x69, 0x55, 0x13, 0xbb, 0xeb, 0xd5, 0x44, 0x4b, 0xf5, 0x6e, 0x85, 0xec, 0x70, 0xea, 0x6a, 0x83, + 0xea, 0xcf, 0xc9, 0x96, 0xea, 0x69, 0x84, 0xe8, 0x39, 0xf9, 0x76, 0xe6, 0x5e, 0x4c, 0x2f, 0x7b, + 0xcc, 0x62, 0xb9, 0xd4, 0x1e, 0x69, 0xa4, 0xd1, 0x68, 0x49, 0x95, 0xcd, 0x68, 0x29, 0x5e, 0x13, + 0x99, 0xc5, 0x72, 0xa9, 0x3d, 0xd4, 0x49, 0x23, 0x5e, 0x45, 0x89, 0x16, 0x9c, 0x5c, 0x80, 0x68, + 0xac, 0xf7, 0x8d, 0x1b, 0x14, 0x7f, 0x34, 0x32, 0x71, 0xfc, 0x9a, 0x48, 0x3a, 0x7e, 0x1e, 0xcd, + 0x4a, 0xa9, 0x2d, 0xf1, 0xe6, 0x50, 0x4a, 0x35, 0xbe, 0x36, 0xdd, 0x6c, 0x29, 0x96, 0xcb, 0xb3, + 0x32, 0x03, 0xe7, 0x32, 0xef, 0xdf, 0x9a, 0x78, 0x6f, 0x7f, 0x5d, 0x6d, 0x10, 0xb1, 0x9a, 0xba, + 0x46, 0xfc, 0x2c, 0x42, 0xf4, 0x96, 0xd8, 0x68, 0x5e, 0x62, 0x5e, 0x5a, 0x0b, 0xc5, 0xc4, 0x09, + 0x0d, 0xfc, 0xeb, 0x45, 0xbf, 0x61, 0xa3, 0x71, 0x29, 0xdc, 0xcf, 0xc4, 0xd8, 0x81, 0x1e, 0xb9, + 0x2c, 0xe2, 0x85, 0xc2, 0x91, 0x1e, 0xf3, 0xf8, 0xe7, 0x75, 0xcc, 0x25, 0xbf, 0xc0, 0x18, 0xc8, + 0x8b, 0x21, 0x1c, 0x27, 0xc8, 0x57, 0xb6, 0xbf, 0x23, 0x3d, 0xfc, 0x76, 0x7a, 0xf8, 0x50, 0xe6, + 0x18, 0x8d, 0x56, 0xe0, 0x3f, 0xe2, 0x71, 0x1b, 0x42, 0x22, 0x73, 0xcf, 0xa0, 0xd2, 0x10, 0x2d, + 0xa2, 0x03, 0x48, 0x18, 0xc3, 0x0b, 0xe5, 0xbb, 0xa1, 0x7f, 0xf6, 0x3b, 0xc8, 0x6b, 0xf0, 0x4e, + 0x54, 0x1a, 0x57, 0x13, 0x2d, 0xdb, 0xc3, 0xa9, 0xd7, 0xc9, 0x08, 0xce, 0x92, 0x03, 0xf9, 0x16, + 0xd4, 0x1d, 0x6f, 0x38, 0xe8, 0xe2, 0x1d, 0xc8, 0x58, 0x24, 0x83, 0x1d, 0x32, 0x1b, 0xb5, 0x35, + 0xa9, 0xd7, 0xab, 0x5e, 0xd1, 0x94, 0xcd, 0x68, 0x63, 0xa0, 0x00, 0x1d, 0xec, 0xa2, 0x99, 0x46, + 0x2b, 0x15, 0xfa, 0xfa, 0x42, 0xe2, 0x18, 0x7f, 0x21, 0xf1, 0xef, 0xf9, 0xfb, 0x24, 0x54, 0x62, + 0xf4, 0x94, 0xc4, 0x6b, 0x50, 0x89, 0x51, 0xca, 0x26, 0x58, 0xdb, 0xab, 0x19, 0x02, 0x05, 0xff, + 0x92, 0x65, 0x68, 0x10, 0xc0, 0xbd, 0xf5, 0x08, 0x99, 0x85, 0x0e, 0x6b, 0xd3, 0x0a, 0x71, 0x6d, + 0x3a, 0x4b, 0x9e, 0x6f, 0x4b, 0x61, 0x42, 0x92, 0x97, 0x88, 0x6b, 0xd6, 0x3e, 0x09, 0x2d, 0x74, + 0x24, 0xf1, 0x4b, 0x9a, 0xf0, 0x6a, 0x3a, 0xbd, 0x01, 0x02, 0xf3, 0x1c, 0x09, 0x73, 0x98, 0xd0, + 0xe8, 0x24, 0x09, 0x9b, 0x6c, 0xcd, 0x83, 0x50, 0x4d, 0xac, 0xa5, 0x05, 0xc2, 0x1e, 0xff, 0xbe, + 0x4f, 0xe8, 0xb5, 0x96, 0x09, 0x7d, 0x81, 0x8d, 0xe5, 0x5b, 0x52, 0x89, 0xd6, 0x70, 0x6a, 0xb2, + 0x49, 0x9c, 0x05, 0x80, 0x35, 0xe9, 0x96, 0x67, 0x4f, 0xb4, 0xf7, 0x67, 0x8f, 0x50, 0xdf, 0x05, + 0xff, 0x07, 0x1e, 0x74, 0x37, 0x54, 0xd2, 0x99, 0xe0, 0xf7, 0x9e, 0x31, 0xeb, 0x2d, 0x8c, 0xb1, + 0xe7, 0x4f, 0x33, 0xe8, 0x80, 0x64, 0x3a, 0x93, 0xf0, 0x66, 0x99, 0xa6, 0x3c, 0x86, 0x96, 0x04, + 0xf2, 0xc8, 0x97, 0x31, 0xf0, 0x47, 0xf4, 0xf0, 0xf0, 0x6f, 0x44, 0xc4, 0x29, 0xb5, 0x7a, 0x03, + 0x0d, 0x6b, 0x06, 0x4b, 0x99, 0x35, 0x9a, 0xf2, 0x04, 0x5a, 0x15, 0x70, 0xa8, 0x92, 0x17, 0x9a, + 0x2f, 0x67, 0xc8, 0xab, 0x54, 0xcb, 0xcc, 0x79, 0x65, 0x1a, 0x9a, 0x47, 0xbc, 0xbd, 0x6a, 0xb6, + 0xc6, 0xe2, 0xb1, 0xe6, 0x58, 0xd3, 0x6e, 0x66, 0xc2, 0xb6, 0xd9, 0x8f, 0x36, 0x9e, 0x36, 0x4c, + 0xac, 0xb0, 0xac, 0x2d, 0xb5, 0x66, 0x82, 0x28, 0x29, 0x2a, 0x13, 0x84, 0x61, 0x22, 0x20, 0xd6, + 0x0e, 0x8c, 0xd0, 0x1e, 0x4d, 0x79, 0x9d, 0xc5, 0xda, 0x89, 0x85, 0x5b, 0x1a, 0x1b, 0x58, 0xbc, + 0x9d, 0xf2, 0xcc, 0x99, 0xde, 0xf4, 0xc8, 0x7b, 0x3c, 0xd1, 0x09, 0x4d, 0x71, 0x42, 0x23, 0xc1, + 0x5c, 0x4f, 0x8f, 0x1e, 0x63, 0x90, 0xd9, 0xfe, 0x8e, 0xcc, 0xa1, 0x77, 0x33, 0x5d, 0x7d, 0xcb, + 0x58, 0x86, 0x21, 0x6a, 0xb6, 0xfa, 0x3b, 0x32, 0x27, 0x68, 0x48, 0x6f, 0x88, 0xd0, 0x05, 0x2d, + 0xf4, 0xbe, 0x13, 0x00, 0xcf, 0xc2, 0xf4, 0xec, 0x44, 0xb3, 0x76, 0x44, 0x9a, 0x49, 0x40, 0x43, + 0x16, 0x8b, 0xbb, 0x70, 0x3a, 0x3c, 0xe2, 0x54, 0x2c, 0xb6, 0x91, 0xcb, 0x68, 0x14, 0xf1, 0x2b, + 0x3d, 0xb9, 0x23, 0xe3, 0x90, 0xce, 0x33, 0x73, 0x6a, 0x24, 0x73, 0xe5, 0x6c, 0x50, 0x04, 0xab, + 0xaa, 0xd6, 0x94, 0x17, 0xd0, 0x73, 0x01, 0x67, 0x9e, 0xcb, 0x4b, 0xc4, 0xc0, 0x42, 0xe9, 0xe1, + 0x51, 0xa3, 0x07, 0x92, 0xbe, 0x05, 0xd0, 0xa5, 0x63, 0xf6, 0x51, 0x09, 0x49, 0x45, 0x51, 0xbd, + 0x6b, 0x4b, 0x2c, 0x9e, 0xdc, 0x4a, 0x27, 0x54, 0x90, 0x19, 0x36, 0xfb, 0xa0, 0x86, 0xd6, 0x64, + 0x24, 0xaa, 0x26, 0x93, 0x7c, 0xec, 0x60, 0x19, 0x60, 0x16, 0xcb, 0xa5, 0x8c, 0x7b, 0x41, 0xa1, + 0x14, 0xff, 0xa1, 0x30, 0xaf, 0x7a, 0x4c, 0x77, 0x30, 0x73, 0x5e, 0x7d, 0x22, 0x37, 0x74, 0x1e, + 0xa6, 0x03, 0xfd, 0xd4, 0x80, 0x3e, 0xfe, 0xae, 0xde, 0x75, 0x98, 0xa1, 0x7b, 0x28, 0x73, 0xaa, + 0x0b, 0xe6, 0x08, 0x83, 0xf1, 0x64, 0xd6, 0x67, 0xc7, 0xf6, 0xac, 0x39, 0x3e, 0x25, 0xa1, 0xbb, + 0xd9, 0x1a, 0x60, 0x0b, 0x59, 0x2e, 0xd1, 0x25, 0x47, 0x4a, 0x53, 0xbe, 0x1f, 0xc8, 0xab, 0x92, + 0xd7, 0x41, 0x2f, 0x99, 0xf7, 0xcf, 0x67, 0x46, 0x7a, 0x2b, 0x7c, 0x0c, 0xcf, 0xcc, 0xc1, 0x63, + 0xb9, 0xf6, 0xce, 0x30, 0xd1, 0x15, 0x08, 0x83, 0x02, 0x8b, 0xa1, 0xcc, 0x67, 0x7b, 0xb3, 0x03, + 0x87, 0x32, 0x07, 0x8f, 0x19, 0x63, 0x41, 0x5c, 0xff, 0xa1, 0xe4, 0x37, 0xd5, 0xf3, 0x13, 0xf7, + 0x07, 0x4b, 0x59, 0xf3, 0xe0, 0x0c, 0x68, 0x1a, 0xfc, 0x83, 0x60, 0xde, 0x07, 0xf1, 0x7f, 0x91, + 0x50, 0x49, 0x32, 0x1c, 0xe3, 0x4f, 0x32, 0xfe, 0x9d, 0xa4, 0x29, 0x63, 0x52, 0x00, 0xca, 0xe4, + 0x4f, 0xa5, 0x86, 0x5d, 0xdb, 0x1b, 0x22, 0x6f, 0x6c, 0x8f, 0x34, 0xfa, 0x32, 0x1f, 0xb4, 0x67, + 0xaf, 0x19, 0x12, 0x96, 0x1e, 0x3f, 0x65, 0xa8, 0xe8, 0x99, 0x33, 0x2b, 0x4c, 0x57, 0x03, 0x43, + 0x8c, 0x0d, 0xc0, 0x8a, 0xcc, 0xa5, 0x0f, 0x33, 0xc7, 0xaf, 0x73, 0xd8, 0xcc, 0x89, 0xa1, 0xec, + 0x68, 0x1f, 0x3c, 0x1c, 0xf4, 0xd5, 0x6c, 0xaa, 0xad, 0xf6, 0x01, 0xef, 0x7c, 0x75, 0xb5, 0xbe, + 0xf4, 0xf0, 0x88, 0xcf, 0xec, 0x9e, 0x87, 0x92, 0xab, 0x30, 0x78, 0xdc, 0x3e, 0x66, 0xd4, 0xd2, + 0x75, 0x9e, 0x2f, 0x73, 0xfc, 0xba, 0x7e, 0xf0, 0x24, 0x74, 0x0a, 0x40, 0x05, 0xda, 0xff, 0xa6, + 0x7a, 0x41, 0x62, 0x5e, 0xb0, 0x94, 0x61, 0x14, 0xbc, 0x8b, 0xf6, 0x12, 0xfc, 0x83, 0x20, 0x50, + 0x55, 0xf5, 0x23, 0x4d, 0xf9, 0x3e, 0xda, 0x16, 0x28, 0x28, 0x52, 0xdc, 0xf7, 0x40, 0x18, 0x55, + 0x90, 0x46, 0xb0, 0xa2, 0x5f, 0x48, 0x82, 0x10, 0x7d, 0x21, 0xf1, 0xf1, 0xf6, 0xdf, 0xf4, 0xa0, + 0x45, 0x2e, 0x1d, 0xdf, 0x81, 0x1d, 0x14, 0xf3, 0x6b, 0x9f, 0xe6, 0x1c, 0x72, 0x89, 0xe1, 0x47, + 0xde, 0x1e, 0x8a, 0xaf, 0x78, 0x2d, 0x64, 0xdb, 0x66, 0xf3, 0xaa, 0x57, 0x35, 0x25, 0x88, 0xea, + 0x03, 0x85, 0x09, 0x75, 0x64, 0x21, 0xe9, 0x8b, 0xb1, 0xd0, 0xe1, 0x54, 0x71, 0xb6, 0x88, 0x12, + 0xf6, 0xa3, 0xd9, 0x4c, 0x5e, 0x85, 0xfb, 0x3b, 0x4b, 0x19, 0x5e, 0x8c, 0xcc, 0x35, 0x36, 0x0f, + 0x05, 0x68, 0x96, 0x18, 0xf5, 0x82, 0x6d, 0x98, 0x46, 0xae, 0x4c, 0x44, 0x03, 0xe0, 0x47, 0xb3, + 0xd9, 0x2f, 0xf2, 0x0d, 0x78, 0x93, 0x68, 0x29, 0xc3, 0x65, 0x66, 0x8a, 0x10, 0x1a, 0x12, 0x90, + 0x65, 0xfc, 0x98, 0x8f, 0x66, 0xa8, 0x8d, 0x11, 0xbe, 0x28, 0x0f, 0xd2, 0x5f, 0xd6, 0xa0, 0x7e, + 0x77, 0xe5, 0x05, 0xf5, 0xf3, 0xa7, 0x9d, 0x0c, 0x1a, 0xb9, 0xd1, 0xfc, 0xea, 0x06, 0xed, 0x19, + 0x3b, 0x3f, 0x68, 0x53, 0xb3, 0x58, 0x2e, 0x85, 0x41, 0xb1, 0x6c, 0x50, 0xac, 0xb6, 0x70, 0xda, + 0xef, 0xc6, 0x16, 0x4e, 0xff, 0xbd, 0xb4, 0x85, 0x25, 0xff, 0x6c, 0x0b, 0x05, 0x69, 0xcc, 0x53, + 0x64, 0xe2, 0x7b, 0x55, 0x94, 0x2d, 0xfc, 0xb7, 0x4e, 0xb6, 0x10, 0x3a, 0xbe, 0x03, 0xb6, 0xf0, + 0x67, 0xdc, 0x16, 0x4a, 0x4e, 0x9e, 0x4b, 0x0c, 0x3f, 0xf0, 0x3c, 0x22, 0x16, 0x51, 0xd6, 0x94, + 0x4a, 0x6a, 0x11, 0x97, 0x02, 0xf1, 0xd0, 0x67, 0xb6, 0xbf, 0x43, 0xef, 0x1c, 0xd0, 0xaf, 0xb4, + 0x53, 0x5e, 0xd8, 0x0d, 0x24, 0x65, 0x6b, 0x61, 0xea, 0xd9, 0xea, 0x87, 0xf2, 0xd5, 0xd6, 0xa3, + 0x9b, 0x99, 0x6c, 0x41, 0xd8, 0x8e, 0x2c, 0xf6, 0x99, 0xa7, 0x13, 0xaf, 0x26, 0x9a, 0xa9, 0xa9, + 0x14, 0x8b, 0xf0, 0x93, 0x68, 0x06, 0xd9, 0x24, 0xb2, 0xe3, 0x66, 0xdb, 0x3b, 0x81, 0x9a, 0x18, + 0x09, 0x63, 0x03, 0x2b, 0xf8, 0x20, 0x05, 0xf6, 0x6f, 0x47, 0x73, 0x2c, 0x15, 0x0e, 0x7b, 0x54, + 0xa7, 0x77, 0xe0, 0xf7, 0xa3, 0x92, 0x48, 0xb4, 0x51, 0x7d, 0x9d, 0x9a, 0x5c, 0xf8, 0x61, 0x40, + 0x36, 0xaa, 0xc9, 0x30, 0xb5, 0xb2, 0xe4, 0x6f, 0x7f, 0x4e, 0x22, 0x62, 0x52, 0x17, 0x8d, 0xaa, + 0x09, 0x46, 0x18, 0xf9, 0x12, 0x3f, 0xbc, 0x5e, 0x63, 0x5f, 0x9a, 0x97, 0xb9, 0x2d, 0xcd, 0xc5, + 0xa5, 0xf7, 0x53, 0xb6, 0xc5, 0x1d, 0x38, 0x0f, 0x71, 0x83, 0x36, 0x9b, 0xbe, 0x5a, 0x24, 0x36, + 0x4d, 0x38, 0x30, 0xa1, 0x2f, 0x75, 0x0b, 0xa3, 0x25, 0xaf, 0xa4, 0xe3, 0x47, 0x22, 0x43, 0xe4, + 0x6e, 0xf5, 0x66, 0x47, 0xaf, 0x11, 0x9f, 0x88, 0xc1, 0xcc, 0xf0, 0xa7, 0x99, 0x33, 0xef, 0x32, + 0x7d, 0x39, 0x31, 0x71, 0xa0, 0x87, 0xae, 0x64, 0xff, 0xb5, 0x07, 0x2d, 0x76, 0xeb, 0xf3, 0x0e, + 0xa8, 0xc4, 0x36, 0xcb, 0xf2, 0x60, 0x91, 0x9b, 0x4a, 0xc0, 0x16, 0xc0, 0x61, 0x7d, 0x00, 0xa4, + 0xd9, 0xc5, 0x5f, 0xd5, 0x94, 0x06, 0xf4, 0xd3, 0xc0, 0x24, 0xa4, 0xca, 0xcb, 0x8b, 0xe7, 0x9f, + 0xde, 0x3e, 0x66, 0x57, 0x84, 0xdd, 0x68, 0x8e, 0xa5, 0x67, 0x2e, 0x87, 0x92, 0x20, 0x87, 0x4c, + 0xe2, 0x3c, 0xa6, 0xc4, 0x19, 0xb2, 0x99, 0x50, 0x77, 0xb0, 0x24, 0x44, 0x41, 0xf8, 0x61, 0x94, + 0xa6, 0x12, 0xa1, 0x28, 0x0b, 0x4b, 0x00, 0x3f, 0xcc, 0xbb, 0xc1, 0x12, 0xe1, 0x6e, 0xd0, 0xff, + 0x57, 0x25, 0x68, 0x7e, 0xad, 0xda, 0xd0, 0xda, 0x44, 0xd5, 0x3b, 0x94, 0xdc, 0x65, 0xe6, 0x5e, + 0xb2, 0xcf, 0xdd, 0x3e, 0xd7, 0xb9, 0x9b, 0x1d, 0xd6, 0x89, 0x53, 0xf8, 0x8b, 0x0e, 0x53, 0xb8, + 0xcf, 0x75, 0x0a, 0xe7, 0x3d, 0x08, 0x33, 0xf9, 0x36, 0xdb, 0x4c, 0x5e, 0xa5, 0x29, 0x2b, 0x05, + 0xc1, 0x5f, 0xc2, 0xa7, 0x6b, 0xc8, 0xd2, 0x99, 0x1b, 0x3a, 0x0f, 0xfd, 0x65, 0xfb, 0x3b, 0x12, + 0xa9, 0xd7, 0x41, 0x21, 0x6c, 0x07, 0x89, 0xbf, 0xef, 0x33, 0xf8, 0x41, 0x09, 0x95, 0x86, 0xa9, + 0xad, 0x2a, 0x2b, 0x21, 0x42, 0xbd, 0xda, 0x16, 0x04, 0xd0, 0x71, 0xd4, 0xb8, 0xed, 0x83, 0xab, + 0xe5, 0x35, 0x9a, 0xf2, 0x44, 0x80, 0x77, 0x25, 0x2f, 0x15, 0x45, 0x94, 0xba, 0x0e, 0x9a, 0x73, + 0x00, 0x91, 0x4f, 0x62, 0xb7, 0x83, 0xbc, 0x89, 0xf7, 0x59, 0xd3, 0x6a, 0x4e, 0xf9, 0xd6, 0xb9, + 0x2a, 0xa9, 0x29, 0x71, 0x14, 0x0d, 0xb8, 0x48, 0x98, 0xbc, 0x24, 0x77, 0x79, 0x5f, 0x6e, 0xe8, + 0xa8, 0x1d, 0x29, 0xd1, 0x3b, 0x3a, 0x6f, 0x56, 0x16, 0xa4, 0x43, 0x98, 0xa2, 0xbf, 0x90, 0x38, + 0xc6, 0xfe, 0xbf, 0xf4, 0xa0, 0x05, 0xb6, 0x0f, 0xde, 0x01, 0xa3, 0xb4, 0xd3, 0x32, 0x4f, 0x3f, + 0x32, 0xc9, 0xf8, 0x91, 0x89, 0x9a, 0xb8, 0xc0, 0x83, 0x69, 0x72, 0xe7, 0x8d, 0x30, 0xa7, 0x52, + 0x33, 0xf5, 0x87, 0x9a, 0xf2, 0x23, 0xf4, 0x83, 0x80, 0x1b, 0xd5, 0x5f, 0xd9, 0x3e, 0xbd, 0x80, + 0xee, 0x73, 0xc0, 0x16, 0x97, 0x53, 0x57, 0x59, 0xc9, 0xdd, 0x55, 0x16, 0x9c, 0x5f, 0xfd, 0xff, + 0x38, 0x13, 0xcd, 0x25, 0x47, 0x5b, 0x9b, 0x62, 0x8d, 0xad, 0xcd, 0xea, 0xba, 0xe6, 0x50, 0x13, + 0x7e, 0x35, 0xff, 0x76, 0xe7, 0x59, 0x4d, 0x79, 0xda, 0xbc, 0xdd, 0x59, 0x5e, 0x5d, 0xb3, 0x45, + 0xbf, 0x79, 0x55, 0xef, 0xb9, 0xcc, 0x43, 0x95, 0xa6, 0x47, 0xfa, 0x78, 0x40, 0xa3, 0xdc, 0xa1, + 0x2b, 0x99, 0x63, 0x07, 0x78, 0x20, 0x3b, 0xf3, 0x12, 0x28, 0x64, 0x06, 0x6e, 0x86, 0x11, 0x5b, + 0xaf, 0x29, 0xb5, 0x66, 0xe0, 0xe6, 0x67, 0x78, 0x27, 0xf0, 0x0c, 0xa0, 0x5c, 0xbf, 0xf0, 0xd6, + 0xd6, 0x0d, 0x6b, 0xab, 0x7c, 0xab, 0x56, 0xc8, 0x2b, 0x57, 0xac, 0xa9, 0x58, 0xb5, 0x62, 0xd5, + 0xd3, 0x2b, 0x56, 0x1b, 0xff, 0xad, 0x5e, 0xf1, 0xc4, 0xf2, 0xd4, 0xae, 0xa7, 0x93, 0xc6, 0xdf, + 0x6b, 0x56, 0x3c, 0xb1, 0xcc, 0x0c, 0xd8, 0xbc, 0x07, 0x95, 0xb6, 0x10, 0x3a, 0xf8, 0xcb, 0x3b, + 0x70, 0x9f, 0x64, 0x85, 0x72, 0x7d, 0x76, 0xb4, 0x23, 0x3d, 0x7a, 0x1d, 0x2e, 0x5d, 0xca, 0x37, + 0xb4, 0x36, 0xa8, 0x4a, 0x7d, 0xdd, 0x16, 0x35, 0xd1, 0xa6, 0x26, 0x6e, 0x8f, 0x75, 0x1b, 0xbf, + 0x6b, 0x62, 0xd1, 0x54, 0x22, 0xd6, 0xdc, 0x4c, 0x0a, 0xd6, 0xa6, 0xc2, 0x8d, 0xb4, 0x7c, 0x4b, + 0x78, 0xa7, 0x6a, 0x74, 0x62, 0x14, 0xef, 0x6a, 0x6d, 0x50, 0x9b, 0xd5, 0x54, 0xf6, 0x52, 0xd7, + 0xb2, 0x20, 0xef, 0x1b, 0xaf, 0x46, 0xa5, 0x3b, 0x9a, 0x43, 0x4d, 0xe6, 0x16, 0x0f, 0x56, 0x10, + 0xbc, 0x50, 0x9e, 0x09, 0x6a, 0xa3, 0xf7, 0x1e, 0x0e, 0xf2, 0x42, 0x63, 0x01, 0x61, 0xfc, 0x5d, + 0x6b, 0x4c, 0x20, 0x25, 0xc2, 0x02, 0x82, 0x15, 0xca, 0xb3, 0xa1, 0x15, 0x75, 0xa9, 0xe5, 0xe5, + 0x78, 0x1d, 0x9a, 0xdd, 0xa8, 0xee, 0x08, 0xb5, 0x36, 0xc3, 0x9a, 0x89, 0x5e, 0xd9, 0x90, 0xcc, + 0x3b, 0x96, 0x0a, 0x79, 0x2e, 0x74, 0xc0, 0x33, 0x9c, 0x07, 0x2d, 0xd5, 0xb8, 0x8a, 0x27, 0xf2, + 0x83, 0xb7, 0x3b, 0xa4, 0x07, 0x96, 0xc8, 0x6f, 0x1e, 0x3d, 0x82, 0xeb, 0x25, 0xd1, 0x61, 0x87, + 0xce, 0x53, 0x23, 0xc4, 0x52, 0xf8, 0x3d, 0x65, 0xee, 0x5a, 0x4b, 0xcd, 0x2b, 0x19, 0x9e, 0xd8, + 0x72, 0x2e, 0x0d, 0x6a, 0xc8, 0xb2, 0x59, 0x9a, 0x9b, 0xda, 0xa7, 0xcc, 0x2c, 0x7d, 0x33, 0x85, + 0x86, 0x2c, 0x4b, 0x1f, 0x6d, 0xc8, 0x73, 0x57, 0x9a, 0x29, 0xfa, 0xaa, 0xd0, 0x4c, 0xd2, 0x07, + 0x71, 0x21, 0x47, 0xe6, 0x05, 0x97, 0x59, 0x9a, 0x97, 0xc3, 0xc0, 0xac, 0xc0, 0xcf, 0x21, 0x04, + 0xdd, 0x90, 0xc6, 0xb3, 0x04, 0xff, 0x73, 0xb3, 0x58, 0x9e, 0x0d, 0x1f, 0x65, 0xfe, 0xe7, 0x66, + 0x0d, 0x4e, 0xc1, 0x48, 0x09, 0xef, 0x62, 0xbe, 0xaf, 0x29, 0xaf, 0x06, 0x78, 0xa1, 0x5c, 0x47, + 0xa3, 0x8d, 0x13, 0x1e, 0xd1, 0xe0, 0x5f, 0x91, 0x68, 0xea, 0x09, 0xb9, 0xb2, 0x21, 0x16, 0x6b, + 0xae, 0x4c, 0xa6, 0x12, 0x91, 0x68, 0x53, 0x65, 0x63, 0x2b, 0x5c, 0xd3, 0x57, 0xb6, 0x84, 0xe2, + 0xb4, 0x2c, 0x99, 0xbd, 0xd4, 0xa5, 0x9f, 0x19, 0xc9, 0x9e, 0x6b, 0x87, 0x56, 0xcb, 0x82, 0xbc, + 0x53, 0x1c, 0x44, 0x73, 0x8c, 0xbf, 0xc9, 0x58, 0x91, 0xf7, 0x30, 0x73, 0x88, 0x13, 0x2d, 0x71, + 0x74, 0xb7, 0xd6, 0xc8, 0x65, 0x54, 0xbe, 0xc8, 0x8b, 0x3b, 0x63, 0xf6, 0x68, 0x1f, 0xa3, 0x1b, + 0x64, 0x2b, 0x20, 0xfe, 0x81, 0xb1, 0x38, 0x69, 0x52, 0x5f, 0x27, 0x6f, 0x6b, 0x1c, 0xd2, 0x90, + 0x91, 0x69, 0x22, 0x68, 0x40, 0x80, 0xdb, 0x38, 0x40, 0xcb, 0x0b, 0xa9, 0x24, 0x9e, 0xea, 0xca, + 0x1c, 0x3d, 0x98, 0x69, 0xbf, 0x98, 0x39, 0x7b, 0x6e, 0xe2, 0xe3, 0xee, 0xdc, 0xc5, 0x0e, 0xfd, + 0xe0, 0xc9, 0x20, 0xc0, 0xe0, 0x18, 0x2a, 0x49, 0x90, 0x87, 0xf5, 0x73, 0x69, 0xba, 0xff, 0x7c, + 0x4f, 0x85, 0xd6, 0x96, 0x06, 0x15, 0x1e, 0xd0, 0x57, 0x7f, 0x47, 0x53, 0x9e, 0x09, 0x00, 0xb8, + 0xbc, 0x32, 0x77, 0x88, 0x0a, 0x57, 0x7a, 0x78, 0xc4, 0x20, 0xa2, 0x7d, 0xcc, 0xb4, 0x28, 0x10, + 0x96, 0x19, 0xf6, 0x2d, 0xdd, 0xfb, 0xf4, 0xf7, 0xae, 0x19, 0x52, 0x0c, 0x0d, 0xab, 0x9e, 0xd7, + 0x94, 0x67, 0xd1, 0x33, 0x81, 0x7c, 0x23, 0x26, 0x3f, 0x06, 0x41, 0x06, 0xb3, 0x83, 0xe7, 0xb2, + 0xbd, 0xfb, 0x21, 0x84, 0x04, 0x31, 0x44, 0xd9, 0xfe, 0x0e, 0x6a, 0x03, 0xe0, 0x85, 0xcf, 0x9f, + 0x78, 0x60, 0x58, 0x99, 0x27, 0x37, 0x57, 0x61, 0xea, 0xc9, 0xcd, 0x15, 0xd5, 0x2b, 0x28, 0xaa, + 0xc7, 0xac, 0x23, 0xba, 0xe8, 0xcf, 0xd3, 0x45, 0x9a, 0x0c, 0xc2, 0xa2, 0x67, 0x32, 0xd7, 0xb3, + 0xe9, 0x93, 0x9d, 0x85, 0x73, 0xfd, 0xf2, 0x0a, 0x22, 0x57, 0x62, 0x7e, 0x93, 0x08, 0xc6, 0x92, + 0x7c, 0xc1, 0x98, 0x61, 0x08, 0x46, 0xfe, 0x50, 0xaf, 0x64, 0x43, 0x7d, 0xd7, 0x64, 0x43, 0xcd, + 0x46, 0x70, 0x15, 0x1b, 0xc1, 0xd2, 0x49, 0x47, 0x90, 0x8e, 0x81, 0xbf, 0x16, 0x21, 0xb3, 0x1f, + 0xfc, 0x20, 0x9a, 0xd9, 0x16, 0x6a, 0x8e, 0x34, 0x12, 0xb3, 0x00, 0x5c, 0x34, 0x0b, 0x0a, 0x38, + 0xc4, 0xaf, 0x42, 0xb3, 0x84, 0xbe, 0x8d, 0xd5, 0x4c, 0x4b, 0x04, 0x72, 0x32, 0x96, 0x04, 0x8d, + 0x3f, 0x49, 0x49, 0x08, 0x6e, 0x70, 0x8d, 0x92, 0xd0, 0xeb, 0xfe, 0xcc, 0x74, 0xf4, 0x20, 0x49, + 0xd7, 0xa5, 0xe6, 0x0d, 0x3f, 0x5b, 0x29, 0x7f, 0x73, 0xa7, 0xb2, 0xb7, 0x24, 0xdb, 0x5c, 0xb6, + 0xe3, 0xb7, 0x3c, 0x97, 0xf1, 0xc5, 0x38, 0x9f, 0xd2, 0xb6, 0x83, 0xfc, 0xd1, 0x40, 0xca, 0x8e, + 0x11, 0xaf, 0x99, 0xee, 0x54, 0x2f, 0x23, 0xd7, 0xe4, 0x0c, 0x5c, 0xc6, 0xa2, 0x96, 0x81, 0x19, + 0xfa, 0x4d, 0x75, 0x89, 0x26, 0x79, 0x4a, 0xa5, 0x20, 0x87, 0xc2, 0x2f, 0x0a, 0xbb, 0x08, 0x21, + 0x14, 0x87, 0xb9, 0x8b, 0x98, 0x67, 0xed, 0x86, 0x4d, 0x24, 0xe6, 0x3e, 0xba, 0x51, 0x53, 0x42, + 0x68, 0x7b, 0xa0, 0xa0, 0x18, 0xc8, 0xf3, 0x68, 0x2a, 0xb7, 0x91, 0x3e, 0xb1, 0xbb, 0x2f, 0x24, + 0x36, 0xa0, 0x5f, 0x48, 0x8c, 0xef, 0x5f, 0x48, 0x9c, 0x7a, 0xf1, 0x9c, 0x49, 0x97, 0xd0, 0x22, + 0x97, 0x2f, 0xfc, 0xee, 0xd7, 0xaf, 0x55, 0xc6, 0xbc, 0x83, 0xb6, 0x04, 0x0a, 0x63, 0x24, 0x3f, + 0xec, 0x48, 0xb4, 0xb8, 0x97, 0xb6, 0xaf, 0x27, 0xff, 0x8f, 0xe9, 0xcc, 0x3b, 0xfb, 0x5b, 0xa7, + 0x50, 0x77, 0x74, 0x6d, 0xf8, 0x7b, 0xa6, 0x48, 0xe6, 0xc2, 0xca, 0xae, 0x48, 0x85, 0x86, 0x5f, + 0x9e, 0xc7, 0xd2, 0x27, 0x7f, 0x59, 0x45, 0xfa, 0x3b, 0x89, 0x39, 0xce, 0xff, 0x3e, 0x28, 0x52, + 0x50, 0x53, 0x5e, 0x46, 0x9b, 0x02, 0x85, 0x31, 0x92, 0x17, 0x3a, 0x12, 0xed, 0xe6, 0xc8, 0xf7, + 0x17, 0xd3, 0xd1, 0x83, 0xf0, 0x48, 0xe6, 0x9f, 0x55, 0xe8, 0xeb, 0x54, 0xa1, 0x97, 0xd1, 0x6c, + 0xb6, 0x16, 0xe3, 0x6a, 0x44, 0x13, 0xa1, 0x5a, 0x2a, 0xe4, 0x32, 0x8b, 0xc2, 0x88, 0x6f, 0xc3, + 0x2c, 0x70, 0x53, 0x9e, 0x7b, 0xce, 0x4e, 0x9c, 0xfc, 0xd0, 0x59, 0x65, 0x0a, 0x0d, 0xb7, 0x31, + 0xf7, 0x18, 0x2d, 0xbf, 0x9a, 0xca, 0xb8, 0x7c, 0xe1, 0x0e, 0xaa, 0x4c, 0x41, 0x8c, 0xe4, 0x85, + 0x8e, 0x44, 0xbb, 0xa9, 0xcc, 0x9f, 0x4d, 0x17, 0x32, 0x22, 0xfc, 0xb3, 0xc2, 0x7c, 0x7b, 0x15, + 0xa6, 0x41, 0x53, 0xb6, 0xa3, 0x9f, 0x04, 0x0a, 0x0c, 0xb6, 0x3c, 0x8f, 0xbb, 0x56, 0x7d, 0x49, + 0x75, 0x19, 0xf2, 0xa0, 0x85, 0x8e, 0xfd, 0xdf, 0x81, 0x83, 0xc6, 0xa0, 0xe5, 0xf6, 0xe3, 0x21, + 0xc7, 0x30, 0xe7, 0x26, 0x8a, 0xd6, 0x28, 0x46, 0x82, 0x47, 0x9b, 0x63, 0x7c, 0xf3, 0x02, 0x34, + 0x0a, 0xfe, 0x69, 0xc5, 0xa8, 0xdf, 0x3e, 0x0f, 0xf1, 0x15, 0x58, 0xfb, 0x7a, 0x4a, 0x4d, 0x44, + 0x43, 0xcd, 0x9b, 0x63, 0x8d, 0xea, 0x16, 0xf2, 0x6c, 0x9b, 0x29, 0xe0, 0x4f, 0xd0, 0xac, 0x68, + 0xac, 0x51, 0xb5, 0xbe, 0x4f, 0xff, 0x4a, 0x4a, 0x28, 0xf6, 0x87, 0x57, 0xdb, 0xee, 0xd0, 0xca, + 0x1c, 0x1d, 0x8f, 0xd3, 0x23, 0x23, 0x82, 0x2c, 0x6d, 0xd6, 0x94, 0x0d, 0xa8, 0x2e, 0x50, 0x10, + 0x73, 0xc6, 0x88, 0xec, 0x27, 0x9f, 0xa4, 0x87, 0xbb, 0x32, 0xc7, 0x6e, 0xe6, 0x3a, 0xfa, 0x33, + 0xa7, 0x3e, 0x61, 0x32, 0x25, 0x62, 0xe1, 0xff, 0xf3, 0x69, 0xe4, 0x8e, 0xd0, 0xa9, 0xaf, 0x6f, + 0xc6, 0x1b, 0x91, 0xd5, 0x82, 0xe7, 0x24, 0x8b, 0x47, 0x48, 0x64, 0x69, 0x5e, 0x43, 0x28, 0xa9, + 0xae, 0x59, 0x9d, 0x1d, 0x3b, 0x96, 0x3d, 0x6b, 0x0c, 0x0c, 0x30, 0x01, 0xc4, 0xc9, 0xd8, 0x67, + 0xce, 0x7d, 0x4d, 0x6d, 0xd8, 0x2e, 0xbe, 0x26, 0x2d, 0x71, 0x8e, 0xca, 0xff, 0x3d, 0xb5, 0x41, + 0x78, 0xd2, 0xb7, 0x4d, 0x86, 0x6c, 0x26, 0xf9, 0xad, 0xe5, 0x87, 0xa9, 0x6b, 0x33, 0x79, 0x93, + 0x43, 0x43, 0xd7, 0xb0, 0x64, 0xa0, 0x70, 0x21, 0x14, 0xbc, 0xfb, 0x35, 0x4b, 0x57, 0x7c, 0x52, + 0x29, 0xc8, 0x7f, 0x97, 0xc1, 0x74, 0x93, 0xea, 0x4e, 0x09, 0xcd, 0xdc, 0x14, 0x8a, 0x83, 0x23, + 0x2d, 0x7e, 0x8e, 0xdf, 0x4c, 0x4b, 0xce, 0x0f, 0x00, 0x39, 0x28, 0x78, 0x3b, 0x53, 0x0f, 0x6a, + 0xda, 0xc8, 0xfb, 0x0c, 0x9a, 0x25, 0x14, 0x4f, 0xe9, 0x7d, 0xdf, 0x9f, 0x4d, 0x03, 0x4f, 0x9c, + 0x50, 0x2a, 0xbc, 0x13, 0x22, 0x0c, 0x6f, 0x51, 0x53, 0xa9, 0x48, 0x94, 0x4f, 0x6f, 0x21, 0x34, + 0x93, 0x78, 0x4a, 0x08, 0xe1, 0x47, 0x48, 0x16, 0x14, 0xb3, 0x54, 0x7e, 0x02, 0xde, 0x3a, 0xc0, + 0xe1, 0x17, 0x3d, 0x59, 0x6c, 0x88, 0xbc, 0x51, 0xd9, 0x10, 0x79, 0x63, 0x7b, 0x52, 0x4d, 0x2d, + 0xab, 0xf0, 0x65, 0xdf, 0x1b, 0xd4, 0xbb, 0x0e, 0xa7, 0x47, 0x3b, 0x41, 0xfd, 0x1a, 0x22, 0x6f, + 0x04, 0xcd, 0xf6, 0xf8, 0xa7, 0xe8, 0x2e, 0xf2, 0xa3, 0x8e, 0xbd, 0x60, 0x58, 0xa7, 0x29, 0x35, + 0x01, 0x56, 0x26, 0x3f, 0x2d, 0x76, 0x5f, 0x57, 0x5b, 0xce, 0x6e, 0x0e, 0x2b, 0xe1, 0x0f, 0xf2, + 0xce, 0xc0, 0xf9, 0x1b, 0xac, 0x0b, 0xfc, 0x0b, 0x09, 0x21, 0xb0, 0xc6, 0x64, 0xae, 0x81, 0x97, + 0xfe, 0x7b, 0x25, 0x4d, 0xf9, 0x17, 0x01, 0xa1, 0x5c, 0x8e, 0x9b, 0x7f, 0xc3, 0x60, 0x4e, 0x74, + 0x1e, 0xce, 0x8e, 0x0f, 0x1a, 0x52, 0x42, 0x7c, 0x7a, 0xf4, 0xf7, 0x8f, 0xf3, 0x28, 0x00, 0xe9, + 0xe1, 0xc3, 0xe9, 0xb1, 0xb3, 0x70, 0xf8, 0x47, 0xaf, 0x49, 0xba, 0xda, 0x33, 0xa7, 0xba, 0x00, + 0xac, 0x3c, 0x0f, 0x1b, 0x5f, 0x24, 0xbe, 0x9d, 0xbd, 0x92, 0xdf, 0xbe, 0x33, 0x96, 0x4c, 0x6d, + 0x6f, 0x8e, 0x24, 0x53, 0xcb, 0x82, 0xc2, 0xd7, 0xd9, 0xab, 0x98, 0x82, 0xc3, 0xc1, 0x82, 0x0e, + 0x72, 0xc4, 0xf4, 0xfd, 0x9d, 0xfa, 0xe0, 0x4d, 0x7a, 0xbb, 0x3e, 0x46, 0xfd, 0x4d, 0x1c, 0x5a, + 0x7f, 0x49, 0x23, 0xb1, 0x5a, 0x0c, 0x4d, 0x61, 0x68, 0x3a, 0x84, 0x5e, 0xa1, 0x65, 0xf2, 0x6c, + 0x9a, 0x8b, 0xe5, 0x60, 0xaf, 0xfe, 0xf6, 0x19, 0x1e, 0x8d, 0x02, 0x3f, 0x85, 0x4a, 0xd5, 0x44, + 0x22, 0x96, 0xd8, 0x94, 0x6c, 0x12, 0xa3, 0xc3, 0xf3, 0x42, 0x79, 0xb6, 0xc5, 0xac, 0xf0, 0x72, + 0xbc, 0x06, 0xcd, 0x4c, 0x00, 0xa1, 0x75, 0x8d, 0xe2, 0x2d, 0x85, 0x59, 0x2a, 0x97, 0x02, 0xad, + 0x75, 0xb5, 0x41, 0xb3, 0x90, 0xfb, 0xab, 0x97, 0x4c, 0xd5, 0x5f, 0xdd, 0xe2, 0xa3, 0x5f, 0x83, + 0x66, 0x6e, 0x21, 0x02, 0x13, 0xdd, 0x11, 0xc3, 0x0f, 0xda, 0xe4, 0x5e, 0x14, 0xd9, 0xb2, 0x3c, + 0x91, 0xe5, 0xa2, 0xe6, 0xbf, 0x30, 0x1d, 0x3d, 0x60, 0x8c, 0x41, 0xe4, 0x0d, 0xe6, 0xeb, 0xfb, + 0xdd, 0x98, 0xe9, 0xa8, 0xfb, 0xad, 0xd0, 0xa6, 0x08, 0x2a, 0x0d, 0x35, 0x37, 0x13, 0x56, 0x51, + 0xfb, 0xbf, 0x49, 0x53, 0x5e, 0x0a, 0xf0, 0x42, 0xf9, 0x79, 0x10, 0x0b, 0x51, 0x2d, 0x2c, 0x44, + 0x31, 0xef, 0x6d, 0xc2, 0xfd, 0x8e, 0xdb, 0x63, 0xdd, 0xdc, 0x77, 0x8c, 0xbc, 0x5d, 0x0b, 0xf2, + 0x9e, 0xf0, 0x31, 0x89, 0x32, 0x4c, 0x38, 0x9b, 0xb0, 0x3d, 0xdd, 0xe4, 0x83, 0x56, 0xfd, 0x13, + 0x4d, 0xf9, 0x61, 0xc0, 0x6c, 0x20, 0x6f, 0xca, 0x5d, 0xd8, 0x4b, 0xb1, 0x10, 0x3e, 0x68, 0x4c, + 0x32, 0x02, 0x3a, 0x99, 0xa3, 0x97, 0xb3, 0xa3, 0x1d, 0xe5, 0x76, 0x8a, 0xcd, 0x90, 0x66, 0xe0, + 0x6b, 0x1e, 0x34, 0x7b, 0xfe, 0x7a, 0x94, 0xd5, 0xeb, 0x24, 0x28, 0xdf, 0x6e, 0x4d, 0x5d, 0x6f, + 0xd1, 0xd4, 0xa9, 0x3d, 0xa0, 0xb0, 0x28, 0xeb, 0x3a, 0x44, 0x92, 0x09, 0xb2, 0x90, 0x24, 0xb1, + 0x06, 0x78, 0x11, 0xc7, 0x2e, 0x46, 0xd8, 0x6f, 0xbc, 0x18, 0x21, 0x9e, 0x3a, 0x0d, 0x34, 0x62, + 0x7a, 0x50, 0x28, 0xf1, 0xff, 0xed, 0x0c, 0xb4, 0x60, 0xbd, 0x9a, 0x62, 0x63, 0x60, 0xf4, 0x99, + 0xfc, 0x56, 0x69, 0xeb, 0x76, 0x78, 0xa4, 0xcd, 0x27, 0x3e, 0x87, 0xc3, 0x3d, 0xc6, 0x48, 0x7a, + 0xb8, 0xc7, 0xc0, 0x65, 0x4c, 0x5f, 0x21, 0xc0, 0x2b, 0x66, 0xa2, 0x26, 0xe6, 0xe1, 0x1e, 0x83, + 0x32, 0x26, 0xd7, 0x39, 0x49, 0x35, 0x94, 0x08, 0xef, 0x34, 0x76, 0x83, 0x6a, 0x94, 0x65, 0x35, + 0xfc, 0x23, 0x4d, 0xd9, 0x1d, 0xb0, 0xd6, 0xc8, 0x3b, 0x33, 0x03, 0xe7, 0xb2, 0x57, 0xdf, 0xce, + 0xf4, 0x9e, 0xca, 0x5e, 0xfb, 0x05, 0xa8, 0xc3, 0xed, 0xb1, 0x83, 0x80, 0xb5, 0xde, 0xdb, 0x9d, + 0x39, 0x7e, 0x5d, 0x1f, 0xba, 0x09, 0xef, 0x20, 0xea, 0xea, 0x2b, 0xe1, 0x0f, 0xbd, 0xf7, 0x70, + 0xa5, 0x18, 0x5c, 0xbf, 0xd2, 0x7c, 0xd8, 0x42, 0x76, 0x83, 0xb9, 0x5b, 0xef, 0xe5, 0xce, 0x75, + 0x8b, 0x1d, 0xdf, 0x1e, 0xeb, 0x0a, 0x5a, 0x3f, 0x8c, 0xbb, 0x25, 0x92, 0xe4, 0xa1, 0x4d, 0xa5, + 0x92, 0xb7, 0xd0, 0x26, 0x79, 0x75, 0xd1, 0xd4, 0x13, 0x32, 0x88, 0xde, 0x0f, 0x34, 0x65, 0x5b, + 0x00, 0xc0, 0xe5, 0x4d, 0x10, 0x34, 0x30, 0xf3, 0xfe, 0xb9, 0xf4, 0xe8, 0xf5, 0xdb, 0x63, 0xfd, + 0xa4, 0xf4, 0xf6, 0x58, 0xff, 0xca, 0xf4, 0xf0, 0x88, 0xd2, 0xa4, 0x46, 0x53, 0xfa, 0xd8, 0x5b, + 0xfa, 0xf0, 0xf0, 0xed, 0xb1, 0xee, 0x55, 0xac, 0x04, 0x92, 0x1c, 0xf0, 0x35, 0x02, 0x49, 0x68, + 0x7c, 0x98, 0xc6, 0x1e, 0x84, 0x5e, 0xf1, 0x7a, 0x54, 0x42, 0xe2, 0x6a, 0x92, 0x7b, 0xf1, 0xe9, + 0xd5, 0xab, 0x34, 0x65, 0x45, 0x00, 0x4a, 0xe4, 0x47, 0x61, 0x57, 0x95, 0xfb, 0xec, 0x86, 0x7e, + 0xf1, 0x50, 0x7a, 0xdc, 0x30, 0x1d, 0xbc, 0x2b, 0x6e, 0x27, 0x57, 0x06, 0x01, 0x1a, 0xff, 0x04, + 0x95, 0xc6, 0x43, 0x4d, 0xea, 0x96, 0xc8, 0x1b, 0x2a, 0x8d, 0xd0, 0x4d, 0x92, 0x19, 0xf1, 0x42, + 0x59, 0xce, 0x1c, 0xea, 0x32, 0xec, 0x1f, 0xe9, 0x14, 0xa2, 0xd9, 0xdd, 0x1e, 0xeb, 0xce, 0x9c, + 0x6a, 0xd7, 0x3f, 0xbc, 0xf8, 0xe4, 0xca, 0x95, 0xf6, 0xae, 0xe5, 0x95, 0x41, 0xde, 0xba, 0xca, + 0xd8, 0x46, 0xa1, 0x35, 0x01, 0x37, 0x0d, 0xe1, 0xc1, 0xf5, 0xc1, 0xba, 0xf6, 0x77, 0xd0, 0x11, + 0x83, 0xa8, 0xbe, 0xff, 0xd2, 0x43, 0x1e, 0xe9, 0xe6, 0x35, 0xfc, 0x76, 0xdb, 0xb7, 0x57, 0x2c, + 0xf6, 0xcd, 0x96, 0xf4, 0x28, 0x9f, 0x1d, 0x2e, 0xc1, 0x0c, 0x2d, 0x96, 0xae, 0x5b, 0x42, 0xf7, + 0x3b, 0xb5, 0x33, 0x56, 0xf5, 0x20, 0x44, 0x12, 0xb1, 0x6a, 0x54, 0x22, 0xbc, 0x82, 0x44, 0x80, + 0xb9, 0xe3, 0xbf, 0x89, 0x87, 0x5f, 0x2c, 0x15, 0x6a, 0x86, 0xb0, 0xb0, 0x41, 0xf8, 0x81, 0x2b, + 0x2c, 0x51, 0x8c, 0x6d, 0xd6, 0xc1, 0x98, 0x96, 0x8c, 0xef, 0x51, 0x74, 0xfe, 0x5c, 0x42, 0xa5, + 0xac, 0x08, 0xcf, 0x47, 0x33, 0x8c, 0xd5, 0x2c, 0xb5, 0xbb, 0xd3, 0x83, 0xf4, 0x17, 0x49, 0x94, + 0x14, 0xa7, 0x4b, 0x23, 0x4f, 0x24, 0x8e, 0x31, 0x9a, 0x1e, 0x89, 0xb7, 0xad, 0xa1, 0x57, 0xcf, + 0xe4, 0x6f, 0x03, 0x51, 0x03, 0x5a, 0x78, 0x74, 0xc0, 0x7f, 0x1b, 0x88, 0x9a, 0xda, 0x3a, 0x87, + 0x69, 0xcd, 0x7c, 0x9e, 0xf4, 0x84, 0x3e, 0x36, 0xa0, 0x39, 0x4d, 0x9e, 0x45, 0x33, 0xc9, 0x4e, + 0x5f, 0x49, 0xa8, 0x21, 0x7a, 0x95, 0xbc, 0xc8, 0x89, 0x8a, 0x1a, 0x06, 0x14, 0x34, 0xe1, 0xfd, + 0x4f, 0xa0, 0x39, 0x96, 0x3a, 0x21, 0xc9, 0xd3, 0x1c, 0xb7, 0x24, 0x4f, 0xfe, 0x91, 0xe9, 0x44, + 0xb4, 0xc9, 0xca, 0x83, 0xb4, 0xde, 0xa9, 0x86, 0x77, 0x7d, 0xab, 0xa6, 0x8d, 0x57, 0x79, 0x88, + 0x53, 0xd8, 0x2d, 0x3d, 0xa7, 0x29, 0x55, 0x3c, 0xc4, 0xe9, 0xca, 0xba, 0xfa, 0xb6, 0xd5, 0x30, + 0x21, 0x54, 0xf8, 0xa8, 0xf5, 0x1e, 0xba, 0xc9, 0xed, 0xb2, 0x68, 0x91, 0x21, 0xaf, 0x32, 0x8b, + 0x79, 0x8a, 0x7f, 0x84, 0x4a, 0x8d, 0xc1, 0x17, 0x8e, 0xfc, 0x48, 0x8c, 0x59, 0x5e, 0x48, 0xba, + 0x5e, 0x33, 0xa5, 0xae, 0x79, 0x5b, 0xdc, 0x84, 0xee, 0xda, 0xa5, 0xee, 0x26, 0x7d, 0x97, 0x90, + 0xbe, 0xc9, 0xba, 0x94, 0x95, 0xc9, 0x2f, 0xe8, 0x9d, 0x57, 0x27, 0x8e, 0x0c, 0xea, 0x97, 0x8e, + 0xb3, 0xfe, 0x73, 0x17, 0x3f, 0xc8, 0x9c, 0xee, 0xd5, 0x0f, 0x8c, 0x98, 0xa6, 0xab, 0xf7, 0x70, + 0x25, 0xc8, 0x70, 0xf6, 0x52, 0x17, 0x87, 0x67, 0xe7, 0x1f, 0xb4, 0xa7, 0xaa, 0xef, 0x68, 0xca, + 0x33, 0xe8, 0xa9, 0x80, 0xab, 0x08, 0xc8, 0x0b, 0x69, 0x2a, 0x13, 0x47, 0xbb, 0x78, 0xd3, 0x43, + 0xb6, 0x08, 0xf9, 0x2d, 0xbf, 0xdd, 0x86, 0x71, 0x2d, 0x37, 0x8c, 0x05, 0x8d, 0xcc, 0x24, 0xc6, + 0x50, 0xfe, 0xfb, 0x9c, 0x84, 0xee, 0xa6, 0x39, 0x3c, 0x37, 0x41, 0x5b, 0xfc, 0x2b, 0x09, 0xcd, + 0x61, 0x97, 0xcd, 0xa4, 0x02, 0xdb, 0x53, 0x36, 0x8a, 0xd5, 0x41, 0xf5, 0xe7, 0xde, 0x87, 0x27, + 0x81, 0x48, 0xc6, 0xfd, 0x6d, 0x9a, 0xb2, 0x19, 0xcf, 0x81, 0x6b, 0x6a, 0x5a, 0xee, 0x7d, 0xce, + 0xf2, 0xd3, 0xd8, 0xb9, 0x40, 0x6c, 0x65, 0xa2, 0xc1, 0x10, 0x20, 0x3f, 0xb7, 0xf7, 0xc8, 0xc4, + 0x5b, 0x17, 0xe8, 0x1b, 0x54, 0xad, 0x3b, 0x7b, 0xe8, 0x93, 0xec, 0x2f, 0x0f, 0xc1, 0xcf, 0xb7, + 0xfe, 0x97, 0xf4, 0xbb, 0x9e, 0x87, 0xfc, 0xde, 0x4a, 0xeb, 0xb7, 0x2b, 0xdb, 0x56, 0xb1, 0x92, + 0x2a, 0x29, 0x80, 0xdb, 0x3d, 0x68, 0x7e, 0x50, 0x4d, 0x25, 0x76, 0x5b, 0x50, 0xda, 0x1a, 0x4a, + 0xee, 0xc2, 0xb6, 0x73, 0x21, 0x3b, 0x9c, 0x41, 0xdc, 0x63, 0xc5, 0x80, 0x25, 0xe3, 0xfe, 0x63, + 0x92, 0xa6, 0xfc, 0x18, 0x3f, 0x30, 0x71, 0xe0, 0x70, 0x6e, 0xe8, 0xa8, 0x85, 0x32, 0x70, 0x19, + 0xf5, 0xbe, 0x30, 0xa1, 0x1d, 0x24, 0x51, 0xfa, 0x8d, 0x2a, 0x4a, 0xd2, 0x87, 0x57, 0x72, 0xd7, + 0xce, 0xc3, 0x1b, 0x5d, 0x83, 0xfe, 0x03, 0x87, 0x33, 0xc7, 0x2e, 0xa7, 0x87, 0x0f, 0xe9, 0x3d, + 0x7d, 0x22, 0x18, 0x74, 0x40, 0x08, 0x5e, 0xe5, 0xaf, 0x70, 0x27, 0xb8, 0x72, 0x0f, 0x7f, 0xad, + 0xf0, 0x66, 0x65, 0xc2, 0x40, 0xd3, 0x60, 0xc1, 0x9f, 0x49, 0xe8, 0x7e, 0xa2, 0x15, 0xc4, 0x2a, + 0xd3, 0x8b, 0x86, 0x1d, 0x91, 0x26, 0x6c, 0x33, 0xeb, 0x66, 0x9d, 0x41, 0xf8, 0xe2, 0x42, 0xd5, + 0xc9, 0xb8, 0x3f, 0xa9, 0x29, 0xd5, 0xf8, 0x81, 0x5d, 0xbc, 0x10, 0x32, 0x8b, 0x64, 0xda, 0x2f, + 0x66, 0x3e, 0x68, 0xcf, 0x7c, 0x76, 0xc8, 0xfb, 0xa8, 0x59, 0x95, 0xbb, 0x75, 0x3a, 0xf3, 0xce, + 0x79, 0x4a, 0xb3, 0x15, 0x8c, 0x50, 0x55, 0xee, 0x7d, 0xc4, 0x91, 0xaa, 0x58, 0x6b, 0x63, 0xa5, + 0xd9, 0x8b, 0x41, 0xcc, 0x5b, 0x1e, 0xb4, 0xd0, 0x89, 0x98, 0x9a, 0x58, 0x34, 0xaa, 0x86, 0x53, + 0x78, 0x89, 0x3b, 0xd2, 0x14, 0xc4, 0x20, 0xed, 0xd1, 0x22, 0xa0, 0x92, 0x71, 0xff, 0x51, 0x49, + 0x53, 0x5e, 0xc2, 0x3e, 0x81, 0xc4, 0xfd, 0x9d, 0x95, 0xfa, 0x87, 0xc7, 0xb2, 0xe3, 0x7d, 0xb9, + 0xc1, 0x5b, 0x13, 0xc7, 0x07, 0x21, 0xe4, 0xab, 0xf7, 0x31, 0x81, 0x52, 0x52, 0x4e, 0x29, 0xe5, + 0xd0, 0x00, 0x47, 0x48, 0xad, 0xc6, 0x2f, 0xba, 0x91, 0x9a, 0x34, 0xc6, 0x8f, 0x9c, 0xb1, 0xbf, + 0xc9, 0x40, 0x92, 0x96, 0x21, 0x0d, 0x53, 0x22, 0xff, 0xa3, 0x84, 0xe6, 0xd4, 0xb5, 0xc4, 0x63, + 0x89, 0x94, 0xab, 0x8e, 0x5a, 0xaa, 0x1d, 0x75, 0x34, 0x0f, 0x22, 0x19, 0xf7, 0xbf, 0x2b, 0x69, + 0x4a, 0x23, 0x7e, 0x40, 0x1f, 0x1a, 0xd3, 0x3b, 0xe9, 0xcb, 0x3c, 0xab, 0x04, 0xaf, 0x17, 0xab, + 0x80, 0xc6, 0x72, 0x3a, 0xab, 0x7c, 0xd8, 0x9f, 0x1e, 0xe9, 0xa3, 0x64, 0x13, 0x20, 0xfd, 0xed, + 0x33, 0xb9, 0x7d, 0xe3, 0x55, 0x3e, 0xf6, 0x92, 0x46, 0x18, 0xc7, 0x65, 0x84, 0x11, 0x8f, 0xf9, + 0x1f, 0x2e, 0x20, 0xc9, 0x11, 0x82, 0x9d, 0x31, 0xe2, 0xfb, 0x3d, 0x68, 0x0e, 0xbb, 0xb4, 0x77, + 0x21, 0xd6, 0x52, 0xed, 0x48, 0x6c, 0x1e, 0x44, 0x32, 0xee, 0x1f, 0x92, 0x34, 0x65, 0x0f, 0x9e, + 0x03, 0xf7, 0xfd, 0xcc, 0x22, 0xfd, 0xcc, 0xf2, 0x93, 0x47, 0x12, 0xce, 0x0d, 0xd1, 0x88, 0x3e, + 0xe9, 0xd1, 0x4e, 0xf0, 0x35, 0xa4, 0x6e, 0x02, 0x0c, 0x80, 0xac, 0xfa, 0xfb, 0x73, 0x17, 0x2f, + 0xe8, 0x3d, 0x7d, 0xe9, 0xd1, 0xd1, 0xf4, 0xf8, 0x51, 0x6a, 0xca, 0x88, 0x4b, 0x62, 0xb6, 0xbf, + 0x23, 0x77, 0xe0, 0x63, 0xfd, 0xed, 0x01, 0xbd, 0xfb, 0x98, 0xfe, 0xf6, 0x40, 0x7a, 0xfc, 0xd4, + 0xaf, 0xdb, 0xdf, 0x22, 0x3c, 0x78, 0xdc, 0xfb, 0x58, 0x71, 0xda, 0x6c, 0x30, 0xa2, 0xdb, 0x83, + 0xee, 0x55, 0x1a, 0x49, 0x9e, 0xf3, 0xe4, 0xd6, 0x18, 0x63, 0x86, 0xed, 0xa6, 0x89, 0x81, 0xd0, + 0xd9, 0xd3, 0xeb, 0x73, 0x07, 0x80, 0x49, 0xd2, 0x7f, 0x55, 0xd2, 0x94, 0x37, 0x30, 0x4e, 0x0f, + 0xbf, 0x9d, 0x39, 0x7d, 0x1d, 0x10, 0x87, 0x5d, 0xaa, 0xb7, 0x11, 0x12, 0x7d, 0xd5, 0xd5, 0xdf, + 0x1e, 0xeb, 0xce, 0x8e, 0x9e, 0xa4, 0xe3, 0xfb, 0x8b, 0xd3, 0xfa, 0xdb, 0x67, 0x01, 0xa2, 0x3c, + 0x3d, 0xd2, 0x57, 0xb3, 0x6d, 0x13, 0x0d, 0xec, 0xa5, 0x75, 0xd7, 0xd5, 0xd6, 0x98, 0x67, 0xf6, + 0xa4, 0x70, 0x19, 0x89, 0xe0, 0x4a, 0x79, 0x93, 0x7d, 0x6f, 0x58, 0xef, 0xbc, 0xca, 0x99, 0x01, + 0x2f, 0x32, 0x08, 0x27, 0x56, 0xfa, 0x1f, 0x2f, 0xd2, 0xae, 0x19, 0x5b, 0x65, 0x83, 0x1d, 0xff, + 0x49, 0x42, 0xf3, 0xe1, 0x66, 0x9a, 0x50, 0xb3, 0x2e, 0x11, 0x6b, 0x61, 0x3c, 0xf1, 0xdb, 0xdd, + 0xfc, 0x39, 0x1c, 0x63, 0xcb, 0x23, 0x05, 0x61, 0x28, 0x67, 0x0e, 0x48, 0x9a, 0xf2, 0x8a, 0xc1, + 0x99, 0x43, 0xf9, 0x9c, 0x79, 0x96, 0x71, 0x06, 0x52, 0x89, 0x67, 0xc7, 0x3e, 0xd2, 0x07, 0x6f, + 0x02, 0x84, 0x81, 0x20, 0x5b, 0x6d, 0x19, 0x4b, 0x2d, 0xad, 0x3b, 0x8f, 0x25, 0x84, 0xe0, 0xe5, + 0x81, 0xa9, 0x10, 0x8c, 0x87, 0x3d, 0x68, 0x21, 0x39, 0x1b, 0x73, 0x21, 0x79, 0x85, 0x3d, 0x23, + 0x2c, 0x07, 0x16, 0xb2, 0x74, 0x73, 0xf2, 0x2b, 0x8b, 0x86, 0xa7, 0xac, 0xb8, 0x21, 0x69, 0xca, + 0x6b, 0xb8, 0x2c, 0xd3, 0x75, 0x73, 0xe2, 0x40, 0x8f, 0x03, 0x43, 0x7e, 0xe4, 0x56, 0x53, 0xae, + 0x77, 0x77, 0x66, 0x0e, 0x7d, 0x42, 0x2f, 0x85, 0xba, 0x0e, 0x19, 0x1a, 0x00, 0xe1, 0x80, 0x4e, + 0x5f, 0x07, 0x88, 0x5f, 0xb7, 0xef, 0xad, 0x51, 0xf8, 0x9f, 0x79, 0xcc, 0xca, 0x5e, 0xea, 0x02, + 0x7b, 0xf1, 0x54, 0xe0, 0x49, 0x77, 0x86, 0x25, 0x6d, 0x1c, 0x4b, 0x56, 0x2e, 0xaf, 0x6c, 0x30, + 0x68, 0xc2, 0xa3, 0xf0, 0x4c, 0xce, 0x7e, 0xdb, 0x54, 0xcd, 0x83, 0x69, 0x57, 0x38, 0x6c, 0x2d, + 0x5d, 0x6f, 0x1a, 0xbd, 0xcb, 0x8b, 0x84, 0xa6, 0x9c, 0x1b, 0x95, 0x34, 0xe5, 0x5f, 0xe0, 0xe5, + 0x62, 0x2e, 0xeb, 0xec, 0x68, 0x47, 0xb6, 0xbf, 0x23, 0x8f, 0x52, 0xd0, 0x3f, 0xb8, 0xe9, 0xf2, + 0x6e, 0x02, 0x70, 0x7e, 0x6b, 0x09, 0x57, 0x6c, 0x90, 0xa1, 0x3d, 0xaf, 0x1d, 0xb4, 0xb0, 0x6d, + 0x40, 0x52, 0x6a, 0x34, 0xac, 0x46, 0x61, 0x2b, 0x46, 0x18, 0xb8, 0x1a, 0xcb, 0x0e, 0x0c, 0xe4, + 0x99, 0x53, 0x92, 0x95, 0x7b, 0x84, 0x3b, 0xd2, 0x37, 0x2b, 0x21, 0x9c, 0x37, 0x3e, 0xea, 0x81, + 0x88, 0x29, 0x44, 0x1a, 0xea, 0xa2, 0x4c, 0xde, 0x96, 0x39, 0xa5, 0x18, 0xb0, 0xc2, 0x30, 0x76, + 0x05, 0x8a, 0x01, 0xa5, 0xbc, 0xba, 0x28, 0x69, 0xca, 0xcf, 0xb1, 0x1f, 0x0e, 0x42, 0x98, 0x19, + 0x1e, 0x3e, 0x44, 0x8f, 0xbd, 0x85, 0xf0, 0x81, 0xde, 0x0d, 0xf4, 0x38, 0x18, 0x16, 0x48, 0x4e, + 0x20, 0xb7, 0xc7, 0xba, 0xf5, 0x0b, 0x6f, 0x65, 0x4e, 0x9f, 0xca, 0x9c, 0xe9, 0x85, 0x13, 0x27, + 0x88, 0x05, 0x6f, 0x94, 0x1f, 0x3c, 0xa9, 0xdf, 0x1a, 0xcf, 0x1e, 0x3d, 0x9f, 0x1b, 0x3a, 0xaf, + 0xb7, 0x8f, 0x81, 0x42, 0xe2, 0x29, 0x29, 0xe4, 0x47, 0x34, 0xcb, 0xd2, 0xa6, 0x10, 0x91, 0x3f, + 0x93, 0x33, 0x8f, 0x3b, 0x91, 0x9b, 0x0f, 0xc5, 0x78, 0x53, 0x51, 0x1c, 0x30, 0xe5, 0xce, 0x67, + 0x92, 0xa6, 0xbc, 0x89, 0xcb, 0x9d, 0xb9, 0xd3, 0x42, 0x5a, 0x59, 0x78, 0xf4, 0x8a, 0x23, 0x8f, + 0xec, 0x80, 0x53, 0xe4, 0x54, 0x25, 0x5e, 0x5e, 0x24, 0xa7, 0xe0, 0x53, 0xf8, 0x97, 0x12, 0x9a, + 0x63, 0x31, 0x2d, 0xf6, 0x29, 0xdc, 0x52, 0xed, 0x38, 0x85, 0xe7, 0x41, 0x24, 0xe3, 0xfe, 0x57, + 0x35, 0x65, 0x89, 0xb1, 0xa7, 0x38, 0x3b, 0x71, 0xf2, 0x43, 0x36, 0x83, 0xdf, 0x07, 0x3f, 0xb3, + 0x5d, 0x37, 0xf5, 0xc1, 0x7e, 0x5a, 0x08, 0x4b, 0xcc, 0x40, 0x91, 0x53, 0x2d, 0xbe, 0x2a, 0x21, + 0x44, 0x32, 0x60, 0x03, 0xaa, 0x8b, 0x1c, 0xb4, 0x5d, 0xc0, 0x73, 0x71, 0xa1, 0xea, 0x64, 0xdc, + 0xbf, 0x43, 0x53, 0x9e, 0xc4, 0x73, 0x2c, 0x43, 0xe6, 0x5d, 0x22, 0x66, 0xd1, 0xac, 0x61, 0x5f, + 0xe6, 0x37, 0xe7, 0xb0, 0xac, 0x00, 0xac, 0x71, 0xb1, 0x58, 0x1f, 0xa0, 0x7a, 0x5a, 0x0f, 0x8f, + 0xf2, 0x19, 0xf6, 0x8f, 0x3a, 0x09, 0x98, 0x15, 0xc6, 0x71, 0x93, 0xe3, 0x04, 0x96, 0x8c, 0xfb, + 0xcf, 0x49, 0x9a, 0xb2, 0x03, 0xd3, 0x1c, 0x9e, 0x99, 0x33, 0xbd, 0xe9, 0xe1, 0x8f, 0xe1, 0xda, + 0x3f, 0x3d, 0x7c, 0x28, 0xdb, 0xdf, 0x41, 0x41, 0xa9, 0xf8, 0x3d, 0x47, 0xc5, 0x4f, 0x00, 0xa0, + 0x2b, 0x08, 0x21, 0xb9, 0x65, 0xfe, 0x55, 0x11, 0x0b, 0xcc, 0x07, 0x46, 0x5f, 0xc6, 0x2b, 0x1d, + 0xe8, 0xa7, 0x81, 0x07, 0x92, 0x95, 0x7b, 0x78, 0x14, 0x0c, 0x73, 0xc5, 0x8c, 0x3f, 0xf0, 0xa0, + 0x59, 0xe0, 0x31, 0x03, 0x2c, 0x58, 0xec, 0x44, 0x9b, 0x40, 0xfb, 0x43, 0x05, 0xeb, 0x93, 0x71, + 0xff, 0x17, 0x92, 0xa6, 0x7c, 0x22, 0xe1, 0xfb, 0x2c, 0x83, 0x48, 0x69, 0x3c, 0x22, 0x65, 0xce, + 0xde, 0xcc, 0x1c, 0x1e, 0xa4, 0x1c, 0x21, 0xca, 0x03, 0xc7, 0x15, 0x16, 0x38, 0x51, 0xc3, 0x26, + 0xce, 0xdd, 0x04, 0x38, 0x08, 0xc6, 0x90, 0xa7, 0x67, 0x99, 0x4b, 0x1f, 0x42, 0xed, 0xaf, 0xdb, + 0xdf, 0xa2, 0x4d, 0xe0, 0x2a, 0x9c, 0x14, 0x4e, 0xb0, 0x84, 0x16, 0xd0, 0x44, 0x0c, 0xd7, 0x04, + 0x60, 0xc2, 0xde, 0xf8, 0x41, 0x5c, 0x60, 0x6f, 0x8c, 0xff, 0x56, 0x42, 0xf7, 0x12, 0x42, 0xc9, + 0xf3, 0x57, 0xc6, 0xab, 0x25, 0x8e, 0xbc, 0x10, 0x41, 0x1c, 0xb7, 0x4f, 0x0e, 0x50, 0xb0, 0xe7, + 0x7f, 0x09, 0x3f, 0xc0, 0x42, 0x4e, 0x7d, 0xa2, 0x77, 0x5e, 0xb1, 0xf2, 0x6e, 0xb9, 0x58, 0xc5, + 0x36, 0x87, 0x6f, 0x8b, 0x3f, 0x61, 0xd6, 0x03, 0x4f, 0x12, 0x42, 0xd3, 0x23, 0xd8, 0x69, 0xd3, + 0x90, 0xdc, 0x19, 0x4a, 0xa8, 0x8d, 0x5c, 0x00, 0xfe, 0xca, 0xd8, 0xf0, 0x92, 0xfd, 0xf9, 0xb6, + 0x48, 0x22, 0xd5, 0x1a, 0x6a, 0x66, 0xd4, 0x2d, 0x75, 0x3e, 0xa7, 0xb0, 0x42, 0x19, 0x04, 0x96, + 0x17, 0x07, 0x98, 0x8c, 0xfb, 0x55, 0x4d, 0xf9, 0x0e, 0xc6, 0xf4, 0xb5, 0xc2, 0xc9, 0xfe, 0xcc, + 0xa1, 0x33, 0x80, 0xb9, 0xf7, 0x31, 0x7b, 0x59, 0x45, 0xfa, 0xf3, 0xf7, 0x33, 0x5d, 0x27, 0xd2, + 0x23, 0xef, 0xec, 0x8c, 0x25, 0x53, 0xc2, 0x48, 0xf9, 0xfc, 0x0b, 0x1d, 0xa8, 0x6a, 0x13, 0x8e, + 0x31, 0xfe, 0x95, 0x84, 0xee, 0x07, 0x03, 0x38, 0x19, 0x49, 0x4e, 0x50, 0x8e, 0x24, 0x39, 0x03, + 0x26, 0xe3, 0xfe, 0x1f, 0x6a, 0x4a, 0xb9, 0x41, 0x12, 0xf1, 0xe9, 0x13, 0x49, 0x72, 0x28, 0x23, + 0xe8, 0x2f, 0x0b, 0x2c, 0x2d, 0x80, 0xbe, 0xc5, 0x4a, 0xfd, 0x7b, 0x09, 0x3d, 0x00, 0x7b, 0x31, + 0xeb, 0x87, 0x5f, 0x69, 0x8d, 0xa5, 0x42, 0xf6, 0x65, 0x98, 0x2b, 0xa8, 0x41, 0xd1, 0xf2, 0x29, + 0x40, 0x27, 0xe3, 0xfe, 0xb0, 0x41, 0x16, 0x7d, 0xf2, 0x37, 0xd1, 0x79, 0x78, 0xe2, 0x17, 0xef, + 0x7b, 0xcb, 0xa8, 0x73, 0xbc, 0x40, 0x10, 0xd4, 0x80, 0xed, 0xf1, 0x2e, 0x2f, 0x92, 0xac, 0xca, + 0x9f, 0x1b, 0x5f, 0x31, 0xc6, 0x69, 0x40, 0x42, 0x77, 0xad, 0x57, 0xc9, 0xea, 0x06, 0x3b, 0xcd, + 0x0c, 0x42, 0x02, 0x10, 0xbb, 0xdd, 0xe1, 0xf5, 0x74, 0xba, 0xff, 0xb1, 0xa6, 0xac, 0xc4, 0x08, + 0x94, 0xc4, 0xa8, 0xf0, 0xfa, 0xc5, 0x79, 0xa3, 0x0e, 0x72, 0x79, 0x18, 0x9b, 0x4b, 0x58, 0x3e, + 0x9a, 0xb3, 0x86, 0xb3, 0x96, 0x18, 0xcb, 0x96, 0xca, 0x3d, 0x34, 0x05, 0xc8, 0x9b, 0xf8, 0xbf, + 0x48, 0x68, 0x16, 0xfd, 0x22, 0x84, 0x47, 0x72, 0x41, 0x47, 0x88, 0xdd, 0x62, 0xdf, 0x34, 0x59, + 0x60, 0x28, 0xda, 0x27, 0x24, 0x4d, 0x69, 0xc2, 0xf3, 0x4d, 0xbc, 0x73, 0x43, 0x17, 0x32, 0xfb, + 0x3a, 0x01, 0x3f, 0xef, 0xa6, 0x42, 0x34, 0x88, 0x90, 0x15, 0xe9, 0xe1, 0xd1, 0xdc, 0x85, 0xbd, + 0xb0, 0xdf, 0xd6, 0x87, 0x6e, 0x1a, 0x3b, 0xf0, 0xae, 0xc3, 0xd9, 0x5f, 0x0e, 0xc1, 0xc5, 0x25, + 0x74, 0x53, 0x60, 0x92, 0xb4, 0x92, 0x5b, 0x19, 0x31, 0x68, 0x1c, 0x90, 0xd0, 0xdd, 0x41, 0x35, + 0x1c, 0x4b, 0x34, 0x72, 0xb2, 0x1d, 0x4e, 0x01, 0xc5, 0x7a, 0x46, 0xb9, 0xd7, 0x1e, 0xde, 0x84, + 0xc5, 0x61, 0xf4, 0x6f, 0xd1, 0x94, 0x15, 0xb8, 0x4c, 0x1f, 0x3f, 0xaa, 0x77, 0x9e, 0xb7, 0xd3, + 0xe1, 0xc5, 0x62, 0x0d, 0x5c, 0x1d, 0x82, 0x7d, 0xf6, 0x2f, 0x70, 0x41, 0xdb, 0x90, 0xa4, 0xff, + 0x57, 0x42, 0xc8, 0x0c, 0xd8, 0x8c, 0x5d, 0x4e, 0x34, 0x44, 0x79, 0xf2, 0x17, 0x02, 0xa1, 0x63, + 0x73, 0x96, 0x9c, 0x7a, 0xdc, 0x03, 0x72, 0x6f, 0x7c, 0x8a, 0xe2, 0xd8, 0x94, 0x5f, 0xf2, 0xdb, + 0x3c, 0xf5, 0x78, 0xd0, 0x5b, 0x88, 0xf0, 0x7f, 0x90, 0x10, 0x26, 0x27, 0x7c, 0x30, 0x04, 0xcc, + 0xd0, 0xd9, 0xcf, 0x98, 0x19, 0x4c, 0xd2, 0x95, 0x01, 0x22, 0x08, 0x65, 0x40, 0x8f, 0xa4, 0x29, + 0x3f, 0xc5, 0x8f, 0x9a, 0xbb, 0x2b, 0xfa, 0xfc, 0x18, 0xde, 0x3e, 0x5f, 0x3a, 0xa1, 0x9f, 0x1a, + 0x68, 0x08, 0x27, 0xa9, 0xc1, 0x7b, 0x0a, 0xa2, 0x39, 0xd3, 0x91, 0x73, 0x02, 0xa9, 0x98, 0x38, + 0xf1, 0x69, 0xe6, 0xd2, 0x2f, 0x72, 0x43, 0x43, 0xfa, 0x7b, 0xa7, 0x33, 0x47, 0xae, 0x0b, 0x1b, + 0x7c, 0xe7, 0xf3, 0x2d, 0x22, 0x95, 0x66, 0x30, 0x69, 0x29, 0x80, 0x87, 0x25, 0x84, 0x6a, 0x62, + 0x89, 0xc6, 0x58, 0xd4, 0x79, 0xa0, 0xcd, 0x3a, 0x77, 0x3a, 0x05, 0x10, 0x4a, 0x67, 0x58, 0x53, + 0x9e, 0xc2, 0xf3, 0xd8, 0xc6, 0xf2, 0xb0, 0xde, 0x33, 0x94, 0xbb, 0xbc, 0x4f, 0x1f, 0xb9, 0x90, + 0x69, 0xdf, 0xeb, 0x5d, 0x4c, 0x85, 0x74, 0xf0, 0xf3, 0xec, 0xf8, 0xa0, 0x58, 0x29, 0x1c, 0x53, + 0x3e, 0xe2, 0x5d, 0xec, 0x86, 0x7d, 0x98, 0x7c, 0xcd, 0x40, 0x7d, 0x44, 0x42, 0xb3, 0x5f, 0x8d, + 0x0a, 0xc8, 0xdb, 0xec, 0x83, 0x58, 0xcb, 0xd0, 0x5f, 0x52, 0x18, 0x88, 0x12, 0xb0, 0x5d, 0x53, + 0x56, 0x61, 0x1a, 0x9f, 0xde, 0x82, 0xfd, 0x42, 0x11, 0x7b, 0x27, 0xd4, 0x1f, 0xf5, 0xfa, 0xdc, + 0x50, 0x6f, 0x8d, 0x5a, 0x90, 0x9f, 0xc9, 0x13, 0xd6, 0x38, 0x6c, 0x48, 0xf2, 0xf2, 0x35, 0x39, + 0x6c, 0x48, 0xf2, 0xb3, 0xdd, 0xf8, 0x77, 0x6a, 0xca, 0x73, 0x38, 0x00, 0xf8, 0xf1, 0xec, 0x49, + 0x15, 0xfa, 0xe5, 0xfd, 0x7c, 0x83, 0x9f, 0xed, 0xef, 0xf0, 0xd5, 0xc7, 0x1a, 0x7d, 0x13, 0x1f, + 0x5d, 0x99, 0x68, 0xef, 0xf5, 0xce, 0xcd, 0x83, 0x25, 0xf8, 0xfb, 0xfd, 0x8b, 0xdc, 0xf0, 0x6f, + 0x34, 0x3e, 0x69, 0x20, 0x3f, 0x2a, 0xa1, 0x7b, 0xf2, 0x73, 0x0f, 0xd8, 0xd7, 0x02, 0x2e, 0xb9, + 0x26, 0xec, 0x6b, 0x01, 0xb7, 0x34, 0x06, 0xfe, 0xad, 0x64, 0x2d, 0x60, 0x89, 0xbf, 0x4f, 0x72, + 0x62, 0x78, 0x1d, 0xca, 0x26, 0x93, 0x1b, 0xc8, 0x9f, 0x61, 0x60, 0xff, 0x97, 0x12, 0x9a, 0xe7, + 0x98, 0x3b, 0xc4, 0x6d, 0x05, 0xe0, 0x9c, 0x3f, 0xc6, 0x6d, 0x05, 0xe0, 0x92, 0x90, 0xc4, 0xff, + 0x03, 0x3b, 0x31, 0x24, 0xf7, 0x8d, 0xd7, 0xa1, 0xac, 0xc0, 0xb5, 0x04, 0xa8, 0xb0, 0xe0, 0xd2, + 0x6c, 0x1b, 0x0f, 0x08, 0xaf, 0x5f, 0x68, 0x3c, 0x2c, 0xe9, 0x14, 0x0a, 0x8d, 0x87, 0x35, 0x52, + 0xbf, 0xd3, 0x78, 0x90, 0xdc, 0x0d, 0x5e, 0x87, 0xb2, 0xc9, 0xc6, 0x03, 0x02, 0xfd, 0x1b, 0xd8, + 0xff, 0x77, 0x70, 0x8a, 0xa0, 0xa6, 0xb6, 0x26, 0xa1, 0x36, 0xaa, 0xd1, 0x54, 0x24, 0xd4, 0x6c, + 0xa7, 0xc0, 0x09, 0xca, 0x71, 0x75, 0xe9, 0x0c, 0x98, 0x8c, 0xfb, 0xfb, 0x24, 0x4d, 0xd9, 0x86, + 0x17, 0x59, 0xf6, 0x52, 0x26, 0x08, 0x4c, 0x9c, 0xde, 0x27, 0xe9, 0xa6, 0xaa, 0xa7, 0x37, 0xfd, + 0xf9, 0x7b, 0xd9, 0xfe, 0x0e, 0x78, 0x26, 0xb3, 0x41, 0xdd, 0x5d, 0xb0, 0x59, 0x81, 0x1d, 0x23, + 0x2d, 0x09, 0xf3, 0x16, 0x95, 0x7b, 0x92, 0xac, 0xcf, 0x37, 0xf1, 0xff, 0xc5, 0x53, 0x5d, 0xd8, + 0x59, 0x10, 0x28, 0x78, 0x95, 0x60, 0xe5, 0xc2, 0xe3, 0x45, 0xc3, 0x26, 0xe3, 0xfe, 0x3f, 0xd2, + 0x94, 0xe7, 0xf1, 0x22, 0xcb, 0x85, 0x83, 0x8d, 0x0f, 0x8b, 0x60, 0x99, 0xe4, 0x02, 0x44, 0xe8, + 0x7d, 0xd2, 0x3b, 0x65, 0x7a, 0x8d, 0x21, 0xff, 0x7b, 0x09, 0x2d, 0xb0, 0x9c, 0xa8, 0x14, 0x22, + 0xd9, 0x05, 0xd0, 0x91, 0x64, 0x57, 0xd8, 0x64, 0xdc, 0xdf, 0xa2, 0x29, 0x32, 0x5e, 0x60, 0x39, + 0xb0, 0x31, 0x21, 0xbc, 0x6e, 0x15, 0x30, 0xac, 0x81, 0xa9, 0x0f, 0xeb, 0x3f, 0x48, 0x34, 0x3a, + 0xb3, 0x8d, 0xc2, 0xf2, 0x02, 0x5b, 0x7e, 0x2b, 0x7d, 0xcb, 0x8a, 0x84, 0x4c, 0xc6, 0xfd, 0xff, + 0x93, 0xa6, 0xd4, 0xbb, 0x0a, 0x36, 0xdd, 0xf2, 0x56, 0xda, 0x4f, 0x0b, 0x0a, 0x36, 0x80, 0x95, + 0x04, 0x5e, 0x52, 0x0c, 0xed, 0xf8, 0xcf, 0x25, 0x34, 0xaf, 0x2e, 0x1a, 0x49, 0xad, 0x53, 0x1b, + 0x69, 0x7e, 0x10, 0xb6, 0x78, 0xb2, 0xd1, 0xeb, 0x08, 0xe6, 0x48, 0xaf, 0x0b, 0x64, 0x32, 0x6e, + 0xcc, 0xd0, 0x2b, 0xf1, 0x7c, 0xfd, 0xe0, 0xfb, 0xfa, 0xc5, 0x43, 0x7a, 0xf7, 0x31, 0xb8, 0xaa, + 0x67, 0x47, 0x5c, 0x2e, 0xe5, 0x05, 0x56, 0x46, 0x91, 0x68, 0x24, 0xb5, 0x83, 0xef, 0xe2, 0x0d, + 0x19, 0xfd, 0x77, 0x12, 0xba, 0x4f, 0x69, 0x6c, 0xa4, 0x5f, 0x57, 0x1b, 0x19, 0x35, 0x8f, 0x39, + 0xdc, 0x68, 0xe5, 0x03, 0x19, 0xb4, 0x2c, 0x2d, 0x0a, 0x2e, 0x19, 0xf7, 0x27, 0x88, 0x2a, 0xea, + 0x97, 0xf7, 0xb3, 0xf3, 0x89, 0xb7, 0xcf, 0x1a, 0x0b, 0x76, 0x0b, 0x41, 0x85, 0xab, 0xe1, 0x36, + 0xcf, 0xef, 0xb4, 0x0f, 0x09, 0x35, 0x36, 0xee, 0x60, 0x1f, 0x15, 0x88, 0xfb, 0x44, 0x42, 0xb3, + 0x84, 0x47, 0xfd, 0xf6, 0xed, 0x97, 0x50, 0xe9, 0xba, 0xfd, 0xb2, 0xc0, 0x98, 0x53, 0xc4, 0x0a, + 0x3c, 0x97, 0x07, 0x04, 0x80, 0xb8, 0x52, 0xde, 0x85, 0x79, 0x05, 0x34, 0x58, 0x8a, 0xb9, 0x67, + 0x5c, 0xe4, 0x2f, 0x73, 0xbb, 0x97, 0x36, 0xd0, 0xbd, 0x2c, 0xa1, 0x59, 0xc2, 0xd3, 0x69, 0xec, + 0x77, 0x33, 0x75, 0x85, 0xd0, 0xb5, 0xc0, 0x50, 0x74, 0xbf, 0x6f, 0xcc, 0x68, 0x73, 0xf9, 0xb3, + 0x6b, 0x8a, 0xee, 0xbc, 0xbc, 0x02, 0x01, 0xd1, 0xa5, 0x5e, 0xbf, 0xab, 0xaf, 0x00, 0xbf, 0x3f, + 0x37, 0x50, 0xbe, 0x21, 0xa1, 0x59, 0xc2, 0xd3, 0x55, 0xb7, 0x5b, 0xc1, 0xc2, 0x28, 0x5b, 0x60, + 0xcc, 0xa5, 0xa9, 0x8c, 0xef, 0x65, 0xd6, 0x2a, 0xd6, 0xda, 0x48, 0x91, 0x5e, 0x24, 0x9e, 0x3d, + 0x87, 0xcd, 0x0a, 0x01, 0xf9, 0x25, 0x81, 0x22, 0x90, 0xc7, 0x1f, 0x4b, 0xa8, 0x94, 0x4c, 0xa0, + 0x06, 0xda, 0x0f, 0x39, 0x4e, 0xad, 0x02, 0xce, 0x3e, 0x77, 0x00, 0x8a, 0xf0, 0x8f, 0x0c, 0x91, + 0x98, 0xc5, 0x0c, 0x4d, 0xac, 0xb5, 0xd1, 0xfb, 0x90, 0xb8, 0x0b, 0xa7, 0xdf, 0xb5, 0x23, 0x8b, + 0x8b, 0x41, 0xf6, 0x8c, 0x07, 0xcd, 0xe4, 0x0f, 0x14, 0xed, 0xeb, 0x68, 0x5e, 0xe5, 0xba, 0x8e, + 0x16, 0x20, 0x28, 0xbe, 0xbf, 0x92, 0x34, 0x65, 0x40, 0xc2, 0xf7, 0x0a, 0x18, 0x53, 0xfb, 0xa9, + 0x15, 0x38, 0x6e, 0xe5, 0x50, 0x77, 0xe2, 0xb0, 0xd5, 0x8b, 0x5d, 0xd5, 0xc7, 0xd8, 0xe1, 0xdd, + 0x2d, 0x68, 0xea, 0xb6, 0xfa, 0x1a, 0xfb, 0xa9, 0x83, 0xb5, 0x9e, 0xf1, 0xea, 0xb1, 0xc9, 0xc0, + 0x28, 0xc3, 0xbe, 0x67, 0x0c, 0x30, 0xe6, 0x2a, 0xbe, 0xad, 0xbe, 0x86, 0xee, 0xeb, 0xcb, 0xc4, + 0x32, 0x9b, 0xce, 0x3b, 0x9f, 0x3b, 0x12, 0xa4, 0xdb, 0xe2, 0x61, 0x43, 0x87, 0x3e, 0x97, 0xd0, + 0xdd, 0x82, 0xd6, 0x3a, 0xa2, 0x6e, 0xad, 0x77, 0x45, 0x3d, 0x1f, 0x8c, 0xa2, 0xfe, 0x13, 0x4d, + 0xf1, 0xb3, 0x63, 0xb9, 0xf4, 0x48, 0x5f, 0x5b, 0x3c, 0xcc, 0xd6, 0xb2, 0xf0, 0x4b, 0x40, 0xd7, + 0xf9, 0x40, 0x8e, 0xa1, 0x2b, 0x38, 0xcf, 0xec, 0x69, 0x8b, 0x87, 0xa9, 0x11, 0xf8, 0x73, 0x09, + 0xdd, 0x2d, 0xe8, 0xb0, 0x23, 0x01, 0xd6, 0x7a, 0x57, 0x02, 0xf2, 0xc1, 0x28, 0x01, 0xcd, 0x9a, + 0xb2, 0x1a, 0xcf, 0x13, 0xac, 0x81, 0x8f, 0x63, 0xed, 0x5d, 0x68, 0xb3, 0x08, 0x3e, 0x2b, 0x49, + 0x95, 0x81, 0xa9, 0x91, 0x84, 0xaf, 0x7a, 0xd0, 0x6c, 0xae, 0x30, 0x06, 0x35, 0x8f, 0xb8, 0xaa, + 0x93, 0x40, 0xcb, 0x92, 0xc2, 0x40, 0x94, 0x92, 0xbf, 0x91, 0x34, 0xe5, 0xb2, 0x84, 0xe7, 0x09, + 0x6a, 0xe7, 0xdb, 0x56, 0x5f, 0x43, 0x55, 0xef, 0x58, 0x61, 0xd5, 0x33, 0x21, 0xef, 0x84, 0xfa, + 0x2d, 0xc2, 0x85, 0x24, 0x19, 0xff, 0x5a, 0x42, 0xf7, 0x08, 0x66, 0xa6, 0x89, 0xec, 0x35, 0x97, + 0x16, 0x30, 0x44, 0x4d, 0xe2, 0x36, 0xb3, 0x7c, 0x72, 0x40, 0xca, 0xc1, 0x3f, 0xd2, 0x94, 0x3a, + 0x5c, 0x26, 0xf2, 0x2f, 0x41, 0x20, 0xf8, 0x85, 0x07, 0xe1, 0x20, 0x1d, 0x54, 0xfe, 0xa2, 0x4b, + 0xbf, 0x72, 0x9a, 0xc5, 0x2b, 0xd3, 0x4f, 0x5d, 0xd6, 0xcf, 0x9c, 0x11, 0x04, 0x24, 0x80, 0xcb, + 0xdd, 0x08, 0x83, 0xae, 0x05, 0x4b, 0xfc, 0x27, 0x70, 0x71, 0xb9, 0xad, 0xbe, 0xa6, 0x26, 0xd2, + 0xe8, 0x70, 0x62, 0x66, 0xd6, 0xb9, 0x9e, 0x24, 0x89, 0x20, 0xa6, 0x7c, 0xbf, 0x80, 0xef, 0x07, + 0x9a, 0xda, 0xe2, 0x61, 0x5f, 0x38, 0xd2, 0xc8, 0x2e, 0x70, 0x96, 0x02, 0x3d, 0x44, 0x34, 0x45, + 0x6a, 0xda, 0xe2, 0xe1, 0x6c, 0x7f, 0x87, 0x01, 0x38, 0xe9, 0x6c, 0xd2, 0x16, 0x0f, 0x1b, 0x70, + 0x5c, 0xbe, 0xff, 0x42, 0x42, 0x73, 0xc1, 0xc8, 0x6d, 0x66, 0xce, 0x08, 0xd8, 0xc5, 0x0a, 0x72, + 0x00, 0x46, 0xcd, 0xd2, 0x49, 0xe1, 0x28, 0x49, 0x3f, 0xd3, 0x94, 0x17, 0xd9, 0x12, 0x89, 0x3b, + 0x64, 0x78, 0x97, 0xe7, 0x15, 0x80, 0xdb, 0xf7, 0xed, 0xb1, 0x6e, 0x7a, 0x04, 0x3d, 0x76, 0x33, + 0xd3, 0x7e, 0x31, 0x3d, 0x36, 0x9c, 0x1d, 0xfb, 0x88, 0x9d, 0x64, 0x3e, 0xec, 0x7f, 0xb0, 0x90, + 0x4b, 0x85, 0x61, 0x80, 0xfe, 0xa5, 0x84, 0xe6, 0x9a, 0xdb, 0x79, 0x17, 0x82, 0xf2, 0x00, 0x5c, + 0x09, 0xb2, 0xc1, 0x51, 0x82, 0x7e, 0x2a, 0x2c, 0xa2, 0x78, 0x2d, 0x5b, 0x44, 0xf1, 0x02, 0xd1, + 0xee, 0x78, 0x03, 0x85, 0x10, 0xb7, 0xba, 0x82, 0x10, 0x32, 0x3c, 0x68, 0xae, 0xe9, 0x7a, 0xe4, + 0x42, 0x46, 0x1e, 0x80, 0x2b, 0x19, 0x36, 0x38, 0x4a, 0xc6, 0xdf, 0x49, 0x9a, 0xf2, 0x91, 0x64, + 0x8c, 0x8c, 0x61, 0x35, 0x4d, 0x42, 0x8e, 0x4a, 0xa2, 0x1d, 0xe5, 0xe5, 0x86, 0xd5, 0x18, 0x7f, + 0x97, 0xff, 0xcc, 0x9c, 0xea, 0xca, 0x1e, 0x3d, 0xa9, 0x5f, 0x3a, 0x91, 0xed, 0xef, 0x30, 0x0a, + 0x33, 0xc7, 0xaf, 0xc3, 0x21, 0xb5, 0xde, 0xb9, 0x37, 0x37, 0x38, 0x9c, 0x7d, 0xef, 0x5a, 0xe6, + 0x9d, 0xf3, 0xd0, 0x11, 0xb7, 0x37, 0xb9, 0x0b, 0x7b, 0xa1, 0x24, 0x73, 0xaa, 0xcb, 0x68, 0xc3, + 0x6f, 0x22, 0xb2, 0xa3, 0x1d, 0xe4, 0x08, 0xfc, 0x06, 0x3d, 0x67, 0x1c, 0x1b, 0xd1, 0x0f, 0x5e, + 0xa7, 0xa0, 0xcc, 0x64, 0x11, 0x4e, 0x56, 0x04, 0xa6, 0xc0, 0x49, 0xfc, 0xc7, 0x12, 0x9a, 0x4d, + 0xef, 0x4c, 0x80, 0x87, 0x6e, 0x37, 0x2a, 0x16, 0x06, 0x2e, 0x29, 0x0c, 0x44, 0xb9, 0xa7, 0x1a, + 0xfb, 0xb1, 0xb9, 0xe6, 0xb5, 0x0b, 0xf0, 0x6e, 0x91, 0xb8, 0xd2, 0xdb, 0x6c, 0xe2, 0x22, 0x08, + 0x43, 0x05, 0x9e, 0x0a, 0x09, 0xff, 0x20, 0x81, 0xe3, 0x8b, 0xe0, 0x25, 0x06, 0xa4, 0x3c, 0x5e, + 0x60, 0xab, 0x6c, 0x23, 0xa9, 0xa2, 0x38, 0x60, 0x4a, 0xda, 0x1b, 0x9a, 0xf2, 0x1c, 0x5e, 0x2c, + 0x7a, 0xb3, 0xd0, 0x31, 0x26, 0x60, 0xd4, 0x1a, 0xd1, 0x98, 0x01, 0xa2, 0xef, 0x59, 0xe6, 0xca, + 0x59, 0x61, 0x1f, 0xed, 0xec, 0x00, 0xe5, 0xea, 0x41, 0x06, 0x5e, 0x51, 0xf8, 0x86, 0x07, 0xcd, + 0x61, 0x1e, 0x4b, 0x40, 0xe8, 0x12, 0x37, 0x87, 0x26, 0x0b, 0x85, 0x8f, 0x4e, 0x02, 0x45, 0x49, + 0xfb, 0x5b, 0xcb, 0xa4, 0x9b, 0x4f, 0x93, 0xfb, 0xa4, 0x9b, 0x07, 0x79, 0x27, 0x26, 0xdd, 0xc5, + 0xb8, 0xa0, 0xf5, 0xc3, 0xff, 0xb7, 0x84, 0xee, 0xd9, 0x14, 0x6b, 0x53, 0xa9, 0xc7, 0x2a, 0x30, + 0xcf, 0x66, 0x0c, 0xf2, 0x21, 0x5c, 0x67, 0x5d, 0x3b, 0x20, 0x65, 0x61, 0xb7, 0xa4, 0x29, 0x2f, + 0xb3, 0xcb, 0x8e, 0xec, 0xc5, 0x51, 0xf3, 0xb2, 0xed, 0xca, 0x59, 0xef, 0x1a, 0xfd, 0xf2, 0x7e, + 0xea, 0x5b, 0x70, 0xe3, 0x53, 0xc3, 0x44, 0x70, 0x0d, 0x17, 0x00, 0x0d, 0x6b, 0x4f, 0xde, 0xc2, + 0x64, 0x47, 0xae, 0x66, 0x07, 0xcf, 0x31, 0xdd, 0x5e, 0xed, 0xaf, 0x2c, 0x5e, 0x31, 0xf8, 0x05, + 0x56, 0x9f, 0x07, 0xdd, 0x1f, 0x54, 0x5b, 0x18, 0xb6, 0xeb, 0x12, 0xb1, 0x16, 0x17, 0x05, 0x71, + 0x82, 0x72, 0x55, 0x10, 0x67, 0x60, 0xca, 0x82, 0xf7, 0xc9, 0xb5, 0xd6, 0x3c, 0xd3, 0xbb, 0xf0, + 0xe2, 0xe8, 0xc4, 0x49, 0xe6, 0x9a, 0xb9, 0xde, 0xea, 0xab, 0x9a, 0x1e, 0x7d, 0x87, 0xc3, 0xa5, + 0x87, 0x2f, 0x01, 0xa8, 0x61, 0x29, 0xc7, 0xf7, 0x67, 0x4e, 0x0c, 0xe5, 0x86, 0x28, 0x4f, 0xd2, + 0xa3, 0x87, 0xb3, 0x1d, 0xd7, 0xf5, 0x53, 0x03, 0xcc, 0x7d, 0xec, 0x12, 0xf0, 0x24, 0xf0, 0x65, + 0x78, 0xf2, 0x9b, 0x69, 0xe8, 0xde, 0x9a, 0x66, 0x35, 0x14, 0xa5, 0x7e, 0x7f, 0xc0, 0x10, 0xbb, + 0x9b, 0x45, 0x3e, 0x08, 0xe3, 0xc6, 0xb2, 0x22, 0x20, 0xd9, 0x0d, 0xdf, 0x34, 0x4d, 0xf9, 0x95, + 0x07, 0x2f, 0x14, 0x2f, 0xe4, 0x28, 0xa5, 0x6c, 0xe8, 0xbd, 0x9f, 0x78, 0x8a, 0x64, 0xc9, 0xcd, + 0x33, 0xe9, 0xd1, 0x77, 0x38, 0x03, 0x78, 0xb9, 0x7e, 0xf3, 0x7a, 0x66, 0xb8, 0x33, 0xdb, 0xbb, + 0x9f, 0xe6, 0x34, 0x15, 0x3e, 0xf5, 0xeb, 0xf6, 0xb7, 0xcc, 0x8b, 0xd3, 0xe1, 0x11, 0x7d, 0xec, + 0xad, 0xcc, 0x25, 0xfa, 0xd3, 0x68, 0x38, 0xfe, 0x2e, 0xaf, 0x85, 0x97, 0xad, 0x34, 0xf8, 0x0f, + 0xcc, 0x55, 0xa3, 0x9d, 0xb9, 0x7d, 0xe3, 0xd9, 0x73, 0x83, 0x86, 0xce, 0x91, 0xfe, 0xc1, 0xf1, + 0x1e, 0x20, 0x61, 0x79, 0x02, 0x53, 0x5a, 0x6e, 0xdf, 0x78, 0xfa, 0xd6, 0xfb, 0xb9, 0xa1, 0xbd, + 0x54, 0xd0, 0x09, 0xb0, 0x7e, 0xe3, 0xd3, 0xec, 0x68, 0x8f, 0x3e, 0xd8, 0x9d, 0x39, 0xd8, 0xcb, + 0xed, 0x01, 0xe4, 0x7d, 0x83, 0x3e, 0x73, 0xb7, 0xde, 0xd3, 0x47, 0x2e, 0xdc, 0x1e, 0xeb, 0x86, + 0xc2, 0x89, 0xf6, 0xfe, 0xdc, 0xad, 0x03, 0xf4, 0x5d, 0x50, 0x7f, 0xc7, 0xd6, 0x50, 0x72, 0x17, + 0x68, 0x41, 0x6e, 0xe8, 0x42, 0x76, 0x74, 0x3f, 0x68, 0x3d, 0xd3, 0x85, 0x67, 0x02, 0xab, 0xa7, + 0x30, 0xee, 0xa4, 0x8c, 0x0d, 0xfe, 0x27, 0xd3, 0xd1, 0x7d, 0xb6, 0xf1, 0xda, 0x26, 0xdb, 0xcf, + 0x99, 0x1d, 0x80, 0x98, 0x00, 0x3c, 0x5e, 0x14, 0x2c, 0xf3, 0xb8, 0x9d, 0xa6, 0x29, 0xff, 0xbf, + 0x07, 0xbf, 0x54, 0x40, 0x04, 0x88, 0xbc, 0xdf, 0xca, 0x1e, 0x19, 0xf8, 0x79, 0xab, 0x9a, 0xd8, + 0x4d, 0x43, 0x25, 0x12, 0x99, 0xa0, 0x89, 0xf2, 0x08, 0x47, 0xff, 0x59, 0x62, 0xbe, 0x82, 0xc4, + 0xac, 0x71, 0x90, 0x18, 0x79, 0x72, 0x89, 0xc1, 0x7f, 0x4d, 0x37, 0x6b, 0x16, 0x53, 0x51, 0xd4, + 0x3a, 0xa9, 0xbc, 0x80, 0xa7, 0xb1, 0xd5, 0x48, 0x24, 0x35, 0xe5, 0x19, 0x7c, 0x0f, 0xe0, 0x6b, + 0x7c, 0x94, 0x4e, 0xb7, 0xd4, 0xb1, 0x91, 0x78, 0x5a, 0xbf, 0xc3, 0x2d, 0x21, 0x78, 0x6b, 0x6f, + 0xe6, 0x60, 0xf0, 0x10, 0x0b, 0x4f, 0xd5, 0x0e, 0xe2, 0xff, 0x20, 0x59, 0x5c, 0xa9, 0x99, 0x1a, + 0x2c, 0x9b, 0x0c, 0x6b, 0x53, 0x0b, 0x02, 0xc5, 0x80, 0xfe, 0x56, 0x49, 0x94, 0x27, 0x21, 0x71, + 0x1a, 0x9a, 0x0f, 0x9b, 0x14, 0x52, 0x5e, 0xab, 0x26, 0x23, 0x09, 0x95, 0x38, 0xd3, 0x60, 0x97, + 0xcb, 0xda, 0x7c, 0x38, 0x46, 0xea, 0x8a, 0x62, 0xc1, 0x29, 0xb9, 0x19, 0x8f, 0xa6, 0x9c, 0xf3, + 0xe0, 0x05, 0xb0, 0xe7, 0x11, 0x20, 0xe8, 0x51, 0x4c, 0xa7, 0x27, 0x7f, 0x37, 0x34, 0x7c, 0xc9, + 0x06, 0x45, 0xbd, 0x5e, 0xe0, 0xf8, 0x69, 0xac, 0x5f, 0x1f, 0x1a, 0xcb, 0x1d, 0xb8, 0xc6, 0x5b, + 0x50, 0xe9, 0x87, 0x5c, 0xd4, 0x57, 0xce, 0xea, 0x63, 0x47, 0xf5, 0xce, 0xf3, 0x99, 0x53, 0x23, + 0xfa, 0xc9, 0x01, 0xd0, 0x02, 0x7e, 0xe7, 0xa1, 0xdf, 0xbc, 0x0e, 0x97, 0x04, 0x60, 0x08, 0x44, + 0x0d, 0x87, 0xfd, 0x44, 0xb6, 0xbf, 0xa3, 0xd1, 0xfc, 0xb8, 0xde, 0xf3, 0x71, 0x6e, 0xdf, 0x78, + 0x66, 0xe8, 0x08, 0x64, 0x41, 0xcb, 0x5d, 0x24, 0xf1, 0x91, 0x3e, 0xbc, 0xc8, 0x35, 0x37, 0x33, + 0x74, 0x24, 0x7d, 0xf3, 0x90, 0xde, 0x75, 0x58, 0xbf, 0xdc, 0x73, 0x7b, 0xec, 0x3d, 0x73, 0xef, + 0x72, 0xa0, 0x47, 0xbf, 0xdc, 0x23, 0x0e, 0x21, 0xb4, 0xcd, 0x0d, 0xdd, 0x00, 0xeb, 0x66, 0xb3, + 0x92, 0x64, 0x60, 0x9f, 0xf5, 0xaf, 0x99, 0x82, 0xec, 0x52, 0x44, 0x99, 0x35, 0x1f, 0xf1, 0x38, + 0x0d, 0x31, 0x79, 0x11, 0x5f, 0xc4, 0x10, 0x1b, 0x70, 0x53, 0x18, 0x62, 0x00, 0xa7, 0x43, 0xfc, + 0xc7, 0x92, 0xa6, 0xfc, 0x51, 0xde, 0x08, 0x1b, 0x00, 0x74, 0x84, 0x43, 0xf6, 0x01, 0x0e, 0xb5, + 0xa6, 0x62, 0xc9, 0x70, 0xa8, 0x39, 0x12, 0x6d, 0xe2, 0xc9, 0xb6, 0x84, 0x86, 0xdc, 0x25, 0x8b, + 0x30, 0x7a, 0xd4, 0x30, 0xfb, 0x27, 0x86, 0xd2, 0xb7, 0x06, 0x33, 0x97, 0x3e, 0xa0, 0xd1, 0xf8, + 0x86, 0x0f, 0xa7, 0x87, 0xdb, 0x73, 0x07, 0xae, 0x65, 0xf6, 0x75, 0xea, 0xfb, 0x3f, 0xfb, 0xf2, + 0xcc, 0x4b, 0x46, 0xde, 0x20, 0xcc, 0xbb, 0xe6, 0x61, 0x9e, 0x0f, 0x04, 0x62, 0x53, 0x24, 0xba, + 0x29, 0xf4, 0x3a, 0xe1, 0x5d, 0x45, 0x01, 0x66, 0x98, 0x60, 0x93, 0x78, 0x3e, 0xd8, 0xa0, 0x29, + 0xe7, 0xc6, 0x89, 0xdb, 0x17, 0x0d, 0x6e, 0xdb, 0x12, 0x89, 0x1a, 0x95, 0x95, 0x2d, 0x00, 0x44, + 0xb9, 0xf7, 0xe3, 0xe2, 0xb8, 0x07, 0xb1, 0x2e, 0x8c, 0x7f, 0x2f, 0xf7, 0x4c, 0x9c, 0xec, 0x9d, + 0xf8, 0xc5, 0xfb, 0x22, 0xef, 0xf4, 0xc3, 0x3d, 0xb9, 0xcb, 0xfb, 0xf4, 0x0f, 0xfb, 0x39, 0x0f, + 0x40, 0x5b, 0x60, 0x05, 0xe1, 0x9f, 0xca, 0x0a, 0xa2, 0x21, 0xd6, 0x1a, 0xe5, 0x6c, 0x3b, 0xea, + 0x41, 0x65, 0x6b, 0x49, 0x9c, 0x7c, 0x8e, 0x9f, 0xd2, 0x9a, 0x8a, 0x6d, 0x09, 0x87, 0x9a, 0x55, + 0x6c, 0x7b, 0xca, 0xe4, 0x06, 0xc9, 0x98, 0xb7, 0xb2, 0xf8, 0x06, 0x94, 0x7f, 0x47, 0x25, 0x4d, + 0xd9, 0x88, 0x97, 0xe8, 0x63, 0xed, 0x7a, 0xef, 0x10, 0xdf, 0x5b, 0x50, 0x47, 0x24, 0xe2, 0xe4, + 0x96, 0xe9, 0xfa, 0x08, 0xde, 0x80, 0x79, 0x2d, 0x50, 0x54, 0x29, 0x09, 0x08, 0x1c, 0x1d, 0xc1, + 0xbb, 0x48, 0xc2, 0x90, 0x17, 0xfd, 0xcf, 0x4e, 0x81, 0x21, 0x6c, 0x34, 0xd4, 0x4a, 0xc8, 0x18, + 0x60, 0xf0, 0xe5, 0xa4, 0x07, 0x3d, 0x50, 0x1b, 0x49, 0xba, 0x30, 0xc6, 0x46, 0xa7, 0x2b, 0x28, + 0xe3, 0xcc, 0xaa, 0x29, 0xb4, 0xa0, 0xac, 0x39, 0x46, 0x59, 0xd3, 0x79, 0x75, 0xe2, 0xf8, 0xa5, + 0x49, 0x59, 0x23, 0x40, 0x15, 0x64, 0x8d, 0xe2, 0xff, 0xce, 0x97, 0x62, 0x4d, 0x23, 0xe0, 0x6b, + 0xf0, 0x66, 0x50, 0x42, 0x08, 0x0e, 0x00, 0xc9, 0x6b, 0x6f, 0x97, 0x37, 0xea, 0x42, 0x26, 0x24, + 0xaf, 0xbf, 0x10, 0x88, 0xe9, 0x43, 0xb4, 0x1a, 0xd3, 0xb4, 0x23, 0xf4, 0x55, 0xec, 0x12, 0xfa, + 0x54, 0xfb, 0xe8, 0x2d, 0xc8, 0x24, 0x92, 0xbb, 0xd5, 0x6b, 0xec, 0x24, 0xfb, 0x3b, 0xf4, 0xde, + 0x77, 0xf4, 0x9e, 0xcb, 0xc2, 0xe3, 0x6d, 0x67, 0x8f, 0xcf, 0x54, 0x28, 0xb9, 0xcb, 0x40, 0x78, + 0x9f, 0x07, 0xcd, 0x24, 0x6f, 0xcb, 0x09, 0xbe, 0x3e, 0xc7, 0x67, 0xe7, 0x22, 0xba, 0x0f, 0x17, + 0x80, 0xa0, 0xd8, 0x5e, 0x26, 0x16, 0xf3, 0x1e, 0xfa, 0x26, 0x9d, 0x3c, 0x36, 0x37, 0xea, 0xbd, + 0x3b, 0xe9, 0x53, 0x74, 0x52, 0x92, 0xed, 0xef, 0x00, 0x1c, 0x2b, 0x7c, 0x30, 0x8d, 0x01, 0x38, + 0x44, 0x09, 0x5a, 0xe1, 0x83, 0x5f, 0xe9, 0xd1, 0xce, 0x89, 0x93, 0xbd, 0xe9, 0x91, 0x77, 0xa0, + 0x0d, 0x34, 0x48, 0x0f, 0x1f, 0x49, 0x8f, 0xbe, 0x03, 0x93, 0x16, 0x94, 0x27, 0x53, 0x6a, 0xdc, + 0x90, 0xff, 0x8b, 0x87, 0x20, 0x13, 0x58, 0x81, 0x57, 0xae, 0x06, 0xd9, 0x95, 0x7b, 0x8c, 0x7f, + 0x2d, 0xaf, 0xd5, 0xcf, 0x71, 0xbf, 0x57, 0xe7, 0x61, 0x33, 0xeb, 0x26, 0xf1, 0x7b, 0xb5, 0x30, + 0x62, 0xa3, 0xa6, 0x2c, 0xc6, 0x08, 0x4c, 0x1c, 0xe1, 0xc0, 0x3d, 0xe6, 0xdf, 0xc2, 0x49, 0x98, + 0xb3, 0xeb, 0xa0, 0x05, 0x53, 0x03, 0xc7, 0xd3, 0x12, 0x42, 0x70, 0x86, 0xe9, 0x8c, 0xa3, 0x59, + 0xe7, 0x8a, 0xa3, 0x08, 0x42, 0x71, 0xac, 0x23, 0x38, 0xc2, 0x19, 0x23, 0xe0, 0x28, 0x9e, 0x7a, + 0x1a, 0x25, 0xe0, 0x1e, 0x18, 0x98, 0x14, 0x47, 0xfc, 0x3e, 0xb8, 0xa1, 0x13, 0xec, 0x9c, 0xdc, + 0xd0, 0x45, 0xd4, 0x1e, 0x72, 0xad, 0xa7, 0x78, 0xbd, 0xa2, 0x29, 0x8f, 0x31, 0x37, 0x74, 0x82, + 0x57, 0x99, 0x78, 0xa4, 0x48, 0x12, 0x51, 0x89, 0xa7, 0x89, 0x7e, 0x3c, 0x39, 0x7e, 0x27, 0x3d, + 0xa8, 0xd4, 0x58, 0xba, 0x12, 0x04, 0x1d, 0xdf, 0xdf, 0x88, 0x18, 0xfa, 0xdc, 0x01, 0x28, 0x8a, + 0x7f, 0x2a, 0x69, 0xca, 0x05, 0x89, 0xad, 0x76, 0x8d, 0x2a, 0xba, 0xda, 0xed, 0x73, 0x3d, 0x3f, + 0x33, 0x81, 0xee, 0xc4, 0xd1, 0xd9, 0x03, 0xd8, 0xcd, 0x12, 0xe0, 0x5e, 0x0f, 0x5a, 0x00, 0x86, + 0x87, 0x19, 0xdb, 0x48, 0xb4, 0xe9, 0xe5, 0x78, 0x2a, 0x12, 0x8b, 0xda, 0x5f, 0xf9, 0xba, 0x00, + 0xba, 0xbe, 0xf2, 0x75, 0x85, 0xa7, 0x8c, 0x7c, 0x57, 0xd2, 0x94, 0x10, 0x5e, 0x6c, 0x09, 0x5f, + 0x61, 0x83, 0xf6, 0xbe, 0x50, 0xb8, 0x9e, 0x5f, 0x99, 0xd0, 0x8f, 0x2f, 0xe7, 0xf6, 0x39, 0x01, + 0xd1, 0xfb, 0xe0, 0xd5, 0x88, 0xdf, 0xc9, 0xab, 0x49, 0x58, 0x73, 0xc4, 0x48, 0x67, 0x86, 0xbe, + 0xa5, 0x3d, 0xcc, 0x3f, 0xaf, 0x08, 0x96, 0xb8, 0x00, 0xba, 0xb2, 0xc4, 0x15, 0x9e, 0xb2, 0x24, + 0x0b, 0xce, 0x08, 0x4f, 0x5b, 0x9c, 0xf0, 0x6c, 0xe0, 0x15, 0x3e, 0xcb, 0x1e, 0xbe, 0x73, 0x60, + 0xe2, 0x40, 0x0f, 0xb4, 0xf0, 0x36, 0xdb, 0x5a, 0x26, 0xf3, 0xb8, 0x95, 0x1e, 0x6e, 0x4f, 0x0f, + 0x7f, 0xec, 0xd6, 0xb5, 0x61, 0xa8, 0x47, 0x8e, 0x00, 0x0c, 0x88, 0x90, 0xc1, 0xe0, 0x6b, 0xbf, + 0xd0, 0xc7, 0x8e, 0x82, 0xda, 0xa5, 0x87, 0x47, 0xf8, 0xd1, 0x75, 0x01, 0x9f, 0x40, 0x1b, 0x6b, + 0xf3, 0x03, 0x0c, 0x1c, 0xf0, 0x30, 0x9f, 0xc0, 0x22, 0xd8, 0xec, 0x02, 0xe8, 0xca, 0x66, 0x57, + 0x78, 0xca, 0xe6, 0xb7, 0xc9, 0x21, 0xee, 0x62, 0x8b, 0x0f, 0xa0, 0x5d, 0xf2, 0x96, 0xd3, 0x2b, + 0x18, 0x38, 0xa9, 0x61, 0x37, 0x01, 0x6e, 0xe0, 0x05, 0x3c, 0x07, 0x0b, 0x32, 0xc3, 0xe0, 0xc4, + 0xfd, 0xeb, 0xd5, 0x94, 0x9d, 0x0d, 0x8f, 0x3b, 0x18, 0x4b, 0x57, 0x1e, 0x54, 0x14, 0x07, 0x2c, + 0xa8, 0xde, 0xf7, 0xd9, 0x25, 0x87, 0x2b, 0x03, 0xd6, 0x88, 0xb6, 0x97, 0x33, 0xa0, 0x00, 0x0f, + 0x44, 0xff, 0x09, 0x3c, 0x75, 0x4e, 0xfc, 0x3f, 0x1e, 0xf0, 0xa1, 0xb4, 0xb3, 0xc2, 0xf1, 0x06, + 0xc7, 0x95, 0x17, 0xcb, 0x8b, 0x84, 0xa6, 0xcc, 0xf8, 0x47, 0x49, 0x53, 0xfe, 0x42, 0xc2, 0x4b, + 0x0a, 0x73, 0x83, 0x1a, 0xf9, 0xf3, 0x93, 0xbd, 0xc1, 0x74, 0x69, 0x78, 0x27, 0x0c, 0xbf, 0xb3, + 0x2f, 0xa7, 0x6d, 0x0c, 0xf0, 0xdb, 0x4e, 0x26, 0x6f, 0x4b, 0x2a, 0x94, 0x6a, 0x4d, 0x16, 0x61, + 0xf2, 0x00, 0xb0, 0x78, 0x93, 0xc7, 0xe0, 0x29, 0xf7, 0x0f, 0x4b, 0x9a, 0xf2, 0x5d, 0xec, 0x87, + 0x8d, 0x4c, 0x25, 0x2c, 0xda, 0xe9, 0x1d, 0x0a, 0xb9, 0x04, 0x37, 0x57, 0xf4, 0x45, 0xc0, 0x10, + 0xb2, 0xbf, 0xe3, 0x7d, 0x6a, 0xaa, 0xa2, 0x57, 0x99, 0x24, 0x48, 0x19, 0x86, 0xe9, 0x6d, 0x0f, + 0x9a, 0xb7, 0x65, 0x77, 0x34, 0x5c, 0x84, 0x10, 0x3a, 0x82, 0xb9, 0x0a, 0xa1, 0x0b, 0xb4, 0xa0, + 0x91, 0xf5, 0xf8, 0xb1, 0x1a, 0x85, 0xd2, 0x35, 0x78, 0x7a, 0xe2, 0x64, 0x27, 0x4b, 0x9d, 0xd0, + 0x9d, 0xb9, 0x74, 0x3e, 0x77, 0xe0, 0x6a, 0x76, 0xf0, 0x5c, 0xe6, 0x9d, 0x8b, 0xd9, 0x5f, 0x0e, + 0x79, 0x8b, 0x84, 0x23, 0xec, 0xa8, 0xf2, 0x3e, 0x39, 0x75, 0x76, 0xec, 0x8e, 0x12, 0x97, 0xac, + 0xff, 0x2a, 0x21, 0x6c, 0x3a, 0x36, 0xb0, 0x94, 0xc5, 0xf6, 0x53, 0x44, 0x3b, 0x8c, 0xeb, 0x29, + 0xa2, 0x13, 0x28, 0xe5, 0x41, 0xa7, 0xa4, 0x29, 0xd5, 0xb8, 0x4c, 0x8c, 0x46, 0x45, 0x37, 0x79, + 0x03, 0xe7, 0xb2, 0x5d, 0x07, 0xd9, 0x33, 0x57, 0x7b, 0x4d, 0x39, 0x0d, 0x07, 0x4f, 0xc2, 0xfe, + 0xc2, 0x63, 0xee, 0x2a, 0xff, 0x93, 0xc5, 0x3e, 0xe6, 0x36, 0xb6, 0x77, 0x2c, 0xc7, 0x2c, 0x11, + 0x81, 0xff, 0x26, 0x21, 0x2c, 0xbc, 0x8a, 0x70, 0xa5, 0xda, 0x0e, 0xe3, 0x4a, 0xb5, 0x13, 0x28, + 0xa5, 0xfa, 0x1d, 0x49, 0x53, 0xaa, 0xf0, 0x62, 0xfa, 0x58, 0x94, 0x10, 0x22, 0xd2, 0xc6, 0x9c, + 0xeb, 0x2c, 0x6f, 0x2e, 0x84, 0x1a, 0x42, 0xed, 0x06, 0xef, 0xba, 0x2f, 0x45, 0x2d, 0xec, 0x6d, + 0x79, 0x8a, 0x77, 0x98, 0x9a, 0x8d, 0x41, 0x37, 0xbd, 0x26, 0xdc, 0xc9, 0xb7, 0xc3, 0xb8, 0x92, + 0xef, 0x04, 0x2a, 0x0c, 0xfa, 0x6a, 0x63, 0xd0, 0xcf, 0xf2, 0x4b, 0x44, 0xd1, 0x39, 0xd4, 0x5b, + 0x26, 0x6e, 0x4c, 0x44, 0xf2, 0x09, 0xe1, 0xdf, 0x0d, 0x7c, 0x4d, 0x84, 0xe3, 0xdf, 0x78, 0xcc, + 0x9b, 0x00, 0x4e, 0xf3, 0x52, 0xb7, 0x33, 0xf0, 0x7c, 0x8a, 0xcb, 0x27, 0x07, 0xa4, 0xf4, 0x6a, + 0x1e, 0x4d, 0xf9, 0x37, 0x7c, 0xb6, 0x11, 0xe3, 0x15, 0x88, 0xc4, 0xd1, 0xd9, 0x66, 0xc0, 0x75, + 0xb6, 0x11, 0x39, 0xf5, 0x3b, 0x9b, 0x61, 0x38, 0xb6, 0x62, 0x00, 0x14, 0x61, 0x34, 0x9e, 0xc2, + 0x5f, 0x4e, 0xe9, 0x0c, 0x8d, 0x9b, 0x4b, 0x2f, 0x59, 0x38, 0xef, 0x1f, 0x73, 0xb9, 0x85, 0xc9, + 0x67, 0xfd, 0xd2, 0x49, 0xe1, 0x28, 0xe7, 0x8f, 0x4b, 0x9a, 0xb2, 0x0e, 0x07, 0xec, 0x8c, 0xd7, + 0x3b, 0x6f, 0xa4, 0xc7, 0xdf, 0x15, 0xa9, 0xa1, 0x4f, 0x62, 0xca, 0xc4, 0x38, 0x3a, 0x62, 0x0d, + 0xc8, 0x1e, 0xfe, 0xba, 0x64, 0xef, 0x7f, 0xe5, 0x66, 0x16, 0x82, 0x99, 0x86, 0xc3, 0xb1, 0xd6, + 0x68, 0xca, 0xcd, 0xcc, 0x8a, 0x30, 0x93, 0x98, 0x59, 0x2b, 0xa8, 0xf9, 0x72, 0x70, 0x05, 0x36, + 0x53, 0x17, 0xe6, 0xae, 0x5d, 0xd0, 0x7b, 0x6e, 0x50, 0x6d, 0x73, 0x2e, 0x2e, 0x18, 0x0d, 0x30, + 0x2f, 0x98, 0x5c, 0x08, 0xbe, 0x46, 0x0c, 0xe9, 0xff, 0xce, 0x0d, 0x69, 0x61, 0xba, 0xec, 0x30, + 0x93, 0x18, 0x52, 0x47, 0xba, 0xa2, 0x56, 0xef, 0x7e, 0x20, 0x40, 0xf0, 0xee, 0xb7, 0x51, 0xf4, + 0x9c, 0xf7, 0xe9, 0xa9, 0x50, 0x54, 0xb9, 0x87, 0xfe, 0x45, 0xed, 0xe4, 0x11, 0x0f, 0xba, 0x6f, + 0x53, 0xa4, 0x29, 0x91, 0x4f, 0x9e, 0x0d, 0x67, 0x07, 0x20, 0xd7, 0xab, 0x66, 0x47, 0x58, 0x4a, + 0xe0, 0x07, 0x92, 0xa6, 0x44, 0xf0, 0x5c, 0x78, 0xbe, 0x69, 0x52, 0xb8, 0x0d, 0x0a, 0xf4, 0xb7, + 0xcf, 0xea, 0x43, 0xfb, 0xf3, 0xe8, 0x64, 0x21, 0xf3, 0x0e, 0x1f, 0x4d, 0x0f, 0x7f, 0x0c, 0x15, + 0x00, 0xfd, 0xeb, 0xf6, 0xbd, 0xfa, 0x87, 0xfd, 0x50, 0x62, 0xfc, 0xdd, 0x39, 0x30, 0xb1, 0x6f, + 0x40, 0x04, 0x80, 0x69, 0x74, 0x95, 0x77, 0xca, 0x83, 0xfe, 0x1f, 0xf9, 0xf4, 0x51, 0x78, 0xd0, + 0xed, 0x30, 0x93, 0x4c, 0x1f, 0x8e, 0x3c, 0x79, 0xd3, 0x98, 0x3c, 0xcb, 0x44, 0x8f, 0x68, 0x8b, + 0x3c, 0x2f, 0xb6, 0x3b, 0x45, 0xdb, 0xc4, 0xa0, 0x2a, 0xf0, 0xa5, 0xc5, 0x00, 0xff, 0xb5, 0x47, + 0x70, 0xf6, 0x65, 0xa4, 0xba, 0x3b, 0xfb, 0xe6, 0x11, 0x5a, 0x3e, 0x39, 0x20, 0x25, 0xf3, 0x3f, + 0x4b, 0x9a, 0x72, 0x5d, 0xb2, 0xba, 0xfb, 0x02, 0x21, 0x74, 0xa6, 0x38, 0x39, 0x89, 0xc7, 0xb4, + 0x08, 0xfc, 0x3b, 0xdb, 0x8b, 0xc0, 0x47, 0x09, 0x93, 0x57, 0xe0, 0x29, 0x09, 0x12, 0xfe, 0xaf, + 0x1e, 0x34, 0x3f, 0x9f, 0x1b, 0x5b, 0x63, 0xf5, 0x6a, 0xa2, 0xc5, 0xcd, 0xf7, 0xcf, 0x84, 0x33, + 0xa0, 0x26, 0xf1, 0xfd, 0xcb, 0x07, 0xa6, 0x6c, 0xfe, 0xef, 0x92, 0xa6, 0xfc, 0xb5, 0x84, 0x9f, + 0x76, 0x63, 0x73, 0x85, 0x4f, 0x0c, 0x14, 0x01, 0xb1, 0x62, 0xe8, 0x1d, 0x2d, 0x69, 0xf1, 0x7b, + 0x3f, 0x0c, 0xce, 0xbe, 0xeb, 0x9c, 0xeb, 0xbf, 0x82, 0x79, 0xd8, 0xe2, 0xba, 0xfe, 0x98, 0xfb, + 0x93, 0x1f, 0x8b, 0xe7, 0xfa, 0xd2, 0x49, 0xe1, 0xcc, 0xf9, 0x47, 0xc6, 0x0b, 0x00, 0x41, 0x32, + 0xf0, 0xe0, 0x88, 0x4e, 0x05, 0xd9, 0xad, 0xa2, 0x60, 0xdc, 0xb4, 0x3c, 0x29, 0x4a, 0x50, 0xd4, + 0x73, 0x12, 0xba, 0xcf, 0x8a, 0xc5, 0x0f, 0x63, 0x51, 0x35, 0x69, 0xb7, 0xd0, 0x0e, 0x40, 0xae, + 0x16, 0xda, 0x11, 0x96, 0x92, 0xf6, 0xba, 0xa6, 0xd4, 0x62, 0x9f, 0x9d, 0x02, 0x12, 0x86, 0x56, + 0xef, 0xa6, 0x71, 0xa4, 0xbd, 0x93, 0x42, 0xc0, 0x55, 0x06, 0x5e, 0x56, 0x0c, 0xb1, 0x6f, 0x10, + 0x92, 0xfe, 0xb3, 0x24, 0xe8, 0x0b, 0xa0, 0xc6, 0x9e, 0x30, 0x2e, 0x9f, 0xe4, 0x49, 0x41, 0x5e, + 0x98, 0xb8, 0x15, 0xc5, 0x82, 0x53, 0x9a, 0x5b, 0xe1, 0x6d, 0x71, 0x3e, 0x45, 0x62, 0xf4, 0x2d, + 0x6f, 0xe1, 0xea, 0xa9, 0x18, 0x08, 0x1e, 0x78, 0xe9, 0xef, 0xc4, 0x67, 0x16, 0x5b, 0x5a, 0x1b, + 0xa2, 0x6a, 0xaa, 0xd0, 0x33, 0x0b, 0x0a, 0x31, 0xb9, 0xe5, 0xe5, 0x80, 0xe6, 0x90, 0x56, 0x33, + 0x8f, 0xd9, 0xb6, 0x78, 0x58, 0xbf, 0xd4, 0x9b, 0x1d, 0xef, 0xa3, 0x64, 0x2d, 0x2b, 0xf8, 0x26, + 0x01, 0x40, 0x85, 0x89, 0xa6, 0x48, 0xe9, 0x4d, 0x52, 0x62, 0xb2, 0x12, 0x5a, 0x60, 0xa2, 0xa5, + 0x86, 0x5b, 0x13, 0x91, 0x14, 0x44, 0x91, 0x74, 0x38, 0x96, 0x71, 0x01, 0x74, 0x3d, 0x96, 0x71, + 0x85, 0xa7, 0x64, 0xef, 0x22, 0x8b, 0x44, 0xea, 0xbf, 0x33, 0xd8, 0xa5, 0x77, 0x0e, 0x64, 0x47, + 0x3b, 0x28, 0xd9, 0xce, 0xc5, 0x05, 0xdd, 0x9e, 0xf3, 0x49, 0xa4, 0x1f, 0xa5, 0x6e, 0xcf, 0x7f, + 0x2c, 0xc1, 0x43, 0xa3, 0x0d, 0xea, 0xee, 0x78, 0x28, 0x92, 0x48, 0x3a, 0x3f, 0x34, 0xda, 0xa0, + 0xee, 0xae, 0x37, 0x6a, 0x0b, 0x3e, 0x34, 0x32, 0x81, 0x4c, 0x4f, 0x75, 0x93, 0x90, 0xa1, 0xfd, + 0x13, 0xda, 0x79, 0x12, 0x17, 0xdb, 0x42, 0x88, 0xb5, 0x78, 0x2a, 0xe2, 0xb8, 0x8b, 0x61, 0x7c, + 0x5b, 0xd4, 0xbf, 0x3a, 0x9a, 0xa5, 0x66, 0xeb, 0xee, 0xb8, 0x9a, 0xc4, 0xee, 0x53, 0x90, 0x08, + 0x57, 0xf0, 0xf0, 0xd2, 0x01, 0xda, 0x14, 0xcf, 0xef, 0xb0, 0xbb, 0x28, 0xf2, 0x10, 0xe1, 0xd4, + 0x88, 0x7e, 0xfa, 0x90, 0xb7, 0x1c, 0x24, 0x53, 0x4c, 0x81, 0x92, 0x0f, 0x23, 0x10, 0xfb, 0x04, + 0x5e, 0x55, 0x0c, 0xb1, 0x2c, 0xf9, 0x4e, 0x8a, 0x90, 0xf5, 0xff, 0x89, 0x0a, 0xf8, 0x72, 0xb2, + 0xae, 0x25, 0xd4, 0xa4, 0x16, 0x50, 0x40, 0x0a, 0x31, 0xb9, 0x02, 0x72, 0x40, 0x4a, 0x61, 0xaf, + 0xa4, 0x29, 0x3f, 0x64, 0x61, 0x3a, 0x09, 0xfa, 0x42, 0x4a, 0x99, 0x89, 0xa3, 0xa7, 0xf4, 0x7d, + 0x3d, 0x74, 0x38, 0x57, 0x17, 0x24, 0xda, 0xa5, 0xd5, 0x54, 0x34, 0x33, 0x96, 0x8c, 0x10, 0x2a, + 0x27, 0xa8, 0x73, 0x9d, 0x65, 0x58, 0x92, 0x78, 0xd9, 0xa4, 0x43, 0x97, 0x2c, 0xe8, 0x5c, 0x97, + 0x0f, 0x6a, 0x3e, 0xf4, 0xaa, 0x15, 0x87, 0x98, 0x52, 0xbb, 0xd2, 0x8d, 0x5a, 0xbd, 0xb7, 0x23, + 0x3d, 0xfc, 0x31, 0x84, 0x6f, 0x15, 0x23, 0x6f, 0x16, 0x8c, 0xa7, 0xe9, 0x32, 0xd4, 0x49, 0xfc, + 0x7f, 0x0a, 0x73, 0x28, 0x5b, 0x87, 0xed, 0x8e, 0xab, 0xee, 0x73, 0xa8, 0x00, 0x34, 0xe9, 0x1c, + 0x6a, 0x81, 0xa5, 0xe4, 0x26, 0x34, 0xe5, 0x69, 0xa6, 0xb0, 0x7c, 0x37, 0x03, 0x71, 0xfa, 0xbd, + 0x0f, 0x01, 0xcd, 0xca, 0x86, 0x2d, 0x1b, 0x1c, 0x01, 0x0a, 0x78, 0x4b, 0xba, 0x2d, 0x35, 0x0d, + 0x61, 0x36, 0x06, 0xf4, 0x01, 0x86, 0x53, 0x75, 0x28, 0xda, 0xf8, 0x5a, 0xa4, 0x31, 0xb5, 0xb3, + 0x3e, 0x14, 0xde, 0x15, 0x6a, 0x52, 0x93, 0x76, 0xdf, 0x16, 0x57, 0x50, 0x57, 0xdf, 0x96, 0x02, + 0x2d, 0x28, 0xd9, 0x4d, 0xe4, 0x18, 0x8c, 0x53, 0xa5, 0x77, 0x5e, 0x49, 0x8f, 0xfc, 0x52, 0x1f, + 0xbe, 0xa0, 0x0f, 0x8e, 0xeb, 0xdd, 0x9d, 0x5e, 0xd7, 0x9a, 0xc9, 0x5e, 0xee, 0x89, 0x24, 0x37, + 0xbc, 0x16, 0x4f, 0xe2, 0x3f, 0xa5, 0xc1, 0x18, 0x5f, 0x8e, 0xd3, 0x38, 0x0b, 0x1b, 0x63, 0x4d, + 0x49, 0xe7, 0x28, 0x15, 0x16, 0x10, 0x57, 0xf7, 0x78, 0x07, 0x48, 0xf3, 0xf1, 0x3a, 0xa7, 0x09, + 0xf4, 0x2f, 0x73, 0xfc, 0xbc, 0x7e, 0x8b, 0xe6, 0x62, 0xf4, 0xba, 0xd6, 0x14, 0xb8, 0xdb, 0x8f, + 0xb1, 0x0f, 0x35, 0x1b, 0x58, 0xff, 0x6b, 0xaa, 0x88, 0x41, 0x35, 0x19, 0x6b, 0x4d, 0x84, 0x49, + 0xf6, 0xe2, 0x96, 0x90, 0xb3, 0x22, 0x5a, 0x61, 0x18, 0x35, 0x8b, 0x9d, 0x63, 0xad, 0xd1, 0x06, + 0x71, 0xff, 0xcf, 0x04, 0x12, 0xe8, 0x4a, 0x7f, 0xe0, 0x1c, 0xb7, 0x9e, 0x5e, 0xd7, 0x9a, 0x02, + 0x66, 0x25, 0x41, 0x11, 0x49, 0x12, 0x44, 0x84, 0x37, 0x95, 0xbf, 0x92, 0xd0, 0xbd, 0xeb, 0xd5, + 0x7c, 0x62, 0x9c, 0xc2, 0xdd, 0x38, 0xd3, 0x52, 0x28, 0x6e, 0xdc, 0xcf, 0x5d, 0xe8, 0x60, 0x27, + 0x5d, 0x6e, 0x35, 0x05, 0x66, 0x75, 0x37, 0x3a, 0x2a, 0xf7, 0x44, 0x43, 0x2d, 0xea, 0x9b, 0xf8, + 0x98, 0x07, 0xdd, 0xf7, 0x4a, 0xab, 0x9a, 0xd8, 0x6d, 0x6c, 0xb1, 0xaa, 0x77, 0x2b, 0x61, 0x63, + 0xd8, 0xea, 0x6a, 0xed, 0x96, 0xc3, 0x01, 0xc8, 0xd5, 0x72, 0x38, 0xc2, 0x52, 0x71, 0x3b, 0x2f, + 0x69, 0x4a, 0x33, 0x5e, 0x9d, 0x39, 0x7b, 0x6e, 0xe2, 0xe3, 0x6e, 0x9a, 0x2d, 0x96, 0x6c, 0xd1, + 0x2a, 0xf4, 0xf1, 0x77, 0x33, 0xc7, 0xcf, 0xc2, 0x8f, 0xcc, 0xf1, 0xeb, 0xcc, 0xab, 0x9d, 0x96, + 0xbc, 0x1a, 0xdc, 0xe8, 0xfd, 0x52, 0xad, 0x0a, 0x44, 0x93, 0x8f, 0xab, 0x89, 0x96, 0x64, 0x65, + 0x88, 0xa0, 0x48, 0x8e, 0x0c, 0x00, 0xd7, 0x37, 0x59, 0x38, 0x0e, 0x43, 0xc0, 0xaa, 0x37, 0xb8, + 0x04, 0x8b, 0x10, 0x2a, 0x8b, 0x95, 0xd3, 0x1f, 0x08, 0xcb, 0x1c, 0x33, 0xcd, 0x9a, 0x65, 0x99, + 0x93, 0x57, 0x5c, 0x40, 0xc9, 0xa2, 0xb1, 0x46, 0xb5, 0x25, 0x14, 0xa5, 0x21, 0x05, 0xbe, 0x90, + 0xd0, 0xdd, 0x64, 0x7a, 0xaa, 0x61, 0x99, 0xac, 0x9c, 0x23, 0xfd, 0x9a, 0xf5, 0xc5, 0x08, 0xe4, + 0x9b, 0x9a, 0xf2, 0x22, 0xbb, 0x81, 0x86, 0xe4, 0x46, 0x90, 0x6a, 0x07, 0xd2, 0xb0, 0x42, 0xfe, + 0x1d, 0xef, 0x24, 0xf5, 0x93, 0xbf, 0xb4, 0xb3, 0xa6, 0xb4, 0x08, 0x57, 0xa6, 0x18, 0x05, 0x03, + 0x1e, 0x34, 0x6f, 0xbd, 0x9a, 0xaa, 0xde, 0xb5, 0x25, 0x16, 0x4f, 0xb2, 0xb3, 0x58, 0x92, 0x8b, + 0xc8, 0xe9, 0x26, 0xdd, 0x0e, 0x56, 0x28, 0x3e, 0xbb, 0x13, 0x34, 0x15, 0xd1, 0x2b, 0x92, 0xa6, + 0xb4, 0xe0, 0xa5, 0xd4, 0xf0, 0x9d, 0x3d, 0xa0, 0x1f, 0xd8, 0x9f, 0xbb, 0xd5, 0x9b, 0x1d, 0xbd, + 0x06, 0x4e, 0x6e, 0x90, 0xad, 0x96, 0x1f, 0xe9, 0x7b, 0xab, 0x01, 0x90, 0x4a, 0xa5, 0xb1, 0xe1, + 0x37, 0x24, 0x8f, 0xa4, 0x25, 0x02, 0x8e, 0x1c, 0x9a, 0xb4, 0x0f, 0xf0, 0x23, 0xc6, 0xcf, 0x38, + 0xf0, 0xa8, 0x61, 0x57, 0x32, 0x16, 0x4f, 0x56, 0x36, 0xb4, 0x26, 0x23, 0x51, 0x35, 0x99, 0xac, + 0xdc, 0xc3, 0xfe, 0x32, 0x98, 0x65, 0x1e, 0xce, 0x7f, 0xe6, 0xc4, 0x2a, 0x12, 0xcf, 0x72, 0x72, + 0x56, 0x89, 0x61, 0x2d, 0x97, 0x17, 0x09, 0x4d, 0x59, 0xf5, 0xf9, 0x9d, 0x61, 0x95, 0xf3, 0xa9, + 0x7e, 0x71, 0xac, 0xaa, 0xdc, 0x93, 0x12, 0x4e, 0xf5, 0x2f, 0x7a, 0xd0, 0xfc, 0xf5, 0x6a, 0x8a, + 0xc4, 0x1d, 0x65, 0x14, 0x42, 0xb6, 0x67, 0xec, 0xc4, 0x0a, 0x07, 0x38, 0xd7, 0x2d, 0xb9, 0x1b, + 0x38, 0x65, 0xdd, 0x25, 0x92, 0x64, 0x83, 0x5e, 0x31, 0xf1, 0x0c, 0xea, 0xfa, 0xfe, 0x4e, 0x78, + 0x0d, 0x40, 0x69, 0xee, 0x39, 0x31, 0x71, 0xa0, 0xc7, 0x1b, 0x2c, 0x06, 0xaa, 0x82, 0x1e, 0x78, + 0x0d, 0x7f, 0x9a, 0x39, 0xf3, 0x2e, 0xb0, 0xd8, 0x80, 0xb0, 0x31, 0x14, 0x2e, 0xa2, 0x0b, 0x2c, + 0x49, 0x28, 0x1f, 0x19, 0x9b, 0x20, 0x0d, 0x36, 0xfe, 0x57, 0x12, 0x9a, 0x5b, 0xab, 0x36, 0xb4, + 0x36, 0x51, 0x71, 0x08, 0x25, 0x77, 0x39, 0x3d, 0xf8, 0xb6, 0x00, 0x14, 0x78, 0xf0, 0x9d, 0x07, + 0x47, 0x99, 0x12, 0x22, 0x33, 0x60, 0xee, 0xf2, 0xbe, 0xdc, 0xd0, 0x51, 0x3b, 0xe6, 0x5e, 0xd7, + 0x1a, 0x08, 0x28, 0xe0, 0x7f, 0xc8, 0x9d, 0x9a, 0x46, 0xe3, 0x8b, 0x86, 0x61, 0x7f, 0x97, 0x6a, + 0x8a, 0x2d, 0xaf, 0xac, 0xb3, 0xa6, 0xb8, 0xa5, 0x9f, 0x75, 0xd6, 0x14, 0xd7, 0xdc, 0xd0, 0xfe, + 0x53, 0x12, 0x39, 0x76, 0x82, 0x13, 0x88, 0xba, 0x7a, 0x63, 0x3b, 0x70, 0xe8, 0x23, 0xfd, 0xe4, + 0x00, 0x4f, 0x5f, 0x4b, 0x0f, 0xc3, 0x27, 0x85, 0x20, 0xa4, 0xbe, 0xec, 0x7f, 0xc9, 0x81, 0xd4, + 0xd7, 0xd4, 0x86, 0xca, 0xb0, 0xf8, 0xf5, 0x64, 0x25, 0x49, 0x38, 0x57, 0xb9, 0x87, 0xe7, 0xb6, + 0x7b, 0x93, 0xfe, 0x5d, 0xd7, 0xf8, 0x26, 0x64, 0xc3, 0x58, 0xaf, 0x92, 0xa4, 0x3a, 0x43, 0x1e, + 0x84, 0xed, 0xf9, 0x72, 0xed, 0x8b, 0x34, 0xd7, 0xe4, 0xcb, 0xde, 0x40, 0x31, 0xa0, 0x94, 0x19, + 0x7f, 0x22, 0x69, 0x4a, 0x14, 0x3f, 0x09, 0xa4, 0x82, 0xee, 0xf3, 0x44, 0xc0, 0x99, 0xb3, 0x7d, + 0xb6, 0xd4, 0x15, 0x14, 0x84, 0xb8, 0x0e, 0x78, 0xbf, 0x5c, 0x33, 0xc2, 0xb6, 0x97, 0xfc, 0x6b, + 0x5d, 0xd8, 0x56, 0x88, 0x4f, 0x6c, 0x3e, 0x22, 0xa9, 0xeb, 0x6a, 0x8c, 0xfd, 0x88, 0xc1, 0xb1, + 0x0f, 0x3c, 0xe8, 0x9e, 0xfc, 0xc4, 0x91, 0x8e, 0xf1, 0x11, 0x9d, 0x52, 0x7b, 0x3a, 0xc6, 0x47, + 0x74, 0x4c, 0xe5, 0x49, 0xb2, 0x85, 0xec, 0xc0, 0x58, 0x4c, 0xb4, 0x0c, 0x93, 0xac, 0xb7, 0xde, + 0x92, 0x7c, 0x99, 0xa5, 0xc1, 0x2b, 0xc8, 0x05, 0x76, 0x97, 0x7a, 0x3d, 0x3d, 0x4a, 0xdf, 0xc5, + 0x67, 0x0e, 0x1e, 0xcb, 0xb5, 0x77, 0xc2, 0x84, 0x4d, 0x78, 0xb4, 0xd1, 0xbf, 0xfe, 0xab, 0xf2, + 0x28, 0x09, 0x09, 0x57, 0x68, 0x98, 0x88, 0x7b, 0x6d, 0xd9, 0xf8, 0x1c, 0x97, 0xcb, 0x8e, 0xa9, + 0xfe, 0xbc, 0xcb, 0x8a, 0x80, 0xa4, 0x8c, 0xfa, 0xdf, 0x24, 0x4d, 0x39, 0x2c, 0x61, 0x19, 0xb6, + 0x9f, 0x75, 0xf5, 0x95, 0x75, 0xf5, 0x6d, 0x6b, 0xcc, 0x2c, 0xb7, 0xd9, 0x4b, 0x5d, 0xa0, 0x40, + 0x4c, 0x7c, 0xcc, 0x9c, 0x81, 0xde, 0xef, 0x51, 0x4e, 0x92, 0xfc, 0x05, 0x7c, 0x2e, 0xf2, 0xd1, + 0x79, 0x8a, 0xa4, 0xa8, 0xc9, 0x7d, 0xfe, 0xae, 0xde, 0x79, 0x3e, 0xdb, 0xdf, 0x51, 0x5c, 0xc7, + 0x82, 0xae, 0x56, 0xfb, 0x9f, 0xfb, 0x12, 0x0c, 0x35, 0xf8, 0x58, 0x19, 0x36, 0x08, 0x34, 0xd8, + 0xd8, 0xe1, 0x41, 0xf3, 0x84, 0xdb, 0xe2, 0x4d, 0x24, 0xaf, 0xfd, 0xba, 0xe6, 0x90, 0x83, 0xd1, + 0x72, 0x04, 0x73, 0x35, 0x5a, 0x2e, 0xd0, 0x82, 0xdf, 0x97, 0x82, 0xe7, 0x41, 0xbc, 0xea, 0xf4, + 0x48, 0x5f, 0x76, 0xb4, 0x23, 0x3d, 0x7a, 0x1d, 0x26, 0x10, 0x6f, 0x39, 0x2f, 0x66, 0xf1, 0xc2, + 0x88, 0x0f, 0x62, 0xb6, 0xeb, 0x60, 0xe6, 0xd4, 0x27, 0x34, 0x9f, 0xbf, 0x39, 0xd5, 0xd4, 0xf8, + 0x9f, 0x2f, 0x66, 0xf7, 0xdb, 0xa6, 0x26, 0x92, 0xb0, 0x1a, 0xa7, 0x7f, 0xbd, 0x59, 0x09, 0x49, + 0xfc, 0x89, 0x34, 0x1d, 0xe2, 0xaf, 0xa5, 0x26, 0x65, 0x83, 0x23, 0xd8, 0x24, 0xaf, 0xa5, 0xdc, + 0xd8, 0x70, 0x44, 0xd2, 0x94, 0xe7, 0xb0, 0x79, 0x49, 0x6d, 0x61, 0xc3, 0x12, 0x33, 0x32, 0x9d, + 0x40, 0x7f, 0xb6, 0xbf, 0x43, 0x84, 0x22, 0x2c, 0xd8, 0xec, 0xad, 0xfb, 0x6a, 0x2c, 0xa8, 0xdc, + 0x03, 0x7f, 0xd0, 0x2d, 0xca, 0x41, 0x0f, 0x9a, 0x27, 0xdc, 0xba, 0x16, 0xe2, 0x86, 0x23, 0x98, + 0x2b, 0x37, 0x5c, 0xa0, 0x29, 0x37, 0xfa, 0x80, 0x1b, 0x70, 0x69, 0x6b, 0xe3, 0x06, 0x2f, 0x9e, + 0x8c, 0x1b, 0x1b, 0x02, 0x5f, 0x1f, 0x37, 0x70, 0xa7, 0x07, 0xdd, 0xc7, 0x4f, 0xe7, 0x04, 0x46, + 0xb8, 0x1f, 0xe1, 0xd9, 0xd9, 0xf0, 0x78, 0x51, 0xb0, 0x82, 0x48, 0xbc, 0x28, 0xec, 0xe5, 0x2c, + 0x4c, 0x58, 0xea, 0x76, 0xbf, 0x98, 0x07, 0x08, 0x7c, 0xc0, 0x5f, 0x23, 0x1f, 0xce, 0x49, 0x68, + 0xc6, 0x77, 0xd5, 0x50, 0x73, 0x6a, 0xa7, 0x3d, 0x4d, 0x0d, 0x94, 0xbb, 0xee, 0x55, 0x59, 0xb5, + 0x19, 0x86, 0x71, 0x35, 0x2e, 0xcb, 0x9c, 0x3a, 0x6c, 0xac, 0x18, 0xf7, 0x9e, 0xd7, 0x47, 0x6e, + 0x40, 0xec, 0x73, 0x70, 0x69, 0xf7, 0xba, 0xd6, 0x10, 0x9a, 0x16, 0xe2, 0x07, 0x1c, 0x68, 0xda, + 0x49, 0xbe, 0x50, 0xdd, 0x2b, 0x69, 0x4a, 0xb7, 0x84, 0x7d, 0x68, 0x01, 0xbd, 0xa5, 0xf2, 0xd1, + 0x54, 0xa3, 0x3e, 0xa5, 0xbe, 0xce, 0x57, 0x1b, 0x0b, 0xcb, 0x25, 0x2b, 0x57, 0xac, 0x5a, 0xb1, + 0xd2, 0x8f, 0x2a, 0x1b, 0xc2, 0xc9, 0x50, 0x3c, 0x52, 0xd9, 0xb6, 0x3a, 0x20, 0x79, 0xe4, 0x7b, + 0x42, 0xf1, 0x78, 0x73, 0x24, 0x4c, 0x0e, 0x96, 0x2a, 0x7f, 0x96, 0x8c, 0x45, 0xab, 0x6c, 0x25, + 0x3f, 0x7c, 0x04, 0x3d, 0x8c, 0x90, 0x12, 0x8f, 0x6c, 0x50, 0x77, 0x2b, 0xad, 0xa9, 0x9d, 0xf8, + 0xbe, 0x52, 0x8f, 0x77, 0x8e, 0xf1, 0x57, 0x2c, 0x11, 0x79, 0x83, 0xc0, 0xf9, 0x3c, 0x0d, 0xf7, + 0xa0, 0xbb, 0x2d, 0x40, 0x7f, 0xd0, 0x30, 0x83, 0xe4, 0x29, 0x7f, 0xe2, 0x7f, 0x04, 0x00, 0x00, + 0xff, 0xff, 0xbe, 0x98, 0x0d, 0x37, 0xda, 0xd4, 0x03, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -31013,7 +31039,7 @@ const _ = grpc.SupportPackageIsVersion4 // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type ClusterManagerClient interface { - // * cluster management + //* cluster management CreateCluster(ctx context.Context, in *CreateClusterReq, opts ...grpc.CallOption) (*CreateClusterResp, error) RetryCreateClusterTask(ctx context.Context, in *RetryCreateClusterReq, opts ...grpc.CallOption) (*RetryCreateClusterResp, error) CheckCloudKubeConfig(ctx context.Context, in *KubeConfigReq, opts ...grpc.CallOption) (*KubeConfigResp, error) @@ -31034,7 +31060,7 @@ type ClusterManagerClient interface { CreateVirtualCluster(ctx context.Context, in *CreateVirtualClusterReq, opts ...grpc.CallOption) (*CreateVirtualClusterResp, error) DeleteVirtualCluster(ctx context.Context, in *DeleteVirtualClusterReq, opts ...grpc.CallOption) (*DeleteVirtualClusterResp, error) UpdateVirtualClusterQuota(ctx context.Context, in *UpdateVirtualClusterQuotaReq, opts ...grpc.CallOption) (*UpdateVirtualClusterQuotaResp, error) - // * node management + //* node management GetNode(ctx context.Context, in *GetNodeRequest, opts ...grpc.CallOption) (*GetNodeResponse, error) GetNodeInfo(ctx context.Context, in *GetNodeInfoRequest, opts ...grpc.CallOption) (*GetNodeInfoResponse, error) RecordNodeInfo(ctx context.Context, in *RecordNodeInfoRequest, opts ...grpc.CallOption) (*CommonResp, error) @@ -31046,28 +31072,28 @@ type ClusterManagerClient interface { UpdateNodeLabels(ctx context.Context, in *UpdateNodeLabelsRequest, opts ...grpc.CallOption) (*UpdateNodeLabelsResponse, error) UpdateNodeAnnotations(ctx context.Context, in *UpdateNodeAnnotationsRequest, opts ...grpc.CallOption) (*UpdateNodeAnnotationsResponse, error) UpdateNodeTaints(ctx context.Context, in *UpdateNodeTaintsRequest, opts ...grpc.CallOption) (*UpdateNodeTaintsResponse, error) - // * cluster credential management + //* cluster credential management GetClusterCredential(ctx context.Context, in *GetClusterCredentialReq, opts ...grpc.CallOption) (*GetClusterCredentialResp, error) UpdateClusterCredential(ctx context.Context, in *UpdateClusterCredentialReq, opts ...grpc.CallOption) (*UpdateClusterCredentialResp, error) DeleteClusterCredential(ctx context.Context, in *DeleteClusterCredentialReq, opts ...grpc.CallOption) (*DeleteClusterCredentialResp, error) ListClusterCredential(ctx context.Context, in *ListClusterCredentialReq, opts ...grpc.CallOption) (*ListClusterCredentialResp, error) - // * federation cluster management + //* federation cluster management InitFederationCluster(ctx context.Context, in *InitFederationClusterReq, opts ...grpc.CallOption) (*InitFederationClusterResp, error) AddFederatedCluster(ctx context.Context, in *AddFederatedClusterReq, opts ...grpc.CallOption) (*AddFederatedClusterResp, error) - // * Cloud information management * + //* Cloud information management * CreateCloud(ctx context.Context, in *CreateCloudRequest, opts ...grpc.CallOption) (*CreateCloudResponse, error) UpdateCloud(ctx context.Context, in *UpdateCloudRequest, opts ...grpc.CallOption) (*UpdateCloudResponse, error) DeleteCloud(ctx context.Context, in *DeleteCloudRequest, opts ...grpc.CallOption) (*DeleteCloudResponse, error) GetCloud(ctx context.Context, in *GetCloudRequest, opts ...grpc.CallOption) (*GetCloudResponse, error) ListCloud(ctx context.Context, in *ListCloudRequest, opts ...grpc.CallOption) (*ListCloudResponse, error) - // * Cloud VPC information management * + //* Cloud VPC information management * CreateCloudVPC(ctx context.Context, in *CreateCloudVPCRequest, opts ...grpc.CallOption) (*CreateCloudVPCResponse, error) UpdateCloudVPC(ctx context.Context, in *UpdateCloudVPCRequest, opts ...grpc.CallOption) (*UpdateCloudVPCResponse, error) DeleteCloudVPC(ctx context.Context, in *DeleteCloudVPCRequest, opts ...grpc.CallOption) (*DeleteCloudVPCResponse, error) ListCloudVPC(ctx context.Context, in *ListCloudVPCRequest, opts ...grpc.CallOption) (*ListCloudVPCResponse, error) ListCloudRegions(ctx context.Context, in *ListCloudRegionsRequest, opts ...grpc.CallOption) (*ListCloudRegionsResponse, error) GetVPCCidr(ctx context.Context, in *GetVPCCidrRequest, opts ...grpc.CallOption) (*GetVPCCidrResponse, error) - // * NodeGroup information management * + //* NodeGroup information management * CreateNodeGroup(ctx context.Context, in *CreateNodeGroupRequest, opts ...grpc.CallOption) (*CreateNodeGroupResponse, error) UpdateNodeGroup(ctx context.Context, in *UpdateNodeGroupRequest, opts ...grpc.CallOption) (*UpdateNodeGroupResponse, error) DeleteNodeGroup(ctx context.Context, in *DeleteNodeGroupRequest, opts ...grpc.CallOption) (*DeleteNodeGroupResponse, error) @@ -31085,14 +31111,14 @@ type ClusterManagerClient interface { UpdateGroupMinMaxSize(ctx context.Context, in *UpdateGroupMinMaxSizeRequest, opts ...grpc.CallOption) (*UpdateGroupMinMaxSizeResponse, error) EnableNodeGroupAutoScale(ctx context.Context, in *EnableNodeGroupAutoScaleRequest, opts ...grpc.CallOption) (*EnableNodeGroupAutoScaleResponse, error) DisableNodeGroupAutoScale(ctx context.Context, in *DisableNodeGroupAutoScaleRequest, opts ...grpc.CallOption) (*DisableNodeGroupAutoScaleResponse, error) - // * Task information management * + //* Task information management * CreateTask(ctx context.Context, in *CreateTaskRequest, opts ...grpc.CallOption) (*CreateTaskResponse, error) RetryTask(ctx context.Context, in *RetryTaskRequest, opts ...grpc.CallOption) (*RetryTaskResponse, error) UpdateTask(ctx context.Context, in *UpdateTaskRequest, opts ...grpc.CallOption) (*UpdateTaskResponse, error) DeleteTask(ctx context.Context, in *DeleteTaskRequest, opts ...grpc.CallOption) (*DeleteTaskResponse, error) GetTask(ctx context.Context, in *GetTaskRequest, opts ...grpc.CallOption) (*GetTaskResponse, error) ListTask(ctx context.Context, in *ListTaskRequest, opts ...grpc.CallOption) (*ListTaskResponse, error) - // * ClusterAutoScalingOption information management * + //* ClusterAutoScalingOption information management * CreateAutoScalingOption(ctx context.Context, in *CreateAutoScalingOptionRequest, opts ...grpc.CallOption) (*CreateAutoScalingOptionResponse, error) UpdateAutoScalingOption(ctx context.Context, in *UpdateAutoScalingOptionRequest, opts ...grpc.CallOption) (*UpdateAutoScalingOptionResponse, error) DeleteAutoScalingOption(ctx context.Context, in *DeleteAutoScalingOptionRequest, opts ...grpc.CallOption) (*DeleteAutoScalingOptionResponse, error) @@ -32240,7 +32266,7 @@ func (c *clusterManagerClient) Health(ctx context.Context, in *HealthRequest, op // ClusterManagerServer is the server API for ClusterManager service. type ClusterManagerServer interface { - // * cluster management + //* cluster management CreateCluster(context.Context, *CreateClusterReq) (*CreateClusterResp, error) RetryCreateClusterTask(context.Context, *RetryCreateClusterReq) (*RetryCreateClusterResp, error) CheckCloudKubeConfig(context.Context, *KubeConfigReq) (*KubeConfigResp, error) @@ -32261,7 +32287,7 @@ type ClusterManagerServer interface { CreateVirtualCluster(context.Context, *CreateVirtualClusterReq) (*CreateVirtualClusterResp, error) DeleteVirtualCluster(context.Context, *DeleteVirtualClusterReq) (*DeleteVirtualClusterResp, error) UpdateVirtualClusterQuota(context.Context, *UpdateVirtualClusterQuotaReq) (*UpdateVirtualClusterQuotaResp, error) - // * node management + //* node management GetNode(context.Context, *GetNodeRequest) (*GetNodeResponse, error) GetNodeInfo(context.Context, *GetNodeInfoRequest) (*GetNodeInfoResponse, error) RecordNodeInfo(context.Context, *RecordNodeInfoRequest) (*CommonResp, error) @@ -32273,28 +32299,28 @@ type ClusterManagerServer interface { UpdateNodeLabels(context.Context, *UpdateNodeLabelsRequest) (*UpdateNodeLabelsResponse, error) UpdateNodeAnnotations(context.Context, *UpdateNodeAnnotationsRequest) (*UpdateNodeAnnotationsResponse, error) UpdateNodeTaints(context.Context, *UpdateNodeTaintsRequest) (*UpdateNodeTaintsResponse, error) - // * cluster credential management + //* cluster credential management GetClusterCredential(context.Context, *GetClusterCredentialReq) (*GetClusterCredentialResp, error) UpdateClusterCredential(context.Context, *UpdateClusterCredentialReq) (*UpdateClusterCredentialResp, error) DeleteClusterCredential(context.Context, *DeleteClusterCredentialReq) (*DeleteClusterCredentialResp, error) ListClusterCredential(context.Context, *ListClusterCredentialReq) (*ListClusterCredentialResp, error) - // * federation cluster management + //* federation cluster management InitFederationCluster(context.Context, *InitFederationClusterReq) (*InitFederationClusterResp, error) AddFederatedCluster(context.Context, *AddFederatedClusterReq) (*AddFederatedClusterResp, error) - // * Cloud information management * + //* Cloud information management * CreateCloud(context.Context, *CreateCloudRequest) (*CreateCloudResponse, error) UpdateCloud(context.Context, *UpdateCloudRequest) (*UpdateCloudResponse, error) DeleteCloud(context.Context, *DeleteCloudRequest) (*DeleteCloudResponse, error) GetCloud(context.Context, *GetCloudRequest) (*GetCloudResponse, error) ListCloud(context.Context, *ListCloudRequest) (*ListCloudResponse, error) - // * Cloud VPC information management * + //* Cloud VPC information management * CreateCloudVPC(context.Context, *CreateCloudVPCRequest) (*CreateCloudVPCResponse, error) UpdateCloudVPC(context.Context, *UpdateCloudVPCRequest) (*UpdateCloudVPCResponse, error) DeleteCloudVPC(context.Context, *DeleteCloudVPCRequest) (*DeleteCloudVPCResponse, error) ListCloudVPC(context.Context, *ListCloudVPCRequest) (*ListCloudVPCResponse, error) ListCloudRegions(context.Context, *ListCloudRegionsRequest) (*ListCloudRegionsResponse, error) GetVPCCidr(context.Context, *GetVPCCidrRequest) (*GetVPCCidrResponse, error) - // * NodeGroup information management * + //* NodeGroup information management * CreateNodeGroup(context.Context, *CreateNodeGroupRequest) (*CreateNodeGroupResponse, error) UpdateNodeGroup(context.Context, *UpdateNodeGroupRequest) (*UpdateNodeGroupResponse, error) DeleteNodeGroup(context.Context, *DeleteNodeGroupRequest) (*DeleteNodeGroupResponse, error) @@ -32312,14 +32338,14 @@ type ClusterManagerServer interface { UpdateGroupMinMaxSize(context.Context, *UpdateGroupMinMaxSizeRequest) (*UpdateGroupMinMaxSizeResponse, error) EnableNodeGroupAutoScale(context.Context, *EnableNodeGroupAutoScaleRequest) (*EnableNodeGroupAutoScaleResponse, error) DisableNodeGroupAutoScale(context.Context, *DisableNodeGroupAutoScaleRequest) (*DisableNodeGroupAutoScaleResponse, error) - // * Task information management * + //* Task information management * CreateTask(context.Context, *CreateTaskRequest) (*CreateTaskResponse, error) RetryTask(context.Context, *RetryTaskRequest) (*RetryTaskResponse, error) UpdateTask(context.Context, *UpdateTaskRequest) (*UpdateTaskResponse, error) DeleteTask(context.Context, *DeleteTaskRequest) (*DeleteTaskResponse, error) GetTask(context.Context, *GetTaskRequest) (*GetTaskResponse, error) ListTask(context.Context, *ListTaskRequest) (*ListTaskResponse, error) - // * ClusterAutoScalingOption information management * + //* ClusterAutoScalingOption information management * CreateAutoScalingOption(context.Context, *CreateAutoScalingOptionRequest) (*CreateAutoScalingOptionResponse, error) UpdateAutoScalingOption(context.Context, *UpdateAutoScalingOptionRequest) (*UpdateAutoScalingOptionResponse, error) DeleteAutoScalingOption(context.Context, *DeleteAutoScalingOptionRequest) (*DeleteAutoScalingOptionResponse, error) diff --git a/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.pb.validate.go b/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.pb.validate.go index d8c1abf54f..9f135514de 100644 --- a/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.pb.validate.go +++ b/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.pb.validate.go @@ -11,11 +11,12 @@ import ( "net/mail" "net/url" "regexp" + "sort" "strings" "time" "unicode/utf8" - "github.com/golang/protobuf/ptypes" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -30,19 +31,31 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = ptypes.DynamicAny{} + _ = anypb.Any{} + _ = sort.Sort ) -// define the regex for a UUID once up-front -var _clustermanager_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") - // Validate checks the field values on Cluster with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *Cluster) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on Cluster with the rules defined in the +// proto definition for this message. If any rules are violated, the result is +// a list of violation errors wrapped in ClusterMultiError, or nil if none found. +func (m *Cluster) ValidateAll() error { + return m.validate(true) +} + +func (m *Cluster) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ClusterID // no validation rules for ClusterName @@ -75,62 +88,168 @@ func (m *Cluster) Validate() error { // no validation rules for UpdateTime - for key, val := range m.GetBcsAddons() { - _ = val - - // no validation rules for BcsAddons[key] - - if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return ClusterValidationError{ - field: fmt.Sprintf("BcsAddons[%v]", key), - reason: "embedded message failed validation", - cause: err, + { + sorted_keys := make([]string, len(m.GetBcsAddons())) + i := 0 + for key := range m.GetBcsAddons() { + sorted_keys[i] = key + i++ + } + sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) + for _, key := range sorted_keys { + val := m.GetBcsAddons()[key] + _ = val + + // no validation rules for BcsAddons[key] + + if all { + switch v := interface{}(val).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ClusterValidationError{ + field: fmt.Sprintf("BcsAddons[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ClusterValidationError{ + field: fmt.Sprintf("BcsAddons[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return ClusterValidationError{ + field: fmt.Sprintf("BcsAddons[%v]", key), + reason: "embedded message failed validation", + cause: err, + } } } - } + } } - for key, val := range m.GetExtraAddons() { - _ = val - - // no validation rules for ExtraAddons[key] - - if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return ClusterValidationError{ - field: fmt.Sprintf("ExtraAddons[%v]", key), - reason: "embedded message failed validation", - cause: err, + { + sorted_keys := make([]string, len(m.GetExtraAddons())) + i := 0 + for key := range m.GetExtraAddons() { + sorted_keys[i] = key + i++ + } + sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) + for _, key := range sorted_keys { + val := m.GetExtraAddons()[key] + _ = val + + // no validation rules for ExtraAddons[key] + + if all { + switch v := interface{}(val).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ClusterValidationError{ + field: fmt.Sprintf("ExtraAddons[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ClusterValidationError{ + field: fmt.Sprintf("ExtraAddons[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return ClusterValidationError{ + field: fmt.Sprintf("ExtraAddons[%v]", key), + reason: "embedded message failed validation", + cause: err, + } } } - } + } } // no validation rules for SystemID // no validation rules for ManageType - for key, val := range m.GetMaster() { - _ = val + { + sorted_keys := make([]string, len(m.GetMaster())) + i := 0 + for key := range m.GetMaster() { + sorted_keys[i] = key + i++ + } + sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) + for _, key := range sorted_keys { + val := m.GetMaster()[key] + _ = val + + // no validation rules for Master[key] + + if all { + switch v := interface{}(val).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ClusterValidationError{ + field: fmt.Sprintf("Master[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ClusterValidationError{ + field: fmt.Sprintf("Master[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return ClusterValidationError{ + field: fmt.Sprintf("Master[%v]", key), + reason: "embedded message failed validation", + cause: err, + } + } + } - // no validation rules for Master[key] + } + } - if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetNetworkSettings()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ClusterValidationError{ + field: "NetworkSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: if err := v.Validate(); err != nil { - return ClusterValidationError{ - field: fmt.Sprintf("Master[%v]", key), + errors = append(errors, ClusterValidationError{ + field: "NetworkSettings", reason: "embedded message failed validation", cause: err, - } + }) } } - - } - - if v, ok := interface{}(m.GetNetworkSettings()).(interface{ Validate() error }); ok { + } else if v, ok := interface{}(m.GetNetworkSettings()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterValidationError{ field: "NetworkSettings", @@ -140,7 +259,26 @@ func (m *Cluster) Validate() error { } } - if v, ok := interface{}(m.GetClusterBasicSettings()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetClusterBasicSettings()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ClusterValidationError{ + field: "ClusterBasicSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ClusterValidationError{ + field: "ClusterBasicSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetClusterBasicSettings()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterValidationError{ field: "ClusterBasicSettings", @@ -150,7 +288,26 @@ func (m *Cluster) Validate() error { } } - if v, ok := interface{}(m.GetClusterAdvanceSettings()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetClusterAdvanceSettings()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ClusterValidationError{ + field: "ClusterAdvanceSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ClusterValidationError{ + field: "ClusterAdvanceSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetClusterAdvanceSettings()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterValidationError{ field: "ClusterAdvanceSettings", @@ -160,7 +317,26 @@ func (m *Cluster) Validate() error { } } - if v, ok := interface{}(m.GetNodeSettings()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetNodeSettings()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ClusterValidationError{ + field: "NodeSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ClusterValidationError{ + field: "NodeSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetNodeSettings()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterValidationError{ field: "NodeSettings", @@ -171,19 +347,27 @@ func (m *Cluster) Validate() error { } if _, ok := _Cluster_Status_InLookup[m.GetStatus()]; !ok { - return ClusterValidationError{ + err := ClusterValidationError{ field: "Status", reason: "value must be in list [CREATING RUNNING DELETING FALURE INITIALIZATION]", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Updater if _, ok := _Cluster_NetworkType_InLookup[m.GetNetworkType()]; !ok { - return ClusterValidationError{ + err := ClusterValidationError{ field: "NetworkType", reason: "value must be in list [underlay overlay ]", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for AutoGenerateMasterNodes @@ -191,7 +375,26 @@ func (m *Cluster) Validate() error { for idx, item := range m.GetTemplate() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ClusterValidationError{ + field: fmt.Sprintf("Template[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ClusterValidationError{ + field: fmt.Sprintf("Template[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterValidationError{ field: fmt.Sprintf("Template[%v]", idx), @@ -223,9 +426,29 @@ func (m *Cluster) Validate() error { // no validation rules for CloudAccountID + if len(errors) > 0 { + return ClusterMultiError(errors) + } + return nil } +// ClusterMultiError is an error wrapping multiple validation errors returned +// by Cluster.ValidateAll() if the designated constraints aren't met. +type ClusterMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ClusterMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ClusterMultiError) AllErrors() []error { return m } + // ClusterValidationError is the validation error returned by Cluster.Validate // if the designated constraints aren't met. type ClusterValidationError struct { @@ -295,12 +518,26 @@ var _Cluster_NetworkType_InLookup = map[string]struct{}{ } // Validate checks the field values on Node with the rules defined in the proto -// definition for this message. If any rules are violated, an error is returned. +// definition for this message. If any rules are violated, the first error +// encountered is returned, or nil if there are no violations. func (m *Node) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on Node with the rules defined in the +// proto definition for this message. If any rules are violated, the result is +// a list of violation errors wrapped in NodeMultiError, or nil if none found. +func (m *Node) ValidateAll() error { + return m.validate(true) +} + +func (m *Node) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for NodeID // no validation rules for InnerIP @@ -343,9 +580,29 @@ func (m *Node) Validate() error { // no validation rules for TaskID + if len(errors) > 0 { + return NodeMultiError(errors) + } + return nil } +// NodeMultiError is an error wrapping multiple validation errors returned by +// Node.ValidateAll() if the designated constraints aren't met. +type NodeMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m NodeMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m NodeMultiError) AllErrors() []error { return m } + // NodeValidationError is the validation error returned by Node.Validate if the // designated constraints aren't met. type NodeValidationError struct { @@ -401,13 +658,27 @@ var _ interface { } = NodeValidationError{} // Validate checks the field values on NetworkSetting with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *NetworkSetting) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on NetworkSetting with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in NetworkSettingMultiError, +// or nil if none found. +func (m *NetworkSetting) ValidateAll() error { + return m.validate(true) +} + +func (m *NetworkSetting) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ClusterIPv4CIDR // no validation rules for ServiceIPv4CIDR @@ -418,7 +689,26 @@ func (m *NetworkSetting) Validate() error { // no validation rules for EnableVPCCni - if v, ok := interface{}(m.GetSubnetSource()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetSubnetSource()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NetworkSettingValidationError{ + field: "SubnetSource", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NetworkSettingValidationError{ + field: "SubnetSource", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetSubnetSource()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NetworkSettingValidationError{ field: "SubnetSource", @@ -434,9 +724,30 @@ func (m *NetworkSetting) Validate() error { // no validation rules for CidrStep + if len(errors) > 0 { + return NetworkSettingMultiError(errors) + } + return nil } +// NetworkSettingMultiError is an error wrapping multiple validation errors +// returned by NetworkSetting.ValidateAll() if the designated constraints +// aren't met. +type NetworkSettingMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m NetworkSettingMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m NetworkSettingMultiError) AllErrors() []error { return m } + // NetworkSettingValidationError is the validation error returned by // NetworkSetting.Validate if the designated constraints aren't met. type NetworkSettingValidationError struct { @@ -492,14 +803,47 @@ var _ interface { } = NetworkSettingValidationError{} // Validate checks the field values on SubnetSource with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *SubnetSource) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on SubnetSource with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in SubnetSourceMultiError, or +// nil if none found. +func (m *SubnetSource) ValidateAll() error { + return m.validate(true) +} + +func (m *SubnetSource) validate(all bool) error { if m == nil { return nil } - if v, ok := interface{}(m.GetNew()).(interface{ Validate() error }); ok { + var errors []error + + if all { + switch v := interface{}(m.GetNew()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, SubnetSourceValidationError{ + field: "New", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, SubnetSourceValidationError{ + field: "New", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetNew()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return SubnetSourceValidationError{ field: "New", @@ -509,7 +853,26 @@ func (m *SubnetSource) Validate() error { } } - if v, ok := interface{}(m.GetExisted()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetExisted()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, SubnetSourceValidationError{ + field: "Existed", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, SubnetSourceValidationError{ + field: "Existed", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetExisted()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return SubnetSourceValidationError{ field: "Existed", @@ -519,9 +882,29 @@ func (m *SubnetSource) Validate() error { } } + if len(errors) > 0 { + return SubnetSourceMultiError(errors) + } + return nil } +// SubnetSourceMultiError is an error wrapping multiple validation errors +// returned by SubnetSource.ValidateAll() if the designated constraints aren't met. +type SubnetSourceMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m SubnetSourceMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m SubnetSourceMultiError) AllErrors() []error { return m } + // SubnetSourceValidationError is the validation error returned by // SubnetSource.Validate if the designated constraints aren't met. type SubnetSourceValidationError struct { @@ -577,16 +960,51 @@ var _ interface { } = SubnetSourceValidationError{} // Validate checks the field values on ExistedSubnetIDs with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *ExistedSubnetIDs) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ExistedSubnetIDs with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ExistedSubnetIDsMultiError, or nil if none found. +func (m *ExistedSubnetIDs) ValidateAll() error { + return m.validate(true) +} + +func (m *ExistedSubnetIDs) validate(all bool) error { if m == nil { return nil } + var errors []error + + if len(errors) > 0 { + return ExistedSubnetIDsMultiError(errors) + } + return nil } +// ExistedSubnetIDsMultiError is an error wrapping multiple validation errors +// returned by ExistedSubnetIDs.ValidateAll() if the designated constraints +// aren't met. +type ExistedSubnetIDsMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ExistedSubnetIDsMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ExistedSubnetIDsMultiError) AllErrors() []error { return m } + // ExistedSubnetIDsValidationError is the validation error returned by // ExistedSubnetIDs.Validate if the designated constraints aren't met. type ExistedSubnetIDsValidationError struct { @@ -642,19 +1060,54 @@ var _ interface { } = ExistedSubnetIDsValidationError{} // Validate checks the field values on NewSubnet with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *NewSubnet) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on NewSubnet with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in NewSubnetMultiError, or nil +// if none found. +func (m *NewSubnet) ValidateAll() error { + return m.validate(true) +} + +func (m *NewSubnet) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Mask // no validation rules for Zone + if len(errors) > 0 { + return NewSubnetMultiError(errors) + } + return nil } +// NewSubnetMultiError is an error wrapping multiple validation errors returned +// by NewSubnet.ValidateAll() if the designated constraints aren't met. +type NewSubnetMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m NewSubnetMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m NewSubnetMultiError) AllErrors() []error { return m } + // NewSubnetValidationError is the validation error returned by // NewSubnet.Validate if the designated constraints aren't met. type NewSubnetValidationError struct { @@ -711,12 +1164,26 @@ var _ interface { // Validate checks the field values on ClusterBasicSetting with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ClusterBasicSetting) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ClusterBasicSetting with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ClusterBasicSettingMultiError, or nil if none found. +func (m *ClusterBasicSetting) ValidateAll() error { + return m.validate(true) +} + +func (m *ClusterBasicSetting) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for OS // no validation rules for Version @@ -731,9 +1198,30 @@ func (m *ClusterBasicSetting) Validate() error { // no validation rules for IsAutoUpgradeClusterLevel + if len(errors) > 0 { + return ClusterBasicSettingMultiError(errors) + } + return nil } +// ClusterBasicSettingMultiError is an error wrapping multiple validation +// errors returned by ClusterBasicSetting.ValidateAll() if the designated +// constraints aren't met. +type ClusterBasicSettingMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ClusterBasicSettingMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ClusterBasicSettingMultiError) AllErrors() []error { return m } + // ClusterBasicSettingValidationError is the validation error returned by // ClusterBasicSetting.Validate if the designated constraints aren't met. type ClusterBasicSettingValidationError struct { @@ -792,12 +1280,26 @@ var _ interface { // Validate checks the field values on ClusterAdvanceSetting with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ClusterAdvanceSetting) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ClusterAdvanceSetting with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ClusterAdvanceSettingMultiError, or nil if none found. +func (m *ClusterAdvanceSetting) ValidateAll() error { + return m.validate(true) +} + +func (m *ClusterAdvanceSetting) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for IPVS // no validation rules for ContainerRuntime @@ -812,9 +1314,30 @@ func (m *ClusterAdvanceSetting) Validate() error { // no validation rules for AuditEnabled + if len(errors) > 0 { + return ClusterAdvanceSettingMultiError(errors) + } + return nil } +// ClusterAdvanceSettingMultiError is an error wrapping multiple validation +// errors returned by ClusterAdvanceSetting.ValidateAll() if the designated +// constraints aren't met. +type ClusterAdvanceSettingMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ClusterAdvanceSettingMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ClusterAdvanceSettingMultiError) AllErrors() []error { return m } + // ClusterAdvanceSettingValidationError is the validation error returned by // ClusterAdvanceSetting.Validate if the designated constraints aren't met. type ClusterAdvanceSettingValidationError struct { @@ -872,13 +1395,27 @@ var _ interface { } = ClusterAdvanceSettingValidationError{} // Validate checks the field values on NodeSetting with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *NodeSetting) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on NodeSetting with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in NodeSettingMultiError, or +// nil if none found. +func (m *NodeSetting) ValidateAll() error { + return m.validate(true) +} + +func (m *NodeSetting) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for DockerGraphPath // no validation rules for MountTarget @@ -889,9 +1426,29 @@ func (m *NodeSetting) Validate() error { // no validation rules for ExtraArgs + if len(errors) > 0 { + return NodeSettingMultiError(errors) + } + return nil } +// NodeSettingMultiError is an error wrapping multiple validation errors +// returned by NodeSetting.ValidateAll() if the designated constraints aren't met. +type NodeSettingMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m NodeSettingMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m NodeSettingMultiError) AllErrors() []error { return m } + // NodeSettingValidationError is the validation error returned by // NodeSetting.Validate if the designated constraints aren't met. type NodeSettingValidationError struct { @@ -947,13 +1504,27 @@ var _ interface { } = NodeSettingValidationError{} // Validate checks the field values on ClusterCredential with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *ClusterCredential) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ClusterCredential with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ClusterCredentialMultiError, or nil if none found. +func (m *ClusterCredential) ValidateAll() error { + return m.validate(true) +} + +func (m *ClusterCredential) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ServerKey // no validation rules for ClusterID @@ -978,9 +1549,30 @@ func (m *ClusterCredential) Validate() error { // no validation rules for ClientKey + if len(errors) > 0 { + return ClusterCredentialMultiError(errors) + } + return nil } +// ClusterCredentialMultiError is an error wrapping multiple validation errors +// returned by ClusterCredential.ValidateAll() if the designated constraints +// aren't met. +type ClusterCredentialMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ClusterCredentialMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ClusterCredentialMultiError) AllErrors() []error { return m } + // ClusterCredentialValidationError is the validation error returned by // ClusterCredential.Validate if the designated constraints aren't met. type ClusterCredentialValidationError struct { @@ -1038,12 +1630,27 @@ var _ interface { } = ClusterCredentialValidationError{} // Validate checks the field values on Namespace with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *Namespace) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on Namespace with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in NamespaceMultiError, or nil +// if none found. +func (m *Namespace) ValidateAll() error { + return m.validate(true) +} + +func (m *Namespace) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Name // no validation rules for FederationClusterID @@ -1063,7 +1670,26 @@ func (m *Namespace) Validate() error { for idx, item := range m.GetQuotaList() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NamespaceValidationError{ + field: fmt.Sprintf("QuotaList[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NamespaceValidationError{ + field: fmt.Sprintf("QuotaList[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NamespaceValidationError{ field: fmt.Sprintf("QuotaList[%v]", idx), @@ -1075,9 +1701,29 @@ func (m *Namespace) Validate() error { } + if len(errors) > 0 { + return NamespaceMultiError(errors) + } + return nil } +// NamespaceMultiError is an error wrapping multiple validation errors returned +// by Namespace.ValidateAll() if the designated constraints aren't met. +type NamespaceMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m NamespaceMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m NamespaceMultiError) AllErrors() []error { return m } + // NamespaceValidationError is the validation error returned by // Namespace.Validate if the designated constraints aren't met. type NamespaceValidationError struct { @@ -1133,13 +1779,27 @@ var _ interface { } = NamespaceValidationError{} // Validate checks the field values on ResourceQuota with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *ResourceQuota) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ResourceQuota with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in ResourceQuotaMultiError, or +// nil if none found. +func (m *ResourceQuota) ValidateAll() error { + return m.validate(true) +} + +func (m *ResourceQuota) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Namespace // no validation rules for FederationClusterID @@ -1158,9 +1818,30 @@ func (m *ResourceQuota) Validate() error { // no validation rules for Message + if len(errors) > 0 { + return ResourceQuotaMultiError(errors) + } + return nil } +// ResourceQuotaMultiError is an error wrapping multiple validation errors +// returned by ResourceQuota.ValidateAll() if the designated constraints +// aren't met. +type ResourceQuotaMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ResourceQuotaMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ResourceQuotaMultiError) AllErrors() []error { return m } + // ResourceQuotaValidationError is the validation error returned by // ResourceQuota.Validate if the designated constraints aren't met. type ResourceQuotaValidationError struct { @@ -1216,12 +1897,27 @@ var _ interface { } = ResourceQuotaValidationError{} // Validate checks the field values on Credential with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *Credential) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on Credential with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in CredentialMultiError, or +// nil if none found. +func (m *Credential) ValidateAll() error { + return m.validate(true) +} + +func (m *Credential) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Key // no validation rules for Secret @@ -1240,9 +1936,29 @@ func (m *Credential) Validate() error { // no validation rules for GkeProjectID + if len(errors) > 0 { + return CredentialMultiError(errors) + } + return nil } +// CredentialMultiError is an error wrapping multiple validation errors +// returned by Credential.ValidateAll() if the designated constraints aren't met. +type CredentialMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CredentialMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CredentialMultiError) AllErrors() []error { return m } + // CredentialValidationError is the validation error returned by // Credential.Validate if the designated constraints aren't met. type CredentialValidationError struct { @@ -1298,13 +2014,27 @@ var _ interface { } = CredentialValidationError{} // Validate checks the field values on BKOpsPlugin with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *BKOpsPlugin) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on BKOpsPlugin with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in BKOpsPluginMultiError, or +// nil if none found. +func (m *BKOpsPlugin) ValidateAll() error { + return m.validate(true) +} + +func (m *BKOpsPlugin) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for System // no validation rules for Link @@ -1313,9 +2043,29 @@ func (m *BKOpsPlugin) Validate() error { // no validation rules for AllowSkipWhenFailed + if len(errors) > 0 { + return BKOpsPluginMultiError(errors) + } + return nil } +// BKOpsPluginMultiError is an error wrapping multiple validation errors +// returned by BKOpsPlugin.ValidateAll() if the designated constraints aren't met. +type BKOpsPluginMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m BKOpsPluginMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m BKOpsPluginMultiError) AllErrors() []error { return m } + // BKOpsPluginValidationError is the validation error returned by // BKOpsPlugin.Validate if the designated constraints aren't met. type BKOpsPluginValidationError struct { @@ -1371,32 +2121,95 @@ var _ interface { } = BKOpsPluginValidationError{} // Validate checks the field values on Action with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *Action) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on Action with the rules defined in the +// proto definition for this message. If any rules are violated, the result is +// a list of violation errors wrapped in ActionMultiError, or nil if none found. +func (m *Action) ValidateAll() error { + return m.validate(true) +} + +func (m *Action) validate(all bool) error { if m == nil { return nil } - for key, val := range m.GetPlugins() { - _ = val + var errors []error + + { + sorted_keys := make([]string, len(m.GetPlugins())) + i := 0 + for key := range m.GetPlugins() { + sorted_keys[i] = key + i++ + } + sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) + for _, key := range sorted_keys { + val := m.GetPlugins()[key] + _ = val - // no validation rules for Plugins[key] + // no validation rules for Plugins[key] - if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return ActionValidationError{ - field: fmt.Sprintf("Plugins[%v]", key), - reason: "embedded message failed validation", - cause: err, + if all { + switch v := interface{}(val).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ActionValidationError{ + field: fmt.Sprintf("Plugins[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ActionValidationError{ + field: fmt.Sprintf("Plugins[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return ActionValidationError{ + field: fmt.Sprintf("Plugins[%v]", key), + reason: "embedded message failed validation", + cause: err, + } } } + } + } + if len(errors) > 0 { + return ActionMultiError(errors) } return nil } +// ActionMultiError is an error wrapping multiple validation errors returned by +// Action.ValidateAll() if the designated constraints aren't met. +type ActionMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ActionMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ActionMultiError) AllErrors() []error { return m } + // ActionValidationError is the validation error returned by Action.Validate if // the designated constraints aren't met. type ActionValidationError struct { @@ -1452,13 +2265,47 @@ var _ interface { } = ActionValidationError{} // Validate checks the field values on ClusterMgr with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *ClusterMgr) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ClusterMgr with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in ClusterMgrMultiError, or +// nil if none found. +func (m *ClusterMgr) ValidateAll() error { + return m.validate(true) +} + +func (m *ClusterMgr) validate(all bool) error { if m == nil { return nil } - if v, ok := interface{}(m.GetCreateCluster()).(interface{ Validate() error }); ok { + var errors []error + + if all { + switch v := interface{}(m.GetCreateCluster()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ClusterMgrValidationError{ + field: "CreateCluster", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ClusterMgrValidationError{ + field: "CreateCluster", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetCreateCluster()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterMgrValidationError{ field: "CreateCluster", @@ -1468,7 +2315,26 @@ func (m *ClusterMgr) Validate() error { } } - if v, ok := interface{}(m.GetDeleteCluster()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetDeleteCluster()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ClusterMgrValidationError{ + field: "DeleteCluster", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ClusterMgrValidationError{ + field: "DeleteCluster", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetDeleteCluster()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterMgrValidationError{ field: "DeleteCluster", @@ -1478,7 +2344,26 @@ func (m *ClusterMgr) Validate() error { } } - if v, ok := interface{}(m.GetAddNodesToCluster()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetAddNodesToCluster()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ClusterMgrValidationError{ + field: "AddNodesToCluster", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ClusterMgrValidationError{ + field: "AddNodesToCluster", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetAddNodesToCluster()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterMgrValidationError{ field: "AddNodesToCluster", @@ -1488,7 +2373,26 @@ func (m *ClusterMgr) Validate() error { } } - if v, ok := interface{}(m.GetDeleteNodesFromCluster()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetDeleteNodesFromCluster()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ClusterMgrValidationError{ + field: "DeleteNodesFromCluster", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ClusterMgrValidationError{ + field: "DeleteNodesFromCluster", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetDeleteNodesFromCluster()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterMgrValidationError{ field: "DeleteNodesFromCluster", @@ -1498,7 +2402,26 @@ func (m *ClusterMgr) Validate() error { } } - if v, ok := interface{}(m.GetImportCluster()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetImportCluster()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ClusterMgrValidationError{ + field: "ImportCluster", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ClusterMgrValidationError{ + field: "ImportCluster", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetImportCluster()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterMgrValidationError{ field: "ImportCluster", @@ -1508,9 +2431,29 @@ func (m *ClusterMgr) Validate() error { } } + if len(errors) > 0 { + return ClusterMgrMultiError(errors) + } + return nil } +// ClusterMgrMultiError is an error wrapping multiple validation errors +// returned by ClusterMgr.ValidateAll() if the designated constraints aren't met. +type ClusterMgrMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ClusterMgrMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ClusterMgrMultiError) AllErrors() []error { return m } + // ClusterMgrValidationError is the validation error returned by // ClusterMgr.Validate if the designated constraints aren't met. type ClusterMgrValidationError struct { @@ -1566,14 +2509,47 @@ var _ interface { } = ClusterMgrValidationError{} // Validate checks the field values on NodeGroupMgr with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *NodeGroupMgr) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on NodeGroupMgr with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in NodeGroupMgrMultiError, or +// nil if none found. +func (m *NodeGroupMgr) ValidateAll() error { + return m.validate(true) +} + +func (m *NodeGroupMgr) validate(all bool) error { if m == nil { return nil } - if v, ok := interface{}(m.GetCreateNodeGroup()).(interface{ Validate() error }); ok { + var errors []error + + if all { + switch v := interface{}(m.GetCreateNodeGroup()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeGroupMgrValidationError{ + field: "CreateNodeGroup", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeGroupMgrValidationError{ + field: "CreateNodeGroup", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetCreateNodeGroup()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeGroupMgrValidationError{ field: "CreateNodeGroup", @@ -1583,7 +2559,26 @@ func (m *NodeGroupMgr) Validate() error { } } - if v, ok := interface{}(m.GetDeleteNodeGroup()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetDeleteNodeGroup()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeGroupMgrValidationError{ + field: "DeleteNodeGroup", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeGroupMgrValidationError{ + field: "DeleteNodeGroup", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetDeleteNodeGroup()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeGroupMgrValidationError{ field: "DeleteNodeGroup", @@ -1593,7 +2588,26 @@ func (m *NodeGroupMgr) Validate() error { } } - if v, ok := interface{}(m.GetMoveNodesToGroup()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetMoveNodesToGroup()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeGroupMgrValidationError{ + field: "MoveNodesToGroup", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeGroupMgrValidationError{ + field: "MoveNodesToGroup", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetMoveNodesToGroup()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeGroupMgrValidationError{ field: "MoveNodesToGroup", @@ -1603,7 +2617,26 @@ func (m *NodeGroupMgr) Validate() error { } } - if v, ok := interface{}(m.GetRemoveNodesFromGroup()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetRemoveNodesFromGroup()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeGroupMgrValidationError{ + field: "RemoveNodesFromGroup", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeGroupMgrValidationError{ + field: "RemoveNodesFromGroup", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetRemoveNodesFromGroup()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeGroupMgrValidationError{ field: "RemoveNodesFromGroup", @@ -1613,7 +2646,26 @@ func (m *NodeGroupMgr) Validate() error { } } - if v, ok := interface{}(m.GetCleanNodesInGroup()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetCleanNodesInGroup()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeGroupMgrValidationError{ + field: "CleanNodesInGroup", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeGroupMgrValidationError{ + field: "CleanNodesInGroup", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetCleanNodesInGroup()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeGroupMgrValidationError{ field: "CleanNodesInGroup", @@ -1623,7 +2675,26 @@ func (m *NodeGroupMgr) Validate() error { } } - if v, ok := interface{}(m.GetUpdateDesiredNodes()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetUpdateDesiredNodes()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeGroupMgrValidationError{ + field: "UpdateDesiredNodes", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeGroupMgrValidationError{ + field: "UpdateDesiredNodes", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetUpdateDesiredNodes()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeGroupMgrValidationError{ field: "UpdateDesiredNodes", @@ -1633,7 +2704,26 @@ func (m *NodeGroupMgr) Validate() error { } } - if v, ok := interface{}(m.GetAddExternalNodesToCluster()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetAddExternalNodesToCluster()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeGroupMgrValidationError{ + field: "AddExternalNodesToCluster", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeGroupMgrValidationError{ + field: "AddExternalNodesToCluster", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetAddExternalNodesToCluster()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeGroupMgrValidationError{ field: "AddExternalNodesToCluster", @@ -1643,7 +2733,26 @@ func (m *NodeGroupMgr) Validate() error { } } - if v, ok := interface{}(m.GetDeleteExternalNodesFromCluster()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetDeleteExternalNodesFromCluster()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeGroupMgrValidationError{ + field: "DeleteExternalNodesFromCluster", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeGroupMgrValidationError{ + field: "DeleteExternalNodesFromCluster", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetDeleteExternalNodesFromCluster()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeGroupMgrValidationError{ field: "DeleteExternalNodesFromCluster", @@ -1653,9 +2762,29 @@ func (m *NodeGroupMgr) Validate() error { } } + if len(errors) > 0 { + return NodeGroupMgrMultiError(errors) + } + return nil } +// NodeGroupMgrMultiError is an error wrapping multiple validation errors +// returned by NodeGroupMgr.ValidateAll() if the designated constraints aren't met. +type NodeGroupMgrMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m NodeGroupMgrMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m NodeGroupMgrMultiError) AllErrors() []error { return m } + // NodeGroupMgrValidationError is the validation error returned by // NodeGroupMgr.Validate if the designated constraints aren't met. type NodeGroupMgrValidationError struct { @@ -1711,17 +2840,51 @@ var _ interface { } = NodeGroupMgrValidationError{} // Validate checks the field values on OSInfo with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *OSInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on OSInfo with the rules defined in the +// proto definition for this message. If any rules are violated, the result is +// a list of violation errors wrapped in OSInfoMultiError, or nil if none found. +func (m *OSInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *OSInfo) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Regions + if len(errors) > 0 { + return OSInfoMultiError(errors) + } + return nil } +// OSInfoMultiError is an error wrapping multiple validation errors returned by +// OSInfo.ValidateAll() if the designated constraints aren't met. +type OSInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m OSInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m OSInfoMultiError) AllErrors() []error { return m } + // OSInfoValidationError is the validation error returned by OSInfo.Validate if // the designated constraints aren't met. type OSInfoValidationError struct { @@ -1777,12 +2940,26 @@ var _ interface { } = OSInfoValidationError{} // Validate checks the field values on Account with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *Account) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on Account with the rules defined in the +// proto definition for this message. If any rules are violated, the result is +// a list of violation errors wrapped in AccountMultiError, or nil if none found. +func (m *Account) ValidateAll() error { + return m.validate(true) +} + +func (m *Account) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for SecretID // no validation rules for SecretKey @@ -1801,9 +2978,29 @@ func (m *Account) Validate() error { // no validation rules for GkeProjectID + if len(errors) > 0 { + return AccountMultiError(errors) + } + return nil } +// AccountMultiError is an error wrapping multiple validation errors returned +// by Account.ValidateAll() if the designated constraints aren't met. +type AccountMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m AccountMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m AccountMultiError) AllErrors() []error { return m } + // AccountValidationError is the validation error returned by Account.Validate // if the designated constraints aren't met. type AccountValidationError struct { @@ -1859,13 +3056,27 @@ var _ interface { } = AccountValidationError{} // Validate checks the field values on GkeServiceAccount with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *GkeServiceAccount) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GkeServiceAccount with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GkeServiceAccountMultiError, or nil if none found. +func (m *GkeServiceAccount) ValidateAll() error { + return m.validate(true) +} + +func (m *GkeServiceAccount) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Type // no validation rules for ProjectID @@ -1886,9 +3097,30 @@ func (m *GkeServiceAccount) Validate() error { // no validation rules for ClientCertURL + if len(errors) > 0 { + return GkeServiceAccountMultiError(errors) + } + return nil } +// GkeServiceAccountMultiError is an error wrapping multiple validation errors +// returned by GkeServiceAccount.ValidateAll() if the designated constraints +// aren't met. +type GkeServiceAccountMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GkeServiceAccountMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GkeServiceAccountMultiError) AllErrors() []error { return m } + // GkeServiceAccountValidationError is the validation error returned by // GkeServiceAccount.Validate if the designated constraints aren't met. type GkeServiceAccountValidationError struct { @@ -1946,13 +3178,27 @@ var _ interface { } = GkeServiceAccountValidationError{} // Validate checks the field values on CloudAccount with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *CloudAccount) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CloudAccount with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in CloudAccountMultiError, or +// nil if none found. +func (m *CloudAccount) ValidateAll() error { + return m.validate(true) +} + +func (m *CloudAccount) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for CloudID // no validation rules for ProjectID @@ -1963,7 +3209,26 @@ func (m *CloudAccount) Validate() error { // no validation rules for Desc - if v, ok := interface{}(m.GetAccount()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetAccount()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CloudAccountValidationError{ + field: "Account", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CloudAccountValidationError{ + field: "Account", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetAccount()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CloudAccountValidationError{ field: "Account", @@ -1983,9 +3248,29 @@ func (m *CloudAccount) Validate() error { // no validation rules for UpdateTime + if len(errors) > 0 { + return CloudAccountMultiError(errors) + } + return nil } +// CloudAccountMultiError is an error wrapping multiple validation errors +// returned by CloudAccount.ValidateAll() if the designated constraints aren't met. +type CloudAccountMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CloudAccountMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CloudAccountMultiError) AllErrors() []error { return m } + // CloudAccountValidationError is the validation error returned by // CloudAccount.Validate if the designated constraints aren't met. type CloudAccountValidationError struct { @@ -2042,36 +3327,81 @@ var _ interface { // Validate checks the field values on CreateCloudAccountRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CreateCloudAccountRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CreateCloudAccountRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CreateCloudAccountRequestMultiError, or nil if none found. +func (m *CreateCloudAccountRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *CreateCloudAccountRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetCloudID()); l < 2 || l > 1024 { - return CreateCloudAccountRequestValidationError{ + err := CreateCloudAccountRequestValidationError{ field: "CloudID", reason: "value length must be between 2 and 1024 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_CreateCloudAccountRequest_CloudID_Pattern.MatchString(m.GetCloudID()) { - return CreateCloudAccountRequestValidationError{ + err := CreateCloudAccountRequestValidationError{ field: "CloudID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetAccountName()) < 1 { - return CreateCloudAccountRequestValidationError{ + err := CreateCloudAccountRequestValidationError{ field: "AccountName", reason: "value length must be at least 1 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Desc - if v, ok := interface{}(m.GetAccount()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetAccount()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateCloudAccountRequestValidationError{ + field: "Account", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateCloudAccountRequestValidationError{ + field: "Account", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetAccount()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateCloudAccountRequestValidationError{ field: "Account", @@ -2081,7 +3411,26 @@ func (m *CreateCloudAccountRequest) Validate() error { } } - if v, ok := interface{}(m.GetEnable()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetEnable()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateCloudAccountRequestValidationError{ + field: "Enable", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateCloudAccountRequestValidationError{ + field: "Enable", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetEnable()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateCloudAccountRequestValidationError{ field: "Enable", @@ -2092,29 +3441,62 @@ func (m *CreateCloudAccountRequest) Validate() error { } if l := utf8.RuneCountInString(m.GetCreator()); l < 2 || l > 1024 { - return CreateCloudAccountRequestValidationError{ + err := CreateCloudAccountRequestValidationError{ field: "Creator", reason: "value length must be between 2 and 1024 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_CreateCloudAccountRequest_Creator_Pattern.MatchString(m.GetCreator()) { - return CreateCloudAccountRequestValidationError{ + err := CreateCloudAccountRequestValidationError{ field: "Creator", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetProjectID()) < 2 { - return CreateCloudAccountRequestValidationError{ + err := CreateCloudAccountRequestValidationError{ field: "ProjectID", reason: "value length must be at least 2 runes", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return CreateCloudAccountRequestMultiError(errors) } return nil } +// CreateCloudAccountRequestMultiError is an error wrapping multiple validation +// errors returned by CreateCloudAccountRequest.ValidateAll() if the +// designated constraints aren't met. +type CreateCloudAccountRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CreateCloudAccountRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CreateCloudAccountRequestMultiError) AllErrors() []error { return m } + // CreateCloudAccountRequestValidationError is the validation error returned by // CreateCloudAccountRequest.Validate if the designated constraints aren't met. type CreateCloudAccountRequestValidationError struct { @@ -2177,21 +3559,56 @@ var _CreateCloudAccountRequest_Creator_Pattern = regexp.MustCompile("^[0-9a-zA-Z // Validate checks the field values on CreateCloudAccountResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CreateCloudAccountResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CreateCloudAccountResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CreateCloudAccountResponseMultiError, or nil if none found. +func (m *CreateCloudAccountResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *CreateCloudAccountResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result + if len(errors) > 0 { + return CreateCloudAccountResponseMultiError(errors) + } + return nil } +// CreateCloudAccountResponseMultiError is an error wrapping multiple +// validation errors returned by CreateCloudAccountResponse.ValidateAll() if +// the designated constraints aren't met. +type CreateCloudAccountResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CreateCloudAccountResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CreateCloudAccountResponseMultiError) AllErrors() []error { return m } + // CreateCloudAccountResponseValidationError is the validation error returned // by CreateCloudAccountResponse.Validate if the designated constraints aren't met. type CreateCloudAccountResponseValidationError struct { @@ -2250,45 +3667,94 @@ var _ interface { // Validate checks the field values on UpdateCloudAccountRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateCloudAccountRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateCloudAccountRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateCloudAccountRequestMultiError, or nil if none found. +func (m *UpdateCloudAccountRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateCloudAccountRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetCloudID()); l < 2 || l > 1024 { - return UpdateCloudAccountRequestValidationError{ + err := UpdateCloudAccountRequestValidationError{ field: "CloudID", reason: "value length must be between 2 and 1024 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_UpdateCloudAccountRequest_CloudID_Pattern.MatchString(m.GetCloudID()) { - return UpdateCloudAccountRequestValidationError{ + err := UpdateCloudAccountRequestValidationError{ field: "CloudID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetAccountID()); l < 2 || l > 1024 { - return UpdateCloudAccountRequestValidationError{ + err := UpdateCloudAccountRequestValidationError{ field: "AccountID", reason: "value length must be between 2 and 1024 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_UpdateCloudAccountRequest_AccountID_Pattern.MatchString(m.GetAccountID()) { - return UpdateCloudAccountRequestValidationError{ + err := UpdateCloudAccountRequestValidationError{ field: "AccountID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for AccountName // no validation rules for Desc - if v, ok := interface{}(m.GetEnable()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetEnable()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateCloudAccountRequestValidationError{ + field: "Enable", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateCloudAccountRequestValidationError{ + field: "Enable", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetEnable()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateCloudAccountRequestValidationError{ field: "Enable", @@ -2301,20 +3767,47 @@ func (m *UpdateCloudAccountRequest) Validate() error { // no validation rules for ProjectID if l := utf8.RuneCountInString(m.GetUpdater()); l < 2 || l > 1024 { - return UpdateCloudAccountRequestValidationError{ + err := UpdateCloudAccountRequestValidationError{ field: "Updater", reason: "value length must be between 2 and 1024 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_UpdateCloudAccountRequest_Updater_Pattern.MatchString(m.GetUpdater()) { - return UpdateCloudAccountRequestValidationError{ + err := UpdateCloudAccountRequestValidationError{ field: "Updater", reason: "value does not match regex pattern \"^[0-9a-zA-Z]+$\"", } + if !all { + return err + } + errors = append(errors, err) } - if v, ok := interface{}(m.GetAccount()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetAccount()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateCloudAccountRequestValidationError{ + field: "Account", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateCloudAccountRequestValidationError{ + field: "Account", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetAccount()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateCloudAccountRequestValidationError{ field: "Account", @@ -2324,9 +3817,30 @@ func (m *UpdateCloudAccountRequest) Validate() error { } } + if len(errors) > 0 { + return UpdateCloudAccountRequestMultiError(errors) + } + return nil } +// UpdateCloudAccountRequestMultiError is an error wrapping multiple validation +// errors returned by UpdateCloudAccountRequest.ValidateAll() if the +// designated constraints aren't met. +type UpdateCloudAccountRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateCloudAccountRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateCloudAccountRequestMultiError) AllErrors() []error { return m } + // UpdateCloudAccountRequestValidationError is the validation error returned by // UpdateCloudAccountRequest.Validate if the designated constraints aren't met. type UpdateCloudAccountRequestValidationError struct { @@ -2391,21 +3905,56 @@ var _UpdateCloudAccountRequest_Updater_Pattern = regexp.MustCompile("^[0-9a-zA-Z // Validate checks the field values on UpdateCloudAccountResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateCloudAccountResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateCloudAccountResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateCloudAccountResponseMultiError, or nil if none found. +func (m *UpdateCloudAccountResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateCloudAccountResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result + if len(errors) > 0 { + return UpdateCloudAccountResponseMultiError(errors) + } + return nil } +// UpdateCloudAccountResponseMultiError is an error wrapping multiple +// validation errors returned by UpdateCloudAccountResponse.ValidateAll() if +// the designated constraints aren't met. +type UpdateCloudAccountResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateCloudAccountResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateCloudAccountResponseMultiError) AllErrors() []error { return m } + // UpdateCloudAccountResponseValidationError is the validation error returned // by UpdateCloudAccountResponse.Validate if the designated constraints aren't met. type UpdateCloudAccountResponseValidationError struct { @@ -2464,29 +4013,70 @@ var _ interface { // Validate checks the field values on MigrateCloudAccountRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *MigrateCloudAccountRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on MigrateCloudAccountRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// MigrateCloudAccountRequestMultiError, or nil if none found. +func (m *MigrateCloudAccountRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *MigrateCloudAccountRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetCloudID()); l < 2 || l > 1024 { - return MigrateCloudAccountRequestValidationError{ + err := MigrateCloudAccountRequestValidationError{ field: "CloudID", reason: "value length must be between 2 and 1024 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_MigrateCloudAccountRequest_CloudID_Pattern.MatchString(m.GetCloudID()) { - return MigrateCloudAccountRequestValidationError{ + err := MigrateCloudAccountRequestValidationError{ field: "CloudID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for AccountIDs - if v, ok := interface{}(m.GetEncrypt()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetEncrypt()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, MigrateCloudAccountRequestValidationError{ + field: "Encrypt", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, MigrateCloudAccountRequestValidationError{ + field: "Encrypt", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetEncrypt()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return MigrateCloudAccountRequestValidationError{ field: "Encrypt", @@ -2498,9 +4088,30 @@ func (m *MigrateCloudAccountRequest) Validate() error { // no validation rules for All + if len(errors) > 0 { + return MigrateCloudAccountRequestMultiError(errors) + } + return nil } +// MigrateCloudAccountRequestMultiError is an error wrapping multiple +// validation errors returned by MigrateCloudAccountRequest.ValidateAll() if +// the designated constraints aren't met. +type MigrateCloudAccountRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m MigrateCloudAccountRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m MigrateCloudAccountRequestMultiError) AllErrors() []error { return m } + // MigrateCloudAccountRequestValidationError is the validation error returned // by MigrateCloudAccountRequest.Validate if the designated constraints aren't met. type MigrateCloudAccountRequestValidationError struct { @@ -2560,22 +4171,57 @@ var _ interface { var _MigrateCloudAccountRequest_CloudID_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$") // Validate checks the field values on OriginEncrypt with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *OriginEncrypt) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on OriginEncrypt with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in OriginEncryptMultiError, or +// nil if none found. +func (m *OriginEncrypt) ValidateAll() error { + return m.validate(true) +} + +func (m *OriginEncrypt) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for EncryptType // no validation rules for Kv // no validation rules for Iv + if len(errors) > 0 { + return OriginEncryptMultiError(errors) + } + return nil } +// OriginEncryptMultiError is an error wrapping multiple validation errors +// returned by OriginEncrypt.ValidateAll() if the designated constraints +// aren't met. +type OriginEncryptMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m OriginEncryptMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m OriginEncryptMultiError) AllErrors() []error { return m } + // OriginEncryptValidationError is the validation error returned by // OriginEncrypt.Validate if the designated constraints aren't met. type OriginEncryptValidationError struct { @@ -2632,21 +4278,56 @@ var _ interface { // Validate checks the field values on MigrateCloudAccountResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *MigrateCloudAccountResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on MigrateCloudAccountResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// MigrateCloudAccountResponseMultiError, or nil if none found. +func (m *MigrateCloudAccountResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *MigrateCloudAccountResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result + if len(errors) > 0 { + return MigrateCloudAccountResponseMultiError(errors) + } + return nil } +// MigrateCloudAccountResponseMultiError is an error wrapping multiple +// validation errors returned by MigrateCloudAccountResponse.ValidateAll() if +// the designated constraints aren't met. +type MigrateCloudAccountResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m MigrateCloudAccountResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m MigrateCloudAccountResponseMultiError) AllErrors() []error { return m } + // MigrateCloudAccountResponseValidationError is the validation error returned // by MigrateCloudAccountResponse.Validate if the designated constraints // aren't met. @@ -2706,43 +4387,94 @@ var _ interface { // Validate checks the field values on DeleteCloudAccountRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DeleteCloudAccountRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteCloudAccountRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeleteCloudAccountRequestMultiError, or nil if none found. +func (m *DeleteCloudAccountRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteCloudAccountRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetCloudID()); l < 2 || l > 1024 { - return DeleteCloudAccountRequestValidationError{ + err := DeleteCloudAccountRequestValidationError{ field: "CloudID", reason: "value length must be between 2 and 1024 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_DeleteCloudAccountRequest_CloudID_Pattern.MatchString(m.GetCloudID()) { - return DeleteCloudAccountRequestValidationError{ + err := DeleteCloudAccountRequestValidationError{ field: "CloudID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetAccountID()); l < 2 || l > 1024 { - return DeleteCloudAccountRequestValidationError{ + err := DeleteCloudAccountRequestValidationError{ field: "AccountID", reason: "value length must be between 2 and 1024 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_DeleteCloudAccountRequest_AccountID_Pattern.MatchString(m.GetAccountID()) { - return DeleteCloudAccountRequestValidationError{ + err := DeleteCloudAccountRequestValidationError{ field: "AccountID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return DeleteCloudAccountRequestMultiError(errors) } return nil } +// DeleteCloudAccountRequestMultiError is an error wrapping multiple validation +// errors returned by DeleteCloudAccountRequest.ValidateAll() if the +// designated constraints aren't met. +type DeleteCloudAccountRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteCloudAccountRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteCloudAccountRequestMultiError) AllErrors() []error { return m } + // DeleteCloudAccountRequestValidationError is the validation error returned by // DeleteCloudAccountRequest.Validate if the designated constraints aren't met. type DeleteCloudAccountRequestValidationError struct { @@ -2805,21 +4537,56 @@ var _DeleteCloudAccountRequest_AccountID_Pattern = regexp.MustCompile("^[0-9a-zA // Validate checks the field values on DeleteCloudAccountResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DeleteCloudAccountResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteCloudAccountResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeleteCloudAccountResponseMultiError, or nil if none found. +func (m *DeleteCloudAccountResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteCloudAccountResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result + if len(errors) > 0 { + return DeleteCloudAccountResponseMultiError(errors) + } + return nil } +// DeleteCloudAccountResponseMultiError is an error wrapping multiple +// validation errors returned by DeleteCloudAccountResponse.ValidateAll() if +// the designated constraints aren't met. +type DeleteCloudAccountResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteCloudAccountResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteCloudAccountResponseMultiError) AllErrors() []error { return m } + // DeleteCloudAccountResponseValidationError is the validation error returned // by DeleteCloudAccountResponse.Validate if the designated constraints aren't met. type DeleteCloudAccountResponseValidationError struct { @@ -2878,19 +4645,54 @@ var _ interface { // Validate checks the field values on ListCloudAccountPermRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCloudAccountPermRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudAccountPermRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListCloudAccountPermRequestMultiError, or nil if none found. +func (m *ListCloudAccountPermRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudAccountPermRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ProjectID // no validation rules for AccountName + if len(errors) > 0 { + return ListCloudAccountPermRequestMultiError(errors) + } + return nil } +// ListCloudAccountPermRequestMultiError is an error wrapping multiple +// validation errors returned by ListCloudAccountPermRequest.ValidateAll() if +// the designated constraints aren't met. +type ListCloudAccountPermRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudAccountPermRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudAccountPermRequestMultiError) AllErrors() []error { return m } + // ListCloudAccountPermRequestValidationError is the validation error returned // by ListCloudAccountPermRequest.Validate if the designated constraints // aren't met. @@ -2950,12 +4752,26 @@ var _ interface { // Validate checks the field values on ListCloudAccountPermResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCloudAccountPermResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudAccountPermResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListCloudAccountPermResponseMultiError, or nil if none found. +func (m *ListCloudAccountPermResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudAccountPermResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -2965,7 +4781,26 @@ func (m *ListCloudAccountPermResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListCloudAccountPermResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListCloudAccountPermResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCloudAccountPermResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -2977,9 +4812,30 @@ func (m *ListCloudAccountPermResponse) Validate() error { } + if len(errors) > 0 { + return ListCloudAccountPermResponseMultiError(errors) + } + return nil } +// ListCloudAccountPermResponseMultiError is an error wrapping multiple +// validation errors returned by ListCloudAccountPermResponse.ValidateAll() if +// the designated constraints aren't met. +type ListCloudAccountPermResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudAccountPermResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudAccountPermResponseMultiError) AllErrors() []error { return m } + // ListCloudAccountPermResponseValidationError is the validation error returned // by ListCloudAccountPermResponse.Validate if the designated constraints // aren't met. @@ -3039,17 +4895,35 @@ var _ interface { // Validate checks the field values on ListCloudAccountRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCloudAccountRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudAccountRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListCloudAccountRequestMultiError, or nil if none found. +func (m *ListCloudAccountRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudAccountRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetCloudID()) > 1024 { - return ListCloudAccountRequestValidationError{ + err := ListCloudAccountRequestValidationError{ field: "CloudID", reason: "value length must be at most 1024 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for AccountID @@ -3058,9 +4932,30 @@ func (m *ListCloudAccountRequest) Validate() error { // no validation rules for Operator + if len(errors) > 0 { + return ListCloudAccountRequestMultiError(errors) + } + return nil } +// ListCloudAccountRequestMultiError is an error wrapping multiple validation +// errors returned by ListCloudAccountRequest.ValidateAll() if the designated +// constraints aren't met. +type ListCloudAccountRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudAccountRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudAccountRequestMultiError) AllErrors() []error { return m } + // ListCloudAccountRequestValidationError is the validation error returned by // ListCloudAccountRequest.Validate if the designated constraints aren't met. type ListCloudAccountRequestValidationError struct { @@ -3118,14 +5013,47 @@ var _ interface { } = ListCloudAccountRequestValidationError{} // Validate checks the field values on CloudAccountInfo with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *CloudAccountInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CloudAccountInfo with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CloudAccountInfoMultiError, or nil if none found. +func (m *CloudAccountInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *CloudAccountInfo) validate(all bool) error { if m == nil { return nil } - if v, ok := interface{}(m.GetAccount()).(interface{ Validate() error }); ok { + var errors []error + + if all { + switch v := interface{}(m.GetAccount()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CloudAccountInfoValidationError{ + field: "Account", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CloudAccountInfoValidationError{ + field: "Account", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetAccount()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CloudAccountInfoValidationError{ field: "Account", @@ -3135,9 +5063,30 @@ func (m *CloudAccountInfo) Validate() error { } } + if len(errors) > 0 { + return CloudAccountInfoMultiError(errors) + } + return nil } +// CloudAccountInfoMultiError is an error wrapping multiple validation errors +// returned by CloudAccountInfo.ValidateAll() if the designated constraints +// aren't met. +type CloudAccountInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CloudAccountInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CloudAccountInfoMultiError) AllErrors() []error { return m } + // CloudAccountInfoValidationError is the validation error returned by // CloudAccountInfo.Validate if the designated constraints aren't met. type CloudAccountInfoValidationError struct { @@ -3194,12 +5143,26 @@ var _ interface { // Validate checks the field values on ListCloudAccountResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCloudAccountResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudAccountResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListCloudAccountResponseMultiError, or nil if none found. +func (m *ListCloudAccountResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudAccountResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -3209,7 +5172,26 @@ func (m *ListCloudAccountResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListCloudAccountResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListCloudAccountResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCloudAccountResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -3221,7 +5203,26 @@ func (m *ListCloudAccountResponse) Validate() error { } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListCloudAccountResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListCloudAccountResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCloudAccountResponseValidationError{ field: "WebAnnotations", @@ -3231,9 +5232,30 @@ func (m *ListCloudAccountResponse) Validate() error { } } + if len(errors) > 0 { + return ListCloudAccountResponseMultiError(errors) + } + return nil } +// ListCloudAccountResponseMultiError is an error wrapping multiple validation +// errors returned by ListCloudAccountResponse.ValidateAll() if the designated +// constraints aren't met. +type ListCloudAccountResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudAccountResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudAccountResponseMultiError) AllErrors() []error { return m } + // ListCloudAccountResponseValidationError is the validation error returned by // ListCloudAccountResponse.Validate if the designated constraints aren't met. type ListCloudAccountResponseValidationError struct { @@ -3291,12 +5313,27 @@ var _ interface { } = ListCloudAccountResponseValidationError{} // Validate checks the field values on CloudVPC with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *CloudVPC) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CloudVPC with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in CloudVPCMultiError, or nil +// if none found. +func (m *CloudVPC) ValidateAll() error { + return m.validate(true) +} + +func (m *CloudVPC) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for CloudID // no validation rules for Region @@ -3325,9 +5362,29 @@ func (m *CloudVPC) Validate() error { // no validation rules for BusinessID + if len(errors) > 0 { + return CloudVPCMultiError(errors) + } + return nil } +// CloudVPCMultiError is an error wrapping multiple validation errors returned +// by CloudVPC.ValidateAll() if the designated constraints aren't met. +type CloudVPCMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CloudVPCMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CloudVPCMultiError) AllErrors() []error { return m } + // CloudVPCValidationError is the validation error returned by // CloudVPC.Validate if the designated constraints aren't met. type CloudVPCValidationError struct { @@ -3384,107 +5441,190 @@ var _ interface { // Validate checks the field values on CreateCloudVPCRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CreateCloudVPCRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CreateCloudVPCRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CreateCloudVPCRequestMultiError, or nil if none found. +func (m *CreateCloudVPCRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *CreateCloudVPCRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetCloudID()); l < 2 || l > 100 { - return CreateCloudVPCRequestValidationError{ + err := CreateCloudVPCRequestValidationError{ field: "CloudID", reason: "value length must be between 2 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_CreateCloudVPCRequest_CloudID_Pattern.MatchString(m.GetCloudID()) { - return CreateCloudVPCRequestValidationError{ + err := CreateCloudVPCRequestValidationError{ field: "CloudID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if _, ok := _CreateCloudVPCRequest_NetworkType_InLookup[m.GetNetworkType()]; !ok { - return CreateCloudVPCRequestValidationError{ + err := CreateCloudVPCRequestValidationError{ field: "NetworkType", reason: "value must be in list [overlay underlay]", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetRegion()); l < 2 || l > 100 { - return CreateCloudVPCRequestValidationError{ + err := CreateCloudVPCRequestValidationError{ field: "Region", reason: "value length must be between 2 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_CreateCloudVPCRequest_Region_Pattern.MatchString(m.GetRegion()) { - return CreateCloudVPCRequestValidationError{ + err := CreateCloudVPCRequestValidationError{ field: "Region", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for RegionName if l := utf8.RuneCountInString(m.GetVpcName()); l < 2 || l > 100 { - return CreateCloudVPCRequestValidationError{ + err := CreateCloudVPCRequestValidationError{ field: "VpcName", reason: "value length must be between 2 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_CreateCloudVPCRequest_VpcName_Pattern.MatchString(m.GetVpcName()) { - return CreateCloudVPCRequestValidationError{ + err := CreateCloudVPCRequestValidationError{ field: "VpcName", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetVpcID()); l < 2 || l > 100 { - return CreateCloudVPCRequestValidationError{ + err := CreateCloudVPCRequestValidationError{ field: "VpcID", reason: "value length must be between 2 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_CreateCloudVPCRequest_VpcID_Pattern.MatchString(m.GetVpcID()) { - return CreateCloudVPCRequestValidationError{ + err := CreateCloudVPCRequestValidationError{ field: "VpcID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if _, ok := _CreateCloudVPCRequest_Available_InLookup[m.GetAvailable()]; !ok { - return CreateCloudVPCRequestValidationError{ + err := CreateCloudVPCRequestValidationError{ field: "Available", reason: "value must be in list [true false]", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Extra if l := utf8.RuneCountInString(m.GetCreator()); l < 2 || l > 100 { - return CreateCloudVPCRequestValidationError{ + err := CreateCloudVPCRequestValidationError{ field: "Creator", reason: "value length must be between 2 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_CreateCloudVPCRequest_Creator_Pattern.MatchString(m.GetCreator()) { - return CreateCloudVPCRequestValidationError{ + err := CreateCloudVPCRequestValidationError{ field: "Creator", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for ReservedIPNum // no validation rules for BusinessID + if len(errors) > 0 { + return CreateCloudVPCRequestMultiError(errors) + } + return nil } +// CreateCloudVPCRequestMultiError is an error wrapping multiple validation +// errors returned by CreateCloudVPCRequest.ValidateAll() if the designated +// constraints aren't met. +type CreateCloudVPCRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CreateCloudVPCRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CreateCloudVPCRequestMultiError) AllErrors() []error { return m } + // CreateCloudVPCRequestValidationError is the validation error returned by // CreateCloudVPCRequest.Validate if the designated constraints aren't met. type CreateCloudVPCRequestValidationError struct { @@ -3563,21 +5703,56 @@ var _CreateCloudVPCRequest_Creator_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$ // Validate checks the field values on CreateCloudVPCResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CreateCloudVPCResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CreateCloudVPCResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CreateCloudVPCResponseMultiError, or nil if none found. +func (m *CreateCloudVPCResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *CreateCloudVPCResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result + if len(errors) > 0 { + return CreateCloudVPCResponseMultiError(errors) + } + return nil } +// CreateCloudVPCResponseMultiError is an error wrapping multiple validation +// errors returned by CreateCloudVPCResponse.ValidateAll() if the designated +// constraints aren't met. +type CreateCloudVPCResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CreateCloudVPCResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CreateCloudVPCResponseMultiError) AllErrors() []error { return m } + // CreateCloudVPCResponseValidationError is the validation error returned by // CreateCloudVPCResponse.Validate if the designated constraints aren't met. type CreateCloudVPCResponseValidationError struct { @@ -3636,24 +5811,46 @@ var _ interface { // Validate checks the field values on UpdateCloudVPCRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateCloudVPCRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateCloudVPCRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateCloudVPCRequestMultiError, or nil if none found. +func (m *UpdateCloudVPCRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateCloudVPCRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetCloudID()); l < 2 || l > 100 { - return UpdateCloudVPCRequestValidationError{ + err := UpdateCloudVPCRequestValidationError{ field: "CloudID", reason: "value length must be between 2 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_UpdateCloudVPCRequest_CloudID_Pattern.MatchString(m.GetCloudID()) { - return UpdateCloudVPCRequestValidationError{ + err := UpdateCloudVPCRequestValidationError{ field: "CloudID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for NetworkType @@ -3665,41 +5862,80 @@ func (m *UpdateCloudVPCRequest) Validate() error { // no validation rules for VpcName if l := utf8.RuneCountInString(m.GetVpcID()); l < 2 || l > 100 { - return UpdateCloudVPCRequestValidationError{ + err := UpdateCloudVPCRequestValidationError{ field: "VpcID", reason: "value length must be between 2 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_UpdateCloudVPCRequest_VpcID_Pattern.MatchString(m.GetVpcID()) { - return UpdateCloudVPCRequestValidationError{ + err := UpdateCloudVPCRequestValidationError{ field: "VpcID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if _, ok := _UpdateCloudVPCRequest_Available_InLookup[m.GetAvailable()]; !ok { - return UpdateCloudVPCRequestValidationError{ + err := UpdateCloudVPCRequestValidationError{ field: "Available", reason: "value must be in list [ true false]", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetUpdater()); l < 2 || l > 100 { - return UpdateCloudVPCRequestValidationError{ + err := UpdateCloudVPCRequestValidationError{ field: "Updater", reason: "value length must be between 2 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_UpdateCloudVPCRequest_Updater_Pattern.MatchString(m.GetUpdater()) { - return UpdateCloudVPCRequestValidationError{ + err := UpdateCloudVPCRequestValidationError{ field: "Updater", reason: "value does not match regex pattern \"^[0-9a-zA-Z]+$\"", } + if !all { + return err + } + errors = append(errors, err) } - if v, ok := interface{}(m.GetReservedIPNum()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetReservedIPNum()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateCloudVPCRequestValidationError{ + field: "ReservedIPNum", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateCloudVPCRequestValidationError{ + field: "ReservedIPNum", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetReservedIPNum()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateCloudVPCRequestValidationError{ field: "ReservedIPNum", @@ -3709,7 +5945,26 @@ func (m *UpdateCloudVPCRequest) Validate() error { } } - if v, ok := interface{}(m.GetBusinessID()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetBusinessID()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateCloudVPCRequestValidationError{ + field: "BusinessID", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateCloudVPCRequestValidationError{ + field: "BusinessID", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetBusinessID()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateCloudVPCRequestValidationError{ field: "BusinessID", @@ -3719,9 +5974,30 @@ func (m *UpdateCloudVPCRequest) Validate() error { } } + if len(errors) > 0 { + return UpdateCloudVPCRequestMultiError(errors) + } + return nil } +// UpdateCloudVPCRequestMultiError is an error wrapping multiple validation +// errors returned by UpdateCloudVPCRequest.ValidateAll() if the designated +// constraints aren't met. +type UpdateCloudVPCRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateCloudVPCRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateCloudVPCRequestMultiError) AllErrors() []error { return m } + // UpdateCloudVPCRequestValidationError is the validation error returned by // UpdateCloudVPCRequest.Validate if the designated constraints aren't met. type UpdateCloudVPCRequestValidationError struct { @@ -3792,19 +6068,52 @@ var _UpdateCloudVPCRequest_Updater_Pattern = regexp.MustCompile("^[0-9a-zA-Z]+$" // Validate checks the field values on UpdateCloudVPCResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateCloudVPCResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateCloudVPCResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateCloudVPCResponseMultiError, or nil if none found. +func (m *UpdateCloudVPCResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateCloudVPCResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateCloudVPCResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateCloudVPCResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateCloudVPCResponseValidationError{ field: "Data", @@ -3814,9 +6123,30 @@ func (m *UpdateCloudVPCResponse) Validate() error { } } + if len(errors) > 0 { + return UpdateCloudVPCResponseMultiError(errors) + } + return nil } +// UpdateCloudVPCResponseMultiError is an error wrapping multiple validation +// errors returned by UpdateCloudVPCResponse.ValidateAll() if the designated +// constraints aren't met. +type UpdateCloudVPCResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateCloudVPCResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateCloudVPCResponseMultiError) AllErrors() []error { return m } + // UpdateCloudVPCResponseValidationError is the validation error returned by // UpdateCloudVPCResponse.Validate if the designated constraints aren't met. type UpdateCloudVPCResponseValidationError struct { @@ -3875,43 +6205,94 @@ var _ interface { // Validate checks the field values on DeleteCloudVPCRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DeleteCloudVPCRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteCloudVPCRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeleteCloudVPCRequestMultiError, or nil if none found. +func (m *DeleteCloudVPCRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteCloudVPCRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetCloudID()); l < 2 || l > 100 { - return DeleteCloudVPCRequestValidationError{ + err := DeleteCloudVPCRequestValidationError{ field: "CloudID", reason: "value length must be between 2 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_DeleteCloudVPCRequest_CloudID_Pattern.MatchString(m.GetCloudID()) { - return DeleteCloudVPCRequestValidationError{ + err := DeleteCloudVPCRequestValidationError{ field: "CloudID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetVpcID()); l < 2 || l > 100 { - return DeleteCloudVPCRequestValidationError{ + err := DeleteCloudVPCRequestValidationError{ field: "VpcID", reason: "value length must be between 2 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_DeleteCloudVPCRequest_VpcID_Pattern.MatchString(m.GetVpcID()) { - return DeleteCloudVPCRequestValidationError{ + err := DeleteCloudVPCRequestValidationError{ field: "VpcID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return DeleteCloudVPCRequestMultiError(errors) } return nil } +// DeleteCloudVPCRequestMultiError is an error wrapping multiple validation +// errors returned by DeleteCloudVPCRequest.ValidateAll() if the designated +// constraints aren't met. +type DeleteCloudVPCRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteCloudVPCRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteCloudVPCRequestMultiError) AllErrors() []error { return m } + // DeleteCloudVPCRequestValidationError is the validation error returned by // DeleteCloudVPCRequest.Validate if the designated constraints aren't met. type DeleteCloudVPCRequestValidationError struct { @@ -3974,19 +6355,52 @@ var _DeleteCloudVPCRequest_VpcID_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$") // Validate checks the field values on DeleteCloudVPCResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DeleteCloudVPCResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteCloudVPCResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeleteCloudVPCResponseMultiError, or nil if none found. +func (m *DeleteCloudVPCResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteCloudVPCResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DeleteCloudVPCResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DeleteCloudVPCResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteCloudVPCResponseValidationError{ field: "Data", @@ -3996,9 +6410,30 @@ func (m *DeleteCloudVPCResponse) Validate() error { } } + if len(errors) > 0 { + return DeleteCloudVPCResponseMultiError(errors) + } + return nil } +// DeleteCloudVPCResponseMultiError is an error wrapping multiple validation +// errors returned by DeleteCloudVPCResponse.ValidateAll() if the designated +// constraints aren't met. +type DeleteCloudVPCResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteCloudVPCResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteCloudVPCResponseMultiError) AllErrors() []error { return m } + // DeleteCloudVPCResponseValidationError is the validation error returned by // DeleteCloudVPCResponse.Validate if the designated constraints aren't met. type DeleteCloudVPCResponseValidationError struct { @@ -4057,17 +6492,35 @@ var _ interface { // Validate checks the field values on ListCloudVPCRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCloudVPCRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudVPCRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListCloudVPCRequestMultiError, or nil if none found. +func (m *ListCloudVPCRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudVPCRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetCloudID()) > 20 { - return ListCloudVPCRequestValidationError{ + err := ListCloudVPCRequestValidationError{ field: "CloudID", reason: "value length must be at most 20 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Region @@ -4075,17 +6528,42 @@ func (m *ListCloudVPCRequest) Validate() error { // no validation rules for VpcID if _, ok := _ListCloudVPCRequest_NetworkType_InLookup[m.GetNetworkType()]; !ok { - return ListCloudVPCRequestValidationError{ + err := ListCloudVPCRequestValidationError{ field: "NetworkType", reason: "value must be in list [overlay underlay]", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for BusinessID + if len(errors) > 0 { + return ListCloudVPCRequestMultiError(errors) + } + return nil } +// ListCloudVPCRequestMultiError is an error wrapping multiple validation +// errors returned by ListCloudVPCRequest.ValidateAll() if the designated +// constraints aren't met. +type ListCloudVPCRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudVPCRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudVPCRequestMultiError) AllErrors() []error { return m } + // ListCloudVPCRequestValidationError is the validation error returned by // ListCloudVPCRequest.Validate if the designated constraints aren't met. type ListCloudVPCRequestValidationError struct { @@ -4149,12 +6627,26 @@ var _ListCloudVPCRequest_NetworkType_InLookup = map[string]struct{}{ // Validate checks the field values on ListCloudVPCResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCloudVPCResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudVPCResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListCloudVPCResponseMultiError, or nil if none found. +func (m *ListCloudVPCResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudVPCResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -4164,7 +6656,26 @@ func (m *ListCloudVPCResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListCloudVPCResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListCloudVPCResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCloudVPCResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -4176,9 +6687,30 @@ func (m *ListCloudVPCResponse) Validate() error { } + if len(errors) > 0 { + return ListCloudVPCResponseMultiError(errors) + } + return nil } +// ListCloudVPCResponseMultiError is an error wrapping multiple validation +// errors returned by ListCloudVPCResponse.ValidateAll() if the designated +// constraints aren't met. +type ListCloudVPCResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudVPCResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudVPCResponseMultiError) AllErrors() []error { return m } + // ListCloudVPCResponseValidationError is the validation error returned by // ListCloudVPCResponse.Validate if the designated constraints aren't met. type ListCloudVPCResponseValidationError struct { @@ -4236,13 +6768,27 @@ var _ interface { } = ListCloudVPCResponseValidationError{} // Validate checks the field values on CloudVPCResp with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *CloudVPCResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CloudVPCResp with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in CloudVPCRespMultiError, or +// nil if none found. +func (m *CloudVPCResp) ValidateAll() error { + return m.validate(true) +} + +func (m *CloudVPCResp) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for CloudID // no validation rules for Region @@ -4263,9 +6809,29 @@ func (m *CloudVPCResp) Validate() error { // no validation rules for AvailableIPNum + if len(errors) > 0 { + return CloudVPCRespMultiError(errors) + } + return nil } +// CloudVPCRespMultiError is an error wrapping multiple validation errors +// returned by CloudVPCResp.ValidateAll() if the designated constraints aren't met. +type CloudVPCRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CloudVPCRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CloudVPCRespMultiError) AllErrors() []error { return m } + // CloudVPCRespValidationError is the validation error returned by // CloudVPCResp.Validate if the designated constraints aren't met. type CloudVPCRespValidationError struct { @@ -4322,22 +6888,61 @@ var _ interface { // Validate checks the field values on ListCloudRegionsRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCloudRegionsRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudRegionsRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListCloudRegionsRequestMultiError, or nil if none found. +func (m *ListCloudRegionsRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudRegionsRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetCloudID()) > 20 { - return ListCloudRegionsRequestValidationError{ + err := ListCloudRegionsRequestValidationError{ field: "CloudID", reason: "value length must be at most 20 runes", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return ListCloudRegionsRequestMultiError(errors) } return nil } +// ListCloudRegionsRequestMultiError is an error wrapping multiple validation +// errors returned by ListCloudRegionsRequest.ValidateAll() if the designated +// constraints aren't met. +type ListCloudRegionsRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudRegionsRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudRegionsRequestMultiError) AllErrors() []error { return m } + // ListCloudRegionsRequestValidationError is the validation error returned by // ListCloudRegionsRequest.Validate if the designated constraints aren't met. type ListCloudRegionsRequestValidationError struct { @@ -4396,12 +7001,26 @@ var _ interface { // Validate checks the field values on ListCloudRegionsResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCloudRegionsResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudRegionsResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListCloudRegionsResponseMultiError, or nil if none found. +func (m *ListCloudRegionsResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudRegionsResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -4411,7 +7030,26 @@ func (m *ListCloudRegionsResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListCloudRegionsResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListCloudRegionsResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCloudRegionsResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -4423,9 +7061,30 @@ func (m *ListCloudRegionsResponse) Validate() error { } + if len(errors) > 0 { + return ListCloudRegionsResponseMultiError(errors) + } + return nil } +// ListCloudRegionsResponseMultiError is an error wrapping multiple validation +// errors returned by ListCloudRegionsResponse.ValidateAll() if the designated +// constraints aren't met. +type ListCloudRegionsResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudRegionsResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudRegionsResponseMultiError) AllErrors() []error { return m } + // ListCloudRegionsResponseValidationError is the validation error returned by // ListCloudRegionsResponse.Validate if the designated constraints aren't met. type ListCloudRegionsResponseValidationError struct { @@ -4483,22 +7142,56 @@ var _ interface { } = ListCloudRegionsResponseValidationError{} // Validate checks the field values on CloudRegion with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *CloudRegion) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CloudRegion with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in CloudRegionMultiError, or +// nil if none found. +func (m *CloudRegion) ValidateAll() error { + return m.validate(true) +} + +func (m *CloudRegion) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for CloudID // no validation rules for RegionName // no validation rules for Region + if len(errors) > 0 { + return CloudRegionMultiError(errors) + } + return nil } +// CloudRegionMultiError is an error wrapping multiple validation errors +// returned by CloudRegion.ValidateAll() if the designated constraints aren't met. +type CloudRegionMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CloudRegionMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CloudRegionMultiError) AllErrors() []error { return m } + // CloudRegionValidationError is the validation error returned by // CloudRegion.Validate if the designated constraints aren't met. type CloudRegionValidationError struct { @@ -4554,18 +7247,53 @@ var _ interface { } = CloudRegionValidationError{} // Validate checks the field values on GetVPCCidrRequest with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *GetVPCCidrRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetVPCCidrRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetVPCCidrRequestMultiError, or nil if none found. +func (m *GetVPCCidrRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetVPCCidrRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for VpcID + if len(errors) > 0 { + return GetVPCCidrRequestMultiError(errors) + } + return nil } +// GetVPCCidrRequestMultiError is an error wrapping multiple validation errors +// returned by GetVPCCidrRequest.ValidateAll() if the designated constraints +// aren't met. +type GetVPCCidrRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetVPCCidrRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetVPCCidrRequestMultiError) AllErrors() []error { return m } + // GetVPCCidrRequestValidationError is the validation error returned by // GetVPCCidrRequest.Validate if the designated constraints aren't met. type GetVPCCidrRequestValidationError struct { @@ -4624,12 +7352,26 @@ var _ interface { // Validate checks the field values on GetVPCCidrResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetVPCCidrResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetVPCCidrResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetVPCCidrResponseMultiError, or nil if none found. +func (m *GetVPCCidrResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetVPCCidrResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -4639,7 +7381,26 @@ func (m *GetVPCCidrResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetVPCCidrResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetVPCCidrResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetVPCCidrResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -4651,9 +7412,30 @@ func (m *GetVPCCidrResponse) Validate() error { } + if len(errors) > 0 { + return GetVPCCidrResponseMultiError(errors) + } + return nil } +// GetVPCCidrResponseMultiError is an error wrapping multiple validation errors +// returned by GetVPCCidrResponse.ValidateAll() if the designated constraints +// aren't met. +type GetVPCCidrResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetVPCCidrResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetVPCCidrResponseMultiError) AllErrors() []error { return m } + // GetVPCCidrResponseValidationError is the validation error returned by // GetVPCCidrResponse.Validate if the designated constraints aren't met. type GetVPCCidrResponseValidationError struct { @@ -4711,12 +7493,26 @@ var _ interface { } = GetVPCCidrResponseValidationError{} // Validate checks the field values on VPCCidr with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *VPCCidr) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on VPCCidr with the rules defined in the +// proto definition for this message. If any rules are violated, the result is +// a list of violation errors wrapped in VPCCidrMultiError, or nil if none found. +func (m *VPCCidr) ValidateAll() error { + return m.validate(true) +} + +func (m *VPCCidr) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Vpc // no validation rules for Cidr @@ -4725,9 +7521,29 @@ func (m *VPCCidr) Validate() error { // no validation rules for Status + if len(errors) > 0 { + return VPCCidrMultiError(errors) + } + return nil } +// VPCCidrMultiError is an error wrapping multiple validation errors returned +// by VPCCidr.ValidateAll() if the designated constraints aren't met. +type VPCCidrMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m VPCCidrMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m VPCCidrMultiError) AllErrors() []error { return m } + // VPCCidrValidationError is the validation error returned by VPCCidr.Validate // if the designated constraints aren't met. type VPCCidrValidationError struct { @@ -4783,53 +7599,144 @@ var _ interface { } = VPCCidrValidationError{} // Validate checks the field values on Cloud with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *Cloud) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on Cloud with the rules defined in the +// proto definition for this message. If any rules are violated, the result is +// a list of violation errors wrapped in CloudMultiError, or nil if none found. +func (m *Cloud) ValidateAll() error { + return m.validate(true) +} + +func (m *Cloud) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for CloudID // no validation rules for Name // no validation rules for Editable - for key, val := range m.GetOpsPlugins() { - _ = val - - // no validation rules for OpsPlugins[key] - - if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return CloudValidationError{ - field: fmt.Sprintf("OpsPlugins[%v]", key), - reason: "embedded message failed validation", - cause: err, + { + sorted_keys := make([]string, len(m.GetOpsPlugins())) + i := 0 + for key := range m.GetOpsPlugins() { + sorted_keys[i] = key + i++ + } + sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) + for _, key := range sorted_keys { + val := m.GetOpsPlugins()[key] + _ = val + + // no validation rules for OpsPlugins[key] + + if all { + switch v := interface{}(val).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CloudValidationError{ + field: fmt.Sprintf("OpsPlugins[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CloudValidationError{ + field: fmt.Sprintf("OpsPlugins[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return CloudValidationError{ + field: fmt.Sprintf("OpsPlugins[%v]", key), + reason: "embedded message failed validation", + cause: err, + } } } - } + } } - for key, val := range m.GetExtraPlugins() { - _ = val + { + sorted_keys := make([]string, len(m.GetExtraPlugins())) + i := 0 + for key := range m.GetExtraPlugins() { + sorted_keys[i] = key + i++ + } + sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) + for _, key := range sorted_keys { + val := m.GetExtraPlugins()[key] + _ = val + + // no validation rules for ExtraPlugins[key] + + if all { + switch v := interface{}(val).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CloudValidationError{ + field: fmt.Sprintf("ExtraPlugins[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CloudValidationError{ + field: fmt.Sprintf("ExtraPlugins[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return CloudValidationError{ + field: fmt.Sprintf("ExtraPlugins[%v]", key), + reason: "embedded message failed validation", + cause: err, + } + } + } - // no validation rules for ExtraPlugins[key] + } + } - if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetCloudCredential()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CloudValidationError{ + field: "CloudCredential", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: if err := v.Validate(); err != nil { - return CloudValidationError{ - field: fmt.Sprintf("ExtraPlugins[%v]", key), + errors = append(errors, CloudValidationError{ + field: "CloudCredential", reason: "embedded message failed validation", cause: err, - } + }) } } - - } - - if v, ok := interface{}(m.GetCloudCredential()).(interface{ Validate() error }); ok { + } else if v, ok := interface{}(m.GetCloudCredential()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CloudValidationError{ field: "CloudCredential", @@ -4839,7 +7746,26 @@ func (m *Cloud) Validate() error { } } - if v, ok := interface{}(m.GetOsManagement()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetOsManagement()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CloudValidationError{ + field: "OsManagement", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CloudValidationError{ + field: "OsManagement", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetOsManagement()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CloudValidationError{ field: "OsManagement", @@ -4849,7 +7775,26 @@ func (m *Cloud) Validate() error { } } - if v, ok := interface{}(m.GetClusterManagement()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetClusterManagement()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CloudValidationError{ + field: "ClusterManagement", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CloudValidationError{ + field: "ClusterManagement", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetClusterManagement()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CloudValidationError{ field: "ClusterManagement", @@ -4859,7 +7804,26 @@ func (m *Cloud) Validate() error { } } - if v, ok := interface{}(m.GetNodeGroupManagement()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetNodeGroupManagement()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CloudValidationError{ + field: "NodeGroupManagement", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CloudValidationError{ + field: "NodeGroupManagement", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetNodeGroupManagement()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CloudValidationError{ field: "NodeGroupManagement", @@ -4887,7 +7851,26 @@ func (m *Cloud) Validate() error { // no validation rules for Enable - if v, ok := interface{}(m.GetNetworkInfo()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetNetworkInfo()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CloudValidationError{ + field: "NetworkInfo", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CloudValidationError{ + field: "NetworkInfo", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetNetworkInfo()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CloudValidationError{ field: "NetworkInfo", @@ -4897,7 +7880,26 @@ func (m *Cloud) Validate() error { } } - if v, ok := interface{}(m.GetConfInfo()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetConfInfo()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CloudValidationError{ + field: "ConfInfo", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CloudValidationError{ + field: "ConfInfo", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetConfInfo()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CloudValidationError{ field: "ConfInfo", @@ -4909,9 +7911,29 @@ func (m *Cloud) Validate() error { // no validation rules for PlatformInfo + if len(errors) > 0 { + return CloudMultiError(errors) + } + return nil } +// CloudMultiError is an error wrapping multiple validation errors returned by +// Cloud.ValidateAll() if the designated constraints aren't met. +type CloudMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CloudMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CloudMultiError) AllErrors() []error { return m } + // CloudValidationError is the validation error returned by Cloud.Validate if // the designated constraints aren't met. type CloudValidationError struct { @@ -4967,13 +7989,27 @@ var _ interface { } = CloudValidationError{} // Validate checks the field values on CloudConfigInfo with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *CloudConfigInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CloudConfigInfo with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CloudConfigInfoMultiError, or nil if none found. +func (m *CloudConfigInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *CloudConfigInfo) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for CloudInternalEnable // no validation rules for CloudDomain @@ -4988,9 +8024,30 @@ func (m *CloudConfigInfo) Validate() error { // no validation rules for VpcDomain + if len(errors) > 0 { + return CloudConfigInfoMultiError(errors) + } + return nil } +// CloudConfigInfoMultiError is an error wrapping multiple validation errors +// returned by CloudConfigInfo.ValidateAll() if the designated constraints +// aren't met. +type CloudConfigInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CloudConfigInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CloudConfigInfoMultiError) AllErrors() []error { return m } + // CloudConfigInfoValidationError is the validation error returned by // CloudConfigInfo.Validate if the designated constraints aren't met. type CloudConfigInfoValidationError struct { @@ -5046,16 +8103,51 @@ var _ interface { } = CloudConfigInfoValidationError{} // Validate checks the field values on CloudNetworkInfo with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *CloudNetworkInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CloudNetworkInfo with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CloudNetworkInfoMultiError, or nil if none found. +func (m *CloudNetworkInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *CloudNetworkInfo) validate(all bool) error { if m == nil { return nil } + var errors []error + + if len(errors) > 0 { + return CloudNetworkInfoMultiError(errors) + } + return nil } +// CloudNetworkInfoMultiError is an error wrapping multiple validation errors +// returned by CloudNetworkInfo.ValidateAll() if the designated constraints +// aren't met. +type CloudNetworkInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CloudNetworkInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CloudNetworkInfoMultiError) AllErrors() []error { return m } + // CloudNetworkInfoValidationError is the validation error returned by // CloudNetworkInfo.Validate if the designated constraints aren't met. type CloudNetworkInfoValidationError struct { @@ -5111,42 +8203,88 @@ var _ interface { } = CloudNetworkInfoValidationError{} // Validate checks the field values on NodeGroup with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *NodeGroup) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on NodeGroup with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in NodeGroupMultiError, or nil +// if none found. +func (m *NodeGroup) ValidateAll() error { + return m.validate(true) +} + +func (m *NodeGroup) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for NodeGroupID // no validation rules for Name if l := utf8.RuneCountInString(m.GetClusterID()); l < 2 || l > 100 { - return NodeGroupValidationError{ + err := NodeGroupValidationError{ field: "ClusterID", reason: "value length must be between 2 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - return NodeGroupValidationError{ + err := NodeGroupValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } + if !all { + return err + } + errors = append(errors, err) } if !_NodeGroup_ClusterID_Pattern.MatchString(m.GetClusterID()) { - return NodeGroupValidationError{ + err := NodeGroupValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Region // no validation rules for EnableAutoscale - if v, ok := interface{}(m.GetAutoScaling()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetAutoScaling()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeGroupValidationError{ + field: "AutoScaling", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeGroupValidationError{ + field: "AutoScaling", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetAutoScaling()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeGroupValidationError{ field: "AutoScaling", @@ -5156,7 +8294,26 @@ func (m *NodeGroup) Validate() error { } } - if v, ok := interface{}(m.GetLaunchTemplate()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetLaunchTemplate()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeGroupValidationError{ + field: "LaunchTemplate", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeGroupValidationError{ + field: "LaunchTemplate", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetLaunchTemplate()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeGroupValidationError{ field: "LaunchTemplate", @@ -5185,22 +8342,49 @@ func (m *NodeGroup) Validate() error { // no validation rules for Provider if _, ok := _NodeGroup_Status_InLookup[m.GetStatus()]; !ok { - return NodeGroupValidationError{ + err := NodeGroupValidationError{ field: "Status", reason: "value must be in list [CREATING RUNNING DELETING FALURE INITIALIZATION DELETED]", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for ConsumerID if m.GetNodeTemplate() == nil { - return NodeGroupValidationError{ + err := NodeGroupValidationError{ field: "NodeTemplate", reason: "value is required", } + if !all { + return err + } + errors = append(errors, err) } - if v, ok := interface{}(m.GetNodeTemplate()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetNodeTemplate()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeGroupValidationError{ + field: "NodeTemplate", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeGroupValidationError{ + field: "NodeTemplate", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetNodeTemplate()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeGroupValidationError{ field: "NodeTemplate", @@ -5216,7 +8400,26 @@ func (m *NodeGroup) Validate() error { // no validation rules for NodeGroupType - if v, ok := interface{}(m.GetArea()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetArea()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeGroupValidationError{ + field: "Area", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeGroupValidationError{ + field: "Area", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetArea()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeGroupValidationError{ field: "Area", @@ -5226,9 +8429,29 @@ func (m *NodeGroup) Validate() error { } } + if len(errors) > 0 { + return NodeGroupMultiError(errors) + } + return nil } +// NodeGroupMultiError is an error wrapping multiple validation errors returned +// by NodeGroup.ValidateAll() if the designated constraints aren't met. +type NodeGroupMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m NodeGroupMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m NodeGroupMultiError) AllErrors() []error { return m } + // NodeGroupValidationError is the validation error returned by // NodeGroup.Validate if the designated constraints aren't met. type NodeGroupValidationError struct { @@ -5295,19 +8518,54 @@ var _NodeGroup_Status_InLookup = map[string]struct{}{ } // Validate checks the field values on CloudArea with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *CloudArea) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CloudArea with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in CloudAreaMultiError, or nil +// if none found. +func (m *CloudArea) ValidateAll() error { + return m.validate(true) +} + +func (m *CloudArea) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for BkCloudID // no validation rules for BkCloudName + if len(errors) > 0 { + return CloudAreaMultiError(errors) + } + return nil } +// CloudAreaMultiError is an error wrapping multiple validation errors returned +// by CloudArea.ValidateAll() if the designated constraints aren't met. +type CloudAreaMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CloudAreaMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CloudAreaMultiError) AllErrors() []error { return m } + // CloudAreaValidationError is the validation error returned by // CloudArea.Validate if the designated constraints aren't met. type CloudAreaValidationError struct { @@ -5363,29 +8621,51 @@ var _ interface { } = CloudAreaValidationError{} // Validate checks the field values on AutoScalingGroup with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *AutoScalingGroup) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on AutoScalingGroup with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// AutoScalingGroupMultiError, or nil if none found. +func (m *AutoScalingGroup) ValidateAll() error { + return m.validate(true) +} + +func (m *AutoScalingGroup) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for AutoScalingID // no validation rules for AutoScalingName if val := m.GetMinSize(); val < 0 || val > 1000 { - return AutoScalingGroupValidationError{ + err := AutoScalingGroupValidationError{ field: "MinSize", reason: "value must be inside range [0, 1000]", } + if !all { + return err + } + errors = append(errors, err) } if val := m.GetMaxSize(); val < 0 || val > 1000 { - return AutoScalingGroupValidationError{ + err := AutoScalingGroupValidationError{ field: "MaxSize", reason: "value must be inside range [0, 1000]", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for DesiredSize @@ -5405,7 +8685,26 @@ func (m *AutoScalingGroup) Validate() error { for idx, item := range m.GetTimeRanges() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, AutoScalingGroupValidationError{ + field: fmt.Sprintf("TimeRanges[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, AutoScalingGroupValidationError{ + field: fmt.Sprintf("TimeRanges[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return AutoScalingGroupValidationError{ field: fmt.Sprintf("TimeRanges[%v]", idx), @@ -5419,9 +8718,30 @@ func (m *AutoScalingGroup) Validate() error { // no validation rules for AutoUpgrade + if len(errors) > 0 { + return AutoScalingGroupMultiError(errors) + } + return nil } +// AutoScalingGroupMultiError is an error wrapping multiple validation errors +// returned by AutoScalingGroup.ValidateAll() if the designated constraints +// aren't met. +type AutoScalingGroupMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m AutoScalingGroupMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m AutoScalingGroupMultiError) AllErrors() []error { return m } + // AutoScalingGroupValidationError is the validation error returned by // AutoScalingGroup.Validate if the designated constraints aren't met. type AutoScalingGroupValidationError struct { @@ -5477,33 +8797,76 @@ var _ interface { } = AutoScalingGroupValidationError{} // Validate checks the field values on TimeRange with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *TimeRange) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on TimeRange with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in TimeRangeMultiError, or nil +// if none found. +func (m *TimeRange) ValidateAll() error { + return m.validate(true) +} + +func (m *TimeRange) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetName()); l < 2 || l > 1024 { - return TimeRangeValidationError{ + err := TimeRangeValidationError{ field: "Name", reason: "value length must be between 2 and 1024 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetSchedule()); l < 2 || l > 1024 { - return TimeRangeValidationError{ + err := TimeRangeValidationError{ field: "Schedule", reason: "value length must be between 2 and 1024 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Zone // no validation rules for DesiredNum + if len(errors) > 0 { + return TimeRangeMultiError(errors) + } + return nil } +// TimeRangeMultiError is an error wrapping multiple validation errors returned +// by TimeRange.ValidateAll() if the designated constraints aren't met. +type TimeRangeMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m TimeRangeMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m TimeRangeMultiError) AllErrors() []error { return m } + // TimeRangeValidationError is the validation error returned by // TimeRange.Validate if the designated constraints aren't met. type TimeRangeValidationError struct { @@ -5559,19 +8922,54 @@ var _ interface { } = TimeRangeValidationError{} // Validate checks the field values on DataDisk with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *DataDisk) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DataDisk with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in DataDiskMultiError, or nil +// if none found. +func (m *DataDisk) ValidateAll() error { + return m.validate(true) +} + +func (m *DataDisk) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for DiskType // no validation rules for DiskSize + if len(errors) > 0 { + return DataDiskMultiError(errors) + } + return nil } +// DataDiskMultiError is an error wrapping multiple validation errors returned +// by DataDisk.ValidateAll() if the designated constraints aren't met. +type DataDiskMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DataDiskMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DataDiskMultiError) AllErrors() []error { return m } + // DataDiskValidationError is the validation error returned by // DataDisk.Validate if the designated constraints aren't met. type DataDiskValidationError struct { @@ -5627,13 +9025,27 @@ var _ interface { } = DataDiskValidationError{} // Validate checks the field values on CloudDataDisk with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *CloudDataDisk) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CloudDataDisk with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in CloudDataDiskMultiError, or +// nil if none found. +func (m *CloudDataDisk) ValidateAll() error { + return m.validate(true) +} + +func (m *CloudDataDisk) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for DiskType // no validation rules for DiskSize @@ -5646,9 +9058,30 @@ func (m *CloudDataDisk) Validate() error { // no validation rules for DiskPartition + if len(errors) > 0 { + return CloudDataDiskMultiError(errors) + } + return nil } +// CloudDataDiskMultiError is an error wrapping multiple validation errors +// returned by CloudDataDisk.ValidateAll() if the designated constraints +// aren't met. +type CloudDataDiskMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CloudDataDiskMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CloudDataDiskMultiError) AllErrors() []error { return m } + // CloudDataDiskValidationError is the validation error returned by // CloudDataDisk.Validate if the designated constraints aren't met. type CloudDataDiskValidationError struct { @@ -5705,12 +9138,26 @@ var _ interface { // Validate checks the field values on InternetAccessible with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *InternetAccessible) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on InternetAccessible with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// InternetAccessibleMultiError, or nil if none found. +func (m *InternetAccessible) ValidateAll() error { + return m.validate(true) +} + +func (m *InternetAccessible) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for InternetChargeType // no validation rules for InternetMaxBandwidth @@ -5719,9 +9166,30 @@ func (m *InternetAccessible) Validate() error { // no validation rules for BandwidthPackageId + if len(errors) > 0 { + return InternetAccessibleMultiError(errors) + } + return nil } +// InternetAccessibleMultiError is an error wrapping multiple validation errors +// returned by InternetAccessible.ValidateAll() if the designated constraints +// aren't met. +type InternetAccessibleMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m InternetAccessibleMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m InternetAccessibleMultiError) AllErrors() []error { return m } + // InternetAccessibleValidationError is the validation error returned by // InternetAccessible.Validate if the designated constraints aren't met. type InternetAccessibleValidationError struct { @@ -5780,12 +9248,26 @@ var _ interface { // Validate checks the field values on InstanceTemplateConfig with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *InstanceTemplateConfig) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on InstanceTemplateConfig with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// InstanceTemplateConfigMultiError, or nil if none found. +func (m *InstanceTemplateConfig) ValidateAll() error { + return m.validate(true) +} + +func (m *InstanceTemplateConfig) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Region // no validation rules for Zone @@ -5805,13 +9287,36 @@ func (m *InstanceTemplateConfig) Validate() error { // no validation rules for InstanceType if _, ok := _InstanceTemplateConfig_InstanceChargeType_InLookup[m.GetInstanceChargeType()]; !ok { - return InstanceTemplateConfigValidationError{ + err := InstanceTemplateConfigValidationError{ field: "InstanceChargeType", reason: "value must be in list [PREPAID POSTPAID_BY_HOUR SPOTPAID]", } + if !all { + return err + } + errors = append(errors, err) } - if v, ok := interface{}(m.GetSystemDisk()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetSystemDisk()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, InstanceTemplateConfigValidationError{ + field: "SystemDisk", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, InstanceTemplateConfigValidationError{ + field: "SystemDisk", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetSystemDisk()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return InstanceTemplateConfigValidationError{ field: "SystemDisk", @@ -5824,7 +9329,26 @@ func (m *InstanceTemplateConfig) Validate() error { for idx, item := range m.GetDataDisks() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, InstanceTemplateConfigValidationError{ + field: fmt.Sprintf("DataDisks[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, InstanceTemplateConfigValidationError{ + field: fmt.Sprintf("DataDisks[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return InstanceTemplateConfigValidationError{ field: fmt.Sprintf("DataDisks[%v]", idx), @@ -5836,7 +9360,26 @@ func (m *InstanceTemplateConfig) Validate() error { } - if v, ok := interface{}(m.GetImageInfo()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetImageInfo()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, InstanceTemplateConfigValidationError{ + field: "ImageInfo", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, InstanceTemplateConfigValidationError{ + field: "ImageInfo", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetImageInfo()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return InstanceTemplateConfigValidationError{ field: "ImageInfo", @@ -5852,9 +9395,30 @@ func (m *InstanceTemplateConfig) Validate() error { // no validation rules for IsMonitorService + if len(errors) > 0 { + return InstanceTemplateConfigMultiError(errors) + } + return nil } +// InstanceTemplateConfigMultiError is an error wrapping multiple validation +// errors returned by InstanceTemplateConfig.ValidateAll() if the designated +// constraints aren't met. +type InstanceTemplateConfigMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m InstanceTemplateConfigMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m InstanceTemplateConfigMultiError) AllErrors() []error { return m } + // InstanceTemplateConfigValidationError is the validation error returned by // InstanceTemplateConfig.Validate if the designated constraints aren't met. type InstanceTemplateConfigValidationError struct { @@ -5919,12 +9483,26 @@ var _InstanceTemplateConfig_InstanceChargeType_InLookup = map[string]struct{}{ // Validate checks the field values on LaunchConfiguration with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *LaunchConfiguration) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on LaunchConfiguration with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// LaunchConfigurationMultiError, or nil if none found. +func (m *LaunchConfiguration) ValidateAll() error { + return m.validate(true) +} + +func (m *LaunchConfiguration) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for LaunchConfigurationID // no validation rules for LaunchConfigureName @@ -5941,7 +9519,26 @@ func (m *LaunchConfiguration) Validate() error { // no validation rules for InstanceChargeType - if v, ok := interface{}(m.GetSystemDisk()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetSystemDisk()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, LaunchConfigurationValidationError{ + field: "SystemDisk", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, LaunchConfigurationValidationError{ + field: "SystemDisk", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetSystemDisk()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return LaunchConfigurationValidationError{ field: "SystemDisk", @@ -5954,7 +9551,26 @@ func (m *LaunchConfiguration) Validate() error { for idx, item := range m.GetDataDisks() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, LaunchConfigurationValidationError{ + field: fmt.Sprintf("DataDisks[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, LaunchConfigurationValidationError{ + field: fmt.Sprintf("DataDisks[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return LaunchConfigurationValidationError{ field: fmt.Sprintf("DataDisks[%v]", idx), @@ -5966,7 +9582,26 @@ func (m *LaunchConfiguration) Validate() error { } - if v, ok := interface{}(m.GetInternetAccess()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetInternetAccess()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, LaunchConfigurationValidationError{ + field: "InternetAccess", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, LaunchConfigurationValidationError{ + field: "InternetAccess", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetInternetAccess()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return LaunchConfigurationValidationError{ field: "InternetAccess", @@ -5978,7 +9613,26 @@ func (m *LaunchConfiguration) Validate() error { // no validation rules for InitLoginPassword - if v, ok := interface{}(m.GetImageInfo()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetImageInfo()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, LaunchConfigurationValidationError{ + field: "ImageInfo", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, LaunchConfigurationValidationError{ + field: "ImageInfo", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetImageInfo()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return LaunchConfigurationValidationError{ field: "ImageInfo", @@ -5998,7 +9652,26 @@ func (m *LaunchConfiguration) Validate() error { // no validation rules for Selector - if v, ok := interface{}(m.GetKeyPair()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetKeyPair()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, LaunchConfigurationValidationError{ + field: "KeyPair", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, LaunchConfigurationValidationError{ + field: "KeyPair", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetKeyPair()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return LaunchConfigurationValidationError{ field: "KeyPair", @@ -6008,9 +9681,30 @@ func (m *LaunchConfiguration) Validate() error { } } + if len(errors) > 0 { + return LaunchConfigurationMultiError(errors) + } + return nil } +// LaunchConfigurationMultiError is an error wrapping multiple validation +// errors returned by LaunchConfiguration.ValidateAll() if the designated +// constraints aren't met. +type LaunchConfigurationMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m LaunchConfigurationMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m LaunchConfigurationMultiError) AllErrors() []error { return m } + // LaunchConfigurationValidationError is the validation error returned by // LaunchConfiguration.Validate if the designated constraints aren't met. type LaunchConfigurationValidationError struct { @@ -6068,19 +9762,53 @@ var _ interface { } = LaunchConfigurationValidationError{} // Validate checks the field values on KeyInfo with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *KeyInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on KeyInfo with the rules defined in the +// proto definition for this message. If any rules are violated, the result is +// a list of violation errors wrapped in KeyInfoMultiError, or nil if none found. +func (m *KeyInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *KeyInfo) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for KeyID // no validation rules for KeySecret + if len(errors) > 0 { + return KeyInfoMultiError(errors) + } + return nil } +// KeyInfoMultiError is an error wrapping multiple validation errors returned +// by KeyInfo.ValidateAll() if the designated constraints aren't met. +type KeyInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m KeyInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m KeyInfoMultiError) AllErrors() []error { return m } + // KeyInfoValidationError is the validation error returned by KeyInfo.Validate // if the designated constraints aren't met. type KeyInfoValidationError struct { @@ -6136,21 +9864,56 @@ var _ interface { } = KeyInfoValidationError{} // Validate checks the field values on ImageInfo with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *ImageInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ImageInfo with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in ImageInfoMultiError, or nil +// if none found. +func (m *ImageInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *ImageInfo) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ImageID // no validation rules for ImageName // no validation rules for ImageType + if len(errors) > 0 { + return ImageInfoMultiError(errors) + } + return nil } +// ImageInfoMultiError is an error wrapping multiple validation errors returned +// by ImageInfo.ValidateAll() if the designated constraints aren't met. +type ImageInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ImageInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ImageInfoMultiError) AllErrors() []error { return m } + // ImageInfoValidationError is the validation error returned by // ImageInfo.Validate if the designated constraints aren't met. type ImageInfoValidationError struct { @@ -6207,12 +9970,26 @@ var _ interface { // Validate checks the field values on ClusterAutoScalingOption with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ClusterAutoScalingOption) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ClusterAutoScalingOption with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ClusterAutoScalingOptionMultiError, or nil if none found. +func (m *ClusterAutoScalingOption) ValidateAll() error { + return m.validate(true) +} + +func (m *ClusterAutoScalingOption) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for IsScaleDownEnable // no validation rules for Expander @@ -6281,7 +10058,26 @@ func (m *ClusterAutoScalingOption) Validate() error { // no validation rules for BufferResourceMemRatio - if v, ok := interface{}(m.GetModule()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetModule()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ClusterAutoScalingOptionValidationError{ + field: "Module", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ClusterAutoScalingOptionValidationError{ + field: "Module", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetModule()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterAutoScalingOptionValidationError{ field: "Module", @@ -6291,7 +10087,26 @@ func (m *ClusterAutoScalingOption) Validate() error { } } - if v, ok := interface{}(m.GetWebhook()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebhook()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ClusterAutoScalingOptionValidationError{ + field: "Webhook", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ClusterAutoScalingOptionValidationError{ + field: "Webhook", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebhook()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterAutoScalingOptionValidationError{ field: "Webhook", @@ -6304,15 +10119,40 @@ func (m *ClusterAutoScalingOption) Validate() error { // no validation rules for ExpendablePodsPriorityCutoff if m.GetNewPodScaleUpDelay() < 0 { - return ClusterAutoScalingOptionValidationError{ + err := ClusterAutoScalingOptionValidationError{ field: "NewPodScaleUpDelay", reason: "value must be greater than or equal to 0", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return ClusterAutoScalingOptionMultiError(errors) } return nil } +// ClusterAutoScalingOptionMultiError is an error wrapping multiple validation +// errors returned by ClusterAutoScalingOption.ValidateAll() if the designated +// constraints aren't met. +type ClusterAutoScalingOptionMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ClusterAutoScalingOptionMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ClusterAutoScalingOptionMultiError) AllErrors() []error { return m } + // ClusterAutoScalingOptionValidationError is the validation error returned by // ClusterAutoScalingOption.Validate if the designated constraints aren't met. type ClusterAutoScalingOptionValidationError struct { @@ -6370,22 +10210,56 @@ var _ interface { } = ClusterAutoScalingOptionValidationError{} // Validate checks the field values on WebhookMode with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *WebhookMode) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on WebhookMode with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in WebhookModeMultiError, or +// nil if none found. +func (m *WebhookMode) ValidateAll() error { + return m.validate(true) +} + +func (m *WebhookMode) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Mode // no validation rules for Server // no validation rules for Token + if len(errors) > 0 { + return WebhookModeMultiError(errors) + } + return nil } +// WebhookModeMultiError is an error wrapping multiple validation errors +// returned by WebhookMode.ValidateAll() if the designated constraints aren't met. +type WebhookModeMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m WebhookModeMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m WebhookModeMultiError) AllErrors() []error { return m } + // WebhookModeValidationError is the validation error returned by // WebhookMode.Validate if the designated constraints aren't met. type WebhookModeValidationError struct { @@ -6441,21 +10315,55 @@ var _ interface { } = WebhookModeValidationError{} // Validate checks the field values on Taint with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *Taint) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on Taint with the rules defined in the +// proto definition for this message. If any rules are violated, the result is +// a list of violation errors wrapped in TaintMultiError, or nil if none found. +func (m *Taint) ValidateAll() error { + return m.validate(true) +} + +func (m *Taint) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Key // no validation rules for Value // no validation rules for Effect + if len(errors) > 0 { + return TaintMultiError(errors) + } + return nil } +// TaintMultiError is an error wrapping multiple validation errors returned by +// Taint.ValidateAll() if the designated constraints aren't met. +type TaintMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m TaintMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m TaintMultiError) AllErrors() []error { return m } + // TaintValidationError is the validation error returned by Taint.Validate if // the designated constraints aren't met. type TaintValidationError struct { @@ -6511,13 +10419,27 @@ var _ interface { } = TaintValidationError{} // Validate checks the field values on NodeTemplate with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *NodeTemplate) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on NodeTemplate with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in NodeTemplateMultiError, or +// nil if none found. +func (m *NodeTemplate) ValidateAll() error { + return m.validate(true) +} + +func (m *NodeTemplate) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for NodeTemplateID // no validation rules for Name @@ -6529,7 +10451,26 @@ func (m *NodeTemplate) Validate() error { for idx, item := range m.GetTaints() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeTemplateValidationError{ + field: fmt.Sprintf("Taints[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeTemplateValidationError{ + field: fmt.Sprintf("Taints[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeTemplateValidationError{ field: fmt.Sprintf("Taints[%v]", idx), @@ -6552,7 +10493,26 @@ func (m *NodeTemplate) Validate() error { for idx, item := range m.GetDataDisks() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeTemplateValidationError{ + field: fmt.Sprintf("DataDisks[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeTemplateValidationError{ + field: fmt.Sprintf("DataDisks[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeTemplateValidationError{ field: fmt.Sprintf("DataDisks[%v]", idx), @@ -6568,7 +10528,26 @@ func (m *NodeTemplate) Validate() error { // no validation rules for PreStartUserScript - if v, ok := interface{}(m.GetBcsScaleOutAddons()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetBcsScaleOutAddons()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeTemplateValidationError{ + field: "BcsScaleOutAddons", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeTemplateValidationError{ + field: "BcsScaleOutAddons", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetBcsScaleOutAddons()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeTemplateValidationError{ field: "BcsScaleOutAddons", @@ -6578,7 +10557,26 @@ func (m *NodeTemplate) Validate() error { } } - if v, ok := interface{}(m.GetBcsScaleInAddons()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetBcsScaleInAddons()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeTemplateValidationError{ + field: "BcsScaleInAddons", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeTemplateValidationError{ + field: "BcsScaleInAddons", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetBcsScaleInAddons()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeTemplateValidationError{ field: "BcsScaleInAddons", @@ -6588,7 +10586,26 @@ func (m *NodeTemplate) Validate() error { } } - if v, ok := interface{}(m.GetScaleOutExtraAddons()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetScaleOutExtraAddons()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeTemplateValidationError{ + field: "ScaleOutExtraAddons", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeTemplateValidationError{ + field: "ScaleOutExtraAddons", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetScaleOutExtraAddons()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeTemplateValidationError{ field: "ScaleOutExtraAddons", @@ -6598,7 +10615,26 @@ func (m *NodeTemplate) Validate() error { } } - if v, ok := interface{}(m.GetScaleInExtraAddons()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetScaleInExtraAddons()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeTemplateValidationError{ + field: "ScaleInExtraAddons", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeTemplateValidationError{ + field: "ScaleInExtraAddons", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetScaleInExtraAddons()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeTemplateValidationError{ field: "ScaleInExtraAddons", @@ -6620,7 +10656,26 @@ func (m *NodeTemplate) Validate() error { // no validation rules for Desc - if v, ok := interface{}(m.GetRuntime()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetRuntime()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeTemplateValidationError{ + field: "Runtime", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeTemplateValidationError{ + field: "Runtime", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetRuntime()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeTemplateValidationError{ field: "Runtime", @@ -6630,7 +10685,26 @@ func (m *NodeTemplate) Validate() error { } } - if v, ok := interface{}(m.GetModule()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetModule()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeTemplateValidationError{ + field: "Module", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeTemplateValidationError{ + field: "Module", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetModule()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeTemplateValidationError{ field: "Module", @@ -6654,9 +10728,29 @@ func (m *NodeTemplate) Validate() error { // no validation rules for AllowSkipScaleInWhenFailed + if len(errors) > 0 { + return NodeTemplateMultiError(errors) + } + return nil } +// NodeTemplateMultiError is an error wrapping multiple validation errors +// returned by NodeTemplate.ValidateAll() if the designated constraints aren't met. +type NodeTemplateMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m NodeTemplateMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m NodeTemplateMultiError) AllErrors() []error { return m } + // NodeTemplateValidationError is the validation error returned by // NodeTemplate.Validate if the designated constraints aren't met. type NodeTemplateValidationError struct { @@ -6712,12 +10806,27 @@ var _ interface { } = NodeTemplateValidationError{} // Validate checks the field values on ModuleInfo with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *ModuleInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ModuleInfo with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in ModuleInfoMultiError, or +// nil if none found. +func (m *ModuleInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *ModuleInfo) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ScaleOutModuleID // no validation rules for ScaleInModuleID @@ -6730,9 +10839,29 @@ func (m *ModuleInfo) Validate() error { // no validation rules for ScaleInModuleName + if len(errors) > 0 { + return ModuleInfoMultiError(errors) + } + return nil } +// ModuleInfoMultiError is an error wrapping multiple validation errors +// returned by ModuleInfo.ValidateAll() if the designated constraints aren't met. +type ModuleInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ModuleInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ModuleInfoMultiError) AllErrors() []error { return m } + // ModuleInfoValidationError is the validation error returned by // ModuleInfo.Validate if the designated constraints aren't met. type ModuleInfoValidationError struct { @@ -6788,20 +10917,54 @@ var _ interface { } = ModuleInfoValidationError{} // Validate checks the field values on RunTimeInfo with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *RunTimeInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on RunTimeInfo with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in RunTimeInfoMultiError, or +// nil if none found. +func (m *RunTimeInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *RunTimeInfo) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ContainerRuntime // no validation rules for RuntimeVersion + if len(errors) > 0 { + return RunTimeInfoMultiError(errors) + } + return nil } +// RunTimeInfoMultiError is an error wrapping multiple validation errors +// returned by RunTimeInfo.ValidateAll() if the designated constraints aren't met. +type RunTimeInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m RunTimeInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m RunTimeInfoMultiError) AllErrors() []error { return m } + // RunTimeInfoValidationError is the validation error returned by // RunTimeInfo.Validate if the designated constraints aren't met. type RunTimeInfoValidationError struct { @@ -6858,31 +11021,57 @@ var _ interface { // Validate checks the field values on CreateNodeTemplateRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CreateNodeTemplateRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CreateNodeTemplateRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CreateNodeTemplateRequestMultiError, or nil if none found. +func (m *CreateNodeTemplateRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *CreateNodeTemplateRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetProjectID()); l < 1 || l > 2048 { - return CreateNodeTemplateRequestValidationError{ + err := CreateNodeTemplateRequestValidationError{ field: "ProjectID", reason: "value length must be between 1 and 2048 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_CreateNodeTemplateRequest_ProjectID_Pattern.MatchString(m.GetProjectID()) { - return CreateNodeTemplateRequestValidationError{ + err := CreateNodeTemplateRequestValidationError{ field: "ProjectID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetName()) < 1 { - return CreateNodeTemplateRequestValidationError{ + err := CreateNodeTemplateRequestValidationError{ field: "Name", reason: "value length must be at least 1 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Desc @@ -6892,7 +11081,26 @@ func (m *CreateNodeTemplateRequest) Validate() error { for idx, item := range m.GetTaints() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateNodeTemplateRequestValidationError{ + field: fmt.Sprintf("Taints[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateNodeTemplateRequestValidationError{ + field: fmt.Sprintf("Taints[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeTemplateRequestValidationError{ field: fmt.Sprintf("Taints[%v]", idx), @@ -6915,7 +11123,26 @@ func (m *CreateNodeTemplateRequest) Validate() error { for idx, item := range m.GetDataDisks() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateNodeTemplateRequestValidationError{ + field: fmt.Sprintf("DataDisks[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateNodeTemplateRequestValidationError{ + field: fmt.Sprintf("DataDisks[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeTemplateRequestValidationError{ field: fmt.Sprintf("DataDisks[%v]", idx), @@ -6931,7 +11158,26 @@ func (m *CreateNodeTemplateRequest) Validate() error { // no validation rules for PreStartUserScript - if v, ok := interface{}(m.GetScaleOutExtraAddons()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetScaleOutExtraAddons()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateNodeTemplateRequestValidationError{ + field: "ScaleOutExtraAddons", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateNodeTemplateRequestValidationError{ + field: "ScaleOutExtraAddons", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetScaleOutExtraAddons()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeTemplateRequestValidationError{ field: "ScaleOutExtraAddons", @@ -6941,7 +11187,26 @@ func (m *CreateNodeTemplateRequest) Validate() error { } } - if v, ok := interface{}(m.GetScaleInExtraAddons()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetScaleInExtraAddons()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateNodeTemplateRequestValidationError{ + field: "ScaleInExtraAddons", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateNodeTemplateRequestValidationError{ + field: "ScaleInExtraAddons", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetScaleInExtraAddons()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeTemplateRequestValidationError{ field: "ScaleInExtraAddons", @@ -6954,20 +11219,47 @@ func (m *CreateNodeTemplateRequest) Validate() error { // no validation rules for NodeOS if l := utf8.RuneCountInString(m.GetCreator()); l < 2 || l > 1024 { - return CreateNodeTemplateRequestValidationError{ + err := CreateNodeTemplateRequestValidationError{ field: "Creator", reason: "value length must be between 2 and 1024 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_CreateNodeTemplateRequest_Creator_Pattern.MatchString(m.GetCreator()) { - return CreateNodeTemplateRequestValidationError{ + err := CreateNodeTemplateRequestValidationError{ field: "Creator", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } - if v, ok := interface{}(m.GetRuntime()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetRuntime()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateNodeTemplateRequestValidationError{ + field: "Runtime", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateNodeTemplateRequestValidationError{ + field: "Runtime", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetRuntime()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeTemplateRequestValidationError{ field: "Runtime", @@ -6977,7 +11269,26 @@ func (m *CreateNodeTemplateRequest) Validate() error { } } - if v, ok := interface{}(m.GetModule()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetModule()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateNodeTemplateRequestValidationError{ + field: "Module", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateNodeTemplateRequestValidationError{ + field: "Module", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetModule()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeTemplateRequestValidationError{ field: "Module", @@ -6987,7 +11298,26 @@ func (m *CreateNodeTemplateRequest) Validate() error { } } - if v, ok := interface{}(m.GetScaleInPreScript()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetScaleInPreScript()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateNodeTemplateRequestValidationError{ + field: "ScaleInPreScript", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateNodeTemplateRequestValidationError{ + field: "ScaleInPreScript", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetScaleInPreScript()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeTemplateRequestValidationError{ field: "ScaleInPreScript", @@ -6997,7 +11327,26 @@ func (m *CreateNodeTemplateRequest) Validate() error { } } - if v, ok := interface{}(m.GetScaleInPostScript()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetScaleInPostScript()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateNodeTemplateRequestValidationError{ + field: "ScaleInPostScript", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateNodeTemplateRequestValidationError{ + field: "ScaleInPostScript", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetScaleInPostScript()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeTemplateRequestValidationError{ field: "ScaleInPostScript", @@ -7007,7 +11356,26 @@ func (m *CreateNodeTemplateRequest) Validate() error { } } - if v, ok := interface{}(m.GetAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateNodeTemplateRequestValidationError{ + field: "Annotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateNodeTemplateRequestValidationError{ + field: "Annotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeTemplateRequestValidationError{ field: "Annotations", @@ -7017,9 +11385,30 @@ func (m *CreateNodeTemplateRequest) Validate() error { } } + if len(errors) > 0 { + return CreateNodeTemplateRequestMultiError(errors) + } + return nil } +// CreateNodeTemplateRequestMultiError is an error wrapping multiple validation +// errors returned by CreateNodeTemplateRequest.ValidateAll() if the +// designated constraints aren't met. +type CreateNodeTemplateRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CreateNodeTemplateRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CreateNodeTemplateRequestMultiError) AllErrors() []error { return m } + // CreateNodeTemplateRequestValidationError is the validation error returned by // CreateNodeTemplateRequest.Validate if the designated constraints aren't met. type CreateNodeTemplateRequestValidationError struct { @@ -7082,19 +11471,52 @@ var _CreateNodeTemplateRequest_Creator_Pattern = regexp.MustCompile("^[0-9a-zA-Z // Validate checks the field values on CreateNodeTemplateResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CreateNodeTemplateResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CreateNodeTemplateResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CreateNodeTemplateResponseMultiError, or nil if none found. +func (m *CreateNodeTemplateResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *CreateNodeTemplateResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateNodeTemplateResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateNodeTemplateResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeTemplateResponseValidationError{ field: "WebAnnotations", @@ -7104,9 +11526,30 @@ func (m *CreateNodeTemplateResponse) Validate() error { } } + if len(errors) > 0 { + return CreateNodeTemplateResponseMultiError(errors) + } + return nil } +// CreateNodeTemplateResponseMultiError is an error wrapping multiple +// validation errors returned by CreateNodeTemplateResponse.ValidateAll() if +// the designated constraints aren't met. +type CreateNodeTemplateResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CreateNodeTemplateResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CreateNodeTemplateResponseMultiError) AllErrors() []error { return m } + // CreateNodeTemplateResponseValidationError is the validation error returned // by CreateNodeTemplateResponse.Validate if the designated constraints aren't met. type CreateNodeTemplateResponseValidationError struct { @@ -7165,12 +11608,26 @@ var _ interface { // Validate checks the field values on UpdateNodeTemplateRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateNodeTemplateRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateNodeTemplateRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateNodeTemplateRequestMultiError, or nil if none found. +func (m *UpdateNodeTemplateRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateNodeTemplateRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ProjectID // no validation rules for NodeTemplateID @@ -7184,7 +11641,26 @@ func (m *UpdateNodeTemplateRequest) Validate() error { for idx, item := range m.GetTaints() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeTemplateRequestValidationError{ + field: fmt.Sprintf("Taints[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeTemplateRequestValidationError{ + field: fmt.Sprintf("Taints[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeTemplateRequestValidationError{ field: fmt.Sprintf("Taints[%v]", idx), @@ -7202,7 +11678,26 @@ func (m *UpdateNodeTemplateRequest) Validate() error { // no validation rules for UserScript - if v, ok := interface{}(m.GetUnSchedulable()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetUnSchedulable()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeTemplateRequestValidationError{ + field: "UnSchedulable", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeTemplateRequestValidationError{ + field: "UnSchedulable", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetUnSchedulable()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeTemplateRequestValidationError{ field: "UnSchedulable", @@ -7215,7 +11710,26 @@ func (m *UpdateNodeTemplateRequest) Validate() error { for idx, item := range m.GetDataDisks() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeTemplateRequestValidationError{ + field: fmt.Sprintf("DataDisks[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeTemplateRequestValidationError{ + field: fmt.Sprintf("DataDisks[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeTemplateRequestValidationError{ field: fmt.Sprintf("DataDisks[%v]", idx), @@ -7231,7 +11745,26 @@ func (m *UpdateNodeTemplateRequest) Validate() error { // no validation rules for PreStartUserScript - if v, ok := interface{}(m.GetScaleOutExtraAddons()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetScaleOutExtraAddons()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeTemplateRequestValidationError{ + field: "ScaleOutExtraAddons", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeTemplateRequestValidationError{ + field: "ScaleOutExtraAddons", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetScaleOutExtraAddons()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeTemplateRequestValidationError{ field: "ScaleOutExtraAddons", @@ -7241,7 +11774,26 @@ func (m *UpdateNodeTemplateRequest) Validate() error { } } - if v, ok := interface{}(m.GetScaleInExtraAddons()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetScaleInExtraAddons()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeTemplateRequestValidationError{ + field: "ScaleInExtraAddons", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeTemplateRequestValidationError{ + field: "ScaleInExtraAddons", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetScaleInExtraAddons()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeTemplateRequestValidationError{ field: "ScaleInExtraAddons", @@ -7254,20 +11806,47 @@ func (m *UpdateNodeTemplateRequest) Validate() error { // no validation rules for NodeOS if l := utf8.RuneCountInString(m.GetUpdater()); l < 2 || l > 1024 { - return UpdateNodeTemplateRequestValidationError{ + err := UpdateNodeTemplateRequestValidationError{ field: "Updater", reason: "value length must be between 2 and 1024 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_UpdateNodeTemplateRequest_Updater_Pattern.MatchString(m.GetUpdater()) { - return UpdateNodeTemplateRequestValidationError{ + err := UpdateNodeTemplateRequestValidationError{ field: "Updater", reason: "value does not match regex pattern \"^[0-9a-zA-Z]+$\"", } + if !all { + return err + } + errors = append(errors, err) } - if v, ok := interface{}(m.GetRuntime()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetRuntime()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeTemplateRequestValidationError{ + field: "Runtime", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeTemplateRequestValidationError{ + field: "Runtime", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetRuntime()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeTemplateRequestValidationError{ field: "Runtime", @@ -7277,7 +11856,26 @@ func (m *UpdateNodeTemplateRequest) Validate() error { } } - if v, ok := interface{}(m.GetModule()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetModule()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeTemplateRequestValidationError{ + field: "Module", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeTemplateRequestValidationError{ + field: "Module", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetModule()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeTemplateRequestValidationError{ field: "Module", @@ -7287,7 +11885,26 @@ func (m *UpdateNodeTemplateRequest) Validate() error { } } - if v, ok := interface{}(m.GetScaleInPreScript()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetScaleInPreScript()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeTemplateRequestValidationError{ + field: "ScaleInPreScript", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeTemplateRequestValidationError{ + field: "ScaleInPreScript", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetScaleInPreScript()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeTemplateRequestValidationError{ field: "ScaleInPreScript", @@ -7297,7 +11914,26 @@ func (m *UpdateNodeTemplateRequest) Validate() error { } } - if v, ok := interface{}(m.GetScaleInPostScript()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetScaleInPostScript()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeTemplateRequestValidationError{ + field: "ScaleInPostScript", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeTemplateRequestValidationError{ + field: "ScaleInPostScript", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetScaleInPostScript()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeTemplateRequestValidationError{ field: "ScaleInPostScript", @@ -7307,7 +11943,26 @@ func (m *UpdateNodeTemplateRequest) Validate() error { } } - if v, ok := interface{}(m.GetAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeTemplateRequestValidationError{ + field: "Annotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeTemplateRequestValidationError{ + field: "Annotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeTemplateRequestValidationError{ field: "Annotations", @@ -7317,9 +11972,30 @@ func (m *UpdateNodeTemplateRequest) Validate() error { } } + if len(errors) > 0 { + return UpdateNodeTemplateRequestMultiError(errors) + } + return nil } +// UpdateNodeTemplateRequestMultiError is an error wrapping multiple validation +// errors returned by UpdateNodeTemplateRequest.ValidateAll() if the +// designated constraints aren't met. +type UpdateNodeTemplateRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateNodeTemplateRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateNodeTemplateRequestMultiError) AllErrors() []error { return m } + // UpdateNodeTemplateRequestValidationError is the validation error returned by // UpdateNodeTemplateRequest.Validate if the designated constraints aren't met. type UpdateNodeTemplateRequestValidationError struct { @@ -7380,19 +12056,52 @@ var _UpdateNodeTemplateRequest_Updater_Pattern = regexp.MustCompile("^[0-9a-zA-Z // Validate checks the field values on UpdateNodeTemplateResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateNodeTemplateResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateNodeTemplateResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateNodeTemplateResponseMultiError, or nil if none found. +func (m *UpdateNodeTemplateResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateNodeTemplateResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeTemplateResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeTemplateResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeTemplateResponseValidationError{ field: "WebAnnotations", @@ -7402,9 +12111,30 @@ func (m *UpdateNodeTemplateResponse) Validate() error { } } + if len(errors) > 0 { + return UpdateNodeTemplateResponseMultiError(errors) + } + return nil } +// UpdateNodeTemplateResponseMultiError is an error wrapping multiple +// validation errors returned by UpdateNodeTemplateResponse.ValidateAll() if +// the designated constraints aren't met. +type UpdateNodeTemplateResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateNodeTemplateResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateNodeTemplateResponseMultiError) AllErrors() []error { return m } + // UpdateNodeTemplateResponseValidationError is the validation error returned // by UpdateNodeTemplateResponse.Validate if the designated constraints aren't met. type UpdateNodeTemplateResponseValidationError struct { @@ -7463,19 +12193,54 @@ var _ interface { // Validate checks the field values on DeleteNodeTemplateRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DeleteNodeTemplateRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteNodeTemplateRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeleteNodeTemplateRequestMultiError, or nil if none found. +func (m *DeleteNodeTemplateRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteNodeTemplateRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ProjectID // no validation rules for NodeTemplateID + if len(errors) > 0 { + return DeleteNodeTemplateRequestMultiError(errors) + } + return nil } +// DeleteNodeTemplateRequestMultiError is an error wrapping multiple validation +// errors returned by DeleteNodeTemplateRequest.ValidateAll() if the +// designated constraints aren't met. +type DeleteNodeTemplateRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteNodeTemplateRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteNodeTemplateRequestMultiError) AllErrors() []error { return m } + // DeleteNodeTemplateRequestValidationError is the validation error returned by // DeleteNodeTemplateRequest.Validate if the designated constraints aren't met. type DeleteNodeTemplateRequestValidationError struct { @@ -7534,19 +12299,52 @@ var _ interface { // Validate checks the field values on DeleteNodeTemplateResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DeleteNodeTemplateResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteNodeTemplateResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeleteNodeTemplateResponseMultiError, or nil if none found. +func (m *DeleteNodeTemplateResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteNodeTemplateResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DeleteNodeTemplateResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DeleteNodeTemplateResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteNodeTemplateResponseValidationError{ field: "WebAnnotations", @@ -7556,9 +12354,30 @@ func (m *DeleteNodeTemplateResponse) Validate() error { } } + if len(errors) > 0 { + return DeleteNodeTemplateResponseMultiError(errors) + } + return nil } +// DeleteNodeTemplateResponseMultiError is an error wrapping multiple +// validation errors returned by DeleteNodeTemplateResponse.ValidateAll() if +// the designated constraints aren't met. +type DeleteNodeTemplateResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteNodeTemplateResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteNodeTemplateResponseMultiError) AllErrors() []error { return m } + // DeleteNodeTemplateResponseValidationError is the validation error returned // by DeleteNodeTemplateResponse.Validate if the designated constraints aren't met. type DeleteNodeTemplateResponseValidationError struct { @@ -7617,19 +12436,54 @@ var _ interface { // Validate checks the field values on GetNodeTemplateRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetNodeTemplateRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetNodeTemplateRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetNodeTemplateRequestMultiError, or nil if none found. +func (m *GetNodeTemplateRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetNodeTemplateRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ProjectID // no validation rules for NodeTemplateID + if len(errors) > 0 { + return GetNodeTemplateRequestMultiError(errors) + } + return nil } +// GetNodeTemplateRequestMultiError is an error wrapping multiple validation +// errors returned by GetNodeTemplateRequest.ValidateAll() if the designated +// constraints aren't met. +type GetNodeTemplateRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetNodeTemplateRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetNodeTemplateRequestMultiError) AllErrors() []error { return m } + // GetNodeTemplateRequestValidationError is the validation error returned by // GetNodeTemplateRequest.Validate if the designated constraints aren't met. type GetNodeTemplateRequestValidationError struct { @@ -7688,19 +12542,52 @@ var _ interface { // Validate checks the field values on GetNodeTemplateResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetNodeTemplateResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetNodeTemplateResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetNodeTemplateResponseMultiError, or nil if none found. +func (m *GetNodeTemplateResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetNodeTemplateResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetNodeTemplateResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetNodeTemplateResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetNodeTemplateResponseValidationError{ field: "Data", @@ -7710,7 +12597,26 @@ func (m *GetNodeTemplateResponse) Validate() error { } } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetNodeTemplateResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetNodeTemplateResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetNodeTemplateResponseValidationError{ field: "WebAnnotations", @@ -7720,9 +12626,30 @@ func (m *GetNodeTemplateResponse) Validate() error { } } + if len(errors) > 0 { + return GetNodeTemplateResponseMultiError(errors) + } + return nil } +// GetNodeTemplateResponseMultiError is an error wrapping multiple validation +// errors returned by GetNodeTemplateResponse.ValidateAll() if the designated +// constraints aren't met. +type GetNodeTemplateResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetNodeTemplateResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetNodeTemplateResponseMultiError) AllErrors() []error { return m } + // GetNodeTemplateResponseValidationError is the validation error returned by // GetNodeTemplateResponse.Validate if the designated constraints aren't met. type GetNodeTemplateResponseValidationError struct { @@ -7781,19 +12708,54 @@ var _ interface { // Validate checks the field values on ListNodeTemplateRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListNodeTemplateRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListNodeTemplateRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListNodeTemplateRequestMultiError, or nil if none found. +func (m *ListNodeTemplateRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListNodeTemplateRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ProjectID // no validation rules for NodeTemplateID + if len(errors) > 0 { + return ListNodeTemplateRequestMultiError(errors) + } + return nil } +// ListNodeTemplateRequestMultiError is an error wrapping multiple validation +// errors returned by ListNodeTemplateRequest.ValidateAll() if the designated +// constraints aren't met. +type ListNodeTemplateRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListNodeTemplateRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListNodeTemplateRequestMultiError) AllErrors() []error { return m } + // ListNodeTemplateRequestValidationError is the validation error returned by // ListNodeTemplateRequest.Validate if the designated constraints aren't met. type ListNodeTemplateRequestValidationError struct { @@ -7852,12 +12814,26 @@ var _ interface { // Validate checks the field values on ListNodeTemplateResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListNodeTemplateResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListNodeTemplateResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListNodeTemplateResponseMultiError, or nil if none found. +func (m *ListNodeTemplateResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListNodeTemplateResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -7867,7 +12843,26 @@ func (m *ListNodeTemplateResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListNodeTemplateResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListNodeTemplateResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListNodeTemplateResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -7879,9 +12874,30 @@ func (m *ListNodeTemplateResponse) Validate() error { } + if len(errors) > 0 { + return ListNodeTemplateResponseMultiError(errors) + } + return nil } +// ListNodeTemplateResponseMultiError is an error wrapping multiple validation +// errors returned by ListNodeTemplateResponse.ValidateAll() if the designated +// constraints aren't met. +type ListNodeTemplateResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListNodeTemplateResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListNodeTemplateResponseMultiError) AllErrors() []error { return m } + // ListNodeTemplateResponseValidationError is the validation error returned by // ListNodeTemplateResponse.Validate if the designated constraints aren't met. type ListNodeTemplateResponseValidationError struct { @@ -7939,12 +12955,26 @@ var _ interface { } = ListNodeTemplateResponseValidationError{} // Validate checks the field values on Project with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *Project) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on Project with the rules defined in the +// proto definition for this message. If any rules are violated, the result is +// a list of violation errors wrapped in ProjectMultiError, or nil if none found. +func (m *Project) ValidateAll() error { + return m.validate(true) +} + +func (m *Project) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ProjectID // no validation rules for Name @@ -7983,30 +13013,79 @@ func (m *Project) Validate() error { // no validation rules for IsSecret - for key, val := range m.GetCredentials() { - _ = val - - // no validation rules for Credentials[key] - - if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return ProjectValidationError{ - field: fmt.Sprintf("Credentials[%v]", key), - reason: "embedded message failed validation", - cause: err, + { + sorted_keys := make([]string, len(m.GetCredentials())) + i := 0 + for key := range m.GetCredentials() { + sorted_keys[i] = key + i++ + } + sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) + for _, key := range sorted_keys { + val := m.GetCredentials()[key] + _ = val + + // no validation rules for Credentials[key] + + if all { + switch v := interface{}(val).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ProjectValidationError{ + field: fmt.Sprintf("Credentials[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ProjectValidationError{ + field: fmt.Sprintf("Credentials[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return ProjectValidationError{ + field: fmt.Sprintf("Credentials[%v]", key), + reason: "embedded message failed validation", + cause: err, + } } } - } + } } // no validation rules for CreatTime // no validation rules for UpdateTime + if len(errors) > 0 { + return ProjectMultiError(errors) + } + return nil } +// ProjectMultiError is an error wrapping multiple validation errors returned +// by Project.ValidateAll() if the designated constraints aren't met. +type ProjectMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ProjectMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ProjectMultiError) AllErrors() []error { return m } + // ProjectValidationError is the validation error returned by Project.Validate // if the designated constraints aren't met. type ProjectValidationError struct { @@ -8062,21 +13141,39 @@ var _ interface { } = ProjectValidationError{} // Validate checks the field values on Task with the rules defined in the proto -// definition for this message. If any rules are violated, an error is returned. +// definition for this message. If any rules are violated, the first error +// encountered is returned, or nil if there are no violations. func (m *Task) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on Task with the rules defined in the +// proto definition for this message. If any rules are violated, the result is +// a list of violation errors wrapped in TaskMultiError, or nil if none found. +func (m *Task) ValidateAll() error { + return m.validate(true) +} + +func (m *Task) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for TaskID // no validation rules for TaskType if _, ok := _Task_Status_InLookup[m.GetStatus()]; !ok { - return TaskValidationError{ + err := TaskValidationError{ field: "Status", reason: "value must be in list [INITIALIZING RUNNING SUCCESS FAILURE TIMEOUT FORCETERMINATE]", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Message @@ -8089,21 +13186,50 @@ func (m *Task) Validate() error { // no validation rules for CurrentStep - for key, val := range m.GetSteps() { - _ = val - - // no validation rules for Steps[key] - - if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return TaskValidationError{ - field: fmt.Sprintf("Steps[%v]", key), - reason: "embedded message failed validation", - cause: err, + { + sorted_keys := make([]string, len(m.GetSteps())) + i := 0 + for key := range m.GetSteps() { + sorted_keys[i] = key + i++ + } + sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) + for _, key := range sorted_keys { + val := m.GetSteps()[key] + _ = val + + // no validation rules for Steps[key] + + if all { + switch v := interface{}(val).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, TaskValidationError{ + field: fmt.Sprintf("Steps[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, TaskValidationError{ + field: fmt.Sprintf("Steps[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return TaskValidationError{ + field: fmt.Sprintf("Steps[%v]", key), + reason: "embedded message failed validation", + cause: err, + } } } - } + } } // no validation rules for ClusterID @@ -8124,9 +13250,29 @@ func (m *Task) Validate() error { // no validation rules for NodeGroupID + if len(errors) > 0 { + return TaskMultiError(errors) + } + return nil } +// TaskMultiError is an error wrapping multiple validation errors returned by +// Task.ValidateAll() if the designated constraints aren't met. +type TaskMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m TaskMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m TaskMultiError) AllErrors() []error { return m } + // TaskValidationError is the validation error returned by Task.Validate if the // designated constraints aren't met. type TaskValidationError struct { @@ -8191,12 +13337,26 @@ var _Task_Status_InLookup = map[string]struct{}{ } // Validate checks the field values on Step with the rules defined in the proto -// definition for this message. If any rules are violated, an error is returned. +// definition for this message. If any rules are violated, the first error +// encountered is returned, or nil if there are no violations. func (m *Step) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on Step with the rules defined in the +// proto definition for this message. If any rules are violated, the result is +// a list of violation errors wrapped in StepMultiError, or nil if none found. +func (m *Step) ValidateAll() error { + return m.validate(true) +} + +func (m *Step) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Name // no validation rules for System @@ -8214,10 +13374,14 @@ func (m *Step) Validate() error { // no validation rules for ExecutionTime if _, ok := _Step_Status_InLookup[m.GetStatus()]; !ok { - return StepValidationError{ + err := StepValidationError{ field: "Status", reason: "value must be in list [NOTSTARTED RUNNING SUCCESS FAILURE TIMEOUT FORCETERMINATE]", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Message @@ -8230,9 +13394,29 @@ func (m *Step) Validate() error { // no validation rules for SkipOnFailed + if len(errors) > 0 { + return StepMultiError(errors) + } + return nil } +// StepMultiError is an error wrapping multiple validation errors returned by +// Step.ValidateAll() if the designated constraints aren't met. +type StepMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m StepMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m StepMultiError) AllErrors() []error { return m } + // StepValidationError is the validation error returned by Step.Validate if the // designated constraints aren't met. type StepValidationError struct { @@ -8297,12 +13481,26 @@ var _Step_Status_InLookup = map[string]struct{}{ } // Validate checks the field values on TkeCidr with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *TkeCidr) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on TkeCidr with the rules defined in the +// proto definition for this message. If any rules are violated, the result is +// a list of violation errors wrapped in TkeCidrMultiError, or nil if none found. +func (m *TkeCidr) ValidateAll() error { + return m.validate(true) +} + +func (m *TkeCidr) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for VPC // no validation rules for CIDR @@ -8317,9 +13515,29 @@ func (m *TkeCidr) Validate() error { // no validation rules for UpdateTime + if len(errors) > 0 { + return TkeCidrMultiError(errors) + } + return nil } +// TkeCidrMultiError is an error wrapping multiple validation errors returned +// by TkeCidr.ValidateAll() if the designated constraints aren't met. +type TkeCidrMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m TkeCidrMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m TkeCidrMultiError) AllErrors() []error { return m } + // TkeCidrValidationError is the validation error returned by TkeCidr.Validate // if the designated constraints aren't met. type TkeCidrValidationError struct { @@ -8375,13 +13593,27 @@ var _ interface { } = TkeCidrValidationError{} // Validate checks the field values on TkeCidrCount with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *TkeCidrCount) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on TkeCidrCount with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in TkeCidrCountMultiError, or +// nil if none found. +func (m *TkeCidrCount) ValidateAll() error { + return m.validate(true) +} + +func (m *TkeCidrCount) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Count // no validation rules for VPC @@ -8390,9 +13622,29 @@ func (m *TkeCidrCount) Validate() error { // no validation rules for Status + if len(errors) > 0 { + return TkeCidrCountMultiError(errors) + } + return nil } +// TkeCidrCountMultiError is an error wrapping multiple validation errors +// returned by TkeCidrCount.ValidateAll() if the designated constraints aren't met. +type TkeCidrCountMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m TkeCidrCountMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m TkeCidrCountMultiError) AllErrors() []error { return m } + // TkeCidrCountValidationError is the validation error returned by // TkeCidrCount.Validate if the designated constraints aren't met. type TkeCidrCountValidationError struct { @@ -8448,151 +13700,279 @@ var _ interface { } = TkeCidrCountValidationError{} // Validate checks the field values on CreateClusterReq with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *CreateClusterReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CreateClusterReq with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CreateClusterReqMultiError, or nil if none found. +func (m *CreateClusterReq) ValidateAll() error { + return m.validate(true) +} + +func (m *CreateClusterReq) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ClusterID if l := utf8.RuneCountInString(m.GetClusterName()); l < 1 || l > 1024 { - return CreateClusterReqValidationError{ + err := CreateClusterReqValidationError{ field: "ClusterName", reason: "value length must be between 1 and 1024 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetProvider()) > 32 { - return CreateClusterReqValidationError{ + err := CreateClusterReqValidationError{ field: "Provider", reason: "value length must be at most 32 runes", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetRegion()); l < 1 || l > 100 { - return CreateClusterReqValidationError{ + err := CreateClusterReqValidationError{ field: "Region", reason: "value length must be between 1 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_CreateClusterReq_Region_Pattern.MatchString(m.GetRegion()) { - return CreateClusterReqValidationError{ + err := CreateClusterReqValidationError{ field: "Region", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetVpcID()) > 32 { - return CreateClusterReqValidationError{ + err := CreateClusterReqValidationError{ field: "VpcID", reason: "value length must be at most 32 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetProjectID()) > 100 { - return CreateClusterReqValidationError{ + err := CreateClusterReqValidationError{ field: "ProjectID", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } if !_CreateClusterReq_ProjectID_Pattern.MatchString(m.GetProjectID()) { - return CreateClusterReqValidationError{ + err := CreateClusterReqValidationError{ field: "ProjectID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetBusinessID()) > 100 { - return CreateClusterReqValidationError{ + err := CreateClusterReqValidationError{ field: "BusinessID", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } if !_CreateClusterReq_BusinessID_Pattern.MatchString(m.GetBusinessID()) { - return CreateClusterReqValidationError{ + err := CreateClusterReqValidationError{ field: "BusinessID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if _, ok := _CreateClusterReq_Environment_InLookup[m.GetEnvironment()]; !ok { - return CreateClusterReqValidationError{ + err := CreateClusterReqValidationError{ field: "Environment", reason: "value must be in list [stag debug prod]", } + if !all { + return err + } + errors = append(errors, err) } if _, ok := _CreateClusterReq_EngineType_InLookup[m.GetEngineType()]; !ok { - return CreateClusterReqValidationError{ + err := CreateClusterReqValidationError{ field: "EngineType", reason: "value must be in list [k8s mesos]", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for IsExclusive if _, ok := _CreateClusterReq_ClusterType_InLookup[m.GetClusterType()]; !ok { - return CreateClusterReqValidationError{ + err := CreateClusterReqValidationError{ field: "ClusterType", reason: "value must be in list [federation single]", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for FederationClusterID if len(m.GetLabels()) > 20 { - return CreateClusterReqValidationError{ + err := CreateClusterReqValidationError{ field: "Labels", reason: "value must contain no more than 20 pair(s)", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetCreator()); l < 2 || l > 20 { - return CreateClusterReqValidationError{ + err := CreateClusterReqValidationError{ field: "Creator", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for OnlyCreateInfo - for key, val := range m.GetBcsAddons() { - _ = val - - // no validation rules for BcsAddons[key] - - if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return CreateClusterReqValidationError{ - field: fmt.Sprintf("BcsAddons[%v]", key), - reason: "embedded message failed validation", - cause: err, + { + sorted_keys := make([]string, len(m.GetBcsAddons())) + i := 0 + for key := range m.GetBcsAddons() { + sorted_keys[i] = key + i++ + } + sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) + for _, key := range sorted_keys { + val := m.GetBcsAddons()[key] + _ = val + + // no validation rules for BcsAddons[key] + + if all { + switch v := interface{}(val).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateClusterReqValidationError{ + field: fmt.Sprintf("BcsAddons[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateClusterReqValidationError{ + field: fmt.Sprintf("BcsAddons[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return CreateClusterReqValidationError{ + field: fmt.Sprintf("BcsAddons[%v]", key), + reason: "embedded message failed validation", + cause: err, + } } } - } + } } - for key, val := range m.GetExtraAddons() { - _ = val - - // no validation rules for ExtraAddons[key] - - if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return CreateClusterReqValidationError{ - field: fmt.Sprintf("ExtraAddons[%v]", key), - reason: "embedded message failed validation", - cause: err, + { + sorted_keys := make([]string, len(m.GetExtraAddons())) + i := 0 + for key := range m.GetExtraAddons() { + sorted_keys[i] = key + i++ + } + sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) + for _, key := range sorted_keys { + val := m.GetExtraAddons()[key] + _ = val + + // no validation rules for ExtraAddons[key] + + if all { + switch v := interface{}(val).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateClusterReqValidationError{ + field: fmt.Sprintf("ExtraAddons[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateClusterReqValidationError{ + field: fmt.Sprintf("ExtraAddons[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return CreateClusterReqValidationError{ + field: fmt.Sprintf("ExtraAddons[%v]", key), + reason: "embedded message failed validation", + cause: err, + } } } - } + } } // no validation rules for CloudID @@ -8600,10 +13980,14 @@ func (m *CreateClusterReq) Validate() error { // no validation rules for ManageType if m.GetNetworkSettings() == nil { - return CreateClusterReqValidationError{ + err := CreateClusterReqValidationError{ field: "NetworkSettings", reason: "value is required", } + if !all { + return err + } + errors = append(errors, err) } if a := m.GetNetworkSettings(); a != nil { @@ -8611,17 +13995,40 @@ func (m *CreateClusterReq) Validate() error { } if m.GetClusterBasicSettings() == nil { - return CreateClusterReqValidationError{ + err := CreateClusterReqValidationError{ field: "ClusterBasicSettings", reason: "value is required", } + if !all { + return err + } + errors = append(errors, err) } if a := m.GetClusterBasicSettings(); a != nil { } - if v, ok := interface{}(m.GetClusterAdvanceSettings()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetClusterAdvanceSettings()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateClusterReqValidationError{ + field: "ClusterAdvanceSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateClusterReqValidationError{ + field: "ClusterAdvanceSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetClusterAdvanceSettings()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateClusterReqValidationError{ field: "ClusterAdvanceSettings", @@ -8631,7 +14038,26 @@ func (m *CreateClusterReq) Validate() error { } } - if v, ok := interface{}(m.GetNodeSettings()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetNodeSettings()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateClusterReqValidationError{ + field: "NodeSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateClusterReqValidationError{ + field: "NodeSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetNodeSettings()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateClusterReqValidationError{ field: "NodeSettings", @@ -8652,7 +14078,26 @@ func (m *CreateClusterReq) Validate() error { for idx, item := range m.GetInstances() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateClusterReqValidationError{ + field: fmt.Sprintf("Instances[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateClusterReqValidationError{ + field: fmt.Sprintf("Instances[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateClusterReqValidationError{ field: fmt.Sprintf("Instances[%v]", idx), @@ -8682,9 +14127,30 @@ func (m *CreateClusterReq) Validate() error { // no validation rules for NodeTemplateID + if len(errors) > 0 { + return CreateClusterReqMultiError(errors) + } + return nil } +// CreateClusterReqMultiError is an error wrapping multiple validation errors +// returned by CreateClusterReq.ValidateAll() if the designated constraints +// aren't met. +type CreateClusterReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CreateClusterReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CreateClusterReqMultiError) AllErrors() []error { return m } + // CreateClusterReqValidationError is the validation error returned by // CreateClusterReq.Validate if the designated constraints aren't met. type CreateClusterReqValidationError struct { @@ -8762,20 +14228,53 @@ var _CreateClusterReq_ClusterType_InLookup = map[string]struct{}{ } // Validate checks the field values on CreateClusterResp with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *CreateClusterResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CreateClusterResp with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CreateClusterRespMultiError, or nil if none found. +func (m *CreateClusterResp) ValidateAll() error { + return m.validate(true) +} + +func (m *CreateClusterResp) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateClusterRespValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateClusterRespValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateClusterRespValidationError{ field: "Data", @@ -8785,7 +14284,26 @@ func (m *CreateClusterResp) Validate() error { } } - if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetTask()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateClusterRespValidationError{ + field: "Task", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateClusterRespValidationError{ + field: "Task", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateClusterRespValidationError{ field: "Task", @@ -8795,7 +14313,26 @@ func (m *CreateClusterResp) Validate() error { } } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateClusterRespValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateClusterRespValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateClusterRespValidationError{ field: "WebAnnotations", @@ -8805,9 +14342,30 @@ func (m *CreateClusterResp) Validate() error { } } + if len(errors) > 0 { + return CreateClusterRespMultiError(errors) + } + return nil } +// CreateClusterRespMultiError is an error wrapping multiple validation errors +// returned by CreateClusterResp.ValidateAll() if the designated constraints +// aren't met. +type CreateClusterRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CreateClusterRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CreateClusterRespMultiError) AllErrors() []error { return m } + // CreateClusterRespValidationError is the validation error returned by // CreateClusterResp.Validate if the designated constraints aren't met. type CreateClusterRespValidationError struct { @@ -8866,126 +14424,219 @@ var _ interface { // Validate checks the field values on CreateVirtualClusterReq with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CreateVirtualClusterReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CreateVirtualClusterReq with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CreateVirtualClusterReqMultiError, or nil if none found. +func (m *CreateVirtualClusterReq) ValidateAll() error { + return m.validate(true) +} + +func (m *CreateVirtualClusterReq) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ClusterID if l := utf8.RuneCountInString(m.GetClusterName()); l < 1 || l > 1024 { - return CreateVirtualClusterReqValidationError{ + err := CreateVirtualClusterReqValidationError{ field: "ClusterName", reason: "value length must be between 1 and 1024 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetProvider()) > 32 { - return CreateVirtualClusterReqValidationError{ + err := CreateVirtualClusterReqValidationError{ field: "Provider", reason: "value length must be at most 32 runes", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetRegion()); l < 1 || l > 100 { - return CreateVirtualClusterReqValidationError{ + err := CreateVirtualClusterReqValidationError{ field: "Region", reason: "value length must be between 1 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_CreateVirtualClusterReq_Region_Pattern.MatchString(m.GetRegion()) { - return CreateVirtualClusterReqValidationError{ + err := CreateVirtualClusterReqValidationError{ field: "Region", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetVpcID()) > 32 { - return CreateVirtualClusterReqValidationError{ + err := CreateVirtualClusterReqValidationError{ field: "VpcID", reason: "value length must be at most 32 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetProjectID()) > 100 { - return CreateVirtualClusterReqValidationError{ + err := CreateVirtualClusterReqValidationError{ field: "ProjectID", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } if !_CreateVirtualClusterReq_ProjectID_Pattern.MatchString(m.GetProjectID()) { - return CreateVirtualClusterReqValidationError{ + err := CreateVirtualClusterReqValidationError{ field: "ProjectID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetBusinessID()) > 100 { - return CreateVirtualClusterReqValidationError{ + err := CreateVirtualClusterReqValidationError{ field: "BusinessID", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } if !_CreateVirtualClusterReq_BusinessID_Pattern.MatchString(m.GetBusinessID()) { - return CreateVirtualClusterReqValidationError{ + err := CreateVirtualClusterReqValidationError{ field: "BusinessID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if _, ok := _CreateVirtualClusterReq_Environment_InLookup[m.GetEnvironment()]; !ok { - return CreateVirtualClusterReqValidationError{ + err := CreateVirtualClusterReqValidationError{ field: "Environment", reason: "value must be in list [stag debug prod]", } + if !all { + return err + } + errors = append(errors, err) } if _, ok := _CreateVirtualClusterReq_EngineType_InLookup[m.GetEngineType()]; !ok { - return CreateVirtualClusterReqValidationError{ + err := CreateVirtualClusterReqValidationError{ field: "EngineType", reason: "value must be in list [k8s mesos]", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for IsExclusive if _, ok := _CreateVirtualClusterReq_ClusterType_InLookup[m.GetClusterType()]; !ok { - return CreateVirtualClusterReqValidationError{ + err := CreateVirtualClusterReqValidationError{ field: "ClusterType", reason: "value must be in list [federation single virtual]", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for HostClusterID if _, ok := _CreateVirtualClusterReq_HostClusterNetwork_InLookup[m.GetHostClusterNetwork()]; !ok { - return CreateVirtualClusterReqValidationError{ + err := CreateVirtualClusterReqValidationError{ field: "HostClusterNetwork", reason: "value must be in list [devnet idc ]", } + if !all { + return err + } + errors = append(errors, err) } if len(m.GetLabels()) > 20 { - return CreateVirtualClusterReqValidationError{ + err := CreateVirtualClusterReqValidationError{ field: "Labels", reason: "value must contain no more than 20 pair(s)", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetCreator()); l < 2 || l > 20 { - return CreateVirtualClusterReqValidationError{ + err := CreateVirtualClusterReqValidationError{ field: "Creator", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for OnlyCreateInfo - if v, ok := interface{}(m.GetNetworkSettings()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetNetworkSettings()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateVirtualClusterReqValidationError{ + field: "NetworkSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateVirtualClusterReqValidationError{ + field: "NetworkSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetNetworkSettings()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateVirtualClusterReqValidationError{ field: "NetworkSettings", @@ -8995,7 +14646,26 @@ func (m *CreateVirtualClusterReq) Validate() error { } } - if v, ok := interface{}(m.GetClusterBasicSettings()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetClusterBasicSettings()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateVirtualClusterReqValidationError{ + field: "ClusterBasicSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateVirtualClusterReqValidationError{ + field: "ClusterBasicSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetClusterBasicSettings()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateVirtualClusterReqValidationError{ field: "ClusterBasicSettings", @@ -9005,7 +14675,26 @@ func (m *CreateVirtualClusterReq) Validate() error { } } - if v, ok := interface{}(m.GetClusterAdvanceSettings()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetClusterAdvanceSettings()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateVirtualClusterReqValidationError{ + field: "ClusterAdvanceSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateVirtualClusterReqValidationError{ + field: "ClusterAdvanceSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetClusterAdvanceSettings()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateVirtualClusterReqValidationError{ field: "ClusterAdvanceSettings", @@ -9015,7 +14704,26 @@ func (m *CreateVirtualClusterReq) Validate() error { } } - if v, ok := interface{}(m.GetNodeSettings()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetNodeSettings()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateVirtualClusterReqValidationError{ + field: "NodeSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateVirtualClusterReqValidationError{ + field: "NodeSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetNodeSettings()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateVirtualClusterReqValidationError{ field: "NodeSettings", @@ -9029,7 +14737,26 @@ func (m *CreateVirtualClusterReq) Validate() error { // no validation rules for Description - if v, ok := interface{}(m.GetNs()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetNs()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateVirtualClusterReqValidationError{ + field: "Ns", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateVirtualClusterReqValidationError{ + field: "Ns", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetNs()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateVirtualClusterReqValidationError{ field: "Ns", @@ -9041,9 +14768,30 @@ func (m *CreateVirtualClusterReq) Validate() error { // no validation rules for ProjectCode + if len(errors) > 0 { + return CreateVirtualClusterReqMultiError(errors) + } + return nil } +// CreateVirtualClusterReqMultiError is an error wrapping multiple validation +// errors returned by CreateVirtualClusterReq.ValidateAll() if the designated +// constraints aren't met. +type CreateVirtualClusterReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CreateVirtualClusterReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CreateVirtualClusterReqMultiError) AllErrors() []error { return m } + // CreateVirtualClusterReqValidationError is the validation error returned by // CreateVirtualClusterReq.Validate if the designated constraints aren't met. type CreateVirtualClusterReqValidationError struct { @@ -9130,20 +14878,53 @@ var _CreateVirtualClusterReq_HostClusterNetwork_InLookup = map[string]struct{}{ } // Validate checks the field values on NamespaceInfo with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *NamespaceInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on NamespaceInfo with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in NamespaceInfoMultiError, or +// nil if none found. +func (m *NamespaceInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *NamespaceInfo) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Name // no validation rules for Labels // no validation rules for Annotations - if v, ok := interface{}(m.GetQuota()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetQuota()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NamespaceInfoValidationError{ + field: "Quota", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NamespaceInfoValidationError{ + field: "Quota", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetQuota()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NamespaceInfoValidationError{ field: "Quota", @@ -9153,9 +14934,30 @@ func (m *NamespaceInfo) Validate() error { } } + if len(errors) > 0 { + return NamespaceInfoMultiError(errors) + } + return nil } +// NamespaceInfoMultiError is an error wrapping multiple validation errors +// returned by NamespaceInfo.ValidateAll() if the designated constraints +// aren't met. +type NamespaceInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m NamespaceInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m NamespaceInfoMultiError) AllErrors() []error { return m } + // NamespaceInfoValidationError is the validation error returned by // NamespaceInfo.Validate if the designated constraints aren't met. type NamespaceInfoValidationError struct { @@ -9211,13 +15013,27 @@ var _ interface { } = NamespaceInfoValidationError{} // Validate checks the field values on NamespaceQuota with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *NamespaceQuota) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on NamespaceQuota with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in NamespaceQuotaMultiError, +// or nil if none found. +func (m *NamespaceQuota) ValidateAll() error { + return m.validate(true) +} + +func (m *NamespaceQuota) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for CpuRequests // no validation rules for CpuLimits @@ -9226,9 +15042,30 @@ func (m *NamespaceQuota) Validate() error { // no validation rules for MemoryLimits + if len(errors) > 0 { + return NamespaceQuotaMultiError(errors) + } + return nil } +// NamespaceQuotaMultiError is an error wrapping multiple validation errors +// returned by NamespaceQuota.ValidateAll() if the designated constraints +// aren't met. +type NamespaceQuotaMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m NamespaceQuotaMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m NamespaceQuotaMultiError) AllErrors() []error { return m } + // NamespaceQuotaValidationError is the validation error returned by // NamespaceQuota.Validate if the designated constraints aren't met. type NamespaceQuotaValidationError struct { @@ -9285,19 +15122,52 @@ var _ interface { // Validate checks the field values on CreateVirtualClusterResp with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CreateVirtualClusterResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CreateVirtualClusterResp with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CreateVirtualClusterRespMultiError, or nil if none found. +func (m *CreateVirtualClusterResp) ValidateAll() error { + return m.validate(true) +} + +func (m *CreateVirtualClusterResp) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateVirtualClusterRespValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateVirtualClusterRespValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateVirtualClusterRespValidationError{ field: "Data", @@ -9307,7 +15177,26 @@ func (m *CreateVirtualClusterResp) Validate() error { } } - if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetTask()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateVirtualClusterRespValidationError{ + field: "Task", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateVirtualClusterRespValidationError{ + field: "Task", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateVirtualClusterRespValidationError{ field: "Task", @@ -9317,7 +15206,26 @@ func (m *CreateVirtualClusterResp) Validate() error { } } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateVirtualClusterRespValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateVirtualClusterRespValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateVirtualClusterRespValidationError{ field: "WebAnnotations", @@ -9327,9 +15235,30 @@ func (m *CreateVirtualClusterResp) Validate() error { } } + if len(errors) > 0 { + return CreateVirtualClusterRespMultiError(errors) + } + return nil } +// CreateVirtualClusterRespMultiError is an error wrapping multiple validation +// errors returned by CreateVirtualClusterResp.ValidateAll() if the designated +// constraints aren't met. +type CreateVirtualClusterRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CreateVirtualClusterRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CreateVirtualClusterRespMultiError) AllErrors() []error { return m } + // CreateVirtualClusterRespValidationError is the validation error returned by // CreateVirtualClusterResp.Validate if the designated constraints aren't met. type CreateVirtualClusterRespValidationError struct { @@ -9387,23 +15316,62 @@ var _ interface { } = CreateVirtualClusterRespValidationError{} // Validate checks the field values on KubeConfigReq with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *KubeConfigReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on KubeConfigReq with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in KubeConfigReqMultiError, or +// nil if none found. +func (m *KubeConfigReq) ValidateAll() error { + return m.validate(true) +} + +func (m *KubeConfigReq) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetKubeConfig()) < 1 { - return KubeConfigReqValidationError{ + err := KubeConfigReqValidationError{ field: "KubeConfig", reason: "value length must be at least 1 runes", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return KubeConfigReqMultiError(errors) } return nil } +// KubeConfigReqMultiError is an error wrapping multiple validation errors +// returned by KubeConfigReq.ValidateAll() if the designated constraints +// aren't met. +type KubeConfigReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m KubeConfigReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m KubeConfigReqMultiError) AllErrors() []error { return m } + // KubeConfigReqValidationError is the validation error returned by // KubeConfigReq.Validate if the designated constraints aren't met. type KubeConfigReqValidationError struct { @@ -9460,47 +15428,98 @@ var _ interface { // Validate checks the field values on KubeConfigConnectReq with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *KubeConfigConnectReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on KubeConfigConnectReq with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// KubeConfigConnectReqMultiError, or nil if none found. +func (m *KubeConfigConnectReq) ValidateAll() error { + return m.validate(true) +} + +func (m *KubeConfigConnectReq) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ClusterID // no validation rules for IsExtranet if l := utf8.RuneCountInString(m.GetCloudID()); l < 1 || l > 1024 { - return KubeConfigConnectReqValidationError{ + err := KubeConfigConnectReqValidationError{ field: "CloudID", reason: "value length must be between 1 and 1024 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetAccountID()) > 1024 { - return KubeConfigConnectReqValidationError{ + err := KubeConfigConnectReqValidationError{ field: "AccountID", reason: "value length must be at most 1024 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetRegion()) > 100 { - return KubeConfigConnectReqValidationError{ + err := KubeConfigConnectReqValidationError{ field: "Region", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } if !_KubeConfigConnectReq_Region_Pattern.MatchString(m.GetRegion()) { - return KubeConfigConnectReqValidationError{ + err := KubeConfigConnectReqValidationError{ field: "Region", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return KubeConfigConnectReqMultiError(errors) } return nil } +// KubeConfigConnectReqMultiError is an error wrapping multiple validation +// errors returned by KubeConfigConnectReq.ValidateAll() if the designated +// constraints aren't met. +type KubeConfigConnectReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m KubeConfigConnectReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m KubeConfigConnectReqMultiError) AllErrors() []error { return m } + // KubeConfigConnectReqValidationError is the validation error returned by // KubeConfigConnectReq.Validate if the designated constraints aren't met. type KubeConfigConnectReqValidationError struct { @@ -9560,22 +15579,57 @@ var _ interface { var _KubeConfigConnectReq_Region_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$") // Validate checks the field values on KubeConfigResp with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *KubeConfigResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on KubeConfigResp with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in KubeConfigRespMultiError, +// or nil if none found. +func (m *KubeConfigResp) ValidateAll() error { + return m.validate(true) +} + +func (m *KubeConfigResp) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result + if len(errors) > 0 { + return KubeConfigRespMultiError(errors) + } + return nil } +// KubeConfigRespMultiError is an error wrapping multiple validation errors +// returned by KubeConfigResp.ValidateAll() if the designated constraints +// aren't met. +type KubeConfigRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m KubeConfigRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m KubeConfigRespMultiError) AllErrors() []error { return m } + // KubeConfigRespValidationError is the validation error returned by // KubeConfigResp.Validate if the designated constraints aren't met. type KubeConfigRespValidationError struct { @@ -9632,21 +15686,56 @@ var _ interface { // Validate checks the field values on KubeConfigConnectResp with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *KubeConfigConnectResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on KubeConfigConnectResp with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// KubeConfigConnectRespMultiError, or nil if none found. +func (m *KubeConfigConnectResp) ValidateAll() error { + return m.validate(true) +} + +func (m *KubeConfigConnectResp) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result + if len(errors) > 0 { + return KubeConfigConnectRespMultiError(errors) + } + return nil } +// KubeConfigConnectRespMultiError is an error wrapping multiple validation +// errors returned by KubeConfigConnectResp.ValidateAll() if the designated +// constraints aren't met. +type KubeConfigConnectRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m KubeConfigConnectRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m KubeConfigConnectRespMultiError) AllErrors() []error { return m } + // KubeConfigConnectRespValidationError is the validation error returned by // KubeConfigConnectResp.Validate if the designated constraints aren't met. type KubeConfigConnectRespValidationError struct { @@ -9704,20 +15793,55 @@ var _ interface { } = KubeConfigConnectRespValidationError{} // Validate checks the field values on ImportCloudMode with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *ImportCloudMode) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ImportCloudMode with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ImportCloudModeMultiError, or nil if none found. +func (m *ImportCloudMode) ValidateAll() error { + return m.validate(true) +} + +func (m *ImportCloudMode) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for CloudID // no validation rules for KubeConfig + if len(errors) > 0 { + return ImportCloudModeMultiError(errors) + } + return nil } +// ImportCloudModeMultiError is an error wrapping multiple validation errors +// returned by ImportCloudMode.ValidateAll() if the designated constraints +// aren't met. +type ImportCloudModeMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ImportCloudModeMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ImportCloudModeMultiError) AllErrors() []error { return m } + // ImportCloudModeValidationError is the validation error returned by // ImportCloudMode.Validate if the designated constraints aren't met. type ImportCloudModeValidationError struct { @@ -9773,88 +15897,161 @@ var _ interface { } = ImportCloudModeValidationError{} // Validate checks the field values on ImportClusterReq with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *ImportClusterReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ImportClusterReq with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ImportClusterReqMultiError, or nil if none found. +func (m *ImportClusterReq) ValidateAll() error { + return m.validate(true) +} + +func (m *ImportClusterReq) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ClusterID if l := utf8.RuneCountInString(m.GetClusterName()); l < 1 || l > 1024 { - return ImportClusterReqValidationError{ + err := ImportClusterReqValidationError{ field: "ClusterName", reason: "value length must be between 1 and 1024 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Description if l := utf8.RuneCountInString(m.GetProvider()); l < 1 || l > 1024 { - return ImportClusterReqValidationError{ + err := ImportClusterReqValidationError{ field: "Provider", reason: "value length must be between 1 and 1024 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetRegion()) > 100 { - return ImportClusterReqValidationError{ + err := ImportClusterReqValidationError{ field: "Region", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } if !_ImportClusterReq_Region_Pattern.MatchString(m.GetRegion()) { - return ImportClusterReqValidationError{ + err := ImportClusterReqValidationError{ field: "Region", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetProjectID()); l < 1 || l > 100 { - return ImportClusterReqValidationError{ + err := ImportClusterReqValidationError{ field: "ProjectID", reason: "value length must be between 1 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_ImportClusterReq_ProjectID_Pattern.MatchString(m.GetProjectID()) { - return ImportClusterReqValidationError{ + err := ImportClusterReqValidationError{ field: "ProjectID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetBusinessID()); l < 1 || l > 100 { - return ImportClusterReqValidationError{ + err := ImportClusterReqValidationError{ field: "BusinessID", reason: "value length must be between 1 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_ImportClusterReq_BusinessID_Pattern.MatchString(m.GetBusinessID()) { - return ImportClusterReqValidationError{ + err := ImportClusterReqValidationError{ field: "BusinessID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if _, ok := _ImportClusterReq_Environment_InLookup[m.GetEnvironment()]; !ok { - return ImportClusterReqValidationError{ + err := ImportClusterReqValidationError{ field: "Environment", reason: "value must be in list [stag debug prod]", } + if !all { + return err + } + errors = append(errors, err) } if _, ok := _ImportClusterReq_EngineType_InLookup[m.GetEngineType()]; !ok { - return ImportClusterReqValidationError{ + err := ImportClusterReqValidationError{ field: "EngineType", reason: "value must be in list [k8s mesos ]", } + if !all { + return err + } + errors = append(errors, err) } - if v, ok := interface{}(m.GetIsExclusive()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetIsExclusive()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ImportClusterReqValidationError{ + field: "IsExclusive", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ImportClusterReqValidationError{ + field: "IsExclusive", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetIsExclusive()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ImportClusterReqValidationError{ field: "IsExclusive", @@ -9865,31 +16062,47 @@ func (m *ImportClusterReq) Validate() error { } if _, ok := _ImportClusterReq_ClusterType_InLookup[m.GetClusterType()]; !ok { - return ImportClusterReqValidationError{ + err := ImportClusterReqValidationError{ field: "ClusterType", reason: "value must be in list [federation single ]", } + if !all { + return err + } + errors = append(errors, err) } if len(m.GetLabels()) > 20 { - return ImportClusterReqValidationError{ + err := ImportClusterReqValidationError{ field: "Labels", reason: "value must contain no more than 20 pair(s)", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetCreator()); l < 1 || l > 1024 { - return ImportClusterReqValidationError{ + err := ImportClusterReqValidationError{ field: "Creator", reason: "value length must be between 1 and 1024 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if m.GetCloudMode() == nil { - return ImportClusterReqValidationError{ + err := ImportClusterReqValidationError{ field: "CloudMode", reason: "value is required", } + if !all { + return err + } + errors = append(errors, err) } if a := m.GetCloudMode(); a != nil { @@ -9909,22 +16122,51 @@ func (m *ImportClusterReq) Validate() error { // no validation rules for IsShared if utf8.RuneCountInString(m.GetVersion()) > 1024 { - return ImportClusterReqValidationError{ + err := ImportClusterReqValidationError{ field: "Version", reason: "value length must be at most 1024 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetAccountID()) > 1024 { - return ImportClusterReqValidationError{ + err := ImportClusterReqValidationError{ field: "AccountID", reason: "value length must be at most 1024 runes", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return ImportClusterReqMultiError(errors) } return nil } +// ImportClusterReqMultiError is an error wrapping multiple validation errors +// returned by ImportClusterReq.ValidateAll() if the designated constraints +// aren't met. +type ImportClusterReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ImportClusterReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ImportClusterReqMultiError) AllErrors() []error { return m } + // ImportClusterReqValidationError is the validation error returned by // ImportClusterReq.Validate if the designated constraints aren't met. type ImportClusterReqValidationError struct { @@ -10004,20 +16246,53 @@ var _ImportClusterReq_ClusterType_InLookup = map[string]struct{}{ } // Validate checks the field values on ImportClusterResp with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *ImportClusterResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ImportClusterResp with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ImportClusterRespMultiError, or nil if none found. +func (m *ImportClusterResp) ValidateAll() error { + return m.validate(true) +} + +func (m *ImportClusterResp) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ImportClusterRespValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ImportClusterRespValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ImportClusterRespValidationError{ field: "Data", @@ -10027,9 +16302,30 @@ func (m *ImportClusterResp) Validate() error { } } + if len(errors) > 0 { + return ImportClusterRespMultiError(errors) + } + return nil } +// ImportClusterRespMultiError is an error wrapping multiple validation errors +// returned by ImportClusterResp.ValidateAll() if the designated constraints +// aren't met. +type ImportClusterRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ImportClusterRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ImportClusterRespMultiError) AllErrors() []error { return m } + // ImportClusterRespValidationError is the validation error returned by // ImportClusterResp.Validate if the designated constraints aren't met. type ImportClusterRespValidationError struct { @@ -10088,40 +16384,87 @@ var _ interface { // Validate checks the field values on DeleteVirtualClusterReq with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DeleteVirtualClusterReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteVirtualClusterReq with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeleteVirtualClusterReqMultiError, or nil if none found. +func (m *DeleteVirtualClusterReq) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteVirtualClusterReq) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetClusterID()); l < 1 || l > 100 { - return DeleteVirtualClusterReqValidationError{ + err := DeleteVirtualClusterReqValidationError{ field: "ClusterID", reason: "value length must be between 1 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - return DeleteVirtualClusterReqValidationError{ + err := DeleteVirtualClusterReqValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } + if !all { + return err + } + errors = append(errors, err) } if !_DeleteVirtualClusterReq_ClusterID_Pattern.MatchString(m.GetClusterID()) { - return DeleteVirtualClusterReqValidationError{ + err := DeleteVirtualClusterReqValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for OnlyDeleteInfo // no validation rules for Operator + if len(errors) > 0 { + return DeleteVirtualClusterReqMultiError(errors) + } + return nil } +// DeleteVirtualClusterReqMultiError is an error wrapping multiple validation +// errors returned by DeleteVirtualClusterReq.ValidateAll() if the designated +// constraints aren't met. +type DeleteVirtualClusterReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteVirtualClusterReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteVirtualClusterReqMultiError) AllErrors() []error { return m } + // DeleteVirtualClusterReqValidationError is the validation error returned by // DeleteVirtualClusterReq.Validate if the designated constraints aren't met. type DeleteVirtualClusterReqValidationError struct { @@ -10182,19 +16525,52 @@ var _DeleteVirtualClusterReq_ClusterID_Pattern = regexp.MustCompile("^[0-9a-zA-Z // Validate checks the field values on DeleteVirtualClusterResp with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DeleteVirtualClusterResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteVirtualClusterResp with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeleteVirtualClusterRespMultiError, or nil if none found. +func (m *DeleteVirtualClusterResp) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteVirtualClusterResp) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DeleteVirtualClusterRespValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DeleteVirtualClusterRespValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteVirtualClusterRespValidationError{ field: "Data", @@ -10204,7 +16580,26 @@ func (m *DeleteVirtualClusterResp) Validate() error { } } - if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetTask()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DeleteVirtualClusterRespValidationError{ + field: "Task", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DeleteVirtualClusterRespValidationError{ + field: "Task", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteVirtualClusterRespValidationError{ field: "Task", @@ -10214,7 +16609,26 @@ func (m *DeleteVirtualClusterResp) Validate() error { } } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DeleteVirtualClusterRespValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DeleteVirtualClusterRespValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteVirtualClusterRespValidationError{ field: "WebAnnotations", @@ -10224,9 +16638,30 @@ func (m *DeleteVirtualClusterResp) Validate() error { } } + if len(errors) > 0 { + return DeleteVirtualClusterRespMultiError(errors) + } + return nil } +// DeleteVirtualClusterRespMultiError is an error wrapping multiple validation +// errors returned by DeleteVirtualClusterResp.ValidateAll() if the designated +// constraints aren't met. +type DeleteVirtualClusterRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteVirtualClusterRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteVirtualClusterRespMultiError) AllErrors() []error { return m } + // DeleteVirtualClusterRespValidationError is the validation error returned by // DeleteVirtualClusterResp.Validate if the designated constraints aren't met. type DeleteVirtualClusterRespValidationError struct { @@ -10285,34 +16720,79 @@ var _ interface { // Validate checks the field values on UpdateVirtualClusterQuotaReq with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateVirtualClusterQuotaReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateVirtualClusterQuotaReq with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateVirtualClusterQuotaReqMultiError, or nil if none found. +func (m *UpdateVirtualClusterQuotaReq) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateVirtualClusterQuotaReq) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetClusterID()); l < 1 || l > 100 { - return UpdateVirtualClusterQuotaReqValidationError{ + err := UpdateVirtualClusterQuotaReqValidationError{ field: "ClusterID", reason: "value length must be between 1 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - return UpdateVirtualClusterQuotaReqValidationError{ + err := UpdateVirtualClusterQuotaReqValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } + if !all { + return err + } + errors = append(errors, err) } if !_UpdateVirtualClusterQuotaReq_ClusterID_Pattern.MatchString(m.GetClusterID()) { - return UpdateVirtualClusterQuotaReqValidationError{ + err := UpdateVirtualClusterQuotaReqValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } - if v, ok := interface{}(m.GetQuota()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetQuota()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateVirtualClusterQuotaReqValidationError{ + field: "Quota", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateVirtualClusterQuotaReqValidationError{ + field: "Quota", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetQuota()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateVirtualClusterQuotaReqValidationError{ field: "Quota", @@ -10323,15 +16803,40 @@ func (m *UpdateVirtualClusterQuotaReq) Validate() error { } if utf8.RuneCountInString(m.GetUpdater()) > 1024 { - return UpdateVirtualClusterQuotaReqValidationError{ + err := UpdateVirtualClusterQuotaReqValidationError{ field: "Updater", reason: "value length must be at most 1024 runes", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return UpdateVirtualClusterQuotaReqMultiError(errors) } return nil } +// UpdateVirtualClusterQuotaReqMultiError is an error wrapping multiple +// validation errors returned by UpdateVirtualClusterQuotaReq.ValidateAll() if +// the designated constraints aren't met. +type UpdateVirtualClusterQuotaReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateVirtualClusterQuotaReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateVirtualClusterQuotaReqMultiError) AllErrors() []error { return m } + // UpdateVirtualClusterQuotaReqValidationError is the validation error returned // by UpdateVirtualClusterQuotaReq.Validate if the designated constraints // aren't met. @@ -10393,19 +16898,52 @@ var _UpdateVirtualClusterQuotaReq_ClusterID_Pattern = regexp.MustCompile("^[0-9a // Validate checks the field values on UpdateVirtualClusterQuotaResp with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateVirtualClusterQuotaResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateVirtualClusterQuotaResp with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// UpdateVirtualClusterQuotaRespMultiError, or nil if none found. +func (m *UpdateVirtualClusterQuotaResp) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateVirtualClusterQuotaResp) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateVirtualClusterQuotaRespValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateVirtualClusterQuotaRespValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateVirtualClusterQuotaRespValidationError{ field: "Data", @@ -10415,9 +16953,30 @@ func (m *UpdateVirtualClusterQuotaResp) Validate() error { } } + if len(errors) > 0 { + return UpdateVirtualClusterQuotaRespMultiError(errors) + } + return nil } +// UpdateVirtualClusterQuotaRespMultiError is an error wrapping multiple +// validation errors returned by UpdateVirtualClusterQuotaResp.ValidateAll() +// if the designated constraints aren't met. +type UpdateVirtualClusterQuotaRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateVirtualClusterQuotaRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateVirtualClusterQuotaRespMultiError) AllErrors() []error { return m } + // UpdateVirtualClusterQuotaRespValidationError is the validation error // returned by UpdateVirtualClusterQuotaResp.Validate if the designated // constraints aren't met. @@ -10476,32 +17035,58 @@ var _ interface { } = UpdateVirtualClusterQuotaRespValidationError{} // Validate checks the field values on DeleteClusterReq with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *DeleteClusterReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteClusterReq with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeleteClusterReqMultiError, or nil if none found. +func (m *DeleteClusterReq) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteClusterReq) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetClusterID()); l < 1 || l > 100 { - return DeleteClusterReqValidationError{ + err := DeleteClusterReqValidationError{ field: "ClusterID", reason: "value length must be between 1 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - return DeleteClusterReqValidationError{ + err := DeleteClusterReqValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } + if !all { + return err + } + errors = append(errors, err) } if !_DeleteClusterReq_ClusterID_Pattern.MatchString(m.GetClusterID()) { - return DeleteClusterReqValidationError{ + err := DeleteClusterReqValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for IsForced @@ -10514,9 +17099,30 @@ func (m *DeleteClusterReq) Validate() error { // no validation rules for DeleteClusterRecord + if len(errors) > 0 { + return DeleteClusterReqMultiError(errors) + } + return nil } +// DeleteClusterReqMultiError is an error wrapping multiple validation errors +// returned by DeleteClusterReq.ValidateAll() if the designated constraints +// aren't met. +type DeleteClusterReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteClusterReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteClusterReqMultiError) AllErrors() []error { return m } + // DeleteClusterReqValidationError is the validation error returned by // DeleteClusterReq.Validate if the designated constraints aren't met. type DeleteClusterReqValidationError struct { @@ -10574,20 +17180,53 @@ var _ interface { var _DeleteClusterReq_ClusterID_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$") // Validate checks the field values on DeleteClusterResp with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *DeleteClusterResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteClusterResp with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeleteClusterRespMultiError, or nil if none found. +func (m *DeleteClusterResp) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteClusterResp) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DeleteClusterRespValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DeleteClusterRespValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteClusterRespValidationError{ field: "Data", @@ -10597,7 +17236,26 @@ func (m *DeleteClusterResp) Validate() error { } } - if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetTask()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DeleteClusterRespValidationError{ + field: "Task", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DeleteClusterRespValidationError{ + field: "Task", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteClusterRespValidationError{ field: "Task", @@ -10607,7 +17265,26 @@ func (m *DeleteClusterResp) Validate() error { } } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DeleteClusterRespValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DeleteClusterRespValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteClusterRespValidationError{ field: "WebAnnotations", @@ -10617,9 +17294,30 @@ func (m *DeleteClusterResp) Validate() error { } } + if len(errors) > 0 { + return DeleteClusterRespMultiError(errors) + } + return nil } +// DeleteClusterRespMultiError is an error wrapping multiple validation errors +// returned by DeleteClusterResp.ValidateAll() if the designated constraints +// aren't met. +type DeleteClusterRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteClusterRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteClusterRespMultiError) AllErrors() []error { return m } + // DeleteClusterRespValidationError is the validation error returned by // DeleteClusterResp.Validate if the designated constraints aren't met. type DeleteClusterRespValidationError struct { @@ -10677,57 +17375,110 @@ var _ interface { } = DeleteClusterRespValidationError{} // Validate checks the field values on UpdateClusterReq with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *UpdateClusterReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateClusterReq with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateClusterReqMultiError, or nil if none found. +func (m *UpdateClusterReq) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateClusterReq) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetClusterID()) > 1024 { - return UpdateClusterReqValidationError{ + err := UpdateClusterReqValidationError{ field: "ClusterID", reason: "value length must be at most 1024 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for ClusterName if utf8.RuneCountInString(m.GetProvider()) > 1024 { - return UpdateClusterReqValidationError{ + err := UpdateClusterReqValidationError{ field: "Provider", reason: "value length must be at most 1024 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Region if utf8.RuneCountInString(m.GetVpcID()) > 1024 { - return UpdateClusterReqValidationError{ + err := UpdateClusterReqValidationError{ field: "VpcID", reason: "value length must be at most 1024 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetProjectID()) > 1024 { - return UpdateClusterReqValidationError{ + err := UpdateClusterReqValidationError{ field: "ProjectID", reason: "value length must be at most 1024 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetBusinessID()) > 1024 { - return UpdateClusterReqValidationError{ + err := UpdateClusterReqValidationError{ field: "BusinessID", reason: "value length must be at most 1024 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Environment // no validation rules for EngineType - if v, ok := interface{}(m.GetIsExclusive()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetIsExclusive()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateClusterReqValidationError{ + field: "IsExclusive", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateClusterReqValidationError{ + field: "IsExclusive", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetIsExclusive()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateClusterReqValidationError{ field: "IsExclusive", @@ -10742,65 +17493,154 @@ func (m *UpdateClusterReq) Validate() error { // no validation rules for FederationClusterID if len(m.GetLabels()) > 20 { - return UpdateClusterReqValidationError{ + err := UpdateClusterReqValidationError{ field: "Labels", reason: "value must contain no more than 20 pair(s)", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetUpdater()) > 1024 { - return UpdateClusterReqValidationError{ + err := UpdateClusterReqValidationError{ field: "Updater", reason: "value length must be at most 1024 runes", } + if !all { + return err + } + errors = append(errors, err) } if _, ok := _UpdateClusterReq_Status_InLookup[m.GetStatus()]; !ok { - return UpdateClusterReqValidationError{ + err := UpdateClusterReqValidationError{ field: "Status", reason: "value must be in list [CREATING RUNNING DELETING FAILURE INITIALIZATION DELETED ]", } - } - - for key, val := range m.GetBcsAddons() { - _ = val - - // no validation rules for BcsAddons[key] - - if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return UpdateClusterReqValidationError{ - field: fmt.Sprintf("BcsAddons[%v]", key), - reason: "embedded message failed validation", - cause: err, + if !all { + return err + } + errors = append(errors, err) + } + + { + sorted_keys := make([]string, len(m.GetBcsAddons())) + i := 0 + for key := range m.GetBcsAddons() { + sorted_keys[i] = key + i++ + } + sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) + for _, key := range sorted_keys { + val := m.GetBcsAddons()[key] + _ = val + + // no validation rules for BcsAddons[key] + + if all { + switch v := interface{}(val).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateClusterReqValidationError{ + field: fmt.Sprintf("BcsAddons[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateClusterReqValidationError{ + field: fmt.Sprintf("BcsAddons[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return UpdateClusterReqValidationError{ + field: fmt.Sprintf("BcsAddons[%v]", key), + reason: "embedded message failed validation", + cause: err, + } } } - } + } } - for key, val := range m.GetExtraAddons() { - _ = val - - // no validation rules for ExtraAddons[key] - - if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return UpdateClusterReqValidationError{ - field: fmt.Sprintf("ExtraAddons[%v]", key), - reason: "embedded message failed validation", - cause: err, + { + sorted_keys := make([]string, len(m.GetExtraAddons())) + i := 0 + for key := range m.GetExtraAddons() { + sorted_keys[i] = key + i++ + } + sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) + for _, key := range sorted_keys { + val := m.GetExtraAddons()[key] + _ = val + + // no validation rules for ExtraAddons[key] + + if all { + switch v := interface{}(val).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateClusterReqValidationError{ + field: fmt.Sprintf("ExtraAddons[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateClusterReqValidationError{ + field: fmt.Sprintf("ExtraAddons[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return UpdateClusterReqValidationError{ + field: fmt.Sprintf("ExtraAddons[%v]", key), + reason: "embedded message failed validation", + cause: err, + } } } - } + } } // no validation rules for SystemID // no validation rules for ManageType - if v, ok := interface{}(m.GetNetworkSettings()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetNetworkSettings()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateClusterReqValidationError{ + field: "NetworkSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateClusterReqValidationError{ + field: "NetworkSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetNetworkSettings()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateClusterReqValidationError{ field: "NetworkSettings", @@ -10810,7 +17650,26 @@ func (m *UpdateClusterReq) Validate() error { } } - if v, ok := interface{}(m.GetClusterBasicSettings()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetClusterBasicSettings()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateClusterReqValidationError{ + field: "ClusterBasicSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateClusterReqValidationError{ + field: "ClusterBasicSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetClusterBasicSettings()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateClusterReqValidationError{ field: "ClusterBasicSettings", @@ -10820,7 +17679,26 @@ func (m *UpdateClusterReq) Validate() error { } } - if v, ok := interface{}(m.GetClusterAdvanceSettings()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetClusterAdvanceSettings()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateClusterReqValidationError{ + field: "ClusterAdvanceSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateClusterReqValidationError{ + field: "ClusterAdvanceSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetClusterAdvanceSettings()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateClusterReqValidationError{ field: "ClusterAdvanceSettings", @@ -10830,7 +17708,26 @@ func (m *UpdateClusterReq) Validate() error { } } - if v, ok := interface{}(m.GetNodeSettings()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetNodeSettings()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateClusterReqValidationError{ + field: "NodeSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateClusterReqValidationError{ + field: "NodeSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetNodeSettings()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateClusterReqValidationError{ field: "NodeSettings", @@ -10848,7 +17745,26 @@ func (m *UpdateClusterReq) Validate() error { // no validation rules for ExtraClusterID - if v, ok := interface{}(m.GetIsCommonCluster()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetIsCommonCluster()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateClusterReqValidationError{ + field: "IsCommonCluster", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateClusterReqValidationError{ + field: "IsCommonCluster", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetIsCommonCluster()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateClusterReqValidationError{ field: "IsCommonCluster", @@ -10858,7 +17774,26 @@ func (m *UpdateClusterReq) Validate() error { } } - if v, ok := interface{}(m.GetDescription()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetDescription()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateClusterReqValidationError{ + field: "Description", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateClusterReqValidationError{ + field: "Description", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetDescription()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateClusterReqValidationError{ field: "Description", @@ -10870,7 +17805,26 @@ func (m *UpdateClusterReq) Validate() error { // no validation rules for ClusterCategory - if v, ok := interface{}(m.GetIsShared()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetIsShared()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateClusterReqValidationError{ + field: "IsShared", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateClusterReqValidationError{ + field: "IsShared", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetIsShared()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateClusterReqValidationError{ field: "IsShared", @@ -10883,19 +17837,44 @@ func (m *UpdateClusterReq) Validate() error { // no validation rules for CreateTime if utf8.RuneCountInString(m.GetCreator()) > 1024 { - return UpdateClusterReqValidationError{ + err := UpdateClusterReqValidationError{ field: "Creator", reason: "value length must be at most 1024 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for ImportCategory // no validation rules for CloudAccountID + if len(errors) > 0 { + return UpdateClusterReqMultiError(errors) + } + return nil } +// UpdateClusterReqMultiError is an error wrapping multiple validation errors +// returned by UpdateClusterReq.ValidateAll() if the designated constraints +// aren't met. +type UpdateClusterReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateClusterReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateClusterReqMultiError) AllErrors() []error { return m } + // UpdateClusterReqValidationError is the validation error returned by // UpdateClusterReq.Validate if the designated constraints aren't met. type UpdateClusterReqValidationError struct { @@ -10961,20 +17940,53 @@ var _UpdateClusterReq_Status_InLookup = map[string]struct{}{ } // Validate checks the field values on UpdateClusterResp with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *UpdateClusterResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateClusterResp with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateClusterRespMultiError, or nil if none found. +func (m *UpdateClusterResp) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateClusterResp) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateClusterRespValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateClusterRespValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateClusterRespValidationError{ field: "Data", @@ -10984,7 +17996,26 @@ func (m *UpdateClusterResp) Validate() error { } } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateClusterRespValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateClusterRespValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateClusterRespValidationError{ field: "WebAnnotations", @@ -10994,9 +18025,30 @@ func (m *UpdateClusterResp) Validate() error { } } + if len(errors) > 0 { + return UpdateClusterRespMultiError(errors) + } + return nil } +// UpdateClusterRespMultiError is an error wrapping multiple validation errors +// returned by UpdateClusterResp.ValidateAll() if the designated constraints +// aren't met. +type UpdateClusterRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateClusterRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateClusterRespMultiError) AllErrors() []error { return m } + // UpdateClusterRespValidationError is the validation error returned by // UpdateClusterResp.Validate if the designated constraints aren't met. type UpdateClusterRespValidationError struct { @@ -11055,24 +18107,63 @@ var _ interface { // Validate checks the field values on RetryCreateClusterReq with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *RetryCreateClusterReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on RetryCreateClusterReq with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// RetryCreateClusterReqMultiError, or nil if none found. +func (m *RetryCreateClusterReq) ValidateAll() error { + return m.validate(true) +} + +func (m *RetryCreateClusterReq) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ClusterID if l := utf8.RuneCountInString(m.GetOperator()); l < 1 || l > 100 { - return RetryCreateClusterReqValidationError{ + err := RetryCreateClusterReqValidationError{ field: "Operator", reason: "value length must be between 1 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return RetryCreateClusterReqMultiError(errors) } return nil } +// RetryCreateClusterReqMultiError is an error wrapping multiple validation +// errors returned by RetryCreateClusterReq.ValidateAll() if the designated +// constraints aren't met. +type RetryCreateClusterReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m RetryCreateClusterReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m RetryCreateClusterReqMultiError) AllErrors() []error { return m } + // RetryCreateClusterReqValidationError is the validation error returned by // RetryCreateClusterReq.Validate if the designated constraints aren't met. type RetryCreateClusterReqValidationError struct { @@ -11131,19 +18222,52 @@ var _ interface { // Validate checks the field values on RetryCreateClusterResp with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *RetryCreateClusterResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on RetryCreateClusterResp with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// RetryCreateClusterRespMultiError, or nil if none found. +func (m *RetryCreateClusterResp) ValidateAll() error { + return m.validate(true) +} + +func (m *RetryCreateClusterResp) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, RetryCreateClusterRespValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, RetryCreateClusterRespValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return RetryCreateClusterRespValidationError{ field: "Data", @@ -11153,7 +18277,26 @@ func (m *RetryCreateClusterResp) Validate() error { } } - if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetTask()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, RetryCreateClusterRespValidationError{ + field: "Task", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, RetryCreateClusterRespValidationError{ + field: "Task", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return RetryCreateClusterRespValidationError{ field: "Task", @@ -11163,9 +18306,30 @@ func (m *RetryCreateClusterResp) Validate() error { } } + if len(errors) > 0 { + return RetryCreateClusterRespMultiError(errors) + } + return nil } +// RetryCreateClusterRespMultiError is an error wrapping multiple validation +// errors returned by RetryCreateClusterResp.ValidateAll() if the designated +// constraints aren't met. +type RetryCreateClusterRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m RetryCreateClusterRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m RetryCreateClusterRespMultiError) AllErrors() []error { return m } + // RetryCreateClusterRespValidationError is the validation error returned by // RetryCreateClusterResp.Validate if the designated constraints aren't met. type RetryCreateClusterRespValidationError struct { @@ -11223,39 +18387,86 @@ var _ interface { } = RetryCreateClusterRespValidationError{} // Validate checks the field values on GetClusterReq with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *GetClusterReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetClusterReq with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in GetClusterReqMultiError, or +// nil if none found. +func (m *GetClusterReq) ValidateAll() error { + return m.validate(true) +} + +func (m *GetClusterReq) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetClusterID()); l < 1 || l > 100 { - return GetClusterReqValidationError{ + err := GetClusterReqValidationError{ field: "ClusterID", reason: "value length must be between 1 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - return GetClusterReqValidationError{ + err := GetClusterReqValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } + if !all { + return err + } + errors = append(errors, err) } if !_GetClusterReq_ClusterID_Pattern.MatchString(m.GetClusterID()) { - return GetClusterReqValidationError{ + err := GetClusterReqValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for CloudInfo + if len(errors) > 0 { + return GetClusterReqMultiError(errors) + } + return nil } +// GetClusterReqMultiError is an error wrapping multiple validation errors +// returned by GetClusterReq.ValidateAll() if the designated constraints +// aren't met. +type GetClusterReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetClusterReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetClusterReqMultiError) AllErrors() []error { return m } + // GetClusterReqValidationError is the validation error returned by // GetClusterReq.Validate if the designated constraints aren't met. type GetClusterReqValidationError struct { @@ -11313,20 +18524,53 @@ var _ interface { var _GetClusterReq_ClusterID_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$") // Validate checks the field values on GetClusterResp with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *GetClusterResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetClusterResp with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in GetClusterRespMultiError, +// or nil if none found. +func (m *GetClusterResp) ValidateAll() error { + return m.validate(true) +} + +func (m *GetClusterResp) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetClusterRespValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetClusterRespValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetClusterRespValidationError{ field: "Data", @@ -11336,7 +18580,26 @@ func (m *GetClusterResp) Validate() error { } } - if v, ok := interface{}(m.GetExtra()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetExtra()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetClusterRespValidationError{ + field: "Extra", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetClusterRespValidationError{ + field: "Extra", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetExtra()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetClusterRespValidationError{ field: "Extra", @@ -11346,7 +18609,26 @@ func (m *GetClusterResp) Validate() error { } } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetClusterRespValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetClusterRespValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetClusterRespValidationError{ field: "WebAnnotations", @@ -11356,9 +18638,30 @@ func (m *GetClusterResp) Validate() error { } } + if len(errors) > 0 { + return GetClusterRespMultiError(errors) + } + return nil } +// GetClusterRespMultiError is an error wrapping multiple validation errors +// returned by GetClusterResp.ValidateAll() if the designated constraints +// aren't met. +type GetClusterRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetClusterRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetClusterRespMultiError) AllErrors() []error { return m } + // GetClusterRespValidationError is the validation error returned by // GetClusterResp.Validate if the designated constraints aren't met. type GetClusterRespValidationError struct { @@ -11414,18 +18717,53 @@ var _ interface { } = GetClusterRespValidationError{} // Validate checks the field values on ExtraClusterInfo with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *ExtraClusterInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ExtraClusterInfo with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ExtraClusterInfoMultiError, or nil if none found. +func (m *ExtraClusterInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *ExtraClusterInfo) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ProviderType + if len(errors) > 0 { + return ExtraClusterInfoMultiError(errors) + } + return nil } +// ExtraClusterInfoMultiError is an error wrapping multiple validation errors +// returned by ExtraClusterInfo.ValidateAll() if the designated constraints +// aren't met. +type ExtraClusterInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ExtraClusterInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ExtraClusterInfoMultiError) AllErrors() []error { return m } + // ExtraClusterInfoValidationError is the validation error returned by // ExtraClusterInfo.Validate if the designated constraints aren't met. type ExtraClusterInfoValidationError struct { @@ -11481,16 +18819,51 @@ var _ interface { } = ExtraClusterInfoValidationError{} // Validate checks the field values on CheckNodesRequest with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *CheckNodesRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CheckNodesRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CheckNodesRequestMultiError, or nil if none found. +func (m *CheckNodesRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *CheckNodesRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + + if len(errors) > 0 { + return CheckNodesRequestMultiError(errors) + } + return nil } +// CheckNodesRequestMultiError is an error wrapping multiple validation errors +// returned by CheckNodesRequest.ValidateAll() if the designated constraints +// aren't met. +type CheckNodesRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CheckNodesRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CheckNodesRequestMultiError) AllErrors() []error { return m } + // CheckNodesRequestValidationError is the validation error returned by // CheckNodesRequest.Validate if the designated constraints aren't met. type CheckNodesRequestValidationError struct { @@ -11549,38 +18922,102 @@ var _ interface { // Validate checks the field values on CheckNodesResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CheckNodesResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CheckNodesResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CheckNodesResponseMultiError, or nil if none found. +func (m *CheckNodesResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *CheckNodesResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - for key, val := range m.GetData() { - _ = val - - // no validation rules for Data[key] - - if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return CheckNodesResponseValidationError{ - field: fmt.Sprintf("Data[%v]", key), - reason: "embedded message failed validation", - cause: err, + { + sorted_keys := make([]string, len(m.GetData())) + i := 0 + for key := range m.GetData() { + sorted_keys[i] = key + i++ + } + sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) + for _, key := range sorted_keys { + val := m.GetData()[key] + _ = val + + // no validation rules for Data[key] + + if all { + switch v := interface{}(val).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CheckNodesResponseValidationError{ + field: fmt.Sprintf("Data[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CheckNodesResponseValidationError{ + field: fmt.Sprintf("Data[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return CheckNodesResponseValidationError{ + field: fmt.Sprintf("Data[%v]", key), + reason: "embedded message failed validation", + cause: err, + } } } + } + } + if len(errors) > 0 { + return CheckNodesResponseMultiError(errors) } return nil } +// CheckNodesResponseMultiError is an error wrapping multiple validation errors +// returned by CheckNodesResponse.ValidateAll() if the designated constraints +// aren't met. +type CheckNodesResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CheckNodesResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CheckNodesResponseMultiError) AllErrors() []error { return m } + // CheckNodesResponseValidationError is the validation error returned by // CheckNodesResponse.Validate if the designated constraints aren't met. type CheckNodesResponseValidationError struct { @@ -11638,21 +19075,56 @@ var _ interface { } = CheckNodesResponseValidationError{} // Validate checks the field values on NodeResult with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *NodeResult) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on NodeResult with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in NodeResultMultiError, or +// nil if none found. +func (m *NodeResult) ValidateAll() error { + return m.validate(true) +} + +func (m *NodeResult) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for IsExist // no validation rules for ClusterID // no validation rules for ClusterName + if len(errors) > 0 { + return NodeResultMultiError(errors) + } + return nil } +// NodeResultMultiError is an error wrapping multiple validation errors +// returned by NodeResult.ValidateAll() if the designated constraints aren't met. +type NodeResultMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m NodeResultMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m NodeResultMultiError) AllErrors() []error { return m } + // NodeResultValidationError is the validation error returned by // NodeResult.Validate if the designated constraints aren't met. type NodeResultValidationError struct { @@ -11709,22 +19181,61 @@ var _ interface { // Validate checks the field values on UnCordonNodeRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UnCordonNodeRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UnCordonNodeRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UnCordonNodeRequestMultiError, or nil if none found. +func (m *UnCordonNodeRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *UnCordonNodeRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if len(m.GetClusterID()) < 1 { - return UnCordonNodeRequestValidationError{ + err := UnCordonNodeRequestValidationError{ field: "ClusterID", reason: "value length must be at least 1 bytes", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return UnCordonNodeRequestMultiError(errors) } return nil } +// UnCordonNodeRequestMultiError is an error wrapping multiple validation +// errors returned by UnCordonNodeRequest.ValidateAll() if the designated +// constraints aren't met. +type UnCordonNodeRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UnCordonNodeRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UnCordonNodeRequestMultiError) AllErrors() []error { return m } + // UnCordonNodeRequestValidationError is the validation error returned by // UnCordonNodeRequest.Validate if the designated constraints aren't met. type UnCordonNodeRequestValidationError struct { @@ -11783,19 +19294,52 @@ var _ interface { // Validate checks the field values on UnCordonNodeResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UnCordonNodeResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UnCordonNodeResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UnCordonNodeResponseMultiError, or nil if none found. +func (m *UnCordonNodeResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *UnCordonNodeResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UnCordonNodeResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UnCordonNodeResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UnCordonNodeResponseValidationError{ field: "Data", @@ -11805,9 +19349,30 @@ func (m *UnCordonNodeResponse) Validate() error { } } + if len(errors) > 0 { + return UnCordonNodeResponseMultiError(errors) + } + return nil } +// UnCordonNodeResponseMultiError is an error wrapping multiple validation +// errors returned by UnCordonNodeResponse.ValidateAll() if the designated +// constraints aren't met. +type UnCordonNodeResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UnCordonNodeResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UnCordonNodeResponseMultiError) AllErrors() []error { return m } + // UnCordonNodeResponseValidationError is the validation error returned by // UnCordonNodeResponse.Validate if the designated constraints aren't met. type UnCordonNodeResponseValidationError struct { @@ -11865,23 +19430,62 @@ var _ interface { } = UnCordonNodeResponseValidationError{} // Validate checks the field values on CordonNodeRequest with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *CordonNodeRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CordonNodeRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CordonNodeRequestMultiError, or nil if none found. +func (m *CordonNodeRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *CordonNodeRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if len(m.GetClusterID()) < 1 { - return CordonNodeRequestValidationError{ + err := CordonNodeRequestValidationError{ field: "ClusterID", reason: "value length must be at least 1 bytes", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return CordonNodeRequestMultiError(errors) } return nil } +// CordonNodeRequestMultiError is an error wrapping multiple validation errors +// returned by CordonNodeRequest.ValidateAll() if the designated constraints +// aren't met. +type CordonNodeRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CordonNodeRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CordonNodeRequestMultiError) AllErrors() []error { return m } + // CordonNodeRequestValidationError is the validation error returned by // CordonNodeRequest.Validate if the designated constraints aren't met. type CordonNodeRequestValidationError struct { @@ -11940,19 +19544,52 @@ var _ interface { // Validate checks the field values on CordonNodeResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CordonNodeResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CordonNodeResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CordonNodeResponseMultiError, or nil if none found. +func (m *CordonNodeResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *CordonNodeResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CordonNodeResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CordonNodeResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CordonNodeResponseValidationError{ field: "Data", @@ -11962,9 +19599,30 @@ func (m *CordonNodeResponse) Validate() error { } } + if len(errors) > 0 { + return CordonNodeResponseMultiError(errors) + } + return nil } +// CordonNodeResponseMultiError is an error wrapping multiple validation errors +// returned by CordonNodeResponse.ValidateAll() if the designated constraints +// aren't met. +type CordonNodeResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CordonNodeResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CordonNodeResponseMultiError) AllErrors() []error { return m } + // CordonNodeResponseValidationError is the validation error returned by // CordonNodeResponse.Validate if the designated constraints aren't met. type CordonNodeResponseValidationError struct { @@ -12022,25 +19680,47 @@ var _ interface { } = CordonNodeResponseValidationError{} // Validate checks the field values on UpdateNodeRequest with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *UpdateNodeRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateNodeRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateNodeRequestMultiError, or nil if none found. +func (m *UpdateNodeRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateNodeRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := len(m.GetInnerIPs()); l < 1 || l > 100 { - return UpdateNodeRequestValidationError{ + err := UpdateNodeRequestValidationError{ field: "InnerIPs", reason: "value must contain between 1 and 100 items, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if _, ok := _UpdateNodeRequest_Status_InLookup[m.GetStatus()]; !ok { - return UpdateNodeRequestValidationError{ + err := UpdateNodeRequestValidationError{ field: "Status", reason: "value must be in list [INITIALIZATION RUNNING DELETING ADD-FAILURE REMOVE-FAILURE]", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for NodeGroupID @@ -12048,15 +19728,40 @@ func (m *UpdateNodeRequest) Validate() error { // no validation rules for ClusterID if len(m.GetUpdater()) < 1 { - return UpdateNodeRequestValidationError{ + err := UpdateNodeRequestValidationError{ field: "Updater", reason: "value length must be at least 1 bytes", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return UpdateNodeRequestMultiError(errors) } return nil } +// UpdateNodeRequestMultiError is an error wrapping multiple validation errors +// returned by UpdateNodeRequest.ValidateAll() if the designated constraints +// aren't met. +type UpdateNodeRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateNodeRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateNodeRequestMultiError) AllErrors() []error { return m } + // UpdateNodeRequestValidationError is the validation error returned by // UpdateNodeRequest.Validate if the designated constraints aren't met. type UpdateNodeRequestValidationError struct { @@ -12123,19 +19828,52 @@ var _UpdateNodeRequest_Status_InLookup = map[string]struct{}{ // Validate checks the field values on UpdateNodeResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateNodeResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateNodeResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateNodeResponseMultiError, or nil if none found. +func (m *UpdateNodeResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateNodeResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeResponseValidationError{ field: "Data", @@ -12145,9 +19883,30 @@ func (m *UpdateNodeResponse) Validate() error { } } + if len(errors) > 0 { + return UpdateNodeResponseMultiError(errors) + } + return nil } +// UpdateNodeResponseMultiError is an error wrapping multiple validation errors +// returned by UpdateNodeResponse.ValidateAll() if the designated constraints +// aren't met. +type UpdateNodeResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateNodeResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateNodeResponseMultiError) AllErrors() []error { return m } + // UpdateNodeResponseValidationError is the validation error returned by // UpdateNodeResponse.Validate if the designated constraints aren't met. type UpdateNodeResponseValidationError struct { @@ -12205,15 +19964,50 @@ var _ interface { } = UpdateNodeResponseValidationError{} // Validate checks the field values on NodeStatus with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *NodeStatus) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on NodeStatus with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in NodeStatusMultiError, or +// nil if none found. +func (m *NodeStatus) ValidateAll() error { + return m.validate(true) +} + +func (m *NodeStatus) validate(all bool) error { if m == nil { return nil } + var errors []error + + if len(errors) > 0 { + return NodeStatusMultiError(errors) + } + return nil } +// NodeStatusMultiError is an error wrapping multiple validation errors +// returned by NodeStatus.ValidateAll() if the designated constraints aren't met. +type NodeStatusMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m NodeStatusMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m NodeStatusMultiError) AllErrors() []error { return m } + // NodeStatusValidationError is the validation error returned by // NodeStatus.Validate if the designated constraints aren't met. type NodeStatusValidationError struct { @@ -12270,23 +20064,60 @@ var _ interface { // Validate checks the field values on RecordNodeInfoRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *RecordNodeInfoRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on RecordNodeInfoRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// RecordNodeInfoRequestMultiError, or nil if none found. +func (m *RecordNodeInfoRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *RecordNodeInfoRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := len(m.GetNodes()); l < 1 || l > 1000 { - return RecordNodeInfoRequestValidationError{ + err := RecordNodeInfoRequestValidationError{ field: "Nodes", reason: "value must contain between 1 and 1000 items, inclusive", } + if !all { + return err + } + errors = append(errors, err) } for idx, item := range m.GetNodes() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, RecordNodeInfoRequestValidationError{ + field: fmt.Sprintf("Nodes[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, RecordNodeInfoRequestValidationError{ + field: fmt.Sprintf("Nodes[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return RecordNodeInfoRequestValidationError{ field: fmt.Sprintf("Nodes[%v]", idx), @@ -12298,9 +20129,30 @@ func (m *RecordNodeInfoRequest) Validate() error { } + if len(errors) > 0 { + return RecordNodeInfoRequestMultiError(errors) + } + return nil } +// RecordNodeInfoRequestMultiError is an error wrapping multiple validation +// errors returned by RecordNodeInfoRequest.ValidateAll() if the designated +// constraints aren't met. +type RecordNodeInfoRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m RecordNodeInfoRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m RecordNodeInfoRequestMultiError) AllErrors() []error { return m } + // RecordNodeInfoRequestValidationError is the validation error returned by // RecordNodeInfoRequest.Validate if the designated constraints aren't met. type RecordNodeInfoRequestValidationError struct { @@ -12358,25 +20210,64 @@ var _ interface { } = RecordNodeInfoRequestValidationError{} // Validate checks the field values on GetNodeRequest with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *GetNodeRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetNodeRequest with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in GetNodeRequestMultiError, +// or nil if none found. +func (m *GetNodeRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetNodeRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if ip := net.ParseIP(m.GetInnerIP()); ip == nil || ip.To4() == nil { - return GetNodeRequestValidationError{ + err := GetNodeRequestValidationError{ field: "InnerIP", reason: "value must be a valid IPv4 address", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for ShowPwd + if len(errors) > 0 { + return GetNodeRequestMultiError(errors) + } + return nil } +// GetNodeRequestMultiError is an error wrapping multiple validation errors +// returned by GetNodeRequest.ValidateAll() if the designated constraints +// aren't met. +type GetNodeRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetNodeRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetNodeRequestMultiError) AllErrors() []error { return m } + // GetNodeRequestValidationError is the validation error returned by // GetNodeRequest.Validate if the designated constraints aren't met. type GetNodeRequestValidationError struct { @@ -12432,13 +20323,27 @@ var _ interface { } = GetNodeRequestValidationError{} // Validate checks the field values on GetNodeResponse with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *GetNodeResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetNodeResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetNodeResponseMultiError, or nil if none found. +func (m *GetNodeResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetNodeResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -12448,7 +20353,26 @@ func (m *GetNodeResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetNodeResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetNodeResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetNodeResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -12460,9 +20384,30 @@ func (m *GetNodeResponse) Validate() error { } + if len(errors) > 0 { + return GetNodeResponseMultiError(errors) + } + return nil } +// GetNodeResponseMultiError is an error wrapping multiple validation errors +// returned by GetNodeResponse.ValidateAll() if the designated constraints +// aren't met. +type GetNodeResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetNodeResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetNodeResponseMultiError) AllErrors() []error { return m } + // GetNodeResponseValidationError is the validation error returned by // GetNodeResponse.Validate if the designated constraints aren't met. type GetNodeResponseValidationError struct { @@ -12519,22 +20464,61 @@ var _ interface { // Validate checks the field values on GetNodeInfoRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetNodeInfoRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetNodeInfoRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetNodeInfoRequestMultiError, or nil if none found. +func (m *GetNodeInfoRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetNodeInfoRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if ip := net.ParseIP(m.GetInnerIP()); ip == nil || ip.To4() == nil { - return GetNodeInfoRequestValidationError{ + err := GetNodeInfoRequestValidationError{ field: "InnerIP", reason: "value must be a valid IPv4 address", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return GetNodeInfoRequestMultiError(errors) } return nil } +// GetNodeInfoRequestMultiError is an error wrapping multiple validation errors +// returned by GetNodeInfoRequest.ValidateAll() if the designated constraints +// aren't met. +type GetNodeInfoRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetNodeInfoRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetNodeInfoRequestMultiError) AllErrors() []error { return m } + // GetNodeInfoRequestValidationError is the validation error returned by // GetNodeInfoRequest.Validate if the designated constraints aren't met. type GetNodeInfoRequestValidationError struct { @@ -12593,19 +20577,52 @@ var _ interface { // Validate checks the field values on GetNodeInfoResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetNodeInfoResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetNodeInfoResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetNodeInfoResponseMultiError, or nil if none found. +func (m *GetNodeInfoResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetNodeInfoResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetNodeInfoResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetNodeInfoResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetNodeInfoResponseValidationError{ field: "Data", @@ -12615,9 +20632,30 @@ func (m *GetNodeInfoResponse) Validate() error { } } + if len(errors) > 0 { + return GetNodeInfoResponseMultiError(errors) + } + return nil } +// GetNodeInfoResponseMultiError is an error wrapping multiple validation +// errors returned by GetNodeInfoResponse.ValidateAll() if the designated +// constraints aren't met. +type GetNodeInfoResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetNodeInfoResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetNodeInfoResponseMultiError) AllErrors() []error { return m } + // GetNodeInfoResponseValidationError is the validation error returned by // GetNodeInfoResponse.Validate if the designated constraints aren't met. type GetNodeInfoResponseValidationError struct { @@ -12675,12 +20713,27 @@ var _ interface { } = GetNodeInfoResponseValidationError{} // Validate checks the field values on NodeConfig with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *NodeConfig) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on NodeConfig with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in NodeConfigMultiError, or +// nil if none found. +func (m *NodeConfig) ValidateAll() error { + return m.validate(true) +} + +func (m *NodeConfig) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for InstanceType // no validation rules for CPU @@ -12689,9 +20742,29 @@ func (m *NodeConfig) Validate() error { // no validation rules for GPU + if len(errors) > 0 { + return NodeConfigMultiError(errors) + } + return nil } +// NodeConfigMultiError is an error wrapping multiple validation errors +// returned by NodeConfig.ValidateAll() if the designated constraints aren't met. +type NodeConfigMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m NodeConfigMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m NodeConfigMultiError) AllErrors() []error { return m } + // NodeConfigValidationError is the validation error returned by // NodeConfig.Validate if the designated constraints aren't met. type NodeConfigValidationError struct { @@ -12747,12 +20820,27 @@ var _ interface { } = NodeConfigValidationError{} // Validate checks the field values on NodeInfo with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *NodeInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on NodeInfo with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in NodeInfoMultiError, or nil +// if none found. +func (m *NodeInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *NodeInfo) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for NodeName // no validation rules for NodeType @@ -12771,7 +20859,26 @@ func (m *NodeInfo) Validate() error { // no validation rules for Status - if v, ok := interface{}(m.GetInstanceConfig()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetInstanceConfig()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeInfoValidationError{ + field: "InstanceConfig", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeInfoValidationError{ + field: "InstanceConfig", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetInstanceConfig()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeInfoValidationError{ field: "InstanceConfig", @@ -12781,7 +20888,26 @@ func (m *NodeInfo) Validate() error { } } - if v, ok := interface{}(m.GetZoneInfo()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetZoneInfo()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeInfoValidationError{ + field: "ZoneInfo", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeInfoValidationError{ + field: "ZoneInfo", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetZoneInfo()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeInfoValidationError{ field: "ZoneInfo", @@ -12791,7 +20917,26 @@ func (m *NodeInfo) Validate() error { } } - if v, ok := interface{}(m.GetGroup()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetGroup()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeInfoValidationError{ + field: "Group", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeInfoValidationError{ + field: "Group", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetGroup()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeInfoValidationError{ field: "Group", @@ -12801,7 +20946,26 @@ func (m *NodeInfo) Validate() error { } } - if v, ok := interface{}(m.GetNodeTemplate()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetNodeTemplate()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeInfoValidationError{ + field: "NodeTemplate", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeInfoValidationError{ + field: "NodeTemplate", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetNodeTemplate()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeInfoValidationError{ field: "NodeTemplate", @@ -12811,9 +20975,29 @@ func (m *NodeInfo) Validate() error { } } + if len(errors) > 0 { + return NodeInfoMultiError(errors) + } + return nil } +// NodeInfoMultiError is an error wrapping multiple validation errors returned +// by NodeInfo.ValidateAll() if the designated constraints aren't met. +type NodeInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m NodeInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m NodeInfoMultiError) AllErrors() []error { return m } + // NodeInfoValidationError is the validation error returned by // NodeInfo.Validate if the designated constraints aren't met. type NodeInfoValidationError struct { @@ -12870,17 +21054,52 @@ var _ interface { // Validate checks the field values on ListCommonClusterReq with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCommonClusterReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCommonClusterReq with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListCommonClusterReqMultiError, or nil if none found. +func (m *ListCommonClusterReq) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCommonClusterReq) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ShowVCluster + if len(errors) > 0 { + return ListCommonClusterReqMultiError(errors) + } + return nil } +// ListCommonClusterReqMultiError is an error wrapping multiple validation +// errors returned by ListCommonClusterReq.ValidateAll() if the designated +// constraints aren't met. +type ListCommonClusterReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCommonClusterReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCommonClusterReqMultiError) AllErrors() []error { return m } + // ListCommonClusterReqValidationError is the validation error returned by // ListCommonClusterReq.Validate if the designated constraints aren't met. type ListCommonClusterReqValidationError struct { @@ -12939,12 +21158,26 @@ var _ interface { // Validate checks the field values on ListCommonClusterResp with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCommonClusterResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCommonClusterResp with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListCommonClusterRespMultiError, or nil if none found. +func (m *ListCommonClusterResp) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCommonClusterResp) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -12954,7 +21187,26 @@ func (m *ListCommonClusterResp) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListCommonClusterRespValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListCommonClusterRespValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCommonClusterRespValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -12966,7 +21218,26 @@ func (m *ListCommonClusterResp) Validate() error { } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListCommonClusterRespValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListCommonClusterRespValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCommonClusterRespValidationError{ field: "WebAnnotations", @@ -12976,9 +21247,30 @@ func (m *ListCommonClusterResp) Validate() error { } } + if len(errors) > 0 { + return ListCommonClusterRespMultiError(errors) + } + return nil } +// ListCommonClusterRespMultiError is an error wrapping multiple validation +// errors returned by ListCommonClusterResp.ValidateAll() if the designated +// constraints aren't met. +type ListCommonClusterRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCommonClusterRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCommonClusterRespMultiError) AllErrors() []error { return m } + // ListCommonClusterRespValidationError is the validation error returned by // ListCommonClusterResp.Validate if the designated constraints aren't met. type ListCommonClusterRespValidationError struct { @@ -13037,38 +21329,85 @@ var _ interface { // Validate checks the field values on ListProjectClusterReq with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListProjectClusterReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListProjectClusterReq with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListProjectClusterReqMultiError, or nil if none found. +func (m *ListProjectClusterReq) ValidateAll() error { + return m.validate(true) +} + +func (m *ListProjectClusterReq) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetProjectID()) > 100 { - return ListProjectClusterReqValidationError{ + err := ListProjectClusterReqValidationError{ field: "ProjectID", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetRegion()) > 100 { - return ListProjectClusterReqValidationError{ + err := ListProjectClusterReqValidationError{ field: "Region", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetProvider()) > 32 { - return ListProjectClusterReqValidationError{ + err := ListProjectClusterReqValidationError{ field: "Provider", reason: "value length must be at most 32 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Operator + if len(errors) > 0 { + return ListProjectClusterReqMultiError(errors) + } + return nil } +// ListProjectClusterReqMultiError is an error wrapping multiple validation +// errors returned by ListProjectClusterReq.ValidateAll() if the designated +// constraints aren't met. +type ListProjectClusterReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListProjectClusterReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListProjectClusterReqMultiError) AllErrors() []error { return m } + // ListProjectClusterReqValidationError is the validation error returned by // ListProjectClusterReq.Validate if the designated constraints aren't met. type ListProjectClusterReqValidationError struct { @@ -13127,12 +21466,26 @@ var _ interface { // Validate checks the field values on ListProjectClusterResp with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListProjectClusterResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListProjectClusterResp with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListProjectClusterRespMultiError, or nil if none found. +func (m *ListProjectClusterResp) ValidateAll() error { + return m.validate(true) +} + +func (m *ListProjectClusterResp) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -13142,7 +21495,26 @@ func (m *ListProjectClusterResp) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListProjectClusterRespValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListProjectClusterRespValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListProjectClusterRespValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -13154,24 +21526,72 @@ func (m *ListProjectClusterResp) Validate() error { } - for key, val := range m.GetClusterExtraInfo() { - _ = val + { + sorted_keys := make([]string, len(m.GetClusterExtraInfo())) + i := 0 + for key := range m.GetClusterExtraInfo() { + sorted_keys[i] = key + i++ + } + sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) + for _, key := range sorted_keys { + val := m.GetClusterExtraInfo()[key] + _ = val + + // no validation rules for ClusterExtraInfo[key] + + if all { + switch v := interface{}(val).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListProjectClusterRespValidationError{ + field: fmt.Sprintf("ClusterExtraInfo[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListProjectClusterRespValidationError{ + field: fmt.Sprintf("ClusterExtraInfo[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return ListProjectClusterRespValidationError{ + field: fmt.Sprintf("ClusterExtraInfo[%v]", key), + reason: "embedded message failed validation", + cause: err, + } + } + } - // no validation rules for ClusterExtraInfo[key] + } + } - if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListProjectClusterRespValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: if err := v.Validate(); err != nil { - return ListProjectClusterRespValidationError{ - field: fmt.Sprintf("ClusterExtraInfo[%v]", key), + errors = append(errors, ListProjectClusterRespValidationError{ + field: "WebAnnotations", reason: "embedded message failed validation", cause: err, - } + }) } } - - } - - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListProjectClusterRespValidationError{ field: "WebAnnotations", @@ -13181,9 +21601,30 @@ func (m *ListProjectClusterResp) Validate() error { } } + if len(errors) > 0 { + return ListProjectClusterRespMultiError(errors) + } + return nil } +// ListProjectClusterRespMultiError is an error wrapping multiple validation +// errors returned by ListProjectClusterResp.ValidateAll() if the designated +// constraints aren't met. +type ListProjectClusterRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListProjectClusterRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListProjectClusterRespMultiError) AllErrors() []error { return m } + // ListProjectClusterRespValidationError is the validation error returned by // ListProjectClusterResp.Validate if the designated constraints aren't met. type ListProjectClusterRespValidationError struct { @@ -13241,53 +21682,91 @@ var _ interface { } = ListProjectClusterRespValidationError{} // Validate checks the field values on ListClusterReq with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *ListClusterReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListClusterReq with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in ListClusterReqMultiError, +// or nil if none found. +func (m *ListClusterReq) ValidateAll() error { + return m.validate(true) +} + +func (m *ListClusterReq) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetClusterName()) > 100 { - return ListClusterReqValidationError{ + err := ListClusterReqValidationError{ field: "ClusterName", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetProvider()) > 32 { - return ListClusterReqValidationError{ + err := ListClusterReqValidationError{ field: "Provider", reason: "value length must be at most 32 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetRegion()) > 100 { - return ListClusterReqValidationError{ + err := ListClusterReqValidationError{ field: "Region", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetVpcID()) > 32 { - return ListClusterReqValidationError{ + err := ListClusterReqValidationError{ field: "VpcID", reason: "value length must be at most 32 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetProjectID()) > 100 { - return ListClusterReqValidationError{ + err := ListClusterReqValidationError{ field: "ProjectID", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetBusinessID()) > 100 { - return ListClusterReqValidationError{ + err := ListClusterReqValidationError{ field: "BusinessID", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Environment @@ -13301,33 +21780,49 @@ func (m *ListClusterReq) Validate() error { // no validation rules for FederationClusterID if _, ok := _ListClusterReq_Status_InLookup[m.GetStatus()]; !ok { - return ListClusterReqValidationError{ + err := ListClusterReqValidationError{ field: "Status", reason: "value must be in list [CREATING RUNNING DELETING FALURE INITIALIZATION DELETED ]", } + if !all { + return err + } + errors = append(errors, err) } if m.GetOffset() < 0 { - return ListClusterReqValidationError{ + err := ListClusterReqValidationError{ field: "Offset", reason: "value must be greater than or equal to 0", } + if !all { + return err + } + errors = append(errors, err) } if m.GetLimit() > 1000 { - return ListClusterReqValidationError{ + err := ListClusterReqValidationError{ field: "Limit", reason: "value must be less than or equal to 1000", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Operator if utf8.RuneCountInString(m.GetSystemID()) > 100 { - return ListClusterReqValidationError{ + err := ListClusterReqValidationError{ field: "SystemID", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for ExtraClusterID @@ -13336,9 +21831,30 @@ func (m *ListClusterReq) Validate() error { // no validation rules for ClusterID + if len(errors) > 0 { + return ListClusterReqMultiError(errors) + } + return nil } +// ListClusterReqMultiError is an error wrapping multiple validation errors +// returned by ListClusterReq.ValidateAll() if the designated constraints +// aren't met. +type ListClusterReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListClusterReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListClusterReqMultiError) AllErrors() []error { return m } + // ListClusterReqValidationError is the validation error returned by // ListClusterReq.Validate if the designated constraints aren't met. type ListClusterReqValidationError struct { @@ -13404,13 +21920,27 @@ var _ListClusterReq_Status_InLookup = map[string]struct{}{ } // Validate checks the field values on ListClusterResp with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *ListClusterResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListClusterResp with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListClusterRespMultiError, or nil if none found. +func (m *ListClusterResp) ValidateAll() error { + return m.validate(true) +} + +func (m *ListClusterResp) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -13420,7 +21950,26 @@ func (m *ListClusterResp) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListClusterRespValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListClusterRespValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListClusterRespValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -13432,24 +21981,72 @@ func (m *ListClusterResp) Validate() error { } - for key, val := range m.GetClusterExtraInfo() { - _ = val + { + sorted_keys := make([]string, len(m.GetClusterExtraInfo())) + i := 0 + for key := range m.GetClusterExtraInfo() { + sorted_keys[i] = key + i++ + } + sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) + for _, key := range sorted_keys { + val := m.GetClusterExtraInfo()[key] + _ = val + + // no validation rules for ClusterExtraInfo[key] + + if all { + switch v := interface{}(val).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListClusterRespValidationError{ + field: fmt.Sprintf("ClusterExtraInfo[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListClusterRespValidationError{ + field: fmt.Sprintf("ClusterExtraInfo[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return ListClusterRespValidationError{ + field: fmt.Sprintf("ClusterExtraInfo[%v]", key), + reason: "embedded message failed validation", + cause: err, + } + } + } - // no validation rules for ClusterExtraInfo[key] + } + } - if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListClusterRespValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: if err := v.Validate(); err != nil { - return ListClusterRespValidationError{ - field: fmt.Sprintf("ClusterExtraInfo[%v]", key), + errors = append(errors, ListClusterRespValidationError{ + field: "WebAnnotations", reason: "embedded message failed validation", cause: err, - } + }) } } - - } - - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListClusterRespValidationError{ field: "WebAnnotations", @@ -13459,9 +22056,30 @@ func (m *ListClusterResp) Validate() error { } } + if len(errors) > 0 { + return ListClusterRespMultiError(errors) + } + return nil } +// ListClusterRespMultiError is an error wrapping multiple validation errors +// returned by ListClusterResp.ValidateAll() if the designated constraints +// aren't met. +type ListClusterRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListClusterRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListClusterRespMultiError) AllErrors() []error { return m } + // ListClusterRespValidationError is the validation error returned by // ListClusterResp.Validate if the designated constraints aren't met. type ListClusterRespValidationError struct { @@ -13517,21 +22135,56 @@ var _ interface { } = ListClusterRespValidationError{} // Validate checks the field values on ExtraInfo with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *ExtraInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ExtraInfo with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in ExtraInfoMultiError, or nil +// if none found. +func (m *ExtraInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *ExtraInfo) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for CanDeleted // no validation rules for ProviderType // no validation rules for AutoScale + if len(errors) > 0 { + return ExtraInfoMultiError(errors) + } + return nil } +// ExtraInfoMultiError is an error wrapping multiple validation errors returned +// by ExtraInfo.ValidateAll() if the designated constraints aren't met. +type ExtraInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ExtraInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ExtraInfoMultiError) AllErrors() []error { return m } + // ExtraInfoValidationError is the validation error returned by // ExtraInfo.Validate if the designated constraints aren't met. type ExtraInfoValidationError struct { @@ -13587,33 +22240,97 @@ var _ interface { } = ExtraInfoValidationError{} // Validate checks the field values on WebAnnotations with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *WebAnnotations) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on WebAnnotations with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in WebAnnotationsMultiError, +// or nil if none found. +func (m *WebAnnotations) ValidateAll() error { + return m.validate(true) +} + +func (m *WebAnnotations) validate(all bool) error { if m == nil { return nil } - for key, val := range m.GetPerms() { - _ = val + var errors []error - // no validation rules for Perms[key] + { + sorted_keys := make([]string, len(m.GetPerms())) + i := 0 + for key := range m.GetPerms() { + sorted_keys[i] = key + i++ + } + sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) + for _, key := range sorted_keys { + val := m.GetPerms()[key] + _ = val - if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return WebAnnotationsValidationError{ - field: fmt.Sprintf("Perms[%v]", key), - reason: "embedded message failed validation", - cause: err, + // no validation rules for Perms[key] + + if all { + switch v := interface{}(val).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, WebAnnotationsValidationError{ + field: fmt.Sprintf("Perms[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, WebAnnotationsValidationError{ + field: fmt.Sprintf("Perms[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return WebAnnotationsValidationError{ + field: fmt.Sprintf("Perms[%v]", key), + reason: "embedded message failed validation", + cause: err, + } } } + } + } + if len(errors) > 0 { + return WebAnnotationsMultiError(errors) } return nil } +// WebAnnotationsMultiError is an error wrapping multiple validation errors +// returned by WebAnnotations.ValidateAll() if the designated constraints +// aren't met. +type WebAnnotationsMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m WebAnnotationsMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m WebAnnotationsMultiError) AllErrors() []error { return m } + // WebAnnotationsValidationError is the validation error returned by // WebAnnotations.Validate if the designated constraints aren't met. type WebAnnotationsValidationError struct { @@ -13669,14 +22386,47 @@ var _ interface { } = WebAnnotationsValidationError{} // Validate checks the field values on WebAnnotationsV2 with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *WebAnnotationsV2) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on WebAnnotationsV2 with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// WebAnnotationsV2MultiError, or nil if none found. +func (m *WebAnnotationsV2) ValidateAll() error { + return m.validate(true) +} + +func (m *WebAnnotationsV2) validate(all bool) error { if m == nil { return nil } - if v, ok := interface{}(m.GetPerms()).(interface{ Validate() error }); ok { + var errors []error + + if all { + switch v := interface{}(m.GetPerms()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, WebAnnotationsV2ValidationError{ + field: "Perms", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, WebAnnotationsV2ValidationError{ + field: "Perms", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetPerms()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return WebAnnotationsV2ValidationError{ field: "Perms", @@ -13686,9 +22436,30 @@ func (m *WebAnnotationsV2) Validate() error { } } + if len(errors) > 0 { + return WebAnnotationsV2MultiError(errors) + } + return nil } +// WebAnnotationsV2MultiError is an error wrapping multiple validation errors +// returned by WebAnnotationsV2.ValidateAll() if the designated constraints +// aren't met. +type WebAnnotationsV2MultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m WebAnnotationsV2MultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m WebAnnotationsV2MultiError) AllErrors() []error { return m } + // WebAnnotationsV2ValidationError is the validation error returned by // WebAnnotationsV2.Validate if the designated constraints aren't met. type WebAnnotationsV2ValidationError struct { @@ -13745,38 +22516,68 @@ var _ interface { // Validate checks the field values on ListNodesInClusterRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListNodesInClusterRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListNodesInClusterRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListNodesInClusterRequestMultiError, or nil if none found. +func (m *ListNodesInClusterRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListNodesInClusterRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetClusterID()); l < 1 || l > 100 { - return ListNodesInClusterRequestValidationError{ + err := ListNodesInClusterRequestValidationError{ field: "ClusterID", reason: "value length must be between 1 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetRegion()) > 100 { - return ListNodesInClusterRequestValidationError{ + err := ListNodesInClusterRequestValidationError{ field: "Region", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetVpcID()) > 32 { - return ListNodesInClusterRequestValidationError{ + err := ListNodesInClusterRequestValidationError{ field: "VpcID", reason: "value length must be at most 32 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetNodeGroupID()) > 100 { - return ListNodesInClusterRequestValidationError{ + err := ListNodesInClusterRequestValidationError{ field: "NodeGroupID", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for InstanceType @@ -13784,24 +22585,53 @@ func (m *ListNodesInClusterRequest) Validate() error { // no validation rules for Status if m.GetOffset() < 0 { - return ListNodesInClusterRequestValidationError{ + err := ListNodesInClusterRequestValidationError{ field: "Offset", reason: "value must be greater than or equal to 0", } + if !all { + return err + } + errors = append(errors, err) } if m.GetLimit() > 1000 { - return ListNodesInClusterRequestValidationError{ + err := ListNodesInClusterRequestValidationError{ field: "Limit", reason: "value must be less than or equal to 1000", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for ShowPwd + if len(errors) > 0 { + return ListNodesInClusterRequestMultiError(errors) + } + return nil } +// ListNodesInClusterRequestMultiError is an error wrapping multiple validation +// errors returned by ListNodesInClusterRequest.ValidateAll() if the +// designated constraints aren't met. +type ListNodesInClusterRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListNodesInClusterRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListNodesInClusterRequestMultiError) AllErrors() []error { return m } + // ListNodesInClusterRequestValidationError is the validation error returned by // ListNodesInClusterRequest.Validate if the designated constraints aren't met. type ListNodesInClusterRequestValidationError struct { @@ -13860,12 +22690,26 @@ var _ interface { // Validate checks the field values on ListNodesInClusterResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListNodesInClusterResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListNodesInClusterResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListNodesInClusterResponseMultiError, or nil if none found. +func (m *ListNodesInClusterResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListNodesInClusterResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -13875,7 +22719,26 @@ func (m *ListNodesInClusterResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListNodesInClusterResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListNodesInClusterResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListNodesInClusterResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -13887,7 +22750,26 @@ func (m *ListNodesInClusterResponse) Validate() error { } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListNodesInClusterResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListNodesInClusterResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListNodesInClusterResponseValidationError{ field: "WebAnnotations", @@ -13897,9 +22779,30 @@ func (m *ListNodesInClusterResponse) Validate() error { } } + if len(errors) > 0 { + return ListNodesInClusterResponseMultiError(errors) + } + return nil } +// ListNodesInClusterResponseMultiError is an error wrapping multiple +// validation errors returned by ListNodesInClusterResponse.ValidateAll() if +// the designated constraints aren't met. +type ListNodesInClusterResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListNodesInClusterResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListNodesInClusterResponseMultiError) AllErrors() []error { return m } + // ListNodesInClusterResponseValidationError is the validation error returned // by ListNodesInClusterResponse.Validate if the designated constraints aren't met. type ListNodesInClusterResponseValidationError struct { @@ -13957,13 +22860,27 @@ var _ interface { } = ListNodesInClusterResponseValidationError{} // Validate checks the field values on ClusterNode with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *ClusterNode) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ClusterNode with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in ClusterNodeMultiError, or +// nil if none found. +func (m *ClusterNode) ValidateAll() error { + return m.validate(true) +} + +func (m *ClusterNode) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for NodeID // no validation rules for InnerIP @@ -13999,7 +22916,26 @@ func (m *ClusterNode) Validate() error { for idx, item := range m.GetTaints() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ClusterNodeValidationError{ + field: fmt.Sprintf("Taints[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ClusterNodeValidationError{ + field: fmt.Sprintf("Taints[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterNodeValidationError{ field: fmt.Sprintf("Taints[%v]", idx), @@ -14035,9 +22971,29 @@ func (m *ClusterNode) Validate() error { // no validation rules for TaskID + if len(errors) > 0 { + return ClusterNodeMultiError(errors) + } + return nil } +// ClusterNodeMultiError is an error wrapping multiple validation errors +// returned by ClusterNode.ValidateAll() if the designated constraints aren't met. +type ClusterNodeMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ClusterNodeMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ClusterNodeMultiError) AllErrors() []error { return m } + // ClusterNodeValidationError is the validation error returned by // ClusterNode.Validate if the designated constraints aren't met. type ClusterNodeValidationError struct { @@ -14094,22 +23050,61 @@ var _ interface { // Validate checks the field values on ListMastersInClusterRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListMastersInClusterRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListMastersInClusterRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListMastersInClusterRequestMultiError, or nil if none found. +func (m *ListMastersInClusterRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListMastersInClusterRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetClusterID()); l < 1 || l > 100 { - return ListMastersInClusterRequestValidationError{ + err := ListMastersInClusterRequestValidationError{ field: "ClusterID", reason: "value length must be between 1 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return ListMastersInClusterRequestMultiError(errors) } return nil } +// ListMastersInClusterRequestMultiError is an error wrapping multiple +// validation errors returned by ListMastersInClusterRequest.ValidateAll() if +// the designated constraints aren't met. +type ListMastersInClusterRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListMastersInClusterRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListMastersInClusterRequestMultiError) AllErrors() []error { return m } + // ListMastersInClusterRequestValidationError is the validation error returned // by ListMastersInClusterRequest.Validate if the designated constraints // aren't met. @@ -14169,12 +23164,26 @@ var _ interface { // Validate checks the field values on ListMastersInClusterResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListMastersInClusterResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListMastersInClusterResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListMastersInClusterResponseMultiError, or nil if none found. +func (m *ListMastersInClusterResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListMastersInClusterResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -14184,7 +23193,26 @@ func (m *ListMastersInClusterResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListMastersInClusterResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListMastersInClusterResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListMastersInClusterResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -14196,7 +23224,26 @@ func (m *ListMastersInClusterResponse) Validate() error { } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListMastersInClusterResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListMastersInClusterResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListMastersInClusterResponseValidationError{ field: "WebAnnotations", @@ -14206,9 +23253,30 @@ func (m *ListMastersInClusterResponse) Validate() error { } } + if len(errors) > 0 { + return ListMastersInClusterResponseMultiError(errors) + } + return nil } +// ListMastersInClusterResponseMultiError is an error wrapping multiple +// validation errors returned by ListMastersInClusterResponse.ValidateAll() if +// the designated constraints aren't met. +type ListMastersInClusterResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListMastersInClusterResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListMastersInClusterResponseMultiError) AllErrors() []error { return m } + // ListMastersInClusterResponseValidationError is the validation error returned // by ListMastersInClusterResponse.Validate if the designated constraints // aren't met. @@ -14268,22 +23336,61 @@ var _ interface { // Validate checks the field values on GetClusterCredentialReq with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetClusterCredentialReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetClusterCredentialReq with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetClusterCredentialReqMultiError, or nil if none found. +func (m *GetClusterCredentialReq) ValidateAll() error { + return m.validate(true) +} + +func (m *GetClusterCredentialReq) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetServerKey()); l < 1 || l > 100 { - return GetClusterCredentialReqValidationError{ + err := GetClusterCredentialReqValidationError{ field: "ServerKey", reason: "value length must be between 1 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return GetClusterCredentialReqMultiError(errors) } return nil } +// GetClusterCredentialReqMultiError is an error wrapping multiple validation +// errors returned by GetClusterCredentialReq.ValidateAll() if the designated +// constraints aren't met. +type GetClusterCredentialReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetClusterCredentialReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetClusterCredentialReqMultiError) AllErrors() []error { return m } + // GetClusterCredentialReqValidationError is the validation error returned by // GetClusterCredentialReq.Validate if the designated constraints aren't met. type GetClusterCredentialReqValidationError struct { @@ -14342,19 +23449,52 @@ var _ interface { // Validate checks the field values on GetClusterCredentialResp with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetClusterCredentialResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetClusterCredentialResp with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetClusterCredentialRespMultiError, or nil if none found. +func (m *GetClusterCredentialResp) ValidateAll() error { + return m.validate(true) +} + +func (m *GetClusterCredentialResp) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetClusterCredentialRespValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetClusterCredentialRespValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetClusterCredentialRespValidationError{ field: "Data", @@ -14364,9 +23504,30 @@ func (m *GetClusterCredentialResp) Validate() error { } } + if len(errors) > 0 { + return GetClusterCredentialRespMultiError(errors) + } + return nil } +// GetClusterCredentialRespMultiError is an error wrapping multiple validation +// errors returned by GetClusterCredentialResp.ValidateAll() if the designated +// constraints aren't met. +type GetClusterCredentialRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetClusterCredentialRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetClusterCredentialRespMultiError) AllErrors() []error { return m } + // GetClusterCredentialRespValidationError is the validation error returned by // GetClusterCredentialResp.Validate if the designated constraints aren't met. type GetClusterCredentialRespValidationError struct { @@ -14425,78 +23586,149 @@ var _ interface { // Validate checks the field values on UpdateClusterCredentialReq with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateClusterCredentialReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateClusterCredentialReq with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateClusterCredentialReqMultiError, or nil if none found. +func (m *UpdateClusterCredentialReq) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateClusterCredentialReq) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetServerKey()); l < 1 || l > 100 { - return UpdateClusterCredentialReqValidationError{ + err := UpdateClusterCredentialReqValidationError{ field: "ServerKey", reason: "value length must be between 1 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetClusterID()); l < 1 || l > 100 { - return UpdateClusterCredentialReqValidationError{ + err := UpdateClusterCredentialReqValidationError{ field: "ClusterID", reason: "value length must be between 1 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetClientModule()); l < 1 || l > 100 { - return UpdateClusterCredentialReqValidationError{ + err := UpdateClusterCredentialReqValidationError{ field: "ClientModule", reason: "value length must be between 1 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetServerAddress()); l < 1 || l > 2048 { - return UpdateClusterCredentialReqValidationError{ + err := UpdateClusterCredentialReqValidationError{ field: "ServerAddress", reason: "value length must be between 1 and 2048 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetCaCertData()) > 4096 { - return UpdateClusterCredentialReqValidationError{ + err := UpdateClusterCredentialReqValidationError{ field: "CaCertData", reason: "value length must be at most 4096 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetUserToken()) > 2048 { - return UpdateClusterCredentialReqValidationError{ + err := UpdateClusterCredentialReqValidationError{ field: "UserToken", reason: "value length must be at most 2048 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetClusterDomain()) > 2048 { - return UpdateClusterCredentialReqValidationError{ + err := UpdateClusterCredentialReqValidationError{ field: "ClusterDomain", reason: "value length must be at most 2048 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetClientCert()) > 4096 { - return UpdateClusterCredentialReqValidationError{ + err := UpdateClusterCredentialReqValidationError{ field: "ClientCert", reason: "value length must be at most 4096 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetClientKey()) > 4096 { - return UpdateClusterCredentialReqValidationError{ + err := UpdateClusterCredentialReqValidationError{ field: "ClientKey", reason: "value length must be at most 4096 runes", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return UpdateClusterCredentialReqMultiError(errors) } return nil } +// UpdateClusterCredentialReqMultiError is an error wrapping multiple +// validation errors returned by UpdateClusterCredentialReq.ValidateAll() if +// the designated constraints aren't met. +type UpdateClusterCredentialReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateClusterCredentialReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateClusterCredentialReqMultiError) AllErrors() []error { return m } + // UpdateClusterCredentialReqValidationError is the validation error returned // by UpdateClusterCredentialReq.Validate if the designated constraints aren't met. type UpdateClusterCredentialReqValidationError struct { @@ -14555,21 +23787,56 @@ var _ interface { // Validate checks the field values on UpdateClusterCredentialResp with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateClusterCredentialResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateClusterCredentialResp with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateClusterCredentialRespMultiError, or nil if none found. +func (m *UpdateClusterCredentialResp) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateClusterCredentialResp) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result + if len(errors) > 0 { + return UpdateClusterCredentialRespMultiError(errors) + } + return nil } +// UpdateClusterCredentialRespMultiError is an error wrapping multiple +// validation errors returned by UpdateClusterCredentialResp.ValidateAll() if +// the designated constraints aren't met. +type UpdateClusterCredentialRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateClusterCredentialRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateClusterCredentialRespMultiError) AllErrors() []error { return m } + // UpdateClusterCredentialRespValidationError is the validation error returned // by UpdateClusterCredentialResp.Validate if the designated constraints // aren't met. @@ -14629,22 +23896,61 @@ var _ interface { // Validate checks the field values on DeleteClusterCredentialReq with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DeleteClusterCredentialReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteClusterCredentialReq with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeleteClusterCredentialReqMultiError, or nil if none found. +func (m *DeleteClusterCredentialReq) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteClusterCredentialReq) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetServerKey()); l < 2 || l > 100 { - return DeleteClusterCredentialReqValidationError{ + err := DeleteClusterCredentialReqValidationError{ field: "ServerKey", reason: "value length must be between 2 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return DeleteClusterCredentialReqMultiError(errors) } return nil } +// DeleteClusterCredentialReqMultiError is an error wrapping multiple +// validation errors returned by DeleteClusterCredentialReq.ValidateAll() if +// the designated constraints aren't met. +type DeleteClusterCredentialReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteClusterCredentialReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteClusterCredentialReqMultiError) AllErrors() []error { return m } + // DeleteClusterCredentialReqValidationError is the validation error returned // by DeleteClusterCredentialReq.Validate if the designated constraints aren't met. type DeleteClusterCredentialReqValidationError struct { @@ -14703,21 +24009,56 @@ var _ interface { // Validate checks the field values on DeleteClusterCredentialResp with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DeleteClusterCredentialResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteClusterCredentialResp with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeleteClusterCredentialRespMultiError, or nil if none found. +func (m *DeleteClusterCredentialResp) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteClusterCredentialResp) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result + if len(errors) > 0 { + return DeleteClusterCredentialRespMultiError(errors) + } + return nil } +// DeleteClusterCredentialRespMultiError is an error wrapping multiple +// validation errors returned by DeleteClusterCredentialResp.ValidateAll() if +// the designated constraints aren't met. +type DeleteClusterCredentialRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteClusterCredentialRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteClusterCredentialRespMultiError) AllErrors() []error { return m } + // DeleteClusterCredentialRespValidationError is the validation error returned // by DeleteClusterCredentialResp.Validate if the designated constraints // aren't met. @@ -14777,57 +24118,116 @@ var _ interface { // Validate checks the field values on ListClusterCredentialReq with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListClusterCredentialReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListClusterCredentialReq with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListClusterCredentialReqMultiError, or nil if none found. +func (m *ListClusterCredentialReq) ValidateAll() error { + return m.validate(true) +} + +func (m *ListClusterCredentialReq) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetServerKey()) > 100 { - return ListClusterCredentialReqValidationError{ + err := ListClusterCredentialReqValidationError{ field: "ServerKey", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetClusterID()) > 100 { - return ListClusterCredentialReqValidationError{ + err := ListClusterCredentialReqValidationError{ field: "ClusterID", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetClientMode()) > 100 { - return ListClusterCredentialReqValidationError{ + err := ListClusterCredentialReqValidationError{ field: "ClientMode", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetConnectMode()) > 100 { - return ListClusterCredentialReqValidationError{ + err := ListClusterCredentialReqValidationError{ field: "ConnectMode", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } if m.GetOffset() < 0 { - return ListClusterCredentialReqValidationError{ + err := ListClusterCredentialReqValidationError{ field: "Offset", reason: "value must be greater than or equal to 0", } + if !all { + return err + } + errors = append(errors, err) } if m.GetLimit() > 1000 { - return ListClusterCredentialReqValidationError{ + err := ListClusterCredentialReqValidationError{ field: "Limit", reason: "value must be less than or equal to 1000", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return ListClusterCredentialReqMultiError(errors) } return nil } +// ListClusterCredentialReqMultiError is an error wrapping multiple validation +// errors returned by ListClusterCredentialReq.ValidateAll() if the designated +// constraints aren't met. +type ListClusterCredentialReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListClusterCredentialReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListClusterCredentialReqMultiError) AllErrors() []error { return m } + // ListClusterCredentialReqValidationError is the validation error returned by // ListClusterCredentialReq.Validate if the designated constraints aren't met. type ListClusterCredentialReqValidationError struct { @@ -14886,12 +24286,26 @@ var _ interface { // Validate checks the field values on ListClusterCredentialResp with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListClusterCredentialResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListClusterCredentialResp with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListClusterCredentialRespMultiError, or nil if none found. +func (m *ListClusterCredentialResp) ValidateAll() error { + return m.validate(true) +} + +func (m *ListClusterCredentialResp) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -14901,7 +24315,26 @@ func (m *ListClusterCredentialResp) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListClusterCredentialRespValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListClusterCredentialRespValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListClusterCredentialRespValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -14913,9 +24346,30 @@ func (m *ListClusterCredentialResp) Validate() error { } + if len(errors) > 0 { + return ListClusterCredentialRespMultiError(errors) + } + return nil } +// ListClusterCredentialRespMultiError is an error wrapping multiple validation +// errors returned by ListClusterCredentialResp.ValidateAll() if the +// designated constraints aren't met. +type ListClusterCredentialRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListClusterCredentialRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListClusterCredentialRespMultiError) AllErrors() []error { return m } + // ListClusterCredentialRespValidationError is the validation error returned by // ListClusterCredentialResp.Validate if the designated constraints aren't met. type ListClusterCredentialRespValidationError struct { @@ -14974,15 +24428,50 @@ var _ interface { // Validate checks the field values on InitFederationClusterReq with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *InitFederationClusterReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on InitFederationClusterReq with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// InitFederationClusterReqMultiError, or nil if none found. +func (m *InitFederationClusterReq) ValidateAll() error { + return m.validate(true) +} + +func (m *InitFederationClusterReq) validate(all bool) error { if m == nil { return nil } + var errors []error + + if len(errors) > 0 { + return InitFederationClusterReqMultiError(errors) + } + return nil } +// InitFederationClusterReqMultiError is an error wrapping multiple validation +// errors returned by InitFederationClusterReq.ValidateAll() if the designated +// constraints aren't met. +type InitFederationClusterReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m InitFederationClusterReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m InitFederationClusterReqMultiError) AllErrors() []error { return m } + // InitFederationClusterReqValidationError is the validation error returned by // InitFederationClusterReq.Validate if the designated constraints aren't met. type InitFederationClusterReqValidationError struct { @@ -15041,15 +24530,50 @@ var _ interface { // Validate checks the field values on InitFederationClusterResp with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *InitFederationClusterResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on InitFederationClusterResp with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// InitFederationClusterRespMultiError, or nil if none found. +func (m *InitFederationClusterResp) ValidateAll() error { + return m.validate(true) +} + +func (m *InitFederationClusterResp) validate(all bool) error { if m == nil { return nil } + var errors []error + + if len(errors) > 0 { + return InitFederationClusterRespMultiError(errors) + } + return nil } +// InitFederationClusterRespMultiError is an error wrapping multiple validation +// errors returned by InitFederationClusterResp.ValidateAll() if the +// designated constraints aren't met. +type InitFederationClusterRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m InitFederationClusterRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m InitFederationClusterRespMultiError) AllErrors() []error { return m } + // InitFederationClusterRespValidationError is the validation error returned by // InitFederationClusterResp.Validate if the designated constraints aren't met. type InitFederationClusterRespValidationError struct { @@ -15108,19 +24632,54 @@ var _ interface { // Validate checks the field values on AddFederatedClusterReq with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *AddFederatedClusterReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on AddFederatedClusterReq with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// AddFederatedClusterReqMultiError, or nil if none found. +func (m *AddFederatedClusterReq) ValidateAll() error { + return m.validate(true) +} + +func (m *AddFederatedClusterReq) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for FederationClusterID // no validation rules for ClusterID + if len(errors) > 0 { + return AddFederatedClusterReqMultiError(errors) + } + return nil } +// AddFederatedClusterReqMultiError is an error wrapping multiple validation +// errors returned by AddFederatedClusterReq.ValidateAll() if the designated +// constraints aren't met. +type AddFederatedClusterReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m AddFederatedClusterReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m AddFederatedClusterReqMultiError) AllErrors() []error { return m } + // AddFederatedClusterReqValidationError is the validation error returned by // AddFederatedClusterReq.Validate if the designated constraints aren't met. type AddFederatedClusterReqValidationError struct { @@ -15179,21 +24738,56 @@ var _ interface { // Validate checks the field values on AddFederatedClusterResp with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *AddFederatedClusterResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on AddFederatedClusterResp with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// AddFederatedClusterRespMultiError, or nil if none found. +func (m *AddFederatedClusterResp) ValidateAll() error { + return m.validate(true) +} + +func (m *AddFederatedClusterResp) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result + if len(errors) > 0 { + return AddFederatedClusterRespMultiError(errors) + } + return nil } +// AddFederatedClusterRespMultiError is an error wrapping multiple validation +// errors returned by AddFederatedClusterResp.ValidateAll() if the designated +// constraints aren't met. +type AddFederatedClusterRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m AddFederatedClusterRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m AddFederatedClusterRespMultiError) AllErrors() []error { return m } + // AddFederatedClusterRespValidationError is the validation error returned by // AddFederatedClusterResp.Validate if the designated constraints aren't met. type AddFederatedClusterRespValidationError struct { @@ -15252,70 +24846,173 @@ var _ interface { // Validate checks the field values on CreateCloudRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CreateCloudRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CreateCloudRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CreateCloudRequestMultiError, or nil if none found. +func (m *CreateCloudRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *CreateCloudRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetCloudID()); l < 2 || l > 20 { - return CreateCloudRequestValidationError{ + err := CreateCloudRequestValidationError{ field: "CloudID", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_CreateCloudRequest_CloudID_Pattern.MatchString(m.GetCloudID()) { - return CreateCloudRequestValidationError{ + err := CreateCloudRequestValidationError{ field: "CloudID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetName()); l < 2 || l > 64 { - return CreateCloudRequestValidationError{ + err := CreateCloudRequestValidationError{ field: "Name", reason: "value length must be between 2 and 64 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Editable - for key, val := range m.GetOpsPlugins() { - _ = val - - // no validation rules for OpsPlugins[key] - - if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return CreateCloudRequestValidationError{ - field: fmt.Sprintf("OpsPlugins[%v]", key), - reason: "embedded message failed validation", - cause: err, + { + sorted_keys := make([]string, len(m.GetOpsPlugins())) + i := 0 + for key := range m.GetOpsPlugins() { + sorted_keys[i] = key + i++ + } + sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) + for _, key := range sorted_keys { + val := m.GetOpsPlugins()[key] + _ = val + + // no validation rules for OpsPlugins[key] + + if all { + switch v := interface{}(val).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateCloudRequestValidationError{ + field: fmt.Sprintf("OpsPlugins[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateCloudRequestValidationError{ + field: fmt.Sprintf("OpsPlugins[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return CreateCloudRequestValidationError{ + field: fmt.Sprintf("OpsPlugins[%v]", key), + reason: "embedded message failed validation", + cause: err, + } } } - } + } } - for key, val := range m.GetExtraPlugins() { - _ = val + { + sorted_keys := make([]string, len(m.GetExtraPlugins())) + i := 0 + for key := range m.GetExtraPlugins() { + sorted_keys[i] = key + i++ + } + sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) + for _, key := range sorted_keys { + val := m.GetExtraPlugins()[key] + _ = val + + // no validation rules for ExtraPlugins[key] + + if all { + switch v := interface{}(val).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateCloudRequestValidationError{ + field: fmt.Sprintf("ExtraPlugins[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateCloudRequestValidationError{ + field: fmt.Sprintf("ExtraPlugins[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return CreateCloudRequestValidationError{ + field: fmt.Sprintf("ExtraPlugins[%v]", key), + reason: "embedded message failed validation", + cause: err, + } + } + } - // no validation rules for ExtraPlugins[key] + } + } - if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetCloudCredential()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateCloudRequestValidationError{ + field: "CloudCredential", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: if err := v.Validate(); err != nil { - return CreateCloudRequestValidationError{ - field: fmt.Sprintf("ExtraPlugins[%v]", key), + errors = append(errors, CreateCloudRequestValidationError{ + field: "CloudCredential", reason: "embedded message failed validation", cause: err, - } + }) } } - - } - - if v, ok := interface{}(m.GetCloudCredential()).(interface{ Validate() error }); ok { + } else if v, ok := interface{}(m.GetCloudCredential()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateCloudRequestValidationError{ field: "CloudCredential", @@ -15325,7 +25022,26 @@ func (m *CreateCloudRequest) Validate() error { } } - if v, ok := interface{}(m.GetOsManagement()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetOsManagement()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateCloudRequestValidationError{ + field: "OsManagement", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateCloudRequestValidationError{ + field: "OsManagement", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetOsManagement()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateCloudRequestValidationError{ field: "OsManagement", @@ -15335,7 +25051,26 @@ func (m *CreateCloudRequest) Validate() error { } } - if v, ok := interface{}(m.GetClusterManagement()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetClusterManagement()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateCloudRequestValidationError{ + field: "ClusterManagement", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateCloudRequestValidationError{ + field: "ClusterManagement", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetClusterManagement()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateCloudRequestValidationError{ field: "ClusterManagement", @@ -15345,7 +25080,26 @@ func (m *CreateCloudRequest) Validate() error { } } - if v, ok := interface{}(m.GetNodeGroupManagement()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetNodeGroupManagement()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateCloudRequestValidationError{ + field: "NodeGroupManagement", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateCloudRequestValidationError{ + field: "NodeGroupManagement", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetNodeGroupManagement()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateCloudRequestValidationError{ field: "NodeGroupManagement", @@ -15356,17 +25110,25 @@ func (m *CreateCloudRequest) Validate() error { } if l := utf8.RuneCountInString(m.GetCreator()); l < 2 || l > 20 { - return CreateCloudRequestValidationError{ + err := CreateCloudRequestValidationError{ field: "Creator", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_CreateCloudRequest_Creator_Pattern.MatchString(m.GetCreator()) { - return CreateCloudRequestValidationError{ + err := CreateCloudRequestValidationError{ field: "Creator", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for CloudProvider @@ -15379,7 +25141,26 @@ func (m *CreateCloudRequest) Validate() error { // no validation rules for Enable - if v, ok := interface{}(m.GetNetworkInfo()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetNetworkInfo()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateCloudRequestValidationError{ + field: "NetworkInfo", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateCloudRequestValidationError{ + field: "NetworkInfo", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetNetworkInfo()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateCloudRequestValidationError{ field: "NetworkInfo", @@ -15389,7 +25170,26 @@ func (m *CreateCloudRequest) Validate() error { } } - if v, ok := interface{}(m.GetConfInfo()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetConfInfo()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateCloudRequestValidationError{ + field: "ConfInfo", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateCloudRequestValidationError{ + field: "ConfInfo", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetConfInfo()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateCloudRequestValidationError{ field: "ConfInfo", @@ -15401,9 +25201,30 @@ func (m *CreateCloudRequest) Validate() error { // no validation rules for PlatformInfo + if len(errors) > 0 { + return CreateCloudRequestMultiError(errors) + } + return nil } +// CreateCloudRequestMultiError is an error wrapping multiple validation errors +// returned by CreateCloudRequest.ValidateAll() if the designated constraints +// aren't met. +type CreateCloudRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CreateCloudRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CreateCloudRequestMultiError) AllErrors() []error { return m } + // CreateCloudRequestValidationError is the validation error returned by // CreateCloudRequest.Validate if the designated constraints aren't met. type CreateCloudRequestValidationError struct { @@ -15466,21 +25287,56 @@ var _CreateCloudRequest_Creator_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$") // Validate checks the field values on CreateCloudResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CreateCloudResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CreateCloudResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CreateCloudResponseMultiError, or nil if none found. +func (m *CreateCloudResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *CreateCloudResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result + if len(errors) > 0 { + return CreateCloudResponseMultiError(errors) + } + return nil } +// CreateCloudResponseMultiError is an error wrapping multiple validation +// errors returned by CreateCloudResponse.ValidateAll() if the designated +// constraints aren't met. +type CreateCloudResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CreateCloudResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CreateCloudResponseMultiError) AllErrors() []error { return m } + // CreateCloudResponseValidationError is the validation error returned by // CreateCloudResponse.Validate if the designated constraints aren't met. type CreateCloudResponseValidationError struct { @@ -15539,63 +25395,162 @@ var _ interface { // Validate checks the field values on UpdateCloudRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateCloudRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateCloudRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateCloudRequestMultiError, or nil if none found. +func (m *UpdateCloudRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateCloudRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetCloudID()) > 1024 { - return UpdateCloudRequestValidationError{ + err := UpdateCloudRequestValidationError{ field: "CloudID", reason: "value length must be at most 1024 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetName()) > 1024 { - return UpdateCloudRequestValidationError{ + err := UpdateCloudRequestValidationError{ field: "Name", reason: "value length must be at most 1024 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Editable - for key, val := range m.GetOpsPlugins() { - _ = val - - // no validation rules for OpsPlugins[key] - - if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return UpdateCloudRequestValidationError{ - field: fmt.Sprintf("OpsPlugins[%v]", key), - reason: "embedded message failed validation", - cause: err, + { + sorted_keys := make([]string, len(m.GetOpsPlugins())) + i := 0 + for key := range m.GetOpsPlugins() { + sorted_keys[i] = key + i++ + } + sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) + for _, key := range sorted_keys { + val := m.GetOpsPlugins()[key] + _ = val + + // no validation rules for OpsPlugins[key] + + if all { + switch v := interface{}(val).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateCloudRequestValidationError{ + field: fmt.Sprintf("OpsPlugins[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateCloudRequestValidationError{ + field: fmt.Sprintf("OpsPlugins[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return UpdateCloudRequestValidationError{ + field: fmt.Sprintf("OpsPlugins[%v]", key), + reason: "embedded message failed validation", + cause: err, + } } } - } + } } - for key, val := range m.GetExtraPlugins() { - _ = val + { + sorted_keys := make([]string, len(m.GetExtraPlugins())) + i := 0 + for key := range m.GetExtraPlugins() { + sorted_keys[i] = key + i++ + } + sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) + for _, key := range sorted_keys { + val := m.GetExtraPlugins()[key] + _ = val + + // no validation rules for ExtraPlugins[key] + + if all { + switch v := interface{}(val).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateCloudRequestValidationError{ + field: fmt.Sprintf("ExtraPlugins[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateCloudRequestValidationError{ + field: fmt.Sprintf("ExtraPlugins[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return UpdateCloudRequestValidationError{ + field: fmt.Sprintf("ExtraPlugins[%v]", key), + reason: "embedded message failed validation", + cause: err, + } + } + } - // no validation rules for ExtraPlugins[key] + } + } - if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetCloudCredential()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateCloudRequestValidationError{ + field: "CloudCredential", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: if err := v.Validate(); err != nil { - return UpdateCloudRequestValidationError{ - field: fmt.Sprintf("ExtraPlugins[%v]", key), + errors = append(errors, UpdateCloudRequestValidationError{ + field: "CloudCredential", reason: "embedded message failed validation", cause: err, - } + }) } } - - } - - if v, ok := interface{}(m.GetCloudCredential()).(interface{ Validate() error }); ok { + } else if v, ok := interface{}(m.GetCloudCredential()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateCloudRequestValidationError{ field: "CloudCredential", @@ -15605,7 +25560,26 @@ func (m *UpdateCloudRequest) Validate() error { } } - if v, ok := interface{}(m.GetOsManagement()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetOsManagement()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateCloudRequestValidationError{ + field: "OsManagement", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateCloudRequestValidationError{ + field: "OsManagement", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetOsManagement()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateCloudRequestValidationError{ field: "OsManagement", @@ -15615,7 +25589,26 @@ func (m *UpdateCloudRequest) Validate() error { } } - if v, ok := interface{}(m.GetClusterManagement()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetClusterManagement()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateCloudRequestValidationError{ + field: "ClusterManagement", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateCloudRequestValidationError{ + field: "ClusterManagement", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetClusterManagement()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateCloudRequestValidationError{ field: "ClusterManagement", @@ -15625,7 +25618,26 @@ func (m *UpdateCloudRequest) Validate() error { } } - if v, ok := interface{}(m.GetNodeGroupManagement()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetNodeGroupManagement()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateCloudRequestValidationError{ + field: "NodeGroupManagement", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateCloudRequestValidationError{ + field: "NodeGroupManagement", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetNodeGroupManagement()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateCloudRequestValidationError{ field: "NodeGroupManagement", @@ -15636,17 +25648,25 @@ func (m *UpdateCloudRequest) Validate() error { } if l := utf8.RuneCountInString(m.GetUpdater()); l < 2 || l > 1024 { - return UpdateCloudRequestValidationError{ + err := UpdateCloudRequestValidationError{ field: "Updater", reason: "value length must be between 2 and 1024 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_UpdateCloudRequest_Updater_Pattern.MatchString(m.GetUpdater()) { - return UpdateCloudRequestValidationError{ + err := UpdateCloudRequestValidationError{ field: "Updater", reason: "value does not match regex pattern \"^[0-9a-zA-Z]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for CloudProvider @@ -15659,7 +25679,26 @@ func (m *UpdateCloudRequest) Validate() error { // no validation rules for Enable - if v, ok := interface{}(m.GetNetworkInfo()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetNetworkInfo()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateCloudRequestValidationError{ + field: "NetworkInfo", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateCloudRequestValidationError{ + field: "NetworkInfo", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetNetworkInfo()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateCloudRequestValidationError{ field: "NetworkInfo", @@ -15669,7 +25708,26 @@ func (m *UpdateCloudRequest) Validate() error { } } - if v, ok := interface{}(m.GetConfInfo()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetConfInfo()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateCloudRequestValidationError{ + field: "ConfInfo", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateCloudRequestValidationError{ + field: "ConfInfo", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetConfInfo()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateCloudRequestValidationError{ field: "ConfInfo", @@ -15681,9 +25739,30 @@ func (m *UpdateCloudRequest) Validate() error { // no validation rules for PlatformInfo + if len(errors) > 0 { + return UpdateCloudRequestMultiError(errors) + } + return nil } +// UpdateCloudRequestMultiError is an error wrapping multiple validation errors +// returned by UpdateCloudRequest.ValidateAll() if the designated constraints +// aren't met. +type UpdateCloudRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateCloudRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateCloudRequestMultiError) AllErrors() []error { return m } + // UpdateCloudRequestValidationError is the validation error returned by // UpdateCloudRequest.Validate if the designated constraints aren't met. type UpdateCloudRequestValidationError struct { @@ -15744,19 +25823,52 @@ var _UpdateCloudRequest_Updater_Pattern = regexp.MustCompile("^[0-9a-zA-Z]+$") // Validate checks the field values on UpdateCloudResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateCloudResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateCloudResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateCloudResponseMultiError, or nil if none found. +func (m *UpdateCloudResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateCloudResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateCloudResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateCloudResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateCloudResponseValidationError{ field: "Data", @@ -15766,9 +25878,30 @@ func (m *UpdateCloudResponse) Validate() error { } } + if len(errors) > 0 { + return UpdateCloudResponseMultiError(errors) + } + return nil } +// UpdateCloudResponseMultiError is an error wrapping multiple validation +// errors returned by UpdateCloudResponse.ValidateAll() if the designated +// constraints aren't met. +type UpdateCloudResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateCloudResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateCloudResponseMultiError) AllErrors() []error { return m } + // UpdateCloudResponseValidationError is the validation error returned by // UpdateCloudResponse.Validate if the designated constraints aren't met. type UpdateCloudResponseValidationError struct { @@ -15827,31 +25960,74 @@ var _ interface { // Validate checks the field values on DeleteCloudRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DeleteCloudRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteCloudRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeleteCloudRequestMultiError, or nil if none found. +func (m *DeleteCloudRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteCloudRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetCloudID()); l < 2 || l > 20 { - return DeleteCloudRequestValidationError{ + err := DeleteCloudRequestValidationError{ field: "CloudID", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_DeleteCloudRequest_CloudID_Pattern.MatchString(m.GetCloudID()) { - return DeleteCloudRequestValidationError{ + err := DeleteCloudRequestValidationError{ field: "CloudID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for IsForce + if len(errors) > 0 { + return DeleteCloudRequestMultiError(errors) + } + return nil } +// DeleteCloudRequestMultiError is an error wrapping multiple validation errors +// returned by DeleteCloudRequest.ValidateAll() if the designated constraints +// aren't met. +type DeleteCloudRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteCloudRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteCloudRequestMultiError) AllErrors() []error { return m } + // DeleteCloudRequestValidationError is the validation error returned by // DeleteCloudRequest.Validate if the designated constraints aren't met. type DeleteCloudRequestValidationError struct { @@ -15912,19 +26088,52 @@ var _DeleteCloudRequest_CloudID_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$") // Validate checks the field values on DeleteCloudResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DeleteCloudResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteCloudResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeleteCloudResponseMultiError, or nil if none found. +func (m *DeleteCloudResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteCloudResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DeleteCloudResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DeleteCloudResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteCloudResponseValidationError{ field: "Data", @@ -15934,9 +26143,30 @@ func (m *DeleteCloudResponse) Validate() error { } } + if len(errors) > 0 { + return DeleteCloudResponseMultiError(errors) + } + return nil } +// DeleteCloudResponseMultiError is an error wrapping multiple validation +// errors returned by DeleteCloudResponse.ValidateAll() if the designated +// constraints aren't met. +type DeleteCloudResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteCloudResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteCloudResponseMultiError) AllErrors() []error { return m } + // DeleteCloudResponseValidationError is the validation error returned by // DeleteCloudResponse.Validate if the designated constraints aren't met. type DeleteCloudResponseValidationError struct { @@ -15994,30 +26224,73 @@ var _ interface { } = DeleteCloudResponseValidationError{} // Validate checks the field values on GetCloudRequest with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *GetCloudRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetCloudRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetCloudRequestMultiError, or nil if none found. +func (m *GetCloudRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetCloudRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetCloudID()); l < 2 || l > 20 { - return GetCloudRequestValidationError{ + err := GetCloudRequestValidationError{ field: "CloudID", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_GetCloudRequest_CloudID_Pattern.MatchString(m.GetCloudID()) { - return GetCloudRequestValidationError{ + err := GetCloudRequestValidationError{ field: "CloudID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return GetCloudRequestMultiError(errors) } return nil } +// GetCloudRequestMultiError is an error wrapping multiple validation errors +// returned by GetCloudRequest.ValidateAll() if the designated constraints +// aren't met. +type GetCloudRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetCloudRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetCloudRequestMultiError) AllErrors() []error { return m } + // GetCloudRequestValidationError is the validation error returned by // GetCloudRequest.Validate if the designated constraints aren't met. type GetCloudRequestValidationError struct { @@ -16075,20 +26348,53 @@ var _ interface { var _GetCloudRequest_CloudID_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$") // Validate checks the field values on GetCloudResponse with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *GetCloudResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetCloudResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetCloudResponseMultiError, or nil if none found. +func (m *GetCloudResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetCloudResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetCloudResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetCloudResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetCloudResponseValidationError{ field: "Data", @@ -16098,9 +26404,30 @@ func (m *GetCloudResponse) Validate() error { } } + if len(errors) > 0 { + return GetCloudResponseMultiError(errors) + } + return nil } +// GetCloudResponseMultiError is an error wrapping multiple validation errors +// returned by GetCloudResponse.ValidateAll() if the designated constraints +// aren't met. +type GetCloudResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetCloudResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetCloudResponseMultiError) AllErrors() []error { return m } + // GetCloudResponseValidationError is the validation error returned by // GetCloudResponse.Validate if the designated constraints aren't met. type GetCloudResponseValidationError struct { @@ -16156,18 +26483,36 @@ var _ interface { } = GetCloudResponseValidationError{} // Validate checks the field values on ListCloudRequest with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *ListCloudRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListCloudRequestMultiError, or nil if none found. +func (m *ListCloudRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetCloudID()) > 20 { - return ListCloudRequestValidationError{ + err := ListCloudRequestValidationError{ field: "CloudID", reason: "value length must be at most 20 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Name @@ -16180,9 +26525,30 @@ func (m *ListCloudRequest) Validate() error { // no validation rules for CloudProvider + if len(errors) > 0 { + return ListCloudRequestMultiError(errors) + } + return nil } +// ListCloudRequestMultiError is an error wrapping multiple validation errors +// returned by ListCloudRequest.ValidateAll() if the designated constraints +// aren't met. +type ListCloudRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudRequestMultiError) AllErrors() []error { return m } + // ListCloudRequestValidationError is the validation error returned by // ListCloudRequest.Validate if the designated constraints aren't met. type ListCloudRequestValidationError struct { @@ -16238,13 +26604,27 @@ var _ interface { } = ListCloudRequestValidationError{} // Validate checks the field values on ListCloudResponse with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *ListCloudResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListCloudResponseMultiError, or nil if none found. +func (m *ListCloudResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -16254,7 +26634,26 @@ func (m *ListCloudResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListCloudResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListCloudResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCloudResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -16266,9 +26665,30 @@ func (m *ListCloudResponse) Validate() error { } + if len(errors) > 0 { + return ListCloudResponseMultiError(errors) + } + return nil } +// ListCloudResponseMultiError is an error wrapping multiple validation errors +// returned by ListCloudResponse.ValidateAll() if the designated constraints +// aren't met. +type ListCloudResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudResponseMultiError) AllErrors() []error { return m } + // ListCloudResponseValidationError is the validation error returned by // ListCloudResponse.Validate if the designated constraints aren't met. type ListCloudResponseValidationError struct { @@ -16327,64 +26747,125 @@ var _ interface { // Validate checks the field values on CreateNodeGroupRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CreateNodeGroupRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CreateNodeGroupRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CreateNodeGroupRequestMultiError, or nil if none found. +func (m *CreateNodeGroupRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *CreateNodeGroupRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetName()); l < 1 || l > 255 { - return CreateNodeGroupRequestValidationError{ + err := CreateNodeGroupRequestValidationError{ field: "Name", reason: "value length must be between 1 and 255 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetClusterID()); l < 2 || l > 100 { - return CreateNodeGroupRequestValidationError{ + err := CreateNodeGroupRequestValidationError{ field: "ClusterID", reason: "value length must be between 2 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - return CreateNodeGroupRequestValidationError{ + err := CreateNodeGroupRequestValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } + if !all { + return err + } + errors = append(errors, err) } if !_CreateNodeGroupRequest_ClusterID_Pattern.MatchString(m.GetClusterID()) { - return CreateNodeGroupRequestValidationError{ + err := CreateNodeGroupRequestValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetRegion()); l < 1 || l > 32 { - return CreateNodeGroupRequestValidationError{ + err := CreateNodeGroupRequestValidationError{ field: "Region", reason: "value length must be between 1 and 32 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_CreateNodeGroupRequest_Region_Pattern.MatchString(m.GetRegion()) { - return CreateNodeGroupRequestValidationError{ + err := CreateNodeGroupRequestValidationError{ field: "Region", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for EnableAutoscale if m.GetAutoScaling() == nil { - return CreateNodeGroupRequestValidationError{ + err := CreateNodeGroupRequestValidationError{ field: "AutoScaling", reason: "value is required", } + if !all { + return err + } + errors = append(errors, err) } - if v, ok := interface{}(m.GetAutoScaling()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetAutoScaling()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateNodeGroupRequestValidationError{ + field: "AutoScaling", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateNodeGroupRequestValidationError{ + field: "AutoScaling", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetAutoScaling()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeGroupRequestValidationError{ field: "AutoScaling", @@ -16395,13 +26876,36 @@ func (m *CreateNodeGroupRequest) Validate() error { } if m.GetLaunchTemplate() == nil { - return CreateNodeGroupRequestValidationError{ + err := CreateNodeGroupRequestValidationError{ field: "LaunchTemplate", reason: "value is required", } + if !all { + return err + } + errors = append(errors, err) } - if v, ok := interface{}(m.GetLaunchTemplate()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetLaunchTemplate()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateNodeGroupRequestValidationError{ + field: "LaunchTemplate", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateNodeGroupRequestValidationError{ + field: "LaunchTemplate", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetLaunchTemplate()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeGroupRequestValidationError{ field: "LaunchTemplate", @@ -16418,24 +26922,51 @@ func (m *CreateNodeGroupRequest) Validate() error { // no validation rules for NodeOS if l := utf8.RuneCountInString(m.GetCreator()); l < 2 || l > 20 { - return CreateNodeGroupRequestValidationError{ + err := CreateNodeGroupRequestValidationError{ field: "Creator", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_CreateNodeGroupRequest_Creator_Pattern.MatchString(m.GetCreator()) { - return CreateNodeGroupRequestValidationError{ + err := CreateNodeGroupRequestValidationError{ field: "Creator", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Provider // no validation rules for ConsumerID - if v, ok := interface{}(m.GetNodeTemplate()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetNodeTemplate()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateNodeGroupRequestValidationError{ + field: "NodeTemplate", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateNodeGroupRequestValidationError{ + field: "NodeTemplate", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetNodeTemplate()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeGroupRequestValidationError{ field: "NodeTemplate", @@ -16453,7 +26984,26 @@ func (m *CreateNodeGroupRequest) Validate() error { // no validation rules for CloudAreaName - if v, ok := interface{}(m.GetExtra()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetExtra()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateNodeGroupRequestValidationError{ + field: "Extra", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateNodeGroupRequestValidationError{ + field: "Extra", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetExtra()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeGroupRequestValidationError{ field: "Extra", @@ -16465,9 +27015,30 @@ func (m *CreateNodeGroupRequest) Validate() error { // no validation rules for OnlyCreateInfo + if len(errors) > 0 { + return CreateNodeGroupRequestMultiError(errors) + } + return nil } +// CreateNodeGroupRequestMultiError is an error wrapping multiple validation +// errors returned by CreateNodeGroupRequest.ValidateAll() if the designated +// constraints aren't met. +type CreateNodeGroupRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CreateNodeGroupRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CreateNodeGroupRequestMultiError) AllErrors() []error { return m } + // CreateNodeGroupRequestValidationError is the validation error returned by // CreateNodeGroupRequest.Validate if the designated constraints aren't met. type CreateNodeGroupRequestValidationError struct { @@ -16531,20 +27102,55 @@ var _CreateNodeGroupRequest_Region_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$ var _CreateNodeGroupRequest_Creator_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$") // Validate checks the field values on GroupExtraInfo with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *GroupExtraInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GroupExtraInfo with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in GroupExtraInfoMultiError, +// or nil if none found. +func (m *GroupExtraInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *GroupExtraInfo) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Provider // no validation rules for PoolID + if len(errors) > 0 { + return GroupExtraInfoMultiError(errors) + } + return nil } +// GroupExtraInfoMultiError is an error wrapping multiple validation errors +// returned by GroupExtraInfo.ValidateAll() if the designated constraints +// aren't met. +type GroupExtraInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GroupExtraInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GroupExtraInfoMultiError) AllErrors() []error { return m } + // GroupExtraInfoValidationError is the validation error returned by // GroupExtraInfo.Validate if the designated constraints aren't met. type GroupExtraInfoValidationError struct { @@ -16601,19 +27207,52 @@ var _ interface { // Validate checks the field values on CreateNodeGroupResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CreateNodeGroupResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CreateNodeGroupResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CreateNodeGroupResponseMultiError, or nil if none found. +func (m *CreateNodeGroupResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *CreateNodeGroupResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateNodeGroupResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateNodeGroupResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeGroupResponseValidationError{ field: "Data", @@ -16623,7 +27262,26 @@ func (m *CreateNodeGroupResponse) Validate() error { } } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateNodeGroupResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateNodeGroupResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeGroupResponseValidationError{ field: "WebAnnotations", @@ -16633,9 +27291,30 @@ func (m *CreateNodeGroupResponse) Validate() error { } } + if len(errors) > 0 { + return CreateNodeGroupResponseMultiError(errors) + } + return nil } +// CreateNodeGroupResponseMultiError is an error wrapping multiple validation +// errors returned by CreateNodeGroupResponse.ValidateAll() if the designated +// constraints aren't met. +type CreateNodeGroupResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CreateNodeGroupResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CreateNodeGroupResponseMultiError) AllErrors() []error { return m } + // CreateNodeGroupResponseValidationError is the validation error returned by // CreateNodeGroupResponse.Validate if the designated constraints aren't met. type CreateNodeGroupResponseValidationError struct { @@ -16694,13 +27373,46 @@ var _ interface { // Validate checks the field values on CreateNodeGroupResponseData with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CreateNodeGroupResponseData) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CreateNodeGroupResponseData with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CreateNodeGroupResponseDataMultiError, or nil if none found. +func (m *CreateNodeGroupResponseData) ValidateAll() error { + return m.validate(true) +} + +func (m *CreateNodeGroupResponseData) validate(all bool) error { if m == nil { return nil } - if v, ok := interface{}(m.GetNodeGroup()).(interface{ Validate() error }); ok { + var errors []error + + if all { + switch v := interface{}(m.GetNodeGroup()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateNodeGroupResponseDataValidationError{ + field: "NodeGroup", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateNodeGroupResponseDataValidationError{ + field: "NodeGroup", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetNodeGroup()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeGroupResponseDataValidationError{ field: "NodeGroup", @@ -16710,7 +27422,26 @@ func (m *CreateNodeGroupResponseData) Validate() error { } } - if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetTask()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateNodeGroupResponseDataValidationError{ + field: "Task", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateNodeGroupResponseDataValidationError{ + field: "Task", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeGroupResponseDataValidationError{ field: "Task", @@ -16720,9 +27451,30 @@ func (m *CreateNodeGroupResponseData) Validate() error { } } + if len(errors) > 0 { + return CreateNodeGroupResponseDataMultiError(errors) + } + return nil } +// CreateNodeGroupResponseDataMultiError is an error wrapping multiple +// validation errors returned by CreateNodeGroupResponseData.ValidateAll() if +// the designated constraints aren't met. +type CreateNodeGroupResponseDataMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CreateNodeGroupResponseDataMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CreateNodeGroupResponseDataMultiError) AllErrors() []error { return m } + // CreateNodeGroupResponseDataValidationError is the validation error returned // by CreateNodeGroupResponseData.Validate if the designated constraints // aren't met. @@ -16782,45 +27534,94 @@ var _ interface { // Validate checks the field values on UpdateNodeGroupRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateNodeGroupRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateNodeGroupRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateNodeGroupRequestMultiError, or nil if none found. +func (m *UpdateNodeGroupRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateNodeGroupRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetNodeGroupID()) > 20 { - return UpdateNodeGroupRequestValidationError{ + err := UpdateNodeGroupRequestValidationError{ field: "NodeGroupID", reason: "value length must be at most 20 runes", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetClusterID()); l < 2 || l > 100 { - return UpdateNodeGroupRequestValidationError{ + err := UpdateNodeGroupRequestValidationError{ field: "ClusterID", reason: "value length must be between 2 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - return UpdateNodeGroupRequestValidationError{ + err := UpdateNodeGroupRequestValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } + if !all { + return err + } + errors = append(errors, err) } if !_UpdateNodeGroupRequest_ClusterID_Pattern.MatchString(m.GetClusterID()) { - return UpdateNodeGroupRequestValidationError{ + err := UpdateNodeGroupRequestValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Name // no validation rules for Region - if v, ok := interface{}(m.GetEnableAutoscale()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetEnableAutoscale()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeGroupRequestValidationError{ + field: "EnableAutoscale", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeGroupRequestValidationError{ + field: "EnableAutoscale", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetEnableAutoscale()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeGroupRequestValidationError{ field: "EnableAutoscale", @@ -16830,7 +27631,26 @@ func (m *UpdateNodeGroupRequest) Validate() error { } } - if v, ok := interface{}(m.GetAutoScaling()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetAutoScaling()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeGroupRequestValidationError{ + field: "AutoScaling", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeGroupRequestValidationError{ + field: "AutoScaling", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetAutoScaling()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeGroupRequestValidationError{ field: "AutoScaling", @@ -16840,7 +27660,26 @@ func (m *UpdateNodeGroupRequest) Validate() error { } } - if v, ok := interface{}(m.GetLaunchTemplate()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetLaunchTemplate()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeGroupRequestValidationError{ + field: "LaunchTemplate", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeGroupRequestValidationError{ + field: "LaunchTemplate", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetLaunchTemplate()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeGroupRequestValidationError{ field: "LaunchTemplate", @@ -16850,7 +27689,26 @@ func (m *UpdateNodeGroupRequest) Validate() error { } } - if v, ok := interface{}(m.GetNodeTemplate()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetNodeTemplate()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeGroupRequestValidationError{ + field: "NodeTemplate", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeGroupRequestValidationError{ + field: "NodeTemplate", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetNodeTemplate()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeGroupRequestValidationError{ field: "NodeTemplate", @@ -16869,17 +27727,25 @@ func (m *UpdateNodeGroupRequest) Validate() error { // no validation rules for NodeOS if l := utf8.RuneCountInString(m.GetUpdater()); l < 2 || l > 20 { - return UpdateNodeGroupRequestValidationError{ + err := UpdateNodeGroupRequestValidationError{ field: "Updater", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_UpdateNodeGroupRequest_Updater_Pattern.MatchString(m.GetUpdater()) { - return UpdateNodeGroupRequestValidationError{ + err := UpdateNodeGroupRequestValidationError{ field: "Updater", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Provider @@ -16888,7 +27754,26 @@ func (m *UpdateNodeGroupRequest) Validate() error { // no validation rules for Desc - if v, ok := interface{}(m.GetBkCloudID()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetBkCloudID()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeGroupRequestValidationError{ + field: "BkCloudID", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeGroupRequestValidationError{ + field: "BkCloudID", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetBkCloudID()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeGroupRequestValidationError{ field: "BkCloudID", @@ -16898,7 +27783,26 @@ func (m *UpdateNodeGroupRequest) Validate() error { } } - if v, ok := interface{}(m.GetCloudAreaName()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetCloudAreaName()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeGroupRequestValidationError{ + field: "CloudAreaName", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeGroupRequestValidationError{ + field: "CloudAreaName", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetCloudAreaName()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeGroupRequestValidationError{ field: "CloudAreaName", @@ -16910,9 +27814,30 @@ func (m *UpdateNodeGroupRequest) Validate() error { // no validation rules for OnlyUpdateInfo + if len(errors) > 0 { + return UpdateNodeGroupRequestMultiError(errors) + } + return nil } +// UpdateNodeGroupRequestMultiError is an error wrapping multiple validation +// errors returned by UpdateNodeGroupRequest.ValidateAll() if the designated +// constraints aren't met. +type UpdateNodeGroupRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateNodeGroupRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateNodeGroupRequestMultiError) AllErrors() []error { return m } + // UpdateNodeGroupRequestValidationError is the validation error returned by // UpdateNodeGroupRequest.Validate if the designated constraints aren't met. type UpdateNodeGroupRequestValidationError struct { @@ -16975,19 +27900,52 @@ var _UpdateNodeGroupRequest_Updater_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+ // Validate checks the field values on UpdateNodeGroupResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateNodeGroupResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateNodeGroupResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateNodeGroupResponseMultiError, or nil if none found. +func (m *UpdateNodeGroupResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateNodeGroupResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeGroupResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeGroupResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeGroupResponseValidationError{ field: "Data", @@ -16997,7 +27955,26 @@ func (m *UpdateNodeGroupResponse) Validate() error { } } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeGroupResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeGroupResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeGroupResponseValidationError{ field: "WebAnnotations", @@ -17007,9 +27984,30 @@ func (m *UpdateNodeGroupResponse) Validate() error { } } + if len(errors) > 0 { + return UpdateNodeGroupResponseMultiError(errors) + } + return nil } +// UpdateNodeGroupResponseMultiError is an error wrapping multiple validation +// errors returned by UpdateNodeGroupResponse.ValidateAll() if the designated +// constraints aren't met. +type UpdateNodeGroupResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateNodeGroupResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateNodeGroupResponseMultiError) AllErrors() []error { return m } + // UpdateNodeGroupResponseValidationError is the validation error returned by // UpdateNodeGroupResponse.Validate if the designated constraints aren't met. type UpdateNodeGroupResponseValidationError struct { @@ -17068,24 +28066,46 @@ var _ interface { // Validate checks the field values on DeleteNodeGroupRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DeleteNodeGroupRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteNodeGroupRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeleteNodeGroupRequestMultiError, or nil if none found. +func (m *DeleteNodeGroupRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteNodeGroupRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetNodeGroupID()); l < 2 || l > 20 { - return DeleteNodeGroupRequestValidationError{ + err := DeleteNodeGroupRequestValidationError{ field: "NodeGroupID", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_DeleteNodeGroupRequest_NodeGroupID_Pattern.MatchString(m.GetNodeGroupID()) { - return DeleteNodeGroupRequestValidationError{ + err := DeleteNodeGroupRequestValidationError{ field: "NodeGroupID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for IsForce @@ -17095,17 +28115,42 @@ func (m *DeleteNodeGroupRequest) Validate() error { // no validation rules for KeepNodesInstance if l := utf8.RuneCountInString(m.GetOperator()); l < 2 || l > 100 { - return DeleteNodeGroupRequestValidationError{ + err := DeleteNodeGroupRequestValidationError{ field: "Operator", reason: "value length must be between 2 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for OnlyDeleteInfo + if len(errors) > 0 { + return DeleteNodeGroupRequestMultiError(errors) + } + return nil } +// DeleteNodeGroupRequestMultiError is an error wrapping multiple validation +// errors returned by DeleteNodeGroupRequest.ValidateAll() if the designated +// constraints aren't met. +type DeleteNodeGroupRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteNodeGroupRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteNodeGroupRequestMultiError) AllErrors() []error { return m } + // DeleteNodeGroupRequestValidationError is the validation error returned by // DeleteNodeGroupRequest.Validate if the designated constraints aren't met. type DeleteNodeGroupRequestValidationError struct { @@ -17166,19 +28211,52 @@ var _DeleteNodeGroupRequest_NodeGroupID_Pattern = regexp.MustCompile("^[0-9a-zA- // Validate checks the field values on DeleteNodeGroupResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DeleteNodeGroupResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteNodeGroupResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeleteNodeGroupResponseMultiError, or nil if none found. +func (m *DeleteNodeGroupResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteNodeGroupResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DeleteNodeGroupResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DeleteNodeGroupResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteNodeGroupResponseValidationError{ field: "Data", @@ -17188,7 +28266,26 @@ func (m *DeleteNodeGroupResponse) Validate() error { } } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DeleteNodeGroupResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DeleteNodeGroupResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteNodeGroupResponseValidationError{ field: "WebAnnotations", @@ -17198,9 +28295,30 @@ func (m *DeleteNodeGroupResponse) Validate() error { } } + if len(errors) > 0 { + return DeleteNodeGroupResponseMultiError(errors) + } + return nil } +// DeleteNodeGroupResponseMultiError is an error wrapping multiple validation +// errors returned by DeleteNodeGroupResponse.ValidateAll() if the designated +// constraints aren't met. +type DeleteNodeGroupResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteNodeGroupResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteNodeGroupResponseMultiError) AllErrors() []error { return m } + // DeleteNodeGroupResponseValidationError is the validation error returned by // DeleteNodeGroupResponse.Validate if the designated constraints aren't met. type DeleteNodeGroupResponseValidationError struct { @@ -17259,13 +28377,46 @@ var _ interface { // Validate checks the field values on DeleteNodeGroupResponseData with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DeleteNodeGroupResponseData) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteNodeGroupResponseData with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeleteNodeGroupResponseDataMultiError, or nil if none found. +func (m *DeleteNodeGroupResponseData) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteNodeGroupResponseData) validate(all bool) error { if m == nil { return nil } - if v, ok := interface{}(m.GetNodeGroup()).(interface{ Validate() error }); ok { + var errors []error + + if all { + switch v := interface{}(m.GetNodeGroup()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DeleteNodeGroupResponseDataValidationError{ + field: "NodeGroup", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DeleteNodeGroupResponseDataValidationError{ + field: "NodeGroup", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetNodeGroup()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteNodeGroupResponseDataValidationError{ field: "NodeGroup", @@ -17275,7 +28426,26 @@ func (m *DeleteNodeGroupResponseData) Validate() error { } } - if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetTask()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DeleteNodeGroupResponseDataValidationError{ + field: "Task", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DeleteNodeGroupResponseDataValidationError{ + field: "Task", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteNodeGroupResponseDataValidationError{ field: "Task", @@ -17285,9 +28455,30 @@ func (m *DeleteNodeGroupResponseData) Validate() error { } } + if len(errors) > 0 { + return DeleteNodeGroupResponseDataMultiError(errors) + } + return nil } +// DeleteNodeGroupResponseDataMultiError is an error wrapping multiple +// validation errors returned by DeleteNodeGroupResponseData.ValidateAll() if +// the designated constraints aren't met. +type DeleteNodeGroupResponseDataMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteNodeGroupResponseDataMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteNodeGroupResponseDataMultiError) AllErrors() []error { return m } + // DeleteNodeGroupResponseDataValidationError is the validation error returned // by DeleteNodeGroupResponseData.Validate if the designated constraints // aren't met. @@ -17347,29 +28538,72 @@ var _ interface { // Validate checks the field values on GetNodeGroupRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetNodeGroupRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetNodeGroupRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetNodeGroupRequestMultiError, or nil if none found. +func (m *GetNodeGroupRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetNodeGroupRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetNodeGroupID()); l < 2 || l > 20 { - return GetNodeGroupRequestValidationError{ + err := GetNodeGroupRequestValidationError{ field: "NodeGroupID", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_GetNodeGroupRequest_NodeGroupID_Pattern.MatchString(m.GetNodeGroupID()) { - return GetNodeGroupRequestValidationError{ + err := GetNodeGroupRequestValidationError{ field: "NodeGroupID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return GetNodeGroupRequestMultiError(errors) } return nil } +// GetNodeGroupRequestMultiError is an error wrapping multiple validation +// errors returned by GetNodeGroupRequest.ValidateAll() if the designated +// constraints aren't met. +type GetNodeGroupRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetNodeGroupRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetNodeGroupRequestMultiError) AllErrors() []error { return m } + // GetNodeGroupRequestValidationError is the validation error returned by // GetNodeGroupRequest.Validate if the designated constraints aren't met. type GetNodeGroupRequestValidationError struct { @@ -17430,19 +28664,52 @@ var _GetNodeGroupRequest_NodeGroupID_Pattern = regexp.MustCompile("^[0-9a-zA-Z-] // Validate checks the field values on GetNodeGroupResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetNodeGroupResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetNodeGroupResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetNodeGroupResponseMultiError, or nil if none found. +func (m *GetNodeGroupResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetNodeGroupResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetNodeGroupResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetNodeGroupResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetNodeGroupResponseValidationError{ field: "Data", @@ -17452,7 +28719,26 @@ func (m *GetNodeGroupResponse) Validate() error { } } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetNodeGroupResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetNodeGroupResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetNodeGroupResponseValidationError{ field: "WebAnnotations", @@ -17462,9 +28748,30 @@ func (m *GetNodeGroupResponse) Validate() error { } } + if len(errors) > 0 { + return GetNodeGroupResponseMultiError(errors) + } + return nil } +// GetNodeGroupResponseMultiError is an error wrapping multiple validation +// errors returned by GetNodeGroupResponse.ValidateAll() if the designated +// constraints aren't met. +type GetNodeGroupResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetNodeGroupResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetNodeGroupResponseMultiError) AllErrors() []error { return m } + // GetNodeGroupResponseValidationError is the validation error returned by // GetNodeGroupResponse.Validate if the designated constraints aren't met. type GetNodeGroupResponseValidationError struct { @@ -17523,38 +28830,85 @@ var _ interface { // Validate checks the field values on ListClusterNodeGroupRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListClusterNodeGroupRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListClusterNodeGroupRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListClusterNodeGroupRequestMultiError, or nil if none found. +func (m *ListClusterNodeGroupRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListClusterNodeGroupRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetClusterID()); l < 2 || l > 100 { - return ListClusterNodeGroupRequestValidationError{ + err := ListClusterNodeGroupRequestValidationError{ field: "ClusterID", reason: "value length must be between 2 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - return ListClusterNodeGroupRequestValidationError{ + err := ListClusterNodeGroupRequestValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } + if !all { + return err + } + errors = append(errors, err) } if !_ListClusterNodeGroupRequest_ClusterID_Pattern.MatchString(m.GetClusterID()) { - return ListClusterNodeGroupRequestValidationError{ + err := ListClusterNodeGroupRequestValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for EnableFilter + if len(errors) > 0 { + return ListClusterNodeGroupRequestMultiError(errors) + } + return nil } +// ListClusterNodeGroupRequestMultiError is an error wrapping multiple +// validation errors returned by ListClusterNodeGroupRequest.ValidateAll() if +// the designated constraints aren't met. +type ListClusterNodeGroupRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListClusterNodeGroupRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListClusterNodeGroupRequestMultiError) AllErrors() []error { return m } + // ListClusterNodeGroupRequestValidationError is the validation error returned // by ListClusterNodeGroupRequest.Validate if the designated constraints // aren't met. @@ -17616,12 +28970,26 @@ var _ListClusterNodeGroupRequest_ClusterID_Pattern = regexp.MustCompile("^[0-9a- // Validate checks the field values on ListClusterNodeGroupResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListClusterNodeGroupResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListClusterNodeGroupResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListClusterNodeGroupResponseMultiError, or nil if none found. +func (m *ListClusterNodeGroupResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListClusterNodeGroupResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -17631,7 +28999,26 @@ func (m *ListClusterNodeGroupResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListClusterNodeGroupResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListClusterNodeGroupResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListClusterNodeGroupResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -17643,7 +29030,26 @@ func (m *ListClusterNodeGroupResponse) Validate() error { } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListClusterNodeGroupResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListClusterNodeGroupResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListClusterNodeGroupResponseValidationError{ field: "WebAnnotations", @@ -17653,9 +29059,30 @@ func (m *ListClusterNodeGroupResponse) Validate() error { } } + if len(errors) > 0 { + return ListClusterNodeGroupResponseMultiError(errors) + } + return nil } +// ListClusterNodeGroupResponseMultiError is an error wrapping multiple +// validation errors returned by ListClusterNodeGroupResponse.ValidateAll() if +// the designated constraints aren't met. +type ListClusterNodeGroupResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListClusterNodeGroupResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListClusterNodeGroupResponseMultiError) AllErrors() []error { return m } + // ListClusterNodeGroupResponseValidationError is the validation error returned // by ListClusterNodeGroupResponse.Validate if the designated constraints // aren't met. @@ -17715,12 +29142,26 @@ var _ interface { // Validate checks the field values on ListNodeGroupRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListNodeGroupRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListNodeGroupRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListNodeGroupRequestMultiError, or nil if none found. +func (m *ListNodeGroupRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListNodeGroupRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Name // no validation rules for ClusterID @@ -17729,9 +29170,30 @@ func (m *ListNodeGroupRequest) Validate() error { // no validation rules for ProjectID + if len(errors) > 0 { + return ListNodeGroupRequestMultiError(errors) + } + return nil } +// ListNodeGroupRequestMultiError is an error wrapping multiple validation +// errors returned by ListNodeGroupRequest.ValidateAll() if the designated +// constraints aren't met. +type ListNodeGroupRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListNodeGroupRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListNodeGroupRequestMultiError) AllErrors() []error { return m } + // ListNodeGroupRequestValidationError is the validation error returned by // ListNodeGroupRequest.Validate if the designated constraints aren't met. type ListNodeGroupRequestValidationError struct { @@ -17790,12 +29252,26 @@ var _ interface { // Validate checks the field values on ListNodeGroupResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListNodeGroupResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListNodeGroupResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListNodeGroupResponseMultiError, or nil if none found. +func (m *ListNodeGroupResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListNodeGroupResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -17805,7 +29281,26 @@ func (m *ListNodeGroupResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListNodeGroupResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListNodeGroupResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListNodeGroupResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -17817,9 +29312,30 @@ func (m *ListNodeGroupResponse) Validate() error { } + if len(errors) > 0 { + return ListNodeGroupResponseMultiError(errors) + } + return nil } +// ListNodeGroupResponseMultiError is an error wrapping multiple validation +// errors returned by ListNodeGroupResponse.ValidateAll() if the designated +// constraints aren't met. +type ListNodeGroupResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListNodeGroupResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListNodeGroupResponseMultiError) AllErrors() []error { return m } + // ListNodeGroupResponseValidationError is the validation error returned by // ListNodeGroupResponse.Validate if the designated constraints aren't met. type ListNodeGroupResponseValidationError struct { @@ -17877,39 +29393,69 @@ var _ interface { } = ListNodeGroupResponseValidationError{} // Validate checks the field values on AddNodesRequest with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *AddNodesRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on AddNodesRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// AddNodesRequestMultiError, or nil if none found. +func (m *AddNodesRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *AddNodesRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetClusterID()); l < 1 || l > 100 { - return AddNodesRequestValidationError{ + err := AddNodesRequestValidationError{ field: "ClusterID", reason: "value length must be between 1 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - return AddNodesRequestValidationError{ + err := AddNodesRequestValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } + if !all { + return err + } + errors = append(errors, err) } if !_AddNodesRequest_ClusterID_Pattern.MatchString(m.GetClusterID()) { - return AddNodesRequestValidationError{ + err := AddNodesRequestValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if len(m.GetNodes()) < 1 { - return AddNodesRequestValidationError{ + err := AddNodesRequestValidationError{ field: "Nodes", reason: "value must contain at least 1 item(s)", } + if !all { + return err + } + errors = append(errors, err) } _AddNodesRequest_Nodes_Unique := make(map[string]struct{}, len(m.GetNodes())) @@ -17918,10 +29464,14 @@ func (m *AddNodesRequest) Validate() error { _, _ = idx, item if _, exists := _AddNodesRequest_Nodes_Unique[item]; exists { - return AddNodesRequestValidationError{ + err := AddNodesRequestValidationError{ field: fmt.Sprintf("Nodes[%v]", idx), reason: "repeated value must contain unique items", } + if !all { + return err + } + errors = append(errors, err) } else { _AddNodesRequest_Nodes_Unique[item] = struct{}{} } @@ -17936,26 +29486,55 @@ func (m *AddNodesRequest) Validate() error { // no validation rules for OnlyCreateInfo if l := utf8.RuneCountInString(m.GetOperator()); l < 2 || l > 20 { - return AddNodesRequestValidationError{ + err := AddNodesRequestValidationError{ field: "Operator", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_AddNodesRequest_Operator_Pattern.MatchString(m.GetOperator()) { - return AddNodesRequestValidationError{ + err := AddNodesRequestValidationError{ field: "Operator", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for NodeTemplateID // no validation rules for IsExternalNode + if len(errors) > 0 { + return AddNodesRequestMultiError(errors) + } + return nil } +// AddNodesRequestMultiError is an error wrapping multiple validation errors +// returned by AddNodesRequest.ValidateAll() if the designated constraints +// aren't met. +type AddNodesRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m AddNodesRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m AddNodesRequestMultiError) AllErrors() []error { return m } + // AddNodesRequestValidationError is the validation error returned by // AddNodesRequest.Validate if the designated constraints aren't met. type AddNodesRequestValidationError struct { @@ -18015,20 +29594,53 @@ var _AddNodesRequest_ClusterID_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$") var _AddNodesRequest_Operator_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$") // Validate checks the field values on AddNodesResponse with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *AddNodesResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on AddNodesResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// AddNodesResponseMultiError, or nil if none found. +func (m *AddNodesResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *AddNodesResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, AddNodesResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, AddNodesResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return AddNodesResponseValidationError{ field: "Data", @@ -18038,7 +29650,26 @@ func (m *AddNodesResponse) Validate() error { } } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, AddNodesResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, AddNodesResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return AddNodesResponseValidationError{ field: "WebAnnotations", @@ -18048,9 +29679,30 @@ func (m *AddNodesResponse) Validate() error { } } + if len(errors) > 0 { + return AddNodesResponseMultiError(errors) + } + return nil } +// AddNodesResponseMultiError is an error wrapping multiple validation errors +// returned by AddNodesResponse.ValidateAll() if the designated constraints +// aren't met. +type AddNodesResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m AddNodesResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m AddNodesResponseMultiError) AllErrors() []error { return m } + // AddNodesResponseValidationError is the validation error returned by // AddNodesResponse.Validate if the designated constraints aren't met. type AddNodesResponseValidationError struct { @@ -18107,31 +29759,57 @@ var _ interface { // Validate checks the field values on BatchDeleteClusterNodesRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *BatchDeleteClusterNodesRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on BatchDeleteClusterNodesRequest with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// BatchDeleteClusterNodesRequestMultiError, or nil if none found. +func (m *BatchDeleteClusterNodesRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *BatchDeleteClusterNodesRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetClusterID()); l < 1 || l > 100 { - return BatchDeleteClusterNodesRequestValidationError{ + err := BatchDeleteClusterNodesRequestValidationError{ field: "ClusterID", reason: "value length must be between 1 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - return BatchDeleteClusterNodesRequestValidationError{ + err := BatchDeleteClusterNodesRequestValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } + if !all { + return err + } + errors = append(errors, err) } if !_BatchDeleteClusterNodesRequest_ClusterID_Pattern.MatchString(m.GetClusterID()) { - return BatchDeleteClusterNodesRequestValidationError{ + err := BatchDeleteClusterNodesRequestValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for NodeIPs @@ -18139,22 +29817,51 @@ func (m *BatchDeleteClusterNodesRequest) Validate() error { // no validation rules for VirtualNodeIDs if l := utf8.RuneCountInString(m.GetOperator()); l < 2 || l > 20 { - return BatchDeleteClusterNodesRequestValidationError{ + err := BatchDeleteClusterNodesRequestValidationError{ field: "Operator", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_BatchDeleteClusterNodesRequest_Operator_Pattern.MatchString(m.GetOperator()) { - return BatchDeleteClusterNodesRequestValidationError{ + err := BatchDeleteClusterNodesRequestValidationError{ field: "Operator", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return BatchDeleteClusterNodesRequestMultiError(errors) } return nil } +// BatchDeleteClusterNodesRequestMultiError is an error wrapping multiple +// validation errors returned by BatchDeleteClusterNodesRequest.ValidateAll() +// if the designated constraints aren't met. +type BatchDeleteClusterNodesRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m BatchDeleteClusterNodesRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m BatchDeleteClusterNodesRequestMultiError) AllErrors() []error { return m } + // BatchDeleteClusterNodesRequestValidationError is the validation error // returned by BatchDeleteClusterNodesRequest.Validate if the designated // constraints aren't met. @@ -18218,12 +29925,26 @@ var _BatchDeleteClusterNodesRequest_Operator_Pattern = regexp.MustCompile("^[0-9 // Validate checks the field values on BatchDeleteClusterNodesResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *BatchDeleteClusterNodesResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on BatchDeleteClusterNodesResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// BatchDeleteClusterNodesResponseMultiError, or nil if none found. +func (m *BatchDeleteClusterNodesResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *BatchDeleteClusterNodesResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -18233,7 +29954,26 @@ func (m *BatchDeleteClusterNodesResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, BatchDeleteClusterNodesResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, BatchDeleteClusterNodesResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return BatchDeleteClusterNodesResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -18245,7 +29985,26 @@ func (m *BatchDeleteClusterNodesResponse) Validate() error { } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, BatchDeleteClusterNodesResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, BatchDeleteClusterNodesResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return BatchDeleteClusterNodesResponseValidationError{ field: "WebAnnotations", @@ -18255,9 +30014,30 @@ func (m *BatchDeleteClusterNodesResponse) Validate() error { } } + if len(errors) > 0 { + return BatchDeleteClusterNodesResponseMultiError(errors) + } + return nil } +// BatchDeleteClusterNodesResponseMultiError is an error wrapping multiple +// validation errors returned by BatchDeleteClusterNodesResponse.ValidateAll() +// if the designated constraints aren't met. +type BatchDeleteClusterNodesResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m BatchDeleteClusterNodesResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m BatchDeleteClusterNodesResponseMultiError) AllErrors() []error { return m } + // BatchDeleteClusterNodesResponseValidationError is the validation error // returned by BatchDeleteClusterNodesResponse.Validate if the designated // constraints aren't met. @@ -18316,13 +30096,27 @@ var _ interface { } = BatchDeleteClusterNodesResponseValidationError{} // Validate checks the field values on BatchNodesStatus with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *BatchNodesStatus) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on BatchNodesStatus with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// BatchNodesStatusMultiError, or nil if none found. +func (m *BatchNodesStatus) ValidateAll() error { + return m.validate(true) +} + +func (m *BatchNodesStatus) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Success // no validation rules for Message @@ -18333,9 +30127,30 @@ func (m *BatchNodesStatus) Validate() error { // no validation rules for NodeGroupType + if len(errors) > 0 { + return BatchNodesStatusMultiError(errors) + } + return nil } +// BatchNodesStatusMultiError is an error wrapping multiple validation errors +// returned by BatchNodesStatus.ValidateAll() if the designated constraints +// aren't met. +type BatchNodesStatusMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m BatchNodesStatusMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m BatchNodesStatusMultiError) AllErrors() []error { return m } + // BatchNodesStatusValidationError is the validation error returned by // BatchNodesStatus.Validate if the designated constraints aren't met. type BatchNodesStatusValidationError struct { @@ -18392,38 +30207,68 @@ var _ interface { // Validate checks the field values on DeleteNodesRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DeleteNodesRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteNodesRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeleteNodesRequestMultiError, or nil if none found. +func (m *DeleteNodesRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteNodesRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetClusterID()); l < 1 || l > 100 { - return DeleteNodesRequestValidationError{ + err := DeleteNodesRequestValidationError{ field: "ClusterID", reason: "value length must be between 1 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - return DeleteNodesRequestValidationError{ + err := DeleteNodesRequestValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } + if !all { + return err + } + errors = append(errors, err) } if !_DeleteNodesRequest_ClusterID_Pattern.MatchString(m.GetClusterID()) { - return DeleteNodesRequestValidationError{ + err := DeleteNodesRequestValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetNodes()) < 1 { - return DeleteNodesRequestValidationError{ + err := DeleteNodesRequestValidationError{ field: "Nodes", reason: "value length must be at least 1 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for DeleteMode @@ -18431,17 +30276,25 @@ func (m *DeleteNodesRequest) Validate() error { // no validation rules for IsForce if l := utf8.RuneCountInString(m.GetOperator()); l < 2 || l > 20 { - return DeleteNodesRequestValidationError{ + err := DeleteNodesRequestValidationError{ field: "Operator", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_DeleteNodesRequest_Operator_Pattern.MatchString(m.GetOperator()) { - return DeleteNodesRequestValidationError{ + err := DeleteNodesRequestValidationError{ field: "Operator", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for OnlyDeleteInfo @@ -18452,9 +30305,30 @@ func (m *DeleteNodesRequest) Validate() error { // no validation rules for IsExternalNode + if len(errors) > 0 { + return DeleteNodesRequestMultiError(errors) + } + return nil } +// DeleteNodesRequestMultiError is an error wrapping multiple validation errors +// returned by DeleteNodesRequest.ValidateAll() if the designated constraints +// aren't met. +type DeleteNodesRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteNodesRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteNodesRequestMultiError) AllErrors() []error { return m } + // DeleteNodesRequestValidationError is the validation error returned by // DeleteNodesRequest.Validate if the designated constraints aren't met. type DeleteNodesRequestValidationError struct { @@ -18517,19 +30391,52 @@ var _DeleteNodesRequest_Operator_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$") // Validate checks the field values on DeleteNodesResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DeleteNodesResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteNodesResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeleteNodesResponseMultiError, or nil if none found. +func (m *DeleteNodesResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteNodesResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DeleteNodesResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DeleteNodesResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteNodesResponseValidationError{ field: "Data", @@ -18539,7 +30446,26 @@ func (m *DeleteNodesResponse) Validate() error { } } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DeleteNodesResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DeleteNodesResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteNodesResponseValidationError{ field: "WebAnnotations", @@ -18549,9 +30475,30 @@ func (m *DeleteNodesResponse) Validate() error { } } + if len(errors) > 0 { + return DeleteNodesResponseMultiError(errors) + } + return nil } +// DeleteNodesResponseMultiError is an error wrapping multiple validation +// errors returned by DeleteNodesResponse.ValidateAll() if the designated +// constraints aren't met. +type DeleteNodesResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteNodesResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteNodesResponseMultiError) AllErrors() []error { return m } + // DeleteNodesResponseValidationError is the validation error returned by // DeleteNodesResponse.Validate if the designated constraints aren't met. type DeleteNodesResponseValidationError struct { @@ -18610,38 +30557,68 @@ var _ interface { // Validate checks the field values on MoveNodesToGroupRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *MoveNodesToGroupRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on MoveNodesToGroupRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// MoveNodesToGroupRequestMultiError, or nil if none found. +func (m *MoveNodesToGroupRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *MoveNodesToGroupRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetClusterID()); l < 5 || l > 100 { - return MoveNodesToGroupRequestValidationError{ + err := MoveNodesToGroupRequestValidationError{ field: "ClusterID", reason: "value length must be between 5 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - return MoveNodesToGroupRequestValidationError{ + err := MoveNodesToGroupRequestValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } + if !all { + return err + } + errors = append(errors, err) } if !_MoveNodesToGroupRequest_ClusterID_Pattern.MatchString(m.GetClusterID()) { - return MoveNodesToGroupRequestValidationError{ + err := MoveNodesToGroupRequestValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if l := len(m.GetNodes()); l < 1 || l > 100 { - return MoveNodesToGroupRequestValidationError{ + err := MoveNodesToGroupRequestValidationError{ field: "Nodes", reason: "value must contain between 1 and 100 items, inclusive", } + if !all { + return err + } + errors = append(errors, err) } _MoveNodesToGroupRequest_Nodes_Unique := make(map[string]struct{}, len(m.GetNodes())) @@ -18650,10 +30627,14 @@ func (m *MoveNodesToGroupRequest) Validate() error { _, _ = idx, item if _, exists := _MoveNodesToGroupRequest_Nodes_Unique[item]; exists { - return MoveNodesToGroupRequestValidationError{ + err := MoveNodesToGroupRequestValidationError{ field: fmt.Sprintf("Nodes[%v]", idx), reason: "repeated value must contain unique items", } + if !all { + return err + } + errors = append(errors, err) } else { _MoveNodesToGroupRequest_Nodes_Unique[item] = struct{}{} } @@ -18662,22 +30643,51 @@ func (m *MoveNodesToGroupRequest) Validate() error { } if l := utf8.RuneCountInString(m.GetNodeGroupID()); l < 2 || l > 20 { - return MoveNodesToGroupRequestValidationError{ + err := MoveNodesToGroupRequestValidationError{ field: "NodeGroupID", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_MoveNodesToGroupRequest_NodeGroupID_Pattern.MatchString(m.GetNodeGroupID()) { - return MoveNodesToGroupRequestValidationError{ + err := MoveNodesToGroupRequestValidationError{ field: "NodeGroupID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return MoveNodesToGroupRequestMultiError(errors) } return nil } +// MoveNodesToGroupRequestMultiError is an error wrapping multiple validation +// errors returned by MoveNodesToGroupRequest.ValidateAll() if the designated +// constraints aren't met. +type MoveNodesToGroupRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m MoveNodesToGroupRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m MoveNodesToGroupRequestMultiError) AllErrors() []error { return m } + // MoveNodesToGroupRequestValidationError is the validation error returned by // MoveNodesToGroupRequest.Validate if the designated constraints aren't met. type MoveNodesToGroupRequestValidationError struct { @@ -18740,19 +30750,52 @@ var _MoveNodesToGroupRequest_NodeGroupID_Pattern = regexp.MustCompile("^[0-9a-zA // Validate checks the field values on MoveNodesToGroupResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *MoveNodesToGroupResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on MoveNodesToGroupResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// MoveNodesToGroupResponseMultiError, or nil if none found. +func (m *MoveNodesToGroupResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *MoveNodesToGroupResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, MoveNodesToGroupResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, MoveNodesToGroupResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return MoveNodesToGroupResponseValidationError{ field: "Data", @@ -18762,7 +30805,26 @@ func (m *MoveNodesToGroupResponse) Validate() error { } } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, MoveNodesToGroupResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, MoveNodesToGroupResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return MoveNodesToGroupResponseValidationError{ field: "WebAnnotations", @@ -18772,9 +30834,30 @@ func (m *MoveNodesToGroupResponse) Validate() error { } } + if len(errors) > 0 { + return MoveNodesToGroupResponseMultiError(errors) + } + return nil } +// MoveNodesToGroupResponseMultiError is an error wrapping multiple validation +// errors returned by MoveNodesToGroupResponse.ValidateAll() if the designated +// constraints aren't met. +type MoveNodesToGroupResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m MoveNodesToGroupResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m MoveNodesToGroupResponseMultiError) AllErrors() []error { return m } + // MoveNodesToGroupResponseValidationError is the validation error returned by // MoveNodesToGroupResponse.Validate if the designated constraints aren't met. type MoveNodesToGroupResponseValidationError struct { @@ -18833,38 +30916,68 @@ var _ interface { // Validate checks the field values on RemoveNodesFromGroupRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *RemoveNodesFromGroupRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on RemoveNodesFromGroupRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// RemoveNodesFromGroupRequestMultiError, or nil if none found. +func (m *RemoveNodesFromGroupRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *RemoveNodesFromGroupRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetClusterID()); l < 5 || l > 100 { - return RemoveNodesFromGroupRequestValidationError{ + err := RemoveNodesFromGroupRequestValidationError{ field: "ClusterID", reason: "value length must be between 5 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - return RemoveNodesFromGroupRequestValidationError{ + err := RemoveNodesFromGroupRequestValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } + if !all { + return err + } + errors = append(errors, err) } if !_RemoveNodesFromGroupRequest_ClusterID_Pattern.MatchString(m.GetClusterID()) { - return RemoveNodesFromGroupRequestValidationError{ + err := RemoveNodesFromGroupRequestValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if l := len(m.GetNodes()); l < 1 || l > 100 { - return RemoveNodesFromGroupRequestValidationError{ + err := RemoveNodesFromGroupRequestValidationError{ field: "Nodes", reason: "value must contain between 1 and 100 items, inclusive", } + if !all { + return err + } + errors = append(errors, err) } _RemoveNodesFromGroupRequest_Nodes_Unique := make(map[string]struct{}, len(m.GetNodes())) @@ -18873,10 +30986,14 @@ func (m *RemoveNodesFromGroupRequest) Validate() error { _, _ = idx, item if _, exists := _RemoveNodesFromGroupRequest_Nodes_Unique[item]; exists { - return RemoveNodesFromGroupRequestValidationError{ + err := RemoveNodesFromGroupRequestValidationError{ field: fmt.Sprintf("Nodes[%v]", idx), reason: "repeated value must contain unique items", } + if !all { + return err + } + errors = append(errors, err) } else { _RemoveNodesFromGroupRequest_Nodes_Unique[item] = struct{}{} } @@ -18885,22 +31002,51 @@ func (m *RemoveNodesFromGroupRequest) Validate() error { } if l := utf8.RuneCountInString(m.GetNodeGroupID()); l < 2 || l > 20 { - return RemoveNodesFromGroupRequestValidationError{ + err := RemoveNodesFromGroupRequestValidationError{ field: "NodeGroupID", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_RemoveNodesFromGroupRequest_NodeGroupID_Pattern.MatchString(m.GetNodeGroupID()) { - return RemoveNodesFromGroupRequestValidationError{ + err := RemoveNodesFromGroupRequestValidationError{ field: "NodeGroupID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return RemoveNodesFromGroupRequestMultiError(errors) } return nil } +// RemoveNodesFromGroupRequestMultiError is an error wrapping multiple +// validation errors returned by RemoveNodesFromGroupRequest.ValidateAll() if +// the designated constraints aren't met. +type RemoveNodesFromGroupRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m RemoveNodesFromGroupRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m RemoveNodesFromGroupRequestMultiError) AllErrors() []error { return m } + // RemoveNodesFromGroupRequestValidationError is the validation error returned // by RemoveNodesFromGroupRequest.Validate if the designated constraints // aren't met. @@ -18964,19 +31110,52 @@ var _RemoveNodesFromGroupRequest_NodeGroupID_Pattern = regexp.MustCompile("^[0-9 // Validate checks the field values on RemoveNodesFromGroupResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *RemoveNodesFromGroupResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on RemoveNodesFromGroupResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// RemoveNodesFromGroupResponseMultiError, or nil if none found. +func (m *RemoveNodesFromGroupResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *RemoveNodesFromGroupResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, RemoveNodesFromGroupResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, RemoveNodesFromGroupResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return RemoveNodesFromGroupResponseValidationError{ field: "Data", @@ -18986,7 +31165,26 @@ func (m *RemoveNodesFromGroupResponse) Validate() error { } } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, RemoveNodesFromGroupResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, RemoveNodesFromGroupResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return RemoveNodesFromGroupResponseValidationError{ field: "WebAnnotations", @@ -18996,9 +31194,30 @@ func (m *RemoveNodesFromGroupResponse) Validate() error { } } + if len(errors) > 0 { + return RemoveNodesFromGroupResponseMultiError(errors) + } + return nil } +// RemoveNodesFromGroupResponseMultiError is an error wrapping multiple +// validation errors returned by RemoveNodesFromGroupResponse.ValidateAll() if +// the designated constraints aren't met. +type RemoveNodesFromGroupResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m RemoveNodesFromGroupResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m RemoveNodesFromGroupResponseMultiError) AllErrors() []error { return m } + // RemoveNodesFromGroupResponseValidationError is the validation error returned // by RemoveNodesFromGroupResponse.Validate if the designated constraints // aren't met. @@ -19058,38 +31277,68 @@ var _ interface { // Validate checks the field values on CleanNodesInGroupRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CleanNodesInGroupRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CleanNodesInGroupRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CleanNodesInGroupRequestMultiError, or nil if none found. +func (m *CleanNodesInGroupRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *CleanNodesInGroupRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetClusterID()); l < 5 || l > 100 { - return CleanNodesInGroupRequestValidationError{ + err := CleanNodesInGroupRequestValidationError{ field: "ClusterID", reason: "value length must be between 5 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - return CleanNodesInGroupRequestValidationError{ + err := CleanNodesInGroupRequestValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } + if !all { + return err + } + errors = append(errors, err) } if !_CleanNodesInGroupRequest_ClusterID_Pattern.MatchString(m.GetClusterID()) { - return CleanNodesInGroupRequestValidationError{ + err := CleanNodesInGroupRequestValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if l := len(m.GetNodes()); l < 1 || l > 100 { - return CleanNodesInGroupRequestValidationError{ + err := CleanNodesInGroupRequestValidationError{ field: "Nodes", reason: "value must contain between 1 and 100 items, inclusive", } + if !all { + return err + } + errors = append(errors, err) } _CleanNodesInGroupRequest_Nodes_Unique := make(map[string]struct{}, len(m.GetNodes())) @@ -19098,10 +31347,14 @@ func (m *CleanNodesInGroupRequest) Validate() error { _, _ = idx, item if _, exists := _CleanNodesInGroupRequest_Nodes_Unique[item]; exists { - return CleanNodesInGroupRequestValidationError{ + err := CleanNodesInGroupRequestValidationError{ field: fmt.Sprintf("Nodes[%v]", idx), reason: "repeated value must contain unique items", } + if !all { + return err + } + errors = append(errors, err) } else { _CleanNodesInGroupRequest_Nodes_Unique[item] = struct{}{} } @@ -19110,36 +31363,73 @@ func (m *CleanNodesInGroupRequest) Validate() error { } if l := utf8.RuneCountInString(m.GetNodeGroupID()); l < 2 || l > 20 { - return CleanNodesInGroupRequestValidationError{ + err := CleanNodesInGroupRequestValidationError{ field: "NodeGroupID", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_CleanNodesInGroupRequest_NodeGroupID_Pattern.MatchString(m.GetNodeGroupID()) { - return CleanNodesInGroupRequestValidationError{ + err := CleanNodesInGroupRequestValidationError{ field: "NodeGroupID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetOperator()); l < 2 || l > 20 { - return CleanNodesInGroupRequestValidationError{ + err := CleanNodesInGroupRequestValidationError{ field: "Operator", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_CleanNodesInGroupRequest_Operator_Pattern.MatchString(m.GetOperator()) { - return CleanNodesInGroupRequestValidationError{ + err := CleanNodesInGroupRequestValidationError{ field: "Operator", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return CleanNodesInGroupRequestMultiError(errors) } return nil } +// CleanNodesInGroupRequestMultiError is an error wrapping multiple validation +// errors returned by CleanNodesInGroupRequest.ValidateAll() if the designated +// constraints aren't met. +type CleanNodesInGroupRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CleanNodesInGroupRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CleanNodesInGroupRequestMultiError) AllErrors() []error { return m } + // CleanNodesInGroupRequestValidationError is the validation error returned by // CleanNodesInGroupRequest.Validate if the designated constraints aren't met. type CleanNodesInGroupRequestValidationError struct { @@ -19204,19 +31494,52 @@ var _CleanNodesInGroupRequest_Operator_Pattern = regexp.MustCompile("^[0-9a-zA-Z // Validate checks the field values on CleanNodesInGroupResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CleanNodesInGroupResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CleanNodesInGroupResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CleanNodesInGroupResponseMultiError, or nil if none found. +func (m *CleanNodesInGroupResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *CleanNodesInGroupResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CleanNodesInGroupResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CleanNodesInGroupResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CleanNodesInGroupResponseValidationError{ field: "Data", @@ -19226,7 +31549,26 @@ func (m *CleanNodesInGroupResponse) Validate() error { } } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CleanNodesInGroupResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CleanNodesInGroupResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CleanNodesInGroupResponseValidationError{ field: "WebAnnotations", @@ -19236,9 +31578,30 @@ func (m *CleanNodesInGroupResponse) Validate() error { } } + if len(errors) > 0 { + return CleanNodesInGroupResponseMultiError(errors) + } + return nil } +// CleanNodesInGroupResponseMultiError is an error wrapping multiple validation +// errors returned by CleanNodesInGroupResponse.ValidateAll() if the +// designated constraints aren't met. +type CleanNodesInGroupResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CleanNodesInGroupResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CleanNodesInGroupResponseMultiError) AllErrors() []error { return m } + // CleanNodesInGroupResponseValidationError is the validation error returned by // CleanNodesInGroupResponse.Validate if the designated constraints aren't met. type CleanNodesInGroupResponseValidationError struct { @@ -19297,71 +31660,138 @@ var _ interface { // Validate checks the field values on CleanNodesInGroupV2Request with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CleanNodesInGroupV2Request) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CleanNodesInGroupV2Request with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CleanNodesInGroupV2RequestMultiError, or nil if none found. +func (m *CleanNodesInGroupV2Request) ValidateAll() error { + return m.validate(true) +} + +func (m *CleanNodesInGroupV2Request) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetClusterID()); l < 5 || l > 100 { - return CleanNodesInGroupV2RequestValidationError{ + err := CleanNodesInGroupV2RequestValidationError{ field: "ClusterID", reason: "value length must be between 5 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - return CleanNodesInGroupV2RequestValidationError{ + err := CleanNodesInGroupV2RequestValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } + if !all { + return err + } + errors = append(errors, err) } if !_CleanNodesInGroupV2Request_ClusterID_Pattern.MatchString(m.GetClusterID()) { - return CleanNodesInGroupV2RequestValidationError{ + err := CleanNodesInGroupV2RequestValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetNodes()) < 1 { - return CleanNodesInGroupV2RequestValidationError{ + err := CleanNodesInGroupV2RequestValidationError{ field: "Nodes", reason: "value length must be at least 1 runes", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetNodeGroupID()); l < 2 || l > 20 { - return CleanNodesInGroupV2RequestValidationError{ + err := CleanNodesInGroupV2RequestValidationError{ field: "NodeGroupID", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_CleanNodesInGroupV2Request_NodeGroupID_Pattern.MatchString(m.GetNodeGroupID()) { - return CleanNodesInGroupV2RequestValidationError{ + err := CleanNodesInGroupV2RequestValidationError{ field: "NodeGroupID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetOperator()); l < 2 || l > 20 { - return CleanNodesInGroupV2RequestValidationError{ + err := CleanNodesInGroupV2RequestValidationError{ field: "Operator", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_CleanNodesInGroupV2Request_Operator_Pattern.MatchString(m.GetOperator()) { - return CleanNodesInGroupV2RequestValidationError{ + err := CleanNodesInGroupV2RequestValidationError{ field: "Operator", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return CleanNodesInGroupV2RequestMultiError(errors) } return nil } +// CleanNodesInGroupV2RequestMultiError is an error wrapping multiple +// validation errors returned by CleanNodesInGroupV2Request.ValidateAll() if +// the designated constraints aren't met. +type CleanNodesInGroupV2RequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CleanNodesInGroupV2RequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CleanNodesInGroupV2RequestMultiError) AllErrors() []error { return m } + // CleanNodesInGroupV2RequestValidationError is the validation error returned // by CleanNodesInGroupV2Request.Validate if the designated constraints aren't met. type CleanNodesInGroupV2RequestValidationError struct { @@ -19426,19 +31856,52 @@ var _CleanNodesInGroupV2Request_Operator_Pattern = regexp.MustCompile("^[0-9a-zA // Validate checks the field values on CleanNodesInGroupV2Response with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CleanNodesInGroupV2Response) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CleanNodesInGroupV2Response with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CleanNodesInGroupV2ResponseMultiError, or nil if none found. +func (m *CleanNodesInGroupV2Response) ValidateAll() error { + return m.validate(true) +} + +func (m *CleanNodesInGroupV2Response) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CleanNodesInGroupV2ResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CleanNodesInGroupV2ResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CleanNodesInGroupV2ResponseValidationError{ field: "Data", @@ -19448,7 +31911,26 @@ func (m *CleanNodesInGroupV2Response) Validate() error { } } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CleanNodesInGroupV2ResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CleanNodesInGroupV2ResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CleanNodesInGroupV2ResponseValidationError{ field: "WebAnnotations", @@ -19458,9 +31940,30 @@ func (m *CleanNodesInGroupV2Response) Validate() error { } } + if len(errors) > 0 { + return CleanNodesInGroupV2ResponseMultiError(errors) + } + return nil } +// CleanNodesInGroupV2ResponseMultiError is an error wrapping multiple +// validation errors returned by CleanNodesInGroupV2Response.ValidateAll() if +// the designated constraints aren't met. +type CleanNodesInGroupV2ResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CleanNodesInGroupV2ResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CleanNodesInGroupV2ResponseMultiError) AllErrors() []error { return m } + // CleanNodesInGroupV2ResponseValidationError is the validation error returned // by CleanNodesInGroupV2Response.Validate if the designated constraints // aren't met. @@ -19520,31 +32023,74 @@ var _ interface { // Validate checks the field values on ListNodesInGroupV2Request with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListNodesInGroupV2Request) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListNodesInGroupV2Request with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListNodesInGroupV2RequestMultiError, or nil if none found. +func (m *ListNodesInGroupV2Request) ValidateAll() error { + return m.validate(true) +} + +func (m *ListNodesInGroupV2Request) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetNodeGroupID()); l < 2 || l > 20 { - return ListNodesInGroupV2RequestValidationError{ + err := ListNodesInGroupV2RequestValidationError{ field: "NodeGroupID", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_ListNodesInGroupV2Request_NodeGroupID_Pattern.MatchString(m.GetNodeGroupID()) { - return ListNodesInGroupV2RequestValidationError{ + err := ListNodesInGroupV2RequestValidationError{ field: "NodeGroupID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Output + if len(errors) > 0 { + return ListNodesInGroupV2RequestMultiError(errors) + } + return nil } +// ListNodesInGroupV2RequestMultiError is an error wrapping multiple validation +// errors returned by ListNodesInGroupV2Request.ValidateAll() if the +// designated constraints aren't met. +type ListNodesInGroupV2RequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListNodesInGroupV2RequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListNodesInGroupV2RequestMultiError) AllErrors() []error { return m } + // ListNodesInGroupV2RequestValidationError is the validation error returned by // ListNodesInGroupV2Request.Validate if the designated constraints aren't met. type ListNodesInGroupV2RequestValidationError struct { @@ -19605,12 +32151,26 @@ var _ListNodesInGroupV2Request_NodeGroupID_Pattern = regexp.MustCompile("^[0-9a- // Validate checks the field values on ListNodesInGroupV2Response with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListNodesInGroupV2Response) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListNodesInGroupV2Response with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListNodesInGroupV2ResponseMultiError, or nil if none found. +func (m *ListNodesInGroupV2Response) ValidateAll() error { + return m.validate(true) +} + +func (m *ListNodesInGroupV2Response) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -19620,7 +32180,26 @@ func (m *ListNodesInGroupV2Response) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListNodesInGroupV2ResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListNodesInGroupV2ResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListNodesInGroupV2ResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -19632,7 +32211,26 @@ func (m *ListNodesInGroupV2Response) Validate() error { } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListNodesInGroupV2ResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListNodesInGroupV2ResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListNodesInGroupV2ResponseValidationError{ field: "WebAnnotations", @@ -19642,9 +32240,30 @@ func (m *ListNodesInGroupV2Response) Validate() error { } } + if len(errors) > 0 { + return ListNodesInGroupV2ResponseMultiError(errors) + } + return nil } +// ListNodesInGroupV2ResponseMultiError is an error wrapping multiple +// validation errors returned by ListNodesInGroupV2Response.ValidateAll() if +// the designated constraints aren't met. +type ListNodesInGroupV2ResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListNodesInGroupV2ResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListNodesInGroupV2ResponseMultiError) AllErrors() []error { return m } + // ListNodesInGroupV2ResponseValidationError is the validation error returned // by ListNodesInGroupV2Response.Validate if the designated constraints aren't met. type ListNodesInGroupV2ResponseValidationError struct { @@ -19702,13 +32321,27 @@ var _ interface { } = ListNodesInGroupV2ResponseValidationError{} // Validate checks the field values on NodeGroupNode with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *NodeGroupNode) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on NodeGroupNode with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in NodeGroupNodeMultiError, or +// nil if none found. +func (m *NodeGroupNode) ValidateAll() error { + return m.validate(true) +} + +func (m *NodeGroupNode) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for NodeID // no validation rules for InnerIP @@ -19743,9 +32376,30 @@ func (m *NodeGroupNode) Validate() error { // no validation rules for UnSchedulable + if len(errors) > 0 { + return NodeGroupNodeMultiError(errors) + } + return nil } +// NodeGroupNodeMultiError is an error wrapping multiple validation errors +// returned by NodeGroupNode.ValidateAll() if the designated constraints +// aren't met. +type NodeGroupNodeMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m NodeGroupNodeMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m NodeGroupNodeMultiError) AllErrors() []error { return m } + // NodeGroupNodeValidationError is the validation error returned by // NodeGroupNode.Validate if the designated constraints aren't met. type NodeGroupNodeValidationError struct { @@ -19802,12 +32456,26 @@ var _ interface { // Validate checks the field values on ListNodesInGroupResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListNodesInGroupResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListNodesInGroupResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListNodesInGroupResponseMultiError, or nil if none found. +func (m *ListNodesInGroupResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListNodesInGroupResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -19817,7 +32485,26 @@ func (m *ListNodesInGroupResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListNodesInGroupResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListNodesInGroupResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListNodesInGroupResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -19829,7 +32516,26 @@ func (m *ListNodesInGroupResponse) Validate() error { } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListNodesInGroupResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListNodesInGroupResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListNodesInGroupResponseValidationError{ field: "WebAnnotations", @@ -19839,9 +32545,30 @@ func (m *ListNodesInGroupResponse) Validate() error { } } + if len(errors) > 0 { + return ListNodesInGroupResponseMultiError(errors) + } + return nil } +// ListNodesInGroupResponseMultiError is an error wrapping multiple validation +// errors returned by ListNodesInGroupResponse.ValidateAll() if the designated +// constraints aren't met. +type ListNodesInGroupResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListNodesInGroupResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListNodesInGroupResponseMultiError) AllErrors() []error { return m } + // ListNodesInGroupResponseValidationError is the validation error returned by // ListNodesInGroupResponse.Validate if the designated constraints aren't met. type ListNodesInGroupResponseValidationError struct { @@ -19900,50 +32627,105 @@ var _ interface { // Validate checks the field values on UpdateGroupMinMaxSizeRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateGroupMinMaxSizeRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateGroupMinMaxSizeRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateGroupMinMaxSizeRequestMultiError, or nil if none found. +func (m *UpdateGroupMinMaxSizeRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateGroupMinMaxSizeRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetNodeGroupID()); l < 5 || l > 100 { - return UpdateGroupMinMaxSizeRequestValidationError{ + err := UpdateGroupMinMaxSizeRequestValidationError{ field: "NodeGroupID", reason: "value length must be between 5 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_UpdateGroupMinMaxSizeRequest_NodeGroupID_Pattern.MatchString(m.GetNodeGroupID()) { - return UpdateGroupMinMaxSizeRequestValidationError{ + err := UpdateGroupMinMaxSizeRequestValidationError{ field: "NodeGroupID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if m.GetMinSize() < 0 { - return UpdateGroupMinMaxSizeRequestValidationError{ + err := UpdateGroupMinMaxSizeRequestValidationError{ field: "MinSize", reason: "value must be greater than or equal to 0", } + if !all { + return err + } + errors = append(errors, err) } if m.GetMaxSize() < 0 { - return UpdateGroupMinMaxSizeRequestValidationError{ + err := UpdateGroupMinMaxSizeRequestValidationError{ field: "MaxSize", reason: "value must be greater than or equal to 0", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetOperator()); l < 1 || l > 100 { - return UpdateGroupMinMaxSizeRequestValidationError{ + err := UpdateGroupMinMaxSizeRequestValidationError{ field: "Operator", reason: "value length must be between 1 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return UpdateGroupMinMaxSizeRequestMultiError(errors) } return nil } +// UpdateGroupMinMaxSizeRequestMultiError is an error wrapping multiple +// validation errors returned by UpdateGroupMinMaxSizeRequest.ValidateAll() if +// the designated constraints aren't met. +type UpdateGroupMinMaxSizeRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateGroupMinMaxSizeRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateGroupMinMaxSizeRequestMultiError) AllErrors() []error { return m } + // UpdateGroupMinMaxSizeRequestValidationError is the validation error returned // by UpdateGroupMinMaxSizeRequest.Validate if the designated constraints // aren't met. @@ -20005,19 +32787,52 @@ var _UpdateGroupMinMaxSizeRequest_NodeGroupID_Pattern = regexp.MustCompile("^[0- // Validate checks the field values on UpdateGroupMinMaxSizeResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateGroupMinMaxSizeResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateGroupMinMaxSizeResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// UpdateGroupMinMaxSizeResponseMultiError, or nil if none found. +func (m *UpdateGroupMinMaxSizeResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateGroupMinMaxSizeResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateGroupMinMaxSizeResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateGroupMinMaxSizeResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateGroupMinMaxSizeResponseValidationError{ field: "WebAnnotations", @@ -20027,9 +32842,30 @@ func (m *UpdateGroupMinMaxSizeResponse) Validate() error { } } + if len(errors) > 0 { + return UpdateGroupMinMaxSizeResponseMultiError(errors) + } + return nil } +// UpdateGroupMinMaxSizeResponseMultiError is an error wrapping multiple +// validation errors returned by UpdateGroupMinMaxSizeResponse.ValidateAll() +// if the designated constraints aren't met. +type UpdateGroupMinMaxSizeResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateGroupMinMaxSizeResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateGroupMinMaxSizeResponseMultiError) AllErrors() []error { return m } + // UpdateGroupMinMaxSizeResponseValidationError is the validation error // returned by UpdateGroupMinMaxSizeResponse.Validate if the designated // constraints aren't met. @@ -20089,38 +32925,85 @@ var _ interface { // Validate checks the field values on UpdateGroupDesiredSizeRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateGroupDesiredSizeRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateGroupDesiredSizeRequest with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// UpdateGroupDesiredSizeRequestMultiError, or nil if none found. +func (m *UpdateGroupDesiredSizeRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateGroupDesiredSizeRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetNodeGroupID()); l < 5 || l > 100 { - return UpdateGroupDesiredSizeRequestValidationError{ + err := UpdateGroupDesiredSizeRequestValidationError{ field: "NodeGroupID", reason: "value length must be between 5 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_UpdateGroupDesiredSizeRequest_NodeGroupID_Pattern.MatchString(m.GetNodeGroupID()) { - return UpdateGroupDesiredSizeRequestValidationError{ + err := UpdateGroupDesiredSizeRequestValidationError{ field: "NodeGroupID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for DesiredSize if utf8.RuneCountInString(m.GetOperator()) > 100 { - return UpdateGroupDesiredSizeRequestValidationError{ + err := UpdateGroupDesiredSizeRequestValidationError{ field: "Operator", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return UpdateGroupDesiredSizeRequestMultiError(errors) } return nil } +// UpdateGroupDesiredSizeRequestMultiError is an error wrapping multiple +// validation errors returned by UpdateGroupDesiredSizeRequest.ValidateAll() +// if the designated constraints aren't met. +type UpdateGroupDesiredSizeRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateGroupDesiredSizeRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateGroupDesiredSizeRequestMultiError) AllErrors() []error { return m } + // UpdateGroupDesiredSizeRequestValidationError is the validation error // returned by UpdateGroupDesiredSizeRequest.Validate if the designated // constraints aren't met. @@ -20182,19 +33065,52 @@ var _UpdateGroupDesiredSizeRequest_NodeGroupID_Pattern = regexp.MustCompile("^[0 // Validate checks the field values on UpdateGroupDesiredSizeResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateGroupDesiredSizeResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateGroupDesiredSizeResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// UpdateGroupDesiredSizeResponseMultiError, or nil if none found. +func (m *UpdateGroupDesiredSizeResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateGroupDesiredSizeResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateGroupDesiredSizeResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateGroupDesiredSizeResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateGroupDesiredSizeResponseValidationError{ field: "WebAnnotations", @@ -20204,9 +33120,30 @@ func (m *UpdateGroupDesiredSizeResponse) Validate() error { } } + if len(errors) > 0 { + return UpdateGroupDesiredSizeResponseMultiError(errors) + } + return nil } +// UpdateGroupDesiredSizeResponseMultiError is an error wrapping multiple +// validation errors returned by UpdateGroupDesiredSizeResponse.ValidateAll() +// if the designated constraints aren't met. +type UpdateGroupDesiredSizeResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateGroupDesiredSizeResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateGroupDesiredSizeResponseMultiError) AllErrors() []error { return m } + // UpdateGroupDesiredSizeResponseValidationError is the validation error // returned by UpdateGroupDesiredSizeResponse.Validate if the designated // constraints aren't met. @@ -20266,40 +33203,87 @@ var _ interface { // Validate checks the field values on UpdateGroupDesiredNodeRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateGroupDesiredNodeRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateGroupDesiredNodeRequest with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// UpdateGroupDesiredNodeRequestMultiError, or nil if none found. +func (m *UpdateGroupDesiredNodeRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateGroupDesiredNodeRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetNodeGroupID()); l < 5 || l > 100 { - return UpdateGroupDesiredNodeRequestValidationError{ + err := UpdateGroupDesiredNodeRequestValidationError{ field: "NodeGroupID", reason: "value length must be between 5 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_UpdateGroupDesiredNodeRequest_NodeGroupID_Pattern.MatchString(m.GetNodeGroupID()) { - return UpdateGroupDesiredNodeRequestValidationError{ + err := UpdateGroupDesiredNodeRequestValidationError{ field: "NodeGroupID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for DesiredNode if utf8.RuneCountInString(m.GetOperator()) > 100 { - return UpdateGroupDesiredNodeRequestValidationError{ + err := UpdateGroupDesiredNodeRequestValidationError{ field: "Operator", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Manual + if len(errors) > 0 { + return UpdateGroupDesiredNodeRequestMultiError(errors) + } + return nil } +// UpdateGroupDesiredNodeRequestMultiError is an error wrapping multiple +// validation errors returned by UpdateGroupDesiredNodeRequest.ValidateAll() +// if the designated constraints aren't met. +type UpdateGroupDesiredNodeRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateGroupDesiredNodeRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateGroupDesiredNodeRequestMultiError) AllErrors() []error { return m } + // UpdateGroupDesiredNodeRequestValidationError is the validation error // returned by UpdateGroupDesiredNodeRequest.Validate if the designated // constraints aren't met. @@ -20361,19 +33345,52 @@ var _UpdateGroupDesiredNodeRequest_NodeGroupID_Pattern = regexp.MustCompile("^[0 // Validate checks the field values on UpdateGroupDesiredNodeResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateGroupDesiredNodeResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateGroupDesiredNodeResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// UpdateGroupDesiredNodeResponseMultiError, or nil if none found. +func (m *UpdateGroupDesiredNodeResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateGroupDesiredNodeResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateGroupDesiredNodeResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateGroupDesiredNodeResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateGroupDesiredNodeResponseValidationError{ field: "Data", @@ -20383,7 +33400,26 @@ func (m *UpdateGroupDesiredNodeResponse) Validate() error { } } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateGroupDesiredNodeResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateGroupDesiredNodeResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateGroupDesiredNodeResponseValidationError{ field: "WebAnnotations", @@ -20393,9 +33429,30 @@ func (m *UpdateGroupDesiredNodeResponse) Validate() error { } } + if len(errors) > 0 { + return UpdateGroupDesiredNodeResponseMultiError(errors) + } + return nil } +// UpdateGroupDesiredNodeResponseMultiError is an error wrapping multiple +// validation errors returned by UpdateGroupDesiredNodeResponse.ValidateAll() +// if the designated constraints aren't met. +type UpdateGroupDesiredNodeResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateGroupDesiredNodeResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateGroupDesiredNodeResponseMultiError) AllErrors() []error { return m } + // UpdateGroupDesiredNodeResponseValidationError is the validation error // returned by UpdateGroupDesiredNodeResponse.Validate if the designated // constraints aren't met. @@ -20455,29 +33512,72 @@ var _ interface { // Validate checks the field values on EnableNodeGroupAutoScaleRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *EnableNodeGroupAutoScaleRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on EnableNodeGroupAutoScaleRequest with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// EnableNodeGroupAutoScaleRequestMultiError, or nil if none found. +func (m *EnableNodeGroupAutoScaleRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *EnableNodeGroupAutoScaleRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetNodeGroupID()); l < 5 || l > 100 { - return EnableNodeGroupAutoScaleRequestValidationError{ + err := EnableNodeGroupAutoScaleRequestValidationError{ field: "NodeGroupID", reason: "value length must be between 5 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_EnableNodeGroupAutoScaleRequest_NodeGroupID_Pattern.MatchString(m.GetNodeGroupID()) { - return EnableNodeGroupAutoScaleRequestValidationError{ + err := EnableNodeGroupAutoScaleRequestValidationError{ field: "NodeGroupID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return EnableNodeGroupAutoScaleRequestMultiError(errors) } return nil } +// EnableNodeGroupAutoScaleRequestMultiError is an error wrapping multiple +// validation errors returned by EnableNodeGroupAutoScaleRequest.ValidateAll() +// if the designated constraints aren't met. +type EnableNodeGroupAutoScaleRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m EnableNodeGroupAutoScaleRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m EnableNodeGroupAutoScaleRequestMultiError) AllErrors() []error { return m } + // EnableNodeGroupAutoScaleRequestValidationError is the validation error // returned by EnableNodeGroupAutoScaleRequest.Validate if the designated // constraints aren't met. @@ -20539,19 +33639,53 @@ var _EnableNodeGroupAutoScaleRequest_NodeGroupID_Pattern = regexp.MustCompile("^ // Validate checks the field values on EnableNodeGroupAutoScaleResponse with // the rules defined in the proto definition for this message. If any rules -// are violated, an error is returned. +// are violated, the first error encountered is returned, or nil if there are +// no violations. func (m *EnableNodeGroupAutoScaleResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on EnableNodeGroupAutoScaleResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// EnableNodeGroupAutoScaleResponseMultiError, or nil if none found. +func (m *EnableNodeGroupAutoScaleResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *EnableNodeGroupAutoScaleResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, EnableNodeGroupAutoScaleResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, EnableNodeGroupAutoScaleResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return EnableNodeGroupAutoScaleResponseValidationError{ field: "WebAnnotations", @@ -20561,9 +33695,31 @@ func (m *EnableNodeGroupAutoScaleResponse) Validate() error { } } + if len(errors) > 0 { + return EnableNodeGroupAutoScaleResponseMultiError(errors) + } + return nil } +// EnableNodeGroupAutoScaleResponseMultiError is an error wrapping multiple +// validation errors returned by +// EnableNodeGroupAutoScaleResponse.ValidateAll() if the designated +// constraints aren't met. +type EnableNodeGroupAutoScaleResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m EnableNodeGroupAutoScaleResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m EnableNodeGroupAutoScaleResponseMultiError) AllErrors() []error { return m } + // EnableNodeGroupAutoScaleResponseValidationError is the validation error // returned by EnableNodeGroupAutoScaleResponse.Validate if the designated // constraints aren't met. @@ -20623,29 +33779,74 @@ var _ interface { // Validate checks the field values on DisableNodeGroupAutoScaleRequest with // the rules defined in the proto definition for this message. If any rules -// are violated, an error is returned. +// are violated, the first error encountered is returned, or nil if there are +// no violations. func (m *DisableNodeGroupAutoScaleRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DisableNodeGroupAutoScaleRequest with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// DisableNodeGroupAutoScaleRequestMultiError, or nil if none found. +func (m *DisableNodeGroupAutoScaleRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *DisableNodeGroupAutoScaleRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetNodeGroupID()); l < 5 || l > 100 { - return DisableNodeGroupAutoScaleRequestValidationError{ + err := DisableNodeGroupAutoScaleRequestValidationError{ field: "NodeGroupID", reason: "value length must be between 5 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_DisableNodeGroupAutoScaleRequest_NodeGroupID_Pattern.MatchString(m.GetNodeGroupID()) { - return DisableNodeGroupAutoScaleRequestValidationError{ + err := DisableNodeGroupAutoScaleRequestValidationError{ field: "NodeGroupID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return DisableNodeGroupAutoScaleRequestMultiError(errors) } return nil } +// DisableNodeGroupAutoScaleRequestMultiError is an error wrapping multiple +// validation errors returned by +// DisableNodeGroupAutoScaleRequest.ValidateAll() if the designated +// constraints aren't met. +type DisableNodeGroupAutoScaleRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DisableNodeGroupAutoScaleRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DisableNodeGroupAutoScaleRequestMultiError) AllErrors() []error { return m } + // DisableNodeGroupAutoScaleRequestValidationError is the validation error // returned by DisableNodeGroupAutoScaleRequest.Validate if the designated // constraints aren't met. @@ -20707,19 +33908,53 @@ var _DisableNodeGroupAutoScaleRequest_NodeGroupID_Pattern = regexp.MustCompile(" // Validate checks the field values on DisableNodeGroupAutoScaleResponse with // the rules defined in the proto definition for this message. If any rules -// are violated, an error is returned. +// are violated, the first error encountered is returned, or nil if there are +// no violations. func (m *DisableNodeGroupAutoScaleResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DisableNodeGroupAutoScaleResponse +// with the rules defined in the proto definition for this message. If any +// rules are violated, the result is a list of violation errors wrapped in +// DisableNodeGroupAutoScaleResponseMultiError, or nil if none found. +func (m *DisableNodeGroupAutoScaleResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *DisableNodeGroupAutoScaleResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DisableNodeGroupAutoScaleResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DisableNodeGroupAutoScaleResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DisableNodeGroupAutoScaleResponseValidationError{ field: "WebAnnotations", @@ -20729,9 +33964,31 @@ func (m *DisableNodeGroupAutoScaleResponse) Validate() error { } } + if len(errors) > 0 { + return DisableNodeGroupAutoScaleResponseMultiError(errors) + } + return nil } +// DisableNodeGroupAutoScaleResponseMultiError is an error wrapping multiple +// validation errors returned by +// DisableNodeGroupAutoScaleResponse.ValidateAll() if the designated +// constraints aren't met. +type DisableNodeGroupAutoScaleResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DisableNodeGroupAutoScaleResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DisableNodeGroupAutoScaleResponseMultiError) AllErrors() []error { return m } + // DisableNodeGroupAutoScaleResponseValidationError is the validation error // returned by DisableNodeGroupAutoScaleResponse.Validate if the designated // constraints aren't met. @@ -20790,20 +34047,38 @@ var _ interface { } = DisableNodeGroupAutoScaleResponseValidationError{} // Validate checks the field values on CreateTaskRequest with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *CreateTaskRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CreateTaskRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CreateTaskRequestMultiError, or nil if none found. +func (m *CreateTaskRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *CreateTaskRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for TaskType if _, ok := _CreateTaskRequest_Status_InLookup[m.GetStatus()]; !ok { - return CreateTaskRequestValidationError{ + err := CreateTaskRequestValidationError{ field: "Status", reason: "value must be in list [INITIALIZING RUNNING SUCCESS FAILED TIMEOUT]", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Message @@ -20817,83 +34092,165 @@ func (m *CreateTaskRequest) Validate() error { // no validation rules for CurrentStep if len(m.GetStepSequence()) < 1 { - return CreateTaskRequestValidationError{ + err := CreateTaskRequestValidationError{ field: "StepSequence", reason: "value must contain at least 1 item(s)", } + if !all { + return err + } + errors = append(errors, err) } if l := len(m.GetSteps()); l < 1 || l > 20 { - return CreateTaskRequestValidationError{ + err := CreateTaskRequestValidationError{ field: "Steps", reason: "value must contain between 1 and 20 pairs, inclusive", } - } - - for key, val := range m.GetSteps() { - _ = val - - // no validation rules for Steps[key] - - if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return CreateTaskRequestValidationError{ - field: fmt.Sprintf("Steps[%v]", key), - reason: "embedded message failed validation", - cause: err, + if !all { + return err + } + errors = append(errors, err) + } + + { + sorted_keys := make([]string, len(m.GetSteps())) + i := 0 + for key := range m.GetSteps() { + sorted_keys[i] = key + i++ + } + sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) + for _, key := range sorted_keys { + val := m.GetSteps()[key] + _ = val + + // no validation rules for Steps[key] + + if all { + switch v := interface{}(val).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateTaskRequestValidationError{ + field: fmt.Sprintf("Steps[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateTaskRequestValidationError{ + field: fmt.Sprintf("Steps[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return CreateTaskRequestValidationError{ + field: fmt.Sprintf("Steps[%v]", key), + reason: "embedded message failed validation", + cause: err, + } } } - } + } } if l := utf8.RuneCountInString(m.GetClusterID()); l < 2 || l > 100 { - return CreateTaskRequestValidationError{ + err := CreateTaskRequestValidationError{ field: "ClusterID", reason: "value length must be between 2 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - return CreateTaskRequestValidationError{ + err := CreateTaskRequestValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } + if !all { + return err + } + errors = append(errors, err) } if !_CreateTaskRequest_ClusterID_Pattern.MatchString(m.GetClusterID()) { - return CreateTaskRequestValidationError{ + err := CreateTaskRequestValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetProjectID()); l < 2 || l > 32 { - return CreateTaskRequestValidationError{ + err := CreateTaskRequestValidationError{ field: "ProjectID", reason: "value length must be between 2 and 32 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_CreateTaskRequest_ProjectID_Pattern.MatchString(m.GetProjectID()) { - return CreateTaskRequestValidationError{ + err := CreateTaskRequestValidationError{ field: "ProjectID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetCreator()); l < 2 || l > 20 { - return CreateTaskRequestValidationError{ + err := CreateTaskRequestValidationError{ field: "Creator", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for LastUpdate + if len(errors) > 0 { + return CreateTaskRequestMultiError(errors) + } + return nil } +// CreateTaskRequestMultiError is an error wrapping multiple validation errors +// returned by CreateTaskRequest.ValidateAll() if the designated constraints +// aren't met. +type CreateTaskRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CreateTaskRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CreateTaskRequestMultiError) AllErrors() []error { return m } + // CreateTaskRequestValidationError is the validation error returned by // CreateTaskRequest.Validate if the designated constraints aren't met. type CreateTaskRequestValidationError struct { @@ -20964,19 +34321,52 @@ var _CreateTaskRequest_ProjectID_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$") // Validate checks the field values on CreateTaskResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CreateTaskResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CreateTaskResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CreateTaskResponseMultiError, or nil if none found. +func (m *CreateTaskResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *CreateTaskResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateTaskResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateTaskResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateTaskResponseValidationError{ field: "Data", @@ -20986,9 +34376,30 @@ func (m *CreateTaskResponse) Validate() error { } } + if len(errors) > 0 { + return CreateTaskResponseMultiError(errors) + } + return nil } +// CreateTaskResponseMultiError is an error wrapping multiple validation errors +// returned by CreateTaskResponse.ValidateAll() if the designated constraints +// aren't met. +type CreateTaskResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CreateTaskResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CreateTaskResponseMultiError) AllErrors() []error { return m } + // CreateTaskResponseValidationError is the validation error returned by // CreateTaskResponse.Validate if the designated constraints aren't met. type CreateTaskResponseValidationError struct { @@ -21046,37 +34457,84 @@ var _ interface { } = CreateTaskResponseValidationError{} // Validate checks the field values on RetryTaskRequest with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *RetryTaskRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on RetryTaskRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// RetryTaskRequestMultiError, or nil if none found. +func (m *RetryTaskRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *RetryTaskRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetTaskID()); l < 2 || l > 1024 { - return RetryTaskRequestValidationError{ + err := RetryTaskRequestValidationError{ field: "TaskID", reason: "value length must be between 2 and 1024 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_RetryTaskRequest_TaskID_Pattern.MatchString(m.GetTaskID()) { - return RetryTaskRequestValidationError{ + err := RetryTaskRequestValidationError{ field: "TaskID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetUpdater()); l < 2 || l > 1024 { - return RetryTaskRequestValidationError{ + err := RetryTaskRequestValidationError{ field: "Updater", reason: "value length must be between 2 and 1024 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return RetryTaskRequestMultiError(errors) } return nil } +// RetryTaskRequestMultiError is an error wrapping multiple validation errors +// returned by RetryTaskRequest.ValidateAll() if the designated constraints +// aren't met. +type RetryTaskRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m RetryTaskRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m RetryTaskRequestMultiError) AllErrors() []error { return m } + // RetryTaskRequestValidationError is the validation error returned by // RetryTaskRequest.Validate if the designated constraints aren't met. type RetryTaskRequestValidationError struct { @@ -21134,20 +34592,53 @@ var _ interface { var _RetryTaskRequest_TaskID_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$") // Validate checks the field values on RetryTaskResponse with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *RetryTaskResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on RetryTaskResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// RetryTaskResponseMultiError, or nil if none found. +func (m *RetryTaskResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *RetryTaskResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, RetryTaskResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, RetryTaskResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return RetryTaskResponseValidationError{ field: "Data", @@ -21157,9 +34648,30 @@ func (m *RetryTaskResponse) Validate() error { } } + if len(errors) > 0 { + return RetryTaskResponseMultiError(errors) + } + return nil } +// RetryTaskResponseMultiError is an error wrapping multiple validation errors +// returned by RetryTaskResponse.ValidateAll() if the designated constraints +// aren't met. +type RetryTaskResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m RetryTaskResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m RetryTaskResponseMultiError) AllErrors() []error { return m } + // RetryTaskResponseValidationError is the validation error returned by // RetryTaskResponse.Validate if the designated constraints aren't met. type RetryTaskResponseValidationError struct { @@ -21217,32 +34729,58 @@ var _ interface { } = RetryTaskResponseValidationError{} // Validate checks the field values on UpdateTaskRequest with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *UpdateTaskRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateTaskRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateTaskRequestMultiError, or nil if none found. +func (m *UpdateTaskRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateTaskRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetTaskID()); l < 2 || l > 36 { - return UpdateTaskRequestValidationError{ + err := UpdateTaskRequestValidationError{ field: "TaskID", reason: "value length must be between 2 and 36 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_UpdateTaskRequest_TaskID_Pattern.MatchString(m.GetTaskID()) { - return UpdateTaskRequestValidationError{ + err := UpdateTaskRequestValidationError{ field: "TaskID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if _, ok := _UpdateTaskRequest_Status_InLookup[m.GetStatus()]; !ok { - return UpdateTaskRequestValidationError{ + err := UpdateTaskRequestValidationError{ field: "Status", reason: "value must be in list [INITIALIZING RUNNING SUCCESS FAILED TIMEOUT]", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Message @@ -21254,39 +34792,97 @@ func (m *UpdateTaskRequest) Validate() error { // no validation rules for CurrentStep if l := len(m.GetSteps()); l < 1 || l > 20 { - return UpdateTaskRequestValidationError{ + err := UpdateTaskRequestValidationError{ field: "Steps", reason: "value must contain between 1 and 20 pairs, inclusive", } - } - - for key, val := range m.GetSteps() { - _ = val - - // no validation rules for Steps[key] - - if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return UpdateTaskRequestValidationError{ - field: fmt.Sprintf("Steps[%v]", key), - reason: "embedded message failed validation", - cause: err, + if !all { + return err + } + errors = append(errors, err) + } + + { + sorted_keys := make([]string, len(m.GetSteps())) + i := 0 + for key := range m.GetSteps() { + sorted_keys[i] = key + i++ + } + sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) + for _, key := range sorted_keys { + val := m.GetSteps()[key] + _ = val + + // no validation rules for Steps[key] + + if all { + switch v := interface{}(val).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateTaskRequestValidationError{ + field: fmt.Sprintf("Steps[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateTaskRequestValidationError{ + field: fmt.Sprintf("Steps[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return UpdateTaskRequestValidationError{ + field: fmt.Sprintf("Steps[%v]", key), + reason: "embedded message failed validation", + cause: err, + } } } - } + } } if l := utf8.RuneCountInString(m.GetUpdater()); l < 2 || l > 20 { - return UpdateTaskRequestValidationError{ + err := UpdateTaskRequestValidationError{ field: "Updater", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return UpdateTaskRequestMultiError(errors) } return nil } +// UpdateTaskRequestMultiError is an error wrapping multiple validation errors +// returned by UpdateTaskRequest.ValidateAll() if the designated constraints +// aren't met. +type UpdateTaskRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateTaskRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateTaskRequestMultiError) AllErrors() []error { return m } + // UpdateTaskRequestValidationError is the validation error returned by // UpdateTaskRequest.Validate if the designated constraints aren't met. type UpdateTaskRequestValidationError struct { @@ -21355,19 +34951,52 @@ var _UpdateTaskRequest_Status_InLookup = map[string]struct{}{ // Validate checks the field values on UpdateTaskResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateTaskResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateTaskResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateTaskResponseMultiError, or nil if none found. +func (m *UpdateTaskResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateTaskResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateTaskResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateTaskResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateTaskResponseValidationError{ field: "Data", @@ -21377,9 +35006,30 @@ func (m *UpdateTaskResponse) Validate() error { } } + if len(errors) > 0 { + return UpdateTaskResponseMultiError(errors) + } + return nil } +// UpdateTaskResponseMultiError is an error wrapping multiple validation errors +// returned by UpdateTaskResponse.ValidateAll() if the designated constraints +// aren't met. +type UpdateTaskResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateTaskResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateTaskResponseMultiError) AllErrors() []error { return m } + // UpdateTaskResponseValidationError is the validation error returned by // UpdateTaskResponse.Validate if the designated constraints aren't met. type UpdateTaskResponseValidationError struct { @@ -21437,32 +35087,75 @@ var _ interface { } = UpdateTaskResponseValidationError{} // Validate checks the field values on DeleteTaskRequest with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *DeleteTaskRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteTaskRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeleteTaskRequestMultiError, or nil if none found. +func (m *DeleteTaskRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteTaskRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetTaskID()); l < 2 || l > 36 { - return DeleteTaskRequestValidationError{ + err := DeleteTaskRequestValidationError{ field: "TaskID", reason: "value length must be between 2 and 36 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_DeleteTaskRequest_TaskID_Pattern.MatchString(m.GetTaskID()) { - return DeleteTaskRequestValidationError{ + err := DeleteTaskRequestValidationError{ field: "TaskID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for IsForce + if len(errors) > 0 { + return DeleteTaskRequestMultiError(errors) + } + return nil } +// DeleteTaskRequestMultiError is an error wrapping multiple validation errors +// returned by DeleteTaskRequest.ValidateAll() if the designated constraints +// aren't met. +type DeleteTaskRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteTaskRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteTaskRequestMultiError) AllErrors() []error { return m } + // DeleteTaskRequestValidationError is the validation error returned by // DeleteTaskRequest.Validate if the designated constraints aren't met. type DeleteTaskRequestValidationError struct { @@ -21523,19 +35216,52 @@ var _DeleteTaskRequest_TaskID_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$") // Validate checks the field values on DeleteTaskResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DeleteTaskResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteTaskResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeleteTaskResponseMultiError, or nil if none found. +func (m *DeleteTaskResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteTaskResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DeleteTaskResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DeleteTaskResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteTaskResponseValidationError{ field: "Data", @@ -21545,9 +35271,30 @@ func (m *DeleteTaskResponse) Validate() error { } } + if len(errors) > 0 { + return DeleteTaskResponseMultiError(errors) + } + return nil } +// DeleteTaskResponseMultiError is an error wrapping multiple validation errors +// returned by DeleteTaskResponse.ValidateAll() if the designated constraints +// aren't met. +type DeleteTaskResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteTaskResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteTaskResponseMultiError) AllErrors() []error { return m } + // DeleteTaskResponseValidationError is the validation error returned by // DeleteTaskResponse.Validate if the designated constraints aren't met. type DeleteTaskResponseValidationError struct { @@ -21605,30 +35352,73 @@ var _ interface { } = DeleteTaskResponseValidationError{} // Validate checks the field values on GetTaskRequest with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *GetTaskRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetTaskRequest with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in GetTaskRequestMultiError, +// or nil if none found. +func (m *GetTaskRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetTaskRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetTaskID()); l < 2 || l > 36 { - return GetTaskRequestValidationError{ + err := GetTaskRequestValidationError{ field: "TaskID", reason: "value length must be between 2 and 36 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_GetTaskRequest_TaskID_Pattern.MatchString(m.GetTaskID()) { - return GetTaskRequestValidationError{ + err := GetTaskRequestValidationError{ field: "TaskID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return GetTaskRequestMultiError(errors) } return nil } +// GetTaskRequestMultiError is an error wrapping multiple validation errors +// returned by GetTaskRequest.ValidateAll() if the designated constraints +// aren't met. +type GetTaskRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetTaskRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetTaskRequestMultiError) AllErrors() []error { return m } + // GetTaskRequestValidationError is the validation error returned by // GetTaskRequest.Validate if the designated constraints aren't met. type GetTaskRequestValidationError struct { @@ -21686,20 +35476,53 @@ var _ interface { var _GetTaskRequest_TaskID_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$") // Validate checks the field values on GetTaskResponse with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *GetTaskResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetTaskResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetTaskResponseMultiError, or nil if none found. +func (m *GetTaskResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetTaskResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetTaskResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetTaskResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetTaskResponseValidationError{ field: "Data", @@ -21709,9 +35532,30 @@ func (m *GetTaskResponse) Validate() error { } } + if len(errors) > 0 { + return GetTaskResponseMultiError(errors) + } + return nil } +// GetTaskResponseMultiError is an error wrapping multiple validation errors +// returned by GetTaskResponse.ValidateAll() if the designated constraints +// aren't met. +type GetTaskResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetTaskResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetTaskResponseMultiError) AllErrors() []error { return m } + // GetTaskResponseValidationError is the validation error returned by // GetTaskResponse.Validate if the designated constraints aren't met. type GetTaskResponseValidationError struct { @@ -21767,39 +35611,69 @@ var _ interface { } = GetTaskResponseValidationError{} // Validate checks the field values on ListTaskRequest with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *ListTaskRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListTaskRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListTaskRequestMultiError, or nil if none found. +func (m *ListTaskRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListTaskRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetClusterID()) > 100 { - return ListTaskRequestValidationError{ + err := ListTaskRequestValidationError{ field: "ClusterID", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetProjectID()) > 32 { - return ListTaskRequestValidationError{ + err := ListTaskRequestValidationError{ field: "ProjectID", reason: "value length must be at most 32 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetCreator()) > 20 { - return ListTaskRequestValidationError{ + err := ListTaskRequestValidationError{ field: "Creator", reason: "value length must be at most 20 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetUpdater()) > 20 { - return ListTaskRequestValidationError{ + err := ListTaskRequestValidationError{ field: "Updater", reason: "value length must be at most 20 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for TaskType @@ -21810,9 +35684,30 @@ func (m *ListTaskRequest) Validate() error { // no validation rules for NodeGroupID + if len(errors) > 0 { + return ListTaskRequestMultiError(errors) + } + return nil } +// ListTaskRequestMultiError is an error wrapping multiple validation errors +// returned by ListTaskRequest.ValidateAll() if the designated constraints +// aren't met. +type ListTaskRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListTaskRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListTaskRequestMultiError) AllErrors() []error { return m } + // ListTaskRequestValidationError is the validation error returned by // ListTaskRequest.Validate if the designated constraints aren't met. type ListTaskRequestValidationError struct { @@ -21868,13 +35763,27 @@ var _ interface { } = ListTaskRequestValidationError{} // Validate checks the field values on ListTaskResponse with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *ListTaskResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListTaskResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListTaskResponseMultiError, or nil if none found. +func (m *ListTaskResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListTaskResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -21884,7 +35793,26 @@ func (m *ListTaskResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListTaskResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListTaskResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListTaskResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -21896,7 +35824,26 @@ func (m *ListTaskResponse) Validate() error { } - if v, ok := interface{}(m.GetLatestTask()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetLatestTask()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListTaskResponseValidationError{ + field: "LatestTask", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListTaskResponseValidationError{ + field: "LatestTask", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetLatestTask()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListTaskResponseValidationError{ field: "LatestTask", @@ -21906,9 +35853,30 @@ func (m *ListTaskResponse) Validate() error { } } + if len(errors) > 0 { + return ListTaskResponseMultiError(errors) + } + return nil } +// ListTaskResponseMultiError is an error wrapping multiple validation errors +// returned by ListTaskResponse.ValidateAll() if the designated constraints +// aren't met. +type ListTaskResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListTaskResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListTaskResponseMultiError) AllErrors() []error { return m } + // ListTaskResponseValidationError is the validation error returned by // ListTaskResponse.Validate if the designated constraints aren't met. type ListTaskResponseValidationError struct { @@ -21965,12 +35933,26 @@ var _ interface { // Validate checks the field values on CreateAutoScalingOptionRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CreateAutoScalingOptionRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CreateAutoScalingOptionRequest with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// CreateAutoScalingOptionRequestMultiError, or nil if none found. +func (m *CreateAutoScalingOptionRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *CreateAutoScalingOptionRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for IsScaleDownEnable // no validation rules for Expander @@ -21998,31 +35980,47 @@ func (m *CreateAutoScalingOptionRequest) Validate() error { // no validation rules for UnregisteredNodeRemovalTime if l := utf8.RuneCountInString(m.GetClusterID()); l < 2 || l > 100 { - return CreateAutoScalingOptionRequestValidationError{ + err := CreateAutoScalingOptionRequestValidationError{ field: "ClusterID", reason: "value length must be between 2 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - return CreateAutoScalingOptionRequestValidationError{ + err := CreateAutoScalingOptionRequestValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } + if !all { + return err + } + errors = append(errors, err) } if !_CreateAutoScalingOptionRequest_ClusterID_Pattern.MatchString(m.GetClusterID()) { - return CreateAutoScalingOptionRequestValidationError{ + err := CreateAutoScalingOptionRequestValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetCreator()); l < 2 || l > 20 { - return CreateAutoScalingOptionRequestValidationError{ + err := CreateAutoScalingOptionRequestValidationError{ field: "Creator", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Provider @@ -22037,7 +36035,26 @@ func (m *CreateAutoScalingOptionRequest) Validate() error { // no validation rules for MaxNodeProvisionTime - if v, ok := interface{}(m.GetScaleUpFromZero()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetScaleUpFromZero()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateAutoScalingOptionRequestValidationError{ + field: "ScaleUpFromZero", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateAutoScalingOptionRequestValidationError{ + field: "ScaleUpFromZero", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetScaleUpFromZero()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateAutoScalingOptionRequestValidationError{ field: "ScaleUpFromZero", @@ -22051,7 +36068,26 @@ func (m *CreateAutoScalingOptionRequest) Validate() error { // no validation rules for ScaleDownDelayAfterDelete - if v, ok := interface{}(m.GetScaleDownDelayAfterFailure()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetScaleDownDelayAfterFailure()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateAutoScalingOptionRequestValidationError{ + field: "ScaleDownDelayAfterFailure", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateAutoScalingOptionRequestValidationError{ + field: "ScaleDownDelayAfterFailure", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetScaleDownDelayAfterFailure()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateAutoScalingOptionRequestValidationError{ field: "ScaleDownDelayAfterFailure", @@ -22067,9 +36103,30 @@ func (m *CreateAutoScalingOptionRequest) Validate() error { // no validation rules for BufferResourceMemRatio + if len(errors) > 0 { + return CreateAutoScalingOptionRequestMultiError(errors) + } + return nil } +// CreateAutoScalingOptionRequestMultiError is an error wrapping multiple +// validation errors returned by CreateAutoScalingOptionRequest.ValidateAll() +// if the designated constraints aren't met. +type CreateAutoScalingOptionRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CreateAutoScalingOptionRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CreateAutoScalingOptionRequestMultiError) AllErrors() []error { return m } + // CreateAutoScalingOptionRequestValidationError is the validation error // returned by CreateAutoScalingOptionRequest.Validate if the designated // constraints aren't met. @@ -22131,19 +36188,52 @@ var _CreateAutoScalingOptionRequest_ClusterID_Pattern = regexp.MustCompile("^[0- // Validate checks the field values on CreateAutoScalingOptionResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CreateAutoScalingOptionResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CreateAutoScalingOptionResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// CreateAutoScalingOptionResponseMultiError, or nil if none found. +func (m *CreateAutoScalingOptionResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *CreateAutoScalingOptionResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateAutoScalingOptionResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateAutoScalingOptionResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateAutoScalingOptionResponseValidationError{ field: "Data", @@ -22153,9 +36243,30 @@ func (m *CreateAutoScalingOptionResponse) Validate() error { } } + if len(errors) > 0 { + return CreateAutoScalingOptionResponseMultiError(errors) + } + return nil } +// CreateAutoScalingOptionResponseMultiError is an error wrapping multiple +// validation errors returned by CreateAutoScalingOptionResponse.ValidateAll() +// if the designated constraints aren't met. +type CreateAutoScalingOptionResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CreateAutoScalingOptionResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CreateAutoScalingOptionResponseMultiError) AllErrors() []error { return m } + // CreateAutoScalingOptionResponseValidationError is the validation error // returned by CreateAutoScalingOptionResponse.Validate if the designated // constraints aren't met. @@ -22215,50 +36326,103 @@ var _ interface { // Validate checks the field values on UpdateAutoScalingOptionRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateAutoScalingOptionRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateAutoScalingOptionRequest with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// UpdateAutoScalingOptionRequestMultiError, or nil if none found. +func (m *UpdateAutoScalingOptionRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateAutoScalingOptionRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for IsScaleDownEnable if _, ok := _UpdateAutoScalingOptionRequest_Expander_InLookup[m.GetExpander()]; !ok { - return UpdateAutoScalingOptionRequestValidationError{ + err := UpdateAutoScalingOptionRequestValidationError{ field: "Expander", reason: "value must be in list [random least-waste most-pods priority]", } + if !all { + return err + } + errors = append(errors, err) } if val := m.GetMaxEmptyBulkDelete(); val < 1 || val > 100 { - return UpdateAutoScalingOptionRequestValidationError{ + err := UpdateAutoScalingOptionRequestValidationError{ field: "MaxEmptyBulkDelete", reason: "value must be inside range [1, 100]", } + if !all { + return err + } + errors = append(errors, err) } if val := m.GetScaleDownDelay(); val < 60 || val > 86400 { - return UpdateAutoScalingOptionRequestValidationError{ + err := UpdateAutoScalingOptionRequestValidationError{ field: "ScaleDownDelay", reason: "value must be inside range [60, 86400]", } + if !all { + return err + } + errors = append(errors, err) } if val := m.GetScaleDownUnneededTime(); val < 60 || val > 86400 { - return UpdateAutoScalingOptionRequestValidationError{ + err := UpdateAutoScalingOptionRequestValidationError{ field: "ScaleDownUnneededTime", reason: "value must be inside range [60, 86400]", } + if !all { + return err + } + errors = append(errors, err) } if val := m.GetScaleDownUtilizationThreahold(); val < 0 || val > 80 { - return UpdateAutoScalingOptionRequestValidationError{ + err := UpdateAutoScalingOptionRequestValidationError{ field: "ScaleDownUtilizationThreahold", reason: "value must be inside range [0, 80]", } + if !all { + return err + } + errors = append(errors, err) } - if v, ok := interface{}(m.GetSkipNodesWithLocalStorage()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetSkipNodesWithLocalStorage()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateAutoScalingOptionRequestValidationError{ + field: "SkipNodesWithLocalStorage", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateAutoScalingOptionRequestValidationError{ + field: "SkipNodesWithLocalStorage", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetSkipNodesWithLocalStorage()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateAutoScalingOptionRequestValidationError{ field: "SkipNodesWithLocalStorage", @@ -22268,7 +36432,26 @@ func (m *UpdateAutoScalingOptionRequest) Validate() error { } } - if v, ok := interface{}(m.GetSkipNodesWithSystemPods()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetSkipNodesWithSystemPods()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateAutoScalingOptionRequestValidationError{ + field: "SkipNodesWithSystemPods", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateAutoScalingOptionRequestValidationError{ + field: "SkipNodesWithSystemPods", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetSkipNodesWithSystemPods()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateAutoScalingOptionRequestValidationError{ field: "SkipNodesWithSystemPods", @@ -22278,7 +36461,26 @@ func (m *UpdateAutoScalingOptionRequest) Validate() error { } } - if v, ok := interface{}(m.GetIgnoreDaemonSetsUtilization()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetIgnoreDaemonSetsUtilization()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateAutoScalingOptionRequestValidationError{ + field: "IgnoreDaemonSetsUtilization", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateAutoScalingOptionRequestValidationError{ + field: "IgnoreDaemonSetsUtilization", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetIgnoreDaemonSetsUtilization()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateAutoScalingOptionRequestValidationError{ field: "IgnoreDaemonSetsUtilization", @@ -22289,47 +36491,71 @@ func (m *UpdateAutoScalingOptionRequest) Validate() error { } if val := m.GetOkTotalUnreadyCount(); val < 0 || val > 320000 { - return UpdateAutoScalingOptionRequestValidationError{ + err := UpdateAutoScalingOptionRequestValidationError{ field: "OkTotalUnreadyCount", reason: "value must be inside range [0, 320000]", } + if !all { + return err + } + errors = append(errors, err) } if val := m.GetMaxTotalUnreadyPercentage(); val < 0 || val > 100 { - return UpdateAutoScalingOptionRequestValidationError{ + err := UpdateAutoScalingOptionRequestValidationError{ field: "MaxTotalUnreadyPercentage", reason: "value must be inside range [0, 100]", } + if !all { + return err + } + errors = append(errors, err) } if val := m.GetScaleDownUnreadyTime(); val < 1200 || val > 86400 { - return UpdateAutoScalingOptionRequestValidationError{ + err := UpdateAutoScalingOptionRequestValidationError{ field: "ScaleDownUnreadyTime", reason: "value must be inside range [1200, 86400]", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for UnregisteredNodeRemovalTime if utf8.RuneCountInString(m.GetProjectID()) > 32 { - return UpdateAutoScalingOptionRequestValidationError{ + err := UpdateAutoScalingOptionRequestValidationError{ field: "ProjectID", reason: "value length must be at most 32 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetClusterID()) > 100 { - return UpdateAutoScalingOptionRequestValidationError{ + err := UpdateAutoScalingOptionRequestValidationError{ field: "ClusterID", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetUpdater()); l < 2 || l > 20 { - return UpdateAutoScalingOptionRequestValidationError{ + err := UpdateAutoScalingOptionRequestValidationError{ field: "Updater", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Provider @@ -22339,36 +36565,71 @@ func (m *UpdateAutoScalingOptionRequest) Validate() error { if wrapper := m.GetBufferResourceRatio(); wrapper != nil { if val := wrapper.GetValue(); val < 0 || val > 100 { - return UpdateAutoScalingOptionRequestValidationError{ + err := UpdateAutoScalingOptionRequestValidationError{ field: "BufferResourceRatio", reason: "value must be inside range [0, 100]", } + if !all { + return err + } + errors = append(errors, err) } } if val := m.GetMaxGracefulTerminationSec(); val < 60 || val > 86400 { - return UpdateAutoScalingOptionRequestValidationError{ + err := UpdateAutoScalingOptionRequestValidationError{ field: "MaxGracefulTerminationSec", reason: "value must be inside range [60, 86400]", } + if !all { + return err + } + errors = append(errors, err) } if val := m.GetScanInterval(); val < 5 || val > 86400 { - return UpdateAutoScalingOptionRequestValidationError{ + err := UpdateAutoScalingOptionRequestValidationError{ field: "ScanInterval", reason: "value must be inside range [5, 86400]", } + if !all { + return err + } + errors = append(errors, err) } if val := m.GetMaxNodeProvisionTime(); val < 900 || val > 86400 { - return UpdateAutoScalingOptionRequestValidationError{ + err := UpdateAutoScalingOptionRequestValidationError{ field: "MaxNodeProvisionTime", reason: "value must be inside range [900, 86400]", } + if !all { + return err + } + errors = append(errors, err) } - if v, ok := interface{}(m.GetScaleUpFromZero()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetScaleUpFromZero()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateAutoScalingOptionRequestValidationError{ + field: "ScaleUpFromZero", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateAutoScalingOptionRequestValidationError{ + field: "ScaleUpFromZero", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetScaleUpFromZero()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateAutoScalingOptionRequestValidationError{ field: "ScaleUpFromZero", @@ -22379,45 +36640,84 @@ func (m *UpdateAutoScalingOptionRequest) Validate() error { } if val := m.GetScaleDownDelayAfterAdd(); val < 1200 || val > 86400 { - return UpdateAutoScalingOptionRequestValidationError{ + err := UpdateAutoScalingOptionRequestValidationError{ field: "ScaleDownDelayAfterAdd", reason: "value must be inside range [1200, 86400]", } + if !all { + return err + } + errors = append(errors, err) } if val := m.GetScaleDownDelayAfterDelete(); val < 0 || val > 86400 { - return UpdateAutoScalingOptionRequestValidationError{ + err := UpdateAutoScalingOptionRequestValidationError{ field: "ScaleDownDelayAfterDelete", reason: "value must be inside range [0, 86400]", } + if !all { + return err + } + errors = append(errors, err) } if wrapper := m.GetScaleDownDelayAfterFailure(); wrapper != nil { if val := wrapper.GetValue(); val < 60 || val > 86400 { - return UpdateAutoScalingOptionRequestValidationError{ + err := UpdateAutoScalingOptionRequestValidationError{ field: "ScaleDownDelayAfterFailure", reason: "value must be inside range [60, 86400]", } + if !all { + return err + } + errors = append(errors, err) } } if val := m.GetBufferResourceCpuRatio(); val < 0 || val > 100 { - return UpdateAutoScalingOptionRequestValidationError{ + err := UpdateAutoScalingOptionRequestValidationError{ field: "BufferResourceCpuRatio", reason: "value must be inside range [0, 100]", } + if !all { + return err + } + errors = append(errors, err) } if val := m.GetBufferResourceMemRatio(); val < 0 || val > 100 { - return UpdateAutoScalingOptionRequestValidationError{ + err := UpdateAutoScalingOptionRequestValidationError{ field: "BufferResourceMemRatio", reason: "value must be inside range [0, 100]", } + if !all { + return err + } + errors = append(errors, err) } - if v, ok := interface{}(m.GetModule()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetModule()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateAutoScalingOptionRequestValidationError{ + field: "Module", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateAutoScalingOptionRequestValidationError{ + field: "Module", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetModule()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateAutoScalingOptionRequestValidationError{ field: "Module", @@ -22427,7 +36727,26 @@ func (m *UpdateAutoScalingOptionRequest) Validate() error { } } - if v, ok := interface{}(m.GetWebhook()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebhook()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateAutoScalingOptionRequestValidationError{ + field: "Webhook", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateAutoScalingOptionRequestValidationError{ + field: "Webhook", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebhook()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateAutoScalingOptionRequestValidationError{ field: "Webhook", @@ -22439,7 +36758,26 @@ func (m *UpdateAutoScalingOptionRequest) Validate() error { // no validation rules for OnlyUpdateInfo - if v, ok := interface{}(m.GetExpendablePodsPriorityCutoff()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetExpendablePodsPriorityCutoff()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateAutoScalingOptionRequestValidationError{ + field: "ExpendablePodsPriorityCutoff", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateAutoScalingOptionRequestValidationError{ + field: "ExpendablePodsPriorityCutoff", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetExpendablePodsPriorityCutoff()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateAutoScalingOptionRequestValidationError{ field: "ExpendablePodsPriorityCutoff", @@ -22452,17 +36790,42 @@ func (m *UpdateAutoScalingOptionRequest) Validate() error { if wrapper := m.GetNewPodScaleUpDelay(); wrapper != nil { if wrapper.GetValue() < 0 { - return UpdateAutoScalingOptionRequestValidationError{ + err := UpdateAutoScalingOptionRequestValidationError{ field: "NewPodScaleUpDelay", reason: "value must be greater than or equal to 0", } + if !all { + return err + } + errors = append(errors, err) } } + if len(errors) > 0 { + return UpdateAutoScalingOptionRequestMultiError(errors) + } + return nil } +// UpdateAutoScalingOptionRequestMultiError is an error wrapping multiple +// validation errors returned by UpdateAutoScalingOptionRequest.ValidateAll() +// if the designated constraints aren't met. +type UpdateAutoScalingOptionRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateAutoScalingOptionRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateAutoScalingOptionRequestMultiError) AllErrors() []error { return m } + // UpdateAutoScalingOptionRequestValidationError is the validation error // returned by UpdateAutoScalingOptionRequest.Validate if the designated // constraints aren't met. @@ -22529,19 +36892,52 @@ var _UpdateAutoScalingOptionRequest_Expander_InLookup = map[string]struct{}{ // Validate checks the field values on UpdateAutoScalingOptionResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateAutoScalingOptionResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateAutoScalingOptionResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// UpdateAutoScalingOptionResponseMultiError, or nil if none found. +func (m *UpdateAutoScalingOptionResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateAutoScalingOptionResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateAutoScalingOptionResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateAutoScalingOptionResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateAutoScalingOptionResponseValidationError{ field: "Data", @@ -22551,7 +36947,26 @@ func (m *UpdateAutoScalingOptionResponse) Validate() error { } } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateAutoScalingOptionResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateAutoScalingOptionResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateAutoScalingOptionResponseValidationError{ field: "WebAnnotations", @@ -22561,9 +36976,30 @@ func (m *UpdateAutoScalingOptionResponse) Validate() error { } } + if len(errors) > 0 { + return UpdateAutoScalingOptionResponseMultiError(errors) + } + return nil } +// UpdateAutoScalingOptionResponseMultiError is an error wrapping multiple +// validation errors returned by UpdateAutoScalingOptionResponse.ValidateAll() +// if the designated constraints aren't met. +type UpdateAutoScalingOptionResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateAutoScalingOptionResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateAutoScalingOptionResponseMultiError) AllErrors() []error { return m } + // UpdateAutoScalingOptionResponseValidationError is the validation error // returned by UpdateAutoScalingOptionResponse.Validate if the designated // constraints aren't met. @@ -22623,47 +37059,81 @@ var _ interface { // Validate checks the field values on SyncAutoScalingOptionRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *SyncAutoScalingOptionRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on SyncAutoScalingOptionRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// SyncAutoScalingOptionRequestMultiError, or nil if none found. +func (m *SyncAutoScalingOptionRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *SyncAutoScalingOptionRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for IsScaleDownEnable if _, ok := _SyncAutoScalingOptionRequest_Expander_InLookup[m.GetExpander()]; !ok { - return SyncAutoScalingOptionRequestValidationError{ + err := SyncAutoScalingOptionRequestValidationError{ field: "Expander", reason: "value must be in list [random least-waste most-pods priority]", } + if !all { + return err + } + errors = append(errors, err) } if val := m.GetMaxEmptyBulkDelete(); val < 1 || val > 100 { - return SyncAutoScalingOptionRequestValidationError{ + err := SyncAutoScalingOptionRequestValidationError{ field: "MaxEmptyBulkDelete", reason: "value must be inside range [1, 100]", } + if !all { + return err + } + errors = append(errors, err) } if val := m.GetScaleDownDelay(); val < 60 || val > 86400 { - return SyncAutoScalingOptionRequestValidationError{ + err := SyncAutoScalingOptionRequestValidationError{ field: "ScaleDownDelay", reason: "value must be inside range [60, 86400]", } + if !all { + return err + } + errors = append(errors, err) } if val := m.GetScaleDownUnneededTime(); val < 60 || val > 86400 { - return SyncAutoScalingOptionRequestValidationError{ + err := SyncAutoScalingOptionRequestValidationError{ field: "ScaleDownUnneededTime", reason: "value must be inside range [60, 86400]", } + if !all { + return err + } + errors = append(errors, err) } if val := m.GetScaleDownUtilizationThreahold(); val < 0 || val > 80 { - return SyncAutoScalingOptionRequestValidationError{ + err := SyncAutoScalingOptionRequestValidationError{ field: "ScaleDownUtilizationThreahold", reason: "value must be inside range [0, 80]", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for SkipNodesWithLocalStorage @@ -22673,85 +37143,148 @@ func (m *SyncAutoScalingOptionRequest) Validate() error { // no validation rules for IgnoreDaemonSetsUtilization if val := m.GetOkTotalUnreadyCount(); val < 0 || val > 320000 { - return SyncAutoScalingOptionRequestValidationError{ + err := SyncAutoScalingOptionRequestValidationError{ field: "OkTotalUnreadyCount", reason: "value must be inside range [0, 320000]", } + if !all { + return err + } + errors = append(errors, err) } if val := m.GetMaxTotalUnreadyPercentage(); val < 0 || val > 100 { - return SyncAutoScalingOptionRequestValidationError{ + err := SyncAutoScalingOptionRequestValidationError{ field: "MaxTotalUnreadyPercentage", reason: "value must be inside range [0, 100]", } + if !all { + return err + } + errors = append(errors, err) } if val := m.GetScaleDownUnreadyTime(); val < 1200 || val > 86400 { - return SyncAutoScalingOptionRequestValidationError{ + err := SyncAutoScalingOptionRequestValidationError{ field: "ScaleDownUnreadyTime", reason: "value must be inside range [1200, 86400]", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetClusterID()) > 100 { - return SyncAutoScalingOptionRequestValidationError{ + err := SyncAutoScalingOptionRequestValidationError{ field: "ClusterID", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetUpdater()); l < 2 || l > 20 { - return SyncAutoScalingOptionRequestValidationError{ + err := SyncAutoScalingOptionRequestValidationError{ field: "Updater", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for ScaleDownGpuUtilizationThreshold if val := m.GetBufferResourceRatio(); val < 0 || val > 100 { - return SyncAutoScalingOptionRequestValidationError{ + err := SyncAutoScalingOptionRequestValidationError{ field: "BufferResourceRatio", reason: "value must be inside range [0, 100]", } + if !all { + return err + } + errors = append(errors, err) } if val := m.GetMaxGracefulTerminationSec(); val < 60 || val > 86400 { - return SyncAutoScalingOptionRequestValidationError{ + err := SyncAutoScalingOptionRequestValidationError{ field: "MaxGracefulTerminationSec", reason: "value must be inside range [60, 86400]", } + if !all { + return err + } + errors = append(errors, err) } if val := m.GetScanInterval(); val < 5 || val > 86400 { - return SyncAutoScalingOptionRequestValidationError{ + err := SyncAutoScalingOptionRequestValidationError{ field: "ScanInterval", reason: "value must be inside range [5, 86400]", } + if !all { + return err + } + errors = append(errors, err) } if val := m.GetMaxNodeProvisionTime(); val < 900 || val > 86400 { - return SyncAutoScalingOptionRequestValidationError{ + err := SyncAutoScalingOptionRequestValidationError{ field: "MaxNodeProvisionTime", reason: "value must be inside range [900, 86400]", } + if !all { + return err + } + errors = append(errors, err) } if val := m.GetMaxNodeStartupTime(); val < 900 || val > 86400 { - return SyncAutoScalingOptionRequestValidationError{ + err := SyncAutoScalingOptionRequestValidationError{ field: "MaxNodeStartupTime", reason: "value must be inside range [900, 86400]", } + if !all { + return err + } + errors = append(errors, err) } if val := m.GetMaxNodeStartScheduleTime(); val < 900 || val > 86400 { - return SyncAutoScalingOptionRequestValidationError{ + err := SyncAutoScalingOptionRequestValidationError{ field: "MaxNodeStartScheduleTime", reason: "value must be inside range [900, 86400]", } + if !all { + return err + } + errors = append(errors, err) } - if v, ok := interface{}(m.GetScaleUpFromZero()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetScaleUpFromZero()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, SyncAutoScalingOptionRequestValidationError{ + field: "ScaleUpFromZero", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, SyncAutoScalingOptionRequestValidationError{ + field: "ScaleUpFromZero", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetScaleUpFromZero()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return SyncAutoScalingOptionRequestValidationError{ field: "ScaleUpFromZero", @@ -22762,45 +37295,84 @@ func (m *SyncAutoScalingOptionRequest) Validate() error { } if val := m.GetScaleDownDelayAfterAdd(); val < 1200 || val > 86400 { - return SyncAutoScalingOptionRequestValidationError{ + err := SyncAutoScalingOptionRequestValidationError{ field: "ScaleDownDelayAfterAdd", reason: "value must be inside range [1200, 86400]", } + if !all { + return err + } + errors = append(errors, err) } if val := m.GetScaleDownDelayAfterDelete(); val < 0 || val > 86400 { - return SyncAutoScalingOptionRequestValidationError{ + err := SyncAutoScalingOptionRequestValidationError{ field: "ScaleDownDelayAfterDelete", reason: "value must be inside range [0, 86400]", } + if !all { + return err + } + errors = append(errors, err) } if wrapper := m.GetScaleDownDelayAfterFailure(); wrapper != nil { if val := wrapper.GetValue(); val < 60 || val > 86400 { - return SyncAutoScalingOptionRequestValidationError{ + err := SyncAutoScalingOptionRequestValidationError{ field: "ScaleDownDelayAfterFailure", reason: "value must be inside range [60, 86400]", } + if !all { + return err + } + errors = append(errors, err) } } if val := m.GetBufferResourceCpuRatio(); val < 0 || val > 100 { - return SyncAutoScalingOptionRequestValidationError{ + err := SyncAutoScalingOptionRequestValidationError{ field: "BufferResourceCpuRatio", reason: "value must be inside range [0, 100]", } + if !all { + return err + } + errors = append(errors, err) } if val := m.GetBufferResourceMemRatio(); val < 0 || val > 100 { - return SyncAutoScalingOptionRequestValidationError{ + err := SyncAutoScalingOptionRequestValidationError{ field: "BufferResourceMemRatio", reason: "value must be inside range [0, 100]", } + if !all { + return err + } + errors = append(errors, err) } - if v, ok := interface{}(m.GetWebhook()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebhook()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, SyncAutoScalingOptionRequestValidationError{ + field: "Webhook", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, SyncAutoScalingOptionRequestValidationError{ + field: "Webhook", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebhook()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return SyncAutoScalingOptionRequestValidationError{ field: "Webhook", @@ -22810,7 +37382,26 @@ func (m *SyncAutoScalingOptionRequest) Validate() error { } } - if v, ok := interface{}(m.GetExpendablePodsPriorityCutoff()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetExpendablePodsPriorityCutoff()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, SyncAutoScalingOptionRequestValidationError{ + field: "ExpendablePodsPriorityCutoff", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, SyncAutoScalingOptionRequestValidationError{ + field: "ExpendablePodsPriorityCutoff", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetExpendablePodsPriorityCutoff()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return SyncAutoScalingOptionRequestValidationError{ field: "ExpendablePodsPriorityCutoff", @@ -22823,17 +37414,42 @@ func (m *SyncAutoScalingOptionRequest) Validate() error { if wrapper := m.GetNewPodScaleUpDelay(); wrapper != nil { if wrapper.GetValue() < 0 { - return SyncAutoScalingOptionRequestValidationError{ + err := SyncAutoScalingOptionRequestValidationError{ field: "NewPodScaleUpDelay", reason: "value must be greater than or equal to 0", } + if !all { + return err + } + errors = append(errors, err) } } + if len(errors) > 0 { + return SyncAutoScalingOptionRequestMultiError(errors) + } + return nil } +// SyncAutoScalingOptionRequestMultiError is an error wrapping multiple +// validation errors returned by SyncAutoScalingOptionRequest.ValidateAll() if +// the designated constraints aren't met. +type SyncAutoScalingOptionRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m SyncAutoScalingOptionRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m SyncAutoScalingOptionRequestMultiError) AllErrors() []error { return m } + // SyncAutoScalingOptionRequestValidationError is the validation error returned // by SyncAutoScalingOptionRequest.Validate if the designated constraints // aren't met. @@ -22900,19 +37516,52 @@ var _SyncAutoScalingOptionRequest_Expander_InLookup = map[string]struct{}{ // Validate checks the field values on SyncAutoScalingOptionResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *SyncAutoScalingOptionResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on SyncAutoScalingOptionResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// SyncAutoScalingOptionResponseMultiError, or nil if none found. +func (m *SyncAutoScalingOptionResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *SyncAutoScalingOptionResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, SyncAutoScalingOptionResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, SyncAutoScalingOptionResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return SyncAutoScalingOptionResponseValidationError{ field: "Data", @@ -22922,7 +37571,26 @@ func (m *SyncAutoScalingOptionResponse) Validate() error { } } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, SyncAutoScalingOptionResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, SyncAutoScalingOptionResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return SyncAutoScalingOptionResponseValidationError{ field: "WebAnnotations", @@ -22932,9 +37600,30 @@ func (m *SyncAutoScalingOptionResponse) Validate() error { } } + if len(errors) > 0 { + return SyncAutoScalingOptionResponseMultiError(errors) + } + return nil } +// SyncAutoScalingOptionResponseMultiError is an error wrapping multiple +// validation errors returned by SyncAutoScalingOptionResponse.ValidateAll() +// if the designated constraints aren't met. +type SyncAutoScalingOptionResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m SyncAutoScalingOptionResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m SyncAutoScalingOptionResponseMultiError) AllErrors() []error { return m } + // SyncAutoScalingOptionResponseValidationError is the validation error // returned by SyncAutoScalingOptionResponse.Validate if the designated // constraints aren't met. @@ -22994,38 +37683,85 @@ var _ interface { // Validate checks the field values on DeleteAutoScalingOptionRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DeleteAutoScalingOptionRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteAutoScalingOptionRequest with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// DeleteAutoScalingOptionRequestMultiError, or nil if none found. +func (m *DeleteAutoScalingOptionRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteAutoScalingOptionRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetClusterID()); l < 2 || l > 100 { - return DeleteAutoScalingOptionRequestValidationError{ + err := DeleteAutoScalingOptionRequestValidationError{ field: "ClusterID", reason: "value length must be between 2 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - return DeleteAutoScalingOptionRequestValidationError{ + err := DeleteAutoScalingOptionRequestValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } + if !all { + return err + } + errors = append(errors, err) } if !_DeleteAutoScalingOptionRequest_ClusterID_Pattern.MatchString(m.GetClusterID()) { - return DeleteAutoScalingOptionRequestValidationError{ + err := DeleteAutoScalingOptionRequestValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for IsForce + if len(errors) > 0 { + return DeleteAutoScalingOptionRequestMultiError(errors) + } + return nil } +// DeleteAutoScalingOptionRequestMultiError is an error wrapping multiple +// validation errors returned by DeleteAutoScalingOptionRequest.ValidateAll() +// if the designated constraints aren't met. +type DeleteAutoScalingOptionRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteAutoScalingOptionRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteAutoScalingOptionRequestMultiError) AllErrors() []error { return m } + // DeleteAutoScalingOptionRequestValidationError is the validation error // returned by DeleteAutoScalingOptionRequest.Validate if the designated // constraints aren't met. @@ -23087,19 +37823,52 @@ var _DeleteAutoScalingOptionRequest_ClusterID_Pattern = regexp.MustCompile("^[0- // Validate checks the field values on DeleteAutoScalingOptionResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DeleteAutoScalingOptionResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteAutoScalingOptionResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// DeleteAutoScalingOptionResponseMultiError, or nil if none found. +func (m *DeleteAutoScalingOptionResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteAutoScalingOptionResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DeleteAutoScalingOptionResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DeleteAutoScalingOptionResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteAutoScalingOptionResponseValidationError{ field: "Data", @@ -23109,7 +37878,26 @@ func (m *DeleteAutoScalingOptionResponse) Validate() error { } } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DeleteAutoScalingOptionResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DeleteAutoScalingOptionResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteAutoScalingOptionResponseValidationError{ field: "WebAnnotations", @@ -23119,9 +37907,30 @@ func (m *DeleteAutoScalingOptionResponse) Validate() error { } } + if len(errors) > 0 { + return DeleteAutoScalingOptionResponseMultiError(errors) + } + return nil } +// DeleteAutoScalingOptionResponseMultiError is an error wrapping multiple +// validation errors returned by DeleteAutoScalingOptionResponse.ValidateAll() +// if the designated constraints aren't met. +type DeleteAutoScalingOptionResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteAutoScalingOptionResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteAutoScalingOptionResponseMultiError) AllErrors() []error { return m } + // DeleteAutoScalingOptionResponseValidationError is the validation error // returned by DeleteAutoScalingOptionResponse.Validate if the designated // constraints aren't met. @@ -23181,38 +37990,85 @@ var _ interface { // Validate checks the field values on GetAutoScalingOptionRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetAutoScalingOptionRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetAutoScalingOptionRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetAutoScalingOptionRequestMultiError, or nil if none found. +func (m *GetAutoScalingOptionRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetAutoScalingOptionRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetClusterID()); l < 2 || l > 100 { - return GetAutoScalingOptionRequestValidationError{ + err := GetAutoScalingOptionRequestValidationError{ field: "ClusterID", reason: "value length must be between 2 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - return GetAutoScalingOptionRequestValidationError{ + err := GetAutoScalingOptionRequestValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } + if !all { + return err + } + errors = append(errors, err) } if !_GetAutoScalingOptionRequest_ClusterID_Pattern.MatchString(m.GetClusterID()) { - return GetAutoScalingOptionRequestValidationError{ + err := GetAutoScalingOptionRequestValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Provider + if len(errors) > 0 { + return GetAutoScalingOptionRequestMultiError(errors) + } + return nil } +// GetAutoScalingOptionRequestMultiError is an error wrapping multiple +// validation errors returned by GetAutoScalingOptionRequest.ValidateAll() if +// the designated constraints aren't met. +type GetAutoScalingOptionRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetAutoScalingOptionRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetAutoScalingOptionRequestMultiError) AllErrors() []error { return m } + // GetAutoScalingOptionRequestValidationError is the validation error returned // by GetAutoScalingOptionRequest.Validate if the designated constraints // aren't met. @@ -23274,19 +38130,52 @@ var _GetAutoScalingOptionRequest_ClusterID_Pattern = regexp.MustCompile("^[0-9a- // Validate checks the field values on GetAutoScalingOptionResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetAutoScalingOptionResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetAutoScalingOptionResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetAutoScalingOptionResponseMultiError, or nil if none found. +func (m *GetAutoScalingOptionResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetAutoScalingOptionResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetAutoScalingOptionResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetAutoScalingOptionResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetAutoScalingOptionResponseValidationError{ field: "Data", @@ -23296,7 +38185,26 @@ func (m *GetAutoScalingOptionResponse) Validate() error { } } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetAutoScalingOptionResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetAutoScalingOptionResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetAutoScalingOptionResponseValidationError{ field: "WebAnnotations", @@ -23306,9 +38214,30 @@ func (m *GetAutoScalingOptionResponse) Validate() error { } } + if len(errors) > 0 { + return GetAutoScalingOptionResponseMultiError(errors) + } + return nil } +// GetAutoScalingOptionResponseMultiError is an error wrapping multiple +// validation errors returned by GetAutoScalingOptionResponse.ValidateAll() if +// the designated constraints aren't met. +type GetAutoScalingOptionResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetAutoScalingOptionResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetAutoScalingOptionResponseMultiError) AllErrors() []error { return m } + // GetAutoScalingOptionResponseValidationError is the validation error returned // by GetAutoScalingOptionResponse.Validate if the designated constraints // aren't met. @@ -23368,43 +38297,94 @@ var _ interface { // Validate checks the field values on ListAutoScalingOptionRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListAutoScalingOptionRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListAutoScalingOptionRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListAutoScalingOptionRequestMultiError, or nil if none found. +func (m *ListAutoScalingOptionRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListAutoScalingOptionRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetClusterID()) > 100 { - return ListAutoScalingOptionRequestValidationError{ + err := ListAutoScalingOptionRequestValidationError{ field: "ClusterID", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetProjectID()) > 32 { - return ListAutoScalingOptionRequestValidationError{ + err := ListAutoScalingOptionRequestValidationError{ field: "ProjectID", reason: "value length must be at most 32 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetCreator()) > 20 { - return ListAutoScalingOptionRequestValidationError{ + err := ListAutoScalingOptionRequestValidationError{ field: "Creator", reason: "value length must be at most 20 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetUpdater()) > 20 { - return ListAutoScalingOptionRequestValidationError{ + err := ListAutoScalingOptionRequestValidationError{ field: "Updater", reason: "value length must be at most 20 runes", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return ListAutoScalingOptionRequestMultiError(errors) } return nil } +// ListAutoScalingOptionRequestMultiError is an error wrapping multiple +// validation errors returned by ListAutoScalingOptionRequest.ValidateAll() if +// the designated constraints aren't met. +type ListAutoScalingOptionRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListAutoScalingOptionRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListAutoScalingOptionRequestMultiError) AllErrors() []error { return m } + // ListAutoScalingOptionRequestValidationError is the validation error returned // by ListAutoScalingOptionRequest.Validate if the designated constraints // aren't met. @@ -23464,12 +38444,26 @@ var _ interface { // Validate checks the field values on ListAutoScalingOptionResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListAutoScalingOptionResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListAutoScalingOptionResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// ListAutoScalingOptionResponseMultiError, or nil if none found. +func (m *ListAutoScalingOptionResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListAutoScalingOptionResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -23479,7 +38473,26 @@ func (m *ListAutoScalingOptionResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListAutoScalingOptionResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListAutoScalingOptionResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListAutoScalingOptionResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -23491,9 +38504,30 @@ func (m *ListAutoScalingOptionResponse) Validate() error { } + if len(errors) > 0 { + return ListAutoScalingOptionResponseMultiError(errors) + } + return nil } +// ListAutoScalingOptionResponseMultiError is an error wrapping multiple +// validation errors returned by ListAutoScalingOptionResponse.ValidateAll() +// if the designated constraints aren't met. +type ListAutoScalingOptionResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListAutoScalingOptionResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListAutoScalingOptionResponseMultiError) AllErrors() []error { return m } + // ListAutoScalingOptionResponseValidationError is the validation error // returned by ListAutoScalingOptionResponse.Validate if the designated // constraints aren't met. @@ -23553,33 +38587,76 @@ var _ interface { // Validate checks the field values on UpdateAutoScalingStatusRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateAutoScalingStatusRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateAutoScalingStatusRequest with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// UpdateAutoScalingStatusRequestMultiError, or nil if none found. +func (m *UpdateAutoScalingStatusRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateAutoScalingStatusRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Enable if utf8.RuneCountInString(m.GetClusterID()) > 100 { - return UpdateAutoScalingStatusRequestValidationError{ + err := UpdateAutoScalingStatusRequestValidationError{ field: "ClusterID", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetUpdater()); l < 2 || l > 20 { - return UpdateAutoScalingStatusRequestValidationError{ + err := UpdateAutoScalingStatusRequestValidationError{ field: "Updater", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Provider + if len(errors) > 0 { + return UpdateAutoScalingStatusRequestMultiError(errors) + } + return nil } +// UpdateAutoScalingStatusRequestMultiError is an error wrapping multiple +// validation errors returned by UpdateAutoScalingStatusRequest.ValidateAll() +// if the designated constraints aren't met. +type UpdateAutoScalingStatusRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateAutoScalingStatusRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateAutoScalingStatusRequestMultiError) AllErrors() []error { return m } + // UpdateAutoScalingStatusRequestValidationError is the validation error // returned by UpdateAutoScalingStatusRequest.Validate if the designated // constraints aren't met. @@ -23639,19 +38716,52 @@ var _ interface { // Validate checks the field values on UpdateAutoScalingStatusResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateAutoScalingStatusResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateAutoScalingStatusResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// UpdateAutoScalingStatusResponseMultiError, or nil if none found. +func (m *UpdateAutoScalingStatusResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateAutoScalingStatusResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateAutoScalingStatusResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateAutoScalingStatusResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateAutoScalingStatusResponseValidationError{ field: "Data", @@ -23661,7 +38771,26 @@ func (m *UpdateAutoScalingStatusResponse) Validate() error { } } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateAutoScalingStatusResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateAutoScalingStatusResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateAutoScalingStatusResponseValidationError{ field: "WebAnnotations", @@ -23671,9 +38800,30 @@ func (m *UpdateAutoScalingStatusResponse) Validate() error { } } + if len(errors) > 0 { + return UpdateAutoScalingStatusResponseMultiError(errors) + } + return nil } +// UpdateAutoScalingStatusResponseMultiError is an error wrapping multiple +// validation errors returned by UpdateAutoScalingStatusResponse.ValidateAll() +// if the designated constraints aren't met. +type UpdateAutoScalingStatusResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateAutoScalingStatusResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateAutoScalingStatusResponseMultiError) AllErrors() []error { return m } + // UpdateAutoScalingStatusResponseValidationError is the validation error // returned by UpdateAutoScalingStatusResponse.Validate if the designated // constraints aren't met. @@ -23732,21 +38882,56 @@ var _ interface { } = UpdateAutoScalingStatusResponseValidationError{} // Validate checks the field values on RegionInfo with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *RegionInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on RegionInfo with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in RegionInfoMultiError, or +// nil if none found. +func (m *RegionInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *RegionInfo) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Region // no validation rules for RegionName // no validation rules for RegionState + if len(errors) > 0 { + return RegionInfoMultiError(errors) + } + return nil } +// RegionInfoMultiError is an error wrapping multiple validation errors +// returned by RegionInfo.ValidateAll() if the designated constraints aren't met. +type RegionInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m RegionInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m RegionInfoMultiError) AllErrors() []error { return m } + // RegionInfoValidationError is the validation error returned by // RegionInfo.Validate if the designated constraints aren't met. type RegionInfoValidationError struct { @@ -23803,29 +38988,72 @@ var _ interface { // Validate checks the field values on GetCloudRegionsRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetCloudRegionsRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetCloudRegionsRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetCloudRegionsRequestMultiError, or nil if none found. +func (m *GetCloudRegionsRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetCloudRegionsRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetCloudID()) < 2 { - return GetCloudRegionsRequestValidationError{ + err := GetCloudRegionsRequestValidationError{ field: "CloudID", reason: "value length must be at least 2 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetAccountID()) < 2 { - return GetCloudRegionsRequestValidationError{ + err := GetCloudRegionsRequestValidationError{ field: "AccountID", reason: "value length must be at least 2 runes", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return GetCloudRegionsRequestMultiError(errors) } return nil } +// GetCloudRegionsRequestMultiError is an error wrapping multiple validation +// errors returned by GetCloudRegionsRequest.ValidateAll() if the designated +// constraints aren't met. +type GetCloudRegionsRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetCloudRegionsRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetCloudRegionsRequestMultiError) AllErrors() []error { return m } + // GetCloudRegionsRequestValidationError is the validation error returned by // GetCloudRegionsRequest.Validate if the designated constraints aren't met. type GetCloudRegionsRequestValidationError struct { @@ -23884,12 +39112,26 @@ var _ interface { // Validate checks the field values on GetCloudRegionsResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetCloudRegionsResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetCloudRegionsResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetCloudRegionsResponseMultiError, or nil if none found. +func (m *GetCloudRegionsResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetCloudRegionsResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -23899,7 +39141,26 @@ func (m *GetCloudRegionsResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetCloudRegionsResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetCloudRegionsResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetCloudRegionsResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -23911,9 +39172,30 @@ func (m *GetCloudRegionsResponse) Validate() error { } + if len(errors) > 0 { + return GetCloudRegionsResponseMultiError(errors) + } + return nil } +// GetCloudRegionsResponseMultiError is an error wrapping multiple validation +// errors returned by GetCloudRegionsResponse.ValidateAll() if the designated +// constraints aren't met. +type GetCloudRegionsResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetCloudRegionsResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetCloudRegionsResponseMultiError) AllErrors() []error { return m } + // GetCloudRegionsResponseValidationError is the validation error returned by // GetCloudRegionsResponse.Validate if the designated constraints aren't met. type GetCloudRegionsResponseValidationError struct { @@ -23971,12 +39253,27 @@ var _ interface { } = GetCloudRegionsResponseValidationError{} // Validate checks the field values on ZoneInfo with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *ZoneInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ZoneInfo with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in ZoneInfoMultiError, or nil +// if none found. +func (m *ZoneInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *ZoneInfo) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ZoneID // no validation rules for Zone @@ -23985,9 +39282,29 @@ func (m *ZoneInfo) Validate() error { // no validation rules for ZoneState + if len(errors) > 0 { + return ZoneInfoMultiError(errors) + } + return nil } +// ZoneInfoMultiError is an error wrapping multiple validation errors returned +// by ZoneInfo.ValidateAll() if the designated constraints aren't met. +type ZoneInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ZoneInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ZoneInfoMultiError) AllErrors() []error { return m } + // ZoneInfoValidationError is the validation error returned by // ZoneInfo.Validate if the designated constraints aren't met. type ZoneInfoValidationError struct { @@ -24043,13 +39360,27 @@ var _ interface { } = ZoneInfoValidationError{} // Validate checks the field values on CloudClusterInfo with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *CloudClusterInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CloudClusterInfo with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CloudClusterInfoMultiError, or nil if none found. +func (m *CloudClusterInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *CloudClusterInfo) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ClusterID // no validation rules for ClusterName @@ -24064,9 +39395,30 @@ func (m *CloudClusterInfo) Validate() error { // no validation rules for ClusterStatus + if len(errors) > 0 { + return CloudClusterInfoMultiError(errors) + } + return nil } +// CloudClusterInfoMultiError is an error wrapping multiple validation errors +// returned by CloudClusterInfo.ValidateAll() if the designated constraints +// aren't met. +type CloudClusterInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CloudClusterInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CloudClusterInfoMultiError) AllErrors() []error { return m } + // CloudClusterInfoValidationError is the validation error returned by // CloudClusterInfo.Validate if the designated constraints aren't met. type CloudClusterInfoValidationError struct { @@ -24123,36 +39475,83 @@ var _ interface { // Validate checks the field values on ListCloudRegionClusterRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCloudRegionClusterRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudRegionClusterRequest with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// ListCloudRegionClusterRequestMultiError, or nil if none found. +func (m *ListCloudRegionClusterRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudRegionClusterRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetCloudID()) < 2 { - return ListCloudRegionClusterRequestValidationError{ + err := ListCloudRegionClusterRequestValidationError{ field: "CloudID", reason: "value length must be at least 2 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetRegion()) < 2 { - return ListCloudRegionClusterRequestValidationError{ + err := ListCloudRegionClusterRequestValidationError{ field: "Region", reason: "value length must be at least 2 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetAccountID()) < 2 { - return ListCloudRegionClusterRequestValidationError{ + err := ListCloudRegionClusterRequestValidationError{ field: "AccountID", reason: "value length must be at least 2 runes", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return ListCloudRegionClusterRequestMultiError(errors) } return nil } +// ListCloudRegionClusterRequestMultiError is an error wrapping multiple +// validation errors returned by ListCloudRegionClusterRequest.ValidateAll() +// if the designated constraints aren't met. +type ListCloudRegionClusterRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudRegionClusterRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudRegionClusterRequestMultiError) AllErrors() []error { return m } + // ListCloudRegionClusterRequestValidationError is the validation error // returned by ListCloudRegionClusterRequest.Validate if the designated // constraints aren't met. @@ -24212,12 +39611,26 @@ var _ interface { // Validate checks the field values on ListCloudRegionClusterResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCloudRegionClusterResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudRegionClusterResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// ListCloudRegionClusterResponseMultiError, or nil if none found. +func (m *ListCloudRegionClusterResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudRegionClusterResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -24227,7 +39640,26 @@ func (m *ListCloudRegionClusterResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListCloudRegionClusterResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListCloudRegionClusterResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCloudRegionClusterResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -24239,9 +39671,30 @@ func (m *ListCloudRegionClusterResponse) Validate() error { } + if len(errors) > 0 { + return ListCloudRegionClusterResponseMultiError(errors) + } + return nil } +// ListCloudRegionClusterResponseMultiError is an error wrapping multiple +// validation errors returned by ListCloudRegionClusterResponse.ValidateAll() +// if the designated constraints aren't met. +type ListCloudRegionClusterResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudRegionClusterResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudRegionClusterResponseMultiError) AllErrors() []error { return m } + // ListCloudRegionClusterResponseValidationError is the validation error // returned by ListCloudRegionClusterResponse.Validate if the designated // constraints aren't met. @@ -24301,26 +39754,65 @@ var _ interface { // Validate checks the field values on GetCloudRegionZonesRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetCloudRegionZonesRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetCloudRegionZonesRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetCloudRegionZonesRequestMultiError, or nil if none found. +func (m *GetCloudRegionZonesRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetCloudRegionZonesRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetCloudID()) < 2 { - return GetCloudRegionZonesRequestValidationError{ + err := GetCloudRegionZonesRequestValidationError{ field: "CloudID", reason: "value length must be at least 2 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Region // no validation rules for AccountID + if len(errors) > 0 { + return GetCloudRegionZonesRequestMultiError(errors) + } + return nil } +// GetCloudRegionZonesRequestMultiError is an error wrapping multiple +// validation errors returned by GetCloudRegionZonesRequest.ValidateAll() if +// the designated constraints aren't met. +type GetCloudRegionZonesRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetCloudRegionZonesRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetCloudRegionZonesRequestMultiError) AllErrors() []error { return m } + // GetCloudRegionZonesRequestValidationError is the validation error returned // by GetCloudRegionZonesRequest.Validate if the designated constraints aren't met. type GetCloudRegionZonesRequestValidationError struct { @@ -24379,12 +39871,26 @@ var _ interface { // Validate checks the field values on GetCloudRegionZonesResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetCloudRegionZonesResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetCloudRegionZonesResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetCloudRegionZonesResponseMultiError, or nil if none found. +func (m *GetCloudRegionZonesResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetCloudRegionZonesResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -24394,7 +39900,26 @@ func (m *GetCloudRegionZonesResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetCloudRegionZonesResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetCloudRegionZonesResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetCloudRegionZonesResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -24406,9 +39931,30 @@ func (m *GetCloudRegionZonesResponse) Validate() error { } + if len(errors) > 0 { + return GetCloudRegionZonesResponseMultiError(errors) + } + return nil } +// GetCloudRegionZonesResponseMultiError is an error wrapping multiple +// validation errors returned by GetCloudRegionZonesResponse.ValidateAll() if +// the designated constraints aren't met. +type GetCloudRegionZonesResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetCloudRegionZonesResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetCloudRegionZonesResponseMultiError) AllErrors() []error { return m } + // GetCloudRegionZonesResponseValidationError is the validation error returned // by GetCloudRegionZonesResponse.Validate if the designated constraints // aren't met. @@ -24467,17 +40013,33 @@ var _ interface { } = GetCloudRegionZonesResponseValidationError{} // Validate checks the field values on OperationLog with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *OperationLog) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on OperationLog with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in OperationLogMultiError, or +// nil if none found. +func (m *OperationLog) ValidateAll() error { + return m.validate(true) +} + +func (m *OperationLog) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ResourceType // no validation rules for ResourceID + // no validation rules for ResourceName + // no validation rules for TaskID // no validation rules for Message @@ -24490,9 +40052,29 @@ func (m *OperationLog) Validate() error { // no validation rules for ProjectID + if len(errors) > 0 { + return OperationLogMultiError(errors) + } + return nil } +// OperationLogMultiError is an error wrapping multiple validation errors +// returned by OperationLog.ValidateAll() if the designated constraints aren't met. +type OperationLogMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m OperationLogMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m OperationLogMultiError) AllErrors() []error { return m } + // OperationLogValidationError is the validation error returned by // OperationLog.Validate if the designated constraints aren't met. type OperationLogValidationError struct { @@ -24548,17 +40130,33 @@ var _ interface { } = OperationLogValidationError{} // Validate checks the field values on TaskOperationLog with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *TaskOperationLog) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on TaskOperationLog with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// TaskOperationLogMultiError, or nil if none found. +func (m *TaskOperationLog) ValidateAll() error { + return m.validate(true) +} + +func (m *TaskOperationLog) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ResourceType // no validation rules for ResourceID + // no validation rules for ResourceName + // no validation rules for TaskID // no validation rules for Message @@ -24575,9 +40173,30 @@ func (m *TaskOperationLog) Validate() error { // no validation rules for TaskType + if len(errors) > 0 { + return TaskOperationLogMultiError(errors) + } + return nil } +// TaskOperationLogMultiError is an error wrapping multiple validation errors +// returned by TaskOperationLog.ValidateAll() if the designated constraints +// aren't met. +type TaskOperationLogMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m TaskOperationLogMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m TaskOperationLogMultiError) AllErrors() []error { return m } + // TaskOperationLogValidationError is the validation error returned by // TaskOperationLog.Validate if the designated constraints aren't met. type TaskOperationLogValidationError struct { @@ -24634,17 +40253,35 @@ var _ interface { // Validate checks the field values on ListCloudInstanceTypeRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCloudInstanceTypeRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudInstanceTypeRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListCloudInstanceTypeRequestMultiError, or nil if none found. +func (m *ListCloudInstanceTypeRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudInstanceTypeRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetCloudID()) < 2 { - return ListCloudInstanceTypeRequestValidationError{ + err := ListCloudInstanceTypeRequestValidationError{ field: "CloudID", reason: "value length must be at least 2 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Region @@ -24652,17 +40289,25 @@ func (m *ListCloudInstanceTypeRequest) Validate() error { // no validation rules for AccountID if utf8.RuneCountInString(m.GetZone()) > 32 { - return ListCloudInstanceTypeRequestValidationError{ + err := ListCloudInstanceTypeRequestValidationError{ field: "Zone", reason: "value length must be at most 32 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetNodeFamily()) > 32 { - return ListCloudInstanceTypeRequestValidationError{ + err := ListCloudInstanceTypeRequestValidationError{ field: "NodeFamily", reason: "value length must be at most 32 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Cpu @@ -24677,9 +40322,30 @@ func (m *ListCloudInstanceTypeRequest) Validate() error { // no validation rules for Provider + if len(errors) > 0 { + return ListCloudInstanceTypeRequestMultiError(errors) + } + return nil } +// ListCloudInstanceTypeRequestMultiError is an error wrapping multiple +// validation errors returned by ListCloudInstanceTypeRequest.ValidateAll() if +// the designated constraints aren't met. +type ListCloudInstanceTypeRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudInstanceTypeRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudInstanceTypeRequestMultiError) AllErrors() []error { return m } + // ListCloudInstanceTypeRequestValidationError is the validation error returned // by ListCloudInstanceTypeRequest.Validate if the designated constraints // aren't met. @@ -24739,12 +40405,26 @@ var _ interface { // Validate checks the field values on ListCloudInstanceTypeResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCloudInstanceTypeResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudInstanceTypeResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// ListCloudInstanceTypeResponseMultiError, or nil if none found. +func (m *ListCloudInstanceTypeResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudInstanceTypeResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -24754,7 +40434,26 @@ func (m *ListCloudInstanceTypeResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListCloudInstanceTypeResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListCloudInstanceTypeResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCloudInstanceTypeResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -24766,9 +40465,30 @@ func (m *ListCloudInstanceTypeResponse) Validate() error { } + if len(errors) > 0 { + return ListCloudInstanceTypeResponseMultiError(errors) + } + return nil } +// ListCloudInstanceTypeResponseMultiError is an error wrapping multiple +// validation errors returned by ListCloudInstanceTypeResponse.ValidateAll() +// if the designated constraints aren't met. +type ListCloudInstanceTypeResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudInstanceTypeResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudInstanceTypeResponseMultiError) AllErrors() []error { return m } + // ListCloudInstanceTypeResponseValidationError is the validation error // returned by ListCloudInstanceTypeResponse.Validate if the designated // constraints aren't met. @@ -24827,13 +40547,27 @@ var _ interface { } = ListCloudInstanceTypeResponseValidationError{} // Validate checks the field values on InstanceType with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *InstanceType) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on InstanceType with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in InstanceTypeMultiError, or +// nil if none found. +func (m *InstanceType) ValidateAll() error { + return m.validate(true) +} + +func (m *InstanceType) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for NodeType // no validation rules for TypeName @@ -24854,7 +40588,26 @@ func (m *InstanceType) Validate() error { // no validation rules for ResourcePoolID - if v, ok := interface{}(m.GetSystemDisk()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetSystemDisk()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, InstanceTypeValidationError{ + field: "SystemDisk", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, InstanceTypeValidationError{ + field: "SystemDisk", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetSystemDisk()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return InstanceTypeValidationError{ field: "SystemDisk", @@ -24867,7 +40620,26 @@ func (m *InstanceType) Validate() error { for idx, item := range m.GetDataDisks() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, InstanceTypeValidationError{ + field: fmt.Sprintf("DataDisks[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, InstanceTypeValidationError{ + field: fmt.Sprintf("DataDisks[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return InstanceTypeValidationError{ field: fmt.Sprintf("DataDisks[%v]", idx), @@ -24879,9 +40651,29 @@ func (m *InstanceType) Validate() error { } + if len(errors) > 0 { + return InstanceTypeMultiError(errors) + } + return nil } +// InstanceTypeMultiError is an error wrapping multiple validation errors +// returned by InstanceType.ValidateAll() if the designated constraints aren't met. +type InstanceTypeMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m InstanceTypeMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m InstanceTypeMultiError) AllErrors() []error { return m } + // InstanceTypeValidationError is the validation error returned by // InstanceType.Validate if the designated constraints aren't met. type InstanceTypeValidationError struct { @@ -24938,17 +40730,35 @@ var _ interface { // Validate checks the field values on ListCloudInstancesRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCloudInstancesRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudInstancesRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListCloudInstancesRequestMultiError, or nil if none found. +func (m *ListCloudInstancesRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudInstancesRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetCloudID()) < 2 { - return ListCloudInstancesRequestValidationError{ + err := ListCloudInstancesRequestValidationError{ field: "CloudID", reason: "value length must be at least 2 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Region @@ -24956,15 +40766,40 @@ func (m *ListCloudInstancesRequest) Validate() error { // no validation rules for AccountID if utf8.RuneCountInString(m.GetIpList()) < 1 { - return ListCloudInstancesRequestValidationError{ + err := ListCloudInstancesRequestValidationError{ field: "IpList", reason: "value length must be at least 1 runes", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return ListCloudInstancesRequestMultiError(errors) } return nil } +// ListCloudInstancesRequestMultiError is an error wrapping multiple validation +// errors returned by ListCloudInstancesRequest.ValidateAll() if the +// designated constraints aren't met. +type ListCloudInstancesRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudInstancesRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudInstancesRequestMultiError) AllErrors() []error { return m } + // ListCloudInstancesRequestValidationError is the validation error returned by // ListCloudInstancesRequest.Validate if the designated constraints aren't met. type ListCloudInstancesRequestValidationError struct { @@ -25023,12 +40858,26 @@ var _ interface { // Validate checks the field values on ListCloudInstancesResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCloudInstancesResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudInstancesResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListCloudInstancesResponseMultiError, or nil if none found. +func (m *ListCloudInstancesResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudInstancesResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -25038,7 +40887,26 @@ func (m *ListCloudInstancesResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListCloudInstancesResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListCloudInstancesResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCloudInstancesResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -25050,9 +40918,30 @@ func (m *ListCloudInstancesResponse) Validate() error { } + if len(errors) > 0 { + return ListCloudInstancesResponseMultiError(errors) + } + return nil } +// ListCloudInstancesResponseMultiError is an error wrapping multiple +// validation errors returned by ListCloudInstancesResponse.ValidateAll() if +// the designated constraints aren't met. +type ListCloudInstancesResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudInstancesResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudInstancesResponseMultiError) AllErrors() []error { return m } + // ListCloudInstancesResponseValidationError is the validation error returned // by ListCloudInstancesResponse.Validate if the designated constraints aren't met. type ListCloudInstancesResponseValidationError struct { @@ -25110,12 +40999,27 @@ var _ interface { } = ListCloudInstancesResponseValidationError{} // Validate checks the field values on CloudNode with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *CloudNode) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CloudNode with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in CloudNodeMultiError, or nil +// if none found. +func (m *CloudNode) ValidateAll() error { + return m.validate(true) +} + +func (m *CloudNode) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for NodeID // no validation rules for InnerIP @@ -25142,9 +41046,29 @@ func (m *CloudNode) Validate() error { // no validation rules for CloudRegionNode + if len(errors) > 0 { + return CloudNodeMultiError(errors) + } + return nil } +// CloudNodeMultiError is an error wrapping multiple validation errors returned +// by CloudNode.ValidateAll() if the designated constraints aren't met. +type CloudNodeMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CloudNodeMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CloudNodeMultiError) AllErrors() []error { return m } + // CloudNodeValidationError is the validation error returned by // CloudNode.Validate if the designated constraints aren't met. type CloudNodeValidationError struct { @@ -25201,26 +41125,65 @@ var _ interface { // Validate checks the field values on GetCloudAccountTypeRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetCloudAccountTypeRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetCloudAccountTypeRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetCloudAccountTypeRequestMultiError, or nil if none found. +func (m *GetCloudAccountTypeRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetCloudAccountTypeRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetCloudID()) < 2 { - return GetCloudAccountTypeRequestValidationError{ + err := GetCloudAccountTypeRequestValidationError{ field: "CloudID", reason: "value length must be at least 2 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Region // no validation rules for AccountID + if len(errors) > 0 { + return GetCloudAccountTypeRequestMultiError(errors) + } + return nil } +// GetCloudAccountTypeRequestMultiError is an error wrapping multiple +// validation errors returned by GetCloudAccountTypeRequest.ValidateAll() if +// the designated constraints aren't met. +type GetCloudAccountTypeRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetCloudAccountTypeRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetCloudAccountTypeRequestMultiError) AllErrors() []error { return m } + // GetCloudAccountTypeRequestValidationError is the validation error returned // by GetCloudAccountTypeRequest.Validate if the designated constraints aren't met. type GetCloudAccountTypeRequestValidationError struct { @@ -25279,19 +41242,52 @@ var _ interface { // Validate checks the field values on GetCloudAccountTypeResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetCloudAccountTypeResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetCloudAccountTypeResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetCloudAccountTypeResponseMultiError, or nil if none found. +func (m *GetCloudAccountTypeResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetCloudAccountTypeResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetCloudAccountTypeResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetCloudAccountTypeResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetCloudAccountTypeResponseValidationError{ field: "Data", @@ -25301,9 +41297,30 @@ func (m *GetCloudAccountTypeResponse) Validate() error { } } + if len(errors) > 0 { + return GetCloudAccountTypeResponseMultiError(errors) + } + return nil } +// GetCloudAccountTypeResponseMultiError is an error wrapping multiple +// validation errors returned by GetCloudAccountTypeResponse.ValidateAll() if +// the designated constraints aren't met. +type GetCloudAccountTypeResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetCloudAccountTypeResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetCloudAccountTypeResponseMultiError) AllErrors() []error { return m } + // GetCloudAccountTypeResponseValidationError is the validation error returned // by GetCloudAccountTypeResponse.Validate if the designated constraints // aren't met. @@ -25362,18 +41379,53 @@ var _ interface { } = GetCloudAccountTypeResponseValidationError{} // Validate checks the field values on CloudAccountType with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *CloudAccountType) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CloudAccountType with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CloudAccountTypeMultiError, or nil if none found. +func (m *CloudAccountType) ValidateAll() error { + return m.validate(true) +} + +func (m *CloudAccountType) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Type + if len(errors) > 0 { + return CloudAccountTypeMultiError(errors) + } + return nil } +// CloudAccountTypeMultiError is an error wrapping multiple validation errors +// returned by CloudAccountType.ValidateAll() if the designated constraints +// aren't met. +type CloudAccountTypeMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CloudAccountTypeMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CloudAccountTypeMultiError) AllErrors() []error { return m } + // CloudAccountTypeValidationError is the validation error returned by // CloudAccountType.Validate if the designated constraints aren't met. type CloudAccountTypeValidationError struct { @@ -25430,31 +41482,76 @@ var _ interface { // Validate checks the field values on GetCloudBandwidthPackagesRequest with // the rules defined in the proto definition for this message. If any rules -// are violated, an error is returned. +// are violated, the first error encountered is returned, or nil if there are +// no violations. func (m *GetCloudBandwidthPackagesRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetCloudBandwidthPackagesRequest with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// GetCloudBandwidthPackagesRequestMultiError, or nil if none found. +func (m *GetCloudBandwidthPackagesRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetCloudBandwidthPackagesRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetCloudID()) < 1 { - return GetCloudBandwidthPackagesRequestValidationError{ + err := GetCloudBandwidthPackagesRequestValidationError{ field: "CloudID", reason: "value length must be at least 1 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetRegion()) < 1 { - return GetCloudBandwidthPackagesRequestValidationError{ + err := GetCloudBandwidthPackagesRequestValidationError{ field: "Region", reason: "value length must be at least 1 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for AccountID + if len(errors) > 0 { + return GetCloudBandwidthPackagesRequestMultiError(errors) + } + return nil } +// GetCloudBandwidthPackagesRequestMultiError is an error wrapping multiple +// validation errors returned by +// GetCloudBandwidthPackagesRequest.ValidateAll() if the designated +// constraints aren't met. +type GetCloudBandwidthPackagesRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetCloudBandwidthPackagesRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetCloudBandwidthPackagesRequestMultiError) AllErrors() []error { return m } + // GetCloudBandwidthPackagesRequestValidationError is the validation error // returned by GetCloudBandwidthPackagesRequest.Validate if the designated // constraints aren't met. @@ -25514,12 +41611,27 @@ var _ interface { // Validate checks the field values on GetCloudBandwidthPackagesResponse with // the rules defined in the proto definition for this message. If any rules -// are violated, an error is returned. +// are violated, the first error encountered is returned, or nil if there are +// no violations. func (m *GetCloudBandwidthPackagesResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetCloudBandwidthPackagesResponse +// with the rules defined in the proto definition for this message. If any +// rules are violated, the result is a list of violation errors wrapped in +// GetCloudBandwidthPackagesResponseMultiError, or nil if none found. +func (m *GetCloudBandwidthPackagesResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetCloudBandwidthPackagesResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -25529,7 +41641,26 @@ func (m *GetCloudBandwidthPackagesResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetCloudBandwidthPackagesResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetCloudBandwidthPackagesResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetCloudBandwidthPackagesResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -25541,9 +41672,31 @@ func (m *GetCloudBandwidthPackagesResponse) Validate() error { } + if len(errors) > 0 { + return GetCloudBandwidthPackagesResponseMultiError(errors) + } + return nil } +// GetCloudBandwidthPackagesResponseMultiError is an error wrapping multiple +// validation errors returned by +// GetCloudBandwidthPackagesResponse.ValidateAll() if the designated +// constraints aren't met. +type GetCloudBandwidthPackagesResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetCloudBandwidthPackagesResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetCloudBandwidthPackagesResponseMultiError) AllErrors() []error { return m } + // GetCloudBandwidthPackagesResponseValidationError is the validation error // returned by GetCloudBandwidthPackagesResponse.Validate if the designated // constraints aren't met. @@ -25603,12 +41756,26 @@ var _ interface { // Validate checks the field values on BandwidthPackageInfo with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *BandwidthPackageInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on BandwidthPackageInfo with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// BandwidthPackageInfoMultiError, or nil if none found. +func (m *BandwidthPackageInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *BandwidthPackageInfo) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Id // no validation rules for Name @@ -25619,9 +41786,30 @@ func (m *BandwidthPackageInfo) Validate() error { // no validation rules for Bandwidth + if len(errors) > 0 { + return BandwidthPackageInfoMultiError(errors) + } + return nil } +// BandwidthPackageInfoMultiError is an error wrapping multiple validation +// errors returned by BandwidthPackageInfo.ValidateAll() if the designated +// constraints aren't met. +type BandwidthPackageInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m BandwidthPackageInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m BandwidthPackageInfoMultiError) AllErrors() []error { return m } + // BandwidthPackageInfoValidationError is the validation error returned by // BandwidthPackageInfo.Validate if the designated constraints aren't met. type BandwidthPackageInfoValidationError struct { @@ -25680,17 +41868,35 @@ var _ interface { // Validate checks the field values on ListCloudOsImageRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCloudOsImageRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudOsImageRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListCloudOsImageRequestMultiError, or nil if none found. +func (m *ListCloudOsImageRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudOsImageRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetCloudID()) < 2 { - return ListCloudOsImageRequestValidationError{ + err := ListCloudOsImageRequestValidationError{ field: "CloudID", reason: "value length must be at least 2 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Region @@ -25699,9 +41905,30 @@ func (m *ListCloudOsImageRequest) Validate() error { // no validation rules for Provider + if len(errors) > 0 { + return ListCloudOsImageRequestMultiError(errors) + } + return nil } +// ListCloudOsImageRequestMultiError is an error wrapping multiple validation +// errors returned by ListCloudOsImageRequest.ValidateAll() if the designated +// constraints aren't met. +type ListCloudOsImageRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudOsImageRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudOsImageRequestMultiError) AllErrors() []error { return m } + // ListCloudOsImageRequestValidationError is the validation error returned by // ListCloudOsImageRequest.Validate if the designated constraints aren't met. type ListCloudOsImageRequestValidationError struct { @@ -25760,12 +41987,26 @@ var _ interface { // Validate checks the field values on ListCloudOsImageResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCloudOsImageResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudOsImageResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListCloudOsImageResponseMultiError, or nil if none found. +func (m *ListCloudOsImageResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudOsImageResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -25775,7 +42016,26 @@ func (m *ListCloudOsImageResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListCloudOsImageResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListCloudOsImageResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCloudOsImageResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -25787,9 +42047,30 @@ func (m *ListCloudOsImageResponse) Validate() error { } + if len(errors) > 0 { + return ListCloudOsImageResponseMultiError(errors) + } + return nil } +// ListCloudOsImageResponseMultiError is an error wrapping multiple validation +// errors returned by ListCloudOsImageResponse.ValidateAll() if the designated +// constraints aren't met. +type ListCloudOsImageResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudOsImageResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudOsImageResponseMultiError) AllErrors() []error { return m } + // ListCloudOsImageResponseValidationError is the validation error returned by // ListCloudOsImageResponse.Validate if the designated constraints aren't met. type ListCloudOsImageResponseValidationError struct { @@ -25847,12 +42128,26 @@ var _ interface { } = ListCloudOsImageResponseValidationError{} // Validate checks the field values on OsImage with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *OsImage) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on OsImage with the rules defined in the +// proto definition for this message. If any rules are violated, the result is +// a list of violation errors wrapped in OsImageMultiError, or nil if none found. +func (m *OsImage) ValidateAll() error { + return m.validate(true) +} + +func (m *OsImage) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ImageID // no validation rules for Alias @@ -25869,9 +42164,29 @@ func (m *OsImage) Validate() error { // no validation rules for Provider + if len(errors) > 0 { + return OsImageMultiError(errors) + } + return nil } +// OsImageMultiError is an error wrapping multiple validation errors returned +// by OsImage.ValidateAll() if the designated constraints aren't met. +type OsImageMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m OsImageMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m OsImageMultiError) AllErrors() []error { return m } + // OsImageValidationError is the validation error returned by OsImage.Validate // if the designated constraints aren't met. type OsImageValidationError struct { @@ -25928,26 +42243,48 @@ var _ interface { // Validate checks the field values on ListCloudSubnetsRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCloudSubnetsRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudSubnetsRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListCloudSubnetsRequestMultiError, or nil if none found. +func (m *ListCloudSubnetsRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudSubnetsRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetCloudID()) < 2 { - return ListCloudSubnetsRequestValidationError{ + err := ListCloudSubnetsRequestValidationError{ field: "CloudID", reason: "value length must be at least 2 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Region if utf8.RuneCountInString(m.GetAccountID()) < 2 { - return ListCloudSubnetsRequestValidationError{ + err := ListCloudSubnetsRequestValidationError{ field: "AccountID", reason: "value length must be at least 2 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for VpcID @@ -25956,9 +42293,30 @@ func (m *ListCloudSubnetsRequest) Validate() error { // no validation rules for SubnetID + if len(errors) > 0 { + return ListCloudSubnetsRequestMultiError(errors) + } + return nil } +// ListCloudSubnetsRequestMultiError is an error wrapping multiple validation +// errors returned by ListCloudSubnetsRequest.ValidateAll() if the designated +// constraints aren't met. +type ListCloudSubnetsRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudSubnetsRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudSubnetsRequestMultiError) AllErrors() []error { return m } + // ListCloudSubnetsRequestValidationError is the validation error returned by // ListCloudSubnetsRequest.Validate if the designated constraints aren't met. type ListCloudSubnetsRequestValidationError struct { @@ -26017,12 +42375,26 @@ var _ interface { // Validate checks the field values on ListCloudSubnetsResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCloudSubnetsResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudSubnetsResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListCloudSubnetsResponseMultiError, or nil if none found. +func (m *ListCloudSubnetsResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudSubnetsResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -26032,7 +42404,26 @@ func (m *ListCloudSubnetsResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListCloudSubnetsResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListCloudSubnetsResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCloudSubnetsResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -26044,9 +42435,30 @@ func (m *ListCloudSubnetsResponse) Validate() error { } + if len(errors) > 0 { + return ListCloudSubnetsResponseMultiError(errors) + } + return nil } +// ListCloudSubnetsResponseMultiError is an error wrapping multiple validation +// errors returned by ListCloudSubnetsResponse.ValidateAll() if the designated +// constraints aren't met. +type ListCloudSubnetsResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudSubnetsResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudSubnetsResponseMultiError) AllErrors() []error { return m } + // ListCloudSubnetsResponseValidationError is the validation error returned by // ListCloudSubnetsResponse.Validate if the designated constraints aren't met. type ListCloudSubnetsResponseValidationError struct { @@ -26104,12 +42516,26 @@ var _ interface { } = ListCloudSubnetsResponseValidationError{} // Validate checks the field values on Subnet with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *Subnet) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on Subnet with the rules defined in the +// proto definition for this message. If any rules are violated, the result is +// a list of violation errors wrapped in SubnetMultiError, or nil if none found. +func (m *Subnet) ValidateAll() error { + return m.validate(true) +} + +func (m *Subnet) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for VpcID // no validation rules for SubnetID @@ -26126,9 +42552,29 @@ func (m *Subnet) Validate() error { // no validation rules for ZoneName + if len(errors) > 0 { + return SubnetMultiError(errors) + } + return nil } +// SubnetMultiError is an error wrapping multiple validation errors returned by +// Subnet.ValidateAll() if the designated constraints aren't met. +type SubnetMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m SubnetMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m SubnetMultiError) AllErrors() []error { return m } + // SubnetValidationError is the validation error returned by Subnet.Validate if // the designated constraints aren't met. type SubnetValidationError struct { @@ -26185,26 +42631,65 @@ var _ interface { // Validate checks the field values on ListCloudSecurityGroupsRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCloudSecurityGroupsRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudSecurityGroupsRequest with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// ListCloudSecurityGroupsRequestMultiError, or nil if none found. +func (m *ListCloudSecurityGroupsRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudSecurityGroupsRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetCloudID()) < 2 { - return ListCloudSecurityGroupsRequestValidationError{ + err := ListCloudSecurityGroupsRequestValidationError{ field: "CloudID", reason: "value length must be at least 2 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Region // no validation rules for AccountID + if len(errors) > 0 { + return ListCloudSecurityGroupsRequestMultiError(errors) + } + return nil } +// ListCloudSecurityGroupsRequestMultiError is an error wrapping multiple +// validation errors returned by ListCloudSecurityGroupsRequest.ValidateAll() +// if the designated constraints aren't met. +type ListCloudSecurityGroupsRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudSecurityGroupsRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudSecurityGroupsRequestMultiError) AllErrors() []error { return m } + // ListCloudSecurityGroupsRequestValidationError is the validation error // returned by ListCloudSecurityGroupsRequest.Validate if the designated // constraints aren't met. @@ -26264,12 +42749,26 @@ var _ interface { // Validate checks the field values on ListCloudSecurityGroupsResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCloudSecurityGroupsResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudSecurityGroupsResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// ListCloudSecurityGroupsResponseMultiError, or nil if none found. +func (m *ListCloudSecurityGroupsResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudSecurityGroupsResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -26279,7 +42778,26 @@ func (m *ListCloudSecurityGroupsResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListCloudSecurityGroupsResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListCloudSecurityGroupsResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCloudSecurityGroupsResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -26291,9 +42809,30 @@ func (m *ListCloudSecurityGroupsResponse) Validate() error { } + if len(errors) > 0 { + return ListCloudSecurityGroupsResponseMultiError(errors) + } + return nil } +// ListCloudSecurityGroupsResponseMultiError is an error wrapping multiple +// validation errors returned by ListCloudSecurityGroupsResponse.ValidateAll() +// if the designated constraints aren't met. +type ListCloudSecurityGroupsResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudSecurityGroupsResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudSecurityGroupsResponseMultiError) AllErrors() []error { return m } + // ListCloudSecurityGroupsResponseValidationError is the validation error // returned by ListCloudSecurityGroupsResponse.Validate if the designated // constraints aren't met. @@ -26353,26 +42892,65 @@ var _ interface { // Validate checks the field values on ListKeyPairsRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListKeyPairsRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListKeyPairsRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListKeyPairsRequestMultiError, or nil if none found. +func (m *ListKeyPairsRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListKeyPairsRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetCloudID()) < 2 { - return ListKeyPairsRequestValidationError{ + err := ListKeyPairsRequestValidationError{ field: "CloudID", reason: "value length must be at least 2 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Region // no validation rules for AccountID + if len(errors) > 0 { + return ListKeyPairsRequestMultiError(errors) + } + return nil } +// ListKeyPairsRequestMultiError is an error wrapping multiple validation +// errors returned by ListKeyPairsRequest.ValidateAll() if the designated +// constraints aren't met. +type ListKeyPairsRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListKeyPairsRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListKeyPairsRequestMultiError) AllErrors() []error { return m } + // ListKeyPairsRequestValidationError is the validation error returned by // ListKeyPairsRequest.Validate if the designated constraints aren't met. type ListKeyPairsRequestValidationError struct { @@ -26431,12 +43009,26 @@ var _ interface { // Validate checks the field values on ListKeyPairsResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListKeyPairsResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListKeyPairsResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListKeyPairsResponseMultiError, or nil if none found. +func (m *ListKeyPairsResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListKeyPairsResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -26446,7 +43038,26 @@ func (m *ListKeyPairsResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListKeyPairsResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListKeyPairsResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListKeyPairsResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -26458,9 +43069,30 @@ func (m *ListKeyPairsResponse) Validate() error { } + if len(errors) > 0 { + return ListKeyPairsResponseMultiError(errors) + } + return nil } +// ListKeyPairsResponseMultiError is an error wrapping multiple validation +// errors returned by ListKeyPairsResponse.ValidateAll() if the designated +// constraints aren't met. +type ListKeyPairsResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListKeyPairsResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListKeyPairsResponseMultiError) AllErrors() []error { return m } + // ListKeyPairsResponseValidationError is the validation error returned by // ListKeyPairsResponse.Validate if the designated constraints aren't met. type ListKeyPairsResponseValidationError struct { @@ -26518,21 +43150,55 @@ var _ interface { } = ListKeyPairsResponseValidationError{} // Validate checks the field values on KeyPair with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *KeyPair) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on KeyPair with the rules defined in the +// proto definition for this message. If any rules are violated, the result is +// a list of violation errors wrapped in KeyPairMultiError, or nil if none found. +func (m *KeyPair) ValidateAll() error { + return m.validate(true) +} + +func (m *KeyPair) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for KeyID // no validation rules for KeyName // no validation rules for Description + if len(errors) > 0 { + return KeyPairMultiError(errors) + } + return nil } +// KeyPairMultiError is an error wrapping multiple validation errors returned +// by KeyPair.ValidateAll() if the designated constraints aren't met. +type KeyPairMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m KeyPairMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m KeyPairMultiError) AllErrors() []error { return m } + // KeyPairValidationError is the validation error returned by KeyPair.Validate // if the designated constraints aren't met. type KeyPairValidationError struct { @@ -26589,47 +43255,81 @@ var _ interface { // Validate checks the field values on ListOperationLogsRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListOperationLogsRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListOperationLogsRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListOperationLogsRequestMultiError, or nil if none found. +func (m *ListOperationLogsRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListOperationLogsRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if _, ok := _ListOperationLogsRequest_ResourceType_InLookup[m.GetResourceType()]; !ok { - return ListOperationLogsRequestValidationError{ + err := ListOperationLogsRequestValidationError{ field: "ResourceType", reason: "value must be in list [cluster autoscalingoption cloud cloudvpc nodegroup task]", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for ResourceID if m.GetStartTime() <= 0 { - return ListOperationLogsRequestValidationError{ + err := ListOperationLogsRequestValidationError{ field: "StartTime", reason: "value must be greater than 0", } + if !all { + return err + } + errors = append(errors, err) } if m.GetEndTime() <= 0 { - return ListOperationLogsRequestValidationError{ + err := ListOperationLogsRequestValidationError{ field: "EndTime", reason: "value must be greater than 0", } + if !all { + return err + } + errors = append(errors, err) } if m.GetLimit() <= 0 { - return ListOperationLogsRequestValidationError{ + err := ListOperationLogsRequestValidationError{ field: "Limit", reason: "value must be greater than 0", } + if !all { + return err + } + errors = append(errors, err) } if m.GetPage() <= 0 { - return ListOperationLogsRequestValidationError{ + err := ListOperationLogsRequestValidationError{ field: "Page", reason: "value must be greater than 0", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Simple @@ -26648,9 +43348,30 @@ func (m *ListOperationLogsRequest) Validate() error { // no validation rules for IpList + if len(errors) > 0 { + return ListOperationLogsRequestMultiError(errors) + } + return nil } +// ListOperationLogsRequestMultiError is an error wrapping multiple validation +// errors returned by ListOperationLogsRequest.ValidateAll() if the designated +// constraints aren't met. +type ListOperationLogsRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListOperationLogsRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListOperationLogsRequestMultiError) AllErrors() []error { return m } + // ListOperationLogsRequestValidationError is the validation error returned by // ListOperationLogsRequest.Validate if the designated constraints aren't met. type ListOperationLogsRequestValidationError struct { @@ -26718,19 +43439,52 @@ var _ListOperationLogsRequest_ResourceType_InLookup = map[string]struct{}{ // Validate checks the field values on ListOperationLogsResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListOperationLogsResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListOperationLogsResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListOperationLogsResponseMultiError, or nil if none found. +func (m *ListOperationLogsResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListOperationLogsResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListOperationLogsResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListOperationLogsResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListOperationLogsResponseValidationError{ field: "Data", @@ -26740,9 +43494,30 @@ func (m *ListOperationLogsResponse) Validate() error { } } + if len(errors) > 0 { + return ListOperationLogsResponseMultiError(errors) + } + return nil } +// ListOperationLogsResponseMultiError is an error wrapping multiple validation +// errors returned by ListOperationLogsResponse.ValidateAll() if the +// designated constraints aren't met. +type ListOperationLogsResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListOperationLogsResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListOperationLogsResponseMultiError) AllErrors() []error { return m } + // ListOperationLogsResponseValidationError is the validation error returned by // ListOperationLogsResponse.Validate if the designated constraints aren't met. type ListOperationLogsResponseValidationError struct { @@ -26801,18 +43576,51 @@ var _ interface { // Validate checks the field values on ListOperationLogsResponseData with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListOperationLogsResponseData) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListOperationLogsResponseData with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// ListOperationLogsResponseDataMultiError, or nil if none found. +func (m *ListOperationLogsResponseData) ValidateAll() error { + return m.validate(true) +} + +func (m *ListOperationLogsResponseData) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Count for idx, item := range m.GetResults() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListOperationLogsResponseDataValidationError{ + field: fmt.Sprintf("Results[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListOperationLogsResponseDataValidationError{ + field: fmt.Sprintf("Results[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListOperationLogsResponseDataValidationError{ field: fmt.Sprintf("Results[%v]", idx), @@ -26824,9 +43632,30 @@ func (m *ListOperationLogsResponseData) Validate() error { } + if len(errors) > 0 { + return ListOperationLogsResponseDataMultiError(errors) + } + return nil } +// ListOperationLogsResponseDataMultiError is an error wrapping multiple +// validation errors returned by ListOperationLogsResponseData.ValidateAll() +// if the designated constraints aren't met. +type ListOperationLogsResponseDataMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListOperationLogsResponseDataMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListOperationLogsResponseDataMultiError) AllErrors() []error { return m } + // ListOperationLogsResponseDataValidationError is the validation error // returned by ListOperationLogsResponseData.Validate if the designated // constraints aren't met. @@ -26886,16 +43715,32 @@ var _ interface { // Validate checks the field values on OperationLogDetail with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *OperationLogDetail) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on OperationLogDetail with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// OperationLogDetailMultiError, or nil if none found. +func (m *OperationLogDetail) ValidateAll() error { + return m.validate(true) +} + +func (m *OperationLogDetail) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ResourceType // no validation rules for ResourceID + // no validation rules for ResourceName + // no validation rules for TaskID // no validation rules for Message @@ -26904,7 +43749,26 @@ func (m *OperationLogDetail) Validate() error { // no validation rules for CreateTime - if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetTask()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, OperationLogDetailValidationError{ + field: "Task", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, OperationLogDetailValidationError{ + field: "Task", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return OperationLogDetailValidationError{ field: "Task", @@ -26918,9 +43782,30 @@ func (m *OperationLogDetail) Validate() error { // no validation rules for Status + if len(errors) > 0 { + return OperationLogDetailMultiError(errors) + } + return nil } +// OperationLogDetailMultiError is an error wrapping multiple validation errors +// returned by OperationLogDetail.ValidateAll() if the designated constraints +// aren't met. +type OperationLogDetailMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m OperationLogDetailMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m OperationLogDetailMultiError) AllErrors() []error { return m } + // OperationLogDetailValidationError is the validation error returned by // OperationLogDetail.Validate if the designated constraints aren't met. type OperationLogDetailValidationError struct { @@ -26978,22 +43863,57 @@ var _ interface { } = OperationLogDetailValidationError{} // Validate checks the field values on SecurityGroup with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *SecurityGroup) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on SecurityGroup with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in SecurityGroupMultiError, or +// nil if none found. +func (m *SecurityGroup) ValidateAll() error { + return m.validate(true) +} + +func (m *SecurityGroup) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for SecurityGroupID // no validation rules for SecurityGroupName // no validation rules for Description + if len(errors) > 0 { + return SecurityGroupMultiError(errors) + } + return nil } +// SecurityGroupMultiError is an error wrapping multiple validation errors +// returned by SecurityGroup.ValidateAll() if the designated constraints +// aren't met. +type SecurityGroupMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m SecurityGroupMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m SecurityGroupMultiError) AllErrors() []error { return m } + // SecurityGroupValidationError is the validation error returned by // SecurityGroup.Validate if the designated constraints aren't met. type SecurityGroupValidationError struct { @@ -27050,16 +43970,49 @@ var _ interface { // Validate checks the field values on NodeOperationStatus with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *NodeOperationStatus) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on NodeOperationStatus with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// NodeOperationStatusMultiError, or nil if none found. +func (m *NodeOperationStatus) ValidateAll() error { + return m.validate(true) +} + +func (m *NodeOperationStatus) validate(all bool) error { if m == nil { return nil } + var errors []error + for idx, item := range m.GetFail() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeOperationStatusValidationError{ + field: fmt.Sprintf("Fail[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeOperationStatusValidationError{ + field: fmt.Sprintf("Fail[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeOperationStatusValidationError{ field: fmt.Sprintf("Fail[%v]", idx), @@ -27074,7 +44027,26 @@ func (m *NodeOperationStatus) Validate() error { for idx, item := range m.GetSuccess() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeOperationStatusValidationError{ + field: fmt.Sprintf("Success[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeOperationStatusValidationError{ + field: fmt.Sprintf("Success[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeOperationStatusValidationError{ field: fmt.Sprintf("Success[%v]", idx), @@ -27086,9 +44058,30 @@ func (m *NodeOperationStatus) Validate() error { } + if len(errors) > 0 { + return NodeOperationStatusMultiError(errors) + } + return nil } +// NodeOperationStatusMultiError is an error wrapping multiple validation +// errors returned by NodeOperationStatus.ValidateAll() if the designated +// constraints aren't met. +type NodeOperationStatusMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m NodeOperationStatusMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m NodeOperationStatusMultiError) AllErrors() []error { return m } + // NodeOperationStatusValidationError is the validation error returned by // NodeOperationStatus.Validate if the designated constraints aren't met. type NodeOperationStatusValidationError struct { @@ -27147,19 +44140,54 @@ var _ interface { // Validate checks the field values on NodeOperationStatusInfo with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *NodeOperationStatusInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on NodeOperationStatusInfo with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// NodeOperationStatusInfoMultiError, or nil if none found. +func (m *NodeOperationStatusInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *NodeOperationStatusInfo) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for NodeName // no validation rules for Message + if len(errors) > 0 { + return NodeOperationStatusInfoMultiError(errors) + } + return nil } +// NodeOperationStatusInfoMultiError is an error wrapping multiple validation +// errors returned by NodeOperationStatusInfo.ValidateAll() if the designated +// constraints aren't met. +type NodeOperationStatusInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m NodeOperationStatusInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m NodeOperationStatusInfoMultiError) AllErrors() []error { return m } + // NodeOperationStatusInfoValidationError is the validation error returned by // NodeOperationStatusInfo.Validate if the designated constraints aren't met. type NodeOperationStatusInfoValidationError struct { @@ -27217,18 +44245,36 @@ var _ interface { } = NodeOperationStatusInfoValidationError{} // Validate checks the field values on DrainNodeRequest with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *DrainNodeRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DrainNodeRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DrainNodeRequestMultiError, or nil if none found. +func (m *DrainNodeRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *DrainNodeRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if len(m.GetClusterID()) < 1 { - return DrainNodeRequestValidationError{ + err := DrainNodeRequestValidationError{ field: "ClusterID", reason: "value length must be at least 1 bytes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Force @@ -27251,9 +44297,30 @@ func (m *DrainNodeRequest) Validate() error { // no validation rules for DryRun + if len(errors) > 0 { + return DrainNodeRequestMultiError(errors) + } + return nil } +// DrainNodeRequestMultiError is an error wrapping multiple validation errors +// returned by DrainNodeRequest.ValidateAll() if the designated constraints +// aren't met. +type DrainNodeRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DrainNodeRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DrainNodeRequestMultiError) AllErrors() []error { return m } + // DrainNodeRequestValidationError is the validation error returned by // DrainNodeRequest.Validate if the designated constraints aren't met. type DrainNodeRequestValidationError struct { @@ -27309,20 +44376,53 @@ var _ interface { } = DrainNodeRequestValidationError{} // Validate checks the field values on DrainNodeResponse with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *DrainNodeResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DrainNodeResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DrainNodeResponseMultiError, or nil if none found. +func (m *DrainNodeResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *DrainNodeResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DrainNodeResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DrainNodeResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DrainNodeResponseValidationError{ field: "Data", @@ -27332,9 +44432,30 @@ func (m *DrainNodeResponse) Validate() error { } } + if len(errors) > 0 { + return DrainNodeResponseMultiError(errors) + } + return nil } +// DrainNodeResponseMultiError is an error wrapping multiple validation errors +// returned by DrainNodeResponse.ValidateAll() if the designated constraints +// aren't met. +type DrainNodeResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DrainNodeResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DrainNodeResponseMultiError) AllErrors() []error { return m } + // DrainNodeResponseValidationError is the validation error returned by // DrainNodeResponse.Validate if the designated constraints aren't met. type DrainNodeResponseValidationError struct { @@ -27392,25 +44513,64 @@ var _ interface { } = DrainNodeResponseValidationError{} // Validate checks the field values on NodeAnnotation with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *NodeAnnotation) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on NodeAnnotation with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in NodeAnnotationMultiError, +// or nil if none found. +func (m *NodeAnnotation) ValidateAll() error { + return m.validate(true) +} + +func (m *NodeAnnotation) validate(all bool) error { if m == nil { return nil } + var errors []error + if len(m.GetNodeName()) < 1 { - return NodeAnnotationValidationError{ + err := NodeAnnotationValidationError{ field: "NodeName", reason: "value length must be at least 1 bytes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Annotations + if len(errors) > 0 { + return NodeAnnotationMultiError(errors) + } + return nil } +// NodeAnnotationMultiError is an error wrapping multiple validation errors +// returned by NodeAnnotation.ValidateAll() if the designated constraints +// aren't met. +type NodeAnnotationMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m NodeAnnotationMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m NodeAnnotationMultiError) AllErrors() []error { return m } + // NodeAnnotationValidationError is the validation error returned by // NodeAnnotation.Validate if the designated constraints aren't met. type NodeAnnotationValidationError struct { @@ -27467,23 +44627,60 @@ var _ interface { // Validate checks the field values on UpdateNodeAnnotationsRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateNodeAnnotationsRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateNodeAnnotationsRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateNodeAnnotationsRequestMultiError, or nil if none found. +func (m *UpdateNodeAnnotationsRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateNodeAnnotationsRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if len(m.GetClusterID()) < 1 { - return UpdateNodeAnnotationsRequestValidationError{ + err := UpdateNodeAnnotationsRequestValidationError{ field: "ClusterID", reason: "value length must be at least 1 bytes", } + if !all { + return err + } + errors = append(errors, err) } for idx, item := range m.GetNodes() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeAnnotationsRequestValidationError{ + field: fmt.Sprintf("Nodes[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeAnnotationsRequestValidationError{ + field: fmt.Sprintf("Nodes[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeAnnotationsRequestValidationError{ field: fmt.Sprintf("Nodes[%v]", idx), @@ -27495,9 +44692,30 @@ func (m *UpdateNodeAnnotationsRequest) Validate() error { } + if len(errors) > 0 { + return UpdateNodeAnnotationsRequestMultiError(errors) + } + return nil } +// UpdateNodeAnnotationsRequestMultiError is an error wrapping multiple +// validation errors returned by UpdateNodeAnnotationsRequest.ValidateAll() if +// the designated constraints aren't met. +type UpdateNodeAnnotationsRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateNodeAnnotationsRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateNodeAnnotationsRequestMultiError) AllErrors() []error { return m } + // UpdateNodeAnnotationsRequestValidationError is the validation error returned // by UpdateNodeAnnotationsRequest.Validate if the designated constraints // aren't met. @@ -27557,19 +44775,52 @@ var _ interface { // Validate checks the field values on UpdateNodeAnnotationsResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateNodeAnnotationsResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateNodeAnnotationsResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// UpdateNodeAnnotationsResponseMultiError, or nil if none found. +func (m *UpdateNodeAnnotationsResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateNodeAnnotationsResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeAnnotationsResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeAnnotationsResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeAnnotationsResponseValidationError{ field: "Data", @@ -27579,9 +44830,30 @@ func (m *UpdateNodeAnnotationsResponse) Validate() error { } } + if len(errors) > 0 { + return UpdateNodeAnnotationsResponseMultiError(errors) + } + return nil } +// UpdateNodeAnnotationsResponseMultiError is an error wrapping multiple +// validation errors returned by UpdateNodeAnnotationsResponse.ValidateAll() +// if the designated constraints aren't met. +type UpdateNodeAnnotationsResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateNodeAnnotationsResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateNodeAnnotationsResponseMultiError) AllErrors() []error { return m } + // UpdateNodeAnnotationsResponseValidationError is the validation error // returned by UpdateNodeAnnotationsResponse.Validate if the designated // constraints aren't met. @@ -27640,24 +44912,63 @@ var _ interface { } = UpdateNodeAnnotationsResponseValidationError{} // Validate checks the field values on NodeLabel with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *NodeLabel) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on NodeLabel with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in NodeLabelMultiError, or nil +// if none found. +func (m *NodeLabel) ValidateAll() error { + return m.validate(true) +} + +func (m *NodeLabel) validate(all bool) error { if m == nil { return nil } + var errors []error + if len(m.GetNodeName()) < 1 { - return NodeLabelValidationError{ + err := NodeLabelValidationError{ field: "NodeName", reason: "value length must be at least 1 bytes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Labels + if len(errors) > 0 { + return NodeLabelMultiError(errors) + } + return nil } +// NodeLabelMultiError is an error wrapping multiple validation errors returned +// by NodeLabel.ValidateAll() if the designated constraints aren't met. +type NodeLabelMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m NodeLabelMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m NodeLabelMultiError) AllErrors() []error { return m } + // NodeLabelValidationError is the validation error returned by // NodeLabel.Validate if the designated constraints aren't met. type NodeLabelValidationError struct { @@ -27714,16 +45025,49 @@ var _ interface { // Validate checks the field values on UpdateNodeLabelsRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateNodeLabelsRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateNodeLabelsRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateNodeLabelsRequestMultiError, or nil if none found. +func (m *UpdateNodeLabelsRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateNodeLabelsRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + for idx, item := range m.GetNodes() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeLabelsRequestValidationError{ + field: fmt.Sprintf("Nodes[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeLabelsRequestValidationError{ + field: fmt.Sprintf("Nodes[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeLabelsRequestValidationError{ field: fmt.Sprintf("Nodes[%v]", idx), @@ -27736,15 +45080,40 @@ func (m *UpdateNodeLabelsRequest) Validate() error { } if len(m.GetClusterID()) < 1 { - return UpdateNodeLabelsRequestValidationError{ + err := UpdateNodeLabelsRequestValidationError{ field: "ClusterID", reason: "value length must be at least 1 bytes", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return UpdateNodeLabelsRequestMultiError(errors) } return nil } +// UpdateNodeLabelsRequestMultiError is an error wrapping multiple validation +// errors returned by UpdateNodeLabelsRequest.ValidateAll() if the designated +// constraints aren't met. +type UpdateNodeLabelsRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateNodeLabelsRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateNodeLabelsRequestMultiError) AllErrors() []error { return m } + // UpdateNodeLabelsRequestValidationError is the validation error returned by // UpdateNodeLabelsRequest.Validate if the designated constraints aren't met. type UpdateNodeLabelsRequestValidationError struct { @@ -27803,19 +45172,52 @@ var _ interface { // Validate checks the field values on UpdateNodeLabelsResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateNodeLabelsResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateNodeLabelsResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateNodeLabelsResponseMultiError, or nil if none found. +func (m *UpdateNodeLabelsResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateNodeLabelsResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeLabelsResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeLabelsResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeLabelsResponseValidationError{ field: "Data", @@ -27825,9 +45227,30 @@ func (m *UpdateNodeLabelsResponse) Validate() error { } } + if len(errors) > 0 { + return UpdateNodeLabelsResponseMultiError(errors) + } + return nil } +// UpdateNodeLabelsResponseMultiError is an error wrapping multiple validation +// errors returned by UpdateNodeLabelsResponse.ValidateAll() if the designated +// constraints aren't met. +type UpdateNodeLabelsResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateNodeLabelsResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateNodeLabelsResponseMultiError) AllErrors() []error { return m } + // UpdateNodeLabelsResponseValidationError is the validation error returned by // UpdateNodeLabelsResponse.Validate if the designated constraints aren't met. type UpdateNodeLabelsResponseValidationError struct { @@ -27885,23 +45308,61 @@ var _ interface { } = UpdateNodeLabelsResponseValidationError{} // Validate checks the field values on NodeTaint with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *NodeTaint) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on NodeTaint with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in NodeTaintMultiError, or nil +// if none found. +func (m *NodeTaint) ValidateAll() error { + return m.validate(true) +} + +func (m *NodeTaint) validate(all bool) error { if m == nil { return nil } + var errors []error + if len(m.GetNodeName()) < 1 { - return NodeTaintValidationError{ + err := NodeTaintValidationError{ field: "NodeName", reason: "value length must be at least 1 bytes", } + if !all { + return err + } + errors = append(errors, err) } for idx, item := range m.GetTaints() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeTaintValidationError{ + field: fmt.Sprintf("Taints[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeTaintValidationError{ + field: fmt.Sprintf("Taints[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeTaintValidationError{ field: fmt.Sprintf("Taints[%v]", idx), @@ -27913,9 +45374,29 @@ func (m *NodeTaint) Validate() error { } + if len(errors) > 0 { + return NodeTaintMultiError(errors) + } + return nil } +// NodeTaintMultiError is an error wrapping multiple validation errors returned +// by NodeTaint.ValidateAll() if the designated constraints aren't met. +type NodeTaintMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m NodeTaintMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m NodeTaintMultiError) AllErrors() []error { return m } + // NodeTaintValidationError is the validation error returned by // NodeTaint.Validate if the designated constraints aren't met. type NodeTaintValidationError struct { @@ -27972,16 +45453,49 @@ var _ interface { // Validate checks the field values on UpdateNodeTaintsRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateNodeTaintsRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateNodeTaintsRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateNodeTaintsRequestMultiError, or nil if none found. +func (m *UpdateNodeTaintsRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateNodeTaintsRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + for idx, item := range m.GetNodes() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeTaintsRequestValidationError{ + field: fmt.Sprintf("Nodes[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeTaintsRequestValidationError{ + field: fmt.Sprintf("Nodes[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeTaintsRequestValidationError{ field: fmt.Sprintf("Nodes[%v]", idx), @@ -27994,15 +45508,40 @@ func (m *UpdateNodeTaintsRequest) Validate() error { } if len(m.GetClusterID()) < 1 { - return UpdateNodeTaintsRequestValidationError{ + err := UpdateNodeTaintsRequestValidationError{ field: "ClusterID", reason: "value length must be at least 1 bytes", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return UpdateNodeTaintsRequestMultiError(errors) } return nil } +// UpdateNodeTaintsRequestMultiError is an error wrapping multiple validation +// errors returned by UpdateNodeTaintsRequest.ValidateAll() if the designated +// constraints aren't met. +type UpdateNodeTaintsRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateNodeTaintsRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateNodeTaintsRequestMultiError) AllErrors() []error { return m } + // UpdateNodeTaintsRequestValidationError is the validation error returned by // UpdateNodeTaintsRequest.Validate if the designated constraints aren't met. type UpdateNodeTaintsRequestValidationError struct { @@ -28061,19 +45600,52 @@ var _ interface { // Validate checks the field values on UpdateNodeTaintsResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateNodeTaintsResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateNodeTaintsResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateNodeTaintsResponseMultiError, or nil if none found. +func (m *UpdateNodeTaintsResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateNodeTaintsResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeTaintsResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeTaintsResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeTaintsResponseValidationError{ field: "Data", @@ -28083,9 +45655,30 @@ func (m *UpdateNodeTaintsResponse) Validate() error { } } + if len(errors) > 0 { + return UpdateNodeTaintsResponseMultiError(errors) + } + return nil } +// UpdateNodeTaintsResponseMultiError is an error wrapping multiple validation +// errors returned by UpdateNodeTaintsResponse.ValidateAll() if the designated +// constraints aren't met. +type UpdateNodeTaintsResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateNodeTaintsResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateNodeTaintsResponseMultiError) AllErrors() []error { return m } + // UpdateNodeTaintsResponseValidationError is the validation error returned by // UpdateNodeTaintsResponse.Validate if the designated constraints aren't met. type UpdateNodeTaintsResponseValidationError struct { @@ -28143,16 +45736,51 @@ var _ interface { } = UpdateNodeTaintsResponseValidationError{} // Validate checks the field values on HealthRequest with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *HealthRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on HealthRequest with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in HealthRequestMultiError, or +// nil if none found. +func (m *HealthRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *HealthRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + + if len(errors) > 0 { + return HealthRequestMultiError(errors) + } + return nil } +// HealthRequestMultiError is an error wrapping multiple validation errors +// returned by HealthRequest.ValidateAll() if the designated constraints +// aren't met. +type HealthRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m HealthRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m HealthRequestMultiError) AllErrors() []error { return m } + // HealthRequestValidationError is the validation error returned by // HealthRequest.Validate if the designated constraints aren't met. type HealthRequestValidationError struct { @@ -28208,22 +45836,57 @@ var _ interface { } = HealthRequestValidationError{} // Validate checks the field values on HealthResponse with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *HealthResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on HealthResponse with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in HealthResponseMultiError, +// or nil if none found. +func (m *HealthResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *HealthResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Available + if len(errors) > 0 { + return HealthResponseMultiError(errors) + } + return nil } +// HealthResponseMultiError is an error wrapping multiple validation errors +// returned by HealthResponse.ValidateAll() if the designated constraints +// aren't met. +type HealthResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m HealthResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m HealthResponseMultiError) AllErrors() []error { return m } + // HealthResponseValidationError is the validation error returned by // HealthResponse.Validate if the designated constraints aren't met. type HealthResponseValidationError struct { @@ -28280,17 +45943,52 @@ var _ interface { // Validate checks the field values on ListResourceSchemaRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListResourceSchemaRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListResourceSchemaRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListResourceSchemaRequestMultiError, or nil if none found. +func (m *ListResourceSchemaRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListResourceSchemaRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for CloudID + if len(errors) > 0 { + return ListResourceSchemaRequestMultiError(errors) + } + return nil } +// ListResourceSchemaRequestMultiError is an error wrapping multiple validation +// errors returned by ListResourceSchemaRequest.ValidateAll() if the +// designated constraints aren't met. +type ListResourceSchemaRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListResourceSchemaRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListResourceSchemaRequestMultiError) AllErrors() []error { return m } + // ListResourceSchemaRequestValidationError is the validation error returned by // ListResourceSchemaRequest.Validate if the designated constraints aren't met. type ListResourceSchemaRequestValidationError struct { @@ -28349,19 +46047,54 @@ var _ interface { // Validate checks the field values on GetResourceSchemaRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetResourceSchemaRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetResourceSchemaRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetResourceSchemaRequestMultiError, or nil if none found. +func (m *GetResourceSchemaRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetResourceSchemaRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for CloudID // no validation rules for Name + if len(errors) > 0 { + return GetResourceSchemaRequestMultiError(errors) + } + return nil } +// GetResourceSchemaRequestMultiError is an error wrapping multiple validation +// errors returned by GetResourceSchemaRequest.ValidateAll() if the designated +// constraints aren't met. +type GetResourceSchemaRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetResourceSchemaRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetResourceSchemaRequestMultiError) AllErrors() []error { return m } + // GetResourceSchemaRequestValidationError is the validation error returned by // GetResourceSchemaRequest.Validate if the designated constraints aren't met. type GetResourceSchemaRequestValidationError struct { @@ -28420,12 +46153,26 @@ var _ interface { // Validate checks the field values on QueryPermByActionIDReqData with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *QueryPermByActionIDReqData) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on QueryPermByActionIDReqData with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// QueryPermByActionIDReqDataMultiError, or nil if none found. +func (m *QueryPermByActionIDReqData) ValidateAll() error { + return m.validate(true) +} + +func (m *QueryPermByActionIDReqData) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ProjectId // no validation rules for ClusterId @@ -28437,15 +46184,40 @@ func (m *QueryPermByActionIDReqData) Validate() error { // no validation rules for AccountId if utf8.RuneCountInString(m.GetOperator()) < 1 { - return QueryPermByActionIDReqDataValidationError{ + err := QueryPermByActionIDReqDataValidationError{ field: "Operator", reason: "value length must be at least 1 runes", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return QueryPermByActionIDReqDataMultiError(errors) } return nil } +// QueryPermByActionIDReqDataMultiError is an error wrapping multiple +// validation errors returned by QueryPermByActionIDReqData.ValidateAll() if +// the designated constraints aren't met. +type QueryPermByActionIDReqDataMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m QueryPermByActionIDReqDataMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m QueryPermByActionIDReqDataMultiError) AllErrors() []error { return m } + // QueryPermByActionIDReqDataValidationError is the validation error returned // by QueryPermByActionIDReqData.Validate if the designated constraints aren't met. type QueryPermByActionIDReqDataValidationError struct { @@ -28504,15 +46276,48 @@ var _ interface { // Validate checks the field values on QueryPermByActionIDRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *QueryPermByActionIDRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on QueryPermByActionIDRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// QueryPermByActionIDRequestMultiError, or nil if none found. +func (m *QueryPermByActionIDRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *QueryPermByActionIDRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ActionID - if v, ok := interface{}(m.GetPermCtx()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetPermCtx()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, QueryPermByActionIDRequestValidationError{ + field: "PermCtx", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, QueryPermByActionIDRequestValidationError{ + field: "PermCtx", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetPermCtx()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return QueryPermByActionIDRequestValidationError{ field: "PermCtx", @@ -28522,9 +46327,30 @@ func (m *QueryPermByActionIDRequest) Validate() error { } } + if len(errors) > 0 { + return QueryPermByActionIDRequestMultiError(errors) + } + return nil } +// QueryPermByActionIDRequestMultiError is an error wrapping multiple +// validation errors returned by QueryPermByActionIDRequest.ValidateAll() if +// the designated constraints aren't met. +type QueryPermByActionIDRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m QueryPermByActionIDRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m QueryPermByActionIDRequestMultiError) AllErrors() []error { return m } + // QueryPermByActionIDRequestValidationError is the validation error returned // by QueryPermByActionIDRequest.Validate if the designated constraints aren't met. type QueryPermByActionIDRequestValidationError struct { @@ -28582,32 +46408,95 @@ var _ interface { } = QueryPermByActionIDRequestValidationError{} // Validate checks the field values on Perms with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *Perms) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on Perms with the rules defined in the +// proto definition for this message. If any rules are violated, the result is +// a list of violation errors wrapped in PermsMultiError, or nil if none found. +func (m *Perms) ValidateAll() error { + return m.validate(true) +} + +func (m *Perms) validate(all bool) error { if m == nil { return nil } - for key, val := range m.GetPerms() { - _ = val + var errors []error + + { + sorted_keys := make([]string, len(m.GetPerms())) + i := 0 + for key := range m.GetPerms() { + sorted_keys[i] = key + i++ + } + sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) + for _, key := range sorted_keys { + val := m.GetPerms()[key] + _ = val - // no validation rules for Perms[key] + // no validation rules for Perms[key] - if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return PermsValidationError{ - field: fmt.Sprintf("Perms[%v]", key), - reason: "embedded message failed validation", - cause: err, + if all { + switch v := interface{}(val).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, PermsValidationError{ + field: fmt.Sprintf("Perms[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, PermsValidationError{ + field: fmt.Sprintf("Perms[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return PermsValidationError{ + field: fmt.Sprintf("Perms[%v]", key), + reason: "embedded message failed validation", + cause: err, + } } } + } + } + if len(errors) > 0 { + return PermsMultiError(errors) } return nil } +// PermsMultiError is an error wrapping multiple validation errors returned by +// Perms.ValidateAll() if the designated constraints aren't met. +type PermsMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m PermsMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m PermsMultiError) AllErrors() []error { return m } + // PermsValidationError is the validation error returned by Perms.Validate if // the designated constraints aren't met. type PermsValidationError struct { @@ -28664,15 +46553,48 @@ var _ interface { // Validate checks the field values on QueryPermByActionIDResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *QueryPermByActionIDResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on QueryPermByActionIDResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// QueryPermByActionIDResponseMultiError, or nil if none found. +func (m *QueryPermByActionIDResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *QueryPermByActionIDResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, QueryPermByActionIDResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, QueryPermByActionIDResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return QueryPermByActionIDResponseValidationError{ field: "Data", @@ -28682,9 +46604,30 @@ func (m *QueryPermByActionIDResponse) Validate() error { } } + if len(errors) > 0 { + return QueryPermByActionIDResponseMultiError(errors) + } + return nil } +// QueryPermByActionIDResponseMultiError is an error wrapping multiple +// validation errors returned by QueryPermByActionIDResponse.ValidateAll() if +// the designated constraints aren't met. +type QueryPermByActionIDResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m QueryPermByActionIDResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m QueryPermByActionIDResponseMultiError) AllErrors() []error { return m } + // QueryPermByActionIDResponseValidationError is the validation error returned // by QueryPermByActionIDResponse.Validate if the designated constraints // aren't met. @@ -28743,19 +46686,53 @@ var _ interface { } = QueryPermByActionIDResponseValidationError{} // Validate checks the field values on CommonResp with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *CommonResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CommonResp with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in CommonRespMultiError, or +// nil if none found. +func (m *CommonResp) ValidateAll() error { + return m.validate(true) +} + +func (m *CommonResp) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CommonRespValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CommonRespValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CommonRespValidationError{ field: "Data", @@ -28765,9 +46742,29 @@ func (m *CommonResp) Validate() error { } } + if len(errors) > 0 { + return CommonRespMultiError(errors) + } + return nil } +// CommonRespMultiError is an error wrapping multiple validation errors +// returned by CommonResp.ValidateAll() if the designated constraints aren't met. +type CommonRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CommonRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CommonRespMultiError) AllErrors() []error { return m } + // CommonRespValidationError is the validation error returned by // CommonResp.Validate if the designated constraints aren't met. type CommonRespValidationError struct { @@ -28823,20 +46820,53 @@ var _ interface { } = CommonRespValidationError{} // Validate checks the field values on CommonListResp with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *CommonListResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CommonListResp with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in CommonListRespMultiError, +// or nil if none found. +func (m *CommonListResp) ValidateAll() error { + return m.validate(true) +} + +func (m *CommonListResp) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CommonListRespValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CommonListRespValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CommonListRespValidationError{ field: "Data", @@ -28846,9 +46876,30 @@ func (m *CommonListResp) Validate() error { } } + if len(errors) > 0 { + return CommonListRespMultiError(errors) + } + return nil } +// CommonListRespMultiError is an error wrapping multiple validation errors +// returned by CommonListResp.ValidateAll() if the designated constraints +// aren't met. +type CommonListRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CommonListRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CommonListRespMultiError) AllErrors() []error { return m } + // CommonListRespValidationError is the validation error returned by // CommonListResp.Validate if the designated constraints aren't met. type CommonListRespValidationError struct { @@ -28905,15 +46956,50 @@ var _ interface { // Validate checks the field values on ListBKCloudRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListBKCloudRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListBKCloudRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListBKCloudRequestMultiError, or nil if none found. +func (m *ListBKCloudRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListBKCloudRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + + if len(errors) > 0 { + return ListBKCloudRequestMultiError(errors) + } + return nil } +// ListBKCloudRequestMultiError is an error wrapping multiple validation errors +// returned by ListBKCloudRequest.ValidateAll() if the designated constraints +// aren't met. +type ListBKCloudRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListBKCloudRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListBKCloudRequestMultiError) AllErrors() []error { return m } + // ListBKCloudRequestValidationError is the validation error returned by // ListBKCloudRequest.Validate if the designated constraints aren't met. type ListBKCloudRequestValidationError struct { @@ -28972,36 +47058,81 @@ var _ interface { // Validate checks the field values on ListCCTopologyRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCCTopologyRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCCTopologyRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListCCTopologyRequestMultiError, or nil if none found. +func (m *ListCCTopologyRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCCTopologyRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetClusterID()); l < 5 || l > 100 { - return ListCCTopologyRequestValidationError{ + err := ListCCTopologyRequestValidationError{ field: "ClusterID", reason: "value length must be between 5 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - return ListCCTopologyRequestValidationError{ + err := ListCCTopologyRequestValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } + if !all { + return err + } + errors = append(errors, err) } if !_ListCCTopologyRequest_ClusterID_Pattern.MatchString(m.GetClusterID()) { - return ListCCTopologyRequestValidationError{ + err := ListCCTopologyRequestValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for BizID - if v, ok := interface{}(m.GetFilterInter()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetFilterInter()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListCCTopologyRequestValidationError{ + field: "FilterInter", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListCCTopologyRequestValidationError{ + field: "FilterInter", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetFilterInter()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCCTopologyRequestValidationError{ field: "FilterInter", @@ -29011,9 +47142,30 @@ func (m *ListCCTopologyRequest) Validate() error { } } + if len(errors) > 0 { + return ListCCTopologyRequestMultiError(errors) + } + return nil } +// ListCCTopologyRequestMultiError is an error wrapping multiple validation +// errors returned by ListCCTopologyRequest.ValidateAll() if the designated +// constraints aren't met. +type ListCCTopologyRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCCTopologyRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCCTopologyRequestMultiError) AllErrors() []error { return m } + // ListCCTopologyRequestValidationError is the validation error returned by // ListCCTopologyRequest.Validate if the designated constraints aren't met. type ListCCTopologyRequestValidationError struct { @@ -29074,33 +47226,76 @@ var _ListCCTopologyRequest_ClusterID_Pattern = regexp.MustCompile("^[0-9a-zA-Z-] // Validate checks the field values on GetBkSopsTemplateListRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetBkSopsTemplateListRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetBkSopsTemplateListRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetBkSopsTemplateListRequestMultiError, or nil if none found. +func (m *GetBkSopsTemplateListRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetBkSopsTemplateListRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for BusinessID // no validation rules for Operator if _, ok := _GetBkSopsTemplateListRequest_TemplateSource_InLookup[m.GetTemplateSource()]; !ok { - return GetBkSopsTemplateListRequestValidationError{ + err := GetBkSopsTemplateListRequestValidationError{ field: "TemplateSource", reason: "value must be in list [business common ]", } + if !all { + return err + } + errors = append(errors, err) } if _, ok := _GetBkSopsTemplateListRequest_Scope_InLookup[m.GetScope()]; !ok { - return GetBkSopsTemplateListRequestValidationError{ + err := GetBkSopsTemplateListRequestValidationError{ field: "Scope", reason: "value must be in list [cmdb_biz project ]", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return GetBkSopsTemplateListRequestMultiError(errors) } return nil } +// GetBkSopsTemplateListRequestMultiError is an error wrapping multiple +// validation errors returned by GetBkSopsTemplateListRequest.ValidateAll() if +// the designated constraints aren't met. +type GetBkSopsTemplateListRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetBkSopsTemplateListRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetBkSopsTemplateListRequestMultiError) AllErrors() []error { return m } + // GetBkSopsTemplateListRequestValidationError is the validation error returned // by GetBkSopsTemplateListRequest.Validate if the designated constraints // aren't met. @@ -29172,12 +47367,26 @@ var _GetBkSopsTemplateListRequest_Scope_InLookup = map[string]struct{}{ // Validate checks the field values on GetBkSopsTemplateListResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetBkSopsTemplateListResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetBkSopsTemplateListResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// GetBkSopsTemplateListResponseMultiError, or nil if none found. +func (m *GetBkSopsTemplateListResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetBkSopsTemplateListResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -29185,7 +47394,26 @@ func (m *GetBkSopsTemplateListResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetBkSopsTemplateListResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetBkSopsTemplateListResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetBkSopsTemplateListResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -29197,9 +47425,30 @@ func (m *GetBkSopsTemplateListResponse) Validate() error { } + if len(errors) > 0 { + return GetBkSopsTemplateListResponseMultiError(errors) + } + return nil } +// GetBkSopsTemplateListResponseMultiError is an error wrapping multiple +// validation errors returned by GetBkSopsTemplateListResponse.ValidateAll() +// if the designated constraints aren't met. +type GetBkSopsTemplateListResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetBkSopsTemplateListResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetBkSopsTemplateListResponseMultiError) AllErrors() []error { return m } + // GetBkSopsTemplateListResponseValidationError is the validation error // returned by GetBkSopsTemplateListResponse.Validate if the designated // constraints aren't met. @@ -29258,13 +47507,27 @@ var _ interface { } = GetBkSopsTemplateListResponseValidationError{} // Validate checks the field values on TemplateInfo with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *TemplateInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on TemplateInfo with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in TemplateInfoMultiError, or +// nil if none found. +func (m *TemplateInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *TemplateInfo) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for TemplateName // no validation rules for TemplateID @@ -29279,9 +47542,29 @@ func (m *TemplateInfo) Validate() error { // no validation rules for ProjectID + if len(errors) > 0 { + return TemplateInfoMultiError(errors) + } + return nil } +// TemplateInfoMultiError is an error wrapping multiple validation errors +// returned by TemplateInfo.ValidateAll() if the designated constraints aren't met. +type TemplateInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m TemplateInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m TemplateInfoMultiError) AllErrors() []error { return m } + // TemplateInfoValidationError is the validation error returned by // TemplateInfo.Validate if the designated constraints aren't met. type TemplateInfoValidationError struct { @@ -29338,12 +47621,26 @@ var _ interface { // Validate checks the field values on GetBkSopsTemplateInfoRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetBkSopsTemplateInfoRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetBkSopsTemplateInfoRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetBkSopsTemplateInfoRequestMultiError, or nil if none found. +func (m *GetBkSopsTemplateInfoRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetBkSopsTemplateInfoRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for BusinessID // no validation rules for TemplateID @@ -29351,22 +47648,51 @@ func (m *GetBkSopsTemplateInfoRequest) Validate() error { // no validation rules for Operator if _, ok := _GetBkSopsTemplateInfoRequest_TemplateSource_InLookup[m.GetTemplateSource()]; !ok { - return GetBkSopsTemplateInfoRequestValidationError{ + err := GetBkSopsTemplateInfoRequestValidationError{ field: "TemplateSource", reason: "value must be in list [business common ]", } + if !all { + return err + } + errors = append(errors, err) } if _, ok := _GetBkSopsTemplateInfoRequest_Scope_InLookup[m.GetScope()]; !ok { - return GetBkSopsTemplateInfoRequestValidationError{ + err := GetBkSopsTemplateInfoRequestValidationError{ field: "Scope", reason: "value must be in list [cmdb_biz project ]", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return GetBkSopsTemplateInfoRequestMultiError(errors) } return nil } +// GetBkSopsTemplateInfoRequestMultiError is an error wrapping multiple +// validation errors returned by GetBkSopsTemplateInfoRequest.ValidateAll() if +// the designated constraints aren't met. +type GetBkSopsTemplateInfoRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetBkSopsTemplateInfoRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetBkSopsTemplateInfoRequestMultiError) AllErrors() []error { return m } + // GetBkSopsTemplateInfoRequestValidationError is the validation error returned // by GetBkSopsTemplateInfoRequest.Validate if the designated constraints // aren't met. @@ -29438,17 +47764,50 @@ var _GetBkSopsTemplateInfoRequest_Scope_InLookup = map[string]struct{}{ // Validate checks the field values on GetBkSopsTemplateInfoResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetBkSopsTemplateInfoResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetBkSopsTemplateInfoResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// GetBkSopsTemplateInfoResponseMultiError, or nil if none found. +func (m *GetBkSopsTemplateInfoResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetBkSopsTemplateInfoResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetBkSopsTemplateInfoResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetBkSopsTemplateInfoResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetBkSopsTemplateInfoResponseValidationError{ field: "Data", @@ -29458,9 +47817,30 @@ func (m *GetBkSopsTemplateInfoResponse) Validate() error { } } + if len(errors) > 0 { + return GetBkSopsTemplateInfoResponseMultiError(errors) + } + return nil } +// GetBkSopsTemplateInfoResponseMultiError is an error wrapping multiple +// validation errors returned by GetBkSopsTemplateInfoResponse.ValidateAll() +// if the designated constraints aren't met. +type GetBkSopsTemplateInfoResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetBkSopsTemplateInfoResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetBkSopsTemplateInfoResponseMultiError) AllErrors() []error { return m } + // GetBkSopsTemplateInfoResponseValidationError is the validation error // returned by GetBkSopsTemplateInfoResponse.Validate if the designated // constraints aren't met. @@ -29520,18 +47900,51 @@ var _ interface { // Validate checks the field values on TemplateDetailInfo with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *TemplateDetailInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on TemplateDetailInfo with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// TemplateDetailInfoMultiError, or nil if none found. +func (m *TemplateDetailInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *TemplateDetailInfo) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for TemplateUrl for idx, item := range m.GetValues() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, TemplateDetailInfoValidationError{ + field: fmt.Sprintf("Values[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, TemplateDetailInfoValidationError{ + field: fmt.Sprintf("Values[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return TemplateDetailInfoValidationError{ field: fmt.Sprintf("Values[%v]", idx), @@ -29543,9 +47956,30 @@ func (m *TemplateDetailInfo) Validate() error { } + if len(errors) > 0 { + return TemplateDetailInfoMultiError(errors) + } + return nil } +// TemplateDetailInfoMultiError is an error wrapping multiple validation errors +// returned by TemplateDetailInfo.ValidateAll() if the designated constraints +// aren't met. +type TemplateDetailInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m TemplateDetailInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m TemplateDetailInfoMultiError) AllErrors() []error { return m } + // TemplateDetailInfoValidationError is the validation error returned by // TemplateDetailInfo.Validate if the designated constraints aren't met. type TemplateDetailInfoValidationError struct { @@ -29603,13 +48037,27 @@ var _ interface { } = TemplateDetailInfoValidationError{} // Validate checks the field values on ConstantValue with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *ConstantValue) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ConstantValue with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in ConstantValueMultiError, or +// nil if none found. +func (m *ConstantValue) ValidateAll() error { + return m.validate(true) +} + +func (m *ConstantValue) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Key // no validation rules for Name @@ -29618,9 +48066,30 @@ func (m *ConstantValue) Validate() error { // no validation rules for Desc + if len(errors) > 0 { + return ConstantValueMultiError(errors) + } + return nil } +// ConstantValueMultiError is an error wrapping multiple validation errors +// returned by ConstantValue.ValidateAll() if the designated constraints +// aren't met. +type ConstantValueMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ConstantValueMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ConstantValueMultiError) AllErrors() []error { return m } + // ConstantValueValidationError is the validation error returned by // ConstantValue.Validate if the designated constraints aren't met. type ConstantValueValidationError struct { @@ -29677,19 +48146,54 @@ var _ interface { // Validate checks the field values on GetInnerTemplateValuesRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetInnerTemplateValuesRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetInnerTemplateValuesRequest with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// GetInnerTemplateValuesRequestMultiError, or nil if none found. +func (m *GetInnerTemplateValuesRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetInnerTemplateValuesRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ClusterID // no validation rules for Operator + if len(errors) > 0 { + return GetInnerTemplateValuesRequestMultiError(errors) + } + return nil } +// GetInnerTemplateValuesRequestMultiError is an error wrapping multiple +// validation errors returned by GetInnerTemplateValuesRequest.ValidateAll() +// if the designated constraints aren't met. +type GetInnerTemplateValuesRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetInnerTemplateValuesRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetInnerTemplateValuesRequestMultiError) AllErrors() []error { return m } + // GetInnerTemplateValuesRequestValidationError is the validation error // returned by GetInnerTemplateValuesRequest.Validate if the designated // constraints aren't met. @@ -29749,12 +48253,26 @@ var _ interface { // Validate checks the field values on GetInnerTemplateValuesResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetInnerTemplateValuesResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetInnerTemplateValuesResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// GetInnerTemplateValuesResponseMultiError, or nil if none found. +func (m *GetInnerTemplateValuesResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetInnerTemplateValuesResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -29762,7 +48280,26 @@ func (m *GetInnerTemplateValuesResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetInnerTemplateValuesResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetInnerTemplateValuesResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetInnerTemplateValuesResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -29774,9 +48311,30 @@ func (m *GetInnerTemplateValuesResponse) Validate() error { } + if len(errors) > 0 { + return GetInnerTemplateValuesResponseMultiError(errors) + } + return nil } +// GetInnerTemplateValuesResponseMultiError is an error wrapping multiple +// validation errors returned by GetInnerTemplateValuesResponse.ValidateAll() +// if the designated constraints aren't met. +type GetInnerTemplateValuesResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetInnerTemplateValuesResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetInnerTemplateValuesResponseMultiError) AllErrors() []error { return m } + // GetInnerTemplateValuesResponseValidationError is the validation error // returned by GetInnerTemplateValuesResponse.Validate if the designated // constraints aren't met. @@ -29835,13 +48393,27 @@ var _ interface { } = GetInnerTemplateValuesResponseValidationError{} // Validate checks the field values on TemplateValue with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *TemplateValue) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on TemplateValue with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in TemplateValueMultiError, or +// nil if none found. +func (m *TemplateValue) ValidateAll() error { + return m.validate(true) +} + +func (m *TemplateValue) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Name // no validation rules for Desc @@ -29852,9 +48424,30 @@ func (m *TemplateValue) Validate() error { // no validation rules for Value + if len(errors) > 0 { + return TemplateValueMultiError(errors) + } + return nil } +// TemplateValueMultiError is an error wrapping multiple validation errors +// returned by TemplateValue.ValidateAll() if the designated constraints +// aren't met. +type TemplateValueMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m TemplateValueMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m TemplateValueMultiError) AllErrors() []error { return m } + // TemplateValueValidationError is the validation error returned by // TemplateValue.Validate if the designated constraints aren't met. type TemplateValueValidationError struct { @@ -29911,45 +48504,96 @@ var _ interface { // Validate checks the field values on DebugBkSopsTaskRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DebugBkSopsTaskRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DebugBkSopsTaskRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DebugBkSopsTaskRequestMultiError, or nil if none found. +func (m *DebugBkSopsTaskRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *DebugBkSopsTaskRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetBusinessID()) < 1 { - return DebugBkSopsTaskRequestValidationError{ + err := DebugBkSopsTaskRequestValidationError{ field: "BusinessID", reason: "value length must be at least 1 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetTemplateID()) < 1 { - return DebugBkSopsTaskRequestValidationError{ + err := DebugBkSopsTaskRequestValidationError{ field: "TemplateID", reason: "value length must be at least 1 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetOperator()) < 1 { - return DebugBkSopsTaskRequestValidationError{ + err := DebugBkSopsTaskRequestValidationError{ field: "Operator", reason: "value length must be at least 1 runes", } + if !all { + return err + } + errors = append(errors, err) } if _, ok := _DebugBkSopsTaskRequest_TemplateSource_InLookup[m.GetTemplateSource()]; !ok { - return DebugBkSopsTaskRequestValidationError{ + err := DebugBkSopsTaskRequestValidationError{ field: "TemplateSource", reason: "value must be in list [business common ]", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Constant + if len(errors) > 0 { + return DebugBkSopsTaskRequestMultiError(errors) + } + return nil } +// DebugBkSopsTaskRequestMultiError is an error wrapping multiple validation +// errors returned by DebugBkSopsTaskRequest.ValidateAll() if the designated +// constraints aren't met. +type DebugBkSopsTaskRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DebugBkSopsTaskRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DebugBkSopsTaskRequestMultiError) AllErrors() []error { return m } + // DebugBkSopsTaskRequestValidationError is the validation error returned by // DebugBkSopsTaskRequest.Validate if the designated constraints aren't met. type DebugBkSopsTaskRequestValidationError struct { @@ -30014,17 +48658,50 @@ var _DebugBkSopsTaskRequest_TemplateSource_InLookup = map[string]struct{}{ // Validate checks the field values on DebugBkSopsTaskResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DebugBkSopsTaskResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DebugBkSopsTaskResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DebugBkSopsTaskResponseMultiError, or nil if none found. +func (m *DebugBkSopsTaskResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *DebugBkSopsTaskResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DebugBkSopsTaskResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DebugBkSopsTaskResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DebugBkSopsTaskResponseValidationError{ field: "Data", @@ -30034,9 +48711,30 @@ func (m *DebugBkSopsTaskResponse) Validate() error { } } + if len(errors) > 0 { + return DebugBkSopsTaskResponseMultiError(errors) + } + return nil } +// DebugBkSopsTaskResponseMultiError is an error wrapping multiple validation +// errors returned by DebugBkSopsTaskResponse.ValidateAll() if the designated +// constraints aren't met. +type DebugBkSopsTaskResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DebugBkSopsTaskResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DebugBkSopsTaskResponseMultiError) AllErrors() []error { return m } + // DebugBkSopsTaskResponseValidationError is the validation error returned by // DebugBkSopsTaskResponse.Validate if the designated constraints aren't met. type DebugBkSopsTaskResponseValidationError struct { @@ -30095,13 +48793,46 @@ var _ interface { // Validate checks the field values on DebugBkSopsTaskInfo with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DebugBkSopsTaskInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DebugBkSopsTaskInfo with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DebugBkSopsTaskInfoMultiError, or nil if none found. +func (m *DebugBkSopsTaskInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *DebugBkSopsTaskInfo) validate(all bool) error { if m == nil { return nil } - if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { + var errors []error + + if all { + switch v := interface{}(m.GetTask()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DebugBkSopsTaskInfoValidationError{ + field: "Task", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DebugBkSopsTaskInfoValidationError{ + field: "Task", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DebugBkSopsTaskInfoValidationError{ field: "Task", @@ -30111,9 +48842,30 @@ func (m *DebugBkSopsTaskInfo) Validate() error { } } + if len(errors) > 0 { + return DebugBkSopsTaskInfoMultiError(errors) + } + return nil } +// DebugBkSopsTaskInfoMultiError is an error wrapping multiple validation +// errors returned by DebugBkSopsTaskInfo.ValidateAll() if the designated +// constraints aren't met. +type DebugBkSopsTaskInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DebugBkSopsTaskInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DebugBkSopsTaskInfoMultiError) AllErrors() []error { return m } + // DebugBkSopsTaskInfoValidationError is the validation error returned by // DebugBkSopsTaskInfo.Validate if the designated constraints aren't met. type DebugBkSopsTaskInfoValidationError struct { @@ -30171,13 +48923,27 @@ var _ interface { } = DebugBkSopsTaskInfoValidationError{} // Validate checks the field values on CloudModuleFlag with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *CloudModuleFlag) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CloudModuleFlag with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CloudModuleFlagMultiError, or nil if none found. +func (m *CloudModuleFlag) ValidateAll() error { + return m.validate(true) +} + +func (m *CloudModuleFlag) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for CloudID // no validation rules for Version @@ -30202,7 +48968,26 @@ func (m *CloudModuleFlag) Validate() error { // no validation rules for FlagType - if v, ok := interface{}(m.GetRegex()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetRegex()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CloudModuleFlagValidationError{ + field: "Regex", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CloudModuleFlagValidationError{ + field: "Regex", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetRegex()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CloudModuleFlagValidationError{ field: "Regex", @@ -30212,7 +48997,26 @@ func (m *CloudModuleFlag) Validate() error { } } - if v, ok := interface{}(m.GetRange()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetRange()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CloudModuleFlagValidationError{ + field: "Range", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CloudModuleFlagValidationError{ + field: "Range", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetRange()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CloudModuleFlagValidationError{ field: "Range", @@ -30222,9 +49026,30 @@ func (m *CloudModuleFlag) Validate() error { } } + if len(errors) > 0 { + return CloudModuleFlagMultiError(errors) + } + return nil } +// CloudModuleFlagMultiError is an error wrapping multiple validation errors +// returned by CloudModuleFlag.ValidateAll() if the designated constraints +// aren't met. +type CloudModuleFlagMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CloudModuleFlagMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CloudModuleFlagMultiError) AllErrors() []error { return m } + // CloudModuleFlagValidationError is the validation error returned by // CloudModuleFlag.Validate if the designated constraints aren't met. type CloudModuleFlagValidationError struct { @@ -30280,19 +49105,53 @@ var _ interface { } = CloudModuleFlagValidationError{} // Validate checks the field values on FlagInfo with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *FlagInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on FlagInfo with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in FlagInfoMultiError, or nil +// if none found. +func (m *FlagInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *FlagInfo) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for FlagName // no validation rules for FlagDesc // no validation rules for DefaultValue - if v, ok := interface{}(m.GetEnable()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetEnable()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, FlagInfoValidationError{ + field: "Enable", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, FlagInfoValidationError{ + field: "Enable", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetEnable()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return FlagInfoValidationError{ field: "Enable", @@ -30304,7 +49163,26 @@ func (m *FlagInfo) Validate() error { // no validation rules for FlagType - if v, ok := interface{}(m.GetRegex()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetRegex()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, FlagInfoValidationError{ + field: "Regex", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, FlagInfoValidationError{ + field: "Regex", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetRegex()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return FlagInfoValidationError{ field: "Regex", @@ -30314,7 +49192,26 @@ func (m *FlagInfo) Validate() error { } } - if v, ok := interface{}(m.GetRange()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetRange()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, FlagInfoValidationError{ + field: "Range", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, FlagInfoValidationError{ + field: "Range", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetRange()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return FlagInfoValidationError{ field: "Range", @@ -30324,9 +49221,29 @@ func (m *FlagInfo) Validate() error { } } + if len(errors) > 0 { + return FlagInfoMultiError(errors) + } + return nil } +// FlagInfoMultiError is an error wrapping multiple validation errors returned +// by FlagInfo.ValidateAll() if the designated constraints aren't met. +type FlagInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m FlagInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m FlagInfoMultiError) AllErrors() []error { return m } + // FlagInfoValidationError is the validation error returned by // FlagInfo.Validate if the designated constraints aren't met. type FlagInfoValidationError struct { @@ -30382,19 +49299,54 @@ var _ interface { } = FlagInfoValidationError{} // Validate checks the field values on ValueRegex with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *ValueRegex) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ValueRegex with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in ValueRegexMultiError, or +// nil if none found. +func (m *ValueRegex) ValidateAll() error { + return m.validate(true) +} + +func (m *ValueRegex) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Validator // no validation rules for Message + if len(errors) > 0 { + return ValueRegexMultiError(errors) + } + return nil } +// ValueRegexMultiError is an error wrapping multiple validation errors +// returned by ValueRegex.ValidateAll() if the designated constraints aren't met. +type ValueRegexMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ValueRegexMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ValueRegexMultiError) AllErrors() []error { return m } + // ValueRegexValidationError is the validation error returned by // ValueRegex.Validate if the designated constraints aren't met. type ValueRegexValidationError struct { @@ -30450,20 +49402,54 @@ var _ interface { } = ValueRegexValidationError{} // Validate checks the field values on NumberRange with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *NumberRange) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on NumberRange with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in NumberRangeMultiError, or +// nil if none found. +func (m *NumberRange) ValidateAll() error { + return m.validate(true) +} + +func (m *NumberRange) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Min // no validation rules for Max + if len(errors) > 0 { + return NumberRangeMultiError(errors) + } + return nil } +// NumberRangeMultiError is an error wrapping multiple validation errors +// returned by NumberRange.ValidateAll() if the designated constraints aren't met. +type NumberRangeMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m NumberRangeMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m NumberRangeMultiError) AllErrors() []error { return m } + // NumberRangeValidationError is the validation error returned by // NumberRange.Validate if the designated constraints aren't met. type NumberRangeValidationError struct { @@ -30520,34 +49506,75 @@ var _ interface { // Validate checks the field values on CreateCloudModuleFlagRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CreateCloudModuleFlagRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CreateCloudModuleFlagRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CreateCloudModuleFlagRequestMultiError, or nil if none found. +func (m *CreateCloudModuleFlagRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *CreateCloudModuleFlagRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for CloudID // no validation rules for Version if utf8.RuneCountInString(m.GetModuleID()) < 1 { - return CreateCloudModuleFlagRequestValidationError{ + err := CreateCloudModuleFlagRequestValidationError{ field: "ModuleID", reason: "value length must be at least 1 runes", } + if !all { + return err + } + errors = append(errors, err) } if len(m.GetFlagList()) < 1 { - return CreateCloudModuleFlagRequestValidationError{ + err := CreateCloudModuleFlagRequestValidationError{ field: "FlagList", reason: "value must contain at least 1 item(s)", } + if !all { + return err + } + errors = append(errors, err) } for idx, item := range m.GetFlagList() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateCloudModuleFlagRequestValidationError{ + field: fmt.Sprintf("FlagList[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateCloudModuleFlagRequestValidationError{ + field: fmt.Sprintf("FlagList[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateCloudModuleFlagRequestValidationError{ field: fmt.Sprintf("FlagList[%v]", idx), @@ -30561,9 +49588,30 @@ func (m *CreateCloudModuleFlagRequest) Validate() error { // no validation rules for Operator + if len(errors) > 0 { + return CreateCloudModuleFlagRequestMultiError(errors) + } + return nil } +// CreateCloudModuleFlagRequestMultiError is an error wrapping multiple +// validation errors returned by CreateCloudModuleFlagRequest.ValidateAll() if +// the designated constraints aren't met. +type CreateCloudModuleFlagRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CreateCloudModuleFlagRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CreateCloudModuleFlagRequestMultiError) AllErrors() []error { return m } + // CreateCloudModuleFlagRequestValidationError is the validation error returned // by CreateCloudModuleFlagRequest.Validate if the designated constraints // aren't met. @@ -30623,19 +49671,54 @@ var _ interface { // Validate checks the field values on CreateCloudModuleFlagResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CreateCloudModuleFlagResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CreateCloudModuleFlagResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// CreateCloudModuleFlagResponseMultiError, or nil if none found. +func (m *CreateCloudModuleFlagResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *CreateCloudModuleFlagResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message + if len(errors) > 0 { + return CreateCloudModuleFlagResponseMultiError(errors) + } + return nil } +// CreateCloudModuleFlagResponseMultiError is an error wrapping multiple +// validation errors returned by CreateCloudModuleFlagResponse.ValidateAll() +// if the designated constraints aren't met. +type CreateCloudModuleFlagResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CreateCloudModuleFlagResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CreateCloudModuleFlagResponseMultiError) AllErrors() []error { return m } + // CreateCloudModuleFlagResponseValidationError is the validation error // returned by CreateCloudModuleFlagResponse.Validate if the designated // constraints aren't met. @@ -30695,12 +49778,26 @@ var _ interface { // Validate checks the field values on UpdateCloudModuleFlagRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateCloudModuleFlagRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateCloudModuleFlagRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateCloudModuleFlagRequestMultiError, or nil if none found. +func (m *UpdateCloudModuleFlagRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateCloudModuleFlagRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for CloudID // no validation rules for Version @@ -30708,16 +49805,39 @@ func (m *UpdateCloudModuleFlagRequest) Validate() error { // no validation rules for ModuleID if len(m.GetFlagList()) < 1 { - return UpdateCloudModuleFlagRequestValidationError{ + err := UpdateCloudModuleFlagRequestValidationError{ field: "FlagList", reason: "value must contain at least 1 item(s)", } + if !all { + return err + } + errors = append(errors, err) } for idx, item := range m.GetFlagList() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateCloudModuleFlagRequestValidationError{ + field: fmt.Sprintf("FlagList[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateCloudModuleFlagRequestValidationError{ + field: fmt.Sprintf("FlagList[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateCloudModuleFlagRequestValidationError{ field: fmt.Sprintf("FlagList[%v]", idx), @@ -30731,9 +49851,30 @@ func (m *UpdateCloudModuleFlagRequest) Validate() error { // no validation rules for Operator + if len(errors) > 0 { + return UpdateCloudModuleFlagRequestMultiError(errors) + } + return nil } +// UpdateCloudModuleFlagRequestMultiError is an error wrapping multiple +// validation errors returned by UpdateCloudModuleFlagRequest.ValidateAll() if +// the designated constraints aren't met. +type UpdateCloudModuleFlagRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateCloudModuleFlagRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateCloudModuleFlagRequestMultiError) AllErrors() []error { return m } + // UpdateCloudModuleFlagRequestValidationError is the validation error returned // by UpdateCloudModuleFlagRequest.Validate if the designated constraints // aren't met. @@ -30793,19 +49934,54 @@ var _ interface { // Validate checks the field values on UpdateCloudModuleFlagResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateCloudModuleFlagResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateCloudModuleFlagResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// UpdateCloudModuleFlagResponseMultiError, or nil if none found. +func (m *UpdateCloudModuleFlagResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateCloudModuleFlagResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message + if len(errors) > 0 { + return UpdateCloudModuleFlagResponseMultiError(errors) + } + return nil } +// UpdateCloudModuleFlagResponseMultiError is an error wrapping multiple +// validation errors returned by UpdateCloudModuleFlagResponse.ValidateAll() +// if the designated constraints aren't met. +type UpdateCloudModuleFlagResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateCloudModuleFlagResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateCloudModuleFlagResponseMultiError) AllErrors() []error { return m } + // UpdateCloudModuleFlagResponseValidationError is the validation error // returned by UpdateCloudModuleFlagResponse.Validate if the designated // constraints aren't met. @@ -30865,12 +50041,26 @@ var _ interface { // Validate checks the field values on DeleteCloudModuleFlagRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DeleteCloudModuleFlagRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteCloudModuleFlagRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeleteCloudModuleFlagRequestMultiError, or nil if none found. +func (m *DeleteCloudModuleFlagRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteCloudModuleFlagRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for CloudID // no validation rules for Version @@ -30879,9 +50069,30 @@ func (m *DeleteCloudModuleFlagRequest) Validate() error { // no validation rules for Operator + if len(errors) > 0 { + return DeleteCloudModuleFlagRequestMultiError(errors) + } + return nil } +// DeleteCloudModuleFlagRequestMultiError is an error wrapping multiple +// validation errors returned by DeleteCloudModuleFlagRequest.ValidateAll() if +// the designated constraints aren't met. +type DeleteCloudModuleFlagRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteCloudModuleFlagRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteCloudModuleFlagRequestMultiError) AllErrors() []error { return m } + // DeleteCloudModuleFlagRequestValidationError is the validation error returned // by DeleteCloudModuleFlagRequest.Validate if the designated constraints // aren't met. @@ -30941,19 +50152,54 @@ var _ interface { // Validate checks the field values on DeleteCloudModuleFlagResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DeleteCloudModuleFlagResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteCloudModuleFlagResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// DeleteCloudModuleFlagResponseMultiError, or nil if none found. +func (m *DeleteCloudModuleFlagResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteCloudModuleFlagResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message + if len(errors) > 0 { + return DeleteCloudModuleFlagResponseMultiError(errors) + } + return nil } +// DeleteCloudModuleFlagResponseMultiError is an error wrapping multiple +// validation errors returned by DeleteCloudModuleFlagResponse.ValidateAll() +// if the designated constraints aren't met. +type DeleteCloudModuleFlagResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteCloudModuleFlagResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteCloudModuleFlagResponseMultiError) AllErrors() []error { return m } + // DeleteCloudModuleFlagResponseValidationError is the validation error // returned by DeleteCloudModuleFlagResponse.Validate if the designated // constraints aren't met. @@ -31013,12 +50259,26 @@ var _ interface { // Validate checks the field values on ListCloudModuleFlagRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCloudModuleFlagRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudModuleFlagRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListCloudModuleFlagRequestMultiError, or nil if none found. +func (m *ListCloudModuleFlagRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudModuleFlagRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for CloudID // no validation rules for Version @@ -31027,9 +50287,30 @@ func (m *ListCloudModuleFlagRequest) Validate() error { // no validation rules for Operator + if len(errors) > 0 { + return ListCloudModuleFlagRequestMultiError(errors) + } + return nil } +// ListCloudModuleFlagRequestMultiError is an error wrapping multiple +// validation errors returned by ListCloudModuleFlagRequest.ValidateAll() if +// the designated constraints aren't met. +type ListCloudModuleFlagRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudModuleFlagRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudModuleFlagRequestMultiError) AllErrors() []error { return m } + // ListCloudModuleFlagRequestValidationError is the validation error returned // by ListCloudModuleFlagRequest.Validate if the designated constraints aren't met. type ListCloudModuleFlagRequestValidationError struct { @@ -31088,12 +50369,26 @@ var _ interface { // Validate checks the field values on ListCloudModuleFlagResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCloudModuleFlagResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudModuleFlagResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListCloudModuleFlagResponseMultiError, or nil if none found. +func (m *ListCloudModuleFlagResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudModuleFlagResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -31101,7 +50396,26 @@ func (m *ListCloudModuleFlagResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListCloudModuleFlagResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListCloudModuleFlagResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCloudModuleFlagResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -31113,9 +50427,30 @@ func (m *ListCloudModuleFlagResponse) Validate() error { } + if len(errors) > 0 { + return ListCloudModuleFlagResponseMultiError(errors) + } + return nil } +// ListCloudModuleFlagResponseMultiError is an error wrapping multiple +// validation errors returned by ListCloudModuleFlagResponse.ValidateAll() if +// the designated constraints aren't met. +type ListCloudModuleFlagResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudModuleFlagResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudModuleFlagResponseMultiError) AllErrors() []error { return m } + // ListCloudModuleFlagResponseValidationError is the validation error returned // by ListCloudModuleFlagResponse.Validate if the designated constraints // aren't met. @@ -31175,19 +50510,54 @@ var _ interface { // Validate checks the field values on GetExternalNodeScriptRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetExternalNodeScriptRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetExternalNodeScriptRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetExternalNodeScriptRequestMultiError, or nil if none found. +func (m *GetExternalNodeScriptRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetExternalNodeScriptRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for NodeGroupID // no validation rules for Operator + if len(errors) > 0 { + return GetExternalNodeScriptRequestMultiError(errors) + } + return nil } +// GetExternalNodeScriptRequestMultiError is an error wrapping multiple +// validation errors returned by GetExternalNodeScriptRequest.ValidateAll() if +// the designated constraints aren't met. +type GetExternalNodeScriptRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetExternalNodeScriptRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetExternalNodeScriptRequestMultiError) AllErrors() []error { return m } + // GetExternalNodeScriptRequestValidationError is the validation error returned // by GetExternalNodeScriptRequest.Validate if the designated constraints // aren't met. @@ -31247,12 +50617,26 @@ var _ interface { // Validate checks the field values on GetExternalNodeScriptResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetExternalNodeScriptResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetExternalNodeScriptResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// GetExternalNodeScriptResponseMultiError, or nil if none found. +func (m *GetExternalNodeScriptResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetExternalNodeScriptResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -31261,7 +50645,26 @@ func (m *GetExternalNodeScriptResponse) Validate() error { // no validation rules for Data - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetExternalNodeScriptResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetExternalNodeScriptResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetExternalNodeScriptResponseValidationError{ field: "WebAnnotations", @@ -31271,9 +50674,30 @@ func (m *GetExternalNodeScriptResponse) Validate() error { } } + if len(errors) > 0 { + return GetExternalNodeScriptResponseMultiError(errors) + } + return nil } +// GetExternalNodeScriptResponseMultiError is an error wrapping multiple +// validation errors returned by GetExternalNodeScriptResponse.ValidateAll() +// if the designated constraints aren't met. +type GetExternalNodeScriptResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetExternalNodeScriptResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetExternalNodeScriptResponseMultiError) AllErrors() []error { return m } + // GetExternalNodeScriptResponseValidationError is the validation error // returned by GetExternalNodeScriptResponse.Validate if the designated // constraints aren't met. @@ -31332,17 +50756,52 @@ var _ interface { } = GetExternalNodeScriptResponseValidationError{} // Validate checks the field values on MapStruct with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *MapStruct) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on MapStruct with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in MapStructMultiError, or nil +// if none found. +func (m *MapStruct) ValidateAll() error { + return m.validate(true) +} + +func (m *MapStruct) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Values + if len(errors) > 0 { + return MapStructMultiError(errors) + } + return nil } +// MapStructMultiError is an error wrapping multiple validation errors returned +// by MapStruct.ValidateAll() if the designated constraints aren't met. +type MapStructMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m MapStructMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m MapStructMultiError) AllErrors() []error { return m } + // MapStructValidationError is the validation error returned by // MapStruct.Validate if the designated constraints aren't met. type MapStructValidationError struct { @@ -31399,19 +50858,54 @@ var _ interface { // Validate checks the field values on GetBatchCustomSettingRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetBatchCustomSettingRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetBatchCustomSettingRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetBatchCustomSettingRequestMultiError, or nil if none found. +func (m *GetBatchCustomSettingRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetBatchCustomSettingRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ScopeType // no validation rules for ScopeId + if len(errors) > 0 { + return GetBatchCustomSettingRequestMultiError(errors) + } + return nil } +// GetBatchCustomSettingRequestMultiError is an error wrapping multiple +// validation errors returned by GetBatchCustomSettingRequest.ValidateAll() if +// the designated constraints aren't met. +type GetBatchCustomSettingRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetBatchCustomSettingRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetBatchCustomSettingRequestMultiError) AllErrors() []error { return m } + // GetBatchCustomSettingRequestValidationError is the validation error returned // by GetBatchCustomSettingRequest.Validate if the designated constraints // aren't met. @@ -31471,12 +50965,26 @@ var _ interface { // Validate checks the field values on GetBatchCustomSettingResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetBatchCustomSettingResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetBatchCustomSettingResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// GetBatchCustomSettingResponseMultiError, or nil if none found. +func (m *GetBatchCustomSettingResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetBatchCustomSettingResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Success @@ -31485,7 +50993,26 @@ func (m *GetBatchCustomSettingResponse) Validate() error { // no validation rules for RequestId - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetBatchCustomSettingResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetBatchCustomSettingResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetBatchCustomSettingResponseValidationError{ field: "Data", @@ -31495,9 +51022,30 @@ func (m *GetBatchCustomSettingResponse) Validate() error { } } + if len(errors) > 0 { + return GetBatchCustomSettingResponseMultiError(errors) + } + return nil } +// GetBatchCustomSettingResponseMultiError is an error wrapping multiple +// validation errors returned by GetBatchCustomSettingResponse.ValidateAll() +// if the designated constraints aren't met. +type GetBatchCustomSettingResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetBatchCustomSettingResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetBatchCustomSettingResponseMultiError) AllErrors() []error { return m } + // GetBatchCustomSettingResponseValidationError is the validation error // returned by GetBatchCustomSettingResponse.Validate if the designated // constraints aren't met. @@ -31556,19 +51104,54 @@ var _ interface { } = GetBatchCustomSettingResponseValidationError{} // Validate checks the field values on ScopeInfo with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *ScopeInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ScopeInfo with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in ScopeInfoMultiError, or nil +// if none found. +func (m *ScopeInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *ScopeInfo) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ScopeType // no validation rules for ScopeId + if len(errors) > 0 { + return ScopeInfoMultiError(errors) + } + return nil } +// ScopeInfoMultiError is an error wrapping multiple validation errors returned +// by ScopeInfo.ValidateAll() if the designated constraints aren't met. +type ScopeInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ScopeInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ScopeInfoMultiError) AllErrors() []error { return m } + // ScopeInfoValidationError is the validation error returned by // ScopeInfo.Validate if the designated constraints aren't met. type ScopeInfoValidationError struct { @@ -31625,12 +51208,26 @@ var _ interface { // Validate checks the field values on GetBizTopologyHostRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetBizTopologyHostRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetBizTopologyHostRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetBizTopologyHostRequestMultiError, or nil if none found. +func (m *GetBizTopologyHostRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetBizTopologyHostRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ScopeType // no validation rules for ScopeId @@ -31640,7 +51237,26 @@ func (m *GetBizTopologyHostRequest) Validate() error { for idx, item := range m.GetScopeList() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetBizTopologyHostRequestValidationError{ + field: fmt.Sprintf("ScopeList[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetBizTopologyHostRequestValidationError{ + field: fmt.Sprintf("ScopeList[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetBizTopologyHostRequestValidationError{ field: fmt.Sprintf("ScopeList[%v]", idx), @@ -31652,9 +51268,30 @@ func (m *GetBizTopologyHostRequest) Validate() error { } + if len(errors) > 0 { + return GetBizTopologyHostRequestMultiError(errors) + } + return nil } +// GetBizTopologyHostRequestMultiError is an error wrapping multiple validation +// errors returned by GetBizTopologyHostRequest.ValidateAll() if the +// designated constraints aren't met. +type GetBizTopologyHostRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetBizTopologyHostRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetBizTopologyHostRequestMultiError) AllErrors() []error { return m } + // GetBizTopologyHostRequestValidationError is the validation error returned by // GetBizTopologyHostRequest.Validate if the designated constraints aren't met. type GetBizTopologyHostRequestValidationError struct { @@ -31713,12 +51350,26 @@ var _ interface { // Validate checks the field values on GetBizTopologyHostResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetBizTopologyHostResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetBizTopologyHostResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetBizTopologyHostResponseMultiError, or nil if none found. +func (m *GetBizTopologyHostResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetBizTopologyHostResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Success @@ -31727,7 +51378,26 @@ func (m *GetBizTopologyHostResponse) Validate() error { // no validation rules for RequestId - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetBizTopologyHostResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetBizTopologyHostResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetBizTopologyHostResponseValidationError{ field: "Data", @@ -31737,9 +51407,30 @@ func (m *GetBizTopologyHostResponse) Validate() error { } } + if len(errors) > 0 { + return GetBizTopologyHostResponseMultiError(errors) + } + return nil } +// GetBizTopologyHostResponseMultiError is an error wrapping multiple +// validation errors returned by GetBizTopologyHostResponse.ValidateAll() if +// the designated constraints aren't met. +type GetBizTopologyHostResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetBizTopologyHostResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetBizTopologyHostResponseMultiError) AllErrors() []error { return m } + // GetBizTopologyHostResponseValidationError is the validation error returned // by GetBizTopologyHostResponse.Validate if the designated constraints aren't met. type GetBizTopologyHostResponseValidationError struct { @@ -31797,19 +51488,54 @@ var _ interface { } = GetBizTopologyHostResponseValidationError{} // Validate checks the field values on NodeData with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *NodeData) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on NodeData with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in NodeDataMultiError, or nil +// if none found. +func (m *NodeData) ValidateAll() error { + return m.validate(true) +} + +func (m *NodeData) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ObjectId // no validation rules for InstanceId + if len(errors) > 0 { + return NodeDataMultiError(errors) + } + return nil } +// NodeDataMultiError is an error wrapping multiple validation errors returned +// by NodeData.ValidateAll() if the designated constraints aren't met. +type NodeDataMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m NodeDataMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m NodeDataMultiError) AllErrors() []error { return m } + // NodeDataValidationError is the validation error returned by // NodeData.Validate if the designated constraints aren't met. type NodeDataValidationError struct { @@ -31866,27 +51592,64 @@ var _ interface { // Validate checks the field values on GetTopologyNodesRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetTopologyNodesRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetTopologyNodesRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetTopologyNodesRequestMultiError, or nil if none found. +func (m *GetTopologyNodesRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetTopologyNodesRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ScopeType // no validation rules for ScopeId if len(m.GetNodeList()) < 1 { - return GetTopologyNodesRequestValidationError{ + err := GetTopologyNodesRequestValidationError{ field: "NodeList", reason: "value must contain at least 1 item(s)", } + if !all { + return err + } + errors = append(errors, err) } for idx, item := range m.GetNodeList() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetTopologyNodesRequestValidationError{ + field: fmt.Sprintf("NodeList[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetTopologyNodesRequestValidationError{ + field: fmt.Sprintf("NodeList[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetTopologyNodesRequestValidationError{ field: fmt.Sprintf("NodeList[%v]", idx), @@ -31900,7 +51663,26 @@ func (m *GetTopologyNodesRequest) Validate() error { // no validation rules for SearchContent - if v, ok := interface{}(m.GetAlive()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetAlive()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetTopologyNodesRequestValidationError{ + field: "Alive", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetTopologyNodesRequestValidationError{ + field: "Alive", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetAlive()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetTopologyNodesRequestValidationError{ field: "Alive", @@ -31914,9 +51696,30 @@ func (m *GetTopologyNodesRequest) Validate() error { // no validation rules for PageSize + if len(errors) > 0 { + return GetTopologyNodesRequestMultiError(errors) + } + return nil } +// GetTopologyNodesRequestMultiError is an error wrapping multiple validation +// errors returned by GetTopologyNodesRequest.ValidateAll() if the designated +// constraints aren't met. +type GetTopologyNodesRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetTopologyNodesRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetTopologyNodesRequestMultiError) AllErrors() []error { return m } + // GetTopologyNodesRequestValidationError is the validation error returned by // GetTopologyNodesRequest.Validate if the designated constraints aren't met. type GetTopologyNodesRequestValidationError struct { @@ -31975,12 +51778,26 @@ var _ interface { // Validate checks the field values on GetTopologyNodesResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetTopologyNodesResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetTopologyNodesResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetTopologyNodesResponseMultiError, or nil if none found. +func (m *GetTopologyNodesResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetTopologyNodesResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Success @@ -31989,7 +51806,26 @@ func (m *GetTopologyNodesResponse) Validate() error { // no validation rules for RequestId - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetTopologyNodesResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetTopologyNodesResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetTopologyNodesResponseValidationError{ field: "Data", @@ -31999,9 +51835,30 @@ func (m *GetTopologyNodesResponse) Validate() error { } } + if len(errors) > 0 { + return GetTopologyNodesResponseMultiError(errors) + } + return nil } +// GetTopologyNodesResponseMultiError is an error wrapping multiple validation +// errors returned by GetTopologyNodesResponse.ValidateAll() if the designated +// constraints aren't met. +type GetTopologyNodesResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetTopologyNodesResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetTopologyNodesResponseMultiError) AllErrors() []error { return m } + // GetTopologyNodesResponseValidationError is the validation error returned by // GetTopologyNodesResponse.Validate if the designated constraints aren't met. type GetTopologyNodesResponseValidationError struct { @@ -32060,12 +51917,26 @@ var _ interface { // Validate checks the field values on GetTopologyNodesData with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetTopologyNodesData) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetTopologyNodesData with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetTopologyNodesDataMultiError, or nil if none found. +func (m *GetTopologyNodesData) ValidateAll() error { + return m.validate(true) +} + +func (m *GetTopologyNodesData) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Start // no validation rules for PageSize @@ -32075,7 +51946,26 @@ func (m *GetTopologyNodesData) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetTopologyNodesDataValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetTopologyNodesDataValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetTopologyNodesDataValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -32087,9 +51977,30 @@ func (m *GetTopologyNodesData) Validate() error { } + if len(errors) > 0 { + return GetTopologyNodesDataMultiError(errors) + } + return nil } +// GetTopologyNodesDataMultiError is an error wrapping multiple validation +// errors returned by GetTopologyNodesData.ValidateAll() if the designated +// constraints aren't met. +type GetTopologyNodesDataMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetTopologyNodesDataMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetTopologyNodesDataMultiError) AllErrors() []error { return m } + // GetTopologyNodesDataValidationError is the validation error returned by // GetTopologyNodesData.Validate if the designated constraints aren't met. type GetTopologyNodesDataValidationError struct { @@ -32147,12 +52058,27 @@ var _ interface { } = GetTopologyNodesDataValidationError{} // Validate checks the field values on HostData with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *HostData) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on HostData with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in HostDataMultiError, or nil +// if none found. +func (m *HostData) ValidateAll() error { + return m.validate(true) +} + +func (m *HostData) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for HostId // no validation rules for Ip @@ -32165,7 +52091,26 @@ func (m *HostData) Validate() error { // no validation rules for OsName - if v, ok := interface{}(m.GetCloudArea()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetCloudArea()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, HostDataValidationError{ + field: "CloudArea", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, HostDataValidationError{ + field: "CloudArea", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetCloudArea()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return HostDataValidationError{ field: "CloudArea", @@ -32175,9 +52120,29 @@ func (m *HostData) Validate() error { } } + if len(errors) > 0 { + return HostDataMultiError(errors) + } + return nil } +// HostDataMultiError is an error wrapping multiple validation errors returned +// by HostData.ValidateAll() if the designated constraints aren't met. +type HostDataMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m HostDataMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m HostDataMultiError) AllErrors() []error { return m } + // HostDataValidationError is the validation error returned by // HostData.Validate if the designated constraints aren't met. type HostDataValidationError struct { @@ -32233,20 +52198,55 @@ var _ interface { } = HostDataValidationError{} // Validate checks the field values on HostCloudArea with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *HostCloudArea) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on HostCloudArea with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in HostCloudAreaMultiError, or +// nil if none found. +func (m *HostCloudArea) ValidateAll() error { + return m.validate(true) +} + +func (m *HostCloudArea) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Id // no validation rules for Name + if len(errors) > 0 { + return HostCloudAreaMultiError(errors) + } + return nil } +// HostCloudAreaMultiError is an error wrapping multiple validation errors +// returned by HostCloudArea.ValidateAll() if the designated constraints +// aren't met. +type HostCloudAreaMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m HostCloudAreaMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m HostCloudAreaMultiError) AllErrors() []error { return m } + // HostCloudAreaValidationError is the validation error returned by // HostCloudArea.Validate if the designated constraints aren't met. type HostCloudAreaValidationError struct { @@ -32303,19 +52303,54 @@ var _ interface { // Validate checks the field values on GetScopeHostCheckRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetScopeHostCheckRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetScopeHostCheckRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetScopeHostCheckRequestMultiError, or nil if none found. +func (m *GetScopeHostCheckRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetScopeHostCheckRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ScopeType // no validation rules for ScopeId + if len(errors) > 0 { + return GetScopeHostCheckRequestMultiError(errors) + } + return nil } +// GetScopeHostCheckRequestMultiError is an error wrapping multiple validation +// errors returned by GetScopeHostCheckRequest.ValidateAll() if the designated +// constraints aren't met. +type GetScopeHostCheckRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetScopeHostCheckRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetScopeHostCheckRequestMultiError) AllErrors() []error { return m } + // GetScopeHostCheckRequestValidationError is the validation error returned by // GetScopeHostCheckRequest.Validate if the designated constraints aren't met. type GetScopeHostCheckRequestValidationError struct { @@ -32374,12 +52409,26 @@ var _ interface { // Validate checks the field values on GetScopeHostCheckResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetScopeHostCheckResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetScopeHostCheckResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetScopeHostCheckResponseMultiError, or nil if none found. +func (m *GetScopeHostCheckResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetScopeHostCheckResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Success @@ -32391,7 +52440,26 @@ func (m *GetScopeHostCheckResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetScopeHostCheckResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetScopeHostCheckResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetScopeHostCheckResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -32403,9 +52471,30 @@ func (m *GetScopeHostCheckResponse) Validate() error { } + if len(errors) > 0 { + return GetScopeHostCheckResponseMultiError(errors) + } + return nil } +// GetScopeHostCheckResponseMultiError is an error wrapping multiple validation +// errors returned by GetScopeHostCheckResponse.ValidateAll() if the +// designated constraints aren't met. +type GetScopeHostCheckResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetScopeHostCheckResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetScopeHostCheckResponseMultiError) AllErrors() []error { return m } + // GetScopeHostCheckResponseValidationError is the validation error returned by // GetScopeHostCheckResponse.Validate if the designated constraints aren't met. type GetScopeHostCheckResponseValidationError struct { diff --git a/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.proto b/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.proto index 24b58a3ff6..6001cac055 100644 --- a/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.proto +++ b/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.proto @@ -9884,31 +9884,35 @@ message OperationLog { title : "resourceType", description : "资源类型" }]; - string resourceID = 2[(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + string resourceID = 2 [(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { title : "resourceID", description : "资源ID" }]; - string taskID = 3 [ (grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + string resourceName = 3 [(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title : "resourceName", + description : "资源名称" + }]; + string taskID = 4 [ (grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { title : "taskID", description : "任务ID记录" }]; - string message = 4 [ (grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + string message = 5 [ (grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { title : "message", description : "审计日志信息" }]; - string opUser = 5 [ (grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + string opUser = 6 [ (grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { title : "opUser", description : "操作人" }]; - string createTime = 6 [ (grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + string createTime = 7 [ (grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { title : "createTime", description : "创建时间" }]; - string clusterID = 7 [ (grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + string clusterID = 8 [ (grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { title : "clusterID", description : "操作关联的集群ID" }]; - string projectID = 8 [ (grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + string projectID = 9 [ (grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { title : "projectID", description : "操作关联的项目ID" }]; @@ -9917,14 +9921,15 @@ message OperationLog { message TaskOperationLog { string resourceType = 1; string resourceID = 2; - string taskID = 3; - string message = 4; - string opUser = 5; - string createTime = 6; - string clusterID = 7; - string projectID = 8; - string status = 9; - string taskType = 10; + string resourceName = 3; + string taskID = 4; + string message = 5; + string opUser = 6; + string createTime = 7; + string clusterID = 8; + string projectID = 9; + string status = 10; + string taskType = 11; } message ListCloudInstanceTypeRequest { @@ -10722,31 +10727,35 @@ message OperationLogDetail { title : "resourceID", description : "资源 ID" }]; - string taskID = 3[(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + string resourceName = 3 [(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title : "resourceName", + description : "资源名称" + }]; + string taskID = 4[(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { title : "taskID", description : "任务 ID,可能为空" }]; - string message = 4[(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + string message = 5[(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { title : "message", description : "日志信息" }]; - string opUser = 5[(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + string opUser = 6[(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { title : "opUser", description : "操作者" }]; - string createTime = 6[(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + string createTime = 7[(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { title : "createTime", description : "发生时间" }]; - Task task = 7[(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + Task task = 8[(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { title : "task", description : "任务详细信息,可能为空" }]; - string taskType = 8 [(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + string taskType = 9 [(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { title : "taskType", description : "任务类型" }]; - string status = 9 [(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + string status = 10 [(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { title : "status", description : "任务状态" }]; diff --git a/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.swagger.json b/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.swagger.json index 2a77639b35..7509535126 100644 --- a/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.swagger.json +++ b/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.swagger.json @@ -6402,7 +6402,7 @@ "title": "diskPartition" } }, - "title": "CloudDataDisk 云磁盘格式化数据, 对应CVM数据盘。应用于节点模版\n主要用于 CA 自动扩容节点并上架节点时重装系统,多块数据盘 mountTarget 不能重复\n上架已存在节点时, 用户需指定diskPartition参数区分设备" + "title": "CloudDataDisk 云磁盘格式化数据, 对应CVM数据盘。应用于节点模版\r\n主要用于 CA 自动扩容节点并上架节点时重装系统,多块数据盘 mountTarget 不能重复\r\n上架已存在节点时, 用户需指定diskPartition参数区分设备" }, "clustermanagerCloudModuleFlag": { "type": "object", @@ -13694,6 +13694,11 @@ "description": "资源 ID", "title": "resourceID" }, + "resourceName": { + "type": "string", + "description": "资源名称", + "title": "resourceName" + }, "taskID": { "type": "string", "description": "任务 ID,可能为空", @@ -16641,7 +16646,7 @@ } } }, - "title": "https://github.com/golang/protobuf/issues/1118\nhttps://pkg.go.dev/google.golang.org/protobuf/types/known/structpb#Struct" + "title": "https://github.com/golang/protobuf/issues/1118\r\nhttps://pkg.go.dev/google.golang.org/protobuf/types/known/structpb#Struct" }, "clustermanagerWebAnnotationsV2": { "type": "object", @@ -16750,7 +16755,7 @@ "properties": { "type_url": { "type": "string", - "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics." + "description": "A URL/resource name that uniquely identifies the type of the serialized\r\nprotocol buffer message. This string must contain at least\r\none \"/\" character. The last segment of the URL's path must represent\r\nthe fully qualified name of the type (as in\r\n`path/google.protobuf.Duration`). The name should be in a canonical form\r\n(e.g., leading \".\" is not accepted).\r\n\r\nIn practice, teams usually precompile into the binary all types that they\r\nexpect it to use in the context of Any. However, for URLs which use the\r\nscheme `http`, `https`, or no scheme, one can optionally set up a type\r\nserver that maps type URLs to message definitions as follows:\r\n\r\n* If no scheme is provided, `https` is assumed.\r\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\r\n value in binary format, or produce an error.\r\n* Applications are allowed to cache lookup results based on the\r\n URL, or have them precompiled into a binary to avoid any\r\n lookup. Therefore, binary compatibility needs to be preserved\r\n on changes to types. (Use versioned type names to manage\r\n breaking changes.)\r\n\r\nNote: this functionality is not currently available in the official\r\nprotobuf release, and it is not used for type URLs beginning with\r\ntype.googleapis.com.\r\n\r\nSchemes other than `http`, `https` (or the empty scheme) might be\r\nused with implementation specific semantics." }, "value": { "type": "string", @@ -16758,7 +16763,7 @@ "description": "Must be a valid serialized protocol buffer of the above specified type." } }, - "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := ptypes.MarshalAny(foo)\n ...\n foo := \u0026pb.Foo{}\n if err := ptypes.UnmarshalAny(any, foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }" + "title": "`Any` contains an arbitrary serialized protocol buffer message along with a\r\nURL that describes the type of the serialized message.\r\n\r\nProtobuf library provides support to pack/unpack Any values in the form\r\nof utility functions or additional generated methods of the Any type.\r\n\r\nExample 1: Pack and unpack a message in C++.\r\n\r\n Foo foo = ...;\r\n Any any;\r\n any.PackFrom(foo);\r\n ...\r\n if (any.UnpackTo(\u0026foo)) {\r\n ...\r\n }\r\n\r\nExample 2: Pack and unpack a message in Java.\r\n\r\n Foo foo = ...;\r\n Any any = Any.pack(foo);\r\n ...\r\n if (any.is(Foo.class)) {\r\n foo = any.unpack(Foo.class);\r\n }\r\n\r\n Example 3: Pack and unpack a message in Python.\r\n\r\n foo = Foo(...)\r\n any = Any()\r\n any.Pack(foo)\r\n ...\r\n if any.Is(Foo.DESCRIPTOR):\r\n any.Unpack(foo)\r\n ...\r\n\r\n Example 4: Pack and unpack a message in Go\r\n\r\n foo := \u0026pb.Foo{...}\r\n any, err := ptypes.MarshalAny(foo)\r\n ...\r\n foo := \u0026pb.Foo{}\r\n if err := ptypes.UnmarshalAny(any, foo); err != nil {\r\n ...\r\n }\r\n\r\nThe pack methods provided by protobuf library will by default use\r\n'type.googleapis.com/full.type.name' as the type URL and the unpack\r\nmethods only use the fully qualified type name after the last '/'\r\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\r\nname \"y.z\".\r\n\r\n\r\nJSON\r\n====\r\nThe JSON representation of an `Any` value uses the regular\r\nrepresentation of the deserialized, embedded message, with an\r\nadditional field `@type` which contains the type URL. Example:\r\n\r\n package google.profile;\r\n message Person {\r\n string first_name = 1;\r\n string last_name = 2;\r\n }\r\n\r\n {\r\n \"@type\": \"type.googleapis.com/google.profile.Person\",\r\n \"firstName\": \u003cstring\u003e,\r\n \"lastName\": \u003cstring\u003e\r\n }\r\n\r\nIf the embedded message type is well-known and has a custom JSON\r\nrepresentation, that representation will be embedded adding a field\r\n`value` which holds the custom JSON in addition to the `@type`\r\nfield. Example (for message [google.protobuf.Duration][]):\r\n\r\n {\r\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\r\n \"value\": \"1.212s\"\r\n }" }, "protobufNullValue": { "type": "string", @@ -16766,7 +16771,7 @@ "NULL_VALUE" ], "default": "NULL_VALUE", - "description": "`NullValue` is a singleton enumeration to represent the null value for the\n`Value` type union.\n\n The JSON representation for `NullValue` is JSON `null`.\n\n - NULL_VALUE: Null value." + "description": "`NullValue` is a singleton enumeration to represent the null value for the\r\n`Value` type union.\r\n\r\n The JSON representation for `NullValue` is JSON `null`.\n\n - NULL_VALUE: Null value." }, "runtimeError": { "type": "object", diff --git a/bcs-services/bcs-cluster-manager/internal/actions/autoscalingoption/status.go b/bcs-services/bcs-cluster-manager/internal/actions/autoscalingoption/status.go index b5f42b88e7..493680418c 100644 --- a/bcs-services/bcs-cluster-manager/internal/actions/autoscalingoption/status.go +++ b/bcs-services/bcs-cluster-manager/internal/actions/autoscalingoption/status.go @@ -147,6 +147,7 @@ func (ua *UpdateAutoScalingStatusAction) updateAutoScalingStatus() error { err = ua.model.CreateOperationLog(ua.ctx, &cmproto.OperationLog{ ResourceType: common.AutoScalingOption.String(), ResourceID: ua.req.ClusterID, + ResourceName: ua.cluster.ClusterName, TaskID: taskID, Message: fmt.Sprintf("修改集群[%s]扩缩容开启状态为 %v", ua.req.ClusterID, ua.req.Enable), OpUser: ua.req.Updater, diff --git a/bcs-services/bcs-cluster-manager/internal/actions/autoscalingoption/update.go b/bcs-services/bcs-cluster-manager/internal/actions/autoscalingoption/update.go index e84fe4c55b..71c4e9b77d 100644 --- a/bcs-services/bcs-cluster-manager/internal/actions/autoscalingoption/update.go +++ b/bcs-services/bcs-cluster-manager/internal/actions/autoscalingoption/update.go @@ -138,6 +138,7 @@ func (ua *UpdateAction) updateAutoScaling() error { err = ua.model.CreateOperationLog(ua.ctx, &cmproto.OperationLog{ ResourceType: common.AutoScalingOption.String(), ResourceID: ua.req.ClusterID, + ResourceName: ua.cluster.ClusterName, TaskID: taskID, Message: fmt.Sprintf("编辑集群[%s]扩缩容配置", ua.req.ClusterID), OpUser: ua.req.Updater, diff --git a/bcs-services/bcs-cluster-manager/internal/actions/cloud/create.go b/bcs-services/bcs-cluster-manager/internal/actions/cloud/create.go index 1740e6aab1..8d73fb501c 100644 --- a/bcs-services/bcs-cluster-manager/internal/actions/cloud/create.go +++ b/bcs-services/bcs-cluster-manager/internal/actions/cloud/create.go @@ -113,6 +113,7 @@ func (ca *CreateAction) Handle(ctx context.Context, err := ca.model.CreateOperationLog(ca.ctx, &cmproto.OperationLog{ ResourceType: common.Cloud.String(), ResourceID: req.CloudID, + ResourceName: req.Name, TaskID: "", Message: fmt.Sprintf("创建云[%s]模板", req.CloudID), OpUser: req.Creator, diff --git a/bcs-services/bcs-cluster-manager/internal/actions/cloud/delete.go b/bcs-services/bcs-cluster-manager/internal/actions/cloud/delete.go index 05395bfcb2..90fdae6cf3 100644 --- a/bcs-services/bcs-cluster-manager/internal/actions/cloud/delete.go +++ b/bcs-services/bcs-cluster-manager/internal/actions/cloud/delete.go @@ -76,6 +76,7 @@ func (da *DeleteAction) Handle( err = da.model.CreateOperationLog(da.ctx, &cmproto.OperationLog{ ResourceType: common.Cloud.String(), ResourceID: req.CloudID, + ResourceName: deletedCloud.Name, TaskID: "", Message: fmt.Sprintf("删除云[%s]模板", req.CloudID), OpUser: deletedCloud.Creator, diff --git a/bcs-services/bcs-cluster-manager/internal/actions/cloud/update.go b/bcs-services/bcs-cluster-manager/internal/actions/cloud/update.go index 87b5db6a45..f414651ae7 100644 --- a/bcs-services/bcs-cluster-manager/internal/actions/cloud/update.go +++ b/bcs-services/bcs-cluster-manager/internal/actions/cloud/update.go @@ -143,6 +143,7 @@ func (ua *UpdateAction) Handle( err = ua.model.CreateOperationLog(ua.ctx, &cmproto.OperationLog{ ResourceType: common.Cloud.String(), ResourceID: req.CloudID, + ResourceName: destCloud.Name, TaskID: "", Message: fmt.Sprintf("更新云[%s]模板信息", req.CloudID), OpUser: req.Updater, diff --git a/bcs-services/bcs-cluster-manager/internal/actions/cloudvpc/create.go b/bcs-services/bcs-cluster-manager/internal/actions/cloudvpc/create.go index d3afcab63d..af52a6cfe8 100644 --- a/bcs-services/bcs-cluster-manager/internal/actions/cloudvpc/create.go +++ b/bcs-services/bcs-cluster-manager/internal/actions/cloudvpc/create.go @@ -95,6 +95,7 @@ func (ca *CreateAction) Handle(ctx context.Context, err := ca.model.CreateOperationLog(ca.ctx, &cmproto.OperationLog{ ResourceType: common.CloudVPC.String(), ResourceID: req.VpcID, + ResourceName: req.VpcName, TaskID: "", Message: fmt.Sprintf("创建云[%s]vpc网络[%s]", req.CloudID, req.VpcID), OpUser: req.Creator, diff --git a/bcs-services/bcs-cluster-manager/internal/actions/cloudvpc/delete.go b/bcs-services/bcs-cluster-manager/internal/actions/cloudvpc/delete.go index e046b007a0..884ea4445d 100644 --- a/bcs-services/bcs-cluster-manager/internal/actions/cloudvpc/delete.go +++ b/bcs-services/bcs-cluster-manager/internal/actions/cloudvpc/delete.go @@ -77,6 +77,7 @@ func (da *DeleteAction) Handle( err = da.model.CreateOperationLog(da.ctx, &cmproto.OperationLog{ ResourceType: common.CloudVPC.String(), ResourceID: req.VpcID, + ResourceName: deletedCloudVPC.VpcName, TaskID: "", Message: fmt.Sprintf("删除云[%s]vpc网络[%s]", req.CloudID, req.VpcID), OpUser: deletedCloudVPC.Creator, diff --git a/bcs-services/bcs-cluster-manager/internal/actions/cloudvpc/update.go b/bcs-services/bcs-cluster-manager/internal/actions/cloudvpc/update.go index 8aa05b82f6..05aabe21b0 100644 --- a/bcs-services/bcs-cluster-manager/internal/actions/cloudvpc/update.go +++ b/bcs-services/bcs-cluster-manager/internal/actions/cloudvpc/update.go @@ -117,6 +117,7 @@ func (ua *UpdateAction) Handle( err = ua.model.CreateOperationLog(ua.ctx, &cmproto.OperationLog{ ResourceType: common.CloudVPC.String(), ResourceID: req.VpcID, + ResourceName: destCloudVPC.VpcName, TaskID: "", Message: fmt.Sprintf("更新云[%s]vpc网络[%s]信息", req.CloudID, req.VpcID), OpUser: req.Updater, diff --git a/bcs-services/bcs-cluster-manager/internal/actions/cluster/create.go b/bcs-services/bcs-cluster-manager/internal/actions/cluster/create.go index 1ecf6e34a0..b5f569c76e 100644 --- a/bcs-services/bcs-cluster-manager/internal/actions/cluster/create.go +++ b/bcs-services/bcs-cluster-manager/internal/actions/cluster/create.go @@ -454,6 +454,7 @@ func (ca *CreateAction) Handle(ctx context.Context, req *cmproto.CreateClusterRe err = ca.model.CreateOperationLog(ca.ctx, &cmproto.OperationLog{ ResourceType: common.Cluster.String(), ResourceID: cls.ClusterID, + ResourceName: cls.ClusterName, TaskID: ca.task.TaskID, Message: fmt.Sprintf("创建%s集群%s", cls.Provider, cls.ClusterID), OpUser: cls.Creator, diff --git a/bcs-services/bcs-cluster-manager/internal/actions/cluster/create_vcluster.go b/bcs-services/bcs-cluster-manager/internal/actions/cluster/create_vcluster.go index da51b88a3e..f35d1ed477 100644 --- a/bcs-services/bcs-cluster-manager/internal/actions/cluster/create_vcluster.go +++ b/bcs-services/bcs-cluster-manager/internal/actions/cluster/create_vcluster.go @@ -18,9 +18,10 @@ import ( "encoding/json" "errors" "fmt" - "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/options" "time" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/options" + "github.com/Tencent/bk-bcs/bcs-common/common/blog" "github.com/Tencent/bk-bcs/bcs-common/pkg/odm/drivers" cmproto "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/api/clustermanager" @@ -297,6 +298,7 @@ func (ca *CreateVirtualClusterAction) Handle(ctx context.Context, req *cmproto.C err = ca.model.CreateOperationLog(ca.ctx, &cmproto.OperationLog{ ResourceType: common.Cluster.String(), ResourceID: cls.ClusterID, + ResourceName: cls.ClusterName, TaskID: ca.task.TaskID, Message: fmt.Sprintf("创建%s虚拟集群%s", cls.Provider, cls.ClusterID), OpUser: cls.Creator, diff --git a/bcs-services/bcs-cluster-manager/internal/actions/cluster/delete.go b/bcs-services/bcs-cluster-manager/internal/actions/cluster/delete.go index f789ed0f1e..368ff66ee1 100644 --- a/bcs-services/bcs-cluster-manager/internal/actions/cluster/delete.go +++ b/bcs-services/bcs-cluster-manager/internal/actions/cluster/delete.go @@ -450,6 +450,7 @@ func (da *DeleteAction) Handle(ctx context.Context, req *cmproto.DeleteClusterRe err = da.model.CreateOperationLog(da.ctx, &cmproto.OperationLog{ ResourceType: common.Cluster.String(), ResourceID: da.cluster.ClusterID, + ResourceName: da.cluster.ClusterName, TaskID: da.tasks.TaskID, Message: fmt.Sprintf("删除%s集群%s", da.cluster.Provider, da.cluster.ClusterID), OpUser: da.req.Operator, @@ -838,6 +839,7 @@ func (da *DeleteNodesAction) Handle(ctx context.Context, req *cmproto.DeleteNode err = da.model.CreateOperationLog(da.ctx, &cmproto.OperationLog{ ResourceType: common.Cluster.String(), ResourceID: da.cluster.ClusterID, + ResourceName: da.cluster.ClusterName, TaskID: da.task.TaskID, Message: fmt.Sprintf("集群%s下架节点", da.cluster.ClusterID), OpUser: da.req.Operator, diff --git a/bcs-services/bcs-cluster-manager/internal/actions/cluster/delete_vcluster.go b/bcs-services/bcs-cluster-manager/internal/actions/cluster/delete_vcluster.go index 57d1d66997..bf4585380b 100644 --- a/bcs-services/bcs-cluster-manager/internal/actions/cluster/delete_vcluster.go +++ b/bcs-services/bcs-cluster-manager/internal/actions/cluster/delete_vcluster.go @@ -190,6 +190,7 @@ func (da *DeleteVirtualAction) Handle(ctx context.Context, err = da.model.CreateOperationLog(da.ctx, &cmproto.OperationLog{ ResourceType: common.Cluster.String(), ResourceID: da.cluster.ClusterID, + ResourceName: da.cluster.ClusterName, TaskID: da.task.TaskID, Message: fmt.Sprintf("删除%s虚拟集群%s", da.cluster.Provider, da.cluster.ClusterID), OpUser: da.req.Operator, diff --git a/bcs-services/bcs-cluster-manager/internal/actions/cluster/federatecluster.go b/bcs-services/bcs-cluster-manager/internal/actions/cluster/federatecluster.go index 81dcab4bcb..0c80fa4054 100644 --- a/bcs-services/bcs-cluster-manager/internal/actions/cluster/federatecluster.go +++ b/bcs-services/bcs-cluster-manager/internal/actions/cluster/federatecluster.go @@ -133,6 +133,7 @@ func (fa *FederateAction) Handle(ctx context.Context, err := fa.model.CreateOperationLog(fa.ctx, &cmproto.OperationLog{ ResourceType: common.Cluster.String(), ResourceID: fa.cluster.ClusterID, + ResourceName: fa.cluster.ClusterName, TaskID: "", Message: fmt.Sprintf("添加集群%s为联邦集群%s", fa.req.ClusterID, fa.req.FederationClusterID), OpUser: fa.cluster.Creator, diff --git a/bcs-services/bcs-cluster-manager/internal/actions/cluster/import.go b/bcs-services/bcs-cluster-manager/internal/actions/cluster/import.go index fdc28fc62f..6ce7653972 100644 --- a/bcs-services/bcs-cluster-manager/internal/actions/cluster/import.go +++ b/bcs-services/bcs-cluster-manager/internal/actions/cluster/import.go @@ -18,10 +18,11 @@ import ( "encoding/base64" "errors" "fmt" - "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/actions" "strings" "time" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/actions" + "github.com/Tencent/bk-bcs/bcs-common/common/blog" "github.com/Tencent/bk-bcs/bcs-common/pkg/odm/drivers" cmproto "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/api/clustermanager" @@ -250,6 +251,7 @@ func (ia *ImportAction) Handle(ctx context.Context, req *cmproto.ImportClusterRe err = ia.model.CreateOperationLog(ctx, &cmproto.OperationLog{ ResourceType: common.Cluster.String(), ResourceID: cls.ClusterID, + ResourceName: cls.ClusterName, TaskID: ia.task.TaskID, Message: fmt.Sprintf("导入%s集群%s", cls.Provider, cls.ClusterID), OpUser: cls.Creator, diff --git a/bcs-services/bcs-cluster-manager/internal/actions/cluster/retry.go b/bcs-services/bcs-cluster-manager/internal/actions/cluster/retry.go index 2bae8726f3..cb7b05ac9f 100644 --- a/bcs-services/bcs-cluster-manager/internal/actions/cluster/retry.go +++ b/bcs-services/bcs-cluster-manager/internal/actions/cluster/retry.go @@ -151,6 +151,7 @@ func (ra *RetryCreateAction) Handle(ctx context.Context, req *cmproto.RetryCreat err = ra.model.CreateOperationLog(ra.ctx, &cmproto.OperationLog{ ResourceType: common.Cluster.String(), ResourceID: cls.ClusterID, + ResourceName: cls.ClusterName, TaskID: task.TaskID, Message: fmt.Sprintf("重试创建%s集群%s", cls.Provider, cls.ClusterID), OpUser: req.Operator, diff --git a/bcs-services/bcs-cluster-manager/internal/actions/cluster/update.go b/bcs-services/bcs-cluster-manager/internal/actions/cluster/update.go index 42f095925b..0f48a37385 100644 --- a/bcs-services/bcs-cluster-manager/internal/actions/cluster/update.go +++ b/bcs-services/bcs-cluster-manager/internal/actions/cluster/update.go @@ -915,6 +915,7 @@ func (ua *AddNodesAction) Handle(ctx context.Context, req *cmproto.AddNodesReque err := ua.model.CreateOperationLog(ua.ctx, &cmproto.OperationLog{ ResourceType: common.Cluster.String(), ResourceID: ua.cluster.ClusterID, + ResourceName: ua.cluster.ClusterName, TaskID: ua.task.TaskID, Message: fmt.Sprintf("集群%s添加节点", ua.cluster.ClusterID), OpUser: req.Operator, diff --git a/bcs-services/bcs-cluster-manager/internal/actions/nodegroup/autoscale.go b/bcs-services/bcs-cluster-manager/internal/actions/nodegroup/autoscale.go index b251715956..bb56206bf6 100644 --- a/bcs-services/bcs-cluster-manager/internal/actions/nodegroup/autoscale.go +++ b/bcs-services/bcs-cluster-manager/internal/actions/nodegroup/autoscale.go @@ -207,6 +207,7 @@ func (ua *EnableNodeGroupAutoScaleAction) enableNodeGroupAutoScale() error { err = ua.model.CreateOperationLog(ua.ctx, &cmproto.OperationLog{ ResourceType: common.NodeGroup.String(), ResourceID: ua.group.NodeGroupID, + ResourceName: ua.group.Name, TaskID: taskID, Message: fmt.Sprintf("%s 开启节点规格 ", ua.group.NodeGroupID), OpUser: ua.group.Updater, @@ -383,6 +384,7 @@ func (ua *DisableNodeGroupAutoScaleAction) disableNodeGroupAutoScale() error { err = ua.model.CreateOperationLog(ua.ctx, &cmproto.OperationLog{ ResourceType: common.NodeGroup.String(), ResourceID: ua.group.NodeGroupID, + ResourceName: ua.group.Name, TaskID: taskID, Message: fmt.Sprintf("%s 关闭节点规格", ua.group.NodeGroupID), OpUser: ua.group.Updater, diff --git a/bcs-services/bcs-cluster-manager/internal/actions/nodegroup/create.go b/bcs-services/bcs-cluster-manager/internal/actions/nodegroup/create.go index c48a690124..d50d2563d0 100644 --- a/bcs-services/bcs-cluster-manager/internal/actions/nodegroup/create.go +++ b/bcs-services/bcs-cluster-manager/internal/actions/nodegroup/create.go @@ -290,6 +290,7 @@ func (ca *CreateAction) createNodeGroup() error { err = ca.model.CreateOperationLog(ca.ctx, &cmproto.OperationLog{ ResourceType: common.NodeGroup.String(), ResourceID: ca.group.NodeGroupID, + ResourceName: ca.group.Name, TaskID: taskID, Message: fmt.Sprintf("集群%s创建节点规格%s", ca.cluster.ClusterID, ca.group.NodeGroupID), OpUser: ca.req.Creator, diff --git a/bcs-services/bcs-cluster-manager/internal/actions/nodegroup/delete.go b/bcs-services/bcs-cluster-manager/internal/actions/nodegroup/delete.go index ce7065d2d7..4b97526f20 100644 --- a/bcs-services/bcs-cluster-manager/internal/actions/nodegroup/delete.go +++ b/bcs-services/bcs-cluster-manager/internal/actions/nodegroup/delete.go @@ -215,6 +215,7 @@ func (da *DeleteAction) Handle( err = da.model.CreateOperationLog(da.ctx, &cmproto.OperationLog{ ResourceType: common.NodeGroup.String(), ResourceID: da.group.NodeGroupID, + ResourceName: da.group.Name, TaskID: func() string { if task == nil { return "" @@ -405,6 +406,7 @@ func (da *RemoveNodeAction) Handle( err = da.model.CreateOperationLog(da.ctx, &cmproto.OperationLog{ ResourceType: common.NodeGroup.String(), ResourceID: da.group.NodeGroupID, + ResourceName: da.group.Name, TaskID: "", Message: fmt.Sprintf("集群%s节点规格%s移除节点", da.group.ClusterID, da.group.NodeGroupID), OpUser: da.group.Creator, @@ -675,6 +677,7 @@ func (da *CleanNodesAction) Handle( err := da.model.CreateOperationLog(da.ctx, &cmproto.OperationLog{ ResourceType: common.NodeGroup.String(), ResourceID: da.group.NodeGroupID, + ResourceName: da.group.Name, TaskID: da.task.TaskID, Message: fmt.Sprintf("集群%s节点规格%s删除节点", da.group.ClusterID, da.group.NodeGroupID), OpUser: req.Operator, diff --git a/bcs-services/bcs-cluster-manager/internal/actions/nodegroup/update.go b/bcs-services/bcs-cluster-manager/internal/actions/nodegroup/update.go index 2ea34ff513..7b04629ca4 100644 --- a/bcs-services/bcs-cluster-manager/internal/actions/nodegroup/update.go +++ b/bcs-services/bcs-cluster-manager/internal/actions/nodegroup/update.go @@ -483,6 +483,7 @@ func (ua *UpdateAction) Handle( if err := ua.model.CreateOperationLog(ua.ctx, &cmproto.OperationLog{ ResourceType: common.NodeGroup.String(), ResourceID: ua.req.NodeGroupID, + ResourceName: ua.group.Name, TaskID: func() string { if ua.task == nil { return "" @@ -632,6 +633,7 @@ func (ua *MoveNodeAction) Handle( err := ua.model.CreateOperationLog(ua.ctx, &cmproto.OperationLog{ ResourceType: common.NodeGroup.String(), ResourceID: req.NodeGroupID, + ResourceName: ua.group.Name, TaskID: "", Message: fmt.Sprintf("集群%s移入节点至节点规格%s", ua.cluster.ClusterID, req.NodeGroupID), OpUser: ua.group.Updater, @@ -1011,6 +1013,7 @@ func (ua *UpdateDesiredNodeAction) Handle( err = ua.model.CreateOperationLog(ua.ctx, &cmproto.OperationLog{ ResourceType: common.NodeGroup.String(), ResourceID: req.NodeGroupID, + ResourceName: ua.group.Name, TaskID: ua.task.TaskID, Message: fmt.Sprintf("集群%s扩容节点规格%s节点数至%v", ua.cluster.ClusterID, req.NodeGroupID, req.DesiredNode), OpUser: ua.group.Updater, @@ -1105,6 +1108,7 @@ func (ua *UpdateDesiredSizeAction) Handle( err = ua.model.CreateOperationLog(ua.ctx, &cmproto.OperationLog{ ResourceType: common.NodeGroup.String(), ResourceID: req.NodeGroupID, + ResourceName: destGroup.Name, TaskID: "", Message: fmt.Sprintf("更新集群%s节点规格%s期望扩容节点数至%d", destGroup.ClusterID, req.NodeGroupID, req.DesiredSize), OpUser: req.Operator, diff --git a/bcs-services/bcs-cluster-manager/internal/actions/operationlog/operationlog.go b/bcs-services/bcs-cluster-manager/internal/actions/operationlog/operationlog.go index 590d34723c..fb20ebc86c 100644 --- a/bcs-services/bcs-cluster-manager/internal/actions/operationlog/operationlog.go +++ b/bcs-services/bcs-cluster-manager/internal/actions/operationlog/operationlog.go @@ -134,6 +134,7 @@ func (ua *ListOperationLogsAction) fetchV2OperationLogs() error { ua.resp.Data.Results = append(ua.resp.Data.Results, &cmproto.OperationLogDetail{ ResourceType: v.ResourceType, ResourceID: v.ResourceID, + ResourceName: v.ResourceName, TaskID: v.TaskID, Message: v.Message, OpUser: v.OpUser, @@ -206,6 +207,7 @@ func (ua *ListOperationLogsAction) fetchV1OperationLogs() error { ua.resp.Data.Results = append(ua.resp.Data.Results, &cmproto.OperationLogDetail{ ResourceType: v.ResourceType, ResourceID: v.ResourceID, + ResourceName: v.ResourceName, TaskID: v.TaskID, Message: v.Message, OpUser: v.OpUser, diff --git a/bcs-services/bcs-cluster-manager/internal/store/operationlog/operationlog.go b/bcs-services/bcs-cluster-manager/internal/store/operationlog/operationlog.go index bd7f66c784..52765f5eb9 100644 --- a/bcs-services/bcs-cluster-manager/internal/store/operationlog/operationlog.go +++ b/bcs-services/bcs-cluster-manager/internal/store/operationlog/operationlog.go @@ -236,6 +236,7 @@ func (m *ModelOperationLog) ListAggreOperationLog(ctx context.Context, condSrc, "$limit": opt.Limit, }) } + if err := m.db.Table(m.tableName).Aggregation(ctx, pipeline, &retTaskOpLogs); err != nil { return nil, err } diff --git a/bcs-services/bcs-cluster-manager/internal/store/util/util.go b/bcs-services/bcs-cluster-manager/internal/store/util/util.go index 5d4c0140e5..f3165a9c99 100644 --- a/bcs-services/bcs-cluster-manager/internal/store/util/util.go +++ b/bcs-services/bcs-cluster-manager/internal/store/util/util.go @@ -14,6 +14,7 @@ package util import ( "context" + "github.com/Tencent/bk-bcs/bcs-common/pkg/odm/operator" "go.mongodb.org/mongo-driver/bson" @@ -214,6 +215,7 @@ func BuildTaskOperationLogProject() map[string]interface{} { return map[string]interface{}{ "resourcetype": "$resourcetype", "resourceid": "$resourceid", + "resourcename": "$resourcename", "taskid": "$taskid", "message": "$message", "opuser": "$opuser",